<?xml version="1.0" encoding="utf-8" ?>
<otrs_package version="1.1">
    <Name>AgentTicketFormDraftReview</Name>
    <Version>11.1.2</Version>
    <Vendor>Rother OSS GmbH</Vendor>
    <URL>https://otobo.io/</URL>
    <License>GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007</License>
    <ChangeLog Date="2026-10-26 12:27:17" Version="11.1.2">Update to OTOBO 11.1.1.</ChangeLog>
    <ChangeLog Date="2026-06-26 15:58:23" Version="11.1.1">Initial release for OTOBO 11.1.</ChangeLog>
    <Description Lang="en">Enables users to view ticket drafts if they have read permissions, and to edit ticket drafts if they have write permissions.</Description>
    <Framework>11.1.x</Framework>
    <BuildCommitID>d1e656b0ac59c553267bb94f34a03280b71da599</BuildCommitID>
    <BuildDate>2026-10-26 12:27:21</BuildDate>
    <BuildHost>opms.rother-oss.com</BuildHost>
    <Filelist>
        <File Location="Custom/Kernel/Modules/AgentTicketZoom.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA1NzhiNGIxOTkyN2Y2MzE4Mzc2YzAyZTMxNzg4ZTI0MjVlMTA0MTE2IC0gS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRab29tLnBtCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudFRpY2tldFpvb207Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKIyBjb3JlIG1vZHVsZXMKdXNlIExpc3Q6OlV0aWwgcXcoYW55IG5vbmUpOwp1c2UgUE9TSVggICAgICBxdyhjZWlsKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0gYmxlc3MgeyVQYXJhbX0sICRUeXBlOwoKICAgICMgc2V0IGRlYnVnCiAgICAkU2VsZi0+e0RlYnVnfSA9IDA7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRVc2VyT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAkU2VsZi0+e0FydGljbGVJRH0gICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdBcnRpY2xlSUQnICk7CiAgICAkU2VsZi0+e0FydGljbGVWaWV3fSAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdBcnRpY2xlVmlldycgKTsKICAgICRTZWxmLT57Wm9vbUV4cGFuZH0gICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1pvb21FeHBhbmQnICk7CiAgICAkU2VsZi0+e1pvb21FeHBhbmRTb3J0fSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdab29tRXhwYW5kU29ydCcgKTsKICAgICRTZWxmLT57Wm9vbVRpbWVsaW5lfSAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1pvb21UaW1lbGluZScgKTsKCiAgICBteSAlVXNlclByZWZlcmVuY2VzID0gJFVzZXJPYmplY3QtPkdldFByZWZlcmVuY2VzKAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc2F2ZSBsYXN0IHVzZWQgdmlldyB0eXBlIGluIHByZWZlcmVuY2VzCiAgICBpZiAoICEkU2VsZi0+e1N1YmFjdGlvbn0gKSB7CgogICAgICAgIGlmICgKICAgICAgICAgICAgIWRlZmluZWQgJFNlbGYtPntBcnRpY2xlVmlld30KICAgICAgICAgICAgJiYgIWRlZmluZWQgJFNlbGYtPntab29tRXhwYW5kfQogICAgICAgICAgICAmJiAhZGVmaW5lZCAkU2VsZi0+e1pvb21UaW1lbGluZX0KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJFNlbGYtPntab29tRXhwYW5kfSA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRab29tRXhwYW5kJyk7CiAgICAgICAgICAgIGlmICggJFVzZXJQcmVmZXJlbmNlc3tVc2VyTGFzdFVzZWRab29tVmlld1R5cGV9ICkgewogICAgICAgICAgICAgICAgaWYgKCAkVXNlclByZWZlcmVuY2Vze1VzZXJMYXN0VXNlZFpvb21WaWV3VHlwZX0gZXEgJ0V4cGFuZCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntab29tRXhwYW5kfSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRVc2VyUHJlZmVyZW5jZXN7VXNlckxhc3RVc2VkWm9vbVZpZXdUeXBlfSBlcSAnQ29sbGFwc2UnICkgewogICAgICAgICAgICAgICAgICAgICRTZWxmLT57Wm9vbUV4cGFuZH0gPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkVXNlclByZWZlcmVuY2Vze1VzZXJMYXN0VXNlZFpvb21WaWV3VHlwZX0gZXEgJ1RpbWVsaW5lJyApIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1pvb21UaW1lbGluZX0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2lmICgKICAgICAgICAgICAgZGVmaW5lZCAkU2VsZi0+e0FydGljbGVWaWV3fQogICAgICAgICAgICB8fCBkZWZpbmVkICRTZWxmLT57Wm9vbUV4cGFuZH0KICAgICAgICAgICAgfHwgZGVmaW5lZCAkU2VsZi0+e1pvb21UaW1lbGluZX0KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJExhc3RVc2VkWm9vbVZpZXdUeXBlID0gJyc7CgogICAgICAgICAgICBpZiAoIGRlZmluZWQgJFNlbGYtPntBcnRpY2xlVmlld30gKSB7CiAgICAgICAgICAgICAgICAkTGFzdFVzZWRab29tVmlld1R5cGUgPSAkU2VsZi0+e0FydGljbGVWaWV3fTsKCiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QXJ0aWNsZVZpZXd9IGVxICdFeHBhbmQnICkgewogICAgICAgICAgICAgICAgICAgICRTZWxmLT57Wm9vbUV4cGFuZH0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e0FydGljbGVWaWV3fSBlcSAnQ29sbGFwc2UnICkgewogICAgICAgICAgICAgICAgICAgICRTZWxmLT57Wm9vbUV4cGFuZH0gPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e0FydGljbGVWaWV3fSBlcSAnVGltZWxpbmUnICkgewogICAgICAgICAgICAgICAgICAgICRTZWxmLT57Wm9vbVRpbWVsaW5lfSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkTGFzdFVzZWRab29tVmlld1R5cGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50Wm9vbUV4cGFuZCcpCiAgICAgICAgICAgICAgICAgICAgICAgID8gJ0V4cGFuZCcKICAgICAgICAgICAgICAgICAgICAgICAgOiAnQ29sbGFwc2UnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggZGVmaW5lZCAkU2VsZi0+e1pvb21FeHBhbmR9ICYmICRTZWxmLT57Wm9vbUV4cGFuZH0gPT0gMSApIHsKICAgICAgICAgICAgICAgICRMYXN0VXNlZFpvb21WaWV3VHlwZSA9ICdFeHBhbmQnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggZGVmaW5lZCAkU2VsZi0+e1pvb21FeHBhbmR9ICYmICRTZWxmLT57Wm9vbUV4cGFuZH0gPT0gMCApIHsKICAgICAgICAgICAgICAgICRMYXN0VXNlZFpvb21WaWV3VHlwZSA9ICdDb2xsYXBzZSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCBkZWZpbmVkICRTZWxmLT57Wm9vbVRpbWVsaW5lfSAmJiAkU2VsZi0+e1pvb21UaW1lbGluZX0gPT0gMSApIHsKICAgICAgICAgICAgICAgICRMYXN0VXNlZFpvb21WaWV3VHlwZSA9ICdUaW1lbGluZSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFVzZXJPYmplY3QtPlNldFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIEtleSAgICA9PiAnVXNlckxhc3RVc2VkWm9vbVZpZXdUeXBlJywKICAgICAgICAgICAgICAgIFZhbHVlICA9PiAkTGFzdFVzZWRab29tVmlld1R5cGUsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgnVGltZWxpbmVWaWV3RW5hYmxlZCcpICkgewogICAgICAgICRTZWxmLT57Wm9vbVRpbWVsaW5lfSA9IDA7CiAgICB9CgogICAgIyB3aGV0aGVyIHRoZSBtZXNzYWdlICJUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgYXJ0aWNsZSwgLi4uIiBpcyBzaG93bgogICAgJFNlbGYtPntEb05vdFNob3dCcm93c2VyTGlua01lc3NhZ2V9IC8vPSAkVXNlclByZWZlcmVuY2Vze1VzZXJBZ2VudERvTm90U2hvd0Jyb3dzZXJMaW5rTWVzc2FnZX07CgogICAgJFNlbGYtPntab29tRXhwYW5kU29ydH0gLy89ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6Wm9vbUV4cGFuZFNvcnQnKTsKCiAgICAkU2VsZi0+e0FydGljbGVGaWx0ZXJBY3RpdmV9ID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpUaWNrZXRBcnRpY2xlRmlsdGVyJyk7CgogICAgIyBkZWZpbmUgaWYgcmljaCB0ZXh0IHNob3VsZCBiZSB1c2VkCiAgICAkU2VsZi0+e1JpY2hUZXh0fSA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6Wm9vbVJpY2hUZXh0Rm9yY2UnKQogICAgICAgIHx8ICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9CiAgICAgICAgfHwgMDsKCiAgICAjIEFsd2F5cyBleGNsdWRlIHBsYWluIHRleHQgYXR0YWNobWVudCwgYnV0IGV4Y2x1ZGUgSFRNTCBib2R5IG9ubHkgaWYgcmljaCB0ZXh0IGlzIGVuYWJsZWQuCiAgICAkU2VsZi0+e0V4Y2x1ZGVBdHRhY2htZW50c30gPSB7CiAgICAgICAgRXhjbHVkZVBsYWluVGV4dCA9PiAxLAogICAgICAgIEV4Y2x1ZGVIVE1MQm9keSAgPT4gJFNlbGYtPntSaWNoVGV4dH0sCiAgICAgICAgRXhjbHVkZUlubGluZSAgICA9PiAkU2VsZi0+e1JpY2hUZXh0fSwKICAgIH07CgogICAgIyBnZXQgdGlja2V0IG9iamVjdAogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICAjIHRpY2tldCBpZCBsb29rdXAKICAgIGlmICggISRTZWxmLT57VGlja2V0SUR9ICYmICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdUaWNrZXROdW1iZXInICkgKSB7CiAgICAgICAgJFNlbGYtPntUaWNrZXRJRH0gPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRJRExvb2t1cCgKICAgICAgICAgICAgVGlja2V0TnVtYmVyID0+ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdUaWNrZXROdW1iZXInICksCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBkaXNwbGF5IHNldHRpbmdzIGZvciBBZ2VudFRpY2tldFpvb20sIGUuZy4gd2hpY2ggd2lkZ2V0cyBhcmUgc2hvd24KICAgICRTZWxmLT57RGlzcGxheVNldHRpbmdzfSA9ICRDb25maWdPYmplY3QtPkdldCgiVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRab29tIik7CgogICAgIyB0aGlzIGlzIGEgbWFwcGluZyBvZiBoaXN0b3J5IHR5cGVzIHdoaWNoIGlzIGJlaW5nIHVzZWQKICAgICMgZm9yIHRoZSB0aW1lbGluZSB2aWV3IGFuZCBpdHMgZXZlbnQgdHlwZSBmaWx0ZXIKICAgICRTZWxmLT57SGlzdG9yeVR5cGVNYXBwaW5nfSA9IHsKICAgICAgICBUaWNrZXRMaW5rRGVsZXRlICAgICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnTGluayBEZWxldGVkJyksCiAgICAgICAgTG9jayAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1RpY2tldCBMb2NrZWQnKSwKICAgICAgICBTZXRQZW5kaW5nVGltZSAgICAgICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnUGVuZGluZyBUaW1lIFNldCcpLAogICAgICAgIFRpY2tldER5bmFtaWNGaWVsZFVwZGF0ZSAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdEeW5hbWljIEZpZWxkIFVwZGF0ZWQnKSwKICAgICAgICBFbWFpbEFnZW50SW50ZXJuYWwgICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnT3V0Z29pbmcgRW1haWwgKGludGVybmFsKScpLAogICAgICAgIE5ld1RpY2tldCAgICAgICAgICAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdUaWNrZXQgQ3JlYXRlZCcpLAogICAgICAgIFR5cGVVcGRhdGUgICAgICAgICAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdUeXBlIFVwZGF0ZWQnKSwKICAgICAgICBFc2NhbGF0aW9uVXBkYXRlVGltZVN0YXJ0ICAgICAgID0+IFRyYW5zbGF0YWJsZSgnRXNjYWxhdGlvbiBVcGRhdGUgVGltZSBJbiBFZmZlY3QnKSwKICAgICAgICBFc2NhbGF0aW9uVXBkYXRlVGltZVN0b3AgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnRXNjYWxhdGlvbiBVcGRhdGUgVGltZSBTdG9wcGVkJyksCiAgICAgICAgRXNjYWxhdGlvbkZpcnN0UmVzcG9uc2VUaW1lU3RvcCA9PiBUcmFuc2xhdGFibGUoJ0VzY2FsYXRpb24gRmlyc3QgUmVzcG9uc2UgVGltZSBTdG9wcGVkJyksCiAgICAgICAgQ3VzdG9tZXJVcGRhdGUgICAgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0N1c3RvbWVyIFVwZGF0ZWQnKSwKICAgICAgICBDaGF0SW50ZXJuYWwgICAgICAgICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnSW50ZXJuYWwgQ2hhdCcpLAogICAgICAgIFNlbmRBdXRvRm9sbG93VXAgICAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdBdXRvbWF0aWMgRm9sbG93LVVwIFNlbnQnKSwKICAgICAgICBBZGROb3RlICAgICAgICAgICAgICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnTm90ZSBBZGRlZCcpLAogICAgICAgIEFkZE5vdGVDdXN0b21lciAgICAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdOb3RlIEFkZGVkIChDdXN0b21lciknKSwKICAgICAgICBBZGRTTVMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnU01TIEFkZGVkJyksCiAgICAgICAgQWRkU01TQ3VzdG9tZXIgICAgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1NNUyBBZGRlZCAoQ3VzdG9tZXIpJyksCiAgICAgICAgU3RhdGVVcGRhdGUgICAgICAgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1N0YXRlIFVwZGF0ZWQnKSwKICAgICAgICBTZW5kQW5zd2VyICAgICAgICAgICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnT3V0Z29pbmcgQW5zd2VyJyksCiAgICAgICAgU2VydmljZVVwZGF0ZSAgICAgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1NlcnZpY2UgVXBkYXRlZCcpLAogICAgICAgIFRpY2tldExpbmtBZGQgICAgICAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdMaW5rIEFkZGVkJyksCiAgICAgICAgRW1haWxDdXN0b21lciAgICAgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0luY29taW5nIEN1c3RvbWVyIEVtYWlsJyksCiAgICAgICAgV2ViUmVxdWVzdEN1c3RvbWVyICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0luY29taW5nIFdlYiBSZXF1ZXN0JyksCiAgICAgICAgUHJpb3JpdHlVcGRhdGUgICAgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1ByaW9yaXR5IFVwZGF0ZWQnKSwKICAgICAgICBVbmxvY2sgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnVGlja2V0IFVubG9ja2VkJyksCiAgICAgICAgRW1haWxBZ2VudCAgICAgICAgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ091dGdvaW5nIEVtYWlsJyksCiAgICAgICAgVGl0bGVVcGRhdGUgICAgICAgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1RpdGxlIFVwZGF0ZWQnKSwKICAgICAgICBPd25lclVwZGF0ZSAgICAgICAgICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnTmV3IE93bmVyJyksCiAgICAgICAgTWVyZ2VkICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1RpY2tldCBNZXJnZWQnKSwKICAgICAgICBQaG9uZUNhbGxBZ2VudCAgICAgICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnT3V0Z29pbmcgUGhvbmUgQ2FsbCcpLAogICAgICAgIEZvcndhcmQgICAgICAgICAgICAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdGb3J3YXJkZWQgTWVzc2FnZScpLAogICAgICAgIFVuc3Vic2NyaWJlICAgICAgICAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdSZW1vdmVkIFVzZXIgU3Vic2NyaXB0aW9uJyksCiAgICAgICAgVGltZUFjY291bnRpbmcgICAgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1RpbWUgQWNjb3VudGVkJyksCiAgICAgICAgUGhvbmVDYWxsQ3VzdG9tZXIgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0luY29taW5nIFBob25lIENhbGwnKSwKICAgICAgICBTeXN0ZW1SZXF1ZXN0ICAgICAgICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnU3lzdGVtIFJlcXVlc3QuJyksCiAgICAgICAgRm9sbG93VXAgICAgICAgICAgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0luY29taW5nIEZvbGxvdy1VcCcpLAogICAgICAgIFNlbmRBdXRvUmVwbHkgICAgICAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdBdXRvbWF0aWMgUmVwbHkgU2VudCcpLAogICAgICAgIFNlbmRBdXRvUmVqZWN0ICAgICAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdBdXRvbWF0aWMgUmVqZWN0IFNlbnQnKSwKICAgICAgICBSZXNwb25zaWJsZVVwZGF0ZSAgICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnTmV3IFJlc3BvbnNpYmxlJyksCiAgICAgICAgRXNjYWxhdGlvblNvbHV0aW9uVGltZVN0YXJ0ICAgICA9PiBUcmFuc2xhdGFibGUoJ0VzY2FsYXRpb24gU29sdXRpb24gVGltZSBJbiBFZmZlY3QnKSwKICAgICAgICBFc2NhbGF0aW9uU29sdXRpb25UaW1lU3RvcCAgICAgID0+IFRyYW5zbGF0YWJsZSgnRXNjYWxhdGlvbiBTb2x1dGlvbiBUaW1lIFN0b3BwZWQnKSwKICAgICAgICBFc2NhbGF0aW9uUmVzcG9uc2VUaW1lU3RhcnQgICAgID0+IFRyYW5zbGF0YWJsZSgnRXNjYWxhdGlvbiBSZXNwb25zZSBUaW1lIEluIEVmZmVjdCcpLAogICAgICAgIEVzY2FsYXRpb25SZXNwb25zZVRpbWVTdG9wICAgICAgPT4gVHJhbnNsYXRhYmxlKCdFc2NhbGF0aW9uIFJlc3BvbnNlIFRpbWUgU3RvcHBlZCcpLAogICAgICAgIFNMQVVwZGF0ZSAgICAgICAgICAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdTTEEgVXBkYXRlZCcpLAogICAgICAgIENoYXRFeHRlcm5hbCAgICAgICAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdFeHRlcm5hbCBDaGF0JyksCiAgICAgICAgTW92ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1F1ZXVlIENoYW5nZWQnKSwKICAgICAgICBTZW5kQWdlbnROb3RpZmljYXRpb24gICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnTm90aWZpY2F0aW9uIFdhcyBTZW50JyksCiAgICB9OwoKICAgICMgQWRkIGN1c3RvbSBmaWxlcyB0byB0aGUgem9vbSdzIGZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gb24gdGhlIGZseQogICAgIyAgICB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBvdGhlciBtb2R1bGVzLgogICAgaWYgKAogICAgICAgIGRlZmluZWQgJENvbmZpZ09iamVjdC0+R2V0KCdUaW1lbGluZVZpZXdFbmFibGVkJykKICAgICAgICAmJiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpbWVsaW5lVmlld0VuYWJsZWQnKSA9PSAxCiAgICAgICAgKQogICAgewogICAgICAgICRDb25maWdPYmplY3QtPlNldCgKICAgICAgICAgICAgS2V5ICAgPT4gJ0xvYWRlcjo6TW9kdWxlOjpBZ2VudFRpY2tldFpvb20jIyMwMDMtRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ0NvcmUuQWdlbnQuVGlja2V0Wm9vbS5UaW1lbGluZVZpZXcuanMnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRBcnRpY2xlU2hvd1N0YXR1cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGVGZWF0dXJlcycpLT5TaG93RGVsZXRlZEFydGljbGVzKAogICAgICAgIFRpY2tldElEICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIEdldFN0YXR1cyA9PiAxCiAgICApOwoKICAgICRTZWxmLT57U2hvd0RlbGV0ZWRBcnRpY2xlc30gPSAkQXJ0aWNsZVNob3dTdGF0dXMgPyAxIDogMDsKICAgICRTZWxmLT57QXJ0aWNsZVN0b3JhZ2V9ICAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6QXJ0aWNsZTo6QmFja2VuZDo6TUlNRUJhc2U6OkFydGljbGVTdG9yYWdlJyk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFNlbGYtPntUaWNrZXRJRH0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gVGlja2V0SUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkVGlja2V0T2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKICAgIG15ICRBcnRpY2xlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpOwoKICAgICMgY2hlY2sgcGVybWlzc2lvbnMKICAgIG15ICRBY2Nlc3MgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRQZXJtaXNzaW9uKAogICAgICAgIFR5cGUgICAgID0+ICdybycsCiAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9CiAgICApOwoKICAgICMgZXJyb3Igc2NyZWVuLCBkb24ndCBzaG93IHRpY2tldAogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgKICAgICAgICAgICAgIlRoaXMgdGlja2V0IGRvZXMgbm90IGV4aXN0LCBvciB5b3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9ucyB0byBhY2Nlc3MgaXQgaW4gaXRzIGN1cnJlbnQgc3RhdGUuIgogICAgICAgICksCiAgICAgICAgV2l0aEhlYWRlciA9PiAkU2VsZi0+e1N1YmFjdGlvbn0gJiYgJFNlbGYtPntTdWJhY3Rpb259IGVxICdBcnRpY2xlVXBkYXRlJyA/ICdubycgOiAneWVzJywKICAgICkgaWYgISRBY2Nlc3M7CgogICAgIyBnZXQgdGlja2V0IGF0dHJpYnV0ZXMKICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgVGlja2V0SUQgICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgICMgZ2V0IEFDTCByZXN0cmljdGlvbnMKICAgIG15ICVQb3NzaWJsZUFjdGlvbnM7CiAgICBteSAkQ291bnRlciA9IDA7CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgYWxsIHJlZ2lzdGVyZWQgQWN0aW9ucwogICAgaWYgKCByZWYgJENvbmZpZ09iamVjdC0+R2V0KCdGcm9udGVuZDo6TW9kdWxlJykgZXEgJ0hBU0gnICkgewoKICAgICAgICBteSAlQWN0aW9ucyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScpIH07CgogICAgICAgICMgb25seSB1c2UgdGhvc2UgQWN0aW9ucyB0aGF0IHN0YXRzIHdpdGggQWdlbnQKICAgICAgICAlUG9zc2libGVBY3Rpb25zID0gbWFwIHsgKyskQ291bnRlciA9PiAkXyB9CiAgICAgICAgICAgIGdyZXAgeyBzdWJzdHIoICRfLCAwLCBsZW5ndGggJ0FnZW50JyApIGVxICdBZ2VudCcgfQogICAgICAgICAgICBzb3J0IGtleXMgJUFjdGlvbnM7CiAgICB9CgogICAgbXkgJEFDTCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbCgKICAgICAgICBEYXRhICAgICAgICAgID0+IFwlUG9zc2libGVBY3Rpb25zLAogICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgIFRpY2tldElEICAgICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnQWN0aW9uJywKICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICctJywKICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgbXkgJUFjbEFjdGlvbiA9ICVQb3NzaWJsZUFjdGlvbnM7CiAgICBpZiAoJEFDTCkgewogICAgICAgICVBY2xBY3Rpb24gPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2xBY3Rpb25EYXRhKCk7CiAgICB9CgogICAgIyBjaGVjayBpZiBBQ0wgcmVzdHJpY3Rpb25zIGV4aXN0CiAgICBteSAlQWNsQWN0aW9uTG9va3VwID0gcmV2ZXJzZSAlQWNsQWN0aW9uOwoKICAgICMgc2hvdyBlcnJvciBzY3JlZW4gaWYgQUNMIHByb2hpYml0cyB0aGlzIGFjdGlvbgogICAgaWYgKCAhJEFjbEFjdGlvbkxvb2t1cHsgJFNlbGYtPntBY3Rpb259IH0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbiggV2l0aEhlYWRlciA9PiAneWVzJyApOwogICAgfQoKICAgICMgc2VuZCBwYXJhbWV0ZXIgVGlja2V0SUQgdG8gSlMKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnVGlja2V0SUQnLAogICAgICAgIFZhbHVlID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgKTsKCiAgICAjIG1hcmsgc2hvd24gdGlja2V0IGFzIHNlZW4KICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdUaWNrZXRNYXJrQXNTZWVuJyApIHsKICAgICAgICBteSAkU3VjY2VzcyA9IDE7CgogICAgICAgICMgYWx3YXlzIHNob3cgYXJjaGl2ZWQgdGlja2V0cyBhcyBzZWVuCiAgICAgICAgaWYgKCAkVGlja2V0e0FyY2hpdmVGbGFnfSBuZSAneScgKSB7CiAgICAgICAgICAgICRTdWNjZXNzID0gJFNlbGYtPl9UaWNrZXRJdGVtU2VlbiggVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0gKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJFN1Y2Nlc3MsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ01hcmtBc0ltcG9ydGFudCcgKSB7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgIyBPd25lciBhbmQgUmVzcG9uc2libGUgY2FuIG1hcmsgYXJ0aWNsZXMgYXMgaW1wb3J0YW50IG9yIHJlbW92ZSBtYXJrCiAgICAgICAgaWYgKAogICAgICAgICAgICAkU2VsZi0+e1VzZXJJRH0gPT0gJFRpY2tldHtPd25lcklEfQogICAgICAgICAgICB8fCAoCiAgICAgICAgICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6UmVzcG9uc2libGUnKQogICAgICAgICAgICAgICAgJiYgJFNlbGYtPntVc2VySUR9ID09ICRUaWNrZXR7UmVzcG9uc2libGVJRH0KICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgIyBBbHdheXMgdXNlIHVzZXIgaWQgMSBiZWNhdXNlIG90aGVyIHVzZXJzIGFsc28gaGF2ZSB0byBzZWUgdGhlIGltcG9ydGFudCBmbGFnCiAgICAgICAgICAgIG15ICVBcnRpY2xlRmxhZyA9ICRBcnRpY2xlT2JqZWN0LT5BcnRpY2xlRmxhZ0dldCgKICAgICAgICAgICAgICAgIFRpY2tldElEICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIEFydGljbGVJRCA9PiAkU2VsZi0+e0FydGljbGVJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRBcnRpY2xlSXNJbXBvcnRhbnQgPSAkQXJ0aWNsZUZsYWd7SW1wb3J0YW50fTsKICAgICAgICAgICAgaWYgKCRBcnRpY2xlSXNJbXBvcnRhbnQpIHsKCiAgICAgICAgICAgICAgICAjIEFsd2F5cyB1c2UgdXNlciBpZCAxIGJlY2F1c2Ugb3RoZXIgdXNlcnMgYWxzbyBoYXZlIHRvIHNlZSB0aGUgaW1wb3J0YW50IGZsYWcKICAgICAgICAgICAgICAgICRBcnRpY2xlT2JqZWN0LT5BcnRpY2xlRmxhZ0RlbGV0ZSgKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgQXJ0aWNsZUlEID0+ICRTZWxmLT57QXJ0aWNsZUlEfSwKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgPT4gJ0ltcG9ydGFudCcsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgQWx3YXlzIHVzZSB1c2VyIGlkIDEgYmVjYXVzZSBvdGhlciB1c2VycyBhbHNvIGhhdmUgdG8gc2VlIHRoZSBpbXBvcnRhbnQgZmxhZwogICAgICAgICAgICAgICAgJEFydGljbGVPYmplY3QtPkFydGljbGVGbGFnU2V0KAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBBcnRpY2xlSUQgPT4gJFNlbGYtPntBcnRpY2xlSUR9LAogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICA9PiAnSW1wb3J0YW50JywKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZ2VudFRpY2tldFpvb207VGlja2V0SUQ9JFNlbGYtPntUaWNrZXRJRH07QXJ0aWNsZUlEPSRTZWxmLT57QXJ0aWNsZUlEfSIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCByZXF1aXJlZCBvYmplY3RzCiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkTWFpbk9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwoKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdGb3JtRHJhZnREZWxldGUnICkgewogICAgICAgIG15ICVSZXNwb25zZTsKCiAgICAgICAgbXkgJEZvcm1EcmFmdElEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0Zvcm1EcmFmdElEJyApIHx8ICcnOwogICAgICAgIGlmICgkRm9ybURyYWZ0SUQpIHsKCiAgICAgICAgICAgICMgZmV0Y2ggZm9ybSBkcmFmdCB0byBjaGVjayBwZXJtaXNzaW9ucyBhbmQgdGlja2V0IGxvY2sKICAgICAgICAgICAgIyAgIE5PVEU6IHBhc3NpbmcgdGhlIG9iamVjdCBpZCBlbnN1cmVzIHZlcmlmaWNhdGlvbiB0aGF0IGZvcm0gZHJhZnQgYmVsb25ncyB0byB0aWNrZXQKICAgICAgICAgICAgbXkgJEZvcm1EcmFmdE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGb3JtRHJhZnQnKTsKICAgICAgICAgICAgbXkgJEZvcm1EcmFmdCAgICAgICA9ICRGb3JtRHJhZnRPYmplY3QtPkZvcm1EcmFmdEdldCgKICAgICAgICAgICAgICAgIEZvcm1EcmFmdElEID0+ICRGb3JtRHJhZnRJRCwKICAgICAgICAgICAgICAgIE9iamVjdElEICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkRm9ybURyYWZ0KSApIHsKCiAgICAgICAgICAgICAgICAjIHVzZSBjb25maWcgb2YgZm9ybSBkcmFmdCBhY3Rpb24gZm9yIGNoZWNrcwogICAgICAgICAgICAgICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCggJ1RpY2tldDo6RnJvbnRlbmQ6OicgLiAkRm9ybURyYWZ0LT57QWN0aW9ufSApOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgYWN0aW9uIGlzIGFsbG93ZWQgYXMgcGVyIEFDTHMKICAgICAgICAgICAgICAgIGlmICggJEFjbEFjdGlvbkxvb2t1cHsgJEZvcm1EcmFmdC0+e0FjdGlvbn0gfSAmJiBJc0hhc2hSZWZXaXRoRGF0YSgkQ29uZmlnKSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyB0aWNrZXQgbG9jayBjaGVjawogICAgICAgICAgICAgICAgICAgICMgICBOT1RFOiBvd25lciBzdGF0dXMgb3ZlcnJ1bGVzIHBlcm1pc3Npb24gY2hlY2sgaW4gdGhpcyBjYXNlCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnLT57UmVxdWlyZWRMb2NrfSAmJiAkVGlja2V0T2JqZWN0LT5UaWNrZXRMb2NrR2V0KCBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSApICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkQWNjZXNzT2sgPSAkVGlja2V0T2JqZWN0LT5Pd25lckNoZWNrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPd25lcklEICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISRBY2Nlc3NPayApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRSZXNwb25zZXtFcnJvcn0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoIlNvcnJ5LCB5b3UgbmVlZCB0byBiZSB0aGUgdGlja2V0IG93bmVyIHRvIHBlcmZvcm0gdGhpcyBhY3Rpb24uIik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgcGVybWlzc2lvbiBjaGVjawogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRDb25maWctPntQZXJtaXNzaW9ufSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRBY2Nlc3NPayA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgPT4gJENvbmZpZy0+e1Blcm1pc3Npb259LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dObyAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISRBY2Nlc3NPayApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUmVzcG9uc2V7RXJyb3J9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCJObyBwZXJtaXNzaW9uLiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoICEkUmVzcG9uc2V7RXJyb3J9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkUmVzcG9uc2V7U3VjY2Vzc30gPSAkRm9ybURyYWZ0T2JqZWN0LT5Gb3JtRHJhZnREZWxldGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtRHJhZnRJRCA9PiAkRm9ybURyYWZ0SUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RJRCAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkUmVzcG9uc2V7RXJyb3J9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCJObyBwZXJtaXNzaW9uLiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFJlc3BvbnNle0Vycm9yfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgiQ291bGQgbm90IGRlbGV0ZSBmb3JtIGRyYWZ0LiIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUmVzcG9uc2V7RXJyb3J9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCJNaXNzaW5nIEZvcm1EcmFmdElEISIpOwogICAgICAgIH0KCiAgICAgICAgIyBidWlsZCBKU09OIG91dHB1dAogICAgICAgIG15ICRKU09OID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSgKICAgICAgICAgICAgRGF0YSA9PiBcJVJlc3BvbnNlLAogICAgICAgICk7CgogICAgICAgICMgc2VuZCBKU09OIHJlc3BvbnNlCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9qc29uJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEpTT04sCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0xvYWRXaWRnZXQnICkgewogICAgICAgIG15ICRFbGVtZW50SUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRWxlbWVudElEJyApOwogICAgICAgIG15ICRDb25maWc7CiAgICAgICAgV0lER0VUOgogICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7ICRTZWxmLT57RGlzcGxheVNldHRpbmdzfS0+e1dpZGdldHN9IC8vIHt9IH0gKSB7CiAgICAgICAgICAgIGlmICggJEVsZW1lbnRJRCBlcSAnQXN5bmNfJyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJEtleSkgKSB7CiAgICAgICAgICAgICAgICAkQ29uZmlnID0gJFNlbGYtPntEaXNwbGF5U2V0dGluZ3N9LT57V2lkZ2V0c30tPnskS2V5fTsKICAgICAgICAgICAgICAgIGxhc3QgV0lER0VUOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICgkQ29uZmlnKSB7CiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gZXZhbCB7ICRNYWluT2JqZWN0LT5SZXF1aXJlKCAkQ29uZmlnLT57TW9kdWxlfSApIH07CiAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2Fubm90IGxvYWQgJENvbmZpZy0+e01vZHVsZX06ICRAIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnJywKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBteSAkTW9kdWxlID0gZXZhbCB7ICRDb25maWctPntNb2R1bGV9LT5uZXcoICV7JFNlbGZ9ICkgfTsKICAgICAgICAgICAgaWYgKCAhJE1vZHVsZSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIm5ldygpIG9mIFdpZGdldCBtb2R1bGUgJENvbmZpZy0+e01vZHVsZX0gbm90IHN1Y2Nlc3NmdWwhIiwKCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbXkgJFdpZGdldE91dHB1dCA9ICRNb2R1bGUtPlJ1bigKICAgICAgICAgICAgICAgIFRpY2tldCAgICA9PiBcJVRpY2tldCwKICAgICAgICAgICAgICAgIEFjbEFjdGlvbiA9PiBcJUFjbEFjdGlvbiwKICAgICAgICAgICAgICAgIENvbmZpZyAgICA9PiAkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRXaWRnZXRPdXRwdXQtPntPdXRwdXR9IC8vICcgJywKICAgICAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENoYXJzZXQgICAgID0+ICd1dGYtOCcsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2Fubm90IGxvY2F0ZSBtb2R1bGUgZm9yIEVsZW1lbnRJRCAkRWxlbWVudElEIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICcnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIG1hcmsgc2hvd24gYXJ0aWNsZSBhcyBzZWVuCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnTWFya0FzU2VlbicgKSB7CiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAxOwoKICAgICAgICBteSAkSXNBcnRpY2xlRGVsZXRlZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGVGZWF0dXJlcycpLT5Jc0FydGljbGVEZWxldGVkKAogICAgICAgICAgICBBcnRpY2xlSUQgPT4gJFNlbGYtPntBcnRpY2xlSUR9LAogICAgICAgICk7CgogICAgICAgIGlmICgkSXNBcnRpY2xlRGVsZXRlZCkgewogICAgICAgICAgICAkU3VjY2VzcyA9IDI7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAjIGFsd2F5cyBzaG93IGFyY2hpdmVkIHRpY2tldHMgYXMgc2VlbgogICAgICAgICAgICBpZiAoICRUaWNrZXR7QXJjaGl2ZUZsYWd9IG5lICd5JyApIHsKICAgICAgICAgICAgICAgICRTdWNjZXNzID0gJFNlbGYtPl9BcnRpY2xlSXRlbVNlZW4oCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIEFydGljbGVJRCA9PiAkU2VsZi0+e0FydGljbGVJRH0KICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJFN1Y2Nlc3MsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBhcnRpY2xlIHVwZGF0ZQogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FydGljbGVVcGRhdGUnICkgewogICAgICAgIG15ICRDb3VudCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb3VudCcgKTsKCiAgICAgICAgbXkgJEFydGljbGVCYWNrZW5kT2JqZWN0ID0gJEFydGljbGVPYmplY3QtPkJhY2tlbmRGb3JBcnRpY2xlKAogICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICBBcnRpY2xlSUQgICAgICAgICAgID0+ICRTZWxmLT57QXJ0aWNsZUlEfSwKICAgICAgICAgICAgU2hvd0RlbGV0ZWRBcnRpY2xlcyA9PiAkU2VsZi0+e1Nob3dEZWxldGVkQXJ0aWNsZXN9CiAgICAgICAgKTsKCiAgICAgICAgbXkgJUFydGljbGUgPSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVHZXQoCiAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgIEFydGljbGVJRCAgICAgPT4gJFNlbGYtPntBcnRpY2xlSUR9LAogICAgICAgICAgICBSZWFsTmFtZXMgICAgID0+IDEsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMCwKICAgICAgICApOwogICAgICAgICRBcnRpY2xle0NvdW50fSA9ICRDb3VudDsKCiAgICAgICAgIyBHZXQgYXR0YWNobWVudCBpbmRleCAoZXhjbHVkaW5nIGJvZHkgYXR0YWNobWVudHMpLgogICAgICAgIG15ICVBdG1JbmRleCA9ICRBcnRpY2xlQmFja2VuZE9iamVjdC0+QXJ0aWNsZUF0dGFjaG1lbnRJbmRleCgKICAgICAgICAgICAgQXJ0aWNsZUlEID0+ICRTZWxmLT57QXJ0aWNsZUlEfSwKICAgICAgICAgICAgJXsgJFNlbGYtPntFeGNsdWRlQXR0YWNobWVudHN9IH0sCiAgICAgICAgKTsKICAgICAgICAkQXJ0aWNsZXtBdG1zfSA9IFwlQXRtSW5kZXg7CgogICAgICAgICMgZmV0Y2ggYWxsIHN0ZC4gdGVtcGxhdGVzCiAgICAgICAgbXkgJVN0YW5kYXJkVGVtcGxhdGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyktPlF1ZXVlU3RhbmRhcmRUZW1wbGF0ZU1lbWJlckxpc3QoCiAgICAgICAgICAgIFF1ZXVlSUQgICAgICAgPT4gJFRpY2tldHtRdWV1ZUlEfSwKICAgICAgICAgICAgVGVtcGxhdGVUeXBlcyA9PiAxLAogICAgICAgICAgICBWYWxpZCAgICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEFydGljbGVXaWRnZXRzSFRNTCA9ICRTZWxmLT5fQXJ0aWNsZUl0ZW0oCiAgICAgICAgICAgIFRpY2tldCAgICAgICAgICAgID0+IFwlVGlja2V0LAogICAgICAgICAgICBBcnRpY2xlICAgICAgICAgICA9PiBcJUFydGljbGUsCiAgICAgICAgICAgIEFjbEFjdGlvbiAgICAgICAgID0+IFwlQWNsQWN0aW9uLAogICAgICAgICAgICBTdGFuZGFyZFJlc3BvbnNlcyA9PiAkU3RhbmRhcmRUZW1wbGF0ZXN7QW5zd2VyfSwKICAgICAgICAgICAgU3RhbmRhcmRGb3J3YXJkcyAgPT4gJFN0YW5kYXJkVGVtcGxhdGVze0ZvcndhcmR9LAogICAgICAgICAgICBUeXBlICAgICAgICAgICAgICA9PiAnT25Mb2FkJywKICAgICAgICApOwoKICAgICAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgS2V5ICAgPT4gJ0FydGljbGVJRHMnLAogICAgICAgICAgICBWYWx1ZSA9PiBbICRTZWxmLT57QXJ0aWNsZUlEfSBdLAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnTWVudUl0ZW1zJywKICAgICAgICAgICAgVmFsdWUgPT4gJFNlbGYtPntNZW51SXRlbXN9LAogICAgICAgICk7CgogICAgICAgIG15ICRDb250ZW50ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50VGlja2V0Wm9vbScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlVGlja2V0LAogICAgICAgICAgICAgICAgJUFydGljbGUsCiAgICAgICAgICAgICAgICAlQWNsQWN0aW9uLAogICAgICAgICAgICAgICAgQXJ0aWNsZVdpZGdldHNIVE1MID0+ICRBcnRpY2xlV2lkZ2V0c0hUTUwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQUpBWCA9PiAxLAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJENvbnRlbnQgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ2FuXCd0IGdldCBmb3IgQXJ0aWNsZUlEICVzIScsICRTZWxmLT57QXJ0aWNsZUlEfSApLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENoYXJzZXQgICAgID0+ICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRDb250ZW50LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkVXNlck9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CiAgICBteSAkU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpOwoKICAgICMgd3JpdGUgYXJ0aWNsZSBmaWx0ZXIgc2V0dGluZ3MgdG8gc2Vzc2lvbgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FydGljbGVGaWx0ZXJTZXQnICkgewoKICAgICAgICAjIGdldCBwYXJhbXMKICAgICAgICBteSAkVGlja2V0SUQgICAgICAgICAgICAgICAgICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVGlja2V0SUQnICk7CiAgICAgICAgbXkgJFNhdmVEZWZhdWx0cyAgICAgICAgICAgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NhdmVEZWZhdWx0cycgKTsKICAgICAgICBteSBAQ29tbXVuaWNhdGlvbkNoYW5uZWxGaWx0ZXJJRHMgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnQ29tbXVuaWNhdGlvbkNoYW5uZWxGaWx0ZXInICk7CiAgICAgICAgbXkgJEN1c3RvbWVyVmlzaWJpbGl0eSAgICAgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0N1c3RvbWVyVmlzaWJpbGl0eUZpbHRlcicgKTsKICAgICAgICBteSBAQXJ0aWNsZVNlbmRlclR5cGVGaWx0ZXJJRHMgICAgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnQXJ0aWNsZVNlbmRlclR5cGVGaWx0ZXInICk7CgogICAgICAgICMgYnVpbGQgc2Vzc2lvbiBzdHJpbmcKICAgICAgICBteSAkU2Vzc2lvblN0cmluZyA9ICcnOwogICAgICAgIGlmIChAQ29tbXVuaWNhdGlvbkNoYW5uZWxGaWx0ZXJJRHMpIHsKICAgICAgICAgICAgJFNlc3Npb25TdHJpbmcgLj0gJ0NvbW11bmljYXRpb25DaGFubmVsRmlsdGVyPCc7CiAgICAgICAgICAgICRTZXNzaW9uU3RyaW5nIC49IGpvaW4gJywnLCBAQ29tbXVuaWNhdGlvbkNoYW5uZWxGaWx0ZXJJRHM7CiAgICAgICAgICAgICRTZXNzaW9uU3RyaW5nIC49ICc+JzsKICAgICAgICB9CiAgICAgICAgaWYgKCBkZWZpbmVkICRDdXN0b21lclZpc2liaWxpdHkgJiYgJEN1c3RvbWVyVmlzaWJpbGl0eSAhPSAyICkgewogICAgICAgICAgICAkU2Vzc2lvblN0cmluZyAuPSAiQ3VzdG9tZXJWaXNpYmlsaXR5RmlsdGVyPCRDdXN0b21lclZpc2liaWxpdHk+IjsKICAgICAgICB9CiAgICAgICAgaWYgKEBBcnRpY2xlU2VuZGVyVHlwZUZpbHRlcklEcykgewogICAgICAgICAgICAkU2Vzc2lvblN0cmluZyAuPSAnQXJ0aWNsZVNlbmRlclR5cGVGaWx0ZXI8JzsKICAgICAgICAgICAgJFNlc3Npb25TdHJpbmcgLj0gam9pbiAnLCcsIEBBcnRpY2xlU2VuZGVyVHlwZUZpbHRlcklEczsKICAgICAgICAgICAgJFNlc3Npb25TdHJpbmcgLj0gJz4nOwogICAgICAgIH0KCiAgICAgICAgIyB3cml0ZSB0aGUgc2Vzc2lvbgoKICAgICAgICAjIHNhdmUgZGVmYXVsdCBmaWx0ZXIgc2V0dGluZ3MgdG8gdXNlciBwcmVmZXJlbmNlcwogICAgICAgIGlmICgkU2F2ZURlZmF1bHRzKSB7CiAgICAgICAgICAgICRVc2VyT2JqZWN0LT5TZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgPT4gJ0FydGljbGVGaWx0ZXJEZWZhdWx0JywKICAgICAgICAgICAgICAgIFZhbHVlICA9PiAkU2Vzc2lvblN0cmluZywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgICAgPT4gJ0FydGljbGVGaWx0ZXJEZWZhdWx0JywKICAgICAgICAgICAgICAgIFZhbHVlICAgICA9PiAkU2Vzc2lvblN0cmluZywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgdHVybiBvZmYgZmlsdGVyIGV4cGxpY2l0bHkgZm9yIHRoaXMgdGlja2V0CiAgICAgICAgaWYgKCAkU2Vzc2lvblN0cmluZyBlcSAnJyApIHsKICAgICAgICAgICAgJFNlc3Npb25TdHJpbmcgPSAnb2ZmJzsKICAgICAgICB9CgogICAgICAgICMgdXBkYXRlIHRoZSBzZXNzaW9uCiAgICAgICAgbXkgJFVwZGF0ZSA9ICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAiQXJ0aWNsZUZpbHRlciRUaWNrZXRJRCIsCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkU2Vzc2lvblN0cmluZywKICAgICAgICApOwoKICAgICAgICAjIGJ1aWxkIEpTT04gb3V0cHV0CiAgICAgICAgbXkgJEpTT04gPSAnJzsKICAgICAgICBpZiAoJFVwZGF0ZSkgewogICAgICAgICAgICAkSlNPTiA9ICRMYXlvdXRPYmplY3QtPkpTT05FbmNvZGUoCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnQXJ0aWNsZSBmaWx0ZXIgc2V0dGluZ3Mgd2VyZSBzYXZlZC4nKSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHNlbmQgSlNPTiByZXNwb25zZQogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbicsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRKU09OLAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgd3JpdGUgYXJ0aWNsZSBmaWx0ZXIgc2V0dGluZ3MgdG8gc2Vzc2lvbgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0V2ZW5UeXBlRmlsdGVyU2V0JyApIHsKCiAgICAgICAgIyBnZXQgcGFyYW1zCiAgICAgICAgbXkgJFRpY2tldElEICAgICAgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdUaWNrZXRJRCcgKTsKICAgICAgICBteSAkU2F2ZURlZmF1bHRzICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NhdmVEZWZhdWx0cycgKTsKICAgICAgICBteSBARXZlbnRUeXBlRmlsdGVySURzID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ0V2ZW50VHlwZUZpbHRlcicgKTsKCiAgICAgICAgIyBidWlsZCBzZXNzaW9uIHN0cmluZwogICAgICAgIG15ICRTZXNzaW9uU3RyaW5nID0gJyc7CiAgICAgICAgaWYgKEBFdmVudFR5cGVGaWx0ZXJJRHMpIHsKICAgICAgICAgICAgJFNlc3Npb25TdHJpbmcgLj0gJ0V2ZW50VHlwZUZpbHRlcjwnOwogICAgICAgICAgICAkU2Vzc2lvblN0cmluZyAuPSBqb2luICcsJywgQEV2ZW50VHlwZUZpbHRlcklEczsKICAgICAgICAgICAgJFNlc3Npb25TdHJpbmcgLj0gJz4nOwogICAgICAgIH0KCiAgICAgICAgIyB3cml0ZSB0aGUgc2Vzc2lvbgoKICAgICAgICAjIHNhdmUgZGVmYXVsdCBmaWx0ZXIgc2V0dGluZ3MgdG8gdXNlciBwcmVmZXJlbmNlcwogICAgICAgIGlmICgkU2F2ZURlZmF1bHRzKSB7CiAgICAgICAgICAgICRVc2VyT2JqZWN0LT5TZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgPT4gJ0V2ZW50VHlwZUZpbHRlckRlZmF1bHQnLAogICAgICAgICAgICAgICAgVmFsdWUgID0+ICRTZXNzaW9uU3RyaW5nLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2Vzc2lvbk9iamVjdC0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICAgICAgICAgIEtleSAgICAgICA9PiAnRXZlbnRUeXBlRmlsdGVyRGVmYXVsdCcsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFNlc3Npb25TdHJpbmcsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHR1cm4gb2ZmIGZpbHRlciBleHBsaWNpdGx5IGZvciB0aGlzIHRpY2tldAogICAgICAgIGlmICggJFNlc3Npb25TdHJpbmcgZXEgJycgKSB7CiAgICAgICAgICAgICRTZXNzaW9uU3RyaW5nID0gJ29mZic7CiAgICAgICAgfQoKICAgICAgICAjIHVwZGF0ZSB0aGUgc2Vzc2lvbgogICAgICAgIG15ICRVcGRhdGUgPSAkU2Vzc2lvbk9iamVjdC0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gIkV2ZW50VHlwZUZpbHRlciRUaWNrZXRJRCIsCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkU2Vzc2lvblN0cmluZywKICAgICAgICApOwoKICAgICAgICAjIGJ1aWxkIEpTT04gb3V0cHV0CiAgICAgICAgbXkgJEpTT04gPSAnJzsKICAgICAgICBpZiAoJFVwZGF0ZSkgewogICAgICAgICAgICAkSlNPTiA9ICRMYXlvdXRPYmplY3QtPkpTT05FbmNvZGUoCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnRXZlbnQgdHlwZSBmaWx0ZXIgc2V0dGluZ3Mgd2VyZSBzYXZlZC4nKSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHNlbmQgSlNPTiByZXNwb25zZQogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbicsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRKU09OLAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgYXJ0aWNsZSBmaWx0ZXIgaXMgYWN0aXZhdGVkIGluIHN5c2NvbmZpZwogICAgaWYgKCAkU2VsZi0+e0FydGljbGVGaWx0ZXJBY3RpdmV9ICkgewoKICAgICAgICAjIGdldCBhcnRpY2xlIGZpbHRlciBzZXR0aW5ncyBmcm9tIHNlc3Npb24gc3RyaW5nCiAgICAgICAgbXkgJEFydGljbGVGaWx0ZXJTZXNzaW9uU3RyaW5nID0gJFNlbGYtPntTZXNzaW9ufXsgJ0FydGljbGVGaWx0ZXInIC4gJFNlbGYtPntUaWNrZXRJRH0gfTsKCiAgICAgICAgIyBzZXQgYXJ0aWNsZSBmaWx0ZXIgZm9yIHRoaXMgdGlja2V0IGZyb20gdXNlciBwcmVmZXJlbmNlcwogICAgICAgIGlmICggISRBcnRpY2xlRmlsdGVyU2Vzc2lvblN0cmluZyApIHsKICAgICAgICAgICAgJEFydGljbGVGaWx0ZXJTZXNzaW9uU3RyaW5nID0gJFNlbGYtPntTZXNzaW9ufXtBcnRpY2xlRmlsdGVyRGVmYXVsdH07CiAgICAgICAgfQoKICAgICAgICAjIGRvIG5vdCB1c2UgZGVmYXVsdHMgZm9yIHRoaXMgdGlja2V0IGlmIGZpbHRlciB3YXMgZXhwbGljaXRseSB0dXJuZWQgb2ZmCiAgICAgICAgZWxzaWYgKCAkQXJ0aWNsZUZpbHRlclNlc3Npb25TdHJpbmcgZXEgJ29mZicgKSB7CiAgICAgICAgICAgICRBcnRpY2xlRmlsdGVyU2Vzc2lvblN0cmluZyA9ICcnOwogICAgICAgIH0KCiAgICAgICAgIyBleHRyYWN0IENvbW11bmljYXRpb25DaGFubmVscwogICAgICAgIGlmICgKICAgICAgICAgICAgJEFydGljbGVGaWx0ZXJTZXNzaW9uU3RyaW5nCiAgICAgICAgICAgICYmICRBcnRpY2xlRmlsdGVyU2Vzc2lvblN0cmluZyA9fiBteyBDb21tdW5pY2F0aW9uQ2hhbm5lbEZpbHRlciA8ICggW148Pl0rICkgPiB9eG1zCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15IEBJRHMgPSBzcGxpdCAvLC8sICQxOwogICAgICAgICAgICAkU2VsZi0+e0FydGljbGVGaWx0ZXJ9LT57Q29tbXVuaWNhdGlvbkNoYW5uZWxJRH0gPSBcQElEczsKICAgICAgICB9CgogICAgICAgICMgZXh0cmFjdCBDdXN0b21lclZpc2liaWxpdHkKICAgICAgICBpZiAoCiAgICAgICAgICAgICRBcnRpY2xlRmlsdGVyU2Vzc2lvblN0cmluZwogICAgICAgICAgICAmJiAkQXJ0aWNsZUZpbHRlclNlc3Npb25TdHJpbmcgPX4gbXsgQ3VzdG9tZXJWaXNpYmlsaXR5RmlsdGVyIDwgKCBbXjw+XSsgKSA+IH14bXMKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJFNlbGYtPntBcnRpY2xlRmlsdGVyfS0+e0N1c3RvbWVyVmlzaWJpbGl0eX0gPSAkMTsKICAgICAgICB9CgogICAgICAgICMgZXh0cmFjdCBBcnRpY2xlU2VuZGVyVHlwZUlEcwogICAgICAgIGlmICgKICAgICAgICAgICAgJEFydGljbGVGaWx0ZXJTZXNzaW9uU3RyaW5nCiAgICAgICAgICAgICYmICRBcnRpY2xlRmlsdGVyU2Vzc2lvblN0cmluZyA9fiBteyBBcnRpY2xlU2VuZGVyVHlwZUZpbHRlciA8ICggW148Pl0rICkgPiB9eG1zCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15IEBJRHMgPSBzcGxpdCAvLC8sICQxOwogICAgICAgICAgICAkU2VsZi0+e0FydGljbGVGaWx0ZXJ9LT57QXJ0aWNsZVNlbmRlclR5cGVJRH0gPSBcQElEczsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGV2ZW50IHR5cGUgZmlsdGVyIHNldHRpbmdzIGZyb20gc2Vzc2lvbiBzdHJpbmcKICAgICAgICBteSAkRXZlbnRUeXBlRmlsdGVyU2Vzc2lvblN0cmluZyA9ICRTZWxmLT57ICdFdmVudFR5cGVGaWx0ZXInIC4gJFNlbGYtPntUaWNrZXRJRH0gfTsKCiAgICAgICAgIyBzZXQgYXJ0aWNsZSBmaWx0ZXIgZm9yIHRoaXMgdGlja2V0IGZyb20gdXNlciBwcmVmZXJlbmNlcwogICAgICAgIGlmICggISRFdmVudFR5cGVGaWx0ZXJTZXNzaW9uU3RyaW5nICkgewogICAgICAgICAgICAkRXZlbnRUeXBlRmlsdGVyU2Vzc2lvblN0cmluZyA9ICRTZWxmLT57RXZlbnRUeXBlRmlsdGVyRGVmYXVsdH07CiAgICAgICAgfQoKICAgICAgICAjIGRvIG5vdCB1c2UgZGVmYXVsdHMgZm9yIHRoaXMgdGlja2V0IGlmIGZpbHRlciB3YXMgZXhwbGljaXRseSB0dXJuZWQgb2ZmCiAgICAgICAgZWxzaWYgKCAkRXZlbnRUeXBlRmlsdGVyU2Vzc2lvblN0cmluZyBlcSAnb2ZmJyApIHsKICAgICAgICAgICAgJEV2ZW50VHlwZUZpbHRlclNlc3Npb25TdHJpbmcgPSAnJzsKICAgICAgICB9CgogICAgICAgICMgU2V0IGFydGljbGUgZmlsdGVyIHdpdGggdmFsdWUgaWYgaXQgZXhpc3RzLgogICAgICAgIGlmICgKICAgICAgICAgICAgJEV2ZW50VHlwZUZpbHRlclNlc3Npb25TdHJpbmcKICAgICAgICAgICAgJiYgJEV2ZW50VHlwZUZpbHRlclNlc3Npb25TdHJpbmcgPX4gbXsgRXZlbnRUeXBlRmlsdGVyIDwgKCBbXjw+XSsgKSA+IH14bXMKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgQElEcyA9IHNwbGl0IC8sLywgJDE7CiAgICAgICAgICAgICRTZWxmLT57RXZlbnRUeXBlRmlsdGVyfS0+e0V2ZW50VHlwZUlEfSA9IFxASURzOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICBWYWx1ZSAgICA9PiAkVGlja2V0e1RpY2tldE51bWJlcn0sCiAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXR7VGlja2V0SUR9LAogICAgICAgICksCiAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAkU2VsZi0+TWFza0FnZW50Wm9vbSgKICAgICAgICAgICAgVGlja2V0ICAgID0+IFwlVGlja2V0LAogICAgICAgICAgICBBY2xBY3Rpb24gPT4gXCVBY2xBY3Rpb24KICAgICAgICApLAogICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKfQoKc3ViIE1hc2tBZ2VudFpvb20gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlVGlja2V0ICAgID0gJXsgJFBhcmFte1RpY2tldH0gfTsKICAgIG15ICVBY2xBY3Rpb24gPSAleyAkUGFyYW17QWNsQWN0aW9ufSB9OwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkVGlja2V0T2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKICAgIG15ICRBcnRpY2xlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpOwoKICAgICMgQ3JlYXRlIGEgbGlzdCBvZiBhcnRpY2xlIHNlbmRlciB0eXBlcyBmb3IgbG9va3VwCiAgICBteSAlQXJ0aWNsZVNlbmRlclR5cGVMaXN0ID0gJEFydGljbGVPYmplY3QtPkFydGljbGVTZW5kZXJUeXBlTGlzdCgpOwoKICAgICMgZWxzZSBzaG93IG5vcm1hbCB0aWNrZXQgem9vbSB2aWV3CiAgICAjIGZldGNoIGFsbCBtb3ZlIHF1ZXVlcwogICAgbXkgJU1vdmVRdWV1ZXMgPSAkVGlja2V0T2JqZWN0LT5Nb3ZlTGlzdCgKICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0e1RpY2tldElEfSwKICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgQWN0aW9uICAgPT4gJ0FnZW50VGlja2V0TW92ZScsCiAgICAgICAgVHlwZSAgICAgPT4gJ21vdmVfaW50bycsCiAgICApOwoKICAgICMgZmV0Y2ggYWxsIHN0ZC4gdGVtcGxhdGVzCiAgICBteSAlU3RhbmRhcmRUZW1wbGF0ZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKS0+UXVldWVTdGFuZGFyZFRlbXBsYXRlTWVtYmVyTGlzdCgKICAgICAgICBRdWV1ZUlEICAgICAgID0+ICRUaWNrZXR7UXVldWVJRH0sCiAgICAgICAgVGVtcGxhdGVUeXBlcyA9PiAxLAogICAgKTsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdlbmVyYXRlIHNob3duIGFydGljbGVzCiAgICBteSAkTGltaXQgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Ok1heEFydGljbGVzUGVyUGFnZScpOwoKICAgIG15ICRPcmRlciA9ICRTZWxmLT57Wm9vbUV4cGFuZFNvcnR9IGVxICdyZXZlcnNlJyA/ICdERVNDJyA6ICdBU0MnOwogICAgbXkgJFBhZ2U7CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBnZXQgYXJ0aWNsZSBwYWdlCiAgICBteSAkQXJ0aWNsZVBhZ2UgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQXJ0aWNsZVBhZ2UnICk7CgogICAgbXkgJElzVmlzaWJsZUZvckN1c3RvbWVyOwogICAgaWYgKCBkZWZpbmVkICRTZWxmLT57QXJ0aWNsZUZpbHRlcn0tPntDdXN0b21lclZpc2liaWxpdHl9ICkgewogICAgICAgICRJc1Zpc2libGVGb3JDdXN0b21lciA9ICRTZWxmLT57QXJ0aWNsZUZpbHRlcn0tPntDdXN0b21lclZpc2liaWxpdHl9OwogICAgfQoKICAgICMgR2V0IGFsbCBhcnRpY2xlcy4KICAgIG15IEBBcnRpY2xlQm94QWxsID0gJEFydGljbGVPYmplY3QtPkFydGljbGVMaXN0KAogICAgICAgIFRpY2tldElEICAgICAgICAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+ICRJc1Zpc2libGVGb3JDdXN0b21lciwKICAgICAgICBTaG93RGVsZXRlZEFydGljbGVzICA9PiAkU2VsZi0+e1Nob3dEZWxldGVkQXJ0aWNsZXN9CiAgICApOwoKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e0FydGljbGVGaWx0ZXJ9LT57Q29tbXVuaWNhdGlvbkNoYW5uZWxJRH0gKSApIHsKICAgICAgICBteSAlRmlsdGVyID0gbWFwIHsgJF8gPT4gMSB9IEB7ICRTZWxmLT57QXJ0aWNsZUZpbHRlcn0tPntDb21tdW5pY2F0aW9uQ2hhbm5lbElEfSB9OwoKICAgICAgICBAQXJ0aWNsZUJveEFsbCA9IGdyZXAgeyAkRmlsdGVyeyAkXy0+e0NvbW11bmljYXRpb25DaGFubmVsSUR9IH0gfSBAQXJ0aWNsZUJveEFsbDsKICAgIH0KCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFNlbGYtPntBcnRpY2xlRmlsdGVyfS0+e0FydGljbGVTZW5kZXJUeXBlSUR9ICkgKSB7CiAgICAgICAgbXkgJUZpbHRlciA9IG1hcCB7ICRfID0+IDEgfSBAeyAkU2VsZi0+e0FydGljbGVGaWx0ZXJ9LT57QXJ0aWNsZVNlbmRlclR5cGVJRH0gfTsKCiAgICAgICAgQEFydGljbGVCb3hBbGwgPSBncmVwIHsgJEZpbHRlcnsgJF8tPntTZW5kZXJUeXBlSUR9IH0gfSBAQXJ0aWNsZUJveEFsbDsKICAgIH0KCiAgICBpZiAoICRPcmRlciBlcSAnREVTQycgKSB7CiAgICAgICAgQEFydGljbGVCb3hBbGwgPSByZXZlcnNlIEBBcnRpY2xlQm94QWxsOwogICAgfQoKICAgIG15ICVBcnRpY2xlRmxhZ3MgPSAkQXJ0aWNsZU9iamVjdC0+QXJ0aWNsZUZsYWdzT2ZUaWNrZXRHZXQoCiAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldHtUaWNrZXRJRH0sCiAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIG15ICRBcnRpY2xlSUQ7CgogICAgaWYgKCAkU2VsZi0+e0FydGljbGVJRH0gKSB7CgogICAgICAgIG15IEBBcnRpY2xlSURzID0gbWFwIHsgJF8tPntBcnRpY2xlSUR9IH0gQEFydGljbGVCb3hBbGw7CgogICAgICAgIG15ICVBcnRpY2xlSW5kZXg7CiAgICAgICAgQEFydGljbGVJbmRleHtAQXJ0aWNsZUlEc30gPSAoIDAgLi4gJCNBcnRpY2xlSURzICk7CgogICAgICAgIG15ICRJbmRleCA9ICRBcnRpY2xlSW5kZXh7ICRTZWxmLT57QXJ0aWNsZUlEfSB9OwogICAgICAgICRJbmRleCAvLz0gMDsKICAgICAgICAkUGFnZSA9IGludCggJEluZGV4IC8gJExpbWl0ICkgKyAxOwogICAgfQogICAgZWxzaWYgKCRBcnRpY2xlUGFnZSkgewogICAgICAgICRQYWdlID0gJEFydGljbGVQYWdlOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgRmluZCBsYXRlc3Qgbm90IHNlZW4gYXJ0aWNsZS4KICAgICAgICBBUlRJQ0xFOgogICAgICAgIGZvciBteSAkQXJ0aWNsZSAoQEFydGljbGVCb3hBbGwpIHsKCiAgICAgICAgICAgICMgSWdub3JlIHN5c3RlbSBzZW5kZXIgdHlwZS4KICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6Ok5ld0FydGljbGVJZ25vcmVTeXN0ZW1TZW5kZXInKQogICAgICAgICAgICAgICAgJiYgJEFydGljbGVTZW5kZXJUeXBlTGlzdHsgJEFydGljbGUtPntTZW5kZXJUeXBlSUR9IH0gZXEgJ3N5c3RlbScKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmV4dCBBUlRJQ0xFOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IEFSVElDTEUgaWYgJEFydGljbGVGbGFnc3sgJEFydGljbGUtPntBcnRpY2xlSUR9IH0tPntTZWVufTsKICAgICAgICAgICAgJEFydGljbGVJRCA9ICRBcnRpY2xlLT57QXJ0aWNsZUlEfTsKCiAgICAgICAgICAgIG15IEBBcnRpY2xlSURzID0gbWFwIHsgJF8tPntBcnRpY2xlSUR9IH0gQEFydGljbGVCb3hBbGw7CgogICAgICAgICAgICBteSAlQXJ0aWNsZUluZGV4OwogICAgICAgICAgICBAQXJ0aWNsZUluZGV4e0BBcnRpY2xlSURzfSA9ICggMCAuLiAkI0FydGljbGVJRHMgKTsKCiAgICAgICAgICAgIG15ICRJbmRleCA9ICRBcnRpY2xlSW5kZXh7JEFydGljbGVJRH07CiAgICAgICAgICAgICRQYWdlID0gaW50KCAkSW5kZXggLyAkTGltaXQgKSArIDE7CgogICAgICAgICAgICBsYXN0IEFSVElDTEU7CiAgICAgICAgfQoKICAgICAgICBpZiAoICEkQXJ0aWNsZUlEICkgewogICAgICAgICAgICAkUGFnZSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgV2UgbmVlZCB0byBmaW5kIG91dCB3aGV0aGVyIHBhZ2luYXRpb24gaXMgYWN0dWFsbHkgbmVjZXNzYXJ5LgogICAgIyBUaGUgZWFzaWVzdCB3YXkgd291bGQgYmUgY291bnQgdGhlIGFydGljbGVzLCBidXQgdGhhdCB3b3VsZCBzbG93CiAgICAjIGRvd24gdGhlIG1vc3QgY29tbW9uIGNhc2UgKGZld2VyIGFydGljbGVzIHRoYW4gJExpbWl0IGluIHRoZSB0aWNrZXQpLgogICAgIyBTbyBpbnN0ZWFkIHdlIHVzZSB0aGUgZm9sbG93aW5nIHRyaWNrOgogICAgIyAxKSBpZiB0aGUgJFBhZ2UgPiAxLCB3ZSBuZWVkIHBhZ2luYXRpb24KICAgICMgMikgaWYgbm90LCByZXF1ZXN0ICRMaW1pdCArIDEgYXJ0aWNsZXMuIElmICRMaW1pdCArIDEgYXJlIGFjdHVhbGx5CiAgICAjICAgIHJldHVybmVkLCBwYWdpbmF0aW9uIGlzIG5lY2Vzc2FyeQogICAgbXkgJE5lZWRQYWdpbmF0aW9uOwoKICAgIG15IEBBcnRpY2xlQm94ID0gJFNlbGYtPl9BcnRpY2xlQm94R2V0KAogICAgICAgIFBhZ2UgICAgICAgICAgPT4gJFBhZ2UsCiAgICAgICAgQXJ0aWNsZUJveEFsbCA9PiBcQEFydGljbGVCb3hBbGwsCiAgICAgICAgTGltaXQgICAgICAgICA9PiAkTGltaXQsCiAgICApOwoKICAgIGlmICggIUBBcnRpY2xlQm94ICYmICRQYWdlID4gMSApIHsKCiAgICAgICAgIyBJZiB0aGUgcGFnZSBhcmd1bWVudCBpcyBwYXN0IHRoZSBhY3R1YWwgbnVtYmVyIG9mIHBhZ2VzLgogICAgICAgICMgVGhpcyBjYW4gaGFwcGVuIHdoZW4gYSBuZXcgYXJ0aWNsZSBmaWx0ZXIgd2FzIGFkZGVkLgogICAgICAgICMgVHJ5IHRvIGdldCByZXN1bHRzIGZvciB0aGUgMXN0IHBhZ2UuCgogICAgICAgIEBBcnRpY2xlQm94ID0gJFNlbGYtPl9BcnRpY2xlQm94R2V0KAogICAgICAgICAgICBQYWdlICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIEFydGljbGVCb3hBbGwgPT4gXEBBcnRpY2xlQm94QWxsLAogICAgICAgICAgICBMaW1pdCAgICAgICAgID0+ICRMaW1pdCwKICAgICAgICApOwogICAgfQoKICAgIGlmICggQEFydGljbGVCb3ggPiAkTGltaXQgKSB7CiAgICAgICAgcG9wIEBBcnRpY2xlQm94OwogICAgICAgICROZWVkUGFnaW5hdGlvbiA9IDE7CiAgICB9CiAgICBlbHNpZiAoICRQYWdlID09IDEgJiYgc2NhbGFyIEBBcnRpY2xlQm94QWxsIDw9ICRMaW1pdCApIHsKICAgICAgICAkTmVlZFBhZ2luYXRpb24gPSAwOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE5lZWRQYWdpbmF0aW9uID0gMTsKICAgIH0KCiAgICAkUGFnZSB8fD0gMTsKCiAgICBteSAkUGFnZXM7CiAgICBpZiAoJE5lZWRQYWdpbmF0aW9uKSB7CiAgICAgICAgJFBhZ2VzID0gY2VpbCggc2NhbGFyIEBBcnRpY2xlQm94QWxsIC8gJExpbWl0ICk7CiAgICB9CgogICAgbXkgJEFydGljbGVJREZvdW5kID0gMDsKICAgIEFSVElDTEU6CiAgICBmb3IgbXkgJEFydGljbGUgKEBBcnRpY2xlQm94KSB7CiAgICAgICAgbmV4dCBBUlRJQ0xFIGlmICEkU2VsZi0+e0FydGljbGVJRH07CiAgICAgICAgbmV4dCBBUlRJQ0xFIGlmICEkQXJ0aWNsZS0+e0FydGljbGVJRH07CiAgICAgICAgbmV4dCBBUlRJQ0xFIGlmICRTZWxmLT57QXJ0aWNsZUlEfSBuZSAkQXJ0aWNsZS0+e0FydGljbGVJRH07CgogICAgICAgICRBcnRpY2xlSURGb3VuZCA9IDE7CiAgICB9CgogICAgIyBnZXQgc2VsZWN0ZWQgb3IgbGFzdCBjdXN0b21lciBhcnRpY2xlCiAgICBpZiAoJEFydGljbGVJREZvdW5kKSB7CiAgICAgICAgJEFydGljbGVJRCA9ICRTZWxmLT57QXJ0aWNsZUlEfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIGlmICggISRBcnRpY2xlSUQgKSB7CiAgICAgICAgICAgIGlmIChAQXJ0aWNsZUJveCkgewoKICAgICAgICAgICAgICAgICMgc2V0IGZpcnN0IGxpc3RlZCBhcnRpY2xlIGFzIGZhbGxiYWNrCiAgICAgICAgICAgICAgICAkQXJ0aWNsZUlEID0gJEFydGljbGVCb3hbMF0tPntBcnRpY2xlSUR9OwoKICAgICAgICAgICAgICAgICMgc2V0IGxhc3QgY3VzdG9tZXIgYXJ0aWNsZSBhcyBzZWxlY3RlZCBhcnRpY2xlIHJlcGxhY2luZyBsYXN0IHNldAogICAgICAgICAgICAgICAgQVJUSUNMRVRNUDoKICAgICAgICAgICAgICAgIGZvciBteSAkQXJ0aWNsZVRtcCAoQEFydGljbGVCb3gpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRBcnRpY2xlU2VuZGVyVHlwZUxpc3R7ICRBcnRpY2xlVG1wLT57U2VuZGVyVHlwZUlEfSB9IGVxICdjdXN0b21lcicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRBcnRpY2xlSUQgPSAkQXJ0aWNsZVRtcC0+e0FydGljbGVJRH07CiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgQVJUSUNMRVRNUCBpZiAkU2VsZi0+e1pvb21FeHBhbmRTb3J0fSBlcSAncmV2ZXJzZSc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgZXhwYW5kIHZpZXcgaXMgdXNhYmxlIChvbmx5IGZvciBsZXNzIHRoZW4gNDAwIGFydGljbGUpCiAgICAjIGlmIHlvdSBoYXZlIG1vcmUgYXJ0aWNsZXMgaXMgZ29pbmcgdG8gYmUgc2xvdyBhbmQgbm90IHVzYWJsZQogICAgbXkgJEFydGljbGVNYXhMaW1pdCA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TWF4QXJ0aWNsZXNab29tRXhwYW5kJykKICAgICAgICAvLyA0MDA7CiAgICBpZiAoICRTZWxmLT57Wm9vbUV4cGFuZH0gJiYgJCNBcnRpY2xlQm94ID4gJEFydGljbGVNYXhMaW1pdCApIHsKICAgICAgICAkU2VsZi0+e1pvb21FeHBhbmR9ID0gMDsKICAgIH0KCiAgICAjIGdldCBzaG93biBhcnRpY2xlKHMpCiAgICBteSBAQXJ0aWNsZUJveFNob3duOwogICAgaWYgKCAhJFNlbGYtPntab29tRXhwYW5kfSApIHsKICAgICAgICBBUlRJQ0xFQk9YOgogICAgICAgIGZvciBteSAkQXJ0aWNsZVRtcCAoQEFydGljbGVCb3gpIHsKICAgICAgICAgICAgaWYgKCAkQXJ0aWNsZUlEIGVxICRBcnRpY2xlVG1wLT57QXJ0aWNsZUlEfSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQEFydGljbGVCb3hTaG93biwgJEFydGljbGVUbXA7CiAgICAgICAgICAgICAgICBsYXN0IEFSVElDTEVCT1g7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBAQXJ0aWNsZUJveFNob3duID0gQEFydGljbGVCb3g7CiAgICB9CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGFnZSBkZXNpZ24KICAgICRUaWNrZXR7QWdlfSA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyQWdlKAogICAgICAgIEFnZSAgID0+ICRUaWNrZXR7QWdlfSwKICAgICAgICBTcGFjZSA9PiAnICcKICAgICk7CgogICAgbXkgJE1haW5PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwoKICAgIG15ICVXaWRnZXRzOwogICAgbXkgJUFzeW5jV2lkZ2V0QWN0aW9uczsKICAgIFdJREdFVDoKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7ICRTZWxmLT57RGlzcGxheVNldHRpbmdzfS0+e1dpZGdldHN9IC8vIHt9IH0gKSB7CiAgICAgICAgbXkgJENvbmZpZyA9ICRTZWxmLT57RGlzcGxheVNldHRpbmdzfS0+e1dpZGdldHN9LT57JEtleX07CgogICAgICAgIGlmICggJENvbmZpZy0+e0FzeW5jfSApIHsKICAgICAgICAgICAgaWYgKCAhJENvbmZpZy0+e0xvY2F0aW9ufSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBjb25maWd1cmF0aW9uIGZvciAkQ29uZmlnLT57TW9kdWxlfSBtdXN0IGNvbnRhaW4gYSBMb2NhdGlvbiwgYmVjYXVzZSBpdCBpcyBtYXJrZWQgYXMgQXN5bmMuIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBuZXh0IFdJREdFVDsKICAgICAgICAgICAgfQogICAgICAgICAgICBteSAkRWxlbWVudElEID0gJ0FzeW5jXycgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRLZXkpOwogICAgICAgICAgICBwdXNoIEB7ICRXaWRnZXRzeyAkQ29uZmlnLT57TG9jYXRpb259IH0gfSwgewogICAgICAgICAgICAgICAgQXN5bmMgPT4gMSwKICAgICAgICAgICAgICAgIFJhbmsgID0+ICRDb25maWctPntSYW5rfSB8fCAkS2V5LAogICAgICAgICAgICAgICAgJVRpY2tldCwKICAgICAgICAgICAgICAgIEVsZW1lbnRJRCA9PiAkRWxlbWVudElELAogICAgICAgICAgICB9OwogICAgICAgICAgICAkQXN5bmNXaWRnZXRBY3Rpb25zeyRFbGVtZW50SUR9ID0gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07U3ViYWN0aW9uPUxvYWRXaWRnZXQ7IgogICAgICAgICAgICAgICAgLiAiVGlja2V0SUQ9JFNlbGYtPntUaWNrZXRJRH07RWxlbWVudElEPSRFbGVtZW50SUQiOwogICAgICAgICAgICBuZXh0IFdJREdFVDsKICAgICAgICB9CiAgICAgICAgbXkgJFN1Y2Nlc3MgPSBldmFsIHsgJE1haW5PYmplY3QtPlJlcXVpcmUoICRDb25maWctPntNb2R1bGV9ICkgfTsKCiAgICAgICAgbmV4dCBXSURHRVQgdW5sZXNzICRTdWNjZXNzOwoKICAgICAgICBteSAkTW9kdWxlID0gZXZhbCB7ICRDb25maWctPntNb2R1bGV9LT5uZXcoICRTZWxmLT4lKiApIH07CiAgICAgICAgaWYgKCAhJE1vZHVsZSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIm5ldygpIG9mIFdpZGdldCBtb2R1bGUgJENvbmZpZy0+e01vZHVsZX0gbm90IHN1Y2Nlc3NmdWwhIiwKCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IFdJREdFVDsKICAgICAgICB9CgogICAgICAgIG15ICRXaWRnZXRPdXRwdXQgPSAkTW9kdWxlLT5SdW4oCiAgICAgICAgICAgIFRpY2tldCAgICA9PiBcJVRpY2tldCwKICAgICAgICAgICAgQWNsQWN0aW9uID0+IFwlQWNsQWN0aW9uLAogICAgICAgICAgICBDb25maWcgICAgPT4gJENvbmZpZywKICAgICAgICApOwoKICAgICAgICBuZXh0IFdJREdFVCB1bmxlc3MgJFdpZGdldE91dHB1dDsKCiAgICAgICAgJFdpZGdldE91dHB1dC0+e1Jhbmt9IC8vPSAkS2V5OwogICAgICAgIG15ICRMb2NhdGlvbiA9ICRXaWRnZXRPdXRwdXQtPntMb2NhdGlvbn0gfHwgJENvbmZpZy0+e0xvY2F0aW9ufTsKICAgICAgICBwdXNoIEB7ICRXaWRnZXRzeyRMb2NhdGlvbn0gfSwgJFdpZGdldE91dHB1dDsKICAgIH0KICAgIGZvciBteSAkTG9jYXRpb24gKCBzb3J0IGtleXMgJVdpZGdldHMgKSB7CiAgICAgICAgJFBhcmFteyAkTG9jYXRpb24gLiAnV2lkZ2V0cycgfSA9IFsKICAgICAgICAgICAgc29ydCB7ICRhLT57UmFua30gY21wICRiLT57UmFua30gfSBAeyAkV2lkZ2V0c3skTG9jYXRpb259IH0KICAgICAgICBdOwogICAgfQogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdBc3luY1dpZGdldEFjdGlvbnMnLAogICAgICAgIFZhbHVlID0+IFwlQXN5bmNXaWRnZXRBY3Rpb25zLAogICAgKTsKCiAgICAjIHNldCBkaXNwbGF5IG9wdGlvbnMKICAgICRQYXJhbXtIb29rfSA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpIb29rJykgfHwgJ1RpY2tldCMnOwoKICAgICMgb25seSBzaG93IGFydGljbGUgdHJlZSBpZiBhcnRpY2xlcyBhcmUgcHJlc2VudCwKICAgICMgb3IgaWYgYSBmaWx0ZXIgaXMgc2V0IChzbyB0aGF0IHRoZSB1c2VyIGhhcyB0aGUgb3B0aW9uIHRvCiAgICAjIGRpc2FibGUgdGhlIGZpbHRlcikKICAgIGlmICggQEFydGljbGVCb3ggfHwgJFNlbGYtPntBcnRpY2xlRmlsdGVyfSApIHsKCiAgICAgICAgbXkgJFBhZ2luYXRpb247CgogICAgICAgIGlmICgkTmVlZFBhZ2luYXRpb24pIHsKICAgICAgICAgICAgJFBhZ2luYXRpb24gPSB7CiAgICAgICAgICAgICAgICBQYWdlcyAgICAgICA9PiAkUGFnZXMsCiAgICAgICAgICAgICAgICBDdXJyZW50UGFnZSA9PiAkUGFnZSwKICAgICAgICAgICAgICAgIFRpY2tldElEICAgID0+ICRUaWNrZXR7VGlja2V0SUR9LAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBzaG93IGFydGljbGUgdHJlZQogICAgICAgICRQYXJhbXtBcnRpY2xlVHJlZX0gPSAkU2VsZi0+X0FydGljbGVUcmVlKAogICAgICAgICAgICBUaWNrZXQgICAgICAgICAgICA9PiBcJVRpY2tldCwKICAgICAgICAgICAgQXJ0aWNsZUZsYWdzICAgICAgPT4gXCVBcnRpY2xlRmxhZ3MsCiAgICAgICAgICAgIEFydGljbGVJRCAgICAgICAgID0+ICRBcnRpY2xlSUQsCiAgICAgICAgICAgIEFydGljbGVNYXhMaW1pdCAgID0+ICRBcnRpY2xlTWF4TGltaXQsCiAgICAgICAgICAgIEFydGljbGVCb3ggICAgICAgID0+IFxAQXJ0aWNsZUJveCwKICAgICAgICAgICAgUGFnaW5hdGlvbiAgICAgICAgPT4gJFBhZ2luYXRpb24sCiAgICAgICAgICAgIFBhZ2UgICAgICAgICAgICAgID0+ICRQYWdlLAogICAgICAgICAgICBBcnRpY2xlQ291bnQgICAgICA9PiBzY2FsYXIgQEFydGljbGVCb3gsCiAgICAgICAgICAgIEFjbEFjdGlvbiAgICAgICAgID0+IFwlQWNsQWN0aW9uLAogICAgICAgICAgICBTdGFuZGFyZFJlc3BvbnNlcyA9PiAkU3RhbmRhcmRUZW1wbGF0ZXN7QW5zd2VyfSwKICAgICAgICAgICAgU3RhbmRhcmRGb3J3YXJkcyAgPT4gJFN0YW5kYXJkVGVtcGxhdGVze0ZvcndhcmR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IGFydGljbGVzIGl0ZW1zCiAgICBpZiAoICEkU2VsZi0+e1pvb21UaW1lbGluZX0gKSB7CgogICAgICAgIG15IEBBcnRpY2xlSURzOwogICAgICAgICRQYXJhbXtBcnRpY2xlSXRlbXN9ID0gJyc7CgogICAgICAgIG15ICRBcnRpY2xlV2lkZ2V0c0hUTUwgPSAnJzsKCiAgICAgICAgQVJUSUNMRToKICAgICAgICBmb3IgbXkgJEFydGljbGVUbXAgKEBBcnRpY2xlQm94U2hvd24pIHsKICAgICAgICAgICAgbXkgJUFydGljbGUgPSAkQXJ0aWNsZVRtcC0+JSo7CgogICAgICAgICAgICAkQXJ0aWNsZVdpZGdldHNIVE1MIC49ICRTZWxmLT5fQXJ0aWNsZUl0ZW0oCiAgICAgICAgICAgICAgICBUaWNrZXQgICAgICAgICAgICA9PiBcJVRpY2tldCwKICAgICAgICAgICAgICAgIEFydGljbGUgICAgICAgICAgID0+IFwlQXJ0aWNsZSwKICAgICAgICAgICAgICAgIEFjbEFjdGlvbiAgICAgICAgID0+IFwlQWNsQWN0aW9uLAogICAgICAgICAgICAgICAgU3RhbmRhcmRSZXNwb25zZXMgPT4gJFN0YW5kYXJkVGVtcGxhdGVze0Fuc3dlcn0sCiAgICAgICAgICAgICAgICBTdGFuZGFyZEZvcndhcmRzICA9PiAkU3RhbmRhcmRUZW1wbGF0ZXN7Rm9yd2FyZH0sCiAgICAgICAgICAgICAgICBBY3R1YWxBcnRpY2xlSUQgICA9PiAkQXJ0aWNsZUlELAogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgPT4gJ1N0YXRpYycsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQEFydGljbGVJRHMsICRBcnRpY2xlVG1wLT57QXJ0aWNsZUlEfTsKICAgICAgICB9CgogICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnQXJ0aWNsZUlEcycsCiAgICAgICAgICAgIFZhbHVlID0+IFxAQXJ0aWNsZUlEcywKICAgICAgICApOwogICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgS2V5ICAgPT4gJ01lbnVJdGVtcycsCiAgICAgICAgICAgIFZhbHVlID0+ICRTZWxmLT57TWVudUl0ZW1zfSwKICAgICAgICApOwoKICAgICAgICAkUGFyYW17QXJ0aWNsZUl0ZW1zfSAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRUaWNrZXRab29tJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICVUaWNrZXQsCiAgICAgICAgICAgICAgICAlQWNsQWN0aW9uLAogICAgICAgICAgICAgICAgQXJ0aWNsZVdpZGdldHNIVE1MID0+ICRBcnRpY2xlV2lkZ2V0c0hUTUwsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGFsd2F5cyBzaG93IGFyY2hpdmVkIHRpY2tldHMgYXMgc2VlbgogICAgaWYgKCAkU2VsZi0+e1pvb21FeHBhbmR9ICYmICRUaWNrZXR7QXJjaGl2ZUZsYWd9IG5lICd5JyApIHsKCiAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdUaWNrZXRJdGVtTWFya0FzU2VlbicsCiAgICAgICAgICAgIFZhbHVlID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG51bWJlciBvZiBhcnRpY2xlcwogICAgJFBhcmFte0FydGljbGVDb3VudH0gPSBzY2FsYXIgQEFydGljbGVCb3g7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnSGVhZGVyJywKICAgICAgICBEYXRhID0+IHsgJVBhcmFtLCAlVGlja2V0LCAlQWNsQWN0aW9uIH0sCiAgICApOwoKICAgIG15ICVBY3Rpb25Mb29rdXA7CiAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgIyBydW4gdGlja2V0IG1lbnUgbW9kdWxlcwogICAgaWYgKCByZWYgJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpNZW51TW9kdWxlJykgZXEgJ0hBU0gnICkgewogICAgICAgIG15ICVNZW51cyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TWVudU1vZHVsZScpIH07CiAgICAgICAgbXkgJU1lbnVDbHVzdGVyczsKICAgICAgICBteSAlWm9vbU1lbnVJdGVtczsKCiAgICAgICAgTUVOVToKICAgICAgICBmb3IgbXkgJE1lbnUgKCBzb3J0IGtleXMgJU1lbnVzICkgewoKICAgICAgICAgICAgIyBsb2FkIG1vZHVsZQogICAgICAgICAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCAkTWVudXN7JE1lbnV9LT57TW9kdWxlfSApICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJE9iamVjdCA9ICRNZW51c3skTWVudX0tPntNb2R1bGV9LT5uZXcoCiAgICAgICAgICAgICAgICAleyRTZWxmfSwKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBydW4gbW9kdWxlCiAgICAgICAgICAgIG15ICRJdGVtID0gJE9iamVjdC0+UnVuKAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgVGlja2V0ID0+IFwlVGlja2V0LAogICAgICAgICAgICAgICAgQUNMICAgID0+IFwlQWNsQWN0aW9uLAogICAgICAgICAgICAgICAgQ29uZmlnID0+ICRNZW51c3skTWVudX0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IE1FTlUgdW5sZXNzICRJdGVtOwoKICAgICAgICAgICAgaWYgKCAkTWVudXN7JE1lbnV9LT57UG9wdXBUeXBlfSApIHsKICAgICAgICAgICAgICAgICRJdGVtLT57Q2xhc3N9ID0gIkFzUG9wdXAgUG9wdXBUeXBlXyRNZW51c3skTWVudX0tPntQb3B1cFR5cGV9IjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkTWVudXN7JE1lbnV9LT57QWN0aW9ufSApIHsKICAgICAgICAgICAgICAgICRBY3Rpb25Mb29rdXB7ICRNZW51c3skTWVudX0tPntBY3Rpb259IH0gPSB7CiAgICAgICAgICAgICAgICAgICAgTGluayAgICAgICAgICAgPT4gJEl0ZW0tPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICA9PiAkSXRlbS0+e0NsYXNzfSwKICAgICAgICAgICAgICAgICAgICBMaW5rUGFyYW0gICAgICA9PiAkSXRlbS0+e0xpbmtQYXJhbX0sCiAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgPT4gJEl0ZW0tPntEZXNjcmlwdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJEl0ZW0tPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGVkTmFtZSA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Okxhbmd1YWdlJyktPlRyYW5zbGF0ZSggJEl0ZW0tPntOYW1lfSApLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAhJE1lbnVzeyRNZW51fS0+e0NsdXN0ZXJOYW1lfSApIHsKCiAgICAgICAgICAgICAgICAkWm9vbU1lbnVJdGVtc3skTWVudX0gPSAkSXRlbTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHRoZSBjb25maWd1cmVkIHByaW9yaXR5IGZvciB0aGlzIGl0ZW0uIFRoZSBsb3dlc3QgQ2x1c3RlclByaW9yaXR5CiAgICAgICAgICAgICAgICAjIHdpdGhpbiB0aGUgc2FtZSBjbHVzdGVyIHdpbnMuCiAgICAgICAgICAgICAgICBteSAkUHJpb3JpdHkgPSAkTWVudUNsdXN0ZXJzeyAkTWVudXN7JE1lbnV9LT57Q2x1c3Rlck5hbWV9IH0tPntQcmlvcml0eX0gfHwgMDsKICAgICAgICAgICAgICAgICRNZW51c3skTWVudX0tPntDbHVzdGVyUHJpb3JpdHl9IHx8PSAwOwogICAgICAgICAgICAgICAgaWYgKCAhJFByaW9yaXR5IHx8ICRQcmlvcml0eSAhfiAvXlxkezN9JC8gfHwgJFByaW9yaXR5ID4gJE1lbnVzeyRNZW51fS0+e0NsdXN0ZXJQcmlvcml0eX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFByaW9yaXR5ID0gJE1lbnVzeyRNZW51fS0+e0NsdXN0ZXJQcmlvcml0eX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkTWVudUNsdXN0ZXJzeyAkTWVudXN7JE1lbnV9LT57Q2x1c3Rlck5hbWV9IH0tPntQcmlvcml0eX0gPSAkUHJpb3JpdHk7CiAgICAgICAgICAgICAgICAkTWVudUNsdXN0ZXJzeyAkTWVudXN7JE1lbnV9LT57Q2x1c3Rlck5hbWV9IH0tPntJdGVtc30tPnskTWVudX0gPSAkSXRlbTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZm9yIG15ICRDbHVzdGVyICggc29ydCBrZXlzICVNZW51Q2x1c3RlcnMgKSB7CiAgICAgICAgICAgICRab29tTWVudUl0ZW1zeyAkTWVudUNsdXN0ZXJzeyRDbHVzdGVyfS0+e1ByaW9yaXR5fSAuICRDbHVzdGVyIH0gPSB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAkQ2x1c3RlciwKICAgICAgICAgICAgICAgIFR5cGUgID0+ICdDbHVzdGVyJywKICAgICAgICAgICAgICAgIExpbmsgID0+ICcjJywKICAgICAgICAgICAgICAgIENsYXNzID0+ICdDbHVzdGVyTGluaycsCiAgICAgICAgICAgICAgICBJdGVtcyA9PiAkTWVudUNsdXN0ZXJzeyRDbHVzdGVyfS0+e0l0ZW1zfSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgZGlzcGxheSBhbGwgaXRlbXMKICAgICAgICBmb3IgbXkgJEl0ZW0gKCBzb3J0IGtleXMgJVpvb21NZW51SXRlbXMgKSB7CiAgICAgICAgICAgIGlmICggJFpvb21NZW51SXRlbXN7JEl0ZW19LT57RXh0ZXJuYWxMaW5rfSAmJiAkWm9vbU1lbnVJdGVtc3skSXRlbX0tPntFeHRlcm5hbExpbmt9ID09IDEgKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdUaWNrZXRNZW51RXh0ZXJuYWxMaW5rJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+ICRab29tTWVudUl0ZW1zeyRJdGVtfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkWm9vbU1lbnVJdGVtc3skSXRlbX17Q29uZmlnfXtUeXBlfSAmJiAkWm9vbU1lbnVJdGVtc3skSXRlbX17Q29uZmlnfXtUeXBlfSBlcSAnRm9ybScgKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdUaWNrZXRNZW51SXRlbScsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnVGlja2V0TWVudUZvcm1HZW5lcmljJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+ICRab29tTWVudUl0ZW1zeyRJdGVtfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdUaWNrZXRNZW51SXRlbScsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnVGlja2V0TWVudScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiAkWm9vbU1lbnVJdGVtc3skSXRlbX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRab29tTWVudUl0ZW1zeyRJdGVtfS0+e1R5cGV9IGVxICdDbHVzdGVyJyApIHsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdUaWNrZXRNZW51U3ViQ29udGFpbmVyJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkWm9vbU1lbnVJdGVtc3skSXRlbX0tPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSBhIG1hcCBvZiBwcmlvcml0aWVzIHZlcnN1cyBzdWJpdGVtcyBiYXNlZCBvbiB0aGUgQ2x1c3RlclByaW9yaXR5IG9mIGVhY2ggc3ViaXRlbQogICAgICAgICAgICAgICAgIyB0aGUgc2V0dGluZ3Mga2V5IG9yZGVyIHByZXZhaWxzIGJldHdlZW4gc3ViaXRlbXMgd2l0aCBlcXVhbCBDbHVzdGVyUHJpb3JpdHkKICAgICAgICAgICAgICAgICMgcHJpb3JpdGllcyBhcmUgYWx3YXlzIGFwcGVuZGVkIGEgc2VxdWVudGlhbCBzdWZmaXggb2YgdHdvIGRpZ2l0cyAoODAwLTAxLCA4MDAtMDIsIDgwMC0wMywgZXRjLikKICAgICAgICAgICAgICAgICMgdGhpcyBlbmZvcmNlcyBkaXN0aW5jdCBtYXAga2V5cyBldmVuIGFtb25nIHN1Yml0ZW1zIHdpdGggdGhlIHNhbWUgQ2x1c3RlclByaW9yaXR5CiAgICAgICAgICAgICAgICBteSAlUHJpb3JpdHlTdWZmaXhlczsKICAgICAgICAgICAgICAgIG15ICVNYXBQcmlvcml0eVRvU3ViSXRlbTsKICAgICAgICAgICAgICAgIGZvciBteSAkU3ViSXRlbSAoIHNvcnQga2V5cyAleyAkWm9vbU1lbnVJdGVtc3skSXRlbX0tPntJdGVtc30gfSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkSXRlbVByaW9yaXR5ID0gJFpvb21NZW51SXRlbXN7JEl0ZW19LT57SXRlbXN9LT57JFN1Ykl0ZW19LT57Q2x1c3RlclByaW9yaXR5fTsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkUHJpb3JpdHlTdWZmaXhlc3skSXRlbVByaW9yaXR5fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFByaW9yaXR5U3VmZml4ZXN7JEl0ZW1Qcmlvcml0eX0gPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFByaW9yaXR5U3VmZml4ZXN7JEl0ZW1Qcmlvcml0eX0rKzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgZW5mb3JjZSB0aGUgdHdvIGRpZ2l0cyBzdWZmaXgsIHNpbmNlIDEwIG9yIG1vcmUgc3ViaXRlbXMgYXJlIHBvc3NpYmxlCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUHJpb3JpdHlTdWZmaXhlc3skSXRlbVByaW9yaXR5fSA9fiAvXlxkJC8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRQcmlvcml0eVN1ZmZpeGVzeyRJdGVtUHJpb3JpdHl9ID0gIjAiIC4gJFByaW9yaXR5U3VmZml4ZXN7JEl0ZW1Qcmlvcml0eX07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBteSAkUHJpb3JpdHlLZXkgPSAkSXRlbVByaW9yaXR5IC4gIi0iIC4gJFByaW9yaXR5U3VmZml4ZXN7JEl0ZW1Qcmlvcml0eX07CiAgICAgICAgICAgICAgICAgICAgJE1hcFByaW9yaXR5VG9TdWJJdGVteyRQcmlvcml0eUtleX0gPSAkU3ViSXRlbTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHJlbmRlciBzdWJpdGVtcyBhY2NvcmRpbmcgdG8gdGhlIHByaW9yaXRpZXMgbWFwCiAgICAgICAgICAgICAgICBmb3IgbXkgJFByaW9yaXR5S2V5ICggc29ydCBrZXlzICVNYXBQcmlvcml0eVRvU3ViSXRlbSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkU3ViSXRlbSA9ICRNYXBQcmlvcml0eVRvU3ViSXRlbXskUHJpb3JpdHlLZXl9OwogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdUaWNrZXRNZW51U3ViQ29udGFpbmVySXRlbScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJFpvb21NZW51SXRlbXN7JEl0ZW19LT57SXRlbXN9LT57JFN1Ykl0ZW19LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgTW92ZVF1ZXVlc1N0cmcKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpNb3ZlVHlwZScpID1+IC9eZm9ybSQvaSApIHsKICAgICAgICAkTW92ZVF1ZXVlc3swfSAgICAgICAgID0gJy0gJyAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTW92ZScpIC4gJyAtJzsKICAgICAgICAkUGFyYW17TW92ZVF1ZXVlc1N0cmd9ID0gJExheW91dE9iamVjdC0+QWdlbnRRdWV1ZUxpc3RPcHRpb24oCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICdEZXN0UXVldWVJRCcsCiAgICAgICAgICAgIFRyZWVWaWV3ICAgICAgID0+ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TGlzdFR5cGUnKSBlcSAndHJlZScgPyAxIDogMCwKICAgICAgICAgICAgRGF0YSAgICAgICAgICAgPT4gXCVNb3ZlUXVldWVzLAogICAgICAgICAgICBDbGFzcyAgICAgICAgICA9PiAnTW9kZXJuaXplIFNtYWxsJywKICAgICAgICAgICAgQ3VycmVudFF1ZXVlSUQgPT4gJFRpY2tldHtRdWV1ZUlEfSwKICAgICAgICApOwogICAgfQogICAgbXkgJUFjbEFjdGlvbkxvb2t1cCA9IHJldmVyc2UgJUFjbEFjdGlvbjsKICAgIGlmICgKICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKS0+e0FnZW50VGlja2V0TW92ZX0KICAgICAgICAmJiAoICRBY2xBY3Rpb25Mb29rdXB7QWdlbnRUaWNrZXRNb3ZlfSApCiAgICAgICAgKQogICAgewogICAgICAgIG15ICRBY2Nlc3MgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRQZXJtaXNzaW9uKAogICAgICAgICAgICBUeXBlICAgICA9PiAnbW92ZScsCiAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXR7VGlja2V0SUR9LAogICAgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIExvZ05vICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkUGFyYW17VGlja2V0SUR9ID0gJFRpY2tldHtUaWNrZXRJRH07CiAgICAgICAgaWYgKCRBY2Nlc3MpIHsKICAgICAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Ok1vdmVUeXBlJykgPX4gL15mb3JtJC9pICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnTW92ZUxpbmsnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4geyAlUGFyYW0sICVBY2xBY3Rpb24gfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdNb3ZlRm9ybScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7ICVQYXJhbSwgJUFjbEFjdGlvbiB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJEFjdGlvbkxvb2t1cHtBZ2VudFRpY2tldE1vdmV9ID0gewogICAgICAgICAgICAgICAgTGluayAgICAgICAgICAgPT4gJ0FjdGlvbj1BZ2VudFRpY2tldE1vdmU7VGlja2V0SUQ9WyUgRGF0YS5UaWNrZXRJRCB8IHVyaSAlXScsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICA9PiAnQXNQb3B1cCBQb3B1cFR5cGVfVGlja2V0QWN0aW9uJywKICAgICAgICAgICAgICAgIExpbmtQYXJhbSAgICAgID0+ICcnLAogICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgPT4gVHJhbnNsYXRhYmxlKCdDaGFuZ2UgUXVldWUnKSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnUXVldWUnKSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0ZWROYW1lID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6TGFuZ3VhZ2UnKS0+VHJhbnNsYXRlKCdRdWV1ZScpLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICAjIENoZWNrIGlmIEFnZW50VGlja2V0Q29tcG9zZSBhbmQgQWdlbnRUaWNrZXRGb3J3YXJkIGFyZSBhbGxvd2VkIGFzIGFjdGlvbiAoZm9yIGRpc3BsYXkgb2YgRm9ybURyYWZ0cykuCiAgICBteSAlQWN0aW9uQ29uZmlnID0gKAogICAgICAgIEFnZW50VGlja2V0Q29tcG9zZSA9PiB7CiAgICAgICAgICAgIExpbmsgICAgICAgICAgID0+ICdBY3Rpb249QWdlbnRUaWNrZXRDb21wb3NlO1RpY2tldElEPVslIERhdGEuVGlja2V0SUQgfCB1cmkgJV0nLAogICAgICAgICAgICBDbGFzcyAgICAgICAgICA9PiAnQXNQb3B1cCBQb3B1cFR5cGVfVGlja2V0QWN0aW9uJywKICAgICAgICAgICAgTGlua1BhcmFtICAgICAgPT4gJycsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgID0+IFRyYW5zbGF0YWJsZSgnUmVwbHknKSwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdSZXBseScpLAogICAgICAgICAgICBUcmFuc2xhdGVkTmFtZSA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Okxhbmd1YWdlJyktPlRyYW5zbGF0ZSgnUmVwbHknKSwKICAgICAgICB9LAogICAgICAgIEFnZW50VGlja2V0Rm9yd2FyZCA9PiB7CiAgICAgICAgICAgIExpbmsgICAgICAgICAgID0+ICdBY3Rpb249QWdlbnRUaWNrZXRGb3J3YXJkO1RpY2tldElEPVslIERhdGEuVGlja2V0SUQgfCB1cmkgJV0nLAogICAgICAgICAgICBDbGFzcyAgICAgICAgICA9PiAnQXNQb3B1cCBQb3B1cFR5cGVfVGlja2V0QWN0aW9uJywKICAgICAgICAgICAgTGlua1BhcmFtICAgICAgPT4gJycsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgID0+IFRyYW5zbGF0YWJsZSgnRm9yd2FyZCBhcnRpY2xlIHZpYSBtYWlsJyksCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnRm9yd2FyZCcpLAogICAgICAgICAgICBUcmFuc2xhdGVkTmFtZSA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Okxhbmd1YWdlJyktPlRyYW5zbGF0ZSgnRm9yd2FyZCcpLAogICAgICAgIH0sCiMgUm90aGVyIE9TUyAvIEFnZW50VGlja2V0Rm9ybURyYWZ0UmV2aWV3CiAgICAgICAgQWdlbnRUaWNrZXRGb3JtRHJhZnRFZGl0ID0+IHsKICAgICAgICAgICAgTGluayAgICAgICAgICAgPT4gJ0FjdGlvbj1BZ2VudFRpY2tldEZvcm1EcmFmdEVkaXQ7VGlja2V0SUQ9WyUgRGF0YS5UaWNrZXRJRCB8IHVyaSAlXScsCiAgICAgICAgICAgIENsYXNzICAgICAgICAgID0+ICdBc1BvcHVwIFBvcHVwVHlwZV9UaWNrZXRBY3Rpb24nLAogICAgICAgICAgICBMaW5rUGFyYW0gICAgICA9PiAnJywKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgPT4gVHJhbnNsYXRhYmxlKCdFZGl0IGRyYWZ0JyksCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnRWRpdCcpLAogICAgICAgICAgICBUcmFuc2xhdGVkTmFtZSA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Okxhbmd1YWdlJyktPlRyYW5zbGF0ZSgnRWRpdCcpLAogICAgICAgIH0sCiMgRU8gQWdlbnRUaWNrZXRGb3JtRHJhZnRSZXZpZXcKICAgICk7CgojIFJvdGhlciBPU1MgLyBBZ2VudFRpY2tldEZvcm1EcmFmdFJldmlldwojICAgIEFDVElPTjoKIyAgICBmb3IgbXkgJEFjdGlvbiAocXcoQWdlbnRUaWNrZXRDb21wb3NlIEFnZW50VGlja2V0Rm9yd2FyZCkpIHsKICAgIEFDVElPTjoKICAgIGZvciBteSAkQWN0aW9uIChxdyhBZ2VudFRpY2tldENvbXBvc2UgQWdlbnRUaWNrZXRGb3J3YXJkIEFnZW50VGlja2V0Rm9ybURyYWZ0RWRpdCkpIHsKIyBFTyBBZ2VudFRpY2tldEZvcm1EcmFmdFJldmlldwoKICAgICAgICBuZXh0IEFDVElPTiB1bmxlc3MgJENvbmZpZ09iamVjdC0+R2V0KCdGcm9udGVuZDo6TW9kdWxlJyktPnskQWN0aW9ufTsKICAgICAgICBuZXh0IEFDVElPTiB1bmxlc3MgJEFjbEFjdGlvbkxvb2t1cHskQWN0aW9ufTsKCiAgICAgICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCggJ1RpY2tldDo6RnJvbnRlbmQ6OicgLiAkQWN0aW9uICk7CiAgICAgICAgaWYgKCAkQ29uZmlnLT57UGVybWlzc2lvbn0gKSB7CiAgICAgICAgICAgIG5leHQgQUNUSU9OIHVubGVzcyAkVGlja2V0T2JqZWN0LT5UaWNrZXRQZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgVHlwZSAgICAgPT4gJENvbmZpZy0+e1Blcm1pc3Npb259LAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldHtUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBMb2dObyAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkQWN0aW9uTG9va3VweyRBY3Rpb259ID0gJEFjdGlvbkNvbmZpZ3skQWN0aW9ufTsKICAgIH0KCiAgICAjIEdldCBhbmQgc2hvdyBhdmFpbGFibGUgRm9ybURyYWZ0cy4KICAgIG15ICVTaG93bkZvcm1EcmFmdEVudHJpZXM7CiAgICBteSAkRm9ybURyYWZ0TGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGb3JtRHJhZnQnKS0+Rm9ybURyYWZ0TGlzdEdldCgKICAgICAgICBPYmplY3RUeXBlID0+ICdUaWNrZXQnLAogICAgICAgIE9iamVjdElEICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICApOwoKIyBSb3RoZXIgT1NTIC8gQWdlbnRUaWNrZXRGb3JtRHJhZnRSZXZpZXcKICAgICMgZ2V0IHVzZXIgYXV0aG9yaXphdGlvbiBsZXZlbCAob3duZXIsIHJ3LCBybykKICAgIG15ICRSZXZpZXdQZXJtaXNzaW9uID0gJFNlbGYtPl9HZXRSZXZpZXdQZXJtaXNzaW9uTGV2ZWwoKTsKICAgIG15ICRUaWNrZXRJc0xvY2tlZCAgID0gJFRpY2tldE9iamVjdC0+VGlja2V0TG9ja0dldCgKICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfQogICAgKTsKCiAgICBpZiAoICRSZXZpZXdQZXJtaXNzaW9uIG5lICdvd25lcicgKSB7CgogICAgICAgICMgb24gbG9ja2VkIHRpY2tldHMgb25seSB0aGUgb3duZXIgY2FuIGZ1bGx5IGFjY2VzcyBjb21wb3NlIGFuZCBmb3J3YXJkIGZvcm0gZHJhZnRzCiAgICAgICAgaWYgKCAkVGlja2V0SXNMb2NrZWQgKSB7CiAgICAgICAgICAgIGRlbGV0ZSAkQWN0aW9uTG9va3Vwe0FnZW50VGlja2V0Q29tcG9zZX07CiAgICAgICAgICAgIGRlbGV0ZSAkQWN0aW9uTG9va3Vwe0FnZW50VGlja2V0Rm9yd2FyZH07CiAgICAgICAgfQoKICAgICAgICAjIGNoYW5nZSByZXZpZXcgZGVzY3JpcHRpb24gZm9yIHJvIG9ubHkgYWNjZXNzCiAgICAgICAgaWYgKCAkUmV2aWV3UGVybWlzc2lvbiBlcSAncm8nICYmICRBY3Rpb25Mb29rdXB7QWdlbnRUaWNrZXRGb3JtRHJhZnRFZGl0fSApIHsKICAgICAgICAgICAgJEFjdGlvbkxvb2t1cHtBZ2VudFRpY2tldEZvcm1EcmFmdEVkaXR9e0Rlc2NyaXB0aW9ufSAgICA9IFRyYW5zbGF0YWJsZSgnVmlldyBkcmFmdCcpOwogICAgICAgICAgICAkQWN0aW9uTG9va3Vwe0FnZW50VGlja2V0Rm9ybURyYWZ0RWRpdH17TmFtZX0gICAgICAgICAgID0gVHJhbnNsYXRhYmxlKCdWaWV3Jyk7CiAgICAgICAgICAgICRBY3Rpb25Mb29rdXB7QWdlbnRUaWNrZXRGb3JtRHJhZnRFZGl0fXtUcmFuc2xhdGVkTmFtZX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Okxhbmd1YWdlJyktPlRyYW5zbGF0ZSgnVmlldycpOwogICAgICAgIH0KICAgIH0KIyBFTyBBZ2VudFRpY2tldEZvcm1EcmFmdFJldmlldwoKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCRGb3JtRHJhZnRMaXN0KSApIHsKICAgICAgICBGb3JtRHJhZnQ6CiAgICAgICAgZm9yIG15ICRGb3JtRHJhZnQgKCBAeyRGb3JtRHJhZnRMaXN0fSApIHsKIyBSb3RoZXIgT1NTIC8gQWdlbnRUaWNrZXRGb3JtRHJhZnRSZXZpZXcKIyAgICAgICAgICAgIG5leHQgRm9ybURyYWZ0IGlmICEkQWN0aW9uTG9va3VweyAkRm9ybURyYWZ0LT57QWN0aW9ufSB9OwogICAgICAgICAgICBpZiAoICEkQWN0aW9uTG9va3VweyAkRm9ybURyYWZ0LT57QWN0aW9ufSB9ICkgewoKICAgICAgICAgICAgICAgICMgaWYgd2UgY2Fubm90IGRpcmVjdGx5IGFjY2VzcyB0aGUgYWN0aW9uLCBhbHRlcm5hdGl2ZWx5IGxvYWQgdGhlIGRyYWZ0IHZpYSBGb3JtRHJhZnRFZGl0IGlmIGF2YWlsYWJsZQogICAgICAgICAgICAgICAgbmV4dCBGb3JtRHJhZnQgaWYgISRBY3Rpb25Mb29rdXB7QWdlbnRUaWNrZXRGb3JtRHJhZnRFZGl0fTsKCiAgICAgICAgICAgICAgICAkRm9ybURyYWZ0LT57QWN0aW9ufSA9ICdBZ2VudFRpY2tldEZvcm1EcmFmdEVkaXQnOwogICAgICAgICAgICB9CiMgRU8gQWdlbnRUaWNrZXRGb3JtRHJhZnRSZXZpZXcKCiAgICAgICAgICAgIHB1c2ggQHsgJFNob3duRm9ybURyYWZ0RW50cmllc3sgJEZvcm1EcmFmdC0+e0FjdGlvbn0gfSB9LCAkRm9ybURyYWZ0OwogICAgICAgIH0KICAgIH0KICAgIGlmICglU2hvd25Gb3JtRHJhZnRFbnRyaWVzKSB7CgogICAgICAgIG15ICRMYXN0QXJ0aWNsZTsKICAgICAgICBpZiAoICRPcmRlciBlcSAnREVTQycgKSB7CiAgICAgICAgICAgICRMYXN0QXJ0aWNsZSA9ICRBcnRpY2xlQm94QWxsWzBdOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJExhc3RBcnRpY2xlID0gJEFydGljbGVCb3hBbGxbLTFdOwogICAgICAgIH0KCiAgICAgICAgbXkgJExhc3RBcnRpY2xlU3lzdGVtVGltZTsKICAgICAgICBpZiAoICRMYXN0QXJ0aWNsZS0+e0NyZWF0ZVRpbWV9ICkgewogICAgICAgICAgICBteSAkTGFzdEFydGljbGVTeXN0ZW1UaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJExhc3RBcnRpY2xlLT57Q3JlYXRlVGltZX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkTGFzdEFydGljbGVTeXN0ZW1UaW1lID0gJExhc3RBcnRpY2xlU3lzdGVtVGltZU9iamVjdC0+VG9FcG9jaCgpOwogICAgICAgIH0KCiAgICAgICAgbXkgQEZvcm1EcmFmdHM7CgogICAgICAgIGZvciBteSAkQWN0aW9uICgKICAgICAgICAgICAgc29ydCB7CiAgICAgICAgICAgICAgICAkQWN0aW9uTG9va3VweyRhfS0+e1RyYW5zbGF0ZWROYW1lfQogICAgICAgICAgICAgICAgICAgIGNtcAogICAgICAgICAgICAgICAgICAgICRBY3Rpb25Mb29rdXB7JGJ9LT57VHJhbnNsYXRlZE5hbWV9CiAgICAgICAgICAgIH0ga2V5cyAlU2hvd25Gb3JtRHJhZnRFbnRyaWVzCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRBY3Rpb25EYXRhID0gJEFjdGlvbkxvb2t1cHskQWN0aW9ufTsKCiAgICAgICAgICAgIGZvciBteSAkU2hvd25Gb3JtRHJhZnRBY3Rpb25FbnRyeSAoCiAgICAgICAgICAgICAgICBzb3J0IHsKICAgICAgICAgICAgICAgICAgICAkYS0+e1RpdGxlfQogICAgICAgICAgICAgICAgICAgICAgICBjbXAKICAgICAgICAgICAgICAgICAgICAgICAgJGItPntUaXRsZX0KICAgICAgICAgICAgICAgICAgICAgICAgfHwKICAgICAgICAgICAgICAgICAgICAgICAgJGEtPntGb3JtRHJhZnRJRH0KICAgICAgICAgICAgICAgICAgICAgICAgPD0+CiAgICAgICAgICAgICAgICAgICAgICAgICRiLT57Rm9ybURyYWZ0SUR9CiAgICAgICAgICAgICAgICB9IEB7ICRTaG93bkZvcm1EcmFmdEVudHJpZXN7JEFjdGlvbn0gfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkU2hvd25Gb3JtRHJhZnRBY3Rpb25FbnRyeS0+e0NyZWF0ZWRCeVVzZXJ9ID0gJFVzZXJPYmplY3QtPlVzZXJOYW1lKAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2hvd25Gb3JtRHJhZnRBY3Rpb25FbnRyeS0+e0NyZWF0ZUJ5fSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkU2hvd25Gb3JtRHJhZnRBY3Rpb25FbnRyeS0+e0NoYW5nZWRCeVVzZXJ9ID0gJFVzZXJPYmplY3QtPlVzZXJOYW1lKAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2hvd25Gb3JtRHJhZnRBY3Rpb25FbnRyeS0+e0NoYW5nZUJ5fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJFNob3duRm9ybURyYWZ0QWN0aW9uRW50cnkgPSB7CiAgICAgICAgICAgICAgICAgICAgJXskU2hvd25Gb3JtRHJhZnRBY3Rpb25FbnRyeX0sCiAgICAgICAgICAgICAgICAgICAgJXskQWN0aW9uRGF0YX0sCgogICAgICAgICAgICAgICAgfTsKCiMgUm90aGVyIE9TUyAvIEFnZW50VGlja2V0Rm9ybURyYWZ0UmV2aWV3CiAgICAgICAgICAgICAgICAkU2hvd25Gb3JtRHJhZnRBY3Rpb25FbnRyeS0+e1JlYWRXcml0ZVBlcm1pc3Npb259ID0KICAgICAgICAgICAgICAgICAgICAkQWN0aW9uIG5lICdBZ2VudFRpY2tldEZvcm1EcmFmdFJldmlldycgfHwgJFJldmlld1Blcm1pc3Npb24gbmUgJ3JvJzsKIyBFTyBBZ2VudFRpY2tldEZvcm1EcmFmdFJldmlldwogICAgICAgICAgICAgICAgcHVzaCBARm9ybURyYWZ0cywgJFNob3duRm9ybURyYWZ0QWN0aW9uRW50cnk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGb3JtRHJhZnRUYWJsZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRm9ybURyYWZ0cyA9PiBcQEZvcm1EcmFmdHMsCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IGNyZWF0ZWQgYnkgaWYgZGlmZmVyZW50IHRoZW4gVXNlciBJRCAxCiAgICBpZiAoICRUaWNrZXR7Q3JlYXRlQnl9ID4gMSApIHsKCiAgICAgICAgIyBnZXQgdXNlciBvYmplY3QKICAgICAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CiAgICAgICAgJFRpY2tldHtDcmVhdGVkQnlVc2VyfSA9ICRVc2VyT2JqZWN0LT5Vc2VyTmFtZSggVXNlcklEID0+ICRUaWNrZXR7Q3JlYXRlQnl9ICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0NyZWF0ZWRCeScsCiAgICAgICAgICAgIERhdGEgPT4geyVUaWNrZXR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IG5vIGFydGljbGVzIGJsb2NrIGlmIHRpY2tldCBkb2VzIG5vdCBjb250YWluIGFydGljbGVzCiAgICBpZiAoICFAQXJ0aWNsZUJveCAmJiAhJFNlbGYtPntab29tVGltZWxpbmV9ICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdIaW50Tm9BcnRpY2xlcycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHRpY2tldCBpcyBub3JtYWwgb3IgcHJvY2VzcyB0aWNrZXQKICAgIG15ICRJc1Byb2Nlc3NUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDaGVja0ZvclByb2Nlc3NUeXBlKAogICAgICAgICdUaWNrZXRJRCcgPT4gJFNlbGYtPntUaWNrZXRJRH0KICAgICk7CgogICAgIyBjb2xsZWN0IGRhdGEgZm9yIG92ZXJ2aWV3IHdpZGdldAogICAgbXkgJVdpZGdldERhdGE7CiAgICBpZiAoICRJc1Byb2Nlc3NUaWNrZXQgfHwgJFNlbGYtPntEaXNwbGF5U2V0dGluZ3N9e0R5bmFtaWNGaWVsZFdpZGdldERpc3BsYXl9ICkgewogICAgICAgICVXaWRnZXREYXRhID0gJElzUHJvY2Vzc1RpY2tldAogICAgICAgICAgICA/ICgKICAgICAgICAgICAgICAgIFdpZGdldERpc3BsYXkgICAgICAgICAgICA9PiAkU2VsZi0+e0Rpc3BsYXlTZXR0aW5nc317UHJvY2Vzc0Rpc3BsYXl9LAogICAgICAgICAgICAgICAgV2lkZ2V0VGl0bGUgICAgICAgICAgICAgID0+ICRTZWxmLT57RGlzcGxheVNldHRpbmdzfXtQcm9jZXNzRGlzcGxheX17V2lkZ2V0VGl0bGV9LAogICAgICAgICAgICAgICAgV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzID0+ICRTZWxmLT57RGlzcGxheVNldHRpbmdzfXtQcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzfSwKICAgICAgICAgICAgKQogICAgICAgICAgICA6ICgKICAgICAgICAgICAgICAgIFdpZGdldERpc3BsYXkgICAgICAgICAgICA9PiAkU2VsZi0+e0Rpc3BsYXlTZXR0aW5nc317RHluYW1pY0ZpZWxkV2lkZ2V0RGlzcGxheX0sCiAgICAgICAgICAgICAgICBXaWRnZXRUaXRsZSAgICAgICAgICAgICAgPT4gJFNlbGYtPntEaXNwbGF5U2V0dGluZ3N9e0R5bmFtaWNGaWVsZFdpZGdldERpc3BsYXl9e1dpZGdldFRpdGxlfSwKICAgICAgICAgICAgICAgIFdpZGdldER5bmFtaWNGaWVsZEdyb3VwcyA9PiAkU2VsZi0+e0Rpc3BsYXlTZXR0aW5nc317RHluYW1pY0ZpZWxkV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzfSwKCiAgICAgICAgICAgICk7CgogICAgICAgICRXaWRnZXREYXRhe1dpZGdldER5bmFtaWNGaWVsZH0gPSAkQ29uZmlnT2JqZWN0LT5HZXQoIlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0Wm9vbSIpCiAgICAgICAgICAgIC0+eyAoICRJc1Byb2Nlc3NUaWNrZXQgPyAnUHJvY2Vzc1dpZGdldER5bmFtaWNGaWVsZCcgOiAnRHluYW1pY0ZpZWxkV2lkZ2V0RHluYW1pY0ZpZWxkJyApIH0gLy8ge307CiAgICB9CgogICAgIyBkZWNpZGUgaWYgd2lkZ2V0IHNob3VsZCBiZSBzaG93bgogICAgbXkgJFNob3dXaWRnZXQgPSAwOwoKICAgICMgYWx3YXlzIHNob3cgaWYgd2UgaGF2ZSBhIHByb2Nlc3MgdGlja2V0IGZvciBhY3Rpdml0eSBkaWFsb2dzCiAgICBpZiAoJElzUHJvY2Vzc1RpY2tldCkgewogICAgICAgICRTaG93V2lkZ2V0ID0gMTsKICAgIH0KCiAgICAjIGVsc2Ugc2hvdyBvbmx5IGlmIGR5bmFtaWMgZmllbGRzIGFyZSBkZWZpbmVkIGFuZCBhdCBsZWFzdCBvbmUgb2YgdGhlbSBoYXMgYSB2YWx1ZQogICAgZWxzaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFdpZGdldERhdGF7V2lkZ2V0RHluYW1pY0ZpZWxkfSApICkgewogICAgICAgIERGVkFMVUU6CiAgICAgICAgZm9yIG15ICRGaWVsZE5hbWUgKCBrZXlzICRXaWRnZXREYXRhe1dpZGdldER5bmFtaWNGaWVsZH0tPiUqICkgewogICAgICAgICAgICBuZXh0IERGVkFMVUUgdW5sZXNzICRXaWRnZXREYXRhe1dpZGdldER5bmFtaWNGaWVsZH17JEZpZWxkTmFtZX07CiAgICAgICAgICAgIG5leHQgREZWQUxVRSB1bmxlc3MgJFRpY2tldHsiRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifTsKCiAgICAgICAgICAgICRTaG93V2lkZ2V0ID0gMTsKCiAgICAgICAgICAgIGxhc3QgREZWQUxVRTsKICAgICAgICB9CiAgICB9CgogICAgIyBzaG93IG92ZXJ2aWV3IHdpZGdldCB3aXRoIGVpdGhlciBkeW5hbWljIGZpZWxkIGRhdGEgb3Igd2l0aCBwcm9jZXNzIGFuZCBhY3Rpdml0eSBkaWFsb2cgZGF0YQogICAgaWYgKCRTaG93V2lkZ2V0KSB7CgogICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnT3ZlcnZpZXdXaWRnZXQnLAogICAgICAgICAgICBWYWx1ZSA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IHRoZSBvdmVydmlldyB3aWRnZXQgaW4gdGhlIG1haW4gc2NyZWVuCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3V2lkZ2V0JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBXaWRnZXRUaXRsZSA9PiAkV2lkZ2V0RGF0YXtXaWRnZXRUaXRsZX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjb2xsZWN0IGFuZCByZW5kZXIgcHJvY2VzcyBkYXRhIGlmIG5lY2Vzc2FyeQogICAgICAgIG15ICRBY3Rpdml0eU5hbWU7CiAgICAgICAgbXkgJE5leHRBY3Rpdml0eURpYWxvZ3M7CiAgICAgICAgbXkgJFByb2Nlc3NFbnRpdHlJREZpZWxkOwogICAgICAgIGlmICgkSXNQcm9jZXNzVGlja2V0KSB7CgogICAgICAgICAgICAjIGdldCB0aGUgREYgd2hlcmUgdGhlIFByb2Nlc3NFbnRpdHlJRCBpcyBzdG9yZWQKICAgICAgICAgICAgJFByb2Nlc3NFbnRpdHlJREZpZWxkID0gJ0R5bmFtaWNGaWVsZF8nCiAgICAgICAgICAgICAgICAuICRDb25maWdPYmplY3QtPkdldCgiUHJvY2Vzczo6RHluYW1pY0ZpZWxkUHJvY2Vzc01hbmFnZW1lbnRQcm9jZXNzSUQiKTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBERiB3aGVyZSB0aGUgQWN0aXZpdHlFbnRpdHlJRCBpcyBzdG9yZWQKICAgICAgICAgICAgbXkgJEFjdGl2aXR5RW50aXR5SURGaWVsZCA9ICdEeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgLiAkQ29uZmlnT2JqZWN0LT5HZXQoIlByb2Nlc3M6OkR5bmFtaWNGaWVsZFByb2Nlc3NNYW5hZ2VtZW50QWN0aXZpdHlJRCIpOwoKICAgICAgICAgICAgbXkgJEFjdGl2aXR5RGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQcm9jZXNzTWFuYWdlbWVudDo6QWN0aXZpdHknKS0+QWN0aXZpdHlHZXQoCiAgICAgICAgICAgICAgICBJbnRlcmZhY2UgICAgICAgID0+ICdBZ2VudEludGVyZmFjZScsCiAgICAgICAgICAgICAgICBBY3Rpdml0eUVudGl0eUlEID0+ICRUaWNrZXR7JEFjdGl2aXR5RW50aXR5SURGaWVsZH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCBuZXh0IGFjdGl2aXR5IGRpYWxvZ3MKICAgICAgICAgICAgaWYgKCAkVGlja2V0eyRBY3Rpdml0eUVudGl0eUlERmllbGR9ICkgewoKICAgICAgICAgICAgICAgICMgcHJvdGVjdGlvbiBhZ2FpbnN0IGF1dG92aXZpZmljYXRpb24KICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJEFjdGl2aXR5RGF0YSkgJiYgSXNIYXNoUmVmV2l0aERhdGEoICRBY3Rpdml0eURhdGEtPntBY3Rpdml0eURpYWxvZ30gKSApIHsKICAgICAgICAgICAgICAgICAgICAkTmV4dEFjdGl2aXR5RGlhbG9ncyA9ICR7QWN0aXZpdHlEYXRhfS0+e0FjdGl2aXR5RGlhbG9nfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICROZXh0QWN0aXZpdHlEaWFsb2dzID0ge307CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJEFjdGl2aXR5TmFtZSA9ICRBY3Rpdml0eURhdGEtPntOYW1lfTsKICAgICAgICB9CgogICAgICAgIGlmICgkTmV4dEFjdGl2aXR5RGlhbG9ncykgewoKICAgICAgICAgICAgIyBnZXQgQWN0aXZpdHlEaWFsb2cgb2JqZWN0CiAgICAgICAgICAgIG15ICRBY3Rpdml0eURpYWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQcm9jZXNzTWFuYWdlbWVudDo6QWN0aXZpdHlEaWFsb2cnKTsKCiAgICAgICAgICAgICMgd2UgaGF2ZSB0byBjaGVjayBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyB0aGUgbmVlZGVkIHBlcm1pc3Npb25zIHRvIHZpZXcgdGhlCiAgICAgICAgICAgICMgZGlmZmVyZW50IGFjdGl2aXR5IGRpYWxvZ3MsIHNvIHdlIGxvb3Agb3ZlciBldmVyeSBhY3Rpdml0eSBkaWFsb2cgYW5kIGNoZWNrIGlmIHRoZXJlCiAgICAgICAgICAgICMgaXMgYSBwZXJtaXNzaW9uIGNvbmZpZ3VyZWQuIElmIHRoZXJlIGlzIGEgcGVybWlzc2lvbiBjb25maWd1cmVkIHdlIGNoZWNrIHRoaXMKICAgICAgICAgICAgIyBhbmQgZGlzcGxheS9oaWRlIHRoZSBhY3Rpdml0eSBkaWFsb2cgbGluawogICAgICAgICAgICBteSAlUGVybWlzc2lvblJpZ2h0czsKICAgICAgICAgICAgbXkgJVBlcm1pc3Npb25BY3Rpdml0eURpYWxvZ0xpc3Q7CiAgICAgICAgICAgIEFDVElWSVRZRElBTE9HUEVSTUlTU0lPTjoKICAgICAgICAgICAgZm9yIG15ICRJbmRleCAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICV7JE5leHRBY3Rpdml0eURpYWxvZ3N9ICkgewogICAgICAgICAgICAgICAgbXkgJEN1cnJlbnRBY3Rpdml0eURpYWxvZ0VudGl0eUlEID0gJE5leHRBY3Rpdml0eURpYWxvZ3MtPnskSW5kZXh9OwogICAgICAgICAgICAgICAgbXkgJEN1cnJlbnRBY3Rpdml0eURpYWxvZyAgICAgICAgID0gJEFjdGl2aXR5RGlhbG9nT2JqZWN0LT5BY3Rpdml0eURpYWxvZ0dldCgKICAgICAgICAgICAgICAgICAgICBJbnRlcmZhY2UgICAgICAgICAgICAgID0+ICdBZ2VudEludGVyZmFjZScsCiAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlEaWFsb2dFbnRpdHlJRCA9PiAkQ3VycmVudEFjdGl2aXR5RGlhbG9nRW50aXR5SUQKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgYW4gaW50ZXJmYWNlIGxvb2t1cC1saXN0CiAgICAgICAgICAgICAgICBteSAlSW50ZXJmYWNlTG9va3VwID0gbWFwIHsgJF8gPT4gMSB9IEB7ICRDdXJyZW50QWN0aXZpdHlEaWFsb2ctPntJbnRlcmZhY2V9IH07CgogICAgICAgICAgICAgICAgbmV4dCBBQ1RJVklUWURJQUxPR1BFUk1JU1NJT04gaWYgISRJbnRlcmZhY2VMb29rdXB7QWdlbnRJbnRlcmZhY2V9OwoKICAgICAgICAgICAgICAgIGlmICggJEN1cnJlbnRBY3Rpdml0eURpYWxvZy0+e1Blcm1pc3Npb259ICkgewoKICAgICAgICAgICAgICAgICAgICAjIHBlcmZvcm1hbmNlLWJvb3N0L2NhY2hlCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGVybWlzc2lvblJpZ2h0c3sgJEN1cnJlbnRBY3Rpdml0eURpYWxvZy0+e1Blcm1pc3Npb259IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRQZXJtaXNzaW9uUmlnaHRzeyAkQ3VycmVudEFjdGl2aXR5RGlhbG9nLT57UGVybWlzc2lvbn0gfSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICA9PiAkQ3VycmVudEFjdGl2aXR5RGlhbG9nLT57UGVybWlzc2lvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICggISRQZXJtaXNzaW9uUmlnaHRzeyAkQ3VycmVudEFjdGl2aXR5RGlhbG9nLT57UGVybWlzc2lvbn0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBBQ1RJVklUWURJQUxPR1BFUk1JU1NJT047CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRQZXJtaXNzaW9uQWN0aXZpdHlEaWFsb2dMaXN0eyRJbmRleH0gPSAkQ3VycmVudEFjdGl2aXR5RGlhbG9nRW50aXR5SUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmVkdWNlIG5leHQgYWN0aXZpdHkgZGlhbG9ncyB0byB0aGUgb25lcyB0aGF0IGhhdmUgcGVybWlzc2lvbnMKICAgICAgICAgICAgJE5leHRBY3Rpdml0eURpYWxvZ3MgPSBcJVBlcm1pc3Npb25BY3Rpdml0eURpYWxvZ0xpc3Q7CgogICAgICAgICAgICAjIGdldCBBQ0wgcmVzdHJpY3Rpb25zCiAgICAgICAgICAgIG15ICRBQ0wgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2woCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlUGVybWlzc2lvbkFjdGl2aXR5RGlhbG9nTGlzdCwKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFRpY2tldHtUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBBY3Rpb24gICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgIFJldHVyblR5cGUgICAgPT4gJ0FjdGl2aXR5RGlhbG9nJywKICAgICAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJy0nLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJEFDTCkgewogICAgICAgICAgICAgICAgJXskTmV4dEFjdGl2aXR5RGlhbG9nc30gPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2xEYXRhKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnTmV4dEFjdGl2aXR5RGlhbG9ncycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAnQWN0aXZpdHlOYW1lJyA9PiAkQWN0aXZpdHlOYW1lLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJE5leHRBY3Rpdml0eURpYWxvZ3MpICkgewogICAgICAgICAgICAgICAgZm9yIG15ICROZXh0QWN0aXZpdHlEaWFsb2dLZXkgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAleyROZXh0QWN0aXZpdHlEaWFsb2dzfSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkQWN0aXZpdHlEaWFsb2dEYXRhID0gJEFjdGl2aXR5RGlhbG9nT2JqZWN0LT5BY3Rpdml0eURpYWxvZ0dldCgKICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJmYWNlICAgICAgICAgICAgICA9PiAnQWdlbnRJbnRlcmZhY2UnLAogICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eURpYWxvZ0VudGl0eUlEID0+ICROZXh0QWN0aXZpdHlEaWFsb2dzLT57JE5leHRBY3Rpdml0eURpYWxvZ0tleX0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBpZiBkaXJlY3Qgc3VibWl0IGlzIGFjdGl2ZSBmb3IgdGhpcyBhY3Rpdml0eSBkaWFsb2cKICAgICAgICAgICAgICAgICAgICBteSAkRGlyZWN0U3VibWl0ID0gJEFjdGl2aXR5RGlhbG9nRGF0YS0+e0RpcmVjdFN1Ym1pdH07CiAgICAgICAgICAgICAgICAgICAgaWYgKCBhbnkgeyAkQWN0aXZpdHlEaWFsb2dEYXRhLT57RmllbGRzfXskX317RGlzcGxheX0gfSBrZXlzICRBY3Rpdml0eURpYWxvZ0RhdGEtPntGaWVsZHN9LT4lKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJERpcmVjdFN1Ym1pdCA9IDA7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoJERpcmVjdFN1Ym1pdCkgewogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FjdGl2aXR5RGlhbG9nRGlyZWN0U3VibWl0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5RGlhbG9nRW50aXR5SUQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJE5leHRBY3Rpdml0eURpYWxvZ3MtPnskTmV4dEFjdGl2aXR5RGlhbG9nS2V5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgPT4gJEFjdGl2aXR5RGlhbG9nRGF0YS0+e1N1Ym1pdEJ1dHRvblRleHR9IHx8ICRBY3Rpdml0eURpYWxvZ0RhdGEtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jZXNzRW50aXR5SUQgPT4gJFRpY2tldHskUHJvY2Vzc0VudGl0eUlERmllbGR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgICA9PiAkVGlja2V0e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FjdGl2aXR5RGlhbG9nJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5RGlhbG9nRW50aXR5SUQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJE5leHRBY3Rpdml0eURpYWxvZ3MtPnskTmV4dEFjdGl2aXR5RGlhbG9nS2V5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgPT4gJEFjdGl2aXR5RGlhbG9nRGF0YS0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2Nlc3NFbnRpdHlJRCA9PiAkVGlja2V0eyRQcm9jZXNzRW50aXR5SURGaWVsZH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgID0+ICRUaWNrZXR7VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdOb0FjdGl2aXR5RGlhbG9ncycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdG8gc3RvcmUgZHluYW1pYyBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBvdmVydmlldyB3aWRnZXQKICAgICAgICBteSAlRmllbGRUb0dyb3VwSW5kZXg7CiAgICAgICAgbXkgQFdpZGdldEZpZWxkQ29udGVudDsKICAgICAgICBteSAkR3JvdXBJbmRleCA9IDA7CiAgICAgICAgZm9yIG15ICRHcm91cE5hbWUgKCBzb3J0IGtleXMgJXsgJFdpZGdldERhdGF7V2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzfSB9ICkgewogICAgICAgICAgICBteSAkR3JvdXBGaWVsZHNTdHJpbmcgPSAkV2lkZ2V0RGF0YXtXaWRnZXREeW5hbWljRmllbGRHcm91cHN9eyRHcm91cE5hbWV9OwogICAgICAgICAgICAkR3JvdXBGaWVsZHNTdHJpbmcgPX4gc3tcc317fXhtc2c7CgogICAgICAgICAgICBmb3IgbXkgJEZpZWxkICggc3BsaXQgLywvLCAkR3JvdXBGaWVsZHNTdHJpbmcgKSB7CiAgICAgICAgICAgICAgICAkRmllbGRUb0dyb3VwSW5kZXh7JEZpZWxkfSA9ICRHcm91cEluZGV4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAkV2lkZ2V0RmllbGRDb250ZW50WyAkR3JvdXBJbmRleCsrIF17TmFtZX0gPSAkR3JvdXBOYW1lOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgZHluYW1pYyBmaWVsZCBjb25maWcgZm9yIGZyb250ZW5kIG1vZHVsZQogICAgICAgIG15ICREeW5hbWljRmllbGRGaWx0ZXIgPSB7CiAgICAgICAgICAgICV7ICRDb25maWdPYmplY3QtPkdldCgiVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRab29tIiktPntEeW5hbWljRmllbGR9IHx8IHt9IH0sCiAgICAgICAgICAgICV7CiAgICAgICAgICAgICAgICAkV2lkZ2V0RGF0YXtXaWRnZXREeW5hbWljRmllbGR9IHx8IHt9CiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKCiAgICAgICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciB0aWNrZXQgb2JqZWN0CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICAgICAgVmFsaWQgICAgICAgPT4gMSwKICAgICAgICAgICAgT2JqZWN0VHlwZSAgPT4gWydUaWNrZXQnXSwKICAgICAgICAgICAgRmllbGRGaWx0ZXIgPT4gJER5bmFtaWNGaWVsZEZpbHRlciB8fCB7fSwKICAgICAgICApOwogICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aWNrZXQgb2JqZWN0CiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhZGVmaW5lZCAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJFRpY2tldHsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gZXEgJyc7CgogICAgICAgICAgICAjIHVzZSB0cmFuc2xhdGlvbiBoZXJlIHRvIGJlIGFibGUgdG8gcmVkdWNlIHRoZSBjaGFyYWN0ZXIgbGVuZ3RoIGluIHRoZSB0ZW1wbGF0ZQogICAgICAgICAgICBteSAkTGFiZWwgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH0gKTsKCiAgICAgICAgICAgIGlmICggJFdpZGdldERhdGF7V2lkZ2V0RHluYW1pY0ZpZWxkfXsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gKSB7CiAgICAgICAgICAgICAgICBteSAkVmFsdWVTdHJnID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFRpY2tldHsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0sCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgTXVsdGlMaW5rICAgICAgICAgID0+IDEsCgogICAgICAgICAgICAgICAgICAgICMgbm8gVmFsdWVNYXhDaGFycyBoZXJlLCBlbm91Z2ggc3BhY2UgYXZhaWxhYmxlCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgdW5ncm91cGVkIGZpZWxkcyB3aWxsIGVuZCB1cCBpbiB0aGUgbGFzdCBncm91cCB3aXRob3V0IG5hbWUKICAgICAgICAgICAgICAgIG15ICRJbmRleCA9ICRGaWVsZFRvR3JvdXBJbmRleHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gLy8gJEdyb3VwSW5kZXg7CiAgICAgICAgICAgICAgICBwdXNoIEB7ICRXaWRnZXRGaWVsZENvbnRlbnRbJEluZGV4XXtGaWVsZHN9IH0sIHsKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgIFZhbHVlS2V5ICAgICAgICAgICAgICAgICAgICA9PiAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgIExpbmsgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57TGlua30sCiAgICAgICAgICAgICAgICAgICAgTGlua1ByZXZpZXcgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntMaW5rUHJldmlld30sCgogICAgICAgICAgICAgICAgICAgICMgSW5jbHVkZSB1bmlxdWUgcGFyYW1ldGVyIHdpdGggZHluYW1pYyBmaWVsZCBuYW1lIGluIGNhc2Ugb2YgY29sbGlzaW9uIHdpdGggb3RoZXJzLgogICAgICAgICAgICAgICAgICAgICMgICBQbGVhc2Ugc2VlIGJ1ZyMxMzM2MiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfSIgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYnVpbGQgZHluYW1pYyBmaWVsZCBsb29rdXAgaGFzaCBmb3Igd2lkZ2V0IGdyb3VwcwogICAgICAgIG15ICVEeW5hbWljRmllbGRMb29rdXAgPSBtYXAgeyAoICRfLT57TmFtZX0gPT4gJF8gKSB9ICREeW5hbWljRmllbGQtPkAqOwoKICAgICAgICAjIG91dHB1dCBkeW5hbWljIGZpZWxkcyByZWdpc3RlcmVkIGZvciBhIGdyb3VwIGluIHRoZSBvdmVydmlldyB3aWRnZXQKICAgICAgICBteSBARmllbGRzSW5BR3JvdXA7CiAgICAgICAgR1JPVVA6CiAgICAgICAgZm9yIG15ICRHcm91cENvbnRlbnQgKEBXaWRnZXRGaWVsZENvbnRlbnQpIHsKICAgICAgICAgICAgbmV4dCBHUk9VUCBpZiAhJEdyb3VwQ29udGVudC0+e0ZpZWxkc307CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3V2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdXaWRnZXREeW5hbWljRmllbGRHcm91cFNlcGFyYXRvcicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRHcm91cENvbnRlbnQtPntOYW1lfSAvLyBUcmFuc2xhdGFibGUoJ0ZpZWxkcyB3aXRoIG5vIGdyb3VwJyksCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgZm9yIG15ICRGaWVsZCAoICRHcm91cENvbnRlbnQtPntGaWVsZHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3V2lkZ2V0RHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgPT4gJEZpZWxkLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICA9PiAkRmllbGQtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkREZDb25maWcgPSAkRHluYW1pY0ZpZWxkTG9va3VweyAkRmllbGQtPntOYW1lfSB9OwoKICAgICAgICAgICAgICAgICMgaWYgd2UgYXJlIGRlYWxpbmcgd2l0aCBhIGxlbnMgZmllbGQgcG9pbnRpbmcgdG8gYSBTZXQsIGdldCB0aGUgY29uZmlnIG9mIHRoZSBTZXQKICAgICAgICAgICAgICAgIGlmICggJERGQ29uZmlnLT57RmllbGRUeXBlfSBlcSAnTGVucycgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJEF0dHJpYnV0ZURGID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIElEID0+ICRERkNvbmZpZy0+e0NvbmZpZ317QXR0cmlidXRlREZ9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlREYtPntGaWVsZFR5cGV9IGVxICdTZXQnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkREZDb25maWcgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlREYtPiUqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJERGQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCA9PiAkREZDb25maWctPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgc2V0IGZpZWxkCiAgICAgICAgICAgICAgICBpZiAoICRERkNvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ1NldCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NldEZpZWxkJywKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkU2V0U2VwYXJhdG9yJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCA9PiAkRmllbGQtPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbXkgQEluY2x1ZGVkRmllbGRzID0gJFNlbGYtPl9HZXRJbmNsdWRlZEZpZWxkT3JkZXJlZCgKICAgICAgICAgICAgICAgICAgICAgICAgSW5jbHVkZSA9PiAkREZDb25maWctPntDb25maWd9e0luY2x1ZGV9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIFNFVElOREVYOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkVmFsdWVJbmRleCAoIDAgLi4gJCN7ICRUaWNrZXR7ICdEeW5hbWljRmllbGRfJyAuICRGaWVsZC0+e05hbWV9IH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFZhbHVlSXRlbSA9ICRUaWNrZXR7ICdEeW5hbWljRmllbGRfJyAuICRGaWVsZC0+e05hbWV9IH1bJFZhbHVlSW5kZXhdOwoKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBTRVRJTkRFWCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJFZhbHVlSXRlbSk7CgogICAgICAgICAgICAgICAgICAgICAgICBJTk5FUkZJRUxEOgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEluY2x1ZGVGaWVsZCAoQEluY2x1ZGVkRmllbGRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IElOTkVSRklFTEQgaWYgIWRlZmluZWQgJFZhbHVlSXRlbS0+eyRJbmNsdWRlRmllbGR9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBJTk5FUkZJRUxEIGlmICRWYWx1ZUl0ZW0tPnskSW5jbHVkZUZpZWxkfSBlcSAnJzsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkSW5jbHVkZURGQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkSW5jbHVkZUZpZWxkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkSW5jbHVkZURGQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWVJdGVtLT57ICRJbmNsdWRlREZDb25maWctPntOYW1lfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vIFZhbHVlTWF4Q2hhcnMgaGVyZSwgZW5vdWdoIHNwYWNlIGF2YWlsYWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHVzZSB0cmFuc2xhdGlvbiBoZXJlIHRvIGJlIGFibGUgdG8gcmVkdWNlIHRoZSBjaGFyYWN0ZXIgbGVuZ3RoIGluIHRoZSB0ZW1wbGF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJExhYmVsID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkSW5jbHVkZURGQ29uZmlnLT57TGFiZWx9ICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJUluY2x1ZGVGaWVsZCA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSW5jbHVkZURGQ29uZmlnLT57TmFtZX0gPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgPT4gJEluY2x1ZGVERkNvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlS2V5ICAgICAgICAgICAgICAgICA9PiAkVmFsdWVJdGVtLT57ICRJbmNsdWRlREZDb25maWctPntOYW1lfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluayAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5rUHJldmlldyAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e0xpbmtQcmV2aWV3fSwKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJbmNsdWRlIHVuaXF1ZSBwYXJhbWV0ZXIgd2l0aCBkeW5hbWljIGZpZWxkIG5hbWUgaW4gY2FzZSBvZiBjb2xsaXNpb24gd2l0aCBvdGhlcnMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIFBsZWFzZSBzZWUgYnVnIzEzMzYyIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfJEluY2x1ZGVERkNvbmZpZy0+e05hbWV9IiA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NldER5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgID0+ICRJbmNsdWRlRmllbGR7TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICRJbmNsdWRlRmllbGR7TGFiZWx9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdTZXREeW5hbWljRmllbGRWYWx1ZU92ZXJsYXlUcmlnZ2VyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkSW5jbHVkZURGQ29uZmlnLT57TGlua30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NldER5bmFtaWNGaWVsZExpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRJbmNsdWRlRmllbGR7TmFtZX0gPT4gJEluY2x1ZGVGaWVsZHtUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlVGlja2V0LAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxpYXMgZm9yIHRpY2tldCB0aXRsZSwgVGl0bGUgd2lsbCBiZSBvdmVyd3JpdHRlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0VGl0bGUgPT4gJFRpY2tldHtUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICA9PiAkSW5jbHVkZUZpZWxke1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRJbmNsdWRlRmllbGR7VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluayAgICAgICAgPT4gJEluY2x1ZGVGaWVsZHtMaW5rfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmtQcmV2aWV3ID0+ICRJbmNsdWRlRmllbGR7TGlua1ByZXZpZXd9LAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSW5jbHVkZSB1bmlxdWUgcGFyYW1ldGVyIHdpdGggZHluYW1pYyBmaWVsZCBuYW1lIGluIGNhc2Ugb2YgY29sbGlzaW9uIHdpdGggb3RoZXJzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIFBsZWFzZSBzZWUgYnVnIzEzMzYyIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF8kSW5jbHVkZUZpZWxke05hbWV9IiA9PiAkSW5jbHVkZUZpZWxke1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NldER5bmFtaWNGaWVsZFBsYWluJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkSW5jbHVkZUZpZWxke1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRJbmNsdWRlRmllbGR7VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBGaWVsZHNJbkFHcm91cCwgJEZpZWxkLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkVmFsdWVJbmRleCAhPSAkI3sgJFRpY2tldHsgJ0R5bmFtaWNGaWVsZF8nIC4gJEZpZWxkLT57TmFtZX0gfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkU2V0VmFsdWVTZXBhcmF0b3InLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHN0YW5kYXJkIGZpZWxkCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnU3RhbmRhcmRGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJEZpZWxkLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCA9PiAkRmllbGQtPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3V2lkZ2V0RHluYW1pY0ZpZWxkVmFsdWVPdmVybGF5VHJpZ2dlcicsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkRmllbGQtPntMaW5rfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld1dpZGdldER5bmFtaWNGaWVsZExpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEZpZWxkLT57TGlua30gKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkSW5kZXggKCAwIC4uICQjeyAkRmllbGQtPntMaW5rfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdWYWx1ZUl0ZW1MaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRmllbGQtPntOYW1lfSA9PiAkRmllbGQtPntUaXRsZX1bJEluZGV4XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVUaWNrZXQsCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhbGlhcyBmb3IgdGlja2V0IHRpdGxlLCBUaXRsZSB3aWxsIGJlIG92ZXJ3cml0dGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXRUaXRsZSA9PiAkVGlja2V0e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgID0+ICRGaWVsZC0+e1ZhbHVlfVskSW5kZXhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZpZWxkLT57VGl0bGV9WyRJbmRleF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5rICAgICAgICA9PiAkRmllbGQtPntMaW5rfVskSW5kZXhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlua1ByZXZpZXcgPT4gJEZpZWxkLT57TGlua1ByZXZpZXd9WyRJbmRleF0sCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJbmNsdWRlIHVuaXF1ZSBwYXJhbWV0ZXIgd2l0aCBkeW5hbWljIGZpZWxkIG5hbWUgaW4gY2FzZSBvZiBjb2xsaXNpb24gd2l0aCBvdGhlcnMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgUGxlYXNlIHNlZSBidWcjMTMzNjIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkXyRGaWVsZC0+e05hbWV9IiA9PiAkRmllbGQtPntUaXRsZX1bJEluZGV4XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRJbmRleCAhPSAkI3sgJEZpZWxkLT57TGlua30gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdNdWx0aXZhbHVlU2VwYXJhdG9yTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdXaWRnZXREeW5hbWljRmllbGRMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdWYWx1ZUl0ZW1MaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEZpZWxkLT57TmFtZX0gPT4gJEZpZWxkLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlVGlja2V0LAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhbGlhcyBmb3IgdGlja2V0IHRpdGxlLCBUaXRsZSB3aWxsIGJlIG92ZXJ3cml0dGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpY2tldFRpdGxlID0+ICRUaWNrZXR7VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICA9PiAkRmllbGQtPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRGaWVsZC0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluayAgICAgICAgPT4gJEZpZWxkLT57TGlua30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmtQcmV2aWV3ID0+ICRGaWVsZC0+e0xpbmtQcmV2aWV3fSwKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSW5jbHVkZSB1bmlxdWUgcGFyYW1ldGVyIHdpdGggZHluYW1pYyBmaWVsZCBuYW1lIGluIGNhc2Ugb2YgY29sbGlzaW9uIHdpdGggb3RoZXJzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgUGxlYXNlIHNlZSBidWcjMTMzNjIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfJEZpZWxkLT57TmFtZX0iID0+ICRGaWVsZC0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld1dpZGdldER5bmFtaWNGaWVsZFBsYWluJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRGaWVsZC0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkRmllbGQtPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBwdXNoIEBGaWVsZHNJbkFHcm91cCwgJEZpZWxkLT57TmFtZX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBhcnRpY2xlIGZpbHRlciBpcyBhY3RpdmF0ZWQgaW4gc3lzY29uZmlnCiAgICBpZiAoICRTZWxmLT57QXJ0aWNsZUZpbHRlckFjdGl2ZX0gKSB7CgogICAgICAgIGlmICggJFNlbGYtPntab29tVGltZWxpbmV9ICkgewoKICAgICAgICAgICAgIyBidWlsZCBldmVudCB0eXBlIGxpc3QgZm9yIGZpbHRlciBkaWFsb2cKICAgICAgICAgICAgJFBhcmFte0V2ZW50VHlwZUZpbHRlclN0cmluZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICRTZWxmLT57SGlzdG9yeVR5cGVNYXBwaW5nfSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICRTZWxmLT57RXZlbnRUeXBlRmlsdGVyfS0+e0V2ZW50VHlwZUlEfSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgICAgICAgICAgU29ydCAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdFdmVudFR5cGVGaWx0ZXInLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgICAgICBLZXkgICA9PiAnQXJ0aWNsZUZpbHRlckRpYWxvZycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdFdmVudFR5cGVGaWx0ZXJEaWFsb2cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICBteSBAQ29tbXVuaWNhdGlvbkNoYW5uZWxzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbW11bmljYXRpb25DaGFubmVsJyktPkNoYW5uZWxMaXN0KAogICAgICAgICAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJUNoYW5uZWxzID0gbWFwIHsgJF8tPntDaGFubmVsSUR9ID0+ICRfLT57RGlzcGxheU5hbWV9IH0gQENvbW11bmljYXRpb25DaGFubmVsczsKCiAgICAgICAgICAgICMgYnVpbGQgYXJ0aWNsZSB0eXBlIGxpc3QgZm9yIGZpbHRlciBkaWFsb2cKICAgICAgICAgICAgJFBhcmFte0NoYW5uZWxzfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgPT4gXCVDaGFubmVscywKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICRTZWxmLT57QXJ0aWNsZUZpbHRlcn0tPntDb21tdW5pY2F0aW9uQ2hhbm5lbElEfSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgICAgICAgICAgU29ydCAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdDb21tdW5pY2F0aW9uQ2hhbm5lbEZpbHRlcicsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRQYXJhbXtDdXN0b21lclZpc2liaWxpdHl9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAwID0+IFRyYW5zbGF0YWJsZSgnSW52aXNpYmxlIG9ubHknKSwKICAgICAgICAgICAgICAgICAgICAxID0+IFRyYW5zbGF0YWJsZSgnVmlzaWJsZSBvbmx5JyksCiAgICAgICAgICAgICAgICAgICAgMiA9PiBUcmFuc2xhdGFibGUoJ1Zpc2libGUgYW5kIGludmlzaWJsZScpLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICRTZWxmLT57QXJ0aWNsZUZpbHRlcn0tPntDdXN0b21lclZpc2liaWxpdHl9IC8vIDIsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgICAgICAgICAgU29ydCAgICAgICAgPT4gJ051bWVyaWNLZXknLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0N1c3RvbWVyVmlzaWJpbGl0eUZpbHRlcicsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZ2V0IHNlbmRlciB0eXBlcwogICAgICAgICAgICBteSAlQXJ0aWNsZVNlbmRlclR5cGVzID0gJEFydGljbGVPYmplY3QtPkFydGljbGVTZW5kZXJUeXBlTGlzdCgpOwoKICAgICAgICAgICAgIyBidWlsZCBhcnRpY2xlIHNlbmRlciB0eXBlIGxpc3QgZm9yIGZpbHRlciBkaWFsb2cKICAgICAgICAgICAgJFBhcmFte0FydGljbGVTZW5kZXJUeXBlRmlsdGVyU3RyaW5nfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgPT4gXCVBcnRpY2xlU2VuZGVyVHlwZXMsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEICA9PiAkU2VsZi0+e0FydGljbGVGaWx0ZXJ9LT57QXJ0aWNsZVNlbmRlclR5cGVJRH0sCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICAgICAgICAgIFNvcnQgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAnQXJ0aWNsZVNlbmRlclR5cGVGaWx0ZXInLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFRpY2tldCBJRAogICAgICAgICAgICAkUGFyYW17VGlja2V0SUR9ID0gJFNlbGYtPntUaWNrZXRJRH07CgogICAgICAgICAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgICAgICBLZXkgICA9PiAnQXJ0aWNsZUZpbHRlckRpYWxvZycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdBcnRpY2xlRmlsdGVyRGlhbG9nJywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgdGlja2V0IG5lZWQgdG8gYmUgbWFya2VkIGFzIHNlZW4KICAgIG15ICRBcnRpY2xlQWxsU2VlbiA9IDE7CiAgICBBUlRJQ0xFOgogICAgZm9yIG15ICRBcnRpY2xlIChAQXJ0aWNsZUJveCkgewoKICAgICAgICAjIGlnbm9yZSBzeXN0ZW0gc2VuZGVyIHR5cGUKICAgICAgICBuZXh0IEFSVElDTEUKICAgICAgICAgICAgaWYgJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6Ok5ld0FydGljbGVJZ25vcmVTeXN0ZW1TZW5kZXInKQogICAgICAgICAgICAmJiAkQXJ0aWNsZVNlbmRlclR5cGVMaXN0eyAkQXJ0aWNsZS0+e1NlbmRlclR5cGVJRH0gfSBlcSAnc3lzdGVtJzsKCiAgICAgICAgIyBsYXN0IEFSVElDTEUgaWYgYXJ0aWNsZSB3YXMgbm90IHNob3duCiAgICAgICAgaWYgKCAhJEFydGljbGVGbGFnc3sgJEFydGljbGUtPntBcnRpY2xlSUR9IH0tPntTZWVufSApIHsKICAgICAgICAgICAgJEFydGljbGVBbGxTZWVuID0gMDsKICAgICAgICAgICAgbGFzdCBBUlRJQ0xFOwogICAgICAgIH0KICAgIH0KCiAgICAjIG1hcmsgdGlja2V0IGFzIHNlZW4gaWYgYWxsIGFydGljbGUgYXJlIHNob3duCiAgICBpZiAoJEFydGljbGVBbGxTZWVuKSB7CiAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0RmxhZ1NldCgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgIEtleSAgICAgID0+ICdTZWVuJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnQXJ0aWNsZVRhYmxlSGVpZ2h0JywKICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT57VXNlclRpY2tldFpvb21BcnRpY2xlVGFibGVIZWlnaHR9LAogICAgKTsKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnVGlja2V0OjpGcm9udGVuZDo6SFRNTEFydGljbGVIZWlnaHREZWZhdWx0JywKICAgICAgICBWYWx1ZSA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OkhUTUxBcnRpY2xlSGVpZ2h0RGVmYXVsdCcpLAogICAgKTsKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnVGlja2V0OjpGcm9udGVuZDo6SFRNTEFydGljbGVIZWlnaHRNYXgnLAogICAgICAgIFZhbHVlID0+ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6SFRNTEFydGljbGVIZWlnaHRNYXgnKSwKICAgICk7CiAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgS2V5ICAgPT4gJ0xhbmd1YWdlJywKICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgIEF0dGFjaG1lbnRWaWV3TWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoCiAgICAgICAgICAgICAgICAnQXJ0aWNsZSBjb3VsZCBub3QgYmUgb3BlbmVkISBQZXJoYXBzIGl0IGlzIG9uIGFub3RoZXIgYXJ0aWNsZSBwYWdlPycKICAgICAgICAgICAgKSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGluaXQganMKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1RpY2tldFpvb21Jbml0JywKICAgICk7CgogICAgIyByZXR1cm4gb3V0cHV0CiAgICByZXR1cm4gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRUaWNrZXRab29tJywKICAgICAgICBEYXRhICAgICAgICAgPT4geyAlUGFyYW0sICVUaWNrZXQsICVBY2xBY3Rpb24gfSwKICAgICk7Cn0KCnN1YiBfQXJ0aWNsZVRyZWUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlVGlja2V0ICAgICAgID0gJXsgJFBhcmFte1RpY2tldH0gfTsKICAgIG15ICVBcnRpY2xlRmxhZ3MgPSAleyAkUGFyYW17QXJ0aWNsZUZsYWdzfSB9OwogICAgbXkgQEFydGljbGVCb3ggICA9IEB7ICRQYXJhbXtBcnRpY2xlQm94fSB9OwogICAgbXkgJEFydGljbGVJRCAgICA9ICRQYXJhbXtBcnRpY2xlSUR9OwogICAgbXkgJFRhYmxlQ2xhc3NlczsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgYnVpbGQgdGhyZWFkIHN0cmluZwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnVHJlZScsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgVGFibGVDbGFzc2VzID0+ICRUYWJsZUNsYXNzZXMsCiAgICAgICAgICAgIFpvb21UaW1lbGluZSA9PiAkU2VsZi0+e1pvb21UaW1lbGluZX0sCiAgICAgICAgfSwKICAgICk7CgogICAgaWYgKCAkUGFyYW17UGFnaW5hdGlvbn0gJiYgISRTZWxmLT57Wm9vbVRpbWVsaW5lfSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQXJ0aWNsZVBhZ2VzJywKICAgICAgICAgICAgRGF0YSA9PiAkUGFyYW17UGFnaW5hdGlvbn0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSBAQXJ0aWNsZVZpZXdzID0gKAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0NvbGxhcHNlJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdTaG93IG9uZSBhcnRpY2xlJyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdFeHBhbmQnLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ1Nob3cgYWxsIGFydGljbGVzJyksCiAgICAgICAgfSwKICAgICk7CgogICAgIyBBZGQgdGltZWxpbmUgdmlldyBvcHRpb24gb25seSBpZiBlbmFibGVkLgogICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1RpbWVsaW5lVmlld0VuYWJsZWQnKSApIHsKICAgICAgICBwdXNoIEBBcnRpY2xlVmlld3MsIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ1RpbWVsaW5lJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdTaG93IFRpY2tldCBUaW1lbGluZSBWaWV3JyksCiAgICAgICAgfTsKICAgIH0KCiAgICBteSAkQXJ0aWNsZVZpZXdTZWxlY3RlZCA9ICdDb2xsYXBzZSc7CiAgICBpZiAoICRTZWxmLT57Wm9vbUV4cGFuZH0gKSB7CiAgICAgICAgJEFydGljbGVWaWV3U2VsZWN0ZWQgPSAnRXhwYW5kJzsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntab29tVGltZWxpbmV9ICkgewogICAgICAgICRBcnRpY2xlVmlld1NlbGVjdGVkID0gJ1RpbWVsaW5lJzsKICAgIH0KCiAgICBteSAkQXJ0aWNsZVZpZXdTdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXEBBcnRpY2xlVmlld3MsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJEFydGljbGVWaWV3U2VsZWN0ZWQsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICBTb3J0ICAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgIE5hbWUgICAgICAgID0+ICdBcnRpY2xlVmlldycsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgU2VuZCBkYXRhIHRvIEpTLgogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdBcnRpY2xlVmlld1N0cmcnLAogICAgICAgIFZhbHVlID0+ICRBcnRpY2xlVmlld1N0cmcsCiAgICApOwogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdab29tRXhwYW5kJywKICAgICAgICBWYWx1ZSA9PiAkU2VsZi0+e1pvb21FeHBhbmR9LAogICAgKTsKCiAgICAjIGFydGljbGUgZmlsdGVyIGlzIGFjdGl2YXRlZCBpbiBzeXNjb25maWcKICAgIGlmICggJFNlbGYtPntBcnRpY2xlRmlsdGVyQWN0aXZlfSApIHsKCiAgICAgICAgIyBkZWZpbmUgaGlnaGxpZ2h0IHN0eWxlIGZvciBsaW5rcyBpZiBmaWx0ZXIgaXMgYWN0aXZlCiAgICAgICAgbXkgJEhpZ2hsaWdodFN0eWxlID0gJ21lbnUnOwogICAgICAgIGlmICggJFNlbGYtPntBcnRpY2xlRmlsdGVyfSApIHsKICAgICAgICAgICAgJEhpZ2hsaWdodFN0eWxlID0gJ1ByaW9yaXR5SUQtNSc7CiAgICAgICAgfQoKICAgICAgICAjIGJ1aWxkIGFydGljbGUgZmlsdGVyIGxpbmtzCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0FydGljbGVGaWx0ZXJEaWFsb2dMaW5rJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICBIaWdobGlnaHRTdHlsZSA9PiAkSGlnaGxpZ2h0U3R5bGUsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBidWlsZCBhcnRpY2xlIGZpbHRlciByZXNldCBsaW5rIG9ubHkgaWYgZmlsdGVyIGlzIHNldAogICAgICAgIGlmICgKICAgICAgICAgICAgKCAhJFNlbGYtPntab29tVGltZWxpbmV9ICYmIElzSGFzaFJlZldpdGhEYXRhKCAkU2VsZi0+e0FydGljbGVGaWx0ZXJ9ICkgKQogICAgICAgICAgICB8fCAoICRTZWxmLT57Wm9vbVRpbWVsaW5lfSAmJiAkU2VsZi0+e0V2ZW50VHlwZUZpbHRlcn0gKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FydGljbGVGaWx0ZXJSZXNldExpbmsnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRUaWNrZXRPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwogICAgbXkgJEFydGljbGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBDcmVhdGUgYSBsaXN0IG9mIGFydGljbGUgc2VuZGVyIHR5cGVzIGZvciBsb29rdXAKICAgIG15ICVBcnRpY2xlU2VuZGVyVHlwZUxpc3QgPSAkQXJ0aWNsZU9iamVjdC0+QXJ0aWNsZVNlbmRlclR5cGVMaXN0KCk7CgogICAgIyBzaG93IGFydGljbGUgdHJlZQogICAgaWYgKCAhJFNlbGYtPntab29tVGltZWxpbmV9ICkgewoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQXJ0aWNsZUxpc3QnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIFpvb21FeHBhbmRTb3J0T3JkZXIgPT4gJFNlbGYtPntab29tRXhwYW5kU29ydH0gZXEgJ3JldmVyc2UnID8gJ0Rlc2NlbmRpbmcnIDogJ0FzY2VuZGluZycsCiAgICAgICAgICAgICAgICBUYWJsZUNsYXNzZXMgICAgICAgID0+ICRUYWJsZUNsYXNzZXMsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBmZXRjaGluZyBhY2NvdW50ZWQgdGltZXMgb2YgYWxsIGFydGljbGVzIHRvIGNoZWNrIGlmIHdlIGRpc3BsYXkgdGhlIGNvbHVtbgogICAgICAgIG15ICVBcnRpY2xlQWNjb3VudGVkVGltZXM7CiAgICAgICAgbXkgJFNob3dUaW1lVW5pdHMgPSAwOwogICAgICAgIGlmICggJFNlbGYtPntDb25maWd9e0FydGljbGVMaXN0U2hvd1RpbWVVbml0c30gKSB7CiAgICAgICAgICAgIGZvciBteSAkQXJ0aWNsZVRtcCAoQEFydGljbGVCb3gpIHsKCiAgICAgICAgICAgICAgICAjIEdldCBhY2NvdW50ZWQgdGltZSBmb3IgYXJ0aWNsZSB1c2luZyBBcnRpY2xlQWNjb3VudGVkVGltZUdldAogICAgICAgICAgICAgICAgJEFydGljbGVBY2NvdW50ZWRUaW1lc3sgJEFydGljbGVUbXAtPntBcnRpY2xlSUR9IH0gPSAkQXJ0aWNsZU9iamVjdC0+QXJ0aWNsZUFjY291bnRlZFRpbWVHZXQoCiAgICAgICAgICAgICAgICAgICAgQXJ0aWNsZUlEID0+ICRBcnRpY2xlVG1wLT57QXJ0aWNsZUlEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFNob3dUaW1lVW5pdHMgPSAoIGFueSB7ICRfICE9IDAgfSB2YWx1ZXMgJUFydGljbGVBY2NvdW50ZWRUaW1lcyApID8gMSA6IDA7CiAgICAgICAgICAgIGlmICgkU2hvd1RpbWVVbml0cykgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnVGltZVVuaXRIZWFkZXInLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgQVJUSUNMRToKICAgICAgICBmb3IgbXkgJEFydGljbGVUbXAgKEBBcnRpY2xlQm94KSB7CiAgICAgICAgICAgIG15ICVBcnRpY2xlID0gJEFydGljbGVUbXAtPiUqOwoKICAgICAgICAgICAgIyBhcnRpY2xlIGZpbHRlciBpcyBhY3RpdmF0ZWQgaW4gc3lzY29uZmlnIGFuZCB0aGVyZSBhcmUgYXJ0aWNsZXMKICAgICAgICAgICAgIyB0aGF0IHBhc3NlZCB0aGUgZmlsdGVyCiAgICAgICAgICAgIGlmICggJFNlbGYtPntBcnRpY2xlRmlsdGVyQWN0aXZlfSApIHsKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBcnRpY2xlRmlsdGVyfSAmJiAkU2VsZi0+e0FydGljbGVGaWx0ZXJ9LT57U2hvd25BcnRpY2xlSURzfSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBkbyBub3Qgc2hvdyBhcnRpY2xlIGluIHRyZWUgaWYgaXQgZG9lcyBub3QgbWF0Y2ggdGhlIGZpbHRlcgogICAgICAgICAgICAgICAgICAgIGlmICggISRTZWxmLT57QXJ0aWNsZUZpbHRlcn0tPntTaG93bkFydGljbGVJRHN9LT57ICRBcnRpY2xle0FydGljbGVJRH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBBUlRJQ0xFOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzaG93IGFydGljbGUgZmxhZ3MKICAgICAgICAgICAgbXkgJENsYXNzICAgICAgPSAnJzsKICAgICAgICAgICAgbXkgJENsYXNzUm93ICAgPSAnJzsKICAgICAgICAgICAgbXkgJE5ld0FydGljbGUgPSAwOwoKICAgICAgICAgICAgIyBpZ25vcmUgc3lzdGVtIHNlbmRlciB0eXBlcwogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAhJEFydGljbGVGbGFnc3sgJEFydGljbGV7QXJ0aWNsZUlEfSB9LT57U2Vlbn0KICAgICAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICAgICAhJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6Ok5ld0FydGljbGVJZ25vcmVTeXN0ZW1TZW5kZXInKQogICAgICAgICAgICAgICAgICAgIHx8ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpOZXdBcnRpY2xlSWdub3JlU3lzdGVtU2VuZGVyJykKICAgICAgICAgICAgICAgICAgICAmJiAkQXJ0aWNsZVNlbmRlclR5cGVMaXN0eyAkQXJ0aWNsZXtTZW5kZXJUeXBlSUR9IH0gbmUgJ3N5c3RlbScKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJE5ld0FydGljbGUgPSAxOwoKICAgICAgICAgICAgICAgICMgc2hvdyB0aWNrZXQgZmxhZ3MKCiAgICAgICAgICAgICAgICAjIGFsd2F5cyBzaG93IGFyY2hpdmVkIHRpY2tldHMgYXMgc2VlbgogICAgICAgICAgICAgICAgaWYgKCAkVGlja2V0e0FyY2hpdmVGbGFnfSBuZSAneScgKSB7CiAgICAgICAgICAgICAgICAgICAgJENsYXNzICAgIC49ICcgVW5yZWFkQXJ0aWNsZXMnOwogICAgICAgICAgICAgICAgICAgICRDbGFzc1JvdyAuPSAnIFVucmVhZEFydGljbGVzJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGp1c3Qgc2hvdyB0aWNrZXQgZmxhZ3MgaWYgYWdlbnQgYmVsb25ncyB0byB0aGUgdGlja2V0CiAgICAgICAgICAgICAgICBteSAkU2hvd01ldGE7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntVc2VySUR9ID09ICRUaWNrZXR7T3duZXJJRH0KICAgICAgICAgICAgICAgICAgICB8fCAkU2VsZi0+e1VzZXJJRH0gPT0gJFRpY2tldHtSZXNwb25zaWJsZUlEfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkU2hvd01ldGEgPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCAhJFNob3dNZXRhICYmICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpXYXRjaGVyJykgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJVdhdGNoID0gJFRpY2tldE9iamVjdC0+VGlja2V0V2F0Y2hHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRBcnRpY2xle1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGlmICggJFdhdGNoeyAkU2VsZi0+e1VzZXJJRH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFNob3dNZXRhID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzaG93IHRpY2tldCBmbGFncwogICAgICAgICAgICAgICAgaWYgKCRTaG93TWV0YSkgewogICAgICAgICAgICAgICAgICAgICRDbGFzcyAuPSAnIFJlbWFya2FibGUnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJENsYXNzIC49ICcgT3JkaW5hcnknOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGlmIHRoaXMgaXMgdGhlIHNob3duIGFydGljbGUgLT0+IHNldCBjbGFzcyB0byBhY3RpdmUKICAgICAgICAgICAgaWYgKCAkQXJ0aWNsZUlEIGVxICRBcnRpY2xle0FydGljbGVJRH0gJiYgISRTZWxmLT57Wm9vbUV4cGFuZH0gKSB7CiAgICAgICAgICAgICAgICAkQ2xhc3NSb3cgLj0gJyBBY3RpdmUnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkVG1wU3ViamVjdCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFN1YmplY3RDbGVhbigKCiAgICAgICAgICAgICAgICBUaWNrZXROdW1iZXIgPT4gJFRpY2tldHtUaWNrZXROdW1iZXJ9LAogICAgICAgICAgICAgICAgU3ViamVjdCAgICAgID0+ICRBcnRpY2xle1N1YmplY3R9IHx8ICcnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJUFydGljbGVGaWVsZHMgPSAkTGF5b3V0T2JqZWN0LT5BcnRpY2xlRmllbGRzKAogICAgICAgICAgICAgICAgJUFydGljbGUsCiAgICAgICAgICAgICAgICBTaG93RGVsZXRlZEFydGljbGVzID0+ICRTZWxmLT57U2hvd0RlbGV0ZWRBcnRpY2xlc30KICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkU2hvd1RpbWVVbml0cykgewoKICAgICAgICAgICAgICAgIG15ICVUaW1lVW5pdEZpZWxkID0gKAogICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRBcnRpY2xlQWNjb3VudGVkVGltZXN7ICRBcnRpY2xlVG1wLT57QXJ0aWNsZUlEfSB9LAogICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICdUaW1lIFVuaXQnCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJEFydGljbGV7VGltZVVuaXR9ID0gJEFydGljbGVBY2NvdW50ZWRUaW1lc3sgJEFydGljbGVUbXAtPntBcnRpY2xlSUR9IH07CgogICAgICAgICAgICAgICAgJEFydGljbGVGaWVsZHN7VGltZVVuaXR9ID0gXCVUaW1lVW5pdEZpZWxkOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIEdldCB0cmFuc21pc3Npb24gc3RhdHVzIGluZm9ybWF0aW9uIGZvciBlbWFpbCBhcnRpY2xlcy4KICAgICAgICAgICAgbXkgJFRyYW5zbWlzc2lvblN0YXR1czsKICAgICAgICAgICAgaWYgKCAkQXJ0aWNsZXtDaGFubmVsTmFtZX0gJiYgJEFydGljbGV7Q2hhbm5lbE5hbWV9IGVxICdFbWFpbCcgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNtaXNzaW9uU3RhdHVzID0gJEFydGljbGVPYmplY3QtPkJhY2tlbmRGb3JBcnRpY2xlKCVBcnRpY2xlKS0+QXJ0aWNsZVRyYW5zbWlzc2lvblN0YXR1cygKICAgICAgICAgICAgICAgICAgICBBcnRpY2xlSUQgICAgICAgICAgID0+ICRBcnRpY2xle0FydGljbGVJRH0sCiAgICAgICAgICAgICAgICAgICAgU2hvd0RlbGV0ZWRBcnRpY2xlcyA9PiAkU2VsZi0+e1Nob3dEZWxldGVkQXJ0aWNsZXN9CiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIGlmIHdlIG5lZWQgdG8gc2hvdyBhbHNvIGV4cGFuZC9jb2xsYXBzZSBpY29uCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnVHJlZUl0ZW0nLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJUFydGljbGUsCiAgICAgICAgICAgICAgICAgICAgQXJ0aWNsZUZpZWxkcyAgICAgID0+IFwlQXJ0aWNsZUZpZWxkcywKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgPT4gJENsYXNzLAogICAgICAgICAgICAgICAgICAgIENsYXNzUm93ICAgICAgICAgICA9PiAkQ2xhc3NSb3csCiAgICAgICAgICAgICAgICAgICAgU3ViamVjdCAgICAgICAgICAgID0+ICRUbXBTdWJqZWN0LAogICAgICAgICAgICAgICAgICAgIFRyYW5zbWlzc2lvblN0YXR1cyA9PiAkVHJhbnNtaXNzaW9uU3RhdHVzLAogICAgICAgICAgICAgICAgICAgIFpvb21FeHBhbmQgICAgICAgICA9PiAkU2VsZi0+e1pvb21FeHBhbmR9LAogICAgICAgICAgICAgICAgICAgIFpvb21FeHBhbmRTb3J0ICAgICA9PiAkU2VsZi0+e1pvb21FeHBhbmRTb3J0fSwKICAgICAgICAgICAgICAgICAgICBTaG93VGltZVVuaXRzICAgICAgPT4gJFNob3dUaW1lVW5pdHMsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgYXJ0aWNsZSBmbGFncwogICAgICAgICAgICAjIEFsd2F5cyB1c2UgdXNlciBpZCAxIGJlY2F1c2Ugb3RoZXIgdXNlcnMgYWxzbyBoYXZlIHRvIHNlZSB0aGUgaW1wb3J0YW50IGZsYWcKICAgICAgICAgICAgbXkgJUFydGljbGVJbXBvcnRhbnRGbGFncyA9ICRBcnRpY2xlT2JqZWN0LT5BcnRpY2xlRmxhZ0dldCgKICAgICAgICAgICAgICAgIEFydGljbGVJRCA9PiAkQXJ0aWNsZXtBcnRpY2xlSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNob3cgaW1wb3J0YW50IGZsYWcKICAgICAgICAgICAgaWYgKCAkQXJ0aWNsZUltcG9ydGFudEZsYWdze0ltcG9ydGFudH0gKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdUcmVlSXRlbUltcG9ydGFudEFydGljbGUnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFsd2F5cyBzaG93IGFyY2hpdmVkIHRpY2tldHMgYXMgc2VlbgogICAgICAgICAgICBpZiAoICROZXdBcnRpY2xlICYmICRUaWNrZXR7QXJjaGl2ZUZsYWd9IG5lICd5JyApIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1RyZWVJdGVtTmV3QXJ0aWNsZScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVBcnRpY2xlLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAkQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQnVnZml4IGZvciBJRTc6IGEgdGFibGUgY2VsbCBzaG91bGQgbm90IGJlIGVtcHR5CiAgICAgICAgICAgICMgKGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZSBjZWxsIGJvcmRlcnMgYXJlIG5vdCBzaG93bik6CiAgICAgICAgICAgICMgd2UgYWRkIGFuIGVtcHR5IGVsZW1lbnQgaGVyZQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1RyZWVJdGVtTm9OZXdBcnRpY2xlJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBEZXRlcm1pbmUgY29tbXVuaWNhdGlvbiBkaXJlY3Rpb24uCiAgICAgICAgICAgIGlmICggJEFydGljbGV7Q2hhbm5lbE5hbWV9IGVxICdJbnRlcm5hbCcgKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnVHJlZUl0ZW1EaXJlY3Rpb25JbnRlcm5hbCcgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBcnRpY2xlU2VuZGVyVHlwZUxpc3R7ICRBcnRpY2xle1NlbmRlclR5cGVJRH0gfSBlcSAnY3VzdG9tZXInICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ1RyZWVJdGVtRGlyZWN0aW9uSW5jb21pbmcnICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnVHJlZUl0ZW1EaXJlY3Rpb25PdXRnb2luZycgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBHZXQgYXR0YWNobWVudCBpbmRleCAoZXhjbHVkaW5nIGJvZHkgYXR0YWNobWVudHMpLgogICAgICAgICAgICBteSAlQXRtSW5kZXg7CgogICAgICAgICAgICBpZiAoICEkQXJ0aWNsZXtBcnRpY2xlRGVsZXRlZH0gfHwgJFNlbGYtPntBcnRpY2xlU3RvcmFnZX0gPX4gbS9BcnRpY2xlU3RvcmFnZUZTLyApIHsKICAgICAgICAgICAgICAgICVBdG1JbmRleCA9ICRBcnRpY2xlT2JqZWN0LT5CYWNrZW5kRm9yQXJ0aWNsZSglQXJ0aWNsZSktPkFydGljbGVBdHRhY2htZW50SW5kZXgoCiAgICAgICAgICAgICAgICAgICAgQXJ0aWNsZUlEICAgICAgICAgICA9PiAkQXJ0aWNsZXtBcnRpY2xlSUR9LAogICAgICAgICAgICAgICAgICAgIFNob3dEZWxldGVkQXJ0aWNsZXMgPT4gJFNlbGYtPntTaG93RGVsZXRlZEFydGljbGVzfSwKICAgICAgICAgICAgICAgICAgICAleyAkU2VsZi0+e0V4Y2x1ZGVBdHRhY2htZW50c30gfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAlQXRtSW5kZXggPSAkQXJ0aWNsZU9iamVjdC0+QmFja2VuZEZvckFydGljbGUoJUFydGljbGUpLT5BcnRpY2xlQXR0YWNobWVudEluZGV4KAogICAgICAgICAgICAgICAgICAgIEFydGljbGVJRCAgICAgICAgICAgPT4gJEFydGljbGV7RGVsZXRlZFZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgU291cmNlQXJ0aWNsZUlEICAgICA9PiAkQXJ0aWNsZXtBcnRpY2xlSUR9LAogICAgICAgICAgICAgICAgICAgIFNob3dEZWxldGVkQXJ0aWNsZXMgPT4gJFNlbGYtPntTaG93RGVsZXRlZEFydGljbGVzfSwKICAgICAgICAgICAgICAgICAgICBWZXJzaW9uVmlldyAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgJXsgJFNlbGYtPntFeGNsdWRlQXR0YWNobWVudHN9IH0KICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJEFydGljbGV7QXRtc30gPSBcJUF0bUluZGV4OwoKICAgICAgICAgICAgIyBzaG93IGF0dGFjaG1lbnQgaW5mbwogICAgICAgICAgICAjIEJ1Z2ZpeCBmb3IgSUU3OiBhIHRhYmxlIGNlbGwgc2hvdWxkIG5vdCBiZSBlbXB0eQogICAgICAgICAgICAjIChiZWNhdXNlIG90aGVyd2lzZSB0aGUgY2VsbCBib3JkZXJzIGFyZSBub3Qgc2hvd24pOgogICAgICAgICAgICAjIHdlIGFkZCBhbiBlbXB0eSBlbGVtZW50IGhlcmUKICAgICAgICAgICAgaWYgKCAhJEFydGljbGV7QXRtc30gfHwgISV7ICRBcnRpY2xle0F0bXN9IH0gKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdUcmVlSXRlbU5vQXR0YWNobWVudCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBBUlRJQ0xFOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgIG15ICRBdHRhY2htZW50cyA9ICRTZWxmLT5fQ29sbGVjdEFydGljbGVBdHRhY2htZW50cygKICAgICAgICAgICAgICAgICAgICBBcnRpY2xlID0+IFwlQXJ0aWNsZSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnVHJlZUl0ZW1BdHRhY2htZW50JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgPT4gJEFydGljbGV7VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgICAgICBBcnRpY2xlSUQgICA9PiAkQXJ0aWNsZXtBcnRpY2xlSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBBdHRhY2htZW50cyA9PiAkQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBzaG93IHRpbWVsaW5lIHZpZXcKICAgIGVsc2UgewoKICAgICAgICAjIGdldCB0aWNrZXQgaGlzdG9yeQogICAgICAgIG15IEBIaXN0b3J5TGluZXMgPSAkVGlja2V0T2JqZWN0LT5IaXN0b3J5R2V0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGFydGljbGVzIGZvciBsYXRlciB1c2UKICAgICAgICBteSBAVGltZWxpbmVBcnRpY2xlQm94ID0gJEFydGljbGVPYmplY3QtPkFydGljbGVMaXN0KAogICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICBTaG93RGVsZXRlZEFydGljbGVzID0+ICRTZWxmLT57U2hvd0RlbGV0ZWRBcnRpY2xlc30KICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJEFydGljbGVJdGVtIChAVGltZWxpbmVBcnRpY2xlQm94KSB7CiAgICAgICAgICAgIG15ICRBcnRpY2xlQmFja2VuZE9iamVjdCA9ICRBcnRpY2xlT2JqZWN0LT5CYWNrZW5kRm9yQXJ0aWNsZSgKICAgICAgICAgICAgICAgICV7JEFydGljbGVJdGVtfSwKICAgICAgICAgICAgICAgIFNob3dEZWxldGVkQXJ0aWNsZXMgPT4gJFNlbGYtPntTaG93RGVsZXRlZEFydGljbGVzfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJUFydGljbGUgPSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVHZXQoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRTZWxmLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgQXJ0aWNsZUlEICAgICA9PiAkQXJ0aWNsZUl0ZW0tPntBcnRpY2xlSUR9LAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgUmVhbE5hbWVzICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBBcHBlbmQgYXJ0aWNsZSBtZXRhIGRhdGEuCiAgICAgICAgICAgICRBcnRpY2xlSXRlbSA9IHsKICAgICAgICAgICAgICAgICV7JEFydGljbGVJdGVtfSwKICAgICAgICAgICAgICAgICVBcnRpY2xlLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgbXkgJEFydGljbGVzQnlBcnRpY2xlSUQgPSB7fTsKICAgICAgICBmb3IgbXkgJEFydGljbGUgKCBzb3J0IEBUaW1lbGluZUFydGljbGVCb3ggKSB7CiAgICAgICAgICAgIG15ICRBcnRpY2xlQmFja2VuZE9iamVjdCA9ICRBcnRpY2xlT2JqZWN0LT5CYWNrZW5kRm9yQXJ0aWNsZSgKICAgICAgICAgICAgICAgICV7JEFydGljbGV9LAogICAgICAgICAgICAgICAgU2hvd0RlbGV0ZWRBcnRpY2xlcyA9PiAkU2VsZi0+e1Nob3dEZWxldGVkQXJ0aWNsZXN9CiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIEdldCBhdHRhY2htZW50IGluZGV4IChleGNsdWRpbmcgYm9keSBhdHRhY2htZW50cykuCiAgICAgICAgICAgIG15ICVBdG1JbmRleCA9ICRBcnRpY2xlQmFja2VuZE9iamVjdC0+QXJ0aWNsZUF0dGFjaG1lbnRJbmRleCgKICAgICAgICAgICAgICAgIEFydGljbGVJRCA9PiAkQXJ0aWNsZS0+e0FydGljbGVJRH0sCiAgICAgICAgICAgICAgICAleyAkU2VsZi0+e0V4Y2x1ZGVBdHRhY2htZW50c30gfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJEFydGljbGUtPntBdG1zfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcJUF0bUluZGV4OwogICAgICAgICAgICAkQXJ0aWNsZS0+e0JhY2tlbmR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICRBcnRpY2xlQmFja2VuZE9iamVjdC0+Q2hhbm5lbE5hbWVHZXQoKTsKICAgICAgICAgICAgJEFydGljbGVzQnlBcnRpY2xlSUQtPnsgJEFydGljbGUtPntBcnRpY2xlSUR9IH0gPSAkQXJ0aWNsZTsKCiAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMgSFRNTCBib2R5IGF0dGFjaG1lbnQuCiAgICAgICAgICAgIG15ICVBdHRhY2htZW50SW5kZXhIVE1MQm9keSA9ICRBcnRpY2xlQmFja2VuZE9iamVjdC0+QXJ0aWNsZUF0dGFjaG1lbnRJbmRleCgKICAgICAgICAgICAgICAgIEFydGljbGVJRCAgICA9PiAkQXJ0aWNsZS0+e0FydGljbGVJRH0sCiAgICAgICAgICAgICAgICBPbmx5SFRNTEJvZHkgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgKCAkQXJ0aWNsZS0+e0hUTUxCb2R5QXR0YWNobWVudElEfSApID0gc29ydCBrZXlzICVBdHRhY2htZW50SW5kZXhIVE1MQm9keTsKICAgICAgICB9CgogICAgICAgICMgZG8gbm90IGRpc3BsYXkgdGhlc2UgdHlwZXMKICAgICAgICBteSBAVHlwZXNEb2RnZSA9IHF3KAogICAgICAgICAgICBNaXNjCiAgICAgICAgICAgIEFyY2hpdmVGbGFnVXBkYXRlCiAgICAgICAgICAgIExvb3BQcm90ZWN0aW9uCiAgICAgICAgICAgIFJlbW92ZQogICAgICAgICAgICBTdWJzY3JpYmUKICAgICAgICAgICAgVW5zdWJzY3JpYmUKICAgICAgICAgICAgU3lzdGVtUmVxdWVzdAogICAgICAgICAgICBTZW5kQWdlbnROb3RpZmljYXRpb24KICAgICAgICAgICAgU2VuZEN1c3RvbWVyTm90aWZpY2F0aW9uCiAgICAgICAgICAgIFNlbmRBdXRvUmVqZWN0CiAgICAgICAgKTsKCiAgICAgICAgIyBzb3J0IG91dCBub24tZmlsdGVyZWQgZXZlbnQgdHlwZXMgKGlmIGFwcGxpY2FibGUpCiAgICAgICAgaWYgKAogICAgICAgICAgICAkU2VsZi0+e0V2ZW50VHlwZUZpbHRlcn0tPntFdmVudFR5cGVJRH0KICAgICAgICAgICAgJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e0V2ZW50VHlwZUZpbHRlcn0tPntFdmVudFR5cGVJRH0gKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBmb3IgbXkgJEV2ZW50VHlwZSAoIHNvcnQga2V5cyAleyAkU2VsZi0+e0hpc3RvcnlUeXBlTWFwcGluZ30gfSApIHsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkRXZlbnRUeXBlIG5lICdOZXdUaWNrZXQnICYmIG5vbmUgeyAkXyBlcSAkRXZlbnRUeXBlIH0KICAgICAgICAgICAgICAgICAgICBAeyAkU2VsZi0+e0V2ZW50VHlwZUZpbHRlcn0tPntFdmVudFR5cGVJRH0gfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBUeXBlc0RvZGdlLCAkRXZlbnRUeXBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHR5cGVzIHdoaWNoIGNhbiBiZSBkZXNjcmliZWQgYXMgJ2FjdGlvbiBvbiBhIHRpY2tldCcKICAgICAgICBteSBAVHlwZXNUaWNrZXRBY3Rpb24gPSBxdygKICAgICAgICAgICAgU2VydmljZVVwZGF0ZQogICAgICAgICAgICBTTEFVcGRhdGUKICAgICAgICAgICAgU3RhdGVVcGRhdGUKICAgICAgICAgICAgU2V0UGVuZGluZ1RpbWUKICAgICAgICAgICAgVW5sb2NrCiAgICAgICAgICAgIExvY2sKICAgICAgICAgICAgUmVzcG9uc2libGVVcGRhdGUKICAgICAgICAgICAgT3duZXJVcGRhdGUKICAgICAgICAgICAgQ3VzdG9tZXJVcGRhdGUKICAgICAgICAgICAgTmV3VGlja2V0CiAgICAgICAgICAgIFRpY2tldExpbmtBZGQKICAgICAgICAgICAgVGlja2V0TGlua0RlbGV0ZQogICAgICAgICAgICBUaWNrZXREeW5hbWljRmllbGRVcGRhdGUKICAgICAgICAgICAgTW92ZQogICAgICAgICAgICBNZXJnZWQKICAgICAgICAgICAgUHJpb3JpdHlVcGRhdGUKICAgICAgICAgICAgVGl0bGVVcGRhdGUKICAgICAgICAgICAgVHlwZVVwZGF0ZQogICAgICAgICAgICBFc2NhbGF0aW9uUmVzcG9uc2VUaW1lTm90aWZ5QmVmb3JlCiAgICAgICAgICAgIEVzY2FsYXRpb25SZXNwb25zZVRpbWVTdGFydAogICAgICAgICAgICBFc2NhbGF0aW9uUmVzcG9uc2VUaW1lU3RvcAogICAgICAgICAgICBFc2NhbGF0aW9uU29sdXRpb25UaW1lTm90aWZ5QmVmb3JlCiAgICAgICAgICAgIEVzY2FsYXRpb25Tb2x1dGlvblRpbWVTdGFydAogICAgICAgICAgICBFc2NhbGF0aW9uU29sdXRpb25UaW1lU3RvcAogICAgICAgICAgICBFc2NhbGF0aW9uVXBkYXRlVGltZU5vdGlmeUJlZm9yZQogICAgICAgICAgICBFc2NhbGF0aW9uVXBkYXRlVGltZVN0YXJ0CiAgICAgICAgICAgIEVzY2FsYXRpb25VcGRhdGVUaW1lU3RvcAogICAgICAgICAgICBUaW1lQWNjb3VudGluZwogICAgICAgICk7CgogICAgICAgICMgdHlwZXMgd2hpY2ggYXJlIHVzdWFsbHkgYmVpbmcgY29ubmVjdGVkIHRvIHNvbWUga2luZCBvZgogICAgICAgICMgYXV0b21hdGljIHByb2Nlc3MgKGUuZy4gdHJpZ2dlcmVkIGJ5IGFub3RoZXIgYWN0aW9uKQogICAgICAgIG15IEBUeXBlc1RpY2tldEF1dG9BY3Rpb24gPSBxdygKICAgICAgICAgICAgU2VuZEF1dG9Gb2xsb3dVcAogICAgICAgICAgICBTZW5kQXV0b1JlamVjdAogICAgICAgICAgICBTZW5kQXV0b1JlcGx5CiAgICAgICAgKTsKCiAgICAgICAgIyB0eXBlcyB3aGljaCBjYW4gYmUgY29uc2lkZXJlZCBhcyBpbnRlcm5hbAogICAgICAgIG15IEBUeXBlc0ludGVybmFsID0gcXcoCiAgICAgICAgICAgIEFkZE5vdGUKICAgICAgICAgICAgQ2hhdEludGVybmFsCiAgICAgICAgICAgIEVtYWlsQWdlbnRJbnRlcm5hbAogICAgICAgICk7CgogICAgICAgICMgb3V0Z29pbmcgdHlwZXMKICAgICAgICBteSBAVHlwZXNPdXRnb2luZyA9IHF3KAogICAgICAgICAgICBBZGRTTVMKICAgICAgICAgICAgRm9yd2FyZAogICAgICAgICAgICBFbWFpbEFnZW50CiAgICAgICAgICAgIFBob25lQ2FsbEFnZW50CiAgICAgICAgICAgIEJvdW5jZQogICAgICAgICAgICBTZW5kQW5zd2VyCiAgICAgICAgKTsKCiAgICAgICAgIyBpbmNvbWluZyB0eXBlcwogICAgICAgIG15IEBUeXBlc0luY29taW5nID0gcXcoCiAgICAgICAgICAgIEVtYWlsQ3VzdG9tZXIKICAgICAgICAgICAgQWRkTm90ZUN1c3RvbWVyCiAgICAgICAgICAgIEFkZFNNU0N1c3RvbWVyCiAgICAgICAgICAgIFBob25lQ2FsbEN1c3RvbWVyCiAgICAgICAgICAgIEZvbGxvd1VwCiAgICAgICAgICAgIFdlYlJlcXVlc3RDdXN0b21lcgogICAgICAgICAgICBDaGF0RXh0ZXJuYWwKICAgICAgICApOwoKICAgICAgICBteSBAVHlwZXNSaWdodCA9ICgKICAgICAgICAgICAgQFR5cGVzSW5jb21pbmcsCiAgICAgICAgICAgIEBUeXBlc1RpY2tldEFjdGlvbiwKICAgICAgICApOwoKICAgICAgICBteSBAVHlwZXNXaXRoQXJ0aWNsZXMgPSAoCiAgICAgICAgICAgIEBUeXBlc091dGdvaW5nLAogICAgICAgICAgICBAVHlwZXNJbnRlcm5hbCwKICAgICAgICAgICAgQFR5cGVzSW5jb21pbmcsCiAgICAgICAgICAgICdQaG9uZUNhbGxDdXN0b21lcicsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJUhpc3RvcnlJdGVtczsKICAgICAgICBteSAkSXRlbUNvdW50ZXIgPSAwOwogICAgICAgIG15ICRMYXN0Q3JlYXRlVGltZTsKICAgICAgICBteSAkTGFzdENyZWF0ZVN5c3RlbVRpbWU7CgogICAgICAgICMgR2V0IG1hcHBpbmcgb2YgaGlzdG9yeSB0eXBlcyB0byByZWFkYWJsZSBzdHJpbmdzCiAgICAgICAgbXkgJUhpc3RvcnlUeXBlczsKICAgICAgICBteSAlSGlzdG9yeVR5cGVDb25maWcgPSAleyAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Okhpc3RvcnlUeXBlcycpIC8vIHt9IH07CiAgICAgICAgZm9yIG15ICRFbnRyeSAoIHNvcnQga2V5cyAlSGlzdG9yeVR5cGVDb25maWcgKSB7CiAgICAgICAgICAgICVIaXN0b3J5VHlwZXMgPSAoCiAgICAgICAgICAgICAgICAlSGlzdG9yeVR5cGVzLAogICAgICAgICAgICAgICAgJXsgJEhpc3RvcnlUeXBlQ29uZmlneyRFbnRyeX0gfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIEhJU1RPUllJVEVNOgogICAgICAgIGZvciBteSAkSXRlbSAoIHJldmVyc2UgQEhpc3RvcnlMaW5lcyApIHsKCiAgICAgICAgICAgICMgc3BlY2lhbCB0cmVhdG1lbnQgZm9yIGNlcnRhaW4gdHlwZXMsIGUuZy4gZXh0ZXJuYWwgbm90ZXMgZnJvbSBjdXN0b21lcnMKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJEl0ZW0tPntBcnRpY2xlSUR9CiAgICAgICAgICAgICAgICAmJiAkSXRlbS0+e0hpc3RvcnlUeXBlfSBlcSAnQWRkTm90ZScKICAgICAgICAgICAgICAgICYmIElzSGFzaFJlZldpdGhEYXRhKCAkQXJ0aWNsZXNCeUFydGljbGVJRC0+eyAkSXRlbS0+e0FydGljbGVJRH0gfSApCiAgICAgICAgICAgICAgICAmJiAkQXJ0aWNsZVNlbmRlclR5cGVMaXN0eyAkQXJ0aWNsZXNCeUFydGljbGVJRC0+eyAkSXRlbS0+e0FydGljbGVJRH0gfS0+e1NlbmRlclR5cGVJRH0gfSBlcSAnY3VzdG9tZXInCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRJdGVtLT57Q2xhc3N9ID0gJ1R5cGVJbmNvbWluZyc7CgogICAgICAgICAgICAgICAgIyBXZSBmYWtlIGEgY3VzdG9tIGhpc3RvcnkgdHlwZSBiZWNhdXNlIGV4dGVybmFsIG5vdGVzIGZyb20gY3VzdG9tZXJzIHN0aWxsCiAgICAgICAgICAgICAgICAjIGhhdmUgdGhlIGhpc3RvcnkgdHlwZSAnQWRkTm90ZScgd2hpY2ggZG9lcyBub3QgYWxsb3cgZm9yIGRpc3Rpbmd1aXNoaW5nLgogICAgICAgICAgICAgICAgJEl0ZW0tPntIaXN0b3J5VHlwZX0gPSAnQWRkTm90ZUN1c3RvbWVyJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzcGVjaWFsIHRyZWF0bWVudCBmb3IgY2VydGFpbiB0eXBlcywgZS5nLiBleHRlcm5hbCBTTVMgZnJvbSBjdXN0b21lcnMKICAgICAgICAgICAgZWxzaWYgKAogICAgICAgICAgICAgICAgJEl0ZW0tPntBcnRpY2xlSUR9CiAgICAgICAgICAgICAgICAmJiAkSXRlbS0+e0hpc3RvcnlUeXBlfSBlcSAnQWRkU01TJwogICAgICAgICAgICAgICAgJiYgSXNIYXNoUmVmV2l0aERhdGEoICRBcnRpY2xlc0J5QXJ0aWNsZUlELT57ICRJdGVtLT57QXJ0aWNsZUlEfSB9ICkKICAgICAgICAgICAgICAgICYmICRBcnRpY2xlU2VuZGVyVHlwZUxpc3R7ICRBcnRpY2xlc0J5QXJ0aWNsZUlELT57ICRJdGVtLT57QXJ0aWNsZUlEfSB9LT57U2VuZGVyVHlwZUlEfSB9IGVxICdjdXN0b21lcicKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJEl0ZW0tPntDbGFzc30gPSAnVHlwZUluY29taW5nJzsKCiAgICAgICAgICAgICAgICAjIFdlIGZha2UgYSBjdXN0b20gaGlzdG9yeSB0eXBlIGJlY2F1c2UgZXh0ZXJuYWwgbm90ZXMgZnJvbSBjdXN0b21lcnMgc3RpbGwKICAgICAgICAgICAgICAgICMgaGF2ZSB0aGUgaGlzdG9yeSB0eXBlICdBZGRTTVMnIHdoaWNoIGRvZXMgbm90IGFsbG93IGZvciBkaXN0aW5ndWlzaGluZy4KICAgICAgICAgICAgICAgICRJdGVtLT57SGlzdG9yeVR5cGV9ID0gJ0FkZFNNU0N1c3RvbWVyJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzcGVjaWFsIHRyZWF0bWVudCBmb3IgaW50ZXJuYWwgZW1haWxzCiAgICAgICAgICAgIGVsc2lmICgKICAgICAgICAgICAgICAgICRJdGVtLT57QXJ0aWNsZUlEfQogICAgICAgICAgICAgICAgJiYgJEl0ZW0tPntIaXN0b3J5VHlwZX0gZXEgJ0VtYWlsQWdlbnQnCiAgICAgICAgICAgICAgICAmJiBJc0hhc2hSZWZXaXRoRGF0YSggJEFydGljbGVzQnlBcnRpY2xlSUQtPnsgJEl0ZW0tPntBcnRpY2xlSUR9IH0gKQogICAgICAgICAgICAgICAgJiYgJEFydGljbGVzQnlBcnRpY2xlSUQtPnsgJEl0ZW0tPntBcnRpY2xlSUR9IH0tPntCYWNrZW5kfSBlcSAnRW1haWwnCiAgICAgICAgICAgICAgICAmJiAkQXJ0aWNsZVNlbmRlclR5cGVMaXN0eyAkQXJ0aWNsZXNCeUFydGljbGVJRC0+eyAkSXRlbS0+e0FydGljbGVJRH0gfS0+e1NlbmRlclR5cGVJRH0gfSBlcSAnYWdlbnQnCiAgICAgICAgICAgICAgICAmJiAhJEFydGljbGVzQnlBcnRpY2xlSUQtPnsgJEl0ZW0tPntBcnRpY2xlSUR9IH0tPntJc1Zpc2libGVGb3JDdXN0b21lcn0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJEl0ZW0tPntDbGFzc30gICAgICAgPSAnVHlwZU5vdGVJbnRlcm5hbCc7CiAgICAgICAgICAgICAgICAkSXRlbS0+e0hpc3RvcnlUeXBlfSA9ICdFbWFpbEFnZW50SW50ZXJuYWwnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNwZWNpYWwgdHJlYXRtZW50IGZvciBjZXJ0YWluIHR5cGVzLCBlLmcuIGV4dGVybmFsIG5vdGVzIGZyb20gY3VzdG9tZXJzCiAgICAgICAgICAgIGVsc2lmICgKICAgICAgICAgICAgICAgICRJdGVtLT57QXJ0aWNsZUlEfQogICAgICAgICAgICAgICAgJiYgSXNIYXNoUmVmV2l0aERhdGEoICRBcnRpY2xlc0J5QXJ0aWNsZUlELT57ICRJdGVtLT57QXJ0aWNsZUlEfSB9ICkKICAgICAgICAgICAgICAgICYmICRBcnRpY2xlc0J5QXJ0aWNsZUlELT57ICRJdGVtLT57QXJ0aWNsZUlEfSB9LT57QmFja2VuZH0gZXEgJ0NoYXQnCiAgICAgICAgICAgICAgICAmJiAkQXJ0aWNsZXNCeUFydGljbGVJRC0+eyAkSXRlbS0+e0FydGljbGVJRH0gfS0+e0lzVmlzaWJsZUZvckN1c3RvbWVyfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkSXRlbS0+e0hpc3RvcnlUeXBlfSA9ICdDaGF0RXh0ZXJuYWwnOwogICAgICAgICAgICAgICAgJEl0ZW0tPntDbGFzc30gICAgICAgPSAnVHlwZUluY29taW5nJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICAgICAkSXRlbS0+e0FydGljbGVJRH0KICAgICAgICAgICAgICAgICYmIElzSGFzaFJlZldpdGhEYXRhKCAkQXJ0aWNsZXNCeUFydGljbGVJRC0+eyAkSXRlbS0+e0FydGljbGVJRH0gfSApCiAgICAgICAgICAgICAgICAmJiAkQXJ0aWNsZXNCeUFydGljbGVJRC0+eyAkSXRlbS0+e0FydGljbGVJRH0gfS0+e0JhY2tlbmR9IGVxICdDaGF0JwogICAgICAgICAgICAgICAgJiYgISRBcnRpY2xlc0J5QXJ0aWNsZUlELT57ICRJdGVtLT57QXJ0aWNsZUlEfSB9LT57SXNWaXNpYmxlRm9yQ3VzdG9tZXJ9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRJdGVtLT57SGlzdG9yeVR5cGV9ID0gJ0NoYXRJbnRlcm5hbCc7CiAgICAgICAgICAgICAgICAkSXRlbS0+e0NsYXNzfSAgICAgICA9ICdUeXBlSW50ZXJuYWwnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICgKICAgICAgICAgICAgICAgICRJdGVtLT57SGlzdG9yeVR5cGV9IGVxICdGb3J3YXJkJwogICAgICAgICAgICAgICAgJiYgJEl0ZW0tPntBcnRpY2xlSUR9CiAgICAgICAgICAgICAgICAmJiBJc0hhc2hSZWZXaXRoRGF0YSggJEFydGljbGVzQnlBcnRpY2xlSUQtPnsgJEl0ZW0tPntBcnRpY2xlSUR9IH0gKQogICAgICAgICAgICAgICAgJiYgJEFydGljbGVzQnlBcnRpY2xlSUQtPnsgJEl0ZW0tPntBcnRpY2xlSUR9IH0tPntCYWNrZW5kfSBlcSAnRW1haWwnCiAgICAgICAgICAgICAgICAmJiAkQXJ0aWNsZVNlbmRlclR5cGVMaXN0eyAkQXJ0aWNsZXNCeUFydGljbGVJRC0+eyAkSXRlbS0+e0FydGljbGVJRH0gfS0+e1NlbmRlclR5cGVJRH0gfSBlcSAnYWdlbnQnCiAgICAgICAgICAgICAgICAmJiAhJEFydGljbGVzQnlBcnRpY2xlSUQtPnsgJEl0ZW0tPntBcnRpY2xlSUR9IH0tPntJc1Zpc2libGVGb3JDdXN0b21lcn0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICRJdGVtLT57Q2xhc3N9ID0gJ1R5cGVOb3RlSW50ZXJuYWwnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggYW55IHsgJF8gZXEgJEl0ZW0tPntIaXN0b3J5VHlwZX0gfSBAVHlwZXNUaWNrZXRBY3Rpb24gKSB7CiAgICAgICAgICAgICAgICAkSXRlbS0+e0NsYXNzfSA9ICdUeXBlVGlja2V0QWN0aW9uJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoIGFueSB7ICRfIGVxICRJdGVtLT57SGlzdG9yeVR5cGV9IH0gQFR5cGVzVGlja2V0QXV0b0FjdGlvbiApIHsKICAgICAgICAgICAgICAgICRJdGVtLT57Q2xhc3N9ID0gJ1R5cGVUaWNrZXRBdXRvQWN0aW9uJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoIGFueSB7ICRfIGVxICRJdGVtLT57SGlzdG9yeVR5cGV9IH0gQFR5cGVzSW50ZXJuYWwgKSB7CiAgICAgICAgICAgICAgICAkSXRlbS0+e0NsYXNzfSA9ICdUeXBlTm90ZUludGVybmFsJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoIGFueSB7ICRfIGVxICRJdGVtLT57SGlzdG9yeVR5cGV9IH0gQFR5cGVzSW5jb21pbmcgKSB7CiAgICAgICAgICAgICAgICAkSXRlbS0+e0NsYXNzfSA9ICdUeXBlSW5jb21pbmcnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggYW55IHsgJF8gZXEgJEl0ZW0tPntIaXN0b3J5VHlwZX0gfSBAVHlwZXNPdXRnb2luZyApIHsKICAgICAgICAgICAgICAgICRJdGVtLT57Q2xhc3N9ID0gJ1R5cGVPdXRnb2luZyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggYW55IHsgJF8gZXEgJEl0ZW0tPntIaXN0b3J5VHlwZX0gfSBAVHlwZXNEb2RnZSApIHsKICAgICAgICAgICAgICAgIG5leHQgSElTVE9SWUlURU07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRJdGVtLT57Q291bnRlcn0gPSAkSXRlbUNvdW50ZXIrKzsKCiAgICAgICAgICAgIGlmICggJEl0ZW0tPntIaXN0b3J5VHlwZX0gZXEgJ05ld1RpY2tldCcgKSB7CgogICAgICAgICAgICAgICAgIyBpZiB0aGUgJ05ld1RpY2tldCcgaXRlbSBoYXMgYW4gYXJ0aWNsZSwgZGlzcGxheSB0aGlzICJjcmVhdGlvbiBhcnRpY2xlIiBldmVudCBzZXBhcmF0ZWx5CiAgICAgICAgICAgICAgICBpZiAoICRJdGVtLT57QXJ0aWNsZUlEfSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtJdGVtc30gfSwgewogICAgICAgICAgICAgICAgICAgICAgICAleyRJdGVtfSwKICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRlciAgICAgICAgICAgICA9PiAkSXRlbS0+e0NvdW50ZXJ9KyssCiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgPT4gJ05ld1RpY2tldCcsCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgIEFydGljbGVJRCAgICAgICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlUmVhZGFibGUgPT4gVHJhbnNsYXRhYmxlKCdUaWNrZXQgQ3JlYXRlZCcpLAogICAgICAgICAgICAgICAgICAgICAgICBPcmllbnRhdGlvbiAgICAgICAgID0+ICdSaWdodCcsCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRJdGVtLT57Q2xhc3N9ID0gJ05ld1RpY2tldCc7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRJdGVtLT57QXJ0aWNsZUlEfTsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJEl0ZW0tPntOYW1lfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyByZW1vdmUgYXJ0aWNsZSBpbmZvcm1hdGlvbiBmcm9tIHR5cGVzIHdoaWNoIHNob3VsZCBub3QgZGlzcGxheSBhcnRpY2xlcwogICAgICAgICAgICBpZiAoIG5vbmUgeyAkXyBlcSAkSXRlbS0+e0hpc3RvcnlUeXBlfSB9IEBUeXBlc1dpdGhBcnRpY2xlcyApIHsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkSXRlbS0+e0FydGljbGVJRH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IGFydGljbGUgKGlmIHByZXNlbnQpCiAgICAgICAgICAgIGlmICggJEl0ZW0tPntBcnRpY2xlSUR9ICkgewogICAgICAgICAgICAgICAgJEl0ZW0tPntBcnRpY2xlRGF0YX0gPSAkQXJ0aWNsZXNCeUFydGljbGVJRC0+eyAkSXRlbS0+e0FydGljbGVJRH0gfTsKCiAgICAgICAgICAgICAgICBteSAlQXJ0aWNsZUZpZWxkcyA9ICRMYXlvdXRPYmplY3QtPkFydGljbGVGaWVsZHMoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICA9PiAkSXRlbS0+e0FydGljbGVEYXRhfS0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICBBcnRpY2xlSUQgICAgICAgICAgID0+ICRJdGVtLT57QXJ0aWNsZURhdGF9LT57QXJ0aWNsZUlEfSwKICAgICAgICAgICAgICAgICAgICBTaG93RGVsZXRlZEFydGljbGVzID0+ICRTZWxmLT57U2hvd0RlbGV0ZWRBcnRpY2xlc30KICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkSXRlbS0+e0FydGljbGVEYXRhfS0+e0FydGljbGVGaWVsZHN9ID0gXCVBcnRpY2xlRmllbGRzOwoKICAgICAgICAgICAgICAgICMgR2V0IGR5bmFtaWMgZmllbGRzIGFuZCBhY2NvdW50ZWQgdGltZQogICAgICAgICAgICAgICAgbXkgJEJhY2tlbmQgPSAkQXJ0aWNsZXNCeUFydGljbGVJRC0+eyAkSXRlbS0+e0FydGljbGVJRH0gfS0+e0JhY2tlbmR9OwoKICAgICAgICAgICAgICAgICMgR2V0IGR5bmFtaWMgZmllbGRzIGFuZCBhY2NvdW50ZWQgdGltZQogICAgICAgICAgICAgICAgbXkgJUFydGljbGVNZXRhRmllbGRzID0gJEtlcm5lbDo6T00tPkdldCgiS2VybmVsOjpPdXRwdXQ6OkhUTUw6OlRpY2tldFpvb206OkFnZW50OjokQmFja2VuZCIpLT5BcnRpY2xlTWV0YUZpZWxkcygKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgPT4gJEl0ZW0tPntBcnRpY2xlRGF0YX0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgQXJ0aWNsZUlEID0+ICRJdGVtLT57QXJ0aWNsZURhdGF9LT57QXJ0aWNsZUlEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRJdGVtLT57QXJ0aWNsZURhdGF9LT57QXJ0aWNsZU1ldGFGaWVsZHN9ID0gXCVBcnRpY2xlTWV0YUZpZWxkczsKCiAgICAgICAgICAgICAgICBteSBAQXJ0aWNsZUFjdGlvbnMgPSAkTGF5b3V0T2JqZWN0LT5BcnRpY2xlQWN0aW9ucygKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgID0+ICRJdGVtLT57QXJ0aWNsZURhdGF9LT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgIEFydGljbGVJRCAgICAgICAgICAgPT4gJEl0ZW0tPntBcnRpY2xlRGF0YX0tPntBcnRpY2xlSUR9LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgPT4gJ09uTG9hZCcsCiAgICAgICAgICAgICAgICAgICAgU2hvd0RlbGV0ZWRBcnRpY2xlcyA9PiAkU2VsZi0+e1Nob3dEZWxldGVkQXJ0aWNsZXN9CiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRJdGVtLT57QXJ0aWNsZURhdGF9LT57QXJ0aWNsZVBsYWlufSA9ICRMYXlvdXRPYmplY3QtPkFydGljbGVQcmV2aWV3KAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgPT4gJEl0ZW0tPntBcnRpY2xlRGF0YX0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgQXJ0aWNsZUlEICA9PiAkSXRlbS0+e0FydGljbGVEYXRhfS0+e0FydGljbGVJRH0sCiAgICAgICAgICAgICAgICAgICAgUmVzdWx0VHlwZSA9PiAncGxhaW4nLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkSXRlbS0+e0FydGljbGVEYXRhfS0+e0FydGljbGVIVE1MfSA9ICRLZXJuZWw6Ok9NLT5HZXQoIktlcm5lbDo6T3V0cHV0OjpIVE1MOjpUaW1lbGluZVZpZXc6OiRCYWNrZW5kIiktPkFydGljbGVSZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgPT4gJEl0ZW0tPntBcnRpY2xlRGF0YX0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgQXJ0aWNsZUlEICAgICAgPT4gJEl0ZW0tPntBcnRpY2xlRGF0YX0tPntBcnRpY2xlSUR9LAogICAgICAgICAgICAgICAgICAgIEFydGljbGVBY3Rpb25zID0+IFxAQXJ0aWNsZUFjdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHJlbW92ZSBlbXB0eSBsaW5lcwogICAgICAgICAgICAgICAgJEl0ZW0tPntBcnRpY2xlRGF0YX0tPntBcnRpY2xlUGxhaW59ID1+IHN7XltcblxyXSt9e314bXNnOwoKICAgICAgICAgICAgICAgICMgTW9kaWZ5IHBsYWluIHRleHQgYW5kIGJvZHkgdG8gYXZvaWQgJzwvc2NyaXB0PicgdGFnIGlzc3VlIChzZWUgYnVnIzE0MDIzKS4KICAgICAgICAgICAgICAgICRJdGVtLT57QXJ0aWNsZURhdGF9LT57QXJ0aWNsZVBsYWlufSA9fiBzezwvc2NyaXB0Pn17PCMjIy9zY3JpcHQ+fXhtc2c7CiAgICAgICAgICAgICAgICAkSXRlbS0+e0FydGljbGVEYXRhfS0+e0JvZHl9ICAgICAgICAgPX4gc3s8L3NjcmlwdD59ezwjIyMvc2NyaXB0Pn14bXNnOwoKICAgICAgICAgICAgICAgIG15ICVBcnRpY2xlRmxhZ3NBbGwgPSAkQXJ0aWNsZU9iamVjdC0+QXJ0aWNsZUZsYWdHZXQoCiAgICAgICAgICAgICAgICAgICAgQXJ0aWNsZUlEID0+ICRJdGVtLT57QXJ0aWNsZUlEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJUFydGljbGVGbGFnc01lID0gJEFydGljbGVPYmplY3QtPkFydGljbGVGbGFnR2V0KAogICAgICAgICAgICAgICAgICAgIEFydGljbGVJRCA9PiAkSXRlbS0+e0FydGljbGVJRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJEl0ZW0tPntBcnRpY2xlRGF0YX0tPntBcnRpY2xlSXNJbXBvcnRhbnR9ID0gJEFydGljbGVGbGFnc0FsbHtJbXBvcnRhbnR9OwogICAgICAgICAgICAgICAgJEl0ZW0tPntBcnRpY2xlRGF0YX0tPntBcnRpY2xlSXNTZWVufSAgICAgID0gJEFydGljbGVGbGFnc01le1NlZW59OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgIGlmICggJEl0ZW0tPntOYW1lfSAmJiAkSXRlbS0+e05hbWV9ID1+IG0vXiUlL3ggKSB7CgogICAgICAgICAgICAgICAgICAgICRJdGVtLT57TmFtZX0gPX4gcy9eJSUvL3hnOwogICAgICAgICAgICAgICAgICAgIG15IEBWYWx1ZXMgPSBzcGxpdCggLyUlL3gsICRJdGVtLT57TmFtZX0gKTsKCiAgICAgICAgICAgICAgICAgICAgIyBTZWUgZG9jdW1lbnRhdGlvbiBpbiBBZ2VudFRpY2tldEhpc3RvcnkucG0sIGxpbmUgMTQxKwogICAgICAgICAgICAgICAgICAgIGlmICggJEl0ZW0tPntIaXN0b3J5VHlwZX0gZXEgJ1RpY2tldER5bmFtaWNGaWVsZFVwZGF0ZScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEBWYWx1ZXMgPSAoICRWYWx1ZXNbMV0sICRWYWx1ZXNbNV0gLy8gJycsICRWYWx1ZXNbM10gLy8gJycgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkSXRlbS0+e0hpc3RvcnlUeXBlfSBlcSAnVHlwZVVwZGF0ZScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEBWYWx1ZXMgPSAoICRWYWx1ZXNbMl0sICRWYWx1ZXNbM10sICRWYWx1ZXNbMF0sICRWYWx1ZXNbMV0gKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRJdGVtLT57TmFtZX0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICRIaXN0b3J5VHlwZXN7ICRJdGVtLT57SGlzdG9yeVR5cGV9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEBWYWx1ZXMsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyByZW1vdmUgbm90IG5lZWRlZCBwbGFjZSBob2xkZXIKICAgICAgICAgICAgICAgICAgICAkSXRlbS0+e05hbWV9ID1+IHMvXCVzLy94ZzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBtYWtlIHRoZSBoaXN0b3J5IHR5cGUgbW9yZSByZWFkYWJsZSAoaWYgYXBwbGljYWJsZSkKICAgICAgICAgICAgJEl0ZW0tPntIaXN0b3J5VHlwZVJlYWRhYmxlfSA9ICRTZWxmLT57SGlzdG9yeVR5cGVNYXBwaW5nfS0+eyAkSXRlbS0+e0hpc3RvcnlUeXBlfSB9CiAgICAgICAgICAgICAgICB8fCAkSXRlbS0+e0hpc3RvcnlUeXBlfTsKCiAgICAgICAgICAgICMgZ3JvdXAgaXRlbXMgd2hpY2ggaGFwcGVuZWQgKG5lYXJseSkgY29pbmNpZGVudGFsbHkgdG9nZXRoZXIKICAgICAgICAgICAgbXkgJENyZWF0ZVN5c3RlbVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkSXRlbS0+e0NyZWF0ZVRpbWV9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJEl0ZW0tPntDcmVhdGVTeXN0ZW1UaW1lfSA9ICRDcmVhdGVTeXN0ZW1UaW1lT2JqZWN0CiAgICAgICAgICAgICAgICA/ICRDcmVhdGVTeXN0ZW1UaW1lT2JqZWN0LT5Ub0Vwb2NoKCkKICAgICAgICAgICAgICAgIDogdW5kZWY7CgogICAgICAgICAgICAjIGlmIHdlIGhhdmUgdHdvIGV2ZW50cyB0aGF0IGhhcHBlbmVkICduZWFybHknIHRoZSBzYW1lIHRpbWUsIHRyZWF0CiAgICAgICAgICAgICMgdGhlbSBhcyBpZiB0aGV5IGhhcHBlbmVkIGV4YWN0bHkgb24gdGhlIHNhbWUgdGltZSAodGhyZXNob2xkIDUgc2Vjb25kcykKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJExhc3RDcmVhdGVTeXN0ZW1UaW1lCiAgICAgICAgICAgICAgICAmJiAkSXRlbS0+e0NyZWF0ZVN5c3RlbVRpbWV9IDw9ICRMYXN0Q3JlYXRlU3lzdGVtVGltZQogICAgICAgICAgICAgICAgJiYgJEl0ZW0tPntDcmVhdGVTeXN0ZW1UaW1lfSA+PSAoICRMYXN0Q3JlYXRlU3lzdGVtVGltZSAtIDUgKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBwdXNoIEB7ICRIaXN0b3J5SXRlbXN7JExhc3RDcmVhdGVUaW1lfSB9LCAkSXRlbTsKICAgICAgICAgICAgICAgICRJdGVtLT57Q3JlYXRlVGltZX0gPSAkTGFzdENyZWF0ZVRpbWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBwdXNoIEB7ICRIaXN0b3J5SXRlbXN7ICRJdGVtLT57Q3JlYXRlVGltZX0gfSB9LCAkSXRlbTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJExhc3RDcmVhdGVUaW1lICAgICAgID0gJEl0ZW0tPntDcmVhdGVUaW1lfTsKICAgICAgICAgICAgJExhc3RDcmVhdGVTeXN0ZW1UaW1lID0gJEl0ZW0tPntDcmVhdGVTeXN0ZW1UaW1lfTsKICAgICAgICB9CgogICAgICAgIG15ICRTb3J0QnlBcnRpY2xlID0gc3ViIHsKCiAgICAgICAgICAgIG15ICRJc0EgPSBncmVwIHsgJF8gZXEgJGEtPntIaXN0b3J5VHlwZX0gfSBAVHlwZXNXaXRoQXJ0aWNsZXM7CiAgICAgICAgICAgIG15ICRJc0IgPSBncmVwIHsgJF8gZXEgJGItPntIaXN0b3J5VHlwZX0gfSBAVHlwZXNXaXRoQXJ0aWNsZXM7CiAgICAgICAgICAgICRJc0IgY21wICRJc0E7CiAgICAgICAgfTsKCiAgICAgICAgIyBzb3J0IGhpc3RvcnkgaXRlbXMgYmFzZWQgb24gaXRlbXMgd2l0aCBhcnRpY2xlcwogICAgICAgICMgdGhlc2UgaXRlbXMgc2hvdWxkIGFsd2F5cyBiZSBvbiB0b3Agb2YgYSBsaXN0IG9mIGNvbm5lY3RlZCBpdGVtcwogICAgICAgICRJdGVtQ291bnRlciA9IDA7CiAgICAgICAgZm9yIG15ICRJdGVtICggcmV2ZXJzZSBzb3J0IGtleXMgJUhpc3RvcnlJdGVtcyApIHsKCiAgICAgICAgICAgIGZvciBteSAkU3ViSXRlbSAoIHNvcnQgJFNvcnRCeUFydGljbGUgQHsgJEhpc3RvcnlJdGVtc3skSXRlbX0gfSApIHsKICAgICAgICAgICAgICAgICRTdWJJdGVtLT57Q291bnRlcn0gPSAkSXRlbUNvdW50ZXIrKzsKCiAgICAgICAgICAgICAgICBpZiAoIGFueSB7ICRfIGVxICRTdWJJdGVtLT57SGlzdG9yeVR5cGV9IH0gQFR5cGVzUmlnaHQgKSB7CiAgICAgICAgICAgICAgICAgICAgJFN1Ykl0ZW0tPntPcmllbnRhdGlvbn0gPSAnUmlnaHQnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFN1Ykl0ZW0tPntPcmllbnRhdGlvbn0gPSAnTGVmdCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtJdGVtc30gfSwgJFN1Ykl0ZW07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2V0IFRpY2tldElEIGZvciB1c2FnZSBpbiBKUwogICAgICAgICRQYXJhbXtUaWNrZXRJRH0gPSAkU2VsZi0+e1RpY2tldElEfTsKCiAgICAgICAgIyBzZXQga2V5ICdUaW1lTG9uZycgZm9yIEpTCiAgICAgICAgZm9yIG15ICRJdGVtICggQHsgJFBhcmFte0l0ZW1zfSB9ICkgewogICAgICAgICAgICAkSXRlbS0+e1RpbWVMb25nfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPkZvcm1hdFRpbWVTdHJpbmcoICRJdGVtLT57Q3JlYXRlVGltZX0sICdEYXRlRm9ybWF0TG9uZycgKTsKICAgICAgICB9CgogICAgICAgIGZvciBteSAkQXJ0aWNsZUlEICggc29ydCBrZXlzICV7JEFydGljbGVzQnlBcnRpY2xlSUR9ICkgewoKICAgICAgICAgICAgIyBDaGVjayBpZiBhcnRpY2xlIGhhcyBhdHRhY2htZW50KHMpLgogICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkQXJ0aWNsZXNCeUFydGljbGVJRC0+eyRBcnRpY2xlSUR9LT57QXRtc30gKSApIHsKCiAgICAgICAgICAgICAgICBteSAoJEluZGV4KSA9IGdyZXAgeyAkUGFyYW17SXRlbXN9LT5bJF9dLT57QXJ0aWNsZUlEfSAmJiAkUGFyYW17SXRlbXN9LT5bJF9dLT57QXJ0aWNsZUlEfSA9PSAkQXJ0aWNsZUlEIH0KICAgICAgICAgICAgICAgICAgICAwIC4uIEB7ICRQYXJhbXtJdGVtc30gfTsKICAgICAgICAgICAgICAgICRQYXJhbXtJdGVtc30tPlskSW5kZXhdLT57SGFzQXR0YWNobWVudH0gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIEdldCBOb1RpbWVsaW5lVmlld0F1dG9BcnRpY2xlIGNvbmZpZyB2YWx1ZSBmb3IgdXNhZ2UgaW4gSlMuCiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnTm9UaW1lbGluZVZpZXdBdXRvQXJ0aWNsZScsCiAgICAgICAgICAgIFZhbHVlID0+ICRDb25maWdPYmplY3QtPkdldCgnTm9UaW1lbGluZVZpZXdBdXRvQXJ0aWNsZScpIHx8ICcwJywKICAgICAgICApOwoKICAgICAgICAjIEluY2x1ZGUgY3VycmVudCBhcnRpY2xlIElEIG9ubHkgaWYgaXQncyBzZWxlY3RlZC4KICAgICAgICAkUGFyYW17Q3VycmVudEFydGljbGVJRH0gLy89ICRTZWxmLT57QXJ0aWNsZUlEfTsKCiAgICAgICAgIyBNb2RpZnkgYm9keSB0ZXh0IHRvIGF2b2lkICc8L3NjcmlwdD4nIHRhZyBpc3N1ZSAoc2VlIGJ1ZyMxNDAyMykuCiAgICAgICAgZm9yIG15ICRBcnRpY2xlQm94SXRlbSAoQEFydGljbGVCb3gpIHsKICAgICAgICAgICAgJEFydGljbGVCb3hJdGVtLT57Qm9keX0gPX4gc3s8L3NjcmlwdD59ezwjIyMvc2NyaXB0Pn14bXNnOwogICAgICAgIH0KCiAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdUaW1lbGluZVZpZXcnLAogICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICBFbmFibGVkID0+ICRDb25maWdPYmplY3QtPkdldCgnVGltZWxpbmVWaWV3RW5hYmxlZCcpLAogICAgICAgICAgICAgICAgRGF0YSAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdUaW1lbGluZVZpZXcnLAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKCiAgICAgICAgIyBqdW1wIHRvIHNlbGVjdGVkIGFydGljbGUKICAgICAgICBpZiAoICRTZWxmLT57QXJ0aWNsZUlEfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTaG93U2VsZWN0ZWRBcnRpY2xlJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEFydGljbGVJRCA9PiAkU2VsZi0+e0FydGljbGVJRH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyByZW5kZXIgYWN0aW9uIG1lbnUgZm9yIGFsbCBhcnRpY2xlcwogICAgICAgIGZvciBteSAkQXJ0aWNsZUlEICggc29ydCBrZXlzICV7JEFydGljbGVzQnlBcnRpY2xlSUR9ICkgewoKICAgICAgICAgICAgIyBzaG93IGF0dGFjaG1lbnRzIGJveAogICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkQXJ0aWNsZXNCeUFydGljbGVJRC0+eyRBcnRpY2xlSUR9LT57QXRtc30gKSApIHsKCiAgICAgICAgICAgICAgICBteSAkQXJ0aWNsZUF0dGFjaG1lbnRzID0gJFNlbGYtPl9Db2xsZWN0QXJ0aWNsZUF0dGFjaG1lbnRzKAogICAgICAgICAgICAgICAgICAgIEFydGljbGUgPT4gJEFydGljbGVzQnlBcnRpY2xlSUQtPnskQXJ0aWNsZUlEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnVGltZWxpbmVWaWV3QXJ0aWNsZUF0dGFjaG1lbnRzJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEFydGljbGVJRCAgID0+ICRBcnRpY2xlSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIEF0dGFjaG1lbnRzID0+ICRBcnRpY2xlQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyByZXR1cm4gb3V0cHV0CiAgICByZXR1cm4gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRUaWNrZXRab29tJywKICAgICAgICBEYXRhICAgICAgICAgPT4geyAlUGFyYW0sICVUaWNrZXQgfSwKICAgICk7Cn0KCnN1YiBfVGlja2V0SXRlbVNlZW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSBAQXJ0aWNsZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyktPkFydGljbGVMaXN0KAogICAgICAgIFRpY2tldElEICAgICAgICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICBTaG93RGVsZXRlZEFydGljbGVzID0+ICRTZWxmLT57U2hvd0RlbGV0ZWRBcnRpY2xlc30KICAgICk7CgogICAgZm9yIG15ICRBcnRpY2xlIChAQXJ0aWNsZXMpIHsKICAgICAgICAkU2VsZi0+X0FydGljbGVJdGVtU2VlbigKICAgICAgICAgICAgVGlja2V0SUQgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgIEFydGljbGVJRCA9PiAkQXJ0aWNsZS0+e0FydGljbGVJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9BcnRpY2xlSXRlbVNlZW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkSXNBcnRpY2xlRGVsZXRlZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGVGZWF0dXJlcycpLT5Jc0FydGljbGVEZWxldGVkKAogICAgICAgIEFydGljbGVJRCA9PiAkUGFyYW17QXJ0aWNsZUlEfQogICAgKTsKCiAgICAjIG1hcmsgc2hvd24gYXJ0aWNsZSBhcyBzZWVuCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyktPkFydGljbGVGbGFnU2V0KAogICAgICAgIFRpY2tldElEICAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgQXJ0aWNsZUlEICAgICAgPT4gJFBhcmFte0FydGljbGVJRH0sCiAgICAgICAgS2V5ICAgICAgICAgICAgPT4gJ1NlZW4nLAogICAgICAgIFZhbHVlICAgICAgICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIEFydGljbGVEZWxldGVkID0+ICRJc0FydGljbGVEZWxldGVkCiAgICApOwoKICAgIHJldHVybiAxOwp9CgpzdWIgX0FydGljbGVJdGVtIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJVRpY2tldCAgPSAleyAkUGFyYW17VGlja2V0fSB9OwogICAgbXkgJUFydGljbGUgPSAleyAkUGFyYW17QXJ0aWNsZX0gfTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgc2hvdyBhcnRpY2xlIGFjdGlvbnMKICAgIG15IEBNZW51SXRlbXMgPSAkTGF5b3V0T2JqZWN0LT5BcnRpY2xlQWN0aW9ucygKICAgICAgICAlUGFyYW0sCiAgICAgICAgVGlja2V0SUQgICAgICAgICAgICA9PiAkUGFyYW17VGlja2V0fS0+e1RpY2tldElEfSwKICAgICAgICBBcnRpY2xlSUQgICAgICAgICAgID0+ICRQYXJhbXtBcnRpY2xlfS0+e0FydGljbGVJRH0sCiAgICAgICAgVHlwZSAgICAgICAgICAgICAgICA9PiAkUGFyYW17VHlwZX0sCiAgICAgICAgU2hvd0RlbGV0ZWRBcnRpY2xlcyA9PiAkU2VsZi0+e1Nob3dEZWxldGVkQXJ0aWNsZXN9CiAgICApOwoKICAgIHB1c2ggQHsgJFNlbGYtPntNZW51SXRlbXN9IH0sIFxATWVudUl0ZW1zOwoKICAgICMgVE9ETzogUmV2aWV3CiAgICByZXR1cm4gJFNlbGYtPl9BcnRpY2xlUmVuZGVyKAogICAgICAgIFRpY2tldElEICAgICAgICAgICAgICAgPT4gJFRpY2tldHtUaWNrZXRJRH0sCiAgICAgICAgQXJ0aWNsZUlEICAgICAgICAgICAgICA9PiAkQXJ0aWNsZXtBcnRpY2xlSUR9LAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIFNob3dCcm93c2VyTGlua01lc3NhZ2UgPT4gJFNlbGYtPntEb05vdFNob3dCcm93c2VyTGlua01lc3NhZ2V9ID8gMCA6IDEsCiAgICAgICAgVHlwZSAgICAgICAgICAgICAgICAgICA9PiAkUGFyYW17VHlwZX0sCiAgICAgICAgTWVudUl0ZW1zICAgICAgICAgICAgICA9PiBcQE1lbnVJdGVtcywKICAgICAgICBTaG93RGVsZXRlZEFydGljbGVzICAgID0+ICRTZWxmLT57U2hvd0RlbGV0ZWRBcnRpY2xlc30KICAgICk7Cn0KCnN1YiBfQ29sbGVjdEFydGljbGVBdHRhY2htZW50cyB7CgogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlQXJ0aWNsZSA9ICV7ICRQYXJhbXtBcnRpY2xlfSB9OwoKICAgIG15ICVBdHRhY2htZW50czsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGRvd25sb2FkIHR5cGUKICAgIG15ICRUeXBlID0gJENvbmZpZ09iamVjdC0+R2V0KCdBdHRhY2htZW50RG93bmxvYWRUeXBlJykgfHwgJ2F0dGFjaG1lbnQnOwoKICAgICRBcnRpY2xle0F0bUNvdW50fSA9IHNjYWxhciBrZXlzICV7ICRBcnRpY2xle0F0bXN9IC8vIHt9IH07CgogICAgIyBpZiBhdHRhY2htZW50IHdpbGwgYmUgZm9yY2VkIHRvIGRvd25sb2FkLCBkb24ndCBvcGVuIGEgbmV3IGRvd25sb2FkIHdpbmRvdyEKICAgIG15ICRUYXJnZXQgPSAndGFyZ2V0PSJBdHRhY2htZW50V2luZG93IiAnOwogICAgaWYgKCAkVHlwZSA9fiAvaW5saW5lL2kgKSB7CiAgICAgICAgJFRhcmdldCA9ICd0YXJnZXQ9ImF0dGFjaG1lbnQiICc7CiAgICB9CgogICAgJEF0dGFjaG1lbnRze1pvb21BdHRhY2htZW50RGlzcGxheUNvdW50fSA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0Ojpab29tQXR0YWNobWVudERpc3BsYXlDb3VudCcpOwoKICAgIEFUVEFDSE1FTlQ6CiAgICBmb3IgbXkgJEZpbGVJRCAoIHNvcnQga2V5cyAleyAkQXJ0aWNsZXtBdG1zfSB9ICkgewogICAgICAgIHB1c2ggQHsgJEF0dGFjaG1lbnRze0ZpbGVzfSB9LCB7CiAgICAgICAgICAgIEFydGljbGVJRCA9PiAkQXJ0aWNsZXtBcnRpY2xlSUR9LAogICAgICAgICAgICAleyAkQXJ0aWNsZXtBdG1zfS0+eyRGaWxlSUR9IH0sCiAgICAgICAgICAgIEZpbGVJRCA9PiAkRmlsZUlELAogICAgICAgICAgICBUYXJnZXQgPT4gJFRhcmdldCwKICAgICAgICB9OwogICAgfQoKICAgIHJldHVybiBcJUF0dGFjaG1lbnRzOwp9CgpzdWIgX0FydGljbGVCb3hHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIENoZWNrIG5lZWRlZCBzdHVmZi4KICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlIEFydGljbGVCb3hBbGwgTGltaXQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEFydGljbGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyk7CgogICAgbXkgJFN0YXJ0ID0gKCAkUGFyYW17UGFnZX0gLSAxICkgKiAkUGFyYW17TGltaXR9OwoKICAgIG15ICRFbmQgPSAkUGFyYW17UGFnZX0gKiAkUGFyYW17TGltaXR9IC0gMTsKICAgIGlmICggJEVuZCA+PSBzY2FsYXIgQHsgJFBhcmFte0FydGljbGVCb3hBbGx9IH0gKSB7CgogICAgICAgICMgTWFrZSBzdXJlIHRoYXQgZW5kIGluZGV4IGRvZXNuJ3QgZXhjZWVkIGFycmF5IHNpemUuCiAgICAgICAgJEVuZCA9IHNjYWxhciBAeyAkUGFyYW17QXJ0aWNsZUJveEFsbH0gfSAtIDE7CiAgICB9CgogICAgbXkgQEFydGljbGVJbmRleGVzID0gKCAkU3RhcnQgLi4gJEVuZCApOwoKICAgIG15ICRDb21tdW5pY2F0aW9uQ2hhbm5lbE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDb21tdW5pY2F0aW9uQ2hhbm5lbCcpOwoKICAgICMgU2F2ZSBjb21tdW5pY2F0aW9uIGNoYW5uZWwgZGF0YSB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLgogICAgbXkgJUNvbW11bmljYXRpb25DaGFubmVsRGF0YTsKCiAgICBteSBAQXJ0aWNsZUJveDsKICAgIGZvciBteSAkSW5kZXggKEBBcnRpY2xlSW5kZXhlcykgewogICAgICAgIG15ICRBcnRpY2xlQmFja2VuZE9iamVjdCA9ICRBcnRpY2xlT2JqZWN0LT5CYWNrZW5kRm9yQXJ0aWNsZSgKICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgQXJ0aWNsZUlEICAgICAgICAgICA9PiAkUGFyYW17QXJ0aWNsZUJveEFsbH0tPlskSW5kZXhdLT57QXJ0aWNsZUlEfSwKICAgICAgICAgICAgU2hvd0RlbGV0ZWRBcnRpY2xlcyA9PiAkU2VsZi0+e1Nob3dEZWxldGVkQXJ0aWNsZXN9CiAgICAgICAgKTsKCiAgICAgICAgbXkgJUFydGljbGUgPSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVHZXQoCiAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFNlbGYtPntUaWNrZXRJRH0sCiAgICAgICAgICAgIEFydGljbGVJRCAgICAgPT4gJFBhcmFte0FydGljbGVCb3hBbGx9LT5bJEluZGV4XS0+e0FydGljbGVJRH0sCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICAgICAgUmVhbE5hbWVzICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgSW5jbHVkZSBzb21lIGluZm9ybWF0aW9uIGFib3V0IGNvbW11bmljYXRpb24gY2hhbm5lbC4KICAgICAgICBpZiAoICEkQ29tbXVuaWNhdGlvbkNoYW5uZWxEYXRheyAkQXJ0aWNsZXtDb21tdW5pY2F0aW9uQ2hhbm5lbElEfSB9ICkgewoKICAgICAgICAgICAgIyBDb21tdW5pY2F0aW9uIGNoYW5uZWwgZGlzcGxheSBuYW1lIGlzIHBhcnQgb2YgdGhlIGNvbmZpZ3VyYXRpb24uCiAgICAgICAgICAgIG15ICVDb21tdW5pY2F0aW9uQ2hhbm5lbCA9ICRDb21tdW5pY2F0aW9uQ2hhbm5lbE9iamVjdC0+Q2hhbm5lbEdldCgKICAgICAgICAgICAgICAgIENoYW5uZWxJRCA9PiAkQXJ0aWNsZXtDb21tdW5pY2F0aW9uQ2hhbm5lbElEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgUHJlc2VuY2Ugb2YgY29tbXVuaWNhdGlvbiBjaGFubmVsIG9iamVjdCBpbmRpY2F0ZXMgaXRzIHZhbGlkaXR5LgogICAgICAgICAgICBteSAkQ2hhbm5lbE9iamVjdCA9ICRDb21tdW5pY2F0aW9uQ2hhbm5lbE9iamVjdC0+Q2hhbm5lbE9iamVjdEdldCgKICAgICAgICAgICAgICAgIENoYW5uZWxJRCA9PiAkQXJ0aWNsZXtDb21tdW5pY2F0aW9uQ2hhbm5lbElEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRDb21tdW5pY2F0aW9uQ2hhbm5lbERhdGF7ICRBcnRpY2xle0NvbW11bmljYXRpb25DaGFubmVsSUR9IH0gPSB7CiAgICAgICAgICAgICAgICBDaGFubmVsTmFtZSAgICAgICAgPT4gJENvbW11bmljYXRpb25DaGFubmVse0NoYW5uZWxOYW1lfSwKICAgICAgICAgICAgICAgIENoYW5uZWxEaXNwbGF5TmFtZSA9PiAkQ29tbXVuaWNhdGlvbkNoYW5uZWx7RGlzcGxheU5hbWV9LAogICAgICAgICAgICAgICAgQ2hhbm5lbEludmFsaWQgICAgID0+ICEkQ2hhbm5lbE9iamVjdCwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICVBcnRpY2xlID0gKCAlQXJ0aWNsZSwgJXsgJENvbW11bmljYXRpb25DaGFubmVsRGF0YXsgJEFydGljbGV7Q29tbXVuaWNhdGlvbkNoYW5uZWxJRH0gfSB9ICk7CgogICAgICAgIHB1c2ggQEFydGljbGVCb3gsIFwlQXJ0aWNsZTsKICAgIH0KCiAgICByZXR1cm4gQEFydGljbGVCb3g7Cn0KCj1oZWFkMiBfQXJ0aWNsZVJlbmRlcigpCgpSZXR1cm5zIGFydGljbGUgaHRtbC4KCiAgICBteSAkSFRNTCA9ICRTZWxmLT5fQXJ0aWNsZVJlbmRlcigKICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgICAgID0+IDEyMywgICAgICAjIChyZXF1aXJlZCkKICAgICAgICBBcnRpY2xlSUQgICAgICAgICAgICAgID0+IDEyMywgICAgICAjIChyZXF1aXJlZCkKICAgICAgICBUeXBlICAgICAgICAgICAgICAgICAgID0+ICdTdGF0aWMnLCAjIChyZXF1aXJlZCkgU3RhdGljIG9yIE9uTG9hZAogICAgICAgIFNob3dCcm93c2VyTGlua01lc3NhZ2UgPT4gMSwgICAgICAgICMgKG9wdGlvbmFsKQogICAgKTsKClJlc3VsdDoKICAgICRIVE1MID0gIjxkaXY+Li4uPC9kaXY+IjsKCj1jdXQKCnN1YiBfQXJ0aWNsZVJlbmRlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgQ2hlY2sgbmVlZGVkIHN0dWZmLgogICAgZm9yIG15ICROZWVkZWQgKHF3KFRpY2tldElEIEFydGljbGVJRCBUeXBlKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgR2V0IGFydGljbGUgZGF0YS4KICAgIG15ICRBcnRpY2xlQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKS0+QmFja2VuZEZvckFydGljbGUoJVBhcmFtKTsKCiAgICAjIERldGVybWluZSBjaGFubmVsIG5hbWUgZm9yIHRoaXMgQXJ0aWNsZS4KICAgIG15ICRDaGFubmVsTmFtZSA9ICRBcnRpY2xlQmFja2VuZE9iamVjdC0+Q2hhbm5lbE5hbWVHZXQoKTsKCiAgICBteSAkTG9hZGVkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSgKICAgICAgICAiS2VybmVsOjpPdXRwdXQ6OkhUTUw6OlRpY2tldFpvb206OkFnZW50OjokQ2hhbm5lbE5hbWUiLAogICAgKTsKICAgIHJldHVybiBpZiAhJExvYWRlZDsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgiS2VybmVsOjpPdXRwdXQ6OkhUTUw6OlRpY2tldFpvb206OkFnZW50OjokQ2hhbm5lbE5hbWUiKS0+QXJ0aWNsZVJlbmRlcigKICAgICAgICAlUGFyYW0sCiAgICAgICAgQXJ0aWNsZUFjdGlvbnMgPT4gJFBhcmFte01lbnVJdGVtc30sCiAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKfQoKc3ViIF9HZXRJbmNsdWRlZEZpZWxkT3JkZXJlZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15IEBSZXR1cm47CgogICAgSVRFTToKICAgIGZvciBteSAkSW5jbHVkZUl0ZW0gKCBAeyAkUGFyYW17SW5jbHVkZX0gfSApIHsKCiAgICAgICAgaWYgKCAkSW5jbHVkZUl0ZW0tPntHcmlkfSApIHsKICAgICAgICAgICAgZm9yIG15ICRSb3cgKCBAeyAkSW5jbHVkZUl0ZW0tPntHcmlkfXtSb3dzfSB9ICkgewoKICAgICAgICAgICAgICAgIENPTFVNTjoKICAgICAgICAgICAgICAgIGZvciBteSAkREZFbnRyeSAoICRSb3ctPkAqICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OIGlmICEkREZFbnRyeS0+e0RGfTsKCiAgICAgICAgICAgICAgICAgICAgcHVzaCBAUmV0dXJuLCAkREZFbnRyeS0+e0RGfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRJbmNsdWRlSXRlbS0+e0RGfSApIHsKICAgICAgICAgICAgcHVzaCBAUmV0dXJuLCAkSW5jbHVkZUl0ZW0tPntERn07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBAUmV0dXJuOwp9CgojIFJvdGhlciBPU1MgLyBBZ2VudFRpY2tldEZvcm1EcmFmdFJldmlldwpzdWIgX0dldFJldmlld1Blcm1pc3Npb25MZXZlbCgpIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgI2NoZWNrIGlmIHVzZXIgaXMgdGhlIG93bmVyCiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKICAgIGlmICgKICAgICAgICAkVGlja2V0T2JqZWN0LT5Pd25lckNoZWNrKAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgT3duZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICkKICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuICdvd25lcic7CiAgICB9CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBjaGVjayBtb2R1bGUgcmVnaXN0cnkKICAgIG15ICRNb2R1bGVSZWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKS0+e0FnZW50VGlja2V0Rm9ybURyYWZ0RWRpdH07CgogICAgIyBubyBwZXJtaXNzaW9uIGlmIG1vZHVsZSBpcyBub3QgcmVnaXN0ZXJlZAogICAgcmV0dXJuICcnIGlmICEkTW9kdWxlUmVnOwoKICAgICMgbW9kdWxlIHBlcm1pc3Npb24gY2hlY2sgZm9yIGFjdGlvbgogICAgbXkgJUFjY2Vzc0ZsYWc7CiAgICBpZiAoCiAgICAgICAgcmVmICRNb2R1bGVSZWctPntHcm91cFJvfSBlcSAnQVJSQVknCiAgICAgICAgJiYgIXNjYWxhciBAeyAkTW9kdWxlUmVnLT57R3JvdXBSb30gfQogICAgICAgICYmIHJlZiAkTW9kdWxlUmVnLT57R3JvdXB9IGVxICdBUlJBWScKICAgICAgICAmJiAhc2NhbGFyIEB7ICRNb2R1bGVSZWctPntHcm91cH0gfQogICAgICAgICkKICAgIHsKICAgICAgICAkQWNjZXNzRmxhZ3tBY2Nlc3NSb30gPSAxOwogICAgICAgICRBY2Nlc3NGbGFne0FjY2Vzc1J3fSA9IDE7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICAgICAgUEVSTUlTU0lPTjoKICAgICAgICBmb3IgbXkgJFBlcm1pc3Npb24gKHF3KEdyb3VwUm8gR3JvdXApKSB7CiAgICAgICAgICAgIG15ICRBY2Nlc3NPayA9IDA7CiAgICAgICAgICAgIG15ICRHcm91cCAgICA9ICRNb2R1bGVSZWctPnskUGVybWlzc2lvbn07CiAgICAgICAgICAgIG5leHQgUEVSTUlTU0lPTiBpZiAhJEdyb3VwOwogICAgICAgICAgICBpZiAoIHJlZiAkR3JvdXAgZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgIElOTkVSOgogICAgICAgICAgICAgICAgZm9yIG15ICRHcm91cE5hbWUgKCBAeyRHcm91cH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBJTk5FUiBpZiAhJEdyb3VwTmFtZTsKICAgICAgICAgICAgICAgICAgICBuZXh0IElOTkVSIGlmICEkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25DaGVjaygKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXBOYW1lID0+ICRHcm91cE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAkUGVybWlzc2lvbiBlcSAnR3JvdXBSbycgPyAncm8nIDogJ3J3JywKCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkQWNjZXNzT2sgPSAxOwogICAgICAgICAgICAgICAgICAgIGxhc3QgSU5ORVI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBteSAkSGFzUGVybWlzc2lvbiA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvbkNoZWNrKAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgR3JvdXBOYW1lID0+ICRHcm91cCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJFBlcm1pc3Npb24gZXEgJ0dyb3VwUm8nID8gJ3JvJyA6ICdydycsCgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICgkSGFzUGVybWlzc2lvbikgewogICAgICAgICAgICAgICAgICAgICRBY2Nlc3NPayA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkUGVybWlzc2lvbiBlcSAnR3JvdXAnICYmICRBY2Nlc3NPayApIHsKICAgICAgICAgICAgICAgICRBY2Nlc3NGbGFne0FjY2Vzc1JvfSA9IDE7CiAgICAgICAgICAgICAgICAkQWNjZXNzRmxhZ3tBY2Nlc3NSd30gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFBlcm1pc3Npb24gZXEgJ0dyb3VwUm8nICYmICRBY2Nlc3NPayApIHsKICAgICAgICAgICAgICAgICRBY2Nlc3NGbGFne0FjY2Vzc1JvfSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgbW9kdWxlIHJlcXVpcmVzIGF0IGxlYXN0IHRoZSBiYXNpYyBybyBwZXJtaXNzaW9uLCBvdGhlcndpc2UgZG8gbm90IGdyYW50IGFjY2VzcwogICAgICAgIHJldHVybiBpZiAhJEFjY2Vzc0ZsYWd7QWNjZXNzUm99ICYmICEkQWNjZXNzRmxhZ3tBY2Nlc3NSd30gfHwgISRBY2Nlc3NGbGFne0FjY2Vzc1JvfSAmJiAkQWNjZXNzRmxhZ3tBY2Nlc3NSd307CiAgICB9CgogICAgIyBpZiBBY2Nlc3NSdyBpcyB0cnVlLCB0aGVuIGNoZWNrIGFjY2VzcyBhdCB0aWNrZXQgbGV2ZWwKICAgIGlmICggJEFjY2Vzc0ZsYWd7QWNjZXNzUnd9ICkgewogICAgICAgIGlmICgKICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0UGVybWlzc2lvbigKICAgICAgICAgICAgICAgIFR5cGUgICAgID0+ICJydyIsCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkU2VsZi0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIExvZ05vICAgID0+IDEsCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICJydyI7CiAgICAgICAgfQogICAgfQoKICAgICMgYXQgdGhpcyBwb2ludDoKICAgICMgQWNjZXNzUncgaXMgZmFsc2UgYnV0IEFjY2Vzc1JvIGlzIHRydWUgb3IKICAgICMgQWNjZXNzUncgaXMgdHJ1ZSBidXQgdGlja2V0IGhhcyBvbmx5IHJvIHBlcm1pc3Npb24KICAgIHJldHVybiAicm8iOwp9CiMgRU8gQWdlbnRUaWNrZXRGb3JtRHJhZnRSZXZpZXcKCjE7Cg==</File>
        <File Location="Custom/Kernel/Output/HTML/Templates/Standard/AgentTicketZoom.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA1NzhiNGIxOTkyN2Y2MzE4Mzc2YzAyZTMxNzg4ZTI0MjVlMTA0MTE2IC0gS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudFRpY2tldFpvb20udHQKIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpUVDo6U2NyaXB0VXNhZ2UpCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBcnRpY2xlRmlsdGVyRGlhbG9nIikgJV0KPGRpdiBpZD0iQXJ0aWNsZUZpbHRlckRpYWxvZyIgY2xhc3M9IkhpZGRlbiI+CiAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgaWQ9IkFydGljbGVGaWx0ZXJEaWFsb2dGb3JtIiBuYW1lPSJBcnRpY2xlRmlsdGVyRGlhbG9nRm9ybSI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IkFnZW50VGlja2V0Wm9vbSIgbmFtZT0iQWN0aW9uIi8+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IkFydGljbGVGaWx0ZXJTZXQiIG5hbWU9IlN1YmFjdGlvbiIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJbJSBEYXRhLlRpY2tldElEIHwgaHRtbCAlXSIgbmFtZT0iVGlja2V0SUQiLz4KICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNvbW11bmljYXRpb25DaGFubmVsRmlsdGVyIj5bJSBUcmFuc2xhdGUoIkNvbW11bmljYXRpb24gY2hhbm5lbCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkNoYW5uZWxzICVdCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgIDxsYWJlbCBmb3I9IkN1c3RvbWVyVmlzaWJpbGl0eUZpbHRlciI+WyUgVHJhbnNsYXRlKCJDdXN0b21lciB2aXNpYmlsaXR5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgIFslIERhdGEuQ3VzdG9tZXJWaXNpYmlsaXR5ICVdCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgIDxsYWJlbCBmb3I9IkFydGljbGVTZW5kZXJUeXBlRmlsdGVyIj5bJSBUcmFuc2xhdGUoIlNlbmRlciBUeXBlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgIFslIERhdGEuQXJ0aWNsZVNlbmRlclR5cGVGaWx0ZXJTdHJpbmcgJV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgPGxhYmVsIGZvcj0iU2F2ZURlZmF1bHRzIj5bJSBUcmFuc2xhdGUoIlNhdmUgZmlsdGVyIHNldHRpbmdzIGFzIGRlZmF1bHQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iU2F2ZURlZmF1bHRzIiBuYW1lPSJTYXZlRGVmYXVsdHMiIHZhbHVlPSIxIiAvPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2ZpZWxkc2V0PgogICAgPC9mb3JtPgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkFydGljbGVGaWx0ZXJEaWFsb2ciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRXZlbnRUeXBlRmlsdGVyRGlhbG9nIikgJV0KPGRpdiBpZD0iRXZlbnRUeXBlRmlsdGVyRGlhbG9nIiBjbGFzcz0iSGlkZGVuIj4KICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBpZD0iRXZlbnRUeXBlRmlsdGVyRGlhbG9nRm9ybSIgbmFtZT0iRXZlbnRUeXBlRmlsdGVyRGlhbG9nRm9ybSI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IkFnZW50VGlja2V0Wm9vbSIgbmFtZT0iQWN0aW9uIi8+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IkV2ZW5UeXBlRmlsdGVyU2V0IiBuYW1lPSJTdWJhY3Rpb24iLz4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iWyUgRGF0YS5UaWNrZXRJRCB8IGh0bWwgJV0iIG5hbWU9IlRpY2tldElEIi8+CiAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICA8bGFiZWwgZm9yPSJFdmVudFR5cGVGaWx0ZXIiPlslIFRyYW5zbGF0ZSgiRXZlbnQgVHlwZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkV2ZW50VHlwZUZpbHRlclN0cmluZyAlXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICA8bGFiZWwgZm9yPSJTYXZlRGVmYXVsdHMiPlslIFRyYW5zbGF0ZSgiU2F2ZSBhcyBkZWZhdWx0IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9IlNhdmVEZWZhdWx0cyIgbmFtZT0iU2F2ZURlZmF1bHRzIiB2YWx1ZT0iMSIgLz4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9maWVsZHNldD4KICAgIDwvZm9ybT4KPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJFdmVudFR5cGVGaWx0ZXJEaWFsb2ciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyIikgJV0KPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4gVGlja2V0Wm9vbSBVc2VBcnRpY2xlQ29sb3JzIj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyTGVmdCI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJIZWFkbGluZSBOb01hcmdpbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iRmxhZyIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlByaW9yaXR5KSB8IGh0bWwgJV0iPjxzcGFuIGNsYXNzPSJQcmlvcml0eUlELVslIERhdGEuUHJpb3JpdHlJRCB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLlByaW9yaXR5KSB8IGh0bWwgJV08L3NwYW4+PC9kaXY+CiAgICAgICAgPGgxPgogICAgICAgICAgICBbJSBEYXRhLkhvb2sgJV1bJSBDb25maWcoJ1RpY2tldDo6SG9va0RpdmlkZXInKSAlXVslIERhdGEuVGlja2V0TnVtYmVyIHwgaHRtbCAlXSAmbWRhc2g7IFslIERhdGEuVGl0bGUgfCBodG1sICVdCiAgICAgICAgPC9oMT4KICAgIDwvZGl2PgoKIyBJZnJhbWUgdXNlZCBmb3IgZml4aW5nIGJ1ZyM4NTQ1OiBBdHRhY2htZW50IGRvd25sb2FkIG5vdCBwb3NzaWJsZSBpZiBwb3AgdXAgb2YgYW5vdGhlciBhY3Rpb24gaXMgb3BlbgojIEFsbCBkb3dubG9hZHMgKGUuZy4gYXR0YWNobWVudHMpIGhhdmUgdGhpcyBpZnJhbWUgYXMgdGFyZ2V0LiBUaGlzIHByZXZlbnRzIHRoZSBicm93c2VyIGZyb20gc2VuZGluZwojIGFuIGh0dHAgcmVxdWVzdCB0byB0aGUgVGlja2V0Wm9vbSB3aW5kb3cuIEl0IHNlbmRzIHRoZSBkb3dubG9hZCByZXF1ZXN0IHRvIHRoaXMgaWZyYW1lIGluc3RlYWQuCiMgU2VuZGluZyB0aGUgZG93bmxvYWQgcmVxdWVzdCB0byB0aGUgbWFpbiB3aW5kb3cgd291bGQgbGVhZCB0byBhbiBhbGVydCBtZXNzYWdlIGFib3V0IGxlYXZpbmcgdGhlIHBhZ2UKIyBpZiBhdCB0aGUgc2FtZSB0aW1lIGEgcG9wdXAgd2luZG93IChlLmcuIGZvciBhIHRpY2tldCBhbnN3ZXIpIGlzIG9wZW5lZC4KICAgIDxpZnJhbWUgc3JjPSJhYm91dDpibGFuayIgd2lkdGg9IjAiIGhlaWdodD0iMCIgbmFtZT0iQXR0YWNobWVudFdpbmRvdyIgaWQ9IkF0dGFjaG1lbnRXaW5kb3ciPjwvaWZyYW1lPgoKICAgIDxkaXYgY2xhc3M9IkxheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyTGFzdCI+CiAgICAgICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGb3JtRHJhZnRUYWJsZSIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTaG93IG9yIGhpZGUgdGhlIGNvbnRlbnQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoICJEcmFmdHMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUiIGlkPSJGb3JtRHJhZnRUYWJsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIEZPUkVBQ0ggRm9ybURyYWZ0IElOIERhdGEuRm9ybURyYWZ0cyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJNYXN0ZXJBY3Rpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iRHJhZnROYW1lIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXVslIEZvcm1EcmFmdC5MaW5rIHwgSW50ZXJwb2xhdGUgJV07TG9hZEZvcm1EcmFmdD0xO0Zvcm1EcmFmdElEPVslIEZvcm1EcmFmdC5Gb3JtRHJhZnRJRCB8IGh0bWwgJV0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iWyUgRm9ybURyYWZ0LkNsYXNzIHwgaHRtbCAlXSBNYXN0ZXJBY3Rpb25MaW5rIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRm9ybURyYWZ0LkxpbmtQYXJhbSAlXT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB0aXRsZT0iWyUgVHJhbnNsYXRlKEZvcm1EcmFmdC5EZXNjcmlwdGlvbikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRm9ybURyYWZ0Lk5hbWUpIHwgaHRtbCAlXSAtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDcmVhdGVkIikgfCBodG1sICVdIFslIEZvcm1EcmFmdC5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpICVdIFslIFRyYW5zbGF0ZSgiYnkiKSB8IGh0bWwgJV0gWyUgRm9ybURyYWZ0LkNyZWF0ZWRCeVVzZXIgfCBodG1sICVdIFslIFRyYW5zbGF0ZSgiQ2hhbmdlZCIpIHwgaHRtbCAlXSBbJSBGb3JtRHJhZnQuQ2hhbmdlVGltZSB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSAlXSBbJSBUcmFuc2xhdGUoImJ5IikgfCBodG1sICVdIFslIEZvcm1EcmFmdC5DaGFuZ2VkQnlVc2VyIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRm9ybURyYWZ0LlRpdGxlIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KIyBSb3RoZXIgT1NTIC8gQWdlbnRUaWNrZXRGb3JtRHJhZnRSZXZpZXcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBJRiBGb3JtRHJhZnQuUmVhZFdyaXRlUGVybWlzc2lvbiAlXQojIEVPIEFnZW50VGlja2V0Rm9ybURyYWZ0UmV2aWV3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iRm9ybURyYWZ0RGVsZXRlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXT9BY3Rpb249QWdlbnRUaWNrZXRab29tO1N1YmFjdGlvbj1Gb3JtRHJhZnREZWxldGU7Rm9ybURyYWZ0SUQ9WyUgRm9ybURyYWZ0LkZvcm1EcmFmdElEIHwgaHRtbCAlXTtUaWNrZXRJRD1bJSBEYXRhLlRpY2tldElEICVdIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10aXRsZT0iWyUgRm9ybURyYWZ0LlRpdGxlIHwgaHRtbCAlXSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIEZvcm1EcmFmdC5MaW5rUGFyYW0gJV0+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiMgUm90aGVyIE9TUyAvIEFnZW50VGlja2V0Rm9ybURyYWZ0UmV2aWV3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiMgRU8gQWdlbnRUaWNrZXRGb3JtRHJhZnRSZXZpZXcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGb3JtRHJhZnRUYWJsZSIpICVdCgogICAgICAgICAgICBbJSBGT1JFQUNIIFdpZGdldCBJTiBEYXRhLlNpZGViYXJXaWRnZXRzOyAlXQogICAgICAgICAgICAgICAgWyUgSUYgV2lkZ2V0LkFzeW5jOyAlXQogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlslIFdpZGdldC5FbGVtZW50SUQgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRJc0xvYWRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXNwaW5uZXIgZmEtc3BpbiI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIFslIEVMU0U7ICVdCiAgICAgICAgICAgICAgICAgICAgWyUgV2lkZ2V0Lk91dHB1dCAlXQogICAgICAgICAgICAgICAgWyUgRU5EOyAlXQogICAgICAgICAgICBbJSBFTkQ7ICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50IE92ZXJmbG93VmlzaWJsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQWN0aW9uUm93IENsdXN0ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRBY3Rpb24gQXJ0aWNsZVZpZXciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IkFydGljbGVWaWV3U2V0dGluZ3MiIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNldHRpbmdzIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY29nIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiU2V0dGluZ3MiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbnMiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaWNrZXRNZW51SXRlbSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRpY2tldE1lbnUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGlkPSJuYXYtWyUgRGF0YS5OYW1lIHwgcmVwbGFjZSgnICcsICctJykgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuVHlwZSA9PSAnQ2x1c3RlcicgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iWyUgRGF0YS5DbGFzcyAlXSIgPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXSA8aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIEVMU0UgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1bJSBEYXRhLkxpbmsgfCBJbnRlcnBvbGF0ZSAlXSIgY2xhc3M9IlslIERhdGEuQ2xhc3MgJV0iIFslIERhdGEuTGlua1BhcmFtICVdIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5EZXNjcmlwdGlvbikgfCBodG1sICVdIiB0YXJnZXQ9IlslIERhdGEuVGFyZ2V0IHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRpY2tldE1lbnVTdWJDb250YWluZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBpZD0ibmF2LVslIERhdGEuTmFtZSB8IHJlcGxhY2UoJyAnLCAnLScpIHwgaHRtbCAlXS1jb250YWluZXIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaWNrZXRNZW51U3ViQ29udGFpbmVySXRlbSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBpZD0ibmF2LVslIERhdGEuTmFtZSB8IHJlcGxhY2UoJyAnLCAnLScpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBJRiAhRGF0YS5FeHRlcm5hbExpbmsgJV1bJSBFbnYoIkJhc2VsaW5rIikgJV1bJSBFTkQgJV1bJSBEYXRhLkxpbmsgfCBJbnRlcnBvbGF0ZSAlXSIgY2xhc3M9IlslIERhdGEuQ2xhc3MgfCBodG1sICVdIiBbJSBEYXRhLkxpbmtQYXJhbSAlXSB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuRGVzY3JpcHRpb24pIHwgaHRtbCAlXSIgdGFyZ2V0PSJbJSBEYXRhLlRhcmdldCB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIlRpY2tldE1lbnVTdWJDb250YWluZXJJdGVtIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgpbJSBSZW5kZXJCbG9ja0VuZCgiVGlja2V0TWVudVN1YkNvbnRhaW5lciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiVGlja2V0TWVudSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRpY2tldE1lbnVGb3JtR2VuZXJpYyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IlslIERhdGEuQ2xhc3MgfCBodG1sICVdIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgIyB1c2luZyBhIGZvcm0gaGVyZSBpcyBuZWNlc3NhcnkgdG8gZW5hYmxlIHRoZSBiYWNrZW5kIHRvIHBlcmZvcm0gYSBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgb24gYW4gYXJ0aWNsZSBhY3Rpb24gJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBjbGFzcz0iVGlja2V0QWN0aW9uRm9ybSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkRlc2NyaXB0aW9uKSB8IGh0bWwgJV0iIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSB8IGh0bWwgJV0iIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIERhdGEuQWN0aW9uIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJUaWNrZXRJRCIgdmFsdWU9IlslIERhdGEuVGlja2V0SUQgfCBodG1sICVdIi8+ClslIElGIERhdGEuU3ViYWN0aW9uICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlslIERhdGEuU3ViYWN0aW9uIHwgaHRtbCAlXSIgLz4KWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJUaWNrZXRNZW51Rm9ybUFjdGlvbiBbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkRlc2NyaXB0aW9uKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiVGlja2V0TWVudUZvcm1HZW5lcmljIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlRpY2tldE1lbnVJdGVtIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiVGlja2V0TWVudVBob25lQXNEcm9wZG93biIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXSIgYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9ImdldCIgaWQ9IlslIERhdGEuRm9ybUlEIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIERhdGEuQWN0aW9uIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJUaWNrZXRJRCIgdmFsdWU9IlslIERhdGEuVGlja2V0SUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuUGhvbmVFbGVtZW50SUQgfCBodG1sICVdIiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU3RhbmRhcmRSZXBseVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiVGlja2V0TWVudVBob25lQXNEcm9wZG93biIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk1vdmVMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iWyUgRGF0YS5DbGFzcyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIHRpdGxlPSJbJSBUcmFuc2xhdGUoIk1vdmUgdGlja2V0IHRvIGEgZGlmZmVyZW50IHF1ZXVlIikgfCBodG1sICVdIiBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgfCBodG1sICVdIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJBZ2VudFRpY2tldE1vdmUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUXVldWVJRCIgdmFsdWU9IlslIERhdGEuUXVldWVJRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iVGlja2V0SUQiIHZhbHVlPSJbJSBEYXRhLlRpY2tldElEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEZXN0UXVldWVJRCIgY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUXVldWUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Nb3ZlUXVldWVzU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJNb3ZlTGluayIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk1vdmVGb3JtIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRUaWNrZXRNb3ZlO1RpY2tldElEPVslIERhdGEuVGlja2V0SUQgfCB1cmkgJV07IiBjbGFzcz0iQXNQb3B1cCBQb3B1cFR5cGVfVGlja2V0QWN0aW9uIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDaGFuZ2UgUXVldWUiKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZSgiUXVldWUiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiTW92ZUZvcm0iKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaWNrZXRNZW51RXh0ZXJuYWxMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBEYXRhLkxpbmsgfCBJbnRlcnBvbGF0ZSAlXSIgY2xhc3M9IlslIERhdGEuQ2xhc3MgfCBodG1sICVdIiBbJSBEYXRhLkxpbmtQYXJhbSAlXSB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuRGVzY3JpcHRpb24pIHwgaHRtbCAlXSIgdGFyZ2V0PSJbJSBEYXRhLlRhcmdldCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIlRpY2tldE1lbnVFeHRlcm5hbExpbmsiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1dpZGdldCIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBFeHBhbmRlZCIgaWQ9IkR5bmFtaWNGaWVsZHNXaWRnZXQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRBY3Rpb24gVG9nZ2xlIj48YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTaG93IG9yIGhpZGUgdGhlIGNvbnRlbnQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoRGF0YS5XaWRnZXRUaXRsZSkgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOZXh0QWN0aXZpdHlEaWFsb2dzIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkxpZ2h0Um93IEJvdHRvbSI+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzdHJvbmc+WyUgVHJhbnNsYXRlKERhdGEuQWN0aXZpdHlOYW1lKSB8IGh0bWwgJV06PC9zdHJvbmc+PC9saT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aXZpdHlEaWFsb2dEaXJlY3RTdWJtaXQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdIiBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgfCBodG1sICVdIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IkFnZW50VGlja2V0UHJvY2VzcyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlN0b3JlQWN0aXZpdHlEaWFsb2ciLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJUaWNrZXRJRCIgdmFsdWU9IlslIERhdGEuVGlja2V0SUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUHJvY2Vzc0VudGl0eUlEIiB2YWx1ZT0iWyUgRGF0YS5Qcm9jZXNzRW50aXR5SUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aXZpdHlEaWFsb2dFbnRpdHlJRCIgdmFsdWU9IlslIERhdGEuQWN0aXZpdHlEaWFsb2dFbnRpdHlJRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJCdXR0b25fWyUgRGF0YS5BY3Rpdml0eURpYWxvZ0VudGl0eUlEIHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiIHR5cGU9InN1Ym1pdCI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBY3Rpdml0eURpYWxvZ0RpcmVjdFN1Ym1pdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkFjdGl2aXR5RGlhbG9nIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXSIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gQXNQb3B1cCBQb3B1cFR5cGVfVGlja2V0QWN0aW9uIE5leHRBY3Rpdml0eURpYWxvZyIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50VGlja2V0UHJvY2VzcztTdWJhY3Rpb249RGlzcGxheUFjdGl2aXR5RGlhbG9nO1RpY2tldElEPVslIERhdGEuVGlja2V0SUQgfCB1cmkgJV07UHJvY2Vzc0VudGl0eUlEPVslIERhdGEuUHJvY2Vzc0VudGl0eUlEIHwgdXJpICVdO0FjdGl2aXR5RGlhbG9nRW50aXR5SUQ9WyUgRGF0YS5BY3Rpdml0eURpYWxvZ0VudGl0eUlEIHwgdXJpICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aXZpdHlEaWFsb2ciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdWw+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vQWN0aXZpdHlEaWFsb2dzIikgJV0KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iQWN0aW9uTWVzc2FnZSI+WyUgVHJhbnNsYXRlKCJUaGVyZSBhcmUgbm8gZGlhbG9ncyBhdmFpbGFibGUgYXQgdGhpcyBwb2ludCBpbiB0aGUgcHJvY2Vzcy4iKSB8IGh0bWwgJV08L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJOb0FjdGl2aXR5RGlhbG9ncyIpICVdCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJOZXh0QWN0aXZpdHlEaWFsb2dzIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQgUHJvY2Vzc0luZm8iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlByb2Nlc3NJbmZvcm1hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdXaWRnZXREeW5hbWljRmllbGRHcm91cHMiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1dpZGdldER5bmFtaWNGaWVsZEdyb3VwU2VwYXJhdG9yIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0iRmllbGRTZXRTZXBhcmF0b3IiPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvaDI+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld1dpZGdldER5bmFtaWNGaWVsZEdyb3VwU2VwYXJhdG9yIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdXaWRnZXREeW5hbWljRmllbGQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdGFuZGFyZEZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkQ29udGFpbmVyIER5bmFtaWNGaWVsZEF1dG9SZXNpemUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCB0aXRsZT0iWyUgRGF0YS5MYWJlbCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhYmVsIHwgaHRtbCAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1dpZGdldER5bmFtaWNGaWVsZFZhbHVlT3ZlcmxheVRyaWdnZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iU2hvd0ZpZWxkSW5mb092ZXJsYXkiPis8L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld1dpZGdldER5bmFtaWNGaWVsZFZhbHVlT3ZlcmxheVRyaWdnZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIEN1dFZhbHVlIER5bmFtaWNGaWVsZF9bJSBEYXRhLk5hbWUgJV0iPgo8IS0tIE91dHB1dEZpbHRlckhvb2tfV2lkZ2V0RHluYW1pY0ZpZWxkQmVnaW4gLS0+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3V2lkZ2V0RHluYW1pY0ZpZWxkTGluayIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlZhbHVlSXRlbUxpbmsiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB0aXRsZT0iWyUgRGF0YS5UaXRsZSAlXSI+PGEgaHJlZj0iWyUgRGF0YS5MaW5rIHwgSW50ZXJwb2xhdGUgJV0iWyUgSUYgRGF0YS5MaW5rUHJldmlldyAlXSBkYXRhLXRyaWdnZXI9ImZsb2F0ZXIiIGRhdGEtZmxvYXRlci11cmw9IlslIERhdGEuTGlua1ByZXZpZXcgfCBJbnRlcnBvbGF0ZSAlXSJbJSBFTkQgJV0gdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJEeW5hbWljRmllbGRMaW5rIj5bJSBEYXRhLlZhbHVlICVdPC9hPjwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTXVsdGl2YWx1ZVNlcGFyYXRvckxpbmsiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2JyPgpbJSBSZW5kZXJCbG9ja0VuZCgiTXVsdGl2YWx1ZVNlcGFyYXRvckxpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiVmFsdWVJdGVtTGluayIpICVdClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld1dpZGdldER5bmFtaWNGaWVsZExpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1dpZGdldER5bmFtaWNGaWVsZFBsYWluIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5WYWx1ZSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdXaWRnZXREeW5hbWljRmllbGRQbGFpbiIpICVdCjwhLS0gT3V0cHV0RmlsdGVySG9va19XaWRnZXREeW5hbWljRmllbGRFbmQgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZUxvbmciPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1dpZGdldER5bmFtaWNGaWVsZFZhbHVlTG9uZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmFsdWUgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3V2lkZ2V0RHluYW1pY0ZpZWxkVmFsdWVMb25nIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTdGFuZGFyZEZpZWxkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2V0RmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU2V0RHluYW1pY0ZpZWxkIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRHluYW1pY0ZpZWxkU2V0U2VwYXJhdG9yIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9IkZpZWxkU2V0U2VwYXJhdG9yIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdPC9oMj4KWyUgUmVuZGVyQmxvY2tFbmQoIkR5bmFtaWNGaWVsZFNldFNlcGFyYXRvciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2V0RHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRDb250YWluZXIgRHluYW1pY0ZpZWxkQXV0b1Jlc2l6ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgdGl0bGU9IlslIERhdGEuTGFiZWwgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhYmVsIHwgaHRtbCAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZXREeW5hbWljRmllbGRWYWx1ZU92ZXJsYXlUcmlnZ2VyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iU2hvd0ZpZWxkSW5mb092ZXJsYXkiPis8L2E+ClslIFJlbmRlckJsb2NrRW5kKCJTZXREeW5hbWljRmllbGRWYWx1ZU92ZXJsYXlUcmlnZ2VyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUgQ3V0VmFsdWUgRHluYW1pY0ZpZWxkX1slIERhdGEuTmFtZSAlXSI+CjwhLS0gT3V0cHV0RmlsdGVySG9va19TZXREeW5hbWljRmllbGRCZWdpbiAtLT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2V0RHluYW1pY0ZpZWxkTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIERhdGEuVGl0bGUgJV0iPjxhIGhyZWY9IlslIERhdGEuTGluayB8IEludGVycG9sYXRlICVdIlslIElGIERhdGEuTGlua1ByZXZpZXcgJV0gZGF0YS10cmlnZ2VyPSJmbG9hdGVyIiBkYXRhLWZsb2F0ZXItdXJsPSJbJSBEYXRhLkxpbmtQcmV2aWV3IHwgSW50ZXJwb2xhdGUgJV0iWyUgRU5EICVdIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iRHluYW1pY0ZpZWxkTGluayI+WyUgRGF0YS5WYWx1ZSAlXTwvYT48L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJTZXREeW5hbWljRmllbGRMaW5rIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2V0RHluYW1pY0ZpZWxkUGxhaW4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmFsdWUgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlNldER5bmFtaWNGaWVsZFBsYWluIikgJV0KPCEtLSBPdXRwdXRGaWx0ZXJIb29rX1NldER5bmFtaWNGaWVsZEVuZCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZUxvbmciPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZXREeW5hbWljRmllbGRWYWx1ZUxvbmciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmFsdWUgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlNldER5bmFtaWNGaWVsZFZhbHVlTG9uZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGRTZXRWYWx1ZVNlcGFyYXRvciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJGaWVsZFNldFNlcGFyYXRvciI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPC9oMj4KWyUgUmVuZGVyQmxvY2tFbmQoIkR5bmFtaWNGaWVsZFNldFZhbHVlU2VwYXJhdG9yIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlNldER5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZXRGaWVsZCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld1dpZGdldER5bmFtaWNGaWVsZCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld1dpZGdldER5bmFtaWNGaWVsZEdyb3VwcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld1dpZGdldCIpICVdCgogICAgICAgICAgICA8ZGl2IGlkPSJBcnRpY2xlVHJlZSI+ClslIERhdGEuQXJ0aWNsZVRyZWUgJV0KICAgICAgICAgICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJIaW50Tm9BcnRpY2xlcyIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoaXMgaXRlbSBoYXMgbm8gYXJ0aWNsZXMgeWV0LiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSGludE5vQXJ0aWNsZXMiKSAlXQoKICAgICAgICAgICAgPGRpdiBpZD0iQXJ0aWNsZUl0ZW1zIj4KWyUgRGF0YS5BcnRpY2xlSXRlbXMgJV0KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICBbJSBGT1JFQUNIIFdpZGdldCBJTiBEYXRhLk1haW5XaWRnZXRzOyAlXQogICAgICAgICAgICAgICAgWyUgSUYgV2lkZ2V0LkFzeW5jOyAlXQogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlslIFdpZGdldC5FbGVtZW50SUQgJV0iPjwvZGl2PgogICAgICAgICAgICAgICAgWyUgRUxTRTsgJV0KICAgICAgICAgICAgICAgICAgICBbJSBXaWRnZXQuT3V0cHV0ICVdCiAgICAgICAgICAgICAgICBbJSBFTkQ7ICVdCiAgICAgICAgICAgIFslIEVORDsgJV0KCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPC9kaXY+Cgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkhlYWRlciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUcmVlIikgJV0KPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgIDxhIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNob3cgb3IgaGlkZSB0aGUgY29udGVudCIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2FyZXQtcmlnaHQiPjwvaT4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+CiAgICAgICAgICAgIDwvYT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8aDI+CiAgICAgICAgWyUgSUYgRGF0YS5ab29tVGltZWxpbmUgJV0KICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaWNrZXQgVGltZWxpbmUgVmlldyIpIHwgaHRtbCAlXQogICAgICAgIFslIEVMU0UgJV0KICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJBcnRpY2xlIE92ZXJ2aWV3IC0gJXMgQXJ0aWNsZShzKSIsIERhdGEuQXJ0aWNsZUNvdW50KSB8IGh0bWwgJV0KICAgICAgICBbJSBFTkQgJV0KICAgICAgICA8L2gyPgogICAgICAgIDxkaXYgY2xhc3M9IkFkZGl0aW9uYWxJbmZvcm1hdGlvbiBDb250cm9sUm93Ij4KClslIFJlbmRlckJsb2NrU3RhcnQoIkFydGljbGVQYWdlcyIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFydGljbGVQYWdlcyBJY29ucyI+CiAgICAgICAgWyUgRk9SRUFDSCBwYWdlIElOIFsxIC4uIERhdGEuUGFnZXNdOyAlXQogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50VGlja2V0Wm9vbTtUaWNrZXRJRD1bJSBEYXRhLlRpY2tldElEIHwgdXJpICVdO0FydGljbGVQYWdlPVslIHBhZ2UgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoJ1BhZ2UgJXMnLCBwYWdlKSB8IGh0bWwgJV0iIGRhdGEtcGFnZT0iWyUgcGFnZSAlXSIgWyUgSUYgcGFnZSA9PSBEYXRhLkN1cnJlbnRQYWdlICVdY2xhc3M9IkFjdGl2ZSJbJSBFTkQgJV0+WyUgcGFnZSAlXTwvYT4KICAgICAgICBbJSBFTkQ7ICVdCiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQXJ0aWNsZVBhZ2VzIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQXJ0aWNsZUZpbHRlckRpYWxvZ0xpbmsiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJBcnRpY2xlRmlsdGVyIEljb25zIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkFydGljbGUgRmlsdGVyIikgfCBodG1sICVdOjwvc3Bhbj4KIyBPbmx5IHNob3cgb25lOiBTZXQgb3IgUmVzZXQuCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBcnRpY2xlRmlsdGVyU2V0TGluayIpICVdCiAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBpZD0iU2V0QXJ0aWNsZUZpbHRlciIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiQWRkIEZpbHRlciIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPjxzcGFuPlslIFRyYW5zbGF0ZSgiU2V0IikgfCBodG1sICVdPC9zcGFuPjwvYT4KI1slIFJlbmRlckJsb2NrRW5kKCJBcnRpY2xlRmlsdGVyU2V0TGluayIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkFydGljbGVGaWx0ZXJSZXNldExpbmsiKSAlXQogICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgaWQ9IlJlc2V0QXJ0aWNsZUZpbHRlciIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVzZXQgRmlsdGVyIikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtdHJhc2gtbyI+PC9pPjxzcGFuPlslIFRyYW5zbGF0ZSgiUmVzZXQiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiQXJ0aWNsZUZpbHRlclJlc2V0TGluayIpICVdCiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQXJ0aWNsZUZpbHRlckRpYWxvZ0xpbmsiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQXJ0aWNsZUxpc3QiKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IlRpY2tldExpc3QiPgogICAgICAgICAgICA8ZGl2IGlkPSJBcnRpY2xlVGFibGVCb2R5IiBjbGFzcz0iQWN0aW9uUm93Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNjcm9sbGVyIj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgaWQ9IkFydGljbGVUYWJsZSIgY2xhc3M9IkRhdGFUYWJsZSBbJSBEYXRhLlRhYmxlQ2xhc3NlcyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJObyBTb3J0YWJsZSBJbml0aWFsU29ydGluZyBbJSBEYXRhLlpvb21FeHBhbmRTb3J0T3JkZXIgJV0iPjxhIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiTm8uIikgfCBodG1sICVdPC9hPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJVbnJlYWRBcnRpY2xlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJVbnJlYWRBcnRpY2xlcyIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiVW5yZWFkIGFydGljbGVzIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJVbnJlYWRBcnRpY2xlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXN0YXIiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkRpcmVjdGlvbiBTb3J0YWJsZSI+PGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRGlyZWN0aW9uIikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtZXhjaGFuZ2UiPjwvaT48L2E+PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlNlbmRlciBTb3J0YWJsZSI+PGEgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJTZW5kZXIiKSB8IGh0bWwgJV08L2E+PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNoYW5uZWwgU29ydGFibGUiPjxhIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiVmlhIikgfCBodG1sICVdPC9hPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJTdWJqZWN0IFNvcnRhYmxlIj48YSBocmVmPSIjIj5bJSBUcmFuc2xhdGUoIlN1YmplY3QiKSB8IGh0bWwgJV08L2E+PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNyZWF0ZWQgU29ydGFibGUiPjxhIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTwvYT48L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQXJ0aWNsZUVkaXQgU29ydGFibGUgQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiQXJ0aWNsZSBFZGl0ZWQiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWVkaXQiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJBdHRhY2htZW50cyBMYXN0IENlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkF0dGFjaG1lbnRzIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1wYXBlcmNsaXAiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrU3RhcnQoIlRpbWVVbml0SGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlRpbWVVbml0Ij48YSBocmVmPSIjIj5bJSBUcmFuc2xhdGUoIlRpbWUgVW5pdHMiKSB8IGh0bWwgJV08L2E+PC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlRpbWVVbml0SGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiVHJlZUl0ZW0iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJbJSBEYXRhLlNlbmRlclR5cGUgfCBodG1sICVdIFslIElGIERhdGEuU2VuZGVyVHlwZSA9PSAnY3VzdG9tZXInICVdSW5jb21pbmdbJSBFTFNFICVdT3V0Z29pbmdbJSBFTkQgJV0gWyUgSUYgRGF0YS5Jc1Zpc2libGVGb3JDdXN0b21lciAlXVZpc2libGVGb3JDdXN0b21lclslIEVMU0UgJV1Ob3RWaXNpYmxlRm9yQ3VzdG9tZXJbJSBFTkQgJV0gWyUgSUYgRGF0YS5BcnRpY2xlRGVsZXRlZCA9PSAiMSIgJV0gQXJ0aWNsZURlbGV0ZWQgWyUgRU5EICVdIFslIERhdGEuQ2xhc3NSb3cgfCBodG1sICVdIiBpZD0iUm93WyUgRGF0YS5BcnRpY2xlTnVtYmVyIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9Ik5vIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5BcnRpY2xlTnVtYmVyIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0iQXJ0aWNsZUluZm8iIG5hbWU9IkxpbmtbJSBEYXRhLkFydGljbGVOdW1iZXIgfCB1cmkgJV0iIHZhbHVlPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRUaWNrZXRab29tO1N1YmFjdGlvbj1BcnRpY2xlVXBkYXRlO0NvdW50PVslIERhdGEuQXJ0aWNsZU51bWJlciB8IHVyaSAlXTtUaWNrZXRJRD1bJSBEYXRhLlRpY2tldElEIHwgaHRtbCAlXTtBcnRpY2xlSUQ9WyUgRGF0YS5BcnRpY2xlSUQgfCBodG1sICVdOyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0iQXJ0aWNsZUlEIiB2YWx1ZT0iWyUgRGF0YS5BcnRpY2xlSUQgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0iU29ydERhdGEiIHZhbHVlPSJbJSBEYXRhLkFydGljbGVOdW1iZXIgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSBVbnJlYWRBcnRpY2xlcyBGaXhlZCBOb25UZXh0Q29udGVudCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlRyZWVJdGVtSW1wb3J0YW50QXJ0aWNsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbXBvcnRhbnRBcnRpY2xlcyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiSW1wb3J0YW50IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1pbmZvLWNpcmNsZSI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPlslIFRyYW5zbGF0ZSgiSW1wb3J0YW50IikgfCBodG1sICVdPC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiVHJlZUl0ZW1JbXBvcnRhbnRBcnRpY2xlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiVHJlZUl0ZW1OZXdBcnRpY2xlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlslIERhdGEuQ2xhc3MgfCBodG1sICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJVbnJlYWQgQXJ0aWNsZSEiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXN0YXIiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1zdGFyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIlRyZWVJdGVtTmV3QXJ0aWNsZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRyZWVJdGVtTm9OZXdBcnRpY2xlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ik5vQ29udGVudCI+PC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiVHJlZUl0ZW1Ob05ld0FydGljbGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJEaXJlY3Rpb24iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUcmVlSXRlbURpcmVjdGlvbkluY29taW5nIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkRpcmVjdGlvbiBJbmNvbWluZyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiSW5jb21pbmcgbWVzc2FnZSIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtbG9uZy1hcnJvdy1sZWZ0Ij48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgY2xhc3M9IlNvcnREYXRhIiB2YWx1ZT0iMCIgLz4KWyUgUmVuZGVyQmxvY2tFbmQoIlRyZWVJdGVtRGlyZWN0aW9uSW5jb21pbmciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUcmVlSXRlbURpcmVjdGlvbk91dGdvaW5nIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkRpcmVjdGlvbiBPdXRnb2luZyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiT3V0Z29pbmcgbWVzc2FnZSIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtbG9uZy1hcnJvdy1yaWdodCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJTb3J0RGF0YSIgdmFsdWU9IjEiIC8+ClslIFJlbmRlckJsb2NrRW5kKCJUcmVlSXRlbURpcmVjdGlvbk91dGdvaW5nIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiVHJlZUl0ZW1EaXJlY3Rpb25JbnRlcm5hbCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJEaXJlY3Rpb24gSW50ZXJuYWwiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkludGVybmFsIG1lc3NhZ2UiKSB8IGh0bWwgJV0iPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgY2xhc3M9IlNvcnREYXRhIiB2YWx1ZT0iMiIgLz4KWyUgUmVuZGVyQmxvY2tFbmQoIlRyZWVJdGVtRGlyZWN0aW9uSW50ZXJuYWwiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJTZW5kZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkFydGljbGVGaWVsZHMuU2VuZGVyLlZhbHVlIHwgaHRtbCAlXSI+PGEgaHJlZj0iIyI+WyUgRGF0YS5BcnRpY2xlRmllbGRzLlNlbmRlci5SZWFsbmFtZSB8IHRydW5jYXRlKDEwMCkgfCBodG1sICVdPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0iU29ydERhdGEiIHZhbHVlPSJbJSBEYXRhLkFydGljbGVGaWVsZHMuU2VuZGVyLlZhbHVlIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2hhbm5lbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgVHJhbnNsYXRlKERhdGEuQ2hhbm5lbERpc3BsYXlOYW1lKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5DaGFubmVsSW52YWxpZCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIFRyYW5zbGF0ZSgiTWlzc2luZyBjaGFubmVsIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZXhjbGFtYXRpb24tdHJpYW5nbGUgV2FybmluZyIgYXJpYS1oaWRkZW49InRydWUiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuVHJhbnNtaXNzaW9uU3RhdHVzICYmIERhdGEuVHJhbnNtaXNzaW9uU3RhdHVzLlN0YXR1cyA9PSAnRmFpbGVkJyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2VuZGluZyBvZiB0aGlzIG1lc3NhZ2UgaGFzIGZhaWxlZC4iKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10aW1lcyBFcnJvciIgYXJpYS1oaWRkZW49InRydWUiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0iU29ydERhdGEiIHZhbHVlPSJbJSBUcmFuc2xhdGUoRGF0YS5DaGFubmVsRGlzcGxheU5hbWUpIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iU3ViamVjdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuQXJ0aWNsZUZpZWxkcy5TdWJqZWN0LlZhbHVlIHwgaHRtbCAlXSI+PGEgaHJlZj0iIyI+WyUgRGF0YS5BcnRpY2xlRmllbGRzLlN1YmplY3QuVmFsdWUgfCB0cnVuY2F0ZSgxMDApIHwgaHRtbCAlXTwvYT48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgY2xhc3M9IlNvcnREYXRhIiB2YWx1ZT0iWyUgRGF0YS5BcnRpY2xlRmllbGRzLlN1YmplY3QuVmFsdWUgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDcmVhdGVkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoJ1RpbWVTaG9ydCcpICVdIj48YSBocmVmPSIjIj5bJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZVNob3J0IikgJV08L2E+PC9kaXY+CiMgSW5jbHVkZSBjdXN0b20gc29ydGluZyBpbmZvcm1hdGlvbjogZGF0ZSBpbiBJU08gZm9ybWF0LgojIE90aGVyIGRhdGUgZm9ybWF0cyBjYW5ub3QgYmUgc29ydGVkIHJlbGlhYmx5LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0iU29ydERhdGEiIHZhbHVlPSJbJSBEYXRhLkNyZWF0ZVRpbWUgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIlRoZSBhcnRpY2xlIHdhcyBlZGl0ZWQiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5Jc0VkaXRlZCA9PSAiMSIgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRWRpdEljb24iPjxpIGNsYXNzPSJmYSBmYS1jbG9uZSI+PC9pPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgY2xhc3M9IlNvcnREYXRhIiB2YWx1ZT0iWyUgRGF0YS5Jc0VkaXRlZCB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJBdHRhY2htZW50cyBDZW50ZXIgQXR0YWNobWVudCBGaXhlZCBOb25UZXh0Q29udGVudCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlRyZWVJdGVtQXR0YWNobWVudCIpICVdClslIFBST0NFU1MgQXJ0aWNsZUF0dGFjaG1lbnRzLnR0ICVdClslIFJlbmRlckJsb2NrRW5kKCJUcmVlSXRlbUF0dGFjaG1lbnQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUcmVlSXRlbU5vQXR0YWNobWVudCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJOb0NvbnRlbnQiPjwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIlRyZWVJdGVtTm9BdHRhY2htZW50IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuU2hvd1RpbWVVbml0cyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iTm8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlRpbWVVbml0IHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiVHJlZUl0ZW0iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhhbmRsZSB1aS1yZXNpemFibGUtaGFuZGxlIHVpLXJlc2l6YWJsZS1zIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIj5bJSBUcmFuc2xhdGUoIlJlc2l6ZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkFydGljbGVMaXN0IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlRpbWVsaW5lVmlldyIpICVdCgogICAgICAgIDxkaXYgY2xhc3M9IlRpbWVsaW5lVmlld1RpY2tldEFjdGlvbnMgSGlkZGVuIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiVGltZWxpbmVWaWV3VGlja2V0QWN0aW9ucyIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IlRpY2tldEFjdGlvbnMgQXJ0aWNsZUlEX1slIERhdGEuQXJ0aWNsZUlEIHwgaHRtbCAlXSI+ClslIFBST0NFU1MgQXJ0aWNsZUFjdGlvbk1lbnUudHQgJV0KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJUaW1lbGluZVZpZXdUaWNrZXRBY3Rpb25zIikgJV0KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iVGltZWxpbmVWaWV3QXJ0aWNsZUF0dGFjaG1lbnRzIEhpZGRlbiI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlRpbWVsaW5lVmlld0FydGljbGVBdHRhY2htZW50cyIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFydGljbGVBdHRhY2htZW50cyBBcnRpY2xlSURfWyUgRGF0YS5BcnRpY2xlSUQgfCBodG1sICVdIj4KWyUgUFJPQ0VTUyBBcnRpY2xlQXR0YWNobWVudHMudHQgJV0KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJUaW1lbGluZVZpZXdBcnRpY2xlQXR0YWNobWVudHMiKSAlXQogICAgICAgIDwvZGl2PgoKICAgICAgICA8dWwgY2xhc3M9IkhpZGRlbiI+CiAgICAgICAgICAgIDxsaSBpZD0iVGVtcGxhdGVMaXN0SXRlbSI+CiAgICAgICAgICAgICAgICA8aDM+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iVW5yZWFkQXJ0aWNsZXMgUmVtYXJrYWJsZSIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiTWFyayB0aGlzIGFydGljbGUgYXMgcmVhZCIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1zdGFyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1zdGFyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWluZm8tY2lyY2xlIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJJbXBvcnRhbnQiKSB8IGh0bWwgJV0iPjwvaT4KICAgICAgICAgICAgICAgICAgICA8ZW0+PC9lbT4KICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPSJUeXBlIj48L3N0cm9uZz4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj48c3Bhbj48L3NwYW4+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJTaG93RnVsbEFydGljbGVUZXh0IiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTaG93IEZ1bGwgVGV4dCIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1zZWFyY2gtcGx1cyI+PC9pPgogICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvaDM+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KCiAgICAgICAgPGRpdiBpZD0iVGVtcGxhdGVBcnRpY2xlRGF0YSIgY2xhc3M9IkhpZGRlbiI+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0ic3ViamVjdCI+CiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5bJSBUcmFuc2xhdGUoIlN1YmplY3QiKSB8IGh0bWwgJV06IDwvc3Ryb25nPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZnJvbSI+CiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5bJSBUcmFuc2xhdGUoIkZyb20iKSB8IGh0bWwgJV06IDwvc3Ryb25nPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idG8iPgogICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+WyUgVHJhbnNsYXRlKCJUbyIpIHwgaHRtbCAlXTogPC9zdHJvbmc+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJjYyI+CiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5bJSBUcmFuc2xhdGUoIkNjIikgfCBodG1sICVdOiA8L3N0cm9uZz4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhpZGRlbiBGdWxsQXJ0aWNsZVBsYWluVGV4dCIgZGF0YS10aXRsZT0iWyUgVHJhbnNsYXRlKCJGdWxsIEFydGljbGUgVGV4dCIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJUaW1lbGluZVBsYWluVGV4dCI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cCBjbGFzcz0iUGxhaW5UZXh0Ij48L3A+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhpZGRlbiBBcnRpY2xlSUZyYW1lIiBkYXRhLXRpdGxlPSJbJSBUcmFuc2xhdGUoIkZ1bGwgQXJ0aWNsZSBUZXh0IikgfCBodG1sICVdIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iVGltZWxpbmVWaWV3IFVzZUFydGljbGVDb2xvcnMiPgogICAgICAgICAgICA8dWwgY2xhc3M9Ikxpc3RMZWZ0Ij4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTm9FdmVudHMiPlslIFRyYW5zbGF0ZSgiTm8gbW9yZSBldmVudHMgZm91bmQuIFBsZWFzZSB0cnkgY2hhbmdpbmcgdGhlIGZpbHRlciBzZXR0aW5ncy4iKSB8IGh0bWwgJV08L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8dWwgY2xhc3M9Ikxpc3RSaWdodCI+PC91bD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtc3Bpbm5lciBmYS1zcGluIj48L2k+PC9zcGFuPgogICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tFbmQoIlRpbWVsaW5lVmlldyIpICVdCgogICAgPC9kaXY+CjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVHJlZSIpICVdCgpbJSBEYXRhLkFydGljbGVXaWRnZXRzSFRNTCAlXQo=</File>
        <File Location="Kernel/Config/Files/XML/AgentTicketFormDraftEdit.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkFwcGxpY2F0aW9uIj4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudFRpY2tldEZvcm1EcmFmdEVkaXQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RWRpdCBvciB2aWV3IGZvcm0gZHJhZnRzIGZvciB0aWNrZXRzLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkZvcm0gRHJhZnQgRWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPlRpY2tldDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWdlbnRUaWNrZXRGb3JtRHJhZnRFZGl0IyMjMDAyLVRpY2tldCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LlRpY2tldEZvcm1EcmFmdC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0Rm9ybURyYWZ0RWRpdCMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBkcmFmdCBlZGl0IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpUaWNrZXRDb21wb3NlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiIgVHJhbnNsYXRhYmxlPSIxIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRGb3JtRHJhZnRFZGl0IyMjUmljaFRleHRXaWR0aCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSB3aWR0aCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0Q29tcG9zZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJT8kIj42MjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0Rm9ybURyYWZ0RWRpdCMjI1JpY2hUZXh0SGVpZ2h0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGluaXRpYWwgaGVpZ2h0IGluIHBpeGVscyBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0Q29tcG9zZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrKFwuXGQrKT8kIj4zMjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KPC9vdG9ib19jb25maWc+Cg==</File>
        <File Location="Kernel/Language/de_AgentTicketFormDraftReview.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRlX0FnZW50VGlja2V0Rm9ybURyYWZ0UmV2aWV3OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRGb3JtRHJhZnRFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIFRpY2tldElEIGFuZCBGb3JtRHJhZnRJRCEnfSA9ICdCZW7DtnRpZ2UgVGlja2V0SUQgdW5kIEZvcm1EcmFmdElEISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IGRyYWZ0J30gPSAnRW50d3VyZiBiZWFyYmVpdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpZXcgZHJhZnQnfSA9ICdFbnR3dXJmIGFuc2VoZW4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IG9yIHZpZXcgZm9ybSBkcmFmdHMgZm9yIHRpY2tldHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRHJhZnQgRWRpdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGRyYWZ0IGVkaXQgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Modules/AgentTicketFormDraftEdit.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRUaWNrZXRGb3JtRHJhZnRFZGl0OwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgTWFpbDo6QWRkcmVzcyAgICAgICAgICAgICAgICAgKCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IGJsZXNzIHslUGFyYW19LCAkVHlwZTsKCiAgICAjIGdldCBmb3JtIGlkCiAgICAkU2VsZi0+e0Zvcm1JRH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpGb3JtQ2FjaGUnKS0+UHJlcGFyZUZvcm1JRCgKICAgICAgICBQYXJhbU9iamVjdCAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLAogICAgICAgIExheW91dE9iamVjdCA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyksCiAgICApOwoKICAgICRTZWxmLT57QWNjZXNzUm99ID0gJFBhcmFte0FjY2Vzc1JvfTsKICAgICRTZWxmLT57QWNjZXNzUnd9ID0gJFBhcmFte0FjY2Vzc1J3fTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IFRpY2tldCBhbmQgRm9ybURyYWZ0SUQKICAgIG15ICRUaWNrZXRJRCAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdUaWNrZXRJRCcgKTsKICAgIG15ICRGb3JtRHJhZnRJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGb3JtRHJhZnRJRCcgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFRpY2tldElEIHx8ICEkRm9ybURyYWZ0SUQgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTmVlZCBUaWNrZXRJRCBhbmQgRm9ybURyYWZ0SUQhJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgcGVybWlzc2lvbnMKICAgICMgZmlyc3QgY2hlY2sgYXQgZnJvbnRlbmQgbGV2ZWwgYW5kIHRoZW4gYXQgdGlja2V0IGxldmVsCiAgICAjIGZyb250ZW5kIHBlcm1pc3Npb25zIG92ZXJ3cml0ZSB0aWNrZXQgbGV2ZWwgcGVybWlzc2lvbnMKICAgIG15IEBBbGxvd2VkQWNjZXNzTW9kZXM7CiAgICBpZiAoICRTZWxmLT57QWNjZXNzUnd9ICkgewogICAgICAgIEBBbGxvd2VkQWNjZXNzTW9kZXMgPSBxdyhydyBybyk7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIEBBbGxvd2VkQWNjZXNzTW9kZXMgPSBxdyhybyk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAjIGVycm9yIHNjcmVlbiwgdGhlcmUgaXMgbm8gZnJvbnRlbmQgcGVybWlzc2lvbiB0byB0aGlzIG1vZHVsZQogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCJUaGlzIHRpY2tldCBkb2VzIG5vdCBleGlzdCwgb3IgeW91IGRvbid0IGhhdmUgcGVybWlzc2lvbnMgdG8gYWNjZXNzIGl0IGluIGl0cyBjdXJyZW50IHN0YXRlLiIpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CiAgICBBQ0NFU1M6CiAgICBmb3IgbXkgJEFjY2Vzc1R5cGUgKEBBbGxvd2VkQWNjZXNzTW9kZXMpIHsKICAgICAgICBpZiAoCiAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldFBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICBUeXBlICAgICA9PiAkQWNjZXNzVHlwZSwKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIExvZ05vICAgID0+IDEsCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJFNlbGYtPntBY2Nlc3NNb2RlfSA9ICRBY2Nlc3NUeXBlOwoKICAgICAgICAgICAgbGFzdCBBQ0NFU1M7CiAgICAgICAgfQogICAgfQoKICAgICMgZXJyb3Igc2NyZWVuLCBkb24ndCBzaG93IHRpY2tldAogICAgaWYgKCAhJFNlbGYtPntBY2Nlc3NNb2RlfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgiVGhpcyB0aWNrZXQgZG9lcyBub3QgZXhpc3QsIG9yIHlvdSBkb24ndCBoYXZlIHBlcm1pc3Npb25zIHRvIGFjY2VzcyBpdCBpbiBpdHMgY3VycmVudCBzdGF0ZS4iKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IEFDTCByZXN0cmljdGlvbnMKICAgIG15ICVQb3NzaWJsZUFjdGlvbnMgPSAoIDEgPT4gJFNlbGYtPntBY3Rpb259ICk7CgogICAgbXkgJEFDTCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbCgKICAgICAgICBEYXRhICAgICAgICAgID0+IFwlUG9zc2libGVBY3Rpb25zLAogICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgIFRpY2tldElEICAgICAgPT4gJFRpY2tldElELAogICAgICAgIFJldHVyblR5cGUgICAgPT4gJ0FjdGlvbicsCiAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnLScsCiAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgbXkgJUFjbEFjdGlvbiA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEFjbEFjdGlvbkRhdGEoKTsKCiAgICAjIGNoZWNrIGlmIEFDTCByZXN0cmljdGlvbnMgZXhpc3QKICAgIGlmICgkQUNMKSB7CiAgICAgICAgbXkgJUFjbEFjdGlvbkxvb2t1cCA9IHJldmVyc2UgJUFjbEFjdGlvbjsKCiAgICAgICAgIyBzaG93IGVycm9yIHNjcmVlbiBpZiBBQ0wgcHJvaGliaXRzIHRoaXMgYWN0aW9uCiAgICAgICAgaWYgKCAhJEFjbEFjdGlvbkxvb2t1cHsgJFNlbGYtPntBY3Rpb259IH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oIFdpdGhIZWFkZXIgPT4gJ3llcycgKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEZvcm1EcmFmdE9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZvcm1EcmFmdCcpOwogICAgbXkgJFVwbG9hZENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGUnKTsKCiAgICBteSAkRm9ybURyYWZ0ID0gJEZvcm1EcmFmdE9iamVjdC0+Rm9ybURyYWZ0R2V0KAogICAgICAgIEZvcm1EcmFmdElEID0+ICRGb3JtRHJhZnRJRCwKICAgICAgICBPYmplY3RJRCAgICA9PiAkVGlja2V0SUQsCiAgICApOwoKICAgICMgQ2hlY2sgZm9yIGZhaWxlZCBkcmFmdCBsb2FkaW5nIHJlcXVlc3QuCiAgICBpZiAoICEkRm9ybURyYWZ0LT57Rm9ybURyYWZ0SUR9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0xvYWRpbmcgZHJhZnQgZmFpbGVkIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICEkU2VsZi0+e1N1YmFjdGlvbn0gKSB7CgogICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRAogICAgICAgICk7CgogICAgICAgICMgUHJlcGFyZSBUbywgQ2MgYW5kIEJjYyBmcm9tIGZvcm0gZGF0YQogICAgICAgIG15ICRUbyAgPSAnJzsKICAgICAgICBteSAkQ2MgID0gJyc7CiAgICAgICAgbXkgJEJjYyA9ICcnOwoKICAgICAgICBteSAkQ3VzdG9tZXJzTnVtYmVyVG8gPSAkRm9ybURyYWZ0LT57Rm9ybURhdGF9LT57Q3VzdG9tZXJUaWNrZXRDb3VudGVyVG9DdXN0b21lcn0gfHwgMDsKCiAgICAgICAgaWYgKCRDdXN0b21lcnNOdW1iZXJUbykgewoKICAgICAgICAgICAgQ09VTlQ6CiAgICAgICAgICAgIGZvciBteSAkQ291bnQgKCAxIC4uICRDdXN0b21lcnNOdW1iZXJUbyApIHsKICAgICAgICAgICAgICAgIGxhc3QgQ09VTlQgaWYgJENvdW50ID4gMV8wMDA7ICAgICMgYmFpbCBvdXQgd2hlbiB0aGUgbnVtYmVyIG9mIGN1c3RvbWVycyBpcyBhYm5vcm1hbGx5IGhpZ2gKCiAgICAgICAgICAgICAgICBteSAkQ3VzdG9tZXJFbGVtZW50ID0gJEZvcm1EcmFmdC0+e0Zvcm1EYXRhfS0+eyAnQ3VzdG9tZXJUaWNrZXRUZXh0XycgLiAkQ291bnQgfTsKCiAgICAgICAgICAgICAgICBuZXh0IENPVU5UIHVubGVzcyAkQ3VzdG9tZXJFbGVtZW50OwoKICAgICAgICAgICAgICAgIGlmICgkVG8pIHsKICAgICAgICAgICAgICAgICAgICAkVG8gLj0gJywgJyAuICRDdXN0b21lckVsZW1lbnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkVG8gPSAkQ3VzdG9tZXJFbGVtZW50OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkQ3VzdG9tZXJzTnVtYmVyQ2MgPSAkRm9ybURyYWZ0LT57Rm9ybURhdGF9LT57Q3VzdG9tZXJUaWNrZXRDb3VudGVyQ2NDdXN0b21lcn0gfHwgMDsKCiAgICAgICAgaWYgKCRDdXN0b21lcnNOdW1iZXJDYykgewoKICAgICAgICAgICAgQ09VTlQ6CiAgICAgICAgICAgIGZvciBteSAkQ291bnQgKCAxIC4uICRDdXN0b21lcnNOdW1iZXJDYyApIHsKICAgICAgICAgICAgICAgIGxhc3QgQ09VTlQgaWYgJENvdW50ID4gMV8wMDA7ICAgICMgYmFpbCBvdXQgd2hlbiB0aGUgbnVtYmVyIG9mIGN1c3RvbWVycyBpcyBhYm5vcm1hbGx5IGhpZ2gKCiAgICAgICAgICAgICAgICBteSAkQ3VzdG9tZXJFbGVtZW50Q2MgPSAkRm9ybURyYWZ0LT57Rm9ybURhdGF9LT57ICdDY0N1c3RvbWVyVGlja2V0VGV4dF8nIC4gJENvdW50IH07CgogICAgICAgICAgICAgICAgbmV4dCBDT1VOVCB1bmxlc3MgJEN1c3RvbWVyRWxlbWVudENjOwoKICAgICAgICAgICAgICAgIGlmICgkQ2MpIHsKICAgICAgICAgICAgICAgICAgICAkQ2MgLj0gJywgJyAuICRDdXN0b21lckVsZW1lbnRDYzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRDYyA9ICRDdXN0b21lckVsZW1lbnRDYzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJEN1c3RvbWVyc051bWJlckJjYyA9ICRGb3JtRHJhZnQtPntGb3JtRGF0YX0tPntDdXN0b21lclRpY2tldENvdW50ZXJCY2NDdXN0b21lcn0gfHwgMDsKCiAgICAgICAgaWYgKCRDdXN0b21lcnNOdW1iZXJCY2MpIHsKCiAgICAgICAgICAgIENPVU5UOgogICAgICAgICAgICBmb3IgbXkgJENvdW50ICggMSAuLiAkQ3VzdG9tZXJzTnVtYmVyQmNjICkgewogICAgICAgICAgICAgICAgbGFzdCBDT1VOVCBpZiAkQ291bnQgPiAxXzAwMDsgICAgIyBiYWlsIG91dCB3aGVuIHRoZSBudW1iZXIgb2YgY3VzdG9tZXJzIGlzIGFibm9ybWFsbHkgaGlnaAoKICAgICAgICAgICAgICAgIG15ICRDdXN0b21lckVsZW1lbnRCY2MgPSAkRm9ybURyYWZ0LT57Rm9ybURhdGF9LT57ICdCY2NDdXN0b21lclRpY2tldFRleHRfJyAuICRDb3VudCB9OwoKICAgICAgICAgICAgICAgIG5leHQgQ09VTlQgdW5sZXNzICRDdXN0b21lckVsZW1lbnRCY2M7CgogICAgICAgICAgICAgICAgaWYgKCRCY2MpIHsKICAgICAgICAgICAgICAgICAgICAkQmNjIC49ICcsICcgLiAkQ3VzdG9tZXJFbGVtZW50QmNjOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJEJjYyA9ICRDdXN0b21lckVsZW1lbnRCY2M7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYWRkIFVwbG9hZENhY2hlIGRhdGEKICAgICAgICBmb3IgbXkgJEZpbGUgKCBAeyAkRm9ybURyYWZ0LT57RmlsZURhdGF9IH0gKSB7CiAgICAgICAgICAgIHJldHVybiB1bmxlc3MgJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURBZGRGaWxlKAogICAgICAgICAgICAgICAgJXskRmlsZX0sCiAgICAgICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyByZXBsYWNlIGZvcm0gaWQgaW4gaW5saW5lIGltYWdlIGxpbmtzCiAgICAgICAgJEZvcm1EcmFmdC0+e0Zvcm1EYXRhfXtCb2R5fSA9fiBzewogICAgICAgICAgICAoPGltZy4rP3NyYz0oInwnKVteIic+XSs/Rm9ybUlEPSkoW147XSs/KSg7W14+XSo+KQogICAgICAgIH0KICAgICAgICB7CiAgICAgICAgICAgICQxIC4gJFNlbGYtPntGb3JtSUR9IC4gJDQKICAgICAgICB9ZXNneGk7CgogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkVGlja2V0e1RpY2tldE51bWJlcn0sCiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU21hbGwnLAogICAgICAgICAgICBCb2R5Q2xhc3MgPT4gJ1BvcHVwJywKICAgICAgICApOwoKICAgICAgICAjIFdoZW4gYSBkcmFmdCBpcyBsb2FkZWQsIGluZm9ybSBhIHVzZXIgdGhhdCBhcnRpY2xlIHN1YmplY3Qgd2lsbCBiZSBlbXB0eQogICAgICAgICMgaWYgY29udGFpbnMgb25seSB0aGUgdGlja2V0IGhvb2sgKGlmIG5vdGhpbmcgaXMgbW9kaWZpZWQpLgogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICBEYXRhID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICdBcnRpY2xlIHN1YmplY3Qgd2lsbCBiZSBlbXB0eSBpZiB0aGUgc3ViamVjdCBjb250YWlucyBvbmx5IHRoZSB0aWNrZXQgaG9vayEnCiAgICAgICAgICAgICksCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEZyb20gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGVtcGxhdGVHZW5lcmF0b3InKS0+U2VuZGVyKAogICAgICAgICAgICBRdWV1ZUlEID0+ICRUaWNrZXR7UXVldWVJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURHZXRBbGxGaWxlc01ldGEoCiAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgKTsKCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+X01hc2soCiAgICAgICAgICAgIFRpY2tldElEICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgQXR0YWNobWVudHMgPT4gXEBBdHRhY2htZW50cywKICAgICAgICAgICAgRm9ybURyYWZ0SUQgPT4gJEZvcm1EcmFmdElELAogICAgICAgICAgICBUbyAgICAgICAgICA9PiAkVG8sCiAgICAgICAgICAgIENjICAgICAgICAgID0+ICRDYywKICAgICAgICAgICAgQmNjICAgICAgICAgPT4gJEJjYywKICAgICAgICAgICAgRnJvbSAgICAgICAgPT4gJEZyb20sCiAgICAgICAgICAgIEZvcm1EcmFmdCAgID0+ICRGb3JtRHJhZnQsCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigKICAgICAgICAgICAgVHlwZSA9PiAnU21hbGwnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Zvcm1EcmFmdFVwZGF0ZScgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgIG15ICVGb3JtRHJhZnRSZXNwb25zZTsKICAgICAgICBteSAkRm9ybURyYWZ0QWN0aW9uT2sgPSAkU2VsZi0+X1VwZGF0ZUZvcm1EcmFmdCgKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBPYmplY3RUeXBlICA9PiAnVGlja2V0JywKICAgICAgICAgICAgT2JqZWN0SUQgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICBGb3JtRHJhZnRJRCA9PiAkRm9ybURyYWZ0SUQsCiAgICAgICAgICAgIEZvcm1JRCAgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgRm9ybURyYWZ0ICAgPT4gJEZvcm1EcmFmdCwKICAgICAgICApOwogICAgICAgIGlmICgkRm9ybURyYWZ0QWN0aW9uT2spIHsKICAgICAgICAgICAgJEZvcm1EcmFmdFJlc3BvbnNle1N1Y2Nlc3N9ID0gMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICVGb3JtRHJhZnRSZXNwb25zZSA9ICgKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb3VsZCBub3QgcGVyZm9ybSByZXF1ZXN0ZWQgZHJhZnQgYWN0aW9uIScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGJ1aWxkIEpTT04gb3V0cHV0CiAgICAgICAgbXkgJEpTT04gPSAkTGF5b3V0T2JqZWN0LT5KU09ORW5jb2RlKAogICAgICAgICAgICBEYXRhID0+IFwlRm9ybURyYWZ0UmVzcG9uc2UsCiAgICAgICAgKTsKCiAgICAgICAgIyBzZW5kIEpTT04gcmVzcG9uc2UKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb24nLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkSlNPTiwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KfQoKc3ViIF9NYXNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBjb25maWcgZm9yIGZyb250ZW5kIG1vZHVsZQogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiVGlja2V0OjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnVGlja2V0QmFjaycsCiAgICApOwoKICAgICMgYWRkIHJpY2ggdGV4dCBlZGl0b3IKICAgIGlmICggJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CgogICAgICAgICMgdXNlIGhlaWdodC93aWR0aCBkZWZpbmVkIGZvciB0aGlzIHNjcmVlbgogICAgICAgICRQYXJhbXtSaWNoVGV4dEhlaWdodH0gPSAkQ29uZmlnLT57UmljaFRleHRIZWlnaHR9IHx8IDA7CiAgICAgICAgJFBhcmFte1JpY2hUZXh0V2lkdGh9ICA9ICRDb25maWctPntSaWNoVGV4dFdpZHRofSAgfHwgMDsKCiAgICAgICAgIyBzZXQgdXAgcmljaCB0ZXh0IGVkaXRvcgogICAgICAgICRMYXlvdXRPYmplY3QtPlNldFJpY2hUZXh0UGFyYW1ldGVycygKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IGF0dGFjaG1lbnRzCiAgICBBVFRBQ0hNRU5UOgogICAgZm9yIG15ICRBdHRhY2htZW50ICggQHsgJFBhcmFte0F0dGFjaG1lbnRzfSB9ICkgewogICAgICAgIGlmICgKICAgICAgICAgICAgJEF0dGFjaG1lbnQtPntDb250ZW50SUR9CiAgICAgICAgICAgICYmICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9CiAgICAgICAgICAgICYmICggJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX0gPX4gL2ltYWdlL2kgKQogICAgICAgICAgICAmJiAoICRBdHRhY2htZW50LT57RGlzcG9zaXRpb259IGVxICdpbmxpbmUnICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UOwogICAgICAgIH0KCiAgICAgICAgcHVzaCBAeyAkUGFyYW17QXR0YWNobWVudExpc3R9IH0sICRBdHRhY2htZW50OwogICAgfQogICAgbXkgQEFydGljbGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpLT5BcnRpY2xlTGlzdCgKICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgIE9ubHlMYXN0ID0+IDEsCiAgICApOwoKICAgIGlmIChAQXJ0aWNsZXMpIHsKICAgICAgICBteSAkTGFzdEFydGljbGUgPSAkQXJ0aWNsZXNbMF07CgogICAgICAgIG15ICRMYXN0QXJ0aWNsZVN5c3RlbVRpbWU7CiAgICAgICAgaWYgKCAkTGFzdEFydGljbGUtPntDcmVhdGVUaW1lfSApIHsKICAgICAgICAgICAgbXkgJExhc3RBcnRpY2xlU3lzdGVtVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICAgICAgU3RyaW5nID0+ICRMYXN0QXJ0aWNsZS0+e0NyZWF0ZVRpbWV9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExhc3RBcnRpY2xlU3lzdGVtVGltZSA9ICRMYXN0QXJ0aWNsZVN5c3RlbVRpbWVPYmplY3QtPlRvRXBvY2goKTsKICAgICAgICB9CgogICAgICAgIG15ICRGb3JtRHJhZnRTeXN0ZW1UaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJFBhcmFte0Zvcm1EcmFmdH0tPntDaGFuZ2VUaW1lfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgICAgIG15ICRGb3JtRHJhZnRTeXN0ZW1UaW1lID0gJEZvcm1EcmFmdFN5c3RlbVRpbWVPYmplY3QtPlRvRXBvY2goKTsKCiAgICAgICAgaWYgKCAhJExhc3RBcnRpY2xlU3lzdGVtVGltZSB8fCAkRm9ybURyYWZ0U3lzdGVtVGltZSA8PSAkTGFzdEFydGljbGVTeXN0ZW1UaW1lICkgewogICAgICAgICAgICAkUGFyYW17Rm9ybURyYWZ0T3V0ZGF0ZWR9ID0gMTsKICAgICAgICB9CiAgICB9CiAgICAkUGFyYW17Rm9ybURyYWZ0fS0+e0NoYW5nZUJ5TmFtZX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTmFtZSgKICAgICAgICBVc2VySUQgPT4gJFBhcmFte0Zvcm1EcmFmdH0tPntDaGFuZ2VCeX0sCiAgICApOwogICAgaWYgKCAkU2VsZi0+e0FjY2Vzc01vZGV9IG5lICJydyIgKSB7CiAgICAgICAgJFBhcmFte1JlYWRPbmx5fSAgICAgID0gJ3JlYWRvbmx5JzsKICAgICAgICAkUGFyYW17UmVhZE9ubHlDbGFzc30gPSAnUmVhZG9ubHknOwogICAgfQoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1RvQ3VzdG9tZXInLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBUb0N1c3RvbWVyID0+ICRQYXJhbXtUb30KICAgICAgICB9CiAgICApOwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnQ2NDdXN0b21lcicsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIENjID0+ICRQYXJhbXtDY30KICAgICAgICB9CiAgICApOwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnQmNjQ3VzdG9tZXInLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBCY2MgPT4gJFBhcmFte0JjY30KICAgICAgICB9CiAgICApOwoKICAgICMgY3JlYXRlICYgcmV0dXJuIG91dHB1dAogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50VGlja2V0Rm9ybURyYWZ0RWRpdCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgRm9ybUlEICAgICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICBGb3JtRHJhZnRJRCAgICA9PiAkUGFyYW17Rm9ybURyYWZ0SUR9LAogICAgICAgICAgICBSZXNwb25zZUZvcm1hdCA9PiAkUGFyYW17Rm9ybURyYWZ0fS0+e0Zvcm1EYXRhfS0+e0JvZHl9LAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICA9PiAkUGFyYW17Rm9ybURyYWZ0fS0+e0Zvcm1EYXRhfS0+e1N1YmplY3R9LAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICk7Cn0KCnN1YiBfVXBkYXRlRm9ybURyYWZ0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBwYXJhbXMKICAgIHJldHVybiBpZiAhJFBhcmFte1VzZXJJRH0gfHwgISRQYXJhbXtPYmplY3RUeXBlfSB8fCAhSXNJbnRlZ2VyKCAkUGFyYW17T2JqZWN0SUR9ICk7CgogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIG15ICRGb3JtRHJhZnQgPSAkUGFyYW17Rm9ybURyYWZ0fTsKICAgIG15ICVGb3JtRGF0YSAgPSAkRm9ybURyYWZ0LT57Rm9ybURhdGF9LT4lKjsKCiAgICBmb3IgbXkgJFBhcmFtIChxdyhTdWJqZWN0IEJvZHkpKSB7CiAgICAgICAgJEZvcm1EYXRheyRQYXJhbX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW0gKTsKICAgIH0KCiAgICAjIGdldCBmaWxlcyBmcm9tIHVwbG9hZCBjYWNoZQogICAgbXkgQEZpbGVEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGUnKS0+Rm9ybUlER2V0QWxsRmlsZXNEYXRhKAogICAgICAgIEZvcm1JRCA9PiAkUGFyYW17Rm9ybUlEfSwKICAgICk7CgogICAgIyBwcmVwYXJlIGRhdGEgdG8gYWRkIG9yIHVwZGF0ZSBkcmFmdAogICAgbXkgJUZvcm1EcmFmdCA9ICgKICAgICAgICBGb3JtRGF0YSAgICA9PiBcJUZvcm1EYXRhLAogICAgICAgIEZpbGVEYXRhICAgID0+IFxARmlsZURhdGEsCiAgICAgICAgRm9ybURyYWZ0SUQgPT4gJFBhcmFte0Zvcm1EcmFmdElEfSwKICAgICAgICBPYmplY3RUeXBlICA9PiAkUGFyYW17T2JqZWN0VHlwZX0sCiAgICAgICAgT2JqZWN0SUQgICAgPT4gJFBhcmFte09iamVjdElEfSwKICAgICAgICBBY3Rpb24gICAgICA9PiAkRm9ybURyYWZ0LT57QWN0aW9ufSwKICAgICAgICBUaXRsZSAgICAgICA9PiAkRm9ybURyYWZ0LT57VGl0bGV9LAogICAgICAgIFVzZXJJRCAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIHVwZGF0ZSBkcmFmdAogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGb3JtRHJhZnQnKS0+Rm9ybURyYWZ0VXBkYXRlKCVGb3JtRHJhZnQpOwp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentTicketFormDraftEdit.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbmFtZT0iY29tcG9zZSIgaWQ9IkNvbXBvc2VUaWNrZXQiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IkZvcm1EcmFmdFVwZGF0ZSIvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iVGlja2V0SUQiIHZhbHVlPSJbJSBEYXRhLlRpY2tldElEIHwgaHRtbCAlXSIvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iRm9ybUlEIiB2YWx1ZT0iWyUgRGF0YS5Gb3JtSUQgfCBodG1sICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtRHJhZnRJRCIgdmFsdWU9IlslIERhdGEuRm9ybURyYWZ0SUQgfCBodG1sICVdIi8+CiAgICA8ZGl2IGNsYXNzPSJMYXlvdXRQb3B1cCBBUklBUm9sZU1haW4iPgogICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgIDx1bCBjbGFzcz0iSGVhZGVyUG9wdXAiPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJIZWFkZXJQb3B1cGxlZnQiPgogICAgICAgICAgICAgICAgICAgIDxoMT5bJSBUcmFuc2xhdGUoIkNvbXBvc2UgQW5zd2VyIGZvciAlcyVzJXMiLCBDb25maWcoJ1RpY2tldDo6SG9vaycpLCBDb25maWcoJ1RpY2tldDo6SG9va0RpdmlkZXInKSwgRGF0YS5UaWNrZXROdW1iZXIpIHwgaHRtbCAlXSAmbWRhc2g7IFslIERhdGEuVGl0bGUgfCBodG1sICVdPC9oMT4KICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrU3RhcnQoIlRpY2tldEJhY2siKSAlXQogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJIZWFkZXJQb3B1cHJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCIgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDYW5jZWwgJiBjbG9zZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJUaWNrZXRCYWNrIikgJV0KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgWyUgSU5DTFVERSAiRm9ybUVsZW1lbnRzL0RyYWZ0Tm90aWZpY2F0aW9ucy50dCIgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9Ik1vZHVsYXJGb3JtIEZpeGVkTGFiZWwiPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZENlbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiRnJvbSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRnJvbSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlRvQ3VzdG9tZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkQ2VsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJUbyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Ub0N1c3RvbWVyIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVG9DdXN0b21lciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDY0N1c3RvbWVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZENlbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ2MiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ2MgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDY0N1c3RvbWVyIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkJjY0N1c3RvbWVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZENlbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQmNjIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkJjYyB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkJjY0N1c3RvbWVyIikgJV0KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRDZWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlN1YmplY3QiPlslIFRyYW5zbGF0ZSgiU3ViamVjdCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbJSBEYXRhLlJlYWRPbmx5ICVdIHR5cGU9InRleHQiIG5hbWU9IlN1YmplY3QiIGlkPSJTdWJqZWN0IiB2YWx1ZT0iWyUgRGF0YS5TdWJqZWN0IHwgaHRtbCAlXSIgY2xhc3M9Ilc3NXBjIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkQ2VsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJSaWNoVGV4dCI+WyUgVHJhbnNsYXRlKCJUZXh0IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSaWNoVGV4dEZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9IlJpY2hUZXh0IiBbJSBEYXRhLlJlYWRPbmx5ICVdIG5hbWU9IkJvZHkiIHJvd3M9IjE1IiBjb2xzPSJbJSBDb25maWcoIlRpY2tldDo6RnJvbnRlbmQ6OlRleHRBcmVhRW1haWwiKSAlXSIgY2xhc3M9IlslIERhdGEuUmVhZE9ubHlDbGFzcyAlXSBSaWNoVGV4dCI+WyUgRGF0YS5SZXNwb25zZUZvcm1hdCAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkQ2VsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJBdHRhY2htZW50cyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgpbJSBJRiBEYXRhLlJlYWRPbmx5ICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQXR0YWNobWVudExpc3RDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkhpZGRlbiBTbWFsbCBEYXRhVGFibGUgQXR0YWNobWVudExpc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRmlsZW5hbWUiPlslIFRyYW5zbGF0ZSgiRmlsZW5hbWUiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRmlsZXR5cGUiPlslIFRyYW5zbGF0ZSgiVHlwZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJGaWxlc2l6ZSI+WyUgVHJhbnNsYXRlKCJTaXplIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBGT1JFQUNIIEF0dGFjaG1lbnQgSU4gRGF0YS5BdHRhY2htZW50TGlzdCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJGaWxlbmFtZSBvb28xMmciPlslIEF0dGFjaG1lbnQuRmlsZW5hbWUgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJGaWxldHlwZSBvb28xMmciPlslIEF0dGFjaG1lbnQuQ29udGVudFR5cGUgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJGaWxlc2l6ZSBvb28xMmciIGRhdGEtZmlsZS1zaXplPSJbJSBBdHRhY2htZW50LkZpbGVzaXplIHwgaHRtbCAlXSI+WyUgQXR0YWNobWVudC5GaWxlc2l6ZSB8IExvY2FsaXplKCdGaWxlc2l6ZScpIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgRUxTRSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElOQ0xVREUgIkZvcm1FbGVtZW50cy9BdHRhY2htZW50TGlzdC50dCIgJV0KWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxici8+CgogICAgICAgIDwvZGl2PgoKICAgIFslIElGICFEYXRhLlJlYWRPbmx5ICVdCiAgICAgICAgPGRpdiBjbGFzcz0iRm9vdGVyIj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiIgaWQ9IkZvcm1EcmFmdFVwZGF0ZSIgYWNjZXNza2V5PSJ1IiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJVcGRhdGUgZHJhZnQiKSB8IGh0bWwgJV0gKHUpIj4KICAgICAgICAgICAgICAgIDxzcGFuPjxpIGNsYXNzPSJmYSBmYS1wZW5jaWwtc3F1YXJlLW8iPjwvaT4gWyUgVHJhbnNsYXRlKCJVcGRhdGUgZHJhZnQiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgWyUgRU5EICVdCgogICAgPC9kaXY+CjwvZm9ybT4K</File>
        <File Location="doc/en/AgentTicketFormDraftReview.pdf" Permission="644" Encode="Base64">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</File>
    </Filelist>
</otrs_package>