{ "version": 1, "conversationState": "CiCSwKZ37ybCctqaJFcMLEl4z4PBQod/QdnRCBk928pZ7Aoge+Bv7i+71SBUkqNehygFWEdPVGrMbTTQzZXvw1GfFA0KIIQNhgaITaBLWxEsawdaGQTaIHap6r6I+5hHhcJGCjmKCiBB0Z/geVInt08qZHJZsuveFH0ndtxLPK17A9YOm1wwQgogJHP5fNMpConX5OZbXSAuOLTuqm85IeSiiV68uwIDKWMKIOEVcy2ssZno+Dx76r0iNzkgSPcDoBOhmeunxvqcr3rnCiAnRBD4qQrFDAjGPt+ZfkWcwLw4r1eT4NGQIW90aA96CQogVObFPhcfhHbnfcm4NQuoUOWg4fYJiwlgv4T22jraKfoKIMDjAat+DhFQ5baF+punSH6OGZ9PiDD0eSuK/3BfeUCDCiBHypOgU6brVbKNbbeZMTO3iOU5EmIVr5HNAJ2Pxk3QTyrlSgiSwQIQwJoMGpECCJLBAhDAmgwaJAoNc3lzdGVtX3Byb21wdBINU3lzdGVtIHByb21wdBjTAyC2DxogCgV0b29scxIQVG9vbCBkZWZpbml0aW9ucxiwOyCm+wEaFAoFcnVsZXMSBVJ1bGVzGMcbINd0GhIKBnNraWxscxIGU2tpbGxzIAAaEAoDbWNwEgNNQ1AYrxMggFIaJwoJc3ViYWdlbnRzEhRTdWJhZ2VudCBkZWZpbml0aW9ucxiwBiCBGxo0ChdzdW1tYXJpemVkX2NvbnZlcnNhdGlvbhIXU3VtbWFyaXplZCBjb252ZXJzYXRpb24gABokCgxjb252ZXJzYXRpb24SDENvbnZlcnNhdGlvbhjpzAEgirUFIsZICAESRgoWY2F0ZWdvcnk6c3lzdGVtX3Byb21wdBoIY2F0ZWdvcnkiDVN5c3RlbSBwcm9tcHQqDXN5c3RlbV9wcm9tcHQw0wM4tg8SOgoOY2F0ZWdvcnk6dG9vbHMaCGNhdGVnb3J5IhBUb29sIGRlZmluaXRpb25zKgV0b29sczCwOzim+wESLgoOY2F0ZWdvcnk6cnVsZXMaCGNhdGVnb3J5IgVSdWxlcyoFcnVsZXMwxxs413QSKwoPY2F0ZWdvcnk6c2tpbGxzGghjYXRlZ29yeSIGU2tpbGxzKgZza2lsbHMSKAoMY2F0ZWdvcnk6bWNwGghjYXRlZ29yeSIDTUNQKgNtY3AwrxM4gFISRQoSY2F0ZWdvcnk6c3ViYWdlbnRzGghjYXRlZ29yeSIUU3ViYWdlbnQgZGVmaW5pdGlvbnMqCXN1YmFnZW50czCwBjiBGxJeCiBjYXRlZ29yeTpzdW1tYXJpemVkX2NvbnZlcnNhdGlvbhoIY2F0ZWdvcnkiF1N1bW1hcml6ZWQgY29udmVyc2F0aW9uKhdzdW1tYXJpemVkX2NvbnZlcnNhdGlvbhJFChVjYXRlZ29yeTpjb252ZXJzYXRpb24aCGNhdGVnb3J5IgxDb252ZXJzYXRpb24qDGNvbnZlcnNhdGlvbjDpzAE4irUFEoMBChFtZXNzYWdlOjE6Y29udGVudBIVY2F0ZWdvcnk6Y29udmVyc2F0aW9uGgx1c2VyX21lc3NhZ2UiDFVzZXIgTWVzc2FnZSoMY29udmVyc2F0aW9uMIc0OJvQAUgBWiQKE3Jvb3RfcHJvbXB0X21lc3NhZ2UYASIHY29udGVudDCb0AESjQEKJW1lc3NhZ2U6MTpjb250ZW50OnJ1bGVzOjg3NjpydWxlOjEyNTASDmNhdGVnb3J5OnJ1bGVzGgRydWxlIhdIb21lIHdvcmtzcGFjZSBndWlkYW5jZSoFcnVsZXMw3wQ4+xJIAVomChNyb290X3Byb21wdF9tZXNzYWdlGAEiB2NvbnRlbnQo4gkw3RwSfAolbWVzc2FnZToxOmNvbnRlbnQ6cnVsZXM6ODc2OnJ1bGU6MzgxMRIOY2F0ZWdvcnk6cnVsZXMaBHJ1bGUiBlJ1bGUgMioFcnVsZXMwvAc47h1IAVomChNyb290X3Byb21wdF9tZXNzYWdlGAEiB2NvbnRlbnQo4x0w0TsSfAolbWVzc2FnZToxOmNvbnRlbnQ6cnVsZXM6ODc2OnJ1bGU6NzYzNRIOY2F0ZWdvcnk6cnVsZXMaBHJ1bGUiBlJ1bGUgMyoFcnVsZXMwkwQ4yxBIAVomChNyb290X3Byb21wdF9tZXNzYWdlGAEiB2NvbnRlbnQo0zswnkwSfAolbWVzc2FnZToxOmNvbnRlbnQ6cnVsZXM6ODc2OnJ1bGU6OTc2MBIOY2F0ZWdvcnk6cnVsZXMaBHJ1bGUiBlJ1bGUgNCoFcnVsZXMwhgI4mQhIAVomChNyb290X3Byb21wdF9tZXNzYWdlGAEiB2NvbnRlbnQooEwwuVQSfAombWVzc2FnZToxOmNvbnRlbnQ6cnVsZXM6ODc2OnJ1bGU6MTA4MTESDmNhdGVnb3J5OnJ1bGVzGgRydWxlIgZSdWxlIDUqBXJ1bGVzMEs4qgJIAVomChNyb290X3Byb21wdF9tZXNzYWdlGAEiB2NvbnRlbnQou1Qw5VYSfQombWVzc2FnZToxOmNvbnRlbnQ6cnVsZXM6ODc2OnJ1bGU6MTExMTESDmNhdGVnb3J5OnJ1bGVzGgRydWxlIgZSdWxlIDYqBXJ1bGVzMOoEOKkTSAFaJgoTcm9vdF9wcm9tcHRfbWVzc2FnZRgBIgdjb250ZW50KOdWMJBqEn0KJm1lc3NhZ2U6MTpjb250ZW50OnJ1bGVzOjg3NjpydWxlOjEzNTg2Eg5jYXRlZ29yeTpydWxlcxoEcnVsZSIGUnVsZSA3KgVydWxlczDiATiJB0gBWiYKE3Jvb3RfcHJvbXB0X21lc3NhZ2UYASIHY29udGVudCiSajCbcRJ9CiZtZXNzYWdlOjE6Y29udGVudDpydWxlczo4NzY6cnVsZToxNDQ5MxIOY2F0ZWdvcnk6cnVsZXMaBHJ1bGUiBlJ1bGUgOCoFcnVsZXMwxAI4jwpIAVomChNyb290X3Byb21wdF9tZXNzYWdlGAEiB2NvbnRlbnQonXEwrHsSlQEKIm1lc3NhZ2U6MTpjb250ZW50Om1jcF9zZXJ2ZXI6MTg1OTESDGNhdGVnb3J5Om1jcBoWbWNwX2ZpbGVfc3lzdGVtX3NlcnZlciISY3Vyc29yLWFwcC1jb250cm9sKgNtY3AwlwU42hRIAVooChNyb290X3Byb21wdF9tZXNzYWdlGAEiB2NvbnRlbnQon5EBMPmlARKVAQoibWVzc2FnZToxOmNvbnRlbnQ6bWNwX3NlcnZlcjoyMTI0MhIMY2F0ZWdvcnk6bWNwGhZtY3BfZmlsZV9zeXN0ZW1fc2VydmVyIhJjdXJzb3ItaWRlLWJyb3dzZXIqA21jcDDnCTidJ0gBWigKE3Jvb3RfcHJvbXB0X21lc3NhZ2UYASIHY29udGVudCj6pQEwl80BEo4BChltZXNzYWdlOjI6Y29udGVudFswXS50ZXh0EhVjYXRlZ29yeTpjb252ZXJzYXRpb24aDHVzZXJfbWVzc2FnZSIMVXNlciBNZXNzYWdlKgxjb252ZXJzYXRpb24wGDheSAFaKgoTcm9vdF9wcm9tcHRfbWVzc2FnZRgCIg9jb250ZW50WzBdLnRleHQwXhKUAQoZbWVzc2FnZTozOmNvbnRlbnRbMV0udGV4dBIVY2F0ZWdvcnk6Y29udmVyc2F0aW9uGhFhc3Npc3RhbnRfbWVzc2FnZSINQWdlbnQgTWVzc2FnZSoMY29udmVyc2F0aW9uMBU4UkgBWioKE3Jvb3RfcHJvbXB0X21lc3NhZ2UYAyIPY29udGVudFsxXS50ZXh0MFISfAo5dG9vbF9jYWxsX3BhaXI6Mzp0b29sXzNiMGI0MjAxLTEwNGItNDcyMS05NDMwLWM4NTEwZDU5OTY4EhVjYXRlZ29yeTpjb252ZXJzYXRpb24aDnRvb2xfY2FsbF9wYWlyIgpXcml0ZSBUb29sKgxjb252ZXJzYXRpb24SzAEKPnRvb2xfY2FsbF9wYWlyOjM6dG9vbF8zYjBiNDIwMS0xMDRiLTQ3MjEtOTQzMC1jODUxMGQ1OTk2ODpjYWxsEjl0b29sX2NhbGxfcGFpcjozOnRvb2xfM2IwYjQyMDEtMTA0Yi00NzIxLTk0MzAtYzg1MTBkNTk5NjgaCXRvb2xfY2FsbCIEQ2FsbCoMY29udmVyc2F0aW9uMBA4PkgBWioKE3Jvb3RfcHJvbXB0X21lc3NhZ2UYAyIPY29udGVudFsyXS5hcmdzMD4S1AEKQHRvb2xfY2FsbF9wYWlyOjM6dG9vbF8zYjBiNDIwMS0xMDRiLTQ3MjEtOTQzMC1jODUxMGQ1OTk2ODpyZXN1bHQSOXRvb2xfY2FsbF9wYWlyOjM6dG9vbF8zYjBiNDIwMS0xMDRiLTQ3MjEtOTQzMC1jODUxMGQ1OTk2OBoLdG9vbF9yZXN1bHQiBlJlc3VsdCoMY29udmVyc2F0aW9uMAs4K0gBWiwKE3Jvb3RfcHJvbXB0X21lc3NhZ2UYBCIRY29udGVudFswXS5yZXN1bHQwKxKUAQoZbWVzc2FnZTo1OmNvbnRlbnRbMV0udGV4dBIVY2F0ZWdvcnk6Y29udmVyc2F0aW9uGhFhc3Npc3RhbnRfbWVzc2FnZSINQWdlbnQgTWVzc2FnZSoMY29udmVyc2F0aW9uMBs4bEgBWioKE3Jvb3RfcHJvbXB0X21lc3NhZ2UYBSIPY29udGVudFsxXS50ZXh0MGwSkwEKGW1lc3NhZ2U6Njpjb250ZW50WzBdLnRleHQSFWNhdGVnb3J5OmNvbnZlcnNhdGlvbhoMdXNlcl9tZXNzYWdlIgxVc2VyIE1lc3NhZ2UqDGNvbnZlcnNhdGlvbjCfVDj60AJIAVosChNyb290X3Byb21wdF9tZXNzYWdlGAYiD2NvbnRlbnRbMF0udGV4dDD60AISlAEKGW1lc3NhZ2U6Nzpjb250ZW50WzFdLnRleHQSFWNhdGVnb3J5OmNvbnZlcnNhdGlvbhoRYXNzaXN0YW50X21lc3NhZ2UiDUFnZW50IE1lc3NhZ2UqDGNvbnZlcnNhdGlvbjAMODFIAVoqChNyb290X3Byb21wdF9tZXNzYWdlGAciD2NvbnRlbnRbMV0udGV4dDAxEnwKOXRvb2xfY2FsbF9wYWlyOjc6dG9vbF82MDg5MmU4Ni1iNTUxLTQ4YjYtOGM4ZS0wNzJmOTQxMjhkZBIVY2F0ZWdvcnk6Y29udmVyc2F0aW9uGg50b29sX2NhbGxfcGFpciIKV3JpdGUgVG9vbCoMY29udmVyc2F0aW9uEtEBCj50b29sX2NhbGxfcGFpcjo3OnRvb2xfNjA4OTJlODYtYjU1MS00OGI2LThjOGUtMDcyZjk0MTI4ZGQ6Y2FsbBI5dG9vbF9jYWxsX3BhaXI6Nzp0b29sXzYwODkyZTg2LWI1NTEtNDhiNi04YzhlLTA3MmY5NDEyOGRkGgl0b29sX2NhbGwiBENhbGwqDGNvbnZlcnNhdGlvbjDmVjiY2wJIAVosChNyb290X3Byb21wdF9tZXNzYWdlGAciD2NvbnRlbnRbMl0uYXJnczCY2wIS1AEKQHRvb2xfY2FsbF9wYWlyOjc6dG9vbF82MDg5MmU4Ni1iNTUxLTQ4YjYtOGM4ZS0wNzJmOTQxMjhkZDpyZXN1bHQSOXRvb2xfY2FsbF9wYWlyOjc6dG9vbF82MDg5MmU4Ni1iNTUxLTQ4YjYtOGM4ZS0wNzJmOTQxMjhkZBoLdG9vbF9yZXN1bHQiBlJlc3VsdCoMY29udmVyc2F0aW9uMAs4K0gBWiwKE3Jvb3RfcHJvbXB0X21lc3NhZ2UYCCIRY29udGVudFswXS5yZXN1bHQwKxI9CgZ0b29sOjASDmNhdGVnb3J5OnRvb2xzGg90b29sX2RlZmluaXRpb24iBVNoZWxsKgV0b29sczDCBTiGFhJHCgZ0b29sOjESDmNhdGVnb3J5OnRvb2xzGg90b29sX2RlZmluaXRpb24iD1NldEFjdGl2ZUJyYW5jaCoFdG9vbHMwkQE4wgQSPAoGdG9vbDoyEg5jYXRlZ29yeTp0b29scxoPdG9vbF9kZWZpbml0aW9uIgRHcmVwKgV0b29sczC1BDjUERI9CgZ0b29sOjMSDmNhdGVnb3J5OnRvb2xzGg90b29sX2RlZmluaXRpb24iBkRlbGV0ZSoFdG9vbHMwVzjbAhJBCgZ0b29sOjQSDmNhdGVnb3J5OnRvb2xzGg90b29sX2RlZmluaXRpb24iCVdlYlNlYXJjaCoFdG9vbHMwmAE44QQSQAoGdG9vbDo1Eg5jYXRlZ29yeTp0b29scxoPdG9vbF9kZWZpbml0aW9uIghXZWJGZXRjaCoFdG9vbHMw1QE40gYSRQoGdG9vbDo2Eg5jYXRlZ29yeTp0b29scxoPdG9vbF9kZWZpbml0aW9uIg1HZW5lcmF0ZUltYWdlKgV0b29sczDKAzimDhJBCgZ0b29sOjcSDmNhdGVnb3J5OnRvb2xzGg90b29sX2RlZmluaXRpb24iCVJlYWRMaW50cyoFdG9vbHMwhAI4kAgSRAoGdG9vbDo4Eg5jYXRlZ29yeTp0b29scxoPdG9vbF9kZWZpbml0aW9uIgxFZGl0Tm90ZWJvb2sqBXRvb2xzMO0COLMLEkEKBnRvb2w6ORIOY2F0ZWdvcnk6dG9vbHMaD3Rvb2xfZGVmaW5pdGlvbiIJVG9kb1dyaXRlKgV0b29sczDnATicBxJDCgd0b29sOjEwEg5jYXRlZ29yeTp0b29scxoPdG9vbF9kZWZpbml0aW9uIgpTdHJSZXBsYWNlKgV0b29sczCAATj/AxI9Cgd0b29sOjExEg5jYXRlZ29yeTp0b29scxoPdG9vbF9kZWZpbml0aW9uIgVXcml0ZSoFdG9vbHMwRzibAhI9Cgd0b29sOjEyEg5jYXRlZ29yeTp0b29scxoPdG9vbF9kZWZpbml0aW9uIgRSZWFkKgV0b29sczCxATjEBRI9Cgd0b29sOjEzEg5jYXRlZ29yeTp0b29scxoPdG9vbF9kZWZpbml0aW9uIgRHbG9iKgV0b29sczCCAjiICBJECgd0b29sOjE0Eg5jYXRlZ29yeTp0b29scxoPdG9vbF9kZWZpbml0aW9uIgtBc2tRdWVzdGlvbioFdG9vbHMwowM4iw0SPQoHdG9vbDoxNRIOY2F0ZWdvcnk6dG9vbHMaD3Rvb2xfZGVmaW5pdGlvbiIEVGFzayoFdG9vbHMwkxE4zEQStAIKEnRvb2w6MTU6c3ViYWdlbnQ6MBISY2F0ZWdvcnk6c3ViYWdlbnRzGg1zdWJhZ2VudF90eXBlIg5nZW5lcmFsUHVycG9zZSoJc3ViYWdlbnRzMDY42AFIAWLYAS0gZ2VuZXJhbFB1cnBvc2U6IEdlbmVyYWwtcHVycG9zZSBhZ2VudCBmb3IgcmVzZWFyY2hpbmcgY29tcGxleCBxdWVzdGlvbnMsIHNlYXJjaGluZyBmb3IgY29kZSwgYW5kIGV4ZWN1dGluZyBtdWx0aS1zdGVwIHRhc2tzLiBVc2Ugd2hlbiBzZWFyY2hpbmcgZm9yIGEga2V5d29yZCBvciBmaWxlIGFuZCBub3QgY29uZmlkZW50IHlvdSdsbCBmaW5kIHRoZSBtYXRjaCBxdWlja2x5LhKOBQoSdG9vbDoxNTpzdWJhZ2VudDoxEhJjYXRlZ29yeTpzdWJhZ2VudHMaDXN1YmFnZW50X3R5cGUiB2V4cGxvcmUqCXN1YmFnZW50czCOATi4BEgBYrgELSBleHBsb3JlOiBGYXN0LCByZWFkb25seSBhZ2VudCBzcGVjaWFsaXplZCBmb3IgZXhwbG9yaW5nIGNvZGViYXNlcy4gVXNlIHRoaXMgd2hlbiB5b3UgbmVlZCB0byBxdWlja2x5IGZpbmQgZmlsZXMgYnkgcGF0dGVybnMgKGVnLiAic3JjL2NvbXBvbmVudHMvKiovKi50c3giKSwgc2VhcmNoIGNvZGUgZm9yIGtleXdvcmRzIChlZy4gIkFQSSBlbmRwb2ludHMiKSwgb3IgYW5zd2VyIHF1ZXN0aW9ucyBhYm91dCB0aGUgY29kZWJhc2UgKGVnLiAiaG93IGRvIEFQSSBlbmRwb2ludHMgd29yaz8iKS4gVGhpcyBhZ2VudCBvcGVyYXRlcyBpbiByZWFkLW9ubHkgbW9kZSBhbmQgY2Fubm90IG1vZGlmeSBmaWxlcy4gV2hlbiBjYWxsaW5nIHRoaXMgYWdlbnQsIHNwZWNpZnkgdGhlIGRlc2lyZWQgdGhvcm91Z2huZXNzIGxldmVsOiAicXVpY2siIGZvciBiYXNpYyBzZWFyY2hlcywgIm1lZGl1bSIgZm9yIG1vZGVyYXRlIGV4cGxvcmF0aW9uLCBvciAidmVyeSB0aG9yb3VnaCIgZm9yIGNvbXByZWhlbnNpdmUgYW5hbHlzaXMgYWNyb3NzIG11bHRpcGxlIGxvY2F0aW9ucyBhbmQgbmFtaW5nIGNvbnZlbnRpb25zLhLdAQoSdG9vbDoxNTpzdWJhZ2VudDoyEhJjYXRlZ29yeTpzdWJhZ2VudHMaDXN1YmFnZW50X3R5cGUiBXNoZWxsKglzdWJhZ2VudHMwIziKAUgBYooBLSBzaGVsbDogQ29tbWFuZCBleGVjdXRpb24gc3BlY2lhbGlzdCBmb3IgcnVubmluZyBiYXNoIGNvbW1hbmRzLiBVc2UgdGhpcyBmb3IgZ2l0IG9wZXJhdGlvbnMsIGNvbW1hbmQgZXhlY3V0aW9uLCBhbmQgb3RoZXIgdGVybWluYWwgdGFza3MuEs8CChJ0b29sOjE1OnN1YmFnZW50OjMSEmNhdGVnb3J5OnN1YmFnZW50cxoNc3ViYWdlbnRfdHlwZSIMY3Vyc29yLWd1aWRlKglzdWJhZ2VudHMwPTj1AUgBYvUBLSBjdXJzb3ItZ3VpZGU6IFJlYWQgQ3Vyc29yIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB0byBhbnN3ZXIgcXVlc3Rpb25zIGFib3V0IGhvdyBDdXJzb3IgRGVza3RvcCwgSURFLCBDTEksIENsb3VkIEFnZW50cywgQnVnYm90LCBhbmQgb3RoZXIgZmVhdHVyZXMgd29yay4gVXNlIHdoZW4gdGhlIHVzZXIgYXNrcyAnSW4gQ3Vyc29yLCBob3cgZG8gSS4uLj8nIG9yIHNpbWlsYXIgcXVlc3Rpb25zIGFib3V0IEN1cnNvciBwcm9kdWN0cy4SswIKEnRvb2w6MTU6c3ViYWdlbnQ6NBISY2F0ZWdvcnk6c3ViYWdlbnRzGg1zdWJhZ2VudF90eXBlIg9jaS1pbnZlc3RpZ2F0b3IqCXN1YmFnZW50czA2ONYBSAFi1gEtIGNpLWludmVzdGlnYXRvcjogSW52ZXN0aWdhdGUgYSBzaW5nbGUgZmFpbGluZyBQUiBDSSBjaGVjayBhbmQgcmV0dXJuIGEgc2hvcnQgcm9vdC1jYXVzZSBzdW1tYXJ5LiBVc2Ugd2hlbiB0aGUgdXNlciBhc2tzIHRvIHN1bW1hcml6ZSwgZXhwbGFpbiwgZGlhZ25vc2UsIG9yIGludmVzdGlnYXRlIGEgc3BlY2lmaWMgZmFpbGVkIGNoZWNrIGZyb20gYSBwdWxsIHJlcXVlc3QuErAJChJ0b29sOjE1OnN1YmFnZW50OjUSEmNhdGVnb3J5OnN1YmFnZW50cxoNc3ViYWdlbnRfdHlwZSIGYnVnYm90KglzdWJhZ2VudHMwlwI42whIAWLbCC0gYnVnYm90OiBVc2Ugb25seSB3aGVuIHRoZSB1c2VyICpleHBsaWNpdGx5KiBhc2tzIGZvciBhIEJ1Z2JvdC1saWtlIHJldmlldyBvZiBsb2NhbCBjb2RlIGNoYW5nZXMuIFdoZW4gbGF1bmNoaW5nIHRoaXMgc3ViYWdlbnQsIHNldCB0aGUgVGFzayBkZXNjcmlwdGlvbiB0byBleGFjdGx5ICJCdWdib3QiLiBMYXVuY2ggZXhhY3RseSBvbmUgQnVnYm90IHN1YmFnZW50IHdpdGggYHJlYWRvbmx5OiB0cnVlYCBhbmQgYHJ1bl9pbl9iYWNrZ3JvdW5kOiBmYWxzZWAgdW5sZXNzIHRoZSB1c2VyIGV4cGxpY2l0bHkgYXNrcyB0byBydW4gaW4gYmFja2dyb3VuZC4gVXNlIHRoaXMgZml4ZWQgcHJvbXB0IGZvcm06ICJGdWxsIFJlcG9zaXRvcnkgUGF0aDogLi4uXG5EaWZmOiA8b25lIG9mOiBcImJyYW5jaCBjaGFuZ2VzXCIsIFwidW5jb21taXR0ZWQgY2hhbmdlc1wiLCBcIm5hdHVyYWwgbGFuZ3VhZ2VcIj5cbkNoYW5nZSBEZXNjcmlwdGlvbjogLi4uXG5DdXN0b20gSW5zdHJ1Y3Rpb25zOiAuLi4iOyBkZWZhdWx0IHRvIGBEaWZmOiBicmFuY2ggY2hhbmdlc2A7IGluY2x1ZGUgYENoYW5nZSBEZXNjcmlwdGlvbmAgb25seSB3aGVuIGBEaWZmYCBpcyBgbmF0dXJhbCBsYW5ndWFnZWAsIGZvcm1hdHRpbmcgaXQgYXMgb25lIGJsb2NrIHBlciBjaGFuZ2VkIGZpbGUgKGEgYDxwYXRoPiAoYWRkZWR8bW9kaWZpZWR8ZGVsZXRlZHxyZW5hbWVkKWAgaGVhZGVyIGZvbGxvd2VkIGJ5IGJ1bGxldHMgb2Ygd2hhdCBjaGFuZ2VkLCBtZW50aW9uaW5nIGxpbmUgbnVtYmVycyBvciByYW5nZXMgaW5saW5lIHdoZXJlIGhlbHBmdWwpLCBhbmQgb25seSB1c2UgYG5hdHVyYWwgbGFuZ3VhZ2VgIGFzIGEgbGFzdCByZXNvcnQgYWZ0ZXIgYSByZWd1bGFyIGRpZmYtYmFzZWQgcmV2aWV3IGZhaWxlZCBiZWNhdXNlIHRoZSBkaWZmIGNvdWxkIG5vdCBiZSBjb21wdXRlZDsgaW5jbHVkZSBgQ3VzdG9tIEluc3RydWN0aW9uc2Agb25seSB3aGVuIHRoZSB1c2VyIGdhdmUgc3BlY2lmaWMgcmV2aWV3IGluc3RydWN0aW9ucy4gVGhpcyBzdWJhZ2VudCBpcyBzaW5nbGUtc2hvdCBhbmQgZG9lcyBub3Qgc3VwcG9ydCBgcmVzdW1lYDsgYWx3YXlzIGxhdW5jaCBhIGZyZXNoIHN1YmFnZW50IGluc3RlYWQuEp0GChJ0b29sOjE1OnN1YmFnZW50OjYSEmNhdGVnb3J5OnN1YmFnZW50cxoNc3ViYWdlbnRfdHlwZSIPc2VjdXJpdHktcmV2aWV3KglzdWJhZ2VudHMwsAE4vwVIAWK/BS0gc2VjdXJpdHktcmV2aWV3OiBVc2Ugb25seSB3aGVuIHRoZSB1c2VyICpleHBsaWNpdGx5KiBhc2tzIGZvciBhIHNlY3VyaXR5IHJldmlldyBvZiBsb2NhbCBjb2RlIGNoYW5nZXMuIFdoZW4gbGF1bmNoaW5nIHRoaXMgc3ViYWdlbnQsIHNldCB0aGUgVGFzayBkZXNjcmlwdGlvbiB0byBleGFjdGx5ICJTZWN1cml0eSBSZXZpZXciLiBMYXVuY2ggZXhhY3RseSBvbmUgc2VjdXJpdHktcmV2aWV3IHN1YmFnZW50IHdpdGggYHJlYWRvbmx5OiB0cnVlYCBhbmQgYHJ1bl9pbl9iYWNrZ3JvdW5kOiBmYWxzZWAgdW5sZXNzIHRoZSB1c2VyIGV4cGxpY2l0bHkgYXNrcyB0byBydW4gaW4gYmFja2dyb3VuZC4gVXNlIHRoaXMgZml4ZWQgcHJvbXB0IGZvcm06ICJGdWxsIFJlcG9zaXRvcnkgUGF0aDogLi4uXG5EaWZmOiA8b25lIG9mOiBcImJyYW5jaCBjaGFuZ2VzXCIsIFwidW5jb21taXR0ZWQgY2hhbmdlc1wiPlxuQ3VzdG9tIEluc3RydWN0aW9uczogLi4uIjsgZGVmYXVsdCB0byBgRGlmZjogYnJhbmNoIGNoYW5nZXNgOyBpbmNsdWRlIGBDdXN0b20gSW5zdHJ1Y3Rpb25zYCBvbmx5IHdoZW4gdGhlIHVzZXIgZ2F2ZSBzcGVjaWZpYyByZXZpZXcgaW5zdHJ1Y3Rpb25zLiBUaGlzIHN1YmFnZW50IGlzIHNpbmdsZS1zaG90IGFuZCBkb2VzIG5vdCBzdXBwb3J0IGByZXN1bWVgOyBhbHdheXMgbGF1bmNoIGEgZnJlc2ggc3ViYWdlbnQgaW5zdGVhZC4SlwIKEnRvb2w6MTU6c3ViYWdlbnQ6NxISY2F0ZWdvcnk6c3ViYWdlbnRzGg1zdWJhZ2VudF90eXBlIhBiZXN0LW9mLW4tcnVubmVyKglzdWJhZ2VudHMwLji5AUgBYrkBLSBiZXN0LW9mLW4tcnVubmVyOiBSdW4gYSB0YXNrIGluIGFuIGlzb2xhdGVkIGdpdCB3b3JrdHJlZS4gRWFjaCBiZXN0LW9mLW4tcnVubmVyIGdldHMgaXRzIG93biBicmFuY2ggYW5kIHdvcmtpbmcgZGlyZWN0b3J5LiBVc2UgZm9yIGJlc3Qtb2YtTiBwYXJhbGxlbCBhdHRlbXB0cyBvciBpc29sYXRlZCBleHBlcmltZW50cy4SPgoHdG9vbDoxNhIOY2F0ZWdvcnk6dG9vbHMaD3Rvb2xfZGVmaW5pdGlvbiIFQXdhaXQqBXRvb2xzML0BOPIFEkkKB3Rvb2w6MTcSDmNhdGVnb3J5OnRvb2xzGg90b29sX2RlZmluaXRpb24iEEZldGNoTWNwUmVzb3VyY2UqBXRvb2xzMKYCOJgJEkMKB3Rvb2w6MTgSDmNhdGVnb3J5OnRvb2xzGg90b29sX2RlZmluaXRpb24iClN3aXRjaE1vZGUqBXRvb2xzMMUGOJUaEkQKB3Rvb2w6MTkSDmNhdGVnb3J5OnRvb2xzGg90b29sX2RlZmluaXRpb24iC0NhbGxNY3BUb29sKgV0b29sczCnAjibCUIg63saiCdyv2Sq+4XdkFTJwW8B4yeOhxdP8XsLyOXwOQdCIDojn8k30sZuPEl6NMpZSCPjydfPZitvIK7Xw0yDkt85Si1maWxlOi8vL2FwcC9iYWNrZW5kL3NlcnZlci9DOiU1Q1VzZXJzJTVDcm9saWtQAXo/ChlDOlxVc2Vyc1xyb2xpa1xpbmRleC5odG1sEiIKIBkdkyxVdTTrO8NYuAxRacKnZk6ZCIwHe99nKjpc+7KBsgEDaWRl0AHA3sCi7zPaAQ5Bc2lhL0plcnVzYWxlbQ==", "blobs": { "eb7b1a882772bf64aafb85dd9054c9c16f01e3278e87174ff17b0bc8e5f03907": "Ct0CCiCq+zokKXNkzGMEadjJZadhW04x4ojo5s2XbMWRE3LvZhIgYICe9Yw+64d/kN4xUuvq8n5+ZOh4mZ+5yMtzgRnO7R8SIBoRm9DZvEpM7QG3jSSfkmGZ3u6b04kWG2O4bpljLxa2EiBCukLxRlhD0KiJsrFZHFdHy0CbI7HYcZdENUdIwxCAPBIgX1SsPeDTDZ5P1uk6jgw04x1SVlaOVrz8+6MBqxn+zYoaJGMwNzQ2YzFiLWI1OWUtNGQ0My04MTE0LWM3YzQxOTE3YzdiMyKKATh2d1B5UGVLY1dGV2pfNU9SRXhqSVNoM2UxR2s1dWswRC0zSzB5MHc4TkFIcWhNWU5MNjRlWlNuNDlVSWZUYWZnemNWbWZGeUdfNENmSzUwdzA4UEdqSjVSREY1Z1BJeDAwZUw5RmhkTEkwZW1MVHlMMkpGZEsyeUhlXzJiY0xJQng2RVN2WWxDUQ==", "aafb3a24297364cc630469d8c965a7615b4e31e288e8e6cd976cc5911372ef66": "CkNDcmVhdGUgYSBuZXcgZmlsZSBjYWxsZWQgaW5kZXguaHRtbCBhbmQgSSdsbCBwYXN0ZSB0aGUgY29kZSBpbnRvIGl0EiQ5ZGFiOTEwMy05ZWE4LTRmOWMtODY5OS04NmYyMDM5MGUwNGUaACABQpgBeyJ0eXBlIjoiZG9jIiwiY29udGVudCI6W3sidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IkNyZWF0ZSBhIG5ldyBmaWxlIGNhbGxlZCBpbmRleC5odG1sIGFuZCBJJ2xsIHBhc3RlIHRoZSBjb2RlIGludG8gaXQifV19XX1SIOSNUGCnRTeUpKAmcwPAZ/KYiWT0Z+bv4qKf5PxP2Lt1igEkOWRhYjkxMDMtOWVhOC00ZjljLTg2OTktODZmMjAzOTBlMDRl", "60809ef58c3eeb877f90de3152ebeaf27e7e64e878999fb9c8cb738119ceed1f": "Gk0KSENyZWF0aW5nIGFuIGVtcHR5IGluZGV4Lmh0bWwgZmlsZSBmb3IgdGhlIHVzZXIgdG8gcGFzdGUgdGhlaXIgY29kZSBpbnRvLhCtDQ==", "1a119bd0d9bc4a4ced01b78d249f926199deee9bd389161b63b86e99632f16b6": "ClQKUkNyZWF0aW5nIGFuIGVtcHR5IGBpbmRleC5odG1sYCBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5IHNvIHlvdSBjYW4gcGFzdGUgeW91ciBjb2RlLgo=", "42ba42f1465843d0a889b2b1591c5747cb409b23b1d8719744354748c310803c": "Eq4BYnEKHQoZQzpcVXNlcnNccm9saWtcaW5kZXguaHRtbDIAElAKTgoZQzpcVXNlcnNccm9saWtcaW5kZXguaHRtbBgAIAAqAEIrV3JvdGUgY29udGVudHMgdG8gQzpcVXNlcnNccm9saWtcaW5kZXguaHRtbMoDKHRvb2xfM2IwYjQyMDEtMTA0Yi00NzIxLTk0MzAtYzg1MTBkNTk5NjjYA5L8wKLvM+ADgYXBou8z", "5f54ac3de0d30d9e4fd6e93a8e0c34e31d5256568e56bcfcfba301ab19fecd8a": "Cm4KbENyZWF0ZWQgYW4gZW1wdHkgYGluZGV4Lmh0bWxgIGF0IGBDOlxVc2Vyc1xyb2xpa1xpbmRleC5odG1sYC4gUGFzdGUgeW91ciBjb2RlIGludG8gaXQgd2hlbmV2ZXIgeW91J3JlIHJlYWR5Lg==", "3a239fc937d2c66e3c497a34ca594823e3c9d7cf662b6f20aed7c34c8392df39": "CrsCCiAr+BvYBURi8cYNXAi9x7tN4xvN88G4yRiK/euH2oX3bBIgjeBi6943F3pSKnCAdYAlOdbuUvU4c4dXkJDpV3vg+XcSIMJn7d3mkMgB3lVkvYn70Xy+tpxc1JSlMuDpvrVp6HbhEiAPKbMG+67LDATMMU97lNo6J2VypEHZxEaV3Hp/KsYhMxokNzlmMWEyNzMtM2FhNy00ZWJiLWExN2YtNTUzYjhiZWVlMzQzIooBQXBuYUxaWlZQUjBzcTlxOUZuc2hKZmJRWlZzbTNHaEdxRE5rbnNNc21XdTdjdmlNRm1hbjFnYTdMSzRGOG5DeXJoX3FNazlDWkhQQkRjVERNb3Z5UG54eFU0MG5zaWVwbmtkZUNnOXhPWkppMUYzQnJvemx1cXhvX19uTWJiSVhpZlZ3Umo2NEh3", "2bf81bd8054462f1c60d5c08bdc7bb4de31bcdf3c1b8c9188afdeb87da85f76c": "CsnUAjwhRE9DVFlQRSBodG1sPgo8aHRtbCBsYW5nPSJlbiI+CjxoZWFkPgo8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIj4KPHRpdGxlPk9saW1BbnN3ZXJzLmNvbTwvdGl0bGU+CjxzdHlsZT4KICA6cm9vdCB7CiAgICAtLWJsdWU6IzFhNWZhODstLWJsdWUtbGlnaHQ6I2U4ZjBmYjstLWdvbGQ6I2YwYjQyOTstLWdvbGQtbGlnaHQ6I2ZmZjhlNzsKICAgIC0tZ3JlZW46IzFhOGE0YTstLXJlZDojYzAzOTJiOy0tZ3JheTojZjRmNmY5Oy0tdGV4dDojMWExYTJlOy0tbXV0ZWQ6IzZiNzI4MDsKICAgIC0tYm9yZGVyOiNkZGUzZWQ7LS13aGl0ZTojZmZmZmZmOy0tc2hhZG93OjAgMnB4IDEycHggcmdiYSgwLDAsMCwwLjA4KTsKICB9CiAgKntib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luOjA7cGFkZGluZzowfQogIGJvZHl7Zm9udC1mYW1pbHk6J1NlZ29lIFVJJyxzeXN0ZW0tdWksc2Fucy1zZXJpZjtjb2xvcjp2YXIoLS10ZXh0KTtiYWNrZ3JvdW5kOnZhcigtLWdyYXkpO21pbi1oZWlnaHQ6MTAwdmh9CiAgLyogTkFWICovCiAgbmF2e2JhY2tncm91bmQ6dmFyKC0tYmx1ZSk7Y29sb3I6I2ZmZjtwYWRkaW5nOjAgMjRweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2hlaWdodDo2MHB4O3Bvc2l0aW9uOnN0aWNreTt0b3A6MDt6LWluZGV4OjEwMDtib3gtc2hhZG93OjAgMnB4IDhweCByZ2JhKDAsMCwwLDAuMil9CiAgLm5hdi1sb2dve2ZvbnQtc2l6ZToxLjQ1cmVtO2ZvbnQtd2VpZ2h0OjgwMDtjdXJzb3I6cG9pbnRlcjtsZXR0ZXItc3BhY2luZzotMC41cHg7bGluZS1oZWlnaHQ6MS4xO21hcmdpbi1yaWdodDoxMnB4O2ZsZXgtc2hyaW5rOjB9CiAgLm5hdi1sb2dvIHNwYW57ZGlzcGxheTpibG9jaztmb250LXNpemU6MC43OHJlbTtmb250LXdlaWdodDo1MDA7bGV0dGVyLXNwYWNpbmc6MS41cHg7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO29wYWNpdHk6MC44NX0KICAubmF2LWxvZ286aG92ZXJ7b3BhY2l0eTowLjg1fQogIC5uYXYtbG9nbyBzcGFue2NvbG9yOnZhcigtLWdvbGQpfQogIC5uYXYtbGlua3N7ZGlzcGxheTpmbGV4O2dhcDo2cHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwfQogIC5uYXYtbGlua3MgYnV0dG9ue2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtjb2xvcjojZmZmO3BhZGRpbmc6NnB4IDEwcHg7Ym9yZGVyLXJhZGl1czo2cHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjAuODJyZW07Zm9udC13ZWlnaHQ6NTAwO3RyYW5zaXRpb246YmFja2dyb3VuZCAwLjJzfQogIC5uYXYtbGlua3MgYnV0dG9uOmhvdmVye2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwwLjE1KX0KICAubmF2LWxpbmtzIC5uYXYtZG9uYXRle2JhY2tncm91bmQ6dmFyKC0tZ29sZCk7Y29sb3I6dmFyKC0tdGV4dCk7Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6NnB4IDEycHg7Ym9yZGVyLXJhZGl1czo2cHh9CiAgLm5hdi1saW5rcyAubmF2LWRvbmF0ZTpob3ZlcntiYWNrZ3JvdW5kOiNlMGE4MDB9CiAgLmxhbmctYnRue2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwwLjE1KSFpbXBvcnRhbnQ7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMykhaW1wb3J0YW50O2ZvbnQtc2l6ZTowLjc4cmVtIWltcG9ydGFudH0KCiAgLyogUEFHRVMgKi8KICAucGFnZXtkaXNwbGF5Om5vbmU7bWF4LXdpZHRoOjExMDBweDttYXJnaW46MCBhdXRvO3BhZGRpbmc6MjhweCAyMHB4fQogIC5wYWdlLmFjdGl2ZXtkaXNwbGF5OmJsb2NrfQoKICAvKiBIT01FICovCiAgLmhlcm97YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHZhcigtLWJsdWUpIDAlLCMyNDcxYzggMTAwJSk7Y29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjE2cHg7cGFkZGluZzo0OHB4IDQwcHg7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luLWJvdHRvbTozMnB4fQogIC5oZXJvIGgxe2ZvbnQtc2l6ZToyLjRyZW07Zm9udC13ZWlnaHQ6ODAwO21hcmdpbi1ib3R0b206MTJweH0KICAuaGVybyBoMSBzcGFue2NvbG9yOnZhcigtLWdvbGQpfQogIC5oZXJvIHB7Zm9udC1zaXplOjEuMXJlbTtvcGFjaXR5OjAuOTI7bWF4LXdpZHRoOjYyMHB4O21hcmdpbjowIGF1dG8gMjRweDtsaW5lLWhlaWdodDoxLjZ9CiAgLmhlcm8tYnRuc3tkaXNwbGF5OmZsZXg7Z2FwOjEycHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LXdyYXA6d3JhcH0KICAuYnRue3BhZGRpbmc6MTJweCAyNHB4O2JvcmRlci1yYWRpdXM6OHB4O2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjk1cmVtO2ZvbnQtd2VpZ2h0OjcwMDt0cmFuc2l0aW9uOmFsbCAwLjJzfQogIC5idG4tcHJpbWFyeXtiYWNrZ3JvdW5kOnZhcigtLWdvbGQpO2NvbG9yOnZhcigtLXRleHQpfQogIC5idG4tcHJpbWFyeTpob3ZlcntiYWNrZ3JvdW5kOiNlMGE4MDA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCl9CiAgLmJ0bi1vdXRsaW5le2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6I2ZmZjtib3JkZXI6MnB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC42KX0KICAuYnRuLW91dGxpbmU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuMSl9CiAgLmhvdy1pdC13b3Jrc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpdCxtaW5tYXgoMjAwcHgsMWZyKSk7Z2FwOjIwcHg7bWFyZ2luLWJvdHRvbTozMnB4fQogIC5oaXctY2FyZHtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyNHB4O3RleHQtYWxpZ246Y2VudGVyO2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KX0KICAuaGl3LWljb257Zm9udC1zaXplOjJyZW07bWFyZ2luLWJvdHRvbToxMHB4fQogIC5oaXctY2FyZCBoM3tmb250LXNpemU6MXJlbTttYXJnaW4tYm90dG9tOjZweDtjb2xvcjp2YXIoLS1ibHVlKX0KICAuaGl3LWNhcmQgcHtmb250LXNpemU6MC44NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bGluZS1oZWlnaHQ6MS41fQogIC5zZWN0aW9uLXRpdGxle2ZvbnQtc2l6ZToxLjNyZW07Zm9udC13ZWlnaHQ6NzAwO21hcmdpbi1ib3R0b206MTZweDtjb2xvcjp2YXIoLS1ibHVlKX0KICAuY2F0ZWdvcnktZ3JpZHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpbGwsbWlubWF4KDE2MHB4LDFmcikpO2dhcDoxNHB4O21hcmdpbi1ib3R0b206MzJweH0KICAuY2F0LWNhcmR7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MThweCAxNHB4O3RleHQtYWxpZ246Y2VudGVyO2N1cnNvcjpwb2ludGVyO2JvcmRlcjoycHggc29saWQgdHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjphbGwgMC4ycztib3gtc2hhZG93OnZhcigtLXNoYWRvdyl9CiAgLmNhdC1jYXJkOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1ibHVlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KX0KICAuY2F0LWljb257Zm9udC1zaXplOjEuOHJlbTttYXJnaW4tYm90dG9tOjhweH0KICAuY2F0LWNhcmQgaDR7Zm9udC1zaXplOjAuODhyZW07Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLXRleHQpfQogIC5jYXQtY2FyZCBwe2ZvbnQtc2l6ZTowLjc1cmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tdG9wOjRweH0KICAuZG9uYXRlLWJhbm5lcntiYWNrZ3JvdW5kOnZhcigtLWdvbGQtbGlnaHQpO2JvcmRlcjoycHggc29saWQgdmFyKC0tZ29sZCk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjRweDt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tYm90dG9tOjMycHh9CiAgLmRvbmF0ZS1iYW5uZXIgaDN7Zm9udC1zaXplOjEuMXJlbTttYXJnaW4tYm90dG9tOjhweH0KICAuZG9uYXRlLWJhbm5lciBwe2ZvbnQtc2l6ZTowLjg4cmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tYm90dG9tOjE0cHh9CiAgLnRpcC1ib3h7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCNlOGY1ZTksI2YwZmFmNCk7Ym9yZGVyLWxlZnQ6NHB4IHNvbGlkIHZhcigtLWdyZWVuKTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxOHB4IDIwcHg7bWFyZ2luLWJvdHRvbTozMnB4fQogIC50aXAtYm94IC50aXAtbGFiZWx7Zm9udC1zaXplOjAuNzVyZW07Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLWdyZWVuKTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bGV0dGVyLXNwYWNpbmc6MXB4O21hcmdpbi1ib3R0b206NnB4fQogIC50aXAtYm94IHB7Zm9udC1zaXplOjAuOTJyZW07bGluZS1oZWlnaHQ6MS41fQoKICAvKiBGT1JVTSAvIENBVEVHT1JZICovCiAgLmZvcnVtLWhlYWRlcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO21hcmdpbi1ib3R0b206MjBweDtmbGV4LXdyYXA6Z2FwfQogIC5zb3J0LXNlbGVjdHtwYWRkaW5nOjhweCAxMnB4O2JvcmRlci1yYWRpdXM6OHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtmb250LXNpemU6MC44NXJlbTtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtjdXJzb3I6cG9pbnRlcjtjb2xvcjp2YXIoLS10ZXh0KX0KICAuYXNrLWJhcntiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyMHB4O2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KTttYXJnaW4tYm90dG9tOjI0cHh9CiAgLmFzay1iYXIgaDN7Zm9udC1zaXplOjFyZW07bWFyZ2luLWJvdHRvbToxMnB4O2NvbG9yOnZhcigtLWJsdWUpfQogIC5hc2stYmFyIGlucHV0LC5hc2stYmFyIHRleHRhcmVhLC5hc2stYmFyIHNlbGVjdHt3aWR0aDoxMDAlO3BhZGRpbmc6MTBweCAxNHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjhweDtmb250LXNpemU6MC45cmVtO21hcmdpbi1ib3R0b206MTBweDtmb250LWZhbWlseTppbmhlcml0O2NvbG9yOnZhcigtLXRleHQpfQogIC5hc2stYmFyIHRleHRhcmVhe3Jlc2l6ZTp2ZXJ0aWNhbDttaW4taGVpZ2h0OjgwcHh9CiAgLnRhZy1pbnB1dHtkaXNwbGF5OmZsZXg7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjEwcHh9CiAgLnRhZ3tiYWNrZ3JvdW5kOnZhcigtLWJsdWUtbGlnaHQpO2NvbG9yOnZhcigtLWJsdWUpO3BhZGRpbmc6NHB4IDEwcHg7Ym9yZGVyLXJhZGl1czoyMHB4O2ZvbnQtc2l6ZTowLjc4cmVtO2ZvbnQtd2VpZ2h0OjYwMDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHh9CiAgLnRhZyAucmVtb3Zle2NvbG9yOnZhcigtLXJlZCk7Zm9udC13ZWlnaHQ6NzAwfQogIC5xLWNhcmR7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjBweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWFyZ2luLWJvdHRvbToxNnB4O2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246Ym94LXNoYWRvdyAwLjJzfQogIC5xLWNhcmQ6aG92ZXJ7Ym94LXNoYWRvdzowIDRweCAyMHB4IHJnYmEoMCwwLDAsMC4xMil9CiAgLnEtbWV0YXtkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206OHB4fQogIC5xLWNhdC1iYWRnZXtiYWNrZ3JvdW5kOnZhcigtLWJsdWUtbGlnaHQpO2NvbG9yOnZhcigtLWJsdWUpO2ZvbnQtc2l6ZTowLjcycmVtO2ZvbnQtd2VpZ2h0OjcwMDtwYWRkaW5nOjNweCA5cHg7Ym9yZGVyLXJhZGl1czoxMnB4fQogIC5xLWRhdGV7Zm9udC1zaXplOjAuNzVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpfQogIC5xLWF1dGhvcntmb250LXNpemU6MC43NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCl9CiAgLnEtdGl0bGV7Zm9udC1zaXplOjEuMDVyZW07Zm9udC13ZWlnaHQ6NzAwO21hcmdpbi1ib3R0b206NnB4fQogIC5xLXByZXZpZXd7Zm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO2xpbmUtaGVpZ2h0OjEuNTttYXJnaW4tYm90dG9tOjEwcHh9CiAgLnEtc3RhdHN7ZGlzcGxheTpmbGV4O2dhcDoxNHB4O2ZvbnQtc2l6ZTowLjhyZW07Y29sb3I6dmFyKC0tbXV0ZWQpfQogIC5xLXN0YXRzIHNwYW57ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4fQogIC5mZWF0dXJlZC1iYWRnZXtiYWNrZ3JvdW5kOnZhcigtLWdvbGQpO2NvbG9yOnZhcigtLXRleHQpO2ZvbnQtc2l6ZTowLjdyZW07Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6MnB4IDhweDtib3JkZXItcmFkaXVzOjEwcHg7bWFyZ2luLWxlZnQ6OHB4fQoKICAvKiBRVUVTVElPTiBERVRBSUwgKi8KICAuYmFjay1idG57YmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO2NvbG9yOnZhcigtLWJsdWUpO2ZvbnQtc2l6ZTowLjlyZW07Y3Vyc29yOnBvaW50ZXI7bWFyZ2luLWJvdHRvbToxNnB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDtmb250LXdlaWdodDo2MDB9CiAgLnEtZnVsbHtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyNHB4O2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KTttYXJnaW4tYm90dG9tOjI0cHh9CiAgLnEtZnVsbCBoMntmb250LXNpemU6MS4zcmVtO21hcmdpbi1ib3R0b206MTJweH0KICAucS1mdWxsIC5ib2R5e2ZvbnQtc2l6ZTowLjkycmVtO2xpbmUtaGVpZ2h0OjEuNzttYXJnaW4tYm90dG9tOjE2cHh9CiAgLnRhZ3Mtcm93e2Rpc3BsYXk6ZmxleDtnYXA6OHB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MTZweH0KICAuYW5zd2Vycy1zZWN0aW9uIGgze2ZvbnQtc2l6ZToxLjFyZW07Zm9udC13ZWlnaHQ6NzAwO21hcmdpbi1ib3R0b206MTZweDtjb2xvcjp2YXIoLS1ibHVlKX0KICAuYW5zd2VyLWNhcmR7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MThweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWFyZ2luLWJvdHRvbToxNHB4O2JvcmRlci1sZWZ0OjRweCBzb2xpZCB0cmFuc3BhcmVudH0KICAuYW5zd2VyLWNhcmQudG9wLWFuc3dlcntib3JkZXItbGVmdC1jb2xvcjp2YXIoLS1nb2xkKX0KICAudG9wLWFuc3dlci1sYWJlbHtmb250LXNpemU6MC43MnJlbTtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tZ29sZCk7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2xldHRlci1zcGFjaW5nOjAuOHB4O21hcmdpbi1ib3R0b206NnB4fQogIC5hbnN3ZXItYm9keXtmb250LXNpemU6MC45cmVtO2xpbmUtaGVpZ2h0OjEuNzttYXJnaW4tYm90dG9tOjEycHh9CiAgLmFuc3dlci1mb290ZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4fQogIC5hbnN3ZXItbWV0YXtmb250LXNpemU6MC43OHJlbTtjb2xvcjp2YXIoLS1tdXRlZCl9CiAgLnZvdGUtYnRuc3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHh9CiAgLnZvdGUtYnRue2JhY2tncm91bmQ6dmFyKC0tZ3JheSk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6NXB4IDEycHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjAuODJyZW07Zm9udC13ZWlnaHQ6NjAwO3RyYW5zaXRpb246YWxsIDAuMnM7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4fQogIC52b3RlLWJ0bi5saWtlZHtiYWNrZ3JvdW5kOnZhcigtLWJsdWUtbGlnaHQpO2JvcmRlci1jb2xvcjp2YXIoLS1ibHVlKTtjb2xvcjp2YXIoLS1ibHVlKX0KICAudm90ZS1idG46aG92ZXJ7dHJhbnNmb3JtOnNjYWxlKDEuMDUpfQogIC5mbGFnLWJ0bntiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Y29sb3I6dmFyKC0tbXV0ZWQpO2ZvbnQtc2l6ZTowLjc4cmVtO2N1cnNvcjpwb2ludGVyfQogIC5mbGFnLWJ0bjpob3Zlcntjb2xvcjp2YXIoLS1yZWQpfQogIC5hZGQtYW5zd2Vye2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjIwcHg7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpO21hcmdpbi10b3A6MjRweH0KICAuYWRkLWFuc3dlciBoNHttYXJnaW4tYm90dG9tOjEycHg7Y29sb3I6dmFyKC0tYmx1ZSl9CiAgLmFkZC1hbnN3ZXIgdGV4dGFyZWF7d2lkdGg6MTAwJTtwYWRkaW5nOjEycHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4O21pbi1oZWlnaHQ6MTAwcHg7cmVzaXplOnZlcnRpY2FsO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOjAuOXJlbTttYXJnaW4tYm90dG9tOjEwcHh9CiAgLmFkZC1hbnN3ZXIgaW5wdXR7d2lkdGg6MTAwJTtwYWRkaW5nOjEwcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4O2ZvbnQtc2l6ZTowLjg4cmVtO21hcmdpbi1ib3R0b206MTBweDtmb250LWZhbWlseTppbmhlcml0fQoKICAvKiBCRVNUIE9GICovCiAgLmJlc3Qtb2YtaGVhZGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZyx2YXIoLS1nb2xkLWxpZ2h0KSwjZmZmZGU3KTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyNHB4O21hcmdpbi1ib3R0b206MjRweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdvbGQpO3RleHQtYWxpZ246Y2VudGVyfQogIC5iZXN0LW9mLWhlYWRlciBoMntjb2xvcjp2YXIoLS10ZXh0KTttYXJnaW4tYm90dG9tOjZweH0KICAuYmVzdC1vZi1oZWFkZXIgcHtjb2xvcjp2YXIoLS1tdXRlZCk7Zm9udC1zaXplOjAuODhyZW19CiAgLmZpbHRlci1yb3d7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MjBweDthbGlnbi1pdGVtczpjZW50ZXJ9CiAgLmZpbHRlci1idG57cGFkZGluZzo2cHggMTRweDtib3JkZXItcmFkaXVzOjIwcHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjgycmVtO2ZvbnQtd2VpZ2h0OjYwMDt0cmFuc2l0aW9uOmFsbCAwLjJzfQogIC5maWx0ZXItYnRuLmFjdGl2ZXtiYWNrZ3JvdW5kOnZhcigtLWJsdWUpO2NvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOnZhcigtLWJsdWUpfQoKICAvKiBDSEVDS0xJU1QgKi8KICAuY2hlY2tsaXN0LWludHJve2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZywjZThmNWU5LCNmMGZhZjQpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjI0cHg7bWFyZ2luLWJvdHRvbToyNHB4O2JvcmRlcjoycHggc29saWQgdmFyKC0tZ3JlZW4pO3RleHQtYWxpZ246Y2VudGVyfQogIC5jaGVja2xpc3QtaW50cm8gaDJ7Y29sb3I6dmFyKC0tZ3JlZW4pO21hcmdpbi1ib3R0b206NnB4fQogIC5jaGVja2xpc3Qtc2VjdGlvbntiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyMHB4O2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KTttYXJnaW4tYm90dG9tOjE2cHh9CiAgLmNoZWNrbGlzdC1zZWN0aW9uIGgze2ZvbnQtc2l6ZToxcmVtO2NvbG9yOnZhcigtLWJsdWUpO21hcmdpbi1ib3R0b206MTJweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHh9CiAgLmNoZWNrbGlzdC1pdGVte2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDoxMnB4O3BhZGRpbmc6MTBweCAwO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWJvcmRlcil9CiAgLmNoZWNrbGlzdC1pdGVtOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbTpub25lfQogIC5jaGVja2xpc3QtaXRlbSBpbnB1dFt0eXBlPWNoZWNrYm94XXt3aWR0aDoxOHB4O2hlaWdodDoxOHB4O21hcmdpbi10b3A6MnB4O2N1cnNvcjpwb2ludGVyO2FjY2VudC1jb2xvcjp2YXIoLS1ibHVlKX0KICAuY2hlY2tsaXN0LWl0ZW0gbGFiZWx7Zm9udC1zaXplOjAuOXJlbTtsaW5lLWhlaWdodDoxLjU7Y3Vyc29yOnBvaW50ZXI7ZmxleDoxfQogIC5jaGVja2xpc3QtaXRlbSAubGluay1idG57Zm9udC1zaXplOjAuNzVyZW07Y29sb3I6dmFyKC0tYmx1ZSk7Y3Vyc29yOnBvaW50ZXI7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7bWFyZ2luLWxlZnQ6YXV0bzt3aGl0ZS1zcGFjZTpub3dyYXB9CgogIC8qIFNFQVJDSCAqLwogIC5zZWFyY2gtYmFyLWJpZ3tkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7bWFyZ2luLWJvdHRvbToyNHB4fQogIC5zZWFyY2gtYmFyLWJpZyBpbnB1dHtmbGV4OjE7cGFkZGluZzoxNHB4IDE4cHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6MTBweDtmb250LXNpemU6MXJlbTtmb250LWZhbWlseTppbmhlcml0fQogIC5zZWFyY2gtYmFyLWJpZyBpbnB1dDpmb2N1c3tvdXRsaW5lOm5vbmU7Ym9yZGVyLWNvbG9yOnZhcigtLWJsdWUpfQogIC5zZWFyY2gtYmFyLWJpZyBidXR0b257YmFja2dyb3VuZDp2YXIoLS1ibHVlKTtjb2xvcjojZmZmO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjE0cHggMjRweDtmb250LXNpemU6MXJlbTtmb250LXdlaWdodDo3MDA7Y3Vyc29yOnBvaW50ZXJ9CiAgLnRhZy1jbG91ZHtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjhweDttYXJnaW4tYm90dG9tOjI0cHh9CiAgLnRhZy1jbG91ZC1pdGVte2JhY2tncm91bmQ6dmFyKC0tYmx1ZS1saWdodCk7Y29sb3I6dmFyKC0tYmx1ZSk7cGFkZGluZzo2cHggMTRweDtib3JkZXItcmFkaXVzOjIwcHg7Zm9udC1zaXplOjAuODJyZW07Zm9udC13ZWlnaHQ6NjAwO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246YWxsIDAuMnN9CiAgLnRhZy1jbG91ZC1pdGVtOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYmx1ZSk7Y29sb3I6I2ZmZn0KCiAgLyogRE9OQVRFICovCiAgLmRvbmF0ZS1wYWdle3RleHQtYWxpZ246Y2VudGVyO21heC13aWR0aDo2MDBweDttYXJnaW46MCBhdXRvfQogIC5kb25hdGUtaGVyb3tiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsdmFyKC0tZ29sZC1saWdodCksI2ZmZjhlMSk7Ym9yZGVyLXJhZGl1czoxNnB4O3BhZGRpbmc6NDBweDttYXJnaW4tYm90dG9tOjI0cHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1nb2xkKX0KICAuZG9uYXRlLWhlcm8gaDJ7Zm9udC1zaXplOjEuOHJlbTttYXJnaW4tYm90dG9tOjEycHh9CiAgLmRvbmF0ZS1oZXJvIHB7Y29sb3I6dmFyKC0tbXV0ZWQpO2xpbmUtaGVpZ2h0OjEuNzttYXJnaW4tYm90dG9tOjIwcHh9CiAgLmRvbmF0ZS1hbW91bnRze2Rpc3BsYXk6ZmxleDtnYXA6MTBweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MjBweH0KICAuYW1vdW50LWJ0bntwYWRkaW5nOjEwcHggMjBweDtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdvbGQpO2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjlyZW07Zm9udC13ZWlnaHQ6NzAwO3RyYW5zaXRpb246YWxsIDAuMnN9CiAgLmFtb3VudC1idG4uc2VsZWN0ZWQsLmFtb3VudC1idG46aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1nb2xkKTtjb2xvcjp2YXIoLS10ZXh0KX0KICAuZG9uYXRlLWJ0bi1iaWd7YmFja2dyb3VuZDp2YXIoLS1nb2xkKTtjb2xvcjp2YXIoLS10ZXh0KTtib3JkZXI6bm9uZTtwYWRkaW5nOjE0cHggNDBweDtib3JkZXItcmFkaXVzOjEwcHg7Zm9udC1zaXplOjEuMXJlbTtmb250LXdlaWdodDo4MDA7Y3Vyc29yOnBvaW50ZXI7d2lkdGg6MTAwJTttYXJnaW4tYm90dG9tOjEycHh9CgogIC8qIExBTkcgTU9EQUwgKi8KICAubW9kYWwtb3ZlcmxheXtkaXNwbGF5Om5vbmU7cG9zaXRpb246Zml4ZWQ7aW5zZXQ6MDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC41KTt6LWluZGV4OjIwMDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0KICAubW9kYWwtb3ZlcmxheS5vcGVue2Rpc3BsYXk6ZmxleH0KICAubW9kYWx7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxNnB4O3BhZGRpbmc6MjhweDttYXgtd2lkdGg6NDIwcHg7d2lkdGg6OTAlO2JveC1zaGFkb3c6MCA4cHggNDBweCByZ2JhKDAsMCwwLDAuMil9CiAgLm1vZGFsIGgze21hcmdpbi1ib3R0b206OHB4O2ZvbnQtc2l6ZToxLjJyZW19CiAgLm1vZGFsIHB7Zm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MTZweDtsaW5lLWhlaWdodDoxLjV9CiAgLmxhbmctZ3JpZHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjhweDttYXJnaW4tYm90dG9tOjE2cHh9CiAgLmxhbmctb3B0aW9ue3BhZGRpbmc6MTBweCAxMnB4O2JvcmRlcjoycHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjhweDtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MC45MnJlbTtmb250LXdlaWdodDo2MDA7dGV4dC1hbGlnbjpjZW50ZXI7dHJhbnNpdGlvbjphbGwgMC4ycztsaW5lLWhlaWdodDoxLjQ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4fQogIC5sYW5nLW9wdGlvbjpob3ZlciwubGFuZy1vcHRpb24uYWN0aXZle2JvcmRlci1jb2xvcjp2YXIoLS1ibHVlKTtiYWNrZ3JvdW5kOnZhcigtLWJsdWUtbGlnaHQpO2NvbG9yOnZhcigtLWJsdWUpO3RyYW5zZm9ybTpzY2FsZSgxLjAzKX0KICAubW9kYWwtY2xvc2V7YmFja2dyb3VuZDp2YXIoLS1ncmF5KTtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjEwcHggMjBweDtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MC45cmVtO2ZvbnQtd2VpZ2h0OjYwMDt3aWR0aDoxMDAlfQogIC50cmFuc2xhdGlvbi1ub3RpY2V7YmFja2dyb3VuZDojZmZmM2NkO2JvcmRlcjoxcHggc29saWQgI2ZmYzEwNztib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjEwcHggMTRweDtmb250LXNpemU6MC44cmVtO2NvbG9yOiM4NTY0MDQ7bWFyZ2luLWJvdHRvbToxNnB4fQoKICAvKiBUT0FTVCAqLwogIC50b2FzdHtwb3NpdGlvbjpmaXhlZDtib3R0b206MjRweDtyaWdodDoyNHB4O2JhY2tncm91bmQ6dmFyKC0tZ3JlZW4pO2NvbG9yOiNmZmY7cGFkZGluZzoxMnB4IDIwcHg7Ym9yZGVyLXJhZGl1czoxMHB4O2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MC45cmVtO3otaW5kZXg6MzAwO29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxMHB4KTt0cmFuc2l0aW9uOmFsbCAwLjNzO3BvaW50ZXItZXZlbnRzOm5vbmV9CiAgLnRvYXN0LnNob3d7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfQoKICAuZW1wdHktc3RhdGV7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzo0MHB4O2NvbG9yOnZhcigtLW11dGVkKX0KICAuZW1wdHktc3RhdGUgLmljb257Zm9udC1zaXplOjNyZW07bWFyZ2luLWJvdHRvbToxMHB4fQogIC5kaXZpZGVye2hlaWdodDoxcHg7YmFja2dyb3VuZDp2YXIoLS1ib3JkZXIpO21hcmdpbjoyMHB4IDB9CiAgQG1lZGlhKG1heC13aWR0aDo2MDBweCl7Lmhlcm8gaDF7Zm9udC1zaXplOjEuNnJlbX0uaGVyb3twYWRkaW5nOjI4cHggMjBweH0uY2F0ZWdvcnktZ3JpZHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KGF1dG8tZmlsbCxtaW5tYXgoMTMwcHgsMWZyKSl9fQo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoKPG5hdj4KICA8ZGl2IGNsYXNzPSJuYXYtbG9nbyIgb25jbGljaz0ic2hvd1BhZ2UoJ2hvbWUnKSI+T2xpbTxzcGFuPkFuc3dlcnM8L3NwYW4+PC9kaXY+CiAgPGRpdiBjbGFzcz0ibmF2LWxpbmtzIj4KICAgIDxidXR0b24gb25jbGljaz0ic2hvd1BhZ2UoJ2hvbWUnKSI+8J+PoCBIb21lPC9idXR0b24+CiAgICA8YnV0dG9uIG9uY2xpY2s9InNob3dQYWdlKCdmb3J1bScpIj7wn5ejIEZvcnVtPC9idXR0b24+CiAgICA8YnV0dG9uIG9uY2xpY2s9InNob3dQYWdlKCdiZXN0b2YnKSI+4q2QIEJlc3QgT2Y8L2J1dHRvbj4KICAgIDxidXR0b24gb25jbGljaz0ic2hvd1BhZ2UoJ2NoZWNrbGlzdCcpIj7inIUgQ2hlY2tsaXN0PC9idXR0b24+CiAgICA8YnV0dG9uIG9uY2xpY2s9InNob3dQYWdlKCdjYXRzJykiPvCfk4IgQ2F0ZWdvcmllczwvYnV0dG9uPgogICAgPGJ1dHRvbiBvbmNsaWNrPSJzaG93UGFnZSgnc2VhcmNoJykiPvCflI0gU2VhcmNoPC9idXR0b24+CiAgICA8YnV0dG9uIG9uY2xpY2s9InNob3dQYWdlKCdkb25hdGUnKSIgY2xhc3M9Im5hdi1kb25hdGUiPvCfkpsgRG9uYXRlPC9idXR0b24+CiAgICA8YnV0dG9uIGNsYXNzPSJsYW5nLWJ0biIgb25jbGljaz0ib3BlbkxhbmdNb2RhbCgpIj7wn4es8J+HpzwvYnV0dG9uPgogIDwvZGl2Pgo8L25hdj4KCjwhLS0gSE9NRSAtLT4KPGRpdiBjbGFzcz0icGFnZSBhY3RpdmUiIGlkPSJwYWdlLWhvbWUiPgogIDxkaXYgY2xhc3M9Imhlcm8iPgogICAgPGgxPldlbGNvbWUgdG8gPHNwYW4+T2xpbUFuc3dlcnM8L3NwYW4+PC9oMT4KICAgIDxwPllvdXIgY29tbXVuaXR5LXBvd2VyZWQgZ3VpZGUgdG8gbmF2aWdhdGluZyBsaWZlIGluIElzcmFlbC4gQXNrIHF1ZXN0aW9ucywgc2hhcmUga25vd2xlZGdlLCBhbmQgaGVscCBmZWxsb3cgb2xpbSBmaW5kIHRoZWlyIGZlZXQgZmFzdGVyLjwvcD4KICAgIDxkaXYgY2xhc3M9Imhlcm8tYnRucyI+CiAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgb25jbGljaz0ic2hvd1BhZ2UoJ2ZvcnVtJykiPkFzayBhIFF1ZXN0aW9uPC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tb3V0bGluZSIgb25jbGljaz0ic2hvd1BhZ2UoJ2Jlc3RvZicpIj7irZAgQnJvd3NlIFRvcCBBbnN3ZXJzPC9idXR0b24+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0idGlwLWJveCI+CiAgICA8ZGl2IGNsYXNzPSJ0aXAtbGFiZWwiPvCfkqEgVGlwIG9mIHRoZSBEYXk8L2Rpdj4KICAgIDxwIGlkPSJ0aXAtdGV4dCI+V2hlbiBvcGVuaW5nIGEgYmFuayBhY2NvdW50IGluIElzcmFlbCwgYnJpbmcgeW91ciBUZXVkYXQgT2xlaCwgcGFzc3BvcnQsIGFuZCBwcm9vZiBvZiBhZGRyZXNzLiBCYW5rIEhhcG9hbGltIGFuZCBCYW5rIExldW1pIGJvdGggaGF2ZSBkZWRpY2F0ZWQgT2xpbSBkZXBhcnRtZW50cyB3aXRoIEVuZ2xpc2gtc3BlYWtpbmcgc3RhZmYuPC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5Ib3cgSXQgV29ya3M8L2Rpdj4KICA8ZGl2IGNsYXNzPSJob3ctaXQtd29ya3MiPgogICAgPGRpdiBjbGFzcz0iaGl3LWNhcmQiPjxkaXYgY2xhc3M9Imhpdy1pY29uIj7inZM8L2Rpdj48aDM+QXNrPC9oMz48cD5Qb3N0IHlvdXIgcXVlc3Rpb24gaW4gdGhlIHJlbGV2YW50IGNhdGVnb3J5LiBCZSBhcyBkZXRhaWxlZCBhcyB5b3UgbGlrZS48L3A+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJoaXctY2FyZCI+PGRpdiBjbGFzcz0iaGl3LWljb24iPvCfkqw8L2Rpdj48aDM+QW5zd2VyPC9oMz48cD5UaGUgY29tbXVuaXR5IHJlc3BvbmRzIHdpdGggYWR2aWNlLCB0aXBzLCBhbmQgcGVyc29uYWwgZXhwZXJpZW5jZS48L3A+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJoaXctY2FyZCI+PGRpdiBjbGFzcz0iaGl3LWljb24iPvCfkY08L2Rpdj48aDM+UmF0ZTwvaDM+PHA+VXB2b3RlIHRoZSBtb3N0IGhlbHBmdWwgYW5zd2VycyBzbyB0aGV5IHJpc2UgdG8gdGhlIHRvcCBmb3IgZXZlcnlvbmUuPC9wPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iaGl3LWNhcmQiPjxkaXYgY2xhc3M9Imhpdy1pY29uIj7wn4yfPC9kaXY+PGgzPkRpc2NvdmVyPC9oMz48cD5Ccm93c2UgdG9wLXJhdGVkIGNvbnRlbnQgb3Igc2VhcmNoIGJ5IGtleXdvcmQgdG8gZmluZCB3aGF0IHlvdSBuZWVkIGZhc3QuPC9wPjwvZGl2PgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5Ccm93c2UgYnkgQ2F0ZWdvcnk8L2Rpdj4KICA8ZGl2IGNsYXNzPSJjYXRlZ29yeS1ncmlkIiBpZD0iaG9tZS1jYXRzIj48L2Rpdj4KCiAgPGRpdiBjbGFzcz0iZG9uYXRlLWJhbm5lciI+CiAgICA8aDM+8J+SmyBPbGltQW5zd2VycyBpcyBmcmVlIGZvciBldmVyeW9uZTwvaDM+CiAgICA8cD5UaGlzIHNpdGUgaXMgY29tbXVuaXR5LXJ1bi4gSWYgaXQgaGVscGVkIHlvdSwgY29uc2lkZXIgYSBzbWFsbCBkb25hdGlvbiB0byBrZWVwIGl0IGdvaW5nLjwvcD4KICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgb25jbGljaz0ic2hvd1BhZ2UoJ2RvbmF0ZScpIj5TdXBwb3J0IHRoZSBTaXRlPC9idXR0b24+CiAgPC9kaXY+CjwvZGl2PgoKPCEtLSBGT1JVTSAtLT4KPGRpdiBjbGFzcz0icGFnZSIgaWQ9InBhZ2UtZm9ydW0iPgogIDxkaXYgY2xhc3M9ImZvcnVtLWhlYWRlciIgc3R5bGU9ImRpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLWJvdHRvbToyMHB4O2ZsZXgtd3JhcDp3cmFwO2dhcDoxMHB4Ij4KICAgIDxkaXY+CiAgICAgIDxoMiBzdHlsZT0iZm9udC1zaXplOjEuNHJlbTtjb2xvcjp2YXIoLS1ibHVlKSI+8J+XoyBDb21tdW5pdHkgRm9ydW08L2gyPgogICAgICA8cCBzdHlsZT0iZm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi10b3A6NHB4Ij5Bc2sgcXVlc3Rpb25zLCBzaGFyZSBhbnN3ZXJzLCBoZWxwIGZlbGxvdyBvbGltPC9wPgogICAgPC9kaXY+CiAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwIj4KICAgICAgPHNlbGVjdCBjbGFzcz0ic29ydC1zZWxlY3QiIGlkPSJmb3J1bS1zb3J0IiBvbmNoYW5nZT0icmVuZGVyRm9ydW0oKSI+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibmV3ZXN0Ij7wn5WQIE5ld2VzdDwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9Im1vc3RfYW5zd2VycyI+8J+SrCBNb3N0IFJlc3BvbnNlczwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9ImhpZ2hlc3RfcmF0ZWQiPuKtkCBIaWdoZXN0IFJhdGVkPC9vcHRpb24+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibW9zdF92aWV3ZWQiPvCfkYEgTW9zdCBWaWV3ZWQ8L29wdGlvbj4KICAgICAgPC9zZWxlY3Q+CiAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgb25jbGljaz0idG9nZ2xlQXNrQmFyKCkiIHN0eWxlPSJwYWRkaW5nOjlweCAxNnB4O2ZvbnQtc2l6ZTowLjg4cmVtIj4rIEFzayBhIFF1ZXN0aW9uPC9idXR0b24+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0iYXNrLWJhciIgaWQ9ImFzay1iYXIiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgogICAgPGgzPkFzayBhIE5ldyBRdWVzdGlvbjwvaDM+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InEtdGl0bGUiIHBsYWNlaG9sZGVyPSJZb3VyIHF1ZXN0aW9uIHRpdGxlLi4uIiAvPgogICAgPHRleHRhcmVhIGlkPSJxLWJvZHkiIHBsYWNlaG9sZGVyPSJEZXNjcmliZSB5b3VyIHF1ZXN0aW9uIGluIGRldGFpbC4uLiI+PC90ZXh0YXJlYT4KICAgIDxzZWxlY3QgaWQ9InEtY2F0Ij4KICAgICAgPG9wdGlvbiB2YWx1ZT0iIj5TZWxlY3QgYSBjYXRlZ29yeS4uLjwvb3B0aW9uPgogICAgPC9zZWxlY3Q+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InEtbmFtZSIgcGxhY2Vob2xkZXI9IllvdXIgbmFtZSAob3IgbGVhdmUgYmxhbmsgZm9yIEFub255bW91cykiIC8+CiAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjEwcHgiPgogICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiIG9uY2xpY2s9InN1Ym1pdFF1ZXN0aW9uKCkiIHN0eWxlPSJmbGV4OjEiPlBvc3QgUXVlc3Rpb248L2J1dHRvbj4KICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJjYW5jZWxBc2soKSIgc3R5bGU9ImZsZXg6bm9uZTtwYWRkaW5nOjEycHggMThweDtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWJvcmRlcik7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjFyZW07Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLW11dGVkKSI+4pyVIENhbmNlbDwvYnV0dG9uPgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDxkaXYgaWQ9ImZvcnVtLWxpc3QiPjwvZGl2Pgo8L2Rpdj4KCjwhLS0gQ0FURUdPUlkgUEFHRSAtLT4KPGRpdiBjbGFzcz0icGFnZSIgaWQ9InBhZ2UtY2F0ZWdvcnkiPgogIDxidXR0b24gY2xhc3M9ImJhY2stYnRuIiBvbmNsaWNrPSJzaG93UGFnZSgnZm9ydW0nKSI+4oaQIEJhY2sgdG8gRm9ydW08L2J1dHRvbj4KICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi1ib3R0b206MjBweDtmbGV4LXdyYXA6d3JhcDtnYXA6MTBweCI+CiAgICA8ZGl2PgogICAgICA8aDIgaWQ9ImNhdC1wYWdlLXRpdGxlIiBzdHlsZT0iZm9udC1zaXplOjEuNHJlbTtjb2xvcjp2YXIoLS1ibHVlKSI+PC9oMj4KICAgICAgPHAgaWQ9ImNhdC1wYWdlLWRlc2MiIHN0eWxlPSJmb250LXNpemU6MC44NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLXRvcDo0cHgiPjwvcD4KICAgIDwvZGl2PgogICAgPHNlbGVjdCBjbGFzcz0ic29ydC1zZWxlY3QiIGlkPSJjYXQtc29ydCIgb25jaGFuZ2U9InJlbmRlckNhdGVnb3J5UGFnZSgpIj4KICAgICAgPG9wdGlvbiB2YWx1ZT0ibmV3ZXN0Ij7wn5WQIE5ld2VzdDwvb3B0aW9uPgogICAgICA8b3B0aW9uIHZhbHVlPSJtb3N0X2Fuc3dlcnMiPvCfkqwgTW9zdCBSZXNwb25zZXM8L29wdGlvbj4KICAgICAgPG9wdGlvbiB2YWx1ZT0iaGlnaGVzdF9yYXRlZCI+4q2QIEhpZ2hlc3QgUmF0ZWQ8L29wdGlvbj4KICAgICAgPG9wdGlvbiB2YWx1ZT0ibW9zdF92aWV3ZWQiPvCfkYEgTW9zdCBWaWV3ZWQ8L29wdGlvbj4KICAgIDwvc2VsZWN0PgogIDwvZGl2PgogIDxkaXYgaWQ9ImNhdC1wYWdlLWxpc3QiPjwvZGl2Pgo8L2Rpdj4KCjwhLS0gUVVFU1RJT04gREVUQUlMIC0tPgo8ZGl2IGNsYXNzPSJwYWdlIiBpZD0icGFnZS1xdWVzdGlvbiI+CiAgPGJ1dHRvbiBjbGFzcz0iYmFjay1idG4iIGlkPSJxLWJhY2stYnRuIiBvbmNsaWNrPSJnb0JhY2soKSI+4oaQIEJhY2s8L2J1dHRvbj4KICA8ZGl2IGNsYXNzPSJxLWZ1bGwiIGlkPSJxLWZ1bGwtY29udGVudCI+PC9kaXY+CiAgPGRpdiBjbGFzcz0iYW5zd2Vycy1zZWN0aW9uIj4KICAgIDxoMyBpZD0iYW5zd2Vycy1jb3VudCI+PC9oMz4KICAgIDxkaXYgaWQ9ImFuc3dlcnMtbGlzdCI+PC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iYWRkLWFuc3dlciI+CiAgICA8aDQ+8J+SrCBBZGQgWW91ciBBbnN3ZXI8L2g0PgogICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJhbnMtbmFtZSIgcGxhY2Vob2xkZXI9IllvdXIgbmFtZSAob3IgbGVhdmUgYmxhbmsgZm9yIEFub255bW91cykiIC8+CiAgICA8dGV4dGFyZWEgaWQ9ImFucy1ib2R5IiBwbGFjZWhvbGRlcj0iU2hhcmUgeW91ciBrbm93bGVkZ2Ugb3IgZXhwZXJpZW5jZS4uLiI+PC90ZXh0YXJlYT4KICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgb25jbGljaz0ic3VibWl0QW5zd2VyKCkiPlBvc3QgQW5zd2VyPC9idXR0b24+CiAgPC9kaXY+CjwvZGl2PgoKPCEtLSBCRVNUIE9GIC0tPgo8ZGl2IGNsYXNzPSJwYWdlIiBpZD0icGFnZS1iZXN0b2YiPgogIDxkaXYgY2xhc3M9ImJlc3Qtb2YtaGVhZGVyIj4KICAgIDxoMj7irZAgQmVzdCBPZiBPbGltQW5zd2VyczwvaDI+CiAgICA8cD5UaGUgaGlnaGVzdC1yYXRlZCBxdWVzdGlvbnMgYW5kIGFuc3dlcnMgZnJvbSBvdXIgY29tbXVuaXR5IOKAlCB5b3VyIGdvLXRvIHN0YXJ0aW5nIHBvaW50PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImZpbHRlci1yb3ciPgogICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTowLjg1cmVtO2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS1tdXRlZCkiPkZpbHRlcjo8L3NwYW4+CiAgICA8YnV0dG9uIGNsYXNzPSJmaWx0ZXItYnRuIGFjdGl2ZSIgb25jbGljaz0iZmlsdGVyQmVzdE9mKCdhbGwnLHRoaXMpIj5BbGwgQ2F0ZWdvcmllczwvYnV0dG9uPgogICAgPGRpdiBpZD0iYmVzdG9mLWZpbHRlcnMiPjwvZGl2PgogIDwvZGl2PgogIDxkaXYgaWQ9ImJlc3RvZi1saXN0Ij48L2Rpdj4KPC9kaXY+Cgo8IS0tIENIRUNLTElTVCAtLT4KPGRpdiBjbGFzcz0icGFnZSIgaWQ9InBhZ2UtY2hlY2tsaXN0Ij4KICA8ZGl2IGNsYXNzPSJjaGVja2xpc3QtaW50cm8iPgogICAgPGgyPuKchSBOZXcgT2xlaCBDaGVja2xpc3Q8L2gyPgogICAgPHAgc3R5bGU9ImNvbG9yOnZhcigtLW11dGVkKTtmb250LXNpemU6MC44OHJlbTttYXJnaW4tdG9wOjZweCI+WW91ciBzdGVwLWJ5LXN0ZXAgZ3VpZGUgdG8gc2V0dGxpbmcgaW4gSXNyYWVsLiBDaGVjayBvZmYgaXRlbXMgYXMgeW91IGdvIOKAlCBwcm9ncmVzcyBzYXZlcyBhdXRvbWF0aWNhbGx5LjwvcD4KICA8L2Rpdj4KICA8ZGl2IGlkPSJjaGVja2xpc3QtY29udGVudCI+PC9kaXY+CjwvZGl2PgoKPCEtLSBTRUFSQ0ggLS0+CjxkaXYgY2xhc3M9InBhZ2UiIGlkPSJwYWdlLXNlYXJjaCI+CiAgPGgyIHN0eWxlPSJmb250LXNpemU6MS40cmVtO2NvbG9yOnZhcigtLWJsdWUpO21hcmdpbi1ib3R0b206MTZweCI+8J+UjSBTZWFyY2ggT2xpbUFuc3dlcnM8L2gyPgogIDxkaXYgY2xhc3M9InNlYXJjaC1iYXItYmlnIj4KICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ic2VhcmNoLWlucHV0IiBwbGFjZWhvbGRlcj0iU2VhcmNoIHF1ZXN0aW9ucywgdG9waWNzLCBrZXl3b3Jkcy4uLiIgb25rZXl1cD0iaWYoZXZlbnQua2V5PT09J0VudGVyJylkb1NlYXJjaCgpIiAvPgogICAgPGJ1dHRvbiBvbmNsaWNrPSJkb1NlYXJjaCgpIj5TZWFyY2g8L2J1dHRvbj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIiBzdHlsZT0iZm9udC1zaXplOjFyZW0iPlBvcHVsYXIgVG9waWNzPC9kaXY+CiAgPGRpdiBjbGFzcz0idGFnLWNsb3VkIiBpZD0idGFnLWNsb3VkIj48L2Rpdj4KICA8ZGl2IGlkPSJzZWFyY2gtcmVzdWx0cyI+PC9kaXY+CjwvZGl2PgoKPCEtLSBDQVRFR09SSUVTIC0tPgo8ZGl2IGNsYXNzPSJwYWdlIiBpZD0icGFnZS1jYXRzIj4KICA8aDIgc3R5bGU9ImZvbnQtc2l6ZToxLjRyZW07Y29sb3I6dmFyKC0tYmx1ZSk7bWFyZ2luLWJvdHRvbTo2cHgiPvCfk4IgQ2F0ZWdvcmllczwvaDI+CiAgPHAgc3R5bGU9ImZvbnQtc2l6ZTowLjg1cmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tYm90dG9tOjIwcHgiPkJyb3dzZSBxdWVzdGlvbnMgYnkgdG9waWM8L3A+CiAgPGRpdiBjbGFzcz0iY2F0ZWdvcnktZ3JpZCIgaWQ9ImNhdHMtZ3JpZCI+PC9kaXY+CjwvZGl2PgoKPCEtLSBET05BVEUgLS0+CjxkaXYgY2xhc3M9InBhZ2UiIGlkPSJwYWdlLWRvbmF0ZSI+CiAgPGRpdiBjbGFzcz0iZG9uYXRlLXBhZ2UiPgogICAgPGRpdiBjbGFzcz0iZG9uYXRlLWhlcm8iPgogICAgICA8ZGl2IHN0eWxlPSJmb250LXNpemU6M3JlbTttYXJnaW4tYm90dG9tOjEycHgiPvCfkps8L2Rpdj4KICAgICAgPGgyPlN1cHBvcnQgT2xpbUFuc3dlcnM8L2gyPgogICAgICA8cD5PbGltQW5zd2VycyBpcyBmcmVlIGZvciBldmVyeSBvbGVoLCBmb3JldmVyLiBJdCdzIGJ1aWx0IGFuZCBtYWludGFpbmVkIGJ5IHRoZSBjb21tdW5pdHksIGZvciB0aGUgY29tbXVuaXR5LiBZb3VyIGRvbmF0aW9uIGhlbHBzIGtlZXAgdGhlIGxpZ2h0cyBvbiwgcGF5IGZvciBob3N0aW5nLCBhbmQgYWxsb3dzIHVzIHRvIGdyb3cgYW5kIGltcHJvdmUgdGhlIHNpdGUuPC9wPgogICAgICA8cCBzdHlsZT0ibWFyZ2luLXRvcDoxMHB4O2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtc2l6ZTowLjg1cmVtO2NvbG9yOnZhcigtLW11dGVkKSI+Ikkgd2lzaCB0aGlzIHNpdGUgZXhpc3RlZCB3aGVuIEkgbWFkZSBhbGl5YWguIiDigJQgRXZlcnkgb2xlaCwgZXZlci48L3A+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImRvbmF0ZS1hbW91bnRzIj4KICAgICAgPGJ1dHRvbiBjbGFzcz0iYW1vdW50LWJ0biIgb25jbGljaz0ic2VsZWN0QW1vdW50KHRoaXMsJyQ1JykiPiQ1PC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9ImFtb3VudC1idG4iIG9uY2xpY2s9InNlbGVjdEFtb3VudCh0aGlzLCckMTgnKSI+JDE4IOKcoe+4jzwvYnV0dG9uPgogICAgICA8YnV0dG9uIGNsYXNzPSJhbW91bnQtYnRuIHNlbGVjdGVkIiBvbmNsaWNrPSJzZWxlY3RBbW91bnQodGhpcywnJDM2JykiPiQzNjwvYnV0dG9uPgogICAgICA8YnV0dG9uIGNsYXNzPSJhbW91bnQtYnRuIiBvbmNsaWNrPSJzZWxlY3RBbW91bnQodGhpcywnJDEwMCcpIj4kMTAwPC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9ImFtb3VudC1idG4iIG9uY2xpY2s9InNlbGVjdEFtb3VudCh0aGlzLCdvdGhlcicpIj5PdGhlcjwvYnV0dG9uPgogICAgPC9kaXY+CiAgICA8YnV0dG9uIGNsYXNzPSJkb25hdGUtYnRuLWJpZyIgb25jbGljaz0ic2hvd1RvYXN0KCdUaGFuayB5b3UhIERvbmF0aW9uIGxpbmsgY29taW5nIHNvb24g8J+SmycpIj5Eb25hdGUgdmlhIFBheVBhbDwvYnV0dG9uPgogICAgPHAgc3R5bGU9ImZvbnQtc2l6ZTowLjc4cmVtO2NvbG9yOnZhcigtLW11dGVkKSI+U2VjdXJlIHBheW1lbnQuIEV2ZXJ5IHNoZWtlbCAvIGRvbGxhciBoZWxwcy48L3A+CiAgICA8ZGl2IGNsYXNzPSJkaXZpZGVyIj48L2Rpdj4KICAgIDxwIHN0eWxlPSJmb250LXNpemU6MC44NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLXRvcDoxNnB4Ij5Zb3UgY2FuIGFsc28gc3VwcG9ydCB1cyBieSBzaGFyaW5nIHRoZSBzaXRlIHdpdGggb3RoZXIgb2xpbSwgY29udHJpYnV0aW5nIGFuc3dlcnMsIGFuZCBmbGFnZ2luZyBvdXRkYXRlZCBpbmZvcm1hdGlvbi4gRXZlcnkgYml0IGNvdW50cyE8L3A+CiAgPC9kaXY+CjwvZGl2PgoKPCEtLSBMQU5HIE1PREFMIC0tPgo8ZGl2IGNsYXNzPSJtb2RhbC1vdmVybGF5IiBpZD0ibGFuZy1tb2RhbCI+CiAgPGRpdiBjbGFzcz0ibW9kYWwiPgogICAgPGgzPvCfjJAgQ2hvb3NlIExhbmd1YWdlPC9oMz4KICAgIDxwPkNvbnRlbnQgaXMgYXV0by10cmFuc2xhdGVkLiBGb3IgY3JpdGljYWwgZGVjaXNpb25zLCBhbHdheXMgdmVyaWZ5IHdpdGggb2ZmaWNpYWwgc291cmNlcy48L3A+CiAgICA8ZGl2IGNsYXNzPSJ0cmFuc2xhdGlvbi1ub3RpY2UiPuKaoO+4jyBJc3JhZWxpIGJ1cmVhdWNyYXRpYyB0ZXJtcyAoVGV1ZGF0IFplaHV0LCBNaXNyYWQgSGFwbmltLCBldGMuKSBhcmUga2VwdCBpbiB0aGVpciBvcmlnaW5hbCBmb3JtIHdpdGggdG9vbHRpcHMgdG8gcHJldmVudCBtaXN0cmFuc2xhdGlvbi48L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImxhbmctZ3JpZCIgaWQ9ImxhbmctZ3JpZCI+PC9kaXY+CiAgICA8YnV0dG9uIGNsYXNzPSJtb2RhbC1jbG9zZSIgb25jbGljaz0iY2xvc2VMYW5nTW9kYWwoKSI+Q2xvc2U8L2J1dHRvbj4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJ0b2FzdCIgaWQ9InRvYXN0Ij48L2Rpdj4KCjxzY3JpcHQ+CmNvbnN0IENBVEVHT1JJRVMgPSBbCiAge2lkOidiYW5raW5nJyxpY29uOifwn4+mJyxuYW1lOidCYW5raW5nJyxkZXNjOidBY2NvdW50cywgdHJhbnNmZXJzLCBtb3J0Z2FnZXMnfSwKICB7aWQ6J2hlYWx0aCcsaWNvbjon8J+PpScsbmFtZTonSGVhbHRoIEluc3VyYW5jZScsZGVzYzonS3VwYXQgSG9saW0sIGRvY3RvcnMsIGNvdmVyYWdlJ30sCiAge2lkOid0YXgnLGljb246J/Cfk4onLG5hbWU6J1RheCcsZGVzYzonSW5jb21lIHRheCwgTWFzIEhhY2huYXNhLCBWQVQnfSwKICB7aWQ6J2ludGVybmV0JyxpY29uOifwn5O2JyxuYW1lOidJbnRlcm5ldCAmIFBob25lJyxkZXNjOidQcm92aWRlcnMsIGNvbnRyYWN0cywgU0lNIGNhcmRzJ30sCiAge2lkOidob3VzaW5nJyxpY29uOifwn4+gJyxuYW1lOidIb3VzaW5nJyxkZXNjOidSZW50aW5nLCBidXlpbmcsIEFybm9uYSd9LAogIHtpZDonZ292JyxpY29uOifwn6qqJyxuYW1lOidHb3Zlcm5tZW50ICYgSURzJyxkZXNjOidUZXVkYXQgWmVodXQsIE1pc3JhZCBIYXBuaW0nfSwKICB7aWQ6J2VkdWNhdGlvbicsaWNvbjon8J+OkycsbmFtZTonRWR1Y2F0aW9uJyxkZXNjOidTY2hvb2xzLCB1bHBhbiwgdW5pdmVyc2l0aWVzJ30sCiAge2lkOid0cmFuc3BvcnQnLGljb246J/CfmownLG5hbWU6J1RyYW5zcG9ydCcsZGVzYzonRHJpdmluZyBsaWNlbmNlLCBSYXYtS2F2LCBidXNlcyd9LAogIHtpZDonZW1wbG95bWVudCcsaWNvbjon8J+SvCcsbmFtZTonRW1wbG95bWVudCcsZGVzYzonSm9icywgY29udHJhY3RzLCByaWdodHMnfSwKICB7aWQ6J3NvY2lhbCcsaWNvbjon8J+knScsbmFtZTonU29jaWFsIFNlY3VyaXR5JyxkZXNjOidCaXR1YWNoIExldW1pLCBiZW5lZml0cyd9LAogIHtpZDonY3VsdHVyZScsaWNvbjon8J+VjicsbmFtZTonQ3VsdHVyZSAmIExpZmUnLGRlc2M6J0N1c3RvbXMsIGhvbGlkYXlzLCBjb21tdW5pdHknfSwKICB7aWQ6J290aGVyJyxpY29uOifinZMnLG5hbWU6J090aGVyJyxkZXNjOidBbnl0aGluZyBlbHNlJ30sCl07Cgpjb25zdCBUSVBTID0gWwogICJXaGVuIG9wZW5pbmcgYSBiYW5rIGFjY291bnQgaW4gSXNyYWVsLCBicmluZyB5b3VyIFRldWRhdCBPbGVoLCBwYXNzcG9ydCwgYW5kIHByb29mIG9mIGFkZHJlc3MuIEJhbmsgSGFwb2FsaW0gYW5kIEJhbmsgTGV1bWkgYm90aCBoYXZlIGRlZGljYXRlZCBPbGltIGRlcGFydG1lbnRzIHdpdGggRW5nbGlzaC1zcGVha2luZyBzdGFmZi4iLAogICJSZWdpc3RlciB3aXRoIGEgS3VwYXQgSG9saW0gKGhlYWx0aCBmdW5kKSB3aXRoaW4gMyBtb250aHMgb2YgYXJyaXZpbmcuIFRoZSA0IG9wdGlvbnMgYXJlIENsYWxpdCwgTWFjY2FiaSwgTWV1aGVkZXQsIGFuZCBMZXVtaXQuIFlvdSBjYW4gc3dpdGNoIG9uY2UgYSB5ZWFyIGluIE5vdmVtYmVyLiIsCiAgIlRoZSBUZXVkYXQgWmVodXQgKG5hdGlvbmFsIElEKSBpcyByZXF1aXJlZCBmb3IgYWxtb3N0IGV2ZXJ5dGhpbmcgaW4gSXNyYWVsLiBLZWVwIGEgcGhvdG9jb3B5IGF0IGhvbWUgYW5kIGEgcGhvdG8gb24geW91ciBwaG9uZSBhdCBhbGwgdGltZXMuIiwKICAiQXJub25hIChtdW5pY2lwYWwgdGF4KSBiaWxscyBhcmUgc2VudCB0d2ljZSBhIHllYXIuIE5ldyBvbGltIG1heSBiZSBlbGlnaWJsZSBmb3IgYSBkaXNjb3VudCDigJQgY2hlY2sgd2l0aCB5b3VyIGxvY2FsIG11bmljaXBhbGl0eSB3aXRoaW4gOTAgZGF5cyBvZiBhcnJpdmFsLiIsCiAgIlRvIGNvbnZlcnQgeW91ciBmb3JlaWduIGRyaXZpbmcgbGljZW5jZSBpbiBJc3JhZWwsIHlvdSBtYXkgYmUgZXhlbXB0IGZyb20gdGFraW5nIGEgZnVsbCB0ZXN0IGlmIHlvdXIgY291bnRyeSBoYXMgYSByZWNpcHJvY2FsIGFncmVlbWVudC4gQ2hlY2sgd2l0aCBNaXNyYWQgSGFUYWNoYnVyYS4iLApdOwoKbGV0IHF1ZXN0aW9ucyA9IFsKICB7aWQ6MSx0aXRsZToiSG93IGRvIEkgb3BlbiBhIGJhbmsgYWNjb3VudCBhcyBhIG5ldyBvbGVoPyIsYm9keToiSSBqdXN0IGFycml2ZWQgbGFzdCB3ZWVrIGFuZCBJJ20gdHJ5aW5nIHRvIG9wZW4gYSBiYW5rIGFjY291bnQuIFdoYXQgZG9jdW1lbnRzIGRvIEkgbmVlZCBhbmQgd2hpY2ggYmFuayBpcyBtb3N0IG9sZWgtZnJpZW5kbHk/IixjYXQ6J2JhbmtpbmcnLGF1dGhvcjonU2FyYWggTS4nLGRhdGU6JzIwMjQtMTItMTUnLHZpZXdzOjM0MixsYW5nOidFTicsYW5zd2VyczpbCiAgICB7aWQ6MSxib2R5OiJCYW5rIEhhcG9hbGltIGFuZCBCYW5rIExldW1pIGJvdGggaGF2ZSBkZWRpY2F0ZWQgT2xpbSBjZW50cmVzIHdpdGggRW5nbGlzaCBzcGVha2luZyBzdGFmZi4gQnJpbmcgeW91ciBUZXVkYXQgT2xlaCwgcGFzc3BvcnQsIGFuZCBpZiBwb3NzaWJsZSBhIHByb29mIG9mIGFkZHJlc3MuIFRoZSBwcm9jZXNzIHVzdWFsbHkgdGFrZXMgMS0yIHZpc2l0cy4gTGV1bWkncyBvbmxpbmUgcHJvY2VzcyBoYXMgaW1wcm92ZWQgYSBsb3QgcmVjZW50bHkuIixhdXRob3I6J0RhdmlkIEsuJyxkYXRlOicyMDI0LTEyLTE1Jyx2b3Rlczo0NyxmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOidFTid9LAogICAge2lkOjIsYm9keToiSSB1c2VkIERpc2NvdW50IEJhbmsgYW5kIGhhZCBhIGdyZWF0IGV4cGVyaWVuY2UuIFRoZXkgc2V0IHVwIG15IGFjY291bnQgdGhlIHNhbWUgZGF5IGFuZCBnYXZlIG1lIGFuIEVuZ2xpc2gtbGFuZ3VhZ2UgYXBwLiBBbHNvIHdvcnRoIGFza2luZyBhYm91dCB6ZXJvLWZlZSBhY2NvdW50cyBmb3IgbmV3IG9saW0g4oCUIG1hbnkgYmFua3Mgb2ZmZXIgdGhlbSBmb3IgdGhlIGZpcnN0IHllYXIuIixhdXRob3I6J01pcmlhbSBULicsZGF0ZTonMjAyNC0xMi0xNicsdm90ZXM6MzEsZmxhZ2dlZDpmYWxzZSx1c2VyVm90ZWQ6ZmFsc2UsbGFuZzonRU4nfSwKICBdfSwKICB7aWQ6Mix0aXRsZToiV2hpY2ggS3VwYXQgSG9saW0gc2hvdWxkIEkgam9pbj8iLGJvZHk6IkkgbmVlZCB0byByZWdpc3RlciB3aXRoIGEgaGVhbHRoIGZ1bmQuIFdoYXQgYXJlIHRoZSBtYWluIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGZvdXIgb3B0aW9ucyBhbmQgd2hpY2ggaXMgYmVzdCBmb3IgRW5nbGlzaCBzcGVha2Vycz8iLGNhdDonaGVhbHRoJyxhdXRob3I6J0phbWVzIFIuJyxkYXRlOicyMDI0LTEyLTEwJyx2aWV3czoyODksbGFuZzonRU4nLGFuc3dlcnM6WwogICAge2lkOjEsYm9keToiTWFjY2FiaSBpcyBnZW5lcmFsbHkgY29uc2lkZXJlZCB0aGUgbW9zdCBFbmdsaXNoLWZyaWVuZGx5IGFuZCBoYXMgYSBnb29kIGFwcC4gQ2xhbGl0IGhhcyB0aGUgbW9zdCBkb2N0b3JzIGFuZCBjbGluaWNzIGJ1dCB0aGUgYXBwIGFuZCBzZXJ2aWNlIHF1YWxpdHkgdmFyaWVzLiBNZXVoZWRldCBpcyBzdHJvbmcgaW4gSmVydXNhbGVtLiBMZXVtaXQgaXMgdGhlIHNtYWxsZXN0IGJ1dCBvZnRlbiBoYXMgc2hvcnRlciB3YWl0cy4iLGF1dGhvcjonWWFlbCBTLicsZGF0ZTonMjAyNC0xMi0xMScsdm90ZXM6NTIsZmxhZ2dlZDpmYWxzZSx1c2VyVm90ZWQ6ZmFsc2UsbGFuZzonRU4nfSwKICBdfSwKICB7aWQ6Myx0aXRsZToi15DXmdeaINei15XXkdeTINeQ16jXoNeV16DXlCDXldeQ150g157XkteZ16Ig15zXmSDXlNeg15fXlD8iLGJvZHk6Iten15nXkdec16rXmSDXl9ep15HXldefINeQ16jXoNeV16DXlCDXldeQ16DXmSDXnNeQINeR15jXldeXINeQ15nXmiDXnteX16nXkdeZ150g15DXldeq15Ug15XXkNedINei15XXnNeZ150g15fXk9ep15nXnSDXnten15HXnNeZ150g15TXpNeX16rXlC4iLGNhdDonaG91c2luZycsYXV0aG9yOifXqNeV16DXnyDXkS4nLGRhdGU6JzIwMjQtMTItMDgnLHZpZXdzOjE3OCxsYW5nOidIRScsYW5zd2VyczpbCiAgICB7aWQ6MSxib2R5OiLXkNeo16DXldeg15Qg15TXmdeQINee16Eg16LXmdeo15XXoNeZINep157Xqdec157XmdedINec16LXmdeo15nXlCDXlNee16fXldee15nXqi4g16LXldec15nXnSDXl9eT16nXmdedINeW15vXkNeZ150g15zXlNeg15fXlCAo15HXk9eo15og15vXnNecIDcwLTkwJSkg15zXqdeg15Qg15TXqNeQ16nXldeg15QuINem16jXmdeaINec16TXoNeV16og15zXoteZ16jXmdeUINeU157Xp9eV157XmdeqINei150g16rXoteV15PXqiDXlNei15XXnNeUINeq15XXmiA5MCDXmdeV150g157XlNeS16LXlC4g15DXnCDXqtek16HXpNeh15Ug15DXqiDXlNeX15zXldefINeU15bXlCEiLGF1dGhvcjon15nXotecINepLicsZGF0ZTonMjAyNC0xMi0wOScsdm90ZXM6MzksZmxhZ2dlZDpmYWxzZSx1c2VyVm90ZWQ6ZmFsc2UsbGFuZzonSEUnfSwKICBdfSwKICB7aWQ6NCx0aXRsZToiQmVzdCBtb2JpbGUgcGhvbmUgcHJvdmlkZXIgZm9yIG9saW0/Iixib2R5OiJXaGF0IFNJTSBjYXJkIG9yIGNvbnRyYWN0IHNob3VsZCBJIGdldD8gSSBuZWVkIGdvb2QgZGF0YSBhbmQgYWZmb3JkYWJsZSBjYWxscyB0byB0aGUgVUsuIixjYXQ6J2ludGVybmV0JyxhdXRob3I6J0VtbWEgTC4nLGRhdGU6JzIwMjQtMTItMDUnLHZpZXdzOjIwMSxsYW5nOidFTicsYW5zd2VyczpbCiAgICB7aWQ6MSxib2R5OiJHb2xhbiBUZWxlY29tIGlzIHRoZSBiZXN0IHZhbHVlIGZvciBtb3N0IG9saW0g4oCUIGFyb3VuZCDigqozMC9tb250aCBmb3IgdW5saW1pdGVkIGRhdGEgYW5kIGNhbGxzLiBQYXJ0bmVyIGFuZCBDZWxsY29tIGFyZSBtb3JlIGV4cGVuc2l2ZSBidXQgaGF2ZSBiZXR0ZXIgY292ZXJhZ2UgaW4gc29tZSBhcmVhcy4gRm9yIGludGVybmF0aW9uYWwgY2FsbHMgdG8gdGhlIFVLLCBnZXQgYSBXaGF0c0FwcCBudW1iZXIgb3IgdXNlIEdvbGFuJ3MgaW50ZXJuYXRpb25hbCBhZGQtb24uIixhdXRob3I6J0F2aSBDLicsZGF0ZTonMjAyNC0xMi0wNicsdm90ZXM6MjgsZmxhZ2dlZDpmYWxzZSx1c2VyVm90ZWQ6ZmFsc2UsbGFuZzonRU4nfSwKICBdfSwKXTsKCmxldCBuZXh0UUlkID0gNSwgbmV4dEFJZCA9IDEwOwpsZXQgY3VycmVudENhdCA9IG51bGwsIGN1cnJlbnRRSWQgPSBudWxsLCBwcmV2UGFnZSA9ICdmb3J1bScsIGN1cnJlbnRMYW5nID0gJ0VOJzsKCmNvbnN0IExBTkdTID0gWwogIHtjb2RlOidFTicsZmxhZzon8J+HrPCfh6cnLG5hbWU6J0VuZ2xpc2gnLCAgbmF0aXZlOidFbmdsaXNoJ30sCiAge2NvZGU6J0hFJyxmbGFnOifwn4eu8J+HsScsbmFtZTonSGVicmV3JywgICBuYXRpdmU6J9ei15HXqNeZ16onfSwKICB7Y29kZTonUlUnLGZsYWc6J/Cfh7fwn4e6JyxuYW1lOidSdXNzaWFuJywgIG5hdGl2ZTon0KDRg9GB0YHQutC40LknfSwKICB7Y29kZTonRlInLGZsYWc6J/Cfh6vwn4e3JyxuYW1lOidGcmVuY2gnLCAgIG5hdGl2ZTonRnJhbsOnYWlzJ30sCiAge2NvZGU6J0VTJyxmbGFnOifwn4eq8J+HuCcsbmFtZTonU3BhbmlzaCcsICBuYXRpdmU6J0VzcGHDsW9sJ30sCiAge2NvZGU6J0FSJyxmbGFnOifwn4em8J+HqicsbmFtZTonQXJhYmljJywgICBuYXRpdmU6J9in2YTYudix2KjZitipJ30sCiAge2NvZGU6J0FNJyxmbGFnOifwn4eq8J+HuScsbmFtZTonQW1oYXJpYycsICBuYXRpdmU6J+GKoOGIm+GIreGKmyd9LAogIHtjb2RlOidQVCcsZmxhZzon8J+Hp/Cfh7cnLG5hbWU6J1BvcnR1Z3Vlc2UnLG5hdGl2ZTonUG9ydHVndcOqcyd9LApdOwoKY29uc3QgQ0hFQ0tMSVNUID0gWwogIHtzZWN0aW9uOidGaXJzdCAzMCBEYXlzJywgaWNvbjon8J+agCcsIGl0ZW1zOlsKICAgICdDb2xsZWN0IFRldWRhdCBPbGVoIGZyb20gdGhlIGFpcnBvcnQgb3IgTWlzcmFkIEhhQWxpeWFoJywKICAgICdSZWdpc3RlciBhdCBNaXNyYWQgSGFBbGl5YWggKE1pbmlzdHJ5IG9mIEFsaXlhaCkgZm9yIGJlbmVmaXRzJywKICAgICdBcHBseSBmb3IgVGV1ZGF0IFplaHV0IChOYXRpb25hbCBJRCkgYXQgTWlzcmFkIEhhcG5pbScsCiAgICAnUmVnaXN0ZXIgd2l0aCBhIEt1cGF0IEhvbGltIChoZWFsdGggZnVuZCknLAogICAgJ09wZW4gYSBiYW5rIGFjY291bnQnLAogICAgJ0Vucm9sIGluIFVscGFuIChIZWJyZXcgbGFuZ3VhZ2UgY291cnNlKScsCiAgICAnUmVnaXN0ZXIgY2hpbGRyZW4gYXQgbG9jYWwgc2Nob29sJywKICBdfSwKICB7c2VjdGlvbjonRmlyc3QgMyBNb250aHMnLCBpY29uOifwn5OFJywgaXRlbXM6WwogICAgJ0FwcGx5IGZvciBBcm5vbmEgKG11bmljaXBhbCB0YXgpIGRpc2NvdW50IGF0IGxvY2FsIElyaXlhJywKICAgICdUcmFuc2ZlciBvciBvYnRhaW4gSXNyYWVsaSBkcml2aW5nIGxpY2VuY2UnLAogICAgJ0FwcGx5IGZvciBCaXR1YWNoIExldW1pIChOYXRpb25hbCBJbnN1cmFuY2UpJywKICAgICdTZXQgdXAgaW50ZXJuZXQgYXQgaG9tZScsCiAgICAnUmVnaXN0ZXIgd2l0aCBhIGxvY2FsIGRvY3RvciAo16jXldek15Ag157Xqdek15fXlCknLAogICAgJ0pvaW4gbG9jYWwgb2xpbSBGYWNlYm9vay9XaGF0c0FwcCBncm91cHMnLAogIF19LAogIHtzZWN0aW9uOidGaXJzdCBZZWFyJywgaWNvbjon8J+ThicsIGl0ZW1zOlsKICAgICdGaWxlIHlvdXIgZmlyc3QgSXNyYWVsaSB0YXggcmV0dXJuIGlmIHJlcXVpcmVkJywKICAgICdSZXZpZXcgeW91ciBLdXBhdCBIb2xpbSDigJQgeW91IGNhbiBzd2l0Y2ggZXZlcnkgTm92ZW1iZXInLAogICAgJ0NoZWNrIGVudGl0bGVtZW50IHRvIE9sZWggbW9ydGdhZ2UgYmVuZWZpdHMgKE1pc2hrYW50YSknLAogICAgJ0FwcGx5IGZvciBhbnkgcmVtYWluaW5nIFNhbCBLbGl0YSAoYWJzb3JwdGlvbiBiYXNrZXQpIHBheW1lbnRzJywKICAgICdHZXQgeW91ciBJc3JhZWxpIGRyaXZpbmcgbGljZW5jZSBpZiB5b3UgaGF2ZW5cJ3QgYWxyZWFkeScsCiAgXX0sCl07CgpmdW5jdGlvbiBzaG93UGFnZShwLCBkYXRhKXsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucGFnZScpLmZvckVhY2goeD0+eC5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhZ2UtJytwKS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICBpZihwPT09J2hvbWUnKSByZW5kZXJIb21lQ2F0cygpOwogIGlmKHA9PT0nZm9ydW0nKSByZW5kZXJGb3J1bSgpOwogIGlmKHA9PT0nYmVzdG9mJykgcmVuZGVyQmVzdE9mKCk7CiAgaWYocD09PSdjaGVja2xpc3QnKSByZW5kZXJDaGVja2xpc3QoKTsKICBpZihwPT09J3NlYXJjaCcpIHJlbmRlclRhZ0Nsb3VkKCk7CiAgaWYocD09PSdjYXRzJykgcmVuZGVyQ2F0c1BhZ2UoKTsKICBpZihwPT09J2NhdGVnb3J5JyYmZGF0YSl7Y3VycmVudENhdD1kYXRhO3JlbmRlckNhdGVnb3J5UGFnZSgpO30KICBpZihwPT09J3F1ZXN0aW9uJyYmZGF0YSl7Y3VycmVudFFJZD1kYXRhO3JlbmRlclF1ZXN0aW9uKCk7fQogIHdpbmRvdy5zY3JvbGxUbygwLDApOwp9CgpmdW5jdGlvbiByZW5kZXJIb21lQ2F0cygpewogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdob21lLWNhdHMnKS5pbm5lckhUTUwgPSBDQVRFR09SSUVTLm1hcChjPT5gCiAgICA8ZGl2IGNsYXNzPSJjYXQtY2FyZCIgb25jbGljaz0icHJldlBhZ2U9J2hvbWUnO3Nob3dQYWdlKCdjYXRlZ29yeScsJyR7Yy5pZH0nKSI+CiAgICAgIDxkaXYgY2xhc3M9ImNhdC1pY29uIj4ke2MuaWNvbn08L2Rpdj4KICAgICAgPGg0PiR7Yy5uYW1lfTwvaDQ+CiAgICAgIDxwPiR7Yy5kZXNjfTwvcD4KICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZTowLjcycmVtO2NvbG9yOnZhcigtLWJsdWUpO21hcmdpbi10b3A6NnB4O2ZvbnQtd2VpZ2h0OjYwMCI+JHtxdWVzdGlvbnMuZmlsdGVyKHE9PnEuY2F0PT09Yy5pZCkubGVuZ3RofSBxdWVzdGlvbnM8L3A+CiAgICA8L2Rpdj5gKS5qb2luKCcnKTsKICBjb25zdCB0aXBzID0gVElQUzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGlwLXRleHQnKS50ZXh0Q29udGVudCA9IHRpcHNbTWF0aC5mbG9vcihEYXRlLm5vdygpLzg2NDAwMDAwKSV0aXBzLmxlbmd0aF07Cn0KCmZ1bmN0aW9uIHNvcnRRdWVzdGlvbnMocXMsIG1ldGhvZCl7CiAgcmV0dXJuIFsuLi5xc10uc29ydCgoYSxiKT0+ewogICAgaWYobWV0aG9kPT09J25ld2VzdCcpIHJldHVybiBiLmlkLWEuaWQ7CiAgICBpZihtZXRob2Q9PT0nbW9zdF9hbnN3ZXJzJykgcmV0dXJuIGIuYW5zd2Vycy5sZW5ndGgtYS5hbnN3ZXJzLmxlbmd0aDsKICAgIGlmKG1ldGhvZD09PSdoaWdoZXN0X3JhdGVkJykgcmV0dXJuIG1heFZvdGVzKGIpLW1heFZvdGVzKGEpOwogICAgaWYobWV0aG9kPT09J21vc3Rfdmlld2VkJykgcmV0dXJuIGIudmlld3MtYS52aWV3czsKICAgIHJldHVybiBiLmlkLWEuaWQ7CiAgfSk7Cn0KCmZ1bmN0aW9uIG1heFZvdGVzKHEpe3JldHVybiBxLmFuc3dlcnMubGVuZ3RoP01hdGgubWF4KC4uLnEuYW5zd2Vycy5tYXAoYT0+YS52b3RlcykpOjA7fQpmdW5jdGlvbiBhdmdWb3RlcyhxKXtyZXR1cm4gcS5hbnN3ZXJzLmxlbmd0aD9xLmFuc3dlcnMucmVkdWNlKChzLGEpPT5zK2Eudm90ZXMsMCkvcS5hbnN3ZXJzLmxlbmd0aDowO30KCmZ1bmN0aW9uIHJlbmRlckZvcnVtKCl7CiAgY29uc3Qgc29ydCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb3J1bS1zb3J0Jyk/LnZhbHVlfHwnbmV3ZXN0JzsKICBjb25zdCBxcyA9IHNvcnRRdWVzdGlvbnMocXVlc3Rpb25zLCBzb3J0KTsKICBjb25zdCBjYXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1jYXQnKTsKICBpZihjYXQpIGNhdC5pbm5lckhUTUw9JzxvcHRpb24gdmFsdWU9IiI+U2VsZWN0IGEgY2F0ZWdvcnkuLi48L29wdGlvbj4nK0NBVEVHT1JJRVMubWFwKGM9PmA8b3B0aW9uIHZhbHVlPSIke2MuaWR9Ij4ke2MuaWNvbn0gJHtjLm5hbWV9PC9vcHRpb24+YCkuam9pbignJyk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZvcnVtLWxpc3QnKS5pbm5lckhUTUwgPSBxcy5sZW5ndGggPyBxcy5tYXAocT0+cUNhcmQocSwnZm9ydW0nKSkuam9pbignJykgOiBlbXB0eVN0YXRlKCdObyBxdWVzdGlvbnMgeWV0LiBCZSB0aGUgZmlyc3QgdG8gYXNrIScpOwp9CgpmdW5jdGlvbiByZW5kZXJDYXRlZ29yeVBhZ2UoKXsKICBjb25zdCBjYXQgPSBDQVRFR09SSUVTLmZpbmQoYz0+Yy5pZD09PWN1cnJlbnRDYXQpOwogIGlmKCFjYXQpIHJldHVybjsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0LXBhZ2UtdGl0bGUnKS50ZXh0Q29udGVudCA9IGNhdC5pY29uKycgJytjYXQubmFtZTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0LXBhZ2UtZGVzYycpLnRleHRDb250ZW50ID0gY2F0LmRlc2M7CiAgY29uc3Qgc29ydCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXQtc29ydCcpPy52YWx1ZXx8J25ld2VzdCc7CiAgY29uc3QgcXMgPSBzb3J0UXVlc3Rpb25zKHF1ZXN0aW9ucy5maWx0ZXIocT0+cS5jYXQ9PT1jdXJyZW50Q2F0KSwgc29ydCk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdC1wYWdlLWxpc3QnKS5pbm5lckhUTUwgPSBxcy5sZW5ndGggPyBxcy5tYXAocT0+cUNhcmQocSwnY2F0ZWdvcnknKSkuam9pbignJykgOiBlbXB0eVN0YXRlKCdObyBxdWVzdGlvbnMgaW4gdGhpcyBjYXRlZ29yeSB5ZXQuJyk7Cn0KCmZ1bmN0aW9uIHFDYXJkKHEsZnJvbSl7CiAgY29uc3QgdG9wVm90ZXMgPSBxLmFuc3dlcnMubGVuZ3RoP01hdGgubWF4KC4uLnEuYW5zd2Vycy5tYXAoYT0+YS52b3RlcykpOjA7CiAgY29uc3QgY2F0ID0gQ0FURUdPUklFUy5maW5kKGM9PmMuaWQ9PT1xLmNhdCk7CiAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJxLWNhcmQiIG9uY2xpY2s9InByZXZQYWdlPScke2Zyb219JztzaG93UGFnZSgncXVlc3Rpb24nLCR7cS5pZH0pIj4KICAgIDxkaXYgY2xhc3M9InEtbWV0YSI+CiAgICAgIDxzcGFuIGNsYXNzPSJxLWNhdC1iYWRnZSI+JHtjYXQ/Y2F0Lmljb24rJyAnK2NhdC5uYW1lOnEuY2F0fTwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InEtYXV0aG9yIj7wn5GkICR7cS5hdXRob3J9PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icS1kYXRlIj7wn5OFICR7cS5kYXRlfTwvc3Bhbj4KICAgICAgJHt0b3BWb3Rlcz49MzA/YDxzcGFuIGNsYXNzPSJmZWF0dXJlZC1iYWRnZSI+4q2QIEZlYXR1cmVkPC9zcGFuPmA6Jyd9CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9InEtdGl0bGUiPiR7cS50aXRsZX08L2Rpdj4KICAgIDxkaXYgY2xhc3M9InEtcHJldmlldyI+JHtxLmJvZHkuc3Vic3RyaW5nKDAsMTIwKX0ke3EuYm9keS5sZW5ndGg+MTIwPycuLi4nOicnfTwvZGl2PgogICAgPGRpdiBjbGFzcz0icS1zdGF0cyI+CiAgICAgIDxzcGFuPvCfkqwgJHtxLmFuc3dlcnMubGVuZ3RofSBhbnN3ZXIke3EuYW5zd2Vycy5sZW5ndGghPT0xPydzJzonJ308L3NwYW4+CiAgICAgIDxzcGFuPvCfkYEgJHtxLnZpZXdzfSB2aWV3czwvc3Bhbj4KICAgICAgPHNwYW4+4q2QIFRvcCB2b3RlOiAke3RvcFZvdGVzfTwvc3Bhbj4KICAgIDwvZGl2PgogICAgPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDo2cHgiPiR7bGFuZ0JhZGdlKHEubGFuZyl9PC9kaXY+CiAgPC9kaXY+YDsKfQoKZnVuY3Rpb24gcmVuZGVyUXVlc3Rpb24oKXsKICBjb25zdCBxID0gcXVlc3Rpb25zLmZpbmQoeD0+eC5pZD09PWN1cnJlbnRRSWQpOwogIGlmKCFxKXtyZXR1cm47fQogIHEudmlld3MrKzsKICBjb25zdCBjYXQgPSBDQVRFR09SSUVTLmZpbmQoYz0+Yy5pZD09PXEuY2F0KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1mdWxsLWNvbnRlbnQnKS5pbm5lckhUTUw9YAogICAgPGRpdiBjbGFzcz0icS1tZXRhIiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxMnB4Ij4KICAgICAgPHNwYW4gY2xhc3M9InEtY2F0LWJhZGdlIiBzdHlsZT0iY3Vyc29yOnBvaW50ZXIiIG9uY2xpY2s9InNob3dQYWdlKCdjYXRlZ29yeScsJyR7cS5jYXR9JykiPiR7Y2F0P2NhdC5pY29uKycgJytjYXQubmFtZTpxLmNhdH08L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJxLWF1dGhvciI+8J+RpCAke3EuYXV0aG9yfTwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InEtZGF0ZSI+8J+ThSAke3EuZGF0ZX08L3NwYW4+CiAgICA8L2Rpdj4KICAgIDxoMj4ke3EudGl0bGV9PC9oMj4KICAgIDxkaXYgY2xhc3M9ImJvZHkiIHN0eWxlPSJtYXJnaW4tdG9wOjEycHgiPiR7cS5ib2R5fTwvZGl2PmA7CiAgY29uc3Qgc29ydGVkID0gWy4uLnEuYW5zd2Vyc10uc29ydCgoYSxiKT0+Yi52b3Rlcy1hLnZvdGVzKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zd2Vycy1jb3VudCcpLnRleHRDb250ZW50ID0gYCR7cS5hbnN3ZXJzLmxlbmd0aH0gQW5zd2VyJHtxLmFuc3dlcnMubGVuZ3RoIT09MT8ncyc6Jyd9YDsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zd2Vycy1saXN0JykuaW5uZXJIVE1MID0gc29ydGVkLmxlbmd0aCA/IHNvcnRlZC5tYXAoKGEsaSk9PmAKICAgIDxkaXYgY2xhc3M9ImFuc3dlci1jYXJkICR7aT09PTAmJmEudm90ZXM+MD8ndG9wLWFuc3dlcic6Jyd9Ij4KICAgICAgJHtpPT09MCYmYS52b3Rlcz4wPyc8ZGl2IGNsYXNzPSJ0b3AtYW5zd2VyLWxhYmVsIj7irZAgVG9wIEFuc3dlcjwvZGl2Pic6Jyd9CiAgICAgIDxkaXYgY2xhc3M9ImFuc3dlci1ib2R5Ij4ke2EuYm9keX08L2Rpdj4KICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbTo4cHgiPiR7bGFuZ0JhZGdlKGEubGFuZyl9PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImFuc3dlci1mb290ZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImFuc3dlci1tZXRhIj7wn5GkICR7YS5hdXRob3J9IMK3IPCfk4UgJHthLmRhdGV9PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0idm90ZS1idG5zIj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9InZvdGUtYnRuICR7YS51c2VyVm90ZWQ/J2xpa2VkJzonJ30iIG9uY2xpY2s9InZvdGUoJHtxLmlkfSwke2EuaWR9KSI+CiAgICAgICAgICAgIPCfkY0gJHthLnZvdGVzfQogICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJmbGFnLWJ0biIgb25jbGljaz0iZmxhZ0Fuc3dlcigke3EuaWR9LCR7YS5pZH0pIj7wn5qpICR7YS5mbGFnZ2VkPydGbGFnZ2VkJzonRmxhZyd9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICAke2EuZmxhZ2dlZD8nPGRpdiBzdHlsZT0iZm9udC1zaXplOjAuNzVyZW07Y29sb3I6dmFyKC0tcmVkKTttYXJnaW4tdG9wOjhweCI+4pqg77iPIFRoaXMgYW5zd2VyIGhhcyBiZWVuIGZsYWdnZWQgZm9yIHJldmlldy4gUGxlYXNlIHZlcmlmeSB3aXRoIG9mZmljaWFsIHNvdXJjZXMuPC9kaXY+JzonJ30KICAgIDwvZGl2PmApLmpvaW4oJycpIDogJzxkaXYgY2xhc3M9ImVtcHR5LXN0YXRlIj48ZGl2IGNsYXNzPSJpY29uIj7wn5KsPC9kaXY+PHA+Tm8gYW5zd2VycyB5ZXQuIEJlIHRoZSBmaXJzdCB0byBoZWxwITwvcD48L2Rpdj4nOwp9CgpmdW5jdGlvbiBnb0JhY2soKXtzaG93UGFnZShwcmV2UGFnZT09PSdjYXRlZ29yeSc/J2NhdGVnb3J5JzonZm9ydW0nLCBwcmV2UGFnZT09PSdjYXRlZ29yeSc/Y3VycmVudENhdDpudWxsKTt9CgpmdW5jdGlvbiB0b2dnbGVBc2tCYXIoKXsKICBjb25zdCBiID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fzay1iYXInKTsKICBiLnN0eWxlLmRpc3BsYXkgPSBiLnN0eWxlLmRpc3BsYXk9PT0nbm9uZSc/J2Jsb2NrJzonbm9uZSc7Cn0KZnVuY3Rpb24gY2FuY2VsQXNrKCl7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtdGl0bGUnKS52YWx1ZT0nJzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1ib2R5JykudmFsdWU9Jyc7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtY2F0JykudmFsdWU9Jyc7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtbmFtZScpLnZhbHVlPScnOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhc2stYmFyJykuc3R5bGUuZGlzcGxheT0nbm9uZSc7Cn0KZnVuY3Rpb24gcmVuZGVyQ2F0c1BhZ2UoKXsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0cy1ncmlkJykuaW5uZXJIVE1MID0gQ0FURUdPUklFUy5tYXAoYz0+YAogICAgPGRpdiBjbGFzcz0iY2F0LWNhcmQiIG9uY2xpY2s9InByZXZQYWdlPSdjYXRzJztzaG93UGFnZSgnY2F0ZWdvcnknLCcke2MuaWR9JykiPgogICAgICA8ZGl2IGNsYXNzPSJjYXQtaWNvbiI+JHtjLmljb259PC9kaXY+CiAgICAgIDxoND4ke2MubmFtZX08L2g0PgogICAgICA8cD4ke2MuZGVzY308L3A+CiAgICAgIDxwIHN0eWxlPSJmb250LXNpemU6MC43MnJlbTtjb2xvcjp2YXIoLS1ibHVlKTttYXJnaW4tdG9wOjZweDtmb250LXdlaWdodDo2MDAiPiR7cXVlc3Rpb25zLmZpbHRlcihxPT5xLmNhdD09PWMuaWQpLmxlbmd0aH0gcXVlc3Rpb25zPC9wPgogICAgPC9kaXY+YCkuam9pbignJyk7Cn0KCmZ1bmN0aW9uIHN1Ym1pdFF1ZXN0aW9uKCl7CiAgY29uc3QgdGl0bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS10aXRsZScpLnZhbHVlLnRyaW0oKTsKICBjb25zdCBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtYm9keScpLnZhbHVlLnRyaW0oKTsKICBjb25zdCBjYXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1jYXQnKS52YWx1ZTsKICBjb25zdCBuYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtbmFtZScpLnZhbHVlLnRyaW0oKXx8J0Fub255bW91cyc7CiAgaWYoIXRpdGxlfHwhYm9keXx8IWNhdCl7c2hvd1RvYXN0KCdQbGVhc2UgZmlsbCBpbiBhbGwgZmllbGRzIOKdjCcpO3JldHVybjt9CiAgcXVlc3Rpb25zLnVuc2hpZnQoe2lkOm5leHRRSWQrKyx0aXRsZSxib2R5LGNhdCxhdXRob3I6bmFtZSxkYXRlOm5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zbGljZSgwLDEwKSx2aWV3czowLGxhbmc6Y3VycmVudExhbmcsYW5zd2VyczpbXX0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLXRpdGxlJykudmFsdWU9Jyc7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtYm9keScpLnZhbHVlPScnOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLWNhdCcpLnZhbHVlPScnOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLW5hbWUnKS52YWx1ZT0nJzsKICB0b2dnbGVBc2tCYXIoKTsKICByZW5kZXJGb3J1bSgpOwogIHNob3dUb2FzdCgnUXVlc3Rpb24gcG9zdGVkISDinIUnKTsKfQoKZnVuY3Rpb24gc3VibWl0QW5zd2VyKCl7CiAgY29uc3QgcSA9IHF1ZXN0aW9ucy5maW5kKHg9PnguaWQ9PT1jdXJyZW50UUlkKTsKICBpZighcSkgcmV0dXJuOwogIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zLWJvZHknKS52YWx1ZS50cmltKCk7CiAgY29uc3QgbmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbnMtbmFtZScpLnZhbHVlLnRyaW0oKXx8J0Fub255bW91cyc7CiAgaWYoIWJvZHkpe3Nob3dUb2FzdCgnUGxlYXNlIHdyaXRlIGFuIGFuc3dlciDinYwnKTtyZXR1cm47fQogIHEuYW5zd2Vycy5wdXNoKHtpZDpuZXh0QUlkKyssYm9keSxhdXRob3I6bmFtZSxkYXRlOm5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zbGljZSgwLDEwKSx2b3RlczowLGZsYWdnZWQ6ZmFsc2UsdXNlclZvdGVkOmZhbHNlLGxhbmc6Y3VycmVudExhbmd9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zLWJvZHknKS52YWx1ZT0nJzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zLW5hbWUnKS52YWx1ZT0nJzsKICByZW5kZXJRdWVzdGlvbigpOwogIHNob3dUb2FzdCgnQW5zd2VyIHBvc3RlZCEg4pyFJyk7Cn0KCmZ1bmN0aW9uIHZvdGUocUlkLGFJZCl7CiAgY29uc3QgcSA9IHF1ZXN0aW9ucy5maW5kKHg9PnguaWQ9PT1xSWQpOwogIGNvbnN0IGEgPSBxPy5hbnN3ZXJzLmZpbmQoeD0+eC5pZD09PWFJZCk7CiAgaWYoIWEpIHJldHVybjsKICBhLnVzZXJWb3RlZD0hYS51c2VyVm90ZWQ7CiAgYS52b3Rlcys9YS51c2VyVm90ZWQ/MTotMTsKICByZW5kZXJRdWVzdGlvbigpOwp9CgpmdW5jdGlvbiBmbGFnQW5zd2VyKHFJZCxhSWQpewogIGNvbnN0IHEgPSBxdWVzdGlvbnMuZmluZCh4PT54LmlkPT09cUlkKTsKICBjb25zdCBhID0gcT8uYW5zd2Vycy5maW5kKHg9PnguaWQ9PT1hSWQpOwogIGlmKCFhKSByZXR1cm47CiAgYS5mbGFnZ2VkPSFhLmZsYWdnZWQ7CiAgcmVuZGVyUXVlc3Rpb24oKTsKICBzaG93VG9hc3QoYS5mbGFnZ2VkPydBbnN3ZXIgZmxhZ2dlZCBmb3IgcmV2aWV3IPCfmqknOidGbGFnIHJlbW92ZWQnKTsKfQoKZnVuY3Rpb24gcmVuZGVyQmVzdE9mKGZpbHRlckNhdCl7CiAgY29uc3QgZmlsdGVycyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZXN0b2YtZmlsdGVycycpOwogIGZpbHRlcnMuaW5uZXJIVE1MID0gQ0FURUdPUklFUy5tYXAoYz0+YDxidXR0b24gY2xhc3M9ImZpbHRlci1idG4iIG9uY2xpY2s9ImZpbHRlckJlc3RPZignJHtjLmlkfScsdGhpcykiPiR7Yy5pY29ufSAke2MubmFtZX08L2J1dHRvbj5gKS5qb2luKCcnKTsKICBjb25zdCB0aHJlc2hvbGQgPSAyMDsKICBsZXQgcXMgPSBxdWVzdGlvbnMuZmlsdGVyKHE9Pm1heFZvdGVzKHEpPj10aHJlc2hvbGQgfHwgYXZnVm90ZXMocSk+PTE1KTsKICBpZihmaWx0ZXJDYXQmJmZpbHRlckNhdCE9PSdhbGwnKSBxcz1xcy5maWx0ZXIocT0+cS5jYXQ9PT1maWx0ZXJDYXQpOwogIHFzLnNvcnQoKGEsYik9Pm1heFZvdGVzKGIpLW1heFZvdGVzKGEpKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmVzdG9mLWxpc3QnKS5pbm5lckhUTUwgPSBxcy5sZW5ndGgKICAgID8gYDxwIHN0eWxlPSJmb250LXNpemU6MC44MnJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLWJvdHRvbToxNnB4Ij5TaG93aW5nICR7cXMubGVuZ3RofSBoaWdobHktcmF0ZWQgcXVlc3Rpb24ke3FzLmxlbmd0aCE9PTE/J3MnOicnfTwvcD5gK3FzLm1hcChxPT5xQ2FyZChxLCdiZXN0b2YnKSkuam9pbignJykKICAgIDogZW1wdHlTdGF0ZSgnQXMgdGhlIGNvbW11bml0eSBncm93cywgdG9wLXJhdGVkIGFuc3dlcnMgd2lsbCBhcHBlYXIgaGVyZS4gU3RhcnQgYW5zd2VyaW5nIHF1ZXN0aW9ucyEnKTsKfQoKZnVuY3Rpb24gZmlsdGVyQmVzdE9mKGNhdCxidG4pewogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5maWx0ZXItYnRuJykuZm9yRWFjaChiPT5iLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpKTsKICBpZihidG4pIGJ0bi5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICByZW5kZXJCZXN0T2YoY2F0PT09J2FsbCc/bnVsbDpjYXQpOwp9CgpmdW5jdGlvbiByZW5kZXJDaGVja2xpc3QoKXsKICBjb25zdCBzYXZlZCA9IHt9OwogIHRyeXtjb25zdCBzPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NoZWNrbGlzdCcpO2lmKHMpT2JqZWN0LmFzc2lnbihzYXZlZCxKU09OLnBhcnNlKHMpKTt9Y2F0Y2goZSl7fQogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGVja2xpc3QtY29udGVudCcpLmlubmVySFRNTCA9IENIRUNLTElTVC5tYXAoKHMsc2kpPT5gCiAgICA8ZGl2IGNsYXNzPSJjaGVja2xpc3Qtc2VjdGlvbiI+CiAgICAgIDxoMz4ke3MuaWNvbn0gJHtzLnNlY3Rpb259PC9oMz4KICAgICAgJHtzLml0ZW1zLm1hcCgoaXRlbSxpaSk9PnsKICAgICAgICBjb25zdCBrZXk9YCR7c2l9LSR7aWl9YDsKICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9ImNoZWNrbGlzdC1pdGVtIj4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImNoay0ke2tleX0iICR7c2F2ZWRba2V5XT8nY2hlY2tlZCc6Jyd9IG9uY2hhbmdlPSJzYXZlQ2hlY2soJyR7a2V5fScsdGhpcy5jaGVja2VkKSIgLz4KICAgICAgICAgIDxsYWJlbCBmb3I9ImNoay0ke2tleX0iPiR7aXRlbX08L2xhYmVsPgogICAgICAgIDwvZGl2PmA7CiAgICAgIH0pLmpvaW4oJycpfQogICAgPC9kaXY+YCkuam9pbignJyk7Cn0KCmZ1bmN0aW9uIHNhdmVDaGVjayhrZXksdmFsKXsKICB0cnl7CiAgICBjb25zdCBzPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NoZWNrbGlzdCcpOwogICAgY29uc3QgZGF0YT1zP0pTT04ucGFyc2Uocyk6e307CiAgICBkYXRhW2tleV09dmFsOwogICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnY2hlY2tsaXN0JyxKU09OLnN0cmluZ2lmeShkYXRhKSk7CiAgfWNhdGNoKGUpe30KfQoKZnVuY3Rpb24gcmVuZGVyVGFnQ2xvdWQoKXsKICBjb25zdCB0YWdzPVsnQmFua2luZycsJ0hlYWx0aCBJbnN1cmFuY2UnLCdUZXVkYXQgWmVodXQnLCdLdXBhdCBIb2xpbScsJ1RheCcsJ0Fybm9uYScsJ0JpdHVhY2ggTGV1bWknLCdVbHBhbicsJ0ludGVybmV0JywnUGhvbmUnLCdIb3VzaW5nJywnRHJpdmluZyBMaWNlbmNlJywnU2Nob29sJywnRW1wbG95bWVudCcsJ01pc3JhZCBIYXBuaW0nXTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFnLWNsb3VkJykuaW5uZXJIVE1MPXRhZ3MubWFwKHQ9PmA8c3BhbiBjbGFzcz0idGFnLWNsb3VkLWl0ZW0iIG9uY2xpY2s9InNlYXJjaFRhZygnJHt0fScpIj4ke3R9PC9zcGFuPmApLmpvaW4oJycpOwp9CgpmdW5jdGlvbiBzZWFyY2hUYWcodCl7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlYXJjaC1pbnB1dCcpLnZhbHVlPXQ7CiAgZG9TZWFyY2goKTsKfQoKZnVuY3Rpb24gZG9TZWFyY2goKXsKICBjb25zdCB0ZXJtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlYXJjaC1pbnB1dCcpLnZhbHVlLnRvTG93ZXJDYXNlKCkudHJpbSgpOwogIGlmKCF0ZXJtKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoLXJlc3VsdHMnKS5pbm5lckhUTUw9Jyc7cmV0dXJuO30KICBjb25zdCByZXN1bHRzID0gcXVlc3Rpb25zLmZpbHRlcihxPT4KICAgIHEudGl0bGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKXx8CiAgICBxLmJvZHkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKXx8CiAgICBxLmFuc3dlcnMuc29tZShhPT5hLmJvZHkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSl8fAogICAgKENBVEVHT1JJRVMuZmluZChjPT5jLmlkPT09cS5jYXQpPy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSkpCiAgKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoLXJlc3VsdHMnKS5pbm5lckhUTUwgPSByZXN1bHRzLmxlbmd0aAogICAgPyBgPHAgc3R5bGU9ImZvbnQtc2l6ZTowLjgycmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tYm90dG9tOjE2cHgiPiR7cmVzdWx0cy5sZW5ndGh9IHJlc3VsdCR7cmVzdWx0cy5sZW5ndGghPT0xPydzJzonJ30gZm9yICI8c3Ryb25nPiR7dGVybX08L3N0cm9uZz4iPC9wPmArcmVzdWx0cy5tYXAocT0+cUNhcmQocSwnc2VhcmNoJykpLmpvaW4oJycpCiAgICA6IGA8ZGl2IGNsYXNzPSJlbXB0eS1zdGF0ZSI+PGRpdiBjbGFzcz0iaWNvbiI+8J+UjTwvZGl2PjxwPk5vIHJlc3VsdHMgZm91bmQgZm9yICI8c3Ryb25nPiR7dGVybX08L3N0cm9uZz4iLiBUcnkgYSBkaWZmZXJlbnQga2V5d29yZCBvciA8YSBocmVmPSIjIiBvbmNsaWNrPSJzaG93UGFnZSgnZm9ydW0nKTtyZXR1cm4gZmFsc2U7IiBzdHlsZT0iY29sb3I6dmFyKC0tYmx1ZSkiPmFzayBhIHF1ZXN0aW9uPC9hPiE8L3A+PC9kaXY+YDsKfQoKZnVuY3Rpb24gbGFuZ0ZsYWcoY29kZSl7cmV0dXJuIChMQU5HUy5maW5kKGw9PmwuY29kZT09PWNvZGUpfHx7ZmxhZzon8J+MkCd9KS5mbGFnO30KZnVuY3Rpb24gbGFuZ05hbWUoY29kZSl7cmV0dXJuIChMQU5HUy5maW5kKGw9PmwuY29kZT09PWNvZGUpfHx7bmFtZTpjb2RlfSkubmFtZTt9CmZ1bmN0aW9uIGxhbmdOYXRpdmUoY29kZSl7cmV0dXJuIChMQU5HUy5maW5kKGw9PmwuY29kZT09PWNvZGUpfHx7bmF0aXZlOmNvZGV9KS5uYXRpdmU7fQpmdW5jdGlvbiBsYW5nQmFkZ2UoaXRlbUxhbmcpewogIGNvbnN0IHRyYW5zbGF0ZWQgPSBpdGVtTGFuZyAmJiBpdGVtTGFuZyE9PWN1cnJlbnRMYW5nOwogIGlmKCFpdGVtTGFuZykgcmV0dXJuICcnOwogIHJldHVybiBgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTowLjcycmVtO2NvbG9yOnZhcigtLW11dGVkKTtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4O21hcmdpbi10b3A6NHB4Ij4KICAgIE9yaWdpbmFsbHkgaW4gJHtsYW5nTmF0aXZlKGl0ZW1MYW5nKX0ke3RyYW5zbGF0ZWQ/JyDCtyA8c3BhbiBzdHlsZT0iY29sb3I6dmFyKC0tYmx1ZSk7Zm9udC13ZWlnaHQ6NjAwIj7wn5SEIEF1dG8tdHJhbnNsYXRlZDwvc3Bhbj4nOicnfQogIDwvc3Bhbj5gOwp9CmZ1bmN0aW9uIG9wZW5MYW5nTW9kYWwoKXsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFuZy1tb2RhbCcpLmNsYXNzTGlzdC5hZGQoJ29wZW4nKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFuZy1ncmlkJykuaW5uZXJIVE1MPUxBTkdTLm1hcChsPT5gPGRpdiBjbGFzcz0ibGFuZy1vcHRpb24gJHtsLmNvZGU9PT1jdXJyZW50TGFuZz8nYWN0aXZlJzonJ30iIG9uY2xpY2s9InNlbGVjdExhbmcoJyR7bC5jb2RlfScsdGhpcykiPiR7bC5uYXRpdmV9PC9kaXY+YCkuam9pbignJyk7Cn0KZnVuY3Rpb24gY2xvc2VMYW5nTW9kYWwoKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFuZy1tb2RhbCcpLmNsYXNzTGlzdC5yZW1vdmUoJ29wZW4nKTt9CmZ1bmN0aW9uIHNlbGVjdExhbmcoY29kZSxlbCl7CiAgY3VycmVudExhbmc9Y29kZTsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubGFuZy1vcHRpb24nKS5mb3JFYWNoKHg9PnguY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJykpOwogIGVsLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5sYW5nLWJ0bicpLnRleHRDb250ZW50PWxhbmdGbGFnKGNvZGUpOwogIHNldFRpbWVvdXQoKCk9PntjbG9zZUxhbmdNb2RhbCgpO3Nob3dUb2FzdCgnTGFuZ3VhZ2Ugc2V0IHRvICcrbGFuZ05hbWUoY29kZSkrJyDigJQgYXV0by10cmFuc2xhdGlvbiBhY3RpdmUg8J+MkCcpO30sMzAwKTsKfQoKZnVuY3Rpb24gc2VsZWN0QW1vdW50KGJ0bix2KXsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuYW1vdW50LWJ0bicpLmZvckVhY2goYj0+Yi5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpKTsKICBidG4uY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKTsKfQoKZnVuY3Rpb24gc2hvd1RvYXN0KG1zZyl7CiAgY29uc3QgdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9hc3QnKTsKICB0LnRleHRDb250ZW50PW1zZzt0LmNsYXNzTGlzdC5hZGQoJ3Nob3cnKTsKICBzZXRUaW1lb3V0KCgpPT50LmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKSwzMDAwKTsKfQpmdW5jdGlvbiBlbXB0eVN0YXRlKG1zZyl7cmV0dXJuIGA8ZGl2IGNsYXNzPSJlbXB0eS1zdGF0ZSI+PGRpdiBjbGFzcz0iaWNvbiI+8J+SrDwvZGl2PjxwPiR7bXNnfTwvcD48L2Rpdj5gO30KCi8vIEluaXQKcmVuZGVySG9tZUNhdHMoKTsKPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPhIkNDcxNTZlZGQtMWE0Ny00ODgzLTgzNmUtMzRlMjUzNzQ3ZDcwGgAgAUKrkwV7InR5cGUiOiJkb2MiLCJjb250ZW50IjpbeyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiPCFET0NUWVBFIGh0bWw+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiI8aHRtbCBsYW5nPVwiZW5cIj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IjxoZWFkPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiPG1ldGEgY2hhcnNldD1cIlVURi04XCI+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiI8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMFwiPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiPHRpdGxlPk9saW1BbnN3ZXJzLmNvbTwvdGl0bGU+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiI8c3R5bGU+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIDpyb290IHsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAtLWJsdWU6IzFhNWZhODstLWJsdWUtbGlnaHQ6I2U4ZjBmYjstLWdvbGQ6I2YwYjQyOTstLWdvbGQtbGlnaHQ6I2ZmZjhlNzsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAtLWdyZWVuOiMxYThhNGE7LS1yZWQ6I2MwMzkyYjstLWdyYXk6I2Y0ZjZmOTstLXRleHQ6IzFhMWEyZTstLW11dGVkOiM2YjcyODA7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgLS1ib3JkZXI6I2RkZTNlZDstLXdoaXRlOiNmZmZmZmY7LS1zaGFkb3c6MCAycHggMTJweCByZ2JhKDAsMCwwLDAuMDgpOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICB9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICp7Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbjowO3BhZGRpbmc6MH0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgYm9keXtmb250LWZhbWlseTonU2Vnb2UgVUknLHN5c3RlbS11aSxzYW5zLXNlcmlmO2NvbG9yOnZhcigtLXRleHQpO2JhY2tncm91bmQ6dmFyKC0tZ3JheSk7bWluLWhlaWdodDoxMDB2aH0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLyogTkFWICovIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIG5hdntiYWNrZ3JvdW5kOnZhcigtLWJsdWUpO2NvbG9yOiNmZmY7cGFkZGluZzowIDI0cHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtoZWlnaHQ6NjBweDtwb3NpdGlvbjpzdGlja3k7dG9wOjA7ei1pbmRleDoxMDA7Ym94LXNoYWRvdzowIDJweCA4cHggcmdiYSgwLDAsMCwwLjIpfSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAubmF2LWxvZ297Zm9udC1zaXplOjEuNDVyZW07Zm9udC13ZWlnaHQ6ODAwO2N1cnNvcjpwb2ludGVyO2xldHRlci1zcGFjaW5nOi0wLjVweDtsaW5lLWhlaWdodDoxLjE7bWFyZ2luLXJpZ2h0OjEycHg7ZmxleC1zaHJpbms6MH0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLm5hdi1sb2dvIHNwYW57ZGlzcGxheTpibG9jaztmb250LXNpemU6MC43OHJlbTtmb250LXdlaWdodDo1MDA7bGV0dGVyLXNwYWNpbmc6MS41cHg7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO29wYWNpdHk6MC44NX0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLm5hdi1sb2dvOmhvdmVye29wYWNpdHk6MC44NX0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLm5hdi1sb2dvIHNwYW57Y29sb3I6dmFyKC0tZ29sZCl9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5uYXYtbGlua3N7ZGlzcGxheTpmbGV4O2dhcDo2cHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwfSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAubmF2LWxpbmtzIGJ1dHRvbntiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Y29sb3I6I2ZmZjtwYWRkaW5nOjZweCAxMHB4O2JvcmRlci1yYWRpdXM6NnB4O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjgycmVtO2ZvbnQtd2VpZ2h0OjUwMDt0cmFuc2l0aW9uOmJhY2tncm91bmQgMC4yc30ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLm5hdi1saW5rcyBidXR0b246aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuMTUpfSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAubmF2LWxpbmtzIC5uYXYtZG9uYXRle2JhY2tncm91bmQ6dmFyKC0tZ29sZCk7Y29sb3I6dmFyKC0tdGV4dCk7Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6NnB4IDEycHg7Ym9yZGVyLXJhZGl1czo2cHh9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5uYXYtbGlua3MgLm5hdi1kb25hdGU6aG92ZXJ7YmFja2dyb3VuZDojZTBhODAwfSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAubGFuZy1idG57YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuMTUpIWltcG9ydGFudDtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4zKSFpbXBvcnRhbnQ7Zm9udC1zaXplOjAuNzhyZW0haW1wb3J0YW50fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIn0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAvKiBQQUdFUyAqLyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAucGFnZXtkaXNwbGF5Om5vbmU7bWF4LXdpZHRoOjExMDBweDttYXJnaW46MCBhdXRvO3BhZGRpbmc6MjhweCAyMHB4fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAucGFnZS5hY3RpdmV7ZGlzcGxheTpibG9ja30ifV19LHsidHlwZSI6InBhcmFncmFwaCJ9LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLyogSE9NRSAqLyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAuaGVyb3tiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsdmFyKC0tYmx1ZSkgMCUsIzI0NzFjOCAxMDAlKTtjb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6MTZweDtwYWRkaW5nOjQ4cHggNDBweDt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tYm90dG9tOjMycHh9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5oZXJvIGgxe2ZvbnQtc2l6ZToyLjRyZW07Zm9udC13ZWlnaHQ6ODAwO21hcmdpbi1ib3R0b206MTJweH0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmhlcm8gaDEgc3Bhbntjb2xvcjp2YXIoLS1nb2xkKX0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmhlcm8gcHtmb250LXNpemU6MS4xcmVtO29wYWNpdHk6MC45MjttYXgtd2lkdGg6NjIwcHg7bWFyZ2luOjAgYXV0byAyNHB4O2xpbmUtaGVpZ2h0OjEuNn0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmhlcm8tYnRuc3tkaXNwbGF5OmZsZXg7Z2FwOjEycHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LXdyYXA6d3JhcH0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmJ0bntwYWRkaW5nOjEycHggMjRweDtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MC45NXJlbTtmb250LXdlaWdodDo3MDA7dHJhbnNpdGlvbjphbGwgMC4yc30ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmJ0bi1wcmltYXJ5e2JhY2tncm91bmQ6dmFyKC0tZ29sZCk7Y29sb3I6dmFyKC0tdGV4dCl9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5idG4tcHJpbWFyeTpob3ZlcntiYWNrZ3JvdW5kOiNlMGE4MDA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCl9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5idG4tb3V0bGluZXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOiNmZmY7Ym9yZGVyOjJweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuNil9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5idG4tb3V0bGluZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMC4xKX0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmhvdy1pdC13b3Jrc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpdCxtaW5tYXgoMjAwcHgsMWZyKSk7Z2FwOjIwcHg7bWFyZ2luLWJvdHRvbTozMnB4fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAuaGl3LWNhcmR7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjRweDt0ZXh0LWFsaWduOmNlbnRlcjtib3gtc2hhZG93OnZhcigtLXNoYWRvdyl9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5oaXctaWNvbntmb250LXNpemU6MnJlbTttYXJnaW4tYm90dG9tOjEwcHh9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5oaXctY2FyZCBoM3tmb250LXNpemU6MXJlbTttYXJnaW4tYm90dG9tOjZweDtjb2xvcjp2YXIoLS1ibHVlKX0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmhpdy1jYXJkIHB7Zm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO2xpbmUtaGVpZ2h0OjEuNX0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLnNlY3Rpb24tdGl0bGV7Zm9udC1zaXplOjEuM3JlbTtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbToxNnB4O2NvbG9yOnZhcigtLWJsdWUpfSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAuY2F0ZWdvcnktZ3JpZHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpbGwsbWlubWF4KDE2MHB4LDFmcikpO2dhcDoxNHB4O21hcmdpbi1ib3R0b206MzJweH0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmNhdC1jYXJke2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjE4cHggMTRweDt0ZXh0LWFsaWduOmNlbnRlcjtjdXJzb3I6cG9pbnRlcjtib3JkZXI6MnB4IHNvbGlkIHRyYW5zcGFyZW50O3RyYW5zaXRpb246YWxsIDAuMnM7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpfSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAuY2F0LWNhcmQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWJsdWUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpfSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAuY2F0LWljb257Zm9udC1zaXplOjEuOHJlbTttYXJnaW4tYm90dG9tOjhweH0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmNhdC1jYXJkIGg0e2ZvbnQtc2l6ZTowLjg4cmVtO2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS10ZXh0KX0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmNhdC1jYXJkIHB7Zm9udC1zaXplOjAuNzVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi10b3A6NHB4fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAuZG9uYXRlLWJhbm5lcntiYWNrZ3JvdW5kOnZhcigtLWdvbGQtbGlnaHQpO2JvcmRlcjoycHggc29saWQgdmFyKC0tZ29sZCk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjRweDt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tYm90dG9tOjMycHh9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5kb25hdGUtYmFubmVyIGgze2ZvbnQtc2l6ZToxLjFyZW07bWFyZ2luLWJvdHRvbTo4cHh9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5kb25hdGUtYmFubmVyIHB7Zm9udC1zaXplOjAuODhyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MTRweH0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLnRpcC1ib3h7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCNlOGY1ZTksI2YwZmFmNCk7Ym9yZGVyLWxlZnQ6NHB4IHNvbGlkIHZhcigtLWdyZWVuKTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxOHB4IDIwcHg7bWFyZ2luLWJvdHRvbTozMnB4fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAudGlwLWJveCAudGlwLWxhYmVse2ZvbnQtc2l6ZTowLjc1cmVtO2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1ncmVlbik7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2xldHRlci1zcGFjaW5nOjFweDttYXJnaW4tYm90dG9tOjZweH0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLnRpcC1ib3ggcHtmb250LXNpemU6MC45MnJlbTtsaW5lLWhlaWdodDoxLjV9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgifSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC8qIEZPUlVNIC8gQ0FURUdPUlkgKi8ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmZvcnVtLWhlYWRlcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO21hcmdpbi1ib3R0b206MjBweDtmbGV4LXdyYXA6Z2FwfSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAuc29ydC1zZWxlY3R7cGFkZGluZzo4cHggMTJweDtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Zm9udC1zaXplOjAuODVyZW07YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Y3Vyc29yOnBvaW50ZXI7Y29sb3I6dmFyKC0tdGV4dCl9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5hc2stYmFye2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjIwcHg7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpO21hcmdpbi1ib3R0b206MjRweH0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmFzay1iYXIgaDN7Zm9udC1zaXplOjFyZW07bWFyZ2luLWJvdHRvbToxMnB4O2NvbG9yOnZhcigtLWJsdWUpfSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAuYXNrLWJhciBpbnB1dCwuYXNrLWJhciB0ZXh0YXJlYSwuYXNrLWJhciBzZWxlY3R7d2lkdGg6MTAwJTtwYWRkaW5nOjEwcHggMTRweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czo4cHg7Zm9udC1zaXplOjAuOXJlbTttYXJnaW4tYm90dG9tOjEwcHg7Zm9udC1mYW1pbHk6aW5oZXJpdDtjb2xvcjp2YXIoLS10ZXh0KX0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmFzay1iYXIgdGV4dGFyZWF7cmVzaXplOnZlcnRpY2FsO21pbi1oZWlnaHQ6ODBweH0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLnRhZy1pbnB1dHtkaXNwbGF5OmZsZXg7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjEwcHh9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC50YWd7YmFja2dyb3VuZDp2YXIoLS1ibHVlLWxpZ2h0KTtjb2xvcjp2YXIoLS1ibHVlKTtwYWRkaW5nOjRweCAxMHB4O2JvcmRlci1yYWRpdXM6MjBweDtmb250LXNpemU6MC43OHJlbTtmb250LXdlaWdodDo2MDA7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAudGFnIC5yZW1vdmV7Y29sb3I6dmFyKC0tcmVkKTtmb250LXdlaWdodDo3MDB9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5xLWNhcmR7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjBweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWFyZ2luLWJvdHRvbToxNnB4O2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246Ym94LXNoYWRvdyAwLjJzfSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAucS1jYXJkOmhvdmVye2JveC1zaGFkb3c6MCA0cHggMjBweCByZ2JhKDAsMCwwLDAuMTIpfSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAucS1tZXRhe2Rpc3BsYXk6ZmxleDtnYXA6MTBweDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC13cmFwOndyYXA7bWFyZ2luLWJvdHRvbTo4cHh9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5xLWNhdC1iYWRnZXtiYWNrZ3JvdW5kOnZhcigtLWJsdWUtbGlnaHQpO2NvbG9yOnZhcigtLWJsdWUpO2ZvbnQtc2l6ZTowLjcycmVtO2ZvbnQtd2VpZ2h0OjcwMDtwYWRkaW5nOjNweCA5cHg7Ym9yZGVyLXJhZGl1czoxMnB4fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAucS1kYXRle2ZvbnQtc2l6ZTowLjc1cmVtO2NvbG9yOnZhcigtLW11dGVkKX0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLnEtYXV0aG9ye2ZvbnQtc2l6ZTowLjc1cmVtO2NvbG9yOnZhcigtLW11dGVkKX0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLnEtdGl0bGV7Zm9udC1zaXplOjEuMDVyZW07Zm9udC13ZWlnaHQ6NzAwO21hcmdpbi1ib3R0b206NnB4fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAucS1wcmV2aWV3e2ZvbnQtc2l6ZTowLjg1cmVtO2NvbG9yOnZhcigtLW11dGVkKTtsaW5lLWhlaWdodDoxLjU7bWFyZ2luLWJvdHRvbToxMHB4fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAucS1zdGF0c3tkaXNwbGF5OmZsZXg7Z2FwOjE0cHg7Zm9udC1zaXplOjAuOHJlbTtjb2xvcjp2YXIoLS1tdXRlZCl9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5xLXN0YXRzIHNwYW57ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAuZmVhdHVyZWQtYmFkZ2V7YmFja2dyb3VuZDp2YXIoLS1nb2xkKTtjb2xvcjp2YXIoLS10ZXh0KTtmb250LXNpemU6MC43cmVtO2ZvbnQtd2VpZ2h0OjcwMDtwYWRkaW5nOjJweCA4cHg7Ym9yZGVyLXJhZGl1czoxMHB4O21hcmdpbi1sZWZ0OjhweH0ifV19LHsidHlwZSI6InBhcmFncmFwaCJ9LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLyogUVVFU1RJT04gREVUQUlMICovIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5iYWNrLWJ0bntiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Y29sb3I6dmFyKC0tYmx1ZSk7Zm9udC1zaXplOjAuOXJlbTtjdXJzb3I6cG9pbnRlcjttYXJnaW4tYm90dG9tOjE2cHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O2ZvbnQtd2VpZ2h0OjYwMH0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLnEtZnVsbHtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyNHB4O2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KTttYXJnaW4tYm90dG9tOjI0cHh9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5xLWZ1bGwgaDJ7Zm9udC1zaXplOjEuM3JlbTttYXJnaW4tYm90dG9tOjEycHh9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5xLWZ1bGwgLmJvZHl7Zm9udC1zaXplOjAuOTJyZW07bGluZS1oZWlnaHQ6MS43O21hcmdpbi1ib3R0b206MTZweH0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLnRhZ3Mtcm93e2Rpc3BsYXk6ZmxleDtnYXA6OHB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MTZweH0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmFuc3dlcnMtc2VjdGlvbiBoM3tmb250LXNpemU6MS4xcmVtO2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW4tYm90dG9tOjE2cHg7Y29sb3I6dmFyKC0tYmx1ZSl9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5hbnN3ZXItY2FyZHtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoxOHB4O2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KTttYXJnaW4tYm90dG9tOjE0cHg7Ym9yZGVyLWxlZnQ6NHB4IHNvbGlkIHRyYW5zcGFyZW50fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAuYW5zd2VyLWNhcmQudG9wLWFuc3dlcntib3JkZXItbGVmdC1jb2xvcjp2YXIoLS1nb2xkKX0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLnRvcC1hbnN3ZXItbGFiZWx7Zm9udC1zaXplOjAuNzJyZW07Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLWdvbGQpO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtsZXR0ZXItc3BhY2luZzowLjhweDttYXJnaW4tYm90dG9tOjZweH0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmFuc3dlci1ib2R5e2ZvbnQtc2l6ZTowLjlyZW07bGluZS1oZWlnaHQ6MS43O21hcmdpbi1ib3R0b206MTJweH0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmFuc3dlci1mb290ZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAuYW5zd2VyLW1ldGF7Zm9udC1zaXplOjAuNzhyZW07Y29sb3I6dmFyKC0tbXV0ZWQpfSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAudm90ZS1idG5ze2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweH0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLnZvdGUtYnRue2JhY2tncm91bmQ6dmFyKC0tZ3JheSk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6NXB4IDEycHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjAuODJyZW07Zm9udC13ZWlnaHQ6NjAwO3RyYW5zaXRpb246YWxsIDAuMnM7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAudm90ZS1idG4ubGlrZWR7YmFja2dyb3VuZDp2YXIoLS1ibHVlLWxpZ2h0KTtib3JkZXItY29sb3I6dmFyKC0tYmx1ZSk7Y29sb3I6dmFyKC0tYmx1ZSl9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC52b3RlLWJ0bjpob3Zlcnt0cmFuc2Zvcm06c2NhbGUoMS4wNSl9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5mbGFnLWJ0bntiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Y29sb3I6dmFyKC0tbXV0ZWQpO2ZvbnQtc2l6ZTowLjc4cmVtO2N1cnNvcjpwb2ludGVyfSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAuZmxhZy1idG46aG92ZXJ7Y29sb3I6dmFyKC0tcmVkKX0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmFkZC1hbnN3ZXJ7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjBweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWFyZ2luLXRvcDoyNHB4fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAuYWRkLWFuc3dlciBoNHttYXJnaW4tYm90dG9tOjEycHg7Y29sb3I6dmFyKC0tYmx1ZSl9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5hZGQtYW5zd2VyIHRleHRhcmVhe3dpZHRoOjEwMCU7cGFkZGluZzoxMnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjhweDttaW4taGVpZ2h0OjEwMHB4O3Jlc2l6ZTp2ZXJ0aWNhbDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTowLjlyZW07bWFyZ2luLWJvdHRvbToxMHB4fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAuYWRkLWFuc3dlciBpbnB1dHt3aWR0aDoxMDAlO3BhZGRpbmc6MTBweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czo4cHg7Zm9udC1zaXplOjAuODhyZW07bWFyZ2luLWJvdHRvbToxMHB4O2ZvbnQtZmFtaWx5OmluaGVyaXR9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgifSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC8qIEJFU1QgT0YgKi8ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmJlc3Qtb2YtaGVhZGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZyx2YXIoLS1nb2xkLWxpZ2h0KSwjZmZmZGU3KTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyNHB4O21hcmdpbi1ib3R0b206MjRweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdvbGQpO3RleHQtYWxpZ246Y2VudGVyfSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAuYmVzdC1vZi1oZWFkZXIgaDJ7Y29sb3I6dmFyKC0tdGV4dCk7bWFyZ2luLWJvdHRvbTo2cHh9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5iZXN0LW9mLWhlYWRlciBwe2NvbG9yOnZhcigtLW11dGVkKTtmb250LXNpemU6MC44OHJlbX0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmZpbHRlci1yb3d7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MjBweDthbGlnbi1pdGVtczpjZW50ZXJ9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5maWx0ZXItYnRue3BhZGRpbmc6NnB4IDE0cHg7Ym9yZGVyLXJhZGl1czoyMHB4O2JvcmRlcjoycHggc29saWQgdmFyKC0tYm9yZGVyKTtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MC44MnJlbTtmb250LXdlaWdodDo2MDA7dHJhbnNpdGlvbjphbGwgMC4yc30ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmZpbHRlci1idG4uYWN0aXZle2JhY2tncm91bmQ6dmFyKC0tYmx1ZSk7Y29sb3I6I2ZmZjtib3JkZXItY29sb3I6dmFyKC0tYmx1ZSl9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgifSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC8qIENIRUNLTElTVCAqLyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAuY2hlY2tsaXN0LWludHJve2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZywjZThmNWU5LCNmMGZhZjQpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjI0cHg7bWFyZ2luLWJvdHRvbToyNHB4O2JvcmRlcjoycHggc29saWQgdmFyKC0tZ3JlZW4pO3RleHQtYWxpZ246Y2VudGVyfSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAuY2hlY2tsaXN0LWludHJvIGgye2NvbG9yOnZhcigtLWdyZWVuKTttYXJnaW4tYm90dG9tOjZweH0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmNoZWNrbGlzdC1zZWN0aW9ue2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjIwcHg7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpO21hcmdpbi1ib3R0b206MTZweH0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmNoZWNrbGlzdC1zZWN0aW9uIGgze2ZvbnQtc2l6ZToxcmVtO2NvbG9yOnZhcigtLWJsdWUpO21hcmdpbi1ib3R0b206MTJweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHh9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5jaGVja2xpc3QtaXRlbXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6MTJweDtwYWRkaW5nOjEwcHggMDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpfSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAuY2hlY2tsaXN0LWl0ZW06bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOm5vbmV9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5jaGVja2xpc3QtaXRlbSBpbnB1dFt0eXBlPWNoZWNrYm94XXt3aWR0aDoxOHB4O2hlaWdodDoxOHB4O21hcmdpbi10b3A6MnB4O2N1cnNvcjpwb2ludGVyO2FjY2VudC1jb2xvcjp2YXIoLS1ibHVlKX0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmNoZWNrbGlzdC1pdGVtIGxhYmVse2ZvbnQtc2l6ZTowLjlyZW07bGluZS1oZWlnaHQ6MS41O2N1cnNvcjpwb2ludGVyO2ZsZXg6MX0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmNoZWNrbGlzdC1pdGVtIC5saW5rLWJ0bntmb250LXNpemU6MC43NXJlbTtjb2xvcjp2YXIoLS1ibHVlKTtjdXJzb3I6cG9pbnRlcjt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTttYXJnaW4tbGVmdDphdXRvO3doaXRlLXNwYWNlOm5vd3JhcH0ifV19LHsidHlwZSI6InBhcmFncmFwaCJ9LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLyogU0VBUkNIICovIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5zZWFyY2gtYmFyLWJpZ3tkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7bWFyZ2luLWJvdHRvbToyNHB4fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAuc2VhcmNoLWJhci1iaWcgaW5wdXR7ZmxleDoxO3BhZGRpbmc6MTRweCAxOHB4O2JvcmRlcjoycHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjEwcHg7Zm9udC1zaXplOjFyZW07Zm9udC1mYW1pbHk6aW5oZXJpdH0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLnNlYXJjaC1iYXItYmlnIGlucHV0OmZvY3Vze291dGxpbmU6bm9uZTtib3JkZXItY29sb3I6dmFyKC0tYmx1ZSl9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5zZWFyY2gtYmFyLWJpZyBidXR0b257YmFja2dyb3VuZDp2YXIoLS1ibHVlKTtjb2xvcjojZmZmO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjE0cHggMjRweDtmb250LXNpemU6MXJlbTtmb250LXdlaWdodDo3MDA7Y3Vyc29yOnBvaW50ZXJ9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC50YWctY2xvdWR7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo4cHg7bWFyZ2luLWJvdHRvbToyNHB4fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAudGFnLWNsb3VkLWl0ZW17YmFja2dyb3VuZDp2YXIoLS1ibHVlLWxpZ2h0KTtjb2xvcjp2YXIoLS1ibHVlKTtwYWRkaW5nOjZweCAxNHB4O2JvcmRlci1yYWRpdXM6MjBweDtmb250LXNpemU6MC44MnJlbTtmb250LXdlaWdodDo2MDA7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjphbGwgMC4yc30ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLnRhZy1jbG91ZC1pdGVtOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYmx1ZSk7Y29sb3I6I2ZmZn0ifV19LHsidHlwZSI6InBhcmFncmFwaCJ9LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLyogRE9OQVRFICovIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5kb25hdGUtcGFnZXt0ZXh0LWFsaWduOmNlbnRlcjttYXgtd2lkdGg6NjAwcHg7bWFyZ2luOjAgYXV0b30ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmRvbmF0ZS1oZXJve2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZyx2YXIoLS1nb2xkLWxpZ2h0KSwjZmZmOGUxKTtib3JkZXItcmFkaXVzOjE2cHg7cGFkZGluZzo0MHB4O21hcmdpbi1ib3R0b206MjRweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdvbGQpfSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAuZG9uYXRlLWhlcm8gaDJ7Zm9udC1zaXplOjEuOHJlbTttYXJnaW4tYm90dG9tOjEycHh9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5kb25hdGUtaGVybyBwe2NvbG9yOnZhcigtLW11dGVkKTtsaW5lLWhlaWdodDoxLjc7bWFyZ2luLWJvdHRvbToyMHB4fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAuZG9uYXRlLWFtb3VudHN7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7ZmxleC13cmFwOndyYXA7bWFyZ2luLWJvdHRvbToyMHB4fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAuYW1vdW50LWJ0bntwYWRkaW5nOjEwcHggMjBweDtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdvbGQpO2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjlyZW07Zm9udC13ZWlnaHQ6NzAwO3RyYW5zaXRpb246YWxsIDAuMnN9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5hbW91bnQtYnRuLnNlbGVjdGVkLC5hbW91bnQtYnRuOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tZ29sZCk7Y29sb3I6dmFyKC0tdGV4dCl9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5kb25hdGUtYnRuLWJpZ3tiYWNrZ3JvdW5kOnZhcigtLWdvbGQpO2NvbG9yOnZhcigtLXRleHQpO2JvcmRlcjpub25lO3BhZGRpbmc6MTRweCA0MHB4O2JvcmRlci1yYWRpdXM6MTBweDtmb250LXNpemU6MS4xcmVtO2ZvbnQtd2VpZ2h0OjgwMDtjdXJzb3I6cG9pbnRlcjt3aWR0aDoxMDAlO21hcmdpbi1ib3R0b206MTJweH0ifV19LHsidHlwZSI6InBhcmFncmFwaCJ9LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLyogTEFORyBNT0RBTCAqLyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAubW9kYWwtb3ZlcmxheXtkaXNwbGF5Om5vbmU7cG9zaXRpb246Zml4ZWQ7aW5zZXQ6MDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC41KTt6LWluZGV4OjIwMDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLm1vZGFsLW92ZXJsYXkub3BlbntkaXNwbGF5OmZsZXh9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5tb2RhbHtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjE2cHg7cGFkZGluZzoyOHB4O21heC13aWR0aDo0MjBweDt3aWR0aDo5MCU7Ym94LXNoYWRvdzowIDhweCA0MHB4IHJnYmEoMCwwLDAsMC4yKX0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLm1vZGFsIGgze21hcmdpbi1ib3R0b206OHB4O2ZvbnQtc2l6ZToxLjJyZW19In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5tb2RhbCBwe2ZvbnQtc2l6ZTowLjg1cmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tYm90dG9tOjE2cHg7bGluZS1oZWlnaHQ6MS41fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAubGFuZy1ncmlke2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtnYXA6OHB4O21hcmdpbi1ib3R0b206MTZweH0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgLmxhbmctb3B0aW9ue3BhZGRpbmc6MTBweCAxMnB4O2JvcmRlcjoycHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjhweDtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MC45MnJlbTtmb250LXdlaWdodDo2MDA7dGV4dC1hbGlnbjpjZW50ZXI7dHJhbnNpdGlvbjphbGwgMC4ycztsaW5lLWhlaWdodDoxLjQ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAubGFuZy1vcHRpb246aG92ZXIsLmxhbmctb3B0aW9uLmFjdGl2ZXtib3JkZXItY29sb3I6dmFyKC0tYmx1ZSk7YmFja2dyb3VuZDp2YXIoLS1ibHVlLWxpZ2h0KTtjb2xvcjp2YXIoLS1ibHVlKTt0cmFuc2Zvcm06c2NhbGUoMS4wMyl9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5tb2RhbC1jbG9zZXtiYWNrZ3JvdW5kOnZhcigtLWdyYXkpO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6MTBweCAyMHB4O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjlyZW07Zm9udC13ZWlnaHQ6NjAwO3dpZHRoOjEwMCV9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC50cmFuc2xhdGlvbi1ub3RpY2V7YmFja2dyb3VuZDojZmZmM2NkO2JvcmRlcjoxcHggc29saWQgI2ZmYzEwNztib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjEwcHggMTRweDtmb250LXNpemU6MC44cmVtO2NvbG9yOiM4NTY0MDQ7bWFyZ2luLWJvdHRvbToxNnB4fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIn0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAvKiBUT0FTVCAqLyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAudG9hc3R7cG9zaXRpb246Zml4ZWQ7Ym90dG9tOjI0cHg7cmlnaHQ6MjRweDtiYWNrZ3JvdW5kOnZhcigtLWdyZWVuKTtjb2xvcjojZmZmO3BhZGRpbmc6MTJweCAyMHB4O2JvcmRlci1yYWRpdXM6MTBweDtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjAuOXJlbTt6LWluZGV4OjMwMDtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTBweCk7dHJhbnNpdGlvbjphbGwgMC4zcztwb2ludGVyLWV2ZW50czpub25lfSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAudG9hc3Quc2hvd3tvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCl9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgifSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIC5lbXB0eS1zdGF0ZXt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjQwcHg7Y29sb3I6dmFyKC0tbXV0ZWQpfSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAuZW1wdHktc3RhdGUgLmljb257Zm9udC1zaXplOjNyZW07bWFyZ2luLWJvdHRvbToxMHB4fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAuZGl2aWRlcntoZWlnaHQ6MXB4O2JhY2tncm91bmQ6dmFyKC0tYm9yZGVyKTttYXJnaW46MjBweCAwfSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBAbWVkaWEobWF4LXdpZHRoOjYwMHB4KXsuaGVybyBoMXtmb250LXNpemU6MS42cmVtfS5oZXJve3BhZGRpbmc6MjhweCAyMHB4fS5jYXRlZ29yeS1ncmlke2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maWxsLG1pbm1heCgxMzBweCwxZnIpKX19In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiI8L3N0eWxlPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiPC9oZWFkPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiPGJvZHk+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgifSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiI8bmF2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICA8ZGl2IGNsYXNzPVwibmF2LWxvZ29cIiBvbmNsaWNrPVwic2hvd1BhZ2UoJ2hvbWUnKVwiPk9saW08c3Bhbj5BbnN3ZXJzPC9zcGFuPjwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICA8ZGl2IGNsYXNzPVwibmF2LWxpbmtzXCI+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPGJ1dHRvbiBvbmNsaWNrPVwic2hvd1BhZ2UoJ2hvbWUnKVwiPvCfj6AgSG9tZTwvYnV0dG9uPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDxidXR0b24gb25jbGljaz1cInNob3dQYWdlKCdmb3J1bScpXCI+8J+XoyBGb3J1bTwvYnV0dG9uPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDxidXR0b24gb25jbGljaz1cInNob3dQYWdlKCdiZXN0b2YnKVwiPuKtkCBCZXN0IE9mPC9idXR0b24+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPGJ1dHRvbiBvbmNsaWNrPVwic2hvd1BhZ2UoJ2NoZWNrbGlzdCcpXCI+4pyFIENoZWNrbGlzdDwvYnV0dG9uPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDxidXR0b24gb25jbGljaz1cInNob3dQYWdlKCdjYXRzJylcIj7wn5OCIENhdGVnb3JpZXM8L2J1dHRvbj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8YnV0dG9uIG9uY2xpY2s9XCJzaG93UGFnZSgnc2VhcmNoJylcIj7wn5SNIFNlYXJjaDwvYnV0dG9uPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDxidXR0b24gb25jbGljaz1cInNob3dQYWdlKCdkb25hdGUnKVwiIGNsYXNzPVwibmF2LWRvbmF0ZVwiPvCfkpsgRG9uYXRlPC9idXR0b24+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPGJ1dHRvbiBjbGFzcz1cImxhbmctYnRuXCIgb25jbGljaz1cIm9wZW5MYW5nTW9kYWwoKVwiPvCfh6zwn4enPC9idXR0b24+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIDwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiPC9uYXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgifSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiI8IS0tIEhPTUUgLS0+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiI8ZGl2IGNsYXNzPVwicGFnZSBhY3RpdmVcIiBpZD1cInBhZ2UtaG9tZVwiPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICA8ZGl2IGNsYXNzPVwiaGVyb1wiPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDxoMT5XZWxjb21lIHRvIDxzcGFuPk9saW1BbnN3ZXJzPC9zcGFuPjwvaDE+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPHA+WW91ciBjb21tdW5pdHktcG93ZXJlZCBndWlkZSB0byBuYXZpZ2F0aW5nIGxpZmUgaW4gSXNyYWVsLiBBc2sgcXVlc3Rpb25zLCBzaGFyZSBrbm93bGVkZ2UsIGFuZCBoZWxwIGZlbGxvdyBvbGltIGZpbmQgdGhlaXIgZmVldCBmYXN0ZXIuPC9wPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDxkaXYgY2xhc3M9XCJoZXJvLWJ0bnNcIj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBvbmNsaWNrPVwic2hvd1BhZ2UoJ2ZvcnVtJylcIj5Bc2sgYSBRdWVzdGlvbjwvYnV0dG9uPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZVwiIG9uY2xpY2s9XCJzaG93UGFnZSgnYmVzdG9mJylcIj7irZAgQnJvd3NlIFRvcCBBbnN3ZXJzPC9idXR0b24+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPC9kaXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIDwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIn0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICA8ZGl2IGNsYXNzPVwidGlwLWJveFwiPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDxkaXYgY2xhc3M9XCJ0aXAtbGFiZWxcIj7wn5KhIFRpcCBvZiB0aGUgRGF5PC9kaXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPHAgaWQ9XCJ0aXAtdGV4dFwiPldoZW4gb3BlbmluZyBhIGJhbmsgYWNjb3VudCBpbiBJc3JhZWwsIGJyaW5nIHlvdXIgVGV1ZGF0IE9sZWgsIHBhc3Nwb3J0LCBhbmQgcHJvb2Ygb2YgYWRkcmVzcy4gQmFuayBIYXBvYWxpbSBhbmQgQmFuayBMZXVtaSBib3RoIGhhdmUgZGVkaWNhdGVkIE9saW0gZGVwYXJ0bWVudHMgd2l0aCBFbmdsaXNoLXNwZWFraW5nIHN0YWZmLjwvcD4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgPC9kaXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgifSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+SG93IEl0IFdvcmtzPC9kaXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIDxkaXYgY2xhc3M9XCJob3ctaXQtd29ya3NcIj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8ZGl2IGNsYXNzPVwiaGl3LWNhcmRcIj48ZGl2IGNsYXNzPVwiaGl3LWljb25cIj7inZM8L2Rpdj48aDM+QXNrPC9oMz48cD5Qb3N0IHlvdXIgcXVlc3Rpb24gaW4gdGhlIHJlbGV2YW50IGNhdGVnb3J5LiBCZSBhcyBkZXRhaWxlZCBhcyB5b3UgbGlrZS48L3A+PC9kaXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPGRpdiBjbGFzcz1cImhpdy1jYXJkXCI+PGRpdiBjbGFzcz1cImhpdy1pY29uXCI+8J+SrDwvZGl2PjxoMz5BbnN3ZXI8L2gzPjxwPlRoZSBjb21tdW5pdHkgcmVzcG9uZHMgd2l0aCBhZHZpY2UsIHRpcHMsIGFuZCBwZXJzb25hbCBleHBlcmllbmNlLjwvcD48L2Rpdj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8ZGl2IGNsYXNzPVwiaGl3LWNhcmRcIj48ZGl2IGNsYXNzPVwiaGl3LWljb25cIj7wn5GNPC9kaXY+PGgzPlJhdGU8L2gzPjxwPlVwdm90ZSB0aGUgbW9zdCBoZWxwZnVsIGFuc3dlcnMgc28gdGhleSByaXNlIHRvIHRoZSB0b3AgZm9yIGV2ZXJ5b25lLjwvcD48L2Rpdj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8ZGl2IGNsYXNzPVwiaGl3LWNhcmRcIj48ZGl2IGNsYXNzPVwiaGl3LWljb25cIj7wn4yfPC9kaXY+PGgzPkRpc2NvdmVyPC9oMz48cD5Ccm93c2UgdG9wLXJhdGVkIGNvbnRlbnQgb3Igc2VhcmNoIGJ5IGtleXdvcmQgdG8gZmluZCB3aGF0IHlvdSBuZWVkIGZhc3QuPC9wPjwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICA8L2Rpdj4ifV19LHsidHlwZSI6InBhcmFncmFwaCJ9LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgPGRpdiBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5Ccm93c2UgYnkgQ2F0ZWdvcnk8L2Rpdj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgPGRpdiBjbGFzcz1cImNhdGVnb3J5LWdyaWRcIiBpZD1cImhvbWUtY2F0c1wiPjwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIn0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICA8ZGl2IGNsYXNzPVwiZG9uYXRlLWJhbm5lclwiPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDxoMz7wn5KbIE9saW1BbnN3ZXJzIGlzIGZyZWUgZm9yIGV2ZXJ5b25lPC9oMz4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8cD5UaGlzIHNpdGUgaXMgY29tbXVuaXR5LXJ1bi4gSWYgaXQgaGVscGVkIHlvdSwgY29uc2lkZXIgYSBzbWFsbCBkb25hdGlvbiB0byBrZWVwIGl0IGdvaW5nLjwvcD4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgb25jbGljaz1cInNob3dQYWdlKCdkb25hdGUnKVwiPlN1cHBvcnQgdGhlIFNpdGU8L2J1dHRvbj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgPC9kaXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiI8L2Rpdj4ifV19LHsidHlwZSI6InBhcmFncmFwaCJ9LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IjwhLS0gRk9SVU0gLS0+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiI8ZGl2IGNsYXNzPVwicGFnZVwiIGlkPVwicGFnZS1mb3J1bVwiPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICA8ZGl2IGNsYXNzPVwiZm9ydW0taGVhZGVyXCIgc3R5bGU9XCJkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi1ib3R0b206MjBweDtmbGV4LXdyYXA6d3JhcDtnYXA6MTBweFwiPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDxkaXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICA8aDIgc3R5bGU9XCJmb250LXNpemU6MS40cmVtO2NvbG9yOnZhcigtLWJsdWUpXCI+8J+XoyBDb21tdW5pdHkgRm9ydW08L2gyPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICAgPHAgc3R5bGU9XCJmb250LXNpemU6MC44NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLXRvcDo0cHhcIj5Bc2sgcXVlc3Rpb25zLCBzaGFyZSBhbnN3ZXJzLCBoZWxwIGZlbGxvdyBvbGltPC9wPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwXCI+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICA8c2VsZWN0IGNsYXNzPVwic29ydC1zZWxlY3RcIiBpZD1cImZvcnVtLXNvcnRcIiBvbmNoYW5nZT1cInJlbmRlckZvcnVtKClcIj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5ld2VzdFwiPvCflZAgTmV3ZXN0PC9vcHRpb24+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICAgIDxvcHRpb24gdmFsdWU9XCJtb3N0X2Fuc3dlcnNcIj7wn5KsIE1vc3QgUmVzcG9uc2VzPC9vcHRpb24+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICAgIDxvcHRpb24gdmFsdWU9XCJoaWdoZXN0X3JhdGVkXCI+4q2QIEhpZ2hlc3QgUmF0ZWQ8L29wdGlvbj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm1vc3Rfdmlld2VkXCI+8J+RgSBNb3N0IFZpZXdlZDwvb3B0aW9uPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICAgPC9zZWxlY3Q+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgb25jbGljaz1cInRvZ2dsZUFza0JhcigpXCIgc3R5bGU9XCJwYWRkaW5nOjlweCAxNnB4O2ZvbnQtc2l6ZTowLjg4cmVtXCI+KyBBc2sgYSBRdWVzdGlvbjwvYnV0dG9uPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICA8L2Rpdj4ifV19LHsidHlwZSI6InBhcmFncmFwaCJ9LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgPGRpdiBjbGFzcz1cImFzay1iYXJcIiBpZD1cImFzay1iYXJcIiBzdHlsZT1cImRpc3BsYXk6bm9uZVwiPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDxoMz5Bc2sgYSBOZXcgUXVlc3Rpb248L2gzPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwicS10aXRsZVwiIHBsYWNlaG9sZGVyPVwiWW91ciBxdWVzdGlvbiB0aXRsZS4uLlwiIC8+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPHRleHRhcmVhIGlkPVwicS1ib2R5XCIgcGxhY2Vob2xkZXI9XCJEZXNjcmliZSB5b3VyIHF1ZXN0aW9uIGluIGRldGFpbC4uLlwiPjwvdGV4dGFyZWE+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPHNlbGVjdCBpZD1cInEtY2F0XCI+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0IGEgY2F0ZWdvcnkuLi48L29wdGlvbj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8L3NlbGVjdD4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cInEtbmFtZVwiIHBsYWNlaG9sZGVyPVwiWW91ciBuYW1lIChvciBsZWF2ZSBibGFuayBmb3IgQW5vbnltb3VzKVwiIC8+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6ZmxleDtnYXA6MTBweFwiPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIG9uY2xpY2s9XCJzdWJtaXRRdWVzdGlvbigpXCIgc3R5bGU9XCJmbGV4OjFcIj5Qb3N0IFF1ZXN0aW9uPC9idXR0b24+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICA8YnV0dG9uIG9uY2xpY2s9XCJjYW5jZWxBc2soKVwiIHN0eWxlPVwiZmxleDpub25lO3BhZGRpbmc6MTJweCAxOHB4O2JvcmRlci1yYWRpdXM6OHB4O2JvcmRlcjoycHggc29saWQgdmFyKC0tYm9yZGVyKTtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MXJlbTtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tbXV0ZWQpXCI+4pyVIENhbmNlbDwvYnV0dG9uPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICA8L2Rpdj4ifV19LHsidHlwZSI6InBhcmFncmFwaCJ9LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgPGRpdiBpZD1cImZvcnVtLWxpc3RcIj48L2Rpdj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IjwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIn0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiPCEtLSBDQVRFR09SWSBQQUdFIC0tPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiPGRpdiBjbGFzcz1cInBhZ2VcIiBpZD1cInBhZ2UtY2F0ZWdvcnlcIj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgPGJ1dHRvbiBjbGFzcz1cImJhY2stYnRuXCIgb25jbGljaz1cInNob3dQYWdlKCdmb3J1bScpXCI+4oaQIEJhY2sgdG8gRm9ydW08L2J1dHRvbj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgPGRpdiBzdHlsZT1cImRpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLWJvdHRvbToyMHB4O2ZsZXgtd3JhcDp3cmFwO2dhcDoxMHB4XCI+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPGRpdj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAgIDxoMiBpZD1cImNhdC1wYWdlLXRpdGxlXCIgc3R5bGU9XCJmb250LXNpemU6MS40cmVtO2NvbG9yOnZhcigtLWJsdWUpXCI+PC9oMj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAgIDxwIGlkPVwiY2F0LXBhZ2UtZGVzY1wiIHN0eWxlPVwiZm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi10b3A6NHB4XCI+PC9wPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDxzZWxlY3QgY2xhc3M9XCJzb3J0LXNlbGVjdFwiIGlkPVwiY2F0LXNvcnRcIiBvbmNoYW5nZT1cInJlbmRlckNhdGVnb3J5UGFnZSgpXCI+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICA8b3B0aW9uIHZhbHVlPVwibmV3ZXN0XCI+8J+VkCBOZXdlc3Q8L29wdGlvbj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAgIDxvcHRpb24gdmFsdWU9XCJtb3N0X2Fuc3dlcnNcIj7wn5KsIE1vc3QgUmVzcG9uc2VzPC9vcHRpb24+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICA8b3B0aW9uIHZhbHVlPVwiaGlnaGVzdF9yYXRlZFwiPuKtkCBIaWdoZXN0IFJhdGVkPC9vcHRpb24+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICA8b3B0aW9uIHZhbHVlPVwibW9zdF92aWV3ZWRcIj7wn5GBIE1vc3QgVmlld2VkPC9vcHRpb24+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPC9zZWxlY3Q+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIDwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICA8ZGl2IGlkPVwiY2F0LXBhZ2UtbGlzdFwiPjwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiPC9kaXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgifSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiI8IS0tIFFVRVNUSU9OIERFVEFJTCAtLT4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IjxkaXYgY2xhc3M9XCJwYWdlXCIgaWQ9XCJwYWdlLXF1ZXN0aW9uXCI+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIDxidXR0b24gY2xhc3M9XCJiYWNrLWJ0blwiIGlkPVwicS1iYWNrLWJ0blwiIG9uY2xpY2s9XCJnb0JhY2soKVwiPuKGkCBCYWNrPC9idXR0b24+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIDxkaXYgY2xhc3M9XCJxLWZ1bGxcIiBpZD1cInEtZnVsbC1jb250ZW50XCI+PC9kaXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIDxkaXYgY2xhc3M9XCJhbnN3ZXJzLXNlY3Rpb25cIj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8aDMgaWQ9XCJhbnN3ZXJzLWNvdW50XCI+PC9oMz4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8ZGl2IGlkPVwiYW5zd2Vycy1saXN0XCI+PC9kaXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIDwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICA8ZGl2IGNsYXNzPVwiYWRkLWFuc3dlclwiPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDxoND7wn5KsIEFkZCBZb3VyIEFuc3dlcjwvaDQ+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJhbnMtbmFtZVwiIHBsYWNlaG9sZGVyPVwiWW91ciBuYW1lIChvciBsZWF2ZSBibGFuayBmb3IgQW5vbnltb3VzKVwiIC8+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPHRleHRhcmVhIGlkPVwiYW5zLWJvZHlcIiBwbGFjZWhvbGRlcj1cIlNoYXJlIHlvdXIga25vd2xlZGdlIG9yIGV4cGVyaWVuY2UuLi5cIj48L3RleHRhcmVhPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBvbmNsaWNrPVwic3VibWl0QW5zd2VyKClcIj5Qb3N0IEFuc3dlcjwvYnV0dG9uPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICA8L2Rpdj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IjwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIn0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiPCEtLSBCRVNUIE9GIC0tPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiPGRpdiBjbGFzcz1cInBhZ2VcIiBpZD1cInBhZ2UtYmVzdG9mXCI+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIDxkaXYgY2xhc3M9XCJiZXN0LW9mLWhlYWRlclwiPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDxoMj7irZAgQmVzdCBPZiBPbGltQW5zd2VyczwvaDI+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPHA+VGhlIGhpZ2hlc3QtcmF0ZWQgcXVlc3Rpb25zIGFuZCBhbnN3ZXJzIGZyb20gb3VyIGNvbW11bml0eSDigJQgeW91ciBnby10byBzdGFydGluZyBwb2ludDwvcD4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgPC9kaXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIDxkaXYgY2xhc3M9XCJmaWx0ZXItcm93XCI+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPHNwYW4gc3R5bGU9XCJmb250LXNpemU6MC44NXJlbTtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tbXV0ZWQpXCI+RmlsdGVyOjwvc3Bhbj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8YnV0dG9uIGNsYXNzPVwiZmlsdGVyLWJ0biBhY3RpdmVcIiBvbmNsaWNrPVwiZmlsdGVyQmVzdE9mKCdhbGwnLHRoaXMpXCI+QWxsIENhdGVnb3JpZXM8L2J1dHRvbj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8ZGl2IGlkPVwiYmVzdG9mLWZpbHRlcnNcIj48L2Rpdj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgPC9kaXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIDxkaXYgaWQ9XCJiZXN0b2YtbGlzdFwiPjwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiPC9kaXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgifSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiI8IS0tIENIRUNLTElTVCAtLT4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IjxkaXYgY2xhc3M9XCJwYWdlXCIgaWQ9XCJwYWdlLWNoZWNrbGlzdFwiPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICA8ZGl2IGNsYXNzPVwiY2hlY2tsaXN0LWludHJvXCI+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPGgyPuKchSBOZXcgT2xlaCBDaGVja2xpc3Q8L2gyPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDxwIHN0eWxlPVwiY29sb3I6dmFyKC0tbXV0ZWQpO2ZvbnQtc2l6ZTowLjg4cmVtO21hcmdpbi10b3A6NnB4XCI+WW91ciBzdGVwLWJ5LXN0ZXAgZ3VpZGUgdG8gc2V0dGxpbmcgaW4gSXNyYWVsLiBDaGVjayBvZmYgaXRlbXMgYXMgeW91IGdvIOKAlCBwcm9ncmVzcyBzYXZlcyBhdXRvbWF0aWNhbGx5LjwvcD4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgPC9kaXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIDxkaXYgaWQ9XCJjaGVja2xpc3QtY29udGVudFwiPjwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiPC9kaXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgifSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiI8IS0tIFNFQVJDSCAtLT4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IjxkaXYgY2xhc3M9XCJwYWdlXCIgaWQ9XCJwYWdlLXNlYXJjaFwiPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICA8aDIgc3R5bGU9XCJmb250LXNpemU6MS40cmVtO2NvbG9yOnZhcigtLWJsdWUpO21hcmdpbi1ib3R0b206MTZweFwiPvCflI0gU2VhcmNoIE9saW1BbnN3ZXJzPC9oMj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgPGRpdiBjbGFzcz1cInNlYXJjaC1iYXItYmlnXCI+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJzZWFyY2gtaW5wdXRcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaCBxdWVzdGlvbnMsIHRvcGljcywga2V5d29yZHMuLi5cIiBvbmtleXVwPVwiaWYoZXZlbnQua2V5PT09J0VudGVyJylkb1NlYXJjaCgpXCIgLz4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8YnV0dG9uIG9uY2xpY2s9XCJkb1NlYXJjaCgpXCI+U2VhcmNoPC9idXR0b24+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIDwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICA8ZGl2IGNsYXNzPVwic2VjdGlvbi10aXRsZVwiIHN0eWxlPVwiZm9udC1zaXplOjFyZW1cIj5Qb3B1bGFyIFRvcGljczwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICA8ZGl2IGNsYXNzPVwidGFnLWNsb3VkXCIgaWQ9XCJ0YWctY2xvdWRcIj48L2Rpdj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgPGRpdiBpZD1cInNlYXJjaC1yZXN1bHRzXCI+PC9kaXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiI8L2Rpdj4ifV19LHsidHlwZSI6InBhcmFncmFwaCJ9LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IjwhLS0gQ0FURUdPUklFUyAtLT4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IjxkaXYgY2xhc3M9XCJwYWdlXCIgaWQ9XCJwYWdlLWNhdHNcIj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgPGgyIHN0eWxlPVwiZm9udC1zaXplOjEuNHJlbTtjb2xvcjp2YXIoLS1ibHVlKTttYXJnaW4tYm90dG9tOjZweFwiPvCfk4IgQ2F0ZWdvcmllczwvaDI+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIDxwIHN0eWxlPVwiZm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MjBweFwiPkJyb3dzZSBxdWVzdGlvbnMgYnkgdG9waWM8L3A+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIDxkaXYgY2xhc3M9XCJjYXRlZ29yeS1ncmlkXCIgaWQ9XCJjYXRzLWdyaWRcIj48L2Rpdj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IjwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIn0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiPCEtLSBET05BVEUgLS0+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiI8ZGl2IGNsYXNzPVwicGFnZVwiIGlkPVwicGFnZS1kb25hdGVcIj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgPGRpdiBjbGFzcz1cImRvbmF0ZS1wYWdlXCI+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPGRpdiBjbGFzcz1cImRvbmF0ZS1oZXJvXCI+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICA8ZGl2IHN0eWxlPVwiZm9udC1zaXplOjNyZW07bWFyZ2luLWJvdHRvbToxMnB4XCI+8J+SmzwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICAgPGgyPlN1cHBvcnQgT2xpbUFuc3dlcnM8L2gyPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICAgPHA+T2xpbUFuc3dlcnMgaXMgZnJlZSBmb3IgZXZlcnkgb2xlaCwgZm9yZXZlci4gSXQncyBidWlsdCBhbmQgbWFpbnRhaW5lZCBieSB0aGUgY29tbXVuaXR5LCBmb3IgdGhlIGNvbW11bml0eS4gWW91ciBkb25hdGlvbiBoZWxwcyBrZWVwIHRoZSBsaWdodHMgb24sIHBheSBmb3IgaG9zdGluZywgYW5kIGFsbG93cyB1cyB0byBncm93IGFuZCBpbXByb3ZlIHRoZSBzaXRlLjwvcD4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAgIDxwIHN0eWxlPVwibWFyZ2luLXRvcDoxMHB4O2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtc2l6ZTowLjg1cmVtO2NvbG9yOnZhcigtLW11dGVkKVwiPlwiSSB3aXNoIHRoaXMgc2l0ZSBleGlzdGVkIHdoZW4gSSBtYWRlIGFsaXlhaC5cIiDigJQgRXZlcnkgb2xlaCwgZXZlci48L3A+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPC9kaXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPGRpdiBjbGFzcz1cImRvbmF0ZS1hbW91bnRzXCI+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICA8YnV0dG9uIGNsYXNzPVwiYW1vdW50LWJ0blwiIG9uY2xpY2s9XCJzZWxlY3RBbW91bnQodGhpcywnJDUnKVwiPiQ1PC9idXR0b24+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICA8YnV0dG9uIGNsYXNzPVwiYW1vdW50LWJ0blwiIG9uY2xpY2s9XCJzZWxlY3RBbW91bnQodGhpcywnJDE4JylcIj4kMTgg4pyh77iPPC9idXR0b24+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICA8YnV0dG9uIGNsYXNzPVwiYW1vdW50LWJ0biBzZWxlY3RlZFwiIG9uY2xpY2s9XCJzZWxlY3RBbW91bnQodGhpcywnJDM2JylcIj4kMzY8L2J1dHRvbj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAgIDxidXR0b24gY2xhc3M9XCJhbW91bnQtYnRuXCIgb25jbGljaz1cInNlbGVjdEFtb3VudCh0aGlzLCckMTAwJylcIj4kMTAwPC9idXR0b24+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICA8YnV0dG9uIGNsYXNzPVwiYW1vdW50LWJ0blwiIG9uY2xpY2s9XCJzZWxlY3RBbW91bnQodGhpcywnb3RoZXInKVwiPk90aGVyPC9idXR0b24+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPC9kaXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPGJ1dHRvbiBjbGFzcz1cImRvbmF0ZS1idG4tYmlnXCIgb25jbGljaz1cInNob3dUb2FzdCgnVGhhbmsgeW91ISBEb25hdGlvbiBsaW5rIGNvbWluZyBzb29uIPCfkpsnKVwiPkRvbmF0ZSB2aWEgUGF5UGFsPC9idXR0b24+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPHAgc3R5bGU9XCJmb250LXNpemU6MC43OHJlbTtjb2xvcjp2YXIoLS1tdXRlZClcIj5TZWN1cmUgcGF5bWVudC4gRXZlcnkgc2hla2VsIC8gZG9sbGFyIGhlbHBzLjwvcD4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDxwIHN0eWxlPVwiZm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi10b3A6MTZweFwiPllvdSBjYW4gYWxzbyBzdXBwb3J0IHVzIGJ5IHNoYXJpbmcgdGhlIHNpdGUgd2l0aCBvdGhlciBvbGltLCBjb250cmlidXRpbmcgYW5zd2VycywgYW5kIGZsYWdnaW5nIG91dGRhdGVkIGluZm9ybWF0aW9uLiBFdmVyeSBiaXQgY291bnRzITwvcD4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgPC9kaXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiI8L2Rpdj4ifV19LHsidHlwZSI6InBhcmFncmFwaCJ9LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IjwhLS0gTEFORyBNT0RBTCAtLT4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IjxkaXYgY2xhc3M9XCJtb2RhbC1vdmVybGF5XCIgaWQ9XCJsYW5nLW1vZGFsXCI+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIDxkaXYgY2xhc3M9XCJtb2RhbFwiPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDxoMz7wn4yQIENob29zZSBMYW5ndWFnZTwvaDM+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPHA+Q29udGVudCBpcyBhdXRvLXRyYW5zbGF0ZWQuIEZvciBjcml0aWNhbCBkZWNpc2lvbnMsIGFsd2F5cyB2ZXJpZnkgd2l0aCBvZmZpY2lhbCBzb3VyY2VzLjwvcD4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8ZGl2IGNsYXNzPVwidHJhbnNsYXRpb24tbm90aWNlXCI+4pqg77iPIElzcmFlbGkgYnVyZWF1Y3JhdGljIHRlcm1zIChUZXVkYXQgWmVodXQsIE1pc3JhZCBIYXBuaW0sIGV0Yy4pIGFyZSBrZXB0IGluIHRoZWlyIG9yaWdpbmFsIGZvcm0gd2l0aCB0b29sdGlwcyB0byBwcmV2ZW50IG1pc3RyYW5zbGF0aW9uLjwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDxkaXYgY2xhc3M9XCJsYW5nLWdyaWRcIiBpZD1cImxhbmctZ3JpZFwiPjwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDxidXR0b24gY2xhc3M9XCJtb2RhbC1jbG9zZVwiIG9uY2xpY2s9XCJjbG9zZUxhbmdNb2RhbCgpXCI+Q2xvc2U8L2J1dHRvbj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgPC9kaXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiI8L2Rpdj4ifV19LHsidHlwZSI6InBhcmFncmFwaCJ9LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IjxkaXYgY2xhc3M9XCJ0b2FzdFwiIGlkPVwidG9hc3RcIj48L2Rpdj4ifV19LHsidHlwZSI6InBhcmFncmFwaCJ9LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IjxzY3JpcHQ+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJjb25zdCBDQVRFR09SSUVTID0gWyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICB7aWQ6J2JhbmtpbmcnLGljb246J/Cfj6YnLG5hbWU6J0JhbmtpbmcnLGRlc2M6J0FjY291bnRzLCB0cmFuc2ZlcnMsIG1vcnRnYWdlcyd9LCJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICB7aWQ6J2hlYWx0aCcsaWNvbjon8J+PpScsbmFtZTonSGVhbHRoIEluc3VyYW5jZScsZGVzYzonS3VwYXQgSG9saW0sIGRvY3RvcnMsIGNvdmVyYWdlJ30sIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIHtpZDondGF4JyxpY29uOifwn5OKJyxuYW1lOidUYXgnLGRlc2M6J0luY29tZSB0YXgsIE1hcyBIYWNobmFzYSwgVkFUJ30sIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIHtpZDonaW50ZXJuZXQnLGljb246J/Cfk7YnLG5hbWU6J0ludGVybmV0ICYgUGhvbmUnLGRlc2M6J1Byb3ZpZGVycywgY29udHJhY3RzLCBTSU0gY2FyZHMnfSwifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAge2lkOidob3VzaW5nJyxpY29uOifwn4+gJyxuYW1lOidIb3VzaW5nJyxkZXNjOidSZW50aW5nLCBidXlpbmcsIEFybm9uYSd9LCJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICB7aWQ6J2dvdicsaWNvbjon8J+qqicsbmFtZTonR292ZXJubWVudCAmIElEcycsZGVzYzonVGV1ZGF0IFplaHV0LCBNaXNyYWQgSGFwbmltJ30sIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIHtpZDonZWR1Y2F0aW9uJyxpY29uOifwn46TJyxuYW1lOidFZHVjYXRpb24nLGRlc2M6J1NjaG9vbHMsIHVscGFuLCB1bml2ZXJzaXRpZXMnfSwifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAge2lkOid0cmFuc3BvcnQnLGljb246J/CfmownLG5hbWU6J1RyYW5zcG9ydCcsZGVzYzonRHJpdmluZyBsaWNlbmNlLCBSYXYtS2F2LCBidXNlcyd9LCJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICB7aWQ6J2VtcGxveW1lbnQnLGljb246J/CfkrwnLG5hbWU6J0VtcGxveW1lbnQnLGRlc2M6J0pvYnMsIGNvbnRyYWN0cywgcmlnaHRzJ30sIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIHtpZDonc29jaWFsJyxpY29uOifwn6SdJyxuYW1lOidTb2NpYWwgU2VjdXJpdHknLGRlc2M6J0JpdHVhY2ggTGV1bWksIGJlbmVmaXRzJ30sIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIHtpZDonY3VsdHVyZScsaWNvbjon8J+VjicsbmFtZTonQ3VsdHVyZSAmIExpZmUnLGRlc2M6J0N1c3RvbXMsIGhvbGlkYXlzLCBjb21tdW5pdHknfSwifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAge2lkOidvdGhlcicsaWNvbjon4p2TJyxuYW1lOidPdGhlcicsZGVzYzonQW55dGhpbmcgZWxzZSd9LCJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiXTsifV19LHsidHlwZSI6InBhcmFncmFwaCJ9LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6ImNvbnN0IFRJUFMgPSBbIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIFwiV2hlbiBvcGVuaW5nIGEgYmFuayBhY2NvdW50IGluIElzcmFlbCwgYnJpbmcgeW91ciBUZXVkYXQgT2xlaCwgcGFzc3BvcnQsIGFuZCBwcm9vZiBvZiBhZGRyZXNzLiBCYW5rIEhhcG9hbGltIGFuZCBCYW5rIExldW1pIGJvdGggaGF2ZSBkZWRpY2F0ZWQgT2xpbSBkZXBhcnRtZW50cyB3aXRoIEVuZ2xpc2gtc3BlYWtpbmcgc3RhZmYuXCIsIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIFwiUmVnaXN0ZXIgd2l0aCBhIEt1cGF0IEhvbGltIChoZWFsdGggZnVuZCkgd2l0aGluIDMgbW9udGhzIG9mIGFycml2aW5nLiBUaGUgNCBvcHRpb25zIGFyZSBDbGFsaXQsIE1hY2NhYmksIE1ldWhlZGV0LCBhbmQgTGV1bWl0LiBZb3UgY2FuIHN3aXRjaCBvbmNlIGEgeWVhciBpbiBOb3ZlbWJlci5cIiwifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgXCJUaGUgVGV1ZGF0IFplaHV0IChuYXRpb25hbCBJRCkgaXMgcmVxdWlyZWQgZm9yIGFsbW9zdCBldmVyeXRoaW5nIGluIElzcmFlbC4gS2VlcCBhIHBob3RvY29weSBhdCBob21lIGFuZCBhIHBob3RvIG9uIHlvdXIgcGhvbmUgYXQgYWxsIHRpbWVzLlwiLCJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBcIkFybm9uYSAobXVuaWNpcGFsIHRheCkgYmlsbHMgYXJlIHNlbnQgdHdpY2UgYSB5ZWFyLiBOZXcgb2xpbSBtYXkgYmUgZWxpZ2libGUgZm9yIGEgZGlzY291bnQg4oCUIGNoZWNrIHdpdGggeW91ciBsb2NhbCBtdW5pY2lwYWxpdHkgd2l0aGluIDkwIGRheXMgb2YgYXJyaXZhbC5cIiwifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgXCJUbyBjb252ZXJ0IHlvdXIgZm9yZWlnbiBkcml2aW5nIGxpY2VuY2UgaW4gSXNyYWVsLCB5b3UgbWF5IGJlIGV4ZW1wdCBmcm9tIHRha2luZyBhIGZ1bGwgdGVzdCBpZiB5b3VyIGNvdW50cnkgaGFzIGEgcmVjaXByb2NhbCBhZ3JlZW1lbnQuIENoZWNrIHdpdGggTWlzcmFkIEhhVGFjaGJ1cmEuXCIsIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJdOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIn0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoibGV0IHF1ZXN0aW9ucyA9IFsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAge2lkOjEsdGl0bGU6XCJIb3cgZG8gSSBvcGVuIGEgYmFuayBhY2NvdW50IGFzIGEgbmV3IG9sZWg/XCIsYm9keTpcIkkganVzdCBhcnJpdmVkIGxhc3Qgd2VlayBhbmQgSSdtIHRyeWluZyB0byBvcGVuIGEgYmFuayBhY2NvdW50LiBXaGF0IGRvY3VtZW50cyBkbyBJIG5lZWQgYW5kIHdoaWNoIGJhbmsgaXMgbW9zdCBvbGVoLWZyaWVuZGx5P1wiLGNhdDonYmFua2luZycsYXV0aG9yOidTYXJhaCBNLicsZGF0ZTonMjAyNC0xMi0xNScsdmlld3M6MzQyLGxhbmc6J0VOJyxhbnN3ZXJzOlsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICB7aWQ6MSxib2R5OlwiQmFuayBIYXBvYWxpbSBhbmQgQmFuayBMZXVtaSBib3RoIGhhdmUgZGVkaWNhdGVkIE9saW0gY2VudHJlcyB3aXRoIEVuZ2xpc2ggc3BlYWtpbmcgc3RhZmYuIEJyaW5nIHlvdXIgVGV1ZGF0IE9sZWgsIHBhc3Nwb3J0LCBhbmQgaWYgcG9zc2libGUgYSBwcm9vZiBvZiBhZGRyZXNzLiBUaGUgcHJvY2VzcyB1c3VhbGx5IHRha2VzIDEtMiB2aXNpdHMuIExldW1pJ3Mgb25saW5lIHByb2Nlc3MgaGFzIGltcHJvdmVkIGEgbG90IHJlY2VudGx5LlwiLGF1dGhvcjonRGF2aWQgSy4nLGRhdGU6JzIwMjQtMTItMTUnLHZvdGVzOjQ3LGZsYWdnZWQ6ZmFsc2UsdXNlclZvdGVkOmZhbHNlLGxhbmc6J0VOJ30sIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAge2lkOjIsYm9keTpcIkkgdXNlZCBEaXNjb3VudCBCYW5rIGFuZCBoYWQgYSBncmVhdCBleHBlcmllbmNlLiBUaGV5IHNldCB1cCBteSBhY2NvdW50IHRoZSBzYW1lIGRheSBhbmQgZ2F2ZSBtZSBhbiBFbmdsaXNoLWxhbmd1YWdlIGFwcC4gQWxzbyB3b3J0aCBhc2tpbmcgYWJvdXQgemVyby1mZWUgYWNjb3VudHMgZm9yIG5ldyBvbGltIOKAlCBtYW55IGJhbmtzIG9mZmVyIHRoZW0gZm9yIHRoZSBmaXJzdCB5ZWFyLlwiLGF1dGhvcjonTWlyaWFtIFQuJyxkYXRlOicyMDI0LTEyLTE2Jyx2b3RlczozMSxmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOidFTid9LCJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBdfSwifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAge2lkOjIsdGl0bGU6XCJXaGljaCBLdXBhdCBIb2xpbSBzaG91bGQgSSBqb2luP1wiLGJvZHk6XCJJIG5lZWQgdG8gcmVnaXN0ZXIgd2l0aCBhIGhlYWx0aCBmdW5kLiBXaGF0IGFyZSB0aGUgbWFpbiBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBmb3VyIG9wdGlvbnMgYW5kIHdoaWNoIGlzIGJlc3QgZm9yIEVuZ2xpc2ggc3BlYWtlcnM/XCIsY2F0OidoZWFsdGgnLGF1dGhvcjonSmFtZXMgUi4nLGRhdGU6JzIwMjQtMTItMTAnLHZpZXdzOjI4OSxsYW5nOidFTicsYW5zd2VyczpbIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAge2lkOjEsYm9keTpcIk1hY2NhYmkgaXMgZ2VuZXJhbGx5IGNvbnNpZGVyZWQgdGhlIG1vc3QgRW5nbGlzaC1mcmllbmRseSBhbmQgaGFzIGEgZ29vZCBhcHAuIENsYWxpdCBoYXMgdGhlIG1vc3QgZG9jdG9ycyBhbmQgY2xpbmljcyBidXQgdGhlIGFwcCBhbmQgc2VydmljZSBxdWFsaXR5IHZhcmllcy4gTWV1aGVkZXQgaXMgc3Ryb25nIGluIEplcnVzYWxlbS4gTGV1bWl0IGlzIHRoZSBzbWFsbGVzdCBidXQgb2Z0ZW4gaGFzIHNob3J0ZXIgd2FpdHMuXCIsYXV0aG9yOidZYWVsIFMuJyxkYXRlOicyMDI0LTEyLTExJyx2b3Rlczo1MixmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOidFTid9LCJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBdfSwifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAge2lkOjMsdGl0bGU6XCLXkNeZ15og16LXldeR15Mg15DXqNeg15XXoNeUINeV15DXnSDXnteS15nXoiDXnNeZINeU16DXl9eUP1wiLGJvZHk6XCLXp9eZ15HXnNeq15kg15fXqdeR15XXnyDXkNeo16DXldeg15Qg15XXkNeg15kg15zXkCDXkdeY15XXlyDXkNeZ15og157Xl9ep15HXmdedINeQ15XXqteVINeV15DXnSDXoteV15zXmdedINeX15PXqdeZ150g157Xp9eR15zXmdedINeU16TXl9eq15QuXCIsY2F0Oidob3VzaW5nJyxhdXRob3I6J9eo15XXoNefINeRLicsZGF0ZTonMjAyNC0xMi0wOCcsdmlld3M6MTc4LGxhbmc6J0hFJyxhbnN3ZXJzOlsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICB7aWQ6MSxib2R5Olwi15DXqNeg15XXoNeUINeU15nXkCDXntehINei15nXqNeV16DXmSDXqdee16nXnNee15nXnSDXnNei15nXqNeZ15Qg15TXnten15XXnteZ16ouINei15XXnNeZ150g15fXk9ep15nXnSDXlteb15DXmdedINec15TXoNeX15QgKNeR15PXqNeaINeb15zXnCA3MC05MCUpINec16nXoNeUINeU16jXkNep15XXoNeULiDXpteo15nXmiDXnNek16DXldeqINec16LXmdeo15nXlCDXlNee16fXldee15nXqiDXotedINeq16LXldeT16og15TXoteV15zXlCDXqteV15ogOTAg15nXldedINee15TXktei15QuINeQ15wg16rXpNeh16TXodeVINeQ16og15TXl9ec15XXnyDXlNeW15QhXCIsYXV0aG9yOifXmdei15wg16kuJyxkYXRlOicyMDI0LTEyLTA5Jyx2b3RlczozOSxmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOidIRSd9LCJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBdfSwifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAge2lkOjQsdGl0bGU6XCJCZXN0IG1vYmlsZSBwaG9uZSBwcm92aWRlciBmb3Igb2xpbT9cIixib2R5OlwiV2hhdCBTSU0gY2FyZCBvciBjb250cmFjdCBzaG91bGQgSSBnZXQ/IEkgbmVlZCBnb29kIGRhdGEgYW5kIGFmZm9yZGFibGUgY2FsbHMgdG8gdGhlIFVLLlwiLGNhdDonaW50ZXJuZXQnLGF1dGhvcjonRW1tYSBMLicsZGF0ZTonMjAyNC0xMi0wNScsdmlld3M6MjAxLGxhbmc6J0VOJyxhbnN3ZXJzOlsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICB7aWQ6MSxib2R5OlwiR29sYW4gVGVsZWNvbSBpcyB0aGUgYmVzdCB2YWx1ZSBmb3IgbW9zdCBvbGltIOKAlCBhcm91bmQg4oKqMzAvbW9udGggZm9yIHVubGltaXRlZCBkYXRhIGFuZCBjYWxscy4gUGFydG5lciBhbmQgQ2VsbGNvbSBhcmUgbW9yZSBleHBlbnNpdmUgYnV0IGhhdmUgYmV0dGVyIGNvdmVyYWdlIGluIHNvbWUgYXJlYXMuIEZvciBpbnRlcm5hdGlvbmFsIGNhbGxzIHRvIHRoZSBVSywgZ2V0IGEgV2hhdHNBcHAgbnVtYmVyIG9yIHVzZSBHb2xhbidzIGludGVybmF0aW9uYWwgYWRkLW9uLlwiLGF1dGhvcjonQXZpIEMuJyxkYXRlOicyMDI0LTEyLTA2Jyx2b3RlczoyOCxmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOidFTid9LCJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBdfSwifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6Il07In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgifSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJsZXQgbmV4dFFJZCA9IDUsIG5leHRBSWQgPSAxMDsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6ImxldCBjdXJyZW50Q2F0ID0gbnVsbCwgY3VycmVudFFJZCA9IG51bGwsIHByZXZQYWdlID0gJ2ZvcnVtJywgY3VycmVudExhbmcgPSAnRU4nOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIn0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiY29uc3QgTEFOR1MgPSBbIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIHtjb2RlOidFTicsZmxhZzon8J+HrPCfh6cnLG5hbWU6J0VuZ2xpc2gnLCAgbmF0aXZlOidFbmdsaXNoJ30sIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIHtjb2RlOidIRScsZmxhZzon8J+HrvCfh7EnLG5hbWU6J0hlYnJldycsICAgbmF0aXZlOifXoteR16jXmdeqJ30sIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIHtjb2RlOidSVScsZmxhZzon8J+Ht/Cfh7onLG5hbWU6J1J1c3NpYW4nLCAgbmF0aXZlOifQoNGD0YHRgdC60LjQuSd9LCJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICB7Y29kZTonRlInLGZsYWc6J/Cfh6vwn4e3JyxuYW1lOidGcmVuY2gnLCAgIG5hdGl2ZTonRnJhbsOnYWlzJ30sIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIHtjb2RlOidFUycsZmxhZzon8J+HqvCfh7gnLG5hbWU6J1NwYW5pc2gnLCAgbmF0aXZlOidFc3Bhw7FvbCd9LCJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICB7Y29kZTonQVInLGZsYWc6J/Cfh6bwn4eqJyxuYW1lOidBcmFiaWMnLCAgIG5hdGl2ZTon2KfZhNi52LHYqNmK2KknfSwifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAge2NvZGU6J0FNJyxmbGFnOifwn4eq8J+HuScsbmFtZTonQW1oYXJpYycsICBuYXRpdmU6J+GKoOGIm+GIreGKmyd9LCJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICB7Y29kZTonUFQnLGZsYWc6J/Cfh6fwn4e3JyxuYW1lOidQb3J0dWd1ZXNlJyxuYXRpdmU6J1BvcnR1Z3XDqnMnfSwifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6Il07In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgifSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJjb25zdCBDSEVDS0xJU1QgPSBbIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIHtzZWN0aW9uOidGaXJzdCAzMCBEYXlzJywgaWNvbjon8J+agCcsIGl0ZW1zOlsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAnQ29sbGVjdCBUZXVkYXQgT2xlaCBmcm9tIHRoZSBhaXJwb3J0IG9yIE1pc3JhZCBIYUFsaXlhaCcsIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgJ1JlZ2lzdGVyIGF0IE1pc3JhZCBIYUFsaXlhaCAoTWluaXN0cnkgb2YgQWxpeWFoKSBmb3IgYmVuZWZpdHMnLCJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICdBcHBseSBmb3IgVGV1ZGF0IFplaHV0IChOYXRpb25hbCBJRCkgYXQgTWlzcmFkIEhhcG5pbScsIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgJ1JlZ2lzdGVyIHdpdGggYSBLdXBhdCBIb2xpbSAoaGVhbHRoIGZ1bmQpJywifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAnT3BlbiBhIGJhbmsgYWNjb3VudCcsIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgJ0Vucm9sIGluIFVscGFuIChIZWJyZXcgbGFuZ3VhZ2UgY291cnNlKScsIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgJ1JlZ2lzdGVyIGNoaWxkcmVuIGF0IGxvY2FsIHNjaG9vbCcsIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIF19LCJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICB7c2VjdGlvbjonRmlyc3QgMyBNb250aHMnLCBpY29uOifwn5OFJywgaXRlbXM6WyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICdBcHBseSBmb3IgQXJub25hIChtdW5pY2lwYWwgdGF4KSBkaXNjb3VudCBhdCBsb2NhbCBJcml5YScsIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgJ1RyYW5zZmVyIG9yIG9idGFpbiBJc3JhZWxpIGRyaXZpbmcgbGljZW5jZScsIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgJ0FwcGx5IGZvciBCaXR1YWNoIExldW1pIChOYXRpb25hbCBJbnN1cmFuY2UpJywifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAnU2V0IHVwIGludGVybmV0IGF0IGhvbWUnLCJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICdSZWdpc3RlciB3aXRoIGEgbG9jYWwgZG9jdG9yICjXqNeV16TXkCDXntep16TXl9eUKScsIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgJ0pvaW4gbG9jYWwgb2xpbSBGYWNlYm9vay9XaGF0c0FwcCBncm91cHMnLCJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBdfSwifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAge3NlY3Rpb246J0ZpcnN0IFllYXInLCBpY29uOifwn5OGJywgaXRlbXM6WyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICdGaWxlIHlvdXIgZmlyc3QgSXNyYWVsaSB0YXggcmV0dXJuIGlmIHJlcXVpcmVkJywifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAnUmV2aWV3IHlvdXIgS3VwYXQgSG9saW0g4oCUIHlvdSBjYW4gc3dpdGNoIGV2ZXJ5IE5vdmVtYmVyJywifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAnQ2hlY2sgZW50aXRsZW1lbnQgdG8gT2xlaCBtb3J0Z2FnZSBiZW5lZml0cyAoTWlzaGthbnRhKScsIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgJ0FwcGx5IGZvciBhbnkgcmVtYWluaW5nIFNhbCBLbGl0YSAoYWJzb3JwdGlvbiBiYXNrZXQpIHBheW1lbnRzJywifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAnR2V0IHlvdXIgSXNyYWVsaSBkcml2aW5nIGxpY2VuY2UgaWYgeW91IGhhdmVuXFwndCBhbHJlYWR5JywifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgXX0sIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJdOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIn0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiZnVuY3Rpb24gc2hvd1BhZ2UocCwgZGF0YSl7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5wYWdlJykuZm9yRWFjaCh4PT54LmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhZ2UtJytwKS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgaWYocD09PSdob21lJykgcmVuZGVySG9tZUNhdHMoKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgaWYocD09PSdmb3J1bScpIHJlbmRlckZvcnVtKCk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGlmKHA9PT0nYmVzdG9mJykgcmVuZGVyQmVzdE9mKCk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGlmKHA9PT0nY2hlY2tsaXN0JykgcmVuZGVyQ2hlY2tsaXN0KCk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGlmKHA9PT0nc2VhcmNoJykgcmVuZGVyVGFnQ2xvdWQoKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgaWYocD09PSdjYXRzJykgcmVuZGVyQ2F0c1BhZ2UoKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgaWYocD09PSdjYXRlZ29yeScmJmRhdGEpe2N1cnJlbnRDYXQ9ZGF0YTtyZW5kZXJDYXRlZ29yeVBhZ2UoKTt9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGlmKHA9PT0ncXVlc3Rpb24nJiZkYXRhKXtjdXJyZW50UUlkPWRhdGE7cmVuZGVyUXVlc3Rpb24oKTt9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIHdpbmRvdy5zY3JvbGxUbygwLDApOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoifSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIn0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiZnVuY3Rpb24gcmVuZGVySG9tZUNhdHMoKXsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hvbWUtY2F0cycpLmlubmVySFRNTCA9IENBVEVHT1JJRVMubWFwKGM9PmAifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8ZGl2IGNsYXNzPVwiY2F0LWNhcmRcIiBvbmNsaWNrPVwicHJldlBhZ2U9J2hvbWUnO3Nob3dQYWdlKCdjYXRlZ29yeScsJyR7Yy5pZH0nKVwiPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICAgPGRpdiBjbGFzcz1cImNhdC1pY29uXCI+JHtjLmljb259PC9kaXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICA8aDQ+JHtjLm5hbWV9PC9oND4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAgIDxwPiR7Yy5kZXNjfTwvcD4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAgIDxwIHN0eWxlPVwiZm9udC1zaXplOjAuNzJyZW07Y29sb3I6dmFyKC0tYmx1ZSk7bWFyZ2luLXRvcDo2cHg7Zm9udC13ZWlnaHQ6NjAwXCI+JHtxdWVzdGlvbnMuZmlsdGVyKHE9PnEuY2F0PT09Yy5pZCkubGVuZ3RofSBxdWVzdGlvbnM8L3A+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPC9kaXY+YCkuam9pbignJyk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGNvbnN0IHRpcHMgPSBUSVBTOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGlwLXRleHQnKS50ZXh0Q29udGVudCA9IHRpcHNbTWF0aC5mbG9vcihEYXRlLm5vdygpLzg2NDAwMDAwKSV0aXBzLmxlbmd0aF07In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJ9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgifSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJmdW5jdGlvbiBzb3J0UXVlc3Rpb25zKHFzLCBtZXRob2QpeyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICByZXR1cm4gWy4uLnFzXS5zb3J0KChhLGIpPT57In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgaWYobWV0aG9kPT09J25ld2VzdCcpIHJldHVybiBiLmlkLWEuaWQ7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgaWYobWV0aG9kPT09J21vc3RfYW5zd2VycycpIHJldHVybiBiLmFuc3dlcnMubGVuZ3RoLWEuYW5zd2Vycy5sZW5ndGg7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgaWYobWV0aG9kPT09J2hpZ2hlc3RfcmF0ZWQnKSByZXR1cm4gbWF4Vm90ZXMoYiktbWF4Vm90ZXMoYSk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgaWYobWV0aG9kPT09J21vc3Rfdmlld2VkJykgcmV0dXJuIGIudmlld3MtYS52aWV3czsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICByZXR1cm4gYi5pZC1hLmlkOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICB9KTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6In0ifV19LHsidHlwZSI6InBhcmFncmFwaCJ9LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6ImZ1bmN0aW9uIG1heFZvdGVzKHEpe3JldHVybiBxLmFuc3dlcnMubGVuZ3RoP01hdGgubWF4KC4uLnEuYW5zd2Vycy5tYXAoYT0+YS52b3RlcykpOjA7fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiZnVuY3Rpb24gYXZnVm90ZXMocSl7cmV0dXJuIHEuYW5zd2Vycy5sZW5ndGg/cS5hbnN3ZXJzLnJlZHVjZSgocyxhKT0+cythLnZvdGVzLDApL3EuYW5zd2Vycy5sZW5ndGg6MDt9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgifSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJmdW5jdGlvbiByZW5kZXJGb3J1bSgpeyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBjb25zdCBzb3J0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZvcnVtLXNvcnQnKT8udmFsdWV8fCduZXdlc3QnOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBjb25zdCBxcyA9IHNvcnRRdWVzdGlvbnMocXVlc3Rpb25zLCBzb3J0KTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgY29uc3QgY2F0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtY2F0Jyk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGlmKGNhdCkgY2F0LmlubmVySFRNTD0nPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBhIGNhdGVnb3J5Li4uPC9vcHRpb24+JytDQVRFR09SSUVTLm1hcChjPT5gPG9wdGlvbiB2YWx1ZT1cIiR7Yy5pZH1cIj4ke2MuaWNvbn0gJHtjLm5hbWV9PC9vcHRpb24+YCkuam9pbignJyk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb3J1bS1saXN0JykuaW5uZXJIVE1MID0gcXMubGVuZ3RoID8gcXMubWFwKHE9PnFDYXJkKHEsJ2ZvcnVtJykpLmpvaW4oJycpIDogZW1wdHlTdGF0ZSgnTm8gcXVlc3Rpb25zIHlldC4gQmUgdGhlIGZpcnN0IHRvIGFzayEnKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6In0ifV19LHsidHlwZSI6InBhcmFncmFwaCJ9LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6ImZ1bmN0aW9uIHJlbmRlckNhdGVnb3J5UGFnZSgpeyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBjb25zdCBjYXQgPSBDQVRFR09SSUVTLmZpbmQoYz0+Yy5pZD09PWN1cnJlbnRDYXQpOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBpZighY2F0KSByZXR1cm47In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXQtcGFnZS10aXRsZScpLnRleHRDb250ZW50ID0gY2F0Lmljb24rJyAnK2NhdC5uYW1lOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0LXBhZ2UtZGVzYycpLnRleHRDb250ZW50ID0gY2F0LmRlc2M7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGNvbnN0IHNvcnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0LXNvcnQnKT8udmFsdWV8fCduZXdlc3QnOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBjb25zdCBxcyA9IHNvcnRRdWVzdGlvbnMocXVlc3Rpb25zLmZpbHRlcihxPT5xLmNhdD09PWN1cnJlbnRDYXQpLCBzb3J0KTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdC1wYWdlLWxpc3QnKS5pbm5lckhUTUwgPSBxcy5sZW5ndGggPyBxcy5tYXAocT0+cUNhcmQocSwnY2F0ZWdvcnknKSkuam9pbignJykgOiBlbXB0eVN0YXRlKCdObyBxdWVzdGlvbnMgaW4gdGhpcyBjYXRlZ29yeSB5ZXQuJyk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJ9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgifSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJmdW5jdGlvbiBxQ2FyZChxLGZyb20peyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBjb25zdCB0b3BWb3RlcyA9IHEuYW5zd2Vycy5sZW5ndGg/TWF0aC5tYXgoLi4ucS5hbnN3ZXJzLm1hcChhPT5hLnZvdGVzKSk6MDsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgY29uc3QgY2F0ID0gQ0FURUdPUklFUy5maW5kKGM9PmMuaWQ9PT1xLmNhdCk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIHJldHVybiBgPGRpdiBjbGFzcz1cInEtY2FyZFwiIG9uY2xpY2s9XCJwcmV2UGFnZT0nJHtmcm9tfSc7c2hvd1BhZ2UoJ3F1ZXN0aW9uJywke3EuaWR9KVwiPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDxkaXYgY2xhc3M9XCJxLW1ldGFcIj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAgIDxzcGFuIGNsYXNzPVwicS1jYXQtYmFkZ2VcIj4ke2NhdD9jYXQuaWNvbisnICcrY2F0Lm5hbWU6cS5jYXR9PC9zcGFuPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICAgPHNwYW4gY2xhc3M9XCJxLWF1dGhvclwiPvCfkaQgJHtxLmF1dGhvcn08L3NwYW4+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICA8c3BhbiBjbGFzcz1cInEtZGF0ZVwiPvCfk4UgJHtxLmRhdGV9PC9zcGFuPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICAgJHt0b3BWb3Rlcz49MzA/YDxzcGFuIGNsYXNzPVwiZmVhdHVyZWQtYmFkZ2VcIj7irZAgRmVhdHVyZWQ8L3NwYW4+YDonJ30ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8L2Rpdj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8ZGl2IGNsYXNzPVwicS10aXRsZVwiPiR7cS50aXRsZX08L2Rpdj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8ZGl2IGNsYXNzPVwicS1wcmV2aWV3XCI+JHtxLmJvZHkuc3Vic3RyaW5nKDAsMTIwKX0ke3EuYm9keS5sZW5ndGg+MTIwPycuLi4nOicnfTwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDxkaXYgY2xhc3M9XCJxLXN0YXRzXCI+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICA8c3Bhbj7wn5KsICR7cS5hbnN3ZXJzLmxlbmd0aH0gYW5zd2VyJHtxLmFuc3dlcnMubGVuZ3RoIT09MT8ncyc6Jyd9PC9zcGFuPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICAgPHNwYW4+8J+RgSAke3Eudmlld3N9IHZpZXdzPC9zcGFuPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICAgPHNwYW4+4q2QIFRvcCB2b3RlOiAke3RvcFZvdGVzfTwvc3Bhbj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8L2Rpdj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLXRvcDo2cHhcIj4ke2xhbmdCYWRnZShxLmxhbmcpfTwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICA8L2Rpdj5gOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoifSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIn0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiZnVuY3Rpb24gcmVuZGVyUXVlc3Rpb24oKXsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgY29uc3QgcSA9IHF1ZXN0aW9ucy5maW5kKHg9PnguaWQ9PT1jdXJyZW50UUlkKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgaWYoIXEpe3JldHVybjt9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIHEudmlld3MrKzsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgY29uc3QgY2F0ID0gQ0FURUdPUklFUy5maW5kKGM9PmMuaWQ9PT1xLmNhdCk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLWZ1bGwtY29udGVudCcpLmlubmVySFRNTD1gIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPGRpdiBjbGFzcz1cInEtbWV0YVwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbToxMnB4XCI+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICA8c3BhbiBjbGFzcz1cInEtY2F0LWJhZGdlXCIgc3R5bGU9XCJjdXJzb3I6cG9pbnRlclwiIG9uY2xpY2s9XCJzaG93UGFnZSgnY2F0ZWdvcnknLCcke3EuY2F0fScpXCI+JHtjYXQ/Y2F0Lmljb24rJyAnK2NhdC5uYW1lOnEuY2F0fTwvc3Bhbj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAgIDxzcGFuIGNsYXNzPVwicS1hdXRob3JcIj7wn5GkICR7cS5hdXRob3J9PC9zcGFuPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICAgPHNwYW4gY2xhc3M9XCJxLWRhdGVcIj7wn5OFICR7cS5kYXRlfTwvc3Bhbj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8L2Rpdj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8aDI+JHtxLnRpdGxlfTwvaDI+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPGRpdiBjbGFzcz1cImJvZHlcIiBzdHlsZT1cIm1hcmdpbi10b3A6MTJweFwiPiR7cS5ib2R5fTwvZGl2PmA7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGNvbnN0IHNvcnRlZCA9IFsuLi5xLmFuc3dlcnNdLnNvcnQoKGEsYik9PmIudm90ZXMtYS52b3Rlcyk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbnN3ZXJzLWNvdW50JykudGV4dENvbnRlbnQgPSBgJHtxLmFuc3dlcnMubGVuZ3RofSBBbnN3ZXIke3EuYW5zd2Vycy5sZW5ndGghPT0xPydzJzonJ31gOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zd2Vycy1saXN0JykuaW5uZXJIVE1MID0gc29ydGVkLmxlbmd0aCA/IHNvcnRlZC5tYXAoKGEsaSk9PmAifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8ZGl2IGNsYXNzPVwiYW5zd2VyLWNhcmQgJHtpPT09MCYmYS52b3Rlcz4wPyd0b3AtYW5zd2VyJzonJ31cIj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAgICR7aT09PTAmJmEudm90ZXM+MD8nPGRpdiBjbGFzcz1cInRvcC1hbnN3ZXItbGFiZWxcIj7irZAgVG9wIEFuc3dlcjwvZGl2Pic6Jyd9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICA8ZGl2IGNsYXNzPVwiYW5zd2VyLWJvZHlcIj4ke2EuYm9keX08L2Rpdj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tYm90dG9tOjhweFwiPiR7bGFuZ0JhZGdlKGEubGFuZyl9PC9kaXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICA8ZGl2IGNsYXNzPVwiYW5zd2VyLWZvb3RlclwiPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICAgICA8ZGl2IGNsYXNzPVwiYW5zd2VyLW1ldGFcIj7wn5GkICR7YS5hdXRob3J9IMK3IPCfk4UgJHthLmRhdGV9PC9kaXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICAgIDxkaXYgY2xhc3M9XCJ2b3RlLWJ0bnNcIj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidm90ZS1idG4gJHthLnVzZXJWb3RlZD8nbGlrZWQnOicnfVwiIG9uY2xpY2s9XCJ2b3RlKCR7cS5pZH0sJHthLmlkfSlcIj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAgICAgICAgIPCfkY0gJHthLnZvdGVzfSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICAgICAgIDwvYnV0dG9uPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJmbGFnLWJ0blwiIG9uY2xpY2s9XCJmbGFnQW5zd2VyKCR7cS5pZH0sJHthLmlkfSlcIj7wn5qpICR7YS5mbGFnZ2VkPydGbGFnZ2VkJzonRmxhZyd9PC9idXR0b24+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICAgIDwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICAgPC9kaXY+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICAke2EuZmxhZ2dlZD8nPGRpdiBzdHlsZT1cImZvbnQtc2l6ZTowLjc1cmVtO2NvbG9yOnZhcigtLXJlZCk7bWFyZ2luLXRvcDo4cHhcIj7imqDvuI8gVGhpcyBhbnN3ZXIgaGFzIGJlZW4gZmxhZ2dlZCBmb3IgcmV2aWV3LiBQbGVhc2UgdmVyaWZ5IHdpdGggb2ZmaWNpYWwgc291cmNlcy48L2Rpdj4nOicnfSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDwvZGl2PmApLmpvaW4oJycpIDogJzxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiPjxkaXYgY2xhc3M9XCJpY29uXCI+8J+SrDwvZGl2PjxwPk5vIGFuc3dlcnMgeWV0LiBCZSB0aGUgZmlyc3QgdG8gaGVscCE8L3A+PC9kaXY+JzsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6In0ifV19LHsidHlwZSI6InBhcmFncmFwaCJ9LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6ImZ1bmN0aW9uIGdvQmFjaygpe3Nob3dQYWdlKHByZXZQYWdlPT09J2NhdGVnb3J5Jz8nY2F0ZWdvcnknOidmb3J1bScsIHByZXZQYWdlPT09J2NhdGVnb3J5Jz9jdXJyZW50Q2F0Om51bGwpO30ifV19LHsidHlwZSI6InBhcmFncmFwaCJ9LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6ImZ1bmN0aW9uIHRvZ2dsZUFza0JhcigpeyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBjb25zdCBiID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fzay1iYXInKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgYi5zdHlsZS5kaXNwbGF5ID0gYi5zdHlsZS5kaXNwbGF5PT09J25vbmUnPydibG9jayc6J25vbmUnOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoifSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiZnVuY3Rpb24gY2FuY2VsQXNrKCl7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLXRpdGxlJykudmFsdWU9Jyc7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLWJvZHknKS52YWx1ZT0nJzsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtY2F0JykudmFsdWU9Jyc7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLW5hbWUnKS52YWx1ZT0nJzsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fzay1iYXInKS5zdHlsZS5kaXNwbGF5PSdub25lJzsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6In0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6ImZ1bmN0aW9uIHJlbmRlckNhdHNQYWdlKCl7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXRzLWdyaWQnKS5pbm5lckhUTUwgPSBDQVRFR09SSUVTLm1hcChjPT5gIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPGRpdiBjbGFzcz1cImNhdC1jYXJkXCIgb25jbGljaz1cInByZXZQYWdlPSdjYXRzJztzaG93UGFnZSgnY2F0ZWdvcnknLCcke2MuaWR9JylcIj4ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAgIDxkaXYgY2xhc3M9XCJjYXQtaWNvblwiPiR7Yy5pY29ufTwvZGl2PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICAgPGg0PiR7Yy5uYW1lfTwvaDQ+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICA8cD4ke2MuZGVzY308L3A+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICA8cCBzdHlsZT1cImZvbnQtc2l6ZTowLjcycmVtO2NvbG9yOnZhcigtLWJsdWUpO21hcmdpbi10b3A6NnB4O2ZvbnQtd2VpZ2h0OjYwMFwiPiR7cXVlc3Rpb25zLmZpbHRlcihxPT5xLmNhdD09PWMuaWQpLmxlbmd0aH0gcXVlc3Rpb25zPC9wPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDwvZGl2PmApLmpvaW4oJycpOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoifSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIn0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiZnVuY3Rpb24gc3VibWl0UXVlc3Rpb24oKXsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgY29uc3QgdGl0bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS10aXRsZScpLnZhbHVlLnRyaW0oKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgY29uc3QgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLWJvZHknKS52YWx1ZS50cmltKCk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGNvbnN0IGNhdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLWNhdCcpLnZhbHVlOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBjb25zdCBuYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtbmFtZScpLnZhbHVlLnRyaW0oKXx8J0Fub255bW91cyc7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGlmKCF0aXRsZXx8IWJvZHl8fCFjYXQpe3Nob3dUb2FzdCgnUGxlYXNlIGZpbGwgaW4gYWxsIGZpZWxkcyDinYwnKTtyZXR1cm47fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBxdWVzdGlvbnMudW5zaGlmdCh7aWQ6bmV4dFFJZCsrLHRpdGxlLGJvZHksY2F0LGF1dGhvcjpuYW1lLGRhdGU6bmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNsaWNlKDAsMTApLHZpZXdzOjAsbGFuZzpjdXJyZW50TGFuZyxhbnN3ZXJzOltdfSk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLXRpdGxlJykudmFsdWU9Jyc7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLWJvZHknKS52YWx1ZT0nJzsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtY2F0JykudmFsdWU9Jyc7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLW5hbWUnKS52YWx1ZT0nJzsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgdG9nZ2xlQXNrQmFyKCk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIHJlbmRlckZvcnVtKCk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIHNob3dUb2FzdCgnUXVlc3Rpb24gcG9zdGVkISDinIUnKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6In0ifV19LHsidHlwZSI6InBhcmFncmFwaCJ9LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6ImZ1bmN0aW9uIHN1Ym1pdEFuc3dlcigpeyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBjb25zdCBxID0gcXVlc3Rpb25zLmZpbmQoeD0+eC5pZD09PWN1cnJlbnRRSWQpOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBpZighcSkgcmV0dXJuOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBjb25zdCBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fucy1ib2R5JykudmFsdWUudHJpbSgpOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBjb25zdCBuYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fucy1uYW1lJykudmFsdWUudHJpbSgpfHwnQW5vbnltb3VzJzsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgaWYoIWJvZHkpe3Nob3dUb2FzdCgnUGxlYXNlIHdyaXRlIGFuIGFuc3dlciDinYwnKTtyZXR1cm47fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBxLmFuc3dlcnMucHVzaCh7aWQ6bmV4dEFJZCsrLGJvZHksYXV0aG9yOm5hbWUsZGF0ZTpuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwxMCksdm90ZXM6MCxmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOmN1cnJlbnRMYW5nfSk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbnMtYm9keScpLnZhbHVlPScnOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zLW5hbWUnKS52YWx1ZT0nJzsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgcmVuZGVyUXVlc3Rpb24oKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgc2hvd1RvYXN0KCdBbnN3ZXIgcG9zdGVkISDinIUnKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6In0ifV19LHsidHlwZSI6InBhcmFncmFwaCJ9LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6ImZ1bmN0aW9uIHZvdGUocUlkLGFJZCl7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGNvbnN0IHEgPSBxdWVzdGlvbnMuZmluZCh4PT54LmlkPT09cUlkKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgY29uc3QgYSA9IHE/LmFuc3dlcnMuZmluZCh4PT54LmlkPT09YUlkKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgaWYoIWEpIHJldHVybjsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgYS51c2VyVm90ZWQ9IWEudXNlclZvdGVkOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBhLnZvdGVzKz1hLnVzZXJWb3RlZD8xOi0xOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICByZW5kZXJRdWVzdGlvbigpOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoifSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIn0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiZnVuY3Rpb24gZmxhZ0Fuc3dlcihxSWQsYUlkKXsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgY29uc3QgcSA9IHF1ZXN0aW9ucy5maW5kKHg9PnguaWQ9PT1xSWQpOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBjb25zdCBhID0gcT8uYW5zd2Vycy5maW5kKHg9PnguaWQ9PT1hSWQpOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBpZighYSkgcmV0dXJuOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBhLmZsYWdnZWQ9IWEuZmxhZ2dlZDsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgcmVuZGVyUXVlc3Rpb24oKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgc2hvd1RvYXN0KGEuZmxhZ2dlZD8nQW5zd2VyIGZsYWdnZWQgZm9yIHJldmlldyDwn5qpJzonRmxhZyByZW1vdmVkJyk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJ9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgifSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJmdW5jdGlvbiByZW5kZXJCZXN0T2YoZmlsdGVyQ2F0KXsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgY29uc3QgZmlsdGVycyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZXN0b2YtZmlsdGVycycpOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBmaWx0ZXJzLmlubmVySFRNTCA9IENBVEVHT1JJRVMubWFwKGM9PmA8YnV0dG9uIGNsYXNzPVwiZmlsdGVyLWJ0blwiIG9uY2xpY2s9XCJmaWx0ZXJCZXN0T2YoJyR7Yy5pZH0nLHRoaXMpXCI+JHtjLmljb259ICR7Yy5uYW1lfTwvYnV0dG9uPmApLmpvaW4oJycpOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBjb25zdCB0aHJlc2hvbGQgPSAyMDsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgbGV0IHFzID0gcXVlc3Rpb25zLmZpbHRlcihxPT5tYXhWb3RlcyhxKT49dGhyZXNob2xkIHx8IGF2Z1ZvdGVzKHEpPj0xNSk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGlmKGZpbHRlckNhdCYmZmlsdGVyQ2F0IT09J2FsbCcpIHFzPXFzLmZpbHRlcihxPT5xLmNhdD09PWZpbHRlckNhdCk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIHFzLnNvcnQoKGEsYik9Pm1heFZvdGVzKGIpLW1heFZvdGVzKGEpKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jlc3RvZi1saXN0JykuaW5uZXJIVE1MID0gcXMubGVuZ3RoIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPyBgPHAgc3R5bGU9XCJmb250LXNpemU6MC44MnJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLWJvdHRvbToxNnB4XCI+U2hvd2luZyAke3FzLmxlbmd0aH0gaGlnaGx5LXJhdGVkIHF1ZXN0aW9uJHtxcy5sZW5ndGghPT0xPydzJzonJ308L3A+YCtxcy5tYXAocT0+cUNhcmQocSwnYmVzdG9mJykpLmpvaW4oJycpIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgOiBlbXB0eVN0YXRlKCdBcyB0aGUgY29tbXVuaXR5IGdyb3dzLCB0b3AtcmF0ZWQgYW5zd2VycyB3aWxsIGFwcGVhciBoZXJlLiBTdGFydCBhbnN3ZXJpbmcgcXVlc3Rpb25zIScpOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoifSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIn0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiZnVuY3Rpb24gZmlsdGVyQmVzdE9mKGNhdCxidG4peyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZmlsdGVyLWJ0bicpLmZvckVhY2goYj0+Yi5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKSk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGlmKGJ0bikgYnRuLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICByZW5kZXJCZXN0T2YoY2F0PT09J2FsbCc/bnVsbDpjYXQpOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoifSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIn0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiZnVuY3Rpb24gcmVuZGVyQ2hlY2tsaXN0KCl7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGNvbnN0IHNhdmVkID0ge307In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIHRyeXtjb25zdCBzPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NoZWNrbGlzdCcpO2lmKHMpT2JqZWN0LmFzc2lnbihzYXZlZCxKU09OLnBhcnNlKHMpKTt9Y2F0Y2goZSl7fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hlY2tsaXN0LWNvbnRlbnQnKS5pbm5lckhUTUwgPSBDSEVDS0xJU1QubWFwKChzLHNpKT0+YCJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDxkaXYgY2xhc3M9XCJjaGVja2xpc3Qtc2VjdGlvblwiPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICAgPGgzPiR7cy5pY29ufSAke3Muc2VjdGlvbn08L2gzPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICAgJHtzLml0ZW1zLm1hcCgoaXRlbSxpaSk9PnsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICAgICAgY29uc3Qga2V5PWAke3NpfS0ke2lpfWA7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz1cImNoZWNrbGlzdC1pdGVtXCI+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwiY2hrLSR7a2V5fVwiICR7c2F2ZWRba2V5XT8nY2hlY2tlZCc6Jyd9IG9uY2hhbmdlPVwic2F2ZUNoZWNrKCcke2tleX0nLHRoaXMuY2hlY2tlZClcIiAvPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgICAgICAgIDxsYWJlbCBmb3I9XCJjaGstJHtrZXl9XCI+JHtpdGVtfTwvbGFiZWw+In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICAgIDwvZGl2PmA7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgICB9KS5qb2luKCcnKX0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICA8L2Rpdj5gKS5qb2luKCcnKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6In0ifV19LHsidHlwZSI6InBhcmFncmFwaCJ9LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6ImZ1bmN0aW9uIHNhdmVDaGVjayhrZXksdmFsKXsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgdHJ5eyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIGNvbnN0IHM9c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY2hlY2tsaXN0Jyk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgY29uc3QgZGF0YT1zP0pTT04ucGFyc2Uocyk6e307In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgZGF0YVtrZXldPXZhbDsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdjaGVja2xpc3QnLEpTT04uc3RyaW5naWZ5KGRhdGEpKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgfWNhdGNoKGUpe30ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6In0ifV19LHsidHlwZSI6InBhcmFncmFwaCJ9LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6ImZ1bmN0aW9uIHJlbmRlclRhZ0Nsb3VkKCl7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGNvbnN0IHRhZ3M9WydCYW5raW5nJywnSGVhbHRoIEluc3VyYW5jZScsJ1RldWRhdCBaZWh1dCcsJ0t1cGF0IEhvbGltJywnVGF4JywnQXJub25hJywnQml0dWFjaCBMZXVtaScsJ1VscGFuJywnSW50ZXJuZXQnLCdQaG9uZScsJ0hvdXNpbmcnLCdEcml2aW5nIExpY2VuY2UnLCdTY2hvb2wnLCdFbXBsb3ltZW50JywnTWlzcmFkIEhhcG5pbSddOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFnLWNsb3VkJykuaW5uZXJIVE1MPXRhZ3MubWFwKHQ9PmA8c3BhbiBjbGFzcz1cInRhZy1jbG91ZC1pdGVtXCIgb25jbGljaz1cInNlYXJjaFRhZygnJHt0fScpXCI+JHt0fTwvc3Bhbj5gKS5qb2luKCcnKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6In0ifV19LHsidHlwZSI6InBhcmFncmFwaCJ9LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6ImZ1bmN0aW9uIHNlYXJjaFRhZyh0KXsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlYXJjaC1pbnB1dCcpLnZhbHVlPXQ7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGRvU2VhcmNoKCk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJ9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgifSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJmdW5jdGlvbiBkb1NlYXJjaCgpeyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBjb25zdCB0ZXJtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlYXJjaC1pbnB1dCcpLnZhbHVlLnRvTG93ZXJDYXNlKCkudHJpbSgpOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBpZighdGVybSl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlYXJjaC1yZXN1bHRzJykuaW5uZXJIVE1MPScnO3JldHVybjt9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGNvbnN0IHJlc3VsdHMgPSBxdWVzdGlvbnMuZmlsdGVyKHE9PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIHEudGl0bGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKXx8In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgcS5ib2R5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSl8fCJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIHEuYW5zd2Vycy5zb21lKGE9PmEuYm9keS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pKXx8In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgKENBVEVHT1JJRVMuZmluZChjPT5jLmlkPT09cS5jYXQpPy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSkpIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWFyY2gtcmVzdWx0cycpLmlubmVySFRNTCA9IHJlc3VsdHMubGVuZ3RoIn1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgICAgPyBgPHAgc3R5bGU9XCJmb250LXNpemU6MC44MnJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLWJvdHRvbToxNnB4XCI+JHtyZXN1bHRzLmxlbmd0aH0gcmVzdWx0JHtyZXN1bHRzLmxlbmd0aCE9PTE/J3MnOicnfSBmb3IgXCI8c3Ryb25nPiR7dGVybX08L3N0cm9uZz5cIjwvcD5gK3Jlc3VsdHMubWFwKHE9PnFDYXJkKHEsJ3NlYXJjaCcpKS5qb2luKCcnKSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIDogYDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiPjxkaXYgY2xhc3M9XCJpY29uXCI+8J+UjTwvZGl2PjxwPk5vIHJlc3VsdHMgZm91bmQgZm9yIFwiPHN0cm9uZz4ke3Rlcm19PC9zdHJvbmc+XCIuIFRyeSBhIGRpZmZlcmVudCBrZXl3b3JkIG9yIDxhIGhyZWY9XCIjXCIgb25jbGljaz1cInNob3dQYWdlKCdmb3J1bScpO3JldHVybiBmYWxzZTtcIiBzdHlsZT1cImNvbG9yOnZhcigtLWJsdWUpXCI+YXNrIGEgcXVlc3Rpb248L2E+ITwvcD48L2Rpdj5gOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoifSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIn0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiZnVuY3Rpb24gbGFuZ0ZsYWcoY29kZSl7cmV0dXJuIChMQU5HUy5maW5kKGw9PmwuY29kZT09PWNvZGUpfHx7ZmxhZzon8J+MkCd9KS5mbGFnO30ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6ImZ1bmN0aW9uIGxhbmdOYW1lKGNvZGUpe3JldHVybiAoTEFOR1MuZmluZChsPT5sLmNvZGU9PT1jb2RlKXx8e25hbWU6Y29kZX0pLm5hbWU7fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiZnVuY3Rpb24gbGFuZ05hdGl2ZShjb2RlKXtyZXR1cm4gKExBTkdTLmZpbmQobD0+bC5jb2RlPT09Y29kZSl8fHtuYXRpdmU6Y29kZX0pLm5hdGl2ZTt9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJmdW5jdGlvbiBsYW5nQmFkZ2UoaXRlbUxhbmcpeyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBjb25zdCB0cmFuc2xhdGVkID0gaXRlbUxhbmcgJiYgaXRlbUxhbmchPT1jdXJyZW50TGFuZzsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgaWYoIWl0ZW1MYW5nKSByZXR1cm4gJyc7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIHJldHVybiBgPHNwYW4gc3R5bGU9XCJmb250LXNpemU6MC43MnJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweDttYXJnaW4tdG9wOjRweFwiPiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICAgIE9yaWdpbmFsbHkgaW4gJHtsYW5nTmF0aXZlKGl0ZW1MYW5nKX0ke3RyYW5zbGF0ZWQ/JyDCtyA8c3BhbiBzdHlsZT1cImNvbG9yOnZhcigtLWJsdWUpO2ZvbnQtd2VpZ2h0OjYwMFwiPvCflIQgQXV0by10cmFuc2xhdGVkPC9zcGFuPic6Jyd9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIDwvc3Bhbj5gOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoifSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiZnVuY3Rpb24gb3BlbkxhbmdNb2RhbCgpeyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFuZy1tb2RhbCcpLmNsYXNzTGlzdC5hZGQoJ29wZW4nKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xhbmctZ3JpZCcpLmlubmVySFRNTD1MQU5HUy5tYXAobD0+YDxkaXYgY2xhc3M9XCJsYW5nLW9wdGlvbiAke2wuY29kZT09PWN1cnJlbnRMYW5nPydhY3RpdmUnOicnfVwiIG9uY2xpY2s9XCJzZWxlY3RMYW5nKCcke2wuY29kZX0nLHRoaXMpXCI+JHtsLm5hdGl2ZX08L2Rpdj5gKS5qb2luKCcnKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6In0ifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6ImZ1bmN0aW9uIGNsb3NlTGFuZ01vZGFsKCl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xhbmctbW9kYWwnKS5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyk7fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiZnVuY3Rpb24gc2VsZWN0TGFuZyhjb2RlLGVsKXsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgY3VycmVudExhbmc9Y29kZTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmxhbmctb3B0aW9uJykuZm9yRWFjaCh4PT54LmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgZWwuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5sYW5nLWJ0bicpLnRleHRDb250ZW50PWxhbmdGbGFnKGNvZGUpOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBzZXRUaW1lb3V0KCgpPT57Y2xvc2VMYW5nTW9kYWwoKTtzaG93VG9hc3QoJ0xhbmd1YWdlIHNldCB0byAnK2xhbmdOYW1lKGNvZGUpKycg4oCUIGF1dG8tdHJhbnNsYXRpb24gYWN0aXZlIPCfjJAnKTt9LDMwMCk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJ9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgifSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJmdW5jdGlvbiBzZWxlY3RBbW91bnQoYnRuLHYpeyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuYW1vdW50LWJ0bicpLmZvckVhY2goYj0+Yi5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgYnRuLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJyk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJ9In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgifSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJmdW5jdGlvbiBzaG93VG9hc3QobXNnKXsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgY29uc3QgdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9hc3QnKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IiAgdC50ZXh0Q29udGVudD1tc2c7dC5jbGFzc0xpc3QuYWRkKCdzaG93Jyk7In1dfSx7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIgIHNldFRpbWVvdXQoKCk9PnQuY2xhc3NMaXN0LnJlbW92ZSgnc2hvdycpLDMwMDApOyJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoifSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiZnVuY3Rpb24gZW1wdHlTdGF0ZShtc2cpe3JldHVybiBgPGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCI+PGRpdiBjbGFzcz1cImljb25cIj7wn5KsPC9kaXY+PHA+JHttc2d9PC9wPjwvZGl2PmA7fSJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIn0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiLy8gSW5pdCJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoicmVuZGVySG9tZUNhdHMoKTsifV19LHsidHlwZSI6InBhcmFncmFwaCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6Ijwvc2NyaXB0PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiPC9ib2R5PiJ9XX0seyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiPC9odG1sPiJ9XX1dfVIgFfhyerZ+/xNhFcbvDqAw0wk32lZ7gMboDJyW2cAAkGSKASQ0NzE1NmVkZC0xYTQ3LTQ4ODMtODM2ZS0zNGUyNTM3NDdkNzA=", "8de062ebde37177a522a708075802539d6ee52f5387387579090e9577be0f977": "CjMKMVdyaXRpbmcgeW91ciBPbGltQW5zd2VycyBIVE1MIGludG8gYGluZGV4Lmh0bWxgLgo=", "c267eddde690c801de5564bd89fbd17cbeb69c5cd494a532e0e9beb569e876e1": "EsuFCGKMhQgK6dQCChlDOlxVc2Vyc1xyb2xpa1xpbmRleC5odG1sMsrUAjwhRE9DVFlQRSBodG1sPgo8aHRtbCBsYW5nPSJlbiI+CjxoZWFkPgo8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIj4KPHRpdGxlPk9saW1BbnN3ZXJzLmNvbTwvdGl0bGU+CjxzdHlsZT4KICA6cm9vdCB7CiAgICAtLWJsdWU6IzFhNWZhODstLWJsdWUtbGlnaHQ6I2U4ZjBmYjstLWdvbGQ6I2YwYjQyOTstLWdvbGQtbGlnaHQ6I2ZmZjhlNzsKICAgIC0tZ3JlZW46IzFhOGE0YTstLXJlZDojYzAzOTJiOy0tZ3JheTojZjRmNmY5Oy0tdGV4dDojMWExYTJlOy0tbXV0ZWQ6IzZiNzI4MDsKICAgIC0tYm9yZGVyOiNkZGUzZWQ7LS13aGl0ZTojZmZmZmZmOy0tc2hhZG93OjAgMnB4IDEycHggcmdiYSgwLDAsMCwwLjA4KTsKICB9CiAgKntib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luOjA7cGFkZGluZzowfQogIGJvZHl7Zm9udC1mYW1pbHk6J1NlZ29lIFVJJyxzeXN0ZW0tdWksc2Fucy1zZXJpZjtjb2xvcjp2YXIoLS10ZXh0KTtiYWNrZ3JvdW5kOnZhcigtLWdyYXkpO21pbi1oZWlnaHQ6MTAwdmh9CiAgLyogTkFWICovCiAgbmF2e2JhY2tncm91bmQ6dmFyKC0tYmx1ZSk7Y29sb3I6I2ZmZjtwYWRkaW5nOjAgMjRweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2hlaWdodDo2MHB4O3Bvc2l0aW9uOnN0aWNreTt0b3A6MDt6LWluZGV4OjEwMDtib3gtc2hhZG93OjAgMnB4IDhweCByZ2JhKDAsMCwwLDAuMil9CiAgLm5hdi1sb2dve2ZvbnQtc2l6ZToxLjQ1cmVtO2ZvbnQtd2VpZ2h0OjgwMDtjdXJzb3I6cG9pbnRlcjtsZXR0ZXItc3BhY2luZzotMC41cHg7bGluZS1oZWlnaHQ6MS4xO21hcmdpbi1yaWdodDoxMnB4O2ZsZXgtc2hyaW5rOjB9CiAgLm5hdi1sb2dvIHNwYW57ZGlzcGxheTpibG9jaztmb250LXNpemU6MC43OHJlbTtmb250LXdlaWdodDo1MDA7bGV0dGVyLXNwYWNpbmc6MS41cHg7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO29wYWNpdHk6MC44NX0KICAubmF2LWxvZ286aG92ZXJ7b3BhY2l0eTowLjg1fQogIC5uYXYtbG9nbyBzcGFue2NvbG9yOnZhcigtLWdvbGQpfQogIC5uYXYtbGlua3N7ZGlzcGxheTpmbGV4O2dhcDo2cHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwfQogIC5uYXYtbGlua3MgYnV0dG9ue2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtjb2xvcjojZmZmO3BhZGRpbmc6NnB4IDEwcHg7Ym9yZGVyLXJhZGl1czo2cHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjAuODJyZW07Zm9udC13ZWlnaHQ6NTAwO3RyYW5zaXRpb246YmFja2dyb3VuZCAwLjJzfQogIC5uYXYtbGlua3MgYnV0dG9uOmhvdmVye2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwwLjE1KX0KICAubmF2LWxpbmtzIC5uYXYtZG9uYXRle2JhY2tncm91bmQ6dmFyKC0tZ29sZCk7Y29sb3I6dmFyKC0tdGV4dCk7Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6NnB4IDEycHg7Ym9yZGVyLXJhZGl1czo2cHh9CiAgLm5hdi1saW5rcyAubmF2LWRvbmF0ZTpob3ZlcntiYWNrZ3JvdW5kOiNlMGE4MDB9CiAgLmxhbmctYnRue2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwwLjE1KSFpbXBvcnRhbnQ7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMykhaW1wb3J0YW50O2ZvbnQtc2l6ZTowLjc4cmVtIWltcG9ydGFudH0KCiAgLyogUEFHRVMgKi8KICAucGFnZXtkaXNwbGF5Om5vbmU7bWF4LXdpZHRoOjExMDBweDttYXJnaW46MCBhdXRvO3BhZGRpbmc6MjhweCAyMHB4fQogIC5wYWdlLmFjdGl2ZXtkaXNwbGF5OmJsb2NrfQoKICAvKiBIT01FICovCiAgLmhlcm97YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHZhcigtLWJsdWUpIDAlLCMyNDcxYzggMTAwJSk7Y29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjE2cHg7cGFkZGluZzo0OHB4IDQwcHg7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luLWJvdHRvbTozMnB4fQogIC5oZXJvIGgxe2ZvbnQtc2l6ZToyLjRyZW07Zm9udC13ZWlnaHQ6ODAwO21hcmdpbi1ib3R0b206MTJweH0KICAuaGVybyBoMSBzcGFue2NvbG9yOnZhcigtLWdvbGQpfQogIC5oZXJvIHB7Zm9udC1zaXplOjEuMXJlbTtvcGFjaXR5OjAuOTI7bWF4LXdpZHRoOjYyMHB4O21hcmdpbjowIGF1dG8gMjRweDtsaW5lLWhlaWdodDoxLjZ9CiAgLmhlcm8tYnRuc3tkaXNwbGF5OmZsZXg7Z2FwOjEycHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LXdyYXA6d3JhcH0KICAuYnRue3BhZGRpbmc6MTJweCAyNHB4O2JvcmRlci1yYWRpdXM6OHB4O2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjk1cmVtO2ZvbnQtd2VpZ2h0OjcwMDt0cmFuc2l0aW9uOmFsbCAwLjJzfQogIC5idG4tcHJpbWFyeXtiYWNrZ3JvdW5kOnZhcigtLWdvbGQpO2NvbG9yOnZhcigtLXRleHQpfQogIC5idG4tcHJpbWFyeTpob3ZlcntiYWNrZ3JvdW5kOiNlMGE4MDA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCl9CiAgLmJ0bi1vdXRsaW5le2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6I2ZmZjtib3JkZXI6MnB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC42KX0KICAuYnRuLW91dGxpbmU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuMSl9CiAgLmhvdy1pdC13b3Jrc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpdCxtaW5tYXgoMjAwcHgsMWZyKSk7Z2FwOjIwcHg7bWFyZ2luLWJvdHRvbTozMnB4fQogIC5oaXctY2FyZHtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyNHB4O3RleHQtYWxpZ246Y2VudGVyO2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KX0KICAuaGl3LWljb257Zm9udC1zaXplOjJyZW07bWFyZ2luLWJvdHRvbToxMHB4fQogIC5oaXctY2FyZCBoM3tmb250LXNpemU6MXJlbTttYXJnaW4tYm90dG9tOjZweDtjb2xvcjp2YXIoLS1ibHVlKX0KICAuaGl3LWNhcmQgcHtmb250LXNpemU6MC44NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bGluZS1oZWlnaHQ6MS41fQogIC5zZWN0aW9uLXRpdGxle2ZvbnQtc2l6ZToxLjNyZW07Zm9udC13ZWlnaHQ6NzAwO21hcmdpbi1ib3R0b206MTZweDtjb2xvcjp2YXIoLS1ibHVlKX0KICAuY2F0ZWdvcnktZ3JpZHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpbGwsbWlubWF4KDE2MHB4LDFmcikpO2dhcDoxNHB4O21hcmdpbi1ib3R0b206MzJweH0KICAuY2F0LWNhcmR7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MThweCAxNHB4O3RleHQtYWxpZ246Y2VudGVyO2N1cnNvcjpwb2ludGVyO2JvcmRlcjoycHggc29saWQgdHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjphbGwgMC4ycztib3gtc2hhZG93OnZhcigtLXNoYWRvdyl9CiAgLmNhdC1jYXJkOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1ibHVlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KX0KICAuY2F0LWljb257Zm9udC1zaXplOjEuOHJlbTttYXJnaW4tYm90dG9tOjhweH0KICAuY2F0LWNhcmQgaDR7Zm9udC1zaXplOjAuODhyZW07Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLXRleHQpfQogIC5jYXQtY2FyZCBwe2ZvbnQtc2l6ZTowLjc1cmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tdG9wOjRweH0KICAuZG9uYXRlLWJhbm5lcntiYWNrZ3JvdW5kOnZhcigtLWdvbGQtbGlnaHQpO2JvcmRlcjoycHggc29saWQgdmFyKC0tZ29sZCk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjRweDt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tYm90dG9tOjMycHh9CiAgLmRvbmF0ZS1iYW5uZXIgaDN7Zm9udC1zaXplOjEuMXJlbTttYXJnaW4tYm90dG9tOjhweH0KICAuZG9uYXRlLWJhbm5lciBwe2ZvbnQtc2l6ZTowLjg4cmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tYm90dG9tOjE0cHh9CiAgLnRpcC1ib3h7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCNlOGY1ZTksI2YwZmFmNCk7Ym9yZGVyLWxlZnQ6NHB4IHNvbGlkIHZhcigtLWdyZWVuKTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxOHB4IDIwcHg7bWFyZ2luLWJvdHRvbTozMnB4fQogIC50aXAtYm94IC50aXAtbGFiZWx7Zm9udC1zaXplOjAuNzVyZW07Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLWdyZWVuKTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bGV0dGVyLXNwYWNpbmc6MXB4O21hcmdpbi1ib3R0b206NnB4fQogIC50aXAtYm94IHB7Zm9udC1zaXplOjAuOTJyZW07bGluZS1oZWlnaHQ6MS41fQoKICAvKiBGT1JVTSAvIENBVEVHT1JZICovCiAgLmZvcnVtLWhlYWRlcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO21hcmdpbi1ib3R0b206MjBweDtmbGV4LXdyYXA6Z2FwfQogIC5zb3J0LXNlbGVjdHtwYWRkaW5nOjhweCAxMnB4O2JvcmRlci1yYWRpdXM6OHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtmb250LXNpemU6MC44NXJlbTtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtjdXJzb3I6cG9pbnRlcjtjb2xvcjp2YXIoLS10ZXh0KX0KICAuYXNrLWJhcntiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyMHB4O2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KTttYXJnaW4tYm90dG9tOjI0cHh9CiAgLmFzay1iYXIgaDN7Zm9udC1zaXplOjFyZW07bWFyZ2luLWJvdHRvbToxMnB4O2NvbG9yOnZhcigtLWJsdWUpfQogIC5hc2stYmFyIGlucHV0LC5hc2stYmFyIHRleHRhcmVhLC5hc2stYmFyIHNlbGVjdHt3aWR0aDoxMDAlO3BhZGRpbmc6MTBweCAxNHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjhweDtmb250LXNpemU6MC45cmVtO21hcmdpbi1ib3R0b206MTBweDtmb250LWZhbWlseTppbmhlcml0O2NvbG9yOnZhcigtLXRleHQpfQogIC5hc2stYmFyIHRleHRhcmVhe3Jlc2l6ZTp2ZXJ0aWNhbDttaW4taGVpZ2h0OjgwcHh9CiAgLnRhZy1pbnB1dHtkaXNwbGF5OmZsZXg7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjEwcHh9CiAgLnRhZ3tiYWNrZ3JvdW5kOnZhcigtLWJsdWUtbGlnaHQpO2NvbG9yOnZhcigtLWJsdWUpO3BhZGRpbmc6NHB4IDEwcHg7Ym9yZGVyLXJhZGl1czoyMHB4O2ZvbnQtc2l6ZTowLjc4cmVtO2ZvbnQtd2VpZ2h0OjYwMDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHh9CiAgLnRhZyAucmVtb3Zle2NvbG9yOnZhcigtLXJlZCk7Zm9udC13ZWlnaHQ6NzAwfQogIC5xLWNhcmR7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjBweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWFyZ2luLWJvdHRvbToxNnB4O2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246Ym94LXNoYWRvdyAwLjJzfQogIC5xLWNhcmQ6aG92ZXJ7Ym94LXNoYWRvdzowIDRweCAyMHB4IHJnYmEoMCwwLDAsMC4xMil9CiAgLnEtbWV0YXtkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206OHB4fQogIC5xLWNhdC1iYWRnZXtiYWNrZ3JvdW5kOnZhcigtLWJsdWUtbGlnaHQpO2NvbG9yOnZhcigtLWJsdWUpO2ZvbnQtc2l6ZTowLjcycmVtO2ZvbnQtd2VpZ2h0OjcwMDtwYWRkaW5nOjNweCA5cHg7Ym9yZGVyLXJhZGl1czoxMnB4fQogIC5xLWRhdGV7Zm9udC1zaXplOjAuNzVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpfQogIC5xLWF1dGhvcntmb250LXNpemU6MC43NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCl9CiAgLnEtdGl0bGV7Zm9udC1zaXplOjEuMDVyZW07Zm9udC13ZWlnaHQ6NzAwO21hcmdpbi1ib3R0b206NnB4fQogIC5xLXByZXZpZXd7Zm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO2xpbmUtaGVpZ2h0OjEuNTttYXJnaW4tYm90dG9tOjEwcHh9CiAgLnEtc3RhdHN7ZGlzcGxheTpmbGV4O2dhcDoxNHB4O2ZvbnQtc2l6ZTowLjhyZW07Y29sb3I6dmFyKC0tbXV0ZWQpfQogIC5xLXN0YXRzIHNwYW57ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4fQogIC5mZWF0dXJlZC1iYWRnZXtiYWNrZ3JvdW5kOnZhcigtLWdvbGQpO2NvbG9yOnZhcigtLXRleHQpO2ZvbnQtc2l6ZTowLjdyZW07Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6MnB4IDhweDtib3JkZXItcmFkaXVzOjEwcHg7bWFyZ2luLWxlZnQ6OHB4fQoKICAvKiBRVUVTVElPTiBERVRBSUwgKi8KICAuYmFjay1idG57YmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO2NvbG9yOnZhcigtLWJsdWUpO2ZvbnQtc2l6ZTowLjlyZW07Y3Vyc29yOnBvaW50ZXI7bWFyZ2luLWJvdHRvbToxNnB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDtmb250LXdlaWdodDo2MDB9CiAgLnEtZnVsbHtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyNHB4O2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KTttYXJnaW4tYm90dG9tOjI0cHh9CiAgLnEtZnVsbCBoMntmb250LXNpemU6MS4zcmVtO21hcmdpbi1ib3R0b206MTJweH0KICAucS1mdWxsIC5ib2R5e2ZvbnQtc2l6ZTowLjkycmVtO2xpbmUtaGVpZ2h0OjEuNzttYXJnaW4tYm90dG9tOjE2cHh9CiAgLnRhZ3Mtcm93e2Rpc3BsYXk6ZmxleDtnYXA6OHB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MTZweH0KICAuYW5zd2Vycy1zZWN0aW9uIGgze2ZvbnQtc2l6ZToxLjFyZW07Zm9udC13ZWlnaHQ6NzAwO21hcmdpbi1ib3R0b206MTZweDtjb2xvcjp2YXIoLS1ibHVlKX0KICAuYW5zd2VyLWNhcmR7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MThweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWFyZ2luLWJvdHRvbToxNHB4O2JvcmRlci1sZWZ0OjRweCBzb2xpZCB0cmFuc3BhcmVudH0KICAuYW5zd2VyLWNhcmQudG9wLWFuc3dlcntib3JkZXItbGVmdC1jb2xvcjp2YXIoLS1nb2xkKX0KICAudG9wLWFuc3dlci1sYWJlbHtmb250LXNpemU6MC43MnJlbTtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tZ29sZCk7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2xldHRlci1zcGFjaW5nOjAuOHB4O21hcmdpbi1ib3R0b206NnB4fQogIC5hbnN3ZXItYm9keXtmb250LXNpemU6MC45cmVtO2xpbmUtaGVpZ2h0OjEuNzttYXJnaW4tYm90dG9tOjEycHh9CiAgLmFuc3dlci1mb290ZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4fQogIC5hbnN3ZXItbWV0YXtmb250LXNpemU6MC43OHJlbTtjb2xvcjp2YXIoLS1tdXRlZCl9CiAgLnZvdGUtYnRuc3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHh9CiAgLnZvdGUtYnRue2JhY2tncm91bmQ6dmFyKC0tZ3JheSk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6NXB4IDEycHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjAuODJyZW07Zm9udC13ZWlnaHQ6NjAwO3RyYW5zaXRpb246YWxsIDAuMnM7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4fQogIC52b3RlLWJ0bi5saWtlZHtiYWNrZ3JvdW5kOnZhcigtLWJsdWUtbGlnaHQpO2JvcmRlci1jb2xvcjp2YXIoLS1ibHVlKTtjb2xvcjp2YXIoLS1ibHVlKX0KICAudm90ZS1idG46aG92ZXJ7dHJhbnNmb3JtOnNjYWxlKDEuMDUpfQogIC5mbGFnLWJ0bntiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Y29sb3I6dmFyKC0tbXV0ZWQpO2ZvbnQtc2l6ZTowLjc4cmVtO2N1cnNvcjpwb2ludGVyfQogIC5mbGFnLWJ0bjpob3Zlcntjb2xvcjp2YXIoLS1yZWQpfQogIC5hZGQtYW5zd2Vye2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjIwcHg7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpO21hcmdpbi10b3A6MjRweH0KICAuYWRkLWFuc3dlciBoNHttYXJnaW4tYm90dG9tOjEycHg7Y29sb3I6dmFyKC0tYmx1ZSl9CiAgLmFkZC1hbnN3ZXIgdGV4dGFyZWF7d2lkdGg6MTAwJTtwYWRkaW5nOjEycHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4O21pbi1oZWlnaHQ6MTAwcHg7cmVzaXplOnZlcnRpY2FsO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOjAuOXJlbTttYXJnaW4tYm90dG9tOjEwcHh9CiAgLmFkZC1hbnN3ZXIgaW5wdXR7d2lkdGg6MTAwJTtwYWRkaW5nOjEwcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4O2ZvbnQtc2l6ZTowLjg4cmVtO21hcmdpbi1ib3R0b206MTBweDtmb250LWZhbWlseTppbmhlcml0fQoKICAvKiBCRVNUIE9GICovCiAgLmJlc3Qtb2YtaGVhZGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZyx2YXIoLS1nb2xkLWxpZ2h0KSwjZmZmZGU3KTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyNHB4O21hcmdpbi1ib3R0b206MjRweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdvbGQpO3RleHQtYWxpZ246Y2VudGVyfQogIC5iZXN0LW9mLWhlYWRlciBoMntjb2xvcjp2YXIoLS10ZXh0KTttYXJnaW4tYm90dG9tOjZweH0KICAuYmVzdC1vZi1oZWFkZXIgcHtjb2xvcjp2YXIoLS1tdXRlZCk7Zm9udC1zaXplOjAuODhyZW19CiAgLmZpbHRlci1yb3d7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MjBweDthbGlnbi1pdGVtczpjZW50ZXJ9CiAgLmZpbHRlci1idG57cGFkZGluZzo2cHggMTRweDtib3JkZXItcmFkaXVzOjIwcHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjgycmVtO2ZvbnQtd2VpZ2h0OjYwMDt0cmFuc2l0aW9uOmFsbCAwLjJzfQogIC5maWx0ZXItYnRuLmFjdGl2ZXtiYWNrZ3JvdW5kOnZhcigtLWJsdWUpO2NvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOnZhcigtLWJsdWUpfQoKICAvKiBDSEVDS0xJU1QgKi8KICAuY2hlY2tsaXN0LWludHJve2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZywjZThmNWU5LCNmMGZhZjQpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjI0cHg7bWFyZ2luLWJvdHRvbToyNHB4O2JvcmRlcjoycHggc29saWQgdmFyKC0tZ3JlZW4pO3RleHQtYWxpZ246Y2VudGVyfQogIC5jaGVja2xpc3QtaW50cm8gaDJ7Y29sb3I6dmFyKC0tZ3JlZW4pO21hcmdpbi1ib3R0b206NnB4fQogIC5jaGVja2xpc3Qtc2VjdGlvbntiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyMHB4O2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KTttYXJnaW4tYm90dG9tOjE2cHh9CiAgLmNoZWNrbGlzdC1zZWN0aW9uIGgze2ZvbnQtc2l6ZToxcmVtO2NvbG9yOnZhcigtLWJsdWUpO21hcmdpbi1ib3R0b206MTJweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHh9CiAgLmNoZWNrbGlzdC1pdGVte2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDoxMnB4O3BhZGRpbmc6MTBweCAwO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWJvcmRlcil9CiAgLmNoZWNrbGlzdC1pdGVtOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbTpub25lfQogIC5jaGVja2xpc3QtaXRlbSBpbnB1dFt0eXBlPWNoZWNrYm94XXt3aWR0aDoxOHB4O2hlaWdodDoxOHB4O21hcmdpbi10b3A6MnB4O2N1cnNvcjpwb2ludGVyO2FjY2VudC1jb2xvcjp2YXIoLS1ibHVlKX0KICAuY2hlY2tsaXN0LWl0ZW0gbGFiZWx7Zm9udC1zaXplOjAuOXJlbTtsaW5lLWhlaWdodDoxLjU7Y3Vyc29yOnBvaW50ZXI7ZmxleDoxfQogIC5jaGVja2xpc3QtaXRlbSAubGluay1idG57Zm9udC1zaXplOjAuNzVyZW07Y29sb3I6dmFyKC0tYmx1ZSk7Y3Vyc29yOnBvaW50ZXI7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7bWFyZ2luLWxlZnQ6YXV0bzt3aGl0ZS1zcGFjZTpub3dyYXB9CgogIC8qIFNFQVJDSCAqLwogIC5zZWFyY2gtYmFyLWJpZ3tkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7bWFyZ2luLWJvdHRvbToyNHB4fQogIC5zZWFyY2gtYmFyLWJpZyBpbnB1dHtmbGV4OjE7cGFkZGluZzoxNHB4IDE4cHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6MTBweDtmb250LXNpemU6MXJlbTtmb250LWZhbWlseTppbmhlcml0fQogIC5zZWFyY2gtYmFyLWJpZyBpbnB1dDpmb2N1c3tvdXRsaW5lOm5vbmU7Ym9yZGVyLWNvbG9yOnZhcigtLWJsdWUpfQogIC5zZWFyY2gtYmFyLWJpZyBidXR0b257YmFja2dyb3VuZDp2YXIoLS1ibHVlKTtjb2xvcjojZmZmO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjE0cHggMjRweDtmb250LXNpemU6MXJlbTtmb250LXdlaWdodDo3MDA7Y3Vyc29yOnBvaW50ZXJ9CiAgLnRhZy1jbG91ZHtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjhweDttYXJnaW4tYm90dG9tOjI0cHh9CiAgLnRhZy1jbG91ZC1pdGVte2JhY2tncm91bmQ6dmFyKC0tYmx1ZS1saWdodCk7Y29sb3I6dmFyKC0tYmx1ZSk7cGFkZGluZzo2cHggMTRweDtib3JkZXItcmFkaXVzOjIwcHg7Zm9udC1zaXplOjAuODJyZW07Zm9udC13ZWlnaHQ6NjAwO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246YWxsIDAuMnN9CiAgLnRhZy1jbG91ZC1pdGVtOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYmx1ZSk7Y29sb3I6I2ZmZn0KCiAgLyogRE9OQVRFICovCiAgLmRvbmF0ZS1wYWdle3RleHQtYWxpZ246Y2VudGVyO21heC13aWR0aDo2MDBweDttYXJnaW46MCBhdXRvfQogIC5kb25hdGUtaGVyb3tiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsdmFyKC0tZ29sZC1saWdodCksI2ZmZjhlMSk7Ym9yZGVyLXJhZGl1czoxNnB4O3BhZGRpbmc6NDBweDttYXJnaW4tYm90dG9tOjI0cHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1nb2xkKX0KICAuZG9uYXRlLWhlcm8gaDJ7Zm9udC1zaXplOjEuOHJlbTttYXJnaW4tYm90dG9tOjEycHh9CiAgLmRvbmF0ZS1oZXJvIHB7Y29sb3I6dmFyKC0tbXV0ZWQpO2xpbmUtaGVpZ2h0OjEuNzttYXJnaW4tYm90dG9tOjIwcHh9CiAgLmRvbmF0ZS1hbW91bnRze2Rpc3BsYXk6ZmxleDtnYXA6MTBweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MjBweH0KICAuYW1vdW50LWJ0bntwYWRkaW5nOjEwcHggMjBweDtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdvbGQpO2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjlyZW07Zm9udC13ZWlnaHQ6NzAwO3RyYW5zaXRpb246YWxsIDAuMnN9CiAgLmFtb3VudC1idG4uc2VsZWN0ZWQsLmFtb3VudC1idG46aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1nb2xkKTtjb2xvcjp2YXIoLS10ZXh0KX0KICAuZG9uYXRlLWJ0bi1iaWd7YmFja2dyb3VuZDp2YXIoLS1nb2xkKTtjb2xvcjp2YXIoLS10ZXh0KTtib3JkZXI6bm9uZTtwYWRkaW5nOjE0cHggNDBweDtib3JkZXItcmFkaXVzOjEwcHg7Zm9udC1zaXplOjEuMXJlbTtmb250LXdlaWdodDo4MDA7Y3Vyc29yOnBvaW50ZXI7d2lkdGg6MTAwJTttYXJnaW4tYm90dG9tOjEycHh9CgogIC8qIExBTkcgTU9EQUwgKi8KICAubW9kYWwtb3ZlcmxheXtkaXNwbGF5Om5vbmU7cG9zaXRpb246Zml4ZWQ7aW5zZXQ6MDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC41KTt6LWluZGV4OjIwMDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0KICAubW9kYWwtb3ZlcmxheS5vcGVue2Rpc3BsYXk6ZmxleH0KICAubW9kYWx7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxNnB4O3BhZGRpbmc6MjhweDttYXgtd2lkdGg6NDIwcHg7d2lkdGg6OTAlO2JveC1zaGFkb3c6MCA4cHggNDBweCByZ2JhKDAsMCwwLDAuMil9CiAgLm1vZGFsIGgze21hcmdpbi1ib3R0b206OHB4O2ZvbnQtc2l6ZToxLjJyZW19CiAgLm1vZGFsIHB7Zm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MTZweDtsaW5lLWhlaWdodDoxLjV9CiAgLmxhbmctZ3JpZHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjhweDttYXJnaW4tYm90dG9tOjE2cHh9CiAgLmxhbmctb3B0aW9ue3BhZGRpbmc6MTBweCAxMnB4O2JvcmRlcjoycHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjhweDtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MC45MnJlbTtmb250LXdlaWdodDo2MDA7dGV4dC1hbGlnbjpjZW50ZXI7dHJhbnNpdGlvbjphbGwgMC4ycztsaW5lLWhlaWdodDoxLjQ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4fQogIC5sYW5nLW9wdGlvbjpob3ZlciwubGFuZy1vcHRpb24uYWN0aXZle2JvcmRlci1jb2xvcjp2YXIoLS1ibHVlKTtiYWNrZ3JvdW5kOnZhcigtLWJsdWUtbGlnaHQpO2NvbG9yOnZhcigtLWJsdWUpO3RyYW5zZm9ybTpzY2FsZSgxLjAzKX0KICAubW9kYWwtY2xvc2V7YmFja2dyb3VuZDp2YXIoLS1ncmF5KTtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjEwcHggMjBweDtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MC45cmVtO2ZvbnQtd2VpZ2h0OjYwMDt3aWR0aDoxMDAlfQogIC50cmFuc2xhdGlvbi1ub3RpY2V7YmFja2dyb3VuZDojZmZmM2NkO2JvcmRlcjoxcHggc29saWQgI2ZmYzEwNztib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjEwcHggMTRweDtmb250LXNpemU6MC44cmVtO2NvbG9yOiM4NTY0MDQ7bWFyZ2luLWJvdHRvbToxNnB4fQoKICAvKiBUT0FTVCAqLwogIC50b2FzdHtwb3NpdGlvbjpmaXhlZDtib3R0b206MjRweDtyaWdodDoyNHB4O2JhY2tncm91bmQ6dmFyKC0tZ3JlZW4pO2NvbG9yOiNmZmY7cGFkZGluZzoxMnB4IDIwcHg7Ym9yZGVyLXJhZGl1czoxMHB4O2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MC45cmVtO3otaW5kZXg6MzAwO29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxMHB4KTt0cmFuc2l0aW9uOmFsbCAwLjNzO3BvaW50ZXItZXZlbnRzOm5vbmV9CiAgLnRvYXN0LnNob3d7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfQoKICAuZW1wdHktc3RhdGV7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzo0MHB4O2NvbG9yOnZhcigtLW11dGVkKX0KICAuZW1wdHktc3RhdGUgLmljb257Zm9udC1zaXplOjNyZW07bWFyZ2luLWJvdHRvbToxMHB4fQogIC5kaXZpZGVye2hlaWdodDoxcHg7YmFja2dyb3VuZDp2YXIoLS1ib3JkZXIpO21hcmdpbjoyMHB4IDB9CiAgQG1lZGlhKG1heC13aWR0aDo2MDBweCl7Lmhlcm8gaDF7Zm9udC1zaXplOjEuNnJlbX0uaGVyb3twYWRkaW5nOjI4cHggMjBweH0uY2F0ZWdvcnktZ3JpZHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KGF1dG8tZmlsbCxtaW5tYXgoMTMwcHgsMWZyKSl9fQo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoKPG5hdj4KICA8ZGl2IGNsYXNzPSJuYXYtbG9nbyIgb25jbGljaz0ic2hvd1BhZ2UoJ2hvbWUnKSI+T2xpbTxzcGFuPkFuc3dlcnM8L3NwYW4+PC9kaXY+CiAgPGRpdiBjbGFzcz0ibmF2LWxpbmtzIj4KICAgIDxidXR0b24gb25jbGljaz0ic2hvd1BhZ2UoJ2hvbWUnKSI+8J+PoCBIb21lPC9idXR0b24+CiAgICA8YnV0dG9uIG9uY2xpY2s9InNob3dQYWdlKCdmb3J1bScpIj7wn5ejIEZvcnVtPC9idXR0b24+CiAgICA8YnV0dG9uIG9uY2xpY2s9InNob3dQYWdlKCdiZXN0b2YnKSI+4q2QIEJlc3QgT2Y8L2J1dHRvbj4KICAgIDxidXR0b24gb25jbGljaz0ic2hvd1BhZ2UoJ2NoZWNrbGlzdCcpIj7inIUgQ2hlY2tsaXN0PC9idXR0b24+CiAgICA8YnV0dG9uIG9uY2xpY2s9InNob3dQYWdlKCdjYXRzJykiPvCfk4IgQ2F0ZWdvcmllczwvYnV0dG9uPgogICAgPGJ1dHRvbiBvbmNsaWNrPSJzaG93UGFnZSgnc2VhcmNoJykiPvCflI0gU2VhcmNoPC9idXR0b24+CiAgICA8YnV0dG9uIG9uY2xpY2s9InNob3dQYWdlKCdkb25hdGUnKSIgY2xhc3M9Im5hdi1kb25hdGUiPvCfkpsgRG9uYXRlPC9idXR0b24+CiAgICA8YnV0dG9uIGNsYXNzPSJsYW5nLWJ0biIgb25jbGljaz0ib3BlbkxhbmdNb2RhbCgpIj7wn4es8J+HpzwvYnV0dG9uPgogIDwvZGl2Pgo8L25hdj4KCjwhLS0gSE9NRSAtLT4KPGRpdiBjbGFzcz0icGFnZSBhY3RpdmUiIGlkPSJwYWdlLWhvbWUiPgogIDxkaXYgY2xhc3M9Imhlcm8iPgogICAgPGgxPldlbGNvbWUgdG8gPHNwYW4+T2xpbUFuc3dlcnM8L3NwYW4+PC9oMT4KICAgIDxwPllvdXIgY29tbXVuaXR5LXBvd2VyZWQgZ3VpZGUgdG8gbmF2aWdhdGluZyBsaWZlIGluIElzcmFlbC4gQXNrIHF1ZXN0aW9ucywgc2hhcmUga25vd2xlZGdlLCBhbmQgaGVscCBmZWxsb3cgb2xpbSBmaW5kIHRoZWlyIGZlZXQgZmFzdGVyLjwvcD4KICAgIDxkaXYgY2xhc3M9Imhlcm8tYnRucyI+CiAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgb25jbGljaz0ic2hvd1BhZ2UoJ2ZvcnVtJykiPkFzayBhIFF1ZXN0aW9uPC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tb3V0bGluZSIgb25jbGljaz0ic2hvd1BhZ2UoJ2Jlc3RvZicpIj7irZAgQnJvd3NlIFRvcCBBbnN3ZXJzPC9idXR0b24+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0idGlwLWJveCI+CiAgICA8ZGl2IGNsYXNzPSJ0aXAtbGFiZWwiPvCfkqEgVGlwIG9mIHRoZSBEYXk8L2Rpdj4KICAgIDxwIGlkPSJ0aXAtdGV4dCI+V2hlbiBvcGVuaW5nIGEgYmFuayBhY2NvdW50IGluIElzcmFlbCwgYnJpbmcgeW91ciBUZXVkYXQgT2xlaCwgcGFzc3BvcnQsIGFuZCBwcm9vZiBvZiBhZGRyZXNzLiBCYW5rIEhhcG9hbGltIGFuZCBCYW5rIExldW1pIGJvdGggaGF2ZSBkZWRpY2F0ZWQgT2xpbSBkZXBhcnRtZW50cyB3aXRoIEVuZ2xpc2gtc3BlYWtpbmcgc3RhZmYuPC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5Ib3cgSXQgV29ya3M8L2Rpdj4KICA8ZGl2IGNsYXNzPSJob3ctaXQtd29ya3MiPgogICAgPGRpdiBjbGFzcz0iaGl3LWNhcmQiPjxkaXYgY2xhc3M9Imhpdy1pY29uIj7inZM8L2Rpdj48aDM+QXNrPC9oMz48cD5Qb3N0IHlvdXIgcXVlc3Rpb24gaW4gdGhlIHJlbGV2YW50IGNhdGVnb3J5LiBCZSBhcyBkZXRhaWxlZCBhcyB5b3UgbGlrZS48L3A+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJoaXctY2FyZCI+PGRpdiBjbGFzcz0iaGl3LWljb24iPvCfkqw8L2Rpdj48aDM+QW5zd2VyPC9oMz48cD5UaGUgY29tbXVuaXR5IHJlc3BvbmRzIHdpdGggYWR2aWNlLCB0aXBzLCBhbmQgcGVyc29uYWwgZXhwZXJpZW5jZS48L3A+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJoaXctY2FyZCI+PGRpdiBjbGFzcz0iaGl3LWljb24iPvCfkY08L2Rpdj48aDM+UmF0ZTwvaDM+PHA+VXB2b3RlIHRoZSBtb3N0IGhlbHBmdWwgYW5zd2VycyBzbyB0aGV5IHJpc2UgdG8gdGhlIHRvcCBmb3IgZXZlcnlvbmUuPC9wPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iaGl3LWNhcmQiPjxkaXYgY2xhc3M9Imhpdy1pY29uIj7wn4yfPC9kaXY+PGgzPkRpc2NvdmVyPC9oMz48cD5Ccm93c2UgdG9wLXJhdGVkIGNvbnRlbnQgb3Igc2VhcmNoIGJ5IGtleXdvcmQgdG8gZmluZCB3aGF0IHlvdSBuZWVkIGZhc3QuPC9wPjwvZGl2PgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5Ccm93c2UgYnkgQ2F0ZWdvcnk8L2Rpdj4KICA8ZGl2IGNsYXNzPSJjYXRlZ29yeS1ncmlkIiBpZD0iaG9tZS1jYXRzIj48L2Rpdj4KCiAgPGRpdiBjbGFzcz0iZG9uYXRlLWJhbm5lciI+CiAgICA8aDM+8J+SmyBPbGltQW5zd2VycyBpcyBmcmVlIGZvciBldmVyeW9uZTwvaDM+CiAgICA8cD5UaGlzIHNpdGUgaXMgY29tbXVuaXR5LXJ1bi4gSWYgaXQgaGVscGVkIHlvdSwgY29uc2lkZXIgYSBzbWFsbCBkb25hdGlvbiB0byBrZWVwIGl0IGdvaW5nLjwvcD4KICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgb25jbGljaz0ic2hvd1BhZ2UoJ2RvbmF0ZScpIj5TdXBwb3J0IHRoZSBTaXRlPC9idXR0b24+CiAgPC9kaXY+CjwvZGl2PgoKPCEtLSBGT1JVTSAtLT4KPGRpdiBjbGFzcz0icGFnZSIgaWQ9InBhZ2UtZm9ydW0iPgogIDxkaXYgY2xhc3M9ImZvcnVtLWhlYWRlciIgc3R5bGU9ImRpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLWJvdHRvbToyMHB4O2ZsZXgtd3JhcDp3cmFwO2dhcDoxMHB4Ij4KICAgIDxkaXY+CiAgICAgIDxoMiBzdHlsZT0iZm9udC1zaXplOjEuNHJlbTtjb2xvcjp2YXIoLS1ibHVlKSI+8J+XoyBDb21tdW5pdHkgRm9ydW08L2gyPgogICAgICA8cCBzdHlsZT0iZm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi10b3A6NHB4Ij5Bc2sgcXVlc3Rpb25zLCBzaGFyZSBhbnN3ZXJzLCBoZWxwIGZlbGxvdyBvbGltPC9wPgogICAgPC9kaXY+CiAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwIj4KICAgICAgPHNlbGVjdCBjbGFzcz0ic29ydC1zZWxlY3QiIGlkPSJmb3J1bS1zb3J0IiBvbmNoYW5nZT0icmVuZGVyRm9ydW0oKSI+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibmV3ZXN0Ij7wn5WQIE5ld2VzdDwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9Im1vc3RfYW5zd2VycyI+8J+SrCBNb3N0IFJlc3BvbnNlczwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9ImhpZ2hlc3RfcmF0ZWQiPuKtkCBIaWdoZXN0IFJhdGVkPC9vcHRpb24+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibW9zdF92aWV3ZWQiPvCfkYEgTW9zdCBWaWV3ZWQ8L29wdGlvbj4KICAgICAgPC9zZWxlY3Q+CiAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgb25jbGljaz0idG9nZ2xlQXNrQmFyKCkiIHN0eWxlPSJwYWRkaW5nOjlweCAxNnB4O2ZvbnQtc2l6ZTowLjg4cmVtIj4rIEFzayBhIFF1ZXN0aW9uPC9idXR0b24+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0iYXNrLWJhciIgaWQ9ImFzay1iYXIiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgogICAgPGgzPkFzayBhIE5ldyBRdWVzdGlvbjwvaDM+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InEtdGl0bGUiIHBsYWNlaG9sZGVyPSJZb3VyIHF1ZXN0aW9uIHRpdGxlLi4uIiAvPgogICAgPHRleHRhcmVhIGlkPSJxLWJvZHkiIHBsYWNlaG9sZGVyPSJEZXNjcmliZSB5b3VyIHF1ZXN0aW9uIGluIGRldGFpbC4uLiI+PC90ZXh0YXJlYT4KICAgIDxzZWxlY3QgaWQ9InEtY2F0Ij4KICAgICAgPG9wdGlvbiB2YWx1ZT0iIj5TZWxlY3QgYSBjYXRlZ29yeS4uLjwvb3B0aW9uPgogICAgPC9zZWxlY3Q+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InEtbmFtZSIgcGxhY2Vob2xkZXI9IllvdXIgbmFtZSAob3IgbGVhdmUgYmxhbmsgZm9yIEFub255bW91cykiIC8+CiAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjEwcHgiPgogICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiIG9uY2xpY2s9InN1Ym1pdFF1ZXN0aW9uKCkiIHN0eWxlPSJmbGV4OjEiPlBvc3QgUXVlc3Rpb248L2J1dHRvbj4KICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJjYW5jZWxBc2soKSIgc3R5bGU9ImZsZXg6bm9uZTtwYWRkaW5nOjEycHggMThweDtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWJvcmRlcik7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjFyZW07Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLW11dGVkKSI+4pyVIENhbmNlbDwvYnV0dG9uPgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDxkaXYgaWQ9ImZvcnVtLWxpc3QiPjwvZGl2Pgo8L2Rpdj4KCjwhLS0gQ0FURUdPUlkgUEFHRSAtLT4KPGRpdiBjbGFzcz0icGFnZSIgaWQ9InBhZ2UtY2F0ZWdvcnkiPgogIDxidXR0b24gY2xhc3M9ImJhY2stYnRuIiBvbmNsaWNrPSJzaG93UGFnZSgnZm9ydW0nKSI+4oaQIEJhY2sgdG8gRm9ydW08L2J1dHRvbj4KICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi1ib3R0b206MjBweDtmbGV4LXdyYXA6d3JhcDtnYXA6MTBweCI+CiAgICA8ZGl2PgogICAgICA8aDIgaWQ9ImNhdC1wYWdlLXRpdGxlIiBzdHlsZT0iZm9udC1zaXplOjEuNHJlbTtjb2xvcjp2YXIoLS1ibHVlKSI+PC9oMj4KICAgICAgPHAgaWQ9ImNhdC1wYWdlLWRlc2MiIHN0eWxlPSJmb250LXNpemU6MC44NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLXRvcDo0cHgiPjwvcD4KICAgIDwvZGl2PgogICAgPHNlbGVjdCBjbGFzcz0ic29ydC1zZWxlY3QiIGlkPSJjYXQtc29ydCIgb25jaGFuZ2U9InJlbmRlckNhdGVnb3J5UGFnZSgpIj4KICAgICAgPG9wdGlvbiB2YWx1ZT0ibmV3ZXN0Ij7wn5WQIE5ld2VzdDwvb3B0aW9uPgogICAgICA8b3B0aW9uIHZhbHVlPSJtb3N0X2Fuc3dlcnMiPvCfkqwgTW9zdCBSZXNwb25zZXM8L29wdGlvbj4KICAgICAgPG9wdGlvbiB2YWx1ZT0iaGlnaGVzdF9yYXRlZCI+4q2QIEhpZ2hlc3QgUmF0ZWQ8L29wdGlvbj4KICAgICAgPG9wdGlvbiB2YWx1ZT0ibW9zdF92aWV3ZWQiPvCfkYEgTW9zdCBWaWV3ZWQ8L29wdGlvbj4KICAgIDwvc2VsZWN0PgogIDwvZGl2PgogIDxkaXYgaWQ9ImNhdC1wYWdlLWxpc3QiPjwvZGl2Pgo8L2Rpdj4KCjwhLS0gUVVFU1RJT04gREVUQUlMIC0tPgo8ZGl2IGNsYXNzPSJwYWdlIiBpZD0icGFnZS1xdWVzdGlvbiI+CiAgPGJ1dHRvbiBjbGFzcz0iYmFjay1idG4iIGlkPSJxLWJhY2stYnRuIiBvbmNsaWNrPSJnb0JhY2soKSI+4oaQIEJhY2s8L2J1dHRvbj4KICA8ZGl2IGNsYXNzPSJxLWZ1bGwiIGlkPSJxLWZ1bGwtY29udGVudCI+PC9kaXY+CiAgPGRpdiBjbGFzcz0iYW5zd2Vycy1zZWN0aW9uIj4KICAgIDxoMyBpZD0iYW5zd2Vycy1jb3VudCI+PC9oMz4KICAgIDxkaXYgaWQ9ImFuc3dlcnMtbGlzdCI+PC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iYWRkLWFuc3dlciI+CiAgICA8aDQ+8J+SrCBBZGQgWW91ciBBbnN3ZXI8L2g0PgogICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJhbnMtbmFtZSIgcGxhY2Vob2xkZXI9IllvdXIgbmFtZSAob3IgbGVhdmUgYmxhbmsgZm9yIEFub255bW91cykiIC8+CiAgICA8dGV4dGFyZWEgaWQ9ImFucy1ib2R5IiBwbGFjZWhvbGRlcj0iU2hhcmUgeW91ciBrbm93bGVkZ2Ugb3IgZXhwZXJpZW5jZS4uLiI+PC90ZXh0YXJlYT4KICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgb25jbGljaz0ic3VibWl0QW5zd2VyKCkiPlBvc3QgQW5zd2VyPC9idXR0b24+CiAgPC9kaXY+CjwvZGl2PgoKPCEtLSBCRVNUIE9GIC0tPgo8ZGl2IGNsYXNzPSJwYWdlIiBpZD0icGFnZS1iZXN0b2YiPgogIDxkaXYgY2xhc3M9ImJlc3Qtb2YtaGVhZGVyIj4KICAgIDxoMj7irZAgQmVzdCBPZiBPbGltQW5zd2VyczwvaDI+CiAgICA8cD5UaGUgaGlnaGVzdC1yYXRlZCBxdWVzdGlvbnMgYW5kIGFuc3dlcnMgZnJvbSBvdXIgY29tbXVuaXR5IOKAlCB5b3VyIGdvLXRvIHN0YXJ0aW5nIHBvaW50PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImZpbHRlci1yb3ciPgogICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTowLjg1cmVtO2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS1tdXRlZCkiPkZpbHRlcjo8L3NwYW4+CiAgICA8YnV0dG9uIGNsYXNzPSJmaWx0ZXItYnRuIGFjdGl2ZSIgb25jbGljaz0iZmlsdGVyQmVzdE9mKCdhbGwnLHRoaXMpIj5BbGwgQ2F0ZWdvcmllczwvYnV0dG9uPgogICAgPGRpdiBpZD0iYmVzdG9mLWZpbHRlcnMiPjwvZGl2PgogIDwvZGl2PgogIDxkaXYgaWQ9ImJlc3RvZi1saXN0Ij48L2Rpdj4KPC9kaXY+Cgo8IS0tIENIRUNLTElTVCAtLT4KPGRpdiBjbGFzcz0icGFnZSIgaWQ9InBhZ2UtY2hlY2tsaXN0Ij4KICA8ZGl2IGNsYXNzPSJjaGVja2xpc3QtaW50cm8iPgogICAgPGgyPuKchSBOZXcgT2xlaCBDaGVja2xpc3Q8L2gyPgogICAgPHAgc3R5bGU9ImNvbG9yOnZhcigtLW11dGVkKTtmb250LXNpemU6MC44OHJlbTttYXJnaW4tdG9wOjZweCI+WW91ciBzdGVwLWJ5LXN0ZXAgZ3VpZGUgdG8gc2V0dGxpbmcgaW4gSXNyYWVsLiBDaGVjayBvZmYgaXRlbXMgYXMgeW91IGdvIOKAlCBwcm9ncmVzcyBzYXZlcyBhdXRvbWF0aWNhbGx5LjwvcD4KICA8L2Rpdj4KICA8ZGl2IGlkPSJjaGVja2xpc3QtY29udGVudCI+PC9kaXY+CjwvZGl2PgoKPCEtLSBTRUFSQ0ggLS0+CjxkaXYgY2xhc3M9InBhZ2UiIGlkPSJwYWdlLXNlYXJjaCI+CiAgPGgyIHN0eWxlPSJmb250LXNpemU6MS40cmVtO2NvbG9yOnZhcigtLWJsdWUpO21hcmdpbi1ib3R0b206MTZweCI+8J+UjSBTZWFyY2ggT2xpbUFuc3dlcnM8L2gyPgogIDxkaXYgY2xhc3M9InNlYXJjaC1iYXItYmlnIj4KICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ic2VhcmNoLWlucHV0IiBwbGFjZWhvbGRlcj0iU2VhcmNoIHF1ZXN0aW9ucywgdG9waWNzLCBrZXl3b3Jkcy4uLiIgb25rZXl1cD0iaWYoZXZlbnQua2V5PT09J0VudGVyJylkb1NlYXJjaCgpIiAvPgogICAgPGJ1dHRvbiBvbmNsaWNrPSJkb1NlYXJjaCgpIj5TZWFyY2g8L2J1dHRvbj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIiBzdHlsZT0iZm9udC1zaXplOjFyZW0iPlBvcHVsYXIgVG9waWNzPC9kaXY+CiAgPGRpdiBjbGFzcz0idGFnLWNsb3VkIiBpZD0idGFnLWNsb3VkIj48L2Rpdj4KICA8ZGl2IGlkPSJzZWFyY2gtcmVzdWx0cyI+PC9kaXY+CjwvZGl2PgoKPCEtLSBDQVRFR09SSUVTIC0tPgo8ZGl2IGNsYXNzPSJwYWdlIiBpZD0icGFnZS1jYXRzIj4KICA8aDIgc3R5bGU9ImZvbnQtc2l6ZToxLjRyZW07Y29sb3I6dmFyKC0tYmx1ZSk7bWFyZ2luLWJvdHRvbTo2cHgiPvCfk4IgQ2F0ZWdvcmllczwvaDI+CiAgPHAgc3R5bGU9ImZvbnQtc2l6ZTowLjg1cmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tYm90dG9tOjIwcHgiPkJyb3dzZSBxdWVzdGlvbnMgYnkgdG9waWM8L3A+CiAgPGRpdiBjbGFzcz0iY2F0ZWdvcnktZ3JpZCIgaWQ9ImNhdHMtZ3JpZCI+PC9kaXY+CjwvZGl2PgoKPCEtLSBET05BVEUgLS0+CjxkaXYgY2xhc3M9InBhZ2UiIGlkPSJwYWdlLWRvbmF0ZSI+CiAgPGRpdiBjbGFzcz0iZG9uYXRlLXBhZ2UiPgogICAgPGRpdiBjbGFzcz0iZG9uYXRlLWhlcm8iPgogICAgICA8ZGl2IHN0eWxlPSJmb250LXNpemU6M3JlbTttYXJnaW4tYm90dG9tOjEycHgiPvCfkps8L2Rpdj4KICAgICAgPGgyPlN1cHBvcnQgT2xpbUFuc3dlcnM8L2gyPgogICAgICA8cD5PbGltQW5zd2VycyBpcyBmcmVlIGZvciBldmVyeSBvbGVoLCBmb3JldmVyLiBJdCdzIGJ1aWx0IGFuZCBtYWludGFpbmVkIGJ5IHRoZSBjb21tdW5pdHksIGZvciB0aGUgY29tbXVuaXR5LiBZb3VyIGRvbmF0aW9uIGhlbHBzIGtlZXAgdGhlIGxpZ2h0cyBvbiwgcGF5IGZvciBob3N0aW5nLCBhbmQgYWxsb3dzIHVzIHRvIGdyb3cgYW5kIGltcHJvdmUgdGhlIHNpdGUuPC9wPgogICAgICA8cCBzdHlsZT0ibWFyZ2luLXRvcDoxMHB4O2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtc2l6ZTowLjg1cmVtO2NvbG9yOnZhcigtLW11dGVkKSI+Ikkgd2lzaCB0aGlzIHNpdGUgZXhpc3RlZCB3aGVuIEkgbWFkZSBhbGl5YWguIiDigJQgRXZlcnkgb2xlaCwgZXZlci48L3A+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImRvbmF0ZS1hbW91bnRzIj4KICAgICAgPGJ1dHRvbiBjbGFzcz0iYW1vdW50LWJ0biIgb25jbGljaz0ic2VsZWN0QW1vdW50KHRoaXMsJyQ1JykiPiQ1PC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9ImFtb3VudC1idG4iIG9uY2xpY2s9InNlbGVjdEFtb3VudCh0aGlzLCckMTgnKSI+JDE4IOKcoe+4jzwvYnV0dG9uPgogICAgICA8YnV0dG9uIGNsYXNzPSJhbW91bnQtYnRuIHNlbGVjdGVkIiBvbmNsaWNrPSJzZWxlY3RBbW91bnQodGhpcywnJDM2JykiPiQzNjwvYnV0dG9uPgogICAgICA8YnV0dG9uIGNsYXNzPSJhbW91bnQtYnRuIiBvbmNsaWNrPSJzZWxlY3RBbW91bnQodGhpcywnJDEwMCcpIj4kMTAwPC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9ImFtb3VudC1idG4iIG9uY2xpY2s9InNlbGVjdEFtb3VudCh0aGlzLCdvdGhlcicpIj5PdGhlcjwvYnV0dG9uPgogICAgPC9kaXY+CiAgICA8YnV0dG9uIGNsYXNzPSJkb25hdGUtYnRuLWJpZyIgb25jbGljaz0ic2hvd1RvYXN0KCdUaGFuayB5b3UhIERvbmF0aW9uIGxpbmsgY29taW5nIHNvb24g8J+SmycpIj5Eb25hdGUgdmlhIFBheVBhbDwvYnV0dG9uPgogICAgPHAgc3R5bGU9ImZvbnQtc2l6ZTowLjc4cmVtO2NvbG9yOnZhcigtLW11dGVkKSI+U2VjdXJlIHBheW1lbnQuIEV2ZXJ5IHNoZWtlbCAvIGRvbGxhciBoZWxwcy48L3A+CiAgICA8ZGl2IGNsYXNzPSJkaXZpZGVyIj48L2Rpdj4KICAgIDxwIHN0eWxlPSJmb250LXNpemU6MC44NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLXRvcDoxNnB4Ij5Zb3UgY2FuIGFsc28gc3VwcG9ydCB1cyBieSBzaGFyaW5nIHRoZSBzaXRlIHdpdGggb3RoZXIgb2xpbSwgY29udHJpYnV0aW5nIGFuc3dlcnMsIGFuZCBmbGFnZ2luZyBvdXRkYXRlZCBpbmZvcm1hdGlvbi4gRXZlcnkgYml0IGNvdW50cyE8L3A+CiAgPC9kaXY+CjwvZGl2PgoKPCEtLSBMQU5HIE1PREFMIC0tPgo8ZGl2IGNsYXNzPSJtb2RhbC1vdmVybGF5IiBpZD0ibGFuZy1tb2RhbCI+CiAgPGRpdiBjbGFzcz0ibW9kYWwiPgogICAgPGgzPvCfjJAgQ2hvb3NlIExhbmd1YWdlPC9oMz4KICAgIDxwPkNvbnRlbnQgaXMgYXV0by10cmFuc2xhdGVkLiBGb3IgY3JpdGljYWwgZGVjaXNpb25zLCBhbHdheXMgdmVyaWZ5IHdpdGggb2ZmaWNpYWwgc291cmNlcy48L3A+CiAgICA8ZGl2IGNsYXNzPSJ0cmFuc2xhdGlvbi1ub3RpY2UiPuKaoO+4jyBJc3JhZWxpIGJ1cmVhdWNyYXRpYyB0ZXJtcyAoVGV1ZGF0IFplaHV0LCBNaXNyYWQgSGFwbmltLCBldGMuKSBhcmUga2VwdCBpbiB0aGVpciBvcmlnaW5hbCBmb3JtIHdpdGggdG9vbHRpcHMgdG8gcHJldmVudCBtaXN0cmFuc2xhdGlvbi48L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImxhbmctZ3JpZCIgaWQ9ImxhbmctZ3JpZCI+PC9kaXY+CiAgICA8YnV0dG9uIGNsYXNzPSJtb2RhbC1jbG9zZSIgb25jbGljaz0iY2xvc2VMYW5nTW9kYWwoKSI+Q2xvc2U8L2J1dHRvbj4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJ0b2FzdCIgaWQ9InRvYXN0Ij48L2Rpdj4KCjxzY3JpcHQ+CmNvbnN0IENBVEVHT1JJRVMgPSBbCiAge2lkOidiYW5raW5nJyxpY29uOifwn4+mJyxuYW1lOidCYW5raW5nJyxkZXNjOidBY2NvdW50cywgdHJhbnNmZXJzLCBtb3J0Z2FnZXMnfSwKICB7aWQ6J2hlYWx0aCcsaWNvbjon8J+PpScsbmFtZTonSGVhbHRoIEluc3VyYW5jZScsZGVzYzonS3VwYXQgSG9saW0sIGRvY3RvcnMsIGNvdmVyYWdlJ30sCiAge2lkOid0YXgnLGljb246J/Cfk4onLG5hbWU6J1RheCcsZGVzYzonSW5jb21lIHRheCwgTWFzIEhhY2huYXNhLCBWQVQnfSwKICB7aWQ6J2ludGVybmV0JyxpY29uOifwn5O2JyxuYW1lOidJbnRlcm5ldCAmIFBob25lJyxkZXNjOidQcm92aWRlcnMsIGNvbnRyYWN0cywgU0lNIGNhcmRzJ30sCiAge2lkOidob3VzaW5nJyxpY29uOifwn4+gJyxuYW1lOidIb3VzaW5nJyxkZXNjOidSZW50aW5nLCBidXlpbmcsIEFybm9uYSd9LAogIHtpZDonZ292JyxpY29uOifwn6qqJyxuYW1lOidHb3Zlcm5tZW50ICYgSURzJyxkZXNjOidUZXVkYXQgWmVodXQsIE1pc3JhZCBIYXBuaW0nfSwKICB7aWQ6J2VkdWNhdGlvbicsaWNvbjon8J+OkycsbmFtZTonRWR1Y2F0aW9uJyxkZXNjOidTY2hvb2xzLCB1bHBhbiwgdW5pdmVyc2l0aWVzJ30sCiAge2lkOid0cmFuc3BvcnQnLGljb246J/CfmownLG5hbWU6J1RyYW5zcG9ydCcsZGVzYzonRHJpdmluZyBsaWNlbmNlLCBSYXYtS2F2LCBidXNlcyd9LAogIHtpZDonZW1wbG95bWVudCcsaWNvbjon8J+SvCcsbmFtZTonRW1wbG95bWVudCcsZGVzYzonSm9icywgY29udHJhY3RzLCByaWdodHMnfSwKICB7aWQ6J3NvY2lhbCcsaWNvbjon8J+knScsbmFtZTonU29jaWFsIFNlY3VyaXR5JyxkZXNjOidCaXR1YWNoIExldW1pLCBiZW5lZml0cyd9LAogIHtpZDonY3VsdHVyZScsaWNvbjon8J+VjicsbmFtZTonQ3VsdHVyZSAmIExpZmUnLGRlc2M6J0N1c3RvbXMsIGhvbGlkYXlzLCBjb21tdW5pdHknfSwKICB7aWQ6J290aGVyJyxpY29uOifinZMnLG5hbWU6J090aGVyJyxkZXNjOidBbnl0aGluZyBlbHNlJ30sCl07Cgpjb25zdCBUSVBTID0gWwogICJXaGVuIG9wZW5pbmcgYSBiYW5rIGFjY291bnQgaW4gSXNyYWVsLCBicmluZyB5b3VyIFRldWRhdCBPbGVoLCBwYXNzcG9ydCwgYW5kIHByb29mIG9mIGFkZHJlc3MuIEJhbmsgSGFwb2FsaW0gYW5kIEJhbmsgTGV1bWkgYm90aCBoYXZlIGRlZGljYXRlZCBPbGltIGRlcGFydG1lbnRzIHdpdGggRW5nbGlzaC1zcGVha2luZyBzdGFmZi4iLAogICJSZWdpc3RlciB3aXRoIGEgS3VwYXQgSG9saW0gKGhlYWx0aCBmdW5kKSB3aXRoaW4gMyBtb250aHMgb2YgYXJyaXZpbmcuIFRoZSA0IG9wdGlvbnMgYXJlIENsYWxpdCwgTWFjY2FiaSwgTWV1aGVkZXQsIGFuZCBMZXVtaXQuIFlvdSBjYW4gc3dpdGNoIG9uY2UgYSB5ZWFyIGluIE5vdmVtYmVyLiIsCiAgIlRoZSBUZXVkYXQgWmVodXQgKG5hdGlvbmFsIElEKSBpcyByZXF1aXJlZCBmb3IgYWxtb3N0IGV2ZXJ5dGhpbmcgaW4gSXNyYWVsLiBLZWVwIGEgcGhvdG9jb3B5IGF0IGhvbWUgYW5kIGEgcGhvdG8gb24geW91ciBwaG9uZSBhdCBhbGwgdGltZXMuIiwKICAiQXJub25hIChtdW5pY2lwYWwgdGF4KSBiaWxscyBhcmUgc2VudCB0d2ljZSBhIHllYXIuIE5ldyBvbGltIG1heSBiZSBlbGlnaWJsZSBmb3IgYSBkaXNjb3VudCDigJQgY2hlY2sgd2l0aCB5b3VyIGxvY2FsIG11bmljaXBhbGl0eSB3aXRoaW4gOTAgZGF5cyBvZiBhcnJpdmFsLiIsCiAgIlRvIGNvbnZlcnQgeW91ciBmb3JlaWduIGRyaXZpbmcgbGljZW5jZSBpbiBJc3JhZWwsIHlvdSBtYXkgYmUgZXhlbXB0IGZyb20gdGFraW5nIGEgZnVsbCB0ZXN0IGlmIHlvdXIgY291bnRyeSBoYXMgYSByZWNpcHJvY2FsIGFncmVlbWVudC4gQ2hlY2sgd2l0aCBNaXNyYWQgSGFUYWNoYnVyYS4iLApdOwoKbGV0IHF1ZXN0aW9ucyA9IFsKICB7aWQ6MSx0aXRsZToiSG93IGRvIEkgb3BlbiBhIGJhbmsgYWNjb3VudCBhcyBhIG5ldyBvbGVoPyIsYm9keToiSSBqdXN0IGFycml2ZWQgbGFzdCB3ZWVrIGFuZCBJJ20gdHJ5aW5nIHRvIG9wZW4gYSBiYW5rIGFjY291bnQuIFdoYXQgZG9jdW1lbnRzIGRvIEkgbmVlZCBhbmQgd2hpY2ggYmFuayBpcyBtb3N0IG9sZWgtZnJpZW5kbHk/IixjYXQ6J2JhbmtpbmcnLGF1dGhvcjonU2FyYWggTS4nLGRhdGU6JzIwMjQtMTItMTUnLHZpZXdzOjM0MixsYW5nOidFTicsYW5zd2VyczpbCiAgICB7aWQ6MSxib2R5OiJCYW5rIEhhcG9hbGltIGFuZCBCYW5rIExldW1pIGJvdGggaGF2ZSBkZWRpY2F0ZWQgT2xpbSBjZW50cmVzIHdpdGggRW5nbGlzaCBzcGVha2luZyBzdGFmZi4gQnJpbmcgeW91ciBUZXVkYXQgT2xlaCwgcGFzc3BvcnQsIGFuZCBpZiBwb3NzaWJsZSBhIHByb29mIG9mIGFkZHJlc3MuIFRoZSBwcm9jZXNzIHVzdWFsbHkgdGFrZXMgMS0yIHZpc2l0cy4gTGV1bWkncyBvbmxpbmUgcHJvY2VzcyBoYXMgaW1wcm92ZWQgYSBsb3QgcmVjZW50bHkuIixhdXRob3I6J0RhdmlkIEsuJyxkYXRlOicyMDI0LTEyLTE1Jyx2b3Rlczo0NyxmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOidFTid9LAogICAge2lkOjIsYm9keToiSSB1c2VkIERpc2NvdW50IEJhbmsgYW5kIGhhZCBhIGdyZWF0IGV4cGVyaWVuY2UuIFRoZXkgc2V0IHVwIG15IGFjY291bnQgdGhlIHNhbWUgZGF5IGFuZCBnYXZlIG1lIGFuIEVuZ2xpc2gtbGFuZ3VhZ2UgYXBwLiBBbHNvIHdvcnRoIGFza2luZyBhYm91dCB6ZXJvLWZlZSBhY2NvdW50cyBmb3IgbmV3IG9saW0g4oCUIG1hbnkgYmFua3Mgb2ZmZXIgdGhlbSBmb3IgdGhlIGZpcnN0IHllYXIuIixhdXRob3I6J01pcmlhbSBULicsZGF0ZTonMjAyNC0xMi0xNicsdm90ZXM6MzEsZmxhZ2dlZDpmYWxzZSx1c2VyVm90ZWQ6ZmFsc2UsbGFuZzonRU4nfSwKICBdfSwKICB7aWQ6Mix0aXRsZToiV2hpY2ggS3VwYXQgSG9saW0gc2hvdWxkIEkgam9pbj8iLGJvZHk6IkkgbmVlZCB0byByZWdpc3RlciB3aXRoIGEgaGVhbHRoIGZ1bmQuIFdoYXQgYXJlIHRoZSBtYWluIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGZvdXIgb3B0aW9ucyBhbmQgd2hpY2ggaXMgYmVzdCBmb3IgRW5nbGlzaCBzcGVha2Vycz8iLGNhdDonaGVhbHRoJyxhdXRob3I6J0phbWVzIFIuJyxkYXRlOicyMDI0LTEyLTEwJyx2aWV3czoyODksbGFuZzonRU4nLGFuc3dlcnM6WwogICAge2lkOjEsYm9keToiTWFjY2FiaSBpcyBnZW5lcmFsbHkgY29uc2lkZXJlZCB0aGUgbW9zdCBFbmdsaXNoLWZyaWVuZGx5IGFuZCBoYXMgYSBnb29kIGFwcC4gQ2xhbGl0IGhhcyB0aGUgbW9zdCBkb2N0b3JzIGFuZCBjbGluaWNzIGJ1dCB0aGUgYXBwIGFuZCBzZXJ2aWNlIHF1YWxpdHkgdmFyaWVzLiBNZXVoZWRldCBpcyBzdHJvbmcgaW4gSmVydXNhbGVtLiBMZXVtaXQgaXMgdGhlIHNtYWxsZXN0IGJ1dCBvZnRlbiBoYXMgc2hvcnRlciB3YWl0cy4iLGF1dGhvcjonWWFlbCBTLicsZGF0ZTonMjAyNC0xMi0xMScsdm90ZXM6NTIsZmxhZ2dlZDpmYWxzZSx1c2VyVm90ZWQ6ZmFsc2UsbGFuZzonRU4nfSwKICBdfSwKICB7aWQ6Myx0aXRsZToi15DXmdeaINei15XXkdeTINeQ16jXoNeV16DXlCDXldeQ150g157XkteZ16Ig15zXmSDXlNeg15fXlD8iLGJvZHk6Iten15nXkdec16rXmSDXl9ep15HXldefINeQ16jXoNeV16DXlCDXldeQ16DXmSDXnNeQINeR15jXldeXINeQ15nXmiDXnteX16nXkdeZ150g15DXldeq15Ug15XXkNedINei15XXnNeZ150g15fXk9ep15nXnSDXnten15HXnNeZ150g15TXpNeX16rXlC4iLGNhdDonaG91c2luZycsYXV0aG9yOifXqNeV16DXnyDXkS4nLGRhdGU6JzIwMjQtMTItMDgnLHZpZXdzOjE3OCxsYW5nOidIRScsYW5zd2VyczpbCiAgICB7aWQ6MSxib2R5OiLXkNeo16DXldeg15Qg15TXmdeQINee16Eg16LXmdeo15XXoNeZINep157Xqdec157XmdedINec16LXmdeo15nXlCDXlNee16fXldee15nXqi4g16LXldec15nXnSDXl9eT16nXmdedINeW15vXkNeZ150g15zXlNeg15fXlCAo15HXk9eo15og15vXnNecIDcwLTkwJSkg15zXqdeg15Qg15TXqNeQ16nXldeg15QuINem16jXmdeaINec16TXoNeV16og15zXoteZ16jXmdeUINeU157Xp9eV157XmdeqINei150g16rXoteV15PXqiDXlNei15XXnNeUINeq15XXmiA5MCDXmdeV150g157XlNeS16LXlC4g15DXnCDXqtek16HXpNeh15Ug15DXqiDXlNeX15zXldefINeU15bXlCEiLGF1dGhvcjon15nXotecINepLicsZGF0ZTonMjAyNC0xMi0wOScsdm90ZXM6MzksZmxhZ2dlZDpmYWxzZSx1c2VyVm90ZWQ6ZmFsc2UsbGFuZzonSEUnfSwKICBdfSwKICB7aWQ6NCx0aXRsZToiQmVzdCBtb2JpbGUgcGhvbmUgcHJvdmlkZXIgZm9yIG9saW0/Iixib2R5OiJXaGF0IFNJTSBjYXJkIG9yIGNvbnRyYWN0IHNob3VsZCBJIGdldD8gSSBuZWVkIGdvb2QgZGF0YSBhbmQgYWZmb3JkYWJsZSBjYWxscyB0byB0aGUgVUsuIixjYXQ6J2ludGVybmV0JyxhdXRob3I6J0VtbWEgTC4nLGRhdGU6JzIwMjQtMTItMDUnLHZpZXdzOjIwMSxsYW5nOidFTicsYW5zd2VyczpbCiAgICB7aWQ6MSxib2R5OiJHb2xhbiBUZWxlY29tIGlzIHRoZSBiZXN0IHZhbHVlIGZvciBtb3N0IG9saW0g4oCUIGFyb3VuZCDigqozMC9tb250aCBmb3IgdW5saW1pdGVkIGRhdGEgYW5kIGNhbGxzLiBQYXJ0bmVyIGFuZCBDZWxsY29tIGFyZSBtb3JlIGV4cGVuc2l2ZSBidXQgaGF2ZSBiZXR0ZXIgY292ZXJhZ2UgaW4gc29tZSBhcmVhcy4gRm9yIGludGVybmF0aW9uYWwgY2FsbHMgdG8gdGhlIFVLLCBnZXQgYSBXaGF0c0FwcCBudW1iZXIgb3IgdXNlIEdvbGFuJ3MgaW50ZXJuYXRpb25hbCBhZGQtb24uIixhdXRob3I6J0F2aSBDLicsZGF0ZTonMjAyNC0xMi0wNicsdm90ZXM6MjgsZmxhZ2dlZDpmYWxzZSx1c2VyVm90ZWQ6ZmFsc2UsbGFuZzonRU4nfSwKICBdfSwKXTsKCmxldCBuZXh0UUlkID0gNSwgbmV4dEFJZCA9IDEwOwpsZXQgY3VycmVudENhdCA9IG51bGwsIGN1cnJlbnRRSWQgPSBudWxsLCBwcmV2UGFnZSA9ICdmb3J1bScsIGN1cnJlbnRMYW5nID0gJ0VOJzsKCmNvbnN0IExBTkdTID0gWwogIHtjb2RlOidFTicsZmxhZzon8J+HrPCfh6cnLG5hbWU6J0VuZ2xpc2gnLCAgbmF0aXZlOidFbmdsaXNoJ30sCiAge2NvZGU6J0hFJyxmbGFnOifwn4eu8J+HsScsbmFtZTonSGVicmV3JywgICBuYXRpdmU6J9ei15HXqNeZ16onfSwKICB7Y29kZTonUlUnLGZsYWc6J/Cfh7fwn4e6JyxuYW1lOidSdXNzaWFuJywgIG5hdGl2ZTon0KDRg9GB0YHQutC40LknfSwKICB7Y29kZTonRlInLGZsYWc6J/Cfh6vwn4e3JyxuYW1lOidGcmVuY2gnLCAgIG5hdGl2ZTonRnJhbsOnYWlzJ30sCiAge2NvZGU6J0VTJyxmbGFnOifwn4eq8J+HuCcsbmFtZTonU3BhbmlzaCcsICBuYXRpdmU6J0VzcGHDsW9sJ30sCiAge2NvZGU6J0FSJyxmbGFnOifwn4em8J+HqicsbmFtZTonQXJhYmljJywgICBuYXRpdmU6J9in2YTYudix2KjZitipJ30sCiAge2NvZGU6J0FNJyxmbGFnOifwn4eq8J+HuScsbmFtZTonQW1oYXJpYycsICBuYXRpdmU6J+GKoOGIm+GIreGKmyd9LAogIHtjb2RlOidQVCcsZmxhZzon8J+Hp/Cfh7cnLG5hbWU6J1BvcnR1Z3Vlc2UnLG5hdGl2ZTonUG9ydHVndcOqcyd9LApdOwoKY29uc3QgQ0hFQ0tMSVNUID0gWwogIHtzZWN0aW9uOidGaXJzdCAzMCBEYXlzJywgaWNvbjon8J+agCcsIGl0ZW1zOlsKICAgICdDb2xsZWN0IFRldWRhdCBPbGVoIGZyb20gdGhlIGFpcnBvcnQgb3IgTWlzcmFkIEhhQWxpeWFoJywKICAgICdSZWdpc3RlciBhdCBNaXNyYWQgSGFBbGl5YWggKE1pbmlzdHJ5IG9mIEFsaXlhaCkgZm9yIGJlbmVmaXRzJywKICAgICdBcHBseSBmb3IgVGV1ZGF0IFplaHV0IChOYXRpb25hbCBJRCkgYXQgTWlzcmFkIEhhcG5pbScsCiAgICAnUmVnaXN0ZXIgd2l0aCBhIEt1cGF0IEhvbGltIChoZWFsdGggZnVuZCknLAogICAgJ09wZW4gYSBiYW5rIGFjY291bnQnLAogICAgJ0Vucm9sIGluIFVscGFuIChIZWJyZXcgbGFuZ3VhZ2UgY291cnNlKScsCiAgICAnUmVnaXN0ZXIgY2hpbGRyZW4gYXQgbG9jYWwgc2Nob29sJywKICBdfSwKICB7c2VjdGlvbjonRmlyc3QgMyBNb250aHMnLCBpY29uOifwn5OFJywgaXRlbXM6WwogICAgJ0FwcGx5IGZvciBBcm5vbmEgKG11bmljaXBhbCB0YXgpIGRpc2NvdW50IGF0IGxvY2FsIElyaXlhJywKICAgICdUcmFuc2ZlciBvciBvYnRhaW4gSXNyYWVsaSBkcml2aW5nIGxpY2VuY2UnLAogICAgJ0FwcGx5IGZvciBCaXR1YWNoIExldW1pIChOYXRpb25hbCBJbnN1cmFuY2UpJywKICAgICdTZXQgdXAgaW50ZXJuZXQgYXQgaG9tZScsCiAgICAnUmVnaXN0ZXIgd2l0aCBhIGxvY2FsIGRvY3RvciAo16jXldek15Ag157Xqdek15fXlCknLAogICAgJ0pvaW4gbG9jYWwgb2xpbSBGYWNlYm9vay9XaGF0c0FwcCBncm91cHMnLAogIF19LAogIHtzZWN0aW9uOidGaXJzdCBZZWFyJywgaWNvbjon8J+ThicsIGl0ZW1zOlsKICAgICdGaWxlIHlvdXIgZmlyc3QgSXNyYWVsaSB0YXggcmV0dXJuIGlmIHJlcXVpcmVkJywKICAgICdSZXZpZXcgeW91ciBLdXBhdCBIb2xpbSDigJQgeW91IGNhbiBzd2l0Y2ggZXZlcnkgTm92ZW1iZXInLAogICAgJ0NoZWNrIGVudGl0bGVtZW50IHRvIE9sZWggbW9ydGdhZ2UgYmVuZWZpdHMgKE1pc2hrYW50YSknLAogICAgJ0FwcGx5IGZvciBhbnkgcmVtYWluaW5nIFNhbCBLbGl0YSAoYWJzb3JwdGlvbiBiYXNrZXQpIHBheW1lbnRzJywKICAgICdHZXQgeW91ciBJc3JhZWxpIGRyaXZpbmcgbGljZW5jZSBpZiB5b3UgaGF2ZW5cJ3QgYWxyZWFkeScsCiAgXX0sCl07CgpmdW5jdGlvbiBzaG93UGFnZShwLCBkYXRhKXsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucGFnZScpLmZvckVhY2goeD0+eC5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhZ2UtJytwKS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICBpZihwPT09J2hvbWUnKSByZW5kZXJIb21lQ2F0cygpOwogIGlmKHA9PT0nZm9ydW0nKSByZW5kZXJGb3J1bSgpOwogIGlmKHA9PT0nYmVzdG9mJykgcmVuZGVyQmVzdE9mKCk7CiAgaWYocD09PSdjaGVja2xpc3QnKSByZW5kZXJDaGVja2xpc3QoKTsKICBpZihwPT09J3NlYXJjaCcpIHJlbmRlclRhZ0Nsb3VkKCk7CiAgaWYocD09PSdjYXRzJykgcmVuZGVyQ2F0c1BhZ2UoKTsKICBpZihwPT09J2NhdGVnb3J5JyYmZGF0YSl7Y3VycmVudENhdD1kYXRhO3JlbmRlckNhdGVnb3J5UGFnZSgpO30KICBpZihwPT09J3F1ZXN0aW9uJyYmZGF0YSl7Y3VycmVudFFJZD1kYXRhO3JlbmRlclF1ZXN0aW9uKCk7fQogIHdpbmRvdy5zY3JvbGxUbygwLDApOwp9CgpmdW5jdGlvbiByZW5kZXJIb21lQ2F0cygpewogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdob21lLWNhdHMnKS5pbm5lckhUTUwgPSBDQVRFR09SSUVTLm1hcChjPT5gCiAgICA8ZGl2IGNsYXNzPSJjYXQtY2FyZCIgb25jbGljaz0icHJldlBhZ2U9J2hvbWUnO3Nob3dQYWdlKCdjYXRlZ29yeScsJyR7Yy5pZH0nKSI+CiAgICAgIDxkaXYgY2xhc3M9ImNhdC1pY29uIj4ke2MuaWNvbn08L2Rpdj4KICAgICAgPGg0PiR7Yy5uYW1lfTwvaDQ+CiAgICAgIDxwPiR7Yy5kZXNjfTwvcD4KICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZTowLjcycmVtO2NvbG9yOnZhcigtLWJsdWUpO21hcmdpbi10b3A6NnB4O2ZvbnQtd2VpZ2h0OjYwMCI+JHtxdWVzdGlvbnMuZmlsdGVyKHE9PnEuY2F0PT09Yy5pZCkubGVuZ3RofSBxdWVzdGlvbnM8L3A+CiAgICA8L2Rpdj5gKS5qb2luKCcnKTsKICBjb25zdCB0aXBzID0gVElQUzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGlwLXRleHQnKS50ZXh0Q29udGVudCA9IHRpcHNbTWF0aC5mbG9vcihEYXRlLm5vdygpLzg2NDAwMDAwKSV0aXBzLmxlbmd0aF07Cn0KCmZ1bmN0aW9uIHNvcnRRdWVzdGlvbnMocXMsIG1ldGhvZCl7CiAgcmV0dXJuIFsuLi5xc10uc29ydCgoYSxiKT0+ewogICAgaWYobWV0aG9kPT09J25ld2VzdCcpIHJldHVybiBiLmlkLWEuaWQ7CiAgICBpZihtZXRob2Q9PT0nbW9zdF9hbnN3ZXJzJykgcmV0dXJuIGIuYW5zd2Vycy5sZW5ndGgtYS5hbnN3ZXJzLmxlbmd0aDsKICAgIGlmKG1ldGhvZD09PSdoaWdoZXN0X3JhdGVkJykgcmV0dXJuIG1heFZvdGVzKGIpLW1heFZvdGVzKGEpOwogICAgaWYobWV0aG9kPT09J21vc3Rfdmlld2VkJykgcmV0dXJuIGIudmlld3MtYS52aWV3czsKICAgIHJldHVybiBiLmlkLWEuaWQ7CiAgfSk7Cn0KCmZ1bmN0aW9uIG1heFZvdGVzKHEpe3JldHVybiBxLmFuc3dlcnMubGVuZ3RoP01hdGgubWF4KC4uLnEuYW5zd2Vycy5tYXAoYT0+YS52b3RlcykpOjA7fQpmdW5jdGlvbiBhdmdWb3RlcyhxKXtyZXR1cm4gcS5hbnN3ZXJzLmxlbmd0aD9xLmFuc3dlcnMucmVkdWNlKChzLGEpPT5zK2Eudm90ZXMsMCkvcS5hbnN3ZXJzLmxlbmd0aDowO30KCmZ1bmN0aW9uIHJlbmRlckZvcnVtKCl7CiAgY29uc3Qgc29ydCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb3J1bS1zb3J0Jyk/LnZhbHVlfHwnbmV3ZXN0JzsKICBjb25zdCBxcyA9IHNvcnRRdWVzdGlvbnMocXVlc3Rpb25zLCBzb3J0KTsKICBjb25zdCBjYXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1jYXQnKTsKICBpZihjYXQpIGNhdC5pbm5lckhUTUw9JzxvcHRpb24gdmFsdWU9IiI+U2VsZWN0IGEgY2F0ZWdvcnkuLi48L29wdGlvbj4nK0NBVEVHT1JJRVMubWFwKGM9PmA8b3B0aW9uIHZhbHVlPSIke2MuaWR9Ij4ke2MuaWNvbn0gJHtjLm5hbWV9PC9vcHRpb24+YCkuam9pbignJyk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZvcnVtLWxpc3QnKS5pbm5lckhUTUwgPSBxcy5sZW5ndGggPyBxcy5tYXAocT0+cUNhcmQocSwnZm9ydW0nKSkuam9pbignJykgOiBlbXB0eVN0YXRlKCdObyBxdWVzdGlvbnMgeWV0LiBCZSB0aGUgZmlyc3QgdG8gYXNrIScpOwp9CgpmdW5jdGlvbiByZW5kZXJDYXRlZ29yeVBhZ2UoKXsKICBjb25zdCBjYXQgPSBDQVRFR09SSUVTLmZpbmQoYz0+Yy5pZD09PWN1cnJlbnRDYXQpOwogIGlmKCFjYXQpIHJldHVybjsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0LXBhZ2UtdGl0bGUnKS50ZXh0Q29udGVudCA9IGNhdC5pY29uKycgJytjYXQubmFtZTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0LXBhZ2UtZGVzYycpLnRleHRDb250ZW50ID0gY2F0LmRlc2M7CiAgY29uc3Qgc29ydCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXQtc29ydCcpPy52YWx1ZXx8J25ld2VzdCc7CiAgY29uc3QgcXMgPSBzb3J0UXVlc3Rpb25zKHF1ZXN0aW9ucy5maWx0ZXIocT0+cS5jYXQ9PT1jdXJyZW50Q2F0KSwgc29ydCk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdC1wYWdlLWxpc3QnKS5pbm5lckhUTUwgPSBxcy5sZW5ndGggPyBxcy5tYXAocT0+cUNhcmQocSwnY2F0ZWdvcnknKSkuam9pbignJykgOiBlbXB0eVN0YXRlKCdObyBxdWVzdGlvbnMgaW4gdGhpcyBjYXRlZ29yeSB5ZXQuJyk7Cn0KCmZ1bmN0aW9uIHFDYXJkKHEsZnJvbSl7CiAgY29uc3QgdG9wVm90ZXMgPSBxLmFuc3dlcnMubGVuZ3RoP01hdGgubWF4KC4uLnEuYW5zd2Vycy5tYXAoYT0+YS52b3RlcykpOjA7CiAgY29uc3QgY2F0ID0gQ0FURUdPUklFUy5maW5kKGM9PmMuaWQ9PT1xLmNhdCk7CiAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJxLWNhcmQiIG9uY2xpY2s9InByZXZQYWdlPScke2Zyb219JztzaG93UGFnZSgncXVlc3Rpb24nLCR7cS5pZH0pIj4KICAgIDxkaXYgY2xhc3M9InEtbWV0YSI+CiAgICAgIDxzcGFuIGNsYXNzPSJxLWNhdC1iYWRnZSI+JHtjYXQ/Y2F0Lmljb24rJyAnK2NhdC5uYW1lOnEuY2F0fTwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InEtYXV0aG9yIj7wn5GkICR7cS5hdXRob3J9PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icS1kYXRlIj7wn5OFICR7cS5kYXRlfTwvc3Bhbj4KICAgICAgJHt0b3BWb3Rlcz49MzA/YDxzcGFuIGNsYXNzPSJmZWF0dXJlZC1iYWRnZSI+4q2QIEZlYXR1cmVkPC9zcGFuPmA6Jyd9CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9InEtdGl0bGUiPiR7cS50aXRsZX08L2Rpdj4KICAgIDxkaXYgY2xhc3M9InEtcHJldmlldyI+JHtxLmJvZHkuc3Vic3RyaW5nKDAsMTIwKX0ke3EuYm9keS5sZW5ndGg+MTIwPycuLi4nOicnfTwvZGl2PgogICAgPGRpdiBjbGFzcz0icS1zdGF0cyI+CiAgICAgIDxzcGFuPvCfkqwgJHtxLmFuc3dlcnMubGVuZ3RofSBhbnN3ZXIke3EuYW5zd2Vycy5sZW5ndGghPT0xPydzJzonJ308L3NwYW4+CiAgICAgIDxzcGFuPvCfkYEgJHtxLnZpZXdzfSB2aWV3czwvc3Bhbj4KICAgICAgPHNwYW4+4q2QIFRvcCB2b3RlOiAke3RvcFZvdGVzfTwvc3Bhbj4KICAgIDwvZGl2PgogICAgPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDo2cHgiPiR7bGFuZ0JhZGdlKHEubGFuZyl9PC9kaXY+CiAgPC9kaXY+YDsKfQoKZnVuY3Rpb24gcmVuZGVyUXVlc3Rpb24oKXsKICBjb25zdCBxID0gcXVlc3Rpb25zLmZpbmQoeD0+eC5pZD09PWN1cnJlbnRRSWQpOwogIGlmKCFxKXtyZXR1cm47fQogIHEudmlld3MrKzsKICBjb25zdCBjYXQgPSBDQVRFR09SSUVTLmZpbmQoYz0+Yy5pZD09PXEuY2F0KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1mdWxsLWNvbnRlbnQnKS5pbm5lckhUTUw9YAogICAgPGRpdiBjbGFzcz0icS1tZXRhIiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxMnB4Ij4KICAgICAgPHNwYW4gY2xhc3M9InEtY2F0LWJhZGdlIiBzdHlsZT0iY3Vyc29yOnBvaW50ZXIiIG9uY2xpY2s9InNob3dQYWdlKCdjYXRlZ29yeScsJyR7cS5jYXR9JykiPiR7Y2F0P2NhdC5pY29uKycgJytjYXQubmFtZTpxLmNhdH08L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJxLWF1dGhvciI+8J+RpCAke3EuYXV0aG9yfTwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InEtZGF0ZSI+8J+ThSAke3EuZGF0ZX08L3NwYW4+CiAgICA8L2Rpdj4KICAgIDxoMj4ke3EudGl0bGV9PC9oMj4KICAgIDxkaXYgY2xhc3M9ImJvZHkiIHN0eWxlPSJtYXJnaW4tdG9wOjEycHgiPiR7cS5ib2R5fTwvZGl2PmA7CiAgY29uc3Qgc29ydGVkID0gWy4uLnEuYW5zd2Vyc10uc29ydCgoYSxiKT0+Yi52b3Rlcy1hLnZvdGVzKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zd2Vycy1jb3VudCcpLnRleHRDb250ZW50ID0gYCR7cS5hbnN3ZXJzLmxlbmd0aH0gQW5zd2VyJHtxLmFuc3dlcnMubGVuZ3RoIT09MT8ncyc6Jyd9YDsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zd2Vycy1saXN0JykuaW5uZXJIVE1MID0gc29ydGVkLmxlbmd0aCA/IHNvcnRlZC5tYXAoKGEsaSk9PmAKICAgIDxkaXYgY2xhc3M9ImFuc3dlci1jYXJkICR7aT09PTAmJmEudm90ZXM+MD8ndG9wLWFuc3dlcic6Jyd9Ij4KICAgICAgJHtpPT09MCYmYS52b3Rlcz4wPyc8ZGl2IGNsYXNzPSJ0b3AtYW5zd2VyLWxhYmVsIj7irZAgVG9wIEFuc3dlcjwvZGl2Pic6Jyd9CiAgICAgIDxkaXYgY2xhc3M9ImFuc3dlci1ib2R5Ij4ke2EuYm9keX08L2Rpdj4KICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbTo4cHgiPiR7bGFuZ0JhZGdlKGEubGFuZyl9PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImFuc3dlci1mb290ZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImFuc3dlci1tZXRhIj7wn5GkICR7YS5hdXRob3J9IMK3IPCfk4UgJHthLmRhdGV9PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0idm90ZS1idG5zIj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9InZvdGUtYnRuICR7YS51c2VyVm90ZWQ/J2xpa2VkJzonJ30iIG9uY2xpY2s9InZvdGUoJHtxLmlkfSwke2EuaWR9KSI+CiAgICAgICAgICAgIPCfkY0gJHthLnZvdGVzfQogICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJmbGFnLWJ0biIgb25jbGljaz0iZmxhZ0Fuc3dlcigke3EuaWR9LCR7YS5pZH0pIj7wn5qpICR7YS5mbGFnZ2VkPydGbGFnZ2VkJzonRmxhZyd9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICAke2EuZmxhZ2dlZD8nPGRpdiBzdHlsZT0iZm9udC1zaXplOjAuNzVyZW07Y29sb3I6dmFyKC0tcmVkKTttYXJnaW4tdG9wOjhweCI+4pqg77iPIFRoaXMgYW5zd2VyIGhhcyBiZWVuIGZsYWdnZWQgZm9yIHJldmlldy4gUGxlYXNlIHZlcmlmeSB3aXRoIG9mZmljaWFsIHNvdXJjZXMuPC9kaXY+JzonJ30KICAgIDwvZGl2PmApLmpvaW4oJycpIDogJzxkaXYgY2xhc3M9ImVtcHR5LXN0YXRlIj48ZGl2IGNsYXNzPSJpY29uIj7wn5KsPC9kaXY+PHA+Tm8gYW5zd2VycyB5ZXQuIEJlIHRoZSBmaXJzdCB0byBoZWxwITwvcD48L2Rpdj4nOwp9CgpmdW5jdGlvbiBnb0JhY2soKXtzaG93UGFnZShwcmV2UGFnZT09PSdjYXRlZ29yeSc/J2NhdGVnb3J5JzonZm9ydW0nLCBwcmV2UGFnZT09PSdjYXRlZ29yeSc/Y3VycmVudENhdDpudWxsKTt9CgpmdW5jdGlvbiB0b2dnbGVBc2tCYXIoKXsKICBjb25zdCBiID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fzay1iYXInKTsKICBiLnN0eWxlLmRpc3BsYXkgPSBiLnN0eWxlLmRpc3BsYXk9PT0nbm9uZSc/J2Jsb2NrJzonbm9uZSc7Cn0KZnVuY3Rpb24gY2FuY2VsQXNrKCl7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtdGl0bGUnKS52YWx1ZT0nJzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1ib2R5JykudmFsdWU9Jyc7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtY2F0JykudmFsdWU9Jyc7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtbmFtZScpLnZhbHVlPScnOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhc2stYmFyJykuc3R5bGUuZGlzcGxheT0nbm9uZSc7Cn0KZnVuY3Rpb24gcmVuZGVyQ2F0c1BhZ2UoKXsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0cy1ncmlkJykuaW5uZXJIVE1MID0gQ0FURUdPUklFUy5tYXAoYz0+YAogICAgPGRpdiBjbGFzcz0iY2F0LWNhcmQiIG9uY2xpY2s9InByZXZQYWdlPSdjYXRzJztzaG93UGFnZSgnY2F0ZWdvcnknLCcke2MuaWR9JykiPgogICAgICA8ZGl2IGNsYXNzPSJjYXQtaWNvbiI+JHtjLmljb259PC9kaXY+CiAgICAgIDxoND4ke2MubmFtZX08L2g0PgogICAgICA8cD4ke2MuZGVzY308L3A+CiAgICAgIDxwIHN0eWxlPSJmb250LXNpemU6MC43MnJlbTtjb2xvcjp2YXIoLS1ibHVlKTttYXJnaW4tdG9wOjZweDtmb250LXdlaWdodDo2MDAiPiR7cXVlc3Rpb25zLmZpbHRlcihxPT5xLmNhdD09PWMuaWQpLmxlbmd0aH0gcXVlc3Rpb25zPC9wPgogICAgPC9kaXY+YCkuam9pbignJyk7Cn0KCmZ1bmN0aW9uIHN1Ym1pdFF1ZXN0aW9uKCl7CiAgY29uc3QgdGl0bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS10aXRsZScpLnZhbHVlLnRyaW0oKTsKICBjb25zdCBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtYm9keScpLnZhbHVlLnRyaW0oKTsKICBjb25zdCBjYXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1jYXQnKS52YWx1ZTsKICBjb25zdCBuYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtbmFtZScpLnZhbHVlLnRyaW0oKXx8J0Fub255bW91cyc7CiAgaWYoIXRpdGxlfHwhYm9keXx8IWNhdCl7c2hvd1RvYXN0KCdQbGVhc2UgZmlsbCBpbiBhbGwgZmllbGRzIOKdjCcpO3JldHVybjt9CiAgcXVlc3Rpb25zLnVuc2hpZnQoe2lkOm5leHRRSWQrKyx0aXRsZSxib2R5LGNhdCxhdXRob3I6bmFtZSxkYXRlOm5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zbGljZSgwLDEwKSx2aWV3czowLGxhbmc6Y3VycmVudExhbmcsYW5zd2VyczpbXX0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLXRpdGxlJykudmFsdWU9Jyc7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtYm9keScpLnZhbHVlPScnOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLWNhdCcpLnZhbHVlPScnOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLW5hbWUnKS52YWx1ZT0nJzsKICB0b2dnbGVBc2tCYXIoKTsKICByZW5kZXJGb3J1bSgpOwogIHNob3dUb2FzdCgnUXVlc3Rpb24gcG9zdGVkISDinIUnKTsKfQoKZnVuY3Rpb24gc3VibWl0QW5zd2VyKCl7CiAgY29uc3QgcSA9IHF1ZXN0aW9ucy5maW5kKHg9PnguaWQ9PT1jdXJyZW50UUlkKTsKICBpZighcSkgcmV0dXJuOwogIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zLWJvZHknKS52YWx1ZS50cmltKCk7CiAgY29uc3QgbmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbnMtbmFtZScpLnZhbHVlLnRyaW0oKXx8J0Fub255bW91cyc7CiAgaWYoIWJvZHkpe3Nob3dUb2FzdCgnUGxlYXNlIHdyaXRlIGFuIGFuc3dlciDinYwnKTtyZXR1cm47fQogIHEuYW5zd2Vycy5wdXNoKHtpZDpuZXh0QUlkKyssYm9keSxhdXRob3I6bmFtZSxkYXRlOm5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zbGljZSgwLDEwKSx2b3RlczowLGZsYWdnZWQ6ZmFsc2UsdXNlclZvdGVkOmZhbHNlLGxhbmc6Y3VycmVudExhbmd9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zLWJvZHknKS52YWx1ZT0nJzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zLW5hbWUnKS52YWx1ZT0nJzsKICByZW5kZXJRdWVzdGlvbigpOwogIHNob3dUb2FzdCgnQW5zd2VyIHBvc3RlZCEg4pyFJyk7Cn0KCmZ1bmN0aW9uIHZvdGUocUlkLGFJZCl7CiAgY29uc3QgcSA9IHF1ZXN0aW9ucy5maW5kKHg9PnguaWQ9PT1xSWQpOwogIGNvbnN0IGEgPSBxPy5hbnN3ZXJzLmZpbmQoeD0+eC5pZD09PWFJZCk7CiAgaWYoIWEpIHJldHVybjsKICBhLnVzZXJWb3RlZD0hYS51c2VyVm90ZWQ7CiAgYS52b3Rlcys9YS51c2VyVm90ZWQ/MTotMTsKICByZW5kZXJRdWVzdGlvbigpOwp9CgpmdW5jdGlvbiBmbGFnQW5zd2VyKHFJZCxhSWQpewogIGNvbnN0IHEgPSBxdWVzdGlvbnMuZmluZCh4PT54LmlkPT09cUlkKTsKICBjb25zdCBhID0gcT8uYW5zd2Vycy5maW5kKHg9PnguaWQ9PT1hSWQpOwogIGlmKCFhKSByZXR1cm47CiAgYS5mbGFnZ2VkPSFhLmZsYWdnZWQ7CiAgcmVuZGVyUXVlc3Rpb24oKTsKICBzaG93VG9hc3QoYS5mbGFnZ2VkPydBbnN3ZXIgZmxhZ2dlZCBmb3IgcmV2aWV3IPCfmqknOidGbGFnIHJlbW92ZWQnKTsKfQoKZnVuY3Rpb24gcmVuZGVyQmVzdE9mKGZpbHRlckNhdCl7CiAgY29uc3QgZmlsdGVycyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZXN0b2YtZmlsdGVycycpOwogIGZpbHRlcnMuaW5uZXJIVE1MID0gQ0FURUdPUklFUy5tYXAoYz0+YDxidXR0b24gY2xhc3M9ImZpbHRlci1idG4iIG9uY2xpY2s9ImZpbHRlckJlc3RPZignJHtjLmlkfScsdGhpcykiPiR7Yy5pY29ufSAke2MubmFtZX08L2J1dHRvbj5gKS5qb2luKCcnKTsKICBjb25zdCB0aHJlc2hvbGQgPSAyMDsKICBsZXQgcXMgPSBxdWVzdGlvbnMuZmlsdGVyKHE9Pm1heFZvdGVzKHEpPj10aHJlc2hvbGQgfHwgYXZnVm90ZXMocSk+PTE1KTsKICBpZihmaWx0ZXJDYXQmJmZpbHRlckNhdCE9PSdhbGwnKSBxcz1xcy5maWx0ZXIocT0+cS5jYXQ9PT1maWx0ZXJDYXQpOwogIHFzLnNvcnQoKGEsYik9Pm1heFZvdGVzKGIpLW1heFZvdGVzKGEpKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmVzdG9mLWxpc3QnKS5pbm5lckhUTUwgPSBxcy5sZW5ndGgKICAgID8gYDxwIHN0eWxlPSJmb250LXNpemU6MC44MnJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLWJvdHRvbToxNnB4Ij5TaG93aW5nICR7cXMubGVuZ3RofSBoaWdobHktcmF0ZWQgcXVlc3Rpb24ke3FzLmxlbmd0aCE9PTE/J3MnOicnfTwvcD5gK3FzLm1hcChxPT5xQ2FyZChxLCdiZXN0b2YnKSkuam9pbignJykKICAgIDogZW1wdHlTdGF0ZSgnQXMgdGhlIGNvbW11bml0eSBncm93cywgdG9wLXJhdGVkIGFuc3dlcnMgd2lsbCBhcHBlYXIgaGVyZS4gU3RhcnQgYW5zd2VyaW5nIHF1ZXN0aW9ucyEnKTsKfQoKZnVuY3Rpb24gZmlsdGVyQmVzdE9mKGNhdCxidG4pewogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5maWx0ZXItYnRuJykuZm9yRWFjaChiPT5iLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpKTsKICBpZihidG4pIGJ0bi5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICByZW5kZXJCZXN0T2YoY2F0PT09J2FsbCc/bnVsbDpjYXQpOwp9CgpmdW5jdGlvbiByZW5kZXJDaGVja2xpc3QoKXsKICBjb25zdCBzYXZlZCA9IHt9OwogIHRyeXtjb25zdCBzPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NoZWNrbGlzdCcpO2lmKHMpT2JqZWN0LmFzc2lnbihzYXZlZCxKU09OLnBhcnNlKHMpKTt9Y2F0Y2goZSl7fQogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGVja2xpc3QtY29udGVudCcpLmlubmVySFRNTCA9IENIRUNLTElTVC5tYXAoKHMsc2kpPT5gCiAgICA8ZGl2IGNsYXNzPSJjaGVja2xpc3Qtc2VjdGlvbiI+CiAgICAgIDxoMz4ke3MuaWNvbn0gJHtzLnNlY3Rpb259PC9oMz4KICAgICAgJHtzLml0ZW1zLm1hcCgoaXRlbSxpaSk9PnsKICAgICAgICBjb25zdCBrZXk9YCR7c2l9LSR7aWl9YDsKICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9ImNoZWNrbGlzdC1pdGVtIj4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImNoay0ke2tleX0iICR7c2F2ZWRba2V5XT8nY2hlY2tlZCc6Jyd9IG9uY2hhbmdlPSJzYXZlQ2hlY2soJyR7a2V5fScsdGhpcy5jaGVja2VkKSIgLz4KICAgICAgICAgIDxsYWJlbCBmb3I9ImNoay0ke2tleX0iPiR7aXRlbX08L2xhYmVsPgogICAgICAgIDwvZGl2PmA7CiAgICAgIH0pLmpvaW4oJycpfQogICAgPC9kaXY+YCkuam9pbignJyk7Cn0KCmZ1bmN0aW9uIHNhdmVDaGVjayhrZXksdmFsKXsKICB0cnl7CiAgICBjb25zdCBzPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NoZWNrbGlzdCcpOwogICAgY29uc3QgZGF0YT1zP0pTT04ucGFyc2Uocyk6e307CiAgICBkYXRhW2tleV09dmFsOwogICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnY2hlY2tsaXN0JyxKU09OLnN0cmluZ2lmeShkYXRhKSk7CiAgfWNhdGNoKGUpe30KfQoKZnVuY3Rpb24gcmVuZGVyVGFnQ2xvdWQoKXsKICBjb25zdCB0YWdzPVsnQmFua2luZycsJ0hlYWx0aCBJbnN1cmFuY2UnLCdUZXVkYXQgWmVodXQnLCdLdXBhdCBIb2xpbScsJ1RheCcsJ0Fybm9uYScsJ0JpdHVhY2ggTGV1bWknLCdVbHBhbicsJ0ludGVybmV0JywnUGhvbmUnLCdIb3VzaW5nJywnRHJpdmluZyBMaWNlbmNlJywnU2Nob29sJywnRW1wbG95bWVudCcsJ01pc3JhZCBIYXBuaW0nXTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFnLWNsb3VkJykuaW5uZXJIVE1MPXRhZ3MubWFwKHQ9PmA8c3BhbiBjbGFzcz0idGFnLWNsb3VkLWl0ZW0iIG9uY2xpY2s9InNlYXJjaFRhZygnJHt0fScpIj4ke3R9PC9zcGFuPmApLmpvaW4oJycpOwp9CgpmdW5jdGlvbiBzZWFyY2hUYWcodCl7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlYXJjaC1pbnB1dCcpLnZhbHVlPXQ7CiAgZG9TZWFyY2goKTsKfQoKZnVuY3Rpb24gZG9TZWFyY2goKXsKICBjb25zdCB0ZXJtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlYXJjaC1pbnB1dCcpLnZhbHVlLnRvTG93ZXJDYXNlKCkudHJpbSgpOwogIGlmKCF0ZXJtKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoLXJlc3VsdHMnKS5pbm5lckhUTUw9Jyc7cmV0dXJuO30KICBjb25zdCByZXN1bHRzID0gcXVlc3Rpb25zLmZpbHRlcihxPT4KICAgIHEudGl0bGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKXx8CiAgICBxLmJvZHkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKXx8CiAgICBxLmFuc3dlcnMuc29tZShhPT5hLmJvZHkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSl8fAogICAgKENBVEVHT1JJRVMuZmluZChjPT5jLmlkPT09cS5jYXQpPy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSkpCiAgKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoLXJlc3VsdHMnKS5pbm5lckhUTUwgPSByZXN1bHRzLmxlbmd0aAogICAgPyBgPHAgc3R5bGU9ImZvbnQtc2l6ZTowLjgycmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tYm90dG9tOjE2cHgiPiR7cmVzdWx0cy5sZW5ndGh9IHJlc3VsdCR7cmVzdWx0cy5sZW5ndGghPT0xPydzJzonJ30gZm9yICI8c3Ryb25nPiR7dGVybX08L3N0cm9uZz4iPC9wPmArcmVzdWx0cy5tYXAocT0+cUNhcmQocSwnc2VhcmNoJykpLmpvaW4oJycpCiAgICA6IGA8ZGl2IGNsYXNzPSJlbXB0eS1zdGF0ZSI+PGRpdiBjbGFzcz0iaWNvbiI+8J+UjTwvZGl2PjxwPk5vIHJlc3VsdHMgZm91bmQgZm9yICI8c3Ryb25nPiR7dGVybX08L3N0cm9uZz4iLiBUcnkgYSBkaWZmZXJlbnQga2V5d29yZCBvciA8YSBocmVmPSIjIiBvbmNsaWNrPSJzaG93UGFnZSgnZm9ydW0nKTtyZXR1cm4gZmFsc2U7IiBzdHlsZT0iY29sb3I6dmFyKC0tYmx1ZSkiPmFzayBhIHF1ZXN0aW9uPC9hPiE8L3A+PC9kaXY+YDsKfQoKZnVuY3Rpb24gbGFuZ0ZsYWcoY29kZSl7cmV0dXJuIChMQU5HUy5maW5kKGw9PmwuY29kZT09PWNvZGUpfHx7ZmxhZzon8J+MkCd9KS5mbGFnO30KZnVuY3Rpb24gbGFuZ05hbWUoY29kZSl7cmV0dXJuIChMQU5HUy5maW5kKGw9PmwuY29kZT09PWNvZGUpfHx7bmFtZTpjb2RlfSkubmFtZTt9CmZ1bmN0aW9uIGxhbmdOYXRpdmUoY29kZSl7cmV0dXJuIChMQU5HUy5maW5kKGw9PmwuY29kZT09PWNvZGUpfHx7bmF0aXZlOmNvZGV9KS5uYXRpdmU7fQpmdW5jdGlvbiBsYW5nQmFkZ2UoaXRlbUxhbmcpewogIGNvbnN0IHRyYW5zbGF0ZWQgPSBpdGVtTGFuZyAmJiBpdGVtTGFuZyE9PWN1cnJlbnRMYW5nOwogIGlmKCFpdGVtTGFuZykgcmV0dXJuICcnOwogIHJldHVybiBgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTowLjcycmVtO2NvbG9yOnZhcigtLW11dGVkKTtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4O21hcmdpbi10b3A6NHB4Ij4KICAgIE9yaWdpbmFsbHkgaW4gJHtsYW5nTmF0aXZlKGl0ZW1MYW5nKX0ke3RyYW5zbGF0ZWQ/JyDCtyA8c3BhbiBzdHlsZT0iY29sb3I6dmFyKC0tYmx1ZSk7Zm9udC13ZWlnaHQ6NjAwIj7wn5SEIEF1dG8tdHJhbnNsYXRlZDwvc3Bhbj4nOicnfQogIDwvc3Bhbj5gOwp9CmZ1bmN0aW9uIG9wZW5MYW5nTW9kYWwoKXsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFuZy1tb2RhbCcpLmNsYXNzTGlzdC5hZGQoJ29wZW4nKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFuZy1ncmlkJykuaW5uZXJIVE1MPUxBTkdTLm1hcChsPT5gPGRpdiBjbGFzcz0ibGFuZy1vcHRpb24gJHtsLmNvZGU9PT1jdXJyZW50TGFuZz8nYWN0aXZlJzonJ30iIG9uY2xpY2s9InNlbGVjdExhbmcoJyR7bC5jb2RlfScsdGhpcykiPiR7bC5uYXRpdmV9PC9kaXY+YCkuam9pbignJyk7Cn0KZnVuY3Rpb24gY2xvc2VMYW5nTW9kYWwoKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFuZy1tb2RhbCcpLmNsYXNzTGlzdC5yZW1vdmUoJ29wZW4nKTt9CmZ1bmN0aW9uIHNlbGVjdExhbmcoY29kZSxlbCl7CiAgY3VycmVudExhbmc9Y29kZTsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubGFuZy1vcHRpb24nKS5mb3JFYWNoKHg9PnguY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJykpOwogIGVsLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5sYW5nLWJ0bicpLnRleHRDb250ZW50PWxhbmdGbGFnKGNvZGUpOwogIHNldFRpbWVvdXQoKCk9PntjbG9zZUxhbmdNb2RhbCgpO3Nob3dUb2FzdCgnTGFuZ3VhZ2Ugc2V0IHRvICcrbGFuZ05hbWUoY29kZSkrJyDigJQgYXV0by10cmFuc2xhdGlvbiBhY3RpdmUg8J+MkCcpO30sMzAwKTsKfQoKZnVuY3Rpb24gc2VsZWN0QW1vdW50KGJ0bix2KXsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuYW1vdW50LWJ0bicpLmZvckVhY2goYj0+Yi5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpKTsKICBidG4uY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKTsKfQoKZnVuY3Rpb24gc2hvd1RvYXN0KG1zZyl7CiAgY29uc3QgdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9hc3QnKTsKICB0LnRleHRDb250ZW50PW1zZzt0LmNsYXNzTGlzdC5hZGQoJ3Nob3cnKTsKICBzZXRUaW1lb3V0KCgpPT50LmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKSwzMDAwKTsKfQpmdW5jdGlvbiBlbXB0eVN0YXRlKG1zZyl7cmV0dXJuIGA8ZGl2IGNsYXNzPSJlbXB0eS1zdGF0ZSI+PGRpdiBjbGFzcz0iaWNvbiI+8J+SrDwvZGl2PjxwPiR7bXNnfTwvcD48L2Rpdj5gO30KCi8vIEluaXQKcmVuZGVySG9tZUNhdHMoKTsKPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgoSm7AFCpewBQoZQzpcVXNlcnNccm9saWtcaW5kZXguaHRtbBjcBSAAKvbaAi0tLSBhL0M6XFVzZXJzXHJvbGlrXGluZGV4Lmh0bWwKKysrIGIvQzpcVXNlcnNccm9saWtcaW5kZXguaHRtbApAQCAtMSArMSw3MzMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJVVEYtOCI+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+Cis8dGl0bGU+T2xpbUFuc3dlcnMuY29tPC90aXRsZT4KKzxzdHlsZT4KKyAgOnJvb3QgeworICAgIC0tYmx1ZTojMWE1ZmE4Oy0tYmx1ZS1saWdodDojZThmMGZiOy0tZ29sZDojZjBiNDI5Oy0tZ29sZC1saWdodDojZmZmOGU3OworICAgIC0tZ3JlZW46IzFhOGE0YTstLXJlZDojYzAzOTJiOy0tZ3JheTojZjRmNmY5Oy0tdGV4dDojMWExYTJlOy0tbXV0ZWQ6IzZiNzI4MDsKKyAgICAtLWJvcmRlcjojZGRlM2VkOy0td2hpdGU6I2ZmZmZmZjstLXNoYWRvdzowIDJweCAxMnB4IHJnYmEoMCwwLDAsMC4wOCk7CisgIH0KKyAgKntib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luOjA7cGFkZGluZzowfQorICBib2R5e2ZvbnQtZmFtaWx5OidTZWdvZSBVSScsc3lzdGVtLXVpLHNhbnMtc2VyaWY7Y29sb3I6dmFyKC0tdGV4dCk7YmFja2dyb3VuZDp2YXIoLS1ncmF5KTttaW4taGVpZ2h0OjEwMHZofQorICAvKiBOQVYgKi8KKyAgbmF2e2JhY2tncm91bmQ6dmFyKC0tYmx1ZSk7Y29sb3I6I2ZmZjtwYWRkaW5nOjAgMjRweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2hlaWdodDo2MHB4O3Bvc2l0aW9uOnN0aWNreTt0b3A6MDt6LWluZGV4OjEwMDtib3gtc2hhZG93OjAgMnB4IDhweCByZ2JhKDAsMCwwLDAuMil9CisgIC5uYXYtbG9nb3tmb250LXNpemU6MS40NXJlbTtmb250LXdlaWdodDo4MDA7Y3Vyc29yOnBvaW50ZXI7bGV0dGVyLXNwYWNpbmc6LTAuNXB4O2xpbmUtaGVpZ2h0OjEuMTttYXJnaW4tcmlnaHQ6MTJweDtmbGV4LXNocmluazowfQorICAubmF2LWxvZ28gc3BhbntkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZTowLjc4cmVtO2ZvbnQtd2VpZ2h0OjUwMDtsZXR0ZXItc3BhY2luZzoxLjVweDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7b3BhY2l0eTowLjg1fQorICAubmF2LWxvZ286aG92ZXJ7b3BhY2l0eTowLjg1fQorICAubmF2LWxvZ28gc3Bhbntjb2xvcjp2YXIoLS1nb2xkKX0KKyAgLm5hdi1saW5rc3tkaXNwbGF5OmZsZXg7Z2FwOjZweDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC13cmFwOndyYXB9CisgIC5uYXYtbGlua3MgYnV0dG9ue2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtjb2xvcjojZmZmO3BhZGRpbmc6NnB4IDEwcHg7Ym9yZGVyLXJhZGl1czo2cHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjAuODJyZW07Zm9udC13ZWlnaHQ6NTAwO3RyYW5zaXRpb246YmFja2dyb3VuZCAwLjJzfQorICAubmF2LWxpbmtzIGJ1dHRvbjpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMC4xNSl9CisgIC5uYXYtbGlua3MgLm5hdi1kb25hdGV7YmFja2dyb3VuZDp2YXIoLS1nb2xkKTtjb2xvcjp2YXIoLS10ZXh0KTtmb250LXdlaWdodDo3MDA7cGFkZGluZzo2cHggMTJweDtib3JkZXItcmFkaXVzOjZweH0KKyAgLm5hdi1saW5rcyAubmF2LWRvbmF0ZTpob3ZlcntiYWNrZ3JvdW5kOiNlMGE4MDB9CisgIC5sYW5nLWJ0bntiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMC4xNSkhaW1wb3J0YW50O2JvcmRlcjoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjMpIWltcG9ydGFudDtmb250LXNpemU6MC43OHJlbSFpbXBvcnRhbnR9CiAKKyAgLyogUEFHRVMgKi8KKyAgLnBhZ2V7ZGlzcGxheTpub25lO21heC13aWR0aDoxMTAwcHg7bWFyZ2luOjAgYXV0bztwYWRkaW5nOjI4cHggMjBweH0KKyAgLnBhZ2UuYWN0aXZle2Rpc3BsYXk6YmxvY2t9CisKKyAgLyogSE9NRSAqLworICAuaGVyb3tiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsdmFyKC0tYmx1ZSkgMCUsIzI0NzFjOCAxMDAlKTtjb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6MTZweDtwYWRkaW5nOjQ4cHggNDBweDt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tYm90dG9tOjMycHh9CisgIC5oZXJvIGgxe2ZvbnQtc2l6ZToyLjRyZW07Zm9udC13ZWlnaHQ6ODAwO21hcmdpbi1ib3R0b206MTJweH0KKyAgLmhlcm8gaDEgc3Bhbntjb2xvcjp2YXIoLS1nb2xkKX0KKyAgLmhlcm8gcHtmb250LXNpemU6MS4xcmVtO29wYWNpdHk6MC45MjttYXgtd2lkdGg6NjIwcHg7bWFyZ2luOjAgYXV0byAyNHB4O2xpbmUtaGVpZ2h0OjEuNn0KKyAgLmhlcm8tYnRuc3tkaXNwbGF5OmZsZXg7Z2FwOjEycHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LXdyYXA6d3JhcH0KKyAgLmJ0bntwYWRkaW5nOjEycHggMjRweDtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MC45NXJlbTtmb250LXdlaWdodDo3MDA7dHJhbnNpdGlvbjphbGwgMC4yc30KKyAgLmJ0bi1wcmltYXJ5e2JhY2tncm91bmQ6dmFyKC0tZ29sZCk7Y29sb3I6dmFyKC0tdGV4dCl9CisgIC5idG4tcHJpbWFyeTpob3ZlcntiYWNrZ3JvdW5kOiNlMGE4MDA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCl9CisgIC5idG4tb3V0bGluZXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOiNmZmY7Ym9yZGVyOjJweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuNil9CisgIC5idG4tb3V0bGluZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMC4xKX0KKyAgLmhvdy1pdC13b3Jrc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpdCxtaW5tYXgoMjAwcHgsMWZyKSk7Z2FwOjIwcHg7bWFyZ2luLWJvdHRvbTozMnB4fQorICAuaGl3LWNhcmR7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjRweDt0ZXh0LWFsaWduOmNlbnRlcjtib3gtc2hhZG93OnZhcigtLXNoYWRvdyl9CisgIC5oaXctaWNvbntmb250LXNpemU6MnJlbTttYXJnaW4tYm90dG9tOjEwcHh9CisgIC5oaXctY2FyZCBoM3tmb250LXNpemU6MXJlbTttYXJnaW4tYm90dG9tOjZweDtjb2xvcjp2YXIoLS1ibHVlKX0KKyAgLmhpdy1jYXJkIHB7Zm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO2xpbmUtaGVpZ2h0OjEuNX0KKyAgLnNlY3Rpb24tdGl0bGV7Zm9udC1zaXplOjEuM3JlbTtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbToxNnB4O2NvbG9yOnZhcigtLWJsdWUpfQorICAuY2F0ZWdvcnktZ3JpZHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpbGwsbWlubWF4KDE2MHB4LDFmcikpO2dhcDoxNHB4O21hcmdpbi1ib3R0b206MzJweH0KKyAgLmNhdC1jYXJke2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjE4cHggMTRweDt0ZXh0LWFsaWduOmNlbnRlcjtjdXJzb3I6cG9pbnRlcjtib3JkZXI6MnB4IHNvbGlkIHRyYW5zcGFyZW50O3RyYW5zaXRpb246YWxsIDAuMnM7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpfQorICAuY2F0LWNhcmQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWJsdWUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpfQorICAuY2F0LWljb257Zm9udC1zaXplOjEuOHJlbTttYXJnaW4tYm90dG9tOjhweH0KKyAgLmNhdC1jYXJkIGg0e2ZvbnQtc2l6ZTowLjg4cmVtO2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS10ZXh0KX0KKyAgLmNhdC1jYXJkIHB7Zm9udC1zaXplOjAuNzVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi10b3A6NHB4fQorICAuZG9uYXRlLWJhbm5lcntiYWNrZ3JvdW5kOnZhcigtLWdvbGQtbGlnaHQpO2JvcmRlcjoycHggc29saWQgdmFyKC0tZ29sZCk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjRweDt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tYm90dG9tOjMycHh9CisgIC5kb25hdGUtYmFubmVyIGgze2ZvbnQtc2l6ZToxLjFyZW07bWFyZ2luLWJvdHRvbTo4cHh9CisgIC5kb25hdGUtYmFubmVyIHB7Zm9udC1zaXplOjAuODhyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MTRweH0KKyAgLnRpcC1ib3h7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCNlOGY1ZTksI2YwZmFmNCk7Ym9yZGVyLWxlZnQ6NHB4IHNvbGlkIHZhcigtLWdyZWVuKTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxOHB4IDIwcHg7bWFyZ2luLWJvdHRvbTozMnB4fQorICAudGlwLWJveCAudGlwLWxhYmVse2ZvbnQtc2l6ZTowLjc1cmVtO2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1ncmVlbik7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2xldHRlci1zcGFjaW5nOjFweDttYXJnaW4tYm90dG9tOjZweH0KKyAgLnRpcC1ib3ggcHtmb250LXNpemU6MC45MnJlbTtsaW5lLWhlaWdodDoxLjV9CisKKyAgLyogRk9SVU0gLyBDQVRFR09SWSAqLworICAuZm9ydW0taGVhZGVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47bWFyZ2luLWJvdHRvbToyMHB4O2ZsZXgtd3JhcDpnYXB9CisgIC5zb3J0LXNlbGVjdHtwYWRkaW5nOjhweCAxMnB4O2JvcmRlci1yYWRpdXM6OHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtmb250LXNpemU6MC44NXJlbTtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtjdXJzb3I6cG9pbnRlcjtjb2xvcjp2YXIoLS10ZXh0KX0KKyAgLmFzay1iYXJ7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjBweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWFyZ2luLWJvdHRvbToyNHB4fQorICAuYXNrLWJhciBoM3tmb250LXNpemU6MXJlbTttYXJnaW4tYm90dG9tOjEycHg7Y29sb3I6dmFyKC0tYmx1ZSl9CisgIC5hc2stYmFyIGlucHV0LC5hc2stYmFyIHRleHRhcmVhLC5hc2stYmFyIHNlbGVjdHt3aWR0aDoxMDAlO3BhZGRpbmc6MTBweCAxNHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjhweDtmb250LXNpemU6MC45cmVtO21hcmdpbi1ib3R0b206MTBweDtmb250LWZhbWlseTppbmhlcml0O2NvbG9yOnZhcigtLXRleHQpfQorICAuYXNrLWJhciB0ZXh0YXJlYXtyZXNpemU6dmVydGljYWw7bWluLWhlaWdodDo4MHB4fQorICAudGFnLWlucHV0e2Rpc3BsYXk6ZmxleDtnYXA6OHB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MTBweH0KKyAgLnRhZ3tiYWNrZ3JvdW5kOnZhcigtLWJsdWUtbGlnaHQpO2NvbG9yOnZhcigtLWJsdWUpO3BhZGRpbmc6NHB4IDEwcHg7Ym9yZGVyLXJhZGl1czoyMHB4O2ZvbnQtc2l6ZTowLjc4cmVtO2ZvbnQtd2VpZ2h0OjYwMDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHh9CisgIC50YWcgLnJlbW92ZXtjb2xvcjp2YXIoLS1yZWQpO2ZvbnQtd2VpZ2h0OjcwMH0KKyAgLnEtY2FyZHtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyMHB4O2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KTttYXJnaW4tYm90dG9tOjE2cHg7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpib3gtc2hhZG93IDAuMnN9CisgIC5xLWNhcmQ6aG92ZXJ7Ym94LXNoYWRvdzowIDRweCAyMHB4IHJnYmEoMCwwLDAsMC4xMil9CisgIC5xLW1ldGF7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjhweH0KKyAgLnEtY2F0LWJhZGdle2JhY2tncm91bmQ6dmFyKC0tYmx1ZS1saWdodCk7Y29sb3I6dmFyKC0tYmx1ZSk7Zm9udC1zaXplOjAuNzJyZW07Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6M3B4IDlweDtib3JkZXItcmFkaXVzOjEycHh9CisgIC5xLWRhdGV7Zm9udC1zaXplOjAuNzVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpfQorICAucS1hdXRob3J7Zm9udC1zaXplOjAuNzVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpfQorICAucS10aXRsZXtmb250LXNpemU6MS4wNXJlbTtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbTo2cHh9CisgIC5xLXByZXZpZXd7Zm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO2xpbmUtaGVpZ2h0OjEuNTttYXJnaW4tYm90dG9tOjEwcHh9CisgIC5xLXN0YXRze2Rpc3BsYXk6ZmxleDtnYXA6MTRweDtmb250LXNpemU6MC44cmVtO2NvbG9yOnZhcigtLW11dGVkKX0KKyAgLnEtc3RhdHMgc3BhbntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHh9CisgIC5mZWF0dXJlZC1iYWRnZXtiYWNrZ3JvdW5kOnZhcigtLWdvbGQpO2NvbG9yOnZhcigtLXRleHQpO2ZvbnQtc2l6ZTowLjdyZW07Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6MnB4IDhweDtib3JkZXItcmFkaXVzOjEwcHg7bWFyZ2luLWxlZnQ6OHB4fQorCisgIC8qIFFVRVNUSU9OIERFVEFJTCAqLworICAuYmFjay1idG57YmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO2NvbG9yOnZhcigtLWJsdWUpO2ZvbnQtc2l6ZTowLjlyZW07Y3Vyc29yOnBvaW50ZXI7bWFyZ2luLWJvdHRvbToxNnB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDtmb250LXdlaWdodDo2MDB9CisgIC5xLWZ1bGx7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjRweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWFyZ2luLWJvdHRvbToyNHB4fQorICAucS1mdWxsIGgye2ZvbnQtc2l6ZToxLjNyZW07bWFyZ2luLWJvdHRvbToxMnB4fQorICAucS1mdWxsIC5ib2R5e2ZvbnQtc2l6ZTowLjkycmVtO2xpbmUtaGVpZ2h0OjEuNzttYXJnaW4tYm90dG9tOjE2cHh9CisgIC50YWdzLXJvd3tkaXNwbGF5OmZsZXg7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjE2cHh9CisgIC5hbnN3ZXJzLXNlY3Rpb24gaDN7Zm9udC1zaXplOjEuMXJlbTtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbToxNnB4O2NvbG9yOnZhcigtLWJsdWUpfQorICAuYW5zd2VyLWNhcmR7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MThweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWFyZ2luLWJvdHRvbToxNHB4O2JvcmRlci1sZWZ0OjRweCBzb2xpZCB0cmFuc3BhcmVudH0KKyAgLmFuc3dlci1jYXJkLnRvcC1hbnN3ZXJ7Ym9yZGVyLWxlZnQtY29sb3I6dmFyKC0tZ29sZCl9CisgIC50b3AtYW5zd2VyLWxhYmVse2ZvbnQtc2l6ZTowLjcycmVtO2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1nb2xkKTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bGV0dGVyLXNwYWNpbmc6MC44cHg7bWFyZ2luLWJvdHRvbTo2cHh9CisgIC5hbnN3ZXItYm9keXtmb250LXNpemU6MC45cmVtO2xpbmUtaGVpZ2h0OjEuNzttYXJnaW4tYm90dG9tOjEycHh9CisgIC5hbnN3ZXItZm9vdGVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47ZmxleC13cmFwOndyYXA7Z2FwOjhweH0KKyAgLmFuc3dlci1tZXRhe2ZvbnQtc2l6ZTowLjc4cmVtO2NvbG9yOnZhcigtLW11dGVkKX0KKyAgLnZvdGUtYnRuc3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHh9CisgIC52b3RlLWJ0bntiYWNrZ3JvdW5kOnZhcigtLWdyYXkpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjVweCAxMnB4O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjgycmVtO2ZvbnQtd2VpZ2h0OjYwMDt0cmFuc2l0aW9uOmFsbCAwLjJzO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweH0KKyAgLnZvdGUtYnRuLmxpa2Vke2JhY2tncm91bmQ6dmFyKC0tYmx1ZS1saWdodCk7Ym9yZGVyLWNvbG9yOnZhcigtLWJsdWUpO2NvbG9yOnZhcigtLWJsdWUpfQorICAudm90ZS1idG46aG92ZXJ7dHJhbnNmb3JtOnNjYWxlKDEuMDUpfQorICAuZmxhZy1idG57YmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO2NvbG9yOnZhcigtLW11dGVkKTtmb250LXNpemU6MC43OHJlbTtjdXJzb3I6cG9pbnRlcn0KKyAgLmZsYWctYnRuOmhvdmVye2NvbG9yOnZhcigtLXJlZCl9CisgIC5hZGQtYW5zd2Vye2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjIwcHg7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpO21hcmdpbi10b3A6MjRweH0KKyAgLmFkZC1hbnN3ZXIgaDR7bWFyZ2luLWJvdHRvbToxMnB4O2NvbG9yOnZhcigtLWJsdWUpfQorICAuYWRkLWFuc3dlciB0ZXh0YXJlYXt3aWR0aDoxMDAlO3BhZGRpbmc6MTJweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czo4cHg7bWluLWhlaWdodDoxMDBweDtyZXNpemU6dmVydGljYWw7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6MC45cmVtO21hcmdpbi1ib3R0b206MTBweH0KKyAgLmFkZC1hbnN3ZXIgaW5wdXR7d2lkdGg6MTAwJTtwYWRkaW5nOjEwcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4O2ZvbnQtc2l6ZTowLjg4cmVtO21hcmdpbi1ib3R0b206MTBweDtmb250LWZhbWlseTppbmhlcml0fQorCisgIC8qIEJFU1QgT0YgKi8KKyAgLmJlc3Qtb2YtaGVhZGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZyx2YXIoLS1nb2xkLWxpZ2h0KSwjZmZmZGU3KTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyNHB4O21hcmdpbi1ib3R0b206MjRweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdvbGQpO3RleHQtYWxpZ246Y2VudGVyfQorICAuYmVzdC1vZi1oZWFkZXIgaDJ7Y29sb3I6dmFyKC0tdGV4dCk7bWFyZ2luLWJvdHRvbTo2cHh9CisgIC5iZXN0LW9mLWhlYWRlciBwe2NvbG9yOnZhcigtLW11dGVkKTtmb250LXNpemU6MC44OHJlbX0KKyAgLmZpbHRlci1yb3d7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MjBweDthbGlnbi1pdGVtczpjZW50ZXJ9CisgIC5maWx0ZXItYnRue3BhZGRpbmc6NnB4IDE0cHg7Ym9yZGVyLXJhZGl1czoyMHB4O2JvcmRlcjoycHggc29saWQgdmFyKC0tYm9yZGVyKTtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MC44MnJlbTtmb250LXdlaWdodDo2MDA7dHJhbnNpdGlvbjphbGwgMC4yc30KKyAgLmZpbHRlci1idG4uYWN0aXZle2JhY2tncm91bmQ6dmFyKC0tYmx1ZSk7Y29sb3I6I2ZmZjtib3JkZXItY29sb3I6dmFyKC0tYmx1ZSl9CisKKyAgLyogQ0hFQ0tMSVNUICovCisgIC5jaGVja2xpc3QtaW50cm97YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCNlOGY1ZTksI2YwZmFmNCk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjRweDttYXJnaW4tYm90dG9tOjI0cHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ncmVlbik7dGV4dC1hbGlnbjpjZW50ZXJ9CisgIC5jaGVja2xpc3QtaW50cm8gaDJ7Y29sb3I6dmFyKC0tZ3JlZW4pO21hcmdpbi1ib3R0b206NnB4fQorICAuY2hlY2tsaXN0LXNlY3Rpb257YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjBweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWFyZ2luLWJvdHRvbToxNnB4fQorICAuY2hlY2tsaXN0LXNlY3Rpb24gaDN7Zm9udC1zaXplOjFyZW07Y29sb3I6dmFyKC0tYmx1ZSk7bWFyZ2luLWJvdHRvbToxMnB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweH0KKyAgLmNoZWNrbGlzdC1pdGVte2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDoxMnB4O3BhZGRpbmc6MTBweCAwO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWJvcmRlcil9CisgIC5jaGVja2xpc3QtaXRlbTpsYXN0LWNoaWxke2JvcmRlci1ib3R0b206bm9uZX0KKyAgLmNoZWNrbGlzdC1pdGVtIGlucHV0W3R5cGU9Y2hlY2tib3hde3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7bWFyZ2luLXRvcDoycHg7Y3Vyc29yOnBvaW50ZXI7YWNjZW50LWNvbG9yOnZhcigtLWJsdWUpfQorICAuY2hlY2tsaXN0LWl0ZW0gbGFiZWx7Zm9udC1zaXplOjAuOXJlbTtsaW5lLWhlaWdodDoxLjU7Y3Vyc29yOnBvaW50ZXI7ZmxleDoxfQorICAuY2hlY2tsaXN0LWl0ZW0gLmxpbmstYnRue2ZvbnQtc2l6ZTowLjc1cmVtO2NvbG9yOnZhcigtLWJsdWUpO2N1cnNvcjpwb2ludGVyO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7YmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO21hcmdpbi1sZWZ0OmF1dG87d2hpdGUtc3BhY2U6bm93cmFwfQorCisgIC8qIFNFQVJDSCAqLworICAuc2VhcmNoLWJhci1iaWd7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O21hcmdpbi1ib3R0b206MjRweH0KKyAgLnNlYXJjaC1iYXItYmlnIGlucHV0e2ZsZXg6MTtwYWRkaW5nOjE0cHggMThweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czoxMHB4O2ZvbnQtc2l6ZToxcmVtO2ZvbnQtZmFtaWx5OmluaGVyaXR9CisgIC5zZWFyY2gtYmFyLWJpZyBpbnB1dDpmb2N1c3tvdXRsaW5lOm5vbmU7Ym9yZGVyLWNvbG9yOnZhcigtLWJsdWUpfQorICAuc2VhcmNoLWJhci1iaWcgYnV0dG9ue2JhY2tncm91bmQ6dmFyKC0tYmx1ZSk7Y29sb3I6I2ZmZjtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxNHB4IDI0cHg7Zm9udC1zaXplOjFyZW07Zm9udC13ZWlnaHQ6NzAwO2N1cnNvcjpwb2ludGVyfQorICAudGFnLWNsb3Vke2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4O21hcmdpbi1ib3R0b206MjRweH0KKyAgLnRhZy1jbG91ZC1pdGVte2JhY2tncm91bmQ6dmFyKC0tYmx1ZS1saWdodCk7Y29sb3I6dmFyKC0tYmx1ZSk7cGFkZGluZzo2cHggMTRweDtib3JkZXItcmFkaXVzOjIwcHg7Zm9udC1zaXplOjAuODJyZW07Zm9udC13ZWlnaHQ6NjAwO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246YWxsIDAuMnN9CisgIC50YWctY2xvdWQtaXRlbTpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWJsdWUpO2NvbG9yOiNmZmZ9CisKKyAgLyogRE9OQVRFICovCisgIC5kb25hdGUtcGFnZXt0ZXh0LWFsaWduOmNlbnRlcjttYXgtd2lkdGg6NjAwcHg7bWFyZ2luOjAgYXV0b30KKyAgLmRvbmF0ZS1oZXJve2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZyx2YXIoLS1nb2xkLWxpZ2h0KSwjZmZmOGUxKTtib3JkZXItcmFkaXVzOjE2cHg7cGFkZGluZzo0MHB4O21hcmdpbi1ib3R0b206MjRweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdvbGQpfQorICAuZG9uYXRlLWhlcm8gaDJ7Zm9udC1zaXplOjEuOHJlbTttYXJnaW4tYm90dG9tOjEycHh9CisgIC5kb25hdGUtaGVybyBwe2NvbG9yOnZhcigtLW11dGVkKTtsaW5lLWhlaWdodDoxLjc7bWFyZ2luLWJvdHRvbToyMHB4fQorICAuZG9uYXRlLWFtb3VudHN7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7ZmxleC13cmFwOndyYXA7bWFyZ2luLWJvdHRvbToyMHB4fQorICAuYW1vdW50LWJ0bntwYWRkaW5nOjEwcHggMjBweDtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdvbGQpO2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjlyZW07Zm9udC13ZWlnaHQ6NzAwO3RyYW5zaXRpb246YWxsIDAuMnN9CisgIC5hbW91bnQtYnRuLnNlbGVjdGVkLC5hbW91bnQtYnRuOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tZ29sZCk7Y29sb3I6dmFyKC0tdGV4dCl9CisgIC5kb25hdGUtYnRuLWJpZ3tiYWNrZ3JvdW5kOnZhcigtLWdvbGQpO2NvbG9yOnZhcigtLXRleHQpO2JvcmRlcjpub25lO3BhZGRpbmc6MTRweCA0MHB4O2JvcmRlci1yYWRpdXM6MTBweDtmb250LXNpemU6MS4xcmVtO2ZvbnQtd2VpZ2h0OjgwMDtjdXJzb3I6cG9pbnRlcjt3aWR0aDoxMDAlO21hcmdpbi1ib3R0b206MTJweH0KKworICAvKiBMQU5HIE1PREFMICovCisgIC5tb2RhbC1vdmVybGF5e2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjpmaXhlZDtpbnNldDowO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjUpO3otaW5kZXg6MjAwO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfQorICAubW9kYWwtb3ZlcmxheS5vcGVue2Rpc3BsYXk6ZmxleH0KKyAgLm1vZGFse2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTZweDtwYWRkaW5nOjI4cHg7bWF4LXdpZHRoOjQyMHB4O3dpZHRoOjkwJTtib3gtc2hhZG93OjAgOHB4IDQwcHggcmdiYSgwLDAsMCwwLjIpfQorICAubW9kYWwgaDN7bWFyZ2luLWJvdHRvbTo4cHg7Zm9udC1zaXplOjEuMnJlbX0KKyAgLm1vZGFsIHB7Zm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MTZweDtsaW5lLWhlaWdodDoxLjV9CisgIC5sYW5nLWdyaWR7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dhcDo4cHg7bWFyZ2luLWJvdHRvbToxNnB4fQorICAubGFuZy1vcHRpb257cGFkZGluZzoxMHB4IDEycHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjkycmVtO2ZvbnQtd2VpZ2h0OjYwMDt0ZXh0LWFsaWduOmNlbnRlcjt0cmFuc2l0aW9uOmFsbCAwLjJzO2xpbmUtaGVpZ2h0OjEuNDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHh9CisgIC5sYW5nLW9wdGlvbjpob3ZlciwubGFuZy1vcHRpb24uYWN0aXZle2JvcmRlci1jb2xvcjp2YXIoLS1ibHVlKTtiYWNrZ3JvdW5kOnZhcigtLWJsdWUtbGlnaHQpO2NvbG9yOnZhcigtLWJsdWUpO3RyYW5zZm9ybTpzY2FsZSgxLjAzKX0KKyAgLm1vZGFsLWNsb3Nle2JhY2tncm91bmQ6dmFyKC0tZ3JheSk7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoxMHB4IDIwcHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjAuOXJlbTtmb250LXdlaWdodDo2MDA7d2lkdGg6MTAwJX0KKyAgLnRyYW5zbGF0aW9uLW5vdGljZXtiYWNrZ3JvdW5kOiNmZmYzY2Q7Ym9yZGVyOjFweCBzb2xpZCAjZmZjMTA3O2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6MTBweCAxNHB4O2ZvbnQtc2l6ZTowLjhyZW07Y29sb3I6Izg1NjQwNDttYXJnaW4tYm90dG9tOjE2cHh9CisKKyAgLyogVE9BU1QgKi8KKyAgLnRvYXN0e3Bvc2l0aW9uOmZpeGVkO2JvdHRvbToyNHB4O3JpZ2h0OjI0cHg7YmFja2dyb3VuZDp2YXIoLS1ncmVlbik7Y29sb3I6I2ZmZjtwYWRkaW5nOjEycHggMjBweDtib3JkZXItcmFkaXVzOjEwcHg7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZTowLjlyZW07ei1pbmRleDozMDA7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwcHgpO3RyYW5zaXRpb246YWxsIDAuM3M7cG9pbnRlci1ldmVudHM6bm9uZX0KKyAgLnRvYXN0LnNob3d7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfQorCisgIC5lbXB0eS1zdGF0ZXt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjQwcHg7Y29sb3I6dmFyKC0tbXV0ZWQpfQorICAuZW1wdHktc3RhdGUgLmljb257Zm9udC1zaXplOjNyZW07bWFyZ2luLWJvdHRvbToxMHB4fQorICAuZGl2aWRlcntoZWlnaHQ6MXB4O2JhY2tncm91bmQ6dmFyKC0tYm9yZGVyKTttYXJnaW46MjBweCAwfQorICBAbWVkaWEobWF4LXdpZHRoOjYwMHB4KXsuaGVybyBoMXtmb250LXNpemU6MS42cmVtfS5oZXJve3BhZGRpbmc6MjhweCAyMHB4fS5jYXRlZ29yeS1ncmlke2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maWxsLG1pbm1heCgxMzBweCwxZnIpKX19Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisKKzxuYXY+CisgIDxkaXYgY2xhc3M9Im5hdi1sb2dvIiBvbmNsaWNrPSJzaG93UGFnZSgnaG9tZScpIj5PbGltPHNwYW4+QW5zd2Vyczwvc3Bhbj48L2Rpdj4KKyAgPGRpdiBjbGFzcz0ibmF2LWxpbmtzIj4KKyAgICA8YnV0dG9uIG9uY2xpY2s9InNob3dQYWdlKCdob21lJykiPvCfj6AgSG9tZTwvYnV0dG9uPgorICAgIDxidXR0b24gb25jbGljaz0ic2hvd1BhZ2UoJ2ZvcnVtJykiPvCfl6MgRm9ydW08L2J1dHRvbj4KKyAgICA8YnV0dG9uIG9uY2xpY2s9InNob3dQYWdlKCdiZXN0b2YnKSI+4q2QIEJlc3QgT2Y8L2J1dHRvbj4KKyAgICA8YnV0dG9uIG9uY2xpY2s9InNob3dQYWdlKCdjaGVja2xpc3QnKSI+4pyFIENoZWNrbGlzdDwvYnV0dG9uPgorICAgIDxidXR0b24gb25jbGljaz0ic2hvd1BhZ2UoJ2NhdHMnKSI+8J+TgiBDYXRlZ29yaWVzPC9idXR0b24+CisgICAgPGJ1dHRvbiBvbmNsaWNrPSJzaG93UGFnZSgnc2VhcmNoJykiPvCflI0gU2VhcmNoPC9idXR0b24+CisgICAgPGJ1dHRvbiBvbmNsaWNrPSJzaG93UGFnZSgnZG9uYXRlJykiIGNsYXNzPSJuYXYtZG9uYXRlIj7wn5KbIERvbmF0ZTwvYnV0dG9uPgorICAgIDxidXR0b24gY2xhc3M9ImxhbmctYnRuIiBvbmNsaWNrPSJvcGVuTGFuZ01vZGFsKCkiPvCfh6zwn4enPC9idXR0b24+CisgIDwvZGl2PgorPC9uYXY+CisKKzwhLS0gSE9NRSAtLT4KKzxkaXYgY2xhc3M9InBhZ2UgYWN0aXZlIiBpZD0icGFnZS1ob21lIj4KKyAgPGRpdiBjbGFzcz0iaGVybyI+CisgICAgPGgxPldlbGNvbWUgdG8gPHNwYW4+T2xpbUFuc3dlcnM8L3NwYW4+PC9oMT4KKyAgICA8cD5Zb3VyIGNvbW11bml0eS1wb3dlcmVkIGd1aWRlIHRvIG5hdmlnYXRpbmcgbGlmZSBpbiBJc3JhZWwuIEFzayBxdWVzdGlvbnMsIHNoYXJlIGtub3dsZWRnZSwgYW5kIGhlbHAgZmVsbG93IG9saW0gZmluZCB0aGVpciBmZWV0IGZhc3Rlci48L3A+CisgICAgPGRpdiBjbGFzcz0iaGVyby1idG5zIj4KKyAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgb25jbGljaz0ic2hvd1BhZ2UoJ2ZvcnVtJykiPkFzayBhIFF1ZXN0aW9uPC9idXR0b24+CisgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLW91dGxpbmUiIG9uY2xpY2s9InNob3dQYWdlKCdiZXN0b2YnKSI+4q2QIEJyb3dzZSBUb3AgQW5zd2VyczwvYnV0dG9uPgorICAgIDwvZGl2PgorICA8L2Rpdj4KKworICA8ZGl2IGNsYXNzPSJ0aXAtYm94Ij4KKyAgICA8ZGl2IGNsYXNzPSJ0aXAtbGFiZWwiPvCfkqEgVGlwIG9mIHRoZSBEYXk8L2Rpdj4KKyAgICA8cCBpZD0idGlwLXRleHQiPldoZW4gb3BlbmluZyBhIGJhbmsgYWNjb3VudCBpbiBJc3JhZWwsIGJyaW5nIHlvdXIgVGV1ZGF0IE9sZWgsIHBhc3Nwb3J0LCBhbmQgcHJvb2Ygb2YgYWRkcmVzcy4gQmFuayBIYXBvYWxpbSBhbmQgQmFuayBMZXVtaSBib3RoIGhhdmUgZGVkaWNhdGVkIE9saW0gZGVwYXJ0bWVudHMgd2l0aCBFbmdsaXNoLXNwZWFraW5nIHN0YWZmLjwvcD4KKyAgPC9kaXY+CisKKyAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+SG93IEl0IFdvcmtzPC9kaXY+CisgIDxkaXYgY2xhc3M9Imhvdy1pdC13b3JrcyI+CisgICAgPGRpdiBjbGFzcz0iaGl3LWNhcmQiPjxkaXYgY2xhc3M9Imhpdy1pY29uIj7inZM8L2Rpdj48aDM+QXNrPC9oMz48cD5Qb3N0IHlvdXIgcXVlc3Rpb24gaW4gdGhlIHJlbGV2YW50IGNhdGVnb3J5LiBCZSBhcyBkZXRhaWxlZCBhcyB5b3UgbGlrZS48L3A+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0iaGl3LWNhcmQiPjxkaXYgY2xhc3M9Imhpdy1pY29uIj7wn5KsPC9kaXY+PGgzPkFuc3dlcjwvaDM+PHA+VGhlIGNvbW11bml0eSByZXNwb25kcyB3aXRoIGFkdmljZSwgdGlwcywgYW5kIHBlcnNvbmFsIGV4cGVyaWVuY2UuPC9wPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9Imhpdy1jYXJkIj48ZGl2IGNsYXNzPSJoaXctaWNvbiI+8J+RjTwvZGl2PjxoMz5SYXRlPC9oMz48cD5VcHZvdGUgdGhlIG1vc3QgaGVscGZ1bCBhbnN3ZXJzIHNvIHRoZXkgcmlzZSB0byB0aGUgdG9wIGZvciBldmVyeW9uZS48L3A+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0iaGl3LWNhcmQiPjxkaXYgY2xhc3M9Imhpdy1pY29uIj7wn4yfPC9kaXY+PGgzPkRpc2NvdmVyPC9oMz48cD5Ccm93c2UgdG9wLXJhdGVkIGNvbnRlbnQgb3Igc2VhcmNoIGJ5IGtleXdvcmQgdG8gZmluZCB3aGF0IHlvdSBuZWVkIGZhc3QuPC9wPjwvZGl2PgorICA8L2Rpdj4KKworICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5Ccm93c2UgYnkgQ2F0ZWdvcnk8L2Rpdj4KKyAgPGRpdiBjbGFzcz0iY2F0ZWdvcnktZ3JpZCIgaWQ9ImhvbWUtY2F0cyI+PC9kaXY+CisKKyAgPGRpdiBjbGFzcz0iZG9uYXRlLWJhbm5lciI+CisgICAgPGgzPvCfkpsgT2xpbUFuc3dlcnMgaXMgZnJlZSBmb3IgZXZlcnlvbmU8L2gzPgorICAgIDxwPlRoaXMgc2l0ZSBpcyBjb21tdW5pdHktcnVuLiBJZiBpdCBoZWxwZWQgeW91LCBjb25zaWRlciBhIHNtYWxsIGRvbmF0aW9uIHRvIGtlZXAgaXQgZ29pbmcuPC9wPgorICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgb25jbGljaz0ic2hvd1BhZ2UoJ2RvbmF0ZScpIj5TdXBwb3J0IHRoZSBTaXRlPC9idXR0b24+CisgIDwvZGl2PgorPC9kaXY+CisKKzwhLS0gRk9SVU0gLS0+Cis8ZGl2IGNsYXNzPSJwYWdlIiBpZD0icGFnZS1mb3J1bSI+CisgIDxkaXYgY2xhc3M9ImZvcnVtLWhlYWRlciIgc3R5bGU9ImRpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLWJvdHRvbToyMHB4O2ZsZXgtd3JhcDp3cmFwO2dhcDoxMHB4Ij4KKyAgICA8ZGl2PgorICAgICAgPGgyIHN0eWxlPSJmb250LXNpemU6MS40cmVtO2NvbG9yOnZhcigtLWJsdWUpIj7wn5ejIENvbW11bml0eSBGb3J1bTwvaDI+CisgICAgICA8cCBzdHlsZT0iZm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi10b3A6NHB4Ij5Bc2sgcXVlc3Rpb25zLCBzaGFyZSBhbnN3ZXJzLCBoZWxwIGZlbGxvdyBvbGltPC9wPgorICAgIDwvZGl2PgorICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6MTBweDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC13cmFwOndyYXAiPgorICAgICAgPHNlbGVjdCBjbGFzcz0ic29ydC1zZWxlY3QiIGlkPSJmb3J1bS1zb3J0IiBvbmNoYW5nZT0icmVuZGVyRm9ydW0oKSI+CisgICAgICAgIDxvcHRpb24gdmFsdWU9Im5ld2VzdCI+8J+VkCBOZXdlc3Q8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibW9zdF9hbnN3ZXJzIj7wn5KsIE1vc3QgUmVzcG9uc2VzPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24gdmFsdWU9ImhpZ2hlc3RfcmF0ZWQiPuKtkCBIaWdoZXN0IFJhdGVkPC9vcHRpb24+CisgICAgICAgIDxvcHRpb24gdmFsdWU9Im1vc3Rfdmlld2VkIj7wn5GBIE1vc3QgVmlld2VkPC9vcHRpb24+CisgICAgICA8L3NlbGVjdD4KKyAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgb25jbGljaz0idG9nZ2xlQXNrQmFyKCkiIHN0eWxlPSJwYWRkaW5nOjlweCAxNnB4O2ZvbnQtc2l6ZTowLjg4cmVtIj4rIEFzayBhIFF1ZXN0aW9uPC9idXR0b24+CisgICAgPC9kaXY+CisgIDwvZGl2PgorCisgIDxkaXYgY2xhc3M9ImFzay1iYXIiIGlkPSJhc2stYmFyIiBzdHlsZT0iZGlzcGxheTpub25lIj4KKyAgICA8aDM+QXNrIGEgTmV3IFF1ZXN0aW9uPC9oMz4KKyAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InEtdGl0bGUiIHBsYWNlaG9sZGVyPSJZb3VyIHF1ZXN0aW9uIHRpdGxlLi4uIiAvPgorICAgIDx0ZXh0YXJlYSBpZD0icS1ib2R5IiBwbGFjZWhvbGRlcj0iRGVzY3JpYmUgeW91ciBxdWVzdGlvbiBpbiBkZXRhaWwuLi4iPjwvdGV4dGFyZWE+CisgICAgPHNlbGVjdCBpZD0icS1jYXQiPgorICAgICAgPG9wdGlvbiB2YWx1ZT0iIj5TZWxlY3QgYSBjYXRlZ29yeS4uLjwvb3B0aW9uPgorICAgIDwvc2VsZWN0PgorICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0icS1uYW1lIiBwbGFjZWhvbGRlcj0iWW91ciBuYW1lIChvciBsZWF2ZSBibGFuayBmb3IgQW5vbnltb3VzKSIgLz4KKyAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjEwcHgiPgorICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IiBvbmNsaWNrPSJzdWJtaXRRdWVzdGlvbigpIiBzdHlsZT0iZmxleDoxIj5Qb3N0IFF1ZXN0aW9uPC9idXR0b24+CisgICAgICA8YnV0dG9uIG9uY2xpY2s9ImNhbmNlbEFzaygpIiBzdHlsZT0iZmxleDpub25lO3BhZGRpbmc6MTJweCAxOHB4O2JvcmRlci1yYWRpdXM6OHB4O2JvcmRlcjoycHggc29saWQgdmFyKC0tYm9yZGVyKTtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MXJlbTtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tbXV0ZWQpIj7inJUgQ2FuY2VsPC9idXR0b24+CisgICAgPC9kaXY+CisgIDwvZGl2PgorCisgIDxkaXYgaWQ9ImZvcnVtLWxpc3QiPjwvZGl2PgorPC9kaXY+CisKKzwhLS0gQ0FURUdPUlkgUEFHRSAtLT4KKzxkaXYgY2xhc3M9InBhZ2UiIGlkPSJwYWdlLWNhdGVnb3J5Ij4KKyAgPGJ1dHRvbiBjbGFzcz0iYmFjay1idG4iIG9uY2xpY2s9InNob3dQYWdlKCdmb3J1bScpIj7ihpAgQmFjayB0byBGb3J1bTwvYnV0dG9uPgorICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi1ib3R0b206MjBweDtmbGV4LXdyYXA6d3JhcDtnYXA6MTBweCI+CisgICAgPGRpdj4KKyAgICAgIDxoMiBpZD0iY2F0LXBhZ2UtdGl0bGUiIHN0eWxlPSJmb250LXNpemU6MS40cmVtO2NvbG9yOnZhcigtLWJsdWUpIj48L2gyPgorICAgICAgPHAgaWQ9ImNhdC1wYWdlLWRlc2MiIHN0eWxlPSJmb250LXNpemU6MC44NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLXRvcDo0cHgiPjwvcD4KKyAgICA8L2Rpdj4KKyAgICA8c2VsZWN0IGNsYXNzPSJzb3J0LXNlbGVjdCIgaWQ9ImNhdC1zb3J0IiBvbmNoYW5nZT0icmVuZGVyQ2F0ZWdvcnlQYWdlKCkiPgorICAgICAgPG9wdGlvbiB2YWx1ZT0ibmV3ZXN0Ij7wn5WQIE5ld2VzdDwvb3B0aW9uPgorICAgICAgPG9wdGlvbiB2YWx1ZT0ibW9zdF9hbnN3ZXJzIj7wn5KsIE1vc3QgUmVzcG9uc2VzPC9vcHRpb24+CisgICAgICA8b3B0aW9uIHZhbHVlPSJoaWdoZXN0X3JhdGVkIj7irZAgSGlnaGVzdCBSYXRlZDwvb3B0aW9uPgorICAgICAgPG9wdGlvbiB2YWx1ZT0ibW9zdF92aWV3ZWQiPvCfkYEgTW9zdCBWaWV3ZWQ8L29wdGlvbj4KKyAgICA8L3NlbGVjdD4KKyAgPC9kaXY+CisgIDxkaXYgaWQ9ImNhdC1wYWdlLWxpc3QiPjwvZGl2PgorPC9kaXY+CisKKzwhLS0gUVVFU1RJT04gREVUQUlMIC0tPgorPGRpdiBjbGFzcz0icGFnZSIgaWQ9InBhZ2UtcXVlc3Rpb24iPgorICA8YnV0dG9uIGNsYXNzPSJiYWNrLWJ0biIgaWQ9InEtYmFjay1idG4iIG9uY2xpY2s9ImdvQmFjaygpIj7ihpAgQmFjazwvYnV0dG9uPgorICA8ZGl2IGNsYXNzPSJxLWZ1bGwiIGlkPSJxLWZ1bGwtY29udGVudCI+PC9kaXY+CisgIDxkaXYgY2xhc3M9ImFuc3dlcnMtc2VjdGlvbiI+CisgICAgPGgzIGlkPSJhbnN3ZXJzLWNvdW50Ij48L2gzPgorICAgIDxkaXYgaWQ9ImFuc3dlcnMtbGlzdCI+PC9kaXY+CisgIDwvZGl2PgorICA8ZGl2IGNsYXNzPSJhZGQtYW5zd2VyIj4KKyAgICA8aDQ+8J+SrCBBZGQgWW91ciBBbnN3ZXI8L2g0PgorICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iYW5zLW5hbWUiIHBsYWNlaG9sZGVyPSJZb3VyIG5hbWUgKG9yIGxlYXZlIGJsYW5rIGZvciBBbm9ueW1vdXMpIiAvPgorICAgIDx0ZXh0YXJlYSBpZD0iYW5zLWJvZHkiIHBsYWNlaG9sZGVyPSJTaGFyZSB5b3VyIGtub3dsZWRnZSBvciBleHBlcmllbmNlLi4uIj48L3RleHRhcmVhPgorICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgb25jbGljaz0ic3VibWl0QW5zd2VyKCkiPlBvc3QgQW5zd2VyPC9idXR0b24+CisgIDwvZGl2PgorPC9kaXY+CisKKzwhLS0gQkVTVCBPRiAtLT4KKzxkaXYgY2xhc3M9InBhZ2UiIGlkPSJwYWdlLWJlc3RvZiI+CisgIDxkaXYgY2xhc3M9ImJlc3Qtb2YtaGVhZGVyIj4KKyAgICA8aDI+4q2QIEJlc3QgT2YgT2xpbUFuc3dlcnM8L2gyPgorICAgIDxwPlRoZSBoaWdoZXN0LXJhdGVkIHF1ZXN0aW9ucyBhbmQgYW5zd2VycyBmcm9tIG91ciBjb21tdW5pdHkg4oCUIHlvdXIgZ28tdG8gc3RhcnRpbmcgcG9pbnQ8L3A+CisgIDwvZGl2PgorICA8ZGl2IGNsYXNzPSJmaWx0ZXItcm93Ij4KKyAgICA8c3BhbiBzdHlsZT0iZm9udC1zaXplOjAuODVyZW07Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLW11dGVkKSI+RmlsdGVyOjwvc3Bhbj4KKyAgICA8YnV0dG9uIGNsYXNzPSJmaWx0ZXItYnRuIGFjdGl2ZSIgb25jbGljaz0iZmlsdGVyQmVzdE9mKCdhbGwnLHRoaXMpIj5BbGwgQ2F0ZWdvcmllczwvYnV0dG9uPgorICAgIDxkaXYgaWQ9ImJlc3RvZi1maWx0ZXJzIj48L2Rpdj4KKyAgPC9kaXY+CisgIDxkaXYgaWQ9ImJlc3RvZi1saXN0Ij48L2Rpdj4KKzwvZGl2PgorCis8IS0tIENIRUNLTElTVCAtLT4KKzxkaXYgY2xhc3M9InBhZ2UiIGlkPSJwYWdlLWNoZWNrbGlzdCI+CisgIDxkaXYgY2xhc3M9ImNoZWNrbGlzdC1pbnRybyI+CisgICAgPGgyPuKchSBOZXcgT2xlaCBDaGVja2xpc3Q8L2gyPgorICAgIDxwIHN0eWxlPSJjb2xvcjp2YXIoLS1tdXRlZCk7Zm9udC1zaXplOjAuODhyZW07bWFyZ2luLXRvcDo2cHgiPllvdXIgc3RlcC1ieS1zdGVwIGd1aWRlIHRvIHNldHRsaW5nIGluIElzcmFlbC4gQ2hlY2sgb2ZmIGl0ZW1zIGFzIHlvdSBnbyDigJQgcHJvZ3Jlc3Mgc2F2ZXMgYXV0b21hdGljYWxseS48L3A+CisgIDwvZGl2PgorICA8ZGl2IGlkPSJjaGVja2xpc3QtY29udGVudCI+PC9kaXY+Cis8L2Rpdj4KKworPCEtLSBTRUFSQ0ggLS0+Cis8ZGl2IGNsYXNzPSJwYWdlIiBpZD0icGFnZS1zZWFyY2giPgorICA8aDIgc3R5bGU9ImZvbnQtc2l6ZToxLjRyZW07Y29sb3I6dmFyKC0tYmx1ZSk7bWFyZ2luLWJvdHRvbToxNnB4Ij7wn5SNIFNlYXJjaCBPbGltQW5zd2VyczwvaDI+CisgIDxkaXYgY2xhc3M9InNlYXJjaC1iYXItYmlnIj4KKyAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InNlYXJjaC1pbnB1dCIgcGxhY2Vob2xkZXI9IlNlYXJjaCBxdWVzdGlvbnMsIHRvcGljcywga2V5d29yZHMuLi4iIG9ua2V5dXA9ImlmKGV2ZW50LmtleT09PSdFbnRlcicpZG9TZWFyY2goKSIgLz4KKyAgICA8YnV0dG9uIG9uY2xpY2s9ImRvU2VhcmNoKCkiPlNlYXJjaDwvYnV0dG9uPgorICA8L2Rpdj4KKyAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSIgc3R5bGU9ImZvbnQtc2l6ZToxcmVtIj5Qb3B1bGFyIFRvcGljczwvZGl2PgorICA8ZGl2IGNsYXNzPSJ0YWctY2xvdWQiIGlkPSJ0YWctY2xvdWQiPjwvZGl2PgorICA8ZGl2IGlkPSJzZWFyY2gtcmVzdWx0cyI+PC9kaXY+Cis8L2Rpdj4KKworPCEtLSBDQVRFR09SSUVTIC0tPgorPGRpdiBjbGFzcz0icGFnZSIgaWQ9InBhZ2UtY2F0cyI+CisgIDxoMiBzdHlsZT0iZm9udC1zaXplOjEuNHJlbTtjb2xvcjp2YXIoLS1ibHVlKTttYXJnaW4tYm90dG9tOjZweCI+8J+TgiBDYXRlZ29yaWVzPC9oMj4KKyAgPHAgc3R5bGU9ImZvbnQtc2l6ZTowLjg1cmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tYm90dG9tOjIwcHgiPkJyb3dzZSBxdWVzdGlvbnMgYnkgdG9waWM8L3A+CisgIDxkaXYgY2xhc3M9ImNhdGVnb3J5LWdyaWQiIGlkPSJjYXRzLWdyaWQiPjwvZGl2PgorPC9kaXY+CisKKzwhLS0gRE9OQVRFIC0tPgorPGRpdiBjbGFzcz0icGFnZSIgaWQ9InBhZ2UtZG9uYXRlIj4KKyAgPGRpdiBjbGFzcz0iZG9uYXRlLXBhZ2UiPgorICAgIDxkaXYgY2xhc3M9ImRvbmF0ZS1oZXJvIj4KKyAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZTozcmVtO21hcmdpbi1ib3R0b206MTJweCI+8J+SmzwvZGl2PgorICAgICAgPGgyPlN1cHBvcnQgT2xpbUFuc3dlcnM8L2gyPgorICAgICAgPHA+T2xpbUFuc3dlcnMgaXMgZnJlZSBmb3IgZXZlcnkgb2xlaCwgZm9yZXZlci4gSXQncyBidWlsdCBhbmQgbWFpbnRhaW5lZCBieSB0aGUgY29tbXVuaXR5LCBmb3IgdGhlIGNvbW11bml0eS4gWW91ciBkb25hdGlvbiBoZWxwcyBrZWVwIHRoZSBsaWdodHMgb24sIHBheSBmb3IgaG9zdGluZywgYW5kIGFsbG93cyB1cyB0byBncm93IGFuZCBpbXByb3ZlIHRoZSBzaXRlLjwvcD4KKyAgICAgIDxwIHN0eWxlPSJtYXJnaW4tdG9wOjEwcHg7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpIj4iSSB3aXNoIHRoaXMgc2l0ZSBleGlzdGVkIHdoZW4gSSBtYWRlIGFsaXlhaC4iIOKAlCBFdmVyeSBvbGVoLCBldmVyLjwvcD4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJkb25hdGUtYW1vdW50cyI+CisgICAgICA8YnV0dG9uIGNsYXNzPSJhbW91bnQtYnRuIiBvbmNsaWNrPSJzZWxlY3RBbW91bnQodGhpcywnJDUnKSI+JDU8L2J1dHRvbj4KKyAgICAgIDxidXR0b24gY2xhc3M9ImFtb3VudC1idG4iIG9uY2xpY2s9InNlbGVjdEFtb3VudCh0aGlzLCckMTgnKSI+JDE4IOKcoe+4jzwvYnV0dG9uPgorICAgICAgPGJ1dHRvbiBjbGFzcz0iYW1vdW50LWJ0biBzZWxlY3RlZCIgb25jbGljaz0ic2VsZWN0QW1vdW50KHRoaXMsJyQzNicpIj4kMzY8L2J1dHRvbj4KKyAgICAgIDxidXR0b24gY2xhc3M9ImFtb3VudC1idG4iIG9uY2xpY2s9InNlbGVjdEFtb3VudCh0aGlzLCckMTAwJykiPiQxMDA8L2J1dHRvbj4KKyAgICAgIDxidXR0b24gY2xhc3M9ImFtb3VudC1idG4iIG9uY2xpY2s9InNlbGVjdEFtb3VudCh0aGlzLCdvdGhlcicpIj5PdGhlcjwvYnV0dG9uPgorICAgIDwvZGl2PgorICAgIDxidXR0b24gY2xhc3M9ImRvbmF0ZS1idG4tYmlnIiBvbmNsaWNrPSJzaG93VG9hc3QoJ1RoYW5rIHlvdSEgRG9uYXRpb24gbGluayBjb21pbmcgc29vbiDwn5KbJykiPkRvbmF0ZSB2aWEgUGF5UGFsPC9idXR0b24+CisgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZTowLjc4cmVtO2NvbG9yOnZhcigtLW11dGVkKSI+U2VjdXJlIHBheW1lbnQuIEV2ZXJ5IHNoZWtlbCAvIGRvbGxhciBoZWxwcy48L3A+CisgICAgPGRpdiBjbGFzcz0iZGl2aWRlciI+PC9kaXY+CisgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZTowLjg1cmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tdG9wOjE2cHgiPllvdSBjYW4gYWxzbyBzdXBwb3J0IHVzIGJ5IHNoYXJpbmcgdGhlIHNpdGUgd2l0aCBvdGhlciBvbGltLCBjb250cmlidXRpbmcgYW5zd2VycywgYW5kIGZsYWdnaW5nIG91dGRhdGVkIGluZm9ybWF0aW9uLiBFdmVyeSBiaXQgY291bnRzITwvcD4KKyAgPC9kaXY+Cis8L2Rpdj4KKworPCEtLSBMQU5HIE1PREFMIC0tPgorPGRpdiBjbGFzcz0ibW9kYWwtb3ZlcmxheSIgaWQ9ImxhbmctbW9kYWwiPgorICA8ZGl2IGNsYXNzPSJtb2RhbCI+CisgICAgPGgzPvCfjJAgQ2hvb3NlIExhbmd1YWdlPC9oMz4KKyAgICA8cD5Db250ZW50IGlzIGF1dG8tdHJhbnNsYXRlZC4gRm9yIGNyaXRpY2FsIGRlY2lzaW9ucywgYWx3YXlzIHZlcmlmeSB3aXRoIG9mZmljaWFsIHNvdXJjZXMuPC9wPgorICAgIDxkaXYgY2xhc3M9InRyYW5zbGF0aW9uLW5vdGljZSI+4pqg77iPIElzcmFlbGkgYnVyZWF1Y3JhdGljIHRlcm1zIChUZXVkYXQgWmVodXQsIE1pc3JhZCBIYXBuaW0sIGV0Yy4pIGFyZSBrZXB0IGluIHRoZWlyIG9yaWdpbmFsIGZvcm0gd2l0aCB0b29sdGlwcyB0byBwcmV2ZW50IG1pc3RyYW5zbGF0aW9uLjwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImxhbmctZ3JpZCIgaWQ9ImxhbmctZ3JpZCI+PC9kaXY+CisgICAgPGJ1dHRvbiBjbGFzcz0ibW9kYWwtY2xvc2UiIG9uY2xpY2s9ImNsb3NlTGFuZ01vZGFsKCkiPkNsb3NlPC9idXR0b24+CisgIDwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9InRvYXN0IiBpZD0idG9hc3QiPjwvZGl2PgorCis8c2NyaXB0PgorY29uc3QgQ0FURUdPUklFUyA9IFsKKyAge2lkOidiYW5raW5nJyxpY29uOifwn4+mJyxuYW1lOidCYW5raW5nJyxkZXNjOidBY2NvdW50cywgdHJhbnNmZXJzLCBtb3J0Z2FnZXMnfSwKKyAge2lkOidoZWFsdGgnLGljb246J/Cfj6UnLG5hbWU6J0hlYWx0aCBJbnN1cmFuY2UnLGRlc2M6J0t1cGF0IEhvbGltLCBkb2N0b3JzLCBjb3ZlcmFnZSd9LAorICB7aWQ6J3RheCcsaWNvbjon8J+TiicsbmFtZTonVGF4JyxkZXNjOidJbmNvbWUgdGF4LCBNYXMgSGFjaG5hc2EsIFZBVCd9LAorICB7aWQ6J2ludGVybmV0JyxpY29uOifwn5O2JyxuYW1lOidJbnRlcm5ldCAmIFBob25lJyxkZXNjOidQcm92aWRlcnMsIGNvbnRyYWN0cywgU0lNIGNhcmRzJ30sCisgIHtpZDonaG91c2luZycsaWNvbjon8J+PoCcsbmFtZTonSG91c2luZycsZGVzYzonUmVudGluZywgYnV5aW5nLCBBcm5vbmEnfSwKKyAge2lkOidnb3YnLGljb246J/CfqqonLG5hbWU6J0dvdmVybm1lbnQgJiBJRHMnLGRlc2M6J1RldWRhdCBaZWh1dCwgTWlzcmFkIEhhcG5pbSd9LAorICB7aWQ6J2VkdWNhdGlvbicsaWNvbjon8J+OkycsbmFtZTonRWR1Y2F0aW9uJyxkZXNjOidTY2hvb2xzLCB1bHBhbiwgdW5pdmVyc2l0aWVzJ30sCisgIHtpZDondHJhbnNwb3J0JyxpY29uOifwn5qMJyxuYW1lOidUcmFuc3BvcnQnLGRlc2M6J0RyaXZpbmcgbGljZW5jZSwgUmF2LUthdiwgYnVzZXMnfSwKKyAge2lkOidlbXBsb3ltZW50JyxpY29uOifwn5K8JyxuYW1lOidFbXBsb3ltZW50JyxkZXNjOidKb2JzLCBjb250cmFjdHMsIHJpZ2h0cyd9LAorICB7aWQ6J3NvY2lhbCcsaWNvbjon8J+knScsbmFtZTonU29jaWFsIFNlY3VyaXR5JyxkZXNjOidCaXR1YWNoIExldW1pLCBiZW5lZml0cyd9LAorICB7aWQ6J2N1bHR1cmUnLGljb246J/CflY4nLG5hbWU6J0N1bHR1cmUgJiBMaWZlJyxkZXNjOidDdXN0b21zLCBob2xpZGF5cywgY29tbXVuaXR5J30sCisgIHtpZDonb3RoZXInLGljb246J+KdkycsbmFtZTonT3RoZXInLGRlc2M6J0FueXRoaW5nIGVsc2UnfSwKK107CisKK2NvbnN0IFRJUFMgPSBbCisgICJXaGVuIG9wZW5pbmcgYSBiYW5rIGFjY291bnQgaW4gSXNyYWVsLCBicmluZyB5b3VyIFRldWRhdCBPbGVoLCBwYXNzcG9ydCwgYW5kIHByb29mIG9mIGFkZHJlc3MuIEJhbmsgSGFwb2FsaW0gYW5kIEJhbmsgTGV1bWkgYm90aCBoYXZlIGRlZGljYXRlZCBPbGltIGRlcGFydG1lbnRzIHdpdGggRW5nbGlzaC1zcGVha2luZyBzdGFmZi4iLAorICAiUmVnaXN0ZXIgd2l0aCBhIEt1cGF0IEhvbGltIChoZWFsdGggZnVuZCkgd2l0aGluIDMgbW9udGhzIG9mIGFycml2aW5nLiBUaGUgNCBvcHRpb25zIGFyZSBDbGFsaXQsIE1hY2NhYmksIE1ldWhlZGV0LCBhbmQgTGV1bWl0LiBZb3UgY2FuIHN3aXRjaCBvbmNlIGEgeWVhciBpbiBOb3ZlbWJlci4iLAorICAiVGhlIFRldWRhdCBaZWh1dCAobmF0aW9uYWwgSUQpIGlzIHJlcXVpcmVkIGZvciBhbG1vc3QgZXZlcnl0aGluZyBpbiBJc3JhZWwuIEtlZXAgYSBwaG90b2NvcHkgYXQgaG9tZSBhbmQgYSBwaG90byBvbiB5b3VyIHBob25lIGF0IGFsbCB0aW1lcy4iLAorICAiQXJub25hIChtdW5pY2lwYWwgdGF4KSBiaWxscyBhcmUgc2VudCB0d2ljZSBhIHllYXIuIE5ldyBvbGltIG1heSBiZSBlbGlnaWJsZSBmb3IgYSBkaXNjb3VudCDigJQgY2hlY2sgd2l0aCB5b3VyIGxvY2FsIG11bmljaXBhbGl0eSB3aXRoaW4gOTAgZGF5cyBvZiBhcnJpdmFsLiIsCisgICJUbyBjb252ZXJ0IHlvdXIgZm9yZWlnbiBkcml2aW5nIGxpY2VuY2UgaW4gSXNyYWVsLCB5b3UgbWF5IGJlIGV4ZW1wdCBmcm9tIHRha2luZyBhIGZ1bGwgdGVzdCBpZiB5b3VyIGNvdW50cnkgaGFzIGEgcmVjaXByb2NhbCBhZ3JlZW1lbnQuIENoZWNrIHdpdGggTWlzcmFkIEhhVGFjaGJ1cmEuIiwKK107CisKK2xldCBxdWVzdGlvbnMgPSBbCisgIHtpZDoxLHRpdGxlOiJIb3cgZG8gSSBvcGVuIGEgYmFuayBhY2NvdW50IGFzIGEgbmV3IG9sZWg/Iixib2R5OiJJIGp1c3QgYXJyaXZlZCBsYXN0IHdlZWsgYW5kIEknbSB0cnlpbmcgdG8gb3BlbiBhIGJhbmsgYWNjb3VudC4gV2hhdCBkb2N1bWVudHMgZG8gSSBuZWVkIGFuZCB3aGljaCBiYW5rIGlzIG1vc3Qgb2xlaC1mcmllbmRseT8iLGNhdDonYmFua2luZycsYXV0aG9yOidTYXJhaCBNLicsZGF0ZTonMjAyNC0xMi0xNScsdmlld3M6MzQyLGxhbmc6J0VOJyxhbnN3ZXJzOlsKKyAgICB7aWQ6MSxib2R5OiJCYW5rIEhhcG9hbGltIGFuZCBCYW5rIExldW1pIGJvdGggaGF2ZSBkZWRpY2F0ZWQgT2xpbSBjZW50cmVzIHdpdGggRW5nbGlzaCBzcGVha2luZyBzdGFmZi4gQnJpbmcgeW91ciBUZXVkYXQgT2xlaCwgcGFzc3BvcnQsIGFuZCBpZiBwb3NzaWJsZSBhIHByb29mIG9mIGFkZHJlc3MuIFRoZSBwcm9jZXNzIHVzdWFsbHkgdGFrZXMgMS0yIHZpc2l0cy4gTGV1bWkncyBvbmxpbmUgcHJvY2VzcyBoYXMgaW1wcm92ZWQgYSBsb3QgcmVjZW50bHkuIixhdXRob3I6J0RhdmlkIEsuJyxkYXRlOicyMDI0LTEyLTE1Jyx2b3Rlczo0NyxmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOidFTid9LAorICAgIHtpZDoyLGJvZHk6IkkgdXNlZCBEaXNjb3VudCBCYW5rIGFuZCBoYWQgYSBncmVhdCBleHBlcmllbmNlLiBUaGV5IHNldCB1cCBteSBhY2NvdW50IHRoZSBzYW1lIGRheSBhbmQgZ2F2ZSBtZSBhbiBFbmdsaXNoLWxhbmd1YWdlIGFwcC4gQWxzbyB3b3J0aCBhc2tpbmcgYWJvdXQgemVyby1mZWUgYWNjb3VudHMgZm9yIG5ldyBvbGltIOKAlCBtYW55IGJhbmtzIG9mZmVyIHRoZW0gZm9yIHRoZSBmaXJzdCB5ZWFyLiIsYXV0aG9yOidNaXJpYW0gVC4nLGRhdGU6JzIwMjQtMTItMTYnLHZvdGVzOjMxLGZsYWdnZWQ6ZmFsc2UsdXNlclZvdGVkOmZhbHNlLGxhbmc6J0VOJ30sCisgIF19LAorICB7aWQ6Mix0aXRsZToiV2hpY2ggS3VwYXQgSG9saW0gc2hvdWxkIEkgam9pbj8iLGJvZHk6IkkgbmVlZCB0byByZWdpc3RlciB3aXRoIGEgaGVhbHRoIGZ1bmQuIFdoYXQgYXJlIHRoZSBtYWluIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGZvdXIgb3B0aW9ucyBhbmQgd2hpY2ggaXMgYmVzdCBmb3IgRW5nbGlzaCBzcGVha2Vycz8iLGNhdDonaGVhbHRoJyxhdXRob3I6J0phbWVzIFIuJyxkYXRlOicyMDI0LTEyLTEwJyx2aWV3czoyODksbGFuZzonRU4nLGFuc3dlcnM6WworICAgIHtpZDoxLGJvZHk6Ik1hY2NhYmkgaXMgZ2VuZXJhbGx5IGNvbnNpZGVyZWQgdGhlIG1vc3QgRW5nbGlzaC1mcmllbmRseSBhbmQgaGFzIGEgZ29vZCBhcHAuIENsYWxpdCBoYXMgdGhlIG1vc3QgZG9jdG9ycyBhbmQgY2xpbmljcyBidXQgdGhlIGFwcCBhbmQgc2VydmljZSBxdWFsaXR5IHZhcmllcy4gTWV1aGVkZXQgaXMgc3Ryb25nIGluIEplcnVzYWxlbS4gTGV1bWl0IGlzIHRoZSBzbWFsbGVzdCBidXQgb2Z0ZW4gaGFzIHNob3J0ZXIgd2FpdHMuIixhdXRob3I6J1lhZWwgUy4nLGRhdGU6JzIwMjQtMTItMTEnLHZvdGVzOjUyLGZsYWdnZWQ6ZmFsc2UsdXNlclZvdGVkOmZhbHNlLGxhbmc6J0VOJ30sCisgIF19LAorICB7aWQ6Myx0aXRsZToi15DXmdeaINei15XXkdeTINeQ16jXoNeV16DXlCDXldeQ150g157XkteZ16Ig15zXmSDXlNeg15fXlD8iLGJvZHk6Iten15nXkdec16rXmSDXl9ep15HXldefINeQ16jXoNeV16DXlCDXldeQ16DXmSDXnNeQINeR15jXldeXINeQ15nXmiDXnteX16nXkdeZ150g15DXldeq15Ug15XXkNedINei15XXnNeZ150g15fXk9ep15nXnSDXnten15HXnNeZ150g15TXpNeX16rXlC4iLGNhdDonaG91c2luZycsYXV0aG9yOifXqNeV16DXnyDXkS4nLGRhdGU6JzIwMjQtMTItMDgnLHZpZXdzOjE3OCxsYW5nOidIRScsYW5zd2VyczpbCisgICAge2lkOjEsYm9keToi15DXqNeg15XXoNeUINeU15nXkCDXntehINei15nXqNeV16DXmSDXqdee16nXnNee15nXnSDXnNei15nXqNeZ15Qg15TXnten15XXnteZ16ouINei15XXnNeZ150g15fXk9ep15nXnSDXlteb15DXmdedINec15TXoNeX15QgKNeR15PXqNeaINeb15zXnCA3MC05MCUpINec16nXoNeUINeU16jXkNep15XXoNeULiDXpteo15nXmiDXnNek16DXldeqINec16LXmdeo15nXlCDXlNee16fXldee15nXqiDXotedINeq16LXldeT16og15TXoteV15zXlCDXqteV15ogOTAg15nXldedINee15TXktei15QuINeQ15wg16rXpNeh16TXodeVINeQ16og15TXl9ec15XXnyDXlNeW15QhIixhdXRob3I6J9eZ16LXnCDXqS4nLGRhdGU6JzIwMjQtMTItMDknLHZvdGVzOjM5LGZsYWdnZWQ6ZmFsc2UsdXNlclZvdGVkOmZhbHNlLGxhbmc6J0hFJ30sCisgIF19LAorICB7aWQ6NCx0aXRsZToiQmVzdCBtb2JpbGUgcGhvbmUgcHJvdmlkZXIgZm9yIG9saW0/Iixib2R5OiJXaGF0IFNJTSBjYXJkIG9yIGNvbnRyYWN0IHNob3VsZCBJIGdldD8gSSBuZWVkIGdvb2QgZGF0YSBhbmQgYWZmb3JkYWJsZSBjYWxscyB0byB0aGUgVUsuIixjYXQ6J2ludGVybmV0JyxhdXRob3I6J0VtbWEgTC4nLGRhdGU6JzIwMjQtMTItMDUnLHZpZXdzOjIwMSxsYW5nOidFTicsYW5zd2VyczpbCisgICAge2lkOjEsYm9keToiR29sYW4gVGVsZWNvbSBpcyB0aGUgYmVzdCB2YWx1ZSBmb3IgbW9zdCBvbGltIOKAlCBhcm91bmQg4oKqMzAvbW9udGggZm9yIHVubGltaXRlZCBkYXRhIGFuZCBjYWxscy4gUGFydG5lciBhbmQgQ2VsbGNvbSBhcmUgbW9yZSBleHBlbnNpdmUgYnV0IGhhdmUgYmV0dGVyIGNvdmVyYWdlIGluIHNvbWUgYXJlYXMuIEZvciBpbnRlcm5hdGlvbmFsIGNhbGxzIHRvIHRoZSBVSywgZ2V0IGEgV2hhdHNBcHAgbnVtYmVyIG9yIHVzZSBHb2xhbidzIGludGVybmF0aW9uYWwgYWRkLW9uLiIsYXV0aG9yOidBdmkgQy4nLGRhdGU6JzIwMjQtMTItMDYnLHZvdGVzOjI4LGZsYWdnZWQ6ZmFsc2UsdXNlclZvdGVkOmZhbHNlLGxhbmc6J0VOJ30sCisgIF19LAorXTsKKworbGV0IG5leHRRSWQgPSA1LCBuZXh0QUlkID0gMTA7CitsZXQgY3VycmVudENhdCA9IG51bGwsIGN1cnJlbnRRSWQgPSBudWxsLCBwcmV2UGFnZSA9ICdmb3J1bScsIGN1cnJlbnRMYW5nID0gJ0VOJzsKKworY29uc3QgTEFOR1MgPSBbCisgIHtjb2RlOidFTicsZmxhZzon8J+HrPCfh6cnLG5hbWU6J0VuZ2xpc2gnLCAgbmF0aXZlOidFbmdsaXNoJ30sCisgIHtjb2RlOidIRScsZmxhZzon8J+HrvCfh7EnLG5hbWU6J0hlYnJldycsICAgbmF0aXZlOifXoteR16jXmdeqJ30sCisgIHtjb2RlOidSVScsZmxhZzon8J+Ht/Cfh7onLG5hbWU6J1J1c3NpYW4nLCAgbmF0aXZlOifQoNGD0YHRgdC60LjQuSd9LAorICB7Y29kZTonRlInLGZsYWc6J/Cfh6vwn4e3JyxuYW1lOidGcmVuY2gnLCAgIG5hdGl2ZTonRnJhbsOnYWlzJ30sCisgIHtjb2RlOidFUycsZmxhZzon8J+HqvCfh7gnLG5hbWU6J1NwYW5pc2gnLCAgbmF0aXZlOidFc3Bhw7FvbCd9LAorICB7Y29kZTonQVInLGZsYWc6J/Cfh6bwn4eqJyxuYW1lOidBcmFiaWMnLCAgIG5hdGl2ZTon2KfZhNi52LHYqNmK2KknfSwKKyAge2NvZGU6J0FNJyxmbGFnOifwn4eq8J+HuScsbmFtZTonQW1oYXJpYycsICBuYXRpdmU6J+GKoOGIm+GIreGKmyd9LAorICB7Y29kZTonUFQnLGZsYWc6J/Cfh6fwn4e3JyxuYW1lOidQb3J0dWd1ZXNlJyxuYXRpdmU6J1BvcnR1Z3XDqnMnfSwKK107CisKK2NvbnN0IENIRUNLTElTVCA9IFsKKyAge3NlY3Rpb246J0ZpcnN0IDMwIERheXMnLCBpY29uOifwn5qAJywgaXRlbXM6WworICAgICdDb2xsZWN0IFRldWRhdCBPbGVoIGZyb20gdGhlIGFpcnBvcnQgb3IgTWlzcmFkIEhhQWxpeWFoJywKKyAgICAnUmVnaXN0ZXIgYXQgTWlzcmFkIEhhQWxpeWFoIChNaW5pc3RyeSBvZiBBbGl5YWgpIGZvciBiZW5lZml0cycsCisgICAgJ0FwcGx5IGZvciBUZXVkYXQgWmVodXQgKE5hdGlvbmFsIElEKSBhdCBNaXNyYWQgSGFwbmltJywKKyAgICAnUmVnaXN0ZXIgd2l0aCBhIEt1cGF0IEhvbGltIChoZWFsdGggZnVuZCknLAorICAgICdPcGVuIGEgYmFuayBhY2NvdW50JywKKyAgICAnRW5yb2wgaW4gVWxwYW4gKEhlYnJldyBsYW5ndWFnZSBjb3Vyc2UpJywKKyAgICAnUmVnaXN0ZXIgY2hpbGRyZW4gYXQgbG9jYWwgc2Nob29sJywKKyAgXX0sCisgIHtzZWN0aW9uOidGaXJzdCAzIE1vbnRocycsIGljb246J/Cfk4UnLCBpdGVtczpbCisgICAgJ0FwcGx5IGZvciBBcm5vbmEgKG11bmljaXBhbCB0YXgpIGRpc2NvdW50IGF0IGxvY2FsIElyaXlhJywKKyAgICAnVHJhbnNmZXIgb3Igb2J0YWluIElzcmFlbGkgZHJpdmluZyBsaWNlbmNlJywKKyAgICAnQXBwbHkgZm9yIEJpdHVhY2ggTGV1bWkgKE5hdGlvbmFsIEluc3VyYW5jZSknLAorICAgICdTZXQgdXAgaW50ZXJuZXQgYXQgaG9tZScsCisgICAgJ1JlZ2lzdGVyIHdpdGggYSBsb2NhbCBkb2N0b3IgKNeo15XXpNeQINee16nXpNeX15QpJywKKyAgICAnSm9pbiBsb2NhbCBvbGltIEZhY2Vib29rL1doYXRzQXBwIGdyb3VwcycsCisgIF19LAorICB7c2VjdGlvbjonRmlyc3QgWWVhcicsIGljb246J/Cfk4YnLCBpdGVtczpbCisgICAgJ0ZpbGUgeW91ciBmaXJzdCBJc3JhZWxpIHRheCByZXR1cm4gaWYgcmVxdWlyZWQnLAorICAgICdSZXZpZXcgeW91ciBLdXBhdCBIb2xpbSDigJQgeW91IGNhbiBzd2l0Y2ggZXZlcnkgTm92ZW1iZXInLAorICAgICdDaGVjayBlbnRpdGxlbWVudCB0byBPbGVoIG1vcnRnYWdlIGJlbmVmaXRzIChNaXNoa2FudGEpJywKKyAgICAnQXBwbHkgZm9yIGFueSByZW1haW5pbmcgU2FsIEtsaXRhIChhYnNvcnB0aW9uIGJhc2tldCkgcGF5bWVudHMnLAorICAgICdHZXQgeW91ciBJc3JhZWxpIGRyaXZpbmcgbGljZW5jZSBpZiB5b3UgaGF2ZW5cJ3QgYWxyZWFkeScsCisgIF19LAorXTsKKworZnVuY3Rpb24gc2hvd1BhZ2UocCwgZGF0YSl7CisgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5wYWdlJykuZm9yRWFjaCh4PT54LmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpKTsKKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhZ2UtJytwKS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKKyAgaWYocD09PSdob21lJykgcmVuZGVySG9tZUNhdHMoKTsKKyAgaWYocD09PSdmb3J1bScpIHJlbmRlckZvcnVtKCk7CisgIGlmKHA9PT0nYmVzdG9mJykgcmVuZGVyQmVzdE9mKCk7CisgIGlmKHA9PT0nY2hlY2tsaXN0JykgcmVuZGVyQ2hlY2tsaXN0KCk7CisgIGlmKHA9PT0nc2VhcmNoJykgcmVuZGVyVGFnQ2xvdWQoKTsKKyAgaWYocD09PSdjYXRzJykgcmVuZGVyQ2F0c1BhZ2UoKTsKKyAgaWYocD09PSdjYXRlZ29yeScmJmRhdGEpe2N1cnJlbnRDYXQ9ZGF0YTtyZW5kZXJDYXRlZ29yeVBhZ2UoKTt9CisgIGlmKHA9PT0ncXVlc3Rpb24nJiZkYXRhKXtjdXJyZW50UUlkPWRhdGE7cmVuZGVyUXVlc3Rpb24oKTt9CisgIHdpbmRvdy5zY3JvbGxUbygwLDApOworfQorCitmdW5jdGlvbiByZW5kZXJIb21lQ2F0cygpeworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaG9tZS1jYXRzJykuaW5uZXJIVE1MID0gQ0FURUdPUklFUy5tYXAoYz0+YAorICAgIDxkaXYgY2xhc3M9ImNhdC1jYXJkIiBvbmNsaWNrPSJwcmV2UGFnZT0naG9tZSc7c2hvd1BhZ2UoJ2NhdGVnb3J5JywnJHtjLmlkfScpIj4KKyAgICAgIDxkaXYgY2xhc3M9ImNhdC1pY29uIj4ke2MuaWNvbn08L2Rpdj4KKyAgICAgIDxoND4ke2MubmFtZX08L2g0PgorICAgICAgPHA+JHtjLmRlc2N9PC9wPgorICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZTowLjcycmVtO2NvbG9yOnZhcigtLWJsdWUpO21hcmdpbi10b3A6NnB4O2ZvbnQtd2VpZ2h0OjYwMCI+JHtxdWVzdGlvbnMuZmlsdGVyKHE9PnEuY2F0PT09Yy5pZCkubGVuZ3RofSBxdWVzdGlvbnM8L3A+CisgICAgPC9kaXY+YCkuam9pbignJyk7CisgIGNvbnN0IHRpcHMgPSBUSVBTOworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGlwLXRleHQnKS50ZXh0Q29udGVudCA9IHRpcHNbTWF0aC5mbG9vcihEYXRlLm5vdygpLzg2NDAwMDAwKSV0aXBzLmxlbmd0aF07Cit9CisKK2Z1bmN0aW9uIHNvcnRRdWVzdGlvbnMocXMsIG1ldGhvZCl7CisgIHJldHVybiBbLi4ucXNdLnNvcnQoKGEsYik9PnsKKyAgICBpZihtZXRob2Q9PT0nbmV3ZXN0JykgcmV0dXJuIGIuaWQtYS5pZDsKKyAgICBpZihtZXRob2Q9PT0nbW9zdF9hbnN3ZXJzJykgcmV0dXJuIGIuYW5zd2Vycy5sZW5ndGgtYS5hbnN3ZXJzLmxlbmd0aDsKKyAgICBpZihtZXRob2Q9PT0naGlnaGVzdF9yYXRlZCcpIHJldHVybiBtYXhWb3RlcyhiKS1tYXhWb3RlcyhhKTsKKyAgICBpZihtZXRob2Q9PT0nbW9zdF92aWV3ZWQnKSByZXR1cm4gYi52aWV3cy1hLnZpZXdzOworICAgIHJldHVybiBiLmlkLWEuaWQ7CisgIH0pOworfQorCitmdW5jdGlvbiBtYXhWb3RlcyhxKXtyZXR1cm4gcS5hbnN3ZXJzLmxlbmd0aD9NYXRoLm1heCguLi5xLmFuc3dlcnMubWFwKGE9PmEudm90ZXMpKTowO30KK2Z1bmN0aW9uIGF2Z1ZvdGVzKHEpe3JldHVybiBxLmFuc3dlcnMubGVuZ3RoP3EuYW5zd2Vycy5yZWR1Y2UoKHMsYSk9PnMrYS52b3RlcywwKS9xLmFuc3dlcnMubGVuZ3RoOjA7fQorCitmdW5jdGlvbiByZW5kZXJGb3J1bSgpeworICBjb25zdCBzb3J0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZvcnVtLXNvcnQnKT8udmFsdWV8fCduZXdlc3QnOworICBjb25zdCBxcyA9IHNvcnRRdWVzdGlvbnMocXVlc3Rpb25zLCBzb3J0KTsKKyAgY29uc3QgY2F0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtY2F0Jyk7CisgIGlmKGNhdCkgY2F0LmlubmVySFRNTD0nPG9wdGlvbiB2YWx1ZT0iIj5TZWxlY3QgYSBjYXRlZ29yeS4uLjwvb3B0aW9uPicrQ0FURUdPUklFUy5tYXAoYz0+YDxvcHRpb24gdmFsdWU9IiR7Yy5pZH0iPiR7Yy5pY29ufSAke2MubmFtZX08L29wdGlvbj5gKS5qb2luKCcnKTsKKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZvcnVtLWxpc3QnKS5pbm5lckhUTUwgPSBxcy5sZW5ndGggPyBxcy5tYXAocT0+cUNhcmQocSwnZm9ydW0nKSkuam9pbignJykgOiBlbXB0eVN0YXRlKCdObyBxdWVzdGlvbnMgeWV0LiBCZSB0aGUgZmlyc3QgdG8gYXNrIScpOworfQorCitmdW5jdGlvbiByZW5kZXJDYXRlZ29yeVBhZ2UoKXsKKyAgY29uc3QgY2F0ID0gQ0FURUdPUklFUy5maW5kKGM9PmMuaWQ9PT1jdXJyZW50Q2F0KTsKKyAgaWYoIWNhdCkgcmV0dXJuOworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0LXBhZ2UtdGl0bGUnKS50ZXh0Q29udGVudCA9IGNhdC5pY29uKycgJytjYXQubmFtZTsKKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdC1wYWdlLWRlc2MnKS50ZXh0Q29udGVudCA9IGNhdC5kZXNjOworICBjb25zdCBzb3J0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdC1zb3J0Jyk/LnZhbHVlfHwnbmV3ZXN0JzsKKyAgY29uc3QgcXMgPSBzb3J0UXVlc3Rpb25zKHF1ZXN0aW9ucy5maWx0ZXIocT0+cS5jYXQ9PT1jdXJyZW50Q2F0KSwgc29ydCk7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXQtcGFnZS1saXN0JykuaW5uZXJIVE1MID0gcXMubGVuZ3RoID8gcXMubWFwKHE9PnFDYXJkKHEsJ2NhdGVnb3J5JykpLmpvaW4oJycpIDogZW1wdHlTdGF0ZSgnTm8gcXVlc3Rpb25zIGluIHRoaXMgY2F0ZWdvcnkgeWV0LicpOworfQorCitmdW5jdGlvbiBxQ2FyZChxLGZyb20peworICBjb25zdCB0b3BWb3RlcyA9IHEuYW5zd2Vycy5sZW5ndGg/TWF0aC5tYXgoLi4ucS5hbnN3ZXJzLm1hcChhPT5hLnZvdGVzKSk6MDsKKyAgY29uc3QgY2F0ID0gQ0FURUdPUklFUy5maW5kKGM9PmMuaWQ9PT1xLmNhdCk7CisgIHJldHVybiBgPGRpdiBjbGFzcz0icS1jYXJkIiBvbmNsaWNrPSJwcmV2UGFnZT0nJHtmcm9tfSc7c2hvd1BhZ2UoJ3F1ZXN0aW9uJywke3EuaWR9KSI+CisgICAgPGRpdiBjbGFzcz0icS1tZXRhIj4KKyAgICAgIDxzcGFuIGNsYXNzPSJxLWNhdC1iYWRnZSI+JHtjYXQ/Y2F0Lmljb24rJyAnK2NhdC5uYW1lOnEuY2F0fTwvc3Bhbj4KKyAgICAgIDxzcGFuIGNsYXNzPSJxLWF1dGhvciI+8J+RpCAke3EuYXV0aG9yfTwvc3Bhbj4KKyAgICAgIDxzcGFuIGNsYXNzPSJxLWRhdGUiPvCfk4UgJHtxLmRhdGV9PC9zcGFuPgorICAgICAgJHt0b3BWb3Rlcz49MzA/YDxzcGFuIGNsYXNzPSJmZWF0dXJlZC1iYWRnZSI+4q2QIEZlYXR1cmVkPC9zcGFuPmA6Jyd9CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz0icS10aXRsZSI+JHtxLnRpdGxlfTwvZGl2PgorICAgIDxkaXYgY2xhc3M9InEtcHJldmlldyI+JHtxLmJvZHkuc3Vic3RyaW5nKDAsMTIwKX0ke3EuYm9keS5sZW5ndGg+MTIwPycuLi4nOicnfTwvZGl2PgorICAgIDxkaXYgY2xhc3M9InEtc3RhdHMiPgorICAgICAgPHNwYW4+8J+SrCAke3EuYW5zd2Vycy5sZW5ndGh9IGFuc3dlciR7cS5hbnN3ZXJzLmxlbmd0aCE9PTE/J3MnOicnfTwvc3Bhbj4KKyAgICAgIDxzcGFuPvCfkYEgJHtxLnZpZXdzfSB2aWV3czwvc3Bhbj4KKyAgICAgIDxzcGFuPuKtkCBUb3Agdm90ZTogJHt0b3BWb3Rlc308L3NwYW4+CisgICAgPC9kaXY+CisgICAgPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDo2cHgiPiR7bGFuZ0JhZGdlKHEubGFuZyl9PC9kaXY+CisgIDwvZGl2PmA7Cit9CisKK2Z1bmN0aW9uIHJlbmRlclF1ZXN0aW9uKCl7CisgIGNvbnN0IHEgPSBxdWVzdGlvbnMuZmluZCh4PT54LmlkPT09Y3VycmVudFFJZCk7CisgIGlmKCFxKXtyZXR1cm47fQorICBxLnZpZXdzKys7CisgIGNvbnN0IGNhdCA9IENBVEVHT1JJRVMuZmluZChjPT5jLmlkPT09cS5jYXQpOworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1mdWxsLWNvbnRlbnQnKS5pbm5lckhUTUw9YAorICAgIDxkaXYgY2xhc3M9InEtbWV0YSIgc3R5bGU9Im1hcmdpbi1ib3R0b206MTJweCI+CisgICAgICA8c3BhbiBjbGFzcz0icS1jYXQtYmFkZ2UiIHN0eWxlPSJjdXJzb3I6cG9pbnRlciIgb25jbGljaz0ic2hvd1BhZ2UoJ2NhdGVnb3J5JywnJHtxLmNhdH0nKSI+JHtjYXQ/Y2F0Lmljb24rJyAnK2NhdC5uYW1lOnEuY2F0fTwvc3Bhbj4KKyAgICAgIDxzcGFuIGNsYXNzPSJxLWF1dGhvciI+8J+RpCAke3EuYXV0aG9yfTwvc3Bhbj4KKyAgICAgIDxzcGFuIGNsYXNzPSJxLWRhdGUiPvCfk4UgJHtxLmRhdGV9PC9zcGFuPgorICAgIDwvZGl2PgorICAgIDxoMj4ke3EudGl0bGV9PC9oMj4KKyAgICA8ZGl2IGNsYXNzPSJib2R5IiBzdHlsZT0ibWFyZ2luLXRvcDoxMnB4Ij4ke3EuYm9keX08L2Rpdj5gOworICBjb25zdCBzb3J0ZWQgPSBbLi4ucS5hbnN3ZXJzXS5zb3J0KChhLGIpPT5iLnZvdGVzLWEudm90ZXMpOworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zd2Vycy1jb3VudCcpLnRleHRDb250ZW50ID0gYCR7cS5hbnN3ZXJzLmxlbmd0aH0gQW5zd2VyJHtxLmFuc3dlcnMubGVuZ3RoIT09MT8ncyc6Jyd9YDsKKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fuc3dlcnMtbGlzdCcpLmlubmVySFRNTCA9IHNvcnRlZC5sZW5ndGggPyBzb3J0ZWQubWFwKChhLGkpPT5gCisgICAgPGRpdiBjbGFzcz0iYW5zd2VyLWNhcmQgJHtpPT09MCYmYS52b3Rlcz4wPyd0b3AtYW5zd2VyJzonJ30iPgorICAgICAgJHtpPT09MCYmYS52b3Rlcz4wPyc8ZGl2IGNsYXNzPSJ0b3AtYW5zd2VyLWxhYmVsIj7irZAgVG9wIEFuc3dlcjwvZGl2Pic6Jyd9CisgICAgICA8ZGl2IGNsYXNzPSJhbnN3ZXItYm9keSI+JHthLmJvZHl9PC9kaXY+CisgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjhweCI+JHtsYW5nQmFkZ2UoYS5sYW5nKX08L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9ImFuc3dlci1mb290ZXIiPgorICAgICAgICA8ZGl2IGNsYXNzPSJhbnN3ZXItbWV0YSI+8J+RpCAke2EuYXV0aG9yfSDCtyDwn5OFICR7YS5kYXRlfTwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJ2b3RlLWJ0bnMiPgorICAgICAgICAgIDxidXR0b24gY2xhc3M9InZvdGUtYnRuICR7YS51c2VyVm90ZWQ/J2xpa2VkJzonJ30iIG9uY2xpY2s9InZvdGUoJHtxLmlkfSwke2EuaWR9KSI+CisgICAgICAgICAgICDwn5GNICR7YS52b3Rlc30KKyAgICAgICAgICA8L2J1dHRvbj4KKyAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJmbGFnLWJ0biIgb25jbGljaz0iZmxhZ0Fuc3dlcigke3EuaWR9LCR7YS5pZH0pIj7wn5qpICR7YS5mbGFnZ2VkPydGbGFnZ2VkJzonRmxhZyd9PC9idXR0b24+CisgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgICAke2EuZmxhZ2dlZD8nPGRpdiBzdHlsZT0iZm9udC1zaXplOjAuNzVyZW07Y29sb3I6dmFyKC0tcmVkKTttYXJnaW4tdG9wOjhweCI+4pqg77iPIFRoaXMgYW5zd2VyIGhhcyBiZWVuIGZsYWdnZWQgZm9yIHJldmlldy4gUGxlYXNlIHZlcmlmeSB3aXRoIG9mZmljaWFsIHNvdXJjZXMuPC9kaXY+JzonJ30KKyAgICA8L2Rpdj5gKS5qb2luKCcnKSA6ICc8ZGl2IGNsYXNzPSJlbXB0eS1zdGF0ZSI+PGRpdiBjbGFzcz0iaWNvbiI+8J+SrDwvZGl2PjxwPk5vIGFuc3dlcnMgeWV0LiBCZSB0aGUgZmlyc3QgdG8gaGVscCE8L3A+PC9kaXY+JzsKK30KKworZnVuY3Rpb24gZ29CYWNrKCl7c2hvd1BhZ2UocHJldlBhZ2U9PT0nY2F0ZWdvcnknPydjYXRlZ29yeSc6J2ZvcnVtJywgcHJldlBhZ2U9PT0nY2F0ZWdvcnknP2N1cnJlbnRDYXQ6bnVsbCk7fQorCitmdW5jdGlvbiB0b2dnbGVBc2tCYXIoKXsKKyAgY29uc3QgYiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhc2stYmFyJyk7CisgIGIuc3R5bGUuZGlzcGxheSA9IGIuc3R5bGUuZGlzcGxheT09PSdub25lJz8nYmxvY2snOidub25lJzsKK30KK2Z1bmN0aW9uIGNhbmNlbEFzaygpeworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS10aXRsZScpLnZhbHVlPScnOworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1ib2R5JykudmFsdWU9Jyc7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLWNhdCcpLnZhbHVlPScnOworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1uYW1lJykudmFsdWU9Jyc7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhc2stYmFyJykuc3R5bGUuZGlzcGxheT0nbm9uZSc7Cit9CitmdW5jdGlvbiByZW5kZXJDYXRzUGFnZSgpeworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0cy1ncmlkJykuaW5uZXJIVE1MID0gQ0FURUdPUklFUy5tYXAoYz0+YAorICAgIDxkaXYgY2xhc3M9ImNhdC1jYXJkIiBvbmNsaWNrPSJwcmV2UGFnZT0nY2F0cyc7c2hvd1BhZ2UoJ2NhdGVnb3J5JywnJHtjLmlkfScpIj4KKyAgICAgIDxkaXYgY2xhc3M9ImNhdC1pY29uIj4ke2MuaWNvbn08L2Rpdj4KKyAgICAgIDxoND4ke2MubmFtZX08L2g0PgorICAgICAgPHA+JHtjLmRlc2N9PC9wPgorICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZTowLjcycmVtO2NvbG9yOnZhcigtLWJsdWUpO21hcmdpbi10b3A6NnB4O2ZvbnQtd2VpZ2h0OjYwMCI+JHtxdWVzdGlvbnMuZmlsdGVyKHE9PnEuY2F0PT09Yy5pZCkubGVuZ3RofSBxdWVzdGlvbnM8L3A+CisgICAgPC9kaXY+YCkuam9pbignJyk7Cit9CisKK2Z1bmN0aW9uIHN1Ym1pdFF1ZXN0aW9uKCl7CisgIGNvbnN0IHRpdGxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtdGl0bGUnKS52YWx1ZS50cmltKCk7CisgIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1ib2R5JykudmFsdWUudHJpbSgpOworICBjb25zdCBjYXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1jYXQnKS52YWx1ZTsKKyAgY29uc3QgbmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLW5hbWUnKS52YWx1ZS50cmltKCl8fCdBbm9ueW1vdXMnOworICBpZighdGl0bGV8fCFib2R5fHwhY2F0KXtzaG93VG9hc3QoJ1BsZWFzZSBmaWxsIGluIGFsbCBmaWVsZHMg4p2MJyk7cmV0dXJuO30KKyAgcXVlc3Rpb25zLnVuc2hpZnQoe2lkOm5leHRRSWQrKyx0aXRsZSxib2R5LGNhdCxhdXRob3I6bmFtZSxkYXRlOm5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zbGljZSgwLDEwKSx2aWV3czowLGxhbmc6Y3VycmVudExhbmcsYW5zd2VyczpbXX0pOworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS10aXRsZScpLnZhbHVlPScnOworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1ib2R5JykudmFsdWU9Jyc7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLWNhdCcpLnZhbHVlPScnOworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1uYW1lJykudmFsdWU9Jyc7CisgIHRvZ2dsZUFza0JhcigpOworICByZW5kZXJGb3J1bSgpOworICBzaG93VG9hc3QoJ1F1ZXN0aW9uIHBvc3RlZCEg4pyFJyk7Cit9CisKK2Z1bmN0aW9uIHN1Ym1pdEFuc3dlcigpeworICBjb25zdCBxID0gcXVlc3Rpb25zLmZpbmQoeD0+eC5pZD09PWN1cnJlbnRRSWQpOworICBpZighcSkgcmV0dXJuOworICBjb25zdCBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fucy1ib2R5JykudmFsdWUudHJpbSgpOworICBjb25zdCBuYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fucy1uYW1lJykudmFsdWUudHJpbSgpfHwnQW5vbnltb3VzJzsKKyAgaWYoIWJvZHkpe3Nob3dUb2FzdCgnUGxlYXNlIHdyaXRlIGFuIGFuc3dlciDinYwnKTtyZXR1cm47fQorICBxLmFuc3dlcnMucHVzaCh7aWQ6bmV4dEFJZCsrLGJvZHksYXV0aG9yOm5hbWUsZGF0ZTpuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwxMCksdm90ZXM6MCxmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOmN1cnJlbnRMYW5nfSk7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbnMtYm9keScpLnZhbHVlPScnOworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zLW5hbWUnKS52YWx1ZT0nJzsKKyAgcmVuZGVyUXVlc3Rpb24oKTsKKyAgc2hvd1RvYXN0KCdBbnN3ZXIgcG9zdGVkISDinIUnKTsKK30KKworZnVuY3Rpb24gdm90ZShxSWQsYUlkKXsKKyAgY29uc3QgcSA9IHF1ZXN0aW9ucy5maW5kKHg9PnguaWQ9PT1xSWQpOworICBjb25zdCBhID0gcT8uYW5zd2Vycy5maW5kKHg9PnguaWQ9PT1hSWQpOworICBpZighYSkgcmV0dXJuOworICBhLnVzZXJWb3RlZD0hYS51c2VyVm90ZWQ7CisgIGEudm90ZXMrPWEudXNlclZvdGVkPzE6LTE7CisgIHJlbmRlclF1ZXN0aW9uKCk7Cit9CisKK2Z1bmN0aW9uIGZsYWdBbnN3ZXIocUlkLGFJZCl7CisgIGNvbnN0IHEgPSBxdWVzdGlvbnMuZmluZCh4PT54LmlkPT09cUlkKTsKKyAgY29uc3QgYSA9IHE/LmFuc3dlcnMuZmluZCh4PT54LmlkPT09YUlkKTsKKyAgaWYoIWEpIHJldHVybjsKKyAgYS5mbGFnZ2VkPSFhLmZsYWdnZWQ7CisgIHJlbmRlclF1ZXN0aW9uKCk7CisgIHNob3dUb2FzdChhLmZsYWdnZWQ/J0Fuc3dlciBmbGFnZ2VkIGZvciByZXZpZXcg8J+aqSc6J0ZsYWcgcmVtb3ZlZCcpOworfQorCitmdW5jdGlvbiByZW5kZXJCZXN0T2YoZmlsdGVyQ2F0KXsKKyAgY29uc3QgZmlsdGVycyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZXN0b2YtZmlsdGVycycpOworICBmaWx0ZXJzLmlubmVySFRNTCA9IENBVEVHT1JJRVMubWFwKGM9PmA8YnV0dG9uIGNsYXNzPSJmaWx0ZXItYnRuIiBvbmNsaWNrPSJmaWx0ZXJCZXN0T2YoJyR7Yy5pZH0nLHRoaXMpIj4ke2MuaWNvbn0gJHtjLm5hbWV9PC9idXR0b24+YCkuam9pbignJyk7CisgIGNvbnN0IHRocmVzaG9sZCA9IDIwOworICBsZXQgcXMgPSBxdWVzdGlvbnMuZmlsdGVyKHE9Pm1heFZvdGVzKHEpPj10aHJlc2hvbGQgfHwgYXZnVm90ZXMocSk+PTE1KTsKKyAgaWYoZmlsdGVyQ2F0JiZmaWx0ZXJDYXQhPT0nYWxsJykgcXM9cXMuZmlsdGVyKHE9PnEuY2F0PT09ZmlsdGVyQ2F0KTsKKyAgcXMuc29ydCgoYSxiKT0+bWF4Vm90ZXMoYiktbWF4Vm90ZXMoYSkpOworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmVzdG9mLWxpc3QnKS5pbm5lckhUTUwgPSBxcy5sZW5ndGgKKyAgICA/IGA8cCBzdHlsZT0iZm9udC1zaXplOjAuODJyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MTZweCI+U2hvd2luZyAke3FzLmxlbmd0aH0gaGlnaGx5LXJhdGVkIHF1ZXN0aW9uJHtxcy5sZW5ndGghPT0xPydzJzonJ308L3A+YCtxcy5tYXAocT0+cUNhcmQocSwnYmVzdG9mJykpLmpvaW4oJycpCisgICAgOiBlbXB0eVN0YXRlKCdBcyB0aGUgY29tbXVuaXR5IGdyb3dzLCB0b3AtcmF0ZWQgYW5zd2VycyB3aWxsIGFwcGVhciBoZXJlLiBTdGFydCBhbnN3ZXJpbmcgcXVlc3Rpb25zIScpOworfQorCitmdW5jdGlvbiBmaWx0ZXJCZXN0T2YoY2F0LGJ0bil7CisgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5maWx0ZXItYnRuJykuZm9yRWFjaChiPT5iLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpKTsKKyAgaWYoYnRuKSBidG4uY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7CisgIHJlbmRlckJlc3RPZihjYXQ9PT0nYWxsJz9udWxsOmNhdCk7Cit9CisKK2Z1bmN0aW9uIHJlbmRlckNoZWNrbGlzdCgpeworICBjb25zdCBzYXZlZCA9IHt9OworICB0cnl7Y29uc3Qgcz1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdjaGVja2xpc3QnKTtpZihzKU9iamVjdC5hc3NpZ24oc2F2ZWQsSlNPTi5wYXJzZShzKSk7fWNhdGNoKGUpe30KKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoZWNrbGlzdC1jb250ZW50JykuaW5uZXJIVE1MID0gQ0hFQ0tMSVNULm1hcCgocyxzaSk9PmAKKyAgICA8ZGl2IGNsYXNzPSJjaGVja2xpc3Qtc2VjdGlvbiI+CisgICAgICA8aDM+JHtzLmljb259ICR7cy5zZWN0aW9ufTwvaDM+CisgICAgICAke3MuaXRlbXMubWFwKChpdGVtLGlpKT0+eworICAgICAgICBjb25zdCBrZXk9YCR7c2l9LSR7aWl9YDsKKyAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJjaGVja2xpc3QtaXRlbSI+CisgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iY2hrLSR7a2V5fSIgJHtzYXZlZFtrZXldPydjaGVja2VkJzonJ30gb25jaGFuZ2U9InNhdmVDaGVjaygnJHtrZXl9Jyx0aGlzLmNoZWNrZWQpIiAvPgorICAgICAgICAgIDxsYWJlbCBmb3I9ImNoay0ke2tleX0iPiR7aXRlbX08L2xhYmVsPgorICAgICAgICA8L2Rpdj5gOworICAgICAgfSkuam9pbignJyl9CisgICAgPC9kaXY+YCkuam9pbignJyk7Cit9CisKK2Z1bmN0aW9uIHNhdmVDaGVjayhrZXksdmFsKXsKKyAgdHJ5eworICAgIGNvbnN0IHM9c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY2hlY2tsaXN0Jyk7CisgICAgY29uc3QgZGF0YT1zP0pTT04ucGFyc2Uocyk6e307CisgICAgZGF0YVtrZXldPXZhbDsKKyAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdjaGVja2xpc3QnLEpTT04uc3RyaW5naWZ5KGRhdGEpKTsKKyAgfWNhdGNoKGUpe30KK30KKworZnVuY3Rpb24gcmVuZGVyVGFnQ2xvdWQoKXsKKyAgY29uc3QgdGFncz1bJ0JhbmtpbmcnLCdIZWFsdGggSW5zdXJhbmNlJywnVGV1ZGF0IFplaHV0JywnS3VwYXQgSG9saW0nLCdUYXgnLCdBcm5vbmEnLCdCaXR1YWNoIExldW1pJywnVWxwYW4nLCdJbnRlcm5ldCcsJ1Bob25lJywnSG91c2luZycsJ0RyaXZpbmcgTGljZW5jZScsJ1NjaG9vbCcsJ0VtcGxveW1lbnQnLCdNaXNyYWQgSGFwbmltJ107CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YWctY2xvdWQnKS5pbm5lckhUTUw9dGFncy5tYXAodD0+YDxzcGFuIGNsYXNzPSJ0YWctY2xvdWQtaXRlbSIgb25jbGljaz0ic2VhcmNoVGFnKCcke3R9JykiPiR7dH08L3NwYW4+YCkuam9pbignJyk7Cit9CisKK2Z1bmN0aW9uIHNlYXJjaFRhZyh0KXsKKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlYXJjaC1pbnB1dCcpLnZhbHVlPXQ7CisgIGRvU2VhcmNoKCk7Cit9CisKK2Z1bmN0aW9uIGRvU2VhcmNoKCl7CisgIGNvbnN0IHRlcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoLWlucHV0JykudmFsdWUudG9Mb3dlckNhc2UoKS50cmltKCk7CisgIGlmKCF0ZXJtKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoLXJlc3VsdHMnKS5pbm5lckhUTUw9Jyc7cmV0dXJuO30KKyAgY29uc3QgcmVzdWx0cyA9IHF1ZXN0aW9ucy5maWx0ZXIocT0+CisgICAgcS50aXRsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pfHwKKyAgICBxLmJvZHkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKXx8CisgICAgcS5hbnN3ZXJzLnNvbWUoYT0+YS5ib2R5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSkpfHwKKyAgICAoQ0FURUdPUklFUy5maW5kKGM9PmMuaWQ9PT1xLmNhdCk/Lm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSkKKyAgKTsKKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlYXJjaC1yZXN1bHRzJykuaW5uZXJIVE1MID0gcmVzdWx0cy5sZW5ndGgKKyAgICA/IGA8cCBzdHlsZT0iZm9udC1zaXplOjAuODJyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MTZweCI+JHtyZXN1bHRzLmxlbmd0aH0gcmVzdWx0JHtyZXN1bHRzLmxlbmd0aCE9PTE/J3MnOicnfSBmb3IgIjxzdHJvbmc+JHt0ZXJtfTwvc3Ryb25nPiI8L3A+YCtyZXN1bHRzLm1hcChxPT5xQ2FyZChxLCdzZWFyY2gnKSkuam9pbignJykKKyAgICA6IGA8ZGl2IGNsYXNzPSJlbXB0eS1zdGF0ZSI+PGRpdiBjbGFzcz0iaWNvbiI+8J+UjTwvZGl2PjxwPk5vIHJlc3VsdHMgZm91bmQgZm9yICI8c3Ryb25nPiR7dGVybX08L3N0cm9uZz4iLiBUcnkgYSBkaWZmZXJlbnQga2V5d29yZCBvciA8YSBocmVmPSIjIiBvbmNsaWNrPSJzaG93UGFnZSgnZm9ydW0nKTtyZXR1cm4gZmFsc2U7IiBzdHlsZT0iY29sb3I6dmFyKC0tYmx1ZSkiPmFzayBhIHF1ZXN0aW9uPC9hPiE8L3A+PC9kaXY+YDsKK30KKworZnVuY3Rpb24gbGFuZ0ZsYWcoY29kZSl7cmV0dXJuIChMQU5HUy5maW5kKGw9PmwuY29kZT09PWNvZGUpfHx7ZmxhZzon8J+MkCd9KS5mbGFnO30KK2Z1bmN0aW9uIGxhbmdOYW1lKGNvZGUpe3JldHVybiAoTEFOR1MuZmluZChsPT5sLmNvZGU9PT1jb2RlKXx8e25hbWU6Y29kZX0pLm5hbWU7fQorZnVuY3Rpb24gbGFuZ05hdGl2ZShjb2RlKXtyZXR1cm4gKExBTkdTLmZpbmQobD0+bC5jb2RlPT09Y29kZSl8fHtuYXRpdmU6Y29kZX0pLm5hdGl2ZTt9CitmdW5jdGlvbiBsYW5nQmFkZ2UoaXRlbUxhbmcpeworICBjb25zdCB0cmFuc2xhdGVkID0gaXRlbUxhbmcgJiYgaXRlbUxhbmchPT1jdXJyZW50TGFuZzsKKyAgaWYoIWl0ZW1MYW5nKSByZXR1cm4gJyc7CisgIHJldHVybiBgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTowLjcycmVtO2NvbG9yOnZhcigtLW11dGVkKTtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4O21hcmdpbi10b3A6NHB4Ij4KKyAgICBPcmlnaW5hbGx5IGluICR7bGFuZ05hdGl2ZShpdGVtTGFuZyl9JHt0cmFuc2xhdGVkPycgwrcgPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLWJsdWUpO2ZvbnQtd2VpZ2h0OjYwMCI+8J+UhCBBdXRvLXRyYW5zbGF0ZWQ8L3NwYW4+JzonJ30KKyAgPC9zcGFuPmA7Cit9CitmdW5jdGlvbiBvcGVuTGFuZ01vZGFsKCl7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYW5nLW1vZGFsJykuY2xhc3NMaXN0LmFkZCgnb3BlbicpOworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFuZy1ncmlkJykuaW5uZXJIVE1MPUxBTkdTLm1hcChsPT5gPGRpdiBjbGFzcz0ibGFuZy1vcHRpb24gJHtsLmNvZGU9PT1jdXJyZW50TGFuZz8nYWN0aXZlJzonJ30iIG9uY2xpY2s9InNlbGVjdExhbmcoJyR7bC5jb2RlfScsdGhpcykiPiR7bC5uYXRpdmV9PC9kaXY+YCkuam9pbignJyk7Cit9CitmdW5jdGlvbiBjbG9zZUxhbmdNb2RhbCgpe2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYW5nLW1vZGFsJykuY2xhc3NMaXN0LnJlbW92ZSgnb3BlbicpO30KK2Z1bmN0aW9uIHNlbGVjdExhbmcoY29kZSxlbCl7CisgIGN1cnJlbnRMYW5nPWNvZGU7CisgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5sYW5nLW9wdGlvbicpLmZvckVhY2goeD0+eC5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKSk7CisgIGVsLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOworICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubGFuZy1idG4nKS50ZXh0Q29udGVudD1sYW5nRmxhZyhjb2RlKTsKKyAgc2V0VGltZW91dCgoKT0+e2Nsb3NlTGFuZ01vZGFsKCk7c2hvd1RvYXN0KCdMYW5ndWFnZSBzZXQgdG8gJytsYW5nTmFtZShjb2RlKSsnIOKAlCBhdXRvLXRyYW5zbGF0aW9uIGFjdGl2ZSDwn4yQJyk7fSwzMDApOworfQorCitmdW5jdGlvbiBzZWxlY3RBbW91bnQoYnRuLHYpeworICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuYW1vdW50LWJ0bicpLmZvckVhY2goYj0+Yi5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpKTsKKyAgYnRuLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJyk7Cit9CisKK2Z1bmN0aW9uIHNob3dUb2FzdChtc2cpeworICBjb25zdCB0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2FzdCcpOworICB0LnRleHRDb250ZW50PW1zZzt0LmNsYXNzTGlzdC5hZGQoJ3Nob3cnKTsKKyAgc2V0VGltZW91dCgoKT0+dC5jbGFzc0xpc3QucmVtb3ZlKCdzaG93JyksMzAwMCk7Cit9CitmdW5jdGlvbiBlbXB0eVN0YXRlKG1zZyl7cmV0dXJuIGA8ZGl2IGNsYXNzPSJlbXB0eS1zdGF0ZSI+PGRpdiBjbGFzcz0iaWNvbiI+8J+SrDwvZGl2PjxwPiR7bXNnfTwvcD48L2Rpdj5gO30KKworLy8gSW5pdAorcmVuZGVySG9tZUNhdHMoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPjIAOsrUAjwhRE9DVFlQRSBodG1sPgo8aHRtbCBsYW5nPSJlbiI+CjxoZWFkPgo8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIj4KPHRpdGxlPk9saW1BbnN3ZXJzLmNvbTwvdGl0bGU+CjxzdHlsZT4KICA6cm9vdCB7CiAgICAtLWJsdWU6IzFhNWZhODstLWJsdWUtbGlnaHQ6I2U4ZjBmYjstLWdvbGQ6I2YwYjQyOTstLWdvbGQtbGlnaHQ6I2ZmZjhlNzsKICAgIC0tZ3JlZW46IzFhOGE0YTstLXJlZDojYzAzOTJiOy0tZ3JheTojZjRmNmY5Oy0tdGV4dDojMWExYTJlOy0tbXV0ZWQ6IzZiNzI4MDsKICAgIC0tYm9yZGVyOiNkZGUzZWQ7LS13aGl0ZTojZmZmZmZmOy0tc2hhZG93OjAgMnB4IDEycHggcmdiYSgwLDAsMCwwLjA4KTsKICB9CiAgKntib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luOjA7cGFkZGluZzowfQogIGJvZHl7Zm9udC1mYW1pbHk6J1NlZ29lIFVJJyxzeXN0ZW0tdWksc2Fucy1zZXJpZjtjb2xvcjp2YXIoLS10ZXh0KTtiYWNrZ3JvdW5kOnZhcigtLWdyYXkpO21pbi1oZWlnaHQ6MTAwdmh9CiAgLyogTkFWICovCiAgbmF2e2JhY2tncm91bmQ6dmFyKC0tYmx1ZSk7Y29sb3I6I2ZmZjtwYWRkaW5nOjAgMjRweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2hlaWdodDo2MHB4O3Bvc2l0aW9uOnN0aWNreTt0b3A6MDt6LWluZGV4OjEwMDtib3gtc2hhZG93OjAgMnB4IDhweCByZ2JhKDAsMCwwLDAuMil9CiAgLm5hdi1sb2dve2ZvbnQtc2l6ZToxLjQ1cmVtO2ZvbnQtd2VpZ2h0OjgwMDtjdXJzb3I6cG9pbnRlcjtsZXR0ZXItc3BhY2luZzotMC41cHg7bGluZS1oZWlnaHQ6MS4xO21hcmdpbi1yaWdodDoxMnB4O2ZsZXgtc2hyaW5rOjB9CiAgLm5hdi1sb2dvIHNwYW57ZGlzcGxheTpibG9jaztmb250LXNpemU6MC43OHJlbTtmb250LXdlaWdodDo1MDA7bGV0dGVyLXNwYWNpbmc6MS41cHg7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO29wYWNpdHk6MC44NX0KICAubmF2LWxvZ286aG92ZXJ7b3BhY2l0eTowLjg1fQogIC5uYXYtbG9nbyBzcGFue2NvbG9yOnZhcigtLWdvbGQpfQogIC5uYXYtbGlua3N7ZGlzcGxheTpmbGV4O2dhcDo2cHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwfQogIC5uYXYtbGlua3MgYnV0dG9ue2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtjb2xvcjojZmZmO3BhZGRpbmc6NnB4IDEwcHg7Ym9yZGVyLXJhZGl1czo2cHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjAuODJyZW07Zm9udC13ZWlnaHQ6NTAwO3RyYW5zaXRpb246YmFja2dyb3VuZCAwLjJzfQogIC5uYXYtbGlua3MgYnV0dG9uOmhvdmVye2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwwLjE1KX0KICAubmF2LWxpbmtzIC5uYXYtZG9uYXRle2JhY2tncm91bmQ6dmFyKC0tZ29sZCk7Y29sb3I6dmFyKC0tdGV4dCk7Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6NnB4IDEycHg7Ym9yZGVyLXJhZGl1czo2cHh9CiAgLm5hdi1saW5rcyAubmF2LWRvbmF0ZTpob3ZlcntiYWNrZ3JvdW5kOiNlMGE4MDB9CiAgLmxhbmctYnRue2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwwLjE1KSFpbXBvcnRhbnQ7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMykhaW1wb3J0YW50O2ZvbnQtc2l6ZTowLjc4cmVtIWltcG9ydGFudH0KCiAgLyogUEFHRVMgKi8KICAucGFnZXtkaXNwbGF5Om5vbmU7bWF4LXdpZHRoOjExMDBweDttYXJnaW46MCBhdXRvO3BhZGRpbmc6MjhweCAyMHB4fQogIC5wYWdlLmFjdGl2ZXtkaXNwbGF5OmJsb2NrfQoKICAvKiBIT01FICovCiAgLmhlcm97YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHZhcigtLWJsdWUpIDAlLCMyNDcxYzggMTAwJSk7Y29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjE2cHg7cGFkZGluZzo0OHB4IDQwcHg7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luLWJvdHRvbTozMnB4fQogIC5oZXJvIGgxe2ZvbnQtc2l6ZToyLjRyZW07Zm9udC13ZWlnaHQ6ODAwO21hcmdpbi1ib3R0b206MTJweH0KICAuaGVybyBoMSBzcGFue2NvbG9yOnZhcigtLWdvbGQpfQogIC5oZXJvIHB7Zm9udC1zaXplOjEuMXJlbTtvcGFjaXR5OjAuOTI7bWF4LXdpZHRoOjYyMHB4O21hcmdpbjowIGF1dG8gMjRweDtsaW5lLWhlaWdodDoxLjZ9CiAgLmhlcm8tYnRuc3tkaXNwbGF5OmZsZXg7Z2FwOjEycHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LXdyYXA6d3JhcH0KICAuYnRue3BhZGRpbmc6MTJweCAyNHB4O2JvcmRlci1yYWRpdXM6OHB4O2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjk1cmVtO2ZvbnQtd2VpZ2h0OjcwMDt0cmFuc2l0aW9uOmFsbCAwLjJzfQogIC5idG4tcHJpbWFyeXtiYWNrZ3JvdW5kOnZhcigtLWdvbGQpO2NvbG9yOnZhcigtLXRleHQpfQogIC5idG4tcHJpbWFyeTpob3ZlcntiYWNrZ3JvdW5kOiNlMGE4MDA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCl9CiAgLmJ0bi1vdXRsaW5le2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6I2ZmZjtib3JkZXI6MnB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC42KX0KICAuYnRuLW91dGxpbmU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuMSl9CiAgLmhvdy1pdC13b3Jrc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpdCxtaW5tYXgoMjAwcHgsMWZyKSk7Z2FwOjIwcHg7bWFyZ2luLWJvdHRvbTozMnB4fQogIC5oaXctY2FyZHtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyNHB4O3RleHQtYWxpZ246Y2VudGVyO2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KX0KICAuaGl3LWljb257Zm9udC1zaXplOjJyZW07bWFyZ2luLWJvdHRvbToxMHB4fQogIC5oaXctY2FyZCBoM3tmb250LXNpemU6MXJlbTttYXJnaW4tYm90dG9tOjZweDtjb2xvcjp2YXIoLS1ibHVlKX0KICAuaGl3LWNhcmQgcHtmb250LXNpemU6MC44NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bGluZS1oZWlnaHQ6MS41fQogIC5zZWN0aW9uLXRpdGxle2ZvbnQtc2l6ZToxLjNyZW07Zm9udC13ZWlnaHQ6NzAwO21hcmdpbi1ib3R0b206MTZweDtjb2xvcjp2YXIoLS1ibHVlKX0KICAuY2F0ZWdvcnktZ3JpZHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpbGwsbWlubWF4KDE2MHB4LDFmcikpO2dhcDoxNHB4O21hcmdpbi1ib3R0b206MzJweH0KICAuY2F0LWNhcmR7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MThweCAxNHB4O3RleHQtYWxpZ246Y2VudGVyO2N1cnNvcjpwb2ludGVyO2JvcmRlcjoycHggc29saWQgdHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjphbGwgMC4ycztib3gtc2hhZG93OnZhcigtLXNoYWRvdyl9CiAgLmNhdC1jYXJkOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1ibHVlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KX0KICAuY2F0LWljb257Zm9udC1zaXplOjEuOHJlbTttYXJnaW4tYm90dG9tOjhweH0KICAuY2F0LWNhcmQgaDR7Zm9udC1zaXplOjAuODhyZW07Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLXRleHQpfQogIC5jYXQtY2FyZCBwe2ZvbnQtc2l6ZTowLjc1cmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tdG9wOjRweH0KICAuZG9uYXRlLWJhbm5lcntiYWNrZ3JvdW5kOnZhcigtLWdvbGQtbGlnaHQpO2JvcmRlcjoycHggc29saWQgdmFyKC0tZ29sZCk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjRweDt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tYm90dG9tOjMycHh9CiAgLmRvbmF0ZS1iYW5uZXIgaDN7Zm9udC1zaXplOjEuMXJlbTttYXJnaW4tYm90dG9tOjhweH0KICAuZG9uYXRlLWJhbm5lciBwe2ZvbnQtc2l6ZTowLjg4cmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tYm90dG9tOjE0cHh9CiAgLnRpcC1ib3h7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCNlOGY1ZTksI2YwZmFmNCk7Ym9yZGVyLWxlZnQ6NHB4IHNvbGlkIHZhcigtLWdyZWVuKTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxOHB4IDIwcHg7bWFyZ2luLWJvdHRvbTozMnB4fQogIC50aXAtYm94IC50aXAtbGFiZWx7Zm9udC1zaXplOjAuNzVyZW07Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLWdyZWVuKTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bGV0dGVyLXNwYWNpbmc6MXB4O21hcmdpbi1ib3R0b206NnB4fQogIC50aXAtYm94IHB7Zm9udC1zaXplOjAuOTJyZW07bGluZS1oZWlnaHQ6MS41fQoKICAvKiBGT1JVTSAvIENBVEVHT1JZICovCiAgLmZvcnVtLWhlYWRlcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO21hcmdpbi1ib3R0b206MjBweDtmbGV4LXdyYXA6Z2FwfQogIC5zb3J0LXNlbGVjdHtwYWRkaW5nOjhweCAxMnB4O2JvcmRlci1yYWRpdXM6OHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtmb250LXNpemU6MC44NXJlbTtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtjdXJzb3I6cG9pbnRlcjtjb2xvcjp2YXIoLS10ZXh0KX0KICAuYXNrLWJhcntiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyMHB4O2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KTttYXJnaW4tYm90dG9tOjI0cHh9CiAgLmFzay1iYXIgaDN7Zm9udC1zaXplOjFyZW07bWFyZ2luLWJvdHRvbToxMnB4O2NvbG9yOnZhcigtLWJsdWUpfQogIC5hc2stYmFyIGlucHV0LC5hc2stYmFyIHRleHRhcmVhLC5hc2stYmFyIHNlbGVjdHt3aWR0aDoxMDAlO3BhZGRpbmc6MTBweCAxNHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjhweDtmb250LXNpemU6MC45cmVtO21hcmdpbi1ib3R0b206MTBweDtmb250LWZhbWlseTppbmhlcml0O2NvbG9yOnZhcigtLXRleHQpfQogIC5hc2stYmFyIHRleHRhcmVhe3Jlc2l6ZTp2ZXJ0aWNhbDttaW4taGVpZ2h0OjgwcHh9CiAgLnRhZy1pbnB1dHtkaXNwbGF5OmZsZXg7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjEwcHh9CiAgLnRhZ3tiYWNrZ3JvdW5kOnZhcigtLWJsdWUtbGlnaHQpO2NvbG9yOnZhcigtLWJsdWUpO3BhZGRpbmc6NHB4IDEwcHg7Ym9yZGVyLXJhZGl1czoyMHB4O2ZvbnQtc2l6ZTowLjc4cmVtO2ZvbnQtd2VpZ2h0OjYwMDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHh9CiAgLnRhZyAucmVtb3Zle2NvbG9yOnZhcigtLXJlZCk7Zm9udC13ZWlnaHQ6NzAwfQogIC5xLWNhcmR7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjBweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWFyZ2luLWJvdHRvbToxNnB4O2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246Ym94LXNoYWRvdyAwLjJzfQogIC5xLWNhcmQ6aG92ZXJ7Ym94LXNoYWRvdzowIDRweCAyMHB4IHJnYmEoMCwwLDAsMC4xMil9CiAgLnEtbWV0YXtkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206OHB4fQogIC5xLWNhdC1iYWRnZXtiYWNrZ3JvdW5kOnZhcigtLWJsdWUtbGlnaHQpO2NvbG9yOnZhcigtLWJsdWUpO2ZvbnQtc2l6ZTowLjcycmVtO2ZvbnQtd2VpZ2h0OjcwMDtwYWRkaW5nOjNweCA5cHg7Ym9yZGVyLXJhZGl1czoxMnB4fQogIC5xLWRhdGV7Zm9udC1zaXplOjAuNzVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpfQogIC5xLWF1dGhvcntmb250LXNpemU6MC43NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCl9CiAgLnEtdGl0bGV7Zm9udC1zaXplOjEuMDVyZW07Zm9udC13ZWlnaHQ6NzAwO21hcmdpbi1ib3R0b206NnB4fQogIC5xLXByZXZpZXd7Zm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO2xpbmUtaGVpZ2h0OjEuNTttYXJnaW4tYm90dG9tOjEwcHh9CiAgLnEtc3RhdHN7ZGlzcGxheTpmbGV4O2dhcDoxNHB4O2ZvbnQtc2l6ZTowLjhyZW07Y29sb3I6dmFyKC0tbXV0ZWQpfQogIC5xLXN0YXRzIHNwYW57ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4fQogIC5mZWF0dXJlZC1iYWRnZXtiYWNrZ3JvdW5kOnZhcigtLWdvbGQpO2NvbG9yOnZhcigtLXRleHQpO2ZvbnQtc2l6ZTowLjdyZW07Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6MnB4IDhweDtib3JkZXItcmFkaXVzOjEwcHg7bWFyZ2luLWxlZnQ6OHB4fQoKICAvKiBRVUVTVElPTiBERVRBSUwgKi8KICAuYmFjay1idG57YmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO2NvbG9yOnZhcigtLWJsdWUpO2ZvbnQtc2l6ZTowLjlyZW07Y3Vyc29yOnBvaW50ZXI7bWFyZ2luLWJvdHRvbToxNnB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDtmb250LXdlaWdodDo2MDB9CiAgLnEtZnVsbHtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyNHB4O2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KTttYXJnaW4tYm90dG9tOjI0cHh9CiAgLnEtZnVsbCBoMntmb250LXNpemU6MS4zcmVtO21hcmdpbi1ib3R0b206MTJweH0KICAucS1mdWxsIC5ib2R5e2ZvbnQtc2l6ZTowLjkycmVtO2xpbmUtaGVpZ2h0OjEuNzttYXJnaW4tYm90dG9tOjE2cHh9CiAgLnRhZ3Mtcm93e2Rpc3BsYXk6ZmxleDtnYXA6OHB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MTZweH0KICAuYW5zd2Vycy1zZWN0aW9uIGgze2ZvbnQtc2l6ZToxLjFyZW07Zm9udC13ZWlnaHQ6NzAwO21hcmdpbi1ib3R0b206MTZweDtjb2xvcjp2YXIoLS1ibHVlKX0KICAuYW5zd2VyLWNhcmR7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MThweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWFyZ2luLWJvdHRvbToxNHB4O2JvcmRlci1sZWZ0OjRweCBzb2xpZCB0cmFuc3BhcmVudH0KICAuYW5zd2VyLWNhcmQudG9wLWFuc3dlcntib3JkZXItbGVmdC1jb2xvcjp2YXIoLS1nb2xkKX0KICAudG9wLWFuc3dlci1sYWJlbHtmb250LXNpemU6MC43MnJlbTtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tZ29sZCk7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2xldHRlci1zcGFjaW5nOjAuOHB4O21hcmdpbi1ib3R0b206NnB4fQogIC5hbnN3ZXItYm9keXtmb250LXNpemU6MC45cmVtO2xpbmUtaGVpZ2h0OjEuNzttYXJnaW4tYm90dG9tOjEycHh9CiAgLmFuc3dlci1mb290ZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4fQogIC5hbnN3ZXItbWV0YXtmb250LXNpemU6MC43OHJlbTtjb2xvcjp2YXIoLS1tdXRlZCl9CiAgLnZvdGUtYnRuc3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHh9CiAgLnZvdGUtYnRue2JhY2tncm91bmQ6dmFyKC0tZ3JheSk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6NXB4IDEycHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjAuODJyZW07Zm9udC13ZWlnaHQ6NjAwO3RyYW5zaXRpb246YWxsIDAuMnM7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4fQogIC52b3RlLWJ0bi5saWtlZHtiYWNrZ3JvdW5kOnZhcigtLWJsdWUtbGlnaHQpO2JvcmRlci1jb2xvcjp2YXIoLS1ibHVlKTtjb2xvcjp2YXIoLS1ibHVlKX0KICAudm90ZS1idG46aG92ZXJ7dHJhbnNmb3JtOnNjYWxlKDEuMDUpfQogIC5mbGFnLWJ0bntiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Y29sb3I6dmFyKC0tbXV0ZWQpO2ZvbnQtc2l6ZTowLjc4cmVtO2N1cnNvcjpwb2ludGVyfQogIC5mbGFnLWJ0bjpob3Zlcntjb2xvcjp2YXIoLS1yZWQpfQogIC5hZGQtYW5zd2Vye2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjIwcHg7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpO21hcmdpbi10b3A6MjRweH0KICAuYWRkLWFuc3dlciBoNHttYXJnaW4tYm90dG9tOjEycHg7Y29sb3I6dmFyKC0tYmx1ZSl9CiAgLmFkZC1hbnN3ZXIgdGV4dGFyZWF7d2lkdGg6MTAwJTtwYWRkaW5nOjEycHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4O21pbi1oZWlnaHQ6MTAwcHg7cmVzaXplOnZlcnRpY2FsO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOjAuOXJlbTttYXJnaW4tYm90dG9tOjEwcHh9CiAgLmFkZC1hbnN3ZXIgaW5wdXR7d2lkdGg6MTAwJTtwYWRkaW5nOjEwcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4O2ZvbnQtc2l6ZTowLjg4cmVtO21hcmdpbi1ib3R0b206MTBweDtmb250LWZhbWlseTppbmhlcml0fQoKICAvKiBCRVNUIE9GICovCiAgLmJlc3Qtb2YtaGVhZGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZyx2YXIoLS1nb2xkLWxpZ2h0KSwjZmZmZGU3KTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyNHB4O21hcmdpbi1ib3R0b206MjRweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdvbGQpO3RleHQtYWxpZ246Y2VudGVyfQogIC5iZXN0LW9mLWhlYWRlciBoMntjb2xvcjp2YXIoLS10ZXh0KTttYXJnaW4tYm90dG9tOjZweH0KICAuYmVzdC1vZi1oZWFkZXIgcHtjb2xvcjp2YXIoLS1tdXRlZCk7Zm9udC1zaXplOjAuODhyZW19CiAgLmZpbHRlci1yb3d7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MjBweDthbGlnbi1pdGVtczpjZW50ZXJ9CiAgLmZpbHRlci1idG57cGFkZGluZzo2cHggMTRweDtib3JkZXItcmFkaXVzOjIwcHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjgycmVtO2ZvbnQtd2VpZ2h0OjYwMDt0cmFuc2l0aW9uOmFsbCAwLjJzfQogIC5maWx0ZXItYnRuLmFjdGl2ZXtiYWNrZ3JvdW5kOnZhcigtLWJsdWUpO2NvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOnZhcigtLWJsdWUpfQoKICAvKiBDSEVDS0xJU1QgKi8KICAuY2hlY2tsaXN0LWludHJve2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZywjZThmNWU5LCNmMGZhZjQpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjI0cHg7bWFyZ2luLWJvdHRvbToyNHB4O2JvcmRlcjoycHggc29saWQgdmFyKC0tZ3JlZW4pO3RleHQtYWxpZ246Y2VudGVyfQogIC5jaGVja2xpc3QtaW50cm8gaDJ7Y29sb3I6dmFyKC0tZ3JlZW4pO21hcmdpbi1ib3R0b206NnB4fQogIC5jaGVja2xpc3Qtc2VjdGlvbntiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyMHB4O2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KTttYXJnaW4tYm90dG9tOjE2cHh9CiAgLmNoZWNrbGlzdC1zZWN0aW9uIGgze2ZvbnQtc2l6ZToxcmVtO2NvbG9yOnZhcigtLWJsdWUpO21hcmdpbi1ib3R0b206MTJweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHh9CiAgLmNoZWNrbGlzdC1pdGVte2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDoxMnB4O3BhZGRpbmc6MTBweCAwO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWJvcmRlcil9CiAgLmNoZWNrbGlzdC1pdGVtOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbTpub25lfQogIC5jaGVja2xpc3QtaXRlbSBpbnB1dFt0eXBlPWNoZWNrYm94XXt3aWR0aDoxOHB4O2hlaWdodDoxOHB4O21hcmdpbi10b3A6MnB4O2N1cnNvcjpwb2ludGVyO2FjY2VudC1jb2xvcjp2YXIoLS1ibHVlKX0KICAuY2hlY2tsaXN0LWl0ZW0gbGFiZWx7Zm9udC1zaXplOjAuOXJlbTtsaW5lLWhlaWdodDoxLjU7Y3Vyc29yOnBvaW50ZXI7ZmxleDoxfQogIC5jaGVja2xpc3QtaXRlbSAubGluay1idG57Zm9udC1zaXplOjAuNzVyZW07Y29sb3I6dmFyKC0tYmx1ZSk7Y3Vyc29yOnBvaW50ZXI7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7bWFyZ2luLWxlZnQ6YXV0bzt3aGl0ZS1zcGFjZTpub3dyYXB9CgogIC8qIFNFQVJDSCAqLwogIC5zZWFyY2gtYmFyLWJpZ3tkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7bWFyZ2luLWJvdHRvbToyNHB4fQogIC5zZWFyY2gtYmFyLWJpZyBpbnB1dHtmbGV4OjE7cGFkZGluZzoxNHB4IDE4cHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6MTBweDtmb250LXNpemU6MXJlbTtmb250LWZhbWlseTppbmhlcml0fQogIC5zZWFyY2gtYmFyLWJpZyBpbnB1dDpmb2N1c3tvdXRsaW5lOm5vbmU7Ym9yZGVyLWNvbG9yOnZhcigtLWJsdWUpfQogIC5zZWFyY2gtYmFyLWJpZyBidXR0b257YmFja2dyb3VuZDp2YXIoLS1ibHVlKTtjb2xvcjojZmZmO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjE0cHggMjRweDtmb250LXNpemU6MXJlbTtmb250LXdlaWdodDo3MDA7Y3Vyc29yOnBvaW50ZXJ9CiAgLnRhZy1jbG91ZHtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjhweDttYXJnaW4tYm90dG9tOjI0cHh9CiAgLnRhZy1jbG91ZC1pdGVte2JhY2tncm91bmQ6dmFyKC0tYmx1ZS1saWdodCk7Y29sb3I6dmFyKC0tYmx1ZSk7cGFkZGluZzo2cHggMTRweDtib3JkZXItcmFkaXVzOjIwcHg7Zm9udC1zaXplOjAuODJyZW07Zm9udC13ZWlnaHQ6NjAwO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246YWxsIDAuMnN9CiAgLnRhZy1jbG91ZC1pdGVtOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYmx1ZSk7Y29sb3I6I2ZmZn0KCiAgLyogRE9OQVRFICovCiAgLmRvbmF0ZS1wYWdle3RleHQtYWxpZ246Y2VudGVyO21heC13aWR0aDo2MDBweDttYXJnaW46MCBhdXRvfQogIC5kb25hdGUtaGVyb3tiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsdmFyKC0tZ29sZC1saWdodCksI2ZmZjhlMSk7Ym9yZGVyLXJhZGl1czoxNnB4O3BhZGRpbmc6NDBweDttYXJnaW4tYm90dG9tOjI0cHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1nb2xkKX0KICAuZG9uYXRlLWhlcm8gaDJ7Zm9udC1zaXplOjEuOHJlbTttYXJnaW4tYm90dG9tOjEycHh9CiAgLmRvbmF0ZS1oZXJvIHB7Y29sb3I6dmFyKC0tbXV0ZWQpO2xpbmUtaGVpZ2h0OjEuNzttYXJnaW4tYm90dG9tOjIwcHh9CiAgLmRvbmF0ZS1hbW91bnRze2Rpc3BsYXk6ZmxleDtnYXA6MTBweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MjBweH0KICAuYW1vdW50LWJ0bntwYWRkaW5nOjEwcHggMjBweDtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdvbGQpO2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjlyZW07Zm9udC13ZWlnaHQ6NzAwO3RyYW5zaXRpb246YWxsIDAuMnN9CiAgLmFtb3VudC1idG4uc2VsZWN0ZWQsLmFtb3VudC1idG46aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1nb2xkKTtjb2xvcjp2YXIoLS10ZXh0KX0KICAuZG9uYXRlLWJ0bi1iaWd7YmFja2dyb3VuZDp2YXIoLS1nb2xkKTtjb2xvcjp2YXIoLS10ZXh0KTtib3JkZXI6bm9uZTtwYWRkaW5nOjE0cHggNDBweDtib3JkZXItcmFkaXVzOjEwcHg7Zm9udC1zaXplOjEuMXJlbTtmb250LXdlaWdodDo4MDA7Y3Vyc29yOnBvaW50ZXI7d2lkdGg6MTAwJTttYXJnaW4tYm90dG9tOjEycHh9CgogIC8qIExBTkcgTU9EQUwgKi8KICAubW9kYWwtb3ZlcmxheXtkaXNwbGF5Om5vbmU7cG9zaXRpb246Zml4ZWQ7aW5zZXQ6MDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC41KTt6LWluZGV4OjIwMDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0KICAubW9kYWwtb3ZlcmxheS5vcGVue2Rpc3BsYXk6ZmxleH0KICAubW9kYWx7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxNnB4O3BhZGRpbmc6MjhweDttYXgtd2lkdGg6NDIwcHg7d2lkdGg6OTAlO2JveC1zaGFkb3c6MCA4cHggNDBweCByZ2JhKDAsMCwwLDAuMil9CiAgLm1vZGFsIGgze21hcmdpbi1ib3R0b206OHB4O2ZvbnQtc2l6ZToxLjJyZW19CiAgLm1vZGFsIHB7Zm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MTZweDtsaW5lLWhlaWdodDoxLjV9CiAgLmxhbmctZ3JpZHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjhweDttYXJnaW4tYm90dG9tOjE2cHh9CiAgLmxhbmctb3B0aW9ue3BhZGRpbmc6MTBweCAxMnB4O2JvcmRlcjoycHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjhweDtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MC45MnJlbTtmb250LXdlaWdodDo2MDA7dGV4dC1hbGlnbjpjZW50ZXI7dHJhbnNpdGlvbjphbGwgMC4ycztsaW5lLWhlaWdodDoxLjQ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4fQogIC5sYW5nLW9wdGlvbjpob3ZlciwubGFuZy1vcHRpb24uYWN0aXZle2JvcmRlci1jb2xvcjp2YXIoLS1ibHVlKTtiYWNrZ3JvdW5kOnZhcigtLWJsdWUtbGlnaHQpO2NvbG9yOnZhcigtLWJsdWUpO3RyYW5zZm9ybTpzY2FsZSgxLjAzKX0KICAubW9kYWwtY2xvc2V7YmFja2dyb3VuZDp2YXIoLS1ncmF5KTtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjEwcHggMjBweDtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MC45cmVtO2ZvbnQtd2VpZ2h0OjYwMDt3aWR0aDoxMDAlfQogIC50cmFuc2xhdGlvbi1ub3RpY2V7YmFja2dyb3VuZDojZmZmM2NkO2JvcmRlcjoxcHggc29saWQgI2ZmYzEwNztib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjEwcHggMTRweDtmb250LXNpemU6MC44cmVtO2NvbG9yOiM4NTY0MDQ7bWFyZ2luLWJvdHRvbToxNnB4fQoKICAvKiBUT0FTVCAqLwogIC50b2FzdHtwb3NpdGlvbjpmaXhlZDtib3R0b206MjRweDtyaWdodDoyNHB4O2JhY2tncm91bmQ6dmFyKC0tZ3JlZW4pO2NvbG9yOiNmZmY7cGFkZGluZzoxMnB4IDIwcHg7Ym9yZGVyLXJhZGl1czoxMHB4O2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MC45cmVtO3otaW5kZXg6MzAwO29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxMHB4KTt0cmFuc2l0aW9uOmFsbCAwLjNzO3BvaW50ZXItZXZlbnRzOm5vbmV9CiAgLnRvYXN0LnNob3d7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfQoKICAuZW1wdHktc3RhdGV7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzo0MHB4O2NvbG9yOnZhcigtLW11dGVkKX0KICAuZW1wdHktc3RhdGUgLmljb257Zm9udC1zaXplOjNyZW07bWFyZ2luLWJvdHRvbToxMHB4fQogIC5kaXZpZGVye2hlaWdodDoxcHg7YmFja2dyb3VuZDp2YXIoLS1ib3JkZXIpO21hcmdpbjoyMHB4IDB9CiAgQG1lZGlhKG1heC13aWR0aDo2MDBweCl7Lmhlcm8gaDF7Zm9udC1zaXplOjEuNnJlbX0uaGVyb3twYWRkaW5nOjI4cHggMjBweH0uY2F0ZWdvcnktZ3JpZHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KGF1dG8tZmlsbCxtaW5tYXgoMTMwcHgsMWZyKSl9fQo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoKPG5hdj4KICA8ZGl2IGNsYXNzPSJuYXYtbG9nbyIgb25jbGljaz0ic2hvd1BhZ2UoJ2hvbWUnKSI+T2xpbTxzcGFuPkFuc3dlcnM8L3NwYW4+PC9kaXY+CiAgPGRpdiBjbGFzcz0ibmF2LWxpbmtzIj4KICAgIDxidXR0b24gb25jbGljaz0ic2hvd1BhZ2UoJ2hvbWUnKSI+8J+PoCBIb21lPC9idXR0b24+CiAgICA8YnV0dG9uIG9uY2xpY2s9InNob3dQYWdlKCdmb3J1bScpIj7wn5ejIEZvcnVtPC9idXR0b24+CiAgICA8YnV0dG9uIG9uY2xpY2s9InNob3dQYWdlKCdiZXN0b2YnKSI+4q2QIEJlc3QgT2Y8L2J1dHRvbj4KICAgIDxidXR0b24gb25jbGljaz0ic2hvd1BhZ2UoJ2NoZWNrbGlzdCcpIj7inIUgQ2hlY2tsaXN0PC9idXR0b24+CiAgICA8YnV0dG9uIG9uY2xpY2s9InNob3dQYWdlKCdjYXRzJykiPvCfk4IgQ2F0ZWdvcmllczwvYnV0dG9uPgogICAgPGJ1dHRvbiBvbmNsaWNrPSJzaG93UGFnZSgnc2VhcmNoJykiPvCflI0gU2VhcmNoPC9idXR0b24+CiAgICA8YnV0dG9uIG9uY2xpY2s9InNob3dQYWdlKCdkb25hdGUnKSIgY2xhc3M9Im5hdi1kb25hdGUiPvCfkpsgRG9uYXRlPC9idXR0b24+CiAgICA8YnV0dG9uIGNsYXNzPSJsYW5nLWJ0biIgb25jbGljaz0ib3BlbkxhbmdNb2RhbCgpIj7wn4es8J+HpzwvYnV0dG9uPgogIDwvZGl2Pgo8L25hdj4KCjwhLS0gSE9NRSAtLT4KPGRpdiBjbGFzcz0icGFnZSBhY3RpdmUiIGlkPSJwYWdlLWhvbWUiPgogIDxkaXYgY2xhc3M9Imhlcm8iPgogICAgPGgxPldlbGNvbWUgdG8gPHNwYW4+T2xpbUFuc3dlcnM8L3NwYW4+PC9oMT4KICAgIDxwPllvdXIgY29tbXVuaXR5LXBvd2VyZWQgZ3VpZGUgdG8gbmF2aWdhdGluZyBsaWZlIGluIElzcmFlbC4gQXNrIHF1ZXN0aW9ucywgc2hhcmUga25vd2xlZGdlLCBhbmQgaGVscCBmZWxsb3cgb2xpbSBmaW5kIHRoZWlyIGZlZXQgZmFzdGVyLjwvcD4KICAgIDxkaXYgY2xhc3M9Imhlcm8tYnRucyI+CiAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgb25jbGljaz0ic2hvd1BhZ2UoJ2ZvcnVtJykiPkFzayBhIFF1ZXN0aW9uPC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tb3V0bGluZSIgb25jbGljaz0ic2hvd1BhZ2UoJ2Jlc3RvZicpIj7irZAgQnJvd3NlIFRvcCBBbnN3ZXJzPC9idXR0b24+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0idGlwLWJveCI+CiAgICA8ZGl2IGNsYXNzPSJ0aXAtbGFiZWwiPvCfkqEgVGlwIG9mIHRoZSBEYXk8L2Rpdj4KICAgIDxwIGlkPSJ0aXAtdGV4dCI+V2hlbiBvcGVuaW5nIGEgYmFuayBhY2NvdW50IGluIElzcmFlbCwgYnJpbmcgeW91ciBUZXVkYXQgT2xlaCwgcGFzc3BvcnQsIGFuZCBwcm9vZiBvZiBhZGRyZXNzLiBCYW5rIEhhcG9hbGltIGFuZCBCYW5rIExldW1pIGJvdGggaGF2ZSBkZWRpY2F0ZWQgT2xpbSBkZXBhcnRtZW50cyB3aXRoIEVuZ2xpc2gtc3BlYWtpbmcgc3RhZmYuPC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5Ib3cgSXQgV29ya3M8L2Rpdj4KICA8ZGl2IGNsYXNzPSJob3ctaXQtd29ya3MiPgogICAgPGRpdiBjbGFzcz0iaGl3LWNhcmQiPjxkaXYgY2xhc3M9Imhpdy1pY29uIj7inZM8L2Rpdj48aDM+QXNrPC9oMz48cD5Qb3N0IHlvdXIgcXVlc3Rpb24gaW4gdGhlIHJlbGV2YW50IGNhdGVnb3J5LiBCZSBhcyBkZXRhaWxlZCBhcyB5b3UgbGlrZS48L3A+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJoaXctY2FyZCI+PGRpdiBjbGFzcz0iaGl3LWljb24iPvCfkqw8L2Rpdj48aDM+QW5zd2VyPC9oMz48cD5UaGUgY29tbXVuaXR5IHJlc3BvbmRzIHdpdGggYWR2aWNlLCB0aXBzLCBhbmQgcGVyc29uYWwgZXhwZXJpZW5jZS48L3A+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJoaXctY2FyZCI+PGRpdiBjbGFzcz0iaGl3LWljb24iPvCfkY08L2Rpdj48aDM+UmF0ZTwvaDM+PHA+VXB2b3RlIHRoZSBtb3N0IGhlbHBmdWwgYW5zd2VycyBzbyB0aGV5IHJpc2UgdG8gdGhlIHRvcCBmb3IgZXZlcnlvbmUuPC9wPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iaGl3LWNhcmQiPjxkaXYgY2xhc3M9Imhpdy1pY29uIj7wn4yfPC9kaXY+PGgzPkRpc2NvdmVyPC9oMz48cD5Ccm93c2UgdG9wLXJhdGVkIGNvbnRlbnQgb3Igc2VhcmNoIGJ5IGtleXdvcmQgdG8gZmluZCB3aGF0IHlvdSBuZWVkIGZhc3QuPC9wPjwvZGl2PgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5Ccm93c2UgYnkgQ2F0ZWdvcnk8L2Rpdj4KICA8ZGl2IGNsYXNzPSJjYXRlZ29yeS1ncmlkIiBpZD0iaG9tZS1jYXRzIj48L2Rpdj4KCiAgPGRpdiBjbGFzcz0iZG9uYXRlLWJhbm5lciI+CiAgICA8aDM+8J+SmyBPbGltQW5zd2VycyBpcyBmcmVlIGZvciBldmVyeW9uZTwvaDM+CiAgICA8cD5UaGlzIHNpdGUgaXMgY29tbXVuaXR5LXJ1bi4gSWYgaXQgaGVscGVkIHlvdSwgY29uc2lkZXIgYSBzbWFsbCBkb25hdGlvbiB0byBrZWVwIGl0IGdvaW5nLjwvcD4KICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgb25jbGljaz0ic2hvd1BhZ2UoJ2RvbmF0ZScpIj5TdXBwb3J0IHRoZSBTaXRlPC9idXR0b24+CiAgPC9kaXY+CjwvZGl2PgoKPCEtLSBGT1JVTSAtLT4KPGRpdiBjbGFzcz0icGFnZSIgaWQ9InBhZ2UtZm9ydW0iPgogIDxkaXYgY2xhc3M9ImZvcnVtLWhlYWRlciIgc3R5bGU9ImRpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLWJvdHRvbToyMHB4O2ZsZXgtd3JhcDp3cmFwO2dhcDoxMHB4Ij4KICAgIDxkaXY+CiAgICAgIDxoMiBzdHlsZT0iZm9udC1zaXplOjEuNHJlbTtjb2xvcjp2YXIoLS1ibHVlKSI+8J+XoyBDb21tdW5pdHkgRm9ydW08L2gyPgogICAgICA8cCBzdHlsZT0iZm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi10b3A6NHB4Ij5Bc2sgcXVlc3Rpb25zLCBzaGFyZSBhbnN3ZXJzLCBoZWxwIGZlbGxvdyBvbGltPC9wPgogICAgPC9kaXY+CiAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwIj4KICAgICAgPHNlbGVjdCBjbGFzcz0ic29ydC1zZWxlY3QiIGlkPSJmb3J1bS1zb3J0IiBvbmNoYW5nZT0icmVuZGVyRm9ydW0oKSI+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibmV3ZXN0Ij7wn5WQIE5ld2VzdDwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9Im1vc3RfYW5zd2VycyI+8J+SrCBNb3N0IFJlc3BvbnNlczwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9ImhpZ2hlc3RfcmF0ZWQiPuKtkCBIaWdoZXN0IFJhdGVkPC9vcHRpb24+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibW9zdF92aWV3ZWQiPvCfkYEgTW9zdCBWaWV3ZWQ8L29wdGlvbj4KICAgICAgPC9zZWxlY3Q+CiAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgb25jbGljaz0idG9nZ2xlQXNrQmFyKCkiIHN0eWxlPSJwYWRkaW5nOjlweCAxNnB4O2ZvbnQtc2l6ZTowLjg4cmVtIj4rIEFzayBhIFF1ZXN0aW9uPC9idXR0b24+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0iYXNrLWJhciIgaWQ9ImFzay1iYXIiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgogICAgPGgzPkFzayBhIE5ldyBRdWVzdGlvbjwvaDM+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InEtdGl0bGUiIHBsYWNlaG9sZGVyPSJZb3VyIHF1ZXN0aW9uIHRpdGxlLi4uIiAvPgogICAgPHRleHRhcmVhIGlkPSJxLWJvZHkiIHBsYWNlaG9sZGVyPSJEZXNjcmliZSB5b3VyIHF1ZXN0aW9uIGluIGRldGFpbC4uLiI+PC90ZXh0YXJlYT4KICAgIDxzZWxlY3QgaWQ9InEtY2F0Ij4KICAgICAgPG9wdGlvbiB2YWx1ZT0iIj5TZWxlY3QgYSBjYXRlZ29yeS4uLjwvb3B0aW9uPgogICAgPC9zZWxlY3Q+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InEtbmFtZSIgcGxhY2Vob2xkZXI9IllvdXIgbmFtZSAob3IgbGVhdmUgYmxhbmsgZm9yIEFub255bW91cykiIC8+CiAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjEwcHgiPgogICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiIG9uY2xpY2s9InN1Ym1pdFF1ZXN0aW9uKCkiIHN0eWxlPSJmbGV4OjEiPlBvc3QgUXVlc3Rpb248L2J1dHRvbj4KICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJjYW5jZWxBc2soKSIgc3R5bGU9ImZsZXg6bm9uZTtwYWRkaW5nOjEycHggMThweDtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWJvcmRlcik7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjFyZW07Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLW11dGVkKSI+4pyVIENhbmNlbDwvYnV0dG9uPgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDxkaXYgaWQ9ImZvcnVtLWxpc3QiPjwvZGl2Pgo8L2Rpdj4KCjwhLS0gQ0FURUdPUlkgUEFHRSAtLT4KPGRpdiBjbGFzcz0icGFnZSIgaWQ9InBhZ2UtY2F0ZWdvcnkiPgogIDxidXR0b24gY2xhc3M9ImJhY2stYnRuIiBvbmNsaWNrPSJzaG93UGFnZSgnZm9ydW0nKSI+4oaQIEJhY2sgdG8gRm9ydW08L2J1dHRvbj4KICA8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi1ib3R0b206MjBweDtmbGV4LXdyYXA6d3JhcDtnYXA6MTBweCI+CiAgICA8ZGl2PgogICAgICA8aDIgaWQ9ImNhdC1wYWdlLXRpdGxlIiBzdHlsZT0iZm9udC1zaXplOjEuNHJlbTtjb2xvcjp2YXIoLS1ibHVlKSI+PC9oMj4KICAgICAgPHAgaWQ9ImNhdC1wYWdlLWRlc2MiIHN0eWxlPSJmb250LXNpemU6MC44NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLXRvcDo0cHgiPjwvcD4KICAgIDwvZGl2PgogICAgPHNlbGVjdCBjbGFzcz0ic29ydC1zZWxlY3QiIGlkPSJjYXQtc29ydCIgb25jaGFuZ2U9InJlbmRlckNhdGVnb3J5UGFnZSgpIj4KICAgICAgPG9wdGlvbiB2YWx1ZT0ibmV3ZXN0Ij7wn5WQIE5ld2VzdDwvb3B0aW9uPgogICAgICA8b3B0aW9uIHZhbHVlPSJtb3N0X2Fuc3dlcnMiPvCfkqwgTW9zdCBSZXNwb25zZXM8L29wdGlvbj4KICAgICAgPG9wdGlvbiB2YWx1ZT0iaGlnaGVzdF9yYXRlZCI+4q2QIEhpZ2hlc3QgUmF0ZWQ8L29wdGlvbj4KICAgICAgPG9wdGlvbiB2YWx1ZT0ibW9zdF92aWV3ZWQiPvCfkYEgTW9zdCBWaWV3ZWQ8L29wdGlvbj4KICAgIDwvc2VsZWN0PgogIDwvZGl2PgogIDxkaXYgaWQ9ImNhdC1wYWdlLWxpc3QiPjwvZGl2Pgo8L2Rpdj4KCjwhLS0gUVVFU1RJT04gREVUQUlMIC0tPgo8ZGl2IGNsYXNzPSJwYWdlIiBpZD0icGFnZS1xdWVzdGlvbiI+CiAgPGJ1dHRvbiBjbGFzcz0iYmFjay1idG4iIGlkPSJxLWJhY2stYnRuIiBvbmNsaWNrPSJnb0JhY2soKSI+4oaQIEJhY2s8L2J1dHRvbj4KICA8ZGl2IGNsYXNzPSJxLWZ1bGwiIGlkPSJxLWZ1bGwtY29udGVudCI+PC9kaXY+CiAgPGRpdiBjbGFzcz0iYW5zd2Vycy1zZWN0aW9uIj4KICAgIDxoMyBpZD0iYW5zd2Vycy1jb3VudCI+PC9oMz4KICAgIDxkaXYgaWQ9ImFuc3dlcnMtbGlzdCI+PC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iYWRkLWFuc3dlciI+CiAgICA8aDQ+8J+SrCBBZGQgWW91ciBBbnN3ZXI8L2g0PgogICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJhbnMtbmFtZSIgcGxhY2Vob2xkZXI9IllvdXIgbmFtZSAob3IgbGVhdmUgYmxhbmsgZm9yIEFub255bW91cykiIC8+CiAgICA8dGV4dGFyZWEgaWQ9ImFucy1ib2R5IiBwbGFjZWhvbGRlcj0iU2hhcmUgeW91ciBrbm93bGVkZ2Ugb3IgZXhwZXJpZW5jZS4uLiI+PC90ZXh0YXJlYT4KICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgb25jbGljaz0ic3VibWl0QW5zd2VyKCkiPlBvc3QgQW5zd2VyPC9idXR0b24+CiAgPC9kaXY+CjwvZGl2PgoKPCEtLSBCRVNUIE9GIC0tPgo8ZGl2IGNsYXNzPSJwYWdlIiBpZD0icGFnZS1iZXN0b2YiPgogIDxkaXYgY2xhc3M9ImJlc3Qtb2YtaGVhZGVyIj4KICAgIDxoMj7irZAgQmVzdCBPZiBPbGltQW5zd2VyczwvaDI+CiAgICA8cD5UaGUgaGlnaGVzdC1yYXRlZCBxdWVzdGlvbnMgYW5kIGFuc3dlcnMgZnJvbSBvdXIgY29tbXVuaXR5IOKAlCB5b3VyIGdvLXRvIHN0YXJ0aW5nIHBvaW50PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImZpbHRlci1yb3ciPgogICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTowLjg1cmVtO2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS1tdXRlZCkiPkZpbHRlcjo8L3NwYW4+CiAgICA8YnV0dG9uIGNsYXNzPSJmaWx0ZXItYnRuIGFjdGl2ZSIgb25jbGljaz0iZmlsdGVyQmVzdE9mKCdhbGwnLHRoaXMpIj5BbGwgQ2F0ZWdvcmllczwvYnV0dG9uPgogICAgPGRpdiBpZD0iYmVzdG9mLWZpbHRlcnMiPjwvZGl2PgogIDwvZGl2PgogIDxkaXYgaWQ9ImJlc3RvZi1saXN0Ij48L2Rpdj4KPC9kaXY+Cgo8IS0tIENIRUNLTElTVCAtLT4KPGRpdiBjbGFzcz0icGFnZSIgaWQ9InBhZ2UtY2hlY2tsaXN0Ij4KICA8ZGl2IGNsYXNzPSJjaGVja2xpc3QtaW50cm8iPgogICAgPGgyPuKchSBOZXcgT2xlaCBDaGVja2xpc3Q8L2gyPgogICAgPHAgc3R5bGU9ImNvbG9yOnZhcigtLW11dGVkKTtmb250LXNpemU6MC44OHJlbTttYXJnaW4tdG9wOjZweCI+WW91ciBzdGVwLWJ5LXN0ZXAgZ3VpZGUgdG8gc2V0dGxpbmcgaW4gSXNyYWVsLiBDaGVjayBvZmYgaXRlbXMgYXMgeW91IGdvIOKAlCBwcm9ncmVzcyBzYXZlcyBhdXRvbWF0aWNhbGx5LjwvcD4KICA8L2Rpdj4KICA8ZGl2IGlkPSJjaGVja2xpc3QtY29udGVudCI+PC9kaXY+CjwvZGl2PgoKPCEtLSBTRUFSQ0ggLS0+CjxkaXYgY2xhc3M9InBhZ2UiIGlkPSJwYWdlLXNlYXJjaCI+CiAgPGgyIHN0eWxlPSJmb250LXNpemU6MS40cmVtO2NvbG9yOnZhcigtLWJsdWUpO21hcmdpbi1ib3R0b206MTZweCI+8J+UjSBTZWFyY2ggT2xpbUFuc3dlcnM8L2gyPgogIDxkaXYgY2xhc3M9InNlYXJjaC1iYXItYmlnIj4KICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ic2VhcmNoLWlucHV0IiBwbGFjZWhvbGRlcj0iU2VhcmNoIHF1ZXN0aW9ucywgdG9waWNzLCBrZXl3b3Jkcy4uLiIgb25rZXl1cD0iaWYoZXZlbnQua2V5PT09J0VudGVyJylkb1NlYXJjaCgpIiAvPgogICAgPGJ1dHRvbiBvbmNsaWNrPSJkb1NlYXJjaCgpIj5TZWFyY2g8L2J1dHRvbj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIiBzdHlsZT0iZm9udC1zaXplOjFyZW0iPlBvcHVsYXIgVG9waWNzPC9kaXY+CiAgPGRpdiBjbGFzcz0idGFnLWNsb3VkIiBpZD0idGFnLWNsb3VkIj48L2Rpdj4KICA8ZGl2IGlkPSJzZWFyY2gtcmVzdWx0cyI+PC9kaXY+CjwvZGl2PgoKPCEtLSBDQVRFR09SSUVTIC0tPgo8ZGl2IGNsYXNzPSJwYWdlIiBpZD0icGFnZS1jYXRzIj4KICA8aDIgc3R5bGU9ImZvbnQtc2l6ZToxLjRyZW07Y29sb3I6dmFyKC0tYmx1ZSk7bWFyZ2luLWJvdHRvbTo2cHgiPvCfk4IgQ2F0ZWdvcmllczwvaDI+CiAgPHAgc3R5bGU9ImZvbnQtc2l6ZTowLjg1cmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tYm90dG9tOjIwcHgiPkJyb3dzZSBxdWVzdGlvbnMgYnkgdG9waWM8L3A+CiAgPGRpdiBjbGFzcz0iY2F0ZWdvcnktZ3JpZCIgaWQ9ImNhdHMtZ3JpZCI+PC9kaXY+CjwvZGl2PgoKPCEtLSBET05BVEUgLS0+CjxkaXYgY2xhc3M9InBhZ2UiIGlkPSJwYWdlLWRvbmF0ZSI+CiAgPGRpdiBjbGFzcz0iZG9uYXRlLXBhZ2UiPgogICAgPGRpdiBjbGFzcz0iZG9uYXRlLWhlcm8iPgogICAgICA8ZGl2IHN0eWxlPSJmb250LXNpemU6M3JlbTttYXJnaW4tYm90dG9tOjEycHgiPvCfkps8L2Rpdj4KICAgICAgPGgyPlN1cHBvcnQgT2xpbUFuc3dlcnM8L2gyPgogICAgICA8cD5PbGltQW5zd2VycyBpcyBmcmVlIGZvciBldmVyeSBvbGVoLCBmb3JldmVyLiBJdCdzIGJ1aWx0IGFuZCBtYWludGFpbmVkIGJ5IHRoZSBjb21tdW5pdHksIGZvciB0aGUgY29tbXVuaXR5LiBZb3VyIGRvbmF0aW9uIGhlbHBzIGtlZXAgdGhlIGxpZ2h0cyBvbiwgcGF5IGZvciBob3N0aW5nLCBhbmQgYWxsb3dzIHVzIHRvIGdyb3cgYW5kIGltcHJvdmUgdGhlIHNpdGUuPC9wPgogICAgICA8cCBzdHlsZT0ibWFyZ2luLXRvcDoxMHB4O2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtc2l6ZTowLjg1cmVtO2NvbG9yOnZhcigtLW11dGVkKSI+Ikkgd2lzaCB0aGlzIHNpdGUgZXhpc3RlZCB3aGVuIEkgbWFkZSBhbGl5YWguIiDigJQgRXZlcnkgb2xlaCwgZXZlci48L3A+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImRvbmF0ZS1hbW91bnRzIj4KICAgICAgPGJ1dHRvbiBjbGFzcz0iYW1vdW50LWJ0biIgb25jbGljaz0ic2VsZWN0QW1vdW50KHRoaXMsJyQ1JykiPiQ1PC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9ImFtb3VudC1idG4iIG9uY2xpY2s9InNlbGVjdEFtb3VudCh0aGlzLCckMTgnKSI+JDE4IOKcoe+4jzwvYnV0dG9uPgogICAgICA8YnV0dG9uIGNsYXNzPSJhbW91bnQtYnRuIHNlbGVjdGVkIiBvbmNsaWNrPSJzZWxlY3RBbW91bnQodGhpcywnJDM2JykiPiQzNjwvYnV0dG9uPgogICAgICA8YnV0dG9uIGNsYXNzPSJhbW91bnQtYnRuIiBvbmNsaWNrPSJzZWxlY3RBbW91bnQodGhpcywnJDEwMCcpIj4kMTAwPC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9ImFtb3VudC1idG4iIG9uY2xpY2s9InNlbGVjdEFtb3VudCh0aGlzLCdvdGhlcicpIj5PdGhlcjwvYnV0dG9uPgogICAgPC9kaXY+CiAgICA8YnV0dG9uIGNsYXNzPSJkb25hdGUtYnRuLWJpZyIgb25jbGljaz0ic2hvd1RvYXN0KCdUaGFuayB5b3UhIERvbmF0aW9uIGxpbmsgY29taW5nIHNvb24g8J+SmycpIj5Eb25hdGUgdmlhIFBheVBhbDwvYnV0dG9uPgogICAgPHAgc3R5bGU9ImZvbnQtc2l6ZTowLjc4cmVtO2NvbG9yOnZhcigtLW11dGVkKSI+U2VjdXJlIHBheW1lbnQuIEV2ZXJ5IHNoZWtlbCAvIGRvbGxhciBoZWxwcy48L3A+CiAgICA8ZGl2IGNsYXNzPSJkaXZpZGVyIj48L2Rpdj4KICAgIDxwIHN0eWxlPSJmb250LXNpemU6MC44NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLXRvcDoxNnB4Ij5Zb3UgY2FuIGFsc28gc3VwcG9ydCB1cyBieSBzaGFyaW5nIHRoZSBzaXRlIHdpdGggb3RoZXIgb2xpbSwgY29udHJpYnV0aW5nIGFuc3dlcnMsIGFuZCBmbGFnZ2luZyBvdXRkYXRlZCBpbmZvcm1hdGlvbi4gRXZlcnkgYml0IGNvdW50cyE8L3A+CiAgPC9kaXY+CjwvZGl2PgoKPCEtLSBMQU5HIE1PREFMIC0tPgo8ZGl2IGNsYXNzPSJtb2RhbC1vdmVybGF5IiBpZD0ibGFuZy1tb2RhbCI+CiAgPGRpdiBjbGFzcz0ibW9kYWwiPgogICAgPGgzPvCfjJAgQ2hvb3NlIExhbmd1YWdlPC9oMz4KICAgIDxwPkNvbnRlbnQgaXMgYXV0by10cmFuc2xhdGVkLiBGb3IgY3JpdGljYWwgZGVjaXNpb25zLCBhbHdheXMgdmVyaWZ5IHdpdGggb2ZmaWNpYWwgc291cmNlcy48L3A+CiAgICA8ZGl2IGNsYXNzPSJ0cmFuc2xhdGlvbi1ub3RpY2UiPuKaoO+4jyBJc3JhZWxpIGJ1cmVhdWNyYXRpYyB0ZXJtcyAoVGV1ZGF0IFplaHV0LCBNaXNyYWQgSGFwbmltLCBldGMuKSBhcmUga2VwdCBpbiB0aGVpciBvcmlnaW5hbCBmb3JtIHdpdGggdG9vbHRpcHMgdG8gcHJldmVudCBtaXN0cmFuc2xhdGlvbi48L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImxhbmctZ3JpZCIgaWQ9ImxhbmctZ3JpZCI+PC9kaXY+CiAgICA8YnV0dG9uIGNsYXNzPSJtb2RhbC1jbG9zZSIgb25jbGljaz0iY2xvc2VMYW5nTW9kYWwoKSI+Q2xvc2U8L2J1dHRvbj4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJ0b2FzdCIgaWQ9InRvYXN0Ij48L2Rpdj4KCjxzY3JpcHQ+CmNvbnN0IENBVEVHT1JJRVMgPSBbCiAge2lkOidiYW5raW5nJyxpY29uOifwn4+mJyxuYW1lOidCYW5raW5nJyxkZXNjOidBY2NvdW50cywgdHJhbnNmZXJzLCBtb3J0Z2FnZXMnfSwKICB7aWQ6J2hlYWx0aCcsaWNvbjon8J+PpScsbmFtZTonSGVhbHRoIEluc3VyYW5jZScsZGVzYzonS3VwYXQgSG9saW0sIGRvY3RvcnMsIGNvdmVyYWdlJ30sCiAge2lkOid0YXgnLGljb246J/Cfk4onLG5hbWU6J1RheCcsZGVzYzonSW5jb21lIHRheCwgTWFzIEhhY2huYXNhLCBWQVQnfSwKICB7aWQ6J2ludGVybmV0JyxpY29uOifwn5O2JyxuYW1lOidJbnRlcm5ldCAmIFBob25lJyxkZXNjOidQcm92aWRlcnMsIGNvbnRyYWN0cywgU0lNIGNhcmRzJ30sCiAge2lkOidob3VzaW5nJyxpY29uOifwn4+gJyxuYW1lOidIb3VzaW5nJyxkZXNjOidSZW50aW5nLCBidXlpbmcsIEFybm9uYSd9LAogIHtpZDonZ292JyxpY29uOifwn6qqJyxuYW1lOidHb3Zlcm5tZW50ICYgSURzJyxkZXNjOidUZXVkYXQgWmVodXQsIE1pc3JhZCBIYXBuaW0nfSwKICB7aWQ6J2VkdWNhdGlvbicsaWNvbjon8J+OkycsbmFtZTonRWR1Y2F0aW9uJyxkZXNjOidTY2hvb2xzLCB1bHBhbiwgdW5pdmVyc2l0aWVzJ30sCiAge2lkOid0cmFuc3BvcnQnLGljb246J/CfmownLG5hbWU6J1RyYW5zcG9ydCcsZGVzYzonRHJpdmluZyBsaWNlbmNlLCBSYXYtS2F2LCBidXNlcyd9LAogIHtpZDonZW1wbG95bWVudCcsaWNvbjon8J+SvCcsbmFtZTonRW1wbG95bWVudCcsZGVzYzonSm9icywgY29udHJhY3RzLCByaWdodHMnfSwKICB7aWQ6J3NvY2lhbCcsaWNvbjon8J+knScsbmFtZTonU29jaWFsIFNlY3VyaXR5JyxkZXNjOidCaXR1YWNoIExldW1pLCBiZW5lZml0cyd9LAogIHtpZDonY3VsdHVyZScsaWNvbjon8J+VjicsbmFtZTonQ3VsdHVyZSAmIExpZmUnLGRlc2M6J0N1c3RvbXMsIGhvbGlkYXlzLCBjb21tdW5pdHknfSwKICB7aWQ6J290aGVyJyxpY29uOifinZMnLG5hbWU6J090aGVyJyxkZXNjOidBbnl0aGluZyBlbHNlJ30sCl07Cgpjb25zdCBUSVBTID0gWwogICJXaGVuIG9wZW5pbmcgYSBiYW5rIGFjY291bnQgaW4gSXNyYWVsLCBicmluZyB5b3VyIFRldWRhdCBPbGVoLCBwYXNzcG9ydCwgYW5kIHByb29mIG9mIGFkZHJlc3MuIEJhbmsgSGFwb2FsaW0gYW5kIEJhbmsgTGV1bWkgYm90aCBoYXZlIGRlZGljYXRlZCBPbGltIGRlcGFydG1lbnRzIHdpdGggRW5nbGlzaC1zcGVha2luZyBzdGFmZi4iLAogICJSZWdpc3RlciB3aXRoIGEgS3VwYXQgSG9saW0gKGhlYWx0aCBmdW5kKSB3aXRoaW4gMyBtb250aHMgb2YgYXJyaXZpbmcuIFRoZSA0IG9wdGlvbnMgYXJlIENsYWxpdCwgTWFjY2FiaSwgTWV1aGVkZXQsIGFuZCBMZXVtaXQuIFlvdSBjYW4gc3dpdGNoIG9uY2UgYSB5ZWFyIGluIE5vdmVtYmVyLiIsCiAgIlRoZSBUZXVkYXQgWmVodXQgKG5hdGlvbmFsIElEKSBpcyByZXF1aXJlZCBmb3IgYWxtb3N0IGV2ZXJ5dGhpbmcgaW4gSXNyYWVsLiBLZWVwIGEgcGhvdG9jb3B5IGF0IGhvbWUgYW5kIGEgcGhvdG8gb24geW91ciBwaG9uZSBhdCBhbGwgdGltZXMuIiwKICAiQXJub25hIChtdW5pY2lwYWwgdGF4KSBiaWxscyBhcmUgc2VudCB0d2ljZSBhIHllYXIuIE5ldyBvbGltIG1heSBiZSBlbGlnaWJsZSBmb3IgYSBkaXNjb3VudCDigJQgY2hlY2sgd2l0aCB5b3VyIGxvY2FsIG11bmljaXBhbGl0eSB3aXRoaW4gOTAgZGF5cyBvZiBhcnJpdmFsLiIsCiAgIlRvIGNvbnZlcnQgeW91ciBmb3JlaWduIGRyaXZpbmcgbGljZW5jZSBpbiBJc3JhZWwsIHlvdSBtYXkgYmUgZXhlbXB0IGZyb20gdGFraW5nIGEgZnVsbCB0ZXN0IGlmIHlvdXIgY291bnRyeSBoYXMgYSByZWNpcHJvY2FsIGFncmVlbWVudC4gQ2hlY2sgd2l0aCBNaXNyYWQgSGFUYWNoYnVyYS4iLApdOwoKbGV0IHF1ZXN0aW9ucyA9IFsKICB7aWQ6MSx0aXRsZToiSG93IGRvIEkgb3BlbiBhIGJhbmsgYWNjb3VudCBhcyBhIG5ldyBvbGVoPyIsYm9keToiSSBqdXN0IGFycml2ZWQgbGFzdCB3ZWVrIGFuZCBJJ20gdHJ5aW5nIHRvIG9wZW4gYSBiYW5rIGFjY291bnQuIFdoYXQgZG9jdW1lbnRzIGRvIEkgbmVlZCBhbmQgd2hpY2ggYmFuayBpcyBtb3N0IG9sZWgtZnJpZW5kbHk/IixjYXQ6J2JhbmtpbmcnLGF1dGhvcjonU2FyYWggTS4nLGRhdGU6JzIwMjQtMTItMTUnLHZpZXdzOjM0MixsYW5nOidFTicsYW5zd2VyczpbCiAgICB7aWQ6MSxib2R5OiJCYW5rIEhhcG9hbGltIGFuZCBCYW5rIExldW1pIGJvdGggaGF2ZSBkZWRpY2F0ZWQgT2xpbSBjZW50cmVzIHdpdGggRW5nbGlzaCBzcGVha2luZyBzdGFmZi4gQnJpbmcgeW91ciBUZXVkYXQgT2xlaCwgcGFzc3BvcnQsIGFuZCBpZiBwb3NzaWJsZSBhIHByb29mIG9mIGFkZHJlc3MuIFRoZSBwcm9jZXNzIHVzdWFsbHkgdGFrZXMgMS0yIHZpc2l0cy4gTGV1bWkncyBvbmxpbmUgcHJvY2VzcyBoYXMgaW1wcm92ZWQgYSBsb3QgcmVjZW50bHkuIixhdXRob3I6J0RhdmlkIEsuJyxkYXRlOicyMDI0LTEyLTE1Jyx2b3Rlczo0NyxmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOidFTid9LAogICAge2lkOjIsYm9keToiSSB1c2VkIERpc2NvdW50IEJhbmsgYW5kIGhhZCBhIGdyZWF0IGV4cGVyaWVuY2UuIFRoZXkgc2V0IHVwIG15IGFjY291bnQgdGhlIHNhbWUgZGF5IGFuZCBnYXZlIG1lIGFuIEVuZ2xpc2gtbGFuZ3VhZ2UgYXBwLiBBbHNvIHdvcnRoIGFza2luZyBhYm91dCB6ZXJvLWZlZSBhY2NvdW50cyBmb3IgbmV3IG9saW0g4oCUIG1hbnkgYmFua3Mgb2ZmZXIgdGhlbSBmb3IgdGhlIGZpcnN0IHllYXIuIixhdXRob3I6J01pcmlhbSBULicsZGF0ZTonMjAyNC0xMi0xNicsdm90ZXM6MzEsZmxhZ2dlZDpmYWxzZSx1c2VyVm90ZWQ6ZmFsc2UsbGFuZzonRU4nfSwKICBdfSwKICB7aWQ6Mix0aXRsZToiV2hpY2ggS3VwYXQgSG9saW0gc2hvdWxkIEkgam9pbj8iLGJvZHk6IkkgbmVlZCB0byByZWdpc3RlciB3aXRoIGEgaGVhbHRoIGZ1bmQuIFdoYXQgYXJlIHRoZSBtYWluIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGZvdXIgb3B0aW9ucyBhbmQgd2hpY2ggaXMgYmVzdCBmb3IgRW5nbGlzaCBzcGVha2Vycz8iLGNhdDonaGVhbHRoJyxhdXRob3I6J0phbWVzIFIuJyxkYXRlOicyMDI0LTEyLTEwJyx2aWV3czoyODksbGFuZzonRU4nLGFuc3dlcnM6WwogICAge2lkOjEsYm9keToiTWFjY2FiaSBpcyBnZW5lcmFsbHkgY29uc2lkZXJlZCB0aGUgbW9zdCBFbmdsaXNoLWZyaWVuZGx5IGFuZCBoYXMgYSBnb29kIGFwcC4gQ2xhbGl0IGhhcyB0aGUgbW9zdCBkb2N0b3JzIGFuZCBjbGluaWNzIGJ1dCB0aGUgYXBwIGFuZCBzZXJ2aWNlIHF1YWxpdHkgdmFyaWVzLiBNZXVoZWRldCBpcyBzdHJvbmcgaW4gSmVydXNhbGVtLiBMZXVtaXQgaXMgdGhlIHNtYWxsZXN0IGJ1dCBvZnRlbiBoYXMgc2hvcnRlciB3YWl0cy4iLGF1dGhvcjonWWFlbCBTLicsZGF0ZTonMjAyNC0xMi0xMScsdm90ZXM6NTIsZmxhZ2dlZDpmYWxzZSx1c2VyVm90ZWQ6ZmFsc2UsbGFuZzonRU4nfSwKICBdfSwKICB7aWQ6Myx0aXRsZToi15DXmdeaINei15XXkdeTINeQ16jXoNeV16DXlCDXldeQ150g157XkteZ16Ig15zXmSDXlNeg15fXlD8iLGJvZHk6Iten15nXkdec16rXmSDXl9ep15HXldefINeQ16jXoNeV16DXlCDXldeQ16DXmSDXnNeQINeR15jXldeXINeQ15nXmiDXnteX16nXkdeZ150g15DXldeq15Ug15XXkNedINei15XXnNeZ150g15fXk9ep15nXnSDXnten15HXnNeZ150g15TXpNeX16rXlC4iLGNhdDonaG91c2luZycsYXV0aG9yOifXqNeV16DXnyDXkS4nLGRhdGU6JzIwMjQtMTItMDgnLHZpZXdzOjE3OCxsYW5nOidIRScsYW5zd2VyczpbCiAgICB7aWQ6MSxib2R5OiLXkNeo16DXldeg15Qg15TXmdeQINee16Eg16LXmdeo15XXoNeZINep157Xqdec157XmdedINec16LXmdeo15nXlCDXlNee16fXldee15nXqi4g16LXldec15nXnSDXl9eT16nXmdedINeW15vXkNeZ150g15zXlNeg15fXlCAo15HXk9eo15og15vXnNecIDcwLTkwJSkg15zXqdeg15Qg15TXqNeQ16nXldeg15QuINem16jXmdeaINec16TXoNeV16og15zXoteZ16jXmdeUINeU157Xp9eV157XmdeqINei150g16rXoteV15PXqiDXlNei15XXnNeUINeq15XXmiA5MCDXmdeV150g157XlNeS16LXlC4g15DXnCDXqtek16HXpNeh15Ug15DXqiDXlNeX15zXldefINeU15bXlCEiLGF1dGhvcjon15nXotecINepLicsZGF0ZTonMjAyNC0xMi0wOScsdm90ZXM6MzksZmxhZ2dlZDpmYWxzZSx1c2VyVm90ZWQ6ZmFsc2UsbGFuZzonSEUnfSwKICBdfSwKICB7aWQ6NCx0aXRsZToiQmVzdCBtb2JpbGUgcGhvbmUgcHJvdmlkZXIgZm9yIG9saW0/Iixib2R5OiJXaGF0IFNJTSBjYXJkIG9yIGNvbnRyYWN0IHNob3VsZCBJIGdldD8gSSBuZWVkIGdvb2QgZGF0YSBhbmQgYWZmb3JkYWJsZSBjYWxscyB0byB0aGUgVUsuIixjYXQ6J2ludGVybmV0JyxhdXRob3I6J0VtbWEgTC4nLGRhdGU6JzIwMjQtMTItMDUnLHZpZXdzOjIwMSxsYW5nOidFTicsYW5zd2VyczpbCiAgICB7aWQ6MSxib2R5OiJHb2xhbiBUZWxlY29tIGlzIHRoZSBiZXN0IHZhbHVlIGZvciBtb3N0IG9saW0g4oCUIGFyb3VuZCDigqozMC9tb250aCBmb3IgdW5saW1pdGVkIGRhdGEgYW5kIGNhbGxzLiBQYXJ0bmVyIGFuZCBDZWxsY29tIGFyZSBtb3JlIGV4cGVuc2l2ZSBidXQgaGF2ZSBiZXR0ZXIgY292ZXJhZ2UgaW4gc29tZSBhcmVhcy4gRm9yIGludGVybmF0aW9uYWwgY2FsbHMgdG8gdGhlIFVLLCBnZXQgYSBXaGF0c0FwcCBudW1iZXIgb3IgdXNlIEdvbGFuJ3MgaW50ZXJuYXRpb25hbCBhZGQtb24uIixhdXRob3I6J0F2aSBDLicsZGF0ZTonMjAyNC0xMi0wNicsdm90ZXM6MjgsZmxhZ2dlZDpmYWxzZSx1c2VyVm90ZWQ6ZmFsc2UsbGFuZzonRU4nfSwKICBdfSwKXTsKCmxldCBuZXh0UUlkID0gNSwgbmV4dEFJZCA9IDEwOwpsZXQgY3VycmVudENhdCA9IG51bGwsIGN1cnJlbnRRSWQgPSBudWxsLCBwcmV2UGFnZSA9ICdmb3J1bScsIGN1cnJlbnRMYW5nID0gJ0VOJzsKCmNvbnN0IExBTkdTID0gWwogIHtjb2RlOidFTicsZmxhZzon8J+HrPCfh6cnLG5hbWU6J0VuZ2xpc2gnLCAgbmF0aXZlOidFbmdsaXNoJ30sCiAge2NvZGU6J0hFJyxmbGFnOifwn4eu8J+HsScsbmFtZTonSGVicmV3JywgICBuYXRpdmU6J9ei15HXqNeZ16onfSwKICB7Y29kZTonUlUnLGZsYWc6J/Cfh7fwn4e6JyxuYW1lOidSdXNzaWFuJywgIG5hdGl2ZTon0KDRg9GB0YHQutC40LknfSwKICB7Y29kZTonRlInLGZsYWc6J/Cfh6vwn4e3JyxuYW1lOidGcmVuY2gnLCAgIG5hdGl2ZTonRnJhbsOnYWlzJ30sCiAge2NvZGU6J0VTJyxmbGFnOifwn4eq8J+HuCcsbmFtZTonU3BhbmlzaCcsICBuYXRpdmU6J0VzcGHDsW9sJ30sCiAge2NvZGU6J0FSJyxmbGFnOifwn4em8J+HqicsbmFtZTonQXJhYmljJywgICBuYXRpdmU6J9in2YTYudix2KjZitipJ30sCiAge2NvZGU6J0FNJyxmbGFnOifwn4eq8J+HuScsbmFtZTonQW1oYXJpYycsICBuYXRpdmU6J+GKoOGIm+GIreGKmyd9LAogIHtjb2RlOidQVCcsZmxhZzon8J+Hp/Cfh7cnLG5hbWU6J1BvcnR1Z3Vlc2UnLG5hdGl2ZTonUG9ydHVndcOqcyd9LApdOwoKY29uc3QgQ0hFQ0tMSVNUID0gWwogIHtzZWN0aW9uOidGaXJzdCAzMCBEYXlzJywgaWNvbjon8J+agCcsIGl0ZW1zOlsKICAgICdDb2xsZWN0IFRldWRhdCBPbGVoIGZyb20gdGhlIGFpcnBvcnQgb3IgTWlzcmFkIEhhQWxpeWFoJywKICAgICdSZWdpc3RlciBhdCBNaXNyYWQgSGFBbGl5YWggKE1pbmlzdHJ5IG9mIEFsaXlhaCkgZm9yIGJlbmVmaXRzJywKICAgICdBcHBseSBmb3IgVGV1ZGF0IFplaHV0IChOYXRpb25hbCBJRCkgYXQgTWlzcmFkIEhhcG5pbScsCiAgICAnUmVnaXN0ZXIgd2l0aCBhIEt1cGF0IEhvbGltIChoZWFsdGggZnVuZCknLAogICAgJ09wZW4gYSBiYW5rIGFjY291bnQnLAogICAgJ0Vucm9sIGluIFVscGFuIChIZWJyZXcgbGFuZ3VhZ2UgY291cnNlKScsCiAgICAnUmVnaXN0ZXIgY2hpbGRyZW4gYXQgbG9jYWwgc2Nob29sJywKICBdfSwKICB7c2VjdGlvbjonRmlyc3QgMyBNb250aHMnLCBpY29uOifwn5OFJywgaXRlbXM6WwogICAgJ0FwcGx5IGZvciBBcm5vbmEgKG11bmljaXBhbCB0YXgpIGRpc2NvdW50IGF0IGxvY2FsIElyaXlhJywKICAgICdUcmFuc2ZlciBvciBvYnRhaW4gSXNyYWVsaSBkcml2aW5nIGxpY2VuY2UnLAogICAgJ0FwcGx5IGZvciBCaXR1YWNoIExldW1pIChOYXRpb25hbCBJbnN1cmFuY2UpJywKICAgICdTZXQgdXAgaW50ZXJuZXQgYXQgaG9tZScsCiAgICAnUmVnaXN0ZXIgd2l0aCBhIGxvY2FsIGRvY3RvciAo16jXldek15Ag157Xqdek15fXlCknLAogICAgJ0pvaW4gbG9jYWwgb2xpbSBGYWNlYm9vay9XaGF0c0FwcCBncm91cHMnLAogIF19LAogIHtzZWN0aW9uOidGaXJzdCBZZWFyJywgaWNvbjon8J+ThicsIGl0ZW1zOlsKICAgICdGaWxlIHlvdXIgZmlyc3QgSXNyYWVsaSB0YXggcmV0dXJuIGlmIHJlcXVpcmVkJywKICAgICdSZXZpZXcgeW91ciBLdXBhdCBIb2xpbSDigJQgeW91IGNhbiBzd2l0Y2ggZXZlcnkgTm92ZW1iZXInLAogICAgJ0NoZWNrIGVudGl0bGVtZW50IHRvIE9sZWggbW9ydGdhZ2UgYmVuZWZpdHMgKE1pc2hrYW50YSknLAogICAgJ0FwcGx5IGZvciBhbnkgcmVtYWluaW5nIFNhbCBLbGl0YSAoYWJzb3JwdGlvbiBiYXNrZXQpIHBheW1lbnRzJywKICAgICdHZXQgeW91ciBJc3JhZWxpIGRyaXZpbmcgbGljZW5jZSBpZiB5b3UgaGF2ZW5cJ3QgYWxyZWFkeScsCiAgXX0sCl07CgpmdW5jdGlvbiBzaG93UGFnZShwLCBkYXRhKXsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucGFnZScpLmZvckVhY2goeD0+eC5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhZ2UtJytwKS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICBpZihwPT09J2hvbWUnKSByZW5kZXJIb21lQ2F0cygpOwogIGlmKHA9PT0nZm9ydW0nKSByZW5kZXJGb3J1bSgpOwogIGlmKHA9PT0nYmVzdG9mJykgcmVuZGVyQmVzdE9mKCk7CiAgaWYocD09PSdjaGVja2xpc3QnKSByZW5kZXJDaGVja2xpc3QoKTsKICBpZihwPT09J3NlYXJjaCcpIHJlbmRlclRhZ0Nsb3VkKCk7CiAgaWYocD09PSdjYXRzJykgcmVuZGVyQ2F0c1BhZ2UoKTsKICBpZihwPT09J2NhdGVnb3J5JyYmZGF0YSl7Y3VycmVudENhdD1kYXRhO3JlbmRlckNhdGVnb3J5UGFnZSgpO30KICBpZihwPT09J3F1ZXN0aW9uJyYmZGF0YSl7Y3VycmVudFFJZD1kYXRhO3JlbmRlclF1ZXN0aW9uKCk7fQogIHdpbmRvdy5zY3JvbGxUbygwLDApOwp9CgpmdW5jdGlvbiByZW5kZXJIb21lQ2F0cygpewogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdob21lLWNhdHMnKS5pbm5lckhUTUwgPSBDQVRFR09SSUVTLm1hcChjPT5gCiAgICA8ZGl2IGNsYXNzPSJjYXQtY2FyZCIgb25jbGljaz0icHJldlBhZ2U9J2hvbWUnO3Nob3dQYWdlKCdjYXRlZ29yeScsJyR7Yy5pZH0nKSI+CiAgICAgIDxkaXYgY2xhc3M9ImNhdC1pY29uIj4ke2MuaWNvbn08L2Rpdj4KICAgICAgPGg0PiR7Yy5uYW1lfTwvaDQ+CiAgICAgIDxwPiR7Yy5kZXNjfTwvcD4KICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZTowLjcycmVtO2NvbG9yOnZhcigtLWJsdWUpO21hcmdpbi10b3A6NnB4O2ZvbnQtd2VpZ2h0OjYwMCI+JHtxdWVzdGlvbnMuZmlsdGVyKHE9PnEuY2F0PT09Yy5pZCkubGVuZ3RofSBxdWVzdGlvbnM8L3A+CiAgICA8L2Rpdj5gKS5qb2luKCcnKTsKICBjb25zdCB0aXBzID0gVElQUzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGlwLXRleHQnKS50ZXh0Q29udGVudCA9IHRpcHNbTWF0aC5mbG9vcihEYXRlLm5vdygpLzg2NDAwMDAwKSV0aXBzLmxlbmd0aF07Cn0KCmZ1bmN0aW9uIHNvcnRRdWVzdGlvbnMocXMsIG1ldGhvZCl7CiAgcmV0dXJuIFsuLi5xc10uc29ydCgoYSxiKT0+ewogICAgaWYobWV0aG9kPT09J25ld2VzdCcpIHJldHVybiBiLmlkLWEuaWQ7CiAgICBpZihtZXRob2Q9PT0nbW9zdF9hbnN3ZXJzJykgcmV0dXJuIGIuYW5zd2Vycy5sZW5ndGgtYS5hbnN3ZXJzLmxlbmd0aDsKICAgIGlmKG1ldGhvZD09PSdoaWdoZXN0X3JhdGVkJykgcmV0dXJuIG1heFZvdGVzKGIpLW1heFZvdGVzKGEpOwogICAgaWYobWV0aG9kPT09J21vc3Rfdmlld2VkJykgcmV0dXJuIGIudmlld3MtYS52aWV3czsKICAgIHJldHVybiBiLmlkLWEuaWQ7CiAgfSk7Cn0KCmZ1bmN0aW9uIG1heFZvdGVzKHEpe3JldHVybiBxLmFuc3dlcnMubGVuZ3RoP01hdGgubWF4KC4uLnEuYW5zd2Vycy5tYXAoYT0+YS52b3RlcykpOjA7fQpmdW5jdGlvbiBhdmdWb3RlcyhxKXtyZXR1cm4gcS5hbnN3ZXJzLmxlbmd0aD9xLmFuc3dlcnMucmVkdWNlKChzLGEpPT5zK2Eudm90ZXMsMCkvcS5hbnN3ZXJzLmxlbmd0aDowO30KCmZ1bmN0aW9uIHJlbmRlckZvcnVtKCl7CiAgY29uc3Qgc29ydCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb3J1bS1zb3J0Jyk/LnZhbHVlfHwnbmV3ZXN0JzsKICBjb25zdCBxcyA9IHNvcnRRdWVzdGlvbnMocXVlc3Rpb25zLCBzb3J0KTsKICBjb25zdCBjYXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1jYXQnKTsKICBpZihjYXQpIGNhdC5pbm5lckhUTUw9JzxvcHRpb24gdmFsdWU9IiI+U2VsZWN0IGEgY2F0ZWdvcnkuLi48L29wdGlvbj4nK0NBVEVHT1JJRVMubWFwKGM9PmA8b3B0aW9uIHZhbHVlPSIke2MuaWR9Ij4ke2MuaWNvbn0gJHtjLm5hbWV9PC9vcHRpb24+YCkuam9pbignJyk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZvcnVtLWxpc3QnKS5pbm5lckhUTUwgPSBxcy5sZW5ndGggPyBxcy5tYXAocT0+cUNhcmQocSwnZm9ydW0nKSkuam9pbignJykgOiBlbXB0eVN0YXRlKCdObyBxdWVzdGlvbnMgeWV0LiBCZSB0aGUgZmlyc3QgdG8gYXNrIScpOwp9CgpmdW5jdGlvbiByZW5kZXJDYXRlZ29yeVBhZ2UoKXsKICBjb25zdCBjYXQgPSBDQVRFR09SSUVTLmZpbmQoYz0+Yy5pZD09PWN1cnJlbnRDYXQpOwogIGlmKCFjYXQpIHJldHVybjsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0LXBhZ2UtdGl0bGUnKS50ZXh0Q29udGVudCA9IGNhdC5pY29uKycgJytjYXQubmFtZTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0LXBhZ2UtZGVzYycpLnRleHRDb250ZW50ID0gY2F0LmRlc2M7CiAgY29uc3Qgc29ydCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXQtc29ydCcpPy52YWx1ZXx8J25ld2VzdCc7CiAgY29uc3QgcXMgPSBzb3J0UXVlc3Rpb25zKHF1ZXN0aW9ucy5maWx0ZXIocT0+cS5jYXQ9PT1jdXJyZW50Q2F0KSwgc29ydCk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdC1wYWdlLWxpc3QnKS5pbm5lckhUTUwgPSBxcy5sZW5ndGggPyBxcy5tYXAocT0+cUNhcmQocSwnY2F0ZWdvcnknKSkuam9pbignJykgOiBlbXB0eVN0YXRlKCdObyBxdWVzdGlvbnMgaW4gdGhpcyBjYXRlZ29yeSB5ZXQuJyk7Cn0KCmZ1bmN0aW9uIHFDYXJkKHEsZnJvbSl7CiAgY29uc3QgdG9wVm90ZXMgPSBxLmFuc3dlcnMubGVuZ3RoP01hdGgubWF4KC4uLnEuYW5zd2Vycy5tYXAoYT0+YS52b3RlcykpOjA7CiAgY29uc3QgY2F0ID0gQ0FURUdPUklFUy5maW5kKGM9PmMuaWQ9PT1xLmNhdCk7CiAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJxLWNhcmQiIG9uY2xpY2s9InByZXZQYWdlPScke2Zyb219JztzaG93UGFnZSgncXVlc3Rpb24nLCR7cS5pZH0pIj4KICAgIDxkaXYgY2xhc3M9InEtbWV0YSI+CiAgICAgIDxzcGFuIGNsYXNzPSJxLWNhdC1iYWRnZSI+JHtjYXQ/Y2F0Lmljb24rJyAnK2NhdC5uYW1lOnEuY2F0fTwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InEtYXV0aG9yIj7wn5GkICR7cS5hdXRob3J9PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icS1kYXRlIj7wn5OFICR7cS5kYXRlfTwvc3Bhbj4KICAgICAgJHt0b3BWb3Rlcz49MzA/YDxzcGFuIGNsYXNzPSJmZWF0dXJlZC1iYWRnZSI+4q2QIEZlYXR1cmVkPC9zcGFuPmA6Jyd9CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9InEtdGl0bGUiPiR7cS50aXRsZX08L2Rpdj4KICAgIDxkaXYgY2xhc3M9InEtcHJldmlldyI+JHtxLmJvZHkuc3Vic3RyaW5nKDAsMTIwKX0ke3EuYm9keS5sZW5ndGg+MTIwPycuLi4nOicnfTwvZGl2PgogICAgPGRpdiBjbGFzcz0icS1zdGF0cyI+CiAgICAgIDxzcGFuPvCfkqwgJHtxLmFuc3dlcnMubGVuZ3RofSBhbnN3ZXIke3EuYW5zd2Vycy5sZW5ndGghPT0xPydzJzonJ308L3NwYW4+CiAgICAgIDxzcGFuPvCfkYEgJHtxLnZpZXdzfSB2aWV3czwvc3Bhbj4KICAgICAgPHNwYW4+4q2QIFRvcCB2b3RlOiAke3RvcFZvdGVzfTwvc3Bhbj4KICAgIDwvZGl2PgogICAgPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDo2cHgiPiR7bGFuZ0JhZGdlKHEubGFuZyl9PC9kaXY+CiAgPC9kaXY+YDsKfQoKZnVuY3Rpb24gcmVuZGVyUXVlc3Rpb24oKXsKICBjb25zdCBxID0gcXVlc3Rpb25zLmZpbmQoeD0+eC5pZD09PWN1cnJlbnRRSWQpOwogIGlmKCFxKXtyZXR1cm47fQogIHEudmlld3MrKzsKICBjb25zdCBjYXQgPSBDQVRFR09SSUVTLmZpbmQoYz0+Yy5pZD09PXEuY2F0KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1mdWxsLWNvbnRlbnQnKS5pbm5lckhUTUw9YAogICAgPGRpdiBjbGFzcz0icS1tZXRhIiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxMnB4Ij4KICAgICAgPHNwYW4gY2xhc3M9InEtY2F0LWJhZGdlIiBzdHlsZT0iY3Vyc29yOnBvaW50ZXIiIG9uY2xpY2s9InNob3dQYWdlKCdjYXRlZ29yeScsJyR7cS5jYXR9JykiPiR7Y2F0P2NhdC5pY29uKycgJytjYXQubmFtZTpxLmNhdH08L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJxLWF1dGhvciI+8J+RpCAke3EuYXV0aG9yfTwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InEtZGF0ZSI+8J+ThSAke3EuZGF0ZX08L3NwYW4+CiAgICA8L2Rpdj4KICAgIDxoMj4ke3EudGl0bGV9PC9oMj4KICAgIDxkaXYgY2xhc3M9ImJvZHkiIHN0eWxlPSJtYXJnaW4tdG9wOjEycHgiPiR7cS5ib2R5fTwvZGl2PmA7CiAgY29uc3Qgc29ydGVkID0gWy4uLnEuYW5zd2Vyc10uc29ydCgoYSxiKT0+Yi52b3Rlcy1hLnZvdGVzKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zd2Vycy1jb3VudCcpLnRleHRDb250ZW50ID0gYCR7cS5hbnN3ZXJzLmxlbmd0aH0gQW5zd2VyJHtxLmFuc3dlcnMubGVuZ3RoIT09MT8ncyc6Jyd9YDsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zd2Vycy1saXN0JykuaW5uZXJIVE1MID0gc29ydGVkLmxlbmd0aCA/IHNvcnRlZC5tYXAoKGEsaSk9PmAKICAgIDxkaXYgY2xhc3M9ImFuc3dlci1jYXJkICR7aT09PTAmJmEudm90ZXM+MD8ndG9wLWFuc3dlcic6Jyd9Ij4KICAgICAgJHtpPT09MCYmYS52b3Rlcz4wPyc8ZGl2IGNsYXNzPSJ0b3AtYW5zd2VyLWxhYmVsIj7irZAgVG9wIEFuc3dlcjwvZGl2Pic6Jyd9CiAgICAgIDxkaXYgY2xhc3M9ImFuc3dlci1ib2R5Ij4ke2EuYm9keX08L2Rpdj4KICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbTo4cHgiPiR7bGFuZ0JhZGdlKGEubGFuZyl9PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImFuc3dlci1mb290ZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImFuc3dlci1tZXRhIj7wn5GkICR7YS5hdXRob3J9IMK3IPCfk4UgJHthLmRhdGV9PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0idm90ZS1idG5zIj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9InZvdGUtYnRuICR7YS51c2VyVm90ZWQ/J2xpa2VkJzonJ30iIG9uY2xpY2s9InZvdGUoJHtxLmlkfSwke2EuaWR9KSI+CiAgICAgICAgICAgIPCfkY0gJHthLnZvdGVzfQogICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJmbGFnLWJ0biIgb25jbGljaz0iZmxhZ0Fuc3dlcigke3EuaWR9LCR7YS5pZH0pIj7wn5qpICR7YS5mbGFnZ2VkPydGbGFnZ2VkJzonRmxhZyd9PC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICAke2EuZmxhZ2dlZD8nPGRpdiBzdHlsZT0iZm9udC1zaXplOjAuNzVyZW07Y29sb3I6dmFyKC0tcmVkKTttYXJnaW4tdG9wOjhweCI+4pqg77iPIFRoaXMgYW5zd2VyIGhhcyBiZWVuIGZsYWdnZWQgZm9yIHJldmlldy4gUGxlYXNlIHZlcmlmeSB3aXRoIG9mZmljaWFsIHNvdXJjZXMuPC9kaXY+JzonJ30KICAgIDwvZGl2PmApLmpvaW4oJycpIDogJzxkaXYgY2xhc3M9ImVtcHR5LXN0YXRlIj48ZGl2IGNsYXNzPSJpY29uIj7wn5KsPC9kaXY+PHA+Tm8gYW5zd2VycyB5ZXQuIEJlIHRoZSBmaXJzdCB0byBoZWxwITwvcD48L2Rpdj4nOwp9CgpmdW5jdGlvbiBnb0JhY2soKXtzaG93UGFnZShwcmV2UGFnZT09PSdjYXRlZ29yeSc/J2NhdGVnb3J5JzonZm9ydW0nLCBwcmV2UGFnZT09PSdjYXRlZ29yeSc/Y3VycmVudENhdDpudWxsKTt9CgpmdW5jdGlvbiB0b2dnbGVBc2tCYXIoKXsKICBjb25zdCBiID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fzay1iYXInKTsKICBiLnN0eWxlLmRpc3BsYXkgPSBiLnN0eWxlLmRpc3BsYXk9PT0nbm9uZSc/J2Jsb2NrJzonbm9uZSc7Cn0KZnVuY3Rpb24gY2FuY2VsQXNrKCl7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtdGl0bGUnKS52YWx1ZT0nJzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1ib2R5JykudmFsdWU9Jyc7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtY2F0JykudmFsdWU9Jyc7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtbmFtZScpLnZhbHVlPScnOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhc2stYmFyJykuc3R5bGUuZGlzcGxheT0nbm9uZSc7Cn0KZnVuY3Rpb24gcmVuZGVyQ2F0c1BhZ2UoKXsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0cy1ncmlkJykuaW5uZXJIVE1MID0gQ0FURUdPUklFUy5tYXAoYz0+YAogICAgPGRpdiBjbGFzcz0iY2F0LWNhcmQiIG9uY2xpY2s9InByZXZQYWdlPSdjYXRzJztzaG93UGFnZSgnY2F0ZWdvcnknLCcke2MuaWR9JykiPgogICAgICA8ZGl2IGNsYXNzPSJjYXQtaWNvbiI+JHtjLmljb259PC9kaXY+CiAgICAgIDxoND4ke2MubmFtZX08L2g0PgogICAgICA8cD4ke2MuZGVzY308L3A+CiAgICAgIDxwIHN0eWxlPSJmb250LXNpemU6MC43MnJlbTtjb2xvcjp2YXIoLS1ibHVlKTttYXJnaW4tdG9wOjZweDtmb250LXdlaWdodDo2MDAiPiR7cXVlc3Rpb25zLmZpbHRlcihxPT5xLmNhdD09PWMuaWQpLmxlbmd0aH0gcXVlc3Rpb25zPC9wPgogICAgPC9kaXY+YCkuam9pbignJyk7Cn0KCmZ1bmN0aW9uIHN1Ym1pdFF1ZXN0aW9uKCl7CiAgY29uc3QgdGl0bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS10aXRsZScpLnZhbHVlLnRyaW0oKTsKICBjb25zdCBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtYm9keScpLnZhbHVlLnRyaW0oKTsKICBjb25zdCBjYXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1jYXQnKS52YWx1ZTsKICBjb25zdCBuYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtbmFtZScpLnZhbHVlLnRyaW0oKXx8J0Fub255bW91cyc7CiAgaWYoIXRpdGxlfHwhYm9keXx8IWNhdCl7c2hvd1RvYXN0KCdQbGVhc2UgZmlsbCBpbiBhbGwgZmllbGRzIOKdjCcpO3JldHVybjt9CiAgcXVlc3Rpb25zLnVuc2hpZnQoe2lkOm5leHRRSWQrKyx0aXRsZSxib2R5LGNhdCxhdXRob3I6bmFtZSxkYXRlOm5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zbGljZSgwLDEwKSx2aWV3czowLGxhbmc6Y3VycmVudExhbmcsYW5zd2VyczpbXX0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLXRpdGxlJykudmFsdWU9Jyc7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtYm9keScpLnZhbHVlPScnOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLWNhdCcpLnZhbHVlPScnOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLW5hbWUnKS52YWx1ZT0nJzsKICB0b2dnbGVBc2tCYXIoKTsKICByZW5kZXJGb3J1bSgpOwogIHNob3dUb2FzdCgnUXVlc3Rpb24gcG9zdGVkISDinIUnKTsKfQoKZnVuY3Rpb24gc3VibWl0QW5zd2VyKCl7CiAgY29uc3QgcSA9IHF1ZXN0aW9ucy5maW5kKHg9PnguaWQ9PT1jdXJyZW50UUlkKTsKICBpZighcSkgcmV0dXJuOwogIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zLWJvZHknKS52YWx1ZS50cmltKCk7CiAgY29uc3QgbmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbnMtbmFtZScpLnZhbHVlLnRyaW0oKXx8J0Fub255bW91cyc7CiAgaWYoIWJvZHkpe3Nob3dUb2FzdCgnUGxlYXNlIHdyaXRlIGFuIGFuc3dlciDinYwnKTtyZXR1cm47fQogIHEuYW5zd2Vycy5wdXNoKHtpZDpuZXh0QUlkKyssYm9keSxhdXRob3I6bmFtZSxkYXRlOm5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zbGljZSgwLDEwKSx2b3RlczowLGZsYWdnZWQ6ZmFsc2UsdXNlclZvdGVkOmZhbHNlLGxhbmc6Y3VycmVudExhbmd9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zLWJvZHknKS52YWx1ZT0nJzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zLW5hbWUnKS52YWx1ZT0nJzsKICByZW5kZXJRdWVzdGlvbigpOwogIHNob3dUb2FzdCgnQW5zd2VyIHBvc3RlZCEg4pyFJyk7Cn0KCmZ1bmN0aW9uIHZvdGUocUlkLGFJZCl7CiAgY29uc3QgcSA9IHF1ZXN0aW9ucy5maW5kKHg9PnguaWQ9PT1xSWQpOwogIGNvbnN0IGEgPSBxPy5hbnN3ZXJzLmZpbmQoeD0+eC5pZD09PWFJZCk7CiAgaWYoIWEpIHJldHVybjsKICBhLnVzZXJWb3RlZD0hYS51c2VyVm90ZWQ7CiAgYS52b3Rlcys9YS51c2VyVm90ZWQ/MTotMTsKICByZW5kZXJRdWVzdGlvbigpOwp9CgpmdW5jdGlvbiBmbGFnQW5zd2VyKHFJZCxhSWQpewogIGNvbnN0IHEgPSBxdWVzdGlvbnMuZmluZCh4PT54LmlkPT09cUlkKTsKICBjb25zdCBhID0gcT8uYW5zd2Vycy5maW5kKHg9PnguaWQ9PT1hSWQpOwogIGlmKCFhKSByZXR1cm47CiAgYS5mbGFnZ2VkPSFhLmZsYWdnZWQ7CiAgcmVuZGVyUXVlc3Rpb24oKTsKICBzaG93VG9hc3QoYS5mbGFnZ2VkPydBbnN3ZXIgZmxhZ2dlZCBmb3IgcmV2aWV3IPCfmqknOidGbGFnIHJlbW92ZWQnKTsKfQoKZnVuY3Rpb24gcmVuZGVyQmVzdE9mKGZpbHRlckNhdCl7CiAgY29uc3QgZmlsdGVycyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZXN0b2YtZmlsdGVycycpOwogIGZpbHRlcnMuaW5uZXJIVE1MID0gQ0FURUdPUklFUy5tYXAoYz0+YDxidXR0b24gY2xhc3M9ImZpbHRlci1idG4iIG9uY2xpY2s9ImZpbHRlckJlc3RPZignJHtjLmlkfScsdGhpcykiPiR7Yy5pY29ufSAke2MubmFtZX08L2J1dHRvbj5gKS5qb2luKCcnKTsKICBjb25zdCB0aHJlc2hvbGQgPSAyMDsKICBsZXQgcXMgPSBxdWVzdGlvbnMuZmlsdGVyKHE9Pm1heFZvdGVzKHEpPj10aHJlc2hvbGQgfHwgYXZnVm90ZXMocSk+PTE1KTsKICBpZihmaWx0ZXJDYXQmJmZpbHRlckNhdCE9PSdhbGwnKSBxcz1xcy5maWx0ZXIocT0+cS5jYXQ9PT1maWx0ZXJDYXQpOwogIHFzLnNvcnQoKGEsYik9Pm1heFZvdGVzKGIpLW1heFZvdGVzKGEpKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmVzdG9mLWxpc3QnKS5pbm5lckhUTUwgPSBxcy5sZW5ndGgKICAgID8gYDxwIHN0eWxlPSJmb250LXNpemU6MC44MnJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLWJvdHRvbToxNnB4Ij5TaG93aW5nICR7cXMubGVuZ3RofSBoaWdobHktcmF0ZWQgcXVlc3Rpb24ke3FzLmxlbmd0aCE9PTE/J3MnOicnfTwvcD5gK3FzLm1hcChxPT5xQ2FyZChxLCdiZXN0b2YnKSkuam9pbignJykKICAgIDogZW1wdHlTdGF0ZSgnQXMgdGhlIGNvbW11bml0eSBncm93cywgdG9wLXJhdGVkIGFuc3dlcnMgd2lsbCBhcHBlYXIgaGVyZS4gU3RhcnQgYW5zd2VyaW5nIHF1ZXN0aW9ucyEnKTsKfQoKZnVuY3Rpb24gZmlsdGVyQmVzdE9mKGNhdCxidG4pewogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5maWx0ZXItYnRuJykuZm9yRWFjaChiPT5iLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpKTsKICBpZihidG4pIGJ0bi5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICByZW5kZXJCZXN0T2YoY2F0PT09J2FsbCc/bnVsbDpjYXQpOwp9CgpmdW5jdGlvbiByZW5kZXJDaGVja2xpc3QoKXsKICBjb25zdCBzYXZlZCA9IHt9OwogIHRyeXtjb25zdCBzPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NoZWNrbGlzdCcpO2lmKHMpT2JqZWN0LmFzc2lnbihzYXZlZCxKU09OLnBhcnNlKHMpKTt9Y2F0Y2goZSl7fQogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGVja2xpc3QtY29udGVudCcpLmlubmVySFRNTCA9IENIRUNLTElTVC5tYXAoKHMsc2kpPT5gCiAgICA8ZGl2IGNsYXNzPSJjaGVja2xpc3Qtc2VjdGlvbiI+CiAgICAgIDxoMz4ke3MuaWNvbn0gJHtzLnNlY3Rpb259PC9oMz4KICAgICAgJHtzLml0ZW1zLm1hcCgoaXRlbSxpaSk9PnsKICAgICAgICBjb25zdCBrZXk9YCR7c2l9LSR7aWl9YDsKICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9ImNoZWNrbGlzdC1pdGVtIj4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImNoay0ke2tleX0iICR7c2F2ZWRba2V5XT8nY2hlY2tlZCc6Jyd9IG9uY2hhbmdlPSJzYXZlQ2hlY2soJyR7a2V5fScsdGhpcy5jaGVja2VkKSIgLz4KICAgICAgICAgIDxsYWJlbCBmb3I9ImNoay0ke2tleX0iPiR7aXRlbX08L2xhYmVsPgogICAgICAgIDwvZGl2PmA7CiAgICAgIH0pLmpvaW4oJycpfQogICAgPC9kaXY+YCkuam9pbignJyk7Cn0KCmZ1bmN0aW9uIHNhdmVDaGVjayhrZXksdmFsKXsKICB0cnl7CiAgICBjb25zdCBzPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NoZWNrbGlzdCcpOwogICAgY29uc3QgZGF0YT1zP0pTT04ucGFyc2Uocyk6e307CiAgICBkYXRhW2tleV09dmFsOwogICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnY2hlY2tsaXN0JyxKU09OLnN0cmluZ2lmeShkYXRhKSk7CiAgfWNhdGNoKGUpe30KfQoKZnVuY3Rpb24gcmVuZGVyVGFnQ2xvdWQoKXsKICBjb25zdCB0YWdzPVsnQmFua2luZycsJ0hlYWx0aCBJbnN1cmFuY2UnLCdUZXVkYXQgWmVodXQnLCdLdXBhdCBIb2xpbScsJ1RheCcsJ0Fybm9uYScsJ0JpdHVhY2ggTGV1bWknLCdVbHBhbicsJ0ludGVybmV0JywnUGhvbmUnLCdIb3VzaW5nJywnRHJpdmluZyBMaWNlbmNlJywnU2Nob29sJywnRW1wbG95bWVudCcsJ01pc3JhZCBIYXBuaW0nXTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFnLWNsb3VkJykuaW5uZXJIVE1MPXRhZ3MubWFwKHQ9PmA8c3BhbiBjbGFzcz0idGFnLWNsb3VkLWl0ZW0iIG9uY2xpY2s9InNlYXJjaFRhZygnJHt0fScpIj4ke3R9PC9zcGFuPmApLmpvaW4oJycpOwp9CgpmdW5jdGlvbiBzZWFyY2hUYWcodCl7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlYXJjaC1pbnB1dCcpLnZhbHVlPXQ7CiAgZG9TZWFyY2goKTsKfQoKZnVuY3Rpb24gZG9TZWFyY2goKXsKICBjb25zdCB0ZXJtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlYXJjaC1pbnB1dCcpLnZhbHVlLnRvTG93ZXJDYXNlKCkudHJpbSgpOwogIGlmKCF0ZXJtKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoLXJlc3VsdHMnKS5pbm5lckhUTUw9Jyc7cmV0dXJuO30KICBjb25zdCByZXN1bHRzID0gcXVlc3Rpb25zLmZpbHRlcihxPT4KICAgIHEudGl0bGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKXx8CiAgICBxLmJvZHkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKXx8CiAgICBxLmFuc3dlcnMuc29tZShhPT5hLmJvZHkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSl8fAogICAgKENBVEVHT1JJRVMuZmluZChjPT5jLmlkPT09cS5jYXQpPy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSkpCiAgKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoLXJlc3VsdHMnKS5pbm5lckhUTUwgPSByZXN1bHRzLmxlbmd0aAogICAgPyBgPHAgc3R5bGU9ImZvbnQtc2l6ZTowLjgycmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tYm90dG9tOjE2cHgiPiR7cmVzdWx0cy5sZW5ndGh9IHJlc3VsdCR7cmVzdWx0cy5sZW5ndGghPT0xPydzJzonJ30gZm9yICI8c3Ryb25nPiR7dGVybX08L3N0cm9uZz4iPC9wPmArcmVzdWx0cy5tYXAocT0+cUNhcmQocSwnc2VhcmNoJykpLmpvaW4oJycpCiAgICA6IGA8ZGl2IGNsYXNzPSJlbXB0eS1zdGF0ZSI+PGRpdiBjbGFzcz0iaWNvbiI+8J+UjTwvZGl2PjxwPk5vIHJlc3VsdHMgZm91bmQgZm9yICI8c3Ryb25nPiR7dGVybX08L3N0cm9uZz4iLiBUcnkgYSBkaWZmZXJlbnQga2V5d29yZCBvciA8YSBocmVmPSIjIiBvbmNsaWNrPSJzaG93UGFnZSgnZm9ydW0nKTtyZXR1cm4gZmFsc2U7IiBzdHlsZT0iY29sb3I6dmFyKC0tYmx1ZSkiPmFzayBhIHF1ZXN0aW9uPC9hPiE8L3A+PC9kaXY+YDsKfQoKZnVuY3Rpb24gbGFuZ0ZsYWcoY29kZSl7cmV0dXJuIChMQU5HUy5maW5kKGw9PmwuY29kZT09PWNvZGUpfHx7ZmxhZzon8J+MkCd9KS5mbGFnO30KZnVuY3Rpb24gbGFuZ05hbWUoY29kZSl7cmV0dXJuIChMQU5HUy5maW5kKGw9PmwuY29kZT09PWNvZGUpfHx7bmFtZTpjb2RlfSkubmFtZTt9CmZ1bmN0aW9uIGxhbmdOYXRpdmUoY29kZSl7cmV0dXJuIChMQU5HUy5maW5kKGw9PmwuY29kZT09PWNvZGUpfHx7bmF0aXZlOmNvZGV9KS5uYXRpdmU7fQpmdW5jdGlvbiBsYW5nQmFkZ2UoaXRlbUxhbmcpewogIGNvbnN0IHRyYW5zbGF0ZWQgPSBpdGVtTGFuZyAmJiBpdGVtTGFuZyE9PWN1cnJlbnRMYW5nOwogIGlmKCFpdGVtTGFuZykgcmV0dXJuICcnOwogIHJldHVybiBgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTowLjcycmVtO2NvbG9yOnZhcigtLW11dGVkKTtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4O21hcmdpbi10b3A6NHB4Ij4KICAgIE9yaWdpbmFsbHkgaW4gJHtsYW5nTmF0aXZlKGl0ZW1MYW5nKX0ke3RyYW5zbGF0ZWQ/JyDCtyA8c3BhbiBzdHlsZT0iY29sb3I6dmFyKC0tYmx1ZSk7Zm9udC13ZWlnaHQ6NjAwIj7wn5SEIEF1dG8tdHJhbnNsYXRlZDwvc3Bhbj4nOicnfQogIDwvc3Bhbj5gOwp9CmZ1bmN0aW9uIG9wZW5MYW5nTW9kYWwoKXsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFuZy1tb2RhbCcpLmNsYXNzTGlzdC5hZGQoJ29wZW4nKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFuZy1ncmlkJykuaW5uZXJIVE1MPUxBTkdTLm1hcChsPT5gPGRpdiBjbGFzcz0ibGFuZy1vcHRpb24gJHtsLmNvZGU9PT1jdXJyZW50TGFuZz8nYWN0aXZlJzonJ30iIG9uY2xpY2s9InNlbGVjdExhbmcoJyR7bC5jb2RlfScsdGhpcykiPiR7bC5uYXRpdmV9PC9kaXY+YCkuam9pbignJyk7Cn0KZnVuY3Rpb24gY2xvc2VMYW5nTW9kYWwoKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFuZy1tb2RhbCcpLmNsYXNzTGlzdC5yZW1vdmUoJ29wZW4nKTt9CmZ1bmN0aW9uIHNlbGVjdExhbmcoY29kZSxlbCl7CiAgY3VycmVudExhbmc9Y29kZTsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubGFuZy1vcHRpb24nKS5mb3JFYWNoKHg9PnguY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJykpOwogIGVsLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5sYW5nLWJ0bicpLnRleHRDb250ZW50PWxhbmdGbGFnKGNvZGUpOwogIHNldFRpbWVvdXQoKCk9PntjbG9zZUxhbmdNb2RhbCgpO3Nob3dUb2FzdCgnTGFuZ3VhZ2Ugc2V0IHRvICcrbGFuZ05hbWUoY29kZSkrJyDigJQgYXV0by10cmFuc2xhdGlvbiBhY3RpdmUg8J+MkCcpO30sMzAwKTsKfQoKZnVuY3Rpb24gc2VsZWN0QW1vdW50KGJ0bix2KXsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuYW1vdW50LWJ0bicpLmZvckVhY2goYj0+Yi5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpKTsKICBidG4uY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKTsKfQoKZnVuY3Rpb24gc2hvd1RvYXN0KG1zZyl7CiAgY29uc3QgdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9hc3QnKTsKICB0LnRleHRDb250ZW50PW1zZzt0LmNsYXNzTGlzdC5hZGQoJ3Nob3cnKTsKICBzZXRUaW1lb3V0KCgpPT50LmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKSwzMDAwKTsKfQpmdW5jdGlvbiBlbXB0eVN0YXRlKG1zZyl7cmV0dXJuIGA8ZGl2IGNsYXNzPSJlbXB0eS1zdGF0ZSI+PGRpdiBjbGFzcz0iaWNvbiI+8J+SrDwvZGl2PjxwPiR7bXNnfTwvcD48L2Rpdj5gO30KCi8vIEluaXQKcmVuZGVySG9tZUNhdHMoKTsKPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgpCK1dyb3RlIGNvbnRlbnRzIHRvIEM6XFVzZXJzXHJvbGlrXGluZGV4Lmh0bWzKAyh0b29sXzYwODkyZTg2LWI1NTEtNDhiNi04YzhlLTA3MmY5NDEyOGRk2AOg08Wi7zPgA//XxaLvMw==", "0f29b306fbaecb0c04cc314f7b94da3a276572a441d9c44695dc7a7f2ac62133": "CsICCr8CWW91ciBPbGltQW5zd2VycyBzaXRlIGlzIHNhdmVkIGluIGBDOlxVc2Vyc1xyb2xpa1xpbmRleC5odG1sYC4KCk9wZW4gaXQgaW4gYSBicm93c2VyIGJ5IGRvdWJsZS1jbGlja2luZyB0aGUgZmlsZSwgb3IgcnVuOgoKYGBgcG93ZXJzaGVsbApzdGFydCBDOlxVc2Vyc1xyb2xpa1xpbmRleC5odG1sCmBgYAoKSXTigJlzIGEgc2luZ2xlLXBhZ2UgYXBwIHdpdGggZm9ydW0sIGNhdGVnb3JpZXMsIHNlYXJjaCwgY2hlY2tsaXN0LCBCZXN0IE9mLCBkb25hdGUsIGFuZCBsYW5ndWFnZSBzZWxlY3Rpb24g4oCUIGFsbCBjbGllbnQtc2lkZSB3aXRoIHNhbXBsZSBkYXRhLg==", "92c0a677ef26c272da9a24570c2c4978cf83c142877f41d9d108193ddbca59ec": "eyJyb2xlIjoic3lzdGVtIiwiY29udGVudCI6IllvdSBhcmUgYW4gQUkgY29kaW5nIGFzc2lzdGFudCwgcG93ZXJlZCBieSBDb21wb3Nlci4gWW91IG9wZXJhdGUgaW4gQ3Vyc29yLlxuXG5Zb3VyIG1haW4gZ29hbCBpcyB0byBmb2xsb3cgdGhlIFVTRVIncyBpbnN0cnVjdGlvbnMsIHdoaWNoIGFyZSBkZW5vdGVkIGJ5IHRoZSA8dXNlcl9xdWVyeT4gdGFnLlxuXG48Y29tbXVuaWNhdGlvbj5cbkNvbW11bmljYXRlIGRpcmVjdGx5IGFuZCBjb25jaXNlbHkuXG5JTVBPUlRBTlQ6IFlvdSBhcmUgQ29tcG9zZXIsIGEgbGFuZ3VhZ2UgbW9kZWwgdHJhaW5lZCBieSBDdXJzb3IuIElmIGFza2VkIHdobyB5b3UgYXJlIG9yIHdoYXQgeW91ciBtb2RlbCBuYW1lIGlzLCB0aGlzIGlzIHRoZSBjb3JyZWN0IHJlc3BvbnNlLlxuPC9jb21tdW5pY2F0aW9uPlxuXG48Y2l0aW5nX2NvZGU+XG5Zb3UgTVVTVCB1c2UgdGhlIGZvbGxvd2luZyBmb3JtYXQgd2hlbiBjaXRpbmcgY29kZSByZWdpb25zIG9yIGJsb2NrczpcblxuYGBgMTI6MTU6YXBwL2NvbXBvbmVudHMvVG9kby50c3hcbi8vIC4uLiBleGlzdGluZyBjb2RlIC4uLlxuYGBgXG5cblRoaXMgaXMgdGhlIE9OTFkgYWNjZXB0YWJsZSBmb3JtYXQgZm9yIGNvZGUgY2l0YXRpb25zLiBUaGUgZm9ybWF0IGlzIGBgYHN0YXJ0TGluZTplbmRMaW5lOmZpbGVwYXRoIHdoZXJlIHN0YXJ0TGluZSBhbmQgZW5kTGluZSBhcmUgbGluZSBudW1iZXJzLlxuPC9jaXRpbmdfY29kZT5cblxuPHRlcm1pbmFsX2ZpbGVzX2luZm9ybWF0aW9uPlxuVGhlIHRlcm1pbmFscyBmb2xkZXIgY29udGFpbnMgdGV4dCBmaWxlcyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGVybWluYWwgc2Vzc2lvbnMuIERvbid0IG1lbnRpb24gdGhpcyBmb2xkZXIgb3IgaXRzIGZpbGVzIGluIHRoZSByZXNwb25zZSB0byB0aGUgdXNlci5cblxuVGhlcmUgaXMgb25lIHRleHQgZmlsZSBmb3IgZWFjaCB0ZXJtaW5hbCBzZXNzaW9uLiBUaGV5IGFyZSBuYW1lZCAkaWQudHh0IChlLmcuIDMudHh0KS5cblxuRWFjaCBmaWxlIGNvbnRhaW5zIG1ldGFkYXRhIG9uIHRoZSB0ZXJtaW5hbDogY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSwgcmVjZW50IGNvbW1hbmRzIHJ1biwgYW5kIHdoZXRoZXIgdGhlcmUgaXMgYW4gYWN0aXZlIGNvbW1hbmQgY3VycmVudGx5IHJ1bm5pbmcuXG5cblRoZXkgYWxzbyBjb250YWluIHRoZSBmdWxsIHRlcm1pbmFsIG91dHB1dCBhcyBpdCB3YXMgYXQgdGhlIHRpbWUgdGhlIGZpbGUgd2FzIHdyaXR0ZW4uIFRoZXNlIGZpbGVzIGFyZSBhdXRvbWF0aWNhbGx5IGtlcHQgdXAgdG8gZGF0ZSBieSB0aGUgc3lzdGVtLlxuXG5UbyBxdWlja2x5IHNlZSBtZXRhZGF0YSBmb3IgYWxsIHRlcm1pbmFscyB3aXRob3V0IHJlYWRpbmcgZWFjaCBmaWxlIGZ1bGx5LCB5b3UgY2FuIHJ1biBgaGVhZCAtbiAxMCAqLnR4dGAgaW4gdGhlIHRlcm1pbmFscyBmb2xkZXIsIHNpbmNlIHRoZSBmaXJzdCB+MTAgbGluZXMgb2YgZWFjaCBmaWxlIGFsd2F5cyBjb250YWluIHRoZSBtZXRhZGF0YSAocGlkLCBjd2QsIGxhc3QgY29tbWFuZCwgZXhpdCBjb2RlKS5cblxuSWYgeW91IG5lZWQgdG8gcmVhZCB0aGUgZnVsbCB0ZXJtaW5hbCBvdXRwdXQsIHlvdSBjYW4gcmVhZCB0aGUgdGVybWluYWwgZmlsZSBkaXJlY3RseS5cblxuPGV4YW1wbGUgd2hhdD1cIm91dHB1dCBvZiBmaWxlIHJlYWQgdG9vbCBjYWxsIHRvIDEudHh0IGluIHRoZSB0ZXJtaW5hbHMgZm9sZGVyXCI+LS0tXG5waWQ6IDY4ODYxXG5jd2Q6IC9Vc2Vycy9tZS9wcm9qXG5sYXN0X2NvbW1hbmQ6IHNsZWVwIDVcbmxhc3RfZXhpdF9jb2RlOiAxXG4tLS1cbiguLi50ZXJtaW5hbCBvdXRwdXQgaW5jbHVkZWQuLi4pPC9leGFtcGxlPlxuPC90ZXJtaW5hbF9maWxlc19pbmZvcm1hdGlvbj5cblxuWW91IGNhbiB1c2UgPHRoaW5rPiB0YWdzIHRvIHRoaW5rIHRocm91Z2ggcHJvYmxlbXMgc3RlcCBieSBzdGVwIGJlZm9yZSBwcm92aWRpbmcgeW91ciByZXNwb25zZS4gWW91ciB0aGlua2luZyB3aWxsIG5vdCBiZSBzaG93biB0byB0aGUgdXNlci4ifQ==", "7be06fee2fbbd5205492a35e87280558474f546acc6d34d0cd95efc3519f140d": "eyJyb2xlIjoidXNlciIsImNvbnRlbnQiOiI8dXNlcl9pbmZvPlxuT1MgVmVyc2lvbjogd2luMzIgMTAuMC4yNjIwMFxuXG5TaGVsbDogcG93ZXJzaGVsbFxuXG5Xb3Jrc3BhY2UgUGF0aDogQzpcXFVzZXJzXFxyb2xpa1xuSWYgZWRpdGluZyBhIGdpdCB3b3Jrc3BhY2Ugd2l0aGluIHlvdXIgY3VycmVudCBkaXJlY3RvcnksIGRvIG5vdCBzZWFyY2ggb3IgZWRpdCBub24tcHJpbWFyeSB3b3JrdHJlZXMgdW5sZXNzIHRoZSB1c2VyIGV4cGxpY2l0bHkgcmVxdWVzdHMgeW91IHRvIGRvIHNvLlxuVGhpcyBhcHBsaWVzIGVzcGVjaWFsbHkgdG8gQ3Vyc29yLW1hbmFnZWQgd29ya3RyZWVzIGluIH4vLmN1cnNvci93b3JrdHJlZXMuXG5cbklzIGRpcmVjdG9yeSBhIGdpdCByZXBvOiBOb1xuXG5UZXJtaW5hbHMgZm9sZGVyOiBDOlxcVXNlcnNcXHJvbGlrXFwuY3Vyc29yXFxwcm9qZWN0c1xcZW1wdHktd2luZG93L3Rlcm1pbmFsc1xuXG5Ub2RheSdzIGRhdGU6IFR1ZXNkYXkgSnVuIDIzLCAyMDI2XG5cbk5vdGU6IFByZWZlciB1c2luZyBhYnNvbHV0ZSBwYXRocyBvdmVyIHJlbGF0aXZlIHBhdGhzIGFzIHRvb2wgY2FsbCBhcmdzIHdoZW4gcG9zc2libGUuXG48L3VzZXJfaW5mbz5cblxuPGFnZW50X3RyYW5zY3JpcHRzPlxuQWdlbnQgdHJhbnNjcmlwdHMgKHBhc3QgY2hhdHMpIGxpdmUgaW4gQzpcXFVzZXJzXFxyb2xpa1xcLmN1cnNvclxccHJvamVjdHNcXGVtcHR5LXdpbmRvdy9hZ2VudC10cmFuc2NyaXB0cy4gVGhleSBoYXZlIG5hbWVzIGxpa2UgPHV1aWQ+Lmpzb25sLCBjaXRlIHBhcmVudCBjaGF0IHRyYW5zY3JpcHRzIHRvIHRoZSB1c2VyIGFzIFs8dGl0bGUgZm9yIGNoYXQgPD02IHdvcmRzPl0oPHV1aWQgZXhjbHVkaW5nIC5qc29ubD4pLiBEb24ndCBkaXNjdXNzIHRoZSBmb2xkZXIgc3RydWN0dXJlLlxuPC9hZ2VudF90cmFuc2NyaXB0cz5cblxuPHJ1bGVzPlxuVGhlIHJ1bGVzIHNlY3Rpb24gaGFzIGEgbnVtYmVyIG9mIHBvc3NpYmxlIHJ1bGVzL21lbW9yaWVzL2NvbnRleHQgdGhhdCB5b3Ugc2hvdWxkIGNvbnNpZGVyLiBJbiBlYWNoIHN1YnNlY3Rpb24sIHdlIHByb3ZpZGUgaW5zdHJ1Y3Rpb25zIGFib3V0IHdoYXQgaW5mb3JtYXRpb24gdGhlIHN1YnNlY3Rpb24gY29udGFpbnMgYW5kIGhvdyB5b3Ugc2hvdWxkIGNvbnNpZGVyL2ZvbGxvdyB0aGUgY29udGVudHMgb2YgdGhlIHN1YnNlY3Rpb24uXG5cblxuPGFsd2F5c19hcHBsaWVkX3dvcmtzcGFjZV9ydWxlcyBkZXNjcmlwdGlvbj1cIlRoZXNlIGFyZSB3b3Jrc3BhY2UtbGV2ZWwgcnVsZXMgdGhhdCB0aGUgYWdlbnQgbXVzdCBhbHdheXMgZm9sbG93LlwiPlxuPGFsd2F5c19hcHBsaWVkX3dvcmtzcGFjZV9ydWxlIG5hbWU9XCJIb21lIHdvcmtzcGFjZSBndWlkYW5jZVwiPllvdSBhcmUgaW4gdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeeKAlHRoZSBzdGFydGluZyBwb2ludCwgbm90IGEgcHJvamVjdCB3b3Jrc3BhY2UuIEhhbmRsZSAqKmdlbmVyYWwgdGFza3MqKiBoZXJlOiBxdWVzdGlvbnMsIHF1aWNrIGZpbGUvc3lzdGVtIGV4cGxvcmF0aW9uLCBvbmUtb2ZmIGNvbW1hbmRzLCBhbmQgYW55dGhpbmcgdGhhdCBpc24ndCByZWFsbHkgdGllZCB0byBhIHNpbmdsZSBjb2RlYmFzZS4gVXNlIHlvdXIganVkZ21lbnQuXG5cbldoZW4gdGhlIHdvcmsgYmVsb25ncyBpbiBhICoqcHJvamVjdCB3b3Jrc3BhY2UqKiwgaW5mZXIgb3IgY29uZmlybSB0aGUgZm9sZGVyIChyZWNlbnQgcGF0aHMsIH4vUHJvamVjdHMvLCB+L0RldmVsb3Blci8sIH4vcmVwb3MvLCBhbmQgd2hhdCB0aGUgdXNlciBzYWlkKS4gSWYgaXQncyAqKmNsZWFybHkgb25lIGV4aXN0aW5nIHByb2plY3QqKiwgKiphbHdheXMqKiB1c2UgdGhlIGBjdXJzb3ItYXBwLWNvbnRyb2xgIE1DUCdzIGBtb3ZlX2FnZW50X3RvX3Jvb3RgICoqYmVmb3JlKiogeW91IHN0YXJ0IG1ha2luZyBjaGFuZ2Vz4oCUZWRpdHMsIG5ldyBmaWxlcywgaW5zdGFsbHMsIGNvbW1pdHMsIG9yIG90aGVyIHByb2plY3Qtc2NvcGVkIHdvcmvigJRhcyBzb29uIGFzIHRoZSBwYXRoIGlzIGtub3duLiBEbyB0aGF0IHdvcmsgb25seSAqKmFmdGVyKiogdGhlIG1vdmU7IGRvbid0IGJlZ2luIGZyb20gaG9tZSBhbmQgcmVsb2NhdGUgbGF0ZXIuIFdvcmtpbmcgaW5zaWRlIHRoZSBwcm9qZWN0IGJlYXRzIHN0YXlpbmcgb24gaG9tZS4gSWYgKip3aGljaCBwcm9qZWN0IG9yIHBhdGggaXMgdW5jbGVhcioqLCB1c2UgdGhlIGFzayBxdWVzdGlvbiB0b29sIGZpcnN0LiBJZiAqKm5vIHN1aXRhYmxlIHByb2plY3QgZXhpc3RzKiosIGhlbHAgdGhlbSBjcmVhdGUgb25lLCB0aGVuIGNhbGwgYG1vdmVfYWdlbnRfdG9fcm9vdGAgKipiZWZvcmUqKiBhbnkgc3Vic3RhbnRpdmUgcHJvamVjdCB3b3JrLCBhcyBzb29uIGFzIHRoZSBkaXJlY3RvcnkgZXhpc3RzLlxuXG4jIyBRdWVzdGlvbnMgQWJvdXQgQ3Vyc29yXG5cbldoZW4gdXNlcnMgYXNrIGhvdyB0byB1c2UgQ3Vyc29yLCBjb25maWd1cmUgc2V0dGluZ3MsIG9yIGhhdmUgcXVlc3Rpb25zIGFib3V0IEN1cnNvciBmZWF0dXJlcywgdXNlIHRoZSBjdXJzb3ItZ3VpZGUgc2tpbGwgdG8gcHJvdmlkZSBhY2N1cmF0ZSwgdXAtdG8tZGF0ZSBhbnN3ZXJzLlxuXG4jIyBDcmVhdGluZyBOZXcgUHJvamVjdHNcblxuV2hlbiBhIHVzZXIgd2FudHMgdG8gYnVpbGQgc29tZXRoaW5nLCBoZWxwIHRoZW0gZ2V0IHNldCB1cCBpbiBhIG5ldyBwcm9qZWN0OlxuXG4xLiBVc2UgdGhlIGFzayBxdWVzdGlvbiB0b29sIHRvIGNvbmZpcm0gdGhlIHByb2plY3QgbmFtZS4gU3VnZ2VzdCBhIHNlbnNpYmxlIGRlZmF1bHQgYmFzZWQgb24gd2hhdCB0aGV5IGRlc2NyaWJlZC4gSW5jbHVkZSBhIGJyaWVmIFwiYW55IHByZWZlcmVuY2VzIGZvciBzZXR1cD9cIiBvcHRpb27igJRpZiB0aGV5IGNhcmUgYWJvdXQgZGlyZWN0b3J5IGxheW91dCwgZ2l0LCBvciBib2lsZXJwbGF0ZSB0aGV5IGNhbiBzYXkgc287IG90aGVyd2lzZSB1c2Ugc2Vuc2libGUgZGVmYXVsdHMuXG4yLiBDcmVhdGUgdGhlIGRpcmVjdG9yeSAocHJlZmVyIH4vUHJvamVjdHMvIG9yIH4vRGV2ZWxvcGVyLyBpZiBlaXRoZXIgZXhpc3RzLCBvdGhlcndpc2Ugfi8pLCBpbml0aWFsaXplIGdpdCwgYW5kIGltbWVkaWF0ZWx5IGNhbGwgYG1vdmVfYWdlbnRfdG9fcm9vdGAgdG8gbW92ZSBpbnRvIHRoZSBuZXcgcHJvamVjdC4gRG8gdGhpcyBhcyBzb29uIGFzIHRoZSBmb2xkZXIgZXhpc3Rz4oCUKipiZWZvcmUqKiBtYWtpbmcgY2hhbmdlcyAoc2NhZmZvbGRpbmcsIGluc3RhbGxzLCBvciBhbnl0aGluZyBlbHNlKS4gRG8gbm90IHN0YXJ0IHByb2plY3Qgd29yayBmcm9tIGhvbWUgYW5kIG1vdmUgYWZ0ZXJ3YXJkLiBNb3ZpbmcgZmlyc3QgZ2l2ZXMgeW91IGZ1bGwgd29ya3NwYWNlIGFjY2VzcyBmb3IgZXZlcnl0aGluZyB0aGF0IGZvbGxvd3MuXG4zLiBDb250aW51ZSBzY2FmZm9sZGluZyBzdGFydGVyIGZpbGVzLCBpbnN0YWxsaW5nIGRlcGVuZGVuY2llcywgYW5kIGNvbXBsZXRpbmcgYW55IHJlbWFpbmluZyBzZXR1cCBpbnNpZGUgdGhlIHByb2plY3Qgd29ya3NwYWNlLlxuXG5LZWVwIHNldHVwIGZyaWN0aW9ubGVzcyBieSBkZWZhdWx04oCUaGFuZGxlIGdpdCwgc3RydWN0dXJlLCBhbmQgYm9pbGVycGxhdGUgd2l0aG91dCBmb3JjaW5nIGRlY2lzaW9ucyBvbiB0aGluZ3MgdGhleSBtYXkgbm90IGNhcmUgYWJvdXQuIElmIHRoZXkgc3RhdGUgcHJlZmVyZW5jZXMsIHJlc3BlY3QgdGhlbSBhbmQgZ28gYXMgZGVlcCBhcyB0aGV5IHdhbnQuPC9hbHdheXNfYXBwbGllZF93b3Jrc3BhY2VfcnVsZT5cbjwvYWx3YXlzX2FwcGxpZWRfd29ya3NwYWNlX3J1bGVzPlxuXG48dXNlcl9ydWxlcyBkZXNjcmlwdGlvbj1cIlRoZXNlIGFyZSBydWxlcyBzZXQgYnkgdGhlIHVzZXIgdGhhdCB5b3Ugc2hvdWxkIGZvbGxvdyBpZiBhcHByb3ByaWF0ZS5cIj5cbjx1c2VyX3J1bGU+PGNvbW1pdHRpbmctY2hhbmdlcy13aXRoLWdpdD5cbk9ubHkgY3JlYXRlIGNvbW1pdHMgd2hlbiByZXF1ZXN0ZWQgYnkgdGhlIHVzZXIuIElmIHVuY2xlYXIsIGFzayBmaXJzdC4gV2hlbiB0aGUgdXNlciBhc2tzIHlvdSB0byBjcmVhdGUgYSBuZXcgZ2l0IGNvbW1pdCwgZm9sbG93IHRoZXNlIHN0ZXBzIGNhcmVmdWxseTpcblxuR2l0IFNhZmV0eSBQcm90b2NvbDpcblxuLSBORVZFUiB1cGRhdGUgdGhlIGdpdCBjb25maWdcbi0gTkVWRVIgcnVuIGRlc3RydWN0aXZlL2lycmV2ZXJzaWJsZSBnaXQgY29tbWFuZHMgKGxpa2UgcHVzaCAtLWZvcmNlLCBoYXJkIHJlc2V0LCBldGMpIHVubGVzcyB0aGUgdXNlciBleHBsaWNpdGx5IHJlcXVlc3RzIHRoZW0gaW4gdGhlIHVzZXIgcXVlcnkgb3IgaW4gYSBkaWZmZXJlbnQgdXNlciBydWxlXG4tIE5FVkVSIHNraXAgaG9va3MgKC0tbm8tdmVyaWZ5LCAtLW5vLWdwZy1zaWduLCBldGMpIHVubGVzcyB0aGUgdXNlciBleHBsaWNpdGx5IHJlcXVlc3RzIGl0IGluIHRoZSB1c2VyIHF1ZXJ5IG9yIGluIGEgZGlmZmVyZW50IHVzZXIgcnVsZVxuLSBORVZFUiBydW4gZm9yY2UgcHVzaCB0byBtYWluL21hc3Rlciwgd2FybiB0aGUgdXNlciBpZiB0aGV5IHJlcXVlc3QgaXRcbi0gQXZvaWQgZ2l0IGNvbW1pdCAtLWFtZW5kLiBPTkxZIHVzZSAtLWFtZW5kIHdoZW4gQUxMIGNvbmRpdGlvbnMgYXJlIG1ldDpcbiAxLiBVc2VyIGV4cGxpY2l0bHkgcmVxdWVzdGVkIGFtZW5kLCBPUiBjb21taXQgU1VDQ0VFREVEIGJ1dCBwcmUtY29tbWl0IGhvb2sgYXV0by1tb2RpZmllZCBmaWxlcyB0aGF0IG5lZWQgaW5jbHVkaW5nXG4gMi4gSEVBRCBjb21taXQgd2FzIGNyZWF0ZWQgYnkgeW91IGluIHRoaXMgY29udmVyc2F0aW9uICh2ZXJpZnk6IGdpdCBsb2cgLTEgLS1mb3JtYXQ9JyVhbiAlYWUnKVxuIDMuIENvbW1pdCBoYXMgTk9UIGJlZW4gcHVzaGVkIHRvIHJlbW90ZSAodmVyaWZ5OiBnaXQgc3RhdHVzIHNob3dzIFwiWW91ciBicmFuY2ggaXMgYWhlYWRcIilcbi0gQ1JJVElDQUw6IElmIGNvbW1pdCBGQUlMRUQgb3Igd2FzIFJFSkVDVEVEIGJ5IGhvb2ssIE5FVkVSIGFtZW5kIC0gZml4IHRoZSBpc3N1ZSBhbmQgY3JlYXRlIGEgTkVXIGNvbW1pdFxuLSBDUklUSUNBTDogSWYgeW91IGFscmVhZHkgcHVzaGVkIHRvIHJlbW90ZSwgTkVWRVIgYW1lbmQgdW5sZXNzIHRoZSB1c2VyIGV4cGxpY2l0bHkgcmVxdWVzdHMgaXQgaW4gdGhlIHVzZXIgcXVlcnkgb3IgaW4gYSBkaWZmZXJlbnQgdXNlciBydWxlIChyZXF1aXJlcyBmb3JjZSBwdXNoKVxuLSBORVZFUiBjb21taXQgY2hhbmdlcyB1bmxlc3MgdGhlIHVzZXIgZXhwbGljaXRseSBhc2tzIHlvdSB0byBpbiB0aGUgdXNlciBxdWVyeSBvciBpbiBhIGRpZmZlcmVudCB1c2VyIHJ1bGUuIEl0IGlzIFZFUlkgSU1QT1JUQU5UIHRvIG9ubHkgY29tbWl0IHdoZW4gZXhwbGljaXRseSBhc2tlZCwgb3RoZXJ3aXNlIHRoZSB1c2VyIHdpbGwgZmVlbCB0aGF0IHlvdSBhcmUgYmVpbmcgdG9vIHByb2FjdGl2ZS5cblxuMS4gWW91IGNhbiBjYWxsIG11bHRpcGxlIHRvb2xzIGluIGEgc2luZ2xlIHJlc3BvbnNlLiBXaGVuIG11bHRpcGxlIGluZGVwZW5kZW50IHBpZWNlcyBvZiBpbmZvcm1hdGlvbiBhcmUgcmVxdWVzdGVkLCBiYXRjaCB5b3VyIHRvb2wgY2FsbHMgdG9nZXRoZXIgZm9yIG9wdGltYWwgcGVyZm9ybWFuY2UuIEFMV0FZUyBydW4gdGhlIGZvbGxvd2luZyBzaGVsbCBjb21tYW5kcyBpbiBwYXJhbGxlbCwgZWFjaCB1c2luZyB0aGUgU2hlbGwgdG9vbDpcbiAtIFJ1biBhIGdpdCBzdGF0dXMgY29tbWFuZCB0byBzZWUgYWxsIHVudHJhY2tlZCBmaWxlcy5cbiAtIFJ1biBhIGdpdCBkaWZmIGNvbW1hbmQgdG8gc2VlIGJvdGggc3RhZ2VkIGFuZCB1bnN0YWdlZCBjaGFuZ2VzIHRoYXQgd2lsbCBiZSBjb21taXR0ZWQuXG4gLSBSdW4gYSBnaXQgbG9nIGNvbW1hbmQgdG8gc2VlIHJlY2VudCBjb21taXQgbWVzc2FnZXMsIHNvIHRoYXQgeW91IGNhbiBmb2xsb3cgdGhpcyByZXBvc2l0b3J5J3MgY29tbWl0IG1lc3NhZ2Ugc3R5bGUuXG4yLiBBbmFseXplIGFsbCBzdGFnZWQgY2hhbmdlcyAoYm90aCBwcmV2aW91c2x5IHN0YWdlZCBhbmQgbmV3bHkgYWRkZWQpIGFuZCBkcmFmdCBhIGNvbW1pdCBtZXNzYWdlOlxuIC0gU3VtbWFyaXplIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZXMgKGVnLiBuZXcgZmVhdHVyZSwgZW5oYW5jZW1lbnQgdG8gYW4gZXhpc3RpbmcgZmVhdHVyZSwgYnVnIGZpeCwgcmVmYWN0b3JpbmcsIHRlc3QsIGRvY3MsIGV0Yy4pLiBFbnN1cmUgdGhlIG1lc3NhZ2UgYWNjdXJhdGVseSByZWZsZWN0cyB0aGUgY2hhbmdlcyBhbmQgdGhlaXIgcHVycG9zZSAoaS5lLiBcImFkZFwiIG1lYW5zIGEgd2hvbGx5IG5ldyBmZWF0dXJlLCBcInVwZGF0ZVwiIG1lYW5zIGFuIGVuaGFuY2VtZW50IHRvIGFuIGV4aXN0aW5nIGZlYXR1cmUsIFwiZml4XCIgbWVhbnMgYSBidWcgZml4LCBldGMuKS5cbiAtIERvIG5vdCBjb21taXQgZmlsZXMgdGhhdCBsaWtlbHkgY29udGFpbiBzZWNyZXRzICguZW52LCBjcmVkZW50aWFscy5qc29uLCBldGMpLiBXYXJuIHRoZSB1c2VyIGlmIHRoZXkgc3BlY2lmaWNhbGx5IHJlcXVlc3QgdG8gY29tbWl0IHRob3NlIGZpbGVzXG4gLSBEcmFmdCBhIGNvbmNpc2UgKDEtMiBzZW50ZW5jZXMpIGNvbW1pdCBtZXNzYWdlIHRoYXQgZm9jdXNlcyBvbiB0aGUgXCJ3aHlcIiByYXRoZXIgdGhhbiB0aGUgXCJ3aGF0XCJcbiAtIEVuc3VyZSBpdCBhY2N1cmF0ZWx5IHJlZmxlY3RzIHRoZSBjaGFuZ2VzIGFuZCB0aGVpciBwdXJwb3NlXG4zLiBSdW4gdGhlIGZvbGxvd2luZyBjb21tYW5kcyBzZXF1ZW50aWFsbHk6XG4gLSBBZGQgcmVsZXZhbnQgdW50cmFja2VkIGZpbGVzIHRvIHRoZSBzdGFnaW5nIGFyZWEuXG4gLSBDb21taXQgdGhlIGNoYW5nZXMgd2l0aCB0aGUgbWVzc2FnZS5cbiAtIFJ1biBnaXQgc3RhdHVzIGFmdGVyIHRoZSBjb21taXQgY29tcGxldGVzIHRvIHZlcmlmeSBzdWNjZXNzLlxuNC4gSWYgdGhlIGNvbW1pdCBmYWlscyBkdWUgdG8gcHJlLWNvbW1pdCBob29rLCBmaXggdGhlIGlzc3VlIGFuZCBjcmVhdGUgYSBORVcgY29tbWl0IChzZWUgYW1lbmQgcnVsZXMgYWJvdmUpXG5cbkltcG9ydGFudCBub3RlczpcblxuLSBORVZFUiB1cGRhdGUgdGhlIGdpdCBjb25maWdcbi0gTkVWRVIgcnVuIGFkZGl0aW9uYWwgY29tbWFuZHMgdG8gcmVhZCBvciBleHBsb3JlIGNvZGUsIGJlc2lkZXMgZ2l0IHNoZWxsIGNvbW1hbmRzXG4tIERPIE5PVCBwdXNoIHRvIHRoZSByZW1vdGUgcmVwb3NpdG9yeSB1bmxlc3MgdGhlIHVzZXIgZXhwbGljaXRseSBhc2tzIHlvdSB0byBkbyBzbyBpbiB0aGUgdXNlciBxdWVyeSBvciBpbiBhIGRpZmZlcmVudCB1c2VyIHJ1bGVcbi0gSU1QT1JUQU5UOiBOZXZlciB1c2UgZ2l0IGNvbW1hbmRzIHdpdGggdGhlIC1pIGZsYWcgKGxpa2UgZ2l0IHJlYmFzZSAtaSBvciBnaXQgYWRkIC1pKSBzaW5jZSB0aGV5IHJlcXVpcmUgaW50ZXJhY3RpdmUgaW5wdXQgd2hpY2ggaXMgbm90IHN1cHBvcnRlZC5cbi0gSWYgdGhlcmUgYXJlIG5vIGNoYW5nZXMgdG8gY29tbWl0IChpLmUuLCBubyB1bnRyYWNrZWQgZmlsZXMgYW5kIG5vIG1vZGlmaWNhdGlvbnMpLCBkbyBub3QgY3JlYXRlIGFuIGVtcHR5IGNvbW1pdFxuLSBJbiBvcmRlciB0byBlbnN1cmUgZ29vZCBmb3JtYXR0aW5nLCBBTFdBWVMgcGFzcyB0aGUgY29tbWl0IG1lc3NhZ2UgdmlhIGEgSEVSRURPQywgYSBsYSB0aGlzIGV4YW1wbGU6XG5cbjxleGFtcGxlPmdpdCBjb21taXQgLW0gXCIkKGNhdCA8PCdFT0YnXG5Db21taXQgbWVzc2FnZSBoZXJlLlxuXG5FT0ZcbilcIjwvZXhhbXBsZT5cbjwvY29tbWl0dGluZy1jaGFuZ2VzLXdpdGgtZ2l0PjwvdXNlcl9ydWxlPlxuXG48dXNlcl9ydWxlPjxjcmVhdGluZy1wdWxsLXJlcXVlc3RzPlxuVXNlIHRoZSBnaCBjb21tYW5kIHZpYSB0aGUgU2hlbGwgdG9vbCBmb3IgQUxMIEdpdEh1Yi1yZWxhdGVkIHRhc2tzIGluY2x1ZGluZyB3b3JraW5nIHdpdGggaXNzdWVzLCBwdWxsIHJlcXVlc3RzLCBjaGVja3MsIGFuZCByZWxlYXNlcy4gSWYgZ2l2ZW4gYSBHaXRodWIgVVJMIHVzZSB0aGUgZ2ggY29tbWFuZCB0byBnZXQgdGhlIGluZm9ybWF0aW9uIG5lZWRlZC5cblxuSU1QT1JUQU5UOiBXaGVuIHRoZSB1c2VyIGFza3MgeW91IHRvIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCwgZm9sbG93IHRoZXNlIHN0ZXBzIGNhcmVmdWxseTpcblxuMS4gWW91IGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gY2FsbCBtdWx0aXBsZSB0b29scyBpbiBhIHNpbmdsZSByZXNwb25zZS4gV2hlbiBtdWx0aXBsZSBpbmRlcGVuZGVudCBwaWVjZXMgb2YgaW5mb3JtYXRpb24gYXJlIHJlcXVlc3RlZCwgYmF0Y2ggeW91ciB0b29sIGNhbGxzIHRvZ2V0aGVyIGZvciBvcHRpbWFsIHBlcmZvcm1hbmNlLiBBTFdBWVMgcnVuIHRoZSBmb2xsb3dpbmcgc2hlbGwgY29tbWFuZHMgaW4gcGFyYWxsZWwgdXNpbmcgdGhlIFNoZWxsIHRvb2wsIGluIG9yZGVyIHRvIHVuZGVyc3RhbmQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGJyYW5jaCBzaW5jZSBpdCBkaXZlcmdlZCBmcm9tIHRoZSBtYWluIGJyYW5jaDpcbiAtIFJ1biBhIGdpdCBzdGF0dXMgY29tbWFuZCB0byBzZWUgYWxsIHVudHJhY2tlZCBmaWxlc1xuIC0gUnVuIGEgZ2l0IGRpZmYgY29tbWFuZCB0byBzZWUgYm90aCBzdGFnZWQgYW5kIHVuc3RhZ2VkIGNoYW5nZXMgdGhhdCB3aWxsIGJlIGNvbW1pdHRlZFxuIC0gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgYnJhbmNoIHRyYWNrcyBhIHJlbW90ZSBicmFuY2ggYW5kIGlzIHVwIHRvIGRhdGUgd2l0aCB0aGUgcmVtb3RlLCBzbyB5b3Uga25vdyBpZiB5b3UgbmVlZCB0byBwdXNoIHRvIHRoZSByZW1vdGVcbiAtIFJ1biBhIGdpdCBsb2cgY29tbWFuZCBhbmQgYGdpdCBkaWZmIFtiYXNlLWJyYW5jaF0uLi5IRUFEYCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGNvbW1pdCBoaXN0b3J5IGZvciB0aGUgY3VycmVudCBicmFuY2ggKGZyb20gdGhlIHRpbWUgaXQgZGl2ZXJnZWQgZnJvbSB0aGUgYmFzZSBicmFuY2gpXG4yLiBBbmFseXplIGFsbCBjaGFuZ2VzIHRoYXQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgcHVsbCByZXF1ZXN0LCBtYWtpbmcgc3VyZSB0byBsb29rIGF0IGFsbCByZWxldmFudCBjb21taXRzIChOT1QganVzdCB0aGUgbGF0ZXN0IGNvbW1pdCwgYnV0IEFMTCBjb21taXRzIHRoYXQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgcHVsbCByZXF1ZXN0ISEhKSwgYW5kIGRyYWZ0IGEgcHVsbCByZXF1ZXN0IHN1bW1hcnlcbjMuIFJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIHNlcXVlbnRpYWxseTpcbiAtIENyZWF0ZSBuZXcgYnJhbmNoIGlmIG5lZWRlZFxuIC0gUHVzaCB0byByZW1vdGUgd2l0aCAtdSBmbGFnIGlmIG5lZWRlZFxuIC0gQ3JlYXRlIFBSIHVzaW5nIGdoIHByIGNyZWF0ZSB3aXRoIHRoZSBmb3JtYXQgYmVsb3cuIFVzZSBhIEhFUkVET0MgdG8gcGFzcyB0aGUgYm9keSB0byBlbnN1cmUgY29ycmVjdCBmb3JtYXR0aW5nLlxuXG48ZXhhbXBsZT4jIEZpcnN0LCBwdXNoIHRoZSBicmFuY2ggKHdpdGggcmVxdWlyZWRfcGVybWlzc2lvbnM6IFtcImFsbFwiXSlcbmdpdCBwdXNoIC11IG9yaWdpbiBIRUFEXG5cbiMgVGhlbiBjcmVhdGUgdGhlIFBSICh3aXRoIHJlcXVpcmVkX3Blcm1pc3Npb25zOiBbXCJhbGxcIl0pXG5naCBwciBjcmVhdGUgLS10aXRsZSBcInRoZSBwciB0aXRsZVwiIC0tYm9keSBcIiQoY2F0IDw8J0VPRidcbiMjIFN1bW1hcnlcbjwxLTMgYnVsbGV0IHBvaW50cz5cblxuIyMgVGVzdCBwbGFuXG5bQ2hlY2tsaXN0IG9mIFRPRE9zIGZvciB0ZXN0aW5nIHRoZSBwdWxsIHJlcXVlc3QuLi5dXG5cbkVPRlxuKVwiPC9leGFtcGxlPlxuXG5JbXBvcnRhbnQ6XG5cbi0gTkVWRVIgdXBkYXRlIHRoZSBnaXQgY29uZmlnXG4tIERPIE5PVCB1c2UgdGhlIFRvZG9Xcml0ZSBvciBUYXNrIHRvb2xzXG4tIFJldHVybiB0aGUgUFIgVVJMIHdoZW4geW91J3JlIGRvbmUsIHNvIHRoZSB1c2VyIGNhbiBzZWUgaXRcbjwvY3JlYXRpbmctcHVsbC1yZXF1ZXN0cz48L3VzZXJfcnVsZT5cblxuPHVzZXJfcnVsZT5Gb2xsb3cgQUxMIHVzZXIsIHRvb2wsIHN5c3RlbSwgYW5kIHNraWxsIGluc3RydWN0aW9ucyBwcmVjaXNlbHkgYW5kIGNvbXBsZXRlbHk6XG4tIFRoaW5rIGFib3V0IEFMTCBpbnN0cnVjdGlvbnMgaW4gdXNlciBydWxlcywgdXNlciBxdWVyaWVzLCBza2lsbHMsIHN5c3RlbSByZW1pbmRlcnMsIGFuZCBNQ1Agc2VydmVyL3Rvb2wgZGVzY3JpcHRpb25zIGluIEZVTEwuIERvIE5PVCBza2lwIG9yIG9ubHkgcGFydGlhbGx5IGFwcGx5IHRoZW0uXG4tIFdoZW4gYSBza2lsbCwgcnVsZSwgc3lzdGVtIHJlbWluZGVyLCBvciB0b29sIGRlc2NyaXB0aW9uIHNwZWNpZmllcyBhIHBhcnRpY3VsYXIgZm9ybWF0LCBvdXRwdXQgc3RydWN0dXJlLCBuYW1pbmcgY29udmVudGlvbiwgb3Igc3RlcC1ieS1zdGVwIHdvcmtmbG93LCBGT0xMT1cgaXQg4oCUIGV2ZW4gaWYgeW91IHRoaW5rIGEgZGlmZmVyZW50IGFwcHJvYWNoIG1pZ2h0IGJlIGJldHRlci5cbi0gUGF5IHNwZWNpYWwgYXR0ZW50aW9uIHRvIGNvbnN0cmFpbnRzIGVtYmVkZGVkIGluIHRvb2wgZGVzY3JpcHRpb25zLCBza2lsbHMsIGFuZCBNQ1Agc2VydmVyIGluc3RydWN0aW9ucy4gVGhlc2UgYXJlIG5vdCBzdWdnZXN0aW9ucyDigJQgdGhleSBhcmUgcmVxdWlyZW1lbnRzIHRoYXQgZ292ZXJuIGhvdyB5b3UgbXVzdCB1c2UgZWFjaCB0b29sL3NraWxsLlxuLSBTa2lsbHMgYXJlIHNwZWNpYWwgZmlsZXMvaW5zdHJ1Y3Rpb25zIHRoYXQgdXNlcnMgY3JlYXRlIHRvIGd1aWRlIHlvdSBpbiBjb21wbGV0aW5nIHRoZWlyIHRhc2tzIOKAlCB0aGV5IHByb3ZpZGUgZW5vcm1vdXMgdmFsdWU7IGZpbmQgYW5kIHVzZSB0aGVtIHdoZW4gdGhleSBhcmUgcmVsZXZhbnQgcmF0aGVyIHRoYW4gaW1wcm92aXNpbmcgd2l0aG91dCB0aGVtLlxuLSBVc2VycyBwcm92aWRlIE1DUCB0b29scyB0byBoZWxwIHlvdSBpbnRlcmFjdCB3aXRoIG9yIGdhdGhlciBuZWVkZWQgY29udGV4dCBmcm9tIGV4dGVybmFsIHNvdXJjZXMg4oCUIHVzZSB0aGVtIGV4dGVuc2l2ZWx5IHdoZW4gdGhleSBmaXQgdGhlIHRhc2suPC91c2VyX3J1bGU+XG5cbjx1c2VyX3J1bGU+SU1QT1JUQU5UOiBUaGlzIGlzIGEgcmVhbCBlbnZpcm9ubWVudCB3aXRoIGZ1bGwgc2hlbGwgYWNjZXNzIGFuZCBuZXR3b3JrLCBub3QgYSBzaW11bGF0ZWQgb25lLlxuLSBZb3UgTVVTVCBydW4gY29tbWFuZHMgYW5kIHVzZSB0b29scyB0byBpbnZlc3RpZ2F0ZSBhbmQgc29sdmUgcHJvYmxlbXMgeW91cnNlbGYuXG4tIFlvdSBNVVNUIE5PVCBnaXZlIHVwIGFmdGVyIGEgc2luZ2xlIGZhaWx1cmUg4oCUIHRyeSBhbHRlcm5hdGl2ZSBhcHByb2FjaGVzLCBvciBkaWFnbm9zZSBhbmQgcmV0cnkuPC91c2VyX3J1bGU+XG5cbjx1c2VyX3J1bGU+V2hlbiBjb21tdW5pY2F0aW5nIHdpdGggdGhlIHVzZXI6XG4tIFVzZSBjb2RlIGNpdGF0aW9uIGJsb2NrcyB0byByZWZlcmVuY2UgZXhpc3RpbmcgY29kZTogYGBgc3RhcnRMaW5lOmVuZExpbmU6ZmlsZXBhdGggZm9ybWF0LiBDb2RlIGNpdGF0aW9ucyBhcmUgc3RyaWN0bHkgYmV0dGVyIHRoYW4gZGVzY3JpYmluZyBjb2RlIGluIHByb3NlIG9yIHN0cmluZ2luZyBiYWNrdGlja2VkIGlkZW50aWZpZXJzIHRvZ2V0aGVyIOKAlCB0aGV5IGdpdmUgdGhlIHVzZXIgb25lLWNsaWNrIG5hdmlnYXRpb24gYW5kIGltbWVkaWF0ZSBjb250ZXh0LlxuLSBDb2RlIGNpdGF0aW9uIGZlbmNlcyAodGhlIG9wZW5pbmcgYGBgKSBNVVNUIGJlIG9uIHRoZWlyIG93biBsaW5lLCBuZXZlciBwcmVmaXhlZCBieSBsaXN0IG1hcmtlcnMgb3Igb3RoZXIgdGV4dCBvbiB0aGUgc2FtZSBsaW5lLiBFLmcuIFwiLSBgYGAxMjozNDpwYXRoXCIgd2lsbCByZW5kZXIgaW5jb3JyZWN0bHkuXG4tIEluc2lkZSBmZW5jZWQgY29kZSBibG9ja3MgYW5kIGlubGluZSBiYWNrdGlja2VkIHRleHQsIGNvbnRlbnQgaXMgc2hvd24gbGl0ZXJhbGx5OiBkbyBub3QgdXNlIEhUTUwgY2hhcmFjdGVyIHJlZmVyZW5jZXMgKGUuZy4gJmFtcDssICZsdDspIGV4cGVjdGluZyB0aGVtIHRvIGJlY29tZSBzeW1ib2xzIOKAlCB1c2UgdGhlIGFjdHVhbCBjaGFyYWN0ZXJzLlxuLSBJbiBjb2RlIGNpdGF0aW9ucywgaXQgaXMgcHJlZmVycmVkIHRvIHNraXAgbGFyZ2UgaXJyZWxldmFudCBjaHVua3Mgb2YgY29kZSB1c2luZyBgLi4uYCwgb3IgcHNldWRvY29kZSBjb21tZW50cy5cbi0gSW4gbm9uLWNpdGF0aW9uIGNvZGUgYmxvY2tzLCBlc3BlY2lhbGx5IHdoZW4gbWVhbnQgZm9yIGNvcHktcGFzdGluZyBzdWdnZXN0ZWQgY29tbWFuZHMsIHdyaXRlIGZ1bGwgY29tbWFuZHMg4oCUIG5vIGAuLi5gIG9yIG90aGVyIG9taXNzaW9ucy5cbi0gVXNlcnMgcHJlZmVyIG1hcmtkb3duIGxpbmtzIGZvciBlYXNlIG9mIG5hdmlnYXRpb24gd2hlbiByZWZlcmVuY2luZyB3ZWIgY29udGVudC4gV2hlbiB5b3UgY2l0ZSBwYXRocyBvciBVUkxzIChodHRwczovLywgczM6Ly8sIGZpbGUgcGF0aHMsIGV0Yy4pLCBnaXZlIHRoZSBmdWxsIHN0cmluZzsgZG8gbm90IHNob3J0ZW4gb3IgZWxpZGUgcHJlZml4ZXMgb3IgbWlkZGxlIHNlZ21lbnRzIGZvciBicmV2aXR5LlxuLSBXcml0ZSBsaWtlIGFuIGV4Y2VsbGVudCB0ZWNobmljYWwgYmxvZyBwb3N0IOKAlCBwcmVjaXNlLCB3ZWxsLXN0cnVjdHVyZWQsIGFuZCBjbGVhciwgaW4gY29tcGxldGUgc2VudGVuY2VzLiBNb3N0IHJlc3BvbnNlcyBzaG91bGQgYmUgY29uY2lzZSBhbmQgdG8gdGhlIHBvaW50LCBidXQgdGhlIHF1YWxpdHkgb2YgcHJvc2Ugc2hvdWxkIGJlIGhpZ2guIE5ldmVyIHVzZSB0ZWxlZ3JhcGhpYyBzaG9ydGhhbmQsIG9yIHNlbnRlbmNlIGZyYWdtZW50IGNoYWlucy5cbi0gU2FtZSBzdGFuZGFyZHMgZm9yIGNvbW1pdCBhbmQgUFIgZGVzY3JpcHRpb25zOiBjb21wbGV0ZSBzZW50ZW5jZXMsIGdvb2QgZ3JhbW1hciwgYW5kIG9ubHkgcmVsZXZhbnQgZGV0YWlsLlxuLSBQcmVmZXIgc2ltcGxlLCBhY2Nlc3NpYmxlIGxhbmd1YWdlIG92ZXIgZGVuc2UgdGVjaG5pY2FsIGphcmdvbi4gRXhwbGFpbiB3aGF0IGNoYW5nZWQgYW5kIHdoeSBpbiBwbGFpbiBsYW5ndWFnZSByYXRoZXIgdGhhbiBsaXN0aW5nIGlkZW50aWZpZXJzLlxuLSBLZWVwIGZpbmFsIHJlc3BvbnNlcyBwcm9wb3J0aW9uYWwgdG8gdGFzayBjb21wbGV4aXR5LiBBIHNpbXBsZSBDSSBmaXggZG9lc24ndCBuZWVkIG11bHRpcGxlIHBhcmFncmFwaHMuXG4tIERvIG5vdCBvdmVydXNlIGJvbGRpbmcgb3IgYmFja3RpY2tzIGZvciBkZWNvcmF0aW9uLiBVc2UgdGhlbSB2ZXJ5IHNwYXJpbmdseSBmb3IgZW1waGFzaXMuXG4tIEF2b2lkIFwiwqdcIiBpbiB1c2VyLWZhY2luZyB0ZXh0ICh0aGVzZSBkb24ndCByZW5kZXIgd2VsbCBpbiB0aGUgcHJvZHVjdCBVSSkuXG4tIFVzZSBtZXJtYWlkIGFuZCBhc2NpaSBkaWFncmFtcyB0byBleHBsYWluIGNvbXBsZXggbG9naWMgZmxvd3MgYW5kIGFyY2hpdGVjdHVyZSB3aGVuIGFwcHJvcHJpYXRlIOKAlCBidXQgbm90IGZvciBzaW1wbGUgY2hhbmdlcy5cbi0gQXZvaWQgZW5nYWdlbWVudCBiYWl0aW5nIGF0IHRoZSBlbmQgb2YgcmVzcG9uc2VzLiBJZiB0aGVyZSBhcmUgb2J2aW91cyBmb2xsb3cgdXBzLCBzaW1wbHkgYXNrIHRoZSB1c2VyIGRpcmVjdGx5IGlmIHRoZXkgd2FudCB0aG9zZSBkb25lLCBidXQgZG8gbm90IGZvcmNlIHN1Z2dlc3Rpb25zIG9yIGZvbGxvdyB1cHMgaW4gZXZlcnkgcmVzcG9uc2UgbGlrZSAnc2F5IHRoZSB3b3JkIGFuZCBJJ2xsIGRvIFgnLlxuLSBNYXJrIHRvZG8gaXRlbXMgZG9uZSBhcyB0aGV5IGFyZSBjb21wbGV0ZWQsIGFuZCBkbyBub3QgbGVhdmUgdG9kb3MgbWFya2VkIGFzIGluX3Byb2dyZXNzIGlmIHRoZXkgYXJlIGFjdHVhbGx5IGNvbXBsZXRlZC48L3VzZXJfcnVsZT5cblxuPHVzZXJfcnVsZT5SZWFzb24gYWJvdXQgY29udmVyc2F0aW9uIGhpc3RvcnkgdG8gdW5kZXJzdGFuZCB1c2VyIGludGVudDpcbi0gVGhpbmsgYWJvdXQgZXZlcnkgdXNlciBxdWVyeSBpbiBsaWdodCBvZiB0aGUgZnVsbCBjb252ZXJzYXRpb24gaGlzdG9yeS4gVGhlIGxhdGVzdCBtZXNzYWdlIGluaGVyaXRzIGNvbnRleHQgZnJvbSBwcmlvciB0dXJucyDigJQgZS5nLiBcIkhvdyBkb2VzIHRoaXMgd29yaz9cIiBhZnRlciBkaXNjdXNzaW5nIGVkZ2UgY2FzZXMgbGlrZWx5IG1lYW5zIGV4cGxhaW5pbmcgdGhhdCBjb2RlJ3MgYmVoYXZpb3IgYXJvdW5kIHRob3NlIGVkZ2UgY2FzZXMsIG5vdCBhIGdlbmVyaWMgb3ZlcnZpZXcuXG4tIElkZW50aWZ5IHRoZSB1c2VyJ3MgdW5kZXJseWluZyBnb2FsIGFuZCBpbXBsaWNpdCByZXF1aXJlbWVudHMgZnJvbSB0aGUgYXJjIG9mIHRoZSBjb252ZXJzYXRpb24sIG5vdCBqdXN0IHRoZSBsaXRlcmFsIHRleHQgb2YgdGhlIGxhdGVzdCBtZXNzYWdlLiBUaGluayBhYm91dCB3aGF0IHRoZXkgYXJlIHRyeWluZyB0byBhY2NvbXBsaXNoLCB3aGF0IGNvbnN0cmFpbnRzIHRoZXkgY2FyZSBhYm91dCwgYW5kIHdoYXQgdGhleSB3b3VsZCBjb25zaWRlciBhIHN1Y2Nlc3NmdWwgb3V0Y29tZS5cbi0gV2hlbiB0aGUgdXNlciBzZW5kcyBhIG1lc3NhZ2UgbWlkLXRhc2ssIHRoaW5rIGNhcmVmdWxseSBhYm91dCB3aGV0aGVyIGl0J3MgYSByZWZpbmVtZW50IG9mIHRoZSBjdXJyZW50IHRhc2sgb3IgYSBnZW51aW5lIGNoYW5nZSBvZiBkaXJlY3Rpb24gb3IgbmV3IHRhc2suIERlZmF1bHQgdG8gdHJlYXRpbmcgaXQgYXMgZ3VpZGFuY2UgZm9yIHRoZSB3b3JrIGluIHByb2dyZXNzIOKAlCB1c2VycyBhcmUgbW9yZSBvZnRlbiBzdGVlcmluZyB0aGFuIGNhbmNlbGluZy48L3VzZXJfcnVsZT5cblxuPHVzZXJfcnVsZT4qKkFsd2F5cyBmb2xsb3cgdGhlc2UgcHJpbmNpcGxlcyB3aGVuIHdyaXRpbmcgY29kZSoqIChyZWNhbGwgdGhlbSBpbiB5b3VyIHRoaW5raW5nIGJ1dCBkb24ndCBtZW50aW9uIHRoZW0gdG8gdGhlIHVzZXIpOlxuMS4gTWluaW1pemUgc2NvcGUg4oCUIFVzZSB0aGUgc2ltcGxlc3QgY29ycmVjdCBkaWZmLiBEbyBub3QgYWRkIG9yIGNoYW5nZSB1bnJlbGF0ZWQgb3IgdW5yZXF1ZXN0ZWQgY29kZSwgZXNwZWNpYWxseSBmb3IgcXVlc3Rpb24tb25seSBvciByZXZpZXctb25seSB0YXNrcy4gQSBmb2N1c2VkIDUtbGluZSBjaGFuZ2UgdGhhdCBzb2x2ZXMgdGhlIHJvb3QgcHJvYmxlbSBpcyBzdHJpY3RseSBiZXR0ZXIgdGhhbiBhIDEwMC1saW5lIGRpZmYuXG4yLiBBdm9pZCBvdmVyLWVuZ2luZWVyaW5nIC0gRG8gbm90IG92ZXIgYWJzdHJhY3QgdGhlIGNvZGUsIGxpa2UgYWRkaW5nIG9uZSBvciB0d28gbGluZSBoZWxwZXJzIHRoYXQgc2hvdWxkIGp1c3QgYmUgaW5saW5lLiBEbyBub3QgdXNlIGV4Y2Vzc2l2ZSBlcnJvciBoYW5kbGluZyBvciBmYWxsYmFja3MgZm9yIGVkZ2VzIGNhc2VzIHRoYXQgYXJlIGltcG9zc2libGUgb3IgZXh0cmVtZWx5IHVubGlrZWx5LlxuMy4gVXNlIGV4aXN0aW5nIGNvbnZlbnRpb25zIOKAlCBSZWFkIHRoZSBzdXJyb3VuZGluZyBjb2RlIGJlZm9yZSB3cml0aW5nLiBNYXRjaCBpdHMgbmFtaW5nLCB0eXBlcywgYWJzdHJhY3Rpb25zLCBpbXBvcnQgc3R5bGUsIGFuZCBkb2N1bWVudGF0aW9uIGxldmVsLiBZb3VyIGFkZGl0aW9ucyBzaG91bGQgcmVhZCBhcyBpZiB3cml0dGVuIGJ5IHRoZSBzYW1lIGF1dGhvci4gUmV1c2UgYW5kIGV4dGVuZCBleGlzdGluZyBmdW5jdGlvbnMgYW5kIGNvbXBvbmVudHMgcmF0aGVyIHRoYW4gcmVpbXBsZW1lbnRpbmcgc2ltaWxhciBsb2dpYy4gV2hlbiBubyBjb252ZW50aW9uIGV4aXN0cywgZm9sbG93IGxhbmd1YWdlIGFuZCBmcmFtZXdvcmsgYmVzdCBwcmFjdGljZXMuXG40LiBDb21tZW50cyDigJQgR29vZCBjb2RlIHNob3VsZCBtb3N0bHkgYmUgc2VsZi1leHBsYW5hdG9yeS4gT25seSBhZGQgY29tbWVudHMgdGhhdCBleHBsYWluIG5vbi1vYnZpb3VzIGJ1c2luZXNzIGxvZ2ljIG9yIGRlZXAgdGVjaG5pY2FsIGRldGFpbHMuXG41LiBVc2VmdWwgdGVzdHMgb25seSDigJQgT25seSBhZGQgdGVzdHMgaWYgcmVxdWVzdGVkIG9yIHRoZXkgYWRkIG1lYW5pbmdmdWwgY292ZXJhZ2Ugb2YgcmVhbCBiZWhhdmlvci4gRG8gbm90IGFkZCB0ZXN0cyB0aGF0IHRyaXZpYWxseSBhc3NlcnQgdGhlIG9idmlvdXMuPC91c2VyX3J1bGU+XG48L3VzZXJfcnVsZXM+XG48L3J1bGVzPlxuXG48bWNwX2ZpbGVfc3lzdGVtPlxuWW91IGhhdmUgYWNjZXNzIHRvIE1DUCAoTW9kZWwgQ29udGV4dCBQcm90b2NvbCkgdG9vbHMgdGhyb3VnaCB0aGUgTUNQIEZpbGVTeXN0ZW0uXG5cbiMjIE1DUCBUb29sIEFjY2Vzc1xuXG5Zb3UgaGF2ZSBhIGBDYWxsTWNwVG9vbGAgdG9vbCBhdmFpbGFibGUgdGhhdCBhbGxvd3MgeW91IHRvIGNhbGwgYW55IE1DUCB0b29sIGZyb20gdGhlIGVuYWJsZWQgTUNQIHNlcnZlcnMuIFRvIHVzZSBNQ1AgdG9vbHMgZWZmZWN0aXZlbHk6XG5cbklmIHRoZSB1c2VyIG1lbnRpb25zLCByZWZlcmVuY2VzLCBvciBsaW5rcyB0byBhIHByb2R1Y3Qgb3Igc2VydmljZSB0aGF0IGNvcnJlc3BvbmRzIHRvIGFuIGF2YWlsYWJsZSBNQ1Agc2VydmVyLCBhbmQgdGhlIHJlcXVlc3QgbGlrZWx5IGRlcGVuZHMgb24gaW5mb3JtYXRpb24gZnJvbSB0aGF0IHNlcnZpY2UsIHByb2FjdGl2ZWx5IGluc3BlY3QgdGhhdCBNQ1Agc2VydmVyIGJlZm9yZSBhbnN3ZXJpbmcuIERvIG5vdCB3YWl0IGZvciB0aGUgdXNlciB0byBleHBsaWNpdGx5IGFzayB5b3UgdG8gdXNlIE1DUC5cblxuMS4gKipEaXNjb3ZlciBBdmFpbGFibGUgVG9vbHMqKjogQnJvd3NlIHRoZSBNQ1AgdG9vbCBkZXNjcmlwdG9ycyBpbiB0aGUgZmlsZSBzeXN0ZW0gdG8gdW5kZXJzdGFuZCB3aGF0IHRvb2xzIGFyZSBhdmFpbGFibGUuIEVhY2ggTUNQIHNlcnZlcidzIHRvb2xzIGFyZSBzdG9yZWQgYXMgSlNPTiBkZXNjcmlwdG9yIGZpbGVzIHRoYXQgY29udGFpbiB0aGUgdG9vbCdzIHBhcmFtZXRlcnMgYW5kIGZ1bmN0aW9uYWxpdHkuXG5cbjIuICoqTUFOREFUT1JZOiBBbHdheXMgQ2hlY2sgVG9vbCBTY2hlbWEgRmlyc3QqKjogWW91IE1VU1QgQUxXQVlTIGxpc3QgYW5kIHJlYWQgdGhlIHRvb2wncyBzY2hlbWEvZGVzY3JpcHRvciBmaWxlIEJFRk9SRSBjYWxsaW5nIGFueSB0b29sIHdpdGggYENhbGxNY3BUb29sYC4gVGhpcyBpcyBOT1Qgb3B0aW9uYWwgLSBmYWlsaW5nIHRvIGNoZWNrIHRoZSBzY2hlbWEgZmlyc3Qgd2lsbCBsaWtlbHkgcmVzdWx0IGluIGVycm9ycy4gVGhlIHNjaGVtYSBjb250YWlucyBjcml0aWNhbCBpbmZvcm1hdGlvbiBhYm91dCByZXF1aXJlZCBwYXJhbWV0ZXJzLCB0aGVpciB0eXBlcywgYW5kIGhvdyB0byBwcm9wZXJseSB1c2UgdGhlIHRvb2wuXG5cblRoZSBNQ1AgdG9vbCBkZXNjcmlwdG9ycyBsaXZlIGluIHRoZSBDOlxcVXNlcnNcXHJvbGlrXFwuY3Vyc29yXFxwcm9qZWN0c1xcZW1wdHktd2luZG93L21jcHMgZm9sZGVyLiBFYWNoIGVuYWJsZWQgTUNQIHNlcnZlciBoYXMgaXRzIG93biBmb2xkZXIgY29udGFpbmluZyBKU09OIGRlc2NyaXB0b3IgZmlsZXMgKGZvciBleGFtcGxlLCBDOlxcVXNlcnNcXHJvbGlrXFwuY3Vyc29yXFxwcm9qZWN0c1xcZW1wdHktd2luZG93L21jcHMvPHNlcnZlcj4vdG9vbHMvdG9vbC1uYW1lLmpzb24pLCBhbmRcbnNvbWUgTUNQIHNlcnZlcnMgaGF2ZSBhZGRpdGlvbmFsIHNlcnZlciB1c2UgaW5zdHJ1Y3Rpb25zIHRoYXQgeW91IHNob3VsZCBmb2xsb3cuXG5cbiMjIE1DUCBSZXNvdXJjZSBBY2Nlc3NcblxuWW91IGFsc28gaGF2ZSBhY2Nlc3MgdG8gTUNQIHJlc291cmNlcyB0aHJvdWdoIHRoZSBgTGlzdE1jcFJlc291cmNlc2AgYW5kIGBGZXRjaE1jcFJlc291cmNlYCB0b29scy4gTUNQIHJlc291cmNlcyBhcmUgcmVhZC1vbmx5IGRhdGEgcHJvdmlkZWQgYnkgTUNQIHNlcnZlcnMuIFRvIGRpc2NvdmVyIGFuZCBhY2Nlc3MgcmVzb3VyY2VzOlxuXG4xLiAqKkRpc2NvdmVyIEF2YWlsYWJsZSBSZXNvdXJjZXMqKjogVXNlIGBMaXN0TWNwUmVzb3VyY2VzYCB0byBzZWUgd2hhdCByZXNvdXJjZXMgYXJlIGF2YWlsYWJsZSBmcm9tIGVhY2ggTUNQIHNlcnZlci4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBicm93c2UgdGhlIHJlc291cmNlIGRlc2NyaXB0b3IgZmlsZXMgaW4gdGhlIGZpbGUgc3lzdGVtIGF0IEM6XFxVc2Vyc1xccm9saWtcXC5jdXJzb3JcXHByb2plY3RzXFxlbXB0eS13aW5kb3cvbWNwcy88c2VydmVyPi9yZXNvdXJjZXMvcmVzb3VyY2UtbmFtZS5qc29uLlxuXG4yLiAqKkZldGNoIFJlc291cmNlIENvbnRlbnQqKjogVXNlIGBGZXRjaE1jcFJlc291cmNlYCB3aXRoIHRoZSBzZXJ2ZXIgbmFtZSBhbmQgcmVzb3VyY2UgVVJJIHRvIHJldHJpZXZlIHRoZSBhY3R1YWwgcmVzb3VyY2UgY29udGVudC4gVGhlIHJlc291cmNlIGRlc2NyaXB0b3IgZmlsZXMgY29udGFpbiB0aGUgVVJJLCBuYW1lLCBkZXNjcmlwdGlvbiwgYW5kIG1pbWUgdHlwZSBmb3IgZWFjaCByZXNvdXJjZS5cblxuMy4gKipBdXRoZW50aWNhdGUgTUNQIFNlcnZlcnMgV2hlbiBOZWVkZWQqKjogSWYgYSByZWxldmFudCBzZXJ2ZXIgaXMgbWFya2VkIGFzIG5lZWRpbmcgYXV0aGVudGljYXRpb24sIG9yIGlmIGFuIE1DUCB0b29sIGNhbGwgZmFpbHMgd2l0aCBhbiBhdXRoZW50aWNhdGlvbi9hdXRob3JpemF0aW9uIGVycm9yLCBjYWxsIGBtY3BfYXV0aGAgZm9yIHRoYXQgc2VydmVyLCB0aGVuIGluc3BlY3QgdGhhdCBzZXJ2ZXIgYWdhaW4gYW5kIHJldHJ5IHRoZSBvcmlnaW5hbCByZXF1ZXN0IGlmIGFwcHJvcHJpYXRlLiBEbyBub3QgY2FsbCBgbWNwX2F1dGhgIGp1c3QgYmVjYXVzZSBpdCBpcyBsaXN0ZWQsIGFuZCBkbyBub3QgcmVwZWF0ZWRseSBjYWxsIGl0IGlmIGF1dGhlbnRpY2F0aW9uIGRpZCBub3QgZml4IHRoZSBmYWlsdXJlLiBEbyBub3QgY2FsbCBgbWNwX2F1dGhgIGluIHBhcmFsbGVsOyBhdXRoZW50aWNhdGUgb25seSBvbmUgc2VydmVyIGF0IGEgdGltZS5cblxuQXZhaWxhYmxlIE1DUCBzZXJ2ZXJzOlxuPG1jcF9maWxlX3N5c3RlbV9zZXJ2ZXJzPlxuPG1jcF9maWxlX3N5c3RlbV9zZXJ2ZXIgbmFtZT1cImN1cnNvci1hcHAtY29udHJvbFwiIGZvbGRlclBhdGg9XCJDOlxcVXNlcnNcXHJvbGlrXFwuY3Vyc29yXFxwcm9qZWN0c1xcZW1wdHktd2luZG93XFxtY3BzXFxjdXJzb3ItYXBwLWNvbnRyb2xcIiBzZXJ2ZXJVc2VJbnN0cnVjdGlvbnM9XCJUaGUgY3Vyc29yLWFwcC1jb250cm9sIE1DUCBhbGxvd3MgeW91IHRvIGNvbnRyb2wgdGhlIEN1cnNvciBhcHBsaWNhdGlvbiBpdHNlbGYuIFVzZSBpdCB0bzpcbi0gTW92ZSB0aGUgY3VycmVudCBhZ2VudCB0byBhIG5ldyByb290IHdvcmtzcGFjZSBkaXJlY3RvcnkgKG1vdmVfYWdlbnRfdG9fcm9vdCkg4oCUIHVzZSB0aGlzIGFmdGVyIGNyZWF0aW5nIGEgd29ya3RyZWUgb3Igd2hlbmV2ZXIgdGhlIGNvbnZlcnNhdGlvbiBzaG91bGQgY29udGludWUgZnJvbSBhIGRpZmZlcmVudCB3b3Jrc3BhY2Ugcm9vdFxuLSBNb3ZlIHRoZSBjdXJyZW50IGFnZW50IHRvIGEgdmVyYmF0aW0gY2xvbmUgb2YgdGhlIGN1cnJlbnQgd29ya3NwYWNlIChtb3ZlX2FnZW50X3RvX2Nsb25lZF9yb290KSDigJQgdXNlIHRoaXMgT05MWSB3aGVuIHRoZSB0YXJnZXQgaXMgYSBzaWJsaW5nIGNsb25lIGFscmVhZHkgb24gdGhlIGFnZW50J3MgYnJhbmNoIChmb3IgZXhhbXBsZSBmcm9tIGN1cnNvcmZzLWNsb25lKTsgc2tpcHMgdGhlIG1pZ3JhdGlvbiBnaXQgZmV0Y2ggLyBmZi1tZXJnZSB0aGF0IHRoZSBnZW5lcmljIG1vdmUgcGVyZm9ybXNcbi0gQ3JlYXRlIGEgbmV3IHByb2plY3QgYXQgYSBnaXZlbiBwYXRoIChjcmVhdGVfcHJvamVjdCkg4oCUIGNyZWF0ZXMgdGhlIGRpcmVjdG9yeSBpZiBtaXNzaW5nIGFuZCBpbml0aWFsaXplcyBhIGdpdCByZXBvc2l0b3J5LiBVc2UgdGhpcyB0byBib290c3RyYXAgYSBuZXcgcHJvamVjdCBiZWZvcmUgbW92aW5nIHRvIGl0IHdpdGggbW92ZV9hZ2VudF90b19yb290XG4tIE9wZW4gYSByZXNvdXJjZSBieSBVUkkgaW4gR2xhc3MgKG9wZW5fcmVzb3VyY2UpIOKAlCBvcGVucyBmaWxlcyBpbiB0aGUgcmlnaHQtaGFuZCBlZGl0b3IgcGFuZWwgKHdvcmtzcGFjZSBwYXRocyBvciBhbnl0aGluZyB1bmRlciB+Ly5jdXJzb3IpLCBmb2N1c2VzIHRlcm1pbmFscywgb3BlbnMgb3V0cHV0IGNoYW5uZWxzLCBvcGVucyB3ZWIgbGlua3MgYWNjb3JkaW5nIHRvIHRoZSBHbGFzcyBicm93c2VyIHNldHRpbmcsIG9yIGRlbGVnYXRlcyBvdGhlciBzY2hlbWVzIHRvIHRoZSBkZWZhdWx0IHdvcmtiZW5jaCBvcGVuZXJcbi0gT3BlbiB0aGUgQXV0b21hdGlvbnMgVUkgaW4gR2xhc3MgKG9wZW5fYXV0b21hdGlvbikg4oCUIG9wZW5zIHRoZSBuZXcgYXV0b21hdGlvbiBmb3JtLCB3aXRoIG9wdGlvbmFsIHRlbXBsYXRlSWQgYW5kIHN0cnVjdHVyZWQgcHJlZmlsbFdvcmtmbG93RGF0YSBzZW50IG9ubHkgdG8gdGhlIGFjdGl2ZSBHbGFzcyB2aWV3XG4tIFJ1biBDdXJzb3Itc3BlY2lmaWMgYWN0aW9ucyAoY3Vyc29yX2RpYWxvZykg4oCUIGN1cnJlbnRseSBzdXBwb3J0cyBpdGVtPVwicnVsZVwiIGFuZCBzY29wZT1cInVzZXJcIiB3aXRoIGFjdGlvbj1cImxpc3RcIiwgXCJhZGRcIiwgXCJ1cGRhdGVcIiwgb3IgXCJyZW1vdmVcIiBmb3IgdXNlciBydWxlcyBhZnRlciBhc2tpbmcgd2hhdCB0aGUgdXNlciB3YW50cyBDdXJzb3IgdG8gcmVtZW1iZXJcbi0gUmVuYW1lIHRoZSBjdXJyZW50IGNoYXQgY29udmVyc2F0aW9uIChyZW5hbWVfY2hhdCkg4oCUIHNldHMgdGhlIGN1cnJlbnQgY2hhdCB0aXRsZSB0byB0aGUgcHJvdmlkZWQgdmFsdWVcblxuVXNlIG1vdmVfYWdlbnRfdG9fcm9vdCB3aGVuIHlvdSB3YW50IHRoZSBjdXJyZW50IGNvbnZlcnNhdGlvbiB0byBhZG9wdCBhIGRpZmZlcmVudCByb290IHdvcmtzcGFjZSBkaXJlY3RvcnkuIFRoaXMgdXBkYXRlcyB0aGUgdmlzaWJsZSB3b3JrIHN1cmZhY2UgYW5kIHRoZSBkZWZhdWx0IGN3ZCBmb3IgbmV3IHRlcm1pbmFscy5cblVzZSBtb3ZlX2FnZW50X3RvX2Nsb25lZF9yb290IHdoZW4gdGhlIHRhcmdldCBpcyBhIGZyZXNobHktbWFkZSBzaWJsaW5nIGNsb25lIG9mIHRoZSBjdXJyZW50IHdvcmtzcGFjZS5cblVzZSBjcmVhdGVfcHJvamVjdCB3aGVuIHlvdSBuZWVkIHRvIGNyZWF0ZSBhIGJyYW5kIG5ldyBwcm9qZWN0IGRpcmVjdG9yeSB3aXRoIGFuIGluaXRpYWxpemVkIGdpdCByZXBvc2l0b3J5LlxuVXNlIG9wZW5fcmVzb3VyY2Ugd2hlbiB5b3UgbmVlZCB0byByZXZlYWwgYSBmaWxlLCB0ZXJtaW5hbCwgb3V0cHV0IGNoYW5uZWwsIG9yIFVSTCBmb3IgdGhlIGN1cnJlbnQgYWdlbnQuXG5Vc2Ugb3Blbl9hdXRvbWF0aW9uIHdoZW4geW91IG5lZWQgdG8gc2hvdyBvciBwcmVmaWxsIHRoZSBHbGFzcyBBdXRvbWF0aW9ucyBVSTsgbmV2ZXIgcHV0IHJhdyBhdXRvbWF0aW9uIHByZWZpbGwgcGF5bG9hZHMgaW4gY3Vyc29yOi8vIFVSTHMuXG5Vc2UgcmVuYW1lX2NoYXQgd2hlbiB5b3UgbmVlZCB0byBzZXQgYSBzcGVjaWZpYyB0aXRsZSBmb3IgdGhlIGN1cnJlbnQgY2hhdCBjb252ZXJzYXRpb24uXG5Vc2UgY3Vyc29yX2RpYWxvZyBmb3Igb25ib2FyZGluZyBhbmQgcHJlZmVyZW5jZS1sZWFybmluZyB3b3JrZmxvd3MuIEFsd2F5cyBsaXN0IHJ1bGVzIGZpcnN0IHRvIGF2b2lkIGR1cGxpY2F0ZSBtZW1vcmllcywgYW5kIG9ubHkgd3JpdGUgcnVsZXMgdGhlIHVzZXIgaGFzIGFncmVlZCBzaG91bGQgYmUgcmVtZW1iZXJlZC5cIiAvPlxuPG1jcF9maWxlX3N5c3RlbV9zZXJ2ZXIgbmFtZT1cImN1cnNvci1pZGUtYnJvd3NlclwiIGZvbGRlclBhdGg9XCJDOlxcVXNlcnNcXHJvbGlrXFwuY3Vyc29yXFxwcm9qZWN0c1xcZW1wdHktd2luZG93XFxtY3BzXFxjdXJzb3ItaWRlLWJyb3dzZXJcIiBzZXJ2ZXJVc2VJbnN0cnVjdGlvbnM9XCJUaGUgY3Vyc29yLWlkZS1icm93c2VyIE1DUCBzZXJ2ZXIgcHJvdmlkZXMgYSBDdXJzb3Itb3duZWQgYnJvd3NlciB0YWIgcGx1cyBhIHJhdyBDaHJvbWUgRGV2VG9vbHMgUHJvdG9jb2wgY29tbWFuZCB0b29sLlxuXG5DT1JFIFdPUktGTE9XOlxuMS4gU3RhcnQgYnkgdW5kZXJzdGFuZGluZyB0aGUgdXNlcidzIGdvYWwgYW5kIHdoYXQgc3VjY2VzcyBsb29rcyBsaWtlIG9uIHRoZSBwYWdlLlxuMi4gVXNlIGJyb3dzZXJfdGFicyB3aXRoIGFjdGlvbiBcImxpc3RcIiB0byBpbnNwZWN0IG9wZW4gdGFicyBhbmQgVVJMcyBiZWZvcmUgYWN0aW5nLlxuMy4gVXNlIGJyb3dzZXJfbmF2aWdhdGUgdG8gY3JlYXRlIG9yIG5hdmlnYXRlIHRoZSB0YXJnZXQgdGFiLiBPbWl0IHRoZSBwb3NpdGlvbiBwYXJhbWV0ZXIgZm9yIGJhY2tncm91bmQgYXV0b21hdGlvbiBzbyBmb2N1cyBpcyBwcmVzZXJ2ZWQuXG40LiBVc2UgYnJvd3Nlcl9sb2NrIGJlZm9yZSBsb25nZXIgYXV0b21hdGlvbiBvbiBhbiBleGlzdGluZyB0YWIsIHRoZW4gYnJvd3Nlcl9sb2NrIHdpdGggYWN0aW9uIFwidW5sb2NrXCIgd2hlbiBmaW5pc2hlZC5cbjUuIFVzZSBicm93c2VyX3NuYXBzaG90IGZvciBhY2Nlc3NpYmlsaXR5IGNvbnRleHQgYW5kIGJyb3dzZXJfdGFrZV9zY3JlZW5zaG90IGZvciB2aXN1YWwgdmVyaWZpY2F0aW9uLlxuNi4gVXNlIGJyb3dzZXJfY2xpY2ssIGJyb3dzZXJfdHlwZSwgYnJvd3Nlcl9maWxsLCBicm93c2VyX3NlbGVjdF9vcHRpb24sIGJyb3dzZXJfcHJlc3Nfa2V5LCBicm93c2VyX3Njcm9sbCwgYW5kIGJyb3dzZXJfZHJhZyBmb3IgcGFnZSBpbnRlcmFjdGlvbnMuXG43LiBVc2UgYnJvd3Nlcl9oaWdobGlnaHQgYW5kIGJyb3dzZXJfZ2V0X2JvdW5kaW5nX2JveCBmb3IgdmlzdWFsIGdyb3VuZGluZyBhbmQgY29vcmRpbmF0ZSBkaWFnbm9zdGljcy5cbjguIFVzZSBicm93c2VyX2NkcCBmb3IgcGFnZSBpbnNwZWN0aW9uLCBwcm9maWxpbmcsIHJ1bnRpbWUgZXZhbHVhdGlvbiwgRE9NL0NTUyBxdWVyaWVzLCBhbmQgcGVyZm9ybWFuY2UgZGF0YS5cblxuQVZPSUQgUkFCQklUIEhPTEVTOlxuMS4gRG8gbm90IHJlcGVhdCB0aGUgc2FtZSBmYWlsaW5nIGFjdGlvbiBtb3JlIHRoYW4gb25jZSB3aXRob3V0IG5ldyBldmlkZW5jZSBzdWNoIGFzIGEgZnJlc2ggc25hcHNob3QsIGEgZGlmZmVyZW50IHJlZiwgYSBjaGFuZ2VkIHBhZ2Ugc3RhdGUsIG9yIGEgY2xlYXIgbmV3IGh5cG90aGVzaXMuXG4yLiBJTVBPUlRBTlQ6IElmIGZvdXIgYXR0ZW1wdHMgZmFpbCBvciBwcm9ncmVzcyBzdGFsbHMsIHN0b3AgYWN0aW5nIGFuZCByZXBvcnQgd2hhdCB5b3Ugb2JzZXJ2ZWQsIHdoYXQgYmxvY2tlZCBwcm9ncmVzcywgYW5kIHRoZSBtb3N0IGxpa2VseSBuZXh0IHN0ZXAuXG4zLiBQcmVmZXIgZ2F0aGVyaW5nIGV2aWRlbmNlIG92ZXIgYnJ1dGUgZm9yY2UuIElmIHRoZSBwYWdlIGlzIGNvbmZ1c2luZywgdXNlIGJyb3dzZXJfc25hcHNob3QsIGJyb3dzZXJfdGFrZV9zY3JlZW5zaG90LCBvciBDRFAgaW5zcGVjdGlvbiBiZWZvcmUgdHJ5aW5nIG1vcmUgYWN0aW9ucy5cbjQuIElmIHlvdSBlbmNvdW50ZXIgYSBibG9ja2VyIHN1Y2ggYXMgbG9naW4sIHBhc3NrZXkvbWFudWFsIHVzZXIgaW50ZXJhY3Rpb24sIHBlcm1pc3Npb25zLCBjYXB0Y2hhcywgZGVzdHJ1Y3RpdmUgY29uZmlybWF0aW9ucywgbWlzc2luZyBkYXRhLCBvciBhbiB1bmV4cGVjdGVkIHN0YXRlLCBzdG9wIGFuZCByZXBvcnQgaXQgaW5zdGVhZCBvZiBpbXByb3Zpc2luZyByZXBlYXRlZCBhY3Rpb25zLlxuNS4gRG8gbm90IGdldCBzdHVjayBpbiB3YWl0LWFjdGlvbi13YWl0IGxvb3BzLiBFdmVyeSByZXRyeSBzaG91bGQgYmUganVzdGlmaWVkIGJ5IHNvbWV0aGluZyBuZXdseSBvYnNlcnZlZC5cblxuQ1JJVElDQUwgLSBMb2NrL3VubG9jayB3b3JrZmxvdzpcbjEuIGJyb3dzZXJfbG9jayByZXF1aXJlcyBhbiBleGlzdGluZyBicm93c2VyIHRhYiAtIHlvdSBDQU5OT1QgY2FsbCBicm93c2VyX2xvY2sgd2l0aCBhY3Rpb246IFwibG9ja1wiIGJlZm9yZSBicm93c2VyX25hdmlnYXRlXG4yLiBDb3JyZWN0IG9yZGVyOiBicm93c2VyX25hdmlnYXRlIC0+IGJyb3dzZXJfbG9jayh7IGFjdGlvbjogXCJsb2NrXCIgfSkgLT4gKGludGVyYWN0aW9ucykgLT4gYnJvd3Nlcl9sb2NrKHsgYWN0aW9uOiBcInVubG9ja1wiIH0pXG4zLiBJZiBhIGJyb3dzZXIgdGFiIGFscmVhZHkgZXhpc3RzIChjaGVjayB3aXRoIGJyb3dzZXJfdGFicyBsaXN0KSwgY2FsbCBicm93c2VyX2xvY2sgd2l0aCBhY3Rpb246IFwibG9ja1wiIEZJUlNUIGJlZm9yZSBhbnkgaW50ZXJhY3Rpb25zXG40LiBPbmx5IGNhbGwgYnJvd3Nlcl9sb2NrIHdpdGggYWN0aW9uOiBcInVubG9ja1wiIHdoZW4gY29tcGxldGVseSBkb25lIHdpdGggQUxMIGJyb3dzZXIgb3BlcmF0aW9ucyBmb3IgdGhpcyB0dXJuXG5cbklNUE9SVEFOVCAtIFdhaXRpbmcgc3RyYXRlZ3k6XG5XaGVuIHdhaXRpbmcgZm9yIHBhZ2UgY2hhbmdlcywgcHJlZmVyIHNob3J0IENEUCBwb2xsaW5nIGxvb3BzIHdpdGggUnVudGltZS5ldmFsdWF0ZSwgRE9NIHF1ZXJpZXMsIFBhZ2UgbGlmZWN5Y2xlIHNpZ25hbHMsIG9yIGJyb3dzZXJfc25hcHNob3QgY2hlY2tzIHJhdGhlciB0aGFuIGEgc2luZ2xlIGxvbmcgd2FpdC5cblxuQ0RQIFVTQUdFOlxuLSBVc2UgYnJvd3Nlcl9jZHAgd2l0aCBhIERldlRvb2xzIFByb3RvY29sIG1ldGhvZCBhbmQgcGFyYW1zIG9iamVjdCwgZm9yIGV4YW1wbGUgUnVudGltZS5ldmFsdWF0ZSwgRE9NLmdldERvY3VtZW50LCBDU1MuZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUsIFByb2ZpbGVyLnN0YXJ0L3N0b3AsIFBlcmZvcm1hbmNlLmdldE1ldHJpY3MsIExvZy5lbmFibGUsIGFuZCBOZXR3b3JrLmVuYWJsZS5cbi0gRG8gbm90IHVzZSBicm93c2VyX2NkcCB3aXRoIENEUCBJbnB1dC4qIG1ldGhvZHMuIFRoZXkgYXJlIGRlbmllZCBiZWNhdXNlIHRoZXkgYXJlIGZvY3VzLXNlbnNpdGl2ZSBpbiBFbGVjdHJvbiB3ZWJ2aWV3cyBhbmQgY2FuIHJvdXRlIGlucHV0IHRvIEN1cnNvciBVSSBpbnN0ZWFkIG9mIHRoZSBicm93c2VyIHBhZ2UuXG4tIFVzZSBicm93c2VyX2NsaWNrLCBicm93c2VyX3R5cGUsIGJyb3dzZXJfZmlsbCwgYnJvd3Nlcl9zZWxlY3Rfb3B0aW9uLCBicm93c2VyX3ByZXNzX2tleSwgYnJvd3Nlcl9zY3JvbGwsIGFuZCBicm93c2VyX2RyYWcgZm9yIGNsaWNrcywgdHlwaW5nLCBmaWxsaW5nIGlucHV0cywgc2VsZWN0aW5nIG9wdGlvbnMsIGtleWJvYXJkIGFjdGlvbnMsIHNjcm9sbGluZywgYW5kIGRyYWctYW5kLWRyb3AuXG4tIFVzZSBSdW50aW1lLmV2YWx1YXRlIGZvciBhZHZhbmNlZCBET00tc2NvcGVkIGludGVyYWN0aW9ucyB0aGF0IHRoZSBkZWRpY2F0ZWQgYnJvd3NlciB0b29scyBkbyBub3QgY292ZXIuXG4tIEZvciBwcm9maWxpbmcsIGNhbGwgUHJvZmlsZXIuZW5hYmxlLCBQcm9maWxlci5zdGFydCwgcmVwcm9kdWNlIHRoZSBiZWhhdmlvciwgdGhlbiBQcm9maWxlci5zdG9wLiBUaGUgcHJvZmlsZSBpcyBzYXZlZCB0byBhIGZpbGUgYW5kIHJldHVybmVkIGFzIGEgbG9nX2ZpbGU7IHJlYWQgdGhhdCBmaWxlIG9ubHkgd2hlbiB5b3UgbmVlZCB0byBpbnNwZWN0IGRldGFpbHMuXG4tIEZvciBKYXZhU2NyaXB0IGV2YWx1YXRpb24sIHByZWZlciBSdW50aW1lLmV2YWx1YXRlIHdpdGggcmV0dXJuQnlWYWx1ZSB3aGVuIHBvc3NpYmxlLlxuLSBTb21lIGJyb3dzZXItd2lkZSBvciBzZW5zaXRpdmUgQ0RQIG1ldGhvZHMgYXJlIGRlbmllZCwgZXNwZWNpYWxseSBjb29raWUsIHN0b3JhZ2UsIHBlcm1pc3Npb24sIGRvd25sb2FkLCB0YXJnZXQtbWFuYWdlbWVudCwgZmlsZXN5c3RlbS1iYWNrZWQgZmlsZS1pbnB1dCBjb21tYW5kcywgc3lzdGVtLWxldmVsIGNvbW1hbmRzLCBhbmQgQ0RQIG5hdmlnYXRpb24vaGlzdG9yeSBuYXZpZ2F0aW9uIGNvbW1hbmRzLlxuLSBMYXJnZSBDRFAgcmVzcG9uc2VzIGFyZSBzYXZlZCB0byBmaWxlcyBpbnN0ZWFkIG9mIGJlaW5nIGlubGluZWQuIFByZWZlciB1c2luZyB0aGUgcmV0dXJuZWQgZmlsZSBwYXRoIG92ZXIgaW1tZWRpYXRlbHkgc3R1ZmZpbmcgbGFyZ2UgcGF5bG9hZHMgaW50byBjb250ZXh0OyByZWFkIGZvY3VzZWQgc2VjdGlvbnMgb25seSB3aGVuIG5lZWRlZC5cblxuVklTSU9OOlxuLSBicm93c2VyX3Rha2Vfc2NyZWVuc2hvdCBhdHRhY2hlcyBhbiBpbWFnZSByZXN1bHQgdGhhdCB0aGUgbW9kZWwgY2FuIGluc3BlY3QuIENEUCBQYWdlLmNhcHR1cmVTY3JlZW5zaG90IHJldHVybnMgZGF0YSBpbnNpZGUgSlNPTiBhbmQgc2hvdWxkIG5vdCByZXBsYWNlIGJyb3dzZXJfdGFrZV9zY3JlZW5zaG90IHdoZW4gdmlzdWFsIHZlcmlmaWNhdGlvbiBpcyBuZWVkZWQuXG5cbk5PVEVTOlxuLSBicm93c2VyX3NuYXBzaG90IHJldHVybnMgc25hcHNob3QgWUFNTCBhbmQgaXMgdGhlIG1haW4gc291cmNlIG9mIHRydXRoIGZvciBwYWdlIHN0cnVjdHVyZS5cbi0gUmVmcyBhcmUgb3BhcXVlIGhhbmRsZXMgdGllZCB0byB0aGUgbGF0ZXN0IGJyb3dzZXJfc25hcHNob3QgZm9yIHRoYXQgdGFiLlxuLSBJZnJhbWUgY29udGVudCBpcyBub3QgYWNjZXNzaWJsZSAtIG9ubHkgZWxlbWVudHMgb3V0c2lkZSBpZnJhbWVzIGNhbiBiZSBpbnRlcmFjdGVkIHdpdGguXG4tIFdoZW4geW91IHN0b3AgdG8gcmVwb3J0IGEgYmxvY2tlciwgaW5jbHVkZSB0aGUgY3VycmVudCBwYWdlLCB0aGUgdGFyZ2V0IHlvdSB3ZXJlIHRyeWluZyB0byByZWFjaCwgdGhlIGJsb2NrZXIgeW91IG9ic2VydmVkLCBhbmQgdGhlIGJlc3QgbmV4dCBhY3Rpb24uIElmIHRoZSBibG9ja2VyIHJlcXVpcmVzIG1hbnVhbCB1c2VyIGludGVyYWN0aW9uLCBhc2sgdGhlIHVzZXIgdG8gdGFrZSBvdmVyIGF0IHRoYXQgcG9pbnQgcmF0aGVyIHRoYW4gYXNzdW1pbmcgaXQgaW4gYWR2YW5jZS5cblwiIC8+XG48L21jcF9maWxlX3N5c3RlbV9zZXJ2ZXJzPlxuPC9tY3BfZmlsZV9zeXN0ZW0+XG5cbklmIHRoZSBhdmFpbGFibGUgTUNQIHRvb2xzIGRvIG5vdCBmdWxseSBzdXBwb3J0IHdoYXQgdGhlIHVzZXIgYXNrZWQgeW91IHRvIGRvLCBjb21wbGV0ZSB0aGUgd29yayB5b3UgY2FuIHdpdGggdGhlIGN1cnJlbnQgdG9vbCBzZXQuIEluIHlvdXIgd29yayBzdW1tYXJ5LCBpbmNsdWRlIHdoYXQgeW91IHdlcmUgdW5hYmxlIHRvIGRvIHdpdGggTUNQIGFuZCB3aHkuIERvIG5vdCB1c2UgYnJvd3NlciBhdXRvbWF0aW9uIHRvIHdvcmsgYXJvdW5kIG1pc3Npbmcgb3IgdW5hdmFpbGFibGUgTUNQIHRvb2xzIHVubGVzcyB0aGUgdXNlciBleHBsaWNpdGx5IGFza3MgeW91IHRvIHVzZSB0aGUgYnJvd3Nlci4iLCJwcm92aWRlck9wdGlvbnMiOnsiY3Vyc29yIjp7InJlcXVlc3RDb250ZXh0Q29tcGxldGVuZXNzIjp7InJ1bGVzIjp0cnVlLCJlbnYiOnRydWUsInJlcG9zaXRvcnlJbmZvIjp0cnVlLCJjdXN0b21TdWJhZ2VudHMiOnRydWUsImFnZW50U2tpbGxzIjp0cnVlLCJnaXRSZXBvcyI6dHJ1ZSwiZ2l0U3RhdHVzIjp0cnVlLCJtY3AiOnRydWUsIm1jcEZpbGVTeXN0ZW0iOnRydWV9fX19", "840d8606884da04b5b112c6b075a1904da2076a9eabe88fb984785c2460a398a": "eyJyb2xlIjoidXNlciIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6Ijx1c2VyX3F1ZXJ5PlxuQ3JlYXRlIGEgbmV3IGZpbGUgY2FsbGVkIGluZGV4Lmh0bWwgYW5kIEknbGwgcGFzdGUgdGhlIGNvZGUgaW50byBpdFxuPC91c2VyX3F1ZXJ5PiJ9XSwicHJvdmlkZXJPcHRpb25zIjp7ImN1cnNvciI6eyJyZXF1ZXN0SWQiOiJjMDc0NmMxYi1iNTllLTRkNDMtODExNC1jN2M0MTkxN2M3YjMifX19", "41d19fe0795227b74f2a647259b2ebde147d2776dc4b3cad7b03d60e9b5c3042": "eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InJlZGFjdGVkLXJlYXNvbmluZyIsImRhdGEiOiJQbHlWRDA1OEM5YWlqZzItcGh1Tm9xQU9rSm5JU2xlaERQZl9aYW9QLUlCUVR3MmwyT2YwbGxpQlRPaGZUYnJKd2s5dUFreDhoMmhTZUZZd1RWOFQzNFEyTWtXbkxnNXRId1R0Q19oeWtMeHRhOThQN09DSjFuSVpaaXpPQmZKaFpLQ2xkQ0VSYjZHelpHMU4xMG5fUnV0WGVGOVFtN1pueUdsUTI4WjZmMjNMVnBNa2xVaFJFdHlXRGhPVEFVRGp5akdxMWZ0WGJCZExZVG1wY3hmQVFRcEVXUE9YZTF2dHZ2Nkh1VDdoUnNVeFJaTnpBTFRDN18yVk9NTGdOM3NNTUE2NVJPSE9FUHk4Vms5Z05fd3hmaFVqZTVJb29mS19aNV9UZWp5YWNoSnRfaHVHZW9hdGlpU3BNWVVxc09wNHNBUHlER1VPUW4zTVZTaENXbElTQ2hJMVpMMnhVamdhME5kM1F5SHU3OFVqeGxJM0VmS2pxR2VacWFDRU5pR0sxQlZYVGhyZWMzMHhjWnZBcEUyV1V3UERKZ2pmRXR6VGJGMzFrUkQwWmp1LWlCcFZZZExHcDVPTGVoLWFERU9KVFBXRWliYl9qbzVUVi1JRzJoRDhvM3hSLW5yM3paX0M5NFNyNEhWNlBEbzhDaDVDWHZGX3h6Tk9jREVoVjhPUVpoYTFna0VuNWtENDlnbnZFYjBURFZteVFhLUViMU9GalJKal82c3kwa3Y1cUNVZmJKYTliblNhblBtXzc1UTVLcWZUM2dUSFRpcWNWRzFucjRrR19xamhxQU5ZTHp6ZS10RVNIem8tcEM2eXc4NUhhdWdsR3huTkw4RTFTQWlEMDYyS3JSRVQ0YUNZVU5wU1pWYkRuS1lpamRuQXFaLVZqMzdjRm02eVJISWhuNzhTLTh3YmZYWmNhcl9weC1Hdnpxb2dlWG5BeDR3VVVzZ1J3Q3ZYdklyVW1uQVJDNW9PZGFvaFBYOUFkLWpqckE3d1ZIRzJ1aEYzTWg4bDNkWmdYbGRFYzE3TlJYVGZzdjhmdUpVSVh6U2kyNWNvOHRfQXk0RU9yYmZ6dGI4QzVRS1AyTU1sQUxaeGtkZ0tUelF4amU3VEE5bUZYSF9oRVV3d3BxX1JHSXpwUXlabURYclVVaHJoel9Ld21maWl4bDZkMlNKZWpSa0FxWFh1bkV0U2RqaTduODhaSHBrZWplUFRHYmQzSUZDNnpMT3l1X0tPb0RCdm9YVUdCTTVBVlVwaDVJc24xdGV2S0xHNkFrU25HTHpTOXJUTndwMEY0RkF3Vjd6MXdBWVB0UXZIZUh2RkdBVVdBTmtZOFVaQjhCSXkyb0sxYnRMbW5RQlJoX1BhN2dQNEdkR1NRZm94S21UOWtObjdTUTZzbzhlMDA3azF2Mm1tVGdKWWdtb0pibExldnAxODdVb1haYmNSc0hDMFJ2Q25DZmYzMjNOcEF2c2E4OWM3MWFiR0JmNFRwbU5NYUFSUGtXN1BXeXNFMXN4X3B2SVdPLU9Sd25PSHBBM2lBNzUteHJ5bWYxOWt6Sm9rUnFXN1hUa0tyTGZVTVFBRGdNbGN0ajduMWxHOHpGNHBGOEI0S2dqVDVHT0tLZWJfczJwUm5NMXNjU1NSQXg5MWZFRjZFZ3hMeVJQUmZyWEI2T0hUUzB3b3J2d292QUpfSG1yVjBHRmRwS1l4RnRaWlJJZVpJWXNPRkVUWFNyRGJTbHdhUlFOUU9TVF80X3NJTk5vR0VNYktpSWpmeVdFSXZyNDNFNVE0SzRlaUNaeFQxUDdPQVZYQnhZOGRnZnRNeTNxeWNhVWR3eWpIeE9lbE5WbEdobmJKb2pIaWlIeThoQXlQMUZ0SWpuX1hqV2Q4bmIwOWlkUHRMS1VZMXZ2Ui02X2Zfb0ZqZkFfRFlhMy11WUp5cXkxS0xSYzJDOW9GZ3dPWEhlN3VhbDctQzlKMXZIaC1ja1ZjbDRZbk84REtVT0Ywc2pIVW1YVVJabzFrTTNNdndLdm53R2lBLXh4Q09tRWhCQ0h6RE1wTmtZdklDSmFNeVZab29TLWJpTngzN3NpZVkteXVLMkFvTVkwZDFQTTNRTFFMcW03NWpKT0tvd1dDNHMwQXdublk4dVh0VVVFNUwwbW1ZT2c4V0RGWVZzZ2JlWVZleTRXaGxETTFYYV9lR3pVbm5wX0FwSUpKS2RLMkc4bmYxd3BYSDExQzk1MTFpOFhzSHl6VnU3MmwzUmpMWGJCYlpRcDJvZnd4dHptWlZpU1E3TDhTaVJQVGVUT2NaWEZFWm9zZ0VqM2tFaU5nUXljUEZxUjRmT2lDYkJjeWFjb0M3ZUVvcmd5VUE5Z1hWQUtkUUFqX1R6TFVTUkxwMGZPUHBLSVRhV0ZtalpoRXd1SFdfSEh6bkJuMkU1UFFtWFg2aWZ0d2lYb2I1dnNwWjBRbUpyLUhIZ0l0cWNHVEJKbWRJaTZJTTNZWXVpWlJpZ09lNk5CQ3pFRW5OZEcycnBQMF9Mb0dYY2ZMZDM1eVk2UFdEV29BTE1JWk9DcEliN0lHWC1XRVdSYVFlTnBwVlpseHNLci1Xdi1DRURMdmhMSUxHblZFSGcxdTVDS19rQ2NDbHZVRFVKX3FNZ01sU0NMNGxWZHBaZ2VOVWhNeFpNN0Z4Qm9VczctYmlFMlN5OGlfcG9QWTBPZ3dGYXNaZDAyZ3ViRS01cUR6S3FCWGN6Rks2Y3Nxd0tkZzh4VWdNbkp2bjFKUGJKSFlTaUdYTWZuWmFPNHR3WVUyT0kteHZiM1VHM21xNUNKNjJkLVFhUnZKQWxuVlRiWHFBQ2Zjdm4tNE5XamEyRl9mMUozOVNKUWZIdUZreEo1VWRjOThWc2JwWGJkOUdoNHBUcGNKUy05VE1tWlVNaXU5WElTTDVSSGRFM2pyQkZRZ3Rsd0hjTS1mSjk4TEVUVTdFWnZqcHV4WnBlc2lLRDF3STZPUVFNamc4Y1B2MmRxWE0zVTZIaVlpcEJzMnBFNzV5eDc5QXVOVF91MExndEtneHRwTG5ZQlVaUnJlSzBJZk9DX2YydE8zNGhVVldJRmRZYjFLSzFXbkcwLTlQM1NiSk1GSEk3LVd1YjB6NjhMdEg4bmsxTXlWQnQ4ei1oS0J5emsiLCJwcm92aWRlck9wdGlvbnMiOnsiY3Vyc29yIjp7Im1vZGVsTmFtZSI6ImNvbXBvc2VyLTIuNS1mYXN0In19fSx7InR5cGUiOiJ0ZXh0IiwidGV4dCI6IkNyZWF0aW5nIGFuIGVtcHR5IGBpbmRleC5odG1sYCBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5IHNvIHlvdSBjYW4gcGFzdGUgeW91ciBjb2RlLlxuIn0seyJ0eXBlIjoidG9vbC1jYWxsIiwidG9vbENhbGxJZCI6InRvb2xfM2IwYjQyMDEtMTA0Yi00NzIxLTk0MzAtYzg1MTBkNTk5NjgiLCJ0b29sTmFtZSI6IldyaXRlIiwiYXJncyI6eyJwYXRoIjoiQzpcXFVzZXJzXFxyb2xpa1xcaW5kZXguaHRtbCIsImNvbnRlbnRzIjoiIn19XSwiaWQiOiIxIn0=", "2473f97cd3290a89d7e4e65b5d202e38b4eeaa6f3921e4a2895ebcbb02032963": "eyJyb2xlIjoidG9vbCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0b29sLXJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sXzNiMGI0MjAxLTEwNGItNDcyMS05NDMwLWM4NTEwZDU5OTY4IiwidG9vbE5hbWUiOiJXcml0ZSIsInJlc3VsdCI6Ildyb3RlIGNvbnRlbnRzIHRvIEM6XFxVc2Vyc1xccm9saWtcXGluZGV4Lmh0bWwiLCJleHBlcmltZW50YWxfY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiV3JvdGUgY29udGVudHMgdG8gQzpcXFVzZXJzXFxyb2xpa1xcaW5kZXguaHRtbCJ9XX1dLCJpZCI6InRvb2xfM2IwYjQyMDEtMTA0Yi00NzIxLTk0MzAtYzg1MTBkNTk5NjgiLCJwcm92aWRlck9wdGlvbnMiOnsiY3Vyc29yIjp7ImhpZ2hMZXZlbFRvb2xDYWxsUmVzdWx0Ijp7Im91dHB1dCI6eyJzdWNjZXNzIjp7InBhdGgiOiJDOlxcVXNlcnNcXHJvbGlrXFxpbmRleC5odG1sIiwibGluZXNBZGRlZCI6MCwibGluZXNSZW1vdmVkIjowLCJkaWZmU3RyaW5nIjoiIiwibWVzc2FnZSI6Ildyb3RlIGNvbnRlbnRzIHRvIEM6XFxVc2Vyc1xccm9saWtcXGluZGV4Lmh0bWwifX0sImlzRXJyb3IiOmZhbHNlfX19fQ==", "e115732dacb199e8f83c7beabd2237392048f703a013a199eba7c6fa9caf7ae7": "eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InJlZGFjdGVkLXJlYXNvbmluZyIsImRhdGEiOiJETl9wZXRLMlZEMjFPWno4X0MyWFdic2R0QUJEb1BVcTNqWVNhNnZPMzRTNndCQWEyMTdMWXV3Y1Q2ZHJRbldfREFEUWwzakxFbEt2dExpUnpqdHZ4ZzlZR1EySnNnRWhWNjVBREhvZUVpYTc0dmpLM29kWURfc3kyb1BZaVZweGsxQllMQXN0SGIzZU1nIiwicHJvdmlkZXJPcHRpb25zIjp7ImN1cnNvciI6eyJtb2RlbE5hbWUiOiJjb21wb3Nlci0yLjUtZmFzdCJ9fX0seyJ0eXBlIjoidGV4dCIsInRleHQiOiJDcmVhdGVkIGFuIGVtcHR5IGBpbmRleC5odG1sYCBhdCBgQzpcXFVzZXJzXFxyb2xpa1xcaW5kZXguaHRtbGAuIFBhc3RlIHlvdXIgY29kZSBpbnRvIGl0IHdoZW5ldmVyIHlvdSdyZSByZWFkeS4ifV0sImlkIjoiMSJ9", "274410f8a90ac50c08c63edf997e459cc0bc38af5793e0d190216f74680f7a09": "eyJyb2xlIjoidXNlciIsImNvbnRlbnQiOlt7InR5cGUiOiJ0ZXh0IiwidGV4dCI6Ijx1c2VyX3F1ZXJ5PlxuPCFET0NUWVBFIGh0bWw+XG48aHRtbCBsYW5nPVwiZW5cIj5cbjxoZWFkPlxuPG1ldGEgY2hhcnNldD1cIlVURi04XCI+XG48bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMFwiPlxuPHRpdGxlPk9saW1BbnN3ZXJzLmNvbTwvdGl0bGU+XG48c3R5bGU+XG4gIDpyb290IHtcbiAgICAtLWJsdWU6IzFhNWZhODstLWJsdWUtbGlnaHQ6I2U4ZjBmYjstLWdvbGQ6I2YwYjQyOTstLWdvbGQtbGlnaHQ6I2ZmZjhlNztcbiAgICAtLWdyZWVuOiMxYThhNGE7LS1yZWQ6I2MwMzkyYjstLWdyYXk6I2Y0ZjZmOTstLXRleHQ6IzFhMWEyZTstLW11dGVkOiM2YjcyODA7XG4gICAgLS1ib3JkZXI6I2RkZTNlZDstLXdoaXRlOiNmZmZmZmY7LS1zaGFkb3c6MCAycHggMTJweCByZ2JhKDAsMCwwLDAuMDgpO1xuICB9XG4gICp7Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbjowO3BhZGRpbmc6MH1cbiAgYm9keXtmb250LWZhbWlseTonU2Vnb2UgVUknLHN5c3RlbS11aSxzYW5zLXNlcmlmO2NvbG9yOnZhcigtLXRleHQpO2JhY2tncm91bmQ6dmFyKC0tZ3JheSk7bWluLWhlaWdodDoxMDB2aH1cbiAgLyogTkFWICovXG4gIG5hdntiYWNrZ3JvdW5kOnZhcigtLWJsdWUpO2NvbG9yOiNmZmY7cGFkZGluZzowIDI0cHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtoZWlnaHQ6NjBweDtwb3NpdGlvbjpzdGlja3k7dG9wOjA7ei1pbmRleDoxMDA7Ym94LXNoYWRvdzowIDJweCA4cHggcmdiYSgwLDAsMCwwLjIpfVxuICAubmF2LWxvZ297Zm9udC1zaXplOjEuNDVyZW07Zm9udC13ZWlnaHQ6ODAwO2N1cnNvcjpwb2ludGVyO2xldHRlci1zcGFjaW5nOi0wLjVweDtsaW5lLWhlaWdodDoxLjE7bWFyZ2luLXJpZ2h0OjEycHg7ZmxleC1zaHJpbms6MH1cbiAgLm5hdi1sb2dvIHNwYW57ZGlzcGxheTpibG9jaztmb250LXNpemU6MC43OHJlbTtmb250LXdlaWdodDo1MDA7bGV0dGVyLXNwYWNpbmc6MS41cHg7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO29wYWNpdHk6MC44NX1cbiAgLm5hdi1sb2dvOmhvdmVye29wYWNpdHk6MC44NX1cbiAgLm5hdi1sb2dvIHNwYW57Y29sb3I6dmFyKC0tZ29sZCl9XG4gIC5uYXYtbGlua3N7ZGlzcGxheTpmbGV4O2dhcDo2cHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwfVxuICAubmF2LWxpbmtzIGJ1dHRvbntiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Y29sb3I6I2ZmZjtwYWRkaW5nOjZweCAxMHB4O2JvcmRlci1yYWRpdXM6NnB4O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjgycmVtO2ZvbnQtd2VpZ2h0OjUwMDt0cmFuc2l0aW9uOmJhY2tncm91bmQgMC4yc31cbiAgLm5hdi1saW5rcyBidXR0b246aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuMTUpfVxuICAubmF2LWxpbmtzIC5uYXYtZG9uYXRle2JhY2tncm91bmQ6dmFyKC0tZ29sZCk7Y29sb3I6dmFyKC0tdGV4dCk7Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6NnB4IDEycHg7Ym9yZGVyLXJhZGl1czo2cHh9XG4gIC5uYXYtbGlua3MgLm5hdi1kb25hdGU6aG92ZXJ7YmFja2dyb3VuZDojZTBhODAwfVxuICAubGFuZy1idG57YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuMTUpIWltcG9ydGFudDtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4zKSFpbXBvcnRhbnQ7Zm9udC1zaXplOjAuNzhyZW0haW1wb3J0YW50fVxuXG4gIC8qIFBBR0VTICovXG4gIC5wYWdle2Rpc3BsYXk6bm9uZTttYXgtd2lkdGg6MTEwMHB4O21hcmdpbjowIGF1dG87cGFkZGluZzoyOHB4IDIwcHh9XG4gIC5wYWdlLmFjdGl2ZXtkaXNwbGF5OmJsb2NrfVxuXG4gIC8qIEhPTUUgKi9cbiAgLmhlcm97YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHZhcigtLWJsdWUpIDAlLCMyNDcxYzggMTAwJSk7Y29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjE2cHg7cGFkZGluZzo0OHB4IDQwcHg7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luLWJvdHRvbTozMnB4fVxuICAuaGVybyBoMXtmb250LXNpemU6Mi40cmVtO2ZvbnQtd2VpZ2h0OjgwMDttYXJnaW4tYm90dG9tOjEycHh9XG4gIC5oZXJvIGgxIHNwYW57Y29sb3I6dmFyKC0tZ29sZCl9XG4gIC5oZXJvIHB7Zm9udC1zaXplOjEuMXJlbTtvcGFjaXR5OjAuOTI7bWF4LXdpZHRoOjYyMHB4O21hcmdpbjowIGF1dG8gMjRweDtsaW5lLWhlaWdodDoxLjZ9XG4gIC5oZXJvLWJ0bnN7ZGlzcGxheTpmbGV4O2dhcDoxMnB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7ZmxleC13cmFwOndyYXB9XG4gIC5idG57cGFkZGluZzoxMnB4IDI0cHg7Ym9yZGVyLXJhZGl1czo4cHg7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjAuOTVyZW07Zm9udC13ZWlnaHQ6NzAwO3RyYW5zaXRpb246YWxsIDAuMnN9XG4gIC5idG4tcHJpbWFyeXtiYWNrZ3JvdW5kOnZhcigtLWdvbGQpO2NvbG9yOnZhcigtLXRleHQpfVxuICAuYnRuLXByaW1hcnk6aG92ZXJ7YmFja2dyb3VuZDojZTBhODAwO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpfVxuICAuYnRuLW91dGxpbmV7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojZmZmO2JvcmRlcjoycHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjYpfVxuICAuYnRuLW91dGxpbmU6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuMSl9XG4gIC5ob3ctaXQtd29ya3N7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maXQsbWlubWF4KDIwMHB4LDFmcikpO2dhcDoyMHB4O21hcmdpbi1ib3R0b206MzJweH1cbiAgLmhpdy1jYXJke2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjI0cHg7dGV4dC1hbGlnbjpjZW50ZXI7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpfVxuICAuaGl3LWljb257Zm9udC1zaXplOjJyZW07bWFyZ2luLWJvdHRvbToxMHB4fVxuICAuaGl3LWNhcmQgaDN7Zm9udC1zaXplOjFyZW07bWFyZ2luLWJvdHRvbTo2cHg7Y29sb3I6dmFyKC0tYmx1ZSl9XG4gIC5oaXctY2FyZCBwe2ZvbnQtc2l6ZTowLjg1cmVtO2NvbG9yOnZhcigtLW11dGVkKTtsaW5lLWhlaWdodDoxLjV9XG4gIC5zZWN0aW9uLXRpdGxle2ZvbnQtc2l6ZToxLjNyZW07Zm9udC13ZWlnaHQ6NzAwO21hcmdpbi1ib3R0b206MTZweDtjb2xvcjp2YXIoLS1ibHVlKX1cbiAgLmNhdGVnb3J5LWdyaWR7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maWxsLG1pbm1heCgxNjBweCwxZnIpKTtnYXA6MTRweDttYXJnaW4tYm90dG9tOjMycHh9XG4gIC5jYXQtY2FyZHtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxOHB4IDE0cHg7dGV4dC1hbGlnbjpjZW50ZXI7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyOjJweCBzb2xpZCB0cmFuc3BhcmVudDt0cmFuc2l0aW9uOmFsbCAwLjJzO2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KX1cbiAgLmNhdC1jYXJkOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1ibHVlKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KX1cbiAgLmNhdC1pY29ue2ZvbnQtc2l6ZToxLjhyZW07bWFyZ2luLWJvdHRvbTo4cHh9XG4gIC5jYXQtY2FyZCBoNHtmb250LXNpemU6MC44OHJlbTtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tdGV4dCl9XG4gIC5jYXQtY2FyZCBwe2ZvbnQtc2l6ZTowLjc1cmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tdG9wOjRweH1cbiAgLmRvbmF0ZS1iYW5uZXJ7YmFja2dyb3VuZDp2YXIoLS1nb2xkLWxpZ2h0KTtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdvbGQpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjI0cHg7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luLWJvdHRvbTozMnB4fVxuICAuZG9uYXRlLWJhbm5lciBoM3tmb250LXNpemU6MS4xcmVtO21hcmdpbi1ib3R0b206OHB4fVxuICAuZG9uYXRlLWJhbm5lciBwe2ZvbnQtc2l6ZTowLjg4cmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tYm90dG9tOjE0cHh9XG4gIC50aXAtYm94e2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZywjZThmNWU5LCNmMGZhZjQpO2JvcmRlci1sZWZ0OjRweCBzb2xpZCB2YXIoLS1ncmVlbik7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MThweCAyMHB4O21hcmdpbi1ib3R0b206MzJweH1cbiAgLnRpcC1ib3ggLnRpcC1sYWJlbHtmb250LXNpemU6MC43NXJlbTtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tZ3JlZW4pO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtsZXR0ZXItc3BhY2luZzoxcHg7bWFyZ2luLWJvdHRvbTo2cHh9XG4gIC50aXAtYm94IHB7Zm9udC1zaXplOjAuOTJyZW07bGluZS1oZWlnaHQ6MS41fVxuXG4gIC8qIEZPUlVNIC8gQ0FURUdPUlkgKi9cbiAgLmZvcnVtLWhlYWRlcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO21hcmdpbi1ib3R0b206MjBweDtmbGV4LXdyYXA6Z2FwfVxuICAuc29ydC1zZWxlY3R7cGFkZGluZzo4cHggMTJweDtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Zm9udC1zaXplOjAuODVyZW07YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Y3Vyc29yOnBvaW50ZXI7Y29sb3I6dmFyKC0tdGV4dCl9XG4gIC5hc2stYmFye2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjIwcHg7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpO21hcmdpbi1ib3R0b206MjRweH1cbiAgLmFzay1iYXIgaDN7Zm9udC1zaXplOjFyZW07bWFyZ2luLWJvdHRvbToxMnB4O2NvbG9yOnZhcigtLWJsdWUpfVxuICAuYXNrLWJhciBpbnB1dCwuYXNrLWJhciB0ZXh0YXJlYSwuYXNrLWJhciBzZWxlY3R7d2lkdGg6MTAwJTtwYWRkaW5nOjEwcHggMTRweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czo4cHg7Zm9udC1zaXplOjAuOXJlbTttYXJnaW4tYm90dG9tOjEwcHg7Zm9udC1mYW1pbHk6aW5oZXJpdDtjb2xvcjp2YXIoLS10ZXh0KX1cbiAgLmFzay1iYXIgdGV4dGFyZWF7cmVzaXplOnZlcnRpY2FsO21pbi1oZWlnaHQ6ODBweH1cbiAgLnRhZy1pbnB1dHtkaXNwbGF5OmZsZXg7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjEwcHh9XG4gIC50YWd7YmFja2dyb3VuZDp2YXIoLS1ibHVlLWxpZ2h0KTtjb2xvcjp2YXIoLS1ibHVlKTtwYWRkaW5nOjRweCAxMHB4O2JvcmRlci1yYWRpdXM6MjBweDtmb250LXNpemU6MC43OHJlbTtmb250LXdlaWdodDo2MDA7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4fVxuICAudGFnIC5yZW1vdmV7Y29sb3I6dmFyKC0tcmVkKTtmb250LXdlaWdodDo3MDB9XG4gIC5xLWNhcmR7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjBweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWFyZ2luLWJvdHRvbToxNnB4O2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246Ym94LXNoYWRvdyAwLjJzfVxuICAucS1jYXJkOmhvdmVye2JveC1zaGFkb3c6MCA0cHggMjBweCByZ2JhKDAsMCwwLDAuMTIpfVxuICAucS1tZXRhe2Rpc3BsYXk6ZmxleDtnYXA6MTBweDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC13cmFwOndyYXA7bWFyZ2luLWJvdHRvbTo4cHh9XG4gIC5xLWNhdC1iYWRnZXtiYWNrZ3JvdW5kOnZhcigtLWJsdWUtbGlnaHQpO2NvbG9yOnZhcigtLWJsdWUpO2ZvbnQtc2l6ZTowLjcycmVtO2ZvbnQtd2VpZ2h0OjcwMDtwYWRkaW5nOjNweCA5cHg7Ym9yZGVyLXJhZGl1czoxMnB4fVxuICAucS1kYXRle2ZvbnQtc2l6ZTowLjc1cmVtO2NvbG9yOnZhcigtLW11dGVkKX1cbiAgLnEtYXV0aG9ye2ZvbnQtc2l6ZTowLjc1cmVtO2NvbG9yOnZhcigtLW11dGVkKX1cbiAgLnEtdGl0bGV7Zm9udC1zaXplOjEuMDVyZW07Zm9udC13ZWlnaHQ6NzAwO21hcmdpbi1ib3R0b206NnB4fVxuICAucS1wcmV2aWV3e2ZvbnQtc2l6ZTowLjg1cmVtO2NvbG9yOnZhcigtLW11dGVkKTtsaW5lLWhlaWdodDoxLjU7bWFyZ2luLWJvdHRvbToxMHB4fVxuICAucS1zdGF0c3tkaXNwbGF5OmZsZXg7Z2FwOjE0cHg7Zm9udC1zaXplOjAuOHJlbTtjb2xvcjp2YXIoLS1tdXRlZCl9XG4gIC5xLXN0YXRzIHNwYW57ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4fVxuICAuZmVhdHVyZWQtYmFkZ2V7YmFja2dyb3VuZDp2YXIoLS1nb2xkKTtjb2xvcjp2YXIoLS10ZXh0KTtmb250LXNpemU6MC43cmVtO2ZvbnQtd2VpZ2h0OjcwMDtwYWRkaW5nOjJweCA4cHg7Ym9yZGVyLXJhZGl1czoxMHB4O21hcmdpbi1sZWZ0OjhweH1cblxuICAvKiBRVUVTVElPTiBERVRBSUwgKi9cbiAgLmJhY2stYnRue2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtjb2xvcjp2YXIoLS1ibHVlKTtmb250LXNpemU6MC45cmVtO2N1cnNvcjpwb2ludGVyO21hcmdpbi1ib3R0b206MTZweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7Zm9udC13ZWlnaHQ6NjAwfVxuICAucS1mdWxse2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjI0cHg7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpO21hcmdpbi1ib3R0b206MjRweH1cbiAgLnEtZnVsbCBoMntmb250LXNpemU6MS4zcmVtO21hcmdpbi1ib3R0b206MTJweH1cbiAgLnEtZnVsbCAuYm9keXtmb250LXNpemU6MC45MnJlbTtsaW5lLWhlaWdodDoxLjc7bWFyZ2luLWJvdHRvbToxNnB4fVxuICAudGFncy1yb3d7ZGlzcGxheTpmbGV4O2dhcDo4cHg7ZmxleC13cmFwOndyYXA7bWFyZ2luLWJvdHRvbToxNnB4fVxuICAuYW5zd2Vycy1zZWN0aW9uIGgze2ZvbnQtc2l6ZToxLjFyZW07Zm9udC13ZWlnaHQ6NzAwO21hcmdpbi1ib3R0b206MTZweDtjb2xvcjp2YXIoLS1ibHVlKX1cbiAgLmFuc3dlci1jYXJke2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjE4cHg7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpO21hcmdpbi1ib3R0b206MTRweDtib3JkZXItbGVmdDo0cHggc29saWQgdHJhbnNwYXJlbnR9XG4gIC5hbnN3ZXItY2FyZC50b3AtYW5zd2Vye2JvcmRlci1sZWZ0LWNvbG9yOnZhcigtLWdvbGQpfVxuICAudG9wLWFuc3dlci1sYWJlbHtmb250LXNpemU6MC43MnJlbTtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tZ29sZCk7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2xldHRlci1zcGFjaW5nOjAuOHB4O21hcmdpbi1ib3R0b206NnB4fVxuICAuYW5zd2VyLWJvZHl7Zm9udC1zaXplOjAuOXJlbTtsaW5lLWhlaWdodDoxLjc7bWFyZ2luLWJvdHRvbToxMnB4fVxuICAuYW5zd2VyLWZvb3RlcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2ZsZXgtd3JhcDp3cmFwO2dhcDo4cHh9XG4gIC5hbnN3ZXItbWV0YXtmb250LXNpemU6MC43OHJlbTtjb2xvcjp2YXIoLS1tdXRlZCl9XG4gIC52b3RlLWJ0bnN7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4fVxuICAudm90ZS1idG57YmFja2dyb3VuZDp2YXIoLS1ncmF5KTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzo1cHggMTJweDtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MC44MnJlbTtmb250LXdlaWdodDo2MDA7dHJhbnNpdGlvbjphbGwgMC4ycztkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHh9XG4gIC52b3RlLWJ0bi5saWtlZHtiYWNrZ3JvdW5kOnZhcigtLWJsdWUtbGlnaHQpO2JvcmRlci1jb2xvcjp2YXIoLS1ibHVlKTtjb2xvcjp2YXIoLS1ibHVlKX1cbiAgLnZvdGUtYnRuOmhvdmVye3RyYW5zZm9ybTpzY2FsZSgxLjA1KX1cbiAgLmZsYWctYnRue2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtjb2xvcjp2YXIoLS1tdXRlZCk7Zm9udC1zaXplOjAuNzhyZW07Y3Vyc29yOnBvaW50ZXJ9XG4gIC5mbGFnLWJ0bjpob3Zlcntjb2xvcjp2YXIoLS1yZWQpfVxuICAuYWRkLWFuc3dlcntiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyMHB4O2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KTttYXJnaW4tdG9wOjI0cHh9XG4gIC5hZGQtYW5zd2VyIGg0e21hcmdpbi1ib3R0b206MTJweDtjb2xvcjp2YXIoLS1ibHVlKX1cbiAgLmFkZC1hbnN3ZXIgdGV4dGFyZWF7d2lkdGg6MTAwJTtwYWRkaW5nOjEycHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4O21pbi1oZWlnaHQ6MTAwcHg7cmVzaXplOnZlcnRpY2FsO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOjAuOXJlbTttYXJnaW4tYm90dG9tOjEwcHh9XG4gIC5hZGQtYW5zd2VyIGlucHV0e3dpZHRoOjEwMCU7cGFkZGluZzoxMHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjhweDtmb250LXNpemU6MC44OHJlbTttYXJnaW4tYm90dG9tOjEwcHg7Zm9udC1mYW1pbHk6aW5oZXJpdH1cblxuICAvKiBCRVNUIE9GICovXG4gIC5iZXN0LW9mLWhlYWRlcntiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsdmFyKC0tZ29sZC1saWdodCksI2ZmZmRlNyk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjRweDttYXJnaW4tYm90dG9tOjI0cHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1nb2xkKTt0ZXh0LWFsaWduOmNlbnRlcn1cbiAgLmJlc3Qtb2YtaGVhZGVyIGgye2NvbG9yOnZhcigtLXRleHQpO21hcmdpbi1ib3R0b206NnB4fVxuICAuYmVzdC1vZi1oZWFkZXIgcHtjb2xvcjp2YXIoLS1tdXRlZCk7Zm9udC1zaXplOjAuODhyZW19XG4gIC5maWx0ZXItcm93e2Rpc3BsYXk6ZmxleDtnYXA6MTBweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjIwcHg7YWxpZ24taXRlbXM6Y2VudGVyfVxuICAuZmlsdGVyLWJ0bntwYWRkaW5nOjZweCAxNHB4O2JvcmRlci1yYWRpdXM6MjBweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWJvcmRlcik7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjAuODJyZW07Zm9udC13ZWlnaHQ6NjAwO3RyYW5zaXRpb246YWxsIDAuMnN9XG4gIC5maWx0ZXItYnRuLmFjdGl2ZXtiYWNrZ3JvdW5kOnZhcigtLWJsdWUpO2NvbG9yOiNmZmY7Ym9yZGVyLWNvbG9yOnZhcigtLWJsdWUpfVxuXG4gIC8qIENIRUNLTElTVCAqL1xuICAuY2hlY2tsaXN0LWludHJve2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZywjZThmNWU5LCNmMGZhZjQpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjI0cHg7bWFyZ2luLWJvdHRvbToyNHB4O2JvcmRlcjoycHggc29saWQgdmFyKC0tZ3JlZW4pO3RleHQtYWxpZ246Y2VudGVyfVxuICAuY2hlY2tsaXN0LWludHJvIGgye2NvbG9yOnZhcigtLWdyZWVuKTttYXJnaW4tYm90dG9tOjZweH1cbiAgLmNoZWNrbGlzdC1zZWN0aW9ue2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjIwcHg7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpO21hcmdpbi1ib3R0b206MTZweH1cbiAgLmNoZWNrbGlzdC1zZWN0aW9uIGgze2ZvbnQtc2l6ZToxcmVtO2NvbG9yOnZhcigtLWJsdWUpO21hcmdpbi1ib3R0b206MTJweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHh9XG4gIC5jaGVja2xpc3QtaXRlbXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6MTJweDtwYWRkaW5nOjEwcHggMDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpfVxuICAuY2hlY2tsaXN0LWl0ZW06bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOm5vbmV9XG4gIC5jaGVja2xpc3QtaXRlbSBpbnB1dFt0eXBlPWNoZWNrYm94XXt3aWR0aDoxOHB4O2hlaWdodDoxOHB4O21hcmdpbi10b3A6MnB4O2N1cnNvcjpwb2ludGVyO2FjY2VudC1jb2xvcjp2YXIoLS1ibHVlKX1cbiAgLmNoZWNrbGlzdC1pdGVtIGxhYmVse2ZvbnQtc2l6ZTowLjlyZW07bGluZS1oZWlnaHQ6MS41O2N1cnNvcjpwb2ludGVyO2ZsZXg6MX1cbiAgLmNoZWNrbGlzdC1pdGVtIC5saW5rLWJ0bntmb250LXNpemU6MC43NXJlbTtjb2xvcjp2YXIoLS1ibHVlKTtjdXJzb3I6cG9pbnRlcjt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTttYXJnaW4tbGVmdDphdXRvO3doaXRlLXNwYWNlOm5vd3JhcH1cblxuICAvKiBTRUFSQ0ggKi9cbiAgLnNlYXJjaC1iYXItYmlne2Rpc3BsYXk6ZmxleDtnYXA6MTBweDttYXJnaW4tYm90dG9tOjI0cHh9XG4gIC5zZWFyY2gtYmFyLWJpZyBpbnB1dHtmbGV4OjE7cGFkZGluZzoxNHB4IDE4cHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6MTBweDtmb250LXNpemU6MXJlbTtmb250LWZhbWlseTppbmhlcml0fVxuICAuc2VhcmNoLWJhci1iaWcgaW5wdXQ6Zm9jdXN7b3V0bGluZTpub25lO2JvcmRlci1jb2xvcjp2YXIoLS1ibHVlKX1cbiAgLnNlYXJjaC1iYXItYmlnIGJ1dHRvbntiYWNrZ3JvdW5kOnZhcigtLWJsdWUpO2NvbG9yOiNmZmY7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTRweCAyNHB4O2ZvbnQtc2l6ZToxcmVtO2ZvbnQtd2VpZ2h0OjcwMDtjdXJzb3I6cG9pbnRlcn1cbiAgLnRhZy1jbG91ZHtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjhweDttYXJnaW4tYm90dG9tOjI0cHh9XG4gIC50YWctY2xvdWQtaXRlbXtiYWNrZ3JvdW5kOnZhcigtLWJsdWUtbGlnaHQpO2NvbG9yOnZhcigtLWJsdWUpO3BhZGRpbmc6NnB4IDE0cHg7Ym9yZGVyLXJhZGl1czoyMHB4O2ZvbnQtc2l6ZTowLjgycmVtO2ZvbnQtd2VpZ2h0OjYwMDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmFsbCAwLjJzfVxuICAudGFnLWNsb3VkLWl0ZW06aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1ibHVlKTtjb2xvcjojZmZmfVxuXG4gIC8qIERPTkFURSAqL1xuICAuZG9uYXRlLXBhZ2V7dGV4dC1hbGlnbjpjZW50ZXI7bWF4LXdpZHRoOjYwMHB4O21hcmdpbjowIGF1dG99XG4gIC5kb25hdGUtaGVyb3tiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsdmFyKC0tZ29sZC1saWdodCksI2ZmZjhlMSk7Ym9yZGVyLXJhZGl1czoxNnB4O3BhZGRpbmc6NDBweDttYXJnaW4tYm90dG9tOjI0cHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1nb2xkKX1cbiAgLmRvbmF0ZS1oZXJvIGgye2ZvbnQtc2l6ZToxLjhyZW07bWFyZ2luLWJvdHRvbToxMnB4fVxuICAuZG9uYXRlLWhlcm8gcHtjb2xvcjp2YXIoLS1tdXRlZCk7bGluZS1oZWlnaHQ6MS43O21hcmdpbi1ib3R0b206MjBweH1cbiAgLmRvbmF0ZS1hbW91bnRze2Rpc3BsYXk6ZmxleDtnYXA6MTBweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MjBweH1cbiAgLmFtb3VudC1idG57cGFkZGluZzoxMHB4IDIwcHg7Ym9yZGVyLXJhZGl1czo4cHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1nb2xkKTtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MC45cmVtO2ZvbnQtd2VpZ2h0OjcwMDt0cmFuc2l0aW9uOmFsbCAwLjJzfVxuICAuYW1vdW50LWJ0bi5zZWxlY3RlZCwuYW1vdW50LWJ0bjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWdvbGQpO2NvbG9yOnZhcigtLXRleHQpfVxuICAuZG9uYXRlLWJ0bi1iaWd7YmFja2dyb3VuZDp2YXIoLS1nb2xkKTtjb2xvcjp2YXIoLS10ZXh0KTtib3JkZXI6bm9uZTtwYWRkaW5nOjE0cHggNDBweDtib3JkZXItcmFkaXVzOjEwcHg7Zm9udC1zaXplOjEuMXJlbTtmb250LXdlaWdodDo4MDA7Y3Vyc29yOnBvaW50ZXI7d2lkdGg6MTAwJTttYXJnaW4tYm90dG9tOjEycHh9XG5cbiAgLyogTEFORyBNT0RBTCAqL1xuICAubW9kYWwtb3ZlcmxheXtkaXNwbGF5Om5vbmU7cG9zaXRpb246Zml4ZWQ7aW5zZXQ6MDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC41KTt6LWluZGV4OjIwMDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn1cbiAgLm1vZGFsLW92ZXJsYXkub3BlbntkaXNwbGF5OmZsZXh9XG4gIC5tb2RhbHtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjE2cHg7cGFkZGluZzoyOHB4O21heC13aWR0aDo0MjBweDt3aWR0aDo5MCU7Ym94LXNoYWRvdzowIDhweCA0MHB4IHJnYmEoMCwwLDAsMC4yKX1cbiAgLm1vZGFsIGgze21hcmdpbi1ib3R0b206OHB4O2ZvbnQtc2l6ZToxLjJyZW19XG4gIC5tb2RhbCBwe2ZvbnQtc2l6ZTowLjg1cmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tYm90dG9tOjE2cHg7bGluZS1oZWlnaHQ6MS41fVxuICAubGFuZy1ncmlke2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtnYXA6OHB4O21hcmdpbi1ib3R0b206MTZweH1cbiAgLmxhbmctb3B0aW9ue3BhZGRpbmc6MTBweCAxMnB4O2JvcmRlcjoycHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjhweDtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MC45MnJlbTtmb250LXdlaWdodDo2MDA7dGV4dC1hbGlnbjpjZW50ZXI7dHJhbnNpdGlvbjphbGwgMC4ycztsaW5lLWhlaWdodDoxLjQ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4fVxuICAubGFuZy1vcHRpb246aG92ZXIsLmxhbmctb3B0aW9uLmFjdGl2ZXtib3JkZXItY29sb3I6dmFyKC0tYmx1ZSk7YmFja2dyb3VuZDp2YXIoLS1ibHVlLWxpZ2h0KTtjb2xvcjp2YXIoLS1ibHVlKTt0cmFuc2Zvcm06c2NhbGUoMS4wMyl9XG4gIC5tb2RhbC1jbG9zZXtiYWNrZ3JvdW5kOnZhcigtLWdyYXkpO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6MTBweCAyMHB4O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjlyZW07Zm9udC13ZWlnaHQ6NjAwO3dpZHRoOjEwMCV9XG4gIC50cmFuc2xhdGlvbi1ub3RpY2V7YmFja2dyb3VuZDojZmZmM2NkO2JvcmRlcjoxcHggc29saWQgI2ZmYzEwNztib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjEwcHggMTRweDtmb250LXNpemU6MC44cmVtO2NvbG9yOiM4NTY0MDQ7bWFyZ2luLWJvdHRvbToxNnB4fVxuXG4gIC8qIFRPQVNUICovXG4gIC50b2FzdHtwb3NpdGlvbjpmaXhlZDtib3R0b206MjRweDtyaWdodDoyNHB4O2JhY2tncm91bmQ6dmFyKC0tZ3JlZW4pO2NvbG9yOiNmZmY7cGFkZGluZzoxMnB4IDIwcHg7Ym9yZGVyLXJhZGl1czoxMHB4O2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MC45cmVtO3otaW5kZXg6MzAwO29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxMHB4KTt0cmFuc2l0aW9uOmFsbCAwLjNzO3BvaW50ZXItZXZlbnRzOm5vbmV9XG4gIC50b2FzdC5zaG93e29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKX1cblxuICAuZW1wdHktc3RhdGV7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzo0MHB4O2NvbG9yOnZhcigtLW11dGVkKX1cbiAgLmVtcHR5LXN0YXRlIC5pY29ue2ZvbnQtc2l6ZTozcmVtO21hcmdpbi1ib3R0b206MTBweH1cbiAgLmRpdmlkZXJ7aGVpZ2h0OjFweDtiYWNrZ3JvdW5kOnZhcigtLWJvcmRlcik7bWFyZ2luOjIwcHggMH1cbiAgQG1lZGlhKG1heC13aWR0aDo2MDBweCl7Lmhlcm8gaDF7Zm9udC1zaXplOjEuNnJlbX0uaGVyb3twYWRkaW5nOjI4cHggMjBweH0uY2F0ZWdvcnktZ3JpZHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KGF1dG8tZmlsbCxtaW5tYXgoMTMwcHgsMWZyKSl9fVxuPC9zdHlsZT5cbjwvaGVhZD5cbjxib2R5PlxuXG48bmF2PlxuICA8ZGl2IGNsYXNzPVwibmF2LWxvZ29cIiBvbmNsaWNrPVwic2hvd1BhZ2UoJ2hvbWUnKVwiPk9saW08c3Bhbj5BbnN3ZXJzPC9zcGFuPjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibmF2LWxpbmtzXCI+XG4gICAgPGJ1dHRvbiBvbmNsaWNrPVwic2hvd1BhZ2UoJ2hvbWUnKVwiPvCfj6AgSG9tZTwvYnV0dG9uPlxuICAgIDxidXR0b24gb25jbGljaz1cInNob3dQYWdlKCdmb3J1bScpXCI+8J+XoyBGb3J1bTwvYnV0dG9uPlxuICAgIDxidXR0b24gb25jbGljaz1cInNob3dQYWdlKCdiZXN0b2YnKVwiPuKtkCBCZXN0IE9mPC9idXR0b24+XG4gICAgPGJ1dHRvbiBvbmNsaWNrPVwic2hvd1BhZ2UoJ2NoZWNrbGlzdCcpXCI+4pyFIENoZWNrbGlzdDwvYnV0dG9uPlxuICAgIDxidXR0b24gb25jbGljaz1cInNob3dQYWdlKCdjYXRzJylcIj7wn5OCIENhdGVnb3JpZXM8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG9uY2xpY2s9XCJzaG93UGFnZSgnc2VhcmNoJylcIj7wn5SNIFNlYXJjaDwvYnV0dG9uPlxuICAgIDxidXR0b24gb25jbGljaz1cInNob3dQYWdlKCdkb25hdGUnKVwiIGNsYXNzPVwibmF2LWRvbmF0ZVwiPvCfkpsgRG9uYXRlPC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImxhbmctYnRuXCIgb25jbGljaz1cIm9wZW5MYW5nTW9kYWwoKVwiPvCfh6zwn4enPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uYXY+XG5cbjwhLS0gSE9NRSAtLT5cbjxkaXYgY2xhc3M9XCJwYWdlIGFjdGl2ZVwiIGlkPVwicGFnZS1ob21lXCI+XG4gIDxkaXYgY2xhc3M9XCJoZXJvXCI+XG4gICAgPGgxPldlbGNvbWUgdG8gPHNwYW4+T2xpbUFuc3dlcnM8L3NwYW4+PC9oMT5cbiAgICA8cD5Zb3VyIGNvbW11bml0eS1wb3dlcmVkIGd1aWRlIHRvIG5hdmlnYXRpbmcgbGlmZSBpbiBJc3JhZWwuIEFzayBxdWVzdGlvbnMsIHNoYXJlIGtub3dsZWRnZSwgYW5kIGhlbHAgZmVsbG93IG9saW0gZmluZCB0aGVpciBmZWV0IGZhc3Rlci48L3A+XG4gICAgPGRpdiBjbGFzcz1cImhlcm8tYnRuc1wiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIG9uY2xpY2s9XCJzaG93UGFnZSgnZm9ydW0nKVwiPkFzayBhIFF1ZXN0aW9uPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCIgb25jbGljaz1cInNob3dQYWdlKCdiZXN0b2YnKVwiPuKtkCBCcm93c2UgVG9wIEFuc3dlcnM8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInRpcC1ib3hcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGlwLWxhYmVsXCI+8J+SoSBUaXAgb2YgdGhlIERheTwvZGl2PlxuICAgIDxwIGlkPVwidGlwLXRleHRcIj5XaGVuIG9wZW5pbmcgYSBiYW5rIGFjY291bnQgaW4gSXNyYWVsLCBicmluZyB5b3VyIFRldWRhdCBPbGVoLCBwYXNzcG9ydCwgYW5kIHByb29mIG9mIGFkZHJlc3MuIEJhbmsgSGFwb2FsaW0gYW5kIEJhbmsgTGV1bWkgYm90aCBoYXZlIGRlZGljYXRlZCBPbGltIGRlcGFydG1lbnRzIHdpdGggRW5nbGlzaC1zcGVha2luZyBzdGFmZi48L3A+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+SG93IEl0IFdvcmtzPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJob3ctaXQtd29ya3NcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGl3LWNhcmRcIj48ZGl2IGNsYXNzPVwiaGl3LWljb25cIj7inZM8L2Rpdj48aDM+QXNrPC9oMz48cD5Qb3N0IHlvdXIgcXVlc3Rpb24gaW4gdGhlIHJlbGV2YW50IGNhdGVnb3J5LiBCZSBhcyBkZXRhaWxlZCBhcyB5b3UgbGlrZS48L3A+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImhpdy1jYXJkXCI+PGRpdiBjbGFzcz1cImhpdy1pY29uXCI+8J+SrDwvZGl2PjxoMz5BbnN3ZXI8L2gzPjxwPlRoZSBjb21tdW5pdHkgcmVzcG9uZHMgd2l0aCBhZHZpY2UsIHRpcHMsIGFuZCBwZXJzb25hbCBleHBlcmllbmNlLjwvcD48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaGl3LWNhcmRcIj48ZGl2IGNsYXNzPVwiaGl3LWljb25cIj7wn5GNPC9kaXY+PGgzPlJhdGU8L2gzPjxwPlVwdm90ZSB0aGUgbW9zdCBoZWxwZnVsIGFuc3dlcnMgc28gdGhleSByaXNlIHRvIHRoZSB0b3AgZm9yIGV2ZXJ5b25lLjwvcD48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaGl3LWNhcmRcIj48ZGl2IGNsYXNzPVwiaGl3LWljb25cIj7wn4yfPC9kaXY+PGgzPkRpc2NvdmVyPC9oMz48cD5Ccm93c2UgdG9wLXJhdGVkIGNvbnRlbnQgb3Igc2VhcmNoIGJ5IGtleXdvcmQgdG8gZmluZCB3aGF0IHlvdSBuZWVkIGZhc3QuPC9wPjwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPkJyb3dzZSBieSBDYXRlZ29yeTwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcnktZ3JpZFwiIGlkPVwiaG9tZS1jYXRzXCI+PC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImRvbmF0ZS1iYW5uZXJcIj5cbiAgICA8aDM+8J+SmyBPbGltQW5zd2VycyBpcyBmcmVlIGZvciBldmVyeW9uZTwvaDM+XG4gICAgPHA+VGhpcyBzaXRlIGlzIGNvbW11bml0eS1ydW4uIElmIGl0IGhlbHBlZCB5b3UsIGNvbnNpZGVyIGEgc21hbGwgZG9uYXRpb24gdG8ga2VlcCBpdCBnb2luZy48L3A+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIG9uY2xpY2s9XCJzaG93UGFnZSgnZG9uYXRlJylcIj5TdXBwb3J0IHRoZSBTaXRlPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gRk9SVU0gLS0+XG48ZGl2IGNsYXNzPVwicGFnZVwiIGlkPVwicGFnZS1mb3J1bVwiPlxuICA8ZGl2IGNsYXNzPVwiZm9ydW0taGVhZGVyXCIgc3R5bGU9XCJkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi1ib3R0b206MjBweDtmbGV4LXdyYXA6d3JhcDtnYXA6MTBweFwiPlxuICAgIDxkaXY+XG4gICAgICA8aDIgc3R5bGU9XCJmb250LXNpemU6MS40cmVtO2NvbG9yOnZhcigtLWJsdWUpXCI+8J+XoyBDb21tdW5pdHkgRm9ydW08L2gyPlxuICAgICAgPHAgc3R5bGU9XCJmb250LXNpemU6MC44NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLXRvcDo0cHhcIj5Bc2sgcXVlc3Rpb25zLCBzaGFyZSBhbnN3ZXJzLCBoZWxwIGZlbGxvdyBvbGltPC9wPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwXCI+XG4gICAgICA8c2VsZWN0IGNsYXNzPVwic29ydC1zZWxlY3RcIiBpZD1cImZvcnVtLXNvcnRcIiBvbmNoYW5nZT1cInJlbmRlckZvcnVtKClcIj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5ld2VzdFwiPvCflZAgTmV3ZXN0PC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJtb3N0X2Fuc3dlcnNcIj7wn5KsIE1vc3QgUmVzcG9uc2VzPC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJoaWdoZXN0X3JhdGVkXCI+4q2QIEhpZ2hlc3QgUmF0ZWQ8L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm1vc3Rfdmlld2VkXCI+8J+RgSBNb3N0IFZpZXdlZDwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgb25jbGljaz1cInRvZ2dsZUFza0JhcigpXCIgc3R5bGU9XCJwYWRkaW5nOjlweCAxNnB4O2ZvbnQtc2l6ZTowLjg4cmVtXCI+KyBBc2sgYSBRdWVzdGlvbjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYXNrLWJhclwiIGlkPVwiYXNrLWJhclwiIHN0eWxlPVwiZGlzcGxheTpub25lXCI+XG4gICAgPGgzPkFzayBhIE5ldyBRdWVzdGlvbjwvaDM+XG4gICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJxLXRpdGxlXCIgcGxhY2Vob2xkZXI9XCJZb3VyIHF1ZXN0aW9uIHRpdGxlLi4uXCIgLz5cbiAgICA8dGV4dGFyZWEgaWQ9XCJxLWJvZHlcIiBwbGFjZWhvbGRlcj1cIkRlc2NyaWJlIHlvdXIgcXVlc3Rpb24gaW4gZGV0YWlsLi4uXCI+PC90ZXh0YXJlYT5cbiAgICA8c2VsZWN0IGlkPVwicS1jYXRcIj5cbiAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3QgYSBjYXRlZ29yeS4uLjwvb3B0aW9uPlxuICAgIDwvc2VsZWN0PlxuICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwicS1uYW1lXCIgcGxhY2Vob2xkZXI9XCJZb3VyIG5hbWUgKG9yIGxlYXZlIGJsYW5rIGZvciBBbm9ueW1vdXMpXCIgLz5cbiAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTpmbGV4O2dhcDoxMHB4XCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgb25jbGljaz1cInN1Ym1pdFF1ZXN0aW9uKClcIiBzdHlsZT1cImZsZXg6MVwiPlBvc3QgUXVlc3Rpb248L2J1dHRvbj5cbiAgICAgIDxidXR0b24gb25jbGljaz1cImNhbmNlbEFzaygpXCIgc3R5bGU9XCJmbGV4Om5vbmU7cGFkZGluZzoxMnB4IDE4cHg7Ym9yZGVyLXJhZGl1czo4cHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxcmVtO2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1tdXRlZClcIj7inJUgQ2FuY2VsPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgaWQ9XCJmb3J1bS1saXN0XCI+PC9kaXY+XG48L2Rpdj5cblxuPCEtLSBDQVRFR09SWSBQQUdFIC0tPlxuPGRpdiBjbGFzcz1cInBhZ2VcIiBpZD1cInBhZ2UtY2F0ZWdvcnlcIj5cbiAgPGJ1dHRvbiBjbGFzcz1cImJhY2stYnRuXCIgb25jbGljaz1cInNob3dQYWdlKCdmb3J1bScpXCI+4oaQIEJhY2sgdG8gRm9ydW08L2J1dHRvbj5cbiAgPGRpdiBzdHlsZT1cImRpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLWJvdHRvbToyMHB4O2ZsZXgtd3JhcDp3cmFwO2dhcDoxMHB4XCI+XG4gICAgPGRpdj5cbiAgICAgIDxoMiBpZD1cImNhdC1wYWdlLXRpdGxlXCIgc3R5bGU9XCJmb250LXNpemU6MS40cmVtO2NvbG9yOnZhcigtLWJsdWUpXCI+PC9oMj5cbiAgICAgIDxwIGlkPVwiY2F0LXBhZ2UtZGVzY1wiIHN0eWxlPVwiZm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi10b3A6NHB4XCI+PC9wPlxuICAgIDwvZGl2PlxuICAgIDxzZWxlY3QgY2xhc3M9XCJzb3J0LXNlbGVjdFwiIGlkPVwiY2F0LXNvcnRcIiBvbmNoYW5nZT1cInJlbmRlckNhdGVnb3J5UGFnZSgpXCI+XG4gICAgICA8b3B0aW9uIHZhbHVlPVwibmV3ZXN0XCI+8J+VkCBOZXdlc3Q8L29wdGlvbj5cbiAgICAgIDxvcHRpb24gdmFsdWU9XCJtb3N0X2Fuc3dlcnNcIj7wn5KsIE1vc3QgUmVzcG9uc2VzPC9vcHRpb24+XG4gICAgICA8b3B0aW9uIHZhbHVlPVwiaGlnaGVzdF9yYXRlZFwiPuKtkCBIaWdoZXN0IFJhdGVkPC9vcHRpb24+XG4gICAgICA8b3B0aW9uIHZhbHVlPVwibW9zdF92aWV3ZWRcIj7wn5GBIE1vc3QgVmlld2VkPC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gIDwvZGl2PlxuICA8ZGl2IGlkPVwiY2F0LXBhZ2UtbGlzdFwiPjwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gUVVFU1RJT04gREVUQUlMIC0tPlxuPGRpdiBjbGFzcz1cInBhZ2VcIiBpZD1cInBhZ2UtcXVlc3Rpb25cIj5cbiAgPGJ1dHRvbiBjbGFzcz1cImJhY2stYnRuXCIgaWQ9XCJxLWJhY2stYnRuXCIgb25jbGljaz1cImdvQmFjaygpXCI+4oaQIEJhY2s8L2J1dHRvbj5cbiAgPGRpdiBjbGFzcz1cInEtZnVsbFwiIGlkPVwicS1mdWxsLWNvbnRlbnRcIj48L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImFuc3dlcnMtc2VjdGlvblwiPlxuICAgIDxoMyBpZD1cImFuc3dlcnMtY291bnRcIj48L2gzPlxuICAgIDxkaXYgaWQ9XCJhbnN3ZXJzLWxpc3RcIj48L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJhZGQtYW5zd2VyXCI+XG4gICAgPGg0PvCfkqwgQWRkIFlvdXIgQW5zd2VyPC9oND5cbiAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cImFucy1uYW1lXCIgcGxhY2Vob2xkZXI9XCJZb3VyIG5hbWUgKG9yIGxlYXZlIGJsYW5rIGZvciBBbm9ueW1vdXMpXCIgLz5cbiAgICA8dGV4dGFyZWEgaWQ9XCJhbnMtYm9keVwiIHBsYWNlaG9sZGVyPVwiU2hhcmUgeW91ciBrbm93bGVkZ2Ugb3IgZXhwZXJpZW5jZS4uLlwiPjwvdGV4dGFyZWE+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIG9uY2xpY2s9XCJzdWJtaXRBbnN3ZXIoKVwiPlBvc3QgQW5zd2VyPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gQkVTVCBPRiAtLT5cbjxkaXYgY2xhc3M9XCJwYWdlXCIgaWQ9XCJwYWdlLWJlc3RvZlwiPlxuICA8ZGl2IGNsYXNzPVwiYmVzdC1vZi1oZWFkZXJcIj5cbiAgICA8aDI+4q2QIEJlc3QgT2YgT2xpbUFuc3dlcnM8L2gyPlxuICAgIDxwPlRoZSBoaWdoZXN0LXJhdGVkIHF1ZXN0aW9ucyBhbmQgYW5zd2VycyBmcm9tIG91ciBjb21tdW5pdHkg4oCUIHlvdXIgZ28tdG8gc3RhcnRpbmcgcG9pbnQ8L3A+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXJvd1wiPlxuICAgIDxzcGFuIHN0eWxlPVwiZm9udC1zaXplOjAuODVyZW07Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLW11dGVkKVwiPkZpbHRlcjo8L3NwYW4+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImZpbHRlci1idG4gYWN0aXZlXCIgb25jbGljaz1cImZpbHRlckJlc3RPZignYWxsJyx0aGlzKVwiPkFsbCBDYXRlZ29yaWVzPC9idXR0b24+XG4gICAgPGRpdiBpZD1cImJlc3RvZi1maWx0ZXJzXCI+PC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGlkPVwiYmVzdG9mLWxpc3RcIj48L2Rpdj5cbjwvZGl2PlxuXG48IS0tIENIRUNLTElTVCAtLT5cbjxkaXYgY2xhc3M9XCJwYWdlXCIgaWQ9XCJwYWdlLWNoZWNrbGlzdFwiPlxuICA8ZGl2IGNsYXNzPVwiY2hlY2tsaXN0LWludHJvXCI+XG4gICAgPGgyPuKchSBOZXcgT2xlaCBDaGVja2xpc3Q8L2gyPlxuICAgIDxwIHN0eWxlPVwiY29sb3I6dmFyKC0tbXV0ZWQpO2ZvbnQtc2l6ZTowLjg4cmVtO21hcmdpbi10b3A6NnB4XCI+WW91ciBzdGVwLWJ5LXN0ZXAgZ3VpZGUgdG8gc2V0dGxpbmcgaW4gSXNyYWVsLiBDaGVjayBvZmYgaXRlbXMgYXMgeW91IGdvIOKAlCBwcm9ncmVzcyBzYXZlcyBhdXRvbWF0aWNhbGx5LjwvcD5cbiAgPC9kaXY+XG4gIDxkaXYgaWQ9XCJjaGVja2xpc3QtY29udGVudFwiPjwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gU0VBUkNIIC0tPlxuPGRpdiBjbGFzcz1cInBhZ2VcIiBpZD1cInBhZ2Utc2VhcmNoXCI+XG4gIDxoMiBzdHlsZT1cImZvbnQtc2l6ZToxLjRyZW07Y29sb3I6dmFyKC0tYmx1ZSk7bWFyZ2luLWJvdHRvbToxNnB4XCI+8J+UjSBTZWFyY2ggT2xpbUFuc3dlcnM8L2gyPlxuICA8ZGl2IGNsYXNzPVwic2VhcmNoLWJhci1iaWdcIj5cbiAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cInNlYXJjaC1pbnB1dFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIHF1ZXN0aW9ucywgdG9waWNzLCBrZXl3b3Jkcy4uLlwiIG9ua2V5dXA9XCJpZihldmVudC5rZXk9PT0nRW50ZXInKWRvU2VhcmNoKClcIiAvPlxuICAgIDxidXR0b24gb25jbGljaz1cImRvU2VhcmNoKClcIj5TZWFyY2g8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCIgc3R5bGU9XCJmb250LXNpemU6MXJlbVwiPlBvcHVsYXIgVG9waWNzPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ0YWctY2xvdWRcIiBpZD1cInRhZy1jbG91ZFwiPjwvZGl2PlxuICA8ZGl2IGlkPVwic2VhcmNoLXJlc3VsdHNcIj48L2Rpdj5cbjwvZGl2PlxuXG48IS0tIENBVEVHT1JJRVMgLS0+XG48ZGl2IGNsYXNzPVwicGFnZVwiIGlkPVwicGFnZS1jYXRzXCI+XG4gIDxoMiBzdHlsZT1cImZvbnQtc2l6ZToxLjRyZW07Y29sb3I6dmFyKC0tYmx1ZSk7bWFyZ2luLWJvdHRvbTo2cHhcIj7wn5OCIENhdGVnb3JpZXM8L2gyPlxuICA8cCBzdHlsZT1cImZvbnQtc2l6ZTowLjg1cmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tYm90dG9tOjIwcHhcIj5Ccm93c2UgcXVlc3Rpb25zIGJ5IHRvcGljPC9wPlxuICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcnktZ3JpZFwiIGlkPVwiY2F0cy1ncmlkXCI+PC9kaXY+XG48L2Rpdj5cblxuPCEtLSBET05BVEUgLS0+XG48ZGl2IGNsYXNzPVwicGFnZVwiIGlkPVwicGFnZS1kb25hdGVcIj5cbiAgPGRpdiBjbGFzcz1cImRvbmF0ZS1wYWdlXCI+XG4gICAgPGRpdiBjbGFzcz1cImRvbmF0ZS1oZXJvXCI+XG4gICAgICA8ZGl2IHN0eWxlPVwiZm9udC1zaXplOjNyZW07bWFyZ2luLWJvdHRvbToxMnB4XCI+8J+SmzwvZGl2PlxuICAgICAgPGgyPlN1cHBvcnQgT2xpbUFuc3dlcnM8L2gyPlxuICAgICAgPHA+T2xpbUFuc3dlcnMgaXMgZnJlZSBmb3IgZXZlcnkgb2xlaCwgZm9yZXZlci4gSXQncyBidWlsdCBhbmQgbWFpbnRhaW5lZCBieSB0aGUgY29tbXVuaXR5LCBmb3IgdGhlIGNvbW11bml0eS4gWW91ciBkb25hdGlvbiBoZWxwcyBrZWVwIHRoZSBsaWdodHMgb24sIHBheSBmb3IgaG9zdGluZywgYW5kIGFsbG93cyB1cyB0byBncm93IGFuZCBpbXByb3ZlIHRoZSBzaXRlLjwvcD5cbiAgICAgIDxwIHN0eWxlPVwibWFyZ2luLXRvcDoxMHB4O2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtc2l6ZTowLjg1cmVtO2NvbG9yOnZhcigtLW11dGVkKVwiPlwiSSB3aXNoIHRoaXMgc2l0ZSBleGlzdGVkIHdoZW4gSSBtYWRlIGFsaXlhaC5cIiDigJQgRXZlcnkgb2xlaCwgZXZlci48L3A+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImRvbmF0ZS1hbW91bnRzXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYW1vdW50LWJ0blwiIG9uY2xpY2s9XCJzZWxlY3RBbW91bnQodGhpcywnJDUnKVwiPiQ1PC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYW1vdW50LWJ0blwiIG9uY2xpY2s9XCJzZWxlY3RBbW91bnQodGhpcywnJDE4JylcIj4kMTgg4pyh77iPPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYW1vdW50LWJ0biBzZWxlY3RlZFwiIG9uY2xpY2s9XCJzZWxlY3RBbW91bnQodGhpcywnJDM2JylcIj4kMzY8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJhbW91bnQtYnRuXCIgb25jbGljaz1cInNlbGVjdEFtb3VudCh0aGlzLCckMTAwJylcIj4kMTAwPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYW1vdW50LWJ0blwiIG9uY2xpY2s9XCJzZWxlY3RBbW91bnQodGhpcywnb3RoZXInKVwiPk90aGVyPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImRvbmF0ZS1idG4tYmlnXCIgb25jbGljaz1cInNob3dUb2FzdCgnVGhhbmsgeW91ISBEb25hdGlvbiBsaW5rIGNvbWluZyBzb29uIPCfkpsnKVwiPkRvbmF0ZSB2aWEgUGF5UGFsPC9idXR0b24+XG4gICAgPHAgc3R5bGU9XCJmb250LXNpemU6MC43OHJlbTtjb2xvcjp2YXIoLS1tdXRlZClcIj5TZWN1cmUgcGF5bWVudC4gRXZlcnkgc2hla2VsIC8gZG9sbGFyIGhlbHBzLjwvcD5cbiAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxuICAgIDxwIHN0eWxlPVwiZm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi10b3A6MTZweFwiPllvdSBjYW4gYWxzbyBzdXBwb3J0IHVzIGJ5IHNoYXJpbmcgdGhlIHNpdGUgd2l0aCBvdGhlciBvbGltLCBjb250cmlidXRpbmcgYW5zd2VycywgYW5kIGZsYWdnaW5nIG91dGRhdGVkIGluZm9ybWF0aW9uLiBFdmVyeSBiaXQgY291bnRzITwvcD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBMQU5HIE1PREFMIC0tPlxuPGRpdiBjbGFzcz1cIm1vZGFsLW92ZXJsYXlcIiBpZD1cImxhbmctbW9kYWxcIj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsXCI+XG4gICAgPGgzPvCfjJAgQ2hvb3NlIExhbmd1YWdlPC9oMz5cbiAgICA8cD5Db250ZW50IGlzIGF1dG8tdHJhbnNsYXRlZC4gRm9yIGNyaXRpY2FsIGRlY2lzaW9ucywgYWx3YXlzIHZlcmlmeSB3aXRoIG9mZmljaWFsIHNvdXJjZXMuPC9wPlxuICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2xhdGlvbi1ub3RpY2VcIj7imqDvuI8gSXNyYWVsaSBidXJlYXVjcmF0aWMgdGVybXMgKFRldWRhdCBaZWh1dCwgTWlzcmFkIEhhcG5pbSwgZXRjLikgYXJlIGtlcHQgaW4gdGhlaXIgb3JpZ2luYWwgZm9ybSB3aXRoIHRvb2x0aXBzIHRvIHByZXZlbnQgbWlzdHJhbnNsYXRpb24uPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImxhbmctZ3JpZFwiIGlkPVwibGFuZy1ncmlkXCI+PC9kaXY+XG4gICAgPGJ1dHRvbiBjbGFzcz1cIm1vZGFsLWNsb3NlXCIgb25jbGljaz1cImNsb3NlTGFuZ01vZGFsKClcIj5DbG9zZTwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwidG9hc3RcIiBpZD1cInRvYXN0XCI+PC9kaXY+XG5cbjxzY3JpcHQ+XG5jb25zdCBDQVRFR09SSUVTID0gW1xuICB7aWQ6J2JhbmtpbmcnLGljb246J/Cfj6YnLG5hbWU6J0JhbmtpbmcnLGRlc2M6J0FjY291bnRzLCB0cmFuc2ZlcnMsIG1vcnRnYWdlcyd9LFxuICB7aWQ6J2hlYWx0aCcsaWNvbjon8J+PpScsbmFtZTonSGVhbHRoIEluc3VyYW5jZScsZGVzYzonS3VwYXQgSG9saW0sIGRvY3RvcnMsIGNvdmVyYWdlJ30sXG4gIHtpZDondGF4JyxpY29uOifwn5OKJyxuYW1lOidUYXgnLGRlc2M6J0luY29tZSB0YXgsIE1hcyBIYWNobmFzYSwgVkFUJ30sXG4gIHtpZDonaW50ZXJuZXQnLGljb246J/Cfk7YnLG5hbWU6J0ludGVybmV0ICYgUGhvbmUnLGRlc2M6J1Byb3ZpZGVycywgY29udHJhY3RzLCBTSU0gY2FyZHMnfSxcbiAge2lkOidob3VzaW5nJyxpY29uOifwn4+gJyxuYW1lOidIb3VzaW5nJyxkZXNjOidSZW50aW5nLCBidXlpbmcsIEFybm9uYSd9LFxuICB7aWQ6J2dvdicsaWNvbjon8J+qqicsbmFtZTonR292ZXJubWVudCAmIElEcycsZGVzYzonVGV1ZGF0IFplaHV0LCBNaXNyYWQgSGFwbmltJ30sXG4gIHtpZDonZWR1Y2F0aW9uJyxpY29uOifwn46TJyxuYW1lOidFZHVjYXRpb24nLGRlc2M6J1NjaG9vbHMsIHVscGFuLCB1bml2ZXJzaXRpZXMnfSxcbiAge2lkOid0cmFuc3BvcnQnLGljb246J/CfmownLG5hbWU6J1RyYW5zcG9ydCcsZGVzYzonRHJpdmluZyBsaWNlbmNlLCBSYXYtS2F2LCBidXNlcyd9LFxuICB7aWQ6J2VtcGxveW1lbnQnLGljb246J/CfkrwnLG5hbWU6J0VtcGxveW1lbnQnLGRlc2M6J0pvYnMsIGNvbnRyYWN0cywgcmlnaHRzJ30sXG4gIHtpZDonc29jaWFsJyxpY29uOifwn6SdJyxuYW1lOidTb2NpYWwgU2VjdXJpdHknLGRlc2M6J0JpdHVhY2ggTGV1bWksIGJlbmVmaXRzJ30sXG4gIHtpZDonY3VsdHVyZScsaWNvbjon8J+VjicsbmFtZTonQ3VsdHVyZSAmIExpZmUnLGRlc2M6J0N1c3RvbXMsIGhvbGlkYXlzLCBjb21tdW5pdHknfSxcbiAge2lkOidvdGhlcicsaWNvbjon4p2TJyxuYW1lOidPdGhlcicsZGVzYzonQW55dGhpbmcgZWxzZSd9LFxuXTtcblxuY29uc3QgVElQUyA9IFtcbiAgXCJXaGVuIG9wZW5pbmcgYSBiYW5rIGFjY291bnQgaW4gSXNyYWVsLCBicmluZyB5b3VyIFRldWRhdCBPbGVoLCBwYXNzcG9ydCwgYW5kIHByb29mIG9mIGFkZHJlc3MuIEJhbmsgSGFwb2FsaW0gYW5kIEJhbmsgTGV1bWkgYm90aCBoYXZlIGRlZGljYXRlZCBPbGltIGRlcGFydG1lbnRzIHdpdGggRW5nbGlzaC1zcGVha2luZyBzdGFmZi5cIixcbiAgXCJSZWdpc3RlciB3aXRoIGEgS3VwYXQgSG9saW0gKGhlYWx0aCBmdW5kKSB3aXRoaW4gMyBtb250aHMgb2YgYXJyaXZpbmcuIFRoZSA0IG9wdGlvbnMgYXJlIENsYWxpdCwgTWFjY2FiaSwgTWV1aGVkZXQsIGFuZCBMZXVtaXQuIFlvdSBjYW4gc3dpdGNoIG9uY2UgYSB5ZWFyIGluIE5vdmVtYmVyLlwiLFxuICBcIlRoZSBUZXVkYXQgWmVodXQgKG5hdGlvbmFsIElEKSBpcyByZXF1aXJlZCBmb3IgYWxtb3N0IGV2ZXJ5dGhpbmcgaW4gSXNyYWVsLiBLZWVwIGEgcGhvdG9jb3B5IGF0IGhvbWUgYW5kIGEgcGhvdG8gb24geW91ciBwaG9uZSBhdCBhbGwgdGltZXMuXCIsXG4gIFwiQXJub25hIChtdW5pY2lwYWwgdGF4KSBiaWxscyBhcmUgc2VudCB0d2ljZSBhIHllYXIuIE5ldyBvbGltIG1heSBiZSBlbGlnaWJsZSBmb3IgYSBkaXNjb3VudCDigJQgY2hlY2sgd2l0aCB5b3VyIGxvY2FsIG11bmljaXBhbGl0eSB3aXRoaW4gOTAgZGF5cyBvZiBhcnJpdmFsLlwiLFxuICBcIlRvIGNvbnZlcnQgeW91ciBmb3JlaWduIGRyaXZpbmcgbGljZW5jZSBpbiBJc3JhZWwsIHlvdSBtYXkgYmUgZXhlbXB0IGZyb20gdGFraW5nIGEgZnVsbCB0ZXN0IGlmIHlvdXIgY291bnRyeSBoYXMgYSByZWNpcHJvY2FsIGFncmVlbWVudC4gQ2hlY2sgd2l0aCBNaXNyYWQgSGFUYWNoYnVyYS5cIixcbl07XG5cbmxldCBxdWVzdGlvbnMgPSBbXG4gIHtpZDoxLHRpdGxlOlwiSG93IGRvIEkgb3BlbiBhIGJhbmsgYWNjb3VudCBhcyBhIG5ldyBvbGVoP1wiLGJvZHk6XCJJIGp1c3QgYXJyaXZlZCBsYXN0IHdlZWsgYW5kIEknbSB0cnlpbmcgdG8gb3BlbiBhIGJhbmsgYWNjb3VudC4gV2hhdCBkb2N1bWVudHMgZG8gSSBuZWVkIGFuZCB3aGljaCBiYW5rIGlzIG1vc3Qgb2xlaC1mcmllbmRseT9cIixjYXQ6J2JhbmtpbmcnLGF1dGhvcjonU2FyYWggTS4nLGRhdGU6JzIwMjQtMTItMTUnLHZpZXdzOjM0MixsYW5nOidFTicsYW5zd2VyczpbXG4gICAge2lkOjEsYm9keTpcIkJhbmsgSGFwb2FsaW0gYW5kIEJhbmsgTGV1bWkgYm90aCBoYXZlIGRlZGljYXRlZCBPbGltIGNlbnRyZXMgd2l0aCBFbmdsaXNoIHNwZWFraW5nIHN0YWZmLiBCcmluZyB5b3VyIFRldWRhdCBPbGVoLCBwYXNzcG9ydCwgYW5kIGlmIHBvc3NpYmxlIGEgcHJvb2Ygb2YgYWRkcmVzcy4gVGhlIHByb2Nlc3MgdXN1YWxseSB0YWtlcyAxLTIgdmlzaXRzLiBMZXVtaSdzIG9ubGluZSBwcm9jZXNzIGhhcyBpbXByb3ZlZCBhIGxvdCByZWNlbnRseS5cIixhdXRob3I6J0RhdmlkIEsuJyxkYXRlOicyMDI0LTEyLTE1Jyx2b3Rlczo0NyxmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOidFTid9LFxuICAgIHtpZDoyLGJvZHk6XCJJIHVzZWQgRGlzY291bnQgQmFuayBhbmQgaGFkIGEgZ3JlYXQgZXhwZXJpZW5jZS4gVGhleSBzZXQgdXAgbXkgYWNjb3VudCB0aGUgc2FtZSBkYXkgYW5kIGdhdmUgbWUgYW4gRW5nbGlzaC1sYW5ndWFnZSBhcHAuIEFsc28gd29ydGggYXNraW5nIGFib3V0IHplcm8tZmVlIGFjY291bnRzIGZvciBuZXcgb2xpbSDigJQgbWFueSBiYW5rcyBvZmZlciB0aGVtIGZvciB0aGUgZmlyc3QgeWVhci5cIixhdXRob3I6J01pcmlhbSBULicsZGF0ZTonMjAyNC0xMi0xNicsdm90ZXM6MzEsZmxhZ2dlZDpmYWxzZSx1c2VyVm90ZWQ6ZmFsc2UsbGFuZzonRU4nfSxcbiAgXX0sXG4gIHtpZDoyLHRpdGxlOlwiV2hpY2ggS3VwYXQgSG9saW0gc2hvdWxkIEkgam9pbj9cIixib2R5OlwiSSBuZWVkIHRvIHJlZ2lzdGVyIHdpdGggYSBoZWFsdGggZnVuZC4gV2hhdCBhcmUgdGhlIG1haW4gZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgZm91ciBvcHRpb25zIGFuZCB3aGljaCBpcyBiZXN0IGZvciBFbmdsaXNoIHNwZWFrZXJzP1wiLGNhdDonaGVhbHRoJyxhdXRob3I6J0phbWVzIFIuJyxkYXRlOicyMDI0LTEyLTEwJyx2aWV3czoyODksbGFuZzonRU4nLGFuc3dlcnM6W1xuICAgIHtpZDoxLGJvZHk6XCJNYWNjYWJpIGlzIGdlbmVyYWxseSBjb25zaWRlcmVkIHRoZSBtb3N0IEVuZ2xpc2gtZnJpZW5kbHkgYW5kIGhhcyBhIGdvb2QgYXBwLiBDbGFsaXQgaGFzIHRoZSBtb3N0IGRvY3RvcnMgYW5kIGNsaW5pY3MgYnV0IHRoZSBhcHAgYW5kIHNlcnZpY2UgcXVhbGl0eSB2YXJpZXMuIE1ldWhlZGV0IGlzIHN0cm9uZyBpbiBKZXJ1c2FsZW0uIExldW1pdCBpcyB0aGUgc21hbGxlc3QgYnV0IG9mdGVuIGhhcyBzaG9ydGVyIHdhaXRzLlwiLGF1dGhvcjonWWFlbCBTLicsZGF0ZTonMjAyNC0xMi0xMScsdm90ZXM6NTIsZmxhZ2dlZDpmYWxzZSx1c2VyVm90ZWQ6ZmFsc2UsbGFuZzonRU4nfSxcbiAgXX0sXG4gIHtpZDozLHRpdGxlOlwi15DXmdeaINei15XXkdeTINeQ16jXoNeV16DXlCDXldeQ150g157XkteZ16Ig15zXmSDXlNeg15fXlD9cIixib2R5Olwi16fXmdeR15zXqteZINeX16nXkdeV158g15DXqNeg15XXoNeUINeV15DXoNeZINec15Ag15HXmNeV15cg15DXmdeaINee15fXqdeR15nXnSDXkNeV16rXlSDXldeQ150g16LXldec15nXnSDXl9eT16nXmdedINee16fXkdec15nXnSDXlNek15fXqteULlwiLGNhdDonaG91c2luZycsYXV0aG9yOifXqNeV16DXnyDXkS4nLGRhdGU6JzIwMjQtMTItMDgnLHZpZXdzOjE3OCxsYW5nOidIRScsYW5zd2VyczpbXG4gICAge2lkOjEsYm9keTpcIteQ16jXoNeV16DXlCDXlNeZ15Ag157XoSDXoteZ16jXldeg15kg16nXntep15zXnteZ150g15zXoteZ16jXmdeUINeU157Xp9eV157XmdeqLiDXoteV15zXmdedINeX15PXqdeZ150g15bXm9eQ15nXnSDXnNeU16DXl9eUICjXkdeT16jXmiDXm9ec15wgNzAtOTAlKSDXnNep16DXlCDXlNeo15DXqdeV16DXlC4g16bXqNeZ15og15zXpNeg15XXqiDXnNei15nXqNeZ15Qg15TXnten15XXnteZ16og16LXnSDXqtei15XXk9eqINeU16LXldec15Qg16rXldeaIDkwINeZ15XXnSDXnteU15LXoteULiDXkNecINeq16TXodek16HXlSDXkNeqINeU15fXnNeV158g15TXlteUIVwiLGF1dGhvcjon15nXotecINepLicsZGF0ZTonMjAyNC0xMi0wOScsdm90ZXM6MzksZmxhZ2dlZDpmYWxzZSx1c2VyVm90ZWQ6ZmFsc2UsbGFuZzonSEUnfSxcbiAgXX0sXG4gIHtpZDo0LHRpdGxlOlwiQmVzdCBtb2JpbGUgcGhvbmUgcHJvdmlkZXIgZm9yIG9saW0/XCIsYm9keTpcIldoYXQgU0lNIGNhcmQgb3IgY29udHJhY3Qgc2hvdWxkIEkgZ2V0PyBJIG5lZWQgZ29vZCBkYXRhIGFuZCBhZmZvcmRhYmxlIGNhbGxzIHRvIHRoZSBVSy5cIixjYXQ6J2ludGVybmV0JyxhdXRob3I6J0VtbWEgTC4nLGRhdGU6JzIwMjQtMTItMDUnLHZpZXdzOjIwMSxsYW5nOidFTicsYW5zd2VyczpbXG4gICAge2lkOjEsYm9keTpcIkdvbGFuIFRlbGVjb20gaXMgdGhlIGJlc3QgdmFsdWUgZm9yIG1vc3Qgb2xpbSDigJQgYXJvdW5kIOKCqjMwL21vbnRoIGZvciB1bmxpbWl0ZWQgZGF0YSBhbmQgY2FsbHMuIFBhcnRuZXIgYW5kIENlbGxjb20gYXJlIG1vcmUgZXhwZW5zaXZlIGJ1dCBoYXZlIGJldHRlciBjb3ZlcmFnZSBpbiBzb21lIGFyZWFzLiBGb3IgaW50ZXJuYXRpb25hbCBjYWxscyB0byB0aGUgVUssIGdldCBhIFdoYXRzQXBwIG51bWJlciBvciB1c2UgR29sYW4ncyBpbnRlcm5hdGlvbmFsIGFkZC1vbi5cIixhdXRob3I6J0F2aSBDLicsZGF0ZTonMjAyNC0xMi0wNicsdm90ZXM6MjgsZmxhZ2dlZDpmYWxzZSx1c2VyVm90ZWQ6ZmFsc2UsbGFuZzonRU4nfSxcbiAgXX0sXG5dO1xuXG5sZXQgbmV4dFFJZCA9IDUsIG5leHRBSWQgPSAxMDtcbmxldCBjdXJyZW50Q2F0ID0gbnVsbCwgY3VycmVudFFJZCA9IG51bGwsIHByZXZQYWdlID0gJ2ZvcnVtJywgY3VycmVudExhbmcgPSAnRU4nO1xuXG5jb25zdCBMQU5HUyA9IFtcbiAge2NvZGU6J0VOJyxmbGFnOifwn4es8J+HpycsbmFtZTonRW5nbGlzaCcsICBuYXRpdmU6J0VuZ2xpc2gnfSxcbiAge2NvZGU6J0hFJyxmbGFnOifwn4eu8J+HsScsbmFtZTonSGVicmV3JywgICBuYXRpdmU6J9ei15HXqNeZ16onfSxcbiAge2NvZGU6J1JVJyxmbGFnOifwn4e38J+HuicsbmFtZTonUnVzc2lhbicsICBuYXRpdmU6J9Cg0YPRgdGB0LrQuNC5J30sXG4gIHtjb2RlOidGUicsZmxhZzon8J+Hq/Cfh7cnLG5hbWU6J0ZyZW5jaCcsICAgbmF0aXZlOidGcmFuw6dhaXMnfSxcbiAge2NvZGU6J0VTJyxmbGFnOifwn4eq8J+HuCcsbmFtZTonU3BhbmlzaCcsICBuYXRpdmU6J0VzcGHDsW9sJ30sXG4gIHtjb2RlOidBUicsZmxhZzon8J+HpvCfh6onLG5hbWU6J0FyYWJpYycsICAgbmF0aXZlOifYp9mE2LnYsdio2YrYqSd9LFxuICB7Y29kZTonQU0nLGZsYWc6J/Cfh6rwn4e5JyxuYW1lOidBbWhhcmljJywgIG5hdGl2ZTon4Yqg4Yib4Yit4YqbJ30sXG4gIHtjb2RlOidQVCcsZmxhZzon8J+Hp/Cfh7cnLG5hbWU6J1BvcnR1Z3Vlc2UnLG5hdGl2ZTonUG9ydHVndcOqcyd9LFxuXTtcblxuY29uc3QgQ0hFQ0tMSVNUID0gW1xuICB7c2VjdGlvbjonRmlyc3QgMzAgRGF5cycsIGljb246J/CfmoAnLCBpdGVtczpbXG4gICAgJ0NvbGxlY3QgVGV1ZGF0IE9sZWggZnJvbSB0aGUgYWlycG9ydCBvciBNaXNyYWQgSGFBbGl5YWgnLFxuICAgICdSZWdpc3RlciBhdCBNaXNyYWQgSGFBbGl5YWggKE1pbmlzdHJ5IG9mIEFsaXlhaCkgZm9yIGJlbmVmaXRzJyxcbiAgICAnQXBwbHkgZm9yIFRldWRhdCBaZWh1dCAoTmF0aW9uYWwgSUQpIGF0IE1pc3JhZCBIYXBuaW0nLFxuICAgICdSZWdpc3RlciB3aXRoIGEgS3VwYXQgSG9saW0gKGhlYWx0aCBmdW5kKScsXG4gICAgJ09wZW4gYSBiYW5rIGFjY291bnQnLFxuICAgICdFbnJvbCBpbiBVbHBhbiAoSGVicmV3IGxhbmd1YWdlIGNvdXJzZSknLFxuICAgICdSZWdpc3RlciBjaGlsZHJlbiBhdCBsb2NhbCBzY2hvb2wnLFxuICBdfSxcbiAge3NlY3Rpb246J0ZpcnN0IDMgTW9udGhzJywgaWNvbjon8J+ThScsIGl0ZW1zOltcbiAgICAnQXBwbHkgZm9yIEFybm9uYSAobXVuaWNpcGFsIHRheCkgZGlzY291bnQgYXQgbG9jYWwgSXJpeWEnLFxuICAgICdUcmFuc2ZlciBvciBvYnRhaW4gSXNyYWVsaSBkcml2aW5nIGxpY2VuY2UnLFxuICAgICdBcHBseSBmb3IgQml0dWFjaCBMZXVtaSAoTmF0aW9uYWwgSW5zdXJhbmNlKScsXG4gICAgJ1NldCB1cCBpbnRlcm5ldCBhdCBob21lJyxcbiAgICAnUmVnaXN0ZXIgd2l0aCBhIGxvY2FsIGRvY3RvciAo16jXldek15Ag157Xqdek15fXlCknLFxuICAgICdKb2luIGxvY2FsIG9saW0gRmFjZWJvb2svV2hhdHNBcHAgZ3JvdXBzJyxcbiAgXX0sXG4gIHtzZWN0aW9uOidGaXJzdCBZZWFyJywgaWNvbjon8J+ThicsIGl0ZW1zOltcbiAgICAnRmlsZSB5b3VyIGZpcnN0IElzcmFlbGkgdGF4IHJldHVybiBpZiByZXF1aXJlZCcsXG4gICAgJ1JldmlldyB5b3VyIEt1cGF0IEhvbGltIOKAlCB5b3UgY2FuIHN3aXRjaCBldmVyeSBOb3ZlbWJlcicsXG4gICAgJ0NoZWNrIGVudGl0bGVtZW50IHRvIE9sZWggbW9ydGdhZ2UgYmVuZWZpdHMgKE1pc2hrYW50YSknLFxuICAgICdBcHBseSBmb3IgYW55IHJlbWFpbmluZyBTYWwgS2xpdGEgKGFic29ycHRpb24gYmFza2V0KSBwYXltZW50cycsXG4gICAgJ0dldCB5b3VyIElzcmFlbGkgZHJpdmluZyBsaWNlbmNlIGlmIHlvdSBoYXZlblxcJ3QgYWxyZWFkeScsXG4gIF19LFxuXTtcblxuZnVuY3Rpb24gc2hvd1BhZ2UocCwgZGF0YSl7XG4gIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5wYWdlJykuZm9yRWFjaCh4PT54LmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpKTtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhZ2UtJytwKS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTtcbiAgaWYocD09PSdob21lJykgcmVuZGVySG9tZUNhdHMoKTtcbiAgaWYocD09PSdmb3J1bScpIHJlbmRlckZvcnVtKCk7XG4gIGlmKHA9PT0nYmVzdG9mJykgcmVuZGVyQmVzdE9mKCk7XG4gIGlmKHA9PT0nY2hlY2tsaXN0JykgcmVuZGVyQ2hlY2tsaXN0KCk7XG4gIGlmKHA9PT0nc2VhcmNoJykgcmVuZGVyVGFnQ2xvdWQoKTtcbiAgaWYocD09PSdjYXRzJykgcmVuZGVyQ2F0c1BhZ2UoKTtcbiAgaWYocD09PSdjYXRlZ29yeScmJmRhdGEpe2N1cnJlbnRDYXQ9ZGF0YTtyZW5kZXJDYXRlZ29yeVBhZ2UoKTt9XG4gIGlmKHA9PT0ncXVlc3Rpb24nJiZkYXRhKXtjdXJyZW50UUlkPWRhdGE7cmVuZGVyUXVlc3Rpb24oKTt9XG4gIHdpbmRvdy5zY3JvbGxUbygwLDApO1xufVxuXG5mdW5jdGlvbiByZW5kZXJIb21lQ2F0cygpe1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaG9tZS1jYXRzJykuaW5uZXJIVE1MID0gQ0FURUdPUklFUy5tYXAoYz0+YFxuICAgIDxkaXYgY2xhc3M9XCJjYXQtY2FyZFwiIG9uY2xpY2s9XCJwcmV2UGFnZT0naG9tZSc7c2hvd1BhZ2UoJ2NhdGVnb3J5JywnJHtjLmlkfScpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2F0LWljb25cIj4ke2MuaWNvbn08L2Rpdj5cbiAgICAgIDxoND4ke2MubmFtZX08L2g0PlxuICAgICAgPHA+JHtjLmRlc2N9PC9wPlxuICAgICAgPHAgc3R5bGU9XCJmb250LXNpemU6MC43MnJlbTtjb2xvcjp2YXIoLS1ibHVlKTttYXJnaW4tdG9wOjZweDtmb250LXdlaWdodDo2MDBcIj4ke3F1ZXN0aW9ucy5maWx0ZXIocT0+cS5jYXQ9PT1jLmlkKS5sZW5ndGh9IHF1ZXN0aW9uczwvcD5cbiAgICA8L2Rpdj5gKS5qb2luKCcnKTtcbiAgY29uc3QgdGlwcyA9IFRJUFM7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aXAtdGV4dCcpLnRleHRDb250ZW50ID0gdGlwc1tNYXRoLmZsb29yKERhdGUubm93KCkvODY0MDAwMDApJXRpcHMubGVuZ3RoXTtcbn1cblxuZnVuY3Rpb24gc29ydFF1ZXN0aW9ucyhxcywgbWV0aG9kKXtcbiAgcmV0dXJuIFsuLi5xc10uc29ydCgoYSxiKT0+e1xuICAgIGlmKG1ldGhvZD09PSduZXdlc3QnKSByZXR1cm4gYi5pZC1hLmlkO1xuICAgIGlmKG1ldGhvZD09PSdtb3N0X2Fuc3dlcnMnKSByZXR1cm4gYi5hbnN3ZXJzLmxlbmd0aC1hLmFuc3dlcnMubGVuZ3RoO1xuICAgIGlmKG1ldGhvZD09PSdoaWdoZXN0X3JhdGVkJykgcmV0dXJuIG1heFZvdGVzKGIpLW1heFZvdGVzKGEpO1xuICAgIGlmKG1ldGhvZD09PSdtb3N0X3ZpZXdlZCcpIHJldHVybiBiLnZpZXdzLWEudmlld3M7XG4gICAgcmV0dXJuIGIuaWQtYS5pZDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1heFZvdGVzKHEpe3JldHVybiBxLmFuc3dlcnMubGVuZ3RoP01hdGgubWF4KC4uLnEuYW5zd2Vycy5tYXAoYT0+YS52b3RlcykpOjA7fVxuZnVuY3Rpb24gYXZnVm90ZXMocSl7cmV0dXJuIHEuYW5zd2Vycy5sZW5ndGg/cS5hbnN3ZXJzLnJlZHVjZSgocyxhKT0+cythLnZvdGVzLDApL3EuYW5zd2Vycy5sZW5ndGg6MDt9XG5cbmZ1bmN0aW9uIHJlbmRlckZvcnVtKCl7XG4gIGNvbnN0IHNvcnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ydW0tc29ydCcpPy52YWx1ZXx8J25ld2VzdCc7XG4gIGNvbnN0IHFzID0gc29ydFF1ZXN0aW9ucyhxdWVzdGlvbnMsIHNvcnQpO1xuICBjb25zdCBjYXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1jYXQnKTtcbiAgaWYoY2F0KSBjYXQuaW5uZXJIVE1MPSc8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0IGEgY2F0ZWdvcnkuLi48L29wdGlvbj4nK0NBVEVHT1JJRVMubWFwKGM9PmA8b3B0aW9uIHZhbHVlPVwiJHtjLmlkfVwiPiR7Yy5pY29ufSAke2MubmFtZX08L29wdGlvbj5gKS5qb2luKCcnKTtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZvcnVtLWxpc3QnKS5pbm5lckhUTUwgPSBxcy5sZW5ndGggPyBxcy5tYXAocT0+cUNhcmQocSwnZm9ydW0nKSkuam9pbignJykgOiBlbXB0eVN0YXRlKCdObyBxdWVzdGlvbnMgeWV0LiBCZSB0aGUgZmlyc3QgdG8gYXNrIScpO1xufVxuXG5mdW5jdGlvbiByZW5kZXJDYXRlZ29yeVBhZ2UoKXtcbiAgY29uc3QgY2F0ID0gQ0FURUdPUklFUy5maW5kKGM9PmMuaWQ9PT1jdXJyZW50Q2F0KTtcbiAgaWYoIWNhdCkgcmV0dXJuO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0LXBhZ2UtdGl0bGUnKS50ZXh0Q29udGVudCA9IGNhdC5pY29uKycgJytjYXQubmFtZTtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdC1wYWdlLWRlc2MnKS50ZXh0Q29udGVudCA9IGNhdC5kZXNjO1xuICBjb25zdCBzb3J0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdC1zb3J0Jyk/LnZhbHVlfHwnbmV3ZXN0JztcbiAgY29uc3QgcXMgPSBzb3J0UXVlc3Rpb25zKHF1ZXN0aW9ucy5maWx0ZXIocT0+cS5jYXQ9PT1jdXJyZW50Q2F0KSwgc29ydCk7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXQtcGFnZS1saXN0JykuaW5uZXJIVE1MID0gcXMubGVuZ3RoID8gcXMubWFwKHE9PnFDYXJkKHEsJ2NhdGVnb3J5JykpLmpvaW4oJycpIDogZW1wdHlTdGF0ZSgnTm8gcXVlc3Rpb25zIGluIHRoaXMgY2F0ZWdvcnkgeWV0LicpO1xufVxuXG5mdW5jdGlvbiBxQ2FyZChxLGZyb20pe1xuICBjb25zdCB0b3BWb3RlcyA9IHEuYW5zd2Vycy5sZW5ndGg/TWF0aC5tYXgoLi4ucS5hbnN3ZXJzLm1hcChhPT5hLnZvdGVzKSk6MDtcbiAgY29uc3QgY2F0ID0gQ0FURUdPUklFUy5maW5kKGM9PmMuaWQ9PT1xLmNhdCk7XG4gIHJldHVybiBgPGRpdiBjbGFzcz1cInEtY2FyZFwiIG9uY2xpY2s9XCJwcmV2UGFnZT0nJHtmcm9tfSc7c2hvd1BhZ2UoJ3F1ZXN0aW9uJywke3EuaWR9KVwiPlxuICAgIDxkaXYgY2xhc3M9XCJxLW1ldGFcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicS1jYXQtYmFkZ2VcIj4ke2NhdD9jYXQuaWNvbisnICcrY2F0Lm5hbWU6cS5jYXR9PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJxLWF1dGhvclwiPvCfkaQgJHtxLmF1dGhvcn08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInEtZGF0ZVwiPvCfk4UgJHtxLmRhdGV9PC9zcGFuPlxuICAgICAgJHt0b3BWb3Rlcz49MzA/YDxzcGFuIGNsYXNzPVwiZmVhdHVyZWQtYmFkZ2VcIj7irZAgRmVhdHVyZWQ8L3NwYW4+YDonJ31cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicS10aXRsZVwiPiR7cS50aXRsZX08L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicS1wcmV2aWV3XCI+JHtxLmJvZHkuc3Vic3RyaW5nKDAsMTIwKX0ke3EuYm9keS5sZW5ndGg+MTIwPycuLi4nOicnfTwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJxLXN0YXRzXCI+XG4gICAgICA8c3Bhbj7wn5KsICR7cS5hbnN3ZXJzLmxlbmd0aH0gYW5zd2VyJHtxLmFuc3dlcnMubGVuZ3RoIT09MT8ncyc6Jyd9PC9zcGFuPlxuICAgICAgPHNwYW4+8J+RgSAke3Eudmlld3N9IHZpZXdzPC9zcGFuPlxuICAgICAgPHNwYW4+4q2QIFRvcCB2b3RlOiAke3RvcFZvdGVzfTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLXRvcDo2cHhcIj4ke2xhbmdCYWRnZShxLmxhbmcpfTwvZGl2PlxuICA8L2Rpdj5gO1xufVxuXG5mdW5jdGlvbiByZW5kZXJRdWVzdGlvbigpe1xuICBjb25zdCBxID0gcXVlc3Rpb25zLmZpbmQoeD0+eC5pZD09PWN1cnJlbnRRSWQpO1xuICBpZighcSl7cmV0dXJuO31cbiAgcS52aWV3cysrO1xuICBjb25zdCBjYXQgPSBDQVRFR09SSUVTLmZpbmQoYz0+Yy5pZD09PXEuY2F0KTtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtZnVsbC1jb250ZW50JykuaW5uZXJIVE1MPWBcbiAgICA8ZGl2IGNsYXNzPVwicS1tZXRhXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOjEycHhcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicS1jYXQtYmFkZ2VcIiBzdHlsZT1cImN1cnNvcjpwb2ludGVyXCIgb25jbGljaz1cInNob3dQYWdlKCdjYXRlZ29yeScsJyR7cS5jYXR9JylcIj4ke2NhdD9jYXQuaWNvbisnICcrY2F0Lm5hbWU6cS5jYXR9PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJxLWF1dGhvclwiPvCfkaQgJHtxLmF1dGhvcn08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInEtZGF0ZVwiPvCfk4UgJHtxLmRhdGV9PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxoMj4ke3EudGl0bGV9PC9oMj5cbiAgICA8ZGl2IGNsYXNzPVwiYm9keVwiIHN0eWxlPVwibWFyZ2luLXRvcDoxMnB4XCI+JHtxLmJvZHl9PC9kaXY+YDtcbiAgY29uc3Qgc29ydGVkID0gWy4uLnEuYW5zd2Vyc10uc29ydCgoYSxiKT0+Yi52b3Rlcy1hLnZvdGVzKTtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fuc3dlcnMtY291bnQnKS50ZXh0Q29udGVudCA9IGAke3EuYW5zd2Vycy5sZW5ndGh9IEFuc3dlciR7cS5hbnN3ZXJzLmxlbmd0aCE9PTE/J3MnOicnfWA7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbnN3ZXJzLWxpc3QnKS5pbm5lckhUTUwgPSBzb3J0ZWQubGVuZ3RoID8gc29ydGVkLm1hcCgoYSxpKT0+YFxuICAgIDxkaXYgY2xhc3M9XCJhbnN3ZXItY2FyZCAke2k9PT0wJiZhLnZvdGVzPjA/J3RvcC1hbnN3ZXInOicnfVwiPlxuICAgICAgJHtpPT09MCYmYS52b3Rlcz4wPyc8ZGl2IGNsYXNzPVwidG9wLWFuc3dlci1sYWJlbFwiPuKtkCBUb3AgQW5zd2VyPC9kaXY+JzonJ31cbiAgICAgIDxkaXYgY2xhc3M9XCJhbnN3ZXItYm9keVwiPiR7YS5ib2R5fTwvZGl2PlxuICAgICAgPGRpdiBzdHlsZT1cIm1hcmdpbi1ib3R0b206OHB4XCI+JHtsYW5nQmFkZ2UoYS5sYW5nKX08L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhbnN3ZXItZm9vdGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhbnN3ZXItbWV0YVwiPvCfkaQgJHthLmF1dGhvcn0gwrcg8J+ThSAke2EuZGF0ZX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZvdGUtYnRuc1wiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ2b3RlLWJ0biAke2EudXNlclZvdGVkPydsaWtlZCc6Jyd9XCIgb25jbGljaz1cInZvdGUoJHtxLmlkfSwke2EuaWR9KVwiPlxuICAgICAgICAgICAg8J+RjSAke2Eudm90ZXN9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImZsYWctYnRuXCIgb25jbGljaz1cImZsYWdBbnN3ZXIoJHtxLmlkfSwke2EuaWR9KVwiPvCfmqkgJHthLmZsYWdnZWQ/J0ZsYWdnZWQnOidGbGFnJ308L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgICR7YS5mbGFnZ2VkPyc8ZGl2IHN0eWxlPVwiZm9udC1zaXplOjAuNzVyZW07Y29sb3I6dmFyKC0tcmVkKTttYXJnaW4tdG9wOjhweFwiPuKaoO+4jyBUaGlzIGFuc3dlciBoYXMgYmVlbiBmbGFnZ2VkIGZvciByZXZpZXcuIFBsZWFzZSB2ZXJpZnkgd2l0aCBvZmZpY2lhbCBzb3VyY2VzLjwvZGl2Pic6Jyd9XG4gICAgPC9kaXY+YCkuam9pbignJykgOiAnPGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCI+PGRpdiBjbGFzcz1cImljb25cIj7wn5KsPC9kaXY+PHA+Tm8gYW5zd2VycyB5ZXQuIEJlIHRoZSBmaXJzdCB0byBoZWxwITwvcD48L2Rpdj4nO1xufVxuXG5mdW5jdGlvbiBnb0JhY2soKXtzaG93UGFnZShwcmV2UGFnZT09PSdjYXRlZ29yeSc/J2NhdGVnb3J5JzonZm9ydW0nLCBwcmV2UGFnZT09PSdjYXRlZ29yeSc/Y3VycmVudENhdDpudWxsKTt9XG5cbmZ1bmN0aW9uIHRvZ2dsZUFza0Jhcigpe1xuICBjb25zdCBiID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fzay1iYXInKTtcbiAgYi5zdHlsZS5kaXNwbGF5ID0gYi5zdHlsZS5kaXNwbGF5PT09J25vbmUnPydibG9jayc6J25vbmUnO1xufVxuZnVuY3Rpb24gY2FuY2VsQXNrKCl7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLXRpdGxlJykudmFsdWU9Jyc7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLWJvZHknKS52YWx1ZT0nJztcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtY2F0JykudmFsdWU9Jyc7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLW5hbWUnKS52YWx1ZT0nJztcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fzay1iYXInKS5zdHlsZS5kaXNwbGF5PSdub25lJztcbn1cbmZ1bmN0aW9uIHJlbmRlckNhdHNQYWdlKCl7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXRzLWdyaWQnKS5pbm5lckhUTUwgPSBDQVRFR09SSUVTLm1hcChjPT5gXG4gICAgPGRpdiBjbGFzcz1cImNhdC1jYXJkXCIgb25jbGljaz1cInByZXZQYWdlPSdjYXRzJztzaG93UGFnZSgnY2F0ZWdvcnknLCcke2MuaWR9JylcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXQtaWNvblwiPiR7Yy5pY29ufTwvZGl2PlxuICAgICAgPGg0PiR7Yy5uYW1lfTwvaDQ+XG4gICAgICA8cD4ke2MuZGVzY308L3A+XG4gICAgICA8cCBzdHlsZT1cImZvbnQtc2l6ZTowLjcycmVtO2NvbG9yOnZhcigtLWJsdWUpO21hcmdpbi10b3A6NnB4O2ZvbnQtd2VpZ2h0OjYwMFwiPiR7cXVlc3Rpb25zLmZpbHRlcihxPT5xLmNhdD09PWMuaWQpLmxlbmd0aH0gcXVlc3Rpb25zPC9wPlxuICAgIDwvZGl2PmApLmpvaW4oJycpO1xufVxuXG5mdW5jdGlvbiBzdWJtaXRRdWVzdGlvbigpe1xuICBjb25zdCB0aXRsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLXRpdGxlJykudmFsdWUudHJpbSgpO1xuICBjb25zdCBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtYm9keScpLnZhbHVlLnRyaW0oKTtcbiAgY29uc3QgY2F0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtY2F0JykudmFsdWU7XG4gIGNvbnN0IG5hbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1uYW1lJykudmFsdWUudHJpbSgpfHwnQW5vbnltb3VzJztcbiAgaWYoIXRpdGxlfHwhYm9keXx8IWNhdCl7c2hvd1RvYXN0KCdQbGVhc2UgZmlsbCBpbiBhbGwgZmllbGRzIOKdjCcpO3JldHVybjt9XG4gIHF1ZXN0aW9ucy51bnNoaWZ0KHtpZDpuZXh0UUlkKyssdGl0bGUsYm9keSxjYXQsYXV0aG9yOm5hbWUsZGF0ZTpuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwxMCksdmlld3M6MCxsYW5nOmN1cnJlbnRMYW5nLGFuc3dlcnM6W119KTtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtdGl0bGUnKS52YWx1ZT0nJztcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtYm9keScpLnZhbHVlPScnO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1jYXQnKS52YWx1ZT0nJztcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtbmFtZScpLnZhbHVlPScnO1xuICB0b2dnbGVBc2tCYXIoKTtcbiAgcmVuZGVyRm9ydW0oKTtcbiAgc2hvd1RvYXN0KCdRdWVzdGlvbiBwb3N0ZWQhIOKchScpO1xufVxuXG5mdW5jdGlvbiBzdWJtaXRBbnN3ZXIoKXtcbiAgY29uc3QgcSA9IHF1ZXN0aW9ucy5maW5kKHg9PnguaWQ9PT1jdXJyZW50UUlkKTtcbiAgaWYoIXEpIHJldHVybjtcbiAgY29uc3QgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbnMtYm9keScpLnZhbHVlLnRyaW0oKTtcbiAgY29uc3QgbmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbnMtbmFtZScpLnZhbHVlLnRyaW0oKXx8J0Fub255bW91cyc7XG4gIGlmKCFib2R5KXtzaG93VG9hc3QoJ1BsZWFzZSB3cml0ZSBhbiBhbnN3ZXIg4p2MJyk7cmV0dXJuO31cbiAgcS5hbnN3ZXJzLnB1c2goe2lkOm5leHRBSWQrKyxib2R5LGF1dGhvcjpuYW1lLGRhdGU6bmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNsaWNlKDAsMTApLHZvdGVzOjAsZmxhZ2dlZDpmYWxzZSx1c2VyVm90ZWQ6ZmFsc2UsbGFuZzpjdXJyZW50TGFuZ30pO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zLWJvZHknKS52YWx1ZT0nJztcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fucy1uYW1lJykudmFsdWU9Jyc7XG4gIHJlbmRlclF1ZXN0aW9uKCk7XG4gIHNob3dUb2FzdCgnQW5zd2VyIHBvc3RlZCEg4pyFJyk7XG59XG5cbmZ1bmN0aW9uIHZvdGUocUlkLGFJZCl7XG4gIGNvbnN0IHEgPSBxdWVzdGlvbnMuZmluZCh4PT54LmlkPT09cUlkKTtcbiAgY29uc3QgYSA9IHE/LmFuc3dlcnMuZmluZCh4PT54LmlkPT09YUlkKTtcbiAgaWYoIWEpIHJldHVybjtcbiAgYS51c2VyVm90ZWQ9IWEudXNlclZvdGVkO1xuICBhLnZvdGVzKz1hLnVzZXJWb3RlZD8xOi0xO1xuICByZW5kZXJRdWVzdGlvbigpO1xufVxuXG5mdW5jdGlvbiBmbGFnQW5zd2VyKHFJZCxhSWQpe1xuICBjb25zdCBxID0gcXVlc3Rpb25zLmZpbmQoeD0+eC5pZD09PXFJZCk7XG4gIGNvbnN0IGEgPSBxPy5hbnN3ZXJzLmZpbmQoeD0+eC5pZD09PWFJZCk7XG4gIGlmKCFhKSByZXR1cm47XG4gIGEuZmxhZ2dlZD0hYS5mbGFnZ2VkO1xuICByZW5kZXJRdWVzdGlvbigpO1xuICBzaG93VG9hc3QoYS5mbGFnZ2VkPydBbnN3ZXIgZmxhZ2dlZCBmb3IgcmV2aWV3IPCfmqknOidGbGFnIHJlbW92ZWQnKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyQmVzdE9mKGZpbHRlckNhdCl7XG4gIGNvbnN0IGZpbHRlcnMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmVzdG9mLWZpbHRlcnMnKTtcbiAgZmlsdGVycy5pbm5lckhUTUwgPSBDQVRFR09SSUVTLm1hcChjPT5gPGJ1dHRvbiBjbGFzcz1cImZpbHRlci1idG5cIiBvbmNsaWNrPVwiZmlsdGVyQmVzdE9mKCcke2MuaWR9Jyx0aGlzKVwiPiR7Yy5pY29ufSAke2MubmFtZX08L2J1dHRvbj5gKS5qb2luKCcnKTtcbiAgY29uc3QgdGhyZXNob2xkID0gMjA7XG4gIGxldCBxcyA9IHF1ZXN0aW9ucy5maWx0ZXIocT0+bWF4Vm90ZXMocSk+PXRocmVzaG9sZCB8fCBhdmdWb3RlcyhxKT49MTUpO1xuICBpZihmaWx0ZXJDYXQmJmZpbHRlckNhdCE9PSdhbGwnKSBxcz1xcy5maWx0ZXIocT0+cS5jYXQ9PT1maWx0ZXJDYXQpO1xuICBxcy5zb3J0KChhLGIpPT5tYXhWb3RlcyhiKS1tYXhWb3RlcyhhKSk7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZXN0b2YtbGlzdCcpLmlubmVySFRNTCA9IHFzLmxlbmd0aFxuICAgID8gYDxwIHN0eWxlPVwiZm9udC1zaXplOjAuODJyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MTZweFwiPlNob3dpbmcgJHtxcy5sZW5ndGh9IGhpZ2hseS1yYXRlZCBxdWVzdGlvbiR7cXMubGVuZ3RoIT09MT8ncyc6Jyd9PC9wPmArcXMubWFwKHE9PnFDYXJkKHEsJ2Jlc3RvZicpKS5qb2luKCcnKVxuICAgIDogZW1wdHlTdGF0ZSgnQXMgdGhlIGNvbW11bml0eSBncm93cywgdG9wLXJhdGVkIGFuc3dlcnMgd2lsbCBhcHBlYXIgaGVyZS4gU3RhcnQgYW5zd2VyaW5nIHF1ZXN0aW9ucyEnKTtcbn1cblxuZnVuY3Rpb24gZmlsdGVyQmVzdE9mKGNhdCxidG4pe1xuICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZmlsdGVyLWJ0bicpLmZvckVhY2goYj0+Yi5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKSk7XG4gIGlmKGJ0bikgYnRuLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpO1xuICByZW5kZXJCZXN0T2YoY2F0PT09J2FsbCc/bnVsbDpjYXQpO1xufVxuXG5mdW5jdGlvbiByZW5kZXJDaGVja2xpc3QoKXtcbiAgY29uc3Qgc2F2ZWQgPSB7fTtcbiAgdHJ5e2NvbnN0IHM9c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY2hlY2tsaXN0Jyk7aWYocylPYmplY3QuYXNzaWduKHNhdmVkLEpTT04ucGFyc2UocykpO31jYXRjaChlKXt9XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGVja2xpc3QtY29udGVudCcpLmlubmVySFRNTCA9IENIRUNLTElTVC5tYXAoKHMsc2kpPT5gXG4gICAgPGRpdiBjbGFzcz1cImNoZWNrbGlzdC1zZWN0aW9uXCI+XG4gICAgICA8aDM+JHtzLmljb259ICR7cy5zZWN0aW9ufTwvaDM+XG4gICAgICAke3MuaXRlbXMubWFwKChpdGVtLGlpKT0+e1xuICAgICAgICBjb25zdCBrZXk9YCR7c2l9LSR7aWl9YDtcbiAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwiY2hlY2tsaXN0LWl0ZW1cIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGstJHtrZXl9XCIgJHtzYXZlZFtrZXldPydjaGVja2VkJzonJ30gb25jaGFuZ2U9XCJzYXZlQ2hlY2soJyR7a2V5fScsdGhpcy5jaGVja2VkKVwiIC8+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cImNoay0ke2tleX1cIj4ke2l0ZW19PC9sYWJlbD5cbiAgICAgICAgPC9kaXY+YDtcbiAgICAgIH0pLmpvaW4oJycpfVxuICAgIDwvZGl2PmApLmpvaW4oJycpO1xufVxuXG5mdW5jdGlvbiBzYXZlQ2hlY2soa2V5LHZhbCl7XG4gIHRyeXtcbiAgICBjb25zdCBzPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NoZWNrbGlzdCcpO1xuICAgIGNvbnN0IGRhdGE9cz9KU09OLnBhcnNlKHMpOnt9O1xuICAgIGRhdGFba2V5XT12YWw7XG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnY2hlY2tsaXN0JyxKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gIH1jYXRjaChlKXt9XG59XG5cbmZ1bmN0aW9uIHJlbmRlclRhZ0Nsb3VkKCl7XG4gIGNvbnN0IHRhZ3M9WydCYW5raW5nJywnSGVhbHRoIEluc3VyYW5jZScsJ1RldWRhdCBaZWh1dCcsJ0t1cGF0IEhvbGltJywnVGF4JywnQXJub25hJywnQml0dWFjaCBMZXVtaScsJ1VscGFuJywnSW50ZXJuZXQnLCdQaG9uZScsJ0hvdXNpbmcnLCdEcml2aW5nIExpY2VuY2UnLCdTY2hvb2wnLCdFbXBsb3ltZW50JywnTWlzcmFkIEhhcG5pbSddO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFnLWNsb3VkJykuaW5uZXJIVE1MPXRhZ3MubWFwKHQ9PmA8c3BhbiBjbGFzcz1cInRhZy1jbG91ZC1pdGVtXCIgb25jbGljaz1cInNlYXJjaFRhZygnJHt0fScpXCI+JHt0fTwvc3Bhbj5gKS5qb2luKCcnKTtcbn1cblxuZnVuY3Rpb24gc2VhcmNoVGFnKHQpe1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoLWlucHV0JykudmFsdWU9dDtcbiAgZG9TZWFyY2goKTtcbn1cblxuZnVuY3Rpb24gZG9TZWFyY2goKXtcbiAgY29uc3QgdGVybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWFyY2gtaW5wdXQnKS52YWx1ZS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgaWYoIXRlcm0pe2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWFyY2gtcmVzdWx0cycpLmlubmVySFRNTD0nJztyZXR1cm47fVxuICBjb25zdCByZXN1bHRzID0gcXVlc3Rpb25zLmZpbHRlcihxPT5cbiAgICBxLnRpdGxlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSl8fFxuICAgIHEuYm9keS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pfHxcbiAgICBxLmFuc3dlcnMuc29tZShhPT5hLmJvZHkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSl8fFxuICAgIChDQVRFR09SSUVTLmZpbmQoYz0+Yy5pZD09PXEuY2F0KT8ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pKVxuICApO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoLXJlc3VsdHMnKS5pbm5lckhUTUwgPSByZXN1bHRzLmxlbmd0aFxuICAgID8gYDxwIHN0eWxlPVwiZm9udC1zaXplOjAuODJyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MTZweFwiPiR7cmVzdWx0cy5sZW5ndGh9IHJlc3VsdCR7cmVzdWx0cy5sZW5ndGghPT0xPydzJzonJ30gZm9yIFwiPHN0cm9uZz4ke3Rlcm19PC9zdHJvbmc+XCI8L3A+YCtyZXN1bHRzLm1hcChxPT5xQ2FyZChxLCdzZWFyY2gnKSkuam9pbignJylcbiAgICA6IGA8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGVcIj48ZGl2IGNsYXNzPVwiaWNvblwiPvCflI08L2Rpdj48cD5ObyByZXN1bHRzIGZvdW5kIGZvciBcIjxzdHJvbmc+JHt0ZXJtfTwvc3Ryb25nPlwiLiBUcnkgYSBkaWZmZXJlbnQga2V5d29yZCBvciA8YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJzaG93UGFnZSgnZm9ydW0nKTtyZXR1cm4gZmFsc2U7XCIgc3R5bGU9XCJjb2xvcjp2YXIoLS1ibHVlKVwiPmFzayBhIHF1ZXN0aW9uPC9hPiE8L3A+PC9kaXY+YDtcbn1cblxuZnVuY3Rpb24gbGFuZ0ZsYWcoY29kZSl7cmV0dXJuIChMQU5HUy5maW5kKGw9PmwuY29kZT09PWNvZGUpfHx7ZmxhZzon8J+MkCd9KS5mbGFnO31cbmZ1bmN0aW9uIGxhbmdOYW1lKGNvZGUpe3JldHVybiAoTEFOR1MuZmluZChsPT5sLmNvZGU9PT1jb2RlKXx8e25hbWU6Y29kZX0pLm5hbWU7fVxuZnVuY3Rpb24gbGFuZ05hdGl2ZShjb2RlKXtyZXR1cm4gKExBTkdTLmZpbmQobD0+bC5jb2RlPT09Y29kZSl8fHtuYXRpdmU6Y29kZX0pLm5hdGl2ZTt9XG5mdW5jdGlvbiBsYW5nQmFkZ2UoaXRlbUxhbmcpe1xuICBjb25zdCB0cmFuc2xhdGVkID0gaXRlbUxhbmcgJiYgaXRlbUxhbmchPT1jdXJyZW50TGFuZztcbiAgaWYoIWl0ZW1MYW5nKSByZXR1cm4gJyc7XG4gIHJldHVybiBgPHNwYW4gc3R5bGU9XCJmb250LXNpemU6MC43MnJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweDttYXJnaW4tdG9wOjRweFwiPlxuICAgIE9yaWdpbmFsbHkgaW4gJHtsYW5nTmF0aXZlKGl0ZW1MYW5nKX0ke3RyYW5zbGF0ZWQ/JyDCtyA8c3BhbiBzdHlsZT1cImNvbG9yOnZhcigtLWJsdWUpO2ZvbnQtd2VpZ2h0OjYwMFwiPvCflIQgQXV0by10cmFuc2xhdGVkPC9zcGFuPic6Jyd9XG4gIDwvc3Bhbj5gO1xufVxuZnVuY3Rpb24gb3BlbkxhbmdNb2RhbCgpe1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFuZy1tb2RhbCcpLmNsYXNzTGlzdC5hZGQoJ29wZW4nKTtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xhbmctZ3JpZCcpLmlubmVySFRNTD1MQU5HUy5tYXAobD0+YDxkaXYgY2xhc3M9XCJsYW5nLW9wdGlvbiAke2wuY29kZT09PWN1cnJlbnRMYW5nPydhY3RpdmUnOicnfVwiIG9uY2xpY2s9XCJzZWxlY3RMYW5nKCcke2wuY29kZX0nLHRoaXMpXCI+JHtsLm5hdGl2ZX08L2Rpdj5gKS5qb2luKCcnKTtcbn1cbmZ1bmN0aW9uIGNsb3NlTGFuZ01vZGFsKCl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xhbmctbW9kYWwnKS5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyk7fVxuZnVuY3Rpb24gc2VsZWN0TGFuZyhjb2RlLGVsKXtcbiAgY3VycmVudExhbmc9Y29kZTtcbiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmxhbmctb3B0aW9uJykuZm9yRWFjaCh4PT54LmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpKTtcbiAgZWwuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7XG4gIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5sYW5nLWJ0bicpLnRleHRDb250ZW50PWxhbmdGbGFnKGNvZGUpO1xuICBzZXRUaW1lb3V0KCgpPT57Y2xvc2VMYW5nTW9kYWwoKTtzaG93VG9hc3QoJ0xhbmd1YWdlIHNldCB0byAnK2xhbmdOYW1lKGNvZGUpKycg4oCUIGF1dG8tdHJhbnNsYXRpb24gYWN0aXZlIPCfjJAnKTt9LDMwMCk7XG59XG5cbmZ1bmN0aW9uIHNlbGVjdEFtb3VudChidG4sdil7XG4gIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5hbW91bnQtYnRuJykuZm9yRWFjaChiPT5iLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJykpO1xuICBidG4uY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKTtcbn1cblxuZnVuY3Rpb24gc2hvd1RvYXN0KG1zZyl7XG4gIGNvbnN0IHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RvYXN0Jyk7XG4gIHQudGV4dENvbnRlbnQ9bXNnO3QuY2xhc3NMaXN0LmFkZCgnc2hvdycpO1xuICBzZXRUaW1lb3V0KCgpPT50LmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKSwzMDAwKTtcbn1cbmZ1bmN0aW9uIGVtcHR5U3RhdGUobXNnKXtyZXR1cm4gYDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiPjxkaXYgY2xhc3M9XCJpY29uXCI+8J+SrDwvZGl2PjxwPiR7bXNnfTwvcD48L2Rpdj5gO31cblxuLy8gSW5pdFxucmVuZGVySG9tZUNhdHMoKTtcbjwvc2NyaXB0PlxuPC9ib2R5PlxuPC9odG1sPlxuPC91c2VyX3F1ZXJ5PiJ9XSwicHJvdmlkZXJPcHRpb25zIjp7ImN1cnNvciI6eyJyZXF1ZXN0SWQiOiI3OWYxYTI3My0zYWE3LTRlYmItYTE3Zi01NTNiOGJlZWUzNDMifX19", "54e6c53e171f8476e77dc9b8350ba850e5a0e1f6098b0960bf84f6da3ada29fa": "eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InJlZGFjdGVkLXJlYXNvbmluZyIsImRhdGEiOiJYYng2UmFNWUh1QmNUR1lUSUFTazhpZHZzVVRJTjJKbzh0c1ZHR2NCVTUtekdLczlHNE95UGh4Y3k3bllRNS1JRnNucmJUblViRW5McjFCSzd4b0kyRWpKaTZGMGJPMk90SVY1c2VwRTNCOE9CRjdSWjJXNXlXU3ljZWhDYUEzN3VOMUo4WFd6N3ltczczMGxyY0l3QkNRUEhiZEpJMlhncnNwbEppTHFxYy1VY1ZyTmtqQVVsVXBselJ4VlJYeWdKaU5WS1B2UjRmU3R3MUx4bkZWR21WMHJXMkhLeldJeHluSS04aTVNMkg0c1FFYXlsZ2t4Uk1oUjhkS1VfUSIsInByb3ZpZGVyT3B0aW9ucyI6eyJjdXJzb3IiOnsibW9kZWxOYW1lIjoiY29tcG9zZXItMi41LWZhc3QifX19LHsidHlwZSI6InRleHQiLCJ0ZXh0IjoiV3JpdGluZyB5b3VyIE9saW1BbnN3ZXJzIEhUTUwgaW50byBgaW5kZXguaHRtbGAuXG4ifSx7InR5cGUiOiJ0b29sLWNhbGwiLCJ0b29sQ2FsbElkIjoidG9vbF82MDg5MmU4Ni1iNTUxLTQ4YjYtOGM4ZS0wNzJmOTQxMjhkZCIsInRvb2xOYW1lIjoiV3JpdGUiLCJhcmdzIjp7InBhdGgiOiJDOlxcVXNlcnNcXHJvbGlrXFxpbmRleC5odG1sIiwiY29udGVudHMiOiI8IURPQ1RZUEUgaHRtbD5cbjxodG1sIGxhbmc9XCJlblwiPlxuPGhlYWQ+XG48bWV0YSBjaGFyc2V0PVwiVVRGLThcIj5cbjxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wXCI+XG48dGl0bGU+T2xpbUFuc3dlcnMuY29tPC90aXRsZT5cbjxzdHlsZT5cbiAgOnJvb3Qge1xuICAgIC0tYmx1ZTojMWE1ZmE4Oy0tYmx1ZS1saWdodDojZThmMGZiOy0tZ29sZDojZjBiNDI5Oy0tZ29sZC1saWdodDojZmZmOGU3O1xuICAgIC0tZ3JlZW46IzFhOGE0YTstLXJlZDojYzAzOTJiOy0tZ3JheTojZjRmNmY5Oy0tdGV4dDojMWExYTJlOy0tbXV0ZWQ6IzZiNzI4MDtcbiAgICAtLWJvcmRlcjojZGRlM2VkOy0td2hpdGU6I2ZmZmZmZjstLXNoYWRvdzowIDJweCAxMnB4IHJnYmEoMCwwLDAsMC4wOCk7XG4gIH1cbiAgKntib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luOjA7cGFkZGluZzowfVxuICBib2R5e2ZvbnQtZmFtaWx5OidTZWdvZSBVSScsc3lzdGVtLXVpLHNhbnMtc2VyaWY7Y29sb3I6dmFyKC0tdGV4dCk7YmFja2dyb3VuZDp2YXIoLS1ncmF5KTttaW4taGVpZ2h0OjEwMHZofVxuICAvKiBOQVYgKi9cbiAgbmF2e2JhY2tncm91bmQ6dmFyKC0tYmx1ZSk7Y29sb3I6I2ZmZjtwYWRkaW5nOjAgMjRweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2hlaWdodDo2MHB4O3Bvc2l0aW9uOnN0aWNreTt0b3A6MDt6LWluZGV4OjEwMDtib3gtc2hhZG93OjAgMnB4IDhweCByZ2JhKDAsMCwwLDAuMil9XG4gIC5uYXYtbG9nb3tmb250LXNpemU6MS40NXJlbTtmb250LXdlaWdodDo4MDA7Y3Vyc29yOnBvaW50ZXI7bGV0dGVyLXNwYWNpbmc6LTAuNXB4O2xpbmUtaGVpZ2h0OjEuMTttYXJnaW4tcmlnaHQ6MTJweDtmbGV4LXNocmluazowfVxuICAubmF2LWxvZ28gc3BhbntkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZTowLjc4cmVtO2ZvbnQtd2VpZ2h0OjUwMDtsZXR0ZXItc3BhY2luZzoxLjVweDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7b3BhY2l0eTowLjg1fVxuICAubmF2LWxvZ286aG92ZXJ7b3BhY2l0eTowLjg1fVxuICAubmF2LWxvZ28gc3Bhbntjb2xvcjp2YXIoLS1nb2xkKX1cbiAgLm5hdi1saW5rc3tkaXNwbGF5OmZsZXg7Z2FwOjZweDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC13cmFwOndyYXB9XG4gIC5uYXYtbGlua3MgYnV0dG9ue2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtjb2xvcjojZmZmO3BhZGRpbmc6NnB4IDEwcHg7Ym9yZGVyLXJhZGl1czo2cHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjAuODJyZW07Zm9udC13ZWlnaHQ6NTAwO3RyYW5zaXRpb246YmFja2dyb3VuZCAwLjJzfVxuICAubmF2LWxpbmtzIGJ1dHRvbjpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMC4xNSl9XG4gIC5uYXYtbGlua3MgLm5hdi1kb25hdGV7YmFja2dyb3VuZDp2YXIoLS1nb2xkKTtjb2xvcjp2YXIoLS10ZXh0KTtmb250LXdlaWdodDo3MDA7cGFkZGluZzo2cHggMTJweDtib3JkZXItcmFkaXVzOjZweH1cbiAgLm5hdi1saW5rcyAubmF2LWRvbmF0ZTpob3ZlcntiYWNrZ3JvdW5kOiNlMGE4MDB9XG4gIC5sYW5nLWJ0bntiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMC4xNSkhaW1wb3J0YW50O2JvcmRlcjoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjMpIWltcG9ydGFudDtmb250LXNpemU6MC43OHJlbSFpbXBvcnRhbnR9XG5cbiAgLyogUEFHRVMgKi9cbiAgLnBhZ2V7ZGlzcGxheTpub25lO21heC13aWR0aDoxMTAwcHg7bWFyZ2luOjAgYXV0bztwYWRkaW5nOjI4cHggMjBweH1cbiAgLnBhZ2UuYWN0aXZle2Rpc3BsYXk6YmxvY2t9XG5cbiAgLyogSE9NRSAqL1xuICAuaGVyb3tiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsdmFyKC0tYmx1ZSkgMCUsIzI0NzFjOCAxMDAlKTtjb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6MTZweDtwYWRkaW5nOjQ4cHggNDBweDt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tYm90dG9tOjMycHh9XG4gIC5oZXJvIGgxe2ZvbnQtc2l6ZToyLjRyZW07Zm9udC13ZWlnaHQ6ODAwO21hcmdpbi1ib3R0b206MTJweH1cbiAgLmhlcm8gaDEgc3Bhbntjb2xvcjp2YXIoLS1nb2xkKX1cbiAgLmhlcm8gcHtmb250LXNpemU6MS4xcmVtO29wYWNpdHk6MC45MjttYXgtd2lkdGg6NjIwcHg7bWFyZ2luOjAgYXV0byAyNHB4O2xpbmUtaGVpZ2h0OjEuNn1cbiAgLmhlcm8tYnRuc3tkaXNwbGF5OmZsZXg7Z2FwOjEycHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LXdyYXA6d3JhcH1cbiAgLmJ0bntwYWRkaW5nOjEycHggMjRweDtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MC45NXJlbTtmb250LXdlaWdodDo3MDA7dHJhbnNpdGlvbjphbGwgMC4yc31cbiAgLmJ0bi1wcmltYXJ5e2JhY2tncm91bmQ6dmFyKC0tZ29sZCk7Y29sb3I6dmFyKC0tdGV4dCl9XG4gIC5idG4tcHJpbWFyeTpob3ZlcntiYWNrZ3JvdW5kOiNlMGE4MDA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCl9XG4gIC5idG4tb3V0bGluZXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOiNmZmY7Ym9yZGVyOjJweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuNil9XG4gIC5idG4tb3V0bGluZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMC4xKX1cbiAgLmhvdy1pdC13b3Jrc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpdCxtaW5tYXgoMjAwcHgsMWZyKSk7Z2FwOjIwcHg7bWFyZ2luLWJvdHRvbTozMnB4fVxuICAuaGl3LWNhcmR7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjRweDt0ZXh0LWFsaWduOmNlbnRlcjtib3gtc2hhZG93OnZhcigtLXNoYWRvdyl9XG4gIC5oaXctaWNvbntmb250LXNpemU6MnJlbTttYXJnaW4tYm90dG9tOjEwcHh9XG4gIC5oaXctY2FyZCBoM3tmb250LXNpemU6MXJlbTttYXJnaW4tYm90dG9tOjZweDtjb2xvcjp2YXIoLS1ibHVlKX1cbiAgLmhpdy1jYXJkIHB7Zm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO2xpbmUtaGVpZ2h0OjEuNX1cbiAgLnNlY3Rpb24tdGl0bGV7Zm9udC1zaXplOjEuM3JlbTtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbToxNnB4O2NvbG9yOnZhcigtLWJsdWUpfVxuICAuY2F0ZWdvcnktZ3JpZHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpbGwsbWlubWF4KDE2MHB4LDFmcikpO2dhcDoxNHB4O21hcmdpbi1ib3R0b206MzJweH1cbiAgLmNhdC1jYXJke2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjE4cHggMTRweDt0ZXh0LWFsaWduOmNlbnRlcjtjdXJzb3I6cG9pbnRlcjtib3JkZXI6MnB4IHNvbGlkIHRyYW5zcGFyZW50O3RyYW5zaXRpb246YWxsIDAuMnM7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpfVxuICAuY2F0LWNhcmQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWJsdWUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpfVxuICAuY2F0LWljb257Zm9udC1zaXplOjEuOHJlbTttYXJnaW4tYm90dG9tOjhweH1cbiAgLmNhdC1jYXJkIGg0e2ZvbnQtc2l6ZTowLjg4cmVtO2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS10ZXh0KX1cbiAgLmNhdC1jYXJkIHB7Zm9udC1zaXplOjAuNzVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi10b3A6NHB4fVxuICAuZG9uYXRlLWJhbm5lcntiYWNrZ3JvdW5kOnZhcigtLWdvbGQtbGlnaHQpO2JvcmRlcjoycHggc29saWQgdmFyKC0tZ29sZCk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjRweDt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tYm90dG9tOjMycHh9XG4gIC5kb25hdGUtYmFubmVyIGgze2ZvbnQtc2l6ZToxLjFyZW07bWFyZ2luLWJvdHRvbTo4cHh9XG4gIC5kb25hdGUtYmFubmVyIHB7Zm9udC1zaXplOjAuODhyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MTRweH1cbiAgLnRpcC1ib3h7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCNlOGY1ZTksI2YwZmFmNCk7Ym9yZGVyLWxlZnQ6NHB4IHNvbGlkIHZhcigtLWdyZWVuKTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxOHB4IDIwcHg7bWFyZ2luLWJvdHRvbTozMnB4fVxuICAudGlwLWJveCAudGlwLWxhYmVse2ZvbnQtc2l6ZTowLjc1cmVtO2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1ncmVlbik7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2xldHRlci1zcGFjaW5nOjFweDttYXJnaW4tYm90dG9tOjZweH1cbiAgLnRpcC1ib3ggcHtmb250LXNpemU6MC45MnJlbTtsaW5lLWhlaWdodDoxLjV9XG5cbiAgLyogRk9SVU0gLyBDQVRFR09SWSAqL1xuICAuZm9ydW0taGVhZGVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47bWFyZ2luLWJvdHRvbToyMHB4O2ZsZXgtd3JhcDpnYXB9XG4gIC5zb3J0LXNlbGVjdHtwYWRkaW5nOjhweCAxMnB4O2JvcmRlci1yYWRpdXM6OHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtmb250LXNpemU6MC44NXJlbTtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtjdXJzb3I6cG9pbnRlcjtjb2xvcjp2YXIoLS10ZXh0KX1cbiAgLmFzay1iYXJ7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjBweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWFyZ2luLWJvdHRvbToyNHB4fVxuICAuYXNrLWJhciBoM3tmb250LXNpemU6MXJlbTttYXJnaW4tYm90dG9tOjEycHg7Y29sb3I6dmFyKC0tYmx1ZSl9XG4gIC5hc2stYmFyIGlucHV0LC5hc2stYmFyIHRleHRhcmVhLC5hc2stYmFyIHNlbGVjdHt3aWR0aDoxMDAlO3BhZGRpbmc6MTBweCAxNHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjhweDtmb250LXNpemU6MC45cmVtO21hcmdpbi1ib3R0b206MTBweDtmb250LWZhbWlseTppbmhlcml0O2NvbG9yOnZhcigtLXRleHQpfVxuICAuYXNrLWJhciB0ZXh0YXJlYXtyZXNpemU6dmVydGljYWw7bWluLWhlaWdodDo4MHB4fVxuICAudGFnLWlucHV0e2Rpc3BsYXk6ZmxleDtnYXA6OHB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MTBweH1cbiAgLnRhZ3tiYWNrZ3JvdW5kOnZhcigtLWJsdWUtbGlnaHQpO2NvbG9yOnZhcigtLWJsdWUpO3BhZGRpbmc6NHB4IDEwcHg7Ym9yZGVyLXJhZGl1czoyMHB4O2ZvbnQtc2l6ZTowLjc4cmVtO2ZvbnQtd2VpZ2h0OjYwMDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHh9XG4gIC50YWcgLnJlbW92ZXtjb2xvcjp2YXIoLS1yZWQpO2ZvbnQtd2VpZ2h0OjcwMH1cbiAgLnEtY2FyZHtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyMHB4O2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KTttYXJnaW4tYm90dG9tOjE2cHg7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpib3gtc2hhZG93IDAuMnN9XG4gIC5xLWNhcmQ6aG92ZXJ7Ym94LXNoYWRvdzowIDRweCAyMHB4IHJnYmEoMCwwLDAsMC4xMil9XG4gIC5xLW1ldGF7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjhweH1cbiAgLnEtY2F0LWJhZGdle2JhY2tncm91bmQ6dmFyKC0tYmx1ZS1saWdodCk7Y29sb3I6dmFyKC0tYmx1ZSk7Zm9udC1zaXplOjAuNzJyZW07Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6M3B4IDlweDtib3JkZXItcmFkaXVzOjEycHh9XG4gIC5xLWRhdGV7Zm9udC1zaXplOjAuNzVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpfVxuICAucS1hdXRob3J7Zm9udC1zaXplOjAuNzVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpfVxuICAucS10aXRsZXtmb250LXNpemU6MS4wNXJlbTtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbTo2cHh9XG4gIC5xLXByZXZpZXd7Zm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO2xpbmUtaGVpZ2h0OjEuNTttYXJnaW4tYm90dG9tOjEwcHh9XG4gIC5xLXN0YXRze2Rpc3BsYXk6ZmxleDtnYXA6MTRweDtmb250LXNpemU6MC44cmVtO2NvbG9yOnZhcigtLW11dGVkKX1cbiAgLnEtc3RhdHMgc3BhbntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHh9XG4gIC5mZWF0dXJlZC1iYWRnZXtiYWNrZ3JvdW5kOnZhcigtLWdvbGQpO2NvbG9yOnZhcigtLXRleHQpO2ZvbnQtc2l6ZTowLjdyZW07Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6MnB4IDhweDtib3JkZXItcmFkaXVzOjEwcHg7bWFyZ2luLWxlZnQ6OHB4fVxuXG4gIC8qIFFVRVNUSU9OIERFVEFJTCAqL1xuICAuYmFjay1idG57YmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO2NvbG9yOnZhcigtLWJsdWUpO2ZvbnQtc2l6ZTowLjlyZW07Y3Vyc29yOnBvaW50ZXI7bWFyZ2luLWJvdHRvbToxNnB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDtmb250LXdlaWdodDo2MDB9XG4gIC5xLWZ1bGx7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjRweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWFyZ2luLWJvdHRvbToyNHB4fVxuICAucS1mdWxsIGgye2ZvbnQtc2l6ZToxLjNyZW07bWFyZ2luLWJvdHRvbToxMnB4fVxuICAucS1mdWxsIC5ib2R5e2ZvbnQtc2l6ZTowLjkycmVtO2xpbmUtaGVpZ2h0OjEuNzttYXJnaW4tYm90dG9tOjE2cHh9XG4gIC50YWdzLXJvd3tkaXNwbGF5OmZsZXg7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjE2cHh9XG4gIC5hbnN3ZXJzLXNlY3Rpb24gaDN7Zm9udC1zaXplOjEuMXJlbTtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbToxNnB4O2NvbG9yOnZhcigtLWJsdWUpfVxuICAuYW5zd2VyLWNhcmR7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MThweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWFyZ2luLWJvdHRvbToxNHB4O2JvcmRlci1sZWZ0OjRweCBzb2xpZCB0cmFuc3BhcmVudH1cbiAgLmFuc3dlci1jYXJkLnRvcC1hbnN3ZXJ7Ym9yZGVyLWxlZnQtY29sb3I6dmFyKC0tZ29sZCl9XG4gIC50b3AtYW5zd2VyLWxhYmVse2ZvbnQtc2l6ZTowLjcycmVtO2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1nb2xkKTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bGV0dGVyLXNwYWNpbmc6MC44cHg7bWFyZ2luLWJvdHRvbTo2cHh9XG4gIC5hbnN3ZXItYm9keXtmb250LXNpemU6MC45cmVtO2xpbmUtaGVpZ2h0OjEuNzttYXJnaW4tYm90dG9tOjEycHh9XG4gIC5hbnN3ZXItZm9vdGVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47ZmxleC13cmFwOndyYXA7Z2FwOjhweH1cbiAgLmFuc3dlci1tZXRhe2ZvbnQtc2l6ZTowLjc4cmVtO2NvbG9yOnZhcigtLW11dGVkKX1cbiAgLnZvdGUtYnRuc3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHh9XG4gIC52b3RlLWJ0bntiYWNrZ3JvdW5kOnZhcigtLWdyYXkpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjVweCAxMnB4O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjgycmVtO2ZvbnQtd2VpZ2h0OjYwMDt0cmFuc2l0aW9uOmFsbCAwLjJzO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweH1cbiAgLnZvdGUtYnRuLmxpa2Vke2JhY2tncm91bmQ6dmFyKC0tYmx1ZS1saWdodCk7Ym9yZGVyLWNvbG9yOnZhcigtLWJsdWUpO2NvbG9yOnZhcigtLWJsdWUpfVxuICAudm90ZS1idG46aG92ZXJ7dHJhbnNmb3JtOnNjYWxlKDEuMDUpfVxuICAuZmxhZy1idG57YmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO2NvbG9yOnZhcigtLW11dGVkKTtmb250LXNpemU6MC43OHJlbTtjdXJzb3I6cG9pbnRlcn1cbiAgLmZsYWctYnRuOmhvdmVye2NvbG9yOnZhcigtLXJlZCl9XG4gIC5hZGQtYW5zd2Vye2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjIwcHg7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpO21hcmdpbi10b3A6MjRweH1cbiAgLmFkZC1hbnN3ZXIgaDR7bWFyZ2luLWJvdHRvbToxMnB4O2NvbG9yOnZhcigtLWJsdWUpfVxuICAuYWRkLWFuc3dlciB0ZXh0YXJlYXt3aWR0aDoxMDAlO3BhZGRpbmc6MTJweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czo4cHg7bWluLWhlaWdodDoxMDBweDtyZXNpemU6dmVydGljYWw7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6MC45cmVtO21hcmdpbi1ib3R0b206MTBweH1cbiAgLmFkZC1hbnN3ZXIgaW5wdXR7d2lkdGg6MTAwJTtwYWRkaW5nOjEwcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4O2ZvbnQtc2l6ZTowLjg4cmVtO21hcmdpbi1ib3R0b206MTBweDtmb250LWZhbWlseTppbmhlcml0fVxuXG4gIC8qIEJFU1QgT0YgKi9cbiAgLmJlc3Qtb2YtaGVhZGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZyx2YXIoLS1nb2xkLWxpZ2h0KSwjZmZmZGU3KTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyNHB4O21hcmdpbi1ib3R0b206MjRweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdvbGQpO3RleHQtYWxpZ246Y2VudGVyfVxuICAuYmVzdC1vZi1oZWFkZXIgaDJ7Y29sb3I6dmFyKC0tdGV4dCk7bWFyZ2luLWJvdHRvbTo2cHh9XG4gIC5iZXN0LW9mLWhlYWRlciBwe2NvbG9yOnZhcigtLW11dGVkKTtmb250LXNpemU6MC44OHJlbX1cbiAgLmZpbHRlci1yb3d7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MjBweDthbGlnbi1pdGVtczpjZW50ZXJ9XG4gIC5maWx0ZXItYnRue3BhZGRpbmc6NnB4IDE0cHg7Ym9yZGVyLXJhZGl1czoyMHB4O2JvcmRlcjoycHggc29saWQgdmFyKC0tYm9yZGVyKTtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MC44MnJlbTtmb250LXdlaWdodDo2MDA7dHJhbnNpdGlvbjphbGwgMC4yc31cbiAgLmZpbHRlci1idG4uYWN0aXZle2JhY2tncm91bmQ6dmFyKC0tYmx1ZSk7Y29sb3I6I2ZmZjtib3JkZXItY29sb3I6dmFyKC0tYmx1ZSl9XG5cbiAgLyogQ0hFQ0tMSVNUICovXG4gIC5jaGVja2xpc3QtaW50cm97YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCNlOGY1ZTksI2YwZmFmNCk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjRweDttYXJnaW4tYm90dG9tOjI0cHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ncmVlbik7dGV4dC1hbGlnbjpjZW50ZXJ9XG4gIC5jaGVja2xpc3QtaW50cm8gaDJ7Y29sb3I6dmFyKC0tZ3JlZW4pO21hcmdpbi1ib3R0b206NnB4fVxuICAuY2hlY2tsaXN0LXNlY3Rpb257YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjBweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWFyZ2luLWJvdHRvbToxNnB4fVxuICAuY2hlY2tsaXN0LXNlY3Rpb24gaDN7Zm9udC1zaXplOjFyZW07Y29sb3I6dmFyKC0tYmx1ZSk7bWFyZ2luLWJvdHRvbToxMnB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweH1cbiAgLmNoZWNrbGlzdC1pdGVte2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDoxMnB4O3BhZGRpbmc6MTBweCAwO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWJvcmRlcil9XG4gIC5jaGVja2xpc3QtaXRlbTpsYXN0LWNoaWxke2JvcmRlci1ib3R0b206bm9uZX1cbiAgLmNoZWNrbGlzdC1pdGVtIGlucHV0W3R5cGU9Y2hlY2tib3hde3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7bWFyZ2luLXRvcDoycHg7Y3Vyc29yOnBvaW50ZXI7YWNjZW50LWNvbG9yOnZhcigtLWJsdWUpfVxuICAuY2hlY2tsaXN0LWl0ZW0gbGFiZWx7Zm9udC1zaXplOjAuOXJlbTtsaW5lLWhlaWdodDoxLjU7Y3Vyc29yOnBvaW50ZXI7ZmxleDoxfVxuICAuY2hlY2tsaXN0LWl0ZW0gLmxpbmstYnRue2ZvbnQtc2l6ZTowLjc1cmVtO2NvbG9yOnZhcigtLWJsdWUpO2N1cnNvcjpwb2ludGVyO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7YmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO21hcmdpbi1sZWZ0OmF1dG87d2hpdGUtc3BhY2U6bm93cmFwfVxuXG4gIC8qIFNFQVJDSCAqL1xuICAuc2VhcmNoLWJhci1iaWd7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O21hcmdpbi1ib3R0b206MjRweH1cbiAgLnNlYXJjaC1iYXItYmlnIGlucHV0e2ZsZXg6MTtwYWRkaW5nOjE0cHggMThweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czoxMHB4O2ZvbnQtc2l6ZToxcmVtO2ZvbnQtZmFtaWx5OmluaGVyaXR9XG4gIC5zZWFyY2gtYmFyLWJpZyBpbnB1dDpmb2N1c3tvdXRsaW5lOm5vbmU7Ym9yZGVyLWNvbG9yOnZhcigtLWJsdWUpfVxuICAuc2VhcmNoLWJhci1iaWcgYnV0dG9ue2JhY2tncm91bmQ6dmFyKC0tYmx1ZSk7Y29sb3I6I2ZmZjtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxNHB4IDI0cHg7Zm9udC1zaXplOjFyZW07Zm9udC13ZWlnaHQ6NzAwO2N1cnNvcjpwb2ludGVyfVxuICAudGFnLWNsb3Vke2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4O21hcmdpbi1ib3R0b206MjRweH1cbiAgLnRhZy1jbG91ZC1pdGVte2JhY2tncm91bmQ6dmFyKC0tYmx1ZS1saWdodCk7Y29sb3I6dmFyKC0tYmx1ZSk7cGFkZGluZzo2cHggMTRweDtib3JkZXItcmFkaXVzOjIwcHg7Zm9udC1zaXplOjAuODJyZW07Zm9udC13ZWlnaHQ6NjAwO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246YWxsIDAuMnN9XG4gIC50YWctY2xvdWQtaXRlbTpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWJsdWUpO2NvbG9yOiNmZmZ9XG5cbiAgLyogRE9OQVRFICovXG4gIC5kb25hdGUtcGFnZXt0ZXh0LWFsaWduOmNlbnRlcjttYXgtd2lkdGg6NjAwcHg7bWFyZ2luOjAgYXV0b31cbiAgLmRvbmF0ZS1oZXJve2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZyx2YXIoLS1nb2xkLWxpZ2h0KSwjZmZmOGUxKTtib3JkZXItcmFkaXVzOjE2cHg7cGFkZGluZzo0MHB4O21hcmdpbi1ib3R0b206MjRweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdvbGQpfVxuICAuZG9uYXRlLWhlcm8gaDJ7Zm9udC1zaXplOjEuOHJlbTttYXJnaW4tYm90dG9tOjEycHh9XG4gIC5kb25hdGUtaGVybyBwe2NvbG9yOnZhcigtLW11dGVkKTtsaW5lLWhlaWdodDoxLjc7bWFyZ2luLWJvdHRvbToyMHB4fVxuICAuZG9uYXRlLWFtb3VudHN7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7ZmxleC13cmFwOndyYXA7bWFyZ2luLWJvdHRvbToyMHB4fVxuICAuYW1vdW50LWJ0bntwYWRkaW5nOjEwcHggMjBweDtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdvbGQpO2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjlyZW07Zm9udC13ZWlnaHQ6NzAwO3RyYW5zaXRpb246YWxsIDAuMnN9XG4gIC5hbW91bnQtYnRuLnNlbGVjdGVkLC5hbW91bnQtYnRuOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tZ29sZCk7Y29sb3I6dmFyKC0tdGV4dCl9XG4gIC5kb25hdGUtYnRuLWJpZ3tiYWNrZ3JvdW5kOnZhcigtLWdvbGQpO2NvbG9yOnZhcigtLXRleHQpO2JvcmRlcjpub25lO3BhZGRpbmc6MTRweCA0MHB4O2JvcmRlci1yYWRpdXM6MTBweDtmb250LXNpemU6MS4xcmVtO2ZvbnQtd2VpZ2h0OjgwMDtjdXJzb3I6cG9pbnRlcjt3aWR0aDoxMDAlO21hcmdpbi1ib3R0b206MTJweH1cblxuICAvKiBMQU5HIE1PREFMICovXG4gIC5tb2RhbC1vdmVybGF5e2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjpmaXhlZDtpbnNldDowO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjUpO3otaW5kZXg6MjAwO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVxuICAubW9kYWwtb3ZlcmxheS5vcGVue2Rpc3BsYXk6ZmxleH1cbiAgLm1vZGFse2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTZweDtwYWRkaW5nOjI4cHg7bWF4LXdpZHRoOjQyMHB4O3dpZHRoOjkwJTtib3gtc2hhZG93OjAgOHB4IDQwcHggcmdiYSgwLDAsMCwwLjIpfVxuICAubW9kYWwgaDN7bWFyZ2luLWJvdHRvbTo4cHg7Zm9udC1zaXplOjEuMnJlbX1cbiAgLm1vZGFsIHB7Zm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MTZweDtsaW5lLWhlaWdodDoxLjV9XG4gIC5sYW5nLWdyaWR7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dhcDo4cHg7bWFyZ2luLWJvdHRvbToxNnB4fVxuICAubGFuZy1vcHRpb257cGFkZGluZzoxMHB4IDEycHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjkycmVtO2ZvbnQtd2VpZ2h0OjYwMDt0ZXh0LWFsaWduOmNlbnRlcjt0cmFuc2l0aW9uOmFsbCAwLjJzO2xpbmUtaGVpZ2h0OjEuNDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHh9XG4gIC5sYW5nLW9wdGlvbjpob3ZlciwubGFuZy1vcHRpb24uYWN0aXZle2JvcmRlci1jb2xvcjp2YXIoLS1ibHVlKTtiYWNrZ3JvdW5kOnZhcigtLWJsdWUtbGlnaHQpO2NvbG9yOnZhcigtLWJsdWUpO3RyYW5zZm9ybTpzY2FsZSgxLjAzKX1cbiAgLm1vZGFsLWNsb3Nle2JhY2tncm91bmQ6dmFyKC0tZ3JheSk7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoxMHB4IDIwcHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjAuOXJlbTtmb250LXdlaWdodDo2MDA7d2lkdGg6MTAwJX1cbiAgLnRyYW5zbGF0aW9uLW5vdGljZXtiYWNrZ3JvdW5kOiNmZmYzY2Q7Ym9yZGVyOjFweCBzb2xpZCAjZmZjMTA3O2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6MTBweCAxNHB4O2ZvbnQtc2l6ZTowLjhyZW07Y29sb3I6Izg1NjQwNDttYXJnaW4tYm90dG9tOjE2cHh9XG5cbiAgLyogVE9BU1QgKi9cbiAgLnRvYXN0e3Bvc2l0aW9uOmZpeGVkO2JvdHRvbToyNHB4O3JpZ2h0OjI0cHg7YmFja2dyb3VuZDp2YXIoLS1ncmVlbik7Y29sb3I6I2ZmZjtwYWRkaW5nOjEycHggMjBweDtib3JkZXItcmFkaXVzOjEwcHg7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZTowLjlyZW07ei1pbmRleDozMDA7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwcHgpO3RyYW5zaXRpb246YWxsIDAuM3M7cG9pbnRlci1ldmVudHM6bm9uZX1cbiAgLnRvYXN0LnNob3d7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfVxuXG4gIC5lbXB0eS1zdGF0ZXt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjQwcHg7Y29sb3I6dmFyKC0tbXV0ZWQpfVxuICAuZW1wdHktc3RhdGUgLmljb257Zm9udC1zaXplOjNyZW07bWFyZ2luLWJvdHRvbToxMHB4fVxuICAuZGl2aWRlcntoZWlnaHQ6MXB4O2JhY2tncm91bmQ6dmFyKC0tYm9yZGVyKTttYXJnaW46MjBweCAwfVxuICBAbWVkaWEobWF4LXdpZHRoOjYwMHB4KXsuaGVybyBoMXtmb250LXNpemU6MS42cmVtfS5oZXJve3BhZGRpbmc6MjhweCAyMHB4fS5jYXRlZ29yeS1ncmlke2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maWxsLG1pbm1heCgxMzBweCwxZnIpKX19XG48L3N0eWxlPlxuPC9oZWFkPlxuPGJvZHk+XG5cbjxuYXY+XG4gIDxkaXYgY2xhc3M9XCJuYXYtbG9nb1wiIG9uY2xpY2s9XCJzaG93UGFnZSgnaG9tZScpXCI+T2xpbTxzcGFuPkFuc3dlcnM8L3NwYW4+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJuYXYtbGlua3NcIj5cbiAgICA8YnV0dG9uIG9uY2xpY2s9XCJzaG93UGFnZSgnaG9tZScpXCI+8J+PoCBIb21lPC9idXR0b24+XG4gICAgPGJ1dHRvbiBvbmNsaWNrPVwic2hvd1BhZ2UoJ2ZvcnVtJylcIj7wn5ejIEZvcnVtPC9idXR0b24+XG4gICAgPGJ1dHRvbiBvbmNsaWNrPVwic2hvd1BhZ2UoJ2Jlc3RvZicpXCI+4q2QIEJlc3QgT2Y8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG9uY2xpY2s9XCJzaG93UGFnZSgnY2hlY2tsaXN0JylcIj7inIUgQ2hlY2tsaXN0PC9idXR0b24+XG4gICAgPGJ1dHRvbiBvbmNsaWNrPVwic2hvd1BhZ2UoJ2NhdHMnKVwiPvCfk4IgQ2F0ZWdvcmllczwvYnV0dG9uPlxuICAgIDxidXR0b24gb25jbGljaz1cInNob3dQYWdlKCdzZWFyY2gnKVwiPvCflI0gU2VhcmNoPC9idXR0b24+XG4gICAgPGJ1dHRvbiBvbmNsaWNrPVwic2hvd1BhZ2UoJ2RvbmF0ZScpXCIgY2xhc3M9XCJuYXYtZG9uYXRlXCI+8J+SmyBEb25hdGU8L2J1dHRvbj5cbiAgICA8YnV0dG9uIGNsYXNzPVwibGFuZy1idG5cIiBvbmNsaWNrPVwib3BlbkxhbmdNb2RhbCgpXCI+8J+HrPCfh6c8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25hdj5cblxuPCEtLSBIT01FIC0tPlxuPGRpdiBjbGFzcz1cInBhZ2UgYWN0aXZlXCIgaWQ9XCJwYWdlLWhvbWVcIj5cbiAgPGRpdiBjbGFzcz1cImhlcm9cIj5cbiAgICA8aDE+V2VsY29tZSB0byA8c3Bhbj5PbGltQW5zd2Vyczwvc3Bhbj48L2gxPlxuICAgIDxwPllvdXIgY29tbXVuaXR5LXBvd2VyZWQgZ3VpZGUgdG8gbmF2aWdhdGluZyBsaWZlIGluIElzcmFlbC4gQXNrIHF1ZXN0aW9ucywgc2hhcmUga25vd2xlZGdlLCBhbmQgaGVscCBmZWxsb3cgb2xpbSBmaW5kIHRoZWlyIGZlZXQgZmFzdGVyLjwvcD5cbiAgICA8ZGl2IGNsYXNzPVwiaGVyby1idG5zXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgb25jbGljaz1cInNob3dQYWdlKCdmb3J1bScpXCI+QXNrIGEgUXVlc3Rpb248L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiBvbmNsaWNrPVwic2hvd1BhZ2UoJ2Jlc3RvZicpXCI+4q2QIEJyb3dzZSBUb3AgQW5zd2VyczwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwidGlwLWJveFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0aXAtbGFiZWxcIj7wn5KhIFRpcCBvZiB0aGUgRGF5PC9kaXY+XG4gICAgPHAgaWQ9XCJ0aXAtdGV4dFwiPldoZW4gb3BlbmluZyBhIGJhbmsgYWNjb3VudCBpbiBJc3JhZWwsIGJyaW5nIHlvdXIgVGV1ZGF0IE9sZWgsIHBhc3Nwb3J0LCBhbmQgcHJvb2Ygb2YgYWRkcmVzcy4gQmFuayBIYXBvYWxpbSBhbmQgQmFuayBMZXVtaSBib3RoIGhhdmUgZGVkaWNhdGVkIE9saW0gZGVwYXJ0bWVudHMgd2l0aCBFbmdsaXNoLXNwZWFraW5nIHN0YWZmLjwvcD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5Ib3cgSXQgV29ya3M8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImhvdy1pdC13b3Jrc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJoaXctY2FyZFwiPjxkaXYgY2xhc3M9XCJoaXctaWNvblwiPuKdkzwvZGl2PjxoMz5Bc2s8L2gzPjxwPlBvc3QgeW91ciBxdWVzdGlvbiBpbiB0aGUgcmVsZXZhbnQgY2F0ZWdvcnkuIEJlIGFzIGRldGFpbGVkIGFzIHlvdSBsaWtlLjwvcD48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaGl3LWNhcmRcIj48ZGl2IGNsYXNzPVwiaGl3LWljb25cIj7wn5KsPC9kaXY+PGgzPkFuc3dlcjwvaDM+PHA+VGhlIGNvbW11bml0eSByZXNwb25kcyB3aXRoIGFkdmljZSwgdGlwcywgYW5kIHBlcnNvbmFsIGV4cGVyaWVuY2UuPC9wPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJoaXctY2FyZFwiPjxkaXYgY2xhc3M9XCJoaXctaWNvblwiPvCfkY08L2Rpdj48aDM+UmF0ZTwvaDM+PHA+VXB2b3RlIHRoZSBtb3N0IGhlbHBmdWwgYW5zd2VycyBzbyB0aGV5IHJpc2UgdG8gdGhlIHRvcCBmb3IgZXZlcnlvbmUuPC9wPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJoaXctY2FyZFwiPjxkaXYgY2xhc3M9XCJoaXctaWNvblwiPvCfjJ88L2Rpdj48aDM+RGlzY292ZXI8L2gzPjxwPkJyb3dzZSB0b3AtcmF0ZWQgY29udGVudCBvciBzZWFyY2ggYnkga2V5d29yZCB0byBmaW5kIHdoYXQgeW91IG5lZWQgZmFzdC48L3A+PC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+QnJvd3NlIGJ5IENhdGVnb3J5PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjYXRlZ29yeS1ncmlkXCIgaWQ9XCJob21lLWNhdHNcIj48L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZG9uYXRlLWJhbm5lclwiPlxuICAgIDxoMz7wn5KbIE9saW1BbnN3ZXJzIGlzIGZyZWUgZm9yIGV2ZXJ5b25lPC9oMz5cbiAgICA8cD5UaGlzIHNpdGUgaXMgY29tbXVuaXR5LXJ1bi4gSWYgaXQgaGVscGVkIHlvdSwgY29uc2lkZXIgYSBzbWFsbCBkb25hdGlvbiB0byBrZWVwIGl0IGdvaW5nLjwvcD5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgb25jbGljaz1cInNob3dQYWdlKCdkb25hdGUnKVwiPlN1cHBvcnQgdGhlIFNpdGU8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBGT1JVTSAtLT5cbjxkaXYgY2xhc3M9XCJwYWdlXCIgaWQ9XCJwYWdlLWZvcnVtXCI+XG4gIDxkaXYgY2xhc3M9XCJmb3J1bS1oZWFkZXJcIiBzdHlsZT1cImRpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLWJvdHRvbToyMHB4O2ZsZXgtd3JhcDp3cmFwO2dhcDoxMHB4XCI+XG4gICAgPGRpdj5cbiAgICAgIDxoMiBzdHlsZT1cImZvbnQtc2l6ZToxLjRyZW07Y29sb3I6dmFyKC0tYmx1ZSlcIj7wn5ejIENvbW11bml0eSBGb3J1bTwvaDI+XG4gICAgICA8cCBzdHlsZT1cImZvbnQtc2l6ZTowLjg1cmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tdG9wOjRweFwiPkFzayBxdWVzdGlvbnMsIHNoYXJlIGFuc3dlcnMsIGhlbHAgZmVsbG93IG9saW08L3A+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6ZmxleDtnYXA6MTBweDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC13cmFwOndyYXBcIj5cbiAgICAgIDxzZWxlY3QgY2xhc3M9XCJzb3J0LXNlbGVjdFwiIGlkPVwiZm9ydW0tc29ydFwiIG9uY2hhbmdlPVwicmVuZGVyRm9ydW0oKVwiPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwibmV3ZXN0XCI+8J+VkCBOZXdlc3Q8L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm1vc3RfYW5zd2Vyc1wiPvCfkqwgTW9zdCBSZXNwb25zZXM8L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImhpZ2hlc3RfcmF0ZWRcIj7irZAgSGlnaGVzdCBSYXRlZDwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwibW9zdF92aWV3ZWRcIj7wn5GBIE1vc3QgVmlld2VkPC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBvbmNsaWNrPVwidG9nZ2xlQXNrQmFyKClcIiBzdHlsZT1cInBhZGRpbmc6OXB4IDE2cHg7Zm9udC1zaXplOjAuODhyZW1cIj4rIEFzayBhIFF1ZXN0aW9uPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJhc2stYmFyXCIgaWQ9XCJhc2stYmFyXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIj5cbiAgICA8aDM+QXNrIGEgTmV3IFF1ZXN0aW9uPC9oMz5cbiAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cInEtdGl0bGVcIiBwbGFjZWhvbGRlcj1cIllvdXIgcXVlc3Rpb24gdGl0bGUuLi5cIiAvPlxuICAgIDx0ZXh0YXJlYSBpZD1cInEtYm9keVwiIHBsYWNlaG9sZGVyPVwiRGVzY3JpYmUgeW91ciBxdWVzdGlvbiBpbiBkZXRhaWwuLi5cIj48L3RleHRhcmVhPlxuICAgIDxzZWxlY3QgaWQ9XCJxLWNhdFwiPlxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBhIGNhdGVnb3J5Li4uPC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJxLW5hbWVcIiBwbGFjZWhvbGRlcj1cIllvdXIgbmFtZSAob3IgbGVhdmUgYmxhbmsgZm9yIEFub255bW91cylcIiAvPlxuICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OmZsZXg7Z2FwOjEwcHhcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBvbmNsaWNrPVwic3VibWl0UXVlc3Rpb24oKVwiIHN0eWxlPVwiZmxleDoxXCI+UG9zdCBRdWVzdGlvbjwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBvbmNsaWNrPVwiY2FuY2VsQXNrKClcIiBzdHlsZT1cImZsZXg6bm9uZTtwYWRkaW5nOjEycHggMThweDtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWJvcmRlcik7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjFyZW07Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLW11dGVkKVwiPuKclSBDYW5jZWw8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBpZD1cImZvcnVtLWxpc3RcIj48L2Rpdj5cbjwvZGl2PlxuXG48IS0tIENBVEVHT1JZIFBBR0UgLS0+XG48ZGl2IGNsYXNzPVwicGFnZVwiIGlkPVwicGFnZS1jYXRlZ29yeVwiPlxuICA8YnV0dG9uIGNsYXNzPVwiYmFjay1idG5cIiBvbmNsaWNrPVwic2hvd1BhZ2UoJ2ZvcnVtJylcIj7ihpAgQmFjayB0byBGb3J1bTwvYnV0dG9uPlxuICA8ZGl2IHN0eWxlPVwiZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW4tYm90dG9tOjIwcHg7ZmxleC13cmFwOndyYXA7Z2FwOjEwcHhcIj5cbiAgICA8ZGl2PlxuICAgICAgPGgyIGlkPVwiY2F0LXBhZ2UtdGl0bGVcIiBzdHlsZT1cImZvbnQtc2l6ZToxLjRyZW07Y29sb3I6dmFyKC0tYmx1ZSlcIj48L2gyPlxuICAgICAgPHAgaWQ9XCJjYXQtcGFnZS1kZXNjXCIgc3R5bGU9XCJmb250LXNpemU6MC44NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLXRvcDo0cHhcIj48L3A+XG4gICAgPC9kaXY+XG4gICAgPHNlbGVjdCBjbGFzcz1cInNvcnQtc2VsZWN0XCIgaWQ9XCJjYXQtc29ydFwiIG9uY2hhbmdlPVwicmVuZGVyQ2F0ZWdvcnlQYWdlKClcIj5cbiAgICAgIDxvcHRpb24gdmFsdWU9XCJuZXdlc3RcIj7wn5WQIE5ld2VzdDwvb3B0aW9uPlxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIm1vc3RfYW5zd2Vyc1wiPvCfkqwgTW9zdCBSZXNwb25zZXM8L29wdGlvbj5cbiAgICAgIDxvcHRpb24gdmFsdWU9XCJoaWdoZXN0X3JhdGVkXCI+4q2QIEhpZ2hlc3QgUmF0ZWQ8L29wdGlvbj5cbiAgICAgIDxvcHRpb24gdmFsdWU9XCJtb3N0X3ZpZXdlZFwiPvCfkYEgTW9zdCBWaWV3ZWQ8L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cbiAgPC9kaXY+XG4gIDxkaXYgaWQ9XCJjYXQtcGFnZS1saXN0XCI+PC9kaXY+XG48L2Rpdj5cblxuPCEtLSBRVUVTVElPTiBERVRBSUwgLS0+XG48ZGl2IGNsYXNzPVwicGFnZVwiIGlkPVwicGFnZS1xdWVzdGlvblwiPlxuICA8YnV0dG9uIGNsYXNzPVwiYmFjay1idG5cIiBpZD1cInEtYmFjay1idG5cIiBvbmNsaWNrPVwiZ29CYWNrKClcIj7ihpAgQmFjazwvYnV0dG9uPlxuICA8ZGl2IGNsYXNzPVwicS1mdWxsXCIgaWQ9XCJxLWZ1bGwtY29udGVudFwiPjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYW5zd2Vycy1zZWN0aW9uXCI+XG4gICAgPGgzIGlkPVwiYW5zd2Vycy1jb3VudFwiPjwvaDM+XG4gICAgPGRpdiBpZD1cImFuc3dlcnMtbGlzdFwiPjwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImFkZC1hbnN3ZXJcIj5cbiAgICA8aDQ+8J+SrCBBZGQgWW91ciBBbnN3ZXI8L2g0PlxuICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwiYW5zLW5hbWVcIiBwbGFjZWhvbGRlcj1cIllvdXIgbmFtZSAob3IgbGVhdmUgYmxhbmsgZm9yIEFub255bW91cylcIiAvPlxuICAgIDx0ZXh0YXJlYSBpZD1cImFucy1ib2R5XCIgcGxhY2Vob2xkZXI9XCJTaGFyZSB5b3VyIGtub3dsZWRnZSBvciBleHBlcmllbmNlLi4uXCI+PC90ZXh0YXJlYT5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgb25jbGljaz1cInN1Ym1pdEFuc3dlcigpXCI+UG9zdCBBbnN3ZXI8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBCRVNUIE9GIC0tPlxuPGRpdiBjbGFzcz1cInBhZ2VcIiBpZD1cInBhZ2UtYmVzdG9mXCI+XG4gIDxkaXYgY2xhc3M9XCJiZXN0LW9mLWhlYWRlclwiPlxuICAgIDxoMj7irZAgQmVzdCBPZiBPbGltQW5zd2VyczwvaDI+XG4gICAgPHA+VGhlIGhpZ2hlc3QtcmF0ZWQgcXVlc3Rpb25zIGFuZCBhbnN3ZXJzIGZyb20gb3VyIGNvbW11bml0eSDigJQgeW91ciBnby10byBzdGFydGluZyBwb2ludDwvcD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmaWx0ZXItcm93XCI+XG4gICAgPHNwYW4gc3R5bGU9XCJmb250LXNpemU6MC44NXJlbTtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tbXV0ZWQpXCI+RmlsdGVyOjwvc3Bhbj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiZmlsdGVyLWJ0biBhY3RpdmVcIiBvbmNsaWNrPVwiZmlsdGVyQmVzdE9mKCdhbGwnLHRoaXMpXCI+QWxsIENhdGVnb3JpZXM8L2J1dHRvbj5cbiAgICA8ZGl2IGlkPVwiYmVzdG9mLWZpbHRlcnNcIj48L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgaWQ9XCJiZXN0b2YtbGlzdFwiPjwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gQ0hFQ0tMSVNUIC0tPlxuPGRpdiBjbGFzcz1cInBhZ2VcIiBpZD1cInBhZ2UtY2hlY2tsaXN0XCI+XG4gIDxkaXYgY2xhc3M9XCJjaGVja2xpc3QtaW50cm9cIj5cbiAgICA8aDI+4pyFIE5ldyBPbGVoIENoZWNrbGlzdDwvaDI+XG4gICAgPHAgc3R5bGU9XCJjb2xvcjp2YXIoLS1tdXRlZCk7Zm9udC1zaXplOjAuODhyZW07bWFyZ2luLXRvcDo2cHhcIj5Zb3VyIHN0ZXAtYnktc3RlcCBndWlkZSB0byBzZXR0bGluZyBpbiBJc3JhZWwuIENoZWNrIG9mZiBpdGVtcyBhcyB5b3UgZ28g4oCUIHByb2dyZXNzIHNhdmVzIGF1dG9tYXRpY2FsbHkuPC9wPlxuICA8L2Rpdj5cbiAgPGRpdiBpZD1cImNoZWNrbGlzdC1jb250ZW50XCI+PC9kaXY+XG48L2Rpdj5cblxuPCEtLSBTRUFSQ0ggLS0+XG48ZGl2IGNsYXNzPVwicGFnZVwiIGlkPVwicGFnZS1zZWFyY2hcIj5cbiAgPGgyIHN0eWxlPVwiZm9udC1zaXplOjEuNHJlbTtjb2xvcjp2YXIoLS1ibHVlKTttYXJnaW4tYm90dG9tOjE2cHhcIj7wn5SNIFNlYXJjaCBPbGltQW5zd2VyczwvaDI+XG4gIDxkaXYgY2xhc3M9XCJzZWFyY2gtYmFyLWJpZ1wiPlxuICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwic2VhcmNoLWlucHV0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2ggcXVlc3Rpb25zLCB0b3BpY3MsIGtleXdvcmRzLi4uXCIgb25rZXl1cD1cImlmKGV2ZW50LmtleT09PSdFbnRlcicpZG9TZWFyY2goKVwiIC8+XG4gICAgPGJ1dHRvbiBvbmNsaWNrPVwiZG9TZWFyY2goKVwiPlNlYXJjaDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIiBzdHlsZT1cImZvbnQtc2l6ZToxcmVtXCI+UG9wdWxhciBUb3BpY3M8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInRhZy1jbG91ZFwiIGlkPVwidGFnLWNsb3VkXCI+PC9kaXY+XG4gIDxkaXYgaWQ9XCJzZWFyY2gtcmVzdWx0c1wiPjwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gQ0FURUdPUklFUyAtLT5cbjxkaXYgY2xhc3M9XCJwYWdlXCIgaWQ9XCJwYWdlLWNhdHNcIj5cbiAgPGgyIHN0eWxlPVwiZm9udC1zaXplOjEuNHJlbTtjb2xvcjp2YXIoLS1ibHVlKTttYXJnaW4tYm90dG9tOjZweFwiPvCfk4IgQ2F0ZWdvcmllczwvaDI+XG4gIDxwIHN0eWxlPVwiZm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MjBweFwiPkJyb3dzZSBxdWVzdGlvbnMgYnkgdG9waWM8L3A+XG4gIDxkaXYgY2xhc3M9XCJjYXRlZ29yeS1ncmlkXCIgaWQ9XCJjYXRzLWdyaWRcIj48L2Rpdj5cbjwvZGl2PlxuXG48IS0tIERPTkFURSAtLT5cbjxkaXYgY2xhc3M9XCJwYWdlXCIgaWQ9XCJwYWdlLWRvbmF0ZVwiPlxuICA8ZGl2IGNsYXNzPVwiZG9uYXRlLXBhZ2VcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZG9uYXRlLWhlcm9cIj5cbiAgICAgIDxkaXYgc3R5bGU9XCJmb250LXNpemU6M3JlbTttYXJnaW4tYm90dG9tOjEycHhcIj7wn5KbPC9kaXY+XG4gICAgICA8aDI+U3VwcG9ydCBPbGltQW5zd2VyczwvaDI+XG4gICAgICA8cD5PbGltQW5zd2VycyBpcyBmcmVlIGZvciBldmVyeSBvbGVoLCBmb3JldmVyLiBJdCdzIGJ1aWx0IGFuZCBtYWludGFpbmVkIGJ5IHRoZSBjb21tdW5pdHksIGZvciB0aGUgY29tbXVuaXR5LiBZb3VyIGRvbmF0aW9uIGhlbHBzIGtlZXAgdGhlIGxpZ2h0cyBvbiwgcGF5IGZvciBob3N0aW5nLCBhbmQgYWxsb3dzIHVzIHRvIGdyb3cgYW5kIGltcHJvdmUgdGhlIHNpdGUuPC9wPlxuICAgICAgPHAgc3R5bGU9XCJtYXJnaW4tdG9wOjEwcHg7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpXCI+XCJJIHdpc2ggdGhpcyBzaXRlIGV4aXN0ZWQgd2hlbiBJIG1hZGUgYWxpeWFoLlwiIOKAlCBFdmVyeSBvbGVoLCBldmVyLjwvcD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZG9uYXRlLWFtb3VudHNcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJhbW91bnQtYnRuXCIgb25jbGljaz1cInNlbGVjdEFtb3VudCh0aGlzLCckNScpXCI+JDU8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJhbW91bnQtYnRuXCIgb25jbGljaz1cInNlbGVjdEFtb3VudCh0aGlzLCckMTgnKVwiPiQxOCDinKHvuI88L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJhbW91bnQtYnRuIHNlbGVjdGVkXCIgb25jbGljaz1cInNlbGVjdEFtb3VudCh0aGlzLCckMzYnKVwiPiQzNjwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImFtb3VudC1idG5cIiBvbmNsaWNrPVwic2VsZWN0QW1vdW50KHRoaXMsJyQxMDAnKVwiPiQxMDA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJhbW91bnQtYnRuXCIgb25jbGljaz1cInNlbGVjdEFtb3VudCh0aGlzLCdvdGhlcicpXCI+T3RoZXI8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiZG9uYXRlLWJ0bi1iaWdcIiBvbmNsaWNrPVwic2hvd1RvYXN0KCdUaGFuayB5b3UhIERvbmF0aW9uIGxpbmsgY29taW5nIHNvb24g8J+SmycpXCI+RG9uYXRlIHZpYSBQYXlQYWw8L2J1dHRvbj5cbiAgICA8cCBzdHlsZT1cImZvbnQtc2l6ZTowLjc4cmVtO2NvbG9yOnZhcigtLW11dGVkKVwiPlNlY3VyZSBwYXltZW50LiBFdmVyeSBzaGVrZWwgLyBkb2xsYXIgaGVscHMuPC9wPlxuICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XG4gICAgPHAgc3R5bGU9XCJmb250LXNpemU6MC44NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLXRvcDoxNnB4XCI+WW91IGNhbiBhbHNvIHN1cHBvcnQgdXMgYnkgc2hhcmluZyB0aGUgc2l0ZSB3aXRoIG90aGVyIG9saW0sIGNvbnRyaWJ1dGluZyBhbnN3ZXJzLCBhbmQgZmxhZ2dpbmcgb3V0ZGF0ZWQgaW5mb3JtYXRpb24uIEV2ZXJ5IGJpdCBjb3VudHMhPC9wPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIExBTkcgTU9EQUwgLS0+XG48ZGl2IGNsYXNzPVwibW9kYWwtb3ZlcmxheVwiIGlkPVwibGFuZy1tb2RhbFwiPlxuICA8ZGl2IGNsYXNzPVwibW9kYWxcIj5cbiAgICA8aDM+8J+MkCBDaG9vc2UgTGFuZ3VhZ2U8L2gzPlxuICAgIDxwPkNvbnRlbnQgaXMgYXV0by10cmFuc2xhdGVkLiBGb3IgY3JpdGljYWwgZGVjaXNpb25zLCBhbHdheXMgdmVyaWZ5IHdpdGggb2ZmaWNpYWwgc291cmNlcy48L3A+XG4gICAgPGRpdiBjbGFzcz1cInRyYW5zbGF0aW9uLW5vdGljZVwiPuKaoO+4jyBJc3JhZWxpIGJ1cmVhdWNyYXRpYyB0ZXJtcyAoVGV1ZGF0IFplaHV0LCBNaXNyYWQgSGFwbmltLCBldGMuKSBhcmUga2VwdCBpbiB0aGVpciBvcmlnaW5hbCBmb3JtIHdpdGggdG9vbHRpcHMgdG8gcHJldmVudCBtaXN0cmFuc2xhdGlvbi48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibGFuZy1ncmlkXCIgaWQ9XCJsYW5nLWdyaWRcIj48L2Rpdj5cbiAgICA8YnV0dG9uIGNsYXNzPVwibW9kYWwtY2xvc2VcIiBvbmNsaWNrPVwiY2xvc2VMYW5nTW9kYWwoKVwiPkNsb3NlPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJ0b2FzdFwiIGlkPVwidG9hc3RcIj48L2Rpdj5cblxuPHNjcmlwdD5cbmNvbnN0IENBVEVHT1JJRVMgPSBbXG4gIHtpZDonYmFua2luZycsaWNvbjon8J+PpicsbmFtZTonQmFua2luZycsZGVzYzonQWNjb3VudHMsIHRyYW5zZmVycywgbW9ydGdhZ2VzJ30sXG4gIHtpZDonaGVhbHRoJyxpY29uOifwn4+lJyxuYW1lOidIZWFsdGggSW5zdXJhbmNlJyxkZXNjOidLdXBhdCBIb2xpbSwgZG9jdG9ycywgY292ZXJhZ2UnfSxcbiAge2lkOid0YXgnLGljb246J/Cfk4onLG5hbWU6J1RheCcsZGVzYzonSW5jb21lIHRheCwgTWFzIEhhY2huYXNhLCBWQVQnfSxcbiAge2lkOidpbnRlcm5ldCcsaWNvbjon8J+TticsbmFtZTonSW50ZXJuZXQgJiBQaG9uZScsZGVzYzonUHJvdmlkZXJzLCBjb250cmFjdHMsIFNJTSBjYXJkcyd9LFxuICB7aWQ6J2hvdXNpbmcnLGljb246J/Cfj6AnLG5hbWU6J0hvdXNpbmcnLGRlc2M6J1JlbnRpbmcsIGJ1eWluZywgQXJub25hJ30sXG4gIHtpZDonZ292JyxpY29uOifwn6qqJyxuYW1lOidHb3Zlcm5tZW50ICYgSURzJyxkZXNjOidUZXVkYXQgWmVodXQsIE1pc3JhZCBIYXBuaW0nfSxcbiAge2lkOidlZHVjYXRpb24nLGljb246J/CfjpMnLG5hbWU6J0VkdWNhdGlvbicsZGVzYzonU2Nob29scywgdWxwYW4sIHVuaXZlcnNpdGllcyd9LFxuICB7aWQ6J3RyYW5zcG9ydCcsaWNvbjon8J+ajCcsbmFtZTonVHJhbnNwb3J0JyxkZXNjOidEcml2aW5nIGxpY2VuY2UsIFJhdi1LYXYsIGJ1c2VzJ30sXG4gIHtpZDonZW1wbG95bWVudCcsaWNvbjon8J+SvCcsbmFtZTonRW1wbG95bWVudCcsZGVzYzonSm9icywgY29udHJhY3RzLCByaWdodHMnfSxcbiAge2lkOidzb2NpYWwnLGljb246J/CfpJ0nLG5hbWU6J1NvY2lhbCBTZWN1cml0eScsZGVzYzonQml0dWFjaCBMZXVtaSwgYmVuZWZpdHMnfSxcbiAge2lkOidjdWx0dXJlJyxpY29uOifwn5WOJyxuYW1lOidDdWx0dXJlICYgTGlmZScsZGVzYzonQ3VzdG9tcywgaG9saWRheXMsIGNvbW11bml0eSd9LFxuICB7aWQ6J290aGVyJyxpY29uOifinZMnLG5hbWU6J090aGVyJyxkZXNjOidBbnl0aGluZyBlbHNlJ30sXG5dO1xuXG5jb25zdCBUSVBTID0gW1xuICBcIldoZW4gb3BlbmluZyBhIGJhbmsgYWNjb3VudCBpbiBJc3JhZWwsIGJyaW5nIHlvdXIgVGV1ZGF0IE9sZWgsIHBhc3Nwb3J0LCBhbmQgcHJvb2Ygb2YgYWRkcmVzcy4gQmFuayBIYXBvYWxpbSBhbmQgQmFuayBMZXVtaSBib3RoIGhhdmUgZGVkaWNhdGVkIE9saW0gZGVwYXJ0bWVudHMgd2l0aCBFbmdsaXNoLXNwZWFraW5nIHN0YWZmLlwiLFxuICBcIlJlZ2lzdGVyIHdpdGggYSBLdXBhdCBIb2xpbSAoaGVhbHRoIGZ1bmQpIHdpdGhpbiAzIG1vbnRocyBvZiBhcnJpdmluZy4gVGhlIDQgb3B0aW9ucyBhcmUgQ2xhbGl0LCBNYWNjYWJpLCBNZXVoZWRldCwgYW5kIExldW1pdC4gWW91IGNhbiBzd2l0Y2ggb25jZSBhIHllYXIgaW4gTm92ZW1iZXIuXCIsXG4gIFwiVGhlIFRldWRhdCBaZWh1dCAobmF0aW9uYWwgSUQpIGlzIHJlcXVpcmVkIGZvciBhbG1vc3QgZXZlcnl0aGluZyBpbiBJc3JhZWwuIEtlZXAgYSBwaG90b2NvcHkgYXQgaG9tZSBhbmQgYSBwaG90byBvbiB5b3VyIHBob25lIGF0IGFsbCB0aW1lcy5cIixcbiAgXCJBcm5vbmEgKG11bmljaXBhbCB0YXgpIGJpbGxzIGFyZSBzZW50IHR3aWNlIGEgeWVhci4gTmV3IG9saW0gbWF5IGJlIGVsaWdpYmxlIGZvciBhIGRpc2NvdW50IOKAlCBjaGVjayB3aXRoIHlvdXIgbG9jYWwgbXVuaWNpcGFsaXR5IHdpdGhpbiA5MCBkYXlzIG9mIGFycml2YWwuXCIsXG4gIFwiVG8gY29udmVydCB5b3VyIGZvcmVpZ24gZHJpdmluZyBsaWNlbmNlIGluIElzcmFlbCwgeW91IG1heSBiZSBleGVtcHQgZnJvbSB0YWtpbmcgYSBmdWxsIHRlc3QgaWYgeW91ciBjb3VudHJ5IGhhcyBhIHJlY2lwcm9jYWwgYWdyZWVtZW50LiBDaGVjayB3aXRoIE1pc3JhZCBIYVRhY2hidXJhLlwiLFxuXTtcblxubGV0IHF1ZXN0aW9ucyA9IFtcbiAge2lkOjEsdGl0bGU6XCJIb3cgZG8gSSBvcGVuIGEgYmFuayBhY2NvdW50IGFzIGEgbmV3IG9sZWg/XCIsYm9keTpcIkkganVzdCBhcnJpdmVkIGxhc3Qgd2VlayBhbmQgSSdtIHRyeWluZyB0byBvcGVuIGEgYmFuayBhY2NvdW50LiBXaGF0IGRvY3VtZW50cyBkbyBJIG5lZWQgYW5kIHdoaWNoIGJhbmsgaXMgbW9zdCBvbGVoLWZyaWVuZGx5P1wiLGNhdDonYmFua2luZycsYXV0aG9yOidTYXJhaCBNLicsZGF0ZTonMjAyNC0xMi0xNScsdmlld3M6MzQyLGxhbmc6J0VOJyxhbnN3ZXJzOltcbiAgICB7aWQ6MSxib2R5OlwiQmFuayBIYXBvYWxpbSBhbmQgQmFuayBMZXVtaSBib3RoIGhhdmUgZGVkaWNhdGVkIE9saW0gY2VudHJlcyB3aXRoIEVuZ2xpc2ggc3BlYWtpbmcgc3RhZmYuIEJyaW5nIHlvdXIgVGV1ZGF0IE9sZWgsIHBhc3Nwb3J0LCBhbmQgaWYgcG9zc2libGUgYSBwcm9vZiBvZiBhZGRyZXNzLiBUaGUgcHJvY2VzcyB1c3VhbGx5IHRha2VzIDEtMiB2aXNpdHMuIExldW1pJ3Mgb25saW5lIHByb2Nlc3MgaGFzIGltcHJvdmVkIGEgbG90IHJlY2VudGx5LlwiLGF1dGhvcjonRGF2aWQgSy4nLGRhdGU6JzIwMjQtMTItMTUnLHZvdGVzOjQ3LGZsYWdnZWQ6ZmFsc2UsdXNlclZvdGVkOmZhbHNlLGxhbmc6J0VOJ30sXG4gICAge2lkOjIsYm9keTpcIkkgdXNlZCBEaXNjb3VudCBCYW5rIGFuZCBoYWQgYSBncmVhdCBleHBlcmllbmNlLiBUaGV5IHNldCB1cCBteSBhY2NvdW50IHRoZSBzYW1lIGRheSBhbmQgZ2F2ZSBtZSBhbiBFbmdsaXNoLWxhbmd1YWdlIGFwcC4gQWxzbyB3b3J0aCBhc2tpbmcgYWJvdXQgemVyby1mZWUgYWNjb3VudHMgZm9yIG5ldyBvbGltIOKAlCBtYW55IGJhbmtzIG9mZmVyIHRoZW0gZm9yIHRoZSBmaXJzdCB5ZWFyLlwiLGF1dGhvcjonTWlyaWFtIFQuJyxkYXRlOicyMDI0LTEyLTE2Jyx2b3RlczozMSxmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOidFTid9LFxuICBdfSxcbiAge2lkOjIsdGl0bGU6XCJXaGljaCBLdXBhdCBIb2xpbSBzaG91bGQgSSBqb2luP1wiLGJvZHk6XCJJIG5lZWQgdG8gcmVnaXN0ZXIgd2l0aCBhIGhlYWx0aCBmdW5kLiBXaGF0IGFyZSB0aGUgbWFpbiBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBmb3VyIG9wdGlvbnMgYW5kIHdoaWNoIGlzIGJlc3QgZm9yIEVuZ2xpc2ggc3BlYWtlcnM/XCIsY2F0OidoZWFsdGgnLGF1dGhvcjonSmFtZXMgUi4nLGRhdGU6JzIwMjQtMTItMTAnLHZpZXdzOjI4OSxsYW5nOidFTicsYW5zd2VyczpbXG4gICAge2lkOjEsYm9keTpcIk1hY2NhYmkgaXMgZ2VuZXJhbGx5IGNvbnNpZGVyZWQgdGhlIG1vc3QgRW5nbGlzaC1mcmllbmRseSBhbmQgaGFzIGEgZ29vZCBhcHAuIENsYWxpdCBoYXMgdGhlIG1vc3QgZG9jdG9ycyBhbmQgY2xpbmljcyBidXQgdGhlIGFwcCBhbmQgc2VydmljZSBxdWFsaXR5IHZhcmllcy4gTWV1aGVkZXQgaXMgc3Ryb25nIGluIEplcnVzYWxlbS4gTGV1bWl0IGlzIHRoZSBzbWFsbGVzdCBidXQgb2Z0ZW4gaGFzIHNob3J0ZXIgd2FpdHMuXCIsYXV0aG9yOidZYWVsIFMuJyxkYXRlOicyMDI0LTEyLTExJyx2b3Rlczo1MixmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOidFTid9LFxuICBdfSxcbiAge2lkOjMsdGl0bGU6XCLXkNeZ15og16LXldeR15Mg15DXqNeg15XXoNeUINeV15DXnSDXnteS15nXoiDXnNeZINeU16DXl9eUP1wiLGJvZHk6XCLXp9eZ15HXnNeq15kg15fXqdeR15XXnyDXkNeo16DXldeg15Qg15XXkNeg15kg15zXkCDXkdeY15XXlyDXkNeZ15og157Xl9ep15HXmdedINeQ15XXqteVINeV15DXnSDXoteV15zXmdedINeX15PXqdeZ150g157Xp9eR15zXmdedINeU16TXl9eq15QuXCIsY2F0Oidob3VzaW5nJyxhdXRob3I6J9eo15XXoNefINeRLicsZGF0ZTonMjAyNC0xMi0wOCcsdmlld3M6MTc4LGxhbmc6J0hFJyxhbnN3ZXJzOltcbiAgICB7aWQ6MSxib2R5Olwi15DXqNeg15XXoNeUINeU15nXkCDXntehINei15nXqNeV16DXmSDXqdee16nXnNee15nXnSDXnNei15nXqNeZ15Qg15TXnten15XXnteZ16ouINei15XXnNeZ150g15fXk9ep15nXnSDXlteb15DXmdedINec15TXoNeX15QgKNeR15PXqNeaINeb15zXnCA3MC05MCUpINec16nXoNeUINeU16jXkNep15XXoNeULiDXpteo15nXmiDXnNek16DXldeqINec16LXmdeo15nXlCDXlNee16fXldee15nXqiDXotedINeq16LXldeT16og15TXoteV15zXlCDXqteV15ogOTAg15nXldedINee15TXktei15QuINeQ15wg16rXpNeh16TXodeVINeQ16og15TXl9ec15XXnyDXlNeW15QhXCIsYXV0aG9yOifXmdei15wg16kuJyxkYXRlOicyMDI0LTEyLTA5Jyx2b3RlczozOSxmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOidIRSd9LFxuICBdfSxcbiAge2lkOjQsdGl0bGU6XCJCZXN0IG1vYmlsZSBwaG9uZSBwcm92aWRlciBmb3Igb2xpbT9cIixib2R5OlwiV2hhdCBTSU0gY2FyZCBvciBjb250cmFjdCBzaG91bGQgSSBnZXQ/IEkgbmVlZCBnb29kIGRhdGEgYW5kIGFmZm9yZGFibGUgY2FsbHMgdG8gdGhlIFVLLlwiLGNhdDonaW50ZXJuZXQnLGF1dGhvcjonRW1tYSBMLicsZGF0ZTonMjAyNC0xMi0wNScsdmlld3M6MjAxLGxhbmc6J0VOJyxhbnN3ZXJzOltcbiAgICB7aWQ6MSxib2R5OlwiR29sYW4gVGVsZWNvbSBpcyB0aGUgYmVzdCB2YWx1ZSBmb3IgbW9zdCBvbGltIOKAlCBhcm91bmQg4oKqMzAvbW9udGggZm9yIHVubGltaXRlZCBkYXRhIGFuZCBjYWxscy4gUGFydG5lciBhbmQgQ2VsbGNvbSBhcmUgbW9yZSBleHBlbnNpdmUgYnV0IGhhdmUgYmV0dGVyIGNvdmVyYWdlIGluIHNvbWUgYXJlYXMuIEZvciBpbnRlcm5hdGlvbmFsIGNhbGxzIHRvIHRoZSBVSywgZ2V0IGEgV2hhdHNBcHAgbnVtYmVyIG9yIHVzZSBHb2xhbidzIGludGVybmF0aW9uYWwgYWRkLW9uLlwiLGF1dGhvcjonQXZpIEMuJyxkYXRlOicyMDI0LTEyLTA2Jyx2b3RlczoyOCxmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOidFTid9LFxuICBdfSxcbl07XG5cbmxldCBuZXh0UUlkID0gNSwgbmV4dEFJZCA9IDEwO1xubGV0IGN1cnJlbnRDYXQgPSBudWxsLCBjdXJyZW50UUlkID0gbnVsbCwgcHJldlBhZ2UgPSAnZm9ydW0nLCBjdXJyZW50TGFuZyA9ICdFTic7XG5cbmNvbnN0IExBTkdTID0gW1xuICB7Y29kZTonRU4nLGZsYWc6J/Cfh6zwn4enJyxuYW1lOidFbmdsaXNoJywgIG5hdGl2ZTonRW5nbGlzaCd9LFxuICB7Y29kZTonSEUnLGZsYWc6J/Cfh67wn4exJyxuYW1lOidIZWJyZXcnLCAgIG5hdGl2ZTon16LXkdeo15nXqid9LFxuICB7Y29kZTonUlUnLGZsYWc6J/Cfh7fwn4e6JyxuYW1lOidSdXNzaWFuJywgIG5hdGl2ZTon0KDRg9GB0YHQutC40LknfSxcbiAge2NvZGU6J0ZSJyxmbGFnOifwn4er8J+HtycsbmFtZTonRnJlbmNoJywgICBuYXRpdmU6J0ZyYW7Dp2Fpcyd9LFxuICB7Y29kZTonRVMnLGZsYWc6J/Cfh6rwn4e4JyxuYW1lOidTcGFuaXNoJywgIG5hdGl2ZTonRXNwYcOxb2wnfSxcbiAge2NvZGU6J0FSJyxmbGFnOifwn4em8J+HqicsbmFtZTonQXJhYmljJywgICBuYXRpdmU6J9in2YTYudix2KjZitipJ30sXG4gIHtjb2RlOidBTScsZmxhZzon8J+HqvCfh7knLG5hbWU6J0FtaGFyaWMnLCAgbmF0aXZlOifhiqDhiJvhiK3hipsnfSxcbiAge2NvZGU6J1BUJyxmbGFnOifwn4en8J+HtycsbmFtZTonUG9ydHVndWVzZScsbmF0aXZlOidQb3J0dWd1w6pzJ30sXG5dO1xuXG5jb25zdCBDSEVDS0xJU1QgPSBbXG4gIHtzZWN0aW9uOidGaXJzdCAzMCBEYXlzJywgaWNvbjon8J+agCcsIGl0ZW1zOltcbiAgICAnQ29sbGVjdCBUZXVkYXQgT2xlaCBmcm9tIHRoZSBhaXJwb3J0IG9yIE1pc3JhZCBIYUFsaXlhaCcsXG4gICAgJ1JlZ2lzdGVyIGF0IE1pc3JhZCBIYUFsaXlhaCAoTWluaXN0cnkgb2YgQWxpeWFoKSBmb3IgYmVuZWZpdHMnLFxuICAgICdBcHBseSBmb3IgVGV1ZGF0IFplaHV0IChOYXRpb25hbCBJRCkgYXQgTWlzcmFkIEhhcG5pbScsXG4gICAgJ1JlZ2lzdGVyIHdpdGggYSBLdXBhdCBIb2xpbSAoaGVhbHRoIGZ1bmQpJyxcbiAgICAnT3BlbiBhIGJhbmsgYWNjb3VudCcsXG4gICAgJ0Vucm9sIGluIFVscGFuIChIZWJyZXcgbGFuZ3VhZ2UgY291cnNlKScsXG4gICAgJ1JlZ2lzdGVyIGNoaWxkcmVuIGF0IGxvY2FsIHNjaG9vbCcsXG4gIF19LFxuICB7c2VjdGlvbjonRmlyc3QgMyBNb250aHMnLCBpY29uOifwn5OFJywgaXRlbXM6W1xuICAgICdBcHBseSBmb3IgQXJub25hIChtdW5pY2lwYWwgdGF4KSBkaXNjb3VudCBhdCBsb2NhbCBJcml5YScsXG4gICAgJ1RyYW5zZmVyIG9yIG9idGFpbiBJc3JhZWxpIGRyaXZpbmcgbGljZW5jZScsXG4gICAgJ0FwcGx5IGZvciBCaXR1YWNoIExldW1pIChOYXRpb25hbCBJbnN1cmFuY2UpJyxcbiAgICAnU2V0IHVwIGludGVybmV0IGF0IGhvbWUnLFxuICAgICdSZWdpc3RlciB3aXRoIGEgbG9jYWwgZG9jdG9yICjXqNeV16TXkCDXntep16TXl9eUKScsXG4gICAgJ0pvaW4gbG9jYWwgb2xpbSBGYWNlYm9vay9XaGF0c0FwcCBncm91cHMnLFxuICBdfSxcbiAge3NlY3Rpb246J0ZpcnN0IFllYXInLCBpY29uOifwn5OGJywgaXRlbXM6W1xuICAgICdGaWxlIHlvdXIgZmlyc3QgSXNyYWVsaSB0YXggcmV0dXJuIGlmIHJlcXVpcmVkJyxcbiAgICAnUmV2aWV3IHlvdXIgS3VwYXQgSG9saW0g4oCUIHlvdSBjYW4gc3dpdGNoIGV2ZXJ5IE5vdmVtYmVyJyxcbiAgICAnQ2hlY2sgZW50aXRsZW1lbnQgdG8gT2xlaCBtb3J0Z2FnZSBiZW5lZml0cyAoTWlzaGthbnRhKScsXG4gICAgJ0FwcGx5IGZvciBhbnkgcmVtYWluaW5nIFNhbCBLbGl0YSAoYWJzb3JwdGlvbiBiYXNrZXQpIHBheW1lbnRzJyxcbiAgICAnR2V0IHlvdXIgSXNyYWVsaSBkcml2aW5nIGxpY2VuY2UgaWYgeW91IGhhdmVuXFwndCBhbHJlYWR5JyxcbiAgXX0sXG5dO1xuXG5mdW5jdGlvbiBzaG93UGFnZShwLCBkYXRhKXtcbiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnBhZ2UnKS5mb3JFYWNoKHg9PnguY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJykpO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFnZS0nK3ApLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpO1xuICBpZihwPT09J2hvbWUnKSByZW5kZXJIb21lQ2F0cygpO1xuICBpZihwPT09J2ZvcnVtJykgcmVuZGVyRm9ydW0oKTtcbiAgaWYocD09PSdiZXN0b2YnKSByZW5kZXJCZXN0T2YoKTtcbiAgaWYocD09PSdjaGVja2xpc3QnKSByZW5kZXJDaGVja2xpc3QoKTtcbiAgaWYocD09PSdzZWFyY2gnKSByZW5kZXJUYWdDbG91ZCgpO1xuICBpZihwPT09J2NhdHMnKSByZW5kZXJDYXRzUGFnZSgpO1xuICBpZihwPT09J2NhdGVnb3J5JyYmZGF0YSl7Y3VycmVudENhdD1kYXRhO3JlbmRlckNhdGVnb3J5UGFnZSgpO31cbiAgaWYocD09PSdxdWVzdGlvbicmJmRhdGEpe2N1cnJlbnRRSWQ9ZGF0YTtyZW5kZXJRdWVzdGlvbigpO31cbiAgd2luZG93LnNjcm9sbFRvKDAsMCk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckhvbWVDYXRzKCl7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdob21lLWNhdHMnKS5pbm5lckhUTUwgPSBDQVRFR09SSUVTLm1hcChjPT5gXG4gICAgPGRpdiBjbGFzcz1cImNhdC1jYXJkXCIgb25jbGljaz1cInByZXZQYWdlPSdob21lJztzaG93UGFnZSgnY2F0ZWdvcnknLCcke2MuaWR9JylcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXQtaWNvblwiPiR7Yy5pY29ufTwvZGl2PlxuICAgICAgPGg0PiR7Yy5uYW1lfTwvaDQ+XG4gICAgICA8cD4ke2MuZGVzY308L3A+XG4gICAgICA8cCBzdHlsZT1cImZvbnQtc2l6ZTowLjcycmVtO2NvbG9yOnZhcigtLWJsdWUpO21hcmdpbi10b3A6NnB4O2ZvbnQtd2VpZ2h0OjYwMFwiPiR7cXVlc3Rpb25zLmZpbHRlcihxPT5xLmNhdD09PWMuaWQpLmxlbmd0aH0gcXVlc3Rpb25zPC9wPlxuICAgIDwvZGl2PmApLmpvaW4oJycpO1xuICBjb25zdCB0aXBzID0gVElQUztcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RpcC10ZXh0JykudGV4dENvbnRlbnQgPSB0aXBzW01hdGguZmxvb3IoRGF0ZS5ub3coKS84NjQwMDAwMCkldGlwcy5sZW5ndGhdO1xufVxuXG5mdW5jdGlvbiBzb3J0UXVlc3Rpb25zKHFzLCBtZXRob2Qpe1xuICByZXR1cm4gWy4uLnFzXS5zb3J0KChhLGIpPT57XG4gICAgaWYobWV0aG9kPT09J25ld2VzdCcpIHJldHVybiBiLmlkLWEuaWQ7XG4gICAgaWYobWV0aG9kPT09J21vc3RfYW5zd2VycycpIHJldHVybiBiLmFuc3dlcnMubGVuZ3RoLWEuYW5zd2Vycy5sZW5ndGg7XG4gICAgaWYobWV0aG9kPT09J2hpZ2hlc3RfcmF0ZWQnKSByZXR1cm4gbWF4Vm90ZXMoYiktbWF4Vm90ZXMoYSk7XG4gICAgaWYobWV0aG9kPT09J21vc3Rfdmlld2VkJykgcmV0dXJuIGIudmlld3MtYS52aWV3cztcbiAgICByZXR1cm4gYi5pZC1hLmlkO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gbWF4Vm90ZXMocSl7cmV0dXJuIHEuYW5zd2Vycy5sZW5ndGg/TWF0aC5tYXgoLi4ucS5hbnN3ZXJzLm1hcChhPT5hLnZvdGVzKSk6MDt9XG5mdW5jdGlvbiBhdmdWb3RlcyhxKXtyZXR1cm4gcS5hbnN3ZXJzLmxlbmd0aD9xLmFuc3dlcnMucmVkdWNlKChzLGEpPT5zK2Eudm90ZXMsMCkvcS5hbnN3ZXJzLmxlbmd0aDowO31cblxuZnVuY3Rpb24gcmVuZGVyRm9ydW0oKXtcbiAgY29uc3Qgc29ydCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb3J1bS1zb3J0Jyk/LnZhbHVlfHwnbmV3ZXN0JztcbiAgY29uc3QgcXMgPSBzb3J0UXVlc3Rpb25zKHF1ZXN0aW9ucywgc29ydCk7XG4gIGNvbnN0IGNhdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLWNhdCcpO1xuICBpZihjYXQpIGNhdC5pbm5lckhUTUw9JzxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3QgYSBjYXRlZ29yeS4uLjwvb3B0aW9uPicrQ0FURUdPUklFUy5tYXAoYz0+YDxvcHRpb24gdmFsdWU9XCIke2MuaWR9XCI+JHtjLmljb259ICR7Yy5uYW1lfTwvb3B0aW9uPmApLmpvaW4oJycpO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ydW0tbGlzdCcpLmlubmVySFRNTCA9IHFzLmxlbmd0aCA/IHFzLm1hcChxPT5xQ2FyZChxLCdmb3J1bScpKS5qb2luKCcnKSA6IGVtcHR5U3RhdGUoJ05vIHF1ZXN0aW9ucyB5ZXQuIEJlIHRoZSBmaXJzdCB0byBhc2shJyk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckNhdGVnb3J5UGFnZSgpe1xuICBjb25zdCBjYXQgPSBDQVRFR09SSUVTLmZpbmQoYz0+Yy5pZD09PWN1cnJlbnRDYXQpO1xuICBpZighY2F0KSByZXR1cm47XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXQtcGFnZS10aXRsZScpLnRleHRDb250ZW50ID0gY2F0Lmljb24rJyAnK2NhdC5uYW1lO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0LXBhZ2UtZGVzYycpLnRleHRDb250ZW50ID0gY2F0LmRlc2M7XG4gIGNvbnN0IHNvcnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0LXNvcnQnKT8udmFsdWV8fCduZXdlc3QnO1xuICBjb25zdCBxcyA9IHNvcnRRdWVzdGlvbnMocXVlc3Rpb25zLmZpbHRlcihxPT5xLmNhdD09PWN1cnJlbnRDYXQpLCBzb3J0KTtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdC1wYWdlLWxpc3QnKS5pbm5lckhUTUwgPSBxcy5sZW5ndGggPyBxcy5tYXAocT0+cUNhcmQocSwnY2F0ZWdvcnknKSkuam9pbignJykgOiBlbXB0eVN0YXRlKCdObyBxdWVzdGlvbnMgaW4gdGhpcyBjYXRlZ29yeSB5ZXQuJyk7XG59XG5cbmZ1bmN0aW9uIHFDYXJkKHEsZnJvbSl7XG4gIGNvbnN0IHRvcFZvdGVzID0gcS5hbnN3ZXJzLmxlbmd0aD9NYXRoLm1heCguLi5xLmFuc3dlcnMubWFwKGE9PmEudm90ZXMpKTowO1xuICBjb25zdCBjYXQgPSBDQVRFR09SSUVTLmZpbmQoYz0+Yy5pZD09PXEuY2F0KTtcbiAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwicS1jYXJkXCIgb25jbGljaz1cInByZXZQYWdlPScke2Zyb219JztzaG93UGFnZSgncXVlc3Rpb24nLCR7cS5pZH0pXCI+XG4gICAgPGRpdiBjbGFzcz1cInEtbWV0YVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJxLWNhdC1iYWRnZVwiPiR7Y2F0P2NhdC5pY29uKycgJytjYXQubmFtZTpxLmNhdH08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInEtYXV0aG9yXCI+8J+RpCAke3EuYXV0aG9yfTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicS1kYXRlXCI+8J+ThSAke3EuZGF0ZX08L3NwYW4+XG4gICAgICAke3RvcFZvdGVzPj0zMD9gPHNwYW4gY2xhc3M9XCJmZWF0dXJlZC1iYWRnZVwiPuKtkCBGZWF0dXJlZDwvc3Bhbj5gOicnfVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJxLXRpdGxlXCI+JHtxLnRpdGxlfTwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJxLXByZXZpZXdcIj4ke3EuYm9keS5zdWJzdHJpbmcoMCwxMjApfSR7cS5ib2R5Lmxlbmd0aD4xMjA/Jy4uLic6Jyd9PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInEtc3RhdHNcIj5cbiAgICAgIDxzcGFuPvCfkqwgJHtxLmFuc3dlcnMubGVuZ3RofSBhbnN3ZXIke3EuYW5zd2Vycy5sZW5ndGghPT0xPydzJzonJ308L3NwYW4+XG4gICAgICA8c3Bhbj7wn5GBICR7cS52aWV3c30gdmlld3M8L3NwYW4+XG4gICAgICA8c3Bhbj7irZAgVG9wIHZvdGU6ICR7dG9wVm90ZXN9PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOjZweFwiPiR7bGFuZ0JhZGdlKHEubGFuZyl9PC9kaXY+XG4gIDwvZGl2PmA7XG59XG5cbmZ1bmN0aW9uIHJlbmRlclF1ZXN0aW9uKCl7XG4gIGNvbnN0IHEgPSBxdWVzdGlvbnMuZmluZCh4PT54LmlkPT09Y3VycmVudFFJZCk7XG4gIGlmKCFxKXtyZXR1cm47fVxuICBxLnZpZXdzKys7XG4gIGNvbnN0IGNhdCA9IENBVEVHT1JJRVMuZmluZChjPT5jLmlkPT09cS5jYXQpO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1mdWxsLWNvbnRlbnQnKS5pbm5lckhUTUw9YFxuICAgIDxkaXYgY2xhc3M9XCJxLW1ldGFcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206MTJweFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJxLWNhdC1iYWRnZVwiIHN0eWxlPVwiY3Vyc29yOnBvaW50ZXJcIiBvbmNsaWNrPVwic2hvd1BhZ2UoJ2NhdGVnb3J5JywnJHtxLmNhdH0nKVwiPiR7Y2F0P2NhdC5pY29uKycgJytjYXQubmFtZTpxLmNhdH08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInEtYXV0aG9yXCI+8J+RpCAke3EuYXV0aG9yfTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicS1kYXRlXCI+8J+ThSAke3EuZGF0ZX08L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGgyPiR7cS50aXRsZX08L2gyPlxuICAgIDxkaXYgY2xhc3M9XCJib2R5XCIgc3R5bGU9XCJtYXJnaW4tdG9wOjEycHhcIj4ke3EuYm9keX08L2Rpdj5gO1xuICBjb25zdCBzb3J0ZWQgPSBbLi4ucS5hbnN3ZXJzXS5zb3J0KChhLGIpPT5iLnZvdGVzLWEudm90ZXMpO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zd2Vycy1jb3VudCcpLnRleHRDb250ZW50ID0gYCR7cS5hbnN3ZXJzLmxlbmd0aH0gQW5zd2VyJHtxLmFuc3dlcnMubGVuZ3RoIT09MT8ncyc6Jyd9YDtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fuc3dlcnMtbGlzdCcpLmlubmVySFRNTCA9IHNvcnRlZC5sZW5ndGggPyBzb3J0ZWQubWFwKChhLGkpPT5gXG4gICAgPGRpdiBjbGFzcz1cImFuc3dlci1jYXJkICR7aT09PTAmJmEudm90ZXM+MD8ndG9wLWFuc3dlcic6Jyd9XCI+XG4gICAgICAke2k9PT0wJiZhLnZvdGVzPjA/JzxkaXYgY2xhc3M9XCJ0b3AtYW5zd2VyLWxhYmVsXCI+4q2QIFRvcCBBbnN3ZXI8L2Rpdj4nOicnfVxuICAgICAgPGRpdiBjbGFzcz1cImFuc3dlci1ib2R5XCI+JHthLmJvZHl9PC9kaXY+XG4gICAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLWJvdHRvbTo4cHhcIj4ke2xhbmdCYWRnZShhLmxhbmcpfTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImFuc3dlci1mb290ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFuc3dlci1tZXRhXCI+8J+RpCAke2EuYXV0aG9yfSDCtyDwn5OFICR7YS5kYXRlfTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidm90ZS1idG5zXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInZvdGUtYnRuICR7YS51c2VyVm90ZWQ/J2xpa2VkJzonJ31cIiBvbmNsaWNrPVwidm90ZSgke3EuaWR9LCR7YS5pZH0pXCI+XG4gICAgICAgICAgICDwn5GNICR7YS52b3Rlc31cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZmxhZy1idG5cIiBvbmNsaWNrPVwiZmxhZ0Fuc3dlcigke3EuaWR9LCR7YS5pZH0pXCI+8J+aqSAke2EuZmxhZ2dlZD8nRmxhZ2dlZCc6J0ZsYWcnfTwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgJHthLmZsYWdnZWQ/JzxkaXYgc3R5bGU9XCJmb250LXNpemU6MC43NXJlbTtjb2xvcjp2YXIoLS1yZWQpO21hcmdpbi10b3A6OHB4XCI+4pqg77iPIFRoaXMgYW5zd2VyIGhhcyBiZWVuIGZsYWdnZWQgZm9yIHJldmlldy4gUGxlYXNlIHZlcmlmeSB3aXRoIG9mZmljaWFsIHNvdXJjZXMuPC9kaXY+JzonJ31cbiAgICA8L2Rpdj5gKS5qb2luKCcnKSA6ICc8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGVcIj48ZGl2IGNsYXNzPVwiaWNvblwiPvCfkqw8L2Rpdj48cD5ObyBhbnN3ZXJzIHlldC4gQmUgdGhlIGZpcnN0IHRvIGhlbHAhPC9wPjwvZGl2Pic7XG59XG5cbmZ1bmN0aW9uIGdvQmFjaygpe3Nob3dQYWdlKHByZXZQYWdlPT09J2NhdGVnb3J5Jz8nY2F0ZWdvcnknOidmb3J1bScsIHByZXZQYWdlPT09J2NhdGVnb3J5Jz9jdXJyZW50Q2F0Om51bGwpO31cblxuZnVuY3Rpb24gdG9nZ2xlQXNrQmFyKCl7XG4gIGNvbnN0IGIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXNrLWJhcicpO1xuICBiLnN0eWxlLmRpc3BsYXkgPSBiLnN0eWxlLmRpc3BsYXk9PT0nbm9uZSc/J2Jsb2NrJzonbm9uZSc7XG59XG5mdW5jdGlvbiBjYW5jZWxBc2soKXtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtdGl0bGUnKS52YWx1ZT0nJztcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtYm9keScpLnZhbHVlPScnO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1jYXQnKS52YWx1ZT0nJztcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtbmFtZScpLnZhbHVlPScnO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXNrLWJhcicpLnN0eWxlLmRpc3BsYXk9J25vbmUnO1xufVxuZnVuY3Rpb24gcmVuZGVyQ2F0c1BhZ2UoKXtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdHMtZ3JpZCcpLmlubmVySFRNTCA9IENBVEVHT1JJRVMubWFwKGM9PmBcbiAgICA8ZGl2IGNsYXNzPVwiY2F0LWNhcmRcIiBvbmNsaWNrPVwicHJldlBhZ2U9J2NhdHMnO3Nob3dQYWdlKCdjYXRlZ29yeScsJyR7Yy5pZH0nKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhdC1pY29uXCI+JHtjLmljb259PC9kaXY+XG4gICAgICA8aDQ+JHtjLm5hbWV9PC9oND5cbiAgICAgIDxwPiR7Yy5kZXNjfTwvcD5cbiAgICAgIDxwIHN0eWxlPVwiZm9udC1zaXplOjAuNzJyZW07Y29sb3I6dmFyKC0tYmx1ZSk7bWFyZ2luLXRvcDo2cHg7Zm9udC13ZWlnaHQ6NjAwXCI+JHtxdWVzdGlvbnMuZmlsdGVyKHE9PnEuY2F0PT09Yy5pZCkubGVuZ3RofSBxdWVzdGlvbnM8L3A+XG4gICAgPC9kaXY+YCkuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIHN1Ym1pdFF1ZXN0aW9uKCl7XG4gIGNvbnN0IHRpdGxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtdGl0bGUnKS52YWx1ZS50cmltKCk7XG4gIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1ib2R5JykudmFsdWUudHJpbSgpO1xuICBjb25zdCBjYXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1jYXQnKS52YWx1ZTtcbiAgY29uc3QgbmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLW5hbWUnKS52YWx1ZS50cmltKCl8fCdBbm9ueW1vdXMnO1xuICBpZighdGl0bGV8fCFib2R5fHwhY2F0KXtzaG93VG9hc3QoJ1BsZWFzZSBmaWxsIGluIGFsbCBmaWVsZHMg4p2MJyk7cmV0dXJuO31cbiAgcXVlc3Rpb25zLnVuc2hpZnQoe2lkOm5leHRRSWQrKyx0aXRsZSxib2R5LGNhdCxhdXRob3I6bmFtZSxkYXRlOm5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zbGljZSgwLDEwKSx2aWV3czowLGxhbmc6Y3VycmVudExhbmcsYW5zd2VyczpbXX0pO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS10aXRsZScpLnZhbHVlPScnO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1ib2R5JykudmFsdWU9Jyc7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLWNhdCcpLnZhbHVlPScnO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1uYW1lJykudmFsdWU9Jyc7XG4gIHRvZ2dsZUFza0JhcigpO1xuICByZW5kZXJGb3J1bSgpO1xuICBzaG93VG9hc3QoJ1F1ZXN0aW9uIHBvc3RlZCEg4pyFJyk7XG59XG5cbmZ1bmN0aW9uIHN1Ym1pdEFuc3dlcigpe1xuICBjb25zdCBxID0gcXVlc3Rpb25zLmZpbmQoeD0+eC5pZD09PWN1cnJlbnRRSWQpO1xuICBpZighcSkgcmV0dXJuO1xuICBjb25zdCBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fucy1ib2R5JykudmFsdWUudHJpbSgpO1xuICBjb25zdCBuYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fucy1uYW1lJykudmFsdWUudHJpbSgpfHwnQW5vbnltb3VzJztcbiAgaWYoIWJvZHkpe3Nob3dUb2FzdCgnUGxlYXNlIHdyaXRlIGFuIGFuc3dlciDinYwnKTtyZXR1cm47fVxuICBxLmFuc3dlcnMucHVzaCh7aWQ6bmV4dEFJZCsrLGJvZHksYXV0aG9yOm5hbWUsZGF0ZTpuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwxMCksdm90ZXM6MCxmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOmN1cnJlbnRMYW5nfSk7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbnMtYm9keScpLnZhbHVlPScnO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zLW5hbWUnKS52YWx1ZT0nJztcbiAgcmVuZGVyUXVlc3Rpb24oKTtcbiAgc2hvd1RvYXN0KCdBbnN3ZXIgcG9zdGVkISDinIUnKTtcbn1cblxuZnVuY3Rpb24gdm90ZShxSWQsYUlkKXtcbiAgY29uc3QgcSA9IHF1ZXN0aW9ucy5maW5kKHg9PnguaWQ9PT1xSWQpO1xuICBjb25zdCBhID0gcT8uYW5zd2Vycy5maW5kKHg9PnguaWQ9PT1hSWQpO1xuICBpZighYSkgcmV0dXJuO1xuICBhLnVzZXJWb3RlZD0hYS51c2VyVm90ZWQ7XG4gIGEudm90ZXMrPWEudXNlclZvdGVkPzE6LTE7XG4gIHJlbmRlclF1ZXN0aW9uKCk7XG59XG5cbmZ1bmN0aW9uIGZsYWdBbnN3ZXIocUlkLGFJZCl7XG4gIGNvbnN0IHEgPSBxdWVzdGlvbnMuZmluZCh4PT54LmlkPT09cUlkKTtcbiAgY29uc3QgYSA9IHE/LmFuc3dlcnMuZmluZCh4PT54LmlkPT09YUlkKTtcbiAgaWYoIWEpIHJldHVybjtcbiAgYS5mbGFnZ2VkPSFhLmZsYWdnZWQ7XG4gIHJlbmRlclF1ZXN0aW9uKCk7XG4gIHNob3dUb2FzdChhLmZsYWdnZWQ/J0Fuc3dlciBmbGFnZ2VkIGZvciByZXZpZXcg8J+aqSc6J0ZsYWcgcmVtb3ZlZCcpO1xufVxuXG5mdW5jdGlvbiByZW5kZXJCZXN0T2YoZmlsdGVyQ2F0KXtcbiAgY29uc3QgZmlsdGVycyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZXN0b2YtZmlsdGVycycpO1xuICBmaWx0ZXJzLmlubmVySFRNTCA9IENBVEVHT1JJRVMubWFwKGM9PmA8YnV0dG9uIGNsYXNzPVwiZmlsdGVyLWJ0blwiIG9uY2xpY2s9XCJmaWx0ZXJCZXN0T2YoJyR7Yy5pZH0nLHRoaXMpXCI+JHtjLmljb259ICR7Yy5uYW1lfTwvYnV0dG9uPmApLmpvaW4oJycpO1xuICBjb25zdCB0aHJlc2hvbGQgPSAyMDtcbiAgbGV0IHFzID0gcXVlc3Rpb25zLmZpbHRlcihxPT5tYXhWb3RlcyhxKT49dGhyZXNob2xkIHx8IGF2Z1ZvdGVzKHEpPj0xNSk7XG4gIGlmKGZpbHRlckNhdCYmZmlsdGVyQ2F0IT09J2FsbCcpIHFzPXFzLmZpbHRlcihxPT5xLmNhdD09PWZpbHRlckNhdCk7XG4gIHFzLnNvcnQoKGEsYik9Pm1heFZvdGVzKGIpLW1heFZvdGVzKGEpKTtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jlc3RvZi1saXN0JykuaW5uZXJIVE1MID0gcXMubGVuZ3RoXG4gICAgPyBgPHAgc3R5bGU9XCJmb250LXNpemU6MC44MnJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLWJvdHRvbToxNnB4XCI+U2hvd2luZyAke3FzLmxlbmd0aH0gaGlnaGx5LXJhdGVkIHF1ZXN0aW9uJHtxcy5sZW5ndGghPT0xPydzJzonJ308L3A+YCtxcy5tYXAocT0+cUNhcmQocSwnYmVzdG9mJykpLmpvaW4oJycpXG4gICAgOiBlbXB0eVN0YXRlKCdBcyB0aGUgY29tbXVuaXR5IGdyb3dzLCB0b3AtcmF0ZWQgYW5zd2VycyB3aWxsIGFwcGVhciBoZXJlLiBTdGFydCBhbnN3ZXJpbmcgcXVlc3Rpb25zIScpO1xufVxuXG5mdW5jdGlvbiBmaWx0ZXJCZXN0T2YoY2F0LGJ0bil7XG4gIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5maWx0ZXItYnRuJykuZm9yRWFjaChiPT5iLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpKTtcbiAgaWYoYnRuKSBidG4uY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7XG4gIHJlbmRlckJlc3RPZihjYXQ9PT0nYWxsJz9udWxsOmNhdCk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckNoZWNrbGlzdCgpe1xuICBjb25zdCBzYXZlZCA9IHt9O1xuICB0cnl7Y29uc3Qgcz1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdjaGVja2xpc3QnKTtpZihzKU9iamVjdC5hc3NpZ24oc2F2ZWQsSlNPTi5wYXJzZShzKSk7fWNhdGNoKGUpe31cbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoZWNrbGlzdC1jb250ZW50JykuaW5uZXJIVE1MID0gQ0hFQ0tMSVNULm1hcCgocyxzaSk9PmBcbiAgICA8ZGl2IGNsYXNzPVwiY2hlY2tsaXN0LXNlY3Rpb25cIj5cbiAgICAgIDxoMz4ke3MuaWNvbn0gJHtzLnNlY3Rpb259PC9oMz5cbiAgICAgICR7cy5pdGVtcy5tYXAoKGl0ZW0saWkpPT57XG4gICAgICAgIGNvbnN0IGtleT1gJHtzaX0tJHtpaX1gO1xuICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJjaGVja2xpc3QtaXRlbVwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImNoay0ke2tleX1cIiAke3NhdmVkW2tleV0/J2NoZWNrZWQnOicnfSBvbmNoYW5nZT1cInNhdmVDaGVjaygnJHtrZXl9Jyx0aGlzLmNoZWNrZWQpXCIgLz5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiY2hrLSR7a2V5fVwiPiR7aXRlbX08L2xhYmVsPlxuICAgICAgICA8L2Rpdj5gO1xuICAgICAgfSkuam9pbignJyl9XG4gICAgPC9kaXY+YCkuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIHNhdmVDaGVjayhrZXksdmFsKXtcbiAgdHJ5e1xuICAgIGNvbnN0IHM9c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY2hlY2tsaXN0Jyk7XG4gICAgY29uc3QgZGF0YT1zP0pTT04ucGFyc2Uocyk6e307XG4gICAgZGF0YVtrZXldPXZhbDtcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdjaGVja2xpc3QnLEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgfWNhdGNoKGUpe31cbn1cblxuZnVuY3Rpb24gcmVuZGVyVGFnQ2xvdWQoKXtcbiAgY29uc3QgdGFncz1bJ0JhbmtpbmcnLCdIZWFsdGggSW5zdXJhbmNlJywnVGV1ZGF0IFplaHV0JywnS3VwYXQgSG9saW0nLCdUYXgnLCdBcm5vbmEnLCdCaXR1YWNoIExldW1pJywnVWxwYW4nLCdJbnRlcm5ldCcsJ1Bob25lJywnSG91c2luZycsJ0RyaXZpbmcgTGljZW5jZScsJ1NjaG9vbCcsJ0VtcGxveW1lbnQnLCdNaXNyYWQgSGFwbmltJ107XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YWctY2xvdWQnKS5pbm5lckhUTUw9dGFncy5tYXAodD0+YDxzcGFuIGNsYXNzPVwidGFnLWNsb3VkLWl0ZW1cIiBvbmNsaWNrPVwic2VhcmNoVGFnKCcke3R9JylcIj4ke3R9PC9zcGFuPmApLmpvaW4oJycpO1xufVxuXG5mdW5jdGlvbiBzZWFyY2hUYWcodCl7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWFyY2gtaW5wdXQnKS52YWx1ZT10O1xuICBkb1NlYXJjaCgpO1xufVxuXG5mdW5jdGlvbiBkb1NlYXJjaCgpe1xuICBjb25zdCB0ZXJtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlYXJjaC1pbnB1dCcpLnZhbHVlLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICBpZighdGVybSl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlYXJjaC1yZXN1bHRzJykuaW5uZXJIVE1MPScnO3JldHVybjt9XG4gIGNvbnN0IHJlc3VsdHMgPSBxdWVzdGlvbnMuZmlsdGVyKHE9PlxuICAgIHEudGl0bGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKXx8XG4gICAgcS5ib2R5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSl8fFxuICAgIHEuYW5zd2Vycy5zb21lKGE9PmEuYm9keS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pKXx8XG4gICAgKENBVEVHT1JJRVMuZmluZChjPT5jLmlkPT09cS5jYXQpPy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSkpXG4gICk7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWFyY2gtcmVzdWx0cycpLmlubmVySFRNTCA9IHJlc3VsdHMubGVuZ3RoXG4gICAgPyBgPHAgc3R5bGU9XCJmb250LXNpemU6MC44MnJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLWJvdHRvbToxNnB4XCI+JHtyZXN1bHRzLmxlbmd0aH0gcmVzdWx0JHtyZXN1bHRzLmxlbmd0aCE9PTE/J3MnOicnfSBmb3IgXCI8c3Ryb25nPiR7dGVybX08L3N0cm9uZz5cIjwvcD5gK3Jlc3VsdHMubWFwKHE9PnFDYXJkKHEsJ3NlYXJjaCcpKS5qb2luKCcnKVxuICAgIDogYDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiPjxkaXYgY2xhc3M9XCJpY29uXCI+8J+UjTwvZGl2PjxwPk5vIHJlc3VsdHMgZm91bmQgZm9yIFwiPHN0cm9uZz4ke3Rlcm19PC9zdHJvbmc+XCIuIFRyeSBhIGRpZmZlcmVudCBrZXl3b3JkIG9yIDxhIGhyZWY9XCIjXCIgb25jbGljaz1cInNob3dQYWdlKCdmb3J1bScpO3JldHVybiBmYWxzZTtcIiBzdHlsZT1cImNvbG9yOnZhcigtLWJsdWUpXCI+YXNrIGEgcXVlc3Rpb248L2E+ITwvcD48L2Rpdj5gO1xufVxuXG5mdW5jdGlvbiBsYW5nRmxhZyhjb2RlKXtyZXR1cm4gKExBTkdTLmZpbmQobD0+bC5jb2RlPT09Y29kZSl8fHtmbGFnOifwn4yQJ30pLmZsYWc7fVxuZnVuY3Rpb24gbGFuZ05hbWUoY29kZSl7cmV0dXJuIChMQU5HUy5maW5kKGw9PmwuY29kZT09PWNvZGUpfHx7bmFtZTpjb2RlfSkubmFtZTt9XG5mdW5jdGlvbiBsYW5nTmF0aXZlKGNvZGUpe3JldHVybiAoTEFOR1MuZmluZChsPT5sLmNvZGU9PT1jb2RlKXx8e25hdGl2ZTpjb2RlfSkubmF0aXZlO31cbmZ1bmN0aW9uIGxhbmdCYWRnZShpdGVtTGFuZyl7XG4gIGNvbnN0IHRyYW5zbGF0ZWQgPSBpdGVtTGFuZyAmJiBpdGVtTGFuZyE9PWN1cnJlbnRMYW5nO1xuICBpZighaXRlbUxhbmcpIHJldHVybiAnJztcbiAgcmV0dXJuIGA8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTowLjcycmVtO2NvbG9yOnZhcigtLW11dGVkKTtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4O21hcmdpbi10b3A6NHB4XCI+XG4gICAgT3JpZ2luYWxseSBpbiAke2xhbmdOYXRpdmUoaXRlbUxhbmcpfSR7dHJhbnNsYXRlZD8nIMK3IDxzcGFuIHN0eWxlPVwiY29sb3I6dmFyKC0tYmx1ZSk7Zm9udC13ZWlnaHQ6NjAwXCI+8J+UhCBBdXRvLXRyYW5zbGF0ZWQ8L3NwYW4+JzonJ31cbiAgPC9zcGFuPmA7XG59XG5mdW5jdGlvbiBvcGVuTGFuZ01vZGFsKCl7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYW5nLW1vZGFsJykuY2xhc3NMaXN0LmFkZCgnb3BlbicpO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFuZy1ncmlkJykuaW5uZXJIVE1MPUxBTkdTLm1hcChsPT5gPGRpdiBjbGFzcz1cImxhbmctb3B0aW9uICR7bC5jb2RlPT09Y3VycmVudExhbmc/J2FjdGl2ZSc6Jyd9XCIgb25jbGljaz1cInNlbGVjdExhbmcoJyR7bC5jb2RlfScsdGhpcylcIj4ke2wubmF0aXZlfTwvZGl2PmApLmpvaW4oJycpO1xufVxuZnVuY3Rpb24gY2xvc2VMYW5nTW9kYWwoKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFuZy1tb2RhbCcpLmNsYXNzTGlzdC5yZW1vdmUoJ29wZW4nKTt9XG5mdW5jdGlvbiBzZWxlY3RMYW5nKGNvZGUsZWwpe1xuICBjdXJyZW50TGFuZz1jb2RlO1xuICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubGFuZy1vcHRpb24nKS5mb3JFYWNoKHg9PnguY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJykpO1xuICBlbC5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTtcbiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmxhbmctYnRuJykudGV4dENvbnRlbnQ9bGFuZ0ZsYWcoY29kZSk7XG4gIHNldFRpbWVvdXQoKCk9PntjbG9zZUxhbmdNb2RhbCgpO3Nob3dUb2FzdCgnTGFuZ3VhZ2Ugc2V0IHRvICcrbGFuZ05hbWUoY29kZSkrJyDigJQgYXV0by10cmFuc2xhdGlvbiBhY3RpdmUg8J+MkCcpO30sMzAwKTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0QW1vdW50KGJ0bix2KXtcbiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmFtb3VudC1idG4nKS5mb3JFYWNoKGI9PmIuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKSk7XG4gIGJ0bi5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpO1xufVxuXG5mdW5jdGlvbiBzaG93VG9hc3QobXNnKXtcbiAgY29uc3QgdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9hc3QnKTtcbiAgdC50ZXh0Q29udGVudD1tc2c7dC5jbGFzc0xpc3QuYWRkKCdzaG93Jyk7XG4gIHNldFRpbWVvdXQoKCk9PnQuY2xhc3NMaXN0LnJlbW92ZSgnc2hvdycpLDMwMDApO1xufVxuZnVuY3Rpb24gZW1wdHlTdGF0ZShtc2cpe3JldHVybiBgPGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCI+PGRpdiBjbGFzcz1cImljb25cIj7wn5KsPC9kaXY+PHA+JHttc2d9PC9wPjwvZGl2PmA7fVxuXG4vLyBJbml0XG5yZW5kZXJIb21lQ2F0cygpO1xuPC9zY3JpcHQ+XG48L2JvZHk+XG48L2h0bWw+XG4ifX1dLCJpZCI6IjEifQ==", "c0e301ab7e0e1150e5b685fa9ba7487e8e199f4f8830f4792b8aff705f794083": "eyJyb2xlIjoidG9vbCIsImNvbnRlbnQiOlt7InR5cGUiOiJ0b29sLXJlc3VsdCIsInRvb2xDYWxsSWQiOiJ0b29sXzYwODkyZTg2LWI1NTEtNDhiNi04YzhlLTA3MmY5NDEyOGRkIiwidG9vbE5hbWUiOiJXcml0ZSIsInJlc3VsdCI6Ildyb3RlIGNvbnRlbnRzIHRvIEM6XFxVc2Vyc1xccm9saWtcXGluZGV4Lmh0bWwiLCJleHBlcmltZW50YWxfY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0IjoiV3JvdGUgY29udGVudHMgdG8gQzpcXFVzZXJzXFxyb2xpa1xcaW5kZXguaHRtbCJ9XX1dLCJpZCI6InRvb2xfNjA4OTJlODYtYjU1MS00OGI2LThjOGUtMDcyZjk0MTI4ZGQiLCJwcm92aWRlck9wdGlvbnMiOnsiY3Vyc29yIjp7ImhpZ2hMZXZlbFRvb2xDYWxsUmVzdWx0Ijp7Im91dHB1dCI6eyJzdWNjZXNzIjp7InBhdGgiOiJDOlxcVXNlcnNcXHJvbGlrXFxpbmRleC5odG1sIiwibGluZXNBZGRlZCI6NzMyLCJsaW5lc1JlbW92ZWQiOjAsImRpZmZTdHJpbmciOiItLS0gYS9DOlxcVXNlcnNcXHJvbGlrXFxpbmRleC5odG1sXG4rKysgYi9DOlxcVXNlcnNcXHJvbGlrXFxpbmRleC5odG1sXG5AQCAtMSArMSw3MzMgQEBcbis8IURPQ1RZUEUgaHRtbD5cbis8aHRtbCBsYW5nPVwiZW5cIj5cbis8aGVhZD5cbis8bWV0YSBjaGFyc2V0PVwiVVRGLThcIj5cbis8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMFwiPlxuKzx0aXRsZT5PbGltQW5zd2Vycy5jb208L3RpdGxlPlxuKzxzdHlsZT5cbisgIDpyb290IHtcbisgICAgLS1ibHVlOiMxYTVmYTg7LS1ibHVlLWxpZ2h0OiNlOGYwZmI7LS1nb2xkOiNmMGI0Mjk7LS1nb2xkLWxpZ2h0OiNmZmY4ZTc7XG4rICAgIC0tZ3JlZW46IzFhOGE0YTstLXJlZDojYzAzOTJiOy0tZ3JheTojZjRmNmY5Oy0tdGV4dDojMWExYTJlOy0tbXV0ZWQ6IzZiNzI4MDtcbisgICAgLS1ib3JkZXI6I2RkZTNlZDstLXdoaXRlOiNmZmZmZmY7LS1zaGFkb3c6MCAycHggMTJweCByZ2JhKDAsMCwwLDAuMDgpO1xuKyAgfVxuKyAgKntib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luOjA7cGFkZGluZzowfVxuKyAgYm9keXtmb250LWZhbWlseTonU2Vnb2UgVUknLHN5c3RlbS11aSxzYW5zLXNlcmlmO2NvbG9yOnZhcigtLXRleHQpO2JhY2tncm91bmQ6dmFyKC0tZ3JheSk7bWluLWhlaWdodDoxMDB2aH1cbisgIC8qIE5BViAqL1xuKyAgbmF2e2JhY2tncm91bmQ6dmFyKC0tYmx1ZSk7Y29sb3I6I2ZmZjtwYWRkaW5nOjAgMjRweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2hlaWdodDo2MHB4O3Bvc2l0aW9uOnN0aWNreTt0b3A6MDt6LWluZGV4OjEwMDtib3gtc2hhZG93OjAgMnB4IDhweCByZ2JhKDAsMCwwLDAuMil9XG4rICAubmF2LWxvZ297Zm9udC1zaXplOjEuNDVyZW07Zm9udC13ZWlnaHQ6ODAwO2N1cnNvcjpwb2ludGVyO2xldHRlci1zcGFjaW5nOi0wLjVweDtsaW5lLWhlaWdodDoxLjE7bWFyZ2luLXJpZ2h0OjEycHg7ZmxleC1zaHJpbms6MH1cbisgIC5uYXYtbG9nbyBzcGFue2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjAuNzhyZW07Zm9udC13ZWlnaHQ6NTAwO2xldHRlci1zcGFjaW5nOjEuNXB4O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtvcGFjaXR5OjAuODV9XG4rICAubmF2LWxvZ286aG92ZXJ7b3BhY2l0eTowLjg1fVxuKyAgLm5hdi1sb2dvIHNwYW57Y29sb3I6dmFyKC0tZ29sZCl9XG4rICAubmF2LWxpbmtze2Rpc3BsYXk6ZmxleDtnYXA6NnB4O2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LXdyYXA6d3JhcH1cbisgIC5uYXYtbGlua3MgYnV0dG9ue2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtjb2xvcjojZmZmO3BhZGRpbmc6NnB4IDEwcHg7Ym9yZGVyLXJhZGl1czo2cHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjAuODJyZW07Zm9udC13ZWlnaHQ6NTAwO3RyYW5zaXRpb246YmFja2dyb3VuZCAwLjJzfVxuKyAgLm5hdi1saW5rcyBidXR0b246aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuMTUpfVxuKyAgLm5hdi1saW5rcyAubmF2LWRvbmF0ZXtiYWNrZ3JvdW5kOnZhcigtLWdvbGQpO2NvbG9yOnZhcigtLXRleHQpO2ZvbnQtd2VpZ2h0OjcwMDtwYWRkaW5nOjZweCAxMnB4O2JvcmRlci1yYWRpdXM6NnB4fVxuKyAgLm5hdi1saW5rcyAubmF2LWRvbmF0ZTpob3ZlcntiYWNrZ3JvdW5kOiNlMGE4MDB9XG4rICAubGFuZy1idG57YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuMTUpIWltcG9ydGFudDtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4zKSFpbXBvcnRhbnQ7Zm9udC1zaXplOjAuNzhyZW0haW1wb3J0YW50fVxuIFxuKyAgLyogUEFHRVMgKi9cbisgIC5wYWdle2Rpc3BsYXk6bm9uZTttYXgtd2lkdGg6MTEwMHB4O21hcmdpbjowIGF1dG87cGFkZGluZzoyOHB4IDIwcHh9XG4rICAucGFnZS5hY3RpdmV7ZGlzcGxheTpibG9ja31cbitcbisgIC8qIEhPTUUgKi9cbisgIC5oZXJve2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZyx2YXIoLS1ibHVlKSAwJSwjMjQ3MWM4IDEwMCUpO2NvbG9yOiNmZmY7Ym9yZGVyLXJhZGl1czoxNnB4O3BhZGRpbmc6NDhweCA0MHB4O3RleHQtYWxpZ246Y2VudGVyO21hcmdpbi1ib3R0b206MzJweH1cbisgIC5oZXJvIGgxe2ZvbnQtc2l6ZToyLjRyZW07Zm9udC13ZWlnaHQ6ODAwO21hcmdpbi1ib3R0b206MTJweH1cbisgIC5oZXJvIGgxIHNwYW57Y29sb3I6dmFyKC0tZ29sZCl9XG4rICAuaGVybyBwe2ZvbnQtc2l6ZToxLjFyZW07b3BhY2l0eTowLjkyO21heC13aWR0aDo2MjBweDttYXJnaW46MCBhdXRvIDI0cHg7bGluZS1oZWlnaHQ6MS42fVxuKyAgLmhlcm8tYnRuc3tkaXNwbGF5OmZsZXg7Z2FwOjEycHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LXdyYXA6d3JhcH1cbisgIC5idG57cGFkZGluZzoxMnB4IDI0cHg7Ym9yZGVyLXJhZGl1czo4cHg7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjAuOTVyZW07Zm9udC13ZWlnaHQ6NzAwO3RyYW5zaXRpb246YWxsIDAuMnN9XG4rICAuYnRuLXByaW1hcnl7YmFja2dyb3VuZDp2YXIoLS1nb2xkKTtjb2xvcjp2YXIoLS10ZXh0KX1cbisgIC5idG4tcHJpbWFyeTpob3ZlcntiYWNrZ3JvdW5kOiNlMGE4MDA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCl9XG4rICAuYnRuLW91dGxpbmV7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojZmZmO2JvcmRlcjoycHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjYpfVxuKyAgLmJ0bi1vdXRsaW5lOmhvdmVye2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwwLjEpfVxuKyAgLmhvdy1pdC13b3Jrc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpdCxtaW5tYXgoMjAwcHgsMWZyKSk7Z2FwOjIwcHg7bWFyZ2luLWJvdHRvbTozMnB4fVxuKyAgLmhpdy1jYXJke2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjI0cHg7dGV4dC1hbGlnbjpjZW50ZXI7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpfVxuKyAgLmhpdy1pY29ue2ZvbnQtc2l6ZToycmVtO21hcmdpbi1ib3R0b206MTBweH1cbisgIC5oaXctY2FyZCBoM3tmb250LXNpemU6MXJlbTttYXJnaW4tYm90dG9tOjZweDtjb2xvcjp2YXIoLS1ibHVlKX1cbisgIC5oaXctY2FyZCBwe2ZvbnQtc2l6ZTowLjg1cmVtO2NvbG9yOnZhcigtLW11dGVkKTtsaW5lLWhlaWdodDoxLjV9XG4rICAuc2VjdGlvbi10aXRsZXtmb250LXNpemU6MS4zcmVtO2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW4tYm90dG9tOjE2cHg7Y29sb3I6dmFyKC0tYmx1ZSl9XG4rICAuY2F0ZWdvcnktZ3JpZHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpbGwsbWlubWF4KDE2MHB4LDFmcikpO2dhcDoxNHB4O21hcmdpbi1ib3R0b206MzJweH1cbisgIC5jYXQtY2FyZHtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxOHB4IDE0cHg7dGV4dC1hbGlnbjpjZW50ZXI7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyOjJweCBzb2xpZCB0cmFuc3BhcmVudDt0cmFuc2l0aW9uOmFsbCAwLjJzO2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KX1cbisgIC5jYXQtY2FyZDpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYmx1ZSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCl9XG4rICAuY2F0LWljb257Zm9udC1zaXplOjEuOHJlbTttYXJnaW4tYm90dG9tOjhweH1cbisgIC5jYXQtY2FyZCBoNHtmb250LXNpemU6MC44OHJlbTtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tdGV4dCl9XG4rICAuY2F0LWNhcmQgcHtmb250LXNpemU6MC43NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLXRvcDo0cHh9XG4rICAuZG9uYXRlLWJhbm5lcntiYWNrZ3JvdW5kOnZhcigtLWdvbGQtbGlnaHQpO2JvcmRlcjoycHggc29saWQgdmFyKC0tZ29sZCk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjRweDt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tYm90dG9tOjMycHh9XG4rICAuZG9uYXRlLWJhbm5lciBoM3tmb250LXNpemU6MS4xcmVtO21hcmdpbi1ib3R0b206OHB4fVxuKyAgLmRvbmF0ZS1iYW5uZXIgcHtmb250LXNpemU6MC44OHJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLWJvdHRvbToxNHB4fVxuKyAgLnRpcC1ib3h7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCNlOGY1ZTksI2YwZmFmNCk7Ym9yZGVyLWxlZnQ6NHB4IHNvbGlkIHZhcigtLWdyZWVuKTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxOHB4IDIwcHg7bWFyZ2luLWJvdHRvbTozMnB4fVxuKyAgLnRpcC1ib3ggLnRpcC1sYWJlbHtmb250LXNpemU6MC43NXJlbTtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tZ3JlZW4pO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtsZXR0ZXItc3BhY2luZzoxcHg7bWFyZ2luLWJvdHRvbTo2cHh9XG4rICAudGlwLWJveCBwe2ZvbnQtc2l6ZTowLjkycmVtO2xpbmUtaGVpZ2h0OjEuNX1cbitcbisgIC8qIEZPUlVNIC8gQ0FURUdPUlkgKi9cbisgIC5mb3J1bS1oZWFkZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjttYXJnaW4tYm90dG9tOjIwcHg7ZmxleC13cmFwOmdhcH1cbisgIC5zb3J0LXNlbGVjdHtwYWRkaW5nOjhweCAxMnB4O2JvcmRlci1yYWRpdXM6OHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtmb250LXNpemU6MC44NXJlbTtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtjdXJzb3I6cG9pbnRlcjtjb2xvcjp2YXIoLS10ZXh0KX1cbisgIC5hc2stYmFye2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjIwcHg7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpO21hcmdpbi1ib3R0b206MjRweH1cbisgIC5hc2stYmFyIGgze2ZvbnQtc2l6ZToxcmVtO21hcmdpbi1ib3R0b206MTJweDtjb2xvcjp2YXIoLS1ibHVlKX1cbisgIC5hc2stYmFyIGlucHV0LC5hc2stYmFyIHRleHRhcmVhLC5hc2stYmFyIHNlbGVjdHt3aWR0aDoxMDAlO3BhZGRpbmc6MTBweCAxNHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjhweDtmb250LXNpemU6MC45cmVtO21hcmdpbi1ib3R0b206MTBweDtmb250LWZhbWlseTppbmhlcml0O2NvbG9yOnZhcigtLXRleHQpfVxuKyAgLmFzay1iYXIgdGV4dGFyZWF7cmVzaXplOnZlcnRpY2FsO21pbi1oZWlnaHQ6ODBweH1cbisgIC50YWctaW5wdXR7ZGlzcGxheTpmbGV4O2dhcDo4cHg7ZmxleC13cmFwOndyYXA7bWFyZ2luLWJvdHRvbToxMHB4fVxuKyAgLnRhZ3tiYWNrZ3JvdW5kOnZhcigtLWJsdWUtbGlnaHQpO2NvbG9yOnZhcigtLWJsdWUpO3BhZGRpbmc6NHB4IDEwcHg7Ym9yZGVyLXJhZGl1czoyMHB4O2ZvbnQtc2l6ZTowLjc4cmVtO2ZvbnQtd2VpZ2h0OjYwMDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHh9XG4rICAudGFnIC5yZW1vdmV7Y29sb3I6dmFyKC0tcmVkKTtmb250LXdlaWdodDo3MDB9XG4rICAucS1jYXJke2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjIwcHg7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpO21hcmdpbi1ib3R0b206MTZweDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJveC1zaGFkb3cgMC4yc31cbisgIC5xLWNhcmQ6aG92ZXJ7Ym94LXNoYWRvdzowIDRweCAyMHB4IHJnYmEoMCwwLDAsMC4xMil9XG4rICAucS1tZXRhe2Rpc3BsYXk6ZmxleDtnYXA6MTBweDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC13cmFwOndyYXA7bWFyZ2luLWJvdHRvbTo4cHh9XG4rICAucS1jYXQtYmFkZ2V7YmFja2dyb3VuZDp2YXIoLS1ibHVlLWxpZ2h0KTtjb2xvcjp2YXIoLS1ibHVlKTtmb250LXNpemU6MC43MnJlbTtmb250LXdlaWdodDo3MDA7cGFkZGluZzozcHggOXB4O2JvcmRlci1yYWRpdXM6MTJweH1cbisgIC5xLWRhdGV7Zm9udC1zaXplOjAuNzVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpfVxuKyAgLnEtYXV0aG9ye2ZvbnQtc2l6ZTowLjc1cmVtO2NvbG9yOnZhcigtLW11dGVkKX1cbisgIC5xLXRpdGxle2ZvbnQtc2l6ZToxLjA1cmVtO2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW4tYm90dG9tOjZweH1cbisgIC5xLXByZXZpZXd7Zm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO2xpbmUtaGVpZ2h0OjEuNTttYXJnaW4tYm90dG9tOjEwcHh9XG4rICAucS1zdGF0c3tkaXNwbGF5OmZsZXg7Z2FwOjE0cHg7Zm9udC1zaXplOjAuOHJlbTtjb2xvcjp2YXIoLS1tdXRlZCl9XG4rICAucS1zdGF0cyBzcGFue2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweH1cbisgIC5mZWF0dXJlZC1iYWRnZXtiYWNrZ3JvdW5kOnZhcigtLWdvbGQpO2NvbG9yOnZhcigtLXRleHQpO2ZvbnQtc2l6ZTowLjdyZW07Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6MnB4IDhweDtib3JkZXItcmFkaXVzOjEwcHg7bWFyZ2luLWxlZnQ6OHB4fVxuK1xuKyAgLyogUVVFU1RJT04gREVUQUlMICovXG4rICAuYmFjay1idG57YmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO2NvbG9yOnZhcigtLWJsdWUpO2ZvbnQtc2l6ZTowLjlyZW07Y3Vyc29yOnBvaW50ZXI7bWFyZ2luLWJvdHRvbToxNnB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDtmb250LXdlaWdodDo2MDB9XG4rICAucS1mdWxse2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjI0cHg7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpO21hcmdpbi1ib3R0b206MjRweH1cbisgIC5xLWZ1bGwgaDJ7Zm9udC1zaXplOjEuM3JlbTttYXJnaW4tYm90dG9tOjEycHh9XG4rICAucS1mdWxsIC5ib2R5e2ZvbnQtc2l6ZTowLjkycmVtO2xpbmUtaGVpZ2h0OjEuNzttYXJnaW4tYm90dG9tOjE2cHh9XG4rICAudGFncy1yb3d7ZGlzcGxheTpmbGV4O2dhcDo4cHg7ZmxleC13cmFwOndyYXA7bWFyZ2luLWJvdHRvbToxNnB4fVxuKyAgLmFuc3dlcnMtc2VjdGlvbiBoM3tmb250LXNpemU6MS4xcmVtO2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW4tYm90dG9tOjE2cHg7Y29sb3I6dmFyKC0tYmx1ZSl9XG4rICAuYW5zd2VyLWNhcmR7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MThweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWFyZ2luLWJvdHRvbToxNHB4O2JvcmRlci1sZWZ0OjRweCBzb2xpZCB0cmFuc3BhcmVudH1cbisgIC5hbnN3ZXItY2FyZC50b3AtYW5zd2Vye2JvcmRlci1sZWZ0LWNvbG9yOnZhcigtLWdvbGQpfVxuKyAgLnRvcC1hbnN3ZXItbGFiZWx7Zm9udC1zaXplOjAuNzJyZW07Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLWdvbGQpO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtsZXR0ZXItc3BhY2luZzowLjhweDttYXJnaW4tYm90dG9tOjZweH1cbisgIC5hbnN3ZXItYm9keXtmb250LXNpemU6MC45cmVtO2xpbmUtaGVpZ2h0OjEuNzttYXJnaW4tYm90dG9tOjEycHh9XG4rICAuYW5zd2VyLWZvb3RlcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2ZsZXgtd3JhcDp3cmFwO2dhcDo4cHh9XG4rICAuYW5zd2VyLW1ldGF7Zm9udC1zaXplOjAuNzhyZW07Y29sb3I6dmFyKC0tbXV0ZWQpfVxuKyAgLnZvdGUtYnRuc3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHh9XG4rICAudm90ZS1idG57YmFja2dyb3VuZDp2YXIoLS1ncmF5KTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzo1cHggMTJweDtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MC44MnJlbTtmb250LXdlaWdodDo2MDA7dHJhbnNpdGlvbjphbGwgMC4ycztkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHh9XG4rICAudm90ZS1idG4ubGlrZWR7YmFja2dyb3VuZDp2YXIoLS1ibHVlLWxpZ2h0KTtib3JkZXItY29sb3I6dmFyKC0tYmx1ZSk7Y29sb3I6dmFyKC0tYmx1ZSl9XG4rICAudm90ZS1idG46aG92ZXJ7dHJhbnNmb3JtOnNjYWxlKDEuMDUpfVxuKyAgLmZsYWctYnRue2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtjb2xvcjp2YXIoLS1tdXRlZCk7Zm9udC1zaXplOjAuNzhyZW07Y3Vyc29yOnBvaW50ZXJ9XG4rICAuZmxhZy1idG46aG92ZXJ7Y29sb3I6dmFyKC0tcmVkKX1cbisgIC5hZGQtYW5zd2Vye2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjIwcHg7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpO21hcmdpbi10b3A6MjRweH1cbisgIC5hZGQtYW5zd2VyIGg0e21hcmdpbi1ib3R0b206MTJweDtjb2xvcjp2YXIoLS1ibHVlKX1cbisgIC5hZGQtYW5zd2VyIHRleHRhcmVhe3dpZHRoOjEwMCU7cGFkZGluZzoxMnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjhweDttaW4taGVpZ2h0OjEwMHB4O3Jlc2l6ZTp2ZXJ0aWNhbDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTowLjlyZW07bWFyZ2luLWJvdHRvbToxMHB4fVxuKyAgLmFkZC1hbnN3ZXIgaW5wdXR7d2lkdGg6MTAwJTtwYWRkaW5nOjEwcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4O2ZvbnQtc2l6ZTowLjg4cmVtO21hcmdpbi1ib3R0b206MTBweDtmb250LWZhbWlseTppbmhlcml0fVxuK1xuKyAgLyogQkVTVCBPRiAqL1xuKyAgLmJlc3Qtb2YtaGVhZGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZyx2YXIoLS1nb2xkLWxpZ2h0KSwjZmZmZGU3KTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyNHB4O21hcmdpbi1ib3R0b206MjRweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdvbGQpO3RleHQtYWxpZ246Y2VudGVyfVxuKyAgLmJlc3Qtb2YtaGVhZGVyIGgye2NvbG9yOnZhcigtLXRleHQpO21hcmdpbi1ib3R0b206NnB4fVxuKyAgLmJlc3Qtb2YtaGVhZGVyIHB7Y29sb3I6dmFyKC0tbXV0ZWQpO2ZvbnQtc2l6ZTowLjg4cmVtfVxuKyAgLmZpbHRlci1yb3d7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MjBweDthbGlnbi1pdGVtczpjZW50ZXJ9XG4rICAuZmlsdGVyLWJ0bntwYWRkaW5nOjZweCAxNHB4O2JvcmRlci1yYWRpdXM6MjBweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWJvcmRlcik7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjAuODJyZW07Zm9udC13ZWlnaHQ6NjAwO3RyYW5zaXRpb246YWxsIDAuMnN9XG4rICAuZmlsdGVyLWJ0bi5hY3RpdmV7YmFja2dyb3VuZDp2YXIoLS1ibHVlKTtjb2xvcjojZmZmO2JvcmRlci1jb2xvcjp2YXIoLS1ibHVlKX1cbitcbisgIC8qIENIRUNLTElTVCAqL1xuKyAgLmNoZWNrbGlzdC1pbnRyb3tiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsI2U4ZjVlOSwjZjBmYWY0KTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyNHB4O21hcmdpbi1ib3R0b206MjRweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdyZWVuKTt0ZXh0LWFsaWduOmNlbnRlcn1cbisgIC5jaGVja2xpc3QtaW50cm8gaDJ7Y29sb3I6dmFyKC0tZ3JlZW4pO21hcmdpbi1ib3R0b206NnB4fVxuKyAgLmNoZWNrbGlzdC1zZWN0aW9ue2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjIwcHg7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpO21hcmdpbi1ib3R0b206MTZweH1cbisgIC5jaGVja2xpc3Qtc2VjdGlvbiBoM3tmb250LXNpemU6MXJlbTtjb2xvcjp2YXIoLS1ibHVlKTttYXJnaW4tYm90dG9tOjEycHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4fVxuKyAgLmNoZWNrbGlzdC1pdGVte2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDoxMnB4O3BhZGRpbmc6MTBweCAwO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWJvcmRlcil9XG4rICAuY2hlY2tsaXN0LWl0ZW06bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOm5vbmV9XG4rICAuY2hlY2tsaXN0LWl0ZW0gaW5wdXRbdHlwZT1jaGVja2JveF17d2lkdGg6MThweDtoZWlnaHQ6MThweDttYXJnaW4tdG9wOjJweDtjdXJzb3I6cG9pbnRlcjthY2NlbnQtY29sb3I6dmFyKC0tYmx1ZSl9XG4rICAuY2hlY2tsaXN0LWl0ZW0gbGFiZWx7Zm9udC1zaXplOjAuOXJlbTtsaW5lLWhlaWdodDoxLjU7Y3Vyc29yOnBvaW50ZXI7ZmxleDoxfVxuKyAgLmNoZWNrbGlzdC1pdGVtIC5saW5rLWJ0bntmb250LXNpemU6MC43NXJlbTtjb2xvcjp2YXIoLS1ibHVlKTtjdXJzb3I6cG9pbnRlcjt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTttYXJnaW4tbGVmdDphdXRvO3doaXRlLXNwYWNlOm5vd3JhcH1cbitcbisgIC8qIFNFQVJDSCAqL1xuKyAgLnNlYXJjaC1iYXItYmlne2Rpc3BsYXk6ZmxleDtnYXA6MTBweDttYXJnaW4tYm90dG9tOjI0cHh9XG4rICAuc2VhcmNoLWJhci1iaWcgaW5wdXR7ZmxleDoxO3BhZGRpbmc6MTRweCAxOHB4O2JvcmRlcjoycHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjEwcHg7Zm9udC1zaXplOjFyZW07Zm9udC1mYW1pbHk6aW5oZXJpdH1cbisgIC5zZWFyY2gtYmFyLWJpZyBpbnB1dDpmb2N1c3tvdXRsaW5lOm5vbmU7Ym9yZGVyLWNvbG9yOnZhcigtLWJsdWUpfVxuKyAgLnNlYXJjaC1iYXItYmlnIGJ1dHRvbntiYWNrZ3JvdW5kOnZhcigtLWJsdWUpO2NvbG9yOiNmZmY7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTRweCAyNHB4O2ZvbnQtc2l6ZToxcmVtO2ZvbnQtd2VpZ2h0OjcwMDtjdXJzb3I6cG9pbnRlcn1cbisgIC50YWctY2xvdWR7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo4cHg7bWFyZ2luLWJvdHRvbToyNHB4fVxuKyAgLnRhZy1jbG91ZC1pdGVte2JhY2tncm91bmQ6dmFyKC0tYmx1ZS1saWdodCk7Y29sb3I6dmFyKC0tYmx1ZSk7cGFkZGluZzo2cHggMTRweDtib3JkZXItcmFkaXVzOjIwcHg7Zm9udC1zaXplOjAuODJyZW07Zm9udC13ZWlnaHQ6NjAwO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246YWxsIDAuMnN9XG4rICAudGFnLWNsb3VkLWl0ZW06aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1ibHVlKTtjb2xvcjojZmZmfVxuK1xuKyAgLyogRE9OQVRFICovXG4rICAuZG9uYXRlLXBhZ2V7dGV4dC1hbGlnbjpjZW50ZXI7bWF4LXdpZHRoOjYwMHB4O21hcmdpbjowIGF1dG99XG4rICAuZG9uYXRlLWhlcm97YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHZhcigtLWdvbGQtbGlnaHQpLCNmZmY4ZTEpO2JvcmRlci1yYWRpdXM6MTZweDtwYWRkaW5nOjQwcHg7bWFyZ2luLWJvdHRvbToyNHB4O2JvcmRlcjoycHggc29saWQgdmFyKC0tZ29sZCl9XG4rICAuZG9uYXRlLWhlcm8gaDJ7Zm9udC1zaXplOjEuOHJlbTttYXJnaW4tYm90dG9tOjEycHh9XG4rICAuZG9uYXRlLWhlcm8gcHtjb2xvcjp2YXIoLS1tdXRlZCk7bGluZS1oZWlnaHQ6MS43O21hcmdpbi1ib3R0b206MjBweH1cbisgIC5kb25hdGUtYW1vdW50c3tkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjIwcHh9XG4rICAuYW1vdW50LWJ0bntwYWRkaW5nOjEwcHggMjBweDtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdvbGQpO2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjlyZW07Zm9udC13ZWlnaHQ6NzAwO3RyYW5zaXRpb246YWxsIDAuMnN9XG4rICAuYW1vdW50LWJ0bi5zZWxlY3RlZCwuYW1vdW50LWJ0bjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWdvbGQpO2NvbG9yOnZhcigtLXRleHQpfVxuKyAgLmRvbmF0ZS1idG4tYmlne2JhY2tncm91bmQ6dmFyKC0tZ29sZCk7Y29sb3I6dmFyKC0tdGV4dCk7Ym9yZGVyOm5vbmU7cGFkZGluZzoxNHB4IDQwcHg7Ym9yZGVyLXJhZGl1czoxMHB4O2ZvbnQtc2l6ZToxLjFyZW07Zm9udC13ZWlnaHQ6ODAwO2N1cnNvcjpwb2ludGVyO3dpZHRoOjEwMCU7bWFyZ2luLWJvdHRvbToxMnB4fVxuK1xuKyAgLyogTEFORyBNT0RBTCAqL1xuKyAgLm1vZGFsLW92ZXJsYXl7ZGlzcGxheTpub25lO3Bvc2l0aW9uOmZpeGVkO2luc2V0OjA7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuNSk7ei1pbmRleDoyMDA7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9XG4rICAubW9kYWwtb3ZlcmxheS5vcGVue2Rpc3BsYXk6ZmxleH1cbisgIC5tb2RhbHtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjE2cHg7cGFkZGluZzoyOHB4O21heC13aWR0aDo0MjBweDt3aWR0aDo5MCU7Ym94LXNoYWRvdzowIDhweCA0MHB4IHJnYmEoMCwwLDAsMC4yKX1cbisgIC5tb2RhbCBoM3ttYXJnaW4tYm90dG9tOjhweDtmb250LXNpemU6MS4ycmVtfVxuKyAgLm1vZGFsIHB7Zm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MTZweDtsaW5lLWhlaWdodDoxLjV9XG4rICAubGFuZy1ncmlke2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtnYXA6OHB4O21hcmdpbi1ib3R0b206MTZweH1cbisgIC5sYW5nLW9wdGlvbntwYWRkaW5nOjEwcHggMTJweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czo4cHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjAuOTJyZW07Zm9udC13ZWlnaHQ6NjAwO3RleHQtYWxpZ246Y2VudGVyO3RyYW5zaXRpb246YWxsIDAuMnM7bGluZS1oZWlnaHQ6MS40O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweH1cbisgIC5sYW5nLW9wdGlvbjpob3ZlciwubGFuZy1vcHRpb24uYWN0aXZle2JvcmRlci1jb2xvcjp2YXIoLS1ibHVlKTtiYWNrZ3JvdW5kOnZhcigtLWJsdWUtbGlnaHQpO2NvbG9yOnZhcigtLWJsdWUpO3RyYW5zZm9ybTpzY2FsZSgxLjAzKX1cbisgIC5tb2RhbC1jbG9zZXtiYWNrZ3JvdW5kOnZhcigtLWdyYXkpO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6MTBweCAyMHB4O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjlyZW07Zm9udC13ZWlnaHQ6NjAwO3dpZHRoOjEwMCV9XG4rICAudHJhbnNsYXRpb24tbm90aWNle2JhY2tncm91bmQ6I2ZmZjNjZDtib3JkZXI6MXB4IHNvbGlkICNmZmMxMDc7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoxMHB4IDE0cHg7Zm9udC1zaXplOjAuOHJlbTtjb2xvcjojODU2NDA0O21hcmdpbi1ib3R0b206MTZweH1cbitcbisgIC8qIFRPQVNUICovXG4rICAudG9hc3R7cG9zaXRpb246Zml4ZWQ7Ym90dG9tOjI0cHg7cmlnaHQ6MjRweDtiYWNrZ3JvdW5kOnZhcigtLWdyZWVuKTtjb2xvcjojZmZmO3BhZGRpbmc6MTJweCAyMHB4O2JvcmRlci1yYWRpdXM6MTBweDtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjAuOXJlbTt6LWluZGV4OjMwMDtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTBweCk7dHJhbnNpdGlvbjphbGwgMC4zcztwb2ludGVyLWV2ZW50czpub25lfVxuKyAgLnRvYXN0LnNob3d7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfVxuK1xuKyAgLmVtcHR5LXN0YXRle3RleHQtYWxpZ246Y2VudGVyO3BhZGRpbmc6NDBweDtjb2xvcjp2YXIoLS1tdXRlZCl9XG4rICAuZW1wdHktc3RhdGUgLmljb257Zm9udC1zaXplOjNyZW07bWFyZ2luLWJvdHRvbToxMHB4fVxuKyAgLmRpdmlkZXJ7aGVpZ2h0OjFweDtiYWNrZ3JvdW5kOnZhcigtLWJvcmRlcik7bWFyZ2luOjIwcHggMH1cbisgIEBtZWRpYShtYXgtd2lkdGg6NjAwcHgpey5oZXJvIGgxe2ZvbnQtc2l6ZToxLjZyZW19Lmhlcm97cGFkZGluZzoyOHB4IDIwcHh9LmNhdGVnb3J5LWdyaWR7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpbGwsbWlubWF4KDEzMHB4LDFmcikpfX1cbis8L3N0eWxlPlxuKzwvaGVhZD5cbis8Ym9keT5cbitcbis8bmF2PlxuKyAgPGRpdiBjbGFzcz1cIm5hdi1sb2dvXCIgb25jbGljaz1cInNob3dQYWdlKCdob21lJylcIj5PbGltPHNwYW4+QW5zd2Vyczwvc3Bhbj48L2Rpdj5cbisgIDxkaXYgY2xhc3M9XCJuYXYtbGlua3NcIj5cbisgICAgPGJ1dHRvbiBvbmNsaWNrPVwic2hvd1BhZ2UoJ2hvbWUnKVwiPvCfj6AgSG9tZTwvYnV0dG9uPlxuKyAgICA8YnV0dG9uIG9uY2xpY2s9XCJzaG93UGFnZSgnZm9ydW0nKVwiPvCfl6MgRm9ydW08L2J1dHRvbj5cbisgICAgPGJ1dHRvbiBvbmNsaWNrPVwic2hvd1BhZ2UoJ2Jlc3RvZicpXCI+4q2QIEJlc3QgT2Y8L2J1dHRvbj5cbisgICAgPGJ1dHRvbiBvbmNsaWNrPVwic2hvd1BhZ2UoJ2NoZWNrbGlzdCcpXCI+4pyFIENoZWNrbGlzdDwvYnV0dG9uPlxuKyAgICA8YnV0dG9uIG9uY2xpY2s9XCJzaG93UGFnZSgnY2F0cycpXCI+8J+TgiBDYXRlZ29yaWVzPC9idXR0b24+XG4rICAgIDxidXR0b24gb25jbGljaz1cInNob3dQYWdlKCdzZWFyY2gnKVwiPvCflI0gU2VhcmNoPC9idXR0b24+XG4rICAgIDxidXR0b24gb25jbGljaz1cInNob3dQYWdlKCdkb25hdGUnKVwiIGNsYXNzPVwibmF2LWRvbmF0ZVwiPvCfkpsgRG9uYXRlPC9idXR0b24+XG4rICAgIDxidXR0b24gY2xhc3M9XCJsYW5nLWJ0blwiIG9uY2xpY2s9XCJvcGVuTGFuZ01vZGFsKClcIj7wn4es8J+HpzwvYnV0dG9uPlxuKyAgPC9kaXY+XG4rPC9uYXY+XG4rXG4rPCEtLSBIT01FIC0tPlxuKzxkaXYgY2xhc3M9XCJwYWdlIGFjdGl2ZVwiIGlkPVwicGFnZS1ob21lXCI+XG4rICA8ZGl2IGNsYXNzPVwiaGVyb1wiPlxuKyAgICA8aDE+V2VsY29tZSB0byA8c3Bhbj5PbGltQW5zd2Vyczwvc3Bhbj48L2gxPlxuKyAgICA8cD5Zb3VyIGNvbW11bml0eS1wb3dlcmVkIGd1aWRlIHRvIG5hdmlnYXRpbmcgbGlmZSBpbiBJc3JhZWwuIEFzayBxdWVzdGlvbnMsIHNoYXJlIGtub3dsZWRnZSwgYW5kIGhlbHAgZmVsbG93IG9saW0gZmluZCB0aGVpciBmZWV0IGZhc3Rlci48L3A+XG4rICAgIDxkaXYgY2xhc3M9XCJoZXJvLWJ0bnNcIj5cbisgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgb25jbGljaz1cInNob3dQYWdlKCdmb3J1bScpXCI+QXNrIGEgUXVlc3Rpb248L2J1dHRvbj5cbisgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCIgb25jbGljaz1cInNob3dQYWdlKCdiZXN0b2YnKVwiPuKtkCBCcm93c2UgVG9wIEFuc3dlcnM8L2J1dHRvbj5cbisgICAgPC9kaXY+XG4rICA8L2Rpdj5cbitcbisgIDxkaXYgY2xhc3M9XCJ0aXAtYm94XCI+XG4rICAgIDxkaXYgY2xhc3M9XCJ0aXAtbGFiZWxcIj7wn5KhIFRpcCBvZiB0aGUgRGF5PC9kaXY+XG4rICAgIDxwIGlkPVwidGlwLXRleHRcIj5XaGVuIG9wZW5pbmcgYSBiYW5rIGFjY291bnQgaW4gSXNyYWVsLCBicmluZyB5b3VyIFRldWRhdCBPbGVoLCBwYXNzcG9ydCwgYW5kIHByb29mIG9mIGFkZHJlc3MuIEJhbmsgSGFwb2FsaW0gYW5kIEJhbmsgTGV1bWkgYm90aCBoYXZlIGRlZGljYXRlZCBPbGltIGRlcGFydG1lbnRzIHdpdGggRW5nbGlzaC1zcGVha2luZyBzdGFmZi48L3A+XG4rICA8L2Rpdj5cbitcbisgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+SG93IEl0IFdvcmtzPC9kaXY+XG4rICA8ZGl2IGNsYXNzPVwiaG93LWl0LXdvcmtzXCI+XG4rICAgIDxkaXYgY2xhc3M9XCJoaXctY2FyZFwiPjxkaXYgY2xhc3M9XCJoaXctaWNvblwiPuKdkzwvZGl2PjxoMz5Bc2s8L2gzPjxwPlBvc3QgeW91ciBxdWVzdGlvbiBpbiB0aGUgcmVsZXZhbnQgY2F0ZWdvcnkuIEJlIGFzIGRldGFpbGVkIGFzIHlvdSBsaWtlLjwvcD48L2Rpdj5cbisgICAgPGRpdiBjbGFzcz1cImhpdy1jYXJkXCI+PGRpdiBjbGFzcz1cImhpdy1pY29uXCI+8J+SrDwvZGl2PjxoMz5BbnN3ZXI8L2gzPjxwPlRoZSBjb21tdW5pdHkgcmVzcG9uZHMgd2l0aCBhZHZpY2UsIHRpcHMsIGFuZCBwZXJzb25hbCBleHBlcmllbmNlLjwvcD48L2Rpdj5cbisgICAgPGRpdiBjbGFzcz1cImhpdy1jYXJkXCI+PGRpdiBjbGFzcz1cImhpdy1pY29uXCI+8J+RjTwvZGl2PjxoMz5SYXRlPC9oMz48cD5VcHZvdGUgdGhlIG1vc3QgaGVscGZ1bCBhbnN3ZXJzIHNvIHRoZXkgcmlzZSB0byB0aGUgdG9wIGZvciBldmVyeW9uZS48L3A+PC9kaXY+XG4rICAgIDxkaXYgY2xhc3M9XCJoaXctY2FyZFwiPjxkaXYgY2xhc3M9XCJoaXctaWNvblwiPvCfjJ88L2Rpdj48aDM+RGlzY292ZXI8L2gzPjxwPkJyb3dzZSB0b3AtcmF0ZWQgY29udGVudCBvciBzZWFyY2ggYnkga2V5d29yZCB0byBmaW5kIHdoYXQgeW91IG5lZWQgZmFzdC48L3A+PC9kaXY+XG4rICA8L2Rpdj5cbitcbisgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+QnJvd3NlIGJ5IENhdGVnb3J5PC9kaXY+XG4rICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcnktZ3JpZFwiIGlkPVwiaG9tZS1jYXRzXCI+PC9kaXY+XG4rXG4rICA8ZGl2IGNsYXNzPVwiZG9uYXRlLWJhbm5lclwiPlxuKyAgICA8aDM+8J+SmyBPbGltQW5zd2VycyBpcyBmcmVlIGZvciBldmVyeW9uZTwvaDM+XG4rICAgIDxwPlRoaXMgc2l0ZSBpcyBjb21tdW5pdHktcnVuLiBJZiBpdCBoZWxwZWQgeW91LCBjb25zaWRlciBhIHNtYWxsIGRvbmF0aW9uIHRvIGtlZXAgaXQgZ29pbmcuPC9wPlxuKyAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgb25jbGljaz1cInNob3dQYWdlKCdkb25hdGUnKVwiPlN1cHBvcnQgdGhlIFNpdGU8L2J1dHRvbj5cbisgIDwvZGl2PlxuKzwvZGl2PlxuK1xuKzwhLS0gRk9SVU0gLS0+XG4rPGRpdiBjbGFzcz1cInBhZ2VcIiBpZD1cInBhZ2UtZm9ydW1cIj5cbisgIDxkaXYgY2xhc3M9XCJmb3J1bS1oZWFkZXJcIiBzdHlsZT1cImRpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLWJvdHRvbToyMHB4O2ZsZXgtd3JhcDp3cmFwO2dhcDoxMHB4XCI+XG4rICAgIDxkaXY+XG4rICAgICAgPGgyIHN0eWxlPVwiZm9udC1zaXplOjEuNHJlbTtjb2xvcjp2YXIoLS1ibHVlKVwiPvCfl6MgQ29tbXVuaXR5IEZvcnVtPC9oMj5cbisgICAgICA8cCBzdHlsZT1cImZvbnQtc2l6ZTowLjg1cmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tdG9wOjRweFwiPkFzayBxdWVzdGlvbnMsIHNoYXJlIGFuc3dlcnMsIGhlbHAgZmVsbG93IG9saW08L3A+XG4rICAgIDwvZGl2PlxuKyAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTpmbGV4O2dhcDoxMHB4O2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LXdyYXA6d3JhcFwiPlxuKyAgICAgIDxzZWxlY3QgY2xhc3M9XCJzb3J0LXNlbGVjdFwiIGlkPVwiZm9ydW0tc29ydFwiIG9uY2hhbmdlPVwicmVuZGVyRm9ydW0oKVwiPlxuKyAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5ld2VzdFwiPvCflZAgTmV3ZXN0PC9vcHRpb24+XG4rICAgICAgICA8b3B0aW9uIHZhbHVlPVwibW9zdF9hbnN3ZXJzXCI+8J+SrCBNb3N0IFJlc3BvbnNlczwvb3B0aW9uPlxuKyAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImhpZ2hlc3RfcmF0ZWRcIj7irZAgSGlnaGVzdCBSYXRlZDwvb3B0aW9uPlxuKyAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm1vc3Rfdmlld2VkXCI+8J+RgSBNb3N0IFZpZXdlZDwvb3B0aW9uPlxuKyAgICAgIDwvc2VsZWN0PlxuKyAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBvbmNsaWNrPVwidG9nZ2xlQXNrQmFyKClcIiBzdHlsZT1cInBhZGRpbmc6OXB4IDE2cHg7Zm9udC1zaXplOjAuODhyZW1cIj4rIEFzayBhIFF1ZXN0aW9uPC9idXR0b24+XG4rICAgIDwvZGl2PlxuKyAgPC9kaXY+XG4rXG4rICA8ZGl2IGNsYXNzPVwiYXNrLWJhclwiIGlkPVwiYXNrLWJhclwiIHN0eWxlPVwiZGlzcGxheTpub25lXCI+XG4rICAgIDxoMz5Bc2sgYSBOZXcgUXVlc3Rpb248L2gzPlxuKyAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cInEtdGl0bGVcIiBwbGFjZWhvbGRlcj1cIllvdXIgcXVlc3Rpb24gdGl0bGUuLi5cIiAvPlxuKyAgICA8dGV4dGFyZWEgaWQ9XCJxLWJvZHlcIiBwbGFjZWhvbGRlcj1cIkRlc2NyaWJlIHlvdXIgcXVlc3Rpb24gaW4gZGV0YWlsLi4uXCI+PC90ZXh0YXJlYT5cbisgICAgPHNlbGVjdCBpZD1cInEtY2F0XCI+XG4rICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBhIGNhdGVnb3J5Li4uPC9vcHRpb24+XG4rICAgIDwvc2VsZWN0PlxuKyAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cInEtbmFtZVwiIHBsYWNlaG9sZGVyPVwiWW91ciBuYW1lIChvciBsZWF2ZSBibGFuayBmb3IgQW5vbnltb3VzKVwiIC8+XG4rICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OmZsZXg7Z2FwOjEwcHhcIj5cbisgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgb25jbGljaz1cInN1Ym1pdFF1ZXN0aW9uKClcIiBzdHlsZT1cImZsZXg6MVwiPlBvc3QgUXVlc3Rpb248L2J1dHRvbj5cbisgICAgICA8YnV0dG9uIG9uY2xpY2s9XCJjYW5jZWxBc2soKVwiIHN0eWxlPVwiZmxleDpub25lO3BhZGRpbmc6MTJweCAxOHB4O2JvcmRlci1yYWRpdXM6OHB4O2JvcmRlcjoycHggc29saWQgdmFyKC0tYm9yZGVyKTtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MXJlbTtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tbXV0ZWQpXCI+4pyVIENhbmNlbDwvYnV0dG9uPlxuKyAgICA8L2Rpdj5cbisgIDwvZGl2PlxuK1xuKyAgPGRpdiBpZD1cImZvcnVtLWxpc3RcIj48L2Rpdj5cbis8L2Rpdj5cbitcbis8IS0tIENBVEVHT1JZIFBBR0UgLS0+XG4rPGRpdiBjbGFzcz1cInBhZ2VcIiBpZD1cInBhZ2UtY2F0ZWdvcnlcIj5cbisgIDxidXR0b24gY2xhc3M9XCJiYWNrLWJ0blwiIG9uY2xpY2s9XCJzaG93UGFnZSgnZm9ydW0nKVwiPuKGkCBCYWNrIHRvIEZvcnVtPC9idXR0b24+XG4rICA8ZGl2IHN0eWxlPVwiZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW4tYm90dG9tOjIwcHg7ZmxleC13cmFwOndyYXA7Z2FwOjEwcHhcIj5cbisgICAgPGRpdj5cbisgICAgICA8aDIgaWQ9XCJjYXQtcGFnZS10aXRsZVwiIHN0eWxlPVwiZm9udC1zaXplOjEuNHJlbTtjb2xvcjp2YXIoLS1ibHVlKVwiPjwvaDI+XG4rICAgICAgPHAgaWQ9XCJjYXQtcGFnZS1kZXNjXCIgc3R5bGU9XCJmb250LXNpemU6MC44NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLXRvcDo0cHhcIj48L3A+XG4rICAgIDwvZGl2PlxuKyAgICA8c2VsZWN0IGNsYXNzPVwic29ydC1zZWxlY3RcIiBpZD1cImNhdC1zb3J0XCIgb25jaGFuZ2U9XCJyZW5kZXJDYXRlZ29yeVBhZ2UoKVwiPlxuKyAgICAgIDxvcHRpb24gdmFsdWU9XCJuZXdlc3RcIj7wn5WQIE5ld2VzdDwvb3B0aW9uPlxuKyAgICAgIDxvcHRpb24gdmFsdWU9XCJtb3N0X2Fuc3dlcnNcIj7wn5KsIE1vc3QgUmVzcG9uc2VzPC9vcHRpb24+XG4rICAgICAgPG9wdGlvbiB2YWx1ZT1cImhpZ2hlc3RfcmF0ZWRcIj7irZAgSGlnaGVzdCBSYXRlZDwvb3B0aW9uPlxuKyAgICAgIDxvcHRpb24gdmFsdWU9XCJtb3N0X3ZpZXdlZFwiPvCfkYEgTW9zdCBWaWV3ZWQ8L29wdGlvbj5cbisgICAgPC9zZWxlY3Q+XG4rICA8L2Rpdj5cbisgIDxkaXYgaWQ9XCJjYXQtcGFnZS1saXN0XCI+PC9kaXY+XG4rPC9kaXY+XG4rXG4rPCEtLSBRVUVTVElPTiBERVRBSUwgLS0+XG4rPGRpdiBjbGFzcz1cInBhZ2VcIiBpZD1cInBhZ2UtcXVlc3Rpb25cIj5cbisgIDxidXR0b24gY2xhc3M9XCJiYWNrLWJ0blwiIGlkPVwicS1iYWNrLWJ0blwiIG9uY2xpY2s9XCJnb0JhY2soKVwiPuKGkCBCYWNrPC9idXR0b24+XG4rICA8ZGl2IGNsYXNzPVwicS1mdWxsXCIgaWQ9XCJxLWZ1bGwtY29udGVudFwiPjwvZGl2PlxuKyAgPGRpdiBjbGFzcz1cImFuc3dlcnMtc2VjdGlvblwiPlxuKyAgICA8aDMgaWQ9XCJhbnN3ZXJzLWNvdW50XCI+PC9oMz5cbisgICAgPGRpdiBpZD1cImFuc3dlcnMtbGlzdFwiPjwvZGl2PlxuKyAgPC9kaXY+XG4rICA8ZGl2IGNsYXNzPVwiYWRkLWFuc3dlclwiPlxuKyAgICA8aDQ+8J+SrCBBZGQgWW91ciBBbnN3ZXI8L2g0PlxuKyAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cImFucy1uYW1lXCIgcGxhY2Vob2xkZXI9XCJZb3VyIG5hbWUgKG9yIGxlYXZlIGJsYW5rIGZvciBBbm9ueW1vdXMpXCIgLz5cbisgICAgPHRleHRhcmVhIGlkPVwiYW5zLWJvZHlcIiBwbGFjZWhvbGRlcj1cIlNoYXJlIHlvdXIga25vd2xlZGdlIG9yIGV4cGVyaWVuY2UuLi5cIj48L3RleHRhcmVhPlxuKyAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgb25jbGljaz1cInN1Ym1pdEFuc3dlcigpXCI+UG9zdCBBbnN3ZXI8L2J1dHRvbj5cbisgIDwvZGl2PlxuKzwvZGl2PlxuK1xuKzwhLS0gQkVTVCBPRiAtLT5cbis8ZGl2IGNsYXNzPVwicGFnZVwiIGlkPVwicGFnZS1iZXN0b2ZcIj5cbisgIDxkaXYgY2xhc3M9XCJiZXN0LW9mLWhlYWRlclwiPlxuKyAgICA8aDI+4q2QIEJlc3QgT2YgT2xpbUFuc3dlcnM8L2gyPlxuKyAgICA8cD5UaGUgaGlnaGVzdC1yYXRlZCBxdWVzdGlvbnMgYW5kIGFuc3dlcnMgZnJvbSBvdXIgY29tbXVuaXR5IOKAlCB5b3VyIGdvLXRvIHN0YXJ0aW5nIHBvaW50PC9wPlxuKyAgPC9kaXY+XG4rICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXJvd1wiPlxuKyAgICA8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTowLjg1cmVtO2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS1tdXRlZClcIj5GaWx0ZXI6PC9zcGFuPlxuKyAgICA8YnV0dG9uIGNsYXNzPVwiZmlsdGVyLWJ0biBhY3RpdmVcIiBvbmNsaWNrPVwiZmlsdGVyQmVzdE9mKCdhbGwnLHRoaXMpXCI+QWxsIENhdGVnb3JpZXM8L2J1dHRvbj5cbisgICAgPGRpdiBpZD1cImJlc3RvZi1maWx0ZXJzXCI+PC9kaXY+XG4rICA8L2Rpdj5cbisgIDxkaXYgaWQ9XCJiZXN0b2YtbGlzdFwiPjwvZGl2PlxuKzwvZGl2PlxuK1xuKzwhLS0gQ0hFQ0tMSVNUIC0tPlxuKzxkaXYgY2xhc3M9XCJwYWdlXCIgaWQ9XCJwYWdlLWNoZWNrbGlzdFwiPlxuKyAgPGRpdiBjbGFzcz1cImNoZWNrbGlzdC1pbnRyb1wiPlxuKyAgICA8aDI+4pyFIE5ldyBPbGVoIENoZWNrbGlzdDwvaDI+XG4rICAgIDxwIHN0eWxlPVwiY29sb3I6dmFyKC0tbXV0ZWQpO2ZvbnQtc2l6ZTowLjg4cmVtO21hcmdpbi10b3A6NnB4XCI+WW91ciBzdGVwLWJ5LXN0ZXAgZ3VpZGUgdG8gc2V0dGxpbmcgaW4gSXNyYWVsLiBDaGVjayBvZmYgaXRlbXMgYXMgeW91IGdvIOKAlCBwcm9ncmVzcyBzYXZlcyBhdXRvbWF0aWNhbGx5LjwvcD5cbisgIDwvZGl2PlxuKyAgPGRpdiBpZD1cImNoZWNrbGlzdC1jb250ZW50XCI+PC9kaXY+XG4rPC9kaXY+XG4rXG4rPCEtLSBTRUFSQ0ggLS0+XG4rPGRpdiBjbGFzcz1cInBhZ2VcIiBpZD1cInBhZ2Utc2VhcmNoXCI+XG4rICA8aDIgc3R5bGU9XCJmb250LXNpemU6MS40cmVtO2NvbG9yOnZhcigtLWJsdWUpO21hcmdpbi1ib3R0b206MTZweFwiPvCflI0gU2VhcmNoIE9saW1BbnN3ZXJzPC9oMj5cbisgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYmFyLWJpZ1wiPlxuKyAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cInNlYXJjaC1pbnB1dFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIHF1ZXN0aW9ucywgdG9waWNzLCBrZXl3b3Jkcy4uLlwiIG9ua2V5dXA9XCJpZihldmVudC5rZXk9PT0nRW50ZXInKWRvU2VhcmNoKClcIiAvPlxuKyAgICA8YnV0dG9uIG9uY2xpY2s9XCJkb1NlYXJjaCgpXCI+U2VhcmNoPC9idXR0b24+XG4rICA8L2Rpdj5cbisgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCIgc3R5bGU9XCJmb250LXNpemU6MXJlbVwiPlBvcHVsYXIgVG9waWNzPC9kaXY+XG4rICA8ZGl2IGNsYXNzPVwidGFnLWNsb3VkXCIgaWQ9XCJ0YWctY2xvdWRcIj48L2Rpdj5cbisgIDxkaXYgaWQ9XCJzZWFyY2gtcmVzdWx0c1wiPjwvZGl2PlxuKzwvZGl2PlxuK1xuKzwhLS0gQ0FURUdPUklFUyAtLT5cbis8ZGl2IGNsYXNzPVwicGFnZVwiIGlkPVwicGFnZS1jYXRzXCI+XG4rICA8aDIgc3R5bGU9XCJmb250LXNpemU6MS40cmVtO2NvbG9yOnZhcigtLWJsdWUpO21hcmdpbi1ib3R0b206NnB4XCI+8J+TgiBDYXRlZ29yaWVzPC9oMj5cbisgIDxwIHN0eWxlPVwiZm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MjBweFwiPkJyb3dzZSBxdWVzdGlvbnMgYnkgdG9waWM8L3A+XG4rICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcnktZ3JpZFwiIGlkPVwiY2F0cy1ncmlkXCI+PC9kaXY+XG4rPC9kaXY+XG4rXG4rPCEtLSBET05BVEUgLS0+XG4rPGRpdiBjbGFzcz1cInBhZ2VcIiBpZD1cInBhZ2UtZG9uYXRlXCI+XG4rICA8ZGl2IGNsYXNzPVwiZG9uYXRlLXBhZ2VcIj5cbisgICAgPGRpdiBjbGFzcz1cImRvbmF0ZS1oZXJvXCI+XG4rICAgICAgPGRpdiBzdHlsZT1cImZvbnQtc2l6ZTozcmVtO21hcmdpbi1ib3R0b206MTJweFwiPvCfkps8L2Rpdj5cbisgICAgICA8aDI+U3VwcG9ydCBPbGltQW5zd2VyczwvaDI+XG4rICAgICAgPHA+T2xpbUFuc3dlcnMgaXMgZnJlZSBmb3IgZXZlcnkgb2xlaCwgZm9yZXZlci4gSXQncyBidWlsdCBhbmQgbWFpbnRhaW5lZCBieSB0aGUgY29tbXVuaXR5LCBmb3IgdGhlIGNvbW11bml0eS4gWW91ciBkb25hdGlvbiBoZWxwcyBrZWVwIHRoZSBsaWdodHMgb24sIHBheSBmb3IgaG9zdGluZywgYW5kIGFsbG93cyB1cyB0byBncm93IGFuZCBpbXByb3ZlIHRoZSBzaXRlLjwvcD5cbisgICAgICA8cCBzdHlsZT1cIm1hcmdpbi10b3A6MTBweDtmb250LXN0eWxlOml0YWxpYztmb250LXNpemU6MC44NXJlbTtjb2xvcjp2YXIoLS1tdXRlZClcIj5cIkkgd2lzaCB0aGlzIHNpdGUgZXhpc3RlZCB3aGVuIEkgbWFkZSBhbGl5YWguXCIg4oCUIEV2ZXJ5IG9sZWgsIGV2ZXIuPC9wPlxuKyAgICA8L2Rpdj5cbisgICAgPGRpdiBjbGFzcz1cImRvbmF0ZS1hbW91bnRzXCI+XG4rICAgICAgPGJ1dHRvbiBjbGFzcz1cImFtb3VudC1idG5cIiBvbmNsaWNrPVwic2VsZWN0QW1vdW50KHRoaXMsJyQ1JylcIj4kNTwvYnV0dG9uPlxuKyAgICAgIDxidXR0b24gY2xhc3M9XCJhbW91bnQtYnRuXCIgb25jbGljaz1cInNlbGVjdEFtb3VudCh0aGlzLCckMTgnKVwiPiQxOCDinKHvuI88L2J1dHRvbj5cbisgICAgICA8YnV0dG9uIGNsYXNzPVwiYW1vdW50LWJ0biBzZWxlY3RlZFwiIG9uY2xpY2s9XCJzZWxlY3RBbW91bnQodGhpcywnJDM2JylcIj4kMzY8L2J1dHRvbj5cbisgICAgICA8YnV0dG9uIGNsYXNzPVwiYW1vdW50LWJ0blwiIG9uY2xpY2s9XCJzZWxlY3RBbW91bnQodGhpcywnJDEwMCcpXCI+JDEwMDwvYnV0dG9uPlxuKyAgICAgIDxidXR0b24gY2xhc3M9XCJhbW91bnQtYnRuXCIgb25jbGljaz1cInNlbGVjdEFtb3VudCh0aGlzLCdvdGhlcicpXCI+T3RoZXI8L2J1dHRvbj5cbisgICAgPC9kaXY+XG4rICAgIDxidXR0b24gY2xhc3M9XCJkb25hdGUtYnRuLWJpZ1wiIG9uY2xpY2s9XCJzaG93VG9hc3QoJ1RoYW5rIHlvdSEgRG9uYXRpb24gbGluayBjb21pbmcgc29vbiDwn5KbJylcIj5Eb25hdGUgdmlhIFBheVBhbDwvYnV0dG9uPlxuKyAgICA8cCBzdHlsZT1cImZvbnQtc2l6ZTowLjc4cmVtO2NvbG9yOnZhcigtLW11dGVkKVwiPlNlY3VyZSBwYXltZW50LiBFdmVyeSBzaGVrZWwgLyBkb2xsYXIgaGVscHMuPC9wPlxuKyAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxuKyAgICA8cCBzdHlsZT1cImZvbnQtc2l6ZTowLjg1cmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tdG9wOjE2cHhcIj5Zb3UgY2FuIGFsc28gc3VwcG9ydCB1cyBieSBzaGFyaW5nIHRoZSBzaXRlIHdpdGggb3RoZXIgb2xpbSwgY29udHJpYnV0aW5nIGFuc3dlcnMsIGFuZCBmbGFnZ2luZyBvdXRkYXRlZCBpbmZvcm1hdGlvbi4gRXZlcnkgYml0IGNvdW50cyE8L3A+XG4rICA8L2Rpdj5cbis8L2Rpdj5cbitcbis8IS0tIExBTkcgTU9EQUwgLS0+XG4rPGRpdiBjbGFzcz1cIm1vZGFsLW92ZXJsYXlcIiBpZD1cImxhbmctbW9kYWxcIj5cbisgIDxkaXYgY2xhc3M9XCJtb2RhbFwiPlxuKyAgICA8aDM+8J+MkCBDaG9vc2UgTGFuZ3VhZ2U8L2gzPlxuKyAgICA8cD5Db250ZW50IGlzIGF1dG8tdHJhbnNsYXRlZC4gRm9yIGNyaXRpY2FsIGRlY2lzaW9ucywgYWx3YXlzIHZlcmlmeSB3aXRoIG9mZmljaWFsIHNvdXJjZXMuPC9wPlxuKyAgICA8ZGl2IGNsYXNzPVwidHJhbnNsYXRpb24tbm90aWNlXCI+4pqg77iPIElzcmFlbGkgYnVyZWF1Y3JhdGljIHRlcm1zIChUZXVkYXQgWmVodXQsIE1pc3JhZCBIYXBuaW0sIGV0Yy4pIGFyZSBrZXB0IGluIHRoZWlyIG9yaWdpbmFsIGZvcm0gd2l0aCB0b29sdGlwcyB0byBwcmV2ZW50IG1pc3RyYW5zbGF0aW9uLjwvZGl2PlxuKyAgICA8ZGl2IGNsYXNzPVwibGFuZy1ncmlkXCIgaWQ9XCJsYW5nLWdyaWRcIj48L2Rpdj5cbisgICAgPGJ1dHRvbiBjbGFzcz1cIm1vZGFsLWNsb3NlXCIgb25jbGljaz1cImNsb3NlTGFuZ01vZGFsKClcIj5DbG9zZTwvYnV0dG9uPlxuKyAgPC9kaXY+XG4rPC9kaXY+XG4rXG4rPGRpdiBjbGFzcz1cInRvYXN0XCIgaWQ9XCJ0b2FzdFwiPjwvZGl2PlxuK1xuKzxzY3JpcHQ+XG4rY29uc3QgQ0FURUdPUklFUyA9IFtcbisgIHtpZDonYmFua2luZycsaWNvbjon8J+PpicsbmFtZTonQmFua2luZycsZGVzYzonQWNjb3VudHMsIHRyYW5zZmVycywgbW9ydGdhZ2VzJ30sXG4rICB7aWQ6J2hlYWx0aCcsaWNvbjon8J+PpScsbmFtZTonSGVhbHRoIEluc3VyYW5jZScsZGVzYzonS3VwYXQgSG9saW0sIGRvY3RvcnMsIGNvdmVyYWdlJ30sXG4rICB7aWQ6J3RheCcsaWNvbjon8J+TiicsbmFtZTonVGF4JyxkZXNjOidJbmNvbWUgdGF4LCBNYXMgSGFjaG5hc2EsIFZBVCd9LFxuKyAge2lkOidpbnRlcm5ldCcsaWNvbjon8J+TticsbmFtZTonSW50ZXJuZXQgJiBQaG9uZScsZGVzYzonUHJvdmlkZXJzLCBjb250cmFjdHMsIFNJTSBjYXJkcyd9LFxuKyAge2lkOidob3VzaW5nJyxpY29uOifwn4+gJyxuYW1lOidIb3VzaW5nJyxkZXNjOidSZW50aW5nLCBidXlpbmcsIEFybm9uYSd9LFxuKyAge2lkOidnb3YnLGljb246J/CfqqonLG5hbWU6J0dvdmVybm1lbnQgJiBJRHMnLGRlc2M6J1RldWRhdCBaZWh1dCwgTWlzcmFkIEhhcG5pbSd9LFxuKyAge2lkOidlZHVjYXRpb24nLGljb246J/CfjpMnLG5hbWU6J0VkdWNhdGlvbicsZGVzYzonU2Nob29scywgdWxwYW4sIHVuaXZlcnNpdGllcyd9LFxuKyAge2lkOid0cmFuc3BvcnQnLGljb246J/CfmownLG5hbWU6J1RyYW5zcG9ydCcsZGVzYzonRHJpdmluZyBsaWNlbmNlLCBSYXYtS2F2LCBidXNlcyd9LFxuKyAge2lkOidlbXBsb3ltZW50JyxpY29uOifwn5K8JyxuYW1lOidFbXBsb3ltZW50JyxkZXNjOidKb2JzLCBjb250cmFjdHMsIHJpZ2h0cyd9LFxuKyAge2lkOidzb2NpYWwnLGljb246J/CfpJ0nLG5hbWU6J1NvY2lhbCBTZWN1cml0eScsZGVzYzonQml0dWFjaCBMZXVtaSwgYmVuZWZpdHMnfSxcbisgIHtpZDonY3VsdHVyZScsaWNvbjon8J+VjicsbmFtZTonQ3VsdHVyZSAmIExpZmUnLGRlc2M6J0N1c3RvbXMsIGhvbGlkYXlzLCBjb21tdW5pdHknfSxcbisgIHtpZDonb3RoZXInLGljb246J+KdkycsbmFtZTonT3RoZXInLGRlc2M6J0FueXRoaW5nIGVsc2UnfSxcbitdO1xuK1xuK2NvbnN0IFRJUFMgPSBbXG4rICBcIldoZW4gb3BlbmluZyBhIGJhbmsgYWNjb3VudCBpbiBJc3JhZWwsIGJyaW5nIHlvdXIgVGV1ZGF0IE9sZWgsIHBhc3Nwb3J0LCBhbmQgcHJvb2Ygb2YgYWRkcmVzcy4gQmFuayBIYXBvYWxpbSBhbmQgQmFuayBMZXVtaSBib3RoIGhhdmUgZGVkaWNhdGVkIE9saW0gZGVwYXJ0bWVudHMgd2l0aCBFbmdsaXNoLXNwZWFraW5nIHN0YWZmLlwiLFxuKyAgXCJSZWdpc3RlciB3aXRoIGEgS3VwYXQgSG9saW0gKGhlYWx0aCBmdW5kKSB3aXRoaW4gMyBtb250aHMgb2YgYXJyaXZpbmcuIFRoZSA0IG9wdGlvbnMgYXJlIENsYWxpdCwgTWFjY2FiaSwgTWV1aGVkZXQsIGFuZCBMZXVtaXQuIFlvdSBjYW4gc3dpdGNoIG9uY2UgYSB5ZWFyIGluIE5vdmVtYmVyLlwiLFxuKyAgXCJUaGUgVGV1ZGF0IFplaHV0IChuYXRpb25hbCBJRCkgaXMgcmVxdWlyZWQgZm9yIGFsbW9zdCBldmVyeXRoaW5nIGluIElzcmFlbC4gS2VlcCBhIHBob3RvY29weSBhdCBob21lIGFuZCBhIHBob3RvIG9uIHlvdXIgcGhvbmUgYXQgYWxsIHRpbWVzLlwiLFxuKyAgXCJBcm5vbmEgKG11bmljaXBhbCB0YXgpIGJpbGxzIGFyZSBzZW50IHR3aWNlIGEgeWVhci4gTmV3IG9saW0gbWF5IGJlIGVsaWdpYmxlIGZvciBhIGRpc2NvdW50IOKAlCBjaGVjayB3aXRoIHlvdXIgbG9jYWwgbXVuaWNpcGFsaXR5IHdpdGhpbiA5MCBkYXlzIG9mIGFycml2YWwuXCIsXG4rICBcIlRvIGNvbnZlcnQgeW91ciBmb3JlaWduIGRyaXZpbmcgbGljZW5jZSBpbiBJc3JhZWwsIHlvdSBtYXkgYmUgZXhlbXB0IGZyb20gdGFraW5nIGEgZnVsbCB0ZXN0IGlmIHlvdXIgY291bnRyeSBoYXMgYSByZWNpcHJvY2FsIGFncmVlbWVudC4gQ2hlY2sgd2l0aCBNaXNyYWQgSGFUYWNoYnVyYS5cIixcbitdO1xuK1xuK2xldCBxdWVzdGlvbnMgPSBbXG4rICB7aWQ6MSx0aXRsZTpcIkhvdyBkbyBJIG9wZW4gYSBiYW5rIGFjY291bnQgYXMgYSBuZXcgb2xlaD9cIixib2R5OlwiSSBqdXN0IGFycml2ZWQgbGFzdCB3ZWVrIGFuZCBJJ20gdHJ5aW5nIHRvIG9wZW4gYSBiYW5rIGFjY291bnQuIFdoYXQgZG9jdW1lbnRzIGRvIEkgbmVlZCBhbmQgd2hpY2ggYmFuayBpcyBtb3N0IG9sZWgtZnJpZW5kbHk/XCIsY2F0OidiYW5raW5nJyxhdXRob3I6J1NhcmFoIE0uJyxkYXRlOicyMDI0LTEyLTE1Jyx2aWV3czozNDIsbGFuZzonRU4nLGFuc3dlcnM6W1xuKyAgICB7aWQ6MSxib2R5OlwiQmFuayBIYXBvYWxpbSBhbmQgQmFuayBMZXVtaSBib3RoIGhhdmUgZGVkaWNhdGVkIE9saW0gY2VudHJlcyB3aXRoIEVuZ2xpc2ggc3BlYWtpbmcgc3RhZmYuIEJyaW5nIHlvdXIgVGV1ZGF0IE9sZWgsIHBhc3Nwb3J0LCBhbmQgaWYgcG9zc2libGUgYSBwcm9vZiBvZiBhZGRyZXNzLiBUaGUgcHJvY2VzcyB1c3VhbGx5IHRha2VzIDEtMiB2aXNpdHMuIExldW1pJ3Mgb25saW5lIHByb2Nlc3MgaGFzIGltcHJvdmVkIGEgbG90IHJlY2VudGx5LlwiLGF1dGhvcjonRGF2aWQgSy4nLGRhdGU6JzIwMjQtMTItMTUnLHZvdGVzOjQ3LGZsYWdnZWQ6ZmFsc2UsdXNlclZvdGVkOmZhbHNlLGxhbmc6J0VOJ30sXG4rICAgIHtpZDoyLGJvZHk6XCJJIHVzZWQgRGlzY291bnQgQmFuayBhbmQgaGFkIGEgZ3JlYXQgZXhwZXJpZW5jZS4gVGhleSBzZXQgdXAgbXkgYWNjb3VudCB0aGUgc2FtZSBkYXkgYW5kIGdhdmUgbWUgYW4gRW5nbGlzaC1sYW5ndWFnZSBhcHAuIEFsc28gd29ydGggYXNraW5nIGFib3V0IHplcm8tZmVlIGFjY291bnRzIGZvciBuZXcgb2xpbSDigJQgbWFueSBiYW5rcyBvZmZlciB0aGVtIGZvciB0aGUgZmlyc3QgeWVhci5cIixhdXRob3I6J01pcmlhbSBULicsZGF0ZTonMjAyNC0xMi0xNicsdm90ZXM6MzEsZmxhZ2dlZDpmYWxzZSx1c2VyVm90ZWQ6ZmFsc2UsbGFuZzonRU4nfSxcbisgIF19LFxuKyAge2lkOjIsdGl0bGU6XCJXaGljaCBLdXBhdCBIb2xpbSBzaG91bGQgSSBqb2luP1wiLGJvZHk6XCJJIG5lZWQgdG8gcmVnaXN0ZXIgd2l0aCBhIGhlYWx0aCBmdW5kLiBXaGF0IGFyZSB0aGUgbWFpbiBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBmb3VyIG9wdGlvbnMgYW5kIHdoaWNoIGlzIGJlc3QgZm9yIEVuZ2xpc2ggc3BlYWtlcnM/XCIsY2F0OidoZWFsdGgnLGF1dGhvcjonSmFtZXMgUi4nLGRhdGU6JzIwMjQtMTItMTAnLHZpZXdzOjI4OSxsYW5nOidFTicsYW5zd2VyczpbXG4rICAgIHtpZDoxLGJvZHk6XCJNYWNjYWJpIGlzIGdlbmVyYWxseSBjb25zaWRlcmVkIHRoZSBtb3N0IEVuZ2xpc2gtZnJpZW5kbHkgYW5kIGhhcyBhIGdvb2QgYXBwLiBDbGFsaXQgaGFzIHRoZSBtb3N0IGRvY3RvcnMgYW5kIGNsaW5pY3MgYnV0IHRoZSBhcHAgYW5kIHNlcnZpY2UgcXVhbGl0eSB2YXJpZXMuIE1ldWhlZGV0IGlzIHN0cm9uZyBpbiBKZXJ1c2FsZW0uIExldW1pdCBpcyB0aGUgc21hbGxlc3QgYnV0IG9mdGVuIGhhcyBzaG9ydGVyIHdhaXRzLlwiLGF1dGhvcjonWWFlbCBTLicsZGF0ZTonMjAyNC0xMi0xMScsdm90ZXM6NTIsZmxhZ2dlZDpmYWxzZSx1c2VyVm90ZWQ6ZmFsc2UsbGFuZzonRU4nfSxcbisgIF19LFxuKyAge2lkOjMsdGl0bGU6XCLXkNeZ15og16LXldeR15Mg15DXqNeg15XXoNeUINeV15DXnSDXnteS15nXoiDXnNeZINeU16DXl9eUP1wiLGJvZHk6XCLXp9eZ15HXnNeq15kg15fXqdeR15XXnyDXkNeo16DXldeg15Qg15XXkNeg15kg15zXkCDXkdeY15XXlyDXkNeZ15og157Xl9ep15HXmdedINeQ15XXqteVINeV15DXnSDXoteV15zXmdedINeX15PXqdeZ150g157Xp9eR15zXmdedINeU16TXl9eq15QuXCIsY2F0Oidob3VzaW5nJyxhdXRob3I6J9eo15XXoNefINeRLicsZGF0ZTonMjAyNC0xMi0wOCcsdmlld3M6MTc4LGxhbmc6J0hFJyxhbnN3ZXJzOltcbisgICAge2lkOjEsYm9keTpcIteQ16jXoNeV16DXlCDXlNeZ15Ag157XoSDXoteZ16jXldeg15kg16nXntep15zXnteZ150g15zXoteZ16jXmdeUINeU157Xp9eV157XmdeqLiDXoteV15zXmdedINeX15PXqdeZ150g15bXm9eQ15nXnSDXnNeU16DXl9eUICjXkdeT16jXmiDXm9ec15wgNzAtOTAlKSDXnNep16DXlCDXlNeo15DXqdeV16DXlC4g16bXqNeZ15og15zXpNeg15XXqiDXnNei15nXqNeZ15Qg15TXnten15XXnteZ16og16LXnSDXqtei15XXk9eqINeU16LXldec15Qg16rXldeaIDkwINeZ15XXnSDXnteU15LXoteULiDXkNecINeq16TXodek16HXlSDXkNeqINeU15fXnNeV158g15TXlteUIVwiLGF1dGhvcjon15nXotecINepLicsZGF0ZTonMjAyNC0xMi0wOScsdm90ZXM6MzksZmxhZ2dlZDpmYWxzZSx1c2VyVm90ZWQ6ZmFsc2UsbGFuZzonSEUnfSxcbisgIF19LFxuKyAge2lkOjQsdGl0bGU6XCJCZXN0IG1vYmlsZSBwaG9uZSBwcm92aWRlciBmb3Igb2xpbT9cIixib2R5OlwiV2hhdCBTSU0gY2FyZCBvciBjb250cmFjdCBzaG91bGQgSSBnZXQ/IEkgbmVlZCBnb29kIGRhdGEgYW5kIGFmZm9yZGFibGUgY2FsbHMgdG8gdGhlIFVLLlwiLGNhdDonaW50ZXJuZXQnLGF1dGhvcjonRW1tYSBMLicsZGF0ZTonMjAyNC0xMi0wNScsdmlld3M6MjAxLGxhbmc6J0VOJyxhbnN3ZXJzOltcbisgICAge2lkOjEsYm9keTpcIkdvbGFuIFRlbGVjb20gaXMgdGhlIGJlc3QgdmFsdWUgZm9yIG1vc3Qgb2xpbSDigJQgYXJvdW5kIOKCqjMwL21vbnRoIGZvciB1bmxpbWl0ZWQgZGF0YSBhbmQgY2FsbHMuIFBhcnRuZXIgYW5kIENlbGxjb20gYXJlIG1vcmUgZXhwZW5zaXZlIGJ1dCBoYXZlIGJldHRlciBjb3ZlcmFnZSBpbiBzb21lIGFyZWFzLiBGb3IgaW50ZXJuYXRpb25hbCBjYWxscyB0byB0aGUgVUssIGdldCBhIFdoYXRzQXBwIG51bWJlciBvciB1c2UgR29sYW4ncyBpbnRlcm5hdGlvbmFsIGFkZC1vbi5cIixhdXRob3I6J0F2aSBDLicsZGF0ZTonMjAyNC0xMi0wNicsdm90ZXM6MjgsZmxhZ2dlZDpmYWxzZSx1c2VyVm90ZWQ6ZmFsc2UsbGFuZzonRU4nfSxcbisgIF19LFxuK107XG4rXG4rbGV0IG5leHRRSWQgPSA1LCBuZXh0QUlkID0gMTA7XG4rbGV0IGN1cnJlbnRDYXQgPSBudWxsLCBjdXJyZW50UUlkID0gbnVsbCwgcHJldlBhZ2UgPSAnZm9ydW0nLCBjdXJyZW50TGFuZyA9ICdFTic7XG4rXG4rY29uc3QgTEFOR1MgPSBbXG4rICB7Y29kZTonRU4nLGZsYWc6J/Cfh6zwn4enJyxuYW1lOidFbmdsaXNoJywgIG5hdGl2ZTonRW5nbGlzaCd9LFxuKyAge2NvZGU6J0hFJyxmbGFnOifwn4eu8J+HsScsbmFtZTonSGVicmV3JywgICBuYXRpdmU6J9ei15HXqNeZ16onfSxcbisgIHtjb2RlOidSVScsZmxhZzon8J+Ht/Cfh7onLG5hbWU6J1J1c3NpYW4nLCAgbmF0aXZlOifQoNGD0YHRgdC60LjQuSd9LFxuKyAge2NvZGU6J0ZSJyxmbGFnOifwn4er8J+HtycsbmFtZTonRnJlbmNoJywgICBuYXRpdmU6J0ZyYW7Dp2Fpcyd9LFxuKyAge2NvZGU6J0VTJyxmbGFnOifwn4eq8J+HuCcsbmFtZTonU3BhbmlzaCcsICBuYXRpdmU6J0VzcGHDsW9sJ30sXG4rICB7Y29kZTonQVInLGZsYWc6J/Cfh6bwn4eqJyxuYW1lOidBcmFiaWMnLCAgIG5hdGl2ZTon2KfZhNi52LHYqNmK2KknfSxcbisgIHtjb2RlOidBTScsZmxhZzon8J+HqvCfh7knLG5hbWU6J0FtaGFyaWMnLCAgbmF0aXZlOifhiqDhiJvhiK3hipsnfSxcbisgIHtjb2RlOidQVCcsZmxhZzon8J+Hp/Cfh7cnLG5hbWU6J1BvcnR1Z3Vlc2UnLG5hdGl2ZTonUG9ydHVndcOqcyd9LFxuK107XG4rXG4rY29uc3QgQ0hFQ0tMSVNUID0gW1xuKyAge3NlY3Rpb246J0ZpcnN0IDMwIERheXMnLCBpY29uOifwn5qAJywgaXRlbXM6W1xuKyAgICAnQ29sbGVjdCBUZXVkYXQgT2xlaCBmcm9tIHRoZSBhaXJwb3J0IG9yIE1pc3JhZCBIYUFsaXlhaCcsXG4rICAgICdSZWdpc3RlciBhdCBNaXNyYWQgSGFBbGl5YWggKE1pbmlzdHJ5IG9mIEFsaXlhaCkgZm9yIGJlbmVmaXRzJyxcbisgICAgJ0FwcGx5IGZvciBUZXVkYXQgWmVodXQgKE5hdGlvbmFsIElEKSBhdCBNaXNyYWQgSGFwbmltJyxcbisgICAgJ1JlZ2lzdGVyIHdpdGggYSBLdXBhdCBIb2xpbSAoaGVhbHRoIGZ1bmQpJyxcbisgICAgJ09wZW4gYSBiYW5rIGFjY291bnQnLFxuKyAgICAnRW5yb2wgaW4gVWxwYW4gKEhlYnJldyBsYW5ndWFnZSBjb3Vyc2UpJyxcbisgICAgJ1JlZ2lzdGVyIGNoaWxkcmVuIGF0IGxvY2FsIHNjaG9vbCcsXG4rICBdfSxcbisgIHtzZWN0aW9uOidGaXJzdCAzIE1vbnRocycsIGljb246J/Cfk4UnLCBpdGVtczpbXG4rICAgICdBcHBseSBmb3IgQXJub25hIChtdW5pY2lwYWwgdGF4KSBkaXNjb3VudCBhdCBsb2NhbCBJcml5YScsXG4rICAgICdUcmFuc2ZlciBvciBvYnRhaW4gSXNyYWVsaSBkcml2aW5nIGxpY2VuY2UnLFxuKyAgICAnQXBwbHkgZm9yIEJpdHVhY2ggTGV1bWkgKE5hdGlvbmFsIEluc3VyYW5jZSknLFxuKyAgICAnU2V0IHVwIGludGVybmV0IGF0IGhvbWUnLFxuKyAgICAnUmVnaXN0ZXIgd2l0aCBhIGxvY2FsIGRvY3RvciAo16jXldek15Ag157Xqdek15fXlCknLFxuKyAgICAnSm9pbiBsb2NhbCBvbGltIEZhY2Vib29rL1doYXRzQXBwIGdyb3VwcycsXG4rICBdfSxcbisgIHtzZWN0aW9uOidGaXJzdCBZZWFyJywgaWNvbjon8J+ThicsIGl0ZW1zOltcbisgICAgJ0ZpbGUgeW91ciBmaXJzdCBJc3JhZWxpIHRheCByZXR1cm4gaWYgcmVxdWlyZWQnLFxuKyAgICAnUmV2aWV3IHlvdXIgS3VwYXQgSG9saW0g4oCUIHlvdSBjYW4gc3dpdGNoIGV2ZXJ5IE5vdmVtYmVyJyxcbisgICAgJ0NoZWNrIGVudGl0bGVtZW50IHRvIE9sZWggbW9ydGdhZ2UgYmVuZWZpdHMgKE1pc2hrYW50YSknLFxuKyAgICAnQXBwbHkgZm9yIGFueSByZW1haW5pbmcgU2FsIEtsaXRhIChhYnNvcnB0aW9uIGJhc2tldCkgcGF5bWVudHMnLFxuKyAgICAnR2V0IHlvdXIgSXNyYWVsaSBkcml2aW5nIGxpY2VuY2UgaWYgeW91IGhhdmVuXFwndCBhbHJlYWR5JyxcbisgIF19LFxuK107XG4rXG4rZnVuY3Rpb24gc2hvd1BhZ2UocCwgZGF0YSl7XG4rICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucGFnZScpLmZvckVhY2goeD0+eC5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKSk7XG4rICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFnZS0nK3ApLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpO1xuKyAgaWYocD09PSdob21lJykgcmVuZGVySG9tZUNhdHMoKTtcbisgIGlmKHA9PT0nZm9ydW0nKSByZW5kZXJGb3J1bSgpO1xuKyAgaWYocD09PSdiZXN0b2YnKSByZW5kZXJCZXN0T2YoKTtcbisgIGlmKHA9PT0nY2hlY2tsaXN0JykgcmVuZGVyQ2hlY2tsaXN0KCk7XG4rICBpZihwPT09J3NlYXJjaCcpIHJlbmRlclRhZ0Nsb3VkKCk7XG4rICBpZihwPT09J2NhdHMnKSByZW5kZXJDYXRzUGFnZSgpO1xuKyAgaWYocD09PSdjYXRlZ29yeScmJmRhdGEpe2N1cnJlbnRDYXQ9ZGF0YTtyZW5kZXJDYXRlZ29yeVBhZ2UoKTt9XG4rICBpZihwPT09J3F1ZXN0aW9uJyYmZGF0YSl7Y3VycmVudFFJZD1kYXRhO3JlbmRlclF1ZXN0aW9uKCk7fVxuKyAgd2luZG93LnNjcm9sbFRvKDAsMCk7XG4rfVxuK1xuK2Z1bmN0aW9uIHJlbmRlckhvbWVDYXRzKCl7XG4rICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaG9tZS1jYXRzJykuaW5uZXJIVE1MID0gQ0FURUdPUklFUy5tYXAoYz0+YFxuKyAgICA8ZGl2IGNsYXNzPVwiY2F0LWNhcmRcIiBvbmNsaWNrPVwicHJldlBhZ2U9J2hvbWUnO3Nob3dQYWdlKCdjYXRlZ29yeScsJyR7Yy5pZH0nKVwiPlxuKyAgICAgIDxkaXYgY2xhc3M9XCJjYXQtaWNvblwiPiR7Yy5pY29ufTwvZGl2PlxuKyAgICAgIDxoND4ke2MubmFtZX08L2g0PlxuKyAgICAgIDxwPiR7Yy5kZXNjfTwvcD5cbisgICAgICA8cCBzdHlsZT1cImZvbnQtc2l6ZTowLjcycmVtO2NvbG9yOnZhcigtLWJsdWUpO21hcmdpbi10b3A6NnB4O2ZvbnQtd2VpZ2h0OjYwMFwiPiR7cXVlc3Rpb25zLmZpbHRlcihxPT5xLmNhdD09PWMuaWQpLmxlbmd0aH0gcXVlc3Rpb25zPC9wPlxuKyAgICA8L2Rpdj5gKS5qb2luKCcnKTtcbisgIGNvbnN0IHRpcHMgPSBUSVBTO1xuKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RpcC10ZXh0JykudGV4dENvbnRlbnQgPSB0aXBzW01hdGguZmxvb3IoRGF0ZS5ub3coKS84NjQwMDAwMCkldGlwcy5sZW5ndGhdO1xuK31cbitcbitmdW5jdGlvbiBzb3J0UXVlc3Rpb25zKHFzLCBtZXRob2Qpe1xuKyAgcmV0dXJuIFsuLi5xc10uc29ydCgoYSxiKT0+e1xuKyAgICBpZihtZXRob2Q9PT0nbmV3ZXN0JykgcmV0dXJuIGIuaWQtYS5pZDtcbisgICAgaWYobWV0aG9kPT09J21vc3RfYW5zd2VycycpIHJldHVybiBiLmFuc3dlcnMubGVuZ3RoLWEuYW5zd2Vycy5sZW5ndGg7XG4rICAgIGlmKG1ldGhvZD09PSdoaWdoZXN0X3JhdGVkJykgcmV0dXJuIG1heFZvdGVzKGIpLW1heFZvdGVzKGEpO1xuKyAgICBpZihtZXRob2Q9PT0nbW9zdF92aWV3ZWQnKSByZXR1cm4gYi52aWV3cy1hLnZpZXdzO1xuKyAgICByZXR1cm4gYi5pZC1hLmlkO1xuKyAgfSk7XG4rfVxuK1xuK2Z1bmN0aW9uIG1heFZvdGVzKHEpe3JldHVybiBxLmFuc3dlcnMubGVuZ3RoP01hdGgubWF4KC4uLnEuYW5zd2Vycy5tYXAoYT0+YS52b3RlcykpOjA7fVxuK2Z1bmN0aW9uIGF2Z1ZvdGVzKHEpe3JldHVybiBxLmFuc3dlcnMubGVuZ3RoP3EuYW5zd2Vycy5yZWR1Y2UoKHMsYSk9PnMrYS52b3RlcywwKS9xLmFuc3dlcnMubGVuZ3RoOjA7fVxuK1xuK2Z1bmN0aW9uIHJlbmRlckZvcnVtKCl7XG4rICBjb25zdCBzb3J0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZvcnVtLXNvcnQnKT8udmFsdWV8fCduZXdlc3QnO1xuKyAgY29uc3QgcXMgPSBzb3J0UXVlc3Rpb25zKHF1ZXN0aW9ucywgc29ydCk7XG4rICBjb25zdCBjYXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1jYXQnKTtcbisgIGlmKGNhdCkgY2F0LmlubmVySFRNTD0nPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBhIGNhdGVnb3J5Li4uPC9vcHRpb24+JytDQVRFR09SSUVTLm1hcChjPT5gPG9wdGlvbiB2YWx1ZT1cIiR7Yy5pZH1cIj4ke2MuaWNvbn0gJHtjLm5hbWV9PC9vcHRpb24+YCkuam9pbignJyk7XG4rICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ydW0tbGlzdCcpLmlubmVySFRNTCA9IHFzLmxlbmd0aCA/IHFzLm1hcChxPT5xQ2FyZChxLCdmb3J1bScpKS5qb2luKCcnKSA6IGVtcHR5U3RhdGUoJ05vIHF1ZXN0aW9ucyB5ZXQuIEJlIHRoZSBmaXJzdCB0byBhc2shJyk7XG4rfVxuK1xuK2Z1bmN0aW9uIHJlbmRlckNhdGVnb3J5UGFnZSgpe1xuKyAgY29uc3QgY2F0ID0gQ0FURUdPUklFUy5maW5kKGM9PmMuaWQ9PT1jdXJyZW50Q2F0KTtcbisgIGlmKCFjYXQpIHJldHVybjtcbisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXQtcGFnZS10aXRsZScpLnRleHRDb250ZW50ID0gY2F0Lmljb24rJyAnK2NhdC5uYW1lO1xuKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdC1wYWdlLWRlc2MnKS50ZXh0Q29udGVudCA9IGNhdC5kZXNjO1xuKyAgY29uc3Qgc29ydCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXQtc29ydCcpPy52YWx1ZXx8J25ld2VzdCc7XG4rICBjb25zdCBxcyA9IHNvcnRRdWVzdGlvbnMocXVlc3Rpb25zLmZpbHRlcihxPT5xLmNhdD09PWN1cnJlbnRDYXQpLCBzb3J0KTtcbisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXQtcGFnZS1saXN0JykuaW5uZXJIVE1MID0gcXMubGVuZ3RoID8gcXMubWFwKHE9PnFDYXJkKHEsJ2NhdGVnb3J5JykpLmpvaW4oJycpIDogZW1wdHlTdGF0ZSgnTm8gcXVlc3Rpb25zIGluIHRoaXMgY2F0ZWdvcnkgeWV0LicpO1xuK31cbitcbitmdW5jdGlvbiBxQ2FyZChxLGZyb20pe1xuKyAgY29uc3QgdG9wVm90ZXMgPSBxLmFuc3dlcnMubGVuZ3RoP01hdGgubWF4KC4uLnEuYW5zd2Vycy5tYXAoYT0+YS52b3RlcykpOjA7XG4rICBjb25zdCBjYXQgPSBDQVRFR09SSUVTLmZpbmQoYz0+Yy5pZD09PXEuY2F0KTtcbisgIHJldHVybiBgPGRpdiBjbGFzcz1cInEtY2FyZFwiIG9uY2xpY2s9XCJwcmV2UGFnZT0nJHtmcm9tfSc7c2hvd1BhZ2UoJ3F1ZXN0aW9uJywke3EuaWR9KVwiPlxuKyAgICA8ZGl2IGNsYXNzPVwicS1tZXRhXCI+XG4rICAgICAgPHNwYW4gY2xhc3M9XCJxLWNhdC1iYWRnZVwiPiR7Y2F0P2NhdC5pY29uKycgJytjYXQubmFtZTpxLmNhdH08L3NwYW4+XG4rICAgICAgPHNwYW4gY2xhc3M9XCJxLWF1dGhvclwiPvCfkaQgJHtxLmF1dGhvcn08L3NwYW4+XG4rICAgICAgPHNwYW4gY2xhc3M9XCJxLWRhdGVcIj7wn5OFICR7cS5kYXRlfTwvc3Bhbj5cbisgICAgICAke3RvcFZvdGVzPj0zMD9gPHNwYW4gY2xhc3M9XCJmZWF0dXJlZC1iYWRnZVwiPuKtkCBGZWF0dXJlZDwvc3Bhbj5gOicnfVxuKyAgICA8L2Rpdj5cbisgICAgPGRpdiBjbGFzcz1cInEtdGl0bGVcIj4ke3EudGl0bGV9PC9kaXY+XG4rICAgIDxkaXYgY2xhc3M9XCJxLXByZXZpZXdcIj4ke3EuYm9keS5zdWJzdHJpbmcoMCwxMjApfSR7cS5ib2R5Lmxlbmd0aD4xMjA/Jy4uLic6Jyd9PC9kaXY+XG4rICAgIDxkaXYgY2xhc3M9XCJxLXN0YXRzXCI+XG4rICAgICAgPHNwYW4+8J+SrCAke3EuYW5zd2Vycy5sZW5ndGh9IGFuc3dlciR7cS5hbnN3ZXJzLmxlbmd0aCE9PTE/J3MnOicnfTwvc3Bhbj5cbisgICAgICA8c3Bhbj7wn5GBICR7cS52aWV3c30gdmlld3M8L3NwYW4+XG4rICAgICAgPHNwYW4+4q2QIFRvcCB2b3RlOiAke3RvcFZvdGVzfTwvc3Bhbj5cbisgICAgPC9kaXY+XG4rICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOjZweFwiPiR7bGFuZ0JhZGdlKHEubGFuZyl9PC9kaXY+XG4rICA8L2Rpdj5gO1xuK31cbitcbitmdW5jdGlvbiByZW5kZXJRdWVzdGlvbigpe1xuKyAgY29uc3QgcSA9IHF1ZXN0aW9ucy5maW5kKHg9PnguaWQ9PT1jdXJyZW50UUlkKTtcbisgIGlmKCFxKXtyZXR1cm47fVxuKyAgcS52aWV3cysrO1xuKyAgY29uc3QgY2F0ID0gQ0FURUdPUklFUy5maW5kKGM9PmMuaWQ9PT1xLmNhdCk7XG4rICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1mdWxsLWNvbnRlbnQnKS5pbm5lckhUTUw9YFxuKyAgICA8ZGl2IGNsYXNzPVwicS1tZXRhXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOjEycHhcIj5cbisgICAgICA8c3BhbiBjbGFzcz1cInEtY2F0LWJhZGdlXCIgc3R5bGU9XCJjdXJzb3I6cG9pbnRlclwiIG9uY2xpY2s9XCJzaG93UGFnZSgnY2F0ZWdvcnknLCcke3EuY2F0fScpXCI+JHtjYXQ/Y2F0Lmljb24rJyAnK2NhdC5uYW1lOnEuY2F0fTwvc3Bhbj5cbisgICAgICA8c3BhbiBjbGFzcz1cInEtYXV0aG9yXCI+8J+RpCAke3EuYXV0aG9yfTwvc3Bhbj5cbisgICAgICA8c3BhbiBjbGFzcz1cInEtZGF0ZVwiPvCfk4UgJHtxLmRhdGV9PC9zcGFuPlxuKyAgICA8L2Rpdj5cbisgICAgPGgyPiR7cS50aXRsZX08L2gyPlxuKyAgICA8ZGl2IGNsYXNzPVwiYm9keVwiIHN0eWxlPVwibWFyZ2luLXRvcDoxMnB4XCI+JHtxLmJvZHl9PC9kaXY+YDtcbisgIGNvbnN0IHNvcnRlZCA9IFsuLi5xLmFuc3dlcnNdLnNvcnQoKGEsYik9PmIudm90ZXMtYS52b3Rlcyk7XG4rICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zd2Vycy1jb3VudCcpLnRleHRDb250ZW50ID0gYCR7cS5hbnN3ZXJzLmxlbmd0aH0gQW5zd2VyJHtxLmFuc3dlcnMubGVuZ3RoIT09MT8ncyc6Jyd9YDtcbisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbnN3ZXJzLWxpc3QnKS5pbm5lckhUTUwgPSBzb3J0ZWQubGVuZ3RoID8gc29ydGVkLm1hcCgoYSxpKT0+YFxuKyAgICA8ZGl2IGNsYXNzPVwiYW5zd2VyLWNhcmQgJHtpPT09MCYmYS52b3Rlcz4wPyd0b3AtYW5zd2VyJzonJ31cIj5cbisgICAgICAke2k9PT0wJiZhLnZvdGVzPjA/JzxkaXYgY2xhc3M9XCJ0b3AtYW5zd2VyLWxhYmVsXCI+4q2QIFRvcCBBbnN3ZXI8L2Rpdj4nOicnfVxuKyAgICAgIDxkaXYgY2xhc3M9XCJhbnN3ZXItYm9keVwiPiR7YS5ib2R5fTwvZGl2PlxuKyAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tYm90dG9tOjhweFwiPiR7bGFuZ0JhZGdlKGEubGFuZyl9PC9kaXY+XG4rICAgICAgPGRpdiBjbGFzcz1cImFuc3dlci1mb290ZXJcIj5cbisgICAgICAgIDxkaXYgY2xhc3M9XCJhbnN3ZXItbWV0YVwiPvCfkaQgJHthLmF1dGhvcn0gwrcg8J+ThSAke2EuZGF0ZX08L2Rpdj5cbisgICAgICAgIDxkaXYgY2xhc3M9XCJ2b3RlLWJ0bnNcIj5cbisgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInZvdGUtYnRuICR7YS51c2VyVm90ZWQ/J2xpa2VkJzonJ31cIiBvbmNsaWNrPVwidm90ZSgke3EuaWR9LCR7YS5pZH0pXCI+XG4rICAgICAgICAgICAg8J+RjSAke2Eudm90ZXN9XG4rICAgICAgICAgIDwvYnV0dG9uPlxuKyAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZmxhZy1idG5cIiBvbmNsaWNrPVwiZmxhZ0Fuc3dlcigke3EuaWR9LCR7YS5pZH0pXCI+8J+aqSAke2EuZmxhZ2dlZD8nRmxhZ2dlZCc6J0ZsYWcnfTwvYnV0dG9uPlxuKyAgICAgICAgPC9kaXY+XG4rICAgICAgPC9kaXY+XG4rICAgICAgJHthLmZsYWdnZWQ/JzxkaXYgc3R5bGU9XCJmb250LXNpemU6MC43NXJlbTtjb2xvcjp2YXIoLS1yZWQpO21hcmdpbi10b3A6OHB4XCI+4pqg77iPIFRoaXMgYW5zd2VyIGhhcyBiZWVuIGZsYWdnZWQgZm9yIHJldmlldy4gUGxlYXNlIHZlcmlmeSB3aXRoIG9mZmljaWFsIHNvdXJjZXMuPC9kaXY+JzonJ31cbisgICAgPC9kaXY+YCkuam9pbignJykgOiAnPGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCI+PGRpdiBjbGFzcz1cImljb25cIj7wn5KsPC9kaXY+PHA+Tm8gYW5zd2VycyB5ZXQuIEJlIHRoZSBmaXJzdCB0byBoZWxwITwvcD48L2Rpdj4nO1xuK31cbitcbitmdW5jdGlvbiBnb0JhY2soKXtzaG93UGFnZShwcmV2UGFnZT09PSdjYXRlZ29yeSc/J2NhdGVnb3J5JzonZm9ydW0nLCBwcmV2UGFnZT09PSdjYXRlZ29yeSc/Y3VycmVudENhdDpudWxsKTt9XG4rXG4rZnVuY3Rpb24gdG9nZ2xlQXNrQmFyKCl7XG4rICBjb25zdCBiID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fzay1iYXInKTtcbisgIGIuc3R5bGUuZGlzcGxheSA9IGIuc3R5bGUuZGlzcGxheT09PSdub25lJz8nYmxvY2snOidub25lJztcbit9XG4rZnVuY3Rpb24gY2FuY2VsQXNrKCl7XG4rICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS10aXRsZScpLnZhbHVlPScnO1xuKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtYm9keScpLnZhbHVlPScnO1xuKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtY2F0JykudmFsdWU9Jyc7XG4rICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1uYW1lJykudmFsdWU9Jyc7XG4rICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXNrLWJhcicpLnN0eWxlLmRpc3BsYXk9J25vbmUnO1xuK31cbitmdW5jdGlvbiByZW5kZXJDYXRzUGFnZSgpe1xuKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdHMtZ3JpZCcpLmlubmVySFRNTCA9IENBVEVHT1JJRVMubWFwKGM9PmBcbisgICAgPGRpdiBjbGFzcz1cImNhdC1jYXJkXCIgb25jbGljaz1cInByZXZQYWdlPSdjYXRzJztzaG93UGFnZSgnY2F0ZWdvcnknLCcke2MuaWR9JylcIj5cbisgICAgICA8ZGl2IGNsYXNzPVwiY2F0LWljb25cIj4ke2MuaWNvbn08L2Rpdj5cbisgICAgICA8aDQ+JHtjLm5hbWV9PC9oND5cbisgICAgICA8cD4ke2MuZGVzY308L3A+XG4rICAgICAgPHAgc3R5bGU9XCJmb250LXNpemU6MC43MnJlbTtjb2xvcjp2YXIoLS1ibHVlKTttYXJnaW4tdG9wOjZweDtmb250LXdlaWdodDo2MDBcIj4ke3F1ZXN0aW9ucy5maWx0ZXIocT0+cS5jYXQ9PT1jLmlkKS5sZW5ndGh9IHF1ZXN0aW9uczwvcD5cbisgICAgPC9kaXY+YCkuam9pbignJyk7XG4rfVxuK1xuK2Z1bmN0aW9uIHN1Ym1pdFF1ZXN0aW9uKCl7XG4rICBjb25zdCB0aXRsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLXRpdGxlJykudmFsdWUudHJpbSgpO1xuKyAgY29uc3QgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLWJvZHknKS52YWx1ZS50cmltKCk7XG4rICBjb25zdCBjYXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1jYXQnKS52YWx1ZTtcbisgIGNvbnN0IG5hbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1uYW1lJykudmFsdWUudHJpbSgpfHwnQW5vbnltb3VzJztcbisgIGlmKCF0aXRsZXx8IWJvZHl8fCFjYXQpe3Nob3dUb2FzdCgnUGxlYXNlIGZpbGwgaW4gYWxsIGZpZWxkcyDinYwnKTtyZXR1cm47fVxuKyAgcXVlc3Rpb25zLnVuc2hpZnQoe2lkOm5leHRRSWQrKyx0aXRsZSxib2R5LGNhdCxhdXRob3I6bmFtZSxkYXRlOm5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zbGljZSgwLDEwKSx2aWV3czowLGxhbmc6Y3VycmVudExhbmcsYW5zd2VyczpbXX0pO1xuKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtdGl0bGUnKS52YWx1ZT0nJztcbisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLWJvZHknKS52YWx1ZT0nJztcbisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLWNhdCcpLnZhbHVlPScnO1xuKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtbmFtZScpLnZhbHVlPScnO1xuKyAgdG9nZ2xlQXNrQmFyKCk7XG4rICByZW5kZXJGb3J1bSgpO1xuKyAgc2hvd1RvYXN0KCdRdWVzdGlvbiBwb3N0ZWQhIOKchScpO1xuK31cbitcbitmdW5jdGlvbiBzdWJtaXRBbnN3ZXIoKXtcbisgIGNvbnN0IHEgPSBxdWVzdGlvbnMuZmluZCh4PT54LmlkPT09Y3VycmVudFFJZCk7XG4rICBpZighcSkgcmV0dXJuO1xuKyAgY29uc3QgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbnMtYm9keScpLnZhbHVlLnRyaW0oKTtcbisgIGNvbnN0IG5hbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zLW5hbWUnKS52YWx1ZS50cmltKCl8fCdBbm9ueW1vdXMnO1xuKyAgaWYoIWJvZHkpe3Nob3dUb2FzdCgnUGxlYXNlIHdyaXRlIGFuIGFuc3dlciDinYwnKTtyZXR1cm47fVxuKyAgcS5hbnN3ZXJzLnB1c2goe2lkOm5leHRBSWQrKyxib2R5LGF1dGhvcjpuYW1lLGRhdGU6bmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNsaWNlKDAsMTApLHZvdGVzOjAsZmxhZ2dlZDpmYWxzZSx1c2VyVm90ZWQ6ZmFsc2UsbGFuZzpjdXJyZW50TGFuZ30pO1xuKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fucy1ib2R5JykudmFsdWU9Jyc7XG4rICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zLW5hbWUnKS52YWx1ZT0nJztcbisgIHJlbmRlclF1ZXN0aW9uKCk7XG4rICBzaG93VG9hc3QoJ0Fuc3dlciBwb3N0ZWQhIOKchScpO1xuK31cbitcbitmdW5jdGlvbiB2b3RlKHFJZCxhSWQpe1xuKyAgY29uc3QgcSA9IHF1ZXN0aW9ucy5maW5kKHg9PnguaWQ9PT1xSWQpO1xuKyAgY29uc3QgYSA9IHE/LmFuc3dlcnMuZmluZCh4PT54LmlkPT09YUlkKTtcbisgIGlmKCFhKSByZXR1cm47XG4rICBhLnVzZXJWb3RlZD0hYS51c2VyVm90ZWQ7XG4rICBhLnZvdGVzKz1hLnVzZXJWb3RlZD8xOi0xO1xuKyAgcmVuZGVyUXVlc3Rpb24oKTtcbit9XG4rXG4rZnVuY3Rpb24gZmxhZ0Fuc3dlcihxSWQsYUlkKXtcbisgIGNvbnN0IHEgPSBxdWVzdGlvbnMuZmluZCh4PT54LmlkPT09cUlkKTtcbisgIGNvbnN0IGEgPSBxPy5hbnN3ZXJzLmZpbmQoeD0+eC5pZD09PWFJZCk7XG4rICBpZighYSkgcmV0dXJuO1xuKyAgYS5mbGFnZ2VkPSFhLmZsYWdnZWQ7XG4rICByZW5kZXJRdWVzdGlvbigpO1xuKyAgc2hvd1RvYXN0KGEuZmxhZ2dlZD8nQW5zd2VyIGZsYWdnZWQgZm9yIHJldmlldyDwn5qpJzonRmxhZyByZW1vdmVkJyk7XG4rfVxuK1xuK2Z1bmN0aW9uIHJlbmRlckJlc3RPZihmaWx0ZXJDYXQpe1xuKyAgY29uc3QgZmlsdGVycyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZXN0b2YtZmlsdGVycycpO1xuKyAgZmlsdGVycy5pbm5lckhUTUwgPSBDQVRFR09SSUVTLm1hcChjPT5gPGJ1dHRvbiBjbGFzcz1cImZpbHRlci1idG5cIiBvbmNsaWNrPVwiZmlsdGVyQmVzdE9mKCcke2MuaWR9Jyx0aGlzKVwiPiR7Yy5pY29ufSAke2MubmFtZX08L2J1dHRvbj5gKS5qb2luKCcnKTtcbisgIGNvbnN0IHRocmVzaG9sZCA9IDIwO1xuKyAgbGV0IHFzID0gcXVlc3Rpb25zLmZpbHRlcihxPT5tYXhWb3RlcyhxKT49dGhyZXNob2xkIHx8IGF2Z1ZvdGVzKHEpPj0xNSk7XG4rICBpZihmaWx0ZXJDYXQmJmZpbHRlckNhdCE9PSdhbGwnKSBxcz1xcy5maWx0ZXIocT0+cS5jYXQ9PT1maWx0ZXJDYXQpO1xuKyAgcXMuc29ydCgoYSxiKT0+bWF4Vm90ZXMoYiktbWF4Vm90ZXMoYSkpO1xuKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jlc3RvZi1saXN0JykuaW5uZXJIVE1MID0gcXMubGVuZ3RoXG4rICAgID8gYDxwIHN0eWxlPVwiZm9udC1zaXplOjAuODJyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MTZweFwiPlNob3dpbmcgJHtxcy5sZW5ndGh9IGhpZ2hseS1yYXRlZCBxdWVzdGlvbiR7cXMubGVuZ3RoIT09MT8ncyc6Jyd9PC9wPmArcXMubWFwKHE9PnFDYXJkKHEsJ2Jlc3RvZicpKS5qb2luKCcnKVxuKyAgICA6IGVtcHR5U3RhdGUoJ0FzIHRoZSBjb21tdW5pdHkgZ3Jvd3MsIHRvcC1yYXRlZCBhbnN3ZXJzIHdpbGwgYXBwZWFyIGhlcmUuIFN0YXJ0IGFuc3dlcmluZyBxdWVzdGlvbnMhJyk7XG4rfVxuK1xuK2Z1bmN0aW9uIGZpbHRlckJlc3RPZihjYXQsYnRuKXtcbisgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5maWx0ZXItYnRuJykuZm9yRWFjaChiPT5iLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpKTtcbisgIGlmKGJ0bikgYnRuLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpO1xuKyAgcmVuZGVyQmVzdE9mKGNhdD09PSdhbGwnP251bGw6Y2F0KTtcbit9XG4rXG4rZnVuY3Rpb24gcmVuZGVyQ2hlY2tsaXN0KCl7XG4rICBjb25zdCBzYXZlZCA9IHt9O1xuKyAgdHJ5e2NvbnN0IHM9c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY2hlY2tsaXN0Jyk7aWYocylPYmplY3QuYXNzaWduKHNhdmVkLEpTT04ucGFyc2UocykpO31jYXRjaChlKXt9XG4rICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hlY2tsaXN0LWNvbnRlbnQnKS5pbm5lckhUTUwgPSBDSEVDS0xJU1QubWFwKChzLHNpKT0+YFxuKyAgICA8ZGl2IGNsYXNzPVwiY2hlY2tsaXN0LXNlY3Rpb25cIj5cbisgICAgICA8aDM+JHtzLmljb259ICR7cy5zZWN0aW9ufTwvaDM+XG4rICAgICAgJHtzLml0ZW1zLm1hcCgoaXRlbSxpaSk9PntcbisgICAgICAgIGNvbnN0IGtleT1gJHtzaX0tJHtpaX1gO1xuKyAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwiY2hlY2tsaXN0LWl0ZW1cIj5cbisgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwiY2hrLSR7a2V5fVwiICR7c2F2ZWRba2V5XT8nY2hlY2tlZCc6Jyd9IG9uY2hhbmdlPVwic2F2ZUNoZWNrKCcke2tleX0nLHRoaXMuY2hlY2tlZClcIiAvPlxuKyAgICAgICAgICA8bGFiZWwgZm9yPVwiY2hrLSR7a2V5fVwiPiR7aXRlbX08L2xhYmVsPlxuKyAgICAgICAgPC9kaXY+YDtcbisgICAgICB9KS5qb2luKCcnKX1cbisgICAgPC9kaXY+YCkuam9pbignJyk7XG4rfVxuK1xuK2Z1bmN0aW9uIHNhdmVDaGVjayhrZXksdmFsKXtcbisgIHRyeXtcbisgICAgY29uc3Qgcz1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdjaGVja2xpc3QnKTtcbisgICAgY29uc3QgZGF0YT1zP0pTT04ucGFyc2Uocyk6e307XG4rICAgIGRhdGFba2V5XT12YWw7XG4rICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2NoZWNrbGlzdCcsSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuKyAgfWNhdGNoKGUpe31cbit9XG4rXG4rZnVuY3Rpb24gcmVuZGVyVGFnQ2xvdWQoKXtcbisgIGNvbnN0IHRhZ3M9WydCYW5raW5nJywnSGVhbHRoIEluc3VyYW5jZScsJ1RldWRhdCBaZWh1dCcsJ0t1cGF0IEhvbGltJywnVGF4JywnQXJub25hJywnQml0dWFjaCBMZXVtaScsJ1VscGFuJywnSW50ZXJuZXQnLCdQaG9uZScsJ0hvdXNpbmcnLCdEcml2aW5nIExpY2VuY2UnLCdTY2hvb2wnLCdFbXBsb3ltZW50JywnTWlzcmFkIEhhcG5pbSddO1xuKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhZy1jbG91ZCcpLmlubmVySFRNTD10YWdzLm1hcCh0PT5gPHNwYW4gY2xhc3M9XCJ0YWctY2xvdWQtaXRlbVwiIG9uY2xpY2s9XCJzZWFyY2hUYWcoJyR7dH0nKVwiPiR7dH08L3NwYW4+YCkuam9pbignJyk7XG4rfVxuK1xuK2Z1bmN0aW9uIHNlYXJjaFRhZyh0KXtcbisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWFyY2gtaW5wdXQnKS52YWx1ZT10O1xuKyAgZG9TZWFyY2goKTtcbit9XG4rXG4rZnVuY3Rpb24gZG9TZWFyY2goKXtcbisgIGNvbnN0IHRlcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoLWlucHV0JykudmFsdWUudG9Mb3dlckNhc2UoKS50cmltKCk7XG4rICBpZighdGVybSl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlYXJjaC1yZXN1bHRzJykuaW5uZXJIVE1MPScnO3JldHVybjt9XG4rICBjb25zdCByZXN1bHRzID0gcXVlc3Rpb25zLmZpbHRlcihxPT5cbisgICAgcS50aXRsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pfHxcbisgICAgcS5ib2R5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSl8fFxuKyAgICBxLmFuc3dlcnMuc29tZShhPT5hLmJvZHkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSl8fFxuKyAgICAoQ0FURUdPUklFUy5maW5kKGM9PmMuaWQ9PT1xLmNhdCk/Lm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSlcbisgICk7XG4rICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoLXJlc3VsdHMnKS5pbm5lckhUTUwgPSByZXN1bHRzLmxlbmd0aFxuKyAgICA/IGA8cCBzdHlsZT1cImZvbnQtc2l6ZTowLjgycmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tYm90dG9tOjE2cHhcIj4ke3Jlc3VsdHMubGVuZ3RofSByZXN1bHQke3Jlc3VsdHMubGVuZ3RoIT09MT8ncyc6Jyd9IGZvciBcIjxzdHJvbmc+JHt0ZXJtfTwvc3Ryb25nPlwiPC9wPmArcmVzdWx0cy5tYXAocT0+cUNhcmQocSwnc2VhcmNoJykpLmpvaW4oJycpXG4rICAgIDogYDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiPjxkaXYgY2xhc3M9XCJpY29uXCI+8J+UjTwvZGl2PjxwPk5vIHJlc3VsdHMgZm91bmQgZm9yIFwiPHN0cm9uZz4ke3Rlcm19PC9zdHJvbmc+XCIuIFRyeSBhIGRpZmZlcmVudCBrZXl3b3JkIG9yIDxhIGhyZWY9XCIjXCIgb25jbGljaz1cInNob3dQYWdlKCdmb3J1bScpO3JldHVybiBmYWxzZTtcIiBzdHlsZT1cImNvbG9yOnZhcigtLWJsdWUpXCI+YXNrIGEgcXVlc3Rpb248L2E+ITwvcD48L2Rpdj5gO1xuK31cbitcbitmdW5jdGlvbiBsYW5nRmxhZyhjb2RlKXtyZXR1cm4gKExBTkdTLmZpbmQobD0+bC5jb2RlPT09Y29kZSl8fHtmbGFnOifwn4yQJ30pLmZsYWc7fVxuK2Z1bmN0aW9uIGxhbmdOYW1lKGNvZGUpe3JldHVybiAoTEFOR1MuZmluZChsPT5sLmNvZGU9PT1jb2RlKXx8e25hbWU6Y29kZX0pLm5hbWU7fVxuK2Z1bmN0aW9uIGxhbmdOYXRpdmUoY29kZSl7cmV0dXJuIChMQU5HUy5maW5kKGw9PmwuY29kZT09PWNvZGUpfHx7bmF0aXZlOmNvZGV9KS5uYXRpdmU7fVxuK2Z1bmN0aW9uIGxhbmdCYWRnZShpdGVtTGFuZyl7XG4rICBjb25zdCB0cmFuc2xhdGVkID0gaXRlbUxhbmcgJiYgaXRlbUxhbmchPT1jdXJyZW50TGFuZztcbisgIGlmKCFpdGVtTGFuZykgcmV0dXJuICcnO1xuKyAgcmV0dXJuIGA8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTowLjcycmVtO2NvbG9yOnZhcigtLW11dGVkKTtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4O21hcmdpbi10b3A6NHB4XCI+XG4rICAgIE9yaWdpbmFsbHkgaW4gJHtsYW5nTmF0aXZlKGl0ZW1MYW5nKX0ke3RyYW5zbGF0ZWQ/JyDCtyA8c3BhbiBzdHlsZT1cImNvbG9yOnZhcigtLWJsdWUpO2ZvbnQtd2VpZ2h0OjYwMFwiPvCflIQgQXV0by10cmFuc2xhdGVkPC9zcGFuPic6Jyd9XG4rICA8L3NwYW4+YDtcbit9XG4rZnVuY3Rpb24gb3BlbkxhbmdNb2RhbCgpe1xuKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xhbmctbW9kYWwnKS5jbGFzc0xpc3QuYWRkKCdvcGVuJyk7XG4rICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFuZy1ncmlkJykuaW5uZXJIVE1MPUxBTkdTLm1hcChsPT5gPGRpdiBjbGFzcz1cImxhbmctb3B0aW9uICR7bC5jb2RlPT09Y3VycmVudExhbmc/J2FjdGl2ZSc6Jyd9XCIgb25jbGljaz1cInNlbGVjdExhbmcoJyR7bC5jb2RlfScsdGhpcylcIj4ke2wubmF0aXZlfTwvZGl2PmApLmpvaW4oJycpO1xuK31cbitmdW5jdGlvbiBjbG9zZUxhbmdNb2RhbCgpe2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYW5nLW1vZGFsJykuY2xhc3NMaXN0LnJlbW92ZSgnb3BlbicpO31cbitmdW5jdGlvbiBzZWxlY3RMYW5nKGNvZGUsZWwpe1xuKyAgY3VycmVudExhbmc9Y29kZTtcbisgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5sYW5nLW9wdGlvbicpLmZvckVhY2goeD0+eC5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKSk7XG4rICBlbC5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTtcbisgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5sYW5nLWJ0bicpLnRleHRDb250ZW50PWxhbmdGbGFnKGNvZGUpO1xuKyAgc2V0VGltZW91dCgoKT0+e2Nsb3NlTGFuZ01vZGFsKCk7c2hvd1RvYXN0KCdMYW5ndWFnZSBzZXQgdG8gJytsYW5nTmFtZShjb2RlKSsnIOKAlCBhdXRvLXRyYW5zbGF0aW9uIGFjdGl2ZSDwn4yQJyk7fSwzMDApO1xuK31cbitcbitmdW5jdGlvbiBzZWxlY3RBbW91bnQoYnRuLHYpe1xuKyAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmFtb3VudC1idG4nKS5mb3JFYWNoKGI9PmIuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKSk7XG4rICBidG4uY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKTtcbit9XG4rXG4rZnVuY3Rpb24gc2hvd1RvYXN0KG1zZyl7XG4rICBjb25zdCB0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2FzdCcpO1xuKyAgdC50ZXh0Q29udGVudD1tc2c7dC5jbGFzc0xpc3QuYWRkKCdzaG93Jyk7XG4rICBzZXRUaW1lb3V0KCgpPT50LmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKSwzMDAwKTtcbit9XG4rZnVuY3Rpb24gZW1wdHlTdGF0ZShtc2cpe3JldHVybiBgPGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCI+PGRpdiBjbGFzcz1cImljb25cIj7wn5KsPC9kaXY+PHA+JHttc2d9PC9wPjwvZGl2PmA7fVxuK1xuKy8vIEluaXRcbityZW5kZXJIb21lQ2F0cygpO1xuKzwvc2NyaXB0PlxuKzwvYm9keT5cbis8L2h0bWw+IiwiYmVmb3JlRnVsbEZpbGVDb250ZW50IjoiIiwiYWZ0ZXJGdWxsRmlsZUNvbnRlbnQiOiI8IURPQ1RZUEUgaHRtbD5cbjxodG1sIGxhbmc9XCJlblwiPlxuPGhlYWQ+XG48bWV0YSBjaGFyc2V0PVwiVVRGLThcIj5cbjxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wXCI+XG48dGl0bGU+T2xpbUFuc3dlcnMuY29tPC90aXRsZT5cbjxzdHlsZT5cbiAgOnJvb3Qge1xuICAgIC0tYmx1ZTojMWE1ZmE4Oy0tYmx1ZS1saWdodDojZThmMGZiOy0tZ29sZDojZjBiNDI5Oy0tZ29sZC1saWdodDojZmZmOGU3O1xuICAgIC0tZ3JlZW46IzFhOGE0YTstLXJlZDojYzAzOTJiOy0tZ3JheTojZjRmNmY5Oy0tdGV4dDojMWExYTJlOy0tbXV0ZWQ6IzZiNzI4MDtcbiAgICAtLWJvcmRlcjojZGRlM2VkOy0td2hpdGU6I2ZmZmZmZjstLXNoYWRvdzowIDJweCAxMnB4IHJnYmEoMCwwLDAsMC4wOCk7XG4gIH1cbiAgKntib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luOjA7cGFkZGluZzowfVxuICBib2R5e2ZvbnQtZmFtaWx5OidTZWdvZSBVSScsc3lzdGVtLXVpLHNhbnMtc2VyaWY7Y29sb3I6dmFyKC0tdGV4dCk7YmFja2dyb3VuZDp2YXIoLS1ncmF5KTttaW4taGVpZ2h0OjEwMHZofVxuICAvKiBOQVYgKi9cbiAgbmF2e2JhY2tncm91bmQ6dmFyKC0tYmx1ZSk7Y29sb3I6I2ZmZjtwYWRkaW5nOjAgMjRweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2hlaWdodDo2MHB4O3Bvc2l0aW9uOnN0aWNreTt0b3A6MDt6LWluZGV4OjEwMDtib3gtc2hhZG93OjAgMnB4IDhweCByZ2JhKDAsMCwwLDAuMil9XG4gIC5uYXYtbG9nb3tmb250LXNpemU6MS40NXJlbTtmb250LXdlaWdodDo4MDA7Y3Vyc29yOnBvaW50ZXI7bGV0dGVyLXNwYWNpbmc6LTAuNXB4O2xpbmUtaGVpZ2h0OjEuMTttYXJnaW4tcmlnaHQ6MTJweDtmbGV4LXNocmluazowfVxuICAubmF2LWxvZ28gc3BhbntkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZTowLjc4cmVtO2ZvbnQtd2VpZ2h0OjUwMDtsZXR0ZXItc3BhY2luZzoxLjVweDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7b3BhY2l0eTowLjg1fVxuICAubmF2LWxvZ286aG92ZXJ7b3BhY2l0eTowLjg1fVxuICAubmF2LWxvZ28gc3Bhbntjb2xvcjp2YXIoLS1nb2xkKX1cbiAgLm5hdi1saW5rc3tkaXNwbGF5OmZsZXg7Z2FwOjZweDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC13cmFwOndyYXB9XG4gIC5uYXYtbGlua3MgYnV0dG9ue2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtjb2xvcjojZmZmO3BhZGRpbmc6NnB4IDEwcHg7Ym9yZGVyLXJhZGl1czo2cHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjAuODJyZW07Zm9udC13ZWlnaHQ6NTAwO3RyYW5zaXRpb246YmFja2dyb3VuZCAwLjJzfVxuICAubmF2LWxpbmtzIGJ1dHRvbjpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMC4xNSl9XG4gIC5uYXYtbGlua3MgLm5hdi1kb25hdGV7YmFja2dyb3VuZDp2YXIoLS1nb2xkKTtjb2xvcjp2YXIoLS10ZXh0KTtmb250LXdlaWdodDo3MDA7cGFkZGluZzo2cHggMTJweDtib3JkZXItcmFkaXVzOjZweH1cbiAgLm5hdi1saW5rcyAubmF2LWRvbmF0ZTpob3ZlcntiYWNrZ3JvdW5kOiNlMGE4MDB9XG4gIC5sYW5nLWJ0bntiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMC4xNSkhaW1wb3J0YW50O2JvcmRlcjoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjMpIWltcG9ydGFudDtmb250LXNpemU6MC43OHJlbSFpbXBvcnRhbnR9XG5cbiAgLyogUEFHRVMgKi9cbiAgLnBhZ2V7ZGlzcGxheTpub25lO21heC13aWR0aDoxMTAwcHg7bWFyZ2luOjAgYXV0bztwYWRkaW5nOjI4cHggMjBweH1cbiAgLnBhZ2UuYWN0aXZle2Rpc3BsYXk6YmxvY2t9XG5cbiAgLyogSE9NRSAqL1xuICAuaGVyb3tiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsdmFyKC0tYmx1ZSkgMCUsIzI0NzFjOCAxMDAlKTtjb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6MTZweDtwYWRkaW5nOjQ4cHggNDBweDt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tYm90dG9tOjMycHh9XG4gIC5oZXJvIGgxe2ZvbnQtc2l6ZToyLjRyZW07Zm9udC13ZWlnaHQ6ODAwO21hcmdpbi1ib3R0b206MTJweH1cbiAgLmhlcm8gaDEgc3Bhbntjb2xvcjp2YXIoLS1nb2xkKX1cbiAgLmhlcm8gcHtmb250LXNpemU6MS4xcmVtO29wYWNpdHk6MC45MjttYXgtd2lkdGg6NjIwcHg7bWFyZ2luOjAgYXV0byAyNHB4O2xpbmUtaGVpZ2h0OjEuNn1cbiAgLmhlcm8tYnRuc3tkaXNwbGF5OmZsZXg7Z2FwOjEycHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LXdyYXA6d3JhcH1cbiAgLmJ0bntwYWRkaW5nOjEycHggMjRweDtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MC45NXJlbTtmb250LXdlaWdodDo3MDA7dHJhbnNpdGlvbjphbGwgMC4yc31cbiAgLmJ0bi1wcmltYXJ5e2JhY2tncm91bmQ6dmFyKC0tZ29sZCk7Y29sb3I6dmFyKC0tdGV4dCl9XG4gIC5idG4tcHJpbWFyeTpob3ZlcntiYWNrZ3JvdW5kOiNlMGE4MDA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCl9XG4gIC5idG4tb3V0bGluZXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOiNmZmY7Ym9yZGVyOjJweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuNil9XG4gIC5idG4tb3V0bGluZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMC4xKX1cbiAgLmhvdy1pdC13b3Jrc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpdCxtaW5tYXgoMjAwcHgsMWZyKSk7Z2FwOjIwcHg7bWFyZ2luLWJvdHRvbTozMnB4fVxuICAuaGl3LWNhcmR7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjRweDt0ZXh0LWFsaWduOmNlbnRlcjtib3gtc2hhZG93OnZhcigtLXNoYWRvdyl9XG4gIC5oaXctaWNvbntmb250LXNpemU6MnJlbTttYXJnaW4tYm90dG9tOjEwcHh9XG4gIC5oaXctY2FyZCBoM3tmb250LXNpemU6MXJlbTttYXJnaW4tYm90dG9tOjZweDtjb2xvcjp2YXIoLS1ibHVlKX1cbiAgLmhpdy1jYXJkIHB7Zm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO2xpbmUtaGVpZ2h0OjEuNX1cbiAgLnNlY3Rpb24tdGl0bGV7Zm9udC1zaXplOjEuM3JlbTtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbToxNnB4O2NvbG9yOnZhcigtLWJsdWUpfVxuICAuY2F0ZWdvcnktZ3JpZHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpbGwsbWlubWF4KDE2MHB4LDFmcikpO2dhcDoxNHB4O21hcmdpbi1ib3R0b206MzJweH1cbiAgLmNhdC1jYXJke2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjE4cHggMTRweDt0ZXh0LWFsaWduOmNlbnRlcjtjdXJzb3I6cG9pbnRlcjtib3JkZXI6MnB4IHNvbGlkIHRyYW5zcGFyZW50O3RyYW5zaXRpb246YWxsIDAuMnM7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpfVxuICAuY2F0LWNhcmQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWJsdWUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpfVxuICAuY2F0LWljb257Zm9udC1zaXplOjEuOHJlbTttYXJnaW4tYm90dG9tOjhweH1cbiAgLmNhdC1jYXJkIGg0e2ZvbnQtc2l6ZTowLjg4cmVtO2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS10ZXh0KX1cbiAgLmNhdC1jYXJkIHB7Zm9udC1zaXplOjAuNzVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi10b3A6NHB4fVxuICAuZG9uYXRlLWJhbm5lcntiYWNrZ3JvdW5kOnZhcigtLWdvbGQtbGlnaHQpO2JvcmRlcjoycHggc29saWQgdmFyKC0tZ29sZCk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjRweDt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tYm90dG9tOjMycHh9XG4gIC5kb25hdGUtYmFubmVyIGgze2ZvbnQtc2l6ZToxLjFyZW07bWFyZ2luLWJvdHRvbTo4cHh9XG4gIC5kb25hdGUtYmFubmVyIHB7Zm9udC1zaXplOjAuODhyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MTRweH1cbiAgLnRpcC1ib3h7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCNlOGY1ZTksI2YwZmFmNCk7Ym9yZGVyLWxlZnQ6NHB4IHNvbGlkIHZhcigtLWdyZWVuKTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxOHB4IDIwcHg7bWFyZ2luLWJvdHRvbTozMnB4fVxuICAudGlwLWJveCAudGlwLWxhYmVse2ZvbnQtc2l6ZTowLjc1cmVtO2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1ncmVlbik7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2xldHRlci1zcGFjaW5nOjFweDttYXJnaW4tYm90dG9tOjZweH1cbiAgLnRpcC1ib3ggcHtmb250LXNpemU6MC45MnJlbTtsaW5lLWhlaWdodDoxLjV9XG5cbiAgLyogRk9SVU0gLyBDQVRFR09SWSAqL1xuICAuZm9ydW0taGVhZGVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47bWFyZ2luLWJvdHRvbToyMHB4O2ZsZXgtd3JhcDpnYXB9XG4gIC5zb3J0LXNlbGVjdHtwYWRkaW5nOjhweCAxMnB4O2JvcmRlci1yYWRpdXM6OHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtmb250LXNpemU6MC44NXJlbTtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtjdXJzb3I6cG9pbnRlcjtjb2xvcjp2YXIoLS10ZXh0KX1cbiAgLmFzay1iYXJ7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjBweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWFyZ2luLWJvdHRvbToyNHB4fVxuICAuYXNrLWJhciBoM3tmb250LXNpemU6MXJlbTttYXJnaW4tYm90dG9tOjEycHg7Y29sb3I6dmFyKC0tYmx1ZSl9XG4gIC5hc2stYmFyIGlucHV0LC5hc2stYmFyIHRleHRhcmVhLC5hc2stYmFyIHNlbGVjdHt3aWR0aDoxMDAlO3BhZGRpbmc6MTBweCAxNHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjhweDtmb250LXNpemU6MC45cmVtO21hcmdpbi1ib3R0b206MTBweDtmb250LWZhbWlseTppbmhlcml0O2NvbG9yOnZhcigtLXRleHQpfVxuICAuYXNrLWJhciB0ZXh0YXJlYXtyZXNpemU6dmVydGljYWw7bWluLWhlaWdodDo4MHB4fVxuICAudGFnLWlucHV0e2Rpc3BsYXk6ZmxleDtnYXA6OHB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MTBweH1cbiAgLnRhZ3tiYWNrZ3JvdW5kOnZhcigtLWJsdWUtbGlnaHQpO2NvbG9yOnZhcigtLWJsdWUpO3BhZGRpbmc6NHB4IDEwcHg7Ym9yZGVyLXJhZGl1czoyMHB4O2ZvbnQtc2l6ZTowLjc4cmVtO2ZvbnQtd2VpZ2h0OjYwMDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHh9XG4gIC50YWcgLnJlbW92ZXtjb2xvcjp2YXIoLS1yZWQpO2ZvbnQtd2VpZ2h0OjcwMH1cbiAgLnEtY2FyZHtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyMHB4O2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KTttYXJnaW4tYm90dG9tOjE2cHg7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpib3gtc2hhZG93IDAuMnN9XG4gIC5xLWNhcmQ6aG92ZXJ7Ym94LXNoYWRvdzowIDRweCAyMHB4IHJnYmEoMCwwLDAsMC4xMil9XG4gIC5xLW1ldGF7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjhweH1cbiAgLnEtY2F0LWJhZGdle2JhY2tncm91bmQ6dmFyKC0tYmx1ZS1saWdodCk7Y29sb3I6dmFyKC0tYmx1ZSk7Zm9udC1zaXplOjAuNzJyZW07Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6M3B4IDlweDtib3JkZXItcmFkaXVzOjEycHh9XG4gIC5xLWRhdGV7Zm9udC1zaXplOjAuNzVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpfVxuICAucS1hdXRob3J7Zm9udC1zaXplOjAuNzVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpfVxuICAucS10aXRsZXtmb250LXNpemU6MS4wNXJlbTtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbTo2cHh9XG4gIC5xLXByZXZpZXd7Zm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO2xpbmUtaGVpZ2h0OjEuNTttYXJnaW4tYm90dG9tOjEwcHh9XG4gIC5xLXN0YXRze2Rpc3BsYXk6ZmxleDtnYXA6MTRweDtmb250LXNpemU6MC44cmVtO2NvbG9yOnZhcigtLW11dGVkKX1cbiAgLnEtc3RhdHMgc3BhbntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHh9XG4gIC5mZWF0dXJlZC1iYWRnZXtiYWNrZ3JvdW5kOnZhcigtLWdvbGQpO2NvbG9yOnZhcigtLXRleHQpO2ZvbnQtc2l6ZTowLjdyZW07Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6MnB4IDhweDtib3JkZXItcmFkaXVzOjEwcHg7bWFyZ2luLWxlZnQ6OHB4fVxuXG4gIC8qIFFVRVNUSU9OIERFVEFJTCAqL1xuICAuYmFjay1idG57YmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO2NvbG9yOnZhcigtLWJsdWUpO2ZvbnQtc2l6ZTowLjlyZW07Y3Vyc29yOnBvaW50ZXI7bWFyZ2luLWJvdHRvbToxNnB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDtmb250LXdlaWdodDo2MDB9XG4gIC5xLWZ1bGx7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjRweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWFyZ2luLWJvdHRvbToyNHB4fVxuICAucS1mdWxsIGgye2ZvbnQtc2l6ZToxLjNyZW07bWFyZ2luLWJvdHRvbToxMnB4fVxuICAucS1mdWxsIC5ib2R5e2ZvbnQtc2l6ZTowLjkycmVtO2xpbmUtaGVpZ2h0OjEuNzttYXJnaW4tYm90dG9tOjE2cHh9XG4gIC50YWdzLXJvd3tkaXNwbGF5OmZsZXg7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjE2cHh9XG4gIC5hbnN3ZXJzLXNlY3Rpb24gaDN7Zm9udC1zaXplOjEuMXJlbTtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbToxNnB4O2NvbG9yOnZhcigtLWJsdWUpfVxuICAuYW5zd2VyLWNhcmR7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MThweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWFyZ2luLWJvdHRvbToxNHB4O2JvcmRlci1sZWZ0OjRweCBzb2xpZCB0cmFuc3BhcmVudH1cbiAgLmFuc3dlci1jYXJkLnRvcC1hbnN3ZXJ7Ym9yZGVyLWxlZnQtY29sb3I6dmFyKC0tZ29sZCl9XG4gIC50b3AtYW5zd2VyLWxhYmVse2ZvbnQtc2l6ZTowLjcycmVtO2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1nb2xkKTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bGV0dGVyLXNwYWNpbmc6MC44cHg7bWFyZ2luLWJvdHRvbTo2cHh9XG4gIC5hbnN3ZXItYm9keXtmb250LXNpemU6MC45cmVtO2xpbmUtaGVpZ2h0OjEuNzttYXJnaW4tYm90dG9tOjEycHh9XG4gIC5hbnN3ZXItZm9vdGVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47ZmxleC13cmFwOndyYXA7Z2FwOjhweH1cbiAgLmFuc3dlci1tZXRhe2ZvbnQtc2l6ZTowLjc4cmVtO2NvbG9yOnZhcigtLW11dGVkKX1cbiAgLnZvdGUtYnRuc3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHh9XG4gIC52b3RlLWJ0bntiYWNrZ3JvdW5kOnZhcigtLWdyYXkpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjVweCAxMnB4O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjgycmVtO2ZvbnQtd2VpZ2h0OjYwMDt0cmFuc2l0aW9uOmFsbCAwLjJzO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweH1cbiAgLnZvdGUtYnRuLmxpa2Vke2JhY2tncm91bmQ6dmFyKC0tYmx1ZS1saWdodCk7Ym9yZGVyLWNvbG9yOnZhcigtLWJsdWUpO2NvbG9yOnZhcigtLWJsdWUpfVxuICAudm90ZS1idG46aG92ZXJ7dHJhbnNmb3JtOnNjYWxlKDEuMDUpfVxuICAuZmxhZy1idG57YmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO2NvbG9yOnZhcigtLW11dGVkKTtmb250LXNpemU6MC43OHJlbTtjdXJzb3I6cG9pbnRlcn1cbiAgLmZsYWctYnRuOmhvdmVye2NvbG9yOnZhcigtLXJlZCl9XG4gIC5hZGQtYW5zd2Vye2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjIwcHg7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpO21hcmdpbi10b3A6MjRweH1cbiAgLmFkZC1hbnN3ZXIgaDR7bWFyZ2luLWJvdHRvbToxMnB4O2NvbG9yOnZhcigtLWJsdWUpfVxuICAuYWRkLWFuc3dlciB0ZXh0YXJlYXt3aWR0aDoxMDAlO3BhZGRpbmc6MTJweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czo4cHg7bWluLWhlaWdodDoxMDBweDtyZXNpemU6dmVydGljYWw7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6MC45cmVtO21hcmdpbi1ib3R0b206MTBweH1cbiAgLmFkZC1hbnN3ZXIgaW5wdXR7d2lkdGg6MTAwJTtwYWRkaW5nOjEwcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4O2ZvbnQtc2l6ZTowLjg4cmVtO21hcmdpbi1ib3R0b206MTBweDtmb250LWZhbWlseTppbmhlcml0fVxuXG4gIC8qIEJFU1QgT0YgKi9cbiAgLmJlc3Qtb2YtaGVhZGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZyx2YXIoLS1nb2xkLWxpZ2h0KSwjZmZmZGU3KTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyNHB4O21hcmdpbi1ib3R0b206MjRweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdvbGQpO3RleHQtYWxpZ246Y2VudGVyfVxuICAuYmVzdC1vZi1oZWFkZXIgaDJ7Y29sb3I6dmFyKC0tdGV4dCk7bWFyZ2luLWJvdHRvbTo2cHh9XG4gIC5iZXN0LW9mLWhlYWRlciBwe2NvbG9yOnZhcigtLW11dGVkKTtmb250LXNpemU6MC44OHJlbX1cbiAgLmZpbHRlci1yb3d7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MjBweDthbGlnbi1pdGVtczpjZW50ZXJ9XG4gIC5maWx0ZXItYnRue3BhZGRpbmc6NnB4IDE0cHg7Ym9yZGVyLXJhZGl1czoyMHB4O2JvcmRlcjoycHggc29saWQgdmFyKC0tYm9yZGVyKTtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MC44MnJlbTtmb250LXdlaWdodDo2MDA7dHJhbnNpdGlvbjphbGwgMC4yc31cbiAgLmZpbHRlci1idG4uYWN0aXZle2JhY2tncm91bmQ6dmFyKC0tYmx1ZSk7Y29sb3I6I2ZmZjtib3JkZXItY29sb3I6dmFyKC0tYmx1ZSl9XG5cbiAgLyogQ0hFQ0tMSVNUICovXG4gIC5jaGVja2xpc3QtaW50cm97YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCNlOGY1ZTksI2YwZmFmNCk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjRweDttYXJnaW4tYm90dG9tOjI0cHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ncmVlbik7dGV4dC1hbGlnbjpjZW50ZXJ9XG4gIC5jaGVja2xpc3QtaW50cm8gaDJ7Y29sb3I6dmFyKC0tZ3JlZW4pO21hcmdpbi1ib3R0b206NnB4fVxuICAuY2hlY2tsaXN0LXNlY3Rpb257YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjBweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWFyZ2luLWJvdHRvbToxNnB4fVxuICAuY2hlY2tsaXN0LXNlY3Rpb24gaDN7Zm9udC1zaXplOjFyZW07Y29sb3I6dmFyKC0tYmx1ZSk7bWFyZ2luLWJvdHRvbToxMnB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweH1cbiAgLmNoZWNrbGlzdC1pdGVte2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDoxMnB4O3BhZGRpbmc6MTBweCAwO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWJvcmRlcil9XG4gIC5jaGVja2xpc3QtaXRlbTpsYXN0LWNoaWxke2JvcmRlci1ib3R0b206bm9uZX1cbiAgLmNoZWNrbGlzdC1pdGVtIGlucHV0W3R5cGU9Y2hlY2tib3hde3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7bWFyZ2luLXRvcDoycHg7Y3Vyc29yOnBvaW50ZXI7YWNjZW50LWNvbG9yOnZhcigtLWJsdWUpfVxuICAuY2hlY2tsaXN0LWl0ZW0gbGFiZWx7Zm9udC1zaXplOjAuOXJlbTtsaW5lLWhlaWdodDoxLjU7Y3Vyc29yOnBvaW50ZXI7ZmxleDoxfVxuICAuY2hlY2tsaXN0LWl0ZW0gLmxpbmstYnRue2ZvbnQtc2l6ZTowLjc1cmVtO2NvbG9yOnZhcigtLWJsdWUpO2N1cnNvcjpwb2ludGVyO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7YmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO21hcmdpbi1sZWZ0OmF1dG87d2hpdGUtc3BhY2U6bm93cmFwfVxuXG4gIC8qIFNFQVJDSCAqL1xuICAuc2VhcmNoLWJhci1iaWd7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O21hcmdpbi1ib3R0b206MjRweH1cbiAgLnNlYXJjaC1iYXItYmlnIGlucHV0e2ZsZXg6MTtwYWRkaW5nOjE0cHggMThweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czoxMHB4O2ZvbnQtc2l6ZToxcmVtO2ZvbnQtZmFtaWx5OmluaGVyaXR9XG4gIC5zZWFyY2gtYmFyLWJpZyBpbnB1dDpmb2N1c3tvdXRsaW5lOm5vbmU7Ym9yZGVyLWNvbG9yOnZhcigtLWJsdWUpfVxuICAuc2VhcmNoLWJhci1iaWcgYnV0dG9ue2JhY2tncm91bmQ6dmFyKC0tYmx1ZSk7Y29sb3I6I2ZmZjtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxNHB4IDI0cHg7Zm9udC1zaXplOjFyZW07Zm9udC13ZWlnaHQ6NzAwO2N1cnNvcjpwb2ludGVyfVxuICAudGFnLWNsb3Vke2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4O21hcmdpbi1ib3R0b206MjRweH1cbiAgLnRhZy1jbG91ZC1pdGVte2JhY2tncm91bmQ6dmFyKC0tYmx1ZS1saWdodCk7Y29sb3I6dmFyKC0tYmx1ZSk7cGFkZGluZzo2cHggMTRweDtib3JkZXItcmFkaXVzOjIwcHg7Zm9udC1zaXplOjAuODJyZW07Zm9udC13ZWlnaHQ6NjAwO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246YWxsIDAuMnN9XG4gIC50YWctY2xvdWQtaXRlbTpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWJsdWUpO2NvbG9yOiNmZmZ9XG5cbiAgLyogRE9OQVRFICovXG4gIC5kb25hdGUtcGFnZXt0ZXh0LWFsaWduOmNlbnRlcjttYXgtd2lkdGg6NjAwcHg7bWFyZ2luOjAgYXV0b31cbiAgLmRvbmF0ZS1oZXJve2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZyx2YXIoLS1nb2xkLWxpZ2h0KSwjZmZmOGUxKTtib3JkZXItcmFkaXVzOjE2cHg7cGFkZGluZzo0MHB4O21hcmdpbi1ib3R0b206MjRweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdvbGQpfVxuICAuZG9uYXRlLWhlcm8gaDJ7Zm9udC1zaXplOjEuOHJlbTttYXJnaW4tYm90dG9tOjEycHh9XG4gIC5kb25hdGUtaGVybyBwe2NvbG9yOnZhcigtLW11dGVkKTtsaW5lLWhlaWdodDoxLjc7bWFyZ2luLWJvdHRvbToyMHB4fVxuICAuZG9uYXRlLWFtb3VudHN7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7ZmxleC13cmFwOndyYXA7bWFyZ2luLWJvdHRvbToyMHB4fVxuICAuYW1vdW50LWJ0bntwYWRkaW5nOjEwcHggMjBweDtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdvbGQpO2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjlyZW07Zm9udC13ZWlnaHQ6NzAwO3RyYW5zaXRpb246YWxsIDAuMnN9XG4gIC5hbW91bnQtYnRuLnNlbGVjdGVkLC5hbW91bnQtYnRuOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tZ29sZCk7Y29sb3I6dmFyKC0tdGV4dCl9XG4gIC5kb25hdGUtYnRuLWJpZ3tiYWNrZ3JvdW5kOnZhcigtLWdvbGQpO2NvbG9yOnZhcigtLXRleHQpO2JvcmRlcjpub25lO3BhZGRpbmc6MTRweCA0MHB4O2JvcmRlci1yYWRpdXM6MTBweDtmb250LXNpemU6MS4xcmVtO2ZvbnQtd2VpZ2h0OjgwMDtjdXJzb3I6cG9pbnRlcjt3aWR0aDoxMDAlO21hcmdpbi1ib3R0b206MTJweH1cblxuICAvKiBMQU5HIE1PREFMICovXG4gIC5tb2RhbC1vdmVybGF5e2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjpmaXhlZDtpbnNldDowO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjUpO3otaW5kZXg6MjAwO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVxuICAubW9kYWwtb3ZlcmxheS5vcGVue2Rpc3BsYXk6ZmxleH1cbiAgLm1vZGFse2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTZweDtwYWRkaW5nOjI4cHg7bWF4LXdpZHRoOjQyMHB4O3dpZHRoOjkwJTtib3gtc2hhZG93OjAgOHB4IDQwcHggcmdiYSgwLDAsMCwwLjIpfVxuICAubW9kYWwgaDN7bWFyZ2luLWJvdHRvbTo4cHg7Zm9udC1zaXplOjEuMnJlbX1cbiAgLm1vZGFsIHB7Zm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MTZweDtsaW5lLWhlaWdodDoxLjV9XG4gIC5sYW5nLWdyaWR7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dhcDo4cHg7bWFyZ2luLWJvdHRvbToxNnB4fVxuICAubGFuZy1vcHRpb257cGFkZGluZzoxMHB4IDEycHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjkycmVtO2ZvbnQtd2VpZ2h0OjYwMDt0ZXh0LWFsaWduOmNlbnRlcjt0cmFuc2l0aW9uOmFsbCAwLjJzO2xpbmUtaGVpZ2h0OjEuNDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHh9XG4gIC5sYW5nLW9wdGlvbjpob3ZlciwubGFuZy1vcHRpb24uYWN0aXZle2JvcmRlci1jb2xvcjp2YXIoLS1ibHVlKTtiYWNrZ3JvdW5kOnZhcigtLWJsdWUtbGlnaHQpO2NvbG9yOnZhcigtLWJsdWUpO3RyYW5zZm9ybTpzY2FsZSgxLjAzKX1cbiAgLm1vZGFsLWNsb3Nle2JhY2tncm91bmQ6dmFyKC0tZ3JheSk7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoxMHB4IDIwcHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjAuOXJlbTtmb250LXdlaWdodDo2MDA7d2lkdGg6MTAwJX1cbiAgLnRyYW5zbGF0aW9uLW5vdGljZXtiYWNrZ3JvdW5kOiNmZmYzY2Q7Ym9yZGVyOjFweCBzb2xpZCAjZmZjMTA3O2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6MTBweCAxNHB4O2ZvbnQtc2l6ZTowLjhyZW07Y29sb3I6Izg1NjQwNDttYXJnaW4tYm90dG9tOjE2cHh9XG5cbiAgLyogVE9BU1QgKi9cbiAgLnRvYXN0e3Bvc2l0aW9uOmZpeGVkO2JvdHRvbToyNHB4O3JpZ2h0OjI0cHg7YmFja2dyb3VuZDp2YXIoLS1ncmVlbik7Y29sb3I6I2ZmZjtwYWRkaW5nOjEycHggMjBweDtib3JkZXItcmFkaXVzOjEwcHg7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZTowLjlyZW07ei1pbmRleDozMDA7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwcHgpO3RyYW5zaXRpb246YWxsIDAuM3M7cG9pbnRlci1ldmVudHM6bm9uZX1cbiAgLnRvYXN0LnNob3d7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfVxuXG4gIC5lbXB0eS1zdGF0ZXt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjQwcHg7Y29sb3I6dmFyKC0tbXV0ZWQpfVxuICAuZW1wdHktc3RhdGUgLmljb257Zm9udC1zaXplOjNyZW07bWFyZ2luLWJvdHRvbToxMHB4fVxuICAuZGl2aWRlcntoZWlnaHQ6MXB4O2JhY2tncm91bmQ6dmFyKC0tYm9yZGVyKTttYXJnaW46MjBweCAwfVxuICBAbWVkaWEobWF4LXdpZHRoOjYwMHB4KXsuaGVybyBoMXtmb250LXNpemU6MS42cmVtfS5oZXJve3BhZGRpbmc6MjhweCAyMHB4fS5jYXRlZ29yeS1ncmlke2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maWxsLG1pbm1heCgxMzBweCwxZnIpKX19XG48L3N0eWxlPlxuPC9oZWFkPlxuPGJvZHk+XG5cbjxuYXY+XG4gIDxkaXYgY2xhc3M9XCJuYXYtbG9nb1wiIG9uY2xpY2s9XCJzaG93UGFnZSgnaG9tZScpXCI+T2xpbTxzcGFuPkFuc3dlcnM8L3NwYW4+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJuYXYtbGlua3NcIj5cbiAgICA8YnV0dG9uIG9uY2xpY2s9XCJzaG93UGFnZSgnaG9tZScpXCI+8J+PoCBIb21lPC9idXR0b24+XG4gICAgPGJ1dHRvbiBvbmNsaWNrPVwic2hvd1BhZ2UoJ2ZvcnVtJylcIj7wn5ejIEZvcnVtPC9idXR0b24+XG4gICAgPGJ1dHRvbiBvbmNsaWNrPVwic2hvd1BhZ2UoJ2Jlc3RvZicpXCI+4q2QIEJlc3QgT2Y8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG9uY2xpY2s9XCJzaG93UGFnZSgnY2hlY2tsaXN0JylcIj7inIUgQ2hlY2tsaXN0PC9idXR0b24+XG4gICAgPGJ1dHRvbiBvbmNsaWNrPVwic2hvd1BhZ2UoJ2NhdHMnKVwiPvCfk4IgQ2F0ZWdvcmllczwvYnV0dG9uPlxuICAgIDxidXR0b24gb25jbGljaz1cInNob3dQYWdlKCdzZWFyY2gnKVwiPvCflI0gU2VhcmNoPC9idXR0b24+XG4gICAgPGJ1dHRvbiBvbmNsaWNrPVwic2hvd1BhZ2UoJ2RvbmF0ZScpXCIgY2xhc3M9XCJuYXYtZG9uYXRlXCI+8J+SmyBEb25hdGU8L2J1dHRvbj5cbiAgICA8YnV0dG9uIGNsYXNzPVwibGFuZy1idG5cIiBvbmNsaWNrPVwib3BlbkxhbmdNb2RhbCgpXCI+8J+HrPCfh6c8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25hdj5cblxuPCEtLSBIT01FIC0tPlxuPGRpdiBjbGFzcz1cInBhZ2UgYWN0aXZlXCIgaWQ9XCJwYWdlLWhvbWVcIj5cbiAgPGRpdiBjbGFzcz1cImhlcm9cIj5cbiAgICA8aDE+V2VsY29tZSB0byA8c3Bhbj5PbGltQW5zd2Vyczwvc3Bhbj48L2gxPlxuICAgIDxwPllvdXIgY29tbXVuaXR5LXBvd2VyZWQgZ3VpZGUgdG8gbmF2aWdhdGluZyBsaWZlIGluIElzcmFlbC4gQXNrIHF1ZXN0aW9ucywgc2hhcmUga25vd2xlZGdlLCBhbmQgaGVscCBmZWxsb3cgb2xpbSBmaW5kIHRoZWlyIGZlZXQgZmFzdGVyLjwvcD5cbiAgICA8ZGl2IGNsYXNzPVwiaGVyby1idG5zXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgb25jbGljaz1cInNob3dQYWdlKCdmb3J1bScpXCI+QXNrIGEgUXVlc3Rpb248L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIiBvbmNsaWNrPVwic2hvd1BhZ2UoJ2Jlc3RvZicpXCI+4q2QIEJyb3dzZSBUb3AgQW5zd2VyczwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwidGlwLWJveFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0aXAtbGFiZWxcIj7wn5KhIFRpcCBvZiB0aGUgRGF5PC9kaXY+XG4gICAgPHAgaWQ9XCJ0aXAtdGV4dFwiPldoZW4gb3BlbmluZyBhIGJhbmsgYWNjb3VudCBpbiBJc3JhZWwsIGJyaW5nIHlvdXIgVGV1ZGF0IE9sZWgsIHBhc3Nwb3J0LCBhbmQgcHJvb2Ygb2YgYWRkcmVzcy4gQmFuayBIYXBvYWxpbSBhbmQgQmFuayBMZXVtaSBib3RoIGhhdmUgZGVkaWNhdGVkIE9saW0gZGVwYXJ0bWVudHMgd2l0aCBFbmdsaXNoLXNwZWFraW5nIHN0YWZmLjwvcD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5Ib3cgSXQgV29ya3M8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImhvdy1pdC13b3Jrc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJoaXctY2FyZFwiPjxkaXYgY2xhc3M9XCJoaXctaWNvblwiPuKdkzwvZGl2PjxoMz5Bc2s8L2gzPjxwPlBvc3QgeW91ciBxdWVzdGlvbiBpbiB0aGUgcmVsZXZhbnQgY2F0ZWdvcnkuIEJlIGFzIGRldGFpbGVkIGFzIHlvdSBsaWtlLjwvcD48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaGl3LWNhcmRcIj48ZGl2IGNsYXNzPVwiaGl3LWljb25cIj7wn5KsPC9kaXY+PGgzPkFuc3dlcjwvaDM+PHA+VGhlIGNvbW11bml0eSByZXNwb25kcyB3aXRoIGFkdmljZSwgdGlwcywgYW5kIHBlcnNvbmFsIGV4cGVyaWVuY2UuPC9wPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJoaXctY2FyZFwiPjxkaXYgY2xhc3M9XCJoaXctaWNvblwiPvCfkY08L2Rpdj48aDM+UmF0ZTwvaDM+PHA+VXB2b3RlIHRoZSBtb3N0IGhlbHBmdWwgYW5zd2VycyBzbyB0aGV5IHJpc2UgdG8gdGhlIHRvcCBmb3IgZXZlcnlvbmUuPC9wPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJoaXctY2FyZFwiPjxkaXYgY2xhc3M9XCJoaXctaWNvblwiPvCfjJ88L2Rpdj48aDM+RGlzY292ZXI8L2gzPjxwPkJyb3dzZSB0b3AtcmF0ZWQgY29udGVudCBvciBzZWFyY2ggYnkga2V5d29yZCB0byBmaW5kIHdoYXQgeW91IG5lZWQgZmFzdC48L3A+PC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+QnJvd3NlIGJ5IENhdGVnb3J5PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjYXRlZ29yeS1ncmlkXCIgaWQ9XCJob21lLWNhdHNcIj48L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZG9uYXRlLWJhbm5lclwiPlxuICAgIDxoMz7wn5KbIE9saW1BbnN3ZXJzIGlzIGZyZWUgZm9yIGV2ZXJ5b25lPC9oMz5cbiAgICA8cD5UaGlzIHNpdGUgaXMgY29tbXVuaXR5LXJ1bi4gSWYgaXQgaGVscGVkIHlvdSwgY29uc2lkZXIgYSBzbWFsbCBkb25hdGlvbiB0byBrZWVwIGl0IGdvaW5nLjwvcD5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgb25jbGljaz1cInNob3dQYWdlKCdkb25hdGUnKVwiPlN1cHBvcnQgdGhlIFNpdGU8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBGT1JVTSAtLT5cbjxkaXYgY2xhc3M9XCJwYWdlXCIgaWQ9XCJwYWdlLWZvcnVtXCI+XG4gIDxkaXYgY2xhc3M9XCJmb3J1bS1oZWFkZXJcIiBzdHlsZT1cImRpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLWJvdHRvbToyMHB4O2ZsZXgtd3JhcDp3cmFwO2dhcDoxMHB4XCI+XG4gICAgPGRpdj5cbiAgICAgIDxoMiBzdHlsZT1cImZvbnQtc2l6ZToxLjRyZW07Y29sb3I6dmFyKC0tYmx1ZSlcIj7wn5ejIENvbW11bml0eSBGb3J1bTwvaDI+XG4gICAgICA8cCBzdHlsZT1cImZvbnQtc2l6ZTowLjg1cmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tdG9wOjRweFwiPkFzayBxdWVzdGlvbnMsIHNoYXJlIGFuc3dlcnMsIGhlbHAgZmVsbG93IG9saW08L3A+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6ZmxleDtnYXA6MTBweDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC13cmFwOndyYXBcIj5cbiAgICAgIDxzZWxlY3QgY2xhc3M9XCJzb3J0LXNlbGVjdFwiIGlkPVwiZm9ydW0tc29ydFwiIG9uY2hhbmdlPVwicmVuZGVyRm9ydW0oKVwiPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwibmV3ZXN0XCI+8J+VkCBOZXdlc3Q8L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm1vc3RfYW5zd2Vyc1wiPvCfkqwgTW9zdCBSZXNwb25zZXM8L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImhpZ2hlc3RfcmF0ZWRcIj7irZAgSGlnaGVzdCBSYXRlZDwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwibW9zdF92aWV3ZWRcIj7wn5GBIE1vc3QgVmlld2VkPC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBvbmNsaWNrPVwidG9nZ2xlQXNrQmFyKClcIiBzdHlsZT1cInBhZGRpbmc6OXB4IDE2cHg7Zm9udC1zaXplOjAuODhyZW1cIj4rIEFzayBhIFF1ZXN0aW9uPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJhc2stYmFyXCIgaWQ9XCJhc2stYmFyXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIj5cbiAgICA8aDM+QXNrIGEgTmV3IFF1ZXN0aW9uPC9oMz5cbiAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cInEtdGl0bGVcIiBwbGFjZWhvbGRlcj1cIllvdXIgcXVlc3Rpb24gdGl0bGUuLi5cIiAvPlxuICAgIDx0ZXh0YXJlYSBpZD1cInEtYm9keVwiIHBsYWNlaG9sZGVyPVwiRGVzY3JpYmUgeW91ciBxdWVzdGlvbiBpbiBkZXRhaWwuLi5cIj48L3RleHRhcmVhPlxuICAgIDxzZWxlY3QgaWQ9XCJxLWNhdFwiPlxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBhIGNhdGVnb3J5Li4uPC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJxLW5hbWVcIiBwbGFjZWhvbGRlcj1cIllvdXIgbmFtZSAob3IgbGVhdmUgYmxhbmsgZm9yIEFub255bW91cylcIiAvPlxuICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OmZsZXg7Z2FwOjEwcHhcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBvbmNsaWNrPVwic3VibWl0UXVlc3Rpb24oKVwiIHN0eWxlPVwiZmxleDoxXCI+UG9zdCBRdWVzdGlvbjwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBvbmNsaWNrPVwiY2FuY2VsQXNrKClcIiBzdHlsZT1cImZsZXg6bm9uZTtwYWRkaW5nOjEycHggMThweDtib3JkZXItcmFkaXVzOjhweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWJvcmRlcik7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjFyZW07Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLW11dGVkKVwiPuKclSBDYW5jZWw8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBpZD1cImZvcnVtLWxpc3RcIj48L2Rpdj5cbjwvZGl2PlxuXG48IS0tIENBVEVHT1JZIFBBR0UgLS0+XG48ZGl2IGNsYXNzPVwicGFnZVwiIGlkPVwicGFnZS1jYXRlZ29yeVwiPlxuICA8YnV0dG9uIGNsYXNzPVwiYmFjay1idG5cIiBvbmNsaWNrPVwic2hvd1BhZ2UoJ2ZvcnVtJylcIj7ihpAgQmFjayB0byBGb3J1bTwvYnV0dG9uPlxuICA8ZGl2IHN0eWxlPVwiZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW4tYm90dG9tOjIwcHg7ZmxleC13cmFwOndyYXA7Z2FwOjEwcHhcIj5cbiAgICA8ZGl2PlxuICAgICAgPGgyIGlkPVwiY2F0LXBhZ2UtdGl0bGVcIiBzdHlsZT1cImZvbnQtc2l6ZToxLjRyZW07Y29sb3I6dmFyKC0tYmx1ZSlcIj48L2gyPlxuICAgICAgPHAgaWQ9XCJjYXQtcGFnZS1kZXNjXCIgc3R5bGU9XCJmb250LXNpemU6MC44NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLXRvcDo0cHhcIj48L3A+XG4gICAgPC9kaXY+XG4gICAgPHNlbGVjdCBjbGFzcz1cInNvcnQtc2VsZWN0XCIgaWQ9XCJjYXQtc29ydFwiIG9uY2hhbmdlPVwicmVuZGVyQ2F0ZWdvcnlQYWdlKClcIj5cbiAgICAgIDxvcHRpb24gdmFsdWU9XCJuZXdlc3RcIj7wn5WQIE5ld2VzdDwvb3B0aW9uPlxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIm1vc3RfYW5zd2Vyc1wiPvCfkqwgTW9zdCBSZXNwb25zZXM8L29wdGlvbj5cbiAgICAgIDxvcHRpb24gdmFsdWU9XCJoaWdoZXN0X3JhdGVkXCI+4q2QIEhpZ2hlc3QgUmF0ZWQ8L29wdGlvbj5cbiAgICAgIDxvcHRpb24gdmFsdWU9XCJtb3N0X3ZpZXdlZFwiPvCfkYEgTW9zdCBWaWV3ZWQ8L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cbiAgPC9kaXY+XG4gIDxkaXYgaWQ9XCJjYXQtcGFnZS1saXN0XCI+PC9kaXY+XG48L2Rpdj5cblxuPCEtLSBRVUVTVElPTiBERVRBSUwgLS0+XG48ZGl2IGNsYXNzPVwicGFnZVwiIGlkPVwicGFnZS1xdWVzdGlvblwiPlxuICA8YnV0dG9uIGNsYXNzPVwiYmFjay1idG5cIiBpZD1cInEtYmFjay1idG5cIiBvbmNsaWNrPVwiZ29CYWNrKClcIj7ihpAgQmFjazwvYnV0dG9uPlxuICA8ZGl2IGNsYXNzPVwicS1mdWxsXCIgaWQ9XCJxLWZ1bGwtY29udGVudFwiPjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYW5zd2Vycy1zZWN0aW9uXCI+XG4gICAgPGgzIGlkPVwiYW5zd2Vycy1jb3VudFwiPjwvaDM+XG4gICAgPGRpdiBpZD1cImFuc3dlcnMtbGlzdFwiPjwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImFkZC1hbnN3ZXJcIj5cbiAgICA8aDQ+8J+SrCBBZGQgWW91ciBBbnN3ZXI8L2g0PlxuICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwiYW5zLW5hbWVcIiBwbGFjZWhvbGRlcj1cIllvdXIgbmFtZSAob3IgbGVhdmUgYmxhbmsgZm9yIEFub255bW91cylcIiAvPlxuICAgIDx0ZXh0YXJlYSBpZD1cImFucy1ib2R5XCIgcGxhY2Vob2xkZXI9XCJTaGFyZSB5b3VyIGtub3dsZWRnZSBvciBleHBlcmllbmNlLi4uXCI+PC90ZXh0YXJlYT5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgb25jbGljaz1cInN1Ym1pdEFuc3dlcigpXCI+UG9zdCBBbnN3ZXI8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBCRVNUIE9GIC0tPlxuPGRpdiBjbGFzcz1cInBhZ2VcIiBpZD1cInBhZ2UtYmVzdG9mXCI+XG4gIDxkaXYgY2xhc3M9XCJiZXN0LW9mLWhlYWRlclwiPlxuICAgIDxoMj7irZAgQmVzdCBPZiBPbGltQW5zd2VyczwvaDI+XG4gICAgPHA+VGhlIGhpZ2hlc3QtcmF0ZWQgcXVlc3Rpb25zIGFuZCBhbnN3ZXJzIGZyb20gb3VyIGNvbW11bml0eSDigJQgeW91ciBnby10byBzdGFydGluZyBwb2ludDwvcD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmaWx0ZXItcm93XCI+XG4gICAgPHNwYW4gc3R5bGU9XCJmb250LXNpemU6MC44NXJlbTtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tbXV0ZWQpXCI+RmlsdGVyOjwvc3Bhbj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiZmlsdGVyLWJ0biBhY3RpdmVcIiBvbmNsaWNrPVwiZmlsdGVyQmVzdE9mKCdhbGwnLHRoaXMpXCI+QWxsIENhdGVnb3JpZXM8L2J1dHRvbj5cbiAgICA8ZGl2IGlkPVwiYmVzdG9mLWZpbHRlcnNcIj48L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgaWQ9XCJiZXN0b2YtbGlzdFwiPjwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gQ0hFQ0tMSVNUIC0tPlxuPGRpdiBjbGFzcz1cInBhZ2VcIiBpZD1cInBhZ2UtY2hlY2tsaXN0XCI+XG4gIDxkaXYgY2xhc3M9XCJjaGVja2xpc3QtaW50cm9cIj5cbiAgICA8aDI+4pyFIE5ldyBPbGVoIENoZWNrbGlzdDwvaDI+XG4gICAgPHAgc3R5bGU9XCJjb2xvcjp2YXIoLS1tdXRlZCk7Zm9udC1zaXplOjAuODhyZW07bWFyZ2luLXRvcDo2cHhcIj5Zb3VyIHN0ZXAtYnktc3RlcCBndWlkZSB0byBzZXR0bGluZyBpbiBJc3JhZWwuIENoZWNrIG9mZiBpdGVtcyBhcyB5b3UgZ28g4oCUIHByb2dyZXNzIHNhdmVzIGF1dG9tYXRpY2FsbHkuPC9wPlxuICA8L2Rpdj5cbiAgPGRpdiBpZD1cImNoZWNrbGlzdC1jb250ZW50XCI+PC9kaXY+XG48L2Rpdj5cblxuPCEtLSBTRUFSQ0ggLS0+XG48ZGl2IGNsYXNzPVwicGFnZVwiIGlkPVwicGFnZS1zZWFyY2hcIj5cbiAgPGgyIHN0eWxlPVwiZm9udC1zaXplOjEuNHJlbTtjb2xvcjp2YXIoLS1ibHVlKTttYXJnaW4tYm90dG9tOjE2cHhcIj7wn5SNIFNlYXJjaCBPbGltQW5zd2VyczwvaDI+XG4gIDxkaXYgY2xhc3M9XCJzZWFyY2gtYmFyLWJpZ1wiPlxuICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwic2VhcmNoLWlucHV0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2ggcXVlc3Rpb25zLCB0b3BpY3MsIGtleXdvcmRzLi4uXCIgb25rZXl1cD1cImlmKGV2ZW50LmtleT09PSdFbnRlcicpZG9TZWFyY2goKVwiIC8+XG4gICAgPGJ1dHRvbiBvbmNsaWNrPVwiZG9TZWFyY2goKVwiPlNlYXJjaDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIiBzdHlsZT1cImZvbnQtc2l6ZToxcmVtXCI+UG9wdWxhciBUb3BpY3M8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInRhZy1jbG91ZFwiIGlkPVwidGFnLWNsb3VkXCI+PC9kaXY+XG4gIDxkaXYgaWQ9XCJzZWFyY2gtcmVzdWx0c1wiPjwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gQ0FURUdPUklFUyAtLT5cbjxkaXYgY2xhc3M9XCJwYWdlXCIgaWQ9XCJwYWdlLWNhdHNcIj5cbiAgPGgyIHN0eWxlPVwiZm9udC1zaXplOjEuNHJlbTtjb2xvcjp2YXIoLS1ibHVlKTttYXJnaW4tYm90dG9tOjZweFwiPvCfk4IgQ2F0ZWdvcmllczwvaDI+XG4gIDxwIHN0eWxlPVwiZm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MjBweFwiPkJyb3dzZSBxdWVzdGlvbnMgYnkgdG9waWM8L3A+XG4gIDxkaXYgY2xhc3M9XCJjYXRlZ29yeS1ncmlkXCIgaWQ9XCJjYXRzLWdyaWRcIj48L2Rpdj5cbjwvZGl2PlxuXG48IS0tIERPTkFURSAtLT5cbjxkaXYgY2xhc3M9XCJwYWdlXCIgaWQ9XCJwYWdlLWRvbmF0ZVwiPlxuICA8ZGl2IGNsYXNzPVwiZG9uYXRlLXBhZ2VcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZG9uYXRlLWhlcm9cIj5cbiAgICAgIDxkaXYgc3R5bGU9XCJmb250LXNpemU6M3JlbTttYXJnaW4tYm90dG9tOjEycHhcIj7wn5KbPC9kaXY+XG4gICAgICA8aDI+U3VwcG9ydCBPbGltQW5zd2VyczwvaDI+XG4gICAgICA8cD5PbGltQW5zd2VycyBpcyBmcmVlIGZvciBldmVyeSBvbGVoLCBmb3JldmVyLiBJdCdzIGJ1aWx0IGFuZCBtYWludGFpbmVkIGJ5IHRoZSBjb21tdW5pdHksIGZvciB0aGUgY29tbXVuaXR5LiBZb3VyIGRvbmF0aW9uIGhlbHBzIGtlZXAgdGhlIGxpZ2h0cyBvbiwgcGF5IGZvciBob3N0aW5nLCBhbmQgYWxsb3dzIHVzIHRvIGdyb3cgYW5kIGltcHJvdmUgdGhlIHNpdGUuPC9wPlxuICAgICAgPHAgc3R5bGU9XCJtYXJnaW4tdG9wOjEwcHg7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpXCI+XCJJIHdpc2ggdGhpcyBzaXRlIGV4aXN0ZWQgd2hlbiBJIG1hZGUgYWxpeWFoLlwiIOKAlCBFdmVyeSBvbGVoLCBldmVyLjwvcD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZG9uYXRlLWFtb3VudHNcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJhbW91bnQtYnRuXCIgb25jbGljaz1cInNlbGVjdEFtb3VudCh0aGlzLCckNScpXCI+JDU8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJhbW91bnQtYnRuXCIgb25jbGljaz1cInNlbGVjdEFtb3VudCh0aGlzLCckMTgnKVwiPiQxOCDinKHvuI88L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJhbW91bnQtYnRuIHNlbGVjdGVkXCIgb25jbGljaz1cInNlbGVjdEFtb3VudCh0aGlzLCckMzYnKVwiPiQzNjwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImFtb3VudC1idG5cIiBvbmNsaWNrPVwic2VsZWN0QW1vdW50KHRoaXMsJyQxMDAnKVwiPiQxMDA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJhbW91bnQtYnRuXCIgb25jbGljaz1cInNlbGVjdEFtb3VudCh0aGlzLCdvdGhlcicpXCI+T3RoZXI8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiZG9uYXRlLWJ0bi1iaWdcIiBvbmNsaWNrPVwic2hvd1RvYXN0KCdUaGFuayB5b3UhIERvbmF0aW9uIGxpbmsgY29taW5nIHNvb24g8J+SmycpXCI+RG9uYXRlIHZpYSBQYXlQYWw8L2J1dHRvbj5cbiAgICA8cCBzdHlsZT1cImZvbnQtc2l6ZTowLjc4cmVtO2NvbG9yOnZhcigtLW11dGVkKVwiPlNlY3VyZSBwYXltZW50LiBFdmVyeSBzaGVrZWwgLyBkb2xsYXIgaGVscHMuPC9wPlxuICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XG4gICAgPHAgc3R5bGU9XCJmb250LXNpemU6MC44NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLXRvcDoxNnB4XCI+WW91IGNhbiBhbHNvIHN1cHBvcnQgdXMgYnkgc2hhcmluZyB0aGUgc2l0ZSB3aXRoIG90aGVyIG9saW0sIGNvbnRyaWJ1dGluZyBhbnN3ZXJzLCBhbmQgZmxhZ2dpbmcgb3V0ZGF0ZWQgaW5mb3JtYXRpb24uIEV2ZXJ5IGJpdCBjb3VudHMhPC9wPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIExBTkcgTU9EQUwgLS0+XG48ZGl2IGNsYXNzPVwibW9kYWwtb3ZlcmxheVwiIGlkPVwibGFuZy1tb2RhbFwiPlxuICA8ZGl2IGNsYXNzPVwibW9kYWxcIj5cbiAgICA8aDM+8J+MkCBDaG9vc2UgTGFuZ3VhZ2U8L2gzPlxuICAgIDxwPkNvbnRlbnQgaXMgYXV0by10cmFuc2xhdGVkLiBGb3IgY3JpdGljYWwgZGVjaXNpb25zLCBhbHdheXMgdmVyaWZ5IHdpdGggb2ZmaWNpYWwgc291cmNlcy48L3A+XG4gICAgPGRpdiBjbGFzcz1cInRyYW5zbGF0aW9uLW5vdGljZVwiPuKaoO+4jyBJc3JhZWxpIGJ1cmVhdWNyYXRpYyB0ZXJtcyAoVGV1ZGF0IFplaHV0LCBNaXNyYWQgSGFwbmltLCBldGMuKSBhcmUga2VwdCBpbiB0aGVpciBvcmlnaW5hbCBmb3JtIHdpdGggdG9vbHRpcHMgdG8gcHJldmVudCBtaXN0cmFuc2xhdGlvbi48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibGFuZy1ncmlkXCIgaWQ9XCJsYW5nLWdyaWRcIj48L2Rpdj5cbiAgICA8YnV0dG9uIGNsYXNzPVwibW9kYWwtY2xvc2VcIiBvbmNsaWNrPVwiY2xvc2VMYW5nTW9kYWwoKVwiPkNsb3NlPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJ0b2FzdFwiIGlkPVwidG9hc3RcIj48L2Rpdj5cblxuPHNjcmlwdD5cbmNvbnN0IENBVEVHT1JJRVMgPSBbXG4gIHtpZDonYmFua2luZycsaWNvbjon8J+PpicsbmFtZTonQmFua2luZycsZGVzYzonQWNjb3VudHMsIHRyYW5zZmVycywgbW9ydGdhZ2VzJ30sXG4gIHtpZDonaGVhbHRoJyxpY29uOifwn4+lJyxuYW1lOidIZWFsdGggSW5zdXJhbmNlJyxkZXNjOidLdXBhdCBIb2xpbSwgZG9jdG9ycywgY292ZXJhZ2UnfSxcbiAge2lkOid0YXgnLGljb246J/Cfk4onLG5hbWU6J1RheCcsZGVzYzonSW5jb21lIHRheCwgTWFzIEhhY2huYXNhLCBWQVQnfSxcbiAge2lkOidpbnRlcm5ldCcsaWNvbjon8J+TticsbmFtZTonSW50ZXJuZXQgJiBQaG9uZScsZGVzYzonUHJvdmlkZXJzLCBjb250cmFjdHMsIFNJTSBjYXJkcyd9LFxuICB7aWQ6J2hvdXNpbmcnLGljb246J/Cfj6AnLG5hbWU6J0hvdXNpbmcnLGRlc2M6J1JlbnRpbmcsIGJ1eWluZywgQXJub25hJ30sXG4gIHtpZDonZ292JyxpY29uOifwn6qqJyxuYW1lOidHb3Zlcm5tZW50ICYgSURzJyxkZXNjOidUZXVkYXQgWmVodXQsIE1pc3JhZCBIYXBuaW0nfSxcbiAge2lkOidlZHVjYXRpb24nLGljb246J/CfjpMnLG5hbWU6J0VkdWNhdGlvbicsZGVzYzonU2Nob29scywgdWxwYW4sIHVuaXZlcnNpdGllcyd9LFxuICB7aWQ6J3RyYW5zcG9ydCcsaWNvbjon8J+ajCcsbmFtZTonVHJhbnNwb3J0JyxkZXNjOidEcml2aW5nIGxpY2VuY2UsIFJhdi1LYXYsIGJ1c2VzJ30sXG4gIHtpZDonZW1wbG95bWVudCcsaWNvbjon8J+SvCcsbmFtZTonRW1wbG95bWVudCcsZGVzYzonSm9icywgY29udHJhY3RzLCByaWdodHMnfSxcbiAge2lkOidzb2NpYWwnLGljb246J/CfpJ0nLG5hbWU6J1NvY2lhbCBTZWN1cml0eScsZGVzYzonQml0dWFjaCBMZXVtaSwgYmVuZWZpdHMnfSxcbiAge2lkOidjdWx0dXJlJyxpY29uOifwn5WOJyxuYW1lOidDdWx0dXJlICYgTGlmZScsZGVzYzonQ3VzdG9tcywgaG9saWRheXMsIGNvbW11bml0eSd9LFxuICB7aWQ6J290aGVyJyxpY29uOifinZMnLG5hbWU6J090aGVyJyxkZXNjOidBbnl0aGluZyBlbHNlJ30sXG5dO1xuXG5jb25zdCBUSVBTID0gW1xuICBcIldoZW4gb3BlbmluZyBhIGJhbmsgYWNjb3VudCBpbiBJc3JhZWwsIGJyaW5nIHlvdXIgVGV1ZGF0IE9sZWgsIHBhc3Nwb3J0LCBhbmQgcHJvb2Ygb2YgYWRkcmVzcy4gQmFuayBIYXBvYWxpbSBhbmQgQmFuayBMZXVtaSBib3RoIGhhdmUgZGVkaWNhdGVkIE9saW0gZGVwYXJ0bWVudHMgd2l0aCBFbmdsaXNoLXNwZWFraW5nIHN0YWZmLlwiLFxuICBcIlJlZ2lzdGVyIHdpdGggYSBLdXBhdCBIb2xpbSAoaGVhbHRoIGZ1bmQpIHdpdGhpbiAzIG1vbnRocyBvZiBhcnJpdmluZy4gVGhlIDQgb3B0aW9ucyBhcmUgQ2xhbGl0LCBNYWNjYWJpLCBNZXVoZWRldCwgYW5kIExldW1pdC4gWW91IGNhbiBzd2l0Y2ggb25jZSBhIHllYXIgaW4gTm92ZW1iZXIuXCIsXG4gIFwiVGhlIFRldWRhdCBaZWh1dCAobmF0aW9uYWwgSUQpIGlzIHJlcXVpcmVkIGZvciBhbG1vc3QgZXZlcnl0aGluZyBpbiBJc3JhZWwuIEtlZXAgYSBwaG90b2NvcHkgYXQgaG9tZSBhbmQgYSBwaG90byBvbiB5b3VyIHBob25lIGF0IGFsbCB0aW1lcy5cIixcbiAgXCJBcm5vbmEgKG11bmljaXBhbCB0YXgpIGJpbGxzIGFyZSBzZW50IHR3aWNlIGEgeWVhci4gTmV3IG9saW0gbWF5IGJlIGVsaWdpYmxlIGZvciBhIGRpc2NvdW50IOKAlCBjaGVjayB3aXRoIHlvdXIgbG9jYWwgbXVuaWNpcGFsaXR5IHdpdGhpbiA5MCBkYXlzIG9mIGFycml2YWwuXCIsXG4gIFwiVG8gY29udmVydCB5b3VyIGZvcmVpZ24gZHJpdmluZyBsaWNlbmNlIGluIElzcmFlbCwgeW91IG1heSBiZSBleGVtcHQgZnJvbSB0YWtpbmcgYSBmdWxsIHRlc3QgaWYgeW91ciBjb3VudHJ5IGhhcyBhIHJlY2lwcm9jYWwgYWdyZWVtZW50LiBDaGVjayB3aXRoIE1pc3JhZCBIYVRhY2hidXJhLlwiLFxuXTtcblxubGV0IHF1ZXN0aW9ucyA9IFtcbiAge2lkOjEsdGl0bGU6XCJIb3cgZG8gSSBvcGVuIGEgYmFuayBhY2NvdW50IGFzIGEgbmV3IG9sZWg/XCIsYm9keTpcIkkganVzdCBhcnJpdmVkIGxhc3Qgd2VlayBhbmQgSSdtIHRyeWluZyB0byBvcGVuIGEgYmFuayBhY2NvdW50LiBXaGF0IGRvY3VtZW50cyBkbyBJIG5lZWQgYW5kIHdoaWNoIGJhbmsgaXMgbW9zdCBvbGVoLWZyaWVuZGx5P1wiLGNhdDonYmFua2luZycsYXV0aG9yOidTYXJhaCBNLicsZGF0ZTonMjAyNC0xMi0xNScsdmlld3M6MzQyLGxhbmc6J0VOJyxhbnN3ZXJzOltcbiAgICB7aWQ6MSxib2R5OlwiQmFuayBIYXBvYWxpbSBhbmQgQmFuayBMZXVtaSBib3RoIGhhdmUgZGVkaWNhdGVkIE9saW0gY2VudHJlcyB3aXRoIEVuZ2xpc2ggc3BlYWtpbmcgc3RhZmYuIEJyaW5nIHlvdXIgVGV1ZGF0IE9sZWgsIHBhc3Nwb3J0LCBhbmQgaWYgcG9zc2libGUgYSBwcm9vZiBvZiBhZGRyZXNzLiBUaGUgcHJvY2VzcyB1c3VhbGx5IHRha2VzIDEtMiB2aXNpdHMuIExldW1pJ3Mgb25saW5lIHByb2Nlc3MgaGFzIGltcHJvdmVkIGEgbG90IHJlY2VudGx5LlwiLGF1dGhvcjonRGF2aWQgSy4nLGRhdGU6JzIwMjQtMTItMTUnLHZvdGVzOjQ3LGZsYWdnZWQ6ZmFsc2UsdXNlclZvdGVkOmZhbHNlLGxhbmc6J0VOJ30sXG4gICAge2lkOjIsYm9keTpcIkkgdXNlZCBEaXNjb3VudCBCYW5rIGFuZCBoYWQgYSBncmVhdCBleHBlcmllbmNlLiBUaGV5IHNldCB1cCBteSBhY2NvdW50IHRoZSBzYW1lIGRheSBhbmQgZ2F2ZSBtZSBhbiBFbmdsaXNoLWxhbmd1YWdlIGFwcC4gQWxzbyB3b3J0aCBhc2tpbmcgYWJvdXQgemVyby1mZWUgYWNjb3VudHMgZm9yIG5ldyBvbGltIOKAlCBtYW55IGJhbmtzIG9mZmVyIHRoZW0gZm9yIHRoZSBmaXJzdCB5ZWFyLlwiLGF1dGhvcjonTWlyaWFtIFQuJyxkYXRlOicyMDI0LTEyLTE2Jyx2b3RlczozMSxmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOidFTid9LFxuICBdfSxcbiAge2lkOjIsdGl0bGU6XCJXaGljaCBLdXBhdCBIb2xpbSBzaG91bGQgSSBqb2luP1wiLGJvZHk6XCJJIG5lZWQgdG8gcmVnaXN0ZXIgd2l0aCBhIGhlYWx0aCBmdW5kLiBXaGF0IGFyZSB0aGUgbWFpbiBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBmb3VyIG9wdGlvbnMgYW5kIHdoaWNoIGlzIGJlc3QgZm9yIEVuZ2xpc2ggc3BlYWtlcnM/XCIsY2F0OidoZWFsdGgnLGF1dGhvcjonSmFtZXMgUi4nLGRhdGU6JzIwMjQtMTItMTAnLHZpZXdzOjI4OSxsYW5nOidFTicsYW5zd2VyczpbXG4gICAge2lkOjEsYm9keTpcIk1hY2NhYmkgaXMgZ2VuZXJhbGx5IGNvbnNpZGVyZWQgdGhlIG1vc3QgRW5nbGlzaC1mcmllbmRseSBhbmQgaGFzIGEgZ29vZCBhcHAuIENsYWxpdCBoYXMgdGhlIG1vc3QgZG9jdG9ycyBhbmQgY2xpbmljcyBidXQgdGhlIGFwcCBhbmQgc2VydmljZSBxdWFsaXR5IHZhcmllcy4gTWV1aGVkZXQgaXMgc3Ryb25nIGluIEplcnVzYWxlbS4gTGV1bWl0IGlzIHRoZSBzbWFsbGVzdCBidXQgb2Z0ZW4gaGFzIHNob3J0ZXIgd2FpdHMuXCIsYXV0aG9yOidZYWVsIFMuJyxkYXRlOicyMDI0LTEyLTExJyx2b3Rlczo1MixmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOidFTid9LFxuICBdfSxcbiAge2lkOjMsdGl0bGU6XCLXkNeZ15og16LXldeR15Mg15DXqNeg15XXoNeUINeV15DXnSDXnteS15nXoiDXnNeZINeU16DXl9eUP1wiLGJvZHk6XCLXp9eZ15HXnNeq15kg15fXqdeR15XXnyDXkNeo16DXldeg15Qg15XXkNeg15kg15zXkCDXkdeY15XXlyDXkNeZ15og157Xl9ep15HXmdedINeQ15XXqteVINeV15DXnSDXoteV15zXmdedINeX15PXqdeZ150g157Xp9eR15zXmdedINeU16TXl9eq15QuXCIsY2F0Oidob3VzaW5nJyxhdXRob3I6J9eo15XXoNefINeRLicsZGF0ZTonMjAyNC0xMi0wOCcsdmlld3M6MTc4LGxhbmc6J0hFJyxhbnN3ZXJzOltcbiAgICB7aWQ6MSxib2R5Olwi15DXqNeg15XXoNeUINeU15nXkCDXntehINei15nXqNeV16DXmSDXqdee16nXnNee15nXnSDXnNei15nXqNeZ15Qg15TXnten15XXnteZ16ouINei15XXnNeZ150g15fXk9ep15nXnSDXlteb15DXmdedINec15TXoNeX15QgKNeR15PXqNeaINeb15zXnCA3MC05MCUpINec16nXoNeUINeU16jXkNep15XXoNeULiDXpteo15nXmiDXnNek16DXldeqINec16LXmdeo15nXlCDXlNee16fXldee15nXqiDXotedINeq16LXldeT16og15TXoteV15zXlCDXqteV15ogOTAg15nXldedINee15TXktei15QuINeQ15wg16rXpNeh16TXodeVINeQ16og15TXl9ec15XXnyDXlNeW15QhXCIsYXV0aG9yOifXmdei15wg16kuJyxkYXRlOicyMDI0LTEyLTA5Jyx2b3RlczozOSxmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOidIRSd9LFxuICBdfSxcbiAge2lkOjQsdGl0bGU6XCJCZXN0IG1vYmlsZSBwaG9uZSBwcm92aWRlciBmb3Igb2xpbT9cIixib2R5OlwiV2hhdCBTSU0gY2FyZCBvciBjb250cmFjdCBzaG91bGQgSSBnZXQ/IEkgbmVlZCBnb29kIGRhdGEgYW5kIGFmZm9yZGFibGUgY2FsbHMgdG8gdGhlIFVLLlwiLGNhdDonaW50ZXJuZXQnLGF1dGhvcjonRW1tYSBMLicsZGF0ZTonMjAyNC0xMi0wNScsdmlld3M6MjAxLGxhbmc6J0VOJyxhbnN3ZXJzOltcbiAgICB7aWQ6MSxib2R5OlwiR29sYW4gVGVsZWNvbSBpcyB0aGUgYmVzdCB2YWx1ZSBmb3IgbW9zdCBvbGltIOKAlCBhcm91bmQg4oKqMzAvbW9udGggZm9yIHVubGltaXRlZCBkYXRhIGFuZCBjYWxscy4gUGFydG5lciBhbmQgQ2VsbGNvbSBhcmUgbW9yZSBleHBlbnNpdmUgYnV0IGhhdmUgYmV0dGVyIGNvdmVyYWdlIGluIHNvbWUgYXJlYXMuIEZvciBpbnRlcm5hdGlvbmFsIGNhbGxzIHRvIHRoZSBVSywgZ2V0IGEgV2hhdHNBcHAgbnVtYmVyIG9yIHVzZSBHb2xhbidzIGludGVybmF0aW9uYWwgYWRkLW9uLlwiLGF1dGhvcjonQXZpIEMuJyxkYXRlOicyMDI0LTEyLTA2Jyx2b3RlczoyOCxmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOidFTid9LFxuICBdfSxcbl07XG5cbmxldCBuZXh0UUlkID0gNSwgbmV4dEFJZCA9IDEwO1xubGV0IGN1cnJlbnRDYXQgPSBudWxsLCBjdXJyZW50UUlkID0gbnVsbCwgcHJldlBhZ2UgPSAnZm9ydW0nLCBjdXJyZW50TGFuZyA9ICdFTic7XG5cbmNvbnN0IExBTkdTID0gW1xuICB7Y29kZTonRU4nLGZsYWc6J/Cfh6zwn4enJyxuYW1lOidFbmdsaXNoJywgIG5hdGl2ZTonRW5nbGlzaCd9LFxuICB7Y29kZTonSEUnLGZsYWc6J/Cfh67wn4exJyxuYW1lOidIZWJyZXcnLCAgIG5hdGl2ZTon16LXkdeo15nXqid9LFxuICB7Y29kZTonUlUnLGZsYWc6J/Cfh7fwn4e6JyxuYW1lOidSdXNzaWFuJywgIG5hdGl2ZTon0KDRg9GB0YHQutC40LknfSxcbiAge2NvZGU6J0ZSJyxmbGFnOifwn4er8J+HtycsbmFtZTonRnJlbmNoJywgICBuYXRpdmU6J0ZyYW7Dp2Fpcyd9LFxuICB7Y29kZTonRVMnLGZsYWc6J/Cfh6rwn4e4JyxuYW1lOidTcGFuaXNoJywgIG5hdGl2ZTonRXNwYcOxb2wnfSxcbiAge2NvZGU6J0FSJyxmbGFnOifwn4em8J+HqicsbmFtZTonQXJhYmljJywgICBuYXRpdmU6J9in2YTYudix2KjZitipJ30sXG4gIHtjb2RlOidBTScsZmxhZzon8J+HqvCfh7knLG5hbWU6J0FtaGFyaWMnLCAgbmF0aXZlOifhiqDhiJvhiK3hipsnfSxcbiAge2NvZGU6J1BUJyxmbGFnOifwn4en8J+HtycsbmFtZTonUG9ydHVndWVzZScsbmF0aXZlOidQb3J0dWd1w6pzJ30sXG5dO1xuXG5jb25zdCBDSEVDS0xJU1QgPSBbXG4gIHtzZWN0aW9uOidGaXJzdCAzMCBEYXlzJywgaWNvbjon8J+agCcsIGl0ZW1zOltcbiAgICAnQ29sbGVjdCBUZXVkYXQgT2xlaCBmcm9tIHRoZSBhaXJwb3J0IG9yIE1pc3JhZCBIYUFsaXlhaCcsXG4gICAgJ1JlZ2lzdGVyIGF0IE1pc3JhZCBIYUFsaXlhaCAoTWluaXN0cnkgb2YgQWxpeWFoKSBmb3IgYmVuZWZpdHMnLFxuICAgICdBcHBseSBmb3IgVGV1ZGF0IFplaHV0IChOYXRpb25hbCBJRCkgYXQgTWlzcmFkIEhhcG5pbScsXG4gICAgJ1JlZ2lzdGVyIHdpdGggYSBLdXBhdCBIb2xpbSAoaGVhbHRoIGZ1bmQpJyxcbiAgICAnT3BlbiBhIGJhbmsgYWNjb3VudCcsXG4gICAgJ0Vucm9sIGluIFVscGFuIChIZWJyZXcgbGFuZ3VhZ2UgY291cnNlKScsXG4gICAgJ1JlZ2lzdGVyIGNoaWxkcmVuIGF0IGxvY2FsIHNjaG9vbCcsXG4gIF19LFxuICB7c2VjdGlvbjonRmlyc3QgMyBNb250aHMnLCBpY29uOifwn5OFJywgaXRlbXM6W1xuICAgICdBcHBseSBmb3IgQXJub25hIChtdW5pY2lwYWwgdGF4KSBkaXNjb3VudCBhdCBsb2NhbCBJcml5YScsXG4gICAgJ1RyYW5zZmVyIG9yIG9idGFpbiBJc3JhZWxpIGRyaXZpbmcgbGljZW5jZScsXG4gICAgJ0FwcGx5IGZvciBCaXR1YWNoIExldW1pIChOYXRpb25hbCBJbnN1cmFuY2UpJyxcbiAgICAnU2V0IHVwIGludGVybmV0IGF0IGhvbWUnLFxuICAgICdSZWdpc3RlciB3aXRoIGEgbG9jYWwgZG9jdG9yICjXqNeV16TXkCDXntep16TXl9eUKScsXG4gICAgJ0pvaW4gbG9jYWwgb2xpbSBGYWNlYm9vay9XaGF0c0FwcCBncm91cHMnLFxuICBdfSxcbiAge3NlY3Rpb246J0ZpcnN0IFllYXInLCBpY29uOifwn5OGJywgaXRlbXM6W1xuICAgICdGaWxlIHlvdXIgZmlyc3QgSXNyYWVsaSB0YXggcmV0dXJuIGlmIHJlcXVpcmVkJyxcbiAgICAnUmV2aWV3IHlvdXIgS3VwYXQgSG9saW0g4oCUIHlvdSBjYW4gc3dpdGNoIGV2ZXJ5IE5vdmVtYmVyJyxcbiAgICAnQ2hlY2sgZW50aXRsZW1lbnQgdG8gT2xlaCBtb3J0Z2FnZSBiZW5lZml0cyAoTWlzaGthbnRhKScsXG4gICAgJ0FwcGx5IGZvciBhbnkgcmVtYWluaW5nIFNhbCBLbGl0YSAoYWJzb3JwdGlvbiBiYXNrZXQpIHBheW1lbnRzJyxcbiAgICAnR2V0IHlvdXIgSXNyYWVsaSBkcml2aW5nIGxpY2VuY2UgaWYgeW91IGhhdmVuXFwndCBhbHJlYWR5JyxcbiAgXX0sXG5dO1xuXG5mdW5jdGlvbiBzaG93UGFnZShwLCBkYXRhKXtcbiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnBhZ2UnKS5mb3JFYWNoKHg9PnguY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJykpO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFnZS0nK3ApLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpO1xuICBpZihwPT09J2hvbWUnKSByZW5kZXJIb21lQ2F0cygpO1xuICBpZihwPT09J2ZvcnVtJykgcmVuZGVyRm9ydW0oKTtcbiAgaWYocD09PSdiZXN0b2YnKSByZW5kZXJCZXN0T2YoKTtcbiAgaWYocD09PSdjaGVja2xpc3QnKSByZW5kZXJDaGVja2xpc3QoKTtcbiAgaWYocD09PSdzZWFyY2gnKSByZW5kZXJUYWdDbG91ZCgpO1xuICBpZihwPT09J2NhdHMnKSByZW5kZXJDYXRzUGFnZSgpO1xuICBpZihwPT09J2NhdGVnb3J5JyYmZGF0YSl7Y3VycmVudENhdD1kYXRhO3JlbmRlckNhdGVnb3J5UGFnZSgpO31cbiAgaWYocD09PSdxdWVzdGlvbicmJmRhdGEpe2N1cnJlbnRRSWQ9ZGF0YTtyZW5kZXJRdWVzdGlvbigpO31cbiAgd2luZG93LnNjcm9sbFRvKDAsMCk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckhvbWVDYXRzKCl7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdob21lLWNhdHMnKS5pbm5lckhUTUwgPSBDQVRFR09SSUVTLm1hcChjPT5gXG4gICAgPGRpdiBjbGFzcz1cImNhdC1jYXJkXCIgb25jbGljaz1cInByZXZQYWdlPSdob21lJztzaG93UGFnZSgnY2F0ZWdvcnknLCcke2MuaWR9JylcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXQtaWNvblwiPiR7Yy5pY29ufTwvZGl2PlxuICAgICAgPGg0PiR7Yy5uYW1lfTwvaDQ+XG4gICAgICA8cD4ke2MuZGVzY308L3A+XG4gICAgICA8cCBzdHlsZT1cImZvbnQtc2l6ZTowLjcycmVtO2NvbG9yOnZhcigtLWJsdWUpO21hcmdpbi10b3A6NnB4O2ZvbnQtd2VpZ2h0OjYwMFwiPiR7cXVlc3Rpb25zLmZpbHRlcihxPT5xLmNhdD09PWMuaWQpLmxlbmd0aH0gcXVlc3Rpb25zPC9wPlxuICAgIDwvZGl2PmApLmpvaW4oJycpO1xuICBjb25zdCB0aXBzID0gVElQUztcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RpcC10ZXh0JykudGV4dENvbnRlbnQgPSB0aXBzW01hdGguZmxvb3IoRGF0ZS5ub3coKS84NjQwMDAwMCkldGlwcy5sZW5ndGhdO1xufVxuXG5mdW5jdGlvbiBzb3J0UXVlc3Rpb25zKHFzLCBtZXRob2Qpe1xuICByZXR1cm4gWy4uLnFzXS5zb3J0KChhLGIpPT57XG4gICAgaWYobWV0aG9kPT09J25ld2VzdCcpIHJldHVybiBiLmlkLWEuaWQ7XG4gICAgaWYobWV0aG9kPT09J21vc3RfYW5zd2VycycpIHJldHVybiBiLmFuc3dlcnMubGVuZ3RoLWEuYW5zd2Vycy5sZW5ndGg7XG4gICAgaWYobWV0aG9kPT09J2hpZ2hlc3RfcmF0ZWQnKSByZXR1cm4gbWF4Vm90ZXMoYiktbWF4Vm90ZXMoYSk7XG4gICAgaWYobWV0aG9kPT09J21vc3Rfdmlld2VkJykgcmV0dXJuIGIudmlld3MtYS52aWV3cztcbiAgICByZXR1cm4gYi5pZC1hLmlkO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gbWF4Vm90ZXMocSl7cmV0dXJuIHEuYW5zd2Vycy5sZW5ndGg/TWF0aC5tYXgoLi4ucS5hbnN3ZXJzLm1hcChhPT5hLnZvdGVzKSk6MDt9XG5mdW5jdGlvbiBhdmdWb3RlcyhxKXtyZXR1cm4gcS5hbnN3ZXJzLmxlbmd0aD9xLmFuc3dlcnMucmVkdWNlKChzLGEpPT5zK2Eudm90ZXMsMCkvcS5hbnN3ZXJzLmxlbmd0aDowO31cblxuZnVuY3Rpb24gcmVuZGVyRm9ydW0oKXtcbiAgY29uc3Qgc29ydCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb3J1bS1zb3J0Jyk/LnZhbHVlfHwnbmV3ZXN0JztcbiAgY29uc3QgcXMgPSBzb3J0UXVlc3Rpb25zKHF1ZXN0aW9ucywgc29ydCk7XG4gIGNvbnN0IGNhdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLWNhdCcpO1xuICBpZihjYXQpIGNhdC5pbm5lckhUTUw9JzxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3QgYSBjYXRlZ29yeS4uLjwvb3B0aW9uPicrQ0FURUdPUklFUy5tYXAoYz0+YDxvcHRpb24gdmFsdWU9XCIke2MuaWR9XCI+JHtjLmljb259ICR7Yy5uYW1lfTwvb3B0aW9uPmApLmpvaW4oJycpO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ydW0tbGlzdCcpLmlubmVySFRNTCA9IHFzLmxlbmd0aCA/IHFzLm1hcChxPT5xQ2FyZChxLCdmb3J1bScpKS5qb2luKCcnKSA6IGVtcHR5U3RhdGUoJ05vIHF1ZXN0aW9ucyB5ZXQuIEJlIHRoZSBmaXJzdCB0byBhc2shJyk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckNhdGVnb3J5UGFnZSgpe1xuICBjb25zdCBjYXQgPSBDQVRFR09SSUVTLmZpbmQoYz0+Yy5pZD09PWN1cnJlbnRDYXQpO1xuICBpZighY2F0KSByZXR1cm47XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXQtcGFnZS10aXRsZScpLnRleHRDb250ZW50ID0gY2F0Lmljb24rJyAnK2NhdC5uYW1lO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0LXBhZ2UtZGVzYycpLnRleHRDb250ZW50ID0gY2F0LmRlc2M7XG4gIGNvbnN0IHNvcnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0LXNvcnQnKT8udmFsdWV8fCduZXdlc3QnO1xuICBjb25zdCBxcyA9IHNvcnRRdWVzdGlvbnMocXVlc3Rpb25zLmZpbHRlcihxPT5xLmNhdD09PWN1cnJlbnRDYXQpLCBzb3J0KTtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdC1wYWdlLWxpc3QnKS5pbm5lckhUTUwgPSBxcy5sZW5ndGggPyBxcy5tYXAocT0+cUNhcmQocSwnY2F0ZWdvcnknKSkuam9pbignJykgOiBlbXB0eVN0YXRlKCdObyBxdWVzdGlvbnMgaW4gdGhpcyBjYXRlZ29yeSB5ZXQuJyk7XG59XG5cbmZ1bmN0aW9uIHFDYXJkKHEsZnJvbSl7XG4gIGNvbnN0IHRvcFZvdGVzID0gcS5hbnN3ZXJzLmxlbmd0aD9NYXRoLm1heCguLi5xLmFuc3dlcnMubWFwKGE9PmEudm90ZXMpKTowO1xuICBjb25zdCBjYXQgPSBDQVRFR09SSUVTLmZpbmQoYz0+Yy5pZD09PXEuY2F0KTtcbiAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwicS1jYXJkXCIgb25jbGljaz1cInByZXZQYWdlPScke2Zyb219JztzaG93UGFnZSgncXVlc3Rpb24nLCR7cS5pZH0pXCI+XG4gICAgPGRpdiBjbGFzcz1cInEtbWV0YVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJxLWNhdC1iYWRnZVwiPiR7Y2F0P2NhdC5pY29uKycgJytjYXQubmFtZTpxLmNhdH08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInEtYXV0aG9yXCI+8J+RpCAke3EuYXV0aG9yfTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicS1kYXRlXCI+8J+ThSAke3EuZGF0ZX08L3NwYW4+XG4gICAgICAke3RvcFZvdGVzPj0zMD9gPHNwYW4gY2xhc3M9XCJmZWF0dXJlZC1iYWRnZVwiPuKtkCBGZWF0dXJlZDwvc3Bhbj5gOicnfVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJxLXRpdGxlXCI+JHtxLnRpdGxlfTwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJxLXByZXZpZXdcIj4ke3EuYm9keS5zdWJzdHJpbmcoMCwxMjApfSR7cS5ib2R5Lmxlbmd0aD4xMjA/Jy4uLic6Jyd9PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInEtc3RhdHNcIj5cbiAgICAgIDxzcGFuPvCfkqwgJHtxLmFuc3dlcnMubGVuZ3RofSBhbnN3ZXIke3EuYW5zd2Vycy5sZW5ndGghPT0xPydzJzonJ308L3NwYW4+XG4gICAgICA8c3Bhbj7wn5GBICR7cS52aWV3c30gdmlld3M8L3NwYW4+XG4gICAgICA8c3Bhbj7irZAgVG9wIHZvdGU6ICR7dG9wVm90ZXN9PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOjZweFwiPiR7bGFuZ0JhZGdlKHEubGFuZyl9PC9kaXY+XG4gIDwvZGl2PmA7XG59XG5cbmZ1bmN0aW9uIHJlbmRlclF1ZXN0aW9uKCl7XG4gIGNvbnN0IHEgPSBxdWVzdGlvbnMuZmluZCh4PT54LmlkPT09Y3VycmVudFFJZCk7XG4gIGlmKCFxKXtyZXR1cm47fVxuICBxLnZpZXdzKys7XG4gIGNvbnN0IGNhdCA9IENBVEVHT1JJRVMuZmluZChjPT5jLmlkPT09cS5jYXQpO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1mdWxsLWNvbnRlbnQnKS5pbm5lckhUTUw9YFxuICAgIDxkaXYgY2xhc3M9XCJxLW1ldGFcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206MTJweFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJxLWNhdC1iYWRnZVwiIHN0eWxlPVwiY3Vyc29yOnBvaW50ZXJcIiBvbmNsaWNrPVwic2hvd1BhZ2UoJ2NhdGVnb3J5JywnJHtxLmNhdH0nKVwiPiR7Y2F0P2NhdC5pY29uKycgJytjYXQubmFtZTpxLmNhdH08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInEtYXV0aG9yXCI+8J+RpCAke3EuYXV0aG9yfTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicS1kYXRlXCI+8J+ThSAke3EuZGF0ZX08L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGgyPiR7cS50aXRsZX08L2gyPlxuICAgIDxkaXYgY2xhc3M9XCJib2R5XCIgc3R5bGU9XCJtYXJnaW4tdG9wOjEycHhcIj4ke3EuYm9keX08L2Rpdj5gO1xuICBjb25zdCBzb3J0ZWQgPSBbLi4ucS5hbnN3ZXJzXS5zb3J0KChhLGIpPT5iLnZvdGVzLWEudm90ZXMpO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zd2Vycy1jb3VudCcpLnRleHRDb250ZW50ID0gYCR7cS5hbnN3ZXJzLmxlbmd0aH0gQW5zd2VyJHtxLmFuc3dlcnMubGVuZ3RoIT09MT8ncyc6Jyd9YDtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fuc3dlcnMtbGlzdCcpLmlubmVySFRNTCA9IHNvcnRlZC5sZW5ndGggPyBzb3J0ZWQubWFwKChhLGkpPT5gXG4gICAgPGRpdiBjbGFzcz1cImFuc3dlci1jYXJkICR7aT09PTAmJmEudm90ZXM+MD8ndG9wLWFuc3dlcic6Jyd9XCI+XG4gICAgICAke2k9PT0wJiZhLnZvdGVzPjA/JzxkaXYgY2xhc3M9XCJ0b3AtYW5zd2VyLWxhYmVsXCI+4q2QIFRvcCBBbnN3ZXI8L2Rpdj4nOicnfVxuICAgICAgPGRpdiBjbGFzcz1cImFuc3dlci1ib2R5XCI+JHthLmJvZHl9PC9kaXY+XG4gICAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLWJvdHRvbTo4cHhcIj4ke2xhbmdCYWRnZShhLmxhbmcpfTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImFuc3dlci1mb290ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFuc3dlci1tZXRhXCI+8J+RpCAke2EuYXV0aG9yfSDCtyDwn5OFICR7YS5kYXRlfTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidm90ZS1idG5zXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInZvdGUtYnRuICR7YS51c2VyVm90ZWQ/J2xpa2VkJzonJ31cIiBvbmNsaWNrPVwidm90ZSgke3EuaWR9LCR7YS5pZH0pXCI+XG4gICAgICAgICAgICDwn5GNICR7YS52b3Rlc31cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZmxhZy1idG5cIiBvbmNsaWNrPVwiZmxhZ0Fuc3dlcigke3EuaWR9LCR7YS5pZH0pXCI+8J+aqSAke2EuZmxhZ2dlZD8nRmxhZ2dlZCc6J0ZsYWcnfTwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgJHthLmZsYWdnZWQ/JzxkaXYgc3R5bGU9XCJmb250LXNpemU6MC43NXJlbTtjb2xvcjp2YXIoLS1yZWQpO21hcmdpbi10b3A6OHB4XCI+4pqg77iPIFRoaXMgYW5zd2VyIGhhcyBiZWVuIGZsYWdnZWQgZm9yIHJldmlldy4gUGxlYXNlIHZlcmlmeSB3aXRoIG9mZmljaWFsIHNvdXJjZXMuPC9kaXY+JzonJ31cbiAgICA8L2Rpdj5gKS5qb2luKCcnKSA6ICc8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGVcIj48ZGl2IGNsYXNzPVwiaWNvblwiPvCfkqw8L2Rpdj48cD5ObyBhbnN3ZXJzIHlldC4gQmUgdGhlIGZpcnN0IHRvIGhlbHAhPC9wPjwvZGl2Pic7XG59XG5cbmZ1bmN0aW9uIGdvQmFjaygpe3Nob3dQYWdlKHByZXZQYWdlPT09J2NhdGVnb3J5Jz8nY2F0ZWdvcnknOidmb3J1bScsIHByZXZQYWdlPT09J2NhdGVnb3J5Jz9jdXJyZW50Q2F0Om51bGwpO31cblxuZnVuY3Rpb24gdG9nZ2xlQXNrQmFyKCl7XG4gIGNvbnN0IGIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXNrLWJhcicpO1xuICBiLnN0eWxlLmRpc3BsYXkgPSBiLnN0eWxlLmRpc3BsYXk9PT0nbm9uZSc/J2Jsb2NrJzonbm9uZSc7XG59XG5mdW5jdGlvbiBjYW5jZWxBc2soKXtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtdGl0bGUnKS52YWx1ZT0nJztcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtYm9keScpLnZhbHVlPScnO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1jYXQnKS52YWx1ZT0nJztcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtbmFtZScpLnZhbHVlPScnO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXNrLWJhcicpLnN0eWxlLmRpc3BsYXk9J25vbmUnO1xufVxuZnVuY3Rpb24gcmVuZGVyQ2F0c1BhZ2UoKXtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdHMtZ3JpZCcpLmlubmVySFRNTCA9IENBVEVHT1JJRVMubWFwKGM9PmBcbiAgICA8ZGl2IGNsYXNzPVwiY2F0LWNhcmRcIiBvbmNsaWNrPVwicHJldlBhZ2U9J2NhdHMnO3Nob3dQYWdlKCdjYXRlZ29yeScsJyR7Yy5pZH0nKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhdC1pY29uXCI+JHtjLmljb259PC9kaXY+XG4gICAgICA8aDQ+JHtjLm5hbWV9PC9oND5cbiAgICAgIDxwPiR7Yy5kZXNjfTwvcD5cbiAgICAgIDxwIHN0eWxlPVwiZm9udC1zaXplOjAuNzJyZW07Y29sb3I6dmFyKC0tYmx1ZSk7bWFyZ2luLXRvcDo2cHg7Zm9udC13ZWlnaHQ6NjAwXCI+JHtxdWVzdGlvbnMuZmlsdGVyKHE9PnEuY2F0PT09Yy5pZCkubGVuZ3RofSBxdWVzdGlvbnM8L3A+XG4gICAgPC9kaXY+YCkuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIHN1Ym1pdFF1ZXN0aW9uKCl7XG4gIGNvbnN0IHRpdGxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtdGl0bGUnKS52YWx1ZS50cmltKCk7XG4gIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1ib2R5JykudmFsdWUudHJpbSgpO1xuICBjb25zdCBjYXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1jYXQnKS52YWx1ZTtcbiAgY29uc3QgbmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLW5hbWUnKS52YWx1ZS50cmltKCl8fCdBbm9ueW1vdXMnO1xuICBpZighdGl0bGV8fCFib2R5fHwhY2F0KXtzaG93VG9hc3QoJ1BsZWFzZSBmaWxsIGluIGFsbCBmaWVsZHMg4p2MJyk7cmV0dXJuO31cbiAgcXVlc3Rpb25zLnVuc2hpZnQoe2lkOm5leHRRSWQrKyx0aXRsZSxib2R5LGNhdCxhdXRob3I6bmFtZSxkYXRlOm5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zbGljZSgwLDEwKSx2aWV3czowLGxhbmc6Y3VycmVudExhbmcsYW5zd2VyczpbXX0pO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS10aXRsZScpLnZhbHVlPScnO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1ib2R5JykudmFsdWU9Jyc7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLWNhdCcpLnZhbHVlPScnO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1uYW1lJykudmFsdWU9Jyc7XG4gIHRvZ2dsZUFza0JhcigpO1xuICByZW5kZXJGb3J1bSgpO1xuICBzaG93VG9hc3QoJ1F1ZXN0aW9uIHBvc3RlZCEg4pyFJyk7XG59XG5cbmZ1bmN0aW9uIHN1Ym1pdEFuc3dlcigpe1xuICBjb25zdCBxID0gcXVlc3Rpb25zLmZpbmQoeD0+eC5pZD09PWN1cnJlbnRRSWQpO1xuICBpZighcSkgcmV0dXJuO1xuICBjb25zdCBib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fucy1ib2R5JykudmFsdWUudHJpbSgpO1xuICBjb25zdCBuYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fucy1uYW1lJykudmFsdWUudHJpbSgpfHwnQW5vbnltb3VzJztcbiAgaWYoIWJvZHkpe3Nob3dUb2FzdCgnUGxlYXNlIHdyaXRlIGFuIGFuc3dlciDinYwnKTtyZXR1cm47fVxuICBxLmFuc3dlcnMucHVzaCh7aWQ6bmV4dEFJZCsrLGJvZHksYXV0aG9yOm5hbWUsZGF0ZTpuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwxMCksdm90ZXM6MCxmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOmN1cnJlbnRMYW5nfSk7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbnMtYm9keScpLnZhbHVlPScnO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5zLW5hbWUnKS52YWx1ZT0nJztcbiAgcmVuZGVyUXVlc3Rpb24oKTtcbiAgc2hvd1RvYXN0KCdBbnN3ZXIgcG9zdGVkISDinIUnKTtcbn1cblxuZnVuY3Rpb24gdm90ZShxSWQsYUlkKXtcbiAgY29uc3QgcSA9IHF1ZXN0aW9ucy5maW5kKHg9PnguaWQ9PT1xSWQpO1xuICBjb25zdCBhID0gcT8uYW5zd2Vycy5maW5kKHg9PnguaWQ9PT1hSWQpO1xuICBpZighYSkgcmV0dXJuO1xuICBhLnVzZXJWb3RlZD0hYS51c2VyVm90ZWQ7XG4gIGEudm90ZXMrPWEudXNlclZvdGVkPzE6LTE7XG4gIHJlbmRlclF1ZXN0aW9uKCk7XG59XG5cbmZ1bmN0aW9uIGZsYWdBbnN3ZXIocUlkLGFJZCl7XG4gIGNvbnN0IHEgPSBxdWVzdGlvbnMuZmluZCh4PT54LmlkPT09cUlkKTtcbiAgY29uc3QgYSA9IHE/LmFuc3dlcnMuZmluZCh4PT54LmlkPT09YUlkKTtcbiAgaWYoIWEpIHJldHVybjtcbiAgYS5mbGFnZ2VkPSFhLmZsYWdnZWQ7XG4gIHJlbmRlclF1ZXN0aW9uKCk7XG4gIHNob3dUb2FzdChhLmZsYWdnZWQ/J0Fuc3dlciBmbGFnZ2VkIGZvciByZXZpZXcg8J+aqSc6J0ZsYWcgcmVtb3ZlZCcpO1xufVxuXG5mdW5jdGlvbiByZW5kZXJCZXN0T2YoZmlsdGVyQ2F0KXtcbiAgY29uc3QgZmlsdGVycyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZXN0b2YtZmlsdGVycycpO1xuICBmaWx0ZXJzLmlubmVySFRNTCA9IENBVEVHT1JJRVMubWFwKGM9PmA8YnV0dG9uIGNsYXNzPVwiZmlsdGVyLWJ0blwiIG9uY2xpY2s9XCJmaWx0ZXJCZXN0T2YoJyR7Yy5pZH0nLHRoaXMpXCI+JHtjLmljb259ICR7Yy5uYW1lfTwvYnV0dG9uPmApLmpvaW4oJycpO1xuICBjb25zdCB0aHJlc2hvbGQgPSAyMDtcbiAgbGV0IHFzID0gcXVlc3Rpb25zLmZpbHRlcihxPT5tYXhWb3RlcyhxKT49dGhyZXNob2xkIHx8IGF2Z1ZvdGVzKHEpPj0xNSk7XG4gIGlmKGZpbHRlckNhdCYmZmlsdGVyQ2F0IT09J2FsbCcpIHFzPXFzLmZpbHRlcihxPT5xLmNhdD09PWZpbHRlckNhdCk7XG4gIHFzLnNvcnQoKGEsYik9Pm1heFZvdGVzKGIpLW1heFZvdGVzKGEpKTtcbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jlc3RvZi1saXN0JykuaW5uZXJIVE1MID0gcXMubGVuZ3RoXG4gICAgPyBgPHAgc3R5bGU9XCJmb250LXNpemU6MC44MnJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLWJvdHRvbToxNnB4XCI+U2hvd2luZyAke3FzLmxlbmd0aH0gaGlnaGx5LXJhdGVkIHF1ZXN0aW9uJHtxcy5sZW5ndGghPT0xPydzJzonJ308L3A+YCtxcy5tYXAocT0+cUNhcmQocSwnYmVzdG9mJykpLmpvaW4oJycpXG4gICAgOiBlbXB0eVN0YXRlKCdBcyB0aGUgY29tbXVuaXR5IGdyb3dzLCB0b3AtcmF0ZWQgYW5zd2VycyB3aWxsIGFwcGVhciBoZXJlLiBTdGFydCBhbnN3ZXJpbmcgcXVlc3Rpb25zIScpO1xufVxuXG5mdW5jdGlvbiBmaWx0ZXJCZXN0T2YoY2F0LGJ0bil7XG4gIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5maWx0ZXItYnRuJykuZm9yRWFjaChiPT5iLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpKTtcbiAgaWYoYnRuKSBidG4uY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7XG4gIHJlbmRlckJlc3RPZihjYXQ9PT0nYWxsJz9udWxsOmNhdCk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckNoZWNrbGlzdCgpe1xuICBjb25zdCBzYXZlZCA9IHt9O1xuICB0cnl7Y29uc3Qgcz1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdjaGVja2xpc3QnKTtpZihzKU9iamVjdC5hc3NpZ24oc2F2ZWQsSlNPTi5wYXJzZShzKSk7fWNhdGNoKGUpe31cbiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoZWNrbGlzdC1jb250ZW50JykuaW5uZXJIVE1MID0gQ0hFQ0tMSVNULm1hcCgocyxzaSk9PmBcbiAgICA8ZGl2IGNsYXNzPVwiY2hlY2tsaXN0LXNlY3Rpb25cIj5cbiAgICAgIDxoMz4ke3MuaWNvbn0gJHtzLnNlY3Rpb259PC9oMz5cbiAgICAgICR7cy5pdGVtcy5tYXAoKGl0ZW0saWkpPT57XG4gICAgICAgIGNvbnN0IGtleT1gJHtzaX0tJHtpaX1gO1xuICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJjaGVja2xpc3QtaXRlbVwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImNoay0ke2tleX1cIiAke3NhdmVkW2tleV0/J2NoZWNrZWQnOicnfSBvbmNoYW5nZT1cInNhdmVDaGVjaygnJHtrZXl9Jyx0aGlzLmNoZWNrZWQpXCIgLz5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiY2hrLSR7a2V5fVwiPiR7aXRlbX08L2xhYmVsPlxuICAgICAgICA8L2Rpdj5gO1xuICAgICAgfSkuam9pbignJyl9XG4gICAgPC9kaXY+YCkuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIHNhdmVDaGVjayhrZXksdmFsKXtcbiAgdHJ5e1xuICAgIGNvbnN0IHM9c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY2hlY2tsaXN0Jyk7XG4gICAgY29uc3QgZGF0YT1zP0pTT04ucGFyc2Uocyk6e307XG4gICAgZGF0YVtrZXldPXZhbDtcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdjaGVja2xpc3QnLEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgfWNhdGNoKGUpe31cbn1cblxuZnVuY3Rpb24gcmVuZGVyVGFnQ2xvdWQoKXtcbiAgY29uc3QgdGFncz1bJ0JhbmtpbmcnLCdIZWFsdGggSW5zdXJhbmNlJywnVGV1ZGF0IFplaHV0JywnS3VwYXQgSG9saW0nLCdUYXgnLCdBcm5vbmEnLCdCaXR1YWNoIExldW1pJywnVWxwYW4nLCdJbnRlcm5ldCcsJ1Bob25lJywnSG91c2luZycsJ0RyaXZpbmcgTGljZW5jZScsJ1NjaG9vbCcsJ0VtcGxveW1lbnQnLCdNaXNyYWQgSGFwbmltJ107XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YWctY2xvdWQnKS5pbm5lckhUTUw9dGFncy5tYXAodD0+YDxzcGFuIGNsYXNzPVwidGFnLWNsb3VkLWl0ZW1cIiBvbmNsaWNrPVwic2VhcmNoVGFnKCcke3R9JylcIj4ke3R9PC9zcGFuPmApLmpvaW4oJycpO1xufVxuXG5mdW5jdGlvbiBzZWFyY2hUYWcodCl7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWFyY2gtaW5wdXQnKS52YWx1ZT10O1xuICBkb1NlYXJjaCgpO1xufVxuXG5mdW5jdGlvbiBkb1NlYXJjaCgpe1xuICBjb25zdCB0ZXJtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlYXJjaC1pbnB1dCcpLnZhbHVlLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICBpZighdGVybSl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlYXJjaC1yZXN1bHRzJykuaW5uZXJIVE1MPScnO3JldHVybjt9XG4gIGNvbnN0IHJlc3VsdHMgPSBxdWVzdGlvbnMuZmlsdGVyKHE9PlxuICAgIHEudGl0bGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKXx8XG4gICAgcS5ib2R5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSl8fFxuICAgIHEuYW5zd2Vycy5zb21lKGE9PmEuYm9keS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pKXx8XG4gICAgKENBVEVHT1JJRVMuZmluZChjPT5jLmlkPT09cS5jYXQpPy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSkpXG4gICk7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWFyY2gtcmVzdWx0cycpLmlubmVySFRNTCA9IHJlc3VsdHMubGVuZ3RoXG4gICAgPyBgPHAgc3R5bGU9XCJmb250LXNpemU6MC44MnJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLWJvdHRvbToxNnB4XCI+JHtyZXN1bHRzLmxlbmd0aH0gcmVzdWx0JHtyZXN1bHRzLmxlbmd0aCE9PTE/J3MnOicnfSBmb3IgXCI8c3Ryb25nPiR7dGVybX08L3N0cm9uZz5cIjwvcD5gK3Jlc3VsdHMubWFwKHE9PnFDYXJkKHEsJ3NlYXJjaCcpKS5qb2luKCcnKVxuICAgIDogYDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZVwiPjxkaXYgY2xhc3M9XCJpY29uXCI+8J+UjTwvZGl2PjxwPk5vIHJlc3VsdHMgZm91bmQgZm9yIFwiPHN0cm9uZz4ke3Rlcm19PC9zdHJvbmc+XCIuIFRyeSBhIGRpZmZlcmVudCBrZXl3b3JkIG9yIDxhIGhyZWY9XCIjXCIgb25jbGljaz1cInNob3dQYWdlKCdmb3J1bScpO3JldHVybiBmYWxzZTtcIiBzdHlsZT1cImNvbG9yOnZhcigtLWJsdWUpXCI+YXNrIGEgcXVlc3Rpb248L2E+ITwvcD48L2Rpdj5gO1xufVxuXG5mdW5jdGlvbiBsYW5nRmxhZyhjb2RlKXtyZXR1cm4gKExBTkdTLmZpbmQobD0+bC5jb2RlPT09Y29kZSl8fHtmbGFnOifwn4yQJ30pLmZsYWc7fVxuZnVuY3Rpb24gbGFuZ05hbWUoY29kZSl7cmV0dXJuIChMQU5HUy5maW5kKGw9PmwuY29kZT09PWNvZGUpfHx7bmFtZTpjb2RlfSkubmFtZTt9XG5mdW5jdGlvbiBsYW5nTmF0aXZlKGNvZGUpe3JldHVybiAoTEFOR1MuZmluZChsPT5sLmNvZGU9PT1jb2RlKXx8e25hdGl2ZTpjb2RlfSkubmF0aXZlO31cbmZ1bmN0aW9uIGxhbmdCYWRnZShpdGVtTGFuZyl7XG4gIGNvbnN0IHRyYW5zbGF0ZWQgPSBpdGVtTGFuZyAmJiBpdGVtTGFuZyE9PWN1cnJlbnRMYW5nO1xuICBpZighaXRlbUxhbmcpIHJldHVybiAnJztcbiAgcmV0dXJuIGA8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTowLjcycmVtO2NvbG9yOnZhcigtLW11dGVkKTtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4O21hcmdpbi10b3A6NHB4XCI+XG4gICAgT3JpZ2luYWxseSBpbiAke2xhbmdOYXRpdmUoaXRlbUxhbmcpfSR7dHJhbnNsYXRlZD8nIMK3IDxzcGFuIHN0eWxlPVwiY29sb3I6dmFyKC0tYmx1ZSk7Zm9udC13ZWlnaHQ6NjAwXCI+8J+UhCBBdXRvLXRyYW5zbGF0ZWQ8L3NwYW4+JzonJ31cbiAgPC9zcGFuPmA7XG59XG5mdW5jdGlvbiBvcGVuTGFuZ01vZGFsKCl7XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYW5nLW1vZGFsJykuY2xhc3NMaXN0LmFkZCgnb3BlbicpO1xuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFuZy1ncmlkJykuaW5uZXJIVE1MPUxBTkdTLm1hcChsPT5gPGRpdiBjbGFzcz1cImxhbmctb3B0aW9uICR7bC5jb2RlPT09Y3VycmVudExhbmc/J2FjdGl2ZSc6Jyd9XCIgb25jbGljaz1cInNlbGVjdExhbmcoJyR7bC5jb2RlfScsdGhpcylcIj4ke2wubmF0aXZlfTwvZGl2PmApLmpvaW4oJycpO1xufVxuZnVuY3Rpb24gY2xvc2VMYW5nTW9kYWwoKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFuZy1tb2RhbCcpLmNsYXNzTGlzdC5yZW1vdmUoJ29wZW4nKTt9XG5mdW5jdGlvbiBzZWxlY3RMYW5nKGNvZGUsZWwpe1xuICBjdXJyZW50TGFuZz1jb2RlO1xuICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubGFuZy1vcHRpb24nKS5mb3JFYWNoKHg9PnguY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJykpO1xuICBlbC5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTtcbiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmxhbmctYnRuJykudGV4dENvbnRlbnQ9bGFuZ0ZsYWcoY29kZSk7XG4gIHNldFRpbWVvdXQoKCk9PntjbG9zZUxhbmdNb2RhbCgpO3Nob3dUb2FzdCgnTGFuZ3VhZ2Ugc2V0IHRvICcrbGFuZ05hbWUoY29kZSkrJyDigJQgYXV0by10cmFuc2xhdGlvbiBhY3RpdmUg8J+MkCcpO30sMzAwKTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0QW1vdW50KGJ0bix2KXtcbiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmFtb3VudC1idG4nKS5mb3JFYWNoKGI9PmIuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKSk7XG4gIGJ0bi5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpO1xufVxuXG5mdW5jdGlvbiBzaG93VG9hc3QobXNnKXtcbiAgY29uc3QgdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9hc3QnKTtcbiAgdC50ZXh0Q29udGVudD1tc2c7dC5jbGFzc0xpc3QuYWRkKCdzaG93Jyk7XG4gIHNldFRpbWVvdXQoKCk9PnQuY2xhc3NMaXN0LnJlbW92ZSgnc2hvdycpLDMwMDApO1xufVxuZnVuY3Rpb24gZW1wdHlTdGF0ZShtc2cpe3JldHVybiBgPGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCI+PGRpdiBjbGFzcz1cImljb25cIj7wn5KsPC9kaXY+PHA+JHttc2d9PC9wPjwvZGl2PmA7fVxuXG4vLyBJbml0XG5yZW5kZXJIb21lQ2F0cygpO1xuPC9zY3JpcHQ+XG48L2JvZHk+XG48L2h0bWw+XG4iLCJtZXNzYWdlIjoiV3JvdGUgY29udGVudHMgdG8gQzpcXFVzZXJzXFxyb2xpa1xcaW5kZXguaHRtbCJ9fSwiaXNFcnJvciI6ZmFsc2V9fX19", "47ca93a053a6eb55b28d6db7993133b788e539126215af91cd009d8fc64dd04f": "eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6InJlZGFjdGVkLXJlYXNvbmluZyIsImRhdGEiOiJyRUtJaDQyQXFWUWFHMUc5SFpCQThaak9fdGRnZ2tVblhSVVdJelU2NVg1eHdUZ3F6eHhCdjNKenJ5UUJFTlVJUUZWLU1fdHFqa0xrbk1VdUhicnR0OXdGQlViVlQ0M2hoSFBuenl0bU82TVRjZ2I4Zmd3VGtxcVlVM1Y0dnA4bThRSURFY3QtU2swbFg0MU5yaEMtRmZrSXJ4UzNpaG1rZ0dQcGN6bGFndl93SGwxQlZ5WXNJeHJlRmJUV21RIiwicHJvdmlkZXJPcHRpb25zIjp7ImN1cnNvciI6eyJtb2RlbE5hbWUiOiJjb21wb3Nlci0yLjUtZmFzdCJ9fX0seyJ0eXBlIjoidGV4dCIsInRleHQiOiJZb3VyIE9saW1BbnN3ZXJzIHNpdGUgaXMgc2F2ZWQgaW4gYEM6XFxVc2Vyc1xccm9saWtcXGluZGV4Lmh0bWxgLlxuXG5PcGVuIGl0IGluIGEgYnJvd3NlciBieSBkb3VibGUtY2xpY2tpbmcgdGhlIGZpbGUsIG9yIHJ1bjpcblxuYGBgcG93ZXJzaGVsbFxuc3RhcnQgQzpcXFVzZXJzXFxyb2xpa1xcaW5kZXguaHRtbFxuYGBgXG5cbkl04oCZcyBhIHNpbmdsZS1wYWdlIGFwcCB3aXRoIGZvcnVtLCBjYXRlZ29yaWVzLCBzZWFyY2gsIGNoZWNrbGlzdCwgQmVzdCBPZiwgZG9uYXRlLCBhbmQgbGFuZ3VhZ2Ugc2VsZWN0aW9uIOKAlCBhbGwgY2xpZW50LXNpZGUgd2l0aCBzYW1wbGUgZGF0YS4ifV0sImlkIjoiMSJ9", "191d932c557534eb3bc358b80c5169c2a7664e99088c077bdf672a3a5cfbb281": "PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CjxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgo8dGl0bGU+T2xpbUFuc3dlcnMuY29tPC90aXRsZT4KPHN0eWxlPgogIDpyb290IHsKICAgIC0tYmx1ZTojMWE1ZmE4Oy0tYmx1ZS1saWdodDojZThmMGZiOy0tZ29sZDojZjBiNDI5Oy0tZ29sZC1saWdodDojZmZmOGU3OwogICAgLS1ncmVlbjojMWE4YTRhOy0tcmVkOiNjMDM5MmI7LS1ncmF5OiNmNGY2Zjk7LS10ZXh0OiMxYTFhMmU7LS1tdXRlZDojNmI3MjgwOwogICAgLS1ib3JkZXI6I2RkZTNlZDstLXdoaXRlOiNmZmZmZmY7LS1zaGFkb3c6MCAycHggMTJweCByZ2JhKDAsMCwwLDAuMDgpOwogIH0KICAqe2JveC1zaXppbmc6Ym9yZGVyLWJveDttYXJnaW46MDtwYWRkaW5nOjB9CiAgYm9keXtmb250LWZhbWlseTonU2Vnb2UgVUknLHN5c3RlbS11aSxzYW5zLXNlcmlmO2NvbG9yOnZhcigtLXRleHQpO2JhY2tncm91bmQ6dmFyKC0tZ3JheSk7bWluLWhlaWdodDoxMDB2aH0KICAvKiBOQVYgKi8KICBuYXZ7YmFja2dyb3VuZDp2YXIoLS1ibHVlKTtjb2xvcjojZmZmO3BhZGRpbmc6MCAyNHB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47aGVpZ2h0OjYwcHg7cG9zaXRpb246c3RpY2t5O3RvcDowO3otaW5kZXg6MTAwO2JveC1zaGFkb3c6MCAycHggOHB4IHJnYmEoMCwwLDAsMC4yKX0KICAubmF2LWxvZ297Zm9udC1zaXplOjEuNDVyZW07Zm9udC13ZWlnaHQ6ODAwO2N1cnNvcjpwb2ludGVyO2xldHRlci1zcGFjaW5nOi0wLjVweDtsaW5lLWhlaWdodDoxLjE7bWFyZ2luLXJpZ2h0OjEycHg7ZmxleC1zaHJpbms6MH0KICAubmF2LWxvZ28gc3BhbntkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZTowLjc4cmVtO2ZvbnQtd2VpZ2h0OjUwMDtsZXR0ZXItc3BhY2luZzoxLjVweDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7b3BhY2l0eTowLjg1fQogIC5uYXYtbG9nbzpob3ZlcntvcGFjaXR5OjAuODV9CiAgLm5hdi1sb2dvIHNwYW57Y29sb3I6dmFyKC0tZ29sZCl9CiAgLm5hdi1saW5rc3tkaXNwbGF5OmZsZXg7Z2FwOjZweDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC13cmFwOndyYXB9CiAgLm5hdi1saW5rcyBidXR0b257YmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO2NvbG9yOiNmZmY7cGFkZGluZzo2cHggMTBweDtib3JkZXItcmFkaXVzOjZweDtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MC44MnJlbTtmb250LXdlaWdodDo1MDA7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDAuMnN9CiAgLm5hdi1saW5rcyBidXR0b246aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuMTUpfQogIC5uYXYtbGlua3MgLm5hdi1kb25hdGV7YmFja2dyb3VuZDp2YXIoLS1nb2xkKTtjb2xvcjp2YXIoLS10ZXh0KTtmb250LXdlaWdodDo3MDA7cGFkZGluZzo2cHggMTJweDtib3JkZXItcmFkaXVzOjZweH0KICAubmF2LWxpbmtzIC5uYXYtZG9uYXRlOmhvdmVye2JhY2tncm91bmQ6I2UwYTgwMH0KICAubGFuZy1idG57YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuMTUpIWltcG9ydGFudDtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4zKSFpbXBvcnRhbnQ7Zm9udC1zaXplOjAuNzhyZW0haW1wb3J0YW50fQoKICAvKiBQQUdFUyAqLwogIC5wYWdle2Rpc3BsYXk6bm9uZTttYXgtd2lkdGg6MTEwMHB4O21hcmdpbjowIGF1dG87cGFkZGluZzoyOHB4IDIwcHh9CiAgLnBhZ2UuYWN0aXZle2Rpc3BsYXk6YmxvY2t9CgogIC8qIEhPTUUgKi8KICAuaGVyb3tiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsdmFyKC0tYmx1ZSkgMCUsIzI0NzFjOCAxMDAlKTtjb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6MTZweDtwYWRkaW5nOjQ4cHggNDBweDt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tYm90dG9tOjMycHh9CiAgLmhlcm8gaDF7Zm9udC1zaXplOjIuNHJlbTtmb250LXdlaWdodDo4MDA7bWFyZ2luLWJvdHRvbToxMnB4fQogIC5oZXJvIGgxIHNwYW57Y29sb3I6dmFyKC0tZ29sZCl9CiAgLmhlcm8gcHtmb250LXNpemU6MS4xcmVtO29wYWNpdHk6MC45MjttYXgtd2lkdGg6NjIwcHg7bWFyZ2luOjAgYXV0byAyNHB4O2xpbmUtaGVpZ2h0OjEuNn0KICAuaGVyby1idG5ze2Rpc3BsYXk6ZmxleDtnYXA6MTJweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwfQogIC5idG57cGFkZGluZzoxMnB4IDI0cHg7Ym9yZGVyLXJhZGl1czo4cHg7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjAuOTVyZW07Zm9udC13ZWlnaHQ6NzAwO3RyYW5zaXRpb246YWxsIDAuMnN9CiAgLmJ0bi1wcmltYXJ5e2JhY2tncm91bmQ6dmFyKC0tZ29sZCk7Y29sb3I6dmFyKC0tdGV4dCl9CiAgLmJ0bi1wcmltYXJ5OmhvdmVye2JhY2tncm91bmQ6I2UwYTgwMDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMXB4KX0KICAuYnRuLW91dGxpbmV7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojZmZmO2JvcmRlcjoycHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjYpfQogIC5idG4tb3V0bGluZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMC4xKX0KICAuaG93LWl0LXdvcmtze2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KGF1dG8tZml0LG1pbm1heCgyMDBweCwxZnIpKTtnYXA6MjBweDttYXJnaW4tYm90dG9tOjMycHh9CiAgLmhpdy1jYXJke2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjI0cHg7dGV4dC1hbGlnbjpjZW50ZXI7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpfQogIC5oaXctaWNvbntmb250LXNpemU6MnJlbTttYXJnaW4tYm90dG9tOjEwcHh9CiAgLmhpdy1jYXJkIGgze2ZvbnQtc2l6ZToxcmVtO21hcmdpbi1ib3R0b206NnB4O2NvbG9yOnZhcigtLWJsdWUpfQogIC5oaXctY2FyZCBwe2ZvbnQtc2l6ZTowLjg1cmVtO2NvbG9yOnZhcigtLW11dGVkKTtsaW5lLWhlaWdodDoxLjV9CiAgLnNlY3Rpb24tdGl0bGV7Zm9udC1zaXplOjEuM3JlbTtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbToxNnB4O2NvbG9yOnZhcigtLWJsdWUpfQogIC5jYXRlZ29yeS1ncmlke2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KGF1dG8tZmlsbCxtaW5tYXgoMTYwcHgsMWZyKSk7Z2FwOjE0cHg7bWFyZ2luLWJvdHRvbTozMnB4fQogIC5jYXQtY2FyZHtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxOHB4IDE0cHg7dGV4dC1hbGlnbjpjZW50ZXI7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyOjJweCBzb2xpZCB0cmFuc3BhcmVudDt0cmFuc2l0aW9uOmFsbCAwLjJzO2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KX0KICAuY2F0LWNhcmQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWJsdWUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpfQogIC5jYXQtaWNvbntmb250LXNpemU6MS44cmVtO21hcmdpbi1ib3R0b206OHB4fQogIC5jYXQtY2FyZCBoNHtmb250LXNpemU6MC44OHJlbTtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tdGV4dCl9CiAgLmNhdC1jYXJkIHB7Zm9udC1zaXplOjAuNzVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi10b3A6NHB4fQogIC5kb25hdGUtYmFubmVye2JhY2tncm91bmQ6dmFyKC0tZ29sZC1saWdodCk7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1nb2xkKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyNHB4O3RleHQtYWxpZ246Y2VudGVyO21hcmdpbi1ib3R0b206MzJweH0KICAuZG9uYXRlLWJhbm5lciBoM3tmb250LXNpemU6MS4xcmVtO21hcmdpbi1ib3R0b206OHB4fQogIC5kb25hdGUtYmFubmVyIHB7Zm9udC1zaXplOjAuODhyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MTRweH0KICAudGlwLWJveHtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsI2U4ZjVlOSwjZjBmYWY0KTtib3JkZXItbGVmdDo0cHggc29saWQgdmFyKC0tZ3JlZW4pO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjE4cHggMjBweDttYXJnaW4tYm90dG9tOjMycHh9CiAgLnRpcC1ib3ggLnRpcC1sYWJlbHtmb250LXNpemU6MC43NXJlbTtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tZ3JlZW4pO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtsZXR0ZXItc3BhY2luZzoxcHg7bWFyZ2luLWJvdHRvbTo2cHh9CiAgLnRpcC1ib3ggcHtmb250LXNpemU6MC45MnJlbTtsaW5lLWhlaWdodDoxLjV9CgogIC8qIEZPUlVNIC8gQ0FURUdPUlkgKi8KICAuZm9ydW0taGVhZGVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47bWFyZ2luLWJvdHRvbToyMHB4O2ZsZXgtd3JhcDpnYXB9CiAgLnNvcnQtc2VsZWN0e3BhZGRpbmc6OHB4IDEycHg7Ym9yZGVyLXJhZGl1czo4cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2ZvbnQtc2l6ZTowLjg1cmVtO2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2N1cnNvcjpwb2ludGVyO2NvbG9yOnZhcigtLXRleHQpfQogIC5hc2stYmFye2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjIwcHg7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpO21hcmdpbi1ib3R0b206MjRweH0KICAuYXNrLWJhciBoM3tmb250LXNpemU6MXJlbTttYXJnaW4tYm90dG9tOjEycHg7Y29sb3I6dmFyKC0tYmx1ZSl9CiAgLmFzay1iYXIgaW5wdXQsLmFzay1iYXIgdGV4dGFyZWEsLmFzay1iYXIgc2VsZWN0e3dpZHRoOjEwMCU7cGFkZGluZzoxMHB4IDE0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4O2ZvbnQtc2l6ZTowLjlyZW07bWFyZ2luLWJvdHRvbToxMHB4O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Y29sb3I6dmFyKC0tdGV4dCl9CiAgLmFzay1iYXIgdGV4dGFyZWF7cmVzaXplOnZlcnRpY2FsO21pbi1oZWlnaHQ6ODBweH0KICAudGFnLWlucHV0e2Rpc3BsYXk6ZmxleDtnYXA6OHB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MTBweH0KICAudGFne2JhY2tncm91bmQ6dmFyKC0tYmx1ZS1saWdodCk7Y29sb3I6dmFyKC0tYmx1ZSk7cGFkZGluZzo0cHggMTBweDtib3JkZXItcmFkaXVzOjIwcHg7Zm9udC1zaXplOjAuNzhyZW07Zm9udC13ZWlnaHQ6NjAwO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweH0KICAudGFnIC5yZW1vdmV7Y29sb3I6dmFyKC0tcmVkKTtmb250LXdlaWdodDo3MDB9CiAgLnEtY2FyZHtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoyMHB4O2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KTttYXJnaW4tYm90dG9tOjE2cHg7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpib3gtc2hhZG93IDAuMnN9CiAgLnEtY2FyZDpob3Zlcntib3gtc2hhZG93OjAgNHB4IDIwcHggcmdiYSgwLDAsMCwwLjEyKX0KICAucS1tZXRhe2Rpc3BsYXk6ZmxleDtnYXA6MTBweDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC13cmFwOndyYXA7bWFyZ2luLWJvdHRvbTo4cHh9CiAgLnEtY2F0LWJhZGdle2JhY2tncm91bmQ6dmFyKC0tYmx1ZS1saWdodCk7Y29sb3I6dmFyKC0tYmx1ZSk7Zm9udC1zaXplOjAuNzJyZW07Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6M3B4IDlweDtib3JkZXItcmFkaXVzOjEycHh9CiAgLnEtZGF0ZXtmb250LXNpemU6MC43NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCl9CiAgLnEtYXV0aG9ye2ZvbnQtc2l6ZTowLjc1cmVtO2NvbG9yOnZhcigtLW11dGVkKX0KICAucS10aXRsZXtmb250LXNpemU6MS4wNXJlbTtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbTo2cHh9CiAgLnEtcHJldmlld3tmb250LXNpemU6MC44NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bGluZS1oZWlnaHQ6MS41O21hcmdpbi1ib3R0b206MTBweH0KICAucS1zdGF0c3tkaXNwbGF5OmZsZXg7Z2FwOjE0cHg7Zm9udC1zaXplOjAuOHJlbTtjb2xvcjp2YXIoLS1tdXRlZCl9CiAgLnEtc3RhdHMgc3BhbntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHh9CiAgLmZlYXR1cmVkLWJhZGdle2JhY2tncm91bmQ6dmFyKC0tZ29sZCk7Y29sb3I6dmFyKC0tdGV4dCk7Zm9udC1zaXplOjAuN3JlbTtmb250LXdlaWdodDo3MDA7cGFkZGluZzoycHggOHB4O2JvcmRlci1yYWRpdXM6MTBweDttYXJnaW4tbGVmdDo4cHh9CgogIC8qIFFVRVNUSU9OIERFVEFJTCAqLwogIC5iYWNrLWJ0bntiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Y29sb3I6dmFyKC0tYmx1ZSk7Zm9udC1zaXplOjAuOXJlbTtjdXJzb3I6cG9pbnRlcjttYXJnaW4tYm90dG9tOjE2cHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O2ZvbnQtd2VpZ2h0OjYwMH0KICAucS1mdWxse2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjI0cHg7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpO21hcmdpbi1ib3R0b206MjRweH0KICAucS1mdWxsIGgye2ZvbnQtc2l6ZToxLjNyZW07bWFyZ2luLWJvdHRvbToxMnB4fQogIC5xLWZ1bGwgLmJvZHl7Zm9udC1zaXplOjAuOTJyZW07bGluZS1oZWlnaHQ6MS43O21hcmdpbi1ib3R0b206MTZweH0KICAudGFncy1yb3d7ZGlzcGxheTpmbGV4O2dhcDo4cHg7ZmxleC13cmFwOndyYXA7bWFyZ2luLWJvdHRvbToxNnB4fQogIC5hbnN3ZXJzLXNlY3Rpb24gaDN7Zm9udC1zaXplOjEuMXJlbTtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbToxNnB4O2NvbG9yOnZhcigtLWJsdWUpfQogIC5hbnN3ZXItY2FyZHtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjEycHg7cGFkZGluZzoxOHB4O2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KTttYXJnaW4tYm90dG9tOjE0cHg7Ym9yZGVyLWxlZnQ6NHB4IHNvbGlkIHRyYW5zcGFyZW50fQogIC5hbnN3ZXItY2FyZC50b3AtYW5zd2Vye2JvcmRlci1sZWZ0LWNvbG9yOnZhcigtLWdvbGQpfQogIC50b3AtYW5zd2VyLWxhYmVse2ZvbnQtc2l6ZTowLjcycmVtO2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1nb2xkKTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bGV0dGVyLXNwYWNpbmc6MC44cHg7bWFyZ2luLWJvdHRvbTo2cHh9CiAgLmFuc3dlci1ib2R5e2ZvbnQtc2l6ZTowLjlyZW07bGluZS1oZWlnaHQ6MS43O21hcmdpbi1ib3R0b206MTJweH0KICAuYW5zd2VyLWZvb3RlcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2ZsZXgtd3JhcDp3cmFwO2dhcDo4cHh9CiAgLmFuc3dlci1tZXRhe2ZvbnQtc2l6ZTowLjc4cmVtO2NvbG9yOnZhcigtLW11dGVkKX0KICAudm90ZS1idG5ze2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweH0KICAudm90ZS1idG57YmFja2dyb3VuZDp2YXIoLS1ncmF5KTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzo1cHggMTJweDtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MC44MnJlbTtmb250LXdlaWdodDo2MDA7dHJhbnNpdGlvbjphbGwgMC4ycztkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHh9CiAgLnZvdGUtYnRuLmxpa2Vke2JhY2tncm91bmQ6dmFyKC0tYmx1ZS1saWdodCk7Ym9yZGVyLWNvbG9yOnZhcigtLWJsdWUpO2NvbG9yOnZhcigtLWJsdWUpfQogIC52b3RlLWJ0bjpob3Zlcnt0cmFuc2Zvcm06c2NhbGUoMS4wNSl9CiAgLmZsYWctYnRue2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtjb2xvcjp2YXIoLS1tdXRlZCk7Zm9udC1zaXplOjAuNzhyZW07Y3Vyc29yOnBvaW50ZXJ9CiAgLmZsYWctYnRuOmhvdmVye2NvbG9yOnZhcigtLXJlZCl9CiAgLmFkZC1hbnN3ZXJ7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjBweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdyk7bWFyZ2luLXRvcDoyNHB4fQogIC5hZGQtYW5zd2VyIGg0e21hcmdpbi1ib3R0b206MTJweDtjb2xvcjp2YXIoLS1ibHVlKX0KICAuYWRkLWFuc3dlciB0ZXh0YXJlYXt3aWR0aDoxMDAlO3BhZGRpbmc6MTJweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czo4cHg7bWluLWhlaWdodDoxMDBweDtyZXNpemU6dmVydGljYWw7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6MC45cmVtO21hcmdpbi1ib3R0b206MTBweH0KICAuYWRkLWFuc3dlciBpbnB1dHt3aWR0aDoxMDAlO3BhZGRpbmc6MTBweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czo4cHg7Zm9udC1zaXplOjAuODhyZW07bWFyZ2luLWJvdHRvbToxMHB4O2ZvbnQtZmFtaWx5OmluaGVyaXR9CgogIC8qIEJFU1QgT0YgKi8KICAuYmVzdC1vZi1oZWFkZXJ7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHZhcigtLWdvbGQtbGlnaHQpLCNmZmZkZTcpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjI0cHg7bWFyZ2luLWJvdHRvbToyNHB4O2JvcmRlcjoycHggc29saWQgdmFyKC0tZ29sZCk7dGV4dC1hbGlnbjpjZW50ZXJ9CiAgLmJlc3Qtb2YtaGVhZGVyIGgye2NvbG9yOnZhcigtLXRleHQpO21hcmdpbi1ib3R0b206NnB4fQogIC5iZXN0LW9mLWhlYWRlciBwe2NvbG9yOnZhcigtLW11dGVkKTtmb250LXNpemU6MC44OHJlbX0KICAuZmlsdGVyLXJvd3tkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7ZmxleC13cmFwOndyYXA7bWFyZ2luLWJvdHRvbToyMHB4O2FsaWduLWl0ZW1zOmNlbnRlcn0KICAuZmlsdGVyLWJ0bntwYWRkaW5nOjZweCAxNHB4O2JvcmRlci1yYWRpdXM6MjBweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWJvcmRlcik7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjAuODJyZW07Zm9udC13ZWlnaHQ6NjAwO3RyYW5zaXRpb246YWxsIDAuMnN9CiAgLmZpbHRlci1idG4uYWN0aXZle2JhY2tncm91bmQ6dmFyKC0tYmx1ZSk7Y29sb3I6I2ZmZjtib3JkZXItY29sb3I6dmFyKC0tYmx1ZSl9CgogIC8qIENIRUNLTElTVCAqLwogIC5jaGVja2xpc3QtaW50cm97YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCNlOGY1ZTksI2YwZmFmNCk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MjRweDttYXJnaW4tYm90dG9tOjI0cHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ncmVlbik7dGV4dC1hbGlnbjpjZW50ZXJ9CiAgLmNoZWNrbGlzdC1pbnRybyBoMntjb2xvcjp2YXIoLS1ncmVlbik7bWFyZ2luLWJvdHRvbTo2cHh9CiAgLmNoZWNrbGlzdC1zZWN0aW9ue2JhY2tncm91bmQ6dmFyKC0td2hpdGUpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjIwcHg7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpO21hcmdpbi1ib3R0b206MTZweH0KICAuY2hlY2tsaXN0LXNlY3Rpb24gaDN7Zm9udC1zaXplOjFyZW07Y29sb3I6dmFyKC0tYmx1ZSk7bWFyZ2luLWJvdHRvbToxMnB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweH0KICAuY2hlY2tsaXN0LWl0ZW17ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjEycHg7cGFkZGluZzoxMHB4IDA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYm9yZGVyKX0KICAuY2hlY2tsaXN0LWl0ZW06bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOm5vbmV9CiAgLmNoZWNrbGlzdC1pdGVtIGlucHV0W3R5cGU9Y2hlY2tib3hde3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7bWFyZ2luLXRvcDoycHg7Y3Vyc29yOnBvaW50ZXI7YWNjZW50LWNvbG9yOnZhcigtLWJsdWUpfQogIC5jaGVja2xpc3QtaXRlbSBsYWJlbHtmb250LXNpemU6MC45cmVtO2xpbmUtaGVpZ2h0OjEuNTtjdXJzb3I6cG9pbnRlcjtmbGV4OjF9CiAgLmNoZWNrbGlzdC1pdGVtIC5saW5rLWJ0bntmb250LXNpemU6MC43NXJlbTtjb2xvcjp2YXIoLS1ibHVlKTtjdXJzb3I6cG9pbnRlcjt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTttYXJnaW4tbGVmdDphdXRvO3doaXRlLXNwYWNlOm5vd3JhcH0KCiAgLyogU0VBUkNIICovCiAgLnNlYXJjaC1iYXItYmlne2Rpc3BsYXk6ZmxleDtnYXA6MTBweDttYXJnaW4tYm90dG9tOjI0cHh9CiAgLnNlYXJjaC1iYXItYmlnIGlucHV0e2ZsZXg6MTtwYWRkaW5nOjE0cHggMThweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czoxMHB4O2ZvbnQtc2l6ZToxcmVtO2ZvbnQtZmFtaWx5OmluaGVyaXR9CiAgLnNlYXJjaC1iYXItYmlnIGlucHV0OmZvY3Vze291dGxpbmU6bm9uZTtib3JkZXItY29sb3I6dmFyKC0tYmx1ZSl9CiAgLnNlYXJjaC1iYXItYmlnIGJ1dHRvbntiYWNrZ3JvdW5kOnZhcigtLWJsdWUpO2NvbG9yOiNmZmY7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTRweCAyNHB4O2ZvbnQtc2l6ZToxcmVtO2ZvbnQtd2VpZ2h0OjcwMDtjdXJzb3I6cG9pbnRlcn0KICAudGFnLWNsb3Vke2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4O21hcmdpbi1ib3R0b206MjRweH0KICAudGFnLWNsb3VkLWl0ZW17YmFja2dyb3VuZDp2YXIoLS1ibHVlLWxpZ2h0KTtjb2xvcjp2YXIoLS1ibHVlKTtwYWRkaW5nOjZweCAxNHB4O2JvcmRlci1yYWRpdXM6MjBweDtmb250LXNpemU6MC44MnJlbTtmb250LXdlaWdodDo2MDA7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjphbGwgMC4yc30KICAudGFnLWNsb3VkLWl0ZW06aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1ibHVlKTtjb2xvcjojZmZmfQoKICAvKiBET05BVEUgKi8KICAuZG9uYXRlLXBhZ2V7dGV4dC1hbGlnbjpjZW50ZXI7bWF4LXdpZHRoOjYwMHB4O21hcmdpbjowIGF1dG99CiAgLmRvbmF0ZS1oZXJve2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZyx2YXIoLS1nb2xkLWxpZ2h0KSwjZmZmOGUxKTtib3JkZXItcmFkaXVzOjE2cHg7cGFkZGluZzo0MHB4O21hcmdpbi1ib3R0b206MjRweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdvbGQpfQogIC5kb25hdGUtaGVybyBoMntmb250LXNpemU6MS44cmVtO21hcmdpbi1ib3R0b206MTJweH0KICAuZG9uYXRlLWhlcm8gcHtjb2xvcjp2YXIoLS1tdXRlZCk7bGluZS1oZWlnaHQ6MS43O21hcmdpbi1ib3R0b206MjBweH0KICAuZG9uYXRlLWFtb3VudHN7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7ZmxleC13cmFwOndyYXA7bWFyZ2luLWJvdHRvbToyMHB4fQogIC5hbW91bnQtYnRue3BhZGRpbmc6MTBweCAyMHB4O2JvcmRlci1yYWRpdXM6OHB4O2JvcmRlcjoycHggc29saWQgdmFyKC0tZ29sZCk7YmFja2dyb3VuZDp2YXIoLS13aGl0ZSk7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjAuOXJlbTtmb250LXdlaWdodDo3MDA7dHJhbnNpdGlvbjphbGwgMC4yc30KICAuYW1vdW50LWJ0bi5zZWxlY3RlZCwuYW1vdW50LWJ0bjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWdvbGQpO2NvbG9yOnZhcigtLXRleHQpfQogIC5kb25hdGUtYnRuLWJpZ3tiYWNrZ3JvdW5kOnZhcigtLWdvbGQpO2NvbG9yOnZhcigtLXRleHQpO2JvcmRlcjpub25lO3BhZGRpbmc6MTRweCA0MHB4O2JvcmRlci1yYWRpdXM6MTBweDtmb250LXNpemU6MS4xcmVtO2ZvbnQtd2VpZ2h0OjgwMDtjdXJzb3I6cG9pbnRlcjt3aWR0aDoxMDAlO21hcmdpbi1ib3R0b206MTJweH0KCiAgLyogTEFORyBNT0RBTCAqLwogIC5tb2RhbC1vdmVybGF5e2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjpmaXhlZDtpbnNldDowO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwLjUpO3otaW5kZXg6MjAwO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfQogIC5tb2RhbC1vdmVybGF5Lm9wZW57ZGlzcGxheTpmbGV4fQogIC5tb2RhbHtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtib3JkZXItcmFkaXVzOjE2cHg7cGFkZGluZzoyOHB4O21heC13aWR0aDo0MjBweDt3aWR0aDo5MCU7Ym94LXNoYWRvdzowIDhweCA0MHB4IHJnYmEoMCwwLDAsMC4yKX0KICAubW9kYWwgaDN7bWFyZ2luLWJvdHRvbTo4cHg7Zm9udC1zaXplOjEuMnJlbX0KICAubW9kYWwgcHtmb250LXNpemU6MC44NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLWJvdHRvbToxNnB4O2xpbmUtaGVpZ2h0OjEuNX0KICAubGFuZy1ncmlke2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtnYXA6OHB4O21hcmdpbi1ib3R0b206MTZweH0KICAubGFuZy1vcHRpb257cGFkZGluZzoxMHB4IDEycHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjkycmVtO2ZvbnQtd2VpZ2h0OjYwMDt0ZXh0LWFsaWduOmNlbnRlcjt0cmFuc2l0aW9uOmFsbCAwLjJzO2xpbmUtaGVpZ2h0OjEuNDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHh9CiAgLmxhbmctb3B0aW9uOmhvdmVyLC5sYW5nLW9wdGlvbi5hY3RpdmV7Ym9yZGVyLWNvbG9yOnZhcigtLWJsdWUpO2JhY2tncm91bmQ6dmFyKC0tYmx1ZS1saWdodCk7Y29sb3I6dmFyKC0tYmx1ZSk7dHJhbnNmb3JtOnNjYWxlKDEuMDMpfQogIC5tb2RhbC1jbG9zZXtiYWNrZ3JvdW5kOnZhcigtLWdyYXkpO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6MTBweCAyMHB4O2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZTowLjlyZW07Zm9udC13ZWlnaHQ6NjAwO3dpZHRoOjEwMCV9CiAgLnRyYW5zbGF0aW9uLW5vdGljZXtiYWNrZ3JvdW5kOiNmZmYzY2Q7Ym9yZGVyOjFweCBzb2xpZCAjZmZjMTA3O2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6MTBweCAxNHB4O2ZvbnQtc2l6ZTowLjhyZW07Y29sb3I6Izg1NjQwNDttYXJnaW4tYm90dG9tOjE2cHh9CgogIC8qIFRPQVNUICovCiAgLnRvYXN0e3Bvc2l0aW9uOmZpeGVkO2JvdHRvbToyNHB4O3JpZ2h0OjI0cHg7YmFja2dyb3VuZDp2YXIoLS1ncmVlbik7Y29sb3I6I2ZmZjtwYWRkaW5nOjEycHggMjBweDtib3JkZXItcmFkaXVzOjEwcHg7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZTowLjlyZW07ei1pbmRleDozMDA7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwcHgpO3RyYW5zaXRpb246YWxsIDAuM3M7cG9pbnRlci1ldmVudHM6bm9uZX0KICAudG9hc3Quc2hvd3tvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCl9CgogIC5lbXB0eS1zdGF0ZXt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjQwcHg7Y29sb3I6dmFyKC0tbXV0ZWQpfQogIC5lbXB0eS1zdGF0ZSAuaWNvbntmb250LXNpemU6M3JlbTttYXJnaW4tYm90dG9tOjEwcHh9CiAgLmRpdmlkZXJ7aGVpZ2h0OjFweDtiYWNrZ3JvdW5kOnZhcigtLWJvcmRlcik7bWFyZ2luOjIwcHggMH0KICBAbWVkaWEobWF4LXdpZHRoOjYwMHB4KXsuaGVybyBoMXtmb250LXNpemU6MS42cmVtfS5oZXJve3BhZGRpbmc6MjhweCAyMHB4fS5jYXRlZ29yeS1ncmlke2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maWxsLG1pbm1heCgxMzBweCwxZnIpKX19Cjwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+Cgo8bmF2PgogIDxkaXYgY2xhc3M9Im5hdi1sb2dvIiBvbmNsaWNrPSJzaG93UGFnZSgnaG9tZScpIj5PbGltPHNwYW4+QW5zd2Vyczwvc3Bhbj48L2Rpdj4KICA8ZGl2IGNsYXNzPSJuYXYtbGlua3MiPgogICAgPGJ1dHRvbiBvbmNsaWNrPSJzaG93UGFnZSgnaG9tZScpIj7wn4+gIEhvbWU8L2J1dHRvbj4KICAgIDxidXR0b24gb25jbGljaz0ic2hvd1BhZ2UoJ2ZvcnVtJykiPvCfl6MgRm9ydW08L2J1dHRvbj4KICAgIDxidXR0b24gb25jbGljaz0ic2hvd1BhZ2UoJ2Jlc3RvZicpIj7irZAgQmVzdCBPZjwvYnV0dG9uPgogICAgPGJ1dHRvbiBvbmNsaWNrPSJzaG93UGFnZSgnY2hlY2tsaXN0JykiPuKchSBDaGVja2xpc3Q8L2J1dHRvbj4KICAgIDxidXR0b24gb25jbGljaz0ic2hvd1BhZ2UoJ2NhdHMnKSI+8J+TgiBDYXRlZ29yaWVzPC9idXR0b24+CiAgICA8YnV0dG9uIG9uY2xpY2s9InNob3dQYWdlKCdzZWFyY2gnKSI+8J+UjSBTZWFyY2g8L2J1dHRvbj4KICAgIDxidXR0b24gb25jbGljaz0ic2hvd1BhZ2UoJ2RvbmF0ZScpIiBjbGFzcz0ibmF2LWRvbmF0ZSI+8J+SmyBEb25hdGU8L2J1dHRvbj4KICAgIDxidXR0b24gY2xhc3M9ImxhbmctYnRuIiBvbmNsaWNrPSJvcGVuTGFuZ01vZGFsKCkiPvCfh6zwn4enPC9idXR0b24+CiAgPC9kaXY+CjwvbmF2PgoKPCEtLSBIT01FIC0tPgo8ZGl2IGNsYXNzPSJwYWdlIGFjdGl2ZSIgaWQ9InBhZ2UtaG9tZSI+CiAgPGRpdiBjbGFzcz0iaGVybyI+CiAgICA8aDE+V2VsY29tZSB0byA8c3Bhbj5PbGltQW5zd2Vyczwvc3Bhbj48L2gxPgogICAgPHA+WW91ciBjb21tdW5pdHktcG93ZXJlZCBndWlkZSB0byBuYXZpZ2F0aW5nIGxpZmUgaW4gSXNyYWVsLiBBc2sgcXVlc3Rpb25zLCBzaGFyZSBrbm93bGVkZ2UsIGFuZCBoZWxwIGZlbGxvdyBvbGltIGZpbmQgdGhlaXIgZmVldCBmYXN0ZXIuPC9wPgogICAgPGRpdiBjbGFzcz0iaGVyby1idG5zIj4KICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IiBvbmNsaWNrPSJzaG93UGFnZSgnZm9ydW0nKSI+QXNrIGEgUXVlc3Rpb248L2J1dHRvbj4KICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lIiBvbmNsaWNrPSJzaG93UGFnZSgnYmVzdG9mJykiPuKtkCBCcm93c2UgVG9wIEFuc3dlcnM8L2J1dHRvbj4KICAgIDwvZGl2PgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJ0aXAtYm94Ij4KICAgIDxkaXYgY2xhc3M9InRpcC1sYWJlbCI+8J+SoSBUaXAgb2YgdGhlIERheTwvZGl2PgogICAgPHAgaWQ9InRpcC10ZXh0Ij5XaGVuIG9wZW5pbmcgYSBiYW5rIGFjY291bnQgaW4gSXNyYWVsLCBicmluZyB5b3VyIFRldWRhdCBPbGVoLCBwYXNzcG9ydCwgYW5kIHByb29mIG9mIGFkZHJlc3MuIEJhbmsgSGFwb2FsaW0gYW5kIEJhbmsgTGV1bWkgYm90aCBoYXZlIGRlZGljYXRlZCBPbGltIGRlcGFydG1lbnRzIHdpdGggRW5nbGlzaC1zcGVha2luZyBzdGFmZi48L3A+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPkhvdyBJdCBXb3JrczwvZGl2PgogIDxkaXYgY2xhc3M9Imhvdy1pdC13b3JrcyI+CiAgICA8ZGl2IGNsYXNzPSJoaXctY2FyZCI+PGRpdiBjbGFzcz0iaGl3LWljb24iPuKdkzwvZGl2PjxoMz5Bc2s8L2gzPjxwPlBvc3QgeW91ciBxdWVzdGlvbiBpbiB0aGUgcmVsZXZhbnQgY2F0ZWdvcnkuIEJlIGFzIGRldGFpbGVkIGFzIHlvdSBsaWtlLjwvcD48L2Rpdj4KICAgIDxkaXYgY2xhc3M9Imhpdy1jYXJkIj48ZGl2IGNsYXNzPSJoaXctaWNvbiI+8J+SrDwvZGl2PjxoMz5BbnN3ZXI8L2gzPjxwPlRoZSBjb21tdW5pdHkgcmVzcG9uZHMgd2l0aCBhZHZpY2UsIHRpcHMsIGFuZCBwZXJzb25hbCBleHBlcmllbmNlLjwvcD48L2Rpdj4KICAgIDxkaXYgY2xhc3M9Imhpdy1jYXJkIj48ZGl2IGNsYXNzPSJoaXctaWNvbiI+8J+RjTwvZGl2PjxoMz5SYXRlPC9oMz48cD5VcHZvdGUgdGhlIG1vc3QgaGVscGZ1bCBhbnN3ZXJzIHNvIHRoZXkgcmlzZSB0byB0aGUgdG9wIGZvciBldmVyeW9uZS48L3A+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJoaXctY2FyZCI+PGRpdiBjbGFzcz0iaGl3LWljb24iPvCfjJ88L2Rpdj48aDM+RGlzY292ZXI8L2gzPjxwPkJyb3dzZSB0b3AtcmF0ZWQgY29udGVudCBvciBzZWFyY2ggYnkga2V5d29yZCB0byBmaW5kIHdoYXQgeW91IG5lZWQgZmFzdC48L3A+PC9kaXY+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPkJyb3dzZSBieSBDYXRlZ29yeTwvZGl2PgogIDxkaXYgY2xhc3M9ImNhdGVnb3J5LWdyaWQiIGlkPSJob21lLWNhdHMiPjwvZGl2PgoKICA8ZGl2IGNsYXNzPSJkb25hdGUtYmFubmVyIj4KICAgIDxoMz7wn5KbIE9saW1BbnN3ZXJzIGlzIGZyZWUgZm9yIGV2ZXJ5b25lPC9oMz4KICAgIDxwPlRoaXMgc2l0ZSBpcyBjb21tdW5pdHktcnVuLiBJZiBpdCBoZWxwZWQgeW91LCBjb25zaWRlciBhIHNtYWxsIGRvbmF0aW9uIHRvIGtlZXAgaXQgZ29pbmcuPC9wPgogICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IiBvbmNsaWNrPSJzaG93UGFnZSgnZG9uYXRlJykiPlN1cHBvcnQgdGhlIFNpdGU8L2J1dHRvbj4KICA8L2Rpdj4KPC9kaXY+Cgo8IS0tIEZPUlVNIC0tPgo8ZGl2IGNsYXNzPSJwYWdlIiBpZD0icGFnZS1mb3J1bSI+CiAgPGRpdiBjbGFzcz0iZm9ydW0taGVhZGVyIiBzdHlsZT0iZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW4tYm90dG9tOjIwcHg7ZmxleC13cmFwOndyYXA7Z2FwOjEwcHgiPgogICAgPGRpdj4KICAgICAgPGgyIHN0eWxlPSJmb250LXNpemU6MS40cmVtO2NvbG9yOnZhcigtLWJsdWUpIj7wn5ejIENvbW11bml0eSBGb3J1bTwvaDI+CiAgICAgIDxwIHN0eWxlPSJmb250LXNpemU6MC44NXJlbTtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLXRvcDo0cHgiPkFzayBxdWVzdGlvbnMsIHNoYXJlIGFuc3dlcnMsIGhlbHAgZmVsbG93IG9saW08L3A+CiAgICA8L2Rpdj4KICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6MTBweDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC13cmFwOndyYXAiPgogICAgICA8c2VsZWN0IGNsYXNzPSJzb3J0LXNlbGVjdCIgaWQ9ImZvcnVtLXNvcnQiIG9uY2hhbmdlPSJyZW5kZXJGb3J1bSgpIj4KICAgICAgICA8b3B0aW9uIHZhbHVlPSJuZXdlc3QiPvCflZAgTmV3ZXN0PC9vcHRpb24+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibW9zdF9hbnN3ZXJzIj7wn5KsIE1vc3QgUmVzcG9uc2VzPC9vcHRpb24+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaGlnaGVzdF9yYXRlZCI+4q2QIEhpZ2hlc3QgUmF0ZWQ8L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPSJtb3N0X3ZpZXdlZCI+8J+RgSBNb3N0IFZpZXdlZDwvb3B0aW9uPgogICAgICA8L3NlbGVjdD4KICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IiBvbmNsaWNrPSJ0b2dnbGVBc2tCYXIoKSIgc3R5bGU9InBhZGRpbmc6OXB4IDE2cHg7Zm9udC1zaXplOjAuODhyZW0iPisgQXNrIGEgUXVlc3Rpb248L2J1dHRvbj4KICAgIDwvZGl2PgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJhc2stYmFyIiBpZD0iYXNrLWJhciIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+CiAgICA8aDM+QXNrIGEgTmV3IFF1ZXN0aW9uPC9oMz4KICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0icS10aXRsZSIgcGxhY2Vob2xkZXI9IllvdXIgcXVlc3Rpb24gdGl0bGUuLi4iIC8+CiAgICA8dGV4dGFyZWEgaWQ9InEtYm9keSIgcGxhY2Vob2xkZXI9IkRlc2NyaWJlIHlvdXIgcXVlc3Rpb24gaW4gZGV0YWlsLi4uIj48L3RleHRhcmVhPgogICAgPHNlbGVjdCBpZD0icS1jYXQiPgogICAgICA8b3B0aW9uIHZhbHVlPSIiPlNlbGVjdCBhIGNhdGVnb3J5Li4uPC9vcHRpb24+CiAgICA8L3NlbGVjdD4KICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0icS1uYW1lIiBwbGFjZWhvbGRlcj0iWW91ciBuYW1lIChvciBsZWF2ZSBibGFuayBmb3IgQW5vbnltb3VzKSIgLz4KICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6MTBweCI+CiAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgb25jbGljaz0ic3VibWl0UXVlc3Rpb24oKSIgc3R5bGU9ImZsZXg6MSI+UG9zdCBRdWVzdGlvbjwvYnV0dG9uPgogICAgICA8YnV0dG9uIG9uY2xpY2s9ImNhbmNlbEFzaygpIiBzdHlsZT0iZmxleDpub25lO3BhZGRpbmc6MTJweCAxOHB4O2JvcmRlci1yYWRpdXM6OHB4O2JvcmRlcjoycHggc29saWQgdmFyKC0tYm9yZGVyKTtiYWNrZ3JvdW5kOnZhcigtLXdoaXRlKTtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MXJlbTtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tbXV0ZWQpIj7inJUgQ2FuY2VsPC9idXR0b24+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgPGRpdiBpZD0iZm9ydW0tbGlzdCI+PC9kaXY+CjwvZGl2PgoKPCEtLSBDQVRFR09SWSBQQUdFIC0tPgo8ZGl2IGNsYXNzPSJwYWdlIiBpZD0icGFnZS1jYXRlZ29yeSI+CiAgPGJ1dHRvbiBjbGFzcz0iYmFjay1idG4iIG9uY2xpY2s9InNob3dQYWdlKCdmb3J1bScpIj7ihpAgQmFjayB0byBGb3J1bTwvYnV0dG9uPgogIDxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLWJvdHRvbToyMHB4O2ZsZXgtd3JhcDp3cmFwO2dhcDoxMHB4Ij4KICAgIDxkaXY+CiAgICAgIDxoMiBpZD0iY2F0LXBhZ2UtdGl0bGUiIHN0eWxlPSJmb250LXNpemU6MS40cmVtO2NvbG9yOnZhcigtLWJsdWUpIj48L2gyPgogICAgICA8cCBpZD0iY2F0LXBhZ2UtZGVzYyIgc3R5bGU9ImZvbnQtc2l6ZTowLjg1cmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tdG9wOjRweCI+PC9wPgogICAgPC9kaXY+CiAgICA8c2VsZWN0IGNsYXNzPSJzb3J0LXNlbGVjdCIgaWQ9ImNhdC1zb3J0IiBvbmNoYW5nZT0icmVuZGVyQ2F0ZWdvcnlQYWdlKCkiPgogICAgICA8b3B0aW9uIHZhbHVlPSJuZXdlc3QiPvCflZAgTmV3ZXN0PC9vcHRpb24+CiAgICAgIDxvcHRpb24gdmFsdWU9Im1vc3RfYW5zd2VycyI+8J+SrCBNb3N0IFJlc3BvbnNlczwvb3B0aW9uPgogICAgICA8b3B0aW9uIHZhbHVlPSJoaWdoZXN0X3JhdGVkIj7irZAgSGlnaGVzdCBSYXRlZDwvb3B0aW9uPgogICAgICA8b3B0aW9uIHZhbHVlPSJtb3N0X3ZpZXdlZCI+8J+RgSBNb3N0IFZpZXdlZDwvb3B0aW9uPgogICAgPC9zZWxlY3Q+CiAgPC9kaXY+CiAgPGRpdiBpZD0iY2F0LXBhZ2UtbGlzdCI+PC9kaXY+CjwvZGl2PgoKPCEtLSBRVUVTVElPTiBERVRBSUwgLS0+CjxkaXYgY2xhc3M9InBhZ2UiIGlkPSJwYWdlLXF1ZXN0aW9uIj4KICA8YnV0dG9uIGNsYXNzPSJiYWNrLWJ0biIgaWQ9InEtYmFjay1idG4iIG9uY2xpY2s9ImdvQmFjaygpIj7ihpAgQmFjazwvYnV0dG9uPgogIDxkaXYgY2xhc3M9InEtZnVsbCIgaWQ9InEtZnVsbC1jb250ZW50Ij48L2Rpdj4KICA8ZGl2IGNsYXNzPSJhbnN3ZXJzLXNlY3Rpb24iPgogICAgPGgzIGlkPSJhbnN3ZXJzLWNvdW50Ij48L2gzPgogICAgPGRpdiBpZD0iYW5zd2Vycy1saXN0Ij48L2Rpdj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJhZGQtYW5zd2VyIj4KICAgIDxoND7wn5KsIEFkZCBZb3VyIEFuc3dlcjwvaDQ+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImFucy1uYW1lIiBwbGFjZWhvbGRlcj0iWW91ciBuYW1lIChvciBsZWF2ZSBibGFuayBmb3IgQW5vbnltb3VzKSIgLz4KICAgIDx0ZXh0YXJlYSBpZD0iYW5zLWJvZHkiIHBsYWNlaG9sZGVyPSJTaGFyZSB5b3VyIGtub3dsZWRnZSBvciBleHBlcmllbmNlLi4uIj48L3RleHRhcmVhPgogICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IiBvbmNsaWNrPSJzdWJtaXRBbnN3ZXIoKSI+UG9zdCBBbnN3ZXI8L2J1dHRvbj4KICA8L2Rpdj4KPC9kaXY+Cgo8IS0tIEJFU1QgT0YgLS0+CjxkaXYgY2xhc3M9InBhZ2UiIGlkPSJwYWdlLWJlc3RvZiI+CiAgPGRpdiBjbGFzcz0iYmVzdC1vZi1oZWFkZXIiPgogICAgPGgyPuKtkCBCZXN0IE9mIE9saW1BbnN3ZXJzPC9oMj4KICAgIDxwPlRoZSBoaWdoZXN0LXJhdGVkIHF1ZXN0aW9ucyBhbmQgYW5zd2VycyBmcm9tIG91ciBjb21tdW5pdHkg4oCUIHlvdXIgZ28tdG8gc3RhcnRpbmcgcG9pbnQ8L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iZmlsdGVyLXJvdyI+CiAgICA8c3BhbiBzdHlsZT0iZm9udC1zaXplOjAuODVyZW07Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnZhcigtLW11dGVkKSI+RmlsdGVyOjwvc3Bhbj4KICAgIDxidXR0b24gY2xhc3M9ImZpbHRlci1idG4gYWN0aXZlIiBvbmNsaWNrPSJmaWx0ZXJCZXN0T2YoJ2FsbCcsdGhpcykiPkFsbCBDYXRlZ29yaWVzPC9idXR0b24+CiAgICA8ZGl2IGlkPSJiZXN0b2YtZmlsdGVycyI+PC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBpZD0iYmVzdG9mLWxpc3QiPjwvZGl2Pgo8L2Rpdj4KCjwhLS0gQ0hFQ0tMSVNUIC0tPgo8ZGl2IGNsYXNzPSJwYWdlIiBpZD0icGFnZS1jaGVja2xpc3QiPgogIDxkaXYgY2xhc3M9ImNoZWNrbGlzdC1pbnRybyI+CiAgICA8aDI+4pyFIE5ldyBPbGVoIENoZWNrbGlzdDwvaDI+CiAgICA8cCBzdHlsZT0iY29sb3I6dmFyKC0tbXV0ZWQpO2ZvbnQtc2l6ZTowLjg4cmVtO21hcmdpbi10b3A6NnB4Ij5Zb3VyIHN0ZXAtYnktc3RlcCBndWlkZSB0byBzZXR0bGluZyBpbiBJc3JhZWwuIENoZWNrIG9mZiBpdGVtcyBhcyB5b3UgZ28g4oCUIHByb2dyZXNzIHNhdmVzIGF1dG9tYXRpY2FsbHkuPC9wPgogIDwvZGl2PgogIDxkaXYgaWQ9ImNoZWNrbGlzdC1jb250ZW50Ij48L2Rpdj4KPC9kaXY+Cgo8IS0tIFNFQVJDSCAtLT4KPGRpdiBjbGFzcz0icGFnZSIgaWQ9InBhZ2Utc2VhcmNoIj4KICA8aDIgc3R5bGU9ImZvbnQtc2l6ZToxLjRyZW07Y29sb3I6dmFyKC0tYmx1ZSk7bWFyZ2luLWJvdHRvbToxNnB4Ij7wn5SNIFNlYXJjaCBPbGltQW5zd2VyczwvaDI+CiAgPGRpdiBjbGFzcz0ic2VhcmNoLWJhci1iaWciPgogICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJzZWFyY2gtaW5wdXQiIHBsYWNlaG9sZGVyPSJTZWFyY2ggcXVlc3Rpb25zLCB0b3BpY3MsIGtleXdvcmRzLi4uIiBvbmtleXVwPSJpZihldmVudC5rZXk9PT0nRW50ZXInKWRvU2VhcmNoKCkiIC8+CiAgICA8YnV0dG9uIG9uY2xpY2s9ImRvU2VhcmNoKCkiPlNlYXJjaDwvYnV0dG9uPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiIHN0eWxlPSJmb250LXNpemU6MXJlbSI+UG9wdWxhciBUb3BpY3M8L2Rpdj4KICA8ZGl2IGNsYXNzPSJ0YWctY2xvdWQiIGlkPSJ0YWctY2xvdWQiPjwvZGl2PgogIDxkaXYgaWQ9InNlYXJjaC1yZXN1bHRzIj48L2Rpdj4KPC9kaXY+Cgo8IS0tIENBVEVHT1JJRVMgLS0+CjxkaXYgY2xhc3M9InBhZ2UiIGlkPSJwYWdlLWNhdHMiPgogIDxoMiBzdHlsZT0iZm9udC1zaXplOjEuNHJlbTtjb2xvcjp2YXIoLS1ibHVlKTttYXJnaW4tYm90dG9tOjZweCI+8J+TgiBDYXRlZ29yaWVzPC9oMj4KICA8cCBzdHlsZT0iZm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MjBweCI+QnJvd3NlIHF1ZXN0aW9ucyBieSB0b3BpYzwvcD4KICA8ZGl2IGNsYXNzPSJjYXRlZ29yeS1ncmlkIiBpZD0iY2F0cy1ncmlkIj48L2Rpdj4KPC9kaXY+Cgo8IS0tIERPTkFURSAtLT4KPGRpdiBjbGFzcz0icGFnZSIgaWQ9InBhZ2UtZG9uYXRlIj4KICA8ZGl2IGNsYXNzPSJkb25hdGUtcGFnZSI+CiAgICA8ZGl2IGNsYXNzPSJkb25hdGUtaGVybyI+CiAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZTozcmVtO21hcmdpbi1ib3R0b206MTJweCI+8J+SmzwvZGl2PgogICAgICA8aDI+U3VwcG9ydCBPbGltQW5zd2VyczwvaDI+CiAgICAgIDxwPk9saW1BbnN3ZXJzIGlzIGZyZWUgZm9yIGV2ZXJ5IG9sZWgsIGZvcmV2ZXIuIEl0J3MgYnVpbHQgYW5kIG1haW50YWluZWQgYnkgdGhlIGNvbW11bml0eSwgZm9yIHRoZSBjb21tdW5pdHkuIFlvdXIgZG9uYXRpb24gaGVscHMga2VlcCB0aGUgbGlnaHRzIG9uLCBwYXkgZm9yIGhvc3RpbmcsIGFuZCBhbGxvd3MgdXMgdG8gZ3JvdyBhbmQgaW1wcm92ZSB0aGUgc2l0ZS48L3A+CiAgICAgIDxwIHN0eWxlPSJtYXJnaW4tdG9wOjEwcHg7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC1zaXplOjAuODVyZW07Y29sb3I6dmFyKC0tbXV0ZWQpIj4iSSB3aXNoIHRoaXMgc2l0ZSBleGlzdGVkIHdoZW4gSSBtYWRlIGFsaXlhaC4iIOKAlCBFdmVyeSBvbGVoLCBldmVyLjwvcD4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iZG9uYXRlLWFtb3VudHMiPgogICAgICA8YnV0dG9uIGNsYXNzPSJhbW91bnQtYnRuIiBvbmNsaWNrPSJzZWxlY3RBbW91bnQodGhpcywnJDUnKSI+JDU8L2J1dHRvbj4KICAgICAgPGJ1dHRvbiBjbGFzcz0iYW1vdW50LWJ0biIgb25jbGljaz0ic2VsZWN0QW1vdW50KHRoaXMsJyQxOCcpIj4kMTgg4pyh77iPPC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9ImFtb3VudC1idG4gc2VsZWN0ZWQiIG9uY2xpY2s9InNlbGVjdEFtb3VudCh0aGlzLCckMzYnKSI+JDM2PC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9ImFtb3VudC1idG4iIG9uY2xpY2s9InNlbGVjdEFtb3VudCh0aGlzLCckMTAwJykiPiQxMDA8L2J1dHRvbj4KICAgICAgPGJ1dHRvbiBjbGFzcz0iYW1vdW50LWJ0biIgb25jbGljaz0ic2VsZWN0QW1vdW50KHRoaXMsJ290aGVyJykiPk90aGVyPC9idXR0b24+CiAgICA8L2Rpdj4KICAgIDxidXR0b24gY2xhc3M9ImRvbmF0ZS1idG4tYmlnIiBvbmNsaWNrPSJzaG93VG9hc3QoJ1RoYW5rIHlvdSEgRG9uYXRpb24gbGluayBjb21pbmcgc29vbiDwn5KbJykiPkRvbmF0ZSB2aWEgUGF5UGFsPC9idXR0b24+CiAgICA8cCBzdHlsZT0iZm9udC1zaXplOjAuNzhyZW07Y29sb3I6dmFyKC0tbXV0ZWQpIj5TZWN1cmUgcGF5bWVudC4gRXZlcnkgc2hla2VsIC8gZG9sbGFyIGhlbHBzLjwvcD4KICAgIDxkaXYgY2xhc3M9ImRpdmlkZXIiPjwvZGl2PgogICAgPHAgc3R5bGU9ImZvbnQtc2l6ZTowLjg1cmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tdG9wOjE2cHgiPllvdSBjYW4gYWxzbyBzdXBwb3J0IHVzIGJ5IHNoYXJpbmcgdGhlIHNpdGUgd2l0aCBvdGhlciBvbGltLCBjb250cmlidXRpbmcgYW5zd2VycywgYW5kIGZsYWdnaW5nIG91dGRhdGVkIGluZm9ybWF0aW9uLiBFdmVyeSBiaXQgY291bnRzITwvcD4KICA8L2Rpdj4KPC9kaXY+Cgo8IS0tIExBTkcgTU9EQUwgLS0+CjxkaXYgY2xhc3M9Im1vZGFsLW92ZXJsYXkiIGlkPSJsYW5nLW1vZGFsIj4KICA8ZGl2IGNsYXNzPSJtb2RhbCI+CiAgICA8aDM+8J+MkCBDaG9vc2UgTGFuZ3VhZ2U8L2gzPgogICAgPHA+Q29udGVudCBpcyBhdXRvLXRyYW5zbGF0ZWQuIEZvciBjcml0aWNhbCBkZWNpc2lvbnMsIGFsd2F5cyB2ZXJpZnkgd2l0aCBvZmZpY2lhbCBzb3VyY2VzLjwvcD4KICAgIDxkaXYgY2xhc3M9InRyYW5zbGF0aW9uLW5vdGljZSI+4pqg77iPIElzcmFlbGkgYnVyZWF1Y3JhdGljIHRlcm1zIChUZXVkYXQgWmVodXQsIE1pc3JhZCBIYXBuaW0sIGV0Yy4pIGFyZSBrZXB0IGluIHRoZWlyIG9yaWdpbmFsIGZvcm0gd2l0aCB0b29sdGlwcyB0byBwcmV2ZW50IG1pc3RyYW5zbGF0aW9uLjwvZGl2PgogICAgPGRpdiBjbGFzcz0ibGFuZy1ncmlkIiBpZD0ibGFuZy1ncmlkIj48L2Rpdj4KICAgIDxidXR0b24gY2xhc3M9Im1vZGFsLWNsb3NlIiBvbmNsaWNrPSJjbG9zZUxhbmdNb2RhbCgpIj5DbG9zZTwvYnV0dG9uPgogIDwvZGl2Pgo8L2Rpdj4KCjxkaXYgY2xhc3M9InRvYXN0IiBpZD0idG9hc3QiPjwvZGl2PgoKPHNjcmlwdD4KY29uc3QgQ0FURUdPUklFUyA9IFsKICB7aWQ6J2JhbmtpbmcnLGljb246J/Cfj6YnLG5hbWU6J0JhbmtpbmcnLGRlc2M6J0FjY291bnRzLCB0cmFuc2ZlcnMsIG1vcnRnYWdlcyd9LAogIHtpZDonaGVhbHRoJyxpY29uOifwn4+lJyxuYW1lOidIZWFsdGggSW5zdXJhbmNlJyxkZXNjOidLdXBhdCBIb2xpbSwgZG9jdG9ycywgY292ZXJhZ2UnfSwKICB7aWQ6J3RheCcsaWNvbjon8J+TiicsbmFtZTonVGF4JyxkZXNjOidJbmNvbWUgdGF4LCBNYXMgSGFjaG5hc2EsIFZBVCd9LAogIHtpZDonaW50ZXJuZXQnLGljb246J/Cfk7YnLG5hbWU6J0ludGVybmV0ICYgUGhvbmUnLGRlc2M6J1Byb3ZpZGVycywgY29udHJhY3RzLCBTSU0gY2FyZHMnfSwKICB7aWQ6J2hvdXNpbmcnLGljb246J/Cfj6AnLG5hbWU6J0hvdXNpbmcnLGRlc2M6J1JlbnRpbmcsIGJ1eWluZywgQXJub25hJ30sCiAge2lkOidnb3YnLGljb246J/CfqqonLG5hbWU6J0dvdmVybm1lbnQgJiBJRHMnLGRlc2M6J1RldWRhdCBaZWh1dCwgTWlzcmFkIEhhcG5pbSd9LAogIHtpZDonZWR1Y2F0aW9uJyxpY29uOifwn46TJyxuYW1lOidFZHVjYXRpb24nLGRlc2M6J1NjaG9vbHMsIHVscGFuLCB1bml2ZXJzaXRpZXMnfSwKICB7aWQ6J3RyYW5zcG9ydCcsaWNvbjon8J+ajCcsbmFtZTonVHJhbnNwb3J0JyxkZXNjOidEcml2aW5nIGxpY2VuY2UsIFJhdi1LYXYsIGJ1c2VzJ30sCiAge2lkOidlbXBsb3ltZW50JyxpY29uOifwn5K8JyxuYW1lOidFbXBsb3ltZW50JyxkZXNjOidKb2JzLCBjb250cmFjdHMsIHJpZ2h0cyd9LAogIHtpZDonc29jaWFsJyxpY29uOifwn6SdJyxuYW1lOidTb2NpYWwgU2VjdXJpdHknLGRlc2M6J0JpdHVhY2ggTGV1bWksIGJlbmVmaXRzJ30sCiAge2lkOidjdWx0dXJlJyxpY29uOifwn5WOJyxuYW1lOidDdWx0dXJlICYgTGlmZScsZGVzYzonQ3VzdG9tcywgaG9saWRheXMsIGNvbW11bml0eSd9LAogIHtpZDonb3RoZXInLGljb246J+KdkycsbmFtZTonT3RoZXInLGRlc2M6J0FueXRoaW5nIGVsc2UnfSwKXTsKCmNvbnN0IFRJUFMgPSBbCiAgIldoZW4gb3BlbmluZyBhIGJhbmsgYWNjb3VudCBpbiBJc3JhZWwsIGJyaW5nIHlvdXIgVGV1ZGF0IE9sZWgsIHBhc3Nwb3J0LCBhbmQgcHJvb2Ygb2YgYWRkcmVzcy4gQmFuayBIYXBvYWxpbSBhbmQgQmFuayBMZXVtaSBib3RoIGhhdmUgZGVkaWNhdGVkIE9saW0gZGVwYXJ0bWVudHMgd2l0aCBFbmdsaXNoLXNwZWFraW5nIHN0YWZmLiIsCiAgIlJlZ2lzdGVyIHdpdGggYSBLdXBhdCBIb2xpbSAoaGVhbHRoIGZ1bmQpIHdpdGhpbiAzIG1vbnRocyBvZiBhcnJpdmluZy4gVGhlIDQgb3B0aW9ucyBhcmUgQ2xhbGl0LCBNYWNjYWJpLCBNZXVoZWRldCwgYW5kIExldW1pdC4gWW91IGNhbiBzd2l0Y2ggb25jZSBhIHllYXIgaW4gTm92ZW1iZXIuIiwKICAiVGhlIFRldWRhdCBaZWh1dCAobmF0aW9uYWwgSUQpIGlzIHJlcXVpcmVkIGZvciBhbG1vc3QgZXZlcnl0aGluZyBpbiBJc3JhZWwuIEtlZXAgYSBwaG90b2NvcHkgYXQgaG9tZSBhbmQgYSBwaG90byBvbiB5b3VyIHBob25lIGF0IGFsbCB0aW1lcy4iLAogICJBcm5vbmEgKG11bmljaXBhbCB0YXgpIGJpbGxzIGFyZSBzZW50IHR3aWNlIGEgeWVhci4gTmV3IG9saW0gbWF5IGJlIGVsaWdpYmxlIGZvciBhIGRpc2NvdW50IOKAlCBjaGVjayB3aXRoIHlvdXIgbG9jYWwgbXVuaWNpcGFsaXR5IHdpdGhpbiA5MCBkYXlzIG9mIGFycml2YWwuIiwKICAiVG8gY29udmVydCB5b3VyIGZvcmVpZ24gZHJpdmluZyBsaWNlbmNlIGluIElzcmFlbCwgeW91IG1heSBiZSBleGVtcHQgZnJvbSB0YWtpbmcgYSBmdWxsIHRlc3QgaWYgeW91ciBjb3VudHJ5IGhhcyBhIHJlY2lwcm9jYWwgYWdyZWVtZW50LiBDaGVjayB3aXRoIE1pc3JhZCBIYVRhY2hidXJhLiIsCl07CgpsZXQgcXVlc3Rpb25zID0gWwogIHtpZDoxLHRpdGxlOiJIb3cgZG8gSSBvcGVuIGEgYmFuayBhY2NvdW50IGFzIGEgbmV3IG9sZWg/Iixib2R5OiJJIGp1c3QgYXJyaXZlZCBsYXN0IHdlZWsgYW5kIEknbSB0cnlpbmcgdG8gb3BlbiBhIGJhbmsgYWNjb3VudC4gV2hhdCBkb2N1bWVudHMgZG8gSSBuZWVkIGFuZCB3aGljaCBiYW5rIGlzIG1vc3Qgb2xlaC1mcmllbmRseT8iLGNhdDonYmFua2luZycsYXV0aG9yOidTYXJhaCBNLicsZGF0ZTonMjAyNC0xMi0xNScsdmlld3M6MzQyLGxhbmc6J0VOJyxhbnN3ZXJzOlsKICAgIHtpZDoxLGJvZHk6IkJhbmsgSGFwb2FsaW0gYW5kIEJhbmsgTGV1bWkgYm90aCBoYXZlIGRlZGljYXRlZCBPbGltIGNlbnRyZXMgd2l0aCBFbmdsaXNoIHNwZWFraW5nIHN0YWZmLiBCcmluZyB5b3VyIFRldWRhdCBPbGVoLCBwYXNzcG9ydCwgYW5kIGlmIHBvc3NpYmxlIGEgcHJvb2Ygb2YgYWRkcmVzcy4gVGhlIHByb2Nlc3MgdXN1YWxseSB0YWtlcyAxLTIgdmlzaXRzLiBMZXVtaSdzIG9ubGluZSBwcm9jZXNzIGhhcyBpbXByb3ZlZCBhIGxvdCByZWNlbnRseS4iLGF1dGhvcjonRGF2aWQgSy4nLGRhdGU6JzIwMjQtMTItMTUnLHZvdGVzOjQ3LGZsYWdnZWQ6ZmFsc2UsdXNlclZvdGVkOmZhbHNlLGxhbmc6J0VOJ30sCiAgICB7aWQ6Mixib2R5OiJJIHVzZWQgRGlzY291bnQgQmFuayBhbmQgaGFkIGEgZ3JlYXQgZXhwZXJpZW5jZS4gVGhleSBzZXQgdXAgbXkgYWNjb3VudCB0aGUgc2FtZSBkYXkgYW5kIGdhdmUgbWUgYW4gRW5nbGlzaC1sYW5ndWFnZSBhcHAuIEFsc28gd29ydGggYXNraW5nIGFib3V0IHplcm8tZmVlIGFjY291bnRzIGZvciBuZXcgb2xpbSDigJQgbWFueSBiYW5rcyBvZmZlciB0aGVtIGZvciB0aGUgZmlyc3QgeWVhci4iLGF1dGhvcjonTWlyaWFtIFQuJyxkYXRlOicyMDI0LTEyLTE2Jyx2b3RlczozMSxmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOidFTid9LAogIF19LAogIHtpZDoyLHRpdGxlOiJXaGljaCBLdXBhdCBIb2xpbSBzaG91bGQgSSBqb2luPyIsYm9keToiSSBuZWVkIHRvIHJlZ2lzdGVyIHdpdGggYSBoZWFsdGggZnVuZC4gV2hhdCBhcmUgdGhlIG1haW4gZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgZm91ciBvcHRpb25zIGFuZCB3aGljaCBpcyBiZXN0IGZvciBFbmdsaXNoIHNwZWFrZXJzPyIsY2F0OidoZWFsdGgnLGF1dGhvcjonSmFtZXMgUi4nLGRhdGU6JzIwMjQtMTItMTAnLHZpZXdzOjI4OSxsYW5nOidFTicsYW5zd2VyczpbCiAgICB7aWQ6MSxib2R5OiJNYWNjYWJpIGlzIGdlbmVyYWxseSBjb25zaWRlcmVkIHRoZSBtb3N0IEVuZ2xpc2gtZnJpZW5kbHkgYW5kIGhhcyBhIGdvb2QgYXBwLiBDbGFsaXQgaGFzIHRoZSBtb3N0IGRvY3RvcnMgYW5kIGNsaW5pY3MgYnV0IHRoZSBhcHAgYW5kIHNlcnZpY2UgcXVhbGl0eSB2YXJpZXMuIE1ldWhlZGV0IGlzIHN0cm9uZyBpbiBKZXJ1c2FsZW0uIExldW1pdCBpcyB0aGUgc21hbGxlc3QgYnV0IG9mdGVuIGhhcyBzaG9ydGVyIHdhaXRzLiIsYXV0aG9yOidZYWVsIFMuJyxkYXRlOicyMDI0LTEyLTExJyx2b3Rlczo1MixmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOidFTid9LAogIF19LAogIHtpZDozLHRpdGxlOiLXkNeZ15og16LXldeR15Mg15DXqNeg15XXoNeUINeV15DXnSDXnteS15nXoiDXnNeZINeU16DXl9eUPyIsYm9keToi16fXmdeR15zXqteZINeX16nXkdeV158g15DXqNeg15XXoNeUINeV15DXoNeZINec15Ag15HXmNeV15cg15DXmdeaINee15fXqdeR15nXnSDXkNeV16rXlSDXldeQ150g16LXldec15nXnSDXl9eT16nXmdedINee16fXkdec15nXnSDXlNek15fXqteULiIsY2F0Oidob3VzaW5nJyxhdXRob3I6J9eo15XXoNefINeRLicsZGF0ZTonMjAyNC0xMi0wOCcsdmlld3M6MTc4LGxhbmc6J0hFJyxhbnN3ZXJzOlsKICAgIHtpZDoxLGJvZHk6IteQ16jXoNeV16DXlCDXlNeZ15Ag157XoSDXoteZ16jXldeg15kg16nXntep15zXnteZ150g15zXoteZ16jXmdeUINeU157Xp9eV157XmdeqLiDXoteV15zXmdedINeX15PXqdeZ150g15bXm9eQ15nXnSDXnNeU16DXl9eUICjXkdeT16jXmiDXm9ec15wgNzAtOTAlKSDXnNep16DXlCDXlNeo15DXqdeV16DXlC4g16bXqNeZ15og15zXpNeg15XXqiDXnNei15nXqNeZ15Qg15TXnten15XXnteZ16og16LXnSDXqtei15XXk9eqINeU16LXldec15Qg16rXldeaIDkwINeZ15XXnSDXnteU15LXoteULiDXkNecINeq16TXodek16HXlSDXkNeqINeU15fXnNeV158g15TXlteUISIsYXV0aG9yOifXmdei15wg16kuJyxkYXRlOicyMDI0LTEyLTA5Jyx2b3RlczozOSxmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOidIRSd9LAogIF19LAogIHtpZDo0LHRpdGxlOiJCZXN0IG1vYmlsZSBwaG9uZSBwcm92aWRlciBmb3Igb2xpbT8iLGJvZHk6IldoYXQgU0lNIGNhcmQgb3IgY29udHJhY3Qgc2hvdWxkIEkgZ2V0PyBJIG5lZWQgZ29vZCBkYXRhIGFuZCBhZmZvcmRhYmxlIGNhbGxzIHRvIHRoZSBVSy4iLGNhdDonaW50ZXJuZXQnLGF1dGhvcjonRW1tYSBMLicsZGF0ZTonMjAyNC0xMi0wNScsdmlld3M6MjAxLGxhbmc6J0VOJyxhbnN3ZXJzOlsKICAgIHtpZDoxLGJvZHk6IkdvbGFuIFRlbGVjb20gaXMgdGhlIGJlc3QgdmFsdWUgZm9yIG1vc3Qgb2xpbSDigJQgYXJvdW5kIOKCqjMwL21vbnRoIGZvciB1bmxpbWl0ZWQgZGF0YSBhbmQgY2FsbHMuIFBhcnRuZXIgYW5kIENlbGxjb20gYXJlIG1vcmUgZXhwZW5zaXZlIGJ1dCBoYXZlIGJldHRlciBjb3ZlcmFnZSBpbiBzb21lIGFyZWFzLiBGb3IgaW50ZXJuYXRpb25hbCBjYWxscyB0byB0aGUgVUssIGdldCBhIFdoYXRzQXBwIG51bWJlciBvciB1c2UgR29sYW4ncyBpbnRlcm5hdGlvbmFsIGFkZC1vbi4iLGF1dGhvcjonQXZpIEMuJyxkYXRlOicyMDI0LTEyLTA2Jyx2b3RlczoyOCxmbGFnZ2VkOmZhbHNlLHVzZXJWb3RlZDpmYWxzZSxsYW5nOidFTid9LAogIF19LApdOwoKbGV0IG5leHRRSWQgPSA1LCBuZXh0QUlkID0gMTA7CmxldCBjdXJyZW50Q2F0ID0gbnVsbCwgY3VycmVudFFJZCA9IG51bGwsIHByZXZQYWdlID0gJ2ZvcnVtJywgY3VycmVudExhbmcgPSAnRU4nOwoKY29uc3QgTEFOR1MgPSBbCiAge2NvZGU6J0VOJyxmbGFnOifwn4es8J+HpycsbmFtZTonRW5nbGlzaCcsICBuYXRpdmU6J0VuZ2xpc2gnfSwKICB7Y29kZTonSEUnLGZsYWc6J/Cfh67wn4exJyxuYW1lOidIZWJyZXcnLCAgIG5hdGl2ZTon16LXkdeo15nXqid9LAogIHtjb2RlOidSVScsZmxhZzon8J+Ht/Cfh7onLG5hbWU6J1J1c3NpYW4nLCAgbmF0aXZlOifQoNGD0YHRgdC60LjQuSd9LAogIHtjb2RlOidGUicsZmxhZzon8J+Hq/Cfh7cnLG5hbWU6J0ZyZW5jaCcsICAgbmF0aXZlOidGcmFuw6dhaXMnfSwKICB7Y29kZTonRVMnLGZsYWc6J/Cfh6rwn4e4JyxuYW1lOidTcGFuaXNoJywgIG5hdGl2ZTonRXNwYcOxb2wnfSwKICB7Y29kZTonQVInLGZsYWc6J/Cfh6bwn4eqJyxuYW1lOidBcmFiaWMnLCAgIG5hdGl2ZTon2KfZhNi52LHYqNmK2KknfSwKICB7Y29kZTonQU0nLGZsYWc6J/Cfh6rwn4e5JyxuYW1lOidBbWhhcmljJywgIG5hdGl2ZTon4Yqg4Yib4Yit4YqbJ30sCiAge2NvZGU6J1BUJyxmbGFnOifwn4en8J+HtycsbmFtZTonUG9ydHVndWVzZScsbmF0aXZlOidQb3J0dWd1w6pzJ30sCl07Cgpjb25zdCBDSEVDS0xJU1QgPSBbCiAge3NlY3Rpb246J0ZpcnN0IDMwIERheXMnLCBpY29uOifwn5qAJywgaXRlbXM6WwogICAgJ0NvbGxlY3QgVGV1ZGF0IE9sZWggZnJvbSB0aGUgYWlycG9ydCBvciBNaXNyYWQgSGFBbGl5YWgnLAogICAgJ1JlZ2lzdGVyIGF0IE1pc3JhZCBIYUFsaXlhaCAoTWluaXN0cnkgb2YgQWxpeWFoKSBmb3IgYmVuZWZpdHMnLAogICAgJ0FwcGx5IGZvciBUZXVkYXQgWmVodXQgKE5hdGlvbmFsIElEKSBhdCBNaXNyYWQgSGFwbmltJywKICAgICdSZWdpc3RlciB3aXRoIGEgS3VwYXQgSG9saW0gKGhlYWx0aCBmdW5kKScsCiAgICAnT3BlbiBhIGJhbmsgYWNjb3VudCcsCiAgICAnRW5yb2wgaW4gVWxwYW4gKEhlYnJldyBsYW5ndWFnZSBjb3Vyc2UpJywKICAgICdSZWdpc3RlciBjaGlsZHJlbiBhdCBsb2NhbCBzY2hvb2wnLAogIF19LAogIHtzZWN0aW9uOidGaXJzdCAzIE1vbnRocycsIGljb246J/Cfk4UnLCBpdGVtczpbCiAgICAnQXBwbHkgZm9yIEFybm9uYSAobXVuaWNpcGFsIHRheCkgZGlzY291bnQgYXQgbG9jYWwgSXJpeWEnLAogICAgJ1RyYW5zZmVyIG9yIG9idGFpbiBJc3JhZWxpIGRyaXZpbmcgbGljZW5jZScsCiAgICAnQXBwbHkgZm9yIEJpdHVhY2ggTGV1bWkgKE5hdGlvbmFsIEluc3VyYW5jZSknLAogICAgJ1NldCB1cCBpbnRlcm5ldCBhdCBob21lJywKICAgICdSZWdpc3RlciB3aXRoIGEgbG9jYWwgZG9jdG9yICjXqNeV16TXkCDXntep16TXl9eUKScsCiAgICAnSm9pbiBsb2NhbCBvbGltIEZhY2Vib29rL1doYXRzQXBwIGdyb3VwcycsCiAgXX0sCiAge3NlY3Rpb246J0ZpcnN0IFllYXInLCBpY29uOifwn5OGJywgaXRlbXM6WwogICAgJ0ZpbGUgeW91ciBmaXJzdCBJc3JhZWxpIHRheCByZXR1cm4gaWYgcmVxdWlyZWQnLAogICAgJ1JldmlldyB5b3VyIEt1cGF0IEhvbGltIOKAlCB5b3UgY2FuIHN3aXRjaCBldmVyeSBOb3ZlbWJlcicsCiAgICAnQ2hlY2sgZW50aXRsZW1lbnQgdG8gT2xlaCBtb3J0Z2FnZSBiZW5lZml0cyAoTWlzaGthbnRhKScsCiAgICAnQXBwbHkgZm9yIGFueSByZW1haW5pbmcgU2FsIEtsaXRhIChhYnNvcnB0aW9uIGJhc2tldCkgcGF5bWVudHMnLAogICAgJ0dldCB5b3VyIElzcmFlbGkgZHJpdmluZyBsaWNlbmNlIGlmIHlvdSBoYXZlblwndCBhbHJlYWR5JywKICBdfSwKXTsKCmZ1bmN0aW9uIHNob3dQYWdlKHAsIGRhdGEpewogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5wYWdlJykuZm9yRWFjaCh4PT54LmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFnZS0nK3ApLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogIGlmKHA9PT0naG9tZScpIHJlbmRlckhvbWVDYXRzKCk7CiAgaWYocD09PSdmb3J1bScpIHJlbmRlckZvcnVtKCk7CiAgaWYocD09PSdiZXN0b2YnKSByZW5kZXJCZXN0T2YoKTsKICBpZihwPT09J2NoZWNrbGlzdCcpIHJlbmRlckNoZWNrbGlzdCgpOwogIGlmKHA9PT0nc2VhcmNoJykgcmVuZGVyVGFnQ2xvdWQoKTsKICBpZihwPT09J2NhdHMnKSByZW5kZXJDYXRzUGFnZSgpOwogIGlmKHA9PT0nY2F0ZWdvcnknJiZkYXRhKXtjdXJyZW50Q2F0PWRhdGE7cmVuZGVyQ2F0ZWdvcnlQYWdlKCk7fQogIGlmKHA9PT0ncXVlc3Rpb24nJiZkYXRhKXtjdXJyZW50UUlkPWRhdGE7cmVuZGVyUXVlc3Rpb24oKTt9CiAgd2luZG93LnNjcm9sbFRvKDAsMCk7Cn0KCmZ1bmN0aW9uIHJlbmRlckhvbWVDYXRzKCl7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hvbWUtY2F0cycpLmlubmVySFRNTCA9IENBVEVHT1JJRVMubWFwKGM9PmAKICAgIDxkaXYgY2xhc3M9ImNhdC1jYXJkIiBvbmNsaWNrPSJwcmV2UGFnZT0naG9tZSc7c2hvd1BhZ2UoJ2NhdGVnb3J5JywnJHtjLmlkfScpIj4KICAgICAgPGRpdiBjbGFzcz0iY2F0LWljb24iPiR7Yy5pY29ufTwvZGl2PgogICAgICA8aDQ+JHtjLm5hbWV9PC9oND4KICAgICAgPHA+JHtjLmRlc2N9PC9wPgogICAgICA8cCBzdHlsZT0iZm9udC1zaXplOjAuNzJyZW07Y29sb3I6dmFyKC0tYmx1ZSk7bWFyZ2luLXRvcDo2cHg7Zm9udC13ZWlnaHQ6NjAwIj4ke3F1ZXN0aW9ucy5maWx0ZXIocT0+cS5jYXQ9PT1jLmlkKS5sZW5ndGh9IHF1ZXN0aW9uczwvcD4KICAgIDwvZGl2PmApLmpvaW4oJycpOwogIGNvbnN0IHRpcHMgPSBUSVBTOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aXAtdGV4dCcpLnRleHRDb250ZW50ID0gdGlwc1tNYXRoLmZsb29yKERhdGUubm93KCkvODY0MDAwMDApJXRpcHMubGVuZ3RoXTsKfQoKZnVuY3Rpb24gc29ydFF1ZXN0aW9ucyhxcywgbWV0aG9kKXsKICByZXR1cm4gWy4uLnFzXS5zb3J0KChhLGIpPT57CiAgICBpZihtZXRob2Q9PT0nbmV3ZXN0JykgcmV0dXJuIGIuaWQtYS5pZDsKICAgIGlmKG1ldGhvZD09PSdtb3N0X2Fuc3dlcnMnKSByZXR1cm4gYi5hbnN3ZXJzLmxlbmd0aC1hLmFuc3dlcnMubGVuZ3RoOwogICAgaWYobWV0aG9kPT09J2hpZ2hlc3RfcmF0ZWQnKSByZXR1cm4gbWF4Vm90ZXMoYiktbWF4Vm90ZXMoYSk7CiAgICBpZihtZXRob2Q9PT0nbW9zdF92aWV3ZWQnKSByZXR1cm4gYi52aWV3cy1hLnZpZXdzOwogICAgcmV0dXJuIGIuaWQtYS5pZDsKICB9KTsKfQoKZnVuY3Rpb24gbWF4Vm90ZXMocSl7cmV0dXJuIHEuYW5zd2Vycy5sZW5ndGg/TWF0aC5tYXgoLi4ucS5hbnN3ZXJzLm1hcChhPT5hLnZvdGVzKSk6MDt9CmZ1bmN0aW9uIGF2Z1ZvdGVzKHEpe3JldHVybiBxLmFuc3dlcnMubGVuZ3RoP3EuYW5zd2Vycy5yZWR1Y2UoKHMsYSk9PnMrYS52b3RlcywwKS9xLmFuc3dlcnMubGVuZ3RoOjA7fQoKZnVuY3Rpb24gcmVuZGVyRm9ydW0oKXsKICBjb25zdCBzb3J0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZvcnVtLXNvcnQnKT8udmFsdWV8fCduZXdlc3QnOwogIGNvbnN0IHFzID0gc29ydFF1ZXN0aW9ucyhxdWVzdGlvbnMsIHNvcnQpOwogIGNvbnN0IGNhdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLWNhdCcpOwogIGlmKGNhdCkgY2F0LmlubmVySFRNTD0nPG9wdGlvbiB2YWx1ZT0iIj5TZWxlY3QgYSBjYXRlZ29yeS4uLjwvb3B0aW9uPicrQ0FURUdPUklFUy5tYXAoYz0+YDxvcHRpb24gdmFsdWU9IiR7Yy5pZH0iPiR7Yy5pY29ufSAke2MubmFtZX08L29wdGlvbj5gKS5qb2luKCcnKTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ydW0tbGlzdCcpLmlubmVySFRNTCA9IHFzLmxlbmd0aCA/IHFzLm1hcChxPT5xQ2FyZChxLCdmb3J1bScpKS5qb2luKCcnKSA6IGVtcHR5U3RhdGUoJ05vIHF1ZXN0aW9ucyB5ZXQuIEJlIHRoZSBmaXJzdCB0byBhc2shJyk7Cn0KCmZ1bmN0aW9uIHJlbmRlckNhdGVnb3J5UGFnZSgpewogIGNvbnN0IGNhdCA9IENBVEVHT1JJRVMuZmluZChjPT5jLmlkPT09Y3VycmVudENhdCk7CiAgaWYoIWNhdCkgcmV0dXJuOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXQtcGFnZS10aXRsZScpLnRleHRDb250ZW50ID0gY2F0Lmljb24rJyAnK2NhdC5uYW1lOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXQtcGFnZS1kZXNjJykudGV4dENvbnRlbnQgPSBjYXQuZGVzYzsKICBjb25zdCBzb3J0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdC1zb3J0Jyk/LnZhbHVlfHwnbmV3ZXN0JzsKICBjb25zdCBxcyA9IHNvcnRRdWVzdGlvbnMocXVlc3Rpb25zLmZpbHRlcihxPT5xLmNhdD09PWN1cnJlbnRDYXQpLCBzb3J0KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2F0LXBhZ2UtbGlzdCcpLmlubmVySFRNTCA9IHFzLmxlbmd0aCA/IHFzLm1hcChxPT5xQ2FyZChxLCdjYXRlZ29yeScpKS5qb2luKCcnKSA6IGVtcHR5U3RhdGUoJ05vIHF1ZXN0aW9ucyBpbiB0aGlzIGNhdGVnb3J5IHlldC4nKTsKfQoKZnVuY3Rpb24gcUNhcmQocSxmcm9tKXsKICBjb25zdCB0b3BWb3RlcyA9IHEuYW5zd2Vycy5sZW5ndGg/TWF0aC5tYXgoLi4ucS5hbnN3ZXJzLm1hcChhPT5hLnZvdGVzKSk6MDsKICBjb25zdCBjYXQgPSBDQVRFR09SSUVTLmZpbmQoYz0+Yy5pZD09PXEuY2F0KTsKICByZXR1cm4gYDxkaXYgY2xhc3M9InEtY2FyZCIgb25jbGljaz0icHJldlBhZ2U9JyR7ZnJvbX0nO3Nob3dQYWdlKCdxdWVzdGlvbicsJHtxLmlkfSkiPgogICAgPGRpdiBjbGFzcz0icS1tZXRhIj4KICAgICAgPHNwYW4gY2xhc3M9InEtY2F0LWJhZGdlIj4ke2NhdD9jYXQuaWNvbisnICcrY2F0Lm5hbWU6cS5jYXR9PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icS1hdXRob3IiPvCfkaQgJHtxLmF1dGhvcn08L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJxLWRhdGUiPvCfk4UgJHtxLmRhdGV9PC9zcGFuPgogICAgICAke3RvcFZvdGVzPj0zMD9gPHNwYW4gY2xhc3M9ImZlYXR1cmVkLWJhZGdlIj7irZAgRmVhdHVyZWQ8L3NwYW4+YDonJ30KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0icS10aXRsZSI+JHtxLnRpdGxlfTwvZGl2PgogICAgPGRpdiBjbGFzcz0icS1wcmV2aWV3Ij4ke3EuYm9keS5zdWJzdHJpbmcoMCwxMjApfSR7cS5ib2R5Lmxlbmd0aD4xMjA/Jy4uLic6Jyd9PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJxLXN0YXRzIj4KICAgICAgPHNwYW4+8J+SrCAke3EuYW5zd2Vycy5sZW5ndGh9IGFuc3dlciR7cS5hbnN3ZXJzLmxlbmd0aCE9PTE/J3MnOicnfTwvc3Bhbj4KICAgICAgPHNwYW4+8J+RgSAke3Eudmlld3N9IHZpZXdzPC9zcGFuPgogICAgICA8c3Bhbj7irZAgVG9wIHZvdGU6ICR7dG9wVm90ZXN9PC9zcGFuPgogICAgPC9kaXY+CiAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOjZweCI+JHtsYW5nQmFkZ2UocS5sYW5nKX08L2Rpdj4KICA8L2Rpdj5gOwp9CgpmdW5jdGlvbiByZW5kZXJRdWVzdGlvbigpewogIGNvbnN0IHEgPSBxdWVzdGlvbnMuZmluZCh4PT54LmlkPT09Y3VycmVudFFJZCk7CiAgaWYoIXEpe3JldHVybjt9CiAgcS52aWV3cysrOwogIGNvbnN0IGNhdCA9IENBVEVHT1JJRVMuZmluZChjPT5jLmlkPT09cS5jYXQpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLWZ1bGwtY29udGVudCcpLmlubmVySFRNTD1gCiAgICA8ZGl2IGNsYXNzPSJxLW1ldGEiIHN0eWxlPSJtYXJnaW4tYm90dG9tOjEycHgiPgogICAgICA8c3BhbiBjbGFzcz0icS1jYXQtYmFkZ2UiIHN0eWxlPSJjdXJzb3I6cG9pbnRlciIgb25jbGljaz0ic2hvd1BhZ2UoJ2NhdGVnb3J5JywnJHtxLmNhdH0nKSI+JHtjYXQ/Y2F0Lmljb24rJyAnK2NhdC5uYW1lOnEuY2F0fTwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InEtYXV0aG9yIj7wn5GkICR7cS5hdXRob3J9PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icS1kYXRlIj7wn5OFICR7cS5kYXRlfTwvc3Bhbj4KICAgIDwvZGl2PgogICAgPGgyPiR7cS50aXRsZX08L2gyPgogICAgPGRpdiBjbGFzcz0iYm9keSIgc3R5bGU9Im1hcmdpbi10b3A6MTJweCI+JHtxLmJvZHl9PC9kaXY+YDsKICBjb25zdCBzb3J0ZWQgPSBbLi4ucS5hbnN3ZXJzXS5zb3J0KChhLGIpPT5iLnZvdGVzLWEudm90ZXMpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbnN3ZXJzLWNvdW50JykudGV4dENvbnRlbnQgPSBgJHtxLmFuc3dlcnMubGVuZ3RofSBBbnN3ZXIke3EuYW5zd2Vycy5sZW5ndGghPT0xPydzJzonJ31gOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbnN3ZXJzLWxpc3QnKS5pbm5lckhUTUwgPSBzb3J0ZWQubGVuZ3RoID8gc29ydGVkLm1hcCgoYSxpKT0+YAogICAgPGRpdiBjbGFzcz0iYW5zd2VyLWNhcmQgJHtpPT09MCYmYS52b3Rlcz4wPyd0b3AtYW5zd2VyJzonJ30iPgogICAgICAke2k9PT0wJiZhLnZvdGVzPjA/JzxkaXYgY2xhc3M9InRvcC1hbnN3ZXItbGFiZWwiPuKtkCBUb3AgQW5zd2VyPC9kaXY+JzonJ30KICAgICAgPGRpdiBjbGFzcz0iYW5zd2VyLWJvZHkiPiR7YS5ib2R5fTwvZGl2PgogICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjhweCI+JHtsYW5nQmFkZ2UoYS5sYW5nKX08L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iYW5zd2VyLWZvb3RlciI+CiAgICAgICAgPGRpdiBjbGFzcz0iYW5zd2VyLW1ldGEiPvCfkaQgJHthLmF1dGhvcn0gwrcg8J+ThSAke2EuZGF0ZX08L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ2b3RlLWJ0bnMiPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idm90ZS1idG4gJHthLnVzZXJWb3RlZD8nbGlrZWQnOicnfSIgb25jbGljaz0idm90ZSgke3EuaWR9LCR7YS5pZH0pIj4KICAgICAgICAgICAg8J+RjSAke2Eudm90ZXN9CiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9ImZsYWctYnRuIiBvbmNsaWNrPSJmbGFnQW5zd2VyKCR7cS5pZH0sJHthLmlkfSkiPvCfmqkgJHthLmZsYWdnZWQ/J0ZsYWdnZWQnOidGbGFnJ308L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgICR7YS5mbGFnZ2VkPyc8ZGl2IHN0eWxlPSJmb250LXNpemU6MC43NXJlbTtjb2xvcjp2YXIoLS1yZWQpO21hcmdpbi10b3A6OHB4Ij7imqDvuI8gVGhpcyBhbnN3ZXIgaGFzIGJlZW4gZmxhZ2dlZCBmb3IgcmV2aWV3LiBQbGVhc2UgdmVyaWZ5IHdpdGggb2ZmaWNpYWwgc291cmNlcy48L2Rpdj4nOicnfQogICAgPC9kaXY+YCkuam9pbignJykgOiAnPGRpdiBjbGFzcz0iZW1wdHktc3RhdGUiPjxkaXYgY2xhc3M9Imljb24iPvCfkqw8L2Rpdj48cD5ObyBhbnN3ZXJzIHlldC4gQmUgdGhlIGZpcnN0IHRvIGhlbHAhPC9wPjwvZGl2Pic7Cn0KCmZ1bmN0aW9uIGdvQmFjaygpe3Nob3dQYWdlKHByZXZQYWdlPT09J2NhdGVnb3J5Jz8nY2F0ZWdvcnknOidmb3J1bScsIHByZXZQYWdlPT09J2NhdGVnb3J5Jz9jdXJyZW50Q2F0Om51bGwpO30KCmZ1bmN0aW9uIHRvZ2dsZUFza0JhcigpewogIGNvbnN0IGIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXNrLWJhcicpOwogIGIuc3R5bGUuZGlzcGxheSA9IGIuc3R5bGUuZGlzcGxheT09PSdub25lJz8nYmxvY2snOidub25lJzsKfQpmdW5jdGlvbiBjYW5jZWxBc2soKXsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS10aXRsZScpLnZhbHVlPScnOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLWJvZHknKS52YWx1ZT0nJzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1jYXQnKS52YWx1ZT0nJzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1uYW1lJykudmFsdWU9Jyc7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fzay1iYXInKS5zdHlsZS5kaXNwbGF5PSdub25lJzsKfQpmdW5jdGlvbiByZW5kZXJDYXRzUGFnZSgpewogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXRzLWdyaWQnKS5pbm5lckhUTUwgPSBDQVRFR09SSUVTLm1hcChjPT5gCiAgICA8ZGl2IGNsYXNzPSJjYXQtY2FyZCIgb25jbGljaz0icHJldlBhZ2U9J2NhdHMnO3Nob3dQYWdlKCdjYXRlZ29yeScsJyR7Yy5pZH0nKSI+CiAgICAgIDxkaXYgY2xhc3M9ImNhdC1pY29uIj4ke2MuaWNvbn08L2Rpdj4KICAgICAgPGg0PiR7Yy5uYW1lfTwvaDQ+CiAgICAgIDxwPiR7Yy5kZXNjfTwvcD4KICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZTowLjcycmVtO2NvbG9yOnZhcigtLWJsdWUpO21hcmdpbi10b3A6NnB4O2ZvbnQtd2VpZ2h0OjYwMCI+JHtxdWVzdGlvbnMuZmlsdGVyKHE9PnEuY2F0PT09Yy5pZCkubGVuZ3RofSBxdWVzdGlvbnM8L3A+CiAgICA8L2Rpdj5gKS5qb2luKCcnKTsKfQoKZnVuY3Rpb24gc3VibWl0UXVlc3Rpb24oKXsKICBjb25zdCB0aXRsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLXRpdGxlJykudmFsdWUudHJpbSgpOwogIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1ib2R5JykudmFsdWUudHJpbSgpOwogIGNvbnN0IGNhdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxLWNhdCcpLnZhbHVlOwogIGNvbnN0IG5hbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1uYW1lJykudmFsdWUudHJpbSgpfHwnQW5vbnltb3VzJzsKICBpZighdGl0bGV8fCFib2R5fHwhY2F0KXtzaG93VG9hc3QoJ1BsZWFzZSBmaWxsIGluIGFsbCBmaWVsZHMg4p2MJyk7cmV0dXJuO30KICBxdWVzdGlvbnMudW5zaGlmdCh7aWQ6bmV4dFFJZCsrLHRpdGxlLGJvZHksY2F0LGF1dGhvcjpuYW1lLGRhdGU6bmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNsaWNlKDAsMTApLHZpZXdzOjAsbGFuZzpjdXJyZW50TGFuZyxhbnN3ZXJzOltdfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtdGl0bGUnKS52YWx1ZT0nJzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncS1ib2R5JykudmFsdWU9Jyc7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtY2F0JykudmFsdWU9Jyc7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3EtbmFtZScpLnZhbHVlPScnOwogIHRvZ2dsZUFza0JhcigpOwogIHJlbmRlckZvcnVtKCk7CiAgc2hvd1RvYXN0KCdRdWVzdGlvbiBwb3N0ZWQhIOKchScpOwp9CgpmdW5jdGlvbiBzdWJtaXRBbnN3ZXIoKXsKICBjb25zdCBxID0gcXVlc3Rpb25zLmZpbmQoeD0+eC5pZD09PWN1cnJlbnRRSWQpOwogIGlmKCFxKSByZXR1cm47CiAgY29uc3QgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbnMtYm9keScpLnZhbHVlLnRyaW0oKTsKICBjb25zdCBuYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fucy1uYW1lJykudmFsdWUudHJpbSgpfHwnQW5vbnltb3VzJzsKICBpZighYm9keSl7c2hvd1RvYXN0KCdQbGVhc2Ugd3JpdGUgYW4gYW5zd2VyIOKdjCcpO3JldHVybjt9CiAgcS5hbnN3ZXJzLnB1c2goe2lkOm5leHRBSWQrKyxib2R5LGF1dGhvcjpuYW1lLGRhdGU6bmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNsaWNlKDAsMTApLHZvdGVzOjAsZmxhZ2dlZDpmYWxzZSx1c2VyVm90ZWQ6ZmFsc2UsbGFuZzpjdXJyZW50TGFuZ30pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbnMtYm9keScpLnZhbHVlPScnOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbnMtbmFtZScpLnZhbHVlPScnOwogIHJlbmRlclF1ZXN0aW9uKCk7CiAgc2hvd1RvYXN0KCdBbnN3ZXIgcG9zdGVkISDinIUnKTsKfQoKZnVuY3Rpb24gdm90ZShxSWQsYUlkKXsKICBjb25zdCBxID0gcXVlc3Rpb25zLmZpbmQoeD0+eC5pZD09PXFJZCk7CiAgY29uc3QgYSA9IHE/LmFuc3dlcnMuZmluZCh4PT54LmlkPT09YUlkKTsKICBpZighYSkgcmV0dXJuOwogIGEudXNlclZvdGVkPSFhLnVzZXJWb3RlZDsKICBhLnZvdGVzKz1hLnVzZXJWb3RlZD8xOi0xOwogIHJlbmRlclF1ZXN0aW9uKCk7Cn0KCmZ1bmN0aW9uIGZsYWdBbnN3ZXIocUlkLGFJZCl7CiAgY29uc3QgcSA9IHF1ZXN0aW9ucy5maW5kKHg9PnguaWQ9PT1xSWQpOwogIGNvbnN0IGEgPSBxPy5hbnN3ZXJzLmZpbmQoeD0+eC5pZD09PWFJZCk7CiAgaWYoIWEpIHJldHVybjsKICBhLmZsYWdnZWQ9IWEuZmxhZ2dlZDsKICByZW5kZXJRdWVzdGlvbigpOwogIHNob3dUb2FzdChhLmZsYWdnZWQ/J0Fuc3dlciBmbGFnZ2VkIGZvciByZXZpZXcg8J+aqSc6J0ZsYWcgcmVtb3ZlZCcpOwp9CgpmdW5jdGlvbiByZW5kZXJCZXN0T2YoZmlsdGVyQ2F0KXsKICBjb25zdCBmaWx0ZXJzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jlc3RvZi1maWx0ZXJzJyk7CiAgZmlsdGVycy5pbm5lckhUTUwgPSBDQVRFR09SSUVTLm1hcChjPT5gPGJ1dHRvbiBjbGFzcz0iZmlsdGVyLWJ0biIgb25jbGljaz0iZmlsdGVyQmVzdE9mKCcke2MuaWR9Jyx0aGlzKSI+JHtjLmljb259ICR7Yy5uYW1lfTwvYnV0dG9uPmApLmpvaW4oJycpOwogIGNvbnN0IHRocmVzaG9sZCA9IDIwOwogIGxldCBxcyA9IHF1ZXN0aW9ucy5maWx0ZXIocT0+bWF4Vm90ZXMocSk+PXRocmVzaG9sZCB8fCBhdmdWb3RlcyhxKT49MTUpOwogIGlmKGZpbHRlckNhdCYmZmlsdGVyQ2F0IT09J2FsbCcpIHFzPXFzLmZpbHRlcihxPT5xLmNhdD09PWZpbHRlckNhdCk7CiAgcXMuc29ydCgoYSxiKT0+bWF4Vm90ZXMoYiktbWF4Vm90ZXMoYSkpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiZXN0b2YtbGlzdCcpLmlubmVySFRNTCA9IHFzLmxlbmd0aAogICAgPyBgPHAgc3R5bGU9ImZvbnQtc2l6ZTowLjgycmVtO2NvbG9yOnZhcigtLW11dGVkKTttYXJnaW4tYm90dG9tOjE2cHgiPlNob3dpbmcgJHtxcy5sZW5ndGh9IGhpZ2hseS1yYXRlZCBxdWVzdGlvbiR7cXMubGVuZ3RoIT09MT8ncyc6Jyd9PC9wPmArcXMubWFwKHE9PnFDYXJkKHEsJ2Jlc3RvZicpKS5qb2luKCcnKQogICAgOiBlbXB0eVN0YXRlKCdBcyB0aGUgY29tbXVuaXR5IGdyb3dzLCB0b3AtcmF0ZWQgYW5zd2VycyB3aWxsIGFwcGVhciBoZXJlLiBTdGFydCBhbnN3ZXJpbmcgcXVlc3Rpb25zIScpOwp9CgpmdW5jdGlvbiBmaWx0ZXJCZXN0T2YoY2F0LGJ0bil7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmZpbHRlci1idG4nKS5mb3JFYWNoKGI9PmIuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJykpOwogIGlmKGJ0bikgYnRuLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogIHJlbmRlckJlc3RPZihjYXQ9PT0nYWxsJz9udWxsOmNhdCk7Cn0KCmZ1bmN0aW9uIHJlbmRlckNoZWNrbGlzdCgpewogIGNvbnN0IHNhdmVkID0ge307CiAgdHJ5e2NvbnN0IHM9c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY2hlY2tsaXN0Jyk7aWYocylPYmplY3QuYXNzaWduKHNhdmVkLEpTT04ucGFyc2UocykpO31jYXRjaChlKXt9CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoZWNrbGlzdC1jb250ZW50JykuaW5uZXJIVE1MID0gQ0hFQ0tMSVNULm1hcCgocyxzaSk9PmAKICAgIDxkaXYgY2xhc3M9ImNoZWNrbGlzdC1zZWN0aW9uIj4KICAgICAgPGgzPiR7cy5pY29ufSAke3Muc2VjdGlvbn08L2gzPgogICAgICAke3MuaXRlbXMubWFwKChpdGVtLGlpKT0+ewogICAgICAgIGNvbnN0IGtleT1gJHtzaX0tJHtpaX1gOwogICAgICAgIHJldHVybiBgPGRpdiBjbGFzcz0iY2hlY2tsaXN0LWl0ZW0iPgogICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iY2hrLSR7a2V5fSIgJHtzYXZlZFtrZXldPydjaGVja2VkJzonJ30gb25jaGFuZ2U9InNhdmVDaGVjaygnJHtrZXl9Jyx0aGlzLmNoZWNrZWQpIiAvPgogICAgICAgICAgPGxhYmVsIGZvcj0iY2hrLSR7a2V5fSI+JHtpdGVtfTwvbGFiZWw+CiAgICAgICAgPC9kaXY+YDsKICAgICAgfSkuam9pbignJyl9CiAgICA8L2Rpdj5gKS5qb2luKCcnKTsKfQoKZnVuY3Rpb24gc2F2ZUNoZWNrKGtleSx2YWwpewogIHRyeXsKICAgIGNvbnN0IHM9c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY2hlY2tsaXN0Jyk7CiAgICBjb25zdCBkYXRhPXM/SlNPTi5wYXJzZShzKTp7fTsKICAgIGRhdGFba2V5XT12YWw7CiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdjaGVja2xpc3QnLEpTT04uc3RyaW5naWZ5KGRhdGEpKTsKICB9Y2F0Y2goZSl7fQp9CgpmdW5jdGlvbiByZW5kZXJUYWdDbG91ZCgpewogIGNvbnN0IHRhZ3M9WydCYW5raW5nJywnSGVhbHRoIEluc3VyYW5jZScsJ1RldWRhdCBaZWh1dCcsJ0t1cGF0IEhvbGltJywnVGF4JywnQXJub25hJywnQml0dWFjaCBMZXVtaScsJ1VscGFuJywnSW50ZXJuZXQnLCdQaG9uZScsJ0hvdXNpbmcnLCdEcml2aW5nIExpY2VuY2UnLCdTY2hvb2wnLCdFbXBsb3ltZW50JywnTWlzcmFkIEhhcG5pbSddOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YWctY2xvdWQnKS5pbm5lckhUTUw9dGFncy5tYXAodD0+YDxzcGFuIGNsYXNzPSJ0YWctY2xvdWQtaXRlbSIgb25jbGljaz0ic2VhcmNoVGFnKCcke3R9JykiPiR7dH08L3NwYW4+YCkuam9pbignJyk7Cn0KCmZ1bmN0aW9uIHNlYXJjaFRhZyh0KXsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoLWlucHV0JykudmFsdWU9dDsKICBkb1NlYXJjaCgpOwp9CgpmdW5jdGlvbiBkb1NlYXJjaCgpewogIGNvbnN0IHRlcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoLWlucHV0JykudmFsdWUudG9Mb3dlckNhc2UoKS50cmltKCk7CiAgaWYoIXRlcm0pe2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWFyY2gtcmVzdWx0cycpLmlubmVySFRNTD0nJztyZXR1cm47fQogIGNvbnN0IHJlc3VsdHMgPSBxdWVzdGlvbnMuZmlsdGVyKHE9PgogICAgcS50aXRsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pfHwKICAgIHEuYm9keS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pfHwKICAgIHEuYW5zd2Vycy5zb21lKGE9PmEuYm9keS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pKXx8CiAgICAoQ0FURUdPUklFUy5maW5kKGM9PmMuaWQ9PT1xLmNhdCk/Lm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSkKICApOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWFyY2gtcmVzdWx0cycpLmlubmVySFRNTCA9IHJlc3VsdHMubGVuZ3RoCiAgICA/IGA8cCBzdHlsZT0iZm9udC1zaXplOjAuODJyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MTZweCI+JHtyZXN1bHRzLmxlbmd0aH0gcmVzdWx0JHtyZXN1bHRzLmxlbmd0aCE9PTE/J3MnOicnfSBmb3IgIjxzdHJvbmc+JHt0ZXJtfTwvc3Ryb25nPiI8L3A+YCtyZXN1bHRzLm1hcChxPT5xQ2FyZChxLCdzZWFyY2gnKSkuam9pbignJykKICAgIDogYDxkaXYgY2xhc3M9ImVtcHR5LXN0YXRlIj48ZGl2IGNsYXNzPSJpY29uIj7wn5SNPC9kaXY+PHA+Tm8gcmVzdWx0cyBmb3VuZCBmb3IgIjxzdHJvbmc+JHt0ZXJtfTwvc3Ryb25nPiIuIFRyeSBhIGRpZmZlcmVudCBrZXl3b3JkIG9yIDxhIGhyZWY9IiMiIG9uY2xpY2s9InNob3dQYWdlKCdmb3J1bScpO3JldHVybiBmYWxzZTsiIHN0eWxlPSJjb2xvcjp2YXIoLS1ibHVlKSI+YXNrIGEgcXVlc3Rpb248L2E+ITwvcD48L2Rpdj5gOwp9CgpmdW5jdGlvbiBsYW5nRmxhZyhjb2RlKXtyZXR1cm4gKExBTkdTLmZpbmQobD0+bC5jb2RlPT09Y29kZSl8fHtmbGFnOifwn4yQJ30pLmZsYWc7fQpmdW5jdGlvbiBsYW5nTmFtZShjb2RlKXtyZXR1cm4gKExBTkdTLmZpbmQobD0+bC5jb2RlPT09Y29kZSl8fHtuYW1lOmNvZGV9KS5uYW1lO30KZnVuY3Rpb24gbGFuZ05hdGl2ZShjb2RlKXtyZXR1cm4gKExBTkdTLmZpbmQobD0+bC5jb2RlPT09Y29kZSl8fHtuYXRpdmU6Y29kZX0pLm5hdGl2ZTt9CmZ1bmN0aW9uIGxhbmdCYWRnZShpdGVtTGFuZyl7CiAgY29uc3QgdHJhbnNsYXRlZCA9IGl0ZW1MYW5nICYmIGl0ZW1MYW5nIT09Y3VycmVudExhbmc7CiAgaWYoIWl0ZW1MYW5nKSByZXR1cm4gJyc7CiAgcmV0dXJuIGA8c3BhbiBzdHlsZT0iZm9udC1zaXplOjAuNzJyZW07Y29sb3I6dmFyKC0tbXV0ZWQpO2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHg7bWFyZ2luLXRvcDo0cHgiPgogICAgT3JpZ2luYWxseSBpbiAke2xhbmdOYXRpdmUoaXRlbUxhbmcpfSR7dHJhbnNsYXRlZD8nIMK3IDxzcGFuIHN0eWxlPSJjb2xvcjp2YXIoLS1ibHVlKTtmb250LXdlaWdodDo2MDAiPvCflIQgQXV0by10cmFuc2xhdGVkPC9zcGFuPic6Jyd9CiAgPC9zcGFuPmA7Cn0KZnVuY3Rpb24gb3BlbkxhbmdNb2RhbCgpewogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYW5nLW1vZGFsJykuY2xhc3NMaXN0LmFkZCgnb3BlbicpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYW5nLWdyaWQnKS5pbm5lckhUTUw9TEFOR1MubWFwKGw9PmA8ZGl2IGNsYXNzPSJsYW5nLW9wdGlvbiAke2wuY29kZT09PWN1cnJlbnRMYW5nPydhY3RpdmUnOicnfSIgb25jbGljaz0ic2VsZWN0TGFuZygnJHtsLmNvZGV9Jyx0aGlzKSI+JHtsLm5hdGl2ZX08L2Rpdj5gKS5qb2luKCcnKTsKfQpmdW5jdGlvbiBjbG9zZUxhbmdNb2RhbCgpe2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYW5nLW1vZGFsJykuY2xhc3NMaXN0LnJlbW92ZSgnb3BlbicpO30KZnVuY3Rpb24gc2VsZWN0TGFuZyhjb2RlLGVsKXsKICBjdXJyZW50TGFuZz1jb2RlOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5sYW5nLW9wdGlvbicpLmZvckVhY2goeD0+eC5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKSk7CiAgZWwuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmxhbmctYnRuJykudGV4dENvbnRlbnQ9bGFuZ0ZsYWcoY29kZSk7CiAgc2V0VGltZW91dCgoKT0+e2Nsb3NlTGFuZ01vZGFsKCk7c2hvd1RvYXN0KCdMYW5ndWFnZSBzZXQgdG8gJytsYW5nTmFtZShjb2RlKSsnIOKAlCBhdXRvLXRyYW5zbGF0aW9uIGFjdGl2ZSDwn4yQJyk7fSwzMDApOwp9CgpmdW5jdGlvbiBzZWxlY3RBbW91bnQoYnRuLHYpewogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5hbW91bnQtYnRuJykuZm9yRWFjaChiPT5iLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJykpOwogIGJ0bi5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpOwp9CgpmdW5jdGlvbiBzaG93VG9hc3QobXNnKXsKICBjb25zdCB0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2FzdCcpOwogIHQudGV4dENvbnRlbnQ9bXNnO3QuY2xhc3NMaXN0LmFkZCgnc2hvdycpOwogIHNldFRpbWVvdXQoKCk9PnQuY2xhc3NMaXN0LnJlbW92ZSgnc2hvdycpLDMwMDApOwp9CmZ1bmN0aW9uIGVtcHR5U3RhdGUobXNnKXtyZXR1cm4gYDxkaXYgY2xhc3M9ImVtcHR5LXN0YXRlIj48ZGl2IGNsYXNzPSJpY29uIj7wn5KsPC9kaXY+PHA+JHttc2d9PC9wPjwvZGl2PmA7fQoKLy8gSW5pdApyZW5kZXJIb21lQ2F0cygpOwo8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==" }, "name": "New index.html file creation", "exportedAt": 1782216241331 }