<?xml version="1.0" encoding="utf-8" ?>
<otrs_package version="1.1">
    <Name>CodePolicy</Name>
    <Version>10.1.5</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-29 11:07:19" Version="10.1.5">Improved output coloring (#140); change handling of package markers (#134), several smaller improvements and tidying.</ChangeLog>
    <ChangeLog Date="2025-11-11 15:44:21" Version="10.1.4">Set url only for specific vendors (us #116), allow empty xml files (#122), enforce Location in sopm file list to be unique (#123), check used perl versions (#125), small sopm definition improvement (#126).</ChangeLog>
    <ChangeLog Date="2025-01-14 16:00:52" Version="10.1.3">- Updated copyright year.
- Remove some ignores that are very likely no longer relevant
- No CodePolicy checks for minified css or JS files
- Prevent Subroutines::RequireFinalReturn for Language files in packages as well
- Steal the handling of Community modules from rel-11_0
- Implemented changes to respect url change to otobo.io.
- Issue 150: Check for actually intended function names
- Kernel::System::UnitTesteRegisterOM may create on object manager
- Added sample command invocations
- Issue #119: Prevent NamePod from breaking name in pod when underscore is present.
- Issue #74: deactivate ProhibitUnusedVariables
- Issue #82: skip local/lib/perl5 and local/bin</ChangeLog>
    <ChangeLog Date="2023-03-30 12:37:46" Version="10.1.2">- Issue #84: activate Perl::Critic policy ClassHierarchies::ProhibitExplicitISA
- Issue #82: skip local/lib/perl5 and local/bin
- Issue #80: remove not needed &quot;use XML::Parser;&quot; lines
- Issue #78: ignore the directory TidyAll
- Make the scripts executable.
- Issue #74: raise the severity on ProhibitUnusedVariables
- Issue #75: adapt the stringification of the violations
- Issue #72: update the comment about Config2Docbook</ChangeLog>
    <ChangeLog Date="2021-12-07 11:37:08" Version="10.1.1">Initial release for OTOBO 10.1.</ChangeLog>
    <Description Lang="en">OTOBO code quality checks.</Description>
    <Description Lang="hu">OTOBO kódminőség ellenőrzések.</Description>
    <Framework>10.1.x</Framework>
    <PackageIsDownloadable></PackageIsDownloadable>
    <ModuleRequired Version="0.56">Code::TidyAll</ModuleRequired>
    <ModuleRequired>Perl::Critic</ModuleRequired>
    <BuildCommitID>0570aecec4eccd3f8fc48d85d2d51ef19a924362</BuildCommitID>
    <BuildDate>2026-10-29 11:07:23</BuildDate>
    <BuildHost>opms.rother-oss.com</BuildHost>
    <Filelist>
        <File Location="bin/otobo.CodePolicy.pl" Permission="770" Encode="Base64">IyEvdXNyL2Jpbi9lbnYgcGVybAojIC0tCiMgT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgojIC0tCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdjUuMjQ7CnVzZSB1dGY4Owp1c2Ugb3BlbiBJTyA9PiAnOmVuY29kaW5nKFVURi04KSc7Cgp1c2UgRmlsZTo6QmFzZW5hbWUgcXcoZGlybmFtZSk7CnVzZSBGaW5kQmluIHF3KCRSZWFsQmluKTsKdXNlIGxpYiBkaXJuYW1lKCRSZWFsQmluKTsKdXNlIGxpYiBkaXJuYW1lKCRSZWFsQmluKSAuICcvS2VybmVsJzsgICAgIyBGaW5kIFRpZHlBbGwKdXNlIGxpYiBkaXJuYW1lKCRSZWFsQmluKSAuICcvS2VybmVsL2NwYW4tbGliJzsKCiMgY29yZSBtb2R1bGVzCnVzZSBDd2Q7CnVzZSBGaWxlOjpCYXNlbmFtZTsKdXNlIEZpbGU6OlNwZWM7CnVzZSBHZXRvcHQ6Okxvbmc7CnVzZSBGaWxlOjpGaW5kOwp1c2UgRmlsZTo6UGF0aCBxdygpOwoKIyBDUEFOIG1vZHVsZXMKdXNlIENvZGU6OlRpZHlBbGw7CnVzZSBJUEM6OlN5c3RlbTo6U2ltcGxlIHF3KGNhcHR1cmV4KTsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgVGlkeUFsbDo6T1RPQk87CgojIGF2b2lkIG1hbmFnbGluZyBvZiBvdXRwdXQKU1RET1VULT5hdXRvZmx1c2goKTsKCm15ICggJFZlcmJvc2UsICREaXJlY3RvcnksICRGaWxlLCAkTW9kZSwgJENhY2hlZCwgJEFsbCwgJEhlbHAsICRQcm9jZXNzZXMsIEBGaWxlTGlzdCApOwpteSAkUGx1Z2lucyA9IFtdOwpHZXRPcHRpb25zKAogICAgJ3ZlcmJvc2UnICAgICA9PiBcJFZlcmJvc2UsCiAgICAnYWxsJyAgICAgICAgID0+IFwkQWxsLAogICAgJ2NhY2hlZCcgICAgICA9PiBcJENhY2hlZCwKICAgICdkaXJlY3Rvcnk9cycgPT4gXCREaXJlY3RvcnksCiAgICAnZmlsZT1zJyAgICAgID0+IFwkRmlsZSwKICAgICdtb2RlPXMnICAgICAgPT4gXCRNb2RlLAogICAgJ2hlbHAnICAgICAgICA9PiBcJEhlbHAsCiAgICAncHJvY2Vzc2VzPXMnID0+IFwkUHJvY2Vzc2VzLAogICAgJ3BsdWdpbnM9c0AnICA9PiBcJFBsdWdpbnMsCiAgICAnbGlzdD1zezEsfScgID0+IFxARmlsZUxpc3QsCik7CgppZiAoJEhlbHApIHsKICAgIHByaW50IDw8IkVORF9NU0ciOwpVc2FnZTogT1RPQk9Db2RlUG9saWN5L2Jpbi9vdG9iby5Db2RlUG9saWN5LnBsIFtvcHRpb25zXQoKICAgIFBlcmZvcm1zIE9UT0JPIGNvZGUgcG9saWN5IGNoZWNrcy4gUnVuIHRoaXMgc2NyaXB0IGZyb20gdGhlIHRvcGxldmVsIGRpcmVjdG9yeQogICAgb2YgeW91ciBtb2R1bGUuIEJ5IGRlZmF1bHQgaXQgd2lsbCBvbmx5IHByb2Nlc3MgZmlsZXMgd2hpY2ggYXJlIHN0YWdlZCBmb3IKICAgIGdpdCBjb21taXQuIFVzZSAtLWFsbCBvciAtLWRpcmVjdG9yeSB0byBjaGVjayBhbGwgZmlsZXMgb3IganVzdCBvbmUgZGlyZWN0b3J5CiAgICBpbnN0ZWFkLgoKT3B0aW9uczoKICAgIC1hLCAtLWFsbCAgICAgICAgICAgQ2hlY2sgYWxsIGZpbGVzIHJlY3Vyc2l2ZWx5CiAgICAtZCwgLS1kaXJlY3RvcnkgICAgIENoZWNrIG9ubHkgc3ViZGlyZWN0b3J5CiAgICAtYywgLS1jYWNoZWQgICAgICAgIENoZWNrIG9ubHkgY2FjaGVkIChzdGFnZWQgZmlsZXMgaW4gZ2l0IGRpcmVjdG9yeSkKICAgIC1mLCAtLWZpbGUgICAgICAgICAgQ2hlY2sgb25seSBvbmUgZmlsZQogICAgLWwsIC0tbGlzdCAgICAgICAgICBDaGVjayBzZXZlcmFsIGZpbGVzCiAgICAtbSwgLS1tb2RlICAgICAgICAgIFVzZSBjdXN0b20gQ29kZTo6VGlkeUFsbCBtb2RlIChkZWZhdWx0OiBjbGkpCiAgICAtdiwgLS12ZXJib3NlICAgICAgIEFjdGl2YXRlIGRpYWdub3N0aWNzCiAgICAtcCwgLS1wcm9jZXNzZXMgICAgIFRoZSBudW1iZXIgb2YgcHJvY2Vzc2VzIHRvIHVzZSAoZGVmYXVsdDogZW52IHZhciBPVE9CT0NPREVQT0xJQ1lfUFJPQ0VTU0VTIGlmIHNldCwgb3RoZXJ3aXNlICI2IikKICAgIC0tcGx1Z2lucyAgICAgICAgICAgUmVzdHJpY3QgdG8gc3BlY2lmaWMgcGx1Z2luIHRoYXQgc2hvdWxkIGJlIHVzZWQuIFBhc3MgdGhlIG9wdGlvbiBtdWx0aXBsZSB0aW1lIGZvciBtdWx0aXBsZSBwbHVnaW5zLgogICAgLWgsIC0taGVscCAgICAgICAgICBTaG93IHRoaXMgdXNhZ2UgbWVzc2FnZQoKRXhhbXBsZSB1c2FnZToKCiAgICAjIHJ1biBQZXJsOjpDcml0aWMgb24gYSBzb3VyY2UgdHJlZQogICAgLi4vQ29kZVBvbGljeS9iaW4vb3RvYm8uQ29kZVBvbGljeS5wbCAtLXBsdWdpbnMgK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBlcmxDcml0aWMgLWEgLS1wcm9jZXNzZXMgMSAxPmNyaXRpYy5vdXQKCiAgICAjIHJ1biBvbmx5IHRoZSBzeW50YXggY2hlY2sgb24gY2hhbmdlZCBmaWxlcwogICAgLi4vQ29kZVBvbGljeS9iaW4vb3RvYm8uQ29kZVBvbGljeS5wbCAtLXBsdWdpbnMgK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlN5bnRheENoZWNrCgogICAgIyBvbmx5IHVwZGF0ZSB0aGUgY29weXJpZ2h0IHllYXIgZm9yIGFsbCBmaWxlcwogICAgLi4vQ29kZVBvbGljeS9iaW4vb3RvYm8uQ29kZVBvbGljeS5wbCAtLXBsdWdpbnMgK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkxlZ2FsOjpSZXBsYWNlQ29weXJpZ2h0IC1hCgpFTkRfTVNHCgogICAgZXhpdCAwOwp9CgpteSAkQ29uZmlndXJhdGlvbkZpbGUgPSBkaXJuYW1lKCQwKSAuICcvLi4vS2VybmVsL1RpZHlBbGwvdGlkeWFsbHJjJzsKCm15ICRSb290RGlyID0gZ2V0Y3dkKCk7CgpteSAkVGlkeUFsbCA9IFRpZHlBbGw6Ok9UT0JPLT5uZXdfZnJvbV9jb25mX2ZpbGUoCiAgICAkQ29uZmlndXJhdGlvbkZpbGUsCiAgICBjaGVja19vbmx5ICAgICAgID0+IDAsCiAgICBtb2RlICAgICAgICAgICAgID0+ICRNb2RlIC8vICdjbGknLAogICAgcm9vdF9kaXIgICAgICAgICA9PiAkUm9vdERpciwKICAgIGRhdGFfZGlyICAgICAgICAgPT4gRmlsZTo6U3BlYy0+dG1wZGlyKCksCiAgICB2ZXJib3NlICAgICAgICAgID0+ICRWZXJib3NlID8gMSA6IDAsCiAgICBzZWxlY3RlZF9wbHVnaW5zID0+ICRQbHVnaW5zLAopOwoKJFRpZHlBbGwtPkRldGVybWluZUZyYW1ld29ya1ZlcnNpb25Gcm9tRGlyZWN0b3J5KCk7CiRUaWR5QWxsLT5HZXRGaWxlTGlzdEZyb21EaXJlY3RvcnkoKTsKCm15IEBGaWxlczsKCmlmICgkQWxsKSB7CgogICAgIyBEb24ndCB1c2UgVGlkeUFsbDo6cHJvY2Vzc19hbGwoKSBvciBUaWR5QWxsOjpmaW5kX21hdGNoZWRfZmlsZXMoKSBhcyBpdCBpcyB0b28gc2xvdyBvbiBsYXJnZSBjb2RlIGJhc2VzLgogICAgQEZpbGVzID0gQFRpZHlBbGw6Ok9UT0JPOjpGaWxlTGlzdDsKICAgIEBGaWxlcyA9ICRUaWR5QWxsLT5GaWx0ZXJNYXRjaGVkRmlsZXMoIEZpbGVzID0+IFxARmlsZXMgKTsKICAgIEBGaWxlcyA9IG1hcCB7IEZpbGU6OlNwZWMtPmNhdGZpbGUoICRSb290RGlyLCAkXyApIH0gQEZpbGVzOwp9CmVsc2lmICggZGVmaW5lZCAkRGlyZWN0b3J5ICYmIGxlbmd0aCAkRGlyZWN0b3J5ICkgewogICAgQEZpbGVzID0gJFRpZHlBbGwtPkZpbmRGaWxlc0luRGlyZWN0b3J5KCBEaXJlY3RvcnkgPT4gRmlsZTo6U3BlYy0+Y2F0ZmlsZSggJFJvb3REaXIsICREaXJlY3RvcnkgKSApOwogICAgQEZpbGVzID0gJFRpZHlBbGwtPkZpbHRlck1hdGNoZWRGaWxlcyggRmlsZXMgPT4gXEBGaWxlcyApOwogICAgQEZpbGVzID0gbWFwIHsgRmlsZTo6U3BlYy0+Y2F0ZmlsZSggJFJvb3REaXIsICRfICkgfSBARmlsZXM7Cn0KZWxzaWYgKCBkZWZpbmVkICRGaWxlICYmIGxlbmd0aCAkRmlsZSApIHsKICAgIEBGaWxlcyA9ICggRmlsZTo6U3BlYy0+Y2F0ZmlsZSggJFJvb3REaXIsICRGaWxlICkgKTsKfQplbHNpZiAoQEZpbGVMaXN0KSB7CiAgICBARmlsZXMgPSBtYXAgeyBGaWxlOjpTcGVjLT5jYXRmaWxlKCAkUm9vdERpciwgJF8gKSB9IEBGaWxlTGlzdDsKfQplbHNpZiAoIGRlZmluZWQgJENhY2hlZCAmJiBsZW5ndGggJENhY2hlZCApIHsKICAgIG15IEBTdGFnZWRGaWxlcyA9IGBnaXQgZGlmZiAtLW5hbWUtb25seSAtLWNhY2hlZGA7CiAgICBmb3IgbXkgJFN0YWdlZEZpbGUgKEBTdGFnZWRGaWxlcykgewogICAgICAgIGNob21wICRTdGFnZWRGaWxlOwogICAgICAgIHB1c2ggQEZpbGVzLCAoIEZpbGU6OlNwZWMtPmNhdGZpbGUoICRSb290RGlyLCAkU3RhZ2VkRmlsZSApICk7CiAgICB9Cn0KZWxzZSB7CiAgICBteSAkT3V0cHV0ID0gY2FwdHVyZXgoICdnaXQnLCAic3RhdHVzIiwgIi0tcG9yY2VsYWluIiApOwoKICAgICMgRmV0Y2ggYWxsIGNoYW5nZWQgZmlsZXMsIHN0YWdlZCBhbmQgdW5zdGFnZWQKICAgIG15IEBDaGFuZ2VkRmlsZXMgPSBncmVwIHsgLWYgJiYgIS1sIH0gKCAkT3V0cHV0ID1+IC9eXHMqW01BXStccysoLiopL2dtICk7CiAgICBwdXNoIEBDaGFuZ2VkRmlsZXMsIGdyZXAgeyAtZiAmJiAhLWwgfSAoICRPdXRwdXQgPX4gL15ccypSTT8rXHMrKC4qPylccystPlxzKyguKikvZ20gKTsKICAgIGZvciBteSAkQ2hhbmdlZEZpbGUgKEBDaGFuZ2VkRmlsZXMpIHsKICAgICAgICBjaG9tcCAkQ2hhbmdlZEZpbGU7CiAgICAgICAgcHVzaCBARmlsZXMsICggRmlsZTo6U3BlYy0+Y2F0ZmlsZSggJFJvb3REaXIsICRDaGFuZ2VkRmlsZSApICk7CiAgICB9CgogICAgIyBBbHdheXMgaW5jbHVkZSBhbGwgU09QTSBmaWxlcyB0byB2ZXJpZnkgdGhlIGZpbGUgbGlzdC4KICAgIGZvciBteSAkU09QTUZpbGUgKCBtYXAgeyBGaWxlOjpTcGVjLT5hYnMycmVsKCAkXywgJFJvb3REaXIgKSB9IGdsb2IoIiRSb290RGlyLyouc29wbSIpICkgewogICAgICAgIGlmICggIWdyZXAgeyAkXyBlcSAkU09QTUZpbGUgfSBAQ2hhbmdlZEZpbGVzICkgewogICAgICAgICAgICBwdXNoIEBGaWxlcywgKCBGaWxlOjpTcGVjLT5jYXRmaWxlKCAkUm9vdERpciwgJFNPUE1GaWxlICkgKTsKICAgICAgICB9CiAgICB9Cn0KCiMgU2FmZWd1YXJkOiBpZ25vcmUgbm9uLXJlZ3VsYXIgZmlsZXMgYW5kIHN5bWxpbmtzIChjYXVzZXMgVGlkeUFsbCBlcnJvcnMpLgpARmlsZXMgPSBncmVwIHsgLWYgJiYgIS1sIH0gQEZpbGVzOwoKIyBzb3J0IHRoZSBmaWxlcyBhbHBoYWJldGljYWxseSwgYnV0IGJlIGF3YXJlIHRoZSBwYXJhbGxlbCBwcm9jZXNzaW5nCiMgd2lsbCBtZXNzIHVwIHRoZSBvcmRlcmluZyBhZ2Fpbi4KQEZpbGVzID0gc29ydCBARmlsZXM7CgpteSBAR2xvYmFsUmVzdWx0cyA9ICRUaWR5QWxsLT5Qcm9jZXNzUGF0aHNQYXJhbGxlbCgKICAgIFByb2Nlc3NlcyA9PiAkUHJvY2Vzc2VzLAogICAgRmlsZVBhdGhzID0+IFxARmlsZXMsCik7CgokVGlkeUFsbC0+SGFuZGxlUmVzdWx0cygKICAgIFJlc3VsdHMgPT4gXEBHbG9iYWxSZXN1bHRzCik7Cg==</File>
        <File Location="Kernel/cpan-lib/Locale/PO.pm" Permission="660" Encode="Base64">cGFja2FnZSBMb2NhbGU6OlBPOwp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm91ciAkVkVSU0lPTiA9ICcwLjI3JzsKCnVzZSBDYXJwOwoKc3ViIG5ldyB7CiAgICBteSAkdGhpcyAgICA9IHNoaWZ0OwogICAgbXkgJW9wdGlvbnMgPSBAXzsKICAgIG15ICRjbGFzcyAgID0gcmVmKCR0aGlzKSB8fCAkdGhpczsKICAgIG15ICRzZWxmICAgID0ge307CiAgICBibGVzcyAkc2VsZiwgJGNsYXNzOwogICAgJHNlbGYtPl9mbGFncyhbXSk7CiAgICAkc2VsZi0+ZnV6enlfbXNnaWQoJG9wdGlvbnN7Jy1mdXp6eV9tc2dpZCd9KSBpZiBkZWZpbmVkKCRvcHRpb25zeyctZnV6enlfbXNnaWQnfSk7CiAgICAkc2VsZi0+ZnV6enlfbXNnaWRfcGx1cmFsKCRvcHRpb25zeyctZnV6enlfbXNnaWRfcGx1cmFsJ30pCiAgICAgICAgaWYgZGVmaW5lZCgkb3B0aW9uc3snLWZ1enp5X21zZ2lkX3BsdXJhbCd9KTsKICAgICRzZWxmLT5tc2dpZCgkb3B0aW9uc3snLW1zZ2lkJ30pIGlmIGRlZmluZWQoJG9wdGlvbnN7Jy1tc2dpZCd9KTsKICAgICRzZWxmLT5tc2dpZF9wbHVyYWwoJG9wdGlvbnN7Jy1tc2dpZF9wbHVyYWwnfSkKICAgICAgICBpZiBkZWZpbmVkKCRvcHRpb25zeyctbXNnaWRfcGx1cmFsJ30pOwogICAgJHNlbGYtPm1zZ3N0cigkb3B0aW9uc3snLW1zZ3N0cid9KSBpZiBkZWZpbmVkKCRvcHRpb25zeyctbXNnc3RyJ30pOwogICAgJHNlbGYtPm1zZ3N0cl9uKCRvcHRpb25zeyctbXNnc3RyX24nfSkKICAgICAgICBpZiBkZWZpbmVkKCRvcHRpb25zeyctbXNnc3RyX24nfSk7CiAgICAkc2VsZi0+bXNnY3R4dCgkb3B0aW9uc3snLW1zZ2N0eHQnfSkgaWYgZGVmaW5lZCgkb3B0aW9uc3snLW1zZ2N0eHQnfSk7CiAgICAkc2VsZi0+ZnV6enlfbXNnY3R4dCgkb3B0aW9uc3snLWZ1enp5X21zZ2N0eHQnfSkKICAgICAgICBpZiBkZWZpbmVkKCRvcHRpb25zeyctZnV6enlfbXNnY3R4dCd9KTsKICAgICRzZWxmLT5jb21tZW50KCRvcHRpb25zeyctY29tbWVudCd9KSBpZiBkZWZpbmVkKCRvcHRpb25zeyctY29tbWVudCd9KTsKICAgICRzZWxmLT5mdXp6eSgkb3B0aW9uc3snLWZ1enp5J30pICAgICBpZiBkZWZpbmVkKCRvcHRpb25zeyctZnV6enknfSk7CiAgICAkc2VsZi0+YXV0b21hdGljKCRvcHRpb25zeyctYXV0b21hdGljJ30pCiAgICAgICAgaWYgZGVmaW5lZCgkb3B0aW9uc3snLWF1dG9tYXRpYyd9KTsKICAgICRzZWxmLT5yZWZlcmVuY2UoJG9wdGlvbnN7Jy1yZWZlcmVuY2UnfSkKICAgICAgICBpZiBkZWZpbmVkKCRvcHRpb25zeyctcmVmZXJlbmNlJ30pOwogICAgJHNlbGYtPmNfZm9ybWF0KDEpIGlmIGRlZmluZWQoJG9wdGlvbnN7Jy1jLWZvcm1hdCd9KTsKICAgICRzZWxmLT5jX2Zvcm1hdCgxKSBpZiBkZWZpbmVkKCRvcHRpb25zeyctY19mb3JtYXQnfSk7CiAgICAkc2VsZi0+Y19mb3JtYXQoMCkgaWYgZGVmaW5lZCgkb3B0aW9uc3snLW5vLWMtZm9ybWF0J30pOwogICAgJHNlbGYtPmNfZm9ybWF0KDApIGlmIGRlZmluZWQoJG9wdGlvbnN7Jy1ub19jX2Zvcm1hdCd9KTsKICAgICRzZWxmLT5sb2FkZWRfbGluZV9udW1iZXIoJG9wdGlvbnN7Jy1sb2FkZWRfbGluZV9udW1iZXInfSkKICAgICAgICBpZiBkZWZpbmVkKCRvcHRpb25zeyctbG9hZGVkX2xpbmVfbnVtYmVyJ30pOwogICAgcmV0dXJuICRzZWxmOwp9CgpzdWIgZnV6enlfbXNnY3R4dCB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgQF8gPyAkc2VsZi0+eydmdXp6eV9tc2djdHh0J30gPSAkc2VsZi0+cXVvdGUoc2hpZnQpIDogJHNlbGYtPnsnZnV6enlfbXNnY3R4dCd9Owp9CgpzdWIgZnV6enlfbXNnaWQgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIEBfID8gJHNlbGYtPnsnZnV6enlfbXNnaWQnfSA9ICRzZWxmLT5xdW90ZShzaGlmdCkgOiAkc2VsZi0+eydmdXp6eV9tc2dpZCd9Owp9CgpzdWIgZnV6enlfbXNnaWRfcGx1cmFsIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICBAXwogICAgICAgID8gJHNlbGYtPnsnZnV6enlfbXNnaWRfcGx1cmFsJ30gPSAkc2VsZi0+cXVvdGUoc2hpZnQpCiAgICAgICAgOiAkc2VsZi0+eydmdXp6eV9tc2dpZF9wbHVyYWwnfTsKfQoKc3ViIG1zZ2N0eHQgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIEBfID8gJHNlbGYtPnsnbXNnY3R4dCd9ID0gJHNlbGYtPnF1b3RlKHNoaWZ0KSA6ICRzZWxmLT57J21zZ2N0eHQnfTsKfQoKc3ViIG1zZ2lkIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICBAXyA/ICRzZWxmLT57J21zZ2lkJ30gPSAkc2VsZi0+cXVvdGUoc2hpZnQpIDogJHNlbGYtPnsnbXNnaWQnfTsKfQoKc3ViIG1zZ2lkX3BsdXJhbCB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgQF8KICAgICAgICA/ICRzZWxmLT57J21zZ2lkX3BsdXJhbCd9ID0gJHNlbGYtPnF1b3RlKHNoaWZ0KQogICAgICAgIDogJHNlbGYtPnsnbXNnaWRfcGx1cmFsJ307Cn0KCnN1YiBtc2dzdHIgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIEBfID8gJHNlbGYtPnsnbXNnc3RyJ30gPSAkc2VsZi0+cXVvdGUoc2hpZnQpIDogJHNlbGYtPnsnbXNnc3RyJ307Cn0KCnN1YiBtc2dzdHJfbiB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgaWYgKEBfKSB7CiAgICAgICAgbXkgJGhhc2hyZWYgPSBzaGlmdDsKCiAgICAgICAgIyBjaGVjayB0aGF0IHdlIGhhdmUgYSBoYXNocmVmLgogICAgICAgIGNyb2FrICdBcmd1bWVudCB0byBtc2dzdHJfbiBtdXN0IGJlIGEgaGFzaHJlZjogeyBuID0+ICJzdHJpbmcgbiIsIC4uLiB9LicKICAgICAgICAgICAgdW5sZXNzIHJlZigkaGFzaHJlZikgZXEgJ0hBU0gnOwoKICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGtleXMgYXJlIGFsbCBudW1iZXJzLgogICAgICAgIGNyb2FrICdLZXlzIHRvIG1zZ3N0cl9uIGhhc2hyZWYgbXVzdCBiZSBudW1iZXJzJwogICAgICAgICAgICBpZiBncmVwIHttL1xEL30ga2V5cyAlJGhhc2hyZWY7CgogICAgICAgICMgUXVvdGUgYWxsIHRoZSB2YWx1ZXMgaW4gdGhlIGhhc2hyZWYuCiAgICAgICAgJHNlbGYtPnsnbXNnc3RyX24nfXskX30gPSAkc2VsZi0+cXVvdGUoJCRoYXNocmVmeyRffSkgZm9yIGtleXMgJSRoYXNocmVmOwoKICAgIH0KCiAgICByZXR1cm4gJHNlbGYtPnsnbXNnc3RyX24nfTsKfQoKc3ViIGNvbW1lbnQgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIEBfID8gJHNlbGYtPnsnY29tbWVudCd9ID0gc2hpZnQgOiAkc2VsZi0+eydjb21tZW50J307Cn0KCnN1YiBhdXRvbWF0aWMgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIEBfID8gJHNlbGYtPnsnYXV0b21hdGljJ30gPSBzaGlmdCA6ICRzZWxmLT57J2F1dG9tYXRpYyd9Owp9CgpzdWIgcmVmZXJlbmNlIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICBAXyA/ICRzZWxmLT57J3JlZmVyZW5jZSd9ID0gc2hpZnQgOiAkc2VsZi0+eydyZWZlcmVuY2UnfTsKfQoKc3ViIG9ic29sZXRlIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICBAXyA/ICRzZWxmLT57J29ic29sZXRlJ30gPSBzaGlmdCA6ICRzZWxmLT57J29ic29sZXRlJ307Cn0KCnN1YiBmdXp6eSB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwoKICAgIGlmIChAXykgewogICAgICAgIG15ICR2YWx1ZSA9IHNoaWZ0OwogICAgICAgICR2YWx1ZSA/ICRzZWxmLT5hZGRfZmxhZygnZnV6enknKSA6ICRzZWxmLT5yZW1vdmVfZmxhZygnZnV6enknKTsKICAgIH0KCiAgICByZXR1cm4gJHNlbGYtPmhhc19mbGFnKCdmdXp6eScpOwp9CgpzdWIgY19mb3JtYXQgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKCiAgICByZXR1cm4gJHNlbGYtPl90cmlfdmFsdWVfZmxhZygnYy1mb3JtYXQnLCBAXyk7Cn0KCnN1YiBwaHBfZm9ybWF0IHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CgogICAgcmV0dXJuICRzZWxmLT5fdHJpX3ZhbHVlX2ZsYWcoJ3BocC1mb3JtYXQnLCBAXyk7Cn0KCnN1YiBfZmxhZ3MgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIEBfID8gJHNlbGYtPnsnX2ZsYWdzJ30gPSBzaGlmdCA6ICRzZWxmLT57J19mbGFncyd9Owp9CgpzdWIgX3RyaV92YWx1ZV9mbGFnIHsKICAgIG15ICRzZWxmICAgICAgPSBzaGlmdDsKICAgIG15ICRmbGFnX25hbWUgPSBzaGlmdDsKICAgIGlmIChAXykgeyAgICAjIHNldCBvciBjbGVhciB0aGUgZmxhZ3MKICAgICAgICBteSAkdmFsdWUgPSBzaGlmdDsKICAgICAgICBpZiAoIWRlZmluZWQoJHZhbHVlKSB8fCAkdmFsdWUgZXEgIiIpIHsKICAgICAgICAgICAgJHNlbGYtPnJlbW92ZV9mbGFnKCIkZmxhZ19uYW1lIik7CiAgICAgICAgICAgICRzZWxmLT5yZW1vdmVfZmxhZygibm8tJGZsYWdfbmFtZSIpOwogICAgICAgICAgICByZXR1cm4gdW5kZWY7CiAgICAgICAgfQogICAgICAgIGVsc2lmICgkdmFsdWUpIHsKICAgICAgICAgICAgJHNlbGYtPmFkZF9mbGFnKCIkZmxhZ19uYW1lIik7CiAgICAgICAgICAgICRzZWxmLT5yZW1vdmVfZmxhZygibm8tJGZsYWdfbmFtZSIpOwogICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRzZWxmLT5hZGRfZmxhZygibm8tJGZsYWdfbmFtZSIpOwogICAgICAgICAgICAkc2VsZi0+cmVtb3ZlX2ZsYWcoIiRmbGFnX25hbWUiKTsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7ICAgICMgY2hlY2sgdGhlIGZsYWdzCiAgICAgICAgcmV0dXJuIDEgaWYgJHNlbGYtPmhhc19mbGFnKCIkZmxhZ19uYW1lIik7CiAgICAgICAgcmV0dXJuIDAgaWYgJHNlbGYtPmhhc19mbGFnKCJuby0kZmxhZ19uYW1lIik7CiAgICAgICAgcmV0dXJuIHVuZGVmOwogICAgfQp9CgpzdWIgYWRkX2ZsYWcgewogICAgbXkgKCRzZWxmLCAkZmxhZ19uYW1lKSA9IEBfOwogICAgaWYgKCEgJHNlbGYtPmhhc19mbGFnKCRmbGFnX25hbWUpKSB7CiAgICAgICAgcHVzaCBAeyRzZWxmLT5fZmxhZ3N9LCAkZmxhZ19uYW1lOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgcmVtb3ZlX2ZsYWcgewogICAgbXkgKCRzZWxmLCAkZmxhZ19uYW1lKSA9IEBfOwogICAgbXkgQG5ld19mbGFnczsKICAgIGZvcmVhY2ggbXkgJGZsYWcgKEB7JHNlbGYtPl9mbGFnc30pIHsKICAgICAgICBwdXNoIEBuZXdfZmxhZ3MsICRmbGFnIHVubGVzcyAkZmxhZyBlcSAkZmxhZ19uYW1lOwogICAgfQogICAgJHNlbGYtPl9mbGFncyhcQG5ld19mbGFncyk7CiAgICByZXR1cm47Cn0KCnN1YiBoYXNfZmxhZyB7CiAgICBteSAoJHNlbGYsICRmbGFnX25hbWUpID0gQF87CiAgICBmb3JlYWNoIG15ICRmbGFnIChAeyRzZWxmLT5fZmxhZ3N9KSB7CiAgICAgICAgcmV0dXJuIDEgaWYgJGZsYWcgZXEgJGZsYWdfbmFtZTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIGxvYWRlZF9saW5lX251bWJlciB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgQF8gPyAkc2VsZi0+eydsb2FkZWRfbGluZV9udW1iZXInfSA9IHNoaWZ0IDogJHNlbGYtPnsnbG9hZGVkX2xpbmVfbnVtYmVyJ307Cn0KCnN1YiBfbm9ybWFsaXplX3N0ciB7CiAgICBteSAkc2VsZiAgICAgPSBzaGlmdDsKICAgIG15ICRzdHJpbmcgICA9IHNoaWZ0OwogICAgbXkgJGRlcXVvdGVkID0gJHNlbGYtPmRlcXVvdGUoJHN0cmluZyk7CgogICAgIyBNdWx0aWxpbmU6IHRoaXMgaXNuJ3QgcXVpdGUgcGVyZmVjdCwgYnV0IGZhc3QgYW5kIGVhc3kKICAgIGlmIChkZWZpbmVkICRkZXF1b3RlZCAmJiAkZGVxdW90ZWQgPX4gL1xuLykgewogICAgICAgIG15ICRvdXRwdXQ7CiAgICAgICAgbXkgQGxpbmVzOwogICAgICAgIEBsaW5lcyA9IHNwbGl0KC9cbi8sICRkZXF1b3RlZCwgLTEpOwogICAgICAgIG15ICRsYXN0bGluZSA9IHBvcCBAbGluZXM7ICAgICMgc3BlY2lhbCB0cmVhdG1lbnQgZm9yIHRoaXMgb25lCiAgICAgICAgJG91dHB1dCA9IHFxeyIiXG59IGlmICgkI2xpbmVzICE9IDApOwogICAgICAgIGZvcmVhY2ggKEBsaW5lcykgewogICAgICAgICAgICAkb3V0cHV0IC49ICRzZWxmLT5xdW90ZSgiJF9cbiIpIC4gIlxuIjsKICAgICAgICB9CiAgICAgICAgJG91dHB1dCAuPSAkc2VsZi0+cXVvdGUoJGxhc3RsaW5lKSAuICJcbiIgaWYgJGxhc3RsaW5lIG5lICIiOwogICAgICAgIHJldHVybiAkb3V0cHV0OwogICAgfQogICAgIyBTaW5nbGUgbGluZQogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuICgkc3RyaW5nIHx8ICIiKSAuICJcbiI7CiAgICB9Cn0KCnN1YiBfZnV6enlfbm9ybWFsaXplX3N0ciB7CiAgICBteSAkc2VsZiAgID0gc2hpZnQ7CiAgICBteSAkc3RyaW5nID0gc2hpZnQ7CiAgICBteSAkcHJlZml4ID0gc2hpZnQ7CgogICAgbXkgJG5vcm1hbGl6ZWQgPSAkc2VsZi0+X25vcm1hbGl6ZV9zdHIoJHN0cmluZyk7CgogICAgIyBvbiBuZXdsaW5lcywgc3RhcnQgdGhlbSB3aXRoICIjfCAiIG9yICIjfnwgIgogICAgJG5vcm1hbGl6ZWQgPX4gcy9cbiIvXG4kcHJlZml4Ii9nOwoKICAgIHJldHVybiAkbm9ybWFsaXplZDsKfQoKc3ViIGR1bXAgewogICAgbXkgJHNlbGYgICAgICAgICA9IHNoaWZ0OwogICAgbXkgJG9ic29sZXRlICAgICA9ICRzZWxmLT5vYnNvbGV0ZSA/ICcjfiAnIDogJyc7CiAgICBteSAkZnV6enlfcHJlZml4ID0gJHNlbGYtPm9ic29sZXRlID8gJyN+fCAnIDogJyN8ICc7CiAgICBteSAkZHVtcDsKCiAgICAkZHVtcCA9ICRzZWxmLT5fZHVtcF9tdWx0aV9jb21tZW50KCRzZWxmLT5jb21tZW50LCAiIyAiKQogICAgICAgIGlmICgkc2VsZi0+Y29tbWVudCk7CiAgICAkZHVtcCAuPSAkc2VsZi0+X2R1bXBfbXVsdGlfY29tbWVudCgkc2VsZi0+YXV0b21hdGljLCAiIy4gIikKICAgICAgICBpZiAoJHNlbGYtPmF1dG9tYXRpYyk7CiAgICAkZHVtcCAuPSAkc2VsZi0+X2R1bXBfbXVsdGlfY29tbWVudCgkc2VsZi0+cmVmZXJlbmNlLCAiIzogIikKICAgICAgICBpZiAoJHNlbGYtPnJlZmVyZW5jZSk7CgogICAgbXkgJGZsYWdzID0gJyc7CgogICAgZm9yZWFjaCBteSAkZmxhZyAoQHskc2VsZi0+X2ZsYWdzfSkgewogICAgICAgICRmbGFncyAuPSAiLCAkZmxhZyI7CiAgICB9CgogICAgJGR1bXAgLj0gIiMkZmxhZ3NcbiIKICAgICAgICBpZiBsZW5ndGggJGZsYWdzOwoKICAgICRkdW1wCiAgICAgICAgLj0gIiR7ZnV6enlfcHJlZml4fW1zZ2N0eHQgIgogICAgICAgIC4gJHNlbGYtPl9mdXp6eV9ub3JtYWxpemVfc3RyKCRzZWxmLT5mdXp6eV9tc2djdHh0LCAkZnV6enlfcHJlZml4KQogICAgICAgIGlmICRzZWxmLT5mdXp6eV9tc2djdHh0OwogICAgJGR1bXAKICAgICAgICAuPSAiJHtmdXp6eV9wcmVmaXh9bXNnaWQgIgogICAgICAgIC4gJHNlbGYtPl9mdXp6eV9ub3JtYWxpemVfc3RyKCRzZWxmLT5mdXp6eV9tc2dpZCwgJGZ1enp5X3ByZWZpeCkKICAgICAgICBpZiAkc2VsZi0+ZnV6enlfbXNnaWQ7CiAgICAkZHVtcAogICAgICAgIC49ICIke2Z1enp5X3ByZWZpeH1tc2dpZF9wbHVyYWwgIgogICAgICAgIC4gJHNlbGYtPl9mdXp6eV9ub3JtYWxpemVfc3RyKCRzZWxmLT5mdXp6eV9tc2dpZF9wbHVyYWwsICRmdXp6eV9wcmVmaXgpCiAgICAgICAgaWYgJHNlbGYtPmZ1enp5X21zZ2lkX3BsdXJhbDsKCiAgICAkZHVtcCAuPSAiJHtvYnNvbGV0ZX1tc2djdHh0ICIgLiAkc2VsZi0+X25vcm1hbGl6ZV9zdHIoJHNlbGYtPm1zZ2N0eHQpCiAgICAgICAgaWYgJHNlbGYtPm1zZ2N0eHQ7CiAgICAkZHVtcCAuPSAiJHtvYnNvbGV0ZX1tc2dpZCAiIC4gJHNlbGYtPl9ub3JtYWxpemVfc3RyKCRzZWxmLT5tc2dpZCk7CiAgICAkZHVtcCAuPSAiJHtvYnNvbGV0ZX1tc2dpZF9wbHVyYWwgIiAuICRzZWxmLT5fbm9ybWFsaXplX3N0cigkc2VsZi0+bXNnaWRfcGx1cmFsKQogICAgICAgIGlmICRzZWxmLT5tc2dpZF9wbHVyYWw7CgogICAgJGR1bXAgLj0gIiR7b2Jzb2xldGV9bXNnc3RyICIgLiAkc2VsZi0+X25vcm1hbGl6ZV9zdHIoJHNlbGYtPm1zZ3N0cikgaWYgJHNlbGYtPm1zZ3N0cjsKCiAgICBpZiAobXkgJG1zZ3N0cl9uID0gJHNlbGYtPm1zZ3N0cl9uKSB7CiAgICAgICAgJGR1bXAgLj0gIiR7b2Jzb2xldGV9bXNnc3RyWyRfXSAiIC4gJHNlbGYtPl9ub3JtYWxpemVfc3RyKCQkbXNnc3RyX257JF99KQogICAgICAgICAgICBmb3Igc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJSRtc2dzdHJfbjsKICAgIH0KCiAgICAkZHVtcCAuPSAiXG4iOwogICAgcmV0dXJuICRkdW1wOwp9CgpzdWIgX2R1bXBfbXVsdGlfY29tbWVudCB7CiAgICBteSAkc2VsZiAgICA9IHNoaWZ0OwogICAgbXkgJGNvbW1lbnQgPSBzaGlmdDsKICAgIG15ICRsZWFkZXIgID0gc2hpZnQ7CiAgICBteSAkY2hvcHBlZCA9ICRsZWFkZXI7CiAgICBjaG9wKCRjaG9wcGVkKTsKICAgIG15ICRyZXN1bHQgPSAkbGVhZGVyIC4gJGNvbW1lbnQ7CiAgICAkcmVzdWx0ID1+IHMvXG4vXG4kbGVhZGVyL2c7CiAgICAkcmVzdWx0ID1+IHMvXiRsZWFkZXIkLyRjaG9wcGVkL2dtOwogICAgJHJlc3VsdCAuPSAiXG4iOwogICAgcmV0dXJuICRyZXN1bHQ7Cn0KCiMgUXVvdGUgYSBzdHJpbmcgcHJvcGVybHkKc3ViIHF1b3RlIHsKICAgIG15ICRzZWxmICAgPSBzaGlmdDsKICAgIG15ICRzdHJpbmcgPSBzaGlmdDsKCiAgICByZXR1cm4gdW5kZWYKICAgICAgICB1bmxlc3MgZGVmaW5lZCAkc3RyaW5nOwoKICAgICRzdHJpbmcgPX4gcy9cXCg/IXQpL1xcXFwvZzsgICAgICAgICAgICMgXHQgaXMgYSB0YWIKICAgICRzdHJpbmcgPX4gcy8iL1xcIi9nOwogICAgJHN0cmluZyA9fiBzL1xuL1xcbi9nOwogICAgcmV0dXJuICJcIiRzdHJpbmdcIiI7Cn0KCnN1YiBkZXF1b3RlIHsKICAgIG15ICRzZWxmICAgPSBzaGlmdDsKICAgIG15ICRzdHJpbmcgPSBzaGlmdDsKCiAgICByZXR1cm4gdW5kZWYKICAgICAgICB1bmxlc3MgZGVmaW5lZCAkc3RyaW5nOwoKICAgICRzdHJpbmcgPX4gcy9eIiguKikiLyQxLzsKICAgICRzdHJpbmcgPX4gcy9cXCIvIi9nOwogICAgJHN0cmluZyA9fiBzLyg/PCEoXFwpKVxcbi9cbi9nOyAgICAgICAgIyBuZXdsaW5lCiAgICAkc3RyaW5nID1+IHMvKD88IShcXCkpXFx7Mn1uL1xcbi9nOyAgICAjIGlubGluZSBuZXdsaW5lCiAgICAkc3RyaW5nID1+IHMvKD88IShcXCkpXFx7M31uL1xcXG4vZzsgICAjIFwgZm9sbG93ZWQgYnkgbmV3bGluZQogICAgJHN0cmluZyA9fiBzL1xcezR9bi9cXFxcbi9nOyAgICAgICAgICAgIyBcIGZvbGxvd2VkIGJ5IGlubGluZSBuZXdsaW5lCiAgICAkc3RyaW5nID1+IHMvXFxcXCg/IW4pL1xcL2c7ICAgICAgICAgICAjIGFsbCBzbGFzaGVzIG5vdCByZWxhdGVkIHRvIGEgbmV3bGluZQogICAgcmV0dXJuICRzdHJpbmc7Cn0KCnN1YiBzYXZlX2ZpbGVfZnJvbWFycmF5IHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAkc2VsZi0+X3NhdmVfZmlsZSgwLCBAXyk7Cn0KCnN1YiBzYXZlX2ZpbGVfZnJvbWhhc2ggewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICRzZWxmLT5fc2F2ZV9maWxlKDEsIEBfKTsKfQoKc3ViIF9zYXZlX2ZpbGUgewogICAgbXkgJHNlbGYgICAgID0gc2hpZnQ7CiAgICBteSAkYXNoYXNoICAgPSBzaGlmdDsKICAgIG15ICRmaWxlICAgICA9IHNoaWZ0OwogICAgbXkgJGVudHJpZXMgID0gc2hpZnQ7CiAgICBteSAkZW5jb2RpbmcgPSBzaGlmdDsKCiAgICBvcGVuKE9VVCwgZGVmaW5lZCgkZW5jb2RpbmcpID8gIj46ZW5jb2RpbmcoJGVuY29kaW5nKSIgOiAiPiIsICRmaWxlKQogICAgICAgIG9yIHJldHVybiB1bmRlZjsKICAgIGlmICgkYXNoYXNoKSB7CiAgICAgICAgZm9yZWFjaCAoc29ydCBrZXlzICUkZW50cmllcykgewogICAgICAgICAgICBwcmludCBPVVQgJGVudHJpZXMtPnskX30tPmR1bXA7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgZm9yZWFjaCAoQCRlbnRyaWVzKSB7CiAgICAgICAgICAgIHByaW50IE9VVCAkXy0+ZHVtcDsKICAgICAgICB9CiAgICB9CgogICAgY2xvc2UgT1VUOwp9CgpzdWIgbG9hZF9maWxlX2FzYXJyYXkgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICRzZWxmLT5fbG9hZF9maWxlKDAsIEBfKTsKfQoKc3ViIGxvYWRfZmlsZV9hc2hhc2ggewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICRzZWxmLT5fbG9hZF9maWxlKDEsIEBfKTsKfQoKc3ViIF9sb2FkX2ZpbGUgewogICAgbXkgJHNlbGYgICAgID0gc2hpZnQ7CiAgICBteSAkYXNoYXNoICAgPSBzaGlmdDsKICAgIG15ICRmaWxlICAgICA9IHNoaWZ0OwogICAgbXkgJGVuY29kaW5nID0gc2hpZnQ7CiAgICBteSAkY2xhc3MgICAgPSByZWYgJHNlbGYgfHwgJHNlbGY7CiAgICBteSAoQGVudHJpZXMsICVlbnRyaWVzKTsKICAgIG15ICRsaW5lX251bWJlciA9IDA7CiAgICBteSAkcG87CiAgICBteSAlYnVmZmVyOwogICAgbXkgJGxhc3RfYnVmZmVyOwoKICAgIG9wZW4oSU4sIGRlZmluZWQoJGVuY29kaW5nKSA/ICI8OmVuY29kaW5nKCRlbmNvZGluZykiIDogIjwiLCAkZmlsZSkKICAgICAgICBvciByZXR1cm4gdW5kZWY7CgogICAgd2hpbGUgKDxJTj4pIHsKICAgICAgICBjaG9tcDsKICAgICAgICAkbGluZV9udW1iZXIrKzsKCiAgICAgICAgIwogICAgICAgICMgU3RyaXAgdHJhaWxpbmcgXHJcbiBjaGFycwogICAgICAgICMKICAgICAgICAjIFRoaXMgY2FuIHBvc3NpYmx5IGhhdmUgYW4gZWZmZWN0IG9ubHkgb24gbXN5cyAob24gd2hpY2ggY2hvbXAKICAgICAgICAjIHNlZW1zIHRvIGxlYXZlIHNvbWUgdHJhaWxpbmcgXHIgY2hhcnMpIGFuZCBvbiBNYWNPUyB0aGF0IGhhcwogICAgICAgICMgcmV2ZXJzZWQgbmV3bGluZSAoXG5ccikuCiAgICAgICAgIyBOb3RlIHRoYXQgb3VyIHN0cmlwcGluZyBvZiB0aG9zZSB0cmFpbGluZyBjaGFycyBpcyBvbmx5IGdvaW5nIHRvIGJlCiAgICAgICAgIyB1c2VmdWwgd2hlbiB3cml0aW5nIGZyb20gb25lIHBsYXRmb3JtIGFuZCByZWFkaW5nIG9uIGFub3RoZXIuCiAgICAgICAgc3tbXHJcbl0qJH17fTsKCiAgICAgICAgaWYgKC9eJC8pIHsKCiAgICAgICAgICAgICMgRW1wdHkgbGluZS4gRW5kIG9mIGFuIGVudHJ5LgoKICAgICAgICAgICAgaWYgKGRlZmluZWQoJHBvKSkgewogICAgICAgICAgICAgICAgJHBvLT5mdXp6eV9tc2djdHh0KCRidWZmZXJ7ZnV6enlfbXNnY3R4dH0pCiAgICAgICAgICAgICAgICAgICAgaWYgZGVmaW5lZCAkYnVmZmVye2Z1enp5X21zZ2N0eHR9OwogICAgICAgICAgICAgICAgJHBvLT5mdXp6eV9tc2dpZCgkYnVmZmVye2Z1enp5X21zZ2lkfSkgaWYgZGVmaW5lZCAkYnVmZmVye2Z1enp5X21zZ2lkfTsKICAgICAgICAgICAgICAgICRwby0+ZnV6enlfbXNnaWRfcGx1cmFsKCRidWZmZXJ7ZnV6enlfbXNnaWRfcGx1cmFsfSkKICAgICAgICAgICAgICAgICAgICBpZiBkZWZpbmVkICRidWZmZXJ7ZnV6enlfbXNnaWRfcGx1cmFsfTsKICAgICAgICAgICAgICAgICRwby0+bXNnY3R4dCgkYnVmZmVye21zZ2N0eHR9KSAgICAgICAgICAgaWYgZGVmaW5lZCAkYnVmZmVye21zZ2N0eHR9OwogICAgICAgICAgICAgICAgJHBvLT5tc2dpZCgkYnVmZmVye21zZ2lkfSkgICAgICAgICAgICAgICBpZiBkZWZpbmVkICRidWZmZXJ7bXNnaWR9OwogICAgICAgICAgICAgICAgJHBvLT5tc2dpZF9wbHVyYWwoJGJ1ZmZlcnttc2dpZF9wbHVyYWx9KSBpZiBkZWZpbmVkICRidWZmZXJ7bXNnaWRfcGx1cmFsfTsKICAgICAgICAgICAgICAgICRwby0+bXNnc3RyKCRidWZmZXJ7bXNnc3RyfSkgICAgICAgICAgICAgaWYgZGVmaW5lZCAkYnVmZmVye21zZ3N0cn07CiAgICAgICAgICAgICAgICAkcG8tPm1zZ3N0cl9uKCRidWZmZXJ7bXNnc3RyX259KSAgICAgICAgIGlmIGRlZmluZWQgJGJ1ZmZlcnttc2dzdHJfbn07CgoKICAgICAgICAgICAgICAgICMgYXNoYXNoCiAgICAgICAgICAgICAgICBpZiAoJGFzaGFzaCkgewogICAgICAgICAgICAgICAgICAgICRlbnRyaWVzeyRwby0+bXNnaWR9ID0gJHBvCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcG8tPl9oYXNoX2tleV9vayhcJWVudHJpZXMpKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGFzYXJyYXkKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHB1c2goQGVudHJpZXMsICRwbyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdW5kZWYgJHBvOwogICAgICAgICAgICAgICAgdW5kZWYgJGxhc3RfYnVmZmVyOwogICAgICAgICAgICAgICAgJWJ1ZmZlciA9ICgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2lmICgvXiNccysoLiopLyBvciAvXiMoKSQvKSB7CgogICAgICAgICAgICAjIFRyYW5zbGF0b3IgY29tbWVudHMKICAgICAgICAgICAgJHBvID0gJGNsYXNzLT5uZXcoLWxvYWRlZF9saW5lX251bWJlciA9PiAkbGluZV9udW1iZXIpIHVubGVzcyBkZWZpbmVkKCRwbyk7CiAgICAgICAgICAgIGlmIChkZWZpbmVkKCRwby0+Y29tbWVudCkpIHsKICAgICAgICAgICAgICAgICRwby0+Y29tbWVudCgkcG8tPmNvbW1lbnQgLiAiXG4kMSIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJHBvLT5jb21tZW50KCQxKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoL14jXC5ccyooLiopLykgewoKICAgICAgICAgICAgIyBBdXRvbWF0aWMgY29tbWVudHMKICAgICAgICAgICAgJHBvID0gJGNsYXNzLT5uZXcoLWxvYWRlZF9saW5lX251bWJlciA9PiAkbGluZV9udW1iZXIpIHVubGVzcyBkZWZpbmVkKCRwbyk7CiAgICAgICAgICAgIGlmIChkZWZpbmVkKCRwby0+YXV0b21hdGljKSkgewogICAgICAgICAgICAgICAgJHBvLT5hdXRvbWF0aWMoJHBvLT5hdXRvbWF0aWMgLiAiXG4kMSIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJHBvLT5hdXRvbWF0aWMoJDEpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2lmICgvXiM6XHMrKC4qKS8pIHsKCiAgICAgICAgICAgICMgcmVmZXJlbmNlCiAgICAgICAgICAgICRwbyA9ICRjbGFzcy0+bmV3KC1sb2FkZWRfbGluZV9udW1iZXIgPT4gJGxpbmVfbnVtYmVyKSB1bmxlc3MgZGVmaW5lZCgkcG8pOwogICAgICAgICAgICBpZiAoZGVmaW5lZCgkcG8tPnJlZmVyZW5jZSkpIHsKICAgICAgICAgICAgICAgICRwby0+cmVmZXJlbmNlKCRwby0+cmVmZXJlbmNlIC4gIlxuJDEiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRwby0+cmVmZXJlbmNlKCQxKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoL14jLFxzKyguKikvKSB7CgogICAgICAgICAgICAjIGZsYWdzCiAgICAgICAgICAgIG15IEBmbGFncyA9IHNwbGl0IC9ccypbLF1ccyovLCAkMTsKICAgICAgICAgICAgJHBvID0gJGNsYXNzLT5uZXcoLWxvYWRlZF9saW5lX251bWJlciA9PiAkbGluZV9udW1iZXIpIHVubGVzcyBkZWZpbmVkKCRwbyk7CiAgICAgICAgICAgIGZvcmVhY2ggbXkgJGZsYWcgKEBmbGFncykgewogICAgICAgICAgICAgICAgJHBvLT5hZGRfZmxhZygkZmxhZyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKC9eIyh+KT9cfFxzK21zZ2N0eHRccysoLiopLykgewogICAgICAgICAgICAkcG8gPSAkY2xhc3MtPm5ldygtbG9hZGVkX2xpbmVfbnVtYmVyID0+ICRsaW5lX251bWJlcikgdW5sZXNzIGRlZmluZWQoJHBvKTsKICAgICAgICAgICAgJGJ1ZmZlcntmdXp6eV9tc2djdHh0fSA9ICRzZWxmLT5kZXF1b3RlKCQyKTsKICAgICAgICAgICAgJGxhc3RfYnVmZmVyID0gXCRidWZmZXJ7ZnV6enlfbXNnY3R4dH07CiAgICAgICAgICAgICRwby0+b2Jzb2xldGUoMSkgaWYgJDE7CiAgICAgICAgfQogICAgICAgIGVsc2lmICgvXiMofik/XHxccyttc2dpZFxzKyguKikvKSB7CiAgICAgICAgICAgICRwbyA9ICRjbGFzcy0+bmV3KC1sb2FkZWRfbGluZV9udW1iZXIgPT4gJGxpbmVfbnVtYmVyKSB1bmxlc3MgZGVmaW5lZCgkcG8pOwogICAgICAgICAgICAkYnVmZmVye2Z1enp5X21zZ2lkfSA9ICRzZWxmLT5kZXF1b3RlKCQyKTsKICAgICAgICAgICAgJGxhc3RfYnVmZmVyID0gXCRidWZmZXJ7ZnV6enlfbXNnaWR9OwogICAgICAgICAgICAkcG8tPm9ic29sZXRlKDEpIGlmICQxOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoL14jKH4pP1x8XHMrbXNnaWRfcGx1cmFsXHMrKC4qKS8pIHsKICAgICAgICAgICAgJHBvID0gJGNsYXNzLT5uZXcoLWxvYWRlZF9saW5lX251bWJlciA9PiAkbGluZV9udW1iZXIpIHVubGVzcyBkZWZpbmVkKCRwbyk7CiAgICAgICAgICAgICRidWZmZXJ7ZnV6enlfbXNnaWRfcGx1cmFsfSA9ICRzZWxmLT5kZXF1b3RlKCQyKTsKICAgICAgICAgICAgJGxhc3RfYnVmZmVyID0gXCRidWZmZXJ7ZnV6enlfbXNnaWRfcGx1cmFsfTsKICAgICAgICAgICAgJHBvLT5vYnNvbGV0ZSgxKSBpZiAkMTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKC9eKCN+XHMrKT9tc2djdHh0XHMrKC4qKS8pIHsKICAgICAgICAgICAgJHBvID0gJGNsYXNzLT5uZXcoLWxvYWRlZF9saW5lX251bWJlciA9PiAkbGluZV9udW1iZXIpIHVubGVzcyBkZWZpbmVkKCRwbyk7CiAgICAgICAgICAgICRidWZmZXJ7bXNnY3R4dH0gPSAkc2VsZi0+ZGVxdW90ZSgkMik7CiAgICAgICAgICAgICRsYXN0X2J1ZmZlciA9IFwkYnVmZmVye21zZ2N0eHR9OwogICAgICAgICAgICAkcG8tPm9ic29sZXRlKDEpIGlmICQxOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoL14oI35ccyspP21zZ2lkXHMrKC4qKS8pIHsKICAgICAgICAgICAgJHBvID0gJGNsYXNzLT5uZXcoLWxvYWRlZF9saW5lX251bWJlciA9PiAkbGluZV9udW1iZXIpIHVubGVzcyBkZWZpbmVkKCRwbyk7CiAgICAgICAgICAgICRidWZmZXJ7bXNnaWR9ID0gJHNlbGYtPmRlcXVvdGUoJDIpOwogICAgICAgICAgICAkbGFzdF9idWZmZXIgPSBcJGJ1ZmZlcnttc2dpZH07CiAgICAgICAgICAgICRwby0+b2Jzb2xldGUoMSkgaWYgJDE7CiAgICAgICAgfQogICAgICAgIGVsc2lmICgvXigjflxzKyk/bXNnaWRfcGx1cmFsXHMrKC4qKS8pIHsKICAgICAgICAgICAgJHBvID0gJGNsYXNzLT5uZXcoLWxvYWRlZF9saW5lX251bWJlciA9PiAkbGluZV9udW1iZXIpIHVubGVzcyBkZWZpbmVkKCRwbyk7CiAgICAgICAgICAgICRidWZmZXJ7bXNnaWRfcGx1cmFsfSA9ICRzZWxmLT5kZXF1b3RlKCQyKTsKICAgICAgICAgICAgJGxhc3RfYnVmZmVyID0gXCRidWZmZXJ7bXNnaWRfcGx1cmFsfTsKICAgICAgICAgICAgJHBvLT5vYnNvbGV0ZSgxKSBpZiAkMTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKC9eKD86I35ccyspP21zZ3N0clxzKyguKikvKSB7CgogICAgICAgICAgICAjIHRyYW5zbGF0ZWQgc3RyaW5nCiAgICAgICAgICAgICRidWZmZXJ7bXNnc3RyfSA9ICRzZWxmLT5kZXF1b3RlKCQxKTsKICAgICAgICAgICAgJGxhc3RfYnVmZmVyID0gXCRidWZmZXJ7bXNnc3RyfTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKC9eKD86I35ccyspP21zZ3N0clxbKFxkKylcXVxzKyguKikvKSB7CgogICAgICAgICAgICAjIHRyYW5zbGF0ZWQgc3RyaW5nCiAgICAgICAgICAgICRidWZmZXJ7bXNnc3RyX259eyQxfSA9ICRzZWxmLT5kZXF1b3RlKCQyKTsKICAgICAgICAgICAgJGxhc3RfYnVmZmVyID0gXCRidWZmZXJ7bXNnc3RyX259eyQxfTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKC9eKD86Iyg/On58flx8fFx8KVxzKyk/KCIuKikvKSB7CgogICAgICAgICAgICAjIGNvbnRpbnVlZCBzdHJpbmcuIEFjY291bnRzIGZvcjoKICAgICAgICAgICAgIyAgIG5vcm1hbCAgICAgICAgICA6ICJzdHJpbmciCiAgICAgICAgICAgICMgICBvYnNvbGV0ZSAgICAgICAgOiAjfiAic3RyaW5nIgogICAgICAgICAgICAjICAgZnV6enkgICAgICAgICAgIDogI3wgInN0cmluZyIKICAgICAgICAgICAgIyAgIGZ1enp5K29ic29sZXRlICA6ICN+fCAic3RyaW5nIgogICAgICAgICAgICAkJGxhc3RfYnVmZmVyIC49ICRzZWxmLT5kZXF1b3RlKCQxKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHdhcm4gIlN0cmFuZ2UgbGluZSBhdCAkZmlsZSBsaW5lICRsaW5lX251bWJlcjogWyRfXVxuIjsKICAgICAgICB9CiAgICB9CiAgICBpZiAoZGVmaW5lZCgkcG8pKSB7CgogICAgICAgICRwby0+bXNnY3R4dCgkYnVmZmVye21zZ2N0eHR9KQogICAgICAgICAgICBpZiBkZWZpbmVkICRidWZmZXJ7bXNnY3R4dH07CiAgICAgICAgJHBvLT5tc2dpZCgkYnVmZmVye21zZ2lkfSkKICAgICAgICAgICAgaWYgZGVmaW5lZCAkYnVmZmVye21zZ2lkfTsKICAgICAgICAkcG8tPm1zZ2lkX3BsdXJhbCgkYnVmZmVye21zZ2lkX3BsdXJhbH0pCiAgICAgICAgICAgIGlmIGRlZmluZWQgJGJ1ZmZlcnttc2dpZF9wbHVyYWx9OwogICAgICAgICRwby0+bXNnc3RyKCRidWZmZXJ7bXNnc3RyfSkKICAgICAgICAgICAgaWYgZGVmaW5lZCAkYnVmZmVye21zZ3N0cn07CiAgICAgICAgJHBvLT5tc2dzdHJfbigkYnVmZmVye21zZ3N0cl9ufSkKICAgICAgICAgICAgaWYgZGVmaW5lZCAkYnVmZmVye21zZ3N0cl9ufTsKCiAgICAgICAgIyBhc2hhc2gKICAgICAgICBpZiAoJGFzaGFzaCkgewogICAgICAgICAgICBpZiAoJHBvLT5faGFzaF9rZXlfb2soXCVlbnRyaWVzKSkgewogICAgICAgICAgICAgICAgJGVudHJpZXN7JHBvLT5tc2dpZH0gPSAkcG87CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYXNhcnJheQogICAgICAgIGVsc2UgewogICAgICAgICAgICBwdXNoKEBlbnRyaWVzLCAkcG8pOwogICAgICAgIH0KICAgIH0KICAgIGNsb3NlIElOOwogICAgcmV0dXJuICgkYXNoYXNoID8gXCVlbnRyaWVzIDogXEBlbnRyaWVzKTsKfQoKc3ViIF9oYXNoX2tleV9vayB7CiAgICBteSAoJHNlbGYsICRlbnRyaWVzKSA9IEBfOwoKICAgIG15ICRrZXkgPSAkc2VsZi0+bXNnaWQ7CgogICAgaWYgKCRlbnRyaWVzLT57JGtleX0pIHsKCiAgICAgICAgIyBkb24ndCBvdmVyd3JpdGUgbm9uLW9ic29sZXRlIGVudHJpZXMgd2l0aCBvYnNvbGV0ZSBvbmVzCiAgICAgICAgcmV0dXJuIGlmICgoJHNlbGYtPm9ic29sZXRlKSAmJiAobm90ICRlbnRyaWVzLT57JGtleX0tPm9ic29sZXRlKSk7CgogICAgICAgICMgZG9uJ3Qgb3ZlcndyaXRlIHRyYW5zbGF0ZWQgZW50cmllcyB3aXRoIHVudHJhbnNsYXRlZCBvbmVzCiAgICAgICAgcmV0dXJuIGlmICgoJHNlbGYtPm1zZ3N0ciAhfiAvXHcvKSAmJiAoJGVudHJpZXMtPnska2V5fS0+bXNnc3RyID1+IC9cdy8pKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKIyBBdXRvbG9hZCBtZXRob2RzIGdvIGFmdGVyID1jdXQsIGFuZCBhcmUgcHJvY2Vzc2VkIGJ5IHRoZSBhdXRvc3BsaXQgcHJvZ3JhbS4KCjE7Cl9fRU5EX18KCiMgQmVsb3cgaXMgdGhlIHN0dWIgb2YgZG9jdW1lbnRhdGlvbiBmb3IgeW91ciBtb2R1bGUuIFlvdSBiZXR0ZXIgZWRpdCBpdCEKCj1oZWFkMSBOQU1FCgpMb2NhbGU6OlBPIC0gUGVybCBtb2R1bGUgZm9yIG1hbmlwdWxhdGluZyAucG8gZW50cmllcyBmcm9tIEdOVSBnZXR0ZXh0Cgo9aGVhZDEgU1lOT1BTSVMKCiAgICB1c2UgTG9jYWxlOjpQTzsKCiAgICAkcG8gPSBuZXcgTG9jYWxlOjpQTyhbLW9wdGlvbj0+dmFsdWUsLi4uXSkKICAgIFskc3RyaW5nID1dICRwby0+bXNnaWQoW25ldyBzdHJpbmddKTsKICAgIFskc3RyaW5nID1dICRwby0+bXNnc3RyKFtuZXcgc3RyaW5nXSk7CiAgICBbJHN0cmluZyA9XSAkcG8tPmNvbW1lbnQoW25ldyBzdHJpbmddKTsKICAgIFskc3RyaW5nID1dICRwby0+YXV0b21hdGljKFtuZXcgc3RyaW5nXSk7CiAgICBbJHN0cmluZyA9XSAkcG8tPnJlZmVyZW5jZShbbmV3IHN0cmluZ10pOwogICAgWyR2YWx1ZSA9XSAkcG8tPmZ1enp5KFt2YWx1ZV0pOwogICAgWyR2YWx1ZSA9XSAkcG8tPmFkZF9mbGFnKCdjLWZvcm1hdCcpOwogICAgcHJpbnQgJHBvLT5kdW1wOwoKICAgICRxdW90ZWRfc3RyaW5nID0gJHBvLT5xdW90ZSgkc3RyaW5nKTsKICAgICRzdHJpbmcgPSAkcG8tPmRlcXVvdGUoJHF1b3RlZF9zdHJpbmcpOwoKICAgICRhcmVmID0gTG9jYWxlOjpQTy0+bG9hZF9maWxlX2FzYXJyYXkoPGZpbGVuYW1lPixbZW5jb2RpbmddKTsKICAgICRocmVmID0gTG9jYWxlOjpQTy0+bG9hZF9maWxlX2FzaGFzaCg8ZmlsZW5hbWU+LFtlbmNvZGluZ10pOwogICAgTG9jYWxlOjpQTy0+c2F2ZV9maWxlX2Zyb21hcnJheSg8ZmlsZW5hbWU+LCRhcmVmLFtlbmNvZGluZ10pOwogICAgTG9jYWxlOjpQTy0+c2F2ZV9maWxlX2Zyb21oYXNoKDxmaWxlbmFtZT4sJGhyZWYsW2VuY29kaW5nXSk7Cgo9aGVhZDEgREVTQ1JJUFRJT04KClRoaXMgbW9kdWxlIHNpbXBsaWZpZXMgbWFuYWdlbWVudCBvZiBHTlUgZ2V0dGV4dCAucG8gZmlsZXMgYW5kIGlzIGFuCmFsdGVybmF0aXZlIHRvIHVzaW5nIGVtYWNzIHBvLW1vZGUuIEl0IHByb3ZpZGVzIGFuIG9iamVjdC1vcmllbnRlZAppbnRlcmZhY2UgaW4gd2hpY2ggZWFjaCBlbnRyeSBpbiBhIC5wbyBmaWxlIGlzIGEgTG9jYWxlOjpQTyBvYmplY3QuCgo9aGVhZDEgTUVUSE9EUwoKPW92ZXIgNAoKPWl0ZW0gbmV3CgogICAgbXkgTG9jYWxlOjpQTyAkcG8gPSBuZXcgTG9jYWxlOjpQTzsKICAgIG15IExvY2FsZTo6UE8gJHBvID0gbmV3IExvY2FsZTo6UE8oJW9wdGlvbnMpOwoKQ3JlYXRlIGEgbmV3IExvY2FsZTo6UE8gb2JqZWN0IHRvIHJlcHJlc2VudCBhIHBvIGVudHJ5LgpZb3UgY2FuIG9wdGlvbmFsbHkgc2V0IHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBlbnRyeSBieSBwYXNzaW5nCmEgbGlzdC9oYXNoIG9mIHRoZSBmb3JtOgoKICAgIC1vcHRpb249PnZhbHVlLCAtb3B0aW9uPT52YWx1ZSwgZXRjLgoKV2hlcmUgb3B0aW9ucyBhcmUgbXNnaWQsIG1zZ2lkX3BsdXJhbCwgbXNnc3RyLCBtc2djdHh0LCBjb21tZW50LCBhdXRvbWF0aWMsCnJlZmVyZW5jZSwgZnV6enlfbXNnY3R4dCwgZnV6enlfbXNnaWQsIGZ1enp5X21zZ2lkX3BsdXJhbCwKZnV6enksIGFuZCBjLWZvcm1hdC4gU2VlIGFjY2Vzc29yIG1ldGhvZHMgYmVsb3cuCgpUbyBnZW5lcmF0ZSBhIHBvIGZpbGUgaGVhZGVyLCBhZGQgYW4gZW50cnkgd2l0aCBhbiBlbXB0eQptc2dpZCwgbGlrZSB0aGlzOgoKICAgICRwbyA9IG5ldyBMb2NhbGU6OlBPKC1tc2dpZD0+JycsIC1tc2dzdHI9PgogICAgICAgICJQcm9qZWN0LUlkLVZlcnNpb246IFBBQ0tBR0UgVkVSU0lPTlxcbiIgLgogICAgICAgICJQTy1SZXZpc2lvbi1EYXRlOiBZRUFSLU1PLURBIEhPOk1JICtaT05FXFxuIiAuCiAgICAgICAgIkxhc3QtVHJhbnNsYXRvcjogRlVMTCBOQU1FIDxFTUFJTEBBRERSRVNTPlxcbiIgLgogICAgICAgICJMYW5ndWFnZS1UZWFtOiBMQU5HVUFHRSA8TExAbGkub3JnPlxcbiIgLgogICAgICAgICJNSU1FLVZlcnNpb246IDEuMFxcbiIgLgogICAgICAgICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9Q0hBUlNFVFxcbiIgLgogICAgICAgICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBFTkNPRElOR1xcbiIpOwoKPWl0ZW0gbXNnaWQKClNldCBvciBnZXQgdGhlIHVudHJhbnNsYXRlZCBzdHJpbmcgZnJvbSB0aGUgb2JqZWN0LgoKVGhpcyBtZXRob2QgZXhwZWN0cyB0aGUgbmV3IHN0cmluZyBpbiB1bnF1b3RlZCBmb3JtIGJ1dCByZXR1cm5zIHRoZSBjdXJyZW50IHN0cmluZyBpbiBxdW90ZWQgZm9ybS4KCj1pdGVtIG1zZ2lkX3BsdXJhbAoKU2V0IG9yIGdldCB0aGUgdW50cmFuc2xhdGVkIHBsdXJhbCBzdHJpbmcgZnJvbSB0aGUgb2JqZWN0LgoKVGhpcyBtZXRob2QgZXhwZWN0cyB0aGUgbmV3IHN0cmluZyBpbiB1bnF1b3RlZCBmb3JtIGJ1dCByZXR1cm5zIHRoZSBjdXJyZW50IHN0cmluZyBpbiBxdW90ZWQgZm9ybS4KCj1pdGVtIG1zZ3N0cgoKU2V0IG9yIGdldCB0aGUgdHJhbnNsYXRlZCBzdHJpbmcgZnJvbSB0aGUgb2JqZWN0LgoKVGhpcyBtZXRob2QgZXhwZWN0cyB0aGUgbmV3IHN0cmluZyBpbiB1bnF1b3RlZCBmb3JtIGJ1dCByZXR1cm5zIHRoZSBjdXJyZW50IHN0cmluZyBpbiBxdW90ZWQgZm9ybS4KCj1pdGVtIG1zZ3N0cl9uCgpHZXQgb3Igc2V0IHRoZSB0cmFuc2xhdGlvbnMgaWYgdGhlcmUgYXJlIHB1cmFscyBpbnZvbHZlZC4gVGFrZXMgYW5kCnJldHVybnMgYSBoYXNocmVmIHdoZXJlIHRoZSBrZXlzIGFyZSB0aGUgJ04nIGNhc2UgYW5kIHRoZSB2YWx1ZXMgYXJlCnRoZSBzdHJpbmdzLiBlZzoKCiAgICAkcG8tPm1zZ3N0cl9uKAogICAgewogICAgICAgIDAgPT4gJ2ZvdW5kICVkIHBsdXJhbCB0cmFuc2xhdGlvbnMnLAogICAgICAgIDEgPT4gJ2ZvdW5kICVkIHNpbmd1bGFyIHRyYW5zbGF0aW9uJywKICAgIH0KICAgICk7CgpUaGlzIG1ldGhvZCBleHBlY3RzIHRoZSBuZXcgc3RyaW5ncyBpbiB1bnF1b3RlZCBmb3JtIGJ1dCByZXR1cm5zIHRoZSBjdXJyZW50IHN0cmluZ3MgaW4gcXVvdGVkIGZvcm0uCgo9aXRlbSBtc2djdHh0CgpTZXQgb3IgZ2V0IHRoZSB0cmFuc2xhdGlvbiBjb250ZXh0IHN0cmluZyBmcm9tIHRoZSBvYmplY3QuCgpUaGlzIG1ldGhvZCBleHBlY3RzIHRoZSBuZXcgc3RyaW5nIGluIHVucXVvdGVkIGZvcm0gYnV0IHJldHVybnMgdGhlIGN1cnJlbnQgc3RyaW5nIGluIHF1b3RlZCBmb3JtLgoKPWl0ZW0gZnV6enlfbXNnaWQKClNldCBvciBnZXQgdGhlIG91dGRhdGVkIHVudHJhbnNsYXRlZCBzdHJpbmcgZnJvbSB0aGUgb2JqZWN0LgoKVGhpcyBtZXRob2QgZXhwZWN0cyB0aGUgbmV3IHN0cmluZyBpbiB1bnF1b3RlZCBmb3JtIGJ1dCByZXR1cm5zIHRoZSBjdXJyZW50IHN0cmluZyBpbiBxdW90ZWQgZm9ybS4KCj1pdGVtIGZ1enp5X21zZ2lkX3BsdXJhbAoKU2V0IG9yIGdldCB0aGUgb3V0ZGF0ZWQgdW50cmFuc2xhdGVkIHBsdXJhbCBzdHJpbmcgZnJvbSB0aGUgb2JqZWN0LgoKVGhpcyBtZXRob2QgZXhwZWN0cyB0aGUgbmV3IHN0cmluZyBpbiB1bnF1b3RlZCBmb3JtIGJ1dCByZXR1cm5zIHRoZSBjdXJyZW50IHN0cmluZyBpbiBxdW90ZWQgZm9ybS4KCj1pdGVtIGZ1enp5X21zZ2N0eHQKClNldCBvciBnZXQgdGhlIG91dGRhdGVkIHRyYW5zbGF0aW9uIGNvbnRleHQgc3RyaW5nIGZyb20gdGhlIG9iamVjdC4KClRoaXMgbWV0aG9kIGV4cGVjdHMgdGhlIG5ldyBzdHJpbmcgaW4gdW5xdW90ZWQgZm9ybSBidXQgcmV0dXJucyB0aGUgY3VycmVudCBzdHJpbmcgaW4gcXVvdGVkIGZvcm0uCgo9aXRlbSBvYnNvbGV0ZQoKUmV0dXJucyAxIGlmIHRoZSBlbnRyeSBpcyBvYnNvbGV0ZS4KT2Jzb2xldGUgZW50cmllcyBoYXZlIHRoZWlyIG1zZ2lkLCBtc2dpZF9wbHVyYWwsIG1zZ3N0ciwgbXNnc3RyX24gYW5kIG1zZ2N0eHQgbGluZXMgY29tbWVudGVkIG91dCB3aXRoICIjfiIKCldoZW4gdXNpbmcgbG9hZF9maWxlX2FzaGFzaCwgbm9uLW9ic29sZXRlIGVudHJpZXMgd2lsbCBhbHdheXMgcmVwbGFjZSBvYnNvbGV0ZSBlbnRyaWVzIHdpdGggdGhlIHNhbWUgbXNnaWQuCgo9aXRlbSBjb21tZW50CgpTZXQgb3IgZ2V0IHRyYW5zbGF0b3IgY29tbWVudHMgZnJvbSB0aGUgb2JqZWN0LgoKSWYgdGhlcmUgYXJlIG5vIHN1Y2ggY29tbWVudHMsIHRoZW4gdGhlIHZhbHVlIGlzIHVuZGVmLiAgT3RoZXJ3aXNlLAp0aGUgdmFsdWUgaXMgYSBzdHJpbmcgdGhhdCBjb250YWlucyB0aGUgY29tbWVudCBsaW5lcyBkZWxpbWl0ZWQgd2l0aAoiXG4iLiAgVGhlIHN0cmluZyBpbmNsdWRlcyBuZWl0aGVyIHRoZSBTPCIjICI+IGF0IHRoZSBiZWdpbm5pbmcgb2YKZWFjaCBjb21tZW50IGxpbmUgbm9yIHRoZSBuZXdsaW5lIGF0IHRoZSBlbmQgb2YgdGhlIGxhc3QgY29tbWVudCBsaW5lLgoKPWl0ZW0gYXV0b21hdGljCgpTZXQgb3IgZ2V0IGF1dG9tYXRpYyBjb21tZW50cyBmcm9tIHRoZSBvYmplY3QgKGluc2VydGVkIGJ5CmVtYWNzIHBvLW1vZGUgb3IgeGdldHRleHQpLgoKSWYgdGhlcmUgYXJlIG5vIHN1Y2ggY29tbWVudHMsIHRoZW4gdGhlIHZhbHVlIGlzIHVuZGVmLiAgT3RoZXJ3aXNlLAp0aGUgdmFsdWUgaXMgYSBzdHJpbmcgdGhhdCBjb250YWlucyB0aGUgY29tbWVudCBsaW5lcyBkZWxpbWl0ZWQgd2l0aAoiXG4iLiAgVGhlIHN0cmluZyBpbmNsdWRlcyBuZWl0aGVyIHRoZSBTPCIjLiAiPiBhdCB0aGUgYmVnaW5uaW5nIG9mCmVhY2ggY29tbWVudCBsaW5lIG5vciB0aGUgbmV3bGluZSBhdCB0aGUgZW5kIG9mIHRoZSBsYXN0IGNvbW1lbnQgbGluZS4KCj1pdGVtIHJlZmVyZW5jZQoKU2V0IG9yIGdldCByZWZlcmVuY2UgbWFya2luZyBjb21tZW50cyBmcm9tIHRoZSBvYmplY3QgKGluc2VydGVkCmJ5IGVtYWNzIHBvLW1vZGUgb3IgZ2V0dGV4dCkuCgo9aXRlbSBmdXp6eQoKU2V0IG9yIGdldCB0aGUgZnV6enkgZmxhZyBvbiB0aGUgb2JqZWN0ICgiY2hlY2sgdGhpcyB0cmFuc2xhdGlvbiIpLgpXaGVuIHNldHRpbmcsIHVzZSAxIHRvIHR1cm4gb24gZnV6enksIGFuZCAwIHRvIHR1cm4gaXQgb2ZmLgoKPWl0ZW0gY19mb3JtYXQKClNldCBvciBnZXQgdGhlIGMtZm9ybWF0IG9yIG5vLWMtZm9ybWF0IGZsYWcgb24gdGhlIG9iamVjdC4KClRoaXMgY2FuIHRha2UgMyB2YWx1ZXM6CjEgaW1wbGllcyBjLWZvcm1hdCwgMCBpbXBsaWVzIG5vLWMtZm9ybWF0LCBhbmQgdW5kZWZpbmVkIGltcGxpZXMgbmVpdGhlci4KCj1pdGVtIHBocF9mb3JtYXQKClNldCBvciBnZXQgdGhlIHBocC1mb3JtYXQgb3Igbm8tcGhwLWZvcm1hdCBmbGFnIG9uIHRoZSBvYmplY3QuCgpUaGlzIGNhbiB0YWtlIDMgdmFsdWVzOgoxIGltcGxpZXMgcGhwLWZvcm1hdCwgMCBpbXBsaWVzIG5vLXBocC1mb3JtYXQsIGFuZCB1bmRlZmluZWQgaW1wbGllcyBuZWl0aGVyLgoKPWl0ZW0gaGFzX2ZsYWcKCiAgICBpZiAoJHBvLT5oYXNfZmxhZygncGVybC1mb3JtYXQnKSkgewogICAgICAgIC4uLgogICAgfQoKUmV0dXJucyB0cnVlIGlmIHRoZSBmbGFnIGV4aXN0cyBpbiB0aGUgZW50cnkncyAjfiBjb21tZW50Cgo9aXRlbSBhZGRfZmxhZwoKICAgICRwby0+YWRkX2ZsYWcoJ3BlcmwtZm9ybWF0Jyk7CgpBZGRzIHRoZSBmbGFnIHRvIHRoZSAjfiBjb21tZW50Cgo9aXRlbSByZW1vdmVfZmxhZwoKICAgICRwby0+cmVtb3ZlX2ZsYWcoJ3BlcmwtZm9ybWF0Jyk7CgpSZW1vdmVzIHRoZSBmbGFnIGZyb20gdGhlICN+IGNvbW1lbnQKCj1pdGVtIGxvYWRlZF9saW5lX251bWJlcgoKV2hlbiB1c2luZyBvbmUgb2YgdGhlIGxvYWRfZmlsZV9hcyogbWV0aG9kcywKdGhpcyB3aWxsIHJldHVybiB0aGUgbGluZSBudW1iZXIgdGhhdCB0aGUgZW50cnkgc3RhcnRlZCBhdCBpbiB0aGUgZmlsZS4KCj1pdGVtIGR1bXAKClJldHVybnMgdGhlIGVudHJ5IGFzIGEgc3RyaW5nLCBzdWl0YWJsZSBmb3Igb3V0cHV0IHRvIGEgcG8gZmlsZS4KCj1pdGVtIHF1b3RlCgpBcHBsaWVzIHBvIHF1b3RhdGlvbiBydWxlcyB0byBhIHN0cmluZywgYW5kIHJldHVybnMgdGhlIHF1b3RlZApzdHJpbmcuIFRoZSBxdW90ZWQgc3RyaW5nIHdpbGwgaGF2ZSBhbGwgZXhpc3RpbmcgZG91YmxlLXF1b3RlCmNoYXJhY3RlcnMgZXNjYXBlZCBieSBiYWNrc2xhc2hlcywgYW5kIHdpbGwgYmUgZW5jbG9zZWQgaW4gZG91YmxlCnF1b3Rlcy4KCj1pdGVtIGRlcXVvdGUKClJldHVybnMgYSBxdW90ZWQgcG8gc3RyaW5nIHRvIGl0cyBuYXR1cmFsIGZvcm0uCgo9aXRlbSBsb2FkX2ZpbGVfYXNhcnJheQoKR2l2ZW4gdGhlIGZpbGVuYW1lIG9mIGEgcG8tZmlsZSwgcmVhZHMgdGhlIGZpbGUgYW5kIHJldHVybnMgYQpyZWZlcmVuY2UgdG8gYSBsaXN0IG9mIExvY2FsZTo6UE8gb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb250ZW50cyBvZgp0aGUgZmlsZSwgaW4gdGhlIHNhbWUgb3JkZXIuICBBY2NlcHRzIGFuIG9wdGlvbmFsIGVuY29kaW5nIHBhcmFtZXRlciAoZS5nLgoidXRmOCIpIHdoaWNoIGRlZmluZXMgaG93IHRoZSBwby1maWxlJ3MgaW5wdXQgc3RyZWFtIHdpbGwgYmUgY29uZmlndXJlZC4KCj1pdGVtIGxvYWRfZmlsZV9hc2hhc2gKCkdpdmVuIHRoZSBmaWxlbmFtZSBvZiBhIHBvLWZpbGUsIHJlYWRzIHRoZSBmaWxlIGFuZCByZXR1cm5zIGEKcmVmZXJlbmNlIHRvIGEgaGFzaCBvZiBMb2NhbGU6OlBPIG9iamVjdHMgY29ycmVzcG9uZGluZyB0byB0aGUgY29udGVudHMgb2YKdGhlIGZpbGUuIFRoZSBoYXNoIGtleXMgYXJlIHRoZSB1bnRyYW5zbGF0ZWQgc3RyaW5ncywgc28gdGhpcyBpcyBhIGNoZWFwCndheSB0byByZW1vdmUgZHVwbGljYXRlcy4gVGhlIG1ldGhvZCB3aWxsIHByZWZlciB0byBrZWVwIGVudHJpZXMgdGhhdApoYXZlIGJlZW4gdHJhbnNsYXRlZC4gIEFjY2VwdHMgYW4gb3B0aW9uYWwgZW5jb2RpbmcgcGFyYW1ldGVyIChlLmcuCiJ1dGY4Iikgd2hpY2ggZGVmaW5lcyBob3cgdGhlIHBvLWZpbGUncyBpbnB1dCBzdHJlYW0gd2lsbCBiZSBjb25maWd1cmVkLgoKPWl0ZW0gc2F2ZV9maWxlX2Zyb21hcnJheQoKR2l2ZW4gYSBmaWxlbmFtZSBhbmQgYSByZWZlcmVuY2UgdG8gYSBsaXN0IG9mIExvY2FsZTo6UE8gb2JqZWN0cywKc2F2ZXMgdGhvc2Ugb2JqZWN0cyB0byB0aGUgZmlsZSwgY3JlYXRpbmcgYSBwby1maWxlLiAgQWNjZXB0cyBhbiBvcHRpb25hbAplbmNvZGluZyBwYXJhbWV0ZXIgKGUuZy4gInV0ZjgiKSB3aGljaCBkZWZpbmVzIGhvdyB0aGUgcG8tZmlsZSdzIG91dHB1dApzdHJlYW0gd2lsbCBiZSBjb25maWd1cmVkLgoKPWl0ZW0gc2F2ZV9maWxlX2Zyb21oYXNoCgpHaXZlbiBhIGZpbGVuYW1lIGFuZCBhIHJlZmVyZW5jZSB0byBhIGhhc2ggb2YgTG9jYWxlOjpQTyBvYmplY3RzLApzYXZlcyB0aG9zZSBvYmplY3RzIHRvIHRoZSBmaWxlLCBjcmVhdGluZyBhIHBvLWZpbGUuIFRoZSBlbnRyaWVzCmFyZSBzb3J0ZWQgYWxwaGFiZXRpY2FsbHkgYnkgdW50cmFuc2xhdGVkIHN0cmluZy4gIEFjY2VwdHMgYW4gb3B0aW9uYWwKZW5jb2RpbmcgcGFyYW1ldGVyIChlLmcuICJ1dGY4Iikgd2hpY2ggZGVmaW5lcyBob3cgdGhlIHBvLWZpbGUncyBvdXRwdXQKc3RyZWFtIHdpbGwgYmUgY29uZmlndXJlZC4KCj1iYWNrCgo9aGVhZDEgQVVUSE9SCgpNYWludGFpbmVyOiBLZW4gUHJvd3MsIHBlcmxAeGV2Lm5ldAoKT3JpZ2luYWwgdmVyc2lvbiBieTogQWxhbiBTY2h3YXJ0eiwgYWxhbnN6QHBlbm5tdXNoLm9yZwoKPWhlYWQxIEJVR1MKCklmIHlvdSBsb2FkX2ZpbGVfYXMqIHRoZW4gc2F2ZV9maWxlX2Zyb20qLCB0aGUgb3V0cHV0IGZpbGUgbWF5IGhhdmUgc2xpZ2h0CmNvc21ldGljIGRpZmZlcmVuY2VzIGZyb20gdGhlIGlucHV0IGZpbGUgKGFuIGV4dHJhIGJsYW5rIGxpbmUgaGVyZSBvciB0aGVyZSkuCgptc2dpZCwgbXNnaWRfcGx1cmFsLCBtc2dzdHIsIG1zZ3N0cl9uIGFuZCBtc2djdHh0IGV4cGVjdCBhIG5vbi1xdW90ZWQgc3RyaW5nIGFzIGlucHV0LCBidXQgcmV0dXJuIHF1b3RlZCBzdHJpbmdzLgpJJ20gaGVzaXRhbnQgdG8gY2hhbmdlIHRoaXMgaW4gZmVhciBvZiBicmVha2luZyB0aGUgbW9kdWxlcy9zY3JpcHRzIG9mIHBlb3BsZSBhbHJlYWR5IHVzaW5nIExvY2FsZTo6UE8uCgpMb2NhbGU6OlBPIHJlcXVpcmVzIGJsYW5rIGxpbmVzIGJldHdlZW4gZW50cmllcywgYnV0IFVuaWZvcnVtIHN0eWxlIFBPCmZpbGVzIGRvbid0IGhhdmUgYW55LgoKUGxlYXNlIHN1Ym1pdCBhbGwgYnVnIHJlcXVlc3RzIHVzaW5nIENQQU4ncyB0aWNrZXRpbmcgc3lzdGVtLgoKPWhlYWQxIFNFRSBBTFNPCgp4Z2V0dGV4dCgxKS4KCj1jdXQK</File>
        <File Location="Kernel/cpan-lib/Perl/Tidy.pod" Permission="660" Encode="Base64">PWhlYWQxIE5BTUUKClBlcmw6OlRpZHkgLSBQYXJzZXMgYW5kIGJlYXV0aWZpZXMgcGVybCBzb3VyY2UKCj1oZWFkMSBTWU5PUFNJUwoKICAgIHVzZSBQZXJsOjpUaWR5OwoKICAgIG15ICRlcnJvcl9mbGFnID0gUGVybDo6VGlkeTo6cGVybHRpZHkoCiAgICAgICAgc291cmNlICAgICAgICAgICAgPT4gJHNvdXJjZSwKICAgICAgICBkZXN0aW5hdGlvbiAgICAgICA9PiAkZGVzdGluYXRpb24sCiAgICAgICAgc3RkZXJyICAgICAgICAgICAgPT4gJHN0ZGVyciwKICAgICAgICBhcmd2ICAgICAgICAgICAgICA9PiAkYXJndiwKICAgICAgICBwZXJsdGlkeXJjICAgICAgICA9PiAkcGVybHRpZHlyYywKICAgICAgICBsb2dmaWxlICAgICAgICAgICA9PiAkbG9nZmlsZSwKICAgICAgICBlcnJvcmZpbGUgICAgICAgICA9PiAkZXJyb3JmaWxlLAogICAgICAgIHRlZWZpbGUgICAgICAgICAgID0+ICR0ZWVmaWxlLAogICAgICAgIGRlYnVnZmlsZSAgICAgICAgID0+ICRkZWJ1Z2ZpbGUsCiAgICAgICAgZm9ybWF0dGVyICAgICAgICAgPT4gJGZvcm1hdHRlciwgICAgICAgICAgICMgY2FsbGJhY2sgb2JqZWN0IChzZWUgYmVsb3cpCiAgICAgICAgZHVtcF9vcHRpb25zICAgICAgPT4gJGR1bXBfb3B0aW9ucywKICAgICAgICBkdW1wX29wdGlvbnNfdHlwZSA9PiAkZHVtcF9vcHRpb25zX3R5cGUsCiAgICAgICAgcHJlZmlsdGVyICAgICAgICAgPT4gJHByZWZpbHRlcl9jb2RlcmVmLAogICAgICAgIHBvc3RmaWx0ZXIgICAgICAgID0+ICRwb3N0ZmlsdGVyX2NvZGVyZWYsCiAgICApOwoKPWhlYWQxIERFU0NSSVBUSU9OCgpUaGlzIG1vZHVsZSBtYWtlcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgcGVybHRpZHkgdXRpbGl0eSBhdmFpbGFibGUgdG8gcGVybApzY3JpcHRzLiAgQW55IG9yIGFsbCBvZiB0aGUgaW5wdXQgcGFyYW1ldGVycyBtYXkgYmUgb21pdHRlZCwgaW4gd2hpY2ggY2FzZSB0aGUKQEFSR1YgYXJyYXkgd2lsbCBiZSB1c2VkIHRvIHByb3ZpZGUgaW5wdXQgcGFyYW1ldGVycyBhcyBkZXNjcmliZWQKaW4gdGhlIHBlcmx0aWR5KDEpIG1hbiBwYWdlLgoKRm9yIGV4YW1wbGUsIHRoZSBwZXJsdGlkeSBzY3JpcHQgaXMgYmFzaWNhbGx5IGp1c3QgdGhpczoKCiAgICB1c2UgUGVybDo6VGlkeTsKICAgIFBlcmw6OlRpZHk6OnBlcmx0aWR5KCk7CgpUaGUgY2FsbCB0byBCPHBlcmx0aWR5PiByZXR1cm5zIGEgc2NhbGFyIEI8JGVycm9yX2ZsYWc+IHdoaWNoIGlzIFRSVUUgaWYgYW4KZXJyb3IgY2F1c2VkIHByZW1hdHVyZSB0ZXJtaW5hdGlvbiwgYW5kIEZBTFNFIGlmIHRoZSBwcm9jZXNzIHJhbiB0byBub3JtYWwKY29tcGxldGlvbi4gIEFkZGl0aW9uYWwgZGlzY3VzcyBvZiBlcnJvcnMgaXMgY29udGFpbmVkIGJlbG93IGluIHRoZSBMPEVSUk9SCkhBTkRMSU5HPiBzZWN0aW9uLgoKVGhlIG1vZHVsZSBhY2NlcHRzIGlucHV0IGFuZCBvdXRwdXQgc3RyZWFtcyBieSBhIHZhcmlldHkgb2YgbWV0aG9kcy4KVGhlIGZvbGxvd2luZyBsaXN0IG9mIHBhcmFtZXRlcnMgbWF5IGJlIGFueSBvZiB0aGUgZm9sbG93aW5nOiBhCmZpbGVuYW1lLCBhbiBBUlJBWSByZWZlcmVuY2UsIGEgU0NBTEFSIHJlZmVyZW5jZSwgb3IgYW4gb2JqZWN0IHdpdGgKZWl0aGVyIGEgQjxnZXRsaW5lPiBvciBCPHByaW50PiBtZXRob2QsIGFzIGFwcHJvcHJpYXRlLgoKICAgICAgICBzb3VyY2UgICAgICAgICAgICAtIHRoZSBzb3VyY2Ugb2YgdGhlIHNjcmlwdCB0byBiZSBmb3JtYXR0ZWQKICAgICAgICBkZXN0aW5hdGlvbiAgICAgICAtIHRoZSBkZXN0aW5hdGlvbiBvZiB0aGUgZm9ybWF0dGVkIG91dHB1dAogICAgICAgIHN0ZGVyciAgICAgICAgICAgIC0gc3RhbmRhcmQgZXJyb3Igb3V0cHV0CiAgICAgICAgcGVybHRpZHlyYyAgICAgICAgLSB0aGUgLnBlcmx0aWR5cmMgZmlsZQogICAgICAgIGxvZ2ZpbGUgICAgICAgICAgIC0gdGhlIC5MT0cgZmlsZSBzdHJlYW0sIGlmIGFueSAKICAgICAgICBlcnJvcmZpbGUgICAgICAgICAtIHRoZSAuRVJSIGZpbGUgc3RyZWFtLCBpZiBhbnkKICAgICAgICBkdW1wX29wdGlvbnMgICAgICAtIHJlZiB0byBhIGhhc2ggdG8gcmVjZWl2ZSBwYXJhbWV0ZXJzIChzZWUgYmVsb3cpLCAKICAgICAgICBkdW1wX29wdGlvbnNfdHlwZSAtIGNvbnRyb2xzIGNvbnRlbnRzIG9mIGR1bXBfb3B0aW9ucwogICAgICAgIGR1bXBfZ2V0b3B0X2ZsYWdzIC0gcmVmIHRvIGEgaGFzaCB0byByZWNlaXZlIEdldG9wdCBmbGFncwogICAgICAgIGR1bXBfb3B0aW9uc19jYXRlZ29yeSAtIHJlZiB0byBhIGhhc2ggZ2l2aW5nIGNhdGVnb3J5IG9mIG9wdGlvbnMKICAgICAgICBkdW1wX2FiYnJldmlhdGlvbnMgICAgLSByZWYgdG8gYSBoYXNoIGdpdmluZyBhbGwgYWJicmV2aWF0aW9ucwoKVGhlIGZvbGxvd2luZyBjaGFydCBpbGx1c3RyYXRlcyB0aGUgbG9naWMgdXNlZCB0byBkZWNpZGUgaG93IHRvCnRyZWF0IGEgcGFyYW1ldGVyLgoKICAgcmVmKCRwYXJhbSkgICRwYXJhbSBpcyBhc3N1bWVkIHRvIGJlOgogICAtLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIHVuZGVmICAgICAgICBhIGZpbGVuYW1lCiAgIFNDQUxBUiAgICAgICByZWYgdG8gc3RyaW5nCiAgIEFSUkFZICAgICAgICByZWYgdG8gYXJyYXkKICAgKG90aGVyKSAgICAgIG9iamVjdCB3aXRoIGdldGxpbmUgKGlmIHNvdXJjZSkgb3IgcHJpbnQgbWV0aG9kCgpJZiB0aGUgcGFyYW1ldGVyIGlzIGFuIG9iamVjdCwgYW5kIHRoZSBvYmplY3QgaGFzIGEgQjxjbG9zZT4gbWV0aG9kLCB0aGF0CmNsb3NlIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBhdCB0aGUgZW5kIG9mIHRoZSBzdHJlYW0uCgo9b3ZlciA0Cgo9aXRlbSBzb3VyY2UKCklmIHRoZSBCPHNvdXJjZT4gcGFyYW1ldGVyIGlzIGdpdmVuLCBpdCBkZWZpbmVzIHRoZSBzb3VyY2Ugb2YgdGhlIGlucHV0IHN0cmVhbS4KSWYgYW4gaW5wdXQgc3RyZWFtIGlzIGRlZmluZWQgd2l0aCB0aGUgQjxzb3VyY2U+IHBhcmFtZXRlciB0aGVuIG5vIG90aGVyIHNvdXJjZQpmaWxlbmFtZXMgbWF5IGJlIHNwZWNpZmllZCBpbiB0aGUgQEFSR1YgYXJyYXkgb3IgQjxhcmd2PiBwYXJhbWV0ZXIuCgo9aXRlbSBkZXN0aW5hdGlvbgoKSWYgdGhlIEI8ZGVzdGluYXRpb24+IHBhcmFtZXRlciBpcyBnaXZlbiwgaXQgd2lsbCBiZSB1c2VkIHRvIGRlZmluZSB0aGUKZmlsZSBvciBtZW1vcnkgbG9jYXRpb24gdG8gcmVjZWl2ZSBvdXRwdXQgb2YgcGVybHRpZHkuICAKCj1pdGVtIHN0ZGVycgoKVGhlIEI8c3RkZXJyPiBwYXJhbWV0ZXIgYWxsb3dzIHRoZSBjYWxsaW5nIHByb2dyYW0gdG8gcmVkaXJlY3QgdGhlIHN0cmVhbSB0aGF0CndvdWxkIG90aGVyd2lzZSBnbyB0byB0aGUgc3RhbmRhcmQgZXJyb3Igb3V0cHV0IGRldmljZSB0byBhbnkgb2YgdGhlIHN0cmVhbQp0eXBlcyBsaXN0ZWQgYWJvdmUuICBUaGlzIHN0cmVhbSBjb250YWlucyBpbXBvcnRhbnQgd2FybmluZ3MgYW5kIGVycm9ycyAKcmVsYXRlZCB0byB0aGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gcGVybHRpZHkuCgo9aXRlbSBwZXJsdGlkeXJjCgpJZiB0aGUgQjxwZXJsdGlkeXJjPiBmaWxlIGlzIGdpdmVuLCBpdCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiBhbnkKRjwucGVybHRpZHlyYz4gY29uZmlndXJhdGlvbiBmaWxlIHRoYXQgd291bGQgb3RoZXJ3aXNlIGJlIHVzZWQuIAoKPWl0ZW0gZXJyb3JmaWxlCgpUaGUgQjxlcnJvcmZpbGU+IHBhcmFtZXRlciBhbGxvd3MgdGhlIGNhbGxpbmcgcHJvZ3JhbSB0byBjYXB0dXJlCnRoZSBzdHJlYW0gdGhhdCB3b3VsZCBvdGhlcndpc2UgZ28gdG8gZWl0aGVyIGEgLkVSUiBmaWxlLiAgVGhpcwpzdHJlYW0gY29udGFpbnMgd2FybmluZ3Mgb3IgZXJyb3JzIHJlbGF0ZWQgdG8gdGhlIGNvbnRlbnRzIG9mIG9uZQpzb3VyY2UgZmlsZSBvciBzdHJlYW0uIAoKVGhlIHJlYXNvbiB0aGF0IHRoaXMgaXMgZGlmZmVyZW50IGZyb20gdGhlIHN0ZGVyciBzdHJlYW0gaXMgdGhhdCB3aGVuIHBlcmx0aWR5CmlzIGNhbGxlZCB0byBwcm9jZXNzIG11bHRpcGxlIGZpbGVzIHRoZXJlIHdpbGwgYmUgdXAgdG8gb25lIC5FUlIgZmlsZSBjcmVhdGVkCmZvciBlYWNoIGZpbGUgYW5kIGl0IHdvdWxkIGJlIHZlcnkgY29uZnVzaW5nIGlmIHRoZXkgd2VyZSBjb21iaW5lZC4gIAoKSG93ZXZlciBpZiBwZXJsdGlkeSBpcyBjYWxsZWQgdG8gcHJvY2VzcyBqdXN0IGEgc2luZ2xlIHBlcmwgc2NyaXB0IHRoZW4gaXQgbWF5CmJlIG1vcmUgY29udmVuaWVudCB0byBjb21iaW5lIHRoZSBCPGVycm9yZmlsZT4gc3RyZWFtIHdpdGggdGhlIEI8c3RkZXJyPgpzdHJlYW0uICBUaGlzIGNhbiBiZSBkb25lIGJ5IHNldHRpbmcgdGhlIEI8LXNlPiBwYXJhbWV0ZXIsIGluIHdoaWNoIGNhc2UgdGhpcwpwYXJhbWV0ZXIgaXMgaWdub3JlZC4KCj1pdGVtIGxvZ2ZpbGUKClRoZSBCPGxvZ2ZpbGU+IHBhcmFtZXRlciBhbGxvd3MgdGhlIGNhbGxpbmcgcHJvZ3JhbSB0byBjYXB0dXJlIHRoZSBsb2cgc3RyZWFtLgpUaGlzIHN0cmVhbSBpcyBvbmx5IGNyZWF0ZWQgaWYgcmVxdWVzdGVkIHdpdGggYSBCPC1nPiBwYXJhbWV0ZXIuICBJdCBjb250YWlucwpkZXRhaWxlZCBkaWFnbm9zdGljIGluZm9ybWF0aW9uIGFib3V0IGEgc2NyaXB0IHdoaWNoIG1heSBiZSB1c2VmdWwgZm9yCmRlYnVnZ2luZy4KCj1pdGVtIHRlZWZpbGUKClRoZSBCPHRlZWZpbGU+IHBhcmFtZXRlciBhbGxvd3MgdGhlIGNhbGxpbmcgcHJvZ3JhbSB0byBjYXB0dXJlIHRoZSB0ZWUgc3RyZWFtLgpUaGlzIHN0cmVhbSBpcyBvbmx5IGNyZWF0ZWQgaWYgcmVxdWVzdGVkIHdpdGggb25lIG9mIHRoZSAndGVlJyBwYXJhbWV0ZXJzLAphIEI8LS10ZWUtcG9kPiAsIEI8LS10ZWUtYmxvY2stY29tbWVudHM+LCBCPC0tdGVlLXNpZGUtY29tbW50cz4sIG9yIEI8LS10ZWUtYWxsLWNvbW1lbnRzPi4KCj1pdGVtIGRlYnVnZmlsZQoKVGhlIEI8ZGVidWdmaWxlPiBwYXJhbWV0ZXIgYWxsb3dzIHRoZSBjYWxsaW5nIHByb2dyYW0gdG8gY2FwdHVyZSB0aGUgc3RyZWFtCnByb2R1Y2VkIGJ5IHRoZSBCPC0tREVCVUc+IHBhcmFtZXRlci4gIFRoaXMgcGFyYW1ldGVyIGlzIG1haW5seSB1c2VkIGZvciAKZGVidWdnaW5nIHBlcmx0aWR5IGl0c2VsZi4KCj1pdGVtIGFyZ3YKCklmIHRoZSBCPGFyZ3Y+IHBhcmFtZXRlciBpcyBnaXZlbiwgaXQgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlCkI8QEFSR1Y+IGFycmF5LiAgVGhlIEI8YXJndj4gcGFyYW1ldGVyIG1heSBiZSBhIHN0cmluZywgYSByZWZlcmVuY2UgdG8gYQpzdHJpbmcsIG9yIGEgcmVmZXJlbmNlIHRvIGFuIGFycmF5LiAgSWYgaXQgaXMgYSBzdHJpbmcgb3IgcmVmZXJlbmNlIHRvIGEKc3RyaW5nLCBpdCB3aWxsIGJlIHBhcnNlZCBpbnRvIGFuIGFycmF5IG9mIGl0ZW1zIGp1c3QgYXMgaWYgaXQgd2VyZSBhCmNvbW1hbmQgbGluZSBzdHJpbmcuCgo9aXRlbSBkdW1wX29wdGlvbnMKCklmIHRoZSBCPGR1bXBfb3B0aW9ucz4gcGFyYW1ldGVyIGlzIGdpdmVuLCBpdCBtdXN0IGJlIHRoZSByZWZlcmVuY2UgdG8gYSBoYXNoLgpJbiB0aGlzIGNhc2UsIHRoZSBwYXJhbWV0ZXJzIGNvbnRhaW5lZCBpbiBhbnkgcGVybHRpZHlyYyBjb25maWd1cmF0aW9uIGZpbGUKd2lsbCBiZSBwbGFjZWQgaW4gdGhpcyBoYXNoIGFuZCBwZXJsdGlkeSB3aWxsIHJldHVybiBpbW1lZGlhdGVseS4gIFRoaXMgaXMKZXF1aXZhbGVudCB0byBydW5uaW5nIHBlcmx0aWR5IHdpdGggLS1kdW1wLW9wdGlvbnMsIGV4Y2VwdCB0aGF0IHRoZSBwYXJhbWV0ZXJzCmFyZSByZXR1cm5lZCBpbiBhIGhhc2ggcmF0aGVyIHRoYW4gZHVtcGVkIHRvIHN0YW5kYXJkIG91dHB1dC4gIEFsc28sIGJ5IGRlZmF1bHQKb25seSB0aGUgcGFyYW1ldGVycyBpbiB0aGUgcGVybHRpZHlyYyBmaWxlIGFyZSByZXR1cm5lZCwgYnV0IHRoaXMgY2FuIGJlCmNoYW5nZWQgKHNlZSB0aGUgbmV4dCBwYXJhbWV0ZXIpLiAgVGhpcyBwYXJhbWV0ZXIgcHJvdmlkZXMgYSBjb252ZW5pZW50IG1ldGhvZApmb3IgZXh0ZXJuYWwgcHJvZ3JhbXMgdG8gcmVhZCBhIHBlcmx0aWR5cmMgZmlsZS4gIEFuIGV4YW1wbGUgcHJvZ3JhbSB1c2luZwp0aGlzIGZlYXR1cmUsIEY8cGVybHRpZHlyY19kdW1wLnBsPiwgaXMgaW5jbHVkZWQgaW4gdGhlIGRpc3RyaWJ1dGlvbi4KCkFueSBjb21iaW5hdGlvbiBvZiB0aGUgQjxkdW1wXz4gcGFyYW1ldGVycyBtYXkgYmUgdXNlZCB0b2dldGhlci4KCj1pdGVtIGR1bXBfb3B0aW9uc190eXBlCgpUaGlzIHBhcmFtZXRlciBpcyBhIHN0cmluZyB3aGljaCBjYW4gYmUgdXNlZCB0byBjb250cm9sIHRoZSBwYXJhbWV0ZXJzIHBsYWNlZAppbiB0aGUgaGFzaCByZWZlcmVuY2Ugc3VwcGxpZWQgYnkgQjxkdW1wX29wdGlvbnM+LiAgVGhlIHBvc3NpYmxlIHZhbHVlcyBhcmUKJ3Blcmx0aWR5cmMnIChkZWZhdWx0KSBhbmQgJ2Z1bGwnLiAgVGhlICdmdWxsJyBwYXJhbWV0ZXIgY2F1c2VzIGJvdGggdGhlCmRlZmF1bHQgb3B0aW9ucyBwbHVzIGFueSBvcHRpb25zIGZvdW5kIGluIGEgcGVybHRpZHlyYyBmaWxlIHRvIGJlIHJldHVybmVkLgoKPWl0ZW0gZHVtcF9nZXRvcHRfZmxhZ3MKCklmIHRoZSBCPGR1bXBfZ2V0b3B0X2ZsYWdzPiBwYXJhbWV0ZXIgaXMgZ2l2ZW4sIGl0IG11c3QgYmUgdGhlIHJlZmVyZW5jZSB0byBhCmhhc2guICBUaGlzIGhhc2ggd2lsbCByZWNlaXZlIGFsbCBvZiB0aGUgcGFyYW1ldGVycyB0aGF0IHBlcmx0aWR5IHVuZGVyc3RhbmRzCmFuZCBmbGFncyB0aGF0IGFyZSBwYXNzZWQgdG8gR2V0b3B0OjpMb25nLiAgVGhpcyBwYXJhbWV0ZXIgbWF5IGJlCnVzZWQgYWxvbmUgb3Igd2l0aCB0aGUgQjxkdW1wX29wdGlvbnM+IGZsYWcuICBQZXJsdGlkeSB3aWxsCmV4aXQgaW1tZWRpYXRlbHkgYWZ0ZXIgZmlsbGluZyB0aGlzIGhhc2guICBTZWUgdGhlIGRlbW8gcHJvZ3JhbQpGPHBlcmx0aWR5cmNfZHVtcC5wbD4gZm9yIGV4YW1wbGUgdXNhZ2UuCgo9aXRlbSBkdW1wX29wdGlvbnNfY2F0ZWdvcnkKCklmIHRoZSBCPGR1bXBfb3B0aW9uc19jYXRlZ29yeT4gcGFyYW1ldGVyIGlzIGdpdmVuLCBpdCBtdXN0IGJlIHRoZSByZWZlcmVuY2UgdG8gYQpoYXNoLiAgVGhpcyBoYXNoIHdpbGwgcmVjZWl2ZSBhIGhhc2ggd2l0aCBrZXlzIGVxdWFsIHRvIGFsbCBsb25nIHBhcmFtZXRlciBuYW1lcwphbmQgdmFsdWVzIGVxdWFsIHRvIHRoZSB0aXRsZSBvZiB0aGUgY29ycmVzcG9uZGluZyBzZWN0aW9uIG9mIHRoZSBwZXJsdGlkeSBtYW51YWwuClNlZSB0aGUgZGVtbyBwcm9ncmFtIEY8cGVybHRpZHlyY19kdW1wLnBsPiBmb3IgZXhhbXBsZSB1c2FnZS4KCj1pdGVtIGR1bXBfYWJicmV2aWF0aW9ucwoKSWYgdGhlIEI8ZHVtcF9hYmJyZXZpYXRpb25zPiBwYXJhbWV0ZXIgaXMgZ2l2ZW4sIGl0IG11c3QgYmUgdGhlIHJlZmVyZW5jZSB0byBhCmhhc2guICBUaGlzIGhhc2ggd2lsbCByZWNlaXZlIGFsbCBhYmJyZXZpYXRpb25zIHVzZWQgYnkgUGVybDo6VGlkeS4gIFNlZSB0aGUKZGVtbyBwcm9ncmFtIEY8cGVybHRpZHlyY19kdW1wLnBsPiBmb3IgZXhhbXBsZSB1c2FnZS4KCj1pdGVtIHByZWZpbHRlcgoKQSBjb2RlIHJlZmVyZW5jZSB0aGF0IHdpbGwgYmUgYXBwbGllZCB0byB0aGUgc291cmNlIGJlZm9yZSB0aWR5aW5nLiBJdCBpcwpleHBlY3RlZCB0byB0YWtlIHRoZSBmdWxsIGNvbnRlbnQgYXMgYSBzdHJpbmcgaW4gaXRzIGlucHV0LCBhbmQgb3V0cHV0IHRoZQp0cmFuc2Zvcm1lZCBjb250ZW50LgoKPWl0ZW0gcG9zdGZpbHRlcgoKQSBjb2RlIHJlZmVyZW5jZSB0aGF0IHdpbGwgYmUgYXBwbGllZCB0byB0aGUgdGlkaWVkIHJlc3VsdCBiZWZvcmUgb3V0cHV0dGluZy4KSXQgaXMgZXhwZWN0ZWQgdG8gdGFrZSB0aGUgZnVsbCBjb250ZW50IGFzIGEgc3RyaW5nIGluIGl0cyBpbnB1dCwgYW5kIG91dHB1dAp0aGUgdHJhbnNmb3JtZWQgY29udGVudC4KCk5vdGU6IEEgY29udmVuaWVudCB3YXkgdG8gY2hlY2sgdGhlIGZ1bmN0aW9uIG9mIHlvdXIgY3VzdG9tIHByZWZpbHRlciBhbmQKcG9zdGZpbHRlciBjb2RlIGlzIHRvIHVzZSB0aGUgLS1ub3RpZHkgb3B0aW9uLCBmaXJzdCB3aXRoIGp1c3QgdGhlIHByZWZpbHRlcgphbmQgdGhlbiB3aXRoIGJvdGggdGhlIHByZWZpbHRlciBhbmQgcG9zdGZpbHRlci4gIFNlZSBhbHNvIHRoZSBmaWxlCkI8ZmlsdGVyX2V4YW1wbGUucGw+IGluIHRoZSBwZXJsdGlkeSBkaXN0cmlidXRpb24uCgo9YmFjawoKPWhlYWQxIEVSUk9SIEhBTkRMSU5HCgpBbiBleGl0IHZhbHVlIG9mIDAsIDEsIG9yIDIgaXMgcmV0dXJuZWQgYnkgcGVybHRpZHkgdG8gaW5kaWNhdGUgdGhlIHN0YXR1cyBvZiB0aGUgcmVzdWx0LgoKQSBleGl0IHZhbHVlIG9mIDAgaW5kaWNhdGVzIHRoYXQgcGVybHRpZHkgcmFuIHRvIGNvbXBsZXRpb24gd2l0aCBubyBlcnJvciBtZXNzYWdlcy4KCkFuIGV4aXQgdmFsdWUgb2YgMSBpbmRpY2F0ZXMgdGhhdCB0aGUgcHJvY2VzcyBoYWQgdG8gYmUgdGVybWluYXRlZCBlYXJseSBkdWUgdG8KZXJyb3JzIGluIHRoZSBpbnB1dCBwYXJhbWV0ZXJzLiAgVGhpcyBjYW4gaGFwcGVuIGZvciBleGFtcGxlIGlmIGEgcGFyYW1ldGVyIGlzCm1pc3NwZWxsZWQgb3IgZ2l2ZW4gYW4gaW52YWxpZCB2YWx1ZS4gIFRoZSBjYWxsaW5nIHByb2dyYW0gc2hvdWxkIGNoZWNrIGZvcgp0aGlzIGZsYWcgYmVjYXVzZSBpZiBpdCBpcyBzZXQgdGhlIGRlc3RpbmF0aW9uIHN0cmVhbSB3aWxsIGJlIGVtcHR5IG9yCmluY29tcGxldGUgYW5kIHNob3VsZCBiZSBpZ25vcmVkLiAgRXJyb3IgbWVzc2FnZXMgaW4gdGhlIEI8c3RkZXJyPiBzdHJlYW0gd2lsbAppbmRpY2F0ZSB0aGUgY2F1c2Ugb2YgYW55IHByb2JsZW0uICAKCkFuIGV4aXQgdmFsdWUgb2YgMiBpbmRpY2F0ZXMgdGhhdCBwZXJsdGlkeSByYW4gdG8gY29tcGxldGlvbiBidXQgdGhlcmUgdGhlcmUKYXJlIHdhcm5pbmcgbWVzc2FnZXMgaW4gdGhlIEI8c3RkZXJyPiBzdHJlYW0gcmVsYXRlZCB0byBwYXJhbWV0ZXIgZXJyb3JzIG9yCmNvbmZsaWN0cyBhbmQvb3Igd2FybmluZyBtZXNzYWdlcyBpbiB0aGUgQjxlcnJvcmZpbGU+IHN0cmVhbSByZWxhdGluZyB0bwpwb3NzaWJsZSBzeW50YXggZXJyb3JzIGluIHRoZSBzb3VyY2UgY29kZSBiZWluZyB0aWRpZWQuIAoKSW4gdGhlIGV2ZW50IG9mIGEgY2F0YXN0cm9waGljIGVycm9yIGZvciB3aGljaCByZWNvdmVyeSBpcyBub3QgcG9zc2libGUKQjxwZXJsdGlkeT4gdGVybWluYXRlcyBieSBtYWtpbmcgY2FsbHMgdG8gQjxjcm9haz4gb3IgQjxjb25mZXNzPiB0byBoZWxwIHRoZQpwcm9ncmFtbWVyIGxvY2FsaXplIHRoZSBwcm9ibGVtLiAgVGhlc2Ugc2hvdWxkIG5vcm1hbGx5IG9ubHkgb2NjdXIgZHVyaW5nCnByb2dyYW0gZGV2ZWxvcG1lbnQuICAKCj1oZWFkMSBOT1RFUyBPTiBGT1JNQVRUSU5HIFBBUkFNRVRFUlMKClBhcmFtZXRlcnMgd2hpY2ggY29udHJvbCBmb3JtYXR0aW5nIG1heSBiZSBwYXNzZWQgaW4gc2V2ZXJhbCB3YXlzOiBpbiBhCkY8LnBlcmx0aWR5cmM+IGNvbmZpZ3VyYXRpb24gZmlsZSwgaW4gdGhlIEI8cGVybHRpZHlyYz4gcGFyYW1ldGVyLCBhbmQgaW4gdGhlCkI8YXJndj4gcGFyYW1ldGVyLgoKVGhlIEI8LXN5bj4gKEI8LS1jaGVjay1zeW50YXg+KSBmbGFnIG1heSBiZSB1c2VkIHdpdGggYWxsIHNvdXJjZSBhbmQKZGVzdGluYXRpb24gc3RyZWFtcyBleGNlcHQgZm9yIHN0YW5kYXJkIGlucHV0IGFuZCBvdXRwdXQuICBIb3dldmVyIApkYXRhIHN0cmVhbXMgd2hpY2ggYXJlIG5vdCBhc3NvY2lhdGVkIHdpdGggYSBmaWxlbmFtZSB3aWxsIApiZSBjb3BpZWQgdG8gYSB0ZW1wb3JhcnkgZmlsZSBiZWZvcmUgYmVpbmcgcGFzc2VkIHRvIFBlcmwuICBUaGlzCnVzZSBvZiB0ZW1wb3JhcnkgZmlsZXMgY2FuIGNhdXNlIHNvbWV3aGF0IGNvbmZ1c2luZyBvdXRwdXQgZnJvbSBQZXJsLgoKSWYgdGhlIEI8LXBicD4gc3R5bGUgaXMgdXNlZCBpdCB3aWxsIHR5cGljYWxseSBiZSBuZWNlc3NhcnkgdG8gYWxzbwpzcGVjaWZ5IGEgQjwtbnN0PiBmbGFnLiAgVGhpcyBpcyBuZWNlc3NhcnkgdG8gdHVybiBvZmYgdGhlIEI8LXN0PiBmbGFnCmNvbnRhaW5lZCBpbiB0aGUgQjwtcGJwPiBwYXJhbWV0ZXIgc2V0IHdoaWNoIG90aGVyd2lzZSB3b3VsZCBkaXJlY3QKdGhlIG91dHB1dCBzdHJlYW0gdG8gdGhlIHN0YW5kYXJkIG91dHB1dC4gIAoKPWhlYWQxIEVYQU1QTEVTCgpUaGUgZm9sbG93aW5nIGV4YW1wbGUgdXNlcyBzdHJpbmcgcmVmZXJlbmNlcyB0byBob2xkIHRoZSBpbnB1dCBhbmQgb3V0cHV0CmNvZGUgYW5kIGVycm9yIHN0cmVhbXMsIGFuZCBpbGx1c3RyYXRlcyBjaGVja2luZyBmb3IgZXJyb3JzLgoKICB1c2UgUGVybDo6VGlkeTsKICAKICBteSAkc291cmNlX3N0cmluZyA9IDw8J0VPVCc7CiAgbXkkZXJyb3I9UGVybDo6VGlkeTo6cGVybHRpZHkoYXJndj0+JGFyZ3Ysc291cmNlPT5cJHNvdXJjZV9zdHJpbmcsCiAgICBkZXN0aW5hdGlvbj0+XCRkZXN0X3N0cmluZyxzdGRlcnI9Plwkc3RkZXJyX3N0cmluZywKICBlcnJvcmZpbGU9PlwkZXJyb3JmaWxlX3N0cmluZywpOwogIEVPVAogIAogIG15ICRkZXN0X3N0cmluZzsKICBteSAkc3RkZXJyX3N0cmluZzsKICBteSAkZXJyb3JmaWxlX3N0cmluZzsKICBteSAkYXJndiA9ICItbnBybyI7ICAgIyBJZ25vcmUgYW55IC5wZXJsdGlkeXJjIGF0IHRoaXMgc2l0ZQogICRhcmd2IC49ICIgLXBicCI7ICAgICAjIEZvcm1hdCBhY2NvcmRpbmcgdG8gcGVybCBiZXN0IHByYWN0aWNlcwogICRhcmd2IC49ICIgLW5zdCI7ICAgICAjIE11c3QgdHVybiBvZmYgLXN0IGluIGNhc2UgLXBicCBpcyBzcGVjaWZpZWQKICAkYXJndiAuPSAiIC1zZSI7ICAgICAgIyAtc2UgYXBwZW5kcyB0aGUgZXJyb3JmaWxlIHRvIHN0ZGVycgogICMjICRhcmd2IC49ICIgLS1zcGVsbC1jaGVjayI7ICAjIHVuY29tbWVudCB0byB0cmlnZ2VyIGFuIGVycm9yCiAgCiAgcHJpbnQgIjw8UkFXIFNPVVJDRT4+XG4kc291cmNlX3N0cmluZ1xuIjsKICAKICBteSAkZXJyb3IgPSBQZXJsOjpUaWR5OjpwZXJsdGlkeSgKICAgICAgYXJndiAgICAgICAgPT4gJGFyZ3YsCiAgICAgIHNvdXJjZSAgICAgID0+IFwkc291cmNlX3N0cmluZywKICAgICAgZGVzdGluYXRpb24gPT4gXCRkZXN0X3N0cmluZywKICAgICAgc3RkZXJyICAgICAgPT4gXCRzdGRlcnJfc3RyaW5nLAogICAgICBlcnJvcmZpbGUgICA9PiBcJGVycm9yZmlsZV9zdHJpbmcsICAgICMgaWdub3JlZCB3aGVuIC1zZSBmbGFnIGlzIHNldAogICAgICAjI3BoYXNlcnMgICA9PiAnc3R1bicsICAgICAgICAgICAgICAgICMgdW5jb21tZW50IHRvIHRyaWdnZXIgYW4gZXJyb3IKICApOwogIAogIGlmICgkZXJyb3IpIHsKICAKICAgICAgIyBzZXJpb3VzIGVycm9yIGluIGlucHV0IHBhcmFtZXRlcnMsIG5vIHRpZGllZCBvdXRwdXQKICAgICAgcHJpbnQgIjw8U1RERVJSPj5cbiRzdGRlcnJfc3RyaW5nXG4iOwogICAgICBkaWUgIkV4aXRpbmcgYmVjYXVzZSBvZiBzZXJpb3VzIGVycm9yc1xuIjsKICB9CiAgCiAgaWYgKCRkZXN0X3N0cmluZykgICAgICB7IHByaW50ICI8PFRJRElFRCBTT1VSQ0U+PlxuJGRlc3Rfc3RyaW5nXG4iIH0KICBpZiAoJHN0ZGVycl9zdHJpbmcpICAgIHsgcHJpbnQgIjw8U1RERVJSPj5cbiRzdGRlcnJfc3RyaW5nXG4iIH0KICBpZiAoJGVycm9yZmlsZV9zdHJpbmcpIHsgcHJpbnQgIjw8LkVSUiBmaWxlPj5cbiRlcnJvcmZpbGVfc3RyaW5nXG4iIH0KCkFkZGl0aW9uYWwgZXhhbXBsZXMgYXJlIGdpdmVuIGluIGV4YW1wbGVzIHNlY3Rpb24gb2YgdGhlIHBlcmx0aWR5IGRpc3RyaWJ1dGlvbi4gIAoKPWhlYWQxIFVzaW5nIHRoZSBCPGZvcm1hdHRlcj4gQ2FsbGJhY2sgT2JqZWN0CgpUaGUgQjxmb3JtYXR0ZXI+IHBhcmFtZXRlciBpcyBhbiBvcHRpb25hbCBjYWxsYmFjayBvYmplY3Qgd2hpY2ggYWxsb3dzCnRoZSBjYWxsaW5nIHByb2dyYW0gdG8gcmVjZWl2ZSB0b2tlbml6ZWQgbGluZXMgZGlyZWN0bHkgZnJvbSBwZXJsdGlkeSBmb3IKZnVydGhlciBzcGVjaWFsaXplZCBwcm9jZXNzaW5nLiAgV2hlbiB0aGlzIHBhcmFtZXRlciBpcyB1c2VkLCB0aGUgdHdvCmZvcm1hdHRpbmcgb3B0aW9ucyB3aGljaCBhcmUgYnVpbHQgaW50byBwZXJsdGlkeSAoYmVhdXRpZmljYXRpb24gb3IKaHRtbCkgYXJlIGlnbm9yZWQuICBUaGUgZm9sbG93aW5nIGRpYWdyYW0gaWxsdXN0cmF0ZXMgdGhlIGxvZ2ljYWwgZmxvdzoKCiAgICAgICAgICAgICAgICAgICAgfC0tIChub3JtYWwgcm91dGUpICAgLT4gY29kZSBiZWF1dGlmaWNhdGlvbgogIGNhbGxlci0+cGVybHRpZHktPnwtLSAoLWh0bWwgZmxhZyApICAgIC0+IGNyZWF0ZSBodG1sIAogICAgICAgICAgICAgICAgICAgIHwtLSAoZm9ybWF0dGVyIGdpdmVuKS0+IGNhbGxiYWNrIHRvIHdyaXRlX2xpbmUKClRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IgcHJvY2Vzc2luZyBwZXJsIHNjcmlwdHMgaW4gc29tZSB3YXkuICBUaGUgCnBhcmFtZXRlciBDPCRmb3JtYXR0ZXI+IGluIHRoZSBwZXJsdGlkeSBjYWxsLAoKICAgICAgICBmb3JtYXR0ZXIgICA9PiAkZm9ybWF0dGVyLCAgCgppcyBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGUgY2FsbGVyIHdpdGggYSBDPHdyaXRlX2xpbmU+IG1ldGhvZCB3aGljaAp3aWxsIGFjY2VwdCBhbmQgcHJvY2VzcyB0b2tlbml6ZWQgbGluZXMsIG9uZSBsaW5lIHBlciBjYWxsLiAgSGVyZSBpcwphIHNpbXBsZSBleGFtcGxlIG9mIGEgQzx3cml0ZV9saW5lPiB3aGljaCBtZXJlbHkgcHJpbnRzIHRoZSBsaW5lIG51bWJlciwKdGhlIGxpbmUgdHlwZSAoYXMgZGV0ZXJtaW5lZCBieSBwZXJsdGlkeSksIGFuZCB0aGUgdGV4dCBvZiB0aGUgbGluZToKCiBzdWIgd3JpdGVfbGluZSB7CiAKICAgICAjIFRoaXMgaXMgY2FsbGVkIGZyb20gcGVybHRpZHkgbGluZS1ieS1saW5lCiAgICAgbXkgJHNlbGYgICAgICAgICAgICAgID0gc2hpZnQ7CiAgICAgbXkgJGxpbmVfb2ZfdG9rZW5zICAgID0gc2hpZnQ7CiAgICAgbXkgJGxpbmVfdHlwZSAgICAgICAgID0gJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdHlwZX07CiAgICAgbXkgJGlucHV0X2xpbmVfbnVtYmVyID0gJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfbnVtYmVyfTsKICAgICBteSAkaW5wdXRfbGluZSAgICAgICAgPSAkbGluZV9vZl90b2tlbnMtPntfbGluZV90ZXh0fTsKICAgICBwcmludCAiJGlucHV0X2xpbmVfbnVtYmVyOiRsaW5lX3R5cGU6JGlucHV0X2xpbmUiOwogfQoKVGhlIGNvbXBsZXRlIHByb2dyYW0sIEI8cGVybGxpbmV0eXBlPiwgaXMgY29udGFpbmVkIGluIHRoZSBleGFtcGxlcyBzZWN0aW9uIG9mCnRoZSBzb3VyY2UgZGlzdHJpYnV0aW9uLiAgQXMgdGhpcyBleGFtcGxlIHNob3dzLCB0aGUgY2FsbGJhY2sgbWV0aG9kCnJlY2VpdmVzIGEgcGFyYW1ldGVyIEI8JGxpbmVfb2ZfdG9rZW5zPiwgd2hpY2ggaXMgYSByZWZlcmVuY2UgdG8gYSBoYXNoCm9mIG90aGVyIHVzZWZ1bCBpbmZvcm1hdGlvbi4gIFRoaXMgZXhhbXBsZSB1c2VzIHRoZXNlIGhhc2ggZW50cmllczoKCiAkbGluZV9vZl90b2tlbnMtPntfbGluZV9udW1iZXJ9IC0gdGhlIGxpbmUgbnVtYmVyICgxLDIsLi4uKQogJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdGV4dH0gICAtIHRoZSB0ZXh0IG9mIHRoZSBsaW5lCiAkbGluZV9vZl90b2tlbnMtPntfbGluZV90eXBlfSAgIC0gdGhlIHR5cGUgb2YgdGhlIGxpbmUsIG9uZSBvZjoKCiAgICBTWVNURU0gICAgICAgICAtIHN5c3RlbS1zcGVjaWZpYyBjb2RlIGJlZm9yZSBoYXNoLWJhbmcgbGluZQogICAgQ09ERSAgICAgICAgICAgLSBsaW5lIG9mIHBlcmwgY29kZSAoaW5jbHVkaW5nIGNvbW1lbnRzKQogICAgUE9EX1NUQVJUICAgICAgLSBsaW5lIHN0YXJ0aW5nIHBvZCwgc3VjaCBhcyAnPWhlYWQnCiAgICBQT0QgICAgICAgICAgICAtIHBvZCBkb2N1bWVudGF0aW9uIHRleHQKICAgIFBPRF9FTkQgICAgICAgIC0gbGFzdCBsaW5lIG9mIHBvZCBzZWN0aW9uLCAnPWN1dCcKICAgIEhFUkUgICAgICAgICAgIC0gdGV4dCBvZiBoZXJlLWRvY3VtZW50CiAgICBIRVJFX0VORCAgICAgICAtIGxhc3QgbGluZSBvZiBoZXJlLWRvYyAodGFyZ2V0IHdvcmQpCiAgICBGT1JNQVQgICAgICAgICAtIGZvcm1hdCBzZWN0aW9uCiAgICBGT1JNQVRfRU5EICAgICAtIGxhc3QgbGluZSBvZiBmb3JtYXQgc2VjdGlvbiwgJy4nCiAgICBEQVRBX1NUQVJUICAgICAtIF9fREFUQV9fIGxpbmUKICAgIERBVEEgICAgICAgICAgIC0gdW5pZGVudGlmaWVkIHRleHQgZm9sbG93aW5nIF9fREFUQV9fCiAgICBFTkRfU1RBUlQgICAgICAtIF9fRU5EX18gbGluZQogICAgRU5EICAgICAgICAgICAgLSB1bmlkZW50aWZpZWQgdGV4dCBmb2xsb3dpbmcgX19FTkRfXwogICAgRVJST1IgICAgICAgICAgLSB3ZSBhcmUgaW4gYmlnIHRyb3VibGUsIHByb2JhYmx5IG5vdCBhIHBlcmwgc2NyaXB0CgpNb3N0IGFwcGxpY2F0aW9ucyB3aWxsIGJlIG9ubHkgaW50ZXJlc3RlZCBpbiBsaW5lcyBvZiB0eXBlIEI8Q09ERT4uICBGb3IKYW5vdGhlciBleGFtcGxlLCBsZXQncyB3cml0ZSBhIHByb2dyYW0gd2hpY2ggY2hlY2tzIGZvciBvbmUgb2YgdGhlCnNvLWNhbGxlZCBJPG5hdWdodHkgbWF0Y2hpbmcgdmFyaWFibGVzPiBDPCZgPiwgQzwkJj4sIGFuZCBDPCQnPiwgd2hpY2gKY2FuIHNsb3cgZG93biBwcm9jZXNzaW5nLiAgSGVyZSBpcyBhIEI8d3JpdGVfbGluZT4sIGZyb20gdGhlIGV4YW1wbGUKcHJvZ3JhbSBCPGZpbmRfbmF1Z2h0eS5wbD4sIHdoaWNoIGRvZXMgdGhhdDoKCiBzdWIgd3JpdGVfbGluZSB7CiAKICAgICAjIFRoaXMgaXMgY2FsbGVkIGJhY2sgZnJvbSBwZXJsdGlkeSBsaW5lLWJ5LWxpbmUKICAgICAjIFdlJ3JlIGxvb2tpbmcgZm9yICRgLCAkJiwgYW5kICQnCiAgICAgbXkgKCAkc2VsZiwgJGxpbmVfb2ZfdG9rZW5zICkgPSBAXzsKIAogICAgICMgcHVsbCBvdXQgc29tZSBzdHVmZiB3ZSBtaWdodCBuZWVkCiAgICAgbXkgJGxpbmVfdHlwZSAgICAgICAgID0gJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdHlwZX07CiAgICAgbXkgJGlucHV0X2xpbmVfbnVtYmVyID0gJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfbnVtYmVyfTsKICAgICBteSAkaW5wdXRfbGluZSAgICAgICAgPSAkbGluZV9vZl90b2tlbnMtPntfbGluZV90ZXh0fTsKICAgICBteSAkcnRva2VuX3R5cGUgICAgICAgPSAkbGluZV9vZl90b2tlbnMtPntfcnRva2VuX3R5cGV9OwogICAgIG15ICRydG9rZW5zICAgICAgICAgICA9ICRsaW5lX29mX3Rva2Vucy0+e19ydG9rZW5zfTsKICAgICBjaG9tcCAkaW5wdXRfbGluZTsKIAogICAgICMgc2tpcCBjb21tZW50cywgcG9kLCBldGMKICAgICByZXR1cm4gaWYgKCAkbGluZV90eXBlIG5lICdDT0RFJyApOwogCiAgICAgIyBsb29wIG92ZXIgdG9rZW5zIGxvb2tpbmcgZm9yICRgLCAkJiwgYW5kICQnCiAgICAgZm9yICggbXkgJGogPSAwIDsgJGogPCBAJHJ0b2tlbl90eXBlIDsgJGorKyApIHsKIAogICAgICAgICAjIHdlIG9ubHkgd2FudCB0byBleGFtaW5lIHRva2VuIHR5cGVzICdpJyAoaWRlbnRpZmllcikKICAgICAgICAgbmV4dCB1bmxlc3MgJCRydG9rZW5fdHlwZVskal0gZXEgJ2knOwogCiAgICAgICAgICMgcHVsbCBvdXQgdGhlIGFjdHVhbCB0b2tlbiB0ZXh0CiAgICAgICAgIG15ICR0b2tlbiA9ICQkcnRva2Vuc1skal07CiAKICAgICAgICAgIyBhbmQgY2hlY2sgaXQKICAgICAgICAgaWYgKCAkdG9rZW4gPX4gL15cJFtcYFwmXCddJC8gKSB7CiAgICAgICAgICAgICBwcmludCBTVERFUlIKICAgICAgICAgICAgICAgIiRpbnB1dF9saW5lX251bWJlcjogJHRva2VuXG4iOwogICAgICAgICB9CiAgICAgfQogfQoKVGhpcyBleGFtcGxlIHB1bGxzIG91dCB0aGVzZSB0b2tlbml6YXRpb24gdmFyaWFibGVzIGZyb20gdGhlICRsaW5lX29mX3Rva2VucwpoYXNoIHJlZmVyZW5jZToKCiAgICAgJHJ0b2tlbl90eXBlID0gJGxpbmVfb2ZfdG9rZW5zLT57X3J0b2tlbl90eXBlfTsKICAgICAkcnRva2VucyAgICAgPSAkbGluZV9vZl90b2tlbnMtPntfcnRva2Vuc307CgpUaGUgdmFyaWFibGUgQzwkcnRva2VuX3R5cGU+IGlzIGEgcmVmZXJlbmNlIHRvIGFuIGFycmF5IG9mIHRva2VuIHR5cGUgY29kZXMsCmFuZCBDPCRydG9rZW5zPiBpcyBhIHJlZmVyZW5jZSB0byBhIGNvcnJlc3BvbmRpbmcgYXJyYXkgb2YgdG9rZW4gdGV4dC4KVGhlc2UgYXJlIG9idmlvdXNseSBvbmx5IGRlZmluZWQgZm9yIGxpbmVzIG9mIHR5cGUgQjxDT0RFPi4KUGVybHRpZHkgY2xhc3NpZmllcyB0b2tlbnMgaW50byB0eXBlcywgYW5kIGhhcyBhIGJyaWVmIGNvZGUgZm9yIGVhY2ggdHlwZS4KWW91IGNhbiBnZXQgYSBjb21wbGV0ZSBsaXN0IGF0IGFueSB0aW1lIGJ5IHJ1bm5pbmcgcGVybHRpZHkgZnJvbSB0aGUKY29tbWFuZCBsaW5lIHdpdGgKCiAgICAgcGVybHRpZHkgLS1kdW1wLXRva2VuLXR5cGVzCgpJbiB0aGUgcHJlc2VudCBleGFtcGxlLCB3ZSBhcmUgb25seSBsb29raW5nIGZvciB0b2tlbnMgb2YgdHlwZSBCPGk+CihpZGVudGlmaWVycyksIHNvIHRoZSBmb3IgbG9vcCBza2lwcyBwYXN0IGFsbCBvdGhlciB0eXBlcy4gIFdoZW4gYW4KaWRlbnRpZmllciBpcyBmb3VuZCwgaXRzIGFjdHVhbCB0ZXh0IGlzIGNoZWNrZWQgdG8gc2VlIGlmIGl0IGlzIG9uZQpiZWluZyBzb3VnaHQuICBJZiBzbywgdGhlIGFib3ZlIHdyaXRlX2xpbmUgcHJpbnRzIHRoZSB0b2tlbiBhbmQgaXRzCmxpbmUgbnVtYmVyLgoKVGhlIEI8Zm9ybWF0dGVyPiBmZWF0dXJlIGlzIHJlbGF0aXZlbHkgbmV3IGluIHBlcmx0aWR5LCBhbmQgZnVydGhlcgpkb2N1bWVudGF0aW9uIG5lZWRzIHRvIGJlIHdyaXR0ZW4gdG8gY29tcGxldGUgaXRzIGRlc2NyaXB0aW9uLiAgSG93ZXZlciwKc2V2ZXJhbCBleGFtcGxlIHByb2dyYW1zIGhhdmUgYmVlbiB3cml0dGVuIGFuZCBjYW4gYmUgZm91bmQgaW4gdGhlCkI8ZXhhbXBsZXM+IHNlY3Rpb24gb2YgdGhlIHNvdXJjZSBkaXN0cmlidXRpb24uICBQcm9iYWJseSB0aGUgYmVzdCB3YXkKdG8gZ2V0IHN0YXJ0ZWQgaXMgdG8gZmluZCBvbmUgb2YgdGhlIGV4YW1wbGVzIHdoaWNoIG1vc3QgY2xvc2VseSBtYXRjaGVzCnlvdXIgYXBwbGljYXRpb24gYW5kIHN0YXJ0IG1vZGlmeWluZyBpdC4KCkZvciBoZWxwIHdpdGggcGVybHRpZHkncyBwZWN1bGlhciB3YXkgb2YgYnJlYWtpbmcgbGluZXMgaW50byB0b2tlbnMsIHlvdQptaWdodCBydW4sIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgCgogcGVybHRpZHkgLUQgZmlsZW5hbWUKCndoZXJlIEY8ZmlsZW5hbWU+IGlzIGEgc2hvcnQgc2NyaXB0IG9mIGludGVyZXN0LiAgVGhpcyB3aWxsIHByb2R1Y2UKRjxmaWxlbmFtZS5ERUJVRz4gd2l0aCBpbnRlcmxlYXZlZCBsaW5lcyBvZiB0ZXh0IGFuZCB0aGVpciB0b2tlbiB0eXBlcy4KVGhlIEI8LUQ+IGZsYWcgaGFzIGJlZW4gaW4gcGVybHRpZHkgZnJvbSB0aGUgYmVnaW5uaW5nIGZvciB0aGlzIHB1cnBvc2UuCklmIHlvdSB3YW50IHRvIHNlZSB0aGUgY29kZSB3aGljaCBjcmVhdGVzIHRoaXMgZmlsZSwgaXQgaXMKQzx3cml0ZV9kZWJ1Z19lbnRyeT4gaW4gVGlkeS5wbS4KCj1oZWFkMSBFWFBPUlQKCiAgJnBlcmx0aWR5Cgo9aGVhZDEgSU5TVEFMTEFUSU9OCgpUaGUgbW9kdWxlICdQZXJsOjpUaWR5JyBjb21lcyB3aXRoIGEgYmluYXJ5ICdwZXJsdGlkeScgd2hpY2ggaXMgaW5zdGFsbGVkIHdoZW4gdGhlIG1vZHVsZSBpcyBpbnN0YWxsZWQuICBUaGUgbW9kdWxlIG5hbWUgaXMgY2FzZS1zZW5zaXRpdmUuICBGb3IgZXhhbXBsZSwgdGhlIGJhc2ljIGNvbW1hbmQgZm9yIGluc3RhbGxpbmcgd2l0aCBjcGFubSBpcyAnY3Bhbm0gUGVybDo6VGlkeScuCgo9aGVhZDEgVkVSU0lPTgoKVGhpcyBtYW4gcGFnZSBkb2N1bWVudHMgUGVybDo6VGlkeSB2ZXJzaW9uIDIwMjEwMTExCgo9aGVhZDEgTElDRU5TRQoKVGhpcyBwYWNrYWdlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAiR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UiLgoKUGxlYXNlIHJlZmVyIHRvIHRoZSBmaWxlICJDT1BZSU5HIiBmb3IgZGV0YWlscy4KCj1oZWFkMSBCVUcgUkVQT1JUUwoKQSBsaXN0IG9mIGN1cnJlbnQgYnVncyBhbmQgaXNzdWVzIGNhbiBiZSBmb3VuZCBhdCB0aGUgQ1BBTiBzaXRlIEw8aHR0cHM6Ly9ydC5jcGFuLm9yZy9QdWJsaWMvRGlzdC9EaXNwbGF5Lmh0bWw/TmFtZT1QZXJsLVRpZHk+CgpUbyByZXBvcnQgYSBuZXcgYnVnIG9yIHByb2JsZW0sIHVzZSB0aGUgbGluayBvbiB0aGlzIHBhZ2UuICAKClRoZSBzb3VyY2UgY29kZSByZXBvc2l0b3J5IGlzIGF0IEw8aHR0cHM6Ly9naXRodWIuY29tL3Blcmx0aWR5L3Blcmx0aWR5Pi4KCj1oZWFkMSBTRUUgQUxTTwoKVGhlIHBlcmx0aWR5KDEpIG1hbiBwYWdlIGRlc2NyaWJlcyBhbGwgb2YgdGhlIGZlYXR1cmVzIG9mIHBlcmx0aWR5LiAgSXQKY2FuIGJlIGZvdW5kIGF0IGh0dHA6Ly9wZXJsdGlkeS5zb3VyY2Vmb3JnZS5uZXQuCgo9Y3V0Cg==</File>
        <File Location="Kernel/cpan-lib/Perl/Tidy.pm" Permission="660" Encode="Base64">IwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojCiMgICAgcGVybHRpZHkgLSBhIHBlcmwgc2NyaXB0IGluZGVudGVyIGFuZCBmb3JtYXR0ZXIKIwojICAgIENvcHlyaWdodCAoYykgMjAwMC0yMDIwIGJ5IFN0ZXZlIEhhbmNvY2sKIyAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgR1BMIGxpY2Vuc2UgYWdyZWVtZW50OyBzZWUgZmlsZSBDT1BZSU5HCiMKIyAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIwojICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCiMgICAgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKIyAgICA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgojCiMgICAgRm9yIGJyaWVmIGluc3RydWN0aW9ucywgdHJ5ICdwZXJsdGlkeSAtaCcuCiMgICAgRm9yIG1vcmUgY29tcGxldGUgZG9jdW1lbnRhdGlvbiwgdHJ5ICdtYW4gcGVybHRpZHknCiMgICAgb3IgdmlzaXQgaHR0cDovL3Blcmx0aWR5LnNvdXJjZWZvcmdlLm5ldAojCiMgICAgVGhpcyBzY3JpcHQgaXMgYW4gZXhhbXBsZSBvZiB0aGUgZGVmYXVsdCBzdHlsZS4gIEl0IHdhcyBmb3JtYXR0ZWQgd2l0aDoKIwojICAgICAgcGVybHRpZHkgVGlkeS5wbQojCiMgICAgQ29kZSBDb250cmlidXRpb25zOiBTZWUgQ2hhbmdlTG9nLmh0bWwgZm9yIGEgY29tcGxldGUgaGlzdG9yeS4KIyAgICAgIE1pY2hhZWwgQ2FydG1lbGwgc3VwcGxpZWQgY29kZSBmb3IgYWRhcHRhdGlvbiB0byBWTVMgYW5kIGhlbHBlZCB3aXRoCiMgICAgICAgIHYtc3RyaW5ncy4KIyAgICAgIEh1Z2ggUy4gTXllcnMgc3VwcGxpZWQgc3ViIHN0cmVhbWhhbmRsZSBhbmQgdGhlIHN1cHBvcnRpbmcgY29kZSB0bwojICAgICAgICBjcmVhdGUgYSBQZXJsOjpUaWR5IG1vZHVsZSB3aGljaCBjYW4gb3BlcmF0ZSBvbiBzdHJpbmdzLCBhcnJheXMsIGV0Yy4KIyAgICAgIFl2ZXMgT3J0b24gc3VwcGxpZWQgY29kaW5nIHRvIGhlbHAgZGV0ZWN0IFdpbmRvd3MgdmVyc2lvbnMuCiMgICAgICBBeGVsIFJvc2Ugc3VwcGxpZWQgYSBwYXRjaCBmb3IgTWFjUGVybC4KIyAgICAgIFNlYmFzdGllbiBBcGVyZ2hpcy1UcmFtb25pIHN1cHBsaWVkIGEgcGF0Y2ggZm9yIHRoZSBkZWZpbmVkIG9yIG9wZXJhdG9yLgojICAgICAgRGFuIFR5cmVsbCBjb250cmlidXRlZCBhIHBhdGNoIGZvciBiaW5hcnkgSS9PLgojICAgICAgVWVsaSBIdWdlbnNjaG1pZHQgY29udHJpYnV0ZWQgYSBwYXRjaCBmb3IgLWZwc2MKIyAgICAgIFNhbSBLaW5ndG9uIHN1cHBsaWVkIGEgcGF0Y2ggdG8gaWRlbnRpZnkgdGhlIGluaXRpYWwgaW5kZW50YXRpb24gb2YKIyAgICAgIGVudGFiYmVkIGNvZGUuCiMgICAgICBqb25hdGhhbiBzd2FydHogc3VwcGxpZWQgcGF0Y2hlcyBmb3I6CiMgICAgICAqIC4uLi8gcGF0dGVybiwgd2hpY2ggbG9va3MgdXB3YXJkcyBmcm9tIGRpcmVjdG9yeQojICAgICAgKiAtLW5vdGlkeSwgdG8gYmUgdXNlZCBpbiBkaXJlY3RvcmllcyB3aGVyZSB3ZSB3YW50IHRvIGF2b2lkCiMgICAgICAgIGFjY2lkZW50YWxseSB0aWR5aW5nCiMgICAgICAqIHByZWZpbHRlciBhbmQgcG9zdGZpbHRlcgojICAgICAgKiBpdGVyYXRpb25zIG9wdGlvbgojCiMgICAgICBNYW55IG90aGVycyBoYXZlIHN1cHBsaWVkIGtleSBpZGVhcywgc3VnZ2VzdGlvbnMsIGFuZCBidWcgcmVwb3J0czsKIyAgICAgICAgc2VlIHRoZSBDSEFOR0VTIGZpbGUuCiMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpwYWNrYWdlIFBlcmw6OlRpZHk7CgojIHBlcmx2ZXIgcmVwb3J0cyBtaW5pbXVtIHZlcnNpb24gbmVlZGVkIGlzIDUuOC4wCiMgNS4wMDQgbmVlZGVkIGZvciBJTzo6RmlsZQojIDUuMDA4IG5lZWRlZCBmb3Igd2lkZSBjaGFyYWN0ZXJzCnVzZSA1LjAwODsKdXNlIHdhcm5pbmdzOwp1c2Ugc3RyaWN0Owp1c2UgRXhwb3J0ZXI7CnVzZSBDYXJwOwp1c2UgRGlnZXN0OjpNRDUgcXcobWQ1X2hleCk7CnVzZSBQZXJsOjpUaWR5OjpEZWJ1Z2dlcjsKdXNlIFBlcmw6OlRpZHk6OkRldk51bGw7CnVzZSBQZXJsOjpUaWR5OjpEaWFnbm9zdGljczsKdXNlIFBlcmw6OlRpZHk6OkZpbGVXcml0ZXI7CnVzZSBQZXJsOjpUaWR5OjpGb3JtYXR0ZXI7CnVzZSBQZXJsOjpUaWR5OjpIdG1sV3JpdGVyOwp1c2UgUGVybDo6VGlkeTo6SU9TY2FsYXI7CnVzZSBQZXJsOjpUaWR5OjpJT1NjYWxhckFycmF5Owp1c2UgUGVybDo6VGlkeTo6SW5kZW50YXRpb25JdGVtOwp1c2UgUGVybDo6VGlkeTo6TGluZVNpbms7CnVzZSBQZXJsOjpUaWR5OjpMaW5lU291cmNlOwp1c2UgUGVybDo6VGlkeTo6TG9nZ2VyOwp1c2UgUGVybDo6VGlkeTo6VG9rZW5pemVyOwp1c2UgUGVybDo6VGlkeTo6VmVydGljYWxBbGlnbmVyOwpsb2NhbCAkfCA9IDE7CgojIHRoaXMgY2FuIGJlIHR1cm5lZCBvbiBmb3IgZXh0cmEgY2hlY2tpbmcgZHVyaW5nIGRldmVsb3BtZW50CnVzZSBjb25zdGFudCBERVZFTF9NT0RFID0+IDA7Cgp1c2UgdmFycyBxd3sKICAkVkVSU0lPTgogIEBJU0EKICBARVhQT1JUCn07CgpASVNBICAgID0gcXcoIEV4cG9ydGVyICk7CkBFWFBPUlQgPSBxdyggJnBlcmx0aWR5ICk7Cgp1c2UgQ3dkOwp1c2UgRW5jb2RlICgpOwp1c2UgRW5jb2RlOjpHdWVzczsKdXNlIElPOjpGaWxlOwp1c2UgRmlsZTo6QmFzZW5hbWU7CnVzZSBGaWxlOjpDb3B5Owp1c2UgRmlsZTo6VGVtcCBxdyh0ZW1wZmlsZSk7CgpCRUdJTiB7CgogICAgIyBSZWxlYXNlIHZlcnNpb24gaXMgdGhlIGFwcHJveGltYXRlIFlZTU1ERCBvZiB0aGUgcmVsZWFzZS4KICAgICMgRGV2ZWxvcG1lbnQgdmVyc2lvbiBpcyAoTGFzdCBSZWxlYXNlKS4oRGV2ZWxvcG1lbnQgTnVtYmVyKQoKICAgICMgVG8gbWFrZSB0aGUgbnVtYmVyIGNvbnRpbnVhbGx5IGluY3JlYXNpbmcsIHRoZSBEZXZlbG9wbWVudCBOdW1iZXIgaXMgYSAyCiAgICAjIGRpZ2l0IG51bWJlciBzdGFydGluZyBhdCAwMSBhZnRlciBhIHJlbGVhc2UgaXMgY29udGludWFsbHkgYnVtcGVkIGFsb25nCiAgICAjIGF0IHNpZ25pZmljYW50IHBvaW50cyBkdXJpbmcgZGV2ZWxvcG1lbnQuIElmIGl0IGV2ZXIgcmVhY2hlcyA5OSB0aGVuIHRoZQogICAgIyBSZWxlYXNlIHZlcnNpb24gbXVzdCBiZSBidW1wZWQsIGFuZCBpdCBpcyBwcm9iYWJseSBwYXN0IHRpbWUgZm9yIGEKICAgICMgcmVsZWFzZSBhbnl3YXkuCgogICAgJFZFUlNJT04gPSAnMjAyMTAxMTEnOwp9CgpzdWIgREVTVFJPWSB7CgogICAgIyByZXF1aXJlZCB0byBhdm9pZCBjYWxsIHRvIEFVVE9MT0FEIGluIHNvbWUgdmVyc2lvbnMgb2YgcGVybAp9CgpzdWIgQVVUT0xPQUQgewoKICAgICMgQ2F0Y2ggYW55IHVuZGVmaW5lZCBzdWIgY2FsbHMgc28gdGhhdCB3ZSBhcmUgc3VyZSB0byBnZXQKICAgICMgc29tZSBkaWFnbm9zdGljIGluZm9ybWF0aW9uLiAgVGhpcyBzdWIgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZAogICAgIyBleGNlcHQgZm9yIGEgcHJvZ3JhbW1pbmcgZXJyb3IuCiAgICBvdXIgJEFVVE9MT0FEOwogICAgcmV0dXJuIGlmICggJEFVVE9MT0FEID1+IC9cYkRFU1RST1kkLyApOwogICAgbXkgKCAkcGtnLCAkZm5hbWUsICRsbm8gKSA9IGNhbGxlcigpOwogICAgcHJpbnQgU1RERVJSIDw8RU9NOwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClVuZXhwZWN0ZWQgY2FsbCB0byBBdXRvbG9hZCBsb29raW5nIGZvciBzdWIgJEFVVE9MT0FECkNhbGxlZCBmcm9tIHBhY2thZ2U6ICckcGtnJyAgCkNhbGxlZCBmcm9tIEZpbGUgJyRmbmFtZScgIGF0IGxpbmUgJyRsbm8nClRoaXMgZXJyb3IgaXMgcHJvYmFibHkgZHVlIHRvIGEgcmVjZW50IHByb2dyYW1taW5nIGNoYW5nZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVPTQogICAgZXhpdCAxOwp9CgpzdWIgc3RyZWFtaGFuZGxlIHsKCiAgICAjIGdpdmVuIGZpbGVuYW1lIGFuZCBtb2RlIChyIG9yIHcpLCBjcmVhdGUgYW4gb2JqZWN0IHdoaWNoOgogICAgIyAgIGhhcyBhICdnZXRsaW5lJyBtZXRob2QgaWYgbW9kZT0ncicsIGFuZAogICAgIyAgIGhhcyBhICdwcmludCcgbWV0aG9kIGlmIG1vZGU9J3cnLgogICAgIyBUaGUgb2JqZWN0cyBhbHNvIG5lZWQgYSAnY2xvc2UnIG1ldGhvZC4KICAgICMKICAgICMgSG93IHRoZSBvYmplY3QgaXMgbWFkZToKICAgICMKICAgICMgaWYgJGZpbGVuYW1lIGlzOiAgICAgTWFrZSBvYmplY3QgdXNpbmc6CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0gICAgIC0tLS0tLS0tLS0tLS0tLS0tCiAgICAjICctJyAgICAgICAgICAgICAgICAgIChTVERJTiBpZiBtb2RlID0gJ3InLCBTVERPVVQgaWYgbW9kZT0ndycpCiAgICAjIHN0cmluZyAgICAgICAgICAgICAgIElPOjpGaWxlCiAgICAjIEFSUkFZICByZWYgICAgICAgICAgIFBlcmw6OlRpZHk6OklPU2NhbGFyQXJyYXkgKGZvcm1lcmx5IElPOjpTY2FsYXJBcnJheSkKICAgICMgU1RSSU5HIHJlZiAgICAgICAgICAgUGVybDo6VGlkeTo6SU9TY2FsYXIgICAgICAoZm9ybWVybHkgSU86OlNjYWxhcikKICAgICMgb2JqZWN0ICAgICAgICAgICAgICAgb2JqZWN0CiAgICAjICAgICAgICAgICAgICAgICAgICAgIChjaGVjayBmb3IgJ3ByaW50JyBtZXRob2QgZm9yICd3JyBtb2RlKQogICAgIyAgICAgICAgICAgICAgICAgICAgICAoY2hlY2sgZm9yICdnZXRsaW5lJyBtZXRob2QgZm9yICdyJyBtb2RlKQoKICAgICMgQW4gb3B0aW9uYWwgZmxhZyAkaXNfZW5jb2RlZF9kYXRhIG1heSBiZSBnaXZlbiwgYXMgZm9sbG93czoKCiAgICAjIENhc2UgMS4gQW55IG5vbi1lbXB0eSBzdHJpbmc6IGVuY29kZWQgZGF0YSBpcyBiZWluZyB0cmFuc2ZlcnJlZCwgc2V0CiAgICAjIGVuY29kaW5nIHRvIGJlIHV0ZjggZm9yIGZpbGVzIGFuZCBmb3Igc3RkaW4uCgogICAgIyBDYXNlIDIuIE5vdCBnaXZlbiwgb3IgYW4gZW1wdHkgc3RyaW5nOiB1bmVuY29kZWQgYmluYXJ5IGRhdGEgaXMgYmVpbmcKICAgICMgdHJhbnNmZXJyZWQsIHNldCBiaW5hcnkgbW9kZSBmb3IgZmlsZXMgYW5kIGZvciBzdGRpbi4KCiAgICBteSAoICRmaWxlbmFtZSwgJG1vZGUsICRpc19lbmNvZGVkX2RhdGEgKSA9IEBfOwoKICAgIG15ICRyZWYgPSByZWYoJGZpbGVuYW1lKTsKICAgIG15ICROZXc7CiAgICBteSAkZmg7CgogICAgIyBoYW5kbGUgYSByZWZlcmVuY2UKICAgIGlmICgkcmVmKSB7CiAgICAgICAgaWYgKCAkcmVmIGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgICROZXcgPSBzdWIgeyBQZXJsOjpUaWR5OjpJT1NjYWxhckFycmF5LT5uZXcoICRmaWxlbmFtZSwgJG1vZGUgKSB9OwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRyZWYgZXEgJ1NDQUxBUicgKSB7CiAgICAgICAgICAgICROZXcgPSBzdWIgeyBQZXJsOjpUaWR5OjpJT1NjYWxhci0+bmV3KCAkZmlsZW5hbWUsICRtb2RlICkgfTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIEFjY2VwdCBhbiBvYmplY3Qgd2l0aCBhIGdldGxpbmUgbWV0aG9kIGZvciByZWFkaW5nLiBOb3RlOgogICAgICAgICAgICAjIElPOjpGaWxlIGlzIGJ1aWx0LWluIGFuZCBkb2VzIG5vdCByZXNwb25kIHRvIHRoZSBkZWZpbmVkCiAgICAgICAgICAgICMgb3BlcmF0b3IuICBJZiB0aGlzIGNhdXNlcyB0cm91YmxlLCB0aGUgY2hlY2sgY2FuIGJlCiAgICAgICAgICAgICMgc2tpcHBlZCBhbmQgd2UgY2FuIGp1c3QgbGV0IGl0IGNyYXNoIGlmIHRoZXJlIGlzIG5vCiAgICAgICAgICAgICMgZ2V0bGluZS4KICAgICAgICAgICAgaWYgKCAkbW9kZSA9fiAvW3JSXS8gKSB7CgogICAgICAgICAgICAgICAgIyBSVCM5NzE1OTsgcGFydCAxIG9mIDI6IHVwZGF0ZWQgdG8gdXNlICdjYW4nCiAgICAgICAgICAgICAgICAjI2lmICggJHJlZiBlcSAnSU86OkZpbGUnIHx8IGRlZmluZWQgJnsgJHJlZiAuICI6OmdldGxpbmUiIH0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRyZWYtPmNhbignZ2V0bGluZScpICkgewogICAgICAgICAgICAgICAgICAgICROZXcgPSBzdWIgeyAkZmlsZW5hbWUgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICROZXcgPSBzdWIgeyB1bmRlZiB9OwogICAgICAgICAgICAgICAgICAgIGNvbmZlc3MgPDxFT007Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpObyAnZ2V0bGluZScgbWV0aG9kIGlzIGRlZmluZWQgZm9yIG9iamVjdCBvZiBjbGFzcyAkcmVmClBsZWFzZSBjaGVjayB5b3VyIGNhbGwgdG8gUGVybDo6VGlkeTo6cGVybHRpZHkuICBUcmFjZSBmb2xsb3dzLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQWNjZXB0IGFuIG9iamVjdCB3aXRoIGEgcHJpbnQgbWV0aG9kIGZvciB3cml0aW5nLgogICAgICAgICAgICAjIFNlZSBub3RlIGFib3ZlIGFib3V0IElPOjpGaWxlCiAgICAgICAgICAgIGlmICggJG1vZGUgPX4gL1t3V10vICkgewoKICAgICAgICAgICAgICAgICMgUlQjOTcxNTk7IHBhcnQgMiBvZiAyOiB1cGRhdGVkIHRvIHVzZSAnY2FuJwogICAgICAgICAgICAgICAgIyNpZiAoICRyZWYgZXEgJ0lPOjpGaWxlJyB8fCBkZWZpbmVkICZ7ICRyZWYgLiAiOjpwcmludCIgfSApIHsKICAgICAgICAgICAgICAgIGlmICggJHJlZi0+Y2FuKCdwcmludCcpICkgewogICAgICAgICAgICAgICAgICAgICROZXcgPSBzdWIgeyAkZmlsZW5hbWUgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICROZXcgPSBzdWIgeyB1bmRlZiB9OwogICAgICAgICAgICAgICAgICAgIGNvbmZlc3MgPDxFT007Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpObyAncHJpbnQnIG1ldGhvZCBpcyBkZWZpbmVkIGZvciBvYmplY3Qgb2YgY2xhc3MgJHJlZgpQbGVhc2UgY2hlY2sgeW91ciBjYWxsIHRvIFBlcmw6OlRpZHk6OnBlcmx0aWR5LiBUcmFjZSBmb2xsb3dzLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBoYW5kbGUgYSBzdHJpbmcKICAgIGVsc2UgewogICAgICAgIGlmICggJGZpbGVuYW1lIGVxICctJyApIHsKICAgICAgICAgICAgJE5ldyA9IHN1YiB7ICRtb2RlIGVxICd3JyA/ICpTVERPVVQgOiAqU1RESU4gfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJE5ldyA9IHN1YiB7IElPOjpGaWxlLT5uZXcoICRmaWxlbmFtZSwgJG1vZGUgKSB9OwogICAgICAgIH0KICAgIH0KICAgICRmaCA9ICROZXctPiggJGZpbGVuYW1lLCAkbW9kZSApOwogICAgaWYgKCAhJGZoICkgewoKICAgICAgICBXYXJuKCJDb3VsZG4ndCBvcGVuIGZpbGU6JGZpbGVuYW1lIGluIG1vZGU6JG1vZGUgOiAkIVxuIik7CgogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgQ2FzZSAxOiBoYW5kbGUgZW5jb2RlZCBkYXRhCiAgICAgICAgaWYgKCRpc19lbmNvZGVkX2RhdGEpIHsKICAgICAgICAgICAgaWYgKCByZWYoJGZoKSBlcSAnSU86OkZpbGUnICkgewogICAgICAgICAgICAgICAgIyMgYmlubW9kZSBvYmplY3QgY2FsbCBub3QgYXZhaWxhYmxlIGluIG9sZGVyIHBlcmwgdmVyc2lvbnMKICAgICAgICAgICAgICAgICMjICRmaC0+YmlubW9kZSgiOnJhdzplbmNvZGluZyhVVEYtOCkiKTsKICAgICAgICAgICAgICAgIGJpbm1vZGUgJGZoLCAiOnJhdzplbmNvZGluZyhVVEYtOCkiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJGZpbGVuYW1lIGVxICctJyApIHsKICAgICAgICAgICAgICAgIGJpbm1vZGUgU1RET1VULCAiOnJhdzplbmNvZGluZyhVVEYtOCkiOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIENhc2UgMjogaGFuZGxlIHVuZW5jb2RlZCBkYXRhCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGlmICAgICggcmVmKCRmaCkgZXEgJ0lPOjpGaWxlJyApIHsgYmlubW9kZSAkZmggfQogICAgICAgICAgICBlbHNpZiAoICRmaWxlbmFtZSBlcSAnLScgKSAgICAgICB7IGJpbm1vZGUgU1RET1VUIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRmaCwgKCAkcmVmIG9yICRmaWxlbmFtZSApOwp9CgpzdWIgZmluZF9pbnB1dF9saW5lX2VuZGluZyB7CgogICAgIyBQZWVrIGF0IGEgZmlsZSBhbmQgcmV0dXJuIGZpcnN0IGxpbmUgZW5kaW5nIGNoYXJhY3Rlci4KICAgICMgUmV0dXJuIHVuZGVmaW5lZCB2YWx1ZSBpbiBjYXNlIG9mIGFueSB0cm91YmxlLgogICAgbXkgKCRpbnB1dF9maWxlKSA9IEBfOwogICAgbXkgJGVuZGluZzsKCiAgICAjIHNpbGVudGx5IGlnbm9yZSBpbnB1dCBmcm9tIG9iamVjdCBvciBzdGRpbgogICAgaWYgKCByZWYoJGlucHV0X2ZpbGUpIHx8ICRpbnB1dF9maWxlIGVxICctJyApIHsKICAgICAgICByZXR1cm4gJGVuZGluZzsKICAgIH0KCiAgICBteSAkZmg7CiAgICBvcGVuKCAkZmgsICc8JywgJGlucHV0X2ZpbGUgKSB8fCByZXR1cm4gJGVuZGluZzsKCiAgICBiaW5tb2RlICRmaDsKICAgIG15ICRidWY7CiAgICByZWFkKCAkZmgsICRidWYsIDEwMjQgKTsKICAgIGNsb3NlICRmaDsKICAgIGlmICggJGJ1ZiAmJiAkYnVmID1+IC8oW1wwMTJcMDE1XSspLyApIHsKICAgICAgICBteSAkdGVzdCA9ICQxOwoKICAgICAgICAjIGRvcwogICAgICAgIGlmICggJHRlc3QgPX4gL14oXDAxNVwwMTIpKyQvICkgeyAkZW5kaW5nID0gIlwwMTVcMDEyIiB9CgogICAgICAgICMgbWFjCiAgICAgICAgZWxzaWYgKCAkdGVzdCA9fiAvXlwwMTUrJC8gKSB7ICRlbmRpbmcgPSAiXDAxNSIgfQoKICAgICAgICAjIHVuaXgKICAgICAgICBlbHNpZiAoICR0ZXN0ID1+IC9eXDAxMiskLyApIHsgJGVuZGluZyA9ICJcMDEyIiB9CgogICAgICAgICMgdW5rbm93bgogICAgICAgIGVsc2UgeyB9CiAgICB9CgogICAgIyBubyBlbmRpbmcgc2VlbgogICAgZWxzZSB7IH0KCiAgICByZXR1cm4gJGVuZGluZzsKfQoKeyAgICAjIyBiZWdpbiBjbG9zdXJlIGZvciBzdWIgY2F0ZmlsZQoKICAgIG15ICRtaXNzaW5nX2ZpbGVfc3BlYzsKCiAgICBCRUdJTiB7CiAgICAgICAgZXZhbCB7IHJlcXVpcmUgRmlsZTo6U3BlYyB9OwogICAgICAgICRtaXNzaW5nX2ZpbGVfc3BlYyA9ICRAOwogICAgfQoKICAgIHN1YiBjYXRmaWxlIHsKCiAgICAgICAgIyBjb25jYXRlbmF0ZSBhIHBhdGggYW5kIGZpbGUgYmFzZW5hbWUKICAgICAgICAjIHJldHVybnMgdW5kZWYgaW4gY2FzZSBvZiBlcnJvcgoKICAgICAgICBteSBAcGFydHMgPSBAXzsKCiAgICAgICAgIyB1c2UgRmlsZTo6U3BlYyBpZiB3ZSBjYW4KICAgICAgICB1bmxlc3MgKCRtaXNzaW5nX2ZpbGVfc3BlYykgewogICAgICAgICAgICByZXR1cm4gRmlsZTo6U3BlYy0+Y2F0ZmlsZShAcGFydHMpOwogICAgICAgIH0KCiAgICAgICAgIyBQZXJsIDUuMDA0IHN5c3RlbXMgbWF5IG5vdCBoYXZlIEZpbGU6OlNwZWMgc28gd2UnbGwgbWFrZQogICAgICAgICMgYSBzaW1wbGUgdHJ5LiAgV2UgYXNzdW1lIEZpbGU6OkJhc2VuYW1lIGlzIGF2YWlsYWJsZS4KICAgICAgICAjIHJldHVybiBpZiBub3Qgc3VjY2Vzc2Z1bC4KICAgICAgICBteSAkbmFtZSAgICAgID0gcG9wIEBwYXJ0czsKICAgICAgICBteSAkcGF0aCAgICAgID0gam9pbiAnLycsIEBwYXJ0czsKICAgICAgICBteSAkdGVzdF9maWxlID0gJHBhdGggLiAkbmFtZTsKICAgICAgICBteSAoICR0ZXN0X25hbWUsICR0ZXN0X3BhdGggKSA9IGZpbGVwYXJzZSgkdGVzdF9maWxlKTsKICAgICAgICByZXR1cm4gJHRlc3RfZmlsZSBpZiAoICR0ZXN0X25hbWUgZXEgJG5hbWUgKTsKICAgICAgICByZXR1cm4gICAgICAgICAgICBpZiAoICReTyBlcSAnVk1TJyApOwoKICAgICAgICAjIHRoaXMgc2hvdWxkIHdvcmsgYXQgbGVhc3QgZm9yIFdpbmRvd3MgYW5kIFVuaXg6CiAgICAgICAgJHRlc3RfZmlsZSA9ICRwYXRoIC4gJy8nIC4gJG5hbWU7CiAgICAgICAgKCAkdGVzdF9uYW1lLCAkdGVzdF9wYXRoICkgPSBmaWxlcGFyc2UoJHRlc3RfZmlsZSk7CiAgICAgICAgcmV0dXJuICR0ZXN0X2ZpbGUgaWYgKCAkdGVzdF9uYW1lIGVxICRuYW1lICk7CiAgICAgICAgcmV0dXJuOwogICAgfQp9ICMjIGVuZCBjbG9zdXJlIGZvciBzdWIgY2F0ZmlsZQoKIyBIZXJlIGlzIGEgbWFwIG9mIHRoZSBmbG93IG9mIGRhdGEgZnJvbSB0aGUgaW5wdXQgc291cmNlIHRvIHRoZSBvdXRwdXQKIyBsaW5lIHNpbms6CiMKIyBMaW5lU291cmNlLS0+VG9rZW5pemVyLS0+Rm9ybWF0dGVyLS0+VmVydGljYWxBbGlnbmVyLS0+RmlsZVdyaXRlci0tPgojICAgICAgIGlucHV0ICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwcyAgICAgICAgICAgICAgICAgb3V0cHV0CiMgICAgICAgbGluZXMgICB0b2tlbnMgICAgICBsaW5lcyAgICAgICBvZiAgICAgICAgICBsaW5lcyAgICBsaW5lcwojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcwojCiMgVGhlIG5hbWVzIGNvcnJlc3BvbmQgdG8gdGhlIHBhY2thZ2UgbmFtZXMgcmVzcG9uc2libGUgZm9yIHRoZSB1bml0IHByb2Nlc3Nlcy4KIwojIFRoZSBvdmVyYWxsIHByb2Nlc3MgaXMgY29udHJvbGxlZCBieSB0aGUgIm1haW4iIHBhY2thZ2UuCiMKIyBMaW5lU291cmNlIGlzIHRoZSBzdHJlYW0gb2YgaW5wdXQgbGluZXMKIwojIFRva2VuaXplciBhbmFseXplcyBhIGxpbmUgYW5kIGJyZWFrcyBpdCBpbnRvIHRva2VucywgcGVla2luZyBhaGVhZAojIGlmIG5lY2Vzc2FyeS4gIEEgdG9rZW4gaXMgYW55IHNlY3Rpb24gb2YgdGhlIGlucHV0IGxpbmUgd2hpY2ggc2hvdWxkIGJlCiMgbWFuaXB1bGF0ZWQgYXMgYSBzaW5nbGUgZW50aXR5IGR1cmluZyBmb3JtYXR0aW5nLiAgRm9yIGV4YW1wbGUsIGEgc2luZ2xlCiMgJywnIGNoYXJhY3RlciBpcyBhIHRva2VuLCBhbmQgc28gaXMgYW4gZW50aXJlIHNpZGUgY29tbWVudC4gIEl0IGhhbmRsZXMKIyB0aGUgY29tcGxleGl0aWVzIG9mIFBlcmwgc3ludGF4LCBzdWNoIGFzIGRpc3Rpbmd1aXNoaW5nIGJldHdlZW4gJzw8JyBhcwojIGEgc2hpZnQgb3BlcmF0b3IgYW5kIGFzIGEgaGVyZS1kb2N1bWVudCwgb3IgZGlzdGluZ3Vpc2hpbmcgYmV0d2VlbiAnLycKIyBhcyBhIGRpdmlkZSBzeW1ib2wgYW5kIGFzIGEgcGF0dGVybiBkZWxpbWl0ZXIuCiMKIyBGb3JtYXR0ZXIgaW5zZXJ0cyBhbmQgZGVsZXRlcyB3aGl0ZXNwYWNlIGJldHdlZW4gdG9rZW5zLCBhbmQgYnJlYWtzCiMgc2VxdWVuY2VzIG9mIHRva2VucyBhdCBhcHByb3ByaWF0ZSBwb2ludHMgYXMgb3V0cHV0IGxpbmVzLiAgSXQgYmFzZXMgaXRzCiMgZGVjaXNpb25zIG9uIHRoZSBkZWZhdWx0IHJ1bGVzIGFzIG1vZGlmaWVkIGJ5IGFueSBjb21tYW5kLWxpbmUgb3B0aW9ucy4KIwojIFZlcnRpY2FsQWxpZ25lciBjb2xsZWN0cyBncm91cHMgb2YgbGluZXMgdG9nZXRoZXIgYW5kIHRyaWVzIHRvIGxpbmUgdXAKIyBjZXJ0YWluIHRva2Vucywgc3VjaCBhcyAnPT4nLCAnIycsIGFuZCAnPScgYnkgYWRkaW5nIHdoaXRlc3BhY2UuCiMKIyBGaWxlV3JpdGVyIHNpbXBseSB3cml0ZXMgbGluZXMgdG8gdGhlIG91dHB1dCBzdHJlYW0uCiMKIyBUaGUgTG9nZ2VyIHBhY2thZ2UsIG5vdCBzaG93biwgcmVjb3JkcyBzaWduaWZpY2FudCBldmVudHMgYW5kIHdhcm5pbmcKIyBtZXNzYWdlcy4gIEl0IHdyaXRlcyBhIC5MT0cgZmlsZSwgd2hpY2ggbWF5IGJlIHNhdmVkIHdpdGggYQojICctbG9nJyBvciBhICctZycgZmxhZy4KCnsgIzw8PAoKbXkgJFdhcm5fY291bnQ7Cm15ICRmaF9zdGRlcnI7CgojIEJ1bXAgV2Fybl9jb3VudCBvbmx5OiBpdCBpcyBlc3NlbnRpYWwgdG8gYnVtcCB0aGUgY291bnQgb24gYWxsIHdhcm5pbmdzLCBldmVuCiMgaWYgbm8gbWVzc2FnZSBnb2VzIG91dCwgc28gdGhhdCB0aGUgY29ycmVjdCBleGl0IHN0YXR1cyBpcyBzZXQuCnN1YiBXYXJuX2NvdW50X2J1bXAgeyAkV2Fybl9jb3VudCsrOyByZXR1cm4gfQoKIyBPdXRwdXQgV2FybiBtZXNzYWdlIG9ubHkKc3ViIFdhcm5fbXNnIHsgbXkgJG1zZyA9IHNoaWZ0OyAkZmhfc3RkZXJyLT5wcmludCgkbXNnKTsgcmV0dXJuIH0KCiMgT3V0cHV0IFdhcm4gbWVzc2FnZSBhbmQgYnVtcCBXYXJuIGNvdW50CnN1YiBXYXJuIHsgbXkgJG1zZyA9IHNoaWZ0OyAkZmhfc3RkZXJyLT5wcmludCgkbXNnKTsgJFdhcm5fY291bnQrKzsgcmV0dXJuIH0KCnN1YiBwZXJsdGlkeSB7CgogICAgbXkgJWlucHV0X2hhc2ggPSBAXzsKCiAgICBteSAlZGVmYXVsdHMgPSAoCiAgICAgICAgYXJndiAgICAgICAgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIGRlc3RpbmF0aW9uICAgICAgICAgICA9PiB1bmRlZiwKICAgICAgICBmb3JtYXR0ZXIgICAgICAgICAgICAgPT4gdW5kZWYsCiAgICAgICAgbG9nZmlsZSAgICAgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIGVycm9yZmlsZSAgICAgICAgICAgICA9PiB1bmRlZiwKICAgICAgICB0ZWVmaWxlICAgICAgICAgICAgICAgPT4gdW5kZWYsCiAgICAgICAgZGVidWdmaWxlICAgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIHBlcmx0aWR5cmMgICAgICAgICAgICA9PiB1bmRlZiwKICAgICAgICBzb3VyY2UgICAgICAgICAgICAgICAgPT4gdW5kZWYsCiAgICAgICAgc3RkZXJyICAgICAgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIGR1bXBfb3B0aW9ucyAgICAgICAgICA9PiB1bmRlZiwKICAgICAgICBkdW1wX29wdGlvbnNfdHlwZSAgICAgPT4gdW5kZWYsCiAgICAgICAgZHVtcF9nZXRvcHRfZmxhZ3MgICAgID0+IHVuZGVmLAogICAgICAgIGR1bXBfb3B0aW9uc19jYXRlZ29yeSA9PiB1bmRlZiwKICAgICAgICBkdW1wX29wdGlvbnNfcmFuZ2UgICAgPT4gdW5kZWYsCiAgICAgICAgZHVtcF9hYmJyZXZpYXRpb25zICAgID0+IHVuZGVmLAogICAgICAgIHByZWZpbHRlciAgICAgICAgICAgICA9PiB1bmRlZiwKICAgICAgICBwb3N0ZmlsdGVyICAgICAgICAgICAgPT4gdW5kZWYsCiAgICApOwoKICAgICMgZG9uJ3Qgb3ZlcndyaXRlIGNhbGxlcnMgQVJHVgogICAgbG9jYWwgQEFSR1YgICA9IEBBUkdWOwogICAgbG9jYWwgKlNUREVSUiA9ICpTVERFUlI7CgogICAgaWYgKCBteSBAYmFkX2tleXMgPSBncmVwIHsgIWV4aXN0cyAkZGVmYXVsdHN7JF99IH0ga2V5cyAlaW5wdXRfaGFzaCApIHsKICAgICAgICBsb2NhbCAkIiA9ICcpKCc7CiAgICAgICAgbXkgQGdvb2Rfa2V5cyA9IHNvcnQga2V5cyAlZGVmYXVsdHM7CiAgICAgICAgQGJhZF9rZXlzID0gc29ydCBAYmFkX2tleXM7CiAgICAgICAgY29uZmVzcyA8PEVPTTsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClVua25vd24gcGVybHRpZHkgcGFyYW1ldGVyIDogKEBiYWRfa2V5cykKcGVybHRpZHkgb25seSB1bmRlcnN0YW5kcyA6IChAZ29vZF9rZXlzKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkVPTQogICAgfQoKICAgIG15ICRnZXRfaGFzaF9yZWYgPSBzdWIgewogICAgICAgIG15ICgka2V5KSA9IEBfOwogICAgICAgIG15ICRoYXNoX3JlZiA9ICRpbnB1dF9oYXNoeyRrZXl9OwogICAgICAgIGlmICggZGVmaW5lZCgkaGFzaF9yZWYpICkgewogICAgICAgICAgICB1bmxlc3MgKCByZWYoJGhhc2hfcmVmKSBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICBteSAkd2hhdCA9IHJlZigkaGFzaF9yZWYpOwogICAgICAgICAgICAgICAgbXkgJGJ1dF9pcyA9CiAgICAgICAgICAgICAgICAgICR3aGF0ID8gImJ1dCBpcyByZWYgdG8gJHdoYXQiIDogImJ1dCBpcyBub3QgYSByZWZlcmVuY2UiOwogICAgICAgICAgICAgICAgY3JvYWsgPDxFT007Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQplcnJvciBpbiBjYWxsIHRvIHBlcmx0aWR5OgotJGtleSBtdXN0IGJlIHJlZmVyZW5jZSB0byBIQVNIICRidXRfaXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVPTQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkaGFzaF9yZWY7CiAgICB9OwoKICAgICVpbnB1dF9oYXNoID0gKCAlZGVmYXVsdHMsICVpbnB1dF9oYXNoICk7CiAgICBteSAkYXJndiAgICAgICAgICAgICAgID0gJGlucHV0X2hhc2h7J2FyZ3YnfTsKICAgIG15ICRkZXN0aW5hdGlvbl9zdHJlYW0gPSAkaW5wdXRfaGFzaHsnZGVzdGluYXRpb24nfTsKICAgIG15ICRlcnJvcmZpbGVfc3RyZWFtICAgPSAkaW5wdXRfaGFzaHsnZXJyb3JmaWxlJ307CiAgICBteSAkbG9nZmlsZV9zdHJlYW0gICAgID0gJGlucHV0X2hhc2h7J2xvZ2ZpbGUnfTsKICAgIG15ICR0ZWVmaWxlX3N0cmVhbSAgICAgPSAkaW5wdXRfaGFzaHsndGVlZmlsZSd9OwogICAgbXkgJGRlYnVnZmlsZV9zdHJlYW0gICA9ICRpbnB1dF9oYXNoeydkZWJ1Z2ZpbGUnfTsKICAgIG15ICRwZXJsdGlkeXJjX3N0cmVhbSAgPSAkaW5wdXRfaGFzaHsncGVybHRpZHlyYyd9OwogICAgbXkgJHNvdXJjZV9zdHJlYW0gICAgICA9ICRpbnB1dF9oYXNoeydzb3VyY2UnfTsKICAgIG15ICRzdGRlcnJfc3RyZWFtICAgICAgPSAkaW5wdXRfaGFzaHsnc3RkZXJyJ307CiAgICBteSAkdXNlcl9mb3JtYXR0ZXIgICAgID0gJGlucHV0X2hhc2h7J2Zvcm1hdHRlcid9OwogICAgbXkgJHByZWZpbHRlciAgICAgICAgICA9ICRpbnB1dF9oYXNoeydwcmVmaWx0ZXInfTsKICAgIG15ICRwb3N0ZmlsdGVyICAgICAgICAgPSAkaW5wdXRfaGFzaHsncG9zdGZpbHRlcid9OwoKICAgIGlmICgkc3RkZXJyX3N0cmVhbSkgewogICAgICAgICggJGZoX3N0ZGVyciwgbXkgJHN0ZGVycl9maWxlICkgPQogICAgICAgICAgUGVybDo6VGlkeTo6c3RyZWFtaGFuZGxlKCAkc3RkZXJyX3N0cmVhbSwgJ3cnICk7CiAgICAgICAgaWYgKCAhJGZoX3N0ZGVyciApIHsKICAgICAgICAgICAgY3JvYWsgPDxFT007Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpVbmFibGUgdG8gcmVkaXJlY3QgU1RERVJSIHRvICRzdGRlcnJfc3RyZWFtClBsZWFzZSBjaGVjayB2YWx1ZSBvZiAtc3RkZXJyIGluIGNhbGwgdG8gcGVybHRpZHkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVPTQogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRmaF9zdGRlcnIgPSAqU1RERVJSOwogICAgfQoKICAgIHN1YiBFeGl0IHsKICAgICAgICBteSAkZmxhZyA9IHNoaWZ0OwogICAgICAgIGlmICAgKCRmbGFnKSB7IGdvdG8gRVJST1JfRVhJVCB9CiAgICAgICAgZWxzZSAgICAgICAgIHsgZ290byBOT1JNQUxfRVhJVCB9CiAgICAgICAgY3JvYWsgInVuZXhwZWN0ZCByZXR1cm4gdG8gRXhpdCI7CiAgICB9CgogICAgc3ViIERpZSB7CiAgICAgICAgbXkgJG1zZyA9IHNoaWZ0OwogICAgICAgIFdhcm4oJG1zZyk7CiAgICAgICAgRXhpdCgxKTsKICAgICAgICBjcm9hayAidW5leHBlY3RlZCByZXR1cm4gdG8gRGllIjsKICAgIH0KCiAgICBteSAkbWQ1X2hleCA9IHN1YiB7CiAgICAgICAgbXkgKCRidWYpID0gQF87CgogICAgICAgICMgRXZhbHVhdGUgdGhlIE1ENSBzdW0gZm9yIGEgc3RyaW5nCiAgICAgICAgIyBQYXRjaCBmb3IgW3J0LmNwYW4ub3JnICM4ODAyMF0KICAgICAgICAjIFVzZSB1dGY4OjplbmNvZGUgc2luY2UgbWQ1X2hleCgpIG9ubHkgb3BlcmF0ZXMgb24gYnl0ZXMuCiAgICAgICAgIyBteSAkZGlnZXN0ID0gbWQ1X2hleCggdXRmODo6ZW5jb2RlKCRzaW5rX2J1ZmZlcikgKTsKCiAgICAgICAgIyBOb3RlIGFkZGVkIDIwMTgwMTE0OiB0aGUgYWJvdmUgcGF0Y2ggZGlkIG5vdCB3b3JrIGNvcnJlY3RseS4gIEknbSBub3QKICAgICAgICAjIHN1cmUgd2h5LiAgQnV0IHN3aXRjaGluZyB0byB0aGUgbWV0aG9kIHJlY29tbWVuZGVkIGluIHRoZSBQZXJsIDUKICAgICAgICAjIGRvY3VtZW50YXRpb24gZm9yIEVuY29kZSB3b3JrZWQuICBBY2NvcmRpbmcgdG8gdGhpcyB3ZSBjYW4gZWl0aGVyIHVzZQogICAgICAgICMgICAgJG9jdGV0cyA9IGVuY29kZV91dGY4KCRzdHJpbmcpICBvciBlcXVpdmFsZW50bHkKICAgICAgICAjICAgICRvY3RldHMgPSBlbmNvZGUoInV0ZjgiLCRzdHJpbmcpCiAgICAgICAgIyBhbmQgdGhlbiBjYWxjdWxhdGUgdGhlIGNoZWNrc3VtLiAgU286CiAgICAgICAgbXkgJG9jdGV0cyA9IEVuY29kZTo6ZW5jb2RlKCAidXRmOCIsICRidWYgKTsKICAgICAgICBteSAkZGlnZXN0ID0gbWQ1X2hleCgkb2N0ZXRzKTsKICAgICAgICByZXR1cm4gJGRpZ2VzdDsKICAgIH07CgogICAgIyBleHRyYWN0IHZhcmlvdXMgZHVtcCBwYXJhbWV0ZXJzCiAgICBteSAkZHVtcF9vcHRpb25zX3R5cGUgICAgID0gJGlucHV0X2hhc2h7J2R1bXBfb3B0aW9uc190eXBlJ307CiAgICBteSAkZHVtcF9vcHRpb25zICAgICAgICAgID0gJGdldF9oYXNoX3JlZi0+KCdkdW1wX29wdGlvbnMnKTsKICAgIG15ICRkdW1wX2dldG9wdF9mbGFncyAgICAgPSAkZ2V0X2hhc2hfcmVmLT4oJ2R1bXBfZ2V0b3B0X2ZsYWdzJyk7CiAgICBteSAkZHVtcF9vcHRpb25zX2NhdGVnb3J5ID0gJGdldF9oYXNoX3JlZi0+KCdkdW1wX29wdGlvbnNfY2F0ZWdvcnknKTsKICAgIG15ICRkdW1wX2FiYnJldmlhdGlvbnMgICAgPSAkZ2V0X2hhc2hfcmVmLT4oJ2R1bXBfYWJicmV2aWF0aW9ucycpOwogICAgbXkgJGR1bXBfb3B0aW9uc19yYW5nZSAgICA9ICRnZXRfaGFzaF9yZWYtPignZHVtcF9vcHRpb25zX3JhbmdlJyk7CgogICAgIyB2YWxpZGF0ZSBkdW1wX29wdGlvbnNfdHlwZQogICAgaWYgKCBkZWZpbmVkKCRkdW1wX29wdGlvbnMpICkgewogICAgICAgIHVubGVzcyAoIGRlZmluZWQoJGR1bXBfb3B0aW9uc190eXBlKSApIHsKICAgICAgICAgICAgJGR1bXBfb3B0aW9uc190eXBlID0gJ3Blcmx0aWR5cmMnOwogICAgICAgIH0KICAgICAgICB1bmxlc3MgKCAkZHVtcF9vcHRpb25zX3R5cGUgPX4gL14ocGVybHRpZHlyY3xmdWxsKSQvICkgewogICAgICAgICAgICBjcm9hayA8PEVPTTsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClBsZWFzZSBjaGVjayB2YWx1ZSBvZiAtZHVtcF9vcHRpb25zX3R5cGUgaW4gY2FsbCB0byBwZXJsdGlkeTsKc2F3OiAnJGR1bXBfb3B0aW9uc190eXBlJyAKZXhwZWN0aW5nOiAncGVybHRpZHlyYycgb3IgJ2Z1bGwnCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFT00KCiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJGR1bXBfb3B0aW9uc190eXBlID0gIiI7CiAgICB9CgogICAgaWYgKCR1c2VyX2Zvcm1hdHRlcikgewoKICAgICAgICAjIGlmIHRoZSB1c2VyIGRlZmluZXMgYSBmb3JtYXR0ZXIsIHRoZXJlIGlzIG5vIG91dHB1dCBzdHJlYW0sCiAgICAgICAgIyBidXQgd2UgbmVlZCBhIG51bGwgc3RyZWFtIHRvIGtlZXAgY29kaW5nIHNpbXBsZQogICAgICAgICRkZXN0aW5hdGlvbl9zdHJlYW0gPSBQZXJsOjpUaWR5OjpEZXZOdWxsLT5uZXcoKTsKICAgIH0KCiAgICAjIHNlZSBpZiBBUkdWIGlzIG92ZXJyaWRkZW4KICAgIGlmICggZGVmaW5lZCgkYXJndikgKSB7CgogICAgICAgIG15ICRyYXJndiA9IHJlZiAkYXJndjsKICAgICAgICBpZiAoICRyYXJndiBlcSAnU0NBTEFSJyApIHsgJGFyZ3YgPSAkeyRhcmd2fTsgJHJhcmd2ID0gdW5kZWYgfQoKICAgICAgICAjIHJlZiB0byBBUlJBWQogICAgICAgIGlmICgkcmFyZ3YpIHsKICAgICAgICAgICAgaWYgKCAkcmFyZ3YgZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgIEBBUkdWID0gQHskYXJndn07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBjcm9hayA8PEVPTTsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClBsZWFzZSBjaGVjayB2YWx1ZSBvZiAtYXJndiBpbiBjYWxsIHRvIHBlcmx0aWR5OwppdCBtdXN0IGJlIGEgc3RyaW5nIG9yIHJlZiB0byBBUlJBWSBidXQgaXM6ICRyYXJndgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc3RyaW5nCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15ICggJHJhcmd2LCAkbXNnICkgPSBwYXJzZV9hcmdzKCRhcmd2KTsKICAgICAgICAgICAgaWYgKCRtc2cpIHsKICAgICAgICAgICAgICAgIERpZSg8PEVPTSk7CkVycm9yIHBhcnNpbmcgdGhpcyBzdHJpbmcgcGFzc2VkIHRvIHRvIHBlcmx0aWR5IHdpdGggJ2FyZ3YnOiAKJG1zZwpFT00KICAgICAgICAgICAgfQogICAgICAgICAgICBAQVJHViA9IEB7JHJhcmd2fTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJHJwZW5kaW5nX2NvbXBsYWludDsKICAgICR7JHJwZW5kaW5nX2NvbXBsYWludH0gPSAiIjsKICAgIG15ICRycGVuZGluZ19sb2dmaWxlX21lc3NhZ2U7CiAgICAkeyRycGVuZGluZ19sb2dmaWxlX21lc3NhZ2V9ID0gIiI7CgogICAgbXkgKCAkaXNfV2luZG93cywgJFdpbmRvd3NfdHlwZSApID0gbG9va19mb3JfV2luZG93cygkcnBlbmRpbmdfY29tcGxhaW50KTsKCiAgICAjIFZNUyBmaWxlIG5hbWVzIGFyZSByZXN0cmljdGVkIHRvIGEgNDAuNDAgZm9ybWF0LCBzbyB3ZSBhcHBlbmQgX3RkeQogICAgIyBpbnN0ZWFkIG9mIC50ZHksIGV0Yy4gKGJ1dCBzZWUgYWxzbyBzdWIgY2hlY2tfdm1zX2ZpbGVuYW1lKQogICAgbXkgJGRvdDsKICAgIG15ICRkb3RfcGF0dGVybjsKICAgIGlmICggJF5PIGVxICdWTVMnICkgewogICAgICAgICRkb3QgICAgICAgICA9ICdfJzsKICAgICAgICAkZG90X3BhdHRlcm4gPSAnXyc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkZG90ICAgICAgICAgPSAnLic7CiAgICAgICAgJGRvdF9wYXR0ZXJuID0gJ1wuJzsgICAgIyBtdXN0IGVzY2FwZSBmb3IgdXNlIGluIHJlZ2V4CiAgICB9CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBnZXQgY29tbWFuZCBsaW5lIG9wdGlvbnMKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIG15ICggJHJPcHRzLCAkY29uZmlnX2ZpbGUsICRycmF3X29wdGlvbnMsICRyb3B0aW9uX3N0cmluZywKICAgICAgICAkcmV4cGFuc2lvbiwgJHJvcHRpb25fY2F0ZWdvcnksICRyb3B0aW9uX3JhbmdlICkKICAgICAgPSBwcm9jZXNzX2NvbW1hbmRfbGluZSgKICAgICAgICAkcGVybHRpZHlyY19zdHJlYW0sICAkaXNfV2luZG93cywgJFdpbmRvd3NfdHlwZSwKICAgICAgICAkcnBlbmRpbmdfY29tcGxhaW50LCAkZHVtcF9vcHRpb25zX3R5cGUsCiAgICAgICk7CgogICAgbXkgJHNhd19leHRydWRlID0gKCBncmVwIHsgbS9eLWV4dHJ1ZGUkLyB9IEB7JHJyYXdfb3B0aW9uc30gKSA/IDEgOiAwOwogICAgbXkgJHNhd19wYnAgPQogICAgICAoIGdyZXAgeyBtL14tKHBicHxwZXJsLWJlc3QtcHJhY3RpY2VzKSQvIH0gQHskcnJhd19vcHRpb25zfSApID8gMSA6IDA7CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBIYW5kbGUgcmVxdWVzdHMgdG8gZHVtcCBpbmZvcm1hdGlvbgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICMgcmV0dXJuIG9yIGV4aXQgaW1tZWRpYXRlbHkgYWZ0ZXIgYWxsIGR1bXBzCiAgICBteSAkcXVpdF9ub3cgPSAwOwoKICAgICMgR2V0b3B0IHBhcmFtZXRlcnMgYW5kIHRoZWlyIGZsYWdzCiAgICBpZiAoIGRlZmluZWQoJGR1bXBfZ2V0b3B0X2ZsYWdzKSApIHsKICAgICAgICAkcXVpdF9ub3cgPSAxOwogICAgICAgIGZvcmVhY2ggbXkgJG9wICggQHskcm9wdGlvbl9zdHJpbmd9ICkgewogICAgICAgICAgICBteSAkb3B0ICA9ICRvcDsKICAgICAgICAgICAgbXkgJGZsYWcgPSAiIjsKCiAgICAgICAgICAgICMgRXhhbXBsZXM6CiAgICAgICAgICAgICMgIHNvbWUtb3B0aW9uPXMKICAgICAgICAgICAgIyAgc29tZS1vcHRpb249aQogICAgICAgICAgICAjICBzb21lLW9wdGlvbjppCiAgICAgICAgICAgICMgIHNvbWUtb3B0aW9uIQogICAgICAgICAgICBpZiAoICRvcHQgPX4gLyguKikoIXw9Lip8Oi4qKSQvICkgewogICAgICAgICAgICAgICAgJG9wdCAgPSAkMTsKICAgICAgICAgICAgICAgICRmbGFnID0gJDI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGR1bXBfZ2V0b3B0X2ZsYWdzLT57JG9wdH0gPSAkZmxhZzsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCBkZWZpbmVkKCRkdW1wX29wdGlvbnNfY2F0ZWdvcnkpICkgewogICAgICAgICRxdWl0X25vdyA9IDE7CiAgICAgICAgJXskZHVtcF9vcHRpb25zX2NhdGVnb3J5fSA9ICV7JHJvcHRpb25fY2F0ZWdvcnl9OwogICAgfQoKICAgIGlmICggZGVmaW5lZCgkZHVtcF9vcHRpb25zX3JhbmdlKSApIHsKICAgICAgICAkcXVpdF9ub3cgPSAxOwogICAgICAgICV7JGR1bXBfb3B0aW9uc19yYW5nZX0gPSAleyRyb3B0aW9uX3JhbmdlfTsKICAgIH0KCiAgICBpZiAoIGRlZmluZWQoJGR1bXBfYWJicmV2aWF0aW9ucykgKSB7CiAgICAgICAgJHF1aXRfbm93ID0gMTsKICAgICAgICAleyRkdW1wX2FiYnJldmlhdGlvbnN9ID0gJXskcmV4cGFuc2lvbn07CiAgICB9CgogICAgaWYgKCBkZWZpbmVkKCRkdW1wX29wdGlvbnMpICkgewogICAgICAgICRxdWl0X25vdyA9IDE7CiAgICAgICAgJXskZHVtcF9vcHRpb25zfSA9ICV7JHJPcHRzfTsKICAgIH0KCiAgICBFeGl0KDApIGlmICgkcXVpdF9ub3cpOwoKICAgICMgbWFrZSBwcmludGFibGUgc3RyaW5nIG9mIG9wdGlvbnMgZm9yIHRoaXMgcnVuIGFzIHBvc3NpYmxlIGRpYWdub3N0aWMKICAgIG15ICRyZWFkYWJsZV9vcHRpb25zID0gcmVhZGFibGVfb3B0aW9ucyggJHJPcHRzLCAkcm9wdGlvbl9zdHJpbmcgKTsKCiAgICAjIGR1bXAgZnJvbSBjb21tYW5kIGxpbmUKICAgIGlmICggJHJPcHRzLT57J2R1bXAtb3B0aW9ucyd9ICkgewogICAgICAgIHByaW50IFNURE9VVCAkcmVhZGFibGVfb3B0aW9uczsKICAgICAgICBFeGl0KDApOwogICAgfQoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgY2hlY2sgcGFyYW1ldGVycyBhbmQgdGhlaXIgaW50ZXJhY3Rpb25zCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBteSAkdGFic2l6ZSA9CiAgICAgIGNoZWNrX29wdGlvbnMoICRyT3B0cywgJGlzX1dpbmRvd3MsICRXaW5kb3dzX3R5cGUsICRycGVuZGluZ19jb21wbGFpbnQgKTsKCiAgICBpZiAoJHVzZXJfZm9ybWF0dGVyKSB7CiAgICAgICAgJHJPcHRzLT57J2Zvcm1hdCd9ID0gJ3VzZXInOwogICAgfQoKICAgICMgdGhlcmUgbXVzdCBiZSBvbmUgZW50cnkgaGVyZSBmb3IgZXZlcnkgcG9zc2libGUgZm9ybWF0CiAgICBteSAlZGVmYXVsdF9maWxlX2V4dGVuc2lvbiA9ICgKICAgICAgICB0aWR5ID0+ICd0ZHknLAogICAgICAgIGh0bWwgPT4gJ2h0bWwnLAogICAgICAgIHVzZXIgPT4gJycsCiAgICApOwoKICAgICMgYmUgc3VyZSB3ZSBoYXZlIGEgdmFsaWQgb3V0cHV0IGZvcm1hdAogICAgdW5sZXNzICggZXhpc3RzICRkZWZhdWx0X2ZpbGVfZXh0ZW5zaW9ueyAkck9wdHMtPnsnZm9ybWF0J30gfSApIHsKICAgICAgICBteSAkZm9ybWF0cyA9IGpvaW4gJyAnLAogICAgICAgICAgc29ydCBtYXAgeyAiJyIgLiAkXyAuICInIiB9IGtleXMgJWRlZmF1bHRfZmlsZV9leHRlbnNpb247CiAgICAgICAgbXkgJGZtdCA9ICRyT3B0cy0+eydmb3JtYXQnfTsKICAgICAgICBEaWUoIi1mb3JtYXQ9JyRmbXQnIGJ1dCBtdXN0IGJlIG9uZSBvZjogJGZvcm1hdHNcbiIpOwogICAgfQoKICAgIG15ICRvdXRwdXRfZXh0ZW5zaW9uID0gbWFrZV9leHRlbnNpb24oICRyT3B0cy0+eydvdXRwdXQtZmlsZS1leHRlbnNpb24nfSwKICAgICAgICAkZGVmYXVsdF9maWxlX2V4dGVuc2lvbnsgJHJPcHRzLT57J2Zvcm1hdCd9IH0sICRkb3QgKTsKCiAgICAjIElmIHRoZSBiYWNrdXAgZXh0ZW5zaW9uIGNvbnRhaW5zIGEgLyBjaGFyYWN0ZXIgdGhlbiB0aGUgYmFja3VwIHNob3VsZAogICAgIyBiZSBkZWxldGVkIHdoZW4gdGhlIC1iIG9wdGlvbiBpcyB1c2VkLiAgIE9uIG9sZGVyIHZlcnNpb25zIG9mCiAgICAjIHBlcmx0aWR5IHRoaXMgd2lsbCBnZW5lcmF0ZSBhbiBlcnJvciBtZXNzYWdlIGR1ZSB0byBhbiBpbGxlZ2FsCiAgICAjIGZpbGUgbmFtZS4KICAgICMKICAgICMgQSBiYWNrdXAgZmlsZSB3aWxsIHN0aWxsIGJlIGdlbmVyYXRlZCBidXQgd2lsbCBiZSBkZWxldGVkCiAgICAjIGF0IHRoZSBlbmQuICBJZiAtYmV4dD0nLycgdGhlbiB0aGlzIGV4dGVuc2lvbiB3aWxsIGJlCiAgICAjIHRoZSBkZWZhdWx0ICdiYWsnLiAgT3RoZXJ3aXNlIGl0IHdpbGwgYmUgd2hhdGV2ZXIgY2hhcmFjdGVycwogICAgIyByZW1haW5zIGFmdGVyIGFsbCAnLycgY2hhcmFjdGVycyBhcmUgcmVtb3ZlZC4gIEZvciBleGFtcGxlOgogICAgIyAtYmV4dCAgICAgICAgIGV4dGVuc2lvbiAgICAgc2xhc2hlcwogICAgIyAgJy8nICAgICAgICAgIGJhayAgICAgICAgICAgMQogICAgIyAgJy9kZWxldGUnICAgIGRlbGV0ZSAgICAgICAgMQogICAgIyAgJ2RlbGV0ZS8nICAgIGRlbGV0ZSAgICAgICAgMQogICAgIyAgJy9kZXYvbnVsbCcgIGRldm51bGwgICAgICAgMiAgICAoQ3VycmVudGx5IG5vdCBhbGxvd2VkKQogICAgbXkgJGJleHQgICAgICAgICAgPSAkck9wdHMtPnsnYmFja3VwLWZpbGUtZXh0ZW5zaW9uJ307CiAgICBteSAkZGVsZXRlX2JhY2t1cCA9ICggJHJPcHRzLT57J2JhY2t1cC1maWxlLWV4dGVuc2lvbid9ID1+IHMvXC8vL2cgKTsKCiAgICAjIEF0IHByZXNlbnQgb25seSBvbmUgZm9yd2FyZCBzbGFzaCBpcyBhbGxvd2VkLiAgSW4gdGhlIGZ1dHVyZSBtdWx0aXBsZQogICAgIyBzbGFzaGVzIG1heSBiZSBhbGxvd2VkIHRvIGFsbG93IGZvciBvdGhlciBvcHRpb25zCiAgICBpZiAoICRkZWxldGVfYmFja3VwID4gMSApIHsKICAgICAgICBEaWUoIi1iZXh0PSRiZXh0IGNvbnRhaW5zIG1vcmUgdGhhbiBvbmUgJy8nXG4iKTsKICAgIH0KCiAgICBteSAkYmFja3VwX2V4dGVuc2lvbiA9CiAgICAgIG1ha2VfZXh0ZW5zaW9uKCAkck9wdHMtPnsnYmFja3VwLWZpbGUtZXh0ZW5zaW9uJ30sICdiYWsnLCAkZG90ICk7CgogICAgbXkgJGh0bWxfdG9jX2V4dGVuc2lvbiA9CiAgICAgIG1ha2VfZXh0ZW5zaW9uKCAkck9wdHMtPnsnaHRtbC10b2MtZXh0ZW5zaW9uJ30sICd0b2MnLCAkZG90ICk7CgogICAgbXkgJGh0bWxfc3JjX2V4dGVuc2lvbiA9CiAgICAgIG1ha2VfZXh0ZW5zaW9uKCAkck9wdHMtPnsnaHRtbC1zcmMtZXh0ZW5zaW9uJ30sICdzcmMnLCAkZG90ICk7CgogICAgIyBjaGVjayBmb3IgLWIgb3B0aW9uOwogICAgIyBzaWxlbnRseSBpZ25vcmUgdW5sZXNzIGJlYXV0aWZ5IG1vZGUKICAgIG15ICRpbl9wbGFjZV9tb2RpZnkgPSAkck9wdHMtPnsnYmFja3VwLWFuZC1tb2RpZnktaW4tcGxhY2UnfQogICAgICAmJiAkck9wdHMtPnsnZm9ybWF0J30gZXEgJ3RpZHknOwoKICAgICMgVHVybiBvZmYgLWIgd2l0aCB3YXJuaW5ncyBpbiBjYXNlIG9mIGNvbmZsaWN0cyB3aXRoIG90aGVyIG9wdGlvbnMuCiAgICAjIE5PVEU6IERvIHRoaXMgc2lsZW50bHksIHdpdGhvdXQgd2FybmluZ3MsIGlmIHRoZXJlIGlzIGEgc291cmNlIG9yCiAgICAjIGRlc3RpbmF0aW9uIHN0cmVhbSwgb3Igc3RhbmRhcmQgb3V0cHV0IGlzIHVzZWQuICBUaGlzIGlzIGJlY2F1c2UgdGhlIC1iCiAgICAjIGZsYWcgbWF5IGhhdmUgYmVlbiBpbiBhIC5wZXJsdGlkeXJjIGZpbGUgYW5kIHdhcm5pbmdzIGJyZWFrCiAgICAjIFRlc3Q6Ok5vV2FybmluZ3MuICBTZWUgZW1haWwgZGlzY3Vzc2lvbiB3aXRoIE1lcmlqbiBCcmFuZCAyNiBGZWIgMjAxNC4KICAgIGlmICgkaW5fcGxhY2VfbW9kaWZ5KSB7CiAgICAgICAgaWYgKCAgICRyT3B0cy0+eydzdGFuZGFyZC1vdXRwdXQnfQogICAgICAgICAgICB8fCAkZGVzdGluYXRpb25fc3RyZWFtCiAgICAgICAgICAgIHx8IHJlZiAkc291cmNlX3N0cmVhbQogICAgICAgICAgICB8fCAkck9wdHMtPnsnb3V0ZmlsZSd9CiAgICAgICAgICAgIHx8IGRlZmluZWQoICRyT3B0cy0+eydvdXRwdXQtcGF0aCd9ICkgKQogICAgICAgIHsKICAgICAgICAgICAgJGluX3BsYWNlX21vZGlmeSA9IDA7CiAgICAgICAgfQogICAgfQoKICAgICMgVHVybiBvZmYgYXNzZXJ0LXRpZHkgYW5kIGFzc2VydC11bnRpZHkgdW5sZXNzIHdlIGFyZSB0aWR5aW5nIGZpbGVzCiAgICBpZiAoICRyT3B0cy0+eydmb3JtYXQnfSBuZSAndGlkeScgKSB7CiAgICAgICAgaWYgKCAkck9wdHMtPnsnYXNzZXJ0LXRpZHknfSApIHsKICAgICAgICAgICAgJHJPcHRzLT57J2Fzc2VydC10aWR5J30gPSAwOwogICAgICAgICAgICBXYXJuKCJpZ25vcmluZyAtLWFzc2VydC10aWR5LCAtLWZvcm1hdCBpcyBub3QgJ3RpZHknXG4iKTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkck9wdHMtPnsnYXNzZXJ0LXVudGlkeSd9ICkgewogICAgICAgICAgICAkck9wdHMtPnsnYXNzZXJ0LXVudGlkeSd9ID0gMDsKICAgICAgICAgICAgV2FybigiaWdub3JpbmcgLS1hc3NlcnQtdW50aWR5LCAtLWZvcm1hdCBpcyBub3QgJ3RpZHknXG4iKTsKICAgICAgICB9CiAgICB9CgogICAgUGVybDo6VGlkeTo6Rm9ybWF0dGVyOjpjaGVja19vcHRpb25zKCRyT3B0cyk7CiAgICBQZXJsOjpUaWR5OjpUb2tlbml6ZXI6OmNoZWNrX29wdGlvbnMoJHJPcHRzKTsKICAgIGlmICggJHJPcHRzLT57J2Zvcm1hdCd9IGVxICdodG1sJyApIHsKICAgICAgICBQZXJsOjpUaWR5OjpIdG1sV3JpdGVyLT5jaGVja19vcHRpb25zKCRyT3B0cyk7CiAgICB9CgogICAgIyBtYWtlIHRoZSBwYXR0ZXJuIG9mIGZpbGUgZXh0ZW5zaW9ucyB0aGF0IHdlIHNob3VsZG4ndCB0b3VjaAogICAgbXkgJGZvcmJpZGRlbl9maWxlX2V4dGVuc2lvbnMgPSAiKCgkZG90X3BhdHRlcm4pKExPR3xERUJVR3xFUlJ8VEVFKSI7CiAgICBpZiAoJG91dHB1dF9leHRlbnNpb24pIHsKICAgICAgICBteSAkZXh0ID0gcXVvdGVtZXRhKCRvdXRwdXRfZXh0ZW5zaW9uKTsKICAgICAgICAkZm9yYmlkZGVuX2ZpbGVfZXh0ZW5zaW9ucyAuPSAifCRleHQiOwogICAgfQogICAgaWYgKCAkaW5fcGxhY2VfbW9kaWZ5ICYmICRiYWNrdXBfZXh0ZW5zaW9uICkgewogICAgICAgIG15ICRleHQgPSBxdW90ZW1ldGEoJGJhY2t1cF9leHRlbnNpb24pOwogICAgICAgICRmb3JiaWRkZW5fZmlsZV9leHRlbnNpb25zIC49ICJ8JGV4dCI7CiAgICB9CiAgICAkZm9yYmlkZGVuX2ZpbGVfZXh0ZW5zaW9ucyAuPSAnKSQnOwoKICAgICMgQ3JlYXRlIGEgZGlhZ25vc3RpY3Mgb2JqZWN0IGlmIHJlcXVlc3RlZDsKICAgICMgVGhpcyBpcyBvbmx5IHVzZWZ1bCBmb3IgY29kZSBkZXZlbG9wbWVudAogICAgbXkgJGRpYWdub3N0aWNzX29iamVjdCA9IHVuZGVmOwogICAgaWYgKCAkck9wdHMtPnsnRElBR05PU1RJQ1MnfSApIHsKICAgICAgICAkZGlhZ25vc3RpY3Nfb2JqZWN0ID0gUGVybDo6VGlkeTo6RGlhZ25vc3RpY3MtPm5ldygpOwogICAgfQoKICAgICMgbm8gZmlsZW5hbWVzIHNob3VsZCBiZSBnaXZlbiBpZiBpbnB1dCBpcyBmcm9tIGFuIGFycmF5CiAgICBpZiAoJHNvdXJjZV9zdHJlYW0pIHsKICAgICAgICBpZiAoIEBBUkdWID4gMCApIHsKICAgICAgICAgICAgRGllKAoiWW91IG1heSBub3Qgc3BlY2lmeSBhbnkgZmlsZW5hbWVzIHdoZW4gYSBzb3VyY2UgYXJyYXkgaXMgZ2l2ZW5cbiIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgd2UnbGwgc3R1ZmYgdGhlIHNvdXJjZSBhcnJheSBpbnRvIEFSR1YKICAgICAgICB1bnNoaWZ0KCBAQVJHViwgJHNvdXJjZV9zdHJlYW0gKTsKCiAgICAgICAgIyBObyBzcGVjaWFsIHRyZWF0bWVudCBmb3Igc291cmNlIHN0cmVhbSB3aGljaCBpcyBhIGZpbGVuYW1lLgogICAgICAgICMgVGhpcyB3aWxsIGVuYWJsZSBjaGVja3MgZm9yIGJpbmFyeSBmaWxlcyBhbmQgb3RoZXIgYmFkIHN0dWZmLgogICAgICAgICRzb3VyY2Vfc3RyZWFtID0gdW5kZWYgdW5sZXNzIHJlZigkc291cmNlX3N0cmVhbSk7CiAgICB9CgogICAgIyB1c2Ugc3RkaW4gYnkgZGVmYXVsdCBpZiBubyBzb3VyY2UgYXJyYXkgYW5kIG5vIGFyZ3MKICAgIGVsc2UgewogICAgICAgIHVuc2hpZnQoIEBBUkdWLCAnLScgKSB1bmxlc3MgQEFSR1Y7CiAgICB9CgogICAgIyBGbGFnIGZvciBsb2FkaW5nIG1vZHVsZSBVbmljb2RlOjpHQ1N0cmluZyBmb3IgZXZhbHVhdGluZyB0ZXh0IHdpZHRoOgogICAgIyAgIHVuZGVmID0gb2sgdG8gdXNlIGJ1dCBub3QgeWV0IGxvYWRlZAogICAgIyAgICAgICAwID0gZG8gbm90IHVzZTsgZmFpbGVkIHRvIGxvYWQgb3Igbm90IHdhbnRlZAogICAgIyAgICAgICAxID0gc3VjY2Vzc2Z1bGx5IGxvYWRlZCBhbmQgb2sgdG8gdXNlCiAgICAjIFRoZSBtb2R1bGUgaXMgbm90IGFjdHVhbGx5IGxvYWRlZCB1bmxlc3MvdW50aWwgaXQgaXMgbmVlZGVkCiAgICBteSAkbG9hZGVkX3VuaWNvZGVfZ2NzdHJpbmc7CiAgICBpZiAoICEkck9wdHMtPnsndXNlLXVuaWNvZGUtZ2NzdHJpbmcnfSApIHsKICAgICAgICAkbG9hZGVkX3VuaWNvZGVfZ2NzdHJpbmcgPSAwOwogICAgfQoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgUmVhZHkgdG8gZ28uLi4KICAgICMgbWFpbiBsb29wIHRvIHByb2Nlc3MgYWxsIGZpbGVzIGluIGFyZ3VtZW50IGxpc3QKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIG15ICRudW1iZXJfb2ZfZmlsZXMgPSBAQVJHVjsKICAgIG15ICRmb3JtYXR0ZXIgICAgICAgPSB1bmRlZjsKICAgIG15ICR0b2tlbml6ZXIgICAgICAgPSB1bmRlZjsKCiAgICAjIElmIHJlcXVlc3RlZCwgcHJvY2VzcyBpbiBvcmRlciBvZiBpbmNyZWFzaW5nIGZpbGUgc2l6ZQogICAgIyBUaGlzIGNhbiBzaWduaWZpY2FudGx5IHJlZHVjZSBwZXJsJ3MgdmlydHVhbCBtZW1vcnkgdXNhZ2UgZHVyaW5nIHRlc3RpbmcuCiAgICBpZiAoICRudW1iZXJfb2ZfZmlsZXMgPiAxICYmICRyT3B0cy0+eydmaWxlLXNpemUtb3JkZXInfSApIHsKICAgICAgICBAQVJHViA9CiAgICAgICAgICBtYXAgIHsgJF8tPlswXSB9CiAgICAgICAgICBzb3J0IHsgJGEtPlsxXSA8PT4gJGItPlsxXSB9CiAgICAgICAgICBtYXAgIHsgWyAkXywgLWUgJF8gPyAtcyAkXyA6IDAgXSB9IEBBUkdWOwogICAgfQoKICAgICMgUmVtb3ZlIGR1cGxpY2F0ZSBmaWxlbmFtZXMuICBPdGhlcndpc2UsIGZvciBleGFtcGxlIGlmIHRoZSB1c2VyIGVudGVyZWQKICAgICMgICAgIHBlcmx0aWR5IC1iIG15ZmlsZS5wbCBteWZpbGUucGwKICAgICMgdGhlIGJhY2t1cCB2ZXJzaW9uIG9mIHRoZSBvcmlnaW5hbCB3b3VsZCBiZSBsb3N0LgogICAgaWYgKCAkbnVtYmVyX29mX2ZpbGVzID4gMSApIHsKICAgICAgICBteSAlc2VlbiA9ICgpOwogICAgICAgIEBBUkdWID0gZ3JlcCB7ICEkc2VlbnskX30rKyB9IEBBUkdWOwogICAgfQoKICAgIHdoaWxlICggbXkgJGlucHV0X2ZpbGUgPSBzaGlmdCBAQVJHViApIHsKICAgICAgICBteSAkZmlsZXJvb3Q7CiAgICAgICAgbXkgQGlucHV0X2ZpbGVfc3RhdDsKICAgICAgICBteSAkZGlzcGxheV9uYW1lOwoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBwcmVwYXJlIHRoaXMgaW5wdXQgc3RyZWFtCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgIGlmICgkc291cmNlX3N0cmVhbSkgewogICAgICAgICAgICAkZmlsZXJvb3QgICAgID0gInBlcmx0aWR5IjsKICAgICAgICAgICAgJGRpc3BsYXlfbmFtZSA9ICI8c291cmNlX3N0cmVhbT4iOwoKICAgICAgICAgICAgIyBJZiB0aGUgc291cmNlIGlzIGZyb20gYW4gYXJyYXkgb3Igc3RyaW5nLCB0aGVuIC5MT0cgb3V0cHV0CiAgICAgICAgICAgICMgaXMgb25seSBwb3NzaWJsZSBpZiBhIGxvZ2ZpbGUgc3RyZWFtIGlzIHNwZWNpZmllZC4gIFRoaXMgcHJldmVudHMKICAgICAgICAgICAgIyB1bmV4cGVjdGVkIHBlcmx0aWR5LkxPRyBmaWxlcy4KICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCgkbG9nZmlsZV9zdHJlYW0pICkgewogICAgICAgICAgICAgICAgJGxvZ2ZpbGVfc3RyZWFtID0gUGVybDo6VGlkeTo6RGV2TnVsbC0+bmV3KCk7CgogICAgICAgICAgICAgICAgIyBMaWtld2lzZSBmb3IgLlRFRSBhbmQgLkRFQlVHIG91dHB1dAogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggIWRlZmluZWQoJHRlZWZpbGVfc3RyZWFtKSApIHsKICAgICAgICAgICAgICAgICR0ZWVmaWxlX3N0cmVhbSA9IFBlcmw6OlRpZHk6OkRldk51bGwtPm5ldygpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggIWRlZmluZWQoJGRlYnVnZmlsZV9zdHJlYW0pICkgewogICAgICAgICAgICAgICAgJGRlYnVnZmlsZV9zdHJlYW0gPSBQZXJsOjpUaWR5OjpEZXZOdWxsLT5uZXcoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRpbnB1dF9maWxlIGVxICctJyApIHsgICAgIyAnLScgaW5kaWNhdGVzIGlucHV0IGZyb20gU1RESU4KICAgICAgICAgICAgJGZpbGVyb290ICAgICA9ICJwZXJsdGlkeSI7ICAgIyByb290IG5hbWUgdG8gdXNlIGZvciAuRVJSLCAuTE9HLCBldGMKICAgICAgICAgICAgJGRpc3BsYXlfbmFtZSA9ICI8c3RkaW4+IjsKICAgICAgICAgICAgJGluX3BsYWNlX21vZGlmeSA9IDA7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkZmlsZXJvb3QgICAgID0gJGlucHV0X2ZpbGU7CiAgICAgICAgICAgICRkaXNwbGF5X25hbWUgPSAkaW5wdXRfZmlsZTsKICAgICAgICAgICAgdW5sZXNzICggLWUgJGlucHV0X2ZpbGUgKSB7CgogICAgICAgICAgICAgICAgIyBmaWxlIGRvZXNuJ3QgZXhpc3QgLSBjaGVjayBmb3IgYSBmaWxlIGdsb2IKICAgICAgICAgICAgICAgIGlmICggJGlucHV0X2ZpbGUgPX4gLyhbXD9cKlxbXHtdKS8gKSB7CgogICAgICAgICAgICAgICAgICAgICMgV2luZG93cyBzaGVsbCBtYXkgbm90IHJlbW92ZSBxdW90ZXMsIHNvIGRvIGl0CiAgICAgICAgICAgICAgICAgICAgbXkgJGlucHV0X2ZpbGUgPSAkaW5wdXRfZmlsZTsKICAgICAgICAgICAgICAgICAgICBpZiAoICRpbnB1dF9maWxlID1+IC9eXCcoLispXCckLyApIHsgJGlucHV0X2ZpbGUgPSAkMSB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkaW5wdXRfZmlsZSA9fiAvXlwiKC4rKVwiJC8gKSB7ICRpbnB1dF9maWxlID0gJDEgfQogICAgICAgICAgICAgICAgICAgIG15ICRwYXR0ZXJuID0gZmlsZWdsb2JfdG9fcmUoJGlucHV0X2ZpbGUpOwogICAgICAgICAgICAgICAgICAgIGlmICggb3BlbmRpciggRElSLCAnLi8nICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15IEBmaWxlcyA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlcCB7IC8kcGF0dGVybi8gJiYgIS1kICRfIH0gcmVhZGRpcihESVIpOwogICAgICAgICAgICAgICAgICAgICAgICBjbG9zZWRpcihESVIpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoQGZpbGVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0IEBBUkdWLCBAZmlsZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgV2Fybigic2tpcHBpbmcgZmlsZTogJyRpbnB1dF9maWxlJzogbm8gbWF0Y2hlcyBmb3VuZFxuIik7CiAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICB9CgogICAgICAgICAgICB1bmxlc3MgKCAtZiAkaW5wdXRfZmlsZSApIHsKICAgICAgICAgICAgICAgIFdhcm4oInNraXBwaW5nIGZpbGU6ICRpbnB1dF9maWxlOiBub3QgYSByZWd1bGFyIGZpbGVcbiIpOwogICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBBcyBhIHNhZmV0eSBwcmVjYXV0aW9uLCBza2lwIHplcm8gbGVuZ3RoIGZpbGVzLgogICAgICAgICAgICAjIElmIGZvciBleGFtcGxlIGEgc291cmNlIGZpbGUgZ290IGNsb2JiZXJlZCBzb21laG93LAogICAgICAgICAgICAjIHRoZSBvbGQgLnRkeSBvciAuYmFrIGZpbGVzIG1pZ2h0IHN0aWxsIGV4aXN0IHNvIHdlCiAgICAgICAgICAgICMgc2hvdWxkbid0IG92ZXJ3cml0ZSB0aGVtIHdpdGggemVybyBsZW5ndGggZmlsZXMuCiAgICAgICAgICAgIHVubGVzcyAoIC1zICRpbnB1dF9maWxlICkgewogICAgICAgICAgICAgICAgV2Fybigic2tpcHBpbmcgZmlsZTogJGlucHV0X2ZpbGU6IFplcm8gc2l6ZVxuIik7CiAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIEFuZCBhdm9pZCBmb3JtYXR0aW5nIGV4dHJlbWVseSBsYXJnZSBmaWxlcy4gU2luY2UgcGVybHRpZHkgcmVhZHMKICAgICAgICAgICAgIyBmaWxlcyBpbnRvIG1lbW9yeSwgdHJ5aW5nIHRvIHByb2Nlc3MgYW4gZXh0cmVtZWx5IGxhcmdlIGZpbGUKICAgICAgICAgICAgIyBjb3VsZCBjYXVzZSBzeXN0ZW0gcHJvYmxlbXMuCiAgICAgICAgICAgIG15ICRzaXplX2luX21iID0gKCAtcyAkaW5wdXRfZmlsZSApIC8gKCAxMDI0ICogMTAyNCApOwogICAgICAgICAgICBpZiAoICRzaXplX2luX21iID4gJHJPcHRzLT57J21heGltdW0tZmlsZS1zaXplLW1iJ30gKSB7CiAgICAgICAgICAgICAgICAkc2l6ZV9pbl9tYiA9IHNwcmludGYoICIlMC4xZiIsICRzaXplX2luX21iICk7CiAgICAgICAgICAgICAgICBXYXJuKAoic2tpcHBpbmcgZmlsZTogJGlucHV0X2ZpbGU6IHNpemUgJHNpemVfaW5fbWIgTUIgZXhjZWVkcyBsaW1pdCAkck9wdHMtPnsnbWF4aW11bS1maWxlLXNpemUtbWInfTsgdXNlIC1tZnM9aSB0byBjaGFuZ2VcbiIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICB9CgogICAgICAgICAgICB1bmxlc3MgKCAoIC1UICRpbnB1dF9maWxlICkgfHwgJHJPcHRzLT57J2ZvcmNlLXJlYWQtYmluYXJ5J30gKSB7CiAgICAgICAgICAgICAgICBXYXJuKAogICAgICAgICAgICAgICAgICAgICJza2lwcGluZyBmaWxlOiAkaW5wdXRfZmlsZTogTm9uLXRleHQgKG92ZXJyaWRlIHdpdGggLWYpXG4iCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB3ZSBzaG91bGQgaGF2ZSBhIHZhbGlkIGZpbGVuYW1lIG5vdwogICAgICAgICAgICAkZmlsZXJvb3QgICAgICAgID0gJGlucHV0X2ZpbGU7CiAgICAgICAgICAgIEBpbnB1dF9maWxlX3N0YXQgPSBzdGF0KCRpbnB1dF9maWxlKTsKCiAgICAgICAgICAgIGlmICggJF5PIGVxICdWTVMnICkgewogICAgICAgICAgICAgICAgKCAkZmlsZXJvb3QsICRkb3QgKSA9IGNoZWNrX3Ztc19maWxlbmFtZSgkZmlsZXJvb3QpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFkZCBvcHRpb24gdG8gY2hhbmdlIHBhdGggaGVyZQogICAgICAgICAgICBpZiAoIGRlZmluZWQoICRyT3B0cy0+eydvdXRwdXQtcGF0aCd9ICkgKSB7CgogICAgICAgICAgICAgICAgbXkgKCAkYmFzZSwgJG9sZF9wYXRoICkgPSBmaWxlcGFyc2UoJGZpbGVyb290KTsKICAgICAgICAgICAgICAgIG15ICRuZXdfcGF0aCA9ICRyT3B0cy0+eydvdXRwdXQtcGF0aCd9OwogICAgICAgICAgICAgICAgdW5sZXNzICggLWQgJG5ld19wYXRoICkgewogICAgICAgICAgICAgICAgICAgIHVubGVzcyAoIG1rZGlyICRuZXdfcGF0aCwgMDc3NyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgRGllKCJ1bmFibGUgdG8gY3JlYXRlIGRpcmVjdG9yeSAkbmV3X3BhdGg6ICQhXG4iKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBteSAkcGF0aCA9ICRuZXdfcGF0aDsKICAgICAgICAgICAgICAgICRmaWxlcm9vdCA9IGNhdGZpbGUoICRwYXRoLCAkYmFzZSApOwogICAgICAgICAgICAgICAgdW5sZXNzICgkZmlsZXJvb3QpIHsKICAgICAgICAgICAgICAgICAgICBEaWUoPDxFT00pOwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUHJvYmxlbSBjb21iaW5pbmcgJG5ld19wYXRoIGFuZCAkYmFzZSB0byBtYWtlIGEgZmlsZW5hbWU7IGNoZWNrIC1vcGF0aAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgU2tpcCBmaWxlcyB3aXRoIHNhbWUgZXh0ZW5zaW9uIGFzIHRoZSBvdXRwdXQgZmlsZXMgYmVjYXVzZQogICAgICAgICMgdGhpcyBjYW4gbGVhZCB0byBhIG1lc3N5IHNpdHVhdGlvbiB3aXRoIGZpbGVzIGxpa2UKICAgICAgICAjIHNjcmlwdC50ZHkudGR5LnRkeSAuLi4gb3Igd29yc2UgcHJvYmxlbXMgLi4uICB3aGVuIHlvdQogICAgICAgICMgcmVydW4gcGVybHRpZHkgb3ZlciBhbmQgb3ZlciB3aXRoIHdpbGRjYXJkIGlucHV0LgogICAgICAgIGlmICgKICAgICAgICAgICAgISRzb3VyY2Vfc3RyZWFtCiAgICAgICAgICAgICYmICggICAkaW5wdXRfZmlsZSA9fiAvJGZvcmJpZGRlbl9maWxlX2V4dGVuc2lvbnMvCiAgICAgICAgICAgICAgICB8fCAkaW5wdXRfZmlsZSBlcSAnRElBR05PU1RJQ1MnICkKICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIFdhcm4oInNraXBwaW5nIGZpbGU6ICRpbnB1dF9maWxlOiB3cm9uZyBleHRlbnNpb25cbiIpOwogICAgICAgICAgICBuZXh0OwogICAgICAgIH0KCiAgICAgICAgIyB0aGUgJ3NvdXJjZV9vYmplY3QnIHN1cHBsaWVzIGEgbWV0aG9kIHRvIHJlYWQgdGhlIGlucHV0IGZpbGUKICAgICAgICBteSAkc291cmNlX29iamVjdCA9IFBlcmw6OlRpZHk6OkxpbmVTb3VyY2UtPm5ldygKICAgICAgICAgICAgaW5wdXRfZmlsZSAgICAgICAgICAgICAgID0+ICRpbnB1dF9maWxlLAogICAgICAgICAgICByT3B0cyAgICAgICAgICAgICAgICAgICAgPT4gJHJPcHRzLAogICAgICAgICAgICBycGVuZGluZ19sb2dmaWxlX21lc3NhZ2UgPT4gJHJwZW5kaW5nX2xvZ2ZpbGVfbWVzc2FnZSwKICAgICAgICApOwogICAgICAgIG5leHQgdW5sZXNzICgkc291cmNlX29iamVjdCk7CgogICAgICAgIG15ICRtYXhfaXRlcmF0aW9ucyAgICAgID0gJHJPcHRzLT57J2l0ZXJhdGlvbnMnfTsKICAgICAgICBteSAkZG9fY29udmVyZ2VuY2VfdGVzdCA9ICRtYXhfaXRlcmF0aW9ucyA+IDE7CiAgICAgICAgbXkgJGNvbnZlcmdlbmNlX2xvZ19tZXNzYWdlOwogICAgICAgIG15ICVzYXdfbWQ1OwogICAgICAgIG15ICRkaWdlc3RfaW5wdXQgPSAwOwoKICAgICAgICBteSAkYnVmID0gJyc7CiAgICAgICAgd2hpbGUgKCBteSAkbGluZSA9ICRzb3VyY2Vfb2JqZWN0LT5nZXRfbGluZSgpICkgewogICAgICAgICAgICAkYnVmIC49ICRsaW5lOwogICAgICAgIH0KCiAgICAgICAgIyBEZWNvZGUgdGhlIGlucHV0IHN0cmVhbSBpZiBuZWNlc3NhcnkgcmVxdWVzdGVkCiAgICAgICAgbXkgJGVuY29kaW5nX2luICAgICAgICAgICAgICA9ICIiOwogICAgICAgIG15ICRyT3B0c19jaGFyYWN0ZXJfZW5jb2RpbmcgPSAkck9wdHMtPnsnY2hhcmFjdGVyLWVuY29kaW5nJ307CiAgICAgICAgbXkgJGVuY29kaW5nX2xvZ19tZXNzYWdlOwoKICAgICAgICAjIENhc2UgMS4gU2VlIGlmIHdlIGFscmVhZHkgaGF2ZSBhbiBlbmNvZGVkIHN0cmluZy4gSW4gdGhhdAogICAgICAgICMgY2FzZSwgd2UgaGF2ZSB0byBpZ25vcmUgYW55IGVuY29kaW5nIGZsYWcuCiAgICAgICAgaWYgKCB1dGY4Ojppc191dGY4KCRidWYpICkgewogICAgICAgICAgICAkZW5jb2RpbmdfaW4gPSAidXRmOCI7CiAgICAgICAgfQoKICAgICAgICAjIENhc2UgMi4gTm8gaW5wdXQgc3RyZWFtIGVuY29kaW5nIHJlcXVlc3RlZC4gIFRoaXMgaXMgYXBwcm9wcmlhdGUKICAgICAgICAjIGZvciBzaW5nbGUtYnl0ZSBlbmNvZGluZ3MgbGlrZSBhc2NpaSwgbGF0aW4tMSwgZXRjCiAgICAgICAgZWxzaWYgKCAhJHJPcHRzX2NoYXJhY3Rlcl9lbmNvZGluZwogICAgICAgICAgICB8fCAkck9wdHNfY2hhcmFjdGVyX2VuY29kaW5nIGVxICdub25lJyApCiAgICAgICAgewoKICAgICAgICAgICAgIyBub3RoaW5nIHRvIGRvCiAgICAgICAgfQoKICAgICAgICAjIENhc2UgMy4gZ3Vlc3MgaW5wdXQgc3RyZWFtIGVuY29kaW5nIGlmIHJlcXVlc3RlZAogICAgICAgIGVsc2lmICggJHJPcHRzX2NoYXJhY3Rlcl9lbmNvZGluZyA9fiAvXmd1ZXNzJC9pICkgewoKICAgICAgICAgICAgIyBUaGUgZ3Vlc3Npbmcgc3RyYXRlZ3kgaXMgc2ltcGxlOiB1c2UgRW5jb2RlOjpHdWVzcyB0byBndWVzcwogICAgICAgICAgICAjIGFuIGVuY29kaW5nLiAgSWYgYW5kIG9ubHkgaWYgdGhlIGd1ZXNzIGlzIHV0ZjgsIHRyeSBkZWNvZGluZyBhbmQKICAgICAgICAgICAgIyB1c2UgaXQgaWYgc3VjY2Vzc2Z1bC4gIE90aGVyd2lzZSwgd2UgcHJvY2VlZCBhc3N1bWluZyB0aGUKICAgICAgICAgICAgIyBjaGFyYWN0ZXJzIGFyZSBlbmNvZGVkIGFzIHNpbmdsZSBieXRlcyAoc2FtZSBhcyBpZiAnbm9uZScgaGFkCiAgICAgICAgICAgICMgYmVlbiBzcGVjaWZpZWQgYXMgdGhlIGVuY29kaW5nKS4KCiAgICAgICAgICAgICMgSW4gdGVzdGluZyBJIGhhdmUgZm91bmQgdGhhdCBpbmNsdWRpbmcgYWRkaXRpb25hbCBndWVzcyAnc3VzcGVjdCcKICAgICAgICAgICAgIyBlbmNvZGluZ3Mgc29tZXRpbWVzIHdvcmtzIGJ1dCBjYW4gc29tZXRpbWVzIGxlYWQgdG8gZGlzYXN0ZXIgYnkKICAgICAgICAgICAgIyB1c2luZyBhbiBpbmNvcnJlY3QgZGVjb2RpbmcuICBUaGUgdXNlciBjYW4gYWx3YXlzIHNwZWNpZnkgYQogICAgICAgICAgICAjIHNwZWNpZmljIGlucHV0IGVuY29kaW5nLgogICAgICAgICAgICBteSAkYnVmX2luID0gJGJ1ZjsKCiAgICAgICAgICAgIG15ICRkZWNvZGVyID0gZ3Vlc3NfZW5jb2RpbmcoICRidWZfaW4sICd1dGY4JyApOwogICAgICAgICAgICBpZiAoIHJlZigkZGVjb2RlcikgKSB7CiAgICAgICAgICAgICAgICAkZW5jb2RpbmdfaW4gPSAkZGVjb2Rlci0+bmFtZTsKICAgICAgICAgICAgICAgIGlmICggJGVuY29kaW5nX2luICF+IC9eKFVURi04fHV0ZjgpJC8gKSB7CiAgICAgICAgICAgICAgICAgICAgJGVuY29kaW5nX2luID0gIiI7CiAgICAgICAgICAgICAgICAgICAgJGJ1ZiAgICAgICAgID0gJGJ1Zl9pbjsKICAgICAgICAgICAgICAgICAgICAkZW5jb2RpbmdfbG9nX21lc3NhZ2UgLj0gPDxFT007Ckd1ZXNzZWQgZW5jb2RpbmcgJyRlbmNvZGluZ19pbicgaXMgbm90IHV0Zjg7IG5vIGVuY29kaW5nIHdpbGwgYmUgdXNlZApFT00KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICBldmFsIHsgJGJ1ZiA9ICRkZWNvZGVyLT5kZWNvZGUoJGJ1Zl9pbik7IH07CiAgICAgICAgICAgICAgICAgICAgaWYgKCRAKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAkZW5jb2RpbmdfbG9nX21lc3NhZ2UgLj0gPDxFT007Ckd1ZXNzZWQgZW5jb2RpbmcgJyRlbmNvZGluZ19pbicgYnV0IGRlY29kaW5nIHdhcyB1bnN1Y2Nlc3NmdWw7IG5vIGVuY29kaW5nIGlzIHVzZWQKRU9NCgogICAgICAgICAgICAgICAgICAgICAgICAjIE5vdGUgdGhhdCBhIGd1ZXNzIGZhaWxlZCwgYnV0IGtlZXAgZ29pbmcKICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIHdhcm5pbmcgY2FuIGV2ZW50dWFsbHkgYmUgcmVtb3ZlZAogICAgICAgICAgICAgICAgICAgICAgICBXYXJuKAoiZmlsZTogJGlucHV0X2ZpbGU6IGJhZCBndWVzcyB0byBkZWNvZGUgc291cmNlIGFzICRlbmNvZGluZ19pblxuIgogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAkZW5jb2RpbmdfaW4gPSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgJGJ1ZiAgICAgICAgID0gJGJ1Zl9pbjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRlbmNvZGluZ19sb2dfbWVzc2FnZSAuPSA8PEVPTTsKR3Vlc3NlZCBlbmNvZGluZyAnJGVuY29kaW5nX2luJyBzdWNjZXNzZnVsbHkgZGVjb2RlZApFT00KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgQ2FzZSA0LiBEZWNvZGUgd2l0aCBhIHNwZWNpZmljIGVuY29kaW5nCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRlbmNvZGluZ19pbiA9ICRyT3B0c19jaGFyYWN0ZXJfZW5jb2Rpbmc7CiAgICAgICAgICAgIGV2YWwgewogICAgICAgICAgICAgICAgJGJ1ZiA9IEVuY29kZTo6ZGVjb2RlKCAkZW5jb2RpbmdfaW4sICRidWYsCiAgICAgICAgICAgICAgICAgICAgRW5jb2RlOjpGQl9DUk9BSyB8IEVuY29kZTo6TEVBVkVfU1JDICk7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGlmICgkQCkgewoKICAgICAgICAgICAgICAgICMgUXVpdCBpZiB3ZSBjYW5ub3QgZGVjb2RlIGJ5IHRoZSByZXF1ZXN0ZWQgZW5jb2Rpbmc7CiAgICAgICAgICAgICAgICAjIFNvbWV0aGluZyBpcyBub3QgcmlnaHQuCiAgICAgICAgICAgICAgICBXYXJuKAoic2tpcHBpbmcgZmlsZTogJGRpc3BsYXlfbmFtZTogVW5hYmxlIHRvIGRlY29kZSBzb3VyY2UgYXMgJGVuY29kaW5nX2luXG4iCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRlbmNvZGluZ19sb2dfbWVzc2FnZSAuPSA8PEVPTTsKU3BlY2lmaWVkIGVuY29kaW5nICckZW5jb2RpbmdfaW4nIHN1Y2Nlc3NmdWxseSBkZWNvZGVkCkVPTQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFNldCB0aGUgZW5jb2RpbmcgdG8gYmUgdXNlZCBmb3IgYWxsIGZ1cnRoZXIgaS9vOiBJZiB3ZSBoYXZlCiAgICAgICAgIyBkZWNvZGVkIHRoZSBkYXRhIHdpdGggYW55IGZvcm1hdCwgdGhlbiB3ZSBtdXN0IGNvbnRpbnVlIHRvCiAgICAgICAgIyByZWFkIGFuZCB3cml0ZSBpdCBhcyBlbmNvZGVkIGRhdGEsIGFuZCB3ZSB3aWxsIG5vcm1hbGl6ZSB0aGVzZQogICAgICAgICMgb3BlcmF0aW9ucyB3aXRoIHV0ZjguICBJZiB3ZSBoYXZlIG5vdCBkZWNvZGVkIHRoZSBkYXRhLCB0aGVuCiAgICAgICAgIyB3ZSBtdXN0IG5vdCB0cmVhdCBpdCBhcyBlbmNvZGVkIGRhdGEuCiAgICAgICAgbXkgJGlzX2VuY29kZWRfZGF0YSA9ICRlbmNvZGluZ19pbiA/ICd1dGY4JyA6ICIiOwoKICAgICAgICMgRGVmaW5lIHRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgdGhlIGRpc3BsYXkgd2lkdGggb2YgY2hhcmFjdGVyIHN0cmluZ3MKICAgICAgICBteSAkbGVuZ3RoX2Z1bmN0aW9uID0gc3ViIHsgcmV0dXJuIGxlbmd0aCggJF9bMF0gKSB9OwogICAgICAgIGlmICgkaXNfZW5jb2RlZF9kYXRhKSB7CgogICAgICAgICAgICAjIERlbGV0ZSBhbnkgQnl0ZSBPcmRlciBNYXJrIChCT00pLCB3aGljaCBjYW4gY2F1c2UgdHJvdWJsZQogICAgICAgICAgICAkYnVmID1+IHMvXlx4e0ZFRkZ9Ly87CgogICAgICAgICAgICAjIFRyeSB0byBsb2FkIFVuaWNvZGU6OkdDU3RyaW5nIGZvciBkZWZpbmluZyB0ZXh0IGRpc3BsYXkgd2lkdGgsIGlmCiAgICAgICAgICAgICMgcmVxdWVzdGVkLCB3aGVuIHRoZSBmaXJzdCBlbmNvZGVkIGZpbGUgaXMgZW5jb3VudGVyZWQKICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCgkbG9hZGVkX3VuaWNvZGVfZ2NzdHJpbmcpICkgewogICAgICAgICAgICAgICAgZXZhbCB7IHJlcXVpcmUgVW5pY29kZTo6R0NTdHJpbmcgfTsKICAgICAgICAgICAgICAgICRsb2FkZWRfdW5pY29kZV9nY3N0cmluZyA9ICEkQDsKICAgICAgICAgICAgICAgIGlmICggJEAgJiYgJHJPcHRzLT57J3VzZS11bmljb2RlLWdjc3RyaW5nJ30gKSB7CiAgICAgICAgICAgICAgICAgICAgV2Fybig8PEVPTSk7Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVW5hYmxlIHRvIGxvYWQgVW5pY29kZTo6R0NTdHJpbmc6ICRAClByb2Nlc3NpbmcgY29udGludWVzIGJ1dCBzb21lIHZlcnRpY2FsIGFsaWdubWVudCBtYXkgYmUgcG9vcgpUbyBwcmV2ZW50IHRoaXMgd2FybmluZyBtZXNzYWdlLCB5b3UgY2FuIGVpdGhlcjoKLSBpbnN0YWxsIG1vZHVsZSBVbmljb2RlOjpHQ1N0cmluZywgb3IKLSByZW1vdmUgJy0tdXNlLXVuaWNvZGUtZ2NzdHJpbmcnIG9yICctZ2NzJyBmcm9tIHlvdXIgcGVybHRpZHlyYyBvciBjb21tYW5kIGxpbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFT00KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJGxvYWRlZF91bmljb2RlX2djc3RyaW5nKSB7CiAgICAgICAgICAgICAgICAkbGVuZ3RoX2Z1bmN0aW9uID0gc3ViIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gVW5pY29kZTo6R0NTdHJpbmctPm5ldyggJF9bMF0gKS0+Y29sdW1uczsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgTUQ1IHN1bSBvZiBpbnB1dCBmaWxlIGlzIGV2YWx1YXRlZCBiZWZvcmUgYW55IHByZWZpbHRlcgogICAgICAgIG15ICRzYXZlZF9pbnB1dF9idWY7CiAgICAgICAgaWYgKCAkck9wdHMtPnsnYXNzZXJ0LXRpZHknfSB8fCAkck9wdHMtPnsnYXNzZXJ0LXVudGlkeSd9ICkgewogICAgICAgICAgICAkZGlnZXN0X2lucHV0ICAgID0gJG1kNV9oZXgtPigkYnVmKTsKICAgICAgICAgICAgJHNhdmVkX2lucHV0X2J1ZiA9ICRidWY7CiAgICAgICAgfQoKICAgICAgICAjIFByZWZpbHRlcnMgYW5kIHBvc3RmaWx0ZXJzOiBUaGUgcHJlZmlsdGVyIGlzIGEgY29kZSByZWZlcmVuY2UKICAgICAgICAjIHRoYXQgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBzb3VyY2UgYmVmb3JlIHRpZHlpbmcsIGFuZCB0aGUKICAgICAgICAjIHBvc3RmaWx0ZXIgaXMgYSBjb2RlIHJlZmVyZW5jZSB0byB0aGUgcmVzdWx0IGJlZm9yZSBvdXRwdXR0aW5nLgoKICAgICAgICAkYnVmID0gJHByZWZpbHRlci0+KCRidWYpIGlmICRwcmVmaWx0ZXI7CgogICAgICAgICMgc3RhcnRpbmcgTUQ1IHN1bSBmb3IgY29udmVyZ2VuY2UgdGVzdCBpcyBldmFsdWF0ZWQgYWZ0ZXIgYW55IHByZWZpbHRlcgogICAgICAgIGlmICgkZG9fY29udmVyZ2VuY2VfdGVzdCkgewogICAgICAgICAgICBteSAkZGlnZXN0ID0gJG1kNV9oZXgtPigkYnVmKTsKICAgICAgICAgICAgJHNhd19tZDV7JGRpZ2VzdH0gPSAwOwogICAgICAgIH0KCiAgICAgICAgJHNvdXJjZV9vYmplY3QgPSBQZXJsOjpUaWR5OjpMaW5lU291cmNlLT5uZXcoCiAgICAgICAgICAgIGlucHV0X2ZpbGUgICAgICAgICAgICAgICA9PiBcJGJ1ZiwKICAgICAgICAgICAgck9wdHMgICAgICAgICAgICAgICAgICAgID0+ICRyT3B0cywKICAgICAgICAgICAgcnBlbmRpbmdfbG9nZmlsZV9tZXNzYWdlID0+ICRycGVuZGluZ19sb2dmaWxlX21lc3NhZ2UsCiAgICAgICAgKTsKCiAgICAgICAgIyByZWdpc3RlciB0aGlzIGZpbGUgbmFtZSB3aXRoIHRoZSBEaWFnbm9zdGljcyBwYWNrYWdlCiAgICAgICAgJGRpYWdub3N0aWNzX29iamVjdC0+c2V0X2lucHV0X2ZpbGUoJGlucHV0X2ZpbGUpCiAgICAgICAgICBpZiAkZGlhZ25vc3RpY3Nfb2JqZWN0OwoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBwcmVwYXJlIHRoZSBvdXRwdXQgc3RyZWFtCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgIG15ICRvdXRwdXRfZmlsZSA9IHVuZGVmOwogICAgICAgIG15ICRhY3R1YWxfb3V0cHV0X2V4dGVuc2lvbjsKCiAgICAgICAgaWYgKCAkck9wdHMtPnsnb3V0ZmlsZSd9ICkgewoKICAgICAgICAgICAgaWYgKCAkbnVtYmVyX29mX2ZpbGVzIDw9IDEgKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkck9wdHMtPnsnc3RhbmRhcmQtb3V0cHV0J30gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJG1zZyA9ICJZb3UgbWF5IG5vdCB1c2UgLW8gYW5kIC1zdCB0b2dldGhlciI7CiAgICAgICAgICAgICAgICAgICAgJG1zZyAuPSAiICgtcGJwIGNvbnRhaW5zIC1zdDsgc2VlIG1hbnVhbCkiIGlmICgkc2F3X3BicCk7CiAgICAgICAgICAgICAgICAgICAgRGllKCIkbXNnXG4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICgkZGVzdGluYXRpb25fc3RyZWFtKSB7CiAgICAgICAgICAgICAgICAgICAgRGllKAoiWW91IG1heSBub3Qgc3BlY2lmeSBhIGRlc3RpbmF0aW9uIGFycmF5IGFuZCAtbyB0b2dldGhlclxuIgogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoIGRlZmluZWQoICRyT3B0cy0+eydvdXRwdXQtcGF0aCd9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgRGllKCJZb3UgbWF5IG5vdCBzcGVjaWZ5IC1vIGFuZCAtb3BhdGggdG9nZXRoZXJcbiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCBkZWZpbmVkKCAkck9wdHMtPnsnb3V0cHV0LWZpbGUtZXh0ZW5zaW9uJ30gKSApIHsKICAgICAgICAgICAgICAgICAgICBEaWUoIllvdSBtYXkgbm90IHNwZWNpZnkgLW8gYW5kIC1vZXh0IHRvZ2V0aGVyXG4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRvdXRwdXRfZmlsZSA9ICRyT3B0cy0+e291dGZpbGV9OwoKICAgICAgICAgICAgICAgICMgbWFrZSBzdXJlIHVzZXIgZ2l2ZXMgYSBmaWxlIG5hbWUgYWZ0ZXIgLW8KICAgICAgICAgICAgICAgIGlmICggJG91dHB1dF9maWxlID1+IC9eLS8gKSB7CiAgICAgICAgICAgICAgICAgICAgRGllKCJZb3UgbXVzdCBzcGVjaWZ5IGEgdmFsaWQgZmlsZW5hbWUgYWZ0ZXIgLW9cbiIpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZG8gbm90IG92ZXJ3cml0ZSBpbnB1dCBmaWxlIHdpdGggLW8KICAgICAgICAgICAgICAgIGlmICggQGlucHV0X2ZpbGVfc3RhdCAmJiAoICRvdXRwdXRfZmlsZSBlcSAkaW5wdXRfZmlsZSApICkgewogICAgICAgICAgICAgICAgICAgIERpZSgiVXNlICdwZXJsdGlkeSAtYiAkaW5wdXRfZmlsZScgdG8gbW9kaWZ5IGluLXBsYWNlXG4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIERpZSgiWW91IG1heSBub3QgdXNlIC1vIHdpdGggbW9yZSB0aGFuIG9uZSBpbnB1dCBmaWxlXG4iKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRyT3B0cy0+eydzdGFuZGFyZC1vdXRwdXQnfSApIHsKICAgICAgICAgICAgaWYgKCRkZXN0aW5hdGlvbl9zdHJlYW0pIHsKICAgICAgICAgICAgICAgIG15ICRtc2cgPQogICAgICAgICAgICAgICAgICAiWW91IG1heSBub3Qgc3BlY2lmeSBhIGRlc3RpbmF0aW9uIGFycmF5IGFuZCAtc3QgdG9nZXRoZXJcbiI7CiAgICAgICAgICAgICAgICAkbXNnIC49ICIgKC1wYnAgY29udGFpbnMgLXN0OyBzZWUgbWFudWFsKSIgaWYgKCRzYXdfcGJwKTsKICAgICAgICAgICAgICAgIERpZSgiJG1zZ1xuIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG91dHB1dF9maWxlID0gJy0nOwoKICAgICAgICAgICAgaWYgKCAkbnVtYmVyX29mX2ZpbGVzIDw9IDEgKSB7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBEaWUoIllvdSBtYXkgbm90IHVzZSAtc3Qgd2l0aCBtb3JlIHRoYW4gb25lIGlucHV0IGZpbGVcbiIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2lmICgkZGVzdGluYXRpb25fc3RyZWFtKSB7CiAgICAgICAgICAgICRvdXRwdXRfZmlsZSA9ICRkZXN0aW5hdGlvbl9zdHJlYW07CiAgICAgICAgfQogICAgICAgIGVsc2lmICgkc291cmNlX3N0cmVhbSkgeyAgICAjIHNvdXJjZSBidXQgbm8gZGVzdGluYXRpb24gZ29lcyB0byBzdGRvdXQKICAgICAgICAgICAgJG91dHB1dF9maWxlID0gJy0nOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRpbnB1dF9maWxlIGVxICctJyApIHsKICAgICAgICAgICAgJG91dHB1dF9maWxlID0gJy0nOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaWYgKCRpbl9wbGFjZV9tb2RpZnkpIHsKICAgICAgICAgICAgICAgICRvdXRwdXRfZmlsZSA9IElPOjpGaWxlLT5uZXdfdG1wZmlsZSgpCiAgICAgICAgICAgICAgICAgIG9yIERpZSgiY2Fubm90IG9wZW4gdGVtcCBmaWxlIGZvciAtYiBvcHRpb246ICQhXG4iKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRhY3R1YWxfb3V0cHV0X2V4dGVuc2lvbiA9ICRvdXRwdXRfZXh0ZW5zaW9uOwogICAgICAgICAgICAgICAgJG91dHB1dF9maWxlICAgICAgICAgICAgID0gJGZpbGVyb290IC4gJG91dHB1dF9leHRlbnNpb247CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRmaF90ZWU7CiAgICAgICAgbXkgJHRlZV9maWxlID0gJGZpbGVyb290IC4gJGRvdCAuICJURUUiOwogICAgICAgIGlmICgkdGVlZmlsZV9zdHJlYW0pIHsgJHRlZV9maWxlID0gJHRlZWZpbGVfc3RyZWFtIH0KICAgICAgICBpZiAoICAgJHJPcHRzLT57J3RlZS1wb2QnfQogICAgICAgICAgICB8fCAkck9wdHMtPnsndGVlLWJsb2NrLWNvbW1lbnRzJ30KICAgICAgICAgICAgfHwgJHJPcHRzLT57J3RlZS1zaWRlLWNvbW1lbnRzJ30gKQogICAgICAgIHsKICAgICAgICAgICAgKCAkZmhfdGVlLCBteSAkdGVlX2ZpbGVuYW1lICkgPQogICAgICAgICAgICAgIFBlcmw6OlRpZHk6OnN0cmVhbWhhbmRsZSggJHRlZV9maWxlLCAndycsICRpc19lbmNvZGVkX2RhdGEgKTsKICAgICAgICAgICAgaWYgKCAhJGZoX3RlZSApIHsKICAgICAgICAgICAgICAgIFdhcm4oImNvdWxkbid0IG9wZW4gVEVFIGZpbGUgJHRlZV9maWxlOiAkIVxuIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRsaW5lX3NlcGFyYXRvciA9ICRyT3B0cy0+eydvdXRwdXQtbGluZS1lbmRpbmcnfTsKICAgICAgICBpZiAoICRyT3B0cy0+eydwcmVzZXJ2ZS1saW5lLWVuZGluZ3MnfSApIHsKICAgICAgICAgICAgJGxpbmVfc2VwYXJhdG9yID0gZmluZF9pbnB1dF9saW5lX2VuZGluZygkaW5wdXRfZmlsZSk7CiAgICAgICAgfQoKICAgICAgICAkbGluZV9zZXBhcmF0b3IgPSAiXG4iIHVubGVzcyBkZWZpbmVkKCRsaW5lX3NlcGFyYXRvcik7CgogICAgICAgICMgdGhlICdzaW5rX29iamVjdCcga25vd3MgaG93IHRvIHdyaXRlIHRoZSBvdXRwdXQgZmlsZQogICAgICAgIG15ICggJHNpbmtfb2JqZWN0LCAkcG9zdGZpbHRlcl9idWZmZXIgKTsKICAgICAgICBteSAkdXNlX2J1ZmZlciA9CiAgICAgICAgICAgICAkcG9zdGZpbHRlcgogICAgICAgICAgfHwgJHJPcHRzLT57J2Fzc2VydC10aWR5J30KICAgICAgICAgIHx8ICRyT3B0cy0+eydhc3NlcnQtdW50aWR5J307CgogICAgICAgICRzaW5rX29iamVjdCA9IFBlcmw6OlRpZHk6OkxpbmVTaW5rLT5uZXcoCiAgICAgICAgICAgIG91dHB1dF9maWxlICAgID0+ICR1c2VfYnVmZmVyID8gXCRwb3N0ZmlsdGVyX2J1ZmZlciA6ICRvdXRwdXRfZmlsZSwKICAgICAgICAgICAgbGluZV9zZXBhcmF0b3IgPT4gJGxpbmVfc2VwYXJhdG9yLAogICAgICAgICAgICByT3B0cyAgICAgICAgICA9PiAkck9wdHMsCiAgICAgICAgICAgIHJwZW5kaW5nX2xvZ2ZpbGVfbWVzc2FnZSA9PiAkcnBlbmRpbmdfbG9nZmlsZV9tZXNzYWdlLAogICAgICAgICAgICBpc19lbmNvZGVkX2RhdGEgICAgICAgICAgPT4gJGlzX2VuY29kZWRfZGF0YSwKICAgICAgICApOwoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBpbml0aWFsaXplIHRoZSBlcnJvciBsb2dnZXIgZm9yIHRoaXMgZmlsZQogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBteSAkd2FybmluZ19maWxlID0gJGZpbGVyb290IC4gJGRvdCAuICJFUlIiOwogICAgICAgIGlmICgkZXJyb3JmaWxlX3N0cmVhbSkgeyAkd2FybmluZ19maWxlID0gJGVycm9yZmlsZV9zdHJlYW0gfQogICAgICAgIG15ICRsb2dfZmlsZSA9ICRmaWxlcm9vdCAuICRkb3QgLiAiTE9HIjsKICAgICAgICBpZiAoJGxvZ2ZpbGVfc3RyZWFtKSB7ICRsb2dfZmlsZSA9ICRsb2dmaWxlX3N0cmVhbSB9CgogICAgICAgIG15ICRsb2dnZXJfb2JqZWN0ID0gUGVybDo6VGlkeTo6TG9nZ2VyLT5uZXcoCiAgICAgICAgICAgIHJPcHRzICAgICAgICAgICA9PiAkck9wdHMsCiAgICAgICAgICAgIGxvZ19maWxlICAgICAgICA9PiAkbG9nX2ZpbGUsCiAgICAgICAgICAgIHdhcm5pbmdfZmlsZSAgICA9PiAkd2FybmluZ19maWxlLAogICAgICAgICAgICBmaF9zdGRlcnIgICAgICAgPT4gJGZoX3N0ZGVyciwKICAgICAgICAgICAgc2F3X2V4dHJ1Y2UgICAgID0+ICRzYXdfZXh0cnVkZSwKICAgICAgICAgICAgZGlzcGxheV9uYW1lICAgID0+ICRkaXNwbGF5X25hbWUsCiAgICAgICAgICAgIGlzX2VuY29kZWRfZGF0YSA9PiAkaXNfZW5jb2RlZF9kYXRhLAogICAgICAgICk7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9oZWFkZXIoCiAgICAgICAgICAgICRyT3B0cywgICAgICAgICRsb2dnZXJfb2JqZWN0LCAkY29uZmlnX2ZpbGUsCiAgICAgICAgICAgICRycmF3X29wdGlvbnMsICRXaW5kb3dzX3R5cGUsICAkcmVhZGFibGVfb3B0aW9ucywKICAgICAgICApOwogICAgICAgICRsb2dnZXJfb2JqZWN0LT53cml0ZV9sb2dmaWxlX2VudHJ5KCRlbmNvZGluZ19sb2dfbWVzc2FnZSkKICAgICAgICAgIGlmICRlbmNvZGluZ19sb2dfbWVzc2FnZTsKCiAgICAgICAgaWYgKCAkeyRycGVuZGluZ19sb2dmaWxlX21lc3NhZ2V9ICkgewogICAgICAgICAgICAkbG9nZ2VyX29iamVjdC0+d3JpdGVfbG9nZmlsZV9lbnRyeSggJHskcnBlbmRpbmdfbG9nZmlsZV9tZXNzYWdlfSApOwogICAgICAgIH0KICAgICAgICBpZiAoICR7JHJwZW5kaW5nX2NvbXBsYWludH0gKSB7CiAgICAgICAgICAgICRsb2dnZXJfb2JqZWN0LT5jb21wbGFpbiggJHskcnBlbmRpbmdfY29tcGxhaW50fSApOwogICAgICAgIH0KCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgaW5pdGlhbGl6ZSB0aGUgZGVidWcgb2JqZWN0LCBpZiBhbnkKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgbXkgJGRlYnVnZ2VyX29iamVjdCA9IHVuZGVmOwogICAgICAgIGlmICggJHJPcHRzLT57REVCVUd9ICkgewogICAgICAgICAgICBteSAkZGVidWdfZmlsZSA9ICRmaWxlcm9vdCAuICRkb3QgLiAiREVCVUciOwogICAgICAgICAgICBpZiAoJGRlYnVnZmlsZV9zdHJlYW0pIHsgJGRlYnVnX2ZpbGUgPSAkZGVidWdmaWxlX3N0cmVhbSB9CiAgICAgICAgICAgICRkZWJ1Z2dlcl9vYmplY3QgPQogICAgICAgICAgICAgIFBlcmw6OlRpZHk6OkRlYnVnZ2VyLT5uZXcoICRkZWJ1Z19maWxlLCAkaXNfZW5jb2RlZF9kYXRhICk7CiAgICAgICAgfQoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBsb29wIG92ZXIgaXRlcmF0aW9ucyBmb3Igb25lIHNvdXJjZSBzdHJlYW0KICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICMgc2F2ZSBvYmplY3RzIHRvIGFsbG93IHJlZGlyZWN0aW5nIG91dHB1dCBkdXJpbmcgaXRlcmF0aW9ucwogICAgICAgIG15ICRzaW5rX29iamVjdF9maW5hbCAgICAgPSAkc2lua19vYmplY3Q7CiAgICAgICAgbXkgJGRlYnVnZ2VyX29iamVjdF9maW5hbCA9ICRkZWJ1Z2dlcl9vYmplY3Q7CiAgICAgICAgbXkgJGxvZ2dlcl9vYmplY3RfZmluYWwgICA9ICRsb2dnZXJfb2JqZWN0OwogICAgICAgIG15ICRmaF90ZWVfZmluYWwgICAgICAgICAgPSAkZmhfdGVlOwogICAgICAgIG15ICRpdGVyYXRpb25fb2ZfZm9ybWF0dGVyX2NvbnZlcmdlbmNlOwoKICAgICAgICBmb3JlYWNoIG15ICRpdGVyICggMSAuLiAkbWF4X2l0ZXJhdGlvbnMgKSB7CgogICAgICAgICAgICAjIHNlbmQgb3V0cHV0IHN0cmVhbSB0byB0ZW1wIGJ1ZmZlcnMgdW50aWwgbGFzdCBpdGVyYXRpb24KICAgICAgICAgICAgbXkgJHNpbmtfYnVmZmVyOwogICAgICAgICAgICBpZiAoICRpdGVyIDwgJG1heF9pdGVyYXRpb25zICkgewogICAgICAgICAgICAgICAgJHNpbmtfb2JqZWN0ID0gUGVybDo6VGlkeTo6TGluZVNpbmstPm5ldygKICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZmlsZSAgICAgICAgICAgICAgPT4gXCRzaW5rX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICBsaW5lX3NlcGFyYXRvciAgICAgICAgICAgPT4gJGxpbmVfc2VwYXJhdG9yLAogICAgICAgICAgICAgICAgICAgIHJPcHRzICAgICAgICAgICAgICAgICAgICA9PiAkck9wdHMsCiAgICAgICAgICAgICAgICAgICAgcnBlbmRpbmdfbG9nZmlsZV9tZXNzYWdlID0+ICRycGVuZGluZ19sb2dmaWxlX21lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgaXNfZW5jb2RlZF9kYXRhICAgICAgICAgID0+ICRpc19lbmNvZGVkX2RhdGEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJHNpbmtfb2JqZWN0ID0gJHNpbmtfb2JqZWN0X2ZpbmFsOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFNhdmUgbG9nZ2VyLCBkZWJ1Z2dlciBhbmQgdGVlIG91dHB1dCBvbmx5IG9uIHBhc3MgMSBiZWNhdXNlOgogICAgICAgICAgICAjICgxKSBsaW5lIG51bWJlciByZWZlcmVuY2VzIG11c3QgYmUgdG8gdGhlIHN0YXJ0aW5nCiAgICAgICAgICAgICMgc291cmNlLCBub3QgYW4gaW50ZXJtZWRpYXRlIHJlc3VsdCwgYW5kCiAgICAgICAgICAgICMgKDIpIHdlIG5lZWQgdG8ga25vdyBpZiB0aGVyZSBhcmUgZXJyb3JzIHNvIHdlIGNhbiBzdG9wIHRoZQogICAgICAgICAgICAjIGl0ZXJhdGlvbnMgZWFybHkgaWYgbmVjZXNzYXJ5LgogICAgICAgICAgICAjICgzKSB0aGUgdGVlIG9wdGlvbiBvbmx5IHdvcmtzIG9uIGZpcnN0IHBhc3MgaWYgY29tbWVudHMgYXJlIGFsc28KICAgICAgICAgICAgIyBiZWluZyBkZWxldGVkLgoKICAgICAgICAgICAgaWYgKCAkaXRlciA+IDEgKSB7CiAgICAgICAgICAgICAgICAkZGVidWdnZXJfb2JqZWN0ID0gdW5kZWY7CiAgICAgICAgICAgICAgICAkbG9nZ2VyX29iamVjdCAgID0gdW5kZWY7CiAgICAgICAgICAgICAgICAkZmhfdGVlICAgICAgICAgID0gdW5kZWY7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgIyBjcmVhdGUgYSBmb3JtYXR0ZXIgZm9yIHRoaXMgZmlsZSA6IGh0bWwgd3JpdGVyIG9yCiAgICAgICAgICAgICMgcHJldHR5IHByaW50ZXIKICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgICAgICAgIyB3ZSBoYXZlIHRvIGRlbGV0ZSBhbnkgb2xkIGZvcm1hdHRlciBiZWNhdXNlLCBmb3Igc2FmZXR5LAogICAgICAgICAgICAjIHRoZSBmb3JtYXR0ZXIgd2lsbCBjaGVjayB0byBzZWUgdGhhdCB0aGVyZSBpcyBvbmx5IG9uZS4KICAgICAgICAgICAgJGZvcm1hdHRlciA9IHVuZGVmOwoKICAgICAgICAgICAgaWYgKCR1c2VyX2Zvcm1hdHRlcikgewogICAgICAgICAgICAgICAgJGZvcm1hdHRlciA9ICR1c2VyX2Zvcm1hdHRlcjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRyT3B0cy0+eydmb3JtYXQnfSBlcSAnaHRtbCcgKSB7CiAgICAgICAgICAgICAgICAkZm9ybWF0dGVyID0gUGVybDo6VGlkeTo6SHRtbFdyaXRlci0+bmV3KAogICAgICAgICAgICAgICAgICAgIGlucHV0X2ZpbGUgICAgICAgICA9PiAkZmlsZXJvb3QsCiAgICAgICAgICAgICAgICAgICAgaHRtbF9maWxlICAgICAgICAgID0+ICRvdXRwdXRfZmlsZSwKICAgICAgICAgICAgICAgICAgICBleHRlbnNpb24gICAgICAgICAgPT4gJGFjdHVhbF9vdXRwdXRfZXh0ZW5zaW9uLAogICAgICAgICAgICAgICAgICAgIGh0bWxfdG9jX2V4dGVuc2lvbiA9PiAkaHRtbF90b2NfZXh0ZW5zaW9uLAogICAgICAgICAgICAgICAgICAgIGh0bWxfc3JjX2V4dGVuc2lvbiA9PiAkaHRtbF9zcmNfZXh0ZW5zaW9uLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRyT3B0cy0+eydmb3JtYXQnfSBlcSAndGlkeScgKSB7CiAgICAgICAgICAgICAgICAkZm9ybWF0dGVyID0gUGVybDo6VGlkeTo6Rm9ybWF0dGVyLT5uZXcoCiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyX29iamVjdCAgICAgID0+ICRsb2dnZXJfb2JqZWN0LAogICAgICAgICAgICAgICAgICAgIGRpYWdub3N0aWNzX29iamVjdCA9PiAkZGlhZ25vc3RpY3Nfb2JqZWN0LAogICAgICAgICAgICAgICAgICAgIHNpbmtfb2JqZWN0ICAgICAgICA9PiAkc2lua19vYmplY3QsCiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoX2Z1bmN0aW9uICAgID0+ICRsZW5ndGhfZnVuY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgaXNfZW5jb2RlZF9kYXRhICAgID0+ICRpc19lbmNvZGVkX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgZmhfdGVlICAgICAgICAgICAgID0+ICRmaF90ZWUsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgRGllKCJJIGRvbid0IGtub3cgaG93IHRvIGRvIC1mb3JtYXQ9JHJPcHRzLT57J2Zvcm1hdCd9XG4iKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdW5sZXNzICgkZm9ybWF0dGVyKSB7CiAgICAgICAgICAgICAgICBEaWUoIlVuYWJsZSB0byBjb250aW51ZSB3aXRoICRyT3B0cy0+eydmb3JtYXQnfSBmb3JtYXR0aW5nXG4iKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAjIGNyZWF0ZSB0aGUgdG9rZW5pemVyIGZvciB0aGlzIGZpbGUKICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAkdG9rZW5pemVyID0gdW5kZWY7ICAgICAgICAgICAgICAgICAgICAgIyBtdXN0IGRlc3Ryb3kgb2xkIHRva2VuaXplcgogICAgICAgICAgICAkdG9rZW5pemVyID0gUGVybDo6VGlkeTo6VG9rZW5pemVyLT5uZXcoCiAgICAgICAgICAgICAgICBzb3VyY2Vfb2JqZWN0ICAgICAgPT4gJHNvdXJjZV9vYmplY3QsCiAgICAgICAgICAgICAgICBsb2dnZXJfb2JqZWN0ICAgICAgPT4gJGxvZ2dlcl9vYmplY3QsCiAgICAgICAgICAgICAgICBkZWJ1Z2dlcl9vYmplY3QgICAgPT4gJGRlYnVnZ2VyX29iamVjdCwKICAgICAgICAgICAgICAgIGRpYWdub3N0aWNzX29iamVjdCA9PiAkZGlhZ25vc3RpY3Nfb2JqZWN0LAogICAgICAgICAgICAgICAgdGFic2l6ZSAgICAgICAgICAgID0+ICR0YWJzaXplLAogICAgICAgICAgICAgICAgck9wdHMgICAgICAgICAgICAgID0+ICRyT3B0cywKCiAgICAgICAgICAgICAgICBzdGFydGluZ19sZXZlbCAgICAgID0+ICRyT3B0cy0+eydzdGFydGluZy1pbmRlbnRhdGlvbi1sZXZlbCd9LAogICAgICAgICAgICAgICAgaW5kZW50X2NvbHVtbnMgICAgICA9PiAkck9wdHMtPnsnaW5kZW50LWNvbHVtbnMnfSwKICAgICAgICAgICAgICAgIGxvb2tfZm9yX2hhc2hfYmFuZyAgPT4gJHJPcHRzLT57J2xvb2stZm9yLWhhc2gtYmFuZyd9LAogICAgICAgICAgICAgICAgbG9va19mb3JfYXV0b2xvYWRlciA9PiAkck9wdHMtPnsnbG9vay1mb3ItYXV0b2xvYWRlcid9LAogICAgICAgICAgICAgICAgbG9va19mb3Jfc2VsZmxvYWRlciA9PiAkck9wdHMtPnsnbG9vay1mb3Itc2VsZmxvYWRlcid9LAogICAgICAgICAgICAgICAgdHJpbV9xdyAgICAgICAgICAgICA9PiAkck9wdHMtPnsndHJpbS1xdyd9LAogICAgICAgICAgICAgICAgZXh0ZW5kZWRfc3ludGF4ICAgICA9PiAkck9wdHMtPnsnZXh0ZW5kZWQtc3ludGF4J30sCgogICAgICAgICAgICAgICAgY29udGludWF0aW9uX2luZGVudGF0aW9uID0+CiAgICAgICAgICAgICAgICAgICRyT3B0cy0+eydjb250aW51YXRpb24taW5kZW50YXRpb24nfSwKICAgICAgICAgICAgICAgIG91dGRlbnRfbGFiZWxzID0+ICRyT3B0cy0+eydvdXRkZW50LWxhYmVscyd9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAjIG5vdyB3ZSBjYW4gZG8gaXQKICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICBwcm9jZXNzX3RoaXNfZmlsZSggJHRva2VuaXplciwgJGZvcm1hdHRlciApOwoKICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAjIGNsb3NlIHRoZSBpbnB1dCBzb3VyY2UgYW5kIHJlcG9ydCBlcnJvcnMKICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAkc291cmNlX29iamVjdC0+Y2xvc2VfaW5wdXRfZmlsZSgpOwoKICAgICAgICAgICAgIyBzZWUgaWYgdGhlIGZvcm1hdHRlciBpcyBjb252ZXJnZWQKICAgICAgICAgICAgaWYgKCAgICRtYXhfaXRlcmF0aW9ucyA+IDEKICAgICAgICAgICAgICAgICYmICFkZWZpbmVkKCRpdGVyYXRpb25fb2ZfZm9ybWF0dGVyX2NvbnZlcmdlbmNlKQogICAgICAgICAgICAgICAgJiYgJGZvcm1hdHRlci0+Y2FuKCdnZXRfY29udmVyZ2VuY2VfY2hlY2snKSApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmICggJGZvcm1hdHRlci0+Z2V0X2NvbnZlcmdlbmNlX2NoZWNrKCkgKSB7CiAgICAgICAgICAgICAgICAgICAgJGl0ZXJhdGlvbl9vZl9mb3JtYXR0ZXJfY29udmVyZ2VuY2UgPSAkaXRlcjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBsaW5lIHNvdXJjZSBmb3IgbmV4dCBpdGVyYXRpb24gKGlmIGFueSkgY29tZXMgZnJvbSB0aGUgY3VycmVudAogICAgICAgICAgICAjIHRlbXBvcmFyeSBvdXRwdXQgYnVmZmVyCiAgICAgICAgICAgIGlmICggJGl0ZXIgPCAkbWF4X2l0ZXJhdGlvbnMgKSB7CgogICAgICAgICAgICAgICAgJHNpbmtfb2JqZWN0LT5jbG9zZV9vdXRwdXRfZmlsZSgpOwogICAgICAgICAgICAgICAgJHNvdXJjZV9vYmplY3QgPSBQZXJsOjpUaWR5OjpMaW5lU291cmNlLT5uZXcoCiAgICAgICAgICAgICAgICAgICAgaW5wdXRfZmlsZSAgICAgICAgICAgICAgID0+IFwkc2lua19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgck9wdHMgICAgICAgICAgICAgICAgICAgID0+ICRyT3B0cywKICAgICAgICAgICAgICAgICAgICBycGVuZGluZ19sb2dmaWxlX21lc3NhZ2UgPT4gJHJwZW5kaW5nX2xvZ2ZpbGVfbWVzc2FnZSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzdG9wIGl0ZXJhdGlvbnMgaWYgZXJyb3JzIG9yIGNvbnZlcmdlZAogICAgICAgICAgICAgICAgbXkgJHN0b3Bfbm93ID0gJHRva2VuaXplci0+cmVwb3J0X3Rva2VuaXphdGlvbl9lcnJvcnMoKTsKICAgICAgICAgICAgICAgICRzdG9wX25vdyB8fD0gJHRva2VuaXplci0+Z2V0X3VuZXhwZWN0ZWRfZXJyb3JfY291bnQoKTsKICAgICAgICAgICAgICAgIG15ICRzdG9wcGluZ19vbl9lcnJvciA9ICRzdG9wX25vdzsKICAgICAgICAgICAgICAgIGlmICgkc3RvcF9ub3cpIHsKICAgICAgICAgICAgICAgICAgICAkY29udmVyZ2VuY2VfbG9nX21lc3NhZ2UgPSA8PEVPTTsKU3RvcHBpbmcgaXRlcmF0aW9ucyBiZWNhdXNlIG9mIHNldmVyZSBlcnJvcnMuICAgICAgICAgICAgICAgICAgICAgICAKRU9NCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoJGRvX2NvbnZlcmdlbmNlX3Rlc3QpIHsKCiAgICAgICAgICAgICAgICAgICAgIyBzdG9wIGlmIHRoZSBmb3JtYXR0ZXIgaGFzIGNvbnZlcmdlZAogICAgICAgICAgICAgICAgICAgICRzdG9wX25vdyB8fD0gZGVmaW5lZCgkaXRlcmF0aW9uX29mX2Zvcm1hdHRlcl9jb252ZXJnZW5jZSk7CgogICAgICAgICAgICAgICAgICAgIG15ICRkaWdlc3QgPSAkbWQ1X2hleC0+KCRzaW5rX2J1ZmZlcik7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCggJHNhd19tZDV7JGRpZ2VzdH0gKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNhd19tZDV7JGRpZ2VzdH0gPSAkaXRlcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIERlamEgdnUsIHN0b3AgaXRlcmF0aW5nCiAgICAgICAgICAgICAgICAgICAgICAgICRzdG9wX25vdyA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpdGVybSA9ICRpdGVyIC0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkc2F3X21kNXskZGlnZXN0fSAhPSAkaXRlcm0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBCbGlua2luZyAob3NjaWxsYXRpbmcpIGJldHdlZW4gdHdvIHN0YWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBlbmQgc3RhdGVzLiAgVGhpcyBoYXMgaGFwcGVuZWQgaW4gdGhlIHBhc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYnV0IGF0IHByZXNlbnQgdGhlcmUgYXJlIG5vIGtub3duIGluc3RhbmNlcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb252ZXJnZW5jZV9sb2dfbWVzc2FnZSA9IDw8RU9NOwpCTElOS0VSLiBPdXRwdXQgZm9yIGl0ZXJhdGlvbiAkaXRlciBzYW1lIGFzIGZvciAkc2F3X21kNXskZGlnZXN0fS4gCkVPTQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0b3BwaW5nX29uX2Vycm9yIHx8PSAkY29udmVyZ2VuY2VfbG9nX21lc3NhZ2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVWRUxfTU9ERSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50IFNUREVSUiAkY29udmVyZ2VuY2VfbG9nX21lc3NhZ2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlhZ25vc3RpY3Nfb2JqZWN0LT53cml0ZV9kaWFnbm9zdGljcygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udmVyZ2VuY2VfbG9nX21lc3NhZ2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICRkaWFnbm9zdGljc19vYmplY3Q7CgojIFVuY29tbWVudCB0byBzZWFyY2ggZm9yIGJsaW5raW5nIHN0YXRlcwojIFdhcm4oICIkZGlzcGxheV9uYW1lOiBibGlua2luZzsgaXRlciAkaXRlciBzYW1lIGFzIGZvciAkc2F3X21kNXskZGlnZXN0fVxuIiApOwoKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb252ZXJnZW5jZV9sb2dfbWVzc2FnZSA9IDw8RU9NOwpDb252ZXJnZWQuICBPdXRwdXQgZm9yIGl0ZXJhdGlvbiAkaXRlciBzYW1lIGFzIGZvciBpdGVyICRpdGVybS4KRU9NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlhZ25vc3RpY3Nfb2JqZWN0LT53cml0ZV9kaWFnbm9zdGljcygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udmVyZ2VuY2VfbG9nX21lc3NhZ2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICRkaWFnbm9zdGljc19vYmplY3QgJiYgJGl0ZXJtID4gMjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gIyMgZW5kIGlmICgkZG9fY29udmVyZ2VuY2VfdGVzdCkKCiAgICAgICAgICAgICAgICBpZiAoJHN0b3Bfbm93KSB7CgogICAgICAgICAgICAgICAgICAgIGlmIChERVZFTF9NT0RFKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQoJGl0ZXJhdGlvbl9vZl9mb3JtYXR0ZXJfY29udmVyZ2VuY2UpICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBtZXNzYWdlIGNhbm5vdCBhcHBlYXIgdW5sZXNzIHRoZSBmb3JtYXR0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVyZ2VuY2UgdGVzdCBhYm92ZSBpcyB0ZW1wb3JhcmlseSBza2lwcGVkIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0ZXN0aW5nLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkaXRlcmF0aW9uX29mX2Zvcm1hdHRlcl9jb252ZXJnZW5jZSA8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGl0ZXIgLSAxICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCBTVERFUlIKIlNUUkFOR0UgRWFybHkgY29udiBpbiAkZGlzcGxheV9uYW1lOiBTdG9wcGluZyBvbiBpdD0kaXRlciwgY29udmVyZ2VkIGluIGZvcm1hdHRlciBvbiAkaXRlcmF0aW9uX29mX2Zvcm1hdHRlcl9jb252ZXJnZW5jZVxuIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICEkc3RvcHBpbmdfb25fZXJyb3IgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCBTVERFUlIKIlNUUkFOR0Ugbm8gY29udiBpbiAkZGlzcGxheV9uYW1lOiBzdG9wcGluZyBvbiBpdD0kaXRlciwgYnV0IG5vdCBjb252ZXJnZWQgaW4gZm9ybWF0dGVyXG4iOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIHdlIGFyZSBzdG9wcGluZyB0aGUgaXRlcmF0aW9ucyBlYXJseTsKICAgICAgICAgICAgICAgICAgICAjIGNvcHkgdGhlIG91dHB1dCBzdHJlYW0gdG8gaXRzIGZpbmFsIGRlc3RpbmF0aW9uCiAgICAgICAgICAgICAgICAgICAgJHNpbmtfb2JqZWN0ID0gJHNpbmtfb2JqZWN0X2ZpbmFsOwogICAgICAgICAgICAgICAgICAgIHdoaWxlICggbXkgJGxpbmUgPSAkc291cmNlX29iamVjdC0+Z2V0X2xpbmUoKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNpbmtfb2JqZWN0LT53cml0ZV9saW5lKCRsaW5lKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJHNvdXJjZV9vYmplY3QtPmNsb3NlX2lucHV0X2ZpbGUoKTsKICAgICAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9ICMjIGVuZCBpZiAoICRpdGVyIDwgJG1heF9pdGVyYXRpb25zKQogICAgICAgIH0gICAgIyBlbmQgbG9vcCBvdmVyIGl0ZXJhdGlvbnMgZm9yIG9uZSBzb3VyY2UgZmlsZQoKICAgICAgICAjIHJlc3RvcmUgb2JqZWN0cyB3aGljaCBoYXZlIGJlZW4gdGVtcG9yYXJpbHkgdW5kZWZpbmVkCiAgICAgICAgIyBmb3Igc2Vjb25kIGFuZCBoaWdoZXIgaXRlcmF0aW9ucwogICAgICAgICRkZWJ1Z2dlcl9vYmplY3QgPSAkZGVidWdnZXJfb2JqZWN0X2ZpbmFsOwogICAgICAgICRsb2dnZXJfb2JqZWN0ICAgPSAkbG9nZ2VyX29iamVjdF9maW5hbDsKICAgICAgICAkZmhfdGVlICAgICAgICAgID0gJGZoX3RlZV9maW5hbDsKCiAgICAgICAgJGxvZ2dlcl9vYmplY3QtPndyaXRlX2xvZ2ZpbGVfZW50cnkoJGNvbnZlcmdlbmNlX2xvZ19tZXNzYWdlKQogICAgICAgICAgaWYgJGNvbnZlcmdlbmNlX2xvZ19tZXNzYWdlOwoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBQZXJmb3JtIGFueSBwb3N0ZmlsdGVyIG9wZXJhdGlvbgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBpZiAoJHVzZV9idWZmZXIpIHsKICAgICAgICAgICAgJHNpbmtfb2JqZWN0LT5jbG9zZV9vdXRwdXRfZmlsZSgpOwogICAgICAgICAgICAkc2lua19vYmplY3QgPSBQZXJsOjpUaWR5OjpMaW5lU2luay0+bmV3KAogICAgICAgICAgICAgICAgb3V0cHV0X2ZpbGUgICAgICAgICAgICAgID0+ICRvdXRwdXRfZmlsZSwKICAgICAgICAgICAgICAgIGxpbmVfc2VwYXJhdG9yICAgICAgICAgICA9PiAkbGluZV9zZXBhcmF0b3IsCiAgICAgICAgICAgICAgICByT3B0cyAgICAgICAgICAgICAgICAgICAgPT4gJHJPcHRzLAogICAgICAgICAgICAgICAgcnBlbmRpbmdfbG9nZmlsZV9tZXNzYWdlID0+ICRycGVuZGluZ19sb2dmaWxlX21lc3NhZ2UsCiAgICAgICAgICAgICAgICBpc19lbmNvZGVkX2RhdGEgICAgICAgICAgPT4gJGlzX2VuY29kZWRfZGF0YSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRidWYgPQogICAgICAgICAgICAgICAgJHBvc3RmaWx0ZXIKICAgICAgICAgICAgICA/ICRwb3N0ZmlsdGVyLT4oJHBvc3RmaWx0ZXJfYnVmZmVyKQogICAgICAgICAgICAgIDogJHBvc3RmaWx0ZXJfYnVmZmVyOwoKICAgICAgICAgICAgIyBDaGVjayBpZiBmaWxlIGNoYW5nZWQgaWYgcmVxdWVzdGVkLCBidXQgb25seSBhZnRlciBhbnkgcG9zdGZpbHRlcgogICAgICAgICAgICBpZiAoICRyT3B0cy0+eydhc3NlcnQtdGlkeSd9ICkgewogICAgICAgICAgICAgICAgbXkgJGRpZ2VzdF9vdXRwdXQgPSAkbWQ1X2hleC0+KCRidWYpOwogICAgICAgICAgICAgICAgaWYgKCAkZGlnZXN0X291dHB1dCBuZSAkZGlnZXN0X2lucHV0ICkgewogICAgICAgICAgICAgICAgICAgIG15ICRkaWZmX21zZyA9CiAgICAgICAgICAgICAgICAgICAgICBjb21wYXJlX3N0cmluZ19idWZmZXJzKCAkc2F2ZWRfaW5wdXRfYnVmLCAkYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAkaXNfZW5jb2RlZF9kYXRhICk7CiAgICAgICAgICAgICAgICAgICAgJGxvZ2dlcl9vYmplY3QtPndhcm5pbmcoPDxFT00pOwphc3NlcnRpb24gZmFpbHVyZTogJy0tYXNzZXJ0LXRpZHknIGlzIHNldCBidXQgb3V0cHV0IGRpZmZlcnMgZnJvbSBpbnB1dApFT00KICAgICAgICAgICAgICAgICAgICAkbG9nZ2VyX29iamVjdC0+aW50ZXJydXB0X2xvZ2ZpbGUoKTsKICAgICAgICAgICAgICAgICAgICAkbG9nZ2VyX29iamVjdC0+d2FybmluZyggJGRpZmZfbXNnIC4gIlxuIiApOwogICAgICAgICAgICAgICAgICAgICRsb2dnZXJfb2JqZWN0LT5yZXN1bWVfbG9nZmlsZSgpOwogICAgICAgICAgICAgICAgICAgICMjICRXYXJuX2NvdW50IHx8PSAxOyAgICMgbG9nZ2VyIHdhcm5pbmcgZG9lcyB0aGlzIG5vdwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJHJPcHRzLT57J2Fzc2VydC11bnRpZHknfSApIHsKICAgICAgICAgICAgICAgIG15ICRkaWdlc3Rfb3V0cHV0ID0gJG1kNV9oZXgtPigkYnVmKTsKICAgICAgICAgICAgICAgIGlmICggJGRpZ2VzdF9vdXRwdXQgZXEgJGRpZ2VzdF9pbnB1dCApIHsKICAgICAgICAgICAgICAgICAgICAkbG9nZ2VyX29iamVjdC0+d2FybmluZygKImFzc2VydGlvbiBmYWlsdXJlOiAnLS1hc3NlcnQtdW50aWR5JyBpcyBzZXQgYnV0IG91dHB1dCBlcXVhbHMgaW5wdXRcbiIKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICMjICRXYXJuX2NvdW50IHx8PSAxOyAgICMgbG9nZ2VyIHdhcm5pbmcgZG9lcyB0aGlzIG5vdwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkc291cmNlX29iamVjdCA9IFBlcmw6OlRpZHk6OkxpbmVTb3VyY2UtPm5ldygKICAgICAgICAgICAgICAgIGlucHV0X2ZpbGUgICAgICAgICAgICAgICA9PiBcJGJ1ZiwKICAgICAgICAgICAgICAgIHJPcHRzICAgICAgICAgICAgICAgICAgICA9PiAkck9wdHMsCiAgICAgICAgICAgICAgICBycGVuZGluZ19sb2dmaWxlX21lc3NhZ2UgPT4gJHJwZW5kaW5nX2xvZ2ZpbGVfbWVzc2FnZSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgd2hpbGUgKCBteSAkbGluZSA9ICRzb3VyY2Vfb2JqZWN0LT5nZXRfbGluZSgpICkgewogICAgICAgICAgICAgICAgJHNpbmtfb2JqZWN0LT53cml0ZV9saW5lKCRsaW5lKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkc291cmNlX29iamVjdC0+Y2xvc2VfaW5wdXRfZmlsZSgpOwogICAgICAgIH0KCiAgICAgICAgIyBTYXZlIG5hbWVzIG9mIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGZpbGVzIGZvciBzeW50YXggY2hlY2sKICAgICAgICBteSAkaWZuYW1lID0gJGlucHV0X2ZpbGU7CiAgICAgICAgbXkgJG9mbmFtZSA9ICRvdXRwdXRfZmlsZTsKCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgaGFuZGxlIHRoZSAtYiBvcHRpb24gKGJhY2t1cCBhbmQgbW9kaWZ5IGluLXBsYWNlKQogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBpZiAoJGluX3BsYWNlX21vZGlmeSkgewogICAgICAgICAgICB1bmxlc3MgKCAtZiAkaW5wdXRfZmlsZSApIHsKCiAgICAgICAgICAgICAgICAjIG9oLCBvaCwgbm8gcmVhbCBmaWxlIHRvIGJhY2t1cCAuLgogICAgICAgICAgICAgICAgIyBzaG91bGRuJ3QgaGFwcGVuIGJlY2F1c2Ugb2YgbnVtZXJvdXMgcHJlbGltaW5hcnkgY2hlY2tzCiAgICAgICAgICAgICAgICBEaWUoCiJwcm9ibGVtIHdpdGggLWIgYmFja2luZyB1cCBpbnB1dCBmaWxlICckaW5wdXRfZmlsZSc6IG5vdCBhIGZpbGVcbiIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbXkgJGJhY2t1cF9uYW1lID0gJGlucHV0X2ZpbGUgLiAkYmFja3VwX2V4dGVuc2lvbjsKICAgICAgICAgICAgaWYgKCAtZiAkYmFja3VwX25hbWUgKSB7CiAgICAgICAgICAgICAgICB1bmxpbmsoJGJhY2t1cF9uYW1lKQogICAgICAgICAgICAgICAgICBvciBEaWUoCiJ1bmFibGUgdG8gcmVtb3ZlIHByZXZpb3VzICckYmFja3VwX25hbWUnIGZvciAtYiBvcHRpb247IGNoZWNrIHBlcm1pc3Npb25zOiAkIVxuIgogICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGJhY2t1cCB0aGUgaW5wdXQgZmlsZQogICAgICAgICAgICAjIHdlIHVzZSBjb3B5IGZvciBzeW1saW5rcywgbW92ZSBmb3IgcmVndWxhciBmaWxlcwogICAgICAgICAgICBpZiAoIC1sICRpbnB1dF9maWxlICkgewogICAgICAgICAgICAgICAgRmlsZTo6Q29weTo6Y29weSggJGlucHV0X2ZpbGUsICRiYWNrdXBfbmFtZSApCiAgICAgICAgICAgICAgICAgIG9yIERpZSgiRmlsZTo6Q29weSBmYWlsZWQgdHJ5aW5nIHRvIGJhY2t1cCBzb3VyY2U6ICQhIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICByZW5hbWUoICRpbnB1dF9maWxlLCAkYmFja3VwX25hbWUgKQogICAgICAgICAgICAgICAgICBvciBEaWUoCiJwcm9ibGVtIHJlbmFtaW5nICRpbnB1dF9maWxlIHRvICRiYWNrdXBfbmFtZSBmb3IgLWIgb3B0aW9uOiAkIVxuIgogICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRpZm5hbWUgPSAkYmFja3VwX25hbWU7CgogICAgICAgICAgICAjIGNvcHkgdGhlIG91dHB1dCB0byB0aGUgb3JpZ2luYWwgaW5wdXQgZmlsZQogICAgICAgICAgICAjIE5PVEU6IGl0IHdvdWxkIGJlIG5pY2UgdG8ganVzdCBjbG9zZSAkb3V0cHV0X2ZpbGUgYW5kIHVzZQogICAgICAgICAgICAjIEZpbGU6OkNvcHk6OmNvcHkgaGVyZSwgYnV0IGluIHRoaXMgY2FzZSAkb3V0cHV0X2ZpbGUgaXMgdGhlCiAgICAgICAgICAgICMgaGFuZGxlIG9mIGFuIG9wZW4gbmFtZWxlc3MgdGVtcG9yYXJ5IGZpbGUgc28gd2Ugd291bGQgbG9zZQogICAgICAgICAgICAjIGV2ZXJ5dGhpbmcgaWYgd2UgY2xvc2VkIGl0LgogICAgICAgICAgICBzZWVrKCAkb3V0cHV0X2ZpbGUsIDAsIDAgKQogICAgICAgICAgICAgIG9yIERpZSgidW5hYmxlIHRvIHJld2luZCBhIHRlbXBvcmFyeSBmaWxlIGZvciAtYiBvcHRpb246ICQhXG4iKTsKCiAgICAgICAgICAgIG15ICggJGZvdXQsICRpbmFtZSApID0KICAgICAgICAgICAgICBQZXJsOjpUaWR5OjpzdHJlYW1oYW5kbGUoICRpbnB1dF9maWxlLCAndycsICRpc19lbmNvZGVkX2RhdGEgKTsKICAgICAgICAgICAgaWYgKCAhJGZvdXQgKSB7CiAgICAgICAgICAgICAgICBEaWUoCiJwcm9ibGVtIHJlLW9wZW5pbmcgJGlucHV0X2ZpbGUgZm9yIHdyaXRlIGZvciAtYiBvcHRpb247IGNoZWNrIGZpbGUgYW5kIGRpcmVjdG9yeSBwZXJtaXNzaW9uczogJCFcbiIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRsaW5lOwogICAgICAgICAgICB3aGlsZSAoICRsaW5lID0gJG91dHB1dF9maWxlLT5nZXRsaW5lKCkgKSB7CiAgICAgICAgICAgICAgICAkZm91dC0+cHJpbnQoJGxpbmUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRmb3V0LT5jbG9zZSgpOwogICAgICAgICAgICAkb3V0cHV0X2ZpbGUgPSAkaW5wdXRfZmlsZTsKICAgICAgICAgICAgJG9mbmFtZSAgICAgID0gJGlucHV0X2ZpbGU7CiAgICAgICAgfQoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBjbGVhbiB1cCBhbmQgcmVwb3J0IGVycm9ycwogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAkc2lua19vYmplY3QtPmNsb3NlX291dHB1dF9maWxlKCkgICAgaWYgJHNpbmtfb2JqZWN0OwogICAgICAgICRkZWJ1Z2dlcl9vYmplY3QtPmNsb3NlX2RlYnVnX2ZpbGUoKSBpZiAkZGVidWdnZXJfb2JqZWN0OwoKICAgICAgICAjIHNldCBvdXRwdXQgZmlsZSBwZXJtaXNzaW9ucwogICAgICAgIGlmICggJG91dHB1dF9maWxlICYmIC1mICRvdXRwdXRfZmlsZSAmJiAhLWwgJG91dHB1dF9maWxlICkgewogICAgICAgICAgICBpZiAoQGlucHV0X2ZpbGVfc3RhdCkgewoKICAgICAgICAgICAgICAgICMgU2V0IGZpbGUgb3duZXJzaGlwIGFuZCBwZXJtaXNzaW9ucwogICAgICAgICAgICAgICAgaWYgKCAkck9wdHMtPnsnZm9ybWF0J30gZXEgJ3RpZHknICkgewogICAgICAgICAgICAgICAgICAgIG15ICggJG1vZGVfaSwgJHVpZF9pLCAkZ2lkX2kgKSA9CiAgICAgICAgICAgICAgICAgICAgICBAaW5wdXRfZmlsZV9zdGF0WyAyLCA0LCA1IF07CiAgICAgICAgICAgICAgICAgICAgbXkgKCAkdWlkX28sICRnaWRfbyApID0gKCBzdGF0KCRvdXRwdXRfZmlsZSkgKVsgNCwgNSBdOwogICAgICAgICAgICAgICAgICAgIG15ICRpbnB1dF9maWxlX3Blcm1pc3Npb25zICA9ICRtb2RlX2kgJiBvY3QoNzc3Nyk7CiAgICAgICAgICAgICAgICAgICAgbXkgJG91dHB1dF9maWxlX3Blcm1pc3Npb25zID0gJGlucHV0X2ZpbGVfcGVybWlzc2lvbnM7CgogICAgICAgICAgICAgICAgICAgICNydDEyODQ3NzogYXZvaWQgaW5jb25zaXN0ZW50IG93bmVyL2dyb3VwIGFuZCBzdWlkL3NnaWQKICAgICAgICAgICAgICAgICAgICBpZiAoICR1aWRfaSAhPSAkdWlkX28gfHwgJGdpZF9pICE9ICRnaWRfbyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgdHJ5IHRvIGNoYW5nZSBvd25lciBhbmQgZ3JvdXAgdG8gbWF0Y2ggaW5wdXQgZmlsZSBpZgogICAgICAgICAgICAgICAgICAgICAgICAjIGluIC1iIG1vZGUuICBOb3RlOiBjaG93biByZXR1cm5zIG51bWJlciBvZiBmaWxlcwogICAgICAgICAgICAgICAgICAgICAgICAjIHN1Y2Nlc3NmdWxseSBjaGFuZ2VkLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRpbl9wbGFjZV9tb2RpZnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGNob3duKCAkdWlkX2ksICRnaWRfaSwgJG91dHB1dF9maWxlICkgKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG93bmVyL2dyb3VwIHN1Y2Nlc3NmdWxseSBjaGFuZ2VkCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvd25lciBvciBncm91cCBkaWZmZXI6IGRvIG5vdCBjb3B5IHN1aWQgYW5kIHNnaWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvdXRwdXRfZmlsZV9wZXJtaXNzaW9ucyA9ICRtb2RlX2kgJiBvY3QoNzc3KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGlucHV0X2ZpbGVfcGVybWlzc2lvbnMgIT0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3V0cHV0X2ZpbGVfcGVybWlzc2lvbnMgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdhcm4oCiJVbmFibGUgdG8gY29weSBzZXR1aWQgYW5kL29yIHNldGdpZCBiaXRzIGZvciBvdXRwdXQgZmlsZSAnJG91dHB1dF9maWxlJ1xuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgTWFrZSB0aGUgb3V0cHV0IGZpbGUgZm9yIHJ3IHVubGVzcyB3ZSBhcmUgaW4gLWIgbW9kZS4KICAgICAgICAgICAgICAgICAgICAjIEV4cGxhbmF0aW9uOiBwZXJsdGlkeSBkb2VzIG5vdCB1bmxpbmsgZXhpc3Rpbmcgb3V0cHV0CiAgICAgICAgICAgICAgICAgICAgIyBmaWxlcyBiZWZvcmUgd3JpdGluZyB0byB0aGVtLCBmb3Igc2FmZXR5LiAgSWYgYQogICAgICAgICAgICAgICAgICAgICMgZGVzaWduYXRlZCBvdXRwdXQgZmlsZSBleGlzdHMgYW5kIGlzIG5vdCB3cml0YWJsZSwKICAgICAgICAgICAgICAgICAgICAjIHBlcmx0aWR5IHdpbGwgaGFsdC4gIFRoaXMgY2FuIHByZXZlbnQgYSBkYXRhIGxvc3MgaWYgYQogICAgICAgICAgICAgICAgICAgICMgdXNlciBhY2NpZGVudGFsbHkgZW50ZXJzICJwZXJsdGlkeSBpbmZpbGUgLW8KICAgICAgICAgICAgICAgICAgICAjIGltcG9ydGFudF9yb19maWxlIiwgb3IgInBlcmx0aWR5IGluZmlsZSAtc3QKICAgICAgICAgICAgICAgICAgICAjID5pbXBvcnRhbnRfcm9fZmlsZSIuIEJ1dCBpdCBhbHNvIG1lYW5zIHRoYXQgcGVybHRpZHkgY2FuCiAgICAgICAgICAgICAgICAgICAgIyBnZXQgbG9ja2VkIG91dCBvZiByZXJ1bm5pbmcgdW5sZXNzIGl0IG1hcmtzIGl0cyBvd24KICAgICAgICAgICAgICAgICAgICAjIG91dHB1dCBmaWxlcyB3cml0YWJsZS4gVGhlIGFsdGVybmF0aXZlLCBvZiBhbHdheXMKICAgICAgICAgICAgICAgICAgICAjIHVubGlua2luZyB0aGUgZGVzaWduYXRlZCBvdXRwdXQgZmlsZSwgaXMgbGVzcyBzYWZlIGFuZAogICAgICAgICAgICAgICAgICAgICMgbm90IGFsd2F5cyBwb3NzaWJsZSwgZXhjZXB0IGluIC1iIG1vZGUsIHdoZXJlIHRoZXJlIGlzIGFuCiAgICAgICAgICAgICAgICAgICAgIyBhc3N1bXB0aW9uIHRoYXQgYSBwcmV2aW91cyBiYWNrdXAgY2FuIGJlIHVubGlua2VkIGV2ZW4gaWYKICAgICAgICAgICAgICAgICAgICAjIG5vdCB3cml0YWJsZS4KICAgICAgICAgICAgICAgICAgICBpZiAoICEkaW5fcGxhY2VfbW9kaWZ5ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkb3V0cHV0X2ZpbGVfcGVybWlzc2lvbnMgfD0gb2N0KDYwMCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoICFjaG1vZCggJG91dHB1dF9maWxlX3Blcm1pc3Npb25zLCAkb3V0cHV0X2ZpbGUgKSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY291bGRuJ3QgY2hhbmdlIGZpbGUgcGVybWlzc2lvbnMKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJG9wZXJtID0gc3ByaW50ZiAiJTA0byIsICRvdXRwdXRfZmlsZV9wZXJtaXNzaW9uczsKICAgICAgICAgICAgICAgICAgICAgICAgV2FybigKIlVuYWJsZSB0byBzZXQgcGVybWlzc2lvbnMgZm9yIG91dHB1dCBmaWxlICckb3V0cHV0X2ZpbGUnIHRvICRvcGVybVxuIgogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGVsc2UgdXNlIGRlZmF1bHQgcGVybWlzc2lvbnMgZm9yIGh0bWwgYW5kIGFueSBvdGhlciBmb3JtYXQKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgRG8gc3ludGF4IGNoZWNrIGlmIHJlcXVlc3RlZCBhbmQgcG9zc2libGUKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgbXkgJGluZmlsZV9zeW50YXhfb2sgPSAwOyAgICAjIC0xIG5vICAwPWRvbid0IGtub3cgICAxIHllcwogICAgICAgIGlmICggICAkbG9nZ2VyX29iamVjdAogICAgICAgICAgICAmJiAkck9wdHMtPnsnY2hlY2stc3ludGF4J30KICAgICAgICAgICAgJiYgJGlmbmFtZQogICAgICAgICAgICAmJiAkb2ZuYW1lICkKICAgICAgICB7CiAgICAgICAgICAgICRpbmZpbGVfc3ludGF4X29rID0KICAgICAgICAgICAgICBjaGVja19zeW50YXgoICRpZm5hbWUsICRvZm5hbWUsICRsb2dnZXJfb2JqZWN0LCAkck9wdHMgKTsKICAgICAgICB9CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIHJlbW92ZSB0aGUgb3JpZ2luYWwgZmlsZSBmb3IgaW4tcGxhY2UgbW9kaWZ5IGFzIGZvbGxvd3M6CiAgICAgICAgIyAgICRkZWxldGVfYmFja3VwPTAgbmV2ZXIKICAgICAgICAjICAgJGRlbGV0ZV9iYWNrdXA9MSBvbmx5IGlmIG5vIGVycm9ycwogICAgICAgICMgICAkZGVsZXRlX2JhY2t1cD4xIGFsd2F5cyAgOiBOT1QgQUxMT1dFRCwgdG9vIHJpc2t5LCBzZWUgYWJvdmUKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgaWYgKCAgICRpbl9wbGFjZV9tb2RpZnkKICAgICAgICAgICAgJiYgJGRlbGV0ZV9iYWNrdXAKICAgICAgICAgICAgJiYgLWYgJGlmbmFtZQogICAgICAgICAgICAmJiAoICRkZWxldGVfYmFja3VwID4gMSB8fCAhJGxvZ2dlcl9vYmplY3QtPmdldF93YXJuaW5nX2NvdW50KCkgKSApCiAgICAgICAgewoKICAgICAgICAgICAgIyBBcyBhbiBhZGRlZCBzYWZldHkgcHJlY2F1dGlvbiwgZG8gbm90IGRlbGV0ZSB0aGUgc291cmNlIGZpbGUKICAgICAgICAgICAgIyBpZiBpdHMgc2l6ZSBoYXMgZHJvcHBlZCBmcm9tIHBvc2l0aXZlIHRvIHplcm8sIHNpbmNlIHRoaXMKICAgICAgICAgICAgIyBjb3VsZCBpbmRpY2F0ZSBhIGRpc2FzdGVyIG9mIHNvbWUga2luZCwgaW5jbHVkaW5nIGEgaGFyZHdhcmUKICAgICAgICAgICAgIyBmYWlsdXJlLiAgQWN0dWFsbHksIHRoaXMgY291bGQgaGFwcGVuIGlmIHlvdSBoYWQgYSBmaWxlIG9mCiAgICAgICAgICAgICMgYWxsIGNvbW1lbnRzIChvciBwb2QpIGFuZCBkZWxldGVkIGV2ZXJ5dGhpbmcgd2l0aCAtZGFjICgtZGFwKQogICAgICAgICAgICAjIGZvciBzb21lIHJlYXNvbi4KICAgICAgICAgICAgaWYgKCAhLXMgJG91dHB1dF9maWxlICYmIC1zICRpZm5hbWUgJiYgJGRlbGV0ZV9iYWNrdXAgPT0gMSApIHsKICAgICAgICAgICAgICAgIFdhcm4oCiJvdXRwdXQgZmlsZSAnJG91dHB1dF9maWxlJyBtaXNzaW5nIG9yIHplcm8gbGVuZ3RoOyBvcmlnaW5hbCAnJGlmbmFtZScgbm90IGRlbGV0ZWRcbiIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB1bmxpbmsoJGlmbmFtZSkKICAgICAgICAgICAgICAgICAgb3IgRGllKAoidW5hYmxlIHRvIHJlbW92ZSBwcmV2aW91cyAnJGlmbmFtZScgZm9yIC1iIG9wdGlvbjsgY2hlY2sgcGVybWlzc2lvbnM6ICQhXG4iCiAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRsb2dnZXJfb2JqZWN0LT5maW5pc2goICRpbmZpbGVfc3ludGF4X29rLCAkZm9ybWF0dGVyICkKICAgICAgICAgIGlmICRsb2dnZXJfb2JqZWN0OwogICAgfSAgICAjIGVuZCBvZiBtYWluIGxvb3AgdG8gcHJvY2VzcyBhbGwgZmlsZXMKCiAgICAjIEZpeCBmb3IgUlQgIzEzMDI5NzogcmV0dXJuIGEgdHJ1ZSB2YWx1ZSBpZiBhbnl0aGluZyB3YXMgd3JpdHRlbiB0byB0aGUKICAgICMgc3RhbmRhcmQgZXJyb3Igb3V0cHV0LCBldmVuIG5vbi1mYXRhbCB3YXJuaW5nIG1lc3NhZ2VzLCBvdGhlcndpc2UgcmV0dXJuCiAgICAjIGZhbHNlLgoKICAgICMgVGhlc2UgZXhpdCBjb2RlcyBhcmUgcmV0dXJuZWQ6CiAgICAjICAwID0gcGVybHRpZHkgcmFuIHRvIGNvbXBsZXRpb24gd2l0aCBubyBlcnJvcnMKICAgICMgIDEgPSBwZXJsdGlkeSBjb3VsZCBub3QgcnVuIHRvIGNvbXBsZXRpb24gZHVlIHRvIGVycm9ycwogICAgIyAgMiA9IHBlcmx0aWR5IHJhbiB0byBjb21wbGV0aW9uIHdpdGggZXJyb3IgbWVzc2FnZXMKCiAgICAjIE5vdGUgdGhhdCBpZiBwZXJsdGlkeSBpcyBydW4gd2l0aCBtdWx0aXBsZSBmaWxlcywgYW55IHNpbmdsZSBmaWxlIHdpdGgKICAgICMgZXJyb3JzIG9yIHdhcm5pbmdzIHdpbGwgd3JpdGUgYSBsaW5lIGxpa2UKICAgICMgICAgICAgICcjIyBQbGVhc2Ugc2VlIGZpbGUgdGVzdGluZy50LkVSUicKICAgICMgdG8gc3RhbmRhcmQgb3V0cHV0IGZvciBlYWNoIGZpbGUgd2l0aCBlcnJvcnMsIHNvIHRoZSBmbGFnIHdpbGwgYmUgdHJ1ZSwKICAgICMgZXZlbiBpZiBvbmx5IHNvbWUgb2YgdGhlIG11bHRpcGxlIGZpbGVzIG1heSBoYXZlIGhhZCBlcnJvcnMuCgogIE5PUk1BTF9FWElUOgogICAgbXkgJHJldCA9ICRXYXJuX2NvdW50ID8gMiA6IDA7CiAgICByZXR1cm4gJHJldDsKCiAgRVJST1JfRVhJVDoKICAgIHJldHVybiAxOwp9ICMjIGVuZCBvZiBtYWluIHByb2dyYW0gcGVybHRpZHkKfSAjIyBlbmQgb2YgY2xvc3VyZSBmb3Igc3ViIHBlcmx0aWR5CgpzdWIgbGluZV9kaWZmIHsKCiAgICAjIEdpdmVuIHR3byBzdHJpbmdzLCByZXR1cm4KICAgICMgJGRpZmZfbWFya2VyID0gYSBzdHJpbmcgd2l0aCBjYXJhdCAoXikgc3ltYm9scyBpbmRpY2F0aW5nIGRpZmZlcmVuY2VzCiAgICAjICRwb3MxID0gY2hhcmFjdGVyIHBvc2l0aW9uIG9mIGZpcnN0IGRpZmZlcmVuY2U7IHBvczE9LTEgaWYgbm8gZGlmZmVyZW5jZQoKICAgICMgRm9ybSBleGNsdXNpdmUgb3Igb2YgdGhlIHN0cmluZ3MsIHdoaWNoIGhhcyBudWxsIGNoYXJhY3RlcnMgd2hlcmUgc3RyaW5ncwogICAgIyBoYXZlIHNhbWUgY29tbW9uIGNoYXJhY3RlcnMgc28gbm9uLW51bGwgY2hhcmFjdGVycyBpbmRpY2F0ZSBjaGFyYWN0ZXIKICAgICMgZGlmZmVyZW5jZXMuCiAgICBteSAoICRzMSwgJHMyICkgPSBAXzsKICAgIG15ICRkaWZmX21hcmtlciA9ICIiOwogICAgbXkgJHBvcyAgICAgICAgID0gLTE7CiAgICBteSAkcG9zMSAgICAgICAgPSAkcG9zOwogICAgaWYgKCBkZWZpbmVkKCRzMSkgJiYgZGVmaW5lZCgkczIpICkgewogICAgICAgIG15ICRjb3VudCA9IDA7CiAgICAgICAgbXkgJG1hc2sgID0gJHMxIF4gJHMyOwoKICAgICAgICB3aGlsZSAoICRtYXNrID1+IC9bXlwwXS9nICkgewogICAgICAgICAgICAkY291bnQrKzsKICAgICAgICAgICAgbXkgJHBvc19sYXN0ID0gJHBvczsKICAgICAgICAgICAgJHBvcyA9ICQtWzBdOwogICAgICAgICAgICBpZiAoICRjb3VudCA9PSAxICkgeyAkcG9zMSA9ICRwb3M7IH0KICAgICAgICAgICAgJGRpZmZfbWFya2VyIC49ICcgJyB4ICggJHBvcyAtICRwb3NfbGFzdCAtIDEgKSAuICdeJzsKCiAgICAgICAgICAgICMgd2UgY291bGQgY29udGludWUgdG8gbWFyayBhbGwgZGlmZmVyZW5jZXMsIGJ1dCB0aGVyZSBpcyBubyBwb2ludAogICAgICAgICAgICBsYXN0OwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiB3YW50YXJyYXkgPyAoICRkaWZmX21hcmtlciwgJHBvczEgKSA6ICRkaWZmX21hcmtlcjsKfQoKc3ViIGNvbXBhcmVfc3RyaW5nX2J1ZmZlcnMgewoKICAgICMgQ29tcGFyZSBpbnB1dCBhbmQgb3V0cHV0IHN0cmluZyBidWZmZXJzIGFuZCByZXR1cm4gYSBicmllZiB0ZXh0CiAgICAjIGRlc2NyaXB0aW9uIG9mIHRoZSBmaXJzdCBkaWZmZXJlbmNlLgogICAgbXkgKCAkYnVmaSwgJGJ1Zm8sICRpc19lbmNvZGVkX2RhdGEgKSA9IEBfOwoKICAgIG15ICRsZW5pID0gbGVuZ3RoKCRidWZpKTsKICAgIG15ICRsZW5vID0gZGVmaW5lZCgkYnVmbykgPyBsZW5ndGgoJGJ1Zm8pIDogMDsKICAgIG15ICRtc2cgPQogICAgICAiSW5wdXQgIGZpbGUgbGVuZ3RoIGlzICRsZW5pIGNoYXJzXG5PdXRwdXQgZmlsZSBsZW5ndGggaXMgJGxlbm8gY2hhcnNcbiI7CiAgICByZXR1cm4gJG1zZyB1bmxlc3MgJGxlbmkgJiYgJGxlbm87CgogICAgbXkgKCAkZmhpLCAkZm5hbWVpICkgPSBzdHJlYW1oYW5kbGUoIFwkYnVmaSwgJ3InLCAkaXNfZW5jb2RlZF9kYXRhICk7CiAgICBteSAoICRmaG8sICRmbmFtZW8gKSA9IHN0cmVhbWhhbmRsZSggXCRidWZvLCAncicsICRpc19lbmNvZGVkX2RhdGEgKTsKICAgIHJldHVybiAkbXNnIHVubGVzcyAoICRmaG8gJiYgJGZoaSApOyAgICAjIGZvciBzYWZldHksIHNob3VsZG4ndCBoYXBwZW4KICAgIG15ICggJGxpbmVpLCAgICAgICAgICAgICAgJGxpbmVvICk7CiAgICBteSAoICRjb3VudGksICAgICAgICAgICAgICRjb3VudG8gKSAgICAgICAgICAgICAgPSAoIDAsICAwICk7CiAgICBteSAoICRsYXN0X25vbmJsYW5rX2xpbmUsICRsYXN0X25vbmJsYW5rX2NvdW50ICkgPSAoICIiLCAwICk7CiAgICBteSAkdHJ1bmNhdGUgPSBzdWIgewogICAgICAgIG15ICggJHN0ciwgJGxlbm1heCApID0gQF87CiAgICAgICAgaWYgKCBsZW5ndGgoJHN0cikgPiAkbGVubWF4ICkgewogICAgICAgICAgICAkc3RyID0gc3Vic3RyKCAkc3RyLCAwLCAkbGVubWF4ICkgLiAiLi4uIjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRzdHI7CiAgICB9OwogICAgd2hpbGUgKDEpIHsKICAgICAgICBpZiAoJGxpbmVpKSB7CiAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX2xpbmUgID0gJGxpbmVpOwogICAgICAgICAgICAkbGFzdF9ub25ibGFua19jb3VudCA9ICRjb3VudGk7CiAgICAgICAgfQogICAgICAgICRsaW5laSA9ICRmaGktPmdldGxpbmUoKTsKICAgICAgICAkbGluZW8gPSAkZmhvLT5nZXRsaW5lKCk7CgogICAgICAgICMgY29tcGFyZSBjaG9tcCdlZCBsaW5lcwogICAgICAgIGlmICggZGVmaW5lZCgkbGluZWkpICkgeyAkY291bnRpKys7IGNob21wICRsaW5laSB9CiAgICAgICAgaWYgKCBkZWZpbmVkKCRsaW5lbykgKSB7ICRjb3VudG8rKzsgY2hvbXAgJGxpbmVvIH0KCiAgICAgICAgIyBzZWUgaWYgb25lIG9yIGJvdGggZW5kZWQgYmVmb3JlIGEgZGlmZmVyZW5jZQogICAgICAgIGxhc3QgdW5sZXNzICggZGVmaW5lZCgkbGluZWkpICYmIGRlZmluZWQoJGxpbmVvKSApOwoKICAgICAgICBuZXh0IGlmICggJGxpbmVpIGVxICRsaW5lbyApOwoKICAgICAgICAjIGxpbmVzIGRpZmZlciAuLi4KICAgICAgICBteSAoICRsaW5lX2RpZmYsICRwb3MxICkgPSBsaW5lX2RpZmYoICRsaW5laSwgJGxpbmVvICk7CiAgICAgICAgbXkgJHJlYXNvbiA9ICJGaWxlcyBmaXJzdCBkaWZmZXIgYXQgY2hhcmFjdGVyICRwb3MxIG9mIGxpbmUgJGNvdW50aSI7CgogICAgICAgIG15ICggJGxlYWRpbmdfd3NfaSwgJGxlYWRpbmdfd3NfbyApID0gKCAiIiwgIiIgKTsKICAgICAgICBpZiAoICRsaW5laSA9fiAvXihccyspLyApIHsgJGxlYWRpbmdfd3NfaSA9ICQxOyB9CiAgICAgICAgaWYgKCAkbGluZW8gPX4gL14oXHMrKS8gKSB7ICRsZWFkaW5nX3dzX28gPSAkMTsgfQogICAgICAgIGlmICggJGxlYWRpbmdfd3NfaSBuZSAkbGVhZGluZ193c19vICkgewogICAgICAgICAgICAkcmVhc29uIC49ICI7IGxlYWRpbmcgd2hpdGVzcGFjZSBkaWZmZXJzIjsKICAgICAgICAgICAgaWYgKCAkbGVhZGluZ193c19pID1+IC9cdC8gKSB7CiAgICAgICAgICAgICAgICAkcmVhc29uIC49ICI7IGlucHV0IGhhcyB0YWIgY2hhciI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15ICggJHRyYWlsaW5nX3dzX2ksICR0cmFpbGluZ193c19vICkgPSAoICIiLCAiIiApOwogICAgICAgICAgICBpZiAoICRsaW5laSA9fiAvKFxzKykkLyApIHsgJHRyYWlsaW5nX3dzX2kgPSAkMTsgfQogICAgICAgICAgICBpZiAoICRsaW5lbyA9fiAvKFxzKykkLyApIHsgJHRyYWlsaW5nX3dzX28gPSAkMTsgfQogICAgICAgICAgICBpZiAoICR0cmFpbGluZ193c19pIG5lICR0cmFpbGluZ193c19vICkgewogICAgICAgICAgICAgICAgJHJlYXNvbiAuPSAiOyB0cmFpbGluZyB3aGl0ZXNwYWNlIGRpZmZlcnMiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRtc2cgLj0gJHJlYXNvbiAuICJcbiI7CgogICAgICAgICMgbGltaXQgc3RyaW5nIGRpc3BsYXkgbGVuZ3RoCiAgICAgICAgaWYgKCAkcG9zMSA+IDYwICkgewogICAgICAgICAgICBteSAkZHJvcCA9ICRwb3MxIC0gNDA7CiAgICAgICAgICAgICRsaW5laSAgICAgPSAiLi4uIiAuIHN1YnN0ciggJGxpbmVpLCAgICAgJGRyb3AgKTsKICAgICAgICAgICAgJGxpbmVvICAgICA9ICIuLi4iIC4gc3Vic3RyKCAkbGluZW8sICAgICAkZHJvcCApOwogICAgICAgICAgICAkbGluZV9kaWZmID0gIiAgICIgLiBzdWJzdHIoICRsaW5lX2RpZmYsICRkcm9wICk7CiAgICAgICAgfQogICAgICAgICRsaW5laSAgICAgICAgICAgICAgPSAkdHJ1bmNhdGUtPiggJGxpbmVpLCAgICAgICAgICAgICAgNzIgKTsKICAgICAgICAkbGluZW8gICAgICAgICAgICAgID0gJHRydW5jYXRlLT4oICRsaW5lbywgICAgICAgICAgICAgIDcyICk7CiAgICAgICAgJGxhc3Rfbm9uYmxhbmtfbGluZSA9ICR0cnVuY2F0ZS0+KCAkbGFzdF9ub25ibGFua19saW5lLCA3MiApOwoKICAgICAgICBpZiAoJGxhc3Rfbm9uYmxhbmtfbGluZSkgewogICAgICAgICAgICBteSAkY291bnRtID0gJGNvdW50aSAtIDE7CiAgICAgICAgICAgICRtc2cgLj0gPDxFT007CiAkbGFzdF9ub25ibGFua19jb3VudDokbGFzdF9ub25ibGFua19saW5lCkVPTQogICAgICAgIH0KICAgICAgICAkbGluZV9kaWZmID0gJyAnIHggKCAyICsgbGVuZ3RoKCRjb3VudG8pICkgLiAkbGluZV9kaWZmOwogICAgICAgICRtc2cgLj0gPDxFT007CjwkY291bnRpOiRsaW5laQo+JGNvdW50bzokbGluZW8KJGxpbmVfZGlmZiAKRU9NCiAgICAgICAgcmV0dXJuICRtc2c7CiAgICB9ICMjIGVuZCB3aGlsZQoKICAgICMgbm8gbGluZSBkaWZmZXJlbmNlcyBmb3VuZCwgYnV0IG9uZSBmaWxlIG1heSBoYXZlIGZld2VyIGxpbmVzCiAgICBpZiAoICRjb3VudGkgPiAkY291bnRvICkgewogICAgICAgICRtc2cgLj0gPDxFT007CkZpbGVzIGluaXRpYWxseSBtYXRjaCBmaWxlIGJ1dCBvdXRwdXQgZmlsZSBoYXMgZmV3ZXIgbGluZXMKRU9NCiAgICB9CiAgICBlbHNpZiAoICRjb3VudGkgPCAkY291bnRvICkgewogICAgICAgICRtc2cgLj0gPDxFT007CkZpbGVzIGluaXRpYWxseSBtYXRjaCBmaWxlIGJ1dCBpbnB1dCBmaWxlIGhhcyBmZXdlciBsaW5lcwpFT00KICAgIH0KICAgIGVsc2UgewogICAgICAgICRtc2cgLj0gPDxFT007ClRleHQgaW4gbGluZXMgb2YgZmlsZSBtYXRjaCBidXQgY2hlY2tzdW1zIGRpZmZlci4gUGVyaGFwcyBsaW5lIGVuZGluZ3MgZGlmZmVyLgpFT00KICAgIH0KICAgIHJldHVybiAkbXNnOwp9CgpzdWIgZ2V0X3N0cmVhbV9hc19uYW1lZF9maWxlIHsKCiAgICAjIFJldHVybiB0aGUgbmFtZSBvZiBhIGZpbGUgY29udGFpbmluZyBhIHN0cmVhbSBvZiBkYXRhLCBjcmVhdGluZwogICAgIyBhIHRlbXBvcmFyeSBmaWxlIGlmIG5lY2Vzc2FyeS4KICAgICMgR2l2ZW46CiAgICAjICAkc3RyZWFtIC0gdGhlIG5hbWUgb2YgYSBmaWxlIG9yIHN0cmVhbQogICAgIyBSZXR1cm5zOgogICAgIyAgJGZuYW1lID0gbmFtZSBvZiBmaWxlIGlmIHBvc3NpYmxlLCBvciB1bmRlZgogICAgIyAgJGlmX3RtcGZpbGUgPSB0cnVlIGlmIHRlbXAgZmlsZSwgdW5kZWYgaWYgbm90IHRlbXAgZmlsZQogICAgIwogICAgIyBUaGlzIHJvdXRpbmUgaXMgbmVlZGVkIGZvciBwYXNzaW5nIGFjdHVhbCBmaWxlcyB0byBQZXJsIGZvcgogICAgIyBhIHN5bnRheCBjaGVjay4KICAgIG15ICgkc3RyZWFtKSA9IEBfOwogICAgbXkgJGlzX3RtcGZpbGU7CiAgICBteSAkZm5hbWU7CiAgICBpZiAoJHN0cmVhbSkgewogICAgICAgIGlmICggcmVmKCRzdHJlYW0pICkgewogICAgICAgICAgICBteSAoICRmaF9zdHJlYW0sICRmaF9uYW1lICkgPQogICAgICAgICAgICAgIFBlcmw6OlRpZHk6OnN0cmVhbWhhbmRsZSggJHN0cmVhbSwgJ3InICk7CiAgICAgICAgICAgIGlmICgkZmhfc3RyZWFtKSB7CiAgICAgICAgICAgICAgICBteSAoICRmb3V0LCAkdG1wbmFtICkgPSBGaWxlOjpUZW1wOjp0ZW1wZmlsZSgpOwogICAgICAgICAgICAgICAgaWYgKCRmb3V0KSB7CiAgICAgICAgICAgICAgICAgICAgJGZuYW1lICAgICAgPSAkdG1wbmFtOwogICAgICAgICAgICAgICAgICAgICRpc190bXBmaWxlID0gMTsKICAgICAgICAgICAgICAgICAgICBiaW5tb2RlICRmb3V0OwogICAgICAgICAgICAgICAgICAgIHdoaWxlICggbXkgJGxpbmUgPSAkZmhfc3RyZWFtLT5nZXRsaW5lKCkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmb3V0LT5wcmludCgkbGluZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRmb3V0LT5jbG9zZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGZoX3N0cmVhbS0+Y2xvc2UoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRzdHJlYW0gbmUgJy0nICYmIC1mICRzdHJlYW0gKSB7CiAgICAgICAgICAgICRmbmFtZSA9ICRzdHJlYW07CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuICggJGZuYW1lLCAkaXNfdG1wZmlsZSApOwp9CgpzdWIgZmlsZWdsb2JfdG9fcmUgewoKICAgICMgbW9kaWZpZWQgKGNvcnJlY3RlZCkgZnJvbSB2ZXJzaW9uIGluIGZpbmQycGVybAogICAgbXkgJHggPSBzaGlmdDsKICAgICR4ID1+IHMjKFsuL15cJCgpXSkjXFwkMSNnOyAgICAjIGVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMKICAgICR4ID1+IHMjXCojLiojZzsgICAgICAgICAgICAgICAjICcqJyAtPiAnLionCiAgICAkeCA9fiBzI1w/Iy4jZzsgICAgICAgICAgICAgICAgIyAnPycgLT4gJy4nCiAgICByZXR1cm4gIl4keFxceiI7ICAgICAgICAgICAgICAgIyBtYXRjaCB3aG9sZSB3b3JkCn0KCnN1YiBtYWtlX2V4dGVuc2lvbiB7CgogICAgIyBNYWtlIGEgZmlsZSBleHRlbnNpb24sIGluY2x1ZGluZyBhbnkgbGVhZGluZyAnLicgaWYgbmVjZXNzYXJ5CiAgICAjIFRoZSAnLicgbWF5IGFjdHVhbGx5IGJlIGFuICdfJyB1bmRlciBWTVMKICAgIG15ICggJGV4dGVuc2lvbiwgJGRlZmF1bHQsICRkb3QgKSA9IEBfOwoKICAgICMgVXNlIHRoZSBkZWZhdWx0IGlmIG5vbmUgc3BlY2lmaWVkCiAgICAkZXh0ZW5zaW9uID0gJGRlZmF1bHQgdW5sZXNzICgkZXh0ZW5zaW9uKTsKCiAgICAjIE9ubHkgZXh0ZW5zaW9ucyB3aXRoIHRoZXNlIGxlYWRpbmcgY2hhcmFjdGVycyBnZXQgYSAnLicKICAgICMgVGhpcyBydWxlIGdpdmVzIHRoZSB1c2VyIHNvbWUgZnJlZWRvbQogICAgaWYgKCAkZXh0ZW5zaW9uID1+IC9eW2EtekEtWjAtOV0vICkgewogICAgICAgICRleHRlbnNpb24gPSAkZG90IC4gJGV4dGVuc2lvbjsKICAgIH0KICAgIHJldHVybiAkZXh0ZW5zaW9uOwp9CgpzdWIgd3JpdGVfbG9nZmlsZV9oZWFkZXIgewogICAgbXkgKAogICAgICAgICRyT3B0cywgICAgICAgICRsb2dnZXJfb2JqZWN0LCAkY29uZmlnX2ZpbGUsCiAgICAgICAgJHJyYXdfb3B0aW9ucywgJFdpbmRvd3NfdHlwZSwgICRyZWFkYWJsZV9vcHRpb25zCiAgICApID0gQF87CiAgICAkbG9nZ2VyX29iamVjdC0+d3JpdGVfbG9nZmlsZV9lbnRyeSgKInBlcmx0aWR5IHZlcnNpb24gJFZFUlNJT04gbG9nIGZpbGUgb24gYSAkXk8gc3lzdGVtLCBPTERfUEVSTF9WRVJTSU9OPSRdXG4iCiAgICApOwogICAgaWYgKCRXaW5kb3dzX3R5cGUpIHsKICAgICAgICAkbG9nZ2VyX29iamVjdC0+d3JpdGVfbG9nZmlsZV9lbnRyeSgiV2luZG93cyB0eXBlIGlzICRXaW5kb3dzX3R5cGVcbiIpOwogICAgfQogICAgbXkgJG9wdGlvbnNfc3RyaW5nID0gam9pbiggJyAnLCBAeyRycmF3X29wdGlvbnN9ICk7CgogICAgaWYgKCRjb25maWdfZmlsZSkgewogICAgICAgICRsb2dnZXJfb2JqZWN0LT53cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICAgICAiRm91bmQgQ29uZmlndXJhdGlvbiBGaWxlID4+PiAkY29uZmlnX2ZpbGUgXG4iKTsKICAgIH0KICAgICRsb2dnZXJfb2JqZWN0LT53cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICJDb25maWd1cmF0aW9uIGFuZCBjb21tYW5kIGxpbmUgcGFyYW1ldGVycyBmb3IgdGhpcyBydW46XG4iKTsKICAgICRsb2dnZXJfb2JqZWN0LT53cml0ZV9sb2dmaWxlX2VudHJ5KCIkb3B0aW9uc19zdHJpbmdcbiIpOwoKICAgIGlmICggJHJPcHRzLT57J0RFQlVHJ30gfHwgJHJPcHRzLT57J3Nob3ctb3B0aW9ucyd9ICkgewogICAgICAgICRyT3B0cy0+eydsb2dmaWxlJ30gPSAxOyAgICAjIGZvcmNlIGxvZ2ZpbGUgdG8gYmUgc2F2ZWQKICAgICAgICAkbG9nZ2VyX29iamVjdC0+d3JpdGVfbG9nZmlsZV9lbnRyeSgKICAgICAgICAgICAgIkZpbmFsIHBhcmFtZXRlciBzZXQgZm9yIHRoaXMgcnVuXG4iKTsKICAgICAgICAkbG9nZ2VyX29iamVjdC0+d3JpdGVfbG9nZmlsZV9lbnRyeSgKICAgICAgICAgICAgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CgogICAgICAgICRsb2dnZXJfb2JqZWN0LT53cml0ZV9sb2dmaWxlX2VudHJ5KCRyZWFkYWJsZV9vcHRpb25zKTsKCiAgICAgICAgJGxvZ2dlcl9vYmplY3QtPndyaXRlX2xvZ2ZpbGVfZW50cnkoCiAgICAgICAgICAgICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwogICAgfQogICAgJGxvZ2dlcl9vYmplY3QtPndyaXRlX2xvZ2ZpbGVfZW50cnkoCiAgICAgICAgIlRvIGZpbmQgZXJyb3IgbWVzc2FnZXMgc2VhcmNoIGZvciAnV0FSTklORycgd2l0aCB5b3VyIGVkaXRvclxuIik7CiAgICByZXR1cm47Cn0KCnN1YiBnZW5lcmF0ZV9vcHRpb25zIHsKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIEdlbmVyYXRlIGFuZCByZXR1cm4gcmVmZXJlbmNlcyB0bzoKICAgICMgIEBvcHRpb25fc3RyaW5nIC0gdGhlIGxpc3Qgb2Ygb3B0aW9ucyB0byBiZSBwYXNzZWQgdG8gR2V0b3B0OjpMb25nCiAgICAjICBAZGVmYXVsdHMgLSB0aGUgbGlzdCBvZiBkZWZhdWx0IG9wdGlvbnMKICAgICMgICVleHBhbnNpb24gLSBhIGhhc2ggc2hvd2luZyBob3cgYWxsIGFiYnJldmlhdGlvbnMgYXJlIGV4cGFuZGVkCiAgICAjICAlY2F0ZWdvcnkgLSBhIGhhc2ggZ2l2aW5nIHRoZSBnZW5lcmFsIGNhdGVnb3J5IG9mIGVhY2ggb3B0aW9uCiAgICAjICAlb3B0aW9uX3JhbmdlIC0gYSBoYXNoIGdpdmluZyB0aGUgdmFsaWQgcmFuZ2VzIG9mIGNlcnRhaW4gb3B0aW9ucwoKICAgICMgTm90ZTogYSBmZXcgb3B0aW9ucyBhcmUgbm90IGRvY3VtZW50ZWQgaW4gdGhlIG1hbiBwYWdlIGFuZCB1c2FnZQogICAgIyBtZXNzYWdlLiBUaGlzIGlzIGJlY2F1c2UgdGhlc2UgYXJlIGV4cGVyaW1lbnRhbCBvciBkZWJ1ZyBvcHRpb25zIGFuZAogICAgIyBtYXkgb3IgbWF5IG5vdCBiZSByZXRhaW5lZCBpbiBmdXR1cmUgdmVyc2lvbnMuCiAgICAjCiAgICAjIEhlcmUgYXJlIHRoZSB1bmRvY3VtZW50ZWQgZmxhZ3MgYXMgZmFyIGFzIEkga25vdy4gIEFueSBvZiB0aGVtCiAgICAjIG1heSBkaXNhcHBlYXIgYXQgYW55IHRpbWUuICBUaGV5IGFyZSBtYWlubHkgZm9yIGZpbmUtdHVuaW5nCiAgICAjIGFuZCBkZWJ1Z2dpbmcuCiAgICAjCiAgICAjIGZsbCAtLT4gZnV6enktbGluZS1sZW5ndGggICAgICAgICAgICMgYSB0cml2aWFsIHBhcmFtZXRlciB3aGljaCBnZXRzCiAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVybmVkIG9mZiBmb3IgdGhlIGV4dHJ1ZGUgb3B0aW9uCiAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgbWFpbmx5IGZvciBkZWJ1Z2dpbmcKICAgICMgc2NsIC0tPiBzaG9ydC1jb25jYXRlbmF0aW9uLWl0ZW0tbGVuZ3RoICAgIyBoZWxwcyBicmVhayBhdCAnLicKICAgICMgcmVjb21iaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmb3IgZGVidWdnaW5nIGxpbmUgYnJlYWtzCiAgICAjIHZhbGlnbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZm9yIGRlYnVnZ2luZyB2ZXJ0aWNhbCBhbGlnbm1lbnQKICAgICMgSSAgIC0tPiBESUFHTk9TVElDUyAgICAgICAgICAgICAgICAgIyBmb3IgZGVidWdnaW5nIFsqKkRFQUNUSVZBVEVEKipdCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgIyBoZXJlIGlzIGEgc3VtbWFyeSBvZiB0aGUgR2V0b3B0IGNvZGVzOgogICAgIyA8bm9uZT4gZG9lcyBub3QgdGFrZSBhbiBhcmd1bWVudAogICAgIyA9cyB0YWtlcyBhIG1hbmRhdG9yeSBzdHJpbmcKICAgICMgOnMgdGFrZXMgYW4gb3B0aW9uYWwgc3RyaW5nICAoRE8gTk9UIFVTRSAtIGZpbGVuYW1lcyB3aWxsIGdldCBlYXRlbiB1cCkKICAgICMgPWkgdGFrZXMgYSBtYW5kYXRvcnkgaW50ZWdlcgogICAgIyA6aSB0YWtlcyBhbiBvcHRpb25hbCBpbnRlZ2VyIChOT1QgUkVDT01NRU5ERUQgLSBjYW4gY2F1c2UgdHJvdWJsZSkKICAgICMgISBkb2VzIG5vdCB0YWtlIGFuIGFyZ3VtZW50IGFuZCBtYXkgYmUgbmVnYXRlZAogICAgIyAgaS5lLiwgLWZvbyBhbmQgLW5vZm9vIGFyZSBhbGxvd2VkCiAgICAjIGEgZG91YmxlIGRhc2ggc2lnbmFscyB0aGUgZW5kIG9mIHRoZSBvcHRpb25zIGxpc3QKICAgICMKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgRGVmaW5lIHRoZSBvcHRpb24gc3RyaW5nIHBhc3NlZCB0byBHZXRPcHRpb25zLgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIG15IEBvcHRpb25fc3RyaW5nICAgPSAoKTsKICAgIG15ICVleHBhbnNpb24gICAgICAgPSAoKTsKICAgIG15ICVvcHRpb25fY2F0ZWdvcnkgPSAoKTsKICAgIG15ICVvcHRpb25fcmFuZ2UgICAgPSAoKTsKICAgIG15ICRyZXhwYW5zaW9uICAgICAgPSBcJWV4cGFuc2lvbjsKCiAgICAjIG5hbWVzIG9mIGNhdGVnb3JpZXMgaW4gbWFudWFsCiAgICAjIGxlYWRpbmcgaW50ZWdlcnMgd2lsbCBhbGxvdyBzb3J0aW5nCiAgICBteSBAY2F0ZWdvcnlfbmFtZSA9ICgKICAgICAgICAnMC4gSS9PIGNvbnRyb2wnLAogICAgICAgICcxLiBCYXNpYyBmb3JtYXR0aW5nIG9wdGlvbnMnLAogICAgICAgICcyLiBDb2RlIGluZGVudGF0aW9uIGNvbnRyb2wnLAogICAgICAgICczLiBXaGl0ZXNwYWNlIGNvbnRyb2wnLAogICAgICAgICc0LiBDb21tZW50IGNvbnRyb2xzJywKICAgICAgICAnNS4gTGluZWJyZWFrIGNvbnRyb2xzJywKICAgICAgICAnNi4gQ29udHJvbGxpbmcgbGlzdCBmb3JtYXR0aW5nJywKICAgICAgICAnNy4gUmV0YWluaW5nIG9yIGlnbm9yaW5nIGV4aXN0aW5nIGxpbmUgYnJlYWtzJywKICAgICAgICAnOC4gQmxhbmsgbGluZSBjb250cm9sJywKICAgICAgICAnOS4gT3RoZXIgY29udHJvbHMnLAogICAgICAgICcxMC4gSFRNTCBvcHRpb25zJywKICAgICAgICAnMTEuIHBvZDJodG1sIG9wdGlvbnMnLAogICAgICAgICcxMi4gQ29udHJvbGxpbmcgSFRNTCBwcm9wZXJ0aWVzJywKICAgICAgICAnMTMuIERlYnVnZ2luZycsCiAgICApOwoKICAgICMgIFRoZXNlIG9wdGlvbnMgYXJlIHBhcnNlZCBkaXJlY3RseSBieSBwZXJsdGlkeToKICAgICMgICAgaGVscCBoCiAgICAjICAgIHZlcnNpb24gdgogICAgIyAgSG93ZXZlciwgdGhleSBhcmUgaW5jbHVkZWQgaW4gdGhlIG9wdGlvbiBzZXQgc28gdGhhdCB0aGV5IHdpbGwKICAgICMgIGJlIHNlZW4gaW4gdGhlIG9wdGlvbnMgZHVtcC4KCiAgICAjIFRoZXNlIGxvbmcgb3B0aW9uIG5hbWVzIGhhdmUgbm8gYWJicmV2aWF0aW9ucyBvciBhcmUgdHJlYXRlZCBzcGVjaWFsbHkKICAgIEBvcHRpb25fc3RyaW5nID0gcXcoCiAgICAgIGh0bWwhCiAgICAgIG5vcHJvZmlsZQogICAgICBuby1wcm9maWxlCiAgICAgIG5wcm8KICAgICAgcmVjb21iaW5lIQogICAgICB2YWxpZ24hCiAgICAgIG5vdGlkeQogICAgKTsKCiAgICBteSAkY2F0ZWdvcnkgPSAxMzsgICAgIyBEZWJ1Z2dpbmcKICAgIGZvcmVhY2ggKEBvcHRpb25fc3RyaW5nKSB7CiAgICAgICAgbXkgJG9wdCA9ICRfOyAgICAgIyBtdXN0IGF2b2lkIGNoYW5naW5nIHRoZSBhY3R1YWwgZmxhZwogICAgICAgICRvcHQgPX4gcy8hJC8vOwogICAgICAgICRvcHRpb25fY2F0ZWdvcnl7JG9wdH0gPSAkY2F0ZWdvcnlfbmFtZVskY2F0ZWdvcnldOwogICAgfQoKICAgICRjYXRlZ29yeSA9IDExOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSFRNTAogICAgJG9wdGlvbl9jYXRlZ29yeXtodG1sfSA9ICRjYXRlZ29yeV9uYW1lWyRjYXRlZ29yeV07CgogICAgIyByb3V0aW5lIHRvIGluc3RhbGwgYW5kIGNoZWNrIG9wdGlvbnMKICAgIG15ICRhZGRfb3B0aW9uID0gc3ViIHsKICAgICAgICBteSAoICRsb25nX25hbWUsICRzaG9ydF9uYW1lLCAkZmxhZyApID0gQF87CiAgICAgICAgcHVzaCBAb3B0aW9uX3N0cmluZywgJGxvbmdfbmFtZSAuICRmbGFnOwogICAgICAgICRvcHRpb25fY2F0ZWdvcnl7JGxvbmdfbmFtZX0gPSAkY2F0ZWdvcnlfbmFtZVskY2F0ZWdvcnldOwogICAgICAgIGlmICgkc2hvcnRfbmFtZSkgewogICAgICAgICAgICBpZiAoICRleHBhbnNpb257JHNob3J0X25hbWV9ICkgewogICAgICAgICAgICAgICAgbXkgJGV4aXN0aW5nX25hbWUgPSAkZXhwYW5zaW9ueyRzaG9ydF9uYW1lfVswXTsKICAgICAgICAgICAgICAgIERpZSgKInJlZGVmaW5pbmcgYWJicmV2aWF0aW9uICRzaG9ydF9uYW1lIGZvciAkbG9uZ19uYW1lOyBhbHJlYWR5IHVzZWQgZm9yICRleGlzdGluZ19uYW1lXG4iCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRleHBhbnNpb257JHNob3J0X25hbWV9ID0gWyRsb25nX25hbWVdOwogICAgICAgICAgICBpZiAoICRmbGFnIGVxICchJyApIHsKICAgICAgICAgICAgICAgIG15ICRuc2hvcnRfbmFtZSA9ICduJyAuICRzaG9ydF9uYW1lOwogICAgICAgICAgICAgICAgbXkgJG5vbG9uZ19uYW1lID0gJ25vJyAuICRsb25nX25hbWU7CiAgICAgICAgICAgICAgICBpZiAoICRleHBhbnNpb257JG5zaG9ydF9uYW1lfSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkZXhpc3RpbmdfbmFtZSA9ICRleHBhbnNpb257JG5zaG9ydF9uYW1lfVswXTsKICAgICAgICAgICAgICAgICAgICBEaWUoCiJhdHRlbXB0aW5nIHRvIHJlZGVmaW5lIGFiYnJldmlhdGlvbiAkbnNob3J0X25hbWUgZm9yICRub2xvbmdfbmFtZTsgYWxyZWFkeSB1c2VkIGZvciAkZXhpc3RpbmdfbmFtZVxuIgogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkZXhwYW5zaW9ueyRuc2hvcnRfbmFtZX0gPSBbJG5vbG9uZ19uYW1lXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CgogICAgIyBJbnN0YWxsIGxvbmcgb3B0aW9uIG5hbWVzIHdoaWNoIGhhdmUgYSBzaW1wbGUgYWJicmV2aWF0aW9uLgogICAgIyBPcHRpb25zIHdpdGggY29kZSAnIScgZ2V0IHN0YW5kYXJkIG5lZ2F0aW9uICgnbm8nIGZvciBsb25nIG5hbWVzLAogICAgIyAnbicgZm9yIGFiYnJldmlhdGlvbnMpLiAgQ2F0ZWdvcmllcyBmb2xsb3cgdGhlIG1hbnVhbC4KCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICRjYXRlZ29yeSA9IDA7ICAgICMgSS9PX0NvbnRyb2wKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgJGFkZF9vcHRpb24tPiggJ2JhY2t1cC1hbmQtbW9kaWZ5LWluLXBsYWNlJywgJ2InLCAgICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnYmFja3VwLWZpbGUtZXh0ZW5zaW9uJywgICAgICAnYmV4dCcsICAnPXMnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnY2hhcmFjdGVyLWVuY29kaW5nJywgICAgICAgICAnZW5jJywgICAnPXMnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZm9yY2UtcmVhZC1iaW5hcnknLCAgICAgICAgICAnZicsICAgICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdmb3JtYXQnLCAgICAgICAgICAgICAgICAgICAgICdmbXQnLCAgICc9cycgKTsKICAgICRhZGRfb3B0aW9uLT4oICdpdGVyYXRpb25zJywgICAgICAgICAgICAgICAgICdpdCcsICAgICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdsb2dmaWxlJywgICAgICAgICAgICAgICAgICAgICdsb2cnLCAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2xvZ2ZpbGUtZ2FwJywgICAgICAgICAgICAgICAgJ2cnLCAgICAgJzppJyApOwogICAgJGFkZF9vcHRpb24tPiggJ291dGZpbGUnLCAgICAgICAgICAgICAgICAgICAgJ28nLCAgICAgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ291dHB1dC1maWxlLWV4dGVuc2lvbicsICAgICAgJ29leHQnLCAgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ291dHB1dC1wYXRoJywgICAgICAgICAgICAgICAgJ29wYXRoJywgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3Byb2ZpbGUnLCAgICAgICAgICAgICAgICAgICAgJ3BybycsICAgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3F1aWV0JywgICAgICAgICAgICAgICAgICAgICAgJ3EnLCAgICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnc3RhbmRhcmQtZXJyb3Itb3V0cHV0JywgICAgICAnc2UnLCAgICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdzdGFuZGFyZC1vdXRwdXQnLCAgICAgICAgICAgICdzdCcsICAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3VzZS11bmljb2RlLWdjc3RyaW5nJywgICAgICAgJ2djcycsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnd2FybmluZy1vdXRwdXQnLCAgICAgICAgICAgICAndycsICAgICAnIScgKTsKCiAgICAjIG9wdGlvbnMgd2hpY2ggYXJlIGJvdGggdG9nZ2xlIHN3aXRjaGVzIGFuZCB2YWx1ZXMgbW92ZWQgaGVyZQogICAgIyB0byBoaWRlIGZyb20gdGlkeXZpZXcgKHdoaWNoIGRvZXMgbm90IHNob3cgY2F0ZWdvcnkgMCBmbGFncyk6CiAgICAjIC1vbGUgbW92ZWQgaGVyZSBmcm9tIGNhdGVnb3J5IDEKICAgICMgLXNpbCBtb3ZlZCBoZXJlIGZyb20gY2F0ZWdvcnkgMgogICAgJGFkZF9vcHRpb24tPiggJ291dHB1dC1saW5lLWVuZGluZycsICAgICAgICAgJ29sZScsICc9cycgKTsKICAgICRhZGRfb3B0aW9uLT4oICdzdGFydGluZy1pbmRlbnRhdGlvbi1sZXZlbCcsICdzaWwnLCAnPWknICk7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgJGNhdGVnb3J5ID0gMTsgICAgIyBCYXNpYyBmb3JtYXR0aW5nIG9wdGlvbnMKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICRhZGRfb3B0aW9uLT4oICdjaGVjay1zeW50YXgnLCAgICAgICAgICAgICAgICAgJ3N5bicsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdlbnRhYi1sZWFkaW5nLXdoaXRlc3BhY2UnLCAgICAgJ2V0JywgICAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnaW5kZW50LWNvbHVtbnMnLCAgICAgICAgICAgICAgICdpJywgICAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ21heGltdW0tbGluZS1sZW5ndGgnLCAgICAgICAgICAnbCcsICAgICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICd2YXJpYWJsZS1tYXhpbXVtLWxpbmUtbGVuZ3RoJywgJ3ZtbGwnLCAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICd3aGl0ZXNwYWNlLWN5Y2xlJywgICAgICAgICAgICAgJ3djJywgICAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAncGVybC1zeW50YXgtY2hlY2stZmxhZ3MnLCAgICAgICdwc2NmJywgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3ByZXNlcnZlLWxpbmUtZW5kaW5ncycsICAgICAgICAncGxlJywgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3RhYnMnLCAgICAgICAgICAgICAgICAgICAgICAgICAndCcsICAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2RlZmF1bHQtdGFic2l6ZScsICAgICAgICAgICAgICAnZHQnLCAgICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdleHRlbmRlZC1zeW50YXgnLCAgICAgICAgICAgICAgJ3hzJywgICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdhc3NlcnQtdGlkeScsICAgICAgICAgICAgICAgICAgJ2FzdCcsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdhc3NlcnQtdW50aWR5JywgICAgICAgICAgICAgICAgJ2FzdScsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdzdWItYWxpYXMtbGlzdCcsICAgICAgICAgICAgICAgJ3NhbCcsICAnPXMnICk7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgJGNhdGVnb3J5ID0gMjsgICAgIyBDb2RlIGluZGVudGF0aW9uIGNvbnRyb2wKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICRhZGRfb3B0aW9uLT4oICdjb250aW51YXRpb24taW5kZW50YXRpb24nLCAgICAgICAgICAgJ2NpJywgICAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZXh0ZW5kZWQtY29udGludWF0aW9uLWluZGVudGF0aW9uJywgICd4Y2knLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnbGluZS11cC1wYXJlbnRoZXNlcycsICAgICAgICAgICAgICAgICdscCcsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnb3V0ZGVudC1rZXl3b3JkLWxpc3QnLCAgICAgICAgICAgICAgICdva3dsJywgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ291dGRlbnQta2V5d29yZHMnLCAgICAgICAgICAgICAgICAgICAnb2t3JywgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ291dGRlbnQtbGFiZWxzJywgICAgICAgICAgICAgICAgICAgICAnb2xhJywgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ291dGRlbnQtbG9uZy1xdW90ZXMnLCAgICAgICAgICAgICAgICAnb2xxJywgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2luZGVudC1jbG9zaW5nLWJyYWNlJywgICAgICAgICAgICAgICAnaWNiJywgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2Nsb3NpbmctdG9rZW4taW5kZW50YXRpb24nLCAgICAgICAgICAnY3RpJywgICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdjbG9zaW5nLXBhcmVuLWluZGVudGF0aW9uJywgICAgICAgICAgJ2NwaScsICAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnY2xvc2luZy1icmFjZS1pbmRlbnRhdGlvbicsICAgICAgICAgICdjYmknLCAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2Nsb3Npbmctc3F1YXJlLWJyYWNrZXQtaW5kZW50YXRpb24nLCAnY3NiaScsICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdicmFjZS1sZWZ0LWFuZC1pbmRlbnQnLCAgICAgICAgICAgICAgJ2JsaScsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdicmFjZS1sZWZ0LWFuZC1pbmRlbnQtbGlzdCcsICAgICAgICAgJ2JsaWwnLCAnPXMnICk7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgJGNhdGVnb3J5ID0gMzsgICAgIyBXaGl0ZXNwYWNlIGNvbnRyb2wKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICRhZGRfb3B0aW9uLT4oICdhZGQtc2VtaWNvbG9ucycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc2MnLCAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2FkZC13aGl0ZXNwYWNlJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F3cycsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnYmxvY2stYnJhY2UtdGlnaHRuZXNzJywgICAgICAgICAgICAgICAgICAgICAnYmJ0JywgICAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnYnJhY2UtdGlnaHRuZXNzJywgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnQnLCAgICAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZGVsZXRlLW9sZC13aGl0ZXNwYWNlJywgICAgICAgICAgICAgICAgICAgICAnZHdzJywgICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdkZWxldGUtc2VtaWNvbG9ucycsICAgICAgICAgICAgICAgICAgICAgICAgICdkc20nLCAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2tleXdvcmQtcGFyZW4taW5uZXItdGlnaHRuZXNzJywgICAgICAgICAgICAgJ2twaXQnLCAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2tleXdvcmQtcGFyZW4taW5uZXItdGlnaHRuZXNzLWxpc3QnLCAgICAgICAgJ2twaXRsJywgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2xvZ2ljYWwtcGFkZGluZycsICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvcCcsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnbm9zcGFjZS1hZnRlci1rZXl3b3JkJywgICAgICAgICAgICAgICAgICAgICAnbnNhaycsICAnPXMnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnbm93YW50LWxlZnQtc3BhY2UnLCAgICAgICAgICAgICAgICAgICAgICAgICAnbndscycsICAnPXMnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnbm93YW50LXJpZ2h0LXNwYWNlJywgICAgICAgICAgICAgICAgICAgICAgICAnbndycycsICAnPXMnICk7CiAgICAkYWRkX29wdGlvbi0+KCAncGFyZW4tdGlnaHRuZXNzJywgICAgICAgICAgICAgICAgICAgICAgICAgICAncHQnLCAgICAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnc3BhY2UtYWZ0ZXIta2V5d29yZCcsICAgICAgICAgICAgICAgICAgICAgICAnc2FrJywgICAnPXMnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnc3BhY2UtZm9yLXNlbWljb2xvbicsICAgICAgICAgICAgICAgICAgICAgICAnc2ZzJywgICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdzcGFjZS1mdW5jdGlvbi1wYXJlbicsICAgICAgICAgICAgICAgICAgICAgICdzZnAnLCAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3NwYWNlLWtleXdvcmQtcGFyZW4nLCAgICAgICAgICAgICAgICAgICAgICAgJ3NrcCcsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnc3BhY2UtdGVybWluYWwtc2VtaWNvbG9uJywgICAgICAgICAgICAgICAgICAnc3RzJywgICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdzcXVhcmUtYnJhY2tldC10aWdodG5lc3MnLCAgICAgICAgICAgICAgICAgICdzYnQnLCAgICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdzcXVhcmUtYnJhY2tldC12ZXJ0aWNhbC10aWdodG5lc3MnLCAgICAgICAgICdzYnZ0JywgICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdzcXVhcmUtYnJhY2tldC12ZXJ0aWNhbC10aWdodG5lc3MtY2xvc2luZycsICdzYnZ0YycsICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICd0aWdodC1zZWNyZXQtb3BlcmF0b3JzJywgICAgICAgICAgICAgICAgICAgICd0c28nLCAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3RyaW0tcXcnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RxdycsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAndHJpbS1wb2QnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJwJywgICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICd3YW50LWxlZnQtc3BhY2UnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICd3bHMnLCAgICc9cycgKTsKICAgICRhZGRfb3B0aW9uLT4oICd3YW50LXJpZ2h0LXNwYWNlJywgICAgICAgICAgICAgICAgICAgICAgICAgICd3cnMnLCAgICc9cycgKTsKICAgICRhZGRfb3B0aW9uLT4oICdzcGFjZS1wcm90b3R5cGUtcGFyZW4nLCAgICAgICAgICAgICAgICAgICAgICdzcHAnLCAgICc9aScgKTsKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAkY2F0ZWdvcnkgPSA0OyAgICAjIENvbW1lbnQgY29udHJvbHMKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICRhZGRfb3B0aW9uLT4oICdjbG9zaW5nLXNpZGUtY29tbWVudC1lbHNlLWZsYWcnLCAgICAnY3NjZScsICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdjbG9zaW5nLXNpZGUtY29tbWVudC1pbnRlcnZhbCcsICAgICAnY3NjaScsICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdjbG9zaW5nLXNpZGUtY29tbWVudC1saXN0JywgICAgICAgICAnY3NjbCcsICc9cycgKTsKICAgICRhZGRfb3B0aW9uLT4oICdjbG9zaW5nLXNpZGUtY29tbWVudC1tYXhpbXVtLXRleHQnLCAnY3NjdCcsICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdjbG9zaW5nLXNpZGUtY29tbWVudC1wcmVmaXgnLCAgICAgICAnY3NjcCcsICc9cycgKTsKICAgICRhZGRfb3B0aW9uLT4oICdjbG9zaW5nLXNpZGUtY29tbWVudC13YXJuaW5ncycsICAgICAnY3NjdycsICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2Nsb3Npbmctc2lkZS1jb21tZW50cycsICAgICAgICAgICAgICdjc2MnLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnY2xvc2luZy1zaWRlLWNvbW1lbnRzLWJhbGFuY2VkJywgICAgJ2NzY2InLCAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdmb3JtYXQtc2tpcHBpbmcnLCAgICAgICAgICAgICAgICAgICAnZnMnLCAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2Zvcm1hdC1za2lwcGluZy1iZWdpbicsICAgICAgICAgICAgICdmc2InLCAgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2Zvcm1hdC1za2lwcGluZy1lbmQnLCAgICAgICAgICAgICAgICdmc2UnLCAgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2hhbmdpbmctc2lkZS1jb21tZW50cycsICAgICAgICAgICAgICdoc2MnLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnaW5kZW50LWJsb2NrLWNvbW1lbnRzJywgICAgICAgICAgICAgJ2liYycsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdpbmRlbnQtc3BhY2VkLWJsb2NrLWNvbW1lbnRzJywgICAgICAnaXNiYycsICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2ZpeGVkLXBvc2l0aW9uLXNpZGUtY29tbWVudCcsICAgICAgICdmcHNjJywgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ21pbmltdW0tc3BhY2UtdG8tY29tbWVudCcsICAgICAgICAgICdtc2MnLCAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ25vbi1pbmRlbnRpbmctYnJhY2VzJywgICAgICAgICAgICAgICduaWInLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnbm9uLWluZGVudGluZy1icmFjZS1wcmVmaXgnLCAgICAgICAgJ25pYnAnLCAnPXMnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnb3V0ZGVudC1sb25nLWNvbW1lbnRzJywgICAgICAgICAgICAgJ29sYycsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdvdXRkZW50LXN0YXRpYy1ibG9jay1jb21tZW50cycsICAgICAnb3NiYycsICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3N0YXRpYy1ibG9jay1jb21tZW50LXByZWZpeCcsICAgICAgICdzYmNwJywgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3N0YXRpYy1ibG9jay1jb21tZW50cycsICAgICAgICAgICAgICdzYmMnLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnc3RhdGljLXNpZGUtY29tbWVudC1wcmVmaXgnLCAgICAgICAgJ3NzY3AnLCAnPXMnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnc3RhdGljLXNpZGUtY29tbWVudHMnLCAgICAgICAgICAgICAgJ3NzYycsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdpZ25vcmUtc2lkZS1jb21tZW50LWxlbmd0aHMnLCAgICAgICAnaXNjbCcsICchJyApOwoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICRjYXRlZ29yeSA9IDU7ICAgICMgTGluZWJyZWFrIGNvbnRyb2xzCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAkYWRkX29wdGlvbi0+KCAnYWRkLW5ld2xpbmVzJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FubCcsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnYmxvY2stYnJhY2UtdmVydGljYWwtdGlnaHRuZXNzJywgICAgICAgICAgJ2JidnQnLCAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2Jsb2NrLWJyYWNlLXZlcnRpY2FsLXRpZ2h0bmVzcy1saXN0JywgICAgICdiYnZ0bCcsICc9cycgKTsKICAgICRhZGRfb3B0aW9uLT4oICdicmFjZS12ZXJ0aWNhbC10aWdodG5lc3MnLCAgICAgICAgICAgICAgICAnYnZ0JywgICAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnYnJhY2UtdmVydGljYWwtdGlnaHRuZXNzLWNsb3NpbmcnLCAgICAgICAgJ2J2dGMnLCAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2N1ZGRsZWQtZWxzZScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjZScsICAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2N1ZGRsZWQtYmxvY2stbGlzdCcsICAgICAgICAgICAgICAgICAgICAgICdjYmwnLCAgICc9cycgKTsKICAgICRhZGRfb3B0aW9uLT4oICdjdWRkbGVkLWJsb2NrLWxpc3QtZXhjbHVzaXZlJywgICAgICAgICAgICAnY2JseCcsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdjdWRkbGVkLWJyZWFrLW9wdGlvbicsICAgICAgICAgICAgICAgICAgICAnY2JvJywgICAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZGVsZXRlLW9sZC1uZXdsaW5lcycsICAgICAgICAgICAgICAgICAgICAgJ2RubCcsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnb3BlbmluZy1icmFjZS1hbHdheXMtb24tcmlnaHQnLCAgICAgICAgICAgJ2JhcicsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnb3BlbmluZy1icmFjZS1vbi1uZXctbGluZScsICAgICAgICAgICAgICAgJ2JsJywgICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnb3BlbmluZy1oYXNoLWJyYWNlLXJpZ2h0JywgICAgICAgICAgICAgICAgJ29oYnInLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnb3BlbmluZy1wYXJlbi1yaWdodCcsICAgICAgICAgICAgICAgICAgICAgJ29wcicsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnb3BlbmluZy1zcXVhcmUtYnJhY2tldC1yaWdodCcsICAgICAgICAgICAgJ29zYnInLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnb3BlbmluZy1hbm9ueW1vdXMtc3ViLWJyYWNlLW9uLW5ldy1saW5lJywgJ2FzYmwnLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnb3BlbmluZy1zdWItYnJhY2Utb24tbmV3LWxpbmUnLCAgICAgICAgICAgJ3NibCcsICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAncGFyZW4tdmVydGljYWwtdGlnaHRuZXNzJywgICAgICAgICAgICAgICAgJ3B2dCcsICAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3BhcmVuLXZlcnRpY2FsLXRpZ2h0bmVzcy1jbG9zaW5nJywgICAgICAgICdwdnRjJywgICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICd3ZWxkLW5lc3RlZC1jb250YWluZXJzJywgICAgICAgICAgICAgICAgICAnd24nLCAgICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICd3ZWxkLW5lc3RlZC1leGNsdXNpb24tbGlzdCcsICAgICAgICAgICAgICAnd254bCcsICAnPXMnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnc3BhY2UtYmFja3NsYXNoLXF1b3RlJywgICAgICAgICAgICAgICAgICAgJ3NicScsICAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3N0YWNrLWNsb3NpbmctYmxvY2stYnJhY2UnLCAgICAgICAgICAgICAgICdzY2JiJywgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3N0YWNrLWNsb3NpbmctaGFzaC1icmFjZScsICAgICAgICAgICAgICAgICdzY2hiJywgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3N0YWNrLWNsb3NpbmctcGFyZW4nLCAgICAgICAgICAgICAgICAgICAgICdzY3AnLCAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3N0YWNrLWNsb3Npbmctc3F1YXJlLWJyYWNrZXQnLCAgICAgICAgICAgICdzY3NiJywgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3N0YWNrLW9wZW5pbmctaGFzaC1icmFjZScsICAgICAgICAgICAgICAgICdzb2hiJywgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3N0YWNrLW9wZW5pbmctcGFyZW4nLCAgICAgICAgICAgICAgICAgICAgICdzb3AnLCAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3N0YWNrLW9wZW5pbmctc3F1YXJlLWJyYWNrZXQnLCAgICAgICAgICAgICdzb3NiJywgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3ZlcnRpY2FsLXRpZ2h0bmVzcycsICAgICAgICAgICAgICAgICAgICAgICd2dCcsICAgICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICd2ZXJ0aWNhbC10aWdodG5lc3MtY2xvc2luZycsICAgICAgICAgICAgICAndnRjJywgICAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnd2FudC1icmVhay1hZnRlcicsICAgICAgICAgICAgICAgICAgICAgICAgJ3diYScsICAgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3dhbnQtYnJlYWstYmVmb3JlJywgICAgICAgICAgICAgICAgICAgICAgICd3YmInLCAgICc9cycgKTsKICAgICRhZGRfb3B0aW9uLT4oICdicmVhay1hZnRlci1hbGwtb3BlcmF0b3JzJywgICAgICAgICAgICAgICAnYmFhbycsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdicmVhay1iZWZvcmUtYWxsLW9wZXJhdG9ycycsICAgICAgICAgICAgICAnYmJhbycsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdrZWVwLWludGVyaW9yLXNlbWljb2xvbnMnLCAgICAgICAgICAgICAgICAna2lzJywgICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdvbmUtbGluZS1ibG9jay1zZW1pY29sb25zJywgICAgICAgICAgICAgICAnb2xicycsICAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnb25lLWxpbmUtYmxvY2stbmVzdGluZycsICAgICAgICAgICAgICAgICAgJ29sYm4nLCAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2JyZWFrLWJlZm9yZS1oYXNoLWJyYWNlJywgICAgICAgICAgICAgICAgICdiYmhiJywgICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdicmVhay1iZWZvcmUtaGFzaC1icmFjZS1hbmQtaW5kZW50JywgICAgICAnYmJoYmknLCAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnYnJlYWstYmVmb3JlLXNxdWFyZS1icmFja2V0JywgICAgICAgICAgICAgJ2Jic2InLCAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2JyZWFrLWJlZm9yZS1zcXVhcmUtYnJhY2tldC1hbmQtaW5kZW50JywgICdiYnNiaScsICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdicmVhay1iZWZvcmUtcGFyZW4nLCAgICAgICAgICAgICAgICAgICAgICAnYmJwJywgICAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnYnJlYWstYmVmb3JlLXBhcmVuLWFuZC1pbmRlbnQnLCAgICAgICAgICAgJ2JicGknLCAgJz1pJyApOwoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICRjYXRlZ29yeSA9IDY7ICAgICMgQ29udHJvbGxpbmcgbGlzdCBmb3JtYXR0aW5nCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAkYWRkX29wdGlvbi0+KCAnYnJlYWstYXQtb2xkLWNvbW1hLWJyZWFrcG9pbnRzJywgJ2JvYycsICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2NvbW1hLWFycm93LWJyZWFrcG9pbnRzJywgICAgICAgICdjYWInLCAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnbWF4aW11bS1maWVsZHMtcGVyLXRhYmxlJywgICAgICAgJ21mdCcsICc9aScgKTsKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAkY2F0ZWdvcnkgPSA3OyAgICAjIFJldGFpbmluZyBvciBpZ25vcmluZyBleGlzdGluZyBsaW5lIGJyZWFrcwogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgJGFkZF9vcHRpb24tPiggJ2JyZWFrLWF0LW9sZC1rZXl3b3JkLWJyZWFrcG9pbnRzJywgICAnYm9rJywgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnYnJlYWstYXQtb2xkLWxvZ2ljYWwtYnJlYWtwb2ludHMnLCAgICdib2wnLCAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdicmVhay1hdC1vbGQtbWV0aG9kLWJyZWFrcG9pbnRzJywgICAgJ2JvbScsICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2JyZWFrLWF0LW9sZC1zZW1pY29sb24tYnJlYWtwb2ludHMnLCAnYm9zJywgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnYnJlYWstYXQtb2xkLXRlcm5hcnktYnJlYWtwb2ludHMnLCAgICdib3QnLCAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdicmVhay1hdC1vbGQtYXR0cmlidXRlLWJyZWFrcG9pbnRzJywgJ2JvYScsICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2tlZXAtb2xkLWJyZWFrcG9pbnRzLWJlZm9yZScsICAgICAgICAna2JiJywgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2tlZXAtb2xkLWJyZWFrcG9pbnRzLWFmdGVyJywgICAgICAgICAna2JhJywgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2lnbm9yZS1vbGQtYnJlYWtwb2ludHMnLCAgICAgICAgICAgICAnaW9iJywgJyEnICk7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgJGNhdGVnb3J5ID0gODsgICAgIyBCbGFuayBsaW5lIGNvbnRyb2wKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICRhZGRfb3B0aW9uLT4oICdibGFua3MtYmVmb3JlLWJsb2NrcycsICAgICAgICAgICAgJ2JiYicsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdibGFua3MtYmVmb3JlLWNvbW1lbnRzJywgICAgICAgICAgJ2JiYycsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdibGFuay1saW5lcy1iZWZvcmUtc3VicycsICAgICAgICAgJ2JsYnMnLCAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnYmxhbmstbGluZXMtYmVmb3JlLXBhY2thZ2VzJywgICAgICdibGJwJywgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2xvbmctYmxvY2stbGluZS1jb3VudCcsICAgICAgICAgICAnbGJsJywgICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdtYXhpbXVtLWNvbnNlY3V0aXZlLWJsYW5rLWxpbmVzJywgJ21ibCcsICAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAna2VlcC1vbGQtYmxhbmstbGluZXMnLCAgICAgICAgICAgICdrYmwnLCAgJz1pJyApOwoKICAgICRhZGRfb3B0aW9uLT4oICdrZXl3b3JkLWdyb3VwLWJsYW5rcy1saXN0JywgICAgICAgICAna2dibCcsICc9cycgKTsKICAgICRhZGRfb3B0aW9uLT4oICdrZXl3b3JkLWdyb3VwLWJsYW5rcy1zaXplJywgICAgICAgICAna2dicycsICc9cycgKTsKICAgICRhZGRfb3B0aW9uLT4oICdrZXl3b3JkLWdyb3VwLWJsYW5rcy1yZXBlYXQtY291bnQnLCAna2dicicsICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdrZXl3b3JkLWdyb3VwLWJsYW5rcy1iZWZvcmUnLCAgICAgICAna2diYicsICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdrZXl3b3JkLWdyb3VwLWJsYW5rcy1hZnRlcicsICAgICAgICAna2diYScsICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdrZXl3b3JkLWdyb3VwLWJsYW5rcy1pbnNpZGUnLCAgICAgICAna2diaScsICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2tleXdvcmQtZ3JvdXAtYmxhbmtzLWRlbGV0ZScsICAgICAgICdrZ2JkJywgJyEnICk7CgogICAgJGFkZF9vcHRpb24tPiggJ2JsYW5rLWxpbmVzLWFmdGVyLW9wZW5pbmctYmxvY2snLCAgICAgICAnYmxhbycsICAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnYmxhbmstbGluZXMtYmVmb3JlLWNsb3NpbmctYmxvY2snLCAgICAgICdibGJjJywgICc9aScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdibGFuay1saW5lcy1hZnRlci1vcGVuaW5nLWJsb2NrLWxpc3QnLCAgJ2JsYW9sJywgJz1zJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2JsYW5rLWxpbmVzLWJlZm9yZS1jbG9zaW5nLWJsb2NrLWxpc3QnLCAnYmxiY2wnLCAnPXMnICk7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgJGNhdGVnb3J5ID0gOTsgICAgIyBPdGhlciBjb250cm9scwogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgJGFkZF9vcHRpb24tPiggJ2RlbGV0ZS1ibG9jay1jb21tZW50cycsICAgICAgICAnZGJjJywgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2RlbGV0ZS1jbG9zaW5nLXNpZGUtY29tbWVudHMnLCAnZGNzYycsICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2RlbGV0ZS1wb2QnLCAgICAgICAgICAgICAgICAgICAnZHAnLCAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2RlbGV0ZS1zaWRlLWNvbW1lbnRzJywgICAgICAgICAnZHNjJywgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3RlZS1ibG9jay1jb21tZW50cycsICAgICAgICAgICAndGJjJywgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3RlZS1wb2QnLCAgICAgICAgICAgICAgICAgICAgICAndHAnLCAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3RlZS1zaWRlLWNvbW1lbnRzJywgICAgICAgICAgICAndHNjJywgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2xvb2stZm9yLWF1dG9sb2FkZXInLCAgICAgICAgICAnbGFsJywgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2xvb2stZm9yLWhhc2gtYmFuZycsICAgICAgICAgICAneCcsICAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2xvb2stZm9yLXNlbGZsb2FkZXInLCAgICAgICAgICAnbHNsJywgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3Bhc3MtdmVyc2lvbi1saW5lJywgICAgICAgICAgICAncHZsJywgICchJyApOwoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICRjYXRlZ29yeSA9IDEzOyAgICAjIERlYnVnZ2luZwogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgJGFkZF9vcHRpb24tPiggJ0RJQUdOT1NUSUNTJywgICAgICAgICAgICAgJ0knLCAgICAnIScgKSBpZiAoREVWRUxfTU9ERSk7CiAgICAkYWRkX29wdGlvbi0+KCAnREVCVUcnLCAgICAgICAgICAgICAgICAgICAnRCcsICAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2R1bXAtY3VkZGxlZC1ibG9jay1saXN0JywgJ2RjYmwnLCAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdkdW1wLWRlZmF1bHRzJywgICAgICAgICAgICdkZGYnLCAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZHVtcC1sb25nLW5hbWVzJywgICAgICAgICAnZGxuJywgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2R1bXAtb3B0aW9ucycsICAgICAgICAgICAgJ2RvcCcsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdkdW1wLXByb2ZpbGUnLCAgICAgICAgICAgICdkcHJvJywgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZHVtcC1zaG9ydC1uYW1lcycsICAgICAgICAnZHNuJywgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2R1bXAtdG9rZW4tdHlwZXMnLCAgICAgICAgJ2R0dCcsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdkdW1wLXdhbnQtbGVmdC1zcGFjZScsICAgICdkd2xzJywgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnZHVtcC13YW50LXJpZ2h0LXNwYWNlJywgICAnZHdycycsICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2Z1enp5LWxpbmUtbGVuZ3RoJywgICAgICAgJ2ZsbCcsICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdoZWxwJywgICAgICAgICAgICAgICAgICAgICdoJywgICAgJycgKTsKICAgICRhZGRfb3B0aW9uLT4oICdzaG9ydC1jb25jYXRlbmF0aW9uLWl0ZW0tbGVuZ3RoJywgJ3NjbCcsICAgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ3Nob3ctb3B0aW9ucycsICAgICAgICAgICAgICAgICAgICAnb3B0JywgICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICd0aW1lc3RhbXAnLCAgICAgICAgICAgICAgICAgICAgICAgJ3RzJywgICAgJyEnICk7CiAgICAkYWRkX29wdGlvbi0+KCAndmVyc2lvbicsICAgICAgICAgICAgICAgICAgICAgICAgICd2JywgICAgICcnICk7CiAgICAkYWRkX29wdGlvbi0+KCAnbWVtb2l6ZScsICAgICAgICAgICAgICAgICAgICAgICAgICdtZW0nLCAgICchJyApOwogICAgJGFkZF9vcHRpb24tPiggJ2ZpbGUtc2l6ZS1vcmRlcicsICAgICAgICAgICAgICAgICAnZnNvJywgICAnIScgKTsKICAgICRhZGRfb3B0aW9uLT4oICdtYXhpbXVtLWZpbGUtc2l6ZS1tYicsICAgICAgICAgICAgJ21heGZzJywgJz1pJyApOwogICAgJGFkZF9vcHRpb24tPiggJ21heGltdW0tbGV2ZWwtZXJyb3JzJywgICAgICAgICAgICAnbWF4bGUnLCAnPWknICk7CiAgICAkYWRkX29wdGlvbi0+KCAnbWF4aW11bS11bmV4cGVjdGVkLWVycm9ycycsICAgICAgICdtYXh1ZScsICc9aScgKTsKCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgIyBUaGUgUGVybDo6VGlkeTo6SHRtbFdyaXRlciB3aWxsIGFkZCBpdHMgb3duIG9wdGlvbnMgdG8gdGhlIHN0cmluZwogICAgUGVybDo6VGlkeTo6SHRtbFdyaXRlci0+bWFrZV9nZXRvcHRfbG9uZ19uYW1lcyggXEBvcHRpb25fc3RyaW5nICk7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBTZXQgY2F0ZWdvcmllcyAxMCwgMTEsIDEyCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIEJhc2VkIG9uIHRoZWlyIGtub3duIG9yZGVyCiAgICAkY2F0ZWdvcnkgPSAxMjsgICAgIyBIVE1MIHByb3BlcnRpZXMKICAgIGZvcmVhY2ggbXkgJG9wdCAoQG9wdGlvbl9zdHJpbmcpIHsKICAgICAgICBteSAkbG9uZ19uYW1lID0gJG9wdDsKICAgICAgICAkbG9uZ19uYW1lID1+IHMvKCF8PS4qfDouKikkLy87CiAgICAgICAgdW5sZXNzICggZGVmaW5lZCggJG9wdGlvbl9jYXRlZ29yeXskbG9uZ19uYW1lfSApICkgewogICAgICAgICAgICBpZiAoICRsb25nX25hbWUgPX4gL15odG1sLWxpbmtlZC8gKSB7CiAgICAgICAgICAgICAgICAkY2F0ZWdvcnkgPSAxMDsgICAgIyBIVE1MIG9wdGlvbnMKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRsb25nX25hbWUgPX4gL15wb2QyaHRtbC8gKSB7CiAgICAgICAgICAgICAgICAkY2F0ZWdvcnkgPSAxMTsgICAgIyBQb2QyaHRtbAogICAgICAgICAgICB9CiAgICAgICAgICAgICRvcHRpb25fY2F0ZWdvcnl7JGxvbmdfbmFtZX0gPSAkY2F0ZWdvcnlfbmFtZVskY2F0ZWdvcnldOwogICAgICAgIH0KICAgIH0KCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIEFzc2lnbiB2YWxpZCByYW5nZXMgdG8gY2VydGFpbiBvcHRpb25zCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIEluIHRoZSBmdXR1cmUsIHRoZXNlIG1heSBiZSB1c2VkIHRvIG1ha2UgcHJlbGltaW5hcnkgY2hlY2tzCiAgICAjIGhhc2gga2V5cyBhcmUgbG9uZyBuYW1lcwogICAgIyBJZiBrZXkgb3IgdmFsdWUgaXMgdW5kZWZpbmVkOgogICAgIyAgIHN0cmluZ3MgbWF5IGhhdmUgYW55IHZhbHVlCiAgICAjICAgaW50ZWdlciByYW5nZXMgYXJlID49MAogICAgIyBJZiB2YWx1ZSBpcyBkZWZpbmVkOgogICAgIyAgIHZhbHVlIGlzIFtxdyhhbnkgdmFsaWQgd29yZHMpXSBmb3Igc3RyaW5ncwogICAgIyAgIHZhbHVlIGlzIFttaW4sIG1heF0gZm9yIGludGVnZXJzCiAgICAjICAgaWYgbWluIGlzIHVuZGVmaW5lZCwgdGhlcmUgaXMgbm8gbG93ZXIgbGltaXQKICAgICMgICBpZiBtYXggaXMgdW5kZWZpbmVkLCB0aGVyZSBpcyBubyB1cHBlciBsaW1pdAogICAgIyBQYXJhbWV0ZXJzIG5vdCBsaXN0ZWQgaGVyZSBoYXZlIGRlZmF1bHRzCiAgICAlb3B0aW9uX3JhbmdlID0gKAogICAgICAgICdmb3JtYXQnICAgICAgICAgICAgICAgICAgICAgICAgPT4gWyAndGlkeScsICdodG1sJywgJ3VzZXInIF0sCiAgICAgICAgJ291dHB1dC1saW5lLWVuZGluZycgICAgICAgICAgICA9PiBbICdkb3MnLCAgJ3dpbicsICAnbWFjJywgJ3VuaXgnIF0sCiAgICAgICAgJ3NwYWNlLWJhY2tzbGFzaC1xdW90ZScgICAgICAgICA9PiBbIDAsICAgICAgMiBdLAogICAgICAgICdibG9jay1icmFjZS10aWdodG5lc3MnICAgICAgICAgPT4gWyAwLCAgICAgIDIgXSwKICAgICAgICAna2V5d29yZC1wYXJlbi1pbm5lci10aWdodG5lc3MnID0+IFsgMCwgICAgICAyIF0sCiAgICAgICAgJ2JyYWNlLXRpZ2h0bmVzcycgICAgICAgICAgICAgICA9PiBbIDAsICAgICAgMiBdLAogICAgICAgICdwYXJlbi10aWdodG5lc3MnICAgICAgICAgICAgICAgPT4gWyAwLCAgICAgIDIgXSwKICAgICAgICAnc3F1YXJlLWJyYWNrZXQtdGlnaHRuZXNzJyAgICAgID0+IFsgMCwgICAgICAyIF0sCgogICAgICAgICdibG9jay1icmFjZS12ZXJ0aWNhbC10aWdodG5lc3MnICAgICAgICAgICAgPT4gWyAwLCAyIF0sCiAgICAgICAgJ2JyYWNlLXZlcnRpY2FsLXRpZ2h0bmVzcycgICAgICAgICAgICAgICAgICA9PiBbIDAsIDIgXSwKICAgICAgICAnYnJhY2UtdmVydGljYWwtdGlnaHRuZXNzLWNsb3NpbmcnICAgICAgICAgID0+IFsgMCwgMiBdLAogICAgICAgICdwYXJlbi12ZXJ0aWNhbC10aWdodG5lc3MnICAgICAgICAgICAgICAgICAgPT4gWyAwLCAyIF0sCiAgICAgICAgJ3BhcmVuLXZlcnRpY2FsLXRpZ2h0bmVzcy1jbG9zaW5nJyAgICAgICAgICA9PiBbIDAsIDIgXSwKICAgICAgICAnc3F1YXJlLWJyYWNrZXQtdmVydGljYWwtdGlnaHRuZXNzJyAgICAgICAgID0+IFsgMCwgMiBdLAogICAgICAgICdzcXVhcmUtYnJhY2tldC12ZXJ0aWNhbC10aWdodG5lc3MtY2xvc2luZycgPT4gWyAwLCAyIF0sCiAgICAgICAgJ3ZlcnRpY2FsLXRpZ2h0bmVzcycgICAgICAgICAgICAgICAgICAgICAgICA9PiBbIDAsIDIgXSwKICAgICAgICAndmVydGljYWwtdGlnaHRuZXNzLWNsb3NpbmcnICAgICAgICAgICAgICAgID0+IFsgMCwgMiBdLAoKICAgICAgICAnY2xvc2luZy1icmFjZS1pbmRlbnRhdGlvbicgICAgICAgICAgPT4gWyAwLCAzIF0sCiAgICAgICAgJ2Nsb3NpbmctcGFyZW4taW5kZW50YXRpb24nICAgICAgICAgID0+IFsgMCwgMyBdLAogICAgICAgICdjbG9zaW5nLXNxdWFyZS1icmFja2V0LWluZGVudGF0aW9uJyA9PiBbIDAsIDMgXSwKICAgICAgICAnY2xvc2luZy10b2tlbi1pbmRlbnRhdGlvbicgICAgICAgICAgPT4gWyAwLCAzIF0sCgogICAgICAgICdjbG9zaW5nLXNpZGUtY29tbWVudC1lbHNlLWZsYWcnID0+IFsgMCwgMiBdLAogICAgICAgICdjb21tYS1hcnJvdy1icmVha3BvaW50cycgICAgICAgID0+IFsgMCwgNSBdLAoKICAgICAgICAna2V5d29yZC1ncm91cC1ibGFua3MtYmVmb3JlJyA9PiBbIDAsIDIgXSwKICAgICAgICAna2V5d29yZC1ncm91cC1ibGFua3MtYWZ0ZXInICA9PiBbIDAsIDIgXSwKCiAgICAgICAgJ3NwYWNlLXByb3RvdHlwZS1wYXJlbicgPT4gWyAwLCAyIF0sCiAgICApOwoKICAgICMgTm90ZTogd2UgY291bGQgYWN0dWFsbHkgYWxsb3cgbmVnYXRpdmUgY2kgaWYgc29tZW9uZSByZWFsbHkgd2FudHMgaXQ6CiAgICAjICRvcHRpb25fcmFuZ2V7J2NvbnRpbnVhdGlvbi1pbmRlbnRhdGlvbid9ID0gWyB1bmRlZiwgdW5kZWYgXTsKCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIEFzc2lnbiBkZWZhdWx0IHZhbHVlcyB0byB0aGUgYWJvdmUgb3B0aW9ucyBoZXJlLCBleGNlcHQKICAgICMgZm9yICdvdXRmaWxlJyBhbmQgJ2hlbHAnLgogICAgIyBUaGVzZSBzZXR0aW5ncyBzaG91bGQgYXBwcm94aW1hdGUgdGhlIHBlcmxzdHlsZSgxKSBzdWdnZXN0aW9ucy4KICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIG15IEBkZWZhdWx0cyA9IHF3KAogICAgICBhZGQtbmV3bGluZXMKICAgICAgYWRkLXNlbWljb2xvbnMKICAgICAgYWRkLXdoaXRlc3BhY2UKICAgICAgYmxhbmtzLWJlZm9yZS1ibG9ja3MKICAgICAgYmxhbmtzLWJlZm9yZS1jb21tZW50cwogICAgICBibGFuay1saW5lcy1iZWZvcmUtc3Vicz0xCiAgICAgIGJsYW5rLWxpbmVzLWJlZm9yZS1wYWNrYWdlcz0xCgogICAgICBrZXl3b3JkLWdyb3VwLWJsYW5rcy1zaXplPTUKICAgICAga2V5d29yZC1ncm91cC1ibGFua3MtcmVwZWF0LWNvdW50PTAKICAgICAga2V5d29yZC1ncm91cC1ibGFua3MtYmVmb3JlPTEKICAgICAga2V5d29yZC1ncm91cC1ibGFua3MtYWZ0ZXI9MQogICAgICBub2tleXdvcmQtZ3JvdXAtYmxhbmtzLWluc2lkZQogICAgICBub2tleXdvcmQtZ3JvdXAtYmxhbmtzLWRlbGV0ZQoKICAgICAgYmxvY2stYnJhY2UtdGlnaHRuZXNzPTAKICAgICAgYmxvY2stYnJhY2UtdmVydGljYWwtdGlnaHRuZXNzPTAKICAgICAgYnJhY2UtdGlnaHRuZXNzPTEKICAgICAgYnJhY2UtdmVydGljYWwtdGlnaHRuZXNzLWNsb3Npbmc9MAogICAgICBicmFjZS12ZXJ0aWNhbC10aWdodG5lc3M9MAogICAgICBicmVhay1hdC1vbGQtbG9naWNhbC1icmVha3BvaW50cwogICAgICBicmVhay1hdC1vbGQtdGVybmFyeS1icmVha3BvaW50cwogICAgICBicmVhay1hdC1vbGQtYXR0cmlidXRlLWJyZWFrcG9pbnRzCiAgICAgIGJyZWFrLWF0LW9sZC1rZXl3b3JkLWJyZWFrcG9pbnRzCiAgICAgIGJyZWFrLWJlZm9yZS1oYXNoLWJyYWNlPTAKICAgICAgYnJlYWstYmVmb3JlLWhhc2gtYnJhY2UtYW5kLWluZGVudD0wCiAgICAgIGJyZWFrLWJlZm9yZS1zcXVhcmUtYnJhY2tldD0wCiAgICAgIGJyZWFrLWJlZm9yZS1zcXVhcmUtYnJhY2tldC1hbmQtaW5kZW50PTAKICAgICAgYnJlYWstYmVmb3JlLXBhcmVuPTAKICAgICAgYnJlYWstYmVmb3JlLXBhcmVuLWFuZC1pbmRlbnQ9MAogICAgICBjb21tYS1hcnJvdy1icmVha3BvaW50cz01CiAgICAgIG5vY2hlY2stc3ludGF4CiAgICAgIGNoYXJhY3Rlci1lbmNvZGluZz1ndWVzcwogICAgICBjbG9zaW5nLXNpZGUtY29tbWVudC1pbnRlcnZhbD02CiAgICAgIGNsb3Npbmctc2lkZS1jb21tZW50LW1heGltdW0tdGV4dD0yMAogICAgICBjbG9zaW5nLXNpZGUtY29tbWVudC1lbHNlLWZsYWc9MAogICAgICBjbG9zaW5nLXNpZGUtY29tbWVudHMtYmFsYW5jZWQKICAgICAgY2xvc2luZy1wYXJlbi1pbmRlbnRhdGlvbj0wCiAgICAgIGNsb3NpbmctYnJhY2UtaW5kZW50YXRpb249MAogICAgICBjbG9zaW5nLXNxdWFyZS1icmFja2V0LWluZGVudGF0aW9uPTAKICAgICAgY29udGludWF0aW9uLWluZGVudGF0aW9uPTIKICAgICAgbm9leHRlbmRlZC1jb250aW51YXRpb24taW5kZW50YXRpb24KICAgICAgY3VkZGxlZC1icmVhay1vcHRpb249MQogICAgICBkZWxldGUtb2xkLW5ld2xpbmVzCiAgICAgIGRlbGV0ZS1zZW1pY29sb25zCiAgICAgIGV4dGVuZGVkLXN5bnRheAogICAgICBmdXp6eS1saW5lLWxlbmd0aAogICAgICBoYW5naW5nLXNpZGUtY29tbWVudHMKICAgICAgaW5kZW50LWJsb2NrLWNvbW1lbnRzCiAgICAgIGluZGVudC1jb2x1bW5zPTQKICAgICAgaXRlcmF0aW9ucz0xCiAgICAgIGtlZXAtb2xkLWJsYW5rLWxpbmVzPTEKICAgICAga2V5d29yZC1wYXJlbi1pbm5lci10aWdodG5lc3M9MQogICAgICBsb2dpY2FsLXBhZGRpbmcKICAgICAgbG9uZy1ibG9jay1saW5lLWNvdW50PTgKICAgICAgbG9vay1mb3ItYXV0b2xvYWRlcgogICAgICBsb29rLWZvci1zZWxmbG9hZGVyCiAgICAgIG1heGltdW0tY29uc2VjdXRpdmUtYmxhbmstbGluZXM9MQogICAgICBtYXhpbXVtLWZpZWxkcy1wZXItdGFibGU9MAogICAgICBtYXhpbXVtLWxpbmUtbGVuZ3RoPTgwCiAgICAgIG1heGltdW0tZmlsZS1zaXplLW1iPTEwCiAgICAgIG1heGltdW0tbGV2ZWwtZXJyb3JzPTEKICAgICAgbWF4aW11bS11bmV4cGVjdGVkLWVycm9ycz0wCiAgICAgIG1lbW9pemUKICAgICAgbWluaW11bS1zcGFjZS10by1jb21tZW50PTQKICAgICAgbm9icmFjZS1sZWZ0LWFuZC1pbmRlbnQKICAgICAgbm9jdWRkbGVkLWVsc2UKICAgICAgbm9kZWxldGUtb2xkLXdoaXRlc3BhY2UKICAgICAgbm9odG1sCiAgICAgIG5vbG9nZmlsZQogICAgICBub24taW5kZW50aW5nLWJyYWNlcwogICAgICBub3F1aWV0CiAgICAgIG5vc2hvdy1vcHRpb25zCiAgICAgIG5vc3RhdGljLXNpZGUtY29tbWVudHMKICAgICAgbm90YWJzCiAgICAgIG5vd2FybmluZy1vdXRwdXQKICAgICAgb25lLWxpbmUtYmxvY2stc2VtaWNvbG9ucz0xCiAgICAgIG9uZS1saW5lLWJsb2NrLW5lc3Rpbmc9MAogICAgICBvdXRkZW50LWxhYmVscwogICAgICBvdXRkZW50LWxvbmctcXVvdGVzCiAgICAgIG91dGRlbnQtbG9uZy1jb21tZW50cwogICAgICBwYXJlbi10aWdodG5lc3M9MQogICAgICBwYXJlbi12ZXJ0aWNhbC10aWdodG5lc3MtY2xvc2luZz0wCiAgICAgIHBhcmVuLXZlcnRpY2FsLXRpZ2h0bmVzcz0wCiAgICAgIHBhc3MtdmVyc2lvbi1saW5lCiAgICAgIG5vd2VsZC1uZXN0ZWQtY29udGFpbmVycwogICAgICByZWNvbWJpbmUKICAgICAgbm91c2UtdW5pY29kZS1nY3N0cmluZwogICAgICB2YWxpZ24KICAgICAgc2hvcnQtY29uY2F0ZW5hdGlvbi1pdGVtLWxlbmd0aD04CiAgICAgIHNwYWNlLWZvci1zZW1pY29sb24KICAgICAgc3BhY2UtYmFja3NsYXNoLXF1b3RlPTEKICAgICAgc3BhY2UtcHJvdG90eXBlLXBhcmVuPTEKICAgICAgc3F1YXJlLWJyYWNrZXQtdGlnaHRuZXNzPTEKICAgICAgc3F1YXJlLWJyYWNrZXQtdmVydGljYWwtdGlnaHRuZXNzLWNsb3Npbmc9MAogICAgICBzcXVhcmUtYnJhY2tldC12ZXJ0aWNhbC10aWdodG5lc3M9MAogICAgICBzdGF0aWMtYmxvY2stY29tbWVudHMKICAgICAgdGltZXN0YW1wCiAgICAgIHRyaW0tcXcKICAgICAgZm9ybWF0PXRpZHkKICAgICAgYmFja3VwLWZpbGUtZXh0ZW5zaW9uPWJhawogICAgICBmb3JtYXQtc2tpcHBpbmcKICAgICAgZGVmYXVsdC10YWJzaXplPTgKCiAgICAgIHBvZDJodG1sCiAgICAgIGh0bWwtdGFibGUtb2YtY29udGVudHMKICAgICAgaHRtbC1lbnRpdGllcwogICAgKTsKCiAgICBwdXNoIEBkZWZhdWx0cywgInBlcmwtc3ludGF4LWNoZWNrLWZsYWdzPS1jIC1UIjsKCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIERlZmluZSBhYmJyZXZpYXRpb25zIHdoaWNoIHdpbGwgYmUgZXhwYW5kZWQgaW50byB0aGUgYWJvdmUgcHJpbWl0aXZlcy4KICAgICMgVGhlc2UgbWF5IGJlIGRlZmluZWQgcmVjdXJzaXZlbHkuCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAlZXhwYW5zaW9uID0gKAogICAgICAgICVleHBhbnNpb24sCiAgICAgICAgJ2ZyZWV6ZS1uZXdsaW5lcycgICAgPT4gW3F3KG5vYWRkLW5ld2xpbmVzIG5vZGVsZXRlLW9sZC1uZXdsaW5lcyldLAogICAgICAgICdmbmwnICAgICAgICAgICAgICAgID0+IFtxdyhmcmVlemUtbmV3bGluZXMpXSwKICAgICAgICAnZnJlZXplLXdoaXRlc3BhY2UnICA9PiBbcXcobm9hZGQtd2hpdGVzcGFjZSBub2RlbGV0ZS1vbGQtd2hpdGVzcGFjZSldLAogICAgICAgICdmd3MnICAgICAgICAgICAgICAgID0+IFtxdyhmcmVlemUtd2hpdGVzcGFjZSldLAogICAgICAgICdmcmVlemUtYmxhbmstbGluZXMnID0+CiAgICAgICAgICBbcXcobWF4aW11bS1jb25zZWN1dGl2ZS1ibGFuay1saW5lcz0wIGtlZXAtb2xkLWJsYW5rLWxpbmVzPTIpXSwKICAgICAgICAnZmJsJyAgICAgICAgICAgICAgICA9PiBbcXcoZnJlZXplLWJsYW5rLWxpbmVzKV0sCiAgICAgICAgJ2luZGVudC1vbmx5JyAgICAgICAgPT4gW3F3KGZyZWV6ZS1uZXdsaW5lcyBmcmVlemUtd2hpdGVzcGFjZSldLAogICAgICAgICdvdXRkZW50LWxvbmctbGluZXMnID0+IFtxdyhvdXRkZW50LWxvbmctcXVvdGVzIG91dGRlbnQtbG9uZy1jb21tZW50cyldLAogICAgICAgICdub291dGRlbnQtbG9uZy1saW5lcycgPT4KICAgICAgICAgIFtxdyhub291dGRlbnQtbG9uZy1xdW90ZXMgbm9vdXRkZW50LWxvbmctY29tbWVudHMpXSwKICAgICAgICAnb2xsJyAgICAgICAgICAgICAgICAgPT4gW3F3KG91dGRlbnQtbG9uZy1saW5lcyldLAogICAgICAgICdub2xsJyAgICAgICAgICAgICAgICA9PiBbcXcobm9vdXRkZW50LWxvbmctbGluZXMpXSwKICAgICAgICAnaW8nICAgICAgICAgICAgICAgICAgPT4gW3F3KGluZGVudC1vbmx5KV0sCiAgICAgICAgJ2RlbGV0ZS1hbGwtY29tbWVudHMnID0+CiAgICAgICAgICBbcXcoZGVsZXRlLWJsb2NrLWNvbW1lbnRzIGRlbGV0ZS1zaWRlLWNvbW1lbnRzIGRlbGV0ZS1wb2QpXSwKICAgICAgICAnbm9kZWxldGUtYWxsLWNvbW1lbnRzJyA9PgogICAgICAgICAgW3F3KG5vZGVsZXRlLWJsb2NrLWNvbW1lbnRzIG5vZGVsZXRlLXNpZGUtY29tbWVudHMgbm9kZWxldGUtcG9kKV0sCiAgICAgICAgJ2RhYycgICAgICAgICAgICAgID0+IFtxdyhkZWxldGUtYWxsLWNvbW1lbnRzKV0sCiAgICAgICAgJ25kYWMnICAgICAgICAgICAgID0+IFtxdyhub2RlbGV0ZS1hbGwtY29tbWVudHMpXSwKICAgICAgICAnZ251JyAgICAgICAgICAgICAgPT4gW3F3KGdudS1zdHlsZSldLAogICAgICAgICdwYnAnICAgICAgICAgICAgICA9PiBbcXcocGVybC1iZXN0LXByYWN0aWNlcyldLAogICAgICAgICd0ZWUtYWxsLWNvbW1lbnRzJyA9PgogICAgICAgICAgW3F3KHRlZS1ibG9jay1jb21tZW50cyB0ZWUtc2lkZS1jb21tZW50cyB0ZWUtcG9kKV0sCiAgICAgICAgJ25vdGVlLWFsbC1jb21tZW50cycgPT4KICAgICAgICAgIFtxdyhub3RlZS1ibG9jay1jb21tZW50cyBub3RlZS1zaWRlLWNvbW1lbnRzIG5vdGVlLXBvZCldLAogICAgICAgICd0YWMnICAgPT4gW3F3KHRlZS1hbGwtY29tbWVudHMpXSwKICAgICAgICAnbnRhYycgID0+IFtxdyhub3RlZS1hbGwtY29tbWVudHMpXSwKICAgICAgICAnaHRtbCcgID0+IFtxdyhmb3JtYXQ9aHRtbCldLAogICAgICAgICduaHRtbCcgPT4gW3F3KGZvcm1hdD10aWR5KV0sCiAgICAgICAgJ3RpZHknICA9PiBbcXcoZm9ybWF0PXRpZHkpXSwKCiAgICAgICAgIyAtY2IgaXMgbm93IGEgc3lub255bSBmb3IgLWNlCiAgICAgICAgJ2NiJyAgICAgICAgICAgICA9PiBbcXcoY3VkZGxlZC1lbHNlKV0sCiAgICAgICAgJ2N1ZGRsZWQtYmxvY2tzJyA9PiBbcXcoY3VkZGxlZC1lbHNlKV0sCgogICAgICAgICd1dGY4JyAgPT4gW3F3KGNoYXJhY3Rlci1lbmNvZGluZz11dGY4KV0sCiAgICAgICAgJ1VURjgnICA9PiBbcXcoY2hhcmFjdGVyLWVuY29kaW5nPXV0ZjgpXSwKICAgICAgICAnZ3Vlc3MnID0+IFtxdyhjaGFyYWN0ZXItZW5jb2Rpbmc9Z3Vlc3MpXSwKCiAgICAgICAgJ3N3YWxsb3ctb3B0aW9uYWwtYmxhbmstbGluZXMnICAgPT4gW3F3KGtibD0wKV0sCiAgICAgICAgJ25vc3dhbGxvdy1vcHRpb25hbC1ibGFuay1saW5lcycgPT4gW3F3KGtibD0xKV0sCiAgICAgICAgJ3NvYicgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gW3F3KGtibD0wKV0sCiAgICAgICAgJ25zb2InICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gW3F3KGtibD0xKV0sCgogICAgICAgICdicmVhay1hZnRlci1jb21tYS1hcnJvd3MnICAgPT4gW3F3KGNhYj0wKV0sCiAgICAgICAgJ25vYnJlYWstYWZ0ZXItY29tbWEtYXJyb3dzJyA9PiBbcXcoY2FiPTEpXSwKICAgICAgICAnYmFhJyAgICAgICAgICAgICAgICAgICAgICAgID0+IFtxdyhjYWI9MCldLAogICAgICAgICduYmFhJyAgICAgICAgICAgICAgICAgICAgICAgPT4gW3F3KGNhYj0xKV0sCgogICAgICAgICdibGFua3MtYmVmb3JlLXN1YnMnICAgPT4gW3F3KGJsYnM9MSBibGJwPTEpXSwKICAgICAgICAnYmJzJyAgICAgICAgICAgICAgICAgID0+IFtxdyhibGJzPTEgYmxicD0xKV0sCiAgICAgICAgJ25vYmxhbmtzLWJlZm9yZS1zdWJzJyA9PiBbcXcoYmxicz0wIGJsYnA9MCldLAogICAgICAgICduYmJzJyAgICAgICAgICAgICAgICAgPT4gW3F3KGJsYnM9MCBibGJwPTApXSwKCiAgICAgICAgJ2tleXdvcmQtZ3JvdXAtYmxhbmtzJyAgID0+IFtxdyhrZ2JiPTIga2diaSBrZ2JhPTIpXSwKICAgICAgICAna2diJyAgICAgICAgICAgICAgICAgICAgPT4gW3F3KGtnYmI9MiBrZ2JpIGtnYmE9MildLAogICAgICAgICdub2tleXdvcmQtZ3JvdXAtYmxhbmtzJyA9PiBbcXcoa2diYj0xIG5rZ2JpIGtnYmE9MSldLAogICAgICAgICdua2diJyAgICAgICAgICAgICAgICAgICA9PiBbcXcoa2diYj0xIG5rZ2JpIGtnYmE9MSldLAoKICAgICAgICAnYnJlYWstYXQtb2xkLXRyaW5hcnktYnJlYWtwb2ludHMnID0+IFtxdyhib3QpXSwKCiAgICAgICAgJ2N0aT0wJyA9PiBbcXcoY3BpPTAgY2JpPTAgY3NiaT0wKV0sCiAgICAgICAgJ2N0aT0xJyA9PiBbcXcoY3BpPTEgY2JpPTEgY3NiaT0xKV0sCiAgICAgICAgJ2N0aT0yJyA9PiBbcXcoY3BpPTIgY2JpPTIgY3NiaT0yKV0sCiAgICAgICAgJ2ljcCcgICA9PiBbcXcoY3BpPTIgY2JpPTIgY3NiaT0yKV0sCiAgICAgICAgJ25pY3AnICA9PiBbcXcoY3BpPTAgY2JpPTAgY3NiaT0wKV0sCgogICAgICAgICdjbG9zaW5nLXRva2VuLWluZGVudGF0aW9uPTAnID0+IFtxdyhjcGk9MCBjYmk9MCBjc2JpPTApXSwKICAgICAgICAnY2xvc2luZy10b2tlbi1pbmRlbnRhdGlvbj0xJyA9PiBbcXcoY3BpPTEgY2JpPTEgY3NiaT0xKV0sCiAgICAgICAgJ2Nsb3NpbmctdG9rZW4taW5kZW50YXRpb249MicgPT4gW3F3KGNwaT0yIGNiaT0yIGNzYmk9MildLAogICAgICAgICdpbmRlbnQtY2xvc2luZy1wYXJlbicgICAgICAgID0+IFtxdyhjcGk9MiBjYmk9MiBjc2JpPTIpXSwKICAgICAgICAnbm9pbmRlbnQtY2xvc2luZy1wYXJlbicgICAgICA9PiBbcXcoY3BpPTAgY2JpPTAgY3NiaT0wKV0sCgogICAgICAgICd2dD0wJyA9PiBbcXcocHZ0PTAgYnZ0PTAgc2J2dD0wKV0sCiAgICAgICAgJ3Z0PTEnID0+IFtxdyhwdnQ9MSBidnQ9MSBzYnZ0PTEpXSwKICAgICAgICAndnQ9MicgPT4gW3F3KHB2dD0yIGJ2dD0yIHNidnQ9MildLAoKICAgICAgICAndmVydGljYWwtdGlnaHRuZXNzPTAnID0+IFtxdyhwdnQ9MCBidnQ9MCBzYnZ0PTApXSwKICAgICAgICAndmVydGljYWwtdGlnaHRuZXNzPTEnID0+IFtxdyhwdnQ9MSBidnQ9MSBzYnZ0PTEpXSwKICAgICAgICAndmVydGljYWwtdGlnaHRuZXNzPTInID0+IFtxdyhwdnQ9MiBidnQ9MiBzYnZ0PTIpXSwKCiAgICAgICAgJ3Z0Yz0wJyA9PiBbcXcocHZ0Yz0wIGJ2dGM9MCBzYnZ0Yz0wKV0sCiAgICAgICAgJ3Z0Yz0xJyA9PiBbcXcocHZ0Yz0xIGJ2dGM9MSBzYnZ0Yz0xKV0sCiAgICAgICAgJ3Z0Yz0yJyA9PiBbcXcocHZ0Yz0yIGJ2dGM9MiBzYnZ0Yz0yKV0sCgogICAgICAgICd2ZXJ0aWNhbC10aWdodG5lc3MtY2xvc2luZz0wJyA9PiBbcXcocHZ0Yz0wIGJ2dGM9MCBzYnZ0Yz0wKV0sCiAgICAgICAgJ3ZlcnRpY2FsLXRpZ2h0bmVzcy1jbG9zaW5nPTEnID0+IFtxdyhwdnRjPTEgYnZ0Yz0xIHNidnRjPTEpXSwKICAgICAgICAndmVydGljYWwtdGlnaHRuZXNzLWNsb3Npbmc9MicgPT4gW3F3KHB2dGM9MiBidnRjPTIgc2J2dGM9MildLAoKICAgICAgICAnb3RyJyAgICAgICAgICAgICAgICAgICA9PiBbcXcob3ByIG9oYnIgb3NicildLAogICAgICAgICdvcGVuaW5nLXRva2VuLXJpZ2h0JyAgID0+IFtxdyhvcHIgb2hiciBvc2JyKV0sCiAgICAgICAgJ25vdHInICAgICAgICAgICAgICAgICAgPT4gW3F3KG5vcHIgbm9oYnIgbm9zYnIpXSwKICAgICAgICAnbm9vcGVuaW5nLXRva2VuLXJpZ2h0JyA9PiBbcXcobm9wciBub2hiciBub3NicildLAoKICAgICAgICAnc290JyAgICAgICAgICAgICAgICAgICAgPT4gW3F3KHNvcCBzb2hiIHNvc2IpXSwKICAgICAgICAnbnNvdCcgICAgICAgICAgICAgICAgICAgPT4gW3F3KG5zb3AgbnNvaGIgbnNvc2IpXSwKICAgICAgICAnc3RhY2stb3BlbmluZy10b2tlbnMnICAgPT4gW3F3KHNvcCBzb2hiIHNvc2IpXSwKICAgICAgICAnbm9zdGFjay1vcGVuaW5nLXRva2VucycgPT4gW3F3KG5zb3AgbnNvaGIgbnNvc2IpXSwKCiAgICAgICAgJ3NjdCcgICAgICAgICAgICAgICAgICAgID0+IFtxdyhzY3Agc2NoYiBzY3NiKV0sCiAgICAgICAgJ3N0YWNrLWNsb3NpbmctdG9rZW5zJyAgID0+IFtxdyhzY3Agc2NoYiBzY3NiKV0sCiAgICAgICAgJ25zY3QnICAgICAgICAgICAgICAgICAgID0+IFtxdyhuc2NwIG5zY2hiIG5zY3NiKV0sCiAgICAgICAgJ25vc3RhY2stY2xvc2luZy10b2tlbnMnID0+IFtxdyhuc2NwIG5zY2hiIG5zY3NiKV0sCgogICAgICAgICdzYWMnICAgICAgICAgICAgICAgICAgICA9PiBbcXcoc290IHNjdCldLAogICAgICAgICduc2FjJyAgICAgICAgICAgICAgICAgICA9PiBbcXcobnNvdCBuc2N0KV0sCiAgICAgICAgJ3N0YWNrLWFsbC1jb250YWluZXJzJyAgID0+IFtxdyhzb3Qgc2N0KV0sCiAgICAgICAgJ25vc3RhY2stYWxsLWNvbnRhaW5lcnMnID0+IFtxdyhuc290IG5zY3QpXSwKCiAgICAgICAgJ2FjdD0wJyAgICAgICAgICAgICAgICAgICAgICA9PiBbcXcocHQ9MCBzYnQ9MCBidD0wIGJidD0wKV0sCiAgICAgICAgJ2FjdD0xJyAgICAgICAgICAgICAgICAgICAgICA9PiBbcXcocHQ9MSBzYnQ9MSBidD0xIGJidD0xKV0sCiAgICAgICAgJ2FjdD0yJyAgICAgICAgICAgICAgICAgICAgICA9PiBbcXcocHQ9MiBzYnQ9MiBidD0yIGJidD0yKV0sCiAgICAgICAgJ2FsbC1jb250YWluZXJzLXRpZ2h0bmVzcz0wJyA9PiBbcXcocHQ9MCBzYnQ9MCBidD0wIGJidD0wKV0sCiAgICAgICAgJ2FsbC1jb250YWluZXJzLXRpZ2h0bmVzcz0xJyA9PiBbcXcocHQ9MSBzYnQ9MSBidD0xIGJidD0xKV0sCiAgICAgICAgJ2FsbC1jb250YWluZXJzLXRpZ2h0bmVzcz0yJyA9PiBbcXcocHQ9MiBzYnQ9MiBidD0yIGJidD0yKV0sCgogICAgICAgICdzdGFjay1vcGVuaW5nLWJsb2NrLWJyYWNlJyAgID0+IFtxdyhiYnZ0PTIgYmJ2dGw9KildLAogICAgICAgICdzb2JiJyAgICAgICAgICAgICAgICAgICAgICAgID0+IFtxdyhiYnZ0PTIgYmJ2dGw9KildLAogICAgICAgICdub3N0YWNrLW9wZW5pbmctYmxvY2stYnJhY2UnID0+IFtxdyhiYnZ0PTApXSwKICAgICAgICAnbnNvYmInICAgICAgICAgICAgICAgICAgICAgICA9PiBbcXcoYmJ2dD0wKV0sCgogICAgICAgICdjb252ZXJnZScgICA9PiBbcXcoaXQ9NCldLAogICAgICAgICdub2NvbnZlcmdlJyA9PiBbcXcoaXQ9MSldLAogICAgICAgICdjb252JyAgICAgICA9PiBbcXcoaXQ9NCldLAogICAgICAgICduY29udicgICAgICA9PiBbcXcoaXQ9MSldLAoKICAgICAgICAjICdtYW5nbGUnIG9yaWdpbmFsbHkgZGVsZXRlZCBwb2QgYW5kIGNvbW1lbnRzLCBidXQgdG8ga2VlcCBpdAogICAgICAgICMgcmV2ZXJzaWJsZSwgaXQgbm8gbG9uZ2VyIGRvZXMuICBCdXQgaWYgeW91IHJlYWxseSB3YW50IHRvCiAgICAgICAgIyBkZWxldGUgdGhlbSwganVzdCB1c2U6CiAgICAgICAgIyAgIC1tYW5nbGUgLWRhYwoKICAgICAgICAjIEFuIGludGVyZXN0aW5nIHVzZSBmb3IgJ21hbmdsZScgaXMgdG8gZG8gdGhpczoKICAgICAgICAjICAgIHBlcmx0aWR5IC1tYW5nbGUgbXlmaWxlLnBsIC1zdCB8IHBlcmx0aWR5IC1vIG15ZmlsZS5wbC5uZXcKICAgICAgICAjIHdoaWNoIHdpbGwgZm9ybSBhcyBtYW55IG9uZS1saW5lIGJsb2NrcyBhcyBwb3NzaWJsZQoKICAgICAgICAnbWFuZ2xlJyA9PiBbCiAgICAgICAgICAgIHF3KAogICAgICAgICAgICAgIGNoZWNrLXN5bnRheAogICAgICAgICAgICAgIGtlZXAtb2xkLWJsYW5rLWxpbmVzPTAKICAgICAgICAgICAgICBkZWxldGUtb2xkLW5ld2xpbmVzCiAgICAgICAgICAgICAgZGVsZXRlLW9sZC13aGl0ZXNwYWNlCiAgICAgICAgICAgICAgZGVsZXRlLXNlbWljb2xvbnMKICAgICAgICAgICAgICBpbmRlbnQtY29sdW1ucz0wCiAgICAgICAgICAgICAgbWF4aW11bS1jb25zZWN1dGl2ZS1ibGFuay1saW5lcz0wCiAgICAgICAgICAgICAgbWF4aW11bS1saW5lLWxlbmd0aD0xMDAwMDAKICAgICAgICAgICAgICBub2FkZC1uZXdsaW5lcwogICAgICAgICAgICAgIG5vYWRkLXNlbWljb2xvbnMKICAgICAgICAgICAgICBub2FkZC13aGl0ZXNwYWNlCiAgICAgICAgICAgICAgbm9ibGFua3MtYmVmb3JlLWJsb2NrcwogICAgICAgICAgICAgIGJsYW5rLWxpbmVzLWJlZm9yZS1zdWJzPTAKICAgICAgICAgICAgICBibGFuay1saW5lcy1iZWZvcmUtcGFja2FnZXM9MAogICAgICAgICAgICAgIG5vdGFicwogICAgICAgICAgICApCiAgICAgICAgXSwKCiAgICAgICAgIyAnZXh0cnVkZScgb3JpZ2luYWxseSBkZWxldGVkIHBvZCBhbmQgY29tbWVudHMsIGJ1dCB0byBrZWVwIGl0CiAgICAgICAgIyByZXZlcnNpYmxlLCBpdCBubyBsb25nZXIgZG9lcy4gIEJ1dCBpZiB5b3UgcmVhbGx5IHdhbnQgdG8KICAgICAgICAjIGRlbGV0ZSB0aGVtLCBqdXN0IHVzZQogICAgICAgICMgICBleHRydWRlIC1kYWMKICAgICAgICAjCiAgICAgICAgIyBBbiBpbnRlcmVzdGluZyB1c2UgZm9yICdleHRydWRlJyBpcyB0byBkbyB0aGlzOgogICAgICAgICMgICAgcGVybHRpZHkgLWV4dHJ1ZGUgbXlmaWxlLnBsIC1zdCB8IHBlcmx0aWR5IC1vIG15ZmlsZS5wbC5uZXcKICAgICAgICAjIHdoaWNoIHdpbGwgYnJlYWsgdXAgYWxsIG9uZS1saW5lIGJsb2Nrcy4KICAgICAgICAjCiAgICAgICAgIyBSZW1vdmVkICdjaGVjay1zeW50YXgnIG9wdGlvbiwgd2hpY2ggaXMgdW5zYWZlIGJlY2F1c2UgaXQgbWF5IGV4ZWN1dGUKICAgICAgICAjIGNvZGUgaW4gQkVHSU4gYmxvY2tzLiAgRXhhbXBsZSAnTW9vc2UvZGVidWdnZXItZHVja190eXBlLnQnLgoKICAgICAgICAnZXh0cnVkZScgPT4gWwogICAgICAgICAgICBxdygKICAgICAgICAgICAgICBjaT0wCiAgICAgICAgICAgICAgZGVsZXRlLW9sZC1uZXdsaW5lcwogICAgICAgICAgICAgIGRlbGV0ZS1vbGQtd2hpdGVzcGFjZQogICAgICAgICAgICAgIGRlbGV0ZS1zZW1pY29sb25zCiAgICAgICAgICAgICAgaW5kZW50LWNvbHVtbnM9MAogICAgICAgICAgICAgIG1heGltdW0tY29uc2VjdXRpdmUtYmxhbmstbGluZXM9MAogICAgICAgICAgICAgIG1heGltdW0tbGluZS1sZW5ndGg9MQogICAgICAgICAgICAgIG5vYWRkLXNlbWljb2xvbnMKICAgICAgICAgICAgICBub2FkZC13aGl0ZXNwYWNlCiAgICAgICAgICAgICAgbm9ibGFua3MtYmVmb3JlLWJsb2NrcwogICAgICAgICAgICAgIGJsYW5rLWxpbmVzLWJlZm9yZS1zdWJzPTAKICAgICAgICAgICAgICBibGFuay1saW5lcy1iZWZvcmUtcGFja2FnZXM9MAogICAgICAgICAgICAgIG5vZnV6enktbGluZS1sZW5ndGgKICAgICAgICAgICAgICBub3RhYnMKICAgICAgICAgICAgICBub3JlY29tYmluZQogICAgICAgICAgICApCiAgICAgICAgXSwKCiAgICAgICAgIyB0aGlzIHN0eWxlIHRyaWVzIHRvIGZvbGxvdyB0aGUgR05VIENvZGluZyBTdGFuZGFyZHMgKHdoaWNoIGRvCiAgICAgICAgIyBub3QgcmVhbGx5IGFwcGx5IHRvIHBlcmwgYnV0IHdoaWNoIGFyZSBmb2xsb3dlZCBieSBzb21lIHBlcmwKICAgICAgICAjIHByb2dyYW1tZXJzKS4KICAgICAgICAnZ251LXN0eWxlJyA9PiBbCiAgICAgICAgICAgIHF3KAogICAgICAgICAgICAgIGxwIGJsIG5vbGwgcHQ9MiBidD0yIHNidD0yIGNwaT0xIGNzYmk9MSBjYmk9MQogICAgICAgICAgICApCiAgICAgICAgXSwKCiAgICAgICAgIyBTdHlsZSBzdWdnZXN0ZWQgaW4gRGFtaWFuIENvbndheSdzIFBlcmwgQmVzdCBQcmFjdGljZXMKICAgICAgICAncGVybC1iZXN0LXByYWN0aWNlcycgPT4gWwogICAgICAgICAgICBxdyhsPTc4IGk9NCBjaT00IHN0IHNlIHZ0PTIgY3RpPTAgcHQ9MSBidD0xIHNidD0xIGJidD0xIG5zZnMgbm9scSksCnEod2JiPSUgKyAtICogLyB4ICE9ID09ID49IDw9ID1+ICF+IDwgPiB8ICYgPSAqKj0gKz0gKj0gJj0gPDw9ICYmPSAtPSAvPSB8PSA+Pj0gfHw9IC8vPSAuPSAlPSBePSB4PSkKICAgICAgICBdLAoKICAgICAgICAjIEFkZGl0aW9uYWwgc3R5bGVzIGNhbiBiZSBhZGRlZCBoZXJlCiAgICApOwoKICAgIFBlcmw6OlRpZHk6Okh0bWxXcml0ZXItPm1ha2VfYWJicmV2aWF0ZWRfbmFtZXMoIFwlZXhwYW5zaW9uICk7CgogICAgIyBVbmNvbW1lbnQgbmV4dCBsaW5lIHRvIGR1bXAgYWxsIGV4cGFuc2lvbnMgZm9yIGRlYnVnZ2luZzoKICAgICMgZHVtcF9zaG9ydF9uYW1lcyhcJWV4cGFuc2lvbik7CiAgICByZXR1cm4gKAogICAgICAgIFxAb3B0aW9uX3N0cmluZywgICBcQGRlZmF1bHRzLCBcJWV4cGFuc2lvbiwKICAgICAgICBcJW9wdGlvbl9jYXRlZ29yeSwgXCVvcHRpb25fcmFuZ2UKICAgICk7Cgp9ICAgICMgZW5kIG9mIGdlbmVyYXRlX29wdGlvbnMKCiMgTWVtb2l6ZSBwcm9jZXNzX2NvbW1hbmRfbGluZS4gR2l2ZW4gc2FtZSBAQVJHViBwYXNzZWQgaW4sIHJldHVybiBzYW1lCiMgdmFsdWVzIGFuZCBzYW1lIEBBUkdWIGJhY2suCiMgVGhpcyBwYXRjaCB3YXMgc3VwcGxpZWQgYnkgSm9uYXRoYW4gU3dhcnR6IE5vdiAyMDEyIGFuZCBzaWduaWZpY2FudGx5IHNwZWVkcwojIHVwIG1hc29udGlkeSAoaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvbW9kdWxlL21hc29udGlkeSkKCm15ICVwcm9jZXNzX2NvbW1hbmRfbGluZV9jYWNoZTsKCnN1YiBwcm9jZXNzX2NvbW1hbmRfbGluZSB7CgogICAgbXkgQHEgPSBAXzsKICAgIG15ICgKICAgICAgICAkcGVybHRpZHlyY19zdHJlYW0sICAkaXNfV2luZG93cywgJFdpbmRvd3NfdHlwZSwKICAgICAgICAkcnBlbmRpbmdfY29tcGxhaW50LCAkZHVtcF9vcHRpb25zX3R5cGUKICAgICkgPSBAcTsKCiAgICBteSAkdXNlX2NhY2hlID0gIWRlZmluZWQoJHBlcmx0aWR5cmNfc3RyZWFtKSAmJiAhJGR1bXBfb3B0aW9uc190eXBlOwogICAgaWYgKCR1c2VfY2FjaGUpIHsKICAgICAgICBteSAkY2FjaGVfa2V5ID0gam9pbiggY2hyKDI4KSwgQEFSR1YgKTsKICAgICAgICBpZiAoIG15ICRyZXN1bHQgPSAkcHJvY2Vzc19jb21tYW5kX2xpbmVfY2FjaGV7JGNhY2hlX2tleX0gKSB7CiAgICAgICAgICAgIG15ICggJGFyZ3YsIEByZXR2YWxzICkgPSBAeyRyZXN1bHR9OwogICAgICAgICAgICBAQVJHViA9IEB7JGFyZ3Z9OwogICAgICAgICAgICByZXR1cm4gQHJldHZhbHM7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBteSBAcmV0dmFscyA9IF9wcm9jZXNzX2NvbW1hbmRfbGluZShAcSk7CiAgICAgICAgICAgICRwcm9jZXNzX2NvbW1hbmRfbGluZV9jYWNoZXskY2FjaGVfa2V5fSA9IFsgXEBBUkdWLCBAcmV0dmFscyBdCiAgICAgICAgICAgICAgaWYgJHJldHZhbHNbMF0tPnsnbWVtb2l6ZSd9OwogICAgICAgICAgICByZXR1cm4gQHJldHZhbHM7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuIF9wcm9jZXNzX2NvbW1hbmRfbGluZShAcSk7CiAgICB9Cn0KCiMgKG5vdGUgdGhlIHVuZGVyc2NvcmUgaGVyZSkKc3ViIF9wcm9jZXNzX2NvbW1hbmRfbGluZSB7CgogICAgbXkgKAogICAgICAgICRwZXJsdGlkeXJjX3N0cmVhbSwgICRpc19XaW5kb3dzLCAkV2luZG93c190eXBlLAogICAgICAgICRycGVuZGluZ19jb21wbGFpbnQsICRkdW1wX29wdGlvbnNfdHlwZQogICAgKSA9IEBfOwoKICAgIHVzZSBHZXRvcHQ6Okxvbmc7CgogICAgIyBTYXZlIGFueSBjdXJyZW50IEdldG9wdDo6TG9uZyBjb25maWd1cmF0aW9uCiAgICAjIGFuZCBzZXQgdG8gR2V0b3B0OjpMb25nIGRlZmF1bHRzLiAgVXNlIGV2YWwgdG8gYXZvaWQKICAgICMgYnJlYWtpbmcgb2xkIHZlcnNpb25zIG9mIFBlcmwgd2l0aG91dCB0aGVzZSByb3V0aW5lcy4KICAgICMgUHJldmlvdXMgY29uZmlndXJhdGlvbiBpcyByZXNldCBhdCB0aGUgZXhpdCBvZiB0aGlzIHJvdXRpbmUuCiAgICBteSAkZ2xjOwogICAgZXZhbCB7ICRnbGMgPSBHZXRvcHQ6Okxvbmc6OkNvbmZpZ3VyZSgpIH07CiAgICB1bmxlc3MgKCRAKSB7CiAgICAgICAgZXZhbCB7IEdldG9wdDo6TG9uZzo6Q29uZmlnRGVmYXVsdHMoKSB9OwogICAgfQogICAgZWxzZSB7ICRnbGMgPSB1bmRlZiB9CgogICAgbXkgKAogICAgICAgICRyb3B0aW9uX3N0cmluZywgICAkcmRlZmF1bHRzLCAkcmV4cGFuc2lvbiwKICAgICAgICAkcm9wdGlvbl9jYXRlZ29yeSwgJHJvcHRpb25fcmFuZ2UKICAgICkgPSBnZW5lcmF0ZV9vcHRpb25zKCk7CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBzZXQgdGhlIGRlZmF1bHRzIGJ5IHBhc3NpbmcgdGhlIGFib3ZlIGxpc3QgdGhyb3VnaCBHZXRPcHRpb25zCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBteSAlT3B0cyA9ICgpOwogICAgewogICAgICAgIGxvY2FsIEBBUkdWID0gKCk7CgogICAgICAgICMgZG8gbm90IGxvYWQgdGhlIGRlZmF1bHRzIGlmIHdlIGFyZSBqdXN0IGR1bXBpbmcgcGVybHRpZHlyYwogICAgICAgIHVubGVzcyAoICRkdW1wX29wdGlvbnNfdHlwZSBlcSAncGVybHRpZHlyYycgKSB7CiAgICAgICAgICAgIGZvciBteSAkaSAoIEB7JHJkZWZhdWx0c30gKSB7IHB1c2ggQEFSR1YsICItLSIgLiAkaSB9CiAgICAgICAgfQogICAgICAgIGlmICggIUdldE9wdGlvbnMoIFwlT3B0cywgQHskcm9wdGlvbl9zdHJpbmd9ICkgKSB7CiAgICAgICAgICAgIERpZSgKIlByb2dyYW1taW5nIEJ1ZyByZXBvcnRlZCBieSAnR2V0T3B0aW9ucyc6IGVycm9yIGluIHNldHRpbmcgZGVmYXVsdCBvcHRpb25zIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkd29yZDsKICAgIG15IEByYXdfb3B0aW9ucyAgICAgICAgPSAoKTsKICAgIG15ICRjb25maWdfZmlsZSAgICAgICAgPSAiIjsKICAgIG15ICRzYXdfaWdub3JlX3Byb2ZpbGUgPSAwOwogICAgbXkgJHNhd19kdW1wX3Byb2ZpbGUgICA9IDA7CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBUYWtlIGEgZmlyc3QgbG9vayBhdCB0aGUgY29tbWFuZC1saW5lIHBhcmFtZXRlcnMuICBEbyBhcyBtYW55CiAgICAjIGltbWVkaWF0ZSBkdW1wcyBhcyBwb3NzaWJsZSwgd2hpY2ggY2FuIGF2b2lkIGNvbmZ1c2lvbiBpZiB0aGUKICAgICMgcGVybHRpZHlyYyBmaWxlIGhhcyBhbiBlcnJvci4KICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGZvcmVhY2ggbXkgJGkgKEBBUkdWKSB7CgogICAgICAgICRpID1+IHMvXi0tLy0vOwogICAgICAgIGlmICggJGkgPX4gL14tKG5wcm98bm9wcm9maWxlfG5vLXByb2ZpbGUpJC8gKSB7CiAgICAgICAgICAgICRzYXdfaWdub3JlX3Byb2ZpbGUgPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBub3RlOiB0aGlzIG11c3QgY29tZSBiZWZvcmUgLXBybyBhbmQgLXByb2ZpbGUsIGJlbG93OgogICAgICAgIGVsc2lmICggJGkgPX4gL14tKGR1bXAtcHJvZmlsZXxkcHJvKSQvICkgewogICAgICAgICAgICAkc2F3X2R1bXBfcHJvZmlsZSA9IDE7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJGkgPX4gL14tKHByb3xwcm9maWxlKT0oLispLyApIHsKICAgICAgICAgICAgaWYgKCRjb25maWdfZmlsZSkgewogICAgICAgICAgICAgICAgV2FybigKIk9ubHkgb25lIC1wcm89ZmlsZW5hbWUgYWxsb3dlZCwgdXNpbmcgJyQyJyBpbnN0ZWFkIG9mICckY29uZmlnX2ZpbGUnXG4iCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRjb25maWdfZmlsZSA9ICQyOwoKICAgICAgICAgICAgIyByZXNvbHZlIDxkaXI+Ly4uLi88ZmlsZT4sIG1lYW5pbmcgbG9vayB1cHdhcmRzIGZyb20gZGlyZWN0b3J5CiAgICAgICAgICAgIGlmICggZGVmaW5lZCgkY29uZmlnX2ZpbGUpICkgewogICAgICAgICAgICAgICAgaWYgKCBteSAoICRzdGFydF9kaXIsICRzZWFyY2hfZmlsZSApID0KICAgICAgICAgICAgICAgICAgICAoICRjb25maWdfZmlsZSA9fiBte14oLiopXC5cLlwuLyguKikkfSApICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkc3RhcnRfZGlyID0gJy4nIGlmICEkc3RhcnRfZGlyOwogICAgICAgICAgICAgICAgICAgICRzdGFydF9kaXIgPSBDd2Q6OnJlYWxwYXRoKCRzdGFydF9kaXIpOwogICAgICAgICAgICAgICAgICAgIGlmICggbXkgJGZvdW5kX2ZpbGUgPQogICAgICAgICAgICAgICAgICAgICAgICBmaW5kX2ZpbGVfdXB3YXJkcyggJHN0YXJ0X2RpciwgJHNlYXJjaF9maWxlICkgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbmZpZ19maWxlID0gJGZvdW5kX2ZpbGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHVubGVzcyAoIC1lICRjb25maWdfZmlsZSApIHsKICAgICAgICAgICAgICAgIFdhcm4oImNhbm5vdCBmaW5kIGZpbGUgZ2l2ZW4gd2l0aCAtcHJvPSRjb25maWdfZmlsZTogJCFcbiIpOwogICAgICAgICAgICAgICAgJGNvbmZpZ19maWxlID0gIiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkaSA9fiAvXi0ocHJvfHByb2ZpbGUpPT8kLyApIHsKICAgICAgICAgICAgRGllKCJ1c2FnZTogLXBybz1maWxlbmFtZSBvciAtLXByb2ZpbGU9ZmlsZW5hbWUsIG5vIHNwYWNlc1xuIik7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJGkgPX4gL14tKGhlbHB8aHxIRUxQfEh8XD8pJC8gKSB7CiAgICAgICAgICAgIHVzYWdlKCk7CiAgICAgICAgICAgIEV4aXQoMCk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJGkgPX4gL14tKHZlcnNpb258dikkLyApIHsKICAgICAgICAgICAgc2hvd192ZXJzaW9uKCk7CiAgICAgICAgICAgIEV4aXQoMCk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJGkgPX4gL14tKGR1bXAtZGVmYXVsdHN8ZGRmKSQvICkgewogICAgICAgICAgICBkdW1wX2RlZmF1bHRzKCBAeyRyZGVmYXVsdHN9ICk7CiAgICAgICAgICAgIEV4aXQoMCk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJGkgPX4gL14tKGR1bXAtbG9uZy1uYW1lc3xkbG4pJC8gKSB7CiAgICAgICAgICAgIGR1bXBfbG9uZ19uYW1lcyggQHskcm9wdGlvbl9zdHJpbmd9ICk7CiAgICAgICAgICAgIEV4aXQoMCk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJGkgPX4gL14tKGR1bXAtc2hvcnQtbmFtZXN8ZHNuKSQvICkgewogICAgICAgICAgICBkdW1wX3Nob3J0X25hbWVzKCRyZXhwYW5zaW9uKTsKICAgICAgICAgICAgRXhpdCgwKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkaSA9fiAvXi0oZHVtcC10b2tlbi10eXBlc3xkdHQpJC8gKSB7CiAgICAgICAgICAgIFBlcmw6OlRpZHk6OlRva2VuaXplci0+ZHVtcF90b2tlbl90eXBlcygqU1RET1VUKTsKICAgICAgICAgICAgRXhpdCgwKTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkc2F3X2R1bXBfcHJvZmlsZSAmJiAkc2F3X2lnbm9yZV9wcm9maWxlICkgewogICAgICAgIFdhcm4oIk5vIHByb2ZpbGUgdG8gZHVtcCBiZWNhdXNlIG9mIC1ucHJvXG4iKTsKICAgICAgICBFeGl0KDEpOwogICAgfQoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgcmVhZCBhbnkgLnBlcmx0aWR5cmMgY29uZmlndXJhdGlvbiBmaWxlCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICB1bmxlc3MgKCRzYXdfaWdub3JlX3Byb2ZpbGUpIHsKCiAgICAgICAgIyByZXNvbHZlIHBvc3NpYmxlIGNvbmZsaWN0IGJldHdlZW4gJHBlcmx0aWR5cmNfc3RyZWFtIHBhc3NlZAogICAgICAgICMgYXMgY2FsbCBwYXJhbWV0ZXIgdG8gcGVybHRpZHkgYW5kIC1wcm89ZmlsZW5hbWUgb24gY29tbWFuZAogICAgICAgICMgbGluZS4KICAgICAgICBpZiAoJHBlcmx0aWR5cmNfc3RyZWFtKSB7CiAgICAgICAgICAgIGlmICgkY29uZmlnX2ZpbGUpIHsKICAgICAgICAgICAgICAgIFdhcm4oPDxFT00pOwogQ29uZmxpY3Q6IGEgcGVybHRpZHlyYyBjb25maWd1cmF0aW9uIGZpbGUgd2FzIHNwZWNpZmllZCBib3RoIGFzIHRoaXMKIHBlcmx0aWR5IGNhbGwgcGFyYW1ldGVyOiAkcGVybHRpZHlyY19zdHJlYW0gCiBhbmQgd2l0aCB0aGlzIC1wcm9maWxlPSRjb25maWdfZmlsZS4KIFVzaW5nIC1wcm9maWxlPSRjb25maWdfZmlsZS4KRU9NCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkY29uZmlnX2ZpbGUgPSAkcGVybHRpZHlyY19zdHJlYW07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgbG9vayBmb3IgYSBjb25maWcgZmlsZSBpZiB3ZSBkb24ndCBoYXZlIG9uZSB5ZXQKICAgICAgICBteSAkcmNvbmZpZ19maWxlX2NoYXR0ZXI7CiAgICAgICAgJHskcmNvbmZpZ19maWxlX2NoYXR0ZXJ9ID0gIiI7CiAgICAgICAgJGNvbmZpZ19maWxlID0KICAgICAgICAgIGZpbmRfY29uZmlnX2ZpbGUoICRpc19XaW5kb3dzLCAkV2luZG93c190eXBlLCAkcmNvbmZpZ19maWxlX2NoYXR0ZXIsCiAgICAgICAgICAgICRycGVuZGluZ19jb21wbGFpbnQgKQogICAgICAgICAgdW5sZXNzICRjb25maWdfZmlsZTsKCiAgICAgICAgIyBvcGVuIGFueSBjb25maWcgZmlsZQogICAgICAgIG15ICRmaF9jb25maWc7CiAgICAgICAgaWYgKCRjb25maWdfZmlsZSkgewogICAgICAgICAgICAoICRmaF9jb25maWcsICRjb25maWdfZmlsZSApID0KICAgICAgICAgICAgICBQZXJsOjpUaWR5OjpzdHJlYW1oYW5kbGUoICRjb25maWdfZmlsZSwgJ3InICk7CiAgICAgICAgICAgIHVubGVzcyAoJGZoX2NvbmZpZykgewogICAgICAgICAgICAgICAgJHskcmNvbmZpZ19maWxlX2NoYXR0ZXJ9IC49CiAgICAgICAgICAgICAgICAgICIjICRjb25maWdfZmlsZSBleGlzdHMgYnV0IGNhbm5vdCBiZSBvcGVuZWRcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkc2F3X2R1bXBfcHJvZmlsZSkgewogICAgICAgICAgICBkdW1wX2NvbmZpZ19maWxlKCAkZmhfY29uZmlnLCAkY29uZmlnX2ZpbGUsICRyY29uZmlnX2ZpbGVfY2hhdHRlciApOwogICAgICAgICAgICBFeGl0KDApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRmaF9jb25maWcpIHsKCiAgICAgICAgICAgIG15ICggJHJjb25maWdfbGlzdCwgJGRlYXRoX21lc3NhZ2UgKSA9CiAgICAgICAgICAgICAgcmVhZF9jb25maWdfZmlsZSggJGZoX2NvbmZpZywgJGNvbmZpZ19maWxlLCAkcmV4cGFuc2lvbiApOwogICAgICAgICAgICBEaWUoJGRlYXRoX21lc3NhZ2UpIGlmICgkZGVhdGhfbWVzc2FnZSk7CgogICAgICAgICAgICAjIHByb2Nlc3MgYW55IC5wZXJsdGlkeXJjIHBhcmFtZXRlcnMgcmlnaHQgbm93IHNvIHdlIGNhbgogICAgICAgICAgICAjIGxvY2FsaXplIGVycm9ycwogICAgICAgICAgICBpZiAoIEB7JHJjb25maWdfbGlzdH0gKSB7CiAgICAgICAgICAgICAgICBsb2NhbCBAQVJHViA9IEB7JHJjb25maWdfbGlzdH07CgogICAgICAgICAgICAgICAgZXhwYW5kX2NvbW1hbmRfYWJicmV2aWF0aW9ucyggJHJleHBhbnNpb24sIFxAcmF3X29wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgJGNvbmZpZ19maWxlICk7CgogICAgICAgICAgICAgICAgaWYgKCAhR2V0T3B0aW9ucyggXCVPcHRzLCBAeyRyb3B0aW9uX3N0cmluZ30gKSApIHsKICAgICAgICAgICAgICAgICAgICBEaWUoCiJFcnJvciBpbiB0aGlzIGNvbmZpZyBmaWxlOiAkY29uZmlnX2ZpbGUgIFxuVXNlIC1ucHJvIHRvIGlnbm9yZSB0aGlzIGZpbGUsIC1oIGZvciBoZWxwJ1xuIgogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBBbnl0aGluZyBsZWZ0IGluIHRoaXMgbG9jYWwgQEFSR1YgaXMgYW4gZXJyb3IgYW5kIG11c3QgYmUKICAgICAgICAgICAgICAgICMgaW52YWxpZCBiYXJlIHdvcmRzIGZyb20gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZS4gIFdlIGNhbm5vdAogICAgICAgICAgICAgICAgIyBjaGVjayB0aGlzIGVhcmxpZXIgYmVjYXVzZSBiYXJlIHdvcmRzIG1heSBoYXZlIGJlZW4gdmFsaWQKICAgICAgICAgICAgICAgICMgdmFsdWVzIGZvciBwYXJhbWV0ZXJzLiAgV2UgaGFkIHRvIHdhaXQgZm9yIEdldE9wdGlvbnMgdG8gaGF2ZQogICAgICAgICAgICAgICAgIyBhIGxvb2sgYXQgQEFSR1YuCiAgICAgICAgICAgICAgICBpZiAoQEFSR1YpIHsKICAgICAgICAgICAgICAgICAgICBteSAkY291bnQgPSBAQVJHVjsKICAgICAgICAgICAgICAgICAgICBteSAkc3RyICAgPSAiXCciIC4gcG9wKEBBUkdWKSAuICJcJyI7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBteSAkcGFyYW0gPSBwb3AoQEFSR1YpICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGxlbmd0aCgkc3RyKSA8IDcwICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0ciAuPSAiLCAnJHBhcmFtJyI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RyIC49ICIsIC4uLiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIERpZSg8PEVPTSk7ClRoZXJlIGFyZSAkY291bnQgdW5yZWNvZ25pemVkIHZhbHVlcyBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlICckY29uZmlnX2ZpbGUnOgokc3RyClVzZSBsZWFkaW5nIGRhc2hlcyBmb3IgcGFyYW1ldGVycy4gIFVzZSAtbnBybyB0byBpZ25vcmUgdGhpcyBmaWxlLgpFT00KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIFVuZG8gYW55IG9wdGlvbnMgd2hpY2ggY2F1c2UgcHJlbWF0dXJlIGV4aXQuICBUaGV5IGFyZSBub3QKICAgICAgICAgICAgICAgICMgYXBwcm9wcmlhdGUgZm9yIGEgY29uZmlnIGZpbGUsIGFuZCBpdCBjb3VsZCBiZSBoYXJkIHRvCiAgICAgICAgICAgICAgICAjIGRpYWdub3NlIHRoZSBjYXVzZSBvZiB0aGUgcHJlbWF0dXJlIGV4aXQuCiAgICAgICAgICAgICAgICBmb3JlYWNoICgKICAgICAgICAgICAgICAgICAgICBxd3sKICAgICAgICAgICAgICAgICAgICBkdW1wLWN1ZGRsZWQtYmxvY2stbGlzdAogICAgICAgICAgICAgICAgICAgIGR1bXAtZGVmYXVsdHMKICAgICAgICAgICAgICAgICAgICBkdW1wLWxvbmctbmFtZXMKICAgICAgICAgICAgICAgICAgICBkdW1wLW9wdGlvbnMKICAgICAgICAgICAgICAgICAgICBkdW1wLXByb2ZpbGUKICAgICAgICAgICAgICAgICAgICBkdW1wLXNob3J0LW5hbWVzCiAgICAgICAgICAgICAgICAgICAgZHVtcC10b2tlbi10eXBlcwogICAgICAgICAgICAgICAgICAgIGR1bXAtd2FudC1sZWZ0LXNwYWNlCiAgICAgICAgICAgICAgICAgICAgZHVtcC13YW50LXJpZ2h0LXNwYWNlCiAgICAgICAgICAgICAgICAgICAgaGVscAogICAgICAgICAgICAgICAgICAgIHN0eWxlc2hlZXQKICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCggJE9wdHN7JF99ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkT3B0c3skX307CiAgICAgICAgICAgICAgICAgICAgICAgIFdhcm4oImlnbm9yaW5nIC0tJF8gaW4gY29uZmlnIGZpbGU6ICRjb25maWdfZmlsZVxuIik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgbm93IHByb2Nlc3MgdGhlIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBleHBhbmRfY29tbWFuZF9hYmJyZXZpYXRpb25zKCAkcmV4cGFuc2lvbiwgXEByYXdfb3B0aW9ucywgJGNvbmZpZ19maWxlICk7CgogICAgbG9jYWwgJFNJR3snX19XQVJOX18nfSA9IHN1YiB7IFdhcm4oICRfWzBdICkgfTsKICAgIGlmICggIUdldE9wdGlvbnMoIFwlT3B0cywgQHskcm9wdGlvbl9zdHJpbmd9ICkgKSB7CiAgICAgICAgRGllKCJFcnJvciBvbiBjb21tYW5kIGxpbmU7IGZvciBoZWxwIHRyeSAncGVybHRpZHkgLWgnXG4iKTsKICAgIH0KCiAgICAjIHJlc2V0IEdldG9wdDo6TG9uZyBjb25maWd1cmF0aW9uIGJhY2sgdG8gaXRzIHByZXZpb3VzIHZhbHVlCiAgICBldmFsIHsgR2V0b3B0OjpMb25nOjpDb25maWd1cmUoJGdsYykgfSBpZiBkZWZpbmVkICRnbGM7CgogICAgcmV0dXJuICggXCVPcHRzLCAkY29uZmlnX2ZpbGUsIFxAcmF3X29wdGlvbnMsICRyb3B0aW9uX3N0cmluZywKICAgICAgICAkcmV4cGFuc2lvbiwgJHJvcHRpb25fY2F0ZWdvcnksICRyb3B0aW9uX3JhbmdlICk7Cn0gICAgIyBlbmQgb2YgX3Byb2Nlc3NfY29tbWFuZF9saW5lCgpzdWIgY2hlY2tfb3B0aW9ucyB7CgogICAgbXkgKCAkck9wdHMsICRpc19XaW5kb3dzLCAkV2luZG93c190eXBlLCAkcnBlbmRpbmdfY29tcGxhaW50ICkgPSBAXzsKCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIGNoZWNrIGFuZCBoYW5kbGUgYW55IGludGVyYWN0aW9ucyBhbW9uZyB0aGUgYmFzaWMgb3B0aW9ucy4uCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgIyBTaW5jZSAtdnQsIC12dGMsIGFuZCAtY3RpIGFyZSBhYmJyZXZpYXRpb25zLCBidXQgdW5kZXIKICAgICMgbXNkb3MsIGFuIHVucXVvdGVkIGlucHV0IHBhcmFtZXRlciBsaWtlIHZ0Yz0xIHdpbGwgYmUKICAgICMgc2VlbiBhcyAyIHBhcmFtZXRlcnMsIHZ0YyBhbmQgMSwgc28gdGhlIGFiYnJldmlhdGlvbnMKICAgICMgd29uJ3QgYmUgc2Vlbi4gIFRoZXJlZm9yZSwgd2Ugd2lsbCBjYXRjaCB0aGVtIGhlcmUgaWYKICAgICMgdGhleSBnZXQgdGhyb3VnaC4KCiAgICBpZiAoIGRlZmluZWQgJHJPcHRzLT57J3ZlcnRpY2FsLXRpZ2h0bmVzcyd9ICkgewogICAgICAgIG15ICR2dCA9ICRyT3B0cy0+eyd2ZXJ0aWNhbC10aWdodG5lc3MnfTsKICAgICAgICAkck9wdHMtPnsncGFyZW4tdmVydGljYWwtdGlnaHRuZXNzJ30gICAgICAgICAgPSAkdnQ7CiAgICAgICAgJHJPcHRzLT57J3NxdWFyZS1icmFja2V0LXZlcnRpY2FsLXRpZ2h0bmVzcyd9ID0gJHZ0OwogICAgICAgICRyT3B0cy0+eydicmFjZS12ZXJ0aWNhbC10aWdodG5lc3MnfSAgICAgICAgICA9ICR2dDsKICAgIH0KCiAgICBpZiAoIGRlZmluZWQgJHJPcHRzLT57J3ZlcnRpY2FsLXRpZ2h0bmVzcy1jbG9zaW5nJ30gKSB7CiAgICAgICAgbXkgJHZ0YyA9ICRyT3B0cy0+eyd2ZXJ0aWNhbC10aWdodG5lc3MtY2xvc2luZyd9OwogICAgICAgICRyT3B0cy0+eydwYXJlbi12ZXJ0aWNhbC10aWdodG5lc3MtY2xvc2luZyd9ICAgICAgICAgID0gJHZ0YzsKICAgICAgICAkck9wdHMtPnsnc3F1YXJlLWJyYWNrZXQtdmVydGljYWwtdGlnaHRuZXNzLWNsb3NpbmcnfSA9ICR2dGM7CiAgICAgICAgJHJPcHRzLT57J2JyYWNlLXZlcnRpY2FsLXRpZ2h0bmVzcy1jbG9zaW5nJ30gICAgICAgICAgPSAkdnRjOwogICAgfQoKICAgIGlmICggZGVmaW5lZCAkck9wdHMtPnsnY2xvc2luZy10b2tlbi1pbmRlbnRhdGlvbid9ICkgewogICAgICAgIG15ICRjdGkgPSAkck9wdHMtPnsnY2xvc2luZy10b2tlbi1pbmRlbnRhdGlvbid9OwogICAgICAgICRyT3B0cy0+eydjbG9zaW5nLXNxdWFyZS1icmFja2V0LWluZGVudGF0aW9uJ30gPSAkY3RpOwogICAgICAgICRyT3B0cy0+eydjbG9zaW5nLWJyYWNlLWluZGVudGF0aW9uJ30gICAgICAgICAgPSAkY3RpOwogICAgICAgICRyT3B0cy0+eydjbG9zaW5nLXBhcmVuLWluZGVudGF0aW9uJ30gICAgICAgICAgPSAkY3RpOwogICAgfQoKICAgICMgSW4gcXVpZXQgbW9kZSwgdGhlcmUgaXMgbm8gbG9nIGZpbGUgYW5kIGhlbmNlIG5vIHdheSB0byByZXBvcnQKICAgICMgcmVzdWx0cyBvZiBzeW50YXggY2hlY2ssIHNvIGRvbid0IGRvIGl0LgogICAgaWYgKCAkck9wdHMtPnsncXVpZXQnfSApIHsKICAgICAgICAkck9wdHMtPnsnY2hlY2stc3ludGF4J30gPSAwOwogICAgfQoKICAgICMgY2FuJ3QgY2hlY2sgc3ludGF4IGlmIG5vIG91dHB1dAogICAgaWYgKCAkck9wdHMtPnsnZm9ybWF0J30gbmUgJ3RpZHknICkgewogICAgICAgICRyT3B0cy0+eydjaGVjay1zeW50YXgnfSA9IDA7CiAgICB9CgogICAgIyBOZXZlciBsZXQgV2luZG93cyA5eC9NZSBzeXN0ZW1zIHJ1biBzeW50YXggY2hlY2sgLS0gdGhpcyB3aWxsIHByZXZlbnQgYQogICAgIyB3aWRlIHZhcmlldHkgb2YgbmFzdHkgcHJvYmxlbXMgb24gdGhlc2Ugc3lzdGVtcywgYmVjYXVzZSB0aGV5IGNhbm5vdAogICAgIyByZWxpYWJseSBydW4gYmFja3RpY2tzLiAgRG9uJ3QgZXZlbiB0aGluayBhYm91dCBjaGFuZ2luZyB0aGlzIQogICAgaWYgKCAgICRyT3B0cy0+eydjaGVjay1zeW50YXgnfQogICAgICAgICYmICRpc19XaW5kb3dzCiAgICAgICAgJiYgKCAhJFdpbmRvd3NfdHlwZSB8fCAkV2luZG93c190eXBlID1+IC9eKDl8TWUpLyApICkKICAgIHsKICAgICAgICAkck9wdHMtPnsnY2hlY2stc3ludGF4J30gPSAwOwogICAgfQoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBBZGRlZCBEZWMgMjAxNzogRGVhY3RpdmF0aW5nIGNoZWNrLXN5bnRheCBmb3IgYWxsIHN5c3RlbXMgZm9yIHNhZmV0eQogICAgIyBiZWNhdXNlIHVuZXhwZWN0ZWQgcmVzdWx0cyBjYW4gb2NjdXIgd2hlbiBjb2RlIGluIEJFR0lOIGJsb2NrcyBpcwogICAgIyBleGVjdXRlZC4gIFRoaXMgZmxhZyB3YXMgaW5jbHVkZWQgdG8gaGVscCBjaGVjayBmb3IgcGVybHRpZHkgbWlzdGFrZXMsCiAgICAjIGFuZCBtYXkgc3RpbGwgYmUgdXNlZnVsIGZvciBkZWJ1Z2dpbmcuICBUbyBhY3RpdmF0ZSBmb3IgdGVzdGluZyBjb21tZW50CiAgICAjIG91dCB0aGUgbmV4dCB0aHJlZSBsaW5lcy4gIEFsc28gZml4IHN1YiAnZG9fY2hlY2tfc3ludGF4JyBpbiB0aGlzIGZpbGUuCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgIGVsc2UgewogICAgICAgICRyT3B0cy0+eydjaGVjay1zeW50YXgnfSA9IDA7CiAgICB9CgogICAgIyBJdCdzIHJlYWxseSBhIGJhZCBpZGVhIHRvIGNoZWNrIHN5bnRheCBhcyByb290IHVubGVzcyB5b3Ugd3JvdGUKICAgICMgdGhlIHNjcmlwdCB5b3Vyc2VsZi4gIEZJWE1FOiBub3Qgc3VyZSBpZiB0aGlzIHdvcmtzIHdpdGggVk1TCiAgICB1bmxlc3MgKCRpc19XaW5kb3dzKSB7CgogICAgICAgIGlmICggJDwgPT0gMCAmJiAkck9wdHMtPnsnY2hlY2stc3ludGF4J30gKSB7CiAgICAgICAgICAgICRyT3B0cy0+eydjaGVjay1zeW50YXgnfSA9IDA7CiAgICAgICAgICAgICR7JHJwZW5kaW5nX2NvbXBsYWludH0gLj0KIlN5bnRheCBjaGVjayBkZWFjdGl2YXRlZCBmb3Igc2FmZXR5OyB5b3Ugc2hvdWxkbid0IHJ1biB0aGlzIGFzIHJvb3RcbiI7CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaXRlcmF0aW9uIGNvdW50IGFuZCBxdWlldGx5IGZpeCBpZiBuZWNlc3Nhcnk6CiAgICAjIC0gaXRlcmF0aW9ucyBvcHRpb24gb25seSBhcHBsaWVzIHRvIGNvZGUgYmVhdXRpZmljYXRpb24gbW9kZQogICAgIyAtIHRoZSBjb252ZXJnZW5jZSBjaGVjayBzaG91bGQgc3RvcCBtb3N0IHJ1bnMgb24gaXRlcmF0aW9uIDIsIGFuZAogICAgIyAgIHZpcnR1YWxseSBhbGwgb24gaXRlcmF0aW9uIDMuICBCdXQgd2UnbGwgYWxsb3cgdXAgdG8gNi4KICAgIGlmICggJHJPcHRzLT57J2Zvcm1hdCd9IG5lICd0aWR5JyApIHsKICAgICAgICAkck9wdHMtPnsnaXRlcmF0aW9ucyd9ID0gMTsKICAgIH0KICAgIGVsc2lmICggZGVmaW5lZCggJHJPcHRzLT57J2l0ZXJhdGlvbnMnfSApICkgewogICAgICAgIGlmICAgICggJHJPcHRzLT57J2l0ZXJhdGlvbnMnfSA8PSAwICkgeyAkck9wdHMtPnsnaXRlcmF0aW9ucyd9ID0gMSB9CiAgICAgICAgZWxzaWYgKCAkck9wdHMtPnsnaXRlcmF0aW9ucyd9ID4gNiApICB7ICRyT3B0cy0+eydpdGVyYXRpb25zJ30gPSA2IH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRyT3B0cy0+eydpdGVyYXRpb25zJ30gPSAxOwogICAgfQoKICAgIG15ICRjaGVja19ibGFua19jb3VudCA9IHN1YiB7CiAgICAgICAgbXkgKCAka2V5LCAkYWJicmV2ICkgPSBAXzsKICAgICAgICBpZiAoICRyT3B0cy0+eyRrZXl9ICkgewogICAgICAgICAgICBpZiAoICRyT3B0cy0+eyRrZXl9IDwgMCApIHsKICAgICAgICAgICAgICAgICRyT3B0cy0+eyRrZXl9ID0gMDsKICAgICAgICAgICAgICAgIFdhcm4oIm5lZ2F0aXZlIHZhbHVlIG9mICRhYmJyZXYsIHNldHRpbmcgMFxuIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkck9wdHMtPnska2V5fSA+IDEwMCApIHsKICAgICAgICAgICAgICAgIFdhcm4oInVucmVhc29uYWJseSBsYXJnZSB2YWx1ZSBvZiAkYWJicmV2LCByZWR1Y2luZ1xuIik7CiAgICAgICAgICAgICAgICAkck9wdHMtPnska2V5fSA9IDEwMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CgogICAgIyBjaGVjayBmb3IgcmVhc29uYWJsZSBudW1iZXIgb2YgYmxhbmsgbGluZXMgYW5kIGZpeCB0byBhdm9pZCBwcm9ibGVtcwogICAgJGNoZWNrX2JsYW5rX2NvdW50LT4oICdibGFuay1saW5lcy1iZWZvcmUtc3VicycsICAgICAgICAgICctYmxicycgKTsKICAgICRjaGVja19ibGFua19jb3VudC0+KCAnYmxhbmstbGluZXMtYmVmb3JlLXBhY2thZ2VzJywgICAgICAnLWJsYnAnICk7CiAgICAkY2hlY2tfYmxhbmtfY291bnQtPiggJ2JsYW5rLWxpbmVzLWFmdGVyLWJsb2NrLW9wZW5pbmcnLCAgJy1ibGFvJyApOwogICAgJGNoZWNrX2JsYW5rX2NvdW50LT4oICdibGFuay1saW5lcy1iZWZvcmUtYmxvY2stY2xvc2luZycsICctYmxiYycgKTsKCiAgICAjIHNldHRpbmcgYSBub24tbmVnYXRpdmUgbG9nZmlsZSBnYXAgY2F1c2VzIGxvZ2ZpbGUgdG8gYmUgc2F2ZWQKICAgIGlmICggZGVmaW5lZCggJHJPcHRzLT57J2xvZ2ZpbGUtZ2FwJ30gKSAmJiAkck9wdHMtPnsnbG9nZmlsZS1nYXAnfSA+PSAwICkgewogICAgICAgICRyT3B0cy0+eydsb2dmaWxlJ30gPSAxOwogICAgfQoKICAgICMgc2V0IHNob3J0LWN1dCBmbGFnIHdoZW4gb25seSBpbmRlbnRhdGlvbiBpcyB0byBiZSBkb25lLgogICAgIyBOb3RlIHRoYXQgdGhlIHVzZXIgbWF5IG9yIG1heSBub3QgaGF2ZSBhbHJlYWR5IHNldCB0aGUKICAgICMgaW5kZW50LW9ubHkgZmxhZy4KICAgIGlmICggICAhJHJPcHRzLT57J2FkZC13aGl0ZXNwYWNlJ30KICAgICAgICAmJiAhJHJPcHRzLT57J2RlbGV0ZS1vbGQtd2hpdGVzcGFjZSd9CiAgICAgICAgJiYgISRyT3B0cy0+eydhZGQtbmV3bGluZXMnfQogICAgICAgICYmICEkck9wdHMtPnsnZGVsZXRlLW9sZC1uZXdsaW5lcyd9ICkKICAgIHsKICAgICAgICAkck9wdHMtPnsnaW5kZW50LW9ubHknfSA9IDE7CiAgICB9CgogICAgIyAtaXNiYyBpbXBsaWVzIC1pYmMKICAgIGlmICggJHJPcHRzLT57J2luZGVudC1zcGFjZWQtYmxvY2stY29tbWVudHMnfSApIHsKICAgICAgICAkck9wdHMtPnsnaW5kZW50LWJsb2NrLWNvbW1lbnRzJ30gPSAxOwogICAgfQoKICAgICMgLWJsaSBmbGFnIGltcGxpZXMgLWJsCiAgICBpZiAoICRyT3B0cy0+eydicmFjZS1sZWZ0LWFuZC1pbmRlbnQnfSApIHsKICAgICAgICAkck9wdHMtPnsnb3BlbmluZy1icmFjZS1vbi1uZXctbGluZSd9ID0gMTsKICAgIH0KCiAgICBpZiAoICAgJHJPcHRzLT57J29wZW5pbmctYnJhY2UtYWx3YXlzLW9uLXJpZ2h0J30KICAgICAgICAmJiAkck9wdHMtPnsnb3BlbmluZy1icmFjZS1vbi1uZXctbGluZSd9ICkKICAgIHsKICAgICAgICBXYXJuKDw8RU9NKTsKIENvbmZsaWN0OiB5b3Ugc3BlY2lmaWVkIGJvdGggJ29wZW5pbmctYnJhY2UtYWx3YXlzLW9uLXJpZ2h0JyAoLWJhcikgYW5kIAogICdvcGVuaW5nLWJyYWNlLW9uLW5ldy1saW5lJyAoLWJsKS4gIElnbm9yaW5nIC1ibC4gCkVPTQogICAgICAgICRyT3B0cy0+eydvcGVuaW5nLWJyYWNlLW9uLW5ldy1saW5lJ30gPSAwOwogICAgfQoKICAgICMgaXQgc2ltcGxpZmllcyB0aGluZ3MgaWYgLWJsIGlzIDAgcmF0aGVyIHRoYW4gdW5kZWZpbmVkCiAgICBpZiAoICFkZWZpbmVkKCAkck9wdHMtPnsnb3BlbmluZy1icmFjZS1vbi1uZXctbGluZSd9ICkgKSB7CiAgICAgICAgJHJPcHRzLT57J29wZW5pbmctYnJhY2Utb24tbmV3LWxpbmUnfSA9IDA7CiAgICB9CgogICAgIyAtc2JsIGRlZmF1bHRzIHRvIC1ibCBpZiBub3QgZGVmaW5lZAogICAgaWYgKCAhZGVmaW5lZCggJHJPcHRzLT57J29wZW5pbmctc3ViLWJyYWNlLW9uLW5ldy1saW5lJ30gKSApIHsKICAgICAgICAkck9wdHMtPnsnb3BlbmluZy1zdWItYnJhY2Utb24tbmV3LWxpbmUnfSA9CiAgICAgICAgICAkck9wdHMtPnsnb3BlbmluZy1icmFjZS1vbi1uZXctbGluZSd9OwogICAgfQoKICAgIGlmICggJHJPcHRzLT57J2VudGFiLWxlYWRpbmctd2hpdGVzcGFjZSd9ICkgewogICAgICAgIGlmICggJHJPcHRzLT57J2VudGFiLWxlYWRpbmctd2hpdGVzcGFjZSd9IDwgMCApIHsKICAgICAgICAgICAgV2FybigiLWV0PW4gbXVzdCB1c2UgYSBwb3NpdGl2ZSBpbnRlZ2VyOyBpZ25vcmluZyAtZXRcbiIpOwogICAgICAgICAgICAkck9wdHMtPnsnZW50YWItbGVhZGluZy13aGl0ZXNwYWNlJ30gPSB1bmRlZjsKICAgICAgICB9CgogICAgICAgICMgZW50YWIgbGVhZGluZyB3aGl0ZXNwYWNlIGhhcyBwcmlvcml0eSBvdmVyIHRoZSBvbGRlciAndGFicycgb3B0aW9uCiAgICAgICAgaWYgKCAkck9wdHMtPnsndGFicyd9ICkgeyAkck9wdHMtPnsndGFicyd9ID0gMDsgfQogICAgfQoKICAgICMgc2V0IGEgZGVmYXVsdCB0YWJzaXplIHRvIGJlIHVzZWQgaW4gZ3Vlc3NpbmcgdGhlIHN0YXJ0aW5nIGluZGVudGF0aW9uCiAgICAjIGxldmVsIGlmIGFuZCBvbmx5IGlmIHRoaXMgcnVuIGRvZXMgbm90IHVzZSB0YWJzIGFuZCB0aGUgb2xkIGNvZGUgZG9lcwogICAgIyB1c2UgdGFicwogICAgaWYgKCAkck9wdHMtPnsnZGVmYXVsdC10YWJzaXplJ30gKSB7CiAgICAgICAgaWYgKCAkck9wdHMtPnsnZGVmYXVsdC10YWJzaXplJ30gPCAwICkgewogICAgICAgICAgICBXYXJuKCJuZWdhdGl2ZSB2YWx1ZSBvZiAtZHQsIHNldHRpbmcgMFxuIik7CiAgICAgICAgICAgICRyT3B0cy0+eydkZWZhdWx0LXRhYnNpemUnfSA9IDA7CiAgICAgICAgfQogICAgICAgIGlmICggJHJPcHRzLT57J2RlZmF1bHQtdGFic2l6ZSd9ID4gMjAgKSB7CiAgICAgICAgICAgIFdhcm4oInVucmVhc29uYWJseSBsYXJnZSB2YWx1ZSBvZiAtZHQsIHJlZHVjaW5nXG4iKTsKICAgICAgICAgICAgJHJPcHRzLT57J2RlZmF1bHQtdGFic2l6ZSd9ID0gMjA7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJHJPcHRzLT57J2RlZmF1bHQtdGFic2l6ZSd9ID0gODsKICAgIH0KCiAgICAjIENoZWNrIGFuZCBjbGVhbiB1cCBhbnkgc3ViLWFsaWFzLWxpc3QKICAgIGlmICggJHJPcHRzLT57J3N1Yi1hbGlhcy1saXN0J30gKSB7CiAgICAgICAgbXkgJHN1Yl9hbGlhc19zdHJpbmcgPSAkck9wdHMtPnsnc3ViLWFsaWFzLWxpc3QnfTsKICAgICAgICAkc3ViX2FsaWFzX3N0cmluZyA9fiBzLywvIC9nOyAgICAjIGFsbG93IGNvbW1hcwogICAgICAgICRzdWJfYWxpYXNfc3RyaW5nID1+IHMvXlxzKy8vOwogICAgICAgICRzdWJfYWxpYXNfc3RyaW5nID1+IHMvXHMrJC8vOwogICAgICAgIG15IEBzdWJfYWxpYXNfbGlzdCAgICAgPSBzcGxpdCAvXHMrLywgJHN1Yl9hbGlhc19zdHJpbmc7CiAgICAgICAgbXkgQGZpbHRlcmVkX3dvcmRfbGlzdCA9ICgnc3ViJyk7CiAgICAgICAgbXkgJXNlZW47CgogICAgICAgICMgaW5jbHVkZSAnc3ViJyBmb3IgbGF0ZXIgY29udmVuaWVuY2UKICAgICAgICAkc2VlbntzdWJ9Kys7CiAgICAgICAgZm9yZWFjaCBteSAkd29yZCAoQHN1Yl9hbGlhc19saXN0KSB7CiAgICAgICAgICAgIGlmICgkd29yZCkgewogICAgICAgICAgICAgICAgaWYgKCAkd29yZCAhfiAvXlx3W1x3XGRdKiQvICkgewogICAgICAgICAgICAgICAgICAgIFdhcm4oInVuZXhwZWN0ZWQgc3ViIGFsaWFzICckd29yZCcgLSBpZ25vcmluZ1xuIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoICEkc2Vlbnskd29yZH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJHNlZW57JHdvcmR9Kys7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAZmlsdGVyZWRfd29yZF9saXN0LCAkd29yZDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBteSAkam9pbmVkX3dvcmRzID0gam9pbiAnICcsIEBmaWx0ZXJlZF93b3JkX2xpc3Q7CiAgICAgICAgJHJPcHRzLT57J3N1Yi1hbGlhcy1saXN0J30gPSBqb2luICcgJywgQGZpbHRlcmVkX3dvcmRfbGlzdDsKICAgIH0KCiAgICAjIERlZmluZSAkdGFic2l6ZSwgdGhlIG51bWJlciBvZiBzcGFjZXMgcGVyIHRhYiBmb3IgdXNlIGluCiAgICAjIGd1ZXNzaW5nIHRoZSBpbmRlbnRhdGlvbiBvZiBzb3VyY2UgbGluZXMgd2l0aCBsZWFkaW5nIHRhYnMuCiAgICAjIEFzc3VtZSBzYW1lIGFzIGZvciB0aGlzIHJ1biBpZiB0YWJzIGFyZSB1c2VkICwgb3RoZXJ3aXNlIGFzc3VtZQogICAgIyBhIGRlZmF1bHQgdmFsdWUsIHR5cGljYWxseSA4CiAgICBteSAkdGFic2l6ZSA9CiAgICAgICAgJHJPcHRzLT57J2VudGFiLWxlYWRpbmctd2hpdGVzcGFjZSd9CiAgICAgID8gJHJPcHRzLT57J2VudGFiLWxlYWRpbmctd2hpdGVzcGFjZSd9CiAgICAgIDogJHJPcHRzLT57J3RhYnMnfSA/ICRyT3B0cy0+eydpbmRlbnQtY29sdW1ucyd9CiAgICAgIDogICAgICAgICAgICAgICAgICAgICRyT3B0cy0+eydkZWZhdWx0LXRhYnNpemUnfTsKICAgIHJldHVybiAkdGFic2l6ZTsKfQoKc3ViIGZpbmRfZmlsZV91cHdhcmRzIHsKICAgIG15ICggJHNlYXJjaF9kaXIsICRzZWFyY2hfZmlsZSApID0gQF87CgogICAgJHNlYXJjaF9kaXIgID1+IHN7LyskfXt9OwogICAgJHNlYXJjaF9maWxlID1+IHN7Xi8rfXt9OwoKICAgIHdoaWxlICgxKSB7CiAgICAgICAgbXkgJHRyeV9wYXRoID0gIiRzZWFyY2hfZGlyLyRzZWFyY2hfZmlsZSI7CiAgICAgICAgaWYgKCAtZiAkdHJ5X3BhdGggKSB7CiAgICAgICAgICAgIHJldHVybiAkdHJ5X3BhdGg7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJHNlYXJjaF9kaXIgZXEgJy8nICkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkc2VhcmNoX2RpciA9IGRpcm5hbWUoJHNlYXJjaF9kaXIpOwogICAgICAgIH0KICAgIH0KCiAgICAjIFRoaXMgcmV0dXJuIGlzIGZvciBQZXJsLUNyaXRpYy4KICAgICMgV2Ugc2hvdWxkbid0IGdldCBvdXQgb2YgdGhlIHdoaWxlIGxvb3Agd2l0aG91dCBhIHJldHVybgogICAgcmV0dXJuOwp9CgpzdWIgZXhwYW5kX2NvbW1hbmRfYWJicmV2aWF0aW9ucyB7CgogICAgIyBnbyB0aHJvdWdoIEBBUkdWIGFuZCBleHBhbmQgYW55IGFiYnJldmlhdGlvbnMKCiAgICBteSAoICRyZXhwYW5zaW9uLCAkcnJhd19vcHRpb25zLCAkY29uZmlnX2ZpbGUgKSA9IEBfOwoKICAgICMgc2V0IGEgcGFzcyBsaW1pdCB0byBwcmV2ZW50IGFuIGluZmluaXRlIGxvb3A7CiAgICAjIDEwIHNob3VsZCBiZSBwbGVudHksIGJ1dCBpdCBtYXkgYmUgaW5jcmVhc2VkIHRvIGFsbG93IGRlZXBseQogICAgIyBuZXN0ZWQgZXhwYW5zaW9ucy4KICAgIG15ICRtYXhfcGFzc2VzID0gMTA7CiAgICBteSBAbmV3X2FyZ3YgICA9ICgpOwoKICAgICMga2VlcCBsb29waW5nIHVudGlsIGFsbCBleHBhbnNpb25zIGhhdmUgYmVlbiBjb252ZXJ0ZWQgaW50byBhY3R1YWwKICAgICMgZGFzaCBwYXJhbWV0ZXJzLi4KICAgIGZvcmVhY2ggbXkgJHBhc3NfY291bnQgKCAwIC4uICRtYXhfcGFzc2VzICkgewogICAgICAgIG15IEBuZXdfYXJndiAgICAgPSAoKTsKICAgICAgICBteSAkYWJicmV2X2NvdW50ID0gMDsKCiAgICAgICAgIyBsb29wIG92ZXIgZWFjaCBpdGVtIGluIEBBUkdWLi4KICAgICAgICBmb3JlYWNoIG15ICR3b3JkIChAQVJHVikgewoKICAgICAgICAgICAgIyBjb252ZXJ0IGFueSBsZWFkaW5nICduby0nIHRvIGp1c3QgJ25vJwogICAgICAgICAgICBpZiAoICR3b3JkID1+IC9eKC1bLV0/bm8pLSguKikvICkgeyAkd29yZCA9ICQxIC4gJDIgfQoKICAgICAgICAgICAgIyBpZiBpdCBpcyBhIGRhc2ggZmxhZyAoaW5zdGVhZCBvZiBhIGZpbGUgbmFtZSkuLgogICAgICAgICAgICBpZiAoICR3b3JkID1+IC9eLVstXT8oW1x3XC1dKykoLiopLyApIHsKCiAgICAgICAgICAgICAgICBteSAkYWJyICAgPSAkMTsKICAgICAgICAgICAgICAgIG15ICRmbGFncyA9ICQyOwoKICAgICAgICAgICAgICAgICMgc2F2ZSB0aGUgcmF3IGlucHV0IGZvciBkZWJ1ZyBvdXRwdXQgaW4gY2FzZSBvZiBjaXJjdWxhciByZWZzCiAgICAgICAgICAgICAgICBpZiAoICRwYXNzX2NvdW50ID09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCggQHskcnJhd19vcHRpb25zfSwgJHdvcmQgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHJlY29tYmluZSBhYmJyZXZpYXRpb24gYW5kIGZsYWcsIGlmIG5lY2Vzc2FyeSwKICAgICAgICAgICAgICAgICMgdG8gYWxsb3cgYWJicmV2aWF0aW9ucyB3aXRoIGFyZ3VtZW50cyBzdWNoIGFzICctdnQ9MScKICAgICAgICAgICAgICAgIGlmICggJHJleHBhbnNpb24tPnsgJGFiciAuICRmbGFncyB9ICkgewogICAgICAgICAgICAgICAgICAgICRhYnIgICA9ICRhYnIgLiAkZmxhZ3M7CiAgICAgICAgICAgICAgICAgICAgJGZsYWdzID0gIiI7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBpZiB3ZSBzZWUgdGhpcyBkYXNoIGl0ZW0gaW4gdGhlIGV4cGFuc2lvbiBoYXNoLi4KICAgICAgICAgICAgICAgIGlmICggJHJleHBhbnNpb24tPnskYWJyfSApIHsKICAgICAgICAgICAgICAgICAgICAkYWJicmV2X2NvdW50Kys7CgogICAgICAgICAgICAgICAgICAgICMgc3R1ZmYgYWxsIG9mIHRoZSB3b3JkcyB0aGF0IGl0IGV4cGFuZHMgdG8gaW50byB0aGUKICAgICAgICAgICAgICAgICAgICAjIG5ldyBhcmcgbGlzdCBmb3IgdGhlIG5leHQgcGFzcwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGFiYnJldiAoIEB7ICRyZXhwYW5zaW9uLT57JGFicn0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3MgJGFiYnJldjsgICAgIyBmb3Igc2FmZXR5OyBzaG91bGRuJ3QgaGFwcGVuCiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goIEBuZXdfYXJndiwgJy0tJyAuICRhYmJyZXYgLiAkZmxhZ3MgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBub3QgaW4gZXhwYW5zaW9uIGhhc2gsIG11c3QgYmUgYWN0dWFsIGxvbmcgbmFtZQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCggQG5ld19hcmd2LCAkd29yZCApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIG5vdCBhIGRhc2ggaXRlbSwgc28ganVzdCBzYXZlIGl0IGZvciB0aGUgbmV4dCBwYXNzCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcHVzaCggQG5ld19hcmd2LCAkd29yZCApOwogICAgICAgICAgICB9CiAgICAgICAgfSAgICAjIGVuZCBvZiB0aGlzIHBhc3MKCiAgICAgICAgIyB1cGRhdGUgcGFyYW1ldGVyIGxpc3QgQEFSR1YgdG8gdGhlIG5ldyBvbmUKICAgICAgICBAQVJHViA9IEBuZXdfYXJndjsKICAgICAgICBsYXN0IHVubGVzcyAoICRhYmJyZXZfY291bnQgPiAwICk7CgogICAgICAgICMgbWFrZSBzdXJlIHdlIGFyZSBub3QgaW4gYW4gaW5maW5pdGUgbG9vcAogICAgICAgIGlmICggJHBhc3NfY291bnQgPT0gJG1heF9wYXNzZXMgKSB7CiAgICAgICAgICAgIGxvY2FsICQiID0gJykoJzsKICAgICAgICAgICAgV2Fybig8PEVPTSk7CkknbSB0aXJlZC4gV2Ugc2VlbSB0byBiZSBpbiBhbiBpbmZpbml0ZSBsb29wIHRyeWluZyB0byBleHBhbmQgYWxpYXNlcy4KSGVyZSBhcmUgdGhlIHJhdyBvcHRpb25zOwoocnJhd19vcHRpb25zKQpFT00KICAgICAgICAgICAgbXkgJG51bSA9IEBuZXdfYXJndjsKICAgICAgICAgICAgaWYgKCAkbnVtIDwgNTAgKSB7CiAgICAgICAgICAgICAgICBXYXJuKDw8RU9NKTsKQWZ0ZXIgJG1heF9wYXNzZXMgcGFzc2VzIGhlcmUgaXMgQVJHVgooQG5ld19hcmd2KQpFT00KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIFdhcm4oPDxFT00pOwpBZnRlciAkbWF4X3Bhc3NlcyBwYXNzZXMgQVJHViBoYXMgJG51bSBlbnRyaWVzCkVPTQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGNvbmZpZ19maWxlKSB7CiAgICAgICAgICAgICAgICBEaWUoPDwiRElFIik7ClBsZWFzZSBjaGVjayB5b3VyIGNvbmZpZ3VyYXRpb24gZmlsZSAkY29uZmlnX2ZpbGUgZm9yIGNpcmN1bGFyLXJlZmVyZW5jZXMuIApUbyBkZWFjdGl2YXRlIGl0LCB1c2UgLW5wcm8uCkRJRQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgRGllKDw8J0RJRScpOwpQcm9ncmFtIGJ1ZyAtIGNpcmN1bGFyLXJlZmVyZW5jZXMgaW4gdGhlICVleHBhbnNpb24gaGFzaCwgcHJvYmFibHkgZHVlIHRvCmEgcmVjZW50IHByb2dyYW0gY2hhbmdlLgpESUUKICAgICAgICAgICAgfQogICAgICAgIH0gICAgIyBlbmQgb2YgY2hlY2sgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMKICAgIH0gICAgIyBlbmQgb2YgbG9vcCBvdmVyIGFsbCBwYXNzZXMKICAgIHJldHVybjsKfQoKIyBEZWJ1ZyByb3V0aW5lIC0tIHRoaXMgd2lsbCBkdW1wIHRoZSBleHBhbnNpb24gaGFzaApzdWIgZHVtcF9zaG9ydF9uYW1lcyB7CiAgICBteSAkcmV4cGFuc2lvbiA9IHNoaWZ0OwogICAgcHJpbnQgU1RET1VUIDw8RU9NOwpMaXN0IG9mIHNob3J0IG5hbWVzLiAgVGhpcyBsaXN0IHNob3dzIGhvdyBhbGwgYWJicmV2aWF0aW9ucyBhcmUKdHJhbnNsYXRlZCBpbnRvIG90aGVyIGFiYnJldmlhdGlvbnMgYW5kLCBldmVudHVhbGx5LCBpbnRvIGxvbmcgbmFtZXMuCk5ldyBhYmJyZXZpYXRpb25zIG1heSBiZSBkZWZpbmVkIGluIGEgLnBlcmx0aWR5cmMgZmlsZS4gIApGb3IgYSBsaXN0IG9mIGFsbCBsb25nIG5hbWVzLCB1c2UgcGVybHRpZHkgLS1kdW1wLWxvbmctbmFtZXMgKC1kbG4pLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFT00KICAgIGZvcmVhY2ggbXkgJGFiYnJldiAoIHNvcnQga2V5cyAlJHJleHBhbnNpb24gKSB7CiAgICAgICAgbXkgQGxpc3QgPSBAeyAkcmV4cGFuc2lvbi0+eyRhYmJyZXZ9IH07CiAgICAgICAgcHJpbnQgU1RET1VUICIkYWJicmV2IC0tPiBAbGlzdFxuIjsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIGNoZWNrX3Ztc19maWxlbmFtZSB7CgogICAgIyBnaXZlbiBhIHZhbGlkIGZpbGVuYW1lICh0aGUgcGVybHRpZHkgaW5wdXQgZmlsZSkKICAgICMgY3JlYXRlIGEgbW9kaWZpZWQgZmlsZW5hbWUgYW5kIHNlcGFyYXRvciBjaGFyYWN0ZXIKICAgICMgc3VpdGFibGUgZm9yIFZNUy4KICAgICMKICAgICMgQ29udHJpYnV0ZWQgYnkgTWljaGFlbCBDYXJ0bWVsbAogICAgIwogICAgbXkgJGZpbGVuYW1lID0gc2hpZnQ7CiAgICBteSAoICRiYXNlLCAkcGF0aCApID0gZmlsZXBhcnNlKCRmaWxlbmFtZSk7CgogICAgIyByZW1vdmUgZXhwbGljaXQgOyB2ZXJzaW9uCiAgICAkYmFzZSA9fiBzLzstP1xkKiQvLwoKICAgICAgIyByZW1vdmUgZXhwbGljaXQgLiB2ZXJzaW9uIGllIHR3byBkb3RzIGluIGZpbGVuYW1lIE5CIF4gZXNjYXBlcyBhIGRvdAogICAgICBvciAkYmFzZSA9fiBzLyggICAgICAgICAgIyBiZWdpbiBjYXB0dXJlICQxCiAgICAgICAgICAgICAgICAgICg/Ol58W15eXSlcLiAjIG1hdGNoIGEgZG90IG5vdCBwcmVjZWRlZCBieSBhIGNhcmV0CiAgICAgICAgICAgICAgICAgICg/OiAgICAgICAgICAjIGZvbGxvd2VkIGJ5IG5vdGhpbmcKICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICMgb3IKICAgICAgICAgICAgICAgICAgICAuKlteXl0gICAgICMgYW55dGhpbmcgZW5kaW5nIGluIGEgbm9uIGNhcmV0CiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICkgICAgICAgICAgICAgICMgZW5kIGNhcHR1cmUgJDEKICAgICAgICAgICAgICAgIFwuLT9cZCokICAgICAgICMgbWF0Y2ggLiB2ZXJzaW9uIG51bWJlcgogICAgICAgICAgICAgIC8kMS94OwoKICAgICMgbm9ybWFsaXNlIGZpbGVuYW1lLCBpZiB0aGVyZSBhcmUgbm8gdW5lc2NhcGVkIGRvdHMgdGhlbiBhcHBlbmQgb25lCiAgICAkYmFzZSAuPSAnLicgdW5sZXNzICRiYXNlID1+IC8oPzpefFteXl0pXC4vOwoKICAgICMgaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIGFuIGV4dGVuc2lvbiB0aGVuIHdlIGp1c3QgYXBwZW5kIHRoZSBleHRlbnNpb24KICAgIG15ICRzZXBhcmF0b3IgPSAoICRiYXNlID1+IC9cLiQvICkgPyAiIiA6ICJfIjsKICAgIHJldHVybiAoICRwYXRoIC4gJGJhc2UsICRzZXBhcmF0b3IgKTsKfQoKc3ViIFdpbl9PU19UeXBlIHsKCiAgICAjIFRPRE86IGFyZSB0aGVzZSBtb3JlIHN0YW5kYXJkIG5hbWVzPwogICAgIyBXaW4zMnMgV2luOTUgV2luOTggV2luTWUgV2luTlQzLjUxIFdpbk5UNCBXaW4yMDAwIFdpblhQLy5OZXQgV2luMjAwMwoKICAgICMgUmV0dXJucyBhIHN0cmluZyB0aGF0IGRldGVybWluZXMgd2hhdCBNUyBPUyB3ZSBhcmUgb24uCiAgICAjIFJldHVybnMgd2luMzJzLDk1LDk4LE1lLE5UMy41MSxOVDQsMjAwMCxYUC8uTmV0LFdpbjIwMDMKICAgICMgUmV0dXJucyBibGFuayBzdHJpbmcgaWYgbm90IGFuIE1TIHN5c3RlbS4KICAgICMgT3JpZ2luYWwgY29kZSBjb250cmlidXRlZCBieTogWXZlcyBPcnRvbgogICAgIyBXZSBuZWVkIHRvIGtub3cgdGhpcyB0byBkZWNpZGUgd2hlcmUgdG8gbG9vayBmb3IgY29uZmlnIGZpbGVzCgogICAgbXkgJHJwZW5kaW5nX2NvbXBsYWludCA9IHNoaWZ0OwogICAgbXkgJG9zICAgICAgICAgICAgICAgICA9ICIiOwogICAgcmV0dXJuICRvcyB1bmxlc3MgJF5PID1+IC93aW4zMnxkb3MvaTsgICAgIyBpcyBpdCBhIE1TIGJveD8KCiAgICAjIFN5c3RlbXMgYnVpbHQgZnJvbSBQZXJsIHNvdXJjZSBtYXkgbm90IGhhdmUgV2luMzIucG0KICAgICMgQnV0IHByb2JhYmx5IGhhdmUgV2luMzI6OkdldE9TVmVyc2lvbigpIGFueXdheSBzbyB0aGUKICAgICMgZm9sbG93aW5nIGxpbmUgaXMgbm90ICdyZXF1aXJlZCc6CiAgICAjIHJldHVybiAkb3MgdW5sZXNzIGV2YWwoJ3JlcXVpcmUgV2luMzInKTsKCiAgICAjIFVzZSB0aGUgc3RhbmRhcmQgQVBJIGNhbGwgdG8gZGV0ZXJtaW5lIHRoZSB2ZXJzaW9uCiAgICBteSAoICR1bmRlZiwgJG1ham9yLCAkbWlub3IsICRidWlsZCwgJGlkICk7CiAgICBldmFsIHsgKCAkdW5kZWYsICRtYWpvciwgJG1pbm9yLCAkYnVpbGQsICRpZCApID0gV2luMzI6OkdldE9TVmVyc2lvbigpIH07CgogICAgIwogICAgIyAgICBOQU1FICAgICAgICAgICAgICAgICAgIElEICAgTUFKT1IgIE1JTk9SCiAgICAjICAgIFdpbmRvd3MgTlQgNCAgICAgICAgICAgMiAgICAgIDQgICAgICAgMAogICAgIyAgICBXaW5kb3dzIDIwMDAgICAgICAgICAgIDIgICAgICA1ICAgICAgIDAKICAgICMgICAgV2luZG93cyBYUCAgICAgICAgICAgICAyICAgICAgNSAgICAgICAxCiAgICAjICAgIFdpbmRvd3MgU2VydmVyIDIwMDMgICAgMiAgICAgIDUgICAgICAgMgoKICAgIHJldHVybiAid2luMzJzIiB1bmxlc3MgJGlkOyAgICAjIElmIGlkPT0wIHRoZW4gaXRzIGEgd2luMzJzIGJveC4KICAgICRvcyA9IHsgICAgICAgICAgICAgICAgICAgICAgICAjIE1hZ2ljIG51bWJlcnMgZnJvbSBNU0ROCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkb2N1bWVudGF0aW9uIG9mIEdldE9TVmVyc2lvbgogICAgICAgIDEgPT4gewogICAgICAgICAgICAwICA9PiAiOTUiLAogICAgICAgICAgICAxMCA9PiAiOTgiLAogICAgICAgICAgICA5MCA9PiAiTWUiCiAgICAgICAgfSwKICAgICAgICAyID0+IHsKICAgICAgICAgICAgMCAgPT4gIjIwMDAiLCAgICAgICMgb3IgTlQgNCwgc2VlIGJlbG93CiAgICAgICAgICAgIDEgID0+ICJYUC8uTmV0IiwKICAgICAgICAgICAgMiAgPT4gIldpbjIwMDMiLAogICAgICAgICAgICA1MSA9PiAiTlQzLjUxIgogICAgICAgIH0KICAgIH0tPnskaWR9LT57JG1pbm9yfTsKCiAgICAjIElmICRvcyBpcyB1bmRlZmluZWQsIHRoZSBhYm92ZSBjb2RlIGlzIG91dCBvZiBkYXRlLiAgU3VnZ2VzdGVkIHVwZGF0ZXMKICAgICMgYXJlIHdlbGNvbWUuCiAgICB1bmxlc3MgKCBkZWZpbmVkICRvcyApIHsKICAgICAgICAkb3MgPSAiIjsKCiAgICAgICAgIyBEZWFjdGl2YXRlZCB0aGlzIG1lc3NhZ2UgMjAxODAzMjIgYmVjYXVzZSBpdCB3YXMgbmVlZGxlc3NseQogICAgICAgICMgY2F1c2luZyBzb21lIHRlc3Qgc2NyaXB0cyB0byBmYWlsLiAgTmVlZCBoZWxwIGZyb20gc29tZW9uZQogICAgICAgICMgd2l0aCBleHBlcnRpc2UgaW4gV2luZG93cyB0byBkZWNpZGUgd2hhdCBpcyBwb3NzaWJsZSB3aXRoIHdpbmRvd3MuCiAgICAgICAgJHskcnBlbmRpbmdfY29tcGxhaW50fSAuPSA8PEVPUyBpZiAoMCk7CkVycm9yIHRyeWluZyB0byBkaXNjb3ZlciBXaW5fT1NfVHlwZTogJGlkOiRtYWpvcjokbWlub3IgSGFzIG5vIG5hbWUgb2YgcmVjb3JkIQpXZSB3b24ndCBiZSBhYmxlIHRvIGxvb2sgZm9yIGEgc3lzdGVtLXdpZGUgY29uZmlnIGZpbGUuCkVPUwogICAgfQoKICAgICMgVW5mb3J0dW5hdGVseSB0aGUgbG9naWMgdXNlZCBmb3IgdGhlIHZhcmlvdXMgdmVyc2lvbnMgaXNuJ3Qgc28gY2xldmVyLi4KICAgICMgc28gd2UgaGF2ZSB0byBoYW5kbGUgYW4gb3V0c2lkZSBjYXNlLgogICAgcmV0dXJuICggJG9zIGVxICIyMDAwIiAmJiAkbWFqb3IgIT0gNSApID8gIk5UNCIgOiAkb3M7Cn0KCnN1YiBpc191bml4IHsKICAgIHJldHVybgogICAgICAgICAoICReTyAhfiAvd2luMzJ8ZG9zL2kgKQogICAgICAmJiAoICReTyBuZSAnVk1TJyApCiAgICAgICYmICggJF5PIG5lICdPUzInICkKICAgICAgJiYgKCAkXk8gbmUgJ01hY09TJyApOwp9CgpzdWIgbG9va19mb3JfV2luZG93cyB7CgogICAgIyBkZXRlcm1pbmUgV2luZG93cyBzdWItdHlwZSBhbmQgbG9jYXRpb24gb2YKICAgICMgc3lzdGVtLXdpZGUgY29uZmlndXJhdGlvbiBmaWxlcwogICAgbXkgJHJwZW5kaW5nX2NvbXBsYWludCA9IHNoaWZ0OwogICAgbXkgJGlzX1dpbmRvd3MgICAgICAgICA9ICggJF5PID1+IC93aW4zMnxkb3MvaSApOwogICAgbXkgJFdpbmRvd3NfdHlwZTsKICAgICRXaW5kb3dzX3R5cGUgPSBXaW5fT1NfVHlwZSgkcnBlbmRpbmdfY29tcGxhaW50KSBpZiAkaXNfV2luZG93czsKICAgIHJldHVybiAoICRpc19XaW5kb3dzLCAkV2luZG93c190eXBlICk7Cn0KCnN1YiBmaW5kX2NvbmZpZ19maWxlIHsKCiAgICAjIGxvb2sgZm9yIGEgLnBlcmx0aWR5cmMgY29uZmlndXJhdGlvbiBmaWxlCiAgICAjIEZvciBXaW5kb3dzIGFsc28gbG9vayBmb3IgYSBmaWxlIG5hbWVkIHBlcmx0aWR5LmluaQogICAgbXkgKCAkaXNfV2luZG93cywgJFdpbmRvd3NfdHlwZSwgJHJjb25maWdfZmlsZV9jaGF0dGVyLAogICAgICAgICRycGVuZGluZ19jb21wbGFpbnQgKSA9IEBfOwoKICAgICR7JHJjb25maWdfZmlsZV9jaGF0dGVyfSAuPSAiIyBDb25maWcgZmlsZSBzZWFyY2guLi5zeXN0ZW0gcmVwb3J0ZWQgYXM6IjsKICAgIGlmICgkaXNfV2luZG93cykgewogICAgICAgICR7JHJjb25maWdfZmlsZV9jaGF0dGVyfSAuPSAiV2luZG93cyAkV2luZG93c190eXBlXG4iOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJHskcmNvbmZpZ19maWxlX2NoYXR0ZXJ9IC49ICIgJF5PXG4iOwogICAgfQoKICAgICMgc3ViIHRvIGNoZWNrIGZpbGUgZXhpc3RlbmNlIGFuZCByZWNvcmQgYWxsIHRlc3RzCiAgICBteSAkZXhpc3RzX2NvbmZpZ19maWxlID0gc3ViIHsKICAgICAgICBteSAkY29uZmlnX2ZpbGUgPSBzaGlmdDsKICAgICAgICByZXR1cm4gMCB1bmxlc3MgJGNvbmZpZ19maWxlOwogICAgICAgICR7JHJjb25maWdfZmlsZV9jaGF0dGVyfSAuPSAiIyBUZXN0aW5nOiAkY29uZmlnX2ZpbGVcbiI7CiAgICAgICAgcmV0dXJuIC1mICRjb25maWdfZmlsZTsKICAgIH07CgogICAgIyBTdWIgdG8gc2VhcmNoIHVwd2FyZCBmb3IgY29uZmlnIGZpbGUKICAgIG15ICRyZXNvbHZlX2NvbmZpZ19maWxlID0gc3ViIHsKCiAgICAgICAgIyByZXNvbHZlIDxkaXI+Ly4uLi88ZmlsZT4sIG1lYW5pbmcgbG9vayB1cHdhcmRzIGZyb20gZGlyZWN0b3J5CiAgICAgICAgbXkgJGNvbmZpZ19maWxlID0gc2hpZnQ7CiAgICAgICAgaWYgKCRjb25maWdfZmlsZSkgewogICAgICAgICAgICBpZiAoIG15ICggJHN0YXJ0X2RpciwgJHNlYXJjaF9maWxlICkgPQogICAgICAgICAgICAgICAgKCAkY29uZmlnX2ZpbGUgPX4gbXteKC4qKVwuXC5cLi8oLiopJH0gKSApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICR7JHJjb25maWdfZmlsZV9jaGF0dGVyfSAuPQogICAgICAgICAgICAgICAgICAiIyBTZWFyY2hpbmcgVXB3YXJkOiAkY29uZmlnX2ZpbGVcbiI7CiAgICAgICAgICAgICAgICAkc3RhcnRfZGlyID0gJy4nIGlmICEkc3RhcnRfZGlyOwogICAgICAgICAgICAgICAgJHN0YXJ0X2RpciA9IEN3ZDo6cmVhbHBhdGgoJHN0YXJ0X2Rpcik7CiAgICAgICAgICAgICAgICBpZiAoIG15ICRmb3VuZF9maWxlID0KICAgICAgICAgICAgICAgICAgICBmaW5kX2ZpbGVfdXB3YXJkcyggJHN0YXJ0X2RpciwgJHNlYXJjaF9maWxlICkgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRjb25maWdfZmlsZSA9ICRmb3VuZF9maWxlOwogICAgICAgICAgICAgICAgICAgICR7JHJjb25maWdfZmlsZV9jaGF0dGVyfSAuPSAiIyBGb3VuZDogJGNvbmZpZ19maWxlXG4iOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkY29uZmlnX2ZpbGU7CiAgICB9OwoKICAgIG15ICRjb25maWdfZmlsZTsKCiAgICAjIGxvb2sgaW4gY3VycmVudCBkaXJlY3RvcnkgZmlyc3QKICAgICRjb25maWdfZmlsZSA9ICIucGVybHRpZHlyYyI7CiAgICByZXR1cm4gJGNvbmZpZ19maWxlIGlmICRleGlzdHNfY29uZmlnX2ZpbGUtPigkY29uZmlnX2ZpbGUpOwogICAgaWYgKCRpc19XaW5kb3dzKSB7CiAgICAgICAgJGNvbmZpZ19maWxlID0gInBlcmx0aWR5LmluaSI7CiAgICAgICAgcmV0dXJuICRjb25maWdfZmlsZSBpZiAkZXhpc3RzX2NvbmZpZ19maWxlLT4oJGNvbmZpZ19maWxlKTsKICAgIH0KCiAgICAjIERlZmF1bHQgZW52aXJvbm1lbnQgdmFycy4KICAgIG15IEBlbnZzID0gcXcoUEVSTFRJRFkgSE9NRSk7CgogICAgIyBDaGVjayB0aGUgTlQvMmsvWFAgbG9jYXRpb25zLCBmaXJzdCBhIGxvY2FsIG1hY2hpbmUgZGVmLCB0aGVuIGEKICAgICMgbmV0d29yayBkZWYKICAgIHB1c2ggQGVudnMsIHF3KFVTRVJQUk9GSUxFIEhPTUVTSEFSRSkgaWYgJF5PID1+IC93aW4zMi9pOwoKICAgICMgTm93IGdvIHRocm91Z2ggdGhlIGVudmlyb25tZW50IC4uLgogICAgZm9yZWFjaCBteSAkdmFyIChAZW52cykgewogICAgICAgICR7JHJjb25maWdfZmlsZV9jaGF0dGVyfSAuPSAiIyBFeGFtaW5pbmc6IFwkRU5WeyR2YXJ9IjsKICAgICAgICBpZiAoIGRlZmluZWQoICRFTlZ7JHZhcn0gKSApIHsKICAgICAgICAgICAgJHskcmNvbmZpZ19maWxlX2NoYXR0ZXJ9IC49ICIgPSAkRU5WeyR2YXJ9XG4iOwoKICAgICAgICAgICAgIyB0ZXN0IEVOVnsgUEVSTFRJRFkgfSBhcyBmaWxlOgogICAgICAgICAgICBpZiAoICR2YXIgZXEgJ1BFUkxUSURZJyApIHsKICAgICAgICAgICAgICAgICRjb25maWdfZmlsZSA9ICIkRU5WeyR2YXJ9IjsKICAgICAgICAgICAgICAgICRjb25maWdfZmlsZSA9ICRyZXNvbHZlX2NvbmZpZ19maWxlLT4oJGNvbmZpZ19maWxlKTsKICAgICAgICAgICAgICAgIHJldHVybiAkY29uZmlnX2ZpbGUgaWYgJGV4aXN0c19jb25maWdfZmlsZS0+KCRjb25maWdfZmlsZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdGVzdCBFTlYgYXMgZGlyZWN0b3J5OgogICAgICAgICAgICAkY29uZmlnX2ZpbGUgPSBjYXRmaWxlKCAkRU5WeyR2YXJ9LCAiLnBlcmx0aWR5cmMiICk7CiAgICAgICAgICAgICRjb25maWdfZmlsZSA9ICRyZXNvbHZlX2NvbmZpZ19maWxlLT4oJGNvbmZpZ19maWxlKTsKICAgICAgICAgICAgcmV0dXJuICRjb25maWdfZmlsZSBpZiAkZXhpc3RzX2NvbmZpZ19maWxlLT4oJGNvbmZpZ19maWxlKTsKCiAgICAgICAgICAgIGlmICgkaXNfV2luZG93cykgewogICAgICAgICAgICAgICAgJGNvbmZpZ19maWxlID0gY2F0ZmlsZSggJEVOVnskdmFyfSwgInBlcmx0aWR5LmluaSIgKTsKICAgICAgICAgICAgICAgICRjb25maWdfZmlsZSA9ICRyZXNvbHZlX2NvbmZpZ19maWxlLT4oJGNvbmZpZ19maWxlKTsKICAgICAgICAgICAgICAgIHJldHVybiAkY29uZmlnX2ZpbGUgaWYgJGV4aXN0c19jb25maWdfZmlsZS0+KCRjb25maWdfZmlsZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICR7JHJjb25maWdfZmlsZV9jaGF0dGVyfSAuPSAiXG4iOwogICAgICAgIH0KICAgIH0KCiAgICAjIHRoZW4gbG9vayBmb3IgYSBzeXN0ZW0td2lkZSBkZWZpbml0aW9uCiAgICAjIHdoZXJlIHRvIGxvb2sgdmFyaWVzIHdpdGggT1MKICAgIGlmICgkaXNfV2luZG93cykgewoKICAgICAgICBpZiAoJFdpbmRvd3NfdHlwZSkgewogICAgICAgICAgICBteSAoICRvcywgJHN5c3RlbSwgJGFsbHVzZXJzICkgPQogICAgICAgICAgICAgIFdpbl9Db25maWdfTG9jcyggJHJwZW5kaW5nX2NvbXBsYWludCwgJFdpbmRvd3NfdHlwZSApOwoKICAgICAgICAgICAgIyBDaGVjayBBbGwgVXNlcnMgZGlyZWN0b3J5LCBpZiB0aGVyZSBpcyBvbmUuCiAgICAgICAgICAgICMgaS5lLiBDOlxEb2N1bWVudHMgYW5kIFNldHRpbmdzXFVzZXJccGVybHRpZHkuaW5pCiAgICAgICAgICAgIGlmICgkYWxsdXNlcnMpIHsKCiAgICAgICAgICAgICAgICAkY29uZmlnX2ZpbGUgPSBjYXRmaWxlKCAkYWxsdXNlcnMsICIucGVybHRpZHlyYyIgKTsKICAgICAgICAgICAgICAgIHJldHVybiAkY29uZmlnX2ZpbGUgaWYgJGV4aXN0c19jb25maWdfZmlsZS0+KCRjb25maWdfZmlsZSk7CgogICAgICAgICAgICAgICAgJGNvbmZpZ19maWxlID0gY2F0ZmlsZSggJGFsbHVzZXJzLCAicGVybHRpZHkuaW5pIiApOwogICAgICAgICAgICAgICAgcmV0dXJuICRjb25maWdfZmlsZSBpZiAkZXhpc3RzX2NvbmZpZ19maWxlLT4oJGNvbmZpZ19maWxlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBDaGVjayBzeXN0ZW0gZGlyZWN0b3J5LgogICAgICAgICAgICAjIHJldGFpbiBvbGQgY29kZSBpbiBjYXNlIHNvbWVvbmUgaGFzIGJlZW4gYWJsZSB0byBjcmVhdGUKICAgICAgICAgICAgIyBhIGZpbGUgd2l0aCBhIGxlYWRpbmcgcGVyaW9kLgogICAgICAgICAgICAkY29uZmlnX2ZpbGUgPSBjYXRmaWxlKCAkc3lzdGVtLCAiLnBlcmx0aWR5cmMiICk7CiAgICAgICAgICAgIHJldHVybiAkY29uZmlnX2ZpbGUgaWYgJGV4aXN0c19jb25maWdfZmlsZS0+KCRjb25maWdfZmlsZSk7CgogICAgICAgICAgICAkY29uZmlnX2ZpbGUgPSBjYXRmaWxlKCAkc3lzdGVtLCAicGVybHRpZHkuaW5pIiApOwogICAgICAgICAgICByZXR1cm4gJGNvbmZpZ19maWxlIGlmICRleGlzdHNfY29uZmlnX2ZpbGUtPigkY29uZmlnX2ZpbGUpOwogICAgICAgIH0KICAgIH0KCiAgICAjIFBsYWNlIHRvIGFkZCBjdXN0b21pemF0aW9uIGNvZGUgZm9yIG90aGVyIHN5c3RlbXMKICAgIGVsc2lmICggJF5PIGVxICdPUzInICkgewogICAgfQogICAgZWxzaWYgKCAkXk8gZXEgJ01hY09TJyApIHsKICAgIH0KICAgIGVsc2lmICggJF5PIGVxICdWTVMnICkgewogICAgfQoKICAgICMgQXNzdW1lIHNvbWUga2luZCBvZiBVbml4CiAgICBlbHNlIHsKCiAgICAgICAgJGNvbmZpZ19maWxlID0gIi91c3IvbG9jYWwvZXRjL3Blcmx0aWR5cmMiOwogICAgICAgIHJldHVybiAkY29uZmlnX2ZpbGUgaWYgJGV4aXN0c19jb25maWdfZmlsZS0+KCRjb25maWdfZmlsZSk7CgogICAgICAgICRjb25maWdfZmlsZSA9ICIvZXRjL3Blcmx0aWR5cmMiOwogICAgICAgIHJldHVybiAkY29uZmlnX2ZpbGUgaWYgJGV4aXN0c19jb25maWdfZmlsZS0+KCRjb25maWdfZmlsZSk7CiAgICB9CgogICAgIyBDb3VsZG4ndCBmaW5kIGEgY29uZmlnIGZpbGUKICAgIHJldHVybjsKfQoKc3ViIFdpbl9Db25maWdfTG9jcyB7CgogICAgIyBJbiBzY2FsYXIgY29udGV4dCByZXR1cm5zIHRoZSBPUyBuYW1lICg5NSA5OCBNRSBOVDMuNTEgTlQ0IDIwMDAgWFApLAogICAgIyBvciB1bmRlZiBpZiBpdHMgbm90IGEgd2luMzIgT1MuICBJbiBsaXN0IGNvbnRleHQgcmV0dXJucyBPUywgU3lzdGVtCiAgICAjIERpcmVjdG9yeSwgYW5kIEFsbCBVc2VycyBEaXJlY3RvcnkuICBBbGwgVXNlcnMgd2lsbCBiZSBlbXB0eSBvbiBhCiAgICAjIDl4L01lIGJveC4gIENvbnRyaWJ1dGVkIGJ5OiBZdmVzIE9ydG9uLgoKICAgICMgT3JpZ2luYWwgY29kaW5nOgogICAgIyBteSAkcnBlbmRpbmdfY29tcGxhaW50ID0gc2hpZnQ7CiAgICAjIG15ICRvcyA9IChAXykgPyBzaGlmdCA6IFdpbl9PU19UeXBlKCk7CgogICAgbXkgKCAkcnBlbmRpbmdfY29tcGxhaW50LCAkb3MgKSA9IEBfOwogICAgaWYgKCAhJG9zICkgeyAkb3MgPSBXaW5fT1NfVHlwZSgpOyB9CgogICAgcmV0dXJuIHVubGVzcyAkb3M7CgogICAgbXkgJHN5c3RlbSAgID0gIiI7CiAgICBteSAkYWxsdXNlcnMgPSAiIjsKCiAgICBpZiAoICRvcyA9fiAvOVs1OF18TWUvICkgewogICAgICAgICRzeXN0ZW0gPSAiQzovV2luZG93cyI7CiAgICB9CiAgICBlbHNpZiAoICRvcyA9fiAvTlR8WFB8MjAwPy8gKSB7CiAgICAgICAgJHN5c3RlbSA9ICggJG9zID1+IC9YUC8gKSA/ICJDOi9XaW5kb3dzLyIgOiAiQzovV2luTlQvIjsKICAgICAgICAkYWxsdXNlcnMgPQogICAgICAgICAgKCAkb3MgPX4gL05ULyApCiAgICAgICAgICA/ICJDOi9XaW5OVC9wcm9maWxlcy9BbGwgVXNlcnMvIgogICAgICAgICAgOiAiQzovRG9jdW1lbnRzIGFuZCBTZXR0aW5ncy9BbGwgVXNlcnMvIjsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIFRoaXMgY3VycmVudGx5IHdvdWxkIG9ubHkgaGFwcGVuIG9uIGEgd2luMzJzIGNvbXB1dGVyLiAgSSBkb24ndCBoYXZlCiAgICAgICAgIyBvbmUgdG8gdGVzdCwgc28gSSBhbSB1bnN1cmUgaG93IHRvIHByb2NlZWQuICBTdWdnZXN0aW9ucyB3ZWxjb21lIQogICAgICAgICR7JHJwZW5kaW5nX2NvbXBsYWludH0gLj0KIkkgZG9udCBrbm93IGEgc2Vuc2libGUgcGxhY2UgdG8gbG9vayBmb3IgY29uZmlnIGZpbGVzIG9uIGFuICRvcyBzeXN0ZW0uXG4iOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIHJldHVybiB3YW50YXJyYXkgPyAoICRvcywgJHN5c3RlbSwgJGFsbHVzZXJzICkgOiAkb3M7Cn0KCnN1YiBkdW1wX2NvbmZpZ19maWxlIHsKICAgIG15ICggJGZoLCAkY29uZmlnX2ZpbGUsICRyY29uZmlnX2ZpbGVfY2hhdHRlciApID0gQF87CiAgICBwcmludCBTVERPVVQgIiQkcmNvbmZpZ19maWxlX2NoYXR0ZXIiOwogICAgaWYgKCRmaCkgewogICAgICAgIHByaW50IFNURE9VVCAiIyBEdW1wIG9mIGZpbGU6ICckY29uZmlnX2ZpbGUnXG4iOwogICAgICAgIHdoaWxlICggbXkgJGxpbmUgPSAkZmgtPmdldGxpbmUoKSApIHsgcHJpbnQgU1RET1VUICRsaW5lIH0KICAgICAgICBldmFsIHsgJGZoLT5jbG9zZSgpIH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBwcmludCBTVERPVVQgIiMgLi4ubm8gY29uZmlnIGZpbGUgZm91bmRcbiI7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiByZWFkX2NvbmZpZ19maWxlIHsKCiAgICBteSAoICRmaCwgJGNvbmZpZ19maWxlLCAkcmV4cGFuc2lvbiApID0gQF87CiAgICBteSBAY29uZmlnX2xpc3QgPSAoKTsKCiAgICAjIGZpbGUgaXMgYmFkIGlmIG5vbi1lbXB0eSAkZGVhdGhfbWVzc2FnZSBpcyByZXR1cm5lZAogICAgbXkgJGRlYXRoX21lc3NhZ2UgPSAiIjsKCiAgICBteSAkbmFtZSA9IHVuZGVmOwogICAgbXkgJGxpbmVfbm87CiAgICBteSAkb3BlbmluZ19icmFjZV9saW5lOwogICAgd2hpbGUgKCBteSAkbGluZSA9ICRmaC0+Z2V0bGluZSgpICkgewogICAgICAgICRsaW5lX25vKys7CiAgICAgICAgY2hvbXAgJGxpbmU7CiAgICAgICAgKCAkbGluZSwgJGRlYXRoX21lc3NhZ2UgKSA9CiAgICAgICAgICBzdHJpcF9jb21tZW50KCAkbGluZSwgJGNvbmZpZ19maWxlLCAkbGluZV9ubyApOwogICAgICAgIGxhc3QgaWYgKCRkZWF0aF9tZXNzYWdlKTsKICAgICAgICBuZXh0IHVubGVzcyAkbGluZTsKICAgICAgICAkbGluZSA9fiBzL15ccyooLio/KVxzKiQvJDEvOyAgICAjIHRyaW0gYm90aCBlbmRzCiAgICAgICAgbmV4dCB1bmxlc3MgJGxpbmU7CgogICAgICAgIG15ICRib2R5ID0gJGxpbmU7CgogICAgICAgICMgTG9vayBmb3IgY29tcGxldGUgb3IgcGFydGlhbCBhYmJyZXZpYXRpb24gZGVmaW5pdGlvbiBvZiB0aGUgZm9ybQogICAgICAgICMgICAgIG5hbWUgeyBib2R5IH0gICBvciAgbmFtZSB7ICAgb3IgICAgbmFtZSB7IGJvZHkKICAgICAgICAjIFNlZSBydWxlcyBpbiBwZXJsdGlkeSdzIHBlcmxkb2MgcGFnZQogICAgICAgICMgU2VjdGlvbjogT3RoZXIgQ29udHJvbHMgLSBDcmVhdGluZyBhIG5ldyBhYmJyZXZpYXRpb24KICAgICAgICBpZiAoICRsaW5lID1+IC9eKChcdyspXHMqXHspKC4qKT8kLyApIHsKICAgICAgICAgICAgbXkgJG9sZG5hbWUgPSAkbmFtZTsKICAgICAgICAgICAgKCAkbmFtZSwgJGJvZHkgKSA9ICggJDIsICQzICk7CgogICAgICAgICAgICAjIENhbm5vdCBzdGFydCBuZXcgYWJicmV2aWF0aW9uIHVubGVzcyBvbGQgYWJicmV2aWF0aW9uIGlzIGNvbXBsZXRlCiAgICAgICAgICAgIGxhc3QgaWYgKCRvcGVuaW5nX2JyYWNlX2xpbmUpOwoKICAgICAgICAgICAgJG9wZW5pbmdfYnJhY2VfbGluZSA9ICRsaW5lX25vIHVubGVzcyAoICRib2R5ICYmICRib2R5ID1+IHMvXH0kLy8gKTsKCiAgICAgICAgICAgICMgaGFuZGxlIGEgbmV3IGFsaWFzIGRlZmluaXRpb24KICAgICAgICAgICAgaWYgKCAkeyRyZXhwYW5zaW9ufXskbmFtZX0gKSB7CiAgICAgICAgICAgICAgICBsb2NhbCAkIiA9ICcpKCc7CiAgICAgICAgICAgICAgICBteSBAbmFtZXMgPSBzb3J0IGtleXMgJSRyZXhwYW5zaW9uOwogICAgICAgICAgICAgICAgJGRlYXRoX21lc3NhZ2UgPQogICAgICAgICAgICAgICAgICAgICJIZXJlIGlzIGEgbGlzdCBvZiBhbGwgaW5zdGFsbGVkIGFsaWFzZXNcbihAbmFtZXMpXG4iCiAgICAgICAgICAgICAgICAgIC4gIkF0dGVtcHRpbmcgdG8gcmVkZWZpbmUgYWxpYXMgKCRuYW1lKSBpbiBjb25maWcgZmlsZSAkY29uZmlnX2ZpbGUgbGluZSAkLlxuIjsKICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHskcmV4cGFuc2lvbn17JG5hbWV9ID0gW107CiAgICAgICAgfQoKICAgICAgICAjIGxlYWRpbmcgb3BlbmluZyBicmFjZXMgbm90IGFsbG93ZWQKICAgICAgICBlbHNpZiAoICRsaW5lID1+IC9eey8gKSB7CiAgICAgICAgICAgICRvcGVuaW5nX2JyYWNlX2xpbmUgPSB1bmRlZjsKICAgICAgICAgICAgJGRlYXRoX21lc3NhZ2UgPQogICAgICAgICAgICAgICJVbmV4cGVjdGVkICd7JyBhdCBsaW5lICRsaW5lX25vIGluIGNvbmZpZyBmaWxlICckY29uZmlnX2ZpbGUnXG4iOwogICAgICAgICAgICBsYXN0OwogICAgICAgIH0KCiAgICAgICAgIyBMb29rIGZvciBhYmJyZXZpYXRpb24gY2xvc2luZzogICAgYm9keSB9ICAgb3IgICAgfQogICAgICAgIGVsc2lmICggJGxpbmUgPX4gL14oLiopP1x9JC8gKSB7CiAgICAgICAgICAgICRib2R5ID0gJDE7CiAgICAgICAgICAgIGlmICgkb3BlbmluZ19icmFjZV9saW5lKSB7CiAgICAgICAgICAgICAgICAkb3BlbmluZ19icmFjZV9saW5lID0gdW5kZWY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkZGVhdGhfbWVzc2FnZSA9CiJVbmV4cGVjdGVkICd9JyBhdCBsaW5lICRsaW5lX25vIGluIGNvbmZpZyBmaWxlICckY29uZmlnX2ZpbGUnXG4iOwogICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBOb3cgc3RvcmUgYW55IHBhcmFtZXRlcnMKICAgICAgICBpZiAoJGJvZHkpIHsKCiAgICAgICAgICAgIG15ICggJHJib2R5X3BhcnRzLCAkbXNnICkgPSBwYXJzZV9hcmdzKCRib2R5KTsKICAgICAgICAgICAgaWYgKCRtc2cpIHsKICAgICAgICAgICAgICAgICRkZWF0aF9tZXNzYWdlID0gPDxFT007CkVycm9yIHJlYWRpbmcgZmlsZSAnJGNvbmZpZ19maWxlJyBhdCBsaW5lIG51bWJlciAkbGluZV9uby4KJG1zZwpQbGVhc2UgZml4IHRoaXMgbGluZSBvciB1c2UgLW5wcm8gdG8gYXZvaWQgcmVhZGluZyB0aGlzIGZpbGUKRU9NCiAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJG5hbWUpIHsKCiAgICAgICAgICAgICAgICAjIHJlbW92ZSBsZWFkaW5nIGRhc2hlcyBpZiB0aGlzIGlzIGFuIGFsaWFzCiAgICAgICAgICAgICAgICBmb3JlYWNoICggQHskcmJvZHlfcGFydHN9ICkgeyBzL15cLSsvLzsgfQogICAgICAgICAgICAgICAgcHVzaCBAeyAkeyRyZXhwYW5zaW9ufXskbmFtZX0gfSwgQHskcmJvZHlfcGFydHN9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcHVzaCggQGNvbmZpZ19saXN0LCBAeyRyYm9keV9wYXJ0c30gKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJG9wZW5pbmdfYnJhY2VfbGluZSkgewogICAgICAgICRkZWF0aF9tZXNzYWdlID0KIkRpZG4ndCBzZWUgYSAnfScgdG8gbWF0Y2ggdGhlICd7JyBhdCBsaW5lICRvcGVuaW5nX2JyYWNlX2xpbmUgaW4gY29uZmlnIGZpbGUgJyRjb25maWdfZmlsZSdcbiI7CiAgICB9CiAgICBldmFsIHsgJGZoLT5jbG9zZSgpIH07CiAgICByZXR1cm4gKCBcQGNvbmZpZ19saXN0LCAkZGVhdGhfbWVzc2FnZSApOwp9CgpzdWIgc3RyaXBfY29tbWVudCB7CgogICAgIyBTdHJpcCBhbnkgY29tbWVudCBmcm9tIGEgY29tbWFuZCBsaW5lCiAgICBteSAoICRpbnN0ciwgJGNvbmZpZ19maWxlLCAkbGluZV9ubyApID0gQF87CiAgICBteSAkbXNnID0gIiI7CgogICAgIyBjaGVjayBmb3IgZnVsbC1saW5lIGNvbW1lbnQKICAgIGlmICggJGluc3RyID1+IC9eXHMqIy8gKSB7CiAgICAgICAgcmV0dXJuICggIiIsICRtc2cgKTsKICAgIH0KCiAgICAjIG5vdGhpbmcgdG8gZG8gaWYgbm8gY29tbWVudHMKICAgIGlmICggJGluc3RyICF+IC8jLyApIHsKICAgICAgICByZXR1cm4gKCAkaW5zdHIsICRtc2cgKTsKICAgIH0KCiAgICAjIGhhbmRsZSBjYXNlIG9mIG5vIHF1b3RlcwogICAgZWxzaWYgKCAkaW5zdHIgIX4gL1snIl0vICkgewoKICAgICAgICAjIFdlIG5vdyByZXF1aXJlIGEgc3BhY2UgYmVmb3JlIHRoZSAjIG9mIGEgc2lkZSBjb21tZW50CiAgICAgICAgIyB0aGlzIGFsbG93cyBzb21ldGhpbmcgbGlrZToKICAgICAgICAjICAgIC1zYmNwPSMKICAgICAgICAjIE90aGVyd2lzZSwgaXQgd291bGQgaGF2ZSB0byBiZSBxdW90ZWQ6CiAgICAgICAgIyAgICAtc2JjcD0nIycKICAgICAgICAkaW5zdHIgPX4gcy9ccytcIy4qJC8vOwogICAgICAgIHJldHVybiAoICRpbnN0ciwgJG1zZyApOwogICAgfQoKICAgICMgaGFuZGxlIGNvbW1lbnRzIGFuZCBxdW90ZXMKICAgIG15ICRvdXRzdHIgICAgID0gIiI7CiAgICBteSAkcXVvdGVfY2hhciA9ICIiOwogICAgd2hpbGUgKDEpIHsKCiAgICAgICAgIyBsb29raW5nIGZvciBlbmRpbmcgcXVvdGUgY2hhcmFjdGVyCiAgICAgICAgaWYgKCRxdW90ZV9jaGFyKSB7CiAgICAgICAgICAgIGlmICggJGluc3RyID1+IC9cRygkcXVvdGVfY2hhcikvZ2MgKSB7CiAgICAgICAgICAgICAgICAkcXVvdGVfY2hhciA9ICIiOwogICAgICAgICAgICAgICAgJG91dHN0ciAuPSAkMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRpbnN0ciA9fiAvXEcoLikvZ2MgKSB7CiAgICAgICAgICAgICAgICAkb3V0c3RyIC49ICQxOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGVycm9yLi53ZSByZWFjaGVkIHRoZSBlbmQgd2l0aG91dCBzZWVpbmcgdGhlIGVuZGluZyBxdW90ZSBjaGFyCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJG1zZyA9IDw8RU9NOwpFcnJvciByZWFkaW5nIGZpbGUgJGNvbmZpZ19maWxlIGF0IGxpbmUgbnVtYmVyICRsaW5lX25vLgpEaWQgbm90IHNlZSBlbmRpbmcgcXVvdGUgY2hhcmFjdGVyIDwkcXVvdGVfY2hhcj4gaW4gdGhpcyB0ZXh0OgokaW5zdHIKUGxlYXNlIGZpeCB0aGlzIGxpbmUgb3IgdXNlIC1ucHJvIHRvIGF2b2lkIHJlYWRpbmcgdGhpcyBmaWxlCkVPTQogICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhY2N1bXVsYXRpbmcgY2hhcmFjdGVycyBhbmQgbG9va2luZyBmb3Igc3RhcnQgb2YgYSBxdW90ZWQgc3RyaW5nCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGlmICggJGluc3RyID1+IC9cRyhbXCJcJ10pL2djICkgewogICAgICAgICAgICAgICAgJG91dHN0ciAuPSAkMTsKICAgICAgICAgICAgICAgICRxdW90ZV9jaGFyID0gJDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgTm90ZTogbm90IHlldCBlbmZvcmNpbmcgdGhlIHNwYWNlLWJlZm9yZS1oYXNoIHJ1bGUgZm9yIHNpZGUKICAgICAgICAgICAgIyBjb21tZW50cyBpZiB0aGUgcGFyYW1ldGVyIGlzIHF1b3RlZC4KICAgICAgICAgICAgZWxzaWYgKCAkaW5zdHIgPX4gL1xHIy9nYyApIHsKICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkaW5zdHIgPX4gL1xHKC4pL2djICkgewogICAgICAgICAgICAgICAgJG91dHN0ciAuPSAkMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gKCAkb3V0c3RyLCAkbXNnICk7Cn0KCnN1YiBwYXJzZV9hcmdzIHsKCiAgICAjIFBhcnNlIGEgY29tbWFuZCBzdHJpbmcgY29udGFpbmluZyBtdWx0aXBsZSBzdHJpbmcgd2l0aCBwb3NzaWJsZQogICAgIyBxdW90ZXMsIGludG8gaW5kaXZpZHVhbCBjb21tYW5kcy4gIEl0IG1pZ2h0IGxvb2sgbGlrZSB0aGlzLCBmb3IgZXhhbXBsZToKICAgICMKICAgICMgICAgLXdiYT0iICsgLSAiICAtc29tZS10aGluZyAtd2JiPScuICYmIHx8JwogICAgIwogICAgIyBUaGVyZSBpcyBubyBuZWVkLCBhdCBwcmVzZW50LCB0byBoYW5kbGUgZXNjYXBlZCBxdW90ZSBjaGFyYWN0ZXJzLgogICAgIyAoVGhleSBhcmUgbm90IHBlcmx0aWR5IHRva2Vucywgc28gbmVlZG4ndCBiZSBpbiBzdHJpbmdzKS4KCiAgICBteSAoJGJvZHkpICAgICA9IEBfOwogICAgbXkgQGJvZHlfcGFydHMgPSAoKTsKICAgIG15ICRxdW90ZV9jaGFyID0gIiI7CiAgICBteSAkcGFydCAgICAgICA9ICIiOwogICAgbXkgJG1zZyAgICAgICAgPSAiIjsKICAgIHdoaWxlICgxKSB7CgogICAgICAgICMgbG9va2luZyBmb3IgZW5kaW5nIHF1b3RlIGNoYXJhY3RlcgogICAgICAgIGlmICgkcXVvdGVfY2hhcikgewogICAgICAgICAgICBpZiAoICRib2R5ID1+IC9cRygkcXVvdGVfY2hhcikvZ2MgKSB7CiAgICAgICAgICAgICAgICAkcXVvdGVfY2hhciA9ICIiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJGJvZHkgPX4gL1xHKC4pL2djICkgewogICAgICAgICAgICAgICAgJHBhcnQgLj0gJDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZXJyb3IuLndlIHJlYWNoZWQgdGhlIGVuZCB3aXRob3V0IHNlZWluZyB0aGUgZW5kaW5nIHF1b3RlIGNoYXIKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoIGxlbmd0aCgkcGFydCkgKSB7IHB1c2ggQGJvZHlfcGFydHMsICRwYXJ0OyB9CiAgICAgICAgICAgICAgICAkbXNnID0gPDxFT007CkRpZCBub3Qgc2VlIGVuZGluZyBxdW90ZSBjaGFyYWN0ZXIgPCRxdW90ZV9jaGFyPiBpbiB0aGlzIHRleHQ6CiRib2R5CkVPTQogICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhY2N1bXVsYXRpbmcgY2hhcmFjdGVycyBhbmQgbG9va2luZyBmb3Igc3RhcnQgb2YgYSBxdW90ZWQgc3RyaW5nCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGlmICggJGJvZHkgPX4gL1xHKFtcIlwnXSkvZ2MgKSB7CiAgICAgICAgICAgICAgICAkcXVvdGVfY2hhciA9ICQxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJGJvZHkgPX4gL1xHKFxzKykvZ2MgKSB7CiAgICAgICAgICAgICAgICBpZiAoIGxlbmd0aCgkcGFydCkgKSB7IHB1c2ggQGJvZHlfcGFydHMsICRwYXJ0OyB9CiAgICAgICAgICAgICAgICAkcGFydCA9ICIiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJGJvZHkgPX4gL1xHKC4pL2djICkgewogICAgICAgICAgICAgICAgJHBhcnQgLj0gJDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoIGxlbmd0aCgkcGFydCkgKSB7IHB1c2ggQGJvZHlfcGFydHMsICRwYXJ0OyB9CiAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuICggXEBib2R5X3BhcnRzLCAkbXNnICk7Cn0KCnN1YiBkdW1wX2xvbmdfbmFtZXMgewoKICAgIG15IEBuYW1lcyA9IEBfOwogICAgcHJpbnQgU1RET1VUIDw8RU9NOwojIENvbW1hbmQgbGluZSBsb25nIG5hbWVzIChwYXNzZWQgdG8gR2V0T3B0aW9ucykKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIGhlcmUgaXMgYSBzdW1tYXJ5IG9mIHRoZSBHZXRvcHQgY29kZXM6CiMgPG5vbmU+IGRvZXMgbm90IHRha2UgYW4gYXJndW1lbnQKIyA9cyB0YWtlcyBhIG1hbmRhdG9yeSBzdHJpbmcKIyA6cyB0YWtlcyBhbiBvcHRpb25hbCBzdHJpbmcKIyA9aSB0YWtlcyBhIG1hbmRhdG9yeSBpbnRlZ2VyCiMgOmkgdGFrZXMgYW4gb3B0aW9uYWwgaW50ZWdlcgojICEgZG9lcyBub3QgdGFrZSBhbiBhcmd1bWVudCBhbmQgbWF5IGJlIG5lZ2F0ZWQKIyAgaS5lLiwgLWZvbyBhbmQgLW5vZm9vIGFyZSBhbGxvd2VkCiMgYSBkb3VibGUgZGFzaCBzaWduYWxzIHRoZSBlbmQgb2YgdGhlIG9wdGlvbnMgbGlzdAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCgogICAgZm9yZWFjaCBteSAkbmFtZSAoIHNvcnQgQG5hbWVzICkgeyBwcmludCBTVERPVVQgIiRuYW1lXG4iIH0KICAgIHJldHVybjsKfQoKc3ViIGR1bXBfZGVmYXVsdHMgewogICAgbXkgQGRlZmF1bHRzID0gQF87CiAgICBwcmludCBTVERPVVQgIkRlZmF1bHQgY29tbWFuZCBsaW5lIG9wdGlvbnM6XG4iOwogICAgZm9yZWFjaCBteSAkbGluZSAoIHNvcnQgQGRlZmF1bHRzICkgeyBwcmludCBTVERPVVQgIiRsaW5lXG4iIH0KICAgIHJldHVybjsKfQoKc3ViIHJlYWRhYmxlX29wdGlvbnMgewoKICAgICMgcmV0dXJuIG9wdGlvbnMgZm9yIHRoaXMgcnVuIGFzIGEgc3RyaW5nIHdoaWNoIGNvdWxkIGJlCiAgICAjIHB1dCBpbiBhIHBlcmx0aWR5cmMgZmlsZQogICAgbXkgKCAkck9wdHMsICRyb3B0aW9uX3N0cmluZyApID0gQF87CiAgICBteSAlR2V0b3B0X2ZsYWdzOwogICAgbXkgJHJHZXRvcHRfZmxhZ3MgICAgPSBcJUdldG9wdF9mbGFnczsKICAgIG15ICRyZWFkYWJsZV9vcHRpb25zID0gIiMgRmluYWwgcGFyYW1ldGVyIHNldCBmb3IgdGhpcyBydW4uXG4iOwogICAgJHJlYWRhYmxlX29wdGlvbnMgLj0KICAgICAgIiMgU2VlIHV0aWxpdHkgJ3Blcmx0aWR5cmNfZHVtcC5wbCcgZm9yIG5pY2VyIGZvcm1hdHRpbmcuXG4iOwogICAgZm9yZWFjaCBteSAkb3B0ICggQHskcm9wdGlvbl9zdHJpbmd9ICkgewogICAgICAgIG15ICRmbGFnID0gIiI7CiAgICAgICAgaWYgKCAkb3B0ID1+IC8oLiopKCF8PS4qKSQvICkgewogICAgICAgICAgICAkb3B0ICA9ICQxOwogICAgICAgICAgICAkZmxhZyA9ICQyOwogICAgICAgIH0KICAgICAgICBpZiAoIGRlZmluZWQoICRyT3B0cy0+eyRvcHR9ICkgKSB7CiAgICAgICAgICAgICRyR2V0b3B0X2ZsYWdzLT57JG9wdH0gPSAkZmxhZzsKICAgICAgICB9CiAgICB9CiAgICBmb3JlYWNoIG15ICRrZXkgKCBzb3J0IGtleXMgJXskck9wdHN9ICkgewogICAgICAgIG15ICRmbGFnICAgPSAkckdldG9wdF9mbGFncy0+eyRrZXl9OwogICAgICAgIG15ICR2YWx1ZSAgPSAkck9wdHMtPnska2V5fTsKICAgICAgICBteSAkcHJlZml4ID0gJy0tJzsKICAgICAgICBteSAkc3VmZml4ID0gIiI7CiAgICAgICAgaWYgKCRmbGFnKSB7CiAgICAgICAgICAgIGlmICggJGZsYWcgPX4gL149LyApIHsKICAgICAgICAgICAgICAgIGlmICggJHZhbHVlICF+IC9eXGQrJC8gKSB7ICR2YWx1ZSA9ICciJyAuICR2YWx1ZSAuICciJyB9CiAgICAgICAgICAgICAgICAkc3VmZml4ID0gIj0iIC4gJHZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJGZsYWcgPX4gL14hLyApIHsKICAgICAgICAgICAgICAgICRwcmVmaXggLj0gIm5vIiB1bmxlc3MgKCR2YWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBzaG91bGRuJ3QgaGFwcGVuCiAgICAgICAgICAgICAgICAkcmVhZGFibGVfb3B0aW9ucyAuPQogICAgICAgICAgICAgICAgICAiIyBFUlJPUiBpbiBkdW1wX29wdGlvbnM6IHVucmVjb2duaXplZCBmbGFnICRmbGFnIGZvciAka2V5XG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRyZWFkYWJsZV9vcHRpb25zIC49ICRwcmVmaXggLiAka2V5IC4gJHN1ZmZpeCAuICJcbiI7CiAgICB9CiAgICByZXR1cm4gJHJlYWRhYmxlX29wdGlvbnM7Cn0KCnN1YiBzaG93X3ZlcnNpb24gewogICAgcHJpbnQgU1RET1VUIDw8IkVPTSI7ClRoaXMgaXMgcGVybHRpZHksIHYkVkVSU0lPTiAKCkNvcHlyaWdodCAyMDAwLTIwMjAsIFN0ZXZlIEhhbmNvY2sKClBlcmx0aWR5IGlzIGZyZWUgc29mdHdhcmUgYW5kIG1heSBiZSBjb3BpZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2hpY2ggaXMgaW5jbHVkZWQgaW4gdGhlIGRpc3RyaWJ1dGlvbiBmaWxlcy4KCkNvbXBsZXRlIGRvY3VtZW50YXRpb24gZm9yIHBlcmx0aWR5IGNhbiBiZSBmb3VuZCB1c2luZyAnbWFuIHBlcmx0aWR5JwpvciBvbiB0aGUgaW50ZXJuZXQgYXQgaHR0cDovL3Blcmx0aWR5LnNvdXJjZWZvcmdlLm5ldC4KRU9NCiAgICByZXR1cm47Cn0KCnN1YiB1c2FnZSB7CgogICAgcHJpbnQgU1RET1VUIDw8RU9GOwpUaGlzIGlzIHBlcmx0aWR5IHZlcnNpb24gJFZFUlNJT04sIGEgcGVybCBzY3JpcHQgaW5kZW50ZXIuICBVc2FnZToKCiAgICBwZXJsdGlkeSBbIG9wdGlvbnMgXSBmaWxlMSBmaWxlMiBmaWxlMyAuLi4KICAgICAgICAgICAgKG91dHB1dCBnb2VzIHRvIGZpbGUxLnRkeSwgZmlsZTIudGR5LCBmaWxlMy50ZHksIC4uLikKICAgIHBlcmx0aWR5IFsgb3B0aW9ucyBdIGZpbGUxIC1vIG91dGZpbGUKICAgIHBlcmx0aWR5IFsgb3B0aW9ucyBdIGZpbGUxIC1zdCA+b3V0ZmlsZQogICAgcGVybHRpZHkgWyBvcHRpb25zIF0gPGluZmlsZSA+b3V0ZmlsZQoKT3B0aW9ucyBoYXZlIHNob3J0IGFuZCBsb25nIGZvcm1zLiBTaG9ydCBmb3JtcyBhcmUgc2hvd247IHNlZQptYW4gcGFnZXMgZm9yIGxvbmcgZm9ybXMuICBOb3RlOiAnPXMnIGluZGljYXRlcyBhIHJlcXVpcmVkIHN0cmluZywKYW5kICc9bicgaW5kaWNhdGVzIGEgcmVxdWlyZWQgaW50ZWdlci4KCkkvTyBjb250cm9sCiAtaCAgICAgIHNob3cgdGhpcyBoZWxwCiAtbz1maWxlIG5hbWUgb2YgdGhlIG91dHB1dCBmaWxlIChvbmx5IGlmIHNpbmdsZSBpbnB1dCBmaWxlKQogLW9leHQ9cyBjaGFuZ2Ugb3V0cHV0IGV4dGVuc2lvbiBmcm9tICd0ZHknIHRvIHMKIC1vcGF0aD1wYXRoICBjaGFuZ2UgcGF0aCB0byBiZSAncGF0aCcgZm9yIG91dHB1dCBmaWxlcwogLWIgICAgICBiYWNrdXAgb3JpZ2luYWwgdG8gLmJhayBhbmQgbW9kaWZ5IGZpbGUgaW4tcGxhY2UKIC1iZXh0PXMgY2hhbmdlIGRlZmF1bHQgYmFja3VwIGV4dGVuc2lvbiBmcm9tICdiYWsnIHRvIHMKIC1xICAgICAgZGVhY3RpdmF0ZSBlcnJvciBtZXNzYWdlcyAoZm9yIHJ1bm5pbmcgdW5kZXIgZWRpdG9yKQogLXcgICAgICBpbmNsdWRlIG5vbi1jcml0aWNhbCB3YXJuaW5nIG1lc3NhZ2VzIGluIHRoZSAuRVJSIGVycm9yIG91dHB1dAogLXN5biAgICBydW4gcGVybCAtYyB0byBjaGVjayBzeW50YXggKGRlZmF1bHQgdW5kZXIgdW5peCBzeXN0ZW1zKQogLWxvZyAgICBzYXZlIC5MT0cgZmlsZSwgd2hpY2ggaGFzIHVzZWZ1bCBkaWFnbm9zdGljcwogLWYgICAgICBmb3JjZSBwZXJsdGlkeSB0byByZWFkIGEgYmluYXJ5IGZpbGUKIC1nICAgICAgbGlrZSAtbG9nIGJ1dCB3cml0ZXMgbW9yZSBkZXRhaWxlZCAuTE9HIGZpbGUsIGZvciBkZWJ1Z2dpbmcgc2NyaXB0cwogLW9wdCAgICB3cml0ZSB0aGUgc2V0IG9mIG9wdGlvbnMgYWN0dWFsbHkgdXNlZCB0byBhIC5MT0cgZmlsZQogLW5wcm8gICBpZ25vcmUgLnBlcmx0aWR5cmMgY29uZmlndXJhdGlvbiBjb21tYW5kIGZpbGUgCiAtcHJvPWZpbGUgICByZWFkIGNvbmZpZ3VyYXRpb24gY29tbWFuZHMgZnJvbSBmaWxlIGluc3RlYWQgb2YgLnBlcmx0aWR5cmMgCiAtc3QgICAgIHNlbmQgb3V0cHV0IHRvIHN0YW5kYXJkIG91dHB1dCwgU1RET1VUCiAtc2UgICAgIHNlbmQgYWxsIGVycm9yIG91dHB1dCB0byBzdGFuZGFyZCBlcnJvciBvdXRwdXQsIFNUREVSUgogLXYgICAgICBkaXNwbGF5IHZlcnNpb24gbnVtYmVyIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgcXVpdAoKQmFzaWMgT3B0aW9uczoKIC1pPW4gICAgdXNlIG4gY29sdW1ucyBwZXIgaW5kZW50YXRpb24gbGV2ZWwgKGRlZmF1bHQgbj00KQogLXQgICAgICB0YWJzOiB1c2Ugb25lIHRhYiBjaGFyYWN0ZXIgcGVyIGluZGVudGF0aW9uIGxldmVsLCBub3QgcmVjb21tZW5kZWQKIC1udCAgICAgbm8gdGFiczogdXNlIG4gc3BhY2VzIHBlciBpbmRlbnRhdGlvbiBsZXZlbCAoZGVmYXVsdCkKIC1ldD1uICAgZW50YWIgbGVhZGluZyB3aGl0ZXNwYWNlIG4gc3BhY2VzIHBlciB0YWI7IG5vdCByZWNvbW1lbmRlZAogLWlvICAgICAiaW5kZW50IG9ubHkiOiBqdXN0IGRvIGluZGVudGF0aW9uLCBubyBvdGhlciBmb3JtYXR0aW5nLgogLXNpbD1uICBzZXQgc3RhcnRpbmcgaW5kZW50YXRpb24gbGV2ZWwgdG8gbjsgIHVzZSBpZiBhdXRvIGRldGVjdGlvbiBmYWlscwogLW9sZT1zICBzcGVjaWZ5IG91dHB1dCBsaW5lIGVuZGluZyAocz1kb3Mgb3Igd2luLCBtYWMsIHVuaXgpCiAtcGxlICAgIGtlZXAgb3V0cHV0IGxpbmUgZW5kaW5ncyBzYW1lIGFzIGlucHV0IChpbnB1dCBtdXN0IGJlIGZpbGVuYW1lKQoKV2hpdGVzcGFjZSBDb250cm9sCiAtZndzICAgIGZyZWV6ZSB3aGl0ZXNwYWNlOyB0aGlzIGRpc2FibGVzIGFsbCB3aGl0ZXNwYWNlIGNoYW5nZXMKICAgICAgICAgICBhbmQgZGlzYWJsZXMgdGhlIGZvbGxvd2luZyBzd2l0Y2hlczoKIC1idD1uICAgc2V0cyBicmFjZSB0aWdodG5lc3MsICBuPSAoMCA9IGxvb3NlLCAxPWRlZmF1bHQsIDIgPSB0aWdodCkKIC1iYnQgICAgc2FtZSBhcyAtYnQgYnV0IGZvciBjb2RlIGJsb2NrIGJyYWNlczsgc2FtZSBhcyAtYnQgaWYgbm90IGdpdmVuCiAtYmJ2dCAgIGJsb2NrIGJyYWNlcyB2ZXJ0aWNhbGx5IHRpZ2h0OyB1c2Ugd2l0aCAtYmwgb3IgLWJsaQogLWJidnRsPXMgIG1ha2UgLWJidnQgdG8gYXBwbHkgdG8gc2VsZWN0ZWQgbGlzdCBvZiBibG9jayB0eXBlcwogLXB0PW4gICBwYXJlbiB0aWdodG5lc3MgKG49MCwgMSBvciAyKQogLXNidD1uICBzcXVhcmUgYnJhY2tldCB0aWdodG5lc3MgKG49MCwgMSwgb3IgMikKIC1idnQ9biAgYnJhY2UgdmVydGljYWwgdGlnaHRuZXNzLCAKICAgICAgICAgbj0oMD1vcGVuLCAxPWNsb3NlIHVubGVzcyBtdWx0aXBsZSBzdGVwcyBvbiBhIGxpbmUsIDI9YWx3YXlzIGNsb3NlKQogLXB2dD1uICBwYXJlbiB2ZXJ0aWNhbCB0aWdodG5lc3MgKHNlZSAtYnZ0IGZvciBuKQogLXNidnQ9biBzcXVhcmUgYnJhY2tldCB2ZXJ0aWNhbCB0aWdodG5lc3MgKHNlZSAtYnZ0IGZvciBuKQogLWJ2dGM9biBjbG9zaW5nIGJyYWNlIHZlcnRpY2FsIHRpZ2h0bmVzczogCiAgICAgICAgIG49KDA9b3BlbiwgMT1zb21ldGltZXMgY2xvc2UsIDI9YWx3YXlzIGNsb3NlKQogLXB2dGM9biBjbG9zaW5nIHBhcmVuIHZlcnRpY2FsIHRpZ2h0bmVzcywgc2VlIC1idnRjIGZvciBuLgogLXNidnRjPW4gY2xvc2luZyBzcXVhcmUgYnJhY2tldCB2ZXJ0aWNhbCB0aWdodG5lc3MsIHNlZSAtYnZ0YyBmb3Igbi4KIC1jaT1uICAgc2V0cyBjb250aW51YXRpb24gaW5kZW50YXRpb249biwgIGRlZmF1bHQgaXMgbj0yIHNwYWNlcwogLWxwICAgICBsaW5lIHVwIHBhcmVudGhlc2VzLCBicmFja2V0cywgYW5kIG5vbi1CTE9DSyBicmFjZXMKIC1zZnMgICAgYWRkIHNwYWNlIGJlZm9yZSBzZW1pY29sb24gaW4gZm9yKCA7IDsgKQogLWF3cyAgICBhbGxvdyBwZXJsdGlkeSB0byBhZGQgd2hpdGVzcGFjZSAoZGVmYXVsdCkKIC1kd3MgICAgZGVsZXRlIGFsbCBvbGQgbm9uLWVzc2VudGlhbCB3aGl0ZXNwYWNlIAogLWljYiAgICBpbmRlbnQgY2xvc2luZyBicmFjZSBvZiBhIGNvZGUgYmxvY2sKIC1jdGk9biAgY2xvc2luZyBpbmRlbnRhdGlvbiBvZiBwYXJlbiwgc3F1YXJlIGJyYWNrZXQsIG9yIG5vbi1ibG9jayBicmFjZTogCiAgICAgICAgIG49MCBub25lLCA9MSBhbGlnbiB3aXRoIG9wZW5pbmcsID0yIG9uZSBmdWxsIGluZGVudGF0aW9uIGxldmVsCiAtaWNwICAgIGVxdWl2YWxlbnQgdG8gLWN0aT0yCiAtd2xzPXMgIHdhbnQgc3BhY2UgbGVmdCBvZiB0b2tlbnMgaW4gc3RyaW5nOyBpLmUuIC1ud2xzPScrIC0gKiAvJwogLXdycz1zICB3YW50IHNwYWNlIHJpZ2h0IG9mIHRva2VucyBpbiBzdHJpbmc7CiAtc3RzICAgIHB1dCBzcGFjZSBiZWZvcmUgdGVybWluYWwgc2VtaWNvbG9uIG9mIGEgc3RhdGVtZW50CiAtc2FrPXMgIHB1dCBzcGFjZSBiZXR3ZWVuIGtleXdvcmRzIGdpdmVuIGluIHMgYW5kICcoJzsKIC1uc2FrPXMgbm8gc3BhY2UgYmV0d2VlbiBrZXl3b3JkcyBpbiBzIGFuZCAnKCc7IGkuZS4gLW5zYWs9J215IG91ciBsb2NhbCcKCkxpbmUgQnJlYWsgQ29udHJvbAogLWZubCAgICBmcmVlemUgbmV3bGluZXM7IHRoaXMgZGlzYWJsZXMgYWxsIGxpbmUgYnJlYWsgY2hhbmdlcwogICAgICAgICAgICBhbmQgZGlzYWJsZXMgdGhlIGZvbGxvd2luZyBzd2l0Y2hlczoKIC1hbmwgICAgYWRkIG5ld2xpbmVzOyAgb2sgdG8gaW50cm9kdWNlIG5ldyBsaW5lIGJyZWFrcwogLWJicyAgICBhZGQgYmxhbmsgbGluZSBiZWZvcmUgc3VicyBhbmQgcGFja2FnZXMKIC1iYmMgICAgYWRkIGJsYW5rIGxpbmUgYmVmb3JlIGJsb2NrIGNvbW1lbnRzCiAtYmJiICAgIGFkZCBibGFuayBsaW5lIGJldHdlZW4gbWFqb3IgYmxvY2tzCiAta2JsPW4gIGtlZXAgb2xkIGJsYW5rIGxpbmVzPyAwPW5vLCAxPXNvbWUsIDI9YWxsCiAtbWJsPW4gIG1heGltdW0gY29uc2VjdXRpdmUgYmxhbmsgbGluZXMgdG8gb3V0cHV0IChkZWZhdWx0PTEpCiAtY2UgICAgIGN1ZGRsZWQgZWxzZTsgdXNlIHRoaXMgc3R5bGU6ICd9IGVsc2UgeycKIC1jYiAgICAgY3VkZGxlZCBibG9ja3MgKG90aGVyIHRoYW4gJ2lmLWVsc2lmLWVsc2UnKQogLWNibD1zICBsaXN0IG9mIGJsb2NrcyB0byBjdWRkbGVkLCBkZWZhdWx0ICd0cnktY2F0Y2gtZmluYWxseScKIC1kbmwgICAgZGVsZXRlIG9sZCBuZXdsaW5lcyAoZGVmYXVsdCkKIC1sPW4gICAgbWF4aW11bSBsaW5lIGxlbmd0aDsgIGRlZmF1bHQgbj04MAogLWJsICAgICBvcGVuaW5nIGJyYWNlIG9uIG5ldyBsaW5lIAogLXNibCAgICBvcGVuaW5nIHN1YiBicmFjZSBvbiBuZXcgbGluZS4gIHZhbHVlIG9mIC1ibCBpcyB1c2VkIGlmIG5vdCBnaXZlbi4KIC1ibGkgICAgb3BlbmluZyBicmFjZSBvbiBuZXcgbGluZSBhbmQgaW5kZW50ZWQKIC1iYXIgICAgb3BlbmluZyBicmFjZSBhbHdheXMgb24gcmlnaHQsIGV2ZW4gZm9yIGxvbmcgY2xhdXNlcwogLXZ0PW4gICB2ZXJ0aWNhbCB0aWdodG5lc3MgKHJlcXVpcmVzIC1scCk7IG4gY29udHJvbHMgYnJlYWsgYWZ0ZXIgb3BlbmluZwogICAgICAgICB0b2tlbjogMD1uZXZlciAgMT1ubyBicmVhayBpZiBuZXh0IGxpbmUgYmFsYW5jZWQgICAyPW5vIGJyZWFrCiAtdnRjPW4gIHZlcnRpY2FsIHRpZ2h0bmVzcyBvZiBjbG9zaW5nIGNvbnRhaW5lcjsgbiBjb250cm9scyBpZiBjbG9zaW5nCiAgICAgICAgIHRva2VuIHN0YXJ0cyBuZXcgbGluZTogMD1hbHdheXMgIDE9bm90IHVubGVzcyBsaXN0ICAxPW5ldmVyCiAtd2JhPXMgIHdhbnQgYnJlYWsgYWZ0ZXIgdG9rZW5zIGluIHN0cmluZzsgaS5lLiB3YmE9JzogLicKIC13YmI9cyAgd2FudCBicmVhayBiZWZvcmUgdG9rZW5zIGluIHN0cmluZwogLXduICAgICB3ZWxkIG5lc3RlZDogY29tYmluZXMgb3BlbmluZyBhbmQgY2xvc2luZyB0b2tlbnMgd2hlbiBib3RoIGFyZSBhZGphY2VudAogLXdueGw9cyB3ZWxkIG5lc3RlZCBleGNsdXNpb24gbGlzdDogcHJvdmlkZXMgc29tZSBjb250cm9sIG92ZXIgdGhlIHR5cGVzIG9mCiAgICAgICAgIGNvbnRhaW5lcnMgd2hpY2ggY2FuIGJlIHdlbGRlZAoKRm9sbG93aW5nIE9sZCBCcmVha3BvaW50cwogLWtpcyAgICBrZWVwIGludGVyaW9yIHNlbWljb2xvbnMuICBBbGxvd3MgbXVsdGlwbGUgc3RhdGVtZW50cyBwZXIgbGluZS4KIC1ib2MgICAgYnJlYWsgYXQgb2xkIGNvbW1hIGJyZWFrczogdHVybnMgb2ZmIGFsbCBhdXRvbWF0aWMgbGlzdCBmb3JtYXR0aW5nCiAtYm9sICAgIGJyZWFrIGF0IG9sZCBsb2dpY2FsIGJyZWFrcG9pbnRzOiBvciwgYW5kLCB8fCwgJiYgKGRlZmF1bHQpCiAtYm9tICAgIGJyZWFrIGF0IG9sZCBtZXRob2QgY2FsbCBicmVha3BvaW50czogLT4KIC1ib2sgICAgYnJlYWsgYXQgb2xkIGxpc3Qga2V5d29yZCBicmVha3BvaW50cyBzdWNoIGFzIG1hcCwgc29ydCAoZGVmYXVsdCkKIC1ib3QgICAgYnJlYWsgYXQgb2xkIGNvbmRpdGlvbmFsICh0ZXJuYXJ5ID86KSBvcGVyYXRvciBicmVha3BvaW50cyAoZGVmYXVsdCkKIC1ib2EgICAgYnJlYWsgYXQgb2xkIGF0dHJpYnV0ZSBicmVha3BvaW50cyAKIC1jYWI9biAgYnJlYWsgYXQgY29tbWFzIGFmdGVyIGEgY29tbWEtYXJyb3cgKD0+KToKICAgICAgICAgbj0wIGJyZWFrIGF0IGFsbCBjb21tYXMgYWZ0ZXIgPT4KICAgICAgICAgbj0xIHN0YWJsZTogYnJlYWsgdW5sZXNzIHRoaXMgYnJlYWtzIGFuIGV4aXN0aW5nIG9uZS1saW5lIGNvbnRhaW5lcgogICAgICAgICBuPTIgYnJlYWsgb25seSBpZiBhIG9uZS1saW5lIGNvbnRhaW5lciBjYW5ub3QgYmUgZm9ybWVkCiAgICAgICAgIG49MyBkbyBub3QgdHJlYXQgY29tbWFzIGFmdGVyID0+IHNwZWNpYWxseSBhdCBhbGwKCkNvbW1lbnQgY29udHJvbHMKIC1pYmMgICAgaW5kZW50IGJsb2NrIGNvbW1lbnRzIChkZWZhdWx0KQogLWlzYmMgICBpbmRlbnQgc3BhY2VkIGJsb2NrIGNvbW1lbnRzOyBtYXkgaW5kZW50IHVubGVzcyBubyBsZWFkaW5nIHNwYWNlCiAtbXNjPW4gIG1pbmltdW0gZGVzaXJlZCBzcGFjZXMgdG8gc2lkZSBjb21tZW50LCBkZWZhdWx0IDQKIC1mcHNjPW4gZml4IHBvc2l0aW9uIGZvciBzaWRlIGNvbW1lbnRzOyBkZWZhdWx0IDA7CiAtY3NjICAgIGFkZCBvciB1cGRhdGUgY2xvc2luZyBzaWRlIGNvbW1lbnRzIGFmdGVyIGNsb3NpbmcgQkxPQ0sgYnJhY2UKIC1kY3NjICAgZGVsZXRlIGNsb3Npbmcgc2lkZSBjb21tZW50cyBjcmVhdGVkIGJ5IGEgLWNzYyBjb21tYW5kCiAtY3NjcD1zIGNoYW5nZSBjbG9zaW5nIHNpZGUgY29tbWVudCBwcmVmaXggdG8gYmUgb3RoZXIgdGhhbiAnIyMgZW5kJwogLWNzY2w9cyBjaGFuZ2UgY2xvc2luZyBzaWRlIGNvbW1lbnQgdG8gYXBwbHkgdG8gc2VsZWN0ZWQgbGlzdCBvZiBibG9ja3MKIC1jc2NpPW4gbWluaW11bSBudW1iZXIgb2YgbGluZXMgbmVlZGVkIHRvIGFwcGx5IGEgLWNzYyB0YWcsIGRlZmF1bHQgbj02CiAtY3NjdD1uIG1heGltdW0gbnVtYmVyIG9mIGNvbHVtbnMgb2YgYXBwZW5kZWQgdGV4dCwgZGVmYXVsdCBuPTIwIAogLWNzY3cgICBjYXVzZXMgd2FybmluZyBpZiBvbGQgc2lkZSBjb21tZW50IGlzIG92ZXJ3cml0dGVuIHdpdGggLWNzYwoKIC1zYmMgICAgdXNlICdzdGF0aWMgYmxvY2sgY29tbWVudHMnIGlkZW50aWZpZWQgYnkgbGVhZGluZyAnIyMnIChkZWZhdWx0KQogLXNiY3A9cyBjaGFuZ2Ugc3RhdGljIGJsb2NrIGNvbW1lbnQgaWRlbnRpZmllciB0byBiZSBvdGhlciB0aGFuICcjIycKIC1vc2JjICAgb3V0ZGVudCBzdGF0aWMgYmxvY2sgY29tbWVudHMKCiAtc3NjICAgIHVzZSAnc3RhdGljIHNpZGUgY29tbWVudHMnIGlkZW50aWZpZWQgYnkgbGVhZGluZyAnIyMnIChkZWZhdWx0KQogLXNzY3A9cyBjaGFuZ2Ugc3RhdGljIHNpZGUgY29tbWVudCBpZGVudGlmaWVyIHRvIGJlIG90aGVyIHRoYW4gJyMjJwoKRGVsZXRlIHNlbGVjdGVkIHRleHQKIC1kYWMgICAgZGVsZXRlIGFsbCBjb21tZW50cyBBTkQgcG9kCiAtZGJjICAgIGRlbGV0ZSBibG9jayBjb21tZW50cyAgICAgCiAtZHNjICAgIGRlbGV0ZSBzaWRlIGNvbW1lbnRzICAKIC1kcCAgICAgZGVsZXRlIHBvZAoKU2VuZCBzZWxlY3RlZCB0ZXh0IHRvIGEgJy5URUUnIGZpbGUKIC10YWMgICAgdGVlIGFsbCBjb21tZW50cyBBTkQgcG9kCiAtdGJjICAgIHRlZSBibG9jayBjb21tZW50cyAgICAgICAKIC10c2MgICAgdGVlIHNpZGUgY29tbWVudHMgICAgICAgCiAtdHAgICAgIHRlZSBwb2QgICAgICAgICAgIAoKT3V0ZGVudGluZwogLW9scSAgICBvdXRkZW50IGxvbmcgcXVvdGVkIHN0cmluZ3MgKGRlZmF1bHQpIAogLW9sYyAgICBvdXRkZW50IGEgbG9uZyBibG9jayBjb21tZW50IGxpbmUKIC1vbGEgICAgb3V0ZGVudCBzdGF0ZW1lbnQgbGFiZWxzCiAtb2t3ICAgIG91dGRlbnQgY29udHJvbCBrZXl3b3JkcyAocmVkbywgbmV4dCwgbGFzdCwgZ290bywgcmV0dXJuKQogLW9rd2w9cyBzcGVjaWZ5IGFsdGVybmF0aXZlIGtleXdvcmRzIGZvciAtb2t3IGNvbW1hbmQKCk90aGVyIGNvbnRyb2xzCiAtbWZ0PW4gIG1heGltdW0gZmllbGRzIHBlciB0YWJsZTsgZGVmYXVsdCBuPTQwCiAteCAgICAgIGRvIG5vdCBmb3JtYXQgbGluZXMgYmVmb3JlIGhhc2gtYmFuZyBsaW5lIChpLmUuLCBmb3IgVk1TKQogLWFzYyAgICBhbGxvd3MgcGVybHRpZHkgdG8gYWRkIGEgJzsnIHdoZW4gbWlzc2luZyAoZGVmYXVsdCkKIC1kc20gICAgYWxsb3dzIHBlcmx0aWR5IHRvIGRlbGV0ZSBhbiB1bm5lY2Vzc2FyeSAnOycgIChkZWZhdWx0KQoKQ29tYmluYXRpb25zIG9mIG90aGVyIHBhcmFtZXRlcnMKIC1nbnUgICAgIGF0dGVtcHQgdG8gZm9sbG93IEdOVSBDb2RpbmcgU3RhbmRhcmRzIGFzIGFwcGxpZWQgdG8gcGVybAogLW1hbmdsZSAgcmVtb3ZlIGFzIG1hbnkgbmV3bGluZXMgYXMgcG9zc2libGUgKGJ1dCBrZWVwIGNvbW1lbnRzIGFuZCBwb2RzKQogLWV4dHJ1ZGUgIGluc2VydCBhcyBtYW55IG5ld2xpbmVzIGFzIHBvc3NpYmxlCgpEdW1wIGFuZCBkaWUsIGRlYnVnZ2luZwogLWRvcCAgICBkdW1wIG9wdGlvbnMgdXNlZCBpbiB0aGlzIHJ1biB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIHF1aXQKIC1kZGYgICAgZHVtcCBkZWZhdWx0IG9wdGlvbnMgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBxdWl0CiAtZHNuICAgIGR1bXAgYWxsIG9wdGlvbiBzaG9ydCBuYW1lcyB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIHF1aXQKIC1kbG4gICAgZHVtcCBvcHRpb24gbG9uZyBuYW1lcyB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIHF1aXQKIC1kcHJvICAgZHVtcCB3aGF0ZXZlciBjb25maWd1cmF0aW9uIGZpbGUgaXMgaW4gZWZmZWN0IHRvIHN0YW5kYXJkIG91dHB1dAogLWR0dCAgICBkdW1wIGFsbCB0b2tlbiB0eXBlcyB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIHF1aXQKCkhUTUwKIC1odG1sIHdyaXRlIGFuIGh0bWwgZmlsZSAoc2VlICdtYW4gcGVybDJ3ZWInIGZvciBtYW55IG9wdGlvbnMpCiAgICAgICBOb3RlOiB3aGVuIC1odG1sIGlzIHVzZWQsIG5vIGluZGVudGF0aW9uIG9yIGZvcm1hdHRpbmcgYXJlIGRvbmUuCiAgICAgICBIaW50OiB0cnkgcGVybHRpZHkgLWh0bWwgLWNzcz1teXN0eWxlLmNzcyBmaWxlbmFtZS5wbAogICAgICAgYW5kIGVkaXQgbXlzdHlsZS5jc3MgdG8gY2hhbmdlIHRoZSBhcHBlYXJhbmNlIG9mIGZpbGVuYW1lLmh0bWwuCiAgICAgICAtbm5uIGdpdmVzIGxpbmUgbnVtYmVycwogICAgICAgLXByZSBvbmx5IHdyaXRlcyBvdXQgPHByZT4uLjwvcHJlPiBjb2RlIHNlY3Rpb24KICAgICAgIC10b2MgcGxhY2VzIGEgdGFibGUgb2YgY29udGVudHMgdG8gc3VicyBhdCB0aGUgdG9wIChkZWZhdWx0KQogICAgICAgLXBvZCBwYXNzZXMgcG9kIHRleHQgdGhyb3VnaCBwb2QyaHRtbCAoZGVmYXVsdCkKICAgICAgIC1mcm0gd3JpdGUgaHRtbCBhcyBhIGZyYW1lICgzIGZpbGVzKQogICAgICAgLXRleHQ9cyBleHRyYSBleHRlbnNpb24gZm9yIHRhYmxlIG9mIGNvbnRlbnRzIGlmIC1mcm0sIGRlZmF1bHQ9J3RvYycKICAgICAgIC1zZXh0PXMgZXh0cmEgZXh0ZW5zaW9uIGZvciBmaWxlIGNvbnRlbnQgaWYgLWZybSwgZGVmYXVsdD0nc3JjJwoKQSBwcmVmaXggb2YgIm4iIG5lZ2F0ZXMgc2hvcnQgZm9ybSB0b2dnbGUgc3dpdGNoZXMsIGFuZCBhIHByZWZpeCBvZiAibm8iCm5lZ2F0ZXMgdGhlIGxvbmcgZm9ybXMuICBGb3IgZXhhbXBsZSwgLW5hc2MgbWVhbnMgZG9uJ3QgYWRkIG1pc3NpbmcKc2VtaWNvbG9ucy4gIAoKSWYgeW91IGFyZSB1bmFibGUgdG8gc2VlIHRoaXMgZW50aXJlIHRleHQsIHRyeSAicGVybHRpZHkgLWggfCBtb3JlIgpGb3IgbW9yZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiwgYW5kIGFkZGl0aW9uYWwgb3B0aW9ucywgdHJ5ICJtYW4gcGVybHRpZHkiLApvciBnbyB0byB0aGUgcGVybHRpZHkgaG9tZSBwYWdlIGF0IGh0dHA6Ly9wZXJsdGlkeS5zb3VyY2Vmb3JnZS5uZXQKRU9GCgogICAgcmV0dXJuOwp9CgpzdWIgcHJvY2Vzc190aGlzX2ZpbGUgewoKICAgIG15ICggJHRva2VuaXplciwgJGZvcm1hdHRlciApID0gQF87CgogICAgd2hpbGUgKCBteSAkbGluZSA9ICR0b2tlbml6ZXItPmdldF9saW5lKCkgKSB7CiAgICAgICAgJGZvcm1hdHRlci0+d3JpdGVfbGluZSgkbGluZSk7CiAgICB9CiAgICBteSAkc2V2ZXJlX2Vycm9yID0gJHRva2VuaXplci0+cmVwb3J0X3Rva2VuaXphdGlvbl9lcnJvcnMoKTsKCiAgICAjIHVzZXItZGVmaW5lZCBmb3JtYXR0ZXJzIGFyZSBwb3NzaWJsZSwgYW5kIG1heSBub3QgaGF2ZSBhCiAgICAjIHN1YiAnZmluaXNoX2Zvcm1hdHRpbmcnLCBzbyB3ZSBoYXZlIHRvIGNoZWNrCiAgICAkZm9ybWF0dGVyLT5maW5pc2hfZm9ybWF0dGluZygkc2V2ZXJlX2Vycm9yKQogICAgICBpZiAkZm9ybWF0dGVyLT5jYW4oJ2ZpbmlzaF9mb3JtYXR0aW5nJyk7CgogICAgcmV0dXJuOwp9CgpzdWIgY2hlY2tfc3ludGF4IHsKCiAgICAjIFVzZSAncGVybCAtYycgdG8gbWFrZSBzdXJlIHRoYXQgd2UgZGlkIG5vdCBjcmVhdGUgYmFkIHN5bnRheAogICAgIyBUaGlzIGlzIGEgdmVyeSBnb29kIGluZGVwZW5kZW50IGNoZWNrIGZvciBwcm9ncmFtbWluZyBlcnJvcnMKICAgICMKICAgICMgR2l2ZW4gbmFtZXMgb2YgdGhlIGlucHV0IGFuZCBvdXRwdXQgZmlsZXMsICgkaXN0cmVhbSwgJG9zdHJlYW0pLAogICAgIyB3ZSBkbyB0aGUgZm9sbG93aW5nOgogICAgIyAtIGNoZWNrIHN5bnRheCBvZiB0aGUgaW5wdXQgZmlsZQogICAgIyAtIGlmIGJhZCwgYWxsIGRvbmUgKGNvdWxkIGJlIGFuIGluY29tcGxldGUgY29kZSBzbmlwcGV0KQogICAgIyAtIGlmIGluZmlsZSBzeW50YXggb2ssIHRoZW4gY2hlY2sgc3ludGF4IG9mIHRoZSBvdXRwdXQgZmlsZTsKICAgICMgICAtIGlmIG91dGZpbGUgc3ludGF4IGJhZCwgaXNzdWUgd2FybmluZzsgdGhpcyBpbXBsaWVzIGEgY29kZSBidWchCiAgICAjIC0gc2V0IGFuZCByZXR1cm4gZmxhZyAiaW5maWxlX3N5bnRheF9vayIgOiA9LTEgYmFkIDAgdW5rbm93biAxIGdvb2QKCiAgICBteSAoICRpc3RyZWFtLCAkb3N0cmVhbSwgJGxvZ2dlcl9vYmplY3QsICRyT3B0cyApID0gQF87CiAgICBteSAkaW5maWxlX3N5bnRheF9vayA9IDA7CiAgICBteSAkbGluZV9vZl9kYXNoZXMgICA9ICctJyB4IDQyIC4gIlxuIjsKCiAgICBteSAkZmxhZ3MgPSAkck9wdHMtPnsncGVybC1zeW50YXgtY2hlY2stZmxhZ3MnfTsKCiAgICAjIGJlIHN1cmUgd2UgaW52b2tlIHBlcmwgd2l0aCAtYwogICAgIyBub3RlOiBwZXJsIHdpbGwgYWNjZXB0IHJlcGVhdGVkIGZsYWdzIGxpa2UgJy1jIC1jJy4gIEl0IGlzIHNhZmVzdAogICAgIyB0byBhcHBlbmQgYW5vdGhlciAtYyB0aGFuIHRyeSB0byBmaW5kIGFuIGludGVyaW9yIGJ1bmRsZWQgYywgYXMKICAgICMgaW4gLVRjLCBiZWNhdXNlIHN1Y2ggYSAnYycgbWlnaHQgYmUgaW4gYSBxdW90ZWQgc3RyaW5nLCBmb3IgZXhhbXBsZS4KICAgIGlmICggJGZsYWdzICF+IC8oXi1jfFxzKy1jKS8gKSB7ICRmbGFncyAuPSAiIC1jIiB9CgogICAgIyBiZSBzdXJlIHdlIGludm9rZSBwZXJsIHdpdGggLXggaWYgcmVxdWVzdGVkCiAgICAjIHNhbWUgY29tbWVudHMgYWJvdXQgcmVwZWF0ZWQgcGFyYW1ldGVycyBhcHBsaWVzCiAgICBpZiAoICRyT3B0cy0+eydsb29rLWZvci1oYXNoLWJhbmcnfSApIHsKICAgICAgICBpZiAoICRmbGFncyAhfiAvKF4teHxccysteCkvICkgeyAkZmxhZ3MgLj0gIiAteCIgfQogICAgfQoKICAgICMgdGhpcyBzaG91bGRuJ3QgaGFwcGVuIHVubGVzcyBhIHRlbXBvcmFyeSBmaWxlIGNvdWxkbid0IGJlIG1hZGUKICAgIGlmICggJGlzdHJlYW0gZXEgJy0nICkgewogICAgICAgICRsb2dnZXJfb2JqZWN0LT53cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICAgICAiQ2Fubm90IHJ1biBwZXJsIC1jIG9uIFNURElOIGFuZCBTVERPVVRcbiIpOwogICAgICAgIHJldHVybiAkaW5maWxlX3N5bnRheF9vazsKICAgIH0KCiAgICAkbG9nZ2VyX29iamVjdC0+d3JpdGVfbG9nZmlsZV9lbnRyeSgKICAgICAgICAiY2hlY2tpbmcgaW5wdXQgZmlsZSBzeW50YXggd2l0aCBwZXJsICRmbGFnc1xuIik7CgogICAgIyBOb3QgYWxsIG9wZXJhdGluZyBzeXN0ZW1zL3NoZWxscyBzdXBwb3J0IHJlZGlyZWN0aW9uIG9mIHRoZSBzdGFuZGFyZAogICAgIyBlcnJvciBvdXRwdXQuCiAgICBteSAkZXJyb3JfcmVkaXJlY3Rpb24gPSAoICReTyBlcSAnVk1TJyApID8gIiIgOiAnMj4mMSc7CgogICAgbXkgKCAkaXN0cmVhbV9maWxlbmFtZSwgJHBlcmxfb3V0cHV0ICkgPQogICAgICBkb19zeW50YXhfY2hlY2soICRpc3RyZWFtLCAkZmxhZ3MsICRlcnJvcl9yZWRpcmVjdGlvbiApOwogICAgJGxvZ2dlcl9vYmplY3QtPndyaXRlX2xvZ2ZpbGVfZW50cnkoCiAgICAgICAgIklucHV0IHN0cmVhbSBwYXNzZWQgdG8gUGVybCBhcyBmaWxlICRpc3RyZWFtX2ZpbGVuYW1lXG4iKTsKICAgICRsb2dnZXJfb2JqZWN0LT53cml0ZV9sb2dmaWxlX2VudHJ5KCRsaW5lX29mX2Rhc2hlcyk7CiAgICAkbG9nZ2VyX29iamVjdC0+d3JpdGVfbG9nZmlsZV9lbnRyeSgiJHBlcmxfb3V0cHV0XG4iKTsKCiAgICBpZiAoICRwZXJsX291dHB1dCA9fiAvc3ludGF4XHMqT0svICkgewogICAgICAgICRpbmZpbGVfc3ludGF4X29rID0gMTsKICAgICAgICAkbG9nZ2VyX29iamVjdC0+d3JpdGVfbG9nZmlsZV9lbnRyeSgkbGluZV9vZl9kYXNoZXMpOwogICAgICAgICRsb2dnZXJfb2JqZWN0LT53cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICAgICAiY2hlY2tpbmcgb3V0cHV0IGZpbGUgc3ludGF4IHdpdGggcGVybCAkZmxhZ3MgLi4uXG4iKTsKICAgICAgICBteSAoICRvc3RyZWFtX2ZpbGVuYW1lLCAkcGVybF9vdXRwdXQgKSA9CiAgICAgICAgICBkb19zeW50YXhfY2hlY2soICRvc3RyZWFtLCAkZmxhZ3MsICRlcnJvcl9yZWRpcmVjdGlvbiApOwogICAgICAgICRsb2dnZXJfb2JqZWN0LT53cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICAgICAiT3V0cHV0IHN0cmVhbSBwYXNzZWQgdG8gUGVybCBhcyBmaWxlICRvc3RyZWFtX2ZpbGVuYW1lXG4iKTsKICAgICAgICAkbG9nZ2VyX29iamVjdC0+d3JpdGVfbG9nZmlsZV9lbnRyeSgkbGluZV9vZl9kYXNoZXMpOwogICAgICAgICRsb2dnZXJfb2JqZWN0LT53cml0ZV9sb2dmaWxlX2VudHJ5KCIkcGVybF9vdXRwdXRcbiIpOwoKICAgICAgICB1bmxlc3MgKCAkcGVybF9vdXRwdXQgPX4gL3N5bnRheFxzKk9LLyApIHsKICAgICAgICAgICAgJGxvZ2dlcl9vYmplY3QtPndyaXRlX2xvZ2ZpbGVfZW50cnkoJGxpbmVfb2ZfZGFzaGVzKTsKICAgICAgICAgICAgJGxvZ2dlcl9vYmplY3QtPndhcm5pbmcoCiJUaGUgb3V0cHV0IGZpbGUgaGFzIGEgc3ludGF4IGVycm9yIHdoZW4gdGVzdGVkIHdpdGggcGVybCAkZmxhZ3MgJG9zdHJlYW0gIVxuIgogICAgICAgICAgICApOwogICAgICAgICAgICAkbG9nZ2VyX29iamVjdC0+d2FybmluZygKICAgICAgICAgICAgICAgICJUaGlzIGltcGxpZXMgYW4gZXJyb3IgaW4gcGVybHRpZHk7IHRoZSBmaWxlICRvc3RyZWFtIGlzIGJhZFxuIgogICAgICAgICAgICApOwogICAgICAgICAgICAkbG9nZ2VyX29iamVjdC0+cmVwb3J0X2RlZmluaXRlX2J1ZygpOwoKICAgICAgICAgICAgIyB0aGUgcGVybCB2ZXJzaW9uIG51bWJlciB3aWxsIGJlIGhlbHBmdWwgZm9yIGRpYWdub3NpbmcgdGhlIHByb2JsZW0KICAgICAgICAgICAgJGxvZ2dlcl9vYmplY3QtPndyaXRlX2xvZ2ZpbGVfZW50cnkoICReViAuICJcbiIgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBPbmx5IHdhcm4gb2YgcGVybCAtYyBzeW50YXggZXJyb3JzLiAgT3RoZXIgbWVzc2FnZXMsCiAgICAgICAgIyBzdWNoIGFzIG1pc3NpbmcgbW9kdWxlcywgYXJlIHRvbyBjb21tb24uICBUaGV5IGNhbiBiZQogICAgICAgICMgc2VlbiBieSBydW5uaW5nIHdpdGggcGVybHRpZHkgLXcKICAgICAgICAkbG9nZ2VyX29iamVjdC0+Y29tcGxhaW4oIkEgc3ludGF4IGNoZWNrIHVzaW5nIHBlcmwgJGZsYWdzXG4iKTsKICAgICAgICAkbG9nZ2VyX29iamVjdC0+Y29tcGxhaW4oCiAgICAgICAgICAgICJmb3IgdGhlIG91dHB1dCBpbiBmaWxlICRpc3RyZWFtX2ZpbGVuYW1lIGdpdmVzOlxuIik7CiAgICAgICAgJGxvZ2dlcl9vYmplY3QtPmNvbXBsYWluKCRsaW5lX29mX2Rhc2hlcyk7CiAgICAgICAgJGxvZ2dlcl9vYmplY3QtPmNvbXBsYWluKCIkcGVybF9vdXRwdXRcbiIpOwogICAgICAgICRsb2dnZXJfb2JqZWN0LT5jb21wbGFpbigkbGluZV9vZl9kYXNoZXMpOwogICAgICAgICRpbmZpbGVfc3ludGF4X29rID0gLTE7CiAgICAgICAgJGxvZ2dlcl9vYmplY3QtPndyaXRlX2xvZ2ZpbGVfZW50cnkoJGxpbmVfb2ZfZGFzaGVzKTsKICAgICAgICAkbG9nZ2VyX29iamVjdC0+d3JpdGVfbG9nZmlsZV9lbnRyeSgKIlRoZSBvdXRwdXQgZmlsZSB3aWxsIG5vdCBiZSBjaGVja2VkIGJlY2F1c2Ugb2YgaW5wdXQgZmlsZSBwcm9ibGVtc1xuIgogICAgICAgICk7CiAgICB9CiAgICByZXR1cm4gJGluZmlsZV9zeW50YXhfb2s7Cn0KCnN1YiBkb19zeW50YXhfY2hlY2sgewoKICAgICMgVGhpcyBzaG91bGQgbm90IGJlIGNhbGxlZDsgdGhlIHN5bnRheCBjaGVjayBpcyBkZWFjdGl2YXRlZAogICAgRGllKCJVbmV4cGVjdGVkIGNhbGwgZm9yIHN5bnRheCBjaGVjay1zaG91bGRuJ3QgaGFwcGVuXG4iKTsKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/cpan-lib/Perl/Tidy/Formatter.pm" Permission="660" Encode="Base64">IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBUaGUgUGVybDo6VGlkeTo6Rm9ybWF0dGVyIHBhY2thZ2UgYWRkcyBpbmRlbnRhdGlvbiwgd2hpdGVzcGFjZSwgYW5kCiMgbGluZSBicmVha3MgdG8gdGhlIHRva2VuIHN0cmVhbQojCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBJbmRleC4uLgojIENPREUgU0VDVElPTiAxOiBQcmVsaW1pbmFyeSBjb2RlLCBnbG9iYWwgZGVmaW5pdGlvbnMgYW5kIHN1YiBuZXcKIyAgICAgICAgICAgICAgICAgc3ViIG5ldwojIENPREUgU0VDVElPTiAyOiBTb21lIEJhc2ljIFV0aWxpdGllcwojIENPREUgU0VDVElPTiAzOiBDaGVjayBhbmQgcHJvY2VzcyBvcHRpb25zCiMgICAgICAgICAgICAgICAgIHN1YiBjaGVja19vcHRpb25zCiMgQ09ERSBTRUNUSU9OIDQ6IFJlY2VpdmUgbGluZXMgZnJvbSB0aGUgdG9rZW5pemVyCiMgICAgICAgICAgICAgICAgIHN1YiB3cml0ZV9saW5lCiMgQ09ERSBTRUNUSU9OIDU6IFByZS1wcm9jZXNzIHRoZSBlbnRpcmUgZmlsZQojICAgICAgICAgICAgICAgICBzdWIgZmluaXNoX2Zvcm1hdHRpbmcKIyBDT0RFIFNFQ1RJT04gNjogUHJvY2VzcyBsaW5lLWJ5LWxpbmUKIyAgICAgICAgICAgICAgICAgc3ViIHByb2Nlc3NfYWxsX2xpbmVzCiMgQ09ERSBTRUNUSU9OIDc6IFByb2Nlc3MgbGluZXMgb2YgY29kZQojICAgICAgICAgICAgICAgICBwcm9jZXNzX2xpbmVfb2ZfQ09ERQojIENPREUgU0VDVElPTiA4OiBVdGlsaXRpZXMgZm9yIHNldHRpbmcgYnJlYWtwb2ludHMKIyAgICAgICAgICAgICAgICAgc3ViIHNldF9mb3JjZWRfYnJlYWtwb2ludAojIENPREUgU0VDVElPTiA5OiBQcm9jZXNzIGJhdGNoZXMgb2YgY29kZQojICAgICAgICAgICAgICAgICBzdWIgZ3JpbmRfYmF0Y2hfb2ZfQ09ERQojIENPREUgU0VDVElPTiAxMDogQ29kZSB0byBicmVhayBsb25nIHN0YXRtZW50cwojICAgICAgICAgICAgICAgICAgc3ViIHNldF9jb250aW51YXRpb25fYnJlYWtzCiMgQ09ERSBTRUNUSU9OIDExOiBDb2RlIHRvIGJyZWFrIGxvbmcgbGlzdHMKIyAgICAgICAgICAgICAgICAgIHN1YiBzY2FuX2xpc3QKIyBDT0RFIFNFQ1RJT04gMTI6IENvZGUgZm9yIHNldHRpbmcgaW5kZW50YXRpb24KIyBDT0RFIFNFQ1RJT04gMTM6IFByZXBhcmluZyBiYXRjaGVzIGZvciB2ZXJ0aWNhbCBhbGlnbm1lbnQKIyAgICAgICAgICAgICAgICAgIHN1YiBzZW5kX2xpbmVzX3RvX3ZlcnRpY2FsX2FsaWduZXIKIyBDT0RFIFNFQ1RJT04gMTQ6IENvZGUgZm9yIGNyZWF0aW5nIGNsb3Npbmcgc2lkZSBjb21tZW50cwojICAgICAgICAgICAgICAgICAgc3ViIGFkZF9jbG9zaW5nX3NpZGVfY29tbWVudAojIENPREUgU0VDVElPTiAxNTogU3VtbWFyaXplCiMgICAgICAgICAgICAgICAgICBzdWIgd3JhcHVwCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIENPREUgU0VDVElPTiAxOiBQcmVsaW1pbmFyeSBjb2RlIGFuZCBnbG9iYWwgZGVmaW5pdGlvbnMgdXAgdG8gc3ViIG5ldwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKcGFja2FnZSBQZXJsOjpUaWR5OjpGb3JtYXR0ZXI7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgdGhpcyBjYW4gYmUgdHVybmVkIG9uIGZvciBleHRyYSBjaGVja2luZyBkdXJpbmcgZGV2ZWxvcG1lbnQKdXNlIGNvbnN0YW50IERFVkVMX01PREUgPT4gMDsKCnsgIzw8PCBBIG5vbi1pbmRlbnRpbmcgYnJhY2UgdG8gY29udGFpbiBhbGwgbGV4aWNhbCB2YXJpYWJsZXMKCnVzZSBDYXJwOwpvdXIgJFZFUlNJT04gPSAnMjAyMTAxMTEnOwoKIyBUaGUgVG9rZW5pemVyIHdpbGwgYmUgbG9hZGVkIHdpdGggdGhlIEZvcm1hdHRlcgojI3VzZSBQZXJsOjpUaWR5OjpUb2tlbml6ZXI7ICAgICMgZm9yIGlzX2tleXdvcmQoKQoKc3ViIEFVVE9MT0FEIHsKCiAgICAjIENhdGNoIGFueSB1bmRlZmluZWQgc3ViIGNhbGxzIHNvIHRoYXQgd2UgYXJlIHN1cmUgdG8gZ2V0CiAgICAjIHNvbWUgZGlhZ25vc3RpYyBpbmZvcm1hdGlvbi4gIFRoaXMgc3ViIHNob3VsZCBuZXZlciBiZSBjYWxsZWQKICAgICMgZXhjZXB0IGZvciBhIHByb2dyYW1taW5nIGVycm9yLgogICAgb3VyICRBVVRPTE9BRDsKICAgIHJldHVybiBpZiAoICRBVVRPTE9BRCA9fiAvXGJERVNUUk9ZJC8gKTsKICAgIG15ICggJHBrZywgJGZuYW1lLCAkbG5vICkgPSBjYWxsZXIoKTsKICAgIG15ICRteV9wYWNrYWdlID0gX19QQUNLQUdFX187CiAgICBwcmludCBTVERFUlIgPDxFT007Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRXJyb3IgZGV0ZWN0ZWQgaW4gcGFja2FnZSAnJG15X3BhY2thZ2UnLCB2ZXJzaW9uICRWRVJTSU9OClJlY2VpdmVkIHVuZXhwZWN0ZWQgQVVUT0xPQUQgY2FsbCBmb3Igc3ViICckQVVUT0xPQUQnCkNhbGxlZCBmcm9tIHBhY2thZ2U6ICckcGtnJyAgCkNhbGxlZCBmcm9tIEZpbGUgJyRmbmFtZScgIGF0IGxpbmUgJyRsbm8nClRoaXMgZXJyb3IgaXMgcHJvYmFibHkgZHVlIHRvIGEgcmVjZW50IHByb2dyYW1taW5nIGNoYW5nZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVPTQogICAgZXhpdCAxOwp9CgpzdWIgREVTVFJPWSB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgJHNlbGYtPl9kZWNyZW1lbnRfY291bnQoKTsKICAgIHJldHVybjsKfQoKc3ViIERpZSB7CiAgICBteSAoJG1zZykgPSBAXzsKICAgIFBlcmw6OlRpZHk6OkRpZSgkbXNnKTsKICAgIGNyb2FrICJ1bmV4cGVjdGVkIHJldHVybiBmcm9tIFBlcmw6OlRpZHk6OkRpZSI7Cn0KCnN1YiBXYXJuIHsKICAgIG15ICgkbXNnKSA9IEBfOwogICAgUGVybDo6VGlkeTo6V2FybigkbXNnKTsKICAgIHJldHVybjsKfQoKc3ViIEZhdWx0IHsKICAgIG15ICgkbXNnKSA9IEBfOwoKICAgICMgVGhpcyByb3V0aW5lIGlzIGNhbGxlZCBmb3IgZXJyb3JzIHRoYXQgcmVhbGx5IHNob3VsZCBub3Qgb2NjdXIKICAgICMgZXhjZXB0IGlmIHRoZXJlIGhhcyBiZWVuIGEgYnVnIGludHJvZHVjZWQgYnkgYSByZWNlbnQgcHJvZ3JhbSBjaGFuZ2UuCiAgICAjIFBsZWFzZSBhZGQgY29tbWVudHMgYXQgY2FsbHMgdG8gRmF1bHQgdG8gZXhwbGFpbiB3aHkgdGhlIGNhbGwKICAgICMgc2hvdWxkIG5vdCBvY2N1ciwgYW5kIHdoZXJlIHRvIGxvb2sgdG8gZml4IGl0LgogICAgbXkgKCAkcGFja2FnZTAsICRmaWxlbmFtZTAsICRsaW5lMCwgJHN1YnJvdXRpbmUwICkgPSBjYWxsZXIoMCk7CiAgICBteSAoICRwYWNrYWdlMSwgJGZpbGVuYW1lMSwgJGxpbmUxLCAkc3Vicm91dGluZTEgKSA9IGNhbGxlcigxKTsKICAgIG15ICggJHBhY2thZ2UyLCAkZmlsZW5hbWUyLCAkbGluZTIsICRzdWJyb3V0aW5lMiApID0gY2FsbGVyKDIpOwogICAgbXkgJGlucHV0X3N0cmVhbV9uYW1lID0gZ2V0X2lucHV0X3N0cmVhbV9uYW1lKCk7CgogICAgRGllKDw8RU9NKTsKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoaWxlIG9wZXJhdGluZyBvbiBpbnB1dCBzdHJlYW0gd2l0aCBuYW1lOiAnJGlucHV0X3N0cmVhbV9uYW1lJwpBIGZhdWx0IHdhcyBkZXRlY3RlZCBhdCBsaW5lICRsaW5lMCBvZiBzdWIgJyRzdWJyb3V0aW5lMScKaW4gZmlsZSAnJGZpbGVuYW1lMScKd2hpY2ggd2FzIGNhbGxlZCBmcm9tIGxpbmUgJGxpbmUxIG9mIHN1YiAnJHN1YnJvdXRpbmUyJwpNZXNzYWdlOiAnJG1zZycKVGhpcyBpcyBwcm9iYWJseSBhbiBlcnJvciBpbnRyb2R1Y2VkIGJ5IGEgcmVjZW50IHByb2dyYW1taW5nIGNoYW5nZS4gClBlcmw6OlRpZHk6OkZvcm1hdHRlci5wbSByZXBvcnRzIFZFUlNJT049JyRWRVJTSU9OJy4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVPTQoKICAgICMgV2Ugc2hvdWxkbid0IGdldCBoZXJlLCBidXQgdGhpcyByZXR1cm4gaXMgdG8ga2VlcCBQZXJsLUNyaXRpYyBmcm9tCiAgICAjIGNvbXBsYWluaW5nLgogICAgcmV0dXJuOwp9CgpzdWIgRXhpdCB7CiAgICBteSAoJG1zZykgPSBAXzsKICAgIFBlcmw6OlRpZHk6OkV4aXQoJG1zZyk7CiAgICBjcm9hayAidW5leHBlY3RlZCByZXR1cm4gZnJvbSBQZXJsOjpUaWR5OjpFeGl0IjsKfQoKIyBHbG9iYWwgdmFyaWFibGVzIC4uLgpteSAoCgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIFNlY3Rpb24gMTogR2xvYmFsIHZhcmlhYmxlcyB3aGljaCBhcmUgZWl0aGVyIGFsd2F5cyBjb25zdGFudCBvcgogICAgIyBhcmUgY29uc3RhbnQgYWZ0ZXIgYmVpbmcgY29uZmlndXJlZCBieSB1c2VyLXN1cHBsaWVkCiAgICAjIHBhcmFtZXRlcnMuICBUaGV5IHJlbWFpbiBjb25zdGFudCBhcyBhIGZpbGUgaXMgYmVpbmcgcHJvY2Vzc2VkLgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgIyB1c2VyIHBhcmFtZXRlcnMgYW5kIHNob3J0Y3V0cwogICAgJHJPcHRzLAogICAgJHJPcHRzX2Nsb3Npbmdfc2lkZV9jb21tZW50X21heGltdW1fdGV4dCwKICAgICRyT3B0c19jb250aW51YXRpb25faW5kZW50YXRpb24sCiAgICAkck9wdHNfaW5kZW50X2NvbHVtbnMsCiAgICAkck9wdHNfbGluZV91cF9wYXJlbnRoZXNlcywKICAgICRyT3B0c19tYXhpbXVtX2xpbmVfbGVuZ3RoLAogICAgJHJPcHRzX3ZhcmlhYmxlX21heGltdW1fbGluZV9sZW5ndGgsCiAgICAkck9wdHNfYmxvY2tfYnJhY2VfdGlnaHRuZXNzLAogICAgJHJPcHRzX2Jsb2NrX2JyYWNlX3ZlcnRpY2FsX3RpZ2h0bmVzcywKICAgICRyT3B0c19zdGFja19jbG9zaW5nX2Jsb2NrX2JyYWNlLAogICAgJHJPcHRzX21heGltdW1fY29uc2VjdXRpdmVfYmxhbmtfbGluZXMsCgogICAgJHJPcHRzX3JlY29tYmluZSwKICAgICRyT3B0c19hZGRfbmV3bGluZXMsCiAgICAkck9wdHNfYnJlYWtfYXRfb2xkX2NvbW1hX2JyZWFrcG9pbnRzLAogICAgJHJPcHRzX2lnbm9yZV9vbGRfYnJlYWtwb2ludHMsCgogICAgJHJPcHRzX2tlZXBfaW50ZXJpb3Jfc2VtaWNvbG9ucywKICAgICRyT3B0c19jb21tYV9hcnJvd19icmVha3BvaW50cywKICAgICRyT3B0c19tYXhpbXVtX2ZpZWxkc19wZXJfdGFibGUsCiAgICAkck9wdHNfb25lX2xpbmVfYmxvY2tfc2VtaWNvbG9ucywKICAgICRyT3B0c19icmVha19hdF9vbGRfc2VtaWNvbG9uX2JyZWFrcG9pbnRzLAoKICAgICRyT3B0c190ZWVfc2lkZV9jb21tZW50cywKICAgICRyT3B0c190ZWVfYmxvY2tfY29tbWVudHMsCiAgICAkck9wdHNfdGVlX3BvZCwKICAgICRyT3B0c19kZWxldGVfc2lkZV9jb21tZW50cywKICAgICRyT3B0c19kZWxldGVfY2xvc2luZ19zaWRlX2NvbW1lbnRzLAogICAgJHJPcHRzX2Zvcm1hdF9za2lwcGluZywKICAgICRyT3B0c19pbmRlbnRfb25seSwKICAgICRyT3B0c19zdGF0aWNfYmxvY2tfY29tbWVudHMsCgogICAgIyBTdGF0aWMgaGFzaGVzIGluaXRpYWxpemVkIGluIGEgQkVHSU4gYmxvY2sKICAgICVpc19hc3NpZ25tZW50LAogICAgJWlzX2tleXdvcmRfcmV0dXJuaW5nX2xpc3QsCiAgICAlaXNfaWZfdW5sZXNzX2FuZF9vcl9sYXN0X25leHRfcmVkb19yZXR1cm4sCiAgICAlaXNfaWZfZWxzaWZfZWxzZV91bmxlc3Nfd2hpbGVfdW50aWxfZm9yX2ZvcmVhY2gsCiAgICAlaXNfaWZfdW5sZXNzX3doaWxlX3VudGlsX2ZvciwKICAgICVpc19sYXN0X25leHRfcmVkb19yZXR1cm4sCiAgICAlaXNfc29ydF9tYXBfZ3JlcCwKICAgICVpc19zb3J0X21hcF9ncmVwX2V2YWwsCiAgICAlaXNfaWZfdW5sZXNzLAogICAgJWlzX2FuZF9vciwKICAgICVpc19jaGFpbl9vcGVyYXRvciwKICAgICVpc19ibG9ja193aXRob3V0X3NlbWljb2xvbiwKICAgICVva190b19hZGRfc2VtaWNvbG9uX2Zvcl9ibG9ja190eXBlLAogICAgJWlzX29wZW5pbmdfdHlwZSwKICAgICVpc19jbG9zaW5nX3R5cGUsCiAgICAlaXNfb3BlbmluZ190b2tlbiwKICAgICVpc19jbG9zaW5nX3Rva2VuLAogICAgJWlzX2VxdWFsX29yX2ZhdF9jb21tYSwKICAgICVpc19ibG9ja193aXRoX2NpLAogICAgJWlzX2NvdW50ZWRfdHlwZSwKICAgICVpc19vcGVuaW5nX3NlcXVlbmNlX3Rva2VuLAogICAgJWlzX2Nsb3Npbmdfc2VxdWVuY2VfdG9rZW4sCiAgICAlaXNfY29udGFpbmVyX2xhYmVsX3R5cGUsCgogICAgIyBJbml0aWFsaXplZCBpbiBjaGVja19vcHRpb25zLiBUaGVzZSBhcmUgY29uc3RhbnRzIGFuZCBjb3VsZAogICAgIyBqdXN0IGFzIHdlbGwgYmUgaW5pdGlhbGl6ZWQgaW4gYSBCRUdJTiBibG9jay4KICAgICVpc19kb19mb2xsb3dlciwKICAgICVpc19pZl9icmFjZV9mb2xsb3dlciwKICAgICVpc19lbHNlX2JyYWNlX2ZvbGxvd2VyLAogICAgJWlzX2Fub25fc3ViX2JyYWNlX2ZvbGxvd2VyLAogICAgJWlzX2Fub25fc3ViXzFfYnJhY2VfZm9sbG93ZXIsCiAgICAlaXNfb3RoZXJfYnJhY2VfZm9sbG93ZXIsCgogICAgIyBJbml0aWFsaXplZCBpbiBzdWIgaW5pdGlhbGl6ZV93aGl0ZXNwYWNlX2hhc2hlczsKICAgICMgU29tZSBjYW4gYmUgbW9kaWZpZWQgYWNjb3JkaW5nIHRvIHVzZXIgcGFyYW1ldGVycy4KICAgICViaW5hcnlfd3NfcnVsZXMsCiAgICAld2FudF9sZWZ0X3NwYWNlLAogICAgJXdhbnRfcmlnaHRfc3BhY2UsCgogICAgIyBDb25maWd1cmVkIGluIHN1YiBpbml0aWFsaXplX2JvbmRfc3RyZW5ndGhfaGFzaGVzCiAgICAlcmlnaHRfYm9uZF9zdHJlbmd0aCwKICAgICVsZWZ0X2JvbmRfc3RyZW5ndGgsCgogICAgIyBIYXNoZXMgZm9yIC1rYmI9cyBhbmQgLWtiYT1zCiAgICAla2VlcF9icmVha19iZWZvcmVfdHlwZSwKICAgICVrZWVwX2JyZWFrX2FmdGVyX3R5cGUsCgogICAgIyBJbml0aWFsaXplZCBpbiBjaGVja19vcHRpb25zLCBtb2RpZmllZCBieSBwcmVwYXJlX2N1ZGRsZWRfYmxvY2tfdHlwZXM6CiAgICAld2FudF9vbmVfbGluZV9ibG9jaywKCiAgICAjIEluaXRpYWxpemVkIGluIHN1YiBwcmVwYXJlX2N1ZGRsZWRfYmxvY2tfdHlwZXMKICAgICRyY3VkZGxlZF9ibG9ja190eXBlcywKCiAgICAjIEluaXRpYWxpemVkIGFuZCBjb25maWd1cmVkIGluIGNoZWNrX29wdGlvbXMKICAgICVvdXRkZW50X2tleXdvcmQsCiAgICAla2V5d29yZF9wYXJlbl9pbm5lcl90aWdodG5lc3MsCgogICAgJXdhbnRfYnJlYWtfYmVmb3JlLAoKICAgICVicmVha19iZWZvcmVfY29udGFpbmVyX3R5cGVzLAogICAgJWNvbnRhaW5lcl9pbmRlbnRhdGlvbl9vcHRpb25zLAoKICAgICVzcGFjZV9hZnRlcl9rZXl3b3JkLAoKICAgICV0aWdodG5lc3MsCiAgICAlbWF0Y2hpbmdfdG9rZW4sCgogICAgJW9wZW5pbmdfdmVydGljYWxfdGlnaHRuZXNzLAogICAgJWNsb3NpbmdfdmVydGljYWxfdGlnaHRuZXNzLAogICAgJWNsb3NpbmdfdG9rZW5faW5kZW50YXRpb24sCiAgICAkc29tZV9jbG9zaW5nX3Rva2VuX2luZGVudGF0aW9uLAoKICAgICVvcGVuaW5nX3Rva2VuX3JpZ2h0LAogICAgJXN0YWNrX29wZW5pbmdfdG9rZW4sCiAgICAlc3RhY2tfY2xvc2luZ190b2tlbiwKCiAgICAld2VsZF9uZXN0ZWRfZXhjbHVzaW9uX3J1bGVzLAoKICAgICMgcmVnZXggcGF0dGVybnMgZm9yIHRleHQgaWRlbnRpZmljYXRpb24uCiAgICAjIE1vc3QgYXJlIGluaXRpYWxpemVkIGluIGEgc3ViIG1ha2VfKipfcGF0dGVybiBkdXJpbmcgY29uZmlndXJhdGlvbi4KICAgICMgTW9zdCBjYW4gYmUgY29uZmlndXJlZCBieSB1c2VyIHBhcmFtZXRlcnMuCiAgICAkU1VCX1BBVFRFUk4sCiAgICAkQVNVQl9QQVRURVJOLAogICAgJEFOWVNVQl9QQVRURVJOLAogICAgJHN0YXRpY19ibG9ja19jb21tZW50X3BhdHRlcm4sCiAgICAkc3RhdGljX3NpZGVfY29tbWVudF9wYXR0ZXJuLAogICAgJGZvcm1hdF9za2lwcGluZ19wYXR0ZXJuX2JlZ2luLAogICAgJGZvcm1hdF9za2lwcGluZ19wYXR0ZXJuX2VuZCwKICAgICRub25faW5kZW50aW5nX2JyYWNlX3BhdHRlcm4sCiAgICAkYmxpX3BhdHRlcm4sCiAgICAkYmxvY2tfYnJhY2VfdmVydGljYWxfdGlnaHRuZXNzX3BhdHRlcm4sCiAgICAkYmxhbmtfbGluZXNfYWZ0ZXJfb3BlbmluZ19ibG9ja19wYXR0ZXJuLAogICAgJGJsYW5rX2xpbmVzX2JlZm9yZV9jbG9zaW5nX2Jsb2NrX3BhdHRlcm4sCiAgICAka2V5d29yZF9ncm91cF9saXN0X3BhdHRlcm4sCiAgICAka2V5d29yZF9ncm91cF9saXN0X2NvbW1lbnRfcGF0dGVybiwKICAgICRjbG9zaW5nX3NpZGVfY29tbWVudF9wcmVmaXhfcGF0dGVybiwKICAgICRjbG9zaW5nX3NpZGVfY29tbWVudF9saXN0X3BhdHRlcm4sCgogICAgIyBUYWJsZSB0byBlZmZpY2llbnRseSBmaW5kIGluZGVudGF0aW9uIGFuZCBtYXggbGluZSBsZW5ndGgKICAgICMgZnJvbSBsZXZlbC4gIEluaXRpYWxpemVkIGluIHN1YiAnZmluZF9uZXN0ZWRfcGFpcnMnCiAgICBAbWF4aW11bV9saW5lX2xlbmd0aCwKCiAgICAjIFRvdGFsIG51bWJlciBvZiBzZXF1ZW5jZSBpdGVtcyBpbiBhIHdlbGQsIGZvciBxdWljayBjaGVja3MKICAgICR0b3RhbF93ZWxkX2NvdW50LAoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBTZWN0aW9uIDI6IFdvcmsgYXJyYXlzIGZvciB0aGUgY3VycmVudCBiYXRjaCBvZiB0b2tlbnMuCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAjIFRoZXNlIGFyZSByZS1pbml0aWFsaXplZCBmb3IgZWFjaCBiYXRjaCBvZiBjb2RlCiAgICAjIGluIHN1YiBpbml0aWFsaXplX2JhdGNoX3ZhcmlhYmxlcy4KICAgICRtYXhfaW5kZXhfdG9fZ28sCiAgICBAYmxvY2tfdHlwZV90b19nbywKICAgIEB0eXBlX3NlcXVlbmNlX3RvX2dvLAogICAgQGNvbnRhaW5lcl9lbnZpcm9ubWVudF90b19nbywKICAgIEBib25kX3N0cmVuZ3RoX3RvX2dvLAogICAgQGZvcmNlZF9icmVha3BvaW50X3RvX2dvLAogICAgQHRva2VuX2xlbmd0aHNfdG9fZ28sCiAgICBAc3VtbWVkX2xlbmd0aHNfdG9fZ28sCiAgICBAbGV2ZWxzX3RvX2dvLAogICAgQGxlYWRpbmdfc3BhY2VzX3RvX2dvLAogICAgQHJlZHVjZWRfc3BhY2VzX3RvX2dvLAogICAgQG1hdGVfaW5kZXhfdG9fZ28sCiAgICBAY2lfbGV2ZWxzX3RvX2dvLAogICAgQG5lc3RpbmdfZGVwdGhfdG9fZ28sCiAgICBAbm9icmVha190b19nbywKICAgIEBvbGRfYnJlYWtwb2ludF90b19nbywKICAgIEB0b2tlbnNfdG9fZ28sCiAgICBAS190b19nbywKICAgIEB0eXBlc190b19nbywKICAgIEBpbmV4dF90b19nbywKICAgIEBpcHJldl90b19nbywKCik7CgpCRUdJTiB7CgogICAgIyBJbml0aWFsaXplIGNvbnN0YW50cy4uLgoKICAgICMgQXJyYXkgaW5kZXggbmFtZXMgZm9yIHRva2VuIHZhcmlhYmxlcwogICAgbXkgJGkgPSAwOwogICAgdXNlIGNvbnN0YW50IHsKICAgICAgICBfQkxPQ0tfVFlQRV8gICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9DSV9MRVZFTF8gICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX0NPTlRBSU5FUl9FTlZJUk9OTUVOVF8gPT4gJGkrKywKICAgICAgICBfQ1VNVUxBVElWRV9MRU5HVEhfICAgICA9PiAkaSsrLAogICAgICAgIF9MSU5FX0lOREVYXyAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX0tORVhUX1NFUV9JVEVNXyAgICAgICAgPT4gJGkrKywKICAgICAgICBfTEVWRUxfICAgICAgICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9MRVZFTF9UUlVFXyAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX1NMRVZFTF8gICAgICAgICAgICAgICAgPT4gJGkrKywKICAgICAgICBfVE9LRU5fICAgICAgICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9UT0tFTl9MRU5HVEhfICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX1RZUEVfICAgICAgICAgICAgICAgICAgPT4gJGkrKywKICAgICAgICBfVFlQRV9TRVFVRU5DRV8gICAgICAgICA9PiAkaSsrLAoKICAgICAgICAjIE51bWJlciBvZiB0b2tlbiB2YXJpYWJsZXM7IG11c3QgYmUgbGFzdCBpbiBsaXN0OgogICAgICAgIF9OVkFSUyA9PiAkaSsrLAogICAgfTsKCiAgICAjIEFycmF5IGluZGV4IG5hbWVzIGZvciAkc2VsZiAod2hpY2ggaXMgYW4gYXJyYXkgcmVmKQogICAgJGkgPSAwOwogICAgdXNlIGNvbnN0YW50IHsKICAgICAgICBfcmxpbmVzXyAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3JsaW5lc19uZXdfICAgICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9yTExfICAgICAgICAgICAgICAgICAgICAgPT4gJGkrKywKICAgICAgICBfS2xpbWl0XyAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX0tfb3BlbmluZ19jb250YWluZXJfICAgICA9PiAkaSsrLAogICAgICAgIF9LX2Nsb3NpbmdfY29udGFpbmVyXyAgICAgPT4gJGkrKywKICAgICAgICBfS19vcGVuaW5nX3Rlcm5hcnlfICAgICAgID0+ICRpKyssCiAgICAgICAgX0tfY2xvc2luZ190ZXJuYXJ5XyAgICAgICA9PiAkaSsrLAogICAgICAgIF9LX2ZpcnN0X3NlcV9pdGVtXyAgICAgICAgPT4gJGkrKywKICAgICAgICBfcktfcGhhbnRvbV9zZW1pY29sb25zXyAgID0+ICRpKyssCiAgICAgICAgX3J0eXBlX2NvdW50X2J5X3NlcW5vXyAgICA9PiAkaSsrLAogICAgICAgIF9yaXNfYnJva2VuX2NvbnRhaW5lcl8gICAgPT4gJGkrKywKICAgICAgICBfcmhhc19icm9rZW5fY29udGFpbmVyXyAgID0+ICRpKyssCiAgICAgICAgX3Jpc19ibGlfY29udGFpbmVyXyAgICAgICA9PiAkaSsrLAogICAgICAgIF9ycGFyZW50X29mX3NlcW5vXyAgICAgICAgPT4gJGkrKywKICAgICAgICBfcmNoaWxkcmVuX29mX3NlcW5vXyAgICAgID0+ICRpKyssCiAgICAgICAgX3Jpc19saXN0X2J5X3NlcW5vXyAgICAgICA9PiAkaSsrLAogICAgICAgIF9yYnJlYWtfY29udGFpbmVyXyAgICAgICAgPT4gJGkrKywKICAgICAgICBfcnNob3J0X25lc3RlZF8gICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2xlbmd0aF9mdW5jdGlvbl8gICAgICAgICA9PiAkaSsrLAogICAgICAgIF9pc19lbmNvZGVkX2RhdGFfICAgICAgICAgPT4gJGkrKywKICAgICAgICBfZmhfdGVlXyAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3Npbmtfb2JqZWN0XyAgICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9maWxlX3dyaXRlcl9vYmplY3RfICAgICAgPT4gJGkrKywKICAgICAgICBfdmVydGljYWxfYWxpZ25lcl9vYmplY3RfID0+ICRpKyssCiAgICAgICAgX2xvZ2dlcl9vYmplY3RfICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9yYWRqdXN0ZWRfbGV2ZWxzXyAgICAgICAgPT4gJGkrKywKICAgICAgICBfdGhpc19iYXRjaF8gICAgICAgICAgICAgID0+ICRpKyssCgogICAgICAgIF9sYXN0X291dHB1dF9zaG9ydF9vcGVuaW5nX3Rva2VuXyA9PiAkaSsrLAoKICAgICAgICBfbGFzdF9saW5lX2xlYWRpbmdfdHlwZV8gICAgICAgPT4gJGkrKywKICAgICAgICBfbGFzdF9saW5lX2xlYWRpbmdfbGV2ZWxfICAgICAgPT4gJGkrKywKICAgICAgICBfbGFzdF9sYXN0X2xpbmVfbGVhZGluZ19sZXZlbF8gPT4gJGkrKywKCiAgICAgICAgX2FkZGVkX3NlbWljb2xvbl9jb3VudF8gICAgPT4gJGkrKywKICAgICAgICBfZmlyc3RfYWRkZWRfc2VtaWNvbG9uX2F0XyA9PiAkaSsrLAogICAgICAgIF9sYXN0X2FkZGVkX3NlbWljb2xvbl9hdF8gID0+ICRpKyssCgogICAgICAgIF9kZWxldGVkX3NlbWljb2xvbl9jb3VudF8gICAgPT4gJGkrKywKICAgICAgICBfZmlyc3RfZGVsZXRlZF9zZW1pY29sb25fYXRfID0+ICRpKyssCiAgICAgICAgX2xhc3RfZGVsZXRlZF9zZW1pY29sb25fYXRfICA9PiAkaSsrLAoKICAgICAgICBfZW1iZWRkZWRfdGFiX2NvdW50XyAgICA9PiAkaSsrLAogICAgICAgIF9maXJzdF9lbWJlZGRlZF90YWJfYXRfID0+ICRpKyssCiAgICAgICAgX2xhc3RfZW1iZWRkZWRfdGFiX2F0XyAgPT4gJGkrKywKCiAgICAgICAgX2ZpcnN0X3RhYmJpbmdfZGlzYWdyZWVtZW50XyAgICAgICA9PiAkaSsrLAogICAgICAgIF9sYXN0X3RhYmJpbmdfZGlzYWdyZWVtZW50XyAgICAgICAgPT4gJGkrKywKICAgICAgICBfdGFiYmluZ19kaXNhZ3JlZW1lbnRfY291bnRfICAgICAgID0+ICRpKyssCiAgICAgICAgX2luX3RhYmJpbmdfZGlzYWdyZWVtZW50XyAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9maXJzdF9icmFjZV90YWJiaW5nX2Rpc2FncmVlbWVudF8gPT4gJGkrKywKICAgICAgICBfaW5fYnJhY2VfdGFiYmluZ19kaXNhZ3JlZW1lbnRfICAgID0+ICRpKyssCgogICAgICAgIF9zYXdfVkVSU0lPTl9pbl90aGlzX2ZpbGVfID0+ICRpKyssCiAgICAgICAgX3Nhd19FTkRfb3JfREFUQV8gICAgICAgICAgPT4gJGkrKywKCiAgICAgICAgX3J3ZWxkX2xlbl9sZWZ0X2Nsb3NpbmdfICA9PiAkaSsrLAogICAgICAgIF9yd2VsZF9sZW5fcmlnaHRfY2xvc2luZ18gPT4gJGkrKywKICAgICAgICBfcndlbGRfbGVuX2xlZnRfb3BlbmluZ18gID0+ICRpKyssCiAgICAgICAgX3J3ZWxkX2xlbl9yaWdodF9vcGVuaW5nXyA9PiAkaSsrLAogICAgICAgIF9yaXNfd2VsZGVkX3NlcW5vXyAgICAgICAgPT4gJGkrKywKCiAgICAgICAgX3JzcGVjaWFsX3NpZGVfY29tbWVudF90eXBlXyA9PiAkaSsrLAoKICAgICAgICBfcnNlcW5vX2NvbnRyb2xsaW5nX215X2NpXyA9PiAkaSsrLAogICAgICAgIF9yaXNfc2Vxbm9fY29udHJvbGxpbmdfY2lfID0+ICRpKyssCiAgICAgICAgX3NhdmVfbG9nZmlsZV8gICAgICAgICAgICAgPT4gJGkrKywKICAgICAgICBfbWF4aW11bV9sZXZlbF8gICAgICAgICAgICA9PiAkaSsrLAoKICAgICAgICBfcktyYW5nZV9jb2RlX3dpdGhvdXRfY29tbWVudHNfID0+ICRpKyssCiAgICAgICAgX3JicmVha19iZWZvcmVfS2ZpcnN0XyAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9yYnJlYWtfYWZ0ZXJfS2xhc3RfICAgICAgICAgICAgPT4gJGkrKywKICAgICAgICBfY29udmVyZ2VkXyAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCgogICAgICAgIF9yc3RhcnRpbmdfbXVsdGlsaW5lX3F3X3NlcW5vX2J5X0tfID0+ICRpKyssCiAgICAgICAgX3JlbmRpbmdfbXVsdGlsaW5lX3F3X3NlcW5vX2J5X0tfICAgPT4gJGkrKywKICAgICAgICBfcktyYW5nZV9tdWx0aWxpbmVfcXdfYnlfc2Vxbm9fICAgICA9PiAkaSsrLAogICAgICAgIF9yY29udGFpbnNfbXVsdGlsaW5lX3F3X2J5X3NlcW5vXyAgID0+ICRpKyssCiAgICAgICAgX3JtdWx0aWxpbmVfcXdfaGFzX2V4dHJhX2xldmVsXyAgICAgPT4gJGkrKywKICAgIH07CgogICAgIyBBcnJheSBpbmRleCBuYW1lcyBmb3IgX3RoaXNfYmF0Y2hfIChpbiBhYm92ZSBsaXN0KQogICAgIyBTbyBfdGhpc19iYXRjaF8gaXMgYSBzdWItYXJyYXkgb2YgJHNlbGYgZm9yCiAgICAjIGhvbGRpbmcgdGhlIGJhdGNoZXMgb2YgdG9rZW5zIGJlaW5nIHByb2Nlc3NlZC4KICAgICRpID0gMDsKICAgIHVzZSBjb25zdGFudCB7CiAgICAgICAgX3N0YXJ0aW5nX2luX3F1b3RlXyAgICAgICAgPT4gJGkrKywKICAgICAgICBfZW5kaW5nX2luX3F1b3RlXyAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9pc19zdGF0aWNfYmxvY2tfY29tbWVudF8gID0+ICRpKyssCiAgICAgICAgX3JsaW5lc19LXyAgICAgICAgICAgICAgICAgPT4gJGkrKywKICAgICAgICBfZG9fbm90X3BhZF8gICAgICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9pYmVnMF8gICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3BlYWtfYmF0Y2hfc2l6ZV8gICAgICAgICAgPT4gJGkrKywKICAgICAgICBfbWF4X2luZGV4X3RvX2dvXyAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9yS190b19nb18gICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2JhdGNoX2NvdW50XyAgICAgICAgICAgICAgPT4gJGkrKywKICAgICAgICBfcml4X3NlcW5vX2NvbnRyb2xsaW5nX2NpXyA9PiAkaSsrLAogICAgICAgIF9iYXRjaF9DT0RFX3R5cGVfICAgICAgICAgID0+ICRpKyssCiAgICB9OwoKICAgICMgU2VxdWVuY2UgbnVtYmVyIGFzc2lnbmVkIHRvIHRoZSByb290IG9mIHNlcXVlbmNlIHRyZWUuCiAgICAjIFRoZSBtaW5pbXVtIG9mIHRoZSBhY3R1YWwgc2VxdWVuY2VzIG51bWJlcnMgaXMgNCwgc28gd2UgY2FuIHVzZSAxCiAgICB1c2UgY29uc3RhbnQgU0VRX1JPT1QgPT4gMTsKCiAgICAjIENvZGVzIGZvciBpbnNlcnRpb24gYW5kIGRlbGV0aW9uIG9mIGJsYW5rcwogICAgdXNlIGNvbnN0YW50IERFTEVURSA9PiAwOwogICAgdXNlIGNvbnN0YW50IFNUQUJMRSA9PiAxOwogICAgdXNlIGNvbnN0YW50IElOU0VSVCA9PiAyOwoKICAgICMgd2hpdGVzcGFjZSBjb2RlcwogICAgdXNlIGNvbnN0YW50IFdTX1lFUyAgICAgID0+IDE7CiAgICB1c2UgY29uc3RhbnQgV1NfT1BUSU9OQUwgPT4gMDsKICAgIHVzZSBjb25zdGFudCBXU19OTyAgICAgICA9PiAtMTsKCiAgICAjIFRva2VuIGJvbmQgc3RyZW5ndGhzLgogICAgdXNlIGNvbnN0YW50IE5PX0JSRUFLICAgID0+IDEwMDAwOwogICAgdXNlIGNvbnN0YW50IFZFUllfU1RST05HID0+IDEwMDsKICAgIHVzZSBjb25zdGFudCBTVFJPTkcgICAgICA9PiAyLjE7CiAgICB1c2UgY29uc3RhbnQgTk9NSU5BTCAgICAgPT4gMS4xOwogICAgdXNlIGNvbnN0YW50IFdFQUsgICAgICAgID0+IDAuODsKICAgIHVzZSBjb25zdGFudCBWRVJZX1dFQUsgICA9PiAwLjU1OwoKICAgICMgdmFsdWVzIGZvciB0ZXN0aW5nIGluZGV4ZXMgaW4gb3V0cHV0IGFycmF5CiAgICB1c2UgY29uc3RhbnQgVU5ERUZJTkVEX0lOREVYID0+IC0xOwoKICAgICMgTWF4aW11bSBudW1iZXIgb2YgbGl0dGxlIG1lc3NhZ2VzOyBwcm9iYWJseSBuZWVkIG5vdCBiZSBjaGFuZ2VkLgogICAgdXNlIGNvbnN0YW50IE1BWF9OQUdfTUVTU0FHRVMgPT4gNjsKCiAgICAjIGluY3JlbWVudCBiZXR3ZWVuIHNlcXVlbmNlIG51bWJlcnMgZm9yIGVhY2ggdHlwZQogICAgIyBGb3IgZXhhbXBsZSwgPzogcGFpcnMgbWlnaHQgaGF2ZSBudW1iZXJzIDcsMTEsMTUsLi4uCiAgICB1c2UgY29uc3RhbnQgVFlQRV9TRVFVRU5DRV9JTkNSRU1FTlQgPT4gNDsKCiAgICAjIEluaXRpYWxpemUgY29uc3RhbnQgaGFzaGVzIC4uLgogICAgbXkgQHE7CgogICAgQHEgPSBxdygKICAgICAgPSAqKj0gKz0gKj0gJj0gPDw9ICYmPQogICAgICAtPSAvPSB8PSA+Pj0gfHw9IC8vPQogICAgICAuPSAlPSBePQogICAgICB4PQogICAgKTsKICAgIEBpc19hc3NpZ25tZW50e0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgQHEgPSBxdygKICAgICAgZ3JlcAogICAgICBrZXlzCiAgICAgIG1hcAogICAgICByZXZlcnNlCiAgICAgIHNvcnQKICAgICAgc3BsaXQKICAgICk7CiAgICBAaXNfa2V5d29yZF9yZXR1cm5pbmdfbGlzdHtAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgIEBxID0gcXcoaXMgaWYgdW5sZXNzIGFuZCBvciBlcnIgbGFzdCBuZXh0IHJlZG8gcmV0dXJuKTsKICAgIEBpc19pZl91bmxlc3NfYW5kX29yX2xhc3RfbmV4dF9yZWRvX3JldHVybntAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICMgVGhlc2UgYmxvY2sgdHlwZXMgbWF5IGhhdmUgdGV4dCBiZXR3ZWVuIHRoZSBrZXl3b3JkIGFuZCBvcGVuaW5nCiAgICAjIGN1cmx5LiAgTm90ZTogJ2Vsc2UnIGRvZXMgbm90LCBidXQgbXVzdCBiZSBpbmNsdWRlZCB0byBhbGxvdyB0cmFpbGluZwogICAgIyBpZi9lbHNpZiB0ZXh0IHRvIGJlIGFwcGVuZGVkLgogICAgIyBwYXRjaCBmb3IgU1dJVENIL0NBU0U6IGFkZGVkICdjYXNlJyBhbmQgJ3doZW4nCiAgICBAcSA9IHF3KGlmIGVsc2lmIGVsc2UgdW5sZXNzIHdoaWxlIHVudGlsIGZvciBmb3JlYWNoIGNhc2Ugd2hlbiBjYXRjaCk7CiAgICBAaXNfaWZfZWxzaWZfZWxzZV91bmxlc3Nfd2hpbGVfdW50aWxfZm9yX2ZvcmVhY2h7QHF9ID0KICAgICAgKDEpIHggc2NhbGFyKEBxKTsKCiAgICBAcSA9IHF3KGlmIHVubGVzcyB3aGlsZSB1bnRpbCBmb3IpOwogICAgQGlzX2lmX3VubGVzc193aGlsZV91bnRpbF9mb3J7QHF9ID0KICAgICAgKDEpIHggc2NhbGFyKEBxKTsKCiAgICBAcSA9IHF3KGxhc3QgbmV4dCByZWRvIHJldHVybik7CiAgICBAaXNfbGFzdF9uZXh0X3JlZG9fcmV0dXJue0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgQHEgPSBxdyhzb3J0IG1hcCBncmVwKTsKICAgIEBpc19zb3J0X21hcF9ncmVwe0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgQHEgPSBxdyhzb3J0IG1hcCBncmVwIGV2YWwpOwogICAgQGlzX3NvcnRfbWFwX2dyZXBfZXZhbHtAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgIEBxID0gcXcoaWYgdW5sZXNzKTsKICAgIEBpc19pZl91bmxlc3N7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICBAcSA9IHF3KGFuZCBvciBlcnIpOwogICAgQGlzX2FuZF9vcntAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICMgSWRlbnRpZnkgY2VydGFpbiBvcGVyYXRvcnMgd2hpY2ggb2Z0ZW4gb2NjdXIgaW4gY2hhaW5zLgogICAgIyBOb3RlOiB0aGUgbWludXMgKC0pIGNhdXNlcyBhIHNpZGUgZWZmZWN0IG9mIHBhZGRpbmcgb2YgdGhlIGZpcnN0IGxpbmUgaW4KICAgICMgc29tZXRoaW5nIGxpa2UgdGhpcyAoYnkgc3ViIHNldF9sb2dpY2FsX3BhZGRpbmcpOgogICAgIyAgICBDaGVja2J1dHRvbiA9PiAnVHJhbnNtaXNzaW9uIGNoZWNrZWQnLAogICAgIyAgIC12YXJpYWJsZSAgICA9PiBcJFRSQU5TCiAgICAjIFRoaXMgdXN1YWxseSBpbXByb3ZlcyBhcHBlYXJhbmNlIHNvIGl0IHNlZW1zIG9rLgogICAgQHEgPSBxdygmJiB8fCBhbmQgb3IgOiA/IC4gKyAtICogLyk7CiAgICBAaXNfY2hhaW5fb3BlcmF0b3J7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICAjIFdlIGNhbiByZW1vdmUgc2VtaWNvbG9ucyBhZnRlciBibG9ja3MgcHJlY2VkZWQgYnkgdGhlc2Uga2V5d29yZHMKICAgIEBxID0KICAgICAgcXcoQkVHSU4gRU5EIENIRUNLIElOSVQgQVVUT0xPQUQgREVTVFJPWSBVTklUQ0hFQ0sgY29udGludWUgaWYgZWxzaWYgZWxzZQogICAgICB1bmxlc3Mgd2hpbGUgdW50aWwgZm9yIGZvcmVhY2ggZ2l2ZW4gd2hlbiBkZWZhdWx0KTsKICAgIEBpc19ibG9ja193aXRob3V0X3NlbWljb2xvbntAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICMgV2Ugd2lsbCBhbGxvdyBzZW1pY29sb25zIHRvIGJlIGFkZGVkIHdpdGhpbiB0aGVzZSBibG9jayB0eXBlcwogICAgIyBhcyB3ZWxsIGFzIHN1YiBhbmQgcGFja2FnZSBibG9ja3MuCiAgICAjIE5PVEVTOgogICAgIyAxLiBOb3RlIHRoYXQgdGhlc2Uga2V5d29yZHMgYXJlIG9taXR0ZWQ6CiAgICAjICAgICBzd2l0Y2ggY2FzZSBnaXZlbiB3aGVuIGRlZmF1bHQgc29ydCBtYXAgZ3JlcAogICAgIyAyLiBJdCBpcyBhbHNvIG9rIHRvIGFkZCBmb3Igc3ViIGFuZCBwYWNrYWdlIGJsb2NrcyBhbmQgYSBsYWJlbGVkIGJsb2NrCiAgICAjIDMuIEJ1dCBub3Qgb2theSBmb3Igb3RoZXIgcGVybHRpZHkgdHlwZXMgaW5jbHVkaW5nOgogICAgIyAgICAgeyB9IDsgRyB0CiAgICAjIDQuIFRlc3QgZmlsZXM6IGJsa3R5cGUudCwgYmxrdHlwZTEudCwgc2VtaWNvbG9uLnQKICAgIEBxID0KICAgICAgcXcoIEJFR0lOIEVORCBDSEVDSyBJTklUIEFVVE9MT0FEIERFU1RST1kgVU5JVENIRUNLIGNvbnRpbnVlIGlmIGVsc2lmIGVsc2UKICAgICAgdW5sZXNzIGRvIHdoaWxlIHVudGlsIGV2YWwgZm9yIGZvcmVhY2ggKTsKICAgIEBva190b19hZGRfc2VtaWNvbG9uX2Zvcl9ibG9ja190eXBle0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgIyAnTCcgaXMgdG9rZW4gZm9yIG9wZW5pbmcgeyBhdCBoYXNoIGtleQogICAgQHEgPSBxdzwgTCB7ICggWyA+OwogICAgQGlzX29wZW5pbmdfdHlwZXtAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICMgJ1InIGlzIHRva2VuIGZvciBjbG9zaW5nIH0gYXQgaGFzaCBrZXkKICAgIEBxID0gcXc8IFIgfSApIF0gPjsKICAgIEBpc19jbG9zaW5nX3R5cGV7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICBAcSA9IHF3PCB7ICggWyA+OwogICAgQGlzX29wZW5pbmdfdG9rZW57QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICBAcSA9IHF3PCB9ICkgXSA+OwogICAgQGlzX2Nsb3NpbmdfdG9rZW57QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICBAcSA9IHF3PCB7ICggWyA/ID47CiAgICBAaXNfb3BlbmluZ19zZXF1ZW5jZV90b2tlbntAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgIEBxID0gcXc8IH0gKSBdIDogPjsKICAgIEBpc19jbG9zaW5nX3NlcXVlbmNlX3Rva2Vue0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgIyBhIGhhc2ggbmVlZGVkIGJ5IHN1YiBzY2FuX2xpc3QgZm9yIGxhYmVsaW5nIGNvbnRhaW5lcnMKICAgIEBxID0gcXcoIGsgPT4gJiYgfHwgPyA6IC4gKTsKICAgIEBpc19jb250YWluZXJfbGFiZWxfdHlwZXtAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICMgQnJhY2VzIC1iYmh0IGV0YyBtdXN0IGZvbGxvdyB0aGVzZS4gTm90ZTogZXhwZXJpbWVudGF0aW9uIHdpdGgKICAgICMgaW5jbHVkaW5nIGEgc2ltcGxlIGNvbW1hIHNob3dzIHRoYXQgaXQgYWRkcyBsaXR0bGUgYW5kIGNhbiBsZWFkCiAgICAjIHRvIHBvb3IgZm9ybWF0dGluZyBpbiBjb21wbGV4IGxpc3RzLgogICAgQHEgPSBxdyggPSA9PiApOwogICAgQGlzX2VxdWFsX29yX2ZhdF9jb21tYXtAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgIEBxID0gcXcoID0+IDsgKTsKICAgIHB1c2ggQHEsICcsJzsKICAgIEBpc19jb3VudGVkX3R5cGV7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICAjIFRoZXNlIGJsb2NrIHR5cGVzIGNhbiB0YWtlIGNpLiAgVGhpcyBpcyB1c2VkIGJ5IHRoZSAteGNpIG9wdGlvbi4KICAgICMgTm90ZSB0aGF0IHRoZSAnc3ViJyBpbiB0aGlzIGxpc3QgaXMgYW4gYW5vbnltb3VzIHN1Yi4gIFRvIGJlIG1vcmUgY29ycmVjdAogICAgIyB3ZSBjb3VsZCByZW1vdmUgc3ViIGFuZCB1c2UgQVNVQiBwYXR0ZXJuIHRvIGFsc28gaGFuZGxlIGEKICAgICMgcHJvdG90eXBlL3NpZ25hdHVyZS4gIEJ1dCB0aGF0IHdvdWxkIHNsb3cgdGhpbmdzIGRvd24gYW5kIHdvdWxkIHByb2JhYmx5CiAgICAjIG5ldmVyIGJlIHVzZWZ1bC4KICAgIEBxID0gcXcoIGRvIHN1YiBldmFsIHNvcnQgbWFwIGdyZXAgKTsKICAgIEBpc19ibG9ja193aXRoX2Npe0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7Cgp9Cgp7ICAgICMjIGJlZ2luIGNsb3N1cmUgdG8gY291bnQgaW5zdGFuZXMKCiAgICAjIG1ldGhvZHMgdG8gY291bnQgaW5zdGFuY2VzCiAgICBteSAkX2NvdW50ID0gMDsKICAgIHN1YiBnZXRfY291bnQgICAgICAgIHsgcmV0dXJuICRfY291bnQ7IH0KICAgIHN1YiBfaW5jcmVtZW50X2NvdW50IHsgcmV0dXJuICsrJF9jb3VudCB9CiAgICBzdWIgX2RlY3JlbWVudF9jb3VudCB7IHJldHVybiAtLSRfY291bnQgfQp9ICMjIGVuZCBjbG9zdXJlIHRvIGNvdW50IGluc3RhbmVzCgpzdWIgbmV3IHsKCiAgICBteSAoICRjbGFzcywgQGFyZ3MgKSA9IEBfOwoKICAgICMgd2UgYXJlIGdpdmVuIGFuIG9iamVjdCB3aXRoIGEgd3JpdGVfbGluZSgpIG1ldGhvZCB0byB0YWtlIGxpbmVzCiAgICBteSAlZGVmYXVsdHMgPSAoCiAgICAgICAgc2lua19vYmplY3QgICAgICAgID0+IHVuZGVmLAogICAgICAgIGRpYWdub3N0aWNzX29iamVjdCA9PiB1bmRlZiwKICAgICAgICBsb2dnZXJfb2JqZWN0ICAgICAgPT4gdW5kZWYsCiAgICAgICAgbGVuZ3RoX2Z1bmN0aW9uICAgID0+IHN1YiB7IHJldHVybiBsZW5ndGgoICRfWzBdICkgfSwKICAgICAgICBpc19lbmNvZGVkX2RhdGEgICAgPT4gIiIsCiAgICAgICAgZmhfdGVlICAgICAgICAgICAgID0+IHVuZGVmLAogICAgKTsKICAgIG15ICVhcmdzID0gKCAlZGVmYXVsdHMsIEBhcmdzICk7CgogICAgbXkgJGxlbmd0aF9mdW5jdGlvbiAgICA9ICRhcmdze2xlbmd0aF9mdW5jdGlvbn07CiAgICBteSAkaXNfZW5jb2RlZF9kYXRhICAgID0gJGFyZ3N7aXNfZW5jb2RlZF9kYXRhfTsKICAgIG15ICRmaF90ZWUgICAgICAgICAgICAgPSAkYXJnc3tmaF90ZWV9OwogICAgbXkgJGxvZ2dlcl9vYmplY3QgICAgICA9ICRhcmdze2xvZ2dlcl9vYmplY3R9OwogICAgbXkgJGRpYWdub3N0aWNzX29iamVjdCA9ICRhcmdze2RpYWdub3N0aWNzX29iamVjdH07CgogICAgIyB3ZSBjcmVhdGUgYW5vdGhlciBvYmplY3Qgd2l0aCBhIGdldF9saW5lKCkgYW5kIHBlZWtfYWhlYWQoKSBtZXRob2QKICAgIG15ICRzaW5rX29iamVjdCA9ICRhcmdze3Npbmtfb2JqZWN0fTsKICAgIG15ICRmaWxlX3dyaXRlcl9vYmplY3QgPQogICAgICBQZXJsOjpUaWR5OjpGaWxlV3JpdGVyLT5uZXcoICRzaW5rX29iamVjdCwgJHJPcHRzLCAkbG9nZ2VyX29iamVjdCApOwoKICAgICMgaW5pdGlhbGl6ZSBjbG9zdXJlIHZhcmlhYmxlcy4uLgogICAgc2V0X2xvZ2dlcl9vYmplY3QoJGxvZ2dlcl9vYmplY3QpOwogICAgc2V0X2RpYWdub3N0aWNzX29iamVjdCgkZGlhZ25vc3RpY3Nfb2JqZWN0KTsKICAgIGluaXRpYWxpemVfZ251X3ZhcnMoKTsKICAgIGluaXRpYWxpemVfY3NjX3ZhcnMoKTsKICAgIGluaXRpYWxpemVfc2Nhbl9saXN0KCk7CiAgICBpbml0aWFsaXplX3NhdmVkX29wZW5pbmdfaW5kZW50YXRpb24oKTsKICAgIGluaXRpYWxpemVfdW5kb19jaSgpOwogICAgaW5pdGlhbGl6ZV9wcm9jZXNzX2xpbmVfb2ZfQ09ERSgpOwogICAgaW5pdGlhbGl6ZV9ncmluZF9iYXRjaF9vZl9DT0RFKCk7CiAgICBpbml0aWFsaXplX2FkanVzdGVkX2luZGVudGF0aW9uKCk7CiAgICBpbml0aWFsaXplX3Bvc3Rwb25lZF9icmVha3BvaW50KCk7CiAgICBpbml0aWFsaXplX2JhdGNoX3ZhcmlhYmxlcygpOwogICAgaW5pdGlhbGl6ZV9mb3JjZWRfYnJlYWtwb2ludF92YXJzKCk7CiAgICBpbml0aWFsaXplX2dudV9iYXRjaF92YXJzKCk7CiAgICBpbml0aWFsaXplX3dyaXRlX2xpbmUoKTsKCiAgICBteSAkdmVydGljYWxfYWxpZ25lcl9vYmplY3QgPSBQZXJsOjpUaWR5OjpWZXJ0aWNhbEFsaWduZXItPm5ldygKICAgICAgICByT3B0cyAgICAgICAgICAgICAgPT4gJHJPcHRzLAogICAgICAgIGZpbGVfd3JpdGVyX29iamVjdCA9PiAkZmlsZV93cml0ZXJfb2JqZWN0LAogICAgICAgIGxvZ2dlcl9vYmplY3QgICAgICA9PiAkbG9nZ2VyX29iamVjdCwKICAgICAgICBkaWFnbm9zdGljc19vYmplY3QgPT4gJGRpYWdub3N0aWNzX29iamVjdCwKICAgICAgICBsZW5ndGhfZnVuY3Rpb24gICAgPT4gJGxlbmd0aF9mdW5jdGlvbgogICAgKTsKCiAgICBpZiAoICRyT3B0cy0+eydlbnRhYi1sZWFkaW5nLXdoaXRlc3BhY2UnfSApIHsKICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KAoiTGVhZGluZyB3aGl0ZXNwYWNlIHdpbGwgYmUgZW50YWJiZWQgd2l0aCAkck9wdHMtPnsnZW50YWItbGVhZGluZy13aGl0ZXNwYWNlJ30gc3BhY2VzIHBlciB0YWJcbiIKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkck9wdHMtPnsndGFicyd9ICkgewogICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoIkluZGVudGF0aW9uIHdpbGwgYmUgd2l0aCBhIHRhYiBjaGFyYWN0ZXJcbiIpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgKICAgICAgICAgICAgIkluZGVudGF0aW9uIHdpbGwgYmUgd2l0aCAkck9wdHMtPnsnaW5kZW50LWNvbHVtbnMnfSBzcGFjZXNcbiIpOwogICAgfQoKICAgICMgSW5pdGlhbGl6ZSB0aGUgJHNlbGYgYXJyYXkgcmVmZXJlbmNlLgogICAgIyBUbyBhZGQgYW4gaXRlbSwgZmlyc3QgYWRkIGEgY29uc3RhbnQgaW5kZXggaW4gdGhlIEJFR0lOIGJsb2NrIGFib3ZlLgogICAgbXkgJHNlbGYgPSBbXTsKCiAgICAjIEJhc2ljIGRhdGEgc3RydWN0dXJlcy4uLgogICAgJHNlbGYtPltfcmxpbmVzX10gICAgID0gW107ICAgICAgICMgPSByZWYgdG8gYXJyYXkgb2YgbGluZXMgb2YgdGhlIGZpbGUKICAgICRzZWxmLT5bX3JsaW5lc19uZXdfXSA9IFtdOyAgICAgICAjID0gcmVmIHRvIGFycmF5IG9mIG91dHB1dCBsaW5lcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAoRk9SIEZVVFVSRSBERVZFTE9QTUVOVCkKICAgICRzZWxmLT5bX3JMTF9dICAgICAgICA9IFtdOyAgICAgICAjID0gcmVmIHRvIGFycmF5IHdpdGggYWxsIHRva2VucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaW4gdGhlIGZpbGUuIExMIG9yaWdpbmFsbHkgbWVhbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICdMaW5rZWQgTGlzdCcuIExpbmtlZCBsaXN0cyB3ZXJlIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJhZCBpZGVhIGJ1dCBMTCBpcyBlYXN5IHRvIHR5cGUuCiAgICAkc2VsZi0+W19LbGltaXRfXSAgICAgPSB1bmRlZjsgICAgIyA9IG1heGltdW0gSyBpbmRleCBmb3IgckxMLgogICAgJHNlbGYtPltfS19vcGVuaW5nX2NvbnRhaW5lcl9dID0ge307ICAgICMgZm9yIHF1aWNrbHkgdHJhdmVyc2luZyBzdHJ1Y3R1cmUKICAgICRzZWxmLT5bX0tfY2xvc2luZ19jb250YWluZXJfXSA9IHt9OyAgICAjIGZvciBxdWlja2x5IHRyYXZlcnNpbmcgc3RydWN0dXJlCiAgICAkc2VsZi0+W19LX29wZW5pbmdfdGVybmFyeV9dICAgPSB7fTsgICAgIyBmb3IgcXVpY2tseSB0cmF2ZXJzaW5nIHN0cnVjdHVyZQogICAgJHNlbGYtPltfS19jbG9zaW5nX3Rlcm5hcnlfXSAgID0ge307ICAgICMgZm9yIHF1aWNrbHkgdHJhdmVyc2luZyBzdHJ1Y3R1cmUKICAgICRzZWxmLT5bX0tfZmlyc3Rfc2VxX2l0ZW1fXSAgICA9IHVuZGVmOyAjIEsgb2YgZmlyc3QgdG9rZW4gd2l0aCBhIHNlcXVlbmNlICMKICAgICRzZWxmLT5bX3JLX3BoYW50b21fc2VtaWNvbG9uc19dID0KICAgICAgdW5kZWY7ICAgICMgZm9yIHVuZG9pbmcgcGhhbnRvbSBzZW1pY29sb25zIGlmIGl0ZXJhdGluZwogICAgJHNlbGYtPltfcnR5cGVfY291bnRfYnlfc2Vxbm9fXSAgPSB7fTsKICAgICRzZWxmLT5bX3Jpc19icm9rZW5fY29udGFpbmVyX10gID0ge307CiAgICAkc2VsZi0+W19yaGFzX2Jyb2tlbl9jb250YWluZXJfXSA9IHt9OwogICAgJHNlbGYtPltfcmlzX2JsaV9jb250YWluZXJfXSAgICAgPSB7fTsKICAgICRzZWxmLT5bX3JwYXJlbnRfb2Zfc2Vxbm9fXSAgICAgID0ge307CiAgICAkc2VsZi0+W19yY2hpbGRyZW5fb2Zfc2Vxbm9fXSAgICA9IHt9OwogICAgJHNlbGYtPltfcmlzX2xpc3RfYnlfc2Vxbm9fXSAgICAgPSB7fTsKICAgICRzZWxmLT5bX3JicmVha19jb250YWluZXJfXSAgICAgID0ge307ICAgICMgcHJldmVudCBvbmUtbGluZSBibG9ja3MKICAgICRzZWxmLT5bX3JzaG9ydF9uZXN0ZWRfXSAgICAgICAgID0ge307ICAgICMgYmxvY2tzIG5vdCBmb3JjZWQgb3BlbgogICAgJHNlbGYtPltfbGVuZ3RoX2Z1bmN0aW9uX10gICAgICAgPSAkbGVuZ3RoX2Z1bmN0aW9uOwogICAgJHNlbGYtPltfaXNfZW5jb2RlZF9kYXRhX10gICAgICAgPSAkaXNfZW5jb2RlZF9kYXRhOwoKICAgICMgU29tZSBvYmplY3RzLi4uCiAgICAkc2VsZi0+W19maF90ZWVfXSAgICAgICAgICAgICAgICAgID0gJGZoX3RlZTsKICAgICRzZWxmLT5bX3Npbmtfb2JqZWN0X10gICAgICAgICAgICAgPSAkc2lua19vYmplY3Q7CiAgICAkc2VsZi0+W19maWxlX3dyaXRlcl9vYmplY3RfXSAgICAgID0gJGZpbGVfd3JpdGVyX29iamVjdDsKICAgICRzZWxmLT5bX3ZlcnRpY2FsX2FsaWduZXJfb2JqZWN0X10gPSAkdmVydGljYWxfYWxpZ25lcl9vYmplY3Q7CiAgICAkc2VsZi0+W19sb2dnZXJfb2JqZWN0X10gICAgICAgICAgID0gJGxvZ2dlcl9vYmplY3Q7CgogICAgIyBSZWZlcmVuY2UgdG8gdGhlIGJhdGNoIGJlaW5nIHByb2Nlc3NlZAogICAgJHNlbGYtPltfdGhpc19iYXRjaF9dID0gW107CgogICAgIyBNZW1vcnkgb2YgcHJvY2Vzc2VkIHRleHQuLi4KICAgICRzZWxmLT5bX2xhc3RfbGFzdF9saW5lX2xlYWRpbmdfbGV2ZWxfXSAgICA9IDA7CiAgICAkc2VsZi0+W19sYXN0X2xpbmVfbGVhZGluZ19sZXZlbF9dICAgICAgICAgPSAwOwogICAgJHNlbGYtPltfbGFzdF9saW5lX2xlYWRpbmdfdHlwZV9dICAgICAgICAgID0gJyMnOwogICAgJHNlbGYtPltfbGFzdF9vdXRwdXRfc2hvcnRfb3BlbmluZ190b2tlbl9dID0gMDsKICAgICRzZWxmLT5bX2FkZGVkX3NlbWljb2xvbl9jb3VudF9dICAgICAgICAgICA9IDA7CiAgICAkc2VsZi0+W19maXJzdF9hZGRlZF9zZW1pY29sb25fYXRfXSAgICAgICAgPSAwOwogICAgJHNlbGYtPltfbGFzdF9hZGRlZF9zZW1pY29sb25fYXRfXSAgICAgICAgID0gMDsKICAgICRzZWxmLT5bX2RlbGV0ZWRfc2VtaWNvbG9uX2NvdW50X10gICAgICAgICA9IDA7CiAgICAkc2VsZi0+W19maXJzdF9kZWxldGVkX3NlbWljb2xvbl9hdF9dICAgICAgPSAwOwogICAgJHNlbGYtPltfbGFzdF9kZWxldGVkX3NlbWljb2xvbl9hdF9dICAgICAgID0gMDsKICAgICRzZWxmLT5bX2VtYmVkZGVkX3RhYl9jb3VudF9dICAgICAgICAgICAgICA9IDA7CiAgICAkc2VsZi0+W19maXJzdF9lbWJlZGRlZF90YWJfYXRfXSAgICAgICAgICAgPSAwOwogICAgJHNlbGYtPltfbGFzdF9lbWJlZGRlZF90YWJfYXRfXSAgICAgICAgICAgID0gMDsKICAgICRzZWxmLT5bX2ZpcnN0X3RhYmJpbmdfZGlzYWdyZWVtZW50X10gICAgICA9IDA7CiAgICAkc2VsZi0+W19sYXN0X3RhYmJpbmdfZGlzYWdyZWVtZW50X10gICAgICAgPSAwOwogICAgJHNlbGYtPltfdGFiYmluZ19kaXNhZ3JlZW1lbnRfY291bnRfXSAgICAgID0gMDsKICAgICRzZWxmLT5bX2luX3RhYmJpbmdfZGlzYWdyZWVtZW50X10gICAgICAgICA9IDA7CiAgICAkc2VsZi0+W19zYXdfVkVSU0lPTl9pbl90aGlzX2ZpbGVfXSAgICAgICAgPSAhJHJPcHRzLT57J3Bhc3MtdmVyc2lvbi1saW5lJ307CiAgICAkc2VsZi0+W19zYXdfRU5EX29yX0RBVEFfXSAgICAgICAgICAgICAgICAgPSAwOwoKICAgICMgSGFzaGVzIHJlbGF0ZWQgdG8gY29udGFpbmVyIHdlbGRpbmcuLi4KICAgICRzZWxmLT5bX3JhZGp1c3RlZF9sZXZlbHNfXSAgICAgICAgPSBbXTsKICAgICRzZWxmLT5bX3J3ZWxkX2xlbl9sZWZ0X2Nsb3NpbmdfXSAgPSB7fTsKICAgICRzZWxmLT5bX3J3ZWxkX2xlbl9yaWdodF9jbG9zaW5nX10gPSB7fTsKICAgICRzZWxmLT5bX3J3ZWxkX2xlbl9sZWZ0X29wZW5pbmdfXSAgPSB7fTsKICAgICRzZWxmLT5bX3J3ZWxkX2xlbl9yaWdodF9vcGVuaW5nX10gPSB7fTsKICAgICRzZWxmLT5bX3Jpc193ZWxkZWRfc2Vxbm9fXSAgICAgICAgPSB7fTsKCiAgICAkc2VsZi0+W19yc2Vxbm9fY29udHJvbGxpbmdfbXlfY2lfXSA9IHt9OwogICAgJHNlbGYtPltfcmlzX3NlcW5vX2NvbnRyb2xsaW5nX2NpX10gPSB7fTsKCiAgICAkc2VsZi0+W19yc3BlY2lhbF9zaWRlX2NvbW1lbnRfdHlwZV9dID0ge307CiAgICAkc2VsZi0+W19tYXhpbXVtX2xldmVsX10gICAgICAgICAgICAgID0gMDsKCiAgICAkc2VsZi0+W19yS3JhbmdlX2NvZGVfd2l0aG91dF9jb21tZW50c19dID0gW107CiAgICAkc2VsZi0+W19yYnJlYWtfYmVmb3JlX0tmaXJzdF9dICAgICAgICAgID0ge307CiAgICAkc2VsZi0+W19yYnJlYWtfYWZ0ZXJfS2xhc3RfXSAgICAgICAgICAgID0ge307CiAgICAkc2VsZi0+W19jb252ZXJnZWRfXSAgICAgICAgICAgICAgICAgICAgID0gMDsKCiAgICAkc2VsZi0+W19yc3RhcnRpbmdfbXVsdGlsaW5lX3F3X3NlcW5vX2J5X0tfXSA9IHt9OwogICAgJHNlbGYtPltfcmVuZGluZ19tdWx0aWxpbmVfcXdfc2Vxbm9fYnlfS19dICAgPSB7fTsKICAgICRzZWxmLT5bX3JLcmFuZ2VfbXVsdGlsaW5lX3F3X2J5X3NlcW5vX10gICAgID0ge307CiAgICAkc2VsZi0+W19yY29udGFpbnNfbXVsdGlsaW5lX3F3X2J5X3NlcW5vX10gICA9IHt9OwogICAgJHNlbGYtPltfcm11bHRpbGluZV9xd19oYXNfZXh0cmFfbGV2ZWxfXSAgICAgPSB7fTsKCiAgICAjIFRoaXMgZmxhZyB3aWxsIGJlIHVwZGF0ZWQgbGF0ZXIgYnkgYSBjYWxsIHRvIGdldF9zYXZlX2xvZ2ZpbGUoKQogICAgJHNlbGYtPltfc2F2ZV9sb2dmaWxlX10gPSBkZWZpbmVkKCRsb2dnZXJfb2JqZWN0KTsKCiAgICBibGVzcyAkc2VsZiwgJGNsYXNzOwoKICAgICMgU2FmZXR5IGNoZWNrLi50aGlzIGlzIG5vdCBhIGNsYXNzIHlldAogICAgaWYgKCBfaW5jcmVtZW50X2NvdW50KCkgPiAxICkgewogICAgICAgIGNvbmZlc3MKIkF0dGVtcHQgdG8gY3JlYXRlIG1vcmUgdGhhbiAxIG9iamVjdCBpbiAkY2xhc3MsIHdoaWNoIGlzIG5vdCBhIHRydWUgY2xhc3MgeWV0XG4iOwogICAgfQogICAgcmV0dXJuICRzZWxmOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIENPREUgU0VDVElPTiAyOiBTb21lIEJhc2ljIFV0aWxpdGllcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKeyAgICAjIyBiZWdpbiBjbG9zdXJlIGZvciBsb2dnZXIgcm91dGluZXMKICAgIG15ICRsb2dnZXJfb2JqZWN0OwoKICAgICMgQ2FsbGVkIG9uY2UgcGVyIGZpbGUgdG8gaW5pdGlhbGl6ZSB0aGUgbG9nZ2VyIG9iamVjdAogICAgc3ViIHNldF9sb2dnZXJfb2JqZWN0IHsKICAgICAgICAkbG9nZ2VyX29iamVjdCA9IHNoaWZ0OwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgZ2V0X2xvZ2dlcl9vYmplY3QgewogICAgICAgIHJldHVybiAkbG9nZ2VyX29iamVjdDsKICAgIH0KCiAgICBzdWIgZ2V0X2lucHV0X3N0cmVhbV9uYW1lIHsKICAgICAgICBteSAkaW5wdXRfc3RyZWFtX25hbWUgPSAiIjsKICAgICAgICBpZiAoJGxvZ2dlcl9vYmplY3QpIHsKICAgICAgICAgICAgJGlucHV0X3N0cmVhbV9uYW1lID0gJGxvZ2dlcl9vYmplY3QtPmdldF9pbnB1dF9zdHJlYW1fbmFtZSgpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJGlucHV0X3N0cmVhbV9uYW1lOwogICAgfQoKICAgICMgaW50ZXJmYWNlIHRvIFBlcmw6OlRpZHk6OkxvZ2dlciByb3V0aW5lcwogICAgc3ViIHdhcm5pbmcgewogICAgICAgIG15ICgkbXNnKSA9IEBfOwogICAgICAgIGlmICgkbG9nZ2VyX29iamVjdCkgeyAkbG9nZ2VyX29iamVjdC0+d2FybmluZygkbXNnKTsgfQogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgY29tcGxhaW4gewogICAgICAgIG15ICgkbXNnKSA9IEBfOwogICAgICAgIGlmICgkbG9nZ2VyX29iamVjdCkgewogICAgICAgICAgICAkbG9nZ2VyX29iamVjdC0+Y29tcGxhaW4oJG1zZyk7CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgd3JpdGVfbG9nZmlsZV9lbnRyeSB7CiAgICAgICAgbXkgQG1zZyA9IEBfOwogICAgICAgIGlmICgkbG9nZ2VyX29iamVjdCkgewogICAgICAgICAgICAkbG9nZ2VyX29iamVjdC0+d3JpdGVfbG9nZmlsZV9lbnRyeShAbXNnKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiByZXBvcnRfZGVmaW5pdGVfYnVnIHsKICAgICAgICBpZiAoJGxvZ2dlcl9vYmplY3QpIHsKICAgICAgICAgICAgJGxvZ2dlcl9vYmplY3QtPnJlcG9ydF9kZWZpbml0ZV9idWcoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBnZXRfc2F3X2JyYWNlX2Vycm9yIHsKICAgICAgICBpZiAoJGxvZ2dlcl9vYmplY3QpIHsKICAgICAgICAgICAgcmV0dXJuICRsb2dnZXJfb2JqZWN0LT5nZXRfc2F3X2JyYWNlX2Vycm9yKCk7CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgd2VfYXJlX2F0X3RoZV9sYXN0X2xpbmUgewogICAgICAgIGlmICgkbG9nZ2VyX29iamVjdCkgewogICAgICAgICAgICAkbG9nZ2VyX29iamVjdC0+d2VfYXJlX2F0X3RoZV9sYXN0X2xpbmUoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQoKfSAjIyBlbmQgY2xvc3VyZSBmb3IgbG9nZ2VyIHJvdXRpbmVzCgp7ICAgICMjIGJlZ2luIGNsb3N1cmUgZm9yIGRpYWdub3N0aWNzIHJvdXRpbmVzCiAgICBteSAkZGlhZ25vc3RpY3Nfb2JqZWN0OwoKICAgICMgQ2FsbGVkIG9uY2UgcGVyIGZpbGUgdG8gaW5pdGlhbGl6ZSB0aGUgZGlhZ25vc3RpY3Mgb2JqZWN0CiAgICBzdWIgc2V0X2RpYWdub3N0aWNzX29iamVjdCB7CiAgICAgICAgJGRpYWdub3N0aWNzX29iamVjdCA9IHNoaWZ0OwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgd3JpdGVfZGlhZ25vc3RpY3MgewogICAgICAgIG15ICgkbXNnKSA9IEBfOwogICAgICAgIGlmICgkZGlhZ25vc3RpY3Nfb2JqZWN0KSB7CiAgICAgICAgICAgICRkaWFnbm9zdGljc19vYmplY3QtPndyaXRlX2RpYWdub3N0aWNzKCRtc2cpOwogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9Cn0gIyMgZW5kIGNsb3N1cmUgZm9yIGRpYWdub3N0aWNzIHJvdXRpbmVzCgpzdWIgZ2V0X2NvbnZlcmdlbmNlX2NoZWNrIHsKICAgIG15ICgkc2VsZikgPSBAXzsKICAgIHJldHVybiAkc2VsZi0+W19jb252ZXJnZWRfXTsKfQoKc3ViIGdldF9hZGRlZF9zZW1pY29sb25fY291bnQgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIHJldHVybiAkc2VsZi0+W19hZGRlZF9zZW1pY29sb25fY291bnRfXTsKfQoKc3ViIGdldF9vdXRwdXRfbGluZV9udW1iZXIgewogICAgbXkgKCRzZWxmKSA9IEBfOwogICAgbXkgJHZhbyA9ICRzZWxmLT5bX3ZlcnRpY2FsX2FsaWduZXJfb2JqZWN0X107CiAgICByZXR1cm4gJHZhby0+Z2V0X291dHB1dF9saW5lX251bWJlcigpOwp9CgpzdWIgY2hlY2tfdG9rZW5fYXJyYXkgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKCiAgICAjIENoZWNrIGZvciBlcnJvcnMgaW4gdGhlIGFycmF5IG9mIHRva2Vucy4gVGhpcyBpcyBvbmx5IGNhbGxlZCBub3cKICAgICMgd2hlbiB0aGUgREVWRUxfTU9ERSBmbGFnIGlzIHNldCwgc28gdGhpcyBGYXVsdCB3aWxsIG9ubHkgb2NjdXIKICAgICMgZHVyaW5nIGNvZGUgZGV2ZWxvcG1lbnQuCiAgICBteSAkckxMID0gJHNlbGYtPltfckxMX107CiAgICBmb3IgKCBteSAkS0sgPSAwIDsgJEtLIDwgQHskckxMfSA7ICRLSysrICkgewogICAgICAgIG15ICRudmFycyA9IEB7ICRyTEwtPlskS0tdIH07CiAgICAgICAgaWYgKCAkbnZhcnMgIT0gX05WQVJTICkgewogICAgICAgICAgICBteSAkTlZBUlMgPSBfTlZBUlM7CiAgICAgICAgICAgIG15ICR0eXBlICA9ICRyTEwtPlskS0tdLT5bX1RZUEVfXTsKICAgICAgICAgICAgJHR5cGUgPSAnKicgdW5sZXNzIGRlZmluZWQoJHR5cGUpOwoKICAgICAgICAgICAgIyBUaGUgbnVtYmVyIG9mIHZhcmlhYmxlcyBwZXIgdG9rZW4gbm9kZSBpcyBfTlZBUlMgYW5kIHdhcyBzZXQgd2hlbgogICAgICAgICAgICAjIHRoZSBhcnJheSBpbmRleGVzIHdlcmUgZ2VuZXJhdGVkLiBTbyBpZiB0aGUgbnVtYmVyIG9mIHZhcmlhYmxlcwogICAgICAgICAgICAjIGlzIGRpZmZlcmVudCB3ZSBoYXZlIGRvbmUgc29tZXRoaW5nIHdyb25nLCBsaWtlIG5vdCBzdG9yZSBhbGwgb2YKICAgICAgICAgICAgIyB0aGVtIGluIHN1YiAnd3JpdGVfbGluZScgd2hlbiB0aGV5IHdlcmUgcmVjZWl2ZWQgZnJvbSB0aGUKICAgICAgICAgICAgIyB0b2tlbml6ZXIuCiAgICAgICAgICAgIEZhdWx0KAoibnVtYmVyIG9mIHZhcnMgZm9yIG5vZGUgJEtLLCB0eXBlICckdHlwZScsIGlzICRudmFycyBidXQgc2hvdWxkIGJlICROVkFSUyIKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZm9yZWFjaCBteSAkdmFyICggX1RPS0VOXywgX1RZUEVfICkgewogICAgICAgICAgICBpZiAoICFkZWZpbmVkKCAkckxMLT5bJEtLXS0+WyR2YXJdICkgKSB7CiAgICAgICAgICAgICAgICBteSAkaWxpbmUgPSAkckxMLT5bJEtLXS0+W19MSU5FX0lOREVYX107CgogICAgICAgICAgICAgICAgIyBUaGlzIGlzIGEgc2ltcGxlIGNoZWNrIHRoYXQgZWFjaCB0b2tlbiBoYXMgc29tZSBiYXNpYwogICAgICAgICAgICAgICAgIyB2YXJpYWJsZXMuICBJbiBvdGhlciB3b3JkcywgdGhhdCB0aGVyZSBhcmUgbm8gaG9sZXMgaW4gdGhlCiAgICAgICAgICAgICAgICAjIGFycmF5IG9mIHRva2Vucy4gIFN1YiAnd3JpdGVfbGluZScgcHVzaGVzIHRva2VucyBpbnRvIHRoZQogICAgICAgICAgICAgICAgIyAkckxMIGFycmF5LCBzbyB0aGlzIHNob3VsZCBndWFyYW50ZWUgbm8gZ2Fwcy4KICAgICAgICAgICAgICAgIEZhdWx0KCJVbmRlZmluZWQgdmFyaWFibGUgJHZhciBmb3IgSz0kS0ssIGxpbmU9JGlsaW5lXG4iKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybjsKfQoKc3ViIHdhbnRfYmxhbmtfbGluZSB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgJHNlbGYtPmZsdXNoKCk7CiAgICBteSAkZmlsZV93cml0ZXJfb2JqZWN0ID0gJHNlbGYtPltfZmlsZV93cml0ZXJfb2JqZWN0X107CiAgICAkZmlsZV93cml0ZXJfb2JqZWN0LT53YW50X2JsYW5rX2xpbmUoKTsKICAgIHJldHVybjsKfQoKc3ViIHdyaXRlX3VuaW5kZW50ZWRfbGluZSB7CiAgICBteSAoICRzZWxmLCAkbGluZSApID0gQF87CiAgICAkc2VsZi0+Zmx1c2goKTsKICAgIG15ICRmaWxlX3dyaXRlcl9vYmplY3QgPSAkc2VsZi0+W19maWxlX3dyaXRlcl9vYmplY3RfXTsKICAgICRmaWxlX3dyaXRlcl9vYmplY3QtPndyaXRlX2xpbmUoJGxpbmUpOwogICAgcmV0dXJuOwp9CgpzdWIgY29uc2VjdXRpdmVfbm9uYmxhbmtfbGluZXMgewogICAgbXkgKCRzZWxmKSAgICAgICAgICAgICA9IEBfOwogICAgbXkgJGZpbGVfd3JpdGVyX29iamVjdCA9ICRzZWxmLT5bX2ZpbGVfd3JpdGVyX29iamVjdF9dOwogICAgbXkgJHZhbyAgICAgICAgICAgICAgICA9ICRzZWxmLT5bX3ZlcnRpY2FsX2FsaWduZXJfb2JqZWN0X107CiAgICByZXR1cm4gJGZpbGVfd3JpdGVyX29iamVjdC0+Z2V0X2NvbnNlY3V0aXZlX25vbmJsYW5rX2xpbmVzKCkgKwogICAgICAkdmFvLT5nZXRfY2FjaGVkX2xpbmVfY291bnQoKTsKfQoKc3ViIHRyaW0gewoKICAgICMgdHJpbSBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIGZyb20gYSBzdHJpbmcKICAgIG15ICRzdHIgPSBzaGlmdDsKICAgICRzdHIgPX4gcy9ccyskLy87CiAgICAkc3RyID1+IHMvXlxzKy8vOwogICAgcmV0dXJuICRzdHI7Cn0KCnN1YiBtYXggewogICAgbXkgKEB2YWxzKSA9IEBfOwogICAgbXkgJG1heCA9IHNoaWZ0IEB2YWxzOwogICAgZm9yIChAdmFscykgeyAkbWF4ID0gJF8gPiAkbWF4ID8gJF8gOiAkbWF4IH0KICAgIHJldHVybiAkbWF4Owp9CgpzdWIgbWluIHsKICAgIG15IChAdmFscykgPSBAXzsKICAgIG15ICRtaW4gPSBzaGlmdCBAdmFsczsKICAgIGZvciAoQHZhbHMpIHsgJG1pbiA9ICRfIDwgJG1pbiA/ICRfIDogJG1pbiB9CiAgICByZXR1cm4gJG1pbjsKfQoKc3ViIHNwbGl0X3dvcmRzIHsKCiAgICAjIGdpdmVuIGEgc3RyaW5nIGNvbnRhaW5pbmcgd29yZHMgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UsCiAgICAjIHJldHVybiB0aGUgbGlzdCBvZiB3b3JkcwogICAgbXkgKCRzdHIpID0gQF87CiAgICByZXR1cm4gdW5sZXNzICRzdHI7CiAgICAkc3RyID1+IHMvXHMrJC8vOwogICAgJHN0ciA9fiBzL15ccysvLzsKICAgIHJldHVybiBzcGxpdCggL1xzKy8sICRzdHIgKTsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIENPREUgU0VDVElPTiAzOiBDaGVjayBhbmQgcHJvY2VzcyBvcHRpb25zCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnN1YiBjaGVja19vcHRpb25zIHsKCiAgICAjIFRoaXMgcm91dGluZSBpcyBjYWxsZWQgdG8gY2hlY2sgdGhlIHVzZXItc3VwcGxpZWQgcnVuIHBhcmFtZXRlcnMKICAgICMgYW5kIHRvIGNvbmZpZ3VyZSB0aGUgY29udHJvbCBoYXNoZXMgdG8gdGhlbS4KICAgICRyT3B0cyA9IHNoaWZ0OwoKICAgIGluaXRpYWxpemVfd2hpdGVzcGFjZV9oYXNoZXMoKTsKICAgIGluaXRpYWxpemVfYm9uZF9zdHJlbmd0aF9oYXNoZXMoKTsKCiAgICAjIE1ha2UgbmVlZGVkIHJlZ2V4IHBhdHRlcm5zIGZvciBtYXRjaGluZyB0ZXh0LgogICAgIyBOT1RFOiBzdWJfbWF0Y2hpbmdfcGF0dGVybnMgbXVzdCBiZSBtYWRlIGZpcnN0IGJlY2F1c2UgbGF0ZXIgcGF0dGVybnMgdXNlCiAgICAjIHRoZW07IHNlZSBSVCAjMTMzMTMwLgogICAgbWFrZV9zdWJfbWF0Y2hpbmdfcGF0dGVybigpOwogICAgbWFrZV9zdGF0aWNfYmxvY2tfY29tbWVudF9wYXR0ZXJuKCk7CiAgICBtYWtlX3N0YXRpY19zaWRlX2NvbW1lbnRfcGF0dGVybigpOwogICAgbWFrZV9jbG9zaW5nX3NpZGVfY29tbWVudF9wcmVmaXgoKTsKICAgIG1ha2VfY2xvc2luZ19zaWRlX2NvbW1lbnRfbGlzdF9wYXR0ZXJuKCk7CiAgICAkZm9ybWF0X3NraXBwaW5nX3BhdHRlcm5fYmVnaW4gPQogICAgICBtYWtlX2Zvcm1hdF9za2lwcGluZ19wYXR0ZXJuKCAnZm9ybWF0LXNraXBwaW5nLWJlZ2luJywgJyM8PDwnICk7CiAgICAkZm9ybWF0X3NraXBwaW5nX3BhdHRlcm5fZW5kID0KICAgICAgbWFrZV9mb3JtYXRfc2tpcHBpbmdfcGF0dGVybiggJ2Zvcm1hdC1za2lwcGluZy1lbmQnLCAnIz4+PicgKTsKICAgIG1ha2Vfbm9uX2luZGVudGluZ19icmFjZV9wYXR0ZXJuKCk7CgogICAgIyBJZiBjbG9zaW5nIHNpZGUgY29tbWVudHMgQVJFIHNlbGVjdGVkLCB0aGVuIHdlIGNhbiBzYWZlbHkKICAgICMgZGVsZXRlIG9sZCBjbG9zaW5nIHNpZGUgY29tbWVudHMgdW5sZXNzIGNsb3Npbmcgc2lkZSBjb21tZW50CiAgICAjIHdhcm5pbmdzIGFyZSByZXF1ZXN0ZWQuICBUaGlzIGlzIGEgZ29vZCBpZGVhIGJlY2F1c2UgaXQgd2lsbAogICAgIyBlbGltaW5hdGUgYW55IG9sZCBjc2MncyB3aGljaCBmYWxsIGJlbG93IHRoZSBsaW5lIGNvdW50IHRocmVzaG9sZC4KICAgICMgV2UgY2Fubm90IGRvIHRoaXMgaWYgd2FybmluZ3MgYXJlIHR1cm5lZCBvbiwgdGhvdWdoLCBiZWNhdXNlIHdlCiAgICAjIG1pZ2h0IGRlbGV0ZSBzb21lIHRleHQgd2hpY2ggaGFzIGJlZW4gYWRkZWQuICBTbyB0aGF0IG11c3QKICAgICMgYmUgaGFuZGxlZCB3aGVuIGNvbW1lbnRzIGFyZSBjcmVhdGVkLiAgQW5kIHdlIGNhbm5vdCBkbyB0aGlzCiAgICAjIHdpdGggLWlvIGJlY2F1c2UgLWNzYyB3aWxsIGJlIHNraXBwZWQgYWx0b2dldGhlci4KICAgIGlmICggJHJPcHRzLT57J2Nsb3Npbmctc2lkZS1jb21tZW50cyd9ICkgewogICAgICAgIGlmICggICAhJHJPcHRzLT57J2Nsb3Npbmctc2lkZS1jb21tZW50LXdhcm5pbmdzJ30KICAgICAgICAgICAgJiYgISRyT3B0cy0+eydpbmRlbnQtb25seSd9ICkKICAgICAgICB7CiAgICAgICAgICAgICRyT3B0cy0+eydkZWxldGUtY2xvc2luZy1zaWRlLWNvbW1lbnRzJ30gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjIElmIGNsb3Npbmcgc2lkZSBjb21tZW50cyBBUkUgTk9UIHNlbGVjdGVkLCBidXQgd2FybmluZ3MgQVJFCiAgICAjIHNlbGVjdGVkIGFuZCB3ZSBBUkUgREVMRVRJTkcgY3NjJ3MsIHRoZW4gd2Ugd2lsbCBwcmV0ZW5kIHRvIGJlCiAgICAjIGFkZGluZyB3aXRoIGEgaHVnZSBpbnRlcnZhbC4gIFRoaXMgd2lsbCBmb3JjZSB0aGUgY29tbWVudHMgdG8gYmUKICAgICMgZ2VuZXJhdGVkIGZvciBjb21wYXJpc29uIHdpdGggdGhlIG9sZCBjb21tZW50cywgYnV0IG5vdCBhZGRlZC4KICAgIGVsc2lmICggJHJPcHRzLT57J2Nsb3Npbmctc2lkZS1jb21tZW50LXdhcm5pbmdzJ30gKSB7CiAgICAgICAgaWYgKCAkck9wdHMtPnsnZGVsZXRlLWNsb3Npbmctc2lkZS1jb21tZW50cyd9ICkgewogICAgICAgICAgICAkck9wdHMtPnsnZGVsZXRlLWNsb3Npbmctc2lkZS1jb21tZW50cyd9ICA9IDA7CiAgICAgICAgICAgICRyT3B0cy0+eydjbG9zaW5nLXNpZGUtY29tbWVudHMnfSAgICAgICAgID0gMTsKICAgICAgICAgICAgJHJPcHRzLT57J2Nsb3Npbmctc2lkZS1jb21tZW50LWludGVydmFsJ30gPSAxMDAwMDAwMDA7CiAgICAgICAgfQogICAgfQoKICAgIG1ha2VfYmxpX3BhdHRlcm4oKTsKICAgIG1ha2VfYmxvY2tfYnJhY2VfdmVydGljYWxfdGlnaHRuZXNzX3BhdHRlcm4oKTsKICAgIG1ha2VfYmxhbmtfbGluZV9wYXR0ZXJuKCk7CiAgICBtYWtlX2tleXdvcmRfZ3JvdXBfbGlzdF9wYXR0ZXJuKCk7CgogICAgIyBNYWtlIGluaXRpYWwgbGlzdCBvZiBkZXNpcmVkIG9uZSBsaW5lIGJsb2NrIHR5cGVzCiAgICAjIFRoZXkgd2lsbCBiZSBtb2RpZmllZCBieSAncHJlcGFyZV9jdWRkbGVkX2Jsb2NrX3R5cGVzJwogICAgJXdhbnRfb25lX2xpbmVfYmxvY2sgPSAlaXNfc29ydF9tYXBfZ3JlcF9ldmFsOwoKICAgIHByZXBhcmVfY3VkZGxlZF9ibG9ja190eXBlcygpOwogICAgaWYgKCAkck9wdHMtPnsnZHVtcC1jdWRkbGVkLWJsb2NrLWxpc3QnfSApIHsKICAgICAgICBkdW1wX2N1ZGRsZWRfYmxvY2tfbGlzdCgqU1RET1VUKTsKICAgICAgICBFeGl0KDApOwogICAgfQoKICAgIGlmICggJHJPcHRzLT57J2xpbmUtdXAtcGFyZW50aGVzZXMnfSApIHsKCiAgICAgICAgaWYgKCAgICRyT3B0cy0+eydpbmRlbnQtb25seSd9CiAgICAgICAgICAgIHx8ICEkck9wdHMtPnsnYWRkLW5ld2xpbmVzJ30KICAgICAgICAgICAgfHwgISRyT3B0cy0+eydkZWxldGUtb2xkLW5ld2xpbmVzJ30gKQogICAgICAgIHsKICAgICAgICAgICAgV2Fybig8PEVPTSk7Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkNvbmZsaWN0OiAtbHAgIGNvbmZsaWN0cyB3aXRoIC1pbywgLWZubCwgLW5hbmwsIG9yIC1uZG5sOyBpZ25vcmluZyAtbHAKICAgIApUaGUgLWxwIGluZGVudGF0aW9uIGxvZ2ljIHJlcXVpcmVzIHRoYXQgcGVybHRpZHkgYmUgYWJsZSB0byBjb29yZGluYXRlCmFyYml0cmFyaWx5IGxhcmdlIG51bWJlcnMgb2YgbGluZSBicmVha3BvaW50cy4gIFRoaXMgaXNuJ3QgcG9zc2libGUKd2l0aCB0aGVzZSBmbGFncy4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCiAgICAgICAgICAgICRyT3B0cy0+eydsaW5lLXVwLXBhcmVudGhlc2VzJ30gPSAwOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkck9wdHMtPnsnd2hpdGVzcGFjZS1jeWNsZSd9ICkgewogICAgICAgICAgICBXYXJuKDw8RU9NKTsKQ29uZmxpY3Q6IC13YyBjYW5ub3QgY3VycmVudGx5IGJlIHVzZWQgd2l0aCB0aGUgLWxwIG9wdGlvbjsgaWdub3JpbmcgLXdjCkVPTQogICAgICAgICAgICAkck9wdHMtPnsnd2hpdGVzcGFjZS1jeWNsZSd9ID0gMDsKICAgICAgICB9CiAgICB9CgogICAgIyBBdCBwcmVzZW50LCB0YWJzIGFyZSBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSBsaW5lLXVwLXBhcmVudGhlc2VzIHN0eWxlCiAgICAjIChpdCB3b3VsZCBiZSBwb3NzaWJsZSB0byBlbnRhYiB0aGUgdG90YWwgbGVhZGluZyB3aGl0ZXNwYWNlCiAgICAjIGp1c3QgcHJpb3IgdG8gd3JpdGluZyB0aGUgbGluZSwgaWYgZGVzaXJlZCkuCiAgICBpZiAoICRyT3B0cy0+eydsaW5lLXVwLXBhcmVudGhlc2VzJ30gJiYgJHJPcHRzLT57J3RhYnMnfSApIHsKICAgICAgICBXYXJuKDw8RU9NKTsKQ29uZmxpY3Q6IC10ICh0YWJzKSBjYW5ub3QgYmUgdXNlZCB3aXRoIHRoZSAtbHAgIG9wdGlvbjsgaWdub3JpbmcgLXQ7IHNlZSAtZXQuCkVPTQogICAgICAgICRyT3B0cy0+eyd0YWJzJ30gPSAwOwogICAgfQoKICAgICMgTGlrZXdpc2UsIHRhYnMgYXJlIG5vdCBjb21wYXRpYmxlIHdpdGggb3V0ZGVudGluZy4uCiAgICBpZiAoICRyT3B0cy0+eydvdXRkZW50LWtleXdvcmRzJ30gJiYgJHJPcHRzLT57J3RhYnMnfSApIHsKICAgICAgICBXYXJuKDw8RU9NKTsKQ29uZmxpY3Q6IC10ICh0YWJzKSBjYW5ub3QgYmUgdXNlZCB3aXRoIHRoZSAtb2t3IG9wdGlvbnM7IGlnbm9yaW5nIC10OyBzZWUgLWV0LgpFT00KICAgICAgICAkck9wdHMtPnsndGFicyd9ID0gMDsKICAgIH0KCiAgICBpZiAoICRyT3B0cy0+eydvdXRkZW50LWxhYmVscyd9ICYmICRyT3B0cy0+eyd0YWJzJ30gKSB7CiAgICAgICAgV2Fybig8PEVPTSk7CkNvbmZsaWN0OiAtdCAodGFicykgY2Fubm90IGJlIHVzZWQgd2l0aCB0aGUgLW9sYSAgb3B0aW9uOyBpZ25vcmluZyAtdDsgc2VlIC1ldC4KRU9NCiAgICAgICAgJHJPcHRzLT57J3RhYnMnfSA9IDA7CiAgICB9CgogICAgaWYgKCAhJHJPcHRzLT57J3NwYWNlLWZvci1zZW1pY29sb24nfSApIHsKICAgICAgICAkd2FudF9sZWZ0X3NwYWNleydmJ30gPSAtMTsKICAgIH0KCiAgICBpZiAoICRyT3B0cy0+eydzcGFjZS10ZXJtaW5hbC1zZW1pY29sb24nfSApIHsKICAgICAgICAkd2FudF9sZWZ0X3NwYWNleyc7J30gPSAxOwogICAgfQoKICAgICMgV2Ugc2hvdWxkIHB1dCBhbiB1cHBlciBib3VuZCBvbiBhbnkgLXNpbD1uIHZhbHVlLiBPdGhlcndpc2UgZW5vcm1vdXMKICAgICMgZmlsZXMgY291bGQgYmUgY3JlYXRlZCBieSBtaXN0YWtlLgogICAgZm9yICggJHJPcHRzLT57J3N0YXJ0aW5nLWluZGVudGF0aW9uLWxldmVsJ30gKSB7CiAgICAgICAgaWYgKCAkXyAmJiAkXyA+IDEwMCApIHsKICAgICAgICAgICAgV2Fybig8PEVPTSk7ClRoZSB2YWx1ZSAtLXN0YXJ0aW5nLWluZGVudGF0aW9uLWxldmVsPSRfIGlzIHZlcnkgbGFyZ2U7IGEgbWlzdGFrZT8gcmVzZXR0aW5nIHRvIDA7CkVPTQogICAgICAgICAgICAkXyA9IDA7CiAgICAgICAgfQogICAgfQoKICAgICMgaW1wbGVtZW50IG91dGRlbnRpbmcgcHJlZmVyZW5jZXMgZm9yIGtleXdvcmRzCiAgICAlb3V0ZGVudF9rZXl3b3JkID0gKCk7CiAgICBteSBAb2t3ID0gc3BsaXRfd29yZHMoICRyT3B0cy0+eydvdXRkZW50LWtleXdvcmQtbGlzdCd9ICk7CiAgICB1bmxlc3MgKEBva3cpIHsKICAgICAgICBAb2t3ID0gcXcobmV4dCBsYXN0IHJlZG8gZ290byByZXR1cm4pOyAgICAjIGRlZmF1bHRzCiAgICB9CgogICAgIyBGVVRVUkU6IGlmIG5vdCBhIGtleXdvcmQsIGFzc3VtZSB0aGF0IGl0IGlzIGFuIGlkZW50aWZpZXIKICAgIGZvcmVhY2ggKEBva3cpIHsKICAgICAgICBpZiAoICRQZXJsOjpUaWR5OjpUb2tlbml6ZXI6OmlzX2tleXdvcmR7JF99ICkgewogICAgICAgICAgICAkb3V0ZGVudF9rZXl3b3JkeyRffSA9IDE7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBXYXJuKCJpZ25vcmluZyAnJF8nIGluIC1va3dsIGxpc3Q7IG5vdCBhIHBlcmwga2V5d29yZCIpOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldHVwIGhhc2ggZm9yIC1rcGl0IG9wdGlvbgogICAgJWtleXdvcmRfcGFyZW5faW5uZXJfdGlnaHRuZXNzID0gKCk7CiAgICBteSAka3BpdF92YWx1ZSA9ICRyT3B0cy0+eydrZXl3b3JkLXBhcmVuLWlubmVyLXRpZ2h0bmVzcyd9OwogICAgaWYgKCBkZWZpbmVkKCRrcGl0X3ZhbHVlKSAmJiAka3BpdF92YWx1ZSAhPSAxICkgewogICAgICAgIG15IEBrcGl0ID0KICAgICAgICAgIHNwbGl0X3dvcmRzKCAkck9wdHMtPnsna2V5d29yZC1wYXJlbi1pbm5lci10aWdodG5lc3MtbGlzdCd9ICk7CiAgICAgICAgdW5sZXNzIChAa3BpdCkgewogICAgICAgICAgICBAa3BpdCA9IHF3KGlmIGVsc2lmIHVubGVzcyB3aGlsZSB1bnRpbCBmb3IgZm9yZWFjaCk7ICAgICMgZGVmYXVsdHMKICAgICAgICB9CgogICAgICAgICMgd2Ugd2lsbCBhbGxvdyBrZXl3b3JkcyBhbmQgdXNlci1kZWZpbmVkIGlkZW50aWZpZXJzCiAgICAgICAgZm9yZWFjaCAoQGtwaXQpIHsKICAgICAgICAgICAgJGtleXdvcmRfcGFyZW5faW5uZXJfdGlnaHRuZXNzeyRffSA9ICRrcGl0X3ZhbHVlOwogICAgICAgIH0KICAgIH0KCiAgICAjIGltcGxlbWVudCB1c2VyIHdoaXRlc3BhY2UgcHJlZmVyZW5jZXMKICAgIGlmICggbXkgQHEgPSBzcGxpdF93b3JkcyggJHJPcHRzLT57J3dhbnQtbGVmdC1zcGFjZSd9ICkgKSB7CiAgICAgICAgQHdhbnRfbGVmdF9zcGFjZXtAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwogICAgfQoKICAgIGlmICggbXkgQHEgPSBzcGxpdF93b3JkcyggJHJPcHRzLT57J3dhbnQtcmlnaHQtc3BhY2UnfSApICkgewogICAgICAgIEB3YW50X3JpZ2h0X3NwYWNle0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CiAgICB9CgogICAgaWYgKCBteSBAcSA9IHNwbGl0X3dvcmRzKCAkck9wdHMtPnsnbm93YW50LWxlZnQtc3BhY2UnfSApICkgewogICAgICAgIEB3YW50X2xlZnRfc3BhY2V7QHF9ID0gKC0xKSB4IHNjYWxhcihAcSk7CiAgICB9CgogICAgaWYgKCBteSBAcSA9IHNwbGl0X3dvcmRzKCAkck9wdHMtPnsnbm93YW50LXJpZ2h0LXNwYWNlJ30gKSApIHsKICAgICAgICBAd2FudF9yaWdodF9zcGFjZXtAcX0gPSAoLTEpIHggc2NhbGFyKEBxKTsKICAgIH0KICAgIGlmICggJHJPcHRzLT57J2R1bXAtd2FudC1sZWZ0LXNwYWNlJ30gKSB7CiAgICAgICAgZHVtcF93YW50X2xlZnRfc3BhY2UoKlNURE9VVCk7CiAgICAgICAgRXhpdCgwKTsKICAgIH0KCiAgICBpZiAoICRyT3B0cy0+eydkdW1wLXdhbnQtcmlnaHQtc3BhY2UnfSApIHsKICAgICAgICBkdW1wX3dhbnRfcmlnaHRfc3BhY2UoKlNURE9VVCk7CiAgICAgICAgRXhpdCgwKTsKICAgIH0KCiAgICAjIGRlZmF1bHQga2V5d29yZHMgZm9yIHdoaWNoIHNwYWNlIGlzIGludHJvZHVjZWQgYmVmb3JlIGFuIG9wZW5pbmcgcGFyZW4KICAgICMgKGF0IHByZXNlbnQsIGluY2x1ZGluZyB0aGVtIG1lc3NlcyB1cCB2ZXJ0aWNhbCBhbGlnbm1lbnQpCiAgICBteSBAc2FrID0gcXcobXkgbG9jYWwgb3VyIGFuZCBvciB4b3IgZXJyIGVxIG5lIGlmIGVsc2UgZWxzaWYgdW50aWwKICAgICAgdW5sZXNzIHdoaWxlIGZvciBmb3JlYWNoIHJldHVybiBzd2l0Y2ggY2FzZSBnaXZlbiB3aGVuIGNhdGNoKTsKICAgICVzcGFjZV9hZnRlcl9rZXl3b3JkID0gbWFwIHsgJF8gPT4gMSB9IEBzYWs7CgogICAgIyBmaXJzdCByZW1vdmUgYW55IG9yIGFsbCBvZiB0aGVzZSBpZiBkZXNpcmVkCiAgICBpZiAoIG15IEBxID0gc3BsaXRfd29yZHMoICRyT3B0cy0+eydub3NwYWNlLWFmdGVyLWtleXdvcmQnfSApICkgewoKICAgICAgICAjIC1uc2FrPScqJyBzZWxlY3RzIGFsbCB0aGUgYWJvdmUga2V5d29yZHMKICAgICAgICBpZiAoIEBxID09IDEgJiYgJHFbMF0gZXEgJyonICkgeyBAcSA9IGtleXMoJXNwYWNlX2FmdGVyX2tleXdvcmQpIH0KICAgICAgICBAc3BhY2VfYWZ0ZXJfa2V5d29yZHtAcX0gPSAoMCkgeCBzY2FsYXIoQHEpOwogICAgfQoKICAgICMgdGhlbiBhbGxvdyB1c2VyIHRvIGFkZCB0byB0aGVzZSBkZWZhdWx0cwogICAgaWYgKCBteSBAcSA9IHNwbGl0X3dvcmRzKCAkck9wdHMtPnsnc3BhY2UtYWZ0ZXIta2V5d29yZCd9ICkgKSB7CiAgICAgICAgQHNwYWNlX2FmdGVyX2tleXdvcmR7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKICAgIH0KCiAgICAjIGltcGxlbWVudCB1c2VyIGJyZWFrIHByZWZlcmVuY2VzCiAgICBteSBAYWxsX29wZXJhdG9ycyA9IHF3KCUgKyAtICogLyB4ICE9ID09ID49IDw9ID1+ICF+IDwgPiB8ICYKICAgICAgPSAqKj0gKz0gKj0gJj0gPDw9ICYmPSAtPSAvPSB8PSA+Pj0gfHw9IC8vPSAuPSAlPSBePSB4PQogICAgICAuIDogPyAmJiB8fCBhbmQgb3IgZXJyIHhvcgogICAgKTsKCiAgICBteSAkYnJlYWtfYWZ0ZXIgPSBzdWIgewogICAgICAgIG15IEB0b2tzID0gQF87CiAgICAgICAgZm9yZWFjaCBteSAkdG9rIChAdG9rcykgewogICAgICAgICAgICBpZiAoICR0b2sgZXEgJz8nICkgeyAkdG9rID0gJzonIH0gICAgIyBwYXRjaCB0byBjb29yZGluYXRlID8vOgogICAgICAgICAgICBteSAkbGJzID0gJGxlZnRfYm9uZF9zdHJlbmd0aHskdG9rfTsKICAgICAgICAgICAgbXkgJHJicyA9ICRyaWdodF9ib25kX3N0cmVuZ3RoeyR0b2t9OwogICAgICAgICAgICBpZiAoIGRlZmluZWQoJGxicykgJiYgZGVmaW5lZCgkcmJzKSAmJiAkbGJzIDwgJHJicyApIHsKICAgICAgICAgICAgICAgICggJHJpZ2h0X2JvbmRfc3RyZW5ndGh7JHRva30sICRsZWZ0X2JvbmRfc3RyZW5ndGh7JHRva30gKSA9CiAgICAgICAgICAgICAgICAgICggJGxicywgJHJicyApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICBteSAkYnJlYWtfYmVmb3JlID0gc3ViIHsKICAgICAgICBteSBAdG9rcyA9IEBfOwogICAgICAgIGZvcmVhY2ggbXkgJHRvayAoQHRva3MpIHsKICAgICAgICAgICAgbXkgJGxicyA9ICRsZWZ0X2JvbmRfc3RyZW5ndGh7JHRva307CiAgICAgICAgICAgIG15ICRyYnMgPSAkcmlnaHRfYm9uZF9zdHJlbmd0aHskdG9rfTsKICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCRsYnMpICYmIGRlZmluZWQoJHJicykgJiYgJHJicyA8ICRsYnMgKSB7CiAgICAgICAgICAgICAgICAoICRyaWdodF9ib25kX3N0cmVuZ3RoeyR0b2t9LCAkbGVmdF9ib25kX3N0cmVuZ3RoeyR0b2t9ICkgPQogICAgICAgICAgICAgICAgICAoICRsYnMsICRyYnMgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CgogICAgJGJyZWFrX2FmdGVyLT4oQGFsbF9vcGVyYXRvcnMpIGlmICggJHJPcHRzLT57J2JyZWFrLWFmdGVyLWFsbC1vcGVyYXRvcnMnfSApOwogICAgJGJyZWFrX2JlZm9yZS0+KEBhbGxfb3BlcmF0b3JzKQogICAgICBpZiAoICRyT3B0cy0+eydicmVhay1iZWZvcmUtYWxsLW9wZXJhdG9ycyd9ICk7CgogICAgJGJyZWFrX2FmdGVyLT4oIHNwbGl0X3dvcmRzKCAkck9wdHMtPnsnd2FudC1icmVhay1hZnRlcid9ICkgKTsKICAgICRicmVha19iZWZvcmUtPiggc3BsaXRfd29yZHMoICRyT3B0cy0+eyd3YW50LWJyZWFrLWJlZm9yZSd9ICkgKTsKCiAgICAjIG1ha2Ugbm90ZSBpZiBicmVha3MgYXJlIGJlZm9yZSBjZXJ0YWluIGtleSB0eXBlcwogICAgJXdhbnRfYnJlYWtfYmVmb3JlID0gKCk7CiAgICBmb3JlYWNoIG15ICR0b2sgKCBAYWxsX29wZXJhdG9ycywgJywnICkgewogICAgICAgICR3YW50X2JyZWFrX2JlZm9yZXskdG9rfSA9CiAgICAgICAgICAkbGVmdF9ib25kX3N0cmVuZ3RoeyR0b2t9IDwgJHJpZ2h0X2JvbmRfc3RyZW5ndGh7JHRva307CiAgICB9CgogICAgIyBDb29yZGluYXRlID8vOiBicmVha3MsIHdoaWNoIG11c3QgYmUgc2ltaWxhcgogICAgaWYgKCAhJHdhbnRfYnJlYWtfYmVmb3Jleyc6J30gKSB7CiAgICAgICAgJHdhbnRfYnJlYWtfYmVmb3Jleyc/J30gICA9ICR3YW50X2JyZWFrX2JlZm9yZXsnOid9OwogICAgICAgICRyaWdodF9ib25kX3N0cmVuZ3Roeyc/J30gPSAkcmlnaHRfYm9uZF9zdHJlbmd0aHsnOid9ICsgMC4wMTsKICAgICAgICAkbGVmdF9ib25kX3N0cmVuZ3Roeyc/J30gID0gTk9fQlJFQUs7CiAgICB9CgogICAgIyBPbmx5IG1ha2UgYSBoYXNoIGVudHJ5IGZvciB0aGUgbmV4dCBwYXJhbWV0ZXJzIGlmIHZhbHVlcyBhcmUgZGVmaW5lZC4KICAgICMgVGhhdCBhbGxvd3MgYSBxdWljayBjaGVjayB0byBiZSBtYWRlIGxhdGVyLgogICAgJWJyZWFrX2JlZm9yZV9jb250YWluZXJfdHlwZXMgPSAoKTsKICAgIGZvciAoICRyT3B0cy0+eydicmVhay1iZWZvcmUtaGFzaC1icmFjZSd9ICkgewogICAgICAgICRicmVha19iZWZvcmVfY29udGFpbmVyX3R5cGVzeyd7J30gPSAkXyBpZiAkXyAmJiAkXyA+IDA7CiAgICB9CiAgICBmb3IgKCAkck9wdHMtPnsnYnJlYWstYmVmb3JlLXNxdWFyZS1icmFja2V0J30gKSB7CiAgICAgICAgJGJyZWFrX2JlZm9yZV9jb250YWluZXJfdHlwZXN7J1snfSA9ICRfIGlmICRfICYmICRfID4gMDsKICAgIH0KICAgIGZvciAoICRyT3B0cy0+eydicmVhay1iZWZvcmUtcGFyZW4nfSApIHsKICAgICAgICAkYnJlYWtfYmVmb3JlX2NvbnRhaW5lcl90eXBlc3snKCd9ID0gJF8gaWYgJF8gJiYgJF8gPiAwOwogICAgfQoKICAgICVjb250YWluZXJfaW5kZW50YXRpb25fb3B0aW9ucyA9ICgpOwogICAgZm9yICggJHJPcHRzLT57J2JyZWFrLWJlZm9yZS1oYXNoLWJyYWNlLWFuZC1pbmRlbnQnfSApIHsKICAgICAgICBteSAkdG9rID0gJ3snOwogICAgICAgIGlmICggZGVmaW5lZCgkXykgJiYgJF8gPiAwICYmICRicmVha19iZWZvcmVfY29udGFpbmVyX3R5cGVzeyR0b2t9ICkgewogICAgICAgICAgICAkY29udGFpbmVyX2luZGVudGF0aW9uX29wdGlvbnN7JHRva30gPSAkXzsKICAgICAgICB9CiAgICB9CiAgICBmb3IgKCAkck9wdHMtPnsnYnJlYWstYmVmb3JlLXNxdWFyZS1icmFja2V0LWFuZC1pbmRlbnQnfSApIHsKICAgICAgICBteSAkdG9rID0gJ1snOwogICAgICAgIGlmICggZGVmaW5lZCgkXykgJiYgJF8gPiAwICYmICRicmVha19iZWZvcmVfY29udGFpbmVyX3R5cGVzeyR0b2t9ICkgewogICAgICAgICAgICAkY29udGFpbmVyX2luZGVudGF0aW9uX29wdGlvbnN7JHRva30gPSAkXzsKICAgICAgICB9CiAgICB9CiAgICBmb3IgKCAkck9wdHMtPnsnYnJlYWstYmVmb3JlLXBhcmVuLWFuZC1pbmRlbnQnfSApIHsKICAgICAgICBteSAkdG9rID0gJygnOwogICAgICAgIGlmICggZGVmaW5lZCgkXykgJiYgJF8gPiAwICYmICRicmVha19iZWZvcmVfY29udGFpbmVyX3R5cGVzeyR0b2t9ICkgewogICAgICAgICAgICAkY29udGFpbmVyX2luZGVudGF0aW9uX29wdGlvbnN7JHRva30gPSAkXzsKICAgICAgICB9CiAgICB9CgogICAgIyBEZWZpbmUgaGVyZSB0b2tlbnMgd2hpY2ggbWF5IGZvbGxvdyB0aGUgY2xvc2luZyBicmFjZSBvZiBhIGRvIHN0YXRlbWVudAogICAgIyBvbiB0aGUgc2FtZSBsaW5lLCBhcyBpbjoKICAgICMgICB9IHdoaWxlICggJHNvbWV0aGluZyk7CiAgICBteSBAZG9mID0gcXcodW50aWwgd2hpbGUgdW5sZXNzIGlmIDsgOiApOwogICAgcHVzaCBAZG9mLCAnLCc7CiAgICBAaXNfZG9fZm9sbG93ZXJ7QGRvZn0gPSAoMSkgeCBzY2FsYXIoQGRvZik7CgogICAgIyBXaGF0IHRva2VucyBtYXkgZm9sbG93IHRoZSBjbG9zaW5nIGJyYWNlIG9mIGFuIGlmIG9yIGVsc2lmIGJsb2NrPwogICAgIyBOb3QgdXNlZC4gUHJldmlvdXNseSB1c2VkIGZvciBjdWRkbGVkIGVsc2UsIGJ1dCBubyBsb25nZXIgbmVlZGVkLgogICAgJWlzX2lmX2JyYWNlX2ZvbGxvd2VyID0gKCk7CgogICAgIyBub3RoaW5nIGNhbiBmb2xsb3cgdGhlIGNsb3NpbmcgY3VybHkgb2YgYW4gZWxzZSB7IH0gYmxvY2s6CiAgICAlaXNfZWxzZV9icmFjZV9mb2xsb3dlciA9ICgpOwoKICAgICMgd2hhdCBjYW4gZm9sbG93IGEgbXVsdGktbGluZSBhbm9ueW1vdXMgc3ViIGRlZmluaXRpb24gY2xvc2luZyBjdXJseToKICAgIG15IEBhc2YgPSBxdyMgOyA6ID0+IG9yIGFuZCAgJiYgfHwgfn4gIX5+ICkgIzsKICAgIHB1c2ggQGFzZiwgJywnOwogICAgQGlzX2Fub25fc3ViX2JyYWNlX2ZvbGxvd2Vye0Bhc2Z9ID0gKDEpIHggc2NhbGFyKEBhc2YpOwoKICAgICMgd2hhdCBjYW4gZm9sbG93IGEgb25lLWxpbmUgYW5vbnltb3VzIHN1YiBjbG9zaW5nIGN1cmx5OgogICAgIyBvbmUtbGluZSBhbm9ueW1vdXMgc3VicyBhbHNvIGhhdmUgJ10nIGhlcmUuLi4KICAgICMgc2VlIHRrMy50IGFuZCBQUC5wbQogICAgbXkgQGFzZjEgPSBxdyMgIDsgOiA9PiBvciBhbmQgICYmIHx8ICkgXSB+fiAhfn4gIzsKICAgIHB1c2ggQGFzZjEsICcsJzsKICAgIEBpc19hbm9uX3N1Yl8xX2JyYWNlX2ZvbGxvd2Vye0Bhc2YxfSA9ICgxKSB4IHNjYWxhcihAYXNmMSk7CgogICAgIyBXaGF0IGNhbiBmb2xsb3cgYSBjbG9zaW5nIGN1cmx5IG9mIGEgYmxvY2sKICAgICMgd2hpY2ggaXMgbm90IGFuIGlmL2Vsc2lmL2Vsc2UvZG8vc29ydC9tYXAvZ3JlcC9ldmFsL3N1YgogICAgIyBUZXN0ZmlsZXM6ICdUb29sYmFyLnBtJywgJ01lbnViYXIucG0nLCBibGVzcy50LCAnM3J1bGVzLnBsJwogICAgbXkgQG9iZiA9IHF3IyAgOyA6ID0+IG9yIGFuZCAgJiYgfHwgKSAjOwogICAgcHVzaCBAb2JmLCAnLCc7CiAgICBAaXNfb3RoZXJfYnJhY2VfZm9sbG93ZXJ7QG9iZn0gPSAoMSkgeCBzY2FsYXIoQG9iZik7CgogICAgJHJpZ2h0X2JvbmRfc3RyZW5ndGh7J3snfSA9IFdFQUs7CiAgICAkbGVmdF9ib25kX3N0cmVuZ3Roeyd7J30gID0gVkVSWV9TVFJPTkc7CgogICAgIyBtYWtlIC1sPTAgIGVxdWFsIHRvIC1sPWluZmluaXRlCiAgICBpZiAoICEkck9wdHMtPnsnbWF4aW11bS1saW5lLWxlbmd0aCd9ICkgewogICAgICAgICRyT3B0cy0+eydtYXhpbXVtLWxpbmUtbGVuZ3RoJ30gPSAxMDAwMDAwOwogICAgfQoKICAgICMgbWFrZSAtbGJsPTAgIGVxdWFsIHRvIC1sYmw9aW5maW5pdGUKICAgIGlmICggISRyT3B0cy0+eydsb25nLWJsb2NrLWxpbmUtY291bnQnfSApIHsKICAgICAgICAkck9wdHMtPnsnbG9uZy1ibG9jay1saW5lLWNvdW50J30gPSAxMDAwMDAwOwogICAgfQoKICAgIG15ICRvbGUgPSAkck9wdHMtPnsnb3V0cHV0LWxpbmUtZW5kaW5nJ307CiAgICBpZiAoJG9sZSkgewogICAgICAgIG15ICVlbmRpbmdzID0gKAogICAgICAgICAgICBkb3MgID0+ICJcMDE1XDAxMiIsCiAgICAgICAgICAgIHdpbiAgPT4gIlwwMTVcMDEyIiwKICAgICAgICAgICAgbWFjICA9PiAiXDAxNSIsCiAgICAgICAgICAgIHVuaXggPT4gIlwwMTIiLAogICAgICAgICk7CgogICAgICAgICMgUGF0Y2ggZm9yIFJUICM5OTUxNCwgYSBtZW1vaXphdGlvbiBpc3N1ZS4KICAgICAgICAjIE5vcm1hbGx5LCB0aGUgdXNlciBlbnRlcnMgb25lIG9mICdkb3MnLCAnd2luJywgZXRjLCBhbmQgd2UgY2hhbmdlIHRoZQogICAgICAgICMgdmFsdWUgaW4gdGhlIG9wdGlvbnMgcGFyYW1ldGVyIHRvIGJlIHRoZSBjb3JyZXNwb25kaW5nIGxpbmUgZW5kaW5nCiAgICAgICAgIyBjaGFyYWN0ZXIuICBCdXQsIGlmIHdlIGFyZSB1c2luZyBtZW1vaXphdGlvbiwgb24gbGF0ZXIgcGFzc2VzIHRocm91Z2gKICAgICAgICAjIGhlcmUgdGhlIG9wdGlvbiBwYXJhbWV0ZXIgd2lsbCBhbHJlYWR5IGhhdmUgdGhlIGRlc2lyZWQgZW5kaW5nCiAgICAgICAgIyBjaGFyYWN0ZXIgcmF0aGVyIHRoYW4gdGhlIGtleXdvcmQgJ2RvcycsICd3aW4nLCBldGMuICBTbwogICAgICAgICMgd2UgbXVzdCBjaGVjayB0byBzZWUgaWYgY29udmVyc2lvbiBoYXMgYWxyZWFkeSBiZWVuIGRvbmUgYW5kLCBpZiBzbywKICAgICAgICAjIGJ5cGFzcyB0aGUgY29udmVyc2lvbiBzdGVwLgogICAgICAgIG15ICVlbmRpbmdzX2ludmVydGVkID0gKAogICAgICAgICAgICAiXDAxNVwwMTIiID0+ICdkb3MnLAogICAgICAgICAgICAiXDAxNVwwMTIiID0+ICd3aW4nLAogICAgICAgICAgICAiXDAxNSIgICAgID0+ICdtYWMnLAogICAgICAgICAgICAiXDAxMiIgICAgID0+ICd1bml4JywKICAgICAgICApOwoKICAgICAgICBpZiAoIGRlZmluZWQoICRlbmRpbmdzX2ludmVydGVkeyRvbGV9ICkgKSB7CgogICAgICAgICAgICAjIHdlIGFscmVhZHkgaGF2ZSB2YWxpZCBsaW5lIGVuZGluZywgbm90aGluZyBtb3JlIHRvIGRvCiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkb2xlID0gbGMgJG9sZTsKICAgICAgICAgICAgdW5sZXNzICggJHJPcHRzLT57J291dHB1dC1saW5lLWVuZGluZyd9ID0gJGVuZGluZ3N7JG9sZX0gKSB7CiAgICAgICAgICAgICAgICBteSAkc3RyID0gam9pbiAiICIsIGtleXMgJWVuZGluZ3M7CiAgICAgICAgICAgICAgICBEaWUoPDxFT00pOwpVbnJlY29nbml6ZWQgbGluZSBlbmRpbmcgJyRvbGUnOyBleHBlY3Rpbmcgb25lIG9mOiAkc3RyCkVPTQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJHJPcHRzLT57J3ByZXNlcnZlLWxpbmUtZW5kaW5ncyd9ICkgewogICAgICAgICAgICAgICAgV2FybigiSWdub3JpbmcgLXBsZTsgY29uZmxpY3RzIHdpdGggLW9sZVxuIik7CiAgICAgICAgICAgICAgICAkck9wdHMtPnsncHJlc2VydmUtbGluZS1lbmRpbmdzJ30gPSB1bmRlZjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGhhc2hlcyB1c2VkIHRvIHNpbXBsaWZ5IHNldHRpbmcgd2hpdGVzcGFjZQogICAgJXRpZ2h0bmVzcyA9ICgKICAgICAgICAneycgPT4gJHJPcHRzLT57J2JyYWNlLXRpZ2h0bmVzcyd9LAogICAgICAgICd9JyA9PiAkck9wdHMtPnsnYnJhY2UtdGlnaHRuZXNzJ30sCiAgICAgICAgJygnID0+ICRyT3B0cy0+eydwYXJlbi10aWdodG5lc3MnfSwKICAgICAgICAnKScgPT4gJHJPcHRzLT57J3BhcmVuLXRpZ2h0bmVzcyd9LAogICAgICAgICdbJyA9PiAkck9wdHMtPnsnc3F1YXJlLWJyYWNrZXQtdGlnaHRuZXNzJ30sCiAgICAgICAgJ10nID0+ICRyT3B0cy0+eydzcXVhcmUtYnJhY2tldC10aWdodG5lc3MnfSwKICAgICk7CiAgICAlbWF0Y2hpbmdfdG9rZW4gPSAoCiAgICAgICAgJ3snID0+ICd9JywKICAgICAgICAnKCcgPT4gJyknLAogICAgICAgICdbJyA9PiAnXScsCiAgICAgICAgJz8nID0+ICc6JywKICAgICk7CgogICAgIyBub3RlIGFueSByZXF1ZXN0ZWQgb2xkIGxpbmUgYnJlYWtzIHRvIGtlZXAKICAgICVrZWVwX2JyZWFrX2JlZm9yZV90eXBlID0gKCk7CiAgICAla2VlcF9icmVha19hZnRlcl90eXBlICA9ICgpOwogICAgaWYgKCAhJHJPcHRzLT57J2lnbm9yZS1vbGQtYnJlYWtwb2ludHMnfSApIHsKCiAgICAgICAgIyBGSVhNRTogY291bGQgY2hlY2sgZm9yIHZhbGlkIHR5cGVzIGhlcmUuCiAgICAgICAgIyBJbnZhbGlkIHR5cGVzIGFyZSBoYXJtbGVzcyBidXQgcHJvYmFibHkgbm90IGludGVuZGVkLgogICAgICAgIG15IEB0eXBlczsKICAgICAgICBAdHlwZXMgPSAoIHNwbGl0X3dvcmRzKCAkck9wdHMtPnsna2VlcC1vbGQtYnJlYWtwb2ludHMtYmVmb3JlJ30gKSApOwogICAgICAgIEBrZWVwX2JyZWFrX2JlZm9yZV90eXBle0B0eXBlc30gPSAoMSkgeCBzY2FsYXIoQHR5cGVzKTsKICAgICAgICBAdHlwZXMgPSAoIHNwbGl0X3dvcmRzKCAkck9wdHMtPnsna2VlcC1vbGQtYnJlYWtwb2ludHMtYWZ0ZXInfSApICk7CiAgICAgICAgQGtlZXBfYnJlYWtfYWZ0ZXJfdHlwZXtAdHlwZXN9ID0gKDEpIHggc2NhbGFyKEB0eXBlcyk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBpZiAoICRyT3B0cy0+eydicmVhay1hdC1vbGQtbWV0aG9kLWJyZWFrcG9pbnRzJ30gKSB7CiAgICAgICAgICAgIFdhcm4oIkNvbmZsaWN0aW5nIHBhcmFtZXRlcnM6IC1pb2IgYW5kIC1ib207IC1ib20gd2lsbCBiZSBpZ25vcmVkXG4iCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGlmICggJHJPcHRzLT57J2JyZWFrLWF0LW9sZC1jb21tYS1icmVha3BvaW50cyd9ICkgewogICAgICAgICAgICBXYXJuKCJDb25mbGljdGluZyBwYXJhbWV0ZXJzOiAtaW9iIGFuZCAtYm9jOyAtYm9jIHdpbGwgYmUgaWdub3JlZFxuIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBpZiAoICRyT3B0cy0+eydicmVhay1hdC1vbGQtc2VtaWNvbG9uLWJyZWFrcG9pbnRzJ30gKSB7CiAgICAgICAgICAgIFdhcm4oIkNvbmZsaWN0aW5nIHBhcmFtZXRlcnM6IC1pb2IgYW5kIC1ib3M7IC1ib3Mgd2lsbCBiZSBpZ25vcmVkXG4iCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGlmICggJHJPcHRzLT57J2tlZXAtb2xkLWJyZWFrcG9pbnRzLWJlZm9yZSd9ICkgewogICAgICAgICAgICBXYXJuKCJDb25mbGljdGluZyBwYXJhbWV0ZXJzOiAtaW9iIGFuZCAta2JiOyAta2JiIHdpbGwgYmUgaWdub3JlZFxuIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBpZiAoICRyT3B0cy0+eydrZWVwLW9sZC1icmVha3BvaW50cy1hZnRlcid9ICkgewogICAgICAgICAgICBXYXJuKCJDb25mbGljdGluZyBwYXJhbWV0ZXJzOiAtaW9iIGFuZCAta2JhOyAta2JhIHdpbGwgYmUgaWdub3JlZFxuIgogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBOb3RlOiB0aGVyZSBhcmUgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIHRoYXQgY2FuIGJlIG1hZGUgaW5hY3RpdmUgYnkKICAgICAgICAjIC1pb2IsIGJ1dCB0aGV5IGFyZSBvbiBieSBkZWZhdWx0IHNvIHdlIHdvdWxkIGdlbmVyYXRlIGV4Y2Vzc2l2ZQogICAgICAgICMgd2FybmluZ3MgaWYgd2Ugbm90ZWQgdGhlbS4gVGhleSBhcmU6CiAgICAgICAgIyAkck9wdHMtPnsnYnJlYWstYXQtb2xkLWtleXdvcmQtYnJlYWtwb2ludHMnfQogICAgICAgICMgJHJPcHRzLT57J2JyZWFrLWF0LW9sZC1sb2dpY2FsLWJyZWFrcG9pbnRzJ30KICAgICAgICAjICRyT3B0cy0+eydicmVhay1hdC1vbGQtdGVybmFyeS1icmVha3BvaW50cyd9CiAgICAgICAgIyAkck9wdHMtPnsnYnJlYWstYXQtb2xkLWF0dHJpYnV0ZS1icmVha3BvaW50cyd9CiAgICB9CgogICAgIyB2ZXJ5IGZyZXF1ZW50bHkgdXNlZCBwYXJhbWV0ZXJzIG1hZGUgZ2xvYmFsIGZvciBlZmZpY2llbmN5CiAgICAkck9wdHNfY2xvc2luZ19zaWRlX2NvbW1lbnRfbWF4aW11bV90ZXh0ID0KICAgICAgJHJPcHRzLT57J2Nsb3Npbmctc2lkZS1jb21tZW50LW1heGltdW0tdGV4dCd9OwogICAgJHJPcHRzX2NvbnRpbnVhdGlvbl9pbmRlbnRhdGlvbiA9ICRyT3B0cy0+eydjb250aW51YXRpb24taW5kZW50YXRpb24nfTsKICAgICRyT3B0c19pbmRlbnRfY29sdW1ucyAgICAgICAgICAgPSAkck9wdHMtPnsnaW5kZW50LWNvbHVtbnMnfTsKICAgICRyT3B0c19saW5lX3VwX3BhcmVudGhlc2VzICAgICAgPSAkck9wdHMtPnsnbGluZS11cC1wYXJlbnRoZXNlcyd9OwogICAgJHJPcHRzX21heGltdW1fbGluZV9sZW5ndGggICAgICA9ICRyT3B0cy0+eydtYXhpbXVtLWxpbmUtbGVuZ3RoJ307CiAgICAkck9wdHNfdmFyaWFibGVfbWF4aW11bV9saW5lX2xlbmd0aCA9CiAgICAgICRyT3B0cy0+eyd2YXJpYWJsZS1tYXhpbXVtLWxpbmUtbGVuZ3RoJ307CiAgICAkck9wdHNfYmxvY2tfYnJhY2VfdGlnaHRuZXNzID0gJHJPcHRzLT57J2Jsb2NrLWJyYWNlLXRpZ2h0bmVzcyd9OwogICAgJHJPcHRzX2Jsb2NrX2JyYWNlX3ZlcnRpY2FsX3RpZ2h0bmVzcyA9CiAgICAgICRyT3B0cy0+eydibG9jay1icmFjZS12ZXJ0aWNhbC10aWdodG5lc3MnfTsKICAgICRyT3B0c19zdGFja19jbG9zaW5nX2Jsb2NrX2JyYWNlID0gJHJPcHRzLT57J3N0YWNrLWNsb3NpbmctYmxvY2stYnJhY2UnfTsKICAgICRyT3B0c19tYXhpbXVtX2NvbnNlY3V0aXZlX2JsYW5rX2xpbmVzID0KICAgICAgJHJPcHRzLT57J21heGltdW0tY29uc2VjdXRpdmUtYmxhbmstbGluZXMnfTsKICAgICRyT3B0c19yZWNvbWJpbmUgICAgPSAkck9wdHMtPnsncmVjb21iaW5lJ307CiAgICAkck9wdHNfYWRkX25ld2xpbmVzID0gJHJPcHRzLT57J2FkZC1uZXdsaW5lcyd9OwogICAgJHJPcHRzX2JyZWFrX2F0X29sZF9jb21tYV9icmVha3BvaW50cyA9CiAgICAgICRyT3B0cy0+eydicmVhay1hdC1vbGQtY29tbWEtYnJlYWtwb2ludHMnfTsKICAgICRyT3B0c19pZ25vcmVfb2xkX2JyZWFrcG9pbnRzICAgID0gJHJPcHRzLT57J2lnbm9yZS1vbGQtYnJlYWtwb2ludHMnfTsKICAgICRyT3B0c19rZWVwX2ludGVyaW9yX3NlbWljb2xvbnMgID0gJHJPcHRzLT57J2tlZXAtaW50ZXJpb3Itc2VtaWNvbG9ucyd9OwogICAgJHJPcHRzX2NvbW1hX2Fycm93X2JyZWFrcG9pbnRzICAgPSAkck9wdHMtPnsnY29tbWEtYXJyb3ctYnJlYWtwb2ludHMnfTsKICAgICRyT3B0c19tYXhpbXVtX2ZpZWxkc19wZXJfdGFibGUgID0gJHJPcHRzLT57J21heGltdW0tZmllbGRzLXBlci10YWJsZSd9OwogICAgJHJPcHRzX29uZV9saW5lX2Jsb2NrX3NlbWljb2xvbnMgPSAkck9wdHMtPnsnb25lLWxpbmUtYmxvY2stc2VtaWNvbG9ucyd9OwogICAgJHJPcHRzX2JyZWFrX2F0X29sZF9zZW1pY29sb25fYnJlYWtwb2ludHMgPQogICAgICAkck9wdHMtPnsnYnJlYWstYXQtb2xkLXNlbWljb2xvbi1icmVha3BvaW50cyd9OwoKICAgICRyT3B0c190ZWVfc2lkZV9jb21tZW50cyAgICA9ICRyT3B0cy0+eyd0ZWUtc2lkZS1jb21tZW50cyd9OwogICAgJHJPcHRzX3RlZV9ibG9ja19jb21tZW50cyAgID0gJHJPcHRzLT57J3RlZS1ibG9jay1jb21tZW50cyd9OwogICAgJHJPcHRzX3RlZV9wb2QgICAgICAgICAgICAgID0gJHJPcHRzLT57J3RlZS1wb2QnfTsKICAgICRyT3B0c19kZWxldGVfc2lkZV9jb21tZW50cyA9ICRyT3B0cy0+eydkZWxldGUtc2lkZS1jb21tZW50cyd9OwogICAgJHJPcHRzX2RlbGV0ZV9jbG9zaW5nX3NpZGVfY29tbWVudHMgPQogICAgICAkck9wdHMtPnsnZGVsZXRlLWNsb3Npbmctc2lkZS1jb21tZW50cyd9OwogICAgJHJPcHRzX2Zvcm1hdF9za2lwcGluZyAgICAgICA9ICRyT3B0cy0+eydmb3JtYXQtc2tpcHBpbmcnfTsKICAgICRyT3B0c19pbmRlbnRfb25seSAgICAgICAgICAgPSAkck9wdHMtPnsnaW5kZW50LW9ubHknfTsKICAgICRyT3B0c19zdGF0aWNfYmxvY2tfY29tbWVudHMgPSAkck9wdHMtPnsnc3RhdGljLWJsb2NrLWNvbW1lbnRzJ307CgogICAgIyBOb3RlIHRoYXQgYm90aCBvcGVuaW5nIGFuZCBjbG9zaW5nIHRva2VucyBjYW4gYWNjZXNzIHRoZSBvcGVuaW5nCiAgICAjIGFuZCBjbG9zaW5nIGZsYWdzIG9mIHRoZWlyIGNvbnRhaW5lciB0eXBlcy4KICAgICVvcGVuaW5nX3ZlcnRpY2FsX3RpZ2h0bmVzcyA9ICgKICAgICAgICAnKCcgPT4gJHJPcHRzLT57J3BhcmVuLXZlcnRpY2FsLXRpZ2h0bmVzcyd9LAogICAgICAgICd7JyA9PiAkck9wdHMtPnsnYnJhY2UtdmVydGljYWwtdGlnaHRuZXNzJ30sCiAgICAgICAgJ1snID0+ICRyT3B0cy0+eydzcXVhcmUtYnJhY2tldC12ZXJ0aWNhbC10aWdodG5lc3MnfSwKICAgICAgICAnKScgPT4gJHJPcHRzLT57J3BhcmVuLXZlcnRpY2FsLXRpZ2h0bmVzcyd9LAogICAgICAgICd9JyA9PiAkck9wdHMtPnsnYnJhY2UtdmVydGljYWwtdGlnaHRuZXNzJ30sCiAgICAgICAgJ10nID0+ICRyT3B0cy0+eydzcXVhcmUtYnJhY2tldC12ZXJ0aWNhbC10aWdodG5lc3MnfSwKICAgICk7CgogICAgJWNsb3NpbmdfdmVydGljYWxfdGlnaHRuZXNzID0gKAogICAgICAgICcoJyA9PiAkck9wdHMtPnsncGFyZW4tdmVydGljYWwtdGlnaHRuZXNzLWNsb3NpbmcnfSwKICAgICAgICAneycgPT4gJHJPcHRzLT57J2JyYWNlLXZlcnRpY2FsLXRpZ2h0bmVzcy1jbG9zaW5nJ30sCiAgICAgICAgJ1snID0+ICRyT3B0cy0+eydzcXVhcmUtYnJhY2tldC12ZXJ0aWNhbC10aWdodG5lc3MtY2xvc2luZyd9LAogICAgICAgICcpJyA9PiAkck9wdHMtPnsncGFyZW4tdmVydGljYWwtdGlnaHRuZXNzLWNsb3NpbmcnfSwKICAgICAgICAnfScgPT4gJHJPcHRzLT57J2JyYWNlLXZlcnRpY2FsLXRpZ2h0bmVzcy1jbG9zaW5nJ30sCiAgICAgICAgJ10nID0+ICRyT3B0cy0+eydzcXVhcmUtYnJhY2tldC12ZXJ0aWNhbC10aWdodG5lc3MtY2xvc2luZyd9LAogICAgKTsKCiAgICAjIGFzc3VtZSBmbGFnIGZvciAnPicgc2FtZSBhcyAnKScgZm9yIGNsb3NpbmcgcXcgcXVvdGVzCiAgICAlY2xvc2luZ190b2tlbl9pbmRlbnRhdGlvbiA9ICgKICAgICAgICAnKScgPT4gJHJPcHRzLT57J2Nsb3NpbmctcGFyZW4taW5kZW50YXRpb24nfSwKICAgICAgICAnfScgPT4gJHJPcHRzLT57J2Nsb3NpbmctYnJhY2UtaW5kZW50YXRpb24nfSwKICAgICAgICAnXScgPT4gJHJPcHRzLT57J2Nsb3Npbmctc3F1YXJlLWJyYWNrZXQtaW5kZW50YXRpb24nfSwKICAgICAgICAnPicgPT4gJHJPcHRzLT57J2Nsb3NpbmctcGFyZW4taW5kZW50YXRpb24nfSwKICAgICk7CgogICAgIyBmbGFnIGluZGljYXRpbmcgaWYgYW55IGNsb3NpbmcgdG9rZW5zIGFyZSBpbmRlbnRlZAogICAgJHNvbWVfY2xvc2luZ190b2tlbl9pbmRlbnRhdGlvbiA9CiAgICAgICAgICRyT3B0cy0+eydjbG9zaW5nLXBhcmVuLWluZGVudGF0aW9uJ30KICAgICAgfHwgJHJPcHRzLT57J2Nsb3NpbmctYnJhY2UtaW5kZW50YXRpb24nfQogICAgICB8fCAkck9wdHMtPnsnY2xvc2luZy1zcXVhcmUtYnJhY2tldC1pbmRlbnRhdGlvbid9CiAgICAgIHx8ICRyT3B0cy0+eydpbmRlbnQtY2xvc2luZy1icmFjZSd9OwoKICAgICVvcGVuaW5nX3Rva2VuX3JpZ2h0ID0gKAogICAgICAgICcoJyA9PiAkck9wdHMtPnsnb3BlbmluZy1wYXJlbi1yaWdodCd9LAogICAgICAgICd7JyA9PiAkck9wdHMtPnsnb3BlbmluZy1oYXNoLWJyYWNlLXJpZ2h0J30sCiAgICAgICAgJ1snID0+ICRyT3B0cy0+eydvcGVuaW5nLXNxdWFyZS1icmFja2V0LXJpZ2h0J30sCiAgICApOwoKICAgICVzdGFja19vcGVuaW5nX3Rva2VuID0gKAogICAgICAgICcoJyA9PiAkck9wdHMtPnsnc3RhY2stb3BlbmluZy1wYXJlbid9LAogICAgICAgICd7JyA9PiAkck9wdHMtPnsnc3RhY2stb3BlbmluZy1oYXNoLWJyYWNlJ30sCiAgICAgICAgJ1snID0+ICRyT3B0cy0+eydzdGFjay1vcGVuaW5nLXNxdWFyZS1icmFja2V0J30sCiAgICApOwoKICAgICVzdGFja19jbG9zaW5nX3Rva2VuID0gKAogICAgICAgICcpJyA9PiAkck9wdHMtPnsnc3RhY2stY2xvc2luZy1wYXJlbid9LAogICAgICAgICd9JyA9PiAkck9wdHMtPnsnc3RhY2stY2xvc2luZy1oYXNoLWJyYWNlJ30sCiAgICAgICAgJ10nID0+ICRyT3B0cy0+eydzdGFjay1jbG9zaW5nLXNxdWFyZS1icmFja2V0J30sCiAgICApOwoKICAgICMgQ3JlYXRlIGEgdGFibGUgb2YgbWF4aW11bSBsaW5lIGxlbmd0aCB2cyBsZXZlbCBmb3IgbGF0ZXIgZWZmaWNpZW50IHVzZS4KICAgICMgVGhpcyBhdm9pZHMgY29udGludWFsbHkgY2hlY2tpbmcgdGhlIC12bWxsIGZsYWcuIFdlIHdpbGwgbWFrZSB0aGUKICAgICMgdGFibGUgdmVyeSBsb25nIHRvIGJlIHN1cmUgaXQgd2lsbCBub3QgYmUgZXhjZWVkZWQuICBCdXQgd2UgaGF2ZSB0bwogICAgIyBjaG9vc2UgYSBmaXhlZCBsZW5ndGguICBBIGNoZWNrIHdpbGwgYmUgbWFkZSBhdCB0aGUgc3RhcnQgb2Ygc3ViCiAgICAjICdmaW5pc2hfZm9ybWF0dGluZycgdG8gYmUgc3VyZSBpdCBpcyBub3QgZXhjZWVkZWQuICBOb3RlLCBzb21lCiAgICAjIG9mIG15IHN0YW5kYXJkIHRlc3QgcHJvYmxlbXMgaGF2ZSBpbmRlbnRhdGlvbiBsZXZlbHMgb2YgYWJvdXQgMTUwLAogICAgIyBzbyB0aGlzIHNob3VsZCBiZSBmYWlybHkgbGFyZ2UuCiAgICBteSAkbGV2ZWxfbWF4ID0gMTAwMDsKICAgIGZvcmVhY2ggbXkgJGxldmVsICggMCAuLiAkbGV2ZWxfbWF4ICkgewogICAgICAgICRtYXhpbXVtX2xpbmVfbGVuZ3RoWyRsZXZlbF0gPSAkck9wdHNfbWF4aW11bV9saW5lX2xlbmd0aDsKICAgIH0KICAgIGlmICgkck9wdHNfdmFyaWFibGVfbWF4aW11bV9saW5lX2xlbmd0aCkgewogICAgICAgIGZvcmVhY2ggbXkgJGxldmVsICggMCAuLiAkbGV2ZWxfbWF4ICkgewogICAgICAgICAgICAkbWF4aW11bV9saW5lX2xlbmd0aFskbGV2ZWxdICs9ICRsZXZlbCAqICRyT3B0c19pbmRlbnRfY29sdW1uczsKICAgICAgICB9CiAgICB9CgogICAgaW5pdGlhbGl6ZV93ZWxkX25lc3RlZF9leGNsdXNpb25fcnVsZXMoJHJPcHRzKTsKICAgIHJldHVybjsKfQoKc3ViIGluaXRpYWxpemVfd2VsZF9uZXN0ZWRfZXhjbHVzaW9uX3J1bGVzIHsKICAgIG15ICgkck9wdHMpID0gQF87CiAgICAld2VsZF9uZXN0ZWRfZXhjbHVzaW9uX3J1bGVzID0gKCk7CgogICAgbXkgJG9wdF9uYW1lID0gJ3dlbGQtbmVzdGVkLWV4Y2x1c2lvbi1saXN0JzsKICAgIG15ICRzdHIgICAgICA9ICRyT3B0cy0+eyRvcHRfbmFtZX07CiAgICByZXR1cm4gdW5sZXNzICgkc3RyKTsKICAgICRzdHIgPX4gcy9eXHMrLy87CiAgICAkc3RyID1+IHMvXHMrJC8vOwogICAgcmV0dXJuIHVubGVzcyAoJHN0cik7CgogICAgIyBUaGVyZSBhcmUgZm91ciBjb250YWluZXIgdG9rZW5zLgogICAgbXkgJXRva2VuX2tleXMgPSAoCiAgICAgICAgJygnID0+ICcoJywKICAgICAgICAnWycgPT4gJ1snLAogICAgICAgICd7JyA9PiAneycsCiAgICAgICAgJ3EnID0+ICdxJywKICAgICk7CgogICAgIyBXZSBhcmUgcGFyc2luZyBhbiBleGNsdXNpb24gbGlzdCBmb3IgbmVzdGVkIHdlbGRzLiBUaGUgbGlzdCBpcyBhIHN0cmluZwogICAgIyB3aXRoIHNwYWNlcyBzZXBhcmF0aW5nIGFueSBudW1iZXIgb2YgaXRlbXMuICBFYWNoIGl0ZW0gY29uc2lzdHMgb2YgdGhyZWUKICAgICMgcGllY2VzIG9mIGluZm9ybWF0aW9uOgogICAgIyA8b3B0aW9uYWwgcG9zaXRpb24+IDxvcHRpb25hbCB0eXBlPiA8dHlwZSBvZiBjb250YWluZXI+CiAgICAjIDwgICAgIF4gb3IgLiAgICAgID4gPCAgICBrIG9yIEsgICA+IDwgICAgICggWyB7ICAgICAgID4KCiAgICAjIFRoZSBsYXN0IGNoYXJhY3RlciBpcyB0aGUgcmVxdWlyZWQgY29udGFpbmVyIHR5cGUgYW5kIG11c3QgYmUgb25lIG9mOgogICAgIyAoID0gcGFyZW4KICAgICMgWyA9IHNxdWFyZSBicmFja2V0CiAgICAjIHsgPSBicmFjZQoKICAgICMgQW4gb3B0aW9uYWwgbGVhZGluZyBwb3NpdGlvbiBpbmRpY2F0b3I6CiAgICAjIF4gbWVhbnMgdGhlIGxlYWRpbmcgdG9rZW4gcG9zaXRpb24gaW4gdGhlIHdlbGQKICAgICMgLiBtZWFucyBhIHNlY29uZGFyeSB0b2tlbiBwb3NpdGlvbiBpbiB0aGUgd2VsZAogICAgIyAgIG5vIHBvc2l0aW9uIGluZGljYXRvciBtZWFucyBhbGwgcG9zaXRpb25zIG1hdGNoCgogICAgIyBBbiBvcHRpb25hbCBhbHBoYW51bWVyaWMgY2hhcmFjdGVyIGJldHdlZW4gdGhlIHBvc2l0aW9uIGFuZCBjb250YWluZXIKICAgICMgdG9rZW4gc2VsZWN0cyB0byB3aGljaCB0aGUgcnVsZSBhcHBsaWVzOgogICAgIyBrID0gYW55IGtleXdvcmQKICAgICMgSyA9IGFueSBub24ta2V5d29yZAogICAgIyBmID0gZnVuY3Rpb24gY2FsbAogICAgIyBGID0gbm90IGEgZnVuY3Rpb24gY2FsbAogICAgIyB3ID0gZnVuY3Rpb24gb3Iga2V5d29yZAogICAgIyBXID0gbm90IGEgZnVuY3Rpb24gb3Iga2V5d29yZAogICAgIyAgICAgbm8gbGV0dGVyIG1lYW5zIGFueSBwcmVjZWRpbmcgdHlwZSBtYXRjaGVzCgogICAgIyBFeGFtcGxlczoKICAgICMgXiggIC0gdGhlIHdlbGQgbXVzdCBub3Qgc3RhcnQgd2l0aCBhIHBhcmVuCiAgICAjIC4oICAtIHRoZSBzZWNvbmQgYW5kIGxhdGVyIHRva2VucyBtYXkgbm90IGJlIHBhcmVucwogICAgIyAoICAgLSBubyBwYXJlbnMgaW4gd2VsZAogICAgIyBeSyggIC0gZXhjbHVkZSBhIGxlYWRpbmcgcGFyZW4gbm90IHByZWNlZGVkIGJ5IGEga2V5d29yZAogICAgIyAuayggIC0gZXhjbHVkZSBhIHNlY29uZGFyeSBwYXJlbiBwcmVjZWRlZCBieSBhIGtleXdvcmQKICAgICMgWyB7ICAtIGV4Y2x1ZGUgYWxsIGJyYWNrZXRzIGFuZCBicmFjZXMKCiAgICBteSBAaXRlbXMgPSBzcGxpdCAvXHMrLywgJHN0cjsKICAgIG15ICRtc2cxOwogICAgbXkgJG1zZzI7CiAgICBmb3JlYWNoIG15ICRpdGVtIChAaXRlbXMpIHsKICAgICAgICBteSAkaXRlbV9zYXZlID0gJGl0ZW07CiAgICAgICAgbXkgJHRvayAgICAgICA9IGNob3AoJGl0ZW0pOwogICAgICAgIG15ICRrZXkgICAgICAgPSAkdG9rZW5fa2V5c3skdG9rfTsKICAgICAgICBpZiAoICFkZWZpbmVkKCRrZXkpICkgewogICAgICAgICAgICAkbXNnMSAuPSAiICckaXRlbV9zYXZlJyI7CiAgICAgICAgICAgIG5leHQ7CiAgICAgICAgfQogICAgICAgIGlmICggIWRlZmluZWQoICR3ZWxkX25lc3RlZF9leGNsdXNpb25fcnVsZXN7JGtleX0gKSApIHsKICAgICAgICAgICAgJHdlbGRfbmVzdGVkX2V4Y2x1c2lvbl9ydWxlc3ska2V5fSA9IFtdOwogICAgICAgIH0KICAgICAgICBteSAkcmZsYWdzID0gJHdlbGRfbmVzdGVkX2V4Y2x1c2lvbl9ydWxlc3ska2V5fTsKCiAgICAgICAgIyBBICdxJyBtZWFucyBkbyBub3Qgd2VsZCBxdW90ZXMKICAgICAgICBpZiAoICR0b2sgZXEgJ3EnICkgewogICAgICAgICAgICAkcmZsYWdzLT5bMF0gPSAnKic7CiAgICAgICAgICAgICRyZmxhZ3MtPlsxXSA9ICcqJzsKICAgICAgICAgICAgbmV4dDsKICAgICAgICB9CgogICAgICAgIG15ICRwb3MgICAgPSAnKic7CiAgICAgICAgbXkgJHNlbGVjdCA9ICcqJzsKICAgICAgICBpZiAoJGl0ZW0pIHsKICAgICAgICAgICAgaWYgKCAkaXRlbSA9fiAvXihbXF5cLl0pPyhba0tmRndXXSk/JC8gKSB7CiAgICAgICAgICAgICAgICAkcG9zICAgID0gJDEgaWYgKCQxKTsKICAgICAgICAgICAgICAgICRzZWxlY3QgPSAkMiBpZiAoJDIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJG1zZzEgLj0gIiAnJGl0ZW1fc2F2ZSciOwogICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoICRwb3MgZXEgJ14nIHx8ICRwb3MgZXEgJyonICkgewogICAgICAgICAgICBpZiAoIGRlZmluZWQoICRyZmxhZ3MtPlswXSApICYmICRyZmxhZ3MgbmUgJHNlbGVjdCApIHsKICAgICAgICAgICAgICAgICRtc2cxIC49ICIgJyRpdGVtX3NhdmUnIjsKICAgICAgICAgICAgfQogICAgICAgICAgICAkcmZsYWdzLT5bMF0gPSAkc2VsZWN0OwogICAgICAgIH0KICAgICAgICBpZiAoICRwb3MgZXEgJy4nIHx8ICRwb3MgZXEgJyonICkgewogICAgICAgICAgICBpZiAoIGRlZmluZWQoICRyZmxhZ3MtPlsxXSApICYmICRyZmxhZ3MgbmUgJHNlbGVjdCApIHsKICAgICAgICAgICAgICAgICRtc2cxIC49ICIgJyRpdGVtX3NhdmUnIjsKICAgICAgICAgICAgfQogICAgICAgICAgICAkcmZsYWdzLT5bMV0gPSAkc2VsZWN0OwogICAgICAgIH0KICAgIH0KICAgIGlmICgkbXNnMSkgewogICAgICAgIFdhcm4oPDxFT00pOwpVbmV4cGVjdGluZyBzeW1ib2wocykgZW5jb3VudGVyZWQgaW4gLS0kb3B0X25hbWUgd2lsbCBiZSBpZ25vcmVkOgokbXNnMQpFT00KICAgIH0KICAgIGlmICgkbXNnMikgewogICAgICAgIFdhcm4oPDxFT00pOwpNdWx0aXBsZSBzcGVjaWZpY2F0aW9ucyB3ZXJlIGVuY291bnRlcmVkIGluIHRoZSAtLXdlbGQtbmVzdGVkLWV4Y2x1c2lvbi1saXN0IGZvcjoKJG1zZzIKT25seSB0aGUgbGFzdCB3aWxsIGJlIHVzZWQuCkVPTQogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgaW5pdGlhbGl6ZV93aGl0ZXNwYWNlX2hhc2hlcyB7CgogICAgIyBUaGlzIGlzIGNhbGxlZCBvbmNlIGJlZm9yZSBmb3JtYXR0aW5nIGJlZ2lucyB0byBpbml0aWFsaXplIHRoZXNlIGdsb2JhbAogICAgIyBoYXNoZXMsIHdoaWNoIGNvbnRyb2wgdGhlIHVzZSBvZiB3aGl0ZXNwYWNlIGFyb3VuZCB0b2tlbnM6CiAgICAjCiAgICAjICViaW5hcnlfd3NfcnVsZXMKICAgICMgJXdhbnRfbGVmdF9zcGFjZQogICAgIyAld2FudF9yaWdodF9zcGFjZQogICAgIyAlc3BhY2VfYWZ0ZXJfa2V5d29yZAogICAgIwogICAgIyBNYW55IHRva2VuIHR5cGVzIGFyZSBpZGVudGljYWwgdG8gdGhlIHRva2VucyB0aGVtc2VsdmVzLgogICAgIyBTZWUgdGhlIHRva2VuaXplciBmb3IgYSBjb21wbGV0ZSBsaXN0LiBIZXJlIGFyZSBzb21lIHNwZWNpYWwgdHlwZXM6CiAgICAjICAgayA9IHBlcmwga2V5d29yZAogICAgIyAgIGYgPSBzZW1pY29sb24gaW4gZm9yIHN0YXRlbWVudAogICAgIyAgIG0gPSB1bmFyeSBtaW51cwogICAgIyAgIHAgPSB1bmFyeSBwbHVzCiAgICAjIE5vdGUgdGhhdCA6OiBpcyBleGNsdWRlZCBzaW5jZSBpdCBzaG91bGQgYmUgY29udGFpbmVkIGluIGFuIGlkZW50aWZpZXIKICAgICMgTm90ZSB0aGF0ICctPicgaXMgZXhjbHVkZWQgYmVjYXVzZSBpdCBuZXZlciBnZXRzIHNwYWNlCiAgICAjIHBhcmVudGhlc2VzIGFuZCBicmFja2V0cyBhcmUgZXhjbHVkZWQgc2luY2UgdGhleSBhcmUgaGFuZGxlZCBzcGVjaWFsbHkKICAgICMgY3VybHkgYnJhY2VzIGFyZSBpbmNsdWRlZCBidXQgbWF5IGJlIG92ZXJyaWRkZW4gYnkgbG9naWMsIHN1Y2ggYXMKICAgICMgbmV3bGluZSBsb2dpYy4KCiAgICAjIE5FV19UT0tFTlM6IGNyZWF0ZSBhIHdoaXRlc3BhY2UgcnVsZSBoZXJlLiAgVGhpcyBjYW4gYmUgYXMKICAgICMgc2ltcGxlIGFzIGFkZGluZyB5b3VyIG5ldyBsZXR0ZXIgdG8gQHNwYWNlc19ib3RoX3NpZGVzLCBmb3IKICAgICMgZXhhbXBsZS4KCiAgICBteSBAb3BlbmluZ190eXBlID0gcXc8IEwgeyAoIFsgPjsKICAgIEBpc19vcGVuaW5nX3R5cGV7QG9wZW5pbmdfdHlwZX0gPSAoMSkgeCBzY2FsYXIoQG9wZW5pbmdfdHlwZSk7CgogICAgbXkgQGNsb3NpbmdfdHlwZSA9IHF3PCBSIH0gKSBdID47CiAgICBAaXNfY2xvc2luZ190eXBle0BjbG9zaW5nX3R5cGV9ID0gKDEpIHggc2NhbGFyKEBjbG9zaW5nX3R5cGUpOwoKICAgIG15IEBzcGFjZXNfYm90aF9zaWRlcyA9IHF3IwogICAgICArIC0gKiAvICUgPyA9IC4gOiB4IDwgPiB8ICYgXiAuLiA8PCA+PiAqKiAmJiAuLiB8fCAvLyA9PiArPSAtPQogICAgICAuPSAlPSB4PSAmPSB8PSBePSAqPSA8PiA8PSA+PSA9PSA9fiAhfiAvPSAhPSAuLi4gPDw9ID4+PSB+fiAhfn4KICAgICAgJiY9IHx8PSAvLz0gPD0+IEEgayBmIHcgRiBuIEMgWSBVIEcgdgogICAgICAjOwoKICAgIG15IEBzcGFjZXNfbGVmdF9zaWRlID0gcXc8CiAgICAgIHQgISB+IG0gcCB7IFwgaCBwcCBtbSBaIGoKICAgID47CiAgICBwdXNoKCBAc3BhY2VzX2xlZnRfc2lkZSwgJyMnICk7ICAgICMgYXZvaWRzIHdhcm5pbmcgbWVzc2FnZQoKICAgIG15IEBzcGFjZXNfcmlnaHRfc2lkZSA9IHF3PAogICAgICA7IH0gKSBdIFIgSiArKyAtLSAqKj0KICAgID47CiAgICBwdXNoKCBAc3BhY2VzX3JpZ2h0X3NpZGUsICcsJyApOyAgICAjIGF2b2lkcyB3YXJuaW5nIG1lc3NhZ2UKCiAgICAld2FudF9sZWZ0X3NwYWNlICA9ICgpOwogICAgJXdhbnRfcmlnaHRfc3BhY2UgPSAoKTsKICAgICViaW5hcnlfd3NfcnVsZXMgID0gKCk7CgogICAgIyBOb3RlIHRoYXQgd2Ugc2V0dGluZyBkZWZhdWx0cyBoZXJlLiAgTGF0ZXIgaW4gcHJvY2Vzc2luZwogICAgIyB0aGUgdmFsdWVzIG9mICV3YW50X2xlZnRfc3BhY2UgYW5kICAld2FudF9yaWdodF9zcGFjZQogICAgIyBtYXkgYmUgb3ZlcnJpZGRlbiBieSBhbnkgdXNlciBzZXR0aW5ncyBzcGVjaWZpZWQgYnkgdGhlCiAgICAjIC13bHMgYW5kIC13cnMgcGFyYW1ldGVycy4gIEhvd2V2ZXIgdGhlIGJpbmFyeV93aGl0ZXNwYWNlX3J1bGVzCiAgICAjIGFyZSBoYXJkd2lyZWQgYW5kIGhhdmUgcHJpb3JpdHkuCiAgICBAd2FudF9sZWZ0X3NwYWNle0BzcGFjZXNfYm90aF9zaWRlc30gPQogICAgICAoMSkgeCBzY2FsYXIoQHNwYWNlc19ib3RoX3NpZGVzKTsKICAgIEB3YW50X3JpZ2h0X3NwYWNle0BzcGFjZXNfYm90aF9zaWRlc30gPQogICAgICAoMSkgeCBzY2FsYXIoQHNwYWNlc19ib3RoX3NpZGVzKTsKICAgIEB3YW50X2xlZnRfc3BhY2V7QHNwYWNlc19sZWZ0X3NpZGV9ID0KICAgICAgKDEpIHggc2NhbGFyKEBzcGFjZXNfbGVmdF9zaWRlKTsKICAgIEB3YW50X3JpZ2h0X3NwYWNle0BzcGFjZXNfbGVmdF9zaWRlfSA9CiAgICAgICgtMSkgeCBzY2FsYXIoQHNwYWNlc19sZWZ0X3NpZGUpOwogICAgQHdhbnRfbGVmdF9zcGFjZXtAc3BhY2VzX3JpZ2h0X3NpZGV9ID0KICAgICAgKC0xKSB4IHNjYWxhcihAc3BhY2VzX3JpZ2h0X3NpZGUpOwogICAgQHdhbnRfcmlnaHRfc3BhY2V7QHNwYWNlc19yaWdodF9zaWRlfSA9CiAgICAgICgxKSB4IHNjYWxhcihAc3BhY2VzX3JpZ2h0X3NpZGUpOwogICAgJHdhbnRfbGVmdF9zcGFjZXsnLT4nfSAgICAgID0gV1NfTk87CiAgICAkd2FudF9yaWdodF9zcGFjZXsnLT4nfSAgICAgPSBXU19OTzsKICAgICR3YW50X2xlZnRfc3BhY2V7JyoqJ30gICAgICA9IFdTX05POwogICAgJHdhbnRfcmlnaHRfc3BhY2V7JyoqJ30gICAgID0gV1NfTk87CiAgICAkd2FudF9yaWdodF9zcGFjZXsnQ09SRTo6J30gPSBXU19OTzsKCiAgICAjIFRoZXNlIGJpbmFyeV93c19ydWxlcyBhcmUgaGFyZHdpcmVkIGFuZCBoYXZlIHByaW9yaXR5IG92ZXIgdGhlIGFib3ZlCiAgICAjIHNldHRpbmdzLiAgSXQgd291bGQgYmUgbmljZSB0byBhbGxvdyBhZGp1c3RtZW50IGJ5IHRoZSB1c2VyLAogICAgIyBidXQgaXQgd291bGQgYmUgY29tcGxpY2F0ZWQgdG8gc3BlY2lmeS4KICAgICMKICAgICMgaGFzaCB0eXBlIGluZm9ybWF0aW9uIG11c3Qgc3RheSB0aWdodGx5IGJvdW5kCiAgICAjIGFzIGluIDogICR7eHh4eH0KICAgICRiaW5hcnlfd3NfcnVsZXN7J2knfXsnTCd9ID0gV1NfTk87CiAgICAkYmluYXJ5X3dzX3J1bGVzeydpJ317J3snfSA9IFdTX1lFUzsKICAgICRiaW5hcnlfd3NfcnVsZXN7J2snfXsneyd9ID0gV1NfWUVTOwogICAgJGJpbmFyeV93c19ydWxlc3snVSd9eyd7J30gPSBXU19ZRVM7CiAgICAkYmluYXJ5X3dzX3J1bGVzeydpJ317J1snfSA9IFdTX05POwogICAgJGJpbmFyeV93c19ydWxlc3snUid9eydMJ30gPSBXU19OTzsKICAgICRiaW5hcnlfd3NfcnVsZXN7J1InfXsneyd9ID0gV1NfTk87CiAgICAkYmluYXJ5X3dzX3J1bGVzeyd0J317J0wnfSA9IFdTX05POwogICAgJGJpbmFyeV93c19ydWxlc3sndCd9eyd7J30gPSBXU19OTzsKICAgICRiaW5hcnlfd3NfcnVsZXN7J30nfXsnTCd9ID0gV1NfTk87CiAgICAkYmluYXJ5X3dzX3J1bGVzeyd9J317J3snfSA9IFdTX09QVElPTkFMOyAgICAjIFJUIzEyOTg1MDsgd2FzIFdTX05PCiAgICAkYmluYXJ5X3dzX3J1bGVzeyckJ317J0wnfSA9IFdTX05POwogICAgJGJpbmFyeV93c19ydWxlc3snJCd9eyd7J30gPSBXU19OTzsKICAgICRiaW5hcnlfd3NfcnVsZXN7J0AnfXsnTCd9ID0gV1NfTk87CiAgICAkYmluYXJ5X3dzX3J1bGVzeydAJ317J3snfSA9IFdTX05POwogICAgJGJpbmFyeV93c19ydWxlc3snPSd9eydMJ30gPSBXU19ZRVM7CiAgICAkYmluYXJ5X3dzX3J1bGVzeydKJ317J0onfSA9IFdTX1lFUzsKCiAgICAjIHRoZSBmb2xsb3dpbmcgaW5jbHVkZXMgJykgeycKICAgICMgYXMgaW4gOiAgICBpZiAoIHh4eCApIHsgeXl5IH0KICAgICRiaW5hcnlfd3NfcnVsZXN7J10nfXsnTCd9ID0gV1NfTk87CiAgICAkYmluYXJ5X3dzX3J1bGVzeyddJ317J3snfSA9IFdTX05POwogICAgJGJpbmFyeV93c19ydWxlc3snKSd9eyd7J30gPSBXU19ZRVM7CiAgICAkYmluYXJ5X3dzX3J1bGVzeycpJ317J1snfSA9IFdTX05POwogICAgJGJpbmFyeV93c19ydWxlc3snXSd9eydbJ30gPSBXU19OTzsKICAgICRiaW5hcnlfd3NfcnVsZXN7J10nfXsneyd9ID0gV1NfTk87CiAgICAkYmluYXJ5X3dzX3J1bGVzeyd9J317J1snfSA9IFdTX05POwogICAgJGJpbmFyeV93c19ydWxlc3snUid9eydbJ30gPSBXU19OTzsKCiAgICAkYmluYXJ5X3dzX3J1bGVzeyddJ317JysrJ30gPSBXU19OTzsKICAgICRiaW5hcnlfd3NfcnVsZXN7J10nfXsnLS0nfSA9IFdTX05POwogICAgJGJpbmFyeV93c19ydWxlc3snKSd9eycrKyd9ID0gV1NfTk87CiAgICAkYmluYXJ5X3dzX3J1bGVzeycpJ317Jy0tJ30gPSBXU19OTzsKCiAgICAkYmluYXJ5X3dzX3J1bGVzeydSJ317JysrJ30gPSBXU19OTzsKICAgICRiaW5hcnlfd3NfcnVsZXN7J1InfXsnLS0nfSA9IFdTX05POwoKICAgICRiaW5hcnlfd3NfcnVsZXN7J2knfXsnUSd9ID0gV1NfWUVTOwogICAgJGJpbmFyeV93c19ydWxlc3snbid9eycoJ30gPSBXU19ZRVM7ICAgICMgb2NjdXJzIGluICd1c2UgcGFja2FnZSBuICgpJwoKICAgICMgRklYTUU6IHdlIGNvdWxkIHRvIHNwbGl0ICdpJyBpbnRvIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zCiAgICAjIGFuZCBoYXZlIG5vIHNwYWNlIGZvciBmdW5jdGlvbnMgYnV0IHNwYWNlIGZvciB2YXJpYWJsZXMuICBGb3Igbm93LAogICAgIyBJIGhhdmUgYSBzcGVjaWFsIHBhdGNoIGluIHRoZSBzcGVjaWFsIHJ1bGVzIGJlbG93CiAgICAkYmluYXJ5X3dzX3J1bGVzeydpJ317JygnfSA9IFdTX05POwoKICAgICRiaW5hcnlfd3NfcnVsZXN7J3cnfXsnKCd9ID0gV1NfTk87CiAgICAkYmluYXJ5X3dzX3J1bGVzeyd3J317J3snfSA9IFdTX1lFUzsKICAgIHJldHVybjsKCn0gIyMgZW5kIGluaXRpYWxpemVfd2hpdGVzcGFjZV9oYXNoZXMKCnN1YiBzZXRfd2hpdGVzcGFjZV9mbGFncyB7CgogICAgIyBUaGlzIHJvdXRpbmUgaXMgY2FsbGVkIG9uY2UgcGVyIGZpbGUgdG8gc2V0IHdoaXRlc3BhY2UgZmxhZ3MgZm9yIHRoYXQKICAgICMgZmlsZS4gIFRoaXMgcm91dGluZSBleGFtaW5lcyBlYWNoIHBhaXIgb2Ygbm9uYmxhbmsgdG9rZW5zIGFuZCBzZXRzIGEgZmxhZwogICAgIyBpbmRpY2F0aW5nIGlmIHdoaXRlIHNwYWNlIGlzIG5lZWRlZC4KICAgICMKICAgICMgJHJ3aGl0ZXNwYWNlX2ZsYWdzLT5bJGpdIGlzIGEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgYSB3aGl0ZSBzcGFjZQogICAgIyBCRUZPUkUgdG9rZW4gJGogaXMgbmVlZGVkLCB3aXRoIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgogICAgIwogICAgIyAgICAgICAgICAgICBXU19OTyAgICAgID0gLTEgZG8gbm90IHdhbnQgYSBzcGFjZSBCRUZPUkUgdG9rZW4gJGoKICAgICMgICAgICAgICAgICAgV1NfT1BUSU9OQUw9ICAwIG9wdGlvbmFsIHNwYWNlIG9yICRqIGlzIGEgd2hpdGVzcGFjZQogICAgIyAgICAgICAgICAgICBXU19ZRVMgICAgID0gIDEgd2FudCBhIHNwYWNlIEJFRk9SRSB0b2tlbiAkagogICAgIwoKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICBteSAkckxMICA9ICRzZWxmLT5bX3JMTF9dOwogICAgdXNlIGNvbnN0YW50IERFQlVHX1dISVRFID0+IDA7CgogICAgbXkgJHJPcHRzX3NwYWNlX2tleXdvcmRfcGFyZW4gICA9ICRyT3B0cy0+eydzcGFjZS1rZXl3b3JkLXBhcmVuJ307CiAgICBteSAkck9wdHNfc3BhY2VfYmFja3NsYXNoX3F1b3RlID0gJHJPcHRzLT57J3NwYWNlLWJhY2tzbGFzaC1xdW90ZSd9OwogICAgbXkgJHJPcHRzX3NwYWNlX2Z1bmN0aW9uX3BhcmVuICA9ICRyT3B0cy0+eydzcGFjZS1mdW5jdGlvbi1wYXJlbid9OwoKICAgIG15ICRyd2hpdGVzcGFjZV9mbGFncyA9IFtdOwoKICAgIG15ICVpc19mb3JfZm9yZWFjaCA9ICggJ2ZvcicgPT4gMSwgJ2ZvcmVhY2gnID0+IDEgKTsKCiAgICBteSAoICR0b2tlbiwgJHR5cGUsICRibG9ja190eXBlLCAkc2Vxbm8sICRpbnB1dF9saW5lX25vICk7CiAgICBteSAoCiAgICAgICAgJGxhc3RfdG9rZW4sICRsYXN0X3R5cGUsICRsYXN0X2Jsb2NrX3R5cGUsCiAgICAgICAgJGxhc3Rfc2Vxbm8sICRsYXN0X2lucHV0X2xpbmVfbm8KICAgICk7CgogICAgbXkgJGpfdGlnaHRfY2xvc2luZ19wYXJlbiA9IC0xOwoKICAgICR0b2tlbiAgICAgICAgICAgICAgPSAnICc7CiAgICAkdHlwZSAgICAgICAgICAgICAgID0gJ2InOwogICAgJGJsb2NrX3R5cGUgICAgICAgICA9ICcnOwogICAgJHNlcW5vICAgICAgICAgICAgICA9ICcnOwogICAgJGlucHV0X2xpbmVfbm8gICAgICA9IDA7CiAgICAkbGFzdF90b2tlbiAgICAgICAgID0gJyAnOwogICAgJGxhc3RfdHlwZSAgICAgICAgICA9ICdiJzsKICAgICRsYXN0X2Jsb2NrX3R5cGUgICAgPSAnJzsKICAgICRsYXN0X3NlcW5vICAgICAgICAgPSAnJzsKICAgICRsYXN0X2lucHV0X2xpbmVfbm8gPSAwOwoKICAgIG15ICRqbWF4ID0gQHskckxMfSAtIDE7CgogICAgbXkgKCR3cyk7CgogICAgIyBUaGlzIGlzIHNvbWUgbG9naWMgbW92ZWQgdG8gYSBzdWIgdG8gYXZvaWQgZGVlcCBuZXN0aW5nIG9mIGlmIHN0bXRzCiAgICBteSAkd3NfaW5fY29udGFpbmVyID0gc3ViIHsKCiAgICAgICAgbXkgKCRqKSA9IEBfOwogICAgICAgIG15ICR3cyA9IFdTX1lFUzsKICAgICAgICBpZiAoICRqICsgMSA+ICRqbWF4ICkgeyByZXR1cm4gKFdTX05PKSB9CgogICAgICAgICMgUGF0Y2ggdG8gY291bnQgJy1mb28nIGFzIHNpbmdsZSB0b2tlbiBzbyB0aGF0CiAgICAgICAgIyBlYWNoIG9mICAkYXstZm9vfSBhbmQgJGF7Zm9vfSBhbmQgJGF7J2Zvbyd9IGRvCiAgICAgICAgIyBub3QgZ2V0IHNwYWNlcyB3aXRoIGRlZmF1bHQgZm9ybWF0dGluZy4KICAgICAgICBteSAkal9oZXJlID0gJGo7CiAgICAgICAgKyskal9oZXJlCiAgICAgICAgICBpZiAoICR0b2tlbiBlcSAnLScKICAgICAgICAgICAgJiYgJGxhc3RfdG9rZW4gZXEgJ3snCiAgICAgICAgICAgICYmICRyTEwtPlsgJGogKyAxIF0tPltfVFlQRV9dIGVxICd3JyApOwoKICAgICAgICAjIFBhdGNoIHRvIGNvdW50IGEgc2lnbiBzZXBhcmF0ZWQgZnJvbSBhIG51bWJlciBhcyBhIHNpbmdsZSB0b2tlbiwgYXMKICAgICAgICAjIGluIHRoZSBmb2xsb3dpbmcgbGluZS4gT3RoZXJ3aXNlLCBpdCB0YWtlcyB0d28gc3RlcHMgdG8gY29udmVyZ2U6CiAgICAgICAgIyAgICBkZWcycmFkKC0gIDAuNSkKICAgICAgICBpZiAoICAgKCAkdHlwZSBlcSAnbScgfHwgJHR5cGUgZXEgJ3AnICkKICAgICAgICAgICAgJiYgJGogPCAkam1heCArIDEKICAgICAgICAgICAgJiYgJHJMTC0+WyAkaiArIDEgXS0+W19UWVBFX10gZXEgJ2InCiAgICAgICAgICAgICYmICRyTEwtPlsgJGogKyAyIF0tPltfVFlQRV9dIGVxICduJwogICAgICAgICAgICAmJiAkckxMLT5bICRqICsgMiBdLT5bX1RPS0VOX10gPX4gL15cZC8gKQogICAgICAgIHsKICAgICAgICAgICAgJGpfaGVyZSA9ICRqICsgMjsKICAgICAgICB9CgogICAgICAgICMgJGpfbmV4dCBpcyB3aGVyZSBhIGNsb3NpbmcgdG9rZW4gc2hvdWxkIGJlIGlmCiAgICAgICAgIyB0aGUgY29udGFpbmVyIGhhcyBhIHNpbmdsZSB0b2tlbgogICAgICAgIGlmICggJGpfaGVyZSArIDEgPiAkam1heCApIHsgcmV0dXJuIChXU19OTykgfQogICAgICAgIG15ICRqX25leHQgPQogICAgICAgICAgKCAkckxMLT5bICRqX2hlcmUgKyAxIF0tPltfVFlQRV9dIGVxICdiJyApCiAgICAgICAgICA/ICRqX2hlcmUgKyAyCiAgICAgICAgICA6ICRqX2hlcmUgKyAxOwoKICAgICAgICBpZiAoICRqX25leHQgPiAkam1heCApIHsgcmV0dXJuIFdTX05PIH0KICAgICAgICBteSAkdG9rX25leHQgID0gJHJMTC0+WyRqX25leHRdLT5bX1RPS0VOX107CiAgICAgICAgbXkgJHR5cGVfbmV4dCA9ICRyTEwtPlskal9uZXh0XS0+W19UWVBFX107CgogICAgICAgICMgZm9yIHRpZ2h0bmVzcyA9IDEsIGlmIHRoZXJlIGlzIGp1c3Qgb25lIHRva2VuCiAgICAgICAgIyB3aXRoaW4gdGhlIG1hdGNoaW5nIHBhaXIsIHdlIHdpbGwga2VlcCBpdCB0aWdodAogICAgICAgIGlmICgKICAgICAgICAgICAgJHRva19uZXh0IGVxICRtYXRjaGluZ190b2tlbnskbGFzdF90b2tlbn0KCiAgICAgICAgICAgICMgYnV0IHdhdGNoIG91dCBmb3IgdGhpczogWyBbIF0gICAgKG1pc2MudCkKICAgICAgICAgICAgJiYgJGxhc3RfdG9rZW4gbmUgJHRva2VuCgogICAgICAgICAgICAjIGRvdWJsZSBkaWFtb25kIGlzIHVzdWFsbHkgc3BhY2VkCiAgICAgICAgICAgICYmICR0b2tlbiBuZSAnPDw+PicKCiAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgIyByZW1lbWJlciB3aGVyZSB0byBwdXQgdGhlIHNwYWNlIGZvciB0aGUgY2xvc2luZyBwYXJlbgogICAgICAgICAgICAkal90aWdodF9jbG9zaW5nX3BhcmVuID0gJGpfbmV4dDsKICAgICAgICAgICAgcmV0dXJuIChXU19OTyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAoV1NfWUVTKTsKICAgIH07CgogICAgIyBMb2NhbCBoYXNoZXMgdG8gc2V0IHNwYWNlcyBhcm91bmQgY29udGFpbmVyIHRva2VucyBhY2NvcmRpbmcgdG8gdGhlaXIKICAgICMgc2VxdWVuY2UgbnVtYmVycy4gIFRoZXNlIGFyZSBzZXQgYXMga2V5d29yZHMgYXJlIGV4YW1pbmVkLgogICAgIyBUaGV5IGFyZSBjb250cm9sbGVkIGJ5IHRoZSAta3BpdCBhbmQgLWtwaXRsIGZsYWdzLgogICAgbXkgJW9wZW5pbmdfY29udGFpbmVyX2luc2lkZV93czsKICAgIG15ICVjbG9zaW5nX2NvbnRhaW5lcl9pbnNpZGVfd3M7CiAgICBteSAkc2V0X2NvbnRhaW5lcl93c19ieV9rZXl3b3JkID0gc3ViIHsKCiAgICAgICAgcmV0dXJuIHVubGVzcyAoJWtleXdvcmRfcGFyZW5faW5uZXJfdGlnaHRuZXNzKTsKCiAgICAgICAgbXkgKCAkd29yZCwgJHNlcXVlbmNlX251bWJlciApID0gQF87CgogICAgICAgICMgV2UganVzdCBzYXcgYSBrZXl3b3JkIChvciBvdGhlciBmdW5jdGlvbiBuYW1lKSBmb2xsb3dlZCBieSBhbiBvcGVuaW5nCiAgICAgICAgIyBwYXJlbi4gTm93IGNoZWNrIHRvIHNlZSBpZiB0aGUgZm9sbG93aW5nIHBhcmVuIHNob3VsZCBoYXZlIHNwZWNpYWwKICAgICAgICAjIHRyZWF0bWVudCBmb3IgaXRzIGluc2lkZSBzcGFjZS4gIElmIHNvIHdlIHNldCBhIGhhc2ggdmFsdWUgdXNpbmcgdGhlCiAgICAgICAgIyBzZXF1ZW5jZSBudW1iZXIgYXMga2V5LgogICAgICAgIGlmICggJHdvcmQgJiYgJHNlcXVlbmNlX251bWJlciApIHsKICAgICAgICAgICAgbXkgJHRpZ2h0bmVzcyA9ICRrZXl3b3JkX3BhcmVuX2lubmVyX3RpZ2h0bmVzc3skd29yZH07CiAgICAgICAgICAgIGlmICggZGVmaW5lZCgkdGlnaHRuZXNzKSAmJiAkdGlnaHRuZXNzICE9IDEgKSB7CiAgICAgICAgICAgICAgICBteSAkd3NfZmxhZyA9ICR0aWdodG5lc3MgPT0gMCA/IFdTX1lFUyA6IFdTX05POwogICAgICAgICAgICAgICAgJG9wZW5pbmdfY29udGFpbmVyX2luc2lkZV93c3skc2VxdWVuY2VfbnVtYmVyfSA9ICR3c19mbGFnOwogICAgICAgICAgICAgICAgJGNsb3NpbmdfY29udGFpbmVyX2luc2lkZV93c3skc2VxdWVuY2VfbnVtYmVyfSA9ICR3c19mbGFnOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICBteSAkd3Nfb3BlbmluZ19jb250YWluZXJfb3ZlcnJpZGUgPSBzdWIgewogICAgICAgIG15ICggJHdzLCAkc2VxdWVuY2VfbnVtYmVyICkgPSBAXzsKICAgICAgICByZXR1cm4gJHdzIHVubGVzcyAoJW9wZW5pbmdfY29udGFpbmVyX2luc2lkZV93cyk7CiAgICAgICAgaWYgKCRzZXF1ZW5jZV9udW1iZXIpIHsKICAgICAgICAgICAgbXkgJHdzX292ZXJyaWRlID0gJG9wZW5pbmdfY29udGFpbmVyX2luc2lkZV93c3skc2VxdWVuY2VfbnVtYmVyfTsKICAgICAgICAgICAgaWYgKCR3c19vdmVycmlkZSkgeyAkd3MgPSAkd3Nfb3ZlcnJpZGUgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJHdzOwogICAgfTsKCiAgICBteSAkd3NfY2xvc2luZ19jb250YWluZXJfb3ZlcnJpZGUgPSBzdWIgewogICAgICAgIG15ICggJHdzLCAkc2VxdWVuY2VfbnVtYmVyICkgPSBAXzsKICAgICAgICByZXR1cm4gJHdzIHVubGVzcyAoJWNsb3NpbmdfY29udGFpbmVyX2luc2lkZV93cyk7CiAgICAgICAgaWYgKCRzZXF1ZW5jZV9udW1iZXIpIHsKICAgICAgICAgICAgbXkgJHdzX292ZXJyaWRlID0gJGNsb3NpbmdfY29udGFpbmVyX2luc2lkZV93c3skc2VxdWVuY2VfbnVtYmVyfTsKICAgICAgICAgICAgaWYgKCR3c19vdmVycmlkZSkgeyAkd3MgPSAkd3Nfb3ZlcnJpZGUgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJHdzOwogICAgfTsKCiAgICAjIG1haW4gbG9vcCBvdmVyIGFsbCB0b2tlbnMgdG8gZGVmaW5lIHRoZSB3aGl0ZXNwYWNlIGZsYWdzCiAgICBmb3IgKCBteSAkaiA9IDAgOyAkaiA8PSAkam1heCA7ICRqKysgKSB7CgogICAgICAgIG15ICRydG9raCA9ICRyTEwtPlskal07CgogICAgICAgICMgU2V0IGEgZGVmYXVsdAogICAgICAgICRyd2hpdGVzcGFjZV9mbGFncy0+WyRqXSA9IFdTX09QVElPTkFMOwoKICAgICAgICBpZiAoICRydG9raC0+W19UWVBFX10gZXEgJ2InICkgewogICAgICAgICAgICBuZXh0OwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgYSBkZWZhdWx0IHZhbHVlLCB0byBiZSBjaGFuZ2VkIGFzIG5lZWRlZAogICAgICAgICR3cyAgICAgICAgICAgICAgICAgPSB1bmRlZjsKICAgICAgICAkbGFzdF90b2tlbiAgICAgICAgID0gJHRva2VuOwogICAgICAgICRsYXN0X3R5cGUgICAgICAgICAgPSAkdHlwZTsKICAgICAgICAkbGFzdF9ibG9ja190eXBlICAgID0gJGJsb2NrX3R5cGU7CiAgICAgICAgJGxhc3Rfc2Vxbm8gICAgICAgICA9ICRzZXFubzsKICAgICAgICAkbGFzdF9pbnB1dF9saW5lX25vID0gJGlucHV0X2xpbmVfbm87CiAgICAgICAgJHRva2VuICAgICAgICAgICAgICA9ICRydG9raC0+W19UT0tFTl9dOwogICAgICAgICR0eXBlICAgICAgICAgICAgICAgPSAkcnRva2gtPltfVFlQRV9dOwogICAgICAgICRibG9ja190eXBlICAgICAgICAgPSAkcnRva2gtPltfQkxPQ0tfVFlQRV9dOwogICAgICAgICRzZXFubyAgICAgICAgICAgICAgPSAkcnRva2gtPltfVFlQRV9TRVFVRU5DRV9dOwogICAgICAgICRpbnB1dF9saW5lX25vICAgICAgPSAkcnRva2gtPltfTElORV9JTkRFWF9dOwoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBXaGl0ZXNwYWNlIFJ1bGVzIFNlY3Rpb24gMToKICAgICAgICAjIEhhbmRsZSBzcGFjZSBvbiB0aGUgaW5zaWRlIG9mIG9wZW5pbmcgYnJhY2VzLgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgIyAgICAvXltMXHtcKFxbXSQvCiAgICAgICAgaWYgKCAkaXNfb3BlbmluZ190eXBleyRsYXN0X3R5cGV9ICkgewoKICAgICAgICAgICAgJGpfdGlnaHRfY2xvc2luZ19wYXJlbiA9IC0xOwoKICAgICAgICAgICAgIyBsZXQgdXMga2VlcCBlbXB0eSBtYXRjaGVkIGJyYWNlcyB0b2dldGhlcjogKCkge30gW10KICAgICAgICAgICAgIyBleGNlcHQgZm9yIEJMT0NLUwogICAgICAgICAgICBpZiAoICR0b2tlbiBlcSAkbWF0Y2hpbmdfdG9rZW57JGxhc3RfdG9rZW59ICkgewogICAgICAgICAgICAgICAgaWYgKCRibG9ja190eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgJHdzID0gV1NfWUVTOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHdzID0gV1NfTk87CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyB3ZSdyZSBjb25zaWRlcmluZyB0aGUgcmlnaHQgb2YgYW4gb3BlbmluZyBicmFjZQogICAgICAgICAgICAgICAgIyB0aWdodG5lc3MgPSAwIG1lYW5zIGFsd2F5cyBwYWQgaW5zaWRlIHdpdGggc3BhY2UKICAgICAgICAgICAgICAgICMgdGlnaHRuZXNzID0gMSBtZWFucyBwYWQgaW5zaWRlIGlmICJjb21wbGV4IgogICAgICAgICAgICAgICAgIyB0aWdodG5lc3MgPSAyIG1lYW5zIG5ldmVyIHBhZCBpbnNpZGUgd2l0aCBzcGFjZQoKICAgICAgICAgICAgICAgIG15ICR0aWdodG5lc3M7CiAgICAgICAgICAgICAgICBpZiAoICAgJGxhc3RfdHlwZSBlcSAneycKICAgICAgICAgICAgICAgICAgICAmJiAkbGFzdF90b2tlbiBlcSAneycKICAgICAgICAgICAgICAgICAgICAmJiAkbGFzdF9ibG9ja190eXBlICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkdGlnaHRuZXNzID0gJHJPcHRzX2Jsb2NrX2JyYWNlX3RpZ2h0bmVzczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgeyAkdGlnaHRuZXNzID0gJHRpZ2h0bmVzc3skbGFzdF90b2tlbn0gfQoKICAgICAgICAgICAgICAgIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgIyBQYXRjaCBmb3IgdGVzdCBwcm9ibGVtIDw8c25pcHBldHMvZmFicmljZV9idWcuaW4+PgogICAgICAgICAgICAgICAjIFdlIG11c3QgYWx3YXlzIGF2b2lkIHNwYWNlcyBhcm91bmQgYSBiYXJlIHdvcmQgYmVnaW5uaW5nCiAgICAgICAgICAgICAgICMgd2l0aCBeIGFzIGluOgogICAgICAgICAgICAgICAjICAgIG15ICRiZWZvcmUgPSAke15QUkVNQVRDSH07CiAgICAgICAgICAgICAgICMgQmVjYXVzZSBhbGwgb2YgdGhlIGZvbGxvd2luZyBjYXVzZSBhbiBlcnJvciBpbiBwZXJsOgogICAgICAgICAgICAgICAjICAgIG15ICRiZWZvcmUgPSAkeyBeUFJFTUFUQ0ggfTsKICAgICAgICAgICAgICAgIyAgICBteSAkYmVmb3JlID0gJHsgXlBSRU1BVENIfTsKICAgICAgICAgICAgICAgIyAgICBteSAkYmVmb3JlID0gJHteUFJFTUFUQ0ggfTsKICAgICAgICAgICAgICAgIyBTbyBpZiBicmFjZSB0aWdodG5lc3MgZmxhZyBpcyAtYnQ9MCB3ZSBtdXN0IHRlbXBvcmFyaWx5IHJlc2V0CiAgICAgICAgICAgICAgICMgdG8gYnQ9MS4gIE5vdGUgdGhhdCBoZXJlIHdlIG11c3Qgc2V0IHRpZ2h0bmVzcz0xIGFuZCBub3QgMiBzbwogICAgICAgICAgICAgICAjIHRoYXQgdGhlIGNsb3Npbmcgc3BhY2UKICAgICAgICAgICAgICAgIyBpcyBhbHNvIGF2b2lkZWQgKHZpYSB0aGUgJGpfdGlnaHRfY2xvc2luZ19wYXJlbiBmbGFnIGluIGNvZGluZykKICAgICAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJ3cnICYmICR0b2tlbiA9fiAvXlxeLyApIHsgJHRpZ2h0bmVzcyA9IDEgfQoKICAgICAgICAgICAgICAgICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgogICAgICAgICAgICAgICAgaWYgKCAkdGlnaHRuZXNzIDw9IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgJHdzID0gV1NfWUVTOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkdGlnaHRuZXNzID4gMSApIHsKICAgICAgICAgICAgICAgICAgICAkd3MgPSBXU19OTzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICR3cyA9ICR3c19pbl9jb250YWluZXItPigkaik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgZm9yIHNwZWNpYWwgY2FzZXMgd2hpY2ggb3ZlcnJpZGUgdGhlIGFib3ZlIHJ1bGVzCiAgICAgICAgICAgICR3cyA9ICR3c19vcGVuaW5nX2NvbnRhaW5lcl9vdmVycmlkZS0+KCAkd3MsICRsYXN0X3NlcW5vICk7CgogICAgICAgIH0gICAgIyBlbmQgc2V0dGluZyBzcGFjZSBmbGFnIGluc2lkZSBvcGVuaW5nIHRva2VucwogICAgICAgIG15ICR3c18xOwogICAgICAgICR3c18xID0gJHdzCiAgICAgICAgICBpZiBERUJVR19XSElURTsKCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgV2hpdGVzcGFjZSBSdWxlcyBTZWN0aW9uIDI6CiAgICAgICAgIyBIYW5kbGUgc3BhY2Ugb24gaW5zaWRlIG9mIGNsb3NpbmcgYnJhY2UgcGFpcnMuCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgICAjICAgL1tcfVwpXF1SXS8KICAgICAgICBpZiAoICRpc19jbG9zaW5nX3R5cGV7JHR5cGV9ICkgewoKICAgICAgICAgICAgaWYgKCAkaiA9PSAkal90aWdodF9jbG9zaW5nX3BhcmVuICkgewoKICAgICAgICAgICAgICAgICRqX3RpZ2h0X2Nsb3NpbmdfcGFyZW4gPSAtMTsKICAgICAgICAgICAgICAgICR3cyAgICAgICAgICAgICAgICAgICAgPSBXU19OTzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICBpZiAoICFkZWZpbmVkKCR3cykgKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICR0aWdodG5lc3M7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkdHlwZSBlcSAnfScgJiYgJHRva2VuIGVxICd9JyAmJiAkYmxvY2tfdHlwZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRpZ2h0bmVzcyA9ICRyT3B0c19ibG9ja19icmFjZV90aWdodG5lc3M7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgeyAkdGlnaHRuZXNzID0gJHRpZ2h0bmVzc3skdG9rZW59IH0KCiAgICAgICAgICAgICAgICAgICAgJHdzID0gKCAkdGlnaHRuZXNzID4gMSApID8gV1NfTk8gOiBXU19ZRVM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgZm9yIHNwZWNpYWwgY2FzZXMgd2hpY2ggb3ZlcnJpZGUgdGhlIGFib3ZlIHJ1bGVzCiAgICAgICAgICAgICR3cyA9ICR3c19jbG9zaW5nX2NvbnRhaW5lcl9vdmVycmlkZS0+KCAkd3MsICRzZXFubyApOwoKICAgICAgICB9ICAgICMgZW5kIHNldHRpbmcgc3BhY2UgZmxhZyBpbnNpZGUgY2xvc2luZyB0b2tlbnMKCiAgICAgICAgbXkgJHdzXzI7CiAgICAgICAgJHdzXzIgPSAkd3MKICAgICAgICAgIGlmIERFQlVHX1dISVRFOwoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBXaGl0ZXNwYWNlIFJ1bGVzIFNlY3Rpb24gMzoKICAgICAgICAjIFVzZSB0aGUgYmluYXJ5IHJ1bGUgdGFibGUuCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgIGlmICggIWRlZmluZWQoJHdzKSApIHsKICAgICAgICAgICAgJHdzID0gJGJpbmFyeV93c19ydWxlc3skbGFzdF90eXBlfXskdHlwZX07CiAgICAgICAgfQogICAgICAgIG15ICR3c18zOwogICAgICAgICR3c18zID0gJHdzCiAgICAgICAgICBpZiBERUJVR19XSElURTsKCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgV2hpdGVzcGFjZSBSdWxlcyBTZWN0aW9uIDQ6CiAgICAgICAgIyBIYW5kbGUgc29tZSBzcGVjaWFsIGNhc2VzLgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBpZiAoICR0b2tlbiBlcSAnKCcgKSB7CgogICAgICAgICAgICAjIFRoaXMgd2lsbCBoYXZlIHRvIGJlIHR3ZWFrZWQgYXMgdG9rZW5pemF0aW9uIGNoYW5nZXMuCiAgICAgICAgICAgICMgV2UgdXN1YWxseSB3YW50IGEgc3BhY2UgYXQgJ30gKCcsIGZvciBleGFtcGxlOgogICAgICAgICAgICAjIDw8c25pcHBldHMvc3BhY2UxLmluPj4KICAgICAgICAgICAgIyAgICAgbWFwIHsgMSAqICRfOyB9ICggJHksICRNLCAkdywgJGQsICRoLCAkbSwgJHMgKTsKICAgICAgICAgICAgIwogICAgICAgICAgICAjIEJ1dCBub3Qgb3RoZXJzOgogICAgICAgICAgICAjICAgICAmeyAkXy0+WzFdIH0oIGRlbGV0ZSAkX1skI19deyAkXy0+WzBdIH0gKTsKICAgICAgICAgICAgIyBBdCBwcmVzZW50LCB0aGUgYWJvdmUgJiBibG9jayBpcyBtYXJrZWQgYXMgdHlwZSBML1Igc28gdGhpcyBjYXNlCiAgICAgICAgICAgICMgd29uJ3QgZ28gdGhyb3VnaCBoZXJlLgogICAgICAgICAgICBpZiAoICRsYXN0X3R5cGUgZXEgJ30nICkgeyAkd3MgPSBXU19ZRVMgfQoKICAgICAgICAgICAgIyBOT1RFOiBzb21lIG9sZGVyIHZlcnNpb25zIG9mIFBlcmwgaGFkIG9jY2FzaW9uYWwgcHJvYmxlbXMgaWYKICAgICAgICAgICAgIyBzcGFjZXMgYXJlIGludHJvZHVjZWQgYmV0d2VlbiBrZXl3b3JkcyBvciBmdW5jdGlvbnMgYW5kIG9wZW5pbmcKICAgICAgICAgICAgIyBwYXJlbnMuICBTbyB0aGUgZGVmYXVsdCBpcyBub3QgdG8gZG8gdGhpcyBleGNlcHQgaXMgY2VydGFpbgogICAgICAgICAgICAjIGNhc2VzLiAgVGhlIGN1cnJlbnQgUGVybCBzZWVtcyB0byB0b2xlcmF0ZSBzcGFjZXMuCgogICAgICAgICAgICAjIFNwYWNlIGJldHdlZW4ga2V5d29yZCBhbmQgJygnCiAgICAgICAgICAgIGVsc2lmICggJGxhc3RfdHlwZSBlcSAnaycgKSB7CiAgICAgICAgICAgICAgICAkd3MgPSBXU19OTwogICAgICAgICAgICAgICAgICB1bmxlc3MgKCAkck9wdHNfc3BhY2Vfa2V5d29yZF9wYXJlbgogICAgICAgICAgICAgICAgICAgIHx8ICRzcGFjZV9hZnRlcl9rZXl3b3JkeyRsYXN0X3Rva2VufSApOwoKICAgICAgICAgICAgICAgICMgU2V0IGluc2lkZSBzcGFjZSBmbGFnIGlmIHJlcXVlc3RlZAogICAgICAgICAgICAgICAgJHNldF9jb250YWluZXJfd3NfYnlfa2V5d29yZC0+KCAkbGFzdF90b2tlbiwgJHNlcW5vICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgU3BhY2UgYmV0d2VlbiBmdW5jdGlvbiBhbmQgJygnCiAgICAgICAgICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgIyAndycgYW5kICdpJyBjaGVja3MgZm9yIHNvbWV0aGluZyBsaWtlOgogICAgICAgICAgICAjICAgbXlmdW4oICAgICZteWZ1biggICAtPm15ZnVuKAogICAgICAgICAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgIGVsc2lmICgoICRsYXN0X3R5cGUgPX4gL15bd1VHXSQvICkKICAgICAgICAgICAgICAgIHx8ICggJGxhc3RfdHlwZSA9fiAvXlt3aV0kLyAmJiAkbGFzdF90b2tlbiA9fiAvXihcJnwtPikvICkgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkd3MgPSBXU19OTyB1bmxlc3MgKCRyT3B0c19zcGFjZV9mdW5jdGlvbl9wYXJlbik7CiAgICAgICAgICAgICAgICAkc2V0X2NvbnRhaW5lcl93c19ieV9rZXl3b3JkLT4oICRsYXN0X3Rva2VuLCAkc2Vxbm8gKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzcGFjZSBiZXR3ZWVuIHNvbWV0aGluZyBsaWtlICRpIGFuZCAoIGluIDw8c25pcHBldHMvc3BhY2UyLmluPj4KICAgICAgICAgICAgIyBmb3IgJGkgKCAwIC4uIDIwICkgewogICAgICAgICAgICAjIEZJWE1FOiBldmVudHVhbGx5LCB0eXBlICdpJyBuZWVkcyB0byBiZSBzcGxpdCBpbnRvIG11bHRpcGxlCiAgICAgICAgICAgICMgdG9rZW4gdHlwZXMgc28gdGhpcyBjYW4gYmUgYSBoYXJkd2lyZWQgcnVsZS4KICAgICAgICAgICAgZWxzaWYgKCAkbGFzdF90eXBlIGVxICdpJyAmJiAkbGFzdF90b2tlbiA9fiAvXltcJFwlXEBdLyApIHsKICAgICAgICAgICAgICAgICR3cyA9IFdTX1lFUzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhbGxvdyBjb25zdGFudCBmdW5jdGlvbiBmb2xsb3dlZCBieSAnKCknIHRvIHJldGFpbiBubyBzcGFjZQogICAgICAgICAgICBlbHNpZiAoJGxhc3RfdHlwZSBlcSAnQycKICAgICAgICAgICAgICAgICYmICRyTEwtPlsgJGogKyAxIF0tPltfVE9LRU5fXSBlcSAnKScgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkd3MgPSBXU19OTzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBwYXRjaCBmb3IgU1dJVENIL0NBU0U6IG1ha2Ugc3BhY2UgYXQgJ117JyBvcHRpb25hbAogICAgICAgICMgc2luY2UgdGhlICd7JyBtaWdodCBiZWdpbiBhIGNhc2Ugb3Igd2hlbiBibG9jawogICAgICAgIGVsc2lmICggKCAkdG9rZW4gZXEgJ3snICYmICR0eXBlIG5lICdMJyApICYmICRsYXN0X3Rva2VuIGVxICddJyApIHsKICAgICAgICAgICAgJHdzID0gV1NfT1BUSU9OQUw7CiAgICAgICAgfQoKICAgICAgICAjIGtlZXAgc3BhY2UgYmV0d2VlbiAnc3ViJyBhbmQgJ3snIGZvciBhbm9ueW1vdXMgc3ViIGRlZmluaXRpb24KICAgICAgICBpZiAoICR0eXBlIGVxICd7JyApIHsKICAgICAgICAgICAgaWYgKCAkbGFzdF90b2tlbiBlcSAnc3ViJyApIHsKICAgICAgICAgICAgICAgICR3cyA9IFdTX1lFUzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB0aGlzIGlzIG5lZWRlZCB0byBhdm9pZCBubyBzcGFjZSBpbiAnKXsnCiAgICAgICAgICAgIGlmICggJGxhc3RfdG9rZW4gZXEgJyknICYmICR0b2tlbiBlcSAneycgKSB7ICR3cyA9IFdTX1lFUyB9CgogICAgICAgICAgICAjIGF2b2lkIGFueSBzcGFjZSBiZWZvcmUgdGhlIGJyYWNlIG9yIGJyYWNrZXQgaW4gc29tZXRoaW5nIGxpa2UKICAgICAgICAgICAgIyAgQG9wdHN7J2EnLCdiJywuLi59CiAgICAgICAgICAgIGlmICggJGxhc3RfdHlwZSBlcSAnaScgJiYgJGxhc3RfdG9rZW4gPX4gL15cQC8gKSB7CiAgICAgICAgICAgICAgICAkd3MgPSBXU19OTzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZWxzaWYgKCAkdHlwZSBlcSAnaScgKSB7CgogICAgICAgICAgICAjIG5ldmVyIGEgc3BhY2UgYmVmb3JlIC0+CiAgICAgICAgICAgIGlmICggc3Vic3RyKCAkdG9rZW4sIDAsIDIgKSBlcSAnLT4nICkgewogICAgICAgICAgICAgICAgJHdzID0gV1NfTk87CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgcmV0YWluIGFueSBzcGFjZSBiZXR3ZWVuICctJyBhbmQgYmFyZSB3b3JkCiAgICAgICAgZWxzaWYgKCAkdHlwZSBlcSAndycgfHwgJHR5cGUgZXEgJ0MnICkgewogICAgICAgICAgICAkd3MgPSBXU19PUFRJT05BTCBpZiAkbGFzdF90eXBlIGVxICctJzsKCiAgICAgICAgICAgICMgbmV2ZXIgYSBzcGFjZSBiZWZvcmUgLT4KICAgICAgICAgICAgaWYgKCBzdWJzdHIoICR0b2tlbiwgMCwgMiApIGVxICctPicgKSB7CiAgICAgICAgICAgICAgICAkd3MgPSBXU19OTzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyByZXRhaW4gYW55IHNwYWNlIGJldHdlZW4gJy0nIGFuZCBiYXJlIHdvcmQ7IGZvciBleGFtcGxlCiAgICAgICAgIyBhdm9pZCBzcGFjZSBiZXR3ZWVuICdVU0VSJyBhbmQgJy0nIGhlcmU6IDw8c25pcHBldHMvc3BhY2UyLmluPj4KICAgICAgICAjICAgJG15aGFzaHtVU0VSLU5BTUV9PSdzdGV2ZSc7CiAgICAgICAgZWxzaWYgKCAkdHlwZSBlcSAnbScgfHwgJHR5cGUgZXEgJy0nICkgewogICAgICAgICAgICAkd3MgPSBXU19PUFRJT05BTCBpZiAoICRsYXN0X3R5cGUgZXEgJ3cnICk7CiAgICAgICAgfQoKICAgICAgICAjIGFsd2F5cyBzcGFjZSBiZWZvcmUgc2lkZSBjb21tZW50CiAgICAgICAgZWxzaWYgKCAkdHlwZSBlcSAnIycgKSB7ICR3cyA9IFdTX1lFUyBpZiAkaiA+IDAgfQoKICAgICAgICAjIGFsd2F5cyBwcmVzZXJ2ZXIgd2hhdGV2ZXIgc3BhY2Ugd2FzIHVzZWQgYWZ0ZXIgYSBwb3NzaWJsZQogICAgICAgICMgZmlsZWhhbmRsZSAoZXhjZXB0IF8pIG9yIGhlcmUgZG9jIG9wZXJhdG9yCiAgICAgICAgaWYgKAogICAgICAgICAgICAkdHlwZSBuZSAnIycKICAgICAgICAgICAgJiYgKCAoICRsYXN0X3R5cGUgZXEgJ1onICYmICRsYXN0X3Rva2VuIG5lICdfJyApCiAgICAgICAgICAgICAgICB8fCAkbGFzdF90eXBlIGVxICdoJyApCiAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkd3MgPSBXU19PUFRJT05BTDsKICAgICAgICB9CgogICAgICAgICMgc3BhY2VfYmFja3NsYXNoX3F1b3RlOyBSVCAjMTIzNzc0ICA8PHNuaXBwZXRzL3J0MTIzNzc0LmluPj4KICAgICAgICAjIGFsbG93IGEgc3BhY2UgYmV0d2VlbiBhIGJhY2tzbGFzaCBhbmQgc2luZ2xlIG9yIGRvdWJsZSBxdW90ZQogICAgICAgICMgdG8gYXZvaWQgZm9vbGluZyBodG1sIGZvcm1hdHRlcnMKICAgICAgICBlbHNpZiAoICRsYXN0X3R5cGUgZXEgJ1xcJyAmJiAkdHlwZSBlcSAnUScgJiYgJHRva2VuID1+IC9eW1wiXCddLyApIHsKICAgICAgICAgICAgaWYgKCRyT3B0c19zcGFjZV9iYWNrc2xhc2hfcXVvdGUpIHsKICAgICAgICAgICAgICAgIGlmICggJHJPcHRzX3NwYWNlX2JhY2tzbGFzaF9xdW90ZSA9PSAxICkgewogICAgICAgICAgICAgICAgICAgICR3cyA9IFdTX09QVElPTkFMOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkck9wdHNfc3BhY2VfYmFja3NsYXNoX3F1b3RlID09IDIgKSB7ICR3cyA9IFdTX1lFUyB9CiAgICAgICAgICAgICAgICBlbHNlIHsgfSAgICAjIHNob3VsZG50IGhhcHBlbgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJHdzID0gV1NfTk87CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkdHlwZSBlcSAnaycgKSB7CgogICAgICAgICAgICAjIEtleXdvcmRzICdmb3InLCAnZm9yZWFjaCcgYXJlIHNwZWNpYWwgY2FzZXMgZm9yIC1rcGl0IHNpbmNlIHRoZQogICAgICAgICAgICAjIG9wZW5pbmcgcGFyZW4gZG9lcyBub3QgYWx3YXlzIGltbWVkaWF0ZWx5IGZvbGxvdyB0aGUga2V5d29yZC4gU28KICAgICAgICAgICAgIyB3ZSBoYXZlIHRvIHNlYXJjaCBmb3J3YXJkIGZvciB0aGUgcGFyZW4gaW4gdGhpcyBjYXNlLiAgSSBoYXZlCiAgICAgICAgICAgICMgbGltaXRlZCB0aGUgc2VhcmNoIHRvIDEwIHRva2VucyBhaGVhZCwganVzdCBpbiBjYXNlIHNvbWVib2R5CiAgICAgICAgICAgICMgaGFzIGEgYmlnIGZpbGUgYW5kIG5vIG9wZW5pbmcgcGFyZW4uICBUaGlzIHNob3VsZCBiZSBlbm91Z2ggZm9yCiAgICAgICAgICAgICMgYWxsIG5vcm1hbCBjb2RlLgogICAgICAgICAgICBpZiAoICAgJGlzX2Zvcl9mb3JlYWNoeyR0b2tlbn0KICAgICAgICAgICAgICAgICYmICVrZXl3b3JkX3BhcmVuX2lubmVyX3RpZ2h0bmVzcwogICAgICAgICAgICAgICAgJiYgZGVmaW5lZCggJGtleXdvcmRfcGFyZW5faW5uZXJfdGlnaHRuZXNzeyR0b2tlbn0gKQogICAgICAgICAgICAgICAgJiYgJGogPCAkam1heCApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG15ICRqcCA9ICRqOwogICAgICAgICAgICAgICAgZm9yICggbXkgJGluYyA9IDEgOyAkaW5jIDwgMTAgOyAkaW5jKysgKSB7CiAgICAgICAgICAgICAgICAgICAgJGpwKys7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBpZiAoICRqcCA+ICRqbWF4ICk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCAkckxMLT5bJGpwXS0+W19UT0tFTl9dIGVxICcoJyApOwogICAgICAgICAgICAgICAgICAgIG15ICRzZXFubyA9ICRyTEwtPlskanBdLT5bX1RZUEVfU0VRVUVOQ0VfXTsKICAgICAgICAgICAgICAgICAgICAkc2V0X2NvbnRhaW5lcl93c19ieV9rZXl3b3JkLT4oICR0b2tlbiwgJHNlcW5vICk7CiAgICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJHdzXzQ7CiAgICAgICAgJHdzXzQgPSAkd3MKICAgICAgICAgIGlmIERFQlVHX1dISVRFOwoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBXaGl0ZXNwYWNlIFJ1bGVzIFNlY3Rpb24gNToKICAgICAgICAjIEFwcGx5IGRlZmF1bHQgcnVsZXMgbm90IGNvdmVyZWQgYWJvdmUuCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgICAjIElmIHdlIGZhbGwgdGhyb3VnaCB0byBoZXJlLCBsb29rIGF0IHRoZSBwcmUtZGVmaW5lZCBoYXNoIHRhYmxlcyBmb3IKICAgICAgICAjIHRoZSB0d28gdG9rZW5zLCBhbmQ6CiAgICAgICAgIyAgaWYgKHRoZXkgYXJlIGVxdWFsKSB1c2UgdGhlIGNvbW1vbiB2YWx1ZQogICAgICAgICMgIGlmIChlaXRoZXIgaXMgemVybyBvciB1bmRlZikgdXNlIHRoZSBvdGhlcgogICAgICAgICMgIGlmIChlaXRoZXIgaXMgLTEpIHVzZSBpdAogICAgICAgICMgVGhhdCBpcywKICAgICAgICAjIGxlZnQgIHZzIHJpZ2h0CiAgICAgICAgIyAgMSAgICB2cyAgICAxICAgICAtLT4gIDEKICAgICAgICAjICAwICAgIHZzICAgIDAgICAgIC0tPiAgMAogICAgICAgICMgLTEgICAgdnMgICAtMSAgICAgLS0+IC0xCiAgICAgICAgIwogICAgICAgICMgIDAgICAgdnMgICAtMSAgICAgLS0+IC0xCiAgICAgICAgIyAgMCAgICB2cyAgICAxICAgICAtLT4gIDEKICAgICAgICAjICAxICAgIHZzICAgIDAgICAgIC0tPiAgMQogICAgICAgICMgLTEgICAgdnMgICAgMCAgICAgLS0+IC0xCiAgICAgICAgIwogICAgICAgICMgLTEgICAgdnMgICAgMSAgICAgLS0+IC0xCiAgICAgICAgIyAgMSAgICB2cyAgIC0xICAgICAtLT4gLTEKICAgICAgICBpZiAoICFkZWZpbmVkKCR3cykgKSB7CiAgICAgICAgICAgIG15ICR3bCA9ICR3YW50X2xlZnRfc3BhY2V7JHR5cGV9OwogICAgICAgICAgICBteSAkd3IgPSAkd2FudF9yaWdodF9zcGFjZXskbGFzdF90eXBlfTsKICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCgkd2wpICkgeyAkd2wgPSAwIH0KICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCgkd3IpICkgeyAkd3IgPSAwIH0KICAgICAgICAgICAgJHdzID0gKCAoICR3bCA9PSAkd3IgKSB8fCAoICR3bCA9PSAtMSApIHx8ICEkd3IgKSA/ICR3bCA6ICR3cjsKICAgICAgICB9CgogICAgICAgIGlmICggIWRlZmluZWQoJHdzKSApIHsKICAgICAgICAgICAgJHdzID0gMDsKICAgICAgICAgICAgd3JpdGVfZGlhZ25vc3RpY3MoCiAgICAgICAgICAgICAgICAiV1MgZmxhZyBpcyB1bmRlZmluZWQgZm9yIHRva2VucyAkbGFzdF90b2tlbiAkdG9rZW5cbiIpOwogICAgICAgIH0KCiAgICAgICAgIyBUcmVhdCBuZXdsaW5lIGFzIGEgd2hpdGVzcGFjZS4gT3RoZXJ3aXNlLCB3ZSBtaWdodCBjb21iaW5lCiAgICAgICAgIyAnU2VuZCcgYW5kICctcmVjaXBpZW50cycgaGVyZSBhY2NvcmRpbmcgdG8gdGhlIGFib3ZlIHJ1bGVzOgogICAgICAgICMgPDxzbmlwcGV0cy9zcGFjZTMuaW4+PgogICAgICAgICMgICAgbXkgJG1zZyA9IG5ldyBGYXg6OlNlbmQKICAgICAgICAjICAgICAgLXJlY2lwaWVudHMgPT4gJHRvLAogICAgICAgICMgICAgICAtZGF0YSA9PiAkZGF0YTsKICAgICAgICBpZiAoICR3cyA9PSAwICYmICRpbnB1dF9saW5lX25vICE9ICRsYXN0X2lucHV0X2xpbmVfbm8gKSB7ICR3cyA9IDEgfQoKICAgICAgICAkcndoaXRlc3BhY2VfZmxhZ3MtPlskal0gPSAkd3M7CgogICAgICAgIERFQlVHX1dISVRFICYmIGRvIHsKICAgICAgICAgICAgbXkgJHN0ciA9IHN1YnN0ciggJGxhc3RfdG9rZW4sIDAsIDE1ICk7CiAgICAgICAgICAgICRzdHIgLj0gJyAnIHggKCAxNiAtIGxlbmd0aCgkc3RyKSApOwogICAgICAgICAgICBpZiAoICFkZWZpbmVkKCR3c18xKSApIHsgJHdzXzEgPSAiKiIgfQogICAgICAgICAgICBpZiAoICFkZWZpbmVkKCR3c18yKSApIHsgJHdzXzIgPSAiKiIgfQogICAgICAgICAgICBpZiAoICFkZWZpbmVkKCR3c18zKSApIHsgJHdzXzMgPSAiKiIgfQogICAgICAgICAgICBpZiAoICFkZWZpbmVkKCR3c180KSApIHsgJHdzXzQgPSAiKiIgfQogICAgICAgICAgICBwcmludCBTVERPVVQKIk5FVyBXSElURTogIGk9JGogJHN0ciAkbGFzdF90eXBlICR0eXBlICR3c18xIDogJHdzXzIgOiAkd3NfMyA6ICR3c180IDogJHdzIFxuIjsKICAgICAgICB9OwogICAgfSAjIyBlbmQgbWFpbiBsb29wCgogICAgaWYgKCAkck9wdHMtPnsndGlnaHQtc2VjcmV0LW9wZXJhdG9ycyd9ICkgewogICAgICAgIG5ld19zZWNyZXRfb3BlcmF0b3Jfd2hpdGVzcGFjZSggJHJMTCwgJHJ3aGl0ZXNwYWNlX2ZsYWdzICk7CiAgICB9CiAgICByZXR1cm4gJHJ3aGl0ZXNwYWNlX2ZsYWdzOwoKfSAjIyBlbmQgc3ViIHNldF93aGl0ZXNwYWNlX2ZsYWdzCgpzdWIgZHVtcF93YW50X2xlZnRfc3BhY2UgewogICAgbXkgJGZoID0gc2hpZnQ7CiAgICBsb2NhbCAkIiA9ICJcbiI7CiAgICAkZmgtPnByaW50KDw8RU9NKTsKVGhlc2UgdmFsdWVzIGFyZSB0aGUgbWFpbiBjb250cm9sIG9mIHdoaXRlc3BhY2UgdG8gdGhlIGxlZnQgb2YgYSB0b2tlbiB0eXBlOwpUaGV5IG1heSBiZSBhbHRlcmVkIHdpdGggdGhlIC13bHMgcGFyYW1ldGVyLgpGb3IgYSBsaXN0IG9mIHRva2VuIHR5cGVzLCB1c2UgcGVybHRpZHkgLS1kdW1wLXRva2VuLXR5cGVzICgtZHR0KQogMSBtZWFucyB0aGUgdG9rZW4gd2FudHMgYSBzcGFjZSB0byBpdHMgbGVmdAotMSBtZWFucyB0aGUgdG9rZW4gZG9lcyBub3Qgd2FudCBhIHNwYWNlIHRvIGl0cyBsZWZ0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFT00KICAgIGZvcmVhY2ggbXkgJGtleSAoIHNvcnQga2V5cyAld2FudF9sZWZ0X3NwYWNlICkgewogICAgICAgICRmaC0+cHJpbnQoIiRrZXlcdCR3YW50X2xlZnRfc3BhY2V7JGtleX1cbiIpOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgZHVtcF93YW50X3JpZ2h0X3NwYWNlIHsKICAgIG15ICRmaCA9IHNoaWZ0OwogICAgbG9jYWwgJCIgPSAiXG4iOwogICAgJGZoLT5wcmludCg8PEVPTSk7ClRoZXNlIHZhbHVlcyBhcmUgdGhlIG1haW4gY29udHJvbCBvZiB3aGl0ZXNwYWNlIHRvIHRoZSByaWdodCBvZiBhIHRva2VuIHR5cGU7ClRoZXkgbWF5IGJlIGFsdGVyZWQgd2l0aCB0aGUgLXdycyBwYXJhbWV0ZXIuCkZvciBhIGxpc3Qgb2YgdG9rZW4gdHlwZXMsIHVzZSBwZXJsdGlkeSAtLWR1bXAtdG9rZW4tdHlwZXMgKC1kdHQpCiAxIG1lYW5zIHRoZSB0b2tlbiB3YW50cyBhIHNwYWNlIHRvIGl0cyByaWdodAotMSBtZWFucyB0aGUgdG9rZW4gZG9lcyBub3Qgd2FudCBhIHNwYWNlIHRvIGl0cyByaWdodAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCiAgICBmb3JlYWNoIG15ICRrZXkgKCBzb3J0IGtleXMgJXdhbnRfcmlnaHRfc3BhY2UgKSB7CiAgICAgICAgJGZoLT5wcmludCgiJGtleVx0JHdhbnRfcmlnaHRfc3BhY2V7JGtleX1cbiIpOwogICAgfQogICAgcmV0dXJuOwp9Cgp7ICAgICMjIGJlZ2luIGNsb3N1cmUgaXNfZXNzZW50aWFsX3doaXRlc3BhY2UKCiAgICBteSAlaXNfc29ydF9ncmVwX21hcDsKICAgIG15ICVpc19mb3JfZm9yZWFjaDsKICAgIG15ICVpc19kaWdyYXBoOwogICAgbXkgJWlzX3RyaWdyYXBoOwogICAgbXkgJWVzc2VudGlhbF93aGl0ZXNwYWNlX2ZpbHRlcl9sMTsKICAgIG15ICVlc3NlbnRpYWxfd2hpdGVzcGFjZV9maWx0ZXJfcjE7CiAgICBteSAlZXNzZW50aWFsX3doaXRlc3BhY2VfZmlsdGVyX2wyOwogICAgbXkgJWVzc2VudGlhbF93aGl0ZXNwYWNlX2ZpbHRlcl9yMjsKCiAgICBCRUdJTiB7CgogICAgICAgIG15IEBxOwogICAgICAgIEBxID0gcXcoc29ydCBncmVwIG1hcCk7CiAgICAgICAgQGlzX3NvcnRfZ3JlcF9tYXB7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICAgICAgQHEgPSBxdyhmb3IgZm9yZWFjaCk7CiAgICAgICAgQGlzX2Zvcl9mb3JlYWNoe0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgICAgIEBxID0gcXcoCiAgICAgICAgICAuLiA6OiA8PCA+PiAqKiAmJiAuLiB8fCAvLyAtPiA9PiArPSAtPSAuPSAlPSAmPSB8PSBePSAqPSA8PgogICAgICAgICAgPD0gPj0gPT0gPX4gIX4gIT0gKysgLS0gLz0geD0gfn4gfi4gfC4gJi4gXi4KICAgICAgICApOwogICAgICAgIEBpc19kaWdyYXBoe0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgICAgIEBxID0gcXcoIC4uLiAqKj0gPDw9ID4+PSAmJj0gfHw9IC8vPSA8PT4gIX5+ICYuPSB8Lj0gXi49IDw8fik7CiAgICAgICAgQGlzX3RyaWdyYXBoe0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgICAgICMgVGhlc2UgYXJlIHVzZWQgYXMgYSBzcGVlZHVwIGZpbHRlcnMgZm9yIHN1YiBpc19lc3NlbnRpYWxfd2hpdGVzcGFjZS4KCiAgICAgICAgIyBGaWx0ZXIgMToKICAgICAgICAjIFRoZXNlIGxlZnQgc2lkZSB0b2tlbiB0eXBlcyBVU1VBTExZIGRvIG5vdCByZXF1aXJlIGEgc3BhY2U6CiAgICAgICAgQHEgPSBxdyggOyB7IH0gWyBdIEwgUiApOwogICAgICAgIHB1c2ggQHEsICcsJzsKICAgICAgICBwdXNoIEBxLCAnKSc7CiAgICAgICAgcHVzaCBAcSwgJygnOwogICAgICAgIEBlc3NlbnRpYWxfd2hpdGVzcGFjZV9maWx0ZXJfbDF7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICAgICAgIyBCVVQgc29tZSBtaWdodCBpZiBmb2xsb3dlZCBieSB0aGVzZSByaWdodCB0b2tlbiB0eXBlcwogICAgICAgIEBxID0gcXcoIHBwIG1tIDw8IDw8PSBoICk7CiAgICAgICAgQGVzc2VudGlhbF93aGl0ZXNwYWNlX2ZpbHRlcl9yMXtAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICAgICAjIEZpbHRlciAyOgogICAgICAgICMgVGhlc2UgcmlnaHQgc2lkZSBmaWx0ZXJzIHVzdWFsbHkgZG8gbm90IHJlcXVpcmUgYSBzcGFjZQogICAgICAgIEBxID0gcXcoIDsgXSBSIH0gKTsKICAgICAgICBwdXNoIEBxLCAnLCc7CiAgICAgICAgcHVzaCBAcSwgJyknOwogICAgICAgIEBlc3NlbnRpYWxfd2hpdGVzcGFjZV9maWx0ZXJfcjJ7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICAgICAgIyBCVVQgc29tZSBtaWdodCBpZiBmb2xsb3dlZCBieSB0aGVzZSBsZWZ0IHRva2VuIHR5cGVzCiAgICAgICAgQHEgPSBxdyggaCBaICk7CiAgICAgICAgQGVzc2VudGlhbF93aGl0ZXNwYWNlX2ZpbHRlcl9sMntAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgIH0KCiAgICBzdWIgaXNfZXNzZW50aWFsX3doaXRlc3BhY2UgewoKICAgICAgICAjIEVzc2VudGlhbCB3aGl0ZXNwYWNlIG1lYW5zIHdoaXRlc3BhY2Ugd2hpY2ggY2Fubm90IGJlIHNhZmVseSBkZWxldGVkCiAgICAgICAgIyB3aXRob3V0IHJpc2tpbmcgdGhlIGludHJvZHVjdGlvbiBvZiBhIHN5bnRheCBlcnJvci4KICAgICAgICAjIFdlIGFyZSBnaXZlbiB0aHJlZSB0b2tlbnMgYW5kIHRoZWlyIHR5cGVzOgogICAgICAgICMgKCR0b2tlbmwsICR0eXBlbCkgaXMgdGhlIHRva2VuIHRvIHRoZSBsZWZ0IG9mIHRoZSBzcGFjZSBpbiBxdWVzdGlvbgogICAgICAgICMgKCR0b2tlbnIsICR0eXBlcikgaXMgdGhlIHRva2VuIHRvIHRoZSByaWdodCBvZiB0aGUgc3BhY2UgaW4gcXVlc3Rpb24KICAgICAgICAjICgkdG9rZW5sbCwgJHR5cGVsbCkgaXMgcHJldmlvdXMgbm9uYmxhbmsgdG9rZW4gdG8gdGhlIGxlZnQgb2YgJHRva2VubAogICAgICAgICMKICAgICAgICAjIE5vdGUxOiBUaGlzIHJvdXRpbmUgc2hvdWxkIGFsbW9zdCBuZXZlciBuZWVkIHRvIGJlIGNoYW5nZWQuICBJdCBpcwogICAgICAgICMgZm9yIGF2b2lkaW5nIHN5bnRheCBwcm9ibGVtcyByYXRoZXIgdGhhbiBmb3IgZm9ybWF0dGluZy4KCiAgICAgICAgIyBOb3RlMjogVGhlIC1tYW5nbGUgb3B0aW9uIGNhdXNlcyBsYXJnZSBudW1iZXJzIG9mIGNhbGxzIHRvIHRoaXMKICAgICAgICAjIHJvdXRpbmUgYW5kIHRoZXJlZm9yZSBpcyBhIGdvb2QgdGVzdC4gU28gaWYgYSBjaGFuZ2UgaXMgbWFkZSwgYmUgc3VyZQogICAgICAgICMgdG8gcnVuIGEgbGFyZ2UgbnVtYmVyIG9mIGZpbGVzIHdpdGggdGhlIC1tYW5nbGUgb3B0aW9uIGFuZCBjaGVjayBmb3IKICAgICAgICAjIGRpZmZlcmVuY2VzLgoKICAgICAgICBteSAoICR0b2tlbmxsLCAkdHlwZWxsLCAkdG9rZW5sLCAkdHlwZWwsICR0b2tlbnIsICR0eXBlciApID0gQF87CgogICAgICAgICMgVGhpcyBpcyBwb3RlbnRpYWxseSBhIHZlcnkgc2xvdyByb3V0aW5lIGJ1dCB0aGUgZm9sbG93aW5nIHF1aWNrCiAgICAgICAgIyBmaWx0ZXJzIHR5cGljYWxseSBjYXRjaCBhbmQgaGFuZGxlIG92ZXIgOTAlIG9mIHRoZSBjYWxscy4KCiAgICAgICAgIyBGaWx0ZXIgMTogdXN1YWxseSBubyBzcGFjZSByZXF1aXJlZCBhZnRlciBjb21tb24gdHlwZXMgOyAsIFsgXSB7IH0gKCApCiAgICAgICAgcmV0dXJuCiAgICAgICAgICBpZiAoICRlc3NlbnRpYWxfd2hpdGVzcGFjZV9maWx0ZXJfbDF7JHR5cGVsfQogICAgICAgICAgICAmJiAhJGVzc2VudGlhbF93aGl0ZXNwYWNlX2ZpbHRlcl9yMXskdHlwZXJ9ICk7CgogICAgICAgICMgRmlsdGVyIDI6IHVzdWFsbHkgbm8gc3BhY2UgYmVmb3JlIGNvbW1vbiB0eXBlcyA7ICwKICAgICAgICByZXR1cm4KICAgICAgICAgIGlmICggJGVzc2VudGlhbF93aGl0ZXNwYWNlX2ZpbHRlcl9yMnskdHlwZXJ9CiAgICAgICAgICAgICYmICEkZXNzZW50aWFsX3doaXRlc3BhY2VfZmlsdGVyX2wyeyR0eXBlbH0gKTsKCiAgICAgICAgIyBGaWx0ZXIgMzogSGFuZGxlIHNpZGUgY29tbWVudHM6IGEgc3BhY2UgaXMgb25seSBlc3NlbnRpYWwgaWYgdGhlIGxlZnQKICAgICAgICAjIHRva2VuIGVuZHMgaW4gJyQnIEZvciBleGFtcGxlLCB3ZSBkbyBub3Qgd2FudCB0byBjcmVhdGUgJCNmb28gYmVsb3c6CgogICAgICAgICMgICBzdWIgdDA4NgogICAgICAgICMgICAgICAgKCAjZm9vKSkpCiAgICAgICAgIyAgICAgICAkICNmb28pKSkKICAgICAgICAjICAgICAgIGEgI2ZvbykpKQogICAgICAgICMgICAgICAgKSAjZm9vKSkpCiAgICAgICAgIyAgICAgICB7IC4uLiB9CgogICAgICAgICMgQWxzbywgSSBwcmVmZXIgbm90IHRvIHB1dCBhID8gYW5kICMgdG9nZXRoZXIgYmVjYXVzZSA/IHVzZWQgdG8gYmUKICAgICAgICAjIGEgcGF0dGVybiBkZWxtaXRlciBhbmQgc3BhY2luZyB3YXMgdXNlZCBpZiBndWVzc2luZyB3YXMgbmVlZGVkLgoKICAgICAgICBpZiAoICR0eXBlciBlcSAnIycgKSB7CgogICAgICAgICAgICByZXR1cm4gMQogICAgICAgICAgICAgIGlmICggJHRva2VubAogICAgICAgICAgICAgICAgJiYgKCAkdHlwZWwgZXEgJz8nIHx8IHN1YnN0ciggJHRva2VubCwgLTEgKSBlcSAnJCcgKSApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBteSAkdG9rZW5yX2lzX2JhcmV3b3JkICAgPSAkdG9rZW5yID1+IC9eXHcvICYmICR0b2tlbnIgIX4gL15cZC87CiAgICAgICAgbXkgJHRva2Vucl9pc19vcGVuX3BhcmVuID0gJHRva2VuciBlcSAnKCc7CiAgICAgICAgbXkgJHRva2VuX2pvaW5lZCAgICAgICAgID0gJHRva2VubCAuICR0b2tlbnI7CiAgICAgICAgbXkgJHRva2VubF9pc19kYXNoICAgICAgID0gJHRva2VubCBlcSAnLSc7CgogICAgICAgIG15ICRyZXN1bHQgPQoKICAgICAgICAgICMgbmV2ZXIgY29tYmluZSB0d28gYmFyZSB3b3JkcyBvciBudW1iZXJzCiAgICAgICAgICAjIGV4YW1wbGVzOiAgYW5kIDo6b2soMSkKICAgICAgICAgICMgICAgICAgICAgICByZXR1cm4gOjpzcHcoLi4uKQogICAgICAgICAgIyAgICAgICAgICAgIGZvciBibGE6OmJsYTo6IGFiYwogICAgICAgICAgIyBleGFtcGxlIGlzICIlb3ZlcmxvYWQ6OiBhbmQiIGluIGZpbGVzIER1bXB2YWx1ZS5wbSBvciBjb2xvbmJ1Zy5wbAogICAgICAgICAgIyAgICAgICAgICAgICRpbnB1dCBlcSJxdWl0IiB0byBtYWtlICRpbnB1dGVxInF1aXQiCiAgICAgICAgICAjICAgICAgICAgICAgbXkgJHNpemU9LXM6OlNJTksgaWYgJGZpbGU7ICA8PT1PSyBidXQgd2Ugd29uJ3QgZG8gaXQKICAgICAgICAgICMgZG9uJ3Qgam9pbiBzb21ldGhpbmcgbGlrZTogZm9yIGJsYTo6YmxhOjogYWJjCiAgICAgICAgICAjIGV4YW1wbGUgaXMgIiVvdmVybG9hZDo6IGFuZCIgaW4gZmlsZXMgRHVtcHZhbHVlLnBtIG9yIGNvbG9uYnVnLnBsCiAgICAgICAgICAoICAgICAgKCAkdG9rZW5sID1+IC8oW1wnXHddfFw6XDopJC8gJiYgJHR5cGVsIG5lICdDT1JFOjonICkKICAgICAgICAgICAgICAmJiAoICR0b2tlbnIgPX4gL14oW1wnXHddfFw6XDopLyApICkKCiAgICAgICAgICAjIGRvIG5vdCBjb21iaW5lIGEgbnVtYmVyIHdpdGggYSBjb25jYXRlbmF0aW9uIGRvdAogICAgICAgICAgIyBleGFtcGxlOiBwb20uY2FwdXRvOgogICAgICAgICAgIyAkdnQxMDBfY29tcGF0aWJsZSA/ICJcZVswOzBIIiA6ICgnLScgeCA3OCAuICJcbiIpOwogICAgICAgICAgfHwgJHR5cGVsIGVxICduJyAmJiAkdG9rZW5yIGVxICcuJwogICAgICAgICAgfHwgJHR5cGVyIGVxICduJwogICAgICAgICAgJiYgJHRva2VubCBlcSAnLicKCiAgICAgICAgICAjIGNhc2VzIG9mIGEgc3BhY2UgYmVmb3JlIGEgYmFyZXdvcmQuLi4KICAgICAgICAgIHx8ICgKICAgICAgICAgICAgJHRva2Vucl9pc19iYXJld29yZCAmJiAoCgogICAgICAgICAgICAgICAgIyBkbyBub3Qgam9pbiBhIG1pbnVzIHdpdGggYSBiYXJlIHdvcmQsIGJlY2F1c2UgeW91IG1pZ2h0IGZvcm0KICAgICAgICAgICAgICAgICMgYSBmaWxlIHRlc3Qgb3BlcmF0b3IuICBFeGFtcGxlIGZyb20gQ29tcGxleC5wbToKICAgICAgICAgICAgICAgICMgaWYgKENPUkU6OmFicygkeiAtIGkpIDwgJGVwcyk7CiAgICAgICAgICAgICAgICAjICJ6LWkiIHdvdWxkIGJlIHRha2VuIGFzIGEgZmlsZSB0ZXN0LgogICAgICAgICAgICAgICAgJHRva2VubF9pc19kYXNoICYmIGxlbmd0aCgkdG9rZW5yKSA9PSAxCgogICAgICAgICAgICAgICAgIyBhbmQgc29tZXRoaW5nIGxpa2UgdGhpcyBjb3VsZCBiZWNvbWUgYW1iaWd1b3VzIHdpdGhvdXQgc3BhY2UKICAgICAgICAgICAgICAgICMgYWZ0ZXIgdGhlICctJzoKICAgICAgICAgICAgICAgICMgICB1c2UgY29uc3RhbnQgSUlJPT4xOwogICAgICAgICAgICAgICAgIyAgICRhID0gJGIgLSBJSUk7CiAgICAgICAgICAgICAgICAjIGFuZCBldmVuIHRoaXM6CiAgICAgICAgICAgICAgICAjICAgJGEgPSAtIElJSTsKICAgICAgICAgICAgICAgIHx8ICR0b2tlbmxfaXNfZGFzaCAmJiAkdHlwZXIgPX4gL15bd0NdJC8KCiAgICAgICAgICAgICAgICAjIGtlZXAgYSBzcGFjZSBiZXR3ZWVuIGEgcXVvdGUgYW5kIGEgYmFyZXdvcmQgdG8gcHJldmVudCB0aGUKICAgICAgICAgICAgICAgICMgYmFyZXdvcmQgZnJvbSBiZWNvbWluZyBhIHF1b3RlIG1vZGlmaWVyLgogICAgICAgICAgICAgICAgfHwgJHR5cGVsIGVxICdRJwoKICAgICAgICAgICAgICAgICMga2VlcCBhIHNwYWNlIGJldHdlZW4gYSB0b2tlbiBlbmRpbmcgaW4gJyQnIGFuZCBhbnkgd29yZDsKICAgICAgICAgICAgICAgICMgdGhpcyBjYXVzZWQgdHJvdWJsZTogICJkaWUgQCQgaWYgJEAiCiAgICAgICAgICAgICAgICB8fCAkdHlwZWwgZXEgJ2knICYmICR0b2tlbmwgPX4gL1wkJC8KCiAgICAgICAgICAgICAgICMgZG8gbm90IHJlbW92ZSBzcGFjZSBiZXR3ZWVuIGFuICcmJyBhbmQgYSBiYXJlIHdvcmQgYmVjYXVzZQogICAgICAgICAgICAgICAjIGl0IG1heSB0dXJuIGludG8gYSBmdW5jdGlvbiBldmFsdWF0aW9uLCBsaWtlIGhlcmUKICAgICAgICAgICAgICAgIyBiZXR3ZWVuICcmJyBhbmQgJ09fQUNDTU9ERScsIHByb2R1Y2luZyBhIHN5bnRheCBlcnJvciBbRmlsZS5wbV0KICAgICAgICAgICAgICAgIyAgICAkb3B0c3tyZG9ubHl9ID0gKCgkb3B0c3ttb2RlfSAmIE9fQUNDTU9ERSkgPT0gT19SRE9OTFkpOwogICAgICAgICAgICAgICAgfHwgJHR5cGVsIGVxICcmJwoKICAgICAgICAgICAgICAgICMgZG9uJ3QgY29tYmluZSAkJCBvciAkIyB3aXRoIGFueSBhbHBoYW51bWVyaWMKICAgICAgICAgICAgICAgICMgKHRlc3RmaWxlIG1hbmdsZS50IHdpdGggLS1tYW5nbGUpCiAgICAgICAgICAgICAgICB8fCAkdG9rZW5sID1+IC9eXCRbXCRcI10kLwoKICAgICAgICAgICAgKQogICAgICAgICAgKSAgICAjIyBlbmQgJHRva2Vucl9pc19iYXJld29yZAoKICAgICAgICAgICMgT0xELCBub3QgdXNlZAogICAgICAgICAgIyAnPSAtJyBzaG91bGQgbm90IGJlY29tZSA9LSBvciB5b3Ugd2lsbCBnZXQgYSB3YXJuaW5nCiAgICAgICAgICAjIGFib3V0IHJldmVyc2VkIC09CiAgICAgICAgICAjIHx8ICgkdG9rZW5yIGVxICctJykKCiAgICAgICAgICAjIGRvIG5vdCBqb2luIGEgYmFyZSB3b3JkIHdpdGggYSBtaW51cywgbGlrZSBiZXR3ZWVuICdTZW5kJyBhbmQKICAgICAgICAgICMgJy1yZWNpcGllbnRzJyBoZXJlIDw8c25pcHBldHMvc3BhY2UzLmluPj4KICAgICAgICAgICMgICBteSAkbXNnID0gbmV3IEZheDo6U2VuZAogICAgICAgICAgIyAgICAgLXJlY2lwaWVudHMgPT4gJHRvLAogICAgICAgICAgIyAgICAgLWRhdGEgPT4gJGRhdGE7CiAgICAgICAgICAjIFRoaXMgaXMgdGhlIHNhZmVzdCB0aGluZyB0byBkby4gSWYgd2UgaGFkIHRoZSB0b2tlbiB0byB0aGUgcmlnaHQgb2YKICAgICAgICAgICMgdGhlIG1pbnVzIHdlIGNvdWxkIGRvIGEgYmV0dGVyIGNoZWNrLgogICAgICAgICAgIwogICAgICAgICAgIyBBbmQgZG8gbm90IGNvbWJpbmUgYSBiYXJld29yZCBhbmQgYSBxdW90ZSwgbGlrZSB0aGlzOgogICAgICAgICAgIyAgICBvb3BzICJZb3VyIGxvZ2luLCAkQmFkX0xvZ2luLCBpcyBub3QgdmFsaWQiOwogICAgICAgICAgIyBJdCBjYW4gY2F1c2UgYSBzeW50YXggZXJyb3IgaWYgb29wcyBpcyBhIHN1YgogICAgICAgICAgfHwgJHR5cGVsIGVxICd3JyAmJiAoICR0b2tlbnIgZXEgJy0nIHx8ICR0eXBlciBlcSAnUScgKQoKICAgICAgICAgICMgcGVybCBpcyB2ZXJ5IGZ1c3N5IGFib3V0IHNwYWNlcyBiZWZvcmUgPDwKICAgICAgICAgIHx8ICR0b2tlbnIgPX4gL15cPFw8LwoKICAgICAgICAgICMgYXZvaWQgY29tYmluaW5nIHRva2VucyB0byBjcmVhdGUgbmV3IG1lYW5pbmdzLiBFeGFtcGxlOgogICAgICAgICAgIyAgICAgJGErICskYiBtdXN0IG5vdCBiZWNvbWUgJGErKyRiCiAgICAgICAgICB8fCAoICRpc19kaWdyYXBoeyR0b2tlbl9qb2luZWR9ICkKICAgICAgICAgIHx8ICRpc190cmlncmFwaHskdG9rZW5fam9pbmVkfQoKICAgICAgICAgICMgYW5vdGhlciBleGFtcGxlOiBkbyBub3QgY29tYmluZSB0aGVzZSB0d28gJidzOgogICAgICAgICAgIyAgICAgYWxsb3dfb3B0aW9ucyAmICZPUFRfRVhFQ0NHSQogICAgICAgICAgfHwgJGlzX2RpZ3JhcGh7ICR0b2tlbmwgLiBzdWJzdHIoICR0b2tlbnIsIDAsIDEgKSB9CgogICAgICAgICAgIyByZXRhaW4gYW55IHNwYWNlIGFmdGVyIHBvc3NpYmxlIGZpbGVoYW5kbGUKICAgICAgICAgICMgKHRlc3RmaWxlcyBwcm50ZXJyMS50IHdpdGggLS1leHRydWRlIGFuZCBtYW5nbGUudCB3aXRoIC0tbWFuZ2xlKQogICAgICAgICAgfHwgJHR5cGVsIGVxICdaJwoKICAgICAgICAgICMgUGVybCBpcyBzZW5zaXRpdmUgdG8gd2hpdGVzcGFjZSBhZnRlciB0aGUgKyBoZXJlOgogICAgICAgICAgIyAgJGIgPSB4dmFscyAkYSArIDAuMSAqIHl2YWxzICRhOwogICAgICAgICAgfHwgJHR5cGVsbCBlcSAnWicgJiYgJHR5cGVsID1+IC9eW1wvXD9cK1wtXCpdJC8KCiAgICAgICAgICB8fCAoCiAgICAgICAgICAgICR0b2tlbnJfaXNfb3Blbl9wYXJlbiAmJiAoCgogICAgICAgICAgICAgICAgIyBrZWVwIHBhcmVuIHNlcGFyYXRlIGluICd1c2UgRm9vOjpCYXIgKCknCiAgICAgICAgICAgICAgICAoICR0eXBlbCBlcSAndycgJiYgJHR5cGVsbCBlcSAnaycgJiYgJHRva2VubGwgZXEgJ3VzZScgKQoKICAgICAgICAgICAgICAgICMga2VlcCBhbnkgc3BhY2UgYmV0d2VlbiBmaWxlaGFuZGxlIGFuZCBwYXJlbjoKICAgICAgICAgICAgICAgICMgZmlsZSBtYW5nbGUudCB3aXRoIC0tbWFuZ2xlOgogICAgICAgICAgICAgICAgfHwgJHR5cGVsIGVxICdZJwoKICAgICAgICAgICAgICAgICMgbXVzdCBoYXZlIHNwYWNlIGJldHdlZW4gZ3JlcCBhbmQgbGVmdCBwYXJlbjsgImdyZXAoIiB3aWxsIGZhaWwKICAgICAgICAgICAgICAgIHx8ICRpc19zb3J0X2dyZXBfbWFweyR0b2tlbmx9CgogICAgICAgICAgICAgICAgIyBkb24ndCBzdGljayBudW1iZXJzIG5leHQgdG8gbGVmdCBwYXJlbnMsIGFzIGluOgogICAgICAgICAgICAgICAgI3VzZSBNYWlsOjpJbnRlcm5ldCAxLjI4ICgpOyAoc2VlIEVudGl0eS5wbSwgSGVhZC5wbSwgVGVzdC5wbSkKICAgICAgICAgICAgICAgIHx8ICR0eXBlbCBlcSAnbicKICAgICAgICAgICAgKQogICAgICAgICAgKSAgICAjIyBlbmQgJHRva2Vucl9pc19vcGVuX3BhcmVuCgogICAgICAgICAgIyByZXRhaW4gYW55IHNwYWNlIGFmdGVyIGhlcmUgZG9jIG9wZXJhdG9yICggaGVyZWVyci50KQogICAgICAgICAgfHwgJHR5cGVsIGVxICdoJwoKICAgICAgICAgICMgYmUgY2FyZWZ1bCB3aXRoIGEgc3BhY2UgYXJvdW5kICsrIGFuZCAtLSwgdG8gYXZvaWQgYW1iaWd1aXR5IGFzIHRvCiAgICAgICAgICAjIHdoaWNoIHRva2VuIGl0IGFwcGxpZXMKICAgICAgICAgIHx8ICR0eXBlciAgPX4gL14ocHB8bW0pJC8gJiYgJHRva2VubCAhfiAvXltcO1x7XChcW10vCiAgICAgICAgICB8fCAkdHlwZWwgID1+IC9eKFwrXCt8XC1cLSkkLwogICAgICAgICAgJiYgJHRva2VuciAhfiAvXltcO1x9XClcXV0vCgogICAgICAgICAgIyBuZWVkIHNwYWNlIGFmdGVyIGZvcmVhY2ggbXk7IGZvciBleGFtcGxlLCB0aGlzIHdpbGwgZmFpbCBpbgogICAgICAgICAgIyBvbGRlciB2ZXJzaW9ucyBvZiBQZXJsOgogICAgICAgICAgIyBmb3JlYWNoIG15JGZ0KEBmaWxldHlwZXMpLi4uCiAgICAgICAgICB8fCAoCiAgICAgICAgICAgICR0b2tlbmwgZXEgJ215JwoKICAgICAgICAgICAgIyAgL14oZm9yfGZvcmVhY2gpJC8KICAgICAgICAgICAgJiYgJGlzX2Zvcl9mb3JlYWNoeyR0b2tlbmxsfQogICAgICAgICAgICAmJiAkdG9rZW5yID1+IC9eXCQvCiAgICAgICAgICApCgogICAgICAgICAgIyBXZSBtdXN0IGJlIHN1cmUgdGhhdCBhIHNwYWNlIGJldHdlZW4gYSA/IGFuZCBhIHF1b3RlZCBzdHJpbmcKICAgICAgICAgICMgcmVtYWlucyBpZiB0aGUgc3BhY2UgYmVmb3JlIHRoZSA/IHJlbWFpbnMuICBbTG9jYS5wbSwgbG9ja2FyZWFdCiAgICAgICAgICAjIGllLAogICAgICAgICAgIyAgICAkYj1qb2luICRjb21tYSA/ICcsJyA6ICc6JywgQF87ICAjIG9rCiAgICAgICAgICAjICAgICRiPWpvaW4gJGNvbW1hPycsJyA6ICc6JywgQF87ICAgICMgb2shCiAgICAgICAgICAjICAgICRiPWpvaW4gJGNvbW1hID8nLCcgOiAnOicsIEBfOyAgICMgZXJyb3IhCiAgICAgICAgICAjIE5vdCByZWFsbHkgcmVxdWlyZWQ6CiAgICAgICAgICAjIyB8fCAoICggJHR5cGVsIGVxICc/JyApICYmICggJHR5cGVyIGVxICdRJyApICkKCiAgICAgICAgICAjIHNwYWNlIHN0YWNrZWQgbGFiZWxzICAoVE9ETzogY2hlY2sgaWYgcmVhbGx5IG5lY2Vzc2FyeSkKICAgICAgICAgIHx8ICR0eXBlbCBlcSAnSicgJiYgJHR5cGVyIGVxICdKJwoKICAgICAgICAgIDsgICAgIyB0aGUgdmFsdWUgb2YgdGhpcyBsb25nIGxvZ2ljIHNlcXVlbmNlIGlzIHRoZSByZXN1bHQgd2Ugd2FudAogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQp9ICMjIGVuZCBjbG9zdXJlIGlzX2Vzc2VudGlhbF93aGl0ZXNwYWNlCgp7ICAgICMjIGJlZ2luIGNsb3N1cmUgbmV3X3NlY3JldF9vcGVyYXRvcl93aGl0ZXNwYWNlCgogICAgbXkgJXNlY3JldF9vcGVyYXRvcnM7CiAgICBteSAlaXNfbGVhZGluZ19zZWNyZXRfdG9rZW47CgogICAgQkVHSU4gewoKICAgICAgICAjIHRva2VuIGxpc3RzIGZvciBwZXJsIHNlY3JldCBvcGVyYXRvcnMgYXMgY29tcGlsZWQgYnkgUGhpbGlwcGUgQnJ1aGF0CiAgICAgICAgIyBhdDogaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvbW9kdWxlL3BlcmxzZWNyZXQKICAgICAgICAlc2VjcmV0X29wZXJhdG9ycyA9ICgKICAgICAgICAgICAgJ0dvYXRzZScgICAgICAgICAgICAgPT4gW3F3Iz0gKCApID0jXSwgICAgICAgICM9KCApPQogICAgICAgICAgICAnVmVudXMxJyAgICAgICAgICAgICA9PiBbcXcjMCArI10sICAgICAgICAgICAgIyAwKwogICAgICAgICAgICAnVmVudXMyJyAgICAgICAgICAgICA9PiBbcXcjKyAwI10sICAgICAgICAgICAgIyArMAogICAgICAgICAgICAnRW50ZXJwcmlzZScgICAgICAgICA9PiBbcXcjKSB4ICEgISNdLCAgICAgICAgIyAoKXghIQogICAgICAgICAgICAnS2l0ZTEnICAgICAgICAgICAgICA9PiBbcXcjfiB+IDw+I10sICAgICAgICAgIyB+fjw+CiAgICAgICAgICAgICdLaXRlMicgICAgICAgICAgICAgID0+IFtxdyN+fiA8PiNdLCAgICAgICAgICAjIH5+PD4KICAgICAgICAgICAgJ1dpbmtpbmcgRmF0IENvbW1hJyAgPT4gWyAoICcsJywgJz0+JyApIF0sICAgICMgLD0+CiAgICAgICAgICAgICdCYW5nIGJhbmcgICAgICAgICAnID0+IFtxdyMhICEjXSwgICAgICAgICAgICAjICEhCiAgICAgICAgKTsKCiAgICAgICAgIyBUaGUgZm9sbG93aW5nIG9wZXJhdG9ycyBhbmQgY29uc3RhbnRzIGFyZSBub3QgaW5jbHVkZWQgYmVjYXVzZSB0aGV5CiAgICAgICAgIyBhcmUgbm9ybWFsbHkga2VwdCB0aWdodCBieSBwZXJsdGlkeToKICAgICAgICAjIH5+IDx+PgogICAgICAgICMKCiAgICAgICAgIyBNYWtlIGEgbG9va3VwIHRhYmxlIGluZGV4ZWQgYnkgdGhlIGZpcnN0IHRva2VuIG9mIGVhY2ggb3BlcmF0b3I6CiAgICAgICAgIyBmaXJzdCB0b2tlbiA9PiBbbGlzdCwgbGlzdCwgLi4uXQogICAgICAgIGZvcmVhY2ggbXkgJHZhbHVlICggdmFsdWVzKCVzZWNyZXRfb3BlcmF0b3JzKSApIHsKICAgICAgICAgICAgbXkgJHRvayA9ICR2YWx1ZS0+WzBdOwogICAgICAgICAgICBwdXNoIEB7ICRpc19sZWFkaW5nX3NlY3JldF90b2tlbnskdG9rfSB9LCAkdmFsdWU7CiAgICAgICAgfQogICAgfQoKICAgIHN1YiBuZXdfc2VjcmV0X29wZXJhdG9yX3doaXRlc3BhY2UgewoKICAgICAgICBteSAoICRybG9uZ19hcnJheSwgJHJ3aGl0ZXNwYWNlX2ZsYWdzICkgPSBAXzsKCiAgICAgICAgIyBMb29wIG92ZXIgYWxsIHRva2VucyBpbiB0aGlzIGxpbmUKICAgICAgICBteSAoICR0b2tlbiwgJHR5cGUgKTsKICAgICAgICBteSAkam1heCA9IEB7JHJsb25nX2FycmF5fSAtIDE7CiAgICAgICAgZm9yZWFjaCBteSAkaiAoIDAgLi4gJGptYXggKSB7CgogICAgICAgICAgICAkdG9rZW4gPSAkcmxvbmdfYXJyYXktPlskal0tPltfVE9LRU5fXTsKICAgICAgICAgICAgJHR5cGUgID0gJHJsb25nX2FycmF5LT5bJGpdLT5bX1RZUEVfXTsKCiAgICAgICAgICAgICMgU2tpcCB1bmxlc3MgdGhpcyB0b2tlbiBtaWdodCBzdGFydCBhIHNlY3JldCBvcGVyYXRvcgogICAgICAgICAgICBuZXh0IGlmICggJHR5cGUgZXEgJ2InICk7CiAgICAgICAgICAgIG5leHQgdW5sZXNzICggJGlzX2xlYWRpbmdfc2VjcmV0X3Rva2VueyR0b2tlbn0gKTsKCiAgICAgICAgICAgICMgICAgICBMb29wIG92ZXIgYWxsIHNlY3JldCBvcGVyYXRvcnMgd2l0aCB0aGlzIGxlYWRpbmcgdG9rZW4KICAgICAgICAgICAgZm9yZWFjaCBteSAkcnBhdHRlcm4gKCBAeyAkaXNfbGVhZGluZ19zZWNyZXRfdG9rZW57JHRva2VufSB9ICkgewogICAgICAgICAgICAgICAgbXkgJGplbmQgPSAkaiAtIDE7CiAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICR0b2sgKCBAeyRycGF0dGVybn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJGplbmQrKzsKICAgICAgICAgICAgICAgICAgICAkamVuZCsrCgogICAgICAgICAgICAgICAgICAgICAgaWYgKCAkamVuZCA8PSAkam1heAogICAgICAgICAgICAgICAgICAgICAgICAmJiAkcmxvbmdfYXJyYXktPlskamVuZF0tPltfVFlQRV9dIGVxICdiJyApOwogICAgICAgICAgICAgICAgICAgIGlmICggICAkamVuZCA+ICRqbWF4CiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICR0b2sgbmUgJHJsb25nX2FycmF5LT5bJGplbmRdLT5bX1RPS0VOX10gKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGplbmQgPSB1bmRlZjsKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCRqZW5kKSB7CgogICAgICAgICAgICAgICAgICAgICMgc2V0IGZsYWdzIHRvIHByZXZlbnQgc3BhY2VzIHdpdGhpbiB0aGlzIG9wZXJhdG9yCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkamogKCAkaiArIDEgLi4gJGplbmQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRyd2hpdGVzcGFjZV9mbGFncy0+WyRqal0gPSBXU19OTzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJGogPSAkamVuZDsKICAgICAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9ICAgICMjICAgICAgRW5kIExvb3Agb3ZlciBhbGwgb3BlcmF0b3JzCiAgICAgICAgfSAgICAjIyBFbmQgbG9vcCBvdmVyIGFsbCB0b2tlbnMKICAgICAgICByZXR1cm47CiAgICB9ICAgICMgRW5kIHN1Ygp9ICMjIGVuZCBjbG9zdXJlIG5ld19zZWNyZXRfb3BlcmF0b3Jfd2hpdGVzcGFjZQoKeyAgICAjIyBiZWdpbiBjbG9zdXJlIHNldF9ib25kX3N0cmVuZ3RocwoKICAgICMgVGhlc2Ugcm91dGluZXMgYW5kIHZhcmlhYmxlcyBhcmUgaW52b2x2ZWQgaW4gZGVjaWRpbmcgd2hlcmUgdG8gYnJlYWsgdmVyeQogICAgIyBsb25nIGxpbmVzLgoKICAgIG15ICVpc19nb29kX2tleXdvcmRfYnJlYWtwb2ludDsKICAgIG15ICVpc19sdF9ndF9sZV9nZTsKICAgIG15ICVpc19jb250YWluZXJfdG9rZW47CgogICAgbXkgJWJpbmFyeV9ib25kX3N0cmVuZ3RoX25vc3BhY2U7CiAgICBteSAlYmluYXJ5X2JvbmRfc3RyZW5ndGg7CiAgICBteSAlbm9icmVha19saHM7CiAgICBteSAlbm9icmVha19yaHM7CgogICAgbXkgQGJpYXNfdG9rZW5zOwogICAgbXkgJWJpYXNfaGFzaDsKICAgIG15ICViaWFzOwogICAgbXkgJGRlbHRhX2JpYXM7CgogICAgc3ViIGluaXRpYWxpemVfYm9uZF9zdHJlbmd0aF9oYXNoZXMgewoKICAgICAgICBteSBAcTsKICAgICAgICBAcSA9IHF3KGlmIHVubGVzcyB3aGlsZSB1bnRpbCBmb3IgZm9yZWFjaCk7CiAgICAgICAgQGlzX2dvb2Rfa2V5d29yZF9icmVha3BvaW50e0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgICAgIEBxID0gcXcobHQgZ3QgbGUgZ2UpOwogICAgICAgIEBpc19sdF9ndF9sZV9nZXtAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICAgICBAcSA9IHF3LyAoIFsgeyB9IF0gKSAvOwogICAgICAgIEBpc19jb250YWluZXJfdG9rZW57QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICAgICAgIyBUaGUgZGVjaXNpb24gYWJvdXQgd2hlcmUgdG8gYnJlYWsgYSBsaW5lIGRlcGVuZHMgdXBvbiBhICJib25kCiAgICAgICAgIyBzdHJlbmd0aCIgYmV0d2VlbiB0b2tlbnMuICBUaGUgTE9XRVIgdGhlIGJvbmQgc3RyZW5ndGgsIHRoZSBNT1JFCiAgICAgICAgIyBsaWtlbHkgYSBicmVhay4gIEEgYm9uZCBzdHJlbmd0aCBtYXkgYmUgYW55IHZhbHVlIGJ1dCB0byBzaW1wbGlmeQogICAgICAgICMgdGhpbmdzIHRoZXJlIGFyZSBzZXZlcmFsIHByZS1kZWZpbmVkIHN0cmVuZ3RoIGxldmVsczoKCiAgICAgICAgIyAgICBOT19CUkVBSyAgICA9PiAxMDAwMDsKICAgICAgICAjICAgIFZFUllfU1RST05HID0+IDEwMDsKICAgICAgICAjICAgIFNUUk9ORyAgICAgID0+IDIuMTsKICAgICAgICAjICAgIE5PTUlOQUwgICAgID0+IDEuMTsKICAgICAgICAjICAgIFdFQUsgICAgICAgID0+IDAuODsKICAgICAgICAjICAgIFZFUllfV0VBSyAgID0+IDAuNTU7CgogICAgICAgICMgVGhlIHN0cmVuZ3RoIHZhbHVlcyBhcmUgYmFzZWQgb24gdHJpYWwtYW5kLWVycm9yLCBhbmQgbmVlZCB0byBiZQogICAgICAgICMgdHdlYWtlZCBvY2Nhc2lvbmFsbHkgdG8gZ2V0IGRlc2lyZWQgcmVzdWx0cy4gIFNvbWUgY29tbWVudHM6CiAgICAgICAgIwogICAgICAgICMgICAxLiBPbmx5IHJlbGF0aXZlIHN0cmVuZ3RocyBhcmUgaW1wb3J0YW50LiAgc21hbGwgZGlmZmVyZW5jZXMKICAgICAgICAjICAgICAgaW4gc3RyZW5ndGhzIGNhbiBtYWtlIGJpZyBmb3JtYXR0aW5nIGRpZmZlcmVuY2VzLgogICAgICAgICMgICAyLiBFYWNoIGluZGVudGF0aW9uIGxldmVsIGFkZHMgb25lIHVuaXQgb2YgYm9uZCBzdHJlbmd0aC4KICAgICAgICAjICAgMy4gQSB2YWx1ZSBvZiBOT19CUkVBSyBtYWtlcyBhbiB1bmJyZWFrYWJsZSBib25kCiAgICAgICAgIyAgIDQuIEEgdmFsdWUgb2YgVkVSWV9XRUFLIGlzIHRoZSBzdHJlbmd0aCBvZiBhICcsJwogICAgICAgICMgICA1LiBWYWx1ZXMgYmVsb3cgTk9NSU5BTCBhcmUgY29uc2lkZXJlZCBvayBicmVhayBwb2ludHMuCiAgICAgICAgIyAgIDYuIFZhbHVlcyBhYm92ZSBOT01JTkFMIGFyZSBjb25zaWRlcmVkIHBvb3IgYnJlYWsgcG9pbnRzLgogICAgICAgICMKICAgICAgICAjIFRoZSBib25kIHN0cmVuZ3RocyBzaG91bGQgcm91Z2hseSBmb2xsb3cgcHJlY2VkZW5jZSBvcmRlciB3aGVyZQogICAgICAgICMgcG9zc2libGUuICBJZiB5b3UgbWFrZSBjaGFuZ2VzLCBwbGVhc2UgY2hlY2sgdGhlIHJlc3VsdHMgdmVyeQogICAgICAgICMgY2FyZWZ1bGx5IG9uIGEgdmFyaWV0eSBvZiBzY3JpcHRzLiAgVGVzdGluZyB3aXRoIHRoZSAtZXh0cnVkZQogICAgICAgICMgb3B0aW9ucyBpcyBwYXJ0aWN1bGFybHkgaGVscGZ1bCBpbiBleGVyY2lzaW5nIGFsbCBvZiB0aGUgcnVsZXMuCgogICAgICAgICMgV2hlcmV2ZXIgcG9zc2libGUsIGJvbmQgc3RyZW5ndGhzIGFyZSBkZWZpbmVkIGluIHRoZSBmb2xsb3dpbmcKICAgICAgICAjIHRhYmxlcy4gIFRoZXJlIGFyZSB0d28gbWFpbiBzdGFnZXMgdG8gc2V0dGluZyBib25kIHN0cmVuZ3RocyBhbmQKICAgICAgICAjIHR3byB0eXBlcyBvZiB0YWJsZXM6CiAgICAgICAgIwogICAgICAgICMgVGhlIGZpcnN0IHN0YWdlIGludm9sdmVzIGxvb2tpbmcgYXQgZWFjaCB0b2tlbiBpbmRpdmlkdWFsbHkgYW5kCiAgICAgICAgIyBkZWZpbmluZyBsZWZ0IGFuZCByaWdodCBib25kIHN0cmVuZ3RocywgYWNjb3JkaW5nIHRvIGlmIHdlIHdhbnQKICAgICAgICAjIHRvIGJyZWFrIHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IHNpZGUsIGFuZCBob3cgZ29vZCBhIGJyZWFrIHBvaW50IGl0CiAgICAgICAgIyBpcy4gIEZvciBleGFtcGxlIHRva2VucyBsaWtlID0sIHx8LCAmJiBtYWtlIGdvb2QgYnJlYWsgcG9pbnRzIGFuZAogICAgICAgICMgd2lsbCBoYXZlIGxvdyBzdHJlbmd0aHMsIGJ1dCBvbmUgbWlnaHQgd2FudCB0byBicmVhayBvbiBlaXRoZXIKICAgICAgICAjIHNpZGUgdG8gcHV0IHRoZW0gYXQgdGhlIGVuZCBvZiBvbmUgbGluZSBvciBiZWdpbm5pbmcgb2YgdGhlIG5leHQuCiAgICAgICAgIwogICAgICAgICMgVGhlIHNlY29uZCBzdGFnZSBpbnZvbHZlcyBsb29raW5nIGF0IGNlcnRhaW4gcGFpcnMgb2YgdG9rZW5zIGFuZAogICAgICAgICMgZGVmaW5pbmcgYSBib25kIHN0cmVuZ3RoIGZvciB0aGF0IHBhcnRpY3VsYXIgcGFpci4gIFRoaXMgc2Vjb25kCiAgICAgICAgIyBzdGFnZSBoYXMgcHJpb3JpdHkuCgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIEJvbmQgU3RyZW5ndGggQkVHSU4gU2VjdGlvbiAxLgogICAgICAgICMgU2V0IGxlZnQgYW5kIHJpZ2h0IGJvbmQgc3RyZW5ndGhzIG9mIGluZGl2aWR1YWwgdG9rZW5zLgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgIyBOT1RFOiBOT19CUkVBSydzIHNldCBpbiB0aGlzIHNlY3Rpb24gZmlyc3QgYXJlIEhJTlRTIHdoaWNoIHdpbGwKICAgICAgICAjIHByb2JhYmx5IG5vdCBiZSBob25vcmVkLiBFc3NlbnRpYWwgTk9fQlJFQUtTJ3Mgc2hvdWxkIGJlIHNldCBpbgogICAgICAgICMgQkVHSU4gU2VjdGlvbiAyIG9yIGhhcmR3aXJlZCBpbiB0aGUgTk9fQlJFQUsgY29kaW5nIG5lYXIgdGhlIGVuZAogICAgICAgICMgb2YgdGhpcyBzdWJyb3V0aW5lLgoKICAgICAgICAjIE5vdGUgdGhhdCB3ZSBhcmUgc2V0dGluZyBkZWZhdWx0cyBpbiB0aGlzIHNlY3Rpb24uICBUaGUgdXNlcgogICAgICAgICMgY2Fubm90IGNoYW5nZSBib25kIHN0cmVuZ3RocyBidXQgY2FuIGNhdXNlIHRoZSBsZWZ0IGFuZCByaWdodAogICAgICAgICMgYm9uZCBzdHJlbmd0aHMgb2YgYW55IHRva2VuIHR5cGUgdG8gYmUgc3dhcHBlZCB0aHJvdWdoIHRoZSB1c2Ugb2YKICAgICAgICAjIHRoZSAtd2JhIGFuZCAtd2JiIGZsYWdzLiBJbiB0aGlzIHdheSB0aGUgdXNlciBjYW4gZGV0ZXJtaW5lIGlmIGEKICAgICAgICAjIGJyZWFrcG9pbnQgdG9rZW4gc2hvdWxkIGFwcGVhciBhdCB0aGUgZW5kIG9mIG9uZSBsaW5lIG9yIHRoZQogICAgICAgICMgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGxpbmUuCgogICAgICAgICVyaWdodF9ib25kX3N0cmVuZ3RoICAgICAgICAgID0gKCk7CiAgICAgICAgJWxlZnRfYm9uZF9zdHJlbmd0aCAgICAgICAgICAgPSAoKTsKICAgICAgICAlYmluYXJ5X2JvbmRfc3RyZW5ndGhfbm9zcGFjZSA9ICgpOwogICAgICAgICViaW5hcnlfYm9uZF9zdHJlbmd0aCAgICAgICAgID0gKCk7CiAgICAgICAgJW5vYnJlYWtfbGhzICAgICAgICAgICAgICAgICAgPSAoKTsKICAgICAgICAlbm9icmVha19yaHMgICAgICAgICAgICAgICAgICA9ICgpOwoKICAgICAgICAjIFRoZSBoYXNoIGtleXMgaW4gdGhpcyBzZWN0aW9uIGFyZSB0b2tlbiB0eXBlcywgcGx1cyB0aGUgdGV4dCBvZgogICAgICAgICMgY2VydGFpbiBrZXl3b3JkcyBsaWtlICdvcicsICdhbmQnLgoKICAgICAgICAjIG5vIGJyZWFrIGFyb3VuZCBwb3NzaWJsZSBmaWxlaGFuZGxlCiAgICAgICAgJGxlZnRfYm9uZF9zdHJlbmd0aHsnWid9ICA9IE5PX0JSRUFLOwogICAgICAgICRyaWdodF9ib25kX3N0cmVuZ3RoeydaJ30gPSBOT19CUkVBSzsKCiAgICAgICAgIyBuZXZlciBwdXQgYSBiYXJlIHdvcmQgb24gYSBuZXcgbGluZToKICAgICAgICAjIGV4YW1wbGUgcHJpbnQgKFNUREVSUiwgImJsYSIpOyB3aWxsIGZhaWwgd2l0aCBicmVhayBhZnRlciAoCiAgICAgICAgJGxlZnRfYm9uZF9zdHJlbmd0aHsndyd9ID0gTk9fQlJFQUs7CgogICAgICAgICMgYmxhbmtzIGFsd2F5cyBoYXZlIGluZmluaXRlIHN0cmVuZ3RoIHRvIGZvcmNlIGJyZWFrcyBhZnRlcgogICAgICAgICMgcmVhbCB0b2tlbnMKICAgICAgICAkcmlnaHRfYm9uZF9zdHJlbmd0aHsnYid9ID0gTk9fQlJFQUs7CgogICAgICAgICMgdHJ5IG5vdCB0byBicmVhayBvbiBleHBvbmVudGF0aW9uCiAgICAgICAgQHEgICAgICAgICAgICAgICAgICAgICAgID0gcXcjICoqIC4uIC4uLiA8PT4gIzsKICAgICAgICBAbGVmdF9ib25kX3N0cmVuZ3Roe0BxfSAgPSAoU1RST05HKSB4IHNjYWxhcihAcSk7CiAgICAgICAgQHJpZ2h0X2JvbmRfc3RyZW5ndGh7QHF9ID0gKFNUUk9ORykgeCBzY2FsYXIoQHEpOwoKICAgICAgICAjIFRoZSBjb21tYS1hcnJvdyBoYXMgdmVyeSBsb3cgcHJlY2VkZW5jZSBidXQgbm90IGEgZ29vZCBicmVhayBwb2ludAogICAgICAgICRsZWZ0X2JvbmRfc3RyZW5ndGh7Jz0+J30gID0gTk9fQlJFQUs7CiAgICAgICAgJHJpZ2h0X2JvbmRfc3RyZW5ndGh7Jz0+J30gPSBOT01JTkFMOwoKICAgICAgICAjIG9rIHRvIGJyZWFrIGFmdGVyIGxhYmVsCiAgICAgICAgJGxlZnRfYm9uZF9zdHJlbmd0aHsnSid9ICA9IE5PX0JSRUFLOwogICAgICAgICRyaWdodF9ib25kX3N0cmVuZ3RoeydKJ30gPSBOT01JTkFMOwogICAgICAgICRsZWZ0X2JvbmRfc3RyZW5ndGh7J2onfSAgPSBTVFJPTkc7CiAgICAgICAgJHJpZ2h0X2JvbmRfc3RyZW5ndGh7J2onfSA9IFNUUk9ORzsKICAgICAgICAkbGVmdF9ib25kX3N0cmVuZ3RoeydBJ30gID0gU1RST05HOwogICAgICAgICRyaWdodF9ib25kX3N0cmVuZ3RoeydBJ30gPSBTVFJPTkc7CgogICAgICAgICRsZWZ0X2JvbmRfc3RyZW5ndGh7Jy0+J30gID0gU1RST05HOwogICAgICAgICRyaWdodF9ib25kX3N0cmVuZ3RoeyctPid9ID0gVkVSWV9TVFJPTkc7CgogICAgICAgICRsZWZ0X2JvbmRfc3RyZW5ndGh7J0NPUkU6Oid9ICA9IE5PTUlOQUw7CiAgICAgICAgJHJpZ2h0X2JvbmRfc3RyZW5ndGh7J0NPUkU6Oid9ID0gTk9fQlJFQUs7CgogICAgICAgICMgYnJlYWtpbmcgQUZURVIgbW9kdWx1cyBvcGVyYXRvciBpcyBvazoKICAgICAgICBAcSA9IHF3PCAlID47CiAgICAgICAgQGxlZnRfYm9uZF9zdHJlbmd0aHtAcX0gPSAoU1RST05HKSB4IHNjYWxhcihAcSk7CiAgICAgICAgQHJpZ2h0X2JvbmRfc3RyZW5ndGh7QHF9ID0KICAgICAgICAgICggMC4xICogTk9NSU5BTCArIDAuOSAqIFNUUk9ORyApIHggc2NhbGFyKEBxKTsKCiAgICAgICAgIyBCcmVhayBBRlRFUiBtYXRoIG9wZXJhdG9ycyAqIGFuZCAvCiAgICAgICAgQHEgICAgICAgICAgICAgICAgICAgICAgID0gcXc8ICogLyB4ICA+OwogICAgICAgIEBsZWZ0X2JvbmRfc3RyZW5ndGh7QHF9ICA9IChTVFJPTkcpIHggc2NhbGFyKEBxKTsKICAgICAgICBAcmlnaHRfYm9uZF9zdHJlbmd0aHtAcX0gPSAoTk9NSU5BTCkgeCBzY2FsYXIoQHEpOwoKICAgICAgICAjIEJyZWFrIEFGVEVSIHdlYWtlc3QgbWF0aCBvcGVyYXRvcnMgKyBhbmQgLQogICAgICAgICMgTWFrZSB0aGVtIHdlYWtlciB0aGFuICogYnV0IGEgYml0IHN0cm9uZ2VyIHRoYW4gJy4nCiAgICAgICAgQHEgPSBxdzwgKyAtID47CiAgICAgICAgQGxlZnRfYm9uZF9zdHJlbmd0aHtAcX0gPSAoU1RST05HKSB4IHNjYWxhcihAcSk7CiAgICAgICAgQHJpZ2h0X2JvbmRfc3RyZW5ndGh7QHF9ID0KICAgICAgICAgICggMC45MSAqIE5PTUlOQUwgKyAwLjA5ICogV0VBSyApIHggc2NhbGFyKEBxKTsKCiAgICAgICAgIyBicmVha2luZyBCRUZPUkUgdGhlc2UgaXMganVzdCBvazoKICAgICAgICBAcSAgICAgICAgICAgICAgICAgICAgICAgPSBxdyMgPj4gPDwgIzsKICAgICAgICBAcmlnaHRfYm9uZF9zdHJlbmd0aHtAcX0gPSAoU1RST05HKSB4IHNjYWxhcihAcSk7CiAgICAgICAgQGxlZnRfYm9uZF9zdHJlbmd0aHtAcX0gID0gKE5PTUlOQUwpIHggc2NhbGFyKEBxKTsKCiAgICAgICAgIyBicmVha2luZyBiZWZvcmUgdGhlIHN0cmluZyBjb25jYXRlbmF0aW9uIG9wZXJhdG9yIHNlZW1zIGJlc3QKICAgICAgICAjIGJlY2F1c2UgaXQgY2FuIGJlIGhhcmQgdG8gc2VlIGF0IHRoZSBlbmQgb2YgYSBsaW5lCiAgICAgICAgJHJpZ2h0X2JvbmRfc3RyZW5ndGh7Jy4nfSA9IFNUUk9ORzsKICAgICAgICAkbGVmdF9ib25kX3N0cmVuZ3RoeycuJ30gID0gMC45ICogTk9NSU5BTCArIDAuMSAqIFdFQUs7CgogICAgICAgIEBxICAgICAgICAgICAgICAgICAgICAgICA9IHF3PCB9IF0gKSBSID47CiAgICAgICAgQGxlZnRfYm9uZF9zdHJlbmd0aHtAcX0gID0gKFNUUk9ORykgeCBzY2FsYXIoQHEpOwogICAgICAgIEByaWdodF9ib25kX3N0cmVuZ3Roe0BxfSA9IChOT01JTkFMKSB4IHNjYWxhcihAcSk7CgogICAgICAgICMgbWFrZSB0aGVzZSBhIGxpdHRsZSB3ZWFrZXIgdGhhbiBub21pbmFsIHNvIHRoYXQgdGhleSBnZXQKICAgICAgICAjIGZhdm9yZWQgZm9yIGVuZC1vZi1saW5lIGNoYXJhY3RlcnMKICAgICAgICBAcSA9IHF3PCAhPSA9PSA9fiAhfiB+fiAhfn4gPjsKICAgICAgICBAbGVmdF9ib25kX3N0cmVuZ3Roe0BxfSA9IChTVFJPTkcpIHggc2NhbGFyKEBxKTsKICAgICAgICBAcmlnaHRfYm9uZF9zdHJlbmd0aHtAcX0gPQogICAgICAgICAgKCAwLjkgKiBOT01JTkFMICsgMC4xICogV0VBSyApIHggc2NhbGFyKEBxKTsKCiAgICAgICAgIyBicmVhayBBRlRFUiB0aGVzZQogICAgICAgIEBxID0gcXcjIDwgPiAgfCAmID49IDw9ICM7CiAgICAgICAgQGxlZnRfYm9uZF9zdHJlbmd0aHtAcX0gPSAoVkVSWV9TVFJPTkcpIHggc2NhbGFyKEBxKTsKICAgICAgICBAcmlnaHRfYm9uZF9zdHJlbmd0aHtAcX0gPQogICAgICAgICAgKCAwLjggKiBOT01JTkFMICsgMC4yICogV0VBSyApIHggc2NhbGFyKEBxKTsKCiAgICAgICAgIyBicmVha2luZyBlaXRoZXIgYmVmb3JlIG9yIGFmdGVyIGEgcXVvdGUgaXMgb2sKICAgICAgICAjIGJ1dCBiaWFzIGZvciBicmVha2luZyBiZWZvcmUgYSBxdW90ZQogICAgICAgICRsZWZ0X2JvbmRfc3RyZW5ndGh7J1EnfSAgPSBOT01JTkFMOwogICAgICAgICRyaWdodF9ib25kX3N0cmVuZ3RoeydRJ30gPSBOT01JTkFMICsgMC4wMjsKICAgICAgICAkbGVmdF9ib25kX3N0cmVuZ3RoeydxJ30gID0gTk9NSU5BTDsKICAgICAgICAkcmlnaHRfYm9uZF9zdHJlbmd0aHsncSd9ID0gTk9NSU5BTDsKCiAgICAgICAgIyBzdGFydGluZyBhIGxpbmUgd2l0aCBhIGtleXdvcmQgaXMgdXN1YWxseSBvawogICAgICAgICRsZWZ0X2JvbmRfc3RyZW5ndGh7J2snfSA9IE5PTUlOQUw7CgogICAgICAgICMgd2UgdXN1YWxseSB3YW50IHRvIGJvbmQgYSBrZXl3b3JkIHN0cm9uZ2x5IHRvIHdoYXQgaW1tZWRpYXRlbHkKICAgICAgICAjIGZvbGxvd3MsIHJhdGhlciB0aGFuIGxlYXZpbmcgaXQgc3RyYW5kZWQgYXQgdGhlIGVuZCBvZiBhIGxpbmUKICAgICAgICAkcmlnaHRfYm9uZF9zdHJlbmd0aHsnayd9ID0gU1RST05HOwoKICAgICAgICAkbGVmdF9ib25kX3N0cmVuZ3RoeydHJ30gID0gTk9NSU5BTDsKICAgICAgICAkcmlnaHRfYm9uZF9zdHJlbmd0aHsnRyd9ID0gU1RST05HOwoKICAgICAgICAjIGFzc2lnbm1lbnQgb3BlcmF0b3JzCiAgICAgICAgQHEgPSBxdygKICAgICAgICAgID0gKio9ICs9ICo9ICY9IDw8PSAmJj0KICAgICAgICAgIC09IC89IHw9ID4+PSB8fD0gLy89CiAgICAgICAgICAuPSAlPSBePQogICAgICAgICAgeD0KICAgICAgICApOwoKICAgICAgICAjIERlZmF1bHQgaXMgdG8gYnJlYWsgQUZURVIgdmFyaW91cyBhc3NpZ25tZW50IG9wZXJhdG9ycwogICAgICAgIEBsZWZ0X2JvbmRfc3RyZW5ndGh7QHF9ID0gKFNUUk9ORykgeCBzY2FsYXIoQHEpOwogICAgICAgIEByaWdodF9ib25kX3N0cmVuZ3Roe0BxfSA9CiAgICAgICAgICAoIDAuNCAqIFdFQUsgKyAwLjYgKiBWRVJZX1dFQUsgKSB4IHNjYWxhcihAcSk7CgogICAgICAgICMgRGVmYXVsdCBpcyB0byBicmVhayBCRUZPUkUgJyYmJyBhbmQgJ3x8JyBhbmQgJy8vJwogICAgICAgICMgc2V0IHN0cmVuZ3RoIG9mICd8fCcgdG8gc2FtZSBhcyAnPScgc28gdGhhdCBjaGFpbnMgbGlrZQogICAgICAgICMgJGEgPSAkYiB8fCAkYyB8fCAkZCAgIHdpbGwgYnJlYWsgYmVmb3JlIHRoZSBmaXJzdCAnfHwnCiAgICAgICAgJHJpZ2h0X2JvbmRfc3RyZW5ndGh7J3x8J30gPSBOT01JTkFMOwogICAgICAgICRsZWZ0X2JvbmRfc3RyZW5ndGh7J3x8J30gID0gJHJpZ2h0X2JvbmRfc3RyZW5ndGh7Jz0nfTsKCiAgICAgICAgIyBzYW1lIHRoaW5nIGZvciAnLy8nCiAgICAgICAgJHJpZ2h0X2JvbmRfc3RyZW5ndGh7Jy8vJ30gPSBOT01JTkFMOwogICAgICAgICRsZWZ0X2JvbmRfc3RyZW5ndGh7Jy8vJ30gID0gJHJpZ2h0X2JvbmRfc3RyZW5ndGh7Jz0nfTsKCiAgICAgICAgIyBzZXQgc3RyZW5ndGggb2YgJiYgYSBsaXR0bGUgaGlnaGVyIHRoYW4gfHwKICAgICAgICAkcmlnaHRfYm9uZF9zdHJlbmd0aHsnJiYnfSA9IE5PTUlOQUw7CiAgICAgICAgJGxlZnRfYm9uZF9zdHJlbmd0aHsnJiYnfSAgPSAkbGVmdF9ib25kX3N0cmVuZ3Roeyd8fCd9ICsgMC4xOwoKICAgICAgICAkbGVmdF9ib25kX3N0cmVuZ3Roeyc7J30gID0gVkVSWV9TVFJPTkc7CiAgICAgICAgJHJpZ2h0X2JvbmRfc3RyZW5ndGh7JzsnfSA9IFZFUllfV0VBSzsKICAgICAgICAkbGVmdF9ib25kX3N0cmVuZ3RoeydmJ30gID0gVkVSWV9TVFJPTkc7CgogICAgICAgICMgbWFrZSByaWdodCBzdHJlbmd0aCBvZiBmb3IgJzsnIGEgbGl0dGxlIGxlc3MgdGhhbiAnPScKICAgICAgICAjIHRvIG1ha2UgZm9yIGNvbnRlbnRzIGJyZWFrIGFmdGVyIHRoZSAnOycgdG8gYXZvaWQgdGhpczoKICAgICAgICAjICAgZm9yICggJGogPSAkbnVtYmVyX29mX2ZpZWxkcyAtIDEgOyAkaiA8ICRpdGVtX2NvdW50IDsgJGogKz0KICAgICAgICAjICAgICAkbnVtYmVyX29mX2ZpZWxkcyApCiAgICAgICAgIyBhbmQgbWFrZSBpdCB3ZWFrZXIgdGhhbiAnLCcgYW5kICdhbmQnIHRvbwogICAgICAgICRyaWdodF9ib25kX3N0cmVuZ3RoeydmJ30gPSBWRVJZX1dFQUsgLSAwLjAzOwoKICAgICAgICAjIFRoZSBzdHJlbmd0aHMgb2YgPy86IHNob3VsZCBiZSBzb21ld2hlcmUgYmV0d2VlbgogICAgICAgICMgYW4gJz0nIGFuZCBhIHF1b3RlIChOT01JTkFMKSwKICAgICAgICAjIG1ha2Ugc3RyZW5ndGggb2YgJzonIHNsaWdodGx5IGxlc3MgdGhhbiAnPycgdG8gaGVscAogICAgICAgICMgYnJlYWsgbG9uZyBjaGFpbnMgb2YgPyA6IGFmdGVyIHRoZSBjb2xvbnMKICAgICAgICAkbGVmdF9ib25kX3N0cmVuZ3Roeyc6J30gID0gMC40ICogV0VBSyArIDAuNiAqIE5PTUlOQUw7CiAgICAgICAgJHJpZ2h0X2JvbmRfc3RyZW5ndGh7JzonfSA9IE5PX0JSRUFLOwogICAgICAgICRsZWZ0X2JvbmRfc3RyZW5ndGh7Jz8nfSAgPSAkbGVmdF9ib25kX3N0cmVuZ3Roeyc6J30gKyAwLjAxOwogICAgICAgICRyaWdodF9ib25kX3N0cmVuZ3Roeyc/J30gPSBOT19CUkVBSzsKCiAgICAgICAgJGxlZnRfYm9uZF9zdHJlbmd0aHsnLCd9ICA9IFZFUllfU1RST05HOwogICAgICAgICRyaWdodF9ib25kX3N0cmVuZ3RoeycsJ30gPSBWRVJZX1dFQUs7CgogICAgICAgICMgcmVtYWluaW5nIGRpZ3JhcGhzIGFuZCB0cmlncmFwaHMgbm90IGRlZmluZWQgYWJvdmUKICAgICAgICBAcSAgICAgICAgICAgICAgICAgICAgICAgPSBxdyggOjogPD4gKysgLS0pOwogICAgICAgIEBsZWZ0X2JvbmRfc3RyZW5ndGh7QHF9ICA9IChXRUFLKSB4IHNjYWxhcihAcSk7CiAgICAgICAgQHJpZ2h0X2JvbmRfc3RyZW5ndGh7QHF9ID0gKFNUUk9ORykgeCBzY2FsYXIoQHEpOwoKICAgICAgICAjIFNldCBib25kIHN0cmVuZ3RocyBvZiBjZXJ0YWluIGtleXdvcmRzCiAgICAgICAgIyBtYWtlICdvcicsICdlcnInLCAnYW5kJyBzbGlnaHRseSB3ZWFrZXIgdGhhbiBhICcsJwogICAgICAgICRsZWZ0X2JvbmRfc3RyZW5ndGh7J2FuZCd9ICA9IFZFUllfV0VBSyAtIDAuMDE7CiAgICAgICAgJGxlZnRfYm9uZF9zdHJlbmd0aHsnb3InfSAgID0gVkVSWV9XRUFLIC0gMC4wMjsKICAgICAgICAkbGVmdF9ib25kX3N0cmVuZ3RoeydlcnInfSAgPSBWRVJZX1dFQUsgLSAwLjAyOwogICAgICAgICRsZWZ0X2JvbmRfc3RyZW5ndGh7J3hvcid9ICA9IFZFUllfV0VBSyAtIDAuMDE7CiAgICAgICAgJHJpZ2h0X2JvbmRfc3RyZW5ndGh7J2FuZCd9ID0gTk9NSU5BTDsKICAgICAgICAkcmlnaHRfYm9uZF9zdHJlbmd0aHsnb3InfSAgPSBOT01JTkFMOwogICAgICAgICRyaWdodF9ib25kX3N0cmVuZ3RoeydlcnInfSA9IE5PTUlOQUw7CiAgICAgICAgJHJpZ2h0X2JvbmRfc3RyZW5ndGh7J3hvcid9ID0gTk9NSU5BTDsKCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgQm9uZCBTdHJlbmd0aCBCRUdJTiBTZWN0aW9uIDIuCiAgICAgICAgIyBTZXQgYmluYXJ5IHJ1bGVzIGZvciBib25kIHN0cmVuZ3RocyBiZXR3ZWVuIGNlcnRhaW4gdG9rZW4gdHlwZXMuCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgICAjICBXZSBoYXZlIGEgbGl0dGxlIHByb2JsZW0gbWFraW5nIHRhYmxlcyB3aGljaCBhcHBseSB0byB0aGUKICAgICAgICAjICBjb250YWluZXIgdG9rZW5zLiAgSGVyZSBpcyBhIGxpc3Qgb2YgY29udGFpbmVyIHRva2VucyBhbmQKICAgICAgICAjICB0aGVpciB0eXBlczoKICAgICAgICAjCiAgICAgICAgIyAgIHR5cGUgICAgdG9rZW5zIC8vIG1lYW5pbmcKICAgICAgICAjICAgICAgeyAgICB7LCBbLCAoIC8vIGluZGVudAogICAgICAgICMgICAgICB9ICAgIH0sIF0sICkgLy8gb3V0ZGVudAogICAgICAgICMgICAgICBbICAgIFsgLy8gbGVmdCBub24tc3RydWN0dXJhbCBbIChlbmNsb3NpbmcgYW4gYXJyYXkgaW5kZXgpCiAgICAgICAgIyAgICAgIF0gICAgXSAvLyByaWdodCBub24tc3RydWN0dXJhbCBzcXVhcmUgYnJhY2tldAogICAgICAgICMgICAgICAoICAgICggLy8gbGVmdCBub24tc3RydWN0dXJhbCBwYXJlbgogICAgICAgICMgICAgICApICAgICkgLy8gcmlnaHQgbm9uLXN0cnVjdHVyYWwgcGFyZW4KICAgICAgICAjICAgICAgTCAgICB7IC8vIGxlZnQgbm9uLXN0cnVjdHVyYWwgY3VybHkgYnJhY2UgKGVuY2xvc2luZyBhIGtleSkKICAgICAgICAjICAgICAgUiAgICB9IC8vIHJpZ2h0IG5vbi1zdHJ1Y3R1cmFsIGN1cmx5IGJyYWNlCiAgICAgICAgIwogICAgICAgICMgIFNvbWUgcnVsZXMgYXBwbHkgdG8gdG9rZW4gdHlwZXMgYW5kIHNvbWUgdG8ganVzdCB0aGUgdG9rZW4KICAgICAgICAjICBpdHNlbGYuICBXZSBzb2x2ZSB0aGUgcHJvYmxlbSBieSBjb21iaW5pbmcgdHlwZSBhbmQgdG9rZW4gaW50byBhCiAgICAgICAgIyAgbmV3IGhhc2gga2V5IGZvciB0aGUgY29udGFpbmVyIHR5cGVzLgogICAgICAgICMKICAgICAgICAjICBJZiBhIHJ1bGUgYXBwbGllcyB0byBhIHRva2VuICd0eXBlJyB0aGVuIHdlIG5lZWQgdG8gbWFrZSBydWxlcwogICAgICAgICMgIGZvciBlYWNoIG9mIHRoZXNlICd0eXBlLnRva2VuJyBjb21iaW5hdGlvbnM6CiAgICAgICAgIyAgVHlwZSAgICBUeXBlLlRva2VuCiAgICAgICAgIyAgeyAgICAgICB7eywge1ssIHsoCiAgICAgICAgIyAgWyAgICAgICBbWwogICAgICAgICMgICggICAgICAgKCgKICAgICAgICAjICBMICAgICAgIEx7CiAgICAgICAgIyAgfSAgICAgICB9fSwgfV0sIH0pCiAgICAgICAgIyAgXSAgICAgICBdXQogICAgICAgICMgICkgICAgICAgKSkKICAgICAgICAjICBSICAgICAgIFJ9CiAgICAgICAgIwogICAgICAgICMgIElmIGEgcnVsZSBhcHBsaWVzIHRvIGEgdG9rZW4gdGhlbiB3ZSBuZWVkIHRvIG1ha2UgcnVsZXMgZm9yCiAgICAgICAgIyAgdGhlc2UgJ3R5cGUudG9rZW4nIGNvbWJpbmF0aW9uczoKICAgICAgICAjICBUb2tlbiAgIFR5cGUuVG9rZW4KICAgICAgICAjICB7ICAgICAgIHt7LCBMewogICAgICAgICMgIFsgICAgICAge1ssIFtbCiAgICAgICAgIyAgKCAgICAgICB7KCwgKCgKICAgICAgICAjICB9ICAgICAgIH19LCBSfQogICAgICAgICMgIF0gICAgICAgfV0sIF1dCiAgICAgICAgIyAgKSAgICAgICB9KSwgKSkKCiAgICAgICAgIyBhbGxvdyBsb25nIGxpbmVzIGJlZm9yZSBmaW5hbCB7IGluIGFuIGlmIHN0YXRlbWVudCwgYXMgaW46CiAgICAgICAgIyAgICBpZiAoLi4uLi4uLi4uLgogICAgICAgICMgICAgICAuLi4uLi4uLi4uKQogICAgICAgICMgICAgewogICAgICAgICMKICAgICAgICAjIE90aGVyd2lzZSwgdGhlIGxpbmUgYmVmb3JlIHRoZSB7IHRlbmRzIHRvIGJlIHRvbyBzaG9ydC4KCiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3RoeycpKSd9eyd7eyd9ID0gVkVSWV9XRUFLICsgMC4wMzsKICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGh7JygoJ317J3t7J30gPSBOT01JTkFMOwoKICAgICAgICAjIGJyZWFrIG9uIHNvbWV0aGluZyBsaWtlICd9ICgnLCBidXQga2VlcCB0aGlzIHN0cm9uZ2VyIHRoYW4gYSAnLCcKICAgICAgICAjIGV4YW1wbGUgaXMgaW4gJ2hvd2UucGwnCiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3RoeydSfSd9eycoKCd9ID0gMC44ICogVkVSWV9XRUFLICsgMC4yICogV0VBSzsKICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGh7J319J317JygoJ30gPSAwLjggKiBWRVJZX1dFQUsgKyAwLjIgKiBXRUFLOwoKICAgICAgICAjIGtlZXAgbWF0cml4IGFuZCBoYXNoIGluZGljZXMgdG9nZXRoZXIKICAgICAgICAjIGJ1dCBtYWtlIHRoZW0gYSBsaXR0bGUgYmVsb3cgU1RST05HIHRvIGFsbG93IGJyZWFraW5nIG9wZW4KICAgICAgICAjIHNvbWV0aGluZyBsaWtlIHsnc29tZS13b3JkJ317J3NvbWUtdmVyeS1sb25nLXdvcmQnfSBhdCB0aGUgfXsKICAgICAgICAjIChicmFjZWJyay50KQogICAgICAgICRiaW5hcnlfYm9uZF9zdHJlbmd0aHsnXV0nfXsnW1snfSA9IDAuOSAqIFNUUk9ORyArIDAuMSAqIE5PTUlOQUw7CiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3RoeyddXSd9eydMeyd9ID0gMC45ICogU1RST05HICsgMC4xICogTk9NSU5BTDsKICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGh7J1J9J317J1tbJ30gPSAwLjkgKiBTVFJPTkcgKyAwLjEgKiBOT01JTkFMOwogICAgICAgICRiaW5hcnlfYm9uZF9zdHJlbmd0aHsnUn0nfXsnTHsnfSA9IDAuOSAqIFNUUk9ORyArIDAuMSAqIE5PTUlOQUw7CgogICAgICAgICMgaW5jcmVhc2Ugc3RyZW5ndGggdG8gdGhlIHBvaW50IHdoZXJlIGEgYnJlYWsgaW4gdGhlIGZvbGxvd2luZwogICAgICAgICMgd2lsbCBiZSBhZnRlciB0aGUgb3BlbmluZyBwYXJlbiByYXRoZXIgdGhhbiBhdCB0aGUgYXJyb3c6CiAgICAgICAgIyAgICAkYS0+JGIoJGMpOwogICAgICAgICRiaW5hcnlfYm9uZF9zdHJlbmd0aHsnaSd9eyctPid9ID0gMS40NSAqIFNUUk9ORzsKCiAgICAjIE5vdGUgdGhhdCB0aGUgZm9sbG93aW5nIGFsdGVybmF0aXZlIHN0cmVuZ3RoIHdvdWxkIG1ha2UgdGhlIGJyZWFrIGF0IHRoZQogICAgIyAnLT4nIHJhdGhlciB0aGFuIG9wZW5pbmcgdGhlICcoJy4gIEJvdGggaGF2ZSBhZHZhbnRhZ2VzIGFuZCBkaXNhZHZhbnRhZ2VzLgogICAgIyAkYmluYXJ5X2JvbmRfc3RyZW5ndGh7J2knfXsnLT4nfSA9IDAuNSpTVFJPTkcgKyAwLjUgKiBOT01JTkFMOyAjCgogICAgICAgICRiaW5hcnlfYm9uZF9zdHJlbmd0aHsnKSknfXsnLT4nfSA9IDAuMSAqIFNUUk9ORyArIDAuOSAqIE5PTUlOQUw7CiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3RoeyddXSd9eyctPid9ID0gMC4xICogU1RST05HICsgMC45ICogTk9NSU5BTDsKICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGh7J30pJ317Jy0+J30gPSAwLjEgKiBTVFJPTkcgKyAwLjkgKiBOT01JTkFMOwogICAgICAgICRiaW5hcnlfYm9uZF9zdHJlbmd0aHsnfV0nfXsnLT4nfSA9IDAuMSAqIFNUUk9ORyArIDAuOSAqIE5PTUlOQUw7CiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3Roeyd9fSd9eyctPid9ID0gMC4xICogU1RST05HICsgMC45ICogTk9NSU5BTDsKICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGh7J1J9J317Jy0+J30gPSAwLjEgKiBTVFJPTkcgKyAwLjkgKiBOT01JTkFMOwoKICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGh7JykpJ317J1tbJ30gPSAwLjIgKiBTVFJPTkcgKyAwLjggKiBOT01JTkFMOwogICAgICAgICRiaW5hcnlfYm9uZF9zdHJlbmd0aHsnfSknfXsnW1snfSA9IDAuMiAqIFNUUk9ORyArIDAuOCAqIE5PTUlOQUw7CiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3RoeycpKSd9eyd7Wyd9ID0gMC4yICogU1RST05HICsgMC44ICogTk9NSU5BTDsKICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGh7J30pJ317J3tbJ30gPSAwLjIgKiBTVFJPTkcgKyAwLjggKiBOT01JTkFMOwoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBCaW5hcnkgTk9fQlJFQUsgcnVsZXMKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICMgdXNlIHN0cmljdCByZXF1aXJlcyB0aGF0IGJhcmUgd29yZCBhbmQgPT4gbm90IGJlIHNlcGFyYXRlZAogICAgICAgICRiaW5hcnlfYm9uZF9zdHJlbmd0aHsnQyd9eyc9Pid9ID0gTk9fQlJFQUs7CiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3RoeydVJ317Jz0+J30gPSBOT19CUkVBSzsKCiAgICAgICAgIyBOZXZlciBicmVhayBiZXR3ZWVuIGEgYmFyZXdvcmQgYW5kIGEgZm9sbG93aW5nIHBhcmVuIGJlY2F1c2UKICAgICAgICAjIHBlcmwgbWF5IGdpdmUgYW4gZXJyb3IuICBGb3IgZXhhbXBsZSwgaWYgYSBicmVhayBpcyBwbGFjZWQKICAgICAgICAjIGJldHdlZW4gJ3RvX2ZpbGVoYW5kbGUnIGFuZCBpdHMgJygnIHRoZSBmb2xsb3dpbmcgbGluZSB3aWxsCiAgICAgICAgIyBnaXZlIGEgc3ludGF4IGVycm9yIFtDYXJwLnBtXTogbXkoICRubykgPWZpbGVubygKICAgICAgICAjIHRvX2ZpbGVoYW5kbGUoICRpbikpIDsKICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGh7J0MnfXsnKCgnfSA9IE5PX0JSRUFLOwogICAgICAgICRiaW5hcnlfYm9uZF9zdHJlbmd0aHsnQyd9eyd7KCd9ID0gTk9fQlJFQUs7CiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3RoeydVJ317JygoJ30gPSBOT19CUkVBSzsKICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGh7J1UnfXsneygnfSA9IE5PX0JSRUFLOwoKICAgICAgICAjIHVzZSBzdHJpY3QgcmVxdWlyZXMgdGhhdCBiYXJlIHdvcmQgd2l0aGluIGJyYWNlcyBub3Qgc3RhcnQgbmV3CiAgICAgICAgIyBsaW5lCiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3RoeydMeyd9eyd3J30gPSBOT19CUkVBSzsKCiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3Roeyd3J317J1J9J30gPSBOT19CUkVBSzsKCiAgICAgICAgIyBUaGUgZm9sbG93aW5nIHR3byBydWxlcyBwcmV2ZW50IGEgc3ludGF4IGVycm9yIGNhdXNlZCBieSBicmVha2luZyB1cAogICAgICAgICMgYSBjb25zdHJ1Y3Rpb24gbGlrZSAney15fScuICBUaGUgJy0nIHF1b3RlcyB0aGUgJ3knIGFuZCBwcmV2ZW50cwogICAgICAgICMgaXQgZnJvbSBiZWluZyB0YWtlbiBhcyBhIHRyYW5zbGl0ZXJhdGlvbi4gV2UgaGF2ZSB0byBrZWVwCiAgICAgICAgIyB0b2tlbiB0eXBlcyAnTCBtIHcnIHRvZ2V0aGVyIHRvIHByZXZlbnQgdGhpcyBlcnJvci4KICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGh7J0x7J317J20nfSAgICAgICAgPSBOT19CUkVBSzsKICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGhfbm9zcGFjZXsnbSd9eyd3J30gPSBOT19CUkVBSzsKCiAgICAgICAgIyBrZWVwICdiYXJld29yZC0nIHRvZ2V0aGVyLCBidXQgb25seSBpZiB0aGVyZSBpcyBubyBzcGFjZSBiZXR3ZWVuCiAgICAgICAgIyB0aGUgd29yZCBhbmQgZGFzaC4gRG8gbm90IGtlZXAgdG9nZXRoZXIgaWYgdGhlcmUgaXMgYSBzcGFjZS4KICAgICAgICAjIGV4YW1wbGUgJ3VzZSBwZXJsNi1hbHBoYScKICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGhfbm9zcGFjZXsndyd9eydtJ30gPSBOT19CUkVBSzsKCiAgICAgICAgIyB1c2Ugc3RyaWN0IHJlcXVpcmVzIHRoYXQgYmFyZSB3b3JkIGFuZCA9PiBub3QgYmUgc2VwYXJhdGVkCiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3Roeyd3J317Jz0+J30gPSBOT19CUkVBSzsKCiAgICAgICAgIyB1c2Ugc3RyaWN0IGRvZXMgbm90IGFsbG93IHNlcGFyYXRpbmcgdHlwZSBpbmZvIGZyb20gdHJhaWxpbmcgeyB9CiAgICAgICAgIyB0ZXN0ZmlsZSBpcyByZWFkbWFpbC5wbAogICAgICAgICRiaW5hcnlfYm9uZF9zdHJlbmd0aHsndCd9eydMeyd9ID0gTk9fQlJFQUs7CiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3RoeydpJ317J0x7J30gPSBOT19CUkVBSzsKCiAgICAgICAgIyBBcyBhIGRlZmVuc2l2ZSBtZWFzdXJlLCBkbyBub3QgYnJlYWsgYmV0d2VlbiBhICcoJyBhbmQgYQogICAgICAgICMgZmlsZWhhbmRsZS4gIEluIHNvbWUgY2FzZXMsIHRoaXMgY2FuIGNhdXNlIGFuIGVycm9yLiAgRm9yCiAgICAgICAgIyBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHByb2dyYW0gd29ya3M6CiAgICAgICAgIyAgICBteSAkbXNnPSJoaSFcbiI7CiAgICAgICAgIyAgICBwcmludAogICAgICAgICMgICAgKCBTVERPVVQKICAgICAgICAjICAgICRtc2cKICAgICAgICAjICAgICk7CiAgICAgICAgIwogICAgICAgICMgQnV0IHRoaXMgcHJvZ3JhbSBmYWlsczoKICAgICAgICAjICAgIG15ICRtc2c9ImhpIVxuIjsKICAgICAgICAjICAgIHByaW50CiAgICAgICAgIyAgICAoCiAgICAgICAgIyAgICBTVERPVVQKICAgICAgICAjICAgICRtc2cKICAgICAgICAjICAgICk7CiAgICAgICAgIwogICAgICAgICMgVGhpcyBpcyBub3JtYWxseSBvbmx5IGEgcHJvYmxlbSB3aXRoIHRoZSAnZXh0cnVkZScgb3B0aW9uCiAgICAgICAgJGJpbmFyeV9ib25kX3N0cmVuZ3RoeycoKCd9eydZJ30gPSBOT19CUkVBSzsKICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGh7J3soJ317J1knfSA9IE5PX0JSRUFLOwoKICAgICAgICAjIG5ldmVyIGJyZWFrIGJldHdlZW4gc3ViIG5hbWUgYW5kIG9wZW5pbmcgcGFyZW4KICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGh7J3cnfXsnKCgnfSA9IE5PX0JSRUFLOwogICAgICAgICRiaW5hcnlfYm9uZF9zdHJlbmd0aHsndyd9eyd7KCd9ID0gTk9fQlJFQUs7CgogICAgICAgICMga2VlcCAnfScgdG9nZXRoZXIgd2l0aCAnOycKICAgICAgICAkYmluYXJ5X2JvbmRfc3RyZW5ndGh7J319J317JzsnfSA9IE5PX0JSRUFLOwoKICAgICAgICAjIEJyZWFraW5nIGJlZm9yZSBhICsrIGNhbiBjYXVzZSBwZXJsIHRvIGd1ZXNzIHdyb25nLiBGb3IKICAgICAgICAjIGV4YW1wbGUgdGhlIGZvbGxvd2luZyBsaW5lIHdpbGwgY2F1c2UgYSBzeW50YXggZXJyb3IKICAgICAgICAjIHdpdGggLWV4dHJ1ZGUgaWYgd2UgYnJlYWsgYmV0d2VlbiAnJGknIGFuZCAnKysnIFtmaXhzdHlsZTJdCiAgICAgICAgIyAgIHByaW50KCAoICRpKysgJiAxICkgPyAkXyA6ICggJGNoYW5nZXskX30gfHwgJF8gKSApOwogICAgICAgICRub2JyZWFrX2xoc3snKysnfSA9IE5PX0JSRUFLOwoKICAgICAgICAjIERvIG5vdCBicmVhayBiZWZvcmUgYSBwb3NzaWJsZSBmaWxlIGhhbmRsZQogICAgICAgICRub2JyZWFrX2xoc3snWid9ID0gTk9fQlJFQUs7CgogICAgICAgICMgdXNlIHN0cmljdCBoYXRlcyBiYXJlIHdvcmRzIG9uIGFueSBuZXcgbGluZS4gIEZvcgogICAgICAgICMgZXhhbXBsZSwgYSBicmVhayBiZWZvcmUgdGhlIHVuZGVyc2NvcmUgaGVyZSBwcm92b2tlcyB0aGUKICAgICAgICAjIHdyYXRoIG9mIHVzZSBzdHJpY3Q6CiAgICAgICAgIyBpZiAoIC1yICRmbiAmJiAoIC1zIF8gfHwgJEFsbG93WmVyb0ZpbGVzaXplKSkgewogICAgICAgICRub2JyZWFrX3Joc3snRid9ICAgICAgPSBOT19CUkVBSzsKICAgICAgICAkbm9icmVha19yaHN7J0NPUkU6Oid9ID0gTk9fQlJFQUs7CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIEJvbmQgU3RyZW5ndGggQkVHSU4gU2VjdGlvbiAzLgogICAgICAgICMgRGVmaW5lIHRhYmxlcyBhbmQgdmFsdWVzIGZvciBhcHBseWluZyBhIHNtYWxsIGJpYXMgdG8gdGhlIGFib3ZlCiAgICAgICAgIyB2YWx1ZXMuCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgQWRkaW5nIGEgc21hbGwgJ2JpYXMnIHRvIHN0cmVuZ3RocyBpcyBhIHNpbXBsZSB3YXkgdG8gbWFrZSBhIGxpbmUKICAgICAgICAjIGJyZWFrIGF0IHRoZSBmaXJzdCBvZiBhIHNlcXVlbmNlIG9mIGlkZW50aWNhbCB0ZXJtcy4gIEZvcgogICAgICAgICMgZXhhbXBsZSwgdG8gZm9yY2UgbG9uZyBzdHJpbmcgb2YgY29uZGl0aW9uYWwgb3BlcmF0b3JzIHRvIGJyZWFrCiAgICAgICAgIyB3aXRoIGVhY2ggbGluZSBlbmRpbmcgaW4gYSAnOicsIHdlIGNhbiBhZGQgYSBzbWFsbCBudW1iZXIgdG8gdGhlCiAgICAgICAgIyBib25kIHN0cmVuZ3RoIG9mIGVhY2ggJzonIChjb2xvbi50KQogICAgICAgIEBiaWFzX3Rva2VucyA9IHF3KCA6ICYmIHx8IGYgYW5kIG9yIC4gKTsgICAgICAgIyB0b2tlbnMgd2hpY2ggZ2V0IGJpYXMKICAgICAgICAlYmlhc19oYXNoICAgPSBtYXAgeyAkXyA9PiAwIH0gQGJpYXNfdG9rZW5zOwogICAgICAgICRkZWx0YV9iaWFzICA9IDAuMDAwMTsgICAgIyBhIHZlcnkgc21hbGwgc3RyZW5ndGggbGV2ZWwKICAgICAgICByZXR1cm47CgogICAgfSAjIyBlbmQgc3ViIGluaXRpYWxpemVfYm9uZF9zdHJlbmd0aF9oYXNoZXMKCiAgICB1c2UgY29uc3RhbnQgREVCVUdfQk9ORCA9PiAwOwoKICAgIHN1YiBzZXRfYm9uZF9zdHJlbmd0aHMgewoKICAgICAgICBteSAoJHNlbGYpID0gQF87CgogICAgICAgICMgcGF0Y2gtaXRzIGFsd2F5cyBvayB0byBicmVhayBhdCBlbmQgb2YgbGluZQogICAgICAgICRub2JyZWFrX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dID0gMDsKCiAgICAgICAgbXkgJHJPcHRzX3Nob3J0X2NvbmNhdGVuYXRpb25faXRlbV9sZW5ndGggPQogICAgICAgICAgJHJPcHRzLT57J3Nob3J0LWNvbmNhdGVuYXRpb24taXRlbS1sZW5ndGgnfTsKCiAgICAgICAgIyB3ZSBzdGFydCBhIG5ldyBzZXQgb2YgYmlhcyB2YWx1ZXMgZm9yIGVhY2ggbGluZQogICAgICAgICViaWFzID0gJWJpYXNfaGFzaDsKCiAgICAgICAgbXkgJGNvZGVfYmlhcyA9IC0uMDE7ICAgICMgYmlhcyBmb3IgY2xvc2luZyBibG9jayBicmFjZXMKCiAgICAgICAgbXkgJHR5cGUgICAgICAgICA9ICdiJzsKICAgICAgICBteSAkdG9rZW4gICAgICAgID0gJyAnOwogICAgICAgIG15ICR0b2tlbl9sZW5ndGggPSAxOwogICAgICAgIG15ICRsYXN0X3R5cGU7CiAgICAgICAgbXkgJGxhc3Rfbm9uYmxhbmtfdHlwZSAgPSAkdHlwZTsKICAgICAgICBteSAkbGFzdF9ub25ibGFua190b2tlbiA9ICR0b2tlbjsKICAgICAgICBteSAkbGlzdF9zdHIgICAgICAgICAgICA9ICRsZWZ0X2JvbmRfc3RyZW5ndGh7Jz8nfTsKCiAgICAgICAgbXkgKCAkYmxvY2tfdHlwZSwgJGlfbmV4dCwgJGlfbmV4dF9ub25ibGFuaywgJG5leHRfbm9uYmxhbmtfdG9rZW4sCiAgICAgICAgICAgICRuZXh0X25vbmJsYW5rX3R5cGUsICRuZXh0X3Rva2VuLCAkbmV4dF90eXBlLCAkdG90YWxfbmVzdGluZ19kZXB0aCwKICAgICAgICApOwoKICAgICAgICAjIG1haW4gbG9vcCB0byBjb21wdXRlIGJvbmQgc3RyZW5ndGhzIGJldHdlZW4gZWFjaCBwYWlyIG9mIHRva2VucwogICAgICAgIGZvcmVhY2ggbXkgJGkgKCAwIC4uICRtYXhfaW5kZXhfdG9fZ28gKSB7CiAgICAgICAgICAgICRsYXN0X3R5cGUgPSAkdHlwZTsKICAgICAgICAgICAgaWYgKCAkdHlwZSBuZSAnYicgKSB7CiAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua190eXBlICA9ICR0eXBlOwogICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gPSAkdG9rZW47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHR5cGUgPSAkdHlwZXNfdG9fZ29bJGldOwoKICAgICAgICAgICAgIyBzdHJlbmd0aCBvbiBib3RoIHNpZGVzIG9mIGEgYmxhbmsgaXMgdGhlIHNhbWUKICAgICAgICAgICAgaWYgKCAkdHlwZSBlcSAnYicgJiYgJGxhc3RfdHlwZSBuZSAnYicgKSB7CiAgICAgICAgICAgICAgICAkYm9uZF9zdHJlbmd0aF90b19nb1skaV0gPSAkYm9uZF9zdHJlbmd0aF90b19nb1sgJGkgLSAxIF07CiAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdG9rZW4gICAgICAgICAgICAgICA9ICR0b2tlbnNfdG9fZ29bJGldOwogICAgICAgICAgICAkdG9rZW5fbGVuZ3RoICAgICAgICA9ICR0b2tlbl9sZW5ndGhzX3RvX2dvWyRpXTsKICAgICAgICAgICAgJGJsb2NrX3R5cGUgICAgICAgICAgPSAkYmxvY2tfdHlwZV90b19nb1skaV07CiAgICAgICAgICAgICRpX25leHQgICAgICAgICAgICAgID0gJGkgKyAxOwogICAgICAgICAgICAkbmV4dF90eXBlICAgICAgICAgICA9ICR0eXBlc190b19nb1skaV9uZXh0XTsKICAgICAgICAgICAgJG5leHRfdG9rZW4gICAgICAgICAgPSAkdG9rZW5zX3RvX2dvWyRpX25leHRdOwogICAgICAgICAgICAkdG90YWxfbmVzdGluZ19kZXB0aCA9ICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpX25leHRdOwogICAgICAgICAgICAkaV9uZXh0X25vbmJsYW5rICAgICA9ICggKCAkbmV4dF90eXBlIGVxICdiJyApID8gJGkgKyAyIDogJGkgKyAxICk7CiAgICAgICAgICAgICRuZXh0X25vbmJsYW5rX3R5cGUgID0gJHR5cGVzX3RvX2dvWyRpX25leHRfbm9uYmxhbmtdOwogICAgICAgICAgICAkbmV4dF9ub25ibGFua190b2tlbiA9ICR0b2tlbnNfdG9fZ29bJGlfbmV4dF9ub25ibGFua107CgogICAgICAgICAgICBteSAkc2Vxbm8gICAgICAgICAgICAgICA9ICR0eXBlX3NlcXVlbmNlX3RvX2dvWyRpXTsKICAgICAgICAgICAgbXkgJG5leHRfbm9uYmxhbmtfc2Vxbm8gPSAkdHlwZV9zZXF1ZW5jZV90b19nb1skaV9uZXh0X25vbmJsYW5rXTsKCiAgICAgICAgICAgICMgV2UgYXJlIGNvbXB1dGluZyB0aGUgc3RyZW5ndGggb2YgdGhlIGJvbmQgYmV0d2VlbiB0aGUgY3VycmVudAogICAgICAgICAgICAjIHRva2VuIGFuZCB0aGUgTkVYVCB0b2tlbi4KCiAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgIyBCb25kIFN0cmVuZ3RoIFNlY3Rpb24gMToKICAgICAgICAgICAgIyBGaXJzdCBBcHByb3hpbWF0aW9uLgogICAgICAgICAgICAjIFVzZSBtaW5pbXVtIG9mIGluZGl2aWR1YWwgbGVmdCBhbmQgcmlnaHQgdGFidWxhdGVkIGJvbmQKICAgICAgICAgICAgIyBzdHJlbmd0aHMuCiAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgbXkgJGJzciA9ICRyaWdodF9ib25kX3N0cmVuZ3RoeyR0eXBlfTsKICAgICAgICAgICAgbXkgJGJzbCA9ICRsZWZ0X2JvbmRfc3RyZW5ndGh7JG5leHRfbm9uYmxhbmtfdHlwZX07CgogICAgICAgICAgICAjIGRlZmluZSByaWdodCBib25kIHN0cmVuZ3RocyBvZiBjZXJ0YWluIGtleXdvcmRzCiAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJ2snICYmIGRlZmluZWQoICRyaWdodF9ib25kX3N0cmVuZ3RoeyR0b2tlbn0gKSApIHsKICAgICAgICAgICAgICAgICRic3IgPSAkcmlnaHRfYm9uZF9zdHJlbmd0aHskdG9rZW59OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHRva2VuIGVxICduZScgb3IgJHRva2VuIGVxICdlcScgKSB7CiAgICAgICAgICAgICAgICAkYnNyID0gTk9NSU5BTDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZXQgdGVybWluYWwgYm9uZCBzdHJlbmd0aCB0byB0aGUgbm9taW5hbCB2YWx1ZQogICAgICAgICAgICAjIHRoaXMgd2lsbCBjYXVzZSBnb29kIHByZWNlZGluZyBicmVha3MgdG8gYmUgcmV0YWluZWQKICAgICAgICAgICAgaWYgKCAkaV9uZXh0X25vbmJsYW5rID4gJG1heF9pbmRleF90b19nbyApIHsKICAgICAgICAgICAgICAgICRic2wgPSBOT01JTkFMOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGRlZmluZSByaWdodCBib25kIHN0cmVuZ3RocyBvZiBjZXJ0YWluIGtleXdvcmRzCiAgICAgICAgICAgIGlmICggJG5leHRfbm9uYmxhbmtfdHlwZSBlcSAnaycKICAgICAgICAgICAgICAgICYmIGRlZmluZWQoICRsZWZ0X2JvbmRfc3RyZW5ndGh7JG5leHRfbm9uYmxhbmtfdG9rZW59ICkgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkYnNsID0gJGxlZnRfYm9uZF9zdHJlbmd0aHskbmV4dF9ub25ibGFua190b2tlbn07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCRuZXh0X25vbmJsYW5rX3Rva2VuIGVxICduZScKICAgICAgICAgICAgICAgIG9yICRuZXh0X25vbmJsYW5rX3Rva2VuIGVxICdlcScgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkYnNsID0gTk9NSU5BTDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRpc19sdF9ndF9sZV9nZXskbmV4dF9ub25ibGFua190b2tlbn0gKSB7CiAgICAgICAgICAgICAgICAkYnNsID0gMC45ICogTk9NSU5BTCArIDAuMSAqIFNUUk9ORzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBVc2UgdGhlIG1pbmltdW0gb2YgdGhlIGxlZnQgYW5kIHJpZ2h0IHN0cmVuZ3Rocy4gIE5vdGU6IGl0IG1pZ2h0CiAgICAgICAgICAgICMgc2VlbSB0aGF0IHdlIHdvdWxkIHdhbnQgdG8ga2VlcCBhIE5PX0JSRUFLIGlmIGVpdGhlciB0b2tlbiBoYXMKICAgICAgICAgICAgIyB0aGlzIHZhbHVlLiAgVGhpcyBkaWRuJ3Qgd29yaywgZm9yIGV4YW1wbGUgYmVjYXVzZSBpbiBhbiBhcnJvdwogICAgICAgICAgICAjIGxpc3QsIGl0IHByZXZlbnRzIHRoZSBjb21tYSBmcm9tIHNlcGFyYXRpbmcgZnJvbSB0aGUgZm9sbG93aW5nCiAgICAgICAgICAgICMgYmFyZSB3b3JkICh3aGljaCBpcyBwcm9iYWJseSBxdW90ZWQgYnkgaXRzIGFycm93KS4gIFNvIG5lY2Vzc2FyeQogICAgICAgICAgICAjIE5PX0JSRUFLJ3MgaGF2ZSB0byBiZSBoYW5kbGVkIGFzIHNwZWNpYWwgY2FzZXMgaW4gdGhlIGZpbmFsCiAgICAgICAgICAgICMgc2VjdGlvbi4KICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCgkYnNyKSApIHsgJGJzciA9IFZFUllfU1RST05HIH0KICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCgkYnNsKSApIHsgJGJzbCA9IFZFUllfU1RST05HIH0KICAgICAgICAgICAgbXkgJGJvbmRfc3RyICAgPSAoICRic3IgPCAkYnNsICkgPyAkYnNyIDogJGJzbDsKICAgICAgICAgICAgbXkgJGJvbmRfc3RyXzEgPSAkYm9uZF9zdHI7CgogICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICMgQm9uZCBTdHJlbmd0aCBTZWN0aW9uIDI6CiAgICAgICAgICAgICMgQXBwbHkgaGFyZHdpcmVkIHJ1bGVzLi4KICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgICAgICAgIyBQYXRjaCB0byBwdXQgdGVybWluYWwgb3IgY2xhdXNlcyBvbiBhIG5ldyBsaW5lOiBXZWFrZW4gdGhlIGJvbmQKICAgICAgICAgICAgIyBhdCBhbiB8fCBmb2xsb3dlZCBieSBkaWUgb3Igc2ltaWxhciBrZXl3b3JkIHRvIG1ha2UgdGhlIHRlcm1pbmFsCiAgICAgICAgICAgICMgb3IgY2xhdXNlIGZhbGwgb24gYSBuZXcgbGluZSwgbGlrZSB0aGlzOgogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICBteSAkY2xhc3MgPSBzaGlmdAogICAgICAgICAgICAjICAgICB8fCBkaWUgIkNhbm5vdCBhZGQgYnJvYWRjYXN0OiAgTm8gY2xhc3MgaWRlbnRpZmllciBmb3VuZCI7CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyBPdGhlcndpc2UgdGhlIGJyZWFrIHdpbGwgYmUgYXQgdGhlIHByZXZpb3VzICc9JyBzaW5jZSB0aGUgfHwgYW5kCiAgICAgICAgICAgICMgPSBoYXZlIHRoZSBzYW1lIHN0YXJ0aW5nIHN0cmVuZ3RoIGFuZCB0aGUgb3IgaXMgYmlhc2VkLCBsaWtlCiAgICAgICAgICAgICMgdGhpczoKICAgICAgICAgICAgIwogICAgICAgICAgICAjIG15ICRjbGFzcyA9CiAgICAgICAgICAgICMgICBzaGlmdCB8fCBkaWUgIkNhbm5vdCBhZGQgYnJvYWRjYXN0OiAgTm8gY2xhc3MgaWRlbnRpZmllciBmb3VuZCI7CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyBJbiBhbnkgY2FzZSBpZiB0aGUgdXNlciBwbGFjZXMgYSBicmVhayBhdCBlaXRoZXIgdGhlID0gb3IgdGhlIHx8CiAgICAgICAgICAgICMgaXQgc2hvdWxkIHJlbWFpbiB0aGVyZS4KICAgICAgICAgICAgaWYgKCAkdHlwZSBlcSAnfHwnIHx8ICR0eXBlIGVxICdrJyAmJiAkdG9rZW4gZXEgJ29yJyApIHsKICAgICAgICAgICAgICAgIGlmICggJG5leHRfbm9uYmxhbmtfdG9rZW4gPX4gL14oZGllfGNvbmZlc3N8Y3JvYWt8d2FybikkLyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICR3YW50X2JyZWFrX2JlZm9yZXskdG9rZW59ICYmICRpID4gMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGJvbmRfc3RyZW5ndGhfdG9fZ29bICRpIC0gMSBdIC09ICRkZWx0YV9iaWFzOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBrZWVwIGJvbmQgc3RyZW5ndGggb2YgYSB0b2tlbiBhbmQgaXRzIGZvbGxvd2luZyBibGFuawogICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBzYW1lCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJHR5cGVzX3RvX2dvWyAkaSAtIDEgXSBlcSAnYicgJiYgJGkgPiAyICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJvbmRfc3RyZW5ndGhfdG9fZ29bICRpIC0gMiBdIC09ICRkZWx0YV9iaWFzOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkYm9uZF9zdHIgLT0gJGRlbHRhX2JpYXM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdvb2QgdG8gYnJlYWsgYWZ0ZXIgZW5kIG9mIGNvZGUgYmxvY2tzCiAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJ30nICYmICRibG9ja190eXBlICYmICRuZXh0X25vbmJsYW5rX3R5cGUgbmUgJzsnICkgewoKICAgICAgICAgICAgICAgICRib25kX3N0ciA9IDAuNSAqIFdFQUsgKyAwLjUgKiBWRVJZX1dFQUsgKyAkY29kZV9iaWFzOwogICAgICAgICAgICAgICAgJGNvZGVfYmlhcyArPSAkZGVsdGFfYmlhczsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkdHlwZSBlcSAnaycgKSB7CgogICAgICAgICAgICAgICAgIyBhbGxvdyBjZXJ0YWluIGNvbnRyb2wga2V5d29yZHMgdG8gc3RhbmQgb3V0CiAgICAgICAgICAgICAgICBpZiAoICAgJG5leHRfbm9uYmxhbmtfdHlwZSBlcSAnaycKICAgICAgICAgICAgICAgICAgICAmJiAkaXNfbGFzdF9uZXh0X3JlZG9fcmV0dXJueyR0b2tlbn0gKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRib25kX3N0ciA9IDAuNDUgKiBXRUFLICsgMC41NSAqIFZFUllfV0VBSzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIERvbid0IGJyZWFrIGFmdGVyIGtleXdvcmQgbXkuICBUaGlzIGlzIGEgcXVpY2sgZml4IGZvciBhCiAgICAgICAgICAgICAgICAjIHJhcmUgcHJvYmxlbSB3aXRoIHBlcmwuIEFuIGV4YW1wbGUgaXMgdGhpcyBsaW5lIGZyb20gZmlsZQogICAgICAgICAgICAgICAgIyBDb250YWluZXIucG06CgogICAgICAgICAgICAgICAgIyBmb3JlYWNoIG15ICRxdWVzdGlvbiggRGViaWFuOjpEZWJDb25mOjpDb25maWdEYjo6Z2V0dHJlZSgKICAgICAgICAgICAgICAgICMgJHRoaXMtPnsncXVlc3Rpb24nfSApICkKCiAgICAgICAgICAgICAgICBpZiAoICR0b2tlbiBlcSAnbXknICkgewogICAgICAgICAgICAgICAgICAgICRib25kX3N0ciA9IE5PX0JSRUFLOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnb29kIHRvIGJyZWFrIGJlZm9yZSAnaWYnLCAndW5sZXNzJywgZXRjCiAgICAgICAgICAgIGlmICggJGlzX2lmX2JyYWNlX2ZvbGxvd2VyeyRuZXh0X25vbmJsYW5rX3Rva2VufSApIHsKICAgICAgICAgICAgICAgICRib25kX3N0ciA9IFZFUllfV0VBSzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkbmV4dF9ub25ibGFua190eXBlIGVxICdrJyAmJiAkdHlwZSBuZSAnQ09SRTo6JyApIHsKCiAgICAgICAgICAgICAgICAjIEZJWE1FOiBuZWVkcyBtb3JlIHRlc3RpbmcKICAgICAgICAgICAgICAgIGlmICggJGlzX2tleXdvcmRfcmV0dXJuaW5nX2xpc3R7JG5leHRfbm9uYmxhbmtfdG9rZW59ICkgewogICAgICAgICAgICAgICAgICAgICRib25kX3N0ciA9ICRsaXN0X3N0ciBpZiAoICRib25kX3N0ciA+ICRsaXN0X3N0ciApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMga2V5d29yZHMgbGlrZSAndW5sZXNzJywgJ2lmJywgZXRjLCB3aXRoaW4gc3RhdGVtZW50cwogICAgICAgICAgICAgICAgIyBtYWtlIGdvb2QgYnJlYWtzCiAgICAgICAgICAgICAgICBpZiAoICRpc19nb29kX2tleXdvcmRfYnJlYWtwb2ludHskbmV4dF9ub25ibGFua190b2tlbn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJGJvbmRfc3RyID0gVkVSWV9XRUFLIC8gMS4wNTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB0cnkgbm90IHRvIGJyZWFrIGJlZm9yZSBhIGNvbW1hLWFycm93CiAgICAgICAgICAgIGVsc2lmICggJG5leHRfbm9uYmxhbmtfdHlwZSBlcSAnPT4nICkgewogICAgICAgICAgICAgICAgaWYgKCAkYm9uZF9zdHIgPCBTVFJPTkcgKSB7ICRib25kX3N0ciA9IFNUUk9ORyB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgIyBBZGRpdGlvbmFsIGhhcmR3aXJlZCBOT0JSRUFLIHJ1bGVzCiAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgICAgICMgbWFwMS50IC0tIGNvcnJlY3QgZm9yIGEgcXVpcmsgaW4gcGVybAogICAgICAgICAgICBpZiAoICAgJHRva2VuIGVxICcoJwogICAgICAgICAgICAgICAgJiYgJG5leHRfbm9uYmxhbmtfdHlwZSBlcSAnaScKICAgICAgICAgICAgICAgICYmICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ2snCiAgICAgICAgICAgICAgICAmJiAkaXNfc29ydF9tYXBfZ3JlcHskbGFzdF9ub25ibGFua190b2tlbn0gKQoKICAgICAgICAgICAgICAjICAgICAvXihzb3J0fG1hcHxncmVwKSQvICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJGJvbmRfc3RyID0gTk9fQlJFQUs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZXh0cnVkZS50OiBkbyBub3QgYnJlYWsgYmVmb3JlIHBhcmVuIGF0OgogICAgICAgICAgICAjICAgIC1sIHBpZF9maWxlbmFtZSgKICAgICAgICAgICAgaWYgKCAkbGFzdF9ub25ibGFua190eXBlIGVxICdGJyAmJiAkbmV4dF9ub25ibGFua190b2tlbiBlcSAnKCcgKSB7CiAgICAgICAgICAgICAgICAkYm9uZF9zdHIgPSBOT19CUkVBSzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBpbiBvbGRlciB2ZXJzaW9uIG9mIHBlcmwsIHVzZSBzdHJpY3QgY2FuIGNhdXNlIHByb2JsZW1zIHdpdGgKICAgICAgICAgICAgIyBicmVha3MgYmVmb3JlIGJhcmUgd29yZHMgZm9sbG93aW5nIG9wZW5pbmcgcGFyZW5zLiAgRm9yIGV4YW1wbGUsCiAgICAgICAgICAgICMgdGhpcyB3aWxsIGZhaWwgdW5kZXIgb2xkZXIgdmVyc2lvbnMgaWYgYSBicmVhayBpcyBtYWRlIGJldHdlZW4KICAgICAgICAgICAgIyAnKCcgYW5kICdNQUlMJzogdXNlIHN0cmljdDsgb3BlbiggTUFJTCwgImEgbG9uZyBmaWxlbmFtZSBvcgogICAgICAgICAgICAjIGNvbW1hbmQiKTsgY2xvc2UgTUFJTDsKICAgICAgICAgICAgaWYgKCAkdHlwZSBlcSAneycgKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkdG9rZW4gZXEgJygnICYmICRuZXh0X25vbmJsYW5rX3R5cGUgZXEgJ3cnICkgewoKICAgICAgICAgICAgICAgICAgICAjIGJ1dCBpdCdzIGZpbmUgdG8gYnJlYWsgaWYgdGhlIHdvcmQgaXMgZm9sbG93ZWQgYnkgYSAnPT4nCiAgICAgICAgICAgICAgICAgICAgIyBvciBpZiBpdCBpcyBvYnZpb3VzbHkgYSBzdWIgY2FsbAogICAgICAgICAgICAgICAgICAgIG15ICRpX25leHRfbmV4dF9ub25ibGFuayA9ICRpX25leHRfbm9uYmxhbmsgKyAxOwogICAgICAgICAgICAgICAgICAgIG15ICRuZXh0X25leHRfdHlwZSA9ICR0eXBlc190b19nb1skaV9uZXh0X25leHRfbm9uYmxhbmtdOwogICAgICAgICAgICAgICAgICAgIGlmICggICAkbmV4dF9uZXh0X3R5cGUgZXEgJ2InCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRpX25leHRfbm9uYmxhbmsgPCAkbWF4X2luZGV4X3RvX2dvICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpX25leHRfbmV4dF9ub25ibGFuaysrOwogICAgICAgICAgICAgICAgICAgICAgICAkbmV4dF9uZXh0X3R5cGUgPSAkdHlwZXNfdG9fZ29bJGlfbmV4dF9uZXh0X25vbmJsYW5rXTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgV2UnbGwgY2hlY2sgZm9yIGFuIG9sZCBicmVha3BvaW50IGFuZCBrZWVwIGEgbGVhZGluZwogICAgICAgICAgICAgICAgICAgICMgYmFyZXdvcmQgaWYgaXQgd2FzIHRoYXQgd2F5IGluIHRoZSBpbnB1dCBmaWxlLgogICAgICAgICAgICAgICAgICAgICMgUHJlc3VtYWJseSBpdCB3YXMgb2sgdGhhdCB3YXkuICBGb3IgZXhhbXBsZSwgdGhlCiAgICAgICAgICAgICAgICAgICAgIyBmb2xsb3dpbmcgd291bGQgcmVtYWluIHVuY2hhbmdlZDoKICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBAbW9udGhzID0gKAogICAgICAgICAgICAgICAgICAgICMgICBKYW51YXJ5LCAgIEZlYnJ1YXJ5LCBNYXJjaCwgICAgQXByaWwsCiAgICAgICAgICAgICAgICAgICAgIyAgIE1heSwgICAgICAgSnVuZSwgICAgIEp1bHksICAgICBBdWd1c3QsCiAgICAgICAgICAgICAgICAgICAgIyAgIFNlcHRlbWJlciwgT2N0b2JlciwgIE5vdmVtYmVyLCBEZWNlbWJlciwKICAgICAgICAgICAgICAgICAgICAjICk7CiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgVGhpcyBzaG91bGQgYmUgc3VmZmljaWVudDoKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICEkb2xkX2JyZWFrcG9pbnRfdG9fZ29bJGldCiAgICAgICAgICAgICAgICAgICAgICAgICYmICggICAkbmV4dF9uZXh0X3R5cGUgZXEgJywnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkbmV4dF9uZXh0X3R5cGUgZXEgJ30nICkKICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRib25kX3N0ciA9IE5PX0JSRUFLOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBEbyBub3QgYnJlYWsgYmV0d2VlbiBhIHBvc3NpYmxlIGZpbGVoYW5kbGUgYW5kIGEgPyBvciAvIGFuZCBkbwogICAgICAgICAgICAjIG5vdCBpbnRyb2R1Y2UgYSBicmVhayBhZnRlciBpdCBpZiB0aGVyZSBpcyBubyBibGFuawogICAgICAgICAgICAjIChleHRydWRlLnQpCiAgICAgICAgICAgIGVsc2lmICggJHR5cGUgZXEgJ1onICkgewoKICAgICAgICAgICAgICAgICMgZG9uJ3QgYnJlYWsuLgogICAgICAgICAgICAgICAgaWYgKAoKICAgICAgICAgICAgICAgICAgICAjIGlmIHRoZXJlIGlzIG5vIGJsYW5rIGFuZCB3ZSBkbyBub3Qgd2FudCBvbmUuIEV4YW1wbGVzOgogICAgICAgICAgICAgICAgICAgICMgICAgcHJpbnQgJHgrKyAgICAjIGRvIG5vdCBicmVhayBhZnRlciAkeAogICAgICAgICAgICAgICAgICAgICMgICAgcHJpbnQgSFRNTCJIRUxMTyIgICAjIGJyZWFrIG9rIGFmdGVyIEhUTUwKICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICRuZXh0X3R5cGUgbmUgJ2InCiAgICAgICAgICAgICAgICAgICAgICAgICYmIGRlZmluZWQoICR3YW50X2xlZnRfc3BhY2V7JG5leHRfdHlwZX0gKQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkd2FudF9sZWZ0X3NwYWNleyRuZXh0X3R5cGV9ID09IFdTX05PCiAgICAgICAgICAgICAgICAgICAgKQoKICAgICAgICAgICAgICAgICAgICAjIG9yIHdlIG1pZ2h0IGJlIGZvbGxvd2VkIGJ5IHRoZSBzdGFydCBvZiBhIHF1b3RlCiAgICAgICAgICAgICAgICAgICAgfHwgJG5leHRfbm9uYmxhbmtfdHlwZSA9fiAvXltcL1w/XSQvCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkYm9uZF9zdHIgPSBOT19CUkVBSzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBCcmVha2luZyBiZWZvcmUgYSA/IGJlZm9yZSBhIHF1b3RlIGNhbiBjYXVzZSB0cm91YmxlIGlmCiAgICAgICAgICAgICMgdGhleSBhcmUgbm90IHNlcGFyYXRlZCBieSBhIGJsYW5rLgogICAgICAgICAgICAjIEV4YW1wbGU6IGEgc3ludGF4IGVycm9yIG9jY3VycyBpZiB5b3UgYnJlYWsgYmVmb3JlIHRoZSA/IGhlcmUKICAgICAgICAgICAgIyAgbXkkbG9naWM9am9pbiRhbGw/JyAmJiAnOicgfHwgJyxAcmVnZXhwczsKICAgICAgICAgICAgIyBGcm9tOiBQcm9mZXNzaW9uYWxfUGVybF9Qcm9ncmFtbWluZ19Db2RlL211bHRpZmluZC5wbAogICAgICAgICAgICBpZiAoICRuZXh0X25vbmJsYW5rX3R5cGUgZXEgJz8nICkgewogICAgICAgICAgICAgICAgJGJvbmRfc3RyID0gTk9fQlJFQUsKICAgICAgICAgICAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bICRpX25leHRfbm9uYmxhbmsgKyAxIF0gZXEgJ1EnICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQnJlYWtpbmcgYmVmb3JlIGEgLiBmb2xsb3dlZCBieSBhIG51bWJlcgogICAgICAgICAgICAjIGNhbiBjYXVzZSB0cm91YmxlIGlmIHRoZXJlIGlzIG5vIGludGVydmVuaW5nIHNwYWNlCiAgICAgICAgICAgICMgRXhhbXBsZTogYSBzeW50YXggZXJyb3Igb2NjdXJzIGlmIHlvdSBicmVhayBiZWZvcmUgdGhlIC4yIGhlcmUKICAgICAgICAgICAgIyAgJHN0ciAuPSBwYWNrKCRlbmRpYW4uMiwgZW5zdXJyb2dhdGUoJG9yZCkpOwogICAgICAgICAgICAjIEZyb206IHBlcmw1OC9Vbmljb2RlLnBtCiAgICAgICAgICAgIGVsc2lmICggJG5leHRfbm9uYmxhbmtfdHlwZSBlcSAnLicgKSB7CiAgICAgICAgICAgICAgICAkYm9uZF9zdHIgPSBOT19CUkVBSwogICAgICAgICAgICAgICAgICBpZiAoICR0eXBlc190b19nb1sgJGlfbmV4dF9ub25ibGFuayArIDEgXSBlcSAnbicgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJGJvbmRfc3RyXzIgPSAkYm9uZF9zdHI7CgogICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICMgRW5kIG9mIGhhcmR3aXJlZCBydWxlcwogICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICMgQm9uZCBTdHJlbmd0aCBTZWN0aW9uIDM6CiAgICAgICAgICAgICMgQXBwbHkgdGFibGUgcnVsZXMuIFRoZXNlIGhhdmUgcHJpb3JpdHkgb3ZlciB0aGUgYWJvdmUKICAgICAgICAgICAgIyBoYXJkd2lyZWQgcnVsZXMuCiAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgICAgIG15ICR0YWJ1bGF0ZWRfYm9uZF9zdHI7CiAgICAgICAgICAgIG15ICRsdHlwZSA9ICR0eXBlOwogICAgICAgICAgICBteSAkcnR5cGUgPSAkbmV4dF9ub25ibGFua190eXBlOwogICAgICAgICAgICBpZiAoICRzZXFubyAmJiAkaXNfY29udGFpbmVyX3Rva2VueyR0b2tlbn0gKSB7CiAgICAgICAgICAgICAgICAkbHR5cGUgPSAkdHlwZSAuICR0b2tlbjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAgICRuZXh0X25vbmJsYW5rX3NlcW5vCiAgICAgICAgICAgICAgICAmJiAkaXNfY29udGFpbmVyX3Rva2VueyRuZXh0X25vbmJsYW5rX3Rva2VufSApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRydHlwZSA9ICRuZXh0X25vbmJsYW5rX3R5cGUgLiAkbmV4dF9ub25ibGFua190b2tlbjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhcHBseSBiaW5hcnkgcnVsZXMgd2hpY2ggYXBwbHkgcmVnYXJkbGVzcyBvZiBzcGFjZSBiZXR3ZWVuIHRva2VucwogICAgICAgICAgICBpZiAoICRiaW5hcnlfYm9uZF9zdHJlbmd0aHskbHR5cGV9eyRydHlwZX0gKSB7CiAgICAgICAgICAgICAgICAkYm9uZF9zdHIgICAgICAgICAgID0gJGJpbmFyeV9ib25kX3N0cmVuZ3RoeyRsdHlwZX17JHJ0eXBlfTsKICAgICAgICAgICAgICAgICR0YWJ1bGF0ZWRfYm9uZF9zdHIgPSAkYm9uZF9zdHI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYXBwbHkgYmluYXJ5IHJ1bGVzIHdoaWNoIGFwcGx5IG9ubHkgaWYgbm8gc3BhY2UgYmV0d2VlbiB0b2tlbnMKICAgICAgICAgICAgaWYgKCAkYmluYXJ5X2JvbmRfc3RyZW5ndGhfbm9zcGFjZXskbHR5cGV9eyRuZXh0X3R5cGV9ICkgewogICAgICAgICAgICAgICAgJGJvbmRfc3RyICAgICAgICAgICA9ICRiaW5hcnlfYm9uZF9zdHJlbmd0aHskbHR5cGV9eyRuZXh0X3R5cGV9OwogICAgICAgICAgICAgICAgJHRhYnVsYXRlZF9ib25kX3N0ciA9ICRib25kX3N0cjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkbm9icmVha19yaHN7JGx0eXBlfSB8fCAkbm9icmVha19saHN7JHJ0eXBlfSApIHsKICAgICAgICAgICAgICAgICRib25kX3N0ciAgICAgICAgICAgPSBOT19CUkVBSzsKICAgICAgICAgICAgICAgICR0YWJ1bGF0ZWRfYm9uZF9zdHIgPSAkYm9uZF9zdHI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbXkgJGJvbmRfc3RyXzMgPSAkYm9uZF9zdHI7CgogICAgICAgICAgICAjIElmIHRoZSBoYXJkd2lyZWQgcnVsZXMgY29uZmxpY3Qgd2l0aCB0aGUgdGFidWxhdGVkIGJvbmQKICAgICAgICAgICAgIyBzdHJlbmd0aCB0aGVuIHRoZXJlIGlzIGFuIGluY29uc2lzdGVuY3kgdGhhdCBzaG91bGQgYmUgZml4ZWQKICAgICAgICAgICAgREVCVUdfQk9ORAogICAgICAgICAgICAgICYmICR0YWJ1bGF0ZWRfYm9uZF9zdHIKICAgICAgICAgICAgICAmJiAkYm9uZF9zdHJfMQogICAgICAgICAgICAgICYmICRib25kX3N0cl8xICE9ICRib25kX3N0cl8yCiAgICAgICAgICAgICAgJiYgJGJvbmRfc3RyXzIgIT0gJHRhYnVsYXRlZF9ib25kX3N0cgogICAgICAgICAgICAgICYmIGRvIHsKICAgICAgICAgICAgICAgIHByaW50IFNUREVSUgoiQk9ORF9UQUJMRVM6IGx0eXBlPSRsdHlwZSBydHlwZT0kcnR5cGUgJGJvbmRfc3RyXzEtPiRib25kX3N0cl8yLT4kYm9uZF9zdHJfM1xuIjsKICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAjIEJvbmQgU3RyZW5ndGggU2VjdGlvbiA0OgogICAgICAgICAgICMgTW9kaWZ5IHN0cmVuZ3RocyBvZiBjZXJ0YWluIHRva2VucyB3aGljaCBvZnRlbiBvY2N1ciBpbiBzZXF1ZW5jZQogICAgICAgICAgICMgYnkgYWRkaW5nIGEgc21hbGwgYmlhcyB0byBlYWNoIG9uZSBpbiB0dXJuIHNvIHRoYXQgdGhlIGJyZWFrcwogICAgICAgICAgICMgb2NjdXIgZnJvbSBsZWZ0IHRvIHJpZ2h0LgogICAgICAgICAgICMKICAgICAgICAgICAjIE5vdGUgdGhhdCB3ZSBvbmx5IGNoYW5naW5nIHN0cmVuZ3RocyBieSBzbWFsbCBhbW91bnRzIGhlcmUsCiAgICAgICAgICAgIyBhbmQgdXN1YWxseSBpbmNyZWFzaW5nLCBzbyB3ZSBzaG91bGQgbm90IGJlIGFsdGVyaW5nIGFueSBOT19CUkVBS3MuCiAgICAgICAgICAgIyBPdGhlciByb3V0aW5lcyB3aGljaCBjaGVjayBmb3IgTk9fQlJFQUtzIHdpbGwgdXNlIGEgdG9sZXJhbmNlCiAgICAgICAgICAgIyBvZiBvbmUgdG8gYXZvaWQgYW55IHByb2JsZW0uCiAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICAgICAjIFRoZSBiaWFzIHRhYmxlcyB1c2Ugc3BlY2lhbCBrZXlzOgogICAgICAgICAgICAjICAgJHR5cGUgLSBpZiBub3Qga2V5d29yZAogICAgICAgICAgICAjICAgJHRva2VuIC0gaWYga2V5d29yZCwgYnV0IG1hcCBzb21lIGtleXdvcmRzIHRvZ2V0aGVyCiAgICAgICAgICAgIG15ICRsZWZ0X2tleSA9CiAgICAgICAgICAgICAgJHR5cGUgZXEgJ2snID8gJHRva2VuIGVxICdlcnInID8gJ29yJyA6ICR0b2tlbiA6ICR0eXBlOwogICAgICAgICAgICBteSAkcmlnaHRfa2V5ID0KICAgICAgICAgICAgICAgICRuZXh0X25vbmJsYW5rX3R5cGUgZXEgJ2snCiAgICAgICAgICAgICAgPyAkbmV4dF9ub25ibGFua190b2tlbiBlcSAnZXJyJwogICAgICAgICAgICAgICAgICA/ICdvcicKICAgICAgICAgICAgICAgICAgOiAkbmV4dF9ub25ibGFua190b2tlbgogICAgICAgICAgICAgIDogJG5leHRfbm9uYmxhbmtfdHlwZTsKCiAgICAgICAgICAgICMgYWRkIGFueSBiaWFzIHNldCBieSBzdWIgc2Nhbl9saXN0IGF0IG9sZCBjb21tYSBicmVhayBwb2ludHMuCiAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJywnICkgeyAkYm9uZF9zdHIgKz0gJGJvbmRfc3RyZW5ndGhfdG9fZ29bJGldIH0KCiAgICAgICAgICAgICMgYmlhcyBsZWZ0IHRva2VuCiAgICAgICAgICAgIGVsc2lmICggZGVmaW5lZCggJGJpYXN7JGxlZnRfa2V5fSApICkgewogICAgICAgICAgICAgICAgaWYgKCAhJHdhbnRfYnJlYWtfYmVmb3JleyRsZWZ0X2tleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJGJpYXN7JGxlZnRfa2V5fSArPSAkZGVsdGFfYmlhczsKICAgICAgICAgICAgICAgICAgICAkYm9uZF9zdHIgKz0gJGJpYXN7JGxlZnRfa2V5fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBiaWFzIHJpZ2h0IHRva2VuCiAgICAgICAgICAgIGlmICggZGVmaW5lZCggJGJpYXN7JHJpZ2h0X2tleX0gKSApIHsKICAgICAgICAgICAgICAgIGlmICggJHdhbnRfYnJlYWtfYmVmb3JleyRyaWdodF9rZXl9ICkgewoKICAgICAgICAgICAgICAgICAgICAjIGZvciBsZWFkaW5nICcuJyBhbGlnbiBhbGwgYnV0ICdzaG9ydCcgcXVvdGVzOyB0aGUgaWRlYQogICAgICAgICAgICAgICAgICAgICMgaXMgdG8gbm90IHBsYWNlIHNvbWV0aGluZyBsaWtlICJcbiIgb24gYSBzaW5nbGUgbGluZS4KICAgICAgICAgICAgICAgICAgICBpZiAoICRyaWdodF9rZXkgZXEgJy4nICkgewogICAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAnLicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICggJHRva2VuX2xlbmd0aCA8PQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyT3B0c19zaG9ydF9jb25jYXRlbmF0aW9uX2l0ZW1fbGVuZ3RoICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICggISRpc19jbG9zaW5nX3Rva2VueyR0b2tlbn0gKQogICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJpYXN7JHJpZ2h0X2tleX0gKz0gJGRlbHRhX2JpYXM7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRiaWFzeyRyaWdodF9rZXl9ICs9ICRkZWx0YV9iaWFzOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkYm9uZF9zdHIgKz0gJGJpYXN7JHJpZ2h0X2tleX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbXkgJGJvbmRfc3RyXzQgPSAkYm9uZF9zdHI7CgogICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICMgQm9uZCBTdHJlbmd0aCBTZWN0aW9uIDU6CiAgICAgICAgICAgICMgRmlmdGggQXBwcm94aW1hdGlvbi4KICAgICAgICAgICAgIyBUYWtlIG5lc3RpbmcgZGVwdGggaW50byBhY2NvdW50IGJ5IGFkZGluZyB0aGUgbmVzdGluZyBkZXB0aAogICAgICAgICAgICAjIHRvIHRoZSBib25kIHN0cmVuZ3RoLgogICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgIG15ICRzdHJlbmd0aDsKCiAgICAgICAgICAgIGlmICggZGVmaW5lZCgkYm9uZF9zdHIpICYmICEkbm9icmVha190b19nb1skaV0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICR0b3RhbF9uZXN0aW5nX2RlcHRoID4gMCApIHsKICAgICAgICAgICAgICAgICAgICAkc3RyZW5ndGggPSAkYm9uZF9zdHIgKyAkdG90YWxfbmVzdGluZ19kZXB0aDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRzdHJlbmd0aCA9ICRib25kX3N0cjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRzdHJlbmd0aCA9IE5PX0JSRUFLOwoKICAgICAgICAgICAgICAgICMgRm9yIGNyaXRpY2FsIGNvZGUgc3VjaCBhcyBsaW5lcyB3aXRoIGhlcmUgdGFyZ2V0cyB3ZSBtdXN0CiAgICAgICAgICAgICAgICAjIGJlIGFic29sdXRlbHkgc3VyZSB0aGF0IHdlIGRvIG5vdCBhbGxvdyBhIGJyZWFrLiAgU28gZm9yCiAgICAgICAgICAgICAgICAjIHRoZXNlIHRoZSBub2JyZWFrIGZsYWcgZXhjZWVkcyAxIGFzIGEgc2lnbmFsLiBPdGhlcndpc2Ugd2UKICAgICAgICAgICAgICAgICMgY2FuIHJ1biBpbnRvIHRyb3VibGUgd2hlbiBzbWFsbCB0b2xlcmFuY2VzIGFyZSBhZGRlZC4KICAgICAgICAgICAgICAgICRzdHJlbmd0aCArPSAxIGlmICggJG5vYnJlYWtfdG9fZ29bJGldID4gMSApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICMgQm9uZCBTdHJlbmd0aCBTZWN0aW9uIDY6CiAgICAgICAgICAgICMgU2l4dGggQXBwcm94aW1hdGlvbi4gV2VsZHMuCiAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgICAgICMgRG8gbm90IGFsbG93IGEgYnJlYWsgd2l0aGluIHdlbGRzLAogICAgICAgICAgICBpZiAoICRzZXFubyAmJiAkdG90YWxfd2VsZF9jb3VudCApIHsKICAgICAgICAgICAgICAgIGlmICggJHNlbGYtPndlbGRfbGVuX3JpZ2h0KCAkc2Vxbm8sICR0eXBlICkgKSB7CiAgICAgICAgICAgICAgICAgICAgJHN0cmVuZ3RoID0gTk9fQlJFQUs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBCdXQgZW5jb3VyYWdlIGJyZWFraW5nIGFmdGVyIG9wZW5pbmcgd2VsZGVkIHRva2VucwogICAgICAgICAgICAgICAgZWxzaWYgKCRpc19vcGVuaW5nX3Rva2VueyR0b2tlbn0KICAgICAgICAgICAgICAgICAgICAmJiAkc2VsZi0+d2VsZF9sZW5fbGVmdCggJHNlcW5vLCAkdHlwZSApICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkc3RyZW5ndGggLT0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhbHdheXMgYnJlYWsgYWZ0ZXIgc2lkZSBjb21tZW50CiAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJyMnICkgeyAkc3RyZW5ndGggPSAwIH0KCiAgICAgICAgICAgICRib25kX3N0cmVuZ3RoX3RvX2dvWyRpXSA9ICRzdHJlbmd0aDsKCiAgICAgICAgICAgIERFQlVHX0JPTkQgJiYgZG8gewogICAgICAgICAgICAgICAgbXkgJHN0ciA9IHN1YnN0ciggJHRva2VuLCAwLCAxNSApOwogICAgICAgICAgICAgICAgJHN0ciAuPSAnICcgeCAoIDE2IC0gbGVuZ3RoKCRzdHIpICk7CiAgICAgICAgICAgICAgICBwcmludCBTVERPVVQKIkJPTkQ6ICBpPSRpICRzdHIgJHR5cGUgJG5leHRfbm9uYmxhbmtfdHlwZSBkZXB0aD0kdG90YWxfbmVzdGluZ19kZXB0aCBzdHJlbmd0aD0kYm9uZF9zdHJfMSAtPiAkYm9uZF9zdHJfMiAtPiAkYm9uZF9zdHJfMyAtPiAkYm9uZF9zdHJfNCAkYm9uZF9zdHIgLT4gJHN0cmVuZ3RoIFxuIjsKICAgICAgICAgICAgfTsKICAgICAgICB9ICMjIGVuZCBtYWluIGxvb3AKICAgICAgICByZXR1cm47CiAgICB9ICMjIGVuZCBzdWIgc2V0X2JvbmRfc3RyZW5ndGhzCn0gIyMgZW5kIGNsb3N1cmUgc2V0X2JvbmRfc3RyZW5ndGhzCgpzdWIgYmFkX3BhdHRlcm4gewoKICAgICMgU2VlIGlmIGEgcGF0dGVybiB3aWxsIGNvbXBpbGUuIFdlIGhhdmUgdG8gdXNlIGEgc3RyaW5nIGV2YWwgaGVyZSwKICAgICMgYnV0IGl0IHNob3VsZCBiZSBzYWZlIGJlY2F1c2UgdGhlIHBhdHRlcm4gaGFzIGJlZW4gY29uc3RydWN0ZWQKICAgICMgYnkgdGhpcyBwcm9ncmFtLgogICAgbXkgKCRwYXR0ZXJuKSA9IEBfOwogICAgZXZhbCAiJyMjJz1+LyRwYXR0ZXJuLyI7CiAgICByZXR1cm4gJEA7Cn0KCnsgICAgIyMgYmVnaW4gY2xvc3VyZSBwcmVwYXJlX2N1ZGRsZWRfYmxvY2tfdHlwZXMKCiAgICBteSAlbm9fY3VkZGxlOwoKICAgICMgQWRkIGtleXdvcmRzIGhlcmUgd2hpY2ggcmVhbGx5IHNob3VsZCBub3QgYmUgY3VkZGxlZAogICAgQkVHSU4gewogICAgICAgIG15IEBxID0gcXcoaWYgdW5sZXNzIGZvciBmb3JlYWNoIHdoaWxlKTsKICAgICAgICBAbm9fY3VkZGxle0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CiAgICB9CgogICAgc3ViIHByZXBhcmVfY3VkZGxlZF9ibG9ja190eXBlcyB7CgogICAgICAgICMgdGhlIGN1ZGRsZWQtZWxzZSBzdHlsZSwgaWYgdXNlZCwgaXMgY29udHJvbGxlZCBieSBhIGhhc2ggdGhhdAogICAgICAgICMgd2UgY29uc3RydWN0IGhlcmUKCiAgICAgICAgIyBJbmNsdWRlIGtleXdvcmRzIGhlcmUgd2hpY2ggc2hvdWxkIG5vdCBiZSBjdWRkbGVkCgogICAgICAgIG15ICRjdWRkbGVkX3N0cmluZyA9ICIiOwogICAgICAgIGlmICggJHJPcHRzLT57J2N1ZGRsZWQtZWxzZSd9ICkgewoKICAgICAgICAgICAgIyBzZXQgdGhlIGRlZmF1bHQKICAgICAgICAgICAgJGN1ZGRsZWRfc3RyaW5nID0gJ2Vsc2lmIGVsc2UgY29udGludWUgY2F0Y2ggZmluYWxseScKICAgICAgICAgICAgICB1bmxlc3MgKCAkck9wdHMtPnsnY3VkZGxlZC1ibG9jay1saXN0LWV4Y2x1c2l2ZSd9ICk7CgogICAgICAgICAgICAjIFRoaXMgaXMgdGhlIG9sZCBlcXVpdmFsZW50IGJ1dCBtb3JlIGNvbXBsZXggdmVyc2lvbgogICAgICAgICAgICAjICRjdWRkbGVkX3N0cmluZyA9ICdpZi1lbHNpZi1lbHNlIHVubGVzcy1lbHNpZi1lbHNlIC1jb250aW51ZSAnOwoKICAgICAgICAgICAgIyBBZGQgdXNlcnMgb3RoZXIgYmxvY2tzIHRvIGJlIGN1ZGRsZWQKICAgICAgICAgICAgbXkgJGN1ZGRsZWRfYmxvY2tfbGlzdCA9ICRyT3B0cy0+eydjdWRkbGVkLWJsb2NrLWxpc3QnfTsKICAgICAgICAgICAgaWYgKCRjdWRkbGVkX2Jsb2NrX2xpc3QpIHsKICAgICAgICAgICAgICAgICRjdWRkbGVkX3N0cmluZyAuPSAiICIgLiAkY3VkZGxlZF9ibG9ja19saXN0OwogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICAgICAgIyBJZiB3ZSBoYXZlIGEgY3VkZGxlZCBzdHJpbmcgb2YgdGhlIGZvcm0KICAgICAgICAjICAndHJ5LWNhdGNoLWZpbmFsbHknCgogICAgICAgICMgd2Ugd2FudCB0byBwcmVwYXJlIGEgaGFzaCBvZiB0aGUgZm9ybQoKICAgICAgICAjICRyY3VkZGxlZF9ibG9ja190eXBlcyA9IHsKICAgICAgICAjICAgICd0cnknID0+IHsKICAgICAgICAjICAgICAgICAnY2F0Y2gnICAgPT4gMSwKICAgICAgICAjICAgICAgICAnZmluYWxseScgPT4gMQogICAgICAgICMgICAgfSwKICAgICAgICAjIH07CgogICAgICAgICMgdXNlIC1kY2JsIHRvIGR1bXAgdGhpcyBoYXNoCgogICAgICAgICMgTXVsdGlwbGUgc3VjaCBzdHJpbmdzIGFyZSBpbnB1dCBhcyBhIHNwYWNlIG9yIGNvbW1hIHNlcGFyYXRlZCBsaXN0CgogICAgICAgICMgSWYgd2UgZ2V0IHR3byBsaXN0cyB3aXRoIHRoZSBzYW1lIGxlYWRpbmcgdHlwZSwgc3VjaCBhcwogICAgICAgICMgICAtY2JsID0gIi10cnktY2F0Y2gtZmluYWxseSAgLXRyeS1jYXRjaC1vdGhlcndpc2UiCiAgICAgICAgIyB0aGVuIHRoZXkgd2lsbCBnZXQgbWVyZ2VkIGFzIGZvbGxvd3M6CiAgICAgICAgIyAkcmN1ZGRsZWRfYmxvY2tfdHlwZXMgPSB7CiAgICAgICAgIyAgICAndHJ5JyA9PiB7CiAgICAgICAgIyAgICAgICAgJ2NhdGNoJyAgICAgPT4gMSwKICAgICAgICAjICAgICAgICAnZmluYWxseScgICA9PiAyLAogICAgICAgICMgICAgICAgICdvdGhlcndpc2UnID0+IDEsCiAgICAgICAgIyAgICB9LAogICAgICAgICMgfTsKICAgICAgICAjIFRoaXMgd2lsbCBhbGxvdyBlaXRoZXIgdHlwZSBvZiBjaGFpbiB0byBiZSBmb2xsb3dlZC4KCiAgICAgICAgJGN1ZGRsZWRfc3RyaW5nID1+IHMvLC8gL2c7ICAgICMgYWxsb3cgc3BhY2Ugb3IgY29tbWEgc2VwYXJhdGVkIGxpc3RzCiAgICAgICAgbXkgQGN1ZGRsZWRfc3RyaW5ncyA9IHNwbGl0IC9ccysvLCAkY3VkZGxlZF9zdHJpbmc7CgogICAgICAgICRyY3VkZGxlZF9ibG9ja190eXBlcyA9IHt9OwoKICAgICAgICAjIHByb2Nlc3MgZWFjaCBkYXNoLXNlcGFyYXRlZCBzdHJpbmcuLi4KICAgICAgICBteSAkc3RyaW5nX2NvdW50ID0gMDsKICAgICAgICBmb3JlYWNoIG15ICRzdHJpbmcgKEBjdWRkbGVkX3N0cmluZ3MpIHsKICAgICAgICAgICAgbmV4dCB1bmxlc3MgJHN0cmluZzsKICAgICAgICAgICAgbXkgQHdvcmRzID0gc3BsaXQgLy0rLywgJHN0cmluZzsgICAgIyBhbGxvdyBtdWx0aXBsZSBkYXNoZXMKCiAgICAgICAgICAgICMgd2UgY291bGQgbG9vayBmb3IgYW5kIHJlcG9ydCBwb3NzaWJsZSBlcnJvcnMgaGVyZS4uLgogICAgICAgICAgICBuZXh0IHVubGVzcyAoIEB3b3JkcyA+IDAgKTsKCiAgICAgICAgICAgIyBhbGxvdyBlaXRoZXIgJy1jb250aW51ZScgb3IgKi1jb250aW51ZScgZm9yIGFyYml0cmFyeSBzdGFydGluZyB0eXBlCiAgICAgICAgICAgIG15ICRzdGFydCA9ICcqJzsKCiAgICAgICAgICAgICMgYSBzaW5nbGUgd29yZCB3aXRob3V0IGRhc2hlcyBpcyBhIHNlY29uZGFyeSBibG9jayB0eXBlCiAgICAgICAgICAgIGlmICggQHdvcmRzID4gMSApIHsKICAgICAgICAgICAgICAgICRzdGFydCA9IHNoaWZ0IEB3b3JkczsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhbHdheXMgbWFrZSBhbiBlbnRyeSBmb3IgdGhlIGxlYWRpbmcgd29yZC4gSWYgbm9uZSBmb2xsb3csIHRoaXMKICAgICAgICAgICAgIyB3aWxsIHN0aWxsIHByZXZlbnQgYSB3aWxkY2FyZCBmcm9tIG1hdGNoaW5nIHRoaXMgd29yZC4KICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCggJHJjdWRkbGVkX2Jsb2NrX3R5cGVzLT57JHN0YXJ0fSApICkgewogICAgICAgICAgICAgICAgJHJjdWRkbGVkX2Jsb2NrX3R5cGVzLT57JHN0YXJ0fSA9IHt9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFRoZSBjb3VudCBnaXZlcyB0aGUgb3JpZ2luYWwgd29yZCBvcmRlciBpbiBjYXNlIHdlIGV2ZXIgd2FudCBpdC4KICAgICAgICAgICAgJHN0cmluZ19jb3VudCsrOwogICAgICAgICAgICBteSAkd29yZF9jb3VudCA9IDA7CiAgICAgICAgICAgIGZvcmVhY2ggbXkgJHdvcmQgKEB3b3JkcykgewogICAgICAgICAgICAgICAgbmV4dCB1bmxlc3MgJHdvcmQ7CiAgICAgICAgICAgICAgICBpZiAoICRub19jdWRkbGV7JHdvcmR9ICkgewogICAgICAgICAgICAgICAgICAgIFdhcm4oCiIjIyBJZ25vcmluZyBrZXl3b3JkICckd29yZCcgaW4gLWNibDsgZG9lcyBub3Qgc2VlbSByaWdodFxuIgogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICR3b3JkX2NvdW50Kys7CiAgICAgICAgICAgICAgICAkcmN1ZGRsZWRfYmxvY2tfdHlwZXMtPnskc3RhcnR9LT57JHdvcmR9ID0KICAgICAgICAgICAgICAgICAgMTsgICAgIyIkc3RyaW5nX2NvdW50LiR3b3JkX2NvdW50IjsKCiAgICAgICAgICAgICAgICAjIGdpdCM5OiBSZW1vdmUgdGhpcyB3b3JkIGZyb20gdGhlIGxpc3Qgb2YgZGVzaXJlZCBvbmUtbGluZQogICAgICAgICAgICAgICAgIyBibG9ja3MKICAgICAgICAgICAgICAgICR3YW50X29uZV9saW5lX2Jsb2NreyR3b3JkfSA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQp9ICAgICMjIGJlZ2luIGNsb3N1cmUgcHJlcGFyZV9jdWRkbGVkX2Jsb2NrX3R5cGVzCgpzdWIgZHVtcF9jdWRkbGVkX2Jsb2NrX2xpc3QgewogICAgbXkgKCRmaCkgPSBAXzsKCiAgICAjIE9SSUdJTkFMIE1FVEhPRDogSGVyZSBpcyB0aGUgZm9ybWF0IG9mIHRoZSBjdWRkbGVkIGJsb2NrIHR5cGUgaGFzaAogICAgIyB3aGljaCBjb250cm9scyB0aGlzIHJvdXRpbmUKICAgICMgICAgbXkgJHJjdWRkbGVkX2Jsb2NrX3R5cGVzID0gewogICAgIyAgICAgICAgJ2lmJyA9PiB7CiAgICAjICAgICAgICAgICAgJ2Vsc2UnICA9PiAxLAogICAgIyAgICAgICAgICAgICdlbHNpZicgPT4gMQogICAgIyAgICAgICAgfSwKICAgICMgICAgICAgICd0cnknID0+IHsKICAgICMgICAgICAgICAgICAnY2F0Y2gnICAgPT4gMSwKICAgICMgICAgICAgICAgICAnZmluYWxseScgPT4gMQogICAgIyAgICAgICAgfSwKICAgICMgICAgfTsKCiAgICAjIFNJTVBMRklFRCBNRVRIT0Q6IHRoZSBzaW1wbGlmaWVkIG1ldGhvZCB1c2VzIGEgd2lsZGNhcmQgZm9yCiAgICAjIHRoZSBzdGFydGluZyBibG9jayB0eXBlIGFuZCBwdXRzIGFsbCBjdWRkbGVkIGJsb2NrcyB0b2dldGhlcjoKICAgICMgICAgbXkgJHJjdWRkbGVkX2Jsb2NrX3R5cGVzID0gewogICAgIyAgICAgICAgJyonID0+IHsKICAgICMgICAgICAgICAgICAnZWxzZScgID0+IDEsCiAgICAjICAgICAgICAgICAgJ2Vsc2lmJyA9PiAxCiAgICAjICAgICAgICAgICAgJ2NhdGNoJyAgID0+IDEsCiAgICAjICAgICAgICAgICAgJ2ZpbmFsbHknID0+IDEKICAgICMgICAgICAgIH0sCiAgICAjICAgIH07CgogICAgIyBCb3RoIG1ldGhvZHMgd29yaywgYnV0IHRoZSBzaW1wbGlmaWVkIG1ldGhvZCBoYXMgcHJvdmVuIHRvIGJlIGFkZXF1YXRlIGFuZAogICAgIyBlYXNpZXIgdG8gbWFuYWdlLgoKICAgIG15ICRjdWRkbGVkX3N0cmluZyA9ICRyT3B0cy0+eydjdWRkbGVkLWJsb2NrLWxpc3QnfTsKICAgICRjdWRkbGVkX3N0cmluZyA9ICcnIHVubGVzcyAkY3VkZGxlZF9zdHJpbmc7CgogICAgbXkgJGZsYWdzID0gIiI7CiAgICAkZmxhZ3MgLj0gIi1jZSIgaWYgKCAkck9wdHMtPnsnY3VkZGxlZC1lbHNlJ30gKTsKICAgICRmbGFncyAuPSAiIC1jYmw9JyRjdWRkbGVkX3N0cmluZyciOwoKICAgIHVubGVzcyAoICRyT3B0cy0+eydjdWRkbGVkLWVsc2UnfSApIHsKICAgICAgICAkZmxhZ3MgLj0gIlxuTm90ZTogWW91IG11c3Qgc3BlY2lmeSAtY2UgdG8gZ2VuZXJhdGUgYSBjdWRkbGVkIGhhc2giOwogICAgfQoKICAgICRmaC0+cHJpbnQoPDxFT00pOwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSGFzaCBvZiBjdWRkbGVkIGJsb2NrIHR5cGVzIHByZXBhcmVkIGZvciBhIHJ1biB3aXRoIHRoZXNlIHBhcmFtZXRlcnM6CiAgJGZsYWdzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFT00KCiAgICB1c2UgRGF0YTo6RHVtcGVyOwogICAgJGZoLT5wcmludCggRHVtcGVyKCRyY3VkZGxlZF9ibG9ja190eXBlcykgKTsKCiAgICAkZmgtPnByaW50KDw8RU9NKTsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVPTQogICAgcmV0dXJuOwp9CgpzdWIgbWFrZV9zdGF0aWNfYmxvY2tfY29tbWVudF9wYXR0ZXJuIHsKCiAgICAjIGNyZWF0ZSB0aGUgcGF0dGVybiB1c2VkIHRvIGlkZW50aWZ5IHN0YXRpYyBibG9jayBjb21tZW50cwogICAgJHN0YXRpY19ibG9ja19jb21tZW50X3BhdHRlcm4gPSAnXlxzKiMjJzsKCiAgICAjIGFsbG93IHRoZSB1c2VyIHRvIGNoYW5nZSBpdAogICAgaWYgKCAkck9wdHMtPnsnc3RhdGljLWJsb2NrLWNvbW1lbnQtcHJlZml4J30gKSB7CiAgICAgICAgbXkgJHByZWZpeCA9ICRyT3B0cy0+eydzdGF0aWMtYmxvY2stY29tbWVudC1wcmVmaXgnfTsKICAgICAgICAkcHJlZml4ID1+IHMvXlxzKi8vOwogICAgICAgIG15ICRwYXR0ZXJuID0gJHByZWZpeDsKCiAgICAgICAgIyB1c2VyIG1heSBnaXZlIGxlYWRpbmcgY2FyZXQgdG8gZm9yY2UgbWF0Y2hpbmcgbGVmdCBjb21tZW50cyBvbmx5CiAgICAgICAgaWYgKCAkcHJlZml4ICF+IC9eXF4jLyApIHsKICAgICAgICAgICAgaWYgKCAkcHJlZml4ICF+IC9eIy8gKSB7CiAgICAgICAgICAgICAgICBEaWUoCiJFUlJPUjogdGhlIC1zYmNwIHByZWZpeCBpcyAnJHByZWZpeCcgYnV0IG11c3QgYmVnaW4gd2l0aCAnIycgb3IgJ14jJ1xuIgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkcGF0dGVybiA9ICdeXHMqJyAuICRwcmVmaXg7CiAgICAgICAgfQogICAgICAgIGlmICggYmFkX3BhdHRlcm4oJHBhdHRlcm4pICkgewogICAgICAgICAgICBEaWUoCiJFUlJPUjogdGhlIC1zYmMgcHJlZml4ICckcHJlZml4JyBjYXVzZXMgdGhlIGludmFsaWQgcmVnZXggJyRwYXR0ZXJuJ1xuIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkc3RhdGljX2Jsb2NrX2NvbW1lbnRfcGF0dGVybiA9ICRwYXR0ZXJuOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgbWFrZV9mb3JtYXRfc2tpcHBpbmdfcGF0dGVybiB7CiAgICBteSAoICRvcHRfbmFtZSwgJGRlZmF1bHQgKSA9IEBfOwogICAgbXkgJHBhcmFtID0gJHJPcHRzLT57JG9wdF9uYW1lfTsKICAgIHVubGVzcyAoJHBhcmFtKSB7ICRwYXJhbSA9ICRkZWZhdWx0IH0KICAgICRwYXJhbSA9fiBzL15ccyovLzsKICAgIGlmICggJHBhcmFtICF+IC9eIy8gKSB7CiAgICAgICAgRGllKCJFUlJPUjogdGhlICRvcHRfbmFtZSBwYXJhbWV0ZXIgJyRwYXJhbScgbXVzdCBiZWdpbiB3aXRoICcjJ1xuIik7CiAgICB9CiAgICBteSAkcGF0dGVybiA9ICdeJyAuICRwYXJhbSAuICdccyc7CiAgICBpZiAoIGJhZF9wYXR0ZXJuKCRwYXR0ZXJuKSApIHsKICAgICAgICBEaWUoCiJFUlJPUjogdGhlICRvcHRfbmFtZSBwYXJhbWV0ZXIgJyRwYXJhbScgY2F1c2VzIHRoZSBpbnZhbGlkIHJlZ2V4ICckcGF0dGVybidcbiIKICAgICAgICApOwogICAgfQogICAgcmV0dXJuICRwYXR0ZXJuOwp9CgpzdWIgbWFrZV9ub25faW5kZW50aW5nX2JyYWNlX3BhdHRlcm4gewoKICAgICMgQ3JlYXRlIHRoZSBwYXR0ZXJuIHVzZWQgdG8gaWRlbnRpZnkgc3RhdGljIHNpZGUgY29tbWVudHMuCiAgICAjIE5vdGUgdGhhdCB3ZSBhcmUgZW5kaW5nIHRoZSBwYXR0ZXJuIGluIGEgXHMuIFRoaXMgd2lsbCBhbGxvdwogICAgIyB0aGUgcGF0dGVybiB0byBiZSBmb2xsb3dlZCBieSBhIHNwYWNlIGFuZCBzb21lIHRleHQsIG9yIGEgbmV3bGluZS4KICAgICMgVGhlIHBhdHRlcm4gaXMgdXNlZCBpbiBzdWIgJ25vbl9pbmRlbnRpbmdfYnJhY2VzJwogICAgJG5vbl9pbmRlbnRpbmdfYnJhY2VfcGF0dGVybiA9ICdeIzw8PFxzJzsKCiAgICAjIGFsbG93IHRoZSB1c2VyIHRvIGNoYW5nZSBpdAogICAgaWYgKCAkck9wdHMtPnsnbm9uLWluZGVudGluZy1icmFjZS1wcmVmaXgnfSApIHsKICAgICAgICBteSAkcHJlZml4ID0gJHJPcHRzLT57J25vbi1pbmRlbnRpbmctYnJhY2UtcHJlZml4J307CiAgICAgICAgJHByZWZpeCA9fiBzL15ccyovLzsKICAgICAgICBpZiAoICRwcmVmaXggIX4gL14jLyApIHsKICAgICAgICAgICAgRGllKCJFUlJPUjogdGhlIC1uaWJwIHBhcmFtZXRlciAnJHByZWZpeCcgbXVzdCBiZWdpbiB3aXRoICcjJ1xuIik7CiAgICAgICAgfQogICAgICAgIG15ICRwYXR0ZXJuID0gJ14nIC4gJHByZWZpeCAuICdccyc7CiAgICAgICAgaWYgKCBiYWRfcGF0dGVybigkcGF0dGVybikgKSB7CiAgICAgICAgICAgIERpZSgKIkVSUk9SOiB0aGUgLW5pYnAgcHJlZml4ICckcHJlZml4JyBjYXVzZXMgdGhlIGludmFsaWQgcmVnZXggJyRwYXR0ZXJuJ1xuIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkbm9uX2luZGVudGluZ19icmFjZV9wYXR0ZXJuID0gJHBhdHRlcm47CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBtYWtlX2Nsb3Npbmdfc2lkZV9jb21tZW50X2xpc3RfcGF0dGVybiB7CgogICAgIyB0dXJuIGFueSBpbnB1dCBsaXN0IGludG8gYSByZWdleCBmb3IgcmVjb2duaXppbmcgc2VsZWN0ZWQgYmxvY2sgdHlwZXMKICAgICRjbG9zaW5nX3NpZGVfY29tbWVudF9saXN0X3BhdHRlcm4gPSAnXlx3Kyc7CiAgICBpZiAoIGRlZmluZWQoICRyT3B0cy0+eydjbG9zaW5nLXNpZGUtY29tbWVudC1saXN0J30gKQogICAgICAgICYmICRyT3B0cy0+eydjbG9zaW5nLXNpZGUtY29tbWVudC1saXN0J30gKQogICAgewogICAgICAgICRjbG9zaW5nX3NpZGVfY29tbWVudF9saXN0X3BhdHRlcm4gPQogICAgICAgICAgbWFrZV9ibG9ja19wYXR0ZXJuKCAnLWNzY2wnLCAkck9wdHMtPnsnY2xvc2luZy1zaWRlLWNvbW1lbnQtbGlzdCd9ICk7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBtYWtlX3N1Yl9tYXRjaGluZ19wYXR0ZXJuIHsKCiAgICAjIFBhdHRlcm5zIGZvciBzdGFuZGFyZGl6aW5nIG1hdGNoZXMgdG8gYmxvY2sgdHlwZXMgZm9yIHJlZ3VsYXIgc3VicyBhbmQKICAgICMgYW5vbnltb3VzIHN1YnMuIEV4YW1wbGVzCiAgICAjICAnc3ViIHByb2Nlc3MnIGlzIGEgbmFtZWQgc3ViCiAgICAjICAnc3ViIDo6bScgaXMgYSBuYW1lZCBzdWIKICAgICMgICdzdWInIGlzIGFuIGFub255bW91cyBzdWIKICAgICMgICdzdWI6JyBpcyBhIGxhYmVsLCBub3QgYSBzdWIKICAgICMgICdzdWJzdHInIGlzIGEga2V5d29yZAogICAgJFNVQl9QQVRURVJOICAgID0gJ15zdWJccysoOjp8XHcpJzsgICAgIyBtYXRjaCBub3JtYWwgc3ViCiAgICAkQVNVQl9QQVRURVJOICAgPSAnXnN1YiQnOyAgICAgICAgICAgICAjIG1hdGNoIGFub255bW91cyBzdWIKICAgICRBTllTVUJfUEFUVEVSTiA9ICdec3ViXGInOyAgICAgICAgICAgICMgbWF0Y2ggZWl0aGVyIHR5cGUgb2Ygc3ViCgogICAgIyBOb3RlIChzZWUgYWxzbyBSVCAjMTMzMTMwKTogVGhlc2UgcGF0dGVybnMgYXJlIHVzZWQgYnkKICAgICMgc3ViIG1ha2VfYmxvY2tfcGF0dGVybiwgd2hpY2ggaXMgdXNlZCBmb3IgbWFraW5nIG1vc3QgcGF0dGVybnMuCiAgICAjIFNvIHRoaXMgc3ViIG5lZWRzIHRvIGJlIGNhbGxlZCBiZWZvcmUgb3RoZXIgcGF0dGVybi1tYWtpbmcgcm91dGluZXMuCgogICAgaWYgKCAkck9wdHMtPnsnc3ViLWFsaWFzLWxpc3QnfSApIHsKCiAgICAgICAgIyBOb3RlIHRoYXQgYW55ICdzdWItYWxpYXMtbGlzdCcgaGFzIGJlZW4gcHJlcHJvY2Vzc2VkIHRvCiAgICAgICAgIyBiZSBhIHRyaW1tZWQsIHNwYWNlLXNlcGFyYXRlZCBsaXN0IHdoaWNoIGluY2x1ZGVzICdzdWInCiAgICAgICAgIyBmb3IgZXhhbXBsZSwgaXQgbWlnaHQgYmUgJ3N1YiBtZXRob2QgZnVuJwogICAgICAgIG15ICRzdWJfYWxpYXNfbGlzdCA9ICRyT3B0cy0+eydzdWItYWxpYXMtbGlzdCd9OwogICAgICAgICRzdWJfYWxpYXNfbGlzdCA9fiBzL1xzKy9cfC9nOwogICAgICAgICRTVUJfUEFUVEVSTiAgICA9fiBzL3N1Yi9cKCRzdWJfYWxpYXNfbGlzdFwpLzsKICAgICAgICAkQVNVQl9QQVRURVJOICAgPX4gcy9zdWIvXCgkc3ViX2FsaWFzX2xpc3RcKS87CiAgICAgICAgJEFOWVNVQl9QQVRURVJOID1+IHMvc3ViL1woJHN1Yl9hbGlhc19saXN0XCkvOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgbWFrZV9ibGlfcGF0dGVybiB7CgogICAgIyBkZWZhdWx0IGxpc3Qgb2YgYmxvY2sgdHlwZXMgZm9yIHdoaWNoIC1ibGkgd291bGQgYXBwbHkKICAgIG15ICRibGlfbGlzdF9zdHJpbmcgPSAnaWYgZWxzZSBlbHNpZiB1bmxlc3Mgd2hpbGUgZm9yIGZvcmVhY2ggZG8gOiBzdWInOwoKICAgIGlmICggZGVmaW5lZCggJHJPcHRzLT57J2JyYWNlLWxlZnQtYW5kLWluZGVudC1saXN0J30gKQogICAgICAgICYmICRyT3B0cy0+eydicmFjZS1sZWZ0LWFuZC1pbmRlbnQtbGlzdCd9ICkKICAgIHsKICAgICAgICAkYmxpX2xpc3Rfc3RyaW5nID0gJHJPcHRzLT57J2JyYWNlLWxlZnQtYW5kLWluZGVudC1saXN0J307CiAgICB9CgogICAgJGJsaV9wYXR0ZXJuID0gbWFrZV9ibG9ja19wYXR0ZXJuKCAnLWJsaWwnLCAkYmxpX2xpc3Rfc3RyaW5nICk7CiAgICByZXR1cm47Cn0KCnN1YiBtYWtlX2tleXdvcmRfZ3JvdXBfbGlzdF9wYXR0ZXJuIHsKCiAgICAjIHR1cm4gYW55IGlucHV0IGxpc3QgaW50byBhIHJlZ2V4IGZvciByZWNvZ25pemluZyBzZWxlY3RlZCBibG9jayB0eXBlcy4KICAgICMgSGVyZSBhcmUgdGhlIGRlZmF1bHRzOgogICAgJGtleXdvcmRfZ3JvdXBfbGlzdF9wYXR0ZXJuICAgICAgICAgPSAnXihvdXJ8bG9jYWx8bXl8dXNlfHJlcXVpcmV8KSQnOwogICAgJGtleXdvcmRfZ3JvdXBfbGlzdF9jb21tZW50X3BhdHRlcm4gPSAnJzsKICAgIGlmICggZGVmaW5lZCggJHJPcHRzLT57J2tleXdvcmQtZ3JvdXAtYmxhbmtzLWxpc3QnfSApCiAgICAgICAgJiYgJHJPcHRzLT57J2tleXdvcmQtZ3JvdXAtYmxhbmtzLWxpc3QnfSApCiAgICB7CiAgICAgICAgbXkgQHdvcmRzID0gc3BsaXQgL1xzKy8sICRyT3B0cy0+eydrZXl3b3JkLWdyb3VwLWJsYW5rcy1saXN0J307CiAgICAgICAgbXkgQGtleXdvcmRfbGlzdDsKICAgICAgICBteSBAY29tbWVudF9saXN0OwogICAgICAgIGZvcmVhY2ggbXkgJHdvcmQgKEB3b3JkcykgewogICAgICAgICAgICBpZiAoICR3b3JkID1+IC9eKEJDfFNCQykkLyApIHsKICAgICAgICAgICAgICAgIHB1c2ggQGNvbW1lbnRfbGlzdCwgJHdvcmQ7CiAgICAgICAgICAgICAgICBpZiAoICR3b3JkIGVxICdTQkMnICkgeyBwdXNoIEBjb21tZW50X2xpc3QsICdTQkNYJyB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBwdXNoIEBrZXl3b3JkX2xpc3QsICR3b3JkOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRrZXl3b3JkX2dyb3VwX2xpc3RfcGF0dGVybiA9CiAgICAgICAgICBtYWtlX2Jsb2NrX3BhdHRlcm4oICcta2dibCcsICRyT3B0cy0+eydrZXl3b3JkLWdyb3VwLWJsYW5rcy1saXN0J30gKTsKICAgICAgICAka2V5d29yZF9ncm91cF9saXN0X2NvbW1lbnRfcGF0dGVybiA9CiAgICAgICAgICBtYWtlX2Jsb2NrX3BhdHRlcm4oICcta2dibCcsIGpvaW4oICcgJywgQGNvbW1lbnRfbGlzdCApICk7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBtYWtlX2Jsb2NrX2JyYWNlX3ZlcnRpY2FsX3RpZ2h0bmVzc19wYXR0ZXJuIHsKCiAgICAjIHR1cm4gYW55IGlucHV0IGxpc3QgaW50byBhIHJlZ2V4IGZvciByZWNvZ25pemluZyBzZWxlY3RlZCBibG9jayB0eXBlcwogICAgJGJsb2NrX2JyYWNlX3ZlcnRpY2FsX3RpZ2h0bmVzc19wYXR0ZXJuID0KICAgICAgJ14oKGlmfGVsc2V8ZWxzaWZ8dW5sZXNzfHdoaWxlfGZvcnxmb3JlYWNofGRvfFx3KzopJHxzdWIpJzsKICAgIGlmICggZGVmaW5lZCggJHJPcHRzLT57J2Jsb2NrLWJyYWNlLXZlcnRpY2FsLXRpZ2h0bmVzcy1saXN0J30gKQogICAgICAgICYmICRyT3B0cy0+eydibG9jay1icmFjZS12ZXJ0aWNhbC10aWdodG5lc3MtbGlzdCd9ICkKICAgIHsKICAgICAgICAkYmxvY2tfYnJhY2VfdmVydGljYWxfdGlnaHRuZXNzX3BhdHRlcm4gPQogICAgICAgICAgbWFrZV9ibG9ja19wYXR0ZXJuKCAnLWJidnRsJywKICAgICAgICAgICAgJHJPcHRzLT57J2Jsb2NrLWJyYWNlLXZlcnRpY2FsLXRpZ2h0bmVzcy1saXN0J30gKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIG1ha2VfYmxhbmtfbGluZV9wYXR0ZXJuIHsKCiAgICAkYmxhbmtfbGluZXNfYmVmb3JlX2Nsb3NpbmdfYmxvY2tfcGF0dGVybiA9ICRTVUJfUEFUVEVSTjsKICAgIG15ICRrZXkgPSAnYmxhbmstbGluZXMtYmVmb3JlLWNsb3NpbmctYmxvY2stbGlzdCc7CiAgICBpZiAoIGRlZmluZWQoICRyT3B0cy0+eyRrZXl9ICkgJiYgJHJPcHRzLT57JGtleX0gKSB7CiAgICAgICAgJGJsYW5rX2xpbmVzX2JlZm9yZV9jbG9zaW5nX2Jsb2NrX3BhdHRlcm4gPQogICAgICAgICAgbWFrZV9ibG9ja19wYXR0ZXJuKCAnLWJsYmNsJywgJHJPcHRzLT57JGtleX0gKTsKICAgIH0KCiAgICAkYmxhbmtfbGluZXNfYWZ0ZXJfb3BlbmluZ19ibG9ja19wYXR0ZXJuID0gJFNVQl9QQVRURVJOOwogICAgJGtleSA9ICdibGFuay1saW5lcy1hZnRlci1vcGVuaW5nLWJsb2NrLWxpc3QnOwogICAgaWYgKCBkZWZpbmVkKCAkck9wdHMtPnska2V5fSApICYmICRyT3B0cy0+eyRrZXl9ICkgewogICAgICAgICRibGFua19saW5lc19hZnRlcl9vcGVuaW5nX2Jsb2NrX3BhdHRlcm4gPQogICAgICAgICAgbWFrZV9ibG9ja19wYXR0ZXJuKCAnLWJsYW9sJywgJHJPcHRzLT57JGtleX0gKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIG1ha2VfYmxvY2tfcGF0dGVybiB7CgogICAgIyAgZ2l2ZW4gYSBzdHJpbmcgb2YgYmxvY2stdHlwZSBrZXl3b3JkcywgcmV0dXJuIGEgcmVnZXggdG8gbWF0Y2ggdGhlbQogICAgIyAgVGhlIG9ubHkgdHJpY2t5IHBhcnQgaXMgdGhhdCBsYWJlbHMgYXJlIGluZGljYXRlZCB3aXRoIGEgc2luZ2xlICc6JwogICAgIyAgYW5kIHRoZSAnc3ViJyB0b2tlbiB0ZXh0IG1heSBoYXZlIGFkZGl0aW9uYWwgdGV4dCBhZnRlciBpdCAobmFtZSBvZgogICAgIyAgc3ViKS4KICAgICMKICAgICMgIEV4YW1wbGU6CiAgICAjCiAgICAjICAgaW5wdXQgc3RyaW5nOiAiaWYgZWxzZSBlbHNpZiB1bmxlc3Mgd2hpbGUgZm9yIGZvcmVhY2ggZG8gOiBzdWIiOwogICAgIyAgIHBhdHRlcm46ICAnXigoaWZ8ZWxzZXxlbHNpZnx1bmxlc3N8d2hpbGV8Zm9yfGZvcmVhY2h8ZG98XHcrOikkfHN1YiknOwoKICAgICMgIE1pbm9yIFVwZGF0ZToKICAgICMKICAgICMgIFRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gYW5vbnltb3VzIHN1YnMgYW5kIG5hbWVkIHN1YnMsIHVzZSAnc3ViJyB0bwogICAgIyAgIGluZGljYXRlIGEgbmFtZWQgc3ViLCBhbmQgJ2FzdWInIHRvIGluZGljYXRlIGFuIGFub255bW91cyBzdWIKCiAgICBteSAoICRhYmJyZXYsICRzdHJpbmcgKSA9IEBfOwogICAgbXkgQGxpc3QgID0gc3BsaXRfd29yZHMoJHN0cmluZyk7CiAgICBteSBAd29yZHMgPSAoKTsKICAgIG15ICVzZWVuOwogICAgZm9yIG15ICRpIChAbGlzdCkgewogICAgICAgIGlmICggJGkgZXEgJyonICkgeyBteSAkcGF0dGVybiA9ICdeLionOyByZXR1cm4gJHBhdHRlcm4gfQogICAgICAgIG5leHQgaWYgJHNlZW57JGl9OwogICAgICAgICRzZWVueyRpfSA9IDE7CiAgICAgICAgaWYgKCAkaSBlcSAnc3ViJyApIHsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkaSBlcSAnYXN1YicgKSB7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJGkgZXEgJzsnICkgewogICAgICAgICAgICBwdXNoIEB3b3JkcywgJzsnOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRpIGVxICd7JyApIHsKICAgICAgICAgICAgcHVzaCBAd29yZHMsICdceyc7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJGkgZXEgJzonICkgewogICAgICAgICAgICBwdXNoIEB3b3JkcywgJ1x3KzonOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRpID1+IC9eXHcvICkgewogICAgICAgICAgICBwdXNoIEB3b3JkcywgJGk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBXYXJuKCJ1bnJlY29nbml6ZWQgYmxvY2sgdHlwZSAkaSBhZnRlciAkYWJicmV2LCBpZ25vcmluZ1xuIik7CiAgICAgICAgfQogICAgfQogICAgbXkgJHBhdHRlcm4gICAgICA9ICcoJyAuIGpvaW4oICd8JywgQHdvcmRzICkgLiAnKSQnOwogICAgbXkgJHN1Yl9wYXR0ZXJucyA9ICIiOwogICAgaWYgKCAkc2Vlbnsnc3ViJ30gKSB7CiAgICAgICAgJHN1Yl9wYXR0ZXJucyAuPSAnfCcgLiAkU1VCX1BBVFRFUk47CiAgICB9CiAgICBpZiAoICRzZWVueydhc3ViJ30gKSB7CiAgICAgICAgJHN1Yl9wYXR0ZXJucyAuPSAnfCcgLiAkQVNVQl9QQVRURVJOOwogICAgfQogICAgaWYgKCRzdWJfcGF0dGVybnMpIHsKICAgICAgICAkcGF0dGVybiA9ICcoJyAuICRwYXR0ZXJuIC4gJHN1Yl9wYXR0ZXJucyAuICcpJzsKICAgIH0KICAgICRwYXR0ZXJuID0gJ14nIC4gJHBhdHRlcm47CiAgICByZXR1cm4gJHBhdHRlcm47Cn0KCnN1YiBtYWtlX3N0YXRpY19zaWRlX2NvbW1lbnRfcGF0dGVybiB7CgogICAgIyBjcmVhdGUgdGhlIHBhdHRlcm4gdXNlZCB0byBpZGVudGlmeSBzdGF0aWMgc2lkZSBjb21tZW50cwogICAgJHN0YXRpY19zaWRlX2NvbW1lbnRfcGF0dGVybiA9ICdeIyMnOwoKICAgICMgYWxsb3cgdGhlIHVzZXIgdG8gY2hhbmdlIGl0CiAgICBpZiAoICRyT3B0cy0+eydzdGF0aWMtc2lkZS1jb21tZW50LXByZWZpeCd9ICkgewogICAgICAgIG15ICRwcmVmaXggPSAkck9wdHMtPnsnc3RhdGljLXNpZGUtY29tbWVudC1wcmVmaXgnfTsKICAgICAgICAkcHJlZml4ID1+IHMvXlxzKi8vOwogICAgICAgIG15ICRwYXR0ZXJuID0gJ14nIC4gJHByZWZpeDsKICAgICAgICBpZiAoIGJhZF9wYXR0ZXJuKCRwYXR0ZXJuKSApIHsKICAgICAgICAgICAgRGllKAoiRVJST1I6IHRoZSAtc3NjcCBwcmVmaXggJyRwcmVmaXgnIGNhdXNlcyB0aGUgaW52YWxpZCByZWdleCAnJHBhdHRlcm4nXG4iCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICRzdGF0aWNfc2lkZV9jb21tZW50X3BhdHRlcm4gPSAkcGF0dGVybjsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIG1ha2VfY2xvc2luZ19zaWRlX2NvbW1lbnRfcHJlZml4IHsKCiAgICAjIEJlIHN1cmUgd2UgaGF2ZSBhIHZhbGlkIGNsb3Npbmcgc2lkZSBjb21tZW50IHByZWZpeAogICAgbXkgJGNzY19wcmVmaXggPSAkck9wdHMtPnsnY2xvc2luZy1zaWRlLWNvbW1lbnQtcHJlZml4J307CiAgICBteSAkY3NjX3ByZWZpeF9wYXR0ZXJuOwogICAgaWYgKCAhZGVmaW5lZCgkY3NjX3ByZWZpeCkgKSB7CiAgICAgICAgJGNzY19wcmVmaXggICAgICAgICA9ICcjIyBlbmQnOwogICAgICAgICRjc2NfcHJlZml4X3BhdHRlcm4gPSAnXiMjXHMrZW5kJzsKICAgIH0KICAgIGVsc2UgewogICAgICAgIG15ICR0ZXN0X2NzY19wcmVmaXggPSAkY3NjX3ByZWZpeDsKICAgICAgICBpZiAoICR0ZXN0X2NzY19wcmVmaXggIX4gL14jLyApIHsKICAgICAgICAgICAgJHRlc3RfY3NjX3ByZWZpeCA9ICcjJyAuICR0ZXN0X2NzY19wcmVmaXg7CiAgICAgICAgfQoKICAgICAgICAjIG1ha2UgYSByZWdleCB0byByZWNvZ25pemUgdGhlIHByZWZpeAogICAgICAgIG15ICR0ZXN0X2NzY19wcmVmaXhfcGF0dGVybiA9ICR0ZXN0X2NzY19wcmVmaXg7CgogICAgICAgICMgZXNjYXBlIGFueSBzcGVjaWFsIGNoYXJhY3RlcnMKICAgICAgICAkdGVzdF9jc2NfcHJlZml4X3BhdHRlcm4gPX4gcy8oW14jXHNcd10pL1xcJDEvZzsKCiAgICAgICAgJHRlc3RfY3NjX3ByZWZpeF9wYXR0ZXJuID0gJ14nIC4gJHRlc3RfY3NjX3ByZWZpeF9wYXR0ZXJuOwoKICAgICAgICAjIGFsbG93IGV4YWN0IG51bWJlciBvZiBpbnRlcm1lZGlhdGUgc3BhY2VzIHRvIHZhcnkKICAgICAgICAkdGVzdF9jc2NfcHJlZml4X3BhdHRlcm4gPX4gcy9ccysvXFxzXCsvZzsKCiAgICAgICAgIyBtYWtlIHN1cmUgd2UgaGF2ZSBhIGdvb2QgcGF0dGVybgogICAgICAgICMgaWYgd2UgZmFpbCB0aGlzIHdlIHByb2JhYmx5IGhhdmUgYW4gZXJyb3IgaW4gZXNjYXBpbmcKICAgICAgICAjIGNoYXJhY3RlcnMuCgogICAgICAgIGlmICggYmFkX3BhdHRlcm4oJHRlc3RfY3NjX3ByZWZpeF9wYXR0ZXJuKSApIHsKCiAgICAgICAgICAgICMgc2hvdWxkbid0IGhhcHBlbi4ubXVzdCBoYXZlIHNjcmV3ZWQgdXAgZXNjYXBpbmcsIGFib3ZlCiAgICAgICAgICAgIHJlcG9ydF9kZWZpbml0ZV9idWcoKTsKICAgICAgICAgICAgV2FybigKIlByb2dyYW0gRXJyb3I6IHRoZSAtY3NjcCBwcmVmaXggJyRjc2NfcHJlZml4JyBjYXVzZWQgdGhlIGludmFsaWQgcmVnZXggJyRjc2NfcHJlZml4X3BhdHRlcm4nXG4iCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGp1c3Qgd2FybiBhbmQga2VlcCBnb2luZyB3aXRoIGRlZmF1bHRzCiAgICAgICAgICAgIFdhcm4oIlBsZWFzZSBjb25zaWRlciB1c2luZyBhIHNpbXBsZXIgLWNzY3AgcHJlZml4XG4iKTsKICAgICAgICAgICAgV2FybigiVXNpbmcgZGVmYXVsdCAtY3NjcCBpbnN0ZWFkOyBwbGVhc2UgY2hlY2sgb3V0cHV0XG4iKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRjc2NfcHJlZml4ICAgICAgICAgPSAkdGVzdF9jc2NfcHJlZml4OwogICAgICAgICAgICAkY3NjX3ByZWZpeF9wYXR0ZXJuID0gJHRlc3RfY3NjX3ByZWZpeF9wYXR0ZXJuOwogICAgICAgIH0KICAgIH0KICAgICRyT3B0cy0+eydjbG9zaW5nLXNpZGUtY29tbWVudC1wcmVmaXgnfSA9ICRjc2NfcHJlZml4OwogICAgJGNsb3Npbmdfc2lkZV9jb21tZW50X3ByZWZpeF9wYXR0ZXJuID0gJGNzY19wcmVmaXhfcGF0dGVybjsKICAgIHJldHVybjsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBDT0RFIFNFQ1RJT04gNDogcmVjZWl2ZSBsaW5lcyBmcm9tIHRoZSB0b2tlbml6ZXIKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnsgICAgIyMgYmVnaW4gY2xvc3VyZSB3cml0ZV9saW5lCgogICAgbXkgJExhc3RfbGluZV9oYWRfc2lkZV9jb21tZW50OwogICAgbXkgJEluX2Zvcm1hdF9za2lwcGluZ19zZWN0aW9uOwogICAgbXkgJFNhd19WRVJTSU9OX2luX3RoaXNfZmlsZTsKCiAgICBzdWIgaW5pdGlhbGl6ZV93cml0ZV9saW5lIHsKCiAgICAgICAgJExhc3RfbGluZV9oYWRfc2lkZV9jb21tZW50ID0gMDsKICAgICAgICAkSW5fZm9ybWF0X3NraXBwaW5nX3NlY3Rpb24gPSAwOwogICAgICAgICRTYXdfVkVSU0lPTl9pbl90aGlzX2ZpbGUgICA9IDA7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgd3JpdGVfbGluZSB7CgogICAgICAjIFRoaXMgcm91dGluZSBvcmlnaW5hbGx5IHJlY2VpdmVkIGxpbmVzIG9mIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHByb2Nlc3NlZAogICAgICAjIHRoZW0uICBUaGF0IHdhcyBlZmZpY2llbnQgd2hlbiBtZW1vcnkgd2FzIGxpbWl0ZWQsIGJ1dCBub3cgaXQganVzdCBzYXZlcwogICAgICAjIHRoZSBsaW5lcyBpdCByZWNlaXZlcy4gIFRoZXkgZ2V0IHByb2Nlc3NlZCBhbGwgdG9nZXRoZXIgYWZ0ZXIgdGhlIGxhc3QKICAgICAgIyBsaW5lIGlzIHJlY2VpdmVkLgoKICAgICAgICMgQXMgdG9rZW5pemVkIGxpbmVzIGFyZSByZWNlaXZlZCB0aGV5IGFyZSBjb252ZXJ0ZWQgdG8gdGhlIGZvcm1hdCBuZWVkZWQKICAgICAgICMgZm9yIHRoZSBmaW5hbCBmb3JtYXR0aW5nLgogICAgICAgIG15ICggJHNlbGYsICRsaW5lX29mX3Rva2Vuc19vbGQgKSA9IEBfOwogICAgICAgIG15ICRyTEwgICAgICAgICAgID0gJHNlbGYtPltfckxMX107CiAgICAgICAgbXkgJEtsaW1pdCAgICAgICAgPSAkc2VsZi0+W19LbGltaXRfXTsKICAgICAgICBteSAkcmxpbmVzX25ldyAgICA9ICRzZWxmLT5bX3JsaW5lc19dOwogICAgICAgIG15ICRtYXhpbXVtX2xldmVsID0gJHNlbGYtPltfbWF4aW11bV9sZXZlbF9dOwoKICAgICAgICBteSAkS2ZpcnN0OwogICAgICAgIG15ICRsaW5lX29mX3Rva2VucyA9IHt9OwogICAgICAgIGZvcmVhY2ggbXkgJGtleSAoCiAgICAgICAgICAgIHF3KAogICAgICAgICAgICBfY3VybHlfYnJhY2VfZGVwdGgKICAgICAgICAgICAgX2VuZGluZ19pbl9xdW90ZQogICAgICAgICAgICBfZ3Vlc3NlZF9pbmRlbnRhdGlvbl9sZXZlbAogICAgICAgICAgICBfbGluZV9udW1iZXIKICAgICAgICAgICAgX2xpbmVfdGV4dAogICAgICAgICAgICBfbGluZV90eXBlCiAgICAgICAgICAgIF9wYXJlbl9kZXB0aAogICAgICAgICAgICBfcXVvdGVfY2hhcmFjdGVyCiAgICAgICAgICAgIF9zcXVhcmVfYnJhY2tldF9kZXB0aAogICAgICAgICAgICBfc3RhcnRpbmdfaW5fcXVvdGUKICAgICAgICAgICAgKQogICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57JGtleX0gPSAkbGluZV9vZl90b2tlbnNfb2xkLT57JGtleX07CiAgICAgICAgfQoKICAgICAgICAjIERhdGEgbmVlZGVkIGJ5IExvZ2dlcgogICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19sZXZlbF8wfSAgICAgICAgICA9IDA7CiAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X2NpX2xldmVsXzB9ICAgICAgID0gMDsKICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfbmVzdGluZ19ibG9ja3NfMH0gPSAiIjsKICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfbmVzdGluZ190b2tlbnNfMH0gPSAiIjsKCiAgICAgICAgIyBOZWVkZWQgdG8gYXZvaWQgdHJpbW1pbmcgcXVvdGVzCiAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X2VuZGVkX2luX2JsYW5rX3Rva2VufSA9IHVuZGVmOwoKICAgICAgICBteSAkbGluZV90eXBlICAgICA9ICRsaW5lX29mX3Rva2Vuc19vbGQtPntfbGluZV90eXBlfTsKICAgICAgICBteSAkaW5wdXRfbGluZV9ubyA9ICRsaW5lX29mX3Rva2Vuc19vbGQtPntfbGluZV9udW1iZXJ9IC0gMTsKICAgICAgICBteSAkQ09ERV90eXBlICAgICA9ICIiOwogICAgICAgIG15ICR0ZWVfb3V0cHV0OwoKICAgICAgICAjIEhhbmRsZSBsaW5lIG9mIG5vbi1jb2RlCiAgICAgICAgaWYgKCAkbGluZV90eXBlIG5lICdDT0RFJyApIHsKICAgICAgICAgICAgJHRlZV9vdXRwdXQgfHw9ICRyT3B0c190ZWVfcG9kCiAgICAgICAgICAgICAgJiYgc3Vic3RyKCAkbGluZV90eXBlLCAwLCAzICkgZXEgJ1BPRCc7CiAgICAgICAgfQoKICAgICAgICAjIEhhbmRsZSBsaW5lIG9mIGNvZGUKICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgIG15ICRydG9rZW5zICAgICAgICAgPSAkbGluZV9vZl90b2tlbnNfb2xkLT57X3J0b2tlbnN9OwogICAgICAgICAgICBteSAkcnRva2VuX3R5cGUgICAgID0gJGxpbmVfb2ZfdG9rZW5zX29sZC0+e19ydG9rZW5fdHlwZX07CiAgICAgICAgICAgIG15ICRyYmxvY2tfdHlwZSAgICAgPSAkbGluZV9vZl90b2tlbnNfb2xkLT57X3JibG9ja190eXBlfTsKICAgICAgICAgICAgbXkgJHJjb250YWluZXJfdHlwZSA9ICRsaW5lX29mX3Rva2Vuc19vbGQtPntfcmNvbnRhaW5lcl90eXBlfTsKICAgICAgICAgICAgbXkgJHJjb250YWluZXJfZW52aXJvbm1lbnQgPQogICAgICAgICAgICAgICRsaW5lX29mX3Rva2Vuc19vbGQtPntfcmNvbnRhaW5lcl9lbnZpcm9ubWVudH07CiAgICAgICAgICAgIG15ICRydHlwZV9zZXF1ZW5jZSAgPSAkbGluZV9vZl90b2tlbnNfb2xkLT57X3J0eXBlX3NlcXVlbmNlfTsKICAgICAgICAgICAgbXkgJHJsZXZlbHMgICAgICAgICA9ICRsaW5lX29mX3Rva2Vuc19vbGQtPntfcmxldmVsc307CiAgICAgICAgICAgIG15ICRyc2xldmVscyAgICAgICAgPSAkbGluZV9vZl90b2tlbnNfb2xkLT57X3JzbGV2ZWxzfTsKICAgICAgICAgICAgbXkgJHJjaV9sZXZlbHMgICAgICA9ICRsaW5lX29mX3Rva2Vuc19vbGQtPntfcmNpX2xldmVsc307CiAgICAgICAgICAgIG15ICRybmVzdGluZ19ibG9ja3MgPSAkbGluZV9vZl90b2tlbnNfb2xkLT57X3JuZXN0aW5nX2Jsb2Nrc307CiAgICAgICAgICAgIG15ICRybmVzdGluZ190b2tlbnMgPSAkbGluZV9vZl90b2tlbnNfb2xkLT57X3JuZXN0aW5nX3Rva2Vuc307CgogICAgICAgICAgICBteSAkam1heCA9IEB7JHJ0b2tlbnN9IC0gMTsKICAgICAgICAgICAgaWYgKCAkam1heCA+PSAwICkgewogICAgICAgICAgICAgICAgJEtmaXJzdCA9IGRlZmluZWQoJEtsaW1pdCkgPyAkS2xpbWl0ICsgMSA6IDA7CiAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRqICggMCAuLiAkam1heCApIHsKCiAgICAgICAgICAgICAgICAgIyBDbGlwIG5lZ2F0aXZlIG5lc3RpbmcgZGVwdGhzIHRvIHplcm8gdG8gYXZvaWQgcHJvYmxlbXMuCiAgICAgICAgICAgICAgICAgIyBOZWdhdGl2ZSB2YWx1ZXMgY2FuIG9jY3VyIGluIGZpbGVzIHdpdGggdW5iYWxhbmNlZCBjb250YWluZXJzCiAgICAgICAgICAgICAgICAgICAgbXkgJHNsZXZlbCA9ICRyc2xldmVscy0+WyRqXTsKICAgICAgICAgICAgICAgICAgICBpZiAoICRzbGV2ZWwgPCAwICkgeyAkc2xldmVsID0gMCB9CgogICAgICAgICAgICAgICAgICAgIGlmICggJHJsZXZlbHMtPlskal0gPiAkbWF4aW11bV9sZXZlbCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG1heGltdW1fbGV2ZWwgPSAkcmxldmVscy0+WyRqXTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgQnV0IGRvIG5vdCBjbGlwIHRoZSAnbGV2ZWwnIHZhcmlhYmxlIHlldC4gV2Ugd2lsbCBkbyB0aGlzCiAgICAgICAgICAgICAgICAgICAgIyBsYXRlciwgaW4gc3ViICdzdG9yZV90b2tlbl90b19nbycuIFRoZSByZWFzb24gaXMgdGhhdCBpbgogICAgICAgICAgICAgICAgICAgICMgZmlsZXMgd2l0aCBsZXZlbCBlcnJvcnMsIHRoZSBsb2dpYyBpbiAnd2VsZF9jdWRkbGVkX2Vsc2UnCiAgICAgICAgICAgICAgICAgICAgIyB1c2VzIGEgc3RhY2sgbG9naWMgdGhhdCB3aWxsIGdpdmUgYmFkIHdlbGRzIGlmIHdlIGNsaXAKICAgICAgICAgICAgICAgICAgICAjIGxldmVscyBoZXJlLgogICAgICAgICAgICAgICAgICAgICMjIGlmICggJHJsZXZlbHMtPlskal0gPCAwICkgeyAkcmxldmVscy0+WyRqXSA9IDAgfQoKICAgICAgICAgICAgICAgICAgICBteSBAdG9rYXJ5OwogICAgICAgICAgICAgICAgICAgIEB0b2thcnlbCiAgICAgICAgICAgICAgICAgICAgICBfVE9LRU5fLCAgICAgICAgIF9UWVBFXywKICAgICAgICAgICAgICAgICAgICAgIF9CTE9DS19UWVBFXywgICAgX0NPTlRBSU5FUl9FTlZJUk9OTUVOVF8sCiAgICAgICAgICAgICAgICAgICAgICBfVFlQRV9TRVFVRU5DRV8sIF9MRVZFTF8sCiAgICAgICAgICAgICAgICAgICAgICBfTEVWRUxfVFJVRV8sICAgIF9TTEVWRUxfLAogICAgICAgICAgICAgICAgICAgICAgX0NJX0xFVkVMXywgICAgICBfTElORV9JTkRFWF8sCiAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgICA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgJHJ0b2tlbnMtPlskal0sICAgICAgICAkcnRva2VuX3R5cGUtPlskal0sCiAgICAgICAgICAgICAgICAgICAgICAgICRyYmxvY2tfdHlwZS0+WyRqXSwgICAgJHJjb250YWluZXJfZW52aXJvbm1lbnQtPlskal0sCiAgICAgICAgICAgICAgICAgICAgICAgICRydHlwZV9zZXF1ZW5jZS0+WyRqXSwgJHJsZXZlbHMtPlskal0sCiAgICAgICAgICAgICAgICAgICAgICAgICRybGV2ZWxzLT5bJGpdLCAgICAgICAgJHNsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgJHJjaV9sZXZlbHMtPlskal0sICAgICAkaW5wdXRfbGluZV9ubywKICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyRyTEx9LCBcQHRva2FyeTsKICAgICAgICAgICAgICAgIH0gIyMgZW5kIGZvcmVhY2ggbXkgJGogKCAwIC4uICRqbWF4ICkKCiAgICAgICAgICAgICAgICAkS2xpbWl0ID0gQHskckxMfSAtIDE7CgogICAgICAgICAgICAgICAgIyBOZWVkIHRvIHJlbWVtYmVyIGlmIHdlIGNhbiB0cmltIHRoZSBpbnB1dCBsaW5lCiAgICAgICAgICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfZW5kZWRfaW5fYmxhbmtfdG9rZW59ID0KICAgICAgICAgICAgICAgICAgJHJ0b2tlbl90eXBlLT5bJGptYXhdIGVxICdiJzsKCiAgICAgICAgICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfbGV2ZWxfMH0gICAgICAgICAgPSAkcmxldmVscy0+WzBdOwogICAgICAgICAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X2NpX2xldmVsXzB9ICAgICAgID0gJHJjaV9sZXZlbHMtPlswXTsKICAgICAgICAgICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19uZXN0aW5nX2Jsb2Nrc18wfSA9ICRybmVzdGluZ19ibG9ja3MtPlswXTsKICAgICAgICAgICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19uZXN0aW5nX3Rva2Vuc18wfSA9ICRybmVzdGluZ190b2tlbnMtPlswXTsKICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAkam1heCA+PSAwICkKCiAgICAgICAgICAgICRDT0RFX3R5cGUgPQogICAgICAgICAgICAgICRzZWxmLT5nZXRfQ09ERV90eXBlKCAkbGluZV9vZl90b2tlbnMsICRLZmlyc3QsICRLbGltaXQgKTsKCiAgICAgICAgICAgICR0ZWVfb3V0cHV0IHx8PQogICAgICAgICAgICAgICAgICRyT3B0c190ZWVfYmxvY2tfY29tbWVudHMKICAgICAgICAgICAgICAmJiAkam1heCA9PSAwCiAgICAgICAgICAgICAgJiYgJHJMTC0+WyRLZmlyc3RdLT5bX1RZUEVfXSBlcSAnIyc7CgogICAgICAgICAgICAkdGVlX291dHB1dCB8fD0KICAgICAgICAgICAgICAgICAkck9wdHNfdGVlX3NpZGVfY29tbWVudHMKICAgICAgICAgICAgICAmJiBkZWZpbmVkKCRLZmlyc3QpCiAgICAgICAgICAgICAgJiYgJEtsaW1pdCA+ICRLZmlyc3QKICAgICAgICAgICAgICAmJiAkckxMLT5bJEtsaW1pdF0tPltfVFlQRV9dIGVxICcjJzsKCiAgICAgICAgICAgICMgSGFuZGxlIGFueSByZXF1ZXN0ZWQgc2lkZSBjb21tZW50IGRlbGV0aW9ucy4gSXQgaXMgZWFzaWVyIHRvIGdldAogICAgICAgICAgICAjIHRoaXMgZG9uZSBoZXJlIHJhdGhlciB0aGFuIGZhcnRoZXIgZG93biB0aGUgcGlwZWxpbmUgYmVjYXVzZSBJTwogICAgICAgICAgICAjIGxpbmVzIHRha2UgYSBkaWZmZXJlbnQgcm91dGUsIGFuZCBiZWNhdXNlIGxpbmVzIHdpdGggZGVsZXRlZCBIU0MKICAgICAgICAgICAgIyBiZWNvbWUgQkwgbGluZXMuICBBbiBzaW5jZSB3ZSBhcmUgZGVsZXRpbmcgbm93LCB3ZSBoYXZlIHRvIGFsc28KICAgICAgICAgICAgIyBoYW5kbGUgYW55IHRlZS0gcmVxdWVzdHMgYmVmb3JlIHRoZSBzaWRlIGNvbW1lbnRzIHZhbmlzaC4KICAgICAgICAgICAgbXkgJGRlbGV0ZV9zaWRlX2NvbW1lbnQgPQogICAgICAgICAgICAgICAgICRyT3B0c19kZWxldGVfc2lkZV9jb21tZW50cwogICAgICAgICAgICAgICYmIGRlZmluZWQoJEtmaXJzdCkKICAgICAgICAgICAgICAmJiAkckxMLT5bJEtsaW1pdF0tPltfVFlQRV9dIGVxICcjJwogICAgICAgICAgICAgICYmICggJEtsaW1pdCA+ICRLZmlyc3QgfHwgJENPREVfdHlwZSBlcSAnSFNDJyApCiAgICAgICAgICAgICAgJiYgKCAhJENPREVfdHlwZSB8fCAkQ09ERV90eXBlIGVxICdIU0MnIHx8ICRDT0RFX3R5cGUgZXEgJ0lPJyApOwoKICAgICAgICAgICAgaWYgKCAgICRyT3B0c19kZWxldGVfY2xvc2luZ19zaWRlX2NvbW1lbnRzCiAgICAgICAgICAgICAgICAmJiAhJGRlbGV0ZV9zaWRlX2NvbW1lbnQKICAgICAgICAgICAgICAgICYmIGRlZmluZWQoJEtmaXJzdCkKICAgICAgICAgICAgICAgICYmICRLbGltaXQgPiAkS2ZpcnN0CiAgICAgICAgICAgICAgICAmJiAkckxMLT5bJEtsaW1pdF0tPltfVFlQRV9dIGVxICcjJwogICAgICAgICAgICAgICAgJiYgKCAhJENPREVfdHlwZSB8fCAkQ09ERV90eXBlIGVxICdIU0MnIHx8ICRDT0RFX3R5cGUgZXEgJ0lPJyApCiAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBteSAkdG9rZW4gID0gJHJMTC0+WyRLbGltaXRdLT5bX1RPS0VOX107CiAgICAgICAgICAgICAgICBteSAkS19tICAgID0gJEtsaW1pdCAtIDE7CiAgICAgICAgICAgICAgICBteSAkdHlwZV9tID0gJHJMTC0+WyRLX21dLT5bX1RZUEVfXTsKICAgICAgICAgICAgICAgIGlmICggJHR5cGVfbSBlcSAnYicgJiYgJEtfbSA+ICRLZmlyc3QgKSB7ICRLX20tLSB9CiAgICAgICAgICAgICAgICBteSAkbGFzdF9ub25ibGFua19ibG9ja190eXBlID0gJHJMTC0+WyRLX21dLT5bX0JMT0NLX1RZUEVfXTsKICAgICAgICAgICAgICAgIGlmICggICAkdG9rZW4gPX4gLyRjbG9zaW5nX3NpZGVfY29tbWVudF9wcmVmaXhfcGF0dGVybi8KICAgICAgICAgICAgICAgICAgICAmJiAkbGFzdF9ub25ibGFua19ibG9ja190eXBlID1+CiAgICAgICAgICAgICAgICAgICAgLyRjbG9zaW5nX3NpZGVfY29tbWVudF9saXN0X3BhdHRlcm4vICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkZGVsZXRlX3NpZGVfY29tbWVudCA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gIyMgZW5kIGlmICggJHJPcHRzX2RlbGV0ZV9jbG9zaW5nX3NpZGVfY29tbWVudHMuLi4pCgogICAgICAgICAgICBpZiAoJGRlbGV0ZV9zaWRlX2NvbW1lbnQpIHsKICAgICAgICAgICAgICAgIHBvcCBAeyRyTEx9OwogICAgICAgICAgICAgICAgJEtsaW1pdCAtPSAxOwogICAgICAgICAgICAgICAgaWYgKCAgICRLbGltaXQgPiAkS2ZpcnN0CiAgICAgICAgICAgICAgICAgICAgJiYgJHJMTC0+WyRLbGltaXRdLT5bX1RZUEVfXSBlcSAnYicgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHBvcCBAeyRyTEx9OwogICAgICAgICAgICAgICAgICAgICRLbGltaXQgLT0gMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIFRoZSAtaW8gb3B0aW9uIG91dHB1dHMgdGhlIGxpbmUgdGV4dCwgc28gd2UgaGF2ZSB0byB1cGRhdGUKICAgICAgICAgICAgICAgICMgdGhlIGxpbmUgdGV4dCBzbyB0aGF0IHRoZSBjb21tZW50IGRvZXMgbm90IHJlYXBwZWFyLgogICAgICAgICAgICAgICAgaWYgKCAkQ09ERV90eXBlIGVxICdJTycgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJGxpbmUgPSAiIjsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRLSyAoICRLZmlyc3QgLi4gJEtsaW1pdCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmUgLj0gJHJMTC0+WyRLS10tPltfVE9LRU5fXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdGV4dH0gPSAkbGluZSAuICJcbiI7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBJZiB3ZSBkZWxldGUgYSBoYW5naW5nIHNpZGUgY29tbWVudCB0aGUgbGluZSBiZWNvbWVzIGJsYW5rLgogICAgICAgICAgICAgICAgaWYgKCAkQ09ERV90eXBlIGVxICdIU0MnICkgeyAkQ09ERV90eXBlID0gJ0JMJyB9CiAgICAgICAgICAgIH0KCiAgICAgICAgfSAjIyBlbmQgaWYgKCAkbGluZV90eXBlIGVxICdDT0RFJykKCiAgICAgICAgIyBGaW5pc2ggc3RvcmluZyBsaW5lIHZhcmlhYmxlcwogICAgICAgIGlmICgkdGVlX291dHB1dCkgewogICAgICAgICAgICBteSAkZmhfdGVlICAgID0gJHNlbGYtPltfZmhfdGVlX107CiAgICAgICAgICAgIG15ICRsaW5lX3RleHQgPSAkbGluZV9vZl90b2tlbnNfb2xkLT57X2xpbmVfdGV4dH07CiAgICAgICAgICAgICRmaF90ZWUtPnByaW50KCRsaW5lX3RleHQpIGlmICgkZmhfdGVlKTsKICAgICAgICB9CgogICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19yS19yYW5nZX0gID0gWyAkS2ZpcnN0LCAkS2xpbWl0IF07CiAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X2NvZGVfdHlwZX0gPSAkQ09ERV90eXBlOwogICAgICAgICRzZWxmLT5bX0tsaW1pdF9dICAgICAgICAgICAgID0gJEtsaW1pdDsKICAgICAgICAkc2VsZi0+W19tYXhpbXVtX2xldmVsX10gICAgICA9ICRtYXhpbXVtX2xldmVsOwoKICAgICAgICBwdXNoIEB7JHJsaW5lc19uZXd9LCAkbGluZV9vZl90b2tlbnM7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBnZXRfQ09ERV90eXBlIHsKICAgICAgICBteSAoICRzZWxmLCAkbGluZV9vZl90b2tlbnMsICRLZmlyc3QsICRLbGFzdCApID0gQF87CgogICAgICAgICMgV2UgYXJlIGxvb2tpbmcgYXQgYSBsaW5lIG9mIGNvZGUgYW5kIHNldHRpbmcgYSBmbGFnIHRvCiAgICAgICAgIyBkZXNjcmliZSBhbnkgc3BlY2lhbCBwcm9jZXNzaW5nIHRoYXQgaXQgcmVxdWlyZXMKCiAgICAgICAgIyBQb3NzaWJsZSBDT0RFX3R5cGVzCiAgICAgICAgIyAnVkInICA9IFZlcmJhdGltIC0gbGluZSBnb2VzIG91dCB2ZXJiYXRpbSAoYSBxdW90ZSkKICAgICAgICAjICdGUycgID0gRm9ybWF0IFNraXBwaW5nIC0gbGluZSBnb2VzIG91dCB2ZXJiYXRpbQogICAgICAgICMgJ0JMJyAgPSBCbGFuayBMaW5lCiAgICAgICAgIyAnSFNDJyA9IEhhbmdpbmcgU2lkZSBDb21tZW50IC0gZml4IHRoaXMgaGFuZ2luZyBzaWRlIGNvbW1lbnQKICAgICAgICAjICdTQkNYJz0gU3RhdGljIEJsb2NrIENvbW1lbnQgV2l0aG91dCBMZWFkaW5nIFNwYWNlCiAgICAgICAgIyAnU0JDJyA9IFN0YXRpYyBCbG9jayBDb21tZW50CiAgICAgICAgIyAnQkMnICA9IEJsb2NrIENvbW1lbnQgLSBhbiBvcmRpbmFyeSBmdWxsIGxpbmUgY29tbWVudAogICAgICAgICMgJ0lPJyAgPSBJbmRlbnQgT25seSAtIGxpbmUgZ29lcyBvdXQgdW5jaGFuZ2VkIGV4Y2VwdCBmb3IgaW5kZW50YXRpb24KICAgICAgICAjICdOSU4nID0gTm8gSW50ZXJuYWwgTmV3bGluZXMgLSBsaW5lIGRvZXMgbm90IGdldCBicm9rZW4KICAgICAgICAjICdWRVInID0gVkVSU0lPTiBzdGF0ZW1lbnQKICAgICAgICAjICcnICAgID0gb3JkaW5hcnkgbGluZSBvZiBjb2RlIHdpdGggbm8gcmVzdHJ1Y3Rpb25zCgogICAgICAgIG15ICRyTEwgPSAkc2VsZi0+W19yTExfXTsKCiAgICAgICAgbXkgJENPREVfdHlwZSAgPSAiIjsKICAgICAgICBteSAkaW5wdXRfbGluZSA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3RleHR9OwogICAgICAgIG15ICRqbWF4ICAgICAgID0gZGVmaW5lZCgkS2ZpcnN0KSA/ICRLbGFzdCAtICRLZmlyc3QgOiAtMTsKCiAgICAgICAgbXkgJGlzX2Jsb2NrX2NvbW1lbnQgPSAwOwogICAgICAgIG15ICRoYXNfc2lkZV9jb21tZW50ID0gMDsKCiAgICAgICAgaWYgKCAkam1heCA+PSAwICYmICRyTEwtPlskS2xhc3RdLT5bX1RZUEVfXSBlcSAnIycgKSB7CiAgICAgICAgICAgIGlmICAgKCAkam1heCA9PSAwICkgeyAkaXNfYmxvY2tfY29tbWVudCA9IDE7IH0KICAgICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICB7ICRoYXNfc2lkZV9jb21tZW50ID0gMSB9CiAgICAgICAgfQoKICAgICAgICAjIFdyaXRlIGxpbmUgdmVyYmF0aW0gaWYgd2UgYXJlIGluIGEgZm9ybWF0dGluZyBza2lwIHNlY3Rpb24KICAgICAgICBpZiAoJEluX2Zvcm1hdF9za2lwcGluZ19zZWN0aW9uKSB7CgogICAgICAgICAgICAjIE5vdGU6IGV4dHJhIHNwYWNlIGFwcGVuZGVkIHRvIGNvbW1lbnQgc2ltcGxpZmllcyBwYXR0ZXJuIG1hdGNoaW5nCiAgICAgICAgICAgIGlmICggJGlzX2Jsb2NrX2NvbW1lbnQKICAgICAgICAgICAgICAgICYmICggJHJMTC0+WyRLZmlyc3RdLT5bX1RPS0VOX10gLiAiICIgKSA9fgogICAgICAgICAgICAgICAgLyRmb3JtYXRfc2tpcHBpbmdfcGF0dGVybl9lbmQvICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJEluX2Zvcm1hdF9za2lwcGluZ19zZWN0aW9uID0gMDsKICAgICAgICAgICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoIkV4aXRpbmcgZm9ybWF0dGluZyBza2lwIHNlY3Rpb25cbiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRDT0RFX3R5cGUgPSAnRlMnOwogICAgICAgICAgICBnb3RvIFJFVFVSTjsKICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgZm9yIGEgY29udGludWVkIHF1b3RlLi4KICAgICAgICBpZiAoICRsaW5lX29mX3Rva2Vucy0+e19zdGFydGluZ19pbl9xdW90ZX0gKSB7CgogICAgICAgICAgICAjIEEgbGluZSB3aGljaCBpcyBlbnRpcmVseSBhIHF1b3RlIG9yIHBhdHRlcm4gbXVzdCBnbyBvdXQKICAgICAgICAgICAgIyB2ZXJiYXRpbS4gIE5vdGU6IHRoZSBcbiBpcyBjb250YWluZWQgaW4gJGlucHV0X2xpbmUuCiAgICAgICAgICAgIGlmICggJGptYXggPD0gMCApIHsKICAgICAgICAgICAgICAgIGlmICggKCAkaW5wdXRfbGluZSA9fiAiXHQiICkgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJGlucHV0X2xpbmVfbnVtYmVyID0gJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfbnVtYmVyfTsKICAgICAgICAgICAgICAgICAgICAkc2VsZi0+bm90ZV9lbWJlZGRlZF90YWIoJGlucHV0X2xpbmVfbnVtYmVyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRDT0RFX3R5cGUgPSAnVkInOwogICAgICAgICAgICAgICAgZ290byBSRVRVUk47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgU2VlIGlmIHdlIGFyZSBlbnRlcmluZyBhIGZvcm1hdHRpbmcgc2tpcCBzZWN0aW9uCiAgICAgICAgaWYgKCAgICRyT3B0c19mb3JtYXRfc2tpcHBpbmcKICAgICAgICAgICAgJiYgJGlzX2Jsb2NrX2NvbW1lbnQKICAgICAgICAgICAgJiYgKCAkckxMLT5bJEtmaXJzdF0tPltfVE9LRU5fXSAuICIgIiApID1+CiAgICAgICAgICAgIC8kZm9ybWF0X3NraXBwaW5nX3BhdHRlcm5fYmVnaW4vICkKICAgICAgICB7CiAgICAgICAgICAgICRJbl9mb3JtYXRfc2tpcHBpbmdfc2VjdGlvbiA9IDE7CiAgICAgICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoIkVudGVyaW5nIGZvcm1hdHRpbmcgc2tpcCBzZWN0aW9uXG4iKTsKICAgICAgICAgICAgJENPREVfdHlwZSA9ICdGUyc7CiAgICAgICAgICAgIGdvdG8gUkVUVVJOOwogICAgICAgIH0KCiAgICAgICAgIyBpZ25vcmUgdHJhaWxpbmcgYmxhbmsgdG9rZW5zICh0aGV5IHdpbGwgZ2V0IGRlbGV0ZWQgbGF0ZXIpCiAgICAgICAgaWYgKCAkam1heCA+IDAgJiYgJHJMTC0+WyRLbGFzdF0tPltfVFlQRV9dIGVxICdiJyApIHsKICAgICAgICAgICAgJGptYXgtLTsKICAgICAgICB9CgogICAgICAgICMgYmxhbmsgbGluZS4uCiAgICAgICAgaWYgKCAkam1heCA8IDAgKSB7CiAgICAgICAgICAgICRDT0RFX3R5cGUgPSAnQkwnOwogICAgICAgICAgICBnb3RvIFJFVFVSTjsKICAgICAgICB9CgogICAgICAgICMgc2VlIGlmIHRoaXMgaXMgYSBzdGF0aWMgYmxvY2sgY29tbWVudCAoc3RhcnRzIHdpdGggIyMgYnkgZGVmYXVsdCkKICAgICAgICBteSAkaXNfc3RhdGljX2Jsb2NrX2NvbW1lbnQgICAgICAgICAgICAgICAgICAgICAgID0gMDsKICAgICAgICBteSAkaXNfc3RhdGljX2Jsb2NrX2NvbW1lbnRfd2l0aG91dF9sZWFkaW5nX3NwYWNlID0gMDsKICAgICAgICBpZiAoICAgJGlzX2Jsb2NrX2NvbW1lbnQKICAgICAgICAgICAgJiYgJHJPcHRzLT57J3N0YXRpYy1ibG9jay1jb21tZW50cyd9CiAgICAgICAgICAgICYmICRpbnB1dF9saW5lID1+IC8kc3RhdGljX2Jsb2NrX2NvbW1lbnRfcGF0dGVybi8gKQogICAgICAgIHsKICAgICAgICAgICAgJGlzX3N0YXRpY19ibG9ja19jb21tZW50ID0gMTsKICAgICAgICAgICAgJGlzX3N0YXRpY19ibG9ja19jb21tZW50X3dpdGhvdXRfbGVhZGluZ19zcGFjZSA9CiAgICAgICAgICAgICAgc3Vic3RyKCAkaW5wdXRfbGluZSwgMCwgMSApIGVxICcjJzsKICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgZm9yIGNvbW1lbnRzIHdoaWNoIGFyZSBsaW5lIGRpcmVjdGl2ZXMKICAgICAgICAjIFRyZWF0IGV4YWN0bHkgYXMgc3RhdGljIGJsb2NrIGNvbW1lbnRzIHdpdGhvdXQgbGVhZGluZyBzcGFjZQogICAgICAgICMgcmVmZXJlbmNlOiBwZXJsc3luLCBuZWFyIGVuZCwgc2VjdGlvbiBQbGFpbiBPbGQgQ29tbWVudHMgKE5vdCEpCiAgICAgICAgIyBleGFtcGxlOiAnIyBsaW5lIDQyICJuZXdfZmlsZW5hbWUucGx4IicKICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICRpc19ibG9ja19jb21tZW50CiAgICAgICAgICAgICYmICRpbnB1dF9saW5lID1+IC9eXCMgICBccyoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgXHMrIChcZCspICAgXHMqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPzpccygiPykoW14iXSspXDIpPyBccyoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQveAogICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJGlzX3N0YXRpY19ibG9ja19jb21tZW50ICAgICAgICAgICAgICAgICAgICAgICA9IDE7CiAgICAgICAgICAgICRpc19zdGF0aWNfYmxvY2tfY29tbWVudF93aXRob3V0X2xlYWRpbmdfc3BhY2UgPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBsb29rIGZvciBoYW5naW5nIHNpZGUgY29tbWVudAogICAgICAgIGlmICgKICAgICAgICAgICAgICAgJGlzX2Jsb2NrX2NvbW1lbnQKICAgICAgICAgICAgJiYgJExhc3RfbGluZV9oYWRfc2lkZV9jb21tZW50ICAjIGxhc3QgbGluZSBoYWQgc2lkZSBjb21tZW50CiAgICAgICAgICAgICYmICRpbnB1dF9saW5lID1+IC9eXHMvICAgICAgICAgIyB0aGVyZSBpcyBzb21lIGxlYWRpbmcgc3BhY2UKICAgICAgICAgICAgJiYgISRpc19zdGF0aWNfYmxvY2tfY29tbWVudCAgICAjIGRvIG5vdCBtYWtlIHN0YXRpYyBjb21tZW50IGhhbmdpbmcKICAgICAgICAgICAgJiYgJHJPcHRzLT57J2hhbmdpbmctc2lkZS1jb21tZW50cyd9ICAgICMgdXNlciBpcyBhbGxvd2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBoYW5naW5nIHNpZGUgY29tbWVudHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbGlrZSB0aGlzCiAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkaGFzX3NpZGVfY29tbWVudCA9IDE7CiAgICAgICAgICAgICRDT0RFX3R5cGUgICAgICAgID0gJ0hTQyc7CiAgICAgICAgICAgIGdvdG8gUkVUVVJOOwogICAgICAgIH0KCiAgICAgICAgIyBIYW5kbGUgYSBibG9jayAoZnVsbC1saW5lKSBjb21tZW50Li4KICAgICAgICBpZiAoJGlzX2Jsb2NrX2NvbW1lbnQpIHsKCiAgICAgICAgICAgIGlmICgkaXNfc3RhdGljX2Jsb2NrX2NvbW1lbnRfd2l0aG91dF9sZWFkaW5nX3NwYWNlKSB7CiAgICAgICAgICAgICAgICAkQ09ERV90eXBlID0gJ1NCQ1gnOwogICAgICAgICAgICAgICAgZ290byBSRVRVUk47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCRpc19zdGF0aWNfYmxvY2tfY29tbWVudCkgewogICAgICAgICAgICAgICAgJENPREVfdHlwZSA9ICdTQkMnOwogICAgICAgICAgICAgICAgZ290byBSRVRVUk47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCRMYXN0X2xpbmVfaGFkX3NpZGVfY29tbWVudAogICAgICAgICAgICAgICAgJiYgISRyT3B0c19tYXhpbXVtX2NvbnNlY3V0aXZlX2JsYW5rX2xpbmVzCiAgICAgICAgICAgICAgICAmJiAkckxMLT5bJEtmaXJzdF0tPltfTEVWRUxfXSA+IDAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAjIEVtZXJnZW5jeSBmaXggdG8ga2VlcCBhIGJsb2NrIGNvbW1lbnQgZnJvbSBiZWNvbWluZyBhIGhhbmdpbmcKICAgICAgICAgICAgICAgICMgc2lkZSBjb21tZW50LiAgVGhpcyBmaXggaXMgZm9yIHRoZSBjYXNlIHRoYXQgYmxhbmsgbGluZXMKICAgICAgICAgICAgICAgICMgY2Fubm90IGJlIGluc2VydGVkLiAgVGhlcmUgaXMgcmVsYXRlZCBjb2RlIGluIHN1YgogICAgICAgICAgICAgICAgIyAncHJvY2Vzc19saW5lX29mX0NPREUnCiAgICAgICAgICAgICAgICAkQ09ERV90eXBlID0gJ1NCQ1gnOwogICAgICAgICAgICAgICAgZ290byBSRVRVUk47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkQ09ERV90eXBlID0gJ0JDJzsKICAgICAgICAgICAgICAgIGdvdG8gUkVUVVJOOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIEVuZCBvZiBjb21tZW50cy4gSGFuZGxlIGEgbGluZSBvZiBub3JtYWwgY29kZToKCiAgICAgICAgaWYgKCRyT3B0c19pbmRlbnRfb25seSkgewogICAgICAgICAgICAkQ09ERV90eXBlID0gJ0lPJzsKICAgICAgICAgICAgZ290byBSRVRVUk47CiAgICAgICAgfQoKICAgICAgICBpZiAoICEkck9wdHNfYWRkX25ld2xpbmVzICkgewogICAgICAgICAgICAkQ09ERV90eXBlID0gJ05JTic7CiAgICAgICAgICAgIGdvdG8gUkVUVVJOOwogICAgICAgIH0KCiAgICAgICAgIyAgIFBhdGNoIG5lZWRlZCBmb3IgTWFrZU1ha2VyLiAgRG8gbm90IGJyZWFrIGEgc3RhdGVtZW50CiAgICAgICAgIyAgIGluIHdoaWNoICRWRVJTSU9OIG1heSBiZSBjYWxjdWxhdGVkLiAgU2VlIE1ha2VNYWtlci5wbTsKICAgICAgICAjICAgdGhpcyBpcyBiYXNlZCBvbiB0aGUgY29kaW5nIGluIGl0LgogICAgICAgICMgICBUaGUgZmlyc3QgbGluZSBvZiBhIGZpbGUgdGhhdCBtYXRjaGVzIHRoaXMgd2lsbCBiZSBldmFsJ2Q6CiAgICAgICAgIyAgICAgICAvKFtcJCpdKSgoW1x3XDpcJ10qKVxiVkVSU0lPTilcYi4qXD0vCiAgICAgICAgIyAgIEV4YW1wbGVzOgogICAgICAgICMgICAgICpWRVJTSU9OID0gXCcxLjAxJzsKICAgICAgICAjICAgICAoICRWRVJTSU9OICkgPSAnJFJldmlzaW9uOiAxLjc0ICQgJyA9fiAvXCRSZXZpc2lvbjpccysoW15cc10rKS87CiAgICAgICAgIyAgIFdlIHdpbGwgcGFzcyBzdWNoIGEgbGluZSBzdHJhaWdodCB0aHJvdWdoIHdpdGhvdXQgYnJlYWtpbmcKICAgICAgICAjICAgaXQgdW5sZXNzIC1ucHZsIGlzIHVzZWQuCgogICAgICAgICMgICBQYXRjaCBmb3IgcHJvYmxlbSByZXBvcnRlZCBpbiBSVCAjODE4NjYsIHdoZXJlIGZpbGVzCiAgICAgICAgIyAgIGhhZCBiZWVuIGZsYXR0ZW5lZCBpbnRvIGEgc2luZ2xlIGxpbmUgYW5kIGNvdWxkbid0IGJlCiAgICAgICAgIyAgIHRpZGllZCB3aXRob3V0IC1ucHZsLiAgVGhlcmUgYXJlIHR3byBwYXJ0cyB0byB0aGlzIHBhdGNoOgogICAgICAgICMgICBGaXJzdCwgaXQgaXMgbm90IGRvbmUgZm9yIGEgcmVhbGx5IGxvbmcgbGluZSAoODAgdG9rZW5zIGZvciBub3cpLgogICAgICAgICMgICBTZWNvbmQsIHdlIHdpbGwgb25seSBhbGxvdyB1cCB0byBvbmUgc2VtaWNvbG9uCiAgICAgICAgIyAgIGJlZm9yZSB0aGUgVkVSU0lPTi4gIFdlIG5lZWQgdG8gYWxsb3cgYXQgbGVhc3Qgb25lIHNlbWljb2xvbgogICAgICAgICMgICBmb3Igc3RhdGVtZW50cyBsaWtlIHRoaXM6CiAgICAgICAgIyAgICAgIHJlcXVpcmUgRXhwb3J0ZXI7ICBvdXIgJFZFUlNJT04gPSAkRXhwb3J0ZXI6OlZFUlNJT047CiAgICAgICAgIyAgIHdoZXJlIGJvdGggc3RhdGVtZW50cyBtdXN0IGJlIG9uIGEgc2luZ2xlIGxpbmUgZm9yIE1ha2VNYWtlcgoKICAgICAgICBteSAkaXNfVkVSU0lPTl9zdGF0ZW1lbnQgPSAwOwogICAgICAgIGlmICggICEkU2F3X1ZFUlNJT05faW5fdGhpc19maWxlCiAgICAgICAgICAgICYmICRqbWF4IDwgODAKICAgICAgICAgICAgJiYgJGlucHV0X2xpbmUgPX4KICAgICAgICAgICAgL15bXjtdKjs/W147XSooW1wkKl0pKChbXHdcOlwnXSopXGJWRVJTSU9OKVxiLipcPS8gKQogICAgICAgIHsKICAgICAgICAgICAgJFNhd19WRVJTSU9OX2luX3RoaXNfZmlsZSA9IDE7CiAgICAgICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoInBhc3NpbmcgVkVSU0lPTiBsaW5lOyAtbnB2bCBkZWFjdGl2YXRlc1xuIik7CgogICAgICAgICAgICAjIFRoaXMgY29kZSB0eXBlIGhhcyBsb3dlciBwcmlvcml0eSB0aGFuIG90aGVycwogICAgICAgICAgICAkQ09ERV90eXBlID0gJ1ZFUic7CiAgICAgICAgICAgIGdvdG8gUkVUVVJOOwogICAgICAgIH0KCiAgICAgIFJFVFVSTjoKICAgICAgICAkTGFzdF9saW5lX2hhZF9zaWRlX2NvbW1lbnQgPSAkaGFzX3NpZGVfY29tbWVudDsKICAgICAgICByZXR1cm4gJENPREVfdHlwZTsKICAgIH0KCn0gIyMgZW5kIGNsb3N1cmUgd3JpdGVfbGluZQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQ09ERSBTRUNUSU9OIDU6IFByZS1wcm9jZXNzIHRoZSBlbnRpcmUgZmlsZQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnN1YiBmaW5pc2hfZm9ybWF0dGluZyB7CgogICAgbXkgKCAkc2VsZiwgJHNldmVyZV9lcnJvciApID0gQF87CgogICAgIyBUaGUgZmlsZSBoYXMgYmVlbiB0b2tlbml6ZWQgYW5kIGlzIHJlYWR5IHRvIGJlIGZvcm1hdHRlZC4KICAgICMgQWxsIG9mIHRoZSByZWxldmFudCBkYXRhIGlzIHN0b3JlZCBpbiAkc2VsZiwgcmVhZHkgdG8gZ28uCgogICAgIyBDaGVjayB0aGUgbWF4aW11bSBsZXZlbC4gSWYgaXQgaXMgZXh0cmVtZWx5IGxhcmdlIHdlIHdpbGwKICAgICMgZ2l2ZSB1cCBhbmQgb3V0cHV0IHRoZSBmaWxlIHZlcmJhdGltLgogICAgbXkgJG1heGltdW1fbGV2ZWwgICAgICAgPSAkc2VsZi0+W19tYXhpbXVtX2xldmVsX107CiAgICBteSAkbWF4aW11bV90YWJsZV9pbmRleCA9ICQjbWF4aW11bV9saW5lX2xlbmd0aDsKICAgIGlmICggISRzZXZlcmVfZXJyb3IgJiYgJG1heGltdW1fbGV2ZWwgPiAkbWF4aW11bV90YWJsZV9pbmRleCApIHsKICAgICAgICAkc2V2ZXJlX2Vycm9yIHx8PSAxOwogICAgICAgIFdhcm4oPDxFT00pOwpUaGUgbWF4aW11bSBpbmRlbnRhdGlvbiBsZXZlbCwgJG1heGltdW1fbGV2ZWwsIGV4Y2VlZHMgdGhlIGJ1aWx0aW4gbGltaXQgb2YgJG1heGltdW1fdGFibGVfaW5kZXguClNvbWV0aGluZyBtYXkgYmUgd3Jvbmc7IGZvcm1hdHRpbmcgd2lsbCBiZSBza2lwcGVkLiAKRU9NCiAgICB9CgogICAgIyBvdXRwdXQgZmlsZSB2ZXJiYXRpbSBpZiBzZXZlcmUgZXJyb3Igb3Igbm8gZm9ybWF0dGluZyByZXF1ZXN0ZWQKICAgIGlmICggJHNldmVyZV9lcnJvciB8fCAkck9wdHMtPntub3RpZHl9ICkgewogICAgICAgICRzZWxmLT5kdW1wX3ZlcmJhdGltKCk7CiAgICAgICAgJHNlbGYtPndyYXB1cCgpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIFVwZGF0ZSB0aGUgJ3NhdmVfbG9nZmlsZScgZmxhZyBiYXNlZCB0byBpbmNsdWRlIGFueSB0b2tlbml6YXRpb24gZXJyb3JzLgogICAgIyBXZSBjYW4gc2F2ZSB0aW1lIGJ5IHNraXBwaW5nIGxvZ2ZpbGUgY2FsbHMgaWYgaXQgaXMgbm90IGdvaW5nIHRvIGJlIHNhdmVkLgogICAgbXkgJGxvZ2dlcl9vYmplY3QgPSAkc2VsZi0+W19sb2dnZXJfb2JqZWN0X107CiAgICBpZiAoJGxvZ2dlcl9vYmplY3QpIHsKICAgICAgICAkc2VsZi0+W19zYXZlX2xvZ2ZpbGVfXSA9ICRsb2dnZXJfb2JqZWN0LT5nZXRfc2F2ZV9sb2dmaWxlKCk7CiAgICB9CgogICAgIyBNYWtlIGEgcGFzcyB0aHJvdWdoIGFsbCB0b2tlbnMsIGFkZGluZyBvciBkZWxldGluZyBhbnkgd2hpdGVzcGFjZSBhcwogICAgIyByZXF1aXJlZC4gIEFsc28gbWFrZSBhbnkgb3RoZXIgY2hhbmdlcywgc3VjaCBhcyBhZGRpbmcgc2VtaWNvbG9ucy4KICAgICMgQWxsIHRva2VuIGNoYW5nZXMgbXVzdCBiZSBtYWRlIGhlcmUgc28gdGhhdCB0aGUgdG9rZW4gZGF0YSBzdHJ1Y3R1cmUKICAgICMgcmVtYWlucyBmaXhlZCBmb3IgdGhlIHJlc3Qgb2YgdGhpcyBpdGVyYXRpb24uCiAgICAkc2VsZi0+cmVzcGFjZV90b2tlbnMoKTsKCiAgICAkc2VsZi0+ZmluZF9tdWx0aWxpbmVfcXcoKTsKCiAgICAkc2VsZi0+a2VlcF9vbGRfbGluZV9icmVha3MoKTsKCiAgICAjIEltcGxlbWVudCBhbnkgd2VsZGluZyBuZWVkZWQgZm9yIHRoZSAtd24gb3IgLWNiIG9wdGlvbnMKICAgICRzZWxmLT53ZWxkX2NvbnRhaW5lcnMoKTsKCiAgICAjIExvY2F0ZSBzbWFsbCBuZXN0ZWQgYmxvY2tzIHdoaWNoIHNob3VsZCBub3QgYmUgYnJva2VuCiAgICAkc2VsZi0+bWFya19zaG9ydF9uZXN0ZWRfYmxvY2tzKCk7CgogICAgJHNlbGYtPmFkanVzdF9pbmRlbnRhdGlvbl9sZXZlbHMoKTsKCiAgICAjIEZpbmlzaGVzIGZvcm1hdHRpbmcgYW5kIHdyaXRlIHRoZSByZXN1bHQgdG8gdGhlIGxpbmUgc2luay4KICAgICMgRXZlbnR1YWxseSB0aGlzIGNhbGwgc2hvdWxkIGp1c3QgY2hhbmdlIHRoZSAncmxpbmVzJyBkYXRhIGFjY29yZGluZyB0byB0aGUKICAgICMgbmV3IGxpbmUgYnJlYWtzIGFuZCB0aGVuIHJldHVybiBzbyB0aGF0IHdlIGNhbiBkbyBhbiBpbnRlcm5hbCBpdGVyYXRpb24KICAgICMgYmVmb3JlIGNvbnRpbnVpbmcgd2l0aCB0aGUgbmV4dCBzdGFnZXMgb2YgZm9ybWF0dGluZy4KICAgICRzZWxmLT5wcm9jZXNzX2FsbF9saW5lcygpOwoKICAgICMgQSBmaW5hbCByb3V0aW5lIHRvIHRpZSB1cCBhbnkgbG9vc2UgZW5kcwogICAgJHNlbGYtPndyYXB1cCgpOwogICAgcmV0dXJuOwp9CgpzdWIgZHVtcF92ZXJiYXRpbSB7CiAgICBteSAkc2VsZiAgID0gc2hpZnQ7CiAgICBteSAkcmxpbmVzID0gJHNlbGYtPltfcmxpbmVzX107CiAgICBmb3JlYWNoIG15ICRsaW5lICggQHskcmxpbmVzfSApIHsKICAgICAgICBteSAkaW5wdXRfbGluZSA9ICRsaW5lLT57X2xpbmVfdGV4dH07CiAgICAgICAgJHNlbGYtPndyaXRlX3VuaW5kZW50ZWRfbGluZSgkaW5wdXRfbGluZSk7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiByZXNwYWNlX3Rva2VucyB7CgogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIHJldHVybiBpZiAkck9wdHMtPnsnaW5kZW50LW9ubHknfTsKCiAgICAjIFRoaXMgcm91dGluZSBpcyBjYWxsZWQgb25jZSBwZXIgZmlsZSB0byBkbyBhcyBtdWNoIGZvcm1hdHRpbmcgYXMgcG9zc2libGUKICAgICMgYmVmb3JlIG5ldyBsaW5lIGJyZWFrcyBhcmUgc2V0LgoKICAgICMgVGhpcyByb3V0aW5lIG1ha2VzIGFsbCBuZWNlc3NhcnkgYW5kIHBvc3NpYmxlIGNoYW5nZXMgdG8gdGhlIHRva2VuaXphdGlvbgogICAgIyBhZnRlciB0aGUgaW5pdGlhbCB0b2tlbml6YXRpb24gb2YgdGhlIGZpbGUuIFRoaXMgaXMgYSB0ZWRpb3VzIHJvdXRpbmUsCiAgICAjIGJ1dCBiYXNpY2FsbHkgaXQgY29uc2lzdHMgb2YgaW5zZXJ0aW5nIGFuZCBkZWxldGluZyB3aGl0ZXNwYWNlIGJldHdlZW4KICAgICMgbm9uYmxhbmsgdG9rZW5zIGFjY29yZGluZyB0byB0aGUgc2VsZWN0ZWQgcGFyYW1ldGVycy4gSW4gYSBmZXcgY2FzZXMKICAgICMgbm9uLXNwYWNlIGNoYXJhY3RlcnMgYXJlIGFkZGVkLCBkZWxldGVkIG9yIG1vZGlmaWVkLgoKICAgICMgVGhlIGdvYWwgb2YgdGhpcyByb3V0aW5lIGlzIHRvIGNyZWF0ZSBhIG5ldyB0b2tlbiBhcnJheSB3aGljaCBvbmx5IG5lZWRzCiAgICAjIHRoZSBkZWZpbml0aW9uIG9mIG5ldyBsaW5lIGJyZWFrcyBhbmQgcGFkZGluZyB0byBjb21wbGV0ZSBmb3JtYXR0aW5nLiAgSW4KICAgICMgYSBmZXcgY2FzZXMgd2UgaGF2ZSB0byBjaGVhdCBhIGxpdHRsZSB0byBhY2hpZXZlIHRoaXMgZ29hbC4gIEluCiAgICAjIHBhcnRpY3VsYXIsIHdlIG1heSBub3Qga25vdyBpZiBhIHNlbWljb2xvbiB3aWxsIGJlIG5lZWRlZCwgYmVjYXVzZSBpdAogICAgIyBkZXBlbmRzIG9uIGhvdyB0aGUgbGluZSBicmVha3MgZ28uICBUbyBoYW5kbGUgdGhpcywgd2UgaW5jbHVkZSB0aGUKICAgICMgc2VtaWNvbG9uIGFzIGEgJ3BoYW50b20nIHdoaWNoIGNhbiBiZSBkaXNwbGF5ZWQgYXMgbm9ybWFsIG9yIGFzIGFuIGVtcHR5CiAgICAjIHN0cmluZy4KCiAgICAjIE1ldGhvZDogVGhlIG9sZCB0b2tlbnMgYXJlIGNvcGllZCBvbmUtYnktb25lLCB3aXRoIGNoYW5nZXMsIGZyb20gdGhlIG9sZAogICAgIyBsaW5lYXIgc3RvcmFnZSBhcnJheSAkckxMIHRvIGEgbmV3IGFycmF5ICRyTExfbmV3LgoKICAgIG15ICRyTEwgICAgICAgICAgICAgPSAkc2VsZi0+W19yTExfXTsKICAgIG15ICRLbGltaXRfb2xkICAgICAgPSAkc2VsZi0+W19LbGltaXRfXTsKICAgIG15ICRybGluZXMgICAgICAgICAgPSAkc2VsZi0+W19ybGluZXNfXTsKICAgIG15ICRsZW5ndGhfZnVuY3Rpb24gPSAkc2VsZi0+W19sZW5ndGhfZnVuY3Rpb25fXTsKICAgIG15ICRpc19lbmNvZGVkX2RhdGEgPSAkc2VsZi0+W19pc19lbmNvZGVkX2RhdGFfXTsKCiAgICBteSAkckxMX25ldyA9IFtdOyAgICAjIFRoaXMgaXMgdGhlIG5ldyBhcnJheQogICAgbXkgJEtLICAgICAgPSAwOwogICAgbXkgJHJ0b2tlbl92YXJzOwogICAgbXkgJEttYXggPSBAeyRyTEx9IC0gMTsKCiAgICBteSAkQ09ERV90eXBlID0gIiI7CiAgICBteSAkbGluZV90eXBlID0gIiI7CgogICAgbXkgJHJPcHRzX2FkZF93aGl0ZXNwYWNlICAgICAgICA9ICRyT3B0cy0+eydhZGQtd2hpdGVzcGFjZSd9OwogICAgbXkgJHJPcHRzX2RlbGV0ZV9vbGRfd2hpdGVzcGFjZSA9ICRyT3B0cy0+eydkZWxldGUtb2xkLXdoaXRlc3BhY2UnfTsKICAgIG15ICRyT3B0c19pZ25vcmVfc2lkZV9jb21tZW50X2xlbmd0aHMgPQogICAgICAkck9wdHMtPnsnaWdub3JlLXNpZGUtY29tbWVudC1sZW5ndGhzJ307CgogICAgIyBTZXQgdGhlIHdoaXRlc3BhY2UgZmxhZ3MsIHdoaWNoIGluZGljYXRlIHRoZSB0b2tlbiBzcGFjaW5nIHByZWZlcmVuY2UuCiAgICBteSAkcndoaXRlc3BhY2VfZmxhZ3MgPSAkc2VsZi0+c2V0X3doaXRlc3BhY2VfZmxhZ3MoKTsKCiAgICAjIHdlIHdpbGwgYmUgc2V0dGluZyB0b2tlbiBsZW5ndGhzIGFzIHdlIGdvCiAgICBteSAkY3VtdWxhdGl2ZV9sZW5ndGggPSAwOwoKICAgICMgV2UgYWxzbyBkZWZpbmUgdGhlc2UgaGFzaCBpbmRleGVzIGdpdmluZyBjb250YWluZXIgdG9rZW4gYXJyYXkgaW5kZXhlcwogICAgIyBhcyBhIGZ1bmN0aW9uIG9mIHRoZSBjb250YWluZXIgc2VxdWVuY2UgbnVtYmVycy4gIEZvciBleGFtcGxlLAogICAgbXkgJEtfb3BlbmluZ19jb250YWluZXIgPSB7fTsgICAgIyBvcGVuaW5nIFsgeyBvciAoCiAgICBteSAkS19jbG9zaW5nX2NvbnRhaW5lciA9IHt9OyAgICAjIGNsb3NpbmcgXSB9IG9yICkKICAgIG15ICRLX29wZW5pbmdfdGVybmFyeSAgID0ge307ICAgICMgb3BlbmluZyA/IG9mIHRlcm5hcnkKICAgIG15ICRLX2Nsb3NpbmdfdGVybmFyeSAgID0ge307ICAgICMgY2xvc2luZyA6IG9mIHRlcm5hcnkKCiAgICAjIExpc3Qgb2YgbmV3IEsgaW5kZXhlcyBvZiBwaGFudG9tIHNlbWljb2xvbnMKICAgICMgVGhpcyB3aWxsIGJlIG5lZWRlZCBpZiB3ZSB3YW50IHRvIHVuZG8gdGhlbSBmb3IgaXRlcmF0aW9ucwogICAgbXkgJHJLX3BoYW50b21fc2VtaWNvbG9ucyA9IFtdOwoKICAgIG15ICVzZXFub19zdGFjazsKICAgIG15ICVLS19zdGFjazsgICAgICAgICAgICAgICAgICAgICAgIyBOb3RlOiBvbGQgSyBpbmRleAogICAgbXkgJUtfb3BlbmluZ19ieV9zZXFubyAgICA9ICgpOyAgICAjIE5vdGU6IG9sZCBLIGluZGV4CiAgICBteSAkZGVwdGhfbmV4dCAgICAgICAgICAgID0gMDsKICAgIG15ICRkZXB0aF9uZXh0X21heCAgICAgICAgPSAwOwogICAgbXkgJHJ0eXBlX2NvdW50X2J5X3NlcW5vICA9IHt9OwogICAgbXkgJHJpc19icm9rZW5fY29udGFpbmVyICA9IHt9OwogICAgbXkgJHJoYXNfYnJva2VuX2NvbnRhaW5lciA9IHt9OwogICAgbXkgJHJwYXJlbnRfb2Zfc2Vxbm8gICAgICA9IHt9OwogICAgbXkgJHJjaGlsZHJlbl9vZl9zZXFubyAgICA9IHt9OwoKICAgIG15ICRsYXN0X25vbmJsYW5rX3R5cGUgICAgICAgPSAnOyc7CiAgICBteSAkbGFzdF9ub25ibGFua190b2tlbiAgICAgID0gJzsnOwogICAgbXkgJGxhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZSA9ICcnOwogICAgbXkgJG5vbmJsYW5rX3Rva2VuX2NvdW50ICAgICA9IDA7CiAgICBteSAkc3RvcmVfdG9rZW4gICAgICAgICAgICAgID0gc3ViIHsKICAgICAgICBteSAoJGl0ZW0pID0gQF87CgogICAgICAgICMgVGhpcyB3aWxsIGJlIHRoZSBpbmRleCBvZiB0aGlzIGl0ZW0gaW4gdGhlIG5ldyBhcnJheQogICAgICAgIG15ICRLS19uZXcgPSBAeyRyTExfbmV3fTsKCiAgICAgICAgbXkgJHR5cGUgICAgID0gJGl0ZW0tPltfVFlQRV9dOwogICAgICAgIG15ICRpc19ibGFuayA9ICR0eXBlIGVxICdiJzsKCiAgICAgICAgIyBEbyBub3Qgb3V0cHV0IGNvbnNlY3V0aXZlIGJsYW5rcy4gVGhpcyBzaG91bGQgbm90IGhhcHBlbiwgYnV0CiAgICAgICAgIyBpcyB3b3J0aCBjaGVja2luZyBiZWNhdXNlIGxhdGVyIHJvdXRpbmVzIG1ha2UgdGhpcyBhc3N1bXB0aW9uLgogICAgICAgIGlmICggJGlzX2JsYW5rICYmICRLS19uZXcgJiYgJHJMTF9uZXctPlstMV0tPltfVFlQRV9dIGVxICdiJyApIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBmb3IgYSBzZXF1ZW5jZWQgaXRlbSAoaS5lLiwgY29udGFpbmVyIG9yID8vOikKICAgICAgICBteSAkdHlwZV9zZXF1ZW5jZSA9ICRpdGVtLT5bX1RZUEVfU0VRVUVOQ0VfXTsKICAgICAgICBpZiAoJHR5cGVfc2VxdWVuY2UpIHsKCiAgICAgICAgICAgIG15ICR0b2tlbiA9ICRpdGVtLT5bX1RPS0VOX107CiAgICAgICAgICAgIGlmICggJGlzX29wZW5pbmdfdG9rZW57JHRva2VufSApIHsKCiAgICAgICAgICAgICAgICAkS19vcGVuaW5nX2NvbnRhaW5lci0+eyR0eXBlX3NlcXVlbmNlfSA9ICRLS19uZXc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkaXNfY2xvc2luZ190b2tlbnskdG9rZW59ICkgewoKICAgICAgICAgICAgICAgICRLX2Nsb3NpbmdfY29udGFpbmVyLT57JHR5cGVfc2VxdWVuY2V9ID0gJEtLX25ldzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBUaGVzZSBhcmUgbm90IHlldCB1c2VkIGJ1dCBjb3VsZCBiZSB1c2VmdWwKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoICR0b2tlbiBlcSAnPycgKSB7CiAgICAgICAgICAgICAgICAgICAgJEtfb3BlbmluZ190ZXJuYXJ5LT57JHR5cGVfc2VxdWVuY2V9ID0gJEtLX25ldzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJHRva2VuIGVxICc6JyApIHsKICAgICAgICAgICAgICAgICAgICAkS19jbG9zaW5nX3Rlcm5hcnktPnskdHlwZV9zZXF1ZW5jZX0gPSAkS0tfbmV3OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICMgV2UgcmVhbGx5IHNob3VsZG4ndCBhcnJpdmUgaGVyZSwganVzdCBiZWluZyBjYXV0aW91czoKICAgICAgICAgICAgICAgICAgICAjIFRoZSBvbmx5IHNlcXVlbmNlZCB0eXBlcyBvdXRwdXQgYnkgdGhlIHRva2VuaXplciBhcmUgdGhlCiAgICAgICAgICAgICAgICAgICAgIyBvcGVuaW5nICYgY2xvc2luZyBjb250YWluZXJzIGFuZCB0aGUgdGVybmFyeSB0eXBlcy4gRWFjaAogICAgICAgICAgICAgICAgICAgICMgb2YgdGhvc2Ugd2FzIGNoZWNrZWQgYWJvdmUuIFNvIHdlIHdvdWxkIG9ubHkgZ2V0IGhlcmUKICAgICAgICAgICAgICAgICAgICAjIGlmIHRoZSB0b2tlbml6ZXIgaGFzIGJlZW4gY2hhbmdlZCB0byBtYXJrIHNvbWUgb3RoZXIKICAgICAgICAgICAgICAgICAgICAjIHRva2VucyB3aXRoIHNlcXVlbmNlIG51bWJlcnMuCiAgICAgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAkaXRlbS0+W19UWVBFX107CiAgICAgICAgICAgICAgICAgICAgRmF1bHQoCiJVbmV4cGVjdGVkIHRva2VuIHR5cGUgd2l0aCBzZXF1ZW5jZSBudW1iZXI6IHR5cGU9JyR0eXBlJywgc2Vxbm89JyR0eXBlX3NlcXVlbmNlJyIKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIEZpbmQgdGhlIGxlbmd0aCBvZiB0aGlzIHRva2VuLiAgTGF0ZXIgaXQgbWF5IGJlIGFkanVzdGVkIGlmIHBoYW50b20KICAgICAgICAjIG9yIGlnbm9yaW5nIHNpZGUgY29tbWVudCBsZW5ndGhzLgogICAgICAgIG15ICR0b2tlbl9sZW5ndGggPQogICAgICAgICAgICAkaXNfZW5jb2RlZF9kYXRhCiAgICAgICAgICA/ICRsZW5ndGhfZnVuY3Rpb24tPiggJGl0ZW0tPltfVE9LRU5fXSApCiAgICAgICAgICA6IGxlbmd0aCggJGl0ZW0tPltfVE9LRU5fXSApOwoKICAgICAgICAjIGhhbmRsZSBjb21tZW50cwogICAgICAgIG15ICRpc19jb21tZW50ID0gJHR5cGUgZXEgJyMnOwogICAgICAgIGlmICgkaXNfY29tbWVudCkgewoKICAgICAgICAgICAgIyB0cmltIGNvbW1lbnRzIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICBpZiAoICRpdGVtLT5bX1RPS0VOX10gPX4gcy9ccyskLy8gKSB7CiAgICAgICAgICAgICAgICAkdG9rZW5fbGVuZ3RoID0gJGxlbmd0aF9mdW5jdGlvbi0+KCAkaXRlbS0+W19UT0tFTl9dICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIyBNYXJrIGxlbmd0aCBvZiBzaWRlIGNvbW1lbnRzIGFzIGp1c3QgMSBpZiB0aGVpciBsZW5ndGhzIGFyZSBpZ25vcmVkCiAgICAgICAgICAgIGlmICggJHJPcHRzX2lnbm9yZV9zaWRlX2NvbW1lbnRfbGVuZ3RocwogICAgICAgICAgICAgICAgJiYgKCAhJENPREVfdHlwZSB8fCAkQ09ERV90eXBlIGVxICdIU0MnICkgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkdG9rZW5fbGVuZ3RoID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJGl0ZW0tPltfVE9LRU5fTEVOR1RIX10gPSAkdG9rZW5fbGVuZ3RoOwoKICAgICAgICAjIGFuZCB1cGRhdGUgdGhlIGN1bXVsYXRpdmUgbGVuZ3RoCiAgICAgICAgJGN1bXVsYXRpdmVfbGVuZ3RoICs9ICR0b2tlbl9sZW5ndGg7CgogICAgICAgICMgU2F2ZSB0aGUgbGVuZ3RoIHN1bSB0byBqdXN0IEFGVEVSIHRoaXMgdG9rZW4KICAgICAgICAkaXRlbS0+W19DVU1VTEFUSVZFX0xFTkdUSF9dID0gJGN1bXVsYXRpdmVfbGVuZ3RoOwoKICAgICAgICBpZiAoICEkaXNfYmxhbmsgJiYgISRpc19jb21tZW50ICkgewogICAgICAgICAgICAkbGFzdF9ub25ibGFua190eXBlICAgICAgID0gJHR5cGU7CiAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3Rva2VuICAgICAgPSAkaXRlbS0+W19UT0tFTl9dOwogICAgICAgICAgICAkbGFzdF9ub25ibGFua19ibG9ja190eXBlID0gJGl0ZW0tPltfQkxPQ0tfVFlQRV9dOwogICAgICAgICAgICAkbm9uYmxhbmtfdG9rZW5fY291bnQrKzsKCiAgICAgICAgICAgICMgY291bnQgc2VsZWN0ZWQgdHlwZXMKICAgICAgICAgICAgaWYgKCAkaXNfY291bnRlZF90eXBleyR0eXBlfSApIHsKICAgICAgICAgICAgICAgIG15ICRzZXFubyA9ICRzZXFub19zdGFja3sgJGRlcHRoX25leHQgLSAxIH07CiAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQoJHNlcW5vKSApIHsKICAgICAgICAgICAgICAgICAgICAkcnR5cGVfY291bnRfYnlfc2Vxbm8tPnskc2Vxbm99LT57JHR5cGV9Kys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRm9yIHJlZmVyZW5jZSwgaGVyZSBpcyBob3cgdG8gZ2V0IHRoZSBwYXJlbnQgc2VxdWVuY2UgbnVtYmVyLgogICAgICAgICMgVGhpcyBpcyBub3QgdXNlZCBiZWNhdXNlIGl0IGlzIHNsb3dlciB0aGFuIGZpbmRpbmcgaXQgb24gdGhlIGZseQogICAgICAgICMgaW4gc3ViIHBhcmVudF9zZXFub19ieV9LOgoKICAgICAgICAjIG15ICRzZXFub19wYXJlbnQgPQogICAgICAgICMgICAgICR0eXBlX3NlcXVlbmNlICYmICRpc19vcGVuaW5nX3Rva2VueyR0b2tlbn0KICAgICAgICAjICAgPyAkc2Vxbm9fc3RhY2t7ICRkZXB0aF9uZXh0IC0gMiB9CiAgICAgICAgIyAgIDogJHNlcW5vX3N0YWNreyAkZGVwdGhfbmV4dCAtIDEgfTsKICAgICAgICAjIG15ICRLSyA9IEB7JHJMTF9uZXd9OwogICAgICAgICMgJHJzZXFub19vZl9wYXJlbnRfYnlfSy0+eyRLS30gPSAkc2Vxbm9fcGFyZW50OwoKICAgICAgICAjIGFuZCBmaW5hbGx5LCBhZGQgdGhpcyBpdGVtIHRvIHRoZSBuZXcgYXJyYXkKICAgICAgICBwdXNoIEB7JHJMTF9uZXd9LCAkaXRlbTsKICAgIH07CgogICAgbXkgJHN0b3JlX3Rva2VuX2FuZF9zcGFjZSA9IHN1YiB7CiAgICAgICAgbXkgKCAkaXRlbSwgJHdhbnRfc3BhY2UgKSA9IEBfOwoKICAgICAgICAjIHN0b3JlIGEgdG9rZW4gd2l0aCBwcmVjZWRpbmcgc3BhY2UgaWYgcmVxdWVzdGVkIGFuZCBuZWVkZWQKCiAgICAgICAgIyBGaXJzdCBzdG9yZSB0aGUgc3BhY2UKICAgICAgICBpZiAoICAgJHdhbnRfc3BhY2UKICAgICAgICAgICAgJiYgQHskckxMX25ld30KICAgICAgICAgICAgJiYgJHJMTF9uZXctPlstMV0tPltfVFlQRV9dIG5lICdiJwogICAgICAgICAgICAmJiAkck9wdHNfYWRkX3doaXRlc3BhY2UgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJHJjb3B5ID0gY29weV90b2tlbl9hc190eXBlKCAkaXRlbSwgJ2InLCAnICcgKTsKICAgICAgICAgICAgJHJjb3B5LT5bX0xJTkVfSU5ERVhfXSA9CiAgICAgICAgICAgICAgJHJMTF9uZXctPlstMV0tPltfTElORV9JTkRFWF9dOwogICAgICAgICAgICAkc3RvcmVfdG9rZW4tPigkcmNvcHkpOwogICAgICAgIH0KCiAgICAgICAgIyB0aGVuIHRoZSB0b2tlbgogICAgICAgICRzdG9yZV90b2tlbi0+KCRpdGVtKTsKICAgIH07CgogICAgbXkgJEtfZW5kX3EgPSBzdWIgewogICAgICAgIG15ICgkS0spID0gQF87CiAgICAgICAgbXkgJEtfZW5kID0gJEtLOwoKICAgICAgICBteSAkS24gPSAkS0sgKyAxOwogICAgICAgIGlmICggJEtuIDw9ICRLbWF4ICYmICRyTEwtPlskS25dLT5bX1RZUEVfXSBlcSAnYicgKSB7ICRLbiArPSAxIH0KCiAgICAgICAgd2hpbGUgKCAkS24gPD0gJEttYXggJiYgJHJMTC0+WyRLbl0tPltfVFlQRV9dIGVxICdxJyApIHsKICAgICAgICAgICAgJEtfZW5kID0gJEtuOwoKICAgICAgICAgICAgJEtuICs9IDE7CiAgICAgICAgICAgIGlmICggJEtuIDw9ICRLbWF4ICYmICRyTEwtPlskS25dLT5bX1RZUEVfXSBlcSAnYicgKSB7ICRLbiArPSAxIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkS19lbmQ7CiAgICB9OwoKICAgIG15ICRhZGRfcGhhbnRvbV9zZW1pY29sb24gPSBzdWIgewoKICAgICAgICBteSAoJEtLKSA9IEBfOwoKICAgICAgICBteSAkS3AgPSAkc2VsZi0+S19wcmV2aW91c19ub25ibGFuayggdW5kZWYsICRyTExfbmV3ICk7CiAgICAgICAgcmV0dXJuIHVubGVzcyAoIGRlZmluZWQoJEtwKSApOwoKICAgICAgICAjIHdlIGFyZSBvbmx5IGFkZGluZyBzZW1pY29sb25zIGZvciBjZXJ0YWluIGJsb2NrIHR5cGVzCiAgICAgICAgbXkgJGJsb2NrX3R5cGUgPSAkckxMLT5bJEtLXS0+W19CTE9DS19UWVBFX107CiAgICAgICAgcmV0dXJuCiAgICAgICAgICB1bmxlc3MgKCAkb2tfdG9fYWRkX3NlbWljb2xvbl9mb3JfYmxvY2tfdHlwZXskYmxvY2tfdHlwZX0KICAgICAgICAgICAgfHwgJGJsb2NrX3R5cGUgPX4gL14oc3VifHBhY2thZ2UpLwogICAgICAgICAgICB8fCAkYmxvY2tfdHlwZSA9fiAvXlx3K1w6JC8gKTsKCiAgICAgICAgbXkgJHR5cGVfc2VxdWVuY2UgPSAkckxMLT5bJEtLXS0+W19UWVBFX1NFUVVFTkNFX107CgogICAgICAgIG15ICRwcmV2aW91c19ub25ibGFua190eXBlICA9ICRyTExfbmV3LT5bJEtwXS0+W19UWVBFX107CiAgICAgICAgbXkgJHByZXZpb3VzX25vbmJsYW5rX3Rva2VuID0gJHJMTF9uZXctPlskS3BdLT5bX1RPS0VOX107CgogICAgICAgICMgRG8gbm90IGFkZCBhIHNlbWljb2xvbiBpZi4uLgogICAgICAgIHJldHVybgogICAgICAgICAgaWYgKAoKICAgICAgICAgICAgIyBpdCB3b3VsZCBmb2xsb3cgYSBjb21tZW50IChhbmQgYmUgaXNvbGF0ZWQpCiAgICAgICAgICAgICRwcmV2aW91c19ub25ibGFua190eXBlIGVxICcjJwoKICAgICAgICAgICAgIyBpdCBmb2xsb3dzIGEgY29kZSBibG9jayAoIGJlY2F1c2UgdGhleSBhcmUgbm90IGFsd2F5cyB3YW50ZWQKICAgICAgICAgICAgIyB0aGVyZSBhbmQgbWF5IGFkZCBjbHV0dGVyKQogICAgICAgICAgICB8fCAkckxMX25ldy0+WyRLcF0tPltfQkxPQ0tfVFlQRV9dCgogICAgICAgICAgICAjIGl0IHdvdWxkIGZvbGxvdyBhIGxhYmVsCiAgICAgICAgICAgIHx8ICRwcmV2aW91c19ub25ibGFua190eXBlIGVxICdKJwoKICAgICAgICAgICAgIyBpdCB3b3VsZCBiZSBpbnNpZGUgYSAnZm9ybWF0JyBzdGF0ZW1lbnQgKGFuZCBjYXVzZSBzeW50YXggZXJyb3IpCiAgICAgICAgICAgIHx8ICggICAkcHJldmlvdXNfbm9uYmxhbmtfdHlwZSBlcSAnaycKICAgICAgICAgICAgICAgICYmICRwcmV2aW91c19ub25ibGFua190b2tlbiA9fiAvZm9ybWF0LyApCgogICAgICAgICAgKTsKCiAgICAgICAgIyBEbyBub3QgYWRkIGEgc2VtaWNvbG9uIGlmIGl0IHdvdWxkIGltcGVkZSBhIHdlbGQgd2l0aCBhbiBpbW1lZGlhdGVseQogICAgICAgICMgZm9sbG93aW5nIGNsb3NpbmcgdG9rZW4uLi5saWtlIHRoaXMKICAgICAgICAjICAgeyAoIHNvbWUgY29kZSApIH0KICAgICAgICAjICAgICAgICAgICAgICAgICAgXi0tTm8gc2VtaWNvbG9uIGNhbiBnbyBoZXJlCgogICAgICAgICMgbG9vayBhdCB0aGUgcHJldmlvdXMgdG9rZW4uLi4gbm90ZSB1c2Ugb2YgdGhlIF9ORVcgckxMIGFycmF5IGhlcmUsCiAgICAgICAgIyBidXQgc2VxdWVuY2UgbnVtYmVycyBhcmUgaW52YXJpYW50LgogICAgICAgIG15ICRzZXFub19pbm5lciA9ICRyTExfbmV3LT5bJEtwXS0+W19UWVBFX1NFUVVFTkNFX107CgogICAgICAgICMgSWYgaXQgaXMgYWxzbyBhIENMT1NJTkcgdG9rZW4gd2UgaGF2ZSB0byBsb29rIGNsb3Nlci4uLgogICAgICAgIGlmICgKICAgICAgICAgICAgICAgJHNlcW5vX2lubmVyCiAgICAgICAgICAgICYmICRpc19jbG9zaW5nX3Rva2VueyRwcmV2aW91c19ub25ibGFua190b2tlbn0KCiAgICAgICAgICAgICMgd2Ugb25seSBuZWVkIHRvIGxvb2sgaWYgdGhlcmUgaXMganVzdCBvbmUgaW5uZXIgY29udGFpbmVyLi4KICAgICAgICAgICAgJiYgZGVmaW5lZCggJHJjaGlsZHJlbl9vZl9zZXFuby0+eyR0eXBlX3NlcXVlbmNlfSApCiAgICAgICAgICAgICYmIEB7ICRyY2hpbGRyZW5fb2Zfc2Vxbm8tPnskdHlwZV9zZXF1ZW5jZX0gfSA9PSAxCiAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgIyBHbyBiYWNrIGFuZCBzZWUgaWYgdGhlIGNvcnJlc3BvbmRpbmcgdHdvIE9QRU5JTkcgdG9rZW5zIGFyZSBhbHNvCiAgICAgICAgICAgICMgdG9nZXRoZXIuICBOb3RlIHRoYXQgd2UgYXJlIHVzaW5nIHRoZSBPTEQgSyBpbmRleGluZyBoZXJlOgogICAgICAgICAgICBteSAkS19vdXRlcl9vcGVuaW5nID0gJEtfb3BlbmluZ19ieV9zZXFub3skdHlwZV9zZXF1ZW5jZX07CiAgICAgICAgICAgIGlmICggZGVmaW5lZCgkS19vdXRlcl9vcGVuaW5nKSApIHsKICAgICAgICAgICAgICAgIG15ICRLX254dCA9ICRzZWxmLT5LX25leHRfbm9uYmxhbmsoJEtfb3V0ZXJfb3BlbmluZyk7CiAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQoJEtfbnh0KSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkc2Vxbm9fbnh0ID0gJHJMTC0+WyRLX254dF0tPltfVFlQRV9TRVFVRU5DRV9dOwoKICAgICAgICAgICAgICAgICAgICAjIElzIHRoZSBuZXh0IHRva2VuIGFmdGVyIHRoZSBvdXRlciBvcGVuaW5nIHRoZSBzYW1lIGFzCiAgICAgICAgICAgICAgICAgICAgIyBvdXIgaW5uZXIgY2xvc2luZyAoaS5lLiBzYW1lIHNlcXVlbmNlIG51bWJlcik/CiAgICAgICAgICAgICAgICAgICAgIyBJZiBzbywgZG8gbm90IGluc2VydCBhIHNlbWljb2xvbiBoZXJlLgogICAgICAgICAgICAgICAgICAgIHJldHVybiBpZiAoICRzZXFub19ueHQgJiYgJHNlcW5vX254dCA9PSAkc2Vxbm9faW5uZXIgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBXZSB3aWxsIGluc2VydCBhbiBlbXB0eSBzZW1pY29sb24gaGVyZSBhcyBhIHBsYWNlaG9sZGVyLiAgTGF0ZXIsIGlmCiAgICAgICAgIyBpdCBiZWNvbWVzIHRoZSBsYXN0IHRva2VuIG9uIGEgbGluZSwgd2Ugd2lsbCBicmluZyBpdCB0byBsaWZlLiAgVGhlCiAgICAgICAgIyBhZHZhbnRhZ2Ugb2YgZG9pbmcgdGhpcyBpcyB0aGF0ICgxKSB3ZSBqdXN0IGhhdmUgdG8gY2hlY2sgbGluZQogICAgICAgICMgZW5kaW5ncywgYW5kICgyKSB0aGUgcGhhbnRvbSBzZW1pY29sb24gaGFzIHplcm8gd2lkdGggYW5kIHRoZXJlZm9yZQogICAgICAgICMgd29uJ3QgY2F1c2UgbmVlZGxlc3MgYnJlYWtzIG9mIG9uZS1saW5lIGJsb2Nrcy4KICAgICAgICBteSAkS3RvcCA9IC0xOwogICAgICAgIGlmICggICAkckxMX25ldy0+WyRLdG9wXS0+W19UWVBFX10gZXEgJ2InCiAgICAgICAgICAgICYmICR3YW50X2xlZnRfc3BhY2V7JzsnfSA9PSBXU19OTyApCiAgICAgICAgewoKICAgICAgICAgICAgIyBjb252ZXJ0IHRoZSBibGFuayBpbnRvIGEgc2VtaWNvbG9uLi4KICAgICAgICAgICAgIyBiZSBjYXJlZnVsOiB3ZSBhcmUgd29ya2luZyBvbiB0aGUgbmV3IHN0YWNrIHRvcAogICAgICAgICAgICAjIG9uIGEgdG9rZW4gd2hpY2ggaGFzIGJlZW4gc3RvcmVkLgogICAgICAgICAgICBteSAkcmNvcHkgPSBjb3B5X3Rva2VuX2FzX3R5cGUoICRyTExfbmV3LT5bJEt0b3BdLCAnYicsICcgJyApOwoKICAgICAgICAgICAgIyBDb252ZXJ0IHRoZSBleGlzdGluZyBibGFuayB0bzoKICAgICAgICAgICAgIyAgIGEgcGhhbnRvbSBzZW1pY29sb24gZm9yIG9uZV9saW5lX2Jsb2NrIG9wdGlvbiA9IDAgb3IgMQogICAgICAgICAgICAjICAgYSByZWFsIHNlbWljb2xvbiAgICBmb3Igb25lX2xpbmVfYmxvY2sgb3B0aW9uID0gMgogICAgICAgICAgICBteSAkdG9rICAgICA9ICcnOwogICAgICAgICAgICBteSAkbGVuX3RvayA9IDA7CiAgICAgICAgICAgIGlmICggJHJPcHRzX29uZV9saW5lX2Jsb2NrX3NlbWljb2xvbnMgPT0gMiApIHsKICAgICAgICAgICAgICAgICR0b2sgICAgID0gJzsnOwogICAgICAgICAgICAgICAgJGxlbl90b2sgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkckxMX25ldy0+WyRLdG9wXS0+W19UT0tFTl9dICAgICAgICA9ICR0b2s7CiAgICAgICAgICAgICRyTExfbmV3LT5bJEt0b3BdLT5bX1RPS0VOX0xFTkdUSF9dID0gJGxlbl90b2s7CiAgICAgICAgICAgICRyTExfbmV3LT5bJEt0b3BdLT5bX1RZUEVfXSAgICAgICAgID0gJzsnOwogICAgICAgICAgICAkckxMX25ldy0+WyRLdG9wXS0+W19TTEVWRUxfXSA9CiAgICAgICAgICAgICAgJHJMTC0+WyRLS10tPltfU0xFVkVMX107CgogICAgICAgICAgICBwdXNoIEB7JHJLX3BoYW50b21fc2VtaWNvbG9uc30sIEB7JHJMTF9uZXd9IC0gMTsKCiAgICAgICAgICAgICMgVGhlbiBzdG9yZSBhIG5ldyBibGFuawogICAgICAgICAgICAkc3RvcmVfdG9rZW4tPigkcmNvcHkpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgaW5zZXJ0IGEgbmV3IHRva2VuCiAgICAgICAgICAgIG15ICRyY29weSA9IGNvcHlfdG9rZW5fYXNfdHlwZSggJHJMTF9uZXctPlskS3BdLCAnOycsICcnICk7CiAgICAgICAgICAgICRyY29weS0+W19TTEVWRUxfXSA9ICRyTEwtPlskS0tdLT5bX1NMRVZFTF9dOwogICAgICAgICAgICAkc3RvcmVfdG9rZW4tPigkcmNvcHkpOwogICAgICAgICAgICBwdXNoIEB7JHJLX3BoYW50b21fc2VtaWNvbG9uc30sIEB7JHJMTF9uZXd9IC0gMTsKICAgICAgICB9CiAgICB9OwoKICAgIG15ICRjaGVja19RID0gc3ViIHsKCiAgICAgICAgIyBDaGVjayB0aGF0IGEgcXVvdGUgbG9va3Mgb2theQogICAgICAgICMgVGhpcyBzdWIgd29ya3MgYnV0IG5lZWRzIHRvIGJ5IHN5bmMnZCB3aXRoIHRoZSBsb2cgZmlsZSBvdXRwdXQKICAgICAgICAjIGJlZm9yZSBpdCBjYW4gYmUgdXNlZC4KICAgICAgICBteSAoICRLSywgJEtmaXJzdCwgJGxpbmVfbnVtYmVyICkgPSBAXzsKICAgICAgICBteSAkdG9rZW4gPSAkckxMLT5bJEtLXS0+W19UT0tFTl9dOwogICAgICAgICRzZWxmLT5ub3RlX2VtYmVkZGVkX3RhYigkbGluZV9udW1iZXIpIGlmICggJHRva2VuID1+ICJcdCIgKTsKCiAgICAgICAgbXkgJEtwID0gJHNlbGYtPktfcHJldmlvdXNfbm9uYmxhbmsoIHVuZGVmLCAkckxMX25ldyApOwogICAgICAgIHJldHVybiB1bmxlc3MgKCBkZWZpbmVkKCRLcCkgKTsKICAgICAgICBteSAkcHJldmlvdXNfbm9uYmxhbmtfdHlwZSAgPSAkckxMX25ldy0+WyRLcF0tPltfVFlQRV9dOwogICAgICAgIG15ICRwcmV2aW91c19ub25ibGFua190b2tlbiA9ICRyTExfbmV3LT5bJEtwXS0+W19UT0tFTl9dOwoKICAgICAgICBteSAkcHJldmlvdXNfbm9uYmxhbmtfdHlwZV8yICA9ICdiJzsKICAgICAgICBteSAkcHJldmlvdXNfbm9uYmxhbmtfdG9rZW5fMiA9ICIiOwogICAgICAgIG15ICRLcHAgPSAkc2VsZi0+S19wcmV2aW91c19ub25ibGFuayggJEtwLCAkckxMX25ldyApOwogICAgICAgIGlmICggZGVmaW5lZCgkS3BwKSApIHsKICAgICAgICAgICAgJHByZXZpb3VzX25vbmJsYW5rX3R5cGVfMiAgPSAkckxMX25ldy0+WyRLcHBdLT5bX1RZUEVfXTsKICAgICAgICAgICAgJHByZXZpb3VzX25vbmJsYW5rX3Rva2VuXzIgPSAkckxMX25ldy0+WyRLcHBdLT5bX1RPS0VOX107CiAgICAgICAgfQoKICAgICAgICBteSAkbmV4dF9ub25ibGFua190b2tlbiA9ICIiOwogICAgICAgIG15ICRLbiAgICAgICAgICAgICAgICAgID0gJEtLICsgMTsKICAgICAgICBpZiAoICRLbiA8PSAkS21heCAmJiAkckxMLT5bJEtuXS0+W19UWVBFX10gZXEgJ2InICkgeyAkS24gKz0gMSB9CiAgICAgICAgaWYgKCAkS24gPD0gJEttYXggKSB7CiAgICAgICAgICAgICRuZXh0X25vbmJsYW5rX3Rva2VuID0gJHJMTC0+WyRLbl0tPltfVE9LRU5fXTsKICAgICAgICB9CgogICAgICAgIG15ICR0b2tlbl8wID0gJHJMTC0+WyRLZmlyc3RdLT5bX1RPS0VOX107CiAgICAgICAgbXkgJHR5cGVfMCAgPSAkckxMLT5bJEtmaXJzdF0tPltfVFlQRV9dOwoKICAgICAgICAjIG1ha2Ugbm90ZSBvZiBzb21ldGhpbmcgbGlrZSAnJHZhciA9IHMveHh4L3l5eS87JwogICAgICAgICMgaW4gY2FzZSBpdCBzaG91bGQgaGF2ZSBiZWVuICckdmFyID1+IHMveHh4L3l5eS87JwogICAgICAgIGlmICgKICAgICAgICAgICAgICAgJHRva2VuID1+IC9eKHN8dHJ8eXxtfFwvKS8KICAgICAgICAgICAgJiYgJHByZXZpb3VzX25vbmJsYW5rX3Rva2VuID1+IC9eKD18PT18IT0pJC8KCiAgICAgICAgICAgICMgcHJlY2VkZWQgYnkgc2ltcGxlIHNjYWxhcgogICAgICAgICAgICAmJiAkcHJldmlvdXNfbm9uYmxhbmtfdHlwZV8yIGVxICdpJwogICAgICAgICAgICAmJiAkcHJldmlvdXNfbm9uYmxhbmtfdG9rZW5fMiA9fiAvXlwkLwoKICAgICAgICAgICAgIyBmb2xsb3dlZCBieSBzb21lIGtpbmQgb2YgdGVybWluYXRpb24KICAgICAgICAgICAgIyAoYnV0IGdpdmUgY29tcGxhaW50IGlmIHdlIGNhbiBub3Qgc2VlIGZhciBlbm91Z2ggYWhlYWQpCiAgICAgICAgICAgICYmICRuZXh0X25vbmJsYW5rX3Rva2VuID1+IC9eWzsgXClcfV0kLwoKICAgICAgICAgICAgIyBzY2FsYXIgaXMgbm90IGRlY2xhcmVkCiAgICAgICAgICAgICYmICEoICR0eXBlXzAgZXEgJ2snICYmICR0b2tlbl8wID1+IC9eKG15fG91cnxsb2NhbCkkLyApCiAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkZ3Vlc3MgPSBzdWJzdHIoICRsYXN0X25vbmJsYW5rX3Rva2VuLCAwLCAxICkgLiAnfic7CiAgICAgICAgICAgIGNvbXBsYWluKAoiTm90ZTogYmUgc3VyZSB5b3Ugd2FudCAnJHByZXZpb3VzX25vbmJsYW5rX3Rva2VuJyBpbnN0ZWFkIG9mICckZ3Vlc3MnIGhlcmVcbiIKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9OwoKICAgICMgTWFpbiBsb29wIG92ZXIgYWxsIGxpbmVzIG9mIHRoZSBmaWxlCiAgICBteSAkbGFzdF9LX291dDsKCiAgICAjIFRlc3Rpbmcgb3B0aW9uIHRvIGJyZWFrIHF3LiAgRG8gbm90IHVzZTsgaXQgY2FuIG1ha2UgYSBtZXNzLgogICAgbXkgJEFMTE9XX0JSRUFLX01VTFRJTElORV9RVyA9IDA7CiAgICBteSAkaW5fbXVsdGlsaW5lX3F3OwogICAgZm9yZWFjaCBteSAkbGluZV9vZl90b2tlbnMgKCBAeyRybGluZXN9ICkgewoKICAgICAgICBteSAkaW5wdXRfbGluZV9udW1iZXIgPSAkbGluZV9vZl90b2tlbnMtPntfbGluZV9udW1iZXJ9OwogICAgICAgIG15ICRsYXN0X2xpbmVfdHlwZSAgICA9ICRsaW5lX3R5cGU7CiAgICAgICAgJGxpbmVfdHlwZSA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3R5cGV9OwogICAgICAgIG5leHQgdW5sZXNzICggJGxpbmVfdHlwZSBlcSAnQ09ERScgKTsKICAgICAgICBteSAkbGFzdF9DT0RFX3R5cGUgPSAkQ09ERV90eXBlOwogICAgICAgICRDT0RFX3R5cGUgPSAkbGluZV9vZl90b2tlbnMtPntfY29kZV90eXBlfTsKICAgICAgICBteSAkcktfcmFuZ2UgPSAkbGluZV9vZl90b2tlbnMtPntfcktfcmFuZ2V9OwogICAgICAgIG15ICggJEtmaXJzdCwgJEtsYXN0ICkgPSBAeyRyS19yYW5nZX07CiAgICAgICAgbmV4dCB1bmxlc3MgZGVmaW5lZCgkS2ZpcnN0KTsKCiAgICAgICAgIyBDaGVjayBmb3IgY29ycmVjdCBzZXF1ZW5jZSBvZiB0b2tlbiBpbmRleGVzLi4uCiAgICAgICAgIyBBbiBlcnJvciBoZXJlIG1lYW5zIHRoYXQgc3ViIHdyaXRlX2xpbmUoKSBkaWQgbm90IGNvcnJlY3RseQogICAgICAgICMgcGFja2FnZSB0aGUgdG9rZW5pemVkIGxpbmVzIGFzIGl0IHJlY2VpdmVkIHRoZW0uICBJZiB3ZQogICAgICAgICMgZ2V0IGEgZmF1bHQgaGVyZSBpdCBoYXMgbm90IG91dHB1dCBhIGNvbnRpbnVvdXMgc2VxdWVuY2UKICAgICAgICAjIG9mIEsgdmFsdWVzLiAgT3IgYSBsaW5lIG9mIENPREUgbWF5IGhhdmUgYmVlbiBtaXNtYXJrZWQgYXMKICAgICAgICAjIHNvbWV0aGluZyBlbHNlLgogICAgICAgIGlmICggZGVmaW5lZCgkbGFzdF9LX291dCkgKSB7CiAgICAgICAgICAgIGlmICggJEtmaXJzdCAhPSAkbGFzdF9LX291dCArIDEgKSB7CiAgICAgICAgICAgICAgICBGYXVsdCgKICAgICAgICAgICAgICAgICAgICAiUHJvZ3JhbSBCdWc6IGxhc3QgSyBvdXQgd2FzICRsYXN0X0tfb3V0IGJ1dCBLZmlyc3Q9JEtmaXJzdCIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIFRoZSBmaXJzdCB0b2tlbiBzaG91bGQgYWx3YXlzIGhhdmUgYmVlbiBnaXZlbiBpbmRleCAwIGJ5IHN1YgogICAgICAgICAgICAjIHdyaXRlX2xpbmUoKQogICAgICAgICAgICBpZiAoICRLZmlyc3QgIT0gMCApIHsKICAgICAgICAgICAgICAgIEZhdWx0KCJQcm9ncmFtIEJ1ZzogZmlyc3QgSyBpcyAkS2ZpcnN0IGJ1dCBzaG91bGQgYmUgMCIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRsYXN0X0tfb3V0ID0gJEtsYXN0OwoKICAgICAgICAjIEhhbmRsZSBzcGVjaWFsIGxpbmVzIG9mIGNvZGUKICAgICAgICBpZiAoICRDT0RFX3R5cGUgJiYgJENPREVfdHlwZSBuZSAnTklOJyAmJiAkQ09ERV90eXBlIG5lICdWRVInICkgewoKICAgICAgICAgICAgIyBDT0RFX3R5cGVzIGFyZSBhcyBmb2xsb3dzLgogICAgICAgICAgICAjICdCTCcgPSBCbGFuayBMaW5lCiAgICAgICAgICAgICMgJ1ZCJyA9IFZlcmJhdGltIC0gbGluZSBnb2VzIG91dCB2ZXJiYXRpbQogICAgICAgICAgICAjICdGUycgPSBGb3JtYXQgU2tpcHBpbmcgLSBsaW5lIGdvZXMgb3V0IHZlcmJhdGltLCBubyBibGFua3MKICAgICAgICAgICAgIyAnSU8nID0gSW5kZW50IE9ubHkgLSBvbmx5IGluZGVudGF0aW9uIG1heSBiZSBjaGFuZ2VkCiAgICAgICAgICAgICMgJ05JTicgPSBObyBJbnRlcm5hbCBOZXdsaW5lcyAtIGxpbmUgZG9lcyBub3QgZ2V0IGJyb2tlbgogICAgICAgICAgICAjICdIU0MnPUhhbmdpbmcgU2lkZSBDb21tZW50IC0gZml4IHRoaXMgaGFuZ2luZyBzaWRlIGNvbW1lbnQKICAgICAgICAgICAgIyAnQkMnPUJsb2NrIENvbW1lbnQgLSBhbiBvcmRpbmFyeSBmdWxsIGxpbmUgY29tbWVudAogICAgICAgICAgICAjICdTQkMnPVN0YXRpYyBCbG9jayBDb21tZW50IC0gYSBibG9jayBjb21tZW50IHdoaWNoIGRvZXMgbm90IGdldAogICAgICAgICAgICAjICAgICAgaW5kZW50ZWQKICAgICAgICAgICAgIyAnU0JDWCc9U3RhdGljIEJsb2NrIENvbW1lbnQgV2l0aG91dCBMZWFkaW5nIFNwYWNlCiAgICAgICAgICAgICMgJ1ZFUic9VkVSU0lPTiBzdGF0ZW1lbnQKICAgICAgICAgICAgIyAnJyBvciAodW5kZWZpbmVkKSAtIG5vIHJlc3RydWN0aW9ucwoKICAgICAgICAgICAgIyBGb3IgYSBoYW5naW5nIHNpZGUgY29tbWVudCB3ZSBpbnNlcnQgYW4gZW1wdHkgcXVvdGUgYmVmb3JlCiAgICAgICAgICAgICMgdGhlIGNvbW1lbnQgc28gdGhhdCBpdCBiZWNvbWVzIGEgbm9ybWFsIHNpZGUgY29tbWVudCBhbmQKICAgICAgICAgICAgIyB3aWxsIGJlIGFsaWduZWQgYnkgdGhlIHZlcnRpY2FsIGFsaWduZXIKICAgICAgICAgICAgaWYgKCAkQ09ERV90eXBlIGVxICdIU0MnICkgewoKICAgICAgICAgICAgICAgICMgU2FmZXR5IENoZWNrOiBUaGlzIG11c3QgYmUgYSBsaW5lIHdpdGggb25lIHRva2VuIChhIGNvbW1lbnQpCiAgICAgICAgICAgICAgICBteSAkcnRva2VuX3ZhcnMgPSAkckxMLT5bJEtmaXJzdF07CiAgICAgICAgICAgICAgICBpZiAoICRLZmlyc3QgPT0gJEtsYXN0ICYmICRydG9rZW5fdmFycy0+W19UWVBFX10gZXEgJyMnICkgewoKICAgICAgICAgICAgICAgICAgICAjIE5vdGUgdGhhdCBldmVuIGlmIHRoZSBmbGFnICdub2FkZC13aGl0ZXNwYWNlJyBpcyBzZXQsIHdlCiAgICAgICAgICAgICAgICAgICAgIyB3aWxsIG1ha2UgYW4gZXhjZXB0aW9uIGhlcmUgYW5kIGFsbG93IGEgYmxhbmsgdG8gYmUKICAgICAgICAgICAgICAgICAgICAjIGluc2VydGVkIHRvIHB1c2ggdGhlIGNvbW1lbnQgdG8gdGhlIHJpZ2h0LiAgV2UgY2FuIHRoaW5rCiAgICAgICAgICAgICAgICAgICAgIyBvZiB0aGlzIGFzIGFuIGFkanVzdG1lbnQgb2YgaW5kZW50YXRpb24gcmF0aGVyIHRoYW4KICAgICAgICAgICAgICAgICAgICAjIHdoaXRlc3BhY2UgYmV0d2VlbiB0b2tlbnMuIFRoaXMgd2lsbCBhbHNvIHByZXZlbnQgdGhlCiAgICAgICAgICAgICAgICAgICAgIyBoYW5naW5nIHNpZGUgY29tbWVudCBmcm9tIGdldHRpbmcgY29udmVydGVkIHRvIGEgYmxvY2sKICAgICAgICAgICAgICAgICAgICAjIGNvbW1lbnQgaWYgd2hpdGVzcGFjZSBnZXRzIGRlbGV0ZWQsIGFzIGZvciBleGFtcGxlIHdpdGgKICAgICAgICAgICAgICAgICAgICAjIHRoZSAtZXh0cnVkZSBhbmQgLW1hbmdsZSBvcHRpb25zLgogICAgICAgICAgICAgICAgICAgIG15ICRyY29weSA9IGNvcHlfdG9rZW5fYXNfdHlwZSggJHJ0b2tlbl92YXJzLCAncScsICcnICk7CiAgICAgICAgICAgICAgICAgICAgJHN0b3JlX3Rva2VuLT4oJHJjb3B5KTsKICAgICAgICAgICAgICAgICAgICAkcmNvcHkgPSBjb3B5X3Rva2VuX2FzX3R5cGUoICRydG9rZW5fdmFycywgJ2InLCAnICcgKTsKICAgICAgICAgICAgICAgICAgICAkc3RvcmVfdG9rZW4tPigkcmNvcHkpOwogICAgICAgICAgICAgICAgICAgICRzdG9yZV90b2tlbi0+KCRydG9rZW5fdmFycyk7CiAgICAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAjIFRoaXMgbGluZSB3YXMgbWlzLW1hcmtlZCBieSBzdWIgc2Nhbl9jb21tZW50CiAgICAgICAgICAgICAgICAgICAgRmF1bHQoCiAgICAgICAgICAgICAgICAgICAgICAgICJQcm9ncmFtIGJ1Zy4gQSBoYW5naW5nIHNpZGUgY29tbWVudCBoYXMgYmVlbiBtaXNtYXJrZWQiCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBDb3B5IHRva2VucyB1bmNoYW5nZWQKICAgICAgICAgICAgZm9yZWFjaCBteSAkS0sgKCAkS2ZpcnN0IC4uICRLbGFzdCApIHsKICAgICAgICAgICAgICAgICRzdG9yZV90b2tlbi0+KCAkckxMLT5bJEtLXSApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG5leHQ7CiAgICAgICAgfQoKICAgICAgICAjIEhhbmRsZSBub3JtYWwgbGluZS4uCgogICAgICAgICMgSW5zZXJ0IGFueSBlc3NlbnRpYWwgd2hpdGVzcGFjZSBiZXR3ZWVuIGxpbmVzCiAgICAgICAgIyBpZiBsYXN0IGxpbmUgd2FzIG5vcm1hbCBDT0RFLgogICAgICAgICMgUGF0Y2ggZm9yIHJ0ICMxMjUwMTI6IHVzZSBLX3ByZXZpb3VzX2NvZGUgcmF0aGVyIHRoYW4gJ19ub25ibGFuaycKICAgICAgICAjIGJlY2F1c2UgY29tbWVudHMgbWF5IGRpc2FwcGVhci4KICAgICAgICBteSAkdHlwZV9uZXh0ICA9ICRyTEwtPlskS2ZpcnN0XS0+W19UWVBFX107CiAgICAgICAgbXkgJHRva2VuX25leHQgPSAkckxMLT5bJEtmaXJzdF0tPltfVE9LRU5fXTsKICAgICAgICBteSAkS3AgICAgICAgICA9ICRzZWxmLT5LX3ByZXZpb3VzX2NvZGUoIHVuZGVmLCAkckxMX25ldyApOwogICAgICAgIGlmICggICAkbGFzdF9saW5lX3R5cGUgZXEgJ0NPREUnCiAgICAgICAgICAgICYmICR0eXBlX25leHQgbmUgJ2InCiAgICAgICAgICAgICYmIGRlZmluZWQoJEtwKSApCiAgICAgICAgewogICAgICAgICAgICBteSAkdG9rZW5fcCA9ICRyTExfbmV3LT5bJEtwXS0+W19UT0tFTl9dOwogICAgICAgICAgICBteSAkdHlwZV9wICA9ICRyTExfbmV3LT5bJEtwXS0+W19UWVBFX107CgogICAgICAgICAgICBteSAoICR0b2tlbl9wcCwgJHR5cGVfcHAgKTsKICAgICAgICAgICAgbXkgJEtwcCA9ICRzZWxmLT5LX3ByZXZpb3VzX2NvZGUoICRLcCwgJHJMTF9uZXcgKTsKICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCRLcHApICkgewogICAgICAgICAgICAgICAgJHRva2VuX3BwID0gJHJMTF9uZXctPlskS3BwXS0+W19UT0tFTl9dOwogICAgICAgICAgICAgICAgJHR5cGVfcHAgID0gJHJMTF9uZXctPlskS3BwXS0+W19UWVBFX107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkdG9rZW5fcHAgPSAiOyI7CiAgICAgICAgICAgICAgICAkdHlwZV9wcCAgPSAnOyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgKCiAgICAgICAgICAgICAgICBpc19lc3NlbnRpYWxfd2hpdGVzcGFjZSgKICAgICAgICAgICAgICAgICAgICAkdG9rZW5fcHAsICR0eXBlX3BwLCAgICAkdG9rZW5fcCwKICAgICAgICAgICAgICAgICAgICAkdHlwZV9wLCAgICR0b2tlbl9uZXh0LCAkdHlwZV9uZXh0LAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICMgQ29weSB0aGlzIGZpcnN0IHRva2VuIGFzIGJsYW5rLCBidXQgdXNlIHByZXZpb3VzIGxpbmUgbnVtYmVyCiAgICAgICAgICAgICAgICBteSAkcmNvcHkgPSBjb3B5X3Rva2VuX2FzX3R5cGUoICRyTEwtPlskS2ZpcnN0XSwgJ2InLCAnICcgKTsKICAgICAgICAgICAgICAgICRyY29weS0+W19MSU5FX0lOREVYX10gPQogICAgICAgICAgICAgICAgICAkckxMX25ldy0+Wy0xXS0+W19MSU5FX0lOREVYX107CiAgICAgICAgICAgICAgICAkc3RvcmVfdG9rZW4tPigkcmNvcHkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGxvb3AgdG8gY29weSBhbGwgdG9rZW5zIG9uIHRoaXMgbGluZSwgd2l0aCBhbnkgY2hhbmdlcwogICAgICAgIG15ICR0eXBlX3NlcXVlbmNlOwogICAgICAgIGZvciAoIG15ICRLSyA9ICRLZmlyc3QgOyAkS0sgPD0gJEtsYXN0IDsgJEtLKysgKSB7CiAgICAgICAgICAgICRydG9rZW5fdmFycyA9ICRyTEwtPlskS0tdOwogICAgICAgICAgICBteSAkdG9rZW4gICAgICAgICAgICAgID0gJHJ0b2tlbl92YXJzLT5bX1RPS0VOX107CiAgICAgICAgICAgIG15ICR0eXBlICAgICAgICAgICAgICAgPSAkcnRva2VuX3ZhcnMtPltfVFlQRV9dOwogICAgICAgICAgICBteSAkbGFzdF90eXBlX3NlcXVlbmNlID0gJHR5cGVfc2VxdWVuY2U7CiAgICAgICAgICAgICR0eXBlX3NlcXVlbmNlID0gJHJ0b2tlbl92YXJzLT5bX1RZUEVfU0VRVUVOQ0VfXTsKCiAgICAgICAgICAgICMgSGFuZGxlIGEgYmxhbmsgc3BhY2UgLi4uCiAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJ2InICkgewoKICAgICAgICAgICAgICAgICMgRGVsZXRlIGl0IGlmIG5vdCB3YW50ZWQgYnkgd2hpdGVzcGFjZSBydWxlcwogICAgICAgICAgICAgICAgIyBvciB3ZSBhcmUgZGVsZXRpbmcgYWxsIHdoaXRlc3BhY2UKICAgICAgICAgICAgICAgICMgTm90ZSB0aGF0IHdoaXRlc3BhY2UgZmxhZyBpcyBhIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIGEKICAgICAgICAgICAgICAgICMgd2hpdGUgc3BhY2UgQkVGT1JFIHRoZSB0b2tlbiBpcyBuZWVkZWQKICAgICAgICAgICAgICAgIG5leHQgaWYgKCAkS0sgPj0gJEtsYXN0ICk7ICAgICMgc2tpcCB0ZXJtaW5hbCBibGFuawogICAgICAgICAgICAgICAgbXkgJEtuZXh0ID0gJEtLICsgMTsKICAgICAgICAgICAgICAgIG15ICR3cyAgICA9ICRyd2hpdGVzcGFjZV9mbGFncy0+WyRLbmV4dF07CiAgICAgICAgICAgICAgICBpZiAoICAgJHdzID09IC0xCiAgICAgICAgICAgICAgICAgICAgfHwgJHJPcHRzX2RlbGV0ZV9vbGRfd2hpdGVzcGFjZSApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICMgRklYTUU6IG1heWJlIHN3aXRjaCB0byB1c2luZyBfbmV3CiAgICAgICAgICAgICAgICAgICAgbXkgJEtwID0gJHNlbGYtPktfcHJldmlvdXNfbm9uYmxhbmsoJEtLKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBkZWZpbmVkKCRLcCk7CiAgICAgICAgICAgICAgICAgICAgbXkgJHRva2VuX3AgPSAkckxMLT5bJEtwXS0+W19UT0tFTl9dOwogICAgICAgICAgICAgICAgICAgIG15ICR0eXBlX3AgID0gJHJMTC0+WyRLcF0tPltfVFlQRV9dOwoKICAgICAgICAgICAgICAgICAgICBteSAoICR0b2tlbl9wcCwgJHR5cGVfcHAgKTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJEtwcCA9ICRzZWxmLT5LX3ByZXZpb3VzX25vbmJsYW5rKCRLcCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCRLcHApICkgewogICAgICAgICAgICAgICAgICAgICAgICAkdG9rZW5fcHAgPSAkckxMLT5bJEtwcF0tPltfVE9LRU5fXTsKICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGVfcHAgID0gJHJMTC0+WyRLcHBdLT5bX1RZUEVfXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0b2tlbl9wcCA9ICI7IjsKICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGVfcHAgID0gJzsnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBteSAkdG9rZW5fbmV4dCA9ICRyTEwtPlskS25leHRdLT5bX1RPS0VOX107CiAgICAgICAgICAgICAgICAgICAgbXkgJHR5cGVfbmV4dCAgPSAkckxMLT5bJEtuZXh0XS0+W19UWVBFX107CgogICAgICAgICAgICAgICAgICAgIG15ICRkb19ub3RfZGVsZXRlID0gaXNfZXNzZW50aWFsX3doaXRlc3BhY2UoCiAgICAgICAgICAgICAgICAgICAgICAgICR0b2tlbl9wcCwgJHR5cGVfcHAsICAgICR0b2tlbl9wLAogICAgICAgICAgICAgICAgICAgICAgICAkdHlwZV9wLCAgICR0b2tlbl9uZXh0LCAkdHlwZV9uZXh0LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzICgkZG9fbm90X2RlbGV0ZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBtYWtlIGl0IGp1c3Qgb25lIGNoYXJhY3RlciBpZiBhbGxvd2VkCiAgICAgICAgICAgICAgICBpZiAoJHJPcHRzX2FkZF93aGl0ZXNwYWNlKSB7CiAgICAgICAgICAgICAgICAgICAgJHJ0b2tlbl92YXJzLT5bX1RPS0VOX10gPSAnICc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkc3RvcmVfdG9rZW4tPigkcnRva2VuX3ZhcnMpOwogICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBIYW5kbGUgYSBub25ibGFuayB0b2tlbi4uLgoKICAgICAgICAgICAgaWYgKCR0eXBlX3NlcXVlbmNlKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkaXNfb3BlbmluZ190b2tlbnskdG9rZW59ICkgewogICAgICAgICAgICAgICAgICAgIG15ICRzZXFub19wYXJlbnQgPSAkc2Vxbm9fc3RhY2t7ICRkZXB0aF9uZXh0IC0gMSB9OwogICAgICAgICAgICAgICAgICAgICRzZXFub19wYXJlbnQgPSBTRVFfUk9PVCB1bmxlc3MgZGVmaW5lZCgkc2Vxbm9fcGFyZW50KTsKICAgICAgICAgICAgICAgICAgICBwdXNoIEB7ICRyY2hpbGRyZW5fb2Zfc2Vxbm8tPnskc2Vxbm9fcGFyZW50fSB9LAogICAgICAgICAgICAgICAgICAgICAgJHR5cGVfc2VxdWVuY2U7CiAgICAgICAgICAgICAgICAgICAgJHJwYXJlbnRfb2Zfc2Vxbm8tPnskdHlwZV9zZXF1ZW5jZX0gPSAkc2Vxbm9fcGFyZW50OwogICAgICAgICAgICAgICAgICAgICRzZXFub19zdGFja3skZGVwdGhfbmV4dH0gICAgICAgICAgID0gJHR5cGVfc2VxdWVuY2U7CiAgICAgICAgICAgICAgICAgICAgJEtLX3N0YWNreyRkZXB0aF9uZXh0fSAgICAgICAgICAgICAgPSAkS0s7CiAgICAgICAgICAgICAgICAgICAgJEtfb3BlbmluZ19ieV9zZXFub3skdHlwZV9zZXF1ZW5jZX0gPSAkS0s7CiAgICAgICAgICAgICAgICAgICAgJGRlcHRoX25leHQrKzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkZGVwdGhfbmV4dCA+ICRkZXB0aF9uZXh0X21heCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGRlcHRoX25leHRfbWF4ID0gJGRlcHRoX25leHQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkaXNfY2xvc2luZ190b2tlbnskdG9rZW59ICkgewoKICAgICAgICAgICAgICAgICAgICAjIEluc2VydCBhIHRlbnRhdGl2ZSBtaXNzaW5nIHNlbWljb2xvbiBpZiB0aGUgbmV4dCB0b2tlbiBpcwogICAgICAgICAgICAgICAgICAgICMgYSBjbG9zaW5nIGJsb2NrIGJyYWNlCiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSBlcSAnfScKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHRva2VuIGVxICd9JwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBub3QgcHJlY2VkZWQgYnkgYSAnOycKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfdHlwZSBuZSAnOycKCiAgICAgICAgICAgICAgICAgICAgICAgICMgYW5kIHRoaXMgaXMgbm90IGEgVkVSU0lPTiBzdG10IChpcyBhbGwgb25lIGxpbmUsIHdlCiAgICAgICAgICAgICAgICAgICAgICAgICMgYXJlIG5vdCBpbnNlcnRpbmcgc2VtaWNvbG9ucyBvbiBvbmUtbGluZSBibG9ja3MpCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRDT0RFX3R5cGUgbmUgJ1ZFUicKCiAgICAgICAgICAgICAgICAgICAgICAgICMgYW5kIHdlIGFyZSBhbGxvd2VkIHRvIGFkZCBzZW1pY29sb25zCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRyT3B0cy0+eydhZGQtc2VtaWNvbG9ucyd9CiAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkYWRkX3BoYW50b21fc2VtaWNvbG9uLT4oJEtLKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgVXBkYXRlIHRoZSBzdGFjay4uLiAgTm90ZSB0aGF0IHdlIGRvIHRoaXMgYWZ0ZXIgYWRkaW5nCiAgICAgICAgICAgICAgICAgICAgIyBhbnkgcGhhbnRvbSBzZW1pY29sb25zIHNvIHRoYXQgdGhleSB3aWxsIGJlIGNvdW50ZWQgaW4KICAgICAgICAgICAgICAgICAgICAjIHRoZSBjb3JyZWN0IGNvbnRhaW5lci4KICAgICAgICAgICAgICAgICAgICAkZGVwdGhfbmV4dC0tOwoKICAgICAgICAgICAgICAgICAgICAjIGtlZXAgdHJhY2sgb2YgYnJva2VuIGxpc3RzIGZvciBsYXRlciBmb3JtYXR0aW5nCiAgICAgICAgICAgICAgICAgICAgbXkgJHNlcW5vX3Rlc3QgID0gJHNlcW5vX3N0YWNreyRkZXB0aF9uZXh0fTsKICAgICAgICAgICAgICAgICAgICBteSAkS0tfb3BlbiAgICAgPSAkS0tfc3RhY2t7JGRlcHRoX25leHR9OwogICAgICAgICAgICAgICAgICAgIG15ICRzZXFub19vdXRlciA9ICRzZXFub19zdGFja3sgJGRlcHRoX25leHQgLSAxIH07CiAgICAgICAgICAgICAgICAgICAgaWYgKCAgIGRlZmluZWQoJHNlcW5vX3Rlc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICYmIGRlZmluZWQoJEtLX29wZW4pCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRzZXFub190ZXN0ID09ICR0eXBlX3NlcXVlbmNlICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRseF9vcGVuICA9ICRyTEwtPlskS0tfb3Blbl0tPltfTElORV9JTkRFWF9dOwogICAgICAgICAgICAgICAgICAgICAgICBteSAkbHhfY2xvc2UgPSAkckxMLT5bJEtLXS0+W19MSU5FX0lOREVYX107CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGx4X29wZW4gPCAkbHhfY2xvc2UgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmlzX2Jyb2tlbl9jb250YWluZXItPnskdHlwZV9zZXF1ZW5jZX0gPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbHhfY2xvc2UgLSAkbHhfb3BlbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCgkc2Vxbm9fb3V0ZXIpICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyaGFzX2Jyb2tlbl9jb250YWluZXItPnskc2Vxbm9fb3V0ZXJ9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBNb2RpZnkgY2VydGFpbiB0b2tlbnMgaGVyZSBmb3Igd2hpdGVzcGFjZQogICAgICAgICAgICAjIFRoZSBmb2xsb3dpbmcgaXMgbm90IHlldCBkb25lLCBidXQgY291bGQgYmU6CiAgICAgICAgICAgICMgICBzdWIgKHggeCB4KQogICAgICAgICAgICBlbHNpZiAoICR0eXBlID1+IC9eW3dpdF0kLyApIHsKCiAgICAgICAgICAgICAgICAjIEV4YW1wbGVzOiA8PHNuaXBwZXRzL3NwYWNlMS5pbj4+CiAgICAgICAgICAgICAgICAjIGNoYW5nZSAnJCAgdmFyJyAgdG8gJyR2YXInIGV0YwogICAgICAgICAgICAgICAgIyBjaGFuZ2UgJ0AgICAgJyAgIHRvICdAJwogICAgICAgICAgICAgICAgbXkgKCAkc2lnaWwsICR3b3JkICkgPSBzcGxpdCAvXHMrLywgJHRva2VuLCAyOwogICAgICAgICAgICAgICAgaWYgKCBsZW5ndGgoJHNpZ2lsKSA9PSAxCiAgICAgICAgICAgICAgICAgICAgJiYgJHNpZ2lsID1+IC9eW1wkXCZcJVwqXEBdJC8gKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICR0b2tlbiA9ICRzaWdpbDsKICAgICAgICAgICAgICAgICAgICAkdG9rZW4gLj0gJHdvcmQgaWYgKCR3b3JkKTsKICAgICAgICAgICAgICAgICAgICAkcnRva2VuX3ZhcnMtPltfVE9LRU5fXSA9ICR0b2tlbjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIFNwbGl0IGlkZW50aWZpZXJzIHdpdGggbGVhZGluZyBhcnJvd3MsIGluc2VydGluZyBibGFua3MgaWYKICAgICAgICAgICAgICAgICMgbmVjZXNzYXJ5LiAgSXQgaXMgZWFzaWVyIGFuZCBzYWZlciBoZXJlIHRoYW4gaW4gdGhlCiAgICAgICAgICAgICAgICAjIHRva2VuaXplci4gIEZvciBleGFtcGxlICctPm5ldycgYmVjb21lcyB0d28gdG9rZW5zLCAnLT4nIGFuZAogICAgICAgICAgICAgICAgIyAnbmV3JyB3aXRoIGEgcG9zc2libGUgYmxhbmsgYmV0d2Vlbi4KICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICMgTm90ZTogdGhlcmUgaXMgYSByZWxhdGVkIHBhdGNoIGluIHN1YiBzZXRfd2hpdGVzcGFjZV9mbGFncwogICAgICAgICAgICAgICAgaWYgKCAgIHN1YnN0ciggJHRva2VuLCAwLCAxICkgZXEgJy0nCiAgICAgICAgICAgICAgICAgICAgJiYgJHRva2VuID1+IC9eXC1cPiguKikkLwogICAgICAgICAgICAgICAgICAgICYmICQxICkKICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJHRva2VuX3NhdmUgPSAkMTsKICAgICAgICAgICAgICAgICAgICBteSAkdHlwZV9zYXZlICA9ICR0eXBlOwoKICAgICAgICAgICAgICAgICAgICAjIENoYW5nZSAnLT4gbmV3JyAgdG8gJy0+bmV3JwogICAgICAgICAgICAgICAgICAgICR0b2tlbl9zYXZlID1+IHMvXlxzKy8vZzsKCiAgICAgICAgICAgICAgICAgICAgIyBzdG9yZSBhIGJsYW5rIHRvIGxlZnQgb2YgYXJyb3cgaWYgbmVjZXNzYXJ5CiAgICAgICAgICAgICAgICAgICAgbXkgJEtwcmV2ID0gJHNlbGYtPktfcHJldmlvdXNfbm9uYmxhbmsoJEtLKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICAgZGVmaW5lZCgkS3ByZXYpCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRyTEwtPlskS3ByZXZdLT5bX1RZUEVfXSBuZSAnYicKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHJPcHRzX2FkZF93aGl0ZXNwYWNlCiAgICAgICAgICAgICAgICAgICAgICAgICYmICR3YW50X2xlZnRfc3BhY2V7Jy0+J30gPT0gV1NfWUVTICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRyY29weSA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgY29weV90b2tlbl9hc190eXBlKCAkcnRva2VuX3ZhcnMsICdiJywgJyAnICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRzdG9yZV90b2tlbi0+KCRyY29weSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIHRoZW4gc3RvcmUgdGhlIGFycm93CiAgICAgICAgICAgICAgICAgICAgbXkgJHJjb3B5ID0gY29weV90b2tlbl9hc190eXBlKCAkcnRva2VuX3ZhcnMsICctPicsICctPicgKTsKICAgICAgICAgICAgICAgICAgICAkc3RvcmVfdG9rZW4tPigkcmNvcHkpOwoKICAgICAgICAgICAgICAgICAgICAjIHN0b3JlIGEgYmxhbmsgYWZ0ZXIgdGhlIGFycm93IGlmIHJlcXVlc3RlZAogICAgICAgICAgICAgICAgICAgICMgYWRkZWQgZm9yIGlzc3VlIGdpdCAjMzMKICAgICAgICAgICAgICAgICAgICBpZiAoICR3YW50X3JpZ2h0X3NwYWNleyctPid9ID09IFdTX1lFUyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHJjb3B5ID0KICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5X3Rva2VuX2FzX3R5cGUoICRydG9rZW5fdmFycywgJ2InLCAnICcgKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHN0b3JlX3Rva2VuLT4oJHJjb3B5KTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgdGhlbiByZXNldCB0aGUgY3VycmVudCB0b2tlbiB0byBiZSB0aGUgcmVtYWluZGVyLAogICAgICAgICAgICAgICAgICAgICMgYW5kIHJlc2V0IHRoZSB3aGl0ZXNwYWNlIGZsYWcgYWNjb3JkaW5nIHRvIHRoZSBhcnJvdwogICAgICAgICAgICAgICAgICAgICR0b2tlbiA9ICRydG9rZW5fdmFycy0+W19UT0tFTl9dID0gJHRva2VuX3NhdmU7CiAgICAgICAgICAgICAgICAgICAgJHR5cGUgID0gJHJ0b2tlbl92YXJzLT5bX1RZUEVfXSAgPSAkdHlwZV9zYXZlOwogICAgICAgICAgICAgICAgICAgICRzdG9yZV90b2tlbi0+KCRydG9rZW5fdmFycyk7CiAgICAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICR0b2tlbiA9fiAvJEFOWVNVQl9QQVRURVJOLyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyAtc3BwID0gMCA6IG5vIHNwYWNlIGJlZm9yZSBvcGVuaW5nIHByb3RvdHlwZSBwYXJlbgogICAgICAgICAgICAgICAgICAgICMgLXNwcCA9IDEgOiBzdGFibGUgKGZvbGxvdyBpbnB1dCBzcGFjaW5nKQogICAgICAgICAgICAgICAgICAgICMgLXNwcCA9IDIgOiBhbHdheXMgc3BhY2UgYmVmb3JlIG9wZW5pbmcgcHJvdG90eXBlIHBhcmVuCiAgICAgICAgICAgICAgICAgICAgbXkgJHNwcCA9ICRyT3B0cy0+eydzcGFjZS1wcm90b3R5cGUtcGFyZW4nfTsKICAgICAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQoJHNwcCkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICAgICggJHNwcCA9PSAwICkgeyAkdG9rZW4gPX4gcy9ccytcKC9cKC87IH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkc3BwID09IDIgKSB7ICR0b2tlbiA9fiBzL1woLyAoLzsgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBvbmUgc3BhY2UgbWF4LCBhbmQgbm8gdGFicwogICAgICAgICAgICAgICAgICAgICR0b2tlbiA9fiBzL1xzKy8gL2c7CiAgICAgICAgICAgICAgICAgICAgJHJ0b2tlbl92YXJzLT5bX1RPS0VOX10gPSAkdG9rZW47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjbGVhbiB1cCBzcGFjZXMgaW4gcGFja2FnZSBpZGVudGlmaWVycywgbGlrZQogICAgICAgICAgICAgICAgIyAgICJwYWNrYWdlICAgICAgICBCb2I6OkRvZzsiCiAgICAgICAgICAgICAgICBpZiAoICR0b2tlbiA9fiAvXnBhY2thZ2Vccy8gKSB7CiAgICAgICAgICAgICAgICAgICAgJHRva2VuID1+IHMvXHMrLyAvZzsKICAgICAgICAgICAgICAgICAgICAkcnRva2VuX3ZhcnMtPltfVE9LRU5fXSA9ICR0b2tlbjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHRyaW0gaWRlbnRpZmllcnMgb2YgdHJhaWxpbmcgYmxhbmtzIHdoaWNoIGNhbiBvY2N1cgogICAgICAgICAgICAgICAgIyB1bmRlciBzb21lIHVudXN1YWwgY2lyY3Vtc3RhbmNlcywgc3VjaCBhcyBpZiB0aGUKICAgICAgICAgICAgICAgICMgaWRlbnRpZmllciAnd2l0Y2gnIGhhcyB0cmFpbGluZyBibGFua3Mgb24gaW5wdXQgaGVyZToKICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICMgc3ViCiAgICAgICAgICAgICAgICAjIHdpdGNoCiAgICAgICAgICAgICAgICAjICgpICAgIyBwcm90b3R5cGUgbWF5IGJlIG9uIG5ldyBsaW5lIC4uLgogICAgICAgICAgICAgICAgIyAuLi4KICAgICAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJ2knICkgewogICAgICAgICAgICAgICAgICAgICR0b2tlbiA9fiBzL1xzKyQvL2c7CiAgICAgICAgICAgICAgICAgICAgJHJ0b2tlbl92YXJzLT5bX1RPS0VOX10gPSAkdG9rZW47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaGFuZGxlIHNlbWljb2xvbnMKICAgICAgICAgICAgZWxzaWYgKCAkdHlwZSBlcSAnOycgKSB7CgogICAgICAgICAgICAgICAgIyBSZW1vdmUgdW5uZWNlc3Nhcnkgc2VtaWNvbG9ucywgYnV0IG5vdCBhZnRlciBiYXJlCiAgICAgICAgICAgICAgICAjIGJsb2Nrcywgd2hlcmUgaXQgY291bGQgYmUgdW5zYWZlIGlmIHRoZSBicmFjZSBpcwogICAgICAgICAgICAgICAgIyBtaXN0b2tlbml6ZWQuCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJHJPcHRzLT57J2RlbGV0ZS1zZW1pY29sb25zJ30KICAgICAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ30nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlzX2Jsb2NrX3dpdGhvdXRfc2VtaWNvbG9uewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua19ibG9ja190eXBlfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRsYXN0X25vbmJsYW5rX2Jsb2NrX3R5cGUgPX4gLyRTVUJfUEFUVEVSTi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkbGFzdF9ub25ibGFua19ibG9ja190eXBlID1+IC9eXHcrOiQvICkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICB8fCAkbGFzdF9ub25ibGFua190eXBlIGVxICc7JwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAjIFRoaXMgbG9va3MgbGlrZSBhIGRlbGV0YWJsZSBzZW1pY29sb24sIGJ1dCBldmVuIGlmIGEKICAgICAgICAgICAgICAgICAgICAjIHNlbWljb2xvbiBjYW4gYmUgZGVsZXRlZCBpdCBpcyBuZWNlc3NhcmlseSBiZXN0IHRvIGRvIHNvLgogICAgICAgICAgICAgICAgICAgICMgV2UgYXBwbHkgdGhlc2UgYWRkaXRpb25hbCBydWxlcyBmb3IgZGVsZXRpb246CiAgICAgICAgICAgICAgICAgICAgIyAtIEFsd2F5cyBvayB0byBkZWxldGUgYSAnOycgYXQgdGhlIGVuZCBvZiBhIGxpbmUKICAgICAgICAgICAgICAgICAgICAjIC0gTmV2ZXIgZGVsZXRlIGEgJzsnIGJlZm9yZSBhICcjJyBiZWNhdXNlIGl0IHdvdWxkCiAgICAgICAgICAgICAgICAgICAgIyAgIHByb21vdGUgaXQgdG8gYSBibG9jayBjb21tZW50LgogICAgICAgICAgICAgICAgICAgICMgLSBJZiBhIHNlbWljb2xvbiBpcyBub3QgYXQgdGhlIGVuZCBvZiBsaW5lLCB0aGVuIG9ubHkKICAgICAgICAgICAgICAgICAgICAjICAgZGVsZXRlIGlmIGl0IGlzIGZvbGxvd2VkIGJ5IGFub3RoZXIgc2VtaWNvbG9uIG9yIGNsb3NpbmcKICAgICAgICAgICAgICAgICAgICAjICAgdG9rZW4uICBUaGlzIGluY2x1ZGVzIHRoZSBjb21tZW50IHJ1bGUuICBJdCBtYXkgdGFrZQogICAgICAgICAgICAgICAgICAgICMgICB0d28gcGFzc2VzIHRvIGdldCB0byBhIGZpbmFsIHN0YXRlLCBidXQgaXQgaXMgYSBsaXR0bGUKICAgICAgICAgICAgICAgICAgICAjICAgc2FmZXIuICBGb3IgZXhhbXBsZSwga2VlcCB0aGUgZmlyc3Qgc2VtaWNvbG9uIGhlcmU6CiAgICAgICAgICAgICAgICAgICAgIyAgICAgIGV2YWwgeyBzdWIgYnViYmEgeyBvaygwKSB9OyBvaygwKSB9IHx8IG9rKDEpOwogICAgICAgICAgICAgICAgICAgICMgICBJdCBpcyBub3QgcmVxdWlyZWQgYnV0IGFkZHMgc29tZSBjbGFyaXR5LgogICAgICAgICAgICAgICAgICAgIG15ICRva190b19kZWxldGUgPSAxOwogICAgICAgICAgICAgICAgICAgIGlmICggJEtLIDwgJEtsYXN0ICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkS24gPSAkc2VsZi0+S19uZXh0X25vbmJsYW5rKCRLSyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCgkS24pICYmICRLbiA8PSAkS2xhc3QgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkbmV4dF9ub25ibGFua190b2tlbl90eXBlID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJMTC0+WyRLbl0tPltfVFlQRV9dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9rX3RvX2RlbGV0ZSA9ICRuZXh0X25vbmJsYW5rX3Rva2VuX3R5cGUgZXEgJzsnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRuZXh0X25vbmJsYW5rX3Rva2VuX3R5cGUgZXEgJ30nOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGRvIG5vdCBkZWxldGUgb25seSBub25ibGFuayB0b2tlbiBpbiBhIGZpbGUKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJEtuID0gJHNlbGYtPktfbmV4dF9ub25ibGFuaygkS0spOwogICAgICAgICAgICAgICAgICAgICAgICAkb2tfdG9fZGVsZXRlID0gZGVmaW5lZCgkS24pIHx8ICRub25ibGFua190b2tlbl9jb3VudDsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICgkb2tfdG9fZGVsZXRlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5ub3RlX2RlbGV0ZWRfc2VtaWNvbG9uKCRpbnB1dF9saW5lX251bWJlcik7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCJFeHRyYSAnOydcbiIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwYXRjaCB0byBhZGQgc3BhY2UgdG8gc29tZXRoaW5nIGxpa2UgIngxMCIKICAgICAgICAgICAgIyBUaGlzIGF2b2lkcyBoYXZpbmcgdG8gc3BsaXQgdGhpcyB0b2tlbiBpbiB0aGUgcHJlLXRva2VuaXplcgogICAgICAgICAgICBlbHNpZiAoICR0eXBlIGVxICduJyApIHsKICAgICAgICAgICAgICAgIGlmICggJHRva2VuID1+IC9eeFxkKy8gKSB7CiAgICAgICAgICAgICAgICAgICAgJHRva2VuID1+IHMveC94IC87CiAgICAgICAgICAgICAgICAgICAgJHJ0b2tlbl92YXJzLT5bX1RPS0VOX10gPSAkdG9rZW47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgZm9yIGEgcXcgcXVvdGUKICAgICAgICAgICAgZWxzaWYgKCAkdHlwZSBlcSAncScgKSB7CgogICAgICAgICAgICAgICAgIyB0cmltIGJsYW5rcyBmcm9tIHJpZ2h0IG9mIHF3IHF1b3RlcwogICAgICAgICAgICAgICAgIyAoVG8gYXZvaWQgdHJpbW1pbmcgcXcgcXVvdGVzIHVzZSAtbnRxdzsgdGhlIHRva2VuaXplciBoYW5kbGVzCiAgICAgICAgICAgICAgICAjIHRoaXMpCiAgICAgICAgICAgICAgICAkdG9rZW4gPX4gcy9ccyokLy87CiAgICAgICAgICAgICAgICAkcnRva2VuX3ZhcnMtPltfVE9LRU5fXSA9ICR0b2tlbjsKICAgICAgICAgICAgICAgICRzZWxmLT5ub3RlX2VtYmVkZGVkX3RhYigkaW5wdXRfbGluZV9udW1iZXIpCiAgICAgICAgICAgICAgICAgIGlmICggJHRva2VuID1+ICJcdCIgKTsKCiAgICAgICAgICAgICAgICBpZiAoJGluX211bHRpbGluZV9xdykgewoKICAgICAgICAgICAgICAgICAgICAjIElmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIGEgbXVsdGlsaW5lIHF3IC4uCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkaW5fbXVsdGlsaW5lX3F3ID09ICRLSyApIHsKCiAgICAgICAgICAgICAgICAgIyBTcGxpdCBvZmYgdGhlIGNsb3NpbmcgZGVsaW1pdGVyIGNoYXJhY3RlcgogICAgICAgICAgICAgICAgICMgc28gdGhhdCB0aGUgZm9ybWF0dGVyIGNhbiBwdXQgYSBsaW5lIGJyZWFrIHRoZXJlIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICAgICAgICAgICAgICBteSAkcGFydDEgPSAkdG9rZW47CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRwYXJ0MiA9IHN1YnN0ciggJHBhcnQxLCAtMSwgMSwgIiIgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcGFydDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRyY29weSA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlfdG9rZW5fYXNfdHlwZSggJHJ0b2tlbl92YXJzLCAncScsICRwYXJ0MSApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0b3JlX3Rva2VuLT4oJHJjb3B5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0b2tlbiA9ICRwYXJ0MjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRydG9rZW5fdmFycy0+W19UT0tFTl9dID0gJHRva2VuOwoKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAkaW5fbXVsdGlsaW5lX3F3ID0gdW5kZWY7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHN0b3JlIHdpdGhvdXQgcHJlY2VkaW5nIGJsYW5rCiAgICAgICAgICAgICAgICAgICAgICAgICRzdG9yZV90b2tlbi0+KCRydG9rZW5fdmFycyk7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnRpbnVpbmcgYSBtdWx0aWxpbmUgcXcKICAgICAgICAgICAgICAgICAgICAgICAgJHN0b3JlX3Rva2VuLT4oJHJ0b2tlbl92YXJzKTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICMgd2UgYXJlIGVuY291bnRlcmVkIG5ldyBxdyB0b2tlbi4uLnNlZSBpZiBtdWx0aWxpbmUKICAgICAgICAgICAgICAgICAgICBpZiAoJEFMTE9XX0JSRUFLX01VTFRJTElORV9RVykgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkS19lbmQgPSAkS19lbmRfcS0+KCRLSyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJEtfZW5kICE9ICRLSyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFN0YXJ0aW5nIG11bHRpbGluZSBxdy4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzZXQgZmxhZyBlcXVhbCB0byB0aGUgZW5kaW5nIEsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbl9tdWx0aWxpbmVfcXcgPSAkS19lbmQ7CgogICAgICAgICAgICAgICAgICAgICAgICAgICMgU3BsaXQgb2ZmIHRoZSBsZWFkaW5nIHBhcnQgc28gdGhhdCB0aGUgZm9ybWF0dGVyIGNhbgogICAgICAgICAgICAgICAgICAgICAgICAgICMgcHV0IGEgbGluZSBicmVhayB0aGVyZSBpZiBuZWNlc3NhcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJHRva2VuID1+IC9eKHF3XHMqLikoLiopJC8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHBhcnQxID0gJDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHBhcnQyID0gJDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRwYXJ0MikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkcmNvcHkgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlfdG9rZW5fYXNfdHlwZSggJHJ0b2tlbl92YXJzLCAncScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFydDEgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0b3JlX3Rva2VuX2FuZF9zcGFjZS0+KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJjb3B5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJ3aGl0ZXNwYWNlX2ZsYWdzLT5bJEtLXSA9PSBXU19ZRVMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRva2VuID0gJHBhcnQyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcnRva2VuX3ZhcnMtPltfVE9LRU5fXSA9ICR0b2tlbjsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTZWNvbmQgcGFydCBnb2VzIHdpdGhvdXQgaW50ZXJtZWRpYXRlIGJsYW5rCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdG9yZV90b2tlbi0+KCRydG9rZW5fdmFycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGlzIGlzIGEgbmV3IHNpbmdsZSB0b2tlbiBxdyAtCiAgICAgICAgICAgICAgICAgICAgICAgICMgc3RvcmUgd2l0aCBwb3NzaWJsZSBwcmVjZWRpbmcgYmxhbmsKICAgICAgICAgICAgICAgICAgICAgICAgJHN0b3JlX3Rva2VuX2FuZF9zcGFjZS0+KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJ0b2tlbl92YXJzLCAkcndoaXRlc3BhY2VfZmxhZ3MtPlskS0tdID09IFdTX1lFUwogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAkdHlwZSBlcSAncScgKQoKICAgICAgICAgICAgIyBjaGFuZ2UgJ0xBQkVMICAgOicgICB0byAnTEFCRUw6JwogICAgICAgICAgICBlbHNpZiAoICR0eXBlIGVxICdKJyApIHsKICAgICAgICAgICAgICAgICR0b2tlbiA9fiBzL1xzKy8vZzsKICAgICAgICAgICAgICAgICRydG9rZW5fdmFycy0+W19UT0tFTl9dID0gJHRva2VuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIGEgcXVvdGUgZm9yIHByb2JsZW1zCiAgICAgICAgICAgIGVsc2lmICggJHR5cGUgZXEgJ1EnICkgewogICAgICAgICAgICAgICAgJGNoZWNrX1EtPiggJEtLLCAkS2ZpcnN0LCAkaW5wdXRfbGluZV9udW1iZXIgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBTdG9yZSB0aGlzIHRva2VuIHdpdGggcG9zc2libGUgcHJldmlvdXMgYmxhbmsKICAgICAgICAgICAgJHN0b3JlX3Rva2VuX2FuZF9zcGFjZS0+KAogICAgICAgICAgICAgICAgJHJ0b2tlbl92YXJzLCAkcndoaXRlc3BhY2VfZmxhZ3MtPlskS0tdID09IFdTX1lFUwogICAgICAgICAgICApOwoKICAgICAgICB9ICAgICMgRW5kIHRva2VuIGxvb3AKICAgIH0gICAgIyBFbmQgbGluZSBsb29wCgogICAgIyBXYWxrIGJhY2t3YXJkcyB0aHJvdWdoIHRoZSB0b2tlbnMsIG1ha2luZyBmb3J3YXJkIGxpbmtzIHRvIHNlcXVlbmNlIGl0ZW1zLgogICAgaWYgKCBAeyRyTExfbmV3fSApIHsKICAgICAgICBteSAkS05FWFQ7CiAgICAgICAgZm9yICggbXkgJEtLID0gQHskckxMX25ld30gLSAxIDsgJEtLID49IDAgOyAkS0stLSApIHsKICAgICAgICAgICAgJHJMTF9uZXctPlskS0tdLT5bX0tORVhUX1NFUV9JVEVNX10gPSAkS05FWFQ7CiAgICAgICAgICAgIGlmICggJHJMTF9uZXctPlskS0tdLT5bX1RZUEVfU0VRVUVOQ0VfXSApIHsgJEtORVhUID0gJEtLIH0KICAgICAgICB9CiAgICAgICAgJHNlbGYtPltfS19maXJzdF9zZXFfaXRlbV9dID0gJEtORVhUOwogICAgfQoKICAgICMgZmluZCBhbmQgcmVtZW1iZXIgbGlzdHMgYnkgc2VxdWVuY2UgbnVtYmVyCiAgICAjIFRPRE86IGV2ZW50dWFsbHkgdGhpcyBzaG91bGQgaG9sZCBhIG5hbWUgZm9yIHRoZSBsaXN0CiAgICBteSAkcmlzX2xpc3RfYnlfc2Vxbm8gPSB7fTsKICAgIGZvcmVhY2ggbXkgJHNlcW5vICgga2V5cyAleyRLX29wZW5pbmdfY29udGFpbmVyfSApIHsKICAgICAgICBteSAkS19vcGVuaW5nICA9ICRLX29wZW5pbmdfY29udGFpbmVyLT57JHNlcW5vfTsKICAgICAgICBteSAkYmxvY2tfdHlwZSA9ICRyTExfbmV3LT5bJEtfb3BlbmluZ10tPltfQkxPQ0tfVFlQRV9dOwogICAgICAgIG5leHQgaWYgKCRibG9ja190eXBlKTsKICAgICAgICBteSAkcnR5cGVfY291bnQgPSAkcnR5cGVfY291bnRfYnlfc2Vxbm8tPnskc2Vxbm99OwogICAgICAgIG5leHQgdW5sZXNzICgkcnR5cGVfY291bnQpOwogICAgICAgIG15ICRmYXRfY29tbWFfY291bnQgPSAkcnR5cGVfY291bnQtPnsnPT4nfTsKICAgICAgICBteSAkY29tbWFfY291bnQgICAgID0gJHJ0eXBlX2NvdW50LT57JywnfTsKICAgICAgICBteSAkc2VtaWNvbG9uX2NvdW50ID0gJHJ0eXBlX2NvdW50LT57JzsnfTsKCiAgICAgICAgIyBUaGlzIGRlZmluaXRpb24gb2YgYSBsaXN0IGlzIHN1ZmZpY2llbnQgZm9yIG91ciBuZWVkcwogICAgICAgIGlmICggKCAkZmF0X2NvbW1hX2NvdW50IHx8ICRjb21tYV9jb3VudCApICYmICEkc2VtaWNvbG9uX2NvdW50ICkgewogICAgICAgICAgICAkcmlzX2xpc3RfYnlfc2Vxbm8tPnskc2Vxbm99ID0gJHNlcW5vOwogICAgICAgIH0KICAgIH0KCiAgICAjIFJlc2V0IG1lbW9yeSB0byBiZSB0aGUgbmV3IGFycmF5CiAgICAkc2VsZi0+W19yTExfXSA9ICRyTExfbmV3OwogICAgbXkgJEtsaW1pdDsKICAgIGlmICggQHskckxMX25ld30gKSB7ICRLbGltaXQgPSBAeyRyTExfbmV3fSAtIDEgfQogICAgJHNlbGYtPltfS2xpbWl0X10gICAgICAgICAgICAgICAgPSAkS2xpbWl0OwogICAgJHNlbGYtPltfS19vcGVuaW5nX2NvbnRhaW5lcl9dICAgPSAkS19vcGVuaW5nX2NvbnRhaW5lcjsKICAgICRzZWxmLT5bX0tfY2xvc2luZ19jb250YWluZXJfXSAgID0gJEtfY2xvc2luZ19jb250YWluZXI7CiAgICAkc2VsZi0+W19LX29wZW5pbmdfdGVybmFyeV9dICAgICA9ICRLX29wZW5pbmdfdGVybmFyeTsKICAgICRzZWxmLT5bX0tfY2xvc2luZ190ZXJuYXJ5X10gICAgID0gJEtfY2xvc2luZ190ZXJuYXJ5OwogICAgJHNlbGYtPltfcktfcGhhbnRvbV9zZW1pY29sb25zX10gPSAkcktfcGhhbnRvbV9zZW1pY29sb25zOwogICAgJHNlbGYtPltfcnR5cGVfY291bnRfYnlfc2Vxbm9fXSAgPSAkcnR5cGVfY291bnRfYnlfc2Vxbm87CiAgICAkc2VsZi0+W19yaXNfYnJva2VuX2NvbnRhaW5lcl9dICA9ICRyaXNfYnJva2VuX2NvbnRhaW5lcjsKICAgICRzZWxmLT5bX3JoYXNfYnJva2VuX2NvbnRhaW5lcl9dID0gJHJoYXNfYnJva2VuX2NvbnRhaW5lcjsKICAgICRzZWxmLT5bX3JwYXJlbnRfb2Zfc2Vxbm9fXSAgICAgID0gJHJwYXJlbnRfb2Zfc2Vxbm87CiAgICAkc2VsZi0+W19yY2hpbGRyZW5fb2Zfc2Vxbm9fXSAgICA9ICRyY2hpbGRyZW5fb2Zfc2Vxbm87CiAgICAkc2VsZi0+W19yaXNfbGlzdF9ieV9zZXFub19dICAgICA9ICRyaXNfbGlzdF9ieV9zZXFubzsKCiAgICAjIERFQlVHIE9QVElPTjogbWFrZSBzdXJlIHRoZSBuZXcgYXJyYXkgbG9va3Mgb2theS4KICAgICMgVGhpcyBpcyBubyBsb25nZXIgbmVlZGVkIGJ1dCBzaG91bGQgYmUgcmV0YWluZWQgZm9yIGZ1dHVyZSBkZXZlbG9wbWVudC4KICAgIERFVkVMX01PREUgJiYgJHNlbGYtPmNoZWNrX3Rva2VuX2FycmF5KCk7CgogICAgIyByZXNldCB0aGUgdG9rZW4gbGltaXRzIG9mIGVhY2ggbGluZQogICAgJHNlbGYtPnJlc3luY19saW5lc19hbmRfdG9rZW5zKCk7CgogICAgcmV0dXJuOwp9CgpzdWIgY29weV90b2tlbl9hc190eXBlIHsKCiAgICAjIFRoaXMgcHJvdmlkZXMgYSBxdWljayB3YXkgdG8gY3JlYXRlIGEgbmV3IHRva2VuIGJ5CiAgICAjIHNsaWdodGx5IG1vZGlmeWluZyBhbiBleGlzdGluZyB0b2tlbi4KICAgIG15ICggJHJvbGRfdG9rZW4sICR0eXBlLCAkdG9rZW4gKSA9IEBfOwogICAgaWYgKCAkdHlwZSBlcSAnYicgKSB7CiAgICAgICAgJHRva2VuID0gIiAiIHVubGVzcyBkZWZpbmVkKCR0b2tlbik7CiAgICB9CiAgICBlbHNpZiAoICR0eXBlIGVxICdxJyApIHsKICAgICAgICAkdG9rZW4gPSAnJyB1bmxlc3MgZGVmaW5lZCgkdG9rZW4pOwogICAgfQogICAgZWxzaWYgKCAkdHlwZSBlcSAnLT4nICkgewogICAgICAgICR0b2tlbiA9ICctPicgdW5sZXNzIGRlZmluZWQoJHRva2VuKTsKICAgIH0KICAgIGVsc2lmICggJHR5cGUgZXEgJzsnICkgewogICAgICAgICR0b2tlbiA9ICc7JyB1bmxlc3MgZGVmaW5lZCgkdG9rZW4pOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgVGhpcyBzdWIgYXNzdW1lcyBpdCB3aWxsIGJlIGNhbGxlZCB3aXRoIGp1c3QgdHdvIHR5cGVzLCAnYicgb3IgJ3EnCiAgICAgICAgRmF1bHQoCiJQcm9ncmFtbWluZyBlcnJvcjogY29weV90b2tlbl9hcyBoYXMgdHlwZSAkdHlwZSBidXQgc2hvdWxkIGJlICdiJyBvciAncSciCiAgICAgICAgKTsKICAgIH0KCiAgICBteSBAcm5ld190b2tlbiA9IEB7JHJvbGRfdG9rZW59OwogICAgJHJuZXdfdG9rZW5bX1RZUEVfXSAgICAgICAgICAgICAgICAgID0gJHR5cGU7CiAgICAkcm5ld190b2tlbltfVE9LRU5fXSAgICAgICAgICAgICAgICAgPSAkdG9rZW47CiAgICAkcm5ld190b2tlbltfQkxPQ0tfVFlQRV9dICAgICAgICAgICAgPSAnJzsKICAgICRybmV3X3Rva2VuW19DT05UQUlORVJfRU5WSVJPTk1FTlRfXSA9ICcnOwogICAgJHJuZXdfdG9rZW5bX1RZUEVfU0VRVUVOQ0VfXSAgICAgICAgID0gJyc7CiAgICByZXR1cm4gXEBybmV3X3Rva2VuOwp9CgpzdWIgRGVidWdfZHVtcF90b2tlbnMgewoKICAgICMgYSBkZWJ1ZyByb3V0aW5lLCBub3Qgbm9ybWFsbHkgdXNlZAogICAgbXkgKCAkc2VsZiwgJG1zZyApID0gQF87CiAgICBteSAkckxMICAgPSAkc2VsZi0+W19yTExfXTsKICAgIG15ICRudmFycyA9IEB7JHJMTH07CiAgICBwcmludCBTVERFUlIgIiRtc2dcbiI7CiAgICBwcmludCBTVERFUlIgIm50b2tlbnM9JG52YXJzXG4iOwogICAgcHJpbnQgU1RERVJSICJLXHRfVE9LRU5fXHRfVFlQRV9cbiI7CiAgICBteSAkSyA9IDA7CgogICAgZm9yZWFjaCBteSAkaXRlbSAoIEB7JHJMTH0gKSB7CiAgICAgICAgcHJpbnQgU1RERVJSICIkS1x0JGl0ZW0tPltfVE9LRU5fXVx0JGl0ZW0tPltfVFlQRV9dXG4iOwogICAgICAgICRLKys7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBLX25leHRfY29kZSB7CiAgICBteSAoICRzZWxmLCAkS0ssICRyTEwgKSA9IEBfOwoKICAgICMgcmV0dXJuIHRoZSBpbmRleCBLIG9mIHRoZSBuZXh0IG5vbmJsYW5rLCBub24tY29tbWVudCB0b2tlbgogICAgcmV0dXJuIHVubGVzcyAoIGRlZmluZWQoJEtLKSAmJiAkS0sgPj0gMCApOwoKICAgICMgdXNlIHRoZSBzdGFuZGFyZCBhcnJheSB1bmxlc3MgZ2l2ZW4gb3RoZXJ3aXNlCiAgICAkckxMID0gJHNlbGYtPltfckxMX10gdW5sZXNzICggZGVmaW5lZCgkckxMKSApOwogICAgbXkgJE51bSAgPSBAeyRyTEx9OwogICAgbXkgJEtubmIgPSAkS0sgKyAxOwogICAgd2hpbGUgKCAkS25uYiA8ICROdW0gKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCggJHJMTC0+WyRLbm5iXSApICkgewoKICAgICAgICAgICAgIyBXZSBzZWVtIHRvIGhhdmUgZW5jb3VudGVyZWQgYSBnYXAgaW4gb3VyIGFycmF5LgogICAgICAgICAgICAjIFRoaXMgc2hvdWxkbid0IGhhcHBlbiBiZWNhdXNlIHN1YiB3cml0ZV9saW5lKCkgcHVzaGVkCiAgICAgICAgICAgICMgaXRlbXMgaW50byB0aGUgJHJMTCBhcnJheS4KICAgICAgICAgICAgRmF1bHQoIlVuZGVmaW5lZCBlbnRyeSBmb3Igaz0kS25uYiIpOwogICAgICAgIH0KICAgICAgICBpZiAoICAgJHJMTC0+WyRLbm5iXS0+W19UWVBFX10gbmUgJ2InCiAgICAgICAgICAgICYmICRyTEwtPlskS25uYl0tPltfVFlQRV9dIG5lICcjJyApCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gJEtubmI7CiAgICAgICAgfQogICAgICAgICRLbm5iKys7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBLX25leHRfbm9uYmxhbmsgewogICAgbXkgKCAkc2VsZiwgJEtLLCAkckxMICkgPSBAXzsKCiAgICAjIHJldHVybiB0aGUgaW5kZXggSyBvZiB0aGUgbmV4dCBub25ibGFuayB0b2tlbiwgb3IKICAgICMgcmV0dXJuIHVuZGVmIGlmIG5vbmUKICAgIHJldHVybiB1bmxlc3MgKCBkZWZpbmVkKCRLSykgJiYgJEtLID49IDAgKTsKCiAgICAjIFRoZSB0aGlyZCBhcmcgYWxsb3dzIHRoaXMgcm91dGluZSB0byBiZSB1c2VkIG9uIGFueSBhcnJheS4gIFRoaXMgaXMKICAgICMgdXNlZnVsIGluIHN1YiByZXNwYWNlX3Rva2VucyB3aGVuIHdlIGFyZSBjb3B5aW5nIHRva2VucyBmcm9tIGFuIG9sZCAkckxMCiAgICAjIHRvIGEgbmV3ICRyTEwgYXJyYXkuICBCdXQgdXN1YWxseSB0aGUgdGhpcmQgYXJnIHdpbGwgbm90IGJlIGdpdmVuIGFuZCB3ZQogICAgIyB3aWxsIGp1c3QgdXNlIHRoZSAkckxMIGFycmF5IGluICRzZWxmLgogICAgJHJMTCA9ICRzZWxmLT5bX3JMTF9dIHVubGVzcyAoIGRlZmluZWQoJHJMTCkgKTsKICAgIG15ICROdW0gID0gQHskckxMfTsKICAgIG15ICRLbm5iID0gJEtLICsgMTsKICAgIHJldHVybiB1bmxlc3MgKCAkS25uYiA8ICROdW0gKTsKICAgIHJldHVybiAkS25uYiBpZiAoICRyTEwtPlskS25uYl0tPltfVFlQRV9dIG5lICdiJyApOwogICAgcmV0dXJuIHVubGVzcyAoICsrJEtubmIgPCAkTnVtICk7CiAgICByZXR1cm4gJEtubmIgaWYgKCAkckxMLT5bJEtubmJdLT5bX1RZUEVfXSBuZSAnYicgKTsKCiAgICAjIEJhY2t1cCBsb29wLiBWZXJ5IHVubGlrZWx5IHRvIGdldCBoZXJlOyBpdCBtZWFucyB3ZSBoYXZlIG5laWdoYm9yaW5nCiAgICAjIGJsYW5rcyBpbiB0aGUgdG9rZW4gc3RyZWFtLgogICAgJEtubmIrKzsKICAgIHdoaWxlICggJEtubmIgPCAkTnVtICkgewoKICAgICAgICAjIFNhZmV0eSBjaGVjaywgdGhpcyBmYXVsdCBzaG91bGRuJ3QgaGFwcGVuOiAgVGhlICRyTEwgYXJyYXkgaXMgdGhlCiAgICAgICAgIyBtYWluIGFycmF5IG9mIHRva2Vucywgc28gYWxsIGVudHJpZXMgc2hvdWxkIGJlIHVzZWQuICBJdCBpcwogICAgICAgICMgaW5pdGlhbGl6ZWQgaW4gc3ViIHdyaXRlX2xpbmUsIGFuZCB0aGVuIHJlLWluaXRpYWxpemVkIGJ5IHN1YgogICAgICAgICMgJHN0b3JlX3Rva2VuKCkgd2l0aGluIHN1YiByZXNwYWNlX3Rva2Vucy4gIFRva2VucyBhcmUgcHVzaGVkIG9uCiAgICAgICAgIyBzbyB0aGVyZSBzaG91bGRuJ3QgYmUgYW55IGdhcHMuCiAgICAgICAgaWYgKCAhZGVmaW5lZCggJHJMTC0+WyRLbm5iXSApICkgewogICAgICAgICAgICBGYXVsdCgiVW5kZWZpbmVkIGVudHJ5IGZvciBrPSRLbm5iIik7CiAgICAgICAgfQogICAgICAgIGlmICggJHJMTC0+WyRLbm5iXS0+W19UWVBFX10gbmUgJ2InICkgeyByZXR1cm4gJEtubmIgfQogICAgICAgICRLbm5iKys7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBLX3ByZXZpb3VzX2NvZGUgewoKICAgICMgcmV0dXJuIHRoZSBpbmRleCBLIG9mIHRoZSBwcmV2aW91cyBub25ibGFuaywgbm9uLWNvbW1lbnQgdG9rZW4KICAgICMgQ2FsbCB3aXRoICRLSz11bmRlZiB0byBzdGFydCBzZWFyY2ggYXQgdGhlIHRvcCBvZiB0aGUgYXJyYXkKICAgIG15ICggJHNlbGYsICRLSywgJHJMTCApID0gQF87CgogICAgIyB1c2UgdGhlIHN0YW5kYXJkIGFycmF5IHVubGVzcyBnaXZlbiBvdGhlcndpc2UKICAgICRyTEwgPSAkc2VsZi0+W19yTExfXSB1bmxlc3MgKCBkZWZpbmVkKCRyTEwpICk7CiAgICBteSAkTnVtID0gQHskckxMfTsKICAgIGlmICAgICggIWRlZmluZWQoJEtLKSApIHsgJEtLID0gJE51bSB9CiAgICBlbHNpZiAoICRLSyA+ICROdW0gKSB7CgogICAgICAgICMgVGhpcyBmYXVsdCBjYW4gYmUgY2F1c2VkIGJ5IGEgcHJvZ3JhbW1pbmcgZXJyb3IgaW4gd2hpY2ggYSBiYWQgJEtLIGlzCiAgICAgICAgIyBnaXZlbi4gIFRoZSBjYWxsZXIgc2hvdWxkIG1ha2UgdGhlIGZpcnN0IGNhbGwgd2l0aCBLS19uZXc9dW5kZWYgdG8KICAgICAgICAjIGF2b2lkIHRoaXMgZXJyb3IuCiAgICAgICAgRmF1bHQoCiJQcm9ncmFtIEJ1ZzogS19wcmV2aW91c19ub25ibGFua19uZXcgY2FsbGVkIHdpdGggSz0kS0sgd2hpY2ggZXhjZWVkcyAkTnVtIgogICAgICAgICk7CiAgICB9CiAgICBteSAkS3BuYiA9ICRLSyAtIDE7CiAgICB3aGlsZSAoICRLcG5iID49IDAgKSB7CiAgICAgICAgaWYgKCAgICRyTEwtPlskS3BuYl0tPltfVFlQRV9dIG5lICdiJwogICAgICAgICAgICAmJiAkckxMLT5bJEtwbmJdLT5bX1RZUEVfXSBuZSAnIycgKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICRLcG5iOwogICAgICAgIH0KICAgICAgICAkS3BuYi0tOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgS19wcmV2aW91c19ub25ibGFuayB7CgogICAgIyByZXR1cm4gaW5kZXggb2YgcHJldmlvdXMgbm9uYmxhbmsgdG9rZW4gYmVmb3JlIGl0ZW0gSzsKICAgICMgQ2FsbCB3aXRoICRLSz11bmRlZiB0byBzdGFydCBzZWFyY2ggYXQgdGhlIHRvcCBvZiB0aGUgYXJyYXkKICAgIG15ICggJHNlbGYsICRLSywgJHJMTCApID0gQF87CgogICAgIyB1c2UgdGhlIHN0YW5kYXJkIGFycmF5IHVubGVzcyBnaXZlbiBvdGhlcndpc2UKICAgICRyTEwgPSAkc2VsZi0+W19yTExfXSB1bmxlc3MgKCBkZWZpbmVkKCRyTEwpICk7CiAgICBteSAkTnVtID0gQHskckxMfTsKICAgIGlmICAgICggIWRlZmluZWQoJEtLKSApIHsgJEtLID0gJE51bSB9CiAgICBlbHNpZiAoICRLSyA+ICROdW0gKSB7CgogICAgICAgICMgVGhpcyBmYXVsdCBjYW4gYmUgY2F1c2VkIGJ5IGEgcHJvZ3JhbW1pbmcgZXJyb3IgaW4gd2hpY2ggYSBiYWQgJEtLIGlzCiAgICAgICAgIyBnaXZlbi4gIFRoZSBjYWxsZXIgc2hvdWxkIG1ha2UgdGhlIGZpcnN0IGNhbGwgd2l0aCBLS19uZXc9dW5kZWYgdG8KICAgICAgICAjIGF2b2lkIHRoaXMgZXJyb3IuCiAgICAgICAgRmF1bHQoCiJQcm9ncmFtIEJ1ZzogS19wcmV2aW91c19ub25ibGFua19uZXcgY2FsbGVkIHdpdGggSz0kS0sgd2hpY2ggZXhjZWVkcyAkTnVtIgogICAgICAgICk7CiAgICB9CiAgICBteSAkS3BuYiA9ICRLSyAtIDE7CiAgICByZXR1cm4gdW5sZXNzICggJEtwbmIgPj0gMCApOwogICAgcmV0dXJuICRLcG5iIGlmICggJHJMTC0+WyRLcG5iXS0+W19UWVBFX10gbmUgJ2InICk7CiAgICByZXR1cm4gdW5sZXNzICggLS0kS3BuYiA+PSAwICk7CiAgICByZXR1cm4gJEtwbmIgaWYgKCAkckxMLT5bJEtwbmJdLT5bX1RZUEVfXSBuZSAnYicgKTsKCiAgICAjIEJhY2t1cCBsb29wLiBXZSBzaG91bGQgbm90IGdldCBoZXJlIHVubGVzcyBzb21lIHJvdXRpbmUKICAgICMgc2xpcHBlZCByZXBlYXRlZCBibGFua3MgaW50byB0aGUgdG9rZW4gc3RyZWFtLgogICAgcmV0dXJuIHVubGVzcyAoIC0tJEtwbmIgPj0gMCApOwogICAgd2hpbGUgKCAkS3BuYiA+PSAwICkgewogICAgICAgIGlmICggJHJMTC0+WyRLcG5iXS0+W19UWVBFX10gbmUgJ2InICkgeyByZXR1cm4gJEtwbmIgfQogICAgICAgICRLcG5iLS07CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBnZXRfb2xkX2xpbmVfaW5kZXggewoKICAgICMgcmV0dXJuIGluZGV4IG9mIHRoZSBvcmlnaW5hbCBsaW5lIHRoYXQgdG9rZW4gSyB3YXMgb24KICAgIG15ICggJHNlbGYsICRLICkgPSBAXzsKICAgIG15ICRyTEwgPSAkc2VsZi0+W19yTExfXTsKICAgIHJldHVybiAwIHVubGVzcyBkZWZpbmVkKCRLKTsKICAgIHJldHVybiAkckxMLT5bJEtdLT5bX0xJTkVfSU5ERVhfXTsKfQoKc3ViIGdldF9vbGRfbGluZV9jb3VudCB7CgogICAgIyByZXR1cm4gbnVtYmVyIG9mIGlucHV0IGxpbmVzIHNlcGFyYXRpbmcgdHdvIHRva2VucwogICAgbXkgKCAkc2VsZiwgJEtiZWcsICRLZW5kICkgPSBAXzsKICAgIG15ICRyTEwgPSAkc2VsZi0+W19yTExfXTsKICAgIHJldHVybiAwIHVubGVzcyBkZWZpbmVkKCRLYmVnKTsKICAgIHJldHVybiAwIHVubGVzcyBkZWZpbmVkKCRLZW5kKTsKICAgIHJldHVybiAkckxMLT5bJEtlbmRdLT5bX0xJTkVfSU5ERVhfXSAtICRyTEwtPlskS2JlZ10tPltfTElORV9JTkRFWF9dICsgMTsKfQoKc3ViIHBhcmVudF9zZXFub19ieV9LIHsKCiAgICAjIFJldHVybiB0aGUgc2VxdWVuY2UgbnVtYmVyIG9mIHRoZSBwYXJlbnQgY29udGFpbmVyIG9mIHRva2VuIEssIGlmIGFueS4KCiAgICBteSAoICRzZWxmLCAkS0sgKSA9IEBfOwogICAgcmV0dXJuIHVubGVzcyBkZWZpbmVkKCRLSyk7CgogICAgIyBOb3RlOiBUaGlzIHJvdXRpbmUgaXMgcmVsYXRpdmVseSBzbG93LiBJIHRyaWVkIHJlcGxhY2luZyBpdCB3aXRoIGEgaGFzaAogICAgIyB3aGljaCBpcyBlYXNpbHkgY3JlYXRlZCBpbiBzdWIgcmVzcGFjZV90b2tlbnMuIEJ1dCB0aGUgdG90YWwgdGltZSB3aXRoIGEKICAgICMgaGFzaCB3YXMgZ3JlYXRlciBiZWNhdXNlIHRoaXMgcm91dGluZSBpcyBjYWxsZWQgb25jZSBwZXIgbGluZSB3aGVyZWFzIGEKICAgICMgaGFzaCBtdXN0IGJlIGNyZWF0ZWQgdG9rZW4tYnktdG9rZW4uCgogICAgbXkgJHJMTCAgID0gJHNlbGYtPltfckxMX107CiAgICBteSAkS05FWFQgPSAkS0s7CgogICAgIyBGb3IgZXhhbXBsZSwgY29uc2lkZXIgdGhlIGZvbGxvd2luZyB3aXRoIHNlcW5vPTUgb2YgdGhlICdbJyBhbmQgJ10nCiAgICAjIGJlaW5nIGNhbGxlZCB3aXRoIGluZGV4IEsgb2YgdGhlIGZpcnN0IHRva2VuIG9mIGVhY2ggbGluZToKCiAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVzdWx0CiAgICAjICAgIHB1c2ggQHRlc3RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgLQogICAgIyAgICAgIFsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIC0KICAgICMgICAgICAgIHN1YiB7IDk5IH0sICAgJ2RvIHsmeyVzfSBmb3IgMSwyfScsICAgIyA1CiAgICAjICAgICAgICAnKCZ7fSkoJnt9KScsIHVuZGVmLCAgICAgICAgICAgICAgICAgICMgNQogICAgIyAgICAgICAgWyAyLCAyLCAwIF0sICAwICAgICAgICAgICAgICAgICAgICAgICAjIDUKICAgICMgICAgICBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAtCgogICAgbXkgJHBhcmVudF9zZXFubzsKICAgIHdoaWxlICggZGVmaW5lZCgkS05FWFQpICkgewogICAgICAgIG15ICRLdCA9ICRLTkVYVDsKICAgICAgICAkS05FWFQgPSAkckxMLT5bJEtORVhUXS0+W19LTkVYVF9TRVFfSVRFTV9dOwogICAgICAgIG15ICRydG9rZW5fdmFycyAgID0gJHJMTC0+WyRLdF07CiAgICAgICAgbXkgJHR5cGUgICAgICAgICAgPSAkcnRva2VuX3ZhcnMtPltfVFlQRV9dOwogICAgICAgIG15ICR0eXBlX3NlcXVlbmNlID0gJHJ0b2tlbl92YXJzLT5bX1RZUEVfU0VRVUVOQ0VfXTsKCiAgICAgICAgIyBpZiBuZXh0IGNvbnRhaW5lciB0b2tlbiBpcyBjbG9zaW5nLCBpdCBpcyB0aGUgcGFyZW50IHNlcW5vCiAgICAgICAgaWYgKCAkaXNfY2xvc2luZ190eXBleyR0eXBlfSApIHsKICAgICAgICAgICAgaWYgKCAkS3QgPiAkS0sgKSB7CiAgICAgICAgICAgICAgICAkcGFyZW50X3NlcW5vID0gJHR5cGVfc2VxdWVuY2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkcGFyZW50X3NlcW5vID0gJHNlbGYtPltfcnBhcmVudF9vZl9zZXFub19dLT57JHR5cGVfc2VxdWVuY2V9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgfQoKICAgICAgICAjIGlmIG5leHQgY29udGFpbmVyIHRva2VuIGlzIG9wZW5pbmcsIHdlIHdhbnQgaXRzIHBhcmVudCBjb250YWluZXIKICAgICAgICBlbHNpZiAoICRpc19vcGVuaW5nX3R5cGV7JHR5cGV9ICkgewogICAgICAgICAgICAkcGFyZW50X3NlcW5vID0gJHNlbGYtPltfcnBhcmVudF9vZl9zZXFub19dLT57JHR5cGVfc2VxdWVuY2V9OwogICAgICAgICAgICBsYXN0OwogICAgICAgIH0KCiAgICAgICAgIyBub3QgYSBjb250YWluZXIgLSBtdXN0IGJlIHRlcm5hcnkgLSBrZWVwIGdvaW5nCiAgICB9CgogICAgcmV0dXJuICRwYXJlbnRfc2Vxbm87Cn0KCnN1YiBpc19saXN0X2J5X0sgewoKICAgICMgUmV0dXJuIHRydWUgaWYgdG9rZW4gSyBpcyBpbiBhIGxpc3QKICAgIG15ICggJHNlbGYsICRLSyApID0gQF87CgogICAgbXkgJHBhcmVudF9zZXFubyA9ICRzZWxmLT5wYXJlbnRfc2Vxbm9fYnlfSygkS0spOwogICAgcmV0dXJuIHVubGVzcyBkZWZpbmVkKCRwYXJlbnRfc2Vxbm8pOwogICAgcmV0dXJuICRzZWxmLT5bX3Jpc19saXN0X2J5X3NlcW5vX10tPnskcGFyZW50X3NlcW5vfTsKfQoKc3ViIGlzX2xpc3RfYnlfc2Vxbm8gewoKICAgICMgUmV0dXJuIHRydWUgaWYgdGhlIGltbWVkaWF0ZSBjb250ZW50cyBvZiBhIGNvbnRhaW5lciBhcHBlYXJzIHRvIGJlIGEKICAgICMgbGlzdC4KICAgIG15ICggJHNlbGYsICRzZXFubyApID0gQF87CiAgICByZXR1cm4gdW5sZXNzIGRlZmluZWQoJHNlcW5vKTsKICAgIHJldHVybiAkc2VsZi0+W19yaXNfbGlzdF9ieV9zZXFub19dLT57JHNlcW5vfTsKfQoKc3ViIHJlc3luY19saW5lc19hbmRfdG9rZW5zIHsKCiAgICBteSAkc2VsZiAgID0gc2hpZnQ7CiAgICBteSAkckxMICAgID0gJHNlbGYtPltfckxMX107CiAgICBteSAkS2xpbWl0ID0gJHNlbGYtPltfS2xpbWl0X107CiAgICBteSAkcmxpbmVzID0gJHNlbGYtPltfcmxpbmVzX107CiAgICBteSBAS3JhbmdlX2NvZGVfd2l0aG91dF9jb21tZW50czsKICAgIG15IEBLbGFzdF92YWxpZ25fY29kZTsKCiAgICAjIFJlLWNvbnN0cnVjdCB0aGUgYXJyYXlzIG9mIHRva2VucyBhc3NvY2lhdGVkIHdpdGggdGhlIG9yaWdpbmFsIGlucHV0IGxpbmVzCiAgICAjIHNpbmNlIHRoZXkgaGF2ZSBwcm9iYWJseSBjaGFuZ2VkIGR1ZSB0byBpbnNlcnRpbmcgYW5kIGRlbGV0aW5nIGJsYW5rcwogICAgIyBhbmQgYSBmZXcgb3RoZXIgdG9rZW5zLgoKICAgIG15ICRLbWF4ID0gLTE7CgogICAgIyBUaGlzIGlzIHRoZSBuZXh0IHRva2VuIGFuZCBpdHMgbGluZSBpbmRleDoKICAgIG15ICRLbmV4dCA9IDA7CiAgICBteSAkaW5leHQ7CiAgICBpZiAoIGRlZmluZWQoJHJMTCkgJiYgQHskckxMfSApIHsKICAgICAgICAkS21heCAgPSBAeyRyTEx9IC0gMTsKICAgICAgICAkaW5leHQgPSAkckxMLT5bJEtuZXh0XS0+W19MSU5FX0lOREVYX107CiAgICB9CgogICAgIyBSZW1lbWJlciB0aGUgbW9zdCByZWNlbnRseSBvdXRwdXQgdG9rZW4gaW5kZXgKICAgIG15ICRLbGFzdF9vdXQ7CgogICAgbXkgJGlsaW5lID0gLTE7CiAgICBmb3JlYWNoIG15ICRsaW5lX29mX3Rva2VucyAoIEB7JHJsaW5lc30gKSB7CiAgICAgICAgJGlsaW5lKys7CiAgICAgICAgbXkgJGxpbmVfdHlwZSA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3R5cGV9OwogICAgICAgIG15ICRDT0RFX3R5cGUgPSAkbGluZV9vZl90b2tlbnMtPntfY29kZV90eXBlfTsKICAgICAgICBpZiAoICRsaW5lX3R5cGUgZXEgJ0NPREUnICkgewoKICAgICAgICAgICAgbXkgQEtfYXJyYXk7CiAgICAgICAgICAgIG15ICRyS19yYW5nZTsKICAgICAgICAgICAgaWYgKCAkS25leHQgPD0gJEttYXggKSB7CiAgICAgICAgICAgICAgICAkaW5leHQgPSAkckxMLT5bJEtuZXh0XS0+W19MSU5FX0lOREVYX107CiAgICAgICAgICAgICAgICB3aGlsZSAoICRpbmV4dCA8PSAkaWxpbmUgKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAS19hcnJheSwgJEtuZXh0OwogICAgICAgICAgICAgICAgICAgICRLbmV4dCArPSAxOwogICAgICAgICAgICAgICAgICAgIGlmICggJEtuZXh0ID4gJEttYXggKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpbmV4dCA9IHVuZGVmOwogICAgICAgICAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkaW5leHQgPSAkckxMLT5bJEtuZXh0XS0+W19MSU5FX0lOREVYX107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgRGVsZXRlIGFueSB0ZXJtaW5hbCBibGFuayB0b2tlbgogICAgICAgICAgICBpZiAoQEtfYXJyYXkpIHsKICAgICAgICAgICAgICAgIGlmICggJHJMTC0+WyAkS19hcnJheVstMV0gXS0+W19UWVBFX10gZXEgJ2InICkgewogICAgICAgICAgICAgICAgICAgIHBvcCBAS19hcnJheTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBEZWZpbmUgdGhlIHJhbmdlIG9mIEsgaW5kZXhlcyBmb3IgdGhlIGxpbmU6CiAgICAgICAgICAgICMgJEtmaXJzdCA9IGluZGV4IG9mIGZpcnN0IHRva2VuIG9uIGxpbmUKICAgICAgICAgICAgIyAkS2xhc3Rfb3V0ID0gaW5kZXggb2YgbGFzdCB0b2tlbiBvbiBsaW5lCiAgICAgICAgICAgIG15ICggJEtmaXJzdCwgJEtsYXN0ICk7CiAgICAgICAgICAgIGlmIChAS19hcnJheSkgewogICAgICAgICAgICAgICAgJEtmaXJzdCAgICA9ICRLX2FycmF5WzBdOwogICAgICAgICAgICAgICAgJEtsYXN0ICAgICA9ICRLX2FycmF5Wy0xXTsKICAgICAgICAgICAgICAgICRLbGFzdF9vdXQgPSAkS2xhc3Q7CgogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCRLZmlyc3QpICkgewoKICAgICAgICAgICAgICAgICAgICAjIFNhdmUgcmFuZ2VzIG9mIG5vbi1jb21tZW50IGNvZGUuIFRoaXMgd2lsbCBiZSB1c2VkIGJ5CiAgICAgICAgICAgICAgICAgICAgIyBzdWIga2VlcF9vbGRfbGluZV9icmVha3MuCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkckxMLT5bJEtmaXJzdF0tPltfVFlQRV9dIG5lICcjJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAS3JhbmdlX2NvZGVfd2l0aG91dF9jb21tZW50cywgWyAkS2ZpcnN0LCAkS2xhc3QgXTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgT25seSBzYXZlIGVuZGluZyBLIGluZGV4ZXMgb2YgY29kZSB0eXBlcyB3aGljaCBhcmUgYmxhbmsKICAgICAgICAgICAgICAgICAgICAjIG9yICdWRVInLiAgVGhlc2Ugd2lsbCBiZSB1c2VkIGZvciBhIGNvbnZlcmdlbmNlIGNoZWNrLgogICAgICAgICAgICAgICAgICAgICMgU2VlIHJlbGF0ZWQgY29kZSBpbiBzdWIgJ3NlbmRfbGluZXNfdG9fdmVydGljYWxfYWxpZ25lcicuCiAgICAgICAgICAgICAgICAgICAgaWYgKCAgISRDT0RFX3R5cGUKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJENPREVfdHlwZSBlcSAnVkVSJyApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBLbGFzdF92YWxpZ25fY29kZSwgJEtsYXN0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBJdCBpcyBvbmx5IHNhZmUgdG8gdHJpbSB0aGUgYWN0dWFsIGxpbmUgdGV4dCBpZiB0aGUgaW5wdXQKICAgICAgICAgICAgIyBsaW5lIGhhZCBhIHRlcm1pbmFsIGJsYW5rIHRva2VuLiBPdGhlcndpc2UsIHdlIG1heSBiZQogICAgICAgICAgICAjIGluIGEgcXVvdGUuCiAgICAgICAgICAgIGlmICggJGxpbmVfb2ZfdG9rZW5zLT57X2VuZGVkX2luX2JsYW5rX3Rva2VufSApIHsKICAgICAgICAgICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3RleHR9ID1+IHMvXHMrJC8vOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19yS19yYW5nZX0gPSBbICRLZmlyc3QsICRLbGFzdCBdOwoKICAgICAgICAgICAgIyBEZWxldGluZyBzZW1pY29sb25zIGNhbiBjcmVhdGUgbmV3IGVtcHR5IGNvZGUgbGluZXMKICAgICAgICAgICAgIyB3aGljaCBzaG91bGQgYmUgbWFya2VkIGFzIGJsYW5rCiAgICAgICAgICAgIGlmICggIWRlZmluZWQoJEtmaXJzdCkgKSB7CiAgICAgICAgICAgICAgICBteSAkY29kZV90eXBlID0gJGxpbmVfb2ZfdG9rZW5zLT57X2NvZGVfdHlwZX07CiAgICAgICAgICAgICAgICBpZiAoICEkY29kZV90eXBlICkgewogICAgICAgICAgICAgICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19jb2RlX3R5cGV9ID0gJ0JMJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIFRoZXJlIHNob3VsZG4ndCBiZSBhbnkgbm9kZXMgYmV5b25kIHRoZSBsYXN0IG9uZS4gIFRoaXMgcm91dGluZSBpcwogICAgIyByZWxpbmtpbmcgbGluZXMgYW5kIHRva2VucyBhZnRlciB0aGUgdG9rZW5zIGhhdmUgYmVlbiByZXNwYWNlZC4gIEEgZmF1bHQKICAgICMgaGVyZSBpbmRpY2F0ZXMgc29tZSBraW5kIG9mIGJ1ZyBoYXMgYmVlbiBpbnRyb2R1Y2VkIGludG8gdGhlIGFib3ZlIGxvb3BzLgogICAgaWYgKCBkZWZpbmVkKCRpbmV4dCkgKSB7CgogICAgICAgIEZhdWx0KCJ1bmV4cGVjdGVkIHRva2VucyBhdCBlbmQgb2YgZmlsZSB3aGVuIHJlY29uc3RydWN0aW5nIGxpbmVzIik7CiAgICB9CiAgICAkc2VsZi0+W19yS3JhbmdlX2NvZGVfd2l0aG91dF9jb21tZW50c19dID0gXEBLcmFuZ2VfY29kZV93aXRob3V0X2NvbW1lbnRzOwoKICAgICMgU2V0dXAgdGhlIGNvbnZlcmdlbmNlIHRlc3QgaW4gdGhlIEZpbGVXcml0ZXIgYmFzZWQgb24gbGluZS1lbmRpbmcgaW5kZXhlcwogICAgbXkgJGZpbGVfd3JpdGVyX29iamVjdCA9ICRzZWxmLT5bX2ZpbGVfd3JpdGVyX29iamVjdF9dOwogICAgJGZpbGVfd3JpdGVyX29iamVjdC0+c2V0dXBfY29udmVyZ2VuY2VfdGVzdCggXEBLbGFzdF92YWxpZ25fY29kZSApOwoKICAgIHJldHVybjsKfQoKc3ViIGtlZXBfb2xkX2xpbmVfYnJlYWtzIHsKCiAgICAjIENhbGxlZCBvbmNlIHBlciBmaWxlIHRvIGZpbmQgYW5kIG1hcmsgYW55IG9sZCBsaW5lIGJyZWFrcyB3aGljaAogICAgIyBzaG91bGQgYmUga2VwdC4gIFdlIHdpbGwgYmUgdHJhbnNsYXRpbmcgdGhlIGlucHV0IGhhc2hlcyBpbnRvCiAgICAjIHRva2VuIGluZGV4ZXMuCiAgICBteSAoJHNlbGYpID0gQF87CgogICAgcmV0dXJuIHVubGVzcyAoICVrZWVwX2JyZWFrX2JlZm9yZV90eXBlIHx8ICVrZWVwX2JyZWFrX2FmdGVyX3R5cGUgKTsKCiAgICBteSAkckxMID0gJHNlbGYtPltfckxMX107CgogICAgbXkgJHJLcmFuZ2VfY29kZV93aXRob3V0X2NvbW1lbnRzID0KICAgICAgJHNlbGYtPltfcktyYW5nZV9jb2RlX3dpdGhvdXRfY29tbWVudHNfXTsKICAgIG15ICRyYnJlYWtfYmVmb3JlX0tmaXJzdCA9ICRzZWxmLT5bX3JicmVha19iZWZvcmVfS2ZpcnN0X107CiAgICBteSAkcmJyZWFrX2FmdGVyX0tsYXN0ICAgPSAkc2VsZi0+W19yYnJlYWtfYWZ0ZXJfS2xhc3RfXTsKCiAgICBmb3JlYWNoIG15ICRpdGVtICggQHskcktyYW5nZV9jb2RlX3dpdGhvdXRfY29tbWVudHN9ICkgewogICAgICAgIG15ICggJEtmaXJzdCwgJEtsYXN0ICkgPSBAeyRpdGVtfTsKCiAgICAgICAgbXkgJHR5cGVfZmlyc3QgPSAkckxMLT5bJEtmaXJzdF0tPltfVFlQRV9dOwogICAgICAgIGlmICggJGtlZXBfYnJlYWtfYmVmb3JlX3R5cGV7JHR5cGVfZmlyc3R9ICkgewogICAgICAgICAgICAkcmJyZWFrX2JlZm9yZV9LZmlyc3QtPnskS2ZpcnN0fSA9IDE7CiAgICAgICAgfQoKICAgICAgICBteSAkdHlwZV9sYXN0ID0gJHJMTC0+WyRLbGFzdF0tPltfVFlQRV9dOwogICAgICAgIGlmICggJGtlZXBfYnJlYWtfYWZ0ZXJfdHlwZXskdHlwZV9sYXN0fSApIHsKICAgICAgICAgICAgJHJicmVha19hZnRlcl9LbGFzdC0+eyRLbGFzdH0gPSAxOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybjsKfQoKc3ViIHdlbGRfY29udGFpbmVycyB7CgogICAgIyBDYWxsZWQgb25jZSBwZXIgZmlsZSB0byBkbyBhbnkgd2VsZGluZyBvcGVyYXRpb25zIHJlcXVlc3RlZCBieSAtLXdlbGQqCiAgICAjIGZsYWdzLgogICAgbXkgKCRzZWxmKSA9IEBfOwoKICAgIHJldHVybiBpZiAoICRyT3B0cy0+eydpbmRlbnQtb25seSd9ICk7CiAgICByZXR1cm4gdW5sZXNzICgkck9wdHNfYWRkX25ld2xpbmVzKTsKCiAgICBpZiAoICRyT3B0cy0+eyd3ZWxkLW5lc3RlZC1jb250YWluZXJzJ30gKSB7CgogICAgICAgICMgaWYgY2FsbGVkLCB3ZWxkX25lc3RlZF9jb250YWluZXJzIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBvdGhlciB3ZWxkCiAgICAgICAgIyBvcGVyYXRpb25zLiAgVGhpcyBpcyBiZWNhdXNlIHdlbGRfbmVzdGVkX2NvbnRhaW5lcnMgY291bGQgb3ZlcndyaXRlCiAgICAgICAgIyBoYXNoIHZhbHVlcyB3cml0dGVuIGJ5IHdlbGRfY3VkZGxlZF9ibG9ja3MgYW5kIHdlbGRfbmVzdGVkX3F1b3Rlcy4KICAgICAgICAkc2VsZi0+d2VsZF9uZXN0ZWRfY29udGFpbmVycygpOwoKICAgICAgICAkc2VsZi0+d2VsZF9uZXN0ZWRfcXVvdGVzKCk7CiAgICB9CgogICAgIyBOb3RlIHRoYXQgd2VsZF9uZXN0ZWRfY29udGFpbmVycygpIGNoYW5nZXMgdGhlIF9MRVZFTF8gdmFsdWVzLCBzbwogICAgIyB3ZWxkX2N1ZGRsZWRfYmxvY2tzIG11c3QgdXNlIHRoZSBfVFJVRV9MRVZFTF8gdmFsdWVzIGluc3RlYWQuCgogICAgIyBIZXJlIGlzIGEgZ29vZCB0ZXN0IGNhc2UgdG8gYmUgc3VyZSB0aGF0IGJvdGggY3VkZGxpbmcgYW5kIHdlbGRpbmcKICAgICMgYXJlIHdvcmtpbmcgYW5kIG5vdCBpbnRlcmZlcmluZyB3aXRoIGVhY2ggb3RoZXI6IDw8c25pcHBldHMvY2Vfd24xLmluPj4KCiAgICAjICAgcGVybHRpZHkgLXduIC1jZQoKICAgIyBpZiAoJEJPTERfTUFUSCkgeyAoCiAgICMgICAgICRsYWJlbHMsICRjb21tZW50LAogICAjICAgICBqb2luKCAnJywgJzxCPicsICZtYWtlX21hdGgoICRtb2RlLCAnJywgJycsICRfICksICc8L0I+JyApCiAgICMgKSB9IGVsc2UgeyAoCiAgICMgICAgICZwcm9jZXNzX21hdGhfaW5fbGF0ZXgoICRtb2RlLCAkbWF0aF9zdHlsZSwgJHNsZXZlbCwgIlxcbWJveHskdGV4dH0iICksCiAgICMgICAgICRhZnRlcgogICAjICkgfQoKICAgICRzZWxmLT53ZWxkX2N1ZGRsZWRfYmxvY2tzKCk7CgogICAgIyBBZnRlciBhbGwgd2VsZGluZyBpcyBjb21wbGV0ZSwgd2UgbWFrZSBhIG5vdGUgb2Ygd2hpY2ggc2VxZW5jZSBudW1iZXJzCiAgICAjIGhhdmUgd2VsZHMgZm9yIHF1aWNrIGNoZWNrcy4KICAgIG15IEBxOwogICAgbXkgJHJpc193ZWxkZWRfc2Vxbm8gPSAkc2VsZi0+W19yaXNfd2VsZGVkX3NlcW5vX107CiAgICBAcSA9IGtleXMgJXsgJHNlbGYtPltfcndlbGRfbGVuX2xlZnRfY2xvc2luZ19dIH07CiAgICBAeyRyaXNfd2VsZGVkX3NlcW5vfXtAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwogICAgQHEgPSBrZXlzICV7ICRzZWxmLT5bX3J3ZWxkX2xlbl9yaWdodF9jbG9zaW5nX10gfTsKICAgIEB7JHJpc193ZWxkZWRfc2Vxbm99e0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CiAgICBAcSA9IGtleXMgJXsgJHNlbGYtPltfcndlbGRfbGVuX2xlZnRfb3BlbmluZ19dIH07CiAgICBAeyRyaXNfd2VsZGVkX3NlcW5vfXtAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwogICAgQHEgPSBrZXlzICV7ICRzZWxmLT5bX3J3ZWxkX2xlbl9yaWdodF9vcGVuaW5nX10gfTsKICAgIEB7JHJpc193ZWxkZWRfc2Vxbm99e0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgIyB0b3RhbCBudW1iZXIgb2Ygc2VxdWVuY2VkIGl0ZW1zIGludm9sdmVkIGluIGEgd2VsZCwgZm9yCiAgICAjIHF1aWNrIGNoZWNrcyBmb3IgYXZvaWRpbmcgY2FsbHMgdG8gd2VsZF9sZW5feHh4CiAgICAkdG90YWxfd2VsZF9jb3VudCA9IDAgKyBrZXlzICV7JHJpc193ZWxkZWRfc2Vxbm99OwoKICAgIHJldHVybjsKfQoKc3ViIGN1bXVsYXRpdmVfbGVuZ3RoX2JlZm9yZV9LIHsKICAgIG15ICggJHNlbGYsICRLSyApID0gQF87CiAgICBteSAkckxMID0gJHNlbGYtPltfckxMX107CiAgICByZXR1cm4gKCAkS0sgPD0gMCApID8gMCA6ICRyTEwtPlsgJEtLIC0gMSBdLT5bX0NVTVVMQVRJVkVfTEVOR1RIX107Cn0KCnN1YiBjdW11bGF0aXZlX2xlbmd0aF9hZnRlcl9LIHsKCiAgICAjIE5PVEU6IFRoaXMgcm91dGluZSBub3QgY3VycmVudGx5IGNhbGxlZDsgY291bGQgYmUgZGVsZXRlZAogICAgbXkgKCAkc2VsZiwgJEtLICkgPSBAXzsKICAgIG15ICRyTEwgPSAkc2VsZi0+W19yTExfXTsKICAgIHJldHVybiAkckxMLT5bJEtLXS0+W19DVU1VTEFUSVZFX0xFTkdUSF9dOwp9CgpzdWIgd2VsZF9jdWRkbGVkX2Jsb2NrcyB7CiAgICBteSAoJHNlbGYpID0gQF87CgogICAgIyBDYWxsZWQgb25jZSBwZXIgZmlsZSB0byBoYW5kbGUgY3VkZGxlZCBmb3JtYXR0aW5nCgogICAgbXkgJHJ3ZWxkX2xlbl9yaWdodF9jbG9zaW5nID0gJHNlbGYtPltfcndlbGRfbGVuX3JpZ2h0X2Nsb3NpbmdfXTsKCiAgICAjIFRoaXMgcm91dGluZSBpbXBsZW1lbnRzIHRoZSAtY2IgZmxhZyBieSBmaW5kaW5nIHRoZSBhcHByb3ByaWF0ZQogICAgIyBjbG9zaW5nIGFuZCBvcGVuaW5nIGJsb2NrIGJyYWNlcyBhbmQgd2VsZGluZyB0aGVtIHRvZ2V0aGVyLgogICAgcmV0dXJuIHVubGVzcyAoICV7JHJjdWRkbGVkX2Jsb2NrX3R5cGVzfSApOwoKICAgIG15ICRyTEwgPSAkc2VsZi0+W19yTExfXTsKICAgIHJldHVybiB1bmxlc3MgKCBkZWZpbmVkKCRyTEwpICYmIEB7JHJMTH0gKTsKICAgIG15ICRyYnJlYWtfY29udGFpbmVyID0gJHNlbGYtPltfcmJyZWFrX2NvbnRhaW5lcl9dOwoKICAgIG15ICRLX29wZW5pbmdfY29udGFpbmVyID0gJHNlbGYtPltfS19vcGVuaW5nX2NvbnRhaW5lcl9dOwogICAgbXkgJEtfY2xvc2luZ19jb250YWluZXIgPSAkc2VsZi0+W19LX2Nsb3NpbmdfY29udGFpbmVyX107CgogICAgbXkgJGxlbmd0aF90b19vcGVuaW5nX3NlcW5vID0gc3ViIHsKICAgICAgICBteSAoJHNlcW5vKSA9IEBfOwogICAgICAgIG15ICRLSyAgICAgID0gJEtfb3BlbmluZ19jb250YWluZXItPnskc2Vxbm99OwogICAgICAgIG15ICRsZW50b3QgID0gJEtLIDw9IDAgPyAwIDogJHJMTC0+WyAkS0sgLSAxIF0tPltfQ1VNVUxBVElWRV9MRU5HVEhfXTsKICAgICAgICByZXR1cm4gJGxlbnRvdDsKICAgIH07CiAgICBteSAkbGVuZ3RoX3RvX2Nsb3Npbmdfc2Vxbm8gPSBzdWIgewogICAgICAgIG15ICgkc2Vxbm8pID0gQF87CiAgICAgICAgbXkgJEtLICAgICAgPSAkS19jbG9zaW5nX2NvbnRhaW5lci0+eyRzZXFub307CiAgICAgICAgbXkgJGxlbnRvdCAgPSAkS0sgPD0gMCA/IDAgOiAkckxMLT5bICRLSyAtIDEgXS0+W19DVU1VTEFUSVZFX0xFTkdUSF9dOwogICAgICAgIHJldHVybiAkbGVudG90OwogICAgfTsKCiAgICBteSAkaXNfYnJva2VuX2Jsb2NrID0gc3ViIHsKCiAgICAgICAgIyBhIGJsb2NrIGlzIGJyb2tlbiBpZiB0aGUgaW5wdXQgbGluZSBudW1iZXJzIG9mIHRoZSBicmFjZXMgZGlmZmVyCiAgICAgICAgIyB3ZSBjYW4gb25seSBjdWRkbGUgYmV0d2VlbiBicm9rZW4gYmxvY2tzCiAgICAgICAgbXkgKCRzZXFubykgPSBAXzsKICAgICAgICBteSAkS19vcGVuaW5nID0gJEtfb3BlbmluZ19jb250YWluZXItPnskc2Vxbm99OwogICAgICAgIHJldHVybiB1bmxlc3MgKCBkZWZpbmVkKCRLX29wZW5pbmcpICk7CiAgICAgICAgbXkgJEtfY2xvc2luZyA9ICRLX2Nsb3NpbmdfY29udGFpbmVyLT57JHNlcW5vfTsKICAgICAgICByZXR1cm4gdW5sZXNzICggZGVmaW5lZCgkS19jbG9zaW5nKSApOwogICAgICAgIHJldHVybiAkcmJyZWFrX2NvbnRhaW5lci0+eyRzZXFub30KICAgICAgICAgIHx8ICRyTEwtPlskS19jbG9zaW5nXS0+W19MSU5FX0lOREVYX10gIT0KICAgICAgICAgICRyTEwtPlskS19vcGVuaW5nXS0+W19MSU5FX0lOREVYX107CiAgICB9OwoKICAgICMgQSBzdGFjayB0byByZW1lbWJlciBvcGVuIGNoYWlucyBhdCBhbGwgbGV2ZWxzOiBUaGlzIGlzIGEgaGFzaCByYXRoZXIgdGhhbgogICAgIyBhbiBhcnJheSBmb3Igc2FmZXR5IGJlY2F1c2UgbmVnYXRpdmUgbGV2ZWxzIGNhbiBvY2N1ciBpbiBmaWxlcyB3aXRoCiAgICAjIGVycm9ycy4gIFRoaXMgYWxsb3dzIHVzIHRvIGtlZXAgcHJvY2Vzc2luZyB3aXRoIG5lZ2F0aXZlIGxldmVscy4KICAgICMgJGluX2NoYWlueyRsZXZlbH0gPSBbJGNoYWluX3R5cGUsICR0eXBlX3NlcXVlbmNlXTsKICAgIG15ICVpbl9jaGFpbjsKICAgIG15ICRDQk8gPSAkck9wdHMtPnsnY3VkZGxlZC1icmVhay1vcHRpb24nfTsKCiAgICAjIGxvb3Agb3ZlciBzdHJ1Y3R1cmUgaXRlbXMgdG8gZmluZCBjdWRkbGVkIHBhaXJzCiAgICBteSAkbGV2ZWwgPSAwOwogICAgbXkgJEtORVhUID0gJHNlbGYtPltfS19maXJzdF9zZXFfaXRlbV9dOwogICAgd2hpbGUgKCBkZWZpbmVkKCRLTkVYVCkgKSB7CiAgICAgICAgbXkgJEtLID0gJEtORVhUOwogICAgICAgICRLTkVYVCA9ICRyTEwtPlskS05FWFRdLT5bX0tORVhUX1NFUV9JVEVNX107CiAgICAgICAgbXkgJHJ0b2tlbl92YXJzICAgPSAkckxMLT5bJEtLXTsKICAgICAgICBteSAkdHlwZV9zZXF1ZW5jZSA9ICRydG9rZW5fdmFycy0+W19UWVBFX1NFUVVFTkNFX107CiAgICAgICAgaWYgKCAhJHR5cGVfc2VxdWVuY2UgKSB7CiAgICAgICAgICAgIG5leHQgaWYgKCAkS0sgPT0gMCApOyAgICAjIGZpcnN0IHRva2VuIGluIGZpbGUgbWF5IG5vdCBiZSBjb250YWluZXIKCiAgICAgICAgICAgICMgQSBmYXVsdCBoZXJlIGltcGxpZXMgdGhhdCBhbiBlcnJvciB3YXMgbWFkZSBpbiB0aGUgbGl0dGxlIGxvb3AgYXQKICAgICAgICAgICAgIyB0aGUgYm90dG9tIG9mIHN1YiAncmVzcGFjZV90b2tlbnMnIHdoaWNoIHNldCB0aGUgdmFsdWVzIG9mCiAgICAgICAgICAgICMgX0tORVhUX1NFUV9JVEVNXy4gIE9yIGFuIGVycm9yIGhhcyBiZWVuIGludHJvZHVjZWQgaW4gdGhlCiAgICAgICAgICAgICMgbG9vcCBjb250cm9sIGxpbmVzIGFib3ZlLgogICAgICAgICAgICBGYXVsdCgic2VxdWVuY2UgPSAkdHlwZV9zZXF1ZW5jZSBub3QgZGVmaW5lZCBhdCBLPSRLSyIpOwogICAgICAgIH0KCiAgICAgICAgIyBXZSB1c2UgdGhlIG9yaWdpbmFsIGxldmVscyBiZWNhdXNlIHRoZXkgZ2V0IGNoYW5nZWQgYnkgc3ViCiAgICAgICAgIyAnd2VsZF9uZXN0ZWRfY29udGFpbmVycycuIFNvIGlmIHRoaXMgd2VyZSB0byBiZSBjYWxsZWQgYmVmb3JlIHRoYXQKICAgICAgICAjIHJvdXRpbmUsIHRoZSBsZXZlbHMgd291bGQgYmUgd3JvbmcgYW5kIHRoaW5ncyB3b3VsZCBnbyBiYWQuCiAgICAgICAgbXkgJGxhc3RfbGV2ZWwgPSAkbGV2ZWw7CiAgICAgICAgJGxldmVsID0gJHJ0b2tlbl92YXJzLT5bX0xFVkVMX1RSVUVfXTsKCiAgICAgICAgaWYgICAgKCAkbGV2ZWwgPCAkbGFzdF9sZXZlbCApIHsgJGluX2NoYWlueyRsYXN0X2xldmVsfSA9IHVuZGVmIH0KICAgICAgICBlbHNpZiAoICRsZXZlbCA+ICRsYXN0X2xldmVsICkgeyAkaW5fY2hhaW57JGxldmVsfSAgICAgID0gdW5kZWYgfQoKICAgICAgICAjIFdlIGFyZSBvbmx5IGxvb2tpbmcgYXQgY29kZSBibG9ja3MKICAgICAgICBteSAkdG9rZW4gPSAkcnRva2VuX3ZhcnMtPltfVE9LRU5fXTsKICAgICAgICBteSAkdHlwZSAgPSAkcnRva2VuX3ZhcnMtPltfVFlQRV9dOwogICAgICAgIG5leHQgdW5sZXNzICggJHR5cGUgZXEgJHRva2VuICk7CgogICAgICAgIGlmICggJHRva2VuIGVxICd7JyApIHsKCiAgICAgICAgICAgIG15ICRibG9ja190eXBlID0gJHJ0b2tlbl92YXJzLT5bX0JMT0NLX1RZUEVfXTsKICAgICAgICAgICAgaWYgKCAhJGJsb2NrX3R5cGUgKSB7CgogICAgICAgICAgICAgICAgIyBwYXRjaCBmb3IgdW5yZWNvZ25pemVkIGJsb2NrIHR5cGVzIHdoaWNoIG1heSBub3QgYmUgbGFiZWxlZAogICAgICAgICAgICAgICAgbXkgJEtwID0gJHNlbGYtPktfcHJldmlvdXNfbm9uYmxhbmsoJEtLKTsKICAgICAgICAgICAgICAgIHdoaWxlICggJEtwICYmICRyTEwtPlskS3BdLT5bX1RZUEVfXSBlcSAnIycgKSB7CiAgICAgICAgICAgICAgICAgICAgJEtwID0gJHNlbGYtPktfcHJldmlvdXNfbm9uYmxhbmsoJEtwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzICRLcDsKICAgICAgICAgICAgICAgICRibG9ja190eXBlID0gJHJMTC0+WyRLcF0tPltfVE9LRU5fXTsKCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkaW5fY2hhaW57JGxldmVsfSApIHsKCiAgICAgICAgICAgICAgICAjIHdlIGFyZSBpbiBhIGNoYWluIGFuZCBhcmUgYXQgYW4gb3BlbmluZyBibG9jayBicmFjZS4KICAgICAgICAgICAgICAgICMgU2VlIGlmIHdlIGFyZSB3ZWxkaW5nIHRoaXMgb3BlbmluZyBicmFjZSB3aXRoIHRoZSBwcmV2aW91cwogICAgICAgICAgICAgICAgIyBibG9jayBicmFjZS4gIEdldCB0aGVpciBpZGVudGlmaWNhdGlvbiBudW1iZXJzOgogICAgICAgICAgICAgICAgbXkgJGNsb3Npbmdfc2Vxbm8gPSAkaW5fY2hhaW57JGxldmVsfS0+WzFdOwogICAgICAgICAgICAgICAgbXkgJG9wZW5pbmdfc2Vxbm8gPSAkdHlwZV9zZXF1ZW5jZTsKCiAgICAgICAgICAgICAgICAjIFRoZSBwcmVjZWRpbmcgYmxvY2sgbXVzdCBiZSBvbiBtdWx0aXBsZSBsaW5lcyBzbyB0aGF0IGl0cwogICAgICAgICAgICAgICAgIyBjbG9zaW5nIGJyYWNlIHdpbGwgc3RhcnQgYSBuZXcgbGluZS4KICAgICAgICAgICAgICAgIGlmICggISRpc19icm9rZW5fYmxvY2stPigkY2xvc2luZ19zZXFubykgKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCAkQ0JPID09IDIgKTsKICAgICAgICAgICAgICAgICAgICAkcmJyZWFrX2NvbnRhaW5lci0+eyRjbG9zaW5nX3NlcW5vfSA9IDE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB3ZSB3aWxsIGxldCB0aGUgdHJhaWxpbmcgYmxvY2sgYmUgZWl0aGVyIGJyb2tlbiBvciBpbnRhY3QKICAgICAgICAgICAgICAgICMjICYmICRpc19icm9rZW5fYmxvY2stPigkb3BlbmluZ19zZXFubyk7CgogICAgICAgICAgICAgICAgIyBXZSBjYW4gd2VsZCB0aGUgY2xvc2luZyBicmFjZSB0byBpdHMgZm9sbG93aW5nIHdvcmQgLi4KICAgICAgICAgICAgICAgIG15ICRLbyA9ICRLX2Nsb3NpbmdfY29udGFpbmVyLT57JGNsb3Npbmdfc2Vxbm99OwogICAgICAgICAgICAgICAgbXkgJEtvbjsKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCgkS28pICkgewogICAgICAgICAgICAgICAgICAgICRLb24gPSAkc2VsZi0+S19uZXh0X25vbmJsYW5rKCRLbyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyAuLnVubGVzcyBpdCBpcyBhIGNvbW1lbnQKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCgkS29uKSAmJiAkckxMLT5bJEtvbl0tPltfVFlQRV9dIG5lICcjJyApIHsKICAgICAgICAgICAgICAgICAgICBteSAkZGxlbiA9CiAgICAgICAgICAgICAgICAgICAgICAkckxMLT5bJEtvbl0tPltfQ1VNVUxBVElWRV9MRU5HVEhfXSAtCiAgICAgICAgICAgICAgICAgICAgICAkckxMLT5bICRLbyAtIDEgXS0+W19DVU1VTEFUSVZFX0xFTkdUSF9dOwogICAgICAgICAgICAgICAgICAgICRyd2VsZF9sZW5fcmlnaHRfY2xvc2luZy0+eyRjbG9zaW5nX3NlcW5vfSA9ICRkbGVuOwoKICAgICAgICAgICAgICAgICAgICAjIFNldCBmbGFnIHRoYXQgd2Ugd2FudCB0byBicmVhayB0aGUgbmV4dCBjb250YWluZXIKICAgICAgICAgICAgICAgICAgICAjIHNvIHRoYXQgdGhlIGN1ZGRsZWQgbGluZSBpcyBiYWxhbmNlZC4KICAgICAgICAgICAgICAgICAgICAkcmJyZWFrX2NvbnRhaW5lci0+eyRvcGVuaW5nX3NlcW5vfSA9IDEKICAgICAgICAgICAgICAgICAgICAgIGlmICgkQ0JPKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBXZSBhcmUgbm90IGluIGEgY2hhaW4uIFN0YXJ0IGEgbmV3IGNoYWluIGlmIHdlIHNlZSB0aGUKICAgICAgICAgICAgICAgICMgc3RhcnRpbmcgYmxvY2sgdHlwZS4KICAgICAgICAgICAgICAgIGlmICggJHJjdWRkbGVkX2Jsb2NrX3R5cGVzLT57JGJsb2NrX3R5cGV9ICkgewogICAgICAgICAgICAgICAgICAgICRpbl9jaGFpbnskbGV2ZWx9ID0gWyAkYmxvY2tfdHlwZSwgJHR5cGVfc2VxdWVuY2UgXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRibG9ja190eXBlID0gJyonOwogICAgICAgICAgICAgICAgICAgICRpbl9jaGFpbnskbGV2ZWx9ID0gWyAkYmxvY2tfdHlwZSwgJHR5cGVfc2VxdWVuY2UgXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICR0b2tlbiBlcSAnfScgKSB7CiAgICAgICAgICAgIGlmICggJGluX2NoYWlueyRsZXZlbH0gKSB7CgogICAgICAgICAgICAgICAgIyBXZSBhcmUgaW4gYSBjaGFpbiBhdCBhIGNsb3NpbmcgYnJhY2UuICBTZWUgaWYgdGhpcyBjaGFpbgogICAgICAgICAgICAgICAgIyBjb250aW51ZXMuLgogICAgICAgICAgICAgICAgbXkgJEtubiA9ICRzZWxmLT5LX25leHRfY29kZSgkS0spOwogICAgICAgICAgICAgICAgbmV4dCB1bmxlc3MgJEtubjsKCiAgICAgICAgICAgICAgICBteSAkY2hhaW5fdHlwZSAgICAgICAgICA9ICRpbl9jaGFpbnskbGV2ZWx9LT5bMF07CiAgICAgICAgICAgICAgICBteSAkbmV4dF9ub25ibGFua190b2tlbiA9ICRyTEwtPlskS25uXS0+W19UT0tFTl9dOwogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRyY3VkZGxlZF9ibG9ja190eXBlcy0+eyRjaGFpbl90eXBlfS0+eyRuZXh0X25vbmJsYW5rX3Rva2VufQogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICMgTm90ZSB0aGF0IHdlIGRvIG5vdCB3ZWxkIHlldCBiZWNhdXNlIHdlIG11c3Qgd2FpdCB1bnRpbAogICAgICAgICAgICAgICAgICAgICMgd2Ugd2UgYXJlIHN1cmUgdGhhdCBhbiBvcGVuaW5nIGJyYWNlIGZvciB0aGlzIGZvbGxvd3MuCiAgICAgICAgICAgICAgICAgICAgJGluX2NoYWlueyRsZXZlbH0tPlsxXSA9ICR0eXBlX3NlcXVlbmNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7ICRpbl9jaGFpbnskbGV2ZWx9ID0gdW5kZWYgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgZmluZF9uZXN0ZWRfcGFpcnMgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKCiAgICAjIFRoaXMgcm91dGluZSBpcyBjYWxsZWQgb25jZSBwZXIgZmlsZSB0byBkbyBwcmVsaW1pbmFyeSB3b3JrIG5lZWRlZCBmb3IKICAgICMgdGhlIC0td2VsZC1uZXN0ZWQgb3B0aW9uLiAgVGhpcyBpbmZvcm1hdGlvbiBpcyBhbHNvIG5lZWRlZCBmb3IgYWRkaW5nCiAgICAjIHNlbWljb2xvbnMuCgogICAgbXkgJHJMTCA9ICRzZWxmLT5bX3JMTF9dOwogICAgcmV0dXJuIHVubGVzcyAoIGRlZmluZWQoJHJMTCkgJiYgQHskckxMfSApOwogICAgbXkgJE51bSA9IEB7JHJMTH07CgogICAgbXkgJEtfb3BlbmluZ19jb250YWluZXIgPSAkc2VsZi0+W19LX29wZW5pbmdfY29udGFpbmVyX107CiAgICBteSAkS19jbG9zaW5nX2NvbnRhaW5lciA9ICRzZWxmLT5bX0tfY2xvc2luZ19jb250YWluZXJfXTsKCiAgICAjIFdlIGRlZmluZSBhbiBhcnJheSBvZiBwYWlycyBvZiBuZXN0ZWQgY29udGFpbmVycwogICAgbXkgQG5lc3RlZF9wYWlyczsKCiAgICAjIE5hbWVzIG9mIGNhbGxpbmcgcm91dGluZXMgY2FuIGVpdGhlciBiZSBtYXJrZWQgYXMgJ2knIG9yICd3JywKICAgICMgYW5kIHRoZXkgbWF5IGludm9rZSBhIHN1YiBjYWxsIHdpdGggYW4gJy0+Jy4gV2Ugd2lsbCBjb25zaWRlcgogICAgIyBhbnkgY29uc2VjdXRpdmUgc3RyaW5nIG9mIHN1Y2ggdHlwZXMgYXMgYSBzaW5nbGUgdW5pdCB3aGVuIG1ha2luZwogICAgIyB3ZWxkIGRlY2lzaW9ucy4gIFdlIGFsc28gYWxsb3cgYSBsZWFkaW5nICEKICAgIG15ICRpc19uYW1lX3R5cGUgPSB7CiAgICAgICAgJ2knICA9PiAxLAogICAgICAgICd3JyAgPT4gMSwKICAgICAgICAnVScgID0+IDEsCiAgICAgICAgJy0+JyA9PiAxLAogICAgICAgICchJyAgPT4gMSwKICAgIH07CgogICAgIyBMb29wIG92ZXIgYWxsIGNsb3NpbmcgY29udGFpbmVyIHRva2VucwogICAgZm9yZWFjaCBteSAkaW5uZXJfc2Vxbm8gKCBrZXlzICV7JEtfY2xvc2luZ19jb250YWluZXJ9ICkgewogICAgICAgIG15ICRLX2lubmVyX2Nsb3NpbmcgPSAkS19jbG9zaW5nX2NvbnRhaW5lci0+eyRpbm5lcl9zZXFub307CgogICAgICAgICMgU2VlIGlmIGl0IGlzIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IGFub3RoZXIsIG91dGVyIGNsb3NpbmcgdG9rZW4KICAgICAgICBteSAkS19vdXRlcl9jbG9zaW5nID0gJEtfaW5uZXJfY2xvc2luZyArIDE7CiAgICAgICAgJEtfb3V0ZXJfY2xvc2luZyArPSAxCiAgICAgICAgICBpZiAoICRLX291dGVyX2Nsb3NpbmcgPCAkTnVtCiAgICAgICAgICAgICYmICRyTEwtPlskS19vdXRlcl9jbG9zaW5nXS0+W19UWVBFX10gZXEgJ2InICk7CgogICAgICAgIG5leHQgdW5sZXNzICggJEtfb3V0ZXJfY2xvc2luZyA8ICROdW0gKTsKICAgICAgICBteSAkb3V0ZXJfc2Vxbm8gPSAkckxMLT5bJEtfb3V0ZXJfY2xvc2luZ10tPltfVFlQRV9TRVFVRU5DRV9dOwogICAgICAgIG5leHQgdW5sZXNzICgkb3V0ZXJfc2Vxbm8pOwogICAgICAgIG15ICR0b2tlbl9vdXRlcl9jbG9zaW5nID0gJHJMTC0+WyRLX291dGVyX2Nsb3NpbmddLT5bX1RPS0VOX107CiAgICAgICAgbmV4dCB1bmxlc3MgKCAkaXNfY2xvc2luZ190b2tlbnskdG9rZW5fb3V0ZXJfY2xvc2luZ30gKTsKCiAgICAgICAgIyBOb3cgd2UgaGF2ZSB0byBjaGVjayB0aGUgb3BlbmluZyB0b2tlbnMuCiAgICAgICAgbXkgJEtfb3V0ZXJfb3BlbmluZyA9ICRLX29wZW5pbmdfY29udGFpbmVyLT57JG91dGVyX3NlcW5vfTsKICAgICAgICBteSAkS19pbm5lcl9vcGVuaW5nID0gJEtfb3BlbmluZ19jb250YWluZXItPnskaW5uZXJfc2Vxbm99OwogICAgICAgIG5leHQgdW5sZXNzIGRlZmluZWQoJEtfb3V0ZXJfb3BlbmluZykgJiYgZGVmaW5lZCgkS19pbm5lcl9vcGVuaW5nKTsKCiAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgaW5uZXIgb3BlbmluZyB0b2tlbiBpcyB0aGUgbmV4dCBjb250YWluZXIgYWZ0ZXIgdGhlCiAgICAgICAgIyBvdXRlciBvcGVuaW5nIHRva2VuLgogICAgICAgIG15ICRLX2lvX2NoZWNrID0gJHJMTC0+WyRLX291dGVyX29wZW5pbmddLT5bX0tORVhUX1NFUV9JVEVNX107CiAgICAgICAgbmV4dCB1bmxlc3MgZGVmaW5lZCgkS19pb19jaGVjayk7CiAgICAgICAgaWYgKCAkS19pb19jaGVjayAhPSAkS19pbm5lcl9vcGVuaW5nICkgewoKICAgICAgICAgICAgIyBUaGUgaW5uZXIgb3BlbmluZyBjb250YWluZXIgZG9lcyBub3QgaW1tZWRpYXRlbHkgZm9sbG93IHRoZSBvdXRlcgogICAgICAgICAgICAjIG9wZW5pbmcgY29udGFpbmVyLCBidXQgd2UgbWF5IHN0aWxsIGFsbG93IGEgd2VsZCBpZiB0aGV5IGFyZQogICAgICAgICAgICAjIHNlcGFyYXRlZCBieSBhIHN1YiBzaWduYXR1cmUuICBGb3IgZXhhbXBsZSwgd2UgbWF5IGhhdmUgc29tZXRoaW5nCiAgICAgICAgICAgICMgbGlrZSB0aGlzLCB3aGVyZSAkS19pb19jaGVjayBtYXkgYmUgYXQgdGhlIGZpcnN0ICd4JyBpbnN0ZWFkIG9mCiAgICAgICAgICAgICMgJ2lvJy4gIFNvIHdlIG5lZWQgdG8gaG9wIG92ZXIgdGhlIHNpZ25hdHVyZSBhbmQgc2VlIGlmIHdlIGFycml2ZQogICAgICAgICAgICAjIGF0ICdpbycuCgogICAgICAgICAgICAjICAgICAgICAgICAgb28gICAgICAgICAgICAgICBpbwogICAgICAgICAgICAjICAgICAgICAgICAgIHwgICAgIHggICAgICAgeCB8CiAgICAgICAgICAgICMgICAkb2JqLT50aGVuKCBzdWIgKCAkY29kZSApIHsKICAgICAgICAgICAgIyAgICAgICAuLi4KICAgICAgICAgICAgIyAgICAgICByZXR1cm4gJGMtPnJlbmRlcih0ZXh0ID0+ICcnLCBzdGF0dXMgPT4gJGNvZGUpOwogICAgICAgICAgICAjICAgfSApOwogICAgICAgICAgICAjICAgfCB8CiAgICAgICAgICAgICMgIGljIG9jCgogICAgICAgICAgICBuZXh0IGlmICRyTEwtPlskS19pbm5lcl9vcGVuaW5nXS0+W19CTE9DS19UWVBFX10gbmUgJ3N1Yic7CiAgICAgICAgICAgIG5leHQgaWYgJHJMTC0+WyRLX2lvX2NoZWNrXS0+W19UT0tFTl9dIG5lICcoJzsKICAgICAgICAgICAgbXkgJHNlcW5vX3NpZ25hdHVyZSA9ICRyTEwtPlskS19pb19jaGVja10tPltfVFlQRV9TRVFVRU5DRV9dOwogICAgICAgICAgICBuZXh0IHVubGVzcyBkZWZpbmVkKCRzZXFub19zaWduYXR1cmUpOwogICAgICAgICAgICBteSAkS19zaWduYXR1cmVfY2xvc2luZyA9ICRLX2Nsb3NpbmdfY29udGFpbmVyLT57JHNlcW5vX3NpZ25hdHVyZX07CiAgICAgICAgICAgIG5leHQgdW5sZXNzIGRlZmluZWQoJEtfc2lnbmF0dXJlX2Nsb3NpbmcpOwogICAgICAgICAgICBteSAkS190ZXN0ID0gJHJMTC0+WyRLX3NpZ25hdHVyZV9jbG9zaW5nXS0+W19LTkVYVF9TRVFfSVRFTV9dOwogICAgICAgICAgICBuZXh0CiAgICAgICAgICAgICAgdW5sZXNzICggZGVmaW5lZCgkS190ZXN0KSAmJiAkS190ZXN0ID09ICRLX2lubmVyX29wZW5pbmcgKTsKCiAgICAgICAgICAgICMgT0ssIHdlIGhhdmUgYXJyaXZlZCBhdCAnaW8nIGluIHRoZSBhYm92ZSBkaWFncmFtLiAgV2Ugc2hvdWxkIHB1dAogICAgICAgICAgICAjIGEgbGltaXQgb24gdGhlIGxlbmd0aCBvciBjb21wbGV4aXR5IG9mIHRoZSBzaWduYXR1cmUgaGVyZS4gIFRoZXJlCiAgICAgICAgICAgICMgaXMgbm8gcGVyZmVjdCB3YXkgdG8gZG8gdGhpcywgb25lIHdheSBpcyB0byBwdXQgYSBsaW1pdCBvbiB0b2tlbgogICAgICAgICAgICAjIGNvdW50LiAgRm9yIGNvbnNpc3RlbmN5IHdpdGggb2xkZXIgdmVyc2lvbnMsIHdlIHNob3VsZCBhbGxvdyBhCiAgICAgICAgICAgICMgc2lnbmF0dXJlIHdpdGggYSBzaW5nbGUgdmFyaWFibGUgdG8gd2VsZCwgYnV0IG5vdCB3aXRoCiAgICAgICAgICAgICMgbXVsdGlwbGUgdmFyaWFibGVzLiAgQSBzaW5nbGUgdmFyaWFibGUgYXMgaW4gJ3N1YiAoJGNvZGUpIHsnIGNhbgogICAgICAgICAgICAjIGhhdmUgYSAkS2RpZmYgb2YgMiB0byA0LCBkZXBlbmRpbmcgb24gc3BhY2luZy4KCiAgICAgICAgICAgICMgQnV0IHR3byB2YXJpYWJsZXMgbGlrZSAnc3ViICgkdjEsJHYyKSB7JyBjYW4gaGF2ZSBhIGRpZmYgb2YgNCB0bwogICAgICAgICAgICAjIDcsIGRlcGVuZGluZyBvbiBzcGFjaW5nLiBTbyB0byBrZWVwIGZvcm1hdHRpbmcgY29uc2lzdGVudCB3aXRoCiAgICAgICAgICAgICMgcHJldmlvdXMgdmVyc2lvbnMsIHdlIHdpbGwgYWxzbyBhdm9pZCB3ZWxkaW5nIGlmIHRoZXJlIGlzIGEgY29tbWEKICAgICAgICAgICAgIyBpbiB0aGUgc2lnbmF0dXJlLgoKICAgICAgICAgICAgbXkgJEtkaWZmID0gJEtfc2lnbmF0dXJlX2Nsb3NpbmcgLSAkS19pb19jaGVjazsKICAgICAgICAgICAgbmV4dCBpZiAoICRLZGlmZiA+IDQgKTsKCiAgICAgICAgICAgIG15ICRzYXdfY29tbWE7CiAgICAgICAgICAgIGZvcmVhY2ggbXkgJEtLICggJEtfaW9fY2hlY2sgKyAxIC4uICRLX3NpZ25hdHVyZV9jbG9zaW5nIC0gMSApIHsKICAgICAgICAgICAgICAgIGlmICggJHJMTC0+WyRLS10tPltfVFlQRV9dIGVxICcsJyApIHsgJHNhd19jb21tYSA9IDE7IGxhc3QgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIG5leHQgaWYgKCRzYXdfY29tbWEpOwogICAgICAgIH0KCiAgICAgICAgIyBZZXMgLi4gdGhpcyBpcyBhIHBvc3NpYmxlIG5lc3RpbmcgcGFpci4KICAgICAgICAjIFRoZXkgY2FuIGJlIHNlcGFyYXRlZCBieSBhIHNtYWxsIGFtb3VudC4KICAgICAgICBteSAkS19kaWZmID0gJEtfaW5uZXJfb3BlbmluZyAtICRLX291dGVyX29wZW5pbmc7CgogICAgICAgICMgQ291bnQgbm9uYmxhbmsgY2hhcmFjdGVycyBzZXBhcmF0aW5nIHRoZW0uCiAgICAgICAgaWYgKCAkS19kaWZmIDwgMCApIHsgbmV4dCB9ICAgICMgU2hvdWxkbid0IGhhcHBlbgogICAgICAgIG15ICRLbiAgICAgICAgICAgICA9ICRLX291dGVyX29wZW5pbmc7CiAgICAgICAgbXkgJG5vbmJsYW5rX2NvdW50ID0gMDsKICAgICAgICBteSAkdHlwZTsKICAgICAgICBteSAkaXNfbmFtZTsKCiAgICAgICAgIyBIZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBsb25nIGlkZW50aWZpZXIgY2hhaW4gd2hpY2ggY291bnRzIGFzIGEKICAgICAgICAjIHNpbmdsZSBub25ibGFuayBoZXJlICh0aGlzIHNwYW5zIGFib3V0IDEwIEsgaW5kZXhlcyk6CiAgICAgICAgIyAgICAgaWYgKCAhQm91Y2hlcm90OjpTZXRPZkNvbm5lY3Rpb25zLT5uZXctPmhhbmRsZXItPmV4ZWN1dGUoCiAgICAgICAgIyAgICAgICAgXi0tS19vX28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeLS1LX2lfbwogICAgICAgICMgICAgICAgQGFycmF5KSApCiAgICAgICAgbXkgJEtuX2ZpcnN0ID0gJEtfb3V0ZXJfb3BlbmluZzsKICAgICAgICBmb3IgKAogICAgICAgICAgICBteSAkS24gPSAkS19vdXRlcl9vcGVuaW5nICsgMSA7CiAgICAgICAgICAgICRLbiA8PSAkS19pbm5lcl9vcGVuaW5nIDsKICAgICAgICAgICAgJEtuICs9IDEKICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG5leHQgaWYgKCAkckxMLT5bJEtuXS0+W19UWVBFX10gZXEgJ2InICk7CiAgICAgICAgICAgIGlmICggISRub25ibGFua19jb3VudCApICAgICAgICB7ICRLbl9maXJzdCA9ICRLbiB9CiAgICAgICAgICAgIGlmICggJEtuIGVxICRLX2lubmVyX29wZW5pbmcgKSB7ICRub25ibGFua19jb3VudCsrOyBsYXN0OyB9CgogICAgICAgICAgICAjIHNraXAgY2hhaW4gb2YgaWRlbnRpZmllciB0b2tlbnMKICAgICAgICAgICAgbXkgJGxhc3RfdHlwZSAgICA9ICR0eXBlOwogICAgICAgICAgICBteSAkbGFzdF9pc19uYW1lID0gJGlzX25hbWU7CiAgICAgICAgICAgICR0eXBlICAgID0gJHJMTC0+WyRLbl0tPltfVFlQRV9dOwogICAgICAgICAgICAkaXNfbmFtZSA9ICRpc19uYW1lX3R5cGUtPnskdHlwZX07CiAgICAgICAgICAgIG5leHQgaWYgKCAkaXNfbmFtZSAmJiAkbGFzdF9pc19uYW1lICk7CgogICAgICAgICAgICAkbm9uYmxhbmtfY291bnQrKzsKICAgICAgICAgICAgbGFzdCBpZiAoICRub25ibGFua19jb3VudCA+IDIgKTsKICAgICAgICB9CgogICAgICAgIGlmICgKCiAgICAgICAgICAgICMgYWRqYWNlbnQgb3BlbmluZyBjb250YWluZXJzLCBsaWtlOiBkbyB7ewogICAgICAgICAgICAkbm9uYmxhbmtfY291bnQgPT0gMQoKICAgICAgICAgICAgIyBzaG9ydCBpdGVtIGZvbGxvd2luZyBvcGVuaW5nIHBhcmVuLCBsaWtlOiAgZnVuKCB5eXkgKAogICAgICAgICAgICB8fCAoICAgJG5vbmJsYW5rX2NvdW50ID09IDIKICAgICAgICAgICAgICAgICYmICRyTEwtPlskS19vdXRlcl9vcGVuaW5nXS0+W19UT0tFTl9dIGVxICcoJyApCgogICAgICAgICAgICAjIGFub255bW91cyBzdWIgKyBwcm90b3R5cGUgb3Igc2lnOiAgKS0+dGhlbiggc3ViICgkY29kZSkgewogICAgICAgICAgICAjIC4uLiBidXQgaXQgc2VlbXMgYmVzdCBub3QgdG8gc3RhY2sgdHdvIHN0cnVjdHVyYWwgYmxvY2tzLCBsaWtlCiAgICAgICAgICAgICMgdGhpcwogICAgICAgICAgICAjICAgIHN1YiBtYWtlX2Fub25fd2l0aF9teV9zdWIgeyBzdWIgewogICAgICAgICAgICAjIGJlY2F1c2UgaXQgcHJvYmFibHkgaGlkZXMgdGhlIHN0cnVjdHVyZSBhIGxpdHRsZSB0b28gbXVjaC4KICAgICAgICAgICAgfHwgKCAgICRyTEwtPlskS19pbm5lcl9vcGVuaW5nXS0+W19CTE9DS19UWVBFX10gZXEgJ3N1YicKICAgICAgICAgICAgICAgICYmICRyTEwtPlskS25fZmlyc3RdLT5bX1RPS0VOX10gZXEgJ3N1YicKICAgICAgICAgICAgICAgICYmICEkckxMLT5bJEtfb3V0ZXJfb3BlbmluZ10tPltfQkxPQ0tfVFlQRV9dICkKICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIHB1c2ggQG5lc3RlZF9wYWlycywKICAgICAgICAgICAgICBbICRpbm5lcl9zZXFubywgJG91dGVyX3NlcW5vLCAkS19pbm5lcl9jbG9zaW5nIF07CiAgICAgICAgfQogICAgICAgIG5leHQ7CiAgICB9CgogICAgIyBUaGUgd2VsZCByb3V0aW5lIGV4cGVjdHMgdGhlIHBhaXJzIGluIG9yZGVyIGluIHRoZSBmb3JtCiAgICAjICAgWyRzZXFub19pbm5lciwgJHNlcW5vX291dGVyXQogICAgIyBBbmQgdGhleSBtdXN0IGJlIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBpbm5lciBjbG9zaW5nIHRva2VucwogICAgIyAob3RoZXJ3aXNlLCB3ZWxkcyBvZiB0aHJlZSBvciBtb3JlIGFkamFjZW50IHRva2VucyB3aWxsIG5vdCB3b3JrKS4gIFRoZSBLCiAgICAjIHZhbHVlIG9mIHRoaXMgaW5uZXIgY2xvc2luZyB0b2tlbiBoYXMgdGVtcG9yYXJpbHkgYmVlbiBzdG9yZWQgZm9yCiAgICAjIHNvcnRpbmcuCiAgICBAbmVzdGVkX3BhaXJzID0KCiAgICAgICMgRHJvcCB0aGUgSyBpbmRleCBhZnRlciBzb3J0aW5nIChpdCB3b3VsZCBjYXVzZSB0cm91YmxlIGRvd25zdHJlYW0pCiAgICAgIG1hcCB7IFsgJF8tPlswXSwgJF8tPlsxXSBdIH0KCiAgICAgICMgU29ydCBvbiB0aGUgSyB2YWx1ZXMKICAgICAgc29ydCB7ICRhLT5bMl0gPD0+ICRiLT5bMl0gfSBAbmVzdGVkX3BhaXJzOwoKICAgIHJldHVybiBcQG5lc3RlZF9wYWlyczsKfQoKc3ViIGlzX2V4Y2x1ZGVkX3dlbGQgewoKICAgICMgZGVjaWRlIGlmIHRoaXMgd2VsZCBpcyBleGNsdWRlZCBieSB1c2VyIHJlcXVlc3QKICAgIG15ICggJHNlbGYsICRLSywgJGlzX2xlYWRpbmcgKSA9IEBfOwogICAgbXkgJHJMTCAgICAgICAgID0gJHNlbGYtPltfckxMX107CiAgICBteSAkcnRva2VuX3ZhcnMgPSAkckxMLT5bJEtLXTsKICAgIG15ICR0b2tlbiAgICAgICA9ICRydG9rZW5fdmFycy0+W19UT0tFTl9dOwogICAgbXkgJHJmbGFncyAgICAgID0gJHdlbGRfbmVzdGVkX2V4Y2x1c2lvbl9ydWxlc3skdG9rZW59OwogICAgcmV0dXJuIDAgdW5sZXNzICggZGVmaW5lZCgkcmZsYWdzKSApOwogICAgbXkgJGZsYWcgPSAkaXNfbGVhZGluZyA/ICRyZmxhZ3MtPlswXSA6ICRyZmxhZ3MtPlsxXTsKICAgIHJldHVybiAwIHVubGVzcyAoIGRlZmluZWQoJGZsYWcpICk7CiAgICByZXR1cm4gMSBpZiAkZmxhZyBlcSAnKic7CgogICAgbXkgKCAkaXNfZiwgJGlzX2ssICRpc193ICk7CiAgICBteSAkS3AgPSAkc2VsZi0+S19wcmV2aW91c19ub25ibGFuaygkS0spOwogICAgaWYgKCBkZWZpbmVkKCRLcCkgKSB7CiAgICAgICAgbXkgJHR5cGVfcCAgPSAkckxMLT5bJEtwXS0+W19UWVBFX107CiAgICAgICAgbXkgJHRva2VuX3AgPSAkckxMLT5bJEtwXS0+W19UT0tFTl9dOwoKICAgICAgICAjIGtleXdvcmQ/CiAgICAgICAgJGlzX2sgPSAkdHlwZV9wIGVxICdrJzsKCiAgICAgICAgIyBmdW5jdGlvbiBjYWxsPyBVc2UgdGhlIHNhbWUgZGVmaW5pdGlvbiBhcyB1c2VkIGZvcgogICAgICAgICMgdGhlIHBhcmFtZXRlciAnc3BhY2UtZnVuY3Rpb24tcGFyZW4nCiAgICAgICAgJGlzX2YgPQogICAgICAgICAgICAgJHR5cGVfcCA9fiAvXlt3VUddJC8KICAgICAgICAgIHx8ICR0eXBlX3AgZXEgJy0+JwogICAgICAgICAgfHwgJHR5cGVfcCA9fiAvXlt3aV0kLyAmJiAkdG9rZW5fcCA9fiAvXihcJnwtPikvOwoKICAgICAgICAjIGVpdGhlciBrZXl3b3JkIG9yIGZ1bmN0aW9uIGNhbGw/CiAgICAgICAgJGlzX3cgPSAkaXNfayB8fCAkaXNfZjsKICAgIH0KCiAgICBteSAkbWF0Y2g7CiAgICBpZiAgICAoICRmbGFnIGVxICdrJyApIHsgJG1hdGNoID0gJGlzX2sgfQogICAgZWxzaWYgKCAkZmxhZyBlcSAnSycgKSB7ICRtYXRjaCA9ICEkaXNfayB9CiAgICBlbHNpZiAoICRmbGFnIGVxICdmJyApIHsgJG1hdGNoID0gJGlzX2YgfQogICAgZWxzaWYgKCAkZmxhZyBlcSAnRicgKSB7ICRtYXRjaCA9ICEkaXNfZiB9CiAgICBlbHNpZiAoICRmbGFnIGVxICd3JyApIHsgJG1hdGNoID0gJGlzX3cgfQogICAgZWxzaWYgKCAkZmxhZyBlcSAnVycgKSB7ICRtYXRjaCA9ICEkaXNfdyB9CiAgICByZXR1cm4gJG1hdGNoOwp9CgpzdWIgd2VsZF9uZXN0ZWRfY29udGFpbmVycyB7CiAgICBteSAoJHNlbGYpID0gQF87CgogICAgIyBDYWxsZWQgb25jZSBwZXIgZmlsZSBmb3Igb3B0aW9uICctLXdlbGQtbmVzdGVkLWNvbnRhaW5lcnMnCgogICAgbXkgJHJ3ZWxkX2xlbl9sZWZ0X2Nsb3NpbmcgID0gJHNlbGYtPltfcndlbGRfbGVuX2xlZnRfY2xvc2luZ19dOwogICAgbXkgJHJ3ZWxkX2xlbl9sZWZ0X29wZW5pbmcgID0gJHNlbGYtPltfcndlbGRfbGVuX2xlZnRfb3BlbmluZ19dOwogICAgbXkgJHJ3ZWxkX2xlbl9yaWdodF9jbG9zaW5nID0gJHNlbGYtPltfcndlbGRfbGVuX3JpZ2h0X2Nsb3NpbmdfXTsKICAgIG15ICRyd2VsZF9sZW5fcmlnaHRfb3BlbmluZyA9ICRzZWxmLT5bX3J3ZWxkX2xlbl9yaWdodF9vcGVuaW5nX107CgogICAgIyBUaGlzIHJvdXRpbmUgaW1wbGVtZW50cyB0aGUgLXduIGZsYWcgYnkgIndlbGRpbmcgdG9nZXRoZXIiCiAgICAjIHRoZSBuZXN0ZWQgY2xvc2luZyBhbmQgb3BlbmluZyB0b2tlbnMgd2hpY2ggd2VyZSBwcmV2aW91c2x5CiAgICAjIGlkZW50aWZpZWQgYnkgc3ViICdmaW5kX25lc3RlZF9wYWlycycuICAid2VsZGluZyIgc2ltcGx5CiAgICAjIGludm9sdmVzIHNldHRpbmcgY2VydGFpbiBoYXNoIHZhbHVlcyB3aGljaCB3aWxsIGJlIGNoZWNrZWQKICAgICMgbGF0ZXIgZHVyaW5nIGZvcm1hdHRpbmcuCgogICAgbXkgJHJMTCAgICAgICAgICAgICAgICAgPSAkc2VsZi0+W19yTExfXTsKICAgIG15ICRybGluZXMgICAgICAgICAgICAgID0gJHNlbGYtPltfcmxpbmVzX107CiAgICBteSAkS19vcGVuaW5nX2NvbnRhaW5lciA9ICRzZWxmLT5bX0tfb3BlbmluZ19jb250YWluZXJfXTsKICAgIG15ICRLX2Nsb3NpbmdfY29udGFpbmVyID0gJHNlbGYtPltfS19jbG9zaW5nX2NvbnRhaW5lcl9dOwoKICAgICMgRmluZCBuZXN0ZWQgcGFpcnMgb2YgY29udGFpbmVyIHRva2VucyBmb3IgYW55IHdlbGRpbmcuCiAgICBteSAkcm5lc3RlZF9wYWlycyA9ICRzZWxmLT5maW5kX25lc3RlZF9wYWlycygpOwoKICAgICMgUmV0dXJuIHVubGVzcyB0aGVyZSBhcmUgbmVzdGVkIHBhaXJzIHRvIHdlbGQKICAgIHJldHVybiB1bmxlc3MgZGVmaW5lZCgkcm5lc3RlZF9wYWlycykgJiYgQHskcm5lc3RlZF9wYWlyc307CgogICAgIyBUaGlzIGFycmF5IHdpbGwgaG9sZCB0aGUgc2VxdWVuY2UgbnVtYmVycyBvZiB0aGUgdG9rZW5zIHRvIGJlIHdlbGRlZC4KICAgIG15IEB3ZWxkczsKCiAgICAjIFZhcmlhYmxlcyBuZWVkZWQgZm9yIGVzdGltYXRpbmcgbGluZSBsZW5ndGhzCiAgICBteSAkc3RhcnRpbmdfaW5kZW50OwogICAgbXkgJHN0YXJ0aW5nX2xlbnRvdDsKCiAgICAjIEEgdG9sZXJhbmNlIHRvIHRoZSBsZW5ndGggZm9yIGxlbmd0aCBlc3RpbWF0ZXMuICBJbiBzb21lIHJhcmUgY2FzZXMKICAgICMgdGhpcyBjYW4gYXZvaWQgcHJvYmxlbXMgd2hlcmUgYSBmaW5hbCB3ZWxkIHNsaWdodGx5IGV4Y2VlZHMgdGhlCiAgICAjIGxpbmUgbGVuZ3RoIGFuZCBnZXRzIGJyb2tlbiBpbiBhIGJhZCBzcG90LgogICAgbXkgJGxlbmd0aF90b2wgPSAxOwoKICAgIG15ICRleGNlc3NfbGVuZ3RoX3RvX0sgPSBzdWIgewogICAgICAgIG15ICgkSykgPSBAXzsKCiAgICAgICAgIyBFc3RpbWF0ZSB0aGUgbGVuZ3RoIGZyb20gdGhlIGxpbmUgc3RhcnQgdG8gYSBnaXZlbiB0b2tlbgogICAgICAgIG15ICRsZW5ndGggPSAkc2VsZi0+Y3VtdWxhdGl2ZV9sZW5ndGhfYmVmb3JlX0soJEspIC0gJHN0YXJ0aW5nX2xlbnRvdDsKICAgICAgICBteSAkZXhjZXNzX2xlbmd0aCA9CiAgICAgICAgICAkc3RhcnRpbmdfaW5kZW50ICsgJGxlbmd0aCArICRsZW5ndGhfdG9sIC0gJHJPcHRzX21heGltdW1fbGluZV9sZW5ndGg7CiAgICAgICAgcmV0dXJuICgkZXhjZXNzX2xlbmd0aCk7CiAgICB9OwoKICAgIG15ICRsZW5ndGhfdG9fb3BlbmluZ19zZXFubyA9IHN1YiB7CiAgICAgICAgbXkgKCRzZXFubykgPSBAXzsKICAgICAgICBteSAkS0sgICAgICA9ICRLX29wZW5pbmdfY29udGFpbmVyLT57JHNlcW5vfTsKICAgICAgICBteSAkbGVudG90ICA9IGRlZmluZWQoJEtLKQogICAgICAgICAgJiYgJEtLID4gMCA/ICRyTEwtPlsgJEtLIC0gMSBdLT5bX0NVTVVMQVRJVkVfTEVOR1RIX10gOiAwOwogICAgICAgIHJldHVybiAkbGVudG90OwogICAgfTsKCiAgICBteSAkbGVuZ3RoX3RvX2Nsb3Npbmdfc2Vxbm8gPSBzdWIgewogICAgICAgIG15ICgkc2Vxbm8pID0gQF87CiAgICAgICAgbXkgJEtLICAgICAgPSAkS19jbG9zaW5nX2NvbnRhaW5lci0+eyRzZXFub307CiAgICAgICAgbXkgJGxlbnRvdCAgPSBkZWZpbmVkKCRLSykKICAgICAgICAgICYmICRLSyA+IDAgPyAkckxMLT5bICRLSyAtIDEgXS0+W19DVU1VTEFUSVZFX0xFTkdUSF9dIDogMDsKICAgICAgICByZXR1cm4gJGxlbnRvdDsKICAgIH07CgogICAgIyBBYmJyZXZpYXRpb25zOgogICAgIyAgX29vPW91dGVyIG9wZW5pbmcsIGkuZS4gZmlyc3Qgb2YgIHsgewogICAgIyAgX2lvPWlubmVyIG9wZW5pbmcsIGkuZS4gc2Vjb25kIG9mIHsgewogICAgIyAgX29jPW91dGVyIGNsb3NpbmcsIGkuZS4gc2Vjb25kIG9mIH0gewogICAgIyAgX2ljPWlubmVyIGNsb3NpbmcsIGkuZS4gZmlyc3Qgb2YgIH0gfQoKICAgIG15ICRwcmV2aW91c19wYWlyOwoKICAgICMgTWFpbiBsb29wIG92ZXIgbmVzdGVkIHBhaXJzLi4uCiAgICAjIFdlIGFyZSB3b3JraW5nIGZyb20gb3V0ZXJtb3N0IHRvIGlubmVybW9zdCBwYWlycyBzbyB0aGF0CiAgICAjIGxldmVsIGNoYW5nZXMgd2lsbCBiZSBjb21wbGV0ZSB3aGVuIHdlIGFycml2ZSBhdCB0aGUgaW5uZXIgcGFpcnMuCiAgICB3aGlsZSAoIG15ICRpdGVtID0gcG9wKCBAeyRybmVzdGVkX3BhaXJzfSApICkgewogICAgICAgIG15ICggJGlubmVyX3NlcW5vLCAkb3V0ZXJfc2Vxbm8gKSA9IEB7JGl0ZW19OwoKICAgICAgICBteSAkS291dGVyX29wZW5pbmcgPSAkS19vcGVuaW5nX2NvbnRhaW5lci0+eyRvdXRlcl9zZXFub307CiAgICAgICAgbXkgJEtpbm5lcl9vcGVuaW5nID0gJEtfb3BlbmluZ19jb250YWluZXItPnskaW5uZXJfc2Vxbm99OwogICAgICAgIG15ICRLb3V0ZXJfY2xvc2luZyA9ICRLX2Nsb3NpbmdfY29udGFpbmVyLT57JG91dGVyX3NlcW5vfTsKICAgICAgICBteSAkS2lubmVyX2Nsb3NpbmcgPSAkS19jbG9zaW5nX2NvbnRhaW5lci0+eyRpbm5lcl9zZXFub307CgogICAgICAgIG15ICRvdXRlcl9vcGVuaW5nID0gJHJMTC0+WyRLb3V0ZXJfb3BlbmluZ107CiAgICAgICAgbXkgJGlubmVyX29wZW5pbmcgPSAkckxMLT5bJEtpbm5lcl9vcGVuaW5nXTsKICAgICAgICBteSAkb3V0ZXJfY2xvc2luZyA9ICRyTEwtPlskS291dGVyX2Nsb3NpbmddOwogICAgICAgIG15ICRpbm5lcl9jbG9zaW5nID0gJHJMTC0+WyRLaW5uZXJfY2xvc2luZ107CgogICAgICAgIG15ICRpbGluZV9vbyA9ICRvdXRlcl9vcGVuaW5nLT5bX0xJTkVfSU5ERVhfXTsKICAgICAgICBteSAkaWxpbmVfaW8gPSAkaW5uZXJfb3BlbmluZy0+W19MSU5FX0lOREVYX107CiAgICAgICAgbXkgJGlsaW5lX2ljID0gJGlubmVyX2Nsb3NpbmctPltfTElORV9JTkRFWF9dOwoKICAgICAgICAjIFNldCBmbGFnIHNheWluZyBpZiB0aGlzIHBhaXIgc3RhcnRzIGEgbmV3IHdlbGQKICAgICAgICBteSAkc3RhcnRpbmdfbmV3X3dlbGQgPSAhKCBAd2VsZHMgJiYgJG91dGVyX3NlcW5vID09ICR3ZWxkc1stMV0tPlswXSApOwoKICAgICAgICAjIFNldCBmbGFnIHNheWluZyBpZiB0aGlzIHBhaXIgaXMgYWRqYWNlbnQgdG8gdGhlIHByZXZpb3VzIG5lc3RpbmcgcGFpcgogICAgICAgICMgKGV2ZW4gaWYgcHJldmlvdXMgcGFpciB3YXMgcmVqZWN0ZWQgYXMgYSB3ZWxkKQogICAgICAgIG15ICR0b3VjaF9wcmV2aW91c19wYWlyID0KICAgICAgICAgIGRlZmluZWQoJHByZXZpb3VzX3BhaXIpICYmICRvdXRlcl9zZXFubyA9PSAkcHJldmlvdXNfcGFpci0+WzBdOwogICAgICAgICRwcmV2aW91c19wYWlyID0gJGl0ZW07CgogICAgICAgICMgU2V0IGEgZmxhZyBpZiB3ZSBzaG91bGQgbm90IHdlbGQuIEl0IHNvbWV0aW1lcyBsb29rcyBiZXN0IG5vdCB0byB3ZWxkCiAgICAgICAgIyB3aGVuIHRoZSBvcGVuaW5nIGFuZCBjbG9zaW5nIHRva2VucyBhcmUgdmVyeSBjbG9zZS4gIEhvd2V2ZXIsIHRoZXJlCiAgICAgICAgIyBpcyBhIGRhbmdlciB0aGF0IHdlIHdpbGwgY3JlYXRlIGEgImJsaW5rZXIiLCB3aGljaCBvc2NpbGxhdGVzIGJldHdlZW4KICAgICAgICAjIHR3byBzZW1pLXN0YWJsZSBzdGF0ZXMsIGlmIHdlIGRvIG5vdCB3ZWxkLiAgU28gdGhlIHJ1bGVzIGZvcgogICAgICAgICMgbm90IHdlbGRpbmcgaGF2ZSB0byBiZSBjYXJlZnVsbHkgZGVmaW5lZCBhbmQgdGVzdGVkLgogICAgICAgIG15ICRkb19ub3Rfd2VsZDsKICAgICAgICBpZiAoICEkdG91Y2hfcHJldmlvdXNfcGFpciApIHsKCiAgICAgICAgICAgICMgSWYgdGhpcyBwYWlyIGlzIG5vdCBhZGphY2VudCB0byB0aGUgcHJldmlvdXMgcGFpciAoc2tpcHBlZCBvcgogICAgICAgICAgICAjIG5vdCksIHRoZW4gbWVhc3VyZSBsZW5ndGhzIGZyb20gdGhlIHN0YXJ0IG9mIGxpbmUgb2Ygb28KCiAgICAgICAgICAgIG15ICRyS19yYW5nZSA9ICRybGluZXMtPlskaWxpbmVfb29dLT57X3JLX3JhbmdlfTsKICAgICAgICAgICAgbXkgKCAkS2ZpcnN0LCAkS2xhc3QgKSA9IEB7JHJLX3JhbmdlfTsKICAgICAgICAgICAgJHN0YXJ0aW5nX2xlbnRvdCA9CiAgICAgICAgICAgICAgJEtmaXJzdCA8PSAwID8gMCA6ICRyTEwtPlsgJEtmaXJzdCAtIDEgXS0+W19DVU1VTEFUSVZFX0xFTkdUSF9dOwogICAgICAgICAgICAkc3RhcnRpbmdfaW5kZW50ID0gMDsKICAgICAgICAgICAgaWYgKCAhJHJPcHRzX3ZhcmlhYmxlX21heGltdW1fbGluZV9sZW5ndGggKSB7CiAgICAgICAgICAgICAgICBteSAkbGV2ZWwgPSAkckxMLT5bJEtmaXJzdF0tPltfTEVWRUxfXTsKICAgICAgICAgICAgICAgICRzdGFydGluZ19pbmRlbnQgPSAkck9wdHNfaW5kZW50X2NvbHVtbnMgKiAkbGV2ZWw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgRE8tTk9ULVdFTEQgUlVMRSAxOgogICAgICAgICAgICAjIERvIG5vdCB3ZWxkIHNvbWV0aGluZyB0aGF0IGxvb2tzIGxpa2UgdGhlIHN0YXJ0IG9mIGEgdHdvLWxpbmUKICAgICAgICAgICAgIyBmdW5jdGlvbiBjYWxsLCBsaWtlIHRoaXM6IDw8c25pcHBldHMvd242LmluPj4KICAgICAgICAgICAgIyAgICAkdHJhbnMtPmFkZF90cmFuc2Zvcm1hdGlvbigKICAgICAgICAgICAgIyAgICAgICAgUERMOjpHcmFwaGljczo6VHJpRDo6U2NhbGUtPm5ldyggJHN4LCAkc3ksICRzeiApICk7CiAgICAgICAgICAgICMgV2Ugd2lsbCBsb29rIGZvciBhIHNlbWljb2xvbiBhZnRlciB0aGUgY2xvc2luZyBwYXJlbi4KCiAgICAgICAgICAgICMgV2Ugd2FudCB0byB3ZWxkIHNvbWV0aGluZyBjb21wbGV4LCBsaWtlIHRoaXMgdGhvdWdoCiAgICAgICAgICAgICMgbXkgJGNvbXBhc3MgPSB1Yyggb3Bwb3NpdGVfZGlyZWN0aW9uKCBsaW5lX3RvX2NhbnZhc19kaXJlY3Rpb24oCiAgICAgICAgICAgICMgICAgIEB7ICRjb29yZHNbMF0gfSwgQHsgJGNvb3Jkc1sxXSB9ICkgKSApOwogICAgICAgICAgICAjIE90aGVyd2lzZSB3ZSB3aWxsIGdldCBhICdibGlua2VyJy4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcKICAgICAgICAgICAgIyB3b3VsZCBiZWNvbWUgYSBibGlua2VyIHdpdGhvdXQgdGhpcyBydWxlOgogICAgICAgICAgICAjICAgICAgICAkU2VsZi0+X0FkZCggJFNvcnRPcmRlckRpc3BsYXl7ICRGaWVsZAogICAgICAgICAgICAjICAgICAgICAgICAgICAtPkdlbmVyYXRlRmllbGRGb3JTZWxlY3RTUUwoKSB9ICk7CiAgICAgICAgICAgICMgQnV0IGl0IGlzIG9rYXkgdG8gd2VsZCBhIHR3by1saW5lIHN0YXRlbWVudCBpZiBpdCBsb29rcyBsaWtlCiAgICAgICAgICAgICMgaXQgd2FzIGFscmVhZHkgd2VsZGVkLCBtZWFuaW5nIHRoYXQgdGhlIHR3byBvcGVuaW5nIGNvbnRhaW5lcnMgYXJlCiAgICAgICAgICAgICMgb24gYSBkaWZmZXJlbnQgbGluZSB0aGF0IHRoZSB0d28gY2xvc2luZyBjb250YWluZXJzLiAgVGhpcyBpcwogICAgICAgICAgICAjIG5lY2Vzc2FyeSB0byBwcmV2ZW50IGJsaW5raW5nIG9mIHNvbWV0aGluZyBsaWtlIHRoaXMgd2l0aAogICAgICAgICAgICAjIHBlcmx0aWR5IC13biAtcGJwIChzdGFydGluZyBpbmRlbnRhdGlvbiB0d28gbGV2ZWxzIGRlZXApOgoKICAgICAgICAgICAgIyAkdG9wX2xhYmVsLT5zZXRfdGV4dCggZ2V0dGV4dCgKICAgICAgICAgICAgIyAgICAiVW5hYmxlIHRvIGNyZWF0ZSBwZXJzb25hbCBkaXJlY3RvcnkgLSBjaGVjayBwZXJtaXNzaW9ucy4iKSApOwoKICAgICAgICAgICAgbXkgJGlsaW5lX29jID0gJG91dGVyX2Nsb3NpbmctPltfTElORV9JTkRFWF9dOwogICAgICAgICAgICBteSAkdG9rZW5fb28gPSAkb3V0ZXJfb3BlbmluZy0+W19UT0tFTl9dOwogICAgICAgICAgICBpZiAoICAgJGlsaW5lX29jID09ICRpbGluZV9vbyArIDEKICAgICAgICAgICAgICAgICYmICRpbGluZV9pbyA9PSAkaWxpbmVfaWMKICAgICAgICAgICAgICAgICYmICR0b2tlbl9vbyBlcSAnKCcgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgIyBMb29rIGZvciBmb2xsb3dpbmcgc2VtaWNvbG9uLi4uCiAgICAgICAgICAgICAgICBteSAkS25leHRfbm9uYmxhbmsgPSAkc2VsZi0+S19uZXh0X25vbmJsYW5rKCRLb3V0ZXJfY2xvc2luZyk7CiAgICAgICAgICAgICAgICBteSAkbmV4dF9ub25ibGFua190eXBlID0KICAgICAgICAgICAgICAgICAgZGVmaW5lZCgkS25leHRfbm9uYmxhbmspCiAgICAgICAgICAgICAgICAgID8gJHJMTC0+WyRLbmV4dF9ub25ibGFua10tPltfVFlQRV9dCiAgICAgICAgICAgICAgICAgIDogJ2InOwogICAgICAgICAgICAgICAgaWYgKCAkbmV4dF9ub25ibGFua190eXBlIGVxICc7JyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBUaGVuIGRvIG5vdCB3ZWxkIGlmIG5vIG90aGVyIGNvbnRhaW5lcnMgYmV0d2VlbiBpbm5lcgogICAgICAgICAgICAgICAgICAgICMgb3BlbmluZyBhbmQgY2xvc2luZy4KICAgICAgICAgICAgICAgICAgICBteSAkS25leHRfc2VxX2l0ZW0gPSAkaW5uZXJfb3BlbmluZy0+W19LTkVYVF9TRVFfSVRFTV9dOwogICAgICAgICAgICAgICAgICAgIGlmICggJEtuZXh0X3NlcV9pdGVtID09ICRLaW5uZXJfY2xvc2luZyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGRvX25vdF93ZWxkIHx8PSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBETy1OT1QtV0VMRCBSVUxFIDI6CiAgICAgICAgIyBEbyBub3Qgd2VsZCBhbiBvcGVuaW5nIHBhcmVuIHRvIGFuIGlubmVyIG9uZSBsaW5lIGJyYWNlIGJsb2NrCiAgICAgICAgIyBXZSB3aWxsIGp1c3QgdXNlIG9sZCBsaW5lIG51bWJlcnMgZm9yIHRoaXMgdGVzdCBhbmQgcmVxdWlyZQogICAgICAgICMgaXRlcmF0aW9ucyBpZiBuZWNlc3NhcnkgZm9yIGNvbnZlcmdlbmNlCgogICAgICAgICMgRm9yIGV4YW1wbGUsIG90aGVyd2lzZSB3ZSBjb3VsZCBjYXVzZSB0aGUgb3BlbmluZyBwYXJlbgogICAgICAgICMgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlIHRvIHNlcGFyYXRlIGZyb20gdGhlIGNhbGxlciBuYW1lCiAgICAgICAgIyBhcyBoZXJlOgoKICAgICAgICAjICAgICRfWzBdLT5jb2RlX2hhbmRsZXIKICAgICAgICAjICAgICAJKCBzdWIgeyAkbW9yZSAuPSAkX1sxXSAuICI6IiAuICRfWzBdIC4gIlxuIiB9ICk7CgogICAgICAgICMgSGVyZSBpcyBhbm90aGVyIGV4YW1wbGUgd2hlcmUgd2UgZG8gbm90IHdhbnQgdG8gd2VsZDoKICAgICAgICAjICAkd3JhcHBlZC0+YWRkX2Fyb3VuZF9tb2RpZmllcigKICAgICAgICAjICAgIHN1YiB7IHB1c2ggQHRyYWNlbG9nID0+ICdhcm91bmQgMSc7ICRfWzBdLT4oKTsgfSApOwoKICAgICAgICAjIElmIHRoZSBvbmUgbGluZSBzdWIgYmxvY2sgZ2V0cyBicm9rZW4gZHVlIHRvIGxlbmd0aCBvciBieSB0aGUKICAgICAgICAjIHVzZXIsIHRoZW4gd2UgY2FuIHdlbGQuICBUaGUgcmVzdWx0IHdpbGwgdGhlbiBiZToKICAgICAgICAjICR3cmFwcGVkLT5hZGRfYXJvdW5kX21vZGlmaWVyKCBzdWIgewogICAgICAgICMgICAgcHVzaCBAdHJhY2Vsb2cgPT4gJ2Fyb3VuZCAxJzsKICAgICAgICAjICAgICRfWzBdLT4oKTsKICAgICAgICAjIH0gKTsKCiAgICAgICAgaWYgKCAkaWxpbmVfaWMgPT0gJGlsaW5lX2lvICkgewoKICAgICAgICAgICAgbXkgJHRva2VuX29vID0gJG91dGVyX29wZW5pbmctPltfVE9LRU5fXTsKICAgICAgICAgICAgJGRvX25vdF93ZWxkIHx8PSAkdG9rZW5fb28gZXEgJygnOwogICAgICAgIH0KCiAgICAgICAgIyBETy1OT1QtV0VMRCBSVUxFIDM6CiAgICAgICAgIyBEbyBub3Qgd2VsZCBpZiB0aGlzIG1ha2VzIG91ciBsaW5lIHRvbyBsb25nCiAgICAgICAgJGRvX25vdF93ZWxkIHx8PSAkZXhjZXNzX2xlbmd0aF90b19LLT4oJEtpbm5lcl9vcGVuaW5nKSA+IDA7CgogICAgICAgICMgRE8tTk9ULVdFTEQgUlVMRSA0OyBpbXBsZW1lbnRlZCBmb3IgZ2l0IzEwOgogICAgICAgICMgRG8gbm90IHdlbGQgYW4gb3BlbmluZyAtY2UgYnJhY2UgaWYgdGhlIG5leHQgY29udGFpbmVyIGlzIG9uIGEgc2luZ2xlCiAgICAgICAgIyBsaW5lLCBkaWZmZXJlbnQgZnJvbSB0aGUgb3BlbmluZyBicmFjZS4gKFRoaXMgaXMgdmVyeSByYXJlKS4gIEZvcgogICAgICAgICMgZXhhbXBsZSwgZ2l2ZW4gdGhlIGZvbGxvd2luZyB3aXRoIC1jZSwgd2Ugd2lsbCBhdm9pZCBqb2luaW5nIHRoZSB7CiAgICAgICAgIyBhbmQgWwoKICAgICAgICAjICB9IGVsc2UgewogICAgICAgICMgICAgICBbICRfLCBsZW5ndGgoJF8pIF0KICAgICAgICAjICB9CgogICAgICAgICMgYmVjYXVzZSB0aGlzIHdvdWxkIHByb2R1Y2UgYSB0ZXJtaW5hbCBvbmUtbGluZSBibG9jazoKCiAgICAgICAgIyAgfSBlbHNlIHsgWyAkXywgbGVuZ3RoKCRfKSBdICB9CgogICAgICAgICMgd2hpY2ggbWF5IG5vdCBiZSB3aGF0IGlzIGRlc2lyZWQuIEJ1dCBnaXZlbiB0aGlzIGlucHV0OgoKICAgICAgICAjICB9IGVsc2UgeyBbICRfLCBsZW5ndGgoJF8pIF0gIH0KCiAgICAgICAgIyB0aGVuIHdlIHdpbGwgZG8gdGhlIHdlbGQgYW5kIHJldGFpbiB0aGUgb25lLWxpbmUgYmxvY2sKICAgICAgICBpZiAoICRyT3B0cy0+eydjdWRkbGVkLWVsc2UnfSApIHsKICAgICAgICAgICAgbXkgJGJsb2NrX3R5cGUgPSAkckxMLT5bJEtvdXRlcl9vcGVuaW5nXS0+W19CTE9DS19UWVBFX107CiAgICAgICAgICAgIGlmICggJGJsb2NrX3R5cGUgJiYgJHJjdWRkbGVkX2Jsb2NrX3R5cGVzLT57JyonfS0+eyRibG9ja190eXBlfSApIHsKICAgICAgICAgICAgICAgIG15ICRpb19saW5lID0gJGlubmVyX29wZW5pbmctPltfTElORV9JTkRFWF9dOwogICAgICAgICAgICAgICAgbXkgJGljX2xpbmUgPSAkaW5uZXJfY2xvc2luZy0+W19MSU5FX0lOREVYX107CiAgICAgICAgICAgICAgICBteSAkb29fbGluZSA9ICRvdXRlcl9vcGVuaW5nLT5bX0xJTkVfSU5ERVhfXTsKICAgICAgICAgICAgICAgICRkb19ub3Rfd2VsZCB8fD0KICAgICAgICAgICAgICAgICAgKCAkb29fbGluZSA8ICRpb19saW5lICYmICRpY19saW5lID09ICRpb19saW5lICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRE8tTk9ULVdFTEQgUlVMRSA1OiBkbyBub3QgaW5jbHVkZSB3ZWxkcyBleGNsdWRlZCBieSB1c2VyCiAgICAgICAgaWYgKCAhJGRvX25vdF93ZWxkICYmICV3ZWxkX25lc3RlZF9leGNsdXNpb25fcnVsZXMgKSB7CiAgICAgICAgICAgICRkb19ub3Rfd2VsZCB8fD0KICAgICAgICAgICAgICAkc2VsZi0+aXNfZXhjbHVkZWRfd2VsZCggJEtvdXRlcl9vcGVuaW5nLCAkc3RhcnRpbmdfbmV3X3dlbGQgKTsKICAgICAgICAgICAgJGRvX25vdF93ZWxkIHx8PSAkc2VsZi0+aXNfZXhjbHVkZWRfd2VsZCggJEtpbm5lcl9vcGVuaW5nLCAwICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGRvX25vdF93ZWxkKSB7CgogICAgICAgICAgICAjIEFmdGVyIG5lZ2xlY3RpbmcgYSBwYWlyLCB3ZSBzdGFydCBtZWFzdXJpbmcgZnJvbSBzdGFydCBvZiBwb2ludCBpbwogICAgICAgICAgICAkc3RhcnRpbmdfbGVudG90ID0KICAgICAgICAgICAgICAkc2VsZi0+Y3VtdWxhdGl2ZV9sZW5ndGhfYmVmb3JlX0soJEtpbm5lcl9vcGVuaW5nKTsKICAgICAgICAgICAgJHN0YXJ0aW5nX2luZGVudCA9IDA7CiAgICAgICAgICAgIGlmICggISRyT3B0c192YXJpYWJsZV9tYXhpbXVtX2xpbmVfbGVuZ3RoICkgewogICAgICAgICAgICAgICAgbXkgJGxldmVsID0gJGlubmVyX29wZW5pbmctPltfTEVWRUxfXTsKICAgICAgICAgICAgICAgICRzdGFydGluZ19pbmRlbnQgPSAkck9wdHNfaW5kZW50X2NvbHVtbnMgKiAkbGV2ZWw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgTm9ybWFsbHksIGEgYnJva2VuIHBhaXIgc2hvdWxkIG5vdCBkZWNyZWFzZSBpbmRlbnRhdGlvbiBvZgogICAgICAgICAgICAjIGludGVybWVkaWF0ZSB0b2tlbnM6CiAgICAgICAgICAgICMjICAgICAgaWYgKCAkbGFzdF9wYWlyX2Jyb2tlbiApIHsgbmV4dCB9CiAgICAgICAgICAgICMgSG93ZXZlciwgZm9yIGxvbmcgc3RyaW5ncyBvZiB3ZWxkZWQgdG9rZW5zLCBzdWNoIGFzICd7e3t7e3suLi4nCiAgICAgICAgICAgICMgd2Ugd2lsbCBhbGxvdyBicm9rZW4gcGFpcnMgdG8gYWxzbyByZW1vdmUgaW5kZW50YXRpb24uCiAgICAgICAgICAgICMgVGhpcyB3aWxsIGtlZXAgdmVyeSBsb25nIHN0cmluZ3Mgb2Ygb3BlbmluZyBhbmQgY2xvc2luZwogICAgICAgICAgICAjIGJyYWNlcyBmcm9tIG1hcmNoaW5nIG9mZiB0byB0aGUgcmlnaHQuICBXZSB3aWxsIGRvIHRoaXMgaWYgdGhlCiAgICAgICAgICAgICMgbnVtYmVyIG9mIHRva2VucyBpbiBhIHdlbGQgYmVmb3JlIHRoZSBicm9rZW4gd2VsZCBpcyA0IG9yIG1vcmUuCiAgICAgICAgICAgICMgVGhpcyBydWxlIHdpbGwgbWFpbmx5IGJlIG5lZWRlZCBmb3IgdGVzdCBzY3JpcHRzLCBzaW5jZSB0eXBpY2FsCiAgICAgICAgICAgICMgd2VsZHMgaGF2ZSBmZXdlciB0aGFuIGFib3V0IDQgd2VsZGVkIHRva2Vucy4KICAgICAgICAgICAgaWYgKCAhQHdlbGRzIHx8IEB7ICR3ZWxkc1stMV0gfSA8IDQgKSB7IG5leHQgfQogICAgICAgIH0KCiAgICAgICAgIyBvdGhlcndpc2Ugc3RhcnQgbmV3IHdlbGQgLi4uCiAgICAgICAgZWxzaWYgKCRzdGFydGluZ19uZXdfd2VsZCkgewogICAgICAgICAgICBwdXNoIEB3ZWxkcywgJGl0ZW07CiAgICAgICAgfQoKICAgICAgICAjIC4uLiBvciBleHRlbmQgY3VycmVudCB3ZWxkCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHVuc2hpZnQgQHsgJHdlbGRzWy0xXSB9LCAkaW5uZXJfc2Vxbm87CiAgICAgICAgfQoKICAgICAgICAjIEFmdGVyIHdlbGRpbmcsIHJlZHVjZSB0aGUgaW5kZW50YXRpb24gbGV2ZWwgaWYgYWxsIGludGVybWVkaWF0ZSB0b2tlbnMKICAgICAgICBteSAkZGxldmVsID0gJG91dGVyX29wZW5pbmctPltfTEVWRUxfXSAtICRpbm5lcl9vcGVuaW5nLT5bX0xFVkVMX107CiAgICAgICAgaWYgKCAkZGxldmVsICE9IDAgKSB7CiAgICAgICAgICAgIG15ICRLc3RhcnQgPSAkS2lubmVyX29wZW5pbmc7CiAgICAgICAgICAgIG15ICRLc3RvcCAgPSAkS2lubmVyX2Nsb3Npbmc7CiAgICAgICAgICAgIGZvciAoIG15ICRLSyA9ICRLc3RhcnQgOyAkS0sgPD0gJEtzdG9wIDsgJEtLKysgKSB7CiAgICAgICAgICAgICAgICAkckxMLT5bJEtLXS0+W19MRVZFTF9dICs9ICRkbGV2ZWw7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBEZWZpbmUgd2VsZCBsZW5ndGhzIG5lZWRlZCBsYXRlciB0byBzZXQgbGluZSBicmVha3MKICAgIGZvcmVhY2ggbXkgJGl0ZW0gKEB3ZWxkcykgewoKICAgICAgICAjIHN3ZWVwIGZyb20gaW5uZXIgdG8gb3V0ZXIKCiAgICAgICAgbXkgJGlubmVyX3NlcW5vOwogICAgICAgIG15ICRsZW5fY2xvc2UgPSAwOwogICAgICAgIG15ICRsZW5fb3BlbiAgPSAwOwogICAgICAgIGZvcmVhY2ggbXkgJG91dGVyX3NlcW5vICggQHskaXRlbX0gKSB7CiAgICAgICAgICAgIGlmICgkaW5uZXJfc2Vxbm8pIHsKCiAgICAgICAgICAgICAgICBteSAkZGxlbl9vcGVuaW5nID0KICAgICAgICAgICAgICAgICAgJGxlbmd0aF90b19vcGVuaW5nX3NlcW5vLT4oJGlubmVyX3NlcW5vKSAtCiAgICAgICAgICAgICAgICAgICRsZW5ndGhfdG9fb3BlbmluZ19zZXFuby0+KCRvdXRlcl9zZXFubyk7CgogICAgICAgICAgICAgICAgbXkgJGRsZW5fY2xvc2luZyA9CiAgICAgICAgICAgICAgICAgICRsZW5ndGhfdG9fY2xvc2luZ19zZXFuby0+KCRvdXRlcl9zZXFubykgLQogICAgICAgICAgICAgICAgICAkbGVuZ3RoX3RvX2Nsb3Npbmdfc2Vxbm8tPigkaW5uZXJfc2Vxbm8pOwoKICAgICAgICAgICAgICAgICRsZW5fb3BlbiAgKz0gJGRsZW5fb3BlbmluZzsKICAgICAgICAgICAgICAgICRsZW5fY2xvc2UgKz0gJGRsZW5fY2xvc2luZzsKCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRyd2VsZF9sZW5fbGVmdF9jbG9zaW5nLT57JG91dGVyX3NlcW5vfSAgPSAkbGVuX2Nsb3NlOwogICAgICAgICAgICAkcndlbGRfbGVuX3JpZ2h0X29wZW5pbmctPnskb3V0ZXJfc2Vxbm99ID0gJGxlbl9vcGVuOwoKICAgICAgICAgICAgJGlubmVyX3NlcW5vID0gJG91dGVyX3NlcW5vOwogICAgICAgIH0KCiAgICAgICAgIyBzd2VlcCBmcm9tIG91dGVyIHRvIGlubmVyCiAgICAgICAgZm9yZWFjaCBteSAkc2Vxbm8gKCByZXZlcnNlIEB7JGl0ZW19ICkgewogICAgICAgICAgICAkcndlbGRfbGVuX3JpZ2h0X2Nsb3NpbmctPnskc2Vxbm99ID0KICAgICAgICAgICAgICAkbGVuX2Nsb3NlIC0gJHJ3ZWxkX2xlbl9sZWZ0X2Nsb3NpbmctPnskc2Vxbm99OwogICAgICAgICAgICAkcndlbGRfbGVuX2xlZnRfb3BlbmluZy0+eyRzZXFub30gPQogICAgICAgICAgICAgICRsZW5fb3BlbiAtICRyd2VsZF9sZW5fcmlnaHRfb3BlbmluZy0+eyRzZXFub307CiAgICAgICAgfQogICAgfQoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMgREVCVUcKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgIGlmICgwKSB7CiAgICAgICAgbXkgJGNvdW50ID0gMDsKICAgICAgICBsb2NhbCAkIiA9ICcpKCc7CiAgICAgICAgZm9yZWFjaCBteSAkd2VsZCAoQHdlbGRzKSB7CiAgICAgICAgICAgIHByaW50ICJcbldlbGQgbnVtYmVyICRjb3VudCBoYXMgc2VxOiAoQHskd2VsZH0pXG4iOwogICAgICAgICAgICBmb3JlYWNoIG15ICRzZXEgKCBAeyR3ZWxkfSApIHsKICAgICAgICAgICAgICAgIHByaW50IDw8RU9NOwoJc2VxPSRzZXEKICAgICAgICBsZWZ0X29wZW5pbmc9JHJ3ZWxkX2xlbl9sZWZ0X29wZW5pbmctPnskc2VxfTsKICAgICAgICByaWdodF9vcGVuaW5nPSRyd2VsZF9sZW5fcmlnaHRfb3BlbmluZy0+eyRzZXF9OwogICAgICAgIGxlZnRfY2xvc2luZz0kcndlbGRfbGVuX2xlZnRfY2xvc2luZy0+eyRzZXF9OwogICAgICAgIHJpZ2h0X2Nsb3Npbmc9JHJ3ZWxkX2xlbl9yaWdodF9jbG9zaW5nLT57JHNlcX07CkVPTQogICAgICAgICAgICB9CgogICAgICAgICAgICAkY291bnQrKzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiB3ZWxkX25lc3RlZF9xdW90ZXMgewoKICAgICMgQ2FsbGVkIG9uY2UgcGVyIGZpbGUgZm9yIG9wdGlvbiAnLS13ZWxkLW5lc3RlZC1jb250YWluZXJzJy4gVGhpcwogICAgIyBkb2VzIHdlbGRpbmcgb24gcXcgcXVvdGVzLgoKICAgIG15ICRzZWxmID0gc2hpZnQ7CgogICAgIyBTZWUgaWYgcXVvdGVzIGFyZSBleGNsdWRlZCBmcm9tIHdlbGRpbmcKICAgIG15ICRyZmxhZ3MgPSAkd2VsZF9uZXN0ZWRfZXhjbHVzaW9uX3J1bGVzeydxJ307CiAgICByZXR1cm4gaWYgKCBkZWZpbmVkKCRyZmxhZ3MpICYmIGRlZmluZWQoICRyZmxhZ3MtPlsxXSApICk7CgogICAgbXkgJHJ3ZWxkX2xlbl9sZWZ0X2Nsb3NpbmcgID0gJHNlbGYtPltfcndlbGRfbGVuX2xlZnRfY2xvc2luZ19dOwogICAgbXkgJHJ3ZWxkX2xlbl9yaWdodF9vcGVuaW5nID0gJHNlbGYtPltfcndlbGRfbGVuX3JpZ2h0X29wZW5pbmdfXTsKCiAgICBteSAkckxMID0gJHNlbGYtPltfckxMX107CiAgICByZXR1cm4gdW5sZXNzICggZGVmaW5lZCgkckxMKSAmJiBAeyRyTEx9ICk7CiAgICBteSAkTnVtID0gQHskckxMfTsKCiAgICBteSAkS19vcGVuaW5nX2NvbnRhaW5lciA9ICRzZWxmLT5bX0tfb3BlbmluZ19jb250YWluZXJfXTsKICAgIG15ICRLX2Nsb3NpbmdfY29udGFpbmVyID0gJHNlbGYtPltfS19jbG9zaW5nX2NvbnRhaW5lcl9dOwogICAgbXkgJHJsaW5lcyAgICAgICAgICAgICAgPSAkc2VsZi0+W19ybGluZXNfXTsKCiAgICBteSAkaXNfc2luZ2xlX3F1b3RlID0gc3ViIHsKICAgICAgICBteSAoICRLYmVnLCAkS2VuZCwgJHF1b3RlX3R5cGUgKSA9IEBfOwogICAgICAgIGZvcmVhY2ggbXkgJEsgKCAkS2JlZyAuLiAkS2VuZCApIHsKICAgICAgICAgICAgbXkgJHRlc3RfdHlwZSA9ICRyTEwtPlskS10tPltfVFlQRV9dOwogICAgICAgICAgICBuZXh0ICAgaWYgKCAkdGVzdF90eXBlIGVxICdiJyApOwogICAgICAgICAgICByZXR1cm4gaWYgKCAkdGVzdF90eXBlIG5lICRxdW90ZV90eXBlICk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAxOwogICAgfTsKCiAgICBteSAkZXhjZXNzX2xpbmVfbGVuZ3RoX0sgPSBzdWIgewogICAgICAgIG15ICggJEtLLCAkS3Rlc3QgKSA9IEBfOwoKICAgICAgICAjIHdoYXQgaXMgdGhlIGV4Y2VzcyBsZW5ndGggaWYgd2UgYWRkIHRva2VuICRLdGVzdCB0byB0aGUgbGluZSB3aXRoICRLSz8KICAgICAgICBteSAkaWxpbmUgICAgPSAkckxMLT5bJEtLXS0+W19MSU5FX0lOREVYX107CiAgICAgICAgbXkgJHJLX3JhbmdlID0gJHJsaW5lcy0+WyRpbGluZV0tPntfcktfcmFuZ2V9OwogICAgICAgIG15ICggJEtmaXJzdCwgJEtsYXN0ICkgPSBAeyRyS19yYW5nZX07CiAgICAgICAgbXkgJHN0YXJ0aW5nX2xlbnRvdCA9CiAgICAgICAgICAkS2ZpcnN0IDw9IDAgPyAwIDogJHJMTC0+WyAkS2ZpcnN0IC0gMSBdLT5bX0NVTVVMQVRJVkVfTEVOR1RIX107CiAgICAgICAgbXkgJHN0YXJ0aW5nX2luZGVudCA9IDA7CiAgICAgICAgbXkgJGxlbmd0aF90b2wgICAgICA9IDE7CiAgICAgICAgaWYgKCAhJHJPcHRzX3ZhcmlhYmxlX21heGltdW1fbGluZV9sZW5ndGggKSB7CiAgICAgICAgICAgIG15ICRsZXZlbCA9ICRyTEwtPlskS2ZpcnN0XS0+W19MRVZFTF9dOwogICAgICAgICAgICAkc3RhcnRpbmdfaW5kZW50ID0gJHJPcHRzX2luZGVudF9jb2x1bW5zICogJGxldmVsOwogICAgICAgIH0KCiAgICAgICAgbXkgJGxlbmd0aCA9ICRyTEwtPlskS3Rlc3RdLT5bX0NVTVVMQVRJVkVfTEVOR1RIX10gLSAkc3RhcnRpbmdfbGVudG90OwogICAgICAgIG15ICRleGNlc3NfbGVuZ3RoID0KICAgICAgICAgICRzdGFydGluZ19pbmRlbnQgKyAkbGVuZ3RoICsgJGxlbmd0aF90b2wgLSAkck9wdHNfbWF4aW11bV9saW5lX2xlbmd0aDsKICAgICAgICByZXR1cm4gJGV4Y2Vzc19sZW5ndGg7CiAgICB9OwoKICAgICMgbG9vayBmb3Igc2luZ2xlIHF3IHF1b3RlcyBuZXN0ZWQgaW4gY29udGFpbmVycwogICAgbXkgJEtORVhUID0gJHNlbGYtPltfS19maXJzdF9zZXFfaXRlbV9dOwogICAgd2hpbGUgKCBkZWZpbmVkKCRLTkVYVCkgKSB7CiAgICAgICAgbXkgJEtLID0gJEtORVhUOwogICAgICAgICRLTkVYVCA9ICRyTEwtPlskS05FWFRdLT5bX0tORVhUX1NFUV9JVEVNX107CiAgICAgICAgbXkgJHJ0b2tlbl92YXJzID0gJHJMTC0+WyRLS107CiAgICAgICAgbXkgJG91dGVyX3NlcW5vID0gJHJ0b2tlbl92YXJzLT5bX1RZUEVfU0VRVUVOQ0VfXTsKICAgICAgICBpZiAoICEkb3V0ZXJfc2Vxbm8gKSB7CiAgICAgICAgICAgIG5leHQgaWYgKCAkS0sgPT0gMCApOyAgICAjIGZpcnN0IHRva2VuIGluIGZpbGUgbWF5IG5vdCBiZSBjb250YWluZXIKCiAgICAgICAgICAgICMgQSBmYXVsdCBoZXJlIGltcGxpZXMgdGhhdCBhbiBlcnJvciB3YXMgbWFkZSBpbiB0aGUgbGl0dGxlIGxvb3AgYXQKICAgICAgICAgICAgIyB0aGUgYm90dG9tIG9mIHN1YiAncmVzcGFjZV90b2tlbnMnIHdoaWNoIHNldCB0aGUgdmFsdWVzIG9mCiAgICAgICAgICAgICMgX0tORVhUX1NFUV9JVEVNXy4gIE9yIGFuIGVycm9yIGhhcyBiZWVuIGludHJvZHVjZWQgaW4gdGhlCiAgICAgICAgICAgICMgbG9vcCBjb250cm9sIGxpbmVzIGFib3ZlLgogICAgICAgICAgICBGYXVsdCgic2VxdWVuY2UgPSAkb3V0ZXJfc2Vxbm8gbm90IGRlZmluZWQgYXQgSz0kS0siKTsKICAgICAgICB9CgogICAgICAgIG15ICR0b2tlbiA9ICRydG9rZW5fdmFycy0+W19UT0tFTl9dOwogICAgICAgIGlmICggJGlzX29wZW5pbmdfdG9rZW57JHRva2VufSApIHsKCiAgICAgICAgICAgICMgc2VlIGlmIHRoZSBuZXh0IHRva2VuIGlzIGEgcXVvdGUgb2Ygc29tZSB0eXBlCiAgICAgICAgICAgIG15ICRLbiA9ICRLSyArIDE7CiAgICAgICAgICAgICRLbiArPSAxCiAgICAgICAgICAgICAgaWYgKCAkS24gPCAkTnVtICYmICRyTEwtPlskS25dLT5bX1RZUEVfXSBlcSAnYicgKTsKICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCAkS24gPCAkTnVtICk7CgogICAgICAgICAgICBteSAkbmV4dF90b2tlbiA9ICRyTEwtPlskS25dLT5bX1RPS0VOX107CiAgICAgICAgICAgIG15ICRuZXh0X3R5cGUgID0gJHJMTC0+WyRLbl0tPltfVFlQRV9dOwogICAgICAgICAgICBuZXh0CiAgICAgICAgICAgICAgdW5sZXNzICggKCAkbmV4dF90eXBlIGVxICdxJyB8fCAkbmV4dF90eXBlIGVxICdRJyApCiAgICAgICAgICAgICAgICAmJiAkbmV4dF90b2tlbiA9fiAvXnEvICk7CgogICAgICAgICAgICAjIFRoZSB0b2tlbiBiZWZvcmUgdGhlIGNsb3NpbmcgY29udGFpbmVyIG11c3QgYWxzbyBiZSBhIHF1b3RlCiAgICAgICAgICAgIG15ICRLX2Nsb3NpbmcgPSAkS19jbG9zaW5nX2NvbnRhaW5lci0+eyRvdXRlcl9zZXFub307CiAgICAgICAgICAgIG15ICRLdF9lbmQgICAgPSAkc2VsZi0+S19wcmV2aW91c19ub25ibGFuaygkS19jbG9zaW5nKTsKICAgICAgICAgICAgbmV4dCB1bmxlc3MgJHJMTC0+WyRLdF9lbmRdLT5bX1RZUEVfXSBlcSAkbmV4dF90eXBlOwoKICAgICAgICAgICAgIyBEbyBub3Qgd2VsZCB0byBzaW5nbGUtbGluZSBxdW90ZXMuIE5vdGhpbmcgaXMgZ2FpbmVkLCBhbmQgaXQgbWF5CiAgICAgICAgICAgICMgbG9vayBiYWQuCiAgICAgICAgICAgIG5leHQgaWYgKCAkS3RfZW5kID09ICRLbiApOwoKICAgICAgICAgICAgIyBPbmx5IHdlbGQgdG8gcXVvdGVzIGRlbGltaXRlZCB3aXRoIGNvbnRhaW5lciB0b2tlbnMuIFRoaXMgaXMKICAgICAgICAgICAgIyBiZWNhdXNlIHdlbGRpbmcgdG8gYXJiaXRyYXJ5IHF1b3RlIGRlbGltaXRlcnMgY2FuIHByb2R1Y2UgY29kZQogICAgICAgICAgICAjIHdoaWNoIGlzIGxlc3MgcmVhZGFibGUgdGhhbiB3aXRob3V0IHdlbGRpbmcuCiAgICAgICAgICAgIG15ICRjbG9zaW5nX2RlbGltaXRlciA9IHN1YnN0ciggJHJMTC0+WyRLdF9lbmRdLT5bX1RPS0VOX10sIC0xLCAxICk7CiAgICAgICAgICAgIG5leHQKICAgICAgICAgICAgICB1bmxlc3MgKCAkaXNfY2xvc2luZ190b2tlbnskY2xvc2luZ19kZWxpbWl0ZXJ9CiAgICAgICAgICAgICAgICB8fCAkY2xvc2luZ19kZWxpbWl0ZXIgZXEgJz4nICk7CgogICAgICAgICAgICAjIE5vdyBtYWtlIHN1cmUgdGhhdCB0aGVyZSBpcyBqdXN0IGEgc2luZ2xlIHF1b3RlIGluIHRoZSBjb250YWluZXIKICAgICAgICAgICAgbmV4dAogICAgICAgICAgICAgIHVubGVzcyAoICRpc19zaW5nbGVfcXVvdGUtPiggJEtuICsgMSwgJEt0X2VuZCAtIDEsICRuZXh0X3R5cGUgKSApOwoKICAgICAgICAgICAgIyBJZiB3ZWxkZWQsIHRoZSBsaW5lIG11c3Qgbm90IGV4Y2VlZCBhbGxvd2VkIGxpbmUgbGVuZ3RoCiAgICAgICAgICAgICMgQXNzdW1lIG9sZCBsaW5lIGJyZWFrcyBmb3IgdGhpcyBlc3RpbWF0ZS4KICAgICAgICAgICAgbmV4dCBpZiAoICRleGNlc3NfbGluZV9sZW5ndGhfSy0+KCAkS0ssICRLbiApID4gMCApOwoKICAgICAgICAgICAgIyBDaGVjayB3ZWxkIGV4Y2x1c2lvbiBydWxlcyBmb3Igb3V0ZXIgY29udGFpbmVyCiAgICAgICAgICAgIG15ICRpc19sZWFkaW5nID0gISRzZWxmLT5bX3J3ZWxkX2xlbl9sZWZ0X29wZW5pbmdfXS0+eyRvdXRlcl9zZXFub307CiAgICAgICAgICAgIG5leHQgaWYgKCAkc2VsZi0+aXNfZXhjbHVkZWRfd2VsZCggJEtLLCAkaXNfbGVhZGluZyApICk7CgogICAgICAgICAgICAjIE9LIHRvIHdlbGQKICAgICAgICAgICAgIyBGSVhNRTogQXJlIHRoZXNlIGFsd2F5cyBjb3JyZWN0PwogICAgICAgICAgICAkcndlbGRfbGVuX2xlZnRfY2xvc2luZy0+eyRvdXRlcl9zZXFub30gID0gMTsKICAgICAgICAgICAgJHJ3ZWxkX2xlbl9yaWdodF9vcGVuaW5nLT57JG91dGVyX3NlcW5vfSA9IDI7CgogICAgICAgICAgICAjIFVuZG8gb25lIGluZGVudGF0aW9uIGxldmVsIGlmIGFuIGV4dHJhIGxldmVsIHdhcyBhZGRlZCB0byB0aGlzCiAgICAgICAgICAgICMgbXVsdGlsaW5lIHF1b3RlCiAgICAgICAgICAgIG15ICRxd19zZXFubyA9ICRzZWxmLT5bX3JzdGFydGluZ19tdWx0aWxpbmVfcXdfc2Vxbm9fYnlfS19dLT57JEtufTsKICAgICAgICAgICAgaWYgKCAgICRxd19zZXFubwogICAgICAgICAgICAgICAgJiYgJHNlbGYtPltfcm11bHRpbGluZV9xd19oYXNfZXh0cmFfbGV2ZWxfXS0+eyRxd19zZXFub30gKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRLICggJEtuICsgMSAuLiAkS3RfZW5kIC0gMSApIHsKICAgICAgICAgICAgICAgICAgICAkckxMLT5bJEtdLT5bX0xFVkVMX10gLT0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRyTEwtPlskS25dLT5bX0NJX0xFVkVMX10gICAgID0gMDsKICAgICAgICAgICAgICAgICRyTEwtPlskS3RfZW5kXS0+W19DSV9MRVZFTF9dID0gMDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB1bmRvIENJIGZvciBvdGhlciB3ZWxkZWQgcXVvdGVzCiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJEsgKCAkS24gLi4gJEt0X2VuZCApIHsKICAgICAgICAgICAgICAgICAgICAkckxMLT5bJEtdLT5bX0NJX0xFVkVMX10gPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIENoYW5nZSB0aGUgbGV2ZWwgb2YgYSBjbG9zaW5nIHF3IHRva2VuIHRvIGJlIHRoYXQgb2YgdGhlIG91dGVyCiAgICAgICAgICAgICMgY29udGFpbmluZyB0b2tlbi4gVGhpcyB3aWxsIGFsbG93IC1scCBpbmRlbnRhdGlvbiB0byBmdW5jdGlvbgogICAgICAgICAgICAjIGNvcnJlY3RseSBpbiB0aGUgdmVydGljYWwgYWxpZ25lci4KICAgICAgICAgICAgJHJMTC0+WyRLdF9lbmRdLT5bX0xFVkVMX10gPSAkckxMLT5bJEtfY2xvc2luZ10tPltfTEVWRUxfXTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiB3ZWxkX2xlbl9sZWZ0IHsKCiAgICBteSAoICRzZWxmLCAkc2Vxbm8sICR0eXBlX29yX3RvayApID0gQF87CgogICAgIyBHaXZlbiB0aGUgc2VxdWVuY2UgbnVtYmVyIG9mIGEgdG9rZW4sIGFuZCB0aGUgdG9rZW4gb3IgaXRzIHR5cGUsCiAgICAjIHJldHVybiB0aGUgbGVuZ3RoIG9mIGFueSB3ZWxkIHRvIGl0cyBsZWZ0CgogICAgIyBxdWljayBjaGVjawogICAgcmV0dXJuIDAKICAgICAgdW5sZXNzICggJHRvdGFsX3dlbGRfY291bnQKICAgICAgICAmJiAkc2Vxbm8KICAgICAgICAmJiAkc2VsZi0+W19yaXNfd2VsZGVkX3NlcW5vX10tPnskc2Vxbm99ICk7CgogICAgbXkgJHdlbGRfbGVuOwogICAgaWYgKCAkaXNfY2xvc2luZ190eXBleyR0eXBlX29yX3Rva30gKSB7CiAgICAgICAgJHdlbGRfbGVuID0gJHNlbGYtPltfcndlbGRfbGVuX2xlZnRfY2xvc2luZ19dLT57JHNlcW5vfTsKICAgIH0KICAgIGVsc2lmICggJGlzX29wZW5pbmdfdHlwZXskdHlwZV9vcl90b2t9ICkgewogICAgICAgICR3ZWxkX2xlbiA9ICRzZWxmLT5bX3J3ZWxkX2xlbl9sZWZ0X29wZW5pbmdfXS0+eyRzZXFub307CiAgICB9CiAgICAkd2VsZF9sZW4gPSAwIHVubGVzcyAoIGRlZmluZWQoJHdlbGRfbGVuKSApOwogICAgcmV0dXJuICR3ZWxkX2xlbjsKfQoKc3ViIHdlbGRfbGVuX3JpZ2h0IHsKCiAgICBteSAoICRzZWxmLCAkc2Vxbm8sICR0eXBlX29yX3RvayApID0gQF87CgogICAgIyBHaXZlbiB0aGUgc2VxdWVuY2UgbnVtYmVyIG9mIGEgdG9rZW4sIGFuZCB0aGUgdG9rZW4gb3IgaXRzIHR5cGUsCiAgICAjIHJldHVybiB0aGUgbGVuZ3RoIG9mIGFueSB3ZWxkIHRvIGl0cyByaWdodAoKICAgICMgcXVpY2sgY2hlY2sKICAgIHJldHVybiAwCiAgICAgIHVubGVzcyAoICR0b3RhbF93ZWxkX2NvdW50CiAgICAgICAgJiYgJHNlcW5vCiAgICAgICAgJiYgJHNlbGYtPltfcmlzX3dlbGRlZF9zZXFub19dLT57JHNlcW5vfSApOwoKICAgIG15ICR3ZWxkX2xlbjsKICAgIGlmICggJGlzX2Nsb3NpbmdfdHlwZXskdHlwZV9vcl90b2t9ICkgewogICAgICAgICR3ZWxkX2xlbiA9ICRzZWxmLT5bX3J3ZWxkX2xlbl9yaWdodF9jbG9zaW5nX10tPnskc2Vxbm99OwogICAgfQogICAgZWxzaWYgKCAkaXNfb3BlbmluZ190eXBleyR0eXBlX29yX3Rva30gKSB7CiAgICAgICAgJHdlbGRfbGVuID0gJHNlbGYtPltfcndlbGRfbGVuX3JpZ2h0X29wZW5pbmdfXS0+eyRzZXFub307CiAgICB9CiAgICAkd2VsZF9sZW4gPSAwIHVubGVzcyAoIGRlZmluZWQoJHdlbGRfbGVuKSApOwogICAgcmV0dXJuICR3ZWxkX2xlbjsKfQoKc3ViIHdlbGRfbGVuX3JpZ2h0X3RvX2dvIHsKICAgIG15ICggJHNlbGYsICRpICkgPSBAXzsKCiAgICAjIEdpdmVuIHRoZSBpbmRleCBvZiBhIHRva2VuIGluIHRoZSAndG9fZ28nIGFycmF5IHJldHVybiB0aGUgbGVuZ3RoIG9mIGFueQogICAgIyB3ZWxkIHRvIGl0cyByaWdodC4KCiAgICAjIEJhY2sgdXAgYXQgYSBibGFuay4KICAgIHJldHVybiAwIHVubGVzcyAoICR0b3RhbF93ZWxkX2NvdW50ICYmICRpID49IDAgKTsKICAgIGlmICggJGkgPiAwICYmICR0eXBlc190b19nb1skaV0gZXEgJ2InICkgeyAkaS0tIH0KCiAgICBteSAkc2Vxbm8gPSAkdHlwZV9zZXF1ZW5jZV90b19nb1skaV07CgogICAgcmV0dXJuIDAgdW5sZXNzICggJHNlcW5vICYmICRzZWxmLT5bX3Jpc193ZWxkZWRfc2Vxbm9fXS0+eyRzZXFub30gKTsKCiAgICBteSAkd2VsZF9sZW47CiAgICBteSAkdHlwZV9vcl90b2sgPSAkdHlwZXNfdG9fZ29bJGldOwogICAgaWYgKCAkaXNfY2xvc2luZ190eXBleyR0eXBlX29yX3Rva30gKSB7CiAgICAgICAgJHdlbGRfbGVuID0gJHNlbGYtPltfcndlbGRfbGVuX3JpZ2h0X2Nsb3NpbmdfXS0+eyRzZXFub307CiAgICB9CiAgICBlbHNpZiAoICRpc19vcGVuaW5nX3R5cGV7JHR5cGVfb3JfdG9rfSApIHsKICAgICAgICAkd2VsZF9sZW4gPSAkc2VsZi0+W19yd2VsZF9sZW5fcmlnaHRfb3BlbmluZ19dLT57JHNlcW5vfTsKICAgIH0KICAgICR3ZWxkX2xlbiA9IDAgdW5sZXNzICggZGVmaW5lZCgkd2VsZF9sZW4pICk7CiAgICByZXR1cm4gJHdlbGRfbGVuOwp9CgpzdWIgbWFya19zaG9ydF9uZXN0ZWRfYmxvY2tzIHsKCiAgICAjIFRoaXMgcm91dGluZSBsb29rcyBhdCB0aGUgZW50aXJlIGZpbGUgYW5kIG1hcmtzIGFueSBzaG9ydCBuZXN0ZWQgYmxvY2tzCiAgICAjIHdoaWNoIHNob3VsZCBub3QgYmUgYnJva2VuLiAgVGhlIHJlc3VsdHMgYXJlIHN0b3JlZCBpbiB0aGUgaGFzaAogICAgIyAgICAgJHJzaG9ydF9uZXN0ZWQtPnskdHlwZV9zZXF1ZW5jZX0KICAgICMgd2hpY2ggd2lsbCBiZSB0cnVlIGlmIHRoZSBjb250YWluZXIgc2hvdWxkIHJlbWFpbiBpbnRhY3QuCiAgICAjCiAgICAjIEZvciBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIGxpbmU6CgogICAgIyAgIHN1YiBjeHRfdHdvIHsgc29ydCB7ICRhIDw9PiAkYiB9IHRlc3RfaWZfbGlzdCgpIH0KCiAgICAjIFRoZSAnc29ydCcgYmxvY2sgaXMgc2hvcnQgYW5kIG5lc3RlZCB3aXRoaW4gYW4gb3V0ZXIgc3ViIGJsb2NrLgogICAgIyBOb3JtYWxseSwgdGhlIGV4aXN0YW5jZSBvZiB0aGUgJ3NvcnQnIGJsb2NrIHdpbGwgZm9yY2UgdGhlIHN1YiBibG9jayB0bwogICAgIyBicmVhayBvcGVuLCBidXQgdGhpcyBpcyBub3QgYWx3YXlzIGRlc2lyYWJsZS4gSGVyZSB3ZSB3aWxsIHNldCBhIGZsYWcgZm9yCiAgICAjIHRoZSBzb3J0IGJsb2NrIHRvIHByZXZlbnQgdGhpcy4gIFRvIGdpdmUgdGhlIHVzZXIgY29udHJvbCwgd2Ugd2lsbAogICAgIyBmb2xsb3cgdGhlIGlucHV0IGZpbGUgZm9ybWF0dGluZy4gIElmIGVpdGhlciBvZiB0aGUgYmxvY2tzIGlzIGJyb2tlbiBpbgogICAgIyB0aGUgaW5wdXQgZmlsZSB0aGVuIHdlIHdpbGwgYWxsb3cgaXQgdG8gcmVtYWluIGJyb2tlbi4gT3RoZXJ3aXNlIHdlIHdpbGwKICAgICMgc2V0IGEgZmxhZyB0byBrZWVwIGl0IHRvZ2V0aGVyIGluIGxhdGVyIGZvcm1hdHRpbmcgc3RlcHMuCgogICAgIyBUaGUgZmxhZyB3aGljaCBpcyBzZXQgaGVyZSB3aWxsIGJlIGNoZWNrZWQgaW4gdHdvIHBsYWNlczoKICAgICMgJ3N1YiBwcm9jZXNzX2xpbmVfb2ZfQ09ERScgYW5kICdzdWIgc3RhcnRpbmdfb25lX2xpbmVfYmxvY2snCgogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIHJldHVybiBpZiAkck9wdHMtPnsnaW5kZW50LW9ubHknfTsKCiAgICBteSAkckxMID0gJHNlbGYtPltfckxMX107CiAgICByZXR1cm4gdW5sZXNzICggZGVmaW5lZCgkckxMKSAmJiBAeyRyTEx9ICk7CgogICAgcmV0dXJuIHVubGVzcyAoICRyT3B0cy0+eydvbmUtbGluZS1ibG9jay1uZXN0aW5nJ30gKTsKCiAgICBteSAkS19vcGVuaW5nX2NvbnRhaW5lciA9ICRzZWxmLT5bX0tfb3BlbmluZ19jb250YWluZXJfXTsKICAgIG15ICRLX2Nsb3NpbmdfY29udGFpbmVyID0gJHNlbGYtPltfS19jbG9zaW5nX2NvbnRhaW5lcl9dOwogICAgbXkgJHJicmVha19jb250YWluZXIgICAgPSAkc2VsZi0+W19yYnJlYWtfY29udGFpbmVyX107CiAgICBteSAkcnNob3J0X25lc3RlZCAgICAgICA9ICRzZWxmLT5bX3JzaG9ydF9uZXN0ZWRfXTsKICAgIG15ICRybGluZXMgICAgICAgICAgICAgID0gJHNlbGYtPltfcmxpbmVzX107CgogICAgIyBWYXJpYWJsZXMgbmVlZGVkIGZvciBlc3RpbWF0aW5nIGxpbmUgbGVuZ3RocwogICAgbXkgJHN0YXJ0aW5nX2luZGVudDsKICAgIG15ICRzdGFydGluZ19sZW50b3Q7CiAgICBteSAkbGVuZ3RoX3RvbCA9IDE7CgogICAgbXkgJGV4Y2Vzc19sZW5ndGhfdG9fSyA9IHN1YiB7CiAgICAgICAgbXkgKCRLKSA9IEBfOwoKICAgICAgICAjIEVzdGltYXRlIHRoZSBsZW5ndGggZnJvbSB0aGUgbGluZSBzdGFydCB0byBhIGdpdmVuIHRva2VuCiAgICAgICAgbXkgJGxlbmd0aCA9ICRzZWxmLT5jdW11bGF0aXZlX2xlbmd0aF9iZWZvcmVfSygkSykgLSAkc3RhcnRpbmdfbGVudG90OwogICAgICAgIG15ICRleGNlc3NfbGVuZ3RoID0KICAgICAgICAgICRzdGFydGluZ19pbmRlbnQgKyAkbGVuZ3RoICsgJGxlbmd0aF90b2wgLSAkck9wdHNfbWF4aW11bV9saW5lX2xlbmd0aDsKICAgICAgICByZXR1cm4gKCRleGNlc3NfbGVuZ3RoKTsKICAgIH07CgogICAgbXkgJGlzX2Jyb2tlbl9ibG9jayA9IHN1YiB7CgogICAgICAgICMgYSBibG9jayBpcyBicm9rZW4gaWYgdGhlIGlucHV0IGxpbmUgbnVtYmVycyBvZiB0aGUgYnJhY2VzIGRpZmZlcgogICAgICAgIG15ICgkc2Vxbm8pID0gQF87CiAgICAgICAgbXkgJEtfb3BlbmluZyA9ICRLX29wZW5pbmdfY29udGFpbmVyLT57JHNlcW5vfTsKICAgICAgICByZXR1cm4gdW5sZXNzICggZGVmaW5lZCgkS19vcGVuaW5nKSApOwogICAgICAgIG15ICRLX2Nsb3NpbmcgPSAkS19jbG9zaW5nX2NvbnRhaW5lci0+eyRzZXFub307CiAgICAgICAgcmV0dXJuIHVubGVzcyAoIGRlZmluZWQoJEtfY2xvc2luZykgKTsKICAgICAgICByZXR1cm4gJHJicmVha19jb250YWluZXItPnskc2Vxbm99CiAgICAgICAgICB8fCAkckxMLT5bJEtfY2xvc2luZ10tPltfTElORV9JTkRFWF9dICE9CiAgICAgICAgICAkckxMLT5bJEtfb3BlbmluZ10tPltfTElORV9JTkRFWF9dOwogICAgfTsKCiAgICAjIGxvb3Agb3ZlciBhbGwgY29udGFpbmVycwogICAgbXkgQG9wZW5fYmxvY2tfc3RhY2s7CiAgICBteSAkaWxpbmUgPSAtMTsKICAgIG15ICRLTkVYVCA9ICRzZWxmLT5bX0tfZmlyc3Rfc2VxX2l0ZW1fXTsKICAgIHdoaWxlICggZGVmaW5lZCgkS05FWFQpICkgewogICAgICAgIG15ICRLSyA9ICRLTkVYVDsKICAgICAgICAkS05FWFQgPSAkckxMLT5bJEtORVhUXS0+W19LTkVYVF9TRVFfSVRFTV9dOwogICAgICAgIG15ICRydG9rZW5fdmFycyAgID0gJHJMTC0+WyRLS107CiAgICAgICAgbXkgJHR5cGVfc2VxdWVuY2UgPSAkcnRva2VuX3ZhcnMtPltfVFlQRV9TRVFVRU5DRV9dOwogICAgICAgIGlmICggISR0eXBlX3NlcXVlbmNlICkgewogICAgICAgICAgICBuZXh0IGlmICggJEtLID09IDAgKTsgICAgIyBmaXJzdCB0b2tlbiBpbiBmaWxlIG1heSBub3QgYmUgY29udGFpbmVyCgogICAgICAgICAgICAjIEEgZmF1bHQgaGVyZSBpbXBsaWVzIHRoYXQgYW4gZXJyb3Igd2FzIG1hZGUgaW4gdGhlIGxpdHRsZSBsb29wIGF0CiAgICAgICAgICAgICMgdGhlIGJvdHRvbSBvZiBzdWIgJ3Jlc3BhY2VfdG9rZW5zJyB3aGljaCBzZXQgdGhlIHZhbHVlcyBvZgogICAgICAgICAgICAjIF9LTkVYVF9TRVFfSVRFTV8uICBPciBhbiBlcnJvciBoYXMgYmVlbiBpbnRyb2R1Y2VkIGluIHRoZQogICAgICAgICAgICAjIGxvb3AgY29udHJvbCBsaW5lcyBhYm92ZS4KICAgICAgICAgICAgRmF1bHQoInNlcXVlbmNlID0gJHR5cGVfc2VxdWVuY2Ugbm90IGRlZmluZWQgYXQgSz0kS0siKTsKICAgICAgICB9CgogICAgICAgICMgV2UgYXJlIGp1c3QgbG9va2luZyBhdCBjb2RlIGJsb2NrcwogICAgICAgIG15ICR0b2tlbiA9ICRydG9rZW5fdmFycy0+W19UT0tFTl9dOwogICAgICAgIG15ICR0eXBlICA9ICRydG9rZW5fdmFycy0+W19UWVBFX107CiAgICAgICAgbmV4dCB1bmxlc3MgKCAkdHlwZSBlcSAkdG9rZW4gKTsKICAgICAgICBteSAkYmxvY2tfdHlwZSA9ICRydG9rZW5fdmFycy0+W19CTE9DS19UWVBFX107CiAgICAgICAgbmV4dCB1bmxlc3MgKCRibG9ja190eXBlKTsKCiAgICAgICAgIyBLZWVwIGEgc3RhY2sgb2YgYWxsIGFjY2VwdGFibGUgYmxvY2sgYnJhY2VzIHNlZW4uCiAgICAgICAgIyBPbmx5IGNvbnNpZGVyIGJsb2NrcyBlbnRpcmVseSBvbiBvbmUgbGluZSBzbyBkdW1wIHRoZSBzdGFjayB3aGVuIGxpbmUKICAgICAgICAjIGNoYW5nZXMuCiAgICAgICAgbXkgJGlsaW5lX2xhc3QgPSAkaWxpbmU7CiAgICAgICAgJGlsaW5lID0gJHJMTC0+WyRLS10tPltfTElORV9JTkRFWF9dOwogICAgICAgIGlmICggJGlsaW5lICE9ICRpbGluZV9sYXN0ICkgeyBAb3Blbl9ibG9ja19zdGFjayA9ICgpIH0KCiAgICAgICAgaWYgKCAkdG9rZW4gZXEgJ30nICkgewogICAgICAgICAgICBpZiAoQG9wZW5fYmxvY2tfc3RhY2spIHsgcG9wIEBvcGVuX2Jsb2NrX3N0YWNrIH0KICAgICAgICB9CiAgICAgICAgbmV4dCB1bmxlc3MgKCAkdG9rZW4gZXEgJ3snICk7CgogICAgICAgICMgYmxvY2sgbXVzdCBiZSBiYWxhbmNlZCAoYmFkIHNjcmlwdHMgbWF5IGJlIHVuYmFsYW5jZWQpCiAgICAgICAgbXkgJEtfb3BlbmluZyA9ICRLX29wZW5pbmdfY29udGFpbmVyLT57JHR5cGVfc2VxdWVuY2V9OwogICAgICAgIG15ICRLX2Nsb3NpbmcgPSAkS19jbG9zaW5nX2NvbnRhaW5lci0+eyR0eXBlX3NlcXVlbmNlfTsKICAgICAgICBuZXh0IHVubGVzcyAoIGRlZmluZWQoJEtfb3BlbmluZykgJiYgZGVmaW5lZCgkS19jbG9zaW5nKSApOwoKICAgICAgICAjIHJlcXVpcmUgdGhhdCB0aGlzIGJsb2NrIGJlIGVudGlyZWx5IG9uIG9uZSBsaW5lCiAgICAgICAgbmV4dCBpZiAoICRpc19icm9rZW5fYmxvY2stPigkdHlwZV9zZXF1ZW5jZSkgKTsKCiAgICAgICAgIyBTZWUgaWYgdGhpcyBibG9jayBmaXRzIG9uIG9uZSBsaW5lIG9mIGFsbG93ZWQgbGVuZ3RoICh3aGljaCBtYXkKICAgICAgICAjIGJlIGRpZmZlcmVudCBmcm9tIHRoZSBpbnB1dCBzY3JpcHQpCiAgICAgICAgJHN0YXJ0aW5nX2xlbnRvdCA9CiAgICAgICAgICAkS0sgPD0gMCA/IDAgOiAkckxMLT5bICRLSyAtIDEgXS0+W19DVU1VTEFUSVZFX0xFTkdUSF9dOwogICAgICAgICRzdGFydGluZ19pbmRlbnQgPSAwOwogICAgICAgIGlmICggISRyT3B0c192YXJpYWJsZV9tYXhpbXVtX2xpbmVfbGVuZ3RoICkgewogICAgICAgICAgICBteSAkbGV2ZWwgPSAkckxMLT5bJEtLXS0+W19MRVZFTF9dOwogICAgICAgICAgICAkc3RhcnRpbmdfaW5kZW50ID0gJHJPcHRzX2luZGVudF9jb2x1bW5zICogJGxldmVsOwogICAgICAgIH0KCiAgICAgICAgIyBEdW1wIHRoZSBzdGFjayBpZiBibG9jayBpcyB0b28gbG9uZyBhbmQgc2tpcCB0aGlzIGJsb2NrCiAgICAgICAgaWYgKCAkZXhjZXNzX2xlbmd0aF90b19LLT4oJEtfY2xvc2luZykgPiAwICkgewogICAgICAgICAgICBAb3Blbl9ibG9ja19zdGFjayA9ICgpOwogICAgICAgICAgICBuZXh0OwogICAgICAgIH0KCiAgICAgICAgIyBPSywgQmxvY2sgcGFzc2VzIHRlc3RzLCByZW1lbWJlciBpdAogICAgICAgIHB1c2ggQG9wZW5fYmxvY2tfc3RhY2ssICR0eXBlX3NlcXVlbmNlOwoKICAgICAgICAjIFdlIGFyZSBvbmx5IG1hcmtpbmcgbmVzdGVkIGNvZGUgYmxvY2tzLAogICAgICAgICMgc28gY2hlY2sgZm9yIGEgcHJldmlvdXMgYmxvY2sgb24gdGhlIHN0YWNrCiAgICAgICAgbmV4dCB1bmxlc3MgKCBAb3Blbl9ibG9ja19zdGFjayA+IDEgKTsKCiAgICAgICAgIyBMb29rcyBPSywgbWFyayB0aGlzIGFzIGEgc2hvcnQgbmVzdGVkIGJsb2NrCiAgICAgICAgJHJzaG9ydF9uZXN0ZWQtPnskdHlwZV9zZXF1ZW5jZX0gPSAxOwoKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIGFkanVzdF9pbmRlbnRhdGlvbl9sZXZlbHMgewoKICAgIG15ICgkc2VsZikgPSBAXzsKCiAgICAjIENhbGxlZCBvbmNlIHBlciBmaWxlIHRvIGRvIHNwZWNpYWwgaW5kZW50YXRpb24gYWRqdXN0bWVudHMuCiAgICAjIFRoZXNlIHJvdXRpbmVzIGFkanVzdCBsZXZlbHMgZWl0aGVyIGJ5IGNoYW5naW5nIF9DSV9MRVZFTF8gZGlyZWN0bHkgb3IKICAgICMgYnkgc2V0dGluZyBtb2RpZmllZCBsZXZlbHMgaW4gdGhlIGFycmF5ICRzZWxmLT5bX3JhZGp1c3RlZF9sZXZlbHNfXS4KCiAgICAjIEluaXRpYWxpemUgdGhlIGFkanVzdGVkIGxldmVscy4gVGhlc2Ugd2lsbCBiZSB0aGUgbGV2ZWxzIGFjdHVhbGx5IHVzZWQKICAgICMgZm9yIGNvbXB1dGluZyBpbmRlbnRhdGlvbi4KCiAgICAjIE5PVEU6IFRoaXMgcm91dGluZSBpcyBjYWxsZWQgYWZ0ZXIgdGhlIHdlbGQgcm91dGluZXMsIHdoaWNoIG1heSBoYXZlCiAgICAjIGFscmVhZHkgYWRqdXN0ZWQgX0xFVkVMXywgc28gd2UgYXJlIG1ha2luZyBhZGp1c3RtZW50cyBvbiB0b3Agb2YgdGhvc2UKICAgICMgbGV2ZWxzLiAgSXQgd291bGQgYmUgbXVjaCBuaWNlciB0byBoYXZlIHRoZSB3ZWxkIHJvdXRpbmVzIGFsc28gdXNlIHRoaXMKICAgICMgYWRqdXN0bWVudCwgYnV0IHRoYXQgZ2V0cyBjb21wbGljYXRlZCB3aGVuIHdlIGNvbWJpbmUgLWdudSAtd24gYW5kIGhhdmUKICAgICMgc29tZSB3ZWxkZWQgcXVvdGVzLgogICAgbXkgJHJhZGp1c3RlZF9sZXZlbHMgPSAkc2VsZi0+W19yYWRqdXN0ZWRfbGV2ZWxzX107CiAgICBteSAkckxMICAgICAgICAgICAgICA9ICRzZWxmLT5bX3JMTF9dOwogICAgZm9yZWFjaCBteSAkS0sgKCAwIC4uIEB7JHJMTH0gLSAxICkgewogICAgICAgICRyYWRqdXN0ZWRfbGV2ZWxzLT5bJEtLXSA9ICRyTEwtPlskS0tdLT5bX0xFVkVMX107CiAgICB9CgogICAgIyBGaXJzdCBzZXQgYWRqdXN0ZWQgbGV2ZWxzIGZvciBhbnkgbm9uLWluZGVudGluZyBicmFjZXMuCiAgICAkc2VsZi0+bm9uX2luZGVudGluZ19icmFjZXMoKTsKCiAgICAjIEFkanVzdCBpbmRlbnRhdGlvbiBmb3IgbGlzdCBjb250YWluZXJzCiAgICAkc2VsZi0+YWRqdXN0X2NvbnRhaW5lcl9pbmRlbnRhdGlvbigpOwoKICAgICMgU2V0IGFkanVzdGVkIGxldmVscyBmb3IgdGhlIHdoaXRlc3BhY2UgY3ljbGUgb3B0aW9uLgogICAgJHNlbGYtPndoaXRlc3BhY2VfY3ljbGVfYWRqdXN0bWVudCgpOwoKICAgICMgQWRqdXN0IGNvbnRpbnVhdGlvbiBpbmRlbnRhdGlvbiBpZiAtYmxpIGlzIHNldAogICAgJHNlbGYtPmJsaV9hZGp1c3RtZW50KCk7CgogICAgJHNlbGYtPmV4dGVuZGVkX2NpKCkKICAgICAgaWYgKCAkck9wdHMtPnsnZXh0ZW5kZWQtY29udGludWF0aW9uLWluZGVudGF0aW9uJ30gKTsKCiAgICAjIE5vdyBjbGlwIGFueSBhZGp1c3RlZCBsZXZlbHMgdG8gYmUgbm9uLW5lZ2F0aXZlCiAgICAkc2VsZi0+Y2xpcF9hZGp1c3RlZF9sZXZlbHMoKTsKCiAgICByZXR1cm47Cn0KCnN1YiBjbGlwX2FkanVzdGVkX2xldmVscyB7CgogICAgIyBSZXBsYWNlIGFueSBuZWdhdGl2ZSBhZGp1c3RlZCBsZXZlbHMgd2l0aCB6ZXJvLgogICAgIyBOZWdhdGl2ZSBsZXZlbHMgY2FuIG9jY3VyIGluIGZpbGVzIHdpdGggYnJhY2UgZXJyb3JzLgogICAgbXkgKCRzZWxmKSA9IEBfOwogICAgbXkgJHJhZGp1c3RlZF9sZXZlbHMgPSAkc2VsZi0+W19yYWRqdXN0ZWRfbGV2ZWxzX107CiAgICByZXR1cm4gdW5sZXNzIGRlZmluZWQoJHJhZGp1c3RlZF9sZXZlbHMpICYmIEB7JHJhZGp1c3RlZF9sZXZlbHN9OwogICAgZm9yZWFjaCAoIEB7JHJhZGp1c3RlZF9sZXZlbHN9ICkgeyAkXyA9IDAgaWYgKCAkXyA8IDAgKSB9CiAgICByZXR1cm47Cn0KCnN1YiBub25faW5kZW50aW5nX2JyYWNlcyB7CgogICAgIyBDYWxsZWQgb25jZSBwZXIgZmlsZSB0byBoYW5kbGUgdGhlIC0tbm9uLWluZGVudGluZy1icmFjZXMgcGFyYW1ldGVyLgogICAgIyBSZW1vdmUgaW5kZW50YXRpb24gd2l0aGluIG1hcmtlZCBicmFjZXMgaWYgcmVxdWVzdGVkCiAgICBteSAoJHNlbGYpID0gQF87CiAgICByZXR1cm4gdW5sZXNzICggJHJPcHRzLT57J25vbi1pbmRlbnRpbmctYnJhY2VzJ30gKTsKCiAgICBteSAkckxMID0gJHNlbGYtPltfckxMX107CiAgICByZXR1cm4gdW5sZXNzICggZGVmaW5lZCgkckxMKSAmJiBAeyRyTEx9ICk7CgogICAgbXkgJHJzcGVjaWFsX3NpZGVfY29tbWVudF90eXBlID0gJHNlbGYtPltfcnNwZWNpYWxfc2lkZV9jb21tZW50X3R5cGVfXTsKCiAgICBteSAkcmFkanVzdGVkX2xldmVscyA9ICRzZWxmLT5bX3JhZGp1c3RlZF9sZXZlbHNfXTsKICAgIG15ICRLbWF4ICAgICAgICAgICAgID0gQHskckxMfSAtIDE7CiAgICBteSBAc2Vxbm9fc3RhY2s7CgogICAgbXkgJGlzX25vbl9pbmRlbnRpbmdfYnJhY2UgPSBzdWIgewogICAgICAgIG15ICgkS0spID0gQF87CgogICAgICAgICMgbG9va2luZyBmb3IgYW4gb3BlbmluZyBibG9jayBicmFjZQogICAgICAgIG15ICR0b2tlbiAgICAgID0gJHJMTC0+WyRLS10tPltfVE9LRU5fXTsKICAgICAgICBteSAkYmxvY2tfdHlwZSA9ICRyTEwtPlskS0tdLT5bX0JMT0NLX1RZUEVfXTsKICAgICAgICByZXR1cm4gdW5sZXNzICggJHRva2VuIGVxICd7JyAmJiAkYmxvY2tfdHlwZSApOwoKICAgICAgICAjIGZvbGxvd2VkIGJ5IGEgY29tbWVudAogICAgICAgIG15ICRLX3NjID0gJEtLICsgMTsKICAgICAgICAkS19zYyArPSAxCiAgICAgICAgICBpZiAoICRLX3NjIDw9ICRLbWF4ICYmICRyTEwtPlskS19zY10tPltfVFlQRV9dIGVxICdiJyApOwogICAgICAgIHJldHVybiB1bmxlc3MgKCAkS19zYyA8PSAkS21heCApOwogICAgICAgIG15ICR0eXBlX3NjID0gJHJMTC0+WyRLX3NjXS0+W19UWVBFX107CiAgICAgICAgcmV0dXJuIHVubGVzcyAoICR0eXBlX3NjIGVxICcjJyApOwoKICAgICAgICAjIG9uIHRoZSBzYW1lIGxpbmUKICAgICAgICBteSAkbGluZV9pbmRleCAgICA9ICRyTEwtPlskS0tdLT5bX0xJTkVfSU5ERVhfXTsKICAgICAgICBteSAkbGluZV9pbmRleF9zYyA9ICRyTEwtPlskS19zY10tPltfTElORV9JTkRFWF9dOwogICAgICAgIHJldHVybiB1bmxlc3MgKCAkbGluZV9pbmRleF9zYyA9PSAkbGluZV9pbmRleCApOwoKICAgICAgICAjIGdldCB0aGUgc2lkZSBjb21tZW50IHRleHQKICAgICAgICBteSAkdG9rZW5fc2MgPSAkckxMLT5bJEtfc2NdLT5bX1RPS0VOX107CgogICAgICAgICMgVGhlIHBhdHRlcm4gZW5kcyBpbiBccyBidXQgd2UgaGF2ZSByZW1vdmVkIHRoZSBuZXdsaW5lLCBzbwogICAgICAgICMgd2UgYWRkZWQgaXQgYmFjayBmb3IgdGhlIG1hdGNoLiBUaGF0IHdheSB3ZSByZXF1aXJlIGFuIGV4YWN0CiAgICAgICAgIyBtYXRjaCB0byB0aGUgc3BlY2lhbCBzdHJpbmcgYW5kIGFsc28gYWxsb3cgYWRkaXRpb25hbCB0ZXh0LgogICAgICAgICR0b2tlbl9zYyAuPSAiXG4iOwogICAgICAgIG15ICRpc19uaWIgPSAoICR0b2tlbl9zYyA9fiAvJG5vbl9pbmRlbnRpbmdfYnJhY2VfcGF0dGVybi8gKTsKICAgICAgICBpZiAoJGlzX25pYikgeyAkcnNwZWNpYWxfc2lkZV9jb21tZW50X3R5cGUtPnskS19zY30gPSAnTklCJyB9CiAgICAgICAgcmV0dXJuICRpc19uaWI7CiAgICB9OwoKICAgIGZvcmVhY2ggbXkgJEtLICggMCAuLiAkS21heCApIHsKICAgICAgICBteSAkbnVtICAgPSBAc2Vxbm9fc3RhY2s7CiAgICAgICAgbXkgJHNlcW5vID0gJHJMTC0+WyRLS10tPltfVFlQRV9TRVFVRU5DRV9dOwogICAgICAgIGlmICgkc2Vxbm8pIHsKICAgICAgICAgICAgbXkgJHRva2VuID0gJHJMTC0+WyRLS10tPltfVE9LRU5fXTsKICAgICAgICAgICAgaWYgKCAkdG9rZW4gZXEgJ3snICYmICRpc19ub25faW5kZW50aW5nX2JyYWNlLT4oJEtLKSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQHNlcW5vX3N0YWNrLCAkc2Vxbm87CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkdG9rZW4gZXEgJ30nICYmIEBzZXFub19zdGFjayAmJiAkc2Vxbm9fc3RhY2tbLTFdID09ICRzZXFubyApIHsKICAgICAgICAgICAgICAgIHBvcCBAc2Vxbm9fc3RhY2s7CiAgICAgICAgICAgICAgICAkbnVtIC09IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgbmV4dCB1bmxlc3MgJG51bTsKICAgICAgICAkcmFkanVzdGVkX2xldmVscy0+WyRLS10gLT0gJG51bTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIHdoaXRlc3BhY2VfY3ljbGVfYWRqdXN0bWVudCB7CgogICAgbXkgJHNlbGYgPSBzaGlmdDsKCiAgICAjIENhbGxlZCBvbmNlIHBlciBmaWxlIHRvIGltcGxlbWVudCB0aGUgLS13aGl0ZXNwYWNlLWN5Y2xlIG9wdGlvbgogICAgbXkgJHJMTCA9ICRzZWxmLT5bX3JMTF9dOwogICAgcmV0dXJuIHVubGVzcyAoIGRlZmluZWQoJHJMTCkgJiYgQHskckxMfSApOwogICAgbXkgJHJhZGp1c3RlZF9sZXZlbHMgPSAkc2VsZi0+W19yYWRqdXN0ZWRfbGV2ZWxzX107CgogICAgbXkgJHJPcHRzX3doaXRlc3BhY2VfY3ljbGUgPSAkck9wdHMtPnsnd2hpdGVzcGFjZS1jeWNsZSd9OwogICAgaWYgKCAkck9wdHNfd2hpdGVzcGFjZV9jeWNsZSAmJiAkck9wdHNfd2hpdGVzcGFjZV9jeWNsZSA+IDAgKSB7CgogICAgICAgIG15ICRLbWF4ID0gQHskckxMfSAtIDE7CgogICAgICAgIG15ICR3aGl0ZXNwYWNlX2xhc3RfbGV2ZWwgID0gLTE7CiAgICAgICAgbXkgQHdoaXRlc3BhY2VfbGV2ZWxfc3RhY2sgPSAoKTsKICAgICAgICBteSAkbGFzdF9ub25ibGFua190eXBlICAgICA9ICdiJzsKICAgICAgICBteSAkbGFzdF9ub25ibGFua190b2tlbiAgICA9ICcnOwogICAgICAgIGZvcmVhY2ggbXkgJEtLICggMCAuLiAkS21heCApIHsKICAgICAgICAgICAgbXkgJGxldmVsX2FicyA9ICRyYWRqdXN0ZWRfbGV2ZWxzLT5bJEtLXTsKICAgICAgICAgICAgbXkgJGxldmVsICAgICA9ICRsZXZlbF9hYnM7CiAgICAgICAgICAgIGlmICggJGxldmVsX2FicyA8ICR3aGl0ZXNwYWNlX2xhc3RfbGV2ZWwgKSB7CiAgICAgICAgICAgICAgICBwb3AoQHdoaXRlc3BhY2VfbGV2ZWxfc3RhY2spOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggIUB3aGl0ZXNwYWNlX2xldmVsX3N0YWNrICkgewogICAgICAgICAgICAgICAgcHVzaCBAd2hpdGVzcGFjZV9sZXZlbF9zdGFjaywgJGxldmVsX2FiczsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRsZXZlbF9hYnMgPiAkd2hpdGVzcGFjZV9sYXN0X2xldmVsICkgewogICAgICAgICAgICAgICAgJGxldmVsID0gJHdoaXRlc3BhY2VfbGV2ZWxfc3RhY2tbLTFdICsKICAgICAgICAgICAgICAgICAgKCAkbGV2ZWxfYWJzIC0gJHdoaXRlc3BhY2VfbGFzdF9sZXZlbCApOwoKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAjIDEgVHJ5IHRvIGJyZWFrIGF0IGEgYmxvY2sgYnJhY2UKICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICRsZXZlbCA+ICRyT3B0c193aGl0ZXNwYWNlX2N5Y2xlCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ3snCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRsYXN0X25vbmJsYW5rX3Rva2VuIGVxICd7JwogICAgICAgICAgICAgICAgICAgICkKCiAgICAgICAgICAgICAgICAgICAgIyAyIFRoZW4gZWl0aGVyIGEgYnJhY2Ugb3IgYnJhY2tldAogICAgICAgICAgICAgICAgICAgIHx8ICggICAkbGV2ZWwgPiAkck9wdHNfd2hpdGVzcGFjZV9jeWNsZSArIDEKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gPX4gL15bXHtcW10kLyApCgogICAgICAgICAgICAgICAgICAgICMgMyBUaGVuIGEgcGFyZW4gdG9vCiAgICAgICAgICAgICAgICAgICAgfHwgJGxldmVsID4gJHJPcHRzX3doaXRlc3BhY2VfY3ljbGUgKyAyCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkbGV2ZWwgPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcHVzaCBAd2hpdGVzcGFjZV9sZXZlbF9zdGFjaywgJGxldmVsOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRsZXZlbCA9ICR3aGl0ZXNwYWNlX2xldmVsX3N0YWNrWy0xXTsKICAgICAgICAgICAgJHJhZGp1c3RlZF9sZXZlbHMtPlskS0tdID0gJGxldmVsOwoKICAgICAgICAgICAgJHdoaXRlc3BhY2VfbGFzdF9sZXZlbCA9ICRsZXZlbF9hYnM7CiAgICAgICAgICAgIG15ICR0eXBlICA9ICRyTEwtPlskS0tdLT5bX1RZUEVfXTsKICAgICAgICAgICAgbXkgJHRva2VuID0gJHJMTC0+WyRLS10tPltfVE9LRU5fXTsKICAgICAgICAgICAgaWYgKCAkdHlwZSBuZSAnYicgKSB7CiAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua190eXBlICA9ICR0eXBlOwogICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gPSAkdG9rZW47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBhZGp1c3RfY29udGFpbmVyX2luZGVudGF0aW9uIHsKCiAgICAjIENhbGxlZCBvbmNlIHBlciBmaWxlIHRvIGltcGxlbWVudCB0aGUgLWJiaGIqIGFuZCByZWxhdGVkIGZsYWdzOgoKICAgICMgLWJiaGJpPW4KICAgICMgLWJic2JpPW4KICAgICMgLWJicGk9bgoKICAgICMgd2hlcmU6CgogICAgIyBuPTAgIGRlZmF1bHQgaW5kZW50YXRpb24gKHVzdWFsbHkgb25lIGNpKQogICAgIyBuPTEgIG91dGRlbnQgb25lIGNpCiAgICAjIG49MiAgaW5kZW50IG9uZSBsZXZlbCAobWludXMgb25lIGNpKQogICAgIyBuPTMgIGluZGVudCBvbmUgZXh0cmEgY2kgW1RoaXMgbWF5IGJlIGRyb3BwZWRdCgogICAgbXkgKCRzZWxmKSA9IEBfOwoKICAgIHJldHVybiB1bmxlc3MgJWNvbnRhaW5lcl9pbmRlbnRhdGlvbl9vcHRpb25zOwoKICAgIG15ICRyTEwgPSAkc2VsZi0+W19yTExfXTsKICAgIHJldHVybiB1bmxlc3MgKCBkZWZpbmVkKCRyTEwpICYmIEB7JHJMTH0gKTsKCiAgICAjIE9wdGlvbiAyIG5lZWRzIHRoZSBmb2xsb3dpbmcgYXJyYXk6CiAgICBteSAkcmFkanVzdGVkX2xldmVscyA9ICRzZWxmLT5bX3JhZGp1c3RlZF9sZXZlbHNfXTsKCiAgICAjIExvb3Agb3ZlciBhbGwgb3BlbmluZyBjb250YWluZXIgdG9rZW5zCiAgICBteSAkS19vcGVuaW5nX2NvbnRhaW5lciAgPSAkc2VsZi0+W19LX29wZW5pbmdfY29udGFpbmVyX107CiAgICBteSAkcmlzX2Jyb2tlbl9jb250YWluZXIgPSAkc2VsZi0+W19yaXNfYnJva2VuX2NvbnRhaW5lcl9dOwogICAgZm9yZWFjaCBteSAkc2Vxbm8gKCBrZXlzICV7JEtfb3BlbmluZ19jb250YWluZXJ9ICkgewogICAgICAgIG15ICRLSyA9ICRLX29wZW5pbmdfY29udGFpbmVyLT57JHNlcW5vfTsKCiAgICAgICAgIyB0aGlzIHJvdXRpbmUgaXMgbm90IGZvciBjb2RlIGJsb2NrIGJyYWNlcwogICAgICAgIG15ICRibG9ja190eXBlID0gJHJMTC0+WyRLS10tPltfQkxPQ0tfVFlQRV9dOwogICAgICAgIG5leHQgaWYgKCRibG9ja190eXBlKTsKCiAgICAgICAgIyBUaGVzZSBmbGFncyBvbmx5IGFwcGx5IGlmIHRoZSBjb3JyZXNwb25kaW5nIC1iYiogZmxhZ3MKICAgICAgICAjIGhhdmUgYmVlbiBzZXQgdG8gbm9uLWRlZmF1bHQgdmFsdWVzCiAgICAgICAgbXkgJHJ0b2tlbl92YXJzID0gJHJMTC0+WyRLS107CiAgICAgICAgbXkgJHRva2VuICAgICAgID0gJHJ0b2tlbl92YXJzLT5bX1RPS0VOX107CiAgICAgICAgbXkgJGZsYWcgICAgICAgID0gJGNvbnRhaW5lcl9pbmRlbnRhdGlvbl9vcHRpb25zeyR0b2tlbn07CiAgICAgICAgbmV4dCB1bmxlc3MgKCRmbGFnKTsKCiAgICAgICAgIyBSZXF1aXJlIHByZXZpb3VzIG5vbmJsYW5rIHRvIGJlIGNlcnRhaW4gdHlwZXMgKD0gYW5kID0+KQogICAgICAgICMgTm90ZSBzaW1pbGFyIGNvZGluZyBpbiBzdWIgaW5zZXJ0X2JyZWFrc19iZWZvcmUuLi4KICAgICAgICBteSAkS3ByZXYgPSAkS0sgLSAxOwogICAgICAgIG5leHQgaWYgKCAkS3ByZXYgPCAwICk7CiAgICAgICAgbXkgJHByZXZfdHlwZSA9ICRyTEwtPlskS3ByZXZdLT5bX1RZUEVfXTsKICAgICAgICBpZiAoICRwcmV2X3R5cGUgZXEgJ2InICkgewogICAgICAgICAgICAkS3ByZXYtLTsKICAgICAgICAgICAgbmV4dCBpZiAoICRLcHJldiA8IDAgKTsKICAgICAgICAgICAgJHByZXZfdHlwZSA9ICRyTEwtPlskS3ByZXZdLT5bX1RZUEVfXTsKICAgICAgICB9CiAgICAgICAgbmV4dCB1bmxlc3MgKCAkaXNfZXF1YWxfb3JfZmF0X2NvbW1heyRwcmV2X3R5cGV9ICk7CgogICAgICAgICMgVGhpcyBpcyBvbmx5IGZvciBsaXN0IGNvbnRhaW5lcnMKICAgICAgICBuZXh0IHVubGVzcyAkc2VsZi0+aXNfbGlzdF9ieV9zZXFubygkc2Vxbm8pOwoKICAgICAgICAjIGFuZCBvbmx5IGZvciBicm9rZW4gbGlzdHMKICAgICAgICBuZXh0IHVubGVzcyAkcmlzX2Jyb2tlbl9jb250YWluZXItPnskc2Vxbm99OwoKICAgICAgICAjIE5PVEU6IFdlIGFyZSBhZGp1c3RpbmcgaW5kZW50YXRpb24gb2YgdGhlIG9wZW5pbmcgY29udGFpbmVyLiBUaGUKICAgICAgICAjIGNsb3NpbmcgY29udGFpbmVyIHdpbGwgbm9ybWFsbHkgZm9sbG93IHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgb3BlbmluZwogICAgICAgICMgY29udGFpbmVyIGF1dG9tYXRpY2FsbHksIHNvIHRoaXMgaXMgbm90IGN1cnJlbnRseSBkb25lLgogICAgICAgIG15ICRjaSA9ICRyTEwtPlskS0tdLT5bX0NJX0xFVkVMX107CiAgICAgICAgbmV4dCB1bmxlc3MgKCRjaSk7CgogICAgICAgICMgb3B0aW9uIDE6IG91dGRlbnQKICAgICAgICBpZiAoICRmbGFnID09IDEgKSB7CiAgICAgICAgICAgICRjaSAtPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBvcHRpb24gMjogaW5kZW50IG9uZSBsZXZlbAogICAgICAgIGVsc2lmICggJGZsYWcgPT0gMiApIHsKICAgICAgICAgICAgJGNpIC09IDE7CiAgICAgICAgICAgICRyYWRqdXN0ZWRfbGV2ZWxzLT5bJEtLXSArPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBvcHRpb24gMzogZm9yIHRlc3Rpbmcgb25seSwgcHJvYmFibHkgd2lsbCBiZSBkZWxldGVkCiAgICAgICAgZWxzaWYgKCAkZmxhZyA9PSAzICkgewogICAgICAgICAgICAkY2kgKz0gMTsKICAgICAgICB9CiAgICAgICAgJHJMTC0+WyRLS10tPltfQ0lfTEVWRUxfXSA9ICRjaSBpZiAoICRjaSA+PSAwICk7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBleHRlbmRlZF9jaSB7CgogICAgIyBUaGlzIHJvdXRpbmUgaW1wbGVtZW50cyB0aGUgLXhjaSAoLS1leHRlbmRlZC1jb250aW51YXRpb24taW5kZW50YXRpb24pCiAgICAjIGZsYWcuICBXZSBhZGQgQ0kgdG8gaW50ZXJpb3IgdG9rZW5zIG9mIGEgY29udGFpbmVyIHdoaWNoIGl0c2VsZiBoYXMgQ0kgYnV0CiAgICAjIG9ubHkgaWYgYSB0b2tlbiBkb2VzIG5vdCBhbHJlYWR5IGhhdmUgQ0kuCgogICAgIyBUbyBkbyB0aGlzLCB3ZSB3aWxsIGxvY2F0ZSBvcGVuaW5nIHRva2VucyB3aGljaCB0aGVtc2VsdmVzIGhhdmUKICAgICMgY29udGludWF0aW9uIGluZGVudGF0aW9uIChDSSkuICBXZSB0cmFjayB0aGVtIHdpdGggdGhlaXIgc2VxdWVuY2UKICAgICMgbnVtYmVycy4gIFRoZXNlIHNlcXVlbmNlIG51bWJlcnMgYXJlIGNhbGxlZCAnY29udHJvbGxpbmcgc2VxdWVuY2UKICAgICMgbnVtYmVycycuICBUaGV5IGFwcGx5IGNvbnRpbnVhdGlvbiBpbmRlbnRhdGlvbiB0byB0aGUgdG9rZW5zIHRoYXQgdGhleQogICAgIyBjb250YWluLiAgVGhlc2UgaW5uZXIgdG9rZW5zIHJlbWVtYmVyIHRoZWlyIGNvbnRyb2xsaW5nIHNlcXVlbmNlIG51bWJlcnMuCiAgICAjIExhdGVyLCB3aGVuIHRoZXNlIGlubmVyIHRva2VucyBhcmUgb3V0cHV0LCB0aGV5IGhhdmUgdG8gc2VlIGlmIHRoZSBvdXRwdXQKICAgICMgbGluZXMgd2l0aCB0aGVpciBjb250cm9sbGluZyB0b2tlbnMgd2VyZSBvdXRwdXQgd2l0aCBDSSBvciBub3QuICBJZiBub3QsCiAgICAjIHRoZW4gdGhleSBtdXN0IHJlbW92ZSB0aGVpciBDSSB0b28uCgogICAgIyBUaGUgY29udHJvbGxpbmcgQ0kgY29uY2VwdCB3b3JrcyBoaWVyYXJjaGljYWxseS4gIEJ1dCBDSSBpdHNlbGYgaXMgbm90CiAgICAjIGhpZXJhcmNoaWNhbDsgaXQgaXMgZWl0aGVyIG9uIG9yIG9mZi4gVGhlcmUgYXJlIHNvbWUgcmFyZSBpbnN0YW5jZXMgd2hlcmUKICAgICMgaXQgd291bGQgYmUgYmVzdCB0byBoYXZlIGhpZXJhcmNoaWNhbCBDSSB0b28sIGJ1dCBub3QgZW5vdWdoIHRvIGJlIHdvcnRoCiAgICAjIHRoZSBwcm9ncmFtbWluZyBlZmZvcnQuCgogICAgIyBUaGUgb3BlcmF0aW9ucyB0byByZW1vdmUgdW53YW50ZWQgQ0kgYXJlIGRvbmUgaW4gc3ViICd1bmRvX2NpJy4KCiAgICBteSAoJHNlbGYpID0gQF87CgogICAgbXkgJHJMTCA9ICRzZWxmLT5bX3JMTF9dOwogICAgcmV0dXJuIHVubGVzcyAoIGRlZmluZWQoJHJMTCkgJiYgQHskckxMfSApOwoKICAgIG15ICRyaXNfc2Vxbm9fY29udHJvbGxpbmdfY2kgPSAkc2VsZi0+W19yaXNfc2Vxbm9fY29udHJvbGxpbmdfY2lfXTsKICAgIG15ICRyc2Vxbm9fY29udHJvbGxpbmdfbXlfY2kgPSAkc2VsZi0+W19yc2Vxbm9fY29udHJvbGxpbmdfbXlfY2lfXTsKCiAgICAjIExvb3Agb3ZlciBhbGwgb3BlbmluZyBjb250YWluZXIgdG9rZW5zCiAgICBteSAkS19vcGVuaW5nX2NvbnRhaW5lciAgPSAkc2VsZi0+W19LX29wZW5pbmdfY29udGFpbmVyX107CiAgICBteSAkS19jbG9zaW5nX2NvbnRhaW5lciAgPSAkc2VsZi0+W19LX2Nsb3NpbmdfY29udGFpbmVyX107CiAgICBteSAkcmlzX2Jyb2tlbl9jb250YWluZXIgPSAkc2VsZi0+W19yaXNfYnJva2VuX2NvbnRhaW5lcl9dOwogICAgbXkgQHNlcW5vX3N0YWNrOwogICAgbXkgJHNlcW5vX3RvcDsKICAgIG15ICRLTEFTVDsKICAgIG15ICRLTkVYVCA9ICRzZWxmLT5bX0tfZmlyc3Rfc2VxX2l0ZW1fXTsKCiAgICB3aGlsZSAoIGRlZmluZWQoJEtORVhUKSApIHsKCiAgICAgICAgIyBGaXggYWxsIHRva2VucyB1cCB0byB0aGUgbmV4dCBzZXF1ZW5jZSBpdGVtIGlmIHdlIGFyZSBjaGFuZ2luZyBDSQogICAgICAgIGlmICgkc2Vxbm9fdG9wKSB7CiAgICAgICAgICAgIG15ICRjb3VudCA9IDA7CiAgICAgICAgICAgIGZvciAoIG15ICRLdCA9ICRLTEFTVCArIDEgOyAkS3QgPCAkS05FWFQgOyAkS3QrKyApIHsKICAgICAgICAgICAgICAgIGlmICggISRyTEwtPlskS3RdLT5bX0NJX0xFVkVMX10gKSB7CiAgICAgICAgICAgICAgICAgICAgJHJMTC0+WyRLdF0tPltfQ0lfTEVWRUxfXSA9IDE7CiAgICAgICAgICAgICAgICAgICAgJHJzZXFub19jb250cm9sbGluZ19teV9jaS0+eyRLdH0gPSAkc2Vxbm9fdG9wOwogICAgICAgICAgICAgICAgICAgICRjb3VudCsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRyaXNfc2Vxbm9fY29udHJvbGxpbmdfY2ktPnskc2Vxbm9fdG9wfSArPSAkY291bnQ7CiAgICAgICAgfQoKICAgICAgICAkS0xBU1QgPSAkS05FWFQ7CiAgICAgICAgbXkgJEtLID0gJEtORVhUOwogICAgICAgICRLTkVYVCA9ICRyTEwtPlskS05FWFRdLT5bX0tORVhUX1NFUV9JVEVNX107CgogICAgICAgIG15ICRzZXFubyAgICAgPSAkckxMLT5bJEtLXS0+W19UWVBFX1NFUVVFTkNFX107CiAgICAgICAgbXkgJEtfb3BlbmluZyA9ICRLX29wZW5pbmdfY29udGFpbmVyLT57JHNlcW5vfTsKCiAgICAgICAgIyBzZWUgaWYgd2UgaGF2ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgY29udHJvbGxpbmcgY29udGFpbmVyCiAgICAgICAgaWYgKCAkc2Vxbm9fdG9wICYmICRzZXFubyA9PSAkc2Vxbm9fdG9wICkgewogICAgICAgICAgICAkc2Vxbm9fdG9wID0gcG9wIEBzZXFub19zdGFjazsKICAgICAgICB9CgogICAgICAgICMgUGF0Y2ggdG8gZml4IHNvbWUgYmxvY2sgdHlwZXMuLi4KICAgICAgICAjIENlcnRhaW4gYmxvY2sgdHlwZXMgYXJyaXZlIGZyb20gdGhlIHRva2VuaXplciB3aXRob3V0IENJIGJ1dCBzaG91bGQKICAgICAgICAjIGhhdmUgaXQgZm9yIHRoaXMgb3B0aW9uLiAgVGhlc2UgaW5jbHVkZSBhbm9ueW1vdXMgc3VicyBhbmQKICAgICAgICAjICAgICBkbyBzb3J0IG1hcCBncmVwIGV2YWwKICAgICAgICBteSAkYmxvY2tfdHlwZSA9ICRyTEwtPlskS0tdLT5bX0JMT0NLX1RZUEVfXTsKICAgICAgICBpZiAoICRibG9ja190eXBlICYmICRpc19ibG9ja193aXRoX2NpeyRibG9ja190eXBlfSApIHsKICAgICAgICAgICAgJHJMTC0+WyRLS10tPltfQ0lfTEVWRUxfXSA9IDE7CiAgICAgICAgICAgIGlmICgkc2Vxbm9fdG9wKSB7CiAgICAgICAgICAgICAgICAkcnNlcW5vX2NvbnRyb2xsaW5nX215X2NpLT57JEtLfSA9ICRzZXFub190b3A7CiAgICAgICAgICAgICAgICAkcmlzX3NlcW5vX2NvbnRyb2xsaW5nX2NpLT57JHNlcW5vX3RvcH0rKzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBJZiB0aGlzIGRvZXMgbm90IGhhdmUgY2ksIHVwZGF0ZSBjaSBpZiBuZWNlc3NhcnkgYW5kIGNvbnRpbnVlIGxvb2tpbmcKICAgICAgICBpZiAoICEkckxMLT5bJEtLXS0+W19DSV9MRVZFTF9dICkgewogICAgICAgICAgICBpZiAoJHNlcW5vX3RvcCkgewogICAgICAgICAgICAgICAgJHJMTC0+WyRLS10tPltfQ0lfTEVWRUxfXSA9IDE7CiAgICAgICAgICAgICAgICAkcnNlcW5vX2NvbnRyb2xsaW5nX215X2NpLT57JEtLfSA9ICRzZXFub190b3A7CiAgICAgICAgICAgICAgICAkcmlzX3NlcW5vX2NvbnRyb2xsaW5nX2NpLT57JHNlcW5vX3RvcH0rKzsKICAgICAgICAgICAgfQogICAgICAgICAgICBuZXh0OwogICAgICAgIH0KCiAgICAgICAgIyBXZSBhcmUgbG9va2luZyBmb3Igb3BlbmluZyBjb250YWluZXIgdG9rZW5zIHdpdGggY2kKICAgICAgICBuZXh0IHVubGVzcyAoIGRlZmluZWQoJEtfb3BlbmluZykgJiYgJEtLID09ICRLX29wZW5pbmcgKTsKCiAgICAgICAgIyBNYWtlIHN1cmUgdGhlcmUgaXMgYSBjb3JyZXNwb25kaW5nIGNsb3NpbmcgY29udGFpbmVyCiAgICAgICAgIyAoY291bGQgYmUgbWlzc2luZyBpZiB0aGUgc2NyaXB0IGhhcyBhIGJyYWNlIGVycm9yKQogICAgICAgIG15ICRLX2Nsb3NpbmcgPSAkS19jbG9zaW5nX2NvbnRhaW5lci0+eyRzZXFub307CiAgICAgICAgbmV4dCB1bmxlc3MgZGVmaW5lZCgkS19jbG9zaW5nKTsKCiAgICAgICAgIyBSZXF1aXJlIGRpZmZlcmVudCBpbnB1dCBsaW5lcy4gVGhpcyB3aWxsIGZpbHRlciBvdXQgYSBsYXJnZSBudW1iZXIKICAgICAgICAjIG9mIHNtYWxsIGhhc2ggYnJhY2VzIGFuZCBhcnJheSBicmFja2V0cy4gIElmIHdlIGFjY2lkZW50YWxseSBmaWx0ZXIKICAgICAgICAjIG91dCBhbiBpbXBvcnRhbnQgY29udGFpbmVyLCBpdCB3aWxsIGdldCBmaXhlZCBvbiB0aGUgbmV4dCBwYXNzLgogICAgICAgIG5leHQKICAgICAgICAgIGlmICgKICAgICAgICAgICAgJHJMTC0+WyRLX29wZW5pbmddLT5bX0xJTkVfSU5ERVhfXSA9PQogICAgICAgICAgICAkckxMLT5bJEtfY2xvc2luZ10tPltfTElORV9JTkRFWF9dCiAgICAgICAgICAgICYmICggJHJMTC0+WyRLX2Nsb3NpbmddLT5bX0NVTVVMQVRJVkVfTEVOR1RIX10gLQogICAgICAgICAgICAgICAgJHJMTC0+WyRLX29wZW5pbmddLT5bX0NVTVVMQVRJVkVfTEVOR1RIX10gPgogICAgICAgICAgICAgICAgJHJPcHRzX21heGltdW1fbGluZV9sZW5ndGggKQogICAgICAgICAgKTsKCiAgICAgICAgIyBUaGlzIGJlY29tZXMgdGhlIG5leHQgY29udHJvbGxpbmcgY29udGFpbmVyCiAgICAgICAgcHVzaCBAc2Vxbm9fc3RhY2ssICRzZXFub190b3AgaWYgKCRzZXFub190b3ApOwogICAgICAgICRzZXFub190b3AgPSAkc2Vxbm87CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBibGlfYWRqdXN0bWVudCB7CgogICAgIyBDYWxsZWQgb25jZSBwZXIgZmlsZSB0byBpbXBsZW1lbnQgdGhlIC0tYnJhY2UtbGVmdC1hbmQtaW5kZW50IG9wdGlvbi4KICAgICMgSWYgLWJsaSBpcyBzZXQsIGFkZHMgb25lIGNvbnRpbnVhdGlvbiBpbmRlbnRhdGlvbiBmb3IgY2VydGFpbiBicmFjZXMKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICByZXR1cm4gdW5sZXNzICggJHJPcHRzLT57J2JyYWNlLWxlZnQtYW5kLWluZGVudCd9ICk7CiAgICBteSAkckxMID0gJHNlbGYtPltfckxMX107CiAgICByZXR1cm4gdW5sZXNzICggZGVmaW5lZCgkckxMKSAmJiBAeyRyTEx9ICk7CiAgICBteSAkcmlzX2JsaV9jb250YWluZXIgICA9ICRzZWxmLT5bX3Jpc19ibGlfY29udGFpbmVyX107CiAgICBteSAkS19vcGVuaW5nX2NvbnRhaW5lciA9ICRzZWxmLT5bX0tfb3BlbmluZ19jb250YWluZXJfXTsKICAgIG15ICRLTkVYVCAgICAgICAgICAgICAgID0gJHNlbGYtPltfS19maXJzdF9zZXFfaXRlbV9dOwoKICAgIHdoaWxlICggZGVmaW5lZCgkS05FWFQpICkgewogICAgICAgIG15ICRLSyA9ICRLTkVYVDsKICAgICAgICAkS05FWFQgPSAkckxMLT5bJEtORVhUXS0+W19LTkVYVF9TRVFfSVRFTV9dOwogICAgICAgIG15ICRibG9ja190eXBlID0gJHJMTC0+WyRLS10tPltfQkxPQ0tfVFlQRV9dOwogICAgICAgIGlmICggJGJsb2NrX3R5cGUgJiYgJGJsb2NrX3R5cGUgPX4gLyRibGlfcGF0dGVybi8gKSB7CiAgICAgICAgICAgIG15ICRzZXFubyAgICAgPSAkckxMLT5bJEtLXS0+W19UWVBFX1NFUVVFTkNFX107CiAgICAgICAgICAgIG15ICRLX29wZW5pbmcgPSAkS19vcGVuaW5nX2NvbnRhaW5lci0+eyRzZXFub307CiAgICAgICAgICAgIGlmICggZGVmaW5lZCgkS19vcGVuaW5nKSApIHsKICAgICAgICAgICAgICAgIGlmICggJEtLIGVxICRLX29wZW5pbmcgKSB7CiAgICAgICAgICAgICAgICAgICAgJHJMTC0+WyRLS10tPltfQ0lfTEVWRUxfXSsrOwogICAgICAgICAgICAgICAgICAgICRyaXNfYmxpX2NvbnRhaW5lci0+eyRzZXFub30gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHJMTC0+WyRLS10tPltfQ0lfTEVWRUxfXSA9CiAgICAgICAgICAgICAgICAgICAgICAkckxMLT5bJEtfb3BlbmluZ10tPltfQ0lfTEVWRUxfXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybjsKfQoKc3ViIGZpbmRfbXVsdGlsaW5lX3F3IHsKCiAgICBteSAkc2VsZiA9IHNoaWZ0OwoKICAgICMgTXVsdGlsaW5lIHF3IHF1b3RlcyBhcmUgbm90IHNlcXVlbmNlZCBpdGVtcyBsaWtlIGNvbnRhaW5lcnMgeyBbICgKICAgICMgYnV0IGJlaGF2ZSBpbiBzb21lIHJlc3BlY3RzIGluIGEgc2ltaWxhciB3YXkuIFNvIHRoaXMgcm91dGluZSBmaW5kcyB0aGVtCiAgICAjIGFuZCBjcmVhdGVzIGEgc2VwYXJhdGUgc2VxdWVuY2UgbnVtYmVyIHN5c3RlbSBmb3IgbGF0ZXIgdXNlLgoKICAgICMgVGhpcyBpcyBzdHJhaWdodGZvcndhcmQgYmVjYXVzZSB0aGV5IGFsd2F5cyBiZWdpbiBhdCB0aGUgZW5kIG9mIG9uZSBsaW5lCiAgICAjIGFuZCBhbmQgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxhdGVyIGxpbmUuIFRoaXMgaXMgdHJ1ZSBubyBtYXR0ZXIgaG93IHdlCiAgICAjIGZpbmFsbHkgbWFrZSBvdXIgbGluZSBicmVha3MsIHNvIHdlIGNhbiBmaW5kIHRoZW0gYmVmb3JlIGRlY2lkaW5nIG9uIG5ldwogICAgIyBsaW5lIGJyZWFrcy4KCiAgICBteSAkcnN0YXJ0aW5nX211bHRpbGluZV9xd19zZXFub19ieV9LID0ge307CiAgICBteSAkcmVuZGluZ19tdWx0aWxpbmVfcXdfc2Vxbm9fYnlfSyAgID0ge307CiAgICBteSAkcktyYW5nZV9tdWx0aWxpbmVfcXdfYnlfc2Vxbm8gICAgID0ge307CiAgICBteSAkcmNvbnRhaW5zX211bHRpbGluZV9xd19ieV9zZXFubyAgID0ge307CiAgICBteSAkcm11bHRpbGluZV9xd19oYXNfZXh0cmFfbGV2ZWwgICAgID0ge307CgogICAgbXkgJHJsaW5lcyA9ICRzZWxmLT5bX3JsaW5lc19dOwogICAgbXkgJHJMTCAgICA9ICRzZWxmLT5bX3JMTF9dOwogICAgbXkgJHF3X3NlcW5vOwogICAgbXkgJG51bV9xd19zZXFubyA9IDA7CiAgICBteSAkS19zdGFydF9tdWx0aWxpbmVfcXc7CgogICAgZm9yZWFjaCBteSAkbGluZV9vZl90b2tlbnMgKCBAeyRybGluZXN9ICkgewoKICAgICAgICBteSAkbGluZV90eXBlID0gJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdHlwZX07CiAgICAgICAgbmV4dCB1bmxlc3MgKCAkbGluZV90eXBlIGVxICdDT0RFJyApOwogICAgICAgIG15ICRyS19yYW5nZSA9ICRsaW5lX29mX3Rva2Vucy0+e19yS19yYW5nZX07CiAgICAgICAgbXkgKCAkS2ZpcnN0LCAkS2xhc3QgKSA9IEB7JHJLX3JhbmdlfTsKICAgICAgICBuZXh0IHVubGVzcyAoIGRlZmluZWQoJEtmaXJzdCkgJiYgZGVmaW5lZCgkS2xhc3QpICk7ICAgIyBza2lwIGJsYW5rIGxpbmUKICAgICAgICBpZiAoIGRlZmluZWQoJEtfc3RhcnRfbXVsdGlsaW5lX3F3KSApIHsKICAgICAgICAgICAgbXkgJHR5cGUgPSAkckxMLT5bJEtmaXJzdF0tPltfVFlQRV9dOwoKICAgICAgICAgICAgIyBzaG91bGRuJ3QgaGFwcGVuCiAgICAgICAgICAgIGlmICggJHR5cGUgbmUgJ3EnICkgewogICAgICAgICAgICAgICAgREVWRUxfTU9ERSAmJiBwcmludCBTVERFUlIgPDxFT007ClNUUkFOR0U6IHN0YXJ0ZWQgbXVsdGlsaW5lIHF3IGF0IEs9JEtfc3RhcnRfbXVsdGlsaW5lX3F3IGJ1dCBkaWRuJ3Qgc2VlIHEgcXcgYXQgSz0kS2ZpcnN0XG4iOwpFT00KICAgICAgICAgICAgICAgICRLX3N0YXJ0X211bHRpbGluZV9xdyA9IHVuZGVmOwogICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgfQogICAgICAgICAgICBteSAkS3ByZXYgID0gJHNlbGYtPktfcHJldmlvdXNfbm9uYmxhbmsoJEtmaXJzdCk7CiAgICAgICAgICAgIG15ICRLbmV4dCAgPSAkc2VsZi0+S19uZXh0X25vbmJsYW5rKCRLZmlyc3QpOwogICAgICAgICAgICBteSAkdHlwZV9tID0gZGVmaW5lZCgkS3ByZXYpID8gJHJMTC0+WyRLcHJldl0tPltfVFlQRV9dIDogJ2InOwogICAgICAgICAgICBteSAkdHlwZV9wID0gZGVmaW5lZCgkS25leHQpID8gJHJMTC0+WyRLbmV4dF0tPltfVFlQRV9dIDogJ2InOwogICAgICAgICAgICBpZiAoICR0eXBlX20gZXEgJ3EnICYmICR0eXBlX3AgbmUgJ3EnICkgewogICAgICAgICAgICAgICAgJHJlbmRpbmdfbXVsdGlsaW5lX3F3X3NlcW5vX2J5X0stPnskS2ZpcnN0fSA9ICRxd19zZXFubzsKICAgICAgICAgICAgICAgICRyS3JhbmdlX211bHRpbGluZV9xd19ieV9zZXFuby0+eyRxd19zZXFub30gPQogICAgICAgICAgICAgICAgICBbICRLX3N0YXJ0X211bHRpbGluZV9xdywgJEtmaXJzdCBdOwogICAgICAgICAgICAgICAgJEtfc3RhcnRfbXVsdGlsaW5lX3F3ID0gdW5kZWY7CiAgICAgICAgICAgICAgICAkcXdfc2Vxbm8gICAgICAgICAgICAgPSB1bmRlZjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoICFkZWZpbmVkKCRLX3N0YXJ0X211bHRpbGluZV9xdykKICAgICAgICAgICAgJiYgJHJMTC0+WyRLbGFzdF0tPltfVFlQRV9dIGVxICdxJyApCiAgICAgICAgewogICAgICAgICAgICBteSAkS3ByZXYgID0gJHNlbGYtPktfcHJldmlvdXNfbm9uYmxhbmsoJEtsYXN0KTsKICAgICAgICAgICAgbXkgJEtuZXh0ICA9ICRzZWxmLT5LX25leHRfbm9uYmxhbmsoJEtsYXN0KTsKICAgICAgICAgICAgbXkgJHR5cGVfbSA9IGRlZmluZWQoJEtwcmV2KSA/ICRyTEwtPlskS3ByZXZdLT5bX1RZUEVfXSA6ICdiJzsKICAgICAgICAgICAgbXkgJHR5cGVfcCA9IGRlZmluZWQoJEtuZXh0KSA/ICRyTEwtPlskS25leHRdLT5bX1RZUEVfXSA6ICdiJzsKICAgICAgICAgICAgaWYgKCAkdHlwZV9tIG5lICdxJyAmJiAkdHlwZV9wIGVxICdxJyApIHsKICAgICAgICAgICAgICAgICRudW1fcXdfc2Vxbm8rKzsKICAgICAgICAgICAgICAgICRxd19zZXFubyAgICAgICAgICAgICA9ICdxJyAuICRudW1fcXdfc2Vxbm87CiAgICAgICAgICAgICAgICAkS19zdGFydF9tdWx0aWxpbmVfcXcgPSAkS2xhc3Q7CiAgICAgICAgICAgICAgICAkcnN0YXJ0aW5nX211bHRpbGluZV9xd19zZXFub19ieV9LLT57JEtsYXN0fSA9ICRxd19zZXFubzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIEdpdmUgbXVsdGlsaW5lIHF3IGxpc3RzIGV4dHJhIGluZGVudGF0aW9uIGluc3RlYWQgb2YgQ0kuICBUaGlzIG9wdGlvbgogICAgIyB3b3JrcyB3ZWxsIGJ1dCBpcyBjdXJyZW50bHkgb25seSBhY3RpdmF0ZWQgd2hlbiB0aGUgLXhjaSBmbGFnIGlzIHNldC4KICAgICMgVGhlIHJlYXNvbiBpcyB0byBhdm9pZCB1bmV4cGVjdGVkIGNoYW5nZXMgaW4gZm9ybWF0dGluZy4KICAgIGlmICggJHJPcHRzLT57J2V4dGVuZGVkLWNvbnRpbnVhdGlvbi1pbmRlbnRhdGlvbid9ICkgewogICAgICAgIHdoaWxlICggbXkgKCAkcXdfc2Vxbm8sICRyS3JhbmdlICkgPQogICAgICAgICAgICBlYWNoICV7JHJLcmFuZ2VfbXVsdGlsaW5lX3F3X2J5X3NlcW5vfSApCiAgICAgICAgewogICAgICAgICAgICBteSAoICRLYmVnLCAkS2VuZCApID0gQHskcktyYW5nZX07CgogICAgICAgICAgICAjIHJlcXVpcmUgaXNvbGF0ZWQgY2xvc2luZyB0b2tlbgogICAgICAgICAgICBteSAkdG9rZW5fZW5kID0gJHJMTC0+WyRLZW5kXS0+W19UT0tFTl9dOwogICAgICAgICAgICBuZXh0CiAgICAgICAgICAgICAgdW5sZXNzICggbGVuZ3RoKCR0b2tlbl9lbmQpID09IDEKICAgICAgICAgICAgICAgICYmICggJGlzX2Nsb3NpbmdfdG9rZW57JHRva2VuX2VuZH0gfHwgJHRva2VuX2VuZCBlcSAnPicgKSApOwoKICAgICAgICAgICAgIyByZXF1aXJlIGlzb2xhdGVkIG9wZW5pbmcgdG9rZW4KICAgICAgICAgICAgbXkgJHRva2VuX2JlZyA9ICRyTEwtPlskS2JlZ10tPltfVE9LRU5fXTsKCiAgICAgICAgICAgICMgYWxsb3cgc3BhY2UocykgYWZ0ZXIgdGhlIHF3CiAgICAgICAgICAgIGlmICggbGVuZ3RoKCR0b2tlbl9iZWcpID4gMyAmJiBzdWJzdHIoICR0b2tlbl9iZWcsIDIsIDEgKSBlcSAnICcgKSB7CiAgICAgICAgICAgICAgICAkdG9rZW5fYmVnID1+IHMvXHMrLy87CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG5leHQgdW5sZXNzICggbGVuZ3RoKCR0b2tlbl9iZWcpID09IDMgKTsKCiAgICAgICAgICAgIGZvcmVhY2ggbXkgJEtLICggJEtiZWcgKyAxIC4uICRLZW5kIC0gMSApIHsKICAgICAgICAgICAgICAgICRyTEwtPlskS0tdLT5bX0xFVkVMX10rKzsKICAgICAgICAgICAgICAgICRyTEwtPlskS0tdLT5bX0NJX0xFVkVMX10gPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNldCBmbGFnIGZvciAtd24gb3B0aW9uLCB3aGljaCB3aWxsIHJlbW92ZSB0aGUgbGV2ZWwKICAgICAgICAgICAgJHJtdWx0aWxpbmVfcXdfaGFzX2V4dHJhX2xldmVsLT57JHF3X3NlcW5vfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgRm9yIHRoZSAtbHAgb3B0aW9uIHdlIG5lZWQgdG8gbWFyayBhbGwgcGFyZW50IGNvbnRhaW5lcnMgb2YKICAgICMgbXVsdGlsaW5lIHF1b3RlcwogICAgaWYgKCRyT3B0c19saW5lX3VwX3BhcmVudGhlc2VzKSB7CgogICAgICAgIHdoaWxlICggbXkgKCAkcXdfc2Vxbm8sICRyS3JhbmdlICkgPQogICAgICAgICAgICBlYWNoICV7JHJLcmFuZ2VfbXVsdGlsaW5lX3F3X2J5X3NlcW5vfSApCiAgICAgICAgewogICAgICAgICAgICBteSAoICRLYmVnLCAkS2VuZCApID0gQHskcktyYW5nZX07CiAgICAgICAgICAgIG15ICRwYXJlbnRfc2Vxbm8gPSAkc2VsZi0+cGFyZW50X3NlcW5vX2J5X0soJEtlbmQpOwogICAgICAgICAgICBuZXh0IHVubGVzcyAoJHBhcmVudF9zZXFubyk7CgogICAgICAgICAgICAjIElmIHRoZSBwYXJlbnQgY29udGFpbmVyIGV4YWN0bHkgc3Vycm91bmRzIHRoaXMgcXcsIHRoZW4gLWxwCiAgICAgICAgICAgICMgZm9ybWF0dGluZyBzZWVtcyB0byB3b3JrIHNvIHdlIHdpbGwgbm90IG1hcmsgaXQuCiAgICAgICAgICAgIG15ICRpc190aWdodGx5X2NvbnRhaW5lZDsKICAgICAgICAgICAgbXkgJEtuICAgICAgPSAkc2VsZi0+S19uZXh0X25vbmJsYW5rKCRLZW5kKTsKICAgICAgICAgICAgbXkgJHNlcW5vX24gPSBkZWZpbmVkKCRLbikgPyAkckxMLT5bJEtuXS0+W19UWVBFX1NFUVVFTkNFX10gOiB1bmRlZjsKICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCRzZXFub19uKSAmJiAkc2Vxbm9fbiBlcSAkcGFyZW50X3NlcW5vICkgewoKICAgICAgICAgICAgICAgIG15ICRLcCA9ICRzZWxmLT5LX3ByZXZpb3VzX25vbmJsYW5rKCRLYmVnKTsKICAgICAgICAgICAgICAgIG15ICRzZXFub19wID0KICAgICAgICAgICAgICAgICAgZGVmaW5lZCgkS3ApID8gJHJMTC0+WyRLcF0tPltfVFlQRV9TRVFVRU5DRV9dIDogdW5kZWY7CiAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQoJHNlcW5vX3ApICYmICRzZXFub19wIGVxICRwYXJlbnRfc2Vxbm8gKSB7CiAgICAgICAgICAgICAgICAgICAgJGlzX3RpZ2h0bHlfY29udGFpbmVkID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkcmNvbnRhaW5zX211bHRpbGluZV9xd19ieV9zZXFuby0+eyRwYXJlbnRfc2Vxbm99ID0gMQogICAgICAgICAgICAgIHVubGVzcyAoJGlzX3RpZ2h0bHlfY29udGFpbmVkKTsKCiAgICAgICAgICAgICMgY29udGludWUgdXAgdGhlIHRyZWUgbWFya2luZyBwYXJlbnQgY29udGFpbmVycwogICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgJHBhcmVudF9zZXFubyA9ICRzZWxmLT5bX3JwYXJlbnRfb2Zfc2Vxbm9fXS0+eyRwYXJlbnRfc2Vxbm99OwogICAgICAgICAgICAgICAgbGFzdAogICAgICAgICAgICAgICAgICB1bmxlc3MgKCBkZWZpbmVkKCRwYXJlbnRfc2Vxbm8pCiAgICAgICAgICAgICAgICAgICAgJiYgJHBhcmVudF9zZXFubyBuZSBTRVFfUk9PVCApOwogICAgICAgICAgICAgICAgJHJjb250YWluc19tdWx0aWxpbmVfcXdfYnlfc2Vxbm8tPnskcGFyZW50X3NlcW5vfSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJHNlbGYtPltfcnN0YXJ0aW5nX211bHRpbGluZV9xd19zZXFub19ieV9LX10gPQogICAgICAkcnN0YXJ0aW5nX211bHRpbGluZV9xd19zZXFub19ieV9LOwogICAgJHNlbGYtPltfcmVuZGluZ19tdWx0aWxpbmVfcXdfc2Vxbm9fYnlfS19dID0KICAgICAgJHJlbmRpbmdfbXVsdGlsaW5lX3F3X3NlcW5vX2J5X0s7CiAgICAkc2VsZi0+W19yS3JhbmdlX211bHRpbGluZV9xd19ieV9zZXFub19dID0gJHJLcmFuZ2VfbXVsdGlsaW5lX3F3X2J5X3NlcW5vOwogICAgJHNlbGYtPltfcmNvbnRhaW5zX211bHRpbGluZV9xd19ieV9zZXFub19dID0KICAgICAgJHJjb250YWluc19tdWx0aWxpbmVfcXdfYnlfc2Vxbm87CiAgICAkc2VsZi0+W19ybXVsdGlsaW5lX3F3X2hhc19leHRyYV9sZXZlbF9dID0gJHJtdWx0aWxpbmVfcXdfaGFzX2V4dHJhX2xldmVsOwoKICAgIHJldHVybjsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBDT0RFIFNFQ1RJT04gNjogUHJvY2VzcyBsaW5lLWJ5LWxpbmUKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnN1YiBwcm9jZXNzX2FsbF9saW5lcyB7CgogICAgIyBNYWluIGxvb3Agb3ZlciBhbGwgbGluZXMgb2YgYSBmaWxlLgogICAgIyBMaW5lcyBhcmUgcHJvY2Vzc2VkIGFjY29yZGluZyB0byB0eXBlLgoKICAgIG15ICRzZWxmICAgICAgICAgICAgICAgICAgICAgICA9IHNoaWZ0OwogICAgbXkgJHJsaW5lcyAgICAgICAgICAgICAgICAgICAgID0gJHNlbGYtPltfcmxpbmVzX107CiAgICBteSAkc2lua19vYmplY3QgICAgICAgICAgICAgICAgPSAkc2VsZi0+W19zaW5rX29iamVjdF9dOwogICAgbXkgJGZoX3RlZSAgICAgICAgICAgICAgICAgICAgID0gJHNlbGYtPltfZmhfdGVlX107CiAgICBteSAkck9wdHNfa2VlcF9vbGRfYmxhbmtfbGluZXMgPSAkck9wdHMtPnsna2VlcC1vbGQtYmxhbmstbGluZXMnfTsKICAgIG15ICRmaWxlX3dyaXRlcl9vYmplY3QgICAgICAgICA9ICRzZWxmLT5bX2ZpbGVfd3JpdGVyX29iamVjdF9dOwogICAgbXkgJGxvZ2dlcl9vYmplY3QgICAgICAgICAgICAgID0gJHNlbGYtPltfbG9nZ2VyX29iamVjdF9dOwogICAgbXkgJHZlcnRpY2FsX2FsaWduZXJfb2JqZWN0ICAgID0gJHNlbGYtPltfdmVydGljYWxfYWxpZ25lcl9vYmplY3RfXTsKICAgIG15ICRzYXZlX2xvZ2ZpbGUgICAgICAgICAgICAgICA9ICRzZWxmLT5bX3NhdmVfbG9nZmlsZV9dOwoKICAgICMgTm90ZSBmb3IgUlQjMTE4NTUzLCBsZWF2ZSBvbmx5IG9uZSBuZXdsaW5lIGF0IHRoZSBlbmQgb2YgYSBmaWxlLgogICAgIyBFeGFtcGxlIGNvZGUgdG8gZG8gdGhpcyBpcyBpbiBjb21tZW50cyBiZWxvdzoKICAgICMgbXkgJE9wdF90cmltX2VuZGluZ19ibGFua19saW5lcyA9IDA7CiAgICAjIGlmICgkT3B0X3RyaW1fZW5kaW5nX2JsYW5rX2xpbmVzKSB7CiAgICAjICAgICB3aGlsZSAoIG15ICRsaW5lX29mX3Rva2VucyA9IHBvcCBAeyRybGluZXN9ICkgewogICAgIyAgICAgICAgIG15ICRsaW5lX3R5cGUgPSAkbGluZV9vZl90b2tlbnMtPntfbGluZV90eXBlfTsKICAgICMgICAgICAgICBpZiAoICRsaW5lX3R5cGUgZXEgJ0NPREUnICkgewogICAgIyAgICAgICAgICAgICBteSAkQ09ERV90eXBlID0gJGxpbmVfb2ZfdG9rZW5zLT57X2NvZGVfdHlwZX07CiAgICAjICAgICAgICAgICAgIG5leHQgaWYgKCAkQ09ERV90eXBlIGVxICdCTCcgKTsKICAgICMgICAgICAgICB9CiAgICAjICAgICAgICAgcHVzaCBAeyRybGluZXN9LCAkbGluZV9vZl90b2tlbnM7CiAgICAjICAgICAgICAgbGFzdDsKICAgICMgICAgIH0KICAgICMgfQoKICAgIyBCdXQgd2hpbGUgdGhpcyB3b3VsZCBiZSBhIHRyaXZpYWwgdXBkYXRlLCBpdCB3b3VsZCBoYXZlIHZlcnkgdW5kZXNpcmFibGUKICAgIyBzaWRlIGVmZmVjdHMgd2hlbiBwZXJsdGlkeSBpcyBydW4gZnJvbSB3aXRoaW4gYW4gZWRpdG9yIG9uIGEgc21hbGwgc25pcHBldC4KICAgIyBTbyB0aGlzIGlzIGJlc3QgZG9uZSB3aXRoIGEgc2VwYXJhdGUgZmlsdGVyLCBzdWNoCiAgICMgYXMgJ2RlbGV0ZV9lbmRpbmdfYmxhbmtfbGluZXMucGwnIGluIHRoZSBleGFtcGxlcyBmb2xkZXIuCgogICAgIyBGbGFnIHRvIHByZXZlbnQgYmxhbmsgbGluZXMgd2hlbiBQT0Qgb2NjdXJzIGluIGEgZm9ybWF0IHNraXBwaW5nIHNlY3QuCiAgICBteSAkaW5fZm9ybWF0X3NraXBwaW5nX3NlY3Rpb247CgogICAgIyBzZXQgbG9jYXRpb25zIGZvciBibGFua3MgYXJvdW5kIGxvbmcgcnVucyBvZiBrZXl3b3JkcwogICAgbXkgJHJ3YW50X2JsYW5rX2xpbmVfYWZ0ZXIgPSAkc2VsZi0+a2V5d29yZF9ncm91cF9zY2FuKCk7CgogICAgbXkgJGxpbmVfdHlwZSA9ICIiOwogICAgbXkgJGkgICAgICAgICA9IC0xOwogICAgZm9yZWFjaCBteSAkbGluZV9vZl90b2tlbnMgKCBAeyRybGluZXN9ICkgewogICAgICAgICRpKys7CgogICAgICAgICMgaW5zZXJ0IGJsYW5rIGxpbmVzIHJlcXVlc3RlZCBmb3Iga2V5d29yZCBzZXF1ZW5jZXMKICAgICAgICBpZiAoICAgJGkgPiAwCiAgICAgICAgICAgICYmIGRlZmluZWQoICRyd2FudF9ibGFua19saW5lX2FmdGVyLT57ICRpIC0gMSB9ICkKICAgICAgICAgICAgJiYgJHJ3YW50X2JsYW5rX2xpbmVfYWZ0ZXItPnsgJGkgLSAxIH0gPT0gMSApCiAgICAgICAgewogICAgICAgICAgICAkc2VsZi0+d2FudF9ibGFua19saW5lKCk7CiAgICAgICAgfQoKICAgICAgICBteSAkbGFzdF9saW5lX3R5cGUgPSAkbGluZV90eXBlOwogICAgICAgICRsaW5lX3R5cGUgPSAkbGluZV9vZl90b2tlbnMtPntfbGluZV90eXBlfTsKICAgICAgICBteSAkaW5wdXRfbGluZSA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3RleHR9OwoKICAgICAgICAjIF9saW5lX3R5cGUgY29kZXMgYXJlOgogICAgICAgICMgICBTWVNURU0gICAgICAgICAtIHN5c3RlbS1zcGVjaWZpYyBjb2RlIGJlZm9yZSBoYXNoLWJhbmcgbGluZQogICAgICAgICMgICBDT0RFICAgICAgICAgICAtIGxpbmUgb2YgcGVybCBjb2RlIChpbmNsdWRpbmcgY29tbWVudHMpCiAgICAgICAgIyAgIFBPRF9TVEFSVCAgICAgIC0gbGluZSBzdGFydGluZyBwb2QsIHN1Y2ggYXMgJz1oZWFkJwogICAgICAgICMgICBQT0QgICAgICAgICAgICAtIHBvZCBkb2N1bWVudGF0aW9uIHRleHQKICAgICAgICAjICAgUE9EX0VORCAgICAgICAgLSBsYXN0IGxpbmUgb2YgcG9kIHNlY3Rpb24sICc9Y3V0JwogICAgICAgICMgICBIRVJFICAgICAgICAgICAtIHRleHQgb2YgaGVyZS1kb2N1bWVudAogICAgICAgICMgICBIRVJFX0VORCAgICAgICAtIGxhc3QgbGluZSBvZiBoZXJlLWRvYyAodGFyZ2V0IHdvcmQpCiAgICAgICAgIyAgIEZPUk1BVCAgICAgICAgIC0gZm9ybWF0IHNlY3Rpb24KICAgICAgICAjICAgRk9STUFUX0VORCAgICAgLSBsYXN0IGxpbmUgb2YgZm9ybWF0IHNlY3Rpb24sICcuJwogICAgICAgICMgICBEQVRBX1NUQVJUICAgICAtIF9fREFUQV9fIGxpbmUKICAgICAgICAjICAgREFUQSAgICAgICAgICAgLSB1bmlkZW50aWZpZWQgdGV4dCBmb2xsb3dpbmcgX19EQVRBX18KICAgICAgICAjICAgRU5EX1NUQVJUICAgICAgLSBfX0VORF9fIGxpbmUKICAgICAgICAjICAgRU5EICAgICAgICAgICAgLSB1bmlkZW50aWZpZWQgdGV4dCBmb2xsb3dpbmcgX19FTkRfXwogICAgICAgICMgICBFUlJPUiAgICAgICAgICAtIHdlIGFyZSBpbiBiaWcgdHJvdWJsZSwgcHJvYmFibHkgbm90IGEgcGVybCBzY3JpcHQKCiAgICAgICAgIyBwdXQgYSBibGFuayBsaW5lIGFmdGVyIGFuID1jdXQgd2hpY2ggY29tZXMgYmVmb3JlIF9fRU5EX18gYW5kIF9fREFUQV9fCiAgICAgICAgIyAocmVxdWlyZWQgYnkgcG9kY2hlY2tlcikKICAgICAgICBpZiAoICRsYXN0X2xpbmVfdHlwZSBlcSAnUE9EX0VORCcgJiYgISRzZWxmLT5bX3Nhd19FTkRfb3JfREFUQV9dICkgewogICAgICAgICAgICAkZmlsZV93cml0ZXJfb2JqZWN0LT5yZXNldF9jb25zZWN1dGl2ZV9ibGFua19saW5lcygpOwogICAgICAgICAgICBpZiAoICEkaW5fZm9ybWF0X3NraXBwaW5nX3NlY3Rpb24gJiYgJGlucHV0X2xpbmUgIX4gL15ccyokLyApIHsKICAgICAgICAgICAgICAgICRzZWxmLT53YW50X2JsYW5rX2xpbmUoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBoYW5kbGUgbGluZSBvZiBjb2RlLi4KICAgICAgICBpZiAoICRsaW5lX3R5cGUgZXEgJ0NPREUnICkgewoKICAgICAgICAgICAgbXkgJENPREVfdHlwZSA9ICRsaW5lX29mX3Rva2Vucy0+e19jb2RlX3R5cGV9OwogICAgICAgICAgICAkaW5fZm9ybWF0X3NraXBwaW5nX3NlY3Rpb24gPSAkQ09ERV90eXBlIGVxICdGUyc7CgogICAgICAgICAgICAjIEhhbmRsZSBibGFuayBsaW5lcwogICAgICAgICAgICBpZiAoICRDT0RFX3R5cGUgZXEgJ0JMJyApIHsKCiAgICAgICAgICAgICAgICAjIElmIGtlZXAtb2xkLWJsYW5rLWxpbmVzIGlzIHplcm8sIHdlIGRlbGV0ZSBhbGwKICAgICAgICAgICAgICAgICMgb2xkIGJsYW5rIGxpbmVzIGFuZCBsZXQgdGhlIGJsYW5rIGxpbmUgcnVsZXMgZ2VuZXJhdGUgYW55CiAgICAgICAgICAgICAgICAjIG5lZWRlZCBibGFua3MuCgogICAgICAgICAgICAgICAgIyBhbmQgZGVsZXRlIGxpbmVzIHJlcXVlc3RlZCBieSB0aGUga2V5d29yZC1ncm91cCBsb2dpYwogICAgICAgICAgICAgICAgbXkgJGtnYl9rZWVwID0gISggZGVmaW5lZCggJHJ3YW50X2JsYW5rX2xpbmVfYWZ0ZXItPnskaX0gKQogICAgICAgICAgICAgICAgICAgICYmICRyd2FudF9ibGFua19saW5lX2FmdGVyLT57JGl9ID09IDIgKTsKCiAgICAgICAgICAgICAgICAjIEJ1dDogdGhlIGtlZXAtb2xkLWJsYW5rLWxpbmVzIGZsYWcgaGFzIHByaW9yaXR5IG92ZXIga2diIGZsYWdzCiAgICAgICAgICAgICAgICAka2diX2tlZXAgPSAxIGlmICggJHJPcHRzX2tlZXBfb2xkX2JsYW5rX2xpbmVzID09IDIgKTsKCiAgICAgICAgICAgICAgICBpZiAoICRyT3B0c19rZWVwX29sZF9ibGFua19saW5lcyAmJiAka2diX2tlZXAgKSB7CiAgICAgICAgICAgICAgICAgICAgJHNlbGYtPmZsdXNoKCRDT0RFX3R5cGUpOwogICAgICAgICAgICAgICAgICAgICRmaWxlX3dyaXRlcl9vYmplY3QtPndyaXRlX2JsYW5rX2NvZGVfbGluZSgKICAgICAgICAgICAgICAgICAgICAgICAgJHJPcHRzX2tlZXBfb2xkX2JsYW5rX2xpbmVzID09IDIgKTsKICAgICAgICAgICAgICAgICAgICAkc2VsZi0+W19sYXN0X2xpbmVfbGVhZGluZ190eXBlX10gPSAnYic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICMgTGV0IGxvZ2dlciBzZWUgYWxsIG5vbi1ibGFuayBsaW5lcyBvZiBjb2RlLiBUaGlzIGlzIGEgc2xvdyBvcGVyYXRpb24KICAgICAgICAgICMgc28gd2UgYXZvaWQgaXQgaWYgaXQgaXMgbm90IGdvaW5nIHRvIGJlIHNhdmVkLgogICAgICAgICAgICAgICAgaWYgKCAkc2F2ZV9sb2dmaWxlICYmICRsb2dnZXJfb2JqZWN0ICkgewogICAgICAgICAgICAgICAgICAgICRsb2dnZXJfb2JqZWN0LT5ibGFja19ib3goICRsaW5lX29mX3Rva2VucywKICAgICAgICAgICAgICAgICAgICAgICAgJHZlcnRpY2FsX2FsaWduZXJfb2JqZWN0LT5nZXRfb3V0cHV0X2xpbmVfbnVtYmVyICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgSGFuZGxlIEZvcm1hdCBTa2lwcGluZyAoRlMpIGFuZCBWZXJiYXRpbSAoVkIpIExpbmVzCiAgICAgICAgICAgIGlmICggJENPREVfdHlwZSBlcSAnVkInIHx8ICRDT0RFX3R5cGUgZXEgJ0ZTJyApIHsKICAgICAgICAgICAgICAgICRzZWxmLT53cml0ZV91bmluZGVudGVkX2xpbmUoIiRpbnB1dF9saW5lIik7CiAgICAgICAgICAgICAgICAkZmlsZV93cml0ZXJfb2JqZWN0LT5yZXNldF9jb25zZWN1dGl2ZV9ibGFua19saW5lcygpOwogICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBIYW5kbGUgYWxsIG90aGVyIGxpbmVzIG9mIGNvZGUKICAgICAgICAgICAgJHNlbGYtPnByb2Nlc3NfbGluZV9vZl9DT0RFKCRsaW5lX29mX3Rva2Vucyk7CiAgICAgICAgfQoKICAgICAgICAjIGhhbmRsZSBsaW5lIG9mIG5vbi1jb2RlLi4KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgc2V0IHNwZWNpYWwgZmxhZ3MKICAgICAgICAgICAgbXkgJHNraXBfbGluZSA9IDA7CiAgICAgICAgICAgIGlmICggc3Vic3RyKCAkbGluZV90eXBlLCAwLCAzICkgZXEgJ1BPRCcgKSB7CgogICAgICAgICAgICAgICAgIyBQb2QgZG9jcyBzaG91bGQgaGF2ZSBhIHByZWNlZGluZyBibGFuayBsaW5lLiAgQnV0IHN0YXkKICAgICAgICAgICAgICAgICMgb3V0IG9mIF9fRU5EX18gYW5kIF9fREFUQV9fIHNlY3Rpb25zLCBiZWNhdXNlCiAgICAgICAgICAgICAgICAjIHRoZSB1c2VyIG1heSBiZSB1c2luZyB0aGlzIHNlY3Rpb24gZm9yIGFueSBwdXJwb3NlIHdoYXRzb2V2ZXIKICAgICAgICAgICAgICAgIGlmICggJHJPcHRzLT57J2RlbGV0ZS1wb2QnfSApIHsgJHNraXBfbGluZSA9IDE7IH0KICAgICAgICAgICAgICAgIGlmICggJHJPcHRzLT57J3RyaW0tcG9kJ30gKSAgIHsgJGlucHV0X2xpbmUgPX4gcy9ccyskLy8gfQogICAgICAgICAgICAgICAgaWYgKCAgICEkc2tpcF9saW5lCiAgICAgICAgICAgICAgICAgICAgJiYgISRpbl9mb3JtYXRfc2tpcHBpbmdfc2VjdGlvbgogICAgICAgICAgICAgICAgICAgICYmICRsaW5lX3R5cGUgZXEgJ1BPRF9TVEFSVCcKICAgICAgICAgICAgICAgICAgICAmJiAhJHNlbGYtPltfc2F3X0VORF9vcl9EQVRBX10gKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRzZWxmLT53YW50X2JsYW5rX2xpbmUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBsZWF2ZSB0aGUgYmxhbmsgY291bnRlcnMgaW4gYSBwcmVkaWN0YWJsZSBzdGF0ZQogICAgICAgICAgICAjIGFmdGVyIF9fRU5EX18gb3IgX19EQVRBX18KICAgICAgICAgICAgZWxzaWYgKCAkbGluZV90eXBlIGVxICdFTkRfU1RBUlQnIHx8ICRsaW5lX3R5cGUgZXEgJ0RBVEFfU1RBUlQnICkgewogICAgICAgICAgICAgICAgJGZpbGVfd3JpdGVyX29iamVjdC0+cmVzZXRfY29uc2VjdXRpdmVfYmxhbmtfbGluZXMoKTsKICAgICAgICAgICAgICAgICRzZWxmLT5bX3Nhd19FTkRfb3JfREFUQV9dID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB3cml0ZSB1bmluZGVudGVkIG5vbi1jb2RlIGxpbmUKICAgICAgICAgICAgaWYgKCAhJHNraXBfbGluZSApIHsKICAgICAgICAgICAgICAgICRzZWxmLT53cml0ZV91bmluZGVudGVkX2xpbmUoJGlucHV0X2xpbmUpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuOwoKfSAjIyBlbmQgc3ViIHByb2Nlc3NfYWxsX2xpbmVzCgpzdWIga2V5d29yZF9ncm91cF9zY2FuIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CgogICAgIyBDYWxsZWQgb25jZSBwZXIgZmlsZSB0byBwcm9jZXNzIHRoZSAtLWtleXdvcmQtZ3JvdXAtYmxhbmtzLSogcGFyYW1ldGVycy4KCiAgICAjIE1hbmlwdWxhdGUgYmxhbmsgbGluZXMgYXJvdW5kIGtleXdvcmQgZ3JvdXBzIChrZ2IqIGZsYWdzKQogICAgIyBTY2FuIGFsbCBsaW5lcyBsb29raW5nIGZvciBydW5zIG9mIGNvbnNlY3V0aXZlIGxpbmVzIGJlZ2lubmluZyB3aXRoCiAgICAjIHNlbGVjdGVkIGtleXdvcmRzLiAgRXhhbXBsZSBrZXl3b3JkcyBhcmUgJ215JywgJ291cicsICdsb2NhbCcsIC4uLiBidXQKICAgICMgdGhleSBtYXkgYmUgYW55dGhpbmcuICBXZSB3aWxsIHNldCBmbGFncyByZXF1ZXN0aW5nIHRoYXQgYmxhbmtzIGJlCiAgICAjIGluc2VydGVkIGFyb3VuZCBhbmQgd2l0aGluIHRoZW0gYWNjb3JkaW5nIHRvIGlucHV0IHBhcmFtZXRlcnMuICBOb3RlCiAgICAjIHRoYXQgd2UgYXJlIHNjYW5uaW5nIHRoZSBsaW5lcyBhcyB0aGV5IGNhbWUgaW4gaW4gdGhlIGlucHV0IHN0cmVhbSwgc28KICAgICMgdGhleSBhcmUgbm90IG5lY2Vzc2FyaWx5IHdlbGwgZm9ybWF0dGVkLgoKICAgICMgVGhlIG91dHB1dCBvZiB0aGlzIHN1YiBpcyBhIHJldHVybiBoYXNoIHJlZiB3aG9zZSBrZXlzIGFyZSB0aGUgaW5kZXhlcyBvZgogICAgIyBsaW5lcyBhZnRlciB3aGljaCB3ZSBkZXNpcmUgYSBibGFuayBsaW5lLiAgRm9yIGxpbmUgaW5kZXggaToKICAgICMgICAgICRyaGFzaF9vZl9kZXNpcmVzLT57JGl9ID0gMSBtZWFucyB3ZSB3YW50IGEgYmxhbmsgbGluZSBBRlRFUiBsaW5lICRpCiAgICAjICAgICAkcmhhc2hfb2ZfZGVzaXJlcy0+eyRpfSA9IDIgbWVhbnMgd2Ugd2FudCBibGFuayBsaW5lICRpIHJlbW92ZWQKICAgIG15ICRyaGFzaF9vZl9kZXNpcmVzID0ge307CgogICAgbXkgJE9wdF9ibGFua3NfYmVmb3JlID0gJHJPcHRzLT57J2tleXdvcmQtZ3JvdXAtYmxhbmtzLWJlZm9yZSd9OyAgICMgJy1rZ2JiJwogICAgbXkgJE9wdF9ibGFua3NfYWZ0ZXIgID0gJHJPcHRzLT57J2tleXdvcmQtZ3JvdXAtYmxhbmtzLWFmdGVyJ307ICAgICMgJy1rZ2JhJwogICAgbXkgJE9wdF9ibGFua3NfaW5zaWRlID0gJHJPcHRzLT57J2tleXdvcmQtZ3JvdXAtYmxhbmtzLWluc2lkZSd9OyAgICMgJy1rZ2JpJwogICAgbXkgJE9wdF9ibGFua3NfZGVsZXRlID0gJHJPcHRzLT57J2tleXdvcmQtZ3JvdXAtYmxhbmtzLWRlbGV0ZSd9OyAgICMgJy1rZ2JkJwogICAgbXkgJE9wdF9zaXplICAgICAgICAgID0gJHJPcHRzLT57J2tleXdvcmQtZ3JvdXAtYmxhbmtzLXNpemUnfTsgICAgICMgJy1rZ2JzJwoKICAgICMgQSByYW5nZSBvZiBzaXplcyBjYW4gYmUgaW5wdXQgd2l0aCBkZWNpbWFsIG5vdGF0aW9uIGxpa2UgJ21pbi5tYXgnIHdpdGgKICAgICMgYW55IG51bWJlciBvZiBkb3RzIGJldHdlZW4gdGhlIHR3byBudW1iZXJzLiBFeGFtcGxlczoKICAgICMgICAgc3RyaW5nICAgID0+ICAgIG1pbiAgICBtYXggIG1hdGNoZXMKICAgICMgICAgMS4xICAgICAgICAgICAgIDEgICAgICAxICAgIGV4YWN0bHkgMQogICAgIyAgICAxLjMgICAgICAgICAgICAgMSAgICAgIDMgICAgMSwyLCBvciAzCiAgICAjICAgIDEuLjMgICAgICAgICAgICAxICAgICAgMyAgICAxLDIsIG9yIDMKICAgICMgICAgNSAgICAgICAgICAgICAgIDUgICAgICAtICAgIDUgb3IgbW9yZQogICAgIyAgICA2LiAgICAgICAgICAgICAgNiAgICAgIC0gICAgNiBvciBtb3JlCiAgICAjICAgIC4yICAgICAgICAgICAgICAtICAgICAgMiAgICB1cCB0byAyCiAgICAjICAgIDEuMCAgICAgICAgICAgICAxICAgICAgMCAgICBub3RoaW5nCiAgICBteSAoICRPcHRfc2l6ZV9taW4sICRPcHRfc2l6ZV9tYXggKSA9IHNwbGl0IC9cLisvLCAkT3B0X3NpemU7CiAgICBpZiAoICAgJE9wdF9zaXplX21pbiAmJiAkT3B0X3NpemVfbWluICF+IC9eXGQrJC8KICAgICAgICB8fCAkT3B0X3NpemVfbWF4ICYmICRPcHRfc2l6ZV9tYXggIX4gL15cZCskLyApCiAgICB7CiAgICAgICAgV2Fybig8PEVPTSk7ClVuZXhwZWN0ZWQgdmFsdWUgZm9yIC1rZ2JzOiAnJE9wdF9zaXplJzsgZXhwZWN0aW5nICdtaW4nIG9yICdtaW4ubWF4JzsgCmlnbm9yaW5nIGFsbCAta2diIGZsYWdzCkVPTQoKICAgICAgICAjIFR1cm4gdGhpcyBvcHRpb24gb2ZmIHNvIHRoYXQgdGhpcyBtZXNzYWdlIGRvZXMgbm90IGtlZXAgcmVwZWF0aW5nCiAgICAgICAgIyBkdXJpbmcgaXRlcmF0aW9ucyBhbmQgb3RoZXIgZmlsZXMuCiAgICAgICAgJHJPcHRzLT57J2tleXdvcmQtZ3JvdXAtYmxhbmtzLXNpemUnfSA9ICIiOwogICAgICAgIHJldHVybiAkcmhhc2hfb2ZfZGVzaXJlczsKICAgIH0KICAgICRPcHRfc2l6ZV9taW4gPSAxIHVubGVzcyAoJE9wdF9zaXplX21pbik7CgogICAgaWYgKCAkT3B0X3NpemVfbWF4ICYmICRPcHRfc2l6ZV9tYXggPCAkT3B0X3NpemVfbWluICkgewogICAgICAgIHJldHVybiAkcmhhc2hfb2ZfZGVzaXJlczsKICAgIH0KCiAgICAjIGNvZGVzIGZvciAkT3B0X2JsYW5rc19iZWZvcmUgYW5kICRPcHRfYmxhbmtzX2FmdGVyOgogICAgIyAwID0gbmV2ZXIgKGRlbGV0ZSBpZiBleGlzdCkKICAgICMgMSA9IHN0YWJsZSAoa2VlcCB1bmNoYW5nZWQpCiAgICAjIDIgPSBhbHdheXMgKGluc2VydCBpZiBtaXNzaW5nKQoKICAgIHJldHVybiAkcmhhc2hfb2ZfZGVzaXJlcwogICAgICB1bmxlc3MgJE9wdF9zaXplX21pbiA+IDAKICAgICAgJiYgKCAkT3B0X2JsYW5rc19iZWZvcmUgIT0gMQogICAgICAgIHx8ICRPcHRfYmxhbmtzX2FmdGVyICE9IDEKICAgICAgICB8fCAkT3B0X2JsYW5rc19pbnNpZGUKICAgICAgICB8fCAkT3B0X2JsYW5rc19kZWxldGUgKTsKCiAgICBteSAkT3B0X3BhdHRlcm4gICAgICAgICA9ICRrZXl3b3JkX2dyb3VwX2xpc3RfcGF0dGVybjsKICAgIG15ICRPcHRfY29tbWVudF9wYXR0ZXJuID0gJGtleXdvcmRfZ3JvdXBfbGlzdF9jb21tZW50X3BhdHRlcm47CiAgICBteSAkT3B0X3JlcGVhdF9jb3VudCA9CiAgICAgICRyT3B0cy0+eydrZXl3b3JkLWdyb3VwLWJsYW5rcy1yZXBlYXQtY291bnQnfTsgICAgIyAnLWtnYnInCgogICAgbXkgJHJsaW5lcyAgICAgICAgICAgICAgPSAkc2VsZi0+W19ybGluZXNfXTsKICAgIG15ICRyTEwgICAgICAgICAgICAgICAgID0gJHNlbGYtPltfckxMX107CiAgICBteSAkS19jbG9zaW5nX2NvbnRhaW5lciA9ICRzZWxmLT5bX0tfY2xvc2luZ19jb250YWluZXJfXTsKCiAgICAjIHZhcmlhYmxlcyBmb3IgdGhlIGN1cnJlbnQgZ3JvdXAgYW5kIHN1Ymdyb3VwczoKICAgIG15ICggJGliZWcsICRpZW5kLCAkY291bnQsICRsZXZlbF9iZWcsICRLX2Nsb3NpbmcsIEBpYmxhbmtzLCBAZ3JvdXAsCiAgICAgICAgQHN1Ymdyb3VwICk7CgogICAgIyBEZWZpbml0aW9uczoKICAgICMgKCRpYmVnLCAkaWVuZCkgPSBzdGFydGluZyBhbmQgZW5kaW5nIGxpbmUgaW5kZXhlcyBvZiB0aGlzIGVudGlyZSBncm91cAogICAgIyAgICAgICAgICRjb3VudCA9IHRvdGFsIG51bWJlciBvZiBrZXl3b3JkcyBzZWVuIGluIHRoaXMgZW50aXJlIGdyb3VwCiAgICAjICAgICAkbGV2ZWxfYmVnID0gaW5kZW50ZW50YXRpb24gbGV2ZWwgb2YgdGhpcyBncm91cAogICAgIyAgICAgICAgIEBncm91cCA9IFsgJGksICR0b2tlbiwgJGNvdW50IF0gPWxpc3Qgb2YgYWxsIGtleXdvcmRzICYgYmxhbmtzCiAgICAjICAgICAgQHN1Ymdyb3VwID0gICRqLCBpbmRleCBvZiBncm91cCB3aGVyZSB0b2tlbiBjaGFuZ2VzCiAgICAjICAgICAgIEBpYmxhbmtzID0gbGluZSBpbmRleGVzIG9mIGJsYW5rIGxpbmVzIGluIGlucHV0IHN0cmVhbSBpbiB0aGlzIGdyb3VwCiAgICAjICB3aGVyZSBpPXN0YXJ0aW5nIGxpbmUgaW5kZXgKICAgICMgICAgICAgIHRva2VuICh0aGUga2V5d29yZCkKICAgICMgICAgICAgIGNvdW50ID0gbnVtYmVyIG9mIHRoaXMgdG9rZW4gaW4gdGhpcyBzdWJncm91cAogICAgIyAgICAgICAgICAgIGogPSBpbmRleCBpbiBncm91cCB3aGVyZSB0b2tlbiBjaGFuZ2VzCiAgICAjCiAgICAjIFRoZXNlIHZhcnMgd2lsbCBjb250YWluIHZhbHVlcyBmb3IgdGhlIG1vc3QgcmVjZW50bHkgc2VlbiBsaW5lOgogICAgbXkgKCAkbGluZV90eXBlLCAkQ09ERV90eXBlLCAkS19maXJzdCwgJEtfbGFzdCApOwoKICAgIG15ICRudW1iZXJfb2ZfZ3JvdXBzX3NlZW4gPSAwOwoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIGhlbHBlciBzdWJyb3V0aW5lcwogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICBteSAkaW5zZXJ0X2JsYW5rX2FmdGVyID0gc3ViIHsKICAgICAgICBteSAoJGkpID0gQF87CiAgICAgICAgJHJoYXNoX29mX2Rlc2lyZXMtPnskaX0gPSAxOwogICAgICAgIG15ICRpcCA9ICRpICsgMTsKICAgICAgICBpZiAoIGRlZmluZWQoICRyaGFzaF9vZl9kZXNpcmVzLT57JGlwfSApCiAgICAgICAgICAgICYmICRyaGFzaF9vZl9kZXNpcmVzLT57JGlwfSA9PSAyICkKICAgICAgICB7CiAgICAgICAgICAgICRyaGFzaF9vZl9kZXNpcmVzLT57JGlwfSA9IDA7CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH07CgogICAgbXkgJHNwbGl0X2ludG9fc3ViX2dyb3VwcyA9IHN1YiB7CgogICAgICAgICMgcGxhY2UgYmxhbmtzIGFyb3VuZCBsb25nIHN1Yi1ncm91cHMgb2Yga2V5d29yZHMKICAgICAgICAjIC4uLmlmIHJlcXVlc3RlZAogICAgICAgIHJldHVybiB1bmxlc3MgKCRPcHRfYmxhbmtzX2luc2lkZSk7CgogICAgICAgICMgbG9vcCBvdmVyIHN1Yi1ncm91cHMsIGluZGV4IGsKICAgICAgICBwdXNoIEBzdWJncm91cCwgc2NhbGFyIEBncm91cDsKICAgICAgICBteSAka2JlZyA9IDE7CiAgICAgICAgbXkgJGtlbmQgPSBAc3ViZ3JvdXAgLSAxOwogICAgICAgIGZvciAoIG15ICRrID0gJGtiZWcgOyAkayA8PSAka2VuZCA7ICRrKysgKSB7CgogICAgICAgICAgICAjIGluZGV4IGogcnVucyB0aHJvdWdoIGFsbCBrZXl3b3JkcyBmb3VuZAogICAgICAgICAgICBteSAkal9iID0gJHN1Ymdyb3VwWyAkayAtIDEgXTsKICAgICAgICAgICAgbXkgJGpfZSA9ICRzdWJncm91cFska10gLSAxOwoKICAgICAgICAgICAgIyBpbmRleCBpIGlzIHRoZSBhY3R1YWwgbGluZSBudW1iZXIgb2YgYSBrZXl3b3JkCiAgICAgICAgICAgIG15ICggJGlfYiwgJHRva19iLCAkY291bnRfYiApID0gQHsgJGdyb3VwWyRqX2JdIH07CiAgICAgICAgICAgIG15ICggJGlfZSwgJHRva19lLCAkY291bnRfZSApID0gQHsgJGdyb3VwWyRqX2VdIH07CiAgICAgICAgICAgIG15ICRudW0gPSAkY291bnRfZSAtICRjb3VudF9iICsgMTsKCiAgICAgICAgICAgICMgVGhpcyBzdWJncm91cCBydW5zIGZyb20gbGluZSAkaWIgdG8gbGluZSAkaWUtMSwgYnV0IG1heSBjb250YWluCiAgICAgICAgICAgICMgYmxhbmsgbGluZXMKICAgICAgICAgICAgaWYgKCAkbnVtID49ICRPcHRfc2l6ZV9taW4gKSB7CgogICAgICAgICAgICAgICAgIyBpZiB0aGVyZSBhcmUgYmxhbmsgbGluZXMsIHdlIHJlcXVpcmUgdGhhdCBhdCBsZWFzdCAkbnVtIGxpbmVzCiAgICAgICAgICAgICAgICAjIGJlIG5vbi1ibGFuayB1cCB0byB0aGUgYm91bmRhcnkgd2l0aCB0aGUgbmV4dCBzdWJncm91cC4KICAgICAgICAgICAgICAgIG15ICRub2dfYiA9IG15ICRub2dfZSA9IDE7CiAgICAgICAgICAgICAgICBpZiAoIEBpYmxhbmtzICYmICEkT3B0X2JsYW5rc19kZWxldGUgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJGpfYmIgPSAkal9iICsgJG51bSAtIDE7CiAgICAgICAgICAgICAgICAgICAgbXkgKCAkaV9iYiwgJHRva19iYiwgJGNvdW50X2JiICkgPSBAeyAkZ3JvdXBbJGpfYmJdIH07CiAgICAgICAgICAgICAgICAgICAgJG5vZ19iID0gJGNvdW50X2JiIC0gJGNvdW50X2IgKyAxID09ICRudW07CgogICAgICAgICAgICAgICAgICAgIG15ICRqX2VlID0gJGpfZSAtICggJG51bSAtIDEgKTsKICAgICAgICAgICAgICAgICAgICBteSAoICRpX2VlLCAkdG9rX2VlLCAkY291bnRfZWUgKSA9IEB7ICRncm91cFskal9lZV0gfTsKICAgICAgICAgICAgICAgICAgICAkbm9nX2UgPSAkY291bnRfZSAtICRjb3VudF9lZSArIDEgPT0gJG51bTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICggJG5vZ19iICYmICRrID4gJGtiZWcgKSB7CiAgICAgICAgICAgICAgICAgICAgJGluc2VydF9ibGFua19hZnRlci0+KCAkaV9iIC0gMSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCAkbm9nX2UgJiYgJGsgPCAka2VuZCApIHsKICAgICAgICAgICAgICAgICAgICBteSAoICRpX2VwLCAkdG9rX2VwLCAkY291bnRfZXAgKSA9IEB7ICRncm91cFsgJGpfZSArIDEgXSB9OwogICAgICAgICAgICAgICAgICAgICRpbnNlcnRfYmxhbmtfYWZ0ZXItPiggJGlfZXAgLSAxICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwoKICAgIG15ICRkZWxldGVfaWZfYmxhbmsgPSBzdWIgewogICAgICAgIG15ICgkaSkgPSBAXzsKCiAgICAgICAgIyBkZWxldGUgbGluZSAkaSBpZiBpdCBpcyBibGFuawogICAgICAgIHJldHVybiB1bmxlc3MgKCAkaSA+PSAwICYmICRpIDwgQHskcmxpbmVzfSApOwogICAgICAgIG15ICRsaW5lX3R5cGUgPSAkcmxpbmVzLT5bJGldLT57X2xpbmVfdHlwZX07CiAgICAgICAgcmV0dXJuIGlmICggJGxpbmVfdHlwZSBuZSAnQ09ERScgKTsKICAgICAgICBteSAkY29kZV90eXBlID0gJHJsaW5lcy0+WyRpXS0+e19jb2RlX3R5cGV9OwogICAgICAgIGlmICggJGNvZGVfdHlwZSBlcSAnQkwnICkgeyAkcmhhc2hfb2ZfZGVzaXJlcy0+eyRpfSA9IDI7IH0KICAgICAgICByZXR1cm47CiAgICB9OwoKICAgIG15ICRkZWxldGVfaW5uZXJfYmxhbmtfbGluZXMgPSBzdWIgewoKICAgICAgICAjIGFsd2F5cyByZW1vdmUgdW53YW50ZWQgdHJhaWxpbmcgYmxhbmsgbGluZXMgZnJvbSBvdXIgbGlzdAogICAgICAgIHJldHVybiB1bmxlc3MgKEBpYmxhbmtzKTsKICAgICAgICB3aGlsZSAoIG15ICRpYmwgPSBwb3AoQGlibGFua3MpICkgewogICAgICAgICAgICBpZiAoICRpYmwgPCAkaWVuZCApIHsgcHVzaCBAaWJsYW5rcywgJGlibDsgbGFzdCB9CiAgICAgICAgICAgICRpZW5kID0gJGlibDsKICAgICAgICB9CgogICAgICAgICMgbm93IG1hcmsgbWFyayBpbnRlcmlvciBibGFuayBsaW5lcyBmb3IgZGVsZXRpb24gaWYgcmVxdWVzdGVkCiAgICAgICAgcmV0dXJuIHVubGVzcyAoJE9wdF9ibGFua3NfZGVsZXRlKTsKCiAgICAgICAgd2hpbGUgKCBteSAkaWJsID0gcG9wKEBpYmxhbmtzKSApIHsgJHJoYXNoX29mX2Rlc2lyZXMtPnskaWJsfSA9IDIgfQoKICAgIH07CgogICAgbXkgJGVuZF9ncm91cCA9IHN1YiB7CgogICAgICAgICMgZW5kIGEgZ3JvdXAgb2Yga2V5d29yZHMKICAgICAgICBteSAoJGJhZF9lbmRpbmcpID0gQF87CiAgICAgICAgaWYgKCBkZWZpbmVkKCRpYmVnKSAmJiAkaWJlZyA+PSAwICkgewoKICAgICAgICAgICAgIyB0aGVuIGhhbmRsZSBzdWZmaWNpZW50bHkgbGFyZ2UgZ3JvdXBzCiAgICAgICAgICAgIGlmICggJGNvdW50ID49ICRPcHRfc2l6ZV9taW4gKSB7CgogICAgICAgICAgICAgICAgJG51bWJlcl9vZl9ncm91cHNfc2VlbisrOwoKICAgICAgICAgICAgICAgICMgZG8gYW55IGJsYW5rIGRlbGV0aW9ucyByZWdhcmRsZXNzIG9mIHRoZSBjb3VudAogICAgICAgICAgICAgICAgJGRlbGV0ZV9pbm5lcl9ibGFua19saW5lcy0+KCk7CgogICAgICAgICAgICAgICAgaWYgKCAkaWJlZyA+IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJGNvZGVfdHlwZSA9ICRybGluZXMtPlsgJGliZWcgLSAxIF0tPntfY29kZV90eXBlfTsKCiAgICAgICAgICAgICAgICAgICAgIyBwYXRjaCBmb3IgaGFzaCBiYW5nIGxpbmUgd2hpY2ggaXMgbm90IGN1cnJlbnRseSBtYXJrZWQgYXMKICAgICAgICAgICAgICAgICAgICAjIGEgY29tbWVudDsgbWFyayBpdCBhcyBhIGNvbW1lbnQKICAgICAgICAgICAgICAgICAgICBpZiAoICRpYmVnID09IDEgJiYgISRjb2RlX3R5cGUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRsaW5lX3RleHQgPSAkcmxpbmVzLT5bICRpYmVnIC0gMSBdLT57X2xpbmVfdGV4dH07CiAgICAgICAgICAgICAgICAgICAgICAgICRjb2RlX3R5cGUgPSAnQkMnCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkbGluZV90ZXh0ICYmICRsaW5lX3RleHQgPX4gL14jLyApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBEbyBub3QgaW5zZXJ0IGEgYmxhbmsgYWZ0ZXIgYSBjb21tZW50CiAgICAgICAgICAgICAgICAgICAgIyAodGhpcyBjb3VsZCBiZSBzdWJqZWN0IHRvIGEgZmxhZyBpbiB0aGUgZnV0dXJlKQogICAgICAgICAgICAgICAgICAgIGlmICggJGNvZGVfdHlwZSAhfiAvKEJDfFNCQ3xTQkNYKS8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJE9wdF9ibGFua3NfYmVmb3JlID09IElOU0VSVCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbnNlcnRfYmxhbmtfYWZ0ZXItPiggJGliZWcgLSAxICk7CgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJE9wdF9ibGFua3NfYmVmb3JlID09IERFTEVURSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZWxldGVfaWZfYmxhbmstPiggJGliZWcgLSAxICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBXZSB3aWxsIG9ubHkgcHV0IGJsYW5rcyBiZWZvcmUgY29kZSBsaW5lcy4gV2UgY291bGQgbG9vc2VuCiAgICAgICAgICAgICAgICAjIHRoaXMgcnVsZSBhIGxpdHRsZSwgYnV0IHdlIGhhdmUgdG8gYmUgdmVyeSBjYXJlZnVsIGJlY2F1c2UKICAgICAgICAgICAgICAgICMgZm9yIGV4YW1wbGUgd2UgY2VydGFpbmx5IGRvbid0IHdhbnQgdG8gZHJvcCBhIGJsYW5rIGxpbmUKICAgICAgICAgICAgICAgICMgYWZ0ZXIgYSBsaW5lIGxpa2UgdGhpczoKICAgICAgICAgICAgICAgICMgICBteSAkdmFyID0gPDxFT007CiAgICAgICAgICAgICAgICBpZiAoICRsaW5lX3R5cGUgZXEgJ0NPREUnICYmIGRlZmluZWQoJEtfZmlyc3QpICkgewoKICAgICAgICAgICAgICAgICAgICAjIC0gRG8gbm90IHB1dCBhIGJsYW5rIGJlZm9yZSBhIGxpbmUgb2YgZGlmZmVyZW50IGxldmVsCiAgICAgICAgICAgICAgICAgICAgIyAtIERvIG5vdCBwdXQgYSBibGFuayBsaW5lIGlmIHdlIGVuZGVkIHRoZSBzZWFyY2ggYmFkbHkKICAgICAgICAgICAgICAgICAgICAjIC0gRG8gbm90IHB1dCBhIGJsYW5rIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKICAgICAgICAgICAgICAgICAgICAjIC0gRG8gbm90IHB1dCBhIGJsYW5rIGxpbmUgYmVmb3JlIGEgaGFuZ2luZyBzaWRlIGNvbW1lbnQKICAgICAgICAgICAgICAgICAgICBteSAkbGV2ZWwgICAgPSAkckxMLT5bJEtfZmlyc3RdLT5bX0xFVkVMX107CiAgICAgICAgICAgICAgICAgICAgbXkgJGNpX2xldmVsID0gJHJMTC0+WyRLX2ZpcnN0XS0+W19DSV9MRVZFTF9dOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICAgJGxldmVsID09ICRsZXZlbF9iZWcKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGNpX2xldmVsID09IDAKICAgICAgICAgICAgICAgICAgICAgICAgJiYgISRiYWRfZW5kaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRpZW5kIDwgQHskcmxpbmVzfQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkQ09ERV90eXBlIG5lICdIU0MnICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJE9wdF9ibGFua3NfYWZ0ZXIgPT0gSU5TRVJUICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluc2VydF9ibGFua19hZnRlci0+KCRpZW5kKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRPcHRfYmxhbmtzX2FmdGVyID09IERFTEVURSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZWxldGVfaWZfYmxhbmstPiggJGllbmQgKyAxICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHNwbGl0X2ludG9fc3ViX2dyb3Vwcy0+KCk7CiAgICAgICAgfQoKICAgICAgICAjIHJlc2V0IGZvciBhbm90aGVyIGdyb3VwCiAgICAgICAgJGliZWcgICAgICA9IC0xOwogICAgICAgICRpZW5kICAgICAgPSB1bmRlZjsKICAgICAgICAkbGV2ZWxfYmVnID0gLTE7CiAgICAgICAgJEtfY2xvc2luZyA9IHVuZGVmOwogICAgICAgIEBncm91cCAgICAgPSAoKTsKICAgICAgICBAc3ViZ3JvdXAgID0gKCk7CiAgICAgICAgQGlibGFua3MgICA9ICgpOwogICAgfTsKCiAgICBteSAkZmluZF9jb250YWluZXJfZW5kID0gc3ViIHsKCiAgICAgICAgIyBJZiB0aGUga2V5d29yZCBsaW5lcyBlbmRzIHdpdGggYW4gb3BlbiB0b2tlbiwgZmluZCB0aGUgY2xvc2luZyB0b2tlbgogICAgICAgICMgJyRLX2Nsb3NpbmcnIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBza2lwIHBhc3QgdGhlIGNvbnRlbnRzIG9mIHRoZQogICAgICAgICMgY29udGFpbmVyLgogICAgICAgIHJldHVybiBpZiAoICRLX2xhc3QgPD0gJEtfZmlyc3QgKTsKICAgICAgICBteSAkS0sgICAgICAgID0gJEtfbGFzdDsKICAgICAgICBteSAkdHlwZV9sYXN0ID0gJHJMTC0+WyRLS10tPltfVFlQRV9dOwogICAgICAgIG15ICR0b2tfbGFzdCAgPSAkckxMLT5bJEtLXS0+W19UT0tFTl9dOwogICAgICAgIGlmICggJHR5cGVfbGFzdCBlcSAnIycgKSB7CiAgICAgICAgICAgICRLSyAgICAgICA9ICRzZWxmLT5LX3ByZXZpb3VzX25vbmJsYW5rKCRLSyk7CiAgICAgICAgICAgICR0b2tfbGFzdCA9ICRyTEwtPlskS0tdLT5bX1RPS0VOX107CiAgICAgICAgfQogICAgICAgIGlmICggJEtLID4gJEtfZmlyc3QgJiYgJHRva19sYXN0ID1+IC9eW1woXHtcW10kLyApIHsKCiAgICAgICAgICAgIG15ICR0eXBlX3NlcXVlbmNlID0gJHJMTC0+WyRLS10tPltfVFlQRV9TRVFVRU5DRV9dOwogICAgICAgICAgICBteSAkbGV2ICAgICAgICAgICA9ICRyTEwtPlskS0tdLT5bX0xFVkVMX107CiAgICAgICAgICAgIGlmICggJGxldiA9PSAkbGV2ZWxfYmVnICkgewogICAgICAgICAgICAgICAgJEtfY2xvc2luZyA9ICRLX2Nsb3NpbmdfY29udGFpbmVyLT57JHR5cGVfc2VxdWVuY2V9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICBteSAkYWRkX3RvX2dyb3VwID0gc3ViIHsKICAgICAgICBteSAoICRpLCAkdG9rZW4sICRsZXZlbCApID0gQF87CgogICAgICAgICMgRW5kIHRoZSBwcmV2aW91cyBncm91cCBpZiB3ZSBoYXZlIHJlYWNoZWQgdGhlIG1heGltdW0KICAgICAgICAjIGdyb3VwIHNpemUKICAgICAgICBpZiAoICRPcHRfc2l6ZV9tYXggJiYgQGdyb3VwID49ICRPcHRfc2l6ZV9tYXggKSB7CiAgICAgICAgICAgICRlbmRfZ3JvdXAtPigpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCBAZ3JvdXAgPT0gMCApIHsKICAgICAgICAgICAgJGliZWcgICAgICA9ICRpOwogICAgICAgICAgICAkbGV2ZWxfYmVnID0gJGxldmVsOwogICAgICAgICAgICAkY291bnQgICAgID0gMDsKICAgICAgICB9CgogICAgICAgICRjb3VudCsrOwogICAgICAgICRpZW5kID0gJGk7CgogICAgICAgICMgTmV3IHN1Yi1ncm91cD8KICAgICAgICBpZiAoICFAZ3JvdXAgfHwgJHRva2VuIG5lICRncm91cFstMV0tPlsxXSApIHsKICAgICAgICAgICAgcHVzaCBAc3ViZ3JvdXAsIHNjYWxhcihAZ3JvdXApOwogICAgICAgIH0KICAgICAgICBwdXNoIEBncm91cCwgWyAkaSwgJHRva2VuLCAkY291bnQgXTsKCiAgICAgICAgIyByZW1lbWJlciBpZiB0aGlzIGxpbmUgZW5kcyBpbiBhbiBvcGVuIGNvbnRhaW5lcgogICAgICAgICRmaW5kX2NvbnRhaW5lcl9lbmQtPigpOwoKICAgICAgICByZXR1cm47CiAgICB9OwoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIGxvb3Agb3ZlciBhbGwgbGluZXMgb2YgdGhlIHNvdXJjZQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICRlbmRfZ3JvdXAtPigpOwogICAgbXkgJGkgPSAtMTsKICAgIGZvcmVhY2ggbXkgJGxpbmVfb2ZfdG9rZW5zICggQHskcmxpbmVzfSApIHsKCiAgICAgICAgJGkrKzsKICAgICAgICBsYXN0CiAgICAgICAgICBpZiAoICRPcHRfcmVwZWF0X2NvdW50ID4gMAogICAgICAgICAgICAmJiAkbnVtYmVyX29mX2dyb3Vwc19zZWVuID49ICRPcHRfcmVwZWF0X2NvdW50ICk7CgogICAgICAgICRDT0RFX3R5cGUgPSAiIjsKICAgICAgICAkS19maXJzdCAgID0gdW5kZWY7CiAgICAgICAgJEtfbGFzdCAgICA9IHVuZGVmOwogICAgICAgICRsaW5lX3R5cGUgPSAkbGluZV9vZl90b2tlbnMtPntfbGluZV90eXBlfTsKCiAgICAgICAgIyBhbHdheXMgZW5kIGEgZ3JvdXAgYXQgbm9uLUNPREUKICAgICAgICBpZiAoICRsaW5lX3R5cGUgbmUgJ0NPREUnICkgeyAkZW5kX2dyb3VwLT4oKTsgbmV4dCB9CgogICAgICAgICRDT0RFX3R5cGUgPSAkbGluZV9vZl90b2tlbnMtPntfY29kZV90eXBlfTsKCiAgICAgICAgIyBlbmQgYW55IGdyb3VwIGF0IGEgZm9ybWF0IHNraXBwaW5nIGxpbmUKICAgICAgICBpZiAoICRDT0RFX3R5cGUgJiYgJENPREVfdHlwZSBlcSAnRlMnICkgewogICAgICAgICAgICAkZW5kX2dyb3VwLT4oKTsKICAgICAgICAgICAgbmV4dDsKICAgICAgICB9CgogICAgICAgICMgY29udGludWUgaW4gYSB2ZXJiYXRpbSAoVkIpIHR5cGU7IGl0IG1heSBiZSBxdW90ZWQgdGV4dAogICAgICAgIGlmICggJENPREVfdHlwZSBlcSAnVkInICkgewogICAgICAgICAgICBpZiAoICRpYmVnID49IDAgKSB7ICRpZW5kID0gJGk7IH0KICAgICAgICAgICAgbmV4dDsKICAgICAgICB9CgogICAgICAgICMgYW5kIGNvbnRpbnVlIGluIGJsYW5rIChCTCkgdHlwZXMKICAgICAgICBpZiAoICRDT0RFX3R5cGUgZXEgJ0JMJyApIHsKICAgICAgICAgICAgaWYgKCAkaWJlZyA+PSAwICkgewogICAgICAgICAgICAgICAgJGllbmQgPSAkaTsKICAgICAgICAgICAgICAgIHB1c2ggQHtpYmxhbmtzfSwgJGk7CgogICAgICAgICAgICAgICAgIyBwcm9wYWdhdGUgY3VycmVudCBzdWJncm91cCB0b2tlbgogICAgICAgICAgICAgICAgbXkgJHRvayA9ICRncm91cFstMV0tPlsxXTsKICAgICAgICAgICAgICAgIHB1c2ggQGdyb3VwLCBbICRpLCAkdG9rLCAkY291bnQgXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBuZXh0OwogICAgICAgIH0KCiAgICAgICAgIyBleGFtaW5lIHRoZSBmaXJzdCB0b2tlbiBvZiB0aGlzIGxpbmUKICAgICAgICBteSAkcktfcmFuZ2UgPSAkbGluZV9vZl90b2tlbnMtPntfcktfcmFuZ2V9OwogICAgICAgICggJEtfZmlyc3QsICRLX2xhc3QgKSA9IEB7JHJLX3JhbmdlfTsKICAgICAgICBpZiAoICFkZWZpbmVkKCRLX2ZpcnN0KSApIHsKCiAgICAgICAgICAgICMgU29tZXdoYXQgdW5leHBlY3RlZCBibGFuayBsaW5lLi4KICAgICAgICAgICAgIyAkcktfcmFuZ2UgaXMgbm9ybWFsbHkgZGVmaW5lZCBmb3IgbGluZSB0eXBlIENPREUsIGJ1dCB0aGlzIGNhbgogICAgICAgICAgICAjIGhhcHBlbiBmb3IgZXhhbXBsZSBpZiB0aGUgaW5wdXQgbGluZSB3YXMgYSBzaW5nbGUgc2VtaWNvbG9uIHdoaWNoCiAgICAgICAgICAgICMgaXMgYmVpbmcgZGVsZXRlZC4gIEluIHRoYXQgY2FzZSB0aGVyZSB3YXMgY29kZSBpbiB0aGUgaW5wdXQKICAgICAgICAgICAgIyBmaWxlIGJ1dCBpdCBpcyBub3QgYmVpbmcgcmV0YWluZWQuIFNvIHdlIGNhbiBzaWxlbnRseSByZXR1cm4uCiAgICAgICAgICAgIHJldHVybiAkcmhhc2hfb2ZfZGVzaXJlczsKICAgICAgICB9CgogICAgICAgIG15ICRsZXZlbCAgICA9ICRyTEwtPlskS19maXJzdF0tPltfTEVWRUxfXTsKICAgICAgICBteSAkdHlwZSAgICAgPSAkckxMLT5bJEtfZmlyc3RdLT5bX1RZUEVfXTsKICAgICAgICBteSAkdG9rZW4gICAgPSAkckxMLT5bJEtfZmlyc3RdLT5bX1RPS0VOX107CiAgICAgICAgbXkgJGNpX2xldmVsID0gJHJMTC0+WyRLX2ZpcnN0XS0+W19DSV9MRVZFTF9dOwoKICAgICAgICAjIHNlZSBpZiB0aGlzIGlzIGEgY29kZSB0eXBlIHdlIHNlZWsgKGkuZS4gY29tbWVudCkKICAgICAgICBpZiAoICAgJENPREVfdHlwZQogICAgICAgICAgICAmJiAkT3B0X2NvbW1lbnRfcGF0dGVybgogICAgICAgICAgICAmJiAkQ09ERV90eXBlID1+IC8kT3B0X2NvbW1lbnRfcGF0dGVybi8gKQogICAgICAgIHsKCiAgICAgICAgICAgIG15ICR0b2sgPSAkQ09ERV90eXBlOwoKICAgICAgICAgICAgIyBDb250aW51aW5nIGEgZ3JvdXAKICAgICAgICAgICAgaWYgKCAkaWJlZyA+PSAwICYmICRsZXZlbCA9PSAkbGV2ZWxfYmVnICkgewogICAgICAgICAgICAgICAgJGFkZF90b19ncm91cC0+KCAkaSwgJHRvaywgJGxldmVsICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgU3RhcnQgbmV3IGdyb3VwCiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgZmlyc3QgZW5kIG9sZCBncm91cCBpZiBhbnk7IHdlIG1pZ2h0IGJlIHN0YXJ0aW5nIG5ldwogICAgICAgICAgICAgICAgIyBrZXl3b3JkcyBhdCBkaWZmZXJlbnQgbGV2ZWwKICAgICAgICAgICAgICAgIGlmICggJGliZWcgPiAwICkgeyAkZW5kX2dyb3VwLT4oKTsgfQogICAgICAgICAgICAgICAgJGFkZF90b19ncm91cC0+KCAkaSwgJHRvaywgJGxldmVsICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbmV4dDsKICAgICAgICB9CgogICAgICAgICMgU2VlIGlmIGl0IGlzIGEga2V5d29yZCB3ZSBzZWVrLCBidXQgbmV2ZXIgc3RhcnQgYSBncm91cCBpbiBhCiAgICAgICAgIyBjb250aW51YXRpb24gbGluZTsgdGhlIGNvZGUgbWF5IGJlIGJhZGx5IGZvcm1hdHRlZC4KICAgICAgICBpZiAoICAgJGNpX2xldmVsID09IDAKICAgICAgICAgICAgJiYgJHR5cGUgZXEgJ2snCiAgICAgICAgICAgICYmICR0b2tlbiA9fiAvJE9wdF9wYXR0ZXJuLyApCiAgICAgICAgewoKICAgICAgICAgICAgIyBDb250aW51aW5nIGEga2V5d29yZCBncm91cAogICAgICAgICAgICBpZiAoICRpYmVnID49IDAgJiYgJGxldmVsID09ICRsZXZlbF9iZWcgKSB7CiAgICAgICAgICAgICAgICAkYWRkX3RvX2dyb3VwLT4oICRpLCAkdG9rZW4sICRsZXZlbCApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFN0YXJ0IG5ldyBrZXl3b3JkIGdyb3VwCiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgZmlyc3QgZW5kIG9sZCBncm91cCBpZiBhbnk7IHdlIG1pZ2h0IGJlIHN0YXJ0aW5nIG5ldwogICAgICAgICAgICAgICAgIyBrZXl3b3JkcyBhdCBkaWZmZXJlbnQgbGV2ZWwKICAgICAgICAgICAgICAgIGlmICggJGliZWcgPiAwICkgeyAkZW5kX2dyb3VwLT4oKTsgfQogICAgICAgICAgICAgICAgJGFkZF90b19ncm91cC0+KCAkaSwgJHRva2VuLCAkbGV2ZWwgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBuZXh0OwogICAgICAgIH0KCiAgICAgICAgIyBUaGlzIGlzIG5vdCBvbmUgb2Ygb3VyIGtleXdvcmRzLCBidXQgd2UgYXJlIGluIGEga2V5d29yZCBncm91cAogICAgICAgICMgc28gc2VlIGlmIHdlIHNob3VsZCBjb250aW51ZSBvciBxdWl0CiAgICAgICAgZWxzaWYgKCAkaWJlZyA+PSAwICkgewoKICAgICAgICAgICAgIyAtIGJhaWwgb3V0IG9uIGEgbGFyZ2UgbGV2ZWwgY2hhbmdlOyB3ZSBtYXkgaGF2ZSB3YWxrZWQgaW50byBhCiAgICAgICAgICAgICMgICBkYXRhIHN0cnVjdHVyZSBvciBhbm95bW91cyBzdWIgY29kZS4KICAgICAgICAgICAgaWYgKCAkbGV2ZWwgPiAkbGV2ZWxfYmVnICsgMSB8fCAkbGV2ZWwgPCAkbGV2ZWxfYmVnICkgewogICAgICAgICAgICAgICAgJGVuZF9ncm91cC0+KCk7CiAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIC0ga2VlcCBnb2luZyBvbiBhIGNvbnRpbnVhdGlvbiBsaW5lIG9mIHRoZSBzYW1lIGxldmVsLCBzaW5jZQogICAgICAgICAgICAjICAgaXQgaXMgcHJvYmFibHkgYSBjb250aW51YXRpb24gb2Ygb3VyIHByZXZpb3VzIGtleXdvcmQsCiAgICAgICAgICAgICMgLSBhbmQga2VlcCBnb2luZyBwYXN0IGhhbmdpbmcgc2lkZSBjb21tZW50cyBiZWNhdXNlIHdlIG5ldmVyCiAgICAgICAgICAgICMgICB3YW50IHRvIGludGVycnVwdCB0aGVtLgogICAgICAgICAgICBpZiAoICggKCAkbGV2ZWwgPT0gJGxldmVsX2JlZyApICYmICRjaV9sZXZlbCA+IDAgKQogICAgICAgICAgICAgICAgfHwgJENPREVfdHlwZSBlcSAnSFNDJyApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRpZW5kID0gJGk7CiAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIC0gY29udGludWUgaWYgaWYgd2UgYXJlIHdpdGhpbiBpbiBhIGNvbnRhaW5lciB3aGljaCBzdGFydGVkIHdpdGgKICAgICAgICAgICAgIyB0aGUgbGluZSBvZiB0aGUgcHJldmlvdXMga2V5d29yZC4KICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCRLX2Nsb3NpbmcpICYmICRLX2ZpcnN0IDw9ICRLX2Nsb3NpbmcgKSB7CgogICAgICAgICAgICAgICAgIyBjb250aW51ZSBpZiBlbnRpcmUgbGluZSBpcyB3aXRoaW4gY29udGFpbmVyCiAgICAgICAgICAgICAgICBpZiAoICRLX2xhc3QgPD0gJEtfY2xvc2luZyApIHsgJGllbmQgPSAkaTsgbmV4dCB9CgogICAgICAgICAgICAgICAgIyBjb250aW51ZSBhdCApOyBvciB9OyBvciBdOwogICAgICAgICAgICAgICAgbXkgJEtLID0gJEtfY2xvc2luZyArIDE7CiAgICAgICAgICAgICAgICBpZiAoICRyTEwtPlskS0tdLT5bX1RZUEVfXSBlcSAnOycgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkS0sgPCAkS19sYXN0ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRyTEwtPlsgKyskS0sgXS0+W19UWVBFX10gZXEgJ2InICkgeyArKyRLSyB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJEtLID4gJEtfbGFzdCB8fCAkckxMLT5bJEtLXS0+W19UWVBFX10gbmUgJyMnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGVuZF9ncm91cC0+KDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkaWVuZCA9ICRpOwogICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGVuZF9ncm91cC0+KDEpOwogICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyAtIGVuZCB0aGUgZ3JvdXAgaWYgbm9uZSBvZiB0aGUgYWJvdmUKICAgICAgICAgICAgJGVuZF9ncm91cC0+KCk7CiAgICAgICAgICAgIG5leHQ7CiAgICAgICAgfQoKICAgICAgICAjIG5vdCBpbiBhIGtleXdvcmQgZ3JvdXA7IGNvbnRpbnVlCiAgICAgICAgZWxzZSB7IG5leHQgfQogICAgfQoKICAgICMgZW5kIG9mIGxvb3Agb3ZlciBhbGwgbGluZXMKICAgICRlbmRfZ3JvdXAtPigpOwogICAgcmV0dXJuICRyaGFzaF9vZl9kZXNpcmVzOwoKfSAjIyBlbmQgc3ViIGtleXdvcmRfZ3JvdXBfc2NhbgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQ09ERSBTRUNUSU9OIDc6IFByb2Nlc3MgbGluZXMgb2YgY29kZQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnsgICAgIyMgYmVnaW4gY2xvc3VyZSBwcm9jZXNzX2xpbmVfb2ZfQ09ERQoKICAgICMgVGhlIHJvdXRpbmVzIGluIHRoaXMgY2xvc3VyZSByZWNlaXZlIGxpbmVzIG9mIGNvZGUgYW5kIGNvbWJpbmUgdGhlbSBpbnRvCiAgICAjICdiYXRjaGVzJyBhbmQgc2VuZCB0aGVtIGFsb25nLiBBICdiYXRjaCcgaXMgdGhlIHVuaXQgb2YgY29kZSB3aGljaCBjYW4gYmUKICAgICMgcHJvY2Vzc2VkIGZ1cnRoZXIgYXMgYSB1bml0LiBJdCBoYXMgdGhlIHByb3BlcnR5IHRoYXQgaXQgaXMgdGhlIGxhcmdlc3QKICAgICMgYW1vdW50IG9mIGNvZGUgaW50byB3aGljaCB3aGljaCBwZXJsdGlkeSBpcyBmcmVlIHRvIHBsYWNlIG9uZSBvciBtb3JlCiAgICAjIGxpbmUgYnJlYWtzIHdpdGhpbiBpdCB3aXRob3V0IHZpb2xhdGluZyBhbnkgY29uc3RyYWludHMuCgogICAgIyBXaGVuIGEgbmV3IGJhdGNoIGlzIGZvcm1lZCBpdCBpcyBzZW50IHRvIHN1YiAnZ3JpbmRfYmF0Y2hfb2ZfY29kZScuCgogICAgIyBmbGFncyBuZWVkZWQgYnkgdGhlIHN0b3JlIHJvdXRpbmUKICAgIG15ICRsaW5lX29mX3Rva2VuczsKICAgIG15ICRub19pbnRlcm5hbF9uZXdsaW5lczsKICAgIG15ICRzaWRlX2NvbW1lbnRfZm9sbG93czsKICAgIG15ICRDT0RFX3R5cGU7CgogICAgIyByYW5nZSBvZiBLIG9mIHRva2VucyBmb3IgdGhlIGN1cnJlbnQgbGluZQogICAgbXkgKCAkS19maXJzdCwgJEtfbGFzdCApOwoKICAgIG15ICggJHJMTCwgJHJhZGp1c3RlZF9sZXZlbHMgKTsKCiAgICAjIHBhc3Qgc3RvcmVkIG5vbmJsYW5rIHRva2VucwogICAgbXkgKAogICAgICAgICRsYXN0X2xhc3Rfbm9uYmxhbmtfdG9rZW4sICAkbGFzdF9sYXN0X25vbmJsYW5rX3R5cGUsCiAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4sICAgICAgICRsYXN0X25vbmJsYW5rX3R5cGUsCiAgICAgICAgJGxhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZSwgICRLX2xhc3Rfbm9uYmxhbmtfY29kZSwKICAgICAgICAkS19sYXN0X2xhc3Rfbm9uYmxhbmtfY29kZSwgJGxvb2tpbmdfZm9yX2Vsc2UsCiAgICAgICAgJGlzX3N0YXRpY19ibG9ja19jb21tZW50LCAgICRiYXRjaF9DT0RFX3R5cGUsCiAgICAgICAgJGxhc3RfbGluZV9oYWRfc2lkZV9jb21tZW50LAogICAgKTsKCiAgICAjIENhbGxlZCBvbmNlIGF0IHRoZSBzdGFydCBvZiBhIG5ldyBmaWxlCiAgICBzdWIgaW5pdGlhbGl6ZV9wcm9jZXNzX2xpbmVfb2ZfQ09ERSB7CiAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gICAgICAgID0gJzsnOwogICAgICAgICRsYXN0X25vbmJsYW5rX3R5cGUgICAgICAgICA9ICc7JzsKICAgICAgICAkbGFzdF9sYXN0X25vbmJsYW5rX3Rva2VuICAgPSAnOyc7CiAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua190eXBlICAgID0gJzsnOwogICAgICAgICRsYXN0X25vbmJsYW5rX2Jsb2NrX3R5cGUgICA9ICIiOwogICAgICAgICRLX2xhc3Rfbm9uYmxhbmtfY29kZSAgICAgICA9IHVuZGVmOwogICAgICAgICRLX2xhc3RfbGFzdF9ub25ibGFua19jb2RlICA9IHVuZGVmOwogICAgICAgICRsb29raW5nX2Zvcl9lbHNlICAgICAgICAgICA9IDA7CiAgICAgICAgJGlzX3N0YXRpY19ibG9ja19jb21tZW50ICAgID0gMDsKICAgICAgICAkYmF0Y2hfQ09ERV90eXBlICAgICAgICAgICAgPSAiIjsKICAgICAgICAkbGFzdF9saW5lX2hhZF9zaWRlX2NvbW1lbnQgPSAwOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIEJhdGNoIHZhcmlhYmxlczogdGhlc2UgZGVzY3JpYmUgdGhlIGN1cnJlbnQgYmF0Y2ggb2YgY29kZSBiZWluZyBmb3JtZWQKICAgICMgYW5kIHNlbnQgZG93biB0aGUgcGlwZWxpbmUuICBUaGV5IGFyZSBpbml0aWFsaXplZCBpbiB0aGUgbmV4dAogICAgIyBzdWIuCiAgICBteSAoICRyYnJhY2VfZm9sbG93ZXIsICRpbmRleF9zdGFydF9vbmVfbGluZV9ibG9jaywKICAgICAgICAkc2VtaWNvbG9uc19iZWZvcmVfYmxvY2tfc2VsZl9kZXN0cnVjdCwKICAgICAgICAkc3RhcnRpbmdfaW5fcXVvdGUsICRlbmRpbmdfaW5fcXVvdGUsICk7CgogICAgIyBDYWxsZWQgYmVmb3JlIHRoZSBzdGFydCBvZiBlYWNoIG5ldyBiYXRjaAogICAgc3ViIGluaXRpYWxpemVfYmF0Y2hfdmFyaWFibGVzIHsKCiAgICAgICAgJG1heF9pbmRleF90b19nbyAgICAgID0gVU5ERUZJTkVEX0lOREVYOwogICAgICAgIEBzdW1tZWRfbGVuZ3Roc190b19nbyA9IEBuZXN0aW5nX2RlcHRoX3RvX2dvID0gKDApOwoKICAgICAgICAjIFRoZSBpbml0aWFsaXphdGlvbiBjb2RlIGZvciB0aGUgcmVtYWluaW5nIGJhdGNoIGFycmF5cyBpcyBhcyBmb2xsb3dzCiAgICAgICAgIyBhbmQgY2FuIGJlIGFjdGl2YXRlZCBmb3IgdGVzdGluZy4gIEJ1dCBwcm9maWxpbmcgc2hvd3MgdGhhdCBpdCBpcwogICAgICAgICMgdGltZS1jb25zdW1pbmcgdG8gcmUtaW5pdGlhbGl6ZSB0aGUgYmF0Y2ggYXJyYXlzIGFuZCBpcyBub3QgbmVjZXNzYXJ5CiAgICAgICAgIyBiZWNhdXNlIHRoZSBtYXhpbXVtIHZhbGlkIHRva2VuLCAkbWF4X2luZGV4X3RvX2dvLCBpcyBjYXJlZnVsbHkKICAgICAgICAjIGNvbnRyb2xsZWQuICBUaGlzIG1lYW5zIGhvd2V2ZXIgdGhhdCBpdCBpcyBub3QgcG9zc2libGUgdG8gZG8gYW55CiAgICAgICAgIyB0eXBlIG9mIGZpbHRlciBvciBtYXAgb3BlcmF0aW9uIGRpcmVjdGx5IG9uIHRoZXNlIGFycmF5cy4gIEFuZCBpdCBpcwogICAgICAgICMgbm90IHBvc3NpYmxlIHRvIHVzZSBuZWdhdGl2ZSBpbmRleGVzLiBBcyBhIHByZWNhdXRpb24gYWdhaW5zdCBwcm9ncmFtCiAgICAgICAgIyBjaGFuZ2VzIHdoaWNoIG1pZ2h0IGRvIHRoaXMsIHN1YiBwYWRfYXJyYXlfdG9fZ28gYWRkcyBzb21lIHVuZGVmcyBhdAogICAgICAgICMgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBiYXRjaCBvZiBkYXRhLgoKICAgICAgICAjIFNvICdsb25nIHN0b3J5IHNob3J0JzogdGhpcyBpcyBhIHdhc3RlIG9mIHRpbWUKICAgICAgICAwICYmIGRvIHsgIzw8PAogICAgICAgIEBibG9ja190eXBlX3RvX2dvICAgICAgICAgICAgPSAoKTsKICAgICAgICBAdHlwZV9zZXF1ZW5jZV90b19nbyAgICAgICAgID0gKCk7CiAgICAgICAgQGNvbnRhaW5lcl9lbnZpcm9ubWVudF90b19nbyA9ICgpOwogICAgICAgIEBib25kX3N0cmVuZ3RoX3RvX2dvICAgICAgICAgPSAoKTsKICAgICAgICBAZm9yY2VkX2JyZWFrcG9pbnRfdG9fZ28gICAgID0gKCk7CiAgICAgICAgQHRva2VuX2xlbmd0aHNfdG9fZ28gICAgICAgICA9ICgpOwogICAgICAgIEBsZXZlbHNfdG9fZ28gICAgICAgICAgICAgICAgPSAoKTsKICAgICAgICBAbWF0ZV9pbmRleF90b19nbyAgICAgICAgICAgID0gKCk7CiAgICAgICAgQGNpX2xldmVsc190b19nbyAgICAgICAgICAgICA9ICgpOwogICAgICAgIEBub2JyZWFrX3RvX2dvICAgICAgICAgICAgICAgPSAoKTsKICAgICAgICBAb2xkX2JyZWFrcG9pbnRfdG9fZ28gICAgICAgID0gKCk7CiAgICAgICAgQHRva2Vuc190b19nbyAgICAgICAgICAgICAgICA9ICgpOwogICAgICAgIEBLX3RvX2dvICAgICAgICAgICAgICAgICAgICAgPSAoKTsKICAgICAgICBAdHlwZXNfdG9fZ28gICAgICAgICAgICAgICAgID0gKCk7CiAgICAgICAgQGxlYWRpbmdfc3BhY2VzX3RvX2dvICAgICAgICA9ICgpOwogICAgICAgIEByZWR1Y2VkX3NwYWNlc190b19nbyAgICAgICAgPSAoKTsKICAgICAgICBAaW5leHRfdG9fZ28gICAgICAgICAgICAgICAgID0gKCk7CiAgICAgICAgQGlwcmV2X3RvX2dvICAgICAgICAgICAgICAgICA9ICgpOwogICAgICAgIH07CgogICAgICAgICRyYnJhY2VfZm9sbG93ZXIgPSB1bmRlZjsKICAgICAgICAkZW5kaW5nX2luX3F1b3RlID0gMDsKICAgICAgICBkZXN0cm95X29uZV9saW5lX2Jsb2NrKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBsZWFkaW5nX3NwYWNlc190b19nbyB7CgogICAgICAgICMgcmV0dXJuIHRoZSBudW1iZXIgb2YgaW5kZW50YXRpb24gc3BhY2VzIGZvciBhIHRva2VuIGluIHRoZSBvdXRwdXQKICAgICAgICAjIHN0cmVhbTsgdGhlc2Ugd2VyZSBwcmV2aW91c2x5IHN0b3JlZCBieSAnc2V0X2xlYWRpbmdfd2hpdGVzcGFjZScuCgogICAgICAgIG15ICgkaWkpID0gQF87CiAgICAgICAgcmV0dXJuIDAgaWYgKCAkaWkgPCAwICk7CiAgICAgICAgbXkgJGluZGVudGF0aW9uID0gJGxlYWRpbmdfc3BhY2VzX3RvX2dvWyRpaV07CiAgICAgICAgcmV0dXJuIHJlZigkaW5kZW50YXRpb24pID8gJGluZGVudGF0aW9uLT5nZXRfc3BhY2VzKCkgOiAkaW5kZW50YXRpb247CiAgICB9CgogICAgc3ViIGNyZWF0ZV9vbmVfbGluZV9ibG9jayB7CiAgICAgICAgKCAkaW5kZXhfc3RhcnRfb25lX2xpbmVfYmxvY2ssICRzZW1pY29sb25zX2JlZm9yZV9ibG9ja19zZWxmX2Rlc3RydWN0ICkKICAgICAgICAgID0gQF87CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBkZXN0cm95X29uZV9saW5lX2Jsb2NrIHsKICAgICAgICAkaW5kZXhfc3RhcnRfb25lX2xpbmVfYmxvY2sgICAgICAgICAgICA9IFVOREVGSU5FRF9JTkRFWDsKICAgICAgICAkc2VtaWNvbG9uc19iZWZvcmVfYmxvY2tfc2VsZl9kZXN0cnVjdCA9IDA7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgUm91dGluZSB0byBwbGFjZSB0aGUgY3VycmVudCB0b2tlbiBpbnRvIHRoZSBvdXRwdXQgc3RyZWFtLgogICAgIyBDYWxsZWQgb25jZSBwZXIgb3V0cHV0IHRva2VuLgoKICAgIHVzZSBjb25zdGFudCBERUJVR19TVE9SRSA9PiAwOwoKICAgIHN1YiBzdG9yZV90b2tlbl90b19nbyB7CgogICAgICAgIG15ICggJHNlbGYsICRLdG9rZW5fdmFycywgJHJ0b2tlbl92YXJzICkgPSBAXzsKCiAgICAgICAgIyBBZGQgb25lIHRva2VuIHRvIHRoZSBuZXh0IGJhdGNoLgogICAgICAgICMgJEt0b2tlbl92YXJzID0gdGhlIGluZGV4IEsgaW4gdGhlIGdsb2JhbCB0b2tlbiBhcnJheQogICAgICAgICMgJHJ0b2tlbl92YXJzID0gJHJMTC0+WyRLdG9rZW5fdmFyc10gPSB0aGUgY29ycmVzcG9uZGluZyB0b2tlbiB2YWx1ZXMKICAgICAgICAjICAgICAgICAgICAgICAgIHVubGVzcyB0aGV5IGFyZSB0ZW1wb3JhcmlseSBiZWluZyBvdmVycmlkZW4KCiAgICAgICAgIyBOT1RFOiBUaGlzIHJvdXRpbmUgbmVlZHMgdG8gYmUgY29kZWQgZWZmaWNpZW50bHkgYmVjYXVzZSBpdCBpcyBjYWxsZWQKICAgICAgICAjIG9uY2UgcGVyIHRva2VuLiAgSSBoYXZlIGdvdHRlbiBpdCBkb3duIGZyb20gdGhlIHNlY29uZCBzbG93ZXN0IHRvIHRoZQogICAgICAgICMgZWlnaHRoIHNsb3dlc3QsIGJ1dCB0aGF0IHN0aWxsIHNlZW1zIHJhdGhlciBzbG93IGZvciB3aGF0IGl0IGRvZXMuCgogICAgICAgICMgVGhpcyBjbG9zdXJlIHZhcmlhYmxlIGhhcyBhbHJlYWR5IGJlZW4gZGVmaW5lZCwgZm9yIGVmZmljaWVuY3k6CiAgICAgICAgIyAgICAgbXkgJHJhZGp1c3RlZF9sZXZlbHMgPSAkc2VsZi0+W19yYWRqdXN0ZWRfbGV2ZWxzX107CgogICAgICAgIG15ICR0eXBlID0gJHJ0b2tlbl92YXJzLT5bX1RZUEVfXTsKCiAgICAgICAgIyBDaGVjayBmb3IgZW1lcmdlbmN5IGZsdXNoLi4uCiAgICAgICAgIyBUaGUgSyBpbmRleGVzIGluIHRoZSBiYXRjaCBtdXN0IGFsd2F5cyBiZSBhIGNvbnRpbnVvdXMgc2VxdWVuY2Ugb2YKICAgICAgICAjIHRoZSBnbG9iYWwgdG9rZW4gYXJyYXkuICBUaGUgYmF0Y2ggcHJvY2VzcyBwcm9ncmFtbWluZyBhc3N1bWVzIHRoaXMuCiAgICAgICAgIyBJZiBzdG9yaW5nIHRoaXMgdG9rZW4gd291bGQgY2F1c2UgdGhpcyByZWxhdGlvbiB0byBmYWlsIHdlIG11c3QgZHVtcAogICAgICAgICMgdGhlIGN1cnJlbnQgYmF0Y2ggYmVmb3JlIHN0b3JpbmcgdGhlIG5ldyB0b2tlbi4gIEl0IGlzIGV4dHJlbWVseSByYXJlCiAgICAgICAgIyBmb3IgdGhpcyB0byBoYXBwZW4uIE9uZSBrbm93biBleGFtcGxlIGlzIHRoZSBmb2xsb3dpbmcgdHdvLWxpbmUKICAgICAgICAjIHNuaXBwZXQgd2hlbiBydW4gd2l0aCBwYXJhbWV0ZXJzCiAgICAgICAgIyAtLW5vYWRkLW5ld2xpbmVzICAtLXNwYWNlLXRlcm1pbmFsLXNlbWljb2xvbjoKICAgICAgICAjICAgIGlmICggJF8gPX4gL1BFTkNJTC8gKSB7ICRwZW5jaWxfZmxhZz0gMSB9IDsgOwogICAgICAgICMgICAgJHl5PTE7CiAgICAgICAgaWYgKCAkbWF4X2luZGV4X3RvX2dvID49IDAgKSB7CiAgICAgICAgICAgIG15ICRLbGFzdCA9ICRLX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dOwogICAgICAgICAgICBpZiAoICRLdG9rZW5fdmFycyAhPSAkS2xhc3QgKyAxICkgewogICAgICAgICAgICAgICAgJHNlbGYtPmZsdXNoX2JhdGNoX29mX0NPREUoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBEbyBub3Qgb3V0cHV0IGNvbnNlY3V0aXZlIGJsYW5rIHRva2VucyAuLi4gdGhpcyBzaG91bGQgbm90CiAgICAgICAgICAgICMgaGFwcGVuLCBidXQgaXQgaXMgd29ydGggY2hlY2tpbmcuICBMYXRlciBjb2RlIGNhbiB0aGVuIG1ha2UgdGhlCiAgICAgICAgICAgICMgc2ltcGxpZnlpbmcgYXNzdW1wdGlvbiB0aGF0IGJsYW5rIHRva2VucyBhcmUgbm90IGNvbnNlY3V0aXZlLgogICAgICAgICAgICBlbHNpZiAoICR0eXBlIGVxICdiJyAmJiAkdHlwZXNfdG9fZ29bJG1heF9pbmRleF90b19nb10gZXEgJ2InICkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICArKyRtYXhfaW5kZXhfdG9fZ287CiAgICAgICAgJGJhdGNoX0NPREVfdHlwZSAgICAgICAgICAgICAgID0gJENPREVfdHlwZTsKICAgICAgICAkS190b19nb1skbWF4X2luZGV4X3RvX2dvXSAgICAgPSAkS3Rva2VuX3ZhcnM7CiAgICAgICAgJHR5cGVzX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dID0gJHR5cGU7CgogICAgICAgICRvbGRfYnJlYWtwb2ludF90b19nb1skbWF4X2luZGV4X3RvX2dvXSAgICA9IDA7CiAgICAgICAgJGZvcmNlZF9icmVha3BvaW50X3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dID0gMDsKICAgICAgICAkbWF0ZV9pbmRleF90b19nb1skbWF4X2luZGV4X3RvX2dvXSAgICAgICAgPSAtMTsKCiAgICAgICAgbXkgJHRva2VuID0gJHRva2Vuc190b19nb1skbWF4X2luZGV4X3RvX2dvXSA9ICRydG9rZW5fdmFycy0+W19UT0tFTl9dOwogICAgICAgIG15ICRjaV9sZXZlbCA9ICRjaV9sZXZlbHNfdG9fZ29bJG1heF9pbmRleF90b19nb10gPQogICAgICAgICAgJHJ0b2tlbl92YXJzLT5bX0NJX0xFVkVMX107CgogICAgICAgICMgQ2xpcCBsZXZlbHMgdG8gemVybyBpZiB0aGVyZSBhcmUgbGV2ZWwgZXJyb3JzIGluIHRoZSBmaWxlLgogICAgICAgICMgV2UgaGFkIHRvIHdhaXQgdW50aWwgbm93IGZvciByZWFzb25zIGV4cGxhaW5lZCBpbiBzdWIgJ3dyaXRlX2xpbmUnLgogICAgICAgIG15ICRsZXZlbCA9ICRydG9rZW5fdmFycy0+W19MRVZFTF9dOwogICAgICAgIGlmICggJGxldmVsIDwgMCApIHsgJGxldmVsID0gMCB9CiAgICAgICAgJGxldmVsc190b19nb1skbWF4X2luZGV4X3RvX2dvXSA9ICRsZXZlbDsKCiAgICAgICAgJG5lc3RpbmdfZGVwdGhfdG9fZ29bJG1heF9pbmRleF90b19nb10gPSAkcnRva2VuX3ZhcnMtPltfU0xFVkVMX107CiAgICAgICAgJGJsb2NrX3R5cGVfdG9fZ29bJG1heF9pbmRleF90b19nb10gICAgPSAkcnRva2VuX3ZhcnMtPltfQkxPQ0tfVFlQRV9dOwogICAgICAgICRjb250YWluZXJfZW52aXJvbm1lbnRfdG9fZ29bJG1heF9pbmRleF90b19nb10gPQogICAgICAgICAgJHJ0b2tlbl92YXJzLT5bX0NPTlRBSU5FUl9FTlZJUk9OTUVOVF9dOwogICAgICAgICR0eXBlX3NlcXVlbmNlX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dID0KICAgICAgICAgICRydG9rZW5fdmFycy0+W19UWVBFX1NFUVVFTkNFX107CgogICAgICAgICRub2JyZWFrX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dID0KICAgICAgICAgICRzaWRlX2NvbW1lbnRfZm9sbG93cyA/IDIgOiAkbm9faW50ZXJuYWxfbmV3bGluZXM7CgogICAgICAgIG15ICRsZW5ndGggPSAkcnRva2VuX3ZhcnMtPltfVE9LRU5fTEVOR1RIX107CgogICAgICAgICMgU2FmZXR5IGNoZWNrIHRoYXQgbGVuZ3RoIGlzIGRlZmluZWQuIFNob3VsZCBub3QgYmUgbmVlZGVkIG5vdy4KICAgICAgICAjIEZvcm1lciBwYXRjaCBmb3IgaW5kZW50LW9ubHksIGluIHdoaWNoIHRoZSBlbnRpcmUgc2V0IG9mIHRva2VucyBpcwogICAgICAgICMgdHVybmVkIGludG8gdHlwZSAncScuIExlbmd0aHMgbWF5IGhhdmUgbm90IGJlZW4gZGVmaW5lZCBiZWNhdXNlIHN1YgogICAgICAgICMgJ3Jlc3BhY2VfdG9rZW5zJyBpcyBieXBhc3NlZC4gV2UgZG8gbm90IG5lZWQgbGVuZ3RocyBpbiB0aGlzIGNhc2UsCiAgICAgICAgIyBidXQgd2Ugd2lsbCB1c2UgdGhlIGNoYXJhY3RlciBjb3VudCB0byBoYXZlIGEgZGVmaW5lZCB2YWx1ZS4gIEluIHRoZQogICAgICAgICMgZnV0dXJlLCBpdCB3b3VsZCBiZSBuaWNlciB0byBoYXZlICdyZXNwYWNlX3Rva2VucycgY29udmVydCB0aGUgbGluZXMKICAgICAgICAjIHRvIHF1b3RlcyBhbmQgZ2V0IGNvcnJlY3QgbGVuZ3Rocy4KICAgICAgICBpZiAoICFkZWZpbmVkKCRsZW5ndGgpICkgeyAkbGVuZ3RoID0gbGVuZ3RoKCR0b2tlbikgfQoKICAgICAgICAkdG9rZW5fbGVuZ3Roc190b19nb1skbWF4X2luZGV4X3RvX2dvXSA9ICRsZW5ndGg7CgogICAgICAgICMgV2Uga2VlcCBhIHJ1bm5pbmcgc3VtIG9mIHRva2VuIGxlbmd0aHMgZnJvbSB0aGUgc3RhcnQgb2YgdGhpcyBiYXRjaDoKICAgICAgICAjICAgc3VtbWVkX2xlbmd0aHNfdG9fZ29bJGldICAgPSB0b3RhbCBsZW5ndGggdG8ganVzdCBiZWZvcmUgdG9rZW4gJGkKICAgICAgICAjICAgc3VtbWVkX2xlbmd0aHNfdG9fZ29bJGkrMV0gPSB0b3RhbCBsZW5ndGggdG8ganVzdCBhZnRlciB0b2tlbiAkaQogICAgICAgICRzdW1tZWRfbGVuZ3Roc190b19nb1sgJG1heF9pbmRleF90b19nbyArIDEgXSA9CiAgICAgICAgICAkc3VtbWVkX2xlbmd0aHNfdG9fZ29bJG1heF9pbmRleF90b19nb10gKyAkbGVuZ3RoOwoKICAgICAgICBteSAkaW5fY29udGludWVkX3F1b3RlID0KICAgICAgICAgICggJEt0b2tlbl92YXJzID09ICRLX2ZpcnN0ICkgJiYgJGxpbmVfb2ZfdG9rZW5zLT57X3N0YXJ0aW5nX2luX3F1b3RlfTsKICAgICAgICBpZiAoICRtYXhfaW5kZXhfdG9fZ28gPT0gMCApIHsKICAgICAgICAgICAgJHN0YXJ0aW5nX2luX3F1b3RlID0gJGluX2NvbnRpbnVlZF9xdW90ZTsKICAgICAgICB9CgogICAgICAgICMgRGVmaW5lIHRoZSBpbmRlbnRhdGlvbiB0aGF0IHRoaXMgdG9rZW4gd2lsbCBoYXZlIGluIHR3byBjYXNlczoKICAgICAgICAjIFdpdGhvdXQgQ0kgPSByZWR1Y2VkX3NwYWNlc190b19nbwogICAgICAgICMgV2l0aCBDSSAgICA9IGxlYWRpbmdfc3BhY2VzX3RvX2dvCiAgICAgICAgaWYgKCRpbl9jb250aW51ZWRfcXVvdGUpIHsKICAgICAgICAgICAgJGxlYWRpbmdfc3BhY2VzX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dID0gMDsKICAgICAgICAgICAgJHJlZHVjZWRfc3BhY2VzX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dID0gMDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRyZWR1Y2VkX3NwYWNlc190b19nb1skbWF4X2luZGV4X3RvX2dvXSA9IG15ICRyZWR1Y2VkX3NwYWNlcyA9CiAgICAgICAgICAgICAgJHJPcHRzX2luZGVudF9jb2x1bW5zICogJHJhZGp1c3RlZF9sZXZlbHMtPlskS3Rva2VuX3ZhcnNdOwogICAgICAgICAgICAkbGVhZGluZ19zcGFjZXNfdG9fZ29bJG1heF9pbmRleF90b19nb10gPQogICAgICAgICAgICAgICRyZWR1Y2VkX3NwYWNlcyArICRyT3B0c19jb250aW51YXRpb25faW5kZW50YXRpb24gKiAkY2lfbGV2ZWw7CiAgICAgICAgfQoKICAgICAgICAjIENvcnJlY3QgdGhlc2UgdmFsdWVzIGlmIC1scCBpcyB1c2VkCiAgICAgICAgaWYgKCRyT3B0c19saW5lX3VwX3BhcmVudGhlc2VzKSB7CiAgICAgICAgICAgICRzZWxmLT5zZXRfbGVhZGluZ193aGl0ZXNwYWNlKCAkS3Rva2VuX3ZhcnMsICRLX2xhc3Rfbm9uYmxhbmtfY29kZSwKICAgICAgICAgICAgICAgICRLX2xhc3RfbGFzdF9ub25ibGFua19jb2RlLCAkbGV2ZWwsICRjaV9sZXZlbCwKICAgICAgICAgICAgICAgICRpbl9jb250aW51ZWRfcXVvdGUgKTsKICAgICAgICB9CgogICAgICAgIERFQlVHX1NUT1JFICYmIGRvIHsKICAgICAgICAgICAgbXkgKCAkYSwgJGIsICRjICkgPSBjYWxsZXIoKTsKICAgICAgICAgICAgcHJpbnQgU1RET1VUCiJTVE9SRTogZnJvbSAkYSAkYzogc3RvcmluZyB0b2tlbiAkdG9rZW4gdHlwZSAkdHlwZSBsZXY9JGxldmVsIGF0ICRtYXhfaW5kZXhfdG9fZ29cbiI7CiAgICAgICAgfTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3ViIGZsdXNoX2JhdGNoX29mX0NPREUgewoKICAgICAgICAjIEZpbmlzaCBhbnkgYmF0Y2ggcGFja2FnaW5nIGFuZCBjYWxsIHRoZSBwcm9jZXNzIHJvdXRpbmUuCiAgICAgICAgIyBUaGlzIG11c3QgYmUgdGhlIG9ubHkgY2FsbCB0byBncmluZF9iYXRjaF9vZl9DT0RFKCkKICAgICAgICBteSAoJHNlbGYpID0gQF87CgogICAgICAgIHJldHVybiB1bmxlc3MgKCAkbWF4X2luZGV4X3RvX2dvID49IDAgKTsKCiAgICAgICAgIyBDcmVhdGUgYW4gYXJyYXkgdG8gaG9sZCB2YXJpYWJsZXMgZm9yIHRoaXMgYmF0Y2gKICAgICAgICBteSAkdGhpc19iYXRjaCA9IFtdOwogICAgICAgICR0aGlzX2JhdGNoLT5bX3N0YXJ0aW5nX2luX3F1b3RlX10gPSAkc3RhcnRpbmdfaW5fcXVvdGU7CiAgICAgICAgJHRoaXNfYmF0Y2gtPltfZW5kaW5nX2luX3F1b3RlX10gICA9ICRlbmRpbmdfaW5fcXVvdGU7CiAgICAgICAgJHRoaXNfYmF0Y2gtPltfbWF4X2luZGV4X3RvX2dvX10gICA9ICRtYXhfaW5kZXhfdG9fZ287CiAgICAgICAgJHRoaXNfYmF0Y2gtPltfcktfdG9fZ29fXSAgICAgICAgICA9IFxAS190b19nbzsKICAgICAgICAkdGhpc19iYXRjaC0+W19iYXRjaF9DT0RFX3R5cGVfXSAgID0gJGJhdGNoX0NPREVfdHlwZTsKCiAgICAgICAgIyBUaGUgZmxhZyAkaXNfc3RhdGljX2Jsb2NrX2NvbW1lbnQgYXBwbGllcyB0byB0aGUgbGluZSB3aGljaCBqdXN0CiAgICAgICAgIyBhcnJpdmVkLiBTbyBpdCBvbmx5IGFwcGxpZXMgaWYgd2UgYXJlIG91dHB1dHRpbmcgdGhhdCBsaW5lLgogICAgICAgICR0aGlzX2JhdGNoLT5bX2lzX3N0YXRpY19ibG9ja19jb21tZW50X10gPQogICAgICAgICAgICAgZGVmaW5lZCgkS19maXJzdCkKICAgICAgICAgICYmICRtYXhfaW5kZXhfdG9fZ28gPT0gMAogICAgICAgICAgJiYgJEtfdG9fZ29bMF0gPT0gJEtfZmlyc3QgPyAkaXNfc3RhdGljX2Jsb2NrX2NvbW1lbnQgOiAwOwoKICAgICAgICAkc2VsZi0+W190aGlzX2JhdGNoX10gPSAkdGhpc19iYXRjaDsKCiAgICAgICAgJGxhc3RfbGluZV9oYWRfc2lkZV9jb21tZW50ID0KICAgICAgICAgICRtYXhfaW5kZXhfdG9fZ28gPiAwICYmICR0eXBlc190b19nb1skbWF4X2luZGV4X3RvX2dvXSBlcSAnIyc7CgogICAgICAgICRzZWxmLT5ncmluZF9iYXRjaF9vZl9DT0RFKCk7CgogICAgICAgICMgRG9uZSAuLiB0aGlzIGJhdGNoIGlzIGhpc3RvcnkKICAgICAgICAkc2VsZi0+W190aGlzX2JhdGNoX10gPSBbXTsKCiAgICAgICAgaW5pdGlhbGl6ZV9iYXRjaF92YXJpYWJsZXMoKTsKICAgICAgICBpbml0aWFsaXplX2ZvcmNlZF9icmVha3BvaW50X3ZhcnMoKTsKICAgICAgICBpbml0aWFsaXplX2dudV9iYXRjaF92YXJzKCkKICAgICAgICAgIGlmICRyT3B0c19saW5lX3VwX3BhcmVudGhlc2VzOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3ViIGVuZF9iYXRjaCB7CgogICAgICAgICMgZW5kIHRoZSBjdXJyZW50IGJhdGNoLCBFWENFUFQgZm9yIGEgZmV3IHNwZWNpYWwgY2FzZXMKICAgICAgICBteSAoJHNlbGYpID0gQF87CgogICAgICAgICMgRXhjZXB0aW9uIDE6IERvIG5vdCBlbmQgbGluZSBpbiBhIHdlbGQKICAgICAgICByZXR1cm4KICAgICAgICAgIGlmICggJHRvdGFsX3dlbGRfY291bnQKICAgICAgICAgICAgJiYgJHNlbGYtPndlbGRfbGVuX3JpZ2h0X3RvX2dvKCRtYXhfaW5kZXhfdG9fZ28pICk7CgogICAgICAgICMgRXhjZXB0aW9uIDI6IGp1c3Qgc2V0IGEgdGVudGF0aXZlIGJyZWFrcG9pbnQgaWYgd2UgbWlnaHQgYmUgaW4gYQogICAgICAgICMgb25lLWxpbmUgYmxvY2sKICAgICAgICBpZiAoICRpbmRleF9zdGFydF9vbmVfbGluZV9ibG9jayAhPSBVTkRFRklORURfSU5ERVggKSB7CiAgICAgICAgICAgICRzZWxmLT5zZXRfZm9yY2VkX2JyZWFrcG9pbnQoJG1heF9pbmRleF90b19nbyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRzZWxmLT5mbHVzaF9iYXRjaF9vZl9DT0RFKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBmbHVzaF92ZXJ0aWNhbF9hbGlnbmVyIHsKICAgICAgICBteSAoJHNlbGYpID0gQF87CiAgICAgICAgbXkgJHZhbyA9ICRzZWxmLT5bX3ZlcnRpY2FsX2FsaWduZXJfb2JqZWN0X107CiAgICAgICAgJHZhby0+Zmx1c2goKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBmbHVzaCBpcyBjYWxsZWQgdG8gb3V0cHV0IGFueSB0b2tlbnMgaW4gdGhlIHBpcGVsaW5lLCBzbyB0aGF0CiAgICAjIGFuIGFsdGVybmF0ZSBzb3VyY2Ugb2YgbGluZXMgY2FuIGJlIHdyaXR0ZW4gaW4gdGhlIGNvcnJlY3Qgb3JkZXIKICAgIHN1YiBmbHVzaCB7CiAgICAgICAgbXkgKCAkc2VsZiwgJENPREVfdHlwZSApID0gQF87CgogICAgICAgICMgZW5kIHRoZSBjdXJyZW50IGJhdGNoIHdpdGggMSBleGNlcHRpb24KCiAgICAgICAgZGVzdHJveV9vbmVfbGluZV9ibG9jaygpOwoKICAgICAgICAjIEV4Y2VwdGlvbjogaWYgd2UgYXJlIGZsdXNoaW5nIHdpdGhpbiB0aGUgY29kZSBzdHJlYW0gb25seSB0byBpbnNlcnQKICAgICAgICAjIGJsYW5rIGxpbmUocyksIHRoZW4gd2UgY2FuIGtlZXAgdGhlIGJhdGNoIGludGFjdCBhdCBhIHdlbGQuIFRoaXMKICAgICAgICAjIGltcHJvdmVzIGZvcm1hdHRpbmcgb2YgLWNlLiAgU2VlIHRlc3QgJ2NlMS5jZScKICAgICAgICBpZiAoICRDT0RFX3R5cGUgJiYgJENPREVfdHlwZSBlcSAnQkwnICkgeyAkc2VsZi0+ZW5kX2JhdGNoKCkgfQoKICAgICAgICAjIG90aGVyd2lzZSwgd2UgaGF2ZSB0byBzaHV0IHRoaW5ncyBkb3duIGNvbXBsZXRlbHkuCiAgICAgICAgZWxzZSB7ICRzZWxmLT5mbHVzaF9iYXRjaF9vZl9DT0RFKCkgfQoKICAgICAgICAkc2VsZi0+Zmx1c2hfdmVydGljYWxfYWxpZ25lcigpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgcHJvY2Vzc19saW5lX29mX0NPREUgewoKICAgICAgICBteSAoICRzZWxmLCAkbXlfbGluZV9vZl90b2tlbnMgKSA9IEBfOwoKICAgICAgICAjIFRoaXMgcm91dGluZSBpcyBjYWxsZWQgb25jZSBwZXIgSU5QVVQgbGluZSB0byBwcm9jZXNzIGFsbCBvZiB0aGUKICAgICAgICAjIHRva2VucyBvbiB0aGF0IGxpbmUuCgogICAgICAgICMgSXQgb3V0cHV0cyBmdWxsLWxpbmUgY29tbWVudHMgYW5kIGJsYW5rIGxpbmVzIGltbWVkaWF0ZWx5LgoKICAgICAgICAjIFRoZSB0b2tlbnMgYXJlIGNvcGllZCBvbmUtYnktb25lIGZyb20gdGhlIGdsb2JhbCB0b2tlbiBhcnJheSAkckxMIHRvCiAgICAgICAgIyBhIHNldCBvZiAnX3RvX2dvJyBhcnJheXMgd2hpY2ggY29sbGVjdCBiYXRjaGVzIG9mIHRva2VucyBmb3IgYQogICAgICAgICMgZnVydGhlciBwcm9jZXNzaW5nIHZpYSBjYWxscyB0byAnc3ViIHN0b3JlX3Rva2VuX3RvX2dvJywgdW50aWwgYSB3ZWxsCiAgICAgICAgIyBkZWZpbmVkICdzdHJ1Y3R1cmFsJyBicmVhayBwb2ludCogb3IgJ2ZvcmNlZCcgYnJlYWtwb2ludCogaXMgcmVhY2hlZC4KICAgICAgICAjIFRoZW4sIHRoZSBiYXRjaCBvZiBjb2xsZWN0ZWQgJ190b19nbycgdG9rZW5zIGlzIHBhc3NlZCBhbG9uZyB0byAnc3ViCiAgICAgICAgIyBncmluZF9iYXRjaF9vZl9DT0RFJyBmb3IgZnVydGhlciBwcm9jZXNzaW5nLgoKICAgICAgICAjICogJ3N0cnVjdHVyYWwnIGJyZWFrIHBvaW50cyBhcmUgYmFzaWNhbGx5IGxpbmUgYnJlYWtzIGNvcnJlc3BvbmRpbmcKICAgICAgICAjIHRvIGNvZGUgYmxvY2tzLiAgQW4gZXhhbXBsZSBpcyBhIGNoYWluIG9mIGlmLWVsc2lmLWVsc2Ugc3RhdGVtZW50cywKICAgICAgICAjIHdoaWNoIHNob3VsZCB0eXBpY2FsbHkgYmUgYnJva2VuIGF0IHRoZSBvcGVuaW5nIGFuZCBjbG9zaW5nIGJyYWNlcy4KCiAgICAgICAgIyAqICdmb3JjZWQnIGJyZWFrIHBvaW50cyBhcmUgYnJlYWtzIHJlcXVpcmVkIGJ5IHNpZGUgY29tbWVudHMgb3IgYnkKICAgICAgICAjIHNwZWNpYWwgdXNlciBjb250cm9scy4KCiAgICAgICAgIyBTbyB0aGlzIHJvdXRpbmUgaXMganVzdCBtYWtpbmcgYW4gaW5pdGlhbCBzZXQgb2YgcmVxdWlyZWQgbGluZQogICAgICAgICMgYnJlYWtzLCBiYXNpY2FsbHkgcmVnYXJkbGVzcyBvZiB0aGUgbWF4aW11bSByZXF1ZXN0ZWQgbGluZSBsZW5ndGguCiAgICAgICAgIyBUaGUgc3Vic2VxdWVudCBzdGFnZSBvZiBmb3JtYXRpbmcgbWFrZSBhZGRpdGlvbmFsIGxpbmUgYnJlYWtzCiAgICAgICAgIyBhcHByb3ByaWF0ZSBmb3IgbGlzdHMgYW5kIGxvZ2ljYWwgc3RydWN0dXJlcywgYW5kIHRvIGtlZXAgbGluZQogICAgICAgICMgbGVuZ3RocyBiZWxvdyB0aGUgcmVxdWVzdGVkIG1heGltdW0gbGluZSBsZW5ndGguCgogICAgICAgICRsaW5lX29mX3Rva2VucyA9ICRteV9saW5lX29mX3Rva2VuczsKICAgICAgICAkQ09ERV90eXBlICAgICAgPSAkbGluZV9vZl90b2tlbnMtPntfY29kZV90eXBlfTsKICAgICAgICBteSAkaW5wdXRfbGluZV9udW1iZXIgPSAkbGluZV9vZl90b2tlbnMtPntfbGluZV9udW1iZXJ9OwogICAgICAgIG15ICRpbnB1dF9saW5lICAgICAgICA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3RleHR9OwoKICAgICAgICAjIGluaXRpYWxpemUgY2xvc3VyZSB2YXJpYWJsZXMKICAgICAgICBteSAkcktfcmFuZ2UgPSAkbGluZV9vZl90b2tlbnMtPntfcktfcmFuZ2V9OwogICAgICAgICggJEtfZmlyc3QsICRLX2xhc3QgKSA9IEB7JHJLX3JhbmdlfTsKCiAgICAgICAgIyByZW1lbWJlciBvcmlnaW5hbCBzdGFydGluZyBpbmRleCBpbiBjYXNlIGl0IGNoYW5nZXMKICAgICAgICBteSAkS19maXJzdF90cnVlID0gJEtfZmlyc3Q7CgogICAgICAgICRyTEwgICAgICAgICAgICAgID0gJHNlbGYtPltfckxMX107CiAgICAgICAgJHJhZGp1c3RlZF9sZXZlbHMgPSAkc2VsZi0+W19yYWRqdXN0ZWRfbGV2ZWxzX107CgogICAgICAgIG15ICRmaWxlX3dyaXRlcl9vYmplY3QgPSAkc2VsZi0+W19maWxlX3dyaXRlcl9vYmplY3RfXTsKICAgICAgICBteSAkcmJyZWFrX2NvbnRhaW5lciAgID0gJHNlbGYtPltfcmJyZWFrX2NvbnRhaW5lcl9dOwogICAgICAgIG15ICRyc2hvcnRfbmVzdGVkICAgICAgPSAkc2VsZi0+W19yc2hvcnRfbmVzdGVkX107CiAgICAgICAgbXkgJHNpbmtfb2JqZWN0ICAgICAgICA9ICRzZWxmLT5bX3Npbmtfb2JqZWN0X107CiAgICAgICAgbXkgJGZoX3RlZSAgICAgICAgICAgICA9ICRzZWxmLT5bX2ZoX3RlZV9dOwogICAgICAgIG15ICRyaXNfYmxpX2NvbnRhaW5lciAgPSAkc2VsZi0+W19yaXNfYmxpX2NvbnRhaW5lcl9dOwoKICAgICAgICBpZiAoICFkZWZpbmVkKCRLX2ZpcnN0KSApIHsKCiAgICAgICAgICAgICMgRW1wdHkgbGluZTogVGhpcyBjYW4gaGFwcGVuIGlmIHRva2VucyBhcmUgZGVsZXRlZCwgZm9yIGV4YW1wbGUKICAgICAgICAgICAgIyB3aXRoIHRoZSAtbWFuZ2xlIHBhcmFtZXRlcgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkbm9faW50ZXJuYWxfbmV3bGluZXMgPSAwOwogICAgICAgIGlmICggISRyT3B0c19hZGRfbmV3bGluZXMgfHwgJENPREVfdHlwZSBlcSAnTklOJyApIHsKICAgICAgICAgICAgJG5vX2ludGVybmFsX25ld2xpbmVzID0gMjsKICAgICAgICB9CgogICAgICAgICRzaWRlX2NvbW1lbnRfZm9sbG93cyA9IDA7CiAgICAgICAgbXkgJGlzX2NvbW1lbnQgPQogICAgICAgICAgKCAkS19maXJzdCA9PSAkS19sYXN0ICYmICRyTEwtPlskS19maXJzdF0tPltfVFlQRV9dIGVxICcjJyApOwogICAgICAgIG15ICRpc19zdGF0aWNfYmxvY2tfY29tbWVudF93aXRob3V0X2xlYWRpbmdfc3BhY2UgPQogICAgICAgICAgJENPREVfdHlwZSBlcSAnU0JDWCc7CiAgICAgICAgJGlzX3N0YXRpY19ibG9ja19jb21tZW50ID0KICAgICAgICAgICRDT0RFX3R5cGUgZXEgJ1NCQycgfHwgJGlzX3N0YXRpY19ibG9ja19jb21tZW50X3dpdGhvdXRfbGVhZGluZ19zcGFjZTsKICAgICAgICBteSAkaXNfaGFuZ2luZ19zaWRlX2NvbW1lbnQgPSAkQ09ERV90eXBlIGVxICdIU0MnOwogICAgICAgIG15ICRpc19WRVJTSU9OX3N0YXRlbWVudCAgICA9ICRDT0RFX3R5cGUgZXEgJ1ZFUic7CgogICAgICAgIGlmICgkaXNfVkVSU0lPTl9zdGF0ZW1lbnQpIHsKICAgICAgICAgICAgJHNlbGYtPltfc2F3X1ZFUlNJT05faW5fdGhpc19maWxlX10gPSAxOwogICAgICAgICAgICAkbm9faW50ZXJuYWxfbmV3bGluZXMgPSAyOwogICAgICAgIH0KCiAgICAgICAgIyBBZGQgaW50ZXJsaW5lIGJsYW5rIGlmIGFueQogICAgICAgIG15ICRsYXN0X29sZF9ub25ibGFua190eXBlICAgPSAiYiI7CiAgICAgICAgbXkgJGZpcnN0X25ld19ub25ibGFua190b2tlbiA9ICIiOwogICAgICAgIGlmICggJG1heF9pbmRleF90b19nbyA+PSAwICkgewogICAgICAgICAgICAkbGFzdF9vbGRfbm9uYmxhbmtfdHlwZSAgID0gJHR5cGVzX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dOwogICAgICAgICAgICAkZmlyc3RfbmV3X25vbmJsYW5rX3Rva2VuID0gJHJMTC0+WyRLX2ZpcnN0XS0+W19UT0tFTl9dOwogICAgICAgICAgICBpZiAoICAhJGlzX2NvbW1lbnQKICAgICAgICAgICAgICAgICYmICR0eXBlc190b19nb1skbWF4X2luZGV4X3RvX2dvXSBuZSAnYicKICAgICAgICAgICAgICAgICYmICRLX2ZpcnN0ID4gMAogICAgICAgICAgICAgICAgJiYgJHJMTC0+WyAkS19maXJzdCAtIDEgXS0+W19UWVBFX10gZXEgJ2InICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJEtfZmlyc3QgLT0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJHJ0b2tfZmlyc3QgPSAkckxMLT5bJEtfZmlyc3RdOwoKICAgICAgICBteSAkaW5fcXVvdGUgPSAkbGluZV9vZl90b2tlbnMtPntfZW5kaW5nX2luX3F1b3RlfTsKICAgICAgICAkZW5kaW5nX2luX3F1b3RlID0gJGluX3F1b3RlOwogICAgICAgIG15ICRndWVzc2VkX2luZGVudGF0aW9uX2xldmVsID0KICAgICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19ndWVzc2VkX2luZGVudGF0aW9uX2xldmVsfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIEhhbmRsZSBhIGJsb2NrIChmdWxsLWxpbmUpIGNvbW1lbnQuLgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgaWYgKCRpc19jb21tZW50KSB7CgogICAgICAgICAgICBpZiAoICRyT3B0cy0+eydkZWxldGUtYmxvY2stY29tbWVudHMnfSApIHsKICAgICAgICAgICAgICAgICRzZWxmLT5mbHVzaCgpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBkZXN0cm95X29uZV9saW5lX2Jsb2NrKCk7CiAgICAgICAgICAgICRzZWxmLT5lbmRfYmF0Y2goKTsKCiAgICAgICAgICAgICMgb3V0cHV0IGEgYmxhbmsgbGluZSBiZWZvcmUgYmxvY2sgY29tbWVudHMKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgIyB1bmxlc3Mgd2UgZm9sbG93IGEgYmxhbmsgb3IgY29tbWVudCBsaW5lCiAgICAgICAgICAgICAgICAkc2VsZi0+W19sYXN0X2xpbmVfbGVhZGluZ190eXBlX10gbmUgJyMnCiAgICAgICAgICAgICAgICAmJiAkc2VsZi0+W19sYXN0X2xpbmVfbGVhZGluZ190eXBlX10gbmUgJ2InCgogICAgICAgICAgICAgICAgIyBvbmx5IGlmIGFsbG93ZWQKICAgICAgICAgICAgICAgICYmICRyT3B0cy0+eydibGFua3MtYmVmb3JlLWNvbW1lbnRzJ30KCiAgICAgICAgICAgICAgICAjIGlmIHRoaXMgaXMgTk9UIGFuIGVtcHR5IGNvbW1lbnQsIHVubGVzcyBpdCBmb2xsb3dzIGEgc2lkZQogICAgICAgICAgICAgICAgIyBjb21tZW50IGFuZCBjb3VsZCBiZWNvbWUgYSBoYW5naW5nIHNpZGUgY29tbWVudC4KICAgICAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICAgICAkcnRva19maXJzdC0+W19UT0tFTl9dIG5lICcjJwogICAgICAgICAgICAgICAgICAgIHx8ICggICAkbGFzdF9saW5lX2hhZF9zaWRlX2NvbW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHJMTC0+WyRLX2ZpcnN0XS0+W19MRVZFTF9dID4gMCApCiAgICAgICAgICAgICAgICApCgogICAgICAgICAgICAgICAgIyBub3QgYWZ0ZXIgYSBzaG9ydCBsaW5lIGVuZGluZyBpbiBhbiBvcGVuaW5nIHRva2VuCiAgICAgICAgICAgICAgICAjIGJlY2F1c2Ugd2UgYWxyZWFkeSBoYXZlIHNwYWNlIGFib3ZlIHRoaXMgY29tbWVudC4KICAgICAgICAgICAgICAgICMgTm90ZSB0aGF0IHRoZSBmaXJzdCBjb21tZW50IGluIHRoaXMgaWYgYmxvY2ssIGFmdGVyCiAgICAgICAgICAgICAgICAjIHRoZSAnaWYgKCcsIGRvZXMgbm90IGdldCBhIGJsYW5rIGxpbmUgYmVjYXVzZSBvZiB0aGlzLgogICAgICAgICAgICAgICAgJiYgISRzZWxmLT5bX2xhc3Rfb3V0cHV0X3Nob3J0X29wZW5pbmdfdG9rZW5fXQoKICAgICAgICAgICAgICAgICMgbmV2ZXIgYmVmb3JlIHN0YXRpYyBibG9jayBjb21tZW50cwogICAgICAgICAgICAgICAgJiYgISRpc19zdGF0aWNfYmxvY2tfY29tbWVudAogICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHNlbGYtPmZsdXNoKCk7ICAgICMgc3dpdGNoaW5nIHRvIG5ldyBvdXRwdXQgc3RyZWFtCiAgICAgICAgICAgICAgICAkZmlsZV93cml0ZXJfb2JqZWN0LT53cml0ZV9ibGFua19jb2RlX2xpbmUoKTsKICAgICAgICAgICAgICAgICRzZWxmLT5bX2xhc3RfbGluZV9sZWFkaW5nX3R5cGVfXSA9ICdiJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJHJPcHRzLT57J2luZGVudC1ibG9jay1jb21tZW50cyd9CiAgICAgICAgICAgICAgICAmJiAoICAhJHJPcHRzLT57J2luZGVudC1zcGFjZWQtYmxvY2stY29tbWVudHMnfQogICAgICAgICAgICAgICAgICAgIHx8ICRpbnB1dF9saW5lID1+IC9eXHMrLyApCiAgICAgICAgICAgICAgICAmJiAhJGlzX3N0YXRpY19ibG9ja19jb21tZW50X3dpdGhvdXRfbGVhZGluZ19zcGFjZQogICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbXkgJEt0b2tlbl92YXJzID0gJEtfZmlyc3Q7CiAgICAgICAgICAgICAgICBteSAkcnRva2VuX3ZhcnMgPSAkckxMLT5bJEt0b2tlbl92YXJzXTsKICAgICAgICAgICAgICAgICRzZWxmLT5zdG9yZV90b2tlbl90b19nbyggJEt0b2tlbl92YXJzLCAkcnRva2VuX3ZhcnMgKTsKICAgICAgICAgICAgICAgICRzZWxmLT5lbmRfYmF0Y2goKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIHN3aXRjaGluZyB0byBuZXcgb3V0cHV0IHN0cmVhbQogICAgICAgICAgICAgICAgJHNlbGYtPmZsdXNoKCk7CgogICAgICAgICAgICAgICAgIyBOb3RlIHRoYXQgbGFzdCBhcmcgaW4gY2FsbCBoZXJlIGlzICd1bmRlZicgZm9yIGNvbW1lbnRzCiAgICAgICAgICAgICAgICAkZmlsZV93cml0ZXJfb2JqZWN0LT53cml0ZV9jb2RlX2xpbmUoCiAgICAgICAgICAgICAgICAgICAgJHJ0b2tfZmlyc3QtPltfVE9LRU5fXSAuICJcbiIsIHVuZGVmICk7CiAgICAgICAgICAgICAgICAkc2VsZi0+W19sYXN0X2xpbmVfbGVhZGluZ190eXBlX10gPSAnIyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBjb21wYXJlIGlucHV0L291dHB1dCBpbmRlbnRhdGlvbiBleGNlcHQgZm9yIGNvbnRpbnVhdGlvbiBsaW5lcwogICAgICAgICMgKGJlY2F1c2UgdGhleSBoYXZlIGFuIHVua25vd24gYW1vdW50IG9mIGluaXRpYWwgYmxhbmsgc3BhY2UpCiAgICAgICAgIyBhbmQgbGluZXMgd2hpY2ggYXJlIHF1b3RlcyAoYmVjYXVzZSB0aGV5IG1heSBoYXZlIGJlZW4gb3V0ZGVudGVkKQogICAgICAgICRzZWxmLT5jb21wYXJlX2luZGVudGF0aW9uX2xldmVscyggJEtfZmlyc3QsICRndWVzc2VkX2luZGVudGF0aW9uX2xldmVsLAogICAgICAgICAgICAkaW5wdXRfbGluZV9udW1iZXIgKQogICAgICAgICAgdW5sZXNzICggJGlzX2hhbmdpbmdfc2lkZV9jb21tZW50CiAgICAgICAgICAgIHx8ICRydG9rX2ZpcnN0LT5bX0NJX0xFVkVMX10gPiAwCiAgICAgICAgICAgIHx8ICRndWVzc2VkX2luZGVudGF0aW9uX2xldmVsID09IDAKICAgICAgICAgICAgJiYgJHJ0b2tfZmlyc3QtPltfVFlQRV9dIGVxICdRJyApOwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgSGFuZGxlIGluZGVudGF0aW9uLW9ubHkKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAjIE5PVEU6IEluIHByZXZpb3VzIHZlcnNpb25zIHdlIHNlbnQgYWxsIHF3IGxpbmVzIG91dCBpbW1lZGlhdGVseSBoZXJlLgogICAgICAgICMgTm8gbG9uZ2VyIGRvaW5nIHRoaXM6IGFsc28gd3JpdGUgYSBsaW5lIHdoaWNoIGlzIGVudGlyZWx5IGEgJ3F3JyBsaXN0CiAgICAgICAgIyB0byBhbGxvdyBzdGFja2luZyBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIHRva2Vucy4gIE5vdGUgdGhhdCBpbnRlcmlvcgogICAgICAgICMgcXcgbGluZXMgd2lsbCBzdGlsbCBnbyBvdXQgYXQgdGhlIGVuZCBvZiB0aGlzIHJvdXRpbmUuCiAgICAgICAgaWYgKCAkQ09ERV90eXBlIGVxICdJTycgKSB7CiAgICAgICAgICAgICRzZWxmLT5mbHVzaCgpOwogICAgICAgICAgICBteSAkbGluZSA9ICRpbnB1dF9saW5lOwoKICAgICAgICAgICAgIyBGaXggZm9yIHJ0ICMxMjU1MDYgVW5leHBlY3RlZCBzdHJpbmcgZm9ybWF0aW5nCiAgICAgICAgICAgICMgaW4gd2hpY2ggbGVhZGluZyBzcGFjZSBvZiBhIHRlcm1pbmFsIHF1b3RlIHdhcyByZW1vdmVkCiAgICAgICAgICAgICRsaW5lID1+IHMvXHMrJC8vOwogICAgICAgICAgICAkbGluZSA9fiBzL15ccysvLyB1bmxlc3MgKCAkbGluZV9vZl90b2tlbnMtPntfc3RhcnRpbmdfaW5fcXVvdGV9ICk7CgogICAgICAgICAgICBteSAkS3Rva2VuX3ZhcnMgPSAkS19maXJzdDsKCiAgICAgICAgICAgICMgV2Ugd29yayB3aXRoIGEgY29weSBvZiB0aGUgdG9rZW4gdmFyaWFibGVzIGFuZCBjaGFuZ2UgdGhlCiAgICAgICAgICAgICMgZmlyc3QgdG9rZW4gdG8gYmUgdGhlIGVudGlyZSBsaW5lIGFzIGEgcXVvdGUgdmFyaWFibGUKICAgICAgICAgICAgbXkgJHJ0b2tlbl92YXJzID0gJHJMTC0+WyRLdG9rZW5fdmFyc107CiAgICAgICAgICAgICRydG9rZW5fdmFycyA9IGNvcHlfdG9rZW5fYXNfdHlwZSggJHJ0b2tlbl92YXJzLCAncScsICRsaW5lICk7CgogICAgICAgICAgICAjIFBhdGNoOiBsZW5ndGggaXMgbm90IHJlYWxseSBpbXBvcnRhbnQgaGVyZQogICAgICAgICAgICAkcnRva2VuX3ZhcnMtPltfVE9LRU5fTEVOR1RIX10gPSBsZW5ndGgoJGxpbmUpOwoKICAgICAgICAgICAgJHNlbGYtPnN0b3JlX3Rva2VuX3RvX2dvKCAkS3Rva2VuX3ZhcnMsICRydG9rZW5fdmFycyApOwogICAgICAgICAgICAkc2VsZi0+ZW5kX2JhdGNoKCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIEhhbmRsZSBhbGwgb3RoZXIgbGluZXMgLi4uCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAjIElmIHdlIGp1c3Qgc2F3IHRoZSBlbmQgb2YgYW4gZWxzaWYgYmxvY2ssIHdyaXRlIG5hZyBtZXNzYWdlCiAgICAgICAgIyBpZiB3ZSBkbyBub3Qgc2VlIGFub3RoZXIgZWxzZWlmIG9yIGFuIGVsc2UuCiAgICAgICAgaWYgKCRsb29raW5nX2Zvcl9lbHNlKSB7CgogICAgICAgICAgICB1bmxlc3MgKCAkckxMLT5bJEtfZmlyc3RdLT5bX1RPS0VOX10gPX4gL14oZWxzaWZ8ZWxzZSkkLyApIHsKICAgICAgICAgICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoIihObyBlbHNlIGJsb2NrKVxuIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGxvb2tpbmdfZm9yX2Vsc2UgPSAwOwogICAgICAgIH0KCiAgICAgICAgIyBUaGlzIGlzIGEgZ29vZCBwbGFjZSB0byBraWxsIGluY29tcGxldGUgb25lLWxpbmUgYmxvY2tzCiAgICAgICAgaWYgKAogICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAoICRzZW1pY29sb25zX2JlZm9yZV9ibG9ja19zZWxmX2Rlc3RydWN0ID09IDAgKQogICAgICAgICAgICAgICAgJiYgKCAkbWF4X2luZGV4X3RvX2dvID49IDAgKQogICAgICAgICAgICAgICAgJiYgKCAkbGFzdF9vbGRfbm9uYmxhbmtfdHlwZSBlcSAnOycgKQogICAgICAgICAgICAgICAgJiYgKCAkZmlyc3RfbmV3X25vbmJsYW5rX3Rva2VuIG5lICd9JyApCiAgICAgICAgICAgICkKCiAgICAgICAgICAgICMgUGF0Y2ggZm9yIFJUICM5ODkwMi4gSG9ub3IgcmVxdWVzdCB0byBicmVhayBhdCBvbGQgY29tbWFzLgogICAgICAgICAgICB8fCAoICAgJHJPcHRzX2JyZWFrX2F0X29sZF9jb21tYV9icmVha3BvaW50cwogICAgICAgICAgICAgICAgJiYgJG1heF9pbmRleF90b19nbyA+PSAwCiAgICAgICAgICAgICAgICAmJiAkbGFzdF9vbGRfbm9uYmxhbmtfdHlwZSBlcSAnLCcgKQogICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJGZvcmNlZF9icmVha3BvaW50X3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dID0gMQogICAgICAgICAgICAgIGlmICgkck9wdHNfYnJlYWtfYXRfb2xkX2NvbW1hX2JyZWFrcG9pbnRzKTsKICAgICAgICAgICAgZGVzdHJveV9vbmVfbGluZV9ibG9jaygpOwogICAgICAgICAgICAkc2VsZi0+ZW5kX2JhdGNoKCk7CiAgICAgICAgfQoKICAgICAgICAjIEtlZXAgYW55IHJlcXVlc3RlZCBicmVha3MgYmVmb3JlIHRoaXMgbGluZS4gIE5vdGUgdGhhdCB3ZSBoYXZlIHRvCiAgICAgICAgIyB1c2UgdGhlIG9yaWdpbmFsIEtfZmlyc3QgYmVjYXVzZSBpdCBtYXkgaGF2ZSBiZWVuIHJlZHVjZWQgYWJvdmUKICAgICAgICAjIHRvIGFkZCBhIGJsYW5rLgogICAgICAgIGlmICggJHNlbGYtPltfcmJyZWFrX2JlZm9yZV9LZmlyc3RfXS0+eyRLX2ZpcnN0X3RydWV9ICkgewogICAgICAgICAgICBkZXN0cm95X29uZV9saW5lX2Jsb2NrKCk7CiAgICAgICAgICAgICRzZWxmLT5lbmRfYmF0Y2goKTsKICAgICAgICB9CgogICAgICAgICMgbG9vcCB0byBwcm9jZXNzIHRoZSB0b2tlbnMgb25lLWJ5LW9uZQoKICAgICAgICAjIFdlIGRvIG5vdCB3YW50IGEgbGVhZGluZyBibGFuayBpZiB0aGUgcHJldmlvdXMgYmF0Y2gganVzdCBnb3Qgb3V0cHV0CiAgICAgICAgaWYgKCAkbWF4X2luZGV4X3RvX2dvIDwgMCAmJiAkckxMLT5bJEtfZmlyc3RdLT5bX1RZUEVfXSBlcSAnYicgKSB7CiAgICAgICAgICAgICRLX2ZpcnN0Kys7CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoIG15ICRLdG9rZW5fdmFycyAoICRLX2ZpcnN0IC4uICRLX2xhc3QgKSB7CgogICAgICAgICAgICBteSAkcnRva2VuX3ZhcnMgICA9ICRyTEwtPlskS3Rva2VuX3ZhcnNdOwogICAgICAgICAgICBteSAkdG9rZW4gICAgICAgICA9ICRydG9rZW5fdmFycy0+W19UT0tFTl9dOwogICAgICAgICAgICBteSAkdHlwZSAgICAgICAgICA9ICRydG9rZW5fdmFycy0+W19UWVBFX107CiAgICAgICAgICAgIG15ICRibG9ja190eXBlICAgID0gJHJ0b2tlbl92YXJzLT5bX0JMT0NLX1RZUEVfXTsKICAgICAgICAgICAgbXkgJHR5cGVfc2VxdWVuY2UgPSAkcnRva2VuX3ZhcnMtPltfVFlQRV9TRVFVRU5DRV9dOwoKICAgICAgICAgICAgIyBJZiB3ZSBhcmUgY29udGludWluZyBhZnRlciBzZWVpbmcgYSByaWdodCBjdXJseSBicmFjZSwgZmx1c2gKICAgICAgICAgICAgIyBidWZmZXIgdW5sZXNzIHdlIHNlZSB3aGF0IHdlIGFyZSBsb29raW5nIGZvciwgYXMgaW4KICAgICAgICAgICAgIyAgIH0gZWxzZSAuLi4KICAgICAgICAgICAgaWYgKCAkcmJyYWNlX2ZvbGxvd2VyICYmICR0eXBlIG5lICdiJyApIHsKCiAgICAgICAgICAgICAgICB1bmxlc3MgKCAkcmJyYWNlX2ZvbGxvd2VyLT57JHRva2VufSApIHsKICAgICAgICAgICAgICAgICAgICAkc2VsZi0+ZW5kX2JhdGNoKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcmJyYWNlX2ZvbGxvd2VyID0gdW5kZWY7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgR2V0IG5leHQgbm9uYmxhbmsgb24gdGhpcyBsaW5lCiAgICAgICAgICAgIG15ICRuZXh0X25vbmJsYW5rX3Rva2VuICAgICAgPSAnJzsKICAgICAgICAgICAgbXkgJG5leHRfbm9uYmxhbmtfdG9rZW5fdHlwZSA9ICdiJzsKICAgICAgICAgICAgaWYgKCAkS3Rva2VuX3ZhcnMgPCAkS19sYXN0ICkgewogICAgICAgICAgICAgICAgbXkgJEtubmIgPSAkS3Rva2VuX3ZhcnMgKyAxOwogICAgICAgICAgICAgICAgaWYgKCAgICRyTEwtPlskS25uYl0tPltfVFlQRV9dIGVxICdiJwogICAgICAgICAgICAgICAgICAgICYmICRLbm5iIDwgJEtfbGFzdCApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJEtubmIrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRuZXh0X25vbmJsYW5rX3Rva2VuICAgICAgPSAkckxMLT5bJEtubmJdLT5bX1RPS0VOX107CiAgICAgICAgICAgICAgICAkbmV4dF9ub25ibGFua190b2tlbl90eXBlID0gJHJMTC0+WyRLbm5iXS0+W19UWVBFX107CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgRG8gbm90IGFsbG93IGJyZWFrcyB3aGljaCB3b3VsZCBwcm9tb3RlIGEgc2lkZSBjb21tZW50IHRvIGEKICAgICAgICAgICAgIyBibG9jayBjb21tZW50LiAgSW4gb3JkZXIgdG8gYWxsb3cgYSBicmVhayBiZWZvcmUgYW4gb3BlbmluZwogICAgICAgICAgICAjIG9yIGNsb3NpbmcgQkxPQ0ssIGZvbGxvd2VkIGJ5IGEgc2lkZSBjb21tZW50LCB0aG9zZSBzZWN0aW9ucwogICAgICAgICAgICAjIG9mIGNvZGUgd2lsbCBoYW5kbGUgdGhpcyBmbGFnIHNlcGFyYXRlbHkuCiAgICAgICAgICAgICRzaWRlX2NvbW1lbnRfZm9sbG93cyA9ICggJG5leHRfbm9uYmxhbmtfdG9rZW5fdHlwZSBlcSAnIycgKTsKICAgICAgICAgICAgbXkgJGlzX29wZW5pbmdfQkxPQ0sgPQogICAgICAgICAgICAgICggICAgICAkdHlwZSBlcSAneycKICAgICAgICAgICAgICAgICAgJiYgJHRva2VuIGVxICd7JwogICAgICAgICAgICAgICAgICAmJiAkYmxvY2tfdHlwZQogICAgICAgICAgICAgICAgICAmJiAhJHJzaG9ydF9uZXN0ZWQtPnskdHlwZV9zZXF1ZW5jZX0KICAgICAgICAgICAgICAgICAgJiYgJGJsb2NrX3R5cGUgbmUgJ3QnICk7CiAgICAgICAgICAgIG15ICRpc19jbG9zaW5nX0JMT0NLID0KICAgICAgICAgICAgICAoICAgICAgJHR5cGUgZXEgJ30nCiAgICAgICAgICAgICAgICAgICYmICR0b2tlbiBlcSAnfScKICAgICAgICAgICAgICAgICAgJiYgJGJsb2NrX3R5cGUKICAgICAgICAgICAgICAgICAgJiYgISRyc2hvcnRfbmVzdGVkLT57JHR5cGVfc2VxdWVuY2V9CiAgICAgICAgICAgICAgICAgICYmICRibG9ja190eXBlIG5lICd0JyApOwoKICAgICAgICAgICAgaWYgKCAgICRzaWRlX2NvbW1lbnRfZm9sbG93cwogICAgICAgICAgICAgICAgJiYgISRpc19vcGVuaW5nX0JMT0NLCiAgICAgICAgICAgICAgICAmJiAhJGlzX2Nsb3NpbmdfQkxPQ0sgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkbm9faW50ZXJuYWxfbmV3bGluZXMgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFdlJ3JlIG9ubHkgZ29pbmcgdG8gaGFuZGxlIGJyZWFraW5nIGZvciBjb2RlIEJMT0NLUyBhdCB0aGlzCiAgICAgICAgICAgICMgKHRvcCkgbGV2ZWwuICBPdGhlciBpbmRlbnRhdGlvbiBicmVha3Mgd2lsbCBiZSBoYW5kbGVkIGJ5CiAgICAgICAgICAgICMgc3ViIHNjYW5fbGlzdCwgd2hpY2ggaXMgYmV0dGVyIHN1aXRlZCB0byBkZWFsaW5nIHdpdGggdGhlbS4KICAgICAgICAgICAgaWYgKCRpc19vcGVuaW5nX0JMT0NLKSB7CgogICAgICAgICAgICAgICAgIyBUZW50YXRpdmVseSBvdXRwdXQgdGhpcyB0b2tlbi4gIFRoaXMgaXMgcmVxdWlyZWQgYmVmb3JlCiAgICAgICAgICAgICAgICAjIGNhbGxpbmcgc3RhcnRpbmdfb25lX2xpbmVfYmxvY2suICBXZSBtYXkgaGF2ZSB0byB1bnN0b3JlCiAgICAgICAgICAgICAgICAjIGl0LCB0aG91Z2gsIGlmIHdlIGhhdmUgdG8gYnJlYWsgYmVmb3JlIGl0LgogICAgICAgICAgICAgICAgJHNlbGYtPnN0b3JlX3Rva2VuX3RvX2dvKCAkS3Rva2VuX3ZhcnMsICRydG9rZW5fdmFycyApOwoKICAgICAgICAgICAgICAgICMgTG9vayBhaGVhZCB0byBzZWUgaWYgd2UgbWlnaHQgZm9ybSBhIG9uZS1saW5lIGJsb2NrLi4KICAgICAgICAgICAgICAgIG15ICR0b29fbG9uZyA9CiAgICAgICAgICAgICAgICAgICRzZWxmLT5zdGFydGluZ19vbmVfbGluZV9ibG9jayggJEt0b2tlbl92YXJzLAogICAgICAgICAgICAgICAgICAgICRLX2xhc3Rfbm9uYmxhbmtfY29kZSwgJEtfbGFzdCApOwogICAgICAgICAgICAgICAgJHNlbGYtPmNsZWFyX2JyZWFrcG9pbnRfdW5kb19zdGFjaygpOwoKICAgICAgICAgICAgICAgICMgdG8gc2ltcGxpZnkgdGhlIGxvZ2ljIGJlbG93LCBzZXQgYSBmbGFnIHRvIGluZGljYXRlIGlmCiAgICAgICAgICAgICAgICAjIHRoaXMgb3BlbmluZyBicmFjZSBpcyBmYXIgZnJvbSB0aGUga2V5d29yZCB3aGljaCBpbnRyb2R1Y2VzIGl0CiAgICAgICAgICAgICAgICBteSAka2V5d29yZF9vbl9zYW1lX2xpbmUgPSAxOwogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICRtYXhfaW5kZXhfdG9fZ28gPj0gMAogICAgICAgICAgICAgICAgICAgICYmICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJyknCiAgICAgICAgICAgICAgICAgICAgJiYgKCAoICRydG9rZW5fdmFycy0+W19TTEVWRUxfXSA8ICRuZXN0aW5nX2RlcHRoX3RvX2dvWzBdICkKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHRvb19sb25nICkKICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRrZXl3b3JkX29uX3NhbWVfbGluZSA9IDA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBkZWNpZGUgaWYgdXNlciByZXF1ZXN0ZWQgYnJlYWsgYmVmb3JlICd7JwogICAgICAgICAgICAgICAgbXkgJHdhbnRfYnJlYWsgPQoKICAgICAgICAgICAgICAgICAgIyB1c2UgLWJsIGZsYWcgaWYgbm90IGEgc3ViIGJsb2NrIG9mIGFueSB0eXBlCiAgICAgICAgICAgICAgICAgICRibG9ja190eXBlICF+IC8kQU5ZU1VCX1BBVFRFUk4vCiAgICAgICAgICAgICAgICAgID8gJHJPcHRzLT57J29wZW5pbmctYnJhY2Utb24tbmV3LWxpbmUnfQoKICAgICAgICAgICAgICAgICAgIyB1c2UgLXNibCBmbGFnIGZvciBhIG5hbWVkIHN1YiBibG9jawogICAgICAgICAgICAgICAgICA6ICRibG9ja190eXBlICF+IC8kQVNVQl9QQVRURVJOLwogICAgICAgICAgICAgICAgICA/ICRyT3B0cy0+eydvcGVuaW5nLXN1Yi1icmFjZS1vbi1uZXctbGluZSd9CgogICAgICAgICAgICAgICAgICAjIHVzZSAtYXNibCBmbGFnIGZvciBhbiBhbm9ueW1vdXMgc3ViIGJsb2NrCiAgICAgICAgICAgICAgICAgIDogJHJPcHRzLT57J29wZW5pbmctYW5vbnltb3VzLXN1Yi1icmFjZS1vbi1uZXctbGluZSd9OwoKICAgICAgICAgICAgICAgICMgQnJlYWsgaWYgcmVxdWVzdGVkIHdpdGggLWJsaSBmbGFnCiAgICAgICAgICAgICAgICAkd2FudF9icmVhayB8fD0gJHJpc19ibGlfY29udGFpbmVyLT57JHR5cGVfc2VxdWVuY2V9OwoKICAgICAgICAgICAgICAgICMgRG8gbm90IGJyZWFrIGlmIHRoaXMgdG9rZW4gaXMgd2VsZGVkIHRvIHRoZSBsZWZ0CiAgICAgICAgICAgICAgICBpZiAoICRzZWxmLT53ZWxkX2xlbl9sZWZ0KCAkdHlwZV9zZXF1ZW5jZSwgJHRva2VuICkgKSB7CiAgICAgICAgICAgICAgICAgICAgJHdhbnRfYnJlYWsgPSAwOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgQnJlYWsgYmVmb3JlIGFuIG9wZW5pbmcgJ3snIC4uLgogICAgICAgICAgICAgICAgaWYgKAoKICAgICAgICAgICAgICAgICAgICAjIGlmIHJlcXVlc3RlZAogICAgICAgICAgICAgICAgICAgICR3YW50X2JyZWFrCgogICAgICAgICAgICAgICAgICAgICMgYW5kIHdlIHdlcmUgdW5hYmxlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIGEgYmxvY2ssCiAgICAgICAgICAgICAgICAgICAgJiYgJGluZGV4X3N0YXJ0X29uZV9saW5lX2Jsb2NrID09IFVOREVGSU5FRF9JTkRFWAoKICAgICAgICAgICAgICAgICAgICAjIG9yIGlmIGl0IHdpbGwgbm90IGJlIG9uIHNhbWUgbGluZSBhcyBpdHMga2V5d29yZCwgc28gdGhhdAogICAgICAgICAgICAgICAgICAgICMgaXQgd2lsbCBiZSBvdXRkZW50ZWQgKGV2YWwudCwgb3ZlcmxvYWQudCksIGFuZCB0aGUgdXNlcgogICAgICAgICAgICAgICAgICAgICMgaGFzIG5vdCBpbnNpc3RlZCBvbiBrZWVwaW5nIGl0IG9uIHRoZSByaWdodAogICAgICAgICAgICAgICAgICAgIHx8ICggICAhJGtleXdvcmRfb25fc2FtZV9saW5lCiAgICAgICAgICAgICAgICAgICAgICAgICYmICEkck9wdHMtPnsnb3BlbmluZy1icmFjZS1hbHdheXMtb24tcmlnaHQnfSApCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgIyBidXQgb25seSBpZiBhbGxvd2VkCiAgICAgICAgICAgICAgICAgICAgdW5sZXNzICgkbm9faW50ZXJuYWxfbmV3bGluZXMpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2luY2Ugd2UgYWxyZWFkeSBzdG9yZWQgdGhpcyB0b2tlbiwgd2UgbXVzdCB1bnN0b3JlIGl0CiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT51bnN0b3JlX3Rva2VuX3RvX2dvKCk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHRoZW4gb3V0cHV0IHRoZSBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5lbmRfYmF0Y2goKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgYW5kIG5vdyBzdG9yZSB0aGlzIHRva2VuIGF0IHRoZSBzdGFydCBvZiBhIG5ldyBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5zdG9yZV90b2tlbl90b19nbyggJEt0b2tlbl92YXJzLCAkcnRva2VuX3ZhcnMgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBOb3cgdXBkYXRlIGZvciBzaWRlIGNvbW1lbnQKICAgICAgICAgICAgICAgIGlmICgkc2lkZV9jb21tZW50X2ZvbGxvd3MpIHsgJG5vX2ludGVybmFsX25ld2xpbmVzID0gMSB9CgogICAgICAgICAgICAgICAgIyBub3cgb3V0cHV0IHRoaXMgbGluZQogICAgICAgICAgICAgICAgdW5sZXNzICgkbm9faW50ZXJuYWxfbmV3bGluZXMpIHsKICAgICAgICAgICAgICAgICAgICAkc2VsZi0+ZW5kX2JhdGNoKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVsc2lmICgkaXNfY2xvc2luZ19CTE9DSykgewoKICAgICAgICAgICAgICAgICMgSWYgdGhlcmUgaXMgYSBwZW5kaW5nIG9uZS1saW5lIGJsb2NrIC4uCiAgICAgICAgICAgICAgICBpZiAoICRpbmRleF9zdGFydF9vbmVfbGluZV9ibG9jayAhPSBVTkRFRklORURfSU5ERVggKSB7CgogICAgICAgICAgICAgICAgICAgICMgd2UgaGF2ZSB0byB0ZXJtaW5hdGUgaXQgaWYuLgogICAgICAgICAgICAgICAgICAgIGlmICgKCiAgICAgICAgICAgICAgICAgICAgICAgICMgaXQgaXMgdG9vIGxvbmcgKGZpbmFsIGxlbmd0aCBtYXkgYmUgZGlmZmVyZW50IGZyb20KICAgICAgICAgICAgICAgICAgICAgICAgIyBpbml0aWFsIGVzdGltYXRlKS4gbm90ZTogbXVzdCBhbGxvdyAxIHNwYWNlIGZvciB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgICMgdG9rZW4KICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYtPmV4Y2Vzc19saW5lX2xlbmd0aCggJGluZGV4X3N0YXJ0X29uZV9saW5lX2Jsb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1heF9pbmRleF90b19nbyApID49IDAKCiAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgaWYgaXQgaGFzIHRvbyBtYW55IHNlbWljb2xvbnMKICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCAgICRzZW1pY29sb25zX2JlZm9yZV9ibG9ja19zZWxmX2Rlc3RydWN0ID09IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICRsYXN0X25vbmJsYW5rX3R5cGUgbmUgJzsnICkKICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3lfb25lX2xpbmVfYmxvY2soKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBwdXQgYSBicmVhayBiZWZvcmUgdGhpcyBjbG9zaW5nIGN1cmx5IGJyYWNlIGlmIGFwcHJvcHJpYXRlCiAgICAgICAgICAgICAgICB1bmxlc3MgKCAkbm9faW50ZXJuYWxfbmV3bGluZXMKICAgICAgICAgICAgICAgICAgICB8fCAkaW5kZXhfc3RhcnRfb25lX2xpbmVfYmxvY2sgIT0gVU5ERUZJTkVEX0lOREVYICkKICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgIyB3cml0ZSBvdXQgZXZlcnl0aGluZyBiZWZvcmUgdGhpcyBjbG9zaW5nIGN1cmx5IGJyYWNlCiAgICAgICAgICAgICAgICAgICAgJHNlbGYtPmVuZF9iYXRjaCgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgTm93IHVwZGF0ZSBmb3Igc2lkZSBjb21tZW50CiAgICAgICAgICAgICAgICBpZiAoJHNpZGVfY29tbWVudF9mb2xsb3dzKSB7ICRub19pbnRlcm5hbF9uZXdsaW5lcyA9IDEgfQoKICAgICAgICAgICAgICAgICMgc3RvcmUgdGhlIGNsb3NpbmcgY3VybHkgYnJhY2UKICAgICAgICAgICAgICAgICRzZWxmLT5zdG9yZV90b2tlbl90b19nbyggJEt0b2tlbl92YXJzLCAkcnRva2VuX3ZhcnMgKTsKCiAgICAgICAgICAgICAgICAjIG9rLCB3ZSBqdXN0IHN0b3JlZCBhIGNsb3NpbmcgY3VybHkgYnJhY2UuICBPZnRlbiwgYnV0CiAgICAgICAgICAgICAgICAjIG5vdCBhbHdheXMsIHdlIHdhbnQgdG8gZW5kIHRoZSBsaW5lIGltbWVkaWF0ZWx5LgogICAgICAgICAgICAgICAgIyBTbyBub3cgd2UgaGF2ZSB0byBjaGVjayBmb3Igc3BlY2lhbCBjYXNlcy4KCiAgICAgICAgICAgICAgICAjIGlmIHRoaXMgJ30nIHN1Y2Nlc3NmdWxseSBlbmRzIGEgb25lLWxpbmUgYmxvY2suLgogICAgICAgICAgICAgICAgbXkgJGlzX29uZV9saW5lX2Jsb2NrID0gMDsKICAgICAgICAgICAgICAgIG15ICRrZWVwX2dvaW5nICAgICAgICA9IDA7CiAgICAgICAgICAgICAgICBpZiAoICRpbmRleF9zdGFydF9vbmVfbGluZV9ibG9jayAhPSBVTkRFRklORURfSU5ERVggKSB7CgogICAgICAgICAgICAgICAgICAgICMgUmVtZW1iZXIgdGhlIHR5cGUgb2YgdG9rZW4ganVzdCBiZWZvcmUgdGhlCiAgICAgICAgICAgICAgICAgICAgIyBvcGVuaW5nIGJyYWNlLiAgSXQgd291bGQgYmUgbW9yZSBnZW5lcmFsIHRvIHVzZQogICAgICAgICAgICAgICAgICAgICMgYSBzdGFjaywgYnV0IHRoaXMgd2lsbCB3b3JrIGZvciBvbmUtbGluZSBibG9ja3MuCiAgICAgICAgICAgICAgICAgICAgJGlzX29uZV9saW5lX2Jsb2NrID0KICAgICAgICAgICAgICAgICAgICAgICR0eXBlc190b19nb1skaW5kZXhfc3RhcnRfb25lX2xpbmVfYmxvY2tdOwoKICAgICAgICAgICAgICAgICAgICAjIHdlIGhhdmUgdG8gYWN0dWFsbHkgbWFrZSBpdCBieSByZW1vdmluZyB0ZW50YXRpdmUKICAgICAgICAgICAgICAgICAgICAjIGJyZWFrcyB0aGF0IHdlcmUgc2V0IHdpdGhpbiBpdAogICAgICAgICAgICAgICAgICAgICRzZWxmLT51bmRvX2ZvcmNlZF9icmVha3BvaW50X3N0YWNrKDApOwogICAgICAgICAgICAgICAgICAgICRzZWxmLT5zZXRfbm9icmVha3MoICRpbmRleF9zdGFydF9vbmVfbGluZV9ibG9jaywKICAgICAgICAgICAgICAgICAgICAgICAgJG1heF9pbmRleF90b19nbyAtIDEgKTsKCiAgICAgICAgICAgICAgICAgICAgIyB0aGVuIHJlLWluaXRpYWxpemUgZm9yIHRoZSBuZXh0IG9uZS1saW5lIGJsb2NrCiAgICAgICAgICAgICAgICAgICAgZGVzdHJveV9vbmVfbGluZV9ibG9jaygpOwoKICAgICAgICAgICAgICAgICAgICAjIHRoZW4gZGVjaWRlIGlmIHdlIHdhbnQgdG8gYnJlYWsgYWZ0ZXIgdGhlICd9JyAuLgogICAgICAgICAgICAgICAgICAgICMgV2Ugd2lsbCBrZWVwIGdvaW5nIHRvIGFsbG93IGNlcnRhaW4gYnJhY2UgZm9sbG93ZXJzIGFzIGluOgogICAgICAgICAgICAgICAgICAgICMgICBkbyB7ICRpZmNsb3NlZCA9IDE7IGxhc3QgfSB1bmxlc3MgJGxvc2luZzsKICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBCdXQgbWFrZSBhIGxpbmUgYnJlYWsgaWYgdGhlIGN1cmx5IGVuZHMgYQogICAgICAgICAgICAgICAgICAgICMgc2lnbmlmaWNhbnQgYmxvY2s6CiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXNfYmxvY2tfd2l0aG91dF9zZW1pY29sb257JGJsb2NrX3R5cGV9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGb2xsb3cgdXNlcnMgYnJlYWsgcG9pbnQgZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9uZSBsaW5lIGJsb2NrIHR5cGVzIFUgJiBHLCBzdWNoIGFzIGEgJ3RyeScgYmxvY2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRpc19vbmVfbGluZV9ibG9jayA9fiAvXltVR10kLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJEt0b2tlbl92YXJzID09ICRLX2xhc3QKICAgICAgICAgICAgICAgICAgICAgICAgKQoKICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBuZWVkbGVzcyBzZW1pY29sb24gZm9sbG93cyB3ZSBoYW5kbGUgaXQgbGF0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJG5leHRfbm9uYmxhbmtfdG9rZW4gbmUgJzsnCiAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi0+ZW5kX2JhdGNoKCkKICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKCRub19pbnRlcm5hbF9uZXdsaW5lcyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgc2V0IHN0cmluZyBpbmRpY2F0aW5nIHdoYXQgd2UgbmVlZCB0byBsb29rIGZvciBicmFjZSBmb2xsb3dlcgogICAgICAgICAgICAgICAgIyB0b2tlbnMKICAgICAgICAgICAgICAgIGlmICggJGJsb2NrX3R5cGUgZXEgJ2RvJyApIHsKICAgICAgICAgICAgICAgICAgICAkcmJyYWNlX2ZvbGxvd2VyID0gXCVpc19kb19mb2xsb3dlcjsKICAgICAgICAgICAgICAgICAgICBpZiAoICRzZWxmLT50aWdodF9wYXJlbl9mb2xsb3dzKCAkS190b19nb1swXSwgJEt0b2tlbl92YXJzICkKICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRyYnJhY2VfZm9sbG93ZXIgPSB7ICcpJyA9PiAxIH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkYmxvY2tfdHlwZSA9fiAvXihpZnxlbHNpZnx1bmxlc3MpJC8gKSB7CiAgICAgICAgICAgICAgICAgICAgJHJicmFjZV9mb2xsb3dlciA9IFwlaXNfaWZfYnJhY2VfZm9sbG93ZXI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRibG9ja190eXBlIGVxICdlbHNlJyApIHsKICAgICAgICAgICAgICAgICAgICAkcmJyYWNlX2ZvbGxvd2VyID0gXCVpc19lbHNlX2JyYWNlX2ZvbGxvd2VyOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgYWRkZWQgZXZhbCBmb3IgYm9ycmlzLnQKICAgICAgICAgICAgICAgIGVsc2lmICgkaXNfc29ydF9tYXBfZ3JlcF9ldmFseyRibG9ja190eXBlfQogICAgICAgICAgICAgICAgICAgIHx8ICRpc19vbmVfbGluZV9ibG9jayBlcSAnRycgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRyYnJhY2VfZm9sbG93ZXIgPSB1bmRlZjsKICAgICAgICAgICAgICAgICAgICAka2VlcF9nb2luZyAgICAgID0gMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGFub255bW91cyBzdWIKICAgICAgICAgICAgICAgIGVsc2lmICggJGJsb2NrX3R5cGUgPX4gLyRBU1VCX1BBVFRFUk4vICkgewoKICAgICAgICAgICAgICAgICAgICBpZiAoJGlzX29uZV9saW5lX2Jsb2NrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRyYnJhY2VfZm9sbG93ZXIgPSBcJWlzX2Fub25fc3ViXzFfYnJhY2VfZm9sbG93ZXI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkcmJyYWNlX2ZvbGxvd2VyID0gXCVpc19hbm9uX3N1Yl9icmFjZV9mb2xsb3dlcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBOb25lIG9mIHRoZSBhYm92ZTogc3BlY2lmeSB3aGF0IGNhbiBmb2xsb3cgYSBjbG9zaW5nCiAgICAgICAgICAgICAgICAjIGJyYWNlIG9mIGEgYmxvY2sgd2hpY2ggaXMgbm90IGFuCiAgICAgICAgICAgICAgICAjIGlmL2Vsc2lmL2Vsc2UvZG8vc29ydC9tYXAvZ3JlcC9ldmFsCiAgICAgICAgICAgICAgICAjIFRlc3RmaWxlczoKICAgICAgICAgICAgICAgICMgJ1Rvb2xiYXIucG0nLCAnTWVudWJhci5wbScsIGJsZXNzLnQsICczcnVsZXMucGwnLCAnYnJlYWsxLnQKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRyYnJhY2VfZm9sbG93ZXIgPSBcJWlzX290aGVyX2JyYWNlX2ZvbGxvd2VyOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgU2VlIGlmIGFuIGVsc2lmIGJsb2NrIGlzIGZvbGxvd2VkIGJ5IGFub3RoZXIgZWxzaWYgb3IgZWxzZTsKICAgICAgICAgICAgICAgICMgY29tcGxhaW4gaWYgbm90LgogICAgICAgICAgICAgICAgaWYgKCAkYmxvY2tfdHlwZSBlcSAnZWxzaWYnICkgewoKICAgICAgICAgICAgICAgICAgICBpZiAoICRuZXh0X25vbmJsYW5rX3Rva2VuX3R5cGUgZXEgJ2InICkgeyAgICAjIGVuZCBvZiBsaW5lPwogICAgICAgICAgICAgICAgICAgICAgICAkbG9va2luZ19mb3JfZWxzZSA9IDE7ICAgICMgb2ssIGNoZWNrIG9uIG5leHQgbGluZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyAoICRuZXh0X25vbmJsYW5rX3Rva2VuID1+IC9eKGVsc2lmfGVsc2UpJC8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCJObyBlbHNlIGJsb2NrIDooXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGtlZXAgZ29pbmcgYWZ0ZXIgY2VydGFpbiBibG9jayB0eXBlcyAobWFwLHNvcnQsZ3JlcCxldmFsKQogICAgICAgICAgICAgICAgIyBhZGRlZCBldmFsIGZvciBib3JyaXMudAogICAgICAgICAgICAgICAgaWYgKCRrZWVwX2dvaW5nKSB7CgogICAgICAgICAgICAgICAgICAgICMga2VlcCBnb2luZwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgaWYgbm8gbW9yZSB0b2tlbnMsIHBvc3Rwb25lIGRlY2lzaW9uIHVudGlsIHJlLWVudHJpbmcKICAgICAgICAgICAgICAgIGVsc2lmICggKCAkbmV4dF9ub25ibGFua190b2tlbl90eXBlIGVxICdiJyApCiAgICAgICAgICAgICAgICAgICAgJiYgJHJPcHRzX2FkZF9uZXdsaW5lcyApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdW5sZXNzICgkcmJyYWNlX2ZvbGxvd2VyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5lbmRfYmF0Y2goKQogICAgICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyAoJG5vX2ludGVybmFsX25ld2xpbmVzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZWxzaWYgKCRyYnJhY2VfZm9sbG93ZXIpIHsKCiAgICAgICAgICAgICAgICAgICAgdW5sZXNzICggJHJicmFjZV9mb2xsb3dlci0+eyRuZXh0X25vbmJsYW5rX3Rva2VufSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYtPmVuZF9iYXRjaCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5sZXNzICgkbm9faW50ZXJuYWxfbmV3bGluZXMpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkcmJyYWNlX2ZvbGxvd2VyID0gdW5kZWY7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHNlbGYtPmVuZF9iYXRjaCgpCiAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKCRub19pbnRlcm5hbF9uZXdsaW5lcyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9ICAgICMgZW5kIHRyZWF0bWVudCBvZiBjbG9zaW5nIGJsb2NrIHRva2VuCgogICAgICAgICAgICAjIGhhbmRsZSBzZW1pY29sb24KICAgICAgICAgICAgZWxzaWYgKCAkdHlwZSBlcSAnOycgKSB7CgogICAgICAgICAgICAgICAgbXkgJGJyZWFrX2JlZm9yZV9zZW1pY29sb24gPSAoICRLdG9rZW5fdmFycyA9PSAkS19maXJzdCApCiAgICAgICAgICAgICAgICAgICYmICRyT3B0c19icmVha19hdF9vbGRfc2VtaWNvbG9uX2JyZWFrcG9pbnRzOwoKICAgICAgICAgICAgICAgICMga2lsbCBvbmUtbGluZSBibG9ja3Mgd2l0aCB0b28gbWFueSBzZW1pY29sb25zCiAgICAgICAgICAgICAgICAkc2VtaWNvbG9uc19iZWZvcmVfYmxvY2tfc2VsZl9kZXN0cnVjdC0tOwogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICRicmVha19iZWZvcmVfc2VtaWNvbG9uCiAgICAgICAgICAgICAgICAgICAgfHwgKCAkc2VtaWNvbG9uc19iZWZvcmVfYmxvY2tfc2VsZl9kZXN0cnVjdCA8IDAgKQogICAgICAgICAgICAgICAgICAgIHx8ICggICAkc2VtaWNvbG9uc19iZWZvcmVfYmxvY2tfc2VsZl9kZXN0cnVjdCA9PSAwCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRuZXh0X25vbmJsYW5rX3Rva2VuX3R5cGUgIX4gL15bYlx9XSQvICkKICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGRlc3Ryb3lfb25lX2xpbmVfYmxvY2soKTsKICAgICAgICAgICAgICAgICAgICAkc2VsZi0+ZW5kX2JhdGNoKCkgaWYgKCRicmVha19iZWZvcmVfc2VtaWNvbG9uKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkc2VsZi0+c3RvcmVfdG9rZW5fdG9fZ28oICRLdG9rZW5fdmFycywgJHJ0b2tlbl92YXJzICk7CgogICAgICAgICAgICAgICAgJHNlbGYtPmVuZF9iYXRjaCgpCiAgICAgICAgICAgICAgICAgIHVubGVzcyAoCiAgICAgICAgICAgICAgICAgICAgJG5vX2ludGVybmFsX25ld2xpbmVzCiAgICAgICAgICAgICAgICAgICAgfHwgKCAgICRyT3B0c19rZWVwX2ludGVyaW9yX3NlbWljb2xvbnMKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJEt0b2tlbl92YXJzIDwgJEtfbGFzdCApCiAgICAgICAgICAgICAgICAgICAgfHwgKCAkbmV4dF9ub25ibGFua190b2tlbiBlcSAnfScgKQogICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBoYW5kbGUgaGVyZV9kb2MgdGFyZ2V0IHN0cmluZwogICAgICAgICAgICBlbHNpZiAoICR0eXBlIGVxICdoJyApIHsKCiAgICAgICAgICAgICAgICAjIG5vIG5ld2xpbmVzIGFmdGVyIHNlZWluZyBoZXJlLXRhcmdldAogICAgICAgICAgICAgICAgJG5vX2ludGVybmFsX25ld2xpbmVzID0gMjsKICAgICAgICAgICAgICAgIGRlc3Ryb3lfb25lX2xpbmVfYmxvY2soKTsKICAgICAgICAgICAgICAgICRzZWxmLT5zdG9yZV90b2tlbl90b19nbyggJEt0b2tlbl92YXJzLCAkcnRva2VuX3ZhcnMgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBoYW5kbGUgYWxsIG90aGVyIHRva2VuIHR5cGVzCiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICRzZWxmLT5zdG9yZV90b2tlbl90b19nbyggJEt0b2tlbl92YXJzLCAkcnRva2VuX3ZhcnMgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyByZW1lbWJlciB0d28gcHJldmlvdXMgbm9uYmxhbmsgT1VUUFVUIHRva2VucwogICAgICAgICAgICBpZiAoICR0eXBlIG5lICcjJyAmJiAkdHlwZSBuZSAnYicgKSB7CiAgICAgICAgICAgICAgICAkbGFzdF9sYXN0X25vbmJsYW5rX3Rva2VuICA9ICRsYXN0X25vbmJsYW5rX3Rva2VuOwogICAgICAgICAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua190eXBlICAgPSAkbGFzdF9ub25ibGFua190eXBlOwogICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gICAgICAgPSAkdG9rZW47CiAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua190eXBlICAgICAgICA9ICR0eXBlOwogICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZSAgPSAkYmxvY2tfdHlwZTsKICAgICAgICAgICAgICAgICRLX2xhc3RfbGFzdF9ub25ibGFua19jb2RlID0gJEtfbGFzdF9ub25ibGFua19jb2RlOwogICAgICAgICAgICAgICAgJEtfbGFzdF9ub25ibGFua19jb2RlICAgICAgPSAkS3Rva2VuX3ZhcnM7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSAgICAjIGVuZCBvZiBsb29wIG92ZXIgYWxsIHRva2VucyBpbiB0aGlzICdsaW5lX29mX3Rva2VucycKCiAgICAgICAgbXkgJHR5cGUgPSAkckxMLT5bJEtfbGFzdF0tPltfVFlQRV9dOwoKICAgICAgICAjIHdlIGhhdmUgdG8gZmx1c2ggLi4KICAgICAgICBpZiAoCgogICAgICAgICAgICAjIGlmIHRoZXJlIGlzIGEgc2lkZSBjb21tZW50Li4uCiAgICAgICAgICAgICR0eXBlIGVxICcjJwoKICAgICAgICAgICAgIyBpZiB0aGlzIGxpbmUgZW5kcyBpbiBhIHF1b3RlCiAgICAgICAgICAgICMgTk9URTogVGhpcyBpcyBjcml0aWNhbGx5IGltcG9ydGFudCBmb3IgaW5zdXJpbmcgdGhhdCBxdW90ZWQgbGluZXMKICAgICAgICAgICAgIyBkbyBub3QgZ2V0IHByb2Nlc3NlZCBieSB0aGluZ3MgbGlrZSAtc290IGFuZCAtc2N0CiAgICAgICAgICAgIHx8ICRpbl9xdW90ZQoKICAgICAgICAgICAgIyBpZiB0aGlzIGlzIGEgVkVSU0lPTiBzdGF0ZW1lbnQKICAgICAgICAgICAgfHwgJGlzX1ZFUlNJT05fc3RhdGVtZW50CgogICAgICAgICAgICAjIHRvIGtlZXAgYSBsYWJlbCBhdCB0aGUgZW5kIG9mIGEgbGluZQogICAgICAgICAgICB8fCAkdHlwZSBlcSAnSicKCiAgICAgICAgICAgICMgaWYgd2UgYXJlIGluc3RydWN0ZWQgdG8ga2VlcCBhbGwgb2xkIGxpbmUgYnJlYWtzCiAgICAgICAgICAgIHx8ICEkck9wdHMtPnsnZGVsZXRlLW9sZC1uZXdsaW5lcyd9CgogICAgICAgICAgICAjIHdlIGhhdmUgYSByZXF1ZXN0IHRvIGtlZXAgYSBicmVhayBhZnRlciB0aGlzIGxpbmUKICAgICAgICAgICAgfHwgJHNlbGYtPltfcmJyZWFrX2FmdGVyX0tsYXN0X10tPnskS19sYXN0fQoKICAgICAgICAgICAgIyBpZiB0aGlzIGlzIGEgbGluZSBvZiB0aGUgZm9ybSAndXNlIG92ZXJsb2FkJy4gQSBicmVhayBoZXJlCiAgICAgICAgICAgICMgaW4gdGhlIGlucHV0IGZpbGUgaXMgYSBnb29kIGJyZWFrIGJlY2F1c2UgaXQgd2lsbCBhbGxvdwogICAgICAgICAgICAjIHRoZSBvcGVyYXRvcnMgd2hpY2ggZm9sbG93IHRvIGJlIGZvcm1hdHRlZCB3ZWxsLiBXaXRob3V0CiAgICAgICAgICAgICMgdGhpcyBicmVhayB0aGUgZm9ybWF0dGluZyB3aXRoIC1jaT00IC14Y2kgaXMgcG9vciwgZm9yIGV4YW1wbGUuCgogICAgICAgICAgICAjICAgdXNlIG92ZXJsb2FkCiAgICAgICAgICAgICMgICAgICcrJyA9PiBzdWIgewogICAgICAgICAgICAjICAgICAgIHByaW50IGxlbmd0aCAkX1syXSwgIlxuIjsKICAgICAgICAgICAgIyAgICAgICBteSAoICR4LCAkeSApID0gX29yZGVyKEBfKTsKICAgICAgICAgICAgIyAgICAgICBOdW1iZXI6OlJvbWFuLT5uZXcoIGludCAkeCArICR5ICk7CiAgICAgICAgICAgICMgICAgIH0sCiAgICAgICAgICAgICMgICAgICctJyA9PiBzdWIgewogICAgICAgICAgICAjICAgICAgIG15ICggJHgsICR5ICkgPSBfb3JkZXIoQF8pOwogICAgICAgICAgICAjICAgICAgIE51bWJlcjo6Um9tYW4tPm5ldyggaW50ICR4IC0gJHkgKTsKICAgICAgICAgICAgIyAgICAgfTsKICAgICAgICAgICAgfHwgKCAgICRtYXhfaW5kZXhfdG9fZ28gPT0gMgogICAgICAgICAgICAgICAgJiYgJHR5cGVzX3RvX2dvWzBdIGVxICdrJwogICAgICAgICAgICAgICAgJiYgJHRva2Vuc190b19nb1swXSBlcSAndXNlJwogICAgICAgICAgICAgICAgJiYgJHRva2Vuc190b19nb1skbWF4X2luZGV4X3RvX2dvXSBlcSAnb3ZlcmxvYWQnICkKICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIGRlc3Ryb3lfb25lX2xpbmVfYmxvY2soKTsKICAgICAgICAgICAgJHNlbGYtPmVuZF9iYXRjaCgpOwogICAgICAgIH0KCiAgICAgICAgIyBtYXJrIG9sZCBsaW5lIGJyZWFrcG9pbnRzIGluIGN1cnJlbnQgb3V0cHV0IHN0cmVhbQogICAgICAgIGlmICggJG1heF9pbmRleF90b19nbyA+PSAwICYmICEkck9wdHNfaWdub3JlX29sZF9icmVha3BvaW50cyApIHsKICAgICAgICAgICAgbXkgJGpvYnAgPSAkbWF4X2luZGV4X3RvX2dvOwogICAgICAgICAgICBpZiAoICR0eXBlc190b19nb1skbWF4X2luZGV4X3RvX2dvXSBlcSAnYicgJiYgJG1heF9pbmRleF90b19nbyA+IDAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkam9icC0tOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRvbGRfYnJlYWtwb2ludF90b19nb1skam9icF0gPSAxOwogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9ICMjIGVuZCBzdWIgcHJvY2Vzc19saW5lX29mX0NPREUKfSAjIyBlbmQgY2xvc3VyZSBwcm9jZXNzX2xpbmVfb2ZfQ09ERQoKc3ViIHRpZ2h0X3BhcmVuX2ZvbGxvd3MgewoKICAgIG15ICggJHNlbGYsICRLX3RvX2dvXzAsICRLX2ljICkgPSBAXzsKCiAgICAjIElucHV0IHBhcmFtZXRlcnM6CiAgICAjICAgJEtfdG9fZ29fMCA9IGZpcnN0IHRva2VuIGluZGV4IEsgb2YgdGhpcyBvdXRwdXQgYmF0Y2ggKD1LX3RvX2dvWzBdKQogICAgIyAgICRLX2ljID0gaW5kZXggb2YgdGhlIGNsb3NpbmcgZG8gYnJhY2UgKD1LX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dKQogICAgIyBSZXR1cm4gcGFyYW1ldGVyOgogICAgIyAgIGZhbHNlIGlmIHdlIHdhbnQgYSBicmVhayBhZnRlciB0aGUgY2xvc2luZyBkbyBicmFjZQogICAgIyAgIHRydWUgaWYgd2UgZG8gbm90IHdhbnQgYSBicmVhayBhZnRlciB0aGUgY2xvc2luZyBkbyBicmFjZQoKICAgICMgV2UgYXJlIGF0IHRoZSBjbG9zaW5nIGJyYWNlIG9mIGEgJ2RvJyBibG9jay4gIFNlZSBpZiB0aGlzIGJyYWNlIGlzCiAgICAjIGZvbGxvd2VkIGJ5IGEgY2xvc2luZyBwYXJlbiwgYW5kIGlmIHNvLCBzZXQgYSBmbGFnIHdoaWNoIGluZGljYXRlcwogICAgIyB0aGF0IHdlIGRvIG5vdCB3YW50IGEgbGluZSBicmVhayBiZXR3ZWVuIHRoZSAnfScgYW5kICcpJy4KCiAgICAjIHh4eHh4ICggLi4uLi4uIGRvIHsgIC4uLiB9ICkgewogICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgXi0tLS0tLS1sb29raW5nIGF0IHRoaXMgYnJhY2UsIEtfaWMKCiAgICAjIFN1YnNjcmlwdCBub3RhdGlvbjoKICAgICMgX2kgPSBpbm5lciBjb250YWluZXIgKGJyYWNlcyBpbiB0aGlzIGNhc2UpCiAgICAjIF9vID0gb3V0ZXIgY29udGFpbmVyIChwYXJlbnMgaW4gdGhpcyBjYXNlKQogICAgIyBfaW8gPSBpbm5lciBvcGVuaW5nID0gJ3snCiAgICAjIF9pYyA9IGlubmVyIGNsb3NpbmcgPSAnfScKICAgICMgX29vID0gb3V0ZXIgb3BlbmluZyA9ICcoJwogICAgIyBfb2MgPSBvdXRlciBjbG9zaW5nID0gJyknCgogICAgIyAgICAgICB8LS1LX29vICAgICAgICAgICAgICAgICB8LS1LX29jICA9IG91dGVyIGNvbnRhaW5lcgogICAgIyB4eHh4eCAoIC4uLi4uLiBkbyB7ICAuLi4uLi4gfSApIHsKICAgICMgICAgICAgICAgICAgICAgICAgfC0tS19pbyAgIHwtLUtfaWMgICAgPSBpbm5lciBjb250YWluZXIKCiAgICAjIEluIGdlbmVyYWwsIHRoZSBzYWZlIHRoaW5nIHRvIGRvIGlzIHJldHVybiBhICdmYWxzZScgdmFsdWUKICAgICMgaWYgdGhlIHN0YXRlbWVudCBhcHBlYXJzIHRvIGJlIGNvbXBsZXguICBUaGlzIHdpbGwgaGF2ZQogICAgIyB0aGUgZG93bnN0cmVhbSBzaWRlLWVmZmVjdCBvZiBvcGVuaW5nIHVwIG91dGVyIGNvbnRhaW5lcnMKICAgICMgdG8gaGVscCBtYWtlIGNvbXBsZXggY29kZSByZWFkYWJsZS4gIEJ1dCBmb3Igc2ltcGxlcgogICAgIyBkbyBibG9ja3MgaXQgY2FuIGJlIHByZWZlcmFibGUgdG8ga2VlcCB0aGUgY29kZSBjb21wYWN0CiAgICAjIGJ5IHJldHVybmluZyBhICd0cnVlJyB2YWx1ZS4KCiAgICByZXR1cm4gdW5sZXNzIGRlZmluZWQoJEtfaWMpOwogICAgbXkgJHJMTCA9ICRzZWxmLT5bX3JMTF9dOwoKICAgICMgd2Ugc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGF0IGEgY2xvc2luZyBibG9jawogICAgbXkgJHNlcW5vX2kgPSAkckxMLT5bJEtfaWNdLT5bX1RZUEVfU0VRVUVOQ0VfXTsKICAgIHJldHVybiB1bmxlc3MgKCRzZXFub19pKTsgICAgIyBzaG91bGRuJ3QgaGFwcGVuOwoKICAgICMgVGhpcyBvbmx5IGFwcGxpZXMgaWYgdGhlIG5leHQgbm9uYmxhbmsgaXMgYSAnKScKICAgIG15ICRLX29jID0gJHNlbGYtPktfbmV4dF9ub25ibGFuaygkS19pYyk7CiAgICByZXR1cm4gdW5sZXNzIGRlZmluZWQoJEtfb2MpOwogICAgbXkgJHRva2VuX25leHQgPSAkckxMLT5bJEtfb2NdLT5bX1RPS0VOX107CiAgICByZXR1cm4gdW5sZXNzICggJHRva2VuX25leHQgZXEgJyknICk7CgogICAgbXkgJHNlcW5vX28gPSAkckxMLT5bJEtfb2NdLT5bX1RZUEVfU0VRVUVOQ0VfXTsKICAgIG15ICRLX2lvICAgID0gJHNlbGYtPltfS19vcGVuaW5nX2NvbnRhaW5lcl9dLT57JHNlcW5vX2l9OwogICAgbXkgJEtfb28gICAgPSAkc2VsZi0+W19LX29wZW5pbmdfY29udGFpbmVyX10tPnskc2Vxbm9fb307CiAgICByZXR1cm4gdW5sZXNzICggZGVmaW5lZCgkS19pbykgJiYgZGVmaW5lZCgkS19vbykgKTsKCiAgICAjIFJVTEUgMTogRG8gbm90IGJyZWFrIGJlZm9yZSBhIGNsb3Npbmcgc2lnbmF0dXJlIHBhcmVuCiAgICAjIChyZWdhcmRsZXNzIG9mIGNvbXBsZXhpdHkpLiAgVGhpcyBpcyBhIGZpeCBmb3IgaXNzdWUgZ2l0IzIyLgogICAgIyBMb29raW5nIGZvciBzb21ldGhpbmcgbGlrZToKICAgICMgICBzdWIgeHh4ICggLi4uIGRvIHsgIC4uLiB9ICkgewogICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeLS0tLS0gbmV4dCBibG9ja190eXBlCiAgICBteSAkS190ZXN0ID0gJHNlbGYtPktfbmV4dF9ub25ibGFuaygkS19vYyk7CiAgICBpZiAoIGRlZmluZWQoJEtfdGVzdCkgKSB7CiAgICAgICAgbXkgJGJsb2NrX3R5cGUgPSAkckxMLT5bJEtfdGVzdF0tPltfQkxPQ0tfVFlQRV9dOwogICAgICAgIGlmICggICAkYmxvY2tfdHlwZQogICAgICAgICAgICAmJiAkckxMLT5bJEtfdGVzdF0tPltfVFlQRV9dIGVxICd7JwogICAgICAgICAgICAmJiAkYmxvY2tfdHlwZSA9fiAvJEFOWVNVQl9QQVRURVJOLyApCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICB9CgogICAgIyBSVUxFIDI6IEJyZWFrIGlmIHRoZSBjb250ZW50cyB3aXRoaW4gYnJhY2VzIGFwcGVhcnMgdG8gYmUgJ2NvbXBsZXgnLiAgV2UKICAgICMgYmFzZSB0aGlzIGRlY2lzaW9uIG9uIHRoZSBudW1iZXIgb2YgdG9rZW5zIGJldHdlZW4gYnJhY2VzLgoKICAgICMgeHh4eHggKCAuLi4gZG8geyAgLi4uIH0gKSB7CiAgICAjICAgICAgICAgICAgICAgICBeXl5eXl4KCiAgICAjIEFsdGhvdWdoIHZlcnkgc2ltcGxlLCBpdCBoYXMgdGhlIGFkdmFudGFnZXMgb2YgKDEpIGJlaW5nIGluc2Vuc2l0aXZlIHRvCiAgICAjIGNoYW5nZXMgaW4gbGVuZ3RocyBvZiBpZGVudGlmaWVyIG5hbWVzLCAoMikgZWFzeSB0byB1bmRlcnN0YW5kLCBpbXBsZW1lbnQKICAgICMgYW5kIHRlc3QuICBBIHRlc3QgY2FzZSBmb3IgdGhpcyBpcyAndC9zbmlwcGV0cy9sb25nX2xpbmUuaW4nLgoKICAgICMgRXhhbXBsZTogJEtfaWMgLSAkS19vbyA9IDkgICAgICAgW1Bhc3MgUnVsZSAyXQogICAgIyBpZiAoIGRvIHsgJDIgIX4gLyYvIH0gKSB7IC4uLiB9CgogICAgIyBFeGFtcGxlOiAkS19pYyAtICRLX29vID0gMTAgICAgICBbUGFzcyBSdWxlIDJdCiAgICAjIGZvciAoIHNwbGl0IC9ccyo9ezcwLH1ccyovLCBkbyB7IGxvY2FsICQvOyA8REFUQT4gfSkgeyAuLi4gfQoKICAgICMgRXhhbXBsZTogJEtfaWMgLSAkS19vbyA9IDIwICAgICAgW0ZhaWwgUnVsZSAyXQogICAgIyB0ZXN0X3plcm9fYXJncyggImRvLXJldHVybmVkIGxpc3Qgc2xpY2UiLCBkbyB7ICggMTAsIDExIClbIDIsIDMgXTsgfSk7CgogICAgcmV0dXJuIGlmICggJEtfaWMgLSAkS19pbyA+IDE2ICk7CgogICAgIyBSVUxFIDM6IGJyZWFrIGlmIHRoZSBjb2RlIGJldHdlZW4gdGhlIG9wZW5pbmcgJygnIGFuZCB0aGUgJ3snIGlzICdjb21wbGV4JwogICAgIyBBcyB3aXRoIHRoZSBwcmV2aW91cyBydWxlLCB3ZSBkZWNpZGUgYmFzZWQgb24gdGhlIHRva2VuIGNvdW50CgogICAgIyB4eHh4eCAoIC4uLiBkbyB7ICAuLi4gfSApIHsKICAgICMgICAgICAgIF5eXl5eXl5eCgogICAgIyBFeGFtcGxlOiAkS19pYyAtICRLX29vID0gOSAgICAgICBbUGFzcyBSdWxlIDJdCiAgICAjICAgICAgICAgICRLX2lvIC0gJEtfb28gPSA0ICAgICAgIFtQYXNzIFJ1bGUgM10KICAgICMgaWYgKCBkbyB7ICQyICF+IC8mLyB9ICkgeyAuLi4gfQoKICAgICMgRXhhbXBsZTogJEtfaWMgLSAkS19vbyA9IDEwICAgIFtQYXNzIHJ1bGUgMl0KICAgICMgICAgICAgICAgJEtfaW8gLSAkS19vbyA9IDkgICAgIFtQYXNzIHJ1bGUgM10KICAgICMgZm9yICggc3BsaXQgL1xzKj17NzAsfVxzKi8sIGRvIHsgbG9jYWwgJC87IDxEQVRBPiB9KSB7IC4uLiB9CgogICAgcmV0dXJuIGlmICggJEtfaW8gLSAkS19vbyA+IDkgKTsKCiAgICAjIFJVTEUgNDogQnJlYWsgaWYgd2UgaGF2ZSBhbHJlYWR5IGJyb2tlbiB0aGlzIGJhdGNoIG9mIG91dHB1dCB0b2tlbnMKICAgIHJldHVybiBpZiAoICRLX29vIDwgJEtfdG9fZ29fMCApOwoKICAgICMgUlVMRSA1OiBCcmVhayBpZiBpbnB1dCBpcyBub3Qgb24gb25lIGxpbmUKICAgICMgRm9yIGV4YW1wbGUsIHdlIHdpbGwgc2V0IHRoZSBmbGFnIGZvciB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb24KICAgICMgd3JpdHRlbiBpbiBvbmUgbGluZToKCiAgICAjIFRoaXMgaGFzOiAkS19pYyAtICRLX29vID0gMTAgICAgW1Bhc3MgcnVsZSAyXQogICAgIyAgICAgICAgICAgJEtfaW8gLSAkS19vbyA9IDggICAgIFtQYXNzIHJ1bGUgM10KICAgICMgICAkc2VsZi0+ZGVidWcoICdFcnJvcjogJyAuIGRvIHsgbG9jYWwgJC87IDwkZXJyPiB9ICk7CgogICAgIyBidXQgd2UgYnJlYWsgYWZ0ZXIgdGhlIGJyYWNlIGlmIGl0IGlzIG9uIG11bHRpcGxlIGxpbmVzIG9uIGlucHV0LCBzaW5jZQogICAgIyB0aGUgdXNlciBtYXkgcHJlZmVyIGl0IG9uIG11bHRpcGxlIGxpbmVzOgoKICAgICMgW0ZhaWwgcnVsZSA1XQogICAgIyAgICRzZWxmLT5kZWJ1ZygKICAgICMgICAgICAgJ0Vycm9yOiAnIC4gZG8geyBsb2NhbCAkLzsgPCRlcnI+IH0KICAgICMgICApOwoKICAgIGlmICggISRyT3B0c19pZ25vcmVfb2xkX2JyZWFrcG9pbnRzICkgewogICAgICAgIG15ICRpbGluZV9vbyA9ICRyTEwtPlskS19vb10tPltfTElORV9JTkRFWF9dOwogICAgICAgIG15ICRpbGluZV9vYyA9ICRyTEwtPlskS19vY10tPltfTElORV9JTkRFWF9dOwogICAgICAgIHJldHVybiBpZiAoICRpbGluZV9vbyAhPSAkaWxpbmVfb2MgKTsKICAgIH0KCiAgICAjIE9LIHRvIGtlZXAgdGhlIHBhcmVuIHRpZ2h0CiAgICByZXR1cm4gMTsKfQoKc3ViIHN0YXJ0aW5nX29uZV9saW5lX2Jsb2NrIHsKCiAgICAjIGFmdGVyIHNlZWluZyBhbiBvcGVuaW5nIGN1cmx5IGJyYWNlLCBsb29rIGZvciB0aGUgY2xvc2luZyBicmFjZSBhbmQgc2VlCiAgICAjIGlmIHRoZSBlbnRpcmUgYmxvY2sgd2lsbCBmaXQgb24gYSBsaW5lLiAgVGhpcyByb3V0aW5lIGlzIG5vdCBhbHdheXMgcmlnaHQKICAgICMgc28gYSBjaGVjayBpcyBtYWRlIGxhdGVyIChhdCB0aGUgY2xvc2luZyBicmFjZSkgdG8gbWFrZSBzdXJlIHdlIHJlYWxseQogICAgIyBoYXZlIGEgb25lLWxpbmUgYmxvY2suICBXZSBoYXZlIHRvIGRvIHRoaXMgcHJlbGltaW5hcnkgY2hlY2ssIHRob3VnaCwKICAgICMgYmVjYXVzZSBvdGhlcndpc2Ugd2Ugd291bGQgYWx3YXlzIGJyZWFrIGF0IGEgc2VtaWNvbG9uIHdpdGhpbiBhIG9uZS1saW5lCiAgICAjIGJsb2NrIGlmIHRoZSBibG9jayBjb250YWlucyBtdWx0aXBsZSBzdGF0ZW1lbnRzLgoKICAgIG15ICggJHNlbGYsICRLaiwgJEtfbGFzdF9ub25ibGFuaywgJEtfbGFzdCApID0gQF87CgogICAgbXkgJHJicmVha19jb250YWluZXIgICAgPSAkc2VsZi0+W19yYnJlYWtfY29udGFpbmVyX107CiAgICBteSAkcnNob3J0X25lc3RlZCAgICAgICA9ICRzZWxmLT5bX3JzaG9ydF9uZXN0ZWRfXTsKICAgIG15ICRyTEwgICAgICAgICAgICAgICAgID0gJHNlbGYtPltfckxMX107CiAgICBteSAkS19vcGVuaW5nX2NvbnRhaW5lciA9ICRzZWxmLT5bX0tfb3BlbmluZ19jb250YWluZXJfXTsKCiAgICAjIGtpbGwgYW55IGN1cnJlbnQgYmxvY2sgLSB3ZSBjYW4gb25seSBnbyAxIGRlZXAKICAgIGRlc3Ryb3lfb25lX2xpbmVfYmxvY2soKTsKCiAgICAjIHJldHVybiB2YWx1ZToKICAgICMgIDE9ZGlzdGFuY2UgZnJvbSBzdGFydCBvZiBibG9jayB0byBvcGVuaW5nIGJyYWNlIGV4Y2VlZHMgbGluZSBsZW5ndGgKICAgICMgIDA9b3RoZXJ3aXNlCgogICAgbXkgJGlfc3RhcnQgPSAwOwoKICAgICMgVGhpcyByb3V0aW5lIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZCBpZiB0aGVyZSBhcmUgbm8gdG9rZW5zIGluIHRoZQogICAgIyAndG9fZ28nIGFycmF5cyBvZiBwcmV2aW91c2x5IHN0b3JlZCB0b2tlbnMuICBBIHByZXZpb3VzIGNhbGwgdG8KICAgICMgJ3N0b3JlX3Rva2VuX3RvX2dvJyBzaG91bGQgaGF2ZSBzdG9yZWQgYW4gb3BlbmluZyBicmFjZS4gQW4gZXJyb3IgaGVyZQogICAgIyBpbmRpY2F0ZXMgdGhhdCBhIHByb2dyYW1taW5nIGNoYW5nZSBtYXkgaGF2ZSBjYXVzZWQgYSBmbHVzaCBvcGVyYXRpb24gdG8KICAgICMgY2xlYW4gb3V0IHRoZSBwcmV2aW91c2x5IHN0b3JlZCB0b2tlbnMuCiAgICBpZiAoICFkZWZpbmVkKCRtYXhfaW5kZXhfdG9fZ28pIHx8ICRtYXhfaW5kZXhfdG9fZ28gPCAwICkgewogICAgICAgIEZhdWx0KCJwcm9ncmFtIGJ1Zzogc3RvcmVfdG9rZW5fdG9fZ28gY2FsbGVkIGluY29ycmVjdGx5XG4iKTsKICAgIH0KCiAgICAjIHJldHVybiBpZiBibG9jayBzaG91bGQgYmUgYnJva2VuCiAgICBteSAkdHlwZV9zZXF1ZW5jZSA9ICRyTEwtPlskS2pdLT5bX1RZUEVfU0VRVUVOQ0VfXTsKICAgIGlmICggJHJicmVha19jb250YWluZXItPnskdHlwZV9zZXF1ZW5jZX0gKSB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgbXkgJHJpc19ibGlfY29udGFpbmVyID0gJHNlbGYtPltfcmlzX2JsaV9jb250YWluZXJfXTsKICAgIG15ICRpc19ibGkgICAgICAgICAgICA9ICRyaXNfYmxpX2NvbnRhaW5lci0+eyR0eXBlX3NlcXVlbmNlfTsKCiAgICBteSAkYmxvY2tfdHlwZSAgICAgICAgICAgICA9ICRyTEwtPlskS2pdLT5bX0JMT0NLX1RZUEVfXTsKICAgIG15ICRpbmRleF9tYXhfZm9yY2VkX2JyZWFrID0gZ2V0X2luZGV4X21heF9mb3JjZWRfYnJlYWsoKTsKCiAgICBteSAkcHJldmlvdXNfbm9uYmxhbmtfdG9rZW4gPSAnJzsKICAgIG15ICRpX2xhc3Rfbm9uYmxhbmsgICAgICAgICA9IC0xOwogICAgaWYgKCBkZWZpbmVkKCRLX2xhc3Rfbm9uYmxhbmspICkgewogICAgICAgICRpX2xhc3Rfbm9uYmxhbmsgPSAkS19sYXN0X25vbmJsYW5rIC0gJEtfdG9fZ29bMF07CiAgICAgICAgaWYgKCAkaV9sYXN0X25vbmJsYW5rID49IDAgKSB7CiAgICAgICAgICAgICRwcmV2aW91c19ub25ibGFua190b2tlbiA9ICRyTEwtPlskS19sYXN0X25vbmJsYW5rXS0+W19UT0tFTl9dOwogICAgICAgIH0KICAgIH0KCiAgICAjIGZpbmQgdGhlIHN0YXJ0aW5nIGtleXdvcmQgZm9yIHRoaXMgYmxvY2sgKHN1Y2ggYXMgJ2lmJywgJ2Vsc2UnLCAuLi4pCiAgICBpZiAoICAgJG1heF9pbmRleF90b19nbyA9PSAwCiAgICAgICAgfHwgJGJsb2NrX3R5cGUgPX4gL15bXHtcfVw7XDpdJC8KICAgICAgICB8fCAkYmxvY2tfdHlwZSA9fiAvXnBhY2thZ2UvICkKICAgIHsKICAgICAgICAkaV9zdGFydCA9ICRtYXhfaW5kZXhfdG9fZ287CiAgICB9CgogICAgIyB0aGUgcHJldmlvdXMgbm9uYmxhbmsgdG9rZW4gc2hvdWxkIHN0YXJ0IHRoZXNlIGJsb2NrIHR5cGVzCiAgICBlbHNpZiAoCiAgICAgICAgJGlfbGFzdF9ub25ibGFuayA+PSAwCiAgICAgICAgJiYgKCAgICRwcmV2aW91c19ub25ibGFua190b2tlbiBlcSAkYmxvY2tfdHlwZQogICAgICAgICAgICB8fCAkYmxvY2tfdHlwZSA9fiAvJEFOWVNVQl9QQVRURVJOLwogICAgICAgICAgICB8fCAkYmxvY2tfdHlwZSA9fiAvXChcKS8gKQogICAgICApCiAgICB7CiAgICAgICAgJGlfc3RhcnQgPSAkaV9sYXN0X25vbmJsYW5rOwoKICAgICAgICAjIEZvciBzaWduYXR1cmVzIGFuZCBleHRlbmRlZCBzeW50YXggLi4uCiAgICAgICAgIyBJZiB0aGlzIGJyYWNlIGZvbGxvd3MgYSBwYXJlbnRoZXNpemVkIGxpc3QsIHdlIHNob3VsZCBsb29rIGJhY2sgdG8KICAgICAgICAjIGZpbmQgdGhlIGtleXdvcmQgYmVmb3JlIHRoZSBvcGVuaW5nIHBhcmVuIGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIG1pZ2h0CiAgICAgICAgIyBmb3JtIGEgb25lIGxpbmUgYmxvY2sgd2hpY2ggc3RheXMgaW50YWNrLCBhbmQgY2F1c2UgdGhlIHBhcmVudGhlc2l6ZWQKICAgICAgICAjIGV4cHJlc3Npb24gdG8gYnJlYWsgb3Blbi4gVGhhdCBsb29rcyBiYWQuCiAgICAgICAgaWYgKCAkdG9rZW5zX3RvX2dvWyRpX3N0YXJ0XSBlcSAnKScgKSB7CgogICAgICAgICAgICAjIEZpbmQgdGhlIG9wZW5pbmcgcGFyZW4KICAgICAgICAgICAgbXkgJEtfc3RhcnQgPSAkS190b19nb1skaV9zdGFydF07CiAgICAgICAgICAgIHJldHVybiAwIHVubGVzcyBkZWZpbmVkKCRLX3N0YXJ0KTsKICAgICAgICAgICAgbXkgJHNlcW5vID0gJHR5cGVfc2VxdWVuY2VfdG9fZ29bJGlfc3RhcnRdOwogICAgICAgICAgICByZXR1cm4gMCB1bmxlc3MgKCRzZXFubyk7CiAgICAgICAgICAgIG15ICRLX29wZW5pbmcgPSAkS19vcGVuaW5nX2NvbnRhaW5lci0+eyRzZXFub307CiAgICAgICAgICAgIHJldHVybiAwIHVubGVzcyBkZWZpbmVkKCRLX29wZW5pbmcpOwogICAgICAgICAgICBteSAkaV9vcGVuaW5nID0gJGlfc3RhcnQgKyAoICRLX29wZW5pbmcgLSAkS19zdGFydCApOwoKICAgICAgICAgICAgIyBnaXZlIHVwIGlmIG5vdCBvbiB0aGlzIGxpbmUKICAgICAgICAgICAgcmV0dXJuIDAgdW5sZXNzICggJGlfb3BlbmluZyA+PSAwICk7CiAgICAgICAgICAgICRpX3N0YXJ0ID0gJGlfb3BlbmluZzsgICAgIyMkaW5kZXhfbWF4X2ZvcmNlZF9icmVhayArIDE7CgogICAgICAgICAgICAjIGdvIGJhY2sgb25lIHRva2VuIGJlZm9yZSB0aGUgb3BlbmluZyBwYXJlbgogICAgICAgICAgICBpZiAoICRpX3N0YXJ0ID4gMCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgJGlfc3RhcnQtLSB9CiAgICAgICAgICAgIGlmICggJHR5cGVzX3RvX2dvWyRpX3N0YXJ0XSBlcSAnYicgJiYgJGlfc3RhcnQgPiAwICkgeyAkaV9zdGFydC0tOyB9CiAgICAgICAgICAgIG15ICRsZXYgPSAkbGV2ZWxzX3RvX2dvWyRpX3N0YXJ0XTsKICAgICAgICAgICAgaWYgKCAkbGV2ID4gJHJMTC0+WyRLal0tPltfTEVWRUxfXSApIHsgcmV0dXJuIDAgfQogICAgICAgIH0KICAgIH0KCiAgICBlbHNpZiAoICRwcmV2aW91c19ub25ibGFua190b2tlbiBlcSAnKScgKSB7CgogICAgICAgICMgRm9yIHNvbWV0aGluZyBsaWtlICJpZiAoeHh4KSB7IiwgdGhlIGtleXdvcmQgImlmIiB3aWxsIGJlCiAgICAgICAgIyBqdXN0IGFmdGVyIHRoZSBtb3N0IHJlY2VudCBicmVhay4gVGhpcyB3aWxsIGJlIDAgdW5sZXNzCiAgICAgICAgIyB3ZSBoYXZlIGp1c3Qga2lsbGVkIGEgb25lLWxpbmUgYmxvY2sgYW5kIGFyZSBzdGFydGluZyBhbm90aGVyLgogICAgICAgICMgKGRvaWYudCkKICAgICAgICAjIE5vdGU6IGNhbm5vdCB1c2UgaW5leHRfaW5kZXhfdG9fZ29bXSBoZXJlIGJlY2F1c2UgdGhhdCBhcnJheQogICAgICAgICMgaXMgc3RpbGwgYmVpbmcgY29uc3RydWN0ZWQuCiAgICAgICAgJGlfc3RhcnQgPSAkaW5kZXhfbWF4X2ZvcmNlZF9icmVhayArIDE7CiAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bJGlfc3RhcnRdIGVxICdiJyApIHsKICAgICAgICAgICAgJGlfc3RhcnQrKzsKICAgICAgICB9CgogICAgICAgICMgUGF0Y2ggdG8gYXZvaWQgYnJlYWtpbmcgc2hvcnQgYmxvY2tzIGRlZmluZWQgd2l0aCBleHRlbmRlZF9zeW50YXg6CiAgICAgICAgIyBTdHJpcCBvZmYgYW55IHRyYWlsaW5nICgpIHdoaWNoIHdhcyBhZGRlZCBpbiB0aGUgcGFyc2VyIHRvIG1hcmsKICAgICAgICAjIHRoZSBvcGVuaW5nIGtleXdvcmQuICBGb3IgZXhhbXBsZSwgaW4gdGhlIGZvbGxvd2luZwogICAgICAgICMgICAgY3JlYXRlKCBUeXBlRm9vICRlKSB7JGJ1YmJhfQogICAgICAgICMgdGhlIGJsb2NrdHlwZSB3b3VsZCBiZSBtYXJrZWQgYXMgY3JlYXRlKCkKICAgICAgICBteSAkc3RyaXBwZWRfYmxvY2tfdHlwZSA9ICRibG9ja190eXBlOwogICAgICAgICRzdHJpcHBlZF9ibG9ja190eXBlID1+IHMvXChcKSQvLzsKCiAgICAgICAgdW5sZXNzICggJHRva2Vuc190b19nb1skaV9zdGFydF0gZXEgJHN0cmlwcGVkX2Jsb2NrX3R5cGUgKSB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgIH0KCiAgICAjIHBhdGNoIGZvciBTV0lUQ0gvQ0FTRSB0byByZXRhaW4gb25lLWxpbmUgY2FzZS93aGVuIGJsb2NrcwogICAgZWxzaWYgKCAkYmxvY2tfdHlwZSBlcSAnY2FzZScgfHwgJGJsb2NrX3R5cGUgZXEgJ3doZW4nICkgewoKICAgICAgICAjIE5vdGU6IGNhbm5vdCB1c2UgaW5leHRfaW5kZXhfdG9fZ29bXSBoZXJlIGJlY2F1c2UgdGhhdCBhcnJheQogICAgICAgICMgaXMgc3RpbGwgYmVpbmcgY29uc3RydWN0ZWQuCiAgICAgICAgJGlfc3RhcnQgPSAkaW5kZXhfbWF4X2ZvcmNlZF9icmVhayArIDE7CiAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bJGlfc3RhcnRdIGVxICdiJyApIHsKICAgICAgICAgICAgJGlfc3RhcnQrKzsKICAgICAgICB9CiAgICAgICAgdW5sZXNzICggJHRva2Vuc190b19nb1skaV9zdGFydF0gZXEgJGJsb2NrX3R5cGUgKSB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgIH0KCiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBteSAkcG9zID0gdG90YWxfbGluZV9sZW5ndGgoICRpX3N0YXJ0LCAkbWF4X2luZGV4X3RvX2dvICkgLSAxOwoKICAgICMgc2VlIGlmIGxlbmd0aCBpcyB0b28gbG9uZyB0byBldmVuIHN0YXJ0CiAgICBpZiAoICRwb3MgPiAkbWF4aW11bV9saW5lX2xlbmd0aFsgJGxldmVsc190b19nb1skaV9zdGFydF0gXSApIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBmb3JlYWNoIG15ICRLaSAoICRLaiArIDEgLi4gJEtfbGFzdCApIHsKCiAgICAgICAgIyBvbGQgd2hpdGVzcGFjZSBjb3VsZCBiZSBhcmJpdHJhcmlseSBsYXJnZSwgc28gZG9uJ3QgdXNlIGl0CiAgICAgICAgaWYgKCAkckxMLT5bJEtpXS0+W19UWVBFX10gZXEgJ2InICkgeyAkcG9zICs9IDEgfQogICAgICAgIGVsc2UgeyAkcG9zICs9ICRyTEwtPlskS2ldLT5bX1RPS0VOX0xFTkdUSF9dIH0KCiAgICAgICAgIyBpZ25vcmUgc29tZSBzbWFsbCBibG9ja3MKICAgICAgICBteSAkdHlwZV9zZXF1ZW5jZSA9ICRyTEwtPlskS2ldLT5bX1RZUEVfU0VRVUVOQ0VfXTsKICAgICAgICBteSAkbm9icmVhayAgICAgICA9ICRyc2hvcnRfbmVzdGVkLT57JHR5cGVfc2VxdWVuY2V9OwoKICAgICAgICAjIFJldHVybiBmYWxzZSByZXN1bHQgaWYgd2UgZXhjZWVkIHRoZSBtYXhpbXVtIGxpbmUgbGVuZ3RoLAogICAgICAgIGlmICggJHBvcyA+ICRtYXhpbXVtX2xpbmVfbGVuZ3RoWyAkbGV2ZWxzX3RvX2dvWyRpX3N0YXJ0XSBdICkgewogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICAgICMga2VlcCBnb2luZyBmb3Igbm9uLWNvbnRhaW5lcnMKICAgICAgICBlbHNpZiAoICEkdHlwZV9zZXF1ZW5jZSApIHsKCiAgICAgICAgfQoKICAgICAgICAjIHJldHVybiBpZiB3ZSBlbmNvdW50ZXIgYW5vdGhlciBvcGVuaW5nIGJyYWNlIGJlZm9yZSBmaW5kaW5nIHRoZQogICAgICAgICMgY2xvc2luZyBicmFjZS4KICAgICAgICBlbHNpZiAoJHJMTC0+WyRLaV0tPltfVE9LRU5fXSBlcSAneycKICAgICAgICAgICAgJiYgJHJMTC0+WyRLaV0tPltfVFlQRV9dIGVxICd7JwogICAgICAgICAgICAmJiAkckxMLT5bJEtpXS0+W19CTE9DS19UWVBFX10KICAgICAgICAgICAgJiYgISRub2JyZWFrICkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgIyBpZiB3ZSBmaW5kIG91ciBjbG9zaW5nIGJyYWNlLi4KICAgICAgICBlbHNpZiAoJHJMTC0+WyRLaV0tPltfVE9LRU5fXSBlcSAnfScKICAgICAgICAgICAgJiYgJHJMTC0+WyRLaV0tPltfVFlQRV9dIGVxICd9JwogICAgICAgICAgICAmJiAkckxMLT5bJEtpXS0+W19CTE9DS19UWVBFX10KICAgICAgICAgICAgJiYgISRub2JyZWFrICkKICAgICAgICB7CgogICAgICAgICAgICAjIGJlIHN1cmUgYW55IHRyYWlsaW5nIGNvbW1lbnQgYWxzbyBmaXRzIG9uIHRoZSBsaW5lCiAgICAgICAgICAgIG15ICRLaV9ub25ibGFuayA9ICRLaTsKICAgICAgICAgICAgaWYgKCAkS2lfbm9uYmxhbmsgPCAkS19sYXN0ICkgewogICAgICAgICAgICAgICAgJEtpX25vbmJsYW5rKys7CiAgICAgICAgICAgICAgICBpZiAoICAgJHJMTC0+WyRLaV9ub25ibGFua10tPltfVFlQRV9dIGVxICdiJwogICAgICAgICAgICAgICAgICAgICYmICRLaV9ub25ibGFuayA8ICRLX2xhc3QgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRLaV9ub25ibGFuaysrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFBhdGNoIGZvciBvbmUtbGluZSBzb3J0L21hcC9ncmVwL2V2YWwgYmxvY2tzIHdpdGggc2lkZSBjb21tZW50czoKICAgICAgICAgICAgIyBXZSB3aWxsIGlnbm9yZSB0aGUgc2lkZSBjb21tZW50IGxlbmd0aCBmb3Igc29ydC9tYXAvZ3JlcC9ldmFsCiAgICAgICAgICAgICMgYmVjYXVzZSB0aGlzIGNhbiBsZWFkIHRvIHN0YXRlbWVudHMgd2hpY2ggY2hhbmdlIGV2ZXJ5IHRpbWUKICAgICAgICAgICAgIyBwZXJsdGlkeSBpcyBydW4uICBIZXJlIGlzIGFuIGV4YW1wbGUgZnJvbSBEZW5pcyBNb3Nrb3dpdHogd2hpY2gKICAgICAgICAgICAgIyBvc2NpbGxhdGVzIGJldHdlZW4gdGhlc2UgdHdvIHN0YXRlcyB3aXRob3V0IHRoaXMgcGF0Y2g6CgojIyAtLS0tLS0tLQojIyBncmVwIHsgJF8tPmZvbyBuZSAnYmFyJyB9ICMgYXNkZmEgYXNkZiBhc2RmIGFzZGYgYXNkZiBhc2RmIGFzZGYgYXNkZiBhc2RmIGFzZGYgYXNkZgojIyAgQGJhejsKIyMKIyMgZ3JlcCB7CiMjICAgICAkXy0+Zm9vIG5lICdiYXInCiMjICAgfSAgICAjIGFzZGZhIGFzZGYgYXNkZiBhc2RmIGFzZGYgYXNkZiBhc2RmIGFzZGYgYXNkZiBhc2RmIGFzZGYKIyMgICBAYmF6OwojIyAtLS0tLS0tLQoKICAgICAgICAgICAgIyBXaGVuIHRoZSBmaXJzdCBsaW5lIGlzIGlucHV0IGl0IGdldHMgYnJva2VuIGFwYXJ0IGJ5IHRoZSBtYWluCiAgICAgICAgICAgICMgbGluZSBicmVhayBsb2dpYyBpbiBzdWIgcHJvY2Vzc19saW5lX29mX0NPREUuCiAgICAgICAgICAgICMgV2hlbiB0aGUgc2Vjb25kIGxpbmUgaXMgaW5wdXQgaXQgZ2V0cyByZWNvbWJpbmVkIGJ5CiAgICAgICAgICAgICMgcHJvY2Vzc19saW5lX29mX0NPREUgYW5kIHBhc3NlZCB0byB0aGUgb3V0cHV0IHJvdXRpbmVzLiAgVGhlCiAgICAgICAgICAgICMgb3V0cHV0IHJvdXRpbmVzIChzZXRfY29udGludWF0aW9uX2JyZWFrcykgZG8gbm90IGJyZWFrIGl0IGFwYXJ0CiAgICAgICAgICAgICMgYmVjYXVzZSB0aGUgYm9uZCBzdHJlbmd0aHMgYXJlIHNldCB0byB0aGUgaGlnaGVzdCBwb3NzaWJsZSB2YWx1ZQogICAgICAgICAgICAjIGZvciBncmVwL21hcC9ldmFsL3NvcnQgYmxvY2tzLCBzbyB0aGUgZmlyc3QgdmVyc2lvbiBnZXRzIG91dHB1dC4KICAgICAgICAgICAgIyBJdCB3b3VsZCBiZSBwb3NzaWJsZSB0byBmaXggdGhpcyBieSBjaGFuZ2luZyBib25kIHN0cmVuZ3RocywKICAgICAgICAgICAgIyBidXQgdGhleSBhcmUgaGlnaCB0byBwcmV2ZW50IGVycm9ycyBpbiBvbGRlciB2ZXJzaW9ucyBvZiBwZXJsLgoKICAgICAgICAgICAgaWYgKCAgICRLaSA8ICRLX2xhc3QKICAgICAgICAgICAgICAgICYmICRyTEwtPlskS2lfbm9uYmxhbmtdLT5bX1RZUEVfXSBlcSAnIycKICAgICAgICAgICAgICAgICYmICEkaXNfc29ydF9tYXBfZ3JlcHskYmxvY2tfdHlwZX0gKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgJHBvcyArPSAkckxMLT5bJEtpX25vbmJsYW5rXS0+W19UT0tFTl9MRU5HVEhfXTsKCiAgICAgICAgICAgICAgICBpZiAoICRLaV9ub25ibGFuayA+ICRLaSArIDEgKSB7CgogICAgICAgICAgICAgICAgICAgICMgc291cmNlIHdoaXRlc3BhY2UgY291bGQgYmUgYW55dGhpbmcsIGFzc3VtZQogICAgICAgICAgICAgICAgICAgICMgYXQgbGVhc3Qgb25lIHNwYWNlIGJlZm9yZSB0aGUgaGFzaCBvbiBvdXRwdXQKICAgICAgICAgICAgICAgICAgICBpZiAoICRyTEwtPlsgJEtpICsgMSBdLT5bX1RZUEVfXSBlcSAnYicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRwb3MgKz0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7ICRwb3MgKz0gJHJMTC0+WyAkS2kgKyAxIF0tPltfVE9LRU5fTEVOR1RIX10gfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggJHBvcyA+PSAkbWF4aW11bV9saW5lX2xlbmd0aFsgJGxldmVsc190b19nb1skaV9zdGFydF0gXSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvaywgaXQncyBhIG9uZS1saW5lIGJsb2NrCiAgICAgICAgICAgIGNyZWF0ZV9vbmVfbGluZV9ibG9jayggJGlfc3RhcnQsIDIwICk7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgIyBqdXN0IGtlZXAgZ29pbmcgZm9yIG90aGVyIGNoYXJhY3RlcnMKICAgICAgICBlbHNlIHsKICAgICAgICB9CiAgICB9CgogICAgIyBXZSBoYXZlbid0IGhpdCB0aGUgY2xvc2luZyBicmFjZSwgYnV0IHRoZXJlIGlzIHN0aWxsIHNwYWNlLiBTbyB0aGUKICAgICMgcXVlc3Rpb24gaGVyZSBpcywgc2hvdWxkIHdlIGtlZXAgZ29pbmcgdG8gbG9vayBhdCBtb3JlIGxpbmVzIGluIGhvcGVzIG9mCiAgICAjIGZvcm1pbmcgYSBuZXcgb25lLWxpbmUgYmxvY2ssIG9yIHNob3VsZCB3ZSBzdG9wIHJpZ2h0IG5vdy4gVGhlIHByb2JsZW0KICAgICMgd2l0aCBjb250aW51aW5nIGlzIHRoYXQgd2Ugd2lsbCBub3QgYmUgYWJsZSB0byBob25vciBicmVha3MgYmVmb3JlIHRoZQogICAgIyBvcGVuaW5nIGJyYWNlIGlmIHdlIGNvbnRpbnVlLgoKICAgICMgVHlwaWNhbGx5IHdlIHdpbGwgd2FudCB0byBrZWVwIHRyeWluZyB0byBtYWtlIG9uZS1saW5lIGJsb2NrcyBmb3IgdGhpbmdzCiAgICAjIGxpa2Ugc29ydC9tYXAvZ3JlcC9ldmFsLiAgQnV0IGl0IGlzIG5vdCBhbHdheXMgYSBnb29kIGlkZWEgdG8gbWFrZSBhcwogICAgIyBtYW55IG9uZS1saW5lIGJsb2NrcyBhcyBwb3NzaWJsZSwgc28gb3RoZXIgdHlwZXMgYXJlIG5vdCBkb25lLiAgVGhlIHVzZXIKICAgICMgY2FuIGFsd2F5cyB1c2UgLW1hbmdsZS4KCiAgICAjIElmIHdlIHdhbnQgdG8ga2VlcCBnb2luZywgd2Ugd2lsbCBjcmVhdGUgYSBuZXcgb25lLWxpbmUgYmxvY2suCiAgICAjIFRoZSBibG9ja3Mgd2hpY2ggd2UgY2FuIGtlZXAgZ29pbmcgYXJlIGluIGEgaGFzaCwgYnV0IHdlIG5ldmVyIHdhbnQKICAgICMgdG8gY29udGludWUgaWYgd2UgYXJlIGF0IGEgJy1ibGknIGJsb2NrLgogICAgaWYgKCAkd2FudF9vbmVfbGluZV9ibG9ja3skYmxvY2tfdHlwZX0gJiYgISRpc19ibGkgKSB7CiAgICAgICAgY3JlYXRlX29uZV9saW5lX2Jsb2NrKCAkaV9zdGFydCwgMSApOwogICAgfQogICAgcmV0dXJuIDA7Cn0KCnN1YiB1bnN0b3JlX3Rva2VuX3RvX2dvIHsKCiAgICAjIHJlbW92ZSBtb3N0IHJlY2VudCB0b2tlbiBmcm9tIG91dHB1dCBzdHJlYW0KICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICBpZiAoICRtYXhfaW5kZXhfdG9fZ28gPiAwICkgewogICAgICAgICRtYXhfaW5kZXhfdG9fZ28tLTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRtYXhfaW5kZXhfdG9fZ28gPSBVTkRFRklORURfSU5ERVg7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBjb21wYXJlX2luZGVudGF0aW9uX2xldmVscyB7CgogICAgIyBDaGVjayB0byBzZWUgaWYgb3V0cHV0IGxpbmUgdGFiYmluZyBhZ3JlZXMgd2l0aCBpbnB1dCBsaW5lCiAgICAjIHRoaXMgY2FuIGJlIHZlcnkgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgYSBzY3JpcHQgd2hpY2ggaGFzIGFuIGV4dHJhCiAgICAjIG9yIG1pc3NpbmcgYnJhY2UuCgogICAgbXkgKCAkc2VsZiwgJEtfZmlyc3QsICRndWVzc2VkX2luZGVudGF0aW9uX2xldmVsLCAkbGluZV9udW1iZXIgKSA9IEBfOwogICAgcmV0dXJuIHVubGVzcyAoIGRlZmluZWQoJEtfZmlyc3QpICk7CgogICAgbXkgJHJMTCA9ICRzZWxmLT5bX3JMTF9dOwoKICAgIG15ICRzdHJ1Y3R1cmFsX2luZGVudGF0aW9uX2xldmVsID0gJHJMTC0+WyRLX2ZpcnN0XS0+W19MRVZFTF9dOwogICAgbXkgJHJhZGp1c3RlZF9sZXZlbHMgICAgICAgICAgICAgPSAkc2VsZi0+W19yYWRqdXN0ZWRfbGV2ZWxzX107CiAgICBpZiAoIGRlZmluZWQoJHJhZGp1c3RlZF9sZXZlbHMpICYmIEB7JHJhZGp1c3RlZF9sZXZlbHN9ID09IEB7JHJMTH0gKSB7CiAgICAgICAgJHN0cnVjdHVyYWxfaW5kZW50YXRpb25fbGV2ZWwgPSAkcmFkanVzdGVkX2xldmVscy0+WyRLX2ZpcnN0XTsKICAgIH0KCiAgICBteSAkaXNfY2xvc2luZ19ibG9jayA9ICRyTEwtPlskS19maXJzdF0tPltfVFlQRV9dIGVxICd9JwogICAgICAmJiAkckxMLT5bJEtfZmlyc3RdLT5bX0JMT0NLX1RZUEVfXTsKCiAgICBpZiAoICRndWVzc2VkX2luZGVudGF0aW9uX2xldmVsIG5lICRzdHJ1Y3R1cmFsX2luZGVudGF0aW9uX2xldmVsICkgewogICAgICAgICRzZWxmLT5bX2xhc3RfdGFiYmluZ19kaXNhZ3JlZW1lbnRfXSA9ICRsaW5lX251bWJlcjsKCiAgICAgICAgaWYgKCRpc19jbG9zaW5nX2Jsb2NrKSB7CgogICAgICAgICAgICBpZiAoICEkc2VsZi0+W19pbl9icmFjZV90YWJiaW5nX2Rpc2FncmVlbWVudF9dICkgewogICAgICAgICAgICAgICAgJHNlbGYtPltfaW5fYnJhY2VfdGFiYmluZ19kaXNhZ3JlZW1lbnRfXSA9ICRsaW5lX251bWJlcjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICEkc2VsZi0+W19maXJzdF9icmFjZV90YWJiaW5nX2Rpc2FncmVlbWVudF9dICkgewogICAgICAgICAgICAgICAgJHNlbGYtPltfZmlyc3RfYnJhY2VfdGFiYmluZ19kaXNhZ3JlZW1lbnRfXSA9ICRsaW5lX251bWJlcjsKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgICAgIGlmICggISRzZWxmLT5bX2luX3RhYmJpbmdfZGlzYWdyZWVtZW50X10gKSB7CiAgICAgICAgICAgICRzZWxmLT5bX3RhYmJpbmdfZGlzYWdyZWVtZW50X2NvdW50X10rKzsKCiAgICAgICAgICAgIGlmICggJHNlbGYtPltfdGFiYmluZ19kaXNhZ3JlZW1lbnRfY291bnRfXSA8PSBNQVhfTkFHX01FU1NBR0VTICkgewogICAgICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgKIlN0YXJ0IGluZGVudGF0aW9uIGRpc2FncmVlbWVudDogaW5wdXQ9JGd1ZXNzZWRfaW5kZW50YXRpb25fbGV2ZWw7IG91dHB1dD0kc3RydWN0dXJhbF9pbmRlbnRhdGlvbl9sZXZlbFxuIgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkc2VsZi0+W19pbl90YWJiaW5nX2Rpc2FncmVlbWVudF9dICAgID0gJGxpbmVfbnVtYmVyOwogICAgICAgICAgICAkc2VsZi0+W19maXJzdF90YWJiaW5nX2Rpc2FncmVlbWVudF9dID0gJGxpbmVfbnVtYmVyCiAgICAgICAgICAgICAgdW5sZXNzICggJHNlbGYtPltfZmlyc3RfdGFiYmluZ19kaXNhZ3JlZW1lbnRfXSApOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewoKICAgICAgICAkc2VsZi0+W19pbl9icmFjZV90YWJiaW5nX2Rpc2FncmVlbWVudF9dID0gMCBpZiAoJGlzX2Nsb3NpbmdfYmxvY2spOwoKICAgICAgICBteSAkaW5fdGFiYmluZ19kaXNhZ3JlZW1lbnQgPSAkc2VsZi0+W19pbl90YWJiaW5nX2Rpc2FncmVlbWVudF9dOwogICAgICAgIGlmICgkaW5fdGFiYmluZ19kaXNhZ3JlZW1lbnQpIHsKCiAgICAgICAgICAgIGlmICggJHNlbGYtPltfdGFiYmluZ19kaXNhZ3JlZW1lbnRfY291bnRfXSA8PSBNQVhfTkFHX01FU1NBR0VTICkgewogICAgICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgKIkVuZCBpbmRlbnRhdGlvbiBkaXNhZ3JlZW1lbnQgZnJvbSBpbnB1dCBsaW5lICRpbl90YWJiaW5nX2Rpc2FncmVlbWVudFxuIgogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoICRzZWxmLT5bX3RhYmJpbmdfZGlzYWdyZWVtZW50X2NvdW50X10gPT0gTUFYX05BR19NRVNTQUdFUyApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgKICAgICAgICAgICAgICAgICAgICAgICAgIk5vIGZ1cnRoZXIgdGFiYmluZyBkaXNhZ3JlZW1lbnRzIHdpbGwgYmUgbm90ZWRcbiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRzZWxmLT5bX2luX3RhYmJpbmdfZGlzYWdyZWVtZW50X10gPSAwOwoKICAgICAgICB9CiAgICB9CiAgICByZXR1cm47Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIENPREUgU0VDVElPTiA4OiBVdGlsaXRpZXMgZm9yIHNldHRpbmcgYnJlYWtwb2ludHMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgp7ICAgICMjIGJlZ2luIGNsb3N1cmUgc2V0X2ZvcmNlZF9icmVha3BvaW50CgogICAgbXkgJGZvcmNlZF9icmVha3BvaW50X2NvdW50OwogICAgbXkgJGZvcmNlZF9icmVha3BvaW50X3VuZG9fY291bnQ7CiAgICBteSBAZm9yY2VkX2JyZWFrcG9pbnRfdW5kb19zdGFjazsKICAgIG15ICRpbmRleF9tYXhfZm9yY2VkX2JyZWFrOwoKICAgICMgQnJlYWsgYmVmb3JlIG9yIGFmdGVyIGNlcnRhaW4gdG9rZW5zIGJhc2VkIG9uIHVzZXIgc2V0dGluZ3MKICAgIG15ICVicmVha19iZWZvcmVfb3JfYWZ0ZXJfdG9rZW47CgogICAgQkVHSU4gewogICAgICAgIG15IEBxID0gcXcoID0gLiA6ID8gYW5kIG9yIHhvciAmJiB8fCApOwogICAgICAgIHB1c2ggQHEsICcsJzsKICAgICAgICBAYnJlYWtfYmVmb3JlX29yX2FmdGVyX3Rva2Vue0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CiAgICB9CgogICAgc3ViIGluaXRpYWxpemVfZm9yY2VkX2JyZWFrcG9pbnRfdmFycyB7CiAgICAgICAgJGZvcmNlZF9icmVha3BvaW50X2NvdW50ICAgICAgPSAwOwogICAgICAgICRpbmRleF9tYXhfZm9yY2VkX2JyZWFrICAgICAgID0gVU5ERUZJTkVEX0lOREVYOwogICAgICAgICRmb3JjZWRfYnJlYWtwb2ludF91bmRvX2NvdW50ID0gMDsKICAgICAgICBAZm9yY2VkX2JyZWFrcG9pbnRfdW5kb19zdGFjayA9ICgpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgZ2V0X2ZvcmNlZF9icmVha3BvaW50X2NvdW50IHsKICAgICAgICByZXR1cm4gJGZvcmNlZF9icmVha3BvaW50X2NvdW50OwogICAgfQoKICAgIHN1YiBnZXRfZm9yY2VkX2JyZWFrcG9pbnRfdW5kb19jb3VudCB7CiAgICAgICAgcmV0dXJuICRmb3JjZWRfYnJlYWtwb2ludF91bmRvX2NvdW50OwogICAgfQoKICAgIHN1YiBnZXRfaW5kZXhfbWF4X2ZvcmNlZF9icmVhayB7CiAgICAgICAgcmV0dXJuICRpbmRleF9tYXhfZm9yY2VkX2JyZWFrOwogICAgfQoKICAgIHN1YiBzZXRfZmFrZV9icmVha3BvaW50IHsKCiAgICAgICAgIyBKdXN0IGJ1bXAgdXAgdGhlIGJyZWFrcG9pbnQgY291bnQgYXMgYSBzaWduYWwgdGhhdCB0aGVyZSBhcmUgYnJlYWtzLgogICAgICAgICMgVGhpcyBpcyB1c2VmdWwgaWYgd2UgaGF2ZSBicmVha3MgYnV0IG1heSB3YW50IHRvIHBvc3Rwb25lIGRlY2lkaW5nCiAgICAgICAgIyB3aGVyZSB0byBtYWtlIHRoZW0uCiAgICAgICAgJGZvcmNlZF9icmVha3BvaW50X2NvdW50Kys7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHVzZSBjb25zdGFudCBERUJVR19GT1JDRSA9PiAwOwoKICAgIHN1YiBzZXRfZm9yY2VkX2JyZWFrcG9pbnQgewogICAgICAgIG15ICggJHNlbGYsICRpICkgPSBAXzsKCiAgICAgICAgcmV0dXJuIHVubGVzcyBkZWZpbmVkICRpICYmICRpID49IDA7CgogICAgICAgICMgbm8gYnJlYWtzIGJldHdlZW4gd2VsZGVkIHRva2VucwogICAgICAgIHJldHVybiBpZiAoICRzZWxmLT53ZWxkX2xlbl9yaWdodF90b19nbygkaSkgKTsKCiAgICAgICAgbXkgJHRva2VuID0gJHRva2Vuc190b19nb1skaV07CgogICAgICAgICMgRm9yIGNlcnRhaW4gdG9rZW5zLCB1c2UgdXNlciBzZXR0aW5ncyB0byBkZWNpZGUgaWYgd2UgYnJlYWsgYmVmb3JlIG9yCiAgICAgICAgIyBhZnRlciBpdAogICAgICAgICMgICAgcXcoID0gLiA6ID8gYW5kIG9yIHhvciAmJiB8fCApCiAgICAgICAgaWYgKCAkYnJlYWtfYmVmb3JlX29yX2FmdGVyX3Rva2VueyR0b2tlbn0gKSB7CiAgICAgICAgICAgIGlmICggJHdhbnRfYnJlYWtfYmVmb3JleyR0b2tlbn0gJiYgJGkgPj0gMCApIHsgJGktLSB9CiAgICAgICAgfQoKICAgICAgICAjIGJyZWFrcyBhcmUgZm9yY2VkIGJlZm9yZSAnaWYnIGFuZCAndW5sZXNzJwogICAgICAgIGVsc2lmICggJGlzX2lmX3VubGVzc3skdG9rZW59ICkgeyAkaS0tIH0KCiAgICAgICAgaWYgKCAkaSA+PSAwICYmICRpIDw9ICRtYXhfaW5kZXhfdG9fZ28gKSB7CiAgICAgICAgICAgIG15ICRpX25vbmJsYW5rID0gKCAkdHlwZXNfdG9fZ29bJGldIG5lICdiJyApID8gJGkgOiAkaSAtIDE7CgogICAgICAgICAgICBERUJVR19GT1JDRSAmJiBkbyB7CiAgICAgICAgICAgICAgICBteSAoICRhLCAkYiwgJGMgKSA9IGNhbGxlcigpOwogICAgICAgICAgICAgICAgcHJpbnQgU1RET1VUCiJGT1JDRSAkZm9yY2VkX2JyZWFrcG9pbnRfY291bnQgZnJvbSAkYSAkYyB3aXRoIGk9JGlfbm9uYmxhbmsgbWF4PSRtYXhfaW5kZXhfdG9fZ28gdG9rPSR0b2tlbnNfdG9fZ29bJGlfbm9uYmxhbmtdIHR5cGU9JHR5cGVzX3RvX2dvWyRpX25vbmJsYW5rXSBub2JyPSRub2JyZWFrX3RvX2dvWyRpX25vbmJsYW5rXVxuIjsKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAgICAgIyBOT1RFOiBpZiB3ZSBjYWxsIHNldF9jbG9zaW5nX2JyZWFrcG9pbnQgYmVsb3cgaXQgd2lsbCB0aGVuIGNhbGwKICAgICAgICAgICAgIyB0aGlzIHJvdXRpbmcgYmFjay4gU28gdGhlcmUgaXMgdGhlIHBvc3NpYmlsaXR5IG9mIGFuIGluZmluaXRlCiAgICAgICAgICAgICMgbG9vcCBpZiBhIHByb2dyYW1taW5nIGVycm9yIGlzIG1hZGUuIEFzIGEgcHJlY2F1dGlvbiwgSSBoYXZlCiAgICAgICAgICAgICMgYWRkZWQgYSBjaGVjayBvbiB0aGUgZm9yY2VkX2JyZWFrcG9pbnQgZmxhZywgc28gdGhhdCB3ZSB3b24ndAogICAgICAgICAgICAjIGtlZXAgdHJ5aW5nIHRvIHNldCBpdC4gIFRoYXQgd2lsbCBnaXZlIGFkZGl0aW9uYWwgcHJvdGVjdGlvbgogICAgICAgICAgICAjIGFnYWluc3QgYSBsb29wLgogICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgICAgICBpZiAoICAgJGlfbm9uYmxhbmsgPj0gMAogICAgICAgICAgICAgICAgJiYgJG5vYnJlYWtfdG9fZ29bJGlfbm9uYmxhbmtdID09IDAKICAgICAgICAgICAgICAgICYmICEkZm9yY2VkX2JyZWFrcG9pbnRfdG9fZ29bJGlfbm9uYmxhbmtdICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJGZvcmNlZF9icmVha3BvaW50X3RvX2dvWyRpX25vbmJsYW5rXSA9IDE7CgogICAgICAgICAgICAgICAgaWYgKCAkaV9ub25ibGFuayA+ICRpbmRleF9tYXhfZm9yY2VkX2JyZWFrICkgewogICAgICAgICAgICAgICAgICAgICRpbmRleF9tYXhfZm9yY2VkX2JyZWFrID0gJGlfbm9uYmxhbms7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkZm9yY2VkX2JyZWFrcG9pbnRfY291bnQrKzsKICAgICAgICAgICAgICAgICRmb3JjZWRfYnJlYWtwb2ludF91bmRvX3N0YWNrWyAkZm9yY2VkX2JyZWFrcG9pbnRfdW5kb19jb3VudCsrIF0KICAgICAgICAgICAgICAgICAgPSAkaV9ub25ibGFuazsKCiAgICAgICAgICAgICAgICAjIGlmIHdlIGJyZWFrIGF0IGFuIG9wZW5pbmcgY29udGFpbmVyLi5icmVhayBhdCB0aGUgY2xvc2luZwogICAgICAgICAgICAgICAgaWYgKCAkaXNfb3BlbmluZ19zZXF1ZW5jZV90b2tlbnsgJHRva2Vuc190b19nb1skaV9ub25ibGFua10gfSApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJHNlbGYtPnNldF9jbG9zaW5nX2JyZWFrcG9pbnQoJGlfbm9uYmxhbmspOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgY2xlYXJfYnJlYWtwb2ludF91bmRvX3N0YWNrIHsKICAgICAgICBteSAoJHNlbGYpID0gQF87CiAgICAgICAgJGZvcmNlZF9icmVha3BvaW50X3VuZG9fY291bnQgPSAwOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICB1c2UgY29uc3RhbnQgREVCVUdfVU5ET0JQID0+IDA7CgogICAgc3ViIHVuZG9fZm9yY2VkX2JyZWFrcG9pbnRfc3RhY2sgewoKICAgICAgICBteSAoICRzZWxmLCAkaV9zdGFydCApID0gQF87CgogICAgICAgICMgR2l2ZW4gJGlfc3RhcnQsIGEgbm9uLW5lZ2F0aXZlIGluZGV4IHRoZSAndW5kbyBzdGFjaycgb2YgYnJlYWtwb2ludHMsCiAgICAgICAgIyByZW1vdmUgYWxsIGJyZWFrcG9pbnRzIGZyb20gdGhlIHRvcCBvZiB0aGUgJ3VuZG8gc3RhY2snIGRvd24gdG8gYW5kCiAgICAgICAgIyBpbmNsdWRpbmcgaW5kZXggJGlfc3RhcnQuCgogICAgICAgICMgVGhlICd1bmRvIHN0YWNrJyBpcyBhIHN0YWNrIG9mIGFsbCBicmVha3BvaW50cyBtYWRlIGZvciBhIGJhdGNoIG9mCiAgICAgICAgIyBjb2RlLgoKICAgICAgICBpZiAoICRpX3N0YXJ0IDwgMCApIHsKICAgICAgICAgICAgJGlfc3RhcnQgPSAwOwogICAgICAgICAgICBteSAoICRhLCAkYiwgJGMgKSA9IGNhbGxlcigpOwoKICAgICAgICAgICAgIyBCYWQgY2FsbCwgY2FuIG9ubHkgYmUgZHVlIHRvIGEgcmVjZW50IHByb2dyYW1taW5nIGNoYW5nZS4KICAgICAgICAgICAgIyBCZXR0ZXIgc3RvcCBoZXJlLgogICAgICAgICAgICBGYXVsdCgKIlByb2dyYW0gQnVnOiB1bmRvX2ZvcmNlZF9icmVha3BvaW50X3N0YWNrIGZyb20gJGEgJGMgaGFzIGJhZCBpPSRpX3N0YXJ0ICIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHdoaWxlICggJGZvcmNlZF9icmVha3BvaW50X3VuZG9fY291bnQgPiAkaV9zdGFydCApIHsKICAgICAgICAgICAgbXkgJGkgPQogICAgICAgICAgICAgICRmb3JjZWRfYnJlYWtwb2ludF91bmRvX3N0YWNrWyAtLSRmb3JjZWRfYnJlYWtwb2ludF91bmRvX2NvdW50IF07CiAgICAgICAgICAgIGlmICggJGkgPj0gMCAmJiAkaSA8PSAkbWF4X2luZGV4X3RvX2dvICkgewogICAgICAgICAgICAgICAgJGZvcmNlZF9icmVha3BvaW50X3RvX2dvWyRpXSA9IDA7CiAgICAgICAgICAgICAgICAkZm9yY2VkX2JyZWFrcG9pbnRfY291bnQtLTsKCiAgICAgICAgICAgICAgICBERUJVR19VTkRPQlAgJiYgZG8gewogICAgICAgICAgICAgICAgICAgIG15ICggJGEsICRiLCAkYyApID0gY2FsbGVyKCk7CiAgICAgICAgICAgICAgICAgICAgcHJpbnQgU1RET1VUCiJVTkRPQlA6IHVuZG8gZm9yY2VkX2JyZWFrcG9pbnQgaT0kaSAkZm9yY2VkX2JyZWFrcG9pbnRfdW5kb19jb3VudCBmcm9tICRhICRjIG1heD0kbWF4X2luZGV4X3RvX2dvXG4iOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzaG91bGRuJ3QgaGFwcGVuLCBidXQgbm90IGEgY3JpdGljYWwgZXJyb3IKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBERUJVR19VTkRPQlAgJiYgZG8gewogICAgICAgICAgICAgICAgICAgIG15ICggJGEsICRiLCAkYyApID0gY2FsbGVyKCk7CiAgICAgICAgICAgICAgICAgICAgcHJpbnQgU1RET1VUCiJQcm9ncmFtIEJ1ZzogdW5kb19mb3JjZWRfYnJlYWtwb2ludCBmcm9tICRhICRjIGhhcyBpPSRpIGJ1dCBtYXg9JG1heF9pbmRleF90b19nbyI7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KfSAjIyBlbmQgY2xvc3VyZSBzZXRfZm9yY2VkX2JyZWFrcG9pbnQKCnsgICAgIyMgYmVnaW4gY2xvc3VyZSBzZXRfY2xvc2luZ19icmVha3BvaW50CgogICAgbXkgJXBvc3Rwb25lZF9icmVha3BvaW50OwoKICAgIHN1YiBpbml0aWFsaXplX3Bvc3Rwb25lZF9icmVha3BvaW50IHsKICAgICAgICAlcG9zdHBvbmVkX2JyZWFrcG9pbnQgPSAoKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3ViIGhhc19wb3N0cG9uZWRfYnJlYWtwb2ludCB7CiAgICAgICAgbXkgKCRzZXFubykgPSBAXzsKICAgICAgICByZXR1cm4gJHBvc3Rwb25lZF9icmVha3BvaW50eyRzZXFub307CiAgICB9CgogICAgc3ViIHNldF9jbG9zaW5nX2JyZWFrcG9pbnQgewoKICAgICAgICAjIHNldCBhIGJyZWFrcG9pbnQgYXQgYSBtYXRjaGluZyBjbG9zaW5nIHRva2VuCiAgICAgICAgbXkgKCAkc2VsZiwgJGlfYnJlYWsgKSA9IEBfOwoKICAgICAgICBpZiAoICRtYXRlX2luZGV4X3RvX2dvWyRpX2JyZWFrXSA+PSAwICkgewoKICAgICAgICAgICAgIyBDQVVUSU9OOiBpbmZpbml0ZSByZWN1cnNpb24gcG9zc2libGUgaGVyZToKICAgICAgICAgICAgIyAgIHNldF9jbG9zaW5nX2JyZWFrcG9pbnQgY2FsbHMgc2V0X2ZvcmNlZF9icmVha3BvaW50LCBhbmQKICAgICAgICAgICAgIyAgIHNldF9mb3JjZWRfYnJlYWtwb2ludCBjYWxsIHNldF9jbG9zaW5nX2JyZWFrcG9pbnQKICAgICAgICAgICAgIyAgICggdGVzdCBmaWxlcyBhdHRyaWIudCwgQmFzaWNMeXgucG0uaHRtbCkuCiAgICAgICAgICAgICMgRG9uJ3QgcmVkdWNlIHRoZSAnMicgaW4gdGhlIHN0YXRlbWVudCBiZWxvdwogICAgICAgICAgICBpZiAoICRtYXRlX2luZGV4X3RvX2dvWyRpX2JyZWFrXSA+ICRpX2JyZWFrICsgMiApIHsKCiAgICAgICAgICAgICAjIGJyZWFrIGJlZm9yZSB9IF0gYW5kICksIGJ1dCBzdWIgc2V0X2ZvcmNlZF9icmVha3BvaW50IHdpbGwgZGVjaWRlCiAgICAgICAgICAgICAjIHRvIGJyZWFrIGJlZm9yZSBvciBhZnRlciBhID8gYW5kIDoKICAgICAgICAgICAgICAgIG15ICRpbmMgPSAoICR0b2tlbnNfdG9fZ29bJGlfYnJlYWtdIGVxICc/JyApID8gMCA6IDE7CiAgICAgICAgICAgICAgICAkc2VsZi0+c2V0X2ZvcmNlZF9icmVha3BvaW50KAogICAgICAgICAgICAgICAgICAgICRtYXRlX2luZGV4X3RvX2dvWyRpX2JyZWFrXSAtICRpbmMgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJHR5cGVfc2VxdWVuY2UgPSAkdHlwZV9zZXF1ZW5jZV90b19nb1skaV9icmVha107CiAgICAgICAgICAgIGlmICgkdHlwZV9zZXF1ZW5jZSkgewogICAgICAgICAgICAgICAgbXkgJGNsb3NpbmdfdG9rZW4gPSAkbWF0Y2hpbmdfdG9rZW57ICR0b2tlbnNfdG9fZ29bJGlfYnJlYWtdIH07CiAgICAgICAgICAgICAgICAkcG9zdHBvbmVkX2JyZWFrcG9pbnR7JHR5cGVfc2VxdWVuY2V9ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9Cn0gIyMgZW5kIGNsb3N1cmUgc2V0X2Nsb3NpbmdfYnJlYWtwb2ludAoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBDT0RFIFNFQ1RJT04gOTogUHJvY2VzcyBiYXRjaGVzIG9mIGNvZGUKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnsgICAgIyMgYmVnaW4gY2xvc3VyZSBncmluZF9iYXRjaF9vZl9DT0RFCgogICAgIyBUaGUgcm91dGluZXMgaW4gdGhpcyBjbG9zdXJlIGJlZ2luIHRoZSBwcm9jZXNzaW5nIG9mIGEgJ2JhdGNoJyBvZiBjb2RlLgoKICAgICMgQSB2YXJpYWJsZSB0byBrZWVwIHRyYWNrIG9mIGNvbnNlY3V0aXZlIG5vbmJsYW5rIGxpbmVzIHNvIHRoYXQgd2UgY2FuCiAgICAjIGluc2VydCBvY2Nhc2lvbmFsIGJsYW5rcwogICAgbXkgQG5vbmJsYW5rX2xpbmVzX2F0X2RlcHRoOwoKICAgICMgQSB2YXJpYWJsZSB0byByZW1lbWJlciBtYXhpbXVtIHNpemUgb2YgcHJldmlvdXMgYmF0Y2hlczsgdGhpcyBpcyBuZWVkZWQKICAgICMgYnkgdGhlIGxvZ2ljYWwgcGFkZGluZyByb3V0aW5lCiAgICBteSAkcGVha19iYXRjaF9zaXplOwogICAgbXkgJGJhdGNoX2NvdW50OwoKICAgIHN1YiBpbml0aWFsaXplX2dyaW5kX2JhdGNoX29mX0NPREUgewogICAgICAgIEBub25ibGFua19saW5lc19hdF9kZXB0aCA9ICgpOwogICAgICAgICRwZWFrX2JhdGNoX3NpemUgICAgICAgICA9IDA7CiAgICAgICAgJGJhdGNoX2NvdW50ICAgICAgICAgICAgID0gMDsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzdWIgZ3JpbmRfYmF0Y2hfb2ZfQ09ERSByZWNlaXZlcyBzZWN0aW9ucyBvZiBjb2RlIHdoaWNoIGFyZSB0aGUgbG9uZ2VzdAogICAgIyBwb3NzaWJsZSBsaW5lcyB3aXRob3V0IGEgYnJlYWsuICBJbiBvdGhlciB3b3JkcywgaXQgcmVjZWl2ZXMgd2hhdCBpcyBsZWZ0CiAgICAjIGFmdGVyIGFwcGx5aW5nIGFsbCBicmVha3MgZm9yY2VkIGJ5IGJsYW5rIGxpbmVzLCBibG9jayBjb21tZW50cywgc2lkZQogICAgIyBjb21tZW50cywgcG9kIHRleHQsIGFuZCBzdHJ1Y3R1cmFsIGJyYWNlcy4gIEl0cyBqb2IgaXMgdG8gYnJlYWsgdGhpcyBjb2RlCiAgICAjIGRvd24gaW50byBzbWFsbGVyIHBpZWNlcywgaWYgbmVjZXNzYXJ5LCB3aGljaCBmaXQgd2l0aGluIHRoZSBtYXhpbXVtCiAgICAjIGFsbG93ZWQgbGluZSBsZW5ndGguICBUaGVuIGl0IHNlbmRzIHRoZSByZXN1bHRpbmcgbGluZXMgb2YgY29kZSBvbiBkb3duCiAgICAjIHRoZSBwaXBlbGluZSB0byB0aGUgVmVydGljYWxBbGlnbmVyIHBhY2thZ2UsIGJyZWFraW5nIHRoZSBjb2RlIGludG8KICAgICMgY29udGludWF0aW9uIGxpbmVzIGFzIG5lY2Vzc2FyeS4gIFRoZSBiYXRjaCBvZiB0b2tlbnMgYXJlIGluIHRoZSAidG9fZ28iCiAgICAjIGFycmF5cy4gIFRoZSBuYW1lICdncmluZCcgaXMgc2xpZ2h0bHkgc3VnZ2VzdGl2ZSBvZiBhIG1hY2hpbmUgY29udGludWFsbHkKICAgICMgYnJlYWtpbmcgZG93biBsb25nIGxpbmVzIG9mIGNvZGUsIGJ1dCBtYWlubHkgaXQgaXMgdW5pcXVlIGFuZCBlYXN5IHRvCiAgICAjIHJlbWVtYmVyIGFuZCBmaW5kIHdpdGggYW4gZWRpdG9yIHNlYXJjaC4KCiAgICAjIFRoZSB0d28gcm91dGluZXMgJ3Byb2Nlc3NfbGluZV9vZl9DT0RFJyBhbmQgJ2dyaW5kX2JhdGNoX29mX0NPREUnIHdvcmsKICAgICMgdG9nZXRoZXIgaW4gdGhlIGZvbGxvd2luZyB3YXk6CgogICAgIyAtICdwcm9jZXNzX2xpbmVfb2ZfQ09ERScgcmVjZWl2ZXMgdGhlIG9yaWdpbmFsIElOUFVUIGxpbmVzIG9uZS1ieS1vbmUgYW5kCiAgICAjIGNvbWJpbmVzIHRoZW0gaW50byB0aGUgbGFyZ2VzdCBzZXF1ZW5jZXMgb2YgdG9rZW5zIHdoaWNoIG1pZ2h0IGZvcm0gYSBuZXcKICAgICMgbGluZS4KICAgICMgLSAnZ3JpbmRfYmF0Y2hfb2ZfQ09ERScgZGV0ZXJtaW5lcyB3aGljaCB0b2tlbnMgd2lsbCBmb3JtIHRoZSBPVVRQVVQKICAgICMgbGluZXMuCgogICAgIyBTbyBzdWIgJ3Byb2Nlc3NfbGluZV9vZl9DT0RFJyBidWlsZHMgdXAgdGhlIGxvbmdlc3QgcG9zc2libGUgY29udGlub3V1cwogICAgIyBzZXF1ZW5jZXMgb2YgdG9rZW5zLCByZWdhcmRsZXNzIG9mIGxpbmUgbGVuZ3RoLCBhbmQgdGhlbgogICAgIyBncmluZF9iYXRjaF9vZl9DT0RFIGJyZWFrcyB0aGVzZSBzZXF1ZW5jZXMgYmFjayBkb3duIGludG8gdGhlIG5ldyBvdXRwdXQKICAgICMgbGluZXMuCgogICAgIyBTdWIgJ2dyaW5kX2JhdGNoX29mX0NPREUnIHNoaXBzIGl0cyBvdXRwdXQgbGluZXMgdG8gdGhlIHZlcnRpY2FsIGFsaWduZXIuCgogICAgdXNlIGNvbnN0YW50IERFQlVHX0dSSU5EID0+IDA7CgogICAgc3ViIGdyaW5kX2JhdGNoX29mX0NPREUgewoKICAgICAgICBteSAoJHNlbGYpID0gQF87CiAgICAgICAgbXkgJGZpbGVfd3JpdGVyX29iamVjdCA9ICRzZWxmLT5bX2ZpbGVfd3JpdGVyX29iamVjdF9dOwoKICAgICAgICBteSAkdGhpc19iYXRjaCA9ICRzZWxmLT5bX3RoaXNfYmF0Y2hfXTsKICAgICAgICAkYmF0Y2hfY291bnQrKzsKCiAgICAgICAgbXkgJHN0YXJ0aW5nX2luX3F1b3RlICAgICAgICA9ICR0aGlzX2JhdGNoLT5bX3N0YXJ0aW5nX2luX3F1b3RlX107CiAgICAgICAgbXkgJGVuZGluZ19pbl9xdW90ZSAgICAgICAgICA9ICR0aGlzX2JhdGNoLT5bX2VuZGluZ19pbl9xdW90ZV9dOwogICAgICAgIG15ICRpc19zdGF0aWNfYmxvY2tfY29tbWVudCAgPSAkdGhpc19iYXRjaC0+W19pc19zdGF0aWNfYmxvY2tfY29tbWVudF9dOwogICAgICAgIG15ICRyS190b19nbyAgICAgICAgICAgICAgICAgPSAkdGhpc19iYXRjaC0+W19yS190b19nb19dOwogICAgICAgIG15ICRyaXNfc2Vxbm9fY29udHJvbGxpbmdfY2kgPSAkc2VsZi0+W19yaXNfc2Vxbm9fY29udHJvbGxpbmdfY2lfXTsKCiAgICAgICAgbXkgJHJMTCA9ICRzZWxmLT5bX3JMTF9dOwoKICAgICAgICAjIFRoaXMgcm91dGluZSBpcyBvbmx5IGNhbGxlZCBmcm9tIHN1YiBmbHVzaF9iYXRjaF9vZl9jb2RlLCBzbyB0aGF0CiAgICAgICAgIyByb3V0aW5lIGlzIGEgYmV0dGVyIHNwb3QgZm9yIGRlYnVnZ2luZy4KICAgICAgICBERUJVR19HUklORCAmJiBkbyB7CiAgICAgICAgICAgIG15ICR0b2tlbiA9IG15ICR0eXBlID0gIiI7CiAgICAgICAgICAgIGlmICggJG1heF9pbmRleF90b19nbyA+PSAwICkgewogICAgICAgICAgICAgICAgJHRva2VuID0gJHRva2Vuc190b19nb1skbWF4X2luZGV4X3RvX2dvXTsKICAgICAgICAgICAgICAgICR0eXBlICA9ICR0eXBlc190b19nb1skbWF4X2luZGV4X3RvX2dvXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBteSAkb3V0cHV0X3N0ciA9IGpvaW4gIiIsIEB0b2tlbnNfdG9fZ29bIDAgLi4gJG1heF9pbmRleF90b19nbyBdOwogICAgICAgICAgICBwcmludCBTVERFUlIgPDxFT007CmdyaW5kIGdvdCBiYXRjaCBudW1iZXIgJGJhdGNoX2NvdW50IHdpdGggJG1heF9pbmRleF90b19nbyB0b2tlbnMsIGxhc3QgdHlwZSAnJHR5cGUnIHRvaz0nJHRva2VuJywgdGV4dDoKJG91dHB1dF9zdHIKRU9NCiAgICAgICAgfTsKCiAgICAgICAgIyBTYWZldHkgY2hlY2sgLSBzaG91bGRuJ3QgaGFwcGVuLiBUaGUgY2FsbGluZyByb3V0aW5lIG11c3Qgbm90IGNhbGwKICAgICAgICAjIGhlcmUgdW5sZXNzIHRoZXJlIGFyZSB0b2tlbnMgaW4gdGhlIGJhdGNoIHRvIGJlIHByb2Nlc3NlZC4gIFRoaXMKICAgICAgICAjIGZhdWx0IGNhbiBvbmx5IGJlIHRyaWdnZXJlZCBieSBhIHJlY2VudCBwcm9ncmFtbWluZyBjaGFuZ2UuCiAgICAgICAgaWYgKCAkbWF4X2luZGV4X3RvX2dvIDwgMCApIHsKICAgICAgICAgICAgRmF1bHQoCiJzdWIgZ3JpbmQgaW5jb3JyZWN0bHkgY2FsbGVkIHdpdGggbWF4X2luZGV4X3RvX2dvPSRtYXhfaW5kZXhfdG9fZ28iCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIEluaXRpYWxpemUgc29tZSBiYXRjaCB2YXJpYWJsZXMKICAgICAgICBteSAkY29tbWFfY291bnRfaW5fYmF0Y2ggPSAwOwogICAgICAgIG15ICRpbGFzdF9ub25ibGFuayAgICAgICA9IC0xOwogICAgICAgIG15IEBjb2xvbl9saXN0OwogICAgICAgIG15IEBpeF9zZXFub19jb250cm9sbGluZ19jaTsKICAgICAgICBmb3IgKCBteSAkaSA9IDAgOyAkaSA8PSAkbWF4X2luZGV4X3RvX2dvIDsgJGkrKyApIHsKICAgICAgICAgICAgJGJvbmRfc3RyZW5ndGhfdG9fZ29bJGldID0gMDsKICAgICAgICAgICAgJGlwcmV2X3RvX2dvWyRpXSAgICAgICAgID0gJGlsYXN0X25vbmJsYW5rOwogICAgICAgICAgICAkaW5leHRfdG9fZ29bJGldICAgICAgICAgPSAkaSArIDE7CgogICAgICAgICAgICBteSAkdHlwZSA9ICR0eXBlc190b19nb1skaV07CiAgICAgICAgICAgIGlmICggJHR5cGUgbmUgJ2InICkgewogICAgICAgICAgICAgICAgaWYgKCAkaWxhc3Rfbm9uYmxhbmsgPj0gMCApIHsKICAgICAgICAgICAgICAgICAgICAkaW5leHRfdG9fZ29bJGlsYXN0X25vbmJsYW5rXSA9ICRpOwoKICAgICAgICAgICAgICAgICAgICAjIGp1c3QgaW4gY2FzZSB0aGVyZSBhcmUgdHdvIGJsYW5rcyBpbiBhIHJvdyAoc2hvdWxkbid0CiAgICAgICAgICAgICAgICAgICAgIyBoYXBwZW4pCiAgICAgICAgICAgICAgICAgICAgaWYgKCArKyRpbGFzdF9ub25ibGFuayA8ICRpICkgewogICAgICAgICAgICAgICAgICAgICAgICAkaW5leHRfdG9fZ29bJGlsYXN0X25vbmJsYW5rXSA9ICRpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRpbGFzdF9ub25ibGFuayA9ICRpOwoKICAgICAgICAgICAgICAgICMgVGhpcyBpcyBhIGdvb2Qgc3BvdCB0byBlZmZpY2llbnRseSBjb2xsZWN0IGluZm9ybWF0aW9uIG5lZWRlZAogICAgICAgICAgICAgICAgIyBmb3IgYnJlYWtpbmcgbGluZXMuLi4KCiAgICAgICAgICAgICAgICBpZiAoICR0eXBlIGVxICcsJyApIHsgJGNvbW1hX2NvdW50X2luX2JhdGNoKys7IH0KCiAgICAgICAgICAgICAgICAjIGdhdGhlciBpbmZvIG5lZWRlZCBieSBzdWIgc2V0X2NvbnRpbnVhdGlvbl9icmVha3MKICAgICAgICAgICAgICAgIG15ICRzZXFubyA9ICR0eXBlX3NlcXVlbmNlX3RvX2dvWyRpXTsKICAgICAgICAgICAgICAgIGlmICgkc2Vxbm8pIHsKCiAgICAgICAgICAgICAgICAgICAgIyByZW1lbWJlciBpbmRleGVzIG9mIGFueSB0b2tlbnMgY29udHJvbGxpbmcgeGNpCiAgICAgICAgICAgICAgICAgICAgIyBpbiB0aGlzIGJhdGNoLiBUaGlzIGxpc3QgaXMgbmVlZGVkIGJ5IHN1YiB1bmRvX2NpLgogICAgICAgICAgICAgICAgICAgIGlmICggJHJpc19zZXFub19jb250cm9sbGluZ19jaS0+eyRzZXFub30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQGl4X3NlcW5vX2NvbnRyb2xsaW5nX2NpLCAkaTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJz8nICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBjb2xvbl9saXN0LCAkdHlwZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkdHlwZSBlcSAnOicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQGNvbG9uX2xpc3QsICR0eXBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJGNvbW1hX2Fycm93X2NvdW50X2NvbnRhaW5lZCA9CiAgICAgICAgICAkc2VsZi0+bWF0Y2hfb3BlbmluZ19hbmRfY2xvc2luZ190b2tlbnMoKTsKCiAgICAgICAgIyB0ZWxsIHRoZSAtbHAgb3B0aW9uIHdlIGFyZSBvdXRwdXR0aW5nIGEgYmF0Y2ggc28gaXQgY2FuIGNsb3NlCiAgICAgICAgIyBhbnkgdW5maW5pc2hlZCBpdGVtcyBpbiBpdHMgc3RhY2sKICAgICAgICBmaW5pc2hfbHBfYmF0Y2goKTsKCiAgICAgICAgIyBJZiB0aGlzIGxpbmUgZW5kcyBpbiBhIGNvZGUgYmxvY2sgYnJhY2UsIHNldCBicmVha3MgYXQgYW55CiAgICAgICAgIyBwcmV2aW91cyBjbG9zaW5nIGNvZGUgYmxvY2sgYnJhY2VzIHRvIGJyZWFrdXAgYSBjaGFpbiBvZiBjb2RlCiAgICAgICAgIyBibG9ja3Mgb24gb25lIGxpbmUuICBUaGlzIGlzIHZlcnkgcmFyZSBidXQgY2FuIGhhcHBlbiBmb3IKICAgICAgICAjIHVzZXItZGVmaW5lZCBzdWJzLiAgRm9yIGV4YW1wbGUgd2UgbWlnaHQgYmUgbG9va2luZyBhdCB0aGlzOgogICAgICAgICMgIEJPT0wgeyAkc2VydmVyX2RhdGF7dXB0aW1lfSA+IDA7IH0gTlVNIHsgJHNlcnZlcl9kYXRhe2xvYWR9OyB9IFNUUiB7CiAgICAgICAgbXkgJHNhd19nb29kX2JyZWFrID0gMDsgICAgIyBmbGFnIHRvIGZvcmNlIGJyZWFrcyBldmVuIGlmIHNob3J0IGxpbmUKICAgICAgICBpZiAoCgogICAgICAgICAgICAjIGxvb2tpbmcgZm9yIG9wZW5pbmcgb3IgY2xvc2luZyBibG9jayBicmFjZQogICAgICAgICAgICAkYmxvY2tfdHlwZV90b19nb1skbWF4X2luZGV4X3RvX2dvXQoKICAgICAgICAgICAgIyBuZXZlciBhbnkgZ29vZCBicmVha3MgaWYganVzdCBvbmUgdG9rZW4KICAgICAgICAgICAgJiYgJG1heF9pbmRleF90b19nbyA+IDAKCiAgICAgICAgICAgICMgYnV0IG5vdCBvbmUgb2YgdGhlc2Ugd2hpY2ggYXJlIG5ldmVyIGR1cGxpY2F0ZWQgb24gYSBsaW5lOgogICAgICAgICAgICAjIHVudGlsfHdoaWxlfGZvcnxpZnxlbHNpZnxlbHNlCiAgICAgICAgICAgICYmICEkaXNfYmxvY2tfd2l0aG91dF9zZW1pY29sb257ICRibG9ja190eXBlX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dCiAgICAgICAgICAgIH0KICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRsZXYgPSAkbmVzdGluZ19kZXB0aF90b19nb1skbWF4X2luZGV4X3RvX2dvXTsKCiAgICAgICAgICAgICMgV2FsayBiYWNrd2FyZHMgZnJvbSB0aGUgZW5kIGFuZAogICAgICAgICAgICAjIHNldCBicmVhayBhdCBhbnkgY2xvc2luZyBibG9jayBicmFjZXMgYXQgdGhlIHNhbWUgbGV2ZWwuCiAgICAgICAgICAgICMgQnV0IHF1aXQgaWYgd2UgYXJlIG5vdCBpbiBhIGNoYWluIG9mIGJsb2Nrcy4KICAgICAgICAgICAgZm9yICggbXkgJGkgPSAkbWF4X2luZGV4X3RvX2dvIC0gMSA7ICRpID49IDAgOyAkaS0tICkgewogICAgICAgICAgICAgICAgbGFzdCBpZiAoICRsZXZlbHNfdG9fZ29bJGldIDwgJGxldiApOyAgICMgc3RvcCBhdCBhIGxvd2VyIGxldmVsCiAgICAgICAgICAgICAgICBuZXh0IGlmICggJGxldmVsc190b19nb1skaV0gPiAkbGV2ICk7ICAgIyBza2lwIHBhc3QgaGlnaGVyIGxldmVsCgogICAgICAgICAgICAgICAgaWYgKCAkYmxvY2tfdHlwZV90b19nb1skaV0gKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkdG9rZW5zX3RvX2dvWyRpXSBlcSAnfScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5zZXRfZm9yY2VkX2JyZWFrcG9pbnQoJGkpOwogICAgICAgICAgICAgICAgICAgICAgICAkc2F3X2dvb2RfYnJlYWsgPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHF1aXQgaWYgd2Ugc2VlIGFueXRoaW5nIGJlc2lkZXMgd29yZHMsIGZ1bmN0aW9uLCBibGFua3MKICAgICAgICAgICAgICAgICMgYXQgdGhpcyBsZXZlbAogICAgICAgICAgICAgICAgZWxzaWYgKCAkdHlwZXNfdG9fZ29bJGldICF+IC9eW1woXClHd2liXSQvICkgeyBsYXN0IH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJGltaW4gPSAwOwogICAgICAgIG15ICRpbWF4ID0gJG1heF9pbmRleF90b19nbzsKCiAgICAgICAgIyB0cmltIGFueSBibGFuayB0b2tlbnMKICAgICAgICBpZiAoICR0eXBlc190b19nb1skaW1pbl0gZXEgJ2InICkgeyAkaW1pbisrIH0KICAgICAgICBpZiAoICR0eXBlc190b19nb1skaW1heF0gZXEgJ2InICkgeyAkaW1heC0tIH0KCiAgICAgICAgIyBhbnl0aGluZyBsZWZ0IHRvIHdyaXRlPwogICAgICAgIGlmICggJGltaW4gPD0gJGltYXggKSB7CgogICAgICAgICAgICBteSAkbGFzdF9saW5lX2xlYWRpbmdfdHlwZSAgPSAkc2VsZi0+W19sYXN0X2xpbmVfbGVhZGluZ190eXBlX107CiAgICAgICAgICAgIG15ICRsYXN0X2xpbmVfbGVhZGluZ19sZXZlbCA9ICRzZWxmLT5bX2xhc3RfbGluZV9sZWFkaW5nX2xldmVsX107CiAgICAgICAgICAgIG15ICRsYXN0X2xhc3RfbGluZV9sZWFkaW5nX2xldmVsID0KICAgICAgICAgICAgICAkc2VsZi0+W19sYXN0X2xhc3RfbGluZV9sZWFkaW5nX2xldmVsX107CgogICAgICAgICAgICAjIGFkZCBhIGJsYW5rIGxpbmUgYmVmb3JlIGNlcnRhaW4ga2V5IHR5cGVzIGJ1dCBub3QgYWZ0ZXIgYSBjb21tZW50CiAgICAgICAgICAgIGlmICggJGxhc3RfbGluZV9sZWFkaW5nX3R5cGUgbmUgJyMnICkgewogICAgICAgICAgICAgICAgbXkgJHdhbnRfYmxhbmsgICAgPSAwOwogICAgICAgICAgICAgICAgbXkgJGxlYWRpbmdfdG9rZW4gPSAkdG9rZW5zX3RvX2dvWyRpbWluXTsKICAgICAgICAgICAgICAgIG15ICRsZWFkaW5nX3R5cGUgID0gJHR5cGVzX3RvX2dvWyRpbWluXTsKCiAgICAgICAgICAgICAgICAjIGJsYW5rIGxpbmVzIGJlZm9yZSBzdWJzIGV4Y2VwdCBkZWNsYXJhdGlvbnMgYW5kIG9uZS1saW5lcnMKICAgICAgICAgICAgICAgIGlmICggJGxlYWRpbmdfdHlwZSBlcSAnaScgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkbGVhZGluZ190b2tlbiA9fiAvJFNVQl9QQVRURVJOLyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHdhbnRfYmxhbmsgPSAkck9wdHMtPnsnYmxhbmstbGluZXMtYmVmb3JlLXN1YnMnfQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdGVybWluYWxfdHlwZV9pKCAkaW1pbiwgJGltYXggKSAhfiAvXltcO1x9XSQvICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGJyZWFrIGJlZm9yZSBhbGwgcGFja2FnZSBkZWNsYXJhdGlvbnMKICAgICAgICAgICAgICAgICAgICBlbHNpZiAoIHN1YnN0ciggJGxlYWRpbmdfdG9rZW4sIDAsIDggKSBlcSAncGFja2FnZSAnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkd2FudF9ibGFuayA9ICRyT3B0cy0+eydibGFuay1saW5lcy1iZWZvcmUtcGFja2FnZXMnfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBicmVhayBiZWZvcmUgY2VydGFpbiBrZXkgYmxvY2tzIGV4Y2VwdCBvbmUtbGluZXJzCiAgICAgICAgICAgICAgICBpZiAoICRsZWFkaW5nX3R5cGUgZXEgJ2snICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJGxlYWRpbmdfdG9rZW4gZXEgJ0JFR0lOJyB8fCAkbGVhZGluZ190b2tlbiBlcSAnRU5EJyApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkd2FudF9ibGFuayA9ICRyT3B0cy0+eydibGFuay1saW5lcy1iZWZvcmUtc3Vicyd9CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0ZXJtaW5hbF90eXBlX2koICRpbWluLCAkaW1heCApIG5lICd9JyApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBCcmVhayBiZWZvcmUgY2VydGFpbiBibG9jayB0eXBlcyBpZiB3ZSBoYXZlbid0IGhhZCBhCiAgICAgICAgICAgICAgICAgICAgIyBicmVhayBhdCB0aGlzIGxldmVsIGZvciBhIHdoaWxlLiAgVGhpcyBpcyB0aGUKICAgICAgICAgICAgICAgICAgICAjIGRpZmZpY3VsdCBkZWNpc2lvbi4uCiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCRsYXN0X2xpbmVfbGVhZGluZ190eXBlIG5lICdiJwogICAgICAgICAgICAgICAgICAgICAgICAmJiAkbGVhZGluZ190b2tlbiA9fgogICAgICAgICAgICAgICAgICAgICAgICAvXih1bmxlc3N8aWZ8d2hpbGV8dW50aWx8Zm9yfGZvcmVhY2gpJC8gKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGxjID0KICAgICAgICAgICAgICAgICAgICAgICAgICAkbm9uYmxhbmtfbGluZXNfYXRfZGVwdGhbJGxhc3RfbGluZV9sZWFkaW5nX2xldmVsXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCgkbGMpICkgeyAkbGMgPSAwIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIyBwYXRjaCBmb3IgUlQgIzEyODIxNjogbm8gYmxhbmsgbGluZSBpbnNlcnRlZCBhdCBhIGxldmVsCiAgICAgICAgICAgICAgICAgICAgICAgIyBjaGFuZ2UKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkbGV2ZWxzX3RvX2dvWyRpbWluXSAhPSAkbGFzdF9saW5lX2xlYWRpbmdfbGV2ZWwgKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGMgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkd2FudF9ibGFuayA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJPcHRzLT57J2JsYW5rcy1iZWZvcmUtYmxvY2tzJ30KICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkbGMgPj0gJHJPcHRzLT57J2xvbmctYmxvY2stbGluZS1jb3VudCd9CiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHNlbGYtPmNvbnNlY3V0aXZlX25vbmJsYW5rX2xpbmVzKCkgPj0KICAgICAgICAgICAgICAgICAgICAgICAgICAkck9wdHMtPnsnbG9uZy1ibG9jay1saW5lLWNvdW50J30KICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0ZXJtaW5hbF90eXBlX2koICRpbWluLCAkaW1heCApIG5lICd9JzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBDaGVjayBmb3IgYmxhbmsgbGluZXMgd2FudGVkIGJlZm9yZSBhIGNsb3NpbmcgYnJhY2UKICAgICAgICAgICAgICAgIGlmICggJGxlYWRpbmdfdG9rZW4gZXEgJ30nICkgewogICAgICAgICAgICAgICAgICAgIGlmICggICAkck9wdHMtPnsnYmxhbmstbGluZXMtYmVmb3JlLWNsb3NpbmctYmxvY2snfQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkYmxvY2tfdHlwZV90b19nb1skaW1pbl0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGJsb2NrX3R5cGVfdG9fZ29bJGltaW5dID1+CiAgICAgICAgICAgICAgICAgICAgICAgIC8kYmxhbmtfbGluZXNfYmVmb3JlX2Nsb3NpbmdfYmxvY2tfcGF0dGVybi8gKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJG5ibGFua3MgPQogICAgICAgICAgICAgICAgICAgICAgICAgICRyT3B0cy0+eydibGFuay1saW5lcy1iZWZvcmUtY2xvc2luZy1ibG9jayd9OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRuYmxhbmtzID4gJHdhbnRfYmxhbmsgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2FudF9ibGFuayA9ICRuYmxhbmtzOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkd2FudF9ibGFuaykgewoKICAgICAgICAgICAgICAgICAgICMgZnV0dXJlOiBzZW5kIGJsYW5rIGxpbmUgZG93biBub3JtYWwgcGF0aCB0byBWZXJ0aWNhbEFsaWduZXIKICAgICAgICAgICAgICAgICAgICAkc2VsZi0+Zmx1c2hfdmVydGljYWxfYWxpZ25lcigpOwogICAgICAgICAgICAgICAgICAgICRmaWxlX3dyaXRlcl9vYmplY3QtPnJlcXVpcmVfYmxhbmtfY29kZV9saW5lcygkd2FudF9ibGFuayk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdXBkYXRlIGJsYW5rIGxpbmUgdmFyaWFibGVzIGFuZCBjb3VudCBudW1iZXIgb2YgY29uc2VjdXRpdmUKICAgICAgICAgICAgIyBub24tYmxhbmssIG5vbi1jb21tZW50IGxpbmVzIGF0IHRoaXMgbGV2ZWwKICAgICAgICAgICAgJGxhc3RfbGFzdF9saW5lX2xlYWRpbmdfbGV2ZWwgPSAkbGFzdF9saW5lX2xlYWRpbmdfbGV2ZWw7CiAgICAgICAgICAgICRsYXN0X2xpbmVfbGVhZGluZ19sZXZlbCAgICAgID0gJGxldmVsc190b19nb1skaW1pbl07CiAgICAgICAgICAgIGlmICggJGxhc3RfbGluZV9sZWFkaW5nX2xldmVsIDwgMCApIHsgJGxhc3RfbGluZV9sZWFkaW5nX2xldmVsID0gMCB9CiAgICAgICAgICAgICRsYXN0X2xpbmVfbGVhZGluZ190eXBlID0gJHR5cGVzX3RvX2dvWyRpbWluXTsKICAgICAgICAgICAgaWYgKCAgICRsYXN0X2xpbmVfbGVhZGluZ19sZXZlbCA9PSAkbGFzdF9sYXN0X2xpbmVfbGVhZGluZ19sZXZlbAogICAgICAgICAgICAgICAgJiYgJGxhc3RfbGluZV9sZWFkaW5nX3R5cGUgbmUgJ2InCiAgICAgICAgICAgICAgICAmJiAkbGFzdF9saW5lX2xlYWRpbmdfdHlwZSBuZSAnIycKICAgICAgICAgICAgICAgICYmIGRlZmluZWQoICRub25ibGFua19saW5lc19hdF9kZXB0aFskbGFzdF9saW5lX2xlYWRpbmdfbGV2ZWxdICkKICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRub25ibGFua19saW5lc19hdF9kZXB0aFskbGFzdF9saW5lX2xlYWRpbmdfbGV2ZWxdKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkbm9uYmxhbmtfbGluZXNfYXRfZGVwdGhbJGxhc3RfbGluZV9sZWFkaW5nX2xldmVsXSA9IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRzZWxmLT5bX2xhc3RfbGluZV9sZWFkaW5nX3R5cGVfXSAgPSAkbGFzdF9saW5lX2xlYWRpbmdfdHlwZTsKICAgICAgICAgICAgJHNlbGYtPltfbGFzdF9saW5lX2xlYWRpbmdfbGV2ZWxfXSA9ICRsYXN0X2xpbmVfbGVhZGluZ19sZXZlbDsKICAgICAgICAgICAgJHNlbGYtPltfbGFzdF9sYXN0X2xpbmVfbGVhZGluZ19sZXZlbF9dID0KICAgICAgICAgICAgICAkbGFzdF9sYXN0X2xpbmVfbGVhZGluZ19sZXZlbDsKCiAgICAgICAgICAgICMgRmxhZyB0byByZW1lbWJlciBpZiB3ZSBjYWxsZWQgc3ViICdwYWRfYXJyYXlfdG9fZ28nLgogICAgICAgICAgICAjIFNvbWUgcm91dGluZXMgKHNjYW5fbGlzdCgpLCBzZXRfY29udGludWF0aW9uX2JyZWFrcygpICkgbmVlZCBzb21lCiAgICAgICAgICAgICMgZXh0cmEgdG9rZW5zIGFkZGVkIGF0IHRoZSBlbmQgb2YgdGhlIGJhdGNoLiAgTW9zdCBiYXRjaGVzIGRvIG5vdAogICAgICAgICAgICAjIHVzZSB0aGVzZSByb3V0aW5lcywgc28gd2Ugd2lsbCBhdm9pZCBjYWxsaW5nICdwYWRfYXJyYXlfdG9fZ28nCiAgICAgICAgICAgICMgdW5sZXNzIGl0IGlzIG5lZWRlZC4KICAgICAgICAgICAgbXkgJGNhbGxlZF9wYWRfYXJyYXlfdG9fZ287CgogICAgICAgICAgICAjIHNldCBhbGwgZm9yY2VkIGJyZWFrcG9pbnRzIGZvciBnb29kIGxpc3QgZm9ybWF0dGluZwogICAgICAgICAgICBteSAkaXNfbG9uZ19saW5lID0gJG1heF9pbmRleF90b19nbyA+IDAKICAgICAgICAgICAgICAmJiAkc2VsZi0+ZXhjZXNzX2xpbmVfbGVuZ3RoKCAkaW1pbiwgJG1heF9pbmRleF90b19nbyApID4gMDsKCiAgICAgICAgICAgIG15ICRvbGRfbGluZV9jb3VudF9pbl9iYXRjaCA9CiAgICAgICAgICAgICAgJG1heF9pbmRleF90b19nbyA9PSAwCiAgICAgICAgICAgICAgPyAxCiAgICAgICAgICAgICAgOiAkc2VsZi0+Z2V0X29sZF9saW5lX2NvdW50KCAkS190b19nb1swXSwKICAgICAgICAgICAgICAgICRLX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dICk7CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAkaXNfbG9uZ19saW5lCiAgICAgICAgICAgICAgICB8fCAkb2xkX2xpbmVfY291bnRfaW5fYmF0Y2ggPiAxCgogICAgICAgICAgICAgICAgIyBtdXN0IGFsd2F5cyBjYWxsIHNjYW5fbGlzdCgpIHdpdGggdW5iYWxhbmNlZCBiYXRjaGVzIGJlY2F1c2UKICAgICAgICAgICAgICAgICMgaXQgaXMgbWFpbnRhaW5pbmcgc29tZSBzdGFja3MKICAgICAgICAgICAgICAgIHx8IGlzX3VuYmFsYW5jZWRfYmF0Y2goKQoKICAgICAgICAgICAgICAgICMgY2FsbCBzY2FuX2xpc3QgaWYgd2UgbWlnaHQgd2FudCB0byBicmVhayBhdCBjb21tYXMKICAgICAgICAgICAgICAgIHx8ICgKICAgICAgICAgICAgICAgICAgICAkY29tbWFfY291bnRfaW5fYmF0Y2gKICAgICAgICAgICAgICAgICAgICAmJiAoICAgJHJPcHRzX21heGltdW1fZmllbGRzX3Blcl90YWJsZSA+IDAKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHJPcHRzX2NvbW1hX2Fycm93X2JyZWFrcG9pbnRzID09IDAgKQogICAgICAgICAgICAgICAgKQoKICAgICAgICAgICAgICAgICMgY2FsbCBzY2FuX2xpc3QgaWYgdXNlciBtYXkgd2FudCB0byBicmVhayBvcGVuIHNvbWUgb25lLWxpbmUKICAgICAgICAgICAgICAgICMgaGFzaCByZWZlcmVuY2VzCiAgICAgICAgICAgICAgICB8fCAoICAgJGNvbW1hX2Fycm93X2NvdW50X2NvbnRhaW5lZAogICAgICAgICAgICAgICAgICAgICYmICRyT3B0c19jb21tYV9hcnJvd19icmVha3BvaW50cyAhPSAzICkKICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICMgYWRkIGEgY291cGxlIG9mIGV4dHJhIHRlcm1pbmFsIGJsYW5rIHRva2VucwogICAgICAgICAgICAgICAgJHNlbGYtPnBhZF9hcnJheV90b19nbygpOwogICAgICAgICAgICAgICAgJGNhbGxlZF9wYWRfYXJyYXlfdG9fZ28gPSAxOwoKICAgICAgICAgICAgICAgICMjIFRoaXMgY2F1c2VkIHByb2JsZW1zIGluIG9uZSB2ZXJzaW9uIG9mIHBlcmwgZm9yIHVua25vd24gcmVhc29uczoKICAgICAgICAgICAgICAgICMjICRzYXdfZ29vZF9icmVhayB8fD0gc2Nhbl9saXN0KCk7CiAgICAgICAgICAgICAgICBteSAkc2diID0gJHNlbGYtPnNjYW5fbGlzdCgkaXNfbG9uZ19saW5lKTsKICAgICAgICAgICAgICAgICRzYXdfZ29vZF9icmVhayB8fD0gJHNnYjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBsZXQgJHJpX2ZpcnN0IGFuZCAkcmlfbGFzdCBiZSByZWZlcmVuY2VzIHRvIGxpc3RzIG9mCiAgICAgICAgICAgICMgZmlyc3QgYW5kIGxhc3QgdG9rZW5zIG9mIGxpbmUgZnJhZ21lbnRzIHRvIG91dHB1dC4uCiAgICAgICAgICAgIG15ICggJHJpX2ZpcnN0LCAkcmlfbGFzdCApOwoKICAgICAgICAgICAgIyB3cml0ZSBhIHNpbmdsZSBsaW5lIGlmLi4KICAgICAgICAgICAgaWYgKAoKICAgICAgICAgICAgICAgICMgd2UgYXJlbid0IGFsbG93ZWQgdG8gYWRkIGFueSBuZXdsaW5lcwogICAgICAgICAgICAgICAgISRyT3B0c19hZGRfbmV3bGluZXMKCiAgICAgICAgICAgICAgICAjIG9yLAogICAgICAgICAgICAgICAgfHwgKAoKICAgICAgICAgICAgICAgICAgICAjIHRoaXMgbGluZSBpcyAnc2hvcnQnCiAgICAgICAgICAgICAgICAgICAgISRpc19sb25nX2xpbmUKCiAgICAgICAgICAgICAgICAgICAgIyBhbmQgd2UgZGlkbid0IHNlZSBhIGdvb2QgYnJlYWtwb2ludAogICAgICAgICAgICAgICAgICAgICYmICEkc2F3X2dvb2RfYnJlYWsKCiAgICAgICAgICAgICAgICAgICAgIyBhbmQgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIGFuIGludGVyaW9yIGJyZWFrcG9pbnQKICAgICAgICAgICAgICAgICAgICAmJiAhZ2V0X2ZvcmNlZF9icmVha3BvaW50X2NvdW50KCkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEB7JHJpX2ZpcnN0fSA9ICgkaW1pbik7CiAgICAgICAgICAgICAgICBAeyRyaV9sYXN0fSAgPSAoJGltYXgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIG90aGVyd2lzZSB1c2UgbXVsdGlwbGUgbGluZXMKICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBhZGQgYSBjb3VwbGUgb2YgZXh0cmEgdGVybWluYWwgYmxhbmsgdG9rZW5zIGlmIHdlIGhhdmVuJ3QKICAgICAgICAgICAgICAgICMgYWxyZWFkeSBkb25lIHNvCiAgICAgICAgICAgICAgICAkc2VsZi0+cGFkX2FycmF5X3RvX2dvKCkgdW5sZXNzICgkY2FsbGVkX3BhZF9hcnJheV90b19nbyk7CgogICAgICAgICAgICAgICAgKCAkcmlfZmlyc3QsICRyaV9sYXN0ICkgPQogICAgICAgICAgICAgICAgICAkc2VsZi0+c2V0X2NvbnRpbnVhdGlvbl9icmVha3MoICRzYXdfZ29vZF9icmVhaywKICAgICAgICAgICAgICAgICAgICBcQGNvbG9uX2xpc3QgKTsKCiAgICAgICAgICAgICAgICAkc2VsZi0+YnJlYWtfYWxsX2NoYWluX3Rva2VucyggJHJpX2ZpcnN0LCAkcmlfbGFzdCApOwoKICAgICAgICAgICAgICAgICRzZWxmLT5icmVha19lcXVhbHMoICRyaV9maXJzdCwgJHJpX2xhc3QgKTsKCiAgICAgICAgICAgICAgICAjIG5vdyB3ZSBkbyBhIGNvcnJlY3Rpb24gc3RlcCB0byBjbGVhbiB0aGlzIHVwIGEgYml0CiAgICAgICAgICAgICAgICAjIChUaGUgb25seSB0aW1lIHdlIHdvdWxkIG5vdCBkbyB0aGlzIGlzIGZvciBkZWJ1Z2dpbmcpCiAgICAgICAgICAgICAgICBpZiAoJHJPcHRzX3JlY29tYmluZSkgewogICAgICAgICAgICAgICAgICAgICggJHJpX2ZpcnN0LCAkcmlfbGFzdCApID0KICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5yZWNvbWJpbmVfYnJlYWtwb2ludHMoICRyaV9maXJzdCwgJHJpX2xhc3QgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkc2VsZi0+aW5zZXJ0X2ZpbmFsX3Rlcm5hcnlfYnJlYWtzKCAkcmlfZmlyc3QsICRyaV9sYXN0ICkKICAgICAgICAgICAgICAgICAgaWYgKEBjb2xvbl9saXN0KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHNlbGYtPmluc2VydF9icmVha3NfYmVmb3JlX2xpc3Rfb3BlbmluZ19jb250YWluZXJzKCAkcmlfZmlyc3QsCiAgICAgICAgICAgICAgICAkcmlfbGFzdCApCiAgICAgICAgICAgICAgaWYgKCAlYnJlYWtfYmVmb3JlX2NvbnRhaW5lcl90eXBlcyAmJiAkbWF4X2luZGV4X3RvX2dvID4gMCApOwoKICAgICAgICAgICAgIyBkbyBjb3JyZWN0b3Igc3RlcCBpZiAtbHAgb3B0aW9uIGlzIHVzZWQKICAgICAgICAgICAgbXkgJGRvX25vdF9wYWQgPSAwOwogICAgICAgICAgICBpZiAoJHJPcHRzX2xpbmVfdXBfcGFyZW50aGVzZXMpIHsKICAgICAgICAgICAgICAgICRkb19ub3RfcGFkID0KICAgICAgICAgICAgICAgICAgJHNlbGYtPmNvcnJlY3RfbHBfaW5kZW50YXRpb24oICRyaV9maXJzdCwgJHJpX2xhc3QgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB1bm1hc2sgYW55IGludmlzaWJsZSBsaW5lLWVuZGluZyBzZW1pY29sb24uICBUaGV5IHdlcmUgcGxhY2VkIGJ5CiAgICAgICAgICAgICMgc3ViIHJlc3BhY2VfdG9rZW5zIGJ1dCB3ZSBvbmx5IG5vdyBrbm93IGlmIHdlIGFjdHVhbGx5IG5lZWQgdGhlbS4KICAgICAgICAgICAgaWYgKCAhJHRva2Vuc190b19nb1skaW1heF0gJiYgJHR5cGVzX3RvX2dvWyRpbWF4XSBlcSAnOycgKSB7CiAgICAgICAgICAgICAgICBteSAkaSAgICAgICA9ICRpbWF4OwogICAgICAgICAgICAgICAgbXkgJHRvayAgICAgPSAnOyc7CiAgICAgICAgICAgICAgICBteSAkdG9rX2xlbiA9IDE7CiAgICAgICAgICAgICAgICBpZiAoICR3YW50X2xlZnRfc3BhY2V7JzsnfSAhPSBXU19OTyApIHsKICAgICAgICAgICAgICAgICAgICAkdG9rICAgICA9ICcgOyc7CiAgICAgICAgICAgICAgICAgICAgJHRva19sZW4gPSAyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRva2Vuc190b19nb1skaV0gICAgICAgID0gJHRvazsKICAgICAgICAgICAgICAgICR0b2tlbl9sZW5ndGhzX3RvX2dvWyRpXSA9ICR0b2tfbGVuOwogICAgICAgICAgICAgICAgbXkgJEtLID0gJEtfdG9fZ29bJGldOwogICAgICAgICAgICAgICAgJHJMTC0+WyRLS10tPltfVE9LRU5fXSAgICAgICAgPSAkdG9rOwogICAgICAgICAgICAgICAgJHJMTC0+WyRLS10tPltfVE9LRU5fTEVOR1RIX10gPSAkdG9rX2xlbjsKICAgICAgICAgICAgICAgIG15ICRsaW5lX251bWJlciA9IDEgKyAkc2VsZi0+Z2V0X29sZF9saW5lX2luZGV4KCRLSyk7CiAgICAgICAgICAgICAgICAkc2VsZi0+bm90ZV9hZGRlZF9zZW1pY29sb24oJGxpbmVfbnVtYmVyKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkck9wdHNfb25lX2xpbmVfYmxvY2tfc2VtaWNvbG9ucyA9PSAwICkgewogICAgICAgICAgICAgICAgJHNlbGYtPmRlbGV0ZV9vbmVfbGluZV9zZW1pY29sb25zKCAkcmlfZmlyc3QsICRyaV9sYXN0ICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgVGhlIGxpbmUgYnJlYWtzIGZvciB0aGlzIGJhdGNoIG9mIGNvZGUgaGF2ZSBiZWVuIGZpbmFsaXplZC4gTm93IHdlCiAgICAgICAgICAgICMgY2FuIHRvIHBhY2thZ2UgdGhlIHJlc3VsdHMgZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZy4gIFdlIHdpbGwgc3dpdGNoCiAgICAgICAgICAgICMgZnJvbSB0aGUgbG9jYWwgJ190b19nbycgYnVmZmVyIGFycmF5cyAoaS1pbmRleCkgYmFjayB0byB0aGUgZ2xvYmFsCiAgICAgICAgICAgICMgdG9rZW4gYXJyYXlzIChLLWluZGV4KSBhdCB0aGlzIHBvaW50LgogICAgICAgICAgICBteSAkcmxpbmVzX0s7CiAgICAgICAgICAgIG15ICRpbmRleF9lcnJvcjsKICAgICAgICAgICAgZm9yICggbXkgJG4gPSAwIDsgJG4gPCBAeyRyaV9maXJzdH0gOyAkbisrICkgewogICAgICAgICAgICAgICAgbXkgJGliZWcgPSAkcmlfZmlyc3QtPlskbl07CiAgICAgICAgICAgICAgICBteSAkS2JlZyA9ICRLX3RvX2dvWyRpYmVnXTsKICAgICAgICAgICAgICAgIG15ICRpZW5kID0gJHJpX2xhc3QtPlskbl07CiAgICAgICAgICAgICAgICBteSAkS2VuZCA9ICRLX3RvX2dvWyRpZW5kXTsKICAgICAgICAgICAgICAgIGlmICggJGllbmQgLSAkaWJlZyAhPSAkS2VuZCAtICRLYmVnICkgewogICAgICAgICAgICAgICAgICAgICRpbmRleF9lcnJvciA9ICRuIHVubGVzcyBkZWZpbmVkKCRpbmRleF9lcnJvcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoIEB7JHJsaW5lc19LfSwKICAgICAgICAgICAgICAgICAgWyAkS2JlZywgJEtlbmQsICRmb3JjZWRfYnJlYWtwb2ludF90b19nb1skaWVuZF0gXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBDaGVjayBjb3JyZWN0bmVzcyBvZiB0aGUgbWFwcGluZyBiZXR3ZWVuIHRoZSBpIGFuZCBLIHRva2VuCiAgICAgICAgICAgICMgaW5kZXhlcy4gIChUaGUgSyBpbmRleCBpcyB0aGUgZ2xvYmFsIGluZGV4LCB0aGUgaSBpbmRleCBpcyB0aGUKICAgICAgICAgICAgIyBiYXRjaCBpbmRleCkuICBJdCBpcyBpbXBvcnRhbnQgdG8gZG8gdGhpcyBjaGVjayBiZWNhdXNlIGFuIGVycm9yCiAgICAgICAgICAgICMgd291bGQgYmUgZGlzYXN0ZXJvdXMuICBUaGUgcmVhc29uIHRoYXQgd2Ugc2hvdWxkIG5ldmVyIHNlZSBhbgogICAgICAgICAgICAjIGluZGV4IGVycm9yIGhlcmUgaXMgdGhhdCBzdWIgJ3N0b3JlX3Rva2VuX3RvX2dvJyBoYXMgYSBjaGVjayB0bwogICAgICAgICAgICAjIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbmRleGVzIGluIGJhdGNoZXMgcmVtYWluIGNvbnRpbnVvdXMuICBTaW5jZQogICAgICAgICAgICAjIHN1YiAnc3RvcmVfdG9rZW5fdG9fZ28nIGNvbnRyb2xzIGZlZWRpbmcgdG9rZW5zIGludG8gYmF0Y2hlcywgc28KICAgICAgICAgICAgIyBubyBpbmRleCBkaXNjcmVwYW5jaWVzIHNob3VsZCBvY2N1ciB1bmxlc3MgYSByZWNlbnQgcHJvZ3JhbW1pbmcKICAgICAgICAgICAgIyBjaGFuZ2UgaGFzIGludHJvZHVjZWQgYSBidWcuCiAgICAgICAgICAgIGlmICggZGVmaW5lZCgkaW5kZXhfZXJyb3IpICkgewoKICAgICAgICAgICAgICAgICMgVGVtcG9yYXJ5IGRlYnVnIGNvZGUgLSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUKICAgICAgICAgICAgICAgIGZvciAoIG15ICRuID0gMCA7ICRuIDwgQHskcmlfZmlyc3R9IDsgJG4rKyApIHsKICAgICAgICAgICAgICAgICAgICBteSAkaWJlZyAgPSAkcmlfZmlyc3QtPlskbl07CiAgICAgICAgICAgICAgICAgICAgbXkgJEtiZWcgID0gJEtfdG9fZ29bJGliZWddOwogICAgICAgICAgICAgICAgICAgIG15ICRpZW5kICA9ICRyaV9sYXN0LT5bJG5dOwogICAgICAgICAgICAgICAgICAgIG15ICRLZW5kICA9ICRLX3RvX2dvWyRpZW5kXTsKICAgICAgICAgICAgICAgICAgICBteSAkaWRpZmYgPSAkaWVuZCAtICRpYmVnOwogICAgICAgICAgICAgICAgICAgIG15ICRLZGlmZiA9ICRLZW5kIC0gJEtiZWc7CiAgICAgICAgICAgICAgICAgICAgcHJpbnQgU1RERVJSIDw8RU9NOwpsaW5lICRuLCBpcmFuZ2UgJGliZWctJGllbmQgPSAkaWRpZmYsIEtyYW5nZSAkS2JlZy0kS2VuZCA9ICRLZGlmZjsKRU9NCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBGYXVsdCgKICAgICAgICAgICAgICAgICAgICAiSW5kZXggZXJyb3IgYXQgbGluZSAkaW5kZXhfZXJyb3I7IGkgYW5kIEsgcmFuZ2VzIGRpZmZlciIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpc19iYXRjaC0+W19ybGluZXNfS19dICAgICAgICA9ICRybGluZXNfSzsKICAgICAgICAgICAgJHRoaXNfYmF0Y2gtPltfaWJlZzBfXSAgICAgICAgICAgPSAkcmlfZmlyc3QtPlswXTsKICAgICAgICAgICAgJHRoaXNfYmF0Y2gtPltfcGVha19iYXRjaF9zaXplX10gPSAkcGVha19iYXRjaF9zaXplOwogICAgICAgICAgICAkdGhpc19iYXRjaC0+W19kb19ub3RfcGFkX10gICAgICA9ICRkb19ub3RfcGFkOwogICAgICAgICAgICAkdGhpc19iYXRjaC0+W19iYXRjaF9jb3VudF9dICAgICA9ICRiYXRjaF9jb3VudDsKICAgICAgICAgICAgJHRoaXNfYmF0Y2gtPltfcml4X3NlcW5vX2NvbnRyb2xsaW5nX2NpX10gPQogICAgICAgICAgICAgIFxAaXhfc2Vxbm9fY29udHJvbGxpbmdfY2k7CgogICAgICAgICAgICAkc2VsZi0+c2VuZF9saW5lc190b192ZXJ0aWNhbF9hbGlnbmVyKCk7CgogICAgICAgICAgICAjIEluc2VydCBhbnkgcmVxdWVzdGVkIGJsYW5rIGxpbmVzIGFmdGVyIGFuIG9wZW5pbmcgYnJhY2UuICBXZSBoYXZlCiAgICAgICAgICAgICMgdG8gc2tpcCBiYWNrIGJlZm9yZSBhbnkgc2lkZSBjb21tZW50IHRvIGZpbmQgdGhlIHRlcm1pbmFsIHRva2VuCiAgICAgICAgICAgIG15ICRpdGVybTsKICAgICAgICAgICAgZm9yICggJGl0ZXJtID0gJGltYXggOyAkaXRlcm0gPj0gJGltaW4gOyAkaXRlcm0tLSApIHsKICAgICAgICAgICAgICAgIG5leHQgaWYgJHR5cGVzX3RvX2dvWyRpdGVybV0gZXEgJyMnOwogICAgICAgICAgICAgICAgbmV4dCBpZiAkdHlwZXNfdG9fZ29bJGl0ZXJtXSBlcSAnYic7CiAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHdyaXRlIHJlcXVlc3RlZCBudW1iZXIgb2YgYmxhbmsgbGluZXMgYWZ0ZXIgYW4gb3BlbmluZyBibG9jayBicmFjZQogICAgICAgICAgICBpZiAoICRpdGVybSA+PSAkaW1pbiAmJiAkdHlwZXNfdG9fZ29bJGl0ZXJtXSBlcSAneycgKSB7CiAgICAgICAgICAgICAgICBpZiAoICAgJHJPcHRzLT57J2JsYW5rLWxpbmVzLWFmdGVyLW9wZW5pbmctYmxvY2snfQogICAgICAgICAgICAgICAgICAgICYmICRibG9ja190eXBlX3RvX2dvWyRpdGVybV0KICAgICAgICAgICAgICAgICAgICAmJiAkYmxvY2tfdHlwZV90b19nb1skaXRlcm1dID1+CiAgICAgICAgICAgICAgICAgICAgLyRibGFua19saW5lc19hZnRlcl9vcGVuaW5nX2Jsb2NrX3BhdHRlcm4vICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBteSAkbmJsYW5rcyA9ICRyT3B0cy0+eydibGFuay1saW5lcy1hZnRlci1vcGVuaW5nLWJsb2NrJ307CiAgICAgICAgICAgICAgICAgICAgJHNlbGYtPmZsdXNoX3ZlcnRpY2FsX2FsaWduZXIoKTsKICAgICAgICAgICAgICAgICAgICAkZmlsZV93cml0ZXJfb2JqZWN0LT5yZXF1aXJlX2JsYW5rX2NvZGVfbGluZXMoJG5ibGFua3MpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFJlbWVtYmVyIHRoZSBsYXJnZXN0IGJhdGNoIHNpemUgcHJvY2Vzc2VkLiBUaGlzIGlzIG5lZWRlZCBieSB0aGUKICAgICAgICAjIGxvZ2ljYWwgcGFkZGluZyByb3V0aW5lIHRvIGF2b2lkIHBhZGRpbmcgdGhlIGZpcnN0IG5vbmJsYW5rIHRva2VuCiAgICAgICAgaWYgKCAkbWF4X2luZGV4X3RvX2dvICYmICRtYXhfaW5kZXhfdG9fZ28gPiAkcGVha19iYXRjaF9zaXplICkgewogICAgICAgICAgICAkcGVha19iYXRjaF9zaXplID0gJG1heF9pbmRleF90b19nbzsKICAgICAgICB9CgogICAgICAgIHJldHVybjsKICAgIH0KfSAjIyBlbmQgY2xvc3VyZSBncmluZF9iYXRjaF9vZl9DT0RFCgp7ICAgICMjIGJlZ2luIGNsb3N1cmUgbWF0Y2hfb3BlbmluZ19hbmRfY2xvc2luZ190b2tlbnMKCiAgICAjIGNsb3N1cmUgdG8ga2VlcCB0cmFjayBvZiB1bmJhbGFuY2VkIGNvbnRhaW5lcnMuCiAgICAjIGFycmF5cyBzaGFyZWQgYnkgdGhlIHJvdXRpbmVzIGluIHRoaXMgYmxvY2s6CiAgICBteSAlc2F2ZWRfb3BlbmluZ19pbmRlbnRhdGlvbjsKICAgIG15IEB1bm1hdGNoZWRfb3BlbmluZ19pbmRleGVzX2luX3RoaXNfYmF0Y2g7CiAgICBteSBAdW5tYXRjaGVkX2Nsb3NpbmdfaW5kZXhlc19pbl90aGlzX2JhdGNoOwogICAgbXkgJWNvbW1hX2Fycm93X2NvdW50OwoKICAgIHN1YiBpbml0aWFsaXplX3NhdmVkX29wZW5pbmdfaW5kZW50YXRpb24gewogICAgICAgICVzYXZlZF9vcGVuaW5nX2luZGVudGF0aW9uID0gKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBpc191bmJhbGFuY2VkX2JhdGNoIHsKICAgICAgICByZXR1cm4gQHVubWF0Y2hlZF9vcGVuaW5nX2luZGV4ZXNfaW5fdGhpc19iYXRjaCArCiAgICAgICAgICBAdW5tYXRjaGVkX2Nsb3NpbmdfaW5kZXhlc19pbl90aGlzX2JhdGNoOwogICAgfQoKICAgIHN1YiBtYXRjaF9vcGVuaW5nX2FuZF9jbG9zaW5nX3Rva2VucyB7CgogICAgICAgICMgTWF0Y2ggdXAgaW5kZXhlcyBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIGJyYWNlcywgZXRjLCBpbiB0aGlzIGJhdGNoLgogICAgICAgICMgVGhpcyBoYXMgdG8gYmUgZG9uZSBhZnRlciBhbGwgdG9rZW5zIGFyZSBzdG9yZWQgYmVjYXVzZSB1bnN0b3JpbmcKICAgICAgICAjIG9mIHRva2VucyB3b3VsZCBvdGhlcndpc2UgY2F1c2UgdHJvdWJsZS4KCiAgICAgICAgbXkgKCRzZWxmKSA9IEBfOwoKICAgICAgICBAdW5tYXRjaGVkX29wZW5pbmdfaW5kZXhlc19pbl90aGlzX2JhdGNoID0gKCk7CiAgICAgICAgQHVubWF0Y2hlZF9jbG9zaW5nX2luZGV4ZXNfaW5fdGhpc19iYXRjaCA9ICgpOwogICAgICAgICVjb21tYV9hcnJvd19jb3VudCAgICAgICAgICAgICAgICAgICAgICAgPSAoKTsKICAgICAgICBteSAkY29tbWFfYXJyb3dfY291bnRfY29udGFpbmVkID0gMDsKCiAgICAgICAgZm9yZWFjaCBteSAkaSAoIDAgLi4gJG1heF9pbmRleF90b19nbyApIHsKICAgICAgICAgICAgaWYgKCAkdHlwZV9zZXF1ZW5jZV90b19nb1skaV0gKSB7CiAgICAgICAgICAgICAgICBteSAkdG9rZW4gPSAkdG9rZW5zX3RvX2dvWyRpXTsKICAgICAgICAgICAgICAgIGlmICggJGlzX29wZW5pbmdfc2VxdWVuY2VfdG9rZW57JHRva2VufSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEB1bm1hdGNoZWRfb3BlbmluZ19pbmRleGVzX2luX3RoaXNfYmF0Y2gsICRpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkaXNfY2xvc2luZ19zZXF1ZW5jZV90b2tlbnskdG9rZW59ICkgewoKICAgICAgICAgICAgICAgICAgICBteSAkaV9tYXRlID0gcG9wIEB1bm1hdGNoZWRfb3BlbmluZ19pbmRleGVzX2luX3RoaXNfYmF0Y2g7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCRpX21hdGUpICYmICRpX21hdGUgPj0gMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkdHlwZV9zZXF1ZW5jZV90b19nb1skaV9tYXRlXSA9PQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGVfc2VxdWVuY2VfdG9fZ29bJGldICkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1hdGVfaW5kZXhfdG9fZ29bJGldICAgICAgPSAkaV9tYXRlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1hdGVfaW5kZXhfdG9fZ29bJGlfbWF0ZV0gPSAkaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRzZXFubyA9ICR0eXBlX3NlcXVlbmNlX3RvX2dvWyRpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGNvbW1hX2Fycm93X2NvdW50eyRzZXFub30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbW1hX2Fycm93X2NvdW50X2NvbnRhaW5lZCArPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbW1hX2Fycm93X2NvdW50eyRzZXFub307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEB1bm1hdGNoZWRfb3BlbmluZ19pbmRleGVzX2luX3RoaXNfYmF0Y2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpX21hdGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEB1bm1hdGNoZWRfY2xvc2luZ19pbmRleGVzX2luX3RoaXNfYmF0Y2gsICRpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEB1bm1hdGNoZWRfY2xvc2luZ19pbmRleGVzX2luX3RoaXNfYmF0Y2gsICRpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICR0b2tlbnNfdG9fZ29bJGldIGVxICc9PicgKSB7CiAgICAgICAgICAgICAgICBpZiAoQHVubWF0Y2hlZF9vcGVuaW5nX2luZGV4ZXNfaW5fdGhpc19iYXRjaCkgewogICAgICAgICAgICAgICAgICAgIG15ICRqICAgICA9ICR1bm1hdGNoZWRfb3BlbmluZ19pbmRleGVzX2luX3RoaXNfYmF0Y2hbLTFdOwogICAgICAgICAgICAgICAgICAgIG15ICRzZXFubyA9ICR0eXBlX3NlcXVlbmNlX3RvX2dvWyRqXTsKICAgICAgICAgICAgICAgICAgICAkY29tbWFfYXJyb3dfY291bnR7JHNlcW5vfSsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkY29tbWFfYXJyb3dfY291bnRfY29udGFpbmVkOwogICAgfQoKICAgIHN1YiBzYXZlX29wZW5pbmdfaW5kZW50YXRpb24gewoKICAgICAgICAjIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBhZnRlciBlYWNoIGJhdGNoIG9mIHRva2VucyBpcyBvdXRwdXQuIEl0CiAgICAgICAgIyBzYXZlcyBpbmRlbnRhdGlvbnMgb2YgbGluZXMgb2YgYWxsIHVubWF0Y2hlZCBvcGVuaW5nIHRva2Vucy4KICAgICAgICAjIFRoZXNlIHdpbGwgYmUgdXNlZCBieSBzdWIgZ2V0X29wZW5pbmdfaW5kZW50YXRpb24uCgogICAgICAgIG15ICggJHNlbGYsICRyaV9maXJzdCwgJHJpX2xhc3QsICRyaW5kZW50YXRpb25fbGlzdCApID0gQF87CgogICAgICAgICMgUVcgSU5ERU5UQVRJT04gUEFUQ0ggMToKICAgICAgICAjIEFsc28gc2F2ZSBpbmRlbnRhdGlvbiBmb3IgbXVsdGlsaW5lIHF3IHF1b3RlcwogICAgICAgIG15IEBpX3F3OwogICAgICAgIG15ICRzZXFub19xd19vcGVuaW5nOwogICAgICAgIGlmICggJHR5cGVzX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dIGVxICdxJyApIHsKICAgICAgICAgICAgbXkgJEtLID0gJEtfdG9fZ29bJG1heF9pbmRleF90b19nb107CiAgICAgICAgICAgICRzZXFub19xd19vcGVuaW5nID0KICAgICAgICAgICAgICAkc2VsZi0+W19yc3RhcnRpbmdfbXVsdGlsaW5lX3F3X3NlcW5vX2J5X0tfXS0+eyRLS307CiAgICAgICAgICAgIGlmICgkc2Vxbm9fcXdfb3BlbmluZykgewogICAgICAgICAgICAgICAgcHVzaCBAaV9xdywgJG1heF9pbmRleF90b19nbzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyB3ZSBuZWVkIHRvIHNhdmUgaW5kZW50YXRpb25zIG9mIGFueSB1bm1hdGNoZWQgb3BlbmluZyB0b2tlbnMKICAgICAgICAjIGluIHRoaXMgYmF0Y2ggYmVjYXVzZSB3ZSBtYXkgbmVlZCB0aGVtIGluIGEgc3Vic2VxdWVudCBiYXRjaC4KICAgICAgICBmb3JlYWNoICggQHVubWF0Y2hlZF9vcGVuaW5nX2luZGV4ZXNfaW5fdGhpc19iYXRjaCwgQGlfcXcgKSB7CgogICAgICAgICAgICBteSAkc2Vxbm8gPSAkdHlwZV9zZXF1ZW5jZV90b19nb1skX107CgogICAgICAgICAgICBpZiAoICEkc2Vxbm8gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRzZXFub19xd19vcGVuaW5nICYmICRfID09ICRtYXhfaW5kZXhfdG9fZ28gKSB7CiAgICAgICAgICAgICAgICAgICAgJHNlcW5vID0gJHNlcW5vX3F3X29wZW5pbmc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgIyBzaG91bGRuJ3QgaGFwcGVuCiAgICAgICAgICAgICAgICAgICAgJHNlcW5vID0gJ1VOS05PV04nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkc2F2ZWRfb3BlbmluZ19pbmRlbnRhdGlvbnskc2Vxbm99ID0gWwogICAgICAgICAgICAgICAgbG9va3VwX29wZW5pbmdfaW5kZW50YXRpb24oCiAgICAgICAgICAgICAgICAgICAgJF8sICRyaV9maXJzdCwgJHJpX2xhc3QsICRyaW5kZW50YXRpb25fbGlzdAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICBdOwogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3ViIGdldF9zYXZlZF9vcGVuaW5nX2luZGVudGF0aW9uIHsKICAgICAgICBteSAoJHNlcW5vKSA9IEBfOwogICAgICAgIG15ICggJGluZGVudCwgJG9mZnNldCwgJGlzX2xlYWRpbmcsICRleGlzdHMgKSA9ICggMCwgMCwgMCwgMCApOwoKICAgICAgICBpZiAoJHNlcW5vKSB7CiAgICAgICAgICAgIGlmICggJHNhdmVkX29wZW5pbmdfaW5kZW50YXRpb257JHNlcW5vfSApIHsKICAgICAgICAgICAgICAgICggJGluZGVudCwgJG9mZnNldCwgJGlzX2xlYWRpbmcgKSA9CiAgICAgICAgICAgICAgICAgIEB7ICRzYXZlZF9vcGVuaW5nX2luZGVudGF0aW9ueyRzZXFub30gfTsKICAgICAgICAgICAgICAgICRleGlzdHMgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHNvbWUga2luZCBvZiBzZXJpb3VzIGVycm9yIGl0IGRvZXNuJ3QgZXhpc3QKICAgICAgICAjIChleGFtcGxlIGlzIGJhZGZpbGUudCkKCiAgICAgICAgcmV0dXJuICggJGluZGVudCwgJG9mZnNldCwgJGlzX2xlYWRpbmcsICRleGlzdHMgKTsKICAgIH0KfSAjIyBlbmQgY2xvc3VyZSBtYXRjaF9vcGVuaW5nX2FuZF9jbG9zaW5nX3Rva2VucwoKc3ViIGxvb2t1cF9vcGVuaW5nX2luZGVudGF0aW9uIHsKCiAgICAjIGdldCB0aGUgaW5kZW50YXRpb24gb2YgdGhlIGxpbmUgaW4gdGhlIGN1cnJlbnQgb3V0cHV0IGJhdGNoCiAgICAjIHdoaWNoIG91dHB1dCBhIHNlbGVjdGVkIG9wZW5pbmcgdG9rZW4KICAgICMKICAgICMgZ2l2ZW46CiAgICAjICAgJGlfb3BlbmluZyAtIGluZGV4IG9mIGFuIG9wZW5pbmcgdG9rZW4gaW4gdGhlIGN1cnJlbnQgb3V0cHV0IGJhdGNoCiAgICAjICAgICAgICAgICAgICAgIHdob3NlIGxpbmUgaW5kZW50YXRpb24gd2UgbmVlZAogICAgIyAgICRyaV9maXJzdCAtIHJlZmVyZW5jZSB0byBsaXN0IG9mIHRoZSBmaXJzdCBpbmRleCAkaSBmb3IgZWFjaCBvdXRwdXQKICAgICMgICAgICAgICAgICAgICBsaW5lIGluIHRoaXMgYmF0Y2gKICAgICMgICAkcmlfbGFzdCAtIHJlZmVyZW5jZSB0byBsaXN0IG9mIHRoZSBsYXN0IGluZGV4ICRpIGZvciBlYWNoIG91dHB1dCBsaW5lCiAgICAjICAgICAgICAgICAgICBpbiB0aGlzIGJhdGNoCiAgICAjICAgJHJpbmRlbnRhdGlvbl9saXN0IC0gcmVmZXJlbmNlIHRvIGEgbGlzdCBjb250YWluaW5nIHRoZSBpbmRlbnRhdGlvbgogICAgIyAgICAgICAgICAgIHVzZWQgZm9yIGVhY2ggbGluZS4gIChOT1RFOiB0aGUgZmlyc3Qgc2xvdCBpbgogICAgIyAgICAgICAgICAgIHRoaXMgbGlzdCBpcyB0aGUgbGFzdCByZXR1cm5lZCBsaW5lIG51bWJlciwgYW5kIHRoaXMgaXMKICAgICMgICAgICAgICAgICBmb2xsb3dlZCBieSB0aGUgbGlzdCBvZiBpbmRlbnRhdGlvbnMpLgogICAgIwogICAgIyByZXR1cm4KICAgICMgICAtdGhlIGluZGVudGF0aW9uIG9mIHRoZSBsaW5lIHdoaWNoIGNvbnRhaW5lZCB0b2tlbiAkaV9vcGVuaW5nCiAgICAjICAgLWFuZCBpdHMgb2Zmc2V0IChudW1iZXIgb2YgY29sdW1ucykgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGxpbmUKCiAgICBteSAoICRpX29wZW5pbmcsICRyaV9zdGFydCwgJHJpX2xhc3QsICRyaW5kZW50YXRpb25fbGlzdCApID0gQF87CgogICAgaWYgKCAhQHskcmlfbGFzdH0gKSB7CgogICAgICAgICMgQW4gZXJyb3IgaGVyZSBpbXBsaWVzIGEgYnVnIGludHJvZHVjZWQgYnkgYSByZWNlbnQgcHJvZ3JhbSBjaGFuZ2UuCiAgICAgICAgIyBFdmVyeSBiYXRjaCBvZiBjb2RlIGhhcyBsaW5lcy4KICAgICAgICBGYXVsdCgiRXJyb3IgaW4gb3BlbmluZ19pbmRlbnRhdGlvbjogbm8gbGluZXMiKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJG5saW5lID0gJHJpbmRlbnRhdGlvbl9saXN0LT5bMF07ICAgICMgbGluZSBudW1iZXIgb2YgcHJldmlvdXMgbG9va3VwCgogICAgIyByZXNldCBsaW5lIGxvY2F0aW9uIGlmIG5lY2Vzc2FyeQogICAgJG5saW5lID0gMCBpZiAoICRpX29wZW5pbmcgPCAkcmlfc3RhcnQtPlskbmxpbmVdICk7CgogICAgIyBmaW5kIHRoZSBjb3JyZWN0IGxpbmUKICAgIHVubGVzcyAoICRpX29wZW5pbmcgPiAkcmlfbGFzdC0+Wy0xXSApIHsKICAgICAgICB3aGlsZSAoICRpX29wZW5pbmcgPiAkcmlfbGFzdC0+WyRubGluZV0gKSB7ICRubGluZSsrOyB9CiAgICB9CgogICAgIyBFcnJvciAtIHRva2VuIGluZGV4IGlzIG91dCBvZiBib3VuZHMgLSBzaG91bGRuJ3QgaGFwcGVuCiAgICAjIEEgcHJvZ3JhbSBidWcgaGFzIGJlZW4gaW50cm9kdWNlZCBpbiBvbmUgb2YgdGhlIGNhbGxpbmcgcm91dGluZXMuCiAgICAjIFdlIGJldHRlciBzdG9wIGhlcmUuCiAgICBlbHNlIHsKICAgICAgICBteSAkaV9sYXN0X2xpbmUgPSAkcmlfbGFzdC0+Wy0xXTsKICAgICAgICBGYXVsdCg8PEVPTSk7ClByb2dyYW0gYnVnIGluIGNhbGwgdG8gbG9va3VwX29wZW5pbmdfaW5kZW50YXRpb24gLSBpbmRleCBvdXQgb2YgcmFuZ2UKIGNhbGxlZCB3aXRoIGluZGV4IGlfb3BlbmluZz0kaV9vcGVuaW5nICA+ICRpX2xhc3RfbGluZSA9IG1heCBpbmRleCBvZiBsYXN0IGxpbmUKVGhpcyBiYXRjaCBoYXMgbWF4IGluZGV4ID0gJG1heF9pbmRleF90b19nbywKRU9NCiAgICAgICAgcmVwb3J0X2RlZmluaXRlX2J1ZygpOyAgICAjIG9sZCBjb2RpbmcsIHdpbGwgbm90IGdldCBoZXJlCiAgICAgICAgJG5saW5lID0gJCN7JHJpX2xhc3R9OwogICAgfQoKICAgICRyaW5kZW50YXRpb25fbGlzdC0+WzBdID0KICAgICAgJG5saW5lOyAgICAgICAgICAgICAgICAgICAgICMgc2F2ZSBsaW5lIG51bWJlciB0byBzdGFydCBsb29raW5nIG5leHQgY2FsbAogICAgbXkgJGliZWcgICAgICAgPSAkcmlfc3RhcnQtPlskbmxpbmVdOwogICAgbXkgJG9mZnNldCAgICAgPSB0b2tlbl9zZXF1ZW5jZV9sZW5ndGgoICRpYmVnLCAkaV9vcGVuaW5nICkgLSAxOwogICAgbXkgJGlzX2xlYWRpbmcgPSAoICRpYmVnID09ICRpX29wZW5pbmcgKTsKICAgIHJldHVybiAoICRyaW5kZW50YXRpb25fbGlzdC0+WyAkbmxpbmUgKyAxIF0sICRvZmZzZXQsICRpc19sZWFkaW5nICk7Cn0KCnsgICAgIyMgYmVnaW4gY2xvc3VyZSB0ZXJtaW5hbF90eXBlX2kKCiAgICBteSAlaXNfc29ydF9tYXBfZ3JlcF9ldmFsX2RvOwoKICAgIEJFR0lOIHsKICAgICAgICBteSBAcSA9IHF3KHNvcnQgbWFwIGdyZXAgZXZhbCBkbyk7CiAgICAgICAgQGlzX3NvcnRfbWFwX2dyZXBfZXZhbF9kb3tAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwogICAgfQoKICAgIHN1YiB0ZXJtaW5hbF90eXBlX2kgewoKICAgICAgIyAgICByZXR1cm5zIHR5cGUgb2YgbGFzdCB0b2tlbiBvbiB0aGlzIGxpbmUgKHRlcm1pbmFsIHRva2VuKSwgYXMgZm9sbG93czoKICAgICAgIyAgICByZXR1cm5zICMgZm9yIGEgZnVsbC1saW5lIGNvbW1lbnQKICAgICAgIyAgICByZXR1cm5zICcgJyBmb3IgYSBibGFuayBsaW5lCiAgICAgICMgICAgb3RoZXJ3aXNlIHJldHVybnMgZmluYWwgdG9rZW4gdHlwZQoKICAgICAgICBteSAoICRpYmVnLCAkaWVuZCApID0gQF87CgogICAgICAgICMgU3RhcnQgYXQgdGhlIGVuZCBhbmQgd29yayBiYWNrd2FyZHMKICAgICAgICBteSAkaSAgICAgID0gJGllbmQ7CiAgICAgICAgbXkgJHR5cGVfaSA9ICR0eXBlc190b19nb1skaV07CgogICAgICAgICMgQ2hlY2sgZm9yIHNpZGUgY29tbWVudAogICAgICAgIGlmICggJHR5cGVfaSBlcSAnIycgKSB7CiAgICAgICAgICAgICRpLS07CiAgICAgICAgICAgIGlmICggJGkgPCAkaWJlZyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB3YW50YXJyYXkgPyAoICR0eXBlX2ksICRpYmVnICkgOiAkdHlwZV9pOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0eXBlX2kgPSAkdHlwZXNfdG9fZ29bJGldOwogICAgICAgIH0KCiAgICAgICAgIyBTa2lwIHBhc3QgYSBibGFuawogICAgICAgIGlmICggJHR5cGVfaSBlcSAnYicgKSB7CiAgICAgICAgICAgICRpLS07CiAgICAgICAgICAgIGlmICggJGkgPCAkaWJlZyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB3YW50YXJyYXkgPyAoICR0eXBlX2ksICRpYmVnICkgOiAkdHlwZV9pOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0eXBlX2kgPSAkdHlwZXNfdG9fZ29bJGldOwogICAgICAgIH0KCiAgICAgICAgIyBGb3VuZCBpdC4ubWFrZSBzdXJlIGl0IGlzIGEgQkxPQ0sgdGVybWluYXRpb24sCiAgICAgICAgIyBidXQgaGlkZSBhIHRlcm1pbmFsIH0gYWZ0ZXIgc29ydC9ncmVwL21hcCBiZWNhdXNlIGl0IGlzIG5vdAogICAgICAgICMgbmVjZXNzYXJpbHkgdGhlIGVuZCBvZiB0aGUgbGluZS4gICh0ZXJtaW5hbC50KQogICAgICAgIG15ICRibG9ja190eXBlID0gJGJsb2NrX3R5cGVfdG9fZ29bJGldOwogICAgICAgIGlmICgKICAgICAgICAgICAgJHR5cGVfaSBlcSAnfScKICAgICAgICAgICAgJiYgKCAhJGJsb2NrX3R5cGUKICAgICAgICAgICAgICAgIHx8ICggJGlzX3NvcnRfbWFwX2dyZXBfZXZhbF9kb3skYmxvY2tfdHlwZX0gKSApCiAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkdHlwZV9pID0gJ2InOwogICAgICAgIH0KICAgICAgICByZXR1cm4gd2FudGFycmF5ID8gKCAkdHlwZV9pLCAkaSApIDogJHR5cGVfaTsKICAgIH0KCn0gIyMgZW5kIGNsb3N1cmUgdGVybWluYWxfdHlwZV9pCgpzdWIgcGFkX2FycmF5X3RvX2dvIHsKCiAgICAjIFRvIHNpbXBsaWZ5IGNvZGluZyBpbiBzY2FuX2xpc3QgYW5kIHNldF9ib25kX3N0cmVuZ3RocywgaXQgaGVscHMgdG8KICAgICMgY3JlYXRlIHNvbWUgZXh0cmEgYmxhbmsgdG9rZW5zIGF0IHRoZSBlbmQgb2YgdGhlIGFycmF5cy4gIFdlIGFsc28gYWRkCiAgICAjIHNvbWUgdW5kZWYncyB0byBoZWxwIGd1YXJkIGFnYWluc3QgdXNpbmcgaW52YWxpZCBkYXRhLgogICAgbXkgKCRzZWxmKSA9IEBfOwogICAgJEtfdG9fZ29bICRtYXhfaW5kZXhfdG9fZ28gKyAxIF0gICAgICAgICAgICAgPSB1bmRlZjsKICAgICR0b2tlbnNfdG9fZ29bICRtYXhfaW5kZXhfdG9fZ28gKyAxIF0gICAgICAgID0gJyc7CiAgICAkdG9rZW5zX3RvX2dvWyAkbWF4X2luZGV4X3RvX2dvICsgMiBdICAgICAgICA9ICcnOwogICAgJHRva2Vuc190b19nb1sgJG1heF9pbmRleF90b19nbyArIDMgXSAgICAgICAgPSB1bmRlZjsKICAgICR0eXBlc190b19nb1sgJG1heF9pbmRleF90b19nbyArIDEgXSAgICAgICAgID0gJ2InOwogICAgJHR5cGVzX3RvX2dvWyAkbWF4X2luZGV4X3RvX2dvICsgMiBdICAgICAgICAgPSAnYic7CiAgICAkdHlwZXNfdG9fZ29bICRtYXhfaW5kZXhfdG9fZ28gKyAzIF0gICAgICAgICA9IHVuZGVmOwogICAgJG5lc3RpbmdfZGVwdGhfdG9fZ29bICRtYXhfaW5kZXhfdG9fZ28gKyAyIF0gPSB1bmRlZjsKICAgICRuZXN0aW5nX2RlcHRoX3RvX2dvWyAkbWF4X2luZGV4X3RvX2dvICsgMSBdID0KICAgICAgJG5lc3RpbmdfZGVwdGhfdG9fZ29bJG1heF9pbmRleF90b19nb107CgogICAgIyAgICAvXltSXH1cKVxdXSQvCiAgICBpZiAoICRpc19jbG9zaW5nX3R5cGV7ICR0eXBlc190b19nb1skbWF4X2luZGV4X3RvX2dvXSB9ICkgewogICAgICAgIGlmICggJG5lc3RpbmdfZGVwdGhfdG9fZ29bJG1heF9pbmRleF90b19nb10gPD0gMCApIHsKCiAgICAgICAgICAgICMgTmVzdGluZyBkZXB0aHMgYXJlIGVxdWl2YWxlbnQgdG8gdGhlIF9TTEVWRUxfIHZhcmlhYmxlIHdoaWNoIGlzCiAgICAgICAgICAgICMgY2xpcHBlZCB0byBiZSA+PTAgaW4gc3ViIHdyaXRlX2xpbmUsIHNvIGl0IHNob3VsZCBub3QgYmUgcG9zc2libGUKICAgICAgICAgICAgIyB0byBnZXQgaGVyZSB1bmxlc3MgdGhlIGNvZGUgaGFzIGEgYnJhY2luZyBlcnJvciB3aGljaCBsZWF2ZXMgYQogICAgICAgICAgICAjIGNsb3NpbmcgYnJhY2Ugd2l0aCB6ZXJvIG5lc3RpbmcgZGVwdGguCiAgICAgICAgICAgIHVubGVzcyAoIGdldF9zYXdfYnJhY2VfZXJyb3IoKSApIHsKICAgICAgICAgICAgICAgIHdhcm5pbmcoCiJQcm9ncmFtIGJ1ZyBpbiBwYWRfYXJyYXlfdG9fZ286IGhpdCBuZXN0aW5nIGVycm9yIHdoaWNoIHNob3VsZCBoYXZlIGJlZW4gY2F1Z2h0XG4iCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmVwb3J0X2RlZmluaXRlX2J1ZygpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkbmVzdGluZ19kZXB0aF90b19nb1sgJG1heF9pbmRleF90b19nbyArIDEgXSAtPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjICAgICAgIC9eW0xce1woXFtdJC8KICAgIGVsc2lmICggJGlzX29wZW5pbmdfdHlwZXsgJHR5cGVzX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dIH0gKSB7CiAgICAgICAgJG5lc3RpbmdfZGVwdGhfdG9fZ29bICRtYXhfaW5kZXhfdG9fZ28gKyAxIF0gKz0gMTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIGJyZWFrX2FsbF9jaGFpbl90b2tlbnMgewoKICAgICMgc2NhbiB0aGUgY3VycmVudCBicmVha3BvaW50cyBsb29raW5nIGZvciBicmVha3MgYXQgY2VydGFpbiAiY2hhaW4KICAgICMgb3BlcmF0b3JzIiAoLiA6ICYmIHx8ICsgZXRjKSB3aGljaCBvZnRlbiBvY2N1ciByZXBlYXRlZGx5IGluIGEgbG9uZwogICAgIyBzdGF0ZW1lbnQuICBJZiB3ZSBzZWUgYSBicmVhayBhdCBhbnkgb25lLCBicmVhayBhdCBhbGwgc2ltaWxhciB0b2tlbnMKICAgICMgd2l0aGluIHRoZSBzYW1lIGNvbnRhaW5lci4KICAgICMKICAgIG15ICggJHNlbGYsICRyaV9sZWZ0LCAkcmlfcmlnaHQgKSA9IEBfOwoKICAgIG15ICVzYXdfY2hhaW5fdHlwZTsKICAgIG15ICVsZWZ0X2NoYWluX3R5cGU7CiAgICBteSAlcmlnaHRfY2hhaW5fdHlwZTsKICAgIG15ICVpbnRlcmlvcl9jaGFpbl90eXBlOwogICAgbXkgJG5tYXggPSBAeyRyaV9yaWdodH0gLSAxOwoKICAgICMgc2NhbiB0aGUgbGVmdCBhbmQgcmlnaHQgZW5kIHRva2VucyBvZiBhbGwgbGluZXMKICAgIG15ICRjb3VudCA9IDA7CiAgICBmb3IgbXkgJG4gKCAwIC4uICRubWF4ICkgewogICAgICAgIG15ICRpbCAgICA9ICRyaV9sZWZ0LT5bJG5dOwogICAgICAgIG15ICRpciAgICA9ICRyaV9yaWdodC0+WyRuXTsKICAgICAgICBteSAkdHlwZWwgPSAkdHlwZXNfdG9fZ29bJGlsXTsKICAgICAgICBteSAkdHlwZXIgPSAkdHlwZXNfdG9fZ29bJGlyXTsKICAgICAgICAkdHlwZWwgPSAnKycgaWYgKCAkdHlwZWwgZXEgJy0nICk7ICAgICMgdHJlYXQgKyBhbmQgLSB0aGUgc2FtZQogICAgICAgICR0eXBlciA9ICcrJyBpZiAoICR0eXBlciBlcSAnLScgKTsKICAgICAgICAkdHlwZWwgPSAnKicgaWYgKCAkdHlwZWwgZXEgJy8nICk7ICAgICMgdHJlYXQgKiBhbmQgLyB0aGUgc2FtZQogICAgICAgICR0eXBlciA9ICcqJyBpZiAoICR0eXBlciBlcSAnLycgKTsKICAgICAgICBteSAkdG9rZW5sID0gJHRva2Vuc190b19nb1skaWxdOwogICAgICAgIG15ICR0b2tlbnIgPSAkdG9rZW5zX3RvX2dvWyRpcl07CgogICAgICAgIGlmICggJGlzX2NoYWluX29wZXJhdG9yeyR0b2tlbmx9ICYmICR3YW50X2JyZWFrX2JlZm9yZXskdHlwZWx9ICkgewogICAgICAgICAgICBuZXh0IGlmICggJHR5cGVsIGVxICc/JyApOwogICAgICAgICAgICBwdXNoIEB7ICRsZWZ0X2NoYWluX3R5cGV7JHR5cGVsfSB9LCAkaWw7CiAgICAgICAgICAgICRzYXdfY2hhaW5fdHlwZXskdHlwZWx9ID0gMTsKICAgICAgICAgICAgJGNvdW50Kys7CiAgICAgICAgfQogICAgICAgIGlmICggJGlzX2NoYWluX29wZXJhdG9yeyR0b2tlbnJ9ICYmICEkd2FudF9icmVha19iZWZvcmV7JHR5cGVyfSApIHsKICAgICAgICAgICAgbmV4dCBpZiAoICR0eXBlciBlcSAnPycgKTsKICAgICAgICAgICAgcHVzaCBAeyAkcmlnaHRfY2hhaW5fdHlwZXskdHlwZXJ9IH0sICRpcjsKICAgICAgICAgICAgJHNhd19jaGFpbl90eXBleyR0eXBlcn0gPSAxOwogICAgICAgICAgICAkY291bnQrKzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gdW5sZXNzICRjb3VudDsKCiAgICAjIG5vdyBsb29rIGZvciBhbnkgaW50ZXJpb3IgdG9rZW5zIG9mIHRoZSBzYW1lIHR5cGVzCiAgICAkY291bnQgPSAwOwogICAgZm9yIG15ICRuICggMCAuLiAkbm1heCApIHsKICAgICAgICBteSAkaWwgPSAkcmlfbGVmdC0+WyRuXTsKICAgICAgICBteSAkaXIgPSAkcmlfcmlnaHQtPlskbl07CiAgICAgICAgZm9yZWFjaCBteSAkaSAoICRpbCArIDEgLi4gJGlyIC0gMSApIHsKICAgICAgICAgICAgbXkgJHR5cGUgPSAkdHlwZXNfdG9fZ29bJGldOwogICAgICAgICAgICAkdHlwZSA9ICcrJyBpZiAoICR0eXBlIGVxICctJyApOwogICAgICAgICAgICAkdHlwZSA9ICcqJyBpZiAoICR0eXBlIGVxICcvJyApOwogICAgICAgICAgICBpZiAoICRzYXdfY2hhaW5fdHlwZXskdHlwZX0gKSB7CiAgICAgICAgICAgICAgICBwdXNoIEB7ICRpbnRlcmlvcl9jaGFpbl90eXBleyR0eXBlfSB9LCAkaTsKICAgICAgICAgICAgICAgICRjb3VudCsrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHVubGVzcyAkY291bnQ7CgogICAgIyBub3cgbWFrZSBhIGxpc3Qgb2YgYWxsIG5ldyBicmVhayBwb2ludHMKICAgIG15IEBpbnNlcnRfbGlzdDsKCiAgICAjIGxvb3Agb3ZlciBhbGwgY2hhaW4gdHlwZXMKICAgIGZvcmVhY2ggbXkgJHR5cGUgKCBrZXlzICVzYXdfY2hhaW5fdHlwZSApIHsKCiAgICAgICAgIyBxdWl0IGlmIGp1c3QgT05FIGNvbnRpbnVhdGlvbiBsaW5lIHdpdGggbGVhZGluZyAuICBGb3IgZXhhbXBsZS0tCiAgICAgICAgIyBwcmludCBMQVRFWEZJTEUgJ1xmcmFtZWJveHtccGFyYm94W2NdWycgLiAkaCAuICddW3RdeycgLiAkdyAuICd9eycKICAgICAgICAjICAuICRjb250ZW50czsKICAgICAgICBsYXN0IGlmICggJG5tYXggPT0gMSAmJiAkdHlwZSA9fiAvXltcLlwrXSQvICk7CgogICAgICAgICMgbG9vcCBvdmVyIGFsbCBpbnRlcmlvciBjaGFpbiB0b2tlbnMKICAgICAgICBmb3JlYWNoIG15ICRpdGVzdCAoIEB7ICRpbnRlcmlvcl9jaGFpbl90eXBleyR0eXBlfSB9ICkgewoKICAgICAgICAgICAgIyBsb29wIG92ZXIgYWxsIGxlZnQgZW5kIHRva2VucyBvZiBzYW1lIHR5cGUKICAgICAgICAgICAgaWYgKCAkbGVmdF9jaGFpbl90eXBleyR0eXBlfSApIHsKICAgICAgICAgICAgICAgIG5leHQgaWYgJG5vYnJlYWtfdG9fZ29bICRpdGVzdCAtIDEgXTsKICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGkgKCBAeyAkbGVmdF9jaGFpbl90eXBleyR0eXBlfSB9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzICRzZWxmLT5pbl9zYW1lX2NvbnRhaW5lcl9pKCAkaSwgJGl0ZXN0ICk7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAaW5zZXJ0X2xpc3QsICRpdGVzdCAtIDE7CgogICAgICAgICAgICAgICAgICAgICMgQnJlYWsgYXQgbWF0Y2hpbmcgPyBpZiB0aGlzIDogaXMgYXQgYSBkaWZmZXJlbnQgbGV2ZWwuCiAgICAgICAgICAgICAgICAgICAgIyBGb3IgZXhhbXBsZSwgdGhlID8gYmVmb3JlICRUSFJmX0RFQUQgaW4gdGhlIGZvbGxvd2luZwogICAgICAgICAgICAgICAgICAgICMgc2hvdWxkIGdldCBhIGJyZWFrIGlmIGl0cyA6IGdldHMgYSBicmVhay4KICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBteSAkZmxhZ3MgPQogICAgICAgICAgICAgICAgICAgICMgICAgICggJF8gJiAxICkgPyAoICRfICYgNCApID8gJFRIUmZfREVBRCA6ICRUSFJmX1pPTUJJRQogICAgICAgICAgICAgICAgICAgICMgICA6ICggJF8gJiA0ICkgPyAkVEhSZl9SX0RFVEFDSEVECiAgICAgICAgICAgICAgICAgICAgIyAgIDogICAgICAgICAgICAgICRUSFJmX1JfSk9JTkFCTEU7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAgICR0eXBlIGVxICc6JwogICAgICAgICAgICAgICAgICAgICAgICAmJiAkbGV2ZWxzX3RvX2dvWyRpXSAhPSAkbGV2ZWxzX3RvX2dvWyRpdGVzdF0gKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGlfcXVlc3Rpb24gPSAkbWF0ZV9pbmRleF90b19nb1skaXRlc3RdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRpX3F1ZXN0aW9uID4gMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQGluc2VydF9saXN0LCAkaV9xdWVzdGlvbiAtIDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBsb29wIG92ZXIgYWxsIHJpZ2h0IGVuZCB0b2tlbnMgb2Ygc2FtZSB0eXBlCiAgICAgICAgICAgIGlmICggJHJpZ2h0X2NoYWluX3R5cGV7JHR5cGV9ICkgewogICAgICAgICAgICAgICAgbmV4dCBpZiAkbm9icmVha190b19nb1skaXRlc3RdOwogICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkaSAoIEB7ICRyaWdodF9jaGFpbl90eXBleyR0eXBlfSB9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzICRzZWxmLT5pbl9zYW1lX2NvbnRhaW5lcl9pKCAkaSwgJGl0ZXN0ICk7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAaW5zZXJ0X2xpc3QsICRpdGVzdDsKCiAgICAgICAgICAgICAgICAgICAgIyBicmVhayBhdCBtYXRjaGluZyA/IGlmIHRoaXMgOiBpcyBhdCBhIGRpZmZlcmVudCBsZXZlbAogICAgICAgICAgICAgICAgICAgIGlmICggICAkdHlwZSBlcSAnOicKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGxldmVsc190b19nb1skaV0gIT0gJGxldmVsc190b19nb1skaXRlc3RdICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpX3F1ZXN0aW9uID0gJG1hdGVfaW5kZXhfdG9fZ29bJGl0ZXN0XTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkaV9xdWVzdGlvbiA+PSAwICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAaW5zZXJ0X2xpc3QsICRpX3F1ZXN0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBpbnNlcnQgYW55IG5ldyBicmVhayBwb2ludHMKICAgIGlmIChAaW5zZXJ0X2xpc3QpIHsKICAgICAgICAkc2VsZi0+aW5zZXJ0X2FkZGl0aW9uYWxfYnJlYWtzKCBcQGluc2VydF9saXN0LCAkcmlfbGVmdCwgJHJpX3JpZ2h0ICk7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBpbnNlcnRfYWRkaXRpb25hbF9icmVha3MgewoKICAgICMgdGhpcyByb3V0aW5lIHdpbGwgYWRkIGxpbmUgYnJlYWtzIGF0IHJlcXVlc3RlZCBsb2NhdGlvbnMgYWZ0ZXIKICAgICMgc3ViIHNldF9jb250aW51YXRpb25fYnJlYWtzIGhhcyBtYWRlIHByZWxpbWluYXJ5IGJyZWFrcy4KCiAgICBteSAoICRzZWxmLCAkcmlfYnJlYWtfbGlzdCwgJHJpX2ZpcnN0LCAkcmlfbGFzdCApID0gQF87CiAgICBteSAkaV9mOwogICAgbXkgJGlfbDsKICAgIG15ICRsaW5lX251bWJlciA9IDA7CiAgICBmb3JlYWNoIG15ICRpX2JyZWFrX2xlZnQgKCBzb3J0IHsgJGEgPD0+ICRiIH0gQHskcmlfYnJlYWtfbGlzdH0gKSB7CgogICAgICAgIG5leHQgaWYgKCAkbm9icmVha190b19nb1skaV9icmVha19sZWZ0XSApOwoKICAgICAgICAkaV9mID0gJHJpX2ZpcnN0LT5bJGxpbmVfbnVtYmVyXTsKICAgICAgICAkaV9sID0gJHJpX2xhc3QtPlskbGluZV9udW1iZXJdOwogICAgICAgIHdoaWxlICggJGlfYnJlYWtfbGVmdCA+PSAkaV9sICkgewogICAgICAgICAgICAkbGluZV9udW1iZXIrKzsKCiAgICAgICAgICAgICMgc2hvdWxkbid0IGhhcHBlbiB1bmxlc3MgY2FsbGVyIHBhc3NlcyBiYWQgaW5kZXhlcwogICAgICAgICAgICBpZiAoICRsaW5lX251bWJlciA+PSBAeyRyaV9sYXN0fSApIHsKICAgICAgICAgICAgICAgIHdhcm5pbmcoCiJOb24tZmF0YWwgcHJvZ3JhbSBidWc6IGNvdWxkbid0IHNldCBicmVhayBhdCAkaV9icmVha19sZWZ0XG4iCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmVwb3J0X2RlZmluaXRlX2J1ZygpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRpX2YgPSAkcmlfZmlyc3QtPlskbGluZV9udW1iZXJdOwogICAgICAgICAgICAkaV9sID0gJHJpX2xhc3QtPlskbGluZV9udW1iZXJdOwogICAgICAgIH0KCiAgICAgICAgIyBEbyBub3QgbGVhdmUgYSBibGFuayBhdCB0aGUgZW5kIG9mIGEgbGluZTsgYmFjayB1cCBpZiBuZWNlc3NhcnkKICAgICAgICBpZiAoICR0eXBlc190b19nb1skaV9icmVha19sZWZ0XSBlcSAnYicgKSB7ICRpX2JyZWFrX2xlZnQtLSB9CgogICAgICAgIG15ICRpX2JyZWFrX3JpZ2h0ID0gJGluZXh0X3RvX2dvWyRpX2JyZWFrX2xlZnRdOwogICAgICAgIGlmICggICAkaV9icmVha19sZWZ0ID49ICRpX2YKICAgICAgICAgICAgJiYgJGlfYnJlYWtfbGVmdCA8ICRpX2wKICAgICAgICAgICAgJiYgJGlfYnJlYWtfcmlnaHQgPiAkaV9mCiAgICAgICAgICAgICYmICRpX2JyZWFrX3JpZ2h0IDw9ICRpX2wgKQogICAgICAgIHsKICAgICAgICAgICAgc3BsaWNlKCBAeyRyaV9maXJzdH0sICRsaW5lX251bWJlciwgMSwgKCAkaV9mLCAkaV9icmVha19yaWdodCApICk7CiAgICAgICAgICAgIHNwbGljZSggQHskcmlfbGFzdH0sICAkbGluZV9udW1iZXIsIDEsICggJGlfYnJlYWtfbGVmdCwgJGlfbCApICk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgaW5fc2FtZV9jb250YWluZXJfaSB7CgogICAgIyBjaGVjayB0byBzZWUgaWYgdG9rZW5zIGF0IGkxIGFuZCBpMiBhcmUgaW4gdGhlCiAgICAjIHNhbWUgY29udGFpbmVyLCBhbmQgbm90IHNlcGFyYXRlZCBieSBhIGNvbW1hLCA/IG9yIDoKICAgICMgVGhpcyBpcyBhbiBpbnRlcmZhY2UgYmV0d2VlbiB0aGUgX3RvX2dvIGFycmF5cyB0byB0aGUgckxMIGFycmF5CiAgICBteSAoICRzZWxmLCAkaTEsICRpMiApID0gQF87CiAgICByZXR1cm4gJHNlbGYtPmluX3NhbWVfY29udGFpbmVyX0soICRLX3RvX2dvWyRpMV0sICRLX3RvX2dvWyRpMl0gKTsKfQoKeyAgICAjIyBiZWdpbiBjbG9zdXJlIGluX3NhbWVfY29udGFpbmVyX0sKICAgIG15ICRyaXNfYnJlYWtfdG9rZW47CiAgICBteSAkcmlzX2NvbW1hX3Rva2VuOwoKICAgIEJFR0lOIHsKCiAgICAgICAgIyBhbGwgY2FzZXMgYnJlYWsgb24gc2VlaW5nIGNvbW1hcyBhdCBzYW1lIGxldmVsCiAgICAgICAgbXkgQHEgPSBxdyggPT4gKTsKICAgICAgICBwdXNoIEBxLCAnLCc7CiAgICAgICAgQHskcmlzX2NvbW1hX3Rva2VufXtAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICAgICAjIE5vbi10ZXJuYXJ5IHRleHQgYWxzbyBicmVha3Mgb24gc2VlaW5nIGFueSBvZiBxdyg/IDogfHwgb3IgKQogICAgICAgICMgRXhhbXBsZTogd2Ugd291bGQgbm90IHdhbnQgdG8gYnJlYWsgYXQgYW55IG9mIHRoZXNlIC4ncwogICAgICAgICMgIDogIjxBIEhSRUY9XCIjaXRlbV8iIC4gaHRtbGlmeSggMCwgJHMyICkgLiAiXCI+JHN0cjwvQT4iCiAgICAgICAgcHVzaCBAcSwgcXcoIG9yIHx8ID8gOiApOwogICAgICAgIEB7JHJpc19icmVha190b2tlbn17QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKICAgIH0KCiAgICBzdWIgaW5fc2FtZV9jb250YWluZXJfSyB7CgogICAgICAgICMgQ2hlY2sgdG8gc2VlIGlmIHRva2VucyBhdCBLMSBhbmQgSzIgYXJlIGluIHRoZSBzYW1lIGNvbnRhaW5lciwKICAgICAgICAjIGFuZCBub3Qgc2VwYXJhdGVkIGJ5IGNlcnRhaW4gY2hhcmFjdGVyczogPT4gLCA/IDogfHwgb3IKICAgICAgICAjIFRoaXMgdmVyc2lvbiB1c2VzIHRoZSBuZXdlciAkckxMIGRhdGEgc3RydWN0dXJlLgoKICAgICAgICBteSAoICRzZWxmLCAkSzEsICRLMiApID0gQF87CiAgICAgICAgaWYgKCAkSzIgPCAkSzEgKSB7ICggJEsxLCAkSzIgKSA9ICggJEsyLCAkSzEgKSB9CiAgICAgICAgbXkgJHJMTCAgICAgPSAkc2VsZi0+W19yTExfXTsKICAgICAgICBteSAkZGVwdGhfMSA9ICRyTEwtPlskSzFdLT5bX1NMRVZFTF9dOwogICAgICAgIHJldHVybiBpZiAoICRkZXB0aF8xIDwgMCApOwogICAgICAgIHJldHVybiB1bmxlc3MgKCAkckxMLT5bJEsyXS0+W19TTEVWRUxfXSA9PSAkZGVwdGhfMSApOwoKICAgICAgICAjIFNlbGVjdCBjaGFyYWN0ZXIgc2V0IHRvIHNjYW4gZm9yCiAgICAgICAgbXkgJHR5cGVfMSA9ICRyTEwtPlskSzFdLT5bX1RZUEVfXTsKICAgICAgICBteSAkcmJyZWFrID0gKCAkdHlwZV8xIG5lICc6JyApID8gJHJpc19icmVha190b2tlbiA6ICRyaXNfY29tbWFfdG9rZW47CgogICAgICAgICMgRmFzdCBwcmVsaW1pbmFyeSBsb29wIHRvIHZlcmlmeSB0aGF0IHRva2VucyBhcmUgaW4gdGhlIHNhbWUgY29udGFpbmVyCiAgICAgICAgbXkgJEtLID0gJEsxOwogICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICRLSyA9ICRyTEwtPlskS0tdLT5bX0tORVhUX1NFUV9JVEVNX107CiAgICAgICAgICAgIGxhc3QgaWYgIWRlZmluZWQoJEtLKTsKICAgICAgICAgICAgbGFzdCBpZiAoICRLSyA+PSAkSzIgKTsKICAgICAgICAgICAgbXkgJGRlcHRoX0sgPSAkckxMLT5bJEtLXS0+W19TTEVWRUxfXTsKICAgICAgICAgICAgcmV0dXJuIGlmICggJGRlcHRoX0sgPCAkZGVwdGhfMSApOwogICAgICAgICAgICBuZXh0ICAgaWYgKCAkZGVwdGhfSyA+ICRkZXB0aF8xICk7CiAgICAgICAgICAgIGlmICggJHR5cGVfMSBuZSAnOicgKSB7CiAgICAgICAgICAgICAgICBteSAkdG9rX0sgPSAkckxMLT5bJEtLXS0+W19UT0tFTl9dOwogICAgICAgICAgICAgICAgcmV0dXJuIGlmICggJHRva19LIGVxICc/JyB8fCAkdG9rX0sgZXEgJzonICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgU2xvdyBsb29wIGNoZWNraW5nIGZvciBjZXJ0YWluIGNoYXJhY3RlcnMKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIFRoaXMgaXMgcG90ZW50aWFsbHkgYSBzbG93IHJvdXRpbmUgYW5kIG5vdCBjcml0aWNhbC4KICAgICAgICAjIEZvciBzYWZldHkganVzdCBnaXZlIHVwIGZvciBsYXJnZSBkaWZmZXJlbmNlcy4KICAgICAgICAjIFNlZSB0ZXN0IGZpbGUgJ2luZmluaXRlX2xvb3AudHh0JwogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgcmV0dXJuIGlmICggJEsyIC0gJEsxID4gMjAwICk7CgogICAgICAgIGZvcmVhY2ggbXkgJEsgKCAkSzEgKyAxIC4uICRLMiAtIDEgKSB7CgogICAgICAgICAgICBteSAkZGVwdGhfSyA9ICRyTEwtPlskS10tPltfU0xFVkVMX107CiAgICAgICAgICAgIG5leHQgICBpZiAoICRkZXB0aF9LID4gJGRlcHRoXzEgKTsKICAgICAgICAgICAgcmV0dXJuIGlmICggJGRlcHRoX0sgPCAkZGVwdGhfMSApOyAgICAjIHJlZHVuZGFudCwgY2hlY2tlZCBhYm92ZQogICAgICAgICAgICBteSAkdG9rID0gJHJMTC0+WyRLXS0+W19UT0tFTl9dOwogICAgICAgICAgICByZXR1cm4gaWYgKCAkcmJyZWFrLT57JHRva30gKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDE7CiAgICB9Cn0gIyMgZW5kIGNsb3N1cmUgaW5fc2FtZV9jb250YWluZXJfSwoKc3ViIGJyZWFrX2VxdWFscyB7CgogICAgIyBMb29rIGZvciBhc3NpZ25tZW50IG9wZXJhdG9ycyB0aGF0IGNvdWxkIHVzZSBhIGJyZWFrcG9pbnQuCiAgICAjIEZvciBleGFtcGxlLCBpbiB0aGUgZm9sbG93aW5nIHNuaXBwZXQKICAgICMKICAgICMgICAgJEhPTUUgPSAkRU5We0hPTUV9CiAgICAjICAgICAgfHwgJEVOVntMT0dESVJ9CiAgICAjICAgICAgfHwgJHB3WzddCiAgICAjICAgICAgfHwgZGllICJubyBob21lIGRpcmVjdG9yeSBmb3IgdXNlciAkPCI7CiAgICAjCiAgICAjIHdlIGNvdWxkIGJyZWFrIGF0IHRoZSA9IHRvIGdldCB0aGlzLCB3aGljaCBpcyBhIGxpdHRsZSBuaWNlcjoKICAgICMgICAgJEhPTUUgPQogICAgIyAgICAgICAgICRFTlZ7SE9NRX0KICAgICMgICAgICB8fCAkRU5We0xPR0RJUn0KICAgICMgICAgICB8fCAkcHdbN10KICAgICMgICAgICB8fCBkaWUgIm5vIGhvbWUgZGlyZWN0b3J5IGZvciB1c2VyICQ8IjsKICAgICMKICAgICMgVGhlIGxvZ2ljIGhlcmUgZm9sbG93cyB0aGUgbG9naWMgaW4gc2V0X2xvZ2ljYWxfcGFkZGluZywgd2hpY2gKICAgICMgd2lsbCBhZGQgdGhlIHBhZGRpbmcgaW4gdGhlIHNlY29uZCBsaW5lIHRvIGltcHJvdmUgYWxpZ25tZW50LgogICAgIwogICAgbXkgKCAkc2VsZiwgJHJpX2xlZnQsICRyaV9yaWdodCApID0gQF87CiAgICBteSAkbm1heCA9IEB7JHJpX3JpZ2h0fSAtIDE7CiAgICByZXR1cm4gdW5sZXNzICggJG5tYXggPj0gMiApOwoKICAgICMgc2NhbiB0aGUgbGVmdCBlbmRzIG9mIGZpcnN0IHR3byBsaW5lcwogICAgbXkgJHRva2JlZyA9ICIiOwogICAgbXkgJGRlcHRoX2JlZzsKICAgIGZvciBteSAkbiAoIDEgLi4gMiApIHsKICAgICAgICBteSAkaWwgICAgID0gJHJpX2xlZnQtPlskbl07CiAgICAgICAgbXkgJHR5cGVsICA9ICR0eXBlc190b19nb1skaWxdOwogICAgICAgIG15ICR0b2tlbmwgPSAkdG9rZW5zX3RvX2dvWyRpbF07CgogICAgICAgIG15ICRoYXNfbGVhZGluZ19vcCA9ICggJHRva2VubCA9fiAvXlx3LyApCiAgICAgICAgICA/ICRpc19jaGFpbl9vcGVyYXRvcnskdG9rZW5sfSAgICAjICsgLSAqIC8gOiA/ICYmIHx8CiAgICAgICAgICA6ICRpc19jaGFpbl9vcGVyYXRvcnskdHlwZWx9OyAgICAjIGFuZCwgb3IKICAgICAgICByZXR1cm4gdW5sZXNzICgkaGFzX2xlYWRpbmdfb3ApOwogICAgICAgIGlmICggJG4gPiAxICkgewogICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICB1bmxlc3MgKCAkdG9rZW5sIGVxICR0b2tiZWcKICAgICAgICAgICAgICAgICYmICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpbF0gZXEgJGRlcHRoX2JlZyApOwogICAgICAgIH0KICAgICAgICAkdG9rYmVnICAgID0gJHRva2VubDsKICAgICAgICAkZGVwdGhfYmVnID0gJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGlsXTsKICAgIH0KCiAgICAjIG5vdyBsb29rIGZvciBhbnkgaW50ZXJpb3IgdG9rZW5zIG9mIHRoZSBzYW1lIHR5cGVzCiAgICBteSAkaWwgPSAkcmlfbGVmdC0+WzBdOwogICAgbXkgJGlyID0gJHJpX3JpZ2h0LT5bMF07CgogICAgIyBub3cgbWFrZSBhIGxpc3Qgb2YgYWxsIG5ldyBicmVhayBwb2ludHMKICAgIG15IEBpbnNlcnRfbGlzdDsKICAgIGZvciAoIG15ICRpID0gJGlyIC0gMSA7ICRpID4gJGlsIDsgJGktLSApIHsKICAgICAgICBteSAkdHlwZSA9ICR0eXBlc190b19nb1skaV07CiAgICAgICAgaWYgKCAgICRpc19hc3NpZ25tZW50eyR0eXBlfQogICAgICAgICAgICAmJiAkbmVzdGluZ19kZXB0aF90b19nb1skaV0gZXEgJGRlcHRoX2JlZyApCiAgICAgICAgewogICAgICAgICAgICBpZiAoICR3YW50X2JyZWFrX2JlZm9yZXskdHlwZX0gKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBpbnNlcnRfbGlzdCwgJGkgLSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcHVzaCBAaW5zZXJ0X2xpc3QsICRpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgQnJlYWsgYWZ0ZXIgYSAncmV0dXJuJyBmb2xsb3dlZCBieSBhIGNoYWluIG9mIG9wZXJhdG9ycwogICAgIyAgcmV0dXJuICggJF5PICF+IC93aW4zMnxkb3MvaSApCiAgICAjICAgICYmICggJF5PIG5lICdWTVMnICkKICAgICMgICAgJiYgKCAkXk8gbmUgJ09TMicgKQogICAgIyAgICAmJiAoICReTyBuZSAnTWFjT1MnICk7CiAgICAjIFRvIGdpdmU6CiAgICAjICByZXR1cm4KICAgICMgICAgICAgKCAkXk8gIX4gL3dpbjMyfGRvcy9pICkKICAgICMgICAgJiYgKCAkXk8gbmUgJ1ZNUycgKQogICAgIyAgICAmJiAoICReTyBuZSAnT1MyJyApCiAgICAjICAgICYmICggJF5PIG5lICdNYWNPUycgKTsKICAgIG15ICRpID0gMDsKICAgIGlmICggICAkdHlwZXNfdG9fZ29bJGldIGVxICdrJwogICAgICAgICYmICR0b2tlbnNfdG9fZ29bJGldIGVxICdyZXR1cm4nCiAgICAgICAgJiYgJGlyID4gJGlsCiAgICAgICAgJiYgJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGldIGVxICRkZXB0aF9iZWcgKQogICAgewogICAgICAgIHB1c2ggQGluc2VydF9saXN0LCAkaTsKICAgIH0KCiAgICByZXR1cm4gdW5sZXNzIChAaW5zZXJ0X2xpc3QpOwoKICAgICMgT25lIGZpbmFsIGNoZWNrLi4uCiAgICAjIHNjYW4gc2Vjb25kIGFuZCB0aGlyZCBsaW5lcyBhbmQgYmUgc3VyZSB0aGVyZSBhcmUgbm8gYXNzaWdubWVudHMKICAgICMgd2Ugd2FudCB0byBhdm9pZCBicmVha2luZyBhdCBhbiA9IHRvIG1ha2Ugc29tZXRoaW5nIGxpa2UgdGhpczoKICAgICMgICAgdW5sZXNzICggJGljb24gPQogICAgIyAgICAgICAgICAgJGh0bWxfaWNvbnN7IiR0eXBlLSRzdGF0ZSJ9CiAgICAjICAgICAgICBvciAkaWNvbiA9ICRodG1sX2ljb25zeyR0eXBlfQogICAgIyAgICAgICAgb3IgJGljb24gPSAkaHRtbF9pY29uc3skc3RhdGV9ICkKICAgIGZvciBteSAkbiAoIDEgLi4gMiApIHsKICAgICAgICBteSAkaWwgPSAkcmlfbGVmdC0+WyRuXTsKICAgICAgICBteSAkaXIgPSAkcmlfcmlnaHQtPlskbl07CiAgICAgICAgZm9yZWFjaCBteSAkaSAoICRpbCArIDEgLi4gJGlyICkgewogICAgICAgICAgICBteSAkdHlwZSA9ICR0eXBlc190b19nb1skaV07CiAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgIGlmICggJGlzX2Fzc2lnbm1lbnR7JHR5cGV9CiAgICAgICAgICAgICAgICAmJiAkbmVzdGluZ19kZXB0aF90b19nb1skaV0gZXEgJGRlcHRoX2JlZyApOwogICAgICAgIH0KICAgIH0KCiAgICAjIG9rLCBpbnNlcnQgYW55IG5ldyBicmVhayBwb2ludAogICAgaWYgKEBpbnNlcnRfbGlzdCkgewogICAgICAgICRzZWxmLT5pbnNlcnRfYWRkaXRpb25hbF9icmVha3MoIFxAaW5zZXJ0X2xpc3QsICRyaV9sZWZ0LCAkcmlfcmlnaHQgKTsKICAgIH0KICAgIHJldHVybjsKfQoKeyAgICAjIyBiZWdpbiBjbG9zdXJlIHJlY29tYmluZV9icmVha3BvaW50cwoKICAgICMgVGhpcyByb3V0aW5lIGlzIGNhbGxlZCBvbmNlIHBlciBiYXRjaCB0byBzZWUgaWYgaXQgd291bGQgYmUgYmV0dGVyCiAgICAjIHRvIGNvbWJpbmUgc29tZSBvZiB0aGUgbGluZXMgaW50byB3aGljaCB0aGUgYmF0Y2ggaGFzIGJlZW4gYnJva2VuLgoKICAgIG15ICVpc19hbXBfYW1wOwogICAgbXkgJWlzX3Rlcm5hcnk7CiAgICBteSAlaXNfbWF0aF9vcDsKICAgIG15ICVpc19wbHVzX21pbnVzOwogICAgbXkgJWlzX211bHRfZGl2OwoKICAgIEJFR0lOIHsKCiAgICAgICAgbXkgQHE7CiAgICAgICAgQHEgPSBxdyggJiYgfHwgKTsKICAgICAgICBAaXNfYW1wX2FtcHtAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICAgICBAcSA9IHF3KCA/IDogKTsKICAgICAgICBAaXNfdGVybmFyeXtAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICAgICBAcSA9IHF3KCArIC0gKiAvICk7CiAgICAgICAgQGlzX21hdGhfb3B7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICAgICAgQHEgPSBxdyggKyAtICk7CiAgICAgICAgQGlzX3BsdXNfbWludXN7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICAgICAgQHEgPSBxdyggKiAvICk7CiAgICAgICAgQGlzX211bHRfZGl2e0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CiAgICB9CgogICAgc3ViIERlYnVnX2R1bXBfYnJlYWtwb2ludHMgewoKICAgICAgICAjIERlYnVnIHJvdXRpbmUgdG8gZHVtcCBjdXJyZW50IGJyZWFrcG9pbnRzLi4ubm90IG5vcm1hbGx5IGNhbGxlZAogICAgICAgICMgV2UgYXJlIGdpdmVuIGluZGV4ZXMgdG8gdGhlIGN1cnJlbnQgbGluZXM6CiAgICAgICAgIyAkcmlfYmVnID0gcmVmIHRvIGFycmF5IG9mIEJFR2lubmluZyBpbmRleGVzIG9mIGVhY2ggbGluZQogICAgICAgICMgJHJpX2VuZCA9IHJlZiB0byBhcnJheSBvZiBFTkRpbmcgaW5kZXhlcyBvZiBlYWNoIGxpbmUKICAgICAgICBteSAoICRzZWxmLCAkcmlfYmVnLCAkcmlfZW5kLCAkbXNnICkgPSBAXzsKICAgICAgICBwcmludCBTVERFUlIgIi0tLS1EdW1waW5nIGJyZWFrcG9pbnRzIGZyb206ICRtc2ctLS0tXG4iOwogICAgICAgIGZvciBteSAkbiAoIDAgLi4gQHskcmlfZW5kfSAtIDEgKSB7CiAgICAgICAgICAgIG15ICRpYmVnID0gJHJpX2JlZy0+WyRuXTsKICAgICAgICAgICAgbXkgJGllbmQgPSAkcmlfZW5kLT5bJG5dOwogICAgICAgICAgICBteSAkdGV4dCA9ICIiOwogICAgICAgICAgICBmb3JlYWNoIG15ICRpICggJGliZWcgLi4gJGllbmQgKSB7CiAgICAgICAgICAgICAgICAkdGV4dCAuPSAkdG9rZW5zX3RvX2dvWyRpXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwcmludCBTVERFUlIgIiRuICgkaWJlZzokaWVuZCkgJHRleHRcbiI7CiAgICAgICAgfQogICAgICAgIHByaW50IFNUREVSUiAiLS0tLVxuIjsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3ViIGRlbGV0ZV9vbmVfbGluZV9zZW1pY29sb25zIHsKCiAgICAgICAgbXkgKCAkc2VsZiwgJHJpX2JlZywgJHJpX2VuZCApID0gQF87CiAgICAgICAgbXkgJHJMTCAgICAgICAgICAgICAgICAgPSAkc2VsZi0+W19yTExfXTsKICAgICAgICBteSAkS19vcGVuaW5nX2NvbnRhaW5lciA9ICRzZWxmLT5bX0tfb3BlbmluZ19jb250YWluZXJfXTsKCiAgICAgICAgIyBXYWxrIGRvd24gdGhlIGxpbmVzIG9mIHRoaXMgYmF0Y2ggYW5kIGRlbGV0ZSBhbnkgc2VtaWNvbG9ucwogICAgICAgICMgdGVybWluYXRpbmcgb25lLWxpbmUgYmxvY2tzOwogICAgICAgIG15ICRubWF4ID0gQHskcmlfZW5kfSAtIDE7CgogICAgICAgIGZvcmVhY2ggbXkgJG4gKCAwIC4uICRubWF4ICkgewogICAgICAgICAgICBteSAkaV9iZWcgICAgPSAkcmlfYmVnLT5bJG5dOwogICAgICAgICAgICBteSAkaV9lICAgICAgPSAkcmlfZW5kLT5bJG5dOwogICAgICAgICAgICBteSAkS19iZWcgICAgPSAkS190b19nb1skaV9iZWddOwogICAgICAgICAgICBteSAkS19lICAgICAgPSAkS190b19nb1skaV9lXTsKICAgICAgICAgICAgbXkgJEtfZW5kICAgID0gJEtfZTsKICAgICAgICAgICAgbXkgJHR5cGVfZW5kID0gJHJMTC0+WyRLX2VuZF0tPltfVFlQRV9dOwogICAgICAgICAgICBpZiAoICR0eXBlX2VuZCBlcSAnIycgKSB7CiAgICAgICAgICAgICAgICAkS19lbmQgPSAkc2VsZi0+S19wcmV2aW91c19ub25ibGFuaygkS19lbmQpOwogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCRLX2VuZCkgKSB7ICR0eXBlX2VuZCA9ICRyTEwtPlskS19lbmRdLT5bX1RZUEVfXTsgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHdlIGFyZSBsb29raW5nIGZvciBhIGxpbmUgZW5kaW5nIGluIGNsb3NpbmcgYnJhY2UKICAgICAgICAgICAgbmV4dAogICAgICAgICAgICAgIHVubGVzcyAoICR0eXBlX2VuZCBlcSAnfScgJiYgJHJMTC0+WyRLX2VuZF0tPltfVE9LRU5fXSBlcSAnfScgKTsKCiAgICAgICAgICAgICMgLi4uYW5kIHByZWNlZGVkIGJ5IGEgc2VtaWNvbG9uIG9uIHRoZSBzYW1lIGxpbmUKICAgICAgICAgICAgbXkgJEtfc2VtaWNvbG9uID0gJHNlbGYtPktfcHJldmlvdXNfbm9uYmxhbmsoJEtfZW5kKTsKICAgICAgICAgICAgbmV4dCB1bmxlc3MgZGVmaW5lZCgkS19zZW1pY29sb24pOwogICAgICAgICAgICBteSAkaV9zZW1pY29sb24gPSAkaV9iZWcgKyAoICRLX3NlbWljb2xvbiAtICRLX2JlZyApOwogICAgICAgICAgICBuZXh0IGlmICggJGlfc2VtaWNvbG9uIDw9ICRpX2JlZyApOwogICAgICAgICAgICBuZXh0IHVubGVzcyAoICRyTEwtPlskS19zZW1pY29sb25dLT5bX1RZUEVfXSBlcSAnOycgKTsKCiAgICAgICAgICAgICMgU2FmZXR5IGNoZWNrIC0gc2hvdWxkbid0IGhhcHBlbiAtIG5vdCBjcml0aWNhbAogICAgICAgICAgICAjIFRoaXMgaXMgbm90IHdvcnRoIHRocm93aW5nIGEgRmF1bHQsIGV4Y2VwdCBpbiBERVZFTF9NT0RFCiAgICAgICAgICAgIGlmICggJHR5cGVzX3RvX2dvWyRpX3NlbWljb2xvbl0gbmUgJzsnICkgewogICAgICAgICAgICAgICAgREVWRUxfTU9ERQogICAgICAgICAgICAgICAgICAmJiBGYXVsdCgidW5leHBlY3RlZCB0eXBlIGxvb2tpbmcgZm9yIHNlbWljb2xvbiIpOwogICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyAuLi4gd2l0aCB0aGUgY29ycmVzcG9uZGluZyBvcGVuaW5nIGJyYWNlIG9uIHRoZSBzYW1lIGxpbmUKICAgICAgICAgICAgbXkgJHR5cGVfc2VxdWVuY2UgPSAkckxMLT5bJEtfZW5kXS0+W19UWVBFX1NFUVVFTkNFX107CiAgICAgICAgICAgIG15ICRLX29wZW5pbmcgICAgID0gJEtfb3BlbmluZ19jb250YWluZXItPnskdHlwZV9zZXF1ZW5jZX07CiAgICAgICAgICAgIG5leHQgdW5sZXNzICggZGVmaW5lZCgkS19vcGVuaW5nKSApOwogICAgICAgICAgICBteSAkaV9vcGVuaW5nID0gJGlfYmVnICsgKCAkS19vcGVuaW5nIC0gJEtfYmVnICk7CiAgICAgICAgICAgIG5leHQgaWYgKCAkaV9vcGVuaW5nIDwgJGlfYmVnICk7CgogICAgICAgICAgICAjIC4uLiBhbmQgb25seSBvbmUgc2VtaWNvbG9uIGJldHdlZW4gdGhlc2UgYnJhY2VzCiAgICAgICAgICAgIG15ICRzZW1pY29sb25fY291bnQgPSAwOwogICAgICAgICAgICBmb3JlYWNoIG15ICRLICggJEtfb3BlbmluZyArIDEgLi4gJEtfc2VtaWNvbG9uIC0gMSApIHsKICAgICAgICAgICAgICAgIGlmICggJHJMTC0+WyRLXS0+W19UWVBFX10gZXEgJzsnICkgewogICAgICAgICAgICAgICAgICAgICRzZW1pY29sb25fY291bnQrKzsKICAgICAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIG5leHQgaWYgKCRzZW1pY29sb25fY291bnQpOwoKICAgICAgICAgICAgIyAuLi5vaywgdGhlbiBtYWtlIHRoZSBzZW1pY29sb24gaW52aXNpYmxlCiAgICAgICAgICAgICR0b2tlbnNfdG9fZ29bJGlfc2VtaWNvbG9uXSAgICAgICAgICAgID0gIiI7CiAgICAgICAgICAgICR0b2tlbl9sZW5ndGhzX3RvX2dvWyRpX3NlbWljb2xvbl0gICAgID0gMDsKICAgICAgICAgICAgJHJMTC0+WyRLX3NlbWljb2xvbl0tPltfVE9LRU5fXSAgICAgICAgPSAiIjsKICAgICAgICAgICAgJHJMTC0+WyRLX3NlbWljb2xvbl0tPltfVE9LRU5fTEVOR1RIX10gPSAwOwogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3ViIHJlY29tYmluZV9icmVha3BvaW50cyB7CgogICAgICAgICMgc3ViIHNldF9jb250aW51YXRpb25fYnJlYWtzIGlzIHZlcnkgbGliZXJhbCBpbiBzZXR0aW5nIGxpbmUgYnJlYWtzCiAgICAgICAgIyBmb3IgbG9uZyBsaW5lcywgYWx3YXlzIHNldHRpbmcgYnJlYWtzIGF0IGdvb2QgYnJlYWtwb2ludHMsIGV2ZW4KICAgICAgICAjIHdoZW4gdGhhdCBjcmVhdGVzIHNtYWxsIGxpbmVzLiAgU29tZXRpbWVzIHNtYWxsIGxpbmUgZnJhZ21lbnRzCiAgICAgICAgIyBhcmUgcHJvZHVjZWQgd2hpY2ggd291bGQgbG9vayBiZXR0ZXIgaWYgdGhleSB3ZXJlIGNvbWJpbmVkLgogICAgICAgICMgVGhhdCdzIHRoZSB0YXNrIG9mIHRoaXMgcm91dGluZS4KICAgICAgICAjCiAgICAgICAgIyBXZSBhcmUgZ2l2ZW4gaW5kZXhlcyB0byB0aGUgY3VycmVudCBsaW5lczoKICAgICAgICAjICRyaV9iZWcgPSByZWYgdG8gYXJyYXkgb2YgQkVHaW5uaW5nIGluZGV4ZXMgb2YgZWFjaCBsaW5lCiAgICAgICAgIyAkcmlfZW5kID0gcmVmIHRvIGFycmF5IG9mIEVORGluZyBpbmRleGVzIG9mIGVhY2ggbGluZQogICAgICAgIG15ICggJHNlbGYsICRyaV9iZWcsICRyaV9lbmQgKSA9IEBfOwoKICAgICAgICBteSAkck9wdHNfc2hvcnRfY29uY2F0ZW5hdGlvbl9pdGVtX2xlbmd0aCA9CiAgICAgICAgICAkck9wdHMtPnsnc2hvcnQtY29uY2F0ZW5hdGlvbi1pdGVtLWxlbmd0aCd9OwoKICAgICAgICAjIE1ha2UgYSBsaXN0IG9mIGFsbCBnb29kIGpvaW5pbmcgdG9rZW5zIGJldHdlZW4gdGhlIGxpbmVzCiAgICAgICAgIyBuLTEgYW5kIG4uCiAgICAgICAgbXkgQGpvaW50OwogICAgICAgIG15ICRubWF4ID0gQHskcmlfZW5kfSAtIDE7CiAgICAgICAgZm9yIG15ICRuICggMSAuLiAkbm1heCApIHsKICAgICAgICAgICAgbXkgJGliZWdfMSA9ICRyaV9iZWctPlsgJG4gLSAxIF07CiAgICAgICAgICAgIG15ICRpZW5kXzEgPSAkcmlfZW5kLT5bICRuIC0gMSBdOwogICAgICAgICAgICBteSAkaWVuZF8yID0gJHJpX2VuZC0+WyRuXTsKICAgICAgICAgICAgbXkgJGliZWdfMiA9ICRyaV9iZWctPlskbl07CgogICAgICAgICAgICBteSAoICRpdG9rLCAkaXRva3AsICRpdG9rbSApOwoKICAgICAgICAgICAgZm9yZWFjaCBteSAkaXRlc3QgKCAkaWVuZF8xLCAkaWJlZ18yICkgewogICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAkdHlwZXNfdG9fZ29bJGl0ZXN0XTsKICAgICAgICAgICAgICAgIGlmICggICAkaXNfbWF0aF9vcHskdHlwZX0KICAgICAgICAgICAgICAgICAgICB8fCAkaXNfYW1wX2FtcHskdHlwZX0KICAgICAgICAgICAgICAgICAgICB8fCAkaXNfYXNzaWdubWVudHskdHlwZX0KICAgICAgICAgICAgICAgICAgICB8fCAkdHlwZSBlcSAnOicgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRpdG9rID0gJGl0ZXN0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRqb2ludFskbl0gPSBbJGl0b2tdOwogICAgICAgIH0KCiAgICAgICAgbXkgJG1vcmVfdG9fZG8gPSAxOwoKICAgICAgICAjIFdlIGtlZXAgbG9vcGluZyBvdmVyIGFsbCBvZiB0aGUgbGluZXMgb2YgdGhpcyBiYXRjaAogICAgICAgICMgdW50aWwgdGhlcmUgYXJlIG5vIG1vcmUgcG9zc2libGUgcmVjb21iaW5hdGlvbnMKICAgICAgICBteSAkbm1heF9sYXN0ID0gQHskcmlfZW5kfTsKICAgICAgICBteSAkcmV2ZXJzZSAgID0gMDsKICAgICAgICB3aGlsZSAoJG1vcmVfdG9fZG8pIHsKICAgICAgICAgICAgbXkgJG5fYmVzdCA9IDA7CiAgICAgICAgICAgIG15ICRic19iZXN0OwogICAgICAgICAgICBteSAkbm1heCA9IEB7JHJpX2VuZH0gLSAxOwoKICAgICAgICAgICAgIyBTYWZldHkgY2hlY2sgZm9yIGluZmluaXRlIGxvb3AKICAgICAgICAgICAgdW5sZXNzICggJG5tYXggPCAkbm1heF9sYXN0ICkgewoKICAgICAgICAgICAgICAgICMgU2hvdWxkbid0IGhhcHBlbiBiZWNhdXNlIHNwbGljZSBiZWxvdyBkZWNyZWFzZXMgbm1heCBvbiBlYWNoCiAgICAgICAgICAgICAgICAjIGl0ZXJhdGlvbi4gIEFuIGVycm9yIGNhbiBvbmx5IGJlIGR1ZSB0byBhIHJlY2VudCBwcm9ncmFtbWluZwogICAgICAgICAgICAgICAgIyBjaGFuZ2UuCiAgICAgICAgICAgICAgICBGYXVsdCgiUHJvZ3JhbSBidWctaW5maW5pdGUgbG9vcCBpbiByZWNvbWJpbmUgYnJlYWtwb2ludHNcbiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRubWF4X2xhc3QgID0gJG5tYXg7CiAgICAgICAgICAgICRtb3JlX3RvX2RvID0gMDsKICAgICAgICAgICAgbXkgJHNraXBfU2VjdGlvbl8zOwogICAgICAgICAgICBteSAkbGVhZGluZ19hbXBfY291bnQgPSAwOwogICAgICAgICAgICBteSAkdGhpc19saW5lX2lzX3NlbWljb2xvbl90ZXJtaW5hdGVkOwoKICAgICAgICAgICAgIyBsb29wIG92ZXIgYWxsIHJlbWFpbmluZyBsaW5lcyBpbiB0aGlzIGJhdGNoCiAgICAgICAgICAgIGZvciBteSAkaXRlciAoIDEgLi4gJG5tYXggKSB7CgogICAgICAgICAgICAgICAgIyBhbHRlcm5hdGluZyBzd2VlcCBkaXJlY3Rpb24gZ2l2ZXMgc3ltbWV0cmljIHJlc3VsdHMKICAgICAgICAgICAgICAgICMgZm9yIHJlY29tYmluaW5nIGxpbmVzIHdoaWNoIGV4Y2VlZCB0aGUgbGluZSBsZW5ndGgKICAgICAgICAgICAgICAgICMgc3VjaCBhcyBldmFsIHt7e3suLi4uIH19fX0KICAgICAgICAgICAgICAgIG15ICRuOwogICAgICAgICAgICAgICAgaWYgICAoJHJldmVyc2UpIHsgJG4gPSAxICsgJG5tYXggLSAkaXRlcjsgfQogICAgICAgICAgICAgICAgZWxzZSAgICAgICAgICAgIHsgJG4gPSAkaXRlciB9CgogICAgICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICMgSWYgd2Ugam9pbiB0aGUgY3VycmVudCBwYWlyIG9mIGxpbmVzLAogICAgICAgICAgICAgICAgIyBsaW5lICRuLTEgd2lsbCBiZWNvbWUgdGhlIGxlZnQgcGFydCBvZiB0aGUgam9pbmVkIGxpbmUKICAgICAgICAgICAgICAgICMgbGluZSAkbiB3aWxsIGJlY29tZSB0aGUgcmlnaHQgcGFydCBvZiB0aGUgam9pbmVkIGxpbmUKICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICMgSGVyZSBhcmUgSW5kZXhlcyBvZiB0aGUgZW5kcG9pbnQgdG9rZW5zIG9mIHRoZSB0d28gbGluZXM6CiAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAjICAtLS0tLWxpbmUgJG4tMS0tLSB8IC0tLS0tbGluZSAkbi0tLS0tCiAgICAgICAgICAgICAgICAjICAkaWJlZ18xICAgJGllbmRfMSB8ICRpYmVnXzIgICAkaWVuZF8yCiAgICAgICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICBeCiAgICAgICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAgICAgICAgICAjIFdlIHdhbnQgdG8gZGVjaWRlIGlmIHdlIHNob3VsZCByZW1vdmUgdGhlIGxpbmUgYnJlYWsKICAgICAgICAgICAgICAgICMgYmV0d2VlbiB0aGUgdG9rZW5zIGF0ICRpZW5kXzEgYW5kICRpYmVnXzIKICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICMgV2Ugd2lsbCBhcHBseSBhIG51bWJlciBvZiBhZC1ob2MgdGVzdHMgdG8gc2VlIGlmIGpvaW5pbmcKICAgICAgICAgICAgICAgICMgaGVyZSB3aWxsIGxvb2sgb2suICBUaGUgY29kZSB3aWxsIGp1c3QgaXNzdWUgYSAnbmV4dCcKICAgICAgICAgICAgICAgICMgY29tbWFuZCBpZiB0aGUgam9pbiBkb2Vzbid0IGxvb2sgZ29vZC4gIElmIHdlIGdldCB0aHJvdWdoCiAgICAgICAgICAgICAgICAjIHRoZSBnYXVudGxldCBvZiB0ZXN0cywgdGhlIGxpbmVzIHdpbGwgYmUgcmVjb21iaW5lZC4KICAgICAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAjIGJlZ2lubmluZyBhbmQgZW5kaW5nIHRva2VucyBvZiB0aGUgbGluZXMgd2UgYXJlIHdvcmtpbmcgb24KICAgICAgICAgICAgICAgIG15ICRpYmVnXzEgICAgPSAkcmlfYmVnLT5bICRuIC0gMSBdOwogICAgICAgICAgICAgICAgbXkgJGllbmRfMSAgICA9ICRyaV9lbmQtPlsgJG4gLSAxIF07CiAgICAgICAgICAgICAgICBteSAkaWVuZF8yICAgID0gJHJpX2VuZC0+WyRuXTsKICAgICAgICAgICAgICAgIG15ICRpYmVnXzIgICAgPSAkcmlfYmVnLT5bJG5dOwogICAgICAgICAgICAgICAgbXkgJGliZWdfbm1heCA9ICRyaV9iZWctPlskbm1heF07CgogICAgICAgICAgICAgICAgIyBjb21iaW5lZCBsaW5lIGNhbm5vdCBiZSB0b28gbG9uZwogICAgICAgICAgICAgICAgbXkgJGV4Y2VzcyA9ICRzZWxmLT5leGNlc3NfbGluZV9sZW5ndGgoICRpYmVnXzEsICRpZW5kXzIsIDEgKTsKICAgICAgICAgICAgICAgIG5leHQgaWYgKCAkZXhjZXNzID4gMCApOwoKICAgICAgICAgICAgICAgIG15ICR0eXBlX2llbmRfMSA9ICR0eXBlc190b19nb1skaWVuZF8xXTsKICAgICAgICAgICAgICAgIG15ICR0eXBlX2llbmRfMiA9ICR0eXBlc190b19nb1skaWVuZF8yXTsKICAgICAgICAgICAgICAgIG15ICR0eXBlX2liZWdfMSA9ICR0eXBlc190b19nb1skaWJlZ18xXTsKICAgICAgICAgICAgICAgIG15ICR0eXBlX2liZWdfMiA9ICR0eXBlc190b19nb1skaWJlZ18yXTsKCiAgICAgICAgICAgICAgICAjIHRlcm1pbmFsIHRva2VuIG9mIGxpbmUgMiBpZiBhbnkgc2lkZSBjb21tZW50IGlzIGlnbm9yZWQ6CiAgICAgICAgICAgICAgICBteSAkaWVuZF8ydCAgICAgID0gJGllbmRfMjsKICAgICAgICAgICAgICAgIG15ICR0eXBlX2llbmRfMnQgPSAkdHlwZV9pZW5kXzI7CgogICAgICAgICAgICAgICAgIyBzb21lIGJlZ2lubmluZyBpbmRleGVzIG9mIG90aGVyIGxpbmVzLCB3aGljaCBtYXkgbm90IGV4aXN0CiAgICAgICAgICAgICAgICBteSAkaWJlZ18wID0gJG4gPiAxICAgICAgICAgID8gJHJpX2JlZy0+WyAkbiAtIDIgXSA6IC0xOwogICAgICAgICAgICAgICAgbXkgJGliZWdfMyA9ICRuIDwgJG5tYXggICAgICA/ICRyaV9iZWctPlsgJG4gKyAxIF0gOiAtMTsKICAgICAgICAgICAgICAgIG15ICRpYmVnXzQgPSAkbiArIDIgPD0gJG5tYXggPyAkcmlfYmVnLT5bICRuICsgMiBdIDogLTE7CgogICAgICAgICAgICAgICAgbXkgJGJzX3R3ZWFrID0gMDsKCiAgICAgICAgICAgICAgICAjbXkgJGRlcHRoX2luY3JlYXNlPSggJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGliZWdfMl0gLQogICAgICAgICAgICAgICAgIyAgICAgICAgJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGliZWdfMV0gKTsKCiAgICAgICAgICAgICAgICAwICYmIGRvIHsKICAgICAgICAgICAgICAgICAgICBwcmludCBTVERFUlIKIlJFQ09NQklORTogbj0kbiBpbWlkPSRpZW5kXzEgaWY9JGliZWdfMSB0eXBlPSR0eXBlX2liZWdfMSA9JHRva2Vuc190b19nb1skaWJlZ18xXSBuZXh0X3R5cGU9JHR5cGVfaWJlZ18yIG5leHRfdG9rPSR0b2tlbnNfdG9fZ29bJGliZWdfMl1cbiI7CiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgICMgSWYgbGluZSAkbiBpcyB0aGUgbGFzdCBsaW5lLCB3ZSBzZXQgc29tZSBmbGFncyBhbmQKICAgICAgICAgICAgICAgICMgZG8gYW55IHNwZWNpYWwgY2hlY2tzIGZvciBpdAogICAgICAgICAgICAgICAgaWYgKCAkbiA9PSAkbm1heCApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBhIHRlcm1pbmFsICd7JyBzaG91bGQgc3RheSB3aGVyZSBpdCBpcwogICAgICAgICAgICAgICAgICAgICMgdW5sZXNzIHByZWNlZGVkIGJ5IGEgZmF0IGNvbW1hCiAgICAgICAgICAgICAgICAgICAgbmV4dCBpZiAoICR0eXBlX2liZWdfMiBlcSAneycgJiYgJHR5cGVfaWVuZF8xIG5lICc9PicgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAgICR0eXBlX2llbmRfMiBlcSAnIycKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGllbmRfMiAtICRpYmVnXzIgPj0gMgogICAgICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZXNfdG9fZ29bICRpZW5kXzIgLSAxIF0gZXEgJ2InICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpZW5kXzJ0ICAgICAgPSAkaWVuZF8yIC0gMjsKICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGVfaWVuZF8ydCA9ICR0eXBlc190b19nb1skaWVuZF8ydF07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkdGhpc19saW5lX2lzX3NlbWljb2xvbl90ZXJtaW5hdGVkID0gJHR5cGVfaWVuZF8ydCBlcSAnOyc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICMgUmVjb21iaW5lIFNlY3Rpb24gMDoKICAgICAgICAgICAgICAgICMgRXhhbWluZSB0aGUgc3BlY2lhbCB0b2tlbiBqb2luaW5nIHRoaXMgbGluZSBwYWlyLCBpZiBhbnkuCiAgICAgICAgICAgICAgICAjIFB1dCBhcyBtYW55IHRlc3RzIGluIHRoaXMgc2VjdGlvbiB0byBhdm9pZCBkdXBsaWNhdGUgY29kZSBhbmQKICAgICAgICAgICAgICAgICMgdG8gbWFrZSBmb3JtYXR0aW5nIGluZGVwZW5kZW50IG9mIHdoZXRoZXIgYnJlYWtzIGFyZSB0byB0aGUKICAgICAgICAgICAgICAgICMgbGVmdCBvciByaWdodCBvZiBhbiBvcGVyYXRvci4KICAgICAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICAgICAgICAgbXkgKCRpdG9rKSA9IEB7ICRqb2ludFskbl0gfTsKICAgICAgICAgICAgICAgIGlmICgkaXRvaykgewoKICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBQYXRjaCAtIG1heSBub3QgYmUgbmVjZXNzYXJ5CiAgICAgICAgICAgICAgICAgICAgbXkgJGllbmRfMSA9CiAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlX2llbmRfMSBlcSAnYicKICAgICAgICAgICAgICAgICAgICAgID8gJGllbmRfMSAtIDEKICAgICAgICAgICAgICAgICAgICAgIDogJGllbmRfMTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJGllbmRfMiA9CiAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlX2llbmRfMiBlcSAnYicKICAgICAgICAgICAgICAgICAgICAgID8gJGllbmRfMiAtIDEKICAgICAgICAgICAgICAgICAgICAgIDogJGllbmRfMjsKICAgICAgICAgICAgICAgICAgICAjIyBFTkQgUEFUQ0gKCiAgICAgICAgICAgICAgICAgICAgbXkgJHR5cGUgPSAkdHlwZXNfdG9fZ29bJGl0b2tdOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICR0eXBlIGVxICc6JyApIHsKCiAgICAgICAgICAgICAgICAgICAjIGRvIG5vdCBqb2luIGF0IGEgY29sb24gdW5sZXNzIGl0IGRpc29iZXlzIHRoZSBicmVhayByZXF1ZXN0CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGl0b2sgZXEgJGllbmRfMSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzICR3YW50X2JyZWFrX2JlZm9yZXskdHlwZX07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGVhZGluZ19hbXBfY291bnQrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgaWYgJHdhbnRfYnJlYWtfYmVmb3JleyR0eXBlfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gIyMgZW5kIGlmICc6JwoKICAgICAgICAgICAgICAgICAgICAjIGhhbmRsZSBtYXRoIG9wZXJhdG9ycyArIC0gKiAvCiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkaXNfbWF0aF9vcHskdHlwZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIENvbWJpbmUgdGhlc2UgbGluZXMgaWYgdGhpcyBsaW5lIGlzIGEgc2luZ2xlCiAgICAgICAgICAgICAgICAgICAgICAgICMgbnVtYmVyLCBvciBpZiBpdCBpcyBhIHNob3J0IHRlcm0gd2l0aCBzYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICMgb3BlcmF0b3IgYXMgdGhlIHByZXZpb3VzIGxpbmUuICBGb3IgZXhhbXBsZSwgaW4KICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgZm9sbG93aW5nIGNvZGUgd2Ugd2lsbCBjb21iaW5lIGFsbCBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG9ydCB0ZXJtcyAkQSwgJEIsICRDLCAkRCwgJEUsICRGLCB0b2dldGhlcgogICAgICAgICAgICAgICAgICAgICAgICAjIGluc3RlYWQgb2YgbGVhdmluZyB0aGVtIG9uZSBwZXIgbGluZToKICAgICAgICAgICAgICAgICAgICAgICAgIyAgbXkgJHRpbWUgPQogICAgICAgICAgICAgICAgICAgICAgICAjICAgICRBICogJEIgKiAkQyAqICREICogJEUgKiAkRiAqCiAgICAgICAgICAgICAgICAgICAgICAgICMgICAgKCAyLiAqICRlcHMgKiAkc2lnbWEgKiAkYXJlYSApICoKICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAoIDEuIC8gJHRjb2xkKiozIC0gMS4gLyAkdGhvdCoqMyApOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGNhbiBiZSBpbXBvcnRhbnQgaW4gbWF0aC1pbnRlbnNpdmUgY29kZS4KCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRnb29kX2NvbWJvOwoKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGl0b2twICA9IG1pbiggJGluZXh0X3RvX2dvWyRpdG9rXSwgICRpZW5kXzIgKTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGl0b2twcCA9IG1pbiggJGluZXh0X3RvX2dvWyRpdG9rcF0sICRpZW5kXzIgKTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGl0b2ttICA9IG1heCggJGlwcmV2X3RvX2dvWyRpdG9rXSwgICRpYmVnXzEgKTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGl0b2ttbSA9IG1heCggJGlwcmV2X3RvX2dvWyRpdG9rbV0sICRpYmVnXzEgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgZm9yIGEgbnVtYmVyIG9uIHRoZSByaWdodAogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICR0eXBlc190b19nb1skaXRva3BdIGVxICduJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9rIGlmIG5vdGhpbmcgZWxzZSBvbiByaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkaXRva3AgPT0gJGllbmRfMiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ29vZF9jb21ibyA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBsb29rIG9uZSBtb3JlIHRva2VuIHRvIHJpZ2h0Li4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9rYXkgaWYgbWF0aCBvcGVyYXRvciBvciBzb21lIHRlcm1pbmF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGdvb2RfY29tYm8gPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoICRpdG9rcHAgPT0gJGllbmRfMiApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGlzX21hdGhfb3B7ICR0eXBlc190b19nb1skaXRva3BwXSB9ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICR0eXBlc190b19nb1skaXRva3BwXSA9fiAvXlsjLDtdJC87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgZm9yIGEgbnVtYmVyIG9uIHRoZSBsZWZ0CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISRnb29kX2NvbWJvICYmICR0eXBlc190b19nb1skaXRva21dIGVxICduJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9rYXkgaWYgbm90aGluZyBlbHNlIHRvIGxlZnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGl0b2ttID09ICRpYmVnXzEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGdvb2RfY29tYm8gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlIGxvb2sgb25lIG1vcmUgdG9rZW4gdG8gbGVmdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb2theSBpZiBtYXRoIG9wZXJhdG9yLCBjb21tYSwgb3IgYXNzaWdubWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRnb29kX2NvbWJvID0gKCAkaXRva21tID09ICRpYmVnXzEgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAkaXNfbWF0aF9vcHsgJHR5cGVzX3RvX2dvWyRpdG9rbW1dIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHR5cGVzX3RvX2dvWyRpdG9rbW1dID1+IC9eWyxdJC8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJGlzX2Fzc2lnbm1lbnR7ICR0eXBlc190b19nb1skaXRva21tXSB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIGxvb2sgZm9yIGEgc2luZ2xlIHNob3J0IHRva2VuIGVpdGhlciBzaWRlIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAjIG9wZXJhdG9yCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISRnb29kX2NvbWJvICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgU2xpZ2h0IGFkanVzdG1lbnQgZmFjdG9yIHRvIG1ha2UgcmVzdWx0cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbmRlcGVuZGVudCBvZiBicmVhayBiZWZvcmUgb3IgYWZ0ZXIgb3BlcmF0b3IgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbG9uZyBzdW1tZWQgbGlzdHMuICAoQW4gb3BlcmF0b3IgYW5kIGEgc3BhY2UgbWFrZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0d28gc3BhY2VzKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICR0d28gPSAoICRpdG9rIGVxICRpZW5kXzEgKSA/IDIgOiAwOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRnb29kX2NvbWJvID0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbnVtYmVycyBvciBpZCdzIG9uIGJvdGggc2lkZXMgb2YgdGhpcyBqb2ludAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZXNfdG9fZ29bJGl0b2twXSA9fiAvXltpbl0kLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZXNfdG9fZ29bJGl0b2ttXSA9fiAvXltpbl0kLwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvbmUgb2YgdGhlIHR3byBsaW5lcyBtdXN0IGJlIHNob3J0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vIG1vcmUgdGhhbiAyIG5vbmJsYW5rIHRva2VucyByaWdodCBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGpvaW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpdG9rcHAgPT0gJGllbmRfMgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG9ydAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0b2tlbl9zZXF1ZW5jZV9sZW5ndGgoICRpdG9rcCwgJGllbmRfMiApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwgJHR3byArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyT3B0c19zaG9ydF9jb25jYXRlbmF0aW9uX2l0ZW1fbGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBubyBtb3JlIHRoYW4gMiBub25ibGFuayB0b2tlbnMgbGVmdCBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGpvaW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpdG9rbW0gPT0gJGliZWdfMQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG9ydAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0b2tlbl9zZXF1ZW5jZV9sZW5ndGgoICRpYmVnXzEsICRpdG9rbSApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwgMiAtICR0d28gKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkck9wdHNfc2hvcnRfY29uY2F0ZW5hdGlvbl9pdGVtX2xlbmd0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMga2VlcCBwdXJlIHRlcm1zOyBkb24ndCBtaXggKy0gd2l0aCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpc19wbHVzX21pbnVzeyR0eXBlfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICggICAkaXNfbXVsdF9kaXZ7ICR0eXBlc190b19nb1skaXRva21tXSB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRpc19tdWx0X2RpdnsgJHR5cGVzX3RvX2dvWyRpdG9rcHBdIH0gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICEoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlzX211bHRfZGl2eyR0eXBlfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICggICAkaXNfcGx1c19taW51c3sgJHR5cGVzX3RvX2dvWyRpdG9rbW1dIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJGlzX3BsdXNfbWludXN7ICR0eXBlc190b19nb1skaXRva3BwXSB9ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIGl0IGlzIGFsc28gZ29vZCB0byBjb21iaW5lIGlmIHdlIGNhbiByZWR1Y2UgdG8gMiBsaW5lcwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEkZ29vZF9jb21ibyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGluZGV4IG9uIG90aGVyIGxpbmUgd2hlcmUgc2FtZSB0b2tlbiB3b3VsZCBiZSBpbiBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGxvbmcgY2hhaW4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkaW90aGVyID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAkaXRvayA9PSAkaWVuZF8xICkgPyAkaWVuZF8yIDogJGliZWdfMTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZ29vZF9jb21ibyA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuID09IDIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJG4gPT0gJG5tYXgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHR5cGVzX3RvX2dvWyRpb3RoZXJdIG5lICR0eXBlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyAoJGdvb2RfY29tYm8pOwoKICAgICAgICAgICAgICAgICAgICB9ICMjIGVuZCBtYXRoCgogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJGlzX2FtcF9hbXB7JHR5cGV9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAjI1RCRAogICAgICAgICAgICAgICAgICAgIH0gIyMgZW5kICYmLCB8fAoKICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRpc19hc3NpZ25tZW50eyR0eXBlfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgIyNUQkQKICAgICAgICAgICAgICAgICAgICB9ICMjIGVuZCBhc3NpZ25tZW50CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICMgUmVjb21iaW5lIFNlY3Rpb24gMToKICAgICAgICAgICAgICAgICMgSm9pbiB3ZWxkZWQgbmVzdGVkIGNvbnRhaW5lcnMgaW1tZWRpYXRlbHkKICAgICAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICR0eXBlX3NlcXVlbmNlX3RvX2dvWyRpZW5kXzFdCiAgICAgICAgICAgICAgICAgICAgJiYgJHNlbGYtPndlbGRfbGVuX3JpZ2h0KCAkdHlwZV9zZXF1ZW5jZV90b19nb1skaWVuZF8xXSwKICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGVfaWVuZF8xICkKCiAgICAgICAgICAgICAgICAgICAgfHwgJHR5cGVfc2VxdWVuY2VfdG9fZ29bJGliZWdfMl0gJiYgJHNlbGYtPndlbGRfbGVuX2xlZnQoCiAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlX3NlcXVlbmNlX3RvX2dvWyRpYmVnXzJdLCAkdHlwZV9pYmVnXzIKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkbl9iZXN0ID0gJG47CiAgICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkcmV2ZXJzZSA9IDA7CgogICAgICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICMgUmVjb21iaW5lIFNlY3Rpb24gMjoKICAgICAgICAgICAgICAgICMgRXhhbWluZSB0b2tlbiBhdCAkaWVuZF8xIChyaWdodCBlbmQgb2YgZmlyc3QgbGluZSBvZiBwYWlyKQogICAgICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgICAgICAgICAjIGFuIGlzb2xhdGVkICd9JyBtYXkgam9pbiB3aXRoIGEgJzsnIHRlcm1pbmF0ZWQgc2VnbWVudAogICAgICAgICAgICAgICAgaWYgKCAkdHlwZV9pZW5kXzEgZXEgJ30nICkgewoKICAgICAgICAgICAgICAgICAgICAjIENoZWNrIGZvciBjYXNlcyB3aGVyZSBjb21iaW5pbmcgYSBzZW1pY29sb24gdGVybWluYXRlZAogICAgICAgICAgICAgICAgICAgICMgc3RhdGVtZW50IHdpdGggYSBwcmV2aW91cyBpc29sYXRlZCBjbG9zaW5nIHBhcmVuIHdpbGwKICAgICAgICAgICAgICAgICAgICAjIGFsbG93IHRoZSBjb21iaW5lZCBsaW5lIHRvIGJlIG91dGRlbnRlZC4gIFRoaXMgaXMKICAgICAgICAgICAgICAgICAgICAjIGdlbmVyYWxseSBhIGdvb2QgbW92ZS4gIEZvciBleGFtcGxlLCB3ZSBjYW4gam9pbiB1cAogICAgICAgICAgICAgICAgICAgICMgdGhlIGxhc3QgdHdvIGxpbmVzIGhlcmU6CiAgICAgICAgICAgICAgICAgICAgIyAgKAogICAgICAgICAgICAgICAgICAgICMgICAgICAkZGV2LCAgJGlubywgICAkbW9kZSwgICRubGluaywgJHVpZCwgICAgICRnaWQsICRyZGV2LAogICAgICAgICAgICAgICAgICAgICMgICAgICAkc2l6ZSwgJGF0aW1lLCAkbXRpbWUsICRjdGltZSwgJGJsa3NpemUsICRibG9ja3MKICAgICAgICAgICAgICAgICAgICAjICAgICkKICAgICAgICAgICAgICAgICAgICAjICAgID0gc3RhdCgkZmlsZSk7CiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgdG8gZ2V0OgogICAgICAgICAgICAgICAgICAgICMgICgKICAgICAgICAgICAgICAgICAgICAjICAgICAgJGRldiwgICRpbm8sICAgJG1vZGUsICAkbmxpbmssICR1aWQsICAgICAkZ2lkLCAkcmRldiwKICAgICAgICAgICAgICAgICAgICAjICAgICAgJHNpemUsICRhdGltZSwgJG10aW1lLCAkY3RpbWUsICRibGtzaXplLCAkYmxvY2tzCiAgICAgICAgICAgICAgICAgICAgIyAgKSA9IHN0YXQoJGZpbGUpOwogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIHdoaWNoIG1ha2VzIHRoZSBwYXJlbnMgbGluZSB1cC4KICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBBbm90aGVyIGV4YW1wbGUsIGZyb20gSm9lIE1hdGFyYXp6bywgcHJvYmFibHkgbG9va3MgYmVzdAogICAgICAgICAgICAgICAgICAgICMgd2l0aCB0aGUgJ29yJyBjbGF1c2UgYXBwZW5kZWQgdG8gdGhlIHRyYWlsaW5nIHBhcmVuOgogICAgICAgICAgICAgICAgICAgICMgICRzZWxmLT5zb21lX21ldGhvZCgKICAgICAgICAgICAgICAgICAgICAjICAgICAgUEFSQU0xID0+ICdmb28nLAogICAgICAgICAgICAgICAgICAgICMgICAgICBQQVJBTTIgPT4gJ2JhcicKICAgICAgICAgICAgICAgICAgICAjICApIG9yIGRpZSAiU29tZV9tZXRob2QgZGlkbid0IHdvcmsiOwogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIEJ1dCB3ZSBkbyBub3Qgd2FudCB0byBkbyB0aGlzIGZvciBzb21ldGhpbmcgbGlrZSB0aGUgLWxwCiAgICAgICAgICAgICAgICAgICAgIyBvcHRpb24gd2hlcmUgdGhlIHBhcmVuIGlzIG5vdCBvdXRkZW50YWJsZSBiZWNhdXNlIHRoZQogICAgICAgICAgICAgICAgICAgICMgdHJhaWxpbmcgY2xhdXNlIHdpbGwgYmUgZmFyIHRvIHRoZSByaWdodC4KICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBUaGUgbG9naWMgaGVyZSBpcyBzeW5jaHJvbml6ZWQgd2l0aCB0aGUgbG9naWMgaW4gc3ViCiAgICAgICAgICAgICAgICAgICAgIyBzdWIgc2V0X2FkanVzdGVkX2luZGVudGF0aW9uLCB3aGljaCBhY3R1YWxseSBkb2VzCiAgICAgICAgICAgICAgICAgICAgIyB0aGUgb3V0ZGVudGluZy4KICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgJHNraXBfU2VjdGlvbl8zIHx8PSAkdGhpc19saW5lX2lzX3NlbWljb2xvbl90ZXJtaW5hdGVkCgogICAgICAgICAgICAgICAgICAgICAgIyBvbmx5IG9uZSB0b2tlbiBvbiBsYXN0IGxpbmUKICAgICAgICAgICAgICAgICAgICAgICYmICRpYmVnXzEgPT0gJGllbmRfMQoKICAgICAgICAgICAgICAgICAgICAgICMgbXVzdCBiZSBzdHJ1Y3R1cmFsIHBhcmVuCiAgICAgICAgICAgICAgICAgICAgICAmJiAkdG9rZW5zX3RvX2dvWyRpZW5kXzFdIGVxICcpJwoKICAgICAgICAgICAgICAgICAgICAgICMgc3R5bGUgbXVzdCBhbGxvdyBvdXRkZW50aW5nLAogICAgICAgICAgICAgICAgICAgICAgJiYgISRjbG9zaW5nX3Rva2VuX2luZGVudGF0aW9ueycpJ30KCiAgICAgICAgICAgICAgICAgICAgICAjIG9ubHkgbGVhZGluZyAnJiYnLCAnfHwnLCBhbmQgJzonIGlmIG5vIG90aGVycyBzZWVuCiAgICAgICAgICAgICAgICAgICAgICAjIChidXQgbm90ZTogb3VyIGNvdW50IG1hZGUgYmVsb3cgY291bGQgYmUgd3JvbmcKICAgICAgICAgICAgICAgICAgICAgICMgZHVlIHRvIGludGVydmVuaW5nIGNvbW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAgJiYgKCAkbGVhZGluZ19hbXBfY291bnQgPT0gMAogICAgICAgICAgICAgICAgICAgICAgICB8fCAkdHlwZV9pYmVnXzIgIX4gL14oOnxcJlwmfFx8XHwpJC8gKQoKICAgICAgICAgICAgICAgICAgICAgICMgYnV0IGxlYWRpbmcgY29sb25zIHByb2JhYmx5IGxpbmUgdXAgd2l0aCBhCiAgICAgICAgICAgICAgICAgICAgICAjIHByZXZpb3VzIGNvbG9uIG9yIHF1ZXN0aW9uIChjb3VudCBjb3VsZCBiZSB3cm9uZykuCiAgICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZV9pYmVnXzIgbmUgJzonCgogICAgICAgICAgICAgICAgICAgICAgIyBvbmx5IG9uZSBzdGVwIGluIGRlcHRoIGFsbG93ZWQuICB0aGlzIGxpbmUgbXVzdCBub3QKICAgICAgICAgICAgICAgICAgICAgICMgYmVnaW4gd2l0aCBhICcpJyBpdHNlbGYuCiAgICAgICAgICAgICAgICAgICAgICAmJiAoICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpZW5kXzFdID09CiAgICAgICAgICAgICAgICAgICAgICAgICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpZW5kXzJdICsgMSApOwoKICAgICAgICAgICAgICAgICAgICAjIFlWRVMgcGF0Y2ggMiBvZiAyOgogICAgICAgICAgICAgICAgICAgICMgQWxsb3cgY3VkZGxlZCBldmFsIGNoYWlucywgbGlrZSB0aGlzOgogICAgICAgICAgICAgICAgICAgICMgICBldmFsIHsKICAgICAgICAgICAgICAgICAgICAjICAgICAgICNTVFVGRjsKICAgICAgICAgICAgICAgICAgICAjICAgICAgIDE7ICMgcmV0dXJuIHRydWUKICAgICAgICAgICAgICAgICAgICAjICAgfSBvciBkbyB7CiAgICAgICAgICAgICAgICAgICAgIyAgICAgICAjaGFuZGxlIGVycm9yCiAgICAgICAgICAgICAgICAgICAgIyAgIH07CiAgICAgICAgICAgICAgICAgICAgIyBUaGlzIHBhdGNoIHdvcmtzIHRvZ2V0aGVyIHdpdGggYSBwYXRjaCBpbgogICAgICAgICAgICAgICAgICAgICMgc2V0dGluZyBhZGp1c3RlZCBpbmRlbnRhdGlvbiAod2hlcmUgdGhlIGNsb3NpbmcgZXZhbAogICAgICAgICAgICAgICAgICAgICMgYnJhY2UgaXMgb3V0ZGVudGVkIGlmIHBvc3NpYmxlKS4KICAgICAgICAgICAgICAgICAgICAjIFRoZSBwcm9ibGVtIGlzIHRoYXQgYW4gJ2V2YWwnIGJsb2NrIGhhcyBjb250aW51YXRpb24KICAgICAgICAgICAgICAgICAgICAjIGluZGVudGF0aW9uIGFuZCBpdCBsb29rcyBiZXR0ZXIgdG8gdW5kbyBpdCBpbiBzb21lCiAgICAgICAgICAgICAgICAgICAgIyBjYXNlcy4gIElmIHdlIGRvIG5vdCB1c2UgdGhpcyBwYXRjaCB3ZSB3b3VsZCBnZXQ6CiAgICAgICAgICAgICAgICAgICAgIyAgIGV2YWwgewogICAgICAgICAgICAgICAgICAgICMgICAgICAgI1NUVUZGOwogICAgICAgICAgICAgICAgICAgICMgICAgICAgMTsgIyByZXR1cm4gdHJ1ZQogICAgICAgICAgICAgICAgICAgICMgICAgICAgfQogICAgICAgICAgICAgICAgICAgICMgICAgICAgb3IgZG8gewogICAgICAgICAgICAgICAgICAgICMgICAgICAgI2hhbmRsZSBlcnJvcgogICAgICAgICAgICAgICAgICAgICMgICAgIH07CiAgICAgICAgICAgICAgICAgICAgIyBUaGUgYWx0ZXJuYXRpdmUsIGZvciB1bmN1ZGRsZWQgc3R5bGUsIGlzIHRvIGNyZWF0ZQogICAgICAgICAgICAgICAgICAgICMgYSBwYXRjaCBpbiBzZXRfYWRqdXN0ZWRfaW5kZW50YXRpb24gd2hpY2ggdW5kb2VzCiAgICAgICAgICAgICAgICAgICAgIyB0aGUgaW5kZW50YXRpb24gb2YgYSBsZWFkaW5nIGxpbmUgbGlrZSAnb3IgZG8geycuCiAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGRvZXNuJ3Qgd29yayB3ZWxsIHdpdGggLWljYiB0aHJvdWdoCiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAkYmxvY2tfdHlwZV90b19nb1skaWVuZF8xXSBlcSAnZXZhbCcKICAgICAgICAgICAgICAgICAgICAgICAgJiYgISRyT3B0cy0+eydsaW5lLXVwLXBhcmVudGhlc2VzJ30KICAgICAgICAgICAgICAgICAgICAgICAgJiYgISRyT3B0cy0+eydpbmRlbnQtY2xvc2luZy1icmFjZSd9CiAgICAgICAgICAgICAgICAgICAgICAgICYmICR0b2tlbnNfdG9fZ29bJGllbmRfMl0gZXEgJ3snCiAgICAgICAgICAgICAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICggJHR5cGVfaWJlZ18yID1+IC9eKHxcJlwmfFx8XHwpJC8gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCAgICR0eXBlX2liZWdfMiBlcSAnaycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkaXNfYW5kX29yeyAkdG9rZW5zX3RvX2dvWyRpYmVnXzJdIH0gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJGlzX2lmX3VubGVzc3sgJHRva2Vuc190b19nb1skaWJlZ18yXSB9CiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRza2lwX1NlY3Rpb25fMyB8fD0gMTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIG5leHQKICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyAoCiAgICAgICAgICAgICAgICAgICAgICAgICRza2lwX1NlY3Rpb25fMwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBoYW5kbGUgJy4nIGFuZCAnPycgc3BlY2lhbGx5IGJlbG93CiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICggJHR5cGVfaWJlZ18yID1+IC9eW1wuXD9dJC8gKQogICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBlbHNpZiAoICR0eXBlX2llbmRfMSBlcSAneycgKSB7CgogICAgICAgICAgICAgICAgICAgICMgWVZFUwogICAgICAgICAgICAgICAgICAgICMgaG9ub3IgYnJlYWtzIGF0IG9wZW5pbmcgYnJhY2UKICAgICAgICAgICAgICAgICAgICAjIEFkZGVkIHRvIHByZXZlbnQgcmVjb21iaW5pbmcgc29tZXRoaW5nIGxpa2UgdGhpczoKICAgICAgICAgICAgICAgICAgICAjICB9IHx8IGV2YWwgeyBwYWNrYWdlIG1haW47CiAgICAgICAgICAgICAgICAgICAgbmV4dCBpZiAkZm9yY2VkX2JyZWFrcG9pbnRfdG9fZ29bJGllbmRfMV07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBkbyBub3QgcmVjb21iaW5lIGxpbmVzIHdpdGggZW5kaW5nICYmLCB8fCwKICAgICAgICAgICAgICAgIGVsc2lmICggJGlzX2FtcF9hbXB7JHR5cGVfaWVuZF8xfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyAkd2FudF9icmVha19iZWZvcmV7JHR5cGVfaWVuZF8xfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIElkZW50aWZ5IGFuZCByZWNvbWJpbmUgYSBicm9rZW4gPy86IGNoYWluCiAgICAgICAgICAgICAgICBlbHNpZiAoICR0eXBlX2llbmRfMSBlcSAnPycgKSB7CgogICAgICAgICAgICAgICAgICAgICMgRG8gbm90IHJlY29tYmluZSBkaWZmZXJlbnQgbGV2ZWxzCiAgICAgICAgICAgICAgICAgICAgbmV4dAogICAgICAgICAgICAgICAgICAgICAgaWYgKCAkbGV2ZWxzX3RvX2dvWyRpYmVnXzFdIG5lICRsZXZlbHNfdG9fZ29bJGliZWdfMl0gKTsKCiAgICAgICAgICAgICAgICAgICAgIyBkbyBub3QgcmVjb21iaW5lIHVubGVzcyBuZXh0IGxpbmUgZW5kcyBpbiA6CiAgICAgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3MgJHR5cGVfaWVuZF8yIGVxICc6JzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGZvciBsaW5lcyBlbmRpbmcgaW4gYSBjb21tYS4uLgogICAgICAgICAgICAgICAgZWxzaWYgKCAkdHlwZV9pZW5kXzEgZXEgJywnICkgewoKICAgICAgICAgICAgICAgICAgICAjIERvIG5vdCByZWNvbWJpbmUgYXQgY29tbWEgd2hpY2ggaXMgZm9sbG93aW5nIHRoZQogICAgICAgICAgICAgICAgICAgICMgaW5wdXQgYmlhcy4KICAgICAgICAgICAgICAgICAgICAjIFRPRE86IG1pZ2h0IGJlIGJlc3QgdG8gbWFrZSBhIHNwZWNpYWwgZmxhZwogICAgICAgICAgICAgICAgICAgIG5leHQgaWYgKCAkb2xkX2JyZWFrcG9pbnRfdG9fZ29bJGllbmRfMV0gKTsKCiAgICAgICAgICAgICAgICAgIyBhbiBpc29sYXRlZCAnfSwnIG1heSBqb2luIHdpdGggYW4gaWRlbnRpZmllciArICc7JwogICAgICAgICAgICAgICAgICMgdGhpcyBpcyB1c2VmdWwgZm9yIHRoZSBjbGFzcyBvZiBhICdibGVzcycgc3RhdGVtZW50IChibGVzcy50KQogICAgICAgICAgICAgICAgICAgIGlmICggICAkdHlwZV9pYmVnXzEgZXEgJ30nCiAgICAgICAgICAgICAgICAgICAgICAgICYmICR0eXBlX2liZWdfMiBlcSAnaScgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dAogICAgICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyAoICggJGliZWdfMSA9PSAoICRpZW5kXzEgLSAxICkgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAkaWVuZF8yID09ICggJGliZWdfMiArIDEgKSApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdGhpc19saW5lX2lzX3NlbWljb2xvbl90ZXJtaW5hdGVkICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIG92ZXJyaWRlIGJyZWFrcG9pbnQKICAgICAgICAgICAgICAgICAgICAgICAgJGZvcmNlZF9icmVha3BvaW50X3RvX2dvWyRpZW5kXzFdID0gMDsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgYnV0IG90aGVyd2lzZSAuLgogICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBkbyBub3QgcmVjb21iaW5lIGFmdGVyIGEgY29tbWEgdW5sZXNzIHRoaXMgd2lsbCBsZWF2ZQogICAgICAgICAgICAgICAgICAgICAgICAjIGp1c3QgMSBtb3JlIGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCAkbiArIDEgPj0gJG5tYXggKTsKCiAgICAgICAgICAgICAgICAgICAgIyBkbyBub3QgcmVjb21iaW5lIGlmIHRoZXJlIGlzIGEgY2hhbmdlIGluIGluZGVudGF0aW9uIGRlcHRoCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGV2ZWxzX3RvX2dvWyRpZW5kXzFdICE9ICRsZXZlbHNfdG9fZ29bJGllbmRfMl0gKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgZG8gbm90IHJlY29tYmluZSBhICJjb21wbGV4IGV4cHJlc3Npb24iIGFmdGVyIGEKICAgICAgICAgICAgICAgICAgICAgICAgIyBjb21tYS4gICJjb21wbGV4IiBtZWFucyBubyBwYXJlbnMuCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRzYXdfcGFyZW47CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGlpICggJGliZWdfMiAuLiAkaWVuZF8yICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkdG9rZW5zX3RvX2dvWyRpaV0gZXEgJygnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzYXdfcGFyZW4gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBpZiAkc2F3X3BhcmVuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIG9wZW5pbmcgcGFyZW4uLgogICAgICAgICAgICAgICAgZWxzaWYgKCAkdHlwZV9pZW5kXzEgZXEgJygnICkgewoKICAgICAgICAgICAgICAgICAgICAjIE5vIGxvbmdlciBkb2luZyB0aGlzCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZWxzaWYgKCAkdHlwZV9pZW5kXzEgZXEgJyknICkgewoKICAgICAgICAgICAgICAgICAgICAjIE5vIGxvbmdlciBkb2luZyB0aGlzCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBrZWVwIGEgdGVybWluYWwgZm9yLXNlbWljb2xvbgogICAgICAgICAgICAgICAgZWxzaWYgKCAkdHlwZV9pZW5kXzEgZXEgJ2YnICkgewogICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBpZiAnPScgYXQgZW5kIG9mIGxpbmUgLi4uCiAgICAgICAgICAgICAgICBlbHNpZiAoICRpc19hc3NpZ25tZW50eyR0eXBlX2llbmRfMX0gKSB7CgogICAgICAgICAgICAgICAgICAgICMga2VlcCBicmVhayBhZnRlciA9IGlmIGl0IHdhcyBpbiBpbnB1dCBzdHJlYW0KICAgICAgICAgICAgICAgICAgICAjIHRoaXMgaGVscHMgcHJldmVudCAnYmxpbmtlcnMnCiAgICAgICAgICAgICAgICAgICAgbmV4dCBpZiAkb2xkX2JyZWFrcG9pbnRfdG9fZ29bJGllbmRfMV0KCiAgICAgICAgICAgICAgICAgICAgICAjIGRvbid0IHN0cmFuZCBhbiBpc29sYXRlZCAnPScKICAgICAgICAgICAgICAgICAgICAgICYmICRpZW5kXzEgIT0gJGliZWdfMTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJGlzX3Nob3J0X3F1b3RlID0KICAgICAgICAgICAgICAgICAgICAgICggICAgICAkdHlwZV9pYmVnXzIgZXEgJ1EnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGliZWdfMiA9PSAkaWVuZF8yCiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdG9rZW5fc2VxdWVuY2VfbGVuZ3RoKCAkaWJlZ18yLCAkaWJlZ18yICkgPAogICAgICAgICAgICAgICAgICAgICAgICAgICRyT3B0c19zaG9ydF9jb25jYXRlbmF0aW9uX2l0ZW1fbGVuZ3RoICk7CiAgICAgICAgICAgICAgICAgICAgbXkgJGlzX3Rlcm5hcnkgPQogICAgICAgICAgICAgICAgICAgICAgKCAkdHlwZV9pYmVnXzEgZXEgJz8nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAkaWJlZ18zID49IDAgJiYgJHR5cGVzX3RvX2dvWyRpYmVnXzNdIGVxICc6JyApICk7CgogICAgICAgICAgICAgICAgICAgICMgYWx3YXlzIGpvaW4gYW4gaXNvbGF0ZWQgJz0nLCBhIHNob3J0IHF1b3RlLCBvciBpZiB0aGlzCiAgICAgICAgICAgICAgICAgICAgIyB3aWxsIHB1dCA/LzogYXQgc3RhcnQgb2YgYWRqYWNlbnQgbGluZXMKICAgICAgICAgICAgICAgICAgICBpZiAoICAgJGliZWdfMSAhPSAkaWVuZF8xCiAgICAgICAgICAgICAgICAgICAgICAgICYmICEkaXNfc2hvcnRfcXVvdGUKICAgICAgICAgICAgICAgICAgICAgICAgJiYgISRpc190ZXJuYXJ5ICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQKICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHVubGVzcyB3ZSBjYW4gcmVkdWNlIHRoaXMgdG8gdHdvIGxpbmVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5tYXggPCAkbiArIDIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvciB0aHJlZSBsaW5lcywgdGhlIGxhc3Qgd2l0aCBhIGxlYWRpbmcgc2VtaWNvbG9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCAgICRubWF4ID09ICRuICsgMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZXNfdG9fZ29bJGliZWdfbm1heF0gZXEgJzsnICkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvciB0aGUgbmV4dCBsaW5lIGVuZHMgd2l0aCBhIGhlcmUgZG9jCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHR5cGVfaWVuZF8yIGVxICdoJwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgdGhlIG5leHQgbGluZSBlbmRzIGluIGFuIG9wZW4gcGFyZW4gb3IgYnJhY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYW5kIHRoZSBicmVhayBoYXNuJ3QgYmVlbiBmb3JjZWQgW2RpbWEudF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoICAhJGZvcmNlZF9icmVha3BvaW50X3RvX2dvWyRpZW5kXzFdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICR0eXBlX2llbmRfMiBlcSAneycgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZG8gbm90IHJlY29tYmluZSBpZiB0aGUgdHdvIGxpbmVzIG1pZ2h0IGFsaWduIHdlbGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGhpcyBpcyBhIHZlcnkgYXBwcm94aW1hdGUgdGVzdCBmb3IgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBSVCMxMjc2MzMgLSB0aGUgbGVhZGluZyB0b2tlbnMgYXJlIG5vdCBvcGVyYXRvcnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICR0eXBlX2liZWdfMiBuZSAkdG9rZW5zX3RvX2dvWyRpYmVnXzJdICkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvciB0aGV5IGFyZSBkaWZmZXJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoICAgJGliZWdfMyA+PSAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICR0eXBlX2liZWdfMiBuZSAkdHlwZXNfdG9fZ29bJGliZWdfM10gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBSZWNvbWJpbmUgaWYgd2UgY2FuIG1ha2UgdHdvIGxpbmVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbm1heCA+PSAkbiArIDIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIC1scCB1c2VycyBvZnRlbiBwcmVmZXIgdGhpczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIG15ICR0aXRsZSA9IGZ1bmN0aW9uKCRlbnYsICRlbnYsICRzeXNhcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgImJ1YmJhIEJvcnJvd2VyIEVudHJ5Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICBzbyB3ZSB3aWxsIHJlY29tYmluZSBpZiAtbHAgaXMgdXNlZCB3ZSBoYXZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICBlbmRpbmcgY29tbWEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICggICEkck9wdHNfbGluZV91cF9wYXJlbnRoZXNlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICR0eXBlX2llbmRfMiBuZSAnLCcgKQogICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvdGhlcndpc2UsIHNjYW4gdGhlIHJocyBsaW5lIHVwIHRvIGxhc3QgdG9rZW4gZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY29tcGxleGl0eS4gIE5vdGUgdGhhdCB3ZSBhcmUgbm90IGNvdW50aW5nIHRoZSBsYXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdG9rZW4gaW4gY2FzZSBpdCBpcyBhbiBvcGVuaW5nIHBhcmVuLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHR2ICAgID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRkZXB0aCA9ICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpYmVnXzJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkaSAoICRpYmVnXzIgKyAxIC4uICRpZW5kXzIgLSAxICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGldICE9ICRkZXB0aCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR2Kys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgaWYgKCAkdHYgPiAxICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZXB0aCA9ICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAjIG9rIHRvIHJlY29tYmluZSBpZiBubyBsZXZlbCBjaGFuZ2VzIGJlZm9yZSBsYXN0IHRva2VuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICR0diA+IDAgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlLCBkbyBub3QgcmVjb21iaW5lIGlmIG1vcmUgdGhhbiB0d28KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGxldmVsIGNoYW5nZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBpZiAoICR0diA+IDEgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgdG90YWwgY29tcGxleGl0eSBvZiB0aGUgdHdvIGFkamFjZW50IGxpbmVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGhhdCB3aWxsIG9jY3VyIGlmIHdlIGRvIHRoaXMgam9pbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpc3RvcCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICRuIDwgJG5tYXggKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAkcmlfZW5kLT5bICRuICsgMSBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRpZW5kXzI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkaSAoICRpZW5kXzIgLi4gJGlzdG9wICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpXSAhPSAkZGVwdGggKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHYrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgaWYgKCAkdHYgPiAyICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRlcHRoID0gJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgZG8gbm90IHJlY29tYmluZSBpZiB0b3RhbCBpcyBtb3JlIHRoYW4gMiBsZXZlbCBjaGFuZ2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBpZiAoICR0diA+IDIgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgdW5sZXNzICggJHRva2Vuc190b19nb1skaWJlZ18yXSA9fiAvXltce1woXFtdJC8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmb3JjZWRfYnJlYWtwb2ludF90b19nb1skaWVuZF8xXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZm9yIGtleXdvcmRzLi4KICAgICAgICAgICAgICAgIGVsc2lmICggJHR5cGVfaWVuZF8xIGVxICdrJyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBtYWtlIG1ham9yIGNvbnRyb2wga2V5d29yZHMgc3RhbmQgb3V0CiAgICAgICAgICAgICAgICAgICAgIyAocmVjb21iaW5lLnQpCiAgICAgICAgICAgICAgICAgICAgbmV4dAogICAgICAgICAgICAgICAgICAgICAgaWYgKAoKICAgICAgICAgICAgICAgICAgICAgICAgIy9eKGxhc3R8bmV4dHxyZWRvfHJldHVybikkLwogICAgICAgICAgICAgICAgICAgICAgICAkaXNfbGFzdF9uZXh0X3JlZG9fcmV0dXJueyAkdG9rZW5zX3RvX2dvWyRpZW5kXzFdIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgYnV0IG9ubHkgaWYgZm9sbG93ZWQgYnkgbXVsdGlwbGUgbGluZXMKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJG4gPCAkbm1heAogICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkaXNfYW5kX29yeyAkdG9rZW5zX3RvX2dvWyRpZW5kXzFdIH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQKICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgJHdhbnRfYnJlYWtfYmVmb3JleyAkdG9rZW5zX3RvX2dvWyRpZW5kXzFdIH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAgICAjIFJlY29tYmluZSBTZWN0aW9uIDM6CiAgICAgICAgICAgICAgICAjIEV4YW1pbmUgdG9rZW4gYXQgJGliZWdfMiAobGVmdCBlbmQgb2Ygc2Vjb25kIGxpbmUgb2YgcGFpcikKICAgICAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICAgICAgICAgIyBqb2luIGxpbmVzIGlkZW50aWZpZWQgYWJvdmUgYXMgY2FwYWJsZSBvZgogICAgICAgICAgICAgICAgIyBjYXVzaW5nIGFuIG91dGRlbnRlZCBsaW5lIHdpdGggbGVhZGluZyBjbG9zaW5nIHBhcmVuCiAgICAgICAgICAgICAgICAjIE5vdGUgdGhhdCB3ZSBhcmUgc2tpcHBpbmcgdGhlIHJlc3Qgb2YgdGhpcyBzZWN0aW9uCiAgICAgICAgICAgICAgICAjIGFuZCB0aGUgcmVzdCBvZiB0aGUgbG9vcCB0byBkbyB0aGUgam9pbgogICAgICAgICAgICAgICAgaWYgKCRza2lwX1NlY3Rpb25fMykgewogICAgICAgICAgICAgICAgICAgICRmb3JjZWRfYnJlYWtwb2ludF90b19nb1skaWVuZF8xXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgJG5fYmVzdCA9ICRuOwogICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBoYW5kbGUgbGluZXMgd2l0aCBsZWFkaW5nICYmLCB8fAogICAgICAgICAgICAgICAgZWxzaWYgKCAkaXNfYW1wX2FtcHskdHlwZV9pYmVnXzJ9ICkgewoKICAgICAgICAgICAgICAgICAgICAkbGVhZGluZ19hbXBfY291bnQrKzsKCiAgICAgICAgICAgICAgICAgICAgIyBvayB0byByZWNvbWJpbmUgaWYgaXQgZm9sbG93cyBhID8gb3IgOgogICAgICAgICAgICAgICAgICAgICMgYW5kIGlzIGZvbGxvd2VkIGJ5IGFuIG9wZW4gcGFyZW4uLgogICAgICAgICAgICAgICAgICAgIG15ICRvayA9CiAgICAgICAgICAgICAgICAgICAgICAoICAgICAgJGlzX3Rlcm5hcnl7JHR5cGVfaWJlZ18xfQogICAgICAgICAgICAgICAgICAgICAgICAgICYmICR0b2tlbnNfdG9fZ29bJGllbmRfMl0gZXEgJygnICkKCiAgICAgICAgICAgICAgICAgICAgIyBvciBpcyBmb2xsb3dlZCBieSBhID8gb3IgOiBhdCBzYW1lIGRlcHRoCiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgV2UgYXJlIGxvb2tpbmcgZm9yIHNvbWV0aGluZyBsaWtlIHRoaXMuIFdlIGNhbgogICAgICAgICAgICAgICAgICAgICMgcmVjb21iaW5lIHRoZSAmJiBsaW5lIHdpdGggdGhlIGxpbmUgYWJvdmUgdG8gbWFrZSB0aGUKICAgICAgICAgICAgICAgICAgICAjIHN0cnVjdHVyZSBtb3JlIGNsZWFyOgogICAgICAgICAgICAgICAgICAgICMgIHJldHVybgogICAgICAgICAgICAgICAgICAgICMgICAgZXhpc3RzICRHLT57QXR0cn0tPntWfQogICAgICAgICAgICAgICAgICAgICMgICAgJiYgZXhpc3RzICRHLT57QXR0cn0tPntWfS0+eyR1fQogICAgICAgICAgICAgICAgICAgICMgICAgPyAleyAkRy0+e0F0dHJ9LT57Vn0tPnskdX0gfQogICAgICAgICAgICAgICAgICAgICMgICAgOiAoKTsKICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBXZSBzaG91bGQgcHJvYmFibHkgbGVhdmUgc29tZXRoaW5nIGxpa2UgdGhpcyBhbG9uZToKICAgICAgICAgICAgICAgICAgICAjICByZXR1cm4KICAgICAgICAgICAgICAgICAgICAjICAgICAgIGV4aXN0cyAkRy0+e0F0dHJ9LT57RX0KICAgICAgICAgICAgICAgICAgICAjICAgICYmIGV4aXN0cyAkRy0+e0F0dHJ9LT57RX0tPnskdX0KICAgICAgICAgICAgICAgICAgICAjICAgICYmIGV4aXN0cyAkRy0+e0F0dHJ9LT57RX0tPnskdX0tPnskdn0KICAgICAgICAgICAgICAgICAgICAjICAgID8gJXsgJEctPntBdHRyfS0+e0V9LT57JHV9LT57JHZ9IH0KICAgICAgICAgICAgICAgICAgICAjICAgIDogKCk7CiAgICAgICAgICAgICAgICAgICAgIyBzbyB0aGF0IHdlIGVpdGhlciBoYXZlIGFsbCBvZiB0aGUgJiYncyAob3IgfHwncykKICAgICAgICAgICAgICAgICAgICAjIG9uIG9uZSBsaW5lLCBhcyBpbiB0aGUgZmlyc3QgZXhhbXBsZSwgb3IgYnJlYWsgYXQKICAgICAgICAgICAgICAgICAgICAjIGVhY2ggb25lIGFzIGluIHRoZSBzZWNvbmQgZXhhbXBsZS4gIEhvd2V2ZXIsIGl0CiAgICAgICAgICAgICAgICAgICAgIyBzb21ldGltZXMgbWFrZXMgdGhpbmdzIHdvcnNlIHRvIGNoZWNrIGZvciB0aGlzIGJlY2F1c2UKICAgICAgICAgICAgICAgICAgICAjIGl0IHByZXZlbnRzIG11bHRpcGxlIHJlY29tYmluYXRpb25zLiAgU28gdGhpcyBpcyBub3QgZG9uZS4KICAgICAgICAgICAgICAgICAgICAgIHx8ICggJGliZWdfMyA+PSAwCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRpc190ZXJuYXJ5eyAkdHlwZXNfdG9fZ29bJGliZWdfM10gfQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkbmVzdGluZ19kZXB0aF90b19nb1skaWJlZ18zXSA9PQogICAgICAgICAgICAgICAgICAgICAgICAkbmVzdGluZ19kZXB0aF90b19nb1skaWJlZ18yXSApOwoKICAgICAgICAgICAgICAgICAgICBuZXh0IGlmICEkb2sgJiYgJHdhbnRfYnJlYWtfYmVmb3JleyR0eXBlX2liZWdfMn07CiAgICAgICAgICAgICAgICAgICAgJGZvcmNlZF9icmVha3BvaW50X3RvX2dvWyRpZW5kXzFdID0gMDsKCiAgICAgICAgICAgICAgICAgICAgIyB0d2VhayB0aGUgYm9uZCBzdHJlbmd0aCB0byBnaXZlIHRoaXMgam9pbnQgcHJpb3JpdHkKICAgICAgICAgICAgICAgICAgICAjIG92ZXIgPyBhbmQgOgogICAgICAgICAgICAgICAgICAgICRic190d2VhayA9IDAuMjU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBJZGVudGlmeSBhbmQgcmVjb21iaW5lIGEgYnJva2VuID8vOiBjaGFpbgogICAgICAgICAgICAgICAgZWxzaWYgKCAkdHlwZV9pYmVnXzIgZXEgJz8nICkgewoKICAgICAgICAgICAgICAgICAgICAjIERvIG5vdCByZWNvbWJpbmUgZGlmZmVyZW50IGxldmVscwogICAgICAgICAgICAgICAgICAgIG15ICRsZXYgPSAkbGV2ZWxzX3RvX2dvWyRpYmVnXzJdOwogICAgICAgICAgICAgICAgICAgIG5leHQgaWYgKCAkbGV2IG5lICRsZXZlbHNfdG9fZ29bJGliZWdfMV0gKTsKCiAgICAgICAgICAgICAgICAgICAgIyBEbyBub3QgcmVjb21iaW5lIGEgJz8nIGlmIGVpdGhlciBuZXh0IGxpbmUgb3IKICAgICAgICAgICAgICAgICAgICAjIHByZXZpb3VzIGxpbmUgZG9lcyBub3Qgc3RhcnQgd2l0aCBhICc6Jy4gIFRoZSByZWFzb25zCiAgICAgICAgICAgICAgICAgICAgIyBhcmUgdGhhdCAoMSkgbm8gYWxpZ25tZW50IG9mIHRoZSA/IHdpbGwgYmUgcG9zc2libGUKICAgICAgICAgICAgICAgICAgICAjIGFuZCAoMikgdGhlIGV4cHJlc3Npb24gaXMgc29tZXdoYXQgY29tcGxleCwgc28gdGhlCiAgICAgICAgICAgICAgICAgICAgIyAnPycgaXMgaGFyZGVyIHRvIHNlZSBpbiB0aGUgaW50ZXJpb3Igb2YgdGhlIGxpbmUuCiAgICAgICAgICAgICAgICAgICAgbXkgJGZvbGxvd3NfY29sb24gPSAkaWJlZ18xID49IDAgJiYgJHR5cGVfaWJlZ18xIGVxICc6JzsKICAgICAgICAgICAgICAgICAgICBteSAkcHJlY2VkZXNfY29sb24gPQogICAgICAgICAgICAgICAgICAgICAgJGliZWdfMyA+PSAwICYmICR0eXBlc190b19nb1skaWJlZ18zXSBlcSAnOic7CiAgICAgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCAkZm9sbG93c19jb2xvbiB8fCAkcHJlY2VkZXNfY29sb24gKTsKCiAgICAgICAgICAgICAgICAgICAgIyB3ZSB3aWxsIGFsd2F5cyBjb21iaW5pbmcgYSA/IGxpbmUgZm9sbG93aW5nIGEgOiBsaW5lCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJGZvbGxvd3NfY29sb24gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIC4uLm90aGVyd2lzZSByZWNvbWJpbmUgb25seSBpZiBpdCBsb29rcyBsaWtlIGEgY2hhaW4uCiAgICAgICAgICAgICAgICAgICAgICAgICMgd2Ugd2lsbCBqdXN0IGxvb2sgYXQgYSBmZXcgbmVhcmJ5IGxpbmVzIHRvIHNlZSBpZgogICAgICAgICAgICAgICAgICAgICAgICAjIHRoaXMgbG9va3MgbGlrZSBhIGNoYWluLgogICAgICAgICAgICAgICAgICAgICAgICBteSAkbG9jYWxfY291bnQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRpaSAoICRpYmVnXzAsICRpYmVnXzEsICRpYmVnXzMsICRpYmVnXzQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbG9jYWxfY291bnQrKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAkaWkgPj0gMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZXNfdG9fZ29bJGlpXSBlcSAnOicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGxldmVsc190b19nb1skaWldID09ICRsZXY7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCAkbG9jYWxfY291bnQgPiAxICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRmb3JjZWRfYnJlYWtwb2ludF90b19nb1skaWVuZF8xXSA9IDA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBkbyBub3QgcmVjb21iaW5lIGxpbmVzIHdpdGggbGVhZGluZyAnLicKICAgICAgICAgICAgICAgIGVsc2lmICggJHR5cGVfaWJlZ18yIGVxICcuJyApIHsKICAgICAgICAgICAgICAgICAgICBteSAkaV9uZXh0X25vbmJsYW5rID0gbWluKCAkaW5leHRfdG9fZ29bJGliZWdfMl0sICRpZW5kXzIgKTsKICAgICAgICAgICAgICAgICAgICBuZXh0CiAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKAoKICAgICAgICAgICAgICAgICAgICMgLi4uIHVubGVzcyB0aGVyZSBpcyBqdXN0IG9uZSBhbmQgd2UgY2FuIHJlZHVjZQogICAgICAgICAgICAgICAgICAgIyB0aGlzIHRvIHR3byBsaW5lcyBpZiB3ZSBkby4gIEZvciBleGFtcGxlLCB0aGlzCiAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAjICAkYm9keUEgLj0KICAgICAgICAgICAgICAgICAgICMgICAgJygkZHVtbXksICRwYXQpID0gJmdldF9uZXh0X3RleF9jbWQ7JyAuICckYXJncyAuPSAkcGF0OycKICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICMgIGxvb2tzIGJldHRlciB0aGFuIHRoaXM6CiAgICAgICAgICAgICAgICAgICAjICAkYm9keUEgLj0gJygkZHVtbXksICRwYXQpID0gJmdldF9uZXh0X3RleF9jbWQ7JwogICAgICAgICAgICAgICAgICAgIyAgICAuICckYXJncyAuPSAkcGF0OycKCiAgICAgICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuID09IDIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICRuID09ICRubWF4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZV9pYmVnXzEgbmUgJHR5cGVfaWJlZ18yCiAgICAgICAgICAgICAgICAgICAgICAgICkKCiAgICAgICAgICAgICAgICAgICAgICAgICMgIC4uLiBvciB0aGlzIHdvdWxkIHN0cmFuZCBhIHNob3J0IHF1b3RlICwgbGlrZSB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgICMgICAgICAgICAgICAgICAgLiAic29tZSBsb25nIHF1b3RlIgogICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICAgICAgIC4gIlxuIjsKCiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICggICAkdHlwZXNfdG9fZ29bJGlfbmV4dF9ub25ibGFua10gZXEgJ1EnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkaV9uZXh0X25vbmJsYW5rID49ICRpZW5kXzIgLSAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdG9rZW5fbGVuZ3Roc190b19nb1skaV9uZXh0X25vbmJsYW5rXSA8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkck9wdHNfc2hvcnRfY29uY2F0ZW5hdGlvbl9pdGVtX2xlbmd0aCApCiAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgaGFuZGxlIGxlYWRpbmcga2V5d29yZC4uCiAgICAgICAgICAgICAgICBlbHNpZiAoICR0eXBlX2liZWdfMiBlcSAnaycgKSB7CgogICAgICAgICAgICAgICAgICAgICMgaGFuZGxlIGxlYWRpbmcgIm9yIgogICAgICAgICAgICAgICAgICAgIGlmICggJHRva2Vuc190b19nb1skaWJlZ18yXSBlcSAnb3InICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5sZXNzICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzX2xpbmVfaXNfc2VtaWNvbG9uX3Rlcm1pbmF0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZV9pYmVnXzEgZXEgJ30nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmb2xsb3dpbmcgJ2lmJyBvciAndW5sZXNzJyBvciAnb3InCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlX2liZWdfMSBlcSAnaycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGlzX2lmX3VubGVzc3sgJHRva2Vuc190b19nb1skaWJlZ18xXSB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGltcG9ydGFudDogb25seSBjb21iaW5lIGEgdmVyeSBzaW1wbGUgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzdGF0ZW1lbnQgYmVjYXVzZSB0aGUgc3RlcCBiZWxvdyBtYXkgaGF2ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNvbWJpbmVkIGEgdHJhaWxpbmcgJ2FuZCcgd2l0aCB0aGlzIG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFuZCB3ZSBkbyBub3Qgd2FudCB0byB0aGVuIGNvbWJpbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBldmVyeXRoaW5nIHRvZ2V0aGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICggJGllbmRfMiAtICRpYmVnXzIgPD0gNyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjWDogUlQgIzgxODU0CiAgICAgICAgICAgICAgICAgICAgICAgICRmb3JjZWRfYnJlYWtwb2ludF90b19nb1skaWVuZF8xXSA9IDAKICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgJG9sZF9icmVha3BvaW50X3RvX2dvWyRpZW5kXzFdOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBoYW5kbGUgbGVhZGluZyAnYW5kJyBhbmQgJ3hvcicKICAgICAgICAgICAgICAgICAgICBlbHNpZiAoJHRva2Vuc190b19nb1skaWJlZ18yXSBlcSAnYW5kJwogICAgICAgICAgICAgICAgICAgICAgICB8fCAkdG9rZW5zX3RvX2dvWyRpYmVnXzJdIGVxICd4b3InICkKICAgICAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIERlY2lkZSBpZiB3ZSB3aWxsIGNvbWJpbmUgYSBzaW5nbGUgdGVybWluYWwgJ2FuZCcKICAgICAgICAgICAgICAgICAgICAgICAgIyBhZnRlciBhbiAnaWYnIG9yICd1bmxlc3MnLgoKICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgVGhpcyBsb29rcyBiZXN0IHdpdGggdGhlICdhbmQnIG9uIHRoZSBzYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICMgICAgIGxpbmUgYXMgdGhlICdpZic6CiAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICRhID0gMQogICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICBpZiAkc2Vjb25kcyBhbmQgJG51IDwgMjsKICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICAgICAjICAgICBCdXQgdGhpcyBsb29rcyBiZXR0ZXIgYXMgc2hvd246CiAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICRhID0gMQogICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICBpZiAhJHRoaXMtPntQYXJlbnRzfXskX30KICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgb3IgJHRoaXMtPntQYXJlbnRzfXskX30gZXEgJF87CiAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dAogICAgICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpc19saW5lX2lzX3NlbWljb2xvbl90ZXJtaW5hdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZm9sbG93aW5nICdpZicgb3IgJ3VubGVzcycgb3IgJ29yJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlX2liZWdfMSBlcSAnaycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoICAgJGlzX2lmX3VubGVzc3sgJHRva2Vuc190b19nb1skaWJlZ18xXSB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICR0b2tlbnNfdG9fZ29bJGliZWdfMV0gZXEgJ29yJyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgaGFuZGxlIGxlYWRpbmcgImlmIiBhbmQgInVubGVzcyIKICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRpc19pZl91bmxlc3N7ICR0b2tlbnNfdG9fZ29bJGliZWdfMl0gfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBUaGlzIGlzIHN0aWxsIGV4cGVyaW1lbnRhbC4ubWF5IG5vdCBiZSB0b28gdXNlZnVsCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQKICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXNfbGluZV9pc19zZW1pY29sb25fdGVybWluYXRlZAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIHByZXZpb3VzIGxpbmUgYmVnaW5zIHdpdGggJ2FuZCcgb3IgJ29yJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHR5cGVfaWJlZ18xIGVxICdrJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGlzX2FuZF9vcnsgJHRva2Vuc190b19nb1skaWJlZ18xXSB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGhhbmRsZSBhbGwgb3RoZXIgbGVhZGluZyBrZXl3b3JkcwogICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBrZXl3b3JkcyBsb29rIGJlc3QgYXQgc3RhcnQgb2YgbGluZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICMgYnV0IGNvbWJpbmUgdGhpbmdzIGxpa2UgIjEgd2hpbGUiCiAgICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyAoICRpc19hc3NpZ25tZW50eyR0eXBlX2llbmRfMX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggKCAkdHlwZV9pZW5kXzEgbmUgJ2snICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoICR0b2tlbnNfdG9fZ29bJGliZWdfMl0gbmUgJ3doaWxlJyApICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzaW1pbGFyIHRyZWF0bWVudCBvZiAmJiBhbmQgfHwgYXMgYWJvdmUgZm9yICdhbmQnIGFuZCAnb3InOgogICAgICAgICAgICAgICAgIyBOT1RFOiBUaGlzIGJsb2NrIG9mIGNvZGUgaXMgY3VycmVudGx5IGJ5cGFzc2VkIGJlY2F1c2UKICAgICAgICAgICAgICAgICMgb2YgYSBwcmV2aW91cyBibG9jayBidXQgaXMgcmV0YWluZWQgZm9yIHBvc3NpYmxlIGZ1dHVyZSB1c2UuCiAgICAgICAgICAgICAgICBlbHNpZiAoICRpc19hbXBfYW1weyR0eXBlX2liZWdfMn0gKSB7CgogICAgICAgICAgICAgICAgICAgICMgbWF5YmUgbG9va2luZyBhdCBzb21ldGhpbmcgbGlrZToKICAgICAgICAgICAgICAgICAgICAjIHVubGVzcyAkVEVYVE9OTFkgfHwgJGl0ZW0gPX4gbSU8Lz8oaHI+fHA+fGF8aW1nKSVpOwoKICAgICAgICAgICAgICAgICAgICBuZXh0CiAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKAogICAgICAgICAgICAgICAgICAgICAgICAkdGhpc19saW5lX2lzX3NlbWljb2xvbl90ZXJtaW5hdGVkCgogICAgICAgICAgICAgICAgICAgICAgICAjIHByZXZpb3VzIGxpbmUgYmVnaW5zIHdpdGggYW4gJ2lmJyBvciAndW5sZXNzJyBrZXl3b3JkCiAgICAgICAgICAgICAgICAgICAgICAgICYmICR0eXBlX2liZWdfMSBlcSAnaycKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGlzX2lmX3VubGVzc3sgJHRva2Vuc190b19nb1skaWJlZ18xXSB9CgogICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGhhbmRsZSBsaW5lIHdpdGggbGVhZGluZyA9IG9yIHNpbWlsYXIKICAgICAgICAgICAgICAgIGVsc2lmICggJGlzX2Fzc2lnbm1lbnR7JHR5cGVfaWJlZ18yfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyAoICRuID09IDEgfHwgJG4gPT0gJG5tYXggKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IGlmICRvbGRfYnJlYWtwb2ludF90b19nb1skaWVuZF8xXTsKICAgICAgICAgICAgICAgICAgICBuZXh0CiAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKAoKICAgICAgICAgICAgICAgICAgICAgICAgIyB1bmxlc3Mgd2UgY2FuIHJlZHVjZSB0aGlzIHRvIHR3byBsaW5lcwogICAgICAgICAgICAgICAgICAgICAgICAkbm1heCA9PSAyCgogICAgICAgICAgICAgICAgICAgICAgICAjIG9yIHRocmVlIGxpbmVzLCB0aGUgbGFzdCB3aXRoIGEgbGVhZGluZyBzZW1pY29sb24KICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCAkbm1heCA9PSAzICYmICR0eXBlc190b19nb1skaWJlZ19ubWF4XSBlcSAnOycgKQoKICAgICAgICAgICAgICAgICAgICAgICAgIyBvciB0aGUgbmV4dCBsaW5lIGVuZHMgd2l0aCBhIGhlcmUgZG9jCiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICR0eXBlX2llbmRfMiBlcSAnaCcKCiAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgdGhpcyBpcyBhIHNob3J0IGxpbmUgZW5kaW5nIGluIDsKICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCAkbiA9PSAkbm1heCAmJiAkdGhpc19saW5lX2lzX3NlbWljb2xvbl90ZXJtaW5hdGVkICkKICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJGZvcmNlZF9icmVha3BvaW50X3RvX2dvWyRpZW5kXzFdID0gMDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgIyBSZWNvbWJpbmUgU2VjdGlvbiA0OgogICAgICAgICAgICAgICAgIyBDb21iaW5lIHRoZSBsaW5lcyBpZiB3ZSBhcnJpdmUgaGVyZSBhbmQgaXQgaXMgcG9zc2libGUKICAgICAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICAgICAgICAgIyBob25vciBoYXJkIGJyZWFrcG9pbnRzCiAgICAgICAgICAgICAgICBuZXh0IGlmICggJGZvcmNlZF9icmVha3BvaW50X3RvX2dvWyRpZW5kXzFdID4gMCApOwoKICAgICAgICAgICAgICAgIG15ICRicyA9ICRib25kX3N0cmVuZ3RoX3RvX2dvWyRpZW5kXzFdICsgJGJzX3R3ZWFrOwoKICAgICAgICAgICAgICAgICMgUmVxdWlyZSBhIGZldyBleHRyYSBzcGFjZXMgYmVmb3JlIHJlY29tYmluaW5nIGxpbmVzIGlmIHdlIGFyZQogICAgICAgICAgICAgICAgIyBhdCBhbiBvbGQgYnJlYWtwb2ludCB1bmxlc3MgdGhpcyBpcyBhIHNpbXBsZSBsaXN0IG9yIHRlcm1pbmFsCiAgICAgICAgICAgICAgICAjIGxpbmUuICBUaGUgZ29hbCBpcyB0byBhdm9pZCBvc2NpbGxhdGluZyBiZXR3ZWVuIHR3bwogICAgICAgICAgICAgICAgIyBxdWFzaS1zdGFibGUgZW5kIHN0YXRlcy4gIEZvciBleGFtcGxlIHRoaXMgc25pcHBldCBjYXVzZWQKICAgICAgICAgICAgICAgICMgcHJvYmxlbXM6CiMjICAgIG15ICR0aGlzID0KIyMgICAgYmxlc3MgewojIyAgICAgICAgVFRleHQgPT4gIlsiIC4gKCBqb2luICcsJywgbWFwIHsgIlwiJF9cIiIgfSBzcGxpdCAiXG4iLCAkXyApIC4gIl0iCiMjICAgICAgfSwKIyMgICAgICAkdHlwZTsKICAgICAgICAgICAgICAgIG5leHQKICAgICAgICAgICAgICAgICAgaWYgKCAkb2xkX2JyZWFrcG9pbnRfdG9fZ29bJGllbmRfMV0KICAgICAgICAgICAgICAgICAgICAmJiAhJHRoaXNfbGluZV9pc19zZW1pY29sb25fdGVybWluYXRlZAogICAgICAgICAgICAgICAgICAgICYmICRuIDwgJG5tYXgKICAgICAgICAgICAgICAgICAgICAmJiAkZXhjZXNzICsgNCA+IDAKICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZV9pZW5kXzIgbmUgJywnICk7CgogICAgICAgICAgICAgICAgIyBkbyBub3QgcmVjb21iaW5lIGlmIHdlIHdvdWxkIHNraXAgaW4gaW5kZW50YXRpb24gbGV2ZWxzCiAgICAgICAgICAgICAgICBpZiAoICRuIDwgJG5tYXggKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJGlmX25leHQgPSAkcmlfYmVnLT5bICRuICsgMSBdOwogICAgICAgICAgICAgICAgICAgIG5leHQKICAgICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxldmVsc190b19nb1skaWJlZ18xXSA8ICRsZXZlbHNfdG9fZ29bJGliZWdfMl0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGxldmVsc190b19nb1skaWJlZ18yXSA8ICRsZXZlbHNfdG9fZ29bJGlmX25leHRdCgogICAgICAgICAgICAgICAgICAgICAgICAjIGJ1dCBhbiBpc29sYXRlZCAnaWYgKCcgaXMgdW5kZXNpcmFibGUKICAgICAgICAgICAgICAgICAgICAgICAgJiYgISgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuID09IDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICRpZW5kXzEgLSAkaWJlZ18xIDw9IDIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICR0eXBlX2liZWdfMSBlcSAnaycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICR0b2tlbnNfdG9fZ29bJGliZWdfMV0gZXEgJ2lmJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHRva2Vuc190b19nb1skaWVuZF8xXSBuZSAnKCcKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGhvbm9yIG5vLWJyZWFrJ3MKICAgICAgICAgICAgICAgIG5leHQgaWYgKCAkYnMgPj0gTk9fQlJFQUsgLSAxICk7CgogICAgICAgICAgICAgICAgIyByZW1lbWJlciB0aGUgcGFpciB3aXRoIHRoZSBncmVhdGVzdCBib25kIHN0cmVuZ3RoCiAgICAgICAgICAgICAgICBpZiAoICEkbl9iZXN0ICkgewogICAgICAgICAgICAgICAgICAgICRuX2Jlc3QgID0gJG47CiAgICAgICAgICAgICAgICAgICAgJGJzX2Jlc3QgPSAkYnM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkYnMgPiAkYnNfYmVzdCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG5fYmVzdCAgPSAkbjsKICAgICAgICAgICAgICAgICAgICAgICAgJGJzX2Jlc3QgPSAkYnM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJlY29tYmluZSB0aGUgcGFpciB3aXRoIHRoZSBncmVhdGVzdCBib25kIHN0cmVuZ3RoCiAgICAgICAgICAgIGlmICgkbl9iZXN0KSB7CiAgICAgICAgICAgICAgICBzcGxpY2UgQHskcmlfYmVnfSwgJG5fYmVzdCwgMTsKICAgICAgICAgICAgICAgIHNwbGljZSBAeyRyaV9lbmR9LCAkbl9iZXN0IC0gMSwgMTsKICAgICAgICAgICAgICAgIHNwbGljZSBAam9pbnQsICRuX2Jlc3QsIDE7CgogICAgICAgICAgICAgICAgIyBrZWVwIGdvaW5nIGlmIHdlIGFyZSBzdGlsbCBtYWtpbmcgcHJvZ3Jlc3MKICAgICAgICAgICAgICAgICRtb3JlX3RvX2RvKys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICggJHJpX2JlZywgJHJpX2VuZCApOwogICAgfQp9ICMjIGVuZCBjbG9zdXJlIHJlY29tYmluZV9icmVha3BvaW50cwoKc3ViIGluc2VydF9maW5hbF90ZXJuYXJ5X2JyZWFrcyB7CgogICAgbXkgKCAkc2VsZiwgJHJpX2xlZnQsICRyaV9yaWdodCApID0gQF87CgogICAgIyBDYWxsZWQgb25jZSBwZXIgYmF0Y2ggdG8gbG9vayBmb3IgYW5kIGRvIGFueSBmaW5hbCBsaW5lIGJyZWFrcyBmb3IKICAgICMgbG9uZyB0ZXJuYXJ5IGNoYWlucwoKICAgIG15ICRubWF4ID0gQHskcmlfcmlnaHR9IC0gMTsKCiAgICAjIHNjYW4gdGhlIGxlZnQgYW5kIHJpZ2h0IGVuZCB0b2tlbnMgb2YgYWxsIGxpbmVzCiAgICBteSAkY291bnQgICAgICAgICA9IDA7CiAgICBteSAkaV9maXJzdF9jb2xvbiA9IC0xOwogICAgZm9yIG15ICRuICggMCAuLiAkbm1heCApIHsKICAgICAgICBteSAkaWwgICAgPSAkcmlfbGVmdC0+WyRuXTsKICAgICAgICBteSAkaXIgICAgPSAkcmlfcmlnaHQtPlskbl07CiAgICAgICAgbXkgJHR5cGVsID0gJHR5cGVzX3RvX2dvWyRpbF07CiAgICAgICAgbXkgJHR5cGVyID0gJHR5cGVzX3RvX2dvWyRpcl07CiAgICAgICAgcmV0dXJuIGlmICggJHR5cGVsIGVxICc/JyApOwogICAgICAgIHJldHVybiBpZiAoICR0eXBlciBlcSAnPycgKTsKICAgICAgICBpZiAgICAoICR0eXBlbCBlcSAnOicgKSB7ICRpX2ZpcnN0X2NvbG9uID0gJGlsOyBsYXN0OyB9CiAgICAgICAgZWxzaWYgKCAkdHlwZXIgZXEgJzonICkgeyAkaV9maXJzdF9jb2xvbiA9ICRpcjsgbGFzdDsgfQogICAgfQoKICAgICMgRm9yIGxvbmcgdGVybmFyeSBjaGFpbnMsCiAgICAjIGlmIHRoZSBmaXJzdCA6IHdlIHNlZSBoYXMgaXRzID8gaXMgaW4gdGhlIGludGVyaW9yCiAgICAjIG9mIGEgcHJlY2VkaW5nIGxpbmUsIHRoZW4gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZ29vZAogICAgIyBicmVha3BvaW50cyBiZWZvcmUgdGhlID8uCiAgICBpZiAoICRpX2ZpcnN0X2NvbG9uID4gMCApIHsKICAgICAgICBteSAkaV9xdWVzdGlvbiA9ICRtYXRlX2luZGV4X3RvX2dvWyRpX2ZpcnN0X2NvbG9uXTsKICAgICAgICBpZiAoICRpX3F1ZXN0aW9uID4gMCApIHsKICAgICAgICAgICAgbXkgQGluc2VydF9saXN0OwogICAgICAgICAgICBmb3IgKCBteSAkaWkgPSAkaV9xdWVzdGlvbiAtIDEgOyAkaWkgPj0gMCA7ICRpaSAtPSAxICkgewogICAgICAgICAgICAgICAgbXkgJHRva2VuID0gJHRva2Vuc190b19nb1skaWldOwogICAgICAgICAgICAgICAgbXkgJHR5cGUgID0gJHR5cGVzX3RvX2dvWyRpaV07CgogICAgICAgICAgICAgICAgIyBGb3Igbm93LCBhIGdvb2QgYnJlYWsgaXMgZWl0aGVyIGEgY29tbWEgb3IsCiAgICAgICAgICAgICAgICAjIGluIGEgbG9uZyBjaGFpbiwgYSAncmV0dXJuJy4KICAgICAgICAgICAgICAgICMgUGF0Y2ggZm9yIFJUICMxMjY2MzM6IGFkZGVkIHRoZSAkbm1heD4xIGNoZWNrIHRvIGF2b2lkCiAgICAgICAgICAgICAgICAjIGJyZWFraW5nIGFmdGVyIGEgcmV0dXJuIGZvciBhIHNpbXBsZSB0ZXJuYXJ5LiAgRm9yIGxvbmdlcgogICAgICAgICAgICAgICAgIyBjaGFpbnMgdGhlIGJyZWFrIGFmdGVyIHJldHVybiBhbGxvd3MgdmVydGljYWwgYWxpZ25tZW50LCBzbwogICAgICAgICAgICAgICAgIyBpdCBpcyBzdGlsbCBkb25lLiAgU28gcGVybHRpZHkgLXdiYT0nPycgd2lsbCBub3QgYnJlYWsKICAgICAgICAgICAgICAgICMgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIHJldHVybiBpbiB0aGUgZm9sbG93aW5nIHN0YXRlbWVudDoKICAgICAgICAgICAgICAgICMgc3ViIHggewogICAgICAgICAgICAgICAgIyAgICByZXR1cm4gMCA/ICdhYWFhYWFhYWFhYWFhYWFhYWFhYWEnIDoKICAgICAgICAgICAgICAgICMgICAgICAnYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmInOwogICAgICAgICAgICAgICAgIyB9CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSBlcSAnLCcKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHR5cGUgZXEgJ2snICYmICggJG5tYXggPiAxICYmICR0b2tlbiBlcSAncmV0dXJuJyApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICYmICRzZWxmLT5pbl9zYW1lX2NvbnRhaW5lcl9pKCAkaWksICRpX3F1ZXN0aW9uICkKICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQGluc2VydF9saXN0LCAkaWk7CiAgICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBpbnNlcnQgYW55IG5ldyBicmVhayBwb2ludHMKICAgICAgICAgICAgaWYgKEBpbnNlcnRfbGlzdCkgewogICAgICAgICAgICAgICAgJHNlbGYtPmluc2VydF9hZGRpdGlvbmFsX2JyZWFrcyggXEBpbnNlcnRfbGlzdCwgJHJpX2xlZnQsCiAgICAgICAgICAgICAgICAgICAgJHJpX3JpZ2h0ICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBpbnNlcnRfYnJlYWtzX2JlZm9yZV9saXN0X29wZW5pbmdfY29udGFpbmVycyB7CgogICAgbXkgKCAkc2VsZiwgJHJpX2xlZnQsICRyaV9yaWdodCApID0gQF87CgogICAgIyBUaGlzIHJvdXRpbmUgaXMgY2FsbGVkIG9uY2UgcGVyIGJhdGNoIHRvIGltcGxlbWVudCB0aGUgcGFyYW1ldGVycwogICAgIyAtLWJyZWFrLWJlZm9yZS1oYXNoLWJyYWNlLCBldGMuCgogICAgIyBOb3RoaW5nIHRvIGRvIGlmIG5vbmUgb2YgdGhlc2UgcGFyYW1ldGVycyBoYXMgYmVlbiBzZXQKICAgIHJldHVybiB1bmxlc3MgJWJyZWFrX2JlZm9yZV9jb250YWluZXJfdHlwZXM7CgogICAgbXkgJG5tYXggPSBAeyRyaV9yaWdodH0gLSAxOwogICAgcmV0dXJuIHVubGVzcyAoICRubWF4ID49IDAgKTsKCiAgICBteSAkckxMICAgICAgICAgICAgICAgICAgID0gJHNlbGYtPltfckxMX107CiAgICBteSAkcmlzX2Jyb2tlbl9jb250YWluZXIgID0gJHNlbGYtPltfcmlzX2Jyb2tlbl9jb250YWluZXJfXTsKICAgIG15ICRyaGFzX2Jyb2tlbl9jb250YWluZXIgPSAkc2VsZi0+W19yaGFzX2Jyb2tlbl9jb250YWluZXJfXTsKICAgIG15ICRycGFyZW50X29mX3NlcW5vICAgICAgPSAkc2VsZi0+W19ycGFyZW50X29mX3NlcW5vX107CgogICAgIyBzY2FuIHRoZSBlbmRzIG9mIGFsbCBsaW5lcwogICAgbXkgQGluc2VydF9saXN0OwogICAgZm9yIG15ICRuICggMCAuLiAkbm1heCApIHsKICAgICAgICBteSAkaWwgPSAkcmlfbGVmdC0+WyRuXTsKICAgICAgICBteSAkaXIgPSAkcmlfcmlnaHQtPlskbl07CiAgICAgICAgbmV4dCB1bmxlc3MgKCAkaXIgPiAkaWwgKTsKICAgICAgICBteSAkS2wgICAgICAgPSAkS190b19nb1skaWxdOwogICAgICAgIG15ICRLciAgICAgICA9ICRLX3RvX2dvWyRpcl07CiAgICAgICAgbXkgJEtlbmQgICAgID0gJEtyOwogICAgICAgIG15ICRpZW5kICAgICA9ICRpcjsKICAgICAgICBteSAkdHlwZV9lbmQgPSAkckxMLT5bJEtyXS0+W19UWVBFX107CgogICAgICAgICMgQmFja3VwIGJlZm9yZSBhbnkgc2lkZSBjb21tZW50CiAgICAgICAgaWYgKCAkdHlwZV9lbmQgZXEgJyMnICkgewogICAgICAgICAgICAkS2VuZCA9ICRzZWxmLT5LX3ByZXZpb3VzX25vbmJsYW5rKCRLcik7CiAgICAgICAgICAgIG5leHQgdW5sZXNzIGRlZmluZWQoJEtlbmQpOwogICAgICAgICAgICAkdHlwZV9lbmQgPSAkckxMLT5bJEtlbmRdLT5bX1RZUEVfXTsKICAgICAgICAgICAgJGllbmQgICAgID0gJGlyICsgKCAkS2VuZCAtICRLciApOwogICAgICAgIH0KCiAgICAgICAgbmV4dCB1bmxlc3MgKCAkS2wgPCAkS2VuZCAtIDEgKTsKCiAgICAgICAgbXkgJHNlcW5vID0gJHJMTC0+WyRLZW5kXS0+W19UWVBFX1NFUVVFTkNFX107CiAgICAgICAgbmV4dCB1bmxlc3MgKCBkZWZpbmVkKCRzZXFubykgKTsKCiAgICAgICAgIyBPbmx5IGZvciB0eXBlcyBvZiBjb250YWluZXIgdG9rZW5zIHdpdGggYSBub24tZGVmYXVsdCBicmVhayBvcHRpb24KICAgICAgICBteSAkdG9rZW5fZW5kICAgID0gJHJMTC0+WyRLZW5kXS0+W19UT0tFTl9dOwogICAgICAgIG15ICRicmVha19vcHRpb24gPSAkYnJlYWtfYmVmb3JlX2NvbnRhaW5lcl90eXBlc3skdG9rZW5fZW5kfTsKICAgICAgICBuZXh0IHVubGVzcyAoJGJyZWFrX29wdGlvbik7CgogICAgICAgICMgUmVxdWlyZSBwcmV2aW91cyBub25ibGFuayB0byBiZSBjZXJ0YWluIHR5cGVzICg9IGFuZCA9PikKICAgICAgICAjIE5vdGUgc2ltaWxhciBjb2RpbmcgaW4gc3ViIGFkanVzdF9jb250YWluZXJfaW5kZW50YXRpb24KICAgICAgICBteSAkS3ByZXYgICAgID0gJEtlbmQgLSAxOwogICAgICAgIG15ICRwcmV2X3R5cGUgPSAkckxMLT5bJEtwcmV2XS0+W19UWVBFX107CiAgICAgICAgaWYgKCAkcHJldl90eXBlIGVxICdiJyApIHsKICAgICAgICAgICAgJEtwcmV2LS07CiAgICAgICAgICAgIG5leHQgaWYgKCAkS3ByZXYgPD0gJEtsICk7CiAgICAgICAgICAgICRwcmV2X3R5cGUgPSAkckxMLT5bJEtwcmV2XS0+W19UWVBFX107CiAgICAgICAgfQogICAgICAgIG5leHQgdW5sZXNzICggJGlzX2VxdWFsX29yX2ZhdF9jb21tYXskcHJldl90eXBlfSApOwoKICAgICAgICAjIFRoaXMgbXVzdCBiZSBhIGxpc3QgKHRoaXMgd2lsbCBleGNsdWRlIGFsbCBjb2RlIGJsb2NrcykKICAgICAgICBuZXh0IHVubGVzcyAkc2VsZi0+aXNfbGlzdF9ieV9zZXFubygkc2Vxbm8pOwoKICAgICAgICAjIE5ldmVyIGJyZWFrIGEgd2VsZAogICAgICAgIG5leHQgaWYgKCAkc2VsZi0+d2VsZF9sZW5fbGVmdCggJHNlcW5vLCAkdG9rZW5fZW5kICkgKTsKCiAgICAgICAgIyBGaW5hbCBkZWNpc2lvbiBpcyBiYXNlZCBvbiBzZWxlY3RlZCBvcHRpb246CgogICAgICAgICMgT3B0aW9uIDEgPSBzdGFibGUsIHRyeSB0byBmb2xsb3cgaW5wdXQKICAgICAgICBteSAkb2tfdG9fYnJlYWs7CiAgICAgICAgaWYgKCAkYnJlYWtfb3B0aW9uID09IDEgKSB7CiAgICAgICAgICAgIGlmICggJGlyIC0gMiA+ICRpbCApIHsKICAgICAgICAgICAgICAgICRva190b19icmVhayA9ICRvbGRfYnJlYWtwb2ludF90b19nb1sgJGlyIC0gMiBdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIE9wdGlvbiAyID0gb25seSBpZiBjb21wbGV4IGxpc3QsIG1lYW5pbmc6CiAgICAgICAgIyAgLSB0aGlzIGxpc3QgY29udGFpbnMgYSBicm9rZW4gY29udGFpbmVyLCBvcgogICAgICAgICMgIC0gdGhpcyBsaXN0IGlzIGNvbnRhaW5lZCBpbiBhIGJyb2tlbiBsaXN0CiAgICAgICAgZWxzaWYgKCAkYnJlYWtfb3B0aW9uID09IDIgKSB7CiAgICAgICAgICAgICRva190b19icmVhayA9ICRyaGFzX2Jyb2tlbl9jb250YWluZXItPnskc2Vxbm99OwogICAgICAgICAgICBpZiAoICEkb2tfdG9fYnJlYWsgKSB7CiAgICAgICAgICAgICAgICBteSAkcGFyZW50ID0gJHJwYXJlbnRfb2Zfc2Vxbm8tPnskc2Vxbm99OwogICAgICAgICAgICAgICAgJG9rX3RvX2JyZWFrID0gJHNlbGYtPmlzX2xpc3RfYnlfc2Vxbm8oJHBhcmVudCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgT3B0aW9uIDMgPSBhbHdheXMgYnJlYWsKICAgICAgICBlbHNpZiAoICRicmVha19vcHRpb24gPT0gMyApIHsKICAgICAgICAgICAgJG9rX3RvX2JyZWFrID0gMTsKICAgICAgICB9CgogICAgICAgICMgU2hvdWxkbid0IGhhcHBlbiEgQmFkIGZsYWcsIGJ1dCBtYWtlIGJlaGF2aW9yIHNhbWUgYXMgMwogICAgICAgIGVsc2UgewogICAgICAgICAgICAkb2tfdG9fYnJlYWsgPSAxOwogICAgICAgIH0KCiAgICAgICAgbmV4dCB1bmxlc3MgKCRva190b19icmVhayk7CgogICAgICAgICMgVGhpcyBtZWV0cyB0aGUgY3JpdGVyaWEsIHNvIGluc3RhbGwgYSBicmVhayBiZWZvcmUgdGhlIG9wZW5pbmcgdG9rZW4uCiAgICAgICAgbXkgJEticmVhayA9ICRzZWxmLT5LX3ByZXZpb3VzX25vbmJsYW5rKCRLZW5kKTsKICAgICAgICBteSAkaWJyZWFrID0gJEticmVhayAtICRLbCArICRpbDsKICAgICAgICBuZXh0IGlmICggJGlicmVhayA8ICRpbCApOwogICAgICAgIG5leHQgaWYgKCAkbm9icmVha190b19nb1skaWJyZWFrXSApOwogICAgICAgIHB1c2ggQGluc2VydF9saXN0LCAkaWJyZWFrOwoKICAgIH0KCiAgICAjIGluc2VydCBhbnkgbmV3IGJyZWFrIHBvaW50cwogICAgaWYgKEBpbnNlcnRfbGlzdCkgewogICAgICAgICRzZWxmLT5pbnNlcnRfYWRkaXRpb25hbF9icmVha3MoIFxAaW5zZXJ0X2xpc3QsICRyaV9sZWZ0LCAkcmlfcmlnaHQgKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIG5vdGVfYWRkZWRfc2VtaWNvbG9uIHsKICAgIG15ICggJHNlbGYsICRsaW5lX251bWJlciApID0gQF87CiAgICAkc2VsZi0+W19sYXN0X2FkZGVkX3NlbWljb2xvbl9hdF9dID0gJGxpbmVfbnVtYmVyOwogICAgaWYgKCAkc2VsZi0+W19hZGRlZF9zZW1pY29sb25fY291bnRfXSA9PSAwICkgewogICAgICAgICRzZWxmLT5bX2ZpcnN0X2FkZGVkX3NlbWljb2xvbl9hdF9dID0gJGxpbmVfbnVtYmVyOwogICAgfQogICAgJHNlbGYtPltfYWRkZWRfc2VtaWNvbG9uX2NvdW50X10rKzsKICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoIkFkZGVkICc7JyBoZXJlXG4iKTsKICAgIHJldHVybjsKfQoKc3ViIG5vdGVfZGVsZXRlZF9zZW1pY29sb24gewogICAgbXkgKCAkc2VsZiwgJGxpbmVfbnVtYmVyICkgPSBAXzsKICAgICRzZWxmLT5bX2xhc3RfZGVsZXRlZF9zZW1pY29sb25fYXRfXSA9ICRsaW5lX251bWJlcjsKICAgIGlmICggJHNlbGYtPltfZGVsZXRlZF9zZW1pY29sb25fY291bnRfXSA9PSAwICkgewogICAgICAgICRzZWxmLT5bX2ZpcnN0X2RlbGV0ZWRfc2VtaWNvbG9uX2F0X10gPSAkbGluZV9udW1iZXI7CiAgICB9CiAgICAkc2VsZi0+W19kZWxldGVkX3NlbWljb2xvbl9jb3VudF9dKys7CiAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCJEZWxldGVkIHVubmVjZXNzYXJ5ICc7JyBhdCBsaW5lICRsaW5lX251bWJlclxuIik7CiAgICByZXR1cm47Cn0KCnN1YiBub3RlX2VtYmVkZGVkX3RhYiB7CiAgICBteSAoICRzZWxmLCAkbGluZV9udW1iZXIgKSA9IEBfOwogICAgJHNlbGYtPltfZW1iZWRkZWRfdGFiX2NvdW50X10rKzsKICAgICRzZWxmLT5bX2xhc3RfZW1iZWRkZWRfdGFiX2F0X10gPSAkbGluZV9udW1iZXI7CiAgICBpZiAoICEkc2VsZi0+W19maXJzdF9lbWJlZGRlZF90YWJfYXRfXSApIHsKICAgICAgICAkc2VsZi0+W19maXJzdF9lbWJlZGRlZF90YWJfYXRfXSA9ICRsaW5lX251bWJlcjsKICAgIH0KCiAgICBpZiAoICRzZWxmLT5bX2VtYmVkZGVkX3RhYl9jb3VudF9dIDw9IE1BWF9OQUdfTUVTU0FHRVMgKSB7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiRW1iZWRkZWQgdGFicyBpbiBxdW90ZSBvciBwYXR0ZXJuXG4iKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIGNvcnJlY3RfbHBfaW5kZW50YXRpb24gewoKICAgICMgV2hlbiB0aGUgLWxwIG9wdGlvbiBpcyB1c2VkLCB3ZSBuZWVkIHRvIG1ha2UgYSBsYXN0IHBhc3MgdGhyb3VnaAogICAgIyBlYWNoIGxpbmUgdG8gY29ycmVjdCB0aGUgaW5kZW50YXRpb24gcG9zaXRpb25zIGluIGNhc2UgdGhleSBkaWZmZXIKICAgICMgZnJvbSB0aGUgcHJlZGljdGlvbnMuICBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHBlcmx0aWR5IHVzZXMgYQogICAgIyBwcmVkaWN0b3IvY29ycmVjdG9yIG1ldGhvZCBmb3IgYWxpZ25pbmcgd2l0aCBvcGVuaW5nIHBhcmVucy4gIFRoZQogICAgIyBwcmVkaWN0b3IgaXMgdXN1YWxseSBnb29kLCBidXQgc29tZXRpbWVzIHN0dW1ibGVzLiAgVGhlIGNvcnJlY3RvcgogICAgIyB0cmllcyB0byBwYXRjaCB0aGluZ3MgdXAgb25jZSB0aGUgYWN0dWFsIG9wZW5pbmcgcGFyZW4gbG9jYXRpb25zCiAgICAjIGFyZSBrbm93bi4KICAgIG15ICggJHNlbGYsICRyaV9maXJzdCwgJHJpX2xhc3QgKSA9IEBfOwogICAgbXkgJGRvX25vdF9wYWQgPSAwOwoKICAgICMgIE5vdGUgb24gZmxhZyAnJGRvX25vdF9wYWQnOgogICAgIyAgV2Ugd2FudCB0byBhdm9pZCBhIHNpdHVhdGlvbiBsaWtlIHRoaXMsIHdoZXJlIHRoZSBhbGlnbmVyIGluc2VydHMKICAgICMgIHdoaXRlc3BhY2UgYmVmb3JlIHRoZSAnPScgdG8gYWxpZ24gaXQgd2l0aCBhIHByZXZpb3VzICc9JywgYmVjYXVzZQogICAgIyAgb3RoZXJ3aXNlIHRoZSBwYXJlbnMgbWlnaHQgYmVjb21lIG1pcy1hbGlnbmVkIGluIGEgc2l0dWF0aW9uIGxpa2UKICAgICMgIHRoaXMsIHdoZXJlIHRoZSAnPScgaGFzIGJlY29tZSBhbGlnbmVkIHdpdGggdGhlIHByZXZpb3VzIGxpbmUsCiAgICAjICBwdXNoaW5nIHRoZSBvcGVuaW5nICcoJyBmb3J3YXJkIGJleW9uZCB3aGVyZSB3ZSB3YW50IGl0LgogICAgIwogICAgIyAgJG1rRmxvb3I6OmN1cnJlbnRSb29tID0gJyc7CiAgICAjICAkbWtGbG9vcjo6Y19lbnRyeSAgICAgPSAkYy0+RW50cnkoCiAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXdpZHRoICAgICAgICA9PiAnMTAnLAogICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1yZWxpZWYgICAgICAgPT4gJ3N1bmtlbicsCiAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCiAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICMKICAgICMgIFdlIGxlYXZlIGl0IHRvIHRoZSBhbGlnbmVyIHRvIGRlY2lkZSBob3cgdG8gZG8gdGhpcy4KCiAgICAjIGZpcnN0IHJlbW92ZSBjb250aW51YXRpb24gaW5kZW50YXRpb24gaWYgYXBwcm9wcmlhdGUKICAgIG15ICRtYXhfbGluZSA9IEB7JHJpX2ZpcnN0fSAtIDE7CgogICAgIyBsb29raW5nIGF0IGVhY2ggbGluZSBvZiB0aGlzIGJhdGNoLi4KICAgIG15ICggJGliZWcsICRpZW5kICk7CiAgICBmb3JlYWNoIG15ICRsaW5lICggMCAuLiAkbWF4X2xpbmUgKSB7CiAgICAgICAgJGliZWcgPSAkcmlfZmlyc3QtPlskbGluZV07CiAgICAgICAgJGllbmQgPSAkcmlfbGFzdC0+WyRsaW5lXTsKCiAgICAgICAgIyBsb29raW5nIGF0IGVhY2ggdG9rZW4gaW4gdGhpcyBvdXRwdXQgbGluZS4uCiAgICAgICAgZm9yZWFjaCBteSAkaSAoICRpYmVnIC4uICRpZW5kICkgewoKICAgICAgICAgICAgIyBIb3cgbWFueSBzcGFjZSBjaGFyYWN0ZXJzIHRvIHBsYWNlIGJlZm9yZSB0aGlzIHRva2VuCiAgICAgICAgICAgICMgZm9yIHNwZWNpYWwgYWxpZ25tZW50LiAgQWN0dWFsIHBhZGRpbmcgaXMgZG9uZSBpbiB0aGUKICAgICAgICAgICAgIyBjb250aW51ZSBibG9jay4KCiAgICAgICAgICAgICMgbG9va2luZyBmb3IgbmV4dCB1bnZpc2l0ZWQgaW5kZW50YXRpb24gaXRlbQogICAgICAgICAgICBteSAkaW5kZW50YXRpb24gPSAkbGVhZGluZ19zcGFjZXNfdG9fZ29bJGldOwogICAgICAgICAgICBpZiAoICEkaW5kZW50YXRpb24tPmdldF9tYXJrZWQoKSApIHsKICAgICAgICAgICAgICAgICRpbmRlbnRhdGlvbi0+c2V0X21hcmtlZCgxKTsKCiAgICAgICAgICAgICAgICAjIGxvb2tpbmcgZm9yIGluZGVudGF0aW9uIGl0ZW0gZm9yIHdoaWNoIHdlIGFyZSBhbGlnbmluZwogICAgICAgICAgICAgICAgIyB3aXRoIHBhcmVucywgYnJhY2VzLCBhbmQgYnJhY2tldHMKICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzICggJGluZGVudGF0aW9uLT5nZXRfYWxpZ25fcGFyZW4oKSApOwoKICAgICAgICAgICAgICAgICMgc2tpcCBjbG9zZWQgY29udGFpbmVyIG9uIHRoaXMgbGluZQogICAgICAgICAgICAgICAgaWYgKCAkaSA+ICRpYmVnICkgewogICAgICAgICAgICAgICAgICAgIG15ICRpbSA9IG1heCggJGliZWcsICRpcHJldl90b19nb1skaV0gKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICAgJHR5cGVfc2VxdWVuY2VfdG9fZ29bJGltXQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkbWF0ZV9pbmRleF90b19nb1skaW1dIDw9ICRpZW5kICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggJGxpbmUgPT0gMSAmJiAkaSA9PSAkaWJlZyApIHsKICAgICAgICAgICAgICAgICAgICAkZG9fbm90X3BhZCA9IDE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBPaywgbGV0J3Mgc2VlIHdoYXQgdGhlIGVycm9yIGlzIGFuZCB0cnkgdG8gZml4IGl0CiAgICAgICAgICAgICAgICBteSAkYWN0dWFsX3BvczsKICAgICAgICAgICAgICAgIG15ICRwcmVkaWN0ZWRfcG9zID0gJGluZGVudGF0aW9uLT5nZXRfc3BhY2VzKCk7CiAgICAgICAgICAgICAgICBpZiAoICRpID4gJGliZWcgKSB7CgogICAgICAgICAgICAgICAgICAgICMgdG9rZW4gaXMgbWlkLWxpbmUgLSB1c2UgbGVuZ3RoIHRvIHByZXZpb3VzIHRva2VuCiAgICAgICAgICAgICAgICAgICAgJGFjdHVhbF9wb3MgPSB0b3RhbF9saW5lX2xlbmd0aCggJGliZWcsICRpIC0gMSApOwoKICAgICAgICAgICAgICAgICAgICAjIGZvciBtaWQtbGluZSB0b2tlbiwgd2UgbXVzdCBjaGVjayB0byBzZWUgaWYgYWxsCiAgICAgICAgICAgICAgICAgICAgIyBhZGRpdGlvbmFsIGxpbmVzIGhhdmUgY29udGludWF0aW9uIGluZGVudGF0aW9uLAogICAgICAgICAgICAgICAgICAgICMgYW5kIHJlbW92ZSBpdCBpZiBzby4gIE90aGVyd2lzZSwgd2UgZG8gbm90IGdldAogICAgICAgICAgICAgICAgICAgICMgZ29vZCBhbGlnbm1lbnQuCiAgICAgICAgICAgICAgICAgICAgbXkgJGNsb3NpbmdfaW5kZXggPSAkaW5kZW50YXRpb24tPmdldF9jbG9zZWQoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICRjbG9zaW5nX2luZGV4ID4gJGllbmQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpYmVnX25leHQgPSAkcmlfZmlyc3QtPlsgJGxpbmUgKyAxIF07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGNpX2xldmVsc190b19nb1skaWJlZ19uZXh0XSA+IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi0+dW5kb19scF9jaSggJGxpbmUsICRpLCAkY2xvc2luZ19pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmlfZmlyc3QsICRyaV9sYXN0ICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRsaW5lID4gMCApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBoYW5kbGUgY2FzZSB3aGVyZSB0b2tlbiBzdGFydHMgYSBuZXcgbGluZTsKICAgICAgICAgICAgICAgICAgICAjIHVzZSBsZW5ndGggb2YgcHJldmlvdXMgbGluZQogICAgICAgICAgICAgICAgICAgIG15ICRpYmVnbSA9ICRyaV9maXJzdC0+WyAkbGluZSAtIDEgXTsKICAgICAgICAgICAgICAgICAgICBteSAkaWVuZG0gPSAkcmlfbGFzdC0+WyAkbGluZSAtIDEgXTsKICAgICAgICAgICAgICAgICAgICAkYWN0dWFsX3BvcyA9IHRvdGFsX2xpbmVfbGVuZ3RoKCAkaWJlZ20sICRpZW5kbSApOwoKICAgICAgICAgICAgICAgICAgICAjIGZvbGxvdyAtcHQgc3R5bGUKICAgICAgICAgICAgICAgICAgICArKyRhY3R1YWxfcG9zCiAgICAgICAgICAgICAgICAgICAgICBpZiAoICR0eXBlc190b19nb1sgJGllbmRtICsgMSBdIGVxICdiJyApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICMgdG9rZW4gaXMgZmlyc3QgY2hhcmFjdGVyIG9mIGZpcnN0IGxpbmUgb2YgYmF0Y2gKICAgICAgICAgICAgICAgICAgICAkYWN0dWFsX3BvcyA9ICRwcmVkaWN0ZWRfcG9zOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRtb3ZlX3JpZ2h0ID0gJGFjdHVhbF9wb3MgLSAkcHJlZGljdGVkX3BvczsKCiAgICAgICAgICAgICAgICAjIGRvbmUgaWYgbm8gZXJyb3IgdG8gY29ycmVjdCAoZ251Mi50KQogICAgICAgICAgICAgICAgaWYgKCAkbW92ZV9yaWdodCA9PSAwICkgewogICAgICAgICAgICAgICAgICAgICRpbmRlbnRhdGlvbi0+c2V0X3JlY292ZXJhYmxlX3NwYWNlcygkbW92ZV9yaWdodCk7CiAgICAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGlmIHdlIGhhdmUgbm90IHNlZW4gY2xvc3VyZSBmb3IgdGhpcyBpbmRlbnRhdGlvbiBpbgogICAgICAgICAgICAgICAgIyB0aGlzIGJhdGNoLCB3ZSBjYW4gb25seSBwYXNzIG9uIGEgcmVxdWVzdCB0byB0aGUKICAgICAgICAgICAgICAgICMgdmVydGljYWwgYWxpZ25lcgogICAgICAgICAgICAgICAgbXkgJGNsb3NpbmdfaW5kZXggPSAkaW5kZW50YXRpb24tPmdldF9jbG9zZWQoKTsKCiAgICAgICAgICAgICAgICBpZiAoICRjbG9zaW5nX2luZGV4IDwgMCApIHsKICAgICAgICAgICAgICAgICAgICAkaW5kZW50YXRpb24tPnNldF9yZWNvdmVyYWJsZV9zcGFjZXMoJG1vdmVfcmlnaHQpOwogICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBJZiBuZWNlc3NhcnksIGxvb2sgYWhlYWQgdG8gc2VlIGlmIHRoZXJlIGlzIHJlYWxseSBhbnkKICAgICAgICAgICAgICAgICMgbGVhZGluZyB3aGl0ZXNwYWNlIGRlcGVuZGVudCBvbiB0aGlzIHdoaXRlc3BhY2UsIGFuZAogICAgICAgICAgICAgICAgIyBhbHNvIGZpbmQgdGhlIGxvbmdlc3QgbGluZSB1c2luZyB0aGlzIHdoaXRlc3BhY2UuCiAgICAgICAgICAgICAgICAjIFNpbmNlIGl0IGlzIGFsd2F5cyBzYWZlIHRvIG1vdmUgbGVmdCBpZiB0aGVyZSBhcmUgbm8KICAgICAgICAgICAgICAgICMgZGVwZW5kZW50cywgd2Ugb25seSBuZWVkIHRvIGRvIHRoaXMgaWYgd2UgbWF5IGhhdmUKICAgICAgICAgICAgICAgICMgZGVwZW5kZW50IG5vZGVzIG9yIG5lZWQgdG8gbW92ZSByaWdodC4KCiAgICAgICAgICAgICAgICBteSAkcmlnaHRfbWFyZ2luID0gMDsKICAgICAgICAgICAgICAgIG15ICRoYXZlX2NoaWxkICAgPSAkaW5kZW50YXRpb24tPmdldF9oYXZlX2NoaWxkKCk7CgogICAgICAgICAgICAgICAgbXkgJXNhd19pbmRlbnRhdGlvbjsKICAgICAgICAgICAgICAgIG15ICRsaW5lX2NvdW50ID0gMTsKICAgICAgICAgICAgICAgICRzYXdfaW5kZW50YXRpb257JGluZGVudGF0aW9ufSA9ICRpbmRlbnRhdGlvbjsKCiAgICAgICAgICAgICAgICBpZiAoICRoYXZlX2NoaWxkIHx8ICRtb3ZlX3JpZ2h0ID4gMCApIHsKICAgICAgICAgICAgICAgICAgICAkaGF2ZV9jaGlsZCA9IDA7CiAgICAgICAgICAgICAgICAgICAgbXkgJG1heF9sZW5ndGggPSAwOwogICAgICAgICAgICAgICAgICAgIGlmICggJGkgPT0gJGliZWcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRtYXhfbGVuZ3RoID0gdG90YWxfbGluZV9sZW5ndGgoICRpYmVnLCAkaWVuZCApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBsb29rIGFoZWFkIGF0IHRoZSByZXN0IG9mIHRoZSBsaW5lcyBvZiB0aGlzIGJhdGNoLi4KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRsaW5lX3QgKCAkbGluZSArIDEgLi4gJG1heF9saW5lICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkaWJlZ190ID0gJHJpX2ZpcnN0LT5bJGxpbmVfdF07CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpZW5kX3QgPSAkcmlfbGFzdC0+WyRsaW5lX3RdOwogICAgICAgICAgICAgICAgICAgICAgICBsYXN0IGlmICggJGNsb3NpbmdfaW5kZXggPD0gJGliZWdfdCApOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyByZW1lbWJlciBhbGwgZGlmZmVyZW50IGluZGVudGF0aW9uIG9iamVjdHMKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGluZGVudGF0aW9uX3QgPSAkbGVhZGluZ19zcGFjZXNfdG9fZ29bJGliZWdfdF07CiAgICAgICAgICAgICAgICAgICAgICAgICRzYXdfaW5kZW50YXRpb257JGluZGVudGF0aW9uX3R9ID0gJGluZGVudGF0aW9uX3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICRsaW5lX2NvdW50Kys7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIGxvbmdlc3QgbGluZSBpbiB0aGUgZ3JvdXAKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGxlbmd0aF90ID0gdG90YWxfbGluZV9sZW5ndGgoICRpYmVnX3QsICRpZW5kX3QgKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkbGVuZ3RoX3QgPiAkbWF4X2xlbmd0aCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtYXhfbGVuZ3RoID0gJGxlbmd0aF90OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRyaWdodF9tYXJnaW4gPQogICAgICAgICAgICAgICAgICAgICAgJG1heGltdW1fbGluZV9sZW5ndGhbICRsZXZlbHNfdG9fZ29bJGliZWddIF0gLQogICAgICAgICAgICAgICAgICAgICAgJG1heF9sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkcmlnaHRfbWFyZ2luIDwgMCApIHsgJHJpZ2h0X21hcmdpbiA9IDAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRmaXJzdF9saW5lX2NvbW1hX2NvdW50ID0KICAgICAgICAgICAgICAgICAgZ3JlcCB7ICRfIGVxICcsJyB9IEB0eXBlc190b19nb1sgJGliZWcgLi4gJGllbmQgXTsKICAgICAgICAgICAgICAgIG15ICRjb21tYV9jb3VudCA9ICRpbmRlbnRhdGlvbi0+Z2V0X2NvbW1hX2NvdW50KCk7CiAgICAgICAgICAgICAgICBteSAkYXJyb3dfY291bnQgPSAkaW5kZW50YXRpb24tPmdldF9hcnJvd19jb3VudCgpOwoKICAgICAgICAgICAgICAgICMgVGhpcyBpcyBhIHNpbXBsZSBhcHByb3hpbWF0ZSB0ZXN0IGZvciB2ZXJ0aWNhbCBhbGlnbm1lbnQ6CiAgICAgICAgICAgICAgICAjIGlmIHdlIGJyb2tlIGp1c3QgYWZ0ZXIgYW4gb3BlbmluZyBwYXJlbiwgYnJhY2UsIGJyYWNrZXQsCiAgICAgICAgICAgICAgICAjIGFuZCB0aGVyZSBhcmUgMiBvciBtb3JlIGNvbW1hcyBpbiB0aGUgZmlyc3QgbGluZSwKICAgICAgICAgICAgICAgICMgYW5kIHRoZXJlIGFyZSBubyAnPT4ncywKICAgICAgICAgICAgICAgICMgdGhlbiB3ZSBhcmUgcHJvYmFibHkgdmVydGljYWxseSBhbGlnbmVkLiAgV2UgY291bGQgc2V0CiAgICAgICAgICAgICAgICAjIGFuIGV4YWN0IGZsYWcgaW4gc3ViIHNjYW5fbGlzdCwgYnV0IHRoaXMgaXMgZ29vZAogICAgICAgICAgICAgICAgIyBlbm91Z2guCiAgICAgICAgICAgICAgICBteSAkaW5kZW50YXRpb25fY291bnQgPSBrZXlzICVzYXdfaW5kZW50YXRpb247CiAgICAgICAgICAgICAgICBteSAkaXNfdmVydGljYWxseV9hbGlnbmVkID0KICAgICAgICAgICAgICAgICAgKCAgICAgICRpID09ICRpYmVnCiAgICAgICAgICAgICAgICAgICAgICAmJiAkZmlyc3RfbGluZV9jb21tYV9jb3VudCA+IDEKICAgICAgICAgICAgICAgICAgICAgICYmICRpbmRlbnRhdGlvbl9jb3VudCA9PSAxCiAgICAgICAgICAgICAgICAgICAgICAmJiAoICRhcnJvd19jb3VudCA9PSAwIHx8ICRhcnJvd19jb3VudCA9PSAkbGluZV9jb3VudCApICk7CgogICAgICAgICAgICAgICAgIyBNYWtlIHRoZSBtb3ZlIGlmIHBvc3NpYmxlIC4uCiAgICAgICAgICAgICAgICBpZiAoCgogICAgICAgICAgICAgICAgICAgICMgd2UgY2FuIGFsd2F5cyBtb3ZlIGxlZnQKICAgICAgICAgICAgICAgICAgICAkbW92ZV9yaWdodCA8IDAKCiAgICAgICAgICAgICAgICAgICAgIyBidXQgd2Ugc2hvdWxkIG9ubHkgbW92ZSByaWdodCBpZiB3ZSBhcmUgc3VyZSBpdCB3aWxsCiAgICAgICAgICAgICAgICAgICAgIyBub3Qgc3BvaWwgdmVydGljYWwgYWxpZ25tZW50CiAgICAgICAgICAgICAgICAgICAgfHwgKCAkY29tbWFfY291bnQgPT0gMCApCiAgICAgICAgICAgICAgICAgICAgfHwgKCAkY29tbWFfY291bnQgPiAwICYmICEkaXNfdmVydGljYWxseV9hbGlnbmVkICkKICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG15ICRtb3ZlID0KICAgICAgICAgICAgICAgICAgICAgICggJG1vdmVfcmlnaHQgPD0gJHJpZ2h0X21hcmdpbiApCiAgICAgICAgICAgICAgICAgICAgICA/ICRtb3ZlX3JpZ2h0CiAgICAgICAgICAgICAgICAgICAgICA6ICRyaWdodF9tYXJnaW47CgogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCBrZXlzICVzYXdfaW5kZW50YXRpb24gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzYXdfaW5kZW50YXRpb257JF99CiAgICAgICAgICAgICAgICAgICAgICAgICAgLT5wZXJtYW5lbnRseV9kZWNyZWFzZV9hdmFpbGFibGVfc3BhY2VzKCAtJG1vdmUgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBPdGhlcndpc2UsIHJlY29yZCB3aGF0IHdlIHdhbnQgYW5kIHRoZSB2ZXJ0aWNhbCBhbGlnbmVyCiAgICAgICAgICAgICAgICAjIHdpbGwgdHJ5IHRvIHJlY292ZXIgaXQuCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkaW5kZW50YXRpb24tPnNldF9yZWNvdmVyYWJsZV9zcGFjZXMoJG1vdmVfcmlnaHQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuICRkb19ub3RfcGFkOwp9CgpzdWIgdW5kb19scF9jaSB7CgogICAgIyBJZiB0aGVyZSBpcyBhIHNpbmdsZSwgbG9uZyBwYXJhbWV0ZXIgd2l0aGluIHBhcmVucywgbGlrZSB0aGlzOgogICAgIwogICAgIyAgJHNlbGYtPmNvbW1hbmQoICIvbXNnICIKICAgICMgICAgICAgIC4gJGluZm9saW5lLT5jaGFuCiAgICAjICAgICAgICAuICIgWW91IHNhaWQgJDEsIGJ1dCBkaWQgeW91IGtub3cgdGhhdCBpdCdzIHNxdWFyZSB3YXMgIgogICAgIyAgICAgICAgLiAkMSAqICQxIC4gIiA/IiApOwogICAgIwogICAgIyB3ZSBjYW4gcmVtb3ZlIHRoZSBjb250aW51YXRpb24gaW5kZW50YXRpb24gb2YgdGhlIDJuZCBhbmQgaGlnaGVyIGxpbmVzCiAgICAjIHRvIGFjaGlldmUgdGhpcyBlZmZlY3QsIHdoaWNoIGlzIG1vcmUgcGxlYXNpbmc6CiAgICAjCiAgICAjICAkc2VsZi0+Y29tbWFuZCgiL21zZyAiCiAgICAjICAgICAgICAgICAgICAgICAuICRpbmZvbGluZS0+Y2hhbgogICAgIyAgICAgICAgICAgICAgICAgLiAiIFlvdSBzYWlkICQxLCBidXQgZGlkIHlvdSBrbm93IHRoYXQgaXQncyBzcXVhcmUgd2FzICIKICAgICMgICAgICAgICAgICAgICAgIC4gJDEgKiAkMSAuICIgPyIpOwoKICAgIG15ICggJHNlbGYsICRsaW5lX29wZW4sICRpX3N0YXJ0LCAkY2xvc2luZ19pbmRleCwgJHJpX2ZpcnN0LCAkcmlfbGFzdCApID0KICAgICAgQF87CiAgICBteSAkbWF4X2xpbmUgPSBAeyRyaV9maXJzdH0gLSAxOwoKICAgICMgbXVzdCBiZSBtdWx0aXBsZSBsaW5lcwogICAgcmV0dXJuIHVubGVzcyAkbWF4X2xpbmUgPiAkbGluZV9vcGVuOwoKICAgIG15ICRsZXZfc3RhcnQgICAgID0gJGxldmVsc190b19nb1skaV9zdGFydF07CiAgICBteSAkY2lfc3RhcnRfcGx1cyA9IDEgKyAkY2lfbGV2ZWxzX3RvX2dvWyRpX3N0YXJ0XTsKCiAgICAjIHNlZSBpZiBhbGwgYWRkaXRpb25hbCBsaW5lcyBpbiB0aGlzIGNvbnRhaW5lciBoYXZlIGNvbnRpbnVhdGlvbgogICAgIyBpbmRlbnRhdGlvbgogICAgbXkgJG47CiAgICBteSAkbGluZV8xID0gMSArICRsaW5lX29wZW47CiAgICBmb3IgKCAkbiA9ICRsaW5lXzEgOyAkbiA8PSAkbWF4X2xpbmUgOyArKyRuICkgewogICAgICAgIG15ICRpYmVnID0gJHJpX2ZpcnN0LT5bJG5dOwogICAgICAgIG15ICRpZW5kID0gJHJpX2xhc3QtPlskbl07CiAgICAgICAgaWYgKCAkaWJlZyBlcSAkY2xvc2luZ19pbmRleCApIHsgJG4tLTsgbGFzdCB9CiAgICAgICAgcmV0dXJuIGlmICggJGxldl9zdGFydCAhPSAkbGV2ZWxzX3RvX2dvWyRpYmVnXSApOwogICAgICAgIHJldHVybiBpZiAoICRjaV9zdGFydF9wbHVzICE9ICRjaV9sZXZlbHNfdG9fZ29bJGliZWddICk7CiAgICAgICAgbGFzdCAgIGlmICggJGNsb3NpbmdfaW5kZXggPD0gJGllbmQgKTsKICAgIH0KCiAgICAjIHdlIGNhbiByZWR1Y2UgdGhlIGluZGVudGF0aW9uIG9mIGFsbCBjb250aW51YXRpb24gbGluZXMKICAgIG15ICRjb250aW51YXRpb25fbGluZV9jb3VudCA9ICRuIC0gJGxpbmVfb3BlbjsKICAgIEBjaV9sZXZlbHNfdG9fZ29bIEB7JHJpX2ZpcnN0fVsgJGxpbmVfMSAuLiAkbiBdIF0gPQogICAgICAoMCkgeCAoJGNvbnRpbnVhdGlvbl9saW5lX2NvdW50KTsKICAgIEBsZWFkaW5nX3NwYWNlc190b19nb1sgQHskcmlfZmlyc3R9WyAkbGluZV8xIC4uICRuIF0gXSA9CiAgICAgIEByZWR1Y2VkX3NwYWNlc190b19nb1sgQHskcmlfZmlyc3R9WyAkbGluZV8xIC4uICRuIF0gXTsKICAgIHJldHVybjsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBDT0RFIFNFQ1RJT04gMTA6IENvZGUgdG8gYnJlYWsgbG9uZyBzdGF0bWVudHMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnN1YiBzZXRfY29udGludWF0aW9uX2JyZWFrcyB7CgogICAgIyBDYWxsZWQgb25jZSBwZXIgYmF0Y2ggdG8gc2V0IGJyZWFrcyBpbiBsb25nIGxpbmVzLgoKICAgICMgRGVmaW5lIGFuIGFycmF5IG9mIGluZGV4ZXMgZm9yIGluc2VydGluZyBuZXdsaW5lIGNoYXJhY3RlcnMgdG8KICAgICMga2VlcCB0aGUgbGluZSBsZW5ndGhzIGJlbG93IHRoZSBtYXhpbXVtIGRlc2lyZWQgbGVuZ3RoLiAgVGhlcmUgaXMKICAgICMgYW4gaW1wbGllZCBicmVhayBhZnRlciB0aGUgbGFzdCB0b2tlbiwgc28gaXQgbmVlZCBub3QgYmUgaW5jbHVkZWQuCgogICAgIyBNZXRob2Q6CiAgICAjIFRoaXMgcm91dGluZSBpcyBwYXJ0IG9mIHNlcmllcyBvZiByb3V0aW5lcyB3aGljaCBhZGp1c3QgbGluZQogICAgIyBsZW5ndGhzLiAgSXQgaXMgb25seSBjYWxsZWQgaWYgYSBzdGF0ZW1lbnQgaXMgbG9uZ2VyIHRoYW4gdGhlCiAgICAjIG1heGltdW0gbGluZSBsZW5ndGgsIG9yIGlmIGEgcHJlbGltaW5hcnkgc2Nhbm5pbmcgbG9jYXRlZAogICAgIyBkZXNpcmFibGUgYnJlYWsgcG9pbnRzLiAgIFN1YiBzY2FuX2xpc3QgaGFzIGFscmVhZHkgbG9va2VkIGF0CiAgICAjIHRoZXNlIHRva2VucyBhbmQgc2V0IGJyZWFrcG9pbnRzIChpbiBhcnJheQogICAgIyAkZm9yY2VkX2JyZWFrcG9pbnRfdG9fZ29bJGldKSB3aGVyZSBpdCB3YW50cyBicmVha3MgKGZvciBleGFtcGxlCiAgICAjIGFmdGVyIGNvbW1hcywgYWZ0ZXIgb3BlbmluZyBwYXJlbnMsIGFuZCBiZWZvcmUgY2xvc2luZyBwYXJlbnMpLgogICAgIyBUaGlzIHJvdXRpbmUgd2lsbCBob25vciB0aGVzZSBicmVha3BvaW50cyBhbmQgYWxzbyBhZGQgYWRkaXRpb25hbAogICAgIyBicmVha3BvaW50cyBhcyBuZWNlc3NhcnkgdG8ga2VlcCB0aGUgbGluZSBsZW5ndGggYmVsb3cgdGhlIG1heGltdW0KICAgICMgcmVxdWVzdGVkLiAgSXQgYmFzZXMgaXRzIGRlY2lzaW9uIG9uIHdoZXJlIHRoZSAnYm9uZCBzdHJlbmd0aCcgaXMKICAgICMgbG93ZXN0LgoKICAgICMgT3V0cHV0OiByZXR1cm5zIHJlZmVyZW5jZXMgdG8gdGhlIGFycmF5czoKICAgICMgIEBpX2ZpcnN0CiAgICAjICBAaV9sYXN0CiAgICAjIHdoaWNoIGNvbnRhaW4gdGhlIGluZGV4ZXMgJGkgb2YgdGhlIGZpcnN0IGFuZCBsYXN0IHRva2VucyBvbiBlYWNoCiAgICAjIGxpbmUuCgogICAgIyBJbiBhZGRpdGlvbiwgdGhlIGFycmF5OgogICAgIyAgICRmb3JjZWRfYnJlYWtwb2ludF90b19nb1skaV0KICAgICMgbWF5IGJlIHVwZGF0ZWQgdG8gYmUgPTEgZm9yIGFueSBpbmRleCAkaSBhZnRlciB3aGljaCB0aGVyZSBtdXN0IGJlCiAgICAjIGEgYnJlYWsuICBUaGlzIHNpZ25hbHMgbGF0ZXIgcm91dGluZXMgbm90IHRvIHVuZG8gdGhlIGJyZWFrcG9pbnQuCgogICAgbXkgKCAkc2VsZiwgJHNhd19nb29kX2JyZWFrLCAkcmNvbG9uX2xpc3QgKSA9IEBfOwoKICAgICMgQHskcmNvbG9uX2xpc3R9IGlzIGEgbGlzdCBvZiBhbGwgdGhlID8gYW5kIDogdG9rZW5zIGluIHRoZSBiYXRjaCwgaW4KICAgICMgb3JkZXIuCgogICAgdXNlIGNvbnN0YW50IERFQlVHX0JSRUFLUE9JTlRTID0+IDA7CgogICAgbXkgQGlfZmlyc3QgICAgICAgID0gKCk7ICAgICMgdGhlIGZpcnN0IGluZGV4IHRvIG91dHB1dAogICAgbXkgQGlfbGFzdCAgICAgICAgID0gKCk7ICAgICMgdGhlIGxhc3QgaW5kZXggdG8gb3V0cHV0CiAgICBteSBAaV9jb2xvbl9icmVha3MgPSAoKTsgICAgIyBuZWVkZWQgdG8gZGVjaWRlIGlmIHdlIGhhdmUgdG8gYnJlYWsgYXQgPydzCiAgICBpZiAoICR0eXBlc190b19nb1swXSBlcSAnOicgKSB7IHB1c2ggQGlfY29sb25fYnJlYWtzLCAwIH0KCiAgICBteSAkck9wdHNfZnV6enlfbGluZV9sZW5ndGggPSAkck9wdHMtPnsnZnV6enktbGluZS1sZW5ndGgnfTsKCiAgICAkc2VsZi0+c2V0X2JvbmRfc3RyZW5ndGhzKCk7CgogICAgbXkgJGltaW4gPSAwOwogICAgbXkgJGltYXggPSAkbWF4X2luZGV4X3RvX2dvOwogICAgaWYgKCAkdHlwZXNfdG9fZ29bJGltaW5dIGVxICdiJyApIHsgJGltaW4rKyB9CiAgICBpZiAoICR0eXBlc190b19nb1skaW1heF0gZXEgJ2InICkgeyAkaW1heC0tIH0KICAgIG15ICRpX2JlZ2luID0gJGltaW47ICAgICAgICAjIGluZGV4IGZvciBzdGFydGluZyBuZXh0IGl0ZXJhdGlvbgoKICAgIG15ICRsZWFkaW5nX3NwYWNlcyAgICAgICAgICA9IGxlYWRpbmdfc3BhY2VzX3RvX2dvKCRpbWluKTsKICAgIG15ICRsaW5lX2NvdW50ICAgICAgICAgICAgICA9IDA7CiAgICBteSAkbGFzdF9icmVha19zdHJlbmd0aCAgICAgPSBOT19CUkVBSzsKICAgIG15ICRpX2xhc3RfYnJlYWsgICAgICAgICAgICA9IC0xOwogICAgbXkgJG1heF9iaWFzICAgICAgICAgICAgICAgID0gMC4wMDE7CiAgICBteSAkdGlueV9iaWFzICAgICAgICAgICAgICAgPSAwLjAwMDE7CiAgICBteSAkbGVhZGluZ19hbGlnbm1lbnRfdG9rZW4gPSAiIjsKICAgIG15ICRsZWFkaW5nX2FsaWdubWVudF90eXBlICA9ICIiOwoKICAgICMgc2VlIGlmIGFueSA/LzoncyBhcmUgaW4gb3JkZXIKICAgIG15ICRjb2xvbnNfaW5fb3JkZXIgPSAxOwogICAgbXkgJGxhc3RfdG9rICAgICAgICA9ICIiOwogICAgZm9yZWFjaCAoIEB7JHJjb2xvbl9saXN0fSApIHsKICAgICAgICBpZiAoICRfIGVxICRsYXN0X3RvayApIHsgJGNvbG9uc19pbl9vcmRlciA9IDA7IGxhc3QgfQogICAgICAgICRsYXN0X3RvayA9ICRfOwogICAgfQoKICAgICMgVGhpcyBpcyBhIHN1ZmZpY2llbnQgYnV0IG5vdCBuZWNlc3NhcnkgY29uZGl0aW9uIGZvciBjb2xvbiBjaGFpbgogICAgbXkgJGlzX2NvbG9uX2NoYWluID0gKCAkY29sb25zX2luX29yZGVyICYmIEB7JHJjb2xvbl9saXN0fSA+IDIgKTsKCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBCRUdJTk5JTkcgb2YgbWFpbiBsb29wIHRvIHNldCBjb250aW51YXRpb24gYnJlYWtwb2ludHMKICAgICMgS2VlcCBpdGVyYXRpbmcgdW50aWwgd2UgcmVhY2ggdGhlIGVuZAogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIHdoaWxlICggJGlfYmVnaW4gPD0gJGltYXggKSB7CiAgICAgICAgbXkgJGxvd2VzdF9zdHJlbmd0aCAgICAgICAgPSBOT19CUkVBSzsKICAgICAgICBteSAkc3RhcnRpbmdfc3VtICAgICAgICAgICA9ICRzdW1tZWRfbGVuZ3Roc190b19nb1skaV9iZWdpbl07CiAgICAgICAgbXkgJGlfbG93ZXN0ICAgICAgICAgICAgICAgPSAtMTsKICAgICAgICBteSAkaV90ZXN0ICAgICAgICAgICAgICAgICA9IC0xOwogICAgICAgIG15ICRsb3dlc3RfbmV4dF90b2tlbiAgICAgID0gJyc7CiAgICAgICAgbXkgJGxvd2VzdF9uZXh0X3R5cGUgICAgICAgPSAnYic7CiAgICAgICAgbXkgJGlfbG93ZXN0X25leHRfbm9uYmxhbmsgPSAtMTsKICAgICAgICBteSAkbWF4aW11bV9saW5lX2xlbmd0aCA9CiAgICAgICAgICAkbWF4aW11bV9saW5lX2xlbmd0aFsgJGxldmVsc190b19nb1skaV9iZWdpbl0gXTsKCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIEJFR0lOTklORyBvZiBpbm5lciBsb29wIHRvIGZpbmQgdGhlIGJlc3QgbmV4dCBicmVha3BvaW50CiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBteSAkc3RyZW5ndGggPSBOT19CUkVBSzsKICAgICAgICBmb3IgKCAkaV90ZXN0ID0gJGlfYmVnaW4gOyAkaV90ZXN0IDw9ICRpbWF4IDsgJGlfdGVzdCsrICkgewogICAgICAgICAgICBteSAkdHlwZSAgICAgICAgICAgICAgICAgICAgID0gJHR5cGVzX3RvX2dvWyRpX3Rlc3RdOwogICAgICAgICAgICBteSAkdG9rZW4gICAgICAgICAgICAgICAgICAgID0gJHRva2Vuc190b19nb1skaV90ZXN0XTsKICAgICAgICAgICAgbXkgJG5leHRfdHlwZSAgICAgICAgICAgICAgICA9ICR0eXBlc190b19nb1sgJGlfdGVzdCArIDEgXTsKICAgICAgICAgICAgbXkgJG5leHRfdG9rZW4gICAgICAgICAgICAgICA9ICR0b2tlbnNfdG9fZ29bICRpX3Rlc3QgKyAxIF07CiAgICAgICAgICAgIG15ICRpX25leHRfbm9uYmxhbmsgICAgICAgICAgPSAkaW5leHRfdG9fZ29bJGlfdGVzdF07CiAgICAgICAgICAgIG15ICRuZXh0X25vbmJsYW5rX3R5cGUgICAgICAgPSAkdHlwZXNfdG9fZ29bJGlfbmV4dF9ub25ibGFua107CiAgICAgICAgICAgIG15ICRuZXh0X25vbmJsYW5rX3Rva2VuICAgICAgPSAkdG9rZW5zX3RvX2dvWyRpX25leHRfbm9uYmxhbmtdOwogICAgICAgICAgICBteSAkbmV4dF9ub25ibGFua19ibG9ja190eXBlID0gJGJsb2NrX3R5cGVfdG9fZ29bJGlfbmV4dF9ub25ibGFua107CgogICAgICAgICAgICAjIGFkanVzdG1lbnRzIHRvIHRoZSBwcmV2aW91cyBib25kIHN0cmVuZ3RoIG1heSBoYXZlIGJlZW4gbWFkZSwgYW5kCiAgICAgICAgICAgICMgd2UgbXVzdCBrZWVwIHRoZSBib25kIHN0cmVuZ3RoIG9mIGEgdG9rZW4gYW5kIGl0cyBmb2xsb3dpbmcgYmxhbmsKICAgICAgICAgICAgIyB0aGUgc2FtZTsKICAgICAgICAgICAgbXkgJGxhc3Rfc3RyZW5ndGggPSAkc3RyZW5ndGg7CiAgICAgICAgICAgICRzdHJlbmd0aCA9ICRib25kX3N0cmVuZ3RoX3RvX2dvWyRpX3Rlc3RdOwogICAgICAgICAgICBpZiAoICR0eXBlIGVxICdiJyApIHsgJHN0cmVuZ3RoID0gJGxhc3Rfc3RyZW5ndGggfQoKICAgICAgICAgICAgIyB1c2Ugb2xkIGJyZWFrcyBhcyBhIHRpZS1icmVha2VyLiAgRm9yIGV4YW1wbGUgdG8KICAgICAgICAgICAgIyBwcmV2ZW50IGJsaW5rZXJzIHdpdGggLXBicCBpbiB0aGlzIGNvZGU6CgojI0BrZXl3b3Jkc3sKIyMgICAgcXcvQVJHIE9VVFBVVCBQUk9UTyBDT05TVFJVQ1RPUiBSRVRVUk5TIERFU0MgUEFSQU1TIFNFRUFMU08gRVhBTVBMRS99CiMjICAgID0gKCk7CgogICAgICAgICAgICAjIEF0IHRoZSBzYW1lIHRpbWUgdHJ5IHRvIHByZXZlbnQgYSBsZWFkaW5nICogaW4gdGhpcyBjb2RlCiAgICAgICAgICAgICMgd2l0aCB0aGUgZGVmYXVsdCBmb3JtYXR0aW5nOgogICAgICAgICAgICAjCiMjICAgICAgICAgICAgICAgIHJldHVybgojIyAgICAgICAgICAgICAgICAgICAgZmFjdG9yaWFsKCAkYSArICRiIC0gMSApIC8gZmFjdG9yaWFsKCAkYSAtIDEgKSAvIGZhY3RvcmlhbCggJGIgLSAxICkKIyMgICAgICAgICAgICAgICAgICAqICggJHgqKiggJGEgLSAxICkgKQojIyAgICAgICAgICAgICAgICAgICogKCAoIDEgLSAkeCApKiooICRiIC0gMSApICk7CgogICAgICAgICAgICAjIHJlZHVjZSBzdHJlbmd0aCBhIGJpdCB0byBicmVhayB0aWVzIGF0IGFuIG9sZCBicmVha3BvaW50IC4uLgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkb2xkX2JyZWFrcG9pbnRfdG9fZ29bJGlfdGVzdF0KCiAgICAgICAgICAgICAgICAjIHdoaWNoIGlzIGEgJ2dvb2QnIGJyZWFrcG9pbnQsIG1lYW5pbmcgLi4uCiAgICAgICAgICAgICAgICAjIHdlIGRvbid0IHdhbnQgdG8gYnJlYWsgYmVmb3JlIGl0CiAgICAgICAgICAgICAgICAmJiAhJHdhbnRfYnJlYWtfYmVmb3JleyR0eXBlfQoKICAgICAgICAgICAgICAgICMgYW5kIGVpdGhlciB3ZSB3YW50IHRvIGJyZWFrIGJlZm9yZSB0aGUgbmV4dCB0b2tlbgogICAgICAgICAgICAgICAgIyBvciB0aGUgbmV4dCB0b2tlbiBpcyBub3Qgc2hvcnQgKGkuZS4gbm90IGEgJyonLCAnLycgZXRjLikKICAgICAgICAgICAgICAgICYmICRpX25leHRfbm9uYmxhbmsgPD0gJGltYXgKICAgICAgICAgICAgICAgICYmICggICAkd2FudF9icmVha19iZWZvcmV7JG5leHRfbm9uYmxhbmtfdHlwZX0KICAgICAgICAgICAgICAgICAgICB8fCAkdG9rZW5fbGVuZ3Roc190b19nb1skaV9uZXh0X25vbmJsYW5rXSA+IDIKICAgICAgICAgICAgICAgICAgICB8fCAkbmV4dF9ub25ibGFua190eXBlIGVxICcsJwogICAgICAgICAgICAgICAgICAgIHx8ICRpc19vcGVuaW5nX3R5cGV7JG5leHRfbm9uYmxhbmtfdHlwZX0gKQogICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHN0cmVuZ3RoIC09ICR0aW55X2JpYXM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgb3RoZXJ3aXNlIGluY3JlYXNlIHN0cmVuZ3RoIGEgYml0IGlmIHRoaXMgdG9rZW4gd291bGQgYmUgYXQgdGhlCiAgICAgICAgICAgICMgbWF4aW11bSBsaW5lIGxlbmd0aC4gIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGJsaW5raW5nCiAgICAgICAgICAgICMgaW4gdGhlIGFib3ZlIGV4YW1wbGUgd2hlbiB0aGUgLWlvYiBmbGFnIGlzIGFkZGVkLgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG15ICRsZW4gPQogICAgICAgICAgICAgICAgICAkbGVhZGluZ19zcGFjZXMgKwogICAgICAgICAgICAgICAgICAkc3VtbWVkX2xlbmd0aHNfdG9fZ29bICRpX3Rlc3QgKyAxIF0gLQogICAgICAgICAgICAgICAgICAkc3RhcnRpbmdfc3VtOwogICAgICAgICAgICAgICAgaWYgKCAkbGVuID49ICRtYXhpbXVtX2xpbmVfbGVuZ3RoICkgewogICAgICAgICAgICAgICAgICAgICRzdHJlbmd0aCArPSAkdGlueV9iaWFzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkbXVzdF9icmVhayA9IDA7CgogICAgICAgICAgICAjIEZvcmNlIGFuIGltbWVkaWF0ZSBicmVhayBhdCBjZXJ0YWluIG9wZXJhdG9ycwogICAgICAgICAgICAjIHdpdGggbG93ZXIgbGV2ZWwgdGhhbiB0aGUgc3RhcnQgb2YgdGhlIGxpbmUsCiAgICAgICAgICAgICMgdW5sZXNzIHdlJ3ZlIGFscmVhZHkgc2VlbiBhIGJldHRlciBicmVhay4KICAgICAgICAgICAgIwogICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgICAgICMgTm90ZSBvbiBhbiBpc3N1ZSB3aXRoIGEgcHJlY2VkaW5nID8KICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICAgICAjIFdlIGRvbid0IGluY2x1ZGUgYSA/IGluIHRoZSBhYm92ZSBsaXN0LCBidXQgdGhlcmUgbWF5CiAgICAgICAgICAgICMgYmUgYSBicmVhayBhdCBhIHByZXZpb3VzID8gaWYgdGhlIGxpbmUgaXMgbG9uZy4KICAgICAgICAgICAgIyBCZWNhdXNlIG9mIHRoaXMgd2UgZG8gbm90IHdhbnQgdG8gZm9yY2UgYSBicmVhayBpZgogICAgICAgICAgICAjIHRoZXJlIGlzIGEgcHJldmlvdXMgPyBvbiB0aGlzIGxpbmUuICBGb3Igbm93IHRoZSBiZXN0IHdheQogICAgICAgICAgICAjIHRvIGRvIHRoaXMgaXMgdG8gbm90IGJyZWFrIGlmIHdlIGhhdmUgc2VlbiBhIGxvd2VyIHN0cmVuZ3RoCiAgICAgICAgICAgICMgcG9pbnQsIHdoaWNoIGlzIHByb2JhYmx5IGEgPy4KICAgICAgICAgICAgIwogICAgICAgICAgICAjIEV4YW1wbGUgb2YgdW53YW50ZWQgYnJlYWtzIHdlIGFyZSBhdm9pZGluZyBhdCBhICcuJyBmb2xsb3dpbmcgYSA/CiAgICAgICAgICAgICMgZnJvbSBwb2QyaHRtbCB1c2luZyBwZXJsdGlkeSAtZ251OgogICAgICAgICAgICAjICkKICAgICAgICAgICAgIyA/ICJcbiZsdDtBIE5BTUU9XCIiCiAgICAgICAgICAgICMgLiAkdmFsdWUKICAgICAgICAgICAgIyAuICJcIiZndDtcbiR0ZXh0Jmx0Oy9BJmd0O1xuIgogICAgICAgICAgICAjIDogIlxuJHR5cGUkcG9kMi5odG1sXCMiIC4gJHZhbHVlIC4gIlwiJmd0OyR0ZXh0Jmx0O1wvQSZndDtcbiI7CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICggJHN0cmVuZ3RoIDw9ICRsb3dlc3Rfc3RyZW5ndGggKQogICAgICAgICAgICAgICAgJiYgKCAkbmVzdGluZ19kZXB0aF90b19nb1skaV9iZWdpbl0gPgogICAgICAgICAgICAgICAgICAgICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpX25leHRfbm9uYmxhbmtdICkKICAgICAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICAgICAkbmV4dF9ub25ibGFua190eXBlID1+IC9eKFwufFwmXCZ8XHxcfCkkLwogICAgICAgICAgICAgICAgICAgIHx8ICggICAkbmV4dF9ub25ibGFua190eXBlIGVxICdrJwogICAgICAgICAgICAgICAgICAgICAgICAmJiAkbmV4dF9ub25ibGFua190b2tlbiA9fiAvXihhbmR8b3IpJC8gKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHNlbGYtPnNldF9mb3JjZWRfYnJlYWtwb2ludCgkaV9uZXh0X25vbmJsYW5rKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKAoKICAgICAgICAgICAgICAgICMgVHJ5IHRvIHB1dCBhIGJyZWFrIHdoZXJlIHJlcXVlc3RlZCBieSBzY2FuX2xpc3QKICAgICAgICAgICAgICAgICRmb3JjZWRfYnJlYWtwb2ludF90b19nb1skaV90ZXN0XQoKICAgICAgICAgICAgICAgICMgYnJlYWsgYmV0d2VlbiApIHsgaW4gYSBjb250aW51ZWQgbGluZSBzbyB0aGF0IHRoZSAneycgY2FuCiAgICAgICAgICAgICAgICAjIGJlIG91dGRlbnRlZAogICAgICAgICAgICAgICAgIyBTZWUgc2ltaWxhciBsb2dpYyBpbiBzY2FuX2xpc3Qgd2hpY2ggY2F0Y2hlcyBpbnN0YW5jZXMKICAgICAgICAgICAgICAgICMgd2hlcmUgYSBsaW5lIGlzIGp1c3Qgc29tZXRoaW5nIGxpa2UgJykgeycuICBXZSBoYXZlIHRvCiAgICAgICAgICAgICAgICAjIGJlIGNhcmVmdWwgYmVjYXVzZSB0aGUgY29ycmVzcG9uZGluZyBibG9jayBrZXl3b3JkIG1pZ2h0CiAgICAgICAgICAgICAgICAjIG5vdCBiZSBvbiB0aGUgZmlyc3QgbGluZSwgc3VjaCBhcyAnZm9yJyBoZXJlOgogICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgIyBldmFsIHsKICAgICAgICAgICAgICAgICMgICAgIGZvciAoImEiKSB7CiAgICAgICAgICAgICAgICAjICAgICAgICAgZm9yICR4ICggMSwgMiApIHsgbG9jYWwgJF8gPSAiYiI7IHMvKC4qKS8rJDEvIH0KICAgICAgICAgICAgICAgICMgICAgIH0KICAgICAgICAgICAgICAgICMgfTsKICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgIHx8ICgKICAgICAgICAgICAgICAgICAgICAgICAkbGluZV9jb3VudAogICAgICAgICAgICAgICAgICAgICYmICggJHRva2VuIGVxICcpJyApCiAgICAgICAgICAgICAgICAgICAgJiYgKCAkbmV4dF9ub25ibGFua190eXBlIGVxICd7JyApCiAgICAgICAgICAgICAgICAgICAgJiYgKCRuZXh0X25vbmJsYW5rX2Jsb2NrX3R5cGUpCiAgICAgICAgICAgICAgICAgICAgJiYgKCAkbmV4dF9ub25ibGFua19ibG9ja190eXBlIG5lICR0b2tlbnNfdG9fZ29bJGlfYmVnaW5dICkKCiAgICAgICAgICAgICAgICAgICAgIyBSVCAjMTA0NDI3OiBEb250IGJyZWFrIGJlZm9yZSBvcGVuaW5nIHN1YiBicmFjZSBiZWNhdXNlCiAgICAgICAgICAgICAgICAgICAgIyBzdWIgYmxvY2sgYnJlYWtzIGhhbmRsZWQgYXQgaGlnaGVyIGxldmVsLCB1bmxlc3MKICAgICAgICAgICAgICAgICAgICAjIGl0IGxvb2tzIGxpa2UgdGhlIHByZWNlZGluZyBsaXN0IGlzIGxvbmcgYW5kIGJyb2tlbgogICAgICAgICAgICAgICAgICAgICYmICEoCiAgICAgICAgICAgICAgICAgICAgICAgICRuZXh0X25vbmJsYW5rX2Jsb2NrX3R5cGUgPX4gLyRBTllTVUJfUEFUVEVSTi8KICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAkbmVzdGluZ19kZXB0aF90b19nb1skaV9iZWdpbl0gPT0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpX25leHRfbm9uYmxhbmtdICkKICAgICAgICAgICAgICAgICAgICApCgogICAgICAgICAgICAgICAgICAgICYmICEkck9wdHMtPnsnb3BlbmluZy1icmFjZS1hbHdheXMtb24tcmlnaHQnfQogICAgICAgICAgICAgICAgKQoKICAgICAgICAgICAgICAgICMgVGhlcmUgaXMgYW4gaW1wbGllZCBmb3JjZWQgYnJlYWsgYXQgYSB0ZXJtaW5hbCBvcGVuaW5nIGJyYWNlCiAgICAgICAgICAgICAgICB8fCAoICggJHR5cGUgZXEgJ3snICkgJiYgKCAkaV90ZXN0ID09ICRpbWF4ICkgKQogICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICMgRm9yY2VkIGJyZWFrcG9pbnRzIG11c3Qgc29tZXRpbWVzIGJlIG92ZXJyaWRkZW4sIGZvciBleGFtcGxlCiAgICAgICAgICAgICAgICAjIGJlY2F1c2Ugb2YgYSBzaWRlIGNvbW1lbnQgY2F1c2luZyBhIE5PX0JSRUFLLiAgSXQgaXMgZWFzaWVyCiAgICAgICAgICAgICAgICAjIHRvIGNhdGNoIHRoaXMgaGVyZSB0aGFuIHdoZW4gdGhleSBhcmUgc2V0LgogICAgICAgICAgICAgICAgaWYgKCAkc3RyZW5ndGggPCBOT19CUkVBSyAtIDEgKSB7CiAgICAgICAgICAgICAgICAgICAgJHN0cmVuZ3RoICAgPSAkbG93ZXN0X3N0cmVuZ3RoIC0gJHRpbnlfYmlhczsKICAgICAgICAgICAgICAgICAgICAkbXVzdF9icmVhayA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcXVpdCBpZiBhIGJyZWFrIGhlcmUgd291bGQgcHV0IGEgZ29vZCB0ZXJtaW5hbCB0b2tlbiBvbgogICAgICAgICAgICAjIHRoZSBuZXh0IGxpbmUgYW5kIHdlIGFscmVhZHkgaGF2ZSBhIHBvc3NpYmxlIGJyZWFrCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICEkbXVzdF9icmVhawogICAgICAgICAgICAgICAgJiYgKCAkbmV4dF9ub25ibGFua190eXBlIGVxICc7JyB8fCAkbmV4dF9ub25ibGFua190eXBlIGVxICcsJyApCiAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICAgICAkbGVhZGluZ19zcGFjZXMgKwogICAgICAgICAgICAgICAgICAgICAgICAkc3VtbWVkX2xlbmd0aHNfdG9fZ29bICRpX25leHRfbm9uYmxhbmsgKyAxIF0gLQogICAgICAgICAgICAgICAgICAgICAgICAkc3RhcnRpbmdfc3VtCiAgICAgICAgICAgICAgICAgICAgKSA+ICRtYXhpbXVtX2xpbmVfbGVuZ3RoCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBsYXN0IGlmICggJGlfbG93ZXN0ID49IDAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBBdm9pZCBhIGJyZWFrIHdoaWNoIHdvdWxkIHN0cmFuZCBhIHNpbmdsZSBwdW5jdHVhdGlvbgogICAgICAgICAgICAjIHRva2VuLiAgRm9yIGV4YW1wbGUsIHdlIGRvIG5vdCB3YW50IHRvIHN0cmFuZCBhIGxlYWRpbmcKICAgICAgICAgICAgIyAnLicgd2hpY2ggaXMgZm9sbG93ZWQgYnkgYSBsb25nIHF1b3RlZCBzdHJpbmcuCiAgICAgICAgICAgICMgQnV0IG5vdGUgdGhhdCB3ZSBkbyB3YW50IHRvIGRvIHRoaXMgd2l0aCAtZXh0cnVkZSAobD0xKQogICAgICAgICAgICAjIHNvIHBsZWFzZSB0ZXN0IGFueSBjaGFuZ2VzIHRvIHRoaXMgY29kZSBvbiAtZXh0cnVkZS4KICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgISRtdXN0X2JyZWFrCiAgICAgICAgICAgICAgICAmJiAoICRpX3Rlc3QgPT0gJGlfYmVnaW4gKQogICAgICAgICAgICAgICAgJiYgKCAkaV90ZXN0IDwgJGltYXggKQogICAgICAgICAgICAgICAgJiYgKCAkdG9rZW4gZXEgJHR5cGUgKQogICAgICAgICAgICAgICAgJiYgKAogICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgJGxlYWRpbmdfc3BhY2VzICsKICAgICAgICAgICAgICAgICAgICAgICAgJHN1bW1lZF9sZW5ndGhzX3RvX2dvWyAkaV90ZXN0ICsgMSBdIC0KICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXJ0aW5nX3N1bQogICAgICAgICAgICAgICAgICAgICkgPCAkbWF4aW11bV9saW5lX2xlbmd0aAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJGlfdGVzdCA9IG1pbiggJGltYXgsICRpbmV4dF90b19nb1skaV90ZXN0XSApOwogICAgICAgICAgICAgICAgcmVkbzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAoICRzdHJlbmd0aCA8PSAkbG93ZXN0X3N0cmVuZ3RoICkgJiYgKCAkc3RyZW5ndGggPCBOT19CUkVBSyApICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICMgYnJlYWsgYXQgcHJldmlvdXMgYmVzdCBicmVhayBpZiBpdCB3b3VsZCBoYXZlIHByb2R1Y2VkCiAgICAgICAgICAgICAgICAjIGEgbGVhZGluZyBhbGlnbm1lbnQgb2YgY2VydGFpbiBjb21tb24gdG9rZW5zLCBhbmQgaXQKICAgICAgICAgICAgICAgICMgaXMgZGlmZmVyZW50IGZyb20gdGhlIGxhdGVzdCBjYW5kaWRhdGUgYnJlYWsKICAgICAgICAgICAgICAgIGxhc3QKICAgICAgICAgICAgICAgICAgaWYgKCRsZWFkaW5nX2FsaWdubWVudF90eXBlKTsKCiAgICAgICAgICAgICAgICAjIEZvcmNlIGF0IGxlYXN0IG9uZSBicmVha3BvaW50IGlmIG9sZCBjb2RlIGhhZCBnb29kCiAgICAgICAgICAgICAgICAjIGJyZWFrIEl0IGlzIG9ubHkgY2FsbGVkIGlmIGEgYnJlYWtwb2ludCBpcyByZXF1aXJlZCBvcgogICAgICAgICAgICAgICAgIyBkZXNpcmVkLiAgVGhpcyB3aWxsIHByb2JhYmx5IG5lZWQgc29tZSBhZGp1c3RtZW50cwogICAgICAgICAgICAgICAgIyBvdmVyIHRpbWUuICBBIGdvYWwgaXMgdG8gdHJ5IHRvIGJlIHN1cmUgdGhhdCwgaWYgYSBuZXcKICAgICAgICAgICAgICAgICMgc2lkZSBjb21tZW50IGlzIGludHJvZHVjZWQgaW50byBmb3JtYXR0ZWQgdGV4dCwgdGhlbgogICAgICAgICAgICAgICAgIyB0aGUgc2FtZSBicmVha3BvaW50cyB3aWxsIG9jY3VyLiAgc2NicmVhay50CiAgICAgICAgICAgICAgICBsYXN0CiAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkaV90ZXN0ID09ICRpbWF4ICAgICAgICAgICAgIyB3ZSBhcmUgYXQgdGhlIGVuZAogICAgICAgICAgICAgICAgICAgICYmICFnZXRfZm9yY2VkX2JyZWFrcG9pbnRfY291bnQoKQogICAgICAgICAgICAgICAgICAgICYmICRzYXdfZ29vZF9icmVhayAgICAgICAgICAjIG9sZCBsaW5lIGhhZCBnb29kIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgJiYgJHR5cGUgPX4gL15bIztce10kLyAgICAgICMgYW5kIHRoaXMgbGluZSBlbmRzIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJzsnIG9yIHNpZGUgY29tbWVudAogICAgICAgICAgICAgICAgICAgICYmICRpX2xhc3RfYnJlYWsgPCAwICAgICAgICAjIGFuZCB3ZSBoYXZlbid0IG1hZGUgYSBicmVhawogICAgICAgICAgICAgICAgICAgICYmICRpX2xvd2VzdCA+PSAwICAgICAgICAgICAjIGFuZCB3ZSBzYXcgYSBwb3NzaWJsZSBicmVhawogICAgICAgICAgICAgICAgICAgICYmICRpX2xvd2VzdCA8ICRpbWF4IC0gMSAgICAjIChidXQgbm90IGp1c3QgYmVmb3JlIHRoaXMgOykKICAgICAgICAgICAgICAgICAgICAmJiAkc3RyZW5ndGggLSAkbG93ZXN0X3N0cmVuZ3RoIDwgMC41ICogV0VBSyAjIGFuZCBpdCdzIGdvb2QKICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIERvIG5vdCBza2lwIHBhc3QgYW4gaW1wb3J0YW50IGJyZWFrIHBvaW50IGluIGEgc2hvcnQgZmluYWwKICAgICAgICAgICAgICAgICMgc2VnbWVudC4gIEZvciBleGFtcGxlLCB3aXRob3V0IHRoaXMgY2hlY2sgd2Ugd291bGQgbWlzcyB0aGUKICAgICAgICAgICAgICAgICMgYnJlYWsgYXQgdGhlIGZpbmFsIC8gaW4gdGhlIGZvbGxvd2luZyBjb2RlOgogICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgIyAgJGRlcHRoX3N0b3AgPQogICAgICAgICAgICAgICAgIyAgICAoICR0YXUgKiAkbWFzc19wZWxsZXQgKiAkcV8wICoKICAgICAgICAgICAgICAgICMgICAgICAgICggMS4gLSBleHAoIC0kdF9zdG9wIC8gJHRhdSApICkgLQogICAgICAgICAgICAgICAgIyAgICAgICAgNC4gKiAkcGkgKiAkZmFjdG9yICogJGtfaWNlICoKICAgICAgICAgICAgICAgICMgICAgICAgICggJHRfbWVsdCAtICR0X2ljZSApICoKICAgICAgICAgICAgICAgICMgICAgICAgICRyX3BlbGxldCAqCiAgICAgICAgICAgICAgICAjICAgICAgICAkdF9zdG9wICkgLwogICAgICAgICAgICAgICAgIyAgICAoICRyaG9faWNlICogJFFzICogJHBpICogJHJfcGVsbGV0KioyICk7CiAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgJGxpbmVfY291bnQgPiAyCiAgICAgICAgICAgICAgICAgICAgJiYgJGlfbG93ZXN0ID49IDAgICAgIyBhbmQgd2Ugc2F3IGEgcG9zc2libGUgYnJlYWsKICAgICAgICAgICAgICAgICAgICAmJiAkaV9sb3dlc3QgPCAkaV90ZXN0CiAgICAgICAgICAgICAgICAgICAgJiYgJGlfdGVzdCA+ICRpbWF4IC0gMgogICAgICAgICAgICAgICAgICAgICYmICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpX2JlZ2luXSA+CiAgICAgICAgICAgICAgICAgICAgJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGlfbG93ZXN0XQogICAgICAgICAgICAgICAgICAgICYmICRsb3dlc3Rfc3RyZW5ndGggPCAkbGFzdF9icmVha19zdHJlbmd0aCAtIC41ICogV0VBSwogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIyBNYWtlIHRoaXMgYnJlYWsgZm9yIG1hdGggb3BlcmF0b3JzIGZvciBub3cKICAgICAgICAgICAgICAgICAgICBteSAkaXIgPSAkaW5leHRfdG9fZ29bJGlfbG93ZXN0XTsKICAgICAgICAgICAgICAgICAgICBteSAkaWwgPSAkaXByZXZfdG9fZ29bJGlyXTsKICAgICAgICAgICAgICAgICAgICBsYXN0CiAgICAgICAgICAgICAgICAgICAgICBpZiAoICR0eXBlc190b19nb1skaWxdID1+IC9eW1wvXCpcK1wtXCVdJC8KICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHR5cGVzX3RvX2dvWyRpcl0gPX4gL15bXC9cKlwrXC1cJV0kLyApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgVXBkYXRlIHRoZSBtaW5pbXVtIGJvbmQgc3RyZW5ndGggbG9jYXRpb24KICAgICAgICAgICAgICAgICRsb3dlc3Rfc3RyZW5ndGggICAgICAgID0gJHN0cmVuZ3RoOwogICAgICAgICAgICAgICAgJGlfbG93ZXN0ICAgICAgICAgICAgICAgPSAkaV90ZXN0OwogICAgICAgICAgICAgICAgJGxvd2VzdF9uZXh0X3Rva2VuICAgICAgPSAkbmV4dF9ub25ibGFua190b2tlbjsKICAgICAgICAgICAgICAgICRsb3dlc3RfbmV4dF90eXBlICAgICAgID0gJG5leHRfbm9uYmxhbmtfdHlwZTsKICAgICAgICAgICAgICAgICRpX2xvd2VzdF9uZXh0X25vbmJsYW5rID0gJGlfbmV4dF9ub25ibGFuazsKICAgICAgICAgICAgICAgIGxhc3QgaWYgJG11c3RfYnJlYWs7CgogICAgICAgICAgICAgICAgIyBzZXQgZmxhZ3MgdG8gcmVtZW1iZXIgaWYgYSBicmVhayBoZXJlIHdpbGwgcHJvZHVjZSBhCiAgICAgICAgICAgICAgICAjIGxlYWRpbmcgYWxpZ25tZW50IG9mIGNlcnRhaW4gY29tbW9uIHRva2VucwogICAgICAgICAgICAgICAgaWYgKCAgICRsaW5lX2NvdW50ID4gMAogICAgICAgICAgICAgICAgICAgICYmICRpX3Rlc3QgPCAkaW1heAogICAgICAgICAgICAgICAgICAgICYmICggJGxvd2VzdF9zdHJlbmd0aCAtICRsYXN0X2JyZWFrX3N0cmVuZ3RoIDw9ICRtYXhfYmlhcyApCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBteSAkaV9sYXN0X2VuZCA9ICRpcHJldl90b19nb1skaV9iZWdpbl07CiAgICAgICAgICAgICAgICAgICAgbXkgJHRva19iZWcgICAgPSAkdG9rZW5zX3RvX2dvWyRpX2JlZ2luXTsKICAgICAgICAgICAgICAgICAgICBteSAkdHlwZV9iZWcgICA9ICR0eXBlc190b19nb1skaV9iZWdpbl07CiAgICAgICAgICAgICAgICAgICAgaWYgKAoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBmb3IgbGVhZGluZyBhbGlnbm1lbnQgb2YgY2VydGFpbiB0b2tlbnMKICAgICAgICAgICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRva19iZWcgZXEgJG5leHRfbm9uYmxhbmtfdG9rZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICRpc19jaGFpbl9vcGVyYXRvcnskdG9rX2JlZ30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICggICAkdHlwZV9iZWcgZXEgJ2snCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHR5cGVfYmVnIGVxICR0b2tfYmVnICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpX2JlZ2luXSA+PQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGlfbmV4dF9ub25ibGFua10KICAgICAgICAgICAgICAgICAgICAgICAgKQoKICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCAgICR0b2tlbnNfdG9fZ29bJGlfbGFzdF9lbmRdIGVxICR0b2tlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGlzX2NoYWluX29wZXJhdG9yeyR0b2tlbn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICggJHR5cGUgZXEgJ2snIHx8ICR0eXBlIGVxICR0b2tlbiApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkbmVzdGluZ19kZXB0aF90b19nb1skaV9sYXN0X2VuZF0gPj0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpX3Rlc3RdICkKICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRsZWFkaW5nX2FsaWdubWVudF90b2tlbiA9ICRuZXh0X25vbmJsYW5rX3Rva2VuOwogICAgICAgICAgICAgICAgICAgICAgICAkbGVhZGluZ19hbGlnbm1lbnRfdHlwZSAgPSAkbmV4dF9ub25ibGFua190eXBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJHRvb19sb25nID0gKCAkaV90ZXN0ID49ICRpbWF4ICk7CiAgICAgICAgICAgIGlmICggISR0b29fbG9uZyApIHsKICAgICAgICAgICAgICAgIG15ICRuZXh0X2xlbmd0aCA9CiAgICAgICAgICAgICAgICAgICRsZWFkaW5nX3NwYWNlcyArCiAgICAgICAgICAgICAgICAgICRzdW1tZWRfbGVuZ3Roc190b19nb1sgJGlfdGVzdCArIDIgXSAtCiAgICAgICAgICAgICAgICAgICRzdGFydGluZ19zdW07CiAgICAgICAgICAgICAgICAkdG9vX2xvbmcgPSAkbmV4dF9sZW5ndGggPiAkbWF4aW11bV9saW5lX2xlbmd0aDsKCiAgICAgICAgICAgICAgICAjIFRvIHByZXZlbnQgYmxpbmtlcnMgd2Ugd2lsbCBhdm9pZCBsZWF2aW5nIGEgdG9rZW4gZXhhY3RseSBhdAogICAgICAgICAgICAgICAgIyB0aGUgbGluZSBsZW5ndGggbGltaXQgdW5sZXNzIGl0IGlzIHRoZSBsYXN0IHRva2VuIG9yIG9uZSBvZgogICAgICAgICAgICAgICAgIyBzZXZlcmFsICJnb29kIiB0eXBlcy4KICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICMgVGhlIGZvbGxvd2luZyBjb2RlIHdhcyBhIGJsaW5rZXIgd2l0aCAtcGJwIGJlZm9yZSB0aGlzCiAgICAgICAgICAgICAgICAjIG1vZGlmaWNhdGlvbjoKIyMgICAgICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3Rva2VuIGVxICcoJwojIyAgICAgICAgICAgICAgICAgICAgICAgICYmICRpc19pbmRpcmVjdF9vYmplY3RfdGFrZXJ7ICRwYXJlbl90eXBlCiMjICAgICAgICAgICAgICAgICAgICAgICAgICAgIFskcGFyZW5fZGVwdGhdIH0KICAgICAgICAgICAgICAgICMgVGhlIGlzc3VlIGNhdXNpbmcgdGhlIHByb2JsZW0gaXMgdGhhdCBpZiB0aGUKICAgICAgICAgICAgICAgICMgdGVybSBbJHBhcmVuX2RlcHRoXSBnZXRzIGJyb2tlbiBhY3Jvc3MgYSBsaW5lIHRoZW4KICAgICAgICAgICAgICAgICMgdGhlIHdoaXRlc3BhY2Ugcm91dGluZSBkb2Vzbid0IHNlZSBib3RoIG9wZW5pbmcgYW5kIGNsb3NpbmcKICAgICAgICAgICAgICAgICMgYnJhY2tldHMgYW5kIHdpbGwgZm9ybWF0IGxpa2UgJ1sgJHBhcmVuX2RlcHRoIF0nLiAgVGhpcwogICAgICAgICAgICAgICAgIyBsZWFkcyB0byBhbiBvc2NpbGxhdGlvbiBpbiBsZW5ndGggZGVwZW5kaW5nIGlmIHdlIGJyZWFrCiAgICAgICAgICAgICAgICAjIGJlZm9yZSB0aGUgY2xvc2luZyBicmFja2V0IG9yIG5vdC4KICAgICAgICAgICAgICAgIGlmICggICEkdG9vX2xvbmcKICAgICAgICAgICAgICAgICAgICAmJiAkaV90ZXN0ICsgMSA8ICRpbWF4CiAgICAgICAgICAgICAgICAgICAgJiYgJG5leHRfbm9uYmxhbmtfdHlwZSBuZSAnLCcKICAgICAgICAgICAgICAgICAgICAmJiAhJGlzX2Nsb3NpbmdfdHlwZXskbmV4dF9ub25ibGFua190eXBlfSApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJHRvb19sb25nID0gJG5leHRfbGVuZ3RoID49ICRtYXhpbXVtX2xpbmVfbGVuZ3RoOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBERUJVR19CUkVBS1BPSU5UUyAmJiBkbyB7CiAgICAgICAgICAgICAgICBteSAkbHRvayAgICAgPSAkdG9rZW47CiAgICAgICAgICAgICAgICBteSAkcnRvayAgICAgPSAkbmV4dF9ub25ibGFua190b2tlbiA/ICRuZXh0X25vbmJsYW5rX3Rva2VuIDogIiI7CiAgICAgICAgICAgICAgICBteSAkaV90ZXN0cDIgPSAkaV90ZXN0ICsgMjsKICAgICAgICAgICAgICAgIGlmICggJGlfdGVzdHAyID4gJG1heF9pbmRleF90b19nbyArIDEgKSB7CiAgICAgICAgICAgICAgICAgICAgJGlfdGVzdHAyID0gJG1heF9pbmRleF90b19nbyArIDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIGxlbmd0aCgkbHRvaykgPiA2ICkgeyAkbHRvayA9IHN1YnN0ciggJGx0b2ssIDAsIDggKSB9CiAgICAgICAgICAgICAgICBpZiAoIGxlbmd0aCgkcnRvaykgPiA2ICkgeyAkcnRvayA9IHN1YnN0ciggJHJ0b2ssIDAsIDggKSB9CiAgICAgICAgICAgICAgICBwcmludCBTVERPVVQKIkJSRUFLOiBpPSRpX3Rlc3QgaW1heD0kaW1heCAkdHlwZXNfdG9fZ29bJGlfdGVzdF0gJG5leHRfbm9uYmxhbmtfdHlwZSBzcD0oJGxlYWRpbmdfc3BhY2VzKSBsbmV4dD0gJHN1bW1lZF9sZW5ndGhzX3RvX2dvWyRpX3Rlc3RwMl0gMmxvbmc9JHRvb19sb25nIHN0cj0kc3RyZW5ndGggICAgJGx0b2sgJHJ0b2tcbiI7CiAgICAgICAgICAgIH07CgogICAgICAgICAgICAjIGFsbG93IG9uZSBleHRyYSB0ZXJtaW5hbCB0b2tlbiBhZnRlciBleGNlZWRpbmcgbGluZSBsZW5ndGgKICAgICAgICAgICAgIyBpZiBpdCB3b3VsZCBzdHJhbmQgdGhpcyB0b2tlbi4KICAgICAgICAgICAgaWYgKCAgICRyT3B0c19mdXp6eV9saW5lX2xlbmd0aAogICAgICAgICAgICAgICAgJiYgJHRvb19sb25nCiAgICAgICAgICAgICAgICAmJiAkaV9sb3dlc3QgPT0gJGlfdGVzdAogICAgICAgICAgICAgICAgJiYgJHRva2VuX2xlbmd0aHNfdG9fZ29bJGlfdGVzdF0gPiAxCiAgICAgICAgICAgICAgICAmJiAoICRuZXh0X25vbmJsYW5rX3R5cGUgZXEgJzsnIHx8ICRuZXh0X25vbmJsYW5rX3R5cGUgZXEgJywnICkKICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICR0b29fbG9uZyA9IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgd2UgYXJlIGRvbmUgaWYuLi4KICAgICAgICAgICAgbGFzdAogICAgICAgICAgICAgIGlmICgKCiAgICAgICAgICAgICAgICAjIC4uLiBubyBtb3JlIHNwYWNlIGFuZCB3ZSBoYXZlIGEgYnJlYWsKICAgICAgICAgICAgICAgICR0b29fbG9uZyAmJiAkaV9sb3dlc3QgPj0gMAoKICAgICAgICAgICAgICAgICMgLi4uIG9yIG5vIG1vcmUgdG9rZW5zCiAgICAgICAgICAgICAgICB8fCAkaV90ZXN0ID09ICRpbWF4CiAgICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBFTkQgb2YgaW5uZXIgbG9vcCB0byBmaW5kIHRoZSBiZXN0IG5leHQgYnJlYWtwb2ludAogICAgICAgICMgTm93IGRlY2lkZSBleGFjdGx5IHdoZXJlIHRvIHB1dCB0aGUgYnJlYWtwb2ludAogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICMgaXQncyBhbHdheXMgb2sgdG8gYnJlYWsgYXQgaW1heCBpZiBubyBvdGhlciBicmVhayB3YXMgZm91bmQKICAgICAgICBpZiAoICRpX2xvd2VzdCA8IDAgKSB7ICRpX2xvd2VzdCA9ICRpbWF4IH0KCiAgICAgICAgIyBzZW1pLWZpbmFsIGluZGV4IGNhbGN1bGF0aW9uCiAgICAgICAgbXkgJGlfbmV4dF9ub25ibGFuayAgICAgPSAkaW5leHRfdG9fZ29bJGlfbG93ZXN0XTsKICAgICAgICBteSAkbmV4dF9ub25ibGFua190eXBlICA9ICR0eXBlc190b19nb1skaV9uZXh0X25vbmJsYW5rXTsKICAgICAgICBteSAkbmV4dF9ub25ibGFua190b2tlbiA9ICR0b2tlbnNfdG9fZ29bJGlfbmV4dF9ub25ibGFua107CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyA/LzogcnVsZSAxIDogaWYgYSBicmVhayBoZXJlIHdpbGwgc2VwYXJhdGUgYSAnPycgb24gdGhpcwogICAgICAgICMgbGluZSBmcm9tIGl0cyBjbG9zaW5nICc6JywgdGhlbiBicmVhayBhdCB0aGUgJz8nIGluc3RlYWQuCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBmb3JlYWNoIG15ICRpICggJGlfYmVnaW4gKyAxIC4uICRpX2xvd2VzdCAtIDEgKSB7CiAgICAgICAgICAgIG5leHQgdW5sZXNzICggJHRva2Vuc190b19nb1skaV0gZXEgJz8nICk7CgogICAgICAgICAgICAjIGRvIG5vdCBicmVhayBpZiBwcm9iYWJsZSBzZXF1ZW5jZSBvZiA/Lzogc3RhdGVtZW50cwogICAgICAgICAgICBuZXh0IGlmICgkaXNfY29sb25fY2hhaW4pOwoKICAgICAgICAgICAgIyBkbyBub3QgYnJlYWsgaWYgc3RhdGVtZW50IGlzIGJyb2tlbiBieSBzaWRlIGNvbW1lbnQKICAgICAgICAgICAgbmV4dAogICAgICAgICAgICAgIGlmICggJHRva2Vuc190b19nb1skbWF4X2luZGV4X3RvX2dvXSBlcSAnIycKICAgICAgICAgICAgICAgICYmIHRlcm1pbmFsX3R5cGVfaSggMCwgJG1heF9pbmRleF90b19nbyApICF+IC9eW1w7XH1dJC8gKTsKCiAgICAgICAgICAgICMgbm8gYnJlYWsgbmVlZGVkIGlmIG1hdGNoaW5nIDogaXMgYWxzbyBvbiB0aGUgbGluZQogICAgICAgICAgICBuZXh0CiAgICAgICAgICAgICAgaWYgKCAkbWF0ZV9pbmRleF90b19nb1skaV0gPj0gMAogICAgICAgICAgICAgICAgJiYgJG1hdGVfaW5kZXhfdG9fZ29bJGldIDw9ICRpX25leHRfbm9uYmxhbmsgKTsKCiAgICAgICAgICAgICRpX2xvd2VzdCA9ICRpOwogICAgICAgICAgICBpZiAoICR3YW50X2JyZWFrX2JlZm9yZXsnPyd9ICkgeyAkaV9sb3dlc3QtLSB9CiAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgfQoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgRU5EIG9mIGlubmVyIGxvb3AgdG8gZmluZCB0aGUgYmVzdCBuZXh0IGJyZWFrcG9pbnQ6CiAgICAgICAgIyBCcmVhayB0aGUgbGluZSBhZnRlciB0aGUgdG9rZW4gd2l0aCBpbmRleCBpPSRpX2xvd2VzdAogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICMgZmluYWwgaW5kZXggY2FsY3VsYXRpb24KICAgICAgICAkaV9uZXh0X25vbmJsYW5rICAgICA9ICRpbmV4dF90b19nb1skaV9sb3dlc3RdOwogICAgICAgICRuZXh0X25vbmJsYW5rX3R5cGUgID0gJHR5cGVzX3RvX2dvWyRpX25leHRfbm9uYmxhbmtdOwogICAgICAgICRuZXh0X25vbmJsYW5rX3Rva2VuID0gJHRva2Vuc190b19nb1skaV9uZXh0X25vbmJsYW5rXTsKCiAgICAgICAgREVCVUdfQlJFQUtQT0lOVFMKICAgICAgICAgICYmIHByaW50IFNURE9VVAogICAgICAgICAgIkJSRUFLOiBiZXN0IGlzIGkgPSAkaV9sb3dlc3Qgc3RyZW5ndGggPSAkbG93ZXN0X3N0cmVuZ3RoXG4iOwoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgPy86IHJ1bGUgMiA6IGlmIHdlIGJyZWFrIGF0IGEgJz8nLCB0aGVuIGJyZWFrIGF0IGl0cyAnOicKICAgICAgICAjCiAgICAgICAgIyBOb3RlOiB0aGlzIHJ1bGUgaXMgYWxzbyBpbiBzdWIgc2Nhbl9saXN0IHRvIGhhbmRsZSBhIGJyZWFrCiAgICAgICAgIyBhdCB0aGUgc3RhcnQgYW5kIGVuZCBvZiBhIGxpbmUgKGluIGNhc2UgYnJlYWtzIGFyZSBkaWN0YXRlZAogICAgICAgICMgYnkgc2lkZSBjb21tZW50cykuCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBpZiAoICRuZXh0X25vbmJsYW5rX3R5cGUgZXEgJz8nICkgewogICAgICAgICAgICAkc2VsZi0+c2V0X2Nsb3NpbmdfYnJlYWtwb2ludCgkaV9uZXh0X25vbmJsYW5rKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkdHlwZXNfdG9fZ29bJGlfbG93ZXN0XSBlcSAnPycgKSB7CiAgICAgICAgICAgICRzZWxmLT5zZXRfY2xvc2luZ19icmVha3BvaW50KCRpX2xvd2VzdCk7CiAgICAgICAgfQoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgPy86IHJ1bGUgMyA6IGlmIHdlIGJyZWFrIGF0IGEgJzonIHRoZW4gd2Ugc2F2ZQogICAgICAgICMgaXRzIGxvY2F0aW9uIGZvciBmdXJ0aGVyIHdvcmsgYmVsb3cuICBXZSBtYXkgbmVlZCB0byBnbwogICAgICAgICMgYmFjayBhbmQgYnJlYWsgYXQgaXRzICc/Jy4KICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgIGlmICggJG5leHRfbm9uYmxhbmtfdHlwZSBlcSAnOicgKSB7CiAgICAgICAgICAgIHB1c2ggQGlfY29sb25fYnJlYWtzLCAkaV9uZXh0X25vbmJsYW5rOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICR0eXBlc190b19nb1skaV9sb3dlc3RdIGVxICc6JyApIHsKICAgICAgICAgICAgcHVzaCBAaV9jb2xvbl9icmVha3MsICRpX2xvd2VzdDsKICAgICAgICB9CgogICAgICAgICMgaGVyZSB3ZSBzaG91bGQgc2V0IGJyZWFrcyBmb3IgYWxsICc/Jy8nOicgcGFpcnMgd2hpY2ggYXJlCiAgICAgICAgIyBzZXBhcmF0ZWQgYnkgdGhpcyBsaW5lCgogICAgICAgICRsaW5lX2NvdW50Kys7CgogICAgICAgICMgc2F2ZSB0aGlzIGxpbmUgc2VnbWVudCwgYWZ0ZXIgdHJpbW1pbmcgYmxhbmtzIGF0IHRoZSBlbmRzCiAgICAgICAgcHVzaCggQGlfZmlyc3QsCiAgICAgICAgICAgICggJHR5cGVzX3RvX2dvWyRpX2JlZ2luXSBlcSAnYicgKSA/ICRpX2JlZ2luICsgMSA6ICRpX2JlZ2luICk7CiAgICAgICAgcHVzaCggQGlfbGFzdCwKICAgICAgICAgICAgKCAkdHlwZXNfdG9fZ29bJGlfbG93ZXN0XSBlcSAnYicgKSA/ICRpX2xvd2VzdCAtIDEgOiAkaV9sb3dlc3QgKTsKCiAgICAgICAgIyBzZXQgYSBmb3JjZWQgYnJlYWtwb2ludCBhdCBhIGNvbnRhaW5lciBvcGVuaW5nLCBpZiBuZWNlc3NhcnksIHRvCiAgICAgICAgIyBzaWduYWwgYSBicmVhayBhdCBhIGNsb3NpbmcgY29udGFpbmVyLiAgRXhjZXB0aW5nICcoJyBmb3Igbm93LgogICAgICAgIGlmICgKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgJHRva2Vuc190b19nb1skaV9sb3dlc3RdIGVxICd7JwogICAgICAgICAgICAgICAgfHwgJHRva2Vuc190b19nb1skaV9sb3dlc3RdIGVxICdbJwogICAgICAgICAgICApCiAgICAgICAgICAgICYmICEkZm9yY2VkX2JyZWFrcG9pbnRfdG9fZ29bJGlfbG93ZXN0XQogICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJHNlbGYtPnNldF9jbG9zaW5nX2JyZWFrcG9pbnQoJGlfbG93ZXN0KTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHJlYWR5IHRvIGdvIGFnYWluCiAgICAgICAgJGlfYmVnaW4gICAgICAgICAgICAgICAgID0gJGlfbG93ZXN0ICsgMTsKICAgICAgICAkbGFzdF9icmVha19zdHJlbmd0aCAgICAgPSAkbG93ZXN0X3N0cmVuZ3RoOwogICAgICAgICRpX2xhc3RfYnJlYWsgICAgICAgICAgICA9ICRpX2xvd2VzdDsKICAgICAgICAkbGVhZGluZ19hbGlnbm1lbnRfdG9rZW4gPSAiIjsKICAgICAgICAkbGVhZGluZ19hbGlnbm1lbnRfdHlwZSAgPSAiIjsKICAgICAgICAkbG93ZXN0X25leHRfdG9rZW4gICAgICAgPSAnJzsKICAgICAgICAkbG93ZXN0X25leHRfdHlwZSAgICAgICAgPSAnYic7CgogICAgICAgIGlmICggKCAkaV9iZWdpbiA8PSAkaW1heCApICYmICggJHR5cGVzX3RvX2dvWyRpX2JlZ2luXSBlcSAnYicgKSApIHsKICAgICAgICAgICAgJGlfYmVnaW4rKzsKICAgICAgICB9CgogICAgICAgICMgdXBkYXRlIGluZGVudGF0aW9uIHNpemUKICAgICAgICBpZiAoICRpX2JlZ2luIDw9ICRpbWF4ICkgewogICAgICAgICAgICAkbGVhZGluZ19zcGFjZXMgPSBsZWFkaW5nX3NwYWNlc190b19nbygkaV9iZWdpbik7CiAgICAgICAgfQogICAgfQoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIEVORCBvZiBtYWluIGxvb3AgdG8gc2V0IGNvbnRpbnVhdGlvbiBicmVha3BvaW50cwogICAgIyBOb3cgZ28gYmFjayBhbmQgbWFrZSBhbnkgbmVjZXNzYXJ5IGNvcnJlY3Rpb25zCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjID8vOiBydWxlIDQgLS0gaWYgd2UgYnJva2UgYXQgYSAnOicsIHRoZW4gYnJlYWsgYXQKICAgICMgY29ycmVzcG9uZGluZyAnPycgdW5sZXNzIHRoaXMgaXMgYSBjaGFpbiBvZiA/OiBleHByZXNzaW9ucwogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGlmIChAaV9jb2xvbl9icmVha3MpIHsKCiAgICAgICAgIyB1c2luZyBhIHNpbXBsZSBtZXRob2QgZm9yIGRlY2lkaW5nIGlmIHdlIGFyZSBpbiBhID8vOiBjaGFpbiAtLQogICAgICAgICMgdGhpcyBpcyBhIGNoYWluIGlmIGl0IGhhcyBtdWx0aXBsZSA/LzogcGFpcnMgYWxsIGluIG9yZGVyOwogICAgICAgICMgb3RoZXJ3aXNlIG5vdC4KICAgICAgICAjIE5vdGUgdGhhdCBpZiBsaW5lIHN0YXJ0cyBpbiBhICc6JyB3ZSBjb3VudCB0aGF0IGFib3ZlIGFzIGEgYnJlYWsKICAgICAgICBteSAkaXNfY2hhaW4gPSAoICRjb2xvbnNfaW5fb3JkZXIgJiYgQGlfY29sb25fYnJlYWtzID4gMSApOwoKICAgICAgICB1bmxlc3MgKCRpc19jaGFpbikgewogICAgICAgICAgICBteSBAaW5zZXJ0X2xpc3QgPSAoKTsKICAgICAgICAgICAgZm9yZWFjaCAoQGlfY29sb25fYnJlYWtzKSB7CiAgICAgICAgICAgICAgICBteSAkaV9xdWVzdGlvbiA9ICRtYXRlX2luZGV4X3RvX2dvWyRfXTsKICAgICAgICAgICAgICAgIGlmICggJGlfcXVlc3Rpb24gPj0gMCApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICR3YW50X2JyZWFrX2JlZm9yZXsnPyd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkaV9xdWVzdGlvbiA9ICRpcHJldl90b19nb1skaV9xdWVzdGlvbl07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoICRpX3F1ZXN0aW9uID49IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQGluc2VydF9saXN0LCAkaV9xdWVzdGlvbjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkc2VsZi0+aW5zZXJ0X2FkZGl0aW9uYWxfYnJlYWtzKCBcQGluc2VydF9saXN0LCBcQGlfZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgXEBpX2xhc3QgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAoIFxAaV9maXJzdCwgXEBpX2xhc3QgKTsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIENPREUgU0VDVElPTiAxMTogQ29kZSB0byBicmVhayBsb25nIGxpc3RzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnsgICAgIyMgYmVnaW4gY2xvc3VyZSBzY2FuX2xpc3QKCiAgICAjIFRoZXNlIHJvdXRpbmVzIGFuZCB2YXJpYWJsZXMgYXJlIGludm9sdmVkIGluIGZpbmRpbmcgZ29vZAogICAgIyBwbGFjZXMgdG8gYnJlYWsgbG9uZyBsaXN0cy4KCiAgICBteSAoCiAgICAgICAgJGJsb2NrX3R5cGUsICAgICAgICAgICAgICAgJGN1cnJlbnRfZGVwdGgsCiAgICAgICAgJGRlcHRoLCAgICAgICAgICAgICAgICAgICAgJGksCiAgICAgICAgJGlfbGFzdF9ub25ibGFua190b2tlbiwgICAgJGxhc3RfY29sb25fc2VxdWVuY2VfbnVtYmVyLAogICAgICAgICRsYXN0X25vbmJsYW5rX3Rva2VuLCAgICAgICRsYXN0X25vbmJsYW5rX3R5cGUsCiAgICAgICAgJGxhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZSwgJGxhc3Rfb2xkX2JyZWFrcG9pbnRfY291bnQsCiAgICAgICAgJG1pbmltdW1fZGVwdGgsICAgICAgICAgICAgJG5leHRfbm9uYmxhbmtfYmxvY2tfdHlwZSwKICAgICAgICAkbmV4dF9ub25ibGFua190b2tlbiwgICAgICAkbmV4dF9ub25ibGFua190eXBlLAogICAgICAgICRvbGRfYnJlYWtwb2ludF9jb3VudCwgICAgICRzdGFydGluZ19icmVha3BvaW50X2NvdW50LAogICAgICAgICRzdGFydGluZ19kZXB0aCwgICAgICAgICAgICR0b2tlbiwKICAgICAgICAkdHlwZSwgICAgICAgICAgICAgICAgICAgICAkdHlwZV9zZXF1ZW5jZSwKICAgICk7CgogICAgbXkgKAogICAgICAgIEBicmVha3BvaW50X3N0YWNrLCAgICAgICAgICAgICAgQGJyZWFrcG9pbnRfdW5kb19zdGFjaywKICAgICAgICBAY29tbWFfaW5kZXgsICAgICAgICAgICAgICAgICAgIEBjb250YWluZXJfdHlwZSwKICAgICAgICBAaWRlbnRpZmllcl9jb3VudF9zdGFjaywgICAgICAgIEBpbmRleF9iZWZvcmVfYXJyb3csCiAgICAgICAgQGludGVycnVwdGVkX2xpc3QsICAgICAgICAgICAgICBAaXRlbV9jb3VudF9zdGFjaywKICAgICAgICBAbGFzdF9jb21tYV9pbmRleCwgICAgICAgICAgICAgIEBsYXN0X2RvdF9pbmRleCwKICAgICAgICBAbGFzdF9ub25ibGFua190eXBlLCAgICAgICAgICAgIEBvbGRfYnJlYWtwb2ludF9jb3VudF9zdGFjaywKICAgICAgICBAb3BlbmluZ19zdHJ1Y3R1cmVfaW5kZXhfc3RhY2ssIEByZm9yX3NlbWljb2xvbl9saXN0LAogICAgICAgIEBoYXNfb2xkX2xvZ2ljYWxfYnJlYWtwb2ludHMsICAgQHJhbmRfb3JfbGlzdCwKICAgICAgICBAaV9lcXVhbHMsCiAgICApOwoKICAgICMgdGhlc2UgYXJyYXlzIG11c3QgcmV0YWluIHZhbHVlcyBiZXR3ZWVuIGNhbGxzCiAgICBteSAoIEBoYXNfYnJva2VuX3N1Ymxpc3QsIEBkb250X2FsaWduLCBAd2FudF9jb21tYV9icmVhayApOwoKICAgIHN1YiBpbml0aWFsaXplX3NjYW5fbGlzdCB7CiAgICAgICAgQGRvbnRfYWxpZ24gICAgICAgICA9ICgpOwogICAgICAgIEBoYXNfYnJva2VuX3N1Ymxpc3QgPSAoKTsKICAgICAgICBAd2FudF9jb21tYV9icmVhayAgID0gKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgcm91dGluZSB0byBkZWZpbmUgZXNzZW50aWFsIHZhcmlhYmxlcyB3aGVuIHdlIGdvICd1cCcgdG8KICAgICMgYSBuZXcgZGVwdGgKICAgIHN1YiBjaGVja19mb3JfbmV3X21pbmltdW1fZGVwdGggewogICAgICAgIG15ICRkZXB0aCA9IHNoaWZ0OwogICAgICAgIGlmICggJGRlcHRoIDwgJG1pbmltdW1fZGVwdGggKSB7CgogICAgICAgICAgICAkbWluaW11bV9kZXB0aCA9ICRkZXB0aDsKCiAgICAgICAgICAgICMgdGhlc2UgYXJyYXlzIG5lZWQgbm90IHJldGFpbiB2YWx1ZXMgYmV0d2VlbiBjYWxscwogICAgICAgICAgICAkYnJlYWtwb2ludF9zdGFja1skZGVwdGhdICAgICAgICAgICAgICA9ICRzdGFydGluZ19icmVha3BvaW50X2NvdW50OwogICAgICAgICAgICAkY29udGFpbmVyX3R5cGVbJGRlcHRoXSAgICAgICAgICAgICAgICA9ICIiOwogICAgICAgICAgICAkaWRlbnRpZmllcl9jb3VudF9zdGFja1skZGVwdGhdICAgICAgICA9IDA7CiAgICAgICAgICAgICRpbmRleF9iZWZvcmVfYXJyb3dbJGRlcHRoXSAgICAgICAgICAgID0gLTE7CiAgICAgICAgICAgICRpbnRlcnJ1cHRlZF9saXN0WyRkZXB0aF0gICAgICAgICAgICAgID0gMTsKICAgICAgICAgICAgJGl0ZW1fY291bnRfc3RhY2tbJGRlcHRoXSAgICAgICAgICAgICAgPSAwOwogICAgICAgICAgICAkbGFzdF9ub25ibGFua190eXBlWyRkZXB0aF0gICAgICAgICAgICA9ICIiOwogICAgICAgICAgICAkb3BlbmluZ19zdHJ1Y3R1cmVfaW5kZXhfc3RhY2tbJGRlcHRoXSA9IC0xOwoKICAgICAgICAgICAgJGJyZWFrcG9pbnRfdW5kb19zdGFja1skZGVwdGhdICAgICAgID0gdW5kZWY7CiAgICAgICAgICAgICRjb21tYV9pbmRleFskZGVwdGhdICAgICAgICAgICAgICAgICA9IHVuZGVmOwogICAgICAgICAgICAkbGFzdF9jb21tYV9pbmRleFskZGVwdGhdICAgICAgICAgICAgPSB1bmRlZjsKICAgICAgICAgICAgJGxhc3RfZG90X2luZGV4WyRkZXB0aF0gICAgICAgICAgICAgID0gdW5kZWY7CiAgICAgICAgICAgICRvbGRfYnJlYWtwb2ludF9jb3VudF9zdGFja1skZGVwdGhdICA9IHVuZGVmOwogICAgICAgICAgICAkaGFzX29sZF9sb2dpY2FsX2JyZWFrcG9pbnRzWyRkZXB0aF0gPSAwOwogICAgICAgICAgICAkcmFuZF9vcl9saXN0WyRkZXB0aF0gICAgICAgICAgICAgICAgPSBbXTsKICAgICAgICAgICAgJHJmb3Jfc2VtaWNvbG9uX2xpc3RbJGRlcHRoXSAgICAgICAgID0gW107CiAgICAgICAgICAgICRpX2VxdWFsc1skZGVwdGhdICAgICAgICAgICAgICAgICAgICA9IC0xOwoKICAgICAgICAgICAgIyB0aGVzZSBhcnJheXMgbXVzdCByZXRhaW4gdmFsdWVzIGJldHdlZW4gY2FsbHMKICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCggJGhhc19icm9rZW5fc3VibGlzdFskZGVwdGhdICkgKSB7CiAgICAgICAgICAgICAgICAkZG9udF9hbGlnblskZGVwdGhdICAgICAgICAgPSAwOwogICAgICAgICAgICAgICAgJGhhc19icm9rZW5fc3VibGlzdFskZGVwdGhdID0gMDsKICAgICAgICAgICAgICAgICR3YW50X2NvbW1hX2JyZWFrWyRkZXB0aF0gICA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgcm91dGluZSB0byBkZWNpZGUgd2hpY2ggY29tbWFzIHRvIGJyZWFrIGF0IHdpdGhpbiBhIGNvbnRhaW5lcjsKICAgICMgcmV0dXJuczoKICAgICMgICAkYnBfY291bnQgPSBudW1iZXIgb2YgY29tbWEgYnJlYWtwb2ludHMgc2V0CiAgICAjICAgJGRvX25vdF9icmVha19hcGFydCA9IGEgZmxhZyBpbmRpY2F0aW5nIGlmIGNvbnRhaW5lciBuZWVkIG5vdAogICAgIyAgICAgYmUgYnJva2VuIG9wZW4KICAgIHN1YiBzZXRfY29tbWFfYnJlYWtwb2ludHMgewoKICAgICAgICBteSAoICRzZWxmLCAkZGQgKSA9IEBfOwogICAgICAgIG15ICRicF9jb3VudCAgICAgICAgICAgPSAwOwogICAgICAgIG15ICRkb19ub3RfYnJlYWtfYXBhcnQgPSAwOwoKICAgICAgICAjIGFueXRoaW5nIHRvIGRvPwogICAgICAgIGlmICggJGl0ZW1fY291bnRfc3RhY2tbJGRkXSApIHsKCiAgICAgICAgICAgICMgaGFuZGxlIGNvbW1hcyBub3QgaW4gY29udGFpbmVycy4uLgogICAgICAgICAgICBpZiAoICRkb250X2FsaWduWyRkZF0gKSB7CiAgICAgICAgICAgICAgICAkc2VsZi0+ZG9fdW5jb250YWluZWRfY29tbWFfYnJlYWtzKCRkZCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaGFuZGxlIGNvbW1hcyB3aXRoaW4gY29udGFpbmVycy4uLgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG15ICRmYmMgPSBnZXRfZm9yY2VkX2JyZWFrcG9pbnRfY291bnQoKTsKCiAgICAgICAgICAgICAgICAjIGFsd2F5cyBvcGVuIGNvbW1hIGxpc3RzIG5vdCBwcmVjZWRlZCBieSBrZXl3b3JkcywKICAgICAgICAgICAgICAgICMgYmFyZXdvcmRzLCBpZGVudGlmaWVycyAodGhhdCBpcywgYW55dGhpbmcgdGhhdCBkb2Vzbid0CiAgICAgICAgICAgICAgICAjIGxvb2sgbGlrZSBhIGZ1bmN0aW9uIGNhbGwpCiAgICAgICAgICAgICAgICBteSAkbXVzdF9icmVha19vcGVuID0gJGxhc3Rfbm9uYmxhbmtfdHlwZVskZGRdICF+IC9eW2t3aVVdJC87CgogICAgICAgICAgICAgICAgJHNlbGYtPnNldF9jb21tYV9icmVha3BvaW50c19kbygKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoICAgICAgICAgICAgPT4gJGRkLAogICAgICAgICAgICAgICAgICAgICAgICBpX29wZW5pbmdfcGFyZW4gID0+ICRvcGVuaW5nX3N0cnVjdHVyZV9pbmRleF9zdGFja1skZGRdLAogICAgICAgICAgICAgICAgICAgICAgICBpX2Nsb3NpbmdfcGFyZW4gID0+ICRpLAogICAgICAgICAgICAgICAgICAgICAgICBpdGVtX2NvdW50ICAgICAgID0+ICRpdGVtX2NvdW50X3N0YWNrWyRkZF0sCiAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJfY291bnQgPT4gJGlkZW50aWZpZXJfY291bnRfc3RhY2tbJGRkXSwKICAgICAgICAgICAgICAgICAgICAgICAgcmNvbW1hX2luZGV4ICAgICA9PiAkY29tbWFfaW5kZXhbJGRkXSwKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9ub25ibGFua190eXBlICA9PiAkbmV4dF9ub25ibGFua190eXBlLAogICAgICAgICAgICAgICAgICAgICAgICBsaXN0X3R5cGUgICAgICAgICAgID0+ICRjb250YWluZXJfdHlwZVskZGRdLAogICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRlZCAgICAgICAgID0+ICRpbnRlcnJ1cHRlZF9saXN0WyRkZF0sCiAgICAgICAgICAgICAgICAgICAgICAgIHJkb19ub3RfYnJlYWtfYXBhcnQgPT4gXCRkb19ub3RfYnJlYWtfYXBhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIG11c3RfYnJlYWtfb3BlbiAgICAgPT4gJG11c3RfYnJlYWtfb3BlbiwKICAgICAgICAgICAgICAgICAgICAgICAgaGFzX2Jyb2tlbl9zdWJsaXN0ICA9PiAkaGFzX2Jyb2tlbl9zdWJsaXN0WyRkZF0sCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRicF9jb3VudCAgICAgICAgICAgPSBnZXRfZm9yY2VkX2JyZWFrcG9pbnRfY291bnQoKSAtICRmYmM7CiAgICAgICAgICAgICAgICAkZG9fbm90X2JyZWFrX2FwYXJ0ID0gMCBpZiAkbXVzdF9icmVha19vcGVuOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAoICRicF9jb3VudCwgJGRvX25vdF9icmVha19hcGFydCApOwogICAgfQoKICAgIHN1YiBkb191bmNvbnRhaW5lZF9jb21tYV9icmVha3MgewoKICAgICAgICAjIEhhbmRsZSBjb21tYXMgbm90IGluIGNvbnRhaW5lcnMuLi4KICAgICAgICAjIFRoaXMgaXMgYSBjYXRjaC1hbGwgcm91dGluZSBmb3IgY29tbWFzIHRoYXQgd2UKICAgICAgICAjIGRvbid0IGtub3cgd2hhdCB0byBkbyB3aXRoIGJlY2F1c2UgdGhlIGRvbid0IGZhbGwKICAgICAgICAjIHdpdGhpbiBjb250YWluZXJzLiAgV2Ugd2lsbCBiaWFzIHRoZSBib25kIHN0cmVuZ3RoCiAgICAgICAgIyB0byBicmVhayBhdCBjb21tYXMgd2hpY2ggZW5kZWQgbGluZXMgaW4gdGhlIGlucHV0CiAgICAgICAgIyBmaWxlLiAgVGhpcyB1c3VhbGx5IHdvcmtzIGJldHRlciB0aGFuIGp1c3QgdHJ5aW5nCiAgICAgICAgIyB0byBwdXQgYXMgbWFueSBpdGVtcyBvbiBhIGxpbmUgYXMgcG9zc2libGUuICBBCiAgICAgICAgIyBkb3duc2lkZSBpcyB0aGF0IGlmIHRoZSBpbnB1dCBmaWxlIGlzIGdhcmJhZ2UgaXQKICAgICAgICAjIHdvbid0IHdvcmsgdmVyeSB3ZWxsLiBIb3dldmVyLCB0aGUgdXNlciBjYW4gYWx3YXlzCiAgICAgICAgIyBwcmV2ZW50IGZvbGxvd2luZyB0aGUgb2xkIGJyZWFrcG9pbnRzIHdpdGggdGhlCiAgICAgICAgIyAtaW9iIGZsYWcuCiAgICAgICAgbXkgKCAkc2VsZiwgJGRkICkgPSBAXzsKICAgICAgICBteSAkYmlhcyAgICAgICAgICAgICAgICAgID0gLS4wMTsKICAgICAgICBteSAkb2xkX2NvbW1hX2JyZWFrX2NvdW50ID0gMDsKICAgICAgICBmb3JlYWNoIG15ICRpaSAoIEB7ICRjb21tYV9pbmRleFskZGRdIH0gKSB7CiAgICAgICAgICAgIGlmICggJG9sZF9icmVha3BvaW50X3RvX2dvWyRpaV0gKSB7CiAgICAgICAgICAgICAgICAkb2xkX2NvbW1hX2JyZWFrX2NvdW50Kys7CiAgICAgICAgICAgICAgICAkYm9uZF9zdHJlbmd0aF90b19nb1skaWldID0gJGJpYXM7CgogICAgICAgICAgICAgICAgIyByZWR1Y2UgYmlhcyBtYWduaXR1ZGUgdG8gZm9yY2UgYnJlYWtzIGluIG9yZGVyCiAgICAgICAgICAgICAgICAkYmlhcyAqPSAwLjk5OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIEFsc28gcHV0IGEgYnJlYWsgYmVmb3JlIHRoZSBmaXJzdCBjb21tYSBpZgogICAgICAgICMgKDEpIHRoZXJlIHdhcyBhIGJyZWFrIHRoZXJlIGluIHRoZSBpbnB1dCwgYW5kCiAgICAgICAgIyAoMikgdGhlcmUgd2FzIGV4YWN0bHkgb25lIG9sZCBicmVhayBiZWZvcmUgdGhlIGZpcnN0IGNvbW1hIGJyZWFrCiAgICAgICAgIyAoMykgT0xEOiB0aGVyZSBhcmUgbXVsdGlwbGUgb2xkIGNvbW1hIGJyZWFrcwogICAgICAgICMgKDMpIE5FVzogdGhlcmUgYXJlIG9uZSBvciBtb3JlIG9sZCBjb21tYSBicmVha3MgKHNlZSByZXR1cm4gZXhhbXBsZSkKICAgICAgICAjCiAgICAgICAgIyBGb3IgZXhhbXBsZSwgd2Ugd2lsbCBmb2xsb3cgdGhlIHVzZXIgYW5kIGJyZWFrIGFmdGVyCiAgICAgICAgIyAncHJpbnQnIGluIHRoaXMgc25pcHBldDoKICAgICAgICAjICAgIHByaW50CiAgICAgICAgIyAgICAgICJjb25mb3JtYWJpbGl0eSAoTm90IHRoZSBzYW1lIGRpbWVuc2lvbilcbiIsCiAgICAgICAgIyAgICAgICJcdCIsICRoYXZlLCAiIGlzICIsIHRleHRfdW5pdCgkaHUpLCAiXG4iLAogICAgICAgICMgICAgICAiXHQiLCAkd2FudCwgIiBpcyAiLCB0ZXh0X3VuaXQoJHd1KSwgIlxuIiwKICAgICAgICAjICAgICAgOwogICAgICAgICMKICAgICAgICAjIEFub3RoZXIgZXhhbXBsZSwganVzdCBvbmUgY29tbWEsIHdoZXJlIHdlIHdpbGwgYnJlYWsgYWZ0ZXIKICAgICAgICAjIHRoZSByZXR1cm46CiAgICAgICAgIyAgcmV0dXJuCiAgICAgICAgIyAgICAkeCAqIGNvcygkYSkgLSAkeSAqIHNpbigkYSksCiAgICAgICAgIyAgICAkeCAqIHNpbigkYSkgKyAkeSAqIGNvcygkYSk7CgogICAgICAgICMgQnJlYWtpbmcgYSBwcmludCBzdGF0ZW1lbnQ6CiAgICAgICAgIyBwcmludCBTQVZFT1VUCiAgICAgICAgIyAgICggJD8gJiAxMjcgKSA/ICIgKFNJRyMiIC4gKCAkPyAmIDEyNyApIC4gIikiIDogIiIsCiAgICAgICAgIyAgICggJD8gJiAxMjggKSA/ICIgLS0gY29yZSBkdW1wZWQiIDogIiIsICJcbiI7CiAgICAgICAgIwogICAgICAgICMgIEJ1dCB3ZSB3aWxsIG5vdCBmb3JjZSBhIGJyZWFrIGFmdGVyIHRoZSBvcGVuaW5nIHBhcmVuIGhlcmUKICAgICAgICAjICAoY2F1c2VzIGEgYmxpbmtlcik6CiAgICAgICAgIyAgICAgICAgJGhlYXAtPntzdHJlYW19LT5zZXRfb3V0cHV0X2ZpbHRlcigKICAgICAgICAjICAgICAgICAgICAgcG9lOjpmaWx0ZXI6OnJlZmVyZW5jZS0+bmV3KCdteW90aGVyZnJlZXplcicpICksCiAgICAgICAgIyAgICAgICAgICA7CiAgICAgICAgIwogICAgICAgIG15ICRpX2ZpcnN0X2NvbW1hID0gJGNvbW1hX2luZGV4WyRkZF0tPlswXTsKICAgICAgICBpZiAoICRvbGRfYnJlYWtwb2ludF90b19nb1skaV9maXJzdF9jb21tYV0gKSB7CiAgICAgICAgICAgIG15ICRsZXZlbF9jb21tYSA9ICRsZXZlbHNfdG9fZ29bJGlfZmlyc3RfY29tbWFdOwogICAgICAgICAgICBteSAkaWJyZWFrICAgICAgPSAtMTsKICAgICAgICAgICAgbXkgJG9icF9jb3VudCAgID0gMDsKICAgICAgICAgICAgZm9yICggbXkgJGlpID0gJGlfZmlyc3RfY29tbWEgLSAxIDsgJGlpID49IDAgOyAkaWkgLT0gMSApIHsKICAgICAgICAgICAgICAgIGlmICggJG9sZF9icmVha3BvaW50X3RvX2dvWyRpaV0gKSB7CiAgICAgICAgICAgICAgICAgICAgJG9icF9jb3VudCsrOwogICAgICAgICAgICAgICAgICAgIGxhc3QgaWYgKCAkb2JwX2NvdW50ID4gMSApOwogICAgICAgICAgICAgICAgICAgICRpYnJlYWsgPSAkaWkKICAgICAgICAgICAgICAgICAgICAgIGlmICggJGxldmVsc190b19nb1skaWldID09ICRsZXZlbF9jb21tYSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIENoYW5nZWQgcnVsZSBmcm9tIG11bHRpcGxlIG9sZCBjb21tYXMgdG8ganVzdCBvbmUgaGVyZToKICAgICAgICAgICAgaWYgKCAkaWJyZWFrID49IDAgJiYgJG9icF9jb3VudCA9PSAxICYmICRvbGRfY29tbWFfYnJlYWtfY291bnQgPiAwICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIyBEbyBub3QgdG8gYnJlYWsgYmVmb3JlIGFuIG9wZW5pbmcgdG9rZW4gYmVjYXVzZQogICAgICAgICAgICAgICAgIyBpdCBjYW4gbGVhZCB0byAiYmxpbmtlcnMiLgogICAgICAgICAgICAgICAgbXkgJGlicmVha20gPSAkaWJyZWFrOwogICAgICAgICAgICAgICAgJGlicmVha20tLSBpZiAoICR0eXBlc190b19nb1skaWJyZWFrbV0gZXEgJ2InICk7CiAgICAgICAgICAgICAgICBpZiAoICRpYnJlYWttID49IDAgJiYgJHR5cGVzX3RvX2dvWyRpYnJlYWttXSAhfiAvXltcKFx7XFtMXSQvICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkc2VsZi0+c2V0X2ZvcmNlZF9icmVha3BvaW50KCRpYnJlYWspOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAlaXNfbG9naWNhbF9jb250YWluZXI7CiAgICBteSAlcXVpY2tfZmlsdGVyOwoKICAgIEJFR0lOIHsKICAgICAgICBteSBAcSA9IHF3IyBpZiBlbHNpZiB1bmxlc3Mgd2hpbGUgYW5kIG9yIGVyciBub3QgJiYgfCB8fCA/IDogISAjOwogICAgICAgIEBpc19sb2dpY2FsX2NvbnRhaW5lcntAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICAgICAjIFRoaXMgZmlsdGVyIHdpbGwgYWxsb3cgbW9zdCB0b2tlbnMgdG8gc2tpcCBwYXN0IGEgc2VjdGlvbiBvZiBjb2RlCiAgICAgICAgJXF1aWNrX2ZpbHRlciA9ICVpc19hc3NpZ25tZW50OwogICAgICAgIEBxICAgICAgICAgICAgPSBxdyMgPT4gLiA7IDwgPiB+ICM7CiAgICAgICAgcHVzaCBAcSwgJywnOwogICAgICAgIEBxdWlja19maWx0ZXJ7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKICAgIH0KCiAgICBzdWIgc2V0X2Zvcl9zZW1pY29sb25fYnJlYWtwb2ludHMgewogICAgICAgIG15ICggJHNlbGYsICRkZCApID0gQF87CiAgICAgICAgZm9yZWFjaCAoIEB7ICRyZm9yX3NlbWljb2xvbl9saXN0WyRkZF0gfSApIHsKICAgICAgICAgICAgJHNlbGYtPnNldF9mb3JjZWRfYnJlYWtwb2ludCgkXyk7CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgc2V0X2xvZ2ljYWxfYnJlYWtwb2ludHMgewogICAgICAgIG15ICggJHNlbGYsICRkZCApID0gQF87CiAgICAgICAgaWYgKAogICAgICAgICAgICAgICAkaXRlbV9jb3VudF9zdGFja1skZGRdID09IDAKICAgICAgICAgICAgJiYgJGlzX2xvZ2ljYWxfY29udGFpbmVyeyAkY29udGFpbmVyX3R5cGVbJGRkXSB9CgogICAgICAgICAgICB8fCAkaGFzX29sZF9sb2dpY2FsX2JyZWFrcG9pbnRzWyRkZF0KICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICAjIExvb2sgZm9yIGJyZWFrcyBpbiB0aGlzIG9yZGVyOgogICAgICAgICAgICAjIDAgICAxICAgIDIgICAzCiAgICAgICAgICAgICMgb3IgIGFuZCAgfHwgICYmCiAgICAgICAgICAgIGZvcmVhY2ggbXkgJGkgKCAwIC4uIDMgKSB7CiAgICAgICAgICAgICAgICBpZiAoICRyYW5kX29yX2xpc3RbJGRkXVskaV0gKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoIEB7ICRyYW5kX29yX2xpc3RbJGRkXVskaV0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYtPnNldF9mb3JjZWRfYnJlYWtwb2ludCgkXyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGJyZWFrIGF0IGFueSAnaWYnIGFuZCAndW5sZXNzJyB0b28KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICggQHsgJHJhbmRfb3JfbGlzdFskZGRdWzRdIH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5zZXRfZm9yY2VkX2JyZWFrcG9pbnQoJF8pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkcmFuZF9vcl9saXN0WyRkZF0gPSBbXTsKICAgICAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgaXNfdW5icmVha2FibGVfY29udGFpbmVyIHsKCiAgICAgICAgIyBuZXZlciBicmVhayBhIGNvbnRhaW5lciBvZiBvbmUgb2YgdGhlc2UgdHlwZXMKICAgICAgICAjIGJlY2F1c2UgYmFkIHRoaW5ncyBjYW4gaGFwcGVuIChtYXAxLnQpCiAgICAgICAgbXkgJGRkID0gc2hpZnQ7CiAgICAgICAgcmV0dXJuICRpc19zb3J0X21hcF9ncmVweyAkY29udGFpbmVyX3R5cGVbJGRkXSB9OwogICAgfQoKICAgIHN1YiBzY2FuX2xpc3QgewoKICAgICAgICBteSAoICRzZWxmLCAkaXNfbG9uZ19saW5lICkgPSBAXzsKCiAgICAgICAgIyBUaGlzIHJvdXRpbmUgaXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgbGluZSBicmVha3MgZm9yIGFsbCBsaXN0cywKICAgICAgICAjIHNvIHRoYXQgaGllcmFyY2hpY2FsIHN0cnVjdHVyZSBjYW4gYmUgZGlzcGxheWVkIGFuZCBzbyB0aGF0IGxpc3QKICAgICAgICAjIGl0ZW1zIGNhbiBiZSB2ZXJ0aWNhbGx5IGFsaWduZWQuICBUaGUgb3V0cHV0IG9mIHRoaXMgcm91dGluZSBpcwogICAgICAgICMgc3RvcmVkIGluIHRoZSBhcnJheSBAZm9yY2VkX2JyZWFrcG9pbnRfdG9fZ28sIHdoaWNoIGlzIHVzZWQgdG8gc2V0CiAgICAgICAgIyBmaW5hbCBicmVha3BvaW50cy4KCiAgICAgICAgIyBJdCBpcyBjYWxsZWQgb25jZSBwZXIgYmF0Y2ggaWYgdGhlIGJhdGNoIGlzIGEgbGlzdC4KICAgICAgICBteSAkck9wdHNfYnJlYWtfYXRfb2xkX2F0dHJpYnV0ZV9icmVha3BvaW50cyA9CiAgICAgICAgICAkck9wdHMtPnsnYnJlYWstYXQtb2xkLWF0dHJpYnV0ZS1icmVha3BvaW50cyd9OwogICAgICAgIG15ICRyT3B0c19icmVha19hdF9vbGRfa2V5d29yZF9icmVha3BvaW50cyA9CiAgICAgICAgICAkck9wdHMtPnsnYnJlYWstYXQtb2xkLWtleXdvcmQtYnJlYWtwb2ludHMnfTsKICAgICAgICBteSAkck9wdHNfYnJlYWtfYXRfb2xkX2xvZ2ljYWxfYnJlYWtwb2ludHMgPQogICAgICAgICAgJHJPcHRzLT57J2JyZWFrLWF0LW9sZC1sb2dpY2FsLWJyZWFrcG9pbnRzJ307CiAgICAgICAgbXkgJHJPcHRzX2JyZWFrX2F0X29sZF9tZXRob2RfYnJlYWtwb2ludHMgPQogICAgICAgICAgJHJPcHRzLT57J2JyZWFrLWF0LW9sZC1tZXRob2QtYnJlYWtwb2ludHMnfTsKICAgICAgICBteSAkck9wdHNfYnJlYWtfYXRfb2xkX3Rlcm5hcnlfYnJlYWtwb2ludHMgPQogICAgICAgICAgJHJPcHRzLT57J2JyZWFrLWF0LW9sZC10ZXJuYXJ5LWJyZWFrcG9pbnRzJ307CgogICAgICAgICRzdGFydGluZ19kZXB0aCA9ICRuZXN0aW5nX2RlcHRoX3RvX2dvWzBdOwoKICAgICAgICAkYmxvY2tfdHlwZSAgICAgICAgICAgICAgICAgPSAnICc7CiAgICAgICAgJGN1cnJlbnRfZGVwdGggICAgICAgICAgICAgID0gJHN0YXJ0aW5nX2RlcHRoOwogICAgICAgICRpICAgICAgICAgICAgICAgICAgICAgICAgICA9IC0xOwogICAgICAgICRsYXN0X2NvbG9uX3NlcXVlbmNlX251bWJlciA9IC0xOwogICAgICAgICRsYXN0X25vbmJsYW5rX3Rva2VuICAgICAgICA9ICc7JzsKICAgICAgICAkbGFzdF9ub25ibGFua190eXBlICAgICAgICAgPSAnOyc7CiAgICAgICAgJGxhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZSAgID0gJyAnOwogICAgICAgICRsYXN0X29sZF9icmVha3BvaW50X2NvdW50ICA9IDA7CiAgICAgICAgJG1pbmltdW1fZGVwdGggPSAkY3VycmVudF9kZXB0aCArIDE7ICAgICMgZm9yY2VzIHVwZGF0ZSBpbiBjaGVjayBiZWxvdwogICAgICAgICRvbGRfYnJlYWtwb2ludF9jb3VudCAgICAgID0gMDsKICAgICAgICAkc3RhcnRpbmdfYnJlYWtwb2ludF9jb3VudCA9IGdldF9mb3JjZWRfYnJlYWtwb2ludF9jb3VudCgpOwogICAgICAgICR0b2tlbiAgICAgICAgICAgICAgICAgICAgID0gJzsnOwogICAgICAgICR0eXBlICAgICAgICAgICAgICAgICAgICAgID0gJzsnOwogICAgICAgICR0eXBlX3NlcXVlbmNlICAgICAgICAgICAgID0gJyc7CgogICAgICAgIG15ICR0b3RhbF9kZXB0aF92YXJpYXRpb24gPSAwOwogICAgICAgIG15ICRpX29sZF9hc3NpZ25tZW50X2JyZWFrOwogICAgICAgIG15ICRkZXB0aF9sYXN0ID0gJHN0YXJ0aW5nX2RlcHRoOwoKICAgICAgICBjaGVja19mb3JfbmV3X21pbmltdW1fZGVwdGgoJGN1cnJlbnRfZGVwdGgpOwoKICAgICAgICBteSAkd2FudF9wcmV2aW91c19icmVha3BvaW50ID0gLTE7CgogICAgICAgIG15ICRzYXdfZ29vZF9icmVha3BvaW50OwogICAgICAgIG15ICRpX2xpbmVfZW5kICAgPSAtMTsKICAgICAgICBteSAkaV9saW5lX3N0YXJ0ID0gLTE7CgogICAgICAgICMgbG9vcCBvdmVyIGFsbCB0b2tlbnMgaW4gdGhpcyBiYXRjaAogICAgICAgIHdoaWxlICggKyskaSA8PSAkbWF4X2luZGV4X3RvX2dvICkgewogICAgICAgICAgICBpZiAoICR0eXBlIG5lICdiJyApIHsKICAgICAgICAgICAgICAgICRpX2xhc3Rfbm9uYmxhbmtfdG9rZW4gICAgPSAkaSAtIDE7CiAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua190eXBlICAgICAgID0gJHR5cGU7CiAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua190b2tlbiAgICAgID0gJHRva2VuOwogICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZSA9ICRibG9ja190eXBlOwogICAgICAgICAgICB9ICMjIGVuZCBpZiAoICR0eXBlIG5lICdiJyApCiAgICAgICAgICAgICR0eXBlICAgICAgICAgID0gJHR5cGVzX3RvX2dvWyRpXTsKICAgICAgICAgICAgJGJsb2NrX3R5cGUgICAgPSAkYmxvY2tfdHlwZV90b19nb1skaV07CiAgICAgICAgICAgICR0b2tlbiAgICAgICAgID0gJHRva2Vuc190b19nb1skaV07CiAgICAgICAgICAgICR0eXBlX3NlcXVlbmNlID0gJHR5cGVfc2VxdWVuY2VfdG9fZ29bJGldOwogICAgICAgICAgICBteSAkbmV4dF90eXBlICAgICAgID0gJHR5cGVzX3RvX2dvWyAkaSArIDEgXTsKICAgICAgICAgICAgbXkgJG5leHRfdG9rZW4gICAgICA9ICR0b2tlbnNfdG9fZ29bICRpICsgMSBdOwogICAgICAgICAgICBteSAkaV9uZXh0X25vbmJsYW5rID0gKCAoICRuZXh0X3R5cGUgZXEgJ2InICkgPyAkaSArIDIgOiAkaSArIDEgKTsKICAgICAgICAgICAgJG5leHRfbm9uYmxhbmtfdHlwZSAgICAgICA9ICR0eXBlc190b19nb1skaV9uZXh0X25vbmJsYW5rXTsKICAgICAgICAgICAgJG5leHRfbm9uYmxhbmtfdG9rZW4gICAgICA9ICR0b2tlbnNfdG9fZ29bJGlfbmV4dF9ub25ibGFua107CiAgICAgICAgICAgICRuZXh0X25vbmJsYW5rX2Jsb2NrX3R5cGUgPSAkYmxvY2tfdHlwZV90b19nb1skaV9uZXh0X25vbmJsYW5rXTsKCiAgICAgICAgICAgICMgc2V0IGJyZWFrIGlmIGZsYWcgd2FzIHNldAogICAgICAgICAgICBpZiAoICR3YW50X3ByZXZpb3VzX2JyZWFrcG9pbnQgPj0gMCApIHsKICAgICAgICAgICAgICAgICRzZWxmLT5zZXRfZm9yY2VkX2JyZWFrcG9pbnQoJHdhbnRfcHJldmlvdXNfYnJlYWtwb2ludCk7CiAgICAgICAgICAgICAgICAkd2FudF9wcmV2aW91c19icmVha3BvaW50ID0gLTE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRsYXN0X29sZF9icmVha3BvaW50X2NvdW50ID0gJG9sZF9icmVha3BvaW50X2NvdW50OwogICAgICAgICAgICBpZiAoICRvbGRfYnJlYWtwb2ludF90b19nb1skaV0gKSB7CiAgICAgICAgICAgICAgICAkaV9saW5lX2VuZCAgID0gJGk7CiAgICAgICAgICAgICAgICAkaV9saW5lX3N0YXJ0ID0gJGlfbmV4dF9ub25ibGFuazsKCiAgICAgICAgICAgICAgICAkb2xkX2JyZWFrcG9pbnRfY291bnQrKzsKCiAgICAgICAgICAgICAgICAjIEJyZWFrIGJlZm9yZSBjZXJ0YWluIGtleXdvcmRzIGlmIHVzZXIgYnJva2UgdGhlcmUgYW5kCiAgICAgICAgICAgICAgICAjIHRoaXMgaXMgYSAnc2FmZScgYnJlYWsgcG9pbnQuIFRoZSBpZGVhIGlzIHRvIHJldGFpbgogICAgICAgICAgICAgICAgIyBhbnkgcHJlZmVycmVkIGJyZWFrcyBmb3Igc2VxdWVudGlhbCBsaXN0IG9wZXJhdGlvbnMsCiAgICAgICAgICAgICAgICAjIGxpa2UgYSBzY2h3YXJ0emlhbiB0cmFuc2Zvcm0uCiAgICAgICAgICAgICAgICBpZiAoJHJPcHRzX2JyZWFrX2F0X29sZF9rZXl3b3JkX2JyZWFrcG9pbnRzKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAkbmV4dF9ub25ibGFua190eXBlIGVxICdrJwogICAgICAgICAgICAgICAgICAgICAgICAmJiAkaXNfa2V5d29yZF9yZXR1cm5pbmdfbGlzdHskbmV4dF9ub25ibGFua190b2tlbn0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAgICR0eXBlID1+IC9eWz1cKVxdXH1SaXddJC8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICR0eXBlIGVxICdrJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGlzX2tleXdvcmRfcmV0dXJuaW5nX2xpc3R7JHRva2VufSApCiAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyB3ZSBhY3R1YWxseSBoYXZlIHRvIHNldCB0aGlzIGJyZWFrIG5leHQgdGltZSB0aHJvdWdoCiAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIGxvb3AgYmVjYXVzZSBpZiB3ZSBhcmUgYXQgYSBjbG9zaW5nIHRva2VuIChzdWNoCiAgICAgICAgICAgICAgICAgICAgICAgICMgYXMgJ30nKSB3aGljaCBmb3JtcyBhIG9uZS1saW5lIGJsb2NrLCB0aGlzIGJyZWFrIG1pZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICMgZ2V0IHVuZG9uZS4KICAgICAgICAgICAgICAgICAgICAgICAgJHdhbnRfcHJldmlvdXNfYnJlYWtwb2ludCA9ICRpOwogICAgICAgICAgICAgICAgICAgIH0gIyMgZW5kIGlmICggJG5leHRfbm9uYmxhbmtfdHlwZS4uLikKICAgICAgICAgICAgICAgIH0gIyMgZW5kIGlmICgkck9wdHNfYnJlYWtfYXRfb2xkX2tleXdvcmRfYnJlYWtwb2ludHMpCgogICAgICAgICAgICAgICAgIyBCcmVhayBiZWZvcmUgYXR0cmlidXRlcyBpZiB1c2VyIGJyb2tlIHRoZXJlCiAgICAgICAgICAgICAgICBpZiAoJHJPcHRzX2JyZWFrX2F0X29sZF9hdHRyaWJ1dGVfYnJlYWtwb2ludHMpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRuZXh0X25vbmJsYW5rX3R5cGUgZXEgJ0EnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkd2FudF9wcmV2aW91c19icmVha3BvaW50ID0gJGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgcmVtZW1iZXIgYW4gPSBicmVhayBhcyBwb3NzaWJsZSBnb29kIGJyZWFrIHBvaW50CiAgICAgICAgICAgICAgICBpZiAoICRpc19hc3NpZ25tZW50eyR0eXBlfSApIHsKICAgICAgICAgICAgICAgICAgICAkaV9vbGRfYXNzaWdubWVudF9icmVhayA9ICRpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkaXNfYXNzaWdubWVudHskbmV4dF9ub25ibGFua190eXBlfSApIHsKICAgICAgICAgICAgICAgICAgICAkaV9vbGRfYXNzaWdubWVudF9icmVhayA9ICRpX25leHRfbm9uYmxhbms7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gIyMgZW5kIGlmICggJG9sZF9icmVha3BvaW50X3RvX2dvLi4uKQoKICAgICAgICAgICAgbmV4dCBpZiAoICR0eXBlIGVxICdiJyApOwogICAgICAgICAgICAkZGVwdGggPSAkbmVzdGluZ19kZXB0aF90b19nb1sgJGkgKyAxIF07CgogICAgICAgICAgICAkdG90YWxfZGVwdGhfdmFyaWF0aW9uICs9IGFicyggJGRlcHRoIC0gJGRlcHRoX2xhc3QgKTsKICAgICAgICAgICAgJGRlcHRoX2xhc3QgPSAkZGVwdGg7CgogICAgICAgICAgICAjIHNhZmV0eSBjaGVjayAtIGJlIHN1cmUgd2UgYWx3YXlzIGJyZWFrIGFmdGVyIGEgY29tbWVudAogICAgICAgICAgICAjIFNob3VsZG4ndCBoYXBwZW4gLi4gYW4gZXJyb3IgaGVyZSBwcm9iYWJseSBtZWFucyB0aGF0IHRoZQogICAgICAgICAgICAjIG5vYnJlYWsgZmxhZyBkaWQgbm90IGdldCB0dXJuZWQgb2ZmIGNvcnJlY3RseSBkdXJpbmcKICAgICAgICAgICAgIyBmb3JtYXR0aW5nLgogICAgICAgICAgICBpZiAoICR0eXBlIGVxICcjJyApIHsKICAgICAgICAgICAgICAgIGlmICggJGkgIT0gJG1heF9pbmRleF90b19nbyApIHsKICAgICAgICAgICAgICAgICAgICB3YXJuaW5nKAoiTm9uLWZhdGFsIHByb2dyYW0gYnVnOiBiYWNrdXAgbG9naWMgcmVxdWlyZWQgdG8gYnJlYWsgYWZ0ZXIgYSBjb21tZW50XG4iCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICByZXBvcnRfZGVmaW5pdGVfYnVnKCk7CiAgICAgICAgICAgICAgICAgICAgJG5vYnJlYWtfdG9fZ29bJGldID0gMDsKICAgICAgICAgICAgICAgICAgICAkc2VsZi0+c2V0X2ZvcmNlZF9icmVha3BvaW50KCRpKTsKICAgICAgICAgICAgICAgIH0gIyMgZW5kIGlmICggJGkgIT0gJG1heF9pbmRleF90b19nbykKICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAkdHlwZSBlcSAnIycgKQoKICAgICAgICAgICAgIyBGb3JjZSBicmVha3BvaW50cyBhdCBjZXJ0YWluIHRva2VucyBpbiBsb25nIGxpbmVzLgogICAgICAgICAgICAjIE5vdGUgdGhhdCBzdWNoIGJyZWFrcG9pbnRzIHdpbGwgYmUgdW5kb25lIGxhdGVyIGlmIHRoZXNlIHRva2VucwogICAgICAgICAgICAjIGFyZSBmdWxseSBjb250YWluZWQgd2l0aGluIHBhcmVucyBvbiBhIGxpbmUuCiAgICAgICAgICAgIGlmICgKCiAgICAgICAgICAgICAgICAjIGJyZWFrIGJlZm9yZSBhIGtleXdvcmQgd2l0aGluIGEgbGluZQogICAgICAgICAgICAgICAgJHR5cGUgZXEgJ2snCiAgICAgICAgICAgICAgICAmJiAkaSA+IDAKCiAgICAgICAgICAgICAgICAjIGlmIG9uZSBvZiB0aGVzZSBrZXl3b3JkczoKICAgICAgICAgICAgICAgICMgICAvXihpZnx1bmxlc3N8d2hpbGV8dW50aWx8Zm9yKSQvCiAgICAgICAgICAgICAgICAmJiAkaXNfaWZfdW5sZXNzX3doaWxlX3VudGlsX2ZvcnskdG9rZW59CgogICAgICAgICAgICAgICAgIyBidXQgZG8gbm90IGJyZWFrIGF0IHNvbWV0aGluZyBsaWtlICcxIHdoaWxlJwogICAgICAgICAgICAgICAgJiYgKCAkbGFzdF9ub25ibGFua190eXBlIG5lICduJyB8fCAkaSA+IDIgKQoKICAgICAgICAgICAgICAgICMgYW5kIGxldCBrZXl3b3JkcyBmb2xsb3cgYSBjbG9zaW5nICdkbycgYnJhY2UKICAgICAgICAgICAgICAgICYmICRsYXN0X25vbmJsYW5rX2Jsb2NrX3R5cGUgbmUgJ2RvJwoKICAgICAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICAgICAkaXNfbG9uZ19saW5lCgogICAgICAgICAgICAgICAgICAgICMgb3IgY29udGFpbmVyIGlzIGJyb2tlbiAoYnkgc2lkZS1jb21tZW50LCBldGMpCiAgICAgICAgICAgICAgICAgICAgfHwgKCAgICRuZXh0X25vbmJsYW5rX3Rva2VuIGVxICcoJwogICAgICAgICAgICAgICAgICAgICAgICAmJiAkbWF0ZV9pbmRleF90b19nb1skaV9uZXh0X25vbmJsYW5rXSA8ICRpICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRzZWxmLT5zZXRfZm9yY2VkX2JyZWFrcG9pbnQoICRpIC0gMSApOwogICAgICAgICAgICB9ICMjIGVuZCBpZiAoICR0eXBlIGVxICdrJyAmJiAkaS4uLikKCiAgICAgICAgICAgICMgcmVtZW1iZXIgbG9jYXRpb25zIG9mIC0+IGlmIHRoaXMgaXMgYSBwcmUtYnJva2VuIG1ldGhvZCBjaGFpbgogICAgICAgICAgICBpZiAoICR0eXBlIGVxICctPicgKSB7CiAgICAgICAgICAgICAgICBpZiAoJHJPcHRzX2JyZWFrX2F0X29sZF9tZXRob2RfYnJlYWtwb2ludHMpIHsKCiAgICAgICAgICAgICAgICAgICAgIyBDYXNlIDE6IGxvb2sgZm9yIGxpbmVzIHdpdGggbGVhZGluZyBwb2ludGVycwogICAgICAgICAgICAgICAgICAgIGlmICggJGkgPT0gJGlfbGluZV9zdGFydCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYtPnNldF9mb3JjZWRfYnJlYWtwb2ludCggJGkgLSAxICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIENhc2UgMjogbG9vayBmb3IgY3VkZGxlZCBwb2ludGVyIGNhbGxzCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGxvb2sgZm9yIG9sZCBsaW5lcyB3aXRoIGxlYWRpbmcgJyktPicgb3IgJykgLT4nCiAgICAgICAgICAgICAgICAgICAgICAgICMgYW5kLCB3aGVuIGZvdW5kLCBmb3JjZSBhIGJyZWFrIGJlZm9yZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIyBvcGVuaW5nIHBhcmVuIGFuZCBhZnRlciB0aGUgcHJldmlvdXMgY2xvc2luZyBwYXJlbi4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlfbGluZV9zdGFydCA+PSAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZXNfdG9fZ29bJGlfbGluZV9zdGFydF0gZXEgJ30nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoICAgJGkgPT0gJGlfbGluZV9zdGFydCArIDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkaSA9PSAkaV9saW5lX3N0YXJ0ICsgMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICR0eXBlc190b19nb1sgJGkgLSAxIF0gZXEgJ2InICkKICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5zZXRfZm9yY2VkX2JyZWFrcG9pbnQoICRpX2xpbmVfc3RhcnQgLSAxICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi0+c2V0X2ZvcmNlZF9icmVha3BvaW50KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtYXRlX2luZGV4X3RvX2dvWyRpX2xpbmVfc3RhcnRdICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gIyMgZW5kIGlmICggJHR5cGUgZXEgJy0+JyApCgogICAgICAgICAgICAjIHJlbWVtYmVyIGxvY2F0aW9ucyBvZiAnfHwnICBhbmQgJyYmJyBmb3IgcG9zc2libGUgYnJlYWtzIGlmIHdlCiAgICAgICAgICAgICMgZGVjaWRlIHRoaXMgaXMgYSBsb25nIGxvZ2ljYWwgZXhwcmVzc2lvbi4KICAgICAgICAgICAgZWxzaWYgKCAkdHlwZSBlcSAnfHwnICkgewogICAgICAgICAgICAgICAgcHVzaCBAeyAkcmFuZF9vcl9saXN0WyRkZXB0aF1bMl0gfSwgJGk7CiAgICAgICAgICAgICAgICArKyRoYXNfb2xkX2xvZ2ljYWxfYnJlYWtwb2ludHNbJGRlcHRoXQogICAgICAgICAgICAgICAgICBpZiAoICggJGkgPT0gJGlfbGluZV9zdGFydCB8fCAkaSA9PSAkaV9saW5lX2VuZCApCiAgICAgICAgICAgICAgICAgICAgJiYgJHJPcHRzX2JyZWFrX2F0X29sZF9sb2dpY2FsX2JyZWFrcG9pbnRzICk7CiAgICAgICAgICAgIH0gIyMgZW5kIGVsc2lmICggJHR5cGUgZXEgJ3x8JyApCiAgICAgICAgICAgIGVsc2lmICggJHR5cGUgZXEgJyYmJyApIHsKICAgICAgICAgICAgICAgIHB1c2ggQHsgJHJhbmRfb3JfbGlzdFskZGVwdGhdWzNdIH0sICRpOwogICAgICAgICAgICAgICAgKyskaGFzX29sZF9sb2dpY2FsX2JyZWFrcG9pbnRzWyRkZXB0aF0KICAgICAgICAgICAgICAgICAgaWYgKCAoICRpID09ICRpX2xpbmVfc3RhcnQgfHwgJGkgPT0gJGlfbGluZV9lbmQgKQogICAgICAgICAgICAgICAgICAgICYmICRyT3B0c19icmVha19hdF9vbGRfbG9naWNhbF9icmVha3BvaW50cyApOwogICAgICAgICAgICB9ICMjIGVuZCBlbHNpZiAoICR0eXBlIGVxICcmJicgKQogICAgICAgICAgICBlbHNpZiAoICR0eXBlIGVxICdmJyApIHsKICAgICAgICAgICAgICAgIHB1c2ggQHsgJHJmb3Jfc2VtaWNvbG9uX2xpc3RbJGRlcHRoXSB9LCAkaTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICR0eXBlIGVxICdrJyApIHsKICAgICAgICAgICAgICAgIGlmICggJHRva2VuIGVxICdhbmQnICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQHsgJHJhbmRfb3JfbGlzdFskZGVwdGhdWzFdIH0sICRpOwogICAgICAgICAgICAgICAgICAgICsrJGhhc19vbGRfbG9naWNhbF9icmVha3BvaW50c1skZGVwdGhdCiAgICAgICAgICAgICAgICAgICAgICBpZiAoICggJGkgPT0gJGlfbGluZV9zdGFydCB8fCAkaSA9PSAkaV9saW5lX2VuZCApCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRyT3B0c19icmVha19hdF9vbGRfbG9naWNhbF9icmVha3BvaW50cyApOwogICAgICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAkdG9rZW4gZXEgJ2FuZCcgKQoKICAgICAgICAgICAgICAgICMgYnJlYWsgaW1tZWRpYXRlbHkgYXQgJ29yJ3Mgd2hpY2ggYXJlIHByb2JhYmx5IG5vdCBpbiBhIGxvZ2ljYWwKICAgICAgICAgICAgICAgICMgYmxvY2sgLS0gYnV0IHdlIHdpbGwgYnJlYWsgaW4gbG9naWNhbCBicmVha3MgYmVsb3cgc28gdGhhdAogICAgICAgICAgICAgICAgIyB0aGV5IGRvIG5vdCBhZGQgdG8gdGhlIGZvcmNlZF9icmVha3BvaW50X2NvdW50CiAgICAgICAgICAgICAgICBlbHNpZiAoICR0b2tlbiBlcSAnb3InICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQHsgJHJhbmRfb3JfbGlzdFskZGVwdGhdWzBdIH0sICRpOwogICAgICAgICAgICAgICAgICAgICsrJGhhc19vbGRfbG9naWNhbF9icmVha3BvaW50c1skZGVwdGhdCiAgICAgICAgICAgICAgICAgICAgICBpZiAoICggJGkgPT0gJGlfbGluZV9zdGFydCB8fCAkaSA9PSAkaV9saW5lX2VuZCApCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRyT3B0c19icmVha19hdF9vbGRfbG9naWNhbF9icmVha3BvaW50cyApOwogICAgICAgICAgICAgICAgICAgIGlmICggJGlzX2xvZ2ljYWxfY29udGFpbmVyeyAkY29udGFpbmVyX3R5cGVbJGRlcHRoXSB9ICkgewogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRpc19sb25nX2xpbmUpIHsgJHNlbGYtPnNldF9mb3JjZWRfYnJlYWtwb2ludCgkaSkgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICggJGkgPT0gJGlfbGluZV9zdGFydCB8fCAkaSA9PSAkaV9saW5lX2VuZCApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkck9wdHNfYnJlYWtfYXRfb2xkX2xvZ2ljYWxfYnJlYWtwb2ludHMgKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2F3X2dvb2RfYnJlYWtwb2ludCA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9ICMjIGVuZCBlbHNlIFsgaWYgKCAkaXNfbG9naWNhbF9jb250YWluZXIuLi4pXQogICAgICAgICAgICAgICAgfSAjIyBlbmQgZWxzaWYgKCAkdG9rZW4gZXEgJ29yJyApCiAgICAgICAgICAgICAgICBlbHNpZiAoICR0b2tlbiBlcSAnaWYnIHx8ICR0b2tlbiBlcSAndW5sZXNzJyApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEB7ICRyYW5kX29yX2xpc3RbJGRlcHRoXVs0XSB9LCAkaTsKICAgICAgICAgICAgICAgICAgICBpZiAoICggJGkgPT0gJGlfbGluZV9zdGFydCB8fCAkaSA9PSAkaV9saW5lX2VuZCApCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRyT3B0c19icmVha19hdF9vbGRfbG9naWNhbF9icmVha3BvaW50cyApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi0+c2V0X2ZvcmNlZF9icmVha3BvaW50KCRpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9ICMjIGVuZCBlbHNpZiAoICR0b2tlbiBlcSAnaWYnIHx8Li4uKQogICAgICAgICAgICB9ICMjIGVuZCBlbHNpZiAoICR0eXBlIGVxICdrJyApCiAgICAgICAgICAgIGVsc2lmICggJGlzX2Fzc2lnbm1lbnR7JHR5cGV9ICkgewogICAgICAgICAgICAgICAgJGlfZXF1YWxzWyRkZXB0aF0gPSAkaTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCR0eXBlX3NlcXVlbmNlKSB7CgogICAgICAgICAgICAgICAgIyBoYW5kbGUgYW55IHBvc3Rwb25lZCBjbG9zaW5nIGJyZWFrcG9pbnRzCiAgICAgICAgICAgICAgICBpZiAoICRpc19jbG9zaW5nX3NlcXVlbmNlX3Rva2VueyR0b2tlbn0gKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkdHlwZSBlcSAnOicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRsYXN0X2NvbG9uX3NlcXVlbmNlX251bWJlciA9ICR0eXBlX3NlcXVlbmNlOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyByZXRhaW4gYnJlYWsgYXQgYSAnOicgbGluZSBicmVhawogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICggJGkgPT0gJGlfbGluZV9zdGFydCB8fCAkaSA9PSAkaV9saW5lX2VuZCApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkck9wdHNfYnJlYWtfYXRfb2xkX3Rlcm5hcnlfYnJlYWtwb2ludHMgKQogICAgICAgICAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYtPnNldF9mb3JjZWRfYnJlYWtwb2ludCgkaSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBicmVhayBhdCBwcmV2aW91cyAnPScKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGlfZXF1YWxzWyRkZXB0aF0gPiAwICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5zZXRfZm9yY2VkX2JyZWFrcG9pbnQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpX2VxdWFsc1skZGVwdGhdICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlfZXF1YWxzWyRkZXB0aF0gPSAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAoICRpID09ICRpX2xpbmVfc3RhcnQuLi4pKQogICAgICAgICAgICAgICAgICAgIH0gIyMgZW5kIGlmICggJHR5cGUgZXEgJzonICkKICAgICAgICAgICAgICAgICAgICBpZiAoIGhhc19wb3N0cG9uZWRfYnJlYWtwb2ludCgkdHlwZV9zZXF1ZW5jZSkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpbmMgPSAoICR0eXBlIGVxICc6JyApID8gMCA6IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5zZXRfZm9yY2VkX2JyZWFrcG9pbnQoICRpIC0gJGluYyApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gIyMgZW5kIGlmICggJGlzX2Nsb3Npbmdfc2VxdWVuY2VfdG9rZW57JHRva2VufSApCgogICAgICAgICAgICAgICAgIyBzZXQgYnJlYWtzIGF0ID8vOiBpZiB0aGV5IHdpbGwgZ2V0IHNlcGFyYXRlZCAoYW5kIGFyZQogICAgICAgICAgICAgICAgIyBub3QgYSA/LzogY2hhaW4pLCBvciBpZiB0aGUgJz8nIGlzIGF0IHRoZSBlbmQgb2YgdGhlCiAgICAgICAgICAgICAgICAjIGxpbmUKICAgICAgICAgICAgICAgIGVsc2lmICggJHRva2VuIGVxICc/JyApIHsKICAgICAgICAgICAgICAgICAgICBteSAkaV9jb2xvbiA9ICRtYXRlX2luZGV4X3RvX2dvWyRpXTsKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRpX2NvbG9uIDw9IDAgICMgdGhlICc6JyBpcyBub3QgaW4gdGhpcyBiYXRjaAogICAgICAgICAgICAgICAgICAgICAgICB8fCAkaSA9PSAwICAgICAjIHRoaXMgJz8nIGlzIHRoZSBmaXJzdCB0b2tlbiBvZiB0aGUgbGluZQogICAgICAgICAgICAgICAgICAgICAgICB8fCAkaSA9PQogICAgICAgICAgICAgICAgICAgICAgICAkbWF4X2luZGV4X3RvX2dvICAgICMgb3IgdGhpcyAnPycgaXMgdGhlIGxhc3QgdG9rZW4KICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGRvbid0IGJyZWFrIGF0IGEgJz8nIGlmIHByZWNlZGVkIGJ5ICc6JyBvbgogICAgICAgICAgICAgICAgICAgICAgICAjIHRoaXMgbGluZSBvZiBwcmV2aW91cyA/LzogcGFpciBvbiB0aGlzIGxpbmUuCiAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBpcyBhbiBhdHRlbXB0IHRvIHByZXNlcnZlIGEgY2hhaW4gb2YgPy86CiAgICAgICAgICAgICAgICAgICAgICAgICMgZXhwcmVzc2lvbnMgKGVsc2lmMi50KS4gIEFuZCBkb24ndCBicmVhayBpZgogICAgICAgICAgICAgICAgICAgICAgICAjIHRoaXMgaGFzIGEgc2lkZSBjb21tZW50LgogICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi0+c2V0X2ZvcmNlZF9icmVha3BvaW50KCRpKQogICAgICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZV9zZXF1ZW5jZSA9PSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3RfY29sb25fc2VxdWVuY2VfbnVtYmVyICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRZUEVfU0VRVUVOQ0VfSU5DUkVNRU5UCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkdG9rZW5zX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dIGVxICcjJwogICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5zZXRfY2xvc2luZ19icmVha3BvaW50KCRpKTsKICAgICAgICAgICAgICAgICAgICB9ICMjIGVuZCBpZiAoICRpX2NvbG9uIDw9IDAgIHx8Li4uKQogICAgICAgICAgICAgICAgfSAjIyBlbmQgZWxzaWYgKCAkdG9rZW4gZXEgJz8nICkKICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCR0eXBlX3NlcXVlbmNlKQoKI3ByaW50ICJMSVNUWCBzZWVzOiBpPSRpIHR5cGU9JHR5cGUgIHRvaz0kdG9rZW4gIGJsb2NrPSRibG9ja190eXBlIGRlcHRoPSRkZXB0aFxuIjsKCiAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgIyBIYW5kbGUgSW5jcmVhc2luZyBEZXB0aC4uCiAgICAgICAgICAgICMKICAgICAgICAgICAgIyBwcmVwYXJlIGZvciBhIG5ldyBsaXN0IHdoZW4gZGVwdGggaW5jcmVhc2VzCiAgICAgICAgICAgICMgdG9rZW4gJGkgaXMgYSAnKCcsJ3snLCBvciAnWycKICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICBpZiAoICRkZXB0aCA+ICRjdXJyZW50X2RlcHRoICkgewoKICAgICAgICAgICAgICAgICRicmVha3BvaW50X3N0YWNrWyRkZXB0aF0gPSBnZXRfZm9yY2VkX2JyZWFrcG9pbnRfY291bnQoKTsKICAgICAgICAgICAgICAgICRicmVha3BvaW50X3VuZG9fc3RhY2tbJGRlcHRoXSA9CiAgICAgICAgICAgICAgICAgIGdldF9mb3JjZWRfYnJlYWtwb2ludF91bmRvX2NvdW50KCk7CiAgICAgICAgICAgICAgICAkaGFzX2Jyb2tlbl9zdWJsaXN0WyRkZXB0aF0gICAgICAgICAgICA9IDA7CiAgICAgICAgICAgICAgICAkaWRlbnRpZmllcl9jb3VudF9zdGFja1skZGVwdGhdICAgICAgICA9IDA7CiAgICAgICAgICAgICAgICAkaW5kZXhfYmVmb3JlX2Fycm93WyRkZXB0aF0gICAgICAgICAgICA9IC0xOwogICAgICAgICAgICAgICAgJGludGVycnVwdGVkX2xpc3RbJGRlcHRoXSAgICAgICAgICAgICAgPSAwOwogICAgICAgICAgICAgICAgJGl0ZW1fY291bnRfc3RhY2tbJGRlcHRoXSAgICAgICAgICAgICAgPSAwOwogICAgICAgICAgICAgICAgJGxhc3RfY29tbWFfaW5kZXhbJGRlcHRoXSAgICAgICAgICAgICAgPSB1bmRlZjsKICAgICAgICAgICAgICAgICRsYXN0X2RvdF9pbmRleFskZGVwdGhdICAgICAgICAgICAgICAgID0gdW5kZWY7CiAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua190eXBlWyRkZXB0aF0gICAgICAgICAgICA9ICRsYXN0X25vbmJsYW5rX3R5cGU7CiAgICAgICAgICAgICAgICAkb2xkX2JyZWFrcG9pbnRfY291bnRfc3RhY2tbJGRlcHRoXSAgICA9ICRvbGRfYnJlYWtwb2ludF9jb3VudDsKICAgICAgICAgICAgICAgICRvcGVuaW5nX3N0cnVjdHVyZV9pbmRleF9zdGFja1skZGVwdGhdID0gJGk7CiAgICAgICAgICAgICAgICAkcmFuZF9vcl9saXN0WyRkZXB0aF0gICAgICAgICAgICAgICAgICA9IFtdOwogICAgICAgICAgICAgICAgJHJmb3Jfc2VtaWNvbG9uX2xpc3RbJGRlcHRoXSAgICAgICAgICAgPSBbXTsKICAgICAgICAgICAgICAgICRpX2VxdWFsc1skZGVwdGhdICAgICAgICAgICAgICAgICAgICAgID0gLTE7CiAgICAgICAgICAgICAgICAkd2FudF9jb21tYV9icmVha1skZGVwdGhdICAgICAgICAgICAgICA9IDA7CiAgICAgICAgICAgICAgICAkY29udGFpbmVyX3R5cGVbJGRlcHRoXSA9CgogICAgICAgICAgICAgICAgICAjICAgICAgayA9PiAmJiB8fCA/IDogLgogICAgICAgICAgICAgICAgICAkaXNfY29udGFpbmVyX2xhYmVsX3R5cGV7JGxhc3Rfbm9uYmxhbmtfdHlwZX0KICAgICAgICAgICAgICAgICAgPyAkbGFzdF9ub25ibGFua190b2tlbgogICAgICAgICAgICAgICAgICA6ICIiOwogICAgICAgICAgICAgICAgJGhhc19vbGRfbG9naWNhbF9icmVha3BvaW50c1skZGVwdGhdID0gMDsKCiAgICAgICAgICAgICAgICAjIGlmIGxpbmUgZW5kcyBoZXJlIHRoZW4gc2lnbmFsIGNsb3NpbmcgdG9rZW4gdG8gYnJlYWsKICAgICAgICAgICAgICAgIGlmICggJG5leHRfbm9uYmxhbmtfdHlwZSBlcSAnYicgfHwgJG5leHRfbm9uYmxhbmtfdHlwZSBlcSAnIycgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRzZWxmLT5zZXRfY2xvc2luZ19icmVha3BvaW50KCRpKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIE5vdCBhbGwgbGlzdHMgb2YgdmFsdWVzIHNob3VsZCBiZSB2ZXJ0aWNhbGx5IGFsaWduZWQuLgogICAgICAgICAgICAgICAgJGRvbnRfYWxpZ25bJGRlcHRoXSA9CgogICAgICAgICAgICAgICAgICAjIGNvZGUgQkxPQ0tTIGFyZSBoYW5kbGVkIGF0IGEgaGlnaGVyIGxldmVsCiAgICAgICAgICAgICAgICAgICggJGJsb2NrX3R5cGUgbmUgIiIgKQoKICAgICAgICAgICAgICAgICAgIyBjZXJ0YWluIHBhcmVuIGxpc3RzCiAgICAgICAgICAgICAgICAgIHx8ICggJHR5cGUgZXEgJygnICkgJiYgKAoKICAgICAgICAgICAgICAgICAgICAjIGl0IGRvZXMgbm90IHVzdWFsbHkgbG9vayBnb29kIHRvIGFsaWduIGEgbGlzdCBvZgogICAgICAgICAgICAgICAgICAgICMgaWRlbnRpZmllcnMgaW4gYSBwYXJhbWV0ZXIgbGlzdCwgYXMgaW46CiAgICAgICAgICAgICAgICAgICAgIyAgICBteSgkdmFyMSwgJHZhcjIsIC4uLikKICAgICAgICAgICAgICAgICAgICAjIChUaGlzIHRlc3Qgc2hvdWxkIHByb2JhYmx5IGJlIHJlZmluZWQsIGZvciBub3cgSSdtIGp1c3QKICAgICAgICAgICAgICAgICAgICAjIHRlc3RpbmcgZm9yIGFueSBrZXl3b3JkKQogICAgICAgICAgICAgICAgICAgICggJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAnaycgKQoKICAgICAgICAgICAgICAgICAgICAjIGEgdHJhaWxpbmcgJygnIHVzdWFsbHkgaW5kaWNhdGVzIGEgbm9uLWxpc3QKICAgICAgICAgICAgICAgICAgICB8fCAoICRuZXh0X25vbmJsYW5rX3R5cGUgZXEgJygnICkKICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHBhdGNoIHRvIG91dGRlbnQgb3BlbmluZyBicmFjZSBvZiBsb25nIGlmL2Zvci8uLgogICAgICAgICAgICAgICAgIyBzdGF0ZW1lbnRzIChsaWtlIHRoaXMgb25lKS4gIFNlZSBzaW1pbGFyIGNvZGluZyBpbgogICAgICAgICAgICAgICAgIyBzZXRfY29udGludWF0aW9uIGJyZWFrcy4gIFdlIGhhdmUgYWxzbyBjYXRjaCBpdCBoZXJlIGZvcgogICAgICAgICAgICAgICAgIyBzaG9ydCBsaW5lIGZyYWdtZW50cyB3aGljaCBvdGhlcndpc2Ugd2lsbCBub3QgZ28gdGhyb3VnaAogICAgICAgICAgICAgICAgIyBzZXRfY29udGludWF0aW9uX2JyZWFrcy4KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkYmxvY2tfdHlwZQoKICAgICAgICAgICAgICAgICAgICAjIGlmIHdlIGhhdmUgdGhlICcpJyBidXQgbm90IGl0cyAnKCcgaW4gdGhpcyBiYXRjaC4uCiAgICAgICAgICAgICAgICAgICAgJiYgKCAkbGFzdF9ub25ibGFua190b2tlbiBlcSAnKScgKQogICAgICAgICAgICAgICAgICAgICYmICRtYXRlX2luZGV4X3RvX2dvWyRpX2xhc3Rfbm9uYmxhbmtfdG9rZW5dIDwgMAoKICAgICAgICAgICAgICAgICAgICAjIGFuZCB1c2VyIHdhbnRzIGJyYWNlIHRvIGxlZnQKICAgICAgICAgICAgICAgICAgICAmJiAhJHJPcHRzLT57J29wZW5pbmctYnJhY2UtYWx3YXlzLW9uLXJpZ2h0J30KCiAgICAgICAgICAgICAgICAgICAgJiYgKCAkdHlwZSBlcSAneycgKSAgICAgIyBzaG91bGQgYmUgdHJ1ZQogICAgICAgICAgICAgICAgICAgICYmICggJHRva2VuIGVxICd7JyApICAgICMgc2hvdWxkIGJlIHRydWUKICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRzZWxmLT5zZXRfZm9yY2VkX2JyZWFrcG9pbnQoICRpIC0gMSApOwogICAgICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAkYmxvY2tfdHlwZSAmJiAoIC4uLikpCiAgICAgICAgICAgIH0gIyMgZW5kIGlmICggJGRlcHRoID4gJGN1cnJlbnRfZGVwdGgpCgogICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICMgSGFuZGxlIERlY3JlYXNpbmcgRGVwdGguLgogICAgICAgICAgICAjCiAgICAgICAgICAgICMgZmluaXNoIG9mZiBhbnkgb2xkIGxpc3Qgd2hlbiBkZXB0aCBkZWNyZWFzZXMKICAgICAgICAgICAgIyB0b2tlbiAkaSBpcyBhICcpJywnfScsIG9yICddJwogICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgIGVsc2lmICggJGRlcHRoIDwgJGN1cnJlbnRfZGVwdGggKSB7CgogICAgICAgICAgICAgICAgY2hlY2tfZm9yX25ld19taW5pbXVtX2RlcHRoKCRkZXB0aCk7CgogICAgICAgICAgICAgICAgIyBmb3JjZSBhbGwgb3V0ZXIgbG9naWNhbCBjb250YWluZXJzIHRvIGJyZWFrIGFmdGVyIHdlIHNlZSBvbgogICAgICAgICAgICAgICAgIyBvbGQgYnJlYWtwb2ludAogICAgICAgICAgICAgICAgJGhhc19vbGRfbG9naWNhbF9icmVha3BvaW50c1skZGVwdGhdIHx8PQogICAgICAgICAgICAgICAgICAkaGFzX29sZF9sb2dpY2FsX2JyZWFrcG9pbnRzWyRjdXJyZW50X2RlcHRoXTsKCiAgICAgICAgICAgICAgICAjIFBhdGNoIHRvIGJyZWFrIGJldHdlZW4gJykgeycgaWYgdGhlIHBhcmVuIGxpc3QgaXMgYnJva2VuLgogICAgICAgICAgICAgICAgIyBUaGVyZSBpcyBzaW1pbGFyIGxvZ2ljIGluIHNldF9jb250aW51YXRpb25fYnJlYWtzIGZvcgogICAgICAgICAgICAgICAgIyBub24tYnJva2VuIGxpc3RzLgogICAgICAgICAgICAgICAgaWYgKCAgICR0b2tlbiBlcSAnKScKICAgICAgICAgICAgICAgICAgICAmJiAkbmV4dF9ub25ibGFua19ibG9ja190eXBlCiAgICAgICAgICAgICAgICAgICAgJiYgJGludGVycnVwdGVkX2xpc3RbJGN1cnJlbnRfZGVwdGhdCiAgICAgICAgICAgICAgICAgICAgJiYgJG5leHRfbm9uYmxhbmtfdHlwZSBlcSAneycKICAgICAgICAgICAgICAgICAgICAmJiAhJHJPcHRzLT57J29wZW5pbmctYnJhY2UtYWx3YXlzLW9uLXJpZ2h0J30gKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRzZWxmLT5zZXRfZm9yY2VkX2JyZWFrcG9pbnQoJGkpOwogICAgICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAkdG9rZW4gZXEgJyknICYmIC4uLgoKI3ByaW50ICJMSVNUWSBzZWVzOiBpPSRpIHR5cGU9JHR5cGUgIHRvaz0kdG9rZW4gIGJsb2NrPSRibG9ja190eXBlIGRlcHRoPSRkZXB0aCBuZXh0PSRuZXh0X25vbmJsYW5rX3R5cGUgbmV4dF9ibG9jaz0kbmV4dF9ub25ibGFua19ibG9ja190eXBlIGludGVyPSRpbnRlcnJ1cHRlZF9saXN0WyRjdXJyZW50X2RlcHRoXVxuIjsKCiAgICAgICAgICAgICAgICAjIHNldCBicmVha3MgYXQgY29tbWFzIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICAgICAgbXkgKCAkYnBfY291bnQsICRkb19ub3RfYnJlYWtfYXBhcnQgKSA9CiAgICAgICAgICAgICAgICAgICRzZWxmLT5zZXRfY29tbWFfYnJlYWtwb2ludHMoJGN1cnJlbnRfZGVwdGgpOwoKICAgICAgICAgICAgICAgIG15ICRpX29wZW5pbmcgPSAkb3BlbmluZ19zdHJ1Y3R1cmVfaW5kZXhfc3RhY2tbJGN1cnJlbnRfZGVwdGhdOwogICAgICAgICAgICAgICAgbXkgJHNhd19vcGVuaW5nX3N0cnVjdHVyZSA9ICggJGlfb3BlbmluZyA+PSAwICk7CgogICAgICAgICAgICAgICAgIyB0aGlzIHRlcm0gaXMgbG9uZyBpZiB3ZSBoYWQgdG8gYnJlYWsgYXQgaW50ZXJpb3IgY29tbWFzLi4KICAgICAgICAgICAgICAgIG15ICRpc19sb25nX3Rlcm0gPSAkYnBfY291bnQgPiAwOwoKICAgICAgICAgICAgICAgICMgSWYgdGhpcyBpcyBhIHNob3J0IGNvbnRhaW5lciB3aXRoIG9uZSBvciBtb3JlIGNvbW1hIGFycm93cywKICAgICAgICAgICAgICAgICMgdGhlbiB3ZSB3aWxsIG1hcmsgaXQgYXMgYSBsb25nIHRlcm0gdG8gb3BlbiBpdCBpZiByZXF1ZXN0ZWQuCiAgICAgICAgICAgICAgICAjICRyT3B0c19jb21tYV9hcnJvd19icmVha3BvaW50cyA9CiAgICAgICAgICAgICAgICAjICAgIDAgLSBvcGVuIG9ubHkgaWYgY29tbWEgcHJlY2VkZXMgY2xvc2luZyBicmFjZQogICAgICAgICAgICAgICAgIyAgICAxIC0gc3RhYmxlOiBleGNlcHQgZm9yIG9uZSBsaW5lIGJsb2NrcwogICAgICAgICAgICAgICAgIyAgICAyIC0gdHJ5IHRvIGZvcm0gMSBsaW5lIGJsb2NrcwogICAgICAgICAgICAgICAgIyAgICAzIC0gaWdub3JlID0+CiAgICAgICAgICAgICAgICAjICAgIDQgLSBhbHdheXMgb3BlbiB1cCBpZiB2dD0wCiAgICAgICAgICAgICAgICAjICAgIDUgLSBzdGFibGU6IGV2ZW4gZm9yIG9uZSBsaW5lIGJsb2NrcyBpZiB2dD0wCiAgICAgICAgICAgICAgICBpZiAoICAhJGlzX2xvbmdfdGVybQogICAgICAgICAgICAgICAgICAgICYmICRzYXdfb3BlbmluZ19zdHJ1Y3R1cmUKICAgICAgICAgICAgICAgICAgICAmJiAkaXNfb3BlbmluZ190b2tlbnsgJHRva2Vuc190b19nb1skaV9vcGVuaW5nXSB9CiAgICAgICAgICAgICAgICAgICAgJiYgJGluZGV4X2JlZm9yZV9hcnJvd1sgJGRlcHRoICsgMSBdID4gMAogICAgICAgICAgICAgICAgICAgICYmICEkb3BlbmluZ192ZXJ0aWNhbF90aWdodG5lc3N7ICR0b2tlbnNfdG9fZ29bJGlfb3BlbmluZ10gfQogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJGlzX2xvbmdfdGVybSA9ICRyT3B0c19jb21tYV9hcnJvd19icmVha3BvaW50cyA9PSA0CiAgICAgICAgICAgICAgICAgICAgICB8fCAoICRyT3B0c19jb21tYV9hcnJvd19icmVha3BvaW50cyA9PSAwCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRsYXN0X25vbmJsYW5rX3Rva2VuIGVxICcsJyApCiAgICAgICAgICAgICAgICAgICAgICB8fCAoICRyT3B0c19jb21tYV9hcnJvd19icmVha3BvaW50cyA9PSA1CiAgICAgICAgICAgICAgICAgICAgICAgICYmICRvbGRfYnJlYWtwb2ludF90b19nb1skaV9vcGVuaW5nXSApOwogICAgICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAhJGlzX2xvbmdfdGVybSAmJi4uLikKCiAgICAgICAgICAgICAgICAjIG1hcmsgdGVybSBhcyBsb25nIGlmIHRoZSBsZW5ndGggYmV0d2VlbiBvcGVuaW5nIGFuZCBjbG9zaW5nCiAgICAgICAgICAgICAgICAjIHBhcmVucyBleGNlZWRzIGFsbG93ZWQgbGluZSBsZW5ndGgKICAgICAgICAgICAgICAgIGlmICggISRpc19sb25nX3Rlcm0gJiYgJHNhd19vcGVuaW5nX3N0cnVjdHVyZSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkaV9vcGVuaW5nX21pbnVzID0KICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5maW5kX3Rva2VuX3N0YXJ0aW5nX2xpc3QoJGlfb3BlbmluZyk7CgogICAgICAgICAgICAgICAgICAgICMgTm90ZTogd2UgaGF2ZSB0byBhbGxvdyBmb3Igb25lIGV4dHJhIHNwYWNlIGFmdGVyIGEKICAgICAgICAgICAgICAgICAgICAjIGNsb3NpbmcgdG9rZW4gc28gdGhhdCB3ZSBkbyBub3Qgc3RyYW5kIGEgY29tbWEgb3IKICAgICAgICAgICAgICAgICAgICAjIHNlbWljb2xvbiwgaGVuY2UgdGhlICc+PScgaGVyZSAob25lbGluZS50KQogICAgICAgICAgICAgICAgICAgICRpc19sb25nX3Rlcm0gPQogICAgICAgICAgICAgICAgICAgICAgJHNlbGYtPmV4Y2Vzc19saW5lX2xlbmd0aCggJGlfb3BlbmluZ19taW51cywgJGkgKSA+PSAwOwogICAgICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAhJGlzX2xvbmdfdGVybSAmJi4uLikKCiAgICAgICAgICAgICAgICAjIFdlJ3ZlIHNldCBicmVha3MgYWZ0ZXIgYWxsIGNvbW1hLWFycm93cy4gIE5vdyB3ZSBoYXZlIHRvCiAgICAgICAgICAgICAgICAjIHVuZG8gdGhlbSBpZiB0aGlzIGNhbiBiZSBhIG9uZS1saW5lIGJsb2NrCiAgICAgICAgICAgICAgICAjICh0aGUgb25seSBicmVha3BvaW50cyBzZXQgd2lsbCBiZSBkdWUgdG8gY29tbWEtYXJyb3dzKQogICAgICAgICAgICAgICAgaWYgKAoKICAgICAgICAgICAgICAgICAgICAjIHVzZXIgZG9lc24ndCByZXF1aXJlIGJyZWFraW5nIGFmdGVyIGFsbCBjb21tYS1hcnJvd3MKICAgICAgICAgICAgICAgICAgICAoICRyT3B0c19jb21tYV9hcnJvd19icmVha3BvaW50cyAhPSAwICkKICAgICAgICAgICAgICAgICAgICAmJiAoICRyT3B0c19jb21tYV9hcnJvd19icmVha3BvaW50cyAhPSA0ICkKCiAgICAgICAgICAgICAgICAgICAgIyBhbmQgaWYgdGhlIG9wZW5pbmcgc3RydWN0dXJlIGlzIGluIHRoaXMgYmF0Y2gKICAgICAgICAgICAgICAgICAgICAmJiAkc2F3X29wZW5pbmdfc3RydWN0dXJlCgogICAgICAgICAgICAgICAgICAgICMgYW5kIGVpdGhlciBvbiB0aGUgc2FtZSBvbGQgbGluZQogICAgICAgICAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICAgICAgICAgJG9sZF9icmVha3BvaW50X2NvdW50X3N0YWNrWyRjdXJyZW50X2RlcHRoXSA9PQogICAgICAgICAgICAgICAgICAgICAgICAkbGFzdF9vbGRfYnJlYWtwb2ludF9jb3VudAoKICAgICAgICAgICAgICAgICAgICAgICAgIyBvciB1c2VyIHdhbnRzIHRvIGZvcm0gbG9uZyBibG9ja3Mgd2l0aCBhcnJvd3MKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHJPcHRzX2NvbW1hX2Fycm93X2JyZWFrcG9pbnRzID09IDIKICAgICAgICAgICAgICAgICAgICApCgogICAgICAgICAgICAgICAgICAjIGFuZCB3ZSBtYWRlIHNvbWUgYnJlYWtwb2ludHMgYmV0d2VlbiB0aGUgb3BlbmluZyBhbmQgY2xvc2luZwogICAgICAgICAgICAgICAgICAgICYmICggJGJyZWFrcG9pbnRfdW5kb19zdGFja1skY3VycmVudF9kZXB0aF0gPAogICAgICAgICAgICAgICAgICAgICAgICBnZXRfZm9yY2VkX2JyZWFrcG9pbnRfdW5kb19jb3VudCgpICkKCiAgICAgICAgICAgICAgICAgICAgIyBhbmQgdGhpcyBibG9jayBpcyBzaG9ydCBlbm91Z2ggdG8gZml0IG9uIG9uZSBsaW5lCiAgICAgICAgICAgICAgICAgICAgIyBOb3RlOiB1c2UgPCBiZWNhdXNlIG5lZWQgMSBtb3JlIHNwYWNlIGZvciBwb3NzaWJsZSBjb21tYQogICAgICAgICAgICAgICAgICAgICYmICEkaXNfbG9uZ190ZXJtCgogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJHNlbGYtPnVuZG9fZm9yY2VkX2JyZWFrcG9pbnRfc3RhY2soCiAgICAgICAgICAgICAgICAgICAgICAgICRicmVha3BvaW50X3VuZG9fc3RhY2tbJGN1cnJlbnRfZGVwdGhdICk7CiAgICAgICAgICAgICAgICB9ICMjIGVuZCBpZiAoICggJHJPcHRzX2NvbW1hX2Fycm93X2JyZWFrcG9pbnRzLi4uKSkKCiAgICAgICAgICAgICAgICAjIG5vdyBzZWUgaWYgd2UgaGF2ZSBhbnkgY29tbWEgYnJlYWtwb2ludHMgbGVmdAogICAgICAgICAgICAgICAgbXkgJGhhc19jb21tYV9icmVha3BvaW50cyA9CiAgICAgICAgICAgICAgICAgICggJGJyZWFrcG9pbnRfc3RhY2tbJGN1cnJlbnRfZGVwdGhdICE9CiAgICAgICAgICAgICAgICAgICAgICBnZXRfZm9yY2VkX2JyZWFrcG9pbnRfY291bnQoKSApOwoKICAgICAgICAgICAgICAgICMgdXBkYXRlIGJyb2tlbi1zdWJsaXN0IGZsYWcgb2YgdGhlIG91dGVyIGNvbnRhaW5lcgogICAgICAgICAgICAgICAgJGhhc19icm9rZW5fc3VibGlzdFskZGVwdGhdID0KICAgICAgICAgICAgICAgICAgICAgJGhhc19icm9rZW5fc3VibGlzdFskZGVwdGhdCiAgICAgICAgICAgICAgICAgIHx8ICRoYXNfYnJva2VuX3N1Ymxpc3RbJGN1cnJlbnRfZGVwdGhdCiAgICAgICAgICAgICAgICAgIHx8ICRpc19sb25nX3Rlcm0KICAgICAgICAgICAgICAgICAgfHwgJGhhc19jb21tYV9icmVha3BvaW50czsKCiMgSGF2aW5nIGNvbWUgdG8gdGhlIGNsb3NpbmcgJyknLCAnfScsIG9yICddJywgbm93IHdlIGhhdmUgdG8gZGVjaWRlIGlmIHdlCiMgc2hvdWxkICdvcGVuIHVwJyB0aGUgc3RydWN0dXJlIGJ5IHBsYWNpbmcgYnJlYWtzIGF0IHRoZSBvcGVuaW5nIGFuZAojIGNsb3NpbmcgY29udGFpbmVycy4gIFRoaXMgaXMgYSB0cmlja3kgZGVjaXNpb24uICBIZXJlIGFyZSBzb21lIG9mIHRoZQojIGJhc2ljIGNvbnNpZGVyYXRpb25zOgojCiMgLUlmIHRoaXMgaXMgYSBCTE9DSyBjb250YWluZXIsIHRoZW4gYW55IGJyZWFrcG9pbnRzIHdpbGwgaGF2ZSBhbHJlYWR5CiMgYmVlbiBzZXQgKGFuZCBhY2NvcmRpbmcgdG8gdXNlciBwcmVmZXJlbmNlcyksIHNvIHdlIG5lZWQgZG8gbm90aGluZyBoZXJlLgojCiMgLUlmIHdlIGhhdmUgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBmb3Igd2hpY2ggd2UgY2FuIGFsaWduIHRoZSBsaXN0IGl0ZW1zLAojIHRoZW4gd2UgbmVlZCB0byBkbyBzbyBiZWNhdXNlIG90aGVyd2lzZSB0aGUgdmVydGljYWwgYWxpZ25lciBjYW5ub3QKIyBjdXJyZW50bHkgZG8gdGhlIGFsaWdubWVudC4KIwojIC1JZiB0aGlzIGNvbnRhaW5lciBkb2VzIGl0c2VsZiBjb250YWluIGEgY29udGFpbmVyIHdoaWNoIGhhcyBiZWVuIGJyb2tlbgojIG9wZW4sIHRoZW4gaXQgc2hvdWxkIGJlIGJyb2tlbiBvcGVuIHRvIHByb3Blcmx5IHNob3cgdGhlIHN0cnVjdHVyZS4KIwojIC1JZiB0aGVyZSBpcyBub3RoaW5nIHRvIGFsaWduLCBhbmQgbm8gb3RoZXIgcmVhc29uIHRvIGJyZWFrIGFwYXJ0LAojIHRoZW4gZG8gbm90IGRvIGl0LgojCiMgV2Ugd2lsbCBub3QgYnJlYWsgb3BlbiB0aGUgcGFyZW5zIG9mIGEgbG9uZyBidXQgJ3NpbXBsZScgbG9naWNhbCBleHByZXNzaW9uLgojIEZvciBleGFtcGxlOgojCiMgVGhpcyBpcyBhbiBleGFtcGxlIG9mIGEgc2ltcGxlIGxvZ2ljYWwgZXhwcmVzc2lvbiBhbmQgaXRzIGZvcm1hdHRpbmc6CiMKIyAgICAgaWYgKCAkYmlnd2FzdGVvZnNwYWNlMSAmJiAkYmlnd2FzdGVvZnNwYWNlMgojICAgICAgICAgfHwgJGJpZ3dhc3Rlb2ZzcGFjZTMgJiYgJGJpZ3dhc3Rlb2ZzcGFjZTQgKQojCiMgTW9zdCBwZW9wbGUgd291bGQgcHJlZmVyIHRoaXMgdGhhbiB0aGUgJ3NwYWNleScgdmVyc2lvbjoKIwojICAgICBpZiAoCiMgICAgICAgICAkYmlnd2FzdGVvZnNwYWNlMSAmJiAkYmlnd2FzdGVvZnNwYWNlMgojICAgICAgICAgfHwgJGJpZ3dhc3Rlb2ZzcGFjZTMgJiYgJGJpZ3dhc3Rlb2ZzcGFjZTQKIyAgICAgKQojCiMgVG8gaWxsdXN0cmF0ZSB0aGUgcnVsZXMgZm9yIGJyZWFraW5nIGxvZ2ljYWwgZXhwcmVzc2lvbnMsIGNvbnNpZGVyOgojCiMgICAgICAgICAgICAgRlVMTFkgREVOU0U6CiMgICAgICAgICAgICAgaWYgKCAkb3B0X2V4Y2wKIyAgICAgICAgICAgICAgICAgYW5kICggZXhpc3RzICRpZHNfZXhjbF91Y3skaWRfdWN9CiMgICAgICAgICAgICAgICAgICAgICBvciBncmVwICRpZF91YyA9fiAvJF8vLCBAaWRzX2V4Y2xfdWMgKSkKIwojIFRoaXMgaXMgb24gdGhlIHZlcmdlIG9mIGJlaW5nIGRpZmZpY3VsdCB0byByZWFkLiAgVGhlIGN1cnJlbnQgZGVmYXVsdCBpcyB0bwojIG9wZW4gaXQgdXAgbGlrZSB0aGlzOgojCiMgICAgICAgICAgICAgREVGQVVMVDoKIyAgICAgICAgICAgICBpZiAoCiMgICAgICAgICAgICAgICAgICRvcHRfZXhjbAojICAgICAgICAgICAgICAgICBhbmQgKCBleGlzdHMgJGlkc19leGNsX3VjeyRpZF91Y30KIyAgICAgICAgICAgICAgICAgICAgIG9yIGdyZXAgJGlkX3VjID1+IC8kXy8sIEBpZHNfZXhjbF91YyApCiMgICAgICAgICAgICAgICApCiMKIyBUaGlzIGlzIGEgY29tcHJvbWlzZSB3aGljaCB0cmllcyB0byBhdm9pZCBiZWluZyB0b28gZGVuc2UgYW5kIHRvIHNwYWNleS4KIyBBIG1vcmUgc3BhY2VkIHZlcnNpb24gd291bGQgYmU6CiMKIyAgICAgICAgICAgICBTUEFDRVk6CiMgICAgICAgICAgICAgaWYgKAojICAgICAgICAgICAgICAgICAkb3B0X2V4Y2wKIyAgICAgICAgICAgICAgICAgYW5kICgKIyAgICAgICAgICAgICAgICAgICAgIGV4aXN0cyAkaWRzX2V4Y2xfdWN7JGlkX3VjfQojICAgICAgICAgICAgICAgICAgICAgb3IgZ3JlcCAkaWRfdWMgPX4gLyRfLywgQGlkc19leGNsX3VjCiMgICAgICAgICAgICAgICAgICkKIyAgICAgICAgICAgICAgICkKIwojIFNvbWUgcGVvcGxlIG1pZ2h0IHByZWZlciB0aGUgc3BhY2V5IHZlcnNpb24gLS0gYW4gb3B0aW9uIGNvdWxkIGJlIGFkZGVkLiAgVGhlCiMgaW5uZXJtb3N0IGV4cHJlc3Npb24gY29udGFpbnMgYSBsb25nIGJsb2NrICcoIGV4aXN0cyAkaWRzXy4uLiAgJyknLgojCiMgSGVyZSBpcyBob3cgdGhlIGxvZ2ljIGdvZXM6IFdlIHdpbGwgZm9yY2UgYSBicmVhayBhdCB0aGUgJ29yJyB0aGF0IHRoZQojIGlubmVybW9zdCBleHByZXNzaW9uIGNvbnRhaW5zLCBidXQgd2Ugd2lsbCBub3QgYnJlYWsgYXBhcnQgaXRzIG9wZW5pbmcgYW5kCiMgY2xvc2luZyBjb250YWluZXJzIGJlY2F1c2UgKDEpIGl0IGNvbnRhaW5zIG5vIG11bHRpLWxpbmUgc3ViLWNvbnRhaW5lcnMgaXRzZWxmLAojIGFuZCAoMikgdGhlcmUgaXMgbm8gYWxpZ25tZW50IHRvIGJlIGdhaW5lZCBieSBicmVha2luZyBpdCBvcGVuIGxpa2UgdGhpcwojCiMgICAgICAgICAgICAgYW5kICgKIyAgICAgICAgICAgICAgICAgZXhpc3RzICRpZHNfZXhjbF91Y3skaWRfdWN9CiMgICAgICAgICAgICAgICAgIG9yIGdyZXAgJGlkX3VjID1+IC8kXy8sIEBpZHNfZXhjbF91YwojICAgICAgICAgICAgICkKIwojIChhbHRob3VnaCB0aGlzIGxvb2tzIHBlcmZlY3RseSBvayBhbmQgbWlnaHQgYmUgZ29vZCBmb3IgbG9uZyBleHByZXNzaW9ucykuICBUaGUKIyBvdXRlciAnaWYnIGNvbnRhaW5lciwgdGhvdWdoLCBjb250YWlucyBhIGJyb2tlbiBzdWItY29udGFpbmVyLCBzbyBpdCB3aWxsIGJlCiMgYnJva2VuIG9wZW4gdG8gYXZvaWQgdG9vIG11Y2ggZGVuc2l0eS4gIEFsc28sIHNpbmNlIGl0IGNvbnRhaW5zIG5vICdvcidzLCB0aGVyZQojIHdpbGwgYmUgYSBmb3JjZWQgYnJlYWsgYXQgaXRzICdhbmQnLgoKICAgICAgICAgICAgICAgICMgc2V0IHNvbWUgZmxhZ3MgdGVsbGluZyBzb21ldGhpbmcgYWJvdXQgdGhpcyBjb250YWluZXIuLgogICAgICAgICAgICAgICAgbXkgJGlzX3NpbXBsZV9sb2dpY2FsX2V4cHJlc3Npb24gPSAwOwogICAgICAgICAgICAgICAgaWYgKCAgICRpdGVtX2NvdW50X3N0YWNrWyRjdXJyZW50X2RlcHRoXSA9PSAwCiAgICAgICAgICAgICAgICAgICAgJiYgJHNhd19vcGVuaW5nX3N0cnVjdHVyZQogICAgICAgICAgICAgICAgICAgICYmICR0b2tlbnNfdG9fZ29bJGlfb3BlbmluZ10gZXEgJygnCiAgICAgICAgICAgICAgICAgICAgJiYgJGlzX2xvZ2ljYWxfY29udGFpbmVyeyAkY29udGFpbmVyX3R5cGVbJGN1cnJlbnRfZGVwdGhdIH0KICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAjIFRoaXMgc2VlbXMgdG8gYmUgYSBzaW1wbGUgbG9naWNhbCBleHByZXNzaW9uIHdpdGgKICAgICAgICAgICAgICAgICAgICAjIG5vIGV4aXN0aW5nIGJyZWFrcG9pbnRzLiAgU2V0IGEgZmxhZyB0byBwcmV2ZW50CiAgICAgICAgICAgICAgICAgICAgIyBvcGVuaW5nIGl0IHVwLgogICAgICAgICAgICAgICAgICAgIGlmICggISRoYXNfY29tbWFfYnJlYWtwb2ludHMgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpc19zaW1wbGVfbG9naWNhbF9leHByZXNzaW9uID0gMTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgVGhpcyBzZWVtcyB0byBiZSBhIHNpbXBsZSBsb2dpY2FsIGV4cHJlc3Npb24gd2l0aAogICAgICAgICAgICAgICAgICAgICMgYnJlYWtwb2ludHMgKGJyb2tlbiBzdWJsaXN0cywgZm9yIGV4YW1wbGUpLiAgQnJlYWsKICAgICAgICAgICAgICAgICAgICAjIGF0IGFsbCAnb3IncyBhbmQgJ3x8J3MuCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5zZXRfbG9naWNhbF9icmVha3BvaW50cygkY3VycmVudF9kZXB0aCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAkaXRlbV9jb3VudF9zdGFjay4uLikKCiAgICAgICAgICAgICAgICBpZiAoICRpc19sb25nX3Rlcm0KICAgICAgICAgICAgICAgICAgICAmJiBAeyAkcmZvcl9zZW1pY29sb25fbGlzdFskY3VycmVudF9kZXB0aF0gfSApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJHNlbGYtPnNldF9mb3Jfc2VtaWNvbG9uX2JyZWFrcG9pbnRzKCRjdXJyZW50X2RlcHRoKTsKCiAgICAgICAgICAgICAgICAgICAgIyBvcGVuIHVwIGEgbG9uZyAnZm9yJyBvciAnZm9yZWFjaCcgY29udGFpbmVyIHRvIGFsbG93CiAgICAgICAgICAgICAgICAgICAgIyBsZWFkaW5nIHRlcm0gYWxpZ25tZW50IHVubGVzcyAtbHAgaXMgdXNlZC4KICAgICAgICAgICAgICAgICAgICAkaGFzX2NvbW1hX2JyZWFrcG9pbnRzID0gMQogICAgICAgICAgICAgICAgICAgICAgdW5sZXNzICRyT3B0c19saW5lX3VwX3BhcmVudGhlc2VzOwogICAgICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAkaXNfbG9uZ190ZXJtICYmIC4uLikKCiAgICAgICAgICAgICAgICBpZiAoCgogICAgICAgICAgICAgICAgICAgICMgYnJlYWtzIGZvciBjb2RlIEJMT0NLUyBhcmUgaGFuZGxlZCBhdCBhIGhpZ2hlciBsZXZlbAogICAgICAgICAgICAgICAgICAgICEkYmxvY2tfdHlwZQoKICAgICAgICAgICAgICAgICAgICAjIHdlIGRvIG5vdCBuZWVkIHRvIGJyZWFrIGF0IHRoZSB0b3AgbGV2ZWwgb2YgYW4gJ2lmJwogICAgICAgICAgICAgICAgICAgICMgdHlwZSBleHByZXNzaW9uCiAgICAgICAgICAgICAgICAgICAgJiYgISRpc19zaW1wbGVfbG9naWNhbF9leHByZXNzaW9uCgogICAgICAgICAgICAgICAgICAgICMjIG1vZGlmaWNhdGlvbiB0byBrZWVwICc6ICgnIGNvbnRhaW5lcnMgdmVydGljYWxseSB0aWdodDsKICAgICAgICAgICAgICAgICAgICAjIyBidXQgcHJvYmFibHkgYmV0dGVyIHRvIGxldCB1c2VyIHNldCAtdnQ9MSB0byBhdm9pZAogICAgICAgICAgICAgICAgICAgICMjIGluY29uc2lzdGVuY3kgd2l0aCBvdGhlciBwYXJlbiB0eXBlcwogICAgICAgICAgICAgICAgICAgICMjICYmICgkY29udGFpbmVyX3R5cGVbJGN1cnJlbnRfZGVwdGhdIG5lICc6JykKCiAgICAgICAgICAgICAgICAgICAgIyBvdGhlcndpc2UsIHdlIHJlcXVpcmUgb25lIG9mIHRoZXNlIHJlYXNvbnMgZm9yIGJyZWFraW5nOgogICAgICAgICAgICAgICAgICAgICYmICgKCiAgICAgICAgICAgICAgICAgICAgICAgICMgLSB0aGlzIHRlcm0gaGFzIGZvcmNlZCBsaW5lIGJyZWFrcwogICAgICAgICAgICAgICAgICAgICAgICAkaGFzX2NvbW1hX2JyZWFrcG9pbnRzCgogICAgICAgICAgICAgICAgICAgICAgICMgLSB0aGUgb3BlbmluZyBjb250YWluZXIgaXMgc2VwYXJhdGVkIGZyb20gdGhpcyBiYXRjaAogICAgICAgICAgICAgICAgICAgICAgICMgICBmb3Igc29tZSByZWFzb24gKGNvbW1lbnQsIGJsYW5rIGxpbmUsIGNvZGUgYmxvY2spCiAgICAgICAgICAgICAgICAgICAgICAgIyAtIHRoaXMgaXMgYSBub24tcGFyZW4gY29udGFpbmVyIHNwYW5uaW5nIG11bHRpcGxlIGxpbmVzCiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICEkc2F3X29wZW5pbmdfc3RydWN0dXJlCgogICAgICAgICAgICAgICAgICAgICAgICAjIC0gdGhpcyBpcyBhIGxvbmcgYmxvY2sgY29udGFpbmVkIGluIGFub3RoZXIgYnJlYWthYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICMgICBjb250YWluZXIKICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCAgICRpc19sb25nX3Rlcm0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICRjb250YWluZXJfZW52aXJvbm1lbnRfdG9fZ29bJGlfb3BlbmluZ10gbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCTE9DSycgKQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAjIEZvciAtbHAgb3B0aW9uLCB3ZSBtdXN0IHB1dCBhIGJyZWFrcG9pbnQgYmVmb3JlCiAgICAgICAgICAgICAgICAgICAgIyB0aGUgdG9rZW4gd2hpY2ggaGFzIGJlZW4gaWRlbnRpZmllZCBhcyBzdGFydGluZwogICAgICAgICAgICAgICAgICAgICMgdGhpcyBpbmRlbnRhdGlvbiBsZXZlbC4gIFRoaXMgaXMgbmVjZXNzYXJ5IGZvcgogICAgICAgICAgICAgICAgICAgICMgcHJvcGVyIGFsaWdubWVudC4KICAgICAgICAgICAgICAgICAgICBpZiAoICRyT3B0c19saW5lX3VwX3BhcmVudGhlc2VzICYmICRzYXdfb3BlbmluZ19zdHJ1Y3R1cmUgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGl0ZW0gPSAkbGVhZGluZ19zcGFjZXNfdG9fZ29bICRpX29wZW5pbmcgKyAxIF07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggICAkaV9vcGVuaW5nICsgMSA8ICRtYXhfaW5kZXhfdG9fZ28KICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICR0eXBlc190b19nb1sgJGlfb3BlbmluZyArIDEgXSBlcSAnYicgKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXRlbSA9ICRsZWFkaW5nX3NwYWNlc190b19nb1sgJGlfb3BlbmluZyArIDIgXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQoJGl0ZW0pICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGlfc3RhcnRfMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRLX3N0YXJ0XzIgPSAkaXRlbS0+Z2V0X3N0YXJ0aW5nX2luZGV4X0soKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCgkS19zdGFydF8yKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaV9zdGFydF8yID0gJEtfc3RhcnRfMiAtICRLX3RvX2dvWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQoJGlfc3RhcnRfMikKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3ZSBhcmUgYnJlYWtpbmcgYWZ0ZXIgYW4gb3BlbmluZyBicmFjZSwgcGFyZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzbyBkb24ndCBicmVhayBiZWZvcmUgaXQgdG9vCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGlfc3RhcnRfMiBuZSAkaV9vcGVuaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGlfc3RhcnRfMiA+PSAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGlfc3RhcnRfMiA8PSAkbWF4X2luZGV4X3RvX2dvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBPbmx5IGJyZWFrIGZvciBicmVha3BvaW50cyBhdCB0aGUgc2FtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaW5kZW50YXRpb24gbGV2ZWwgYXMgdGhlIG9wZW5pbmcgcGFyZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkdGVzdDEgPSAkbmVzdGluZ19kZXB0aF90b19nb1skaV9vcGVuaW5nXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkdGVzdDIgPSAkbmVzdGluZ19kZXB0aF90b19nb1skaV9zdGFydF8yXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICR0ZXN0MiA9PSAkdGVzdDEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5zZXRfZm9yY2VkX2JyZWFrcG9pbnQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaV9zdGFydF8yIC0gMSApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gIyMgZW5kIGlmICggZGVmaW5lZCgkaV9zdGFydF8yLi4uKSkKICAgICAgICAgICAgICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCBkZWZpbmVkKCRpdGVtKSApCiAgICAgICAgICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAkck9wdHNfbGluZV91cF9wYXJlbnRoZXNlcy4uLikKCiAgICAgICAgICAgICAgICAgICAgIyBicmVhayBhZnRlciBvcGVuaW5nIHN0cnVjdHVyZS4KICAgICAgICAgICAgICAgICAgICAjIG5vdGU6IGJyZWFrIGJlZm9yZSBjbG9zaW5nIHN0cnVjdHVyZSB3aWxsIGJlIGF1dG9tYXRpYwogICAgICAgICAgICAgICAgICAgIGlmICggJG1pbmltdW1fZGVwdGggPD0gJGN1cnJlbnRfZGVwdGggKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi0+c2V0X2ZvcmNlZF9icmVha3BvaW50KCRpX29wZW5pbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5sZXNzICggJGRvX25vdF9icmVha19hcGFydAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgaXNfdW5icmVha2FibGVfY29udGFpbmVyKCRjdXJyZW50X2RlcHRoKSApOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBicmVhayBhdCAnLCcgb2YgbG93ZXIgZGVwdGggbGV2ZWwgYmVmb3JlIG9wZW5pbmcgdG9rZW4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkbGFzdF9jb21tYV9pbmRleFskZGVwdGhdICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYtPnNldF9mb3JjZWRfYnJlYWtwb2ludCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGFzdF9jb21tYV9pbmRleFskZGVwdGhdICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgYnJlYWsgYXQgJy4nIG9mIGxvd2VyIGRlcHRoIGxldmVsIGJlZm9yZSBvcGVuaW5nIHRva2VuCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGxhc3RfZG90X2luZGV4WyRkZXB0aF0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi0+c2V0X2ZvcmNlZF9icmVha3BvaW50KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsYXN0X2RvdF9pbmRleFskZGVwdGhdICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgYnJlYWsgYmVmb3JlIG9wZW5pbmcgc3RydWN0dXJlIGlmIHByZWNlZGVkIGJ5IGFub3RoZXIKICAgICAgICAgICAgICAgICAgICAgICAgIyBjbG9zaW5nIHN0cnVjdHVyZSBhbmQgYSBjb21tYS4gIFRoaXMgaXMgbm9ybWFsbHkKICAgICAgICAgICAgICAgICAgICAgICAgIyBkb25lIGJ5IHRoZSBwcmV2aW91cyBjbG9zaW5nIGJyYWNlLCBidXQgbm90CiAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgaXQgd2FzIGEgb25lLWxpbmUgYmxvY2suCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGlfb3BlbmluZyA+IDIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkaV9wcmV2ID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAkdHlwZXNfdG9fZ29bICRpX29wZW5pbmcgLSAxIF0gZXEgJ2InICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAkaV9vcGVuaW5nIC0gMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRpX29wZW5pbmcgLSAxOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZXNfdG9fZ29bJGlfcHJldl0gZXEgJywnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAgICR0eXBlc190b19nb1sgJGlfcHJldiAtIDEgXSBlcSAnKScKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHR5cGVzX3RvX2dvWyAkaV9wcmV2IC0gMSBdIGVxICd9JyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi0+c2V0X2ZvcmNlZF9icmVha3BvaW50KCRpX3ByZXYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxzbyBicmVhayBiZWZvcmUgc29tZXRoaW5nIGxpa2UgJzooJyAgb3IgJz8oJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBhcHByb3ByaWF0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZXNfdG9fZ29bJGlfcHJldl0gPX4gL14oW2tcOlw/XXwmJnxcfFx8KSQvICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkdG9rZW5fcHJldiA9ICR0b2tlbnNfdG9fZ29bJGlfcHJldl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkd2FudF9icmVha19iZWZvcmV7JHRva2VuX3ByZXZ9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi0+c2V0X2ZvcmNlZF9icmVha3BvaW50KCRpX3ByZXYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gIyMgZW5kIGVsc2lmICggJHR5cGVzX3RvX2dvWyRpX3ByZXYuLi5dKQogICAgICAgICAgICAgICAgICAgICAgICB9ICMjIGVuZCBpZiAoICRpX29wZW5pbmcgPiAyICkKICAgICAgICAgICAgICAgICAgICB9ICMjIGVuZCBpZiAoICRtaW5pbXVtX2RlcHRoIDw9Li4uKQoKICAgICAgICAgICAgICAgICAgICAjIGJyZWFrIGFmdGVyIGNvbW1hIGZvbGxvd2luZyBjbG9zaW5nIHN0cnVjdHVyZQogICAgICAgICAgICAgICAgICAgIGlmICggJG5leHRfdHlwZSBlcSAnLCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5zZXRfZm9yY2VkX2JyZWFrcG9pbnQoICRpICsgMSApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBicmVhayBiZWZvcmUgYW4gJz0nIGZvbGxvd2luZyBjbG9zaW5nIHN0cnVjdHVyZQogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJGlzX2Fzc2lnbm1lbnR7JG5leHRfbm9uYmxhbmtfdHlwZX0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAkYnJlYWtwb2ludF9zdGFja1skY3VycmVudF9kZXB0aF0gIT0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9mb3JjZWRfYnJlYWtwb2ludF9jb3VudCgpICkKICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5zZXRfZm9yY2VkX2JyZWFrcG9pbnQoJGkpOwogICAgICAgICAgICAgICAgICAgIH0gIyMgZW5kIGlmICggJGlzX2Fzc2lnbm1lbnR7JG5leHRfbm9uYmxhbmtfdHlwZS4uLn0pCgogICAgICAgICAgICAgICAgICAgICMgYnJlYWsgYXQgYW55IGNvbW1hIGJlZm9yZSB0aGUgb3BlbmluZyBzdHJ1Y3R1cmUgQWRkZWQKICAgICAgICAgICAgICAgICAgICAjIGZvciAtbHAsIGJ1dCBzZWVtcyB0byBiZSBnb29kIGluIGdlbmVyYWwuICBJdCBpc24ndAogICAgICAgICAgICAgICAgICAgICMgb2J2aW91cyBob3cgZmFyIGJhY2sgdG8gbG9vazsgdGhlICc1JyBiZWxvdyBzZWVtcyB0bwogICAgICAgICAgICAgICAgICAgICMgd29yayB3ZWxsIGFuZCB3aWxsIGNhdGNoIHRoZSBjb21tYSBpbiBzb21ldGhpbmcgbGlrZQogICAgICAgICAgICAgICAgICAgICMgIHB1c2ggQGxpc3QsIG15ZnVuYyggJHBhcmFtLCAkcGFyYW0sIC4uCgogICAgICAgICAgICAgICAgICAgIG15ICRpY29tbWEgPSAkbGFzdF9jb21tYV9pbmRleFskZGVwdGhdOwogICAgICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCgkaWNvbW1hKSAmJiAoICRpX29wZW5pbmcgLSAkaWNvbW1hICkgPCA1ICkgewogICAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKCAkZm9yY2VkX2JyZWFrcG9pbnRfdG9fZ29bJGljb21tYV0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi0+c2V0X2ZvcmNlZF9icmVha3BvaW50KCRpY29tbWEpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSAgICAjIGVuZCBsb2dpYyB0byBvcGVuIHVwIGEgY29udGFpbmVyCgogICAgICAgICAgICAgICAgIyBCcmVhayBvcGVuIGEgbG9naWNhbCBjb250YWluZXIgb3BlbiBpZiBpdCB3YXMgYWxyZWFkeSBvcGVuCiAgICAgICAgICAgICAgICBlbHNpZiAoJGlzX3NpbXBsZV9sb2dpY2FsX2V4cHJlc3Npb24KICAgICAgICAgICAgICAgICAgICAmJiAkaGFzX29sZF9sb2dpY2FsX2JyZWFrcG9pbnRzWyRjdXJyZW50X2RlcHRoXSApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJHNlbGYtPnNldF9sb2dpY2FsX2JyZWFrcG9pbnRzKCRjdXJyZW50X2RlcHRoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIEhhbmRsZSBsb25nIGNvbnRhaW5lciB3aGljaCBkb2VzIG5vdCBnZXQgb3BlbmVkIHVwCiAgICAgICAgICAgICAgICBlbHNpZiAoJGlzX2xvbmdfdGVybSkgewoKICAgICAgICAgICAgICAgICAgICAjIG11c3Qgc2V0IGZha2UgYnJlYWtwb2ludCB0byBhbGVydCBvdXRlciBjb250YWluZXJzIHRoYXQKICAgICAgICAgICAgICAgICAgICAjIHRoZXkgYXJlIGNvbXBsZXgKICAgICAgICAgICAgICAgICAgICBzZXRfZmFrZV9icmVha3BvaW50KCk7CiAgICAgICAgICAgICAgICB9ICMjIGVuZCBlbHNpZiAoJGlzX2xvbmdfdGVybSkKCiAgICAgICAgICAgIH0gIyMgZW5kIGVsc2lmICggJGRlcHRoIDwgJGN1cnJlbnRfZGVwdGgpCgogICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICMgSGFuZGxlIHRoaXMgdG9rZW4KICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgICAgICAgJGN1cnJlbnRfZGVwdGggPSAkZGVwdGg7CgogICAgICAgICAgICAjIG1vc3QgdG9rZW4gdHlwZXMgY2FuIHNraXAgdGhlIHJlc3Qgb2YgdGhpcyBsb29wCiAgICAgICAgICAgIG5leHQgdW5sZXNzICggJHF1aWNrX2ZpbHRlcnskdHlwZX0gKTsKCiAgICAgICAgICAgICMgaGFuZGxlIGNvbW1hLWFycm93CiAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJz0+JyApIHsKICAgICAgICAgICAgICAgIG5leHQgaWYgKCAkbGFzdF9ub25ibGFua190eXBlIGVxICc9PicgKTsKICAgICAgICAgICAgICAgIG5leHQgaWYgJHJPcHRzX2JyZWFrX2F0X29sZF9jb21tYV9icmVha3BvaW50czsKICAgICAgICAgICAgICAgIG5leHQgaWYgJHJPcHRzX2NvbW1hX2Fycm93X2JyZWFrcG9pbnRzID09IDM7CiAgICAgICAgICAgICAgICAkd2FudF9jb21tYV9icmVha1skZGVwdGhdICAgPSAxOwogICAgICAgICAgICAgICAgJGluZGV4X2JlZm9yZV9hcnJvd1skZGVwdGhdID0gJGlfbGFzdF9ub25ibGFua190b2tlbjsKICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgIH0gIyMgZW5kIGlmICggJHR5cGUgZXEgJz0+JyApCgogICAgICAgICAgICBlbHNpZiAoICR0eXBlIGVxICcuJyApIHsKICAgICAgICAgICAgICAgICRsYXN0X2RvdF9pbmRleFskZGVwdGhdID0gJGk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgVHVybiBvZmYgYWxpZ25tZW50IGlmIHdlIGFyZSBzdXJlIHRoYXQgdGhpcyBpcyBub3QgYSBsaXN0CiAgICAgICAgICAgICMgZW52aXJvbm1lbnQuICBUbyBiZSBzYWZlLCB3ZSB3aWxsIGRvIHRoaXMgaWYgd2Ugc2VlIGNlcnRhaW4KICAgICAgICAgICAgIyBub24tbGlzdCB0b2tlbnMsIHN1Y2ggYXMgJzsnLCBhbmQgYWxzbyB0aGUgZW52aXJvbm1lbnQgaXMKICAgICAgICAgICAgIyBub3QgYSBsaXN0LiAgTm90ZSB0aGF0ICc9JyBjb3VsZCBiZSBpbiBhbnkgb2YgdGhlID0gb3BlcmF0b3JzCiAgICAgICAgICAgICMgKGxleHRlc3QudCkuIFdlIGNhbid0IGp1c3QgdXNlIHRoZSByZXBvcnRlZCBlbnZpcm9ubWVudAogICAgICAgICAgICAjIGJlY2F1c2UgaXQgY2FuIGJlIGluY29ycmVjdCBpbiBzb21lIGNhc2VzLgogICAgICAgICAgICBlbHNpZiAoICggJHR5cGUgPX4gL15bXDtcPFw+XH5dJC8gfHwgJGlzX2Fzc2lnbm1lbnR7JHR5cGV9ICkKICAgICAgICAgICAgICAgICYmICRjb250YWluZXJfZW52aXJvbm1lbnRfdG9fZ29bJGldIG5lICdMSVNUJyApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRkb250X2FsaWduWyRkZXB0aF0gICAgICAgICA9IDE7CiAgICAgICAgICAgICAgICAkd2FudF9jb21tYV9icmVha1skZGVwdGhdICAgPSAwOwogICAgICAgICAgICAgICAgJGluZGV4X2JlZm9yZV9hcnJvd1skZGVwdGhdID0gLTE7CiAgICAgICAgICAgIH0gIyMgZW5kIGVsc2lmICggKCAkdHlwZSA9fiAvXltcO1w8XD5cfl0kLy4uLikpCgogICAgICAgICAgICAjIG5vdyBqdXN0IGhhbmRsZSBhbnkgY29tbWFzCiAgICAgICAgICAgIG5leHQgdW5sZXNzICggJHR5cGUgZXEgJywnICk7CgogICAgICAgICAgICAkbGFzdF9kb3RfaW5kZXhbJGRlcHRoXSAgID0gdW5kZWY7CiAgICAgICAgICAgICRsYXN0X2NvbW1hX2luZGV4WyRkZXB0aF0gPSAkaTsKCiAgICAgICAgICAgICMgYnJlYWsgaGVyZSBpZiB0aGlzIGNvbW1hIGZvbGxvd3MgYSAnPT4nCiAgICAgICAgICAgICMgYnV0IG5vdCBpZiB0aGVyZSBpcyBhIHNpZGUgY29tbWVudCBhZnRlciB0aGUgY29tbWEKICAgICAgICAgICAgaWYgKCAkd2FudF9jb21tYV9icmVha1skZGVwdGhdICkgewoKICAgICAgICAgICAgICAgIGlmICggJG5leHRfbm9uYmxhbmtfdHlwZSA9fiAvXltcKVx9XF1SXSQvICkgewogICAgICAgICAgICAgICAgICAgIGlmICgkck9wdHNfY29tbWFfYXJyb3dfYnJlYWtwb2ludHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHdhbnRfY29tbWFfYnJlYWtbJGRlcHRoXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRzZWxmLT5zZXRfZm9yY2VkX2JyZWFrcG9pbnQoJGkpCiAgICAgICAgICAgICAgICAgIHVubGVzcyAoICRuZXh0X25vbmJsYW5rX3R5cGUgZXEgJyMnICk7CgogICAgICAgICAgICAgICAgIyBicmVhayBiZWZvcmUgdGhlIHByZXZpb3VzIHRva2VuIGlmIGl0IGxvb2tzIHNhZmUKICAgICAgICAgICAgICAgICMgRXhhbXBsZSBvZiBzb21ldGhpbmcgdGhhdCB3ZSB3aWxsIG5vdCB0cnkgdG8gYnJlYWsgYmVmb3JlOgogICAgICAgICAgICAgICAgIyAgIERCSTo6U1FMX1NNQUxMSU5UKCkgPT4gJGFkb19jb25zdHMtPnthZFNtYWxsSW50fSwKICAgICAgICAgICAgICAgICMgQWxzbyB3ZSBkb24ndCB3YW50IHRvIGJyZWFrIGF0IGEgYmluYXJ5IG9wZXJhdG9yIChsaWtlICspOgogICAgICAgICAgICAgICAgIyAkYy0+Y3JlYXRlT3ZhbCgKICAgICAgICAgICAgICAgICMgICAgJHggKyAkUiwgJHkgKwogICAgICAgICAgICAgICAgIyAgICAkUiA9PiAkeCAtICRSLAogICAgICAgICAgICAgICAgIyAgICAkeSAtICRSLCAtZmlsbCAgID0+ICdibGFjaycsCiAgICAgICAgICAgICAgICAjICk7CiAgICAgICAgICAgICAgICBteSAkaWJyZWFrID0gJGluZGV4X2JlZm9yZV9hcnJvd1skZGVwdGhdIC0gMTsKICAgICAgICAgICAgICAgIGlmICggICAkaWJyZWFrID4gMAogICAgICAgICAgICAgICAgICAgICYmICR0b2tlbnNfdG9fZ29bICRpYnJlYWsgKyAxIF0gIX4gL15bXClcfVxdXSQvICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICR0b2tlbnNfdG9fZ29bJGlicmVha10gZXEgJy0nICkgeyAkaWJyZWFrLS0gfQogICAgICAgICAgICAgICAgICAgIGlmICggJHR5cGVzX3RvX2dvWyRpYnJlYWtdIGVxICdiJyApICB7ICRpYnJlYWstLSB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bJGlicmVha10gPX4gL15bLHdpWkNVR1woXHtcW10kLyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgZG9uJ3QgYnJlYWsgcG9pbnRlciBjYWxscywgc3VjaCBhcyB0aGUgZm9sbG93aW5nOgogICAgICAgICAgICAgICAgICAgICAgICAjICBGaWxlOjpTcGVjLT5jdXJkaXIgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICMgKFRoaXMgaXMgdG9rZW5pemVkIGFzIGFkamFjZW50ICd3JyB0b2tlbnMpCiAgICAgICAgICAgICAgICAgICAgICAgICMjaWYgKCAkdG9rZW5zX3RvX2dvWyAkaWJyZWFrICsgMSBdICF+IC9eLT4vICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBBbmQgZG9uJ3QgYnJlYWsgYmVmb3JlIGEgY29tbWEsIGFzIGluIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgICAgICAgICAgICAgICAgICMgKCBMT05HRVJfVEhBTiw9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICAjICAgIEVJR0hUWV9DSEFSQUNURVJTLD0+IDIsCiAgICAgICAgICAgICAgICAgICAgICAgICMgICAgQ0FVU0VTX0ZPUk1BVFRJTkcsPT4gMywKICAgICAgICAgICAgICAgICAgICAgICAgIyAgICBMSUtFX1RISVMsPT4gNCwKICAgICAgICAgICAgICAgICAgICAgICAgIyApOwogICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgZXhhbXBsZSBpcyBmb3IgLXRzbyBidXQgc2hvdWxkIGJlIGdlbmVyYWwgcnVsZQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICAgJHRva2Vuc190b19nb1sgJGlicmVhayArIDEgXSBuZSAnLT4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdG9rZW5zX3RvX2dvWyAkaWJyZWFrICsgMSBdIG5lICcsJyApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5zZXRfZm9yY2VkX2JyZWFrcG9pbnQoJGlicmVhayk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9ICMjIGVuZCBpZiAoICR0eXBlc190b19nb1skaWJyZWFrLi4uXSkKICAgICAgICAgICAgICAgIH0gIyMgZW5kIGlmICggJGlicmVhayA+IDAgJiYgJHRva2Vuc190b19nby4uLikKCiAgICAgICAgICAgICAgICAkd2FudF9jb21tYV9icmVha1skZGVwdGhdICAgPSAwOwogICAgICAgICAgICAgICAgJGluZGV4X2JlZm9yZV9hcnJvd1skZGVwdGhdID0gLTE7CgogICAgICAgICAgICAgICAgIyBoYW5kbGUgbGlzdCB3aGljaCBtaXhlcyAnPT4ncyBhbmQgJywnczoKICAgICAgICAgICAgICAgICMgdHJlYXQgYW55IGxpc3QgaXRlbXMgc28gZmFyIGFzIGFuIGludGVycnVwdGVkIGxpc3QKICAgICAgICAgICAgICAgICRpbnRlcnJ1cHRlZF9saXN0WyRkZXB0aF0gPSAxOwogICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgfSAjIyBlbmQgaWYgKCAkd2FudF9jb21tYV9icmVhay4uLikKCiAgICAgICAgICAgICMgYnJlYWsgYWZ0ZXIgYWxsIGNvbW1hcyBhYm92ZSBzdGFydGluZyBkZXB0aAogICAgICAgICAgICBpZiAoICRkZXB0aCA8ICRzdGFydGluZ19kZXB0aCAmJiAhJGRvbnRfYWxpZ25bJGRlcHRoXSApIHsKICAgICAgICAgICAgICAgICRzZWxmLT5zZXRfZm9yY2VkX2JyZWFrcG9pbnQoJGkpCiAgICAgICAgICAgICAgICAgIHVubGVzcyAoICRuZXh0X25vbmJsYW5rX3R5cGUgZXEgJyMnICk7CiAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFkZCB0aGlzIGNvbW1hIHRvIHRoZSBsaXN0Li4KICAgICAgICAgICAgbXkgJGl0ZW1fY291bnQgPSAkaXRlbV9jb3VudF9zdGFja1skZGVwdGhdOwogICAgICAgICAgICBpZiAoICRpdGVtX2NvdW50ID09IDAgKSB7CgogICAgICAgICAgICAgICAgIyBidXQgZG8gbm90IGZvcm0gYSBsaXN0IHdpdGggbm8gb3BlbmluZyBzdHJ1Y3R1cmUKICAgICAgICAgICAgICAgICMgZm9yIGV4YW1wbGU6CgogICAgICAgICAgICAgICAgIyAgICAgICAgICAgIG9wZW4gSU5GSUxFX0NPUFksICI+JGlucHV0X2ZpbGVfY29weSIKICAgICAgICAgICAgICAgICMgICAgICAgICAgICAgIG9yIGRpZSAoInZlcnkgbG9uZyBtZXNzYWdlIik7CgogICAgICAgICAgICAgICAgaWYgKCAoICRvcGVuaW5nX3N0cnVjdHVyZV9pbmRleF9zdGFja1skZGVwdGhdIDwgMCApCiAgICAgICAgICAgICAgICAgICAgJiYgJGNvbnRhaW5lcl9lbnZpcm9ubWVudF90b19nb1skaV0gZXEgJ0JMT0NLJyApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJGRvbnRfYWxpZ25bJGRlcHRoXSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gIyMgZW5kIGlmICggJGl0ZW1fY291bnQgPT0gMCApCgogICAgICAgICAgICAkY29tbWFfaW5kZXhbJGRlcHRoXVskaXRlbV9jb3VudF0gPSAkaTsKICAgICAgICAgICAgKyskaXRlbV9jb3VudF9zdGFja1skZGVwdGhdOwogICAgICAgICAgICBpZiAoICRsYXN0X25vbmJsYW5rX3R5cGUgPX4gL15baVJcXV0kLyApIHsKICAgICAgICAgICAgICAgICRpZGVudGlmaWVyX2NvdW50X3N0YWNrWyRkZXB0aF0rKzsKICAgICAgICAgICAgfQogICAgICAgIH0gIyMgZW5kIHdoaWxlICggKyskaSA8PSAkbWF4X2luZGV4X3RvX2dvKQoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgZW5kIG9mIGxvb3Agb3ZlciBhbGwgdG9rZW5zIGluIHRoaXMgYmF0Y2gKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgICAjIHNldCBicmVha3MgZm9yIGFueSB1bmZpbmlzaGVkIGxpc3RzIC4uCiAgICAgICAgZm9yICggbXkgJGRkID0gJGN1cnJlbnRfZGVwdGggOyAkZGQgPj0gJG1pbmltdW1fZGVwdGggOyAkZGQtLSApIHsKCiAgICAgICAgICAgICRpbnRlcnJ1cHRlZF9saXN0WyRkZF0gICA9IDE7CiAgICAgICAgICAgICRoYXNfYnJva2VuX3N1Ymxpc3RbJGRkXSA9IDEgaWYgKCAkZGQgPCAkY3VycmVudF9kZXB0aCApOwogICAgICAgICAgICAkc2VsZi0+c2V0X2NvbW1hX2JyZWFrcG9pbnRzKCRkZCk7CiAgICAgICAgICAgICRzZWxmLT5zZXRfbG9naWNhbF9icmVha3BvaW50cygkZGQpCiAgICAgICAgICAgICAgaWYgKCAkaGFzX29sZF9sb2dpY2FsX2JyZWFrcG9pbnRzWyRkZF0gKTsKICAgICAgICAgICAgJHNlbGYtPnNldF9mb3Jfc2VtaWNvbG9uX2JyZWFrcG9pbnRzKCRkZCk7CgogICAgICAgICAgICAjIGJyZWFrIG9wZW4gY29udGFpbmVyLi4uCiAgICAgICAgICAgIG15ICRpX29wZW5pbmcgPSAkb3BlbmluZ19zdHJ1Y3R1cmVfaW5kZXhfc3RhY2tbJGRkXTsKICAgICAgICAgICAgJHNlbGYtPnNldF9mb3JjZWRfYnJlYWtwb2ludCgkaV9vcGVuaW5nKQogICAgICAgICAgICAgIHVubGVzcyAoCiAgICAgICAgICAgICAgICBpc191bmJyZWFrYWJsZV9jb250YWluZXIoJGRkKQoKICAgICAgICAgICAgICAgICMgQXZvaWQgYSBicmVhayB3aGljaCB3b3VsZCBwbGFjZSBhbiBpc29sYXRlZCAnIG9yICIKICAgICAgICAgICAgICAgICMgb24gYSBsaW5lCiAgICAgICAgICAgICAgICB8fCAoICAgJHR5cGUgZXEgJ1EnCiAgICAgICAgICAgICAgICAgICAgJiYgJGlfb3BlbmluZyA+PSAkbWF4X2luZGV4X3RvX2dvIC0gMgogICAgICAgICAgICAgICAgICAgICYmICggJHRva2VuIGVxICInIiB8fCAkdG9rZW4gZXEgJyInICkgKQogICAgICAgICAgICAgICk7CiAgICAgICAgfSAjIyBlbmQgZm9yICggbXkgJGRkID0gJGN1cnJlbnRfZGVwdGguLi4pCgogICAgICAgICMgUmV0dXJuIGEgZmxhZyBpbmRpY2F0aW5nIGlmIHRoZSBpbnB1dCBmaWxlIGhhZCBzb21lIGdvb2QgYnJlYWtwb2ludHMuCiAgICAgICAgIyBUaGlzIGZsYWcgd2lsbCBiZSB1c2VkIHRvIGZvcmNlIGEgYnJlYWsgaW4gYSBsaW5lIHNob3J0ZXIgdGhhbiB0aGUKICAgICAgICAjIGFsbG93ZWQgbGluZSBsZW5ndGguCiAgICAgICAgaWYgKCAkaGFzX29sZF9sb2dpY2FsX2JyZWFrcG9pbnRzWyRjdXJyZW50X2RlcHRoXSApIHsKICAgICAgICAgICAgJHNhd19nb29kX2JyZWFrcG9pbnQgPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBBIGNvbXBsZXggbGluZSB3aXRoIG9uZSBicmVhayBhdCBhbiA9IGhhcyBhIGdvb2QgYnJlYWtwb2ludC4KICAgICAgICAjIFRoaXMgaXMgbm90IGNvbXBsZXggKCR0b3RhbF9kZXB0aF92YXJpYXRpb249MCk6CiAgICAgICAgIyAkcmVzMQogICAgICAgICMgICA9IDEwOwogICAgICAgICMKICAgICAgICAjIFRoaXMgaXMgY29tcGxleCAoJHRvdGFsX2RlcHRoX3ZhcmlhdGlvbj02KToKICAgICAgICAjICRyZXMyID0KICAgICAgICAjICAoaXNfYm91bmRwKCJhIiwgJ3NlbGYtaW5zZXJ0JykgJiYgaXNfYm91bmRwKCJiIiwgJ3NlbGYtaW5zZXJ0JykpOwogICAgICAgIGVsc2lmICgkaV9vbGRfYXNzaWdubWVudF9icmVhawogICAgICAgICAgICAmJiAkdG90YWxfZGVwdGhfdmFyaWF0aW9uID4gNAogICAgICAgICAgICAmJiAkb2xkX2JyZWFrcG9pbnRfY291bnQgPT0gMSApCiAgICAgICAgewogICAgICAgICAgICAkc2F3X2dvb2RfYnJlYWtwb2ludCA9IDE7CiAgICAgICAgfSAjIyBlbmQgZWxzaWYgKCAkaV9vbGRfYXNzaWdubWVudF9icmVhay4uLikKCiAgICAgICAgcmV0dXJuICRzYXdfZ29vZF9icmVha3BvaW50OwogICAgfSAjIyBlbmQgc3ViIHNjYW5fbGlzdAp9ICMjIGVuZCBjbG9zdXJlIHNjYW5fbGlzdAoKc3ViIGZpbmRfdG9rZW5fc3RhcnRpbmdfbGlzdCB7CgogICAgIyBXaGVuIHRlc3RpbmcgdG8gc2VlIGlmIGEgYmxvY2sgd2lsbCBmaXQgb24gb25lIGxpbmUsIHNvbWUKICAgICMgcHJldmlvdXMgdG9rZW4ocykgbWF5IGFsc28gbmVlZCB0byBiZSBvbiB0aGUgbGluZTsgcGFydGljdWxhcmx5CiAgICAjIGlmIHRoaXMgaXMgYSBzdWIgY2FsbC4gIFNvIHdlIHdpbGwgbG9vayBiYWNrIGF0IGxlYXN0IG9uZQogICAgIyB0b2tlbi4gTk9URTogVGhpcyBpc24ndCBwZXJmZWN0LCBidXQgbm90IGNyaXRpY2FsLCBiZWNhdXNlCiAgICAjIGlmIHdlIG1pcy1pZGVudGlmeSBhIGJsb2NrLCBpdCB3aWxsIGJlIHdyYXBwZWQgYW5kIHRoZXJlZm9yZQogICAgIyBmaXhlZCB0aGUgbmV4dCB0aW1lIGl0IGlzIGZvcm1hdHRlZC4KICAgIG15ICggJHNlbGYsICRpX29wZW5pbmdfcGFyZW4gKSA9IEBfOwogICAgbXkgJGlfb3BlbmluZ19taW51cyA9ICRpX29wZW5pbmdfcGFyZW47CiAgICBteSAkaW0xICAgICAgICAgICAgID0gJGlfb3BlbmluZ19wYXJlbiAtIDE7CiAgICBteSAkaW0yICAgICAgICAgICAgID0gJGlfb3BlbmluZ19wYXJlbiAtIDI7CiAgICBteSAkdHlwZW0xICAgICAgICAgID0gJGltMSA+PSAwID8gJHR5cGVzX3RvX2dvWyRpbTFdIDogJ2InOwogICAgbXkgJHR5cGVtMiAgICAgICAgICA9ICRpbTIgPj0gMCA/ICR0eXBlc190b19nb1skaW0yXSA6ICdiJzsKCiAgICBpZiAoICR0eXBlbTEgZXEgJywnIHx8ICggJHR5cGVtMSBlcSAnYicgJiYgJHR5cGVtMiBlcSAnLCcgKSApIHsKICAgICAgICAkaV9vcGVuaW5nX21pbnVzID0gJGlfb3BlbmluZ19wYXJlbjsKICAgIH0KICAgIGVsc2lmICggJHRva2Vuc190b19nb1skaV9vcGVuaW5nX3BhcmVuXSBlcSAnKCcgKSB7CiAgICAgICAgJGlfb3BlbmluZ19taW51cyA9ICRpbTEgaWYgJGltMSA+PSAwOwoKICAgICAgICAjIHdhbGsgYmFjayB0byBpbXByb3ZlIGxlbmd0aCBlc3RpbWF0ZQogICAgICAgIGZvciAoIG15ICRqID0gJGltMSA7ICRqID49IDAgOyAkai0tICkgewogICAgICAgICAgICBsYXN0IGlmICggJHR5cGVzX3RvX2dvWyRqXSA9fiAvXltcKFxbXHtMXH1cXVwpUmIsXSQvICk7CiAgICAgICAgICAgICRpX29wZW5pbmdfbWludXMgPSAkajsKICAgICAgICB9CiAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bJGlfb3BlbmluZ19taW51c10gZXEgJ2InICkgeyAkaV9vcGVuaW5nX21pbnVzKysgfQogICAgfQogICAgZWxzaWYgKCAkdHlwZW0xIGVxICdrJyApIHsgJGlfb3BlbmluZ19taW51cyA9ICRpbTEgfQogICAgZWxzaWYgKCAkdHlwZW0xIGVxICdiJyAmJiAkaW0yID49IDAgJiYgJHR5cGVzX3RvX2dvWyRpbTJdIGVxICdrJyApIHsKICAgICAgICAkaV9vcGVuaW5nX21pbnVzID0gJGltMjsKICAgIH0KICAgIHJldHVybiAkaV9vcGVuaW5nX21pbnVzOwp9Cgp7ICAgICMjIGJlZ2luIGNsb3N1cmUgc2V0X2NvbW1hX2JyZWFrcG9pbnRzX2RvCgogICAgbXkgJWlzX2tleXdvcmRfd2l0aF9zcGVjaWFsX2xlYWRpbmdfdGVybTsKCiAgICBCRUdJTiB7CgogICAgICAgICMgVGhlc2Uga2V5d29yZHMgaGF2ZSBwcm90b3R5cGVzIHdoaWNoIGFsbG93IGEgc3BlY2lhbCBsZWFkaW5nIGl0ZW0KICAgICAgICAjIGZvbGxvd2VkIGJ5IGEgbGlzdAogICAgICAgIG15IEBxID0KICAgICAgICAgIHF3KGZvcm1saW5lIGdyZXAga2lsbCBtYXAgcHJpbnRmIHNwcmludGYgcHVzaCBjaG1vZCBqb2luIHBhY2sgdW5zaGlmdCk7CiAgICAgICAgQGlzX2tleXdvcmRfd2l0aF9zcGVjaWFsX2xlYWRpbmdfdGVybXtAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwogICAgfQoKICAgIHVzZSBjb25zdGFudCBERUJVR19TUEFSU0UgPT4gMDsKCiAgICBzdWIgc2V0X2NvbW1hX2JyZWFrcG9pbnRzX2RvIHsKCiAgICAgICAgIyBHaXZlbiBhIGxpc3Qgd2l0aCBzb21lIGNvbW1hcywgc2V0IGJyZWFrcG9pbnRzIGF0IHNvbWUgb2YgdGhlCiAgICAgICAgIyBjb21tYXMsIGlmIG5lY2Vzc2FyeSwgdG8gbWFrZSBpdCBlYXN5IHRvIHJlYWQuCgogICAgICAgIG15ICggJHNlbGYsICRyaW5wdXRfaGFzaCApID0gQF87CgogICAgICAgIG15ICRkZXB0aCAgICAgICAgICAgICAgID0gJHJpbnB1dF9oYXNoLT57ZGVwdGh9OwogICAgICAgIG15ICRpX29wZW5pbmdfcGFyZW4gICAgID0gJHJpbnB1dF9oYXNoLT57aV9vcGVuaW5nX3BhcmVufTsKICAgICAgICBteSAkaV9jbG9zaW5nX3BhcmVuICAgICA9ICRyaW5wdXRfaGFzaC0+e2lfY2xvc2luZ19wYXJlbn07CiAgICAgICAgbXkgJGl0ZW1fY291bnQgICAgICAgICAgPSAkcmlucHV0X2hhc2gtPntpdGVtX2NvdW50fTsKICAgICAgICBteSAkaWRlbnRpZmllcl9jb3VudCAgICA9ICRyaW5wdXRfaGFzaC0+e2lkZW50aWZpZXJfY291bnR9OwogICAgICAgIG15ICRyY29tbWFfaW5kZXggICAgICAgID0gJHJpbnB1dF9oYXNoLT57cmNvbW1hX2luZGV4fTsKICAgICAgICBteSAkbmV4dF9ub25ibGFua190eXBlICA9ICRyaW5wdXRfaGFzaC0+e25leHRfbm9uYmxhbmtfdHlwZX07CiAgICAgICAgbXkgJGxpc3RfdHlwZSAgICAgICAgICAgPSAkcmlucHV0X2hhc2gtPntsaXN0X3R5cGV9OwogICAgICAgIG15ICRpbnRlcnJ1cHRlZCAgICAgICAgID0gJHJpbnB1dF9oYXNoLT57aW50ZXJydXB0ZWR9OwogICAgICAgIG15ICRyZG9fbm90X2JyZWFrX2FwYXJ0ID0gJHJpbnB1dF9oYXNoLT57cmRvX25vdF9icmVha19hcGFydH07CiAgICAgICAgbXkgJG11c3RfYnJlYWtfb3BlbiAgICAgPSAkcmlucHV0X2hhc2gtPnttdXN0X2JyZWFrX29wZW59OwogICAgICAgIG15ICRoYXNfYnJva2VuX3N1Ymxpc3QgID0gJHJpbnB1dF9oYXNoLT57aGFzX2Jyb2tlbl9zdWJsaXN0fTsKCiAgICAgICAgIyBub3RoaW5nIHRvIGRvIGlmIG5vIGNvbW1hcyBzZWVuCiAgICAgICAgcmV0dXJuIGlmICggJGl0ZW1fY291bnQgPCAxICk7CgogICAgICAgIG15ICRpX2ZpcnN0X2NvbW1hICAgICA9ICRyY29tbWFfaW5kZXgtPlswXTsKICAgICAgICBteSAkaV90cnVlX2xhc3RfY29tbWEgPSAkcmNvbW1hX2luZGV4LT5bICRpdGVtX2NvdW50IC0gMSBdOwogICAgICAgIG15ICRpX2xhc3RfY29tbWEgICAgICA9ICRpX3RydWVfbGFzdF9jb21tYTsKICAgICAgICBpZiAoICRpX2xhc3RfY29tbWEgPj0gJG1heF9pbmRleF90b19nbyApIHsKICAgICAgICAgICAgJGlfbGFzdF9jb21tYSA9ICRyY29tbWFfaW5kZXgtPlsgLS0kaXRlbV9jb3VudCAtIDEgXTsKICAgICAgICAgICAgcmV0dXJuIGlmICggJGl0ZW1fY291bnQgPCAxICk7CiAgICAgICAgfQoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBmaW5kIGxlbmd0aHMgb2YgYWxsIGl0ZW1zIGluIHRoZSBsaXN0IHRvIGNhbGN1bGF0ZSBwYWdlIGxheW91dAogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBteSAkY29tbWFfY291bnQgPSAkaXRlbV9jb3VudDsKICAgICAgICBteSBAaXRlbV9sZW5ndGhzOwogICAgICAgIG15IEBpX3Rlcm1fYmVnaW47CiAgICAgICAgbXkgQGlfdGVybV9lbmQ7CiAgICAgICAgbXkgQGlfdGVybV9jb21tYTsKICAgICAgICBteSAkaV9wcmV2X3BsdXM7CiAgICAgICAgbXkgQG1heF9sZW5ndGggPSAoIDAsIDAgKTsKICAgICAgICBteSAkZmlyc3RfdGVybV9sZW5ndGg7CiAgICAgICAgbXkgJGkgICAgICA9ICRpX29wZW5pbmdfcGFyZW47CiAgICAgICAgbXkgJGlzX29kZCA9IDE7CgogICAgICAgIGZvcmVhY2ggbXkgJGogKCAwIC4uICRjb21tYV9jb3VudCAtIDEgKSB7CiAgICAgICAgICAgICRpc19vZGQgICAgICA9IDEgLSAkaXNfb2RkOwogICAgICAgICAgICAkaV9wcmV2X3BsdXMgPSAkaSArIDE7CiAgICAgICAgICAgICRpICAgICAgICAgICA9ICRyY29tbWFfaW5kZXgtPlskal07CgogICAgICAgICAgICBteSAkaV90ZXJtX2VuZCA9CiAgICAgICAgICAgICAgKCAkaSA9PSAwIHx8ICR0eXBlc190b19nb1sgJGkgLSAxIF0gZXEgJ2InICkgPyAkaSAtIDIgOiAkaSAtIDE7CiAgICAgICAgICAgIG15ICRpX3Rlcm1fYmVnaW4gPQogICAgICAgICAgICAgICggJHR5cGVzX3RvX2dvWyRpX3ByZXZfcGx1c10gZXEgJ2InICkKICAgICAgICAgICAgICA/ICRpX3ByZXZfcGx1cyArIDEKICAgICAgICAgICAgICA6ICRpX3ByZXZfcGx1czsKICAgICAgICAgICAgcHVzaCBAaV90ZXJtX2JlZ2luLCAkaV90ZXJtX2JlZ2luOwogICAgICAgICAgICBwdXNoIEBpX3Rlcm1fZW5kLCAgICRpX3Rlcm1fZW5kOwogICAgICAgICAgICBwdXNoIEBpX3Rlcm1fY29tbWEsICRpOwoKICAgICAgICAgICAgIyBub3RlOiBjdXJyZW50bHkgYWRkaW5nIDIgdG8gYWxsIGxlbmd0aHMgKGZvciBjb21tYSBhbmQgc3BhY2UpCiAgICAgICAgICAgIG15ICRsZW5ndGggPQogICAgICAgICAgICAgIDIgKyB0b2tlbl9zZXF1ZW5jZV9sZW5ndGgoICRpX3Rlcm1fYmVnaW4sICRpX3Rlcm1fZW5kICk7CiAgICAgICAgICAgIHB1c2ggQGl0ZW1fbGVuZ3RocywgJGxlbmd0aDsKCiAgICAgICAgICAgIGlmICggJGogPT0gMCApIHsKICAgICAgICAgICAgICAgICRmaXJzdF90ZXJtX2xlbmd0aCA9ICRsZW5ndGg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgaWYgKCAkbGVuZ3RoID4gJG1heF9sZW5ndGhbJGlzX29kZF0gKSB7CiAgICAgICAgICAgICAgICAgICAgJG1heF9sZW5ndGhbJGlzX29kZF0gPSAkbGVuZ3RoOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIG5vdyB3ZSBoYXZlIHRvIG1ha2UgYSBkaXN0aW5jdGlvbiBiZXR3ZWVuIHRoZSBjb21tYSBjb3VudCBhbmQgaXRlbQogICAgICAgICMgY291bnQsIGJlY2F1c2UgdGhlIGl0ZW0gY291bnQgd2lsbCBiZSBvbmUgZ3JlYXRlciB0aGFuIHRoZSBjb21tYQogICAgICAgICMgY291bnQgaWYgdGhlIGxhc3QgaXRlbSBpcyBub3QgdGVybWluYXRlZCB3aXRoIGEgY29tbWEKICAgICAgICBteSAkaV9iID0KICAgICAgICAgICggJHR5cGVzX3RvX2dvWyAkaV9sYXN0X2NvbW1hICsgMSBdIGVxICdiJyApCiAgICAgICAgICA/ICRpX2xhc3RfY29tbWEgKyAxCiAgICAgICAgICA6ICRpX2xhc3RfY29tbWE7CiAgICAgICAgbXkgJGlfZSA9CiAgICAgICAgICAoICR0eXBlc190b19nb1sgJGlfY2xvc2luZ19wYXJlbiAtIDEgXSBlcSAnYicgKQogICAgICAgICAgPyAkaV9jbG9zaW5nX3BhcmVuIC0gMgogICAgICAgICAgOiAkaV9jbG9zaW5nX3BhcmVuIC0gMTsKICAgICAgICBteSAkaV9lZmZlY3RpdmVfbGFzdF9jb21tYSA9ICRpX2xhc3RfY29tbWE7CgogICAgICAgIG15ICRsYXN0X2l0ZW1fbGVuZ3RoID0gdG9rZW5fc2VxdWVuY2VfbGVuZ3RoKCAkaV9iICsgMSwgJGlfZSApOwoKICAgICAgICBpZiAoICRsYXN0X2l0ZW1fbGVuZ3RoID4gMCApIHsKCiAgICAgICAgICAgICMgYWRkIDIgdG8gbGVuZ3RoIGJlY2F1c2Ugb3RoZXIgbGVuZ3RocyBpbmNsdWRlIGEgY29tbWEgYW5kIGEgYmxhbmsKICAgICAgICAgICAgJGxhc3RfaXRlbV9sZW5ndGggKz0gMjsKICAgICAgICAgICAgcHVzaCBAaXRlbV9sZW5ndGhzLCAkbGFzdF9pdGVtX2xlbmd0aDsKICAgICAgICAgICAgcHVzaCBAaV90ZXJtX2JlZ2luLCAkaV9iICsgMTsKICAgICAgICAgICAgcHVzaCBAaV90ZXJtX2VuZCwgICAkaV9lOwogICAgICAgICAgICBwdXNoIEBpX3Rlcm1fY29tbWEsIHVuZGVmOwoKICAgICAgICAgICAgbXkgJGlfb2RkID0gJGl0ZW1fY291bnQgJSAyOwoKICAgICAgICAgICAgaWYgKCAkbGFzdF9pdGVtX2xlbmd0aCA+ICRtYXhfbGVuZ3RoWyRpX29kZF0gKSB7CiAgICAgICAgICAgICAgICAkbWF4X2xlbmd0aFskaV9vZGRdID0gJGxhc3RfaXRlbV9sZW5ndGg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRpdGVtX2NvdW50Kys7CiAgICAgICAgICAgICRpX2VmZmVjdGl2ZV9sYXN0X2NvbW1hID0gJGlfZSArIDE7CgogICAgICAgICAgICBpZiAoICR0eXBlc190b19nb1sgJGlfYiArIDEgXSA9fiAvXltpUlxdXSQvICkgewogICAgICAgICAgICAgICAgJGlkZW50aWZpZXJfY291bnQrKzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgRW5kIG9mIGxlbmd0aCBjYWxjdWxhdGlvbnMKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIENvbXBvdW5kIExpc3QgUnVsZSAxOgogICAgICAgICMgQnJlYWsgYXQgKGFsbW9zdCkgZXZlcnkgY29tbWEgZm9yIGEgbGlzdCBjb250YWluaW5nIGEgYnJva2VuCiAgICAgICAgIyBzdWJsaXN0LiAgVGhpcyBoYXMgaGlnaGVyIHByaW9yaXR5IHRoYW4gdGhlIEludGVycnVwdGVkIExpc3QKICAgICAgICAjIFJ1bGUuCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgIGlmICgkaGFzX2Jyb2tlbl9zdWJsaXN0KSB7CgogICAgICAgICAgICAjIEJyZWFrIGF0IGV2ZXJ5IGNvbW1hIGV4Y2VwdCBmb3IgYSBjb21tYSBiZXR3ZWVuIHR3bwogICAgICAgICAgICAjIHNpbXBsZSwgc21hbGwgdGVybXMuICBUaGlzIHByZXZlbnRzIGxvbmcgdmVydGljYWwKICAgICAgICAgICAgIyBjb2x1bW5zIG9mLCBzYXksIGp1c3QgMCdzLgogICAgICAgICAgICBteSAkc21hbGxfbGVuZ3RoID0gMTA7ICAgICMgMiArIGFjdHVhbCBtYXhpbXVtIGxlbmd0aCB3YW50ZWQKCiAgICAgICAgICAgICMgV2UnbGwgaW5zZXJ0IGEgYnJlYWsgaW4gbG9uZyBydW5zIG9mIHNtYWxsIHRlcm1zIHRvCiAgICAgICAgICAgICMgYWxsb3cgYWxpZ25tZW50IGluIHVuaWZvcm0gdGFibGVzLgogICAgICAgICAgICBteSAkc2tpcHBlZF9jb3VudCA9IDA7CiAgICAgICAgICAgIG15ICRjb2x1bW5zICAgICAgID0gdGFibGVfY29sdW1uc19hdmFpbGFibGUoJGlfZmlyc3RfY29tbWEpOwogICAgICAgICAgICBteSAkZmllbGRzICAgICAgICA9IGludCggJGNvbHVtbnMgLyAkc21hbGxfbGVuZ3RoICk7CiAgICAgICAgICAgIGlmICggICAkck9wdHNfbWF4aW11bV9maWVsZHNfcGVyX3RhYmxlCiAgICAgICAgICAgICAgICAmJiAkZmllbGRzID4gJHJPcHRzX21heGltdW1fZmllbGRzX3Blcl90YWJsZSApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRmaWVsZHMgPSAkck9wdHNfbWF4aW11bV9maWVsZHNfcGVyX3RhYmxlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG15ICRtYXhfc2tpcHBlZF9jb3VudCA9ICRmaWVsZHMgLSAxOwoKICAgICAgICAgICAgbXkgJGlzX3NpbXBsZV9sYXN0X3Rlcm0gPSAwOwogICAgICAgICAgICBteSAkaXNfc2ltcGxlX25leHRfdGVybSA9IDA7CiAgICAgICAgICAgIGZvcmVhY2ggbXkgJGogKCAwIC4uICRpdGVtX2NvdW50ICkgewogICAgICAgICAgICAgICAgJGlzX3NpbXBsZV9sYXN0X3Rlcm0gPSAkaXNfc2ltcGxlX25leHRfdGVybTsKICAgICAgICAgICAgICAgICRpc19zaW1wbGVfbmV4dF90ZXJtID0gMDsKICAgICAgICAgICAgICAgIGlmICggICAkaiA8ICRpdGVtX2NvdW50CiAgICAgICAgICAgICAgICAgICAgJiYgJGlfdGVybV9lbmRbJGpdID09ICRpX3Rlcm1fYmVnaW5bJGpdCiAgICAgICAgICAgICAgICAgICAgJiYgJGl0ZW1fbGVuZ3Roc1skal0gPD0gJHNtYWxsX2xlbmd0aCApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJGlzX3NpbXBsZV9uZXh0X3Rlcm0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbmV4dCBpZiAkaiA9PSAwOwogICAgICAgICAgICAgICAgaWYgKCAgICRpc19zaW1wbGVfbGFzdF90ZXJtCiAgICAgICAgICAgICAgICAgICAgJiYgJGlzX3NpbXBsZV9uZXh0X3Rlcm0KICAgICAgICAgICAgICAgICAgICAmJiAkc2tpcHBlZF9jb3VudCA8ICRtYXhfc2tpcHBlZF9jb3VudCApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJHNraXBwZWRfY291bnQrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRza2lwcGVkX2NvdW50ID0gMDsKICAgICAgICAgICAgICAgICAgICBteSAkaSA9ICRpX3Rlcm1fY29tbWFbICRqIC0gMSBdOwogICAgICAgICAgICAgICAgICAgIGxhc3QgdW5sZXNzIGRlZmluZWQgJGk7CiAgICAgICAgICAgICAgICAgICAgJHNlbGYtPnNldF9mb3JjZWRfYnJlYWtwb2ludCgkaSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWx3YXlzIGJyZWFrIGF0IHRoZSBsYXN0IGNvbW1hIGlmIHRoaXMgbGlzdCBpcwogICAgICAgICAgICAjIGludGVycnVwdGVkOyB3ZSB3b3VsZG4ndCB3YW50IHRvIGxlYXZlIGEgdGVybWluYWwgJ3snLCBmb3IKICAgICAgICAgICAgIyBleGFtcGxlLgogICAgICAgICAgICBpZiAoJGludGVycnVwdGVkKSB7CiAgICAgICAgICAgICAgICAkc2VsZi0+c2V0X2ZvcmNlZF9icmVha3BvaW50KCRpX3RydWVfbGFzdF9jb21tYSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiNteSAoICRhLCAkYiwgJGMgKSA9IGNhbGxlcigpOwojcHJpbnQgIkxJU1RYOiBpbiBzZXRfbGlzdCAkYSAkYyBpbnRlcnJ1cHQ9JGludGVycnVwdGVkIGNvdW50PSRpdGVtX2NvdW50CiNpX2ZpcnN0ID0gJGlfZmlyc3RfY29tbWEgIGlfbGFzdD0kaV9sYXN0X2NvbW1hIG1heD0kbWF4X2luZGV4X3RvX2dvXG4iOwojcHJpbnQgImRlcHRoPSRkZXB0aCBoYXNfYnJva2VuPSRoYXNfYnJva2VuX3N1Ymxpc3RbJGRlcHRoXSBpc19tdWx0aT0kaXNfbXVsdGlsaW5lIG9wZW5pbmdfcGFyZW49KCRpX29wZW5pbmdfcGFyZW4pIFxuIjsKCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgSW50ZXJydXB0ZWQgTGlzdCBSdWxlOgogICAgICAgICMgQSBsaXN0IGlzIGZvcmNlZCB0byB1c2Ugb2xkIGJyZWFrcG9pbnRzIGlmIGl0IHdhcyBpbnRlcnJ1cHRlZAogICAgICAgICMgYnkgc2lkZSBjb21tZW50cyBvciBibGFuayBsaW5lcywgb3IgcmVxdWVzdGVkIGJ5IHVzZXIuCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgIGlmICggICAkck9wdHNfYnJlYWtfYXRfb2xkX2NvbW1hX2JyZWFrcG9pbnRzCiAgICAgICAgICAgIHx8ICRpbnRlcnJ1cHRlZAogICAgICAgICAgICB8fCAkaV9vcGVuaW5nX3BhcmVuIDwgMCApCiAgICAgICAgewogICAgICAgICAgICAkc2VsZi0+Y29weV9vbGRfYnJlYWtwb2ludHMoICRpX2ZpcnN0X2NvbW1hLCAkaV90cnVlX2xhc3RfY29tbWEgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgTG9va3MgbGlrZSBhIGxpc3Qgb2YgaXRlbXMuICBXZSBoYXZlIHRvIGxvb2sgYXQgaXQgYW5kIHNpemUgaXQgdXAuCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgICBteSAkb3BlbmluZ190b2tlbiA9ICR0b2tlbnNfdG9fZ29bJGlfb3BlbmluZ19wYXJlbl07CiAgICAgICAgbXkgJG9wZW5pbmdfZW52aXJvbm1lbnQgPQogICAgICAgICAgJGNvbnRhaW5lcl9lbnZpcm9ubWVudF90b19nb1skaV9vcGVuaW5nX3BhcmVuXTsKCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIFJldHVybiBpZiB0aGlzIHdpbGwgZml0IG9uIG9uZSBsaW5lCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgbXkgJGlfb3BlbmluZ19taW51cyA9ICRzZWxmLT5maW5kX3Rva2VuX3N0YXJ0aW5nX2xpc3QoJGlfb3BlbmluZ19wYXJlbik7CiAgICAgICAgcmV0dXJuCiAgICAgICAgICB1bmxlc3MgJHNlbGYtPmV4Y2Vzc19saW5lX2xlbmd0aCggJGlfb3BlbmluZ19taW51cywgJGlfY2xvc2luZ19wYXJlbiApCiAgICAgICAgICA+IDA7CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBOb3cgd2Uga25vdyB0aGF0IHRoaXMgYmxvY2sgc3BhbnMgbXVsdGlwbGUgbGluZXM7IHdlIGhhdmUgdG8gc2V0CiAgICAgICAgIyBhdCBsZWFzdCBvbmUgYnJlYWtwb2ludCAtLSByZWFsIG9yIGZha2UgLS0gYXMgYSBzaWduYWwgdG8gYnJlYWsKICAgICAgICAjIG9wZW4gYW55IG91dGVyIGNvbnRhaW5lcnMuCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBzZXRfZmFrZV9icmVha3BvaW50KCk7CgogICAgICAgICMgYmUgc3VyZSB3ZSBkbyBub3QgZXh0ZW5kIGJleW9uZCB0aGUgY3VycmVudCBsaXN0IGxlbmd0aAogICAgICAgIGlmICggJGlfZWZmZWN0aXZlX2xhc3RfY29tbWEgPj0gJG1heF9pbmRleF90b19nbyApIHsKICAgICAgICAgICAgJGlfZWZmZWN0aXZlX2xhc3RfY29tbWEgPSAkbWF4X2luZGV4X3RvX2dvIC0gMTsKICAgICAgICB9CgogICAgICAgICMgU2V0IGEgZmxhZyBpbmRpY2F0aW5nIGlmIHdlIG5lZWQgdG8gYnJlYWsgb3BlbiB0byBrZWVwIC1scAogICAgICAgICMgaXRlbXMgYWxpZ25lZC4gIFRoaXMgaXMgbmVjZXNzYXJ5IGlmIGFueSBvZiB0aGUgbGlzdCB0ZXJtcwogICAgICAgICMgZXhjZWVkcyB0aGUgYXZhaWxhYmxlIHNwYWNlIGFmdGVyIHRoZSAnKCcuCiAgICAgICAgbXkgJG5lZWRfbHBfYnJlYWtfb3BlbiA9ICRtdXN0X2JyZWFrX29wZW47CiAgICAgICAgaWYgKCAkck9wdHNfbGluZV91cF9wYXJlbnRoZXNlcyAmJiAhJG11c3RfYnJlYWtfb3BlbiApIHsKICAgICAgICAgICAgbXkgJGNvbHVtbnNfaWZfdW5icm9rZW4gPQogICAgICAgICAgICAgICRtYXhpbXVtX2xpbmVfbGVuZ3RoWyAkbGV2ZWxzX3RvX2dvWyRpX29wZW5pbmdfbWludXNdIF0gLQogICAgICAgICAgICAgIHRvdGFsX2xpbmVfbGVuZ3RoKCAkaV9vcGVuaW5nX21pbnVzLCAkaV9vcGVuaW5nX3BhcmVuICk7CiAgICAgICAgICAgICRuZWVkX2xwX2JyZWFrX29wZW4gPQogICAgICAgICAgICAgICAgICggJG1heF9sZW5ndGhbMF0gPiAkY29sdW1uc19pZl91bmJyb2tlbiApCiAgICAgICAgICAgICAgfHwgKCAkbWF4X2xlbmd0aFsxXSA+ICRjb2x1bW5zX2lmX3VuYnJva2VuICkKICAgICAgICAgICAgICB8fCAoICRmaXJzdF90ZXJtX2xlbmd0aCA+ICRjb2x1bW5zX2lmX3VuYnJva2VuICk7CiAgICAgICAgfQoKICAgICAgICAjIFNwZWNpZnkgaWYgdGhlIGxpc3QgbXVzdCBoYXZlIGFuIGV2ZW4gbnVtYmVyIG9mIGZpZWxkcyBvciBub3QuCiAgICAgICAgIyBJdCBpcyBnZW5lcmFsbHkgc2FmZXN0IHRvIGFzc3VtZSBhbiBldmVuIG51bWJlciwgYmVjYXVzZSB0aGUKICAgICAgICAjIGxpc3QgaXRlbXMgbWlnaHQgYmUgYSBoYXNoIGxpc3QuICBCdXQgaWYgd2UgY2FuIGJlIHN1cmUgdGhhdAogICAgICAgICMgaXQgaXMgbm90IGEgaGFzaCwgdGhlbiB3ZSBjYW4gYWxsb3cgYW4gb2RkIG51bWJlciBmb3IgbW9yZQogICAgICAgICMgZmxleGliaWxpdHkuCiAgICAgICAgbXkgJG9kZF9vcl9ldmVuID0gMjsgICAgIyAxID0gb2RkIGZpZWxkIGNvdW50IG9rLCAyID0gd2FudCBldmVuIGNvdW50CgogICAgICAgIGlmICggICAkaWRlbnRpZmllcl9jb3VudCA+PSAkaXRlbV9jb3VudCAtIDEKICAgICAgICAgICAgfHwgJGlzX2Fzc2lnbm1lbnR7JG5leHRfbm9uYmxhbmtfdHlwZX0KICAgICAgICAgICAgfHwgKCAkbGlzdF90eXBlICYmICRsaXN0X3R5cGUgbmUgJz0+JyAmJiAkbGlzdF90eXBlICF+IC9eW1w6XD9dJC8gKQogICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJG9kZF9vcl9ldmVuID0gMTsKICAgICAgICB9CgogICAgICAgICMgZG8gd2UgaGF2ZSBhIGxvbmcgZmlyc3QgdGVybSB3aGljaCBzaG91bGQgYmUKICAgICAgICAjIGxlZnQgb24gYSBsaW5lIGJ5IGl0c2VsZj8KICAgICAgICBteSAkdXNlX3NlcGFyYXRlX2ZpcnN0X3Rlcm0gPSAoCiAgICAgICAgICAgICRvZGRfb3JfZXZlbiA9PSAxICAgICAgICAgICAjIG9ubHkgaWYgd2UgY2FuIHVzZSAxIGZpZWxkL2xpbmUKICAgICAgICAgICAgICAmJiAkaXRlbV9jb3VudCA+IDMgICAgICAgICMgbmVlZCBzZXZlcmFsIGl0ZW1zCiAgICAgICAgICAgICAgJiYgJGZpcnN0X3Rlcm1fbGVuZ3RoID4KICAgICAgICAgICAgICAyICogJG1heF9sZW5ndGhbMF0gLSAyICAgICMgbmVlZCBsb25nIGZpcnN0IHRlcm0KICAgICAgICAgICAgICAmJiAkZmlyc3RfdGVybV9sZW5ndGggPgogICAgICAgICAgICAgIDIgKiAkbWF4X2xlbmd0aFsxXSAtIDIgICAgIyBuZWVkIGxvbmcgZmlyc3QgdGVybQogICAgICAgICk7CgogICAgICAgICMgb3IgZG8gd2Uga25vdyBmcm9tIHRoZSB0eXBlIG9mIGxpc3QgdGhhdCB0aGUgZmlyc3QgdGVybSBzaG91bGQKICAgICAgICAjIGJlIHBsYWNlZCBhbG9uZT8KICAgICAgICBpZiAoICEkdXNlX3NlcGFyYXRlX2ZpcnN0X3Rlcm0gKSB7CiAgICAgICAgICAgIGlmICggJGlzX2tleXdvcmRfd2l0aF9zcGVjaWFsX2xlYWRpbmdfdGVybXskbGlzdF90eXBlfSApIHsKICAgICAgICAgICAgICAgICR1c2Vfc2VwYXJhdGVfZmlyc3RfdGVybSA9IDE7CgogICAgICAgICAgICAgICAgIyBzaG91bGQgdGhlIGNvbnRhaW5lciBiZSBicm9rZW4gb3Blbj8KICAgICAgICAgICAgICAgIGlmICggJGl0ZW1fY291bnQgPCAzICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJGlfZmlyc3RfY29tbWEgLSAkaV9vcGVuaW5nX3BhcmVuIDwgNCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHskcmRvX25vdF9icmVha19hcGFydH0gPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICgkZmlyc3RfdGVybV9sZW5ndGggPCAyMAogICAgICAgICAgICAgICAgICAgICYmICRpX2ZpcnN0X2NvbW1hIC0gJGlfb3BlbmluZ19wYXJlbiA8IDQgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG15ICRjb2x1bW5zID0gdGFibGVfY29sdW1uc19hdmFpbGFibGUoJGlfZmlyc3RfY29tbWEpOwogICAgICAgICAgICAgICAgICAgIGlmICggJGZpcnN0X3Rlcm1fbGVuZ3RoIDwgJGNvbHVtbnMgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR7JHJkb19ub3RfYnJlYWtfYXBhcnR9ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgaWYgc28sCiAgICAgICAgaWYgKCR1c2Vfc2VwYXJhdGVfZmlyc3RfdGVybSkgewoKICAgICAgICAgICAgIyAuLnNldCBhIGJyZWFrIGFuZCB1cGRhdGUgc3RhcnRpbmcgdmFsdWVzCiAgICAgICAgICAgICR1c2Vfc2VwYXJhdGVfZmlyc3RfdGVybSA9IDE7CiAgICAgICAgICAgICRzZWxmLT5zZXRfZm9yY2VkX2JyZWFrcG9pbnQoJGlfZmlyc3RfY29tbWEpOwogICAgICAgICAgICAkaV9vcGVuaW5nX3BhcmVuID0gJGlfZmlyc3RfY29tbWE7CiAgICAgICAgICAgICRpX2ZpcnN0X2NvbW1hICAgPSAkcmNvbW1hX2luZGV4LT5bMV07CiAgICAgICAgICAgICRpdGVtX2NvdW50LS07CiAgICAgICAgICAgIHJldHVybiBpZiAkY29tbWFfY291bnQgPT0gMTsKICAgICAgICAgICAgc2hpZnQgQGl0ZW1fbGVuZ3RoczsKICAgICAgICAgICAgc2hpZnQgQGlfdGVybV9iZWdpbjsKICAgICAgICAgICAgc2hpZnQgQGlfdGVybV9lbmQ7CiAgICAgICAgICAgIHNoaWZ0IEBpX3Rlcm1fY29tbWE7CiAgICAgICAgfQoKICAgICAgICAjIGlmIG5vdCwgdXBkYXRlIHRoZSBtZXRyaWNzIHRvIGluY2x1ZGUgdGhlIGZpcnN0IHRlcm0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaWYgKCAkZmlyc3RfdGVybV9sZW5ndGggPiAkbWF4X2xlbmd0aFswXSApIHsKICAgICAgICAgICAgICAgICRtYXhfbGVuZ3RoWzBdID0gJGZpcnN0X3Rlcm1fbGVuZ3RoOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIEZpZWxkIHdpZHRoIHBhcmFtZXRlcnMKICAgICAgICBteSAkcGFpcl93aWR0aCA9ICggJG1heF9sZW5ndGhbMF0gKyAkbWF4X2xlbmd0aFsxXSApOwogICAgICAgIG15ICRtYXhfd2lkdGggPQogICAgICAgICAgKCAkbWF4X2xlbmd0aFswXSA+ICRtYXhfbGVuZ3RoWzFdICkgPyAkbWF4X2xlbmd0aFswXSA6ICRtYXhfbGVuZ3RoWzFdOwoKICAgICAgICAjIE51bWJlciBvZiBmcmVlIGNvbHVtbnMgYWNyb3NzIHRoZSBwYWdlIHdpZHRoIGZvciBsYXlpbmcgb3V0IHRhYmxlcwogICAgICAgIG15ICRjb2x1bW5zID0gdGFibGVfY29sdW1uc19hdmFpbGFibGUoJGlfZmlyc3RfY29tbWEpOwoKICAgICAgICAjIEVzdGltYXRlZCBtYXhpbXVtIG51bWJlciBvZiBmaWVsZHMgd2hpY2ggZml0IHRoaXMgc3BhY2UKICAgICAgICAjIFRoaXMgd2lsbCBiZSBvdXIgZmlyc3QgZ3Vlc3MKICAgICAgICBteSAkbnVtYmVyX29mX2ZpZWxkc19tYXggPQogICAgICAgICAgbWF4aW11bV9udW1iZXJfb2ZfZmllbGRzKCAkY29sdW1ucywgJG9kZF9vcl9ldmVuLCAkbWF4X3dpZHRoLAogICAgICAgICAgICAkcGFpcl93aWR0aCApOwogICAgICAgIG15ICRudW1iZXJfb2ZfZmllbGRzID0gJG51bWJlcl9vZl9maWVsZHNfbWF4OwoKICAgICAgICAjIEZpbmQgdGhlIGJlc3QtbG9va2luZyBudW1iZXIgb2YgZmllbGRzCiAgICAgICAgIyBhbmQgbWFrZSB0aGlzIG91ciBzZWNvbmQgZ3Vlc3MgaWYgcG9zc2libGUKICAgICAgICBteSAoICRudW1iZXJfb2ZfZmllbGRzX2Jlc3QsICRyaV9yYWdnZWRfYnJlYWtfbGlzdCwKICAgICAgICAgICAgJG5ld19pZGVudGlmaWVyX2NvdW50ICkKICAgICAgICAgID0gJHNlbGYtPnN0dWR5X2xpc3RfY29tcGxleGl0eSggXEBpX3Rlcm1fYmVnaW4sIFxAaV90ZXJtX2VuZCwKICAgICAgICAgICAgXEBpdGVtX2xlbmd0aHMsICRtYXhfd2lkdGggKTsKCiAgICAgICAgaWYgKCAgICRudW1iZXJfb2ZfZmllbGRzX2Jlc3QgIT0gMAogICAgICAgICAgICAmJiAkbnVtYmVyX29mX2ZpZWxkc19iZXN0IDwgJG51bWJlcl9vZl9maWVsZHNfbWF4ICkKICAgICAgICB7CiAgICAgICAgICAgICRudW1iZXJfb2ZfZmllbGRzID0gJG51bWJlcl9vZl9maWVsZHNfYmVzdDsKICAgICAgICB9CgogICAgICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgSWYgd2UgYXJlIGNyb3dkZWQgYW5kIHRoZSAtbHAgb3B0aW9uIGlzIGJlaW5nIHVzZWQsIHRyeSB0bwogICAgICAgICMgdW5kbyBzb21lIGluZGVudGF0aW9uCiAgICAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgaWYgKAogICAgICAgICAgICAkck9wdHNfbGluZV91cF9wYXJlbnRoZXNlcwogICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAkbnVtYmVyX29mX2ZpZWxkcyA9PSAwCiAgICAgICAgICAgICAgICB8fCAoICAgJG51bWJlcl9vZl9maWVsZHMgPT0gMQogICAgICAgICAgICAgICAgICAgICYmICRudW1iZXJfb2ZfZmllbGRzICE9ICRudW1iZXJfb2ZfZmllbGRzX2Jlc3QgKQogICAgICAgICAgICApCiAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkYXZhaWxhYmxlX3NwYWNlcyA9CiAgICAgICAgICAgICAgJHNlbGYtPmdldF9hdmFpbGFibGVfc3BhY2VzX3RvX2dvKCRpX2ZpcnN0X2NvbW1hKTsKICAgICAgICAgICAgaWYgKCAkYXZhaWxhYmxlX3NwYWNlcyA+IDAgKSB7CgogICAgICAgICAgICAgICAgbXkgJHNwYWNlc193YW50ZWQgPSAkbWF4X3dpZHRoIC0gJGNvbHVtbnM7ICAgICMgZm9yIDEgZmllbGQKCiAgICAgICAgICAgICAgICBpZiAoICRudW1iZXJfb2ZfZmllbGRzX2Jlc3QgPT0gMCApIHsKICAgICAgICAgICAgICAgICAgICAkbnVtYmVyX29mX2ZpZWxkc19iZXN0ID0KICAgICAgICAgICAgICAgICAgICAgIGdldF9tYXhpbXVtX2ZpZWxkc193YW50ZWQoIFxAaXRlbV9sZW5ndGhzICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAkbnVtYmVyX29mX2ZpZWxkc19iZXN0ICE9IDEgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJHNwYWNlc193YW50ZWRfMiA9CiAgICAgICAgICAgICAgICAgICAgICAxICsgJHBhaXJfd2lkdGggLSAkY29sdW1uczsgICAgIyBmb3IgMiBmaWVsZHMKICAgICAgICAgICAgICAgICAgICBpZiAoICRhdmFpbGFibGVfc3BhY2VzID4gJHNwYWNlc193YW50ZWRfMiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNwYWNlc193YW50ZWQgPSAkc3BhY2VzX3dhbnRlZF8yOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICRzcGFjZXNfd2FudGVkID4gMCApIHsKICAgICAgICAgICAgICAgICAgICBteSAkZGVsZXRlZF9zcGFjZXMgPQogICAgICAgICAgICAgICAgICAgICAgJHNlbGYtPnJlZHVjZV9scF9pbmRlbnRhdGlvbiggJGlfZmlyc3RfY29tbWEsCiAgICAgICAgICAgICAgICAgICAgICAgICRzcGFjZXNfd2FudGVkICk7CgogICAgICAgICAgICAgICAgICAgICMgcmVkbyB0aGUgbWF0aAogICAgICAgICAgICAgICAgICAgIGlmICggJGRlbGV0ZWRfc3BhY2VzID4gMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbHVtbnMgPSB0YWJsZV9jb2x1bW5zX2F2YWlsYWJsZSgkaV9maXJzdF9jb21tYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRudW1iZXJfb2ZfZmllbGRzX21heCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4aW11bV9udW1iZXJfb2ZfZmllbGRzKCAkY29sdW1ucywgJG9kZF9vcl9ldmVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1heF93aWR0aCwgJHBhaXJfd2lkdGggKTsKICAgICAgICAgICAgICAgICAgICAgICAgJG51bWJlcl9vZl9maWVsZHMgPSAkbnVtYmVyX29mX2ZpZWxkc19tYXg7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICAgJG51bWJlcl9vZl9maWVsZHNfYmVzdCA9PSAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkbnVtYmVyX29mX2ZpZWxkcyA+PSAxICkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG51bWJlcl9vZl9maWVsZHMgPSAkbnVtYmVyX29mX2ZpZWxkc19iZXN0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHRyeSBmb3Igb25lIGNvbHVtbiBpZiB0d28gd29uJ3Qgd29yawogICAgICAgIGlmICggJG51bWJlcl9vZl9maWVsZHMgPD0gMCApIHsKICAgICAgICAgICAgJG51bWJlcl9vZl9maWVsZHMgPSBpbnQoICRjb2x1bW5zIC8gJG1heF93aWR0aCApOwogICAgICAgIH0KCiAgICAgICAgIyBUaGUgdXNlciBjYW4gcGxhY2UgYW4gdXBwZXIgYm91bmQgb24gdGhlIG51bWJlciBvZiBmaWVsZHMsCiAgICAgICAgIyB3aGljaCBjYW4gYmUgdXNlZnVsIGZvciBkb2luZyBtYWludGVuYW5jZSBvbiB0YWJsZXMKICAgICAgICBpZiAoICAgJHJPcHRzX21heGltdW1fZmllbGRzX3Blcl90YWJsZQogICAgICAgICAgICAmJiAkbnVtYmVyX29mX2ZpZWxkcyA+ICRyT3B0c19tYXhpbXVtX2ZpZWxkc19wZXJfdGFibGUgKQogICAgICAgIHsKICAgICAgICAgICAgJG51bWJlcl9vZl9maWVsZHMgPSAkck9wdHNfbWF4aW11bV9maWVsZHNfcGVyX3RhYmxlOwogICAgICAgIH0KCiAgICAgICAgIyBIb3cgbWFueSBjb2x1bW5zIChjaGFyYWN0ZXJzKSBhbmQgbGluZXMgd291bGQgdGhpcyBjb250YWluZXIgdGFrZQogICAgICAgICMgaWYgbm8gYWRkaXRpb25hbCB3aGl0ZXNwYWNlIHdlcmUgYWRkZWQ/CiAgICAgICAgbXkgJHBhY2tlZF9jb2x1bW5zID0gdG9rZW5fc2VxdWVuY2VfbGVuZ3RoKCAkaV9vcGVuaW5nX3BhcmVuICsgMSwKICAgICAgICAgICAgJGlfZWZmZWN0aXZlX2xhc3RfY29tbWEgKyAxICk7CiAgICAgICAgaWYgKCAkY29sdW1ucyA8PSAwICkgeyAkY29sdW1ucyA9IDEgfSAgICAjIGF2b2lkIGRpdmlkZSBieSB6ZXJvCiAgICAgICAgbXkgJHBhY2tlZF9saW5lcyA9IDEgKyBpbnQoICRwYWNrZWRfY29sdW1ucyAvICRjb2x1bW5zICk7CgogICAgICAgICMgYXJlIHdlIGFuIGl0ZW0gY29udGFpbmVkIGluIGFuIG91dGVyIGxpc3Q/CiAgICAgICAgbXkgJGluX2hpZXJhcmNoaWNhbF9saXN0ID0gJG5leHRfbm9uYmxhbmtfdHlwZSA9fiAvXltcfVwsXSQvOwoKICAgICAgICBpZiAoICRudW1iZXJfb2ZfZmllbGRzIDw9IDAgKSB7CgojICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojICAgICAgICAgIyBXZSdyZSBpbiB0cm91YmxlLiAgV2UgY2FuJ3QgZmluZCBhIHNpbmdsZSBmaWVsZCB3aWR0aCB0aGF0IHdvcmtzLgojICAgICAgICAgIyBUaGVyZSBpcyBubyBzaW1wbGUgYW5zd2VyIGhlcmU7IHdlIG1heSBoYXZlIGEgc2luZ2xlIGxvbmcgbGlzdAojICAgICAgICAgIyBpdGVtLCBvciBtYW55LgojICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgICAgICAgICBJbiBtYW55IGNhc2VzLCBpdCBtYXkgYmUgYmVzdCB0byBub3QgZm9yY2UgYSBicmVhayBpZiB0aGVyZSBpcyBqdXN0IG9uZQojICAgICAgICAgY29tbWEsIGJlY2F1c2UgdGhlIHN0YW5kYXJkIGNvbnRpbnVhdGlvbiBicmVhayBsb2dpYyB3aWxsIGRvIGEgYmV0dGVyCiMgICAgICAgICBqb2Igd2l0aG91dCBpdC4KIwojICAgICAgICAgSW4gdGhlIGNvbW1vbiBjYXNlIHRoYXQgYWxsIGJ1dCBvbmUgb2YgdGhlIHRlcm1zIGNhbiBmaXQKIyAgICAgICAgIG9uIGEgc2luZ2xlIGxpbmUsIGl0IG1heSBsb29rIGJldHRlciBub3QgdG8gYnJlYWsgb3BlbiB0aGUKIyAgICAgICAgIGNvbnRhaW5pbmcgcGFyZW5zLiAgQ29uc2lkZXIsIGZvciBleGFtcGxlCiMKIyAgICAgICAgICAgICAkY29sb3IgPQojICAgICAgICAgICAgICAgam9pbiAoICcvJywKIyAgICAgICAgICAgICAgICAgc29ydCB7ICRjb2xvcl92YWx1ZXskOjphfSA8PT4gJGNvbG9yX3ZhbHVleyQ6OmJ9OyB9CiMgICAgICAgICAgICAgICAgIGtleXMgJWNvbG9ycyApOwojCiMgICAgICAgICB3aGljaCB3aWxsIGxvb2sgbGlrZSB0aGlzIHdpdGggdGhlIGNvbnRhaW5lciBicm9rZW46CiMKIyAgICAgICAgICAgICAkY29sb3IgPSBqb2luICgKIyAgICAgICAgICAgICAgICAgJy8nLAojICAgICAgICAgICAgICAgICBzb3J0IHsgJGNvbG9yX3ZhbHVleyQ6OmF9IDw9PiAkY29sb3JfdmFsdWV7JDo6Yn07IH0ga2V5cyAlY29sb3JzCiMgICAgICAgICAgICAgKTsKIwojICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIG9mIHRoaXMgcnVsZSBmb3IgYSBsb25nIGxhc3QgdGVybToKIwojICAgICAgICAgICAgIGxvZ19tZXNzYWdlKCAwLCAyNTYsIDEyOCwKIyAgICAgICAgICAgICAgICAgIk51bWJlciBvZiByb3V0ZXMgaW4gYWRqLVJJQi1pbiB0byBiZSBjb25zaWRlcmVkOiAkcGVlcmNvdW50IiApOwojCiMgICAgICAgICBBbmQgaGVyZSBpcyBhbiBleGFtcGxlIHdpdGggYSBsb25nIGZpcnN0IHRlcm06CiMKIyAgICAgICAgICRzID0gc3ByaW50ZigKIyAiJTJkIHdhbGxjbG9jayBzZWNzICglJGYgdXNyICUkZiBzeXMgKyAlJGYgY3VzciAlJGYgY3N5cyA9ICUkZiBDUFUpIiwKIyAgICAgICAgICAgICAkciwgJHB1LCAkcHMsICRjdSwgJGNzLCAkdHQKIyAgICAgICAgICAgKQojICAgICAgICAgICBpZiAkc3R5bGUgZXEgJ2FsbCc7CgogICAgICAgICAgICBteSAkaV9sYXN0X2NvbW1hID0gJHJjb21tYV9pbmRleC0+WyAkY29tbWFfY291bnQgLSAxIF07CiAgICAgICAgICAgIG15ICRsb25nX2xhc3RfdGVybSA9CiAgICAgICAgICAgICAgJHNlbGYtPmV4Y2Vzc19saW5lX2xlbmd0aCggMCwgJGlfbGFzdF9jb21tYSApIDw9IDA7CiAgICAgICAgICAgIG15ICRsb25nX2ZpcnN0X3Rlcm0gPQogICAgICAgICAgICAgICRzZWxmLT5leGNlc3NfbGluZV9sZW5ndGgoICRpX2ZpcnN0X2NvbW1hICsgMSwgJG1heF9pbmRleF90b19nbyApCiAgICAgICAgICAgICAgPD0gMDsKCiAgICAgICAgICAgICMgYnJlYWsgYXQgZXZlcnkgY29tbWEgLi4uCiAgICAgICAgICAgIGlmICgKCiAgICAgICAgICAgICAgICAjIGlmIHJlcXVlc3RlZCBieSB1c2VyIG9yIGlzIGJlc3QgbG9va2luZwogICAgICAgICAgICAgICAgJG51bWJlcl9vZl9maWVsZHNfYmVzdCA9PSAxCgogICAgICAgICAgICAgICAgIyBvciBpZiB0aGlzIGlzIGEgc3VibGlzdCBvZiBhIGxhcmdlciBsaXN0CiAgICAgICAgICAgICAgICB8fCAkaW5faGllcmFyY2hpY2FsX2xpc3QKCiAgICAgICAgICAgICAgICAjIG9yIGlmIG11bHRpcGxlIGNvbW1hcyBhbmQgd2UgZG9uJ3QgaGF2ZSBhIGxvbmcgZmlyc3Qgb3IgbGFzdAogICAgICAgICAgICAgICAgIyB0ZXJtCiAgICAgICAgICAgICAgICB8fCAoICRjb21tYV9jb3VudCA+IDEKICAgICAgICAgICAgICAgICAgICAmJiAhKCAkbG9uZ19sYXN0X3Rlcm0gfHwgJGxvbmdfZmlyc3RfdGVybSApICkKICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCAwIC4uICRjb21tYV9jb3VudCAtIDEgKSB7CiAgICAgICAgICAgICAgICAgICAgJHNlbGYtPnNldF9mb3JjZWRfYnJlYWtwb2ludCggJHJjb21tYV9pbmRleC0+WyRfXSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICgkbG9uZ19sYXN0X3Rlcm0pIHsKCiAgICAgICAgICAgICAgICAkc2VsZi0+c2V0X2ZvcmNlZF9icmVha3BvaW50KCRpX2xhc3RfY29tbWEpOwogICAgICAgICAgICAgICAgJHskcmRvX25vdF9icmVha19hcGFydH0gPSAxIHVubGVzcyAkbXVzdF9icmVha19vcGVuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICgkbG9uZ19maXJzdF90ZXJtKSB7CgogICAgICAgICAgICAgICAgJHNlbGYtPnNldF9mb3JjZWRfYnJlYWtwb2ludCgkaV9maXJzdF9jb21tYSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBsZXQgYnJlYWtzIGJlIGRlZmluZWQgYnkgZGVmYXVsdCBib25kIHN0cmVuZ3RoIGxvZ2ljCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgV2UgaGF2ZSBhIHRlbnRhdGl2ZSBmaWVsZCBjb3VudCB0aGF0IHNlZW1zIHRvIHdvcmsuCiAgICAgICAgIyBIb3cgbWFueSBsaW5lcyB3aWxsIHRoaXMgcmVxdWlyZT8KICAgICAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgbXkgJGZvcm1hdHRlZF9saW5lcyA9ICRpdGVtX2NvdW50IC8gKCRudW1iZXJfb2ZfZmllbGRzKTsKICAgICAgICBpZiAoICRmb3JtYXR0ZWRfbGluZXMgIT0gaW50ICRmb3JtYXR0ZWRfbGluZXMgKSB7CiAgICAgICAgICAgICRmb3JtYXR0ZWRfbGluZXMgPSAxICsgaW50ICRmb3JtYXR0ZWRfbGluZXM7CiAgICAgICAgfQoKICAgICAgICAjIFNvIGZhciB3ZSd2ZSBiZWVuIHRyeWluZyB0byBmaWxsIG91dCB0byB0aGUgcmlnaHQgbWFyZ2luLiAgQnV0CiAgICAgICAgIyBjb21wYWN0IHRhYmxlcyBhcmUgZWFzaWVyIHRvIHJlYWQsIHNvIGxldCdzIHNlZSBpZiB3ZSBjYW4gdXNlIGZld2VyCiAgICAgICAgIyBmaWVsZHMgd2l0aG91dCBpbmNyZWFzaW5nIHRoZSBudW1iZXIgb2YgbGluZXMuCiAgICAgICAgJG51bWJlcl9vZl9maWVsZHMgPQogICAgICAgICAgY29tcGFjdGlmeV90YWJsZSggJGl0ZW1fY291bnQsICRudW1iZXJfb2ZfZmllbGRzLCAkZm9ybWF0dGVkX2xpbmVzLAogICAgICAgICAgICAkb2RkX29yX2V2ZW4gKTsKCiAgICAgICAgIyBIb3cgbWFueSBzcGFjZXMgYWNyb3NzIHRoZSBwYWdlIHdpbGwgd2UgZmlsbD8KICAgICAgICBteSAkY29sdW1uc19wZXJfbGluZSA9CiAgICAgICAgICAoIGludCAkbnVtYmVyX29mX2ZpZWxkcyAvIDIgKSAqICRwYWlyX3dpZHRoICsKICAgICAgICAgICggJG51bWJlcl9vZl9maWVsZHMgJSAyICkgKiAkbWF4X3dpZHRoOwoKICAgICAgICBteSAkZm9ybWF0dGVkX2NvbHVtbnM7CgogICAgICAgIGlmICggJG51bWJlcl9vZl9maWVsZHMgPiAxICkgewogICAgICAgICAgICAkZm9ybWF0dGVkX2NvbHVtbnMgPQogICAgICAgICAgICAgICggJHBhaXJfd2lkdGggKiAoIGludCggJGl0ZW1fY291bnQgLyAyICkgKSArCiAgICAgICAgICAgICAgICAgICggJGl0ZW1fY291bnQgJSAyICkgKiAkbWF4X3dpZHRoICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkZm9ybWF0dGVkX2NvbHVtbnMgPSAkbWF4X3dpZHRoICogJGl0ZW1fY291bnQ7CiAgICAgICAgfQogICAgICAgIGlmICggJGZvcm1hdHRlZF9jb2x1bW5zIDwgJHBhY2tlZF9jb2x1bW5zICkgewogICAgICAgICAgICAkZm9ybWF0dGVkX2NvbHVtbnMgPSAkcGFja2VkX2NvbHVtbnM7CiAgICAgICAgfQoKICAgICAgICBteSAkdW51c2VkX2NvbHVtbnMgPSAkZm9ybWF0dGVkX2NvbHVtbnMgLSAkcGFja2VkX2NvbHVtbnM7CgogICAgICAgICMgc2V0IHNvbWUgZW1waXJpY2FsIHBhcmFtZXRlcnMgdG8gaGVscCBkZWNpZGUgaWYgd2Ugc2hvdWxkIHRyeSB0bwogICAgICAgICMgYWxpZ247IGhpZ2ggc3BhcnNpdHkgZG9lcyBub3QgbG9vayBnb29kLCBlc3BlY2lhbGx5IHdpdGggZmV3IGxpbmVzCiAgICAgICAgbXkgJHNwYXJzaXR5ID0gKCR1bnVzZWRfY29sdW1ucykgLyAoJGZvcm1hdHRlZF9jb2x1bW5zKTsKICAgICAgICBteSAkbWF4X2FsbG93ZWRfc3BhcnNpdHkgPQogICAgICAgICAgICAoICRpdGVtX2NvdW50IDwgMyApICAgID8gMC4xCiAgICAgICAgICA6ICggJHBhY2tlZF9saW5lcyA9PSAxICkgPyAwLjE1CiAgICAgICAgICA6ICggJHBhY2tlZF9saW5lcyA9PSAyICkgPyAwLjQKICAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgICAgIDAuNzsKCiAgICAgICAgIyBCZWdpbiBjaGVjayBmb3Igc2hvcnRjdXQgbWV0aG9kcywgd2hpY2ggYXZvaWQgdHJlYXRpbmcgYSBsaXN0CiAgICAgICAgIyBhcyBhIHRhYmxlIGZvciByZWxhdGl2ZWx5IHNtYWxsIHBhcmVudGhlc2l6ZWQgbGlzdHMuICBUaGVzZQogICAgICAgICMgYXJlIHVzdWFsbHkgZWFzaWVyIHRvIHJlYWQgaWYgbm90IGZvcm1hdHRlZCBhcyB0YWJsZXMuCiAgICAgICAgaWYgKAogICAgICAgICAgICAkcGFja2VkX2xpbmVzIDw9IDIgICAgICAgICAgICAgICAgICAgICMgcHJvYmFibHkgY2FuIGZpdCBpbiAyIGxpbmVzCiAgICAgICAgICAgICYmICRpdGVtX2NvdW50IDwgOSAgICAgICAgICAgICAgICAgICAgIyBkb2Vzbid0IGhhdmUgdG9vIG1hbnkgaXRlbXMKICAgICAgICAgICAgJiYgJG9wZW5pbmdfZW52aXJvbm1lbnQgZXEgJ0JMT0NLJyAgICAjIG5vdCBhIHN1Yi1jb250YWluZXIKICAgICAgICAgICAgJiYgJG9wZW5pbmdfdG9rZW4gZXEgJygnICAgICAgICAgICAgICAjIGlzIHBhcmVuIGxpc3QKICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICAjIFNob3J0Y3V0IG1ldGhvZCAxOiBmb3IgLWxwIGFuZCBqdXN0IG9uZSBjb21tYToKICAgICAgICAgICAgIyBUaGlzIGlzIGEgbm8tYnJhaW5lciwganVzdCBicmVhayBhdCB0aGUgY29tbWEuCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRyT3B0c19saW5lX3VwX3BhcmVudGhlc2VzICAgICMgLWxwCiAgICAgICAgICAgICAgICAmJiAkaXRlbV9jb3VudCA9PSAyICAgICAgICAgICAjIHR3byBpdGVtcywgb25lIGNvbW1hCiAgICAgICAgICAgICAgICAmJiAhJG11c3RfYnJlYWtfb3BlbgogICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbXkgJGlfYnJlYWsgPSAkcmNvbW1hX2luZGV4LT5bMF07CiAgICAgICAgICAgICAgICAkc2VsZi0+c2V0X2ZvcmNlZF9icmVha3BvaW50KCRpX2JyZWFrKTsKICAgICAgICAgICAgICAgICR7JHJkb19ub3RfYnJlYWtfYXBhcnR9ID0gMTsKICAgICAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgbWV0aG9kIDIgaXMgZm9yIG1vc3Qgc21hbGwgcmFnZ2VkIGxpc3RzIHdoaWNoIG1pZ2h0IGxvb2sKICAgICAgICAgICAgIyBiZXN0IGlmIG5vdCBkaXNwbGF5ZWQgYXMgYSB0YWJsZS4KICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgKCAkbnVtYmVyX29mX2ZpZWxkcyA9PSAyICYmICRpdGVtX2NvdW50ID09IDMgKQogICAgICAgICAgICAgICAgfHwgKAogICAgICAgICAgICAgICAgICAgICRuZXdfaWRlbnRpZmllcl9jb3VudCA+IDAgICAgIyBpc24ndCBhbGwgcXVvdGVzCiAgICAgICAgICAgICAgICAgICAgJiYgJHNwYXJzaXR5ID4gMC4xNQogICAgICAgICAgICAgICAgKSAgICAjIHdvdWxkIGJlIGZhaXJseSBzcGFjZWQgZ2FwcyBpZiBhbGlnbmVkCiAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgbXkgJGJyZWFrX2NvdW50ID0gJHNlbGYtPnNldF9yYWdnZWRfYnJlYWtwb2ludHMoIFxAaV90ZXJtX2NvbW1hLAogICAgICAgICAgICAgICAgICAgICRyaV9yYWdnZWRfYnJlYWtfbGlzdCApOwogICAgICAgICAgICAgICAgKyskYnJlYWtfY291bnQgaWYgKCR1c2Vfc2VwYXJhdGVfZmlyc3RfdGVybSk7CgogICAgICAgICAgICAgICAgIyBOT1RFOiB3ZSBzaG91bGQgcmVhbGx5IHVzZSB0aGUgdHJ1ZSBicmVhayBjb3VudCBoZXJlLAogICAgICAgICAgICAgICAgIyB3aGljaCBjYW4gYmUgZ3JlYXRlciBpZiB0aGVyZSBhcmUgbGFyZ2UgdGVybXMgYW5kCiAgICAgICAgICAgICAgICAjIGxpdHRsZSBzcGFjZSwgYnV0IHVzdWFsbHkgdGhpcyB3aWxsIHdvcmsgd2VsbCBlbm91Z2guCiAgICAgICAgICAgICAgICB1bmxlc3MgKCRtdXN0X2JyZWFrX29wZW4pIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkYnJlYWtfY291bnQgPD0gMSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHskcmRvX25vdF9icmVha19hcGFydH0gPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRyT3B0c19saW5lX3VwX3BhcmVudGhlc2VzICYmICEkbmVlZF9scF9icmVha19vcGVuICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICR7JHJkb19ub3RfYnJlYWtfYXBhcnR9ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgfSAgICAjIGVuZCBzaG9ydGN1dCBtZXRob2RzCgogICAgICAgICMgZGVidWcgc3R1ZmYKICAgICAgICBERUJVR19TUEFSU0UgJiYgZG8gewogICAgICAgICAgICBwcmludCBTVERPVVQKIlNQQVJTRTpjb2xzPSRjb2x1bW5zIGNvbW1hcz0kY29tbWFfY291bnQgaXRlbXM6JGl0ZW1fY291bnQgaWRzPSRpZGVudGlmaWVyX2NvdW50IHBhaXJ3aWR0aD0kcGFpcl93aWR0aCBmaWVsZHM9JG51bWJlcl9vZl9maWVsZHMgbGluZXMgcGFja2VkOiAkcGFja2VkX2xpbmVzIHBhY2tlZF9jb2xzPSRwYWNrZWRfY29sdW1ucyBmbXRkOiRmb3JtYXR0ZWRfbGluZXMgY29scyAvbGluZTokY29sdW1uc19wZXJfbGluZSAgdW51c2VkOiR1bnVzZWRfY29sdW1ucyBmbXRkOiRmb3JtYXR0ZWRfY29sdW1ucyBzcGFyc2l0eT0kc3BhcnNpdHkgYWxsb3c9JG1heF9hbGxvd2VkX3NwYXJzaXR5XG4iOwoKICAgICAgICB9OwoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBDb21wb3VuZCBMaXN0IFJ1bGUgMjoKICAgICAgICAjIElmIHRoaXMgbGlzdCBpcyB0b28gbG9uZyBmb3Igb25lIGxpbmUsIGFuZCBpdCBpcyBhbiBpdGVtIG9mIGEKICAgICAgICAjIGxhcmdlciBsaXN0LCB0aGVuIHdlIG11c3QgZm9ybWF0IGl0LCByZWdhcmRsZXNzIG9mIHNwYXJzaXR5CiAgICAgICAgIyAoaWFuLnQpLiAgT25lIHJlYXNvbiB0aGF0IHdlIGhhdmUgdG8gZG8gdGhpcyBpcyB0byB0cmlnZ2VyCiAgICAgICAgIyBDb21wb3VuZCBMaXN0IFJ1bGUgMSwgYWJvdmUsIHdoaWNoIGNhdXNlcyBicmVha3MgYXQgYWxsIGNvbW1hcyBvZgogICAgICAgICMgYWxsIG91dGVyIGxpc3RzLiAgSW4gdGhpcyB3YXksIHRoZSBzdHJ1Y3R1cmUgd2lsbCBiZSBwcm9wZXJseQogICAgICAgICMgZGlzcGxheWVkLgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgIyBEZWNpZGUgaWYgdGhpcyBsaXN0IGlzIHRvbyBsb25nIGZvciBvbmUgbGluZSB1bmxlc3MgYnJva2VuCiAgICAgICAgbXkgJHRvdGFsX2NvbHVtbnMgPSB0YWJsZV9jb2x1bW5zX2F2YWlsYWJsZSgkaV9vcGVuaW5nX3BhcmVuKTsKICAgICAgICBteSAkdG9vX2xvbmcgICAgICA9ICRwYWNrZWRfY29sdW1ucyA+ICR0b3RhbF9jb2x1bW5zOwoKICAgICAgICAjIEZvciBhIHBhcmVuIGxpc3QsIGluY2x1ZGUgdGhlIGxlbmd0aCBvZiB0aGUgdG9rZW4ganVzdCBiZWZvcmUgdGhlCiAgICAgICAgIyAnKCcgYmVjYXVzZSB0aGlzIGlzIGxpa2VseSBhIHN1YiBjYWxsLCBhbmQgd2Ugd291bGQgaGF2ZSB0bwogICAgICAgICMgaW5jbHVkZSB0aGUgc3ViIG5hbWUgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgbGlzdC4gIFRoaXMgaXMgc3RpbGwKICAgICAgICAjIGltcHJlY2lzZSwgYnV0IG5vdCB0b28gYmFkLiAgKHN0ZXZlLnQpCiAgICAgICAgaWYgKCAhJHRvb19sb25nICYmICRpX29wZW5pbmdfcGFyZW4gPiAwICYmICRvcGVuaW5nX3Rva2VuIGVxICcoJyApIHsKCiAgICAgICAgICAgICR0b29fbG9uZyA9ICRzZWxmLT5leGNlc3NfbGluZV9sZW5ndGgoICRpX29wZW5pbmdfbWludXMsCiAgICAgICAgICAgICAgICAkaV9lZmZlY3RpdmVfbGFzdF9jb21tYSArIDEgKSA+IDA7CiAgICAgICAgfQoKICAgICAgICAjIEZJWE1FOiBGb3IgYW4gaXRlbSBhZnRlciBhICc9PicsIHRyeSB0byBpbmNsdWRlIHRoZSBsZW5ndGggb2YgdGhlCiAgICAgICAgIyB0aGluZyBiZWZvcmUgdGhlICc9PicuICBUaGlzIGlzIGNydWRlIGFuZCBzaG91bGQgYmUgaW1wcm92ZWQgYnkKICAgICAgICAjIGFjdHVhbGx5IGxvb2tpbmcgYmFjayB0b2tlbiBieSB0b2tlbi4KICAgICAgICBpZiAoICEkdG9vX2xvbmcgJiYgJGlfb3BlbmluZ19wYXJlbiA+IDAgJiYgJGxpc3RfdHlwZSBlcSAnPT4nICkgewogICAgICAgICAgICBteSAkaV9vcGVuaW5nX21pbnVzID0gJGlfb3BlbmluZ19wYXJlbiAtIDQ7CiAgICAgICAgICAgIGlmICggJGlfb3BlbmluZ19taW51cyA+PSAwICkgewogICAgICAgICAgICAgICAgJHRvb19sb25nID0gJHNlbGYtPmV4Y2Vzc19saW5lX2xlbmd0aCggJGlfb3BlbmluZ19taW51cywKICAgICAgICAgICAgICAgICAgICAkaV9lZmZlY3RpdmVfbGFzdF9jb21tYSArIDEgKSA+IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgQWx3YXlzIGJyZWFrIGxpc3RzIGNvbnRhaW5lZCBpbiAnWycgYW5kICd7JyBpZiB0b28gbG9uZyBmb3IgMSBsaW5lLAogICAgICAgICMgYW5kIGFsd2F5cyBicmVhayBsaXN0cyB3aGljaCBhcmUgdG9vIGxvbmcgYW5kIHBhcnQgb2YgYSBtb3JlIGNvbXBsZXgKICAgICAgICAjIHN0cnVjdHVyZS4KICAgICAgICBteSAkbXVzdF9icmVha19vcGVuX2NvbnRhaW5lciA9ICRtdXN0X2JyZWFrX29wZW4KICAgICAgICAgIHx8ICggJHRvb19sb25nCiAgICAgICAgICAgICYmICggJGluX2hpZXJhcmNoaWNhbF9saXN0IHx8ICRvcGVuaW5nX3Rva2VuIG5lICcoJyApICk7CgojcHJpbnQgIkxJU1RYOiBuZXh0PSRuZXh0X25vbmJsYW5rX3R5cGUgIGF2YWlsIGNvbHM9JGNvbHVtbnMgcGFja2VkPSRwYWNrZWRfY29sdW1ucyBtdXN0IGZvcm1hdCA9ICRtdXN0X2JyZWFrX29wZW5fY29udGFpbmVyIHRvby1sb25nPSR0b29fbG9uZyAgb3BlbmluZz0kb3BlbmluZ190b2tlbiBsaXN0X3R5cGU9JGxpc3RfdHlwZSBmb3JtYXR0ZWRfbGluZXM9JGZvcm1hdHRlZF9saW5lcyAgcGFja2VkPSRwYWNrZWRfbGluZXMgbWF4X3NwYXJzaXR5PSAkbWF4X2FsbG93ZWRfc3BhcnNpdHkgc3BhcnNpdHk9JHNwYXJzaXR5IFxuIjsKCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgVGhlIG1haW4gZGVjaXNpb246CiAgICAgICAgIyBOb3cgZGVjaWRlIGlmIHdlIHdpbGwgYWxpZ24gdGhlIGRhdGEgaW50byBhbGlnbmVkIGNvbHVtbnMuICBEbyBub3QKICAgICAgICAjIGF0dGVtcHQgdG8gYWxpZ24gY29sdW1ucyBpZiB0aGlzIGlzIGEgdGlueSB0YWJsZSBvciBpdCB3b3VsZCBiZQogICAgICAgICMgdG9vIHNwYWNlZC4gIEl0IHNlZW1zIHRoYXQgdGhlIG1vcmUgcGFja2VkIGxpbmVzIHdlIGhhdmUsIHRoZQogICAgICAgICMgc3BhcnNlciB0aGUgbGlzdCB0aGF0IGNhbiBiZSBhbGxvd2VkIGFuZCBzdGlsbCBsb29rIG9rLgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgaWYgKCAgICggJGZvcm1hdHRlZF9saW5lcyA8IDMgJiYgJHBhY2tlZF9saW5lcyA8ICRmb3JtYXR0ZWRfbGluZXMgKQogICAgICAgICAgICB8fCAoICRmb3JtYXR0ZWRfbGluZXMgPCAyICkKICAgICAgICAgICAgfHwgKCAkdW51c2VkX2NvbHVtbnMgPiAkbWF4X2FsbG93ZWRfc3BhcnNpdHkgKiAkZm9ybWF0dGVkX2NvbHVtbnMgKQogICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgIyB0b28gc3BhcnNlOiB3b3VsZCBsb29rIHVnbHkgaWYgYWxpZ25lZCBpbiBhIHRhYmxlOwogICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICAgICAjIHVzZSBvbGQgYnJlYWtwb2ludHMgaWYgdGhpcyBpcyBhICdiaWcnIGxpc3QKICAgICAgICAgICAgIyBGSVhNRTogU2VlIGlmIHRoaXMgaXMgc3RpbGwgbmVjZXNzYXJ5LiBzdWIgc3dlZXBfbGVmdF90b19yaWdodAogICAgICAgICAgICAjIG5vdyBmaXhlcyBhIGxvdCBvZiBwcm9ibGVtcy4KICAgICAgICAgICAgaWYgKCAkcGFja2VkX2xpbmVzID4gMiAmJiAkaXRlbV9jb3VudCA+IDEwICkgewogICAgICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiTGlzdCBzcGFyc2U6IHVzaW5nIG9sZCBicmVha3BvaW50c1xuIik7CiAgICAgICAgICAgICAgICAkc2VsZi0+Y29weV9vbGRfYnJlYWtwb2ludHMoICRpX2ZpcnN0X2NvbW1hLCAkaV9sYXN0X2NvbW1hICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgbGV0IHRoZSBjb250aW51YXRpb24gbG9naWMgaGFuZGxlIGl0IGlmIDIgbGluZXMKICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgbXkgJGJyZWFrX2NvdW50ID0gJHNlbGYtPnNldF9yYWdnZWRfYnJlYWtwb2ludHMoIFxAaV90ZXJtX2NvbW1hLAogICAgICAgICAgICAgICAgICAgICRyaV9yYWdnZWRfYnJlYWtfbGlzdCApOwogICAgICAgICAgICAgICAgKyskYnJlYWtfY291bnQgaWYgKCR1c2Vfc2VwYXJhdGVfZmlyc3RfdGVybSk7CgogICAgICAgICAgICAgICAgdW5sZXNzICgkbXVzdF9icmVha19vcGVuX2NvbnRhaW5lcikgewogICAgICAgICAgICAgICAgICAgIGlmICggJGJyZWFrX2NvdW50IDw9IDEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR7JHJkb19ub3RfYnJlYWtfYXBhcnR9ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkck9wdHNfbGluZV91cF9wYXJlbnRoZXNlcyAmJiAhJG5lZWRfbHBfYnJlYWtfb3BlbiApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkeyRyZG9fbm90X2JyZWFrX2FwYXJ0fSA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIGdvIGFoZWFkIGFuZCBmb3JtYXQgYXMgYSB0YWJsZQogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICAgICAiTGlzdDogYXV0byBmb3JtYXR0aW5nIHdpdGggJG51bWJlcl9vZl9maWVsZHMgZmllbGRzL3Jvd1xuIik7CgogICAgICAgIG15ICRqX2ZpcnN0X2JyZWFrID0KICAgICAgICAgICR1c2Vfc2VwYXJhdGVfZmlyc3RfdGVybSA/ICRudW1iZXJfb2ZfZmllbGRzIDogJG51bWJlcl9vZl9maWVsZHMgLSAxOwoKICAgICAgICBmb3IgKAogICAgICAgICAgICBteSAkaiA9ICRqX2ZpcnN0X2JyZWFrIDsKICAgICAgICAgICAgJGogPCAkY29tbWFfY291bnQgOwogICAgICAgICAgICAkaiArPSAkbnVtYmVyX29mX2ZpZWxkcwogICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJGkgPSAkcmNvbW1hX2luZGV4LT5bJGpdOwogICAgICAgICAgICAkc2VsZi0+c2V0X2ZvcmNlZF9icmVha3BvaW50KCRpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQp9ICMjIGVuZCBjbG9zdXJlIHNldF9jb21tYV9icmVha3BvaW50c19kbwoKc3ViIHN0dWR5X2xpc3RfY29tcGxleGl0eSB7CgogICAgIyBMb29rIGZvciBjb21wbGV4IHRhYmxlcyB3aGljaCBzaG91bGQgYmUgZm9ybWF0dGVkIHdpdGggb25lIHRlcm0gcGVyIGxpbmUuCiAgICAjIFJldHVybnMgdGhlIGZvbGxvd2luZzoKICAgICMKICAgICMgIFxAaV9yYWdnZWRfYnJlYWtfbGlzdCA9IGxpc3Qgb2YgZ29vZCBicmVha3BvaW50cyB0byBhdm9pZCBsaW5lcwogICAgIyAgICB3aGljaCBhcmUgaGFyZCB0byByZWFkCiAgICAjICAkbnVtYmVyX29mX2ZpZWxkc19iZXN0ID0gc3VnZ2VzdGVkIG51bWJlciBvZiBmaWVsZHMgYmFzZWQgb24KICAgICMgICAgY29tcGxleGl0eTsgPSAwIGlmIGFueSBudW1iZXIgbWF5IGJlIHVzZWQuCiAgICAjCiAgICBteSAoICRzZWxmLCAkcmlfdGVybV9iZWdpbiwgJHJpX3Rlcm1fZW5kLCAkcml0ZW1fbGVuZ3RocywgJG1heF93aWR0aCApID0gQF87CiAgICBteSAkaXRlbV9jb3VudCAgICAgICAgICAgID0gQHskcmlfdGVybV9iZWdpbn07CiAgICBteSAkY29tcGxleF9pdGVtX2NvdW50ICAgID0gMDsKICAgIG15ICRudW1iZXJfb2ZfZmllbGRzX2Jlc3QgPSAkck9wdHNfbWF4aW11bV9maWVsZHNfcGVyX3RhYmxlOwogICAgbXkgJGlfbWF4ICAgICAgICAgICAgICAgICA9IEB7JHJpdGVtX2xlbmd0aHN9IC0gMTsKICAgICMjbXkgQGl0ZW1fY29tcGxleGl0eTsKCiAgICBteSAkaV9sYXN0X2xhc3RfYnJlYWsgPSAtMzsKICAgIG15ICRpX2xhc3RfYnJlYWsgICAgICA9IC0yOwogICAgbXkgQGlfcmFnZ2VkX2JyZWFrX2xpc3Q7CgogICAgbXkgJGRlZmluaXRlbHlfY29tcGxleCA9IDMwOwogICAgbXkgJGRlZmluaXRlbHlfc2ltcGxlICA9IDEyOwogICAgbXkgJHF1b3RlX2NvdW50ICAgICAgICA9IDA7CgogICAgZm9yIG15ICRpICggMCAuLiAkaV9tYXggKSB7CiAgICAgICAgbXkgJGliID0gJHJpX3Rlcm1fYmVnaW4tPlskaV07CiAgICAgICAgbXkgJGllID0gJHJpX3Rlcm1fZW5kLT5bJGldOwoKICAgICAgICAjIGRlZmluZSBjb21wbGV4aXR5OiBzdGFydCB3aXRoIHRoZSBhY3R1YWwgdGVybSBsZW5ndGgKICAgICAgICBteSAkd2VpZ2h0ZWRfbGVuZ3RoID0gKCAkcml0ZW1fbGVuZ3Rocy0+WyRpXSAtIDIgKTsKCiAgICAgICAgIyNUQkQ6IGpvaW4gdHlwZXMgaGVyZSBhbmQgY2hlY2sgZm9yIHZhcmlhdGlvbnMKICAgICAgICAjI215ICRzdHI9am9pbiAiIiwgQHRva2Vuc190b19nb1skaWIuLiRpZV07CgogICAgICAgIG15ICRpc19xdW90ZSA9IDA7CiAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bJGliXSA9fiAvXltxUV0kLyApIHsKICAgICAgICAgICAgJGlzX3F1b3RlID0gMTsKICAgICAgICAgICAgJHF1b3RlX2NvdW50Kys7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJHR5cGVzX3RvX2dvWyRpYl0gPX4gL15bd1wtXSQvICkgewogICAgICAgICAgICAkcXVvdGVfY291bnQrKzsKICAgICAgICB9CgogICAgICAgIGlmICggJGliIGVxICRpZSApIHsKICAgICAgICAgICAgaWYgKCAkaXNfcXVvdGUgJiYgJHRva2Vuc190b19nb1skaWJdID1+IC9ccy8gKSB7CiAgICAgICAgICAgICAgICAkY29tcGxleF9pdGVtX2NvdW50Kys7CiAgICAgICAgICAgICAgICAkd2VpZ2h0ZWRfbGVuZ3RoICo9IDI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGlmICggZ3JlcCB7ICRfIGVxICdiJyB9IEB0eXBlc190b19nb1sgJGliIC4uICRpZSBdICkgewogICAgICAgICAgICAgICAgJGNvbXBsZXhfaXRlbV9jb3VudCsrOwogICAgICAgICAgICAgICAgJHdlaWdodGVkX2xlbmd0aCAqPSAyOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggZ3JlcCB7ICRfIGVxICcuLicgfSBAdHlwZXNfdG9fZ29bICRpYiAuLiAkaWUgXSApIHsKICAgICAgICAgICAgICAgICR3ZWlnaHRlZF9sZW5ndGggKz0gNDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhZGQgd2VpZ2h0IGZvciBleHRyYSB0b2tlbnMuCiAgICAgICAgJHdlaWdodGVkX2xlbmd0aCArPSAyICogKCAkaWUgLSAkaWIgKTsKCiMjICAgICAgICBteSAkQlVCID0gam9pbiAnJywgQHRva2Vuc190b19nb1skaWIuLiRpZV07CiMjICAgICAgICBwcmludCAiIyBDT01QTEVYSVRZOiR3ZWlnaHRlZF9sZW5ndGggICAkQlVCXG4iOwoKIyNwdXNoIEBpdGVtX2NvbXBsZXhpdHksICR3ZWlnaHRlZF9sZW5ndGg7CgogICAgICAgICMgbm93IG1hcmsgYSByYWdnZWQgYnJlYWsgYWZ0ZXIgdGhpcyBpdGVtIGl0IGlmIGl0IGlzICdsb25nIGFuZAogICAgICAgICMgY29tcGxleCc6CiAgICAgICAgaWYgKCAkd2VpZ2h0ZWRfbGVuZ3RoID49ICRkZWZpbml0ZWx5X2NvbXBsZXggKSB7CgogICAgICAgICAgICAjIGlmIHdlIGJyb2tlIGFmdGVyIHRoZSBwcmV2aW91cyB0ZXJtCiAgICAgICAgICAgICMgdGhlbiBicmVhayBiZWZvcmUgaXQgdG9vCiAgICAgICAgICAgIGlmICggICAkaV9sYXN0X2JyZWFrID09ICRpIC0gMQogICAgICAgICAgICAgICAgJiYgJGkgPiAxCiAgICAgICAgICAgICAgICAmJiAkaV9sYXN0X2xhc3RfYnJlYWsgIT0gJGkgLSAyICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICMjIEZJWE1FOiBkb24ndCBzdHJhbmQgYSBzbWFsbCB0ZXJtCiAgICAgICAgICAgICAgICBwb3AgQGlfcmFnZ2VkX2JyZWFrX2xpc3Q7CiAgICAgICAgICAgICAgICBwdXNoIEBpX3JhZ2dlZF9icmVha19saXN0LCAkaSAtIDI7CiAgICAgICAgICAgICAgICBwdXNoIEBpX3JhZ2dlZF9icmVha19saXN0LCAkaSAtIDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQGlfcmFnZ2VkX2JyZWFrX2xpc3QsICRpOwogICAgICAgICAgICAkaV9sYXN0X2xhc3RfYnJlYWsgPSAkaV9sYXN0X2JyZWFrOwogICAgICAgICAgICAkaV9sYXN0X2JyZWFrICAgICAgPSAkaTsKICAgICAgICB9CgogICAgICAgICMgZG9uJ3QgYnJlYWsgYmVmb3JlIGEgc21hbGwgbGFzdCB0ZXJtIC0tIGl0IHdpbGwKICAgICAgICAjIG5vdCBsb29rIGdvb2Qgb24gYSBsaW5lIGJ5IGl0c2VsZi4KICAgICAgICBlbHNpZiAoJGkgPT0gJGlfbWF4CiAgICAgICAgICAgICYmICRpX2xhc3RfYnJlYWsgPT0gJGkgLSAxCiAgICAgICAgICAgICYmICR3ZWlnaHRlZF9sZW5ndGggPD0gJGRlZmluaXRlbHlfc2ltcGxlICkKICAgICAgICB7CiAgICAgICAgICAgIHBvcCBAaV9yYWdnZWRfYnJlYWtfbGlzdDsKICAgICAgICB9CiAgICB9CgogICAgbXkgJGlkZW50aWZpZXJfY291bnQgPSAkaV9tYXggKyAxIC0gJHF1b3RlX2NvdW50OwoKICAgICMgTmVlZCBtb3JlIHR1bmluZyBoZXJlLi4KICAgIGlmICggICAkbWF4X3dpZHRoID4gMTIKICAgICAgICAmJiAkY29tcGxleF9pdGVtX2NvdW50ID4gJGl0ZW1fY291bnQgLyAyCiAgICAgICAgJiYgJG51bWJlcl9vZl9maWVsZHNfYmVzdCAhPSAyICkKICAgIHsKICAgICAgICAkbnVtYmVyX29mX2ZpZWxkc19iZXN0ID0gMTsKICAgIH0KCiAgICByZXR1cm4gKCAkbnVtYmVyX29mX2ZpZWxkc19iZXN0LCBcQGlfcmFnZ2VkX2JyZWFrX2xpc3QsICRpZGVudGlmaWVyX2NvdW50ICk7Cn0KCnN1YiBnZXRfbWF4aW11bV9maWVsZHNfd2FudGVkIHsKCiAgICAjIE5vdCBhbGwgdGFibGVzIGxvb2sgZ29vZCB3aXRoIG1vcmUgdGhhbiBvbmUgZmllbGQgb2YgaXRlbXMuCiAgICAjIFRoaXMgcm91dGluZSBsb29rcyBhdCBhIHRhYmxlIGFuZCBkZWNpZGVzIGlmIGl0IHNob3VsZCBiZQogICAgIyBmb3JtYXR0ZWQgd2l0aCBqdXN0IG9uZSBmaWVsZCBvciBub3QuCiAgICAjIFRoaXMgY29kaW5nIGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50LgogICAgbXkgKCRyaXRlbV9sZW5ndGhzKSA9IEBfOwoKICAgIG15ICRudW1iZXJfb2ZfZmllbGRzX2Jlc3QgPSAwOwoKICAgICMgRm9yIGp1c3QgYSBmZXcgaXRlbXMsIHdlIHRlbnRhdGl2ZWx5IGFzc3VtZSBqdXN0IDEgZmllbGQuCiAgICBteSAkaXRlbV9jb3VudCA9IEB7JHJpdGVtX2xlbmd0aHN9OwogICAgaWYgKCAkaXRlbV9jb3VudCA8PSA1ICkgewogICAgICAgICRudW1iZXJfb2ZfZmllbGRzX2Jlc3QgPSAxOwogICAgfQoKICAgICMgRm9yIGxhcmdlciB0YWJsZXMsIGxvb2sgYXQgaXQgYm90aCB3YXlzIGFuZCBzZWUgd2hhdCBsb29rcyBiZXN0CiAgICBlbHNlIHsKCiAgICAgICAgbXkgJGlzX29kZCAgICAgICAgICAgID0gMTsKICAgICAgICBteSBAbWF4X2xlbmd0aCAgICAgICAgPSAoIDAsICAgICAwICk7CiAgICAgICAgbXkgQGxhc3RfbGVuZ3RoXzIgICAgID0gKCB1bmRlZiwgdW5kZWYgKTsKICAgICAgICBteSBAZmlyc3RfbGVuZ3RoXzIgICAgPSAoIHVuZGVmLCB1bmRlZiApOwogICAgICAgIG15ICRsYXN0X2xlbmd0aCAgICAgICA9IHVuZGVmOwogICAgICAgIG15ICR0b3RhbF92YXJpYXRpb25fMSA9IDA7CiAgICAgICAgbXkgJHRvdGFsX3ZhcmlhdGlvbl8yID0gMDsKICAgICAgICBteSBAdG90YWxfdmFyaWF0aW9uXzIgPSAoIDAsIDAgKTsKCiAgICAgICAgZm9yZWFjaCBteSAkaiAoIDAgLi4gJGl0ZW1fY291bnQgLSAxICkgewoKICAgICAgICAgICAgJGlzX29kZCA9IDEgLSAkaXNfb2RkOwogICAgICAgICAgICBteSAkbGVuZ3RoID0gJHJpdGVtX2xlbmd0aHMtPlskal07CiAgICAgICAgICAgIGlmICggJGxlbmd0aCA+ICRtYXhfbGVuZ3RoWyRpc19vZGRdICkgewogICAgICAgICAgICAgICAgJG1heF9sZW5ndGhbJGlzX29kZF0gPSAkbGVuZ3RoOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIGRlZmluZWQoJGxhc3RfbGVuZ3RoKSApIHsKICAgICAgICAgICAgICAgIG15ICRkbCA9IGFicyggJGxlbmd0aCAtICRsYXN0X2xlbmd0aCApOwogICAgICAgICAgICAgICAgJHRvdGFsX3ZhcmlhdGlvbl8xICs9ICRkbDsKICAgICAgICAgICAgfQogICAgICAgICAgICAkbGFzdF9sZW5ndGggPSAkbGVuZ3RoOwoKICAgICAgICAgICAgbXkgJGxsID0gJGxhc3RfbGVuZ3RoXzJbJGlzX29kZF07CiAgICAgICAgICAgIGlmICggZGVmaW5lZCgkbGwpICkgewogICAgICAgICAgICAgICAgbXkgJGRsID0gYWJzKCAkbGVuZ3RoIC0gJGxsICk7CiAgICAgICAgICAgICAgICAkdG90YWxfdmFyaWF0aW9uXzJbJGlzX29kZF0gKz0gJGRsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJGZpcnN0X2xlbmd0aF8yWyRpc19vZGRdID0gJGxlbmd0aDsKICAgICAgICAgICAgfQogICAgICAgICAgICAkbGFzdF9sZW5ndGhfMlskaXNfb2RkXSA9ICRsZW5ndGg7CiAgICAgICAgfQogICAgICAgICR0b3RhbF92YXJpYXRpb25fMiA9ICR0b3RhbF92YXJpYXRpb25fMlswXSArICR0b3RhbF92YXJpYXRpb25fMlsxXTsKCiAgICAgICAgbXkgJGZhY3RvciA9ICggJGl0ZW1fY291bnQgPiAxMCApID8gMSA6ICggJGl0ZW1fY291bnQgPiA1ICkgPyAwLjc1IDogMDsKICAgICAgICB1bmxlc3MgKCAkdG90YWxfdmFyaWF0aW9uXzIgPCAkZmFjdG9yICogJHRvdGFsX3ZhcmlhdGlvbl8xICkgewogICAgICAgICAgICAkbnVtYmVyX29mX2ZpZWxkc19iZXN0ID0gMTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gKCRudW1iZXJfb2ZfZmllbGRzX2Jlc3QpOwp9CgpzdWIgdGFibGVfY29sdW1uc19hdmFpbGFibGUgewogICAgbXkgJGlfZmlyc3RfY29tbWEgPSBzaGlmdDsKICAgIG15ICRjb2x1bW5zID0KICAgICAgJG1heGltdW1fbGluZV9sZW5ndGhbICRsZXZlbHNfdG9fZ29bJGlfZmlyc3RfY29tbWFdIF0gLQogICAgICBsZWFkaW5nX3NwYWNlc190b19nbygkaV9maXJzdF9jb21tYSk7CgogICAgIyBQYXRjaDogdGhlIHZlcnRpY2FsIGZvcm1hdHRlciBkb2VzIG5vdCBsaW5lIHVwIGxpbmVzIHdob3NlIGxlbmd0aHMKICAgICMgZXhhY3RseSBlcXVhbCB0aGUgYXZhaWxhYmxlIGxpbmUgbGVuZ3RoIGJlY2F1c2Ugb2YgYWxsb3dhbmNlcwogICAgIyB0aGF0IG11c3QgYmUgbWFkZSBmb3Igc2lkZSBjb21tZW50cy4gIFRoZXJlZm9yZSwgdGhlIG51bWJlciBvZgogICAgIyBhdmFpbGFibGUgY29sdW1ucyBpcyByZWR1Y2VkIGJ5IDEgY2hhcmFjdGVyLgogICAgJGNvbHVtbnMgLT0gMTsKICAgIHJldHVybiAkY29sdW1uczsKfQoKc3ViIG1heGltdW1fbnVtYmVyX29mX2ZpZWxkcyB7CgogICAgIyBob3cgbWFueSBmaWVsZHMgd2lsbCBmaXQgaW4gdGhlIGF2YWlsYWJsZSBzcGFjZT8KICAgIG15ICggJGNvbHVtbnMsICRvZGRfb3JfZXZlbiwgJG1heF93aWR0aCwgJHBhaXJfd2lkdGggKSA9IEBfOwogICAgbXkgJG1heF9wYWlycyAgICAgICAgPSBpbnQoICRjb2x1bW5zIC8gJHBhaXJfd2lkdGggKTsKICAgIG15ICRudW1iZXJfb2ZfZmllbGRzID0gJG1heF9wYWlycyAqIDI7CiAgICBpZiAoICAgJG9kZF9vcl9ldmVuID09IDEKICAgICAgICAmJiAkbWF4X3BhaXJzICogJHBhaXJfd2lkdGggKyAkbWF4X3dpZHRoIDw9ICRjb2x1bW5zICkKICAgIHsKICAgICAgICAkbnVtYmVyX29mX2ZpZWxkcysrOwogICAgfQogICAgcmV0dXJuICRudW1iZXJfb2ZfZmllbGRzOwp9CgpzdWIgY29tcGFjdGlmeV90YWJsZSB7CgogICAgIyBnaXZlbiBhIHRhYmxlIHdpdGggYSBjZXJ0YWluIG51bWJlciBvZiBmaWVsZHMgYW5kIGEgY2VydGFpbiBudW1iZXIKICAgICMgb2YgbGluZXMsIHNlZSBpZiByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGZpZWxkcyB3aWxsIG1ha2UgaXQgbG9vawogICAgIyBiZXR0ZXIuCiAgICBteSAoICRpdGVtX2NvdW50LCAkbnVtYmVyX29mX2ZpZWxkcywgJGZvcm1hdHRlZF9saW5lcywgJG9kZF9vcl9ldmVuICkgPSBAXzsKICAgIGlmICggJG51bWJlcl9vZl9maWVsZHMgPj0gJG9kZF9vcl9ldmVuICogMiAmJiAkZm9ybWF0dGVkX2xpbmVzID4gMCApIHsKICAgICAgICBteSAkbWluX2ZpZWxkczsKCiAgICAgICAgZm9yICgKICAgICAgICAgICAgJG1pbl9maWVsZHMgPSAkbnVtYmVyX29mX2ZpZWxkcyA7CiAgICAgICAgICAgICRtaW5fZmllbGRzID49ICRvZGRfb3JfZXZlbgogICAgICAgICAgICAmJiAkbWluX2ZpZWxkcyAqICRmb3JtYXR0ZWRfbGluZXMgPj0gJGl0ZW1fY291bnQgOwogICAgICAgICAgICAkbWluX2ZpZWxkcyAtPSAkb2RkX29yX2V2ZW4KICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRudW1iZXJfb2ZfZmllbGRzID0gJG1pbl9maWVsZHM7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuICRudW1iZXJfb2ZfZmllbGRzOwp9CgpzdWIgc2V0X3JhZ2dlZF9icmVha3BvaW50cyB7CgogICAgIyBTZXQgYnJlYWtwb2ludHMgaW4gYSBsaXN0IHRoYXQgY2Fubm90IGJlIGZvcm1hdHRlZCBuaWNlbHkgYXMgYQogICAgIyB0YWJsZS4KICAgIG15ICggJHNlbGYsICRyaV90ZXJtX2NvbW1hLCAkcmlfcmFnZ2VkX2JyZWFrX2xpc3QgKSA9IEBfOwoKICAgIG15ICRicmVha19jb3VudCA9IDA7CiAgICBmb3JlYWNoICggQHskcmlfcmFnZ2VkX2JyZWFrX2xpc3R9ICkgewogICAgICAgIG15ICRqID0gJHJpX3Rlcm1fY29tbWEtPlskX107CiAgICAgICAgaWYgKCRqKSB7CiAgICAgICAgICAgICRzZWxmLT5zZXRfZm9yY2VkX2JyZWFrcG9pbnQoJGopOwogICAgICAgICAgICAkYnJlYWtfY291bnQrKzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gJGJyZWFrX2NvdW50Owp9CgpzdWIgY29weV9vbGRfYnJlYWtwb2ludHMgewogICAgbXkgKCAkc2VsZiwgJGlfZmlyc3RfY29tbWEsICRpX2xhc3RfY29tbWEgKSA9IEBfOwogICAgZm9yIG15ICRpICggJGlfZmlyc3RfY29tbWEgLi4gJGlfbGFzdF9jb21tYSApIHsKICAgICAgICBpZiAoICRvbGRfYnJlYWtwb2ludF90b19nb1skaV0gKSB7CiAgICAgICAgICAgICRzZWxmLT5zZXRfZm9yY2VkX2JyZWFrcG9pbnQoJGkpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybjsKfQoKc3ViIHNldF9ub2JyZWFrcyB7CiAgICBteSAoICRzZWxmLCAkaSwgJGogKSA9IEBfOwogICAgaWYgKCAkaSA+PSAwICYmICRpIDw9ICRqICYmICRqIDw9ICRtYXhfaW5kZXhfdG9fZ28gKSB7CgogICAgICAgIDAgJiYgZG8gewogICAgICAgICAgICBteSAoICRhLCAkYiwgJGMgKSA9IGNhbGxlcigpOwogICAgICAgICAgICBteSAkZm9yY2VkX2JyZWFrcG9pbnRfY291bnQgPSBnZXRfZm9yY2VkX2JyZWFrcG9pbnRfY291bnQoKTsKICAgICAgICAgICAgcHJpbnQgU1RET1VUCiJOT0JSRUFLOiBmb3JjZWRfYnJlYWtwb2ludCAkZm9yY2VkX2JyZWFrcG9pbnRfY291bnQgZnJvbSAkYSAkYyB3aXRoIGk9JGkgbWF4PSRtYXhfaW5kZXhfdG9fZ28gdHlwZT0kdHlwZXNfdG9fZ29bJGldXG4iOwogICAgICAgIH07CgogICAgICAgIEBub2JyZWFrX3RvX2dvWyAkaSAuLiAkaiBdID0gKDEpIHggKCAkaiAtICRpICsgMSApOwogICAgfQoKICAgICMgc2hvdWxkbid0IGhhcHBlbjsgbm9uLWNyaXRpY2FsIGVycm9yCiAgICBlbHNlIHsKICAgICAgICAwICYmIGRvIHsKICAgICAgICAgICAgbXkgKCAkYSwgJGIsICRjICkgPSBjYWxsZXIoKTsKICAgICAgICAgICAgcHJpbnQgU1RET1VUCiAgICAgICAgICAgICAgIk5PQlJFQUsgRVJST1I6IGZyb20gJGEgJGMgd2l0aCBpPSRpIGo9JGogbWF4PSRtYXhfaW5kZXhfdG9fZ29cbiI7CiAgICAgICAgfTsKICAgIH0KICAgIHJldHVybjsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBDT0RFIFNFQ1RJT04gMTI6IENvZGUgZm9yIHNldHRpbmcgaW5kZW50YXRpb24KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnN1YiB0b2tlbl9zZXF1ZW5jZV9sZW5ndGggewoKICAgICMgcmV0dXJuIGxlbmd0aCBvZiB0b2tlbnMgKCRpYmVnIC4uICRpZW5kKSBpbmNsdWRpbmcgJGliZWcgJiAkaWVuZAogICAgIyByZXR1cm5zIDAgaWYgJGliZWcgPiAkaWVuZCAoc2hvdWxkbid0IGhhcHBlbikKICAgIG15ICggJGliZWcsICRpZW5kICkgPSBAXzsKICAgIHJldHVybiAwIGlmICggIWRlZmluZWQoJGllbmQpIHx8ICRpZW5kIDwgMCB8fCAkaWJlZyA+ICRpZW5kICk7CiAgICByZXR1cm4gJHN1bW1lZF9sZW5ndGhzX3RvX2dvWyAkaWVuZCArIDEgXSBpZiAoICRpYmVnIDwgMCApOwogICAgcmV0dXJuICRzdW1tZWRfbGVuZ3Roc190b19nb1sgJGllbmQgKyAxIF0gLSAkc3VtbWVkX2xlbmd0aHNfdG9fZ29bJGliZWddOwp9CgpzdWIgdG90YWxfbGluZV9sZW5ndGggewoKICAgICMgcmV0dXJuIGxlbmd0aCBvZiBhIGxpbmUgb2YgdG9rZW5zICgkaWJlZyAuLiAkaWVuZCkKICAgIG15ICggJGliZWcsICRpZW5kICkgPSBAXzsKCiAgICAjIG9yaWdpbmFsIGNvZGluZzoKICAgICNyZXR1cm4gbGVhZGluZ19zcGFjZXNfdG9fZ28oJGliZWcpICsgdG9rZW5fc2VxdWVuY2VfbGVuZ3RoKCAkaWJlZywgJGllbmQgKTsKCiAgICAjIHRoaXMgaXMgYmFzaWNhbGx5IHN1YiAnbGVhZGluZ19zcGFjZXNfdG9fZ28nOgogICAgbXkgJGluZGVudGF0aW9uID0gJGxlYWRpbmdfc3BhY2VzX3RvX2dvWyRpYmVnXTsKICAgIGlmICggcmVmKCRpbmRlbnRhdGlvbikgKSB7ICRpbmRlbnRhdGlvbiA9ICRpbmRlbnRhdGlvbi0+Z2V0X3NwYWNlcygpIH0KCiAgICByZXR1cm4gJGluZGVudGF0aW9uICsgJHN1bW1lZF9sZW5ndGhzX3RvX2dvWyAkaWVuZCArIDEgXSAtCiAgICAgICRzdW1tZWRfbGVuZ3Roc190b19nb1skaWJlZ107Cn0KCnN1YiBleGNlc3NfbGluZV9sZW5ndGggewoKICAgICMgcmV0dXJuIG51bWJlciBvZiBjaGFyYWN0ZXJzIGJ5IHdoaWNoIGEgbGluZSBvZiB0b2tlbnMgKCRpYmVnLi4kaWVuZCkKICAgICMgZXhjZWVkcyB0aGUgYWxsb3dhYmxlIGxpbmUgbGVuZ3RoLgoKICAgICMgTk9URTogUHJvZmlsaW5nIHNob3dzIHRoYXQgdGhpcyBpcyBhIGNyaXRpY2FsIHJvdXRpbmUgZm9yIGVmZmljaWVuY3kuCiAgICAjIFRoZXJlZm9yZSBJIGhhdmUgZWxpbWluYXRlZCBhZGRpdGlvbmFsIGNhbGxzIHRvIHN1YnMgZnJvbSBpdC4KICAgIG15ICggJHNlbGYsICRpYmVnLCAkaWVuZCwgJGlnbm9yZV9yaWdodF93ZWxkICkgPSBAXzsKCiAgICAjIE9yaWdpbmFsIGV4cHJlc3Npb24gZm9yIGxpbmUgbGVuZ3RoCiAgICAjIyRsZW5ndGggPSBsZWFkaW5nX3NwYWNlc190b19nbygkaWJlZykgKyB0b2tlbl9zZXF1ZW5jZV9sZW5ndGgoICRpYmVnLCAkaWVuZCApOwoKICAgICMgVGhpcyBpcyBiYXNpY2FsbHkgc3ViICdsZWFkaW5nX3NwYWNlc190b19nbyc6CiAgICBteSAkaW5kZW50YXRpb24gPSAkbGVhZGluZ19zcGFjZXNfdG9fZ29bJGliZWddOwogICAgaWYgKCByZWYoJGluZGVudGF0aW9uKSApIHsgJGluZGVudGF0aW9uID0gJGluZGVudGF0aW9uLT5nZXRfc3BhY2VzKCkgfQoKICAgIG15ICRsZW5ndGggPQogICAgICAkaW5kZW50YXRpb24gKwogICAgICAkc3VtbWVkX2xlbmd0aHNfdG9fZ29bICRpZW5kICsgMSBdIC0KICAgICAgJHN1bW1lZF9sZW5ndGhzX3RvX2dvWyRpYmVnXTsKCiAgICAjIEluY2x1ZGUgcmlnaHQgd2VsZCBsZW5ndGhzIHVubGVzcyByZXF1ZXN0ZWQgbm90IHRvLgogICAgaWYgKCAgISRpZ25vcmVfcmlnaHRfd2VsZAogICAgICAgICYmICR0eXBlX3NlcXVlbmNlX3RvX2dvWyRpZW5kXQogICAgICAgICYmICR0b3RhbF93ZWxkX2NvdW50ICkKICAgIHsKICAgICAgICBteSAkd3IgPSAkc2VsZi0+d2VsZF9sZW5fcmlnaHQoICR0eXBlX3NlcXVlbmNlX3RvX2dvWyRpZW5kXSwKICAgICAgICAgICAgJHR5cGVzX3RvX2dvWyRpZW5kXSApOwogICAgICAgICRsZW5ndGggKz0gJHdyOwogICAgfQoKICAgICMgcmV0dXJuIHRoZSBleGNlc3MKICAgIHJldHVybiAkbGVuZ3RoIC0gJG1heGltdW1fbGluZV9sZW5ndGhbICRsZXZlbHNfdG9fZ29bJGliZWddIF07Cn0KCnN1YiBnZXRfc3BhY2VzIHsKCiAgICAjIHJldHVybiB0aGUgbnVtYmVyIG9mIGxlYWRpbmcgc3BhY2VzIGFzc29jaWF0ZWQgd2l0aCBhbiBpbmRlbnRhdGlvbgogICAgIyB2YXJpYWJsZSAkaW5kZW50YXRpb24gaXMgZWl0aGVyIGEgY29uc3RhbnQgbnVtYmVyIG9mIHNwYWNlcyBvciBhbiBvYmplY3QKICAgICMgd2l0aCBhIGdldF9zcGFjZXMgbWV0aG9kLgogICAgbXkgJGluZGVudGF0aW9uID0gc2hpZnQ7CiAgICByZXR1cm4gcmVmKCRpbmRlbnRhdGlvbikgPyAkaW5kZW50YXRpb24tPmdldF9zcGFjZXMoKSA6ICRpbmRlbnRhdGlvbjsKfQoKc3ViIGdldF9yZWNvdmVyYWJsZV9zcGFjZXMgewoKICAgICMgcmV0dXJuIHRoZSBudW1iZXIgb2Ygc3BhY2VzICgrIG1lYW5zIHNoaWZ0IHJpZ2h0LCAtIG1lYW5zIHNoaWZ0IGxlZnQpCiAgICAjIHRoYXQgd2Ugd291bGQgbGlrZSB0byBzaGlmdCBhIGdyb3VwIG9mIGxpbmVzIHdpdGggdGhlIHNhbWUgaW5kZW50YXRpb24KICAgICMgdG8gZ2V0IHRoZW0gdG8gbGluZSB1cCB3aXRoIHRoZWlyIG9wZW5pbmcgcGFyZW5zCiAgICBteSAkaW5kZW50YXRpb24gPSBzaGlmdDsKICAgIHJldHVybiByZWYoJGluZGVudGF0aW9uKSA/ICRpbmRlbnRhdGlvbi0+Z2V0X3JlY292ZXJhYmxlX3NwYWNlcygpIDogMDsKfQoKc3ViIGdldF9hdmFpbGFibGVfc3BhY2VzX3RvX2dvIHsKCiAgICBteSAoICRzZWxmLCAkaWkgKSA9IEBfOwogICAgbXkgJGl0ZW0gPSAkbGVhZGluZ19zcGFjZXNfdG9fZ29bJGlpXTsKCiAgICAjIHJldHVybiB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSBsZWFkaW5nIHNwYWNlcyBhc3NvY2lhdGVkIHdpdGggYW4KICAgICMgaW5kZW50YXRpb24gdmFyaWFibGUuICAkaW5kZW50YXRpb24gaXMgZWl0aGVyIGEgY29uc3RhbnQgbnVtYmVyIG9mCiAgICAjIHNwYWNlcyBvciBhbiBvYmplY3Qgd2l0aCBhIGdldF9hdmFpbGFibGVfc3BhY2VzIG1ldGhvZC4KICAgIHJldHVybiByZWYoJGl0ZW0pID8gJGl0ZW0tPmdldF9hdmFpbGFibGVfc3BhY2VzKCkgOiAwOwp9Cgp7ICAgICMjIGJlZ2luIGNsb3N1cmUgc2V0X2xlYWRpbmdfd2hpdGVzcGFjZSAoZm9yIC1scCBpbmRlbnRhdGlvbikKCiAgICAjIFRoZXNlIHJvdXRpbmVzIGFyZSBjYWxsZWQgYmF0Y2gtYnktYmF0Y2ggdG8gaGFuZGxlIHRoZSAtbHAgaW5kZW50YXRpb24KICAgICMgb3B0aW9uLiAgVGhlIGNvZGluZyBpcyByYXRoZXIgY29tcGxleCwgYnV0IGlzIG9ubHkgZm9yIC1scC4KCiAgICBteSAkZ251X3Bvc2l0aW9uX3ByZWRpY3RvcjsKICAgIG15ICRnbnVfc2VxdWVuY2VfbnVtYmVyOwogICAgbXkgJGxpbmVfc3RhcnRfaW5kZXhfdG9fZ287CiAgICBteSAkbWF4X2dudV9pdGVtX2luZGV4OwogICAgbXkgJG1heF9nbnVfc3RhY2tfaW5kZXg7CiAgICBteSAlZ251X2Fycm93X2NvdW50OwogICAgbXkgJWdudV9jb21tYV9jb3VudDsKICAgIG15ICVsYXN0X2dudV9lcXVhbHM7CiAgICBteSBAZ251X2l0ZW1fbGlzdDsKICAgIG15IEBnbnVfc3RhY2s7CgogICAgc3ViIGluaXRpYWxpemVfZ251X3ZhcnMgewoKICAgICAgICAjIGluaXRpYWxpemUgZ251IHZhcmlhYmxlcyBmb3IgYSBuZXcgZmlsZTsKICAgICAgICAjIG11c3QgYmUgY2FsbGVkIG9uY2UgYXQgdGhlIHN0YXJ0IG9mIGEgbmV3IGZpbGUuCgogICAgICAgICMgaW5pdGlhbGl6ZSB0aGUgbGVhZGluZyB3aGl0ZXNwYWNlIHN0YWNrIHRvIG5lZ2F0aXZlIGxldmVscwogICAgICAgICMgc28gdGhhdCB3ZSBjYW4gbmV2ZXIgcnVuIG9mZiB0aGUgZW5kIG9mIHRoZSBzdGFjawogICAgICAgICRnbnVfcG9zaXRpb25fcHJlZGljdG9yID0KICAgICAgICAgIDA7ICAgICMgd2hlcmUgdGhlIGN1cnJlbnQgdG9rZW4gaXMgcHJlZGljdGVkIHRvIGJlCiAgICAgICAgJG1heF9nbnVfc3RhY2tfaW5kZXggPSAwOwogICAgICAgICRtYXhfZ251X2l0ZW1faW5kZXggID0gLTE7CiAgICAgICAgJGdudV9zdGFja1swXSAgICAgICAgPSBuZXdfbHBfaW5kZW50YXRpb25faXRlbSggMCwgLTEsIC0xLCAwLCAwICk7CiAgICAgICAgQGdudV9pdGVtX2xpc3QgICAgICAgPSAoKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3ViIGluaXRpYWxpemVfZ251X2JhdGNoX3ZhcnMgewoKICAgICAgICAjIGluaXRpYWxpemUgZ251IHZhcmlhYmxlcyBmb3IgYSBuZXcgYmF0Y2g7CiAgICAgICAgIyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgZWFjaCBuZXcgYmF0Y2gKICAgICAgICAkZ251X3NlcXVlbmNlX251bWJlcisrOyAgICAjIGluY3JlbWVudCBvdXRwdXQgYmF0Y2ggY291bnRlcgogICAgICAgICVsYXN0X2dudV9lcXVhbHMgICAgICAgID0gKCk7CiAgICAgICAgJWdudV9jb21tYV9jb3VudCAgICAgICAgPSAoKTsKICAgICAgICAlZ251X2Fycm93X2NvdW50ICAgICAgICA9ICgpOwogICAgICAgICRsaW5lX3N0YXJ0X2luZGV4X3RvX2dvID0gMDsKICAgICAgICAkbWF4X2dudV9pdGVtX2luZGV4ICAgICA9IFVOREVGSU5FRF9JTkRFWDsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3ViIG5ld19scF9pbmRlbnRhdGlvbl9pdGVtIHsKCiAgICAgICAgIyB0aGlzIGlzIGFuIGludGVyZmFjZSB0byB0aGUgSW5kZW50YXRpb25JdGVtIGNsYXNzCiAgICAgICAgbXkgKCAkc3BhY2VzLCAkbGV2ZWwsICRjaV9sZXZlbCwgJGF2YWlsYWJsZV9zcGFjZXMsICRhbGlnbl9wYXJlbiApID0gQF87CgogICAgICAgICMgQSBuZWdhdGl2ZSBsZXZlbCBpbXBsaWVzIG5vdCB0byBzdG9yZSB0aGUgaXRlbSBpbiB0aGUgaXRlbV9saXN0CiAgICAgICAgbXkgJGluZGV4ID0gMDsKICAgICAgICBpZiAoICRsZXZlbCA+PSAwICkgeyAkaW5kZXggPSArKyRtYXhfZ251X2l0ZW1faW5kZXg7IH0KCiAgICAgICAgbXkgJHN0YXJ0aW5nX2luZGV4X0sgPSAwOwogICAgICAgIGlmICggICBkZWZpbmVkKCRsaW5lX3N0YXJ0X2luZGV4X3RvX2dvKQogICAgICAgICAgICAmJiAkbGluZV9zdGFydF9pbmRleF90b19nbyA+PSAwCiAgICAgICAgICAgICYmICRsaW5lX3N0YXJ0X2luZGV4X3RvX2dvIDw9ICRtYXhfaW5kZXhfdG9fZ28gKQogICAgICAgIHsKICAgICAgICAgICAgJHN0YXJ0aW5nX2luZGV4X0sgPSAkS190b19nb1skbGluZV9zdGFydF9pbmRleF90b19nb107CiAgICAgICAgfQoKICAgICAgICBteSAkaXRlbSA9IFBlcmw6OlRpZHk6OkluZGVudGF0aW9uSXRlbS0+bmV3KAogICAgICAgICAgICBzcGFjZXMgICAgICAgICAgICAgID0+ICRzcGFjZXMsCiAgICAgICAgICAgIGxldmVsICAgICAgICAgICAgICAgPT4gJGxldmVsLAogICAgICAgICAgICBjaV9sZXZlbCAgICAgICAgICAgID0+ICRjaV9sZXZlbCwKICAgICAgICAgICAgYXZhaWxhYmxlX3NwYWNlcyAgICA9PiAkYXZhaWxhYmxlX3NwYWNlcywKICAgICAgICAgICAgaW5kZXggICAgICAgICAgICAgICA9PiAkaW5kZXgsCiAgICAgICAgICAgIGdudV9zZXF1ZW5jZV9udW1iZXIgPT4gJGdudV9zZXF1ZW5jZV9udW1iZXIsCiAgICAgICAgICAgIGFsaWduX3BhcmVuICAgICAgICAgPT4gJGFsaWduX3BhcmVuLAogICAgICAgICAgICBzdGFja19kZXB0aCAgICAgICAgID0+ICRtYXhfZ251X3N0YWNrX2luZGV4LAogICAgICAgICAgICBzdGFydGluZ19pbmRleF9LICAgID0+ICRzdGFydGluZ19pbmRleF9LLAogICAgICAgICk7CgogICAgICAgIGlmICggJGxldmVsID49IDAgKSB7CiAgICAgICAgICAgICRnbnVfaXRlbV9saXN0WyRtYXhfZ251X2l0ZW1faW5kZXhdID0gJGl0ZW07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGl0ZW07CiAgICB9CgogICAgc3ViIHNldF9sZWFkaW5nX3doaXRlc3BhY2UgewoKICAgICAgICAjIFRoaXMgcm91dGluZSBkZWZpbmVzIGxlYWRpbmcgd2hpdGVzcGFjZSBmb3IgdGhlIGNhc2Ugb2YgLWxwIGZvcm1hdHRpbmcKICAgICAgICAjIGdpdmVuOiB0aGUgbGV2ZWwgYW5kIGNvbnRpbnVhdGlvbl9sZXZlbCBvZiBhIHRva2VuLAogICAgICAgICMgZGVmaW5lOiBzcGFjZSBjb3VudCBvZiBsZWFkaW5nIHN0cmluZyB3aGljaCB3b3VsZCBhcHBseSBpZiBpdAogICAgICAgICMgd2VyZSB0aGUgZmlyc3QgdG9rZW4gb2YgYSBuZXcgbGluZS4KCiAgICAgICAgbXkgKCAkc2VsZiwgJEtqLCAkS19sYXN0X25vbmJsYW5rLCAkS19sYXN0X2xhc3Rfbm9uYmxhbmssCiAgICAgICAgICAgICRsZXZlbF9hYnMsICRjaV9sZXZlbCwgJGluX2NvbnRpbnVlZF9xdW90ZSApCiAgICAgICAgICA9IEBfOwoKICAgICAgICByZXR1cm4gdW5sZXNzICgkck9wdHNfbGluZV91cF9wYXJlbnRoZXNlcyk7CiAgICAgICAgcmV0dXJuIHVubGVzcyAoIGRlZmluZWQoJG1heF9pbmRleF90b19nbykgJiYgJG1heF9pbmRleF90b19nbyA+PSAwICk7CgogICAgICAgIG15ICRyYnJlYWtfY29udGFpbmVyID0gJHNlbGYtPltfcmJyZWFrX2NvbnRhaW5lcl9dOwogICAgICAgIG15ICRyc2hvcnRfbmVzdGVkICAgID0gJHNlbGYtPltfcnNob3J0X25lc3RlZF9dOwogICAgICAgIG15ICRyTEwgICAgICAgICAgICAgID0gJHNlbGYtPltfckxMX107CgogICAgICAgICMgZmluZCBuZWVkZWQgcHJldmlvdXMgbm9uYmxhbmsgdG9rZW5zCiAgICAgICAgbXkgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gICAgICA9ICcnOwogICAgICAgIG15ICRsYXN0X25vbmJsYW5rX3R5cGUgICAgICAgPSAnJzsKICAgICAgICBteSAkbGFzdF9ub25ibGFua19ibG9ja190eXBlID0gJyc7CgogICAgICAgICMgYW5kIHByZXZpb3VzIG5vbmJsYW5rIHRva2VucywganVzdCBpbiB0aGlzIGJhdGNoOgogICAgICAgIG15ICRsYXN0X25vbmJsYW5rX3Rva2VuX2luX2JhdGNoICAgICA9ICcnOwogICAgICAgIG15ICRsYXN0X25vbmJsYW5rX3R5cGVfaW5fYmF0Y2ggICAgICA9ICcnOwogICAgICAgIG15ICRsYXN0X2xhc3Rfbm9uYmxhbmtfdHlwZV9pbl9iYXRjaCA9ICcnOwoKICAgICAgICBpZiAoIGRlZmluZWQoJEtfbGFzdF9ub25ibGFuaykgKSB7CiAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3Rva2VuID0gJHJMTC0+WyRLX2xhc3Rfbm9uYmxhbmtdLT5bX1RPS0VOX107CiAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3R5cGUgID0gJHJMTC0+WyRLX2xhc3Rfbm9uYmxhbmtdLT5bX1RZUEVfXTsKICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZSA9CiAgICAgICAgICAgICAgJHJMTC0+WyRLX2xhc3Rfbm9uYmxhbmtdLT5bX0JMT0NLX1RZUEVfXTsKCiAgICAgICAgICAgIGlmICggJEtfbGFzdF9ub25ibGFuayA+PSAkS190b19nb1swXSApIHsKICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3Rva2VuX2luX2JhdGNoID0gJGxhc3Rfbm9uYmxhbmtfdG9rZW47CiAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua190eXBlX2luX2JhdGNoICA9ICRsYXN0X25vbmJsYW5rX3R5cGU7CiAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQoJEtfbGFzdF9sYXN0X25vbmJsYW5rKQogICAgICAgICAgICAgICAgICAgICYmICRLX2xhc3RfbGFzdF9ub25ibGFuayA+ICRLX3RvX2dvWzBdICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkbGFzdF9sYXN0X25vbmJsYW5rX3R5cGVfaW5fYmF0Y2ggPQogICAgICAgICAgICAgICAgICAgICAgJHJMTC0+WyRLX2xhc3RfbGFzdF9ub25ibGFua10tPltfVFlQRV9dOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgICMgQWRqdXN0IGxldmVscyBpZiBuZWNlc3NhcnkgdG8gcmVjeWNsZSB3aGl0ZXNwYWNlOgogICAgICAgIG15ICRsZXZlbCAgICAgICAgICAgID0gJGxldmVsX2FiczsKICAgICAgICBteSAkcmFkanVzdGVkX2xldmVscyA9ICRzZWxmLT5bX3JhZGp1c3RlZF9sZXZlbHNfXTsKICAgICAgICBteSAkbksgICAgICAgICAgICAgICA9IEB7JHJMTH07CiAgICAgICAgbXkgJG53cyAgICAgICAgICAgICAgPSBAeyRyYWRqdXN0ZWRfbGV2ZWxzfTsKICAgICAgICBpZiAoIGRlZmluZWQoJHJhZGp1c3RlZF9sZXZlbHMpICYmIEB7JHJhZGp1c3RlZF9sZXZlbHN9ID09IEB7JHJMTH0gKSB7CiAgICAgICAgICAgICRsZXZlbCA9ICRyYWRqdXN0ZWRfbGV2ZWxzLT5bJEtqXTsKICAgICAgICAgICAgaWYgKCAkbGV2ZWwgPCAwICkgeyAkbGV2ZWwgPSAwIH0gICAgIyBub3RlOiB0aGlzIHNob3VsZCBub3QgaGFwcGVuCiAgICAgICAgfQoKICAgICAgICAjIFRoZSBjb250aW51ZWRfcXVvdGUgZmxhZyBtZWFucyB0aGF0IHRoaXMgaXMgdGhlIGZpcnN0IHRva2VuIG9mIGEKICAgICAgICAjIGxpbmUsIGFuZCBpdCBpcyB0aGUgY29udGludWF0aW9uIG9mIHNvbWUga2luZCBvZiBtdWx0aS1saW5lIHF1b3RlCiAgICAgICAgIyBvciBwYXR0ZXJuLiAgSXQgcmVxdWlyZXMgc3BlY2lhbCB0cmVhdG1lbnQgYmVjYXVzZSBpdCBtdXN0IGhhdmUgbm8KICAgICAgICAjIGFkZGVkIGxlYWRpbmcgd2hpdGVzcGFjZS4gU28gd2UgY3JlYXRlIGEgc3BlY2lhbCBpbmRlbnRhdGlvbiBpdGVtCiAgICAgICAgIyB3aGljaCBpcyBub3QgaW4gdGhlIHN0YWNrLgogICAgICAgIGlmICgkaW5fY29udGludWVkX3F1b3RlKSB7CiAgICAgICAgICAgIG15ICRzcGFjZV9jb3VudCAgICAgPSAwOwogICAgICAgICAgICBteSAkYXZhaWxhYmxlX3NwYWNlID0gMDsKICAgICAgICAgICAgJGxldmVsID0gLTE7ICAgICMgZmxhZyB0byBwcmV2ZW50IHN0b3JpbmcgaW4gaXRlbV9saXN0CiAgICAgICAgICAgICRsZWFkaW5nX3NwYWNlc190b19nb1skbWF4X2luZGV4X3RvX2dvXSA9CiAgICAgICAgICAgICAgJHJlZHVjZWRfc3BhY2VzX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dID0KICAgICAgICAgICAgICBuZXdfbHBfaW5kZW50YXRpb25faXRlbSggJHNwYWNlX2NvdW50LCAkbGV2ZWwsICRjaV9sZXZlbCwKICAgICAgICAgICAgICAgICRhdmFpbGFibGVfc3BhY2UsIDAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIHRvcCBzdGF0ZSBmcm9tIHRoZSBzdGFjawogICAgICAgIG15ICRzcGFjZV9jb3VudCAgICAgID0gJGdudV9zdGFja1skbWF4X2dudV9zdGFja19pbmRleF0tPmdldF9zcGFjZXMoKTsKICAgICAgICBteSAkY3VycmVudF9sZXZlbCAgICA9ICRnbnVfc3RhY2tbJG1heF9nbnVfc3RhY2tfaW5kZXhdLT5nZXRfbGV2ZWwoKTsKICAgICAgICBteSAkY3VycmVudF9jaV9sZXZlbCA9ICRnbnVfc3RhY2tbJG1heF9nbnVfc3RhY2tfaW5kZXhdLT5nZXRfY2lfbGV2ZWwoKTsKCiAgICAgICAgbXkgJHR5cGUgICAgICAgID0gJHR5cGVzX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dOwogICAgICAgIG15ICR0b2tlbiAgICAgICA9ICR0b2tlbnNfdG9fZ29bJG1heF9pbmRleF90b19nb107CiAgICAgICAgbXkgJHRvdGFsX2RlcHRoID0gJG5lc3RpbmdfZGVwdGhfdG9fZ29bJG1heF9pbmRleF90b19nb107CgogICAgICAgIGlmICggJHR5cGUgZXEgJ3snIHx8ICR0eXBlIGVxICcoJyApIHsKCiAgICAgICAgICAgICRnbnVfY29tbWFfY291bnR7ICR0b3RhbF9kZXB0aCArIDEgfSA9IDA7CiAgICAgICAgICAgICRnbnVfYXJyb3dfY291bnR7ICR0b3RhbF9kZXB0aCArIDEgfSA9IDA7CgogICAgICAgICAgICAjIElmIHdlIGNvbWUgdG8gYW4gb3BlbmluZyB0b2tlbiBhZnRlciBhbiAnPScgdG9rZW4gb2Ygc29tZSB0eXBlLAogICAgICAgICAgICAjIHNlZSBpZiBpdCB3b3VsZCBiZSBoZWxwZnVsIHRvICdicmVhaycgYWZ0ZXIgdGhlICc9JyB0byBzYXZlIHNwYWNlCiAgICAgICAgICAgIG15ICRsYXN0X2VxdWFscyA9ICRsYXN0X2dudV9lcXVhbHN7JHRvdGFsX2RlcHRofTsKICAgICAgICAgICAgaWYgKCAkbGFzdF9lcXVhbHMgJiYgJGxhc3RfZXF1YWxzID4gJGxpbmVfc3RhcnRfaW5kZXhfdG9fZ28gKSB7CgogICAgICAgICAgICAgICAgIyBmaW5kIHRoZSBwb3NpdGlvbiBpZiB3ZSBicmVhayBhdCB0aGUgJz0nCiAgICAgICAgICAgICAgICBteSAkaV90ZXN0ID0gJGxhc3RfZXF1YWxzOwogICAgICAgICAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bICRpX3Rlc3QgKyAxIF0gZXEgJ2InICkgeyAkaV90ZXN0KysgfQoKICAgICAgICAgICAgICAgICMgVEVTVElORwogICAgICAgICAgICAgICAgIyNteSAkdG9vX2Nsb3NlID0gKCRpX3Rlc3Q9PSRtYXhfaW5kZXhfdG9fZ28tMSk7CgogICAgICAgICAgICAgICAgbXkgJHRlc3RfcG9zaXRpb24gPQogICAgICAgICAgICAgICAgICB0b3RhbF9saW5lX2xlbmd0aCggJGlfdGVzdCwgJG1heF9pbmRleF90b19nbyApOwogICAgICAgICAgICAgICAgbXkgJG1sbCA9ICRtYXhpbXVtX2xpbmVfbGVuZ3RoWyAkbGV2ZWxzX3RvX2dvWyRpX3Rlc3RdIF07CgogICAgICAgICAgICAgICAgaWYgKAoKICAgICAgICAgICAgICAgICAgICAjIHRoZSBlcXVhbHMgaXMgbm90IGp1c3QgYmVmb3JlIGFuIG9wZW4gcGFyZW4gKHRlc3RpbmcpCiAgICAgICAgICAgICAgICAgICAgIyMhJHRvb19jbG9zZSAmJgoKICAgICAgICAgICAgICAgICAgICAjIGlmIHdlIGFyZSBiZXlvbmQgdGhlIG1pZHBvaW50CiAgICAgICAgICAgICAgICAgICAgJGdudV9wb3NpdGlvbl9wcmVkaWN0b3IgPgogICAgICAgICAgICAgICAgICAgICRtbGwgLSAkck9wdHNfbWF4aW11bV9saW5lX2xlbmd0aCAvIDIKCiAgICAgICAgICAgICAgICAgICAgIyBvciB3ZSBhcmUgYmV5b25kIHRoZSAxLzQgcG9pbnQgYW5kIHRoZXJlIHdhcyBhbiBvbGQKICAgICAgICAgICAgICAgICAgICAjIGJyZWFrIGF0IHRoZSBlcXVhbHMKICAgICAgICAgICAgICAgICAgICB8fCAoCiAgICAgICAgICAgICAgICAgICAgICAgICRnbnVfcG9zaXRpb25fcHJlZGljdG9yID4KICAgICAgICAgICAgICAgICAgICAgICAgJG1sbCAtICRyT3B0c19tYXhpbXVtX2xpbmVfbGVuZ3RoICogMyAvIDQKICAgICAgICAgICAgICAgICAgICAgICAgJiYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9sZF9icmVha3BvaW50X3RvX2dvWyRsYXN0X2VxdWFsc10KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICggICAkbGFzdF9lcXVhbHMgPiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJG9sZF9icmVha3BvaW50X3RvX2dvWyAkbGFzdF9lcXVhbHMgLSAxIF0gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCAgICRsYXN0X2VxdWFscyA+IDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZXNfdG9fZ29bICRsYXN0X2VxdWFscyAtIDEgXSBlcSAnYicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkb2xkX2JyZWFrcG9pbnRfdG9fZ29bICRsYXN0X2VxdWFscyAtIDIgXSApCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgIyB0aGVuIG1ha2UgdGhlIHN3aXRjaCAtLSBub3RlIHRoYXQgd2UgZG8gbm90IHNldCBhIHJlYWwKICAgICAgICAgICAgICAgICAgICAjIGJyZWFrcG9pbnQgaGVyZSBiZWNhdXNlIHdlIG1heSBub3QgcmVhbGx5IG5lZWQgb25lOyBzdWIKICAgICAgICAgICAgICAgICAgICAjIHNjYW5fbGlzdCB3aWxsIGRvIHRoYXQgaWYgbmVjZXNzYXJ5CiAgICAgICAgICAgICAgICAgICAgJGxpbmVfc3RhcnRfaW5kZXhfdG9fZ28gPSAkaV90ZXN0ICsgMTsKICAgICAgICAgICAgICAgICAgICAkZ251X3Bvc2l0aW9uX3ByZWRpY3RvciA9ICR0ZXN0X3Bvc2l0aW9uOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkaGFsZndheSA9CiAgICAgICAgICAkbWF4aW11bV9saW5lX2xlbmd0aFskbGV2ZWxdIC0gJHJPcHRzX21heGltdW1fbGluZV9sZW5ndGggLyAyOwoKICAgICAgICAjIENoZWNrIGZvciBkZWNyZWFzaW5nIGRlcHRoIC4uCiAgICAgICAgIyBOb3RlIHRoYXQgb25lIHRva2VuIG1heSBoYXZlIGJvdGggZGVjcmVhc2luZyBhbmQgdGhlbiBpbmNyZWFzaW5nCiAgICAgICAgIyBkZXB0aC4gRm9yIGV4YW1wbGUsIChsZXZlbCwgY2kpIGNhbiBnbyBmcm9tICgxLDEpIHRvICgyLDApLiAgU28sCiAgICAgICAgIyBpbiB0aGlzIGV4YW1wbGUgd2Ugd291bGQgZmlyc3QgZ28gYmFjayB0byAoMSwwKSB0aGVuIHVwIHRvICgyLDApCiAgICAgICAgIyBpbiBhIHNpbmdsZSBjYWxsLgogICAgICAgIGlmICggJGxldmVsIDwgJGN1cnJlbnRfbGV2ZWwgfHwgJGNpX2xldmVsIDwgJGN1cnJlbnRfY2lfbGV2ZWwgKSB7CgogICAgICAgICAgICAjIGxvb3AgdG8gZmluZCB0aGUgZmlyc3QgZW50cnkgYXQgb3IgY29tcGxldGVseSBiZWxvdyB0aGlzIGxldmVsCiAgICAgICAgICAgIG15ICggJGxldiwgJGNpX2xldiApOwogICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgaWYgKCRtYXhfZ251X3N0YWNrX2luZGV4KSB7CgogICAgICAgICAgICAgICAgICAgICMgc2F2ZSBpbmRleCBvZiB0b2tlbiB3aGljaCBjbG9zZXMgdGhpcyBsZXZlbAogICAgICAgICAgICAgICAgICAgICRnbnVfc3RhY2tbJG1heF9nbnVfc3RhY2tfaW5kZXhdCiAgICAgICAgICAgICAgICAgICAgICAtPnNldF9jbG9zZWQoJG1heF9pbmRleF90b19nbyk7CgogICAgICAgICAgICAgICAgICAgICMgVW5kbyBhbnkgZXh0cmEgaW5kZW50YXRpb24gaWYgd2Ugc2F3IG5vIGNvbW1hcwogICAgICAgICAgICAgICAgICAgIG15ICRhdmFpbGFibGVfc3BhY2VzID0KICAgICAgICAgICAgICAgICAgICAgICRnbnVfc3RhY2tbJG1heF9nbnVfc3RhY2tfaW5kZXhdLT5nZXRfYXZhaWxhYmxlX3NwYWNlcygpOwoKICAgICAgICAgICAgICAgICAgICBteSAkY29tbWFfY291bnQgPSAwOwogICAgICAgICAgICAgICAgICAgIG15ICRhcnJvd19jb3VudCA9IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkdHlwZSBlcSAnfScgfHwgJHR5cGUgZXEgJyknICkgewogICAgICAgICAgICAgICAgICAgICAgICAkY29tbWFfY291bnQgPSAkZ251X2NvbW1hX2NvdW50eyR0b3RhbF9kZXB0aH07CiAgICAgICAgICAgICAgICAgICAgICAgICRhcnJvd19jb3VudCA9ICRnbnVfYXJyb3dfY291bnR7JHRvdGFsX2RlcHRofTsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbW1hX2NvdW50ID0gMCB1bmxlc3MgJGNvbW1hX2NvdW50OwogICAgICAgICAgICAgICAgICAgICAgICAkYXJyb3dfY291bnQgPSAwIHVubGVzcyAkYXJyb3dfY291bnQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRnbnVfc3RhY2tbJG1heF9nbnVfc3RhY2tfaW5kZXhdCiAgICAgICAgICAgICAgICAgICAgICAtPnNldF9jb21tYV9jb3VudCgkY29tbWFfY291bnQpOwogICAgICAgICAgICAgICAgICAgICRnbnVfc3RhY2tbJG1heF9nbnVfc3RhY2tfaW5kZXhdCiAgICAgICAgICAgICAgICAgICAgICAtPnNldF9hcnJvd19jb3VudCgkYXJyb3dfY291bnQpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRhdmFpbGFibGVfc3BhY2VzID4gMCApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGNvbW1hX2NvdW50IDw9IDAgfHwgJGFycm93X2NvdW50ID4gMCApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkaSA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRnbnVfc3RhY2tbJG1heF9nbnVfc3RhY2tfaW5kZXhdLT5nZXRfaW5kZXgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRzZXFubyA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRnbnVfc3RhY2tbJG1heF9nbnVfc3RhY2tfaW5kZXhdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+Z2V0X3NlcXVlbmNlX251bWJlcigpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQmUgc3VyZSB0aGlzIGl0ZW0gd2FzIGNyZWF0ZWQgaW4gdGhpcyBiYXRjaC4gIFRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvdWxkIGJlIHRydWUgYmVjYXVzZSB3ZSBkZWxldGUgYW55IGF2YWlsYWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzcGFjZSBmcm9tIG9wZW4gaXRlbXMgYXQgdGhlIGVuZCBvZiBlYWNoIGJhdGNoLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAgICRnbnVfc2VxdWVuY2VfbnVtYmVyICE9ICRzZXFubwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRpID4gJG1heF9nbnVfaXRlbV9pbmRleCApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZygKIlByb2dyYW0gYnVnIHdpdGggLWxwLiAgc2Vxbm89JHNlcW5vIHNob3VsZCBiZSAkZ251X3NlcXVlbmNlX251bWJlciBhbmQgaT0kaSBzaG91bGQgYmUgbGVzcyB0aGFuIG1heD0kbWF4X2dudV9pdGVtX2luZGV4XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnRfZGVmaW5pdGVfYnVnKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkYXJyb3dfY291bnQgPT0gMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGdudV9pdGVtX2xpc3RbJGldCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5wZXJtYW5lbnRseV9kZWNyZWFzZV9hdmFpbGFibGVfc3BhY2VzKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGF2YWlsYWJsZV9zcGFjZXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGdudV9pdGVtX2xpc3RbJGldCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50ZW50YXRpdmVseV9kZWNyZWFzZV9hdmFpbGFibGVfc3BhY2VzKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGF2YWlsYWJsZV9zcGFjZXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRqICggJGkgKyAxIC4uICRtYXhfZ251X2l0ZW1faW5kZXggKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGdudV9pdGVtX2xpc3RbJGpdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5kZWNyZWFzZV9TUEFDRVMoJGF2YWlsYWJsZV9zcGFjZXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBnbyBkb3duIG9uZSBsZXZlbAogICAgICAgICAgICAgICAgICAgIC0tJG1heF9nbnVfc3RhY2tfaW5kZXg7CiAgICAgICAgICAgICAgICAgICAgJGxldiAgICA9ICRnbnVfc3RhY2tbJG1heF9nbnVfc3RhY2tfaW5kZXhdLT5nZXRfbGV2ZWwoKTsKICAgICAgICAgICAgICAgICAgICAkY2lfbGV2ID0gJGdudV9zdGFja1skbWF4X2dudV9zdGFja19pbmRleF0tPmdldF9jaV9sZXZlbCgpOwoKICAgICAgICAgICAgICAgICAgICAjIHN0b3Agd2hlbiB3ZSByZWFjaCBhIGxldmVsIGF0IG9yIGJlbG93IHRoZSBjdXJyZW50IGxldmVsCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkbGV2IDw9ICRsZXZlbCAmJiAkY2lfbGV2IDw9ICRjaV9sZXZlbCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNwYWNlX2NvdW50ID0KICAgICAgICAgICAgICAgICAgICAgICAgICAkZ251X3N0YWNrWyRtYXhfZ251X3N0YWNrX2luZGV4XS0+Z2V0X3NwYWNlcygpOwogICAgICAgICAgICAgICAgICAgICAgICAkY3VycmVudF9sZXZlbCAgICA9ICRsZXY7CiAgICAgICAgICAgICAgICAgICAgICAgICRjdXJyZW50X2NpX2xldmVsID0gJGNpX2xldjsKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyByZWFjaGVkIGJvdHRvbSBvZiBzdGFjayAuLiBzaG91bGQgbmV2ZXIgaGFwcGVuIGJlY2F1c2UKICAgICAgICAgICAgICAgICMgb25seSBuZWdhdGl2ZSBsZXZlbHMgY2FuIGdldCBoZXJlLCBhbmQgJGxldmVsIHdhcyBmb3JjZWQKICAgICAgICAgICAgICAgICMgdG8gYmUgcG9zaXRpdmUgYWJvdmUuCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB3YXJuaW5nKAoicHJvZ3JhbSBidWcgd2l0aCAtbHA6IHN0YWNrX2Vycm9yLiBsZXZlbD0kbGV2ZWw7IGxldj0kbGV2OyBjaV9sZXZlbD0kY2lfbGV2ZWw7IGNpX2xldj0kY2lfbGV2OyByZXJ1biB3aXRoIC1ubHBcbiIKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIHJlcG9ydF9kZWZpbml0ZV9idWcoKTsKICAgICAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGhhbmRsZSBpbmNyZWFzaW5nIGRlcHRoCiAgICAgICAgaWYgKCAkbGV2ZWwgPiAkY3VycmVudF9sZXZlbCB8fCAkY2lfbGV2ZWwgPiAkY3VycmVudF9jaV9sZXZlbCApIHsKCiAgICAgICAgICAgICMgQ29tcHV0ZSB0aGUgc3RhbmRhcmQgaW5jcmVtZW50YWwgd2hpdGVzcGFjZS4gIFRoaXMgd2lsbCBiZQogICAgICAgICAgICAjIHRoZSBtaW5pbXVtIGluY3JlbWVudGFsIHdoaXRlc3BhY2UgdGhhdCB3aWxsIGJlIHVzZWQuICBUaGlzCiAgICAgICAgICAgICMgY2hvaWNlIHJlc3VsdHMgaW4gYSBzbW9vdGggdHJhbnNpdGlvbiBiZXR3ZWVuIHRoZSBnbnUtc3R5bGUKICAgICAgICAgICAgIyBhbmQgdGhlIHN0YW5kYXJkIHN0eWxlLgogICAgICAgICAgICBteSAkc3RhbmRhcmRfaW5jcmVtZW50ID0KICAgICAgICAgICAgICAoICRsZXZlbCAtICRjdXJyZW50X2xldmVsICkgKgogICAgICAgICAgICAgICRyT3B0c19pbmRlbnRfY29sdW1ucyArCiAgICAgICAgICAgICAgKCAkY2lfbGV2ZWwgLSAkY3VycmVudF9jaV9sZXZlbCApICoKICAgICAgICAgICAgICAkck9wdHNfY29udGludWF0aW9uX2luZGVudGF0aW9uOwoKICAgICAgICAgICAgIyBOb3cgd2UgaGF2ZSB0byBkZWZpbmUgaG93IG11Y2ggZXh0cmEgaW5jcmVtZW50YWwgc3BhY2UKICAgICAgICAgICAgIyAoIiRhdmFpbGFibGVfc3BhY2UiKSB3ZSB3YW50LiAgVGhpcyBleHRyYSBzcGFjZSB3aWxsIGJlCiAgICAgICAgICAgICMgcmVkdWNlZCBhcyBuZWNlc3Nhcnkgd2hlbiBsb25nIGxpbmVzIGFyZSBlbmNvdW50ZXJlZCBvciB3aGVuCiAgICAgICAgICAgICMgaXQgYmVjb21lcyBjbGVhciB0aGF0IHdlIGRvIG5vdCBoYXZlIGEgZ29vZCBsaXN0LgogICAgICAgICAgICBteSAkYXZhaWxhYmxlX3NwYWNlID0gMDsKICAgICAgICAgICAgbXkgJGFsaWduX3BhcmVuICAgICA9IDA7CiAgICAgICAgICAgIG15ICRleGNlc3MgICAgICAgICAgPSAwOwoKICAgICAgICAgICAgbXkgJGxhc3Rfbm9uYmxhbmtfc2Vxbm87CiAgICAgICAgICAgIGlmICggZGVmaW5lZCgkS19sYXN0X25vbmJsYW5rKSApIHsKICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3NlcW5vID0KICAgICAgICAgICAgICAgICAgJHJMTC0+WyRLX2xhc3Rfbm9uYmxhbmtdLT5bX1RZUEVfU0VRVUVOQ0VfXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBpbml0aWFsaXphdGlvbiBvbiBlbXB0eSBzdGFjay4uCiAgICAgICAgICAgIGlmICggJG1heF9nbnVfc3RhY2tfaW5kZXggPT0gMCApIHsKICAgICAgICAgICAgICAgICRzcGFjZV9jb3VudCA9ICRsZXZlbCAqICRyT3B0c19pbmRlbnRfY29sdW1uczsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBpZiB0aGlzIGlzIGEgQkxPQ0ssIGFkZCB0aGUgc3RhbmRhcmQgaW5jcmVtZW50CiAgICAgICAgICAgIGVsc2lmICgkbGFzdF9ub25ibGFua19ibG9ja190eXBlKSB7CiAgICAgICAgICAgICAgICAkc3BhY2VfY291bnQgKz0gJHN0YW5kYXJkX2luY3JlbWVudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBpZiBsYXN0IG5vbmJsYW5rIHRva2VuIHdhcyBub3Qgc3RydWN0dXJhbCBpbmRlbnRhdGlvbiwKICAgICAgICAgICAgIyBqdXN0IHVzZSBzdGFuZGFyZCBpbmNyZW1lbnQKICAgICAgICAgICAgZWxzaWYgKCAkbGFzdF9ub25ibGFua190eXBlIG5lICd7JyApIHsKICAgICAgICAgICAgICAgICRzcGFjZV9jb3VudCArPSAkc3RhbmRhcmRfaW5jcmVtZW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGlmIHRoaXMgY29udGFpbmVyIGhvbGRzIGEgcXcsIGFkZCB0aGUgc3RhbmRhcmQgaW5jcmVtZW50CiAgICAgICAgICAgIGVsc2lmICgkbGFzdF9ub25ibGFua19zZXFubwogICAgICAgICAgICAgICAgJiYgJHNlbGYtPltfcmNvbnRhaW5zX211bHRpbGluZV9xd19ieV9zZXFub19dCiAgICAgICAgICAgICAgICAtPnskbGFzdF9ub25ibGFua19zZXFub30gKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkc3BhY2VfY291bnQgKz0gJHN0YW5kYXJkX2luY3JlbWVudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdGhlcndpc2UgdXNlIHRoZSBzcGFjZSB0byB0aGUgZmlyc3Qgbm9uLWJsYW5rIGxldmVsIGNoYW5nZSB0b2tlbgogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAkc3BhY2VfY291bnQgPSAkZ251X3Bvc2l0aW9uX3ByZWRpY3RvcjsKCiAgICAgICAgICAgICAgICBteSAkbWluX2dudV9pbmRlbnRhdGlvbiA9CiAgICAgICAgICAgICAgICAgICRnbnVfc3RhY2tbJG1heF9nbnVfc3RhY2tfaW5kZXhdLT5nZXRfc3BhY2VzKCk7CgogICAgICAgICAgICAgICAgJGF2YWlsYWJsZV9zcGFjZSA9ICRzcGFjZV9jb3VudCAtICRtaW5fZ251X2luZGVudGF0aW9uOwogICAgICAgICAgICAgICAgaWYgKCAkYXZhaWxhYmxlX3NwYWNlID49ICRzdGFuZGFyZF9pbmNyZW1lbnQgKSB7CiAgICAgICAgICAgICAgICAgICAgJG1pbl9nbnVfaW5kZW50YXRpb24gKz0gJHN0YW5kYXJkX2luY3JlbWVudDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJGF2YWlsYWJsZV9zcGFjZSA+IDEgKSB7CiAgICAgICAgICAgICAgICAgICAgJG1pbl9nbnVfaW5kZW50YXRpb24gKz0gJGF2YWlsYWJsZV9zcGFjZSArIDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRsYXN0X25vbmJsYW5rX3Rva2VuID1+IC9eW1x7XFtcKF0kLyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICggJHRpZ2h0bmVzc3skbGFzdF9ub25ibGFua190b2tlbn0gPCAyICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRtaW5fZ251X2luZGVudGF0aW9uICs9IDI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkbWluX2dudV9pbmRlbnRhdGlvbiArPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRtaW5fZ251X2luZGVudGF0aW9uICs9ICRzdGFuZGFyZF9pbmNyZW1lbnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkYXZhaWxhYmxlX3NwYWNlID0gJHNwYWNlX2NvdW50IC0gJG1pbl9nbnVfaW5kZW50YXRpb247CgogICAgICAgICAgICAgICAgaWYgKCAkYXZhaWxhYmxlX3NwYWNlIDwgMCApIHsKICAgICAgICAgICAgICAgICAgICAkc3BhY2VfY291bnQgICAgID0gJG1pbl9nbnVfaW5kZW50YXRpb247CiAgICAgICAgICAgICAgICAgICAgJGF2YWlsYWJsZV9zcGFjZSA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkYWxpZ25fcGFyZW4gPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHVwZGF0ZSBzdGF0ZSwgYnV0IG5vdCBvbiBhIGJsYW5rIHRva2VuCiAgICAgICAgICAgIGlmICggJHR5cGVzX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dIG5lICdiJyApIHsKCiAgICAgICAgICAgICAgICAkZ251X3N0YWNrWyRtYXhfZ251X3N0YWNrX2luZGV4XS0+c2V0X2hhdmVfY2hpbGQoMSk7CgogICAgICAgICAgICAgICAgKyskbWF4X2dudV9zdGFja19pbmRleDsKICAgICAgICAgICAgICAgICRnbnVfc3RhY2tbJG1heF9nbnVfc3RhY2tfaW5kZXhdID0KICAgICAgICAgICAgICAgICAgbmV3X2xwX2luZGVudGF0aW9uX2l0ZW0oICRzcGFjZV9jb3VudCwgJGxldmVsLCAkY2lfbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgJGF2YWlsYWJsZV9zcGFjZSwgJGFsaWduX3BhcmVuICk7CgogICAgICAgICAgICAgICAgIyBJZiB0aGUgb3BlbmluZyBwYXJlbiBpcyBiZXlvbmQgdGhlIGhhbGYtbGluZSBsZW5ndGgsIHRoZW4KICAgICAgICAgICAgICAgICMgd2Ugd2lsbCB1c2UgdGhlIG1pbmltdW0gKHN0YW5kYXJkKSBpbmRlbnRhdGlvbi4gIFRoaXMgd2lsbAogICAgICAgICAgICAgICAgIyBoZWxwIGF2b2lkIHByb2JsZW1zIGFzc29jaWF0ZWQgd2l0aCBydW5uaW5nIG91dCBvZiBzcGFjZQogICAgICAgICAgICAgICAgIyBuZWFyIHRoZSBlbmQgb2YgYSBsaW5lLiAgQXMgYSByZXN1bHQsIGluIGRlZXBseSBuZXN0ZWQKICAgICAgICAgICAgICAgICMgbGlzdHMsIHRoZXJlIHdpbGwgYmUgc29tZSBpbmRlbnRhdGlvbnMgd2hpY2ggYXJlIGxpbWl0ZWQKICAgICAgICAgICAgICAgICMgdG8gdGhpcyBtaW5pbXVtIHN0YW5kYXJkIGluZGVudGF0aW9uLiBCdXQgdGhlIG1vc3QgZGVlcGx5CiAgICAgICAgICAgICAgICAjIG5lc3RlZCBjb250YWluZXIgd2lsbCBzdGlsbCBwcm9iYWJseSBiZSBhYmxlIHRvIHNoaWZ0IGl0cwogICAgICAgICAgICAgICAgIyBwYXJhbWV0ZXJzIHRvIHRoZSByaWdodCBmb3IgcHJvcGVyIGFsaWdubWVudCwgc28gaW4gbW9zdAogICAgICAgICAgICAgICAgIyBjYXNlcyB0aGlzIHdpbGwgbm90IGJlIG5vdGljZWFibGUuCiAgICAgICAgICAgICAgICBpZiAoICRhdmFpbGFibGVfc3BhY2UgPiAwICYmICRzcGFjZV9jb3VudCA+ICRoYWxmd2F5ICkgewogICAgICAgICAgICAgICAgICAgICRnbnVfc3RhY2tbJG1heF9nbnVfc3RhY2tfaW5kZXhdCiAgICAgICAgICAgICAgICAgICAgICAtPnRlbnRhdGl2ZWx5X2RlY3JlYXNlX2F2YWlsYWJsZV9zcGFjZXMoJGF2YWlsYWJsZV9zcGFjZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgQ291bnQgY29tbWFzIGFuZCBsb29rIGZvciBub24tbGlzdCBjaGFyYWN0ZXJzLiAgT25jZSB3ZSBzZWUgYQogICAgICAgICMgbm9uLWxpc3QgY2hhcmFjdGVyLCB3ZSBnaXZlIHVwIGFuZCBkb24ndCBsb29rIGZvciBhbnkgbW9yZSBjb21tYXMuCiAgICAgICAgaWYgKCAkdHlwZSBlcSAnPT4nICkgewogICAgICAgICAgICAkZ251X2Fycm93X2NvdW50eyR0b3RhbF9kZXB0aH0rKzsKCiAgICAgICAgICAgICMgdGVudGF0aXZlbHkgdHJlYXRpbmcgJz0+JyBsaWtlICc9JyBmb3IgZXN0aW1hdGluZyBicmVha3MKICAgICAgICAgICAgIyBUT0RPOiB0aGlzIGNvdWxkIHVzZSBzb21lIGV4cGVyaW1lbnRhdGlvbgogICAgICAgICAgICAkbGFzdF9nbnVfZXF1YWxzeyR0b3RhbF9kZXB0aH0gPSAkbWF4X2luZGV4X3RvX2dvOwogICAgICAgIH0KCiAgICAgICAgZWxzaWYgKCAkdHlwZSBlcSAnLCcgKSB7CiAgICAgICAgICAgICRnbnVfY29tbWFfY291bnR7JHRvdGFsX2RlcHRofSsrOwogICAgICAgIH0KCiAgICAgICAgZWxzaWYgKCAkaXNfYXNzaWdubWVudHskdHlwZX0gKSB7CiAgICAgICAgICAgICRsYXN0X2dudV9lcXVhbHN7JHRvdGFsX2RlcHRofSA9ICRtYXhfaW5kZXhfdG9fZ287CiAgICAgICAgfQoKICAgICAgICAjIHRoaXMgdG9rZW4gbWlnaHQgc3RhcnQgYSBuZXcgbGluZQogICAgICAgICMgaWYgdGhpcyBpcyBhIG5vbi1ibGFuay4uCiAgICAgICAgaWYgKCAkdHlwZSBuZSAnYicgKSB7CgogICAgICAgICAgICAjIGFuZCBpZiAuLgogICAgICAgICAgICBpZiAoCgogICAgICAgICAgICAgICAgIyB0aGlzIGlzIHRoZSBmaXJzdCBub25ibGFuayB0b2tlbiBvZiB0aGUgbGluZQogICAgICAgICAgICAgICAgJG1heF9pbmRleF90b19nbyA9PSAxICYmICR0eXBlc190b19nb1swXSBlcSAnYicKCiAgICAgICAgICAgICAgICAjIG9yIHByZXZpb3VzIGNoYXJhY3RlciB3YXMgb25lIG9mIHRoZXNlOgogICAgICAgICAgICAgICAgfHwgJGxhc3Rfbm9uYmxhbmtfdHlwZV9pbl9iYXRjaCA9fiAvXihbXDpcP1wsZl0pJC8KCiAgICAgICAgICAgICAgICAjIG9yIHByZXZpb3VzIGNoYXJhY3RlciB3YXMgb3BlbmluZyBhbmQgdGhpcyBkb2VzIG5vdCBjbG9zZSBpdAogICAgICAgICAgICAgICAgfHwgKCAkbGFzdF9ub25ibGFua190eXBlX2luX2JhdGNoIGVxICd7JyAmJiAkdHlwZSBuZSAnfScgKQogICAgICAgICAgICAgICAgfHwgKCAkbGFzdF9ub25ibGFua190eXBlX2luX2JhdGNoIGVxICcoJyBhbmQgJHR5cGUgbmUgJyknICkKCiAgICAgICAgICAgICAgICAjIG9yIHRoaXMgdG9rZW4gaXMgb25lIG9mIHRoZXNlOgogICAgICAgICAgICAgICAgfHwgJHR5cGUgPX4gL14oW1wuXXxcfFx8fFwmXCYpJC8KCiAgICAgICAgICAgICAgICAjIG9yIHRoaXMgaXMgYSBjbG9zaW5nIHN0cnVjdHVyZQogICAgICAgICAgICAgICAgfHwgKCAgICRsYXN0X25vbmJsYW5rX3R5cGVfaW5fYmF0Y2ggZXEgJ30nCiAgICAgICAgICAgICAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfdG9rZW5faW5fYmF0Y2ggZXEKICAgICAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua190eXBlX2luX2JhdGNoICkKCiAgICAgICAgICAgICAgICAjIG9yIHByZXZpb3VzIHRva2VuIHdhcyBrZXl3b3JkICdyZXR1cm4nCiAgICAgICAgICAgICAgICB8fCAoCiAgICAgICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdHlwZV9pbl9iYXRjaCBlcSAnaycKICAgICAgICAgICAgICAgICAgICAmJiAoICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW5faW5fYmF0Y2ggZXEgJ3JldHVybicKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHR5cGUgbmUgJ3snICkKICAgICAgICAgICAgICAgICkKCiAgICAgICAgICAgICAgICAjIG9yIHN0YXJ0aW5nIGEgbmV3IGxpbmUgYXQgY2VydGFpbiBrZXl3b3JkcyBpcyBmaW5lCiAgICAgICAgICAgICAgICB8fCAoICAgJHR5cGUgZXEgJ2snCiAgICAgICAgICAgICAgICAgICAgJiYgJGlzX2lmX3VubGVzc19hbmRfb3JfbGFzdF9uZXh0X3JlZG9fcmV0dXJueyR0b2tlbn0gKQoKICAgICAgICAgICAgICAgICMgb3IgdGhpcyBpcyBhZnRlciBhbiBhc3NpZ25tZW50IGFmdGVyIGEgY2xvc2luZyBzdHJ1Y3R1cmUKICAgICAgICAgICAgICAgIHx8ICgKICAgICAgICAgICAgICAgICAgICAkaXNfYXNzaWdubWVudHskbGFzdF9ub25ibGFua190eXBlX2luX2JhdGNofQogICAgICAgICAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua190eXBlX2luX2JhdGNoID1+IC9eW1x9XClcXV0kLwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBhbmQgaXQgaXMgc2lnbmlmaWNhbnRseSB0byB0aGUgcmlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJGdudV9wb3NpdGlvbl9wcmVkaWN0b3IgPiAkaGFsZndheQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNoZWNrX2Zvcl9sb25nX2dudV9zdHlsZV9saW5lcygkbWF4X2luZGV4X3RvX2dvKTsKICAgICAgICAgICAgICAgICRsaW5lX3N0YXJ0X2luZGV4X3RvX2dvID0gJG1heF9pbmRleF90b19nbzsKCiAgICAgICAgICAgICAgICAjIGJhY2sgdXAgMSB0b2tlbiBpZiB3ZSB3YW50IHRvIGJyZWFrIGJlZm9yZSB0aGF0IHR5cGUKICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlLCB3ZSBtYXkgc3RyYW5kIHRva2VucyBsaWtlICc/JyBvciAnOicgb24gYSBsaW5lCiAgICAgICAgICAgICAgICBpZiAoICRsaW5lX3N0YXJ0X2luZGV4X3RvX2dvID4gMCApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRsYXN0X25vbmJsYW5rX3R5cGVfaW5fYmF0Y2ggZXEgJ2snICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkd2FudF9icmVha19iZWZvcmV7JGxhc3Rfbm9uYmxhbmtfdG9rZW5faW5fYmF0Y2h9ICkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmVfc3RhcnRfaW5kZXhfdG9fZ28tLTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICR3YW50X2JyZWFrX2JlZm9yZXskbGFzdF9ub25ibGFua190eXBlX2luX2JhdGNofSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmVfc3RhcnRfaW5kZXhfdG9fZ28tLTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgcmVtZW1iZXIgdGhlIHByZWRpY3RlZCBwb3NpdGlvbiBvZiB0aGlzIHRva2VuIG9uIHRoZSBvdXRwdXQgbGluZQogICAgICAgIGlmICggJG1heF9pbmRleF90b19nbyA+ICRsaW5lX3N0YXJ0X2luZGV4X3RvX2dvICkgewogICAgICAgICAgICAkZ251X3Bvc2l0aW9uX3ByZWRpY3RvciA9CiAgICAgICAgICAgICAgdG90YWxfbGluZV9sZW5ndGgoICRsaW5lX3N0YXJ0X2luZGV4X3RvX2dvLCAkbWF4X2luZGV4X3RvX2dvICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkZ251X3Bvc2l0aW9uX3ByZWRpY3RvciA9CiAgICAgICAgICAgICAgJHNwYWNlX2NvdW50ICsgJHRva2VuX2xlbmd0aHNfdG9fZ29bJG1heF9pbmRleF90b19nb107CiAgICAgICAgfQoKICAgICAgICAjIHN0b3JlIHRoZSBpbmRlbnRhdGlvbiBvYmplY3QgZm9yIHRoaXMgdG9rZW4KICAgICAgICAjIHRoaXMgYWxsb3dzIHVzIHRvIG1hbmlwdWxhdGUgdGhlIGxlYWRpbmcgd2hpdGVzcGFjZQogICAgICAgICMgKGluIGNhc2Ugd2UgaGF2ZSB0byByZWR1Y2UgaW5kZW50YXRpb24gdG8gZml0IGEgbGluZSkgd2l0aG91dAogICAgICAgICMgaGF2aW5nIHRvIGNoYW5nZSBhbnkgdG9rZW4gdmFsdWVzCiAgICAgICAgJGxlYWRpbmdfc3BhY2VzX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dID0KICAgICAgICAgICRnbnVfc3RhY2tbJG1heF9nbnVfc3RhY2tfaW5kZXhdOwogICAgICAgICRyZWR1Y2VkX3NwYWNlc190b19nb1skbWF4X2luZGV4X3RvX2dvXSA9CiAgICAgICAgICAoICRtYXhfZ251X3N0YWNrX2luZGV4ID4gMCAmJiAkY2lfbGV2ZWwgKQogICAgICAgICAgPyAkZ251X3N0YWNrWyAkbWF4X2dudV9zdGFja19pbmRleCAtIDEgXQogICAgICAgICAgOiAkZ251X3N0YWNrWyRtYXhfZ251X3N0YWNrX2luZGV4XTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3ViIGNoZWNrX2Zvcl9sb25nX2dudV9zdHlsZV9saW5lcyB7CgogICAgICAgICMgbG9vayBhdCB0aGUgY3VycmVudCBlc3RpbWF0ZWQgbWF4aW11bSBsaW5lIGxlbmd0aCwgYW5kCiAgICAgICAgIyByZW1vdmUgc29tZSB3aGl0ZXNwYWNlIGlmIGl0IGV4Y2VlZHMgdGhlIGRlc2lyZWQgbWF4aW11bQogICAgICAgIG15ICgkbXhfaW5kZXhfdG9fZ28pID0gQF87CgogICAgICAgICMgdGhpcyBpcyBvbmx5IGZvciB0aGUgJy1scCcgc3R5bGUKICAgICAgICByZXR1cm4gdW5sZXNzICgkck9wdHNfbGluZV91cF9wYXJlbnRoZXNlcyk7CgogICAgICAgICMgbm90aGluZyBjYW4gYmUgZG9uZSBpZiBubyBzdGFjayBpdGVtcyBkZWZpbmVkIGZvciB0aGlzIGxpbmUKICAgICAgICByZXR1cm4gaWYgKCAkbWF4X2dudV9pdGVtX2luZGV4ID09IFVOREVGSU5FRF9JTkRFWCApOwoKICAgICAgICAjIHNlZSBpZiB3ZSBoYXZlIGV4Y2VlZGVkIHRoZSBtYXhpbXVtIGRlc2lyZWQgbGluZSBsZW5ndGgKICAgICAgICAjIGtlZXAgMiBleHRyYSBmcmVlIGJlY2F1c2UgdGhleSBhcmUgbmVlZGVkIGluIHNvbWUgY2FzZXMKICAgICAgICAjIChyZXN1bHQgb2YgdHJpYWwtYW5kLWVycm9yIHRlc3RpbmcpCiAgICAgICAgbXkgJHNwYWNlc19uZWVkZWQgPQogICAgICAgICAgJGdudV9wb3NpdGlvbl9wcmVkaWN0b3IgLQogICAgICAgICAgJG1heGltdW1fbGluZV9sZW5ndGhbICRsZXZlbHNfdG9fZ29bJG14X2luZGV4X3RvX2dvXSBdICsgMjsKCiAgICAgICAgcmV0dXJuIGlmICggJHNwYWNlc19uZWVkZWQgPD0gMCApOwoKICAgICAgICAjIFdlIGFyZSBvdmVyIHRoZSBsaW1pdCwgc28gdHJ5IHRvIHJlbW92ZSBhIHJlcXVlc3RlZCBudW1iZXIgb2YKICAgICAgICAjIHNwYWNlcyBmcm9tIGxlYWRpbmcgd2hpdGVzcGFjZS4gIFdlIGFyZSBvbmx5IGFsbG93ZWQgdG8gcmVtb3ZlCiAgICAgICAgIyBmcm9tIHdoaXRlc3BhY2UgaXRlbXMgY3JlYXRlZCBvbiB0aGlzIGJhdGNoLCBzaW5jZSBvdGhlcnMgaGF2ZQogICAgICAgICMgYWxyZWFkeSBiZWVuIHVzZWQgYW5kIGNhbm5vdCBiZSB1bmRvbmUuCiAgICAgICAgbXkgQGNhbmRpZGF0ZXMgPSAoKTsKICAgICAgICBteSAkaTsKCiAgICAgICAgIyBsb29wIG92ZXIgYWxsIHdoaXRlc3BhY2UgaXRlbXMgY3JlYXRlZCBmb3IgdGhlIGN1cnJlbnQgYmF0Y2gKICAgICAgICBmb3IgKCAkaSA9IDAgOyAkaSA8PSAkbWF4X2dudV9pdGVtX2luZGV4IDsgJGkrKyApIHsKICAgICAgICAgICAgbXkgJGl0ZW0gPSAkZ251X2l0ZW1fbGlzdFskaV07CgogICAgICAgICAgICAjIGl0ZW0gbXVzdCBzdGlsbCBiZSBvcGVuIHRvIGJlIGEgY2FuZGlkYXRlIChvdGhlcndpc2UgaXQKICAgICAgICAgICAgIyBjYW5ub3QgaW5mbHVlbmNlIHRoZSBjdXJyZW50IHRva2VuKQogICAgICAgICAgICBuZXh0IGlmICggJGl0ZW0tPmdldF9jbG9zZWQoKSA+PSAwICk7CgogICAgICAgICAgICBteSAkYXZhaWxhYmxlX3NwYWNlcyA9ICRpdGVtLT5nZXRfYXZhaWxhYmxlX3NwYWNlcygpOwoKICAgICAgICAgICAgaWYgKCAkYXZhaWxhYmxlX3NwYWNlcyA+IDAgKSB7CiAgICAgICAgICAgICAgICBwdXNoKCBAY2FuZGlkYXRlcywgWyAkaSwgJGF2YWlsYWJsZV9zcGFjZXMgXSApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdW5sZXNzIChAY2FuZGlkYXRlcyk7CgogICAgICAgICMgc29ydCBieSBhdmFpbGFibGUgd2hpdGVzcGFjZSBzbyB0aGF0IHdlIGNhbiByZW1vdmUgd2hpdGVzcGFjZQogICAgICAgICMgZnJvbSB0aGUgbWF4aW11bSBhdmFpbGFibGUgZmlyc3QKICAgICAgICBAY2FuZGlkYXRlcyA9IHNvcnQgeyAkYi0+WzFdIDw9PiAkYS0+WzFdIH0gQGNhbmRpZGF0ZXM7CgogICAgICAgICMga2VlcCByZW1vdmluZyB3aGl0ZXNwYWNlIHVudGlsIHdlIGFyZSBkb25lIG9yIGhhdmUgbm8gbW9yZQogICAgICAgIGZvcmVhY2ggbXkgJGNhbmRpZGF0ZSAoQGNhbmRpZGF0ZXMpIHsKICAgICAgICAgICAgbXkgKCAkaSwgJGF2YWlsYWJsZV9zcGFjZXMgKSA9IEB7JGNhbmRpZGF0ZX07CiAgICAgICAgICAgIG15ICRkZWxldGVkX3NwYWNlcyA9CiAgICAgICAgICAgICAgKCAkYXZhaWxhYmxlX3NwYWNlcyA+ICRzcGFjZXNfbmVlZGVkICkKICAgICAgICAgICAgICA/ICRzcGFjZXNfbmVlZGVkCiAgICAgICAgICAgICAgOiAkYXZhaWxhYmxlX3NwYWNlczsKCiAgICAgICAgICAgICMgcmVtb3ZlIHRoZSBpbmNyZW1lbnRhbCBzcGFjZSBmcm9tIHRoaXMgaXRlbQogICAgICAgICAgICAkZ251X2l0ZW1fbGlzdFskaV0tPmRlY3JlYXNlX2F2YWlsYWJsZV9zcGFjZXMoJGRlbGV0ZWRfc3BhY2VzKTsKCiAgICAgICAgICAgIG15ICRpX2RlYnVnID0gJGk7CgogICAgICAgICAgICAjIHVwZGF0ZSB0aGUgbGVhZGluZyB3aGl0ZXNwYWNlIG9mIHRoaXMgaXRlbSBhbmQgYWxsIGl0ZW1zCiAgICAgICAgICAgICMgdGhhdCBjYW1lIGFmdGVyIGl0CiAgICAgICAgICAgIGZvciAoIDsgJGkgPD0gJG1heF9nbnVfaXRlbV9pbmRleCA7ICRpKysgKSB7CgogICAgICAgICAgICAgICAgbXkgJG9sZF9zcGFjZXMgPSAkZ251X2l0ZW1fbGlzdFskaV0tPmdldF9zcGFjZXMoKTsKICAgICAgICAgICAgICAgIGlmICggJG9sZF9zcGFjZXMgPj0gJGRlbGV0ZWRfc3BhY2VzICkgewogICAgICAgICAgICAgICAgICAgICRnbnVfaXRlbV9saXN0WyRpXS0+ZGVjcmVhc2VfU1BBQ0VTKCRkZWxldGVkX3NwYWNlcyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzaG91bGRuJ3QgaGFwcGVuIGV4Y2VwdCBmb3IgY29kZSBidWc6CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBteSAkbGV2ZWwgICAgICAgID0gJGdudV9pdGVtX2xpc3RbJGlfZGVidWddLT5nZXRfbGV2ZWwoKTsKICAgICAgICAgICAgICAgICAgICBteSAkY2lfbGV2ZWwgICAgID0gJGdudV9pdGVtX2xpc3RbJGlfZGVidWddLT5nZXRfY2lfbGV2ZWwoKTsKICAgICAgICAgICAgICAgICAgICBteSAkb2xkX2xldmVsICAgID0gJGdudV9pdGVtX2xpc3RbJGldLT5nZXRfbGV2ZWwoKTsKICAgICAgICAgICAgICAgICAgICBteSAkb2xkX2NpX2xldmVsID0gJGdudV9pdGVtX2xpc3RbJGldLT5nZXRfY2lfbGV2ZWwoKTsKICAgICAgICAgICAgICAgICAgICB3YXJuaW5nKAoicHJvZ3JhbSBidWcgd2l0aCAtbHA6IHdhbnQgdG8gZGVsZXRlICRkZWxldGVkX3NwYWNlcyBmcm9tIGl0ZW0gJGksIGJ1dCBvbGQ9JG9sZF9zcGFjZXMgZGVsZXRlZDogbGV2PSRsZXZlbCBjaT0kY2lfbGV2ZWwgIGRlbGV0ZWQ6IGxldmVsPSRvbGRfbGV2ZWwgY2k9JGNpX2xldmVsXG4iCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICByZXBvcnRfZGVmaW5pdGVfYnVnKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGdudV9wb3NpdGlvbl9wcmVkaWN0b3IgLT0gJGRlbGV0ZWRfc3BhY2VzOwogICAgICAgICAgICAkc3BhY2VzX25lZWRlZCAgICAgICAgICAtPSAkZGVsZXRlZF9zcGFjZXM7CiAgICAgICAgICAgIGxhc3QgdW5sZXNzICggJHNwYWNlc19uZWVkZWQgPiAwICk7CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgZmluaXNoX2xwX2JhdGNoIHsKCiAgICAgICAgIyBUaGlzIHJvdXRpbmUgaXMgY2FsbGVkIG9uY2UgYWZ0ZXIgZWFjaCBvdXRwdXQgc3RyZWFtIGJhdGNoIGlzCiAgICAgICAgIyBmaW5pc2hlZCB0byB1bmRvIGluZGVudGF0aW9uIGZvciBhbGwgaW5jb21wbGV0ZSAtbHAKICAgICAgICAjIGluZGVudGF0aW9uIGxldmVscy4gIEl0IGlzIHRvbyByaXNreSB0byBsZWF2ZSBhIGxldmVsIG9wZW4sCiAgICAgICAgIyBiZWNhdXNlIHRoZW4gd2UgY2FuJ3QgYmFja3RyYWNrIGluIGNhc2Ugb2YgYSBsb25nIGxpbmUgdG8gZm9sbG93LgogICAgICAgICMgVGhpcyBtZWFucyB0aGF0IGNvbW1lbnRzIGFuZCBibGFuayBsaW5lcyB3aWxsIGRpc3J1cHQgdGhpcwogICAgICAgICMgaW5kZW50YXRpb24gc3R5bGUuICBCdXQgdGhlIHZlcnRpY2FsIGFsaWduZXIgbWF5IGJlIGFibGUgdG8KICAgICAgICAjIGdldCB0aGUgc3BhY2UgYmFjayBpZiB0aGVyZSBhcmUgc2lkZSBjb21tZW50cy4KCiAgICAgICAgIyB0aGlzIGlzIG9ubHkgZm9yIHRoZSAnbHAnIHN0eWxlCiAgICAgICAgcmV0dXJuIHVubGVzcyAoJHJPcHRzX2xpbmVfdXBfcGFyZW50aGVzZXMpOwoKICAgICAgICAjIG5vdGhpbmcgY2FuIGJlIGRvbmUgaWYgbm8gc3RhY2sgaXRlbXMgZGVmaW5lZCBmb3IgdGhpcyBsaW5lCiAgICAgICAgcmV0dXJuIGlmICggJG1heF9nbnVfaXRlbV9pbmRleCA9PSBVTkRFRklORURfSU5ERVggKTsKCiAgICAgICAgIyBsb29wIG92ZXIgYWxsIHdoaXRlc3BhY2UgaXRlbXMgY3JlYXRlZCBmb3IgdGhlIGN1cnJlbnQgYmF0Y2gKICAgICAgICBmb3JlYWNoIG15ICRpICggMCAuLiAkbWF4X2dudV9pdGVtX2luZGV4ICkgewogICAgICAgICAgICBteSAkaXRlbSA9ICRnbnVfaXRlbV9saXN0WyRpXTsKCiAgICAgICAgICAgICMgb25seSBsb29rIGZvciBvcGVuIGl0ZW1zCiAgICAgICAgICAgIG5leHQgaWYgKCAkaXRlbS0+Z2V0X2Nsb3NlZCgpID49IDAgKTsKCiAgICAgICAgICAgICMgVGVudGF0aXZlbHkgcmVtb3ZlIGFsbCBvZiB0aGUgYXZhaWxhYmxlIHNwYWNlCiAgICAgICAgICAgICMgKFRoZSB2ZXJ0aWNhbCBhbGlnbmVyIHdpbGwgdHJ5IHRvIGdldCBpdCBiYWNrIGxhdGVyKQogICAgICAgICAgICBteSAkYXZhaWxhYmxlX3NwYWNlcyA9ICRpdGVtLT5nZXRfYXZhaWxhYmxlX3NwYWNlcygpOwogICAgICAgICAgICBpZiAoICRhdmFpbGFibGVfc3BhY2VzID4gMCApIHsKCiAgICAgICAgICAgICAgICAjIGRlbGV0ZSBpbmNyZW1lbnRhbCBzcGFjZSBmb3IgdGhpcyBpdGVtCiAgICAgICAgICAgICAgICAkZ251X2l0ZW1fbGlzdFskaV0KICAgICAgICAgICAgICAgICAgLT50ZW50YXRpdmVseV9kZWNyZWFzZV9hdmFpbGFibGVfc3BhY2VzKCRhdmFpbGFibGVfc3BhY2VzKTsKCiAgICAgICAgICAgICAgICAjIFJlZHVjZSB0aGUgdG90YWwgaW5kZW50YXRpb24gc3BhY2Ugb2YgYW55IG5vZGVzIHRoYXQgZm9sbG93CiAgICAgICAgICAgICAgICAjIE5vdGUgdGhhdCBhbnkgc3VjaCBub2RlcyBtdXN0IG5lY2Vzc2FyaWx5IGJlIGRlcGVuZGVudHMKICAgICAgICAgICAgICAgICMgb2YgdGhpcyBub2RlLgogICAgICAgICAgICAgICAgZm9yZWFjaCAoICRpICsgMSAuLiAkbWF4X2dudV9pdGVtX2luZGV4ICkgewogICAgICAgICAgICAgICAgICAgICRnbnVfaXRlbV9saXN0WyRfXS0+ZGVjcmVhc2VfU1BBQ0VTKCRhdmFpbGFibGVfc3BhY2VzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9Cn0gIyMgZW5kIGNsb3N1cmUgc2V0X2xlYWRpbmdfd2hpdGVzcGFjZQoKc3ViIHJlZHVjZV9scF9pbmRlbnRhdGlvbiB7CgogICAgIyByZWR1Y2UgdGhlIGxlYWRpbmcgd2hpdGVzcGFjZSBhdCB0b2tlbiAkaSBpZiBwb3NzaWJsZSBieSAkc3BhY2VzX25lZWRlZAogICAgIyAoYSBsYXJnZSB2YWx1ZSBvZiAkc3BhY2VzX25lZWRlZCB3aWxsIHJlbW92ZSBhbGwgZXhjZXNzIHNwYWNlKQogICAgIyBOT1RFOiB0byBiZSBjYWxsZWQgZnJvbSBzY2FuX2xpc3Qgb25seSBmb3IgYSBzZXF1ZW5jZSBvZiB0b2tlbnMKICAgICMgY29udGFpbmVkIGJldHdlZW4gb3BlbmluZyBhbmQgY2xvc2luZyBwYXJlbnMvYnJhY2VzL2JyYWNrZXRzCgogICAgbXkgKCAkc2VsZiwgJGksICRzcGFjZXNfd2FudGVkICkgPSBAXzsKICAgIG15ICRkZWxldGVkX3NwYWNlcyA9IDA7CgogICAgbXkgJGl0ZW0gICAgICAgICAgICAgPSAkbGVhZGluZ19zcGFjZXNfdG9fZ29bJGldOwogICAgbXkgJGF2YWlsYWJsZV9zcGFjZXMgPSAkaXRlbS0+Z2V0X2F2YWlsYWJsZV9zcGFjZXMoKTsKCiAgICBpZiAoCiAgICAgICAgJGF2YWlsYWJsZV9zcGFjZXMgPiAwCiAgICAgICAgJiYgKCAoICRzcGFjZXNfd2FudGVkIDw9ICRhdmFpbGFibGVfc3BhY2VzICkKICAgICAgICAgICAgfHwgISRpdGVtLT5nZXRfaGF2ZV9jaGlsZCgpICkKICAgICAgKQogICAgewoKICAgICAgICAjIHdlJ2xsIHJlbW92ZSB0aGVzZSBzcGFjZXMsIGJ1dCBtYXJrIHRoZW0gYXMgcmVjb3ZlcmFibGUKICAgICAgICAkZGVsZXRlZF9zcGFjZXMgPQogICAgICAgICAgJGl0ZW0tPnRlbnRhdGl2ZWx5X2RlY3JlYXNlX2F2YWlsYWJsZV9zcGFjZXMoJHNwYWNlc193YW50ZWQpOwogICAgfQoKICAgIHJldHVybiAkZGVsZXRlZF9zcGFjZXM7Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQ09ERSBTRUNUSU9OIDEzOiBQcmVwYXJpbmcgYmF0Y2hlcyBmb3IgdmVydGljYWwgYWxpZ25tZW50CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpzdWIgc2VuZF9saW5lc190b192ZXJ0aWNhbF9hbGlnbmVyIHsKCiAgICBteSAoJHNlbGYpID0gQF87CgogICAgIyBUaGlzIHJvdXRpbmUgcmVjZWl2ZXMgYSBiYXRjaCBvZiBjb2RlIGZvciB3aGljaCB0aGUgZmluYWwgbGluZSBicmVha3MKICAgICMgaGF2ZSBiZWVuIGRlZmluZWQuIEhlcmUgd2UgcHJlcGFyZSB0aGUgbGluZXMgZm9yIHBhc3NpbmcgdG8gdGhlIHZlcnRpY2FsCiAgICAjIGFsaWduZXIuICBXZSBkbyB0aGUgZm9sbG93aW5nIHRhc2tzOgogICAgIyAtIG1hcmsgY2VydGFpbiB2ZXJ0aWNhbCBhbGlnbm1lbnQgdG9rZW5zLCBzdWNoIGFzICc9JywgaW4gZWFjaCBsaW5lCiAgICAjIC0gbWFrZSBtaW5vciBpbmRlbnRhdGlvbiBhZGp1c3RtZW50cwogICAgIyAtIGRvIGxvZ2ljYWwgcGFkZGluZzogaW5zZXJ0IGV4dHJhIGJsYW5rIHNwYWNlcyB0byBoZWxwIGRpc3BsYXkgY2VydGFpbgogICAgIyAgIGxvZ2ljYWwgY29uc3RydWN0aW9ucwoKICAgIG15ICR0aGlzX2JhdGNoID0gJHNlbGYtPltfdGhpc19iYXRjaF9dOwogICAgbXkgJHJsaW5lc19LICAgPSAkdGhpc19iYXRjaC0+W19ybGluZXNfS19dOwogICAgaWYgKCAhQHskcmxpbmVzX0t9ICkgewoKICAgICAgICAjIFRoaXMgY2FuJ3QgaGFwcGVuIGJlY2F1c2Ugc3ViIGdyaW5kX2JhdGNoX29mX0NPREUgYWx3YXlzIHJlY2VpdmVzCiAgICAgICAgIyB0b2tlbnMgd2hpY2ggaXQgdHVybnMgaW50byBvbmUgb3IgbW9yZSBsaW5lcy4gSWYgd2UgZ2V0IGhlcmUgaXQgbWVhbnMKICAgICAgICAjIHRoYXQgYSBwcm9ncmFtbWluZyBlcnJvciBoYXMgY2F1c2VkIHRob3NlIGxpbmVzIHRvIGJlIGxvc3QuCiAgICAgICAgRmF1bHQoIlVuZXhwZWN0ZWQgY2FsbCB3aXRoIG5vIGxpbmVzIik7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgbXkgJG5fbGFzdF9saW5lID0gQHskcmxpbmVzX0t9IC0gMTsKCiAgICBteSAkZG9fbm90X3BhZCAgICAgICAgICAgICAgID0gJHRoaXNfYmF0Y2gtPltfZG9fbm90X3BhZF9dOwogICAgbXkgJHBlYWtfYmF0Y2hfc2l6ZSAgICAgICAgICA9ICR0aGlzX2JhdGNoLT5bX3BlYWtfYmF0Y2hfc2l6ZV9dOwogICAgbXkgJHN0YXJ0aW5nX2luX3F1b3RlICAgICAgICA9ICR0aGlzX2JhdGNoLT5bX3N0YXJ0aW5nX2luX3F1b3RlX107CiAgICBteSAkZW5kaW5nX2luX3F1b3RlICAgICAgICAgID0gJHRoaXNfYmF0Y2gtPltfZW5kaW5nX2luX3F1b3RlX107CiAgICBteSAkaXNfc3RhdGljX2Jsb2NrX2NvbW1lbnQgID0gJHRoaXNfYmF0Y2gtPltfaXNfc3RhdGljX2Jsb2NrX2NvbW1lbnRfXTsKICAgIG15ICRpYmVnMCAgICAgICAgICAgICAgICAgICAgPSAkdGhpc19iYXRjaC0+W19pYmVnMF9dOwogICAgbXkgJHJLX3RvX2dvICAgICAgICAgICAgICAgICA9ICR0aGlzX2JhdGNoLT5bX3JLX3RvX2dvX107CiAgICBteSAkYmF0Y2hfY291bnQgICAgICAgICAgICAgID0gJHRoaXNfYmF0Y2gtPltfYmF0Y2hfY291bnRfXTsKICAgIG15ICRyaXhfc2Vxbm9fY29udHJvbGxpbmdfY2kgPSAkdGhpc19iYXRjaC0+W19yaXhfc2Vxbm9fY29udHJvbGxpbmdfY2lfXTsKCiAgICBteSAkckxMICAgID0gJHNlbGYtPltfckxMX107CiAgICBteSAkS2xpbWl0ID0gJHNlbGYtPltfS2xpbWl0X107CgogICAgbXkgKCAkS2JlZ19uZXh0LCAkS2VuZF9uZXh0ICkgPSBAeyAkcmxpbmVzX0stPlswXSB9OwogICAgbXkgJHR5cGVfYmVnX25leHQgID0gJHJMTC0+WyRLYmVnX25leHRdLT5bX1RZUEVfXTsKICAgIG15ICR0b2tlbl9iZWdfbmV4dCA9ICRyTEwtPlskS2JlZ19uZXh0XS0+W19UT0tFTl9dOwogICAgbXkgJHR5cGVfZW5kX25leHQgID0gJHJMTC0+WyRLZW5kX25leHRdLT5bX1RZUEVfXTsKCiAgICAjIENvbnN0cnVjdCBpbmRleGVzIHRvIHRoZSBnbG9iYWxfdG9fZ28gYXJyYXlzIHNvIHRoYXQgY2FsbGVkIHJvdXRpbmVzIGNhbgogICAgIyBzdGlsbCBhY2Nlc3MgdGhvc2UgYXJyYXlzLiBUaGlzIG1pZ2h0IGV2ZW50dWFsbHkgYmUgcmVtb3ZlZAogICAgIyB3aGVuIGFsbCBjYWxsZWQgcm91dGluZXMgaGF2ZSBiZWVuIGNvbnZlcnRlZCB0byBhY2Nlc3MgdG9rZW4gdmFsdWVzCiAgICAjIGluIHRoZSByTEwgYXJyYXkgaW5zdGVhZC4KICAgIG15ICRLYmVnMCA9ICRLYmVnX25leHQ7CiAgICBteSAoICRyaV9maXJzdCwgJHJpX2xhc3QgKTsKICAgIGZvcmVhY2ggbXkgJHJsaW5lICggQHskcmxpbmVzX0t9ICkgewogICAgICAgIG15ICggJEtiZWcsICRLZW5kICkgPSBAeyRybGluZX07CiAgICAgICAgbXkgJGliZWcgPSAkaWJlZzAgKyAkS2JlZyAtICRLYmVnMDsKICAgICAgICBteSAkaWVuZCA9ICRpYmVnMCArICRLZW5kIC0gJEtiZWcwOwogICAgICAgIHB1c2ggQHskcmlfZmlyc3R9LCAkaWJlZzsKICAgICAgICBwdXNoIEB7JHJpX2xhc3R9LCAgJGllbmQ7CiAgICB9CgogICAgbXkgKCAkY3Njd19ibG9ja19jb21tZW50LCAkY2xvc2luZ19zaWRlX2NvbW1lbnQgKTsKICAgIGlmICggJHJPcHRzLT57J2Nsb3Npbmctc2lkZS1jb21tZW50cyd9ICkgewogICAgICAgICggJGNsb3Npbmdfc2lkZV9jb21tZW50LCAkY3Njd19ibG9ja19jb21tZW50ICkgPQogICAgICAgICAgJHNlbGYtPmFkZF9jbG9zaW5nX3NpZGVfY29tbWVudCgpOwogICAgfQoKICAgIG15ICRyaW5kZW50YXRpb25fbGlzdCA9IFswXTsgICAgIyByZWYgdG8gaW5kZW50YXRpb25zIGZvciBlYWNoIGxpbmUKCiAgICAjIGRlZmluZSB0aGUgYXJyYXkgQHskcmFsaWdubWVudF90eXBlX3RvX2dvfSBmb3IgdGhlIG91dHB1dCB0b2tlbnMKICAgICMgd2hpY2ggd2lsbCBiZSBub24tYmxhbmsgZm9yIGVhY2ggc3BlY2lhbCB0b2tlbiAoc3VjaCBhcyA9PikKICAgICMgZm9yIHdoaWNoIGFsaWdubWVudCBpcyByZXF1aXJlZC4KICAgIG15ICRyYWxpZ25tZW50X3R5cGVfdG9fZ28gPQogICAgICAkc2VsZi0+c2V0X3ZlcnRpY2FsX2FsaWdubWVudF9tYXJrZXJzKCAkcmlfZmlyc3QsICRyaV9sYXN0ICk7CgogICAgIyBmbHVzaCBiZWZvcmUgYSBsb25nIGlmIHN0YXRlbWVudCB0byBhdm9pZCB1bndhbnRlZCBhbGlnbm1lbnQKICAgIGlmICggICAkbl9sYXN0X2xpbmUgPiAwCiAgICAgICAgJiYgJHR5cGVfYmVnX25leHQgZXEgJ2snCiAgICAgICAgJiYgJHRva2VuX2JlZ19uZXh0ID1+IC9eKGlmfHVubGVzcykkLyApCiAgICB7CiAgICAgICAgJHNlbGYtPmZsdXNoX3ZlcnRpY2FsX2FsaWduZXIoKTsKICAgIH0KCiAgICAkc2VsZi0+dW5kb19jaSggJHJpX2ZpcnN0LCAkcmlfbGFzdCwgJHJpeF9zZXFub19jb250cm9sbGluZ19jaSApOwoKICAgICRzZWxmLT5zZXRfbG9naWNhbF9wYWRkaW5nKCAkcmlfZmlyc3QsICRyaV9sYXN0LCAkcGVha19iYXRjaF9zaXplLAogICAgICAgICRzdGFydGluZ19pbl9xdW90ZSApCiAgICAgIGlmICggJHJPcHRzLT57J2xvZ2ljYWwtcGFkZGluZyd9ICk7CgogICAgIyBSZXN1bSBsZW5ndGhzLiBXZSBuZWVkIGFjY3VyYXRlIGxlbmd0aHMgZm9yIG1ha2luZyBhbGlnbm1lbnQgcGF0dGVybnMsCiAgICAjIGFuZCB3ZSBtYXkgaGF2ZSB1bm1hc2tlZCBhIHNlbWljb2xvbiB3aGljaCB3YXMgbm90IGluY2x1ZGVkIGF0IHRoZSBzdGFydC4KICAgIGZvciAoIDAgLi4gJG1heF9pbmRleF90b19nbyApIHsKICAgICAgICAkc3VtbWVkX2xlbmd0aHNfdG9fZ29bICRfICsgMSBdID0KICAgICAgICAgICRzdW1tZWRfbGVuZ3Roc190b19nb1skX10gKyAkdG9rZW5fbGVuZ3Roc190b19nb1skX107CiAgICB9CgogICAgIyBsb29wIHRvIHByZXBhcmUgZWFjaCBsaW5lIGZvciBzaGlwbWVudAogICAgbXkgKCAkS2JlZywgJHR5cGVfYmVnLCAkdG9rZW5fYmVnICk7CiAgICBteSAoICRLZW5kLCAkdHlwZV9lbmQgKTsKICAgIGZvciBteSAkbiAoIDAgLi4gJG5fbGFzdF9saW5lICkgewoKICAgICAgICBteSAkaWJlZyAgICAgICAgICAgICAgPSAkcmlfZmlyc3QtPlskbl07CiAgICAgICAgbXkgJGllbmQgICAgICAgICAgICAgID0gJHJpX2xhc3QtPlskbl07CiAgICAgICAgbXkgJHJsaW5lICAgICAgICAgICAgID0gJHJsaW5lc19LLT5bJG5dOwogICAgICAgIG15ICRmb3JjZWRfYnJlYWtwb2ludCA9ICRybGluZS0+WzJdOwoKICAgICAgICAjIHdlIG1heSBuZWVkIHRvIGxvb2sgYXQgdmFyaWFibGVzIG9uIHRocmVlIGNvbnNlY3V0aXZlIGxpbmVzIC4uLgoKICAgICAgICAjIFNvbWUgdmFycyBvbiBsaW5lIFtuLTFdLCBpZiBhbnk6CiAgICAgICAgbXkgJEtiZWdfbGFzdCAgICAgID0gJEtiZWc7CiAgICAgICAgbXkgJHR5cGVfYmVnX2xhc3QgID0gJHR5cGVfYmVnOwogICAgICAgIG15ICR0b2tlbl9iZWdfbGFzdCA9ICR0b2tlbl9iZWc7CiAgICAgICAgbXkgJEtlbmRfbGFzdCAgICAgID0gJEtlbmQ7CiAgICAgICAgbXkgJHR5cGVfZW5kX2xhc3QgID0gJHR5cGVfZW5kOwoKICAgICAgICAjIFNvbWUgdmFycyBvbiBsaW5lIFtuXToKICAgICAgICAkS2JlZyAgICAgID0gJEtiZWdfbmV4dDsKICAgICAgICAkdHlwZV9iZWcgID0gJHR5cGVfYmVnX25leHQ7CiAgICAgICAgJHRva2VuX2JlZyA9ICR0b2tlbl9iZWdfbmV4dDsKICAgICAgICAkS2VuZCAgICAgID0gJEtlbmRfbmV4dDsKICAgICAgICAkdHlwZV9lbmQgID0gJHR5cGVfZW5kX25leHQ7CgogICAgICAgICMgT25seSBmb3J3YXJkIGVuZGluZyBLIHZhbHVlcyBvZiBub24tY29tbWVudHMgZG93biB0aGUgcGlwZWxpbmUuCiAgICAgICAgIyBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gY2hlY2tpbmcgdGhhdCB0aGUgbGFzdCBDT0RFX3R5cGUgaXMgYmxhbmsgb3IKICAgICAgICAjIGVxdWFsIHRvICdWRVInLiBTZWUgYWxzbyBzdWIgcmVzeW5jX2xpbmVzX2FuZF90b2tlbnMgZm9yIHJlbGF0ZWQKICAgICAgICAjIGNvZGluZy4gIE5vdGUgdGhhdCAnJGJhdGNoX0NPREVfdHlwZScgaXMgdGhlIGNvZGUgdHlwZSBvZiB0aGUgbGluZQogICAgICAgICMgdG8gd2hpY2ggdGhlIGVuZGluZyB0b2tlbiBiZWxvbmdzLgogICAgICAgIG15ICRiYXRjaF9DT0RFX3R5cGUgPSAkdGhpc19iYXRjaC0+W19iYXRjaF9DT0RFX3R5cGVfXTsKICAgICAgICBteSAkS2VuZF9jb2RlID0KICAgICAgICAgICRiYXRjaF9DT0RFX3R5cGUgJiYgJGJhdGNoX0NPREVfdHlwZSBuZSAnVkVSJyA/IHVuZGVmIDogJEtlbmQ7CgogICAgICAgICMgV2UgdXNlIHR3byBzbGlnaHRseSBkaWZmZXJlbnQgZGVmaW5pdGlvbnMgb2YgbGV2ZWwganVtcCBhdCB0aGUgZW5kCiAgICAgICAgIyBvZiBsaW5lOgogICAgICAgICMgICRsanVtcCBpcyB0aGUgbGV2ZWwganVtcCBuZWVkZWQgYnkgJ3N1YiBzZXRfYWRqdXN0ZWRfaW5kZW50YXRpb24nCiAgICAgICAgIyAgJGxldmVsX2p1bXAgaXMgdGhlIGxldmVsIGp1bXAgbmVlZGVkIGJ5IHRoZSB2ZXJ0aWNhbCBhbGlnbmVyLgogICAgICAgIG15ICRsanVtcCA9IDA7ICAgICMgbGV2ZWwganVtcCBhdCBlbmQgb2YgbGluZQoKICAgICAgICAjIEdldCBzb21lIHZhcnMgb24gbGluZSBbbisxXSwgaWYgYW55OgogICAgICAgIGlmICggJG4gPCAkbl9sYXN0X2xpbmUgKSB7CiAgICAgICAgICAgICggJEtiZWdfbmV4dCwgJEtlbmRfbmV4dCApID0KICAgICAgICAgICAgICBAeyAkcmxpbmVzX0stPlsgJG4gKyAxIF0gfTsKICAgICAgICAgICAgJHR5cGVfYmVnX25leHQgID0gJHJMTC0+WyRLYmVnX25leHRdLT5bX1RZUEVfXTsKICAgICAgICAgICAgJHRva2VuX2JlZ19uZXh0ID0gJHJMTC0+WyRLYmVnX25leHRdLT5bX1RPS0VOX107CiAgICAgICAgICAgICR0eXBlX2VuZF9uZXh0ICA9ICRyTEwtPlskS2VuZF9uZXh0XS0+W19UWVBFX107CiAgICAgICAgICAgICRsanVtcCA9ICRyTEwtPlskS2JlZ19uZXh0XS0+W19MRVZFTF9dIC0gJHJMTC0+WyRLZW5kXS0+W19MRVZFTF9dOwogICAgICAgIH0KCiAgICAgICAgIyBsZXZlbCBqdW1wIGF0IGVuZCBvZiBsaW5lIGZvciB0aGUgdmVydGljYWwgYWxpZ25lcjoKICAgICAgICBteSAkbGV2ZWxfanVtcCA9CiAgICAgICAgICAkS2VuZCA+PSAkS2xpbWl0CiAgICAgICAgICA/IDAKICAgICAgICAgIDogJHJMTC0+WyAkS2VuZCArIDEgXS0+W19TTEVWRUxfXSAtICRyTEwtPlskS2JlZ10tPltfU0xFVkVMX107CgogICAgICAgICRzZWxmLT5kZWxldGVfbmVlZGxlc3NfYWxpZ25tZW50cyggJGliZWcsICRpZW5kLAogICAgICAgICAgICAkcmFsaWdubWVudF90eXBlX3RvX2dvICk7CgogICAgICAgIG15ICggJHJ0b2tlbnMsICRyZmllbGRzLCAkcnBhdHRlcm5zLCAkcmZpZWxkX2xlbmd0aHMgKSA9CiAgICAgICAgICAkc2VsZi0+bWFrZV9hbGlnbm1lbnRfcGF0dGVybnMoICRpYmVnLCAkaWVuZCwKICAgICAgICAgICAgJHJhbGlnbm1lbnRfdHlwZV90b19nbyApOwoKICAgICAgICBteSAoICRpbmRlbnRhdGlvbiwgJGxldiwgJGxldmVsX2VuZCwgJHRlcm1pbmFsX3R5cGUsCiAgICAgICAgICAgICR0ZXJtaW5hbF9ibG9ja190eXBlLCAkaXNfc2VtaWNvbG9uX3Rlcm1pbmF0ZWQsICRpc19vdXRkZW50ZWRfbGluZSApCiAgICAgICAgICA9ICRzZWxmLT5zZXRfYWRqdXN0ZWRfaW5kZW50YXRpb24oICRpYmVnLCAkaWVuZCwgJHJmaWVsZHMsCiAgICAgICAgICAgICRycGF0dGVybnMsICAgICAgICAgJHJpX2ZpcnN0LCAkcmlfbGFzdCwKICAgICAgICAgICAgJHJpbmRlbnRhdGlvbl9saXN0LCAkbGp1bXAsICAgICRzdGFydGluZ19pbl9xdW90ZSwKICAgICAgICAgICAgJGlzX3N0YXRpY19ibG9ja19jb21tZW50LCApOwoKICAgICAgICAjIHdlIHdpbGwgYWxsb3cgb3V0ZGVudGluZyBvZiBsb25nIGxpbmVzLi4KICAgICAgICBteSAkb3V0ZGVudF9sb25nX2xpbmVzID0gKAoKICAgICAgICAgICAgIyB3aGljaCBhcmUgbG9uZyBxdW90ZXMsIGlmIGFsbG93ZWQKICAgICAgICAgICAgKCAkdHlwZV9iZWcgZXEgJ1EnICYmICRyT3B0cy0+eydvdXRkZW50LWxvbmctcXVvdGVzJ30gKQoKICAgICAgICAgICAgIyB3aGljaCBhcmUgbG9uZyBibG9jayBjb21tZW50cywgaWYgYWxsb3dlZAogICAgICAgICAgICAgIHx8ICgKICAgICAgICAgICAgICAgICAgICR0eXBlX2JlZyBlcSAnIycKICAgICAgICAgICAgICAgICYmICRyT3B0cy0+eydvdXRkZW50LWxvbmctY29tbWVudHMnfQoKICAgICAgICAgICAgICAgICMgYnV0IG5vdCBpZiB0aGlzIGlzIGEgc3RhdGljIGJsb2NrIGNvbW1lbnQKICAgICAgICAgICAgICAgICYmICEkaXNfc3RhdGljX2Jsb2NrX2NvbW1lbnQKICAgICAgICAgICAgICApCiAgICAgICAgKTsKCiAgICAgICAgbXkgJGJyZWFrX2FsaWdubWVudF9iZWZvcmUgPSAkaXNfb3V0ZGVudGVkX2xpbmUgfHwgJGRvX25vdF9wYWQ7CiAgICAgICAgbXkgJGJyZWFrX2FsaWdubWVudF9hZnRlciAgPSAkaXNfb3V0ZGVudGVkX2xpbmU7CgogICAgICAgICMgZmx1c2ggYXQgYW4gJ2lmJyB3aGljaCBmb2xsb3dzIGEgbGluZSB3aXRoICgxKSB0ZXJtaW5hbCBzZW1pY29sb24KICAgICAgICAjIG9yICgyKSB0ZXJtaW5hbCBibG9ja190eXBlIHdoaWNoIGlzIG5vdCBhbiAnaWYnLiAgVGhpcyBwcmV2ZW50cwogICAgICAgICMgdW53YW50ZWQgYWxpZ25tZW50IGJldHdlZW4gdGhlIGxpbmVzLgogICAgICAgIGlmICggJHR5cGVfYmVnIGVxICdrJyAmJiAkdG9rZW5fYmVnIGVxICdpZicgKSB7CiAgICAgICAgICAgIG15ICRLbSAgICAgICAgICAgPSAkc2VsZi0+S19wcmV2aW91c19jb2RlKCRLYmVnKTsKICAgICAgICAgICAgbXkgJHR5cGVfbSAgICAgICA9ICdiJzsKICAgICAgICAgICAgbXkgJGJsb2NrX3R5cGVfbSA9ICdiJzsKICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCRLbSkgKSB7CiAgICAgICAgICAgICAgICAkdHlwZV9tICAgICAgID0gJHJMTC0+WyRLbV0tPltfVFlQRV9dOwogICAgICAgICAgICAgICAgJGJsb2NrX3R5cGVfbSA9ICRyTEwtPlskS21dLT5bX0JMT0NLX1RZUEVfXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBicmVhayBhZnRlciBhbnl0aGluZyB0aGF0IGlzIG5vdCBpZi1saWtlCiAgICAgICAgICAgICRicmVha19hbGlnbm1lbnRfYmVmb3JlIHx8PSAkdHlwZV9tIGVxICc7JwogICAgICAgICAgICAgIHx8ICggJHR5cGVfbSBlcSAnfScKICAgICAgICAgICAgICAgICYmICRibG9ja190eXBlX20gbmUgJ2lmJwogICAgICAgICAgICAgICAgJiYgJGJsb2NrX3R5cGVfbSBuZSAndW5sZXNzJwogICAgICAgICAgICAgICAgJiYgJGJsb2NrX3R5cGVfbSBuZSAnZWxzaWYnCiAgICAgICAgICAgICAgICAmJiAkYmxvY2tfdHlwZV9tIG5lICdlbHNlJyApOwogICAgICAgIH0KCiAgICAgICAgbXkgJHJ2ZXJ0aWNhbF90aWdodG5lc3NfZmxhZ3MgPQogICAgICAgICAgJHNlbGYtPnNldF92ZXJ0aWNhbF90aWdodG5lc3NfZmxhZ3MoICRuLCAkbl9sYXN0X2xpbmUsICRpYmVnLCAkaWVuZCwKICAgICAgICAgICAgJHJpX2ZpcnN0LCAkcmlfbGFzdCwgJGVuZGluZ19pbl9xdW90ZSwgJGNsb3Npbmdfc2lkZV9jb21tZW50ICk7CgogICAgICAgICMgU2V0IGEgZmxhZyBhdCB0aGUgZmluYWwgJzonIG9mIGEgdGVybmFyeSBjaGFpbiB0byByZXF1ZXN0CiAgICAgICAgIyB2ZXJ0aWNhbCBhbGlnbm1lbnQgb2YgdGhlIGZpbmFsIHRlcm0uICBIZXJlIGlzIGEKICAgICAgICAjIHNsaWdodGx5IGNvbXBsZXggZXhhbXBsZToKICAgICAgICAjCiAgICAgICAgIyAkc2VsZi0+e190ZXh0fSA9ICgKICAgICAgICAjICAgICEkc2VjdGlvbiAgICAgICAgPyAnJwogICAgICAgICMgICA6ICR0eXBlIGVxICdpdGVtJyA/ICJ0aGUgJHNlY3Rpb24gZW50cnkiCiAgICAgICAgIyAgIDogICAgICAgICAgICAgICAgICAgInRoZSBzZWN0aW9uIG9uICRzZWN0aW9uIgogICAgICAgICMgKQogICAgICAgICMgLiAoCiAgICAgICAgIyAgICRwYWdlCiAgICAgICAgIyAgID8gKCAkc2VjdGlvbiA/ICcgaW4gJyA6ICcnICkgLiAidGhlICRwYWdlJHBhZ2VfZXh0IG1hbnBhZ2UiCiAgICAgICAgIyAgIDogJyBlbHNld2hlcmUgaW4gdGhpcyBkb2N1bWVudCcKICAgICAgICAjICk7CiAgICAgICAgIwogICAgICAgIG15ICRpc190ZXJtaW5hbF90ZXJuYXJ5ID0gMDsKCiAgICAgICAgaWYgKCAkdHlwZV9iZWcgZXEgJzonIHx8ICRuID4gMCAmJiAkdHlwZV9lbmRfbGFzdCBlcSAnOicgKSB7CiAgICAgICAgICAgIG15ICRsYXN0X2xlYWRpbmdfdHlwZSA9ICRuID4gMCA/ICR0eXBlX2JlZ19sYXN0IDogJzonOwogICAgICAgICAgICBpZiAoICAgJHRlcm1pbmFsX3R5cGUgbmUgJzsnCiAgICAgICAgICAgICAgICAmJiAkbl9sYXN0X2xpbmUgPiAkbgogICAgICAgICAgICAgICAgJiYgJGxldmVsX2VuZCA9PSAkbGV2ICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJGxldmVsX2VuZCAgICAgPSAkckxMLT5bJEtiZWdfbmV4dF0tPltfTEVWRUxfXTsKICAgICAgICAgICAgICAgICR0ZXJtaW5hbF90eXBlID0gJHJMTC0+WyRLYmVnX25leHRdLT5bX1RZUEVfXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkbGFzdF9sZWFkaW5nX3R5cGUgZXEgJzonCiAgICAgICAgICAgICAgICAmJiAoICAgKCAkdGVybWluYWxfdHlwZSBlcSAnOycgJiYgJGxldmVsX2VuZCA8PSAkbGV2ICkKICAgICAgICAgICAgICAgICAgICB8fCAoICR0ZXJtaW5hbF90eXBlIG5lICc6JyAmJiAkbGV2ZWxfZW5kIDwgJGxldiApICkKICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIHRoZSB0ZXJtaW5hbCB0ZXJtIG11c3Qgbm90IGNvbnRhaW4gYW55IHRlcm5hcnkgdGVybXMsIGFzIGluCiAgICAgICAgICAgICAgICAjIG15ICRFQ0hPID0gKAogICAgICAgICAgICAgICAgIyAgICAgICAkSXNfTVNXaW4zMiA/ICIuXFxlY2hvJCQiCiAgICAgICAgICAgICAgICAjICAgICA6ICRJc19NYWNPUyAgID8gIjplY2hvJCQiCiAgICAgICAgICAgICAgICAjICAgICA6ICggJElzX05ldFdhcmUgPyAiZWNobyQkIiA6ICIuL2VjaG8kJCIgKQogICAgICAgICAgICAgICAgIyApOwogICAgICAgICAgICAgICAgJGlzX3Rlcm1pbmFsX3Rlcm5hcnkgPSAxOwoKICAgICAgICAgICAgICAgIG15ICRLUCA9ICRyTEwtPlskS2JlZ10tPltfS05FWFRfU0VRX0lURU1fXTsKICAgICAgICAgICAgICAgIHdoaWxlICggZGVmaW5lZCgkS1ApICYmICRLUCA8PSAkS2VuZCApIHsKICAgICAgICAgICAgICAgICAgICBteSAkdHlwZV9LUCA9ICRyTEwtPlskS1BdLT5bX1RZUEVfXTsKICAgICAgICAgICAgICAgICAgICBpZiAoICR0eXBlX0tQIGVxICc/JyB8fCAkdHlwZV9LUCBlcSAnOicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpc190ZXJtaW5hbF90ZXJuYXJ5ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJEtQID0gJHJMTC0+WyRLUF0tPltfS05FWFRfU0VRX0lURU1fXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJGxldmVsX2FkaiAgICAgICAgPSAkbGV2OwogICAgICAgIG15ICRyYWRqdXN0ZWRfbGV2ZWxzID0gJHNlbGYtPltfcmFkanVzdGVkX2xldmVsc19dOwogICAgICAgIGlmICggZGVmaW5lZCgkcmFkanVzdGVkX2xldmVscykgJiYgQHskcmFkanVzdGVkX2xldmVsc30gPT0gQHskckxMfSApIHsKICAgICAgICAgICAgJGxldmVsX2FkaiA9ICRyYWRqdXN0ZWRfbGV2ZWxzLT5bJEtiZWddOwogICAgICAgICAgICBpZiAoICRsZXZlbF9hZGogPCAwICkgeyAkbGV2ZWxfYWRqID0gMCB9CiAgICAgICAgfQoKICAgICAgICAjIGFkZCBhbnkgbmV3IGNsb3Npbmcgc2lkZSBjb21tZW50IHRvIHRoZSBsYXN0IGxpbmUKICAgICAgICBpZiAoICRjbG9zaW5nX3NpZGVfY29tbWVudCAmJiAkbiA9PSAkbl9sYXN0X2xpbmUgJiYgQHskcmZpZWxkc30gKSB7CiAgICAgICAgICAgICRyZmllbGRzLT5bLTFdIC49ICIgJGNsb3Npbmdfc2lkZV9jb21tZW50IjsKCiAgICAgICAgICAgICMgTk9URTogUGF0Y2ggZm9yIGNzYy4gV2UgY2FuIGp1c3QgdXNlIDEgZm9yIHRoZSBsZW5ndGggb2YgdGhlIGNzYwogICAgICAgICAgICAjIGJlY2F1c2UgaXRzIGxlbmd0aCBzaG91bGQgbm90IGJlIGEgbGltaXRpbmcgZmFjdG9yIGZyb20gaGVyZSBvbi4KICAgICAgICAgICAgJHJmaWVsZF9sZW5ndGhzLT5bLTFdICs9IDI7CiAgICAgICAgfQoKICAgICAgICAjIFNldCBmbGFnIHdoaWNoIHRlbGxzIGlmIHRoaXMgbGluZSBpcyBjb250YWluZWQgaW4gYSBtdWx0aS1saW5lIGxpc3QKICAgICAgICBteSAkbGlzdF9zZXFubyA9ICRzZWxmLT5pc19saXN0X2J5X0soJEtiZWcpOwoKICAgICAgICAjIHNlbmQgdGhpcyBuZXcgbGluZSBkb3duIHRoZSBwaXBlCiAgICAgICAgbXkgJHJ2YWxpZ25faGFzaCA9IHt9OwogICAgICAgICRydmFsaWduX2hhc2gtPntsZXZlbH0gICAgICAgICAgICAgICAgICAgICA9ICRsZXY7CiAgICAgICAgJHJ2YWxpZ25faGFzaC0+e2xldmVsX2VuZH0gICAgICAgICAgICAgICAgID0gJGxldmVsX2VuZDsKICAgICAgICAkcnZhbGlnbl9oYXNoLT57bGV2ZWxfYWRqfSAgICAgICAgICAgICAgICAgPSAkbGV2ZWxfYWRqOwogICAgICAgICRydmFsaWduX2hhc2gtPntpbmRlbnRhdGlvbn0gICAgICAgICAgICAgICA9ICRpbmRlbnRhdGlvbjsKICAgICAgICAkcnZhbGlnbl9oYXNoLT57bGlzdF9zZXFub30gICAgICAgICAgICAgICAgPSAkbGlzdF9zZXFubzsKICAgICAgICAkcnZhbGlnbl9oYXNoLT57b3V0ZGVudF9sb25nX2xpbmVzfSAgICAgICAgPSAkb3V0ZGVudF9sb25nX2xpbmVzOwogICAgICAgICRydmFsaWduX2hhc2gtPntpc190ZXJtaW5hbF90ZXJuYXJ5fSAgICAgICA9ICRpc190ZXJtaW5hbF90ZXJuYXJ5OwogICAgICAgICRydmFsaWduX2hhc2gtPntpc190ZXJtaW5hbF9zdGF0ZW1lbnR9ICAgICA9ICRpc19zZW1pY29sb25fdGVybWluYXRlZDsKICAgICAgICAkcnZhbGlnbl9oYXNoLT57cnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFnc30gPSAkcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFnczsKICAgICAgICAkcnZhbGlnbl9oYXNoLT57bGV2ZWxfanVtcH0gICAgICAgICAgICAgICAgPSAkbGV2ZWxfanVtcDsKICAgICAgICAkcnZhbGlnbl9oYXNoLT57cmZpZWxkc30gICAgICAgICAgICAgICAgICAgPSAkcmZpZWxkczsKICAgICAgICAkcnZhbGlnbl9oYXNoLT57cnBhdHRlcm5zfSAgICAgICAgICAgICAgICAgPSAkcnBhdHRlcm5zOwogICAgICAgICRydmFsaWduX2hhc2gtPntydG9rZW5zfSAgICAgICAgICAgICAgICAgICA9ICRydG9rZW5zOwogICAgICAgICRydmFsaWduX2hhc2gtPntyZmllbGRfbGVuZ3Roc30gICAgICAgICAgICA9ICRyZmllbGRfbGVuZ3RoczsKICAgICAgICAkcnZhbGlnbl9oYXNoLT57dGVybWluYWxfYmxvY2tfdHlwZX0gICAgICAgPSAkdGVybWluYWxfYmxvY2tfdHlwZTsKICAgICAgICAkcnZhbGlnbl9oYXNoLT57YmF0Y2hfY291bnR9ICAgICAgICAgICAgICAgPSAkYmF0Y2hfY291bnQ7CiAgICAgICAgJHJ2YWxpZ25faGFzaC0+e2JyZWFrX2FsaWdubWVudF9iZWZvcmV9ICAgID0gJGJyZWFrX2FsaWdubWVudF9iZWZvcmU7CiAgICAgICAgJHJ2YWxpZ25faGFzaC0+e2JyZWFrX2FsaWdubWVudF9hZnRlcn0gICAgID0gJGJyZWFrX2FsaWdubWVudF9hZnRlcjsKICAgICAgICAkcnZhbGlnbl9oYXNoLT57S2VuZH0gICAgICAgICAgICAgICAgICAgICAgPSAkS2VuZF9jb2RlOwogICAgICAgICRydmFsaWduX2hhc2gtPntjaV9sZXZlbH0gICAgICAgICAgICAgICAgICA9ICRjaV9sZXZlbHNfdG9fZ29bJGliZWddOwoKICAgICAgICBteSAkdmFvID0gJHNlbGYtPltfdmVydGljYWxfYWxpZ25lcl9vYmplY3RfXTsKICAgICAgICAkdmFvLT52YWxpZ25faW5wdXQoJHJ2YWxpZ25faGFzaCk7CgogICAgICAgICRkb19ub3RfcGFkID0gMDsKCiAgICAgICAgIyBTZXQgZmxhZyBpbmRpY2F0aW5nIGlmIHRoaXMgbGluZSBlbmRzIGluIGFuIG9wZW5pbmcKICAgICAgICAjIHRva2VuIGFuZCBpcyB2ZXJ5IHNob3J0LCBzbyB0aGF0IGEgYmxhbmsgbGluZSBpcyBub3QKICAgICAgICAjIG5lZWRlZCBpZiB0aGUgc3Vic2VxdWVudCBsaW5lIGlzIGEgY29tbWVudC4KICAgICAgICAjIEV4YW1wbGVzIG9mIHdoYXQgd2UgYXJlIGxvb2tpbmcgZm9yOgogICAgICAgICMgICB7CiAgICAgICAgIyAgICYmICgKICAgICAgICAjICAgQkVHSU4gewogICAgICAgICMgICBkZWZhdWx0IHsKICAgICAgICAjICAgc3ViIHsKICAgICAgICAkc2VsZi0+W19sYXN0X291dHB1dF9zaG9ydF9vcGVuaW5nX3Rva2VuX10KCiAgICAgICAgICAjIGxpbmUgZW5kcyBpbiBvcGVuaW5nIHRva2VuCiAgICAgICAgICAjICAgICAgICAgICAgICAvXltce1woXFtMXSQvCiAgICAgICAgICA9ICRpc19vcGVuaW5nX3R5cGV7JHR5cGVfZW5kfQoKICAgICAgICAgICMgYW5kIGVpdGhlcgogICAgICAgICAgJiYgKAogICAgICAgICAgICAjIGxpbmUgaGFzIGVpdGhlciBzaW5nbGUgb3BlbmluZyB0b2tlbgogICAgICAgICAgICAkS2VuZCA9PSAkS2JlZwoKICAgICAgICAgICAgIyBvciBpcyBhIHNpbmdsZSB0b2tlbiBmb2xsb3dlZCBieSBvcGVuaW5nIHRva2VuLgogICAgICAgICAgICAjIE5vdGUgdGhhdCBzdWIgaWRlbnRpZmllcnMgaGF2ZSBibGFua3MgbGlrZSAnc3ViIGRvaXQnCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdG9rZW5fYmVnICF+IC9ccysvCiAgICAgICAgICAgIHx8ICggJEtlbmQgLSAkS2JlZyA8PSAyICYmIGluZGV4KCAkdG9rZW5fYmVnLCAnICcgKSA8IDAgKQogICAgICAgICAgKQoKICAgICAgICAgICMgYW5kIGxpbWl0IHRvdGFsIHRvIDEwIGNoYXJhY3RlciB3aWR0aHMKICAgICAgICAgICYmIHRva2VuX3NlcXVlbmNlX2xlbmd0aCggJGliZWcsICRpZW5kICkgPD0gMTA7CgogICAgfSAgICAjIGVuZCBvZiBsb29wIHRvIG91dHB1dCBlYWNoIGxpbmUKCiAgICAjIHJlbWVtYmVyIGluZGVudGF0aW9uIG9mIGxpbmVzIGNvbnRhaW5pbmcgb3BlbmluZyBjb250YWluZXJzIGZvcgogICAgIyBsYXRlciB1c2UgYnkgc3ViIHNldF9hZGp1c3RlZF9pbmRlbnRhdGlvbgogICAgJHNlbGYtPnNhdmVfb3BlbmluZ19pbmRlbnRhdGlvbiggJHJpX2ZpcnN0LCAkcmlfbGFzdCwgJHJpbmRlbnRhdGlvbl9saXN0ICk7CgogICAgIyBvdXRwdXQgYW55IG5ldyAtY3NjdyBibG9jayBjb21tZW50CiAgICBpZiAoJGNzY3dfYmxvY2tfY29tbWVudCkgewogICAgICAgICRzZWxmLT5mbHVzaF92ZXJ0aWNhbF9hbGlnbmVyKCk7CiAgICAgICAgbXkgJGZpbGVfd3JpdGVyX29iamVjdCA9ICRzZWxmLT5bX2ZpbGVfd3JpdGVyX29iamVjdF9dOwogICAgICAgICRmaWxlX3dyaXRlcl9vYmplY3QtPndyaXRlX2NvZGVfbGluZSggJGNzY3dfYmxvY2tfY29tbWVudCAuICJcbiIgKTsKICAgIH0KICAgIHJldHVybjsKfQoKeyAgICAjIyBiZWdpbiBjbG9zdXJlIHNldF92ZXJ0aWNhbF9hbGlnbm1lbnRfbWFya2VycwogICAgbXkgJWlzX3ZlcnRpY2FsX2FsaWdubWVudF90eXBlOwogICAgbXkgJWlzX25vdF92ZXJ0aWNhbF9hbGlnbm1lbnRfdG9rZW47CiAgICBteSAlaXNfdmVydGljYWxfYWxpZ25tZW50X2tleXdvcmQ7CiAgICBteSAlaXNfdGVybWluYWxfYWxpZ25tZW50X3R5cGU7CiAgICBteSAlaXNfbG93X2xldmVsX2FsaWdubWVudF90b2tlbjsKCiAgICBCRUdJTiB7CgogICAgICAgIG15IEBxOwoKICAgICAgICAjIFJlcGxhY2VkID1+IGFuZCAvLyBpbiB0aGUgbGlzdC4gIC8vIGhhZCBiZWVuIHJlbW92ZWQgaW4gUlQgMTE5NTg4CiAgICAgICAgQHEgPSBxdyMKICAgICAgICAgID0gKio9ICs9ICo9ICY9IDw8PSAmJj0gLT0gLz0gfD0gPj49IHx8PSAvLz0gLj0gJT0gXj0geD0KICAgICAgICAgIHsgPyA6ID0+ICYmIHx8IH5+ICF+fiA9fiAhfiAvLyA8PT4gLT4KICAgICAgICAgICM7CiAgICAgICAgQGlzX3ZlcnRpY2FsX2FsaWdubWVudF90eXBle0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgICAgICMgVGhlc2UgJ3Rva2VucycgYXJlIG5vdCBhbGlnbmVkLiBXZSBuZWVkIHRoaXMgdG8gcmVtb3ZlIFsKICAgICAgICAjIGZyb20gdGhlIGFib3ZlIGxpc3QgYmVjYXVzZSBpdCBoYXMgdHlwZSA9J3snCiAgICAgICAgQHEgPSBxdyhbKTsKICAgICAgICBAaXNfbm90X3ZlcnRpY2FsX2FsaWdubWVudF90b2tlbntAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICAgICAjIHRoZXNlIGFyZSB0aGUgb25seSB0eXBlcyBhbGlnbmVkIGF0IGEgbGluZSBlbmQKICAgICAgICBAcSA9IHF3KCYmIHx8ID0+KTsKICAgICAgICBAaXNfdGVybWluYWxfYWxpZ25tZW50X3R5cGV7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICAgICAgIyB0aGVzZSB0b2tlbnMgb25seSBhbGlnbiBhdCBsaW5lIGxldmVsCiAgICAgICAgQHEgPSAoICd7JywgJygnICk7CiAgICAgICAgQGlzX2xvd19sZXZlbF9hbGlnbm1lbnRfdG9rZW57QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICAgICAgIyBlcSBhbmQgbmUgd2VyZSByZW1vdmVkIGZyb20gdGhpcyBsaXN0IHRvIGltcHJvdmUgYWxpZ25tZW50IGNoYW5jZXMKICAgICAgICBAcSA9IHF3KGlmIHVubGVzcyBhbmQgb3IgZXJyIGZvciBmb3JlYWNoIHdoaWxlIHVudGlsKTsKICAgICAgICBAaXNfdmVydGljYWxfYWxpZ25tZW50X2tleXdvcmR7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKICAgIH0KCiAgICBzdWIgc2V0X3ZlcnRpY2FsX2FsaWdubWVudF9tYXJrZXJzIHsKCiAgICAgICAgIyBUaGlzIHJvdXRpbmUgdGFrZXMgdGhlIGZpcnN0IHN0ZXAgdG93YXJkIHZlcnRpY2FsIGFsaWdubWVudCBvZiB0aGUKICAgICAgICAjIGxpbmVzIG9mIG91dHB1dCB0ZXh0LiAgSXQgbG9va3MgZm9yIGNlcnRhaW4gdG9rZW5zIHdoaWNoIGNhbiBzZXJ2ZSBhcwogICAgICAgICMgdmVydGljYWwgYWxpZ25tZW50IG1hcmtlcnMgKHN1Y2ggYXMgYW4gJz0nKS4KICAgICAgICAjCiAgICAgICAgIyBNZXRob2Q6IFdlIGxvb2sgYXQgZWFjaCB0b2tlbiAkaSBpbiB0aGlzIG91dHB1dCBiYXRjaCBhbmQgc2V0CiAgICAgICAgIyAkcmFsaWdubWVudF90eXBlX3RvX2dvLT5bJGldIGVxdWFsIHRvIHRob3NlIHRva2VucyBhdCB3aGljaCB3ZSB3b3VsZAogICAgICAgICMgYWNjZXB0IHZlcnRpY2FsIGFsaWdubWVudC4KCiAgICAgICAgbXkgKCAkc2VsZiwgJHJpX2ZpcnN0LCAkcmlfbGFzdCApID0gQF87CiAgICAgICAgbXkgJHJzcGVjaWFsX3NpZGVfY29tbWVudF90eXBlID0gJHNlbGYtPltfcnNwZWNpYWxfc2lkZV9jb21tZW50X3R5cGVfXTsKCiAgICAgICAgbXkgJHJPcHRzX2FkZF93aGl0ZXNwYWNlID0gJHJPcHRzLT57J2FkZC13aGl0ZXNwYWNlJ307CiAgICAgICAgbXkgJHJhbGlnbm1lbnRfdHlwZV90b19nbzsKCiAgICAgICAgIyBJbml0aWFsaXplIHRoZSBhbGlnbm1lbnQgYXJyYXkuIE5vdGUgdGhhdCBjbG9zaW5nIHNpZGUgY29tbWVudHMgY2FuCiAgICAgICAgIyBpbnNlcnQgdXAgdG8gMiBhZGRpdGlvbmFsIHRva2VucyBiZXlvbmQgdGhlIG9yaWdpbmFsCiAgICAgICAgIyAkbWF4X2luZGV4X3RvX2dvLCBzbyB3ZSBuZWVkIHRvIGNoZWNrIHJpX2xhc3QgZm9yIHRoZSBsYXN0IGluZGV4LgogICAgICAgIG15ICRtYXhfbGluZSA9IEB7JHJpX2ZpcnN0fSAtIDE7CiAgICAgICAgbXkgJGllbmQgICAgID0gJHJpX2xhc3QtPlskbWF4X2xpbmVdOwogICAgICAgIGlmICggJGllbmQgPCAkbWF4X2luZGV4X3RvX2dvICkgeyAkaWVuZCA9ICRtYXhfaW5kZXhfdG9fZ28gfQoKICAgICAgICAjIG5vdGhpbmcgdG8gZG8gaWYgd2UgYXJlbid0IGFsbG93ZWQgdG8gY2hhbmdlIHdoaXRlc3BhY2UKICAgICAgICAjIG9yIHRoZXJlIGlzIG9ubHkgMSB0b2tlbgogICAgICAgIGlmICggJGllbmQgPT0gMCB8fCAhJHJPcHRzX2FkZF93aGl0ZXNwYWNlICkgewogICAgICAgICAgICBmb3IgbXkgJGkgKCAwIC4uICRpZW5kICkgewogICAgICAgICAgICAgICAgJHJhbGlnbm1lbnRfdHlwZV90b19nby0+WyRpXSA9ICcnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAkcmFsaWdubWVudF90eXBlX3RvX2dvOwogICAgICAgIH0KCiAgICAgICAgIyByZW1lbWJlciB0aGUgaW5kZXggb2YgbGFzdCBub25ibGFuayB0b2tlbiBiZWZvcmUgYW55IHNpZGVjb21tZW50CiAgICAgICAgbXkgJGlfdGVybWluYWwgPSAkbWF4X2luZGV4X3RvX2dvOwogICAgICAgIGlmICggJHR5cGVzX3RvX2dvWyRpX3Rlcm1pbmFsXSBlcSAnIycgKSB7CiAgICAgICAgICAgIGlmICggJGlfdGVybWluYWwgPiAwICYmICR0eXBlc190b19nb1sgLS0kaV90ZXJtaW5hbCBdIGVxICdiJyApIHsKICAgICAgICAgICAgICAgIGlmICggJGlfdGVybWluYWwgPiAwICkgeyAtLSRpX3Rlcm1pbmFsIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBsb29rIGF0IGVhY2ggbGluZSBvZiB0aGlzIGJhdGNoLi4KICAgICAgICBteSAkbGFzdF92ZXJ0aWNhbF9hbGlnbm1lbnRfYmVmb3JlX2luZGV4OwogICAgICAgIG15ICR2ZXJ0X2xhc3Rfbm9uYmxhbmtfdHlwZTsKICAgICAgICBteSAkdmVydF9sYXN0X25vbmJsYW5rX3Rva2VuOwogICAgICAgIG15ICR2ZXJ0X2xhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZTsKCiAgICAgICAgZm9yZWFjaCBteSAkbGluZSAoIDAgLi4gJG1heF9saW5lICkgewogICAgICAgICAgICBteSAkaWJlZyA9ICRyaV9maXJzdC0+WyRsaW5lXTsKICAgICAgICAgICAgbXkgJGllbmQgPSAkcmlfbGFzdC0+WyRsaW5lXTsKICAgICAgICAgICAgJGxhc3RfdmVydGljYWxfYWxpZ25tZW50X2JlZm9yZV9pbmRleCA9IC0xOwogICAgICAgICAgICAkdmVydF9sYXN0X25vbmJsYW5rX3R5cGUgICAgICAgICAgICAgID0gJyc7CiAgICAgICAgICAgICR2ZXJ0X2xhc3Rfbm9uYmxhbmtfdG9rZW4gICAgICAgICAgICAgPSAnJzsKICAgICAgICAgICAgJHZlcnRfbGFzdF9ub25ibGFua19ibG9ja190eXBlICAgICAgICA9ICcnOwoKICAgICAgICAgICAgIyBsb29rIGF0IGVhY2ggdG9rZW4gaW4gdGhpcyBvdXRwdXQgbGluZS4uCiAgICAgICAgICAgIG15ICRsZXZlbF9iZWcgPSAkbGV2ZWxzX3RvX2dvWyRpYmVnXTsKICAgICAgICAgICAgZm9yZWFjaCBteSAkaSAoICRpYmVnIC4uICRpZW5kICkgewogICAgICAgICAgICAgICAgbXkgJGFsaWdubWVudF90eXBlID0gJyc7CiAgICAgICAgICAgICAgICBteSAkdHlwZSAgICAgICAgICAgPSAkdHlwZXNfdG9fZ29bJGldOwogICAgICAgICAgICAgICAgbXkgJGJsb2NrX3R5cGUgICAgID0gJGJsb2NrX3R5cGVfdG9fZ29bJGldOwogICAgICAgICAgICAgICAgbXkgJHRva2VuICAgICAgICAgID0gJHRva2Vuc190b19nb1skaV07CgogICAgICAgICAgICAgICAgIyBkbyBub3QgYWxpZ24gdG9rZW5zIGF0IGxvd2VyIGxldmVsIHRoZW4gc3RhcnQgb2YgbGluZQogICAgICAgICAgICAgICAgIyBleGNlcHQgZm9yIHNpZGUgY29tbWVudHMKICAgICAgICAgICAgICAgIGlmICggICAkbGV2ZWxzX3RvX2dvWyRpXSA8ICRsZXZlbHNfdG9fZ29bJGliZWddCiAgICAgICAgICAgICAgICAgICAgJiYgJHR5cGUgbmUgJyMnICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkcmFsaWdubWVudF90eXBlX3RvX2dvLT5bJGldID0gJyc7CiAgICAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICMgRmlyc3Qgc2VlIGlmIHdlIHdhbnQgdG8gYWxpZ24gQkVGT1JFIHRoaXMgdG9rZW4KICAgICAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgICAgICAgICAgICMgVGhlIGZpcnN0IHBvc3NpYmxlIHRva2VuIHRoYXQgd2UgY2FuIGFsaWduIGJlZm9yZQogICAgICAgICAgICAgICAgIyBpcyBpbmRleCAyIGJlY2F1c2U6IDEpIGl0IGRvZXNuJ3Qgbm9ybWFsbHkgbWFrZSBzZW5zZSB0bwogICAgICAgICAgICAgICAgIyBhbGlnbiBiZWZvcmUgdGhlIGZpcnN0IHRva2VuIGFuZCAyKSB0aGUgc2Vjb25kCiAgICAgICAgICAgICAgICAjIHRva2VuIG11c3QgYmUgYSBibGFuayBpZiB3ZSBhcmUgdG8gYWxpZ24gYmVmb3JlCiAgICAgICAgICAgICAgICAjIHRoZSB0aGlyZAogICAgICAgICAgICAgICAgaWYgKCAkaSA8ICRpYmVnICsgMiApIHsgfQoKICAgICAgICAgICAgICAgICMgbXVzdCBmb2xsb3cgYSBibGFuayB0b2tlbgogICAgICAgICAgICAgICAgZWxzaWYgKCAkdHlwZXNfdG9fZ29bICRpIC0gMSBdIG5lICdiJyApIHsgfQoKICAgICAgICAgICAgICAgICMgYWxpZ24gYSBzaWRlIGNvbW1lbnQgLS0KICAgICAgICAgICAgICAgIGVsc2lmICggJHR5cGUgZXEgJyMnICkgewoKICAgICAgICAgICAgICAgICAgICBteSAkS0sgICAgICA9ICRLX3RvX2dvWyRpXTsKICAgICAgICAgICAgICAgICAgICBteSAkc2NfdHlwZSA9ICRyc3BlY2lhbF9zaWRlX2NvbW1lbnRfdHlwZS0+eyRLS307CgogICAgICAgICAgICAgICAgICAgIHVubGVzcyAoCgogICAgICAgICAgICAgICAgICAgICAgICAjIGl0IGlzIGFueSBzcGVjaWFsbHkgbWFya2VkIHNpZGUgY29tbWVudAogICAgICAgICAgICAgICAgICAgICAgICAkc2NfdHlwZQoKICAgICAgICAgICAgICAgICAgICAgICAgIyBvciBpdCBpcyBhIHN0YXRpYyBzaWRlIGNvbW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCAgICRyT3B0cy0+eydzdGF0aWMtc2lkZS1jb21tZW50cyd9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdG9rZW4gPX4gLyRzdGF0aWNfc2lkZV9jb21tZW50X3BhdHRlcm4vICkKCiAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgYSBjbG9zaW5nIHNpZGUgY29tbWVudAogICAgICAgICAgICAgICAgICAgICAgICB8fCAoICAgJHZlcnRfbGFzdF9ub25ibGFua19ibG9ja190eXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdG9rZW4gPX4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8kY2xvc2luZ19zaWRlX2NvbW1lbnRfcHJlZml4X3BhdHRlcm4vICkKICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRhbGlnbm1lbnRfdHlwZSA9ICR0eXBlOwogICAgICAgICAgICAgICAgICAgIH0gICAgIyMgRXhhbXBsZSBvZiBhIHN0YXRpYyBzaWRlIGNvbW1lbnQKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIG90aGVyd2lzZSwgZG8gbm90IGFsaWduIHR3byBpbiBhIHJvdyB0byBjcmVhdGUgYQogICAgICAgICAgICAgICAgIyBibGFuayBmaWVsZAogICAgICAgICAgICAgICAgZWxzaWYgKCAkbGFzdF92ZXJ0aWNhbF9hbGlnbm1lbnRfYmVmb3JlX2luZGV4ID09ICRpIC0gMiApIHsgfQoKICAgICAgICAgICAgICAgICMgYWxpZ24gYmVmb3JlIG9uZSBvZiB0aGVzZSBrZXl3b3JkcwogICAgICAgICAgICAgICAgIyAod2l0aGluIGEgbGluZSwgc2luY2UgJGk+MSkKICAgICAgICAgICAgICAgIGVsc2lmICggJHR5cGUgZXEgJ2snICkgewoKICAgICAgICAgICAgICAgICAgICAjICAvXihpZnx1bmxlc3N8YW5kfG9yfGVxfG5lKSQvCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkaXNfdmVydGljYWxfYWxpZ25tZW50X2tleXdvcmR7JHRva2VufSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGFsaWdubWVudF90eXBlID0gJHRva2VuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGFsaWduIGJlZm9yZSBvbmUgb2YgdGhlc2UgdHlwZXMuLgogICAgICAgICAgICAgICAgIyBOb3RlOiBhZGQgJy4nIGFmdGVyIG5ldyB2ZXJ0aWNhbCBhbGlnbmVyIGlzIG9wZXJhdGlvbmFsCiAgICAgICAgICAgICAgICBlbHNpZiAoICRpc192ZXJ0aWNhbF9hbGlnbm1lbnRfdHlwZXskdHlwZX0KICAgICAgICAgICAgICAgICAgICAmJiAhJGlzX25vdF92ZXJ0aWNhbF9hbGlnbm1lbnRfdG9rZW57JHRva2VufSApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJGFsaWdubWVudF90eXBlID0gJHRva2VuOwoKICAgICAgICAgICAgICAgICAgICAjIERvIG5vdCBhbGlnbiBhIHRlcm1pbmFsIHRva2VuLiAgQWx0aG91Z2ggaXQgbWlnaHQKICAgICAgICAgICAgICAgICAgICAjIG9jY2FzaW9uYWxseSBsb29rIG9rIHRvIGRvIHRoaXMsIHRoaXMgaGFzIGJlZW4gZm91bmQgdG8gYmUKICAgICAgICAgICAgICAgICAgICAjIGEgZ29vZCBnZW5lcmFsIHJ1bGUuICBUaGUgbWFpbiBwcm9ibGVtcyBhcmU6CiAgICAgICAgICAgICAgICAgICAgIyAoMSkgdGhhdCB0aGUgdGVybWluYWwgdG9rZW4gKHN1Y2ggYXMgYW4gPSBvciA6KSBtaWdodCBnZXQKICAgICAgICAgICAgICAgICAgICAjIG1vdmVkIGZhciB0byB0aGUgcmlnaHQgd2hlcmUgaXQgaXMgaGFyZCB0byBzZWUgYmVjYXVzZQogICAgICAgICAgICAgICAgICAgICMgbm90aGluZyBmb2xsb3dzIGl0LCBhbmQKICAgICAgICAgICAgICAgICAgICAjICgyKSBkb2luZyBzbyBtYXkgcHJldmVudCBvdGhlciBnb29kIGFsaWdubWVudHMuCiAgICAgICAgICAgICAgICAgICAgIyBDdXJyZW50IGV4Y2VwdGlvbnMgYXJlICYmIGFuZCB8fCBhbmQgPT4KICAgICAgICAgICAgICAgICAgICBpZiAoICRpID09ICRpZW5kIHx8ICRpID49ICRpX3Rlcm1pbmFsICkgewogICAgICAgICAgICAgICAgICAgICAgICAkYWxpZ25tZW50X3R5cGUgPSAiIgogICAgICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyAoICRpc190ZXJtaW5hbF9hbGlnbm1lbnRfdHlwZXskdHlwZX0gKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgRG8gbm90IGFsaWduIGxlYWRpbmcgJzogKCcgb3IgJy4gKCcuICBUaGlzIHdvdWxkIHByZXZlbnQKICAgICAgICAgICAgICAgICAgICAjIGFsaWdubWVudCBpbiBzb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nOgogICAgICAgICAgICAgICAgICAgICMgICAkZXh0cmFfc3BhY2UgLj0KICAgICAgICAgICAgICAgICAgICAjICAgICAgICggJGlucHV0X2xpbmVfbnVtYmVyIDwgMTAgKSAgPyAiICAiCiAgICAgICAgICAgICAgICAgICAgIyAgICAgOiAoICRpbnB1dF9saW5lX251bWJlciA8IDEwMCApID8gIiAiCiAgICAgICAgICAgICAgICAgICAgIyAgICAgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiI7CiAgICAgICAgICAgICAgICAgICAgIyBvcgogICAgICAgICAgICAgICAgICAgICMgICRjb2RlID0KICAgICAgICAgICAgICAgICAgICAjICAgICAgKCAkY2FzZV9tYXR0ZXJzID8gJGFjY2Vzc29yIDogIiBsYygkYWNjZXNzb3IpICIgKQogICAgICAgICAgICAgICAgICAgICMgICAgLiAoICR5ZXNubyAgICAgICAgPyAiIGVxICIgICAgICAgOiAiIG5lICIgKQoKICAgICAgICAgICAgICAgICAgICAjIEFsc28sIGRvIG5vdCBhbGlnbiBhICggZm9sbG93aW5nIGEgbGVhZGluZyA/IHNvIHdlIGNhbgogICAgICAgICAgICAgICAgICAgICMgYWxpZ24gc29tZXRoaW5nIGxpa2UgdGhpczoKICAgICAgICAgICAgICAgICAgICAjICAgJGNvbnZlcnRlcnskX30tPnt1c2hvcnRva30gPQogICAgICAgICAgICAgICAgICAgICMgICAgICRQREw6OklPOjpQaWM6OmJpZ2dyYXlzCiAgICAgICAgICAgICAgICAgICAgIyAgICAgPyAoIG0vR0lGLyAgICAgICAgICA/IDAgOiAxICkKICAgICAgICAgICAgICAgICAgICAjICAgICA6ICggbS9HSUZ8UkFTVHxJRkYvID8gMCA6IDEgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICRpID09ICRpYmVnICsgMgogICAgICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZXNfdG9fZ29bICRpIC0gMSBdIGVxICdiJwogICAgICAgICAgICAgICAgICAgICAgICAmJiAoICAgJHR5cGVzX3RvX2dvWyRpYmVnXSBlcSAnLicKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICR0eXBlc190b19nb1skaWJlZ10gZXEgJzonCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkdHlwZXNfdG9fZ29bJGliZWddIGVxICc/JyApCiAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkYWxpZ25tZW50X3R5cGUgPSAiIjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgQ2VydGFpbiB0b2tlbnMgb25seSBhbGlnbiBhdCB0aGUgc2FtZSBsZXZlbCBhcyB0aGUKICAgICAgICAgICAgICAgICAgICAjIGluaXRpYWwgbGluZSBsZXZlbAogICAgICAgICAgICAgICAgICAgIGlmICggICAkaXNfbG93X2xldmVsX2FsaWdubWVudF90b2tlbnskdG9rZW59CiAgICAgICAgICAgICAgICAgICAgICAgICYmICRsZXZlbHNfdG9fZ29bJGldICE9ICRsZXZlbF9iZWcgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGFsaWdubWVudF90eXBlID0gIiI7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIEZvciBhIHBhcmVuIGFmdGVyIGtleXdvcmQsIG9ubHkgYWxpZ24gc29tZXRoaW5nIGxpa2UgdGhpczoKICAgICAgICAgICAgICAgICAgICAjICAgIGlmICAgICggJGEgKSB7ICZhIH0KICAgICAgICAgICAgICAgICAgICAjICAgIGVsc2lmICggJGIgKSB7ICZiIH0KICAgICAgICAgICAgICAgICAgICBpZiAoICR0b2tlbiBlcSAnKCcgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICR2ZXJ0X2xhc3Rfbm9uYmxhbmtfdHlwZSBlcSAnaycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYWxpZ25tZW50X3R5cGUgPSAiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgJHZlcnRfbGFzdF9ub25ibGFua190b2tlbiA9fgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvXihpZnx1bmxlc3N8ZWxzaWYpJC87CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgYmUgc3VyZSB0aGUgYWxpZ25tZW50IHRva2VucyBhcmUgdW5pcXVlCiAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGRpZG4ndCB3b3JrIHdlbGw6IHJlYXNvbiBub3QgZGV0ZXJtaW5lZAogICAgICAgICAgICAgICAgICAgICMgaWYgKCR0b2tlbiBuZSAkdHlwZSkgeyRhbGlnbm1lbnRfdHlwZSAuPSAkdHlwZX0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIE5PVEU6IFRoaXMgaXMgZGVhY3RpdmF0ZWQgYmVjYXVzZSBpdCBjYXVzZXMgdGhlIHByZXZpb3VzCiAgICAgICAgICAgICAgICAjIGlmL2Vsc2lmIGFsaWdubWVudCB0byBmYWlsCiAgICAgICAgICAgICAgICAjZWxzaWYgKCAkdHlwZSBlcSAnfScgJiYgJHRva2VuIGVxICd9JyAmJiAkYmxvY2tfdHlwZV90b19nb1skaV0pCiAgICAgICAgICAgICAgICAjeyAkYWxpZ25tZW50X3R5cGUgPSAkdHlwZTsgfQoKICAgICAgICAgICAgICAgIGlmICgkYWxpZ25tZW50X3R5cGUpIHsKICAgICAgICAgICAgICAgICAgICAkbGFzdF92ZXJ0aWNhbF9hbGlnbm1lbnRfYmVmb3JlX2luZGV4ID0gJGk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAgICAjIE5leHQgc2VlIGlmIHdlIHdhbnQgdG8gYWxpZ24gQUZURVIgdGhlIHByZXZpb3VzIG5vbmJsYW5rCiAgICAgICAgICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgICAgICAgICAjIFdlIHdhbnQgdG8gbGluZSB1cCAnLCcgYW5kIGludGVyaW9yICc7JyB0b2tlbnMsIHdpdGggdGhlIGFkZGVkCiAgICAgICAgICAgICAgICAjIHNwYWNlIEFGVEVSIHRoZXNlIHRva2Vucy4gIChOb3RlOiBpbnRlcmlvciAnOycgaXMgaW5jbHVkZWQKICAgICAgICAgICAgICAgICMgYmVjYXVzZSBpdCBtYXkgb2NjdXIgaW4gc2hvcnQgYmxvY2tzKS4KICAgICAgICAgICAgICAgIGlmICgKCiAgICAgICAgICAgICAgICAgICAgIyB3ZSBoYXZlbid0IGFscmVhZHkgc2V0IGl0CiAgICAgICAgICAgICAgICAgICAgISRhbGlnbm1lbnRfdHlwZQoKICAgICAgICAgICAgICAgICAgICAjIGFuZCBpdHMgbm90IHRoZSBmaXJzdCB0b2tlbiBvZiB0aGUgbGluZQogICAgICAgICAgICAgICAgICAgICYmICggJGkgPiAkaWJlZyApCgogICAgICAgICAgICAgICAgICAgICMgYW5kIGl0IGZvbGxvd3MgYSBibGFuawogICAgICAgICAgICAgICAgICAgICYmICR0eXBlc190b19nb1sgJGkgLSAxIF0gZXEgJ2InCgogICAgICAgICAgICAgICAgICAgICMgYW5kIHByZXZpb3VzIHRva2VuIElTIG9uZSBvZiB0aGVzZToKICAgICAgICAgICAgICAgICAgICAmJiAoICAgJHZlcnRfbGFzdF9ub25ibGFua190eXBlIGVxICcsJwogICAgICAgICAgICAgICAgICAgICAgICB8fCAkdmVydF9sYXN0X25vbmJsYW5rX3R5cGUgZXEgJzsnICkKCiAgICAgICAgICAgICAgICAgICAgIyBhbmQgaXQncyBOT1Qgb25lIG9mIHRoZXNlCiAgICAgICAgICAgICAgICAgICAgJiYgKCAgICR0eXBlIG5lICdiJwogICAgICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZSBuZSAnIycKICAgICAgICAgICAgICAgICAgICAgICAgJiYgISRpc19jbG9zaW5nX3Rva2VueyR0eXBlfSApCgogICAgICAgICAgICAgICAgICAgICMgdGhlbiBnbyBhaGVhZCBhbmQgYWxpZ24KICAgICAgICAgICAgICAgICAgKQoKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkYWxpZ25tZW50X3R5cGUgPSAkdmVydF9sYXN0X25vbmJsYW5rX3R5cGU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAgICAjIFVuZG8gYWxpZ25tZW50IGluIHNwZWNpYWwgY2FzZXMKICAgICAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgaWYgKCRhbGlnbm1lbnRfdHlwZSkgewoKICAgICAgICAgICAgICAgICAgICAjIGRvIG5vdCBhbGlnbiB0aGUgb3BlbmluZyBicmFjZSBvZiBhbiBhbm9ueW1vdXMgc3ViCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkdG9rZW4gZXEgJ3snICYmICRibG9ja190eXBlID1+IC8kQVNVQl9QQVRURVJOLyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGFsaWdubWVudF90eXBlID0gIiI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgIyB0aGVuIHN0b3JlIHRoZSB2YWx1ZQogICAgICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAgICAkcmFsaWdubWVudF90eXBlX3RvX2dvLT5bJGldID0gJGFsaWdubWVudF90eXBlOwogICAgICAgICAgICAgICAgaWYgKCAkdHlwZSBuZSAnYicgKSB7CiAgICAgICAgICAgICAgICAgICAgJHZlcnRfbGFzdF9ub25ibGFua190eXBlICAgICAgID0gJHR5cGU7CiAgICAgICAgICAgICAgICAgICAgJHZlcnRfbGFzdF9ub25ibGFua190b2tlbiAgICAgID0gJHRva2VuOwogICAgICAgICAgICAgICAgICAgICR2ZXJ0X2xhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZSA9ICRibG9ja190eXBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkcmFsaWdubWVudF90eXBlX3RvX2dvOwogICAgfQp9ICMjIGVuZCBjbG9zdXJlIHNldF92ZXJ0aWNhbF9hbGlnbm1lbnRfbWFya2VycwoKc3ViIGdldF9zZXFubyB7CgogICAgIyBnZXQgb3BlbmluZyBhbmQgY2xvc2luZyBzZXF1ZW5jZSBudW1iZXJzIG9mIGEgdG9rZW4gZm9yIHRoZSB2ZXJ0aWNhbAogICAgIyBhbGlnbmVyLiAgQXNzaWduIHF3IHF1b3RlcyBhIHZhbHVlIHRvIGFsbG93IHF3IG9wZW5pbmcgYW5kIGNsb3NpbmcgdG9rZW5zCiAgICAjIHRvIGJlIHRyZWF0ZWQgc29tZXdoYXQgbGlrZSBvcGVuaW5nIGFuZCBjbG9zaW5nIHRva2VucyBmb3Igc3RhY2tpbmcKICAgICMgdG9rZW5zIGJ5IHRoZSB2ZXJ0aWNhbCBhbGlnbmVyLgogICAgbXkgKCAkc2VsZiwgJGlpLCAkZW5kaW5nX2luX3F1b3RlICkgPSBAXzsKCiAgICBteSAkckxMICAgICAgICA9ICRzZWxmLT5bX3JMTF9dOwogICAgbXkgJHRoaXNfYmF0Y2ggPSAkc2VsZi0+W190aGlzX2JhdGNoX107CiAgICBteSAkcktfdG9fZ28gICA9ICR0aGlzX2JhdGNoLT5bX3JLX3RvX2dvX107CgogICAgbXkgJEtLICAgID0gJHJLX3RvX2dvLT5bJGlpXTsKICAgIG15ICRzZXFubyA9ICRyTEwtPlskS0tdLT5bX1RZUEVfU0VRVUVOQ0VfXTsKCiAgICBpZiAoICRyTEwtPlskS0tdLT5bX1RZUEVfXSBlcSAncScgKSB7CiAgICAgICAgbXkgJFNFUV9RVyA9IC0xOwogICAgICAgIG15ICR0b2tlbiAgPSAkckxMLT5bJEtLXS0+W19UT0tFTl9dOwogICAgICAgIGlmICggJGlpID4gMCApIHsKICAgICAgICAgICAgJHNlcW5vID0gJFNFUV9RVyBpZiAoICR0b2tlbiA9fiAvXnF3XHMqW1woXHtcW10vICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBpZiAoICEkZW5kaW5nX2luX3F1b3RlICkgewogICAgICAgICAgICAgICAgJHNlcW5vID0gJFNFUV9RVyBpZiAoICR0b2tlbiA9fiAvW1wpXH1cXV0kLyApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuICgkc2Vxbm8pOwp9Cgp7CiAgICBteSAldW5kb19leHRlbmRlZF9jaTsKCiAgICBzdWIgaW5pdGlhbGl6ZV91bmRvX2NpIHsKICAgICAgICAldW5kb19leHRlbmRlZF9jaSA9ICgpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgdW5kb19jaSB7CgogICAgICAgICMgVW5kbyBjb250aW51YXRpb24gaW5kZW50YXRpb24gaW4gY2VydGFpbiBzZXF1ZW5jZXMKICAgICAgICBteSAoICRzZWxmLCAkcmlfZmlyc3QsICRyaV9sYXN0LCAkcml4X3NlcW5vX2NvbnRyb2xsaW5nX2NpICkgPSBAXzsKICAgICAgICBteSAoICRsaW5lXzEsICRsaW5lXzIsICRsZXZfbGFzdCApOwogICAgICAgIG15ICR0aGlzX2xpbmVfaXNfc2VtaWNvbG9uX3Rlcm1pbmF0ZWQ7CiAgICAgICAgbXkgJG1heF9saW5lID0gQHskcmlfZmlyc3R9IC0gMTsKCiAgICAgICAgbXkgJHJzZXFub19jb250cm9sbGluZ19teV9jaSA9ICRzZWxmLT5bX3JzZXFub19jb250cm9sbGluZ19teV9jaV9dOwoKICAgICAgICAjIFByZXBhcmUgYSBsaXN0IG9mIGNvbnRyb2xsaW5nIGluZGV4ZXMgZm9yIGVhY2ggbGluZSBpZiByZXF1aXJlZC4KICAgICAgICAjIFRoaXMgaXMgdXNlZCBmb3IgZWZmaWNpZW50IHByb2Nlc3NpbmcgYmVsb3cuICBOb3RlOiB0aGlzIGlzCiAgICAgICAgIyBjcml0aWNhbCBmb3Igc3BlZWQuIEluIHRoZSBpbml0aWFsIGltcGxlbWVudGF0aW9uIEkganVzdCBsb29wZWQKICAgICAgICAjIHRocm91Z2ggdGhlIEAkcml4X3NlcW5vX2NvbnRyb2xsaW5nX2NpIGxpc3QgYmVsb3cuIFVzaW5nIE5ZVF9wcm9mLCBJCiAgICAgICAgIyBmb3VuZCB0aGF0IHRoaXMgcm91dGluZSB3YXMgY2F1c2luZyBhIGh1Z2UgcnVuIHRpbWUgaW4gbGFyZ2UgbGlzdHMuCiAgICAgICAgIyBPbiBhIHZlcnkgbGFyZ2UgbGlzdCB0ZXN0IGNhc2UsIHRoaXMgbmV3IGNvZGluZyBkcm9wcGVkIHRoZSBydW4gdGltZQogICAgICAgICMgb2YgdGhpcyByb3V0aW5lIGZyb20gMzAgc2Vjb25kcyB0byAxNjkgbWlsbGlzZWNvbmRzLgogICAgICAgIG15IEBpX2NvbnRyb2xsaW5nX2NpOwogICAgICAgIGlmICggQHskcml4X3NlcW5vX2NvbnRyb2xsaW5nX2NpfSApIHsKICAgICAgICAgICAgbXkgQHRtcCAgICAgPSByZXZlcnNlIEB7JHJpeF9zZXFub19jb250cm9sbGluZ19jaX07CiAgICAgICAgICAgIG15ICRpeF9uZXh0ID0gcG9wIEB0bXA7CiAgICAgICAgICAgIGZvcmVhY2ggbXkgJGxpbmUgKCAwIC4uICRtYXhfbGluZSApIHsKICAgICAgICAgICAgICAgIG15ICRpZW5kID0gJHJpX2xhc3QtPlskbGluZV07CiAgICAgICAgICAgICAgICB3aGlsZSAoIGRlZmluZWQoJGl4X25leHQpICYmICRpeF9uZXh0IDw9ICRpZW5kICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQHsgJGlfY29udHJvbGxpbmdfY2lbJGxpbmVdIH0sICRpeF9uZXh0OwogICAgICAgICAgICAgICAgICAgICRpeF9uZXh0ID0gcG9wIEB0bXA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgTG9vcCBvdmVyIGFsbCBsaW5lcyBvZiB0aGUgYmF0Y2ggLi4uCiAgICAgICAgZm9yZWFjaCBteSAkbGluZSAoIDAgLi4gJG1heF9saW5lICkgewoKICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgICAgICMgU0VDVElPTiAxOiBVbmRvIG5lZWRsZXNzIGNvbW1vbiBDSQogICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgICAgICMgV2UgYXJlIGxvb2tpbmcgYXQgbGVhZGluZyB0b2tlbnMgYW5kIGxvb2tpbmcgZm9yIGEgc2VxdWVuY2UgYWxsCiAgICAgICAgICAgICMgYXQgdGhlIHNhbWUgbGV2ZWwgYW5kIGFsbCBhdCBhIGhpZ2hlciBsZXZlbCB0aGFuIGVuY2xvc2luZyBsaW5lcy4KCiAgICAgICAgICAgICMgRm9yIGV4YW1wbGUsIHdlIGNhbiB1bmRvIGNvbnRpbnVhdGlvbiBpbmRlbnRhdGlvbiBpbiBzb3J0L21hcC9ncmVwCiAgICAgICAgICAgICMgY2hhaW5zCgogICAgICAgICAgICAjICAgIG15ICRkYXQxID0gcGFjayggIm4qIiwKICAgICAgICAgICAgIyAgICAgICAgbWFwIHsgJF8sICRsb29rdXAtPnskX30gfQogICAgICAgICAgICAjICAgICAgICAgIHNvcnQgeyAkYSA8PT4gJGIgfQogICAgICAgICAgICAjICAgICAgICAgIGdyZXAgeyAkbG9va3VwLT57JF99IG5lICRkZWZhdWx0IH0ga2V5cyAlJGxvb2t1cCApOwoKICAgICAgICAgICAgIyB0byBiZWNvbWUKCiAgICAgICAgICAgICMgICAgbXkgJGRhdDEgPSBwYWNrKCAibioiLAogICAgICAgICAgICAjICAgICAgICBtYXAgeyAkXywgJGxvb2t1cC0+eyRffSB9CiAgICAgICAgICAgICMgICAgICAgIHNvcnQgeyAkYSA8PT4gJGIgfQogICAgICAgICAgICAjICAgICAgICBncmVwIHsgJGxvb2t1cC0+eyRffSBuZSAkZGVmYXVsdCB9IGtleXMgJSRsb29rdXAgKTsKCiAgICAgICAgICAgIG15ICRpYmVnID0gJHJpX2ZpcnN0LT5bJGxpbmVdOwogICAgICAgICAgICBteSAkaWVuZCA9ICRyaV9sYXN0LT5bJGxpbmVdOwogICAgICAgICAgICBteSAkbGV2ICA9ICRsZXZlbHNfdG9fZ29bJGliZWddOwogICAgICAgICAgICBpZiAoICRsaW5lID4gMCApIHsKCiAgICAgICAgICAgICAgICAjIGlmIHdlIGhhdmUgc3RhcnRlZCBhIGNoYWluLi4KICAgICAgICAgICAgICAgIGlmICgkbGluZV8xKSB7CgogICAgICAgICAgICAgICAgICAgICMgc2VlIGlmIGl0IGNvbnRpbnVlcy4uCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkbGV2ID09ICRsZXZfbGFzdCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAgICR0eXBlc190b19nb1skaWJlZ10gZXEgJ2snCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkaXNfc29ydF9tYXBfZ3JlcHsgJHRva2Vuc190b19nb1skaWJlZ10gfSApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNoYWluIGNvbnRpbnVlcy4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBmb3IgY2hhaW4gZW5kaW5nIGF0IGVuZCBvZiBhIHN0YXRlbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkbGluZSA9PSAkbWF4X2xpbmUgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2VlIG9mIHRoaXMgbGluZSBlbmRzIGEgc3RhdGVtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXNfbGluZV9pc19zZW1pY29sb25fdGVybWluYXRlZCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZXNfdG9fZ29bJGllbmRdIGVxICc7JwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aCBwb3NzaWJsZSBzaWRlIGNvbW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICggJHR5cGVzX3RvX2dvWyRpZW5kXSBlcSAnIycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGllbmQgLSAkaWJlZyA+PSAyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICR0eXBlc190b19nb1sgJGllbmQgLSAyIF0gZXEgJzsnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICR0eXBlc190b19nb1sgJGllbmQgLSAxIF0gZXEgJ2InICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGluZV8yID0gJGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzX2xpbmVfaXNfc2VtaWNvbG9uX3Rlcm1pbmF0ZWQpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMga2lsbCBjaGFpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmVfMSA9IHVuZGVmOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJGxldiA8ICRsZXZfbGFzdCApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY2hhaW4gZW5kcyB3aXRoIHByZXZpb3VzIGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmVfMiA9ICRsaW5lIC0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkbGV2ID4gJGxldl9sYXN0ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBraWxsIGNoYWluCiAgICAgICAgICAgICAgICAgICAgICAgICRsaW5lXzEgPSB1bmRlZjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgdW5kbyB0aGUgY29udGludWF0aW9uIGluZGVudGF0aW9uIGlmIGEgY2hhaW4gZW5kcwogICAgICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCgkbGluZV8yKSAmJiBkZWZpbmVkKCRsaW5lXzEpICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkY29udGludWF0aW9uX2xpbmVfY291bnQgPSAkbGluZV8yIC0gJGxpbmVfMSArIDE7CiAgICAgICAgICAgICAgICAgICAgICAgIEBjaV9sZXZlbHNfdG9fZ29bIEB7JHJpX2ZpcnN0fVsgJGxpbmVfMSAuLiAkbGluZV8yIF0gXQogICAgICAgICAgICAgICAgICAgICAgICAgID0gKDApIHggKCRjb250aW51YXRpb25fbGluZV9jb3VudCkKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRjb250aW51YXRpb25fbGluZV9jb3VudCA+PSAwICk7CiAgICAgICAgICAgICAgICAgICAgICAgIEBsZWFkaW5nX3NwYWNlc190b19nb1sgQHskcmlfZmlyc3R9CiAgICAgICAgICAgICAgICAgICAgICAgICAgWyAkbGluZV8xIC4uICRsaW5lXzIgXSBdID0KICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVkdWNlZF9zcGFjZXNfdG9fZ29bIEB7JHJpX2ZpcnN0fQogICAgICAgICAgICAgICAgICAgICAgICAgIFsgJGxpbmVfMSAuLiAkbGluZV8yIF0gXTsKICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmVfMSA9IHVuZGVmOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIG5vdCBpbiBhIGNoYWluIHlldC4uCiAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgIyBsb29rIGZvciBzdGFydCBvZiBhIG5ldyBzb3J0L21hcC9ncmVwIGNoYWluCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkbGV2ID4gJGxldl9sYXN0ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICAgJHR5cGVzX3RvX2dvWyRpYmVnXSBlcSAnaycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICRpc19zb3J0X21hcF9ncmVweyAkdG9rZW5zX3RvX2dvWyRpYmVnXSB9ICkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpbmVfMSA9ICRsaW5lOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICAgICAjIFNFQ1RJT04gMjogVW5kbyBjaSBhdCBjdWRkbGVkIGJsb2NrcwogICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAgICAgIyBOb3RlIHRoYXQgc3ViIHNldF9hZGp1c3RlZF9pbmRlbnRhdGlvbiB3aWxsIGJlIGNhbGxlZCBsYXRlciB0bwogICAgICAgICAgICAjIGFjdHVhbGx5IGRvIHRoaXMsIGJ1dCBmb3Igbm93IHdlIHdpbGwgdGVudGF0aXZlbHkgbWFyayBjdWRkbGVkCiAgICAgICAgICAgICMgbGluZXMgd2l0aCBjaT0wIHNvIHRoYXQgdGhlIHRoZSAteGNpIGxvb3Agd2hpY2ggZm9sbG93cyB3aWxsIGJlCiAgICAgICAgICAgICMgY29ycmVjdCBhdCBjdWRkbGVzLgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkdHlwZXNfdG9fZ29bJGliZWddIGVxICd9JwogICAgICAgICAgICAgICAgJiYgKCAkbmVzdGluZ19kZXB0aF90b19nb1skaWVuZF0gKyAxID09CiAgICAgICAgICAgICAgICAgICAgJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGliZWddICkKICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG15ICR0ZXJtaW5hbF90eXBlID0gJHR5cGVzX3RvX2dvWyRpZW5kXTsKICAgICAgICAgICAgICAgIGlmICggJHRlcm1pbmFsX3R5cGUgZXEgJyMnICYmICRpZW5kID4gJGliZWcgKSB7CiAgICAgICAgICAgICAgICAgICAgJHRlcm1pbmFsX3R5cGUgPSAkdHlwZXNfdG9fZ29bICRpZW5kIC0gMSBdOwogICAgICAgICAgICAgICAgICAgIGlmICggJHRlcm1pbmFsX3R5cGUgZXEgJyMnICYmICRpZW5kIC0gMSA+ICRpYmVnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkdGVybWluYWxfdHlwZSA9ICR0eXBlc190b19nb1sgJGllbmQgLSAyIF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCAkdGVybWluYWxfdHlwZSBlcSAneycgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJEtiZWcgPSAkS190b19nb1skaWJlZ107CiAgICAgICAgICAgICAgICAgICAgJGNpX2xldmVsc190b19nb1skaWJlZ10gPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAgICAgIyBTRUNUSU9OIDM6IFVuZG8gY2kgc2V0IGJ5IHN1YiBleHRlbmRlZF9jaSBpZiBub3QgbmVlZGVkCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAgICAgIyBVbmRvIHRoZSBjaSBvZiB0aGUgbGVhZGluZyB0b2tlbiBpZiBpdHMgY29udHJvbGxpbmcgdG9rZW4KICAgICAgICAgICAgIyB3ZW50IG91dCBvbiBhIHByZXZpb3VzIGxpbmUgd2l0aG91dCBjaQogICAgICAgICAgICBpZiAoICRjaV9sZXZlbHNfdG9fZ29bJGliZWddICkgewogICAgICAgICAgICAgICAgbXkgJEtiZWcgID0gJEtfdG9fZ29bJGliZWddOwogICAgICAgICAgICAgICAgbXkgJHNlcW5vID0gJHJzZXFub19jb250cm9sbGluZ19teV9jaS0+eyRLYmVnfTsKICAgICAgICAgICAgICAgIGlmICggJHNlcW5vICYmICR1bmRvX2V4dGVuZGVkX2NpeyRzZXFub30gKSB7CgogICAgICAgICAgICAgICAgICAgICMgYnV0IGRvIG5vdCB1bmRvIGNpIHNldCBieSB0aGUgLWxwIGZsYWcKICAgICAgICAgICAgICAgICAgICBpZiAoICFyZWYoICRyZWR1Y2VkX3NwYWNlc190b19nb1skaWJlZ10gKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNpX2xldmVsc190b19nb1skaWJlZ10gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAkbGVhZGluZ19zcGFjZXNfdG9fZ29bJGliZWddID0KICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVkdWNlZF9zcGFjZXNfdG9fZ29bJGliZWddOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBGbGFnIGFueSBjb250cm9sbGluZyBvcGVuaW5nIHRva2VucyBpbiBsaW5lcyB3aXRob3V0IGNpLiAgVGhpcwogICAgICAgICAgICAjIHdpbGwgYmUgdXNlZCBsYXRlciBpbiB0aGUgYWJvdmUgaWYgc3RhdGVtZW50IHRvIHVuZG8gdGhlIGNpIHdoaWNoCiAgICAgICAgICAgICMgdGhleSBhZGRlZC4gIFRoZSBhcnJheSBpX2NvbnRyb2xsaW5nX2NpWyRsaW5lXSB3YXMgcHJlcGFyZWQgYXQKICAgICAgICAgICAgIyB0aGUgdG9wIG9mIHRoaXMgcm91dGluZS4KICAgICAgICAgICAgaWYgKCAhJGNpX2xldmVsc190b19nb1skaWJlZ10KICAgICAgICAgICAgICAgICYmIGRlZmluZWQoICRpX2NvbnRyb2xsaW5nX2NpWyRsaW5lXSApICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkaSAoIEB7ICRpX2NvbnRyb2xsaW5nX2NpWyRsaW5lXSB9ICkgewogICAgICAgICAgICAgICAgICAgIG15ICRzZXFubyA9ICR0eXBlX3NlcXVlbmNlX3RvX2dvWyRpXTsKICAgICAgICAgICAgICAgICAgICAkdW5kb19leHRlbmRlZF9jaXskc2Vxbm99ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGxldl9sYXN0ID0gJGxldjsKICAgICAgICB9CgogICAgICAgIHJldHVybjsKICAgIH0KfQoKeyAgICAjIyBiZWdpbiBjbG9zdXJlIHNldF9sb2dpY2FsX3BhZGRpbmcKICAgIG15ICVpc19tYXRoX29wOwoKICAgIEJFR0lOIHsKCiAgICAgICAgbXkgQHEgPSBxdyggKyAtICogLyApOwogICAgICAgIEBpc19tYXRoX29we0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CiAgICB9CgogICAgc3ViIHNldF9sb2dpY2FsX3BhZGRpbmcgewoKICAgICAgICAjIExvb2sgYXQgYSBiYXRjaCBvZiBsaW5lcyBhbmQgc2VlIGlmIGV4dHJhIHBhZGRpbmcgY2FuIGltcHJvdmUgdGhlCiAgICAgICAgIyBhbGlnbm1lbnQgd2hlbiB0aGVyZSBhcmUgY2VydGFpbiBsZWFkaW5nIG9wZXJhdG9ycy4gSGVyZSBpcyBhbgogICAgICAgICMgZXhhbXBsZSwgaW4gd2hpY2ggc29tZSBleHRyYSBzcGFjZSBpcyBpbnRyb2R1Y2VkIGJlZm9yZQogICAgICAgICMgJyggJHllYXInIHRvIG1ha2UgaXQgbGluZSB1cCB3aXRoIHRoZSBzdWJzZXF1ZW50IGxpbmVzOgogICAgICAgICMKICAgICAgICAjICAgICAgIGlmICggICAoICRZZWFyIDwgMTYwMSApCiAgICAgICAgIyAgICAgICAgICAgfHwgKCAkWWVhciA+IDI4OTkgKQogICAgICAgICMgICAgICAgICAgIHx8ICggJEVuZFllYXIgPCAxNjAxICkKICAgICAgICAjICAgICAgICAgICB8fCAoICRFbmRZZWFyID4gMjg5OSApICkKICAgICAgICAjICAgICAgIHsKICAgICAgICAjICAgICAgICAgICAmRXJyb3JfT3V0T2ZSYW5nZTsKICAgICAgICAjICAgICAgIH0KICAgICAgICAjCiAgICAgICAgbXkgKCAkc2VsZiwgJHJpX2ZpcnN0LCAkcmlfbGFzdCwgJHBlYWtfYmF0Y2hfc2l6ZSwgJHN0YXJ0aW5nX2luX3F1b3RlICkKICAgICAgICAgID0gQF87CiAgICAgICAgbXkgJG1heF9saW5lID0gQHskcmlfZmlyc3R9IC0gMTsKCiAgICAgICAgbXkgKCAkaWJlZywgJGliZWdfbmV4dCwgJGliZWdtLCAkaWVuZCwgJGllbmRtLCAkaXBhZCwgJHBhZF9zcGFjZXMsCiAgICAgICAgICAgICR0b2tfbmV4dCwgJHR5cGVfbmV4dCwgJGhhc19sZWFkaW5nX29wX25leHQsICRoYXNfbGVhZGluZ19vcCApOwoKICAgICAgICAjIGxvb2tpbmcgYXQgZWFjaCBsaW5lIG9mIHRoaXMgYmF0Y2guLgogICAgICAgIGZvcmVhY2ggbXkgJGxpbmUgKCAwIC4uICRtYXhfbGluZSAtIDEgKSB7CgogICAgICAgICAgICAjIHNlZSBpZiB0aGUgbmV4dCBsaW5lIGJlZ2lucyB3aXRoIGEgbG9naWNhbCBvcGVyYXRvcgogICAgICAgICAgICAkaWJlZyAgICAgID0gJHJpX2ZpcnN0LT5bJGxpbmVdOwogICAgICAgICAgICAkaWVuZCAgICAgID0gJHJpX2xhc3QtPlskbGluZV07CiAgICAgICAgICAgICRpYmVnX25leHQgPSAkcmlfZmlyc3QtPlsgJGxpbmUgKyAxIF07CiAgICAgICAgICAgICR0b2tfbmV4dCAgPSAkdG9rZW5zX3RvX2dvWyRpYmVnX25leHRdOwogICAgICAgICAgICAkdHlwZV9uZXh0ID0gJHR5cGVzX3RvX2dvWyRpYmVnX25leHRdOwoKICAgICAgICAgICAgJGhhc19sZWFkaW5nX29wX25leHQgPSAoICR0b2tfbmV4dCA9fiAvXlx3LyApCiAgICAgICAgICAgICAgPyAkaXNfY2hhaW5fb3BlcmF0b3J7JHRva19uZXh0fSAgICAgICMgKyAtICogLyA6ID8gJiYgfHwKICAgICAgICAgICAgICA6ICRpc19jaGFpbl9vcGVyYXRvcnskdHlwZV9uZXh0fTsgICAgIyBhbmQsIG9yCgogICAgICAgICAgICBuZXh0IHVubGVzcyAoJGhhc19sZWFkaW5nX29wX25leHQpOwoKICAgICAgICAgICAgIyBuZXh0IGxpbmUgbXVzdCBub3QgYmUgYXQgbGVzc2VyIGRlcHRoCiAgICAgICAgICAgIG5leHQKICAgICAgICAgICAgICBpZiAoICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpYmVnXSA+CiAgICAgICAgICAgICAgICAkbmVzdGluZ19kZXB0aF90b19nb1skaWJlZ19uZXh0XSApOwoKICAgICAgICAgICAgIyBpZGVudGlmeSB0aGUgdG9rZW4gaW4gdGhpcyBsaW5lIHRvIGJlIHBhZGRlZCBvbiB0aGUgbGVmdAogICAgICAgICAgICAkaXBhZCA9IHVuZGVmOwoKICAgICAgICAgICAgIyBoYW5kbGUgbGluZXMgYXQgc2FtZSBkZXB0aC4uLgogICAgICAgICAgICBpZiAoICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpYmVnXSA9PQogICAgICAgICAgICAgICAgJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGliZWdfbmV4dF0gKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgIyBpZiB0aGlzIGlzIG5vdCBmaXJzdCBsaW5lIG9mIHRoZSBiYXRjaCAuLi4KICAgICAgICAgICAgICAgIGlmICggJGxpbmUgPiAwICkgewoKICAgICAgICAgICAgICAgICAgICAjIGFuZCB3ZSBoYXZlIGxlYWRpbmcgb3BlcmF0b3IuLgogICAgICAgICAgICAgICAgICAgIG5leHQgaWYgJGhhc19sZWFkaW5nX29wOwoKICAgICAgICAgICAgICAgICAgICAjIEludHJvZHVjZSBwYWRkaW5nIGlmLi4KICAgICAgICAgICAgICAgICAgICAjIDEuIHRoZSBwcmV2aW91cyBsaW5lIGlzIGF0IGxlc3NlciBkZXB0aCwgb3IKICAgICAgICAgICAgICAgICAgICAjIDIuIHRoZSBwcmV2aW91cyBsaW5lIGVuZHMgaW4gYW4gYXNzaWdubWVudAogICAgICAgICAgICAgICAgICAgICMgMy4gdGhlIHByZXZpb3VzIGxpbmUgZW5kcyBpbiBhICdyZXR1cm4nCiAgICAgICAgICAgICAgICAgICAgIyA0LiB0aGUgcHJldmlvdXMgbGluZSBlbmRzIGluIGEgY29tbWEKICAgICAgICAgICAgICAgICAgICAjIEV4YW1wbGUgMTogcHJldmlvdXMgbGluZSBhdCBsZXNzZXIgZGVwdGgKICAgICAgICAgICAgICAgICAgICAjICAgICAgIGlmICggICAoICRZZWFyIDwgMTYwMSApICAgICAgIyA8LSB3ZSBhcmUgaGVyZSBidXQKICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICB8fCAoICRZZWFyID4gMjg5OSApICAgICAgIyAgbGlzdCBoYXMgbm90IHlldAogICAgICAgICAgICAgICAgICAgICMgICAgICAgICAgIHx8ICggJEVuZFllYXIgPCAxNjAxICkgICAjIGNvbGxhcHNlZCB2ZXJ0aWNhbGx5CiAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgfHwgKCAkRW5kWWVhciA+IDI4OTkgKSApCiAgICAgICAgICAgICAgICAgICAgIyAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgRXhhbXBsZSAyOiBwcmV2aW91cyBsaW5lIGVuZGluZyBpbiBhc3NpZ25tZW50OgogICAgICAgICAgICAgICAgICAgICMgICAgJGxlYXB5ZWFyID0KICAgICAgICAgICAgICAgICAgICAjICAgICAgICAkeWVhciAlIDQgICA/IDAgICAgICMgPC0gV2UgYXJlIGhlcmUKICAgICAgICAgICAgICAgICAgICAjICAgICAgOiAkeWVhciAlIDEwMCA/IDEKICAgICAgICAgICAgICAgICAgICAjICAgICAgOiAkeWVhciAlIDQwMCA/IDAKICAgICAgICAgICAgICAgICAgICAjICAgICAgOiAxOwogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIEV4YW1wbGUgMzogcHJldmlvdXMgbGluZSBlbmRpbmcgaW4gY29tbWE6CiAgICAgICAgICAgICAgICAgICAgIyAgICBwdXNoIEBleHByLAogICAgICAgICAgICAgICAgICAgICMgICAgICAgIC90ZXN0LyAgID8gdW5kZWYKICAgICAgICAgICAgICAgICAgICAjICAgICAgOiBldmFsKCRfKSA/IDEKICAgICAgICAgICAgICAgICAgICAjICAgICAgOiBldmFsKCRfKSA/IDEKICAgICAgICAgICAgICAgICAgICAjICAgICAgOiAgICAgICAgICAgIDA7CgogICAgICAgICAgICAgICAgICAgIyBiZSBzdXJlIGxldmVscyBhZ3JlZSAoZG8gbm90IGluZGVudCBhZnRlciBhbiBpbmRlbnRlZCAnaWYnKQogICAgICAgICAgICAgICAgICAgIG5leHQKICAgICAgICAgICAgICAgICAgICAgIGlmICggJGxldmVsc190b19nb1skaWJlZ10gbmUgJGxldmVsc190b19nb1skaWJlZ19uZXh0XSApOwoKICAgICAgICAgICAgICAgICAgICAjIGFsbG93IHBhZGRpbmcgb24gZmlyc3QgbGluZSBhZnRlciBhIGNvbW1hIGJ1dCBvbmx5IGlmOgogICAgICAgICAgICAgICAgICAgICMgKDEpIHRoaXMgaXMgbGluZSAyIGFuZAogICAgICAgICAgICAgICAgICAgICMgKDIpIHRoZXJlIGFyZSBhdCBtb3JlIHRoYW4gdGhyZWUgbGluZXMgYW5kCiAgICAgICAgICAgICAgICAgICAgIyAoMykgbGluZXMgMyBhbmQgNCBoYXZlIHRoZSBzYW1lIGxlYWRpbmcgb3BlcmF0b3IKICAgICAgICAgICAgICAgICAgICAjIFRoZXNlIHJ1bGVzIHRyeSB0byBwcmV2ZW50IHBhZGRpbmcgd2l0aGluIGEgbG9uZwogICAgICAgICAgICAgICAgICAgICMgY29tbWEtc2VwYXJhdGVkIGxpc3QuCiAgICAgICAgICAgICAgICAgICAgbXkgJG9rX2NvbW1hOwogICAgICAgICAgICAgICAgICAgIGlmICggICAkdHlwZXNfdG9fZ29bJGllbmRtXSBlcSAnLCcKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGxpbmUgPT0gMQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkbWF4X2xpbmUgPiAyICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpYmVnX25leHRfbmV4dCA9ICRyaV9maXJzdC0+WyAkbGluZSArIDIgXTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHRva19uZXh0X25leHQgID0gJHRva2Vuc190b19nb1skaWJlZ19uZXh0X25leHRdOwogICAgICAgICAgICAgICAgICAgICAgICAkb2tfY29tbWEgPSAkdG9rX25leHRfbmV4dCBlcSAkdG9rX25leHQ7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBuZXh0CiAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAkaXNfYXNzaWdubWVudHsgJHR5cGVzX3RvX2dvWyRpZW5kbV0gfQogICAgICAgICAgICAgICAgICAgICAgICB8fCAkb2tfY29tbWEKICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCAkbmVzdGluZ19kZXB0aF90b19nb1skaWJlZ21dIDwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpYmVnXSApCiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICggICAkdHlwZXNfdG9fZ29bJGllbmRtXSBlcSAnaycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICR0b2tlbnNfdG9fZ29bJGllbmRtXSBlcSAncmV0dXJuJyApCiAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIHdlIHdpbGwgYWRkIHBhZGRpbmcgYmVmb3JlIHRoZSBmaXJzdCB0b2tlbgogICAgICAgICAgICAgICAgICAgICRpcGFkID0gJGliZWc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBmb3IgZmlyc3QgbGluZSBvZiB0aGUgYmF0Y2guLgogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICMgV0FSTklORzogTmV2ZXIgaW5kZW50IGlmIGZpcnN0IGxpbmUgaXMgc3RhcnRpbmcgaW4gYQogICAgICAgICAgICAgICAgICAgICMgY29udGludWVkIHF1b3RlLCB3aGljaCB3b3VsZCBjaGFuZ2UgdGhlIHF1b3RlLgogICAgICAgICAgICAgICAgICAgIG5leHQgaWYgJHN0YXJ0aW5nX2luX3F1b3RlOwoKICAgICAgICAgICAgICAgICAgICAjIGlmIHRoaXMgaXMgdGV4dCBhZnRlciBjbG9zaW5nICd9JwogICAgICAgICAgICAgICAgICAgICMgdGhlbiBsb29rIGZvciBhbiBpbnRlcmlvciB0b2tlbiB0byBwYWQKICAgICAgICAgICAgICAgICAgICBpZiAoICR0eXBlc190b19nb1skaWJlZ10gZXEgJ30nICkgewoKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlLCB3ZSBtaWdodCBwYWQgaWYgaXQgbG9va3MgcmVhbGx5IGdvb2QKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgd2UgbWlnaHQgcGFkIHRva2VuICRpYmVnLCBzbyBiZSBzdXJlIHRoYXQgaXQKICAgICAgICAgICAgICAgICAgICAgICAgIyBpcyBhdCB0aGUgc2FtZSBkZXB0aCBhcyB0aGUgbmV4dCBsaW5lLgogICAgICAgICAgICAgICAgICAgICAgICBuZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkbmVzdGluZ19kZXB0aF90b19nb1skaWJlZ10gIT0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpYmVnX25leHRdICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIFdlIGNhbiBwYWQgb24gbGluZSAxIG9mIGEgc3RhdGVtZW50IGlmIGF0IGxlYXN0IDMKICAgICAgICAgICAgICAgICAgICAgICAgIyBsaW5lcyB3aWxsIGJlIGFsaWduZWQuIE90aGVyd2lzZSwgaXQKICAgICAgICAgICAgICAgICAgICAgICAgIyBjYW4gbG9vayB2ZXJ5IGNvbmZ1c2luZy4KCiAgICAgICAgICAgICAgICAgIyBXZSBoYXZlIHRvIGJlIGNhcmVmdWwgbm90IHRvIHBhZCBpZiB0aGVyZSBhcmUgdG9vIGZldwogICAgICAgICAgICAgICAgICMgbGluZXMuICBUaGUgY3VycmVudCBydWxlIGlzOgogICAgICAgICAgICAgICAgICMgKDEpIGluIGdlbmVyYWwgd2UgcmVxdWlyZSBhdCBsZWFzdCAzIGNvbnNlY3V0aXZlIGxpbmVzCiAgICAgICAgICAgICAgICAgIyB3aXRoIHRoZSBzYW1lIGxlYWRpbmcgY2hhaW4gb3BlcmF0b3IgdG9rZW4sCiAgICAgICAgICAgICAgICAgIyAoMikgYnV0IGFuIGV4Y2VwdGlvbiBpcyB0aGF0IHdlIG9ubHkgcmVxdWlyZSB0d28gbGluZXMKICAgICAgICAgICAgICAgICAjIHdpdGggbGVhZGluZyBjb2xvbnMgaWYgdGhlcmUgYXJlIG5vIG1vcmUgbGluZXMuICBGb3IgZXhhbXBsZSwKICAgICAgICAgICAgICAgICAjIHRoZSBmaXJzdCAkaSBpbiB0aGUgZm9sbG93aW5nIHNuaXBwZXQgd291bGQgZ2V0IHBhZGRpbmcKICAgICAgICAgICAgICAgICAjIGJ5IHRoZSBzZWNvbmQgcnVsZToKICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgIyAgICRpID09IDEgPyAoICJGaXJzdCIsICJDb2xvciIgKQogICAgICAgICAgICAgICAgICMgOiAkaSA9PSAyID8gKCAiVGhlbiIsICAiUmFyaXR5IiApCiAgICAgICAgICAgICAgICAgIyA6ICAgICAgICAgICAoICJUaGVuIiwgICJOYW1lIiApOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkbWF4X2xpbmUgPiAxICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGxlYWRpbmdfdG9rZW4gPSAkdG9rZW5zX3RvX2dvWyRpYmVnX25leHRdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHRva2Vuc19kaWZmZXI7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBuZXZlciBpbmRlbnQgbGluZSAxIG9mIGEgJy4nIHNlcmllcyBiZWNhdXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHByZXZpb3VzIGxpbmUgaXMgbW9zdCBsaWtlbHkgYXQgc2FtZSBsZXZlbC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVE9ETzogd2Ugc2hvdWxkIGFsc28gbG9vayBhdCB0aGUgbGVhc2luZ19zcGFjZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb2YgdGhlIGxhc3Qgb3V0cHV0IGxpbmUgYW5kIHNraXAgaWYgaXQgaXMgc2FtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcyB0aGlzIGxpbmUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IGlmICggJGxlYWRpbmdfdG9rZW4gZXEgJy4nICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGNvdW50ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGwgKCAyIC4uIDMgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBpZiAoICRsaW5lICsgJGwgPiAkbWF4X2xpbmUgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkaWJlZ19uZXh0X25leHQgPSAkcmlfZmlyc3QtPlsgJGxpbmUgKyAkbCBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJHRva2Vuc190b19nb1skaWJlZ19uZXh0X25leHRdIG5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsZWFkaW5nX3Rva2VuICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0b2tlbnNfZGlmZmVyID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvdW50Kys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IGlmICgkdG9rZW5zX2RpZmZlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IGlmICggJGNvdW50IDwgMyAmJiAkbGVhZGluZ190b2tlbiBuZSAnOicgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpcGFkID0gJGliZWc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGZpbmQgaW50ZXJpb3IgdG9rZW4gdG8gcGFkIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICBpZiAoICFkZWZpbmVkKCRpcGFkKSApIHsKCiAgICAgICAgICAgICAgICBmb3IgKCBteSAkaSA9ICRpYmVnIDsgKCAkaSA8ICRpZW5kICkgJiYgISRpcGFkIDsgJGkrKyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBmaW5kIGFueSB1bmNsb3NlZCBjb250YWluZXIKICAgICAgICAgICAgICAgICAgICBuZXh0CiAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKCAkdHlwZV9zZXF1ZW5jZV90b19nb1skaV0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgJG1hdGVfaW5kZXhfdG9fZ29bJGldID4gJGllbmQgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBmaW5kIG5leHQgbm9uYmxhbmsgdG9rZW4gdG8gcGFkCiAgICAgICAgICAgICAgICAgICAgJGlwYWQgPSAkaW5leHRfdG9fZ29bJGldOwogICAgICAgICAgICAgICAgICAgIGxhc3QgaWYgKCAkaXBhZCA+ICRpZW5kICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBsYXN0IHVubGVzcyAkaXBhZDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBXZSBjYW5ub3QgcGFkIHRoZSBmaXJzdCBsZWFkaW5nIHRva2VuIG9mIGEgZmlsZSBiZWNhdXNlCiAgICAgICAgICAgICMgaXQgY291bGQgY2F1c2UgYSBidWcgaW4gd2hpY2ggdGhlIHN0YXJ0aW5nIGluZGVudGF0aW9uCiAgICAgICAgICAgICMgbGV2ZWwgaXMgZ3Vlc3NlZCBpbmNvcnJlY3RseSBlYWNoIHRpbWUgdGhlIGNvZGUgaXMgcnVuCiAgICAgICAgICAgICMgdGhvdWdoIHBlcmx0aWR5LCB0aHVzIGNhdXNpbmcgdGhlIGNvZGUgdG8gbWFyY2ggb2ZmIHRvCiAgICAgICAgICAgICMgdGhlIHJpZ2h0LiAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgc25pcHBldCB3b3VsZCBoYXZlCiAgICAgICAgICAgICMgdGhpcyBwcm9ibGVtOgoKIyMgICAgIG92X21ldGhvZCBteWNhbiggJHBhY2thZ2UsICcoIiInICksICAgICAgICRwYWNrYWdlCiMjICBvciBvdl9tZXRob2QgbXljYW4oICRwYWNrYWdlLCAnKDArJyApLCAgICAgICAkcGFja2FnZQojIyAgb3Igb3ZfbWV0aG9kIG15Y2FuKCAkcGFja2FnZSwgJyhib29sJyApLCAgICAgJHBhY2thZ2UKIyMgIG9yIG92X21ldGhvZCBteWNhbiggJHBhY2thZ2UsICcobm9tZXRob2QnICksICRwYWNrYWdlOwoKICAgICAgICAgICAgIyBJZiB0aGlzIHNuaXBwZXQgaXMgd2l0aGluIGEgYmxvY2sgdGhpcyB3b24ndCBoYXBwZW4KICAgICAgICAgICAgIyB1bmxlc3MgdGhlIHVzZXIganVzdCBwcm9jZXNzZXMgdGhlIHNuaXBwZXQgYWxvbmUgd2l0aGluCiAgICAgICAgICAgICMgYW4gZWRpdG9yLiAgSW4gdGhhdCBjYXNlIGVpdGhlciB0aGUgdXNlciB3aWxsIHNlZSBhbmQKICAgICAgICAgICAgIyBmaXggdGhlIHByb2JsZW0gb3IgaXQgd2lsbCBiZSBjb3JyZWN0ZWQgbmV4dCB0aW1lIHRoZQogICAgICAgICAgICAjIGVudGlyZSBmaWxlIGlzIHByb2Nlc3NlZCB3aXRoIHBlcmx0aWR5LgogICAgICAgICAgICBuZXh0IGlmICggJGlwYWQgPT0gMCAmJiAkcGVha19iYXRjaF9zaXplIDw9IDEgKTsKCiMjIFRISVMgUEFUQ0ggUkVNT1ZFUyBUSEUgRk9MTE9XSU5HIFBPT1IgUEFERElORyAobWF0aC50KSB3aXRoIC1wYnAsIEJVVAojIyBJVCBESUQgTU9SRSBIQVJNIFRIQU4gR09PRAojIyAgICAgICAgICAgIGNlaWwoCiMjICAgICAgICAgICAgICAgICAgICAgICRmb250LT57J2xvY2EnfS0+eydnbHlwaHMnfVskeF0tPnJlYWQtPnsneE1pbid9ICogMTAwMAojIyAgICAgICAgICAgICAgICAgICAgLyAkdXBlbQojIyAgICAgICAgICAgICksCiMjPyAgICAgICAgICAgICMgZG8gbm90IHB1dCBsZWFkaW5nIHBhZGRpbmcgZm9yIGp1c3QgMiBsaW5lcyBvZiBtYXRoCiMjPyAgICAgICAgICAgIGlmICggICAkaXBhZCA9PSAkaWJlZwojIz8gICAgICAgICAgICAgICAgJiYgJGxpbmUgPiAwCiMjPyAgICAgICAgICAgICAgICAmJiAkbGV2ZWxzX3RvX2dvWyRpcGFkXSA+ICRsZXZlbHNfdG9fZ29bICRpcGFkIC0gMSBdCiMjPyAgICAgICAgICAgICAgICAmJiAkaXNfbWF0aF9vcHskdHlwZV9uZXh0fQojIz8gICAgICAgICAgICAgICAgJiYgJGxpbmUgKyAyIDw9ICRtYXhfbGluZSApCiMjPyAgICAgICAgICAgIHsKIyM/ICAgICAgICAgICAgICAgIG15ICRpYmVnX25leHRfbmV4dCA9ICRyaV9maXJzdC0+WyAkbGluZSArIDIgXTsKIyM/ICAgICAgICAgICAgICAgIG15ICR0eXBlX25leHRfbmV4dCA9ICR0eXBlc190b19nb1skaWJlZ19uZXh0X25leHRdOwojIz8gICAgICAgICAgICAgICAgbmV4dCBpZiAhJGlzX21hdGhfb3B7JHR5cGVfbmV4dF9uZXh0fTsKIyM/ICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBuZXh0IGxpbmUgbXVzdCBub3QgYmUgYXQgZ3JlYXRlciBkZXB0aAogICAgICAgICAgICBteSAkaWVuZF9uZXh0ID0gJHJpX2xhc3QtPlsgJGxpbmUgKyAxIF07CiAgICAgICAgICAgIG5leHQKICAgICAgICAgICAgICBpZiAoICRuZXN0aW5nX2RlcHRoX3RvX2dvWyAkaWVuZF9uZXh0ICsgMSBdID4KICAgICAgICAgICAgICAgICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpcGFkXSApOwoKICAgICAgICAgICAgIyBsaW5lcyBtdXN0IGJlIHNvbWV3aGF0IHNpbWlsYXIgdG8gYmUgcGFkZGVkLi4KICAgICAgICAgICAgbXkgJGluZXh0X25leHQgPSAkaW5leHRfdG9fZ29bJGliZWdfbmV4dF07CiAgICAgICAgICAgIG15ICR0eXBlICAgICAgID0gJHR5cGVzX3RvX2dvWyRpcGFkXTsKICAgICAgICAgICAgbXkgJHR5cGVfbmV4dCAgPSAkdHlwZXNfdG9fZ29bICRpcGFkICsgMSBdOwoKICAgICAgICAgICAgIyBzZWUgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGNvbnRpbnVhdGlvbiBsaW5lcwogICAgICAgICAgICBteSAkbG9naWNhbF9jb250aW51YXRpb25fbGluZXMgPSAxOwogICAgICAgICAgICBpZiAoICRsaW5lICsgMiA8PSAkbWF4X2xpbmUgKSB7CiAgICAgICAgICAgICAgICBteSAkbGVhZGluZ190b2tlbiAgPSAkdG9rZW5zX3RvX2dvWyRpYmVnX25leHRdOwogICAgICAgICAgICAgICAgbXkgJGliZWdfbmV4dF9uZXh0ID0gJHJpX2ZpcnN0LT5bICRsaW5lICsgMiBdOwogICAgICAgICAgICAgICAgaWYgKCAgICR0b2tlbnNfdG9fZ29bJGliZWdfbmV4dF9uZXh0XSBlcSAkbGVhZGluZ190b2tlbgogICAgICAgICAgICAgICAgICAgICYmICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpYmVnX25leHRdIGVxCiAgICAgICAgICAgICAgICAgICAgJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGliZWdfbmV4dF9uZXh0XSApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJGxvZ2ljYWxfY29udGludWF0aW9uX2xpbmVzKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2VlIGlmIGxlYWRpbmcgdHlwZXMgbWF0Y2gKICAgICAgICAgICAgbXkgJHR5cGVzX21hdGNoID0gJHR5cGVzX3RvX2dvWyRpbmV4dF9uZXh0XSBlcSAkdHlwZTsKICAgICAgICAgICAgbXkgJG1hdGNoZXNfd2l0aG91dF9iYW5nOwoKICAgICAgICAgICAgIyBpZiBmaXJzdCBsaW5lIGhhcyBsZWFkaW5nICEgdGhlbiBjb21wYXJlIHRoZSBmb2xsb3dpbmcgdG9rZW4KICAgICAgICAgICAgaWYgKCAhJHR5cGVzX21hdGNoICYmICR0eXBlIGVxICchJyApIHsKICAgICAgICAgICAgICAgICR0eXBlc19tYXRjaCA9ICRtYXRjaGVzX3dpdGhvdXRfYmFuZyA9CiAgICAgICAgICAgICAgICAgICR0eXBlc190b19nb1skaW5leHRfbmV4dF0gZXEgJHR5cGVzX3RvX2dvWyAkaXBhZCArIDEgXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKAoKICAgICAgICAgICAgICAgICMgZWl0aGVyIHdlIGhhdmUgbXVsdGlwbGUgY29udGludWF0aW9uIGxpbmVzIHRvIGZvbGxvdwogICAgICAgICAgICAgICAgIyBhbmQgd2UgYXJlIG5vdCBwYWRkaW5nIHRoZSBmaXJzdCB0b2tlbgogICAgICAgICAgICAgICAgKCAkbG9naWNhbF9jb250aW51YXRpb25fbGluZXMgPiAxICYmICRpcGFkID4gMCApCgogICAgICAgICAgICAgICAgIyBvci4uCiAgICAgICAgICAgICAgICB8fCAoCgogICAgICAgICAgICAgICAgICAgICMgdHlwZXMgbXVzdCBtYXRjaAogICAgICAgICAgICAgICAgICAgICR0eXBlc19tYXRjaAoKICAgICAgICAgICAgICAgICAgICAjIGFuZCBrZXl3b3JkcyBtdXN0IG1hdGNoIGlmIGtleXdvcmQKICAgICAgICAgICAgICAgICAgICAmJiAhKAogICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSBlcSAnaycKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHRva2Vuc190b19nb1skaXBhZF0gbmUgJHRva2Vuc190b19nb1skaW5leHRfbmV4dF0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS1iZWdpbiBzcGVjaWFsIGNoZWNrcy0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAjIFNQRUNJQUwgQ0hFQ0sgMToKICAgICAgICAgICAgICAgICMgQSBjaGVjayBpcyBuZWVkZWQgYmVmb3JlIHdlIGNhbiBtYWtlIHRoZSBwYWQuCiAgICAgICAgICAgICAgICAjIElmIHdlIGFyZSBpbiBhIGxpc3Qgd2l0aCBzb21lIGxvbmcgaXRlbXMsIHdlIHdhbnQgZWFjaAogICAgICAgICAgICAgICAgIyBpdGVtIHRvIHN0YW5kIG91dC4gIFNvIGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgdGhlCiAgICAgICAgICAgICAgICAjIGZpcnN0IGxpbmUgYmVnaW5uaW5nIHdpdGggJyRjYXNlZm9sZC0+JyB3b3VsZCBsb29rIGdvb2QKICAgICAgICAgICAgICAgICMgcGFkZGVkIHRvIGFsaWduIHdpdGggdGhlIG5leHQgbGluZSwgYnV0IHRoZW4gaXQKICAgICAgICAgICAgICAgICMgd291bGQgYmUgaW5kZW50ZWQgbW9yZSB0aGFuIHRoZSBsYXN0IGxpbmUsIHNvIHdlCiAgICAgICAgICAgICAgICAjIHdvbid0IGRvIGl0LgogICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgIyAgb2soCiAgICAgICAgICAgICAgICAjICAgICAgJGNhc2Vmb2xkLT57Y29kZX0gICAgICAgICBlcSAnMDA0MScKICAgICAgICAgICAgICAgICMgICAgICAgICYmICRjYXNlZm9sZC0+e3N0YXR1c30gIGVxICdDJwogICAgICAgICAgICAgICAgIyAgICAgICAgJiYgJGNhc2Vmb2xkLT57bWFwcGluZ30gZXEgJzAwNjEnLAogICAgICAgICAgICAgICAgIyAgICAgICdjYXNlZm9sZCAweDQxJwogICAgICAgICAgICAgICAgIyAgKTsKICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICMgTm90ZToKICAgICAgICAgICAgICAgICMgSXQgd291bGQgYmUgZmFzdGVyLCBhbmQgYWxtb3N0IGFzIGdvb2QsIHRvIHVzZSBhIGNvbW1hCiAgICAgICAgICAgICAgICAjIGNvdW50LCBhbmQgbm90IHBhZCBpZiBjb21tYV9jb3VudCA+IDEgYW5kIHRoZSBwcmV2aW91cwogICAgICAgICAgICAgICAgIyBsaW5lIGRpZCBub3QgZW5kIHdpdGggYSBjb21tYS4KICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgIG15ICRva190b19wYWQgPSAxOwoKICAgICAgICAgICAgICAgIG15ICRpYmcgICA9ICRyaV9maXJzdC0+WyAkbGluZSArIDEgXTsKICAgICAgICAgICAgICAgIG15ICRkZXB0aCA9ICRuZXN0aW5nX2RlcHRoX3RvX2dvWyAkaWJnICsgMSBdOwoKICAgICAgICAgICAgICAgICMganVzdCB1c2Ugc2ltcGxpZmllZCBmb3JtdWxhIGZvciBsZWFkaW5nIHNwYWNlcyB0byBhdm9pZAogICAgICAgICAgICAgICAgIyBuZWVkbGVzcyBzdWIgY2FsbHMKICAgICAgICAgICAgICAgIG15ICRsc3AgPSAkbGV2ZWxzX3RvX2dvWyRpYmddICsgJGNpX2xldmVsc190b19nb1skaWJnXTsKCiAgICAgICAgICAgICAgICAjIGxvb2sgYXQgZWFjaCBsaW5lIGJleW9uZCB0aGUgbmV4dCAuLgogICAgICAgICAgICAgICAgbXkgJGwgPSAkbGluZSArIDE7CiAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRsdGVzdCAoICRsaW5lICsgMiAuLiAkbWF4X2xpbmUgKSB7CiAgICAgICAgICAgICAgICAgICAgJGwgPSAkbHRlc3Q7CiAgICAgICAgICAgICAgICAgICAgbXkgJGliZyA9ICRyaV9maXJzdC0+WyRsXTsKCiAgICAgICAgICAgICAgICAgICAgIyBxdWl0IGxvb2tpbmcgYXQgdGhlIGVuZCBvZiB0aGlzIGNvbnRhaW5lcgogICAgICAgICAgICAgICAgICAgIGxhc3QKICAgICAgICAgICAgICAgICAgICAgIGlmICggJG5lc3RpbmdfZGVwdGhfdG9fZ29bICRpYmcgKyAxIF0gPCAkZGVwdGggKQogICAgICAgICAgICAgICAgICAgICAgfHwgKCAkbmVzdGluZ19kZXB0aF90b19nb1skaWJnXSA8ICRkZXB0aCApOwoKICAgICAgICAgICAgICAgICAgICAjIGNhbm5vdCBkbyB0aGUgcGFkIGlmIGEgbGF0ZXIgbGluZSB3b3VsZCBiZQogICAgICAgICAgICAgICAgICAgICMgb3V0ZGVudGVkIG1vcmUKICAgICAgICAgICAgICAgICAgICBpZiAoICRsZXZlbHNfdG9fZ29bJGliZ10gKyAkY2lfbGV2ZWxzX3RvX2dvWyRpYmddIDwgJGxzcCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG9rX3RvX3BhZCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZG9uJ3QgcGFkIGlmIHdlIGVuZCBpbiBhIGJyb2tlbiBsaXN0CiAgICAgICAgICAgICAgICBpZiAoICRsID09ICRtYXhfbGluZSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkaTIgPSAkcmlfbGFzdC0+WyRsXTsKICAgICAgICAgICAgICAgICAgICBpZiAoICR0eXBlc190b19nb1skaTJdIGVxICcjJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGkxID0gJHJpX2ZpcnN0LT5bJGxdOwogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IGlmIHRlcm1pbmFsX3R5cGVfaSggJGkxLCAkaTIgKSBlcSAnLCc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgU1BFQ0lBTCBDSEVDSyAyOgogICAgICAgICAgICAgICAgIyBhIG1pbnVzIG1heSBpbnRyb2R1Y2UgYSBxdW90ZWQgdmFyaWFibGUsIGFuZCB3ZSB3aWxsCiAgICAgICAgICAgICAgICAjIGFkZCB0aGUgcGFkIG9ubHkgaWYgdGhpcyBsaW5lIGJlZ2lucyB3aXRoIGEgYmFyZSB3b3JkLAogICAgICAgICAgICAgICAgIyBzdWNoIGFzIGZvciB0aGUgd29yZCAnQnV0dG9uJyBoZXJlOgogICAgICAgICAgICAgICAgIyAgICBbCiAgICAgICAgICAgICAgICAjICAgICAgICAgQnV0dG9uICAgICAgPT4gIlByaW50IGxldHRlciBcIn4kX1wiIiwKICAgICAgICAgICAgICAgICMgICAgICAgIC1jb21tYW5kICAgICA9PiBbIHN1YiB7IHByaW50ICIkX1swXVxuIiB9LCAkXyBdLAogICAgICAgICAgICAgICAgIyAgICAgICAgLWFjY2VsZXJhdG9yID0+ICJNZXRhKyRfIgogICAgICAgICAgICAgICAgIyAgICBdOwogICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgIyAgT24gdGhlIG90aGVyIGhhbmQsIGlmICdCdXR0b24nIGlzIHF1b3RlZCwgaXQgbG9va3MgYmVzdAogICAgICAgICAgICAgICAgIyAgbm90IHRvIHBhZDoKICAgICAgICAgICAgICAgICMgICAgWwogICAgICAgICAgICAgICAgIyAgICAgICAgJ0J1dHRvbicgICAgID0+ICJQcmludCBsZXR0ZXIgXCJ+JF9cIiIsCiAgICAgICAgICAgICAgICAjICAgICAgICAtY29tbWFuZCAgICAgPT4gWyBzdWIgeyBwcmludCAiJF9bMF1cbiIgfSwgJF8gXSwKICAgICAgICAgICAgICAgICMgICAgICAgIC1hY2NlbGVyYXRvciA9PiAiTWV0YSskXyIKICAgICAgICAgICAgICAgICMgICAgXTsKICAgICAgICAgICAgICAgIGlmICggJHR5cGVzX3RvX2dvWyRpYmVnX25leHRdIGVxICdtJyApIHsKICAgICAgICAgICAgICAgICAgICAkb2tfdG9fcGFkID0gMCBpZiAkdHlwZXNfdG9fZ29bJGliZWddIGVxICdRJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyAkb2tfdG9fcGFkOwoKICAgICAgICAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tZW5kIHNwZWNpYWwgY2hlY2stLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgICAgICAgICBteSAkbGVuZ3RoXzEgPSB0b3RhbF9saW5lX2xlbmd0aCggJGliZWcsICAgICAgJGlwYWQgLSAxICk7CiAgICAgICAgICAgICAgICBteSAkbGVuZ3RoXzIgPSB0b3RhbF9saW5lX2xlbmd0aCggJGliZWdfbmV4dCwgJGluZXh0X25leHQgLSAxICk7CiAgICAgICAgICAgICAgICAkcGFkX3NwYWNlcyA9ICRsZW5ndGhfMiAtICRsZW5ndGhfMTsKCiAgICAgICAgICAgICAgICAjIElmIHRoZSBmaXJzdCBsaW5lIGhhcyBhIGxlYWRpbmcgISBhbmQgdGhlIHNlY29uZCBkb2VzCiAgICAgICAgICAgICAgICAjIG5vdCwgdGhlbiByZW1vdmUgb25lIHNwYWNlIHRvIHRyeSB0byBhbGlnbiB0aGUgbmV4dAogICAgICAgICAgICAgICAgIyBsZWFkaW5nIGNoYXJhY3RlcnMsIHdoaWNoIGFyZSBvZnRlbiB0aGUgc2FtZS4gIEZvciBleGFtcGxlOgogICAgICAgICAgICAgICAgIyAgaWYgKCAgISR0cwogICAgICAgICAgICAgICAgIyAgICAgIHx8ICR0cyA9PSAkc2VsZi0+SG9sZGVyCiAgICAgICAgICAgICAgICAjICAgICAgfHwgJHNlbGYtPkhvbGRlci0+VHlwZSBlcSAiQXJlbmEiICkKICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICMgVGhpcyB1c3VhbGx5IGhlbHBzIHJlYWRhYmlsaXR5LCBidXQgaWYgdGhlcmUgYXJlIHN1YnNlcXVlbnQKICAgICAgICAgICAgICAgICMgISBvcGVyYXRvcnMgdGhpbmdzIHdpbGwgc3RpbGwgZ2V0IG1lc3NlZCB1cC4gIEZvciBleGFtcGxlOgogICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgIyAgaWYgKCAgIWV4aXN0cyAkTmV0OjpETlM6OnR5cGVzYnluYW1leyRxdHlwZX0KICAgICAgICAgICAgICAgICMgICAgICAmJiBleGlzdHMgJE5ldDo6RE5TOjpjbGFzc2VzYnluYW1leyRxdHlwZX0KICAgICAgICAgICAgICAgICMgICAgICAmJiAhZXhpc3RzICROZXQ6OkROUzo6Y2xhc3Nlc2J5bmFtZXskcWNsYXNzfQogICAgICAgICAgICAgICAgIyAgICAgICYmIGV4aXN0cyAkTmV0OjpETlM6OnR5cGVzYnluYW1leyRxY2xhc3N9ICkKICAgICAgICAgICAgICAgICMgV2UgY2FuJ3QgZml4IHRoYXQuCiAgICAgICAgICAgICAgICBpZiAoJG1hdGNoZXNfd2l0aG91dF9iYW5nKSB7ICRwYWRfc3BhY2VzLS0gfQoKICAgICAgICAgICAgICAgICMgbWFrZSBzdXJlIHRoaXMgd29uJ3QgY2hhbmdlIGlmIC1scCBpcyB1c2VkCiAgICAgICAgICAgICAgICBteSAkaW5kZW50YXRpb25fMSA9ICRsZWFkaW5nX3NwYWNlc190b19nb1skaWJlZ107CiAgICAgICAgICAgICAgICBpZiAoIHJlZigkaW5kZW50YXRpb25fMSkgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkaW5kZW50YXRpb25fMS0+Z2V0X3JlY292ZXJhYmxlX3NwYWNlcygpID09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpbmRlbnRhdGlvbl8yID0gJGxlYWRpbmdfc3BhY2VzX3RvX2dvWyRpYmVnX25leHRdOwogICAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKCAkaW5kZW50YXRpb25fMi0+Z2V0X3JlY292ZXJhYmxlX3NwYWNlcygpID09IDAgKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFkX3NwYWNlcyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB3ZSBtaWdodCBiZSBhYmxlIHRvIGhhbmRsZSBhIHBhZCBvZiAtMSBieSByZW1vdmluZyBhIGJsYW5rCiAgICAgICAgICAgICAgICAjIHRva2VuCiAgICAgICAgICAgICAgICBpZiAoICRwYWRfc3BhY2VzIDwgMCApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBEZWFjdGl2YXRlZCBmb3IgLWtwaXQgZHVlIHRvIGNvbmZsaWN0LiBUaGlzIGJsb2NrIGRlbGV0ZXMKICAgICAgICAgICAgICAgICAgICAjIGEgc3BhY2UgaW4gYW4gYXR0ZW1wdCB0byBpbXByb3ZlIGFsaWdubWVudCBpbiBzb21lIGNhc2VzLAogICAgICAgICAgICAgICAgICAgICMgYnV0IGl0IG1heSBjb25mbGljdCB3aXRoIHVzZXIgc3BhY2luZyByZXF1ZXN0cy4gIEZvciBub3cKICAgICAgICAgICAgICAgICAgICAjIGl0IGlzIGp1c3QgZGVhY3RpdmF0ZWQgaWYgdGhlIC1rcGl0IG9wdGlvbiBpcyB1c2VkLgogICAgICAgICAgICAgICAgICAgIGlmICggJHBhZF9zcGFjZXMgPT0gLTEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggICAkaXBhZCA+ICRpYmVnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZXNfdG9fZ29bICRpcGFkIC0gMSBdIGVxICdiJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgISVrZXl3b3JkX3BhcmVuX2lubmVyX3RpZ2h0bmVzcyApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5wYWRfdG9rZW4oICRpcGFkIC0gMSwgJHBhZF9zcGFjZXMgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkcGFkX3NwYWNlcyA9IDA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBub3cgYXBwbHkgYW55IHBhZGRpbmcgZm9yIGFsaWdubWVudAogICAgICAgICAgICAgICAgaWYgKCAkaXBhZCA+PSAwICYmICRwYWRfc3BhY2VzICkgewoKICAgICAgICAgICAgICAgICAgICBteSAkbGVuZ3RoX3QgPSB0b3RhbF9saW5lX2xlbmd0aCggJGliZWcsICRpZW5kICk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkcGFkX3NwYWNlcyArICRsZW5ndGhfdCA8PQogICAgICAgICAgICAgICAgICAgICAgICAkbWF4aW11bV9saW5lX2xlbmd0aFsgJGxldmVsc190b19nb1skaWJlZ10gXSApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi0+cGFkX3Rva2VuKCAkaXBhZCwgJHBhZF9zcGFjZXMgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY29udGludWUgewogICAgICAgICAgICAkaWVuZG0gICAgICAgICAgPSAkaWVuZDsKICAgICAgICAgICAgJGliZWdtICAgICAgICAgID0gJGliZWc7CiAgICAgICAgICAgICRoYXNfbGVhZGluZ19vcCA9ICRoYXNfbGVhZGluZ19vcF9uZXh0OwogICAgICAgIH0gICAgIyBlbmQgb2YgbG9vcCBvdmVyIGxpbmVzCiAgICAgICAgcmV0dXJuOwogICAgfQp9ICMjIGVuZCBjbG9zdXJlIHNldF9sb2dpY2FsX3BhZGRpbmcKCnN1YiBwYWRfdG9rZW4gewoKICAgICMgaW5zZXJ0ICRwYWRfc3BhY2VzIGJlZm9yZSB0b2tlbiBudW1iZXIgJGlwYWQKICAgIG15ICggJHNlbGYsICRpcGFkLCAkcGFkX3NwYWNlcyApID0gQF87CiAgICBteSAkckxMICAgICA9ICRzZWxmLT5bX3JMTF9dOwogICAgbXkgJEtLICAgICAgPSAkS190b19nb1skaXBhZF07CiAgICBteSAkdG9rICAgICA9ICRyTEwtPlskS0tdLT5bX1RPS0VOX107CiAgICBteSAkdG9rX2xlbiA9ICRyTEwtPlskS0tdLT5bX1RPS0VOX0xFTkdUSF9dOwoKICAgIGlmICggJHBhZF9zcGFjZXMgPiAwICkgewogICAgICAgICR0b2sgPSAnICcgeCAkcGFkX3NwYWNlcyAuICR0b2s7CiAgICAgICAgJHRva19sZW4gKz0gJHBhZF9zcGFjZXM7CiAgICB9CiAgICBlbHNpZiAoICRwYWRfc3BhY2VzID09IC0xICYmICR0b2tlbnNfdG9fZ29bJGlwYWRdIGVxICcgJyApIHsKICAgICAgICAkdG9rICAgICA9ICIiOwogICAgICAgICR0b2tfbGVuID0gMDsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIHNob3VsZG4ndCBoYXBwZW4KICAgICAgICByZXR1cm47CiAgICB9CgogICAgJHRvayAgICAgPSAkckxMLT5bJEtLXS0+W19UT0tFTl9dICAgICAgICA9ICR0b2s7CiAgICAkdG9rX2xlbiA9ICRyTEwtPlskS0tdLT5bX1RPS0VOX0xFTkdUSF9dID0gJHRva19sZW47CgogICAgJHRva2VuX2xlbmd0aHNfdG9fZ29bJGlwYWRdICs9ICRwYWRfc3BhY2VzOwogICAgJHRva2Vuc190b19nb1skaXBhZF0gPSAkdG9rOwoKICAgIGZvcmVhY2ggbXkgJGkgKCAkaXBhZCAuLiAkbWF4X2luZGV4X3RvX2dvICkgewogICAgICAgICRzdW1tZWRfbGVuZ3Roc190b19nb1sgJGkgKyAxIF0gKz0gJHBhZF9zcGFjZXM7CiAgICB9CiAgICByZXR1cm47Cn0KCnsgICAgIyMgYmVnaW4gY2xvc3VyZSBtYWtlX2FsaWdubWVudF9wYXR0ZXJucwoKICAgIG15ICVibG9ja190eXBlX21hcDsKICAgIG15ICVrZXl3b3JkX21hcDsKICAgIG15ICVvcGVyYXRvcl9tYXA7CiAgICBteSAlaXNfd19uX0M7CgogICAgQkVHSU4gewoKICAgICAgICAjIG1hcCByZWxhdGVkIGJsb2NrIG5hbWVzIGludG8gYSBjb21tb24gbmFtZSB0bwogICAgICAgICMgYWxsb3cgYWxpZ25tZW50CiAgICAgICAgJWJsb2NrX3R5cGVfbWFwID0gKAogICAgICAgICAgICAndW5sZXNzJyAgPT4gJ2lmJywKICAgICAgICAgICAgJ2Vsc2UnICAgID0+ICdpZicsCiAgICAgICAgICAgICdlbHNpZicgICA9PiAnaWYnLAogICAgICAgICAgICAnd2hlbicgICAgPT4gJ2lmJywKICAgICAgICAgICAgJ2RlZmF1bHQnID0+ICdpZicsCiAgICAgICAgICAgICdjYXNlJyAgICA9PiAnaWYnLAogICAgICAgICAgICAnc29ydCcgICAgPT4gJ21hcCcsCiAgICAgICAgICAgICdncmVwJyAgICA9PiAnbWFwJywKICAgICAgICApOwoKICAgICAgICAjIG1hcCBjZXJ0YWluIGtleXdvcmRzIHRvIHRoZSBzYW1lICdpZicgY2xhc3MgdG8gYWxpZ24KICAgICAgICAjIGxvbmcgaWYvZWxzaWYgc2VxdWVuY2VzLiBbZWxzaWYucGxdCiAgICAgICAgJWtleXdvcmRfbWFwID0gKAogICAgICAgICAgICAndW5sZXNzJyAgPT4gJ2lmJywKICAgICAgICAgICAgJ2Vsc2UnICAgID0+ICdpZicsCiAgICAgICAgICAgICdlbHNpZicgICA9PiAnaWYnLAogICAgICAgICAgICAnd2hlbicgICAgPT4gJ2dpdmVuJywKICAgICAgICAgICAgJ2RlZmF1bHQnID0+ICdnaXZlbicsCiAgICAgICAgICAgICdjYXNlJyAgICA9PiAnc3dpdGNoJywKCiAgICAgICAgICAgICMgdHJlYXQgYW4gJ3VuZGVmJyBzaW1pbGFyIHRvIG51bWJlcnMgYW5kIHF1b3RlcwogICAgICAgICAgICAndW5kZWYnID0+ICdRJywKICAgICAgICApOwoKICAgICAgICAjIG1hcCBjZXJ0YWluIG9wZXJhdG9ycyB0byB0aGUgc2FtZSBjbGFzcyBmb3IgcGF0dGVybiBtYXRjaGluZwogICAgICAgICVvcGVyYXRvcl9tYXAgPSAoCiAgICAgICAgICAgICchficgPT4gJz1+JywKICAgICAgICAgICAgJys9JyA9PiAnKz0nLAogICAgICAgICAgICAnLT0nID0+ICcrPScsCiAgICAgICAgICAgICcqPScgPT4gJys9JywKICAgICAgICAgICAgJy89JyA9PiAnKz0nLAogICAgICAgICk7CgogICAgICAgICVpc193X25fQyA9ICgKICAgICAgICAgICAgJ3cnID0+IDEsCiAgICAgICAgICAgICduJyA9PiAxLAogICAgICAgICAgICAnQycgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgIHN1YiBkZWxldGVfbmVlZGxlc3NfYWxpZ25tZW50cyB7CiAgICAgICAgbXkgKCAkc2VsZiwgJGliZWcsICRpZW5kLCAkcmFsaWdubWVudF90eXBlX3RvX2dvICkgPSBAXzsKCiAgICAgICAgIyBSZW1vdmUgdW53YW50ZWQgYWxpZ25tZW50cy4gIFRoaXMgcm91dGluZSBpcyBhIHBsYWNlIHRvIHJlbW92ZQogICAgICAgICMgYWxpZ25tZW50cyB3aGljaCBtaWdodCBjYXVzZSBwcm9ibGVtcyBhdCBsYXRlciBzdGFnZXMuICBUaGVyZSBhcmUKICAgICAgICAjIGN1cnJlbnRseSB0d28gdHlwZXMgb2YgZml4ZXM6CgogICAgICAgICMgMS4gUmVtb3ZlIGV4Y2VzcyBwYXJlbnMKICAgICAgICAjIDIuIFJlbW92ZSBhbGlnbm1lbnRzIHdpdGhpbiAnZWxzaWYnIGNvbmRpdGlvbnMKCiAgICAgICAgIyBQYXRjaCAjMTogRXhjZXNzIGFsaWdubWVudCBvZiBwYXJlbnMgY2FuIHByZXZlbnQgb3RoZXIgZ29vZAogICAgICAgICMgYWxpZ25tZW50cy4gIEZvciBleGFtcGxlLCBub3RlIHRoZSBwYXJlbnMgaW4gdGhlIGZpcnN0IHR3byByb3dzIG9mCiAgICAgICAgIyB0aGUgZm9sbG93aW5nIHNuaXBwZXQuICBUaGV5IHdvdWxkIG5vcm1hbGx5IGdldCBtYXJrZWQgZm9yIGFsaWdubWVudAogICAgICAgICMgYW5kIGFsaWduZWQgYXMgZm9sbG93czoKCiAgICAgICAgIyAgICBteSAkdyA9ICRjb2x1bW5zICogJGNlbGxfdyArICggJGNvbHVtbnMgKyAxICkgKiAkYm9yZGVyOwogICAgICAgICMgICAgbXkgJGggPSAkcm93cyAqICRjZWxsX2ggKyAgICAoICRyb3dzICsgMSApICogJGJvcmRlcjsKICAgICAgICAjICAgIG15ICRpbWcgPSBuZXcgR2ltcDo6SW1hZ2UoICR3LCAkaCwgUkdCICk7CgogICAgICAgICMgVGhpcyBjYXVzZXMgdW5uZWNlc3NhcnkgcGFyZW4gYWxpZ25tZW50IGFuZCBwcmV2ZW50cyB0aGUgdGhpcmQgZXF1YWxzCiAgICAgICAgIyBmcm9tIGFsaWduaW5nLiBJZiB3ZSByZW1vdmUgdGhlIHVud2FudGVkIGFsaWdubWVudHMgd2UgZ2V0OgoKICAgICAgICAjICAgIG15ICR3ICAgPSAkY29sdW1ucyAqICRjZWxsX3cgKyAoICRjb2x1bW5zICsgMSApICogJGJvcmRlcjsKICAgICAgICAjICAgIG15ICRoICAgPSAkcm93cyAqICRjZWxsX2ggKyAoICRyb3dzICsgMSApICogJGJvcmRlcjsKICAgICAgICAjICAgIG15ICRpbWcgPSBuZXcgR2ltcDo6SW1hZ2UoICR3LCAkaCwgUkdCICk7CgogICAgICAgICMgQSBydWxlIGZvciBkb2luZyB0aGlzIHdoaWNoIHdvcmtzIHdlbGwgaXMgdG8gcmVtb3ZlIGFsaWdubWVudCBvZgogICAgICAgICMgcGFyZW5zIHdob3NlIGNvbnRhaW5lcnMgZG8gbm90IGNvbnRhaW4gb3RoZXIgYWxpZ25pbmcgdG9rZW5zLCB3aXRoCiAgICAgICAgIyB0aGUgZXhjZXB0aW9uIHRoYXQgd2UgYWx3YXlzIGtlZXAgYWxpZ25tZW50IG9mIHRoZSBmaXJzdCBvcGVuaW5nCiAgICAgICAgIyBwYXJlbiBvbiBhIGxpbmUgKGZvciB0aGluZ3MgbGlrZSAnaWYnIGFuZCAnZWxzaWYnIHN0YXRlbWVudHMpLgoKICAgICAgICAjIFNldHVwIG5lZWRlZCBjb25zdGFudHMKICAgICAgICBteSAkaV9nb29kX3BhcmVuICA9IC0xOwogICAgICAgIG15ICRpbWluX21hdGNoICAgID0gJGllbmQgKyAxOwogICAgICAgIG15ICRpX2Vsc2lmX2Nsb3NlID0gJGliZWcgLSAxOwogICAgICAgIG15ICRpX2Vsc2lmX29wZW4gID0gJGllbmQgKyAxOwogICAgICAgIGlmICggJGllbmQgPiAkaWJlZyApIHsKICAgICAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bJGliZWddIGVxICdrJyApIHsKCiAgICAgICAgICAgICAgICAjIFBhcmVuIHBhdGNoOiBtYXJrIGEgbG9jYXRpb24gb2YgYSBwYXJlbiB3ZSBzaG91bGQga2VlcCwgc3VjaAogICAgICAgICAgICAgICAgIyBhcyBvbmUgZm9sbG93aW5nIHNvbWV0aGluZyBsaWtlIGEgbGVhZGluZyAnaWYnLCAnZWxzaWYnLC4uCiAgICAgICAgICAgICAgICAkaV9nb29kX3BhcmVuID0gJGliZWcgKyAxOwogICAgICAgICAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bJGlfZ29vZF9wYXJlbl0gZXEgJ2InICkgewogICAgICAgICAgICAgICAgICAgICRpX2dvb2RfcGFyZW4rKzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjICdlbHNpZicgcGF0Y2g6IHJlbWVtYmVyIHRoZSByYW5nZSBvZiB0aGUgcGFyZW5zIG9mIGFuIGVsc2lmLAogICAgICAgICAgICAgICAgIyBhbmQgZG8gbm90IG1ha2UgYWxpZ25tZW50cyB3aXRoaW4gdGhlbSBiZWNhdXNlIHRoaXMgY2FuIGNhdXNlCiAgICAgICAgICAgICAgICAjIGxvc3Mgb2YgcGFkZGluZyBhbmQgb3ZlcmFsbCBicmFjZSBhbGlnbm1lbnQgaW4gdGhlIHZlcnRpY2FsCiAgICAgICAgICAgICAgICAjIGFsaWduZXIuCiAgICAgICAgICAgICAgICBpZiAoICAgJHRva2Vuc190b19nb1skaWJlZ10gZXEgJ2Vsc2lmJwogICAgICAgICAgICAgICAgICAgICYmICRpX2dvb2RfcGFyZW4gPCAkaWVuZAogICAgICAgICAgICAgICAgICAgICYmICR0b2tlbnNfdG9fZ29bJGlfZ29vZF9wYXJlbl0gZXEgJygnICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkaV9lbHNpZl9vcGVuICA9ICRpX2dvb2RfcGFyZW47CiAgICAgICAgICAgICAgICAgICAgJGlfZWxzaWZfY2xvc2UgPSAkbWF0ZV9pbmRleF90b19nb1skaV9nb29kX3BhcmVuXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBMb29wIHRvIG1ha2UgdGhlIGZpeGVzIG9uIHRoaXMgbGluZQogICAgICAgIG15IEBpbWF0Y2hfbGlzdDsKICAgICAgICBmb3IgbXkgJGkgKCAkaWJlZyAuLiAkaWVuZCApIHsKCiAgICAgICAgICAgIGlmICggJHJhbGlnbm1lbnRfdHlwZV90b19nby0+WyRpXSApIHsKCiAgICAgICAgICAgICAgICAjIFBhdGNoICMyOiB1bmRvIGFsaWdubWVudCB3aXRoaW4gZWxzaWYgcGFyZW5zCiAgICAgICAgICAgICAgICBpZiAoICRpID4gJGlfZWxzaWZfb3BlbiAmJiAkaSA8ICRpX2Vsc2lmX2Nsb3NlICkgewogICAgICAgICAgICAgICAgICAgICRyYWxpZ25tZW50X3R5cGVfdG9fZ28tPlskaV0gPSAnJzsKICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcHVzaCBAaW1hdGNoX2xpc3QsICRpOwoKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICR0b2tlbnNfdG9fZ29bJGldIGVxICcpJyApIHsKCiAgICAgICAgICAgICAgICAjIFBhdGNoICMxOiB1bmRvIHRoZSBjb3JyZXNwb25kaW5nIG9wZW5pbmcgcGFyZW4gaWY6CiAgICAgICAgICAgICAgICAjIC0gaXQgaXMgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2sKICAgICAgICAgICAgICAgICMgLSBhbmQgbm90IHRoZSBmaXJzdCBvdmVyYWxsIG9wZW5pbmcgcGFyZW4KICAgICAgICAgICAgICAgICMgLSBkb2VzIG5vdCBmb2xsb3cgYSBsZWFkaW5nIGtleXdvcmQgb24gdGhpcyBsaW5lCiAgICAgICAgICAgICAgICBteSAkaW1hdGUgPSAkbWF0ZV9pbmRleF90b19nb1skaV07CiAgICAgICAgICAgICAgICBpZiAoICAgQGltYXRjaF9saXN0CiAgICAgICAgICAgICAgICAgICAgJiYgJGltYXRjaF9saXN0Wy0xXSBlcSAkaW1hdGUKICAgICAgICAgICAgICAgICAgICAmJiAoICRpYmVnID4gMSB8fCBAaW1hdGNoX2xpc3QgPiAxICkKICAgICAgICAgICAgICAgICAgICAmJiAkaW1hdGUgPiAkaV9nb29kX3BhcmVuICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkcmFsaWdubWVudF90eXBlX3RvX2dvLT5bJGltYXRlXSA9ICcnOwogICAgICAgICAgICAgICAgICAgIHBvcCBAaW1hdGNoX2xpc3Q7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBtYWtlX2FsaWdubWVudF9wYXR0ZXJucyB7CgogICAgICAgICMgSGVyZSB3ZSBkbyBzb21lIGltcG9ydGFudCBwcmVsaW1pbmFyeSB3b3JrIGZvciB0aGUKICAgICAgICAjIHZlcnRpY2FsIGFsaWduZXIuICBXZSBjcmVhdGUgdGhyZWUgYXJyYXlzIGZvciBvbmUKICAgICAgICAjIG91dHB1dCBsaW5lLiBUaGVzZSBhcnJheXMgY29udGFpbiBzdHJpbmdzIHRoYXQgY2FuCiAgICAgICAgIyBiZSB0ZXN0ZWQgYnkgdGhlIHZlcnRpY2FsIGFsaWduZXIgdG8gc2VlIGlmCiAgICAgICAgIyBjb25zZWN1dGl2ZSBsaW5lcyBjYW4gYmUgYWxpZ25lZCB2ZXJ0aWNhbGx5LgogICAgICAgICMKICAgICAgICAjIFRoZSB0aHJlZSBhcnJheXMgYXJlIGluZGV4ZWQgb24gdGhlIHZlcnRpY2FsCiAgICAgICAgIyBhbGlnbm1lbnQgZmllbGRzIGFuZCBhcmU6CiAgICAgICAgIyBAdG9rZW5zIC0gYSBsaXN0IG9mIGFueSB2ZXJ0aWNhbCBhbGlnbm1lbnQgdG9rZW5zIGZvciB0aGlzIGxpbmUuCiAgICAgICAgIyAgIFRoZXNlIGFyZSB0b2tlbnMsIHN1Y2ggYXMgJz0nICcmJicgJyMnIGV0YyB3aGljaAogICAgICAgICMgICB3ZSB3YW50IHRvIG1pZ2h0IGFsaWduIHZlcnRpY2FsbHkuICBUaGVzZSBhcmUKICAgICAgICAjICAgZGVjb3JhdGVkIHdpdGggdmFyaW91cyBpbmZvcm1hdGlvbiBzdWNoIGFzCiAgICAgICAgIyAgIG5lc3RpbmcgZGVwdGggdG8gcHJldmVudCB1bndhbnRlZCB2ZXJ0aWNhbAogICAgICAgICMgICBhbGlnbm1lbnQgbWF0Y2hlcy4KICAgICAgICAjIEBmaWVsZHMgLSB0aGUgYWN0dWFsIHRleHQgb2YgdGhlIGxpbmUgYmV0d2VlbiB0aGUgdmVydGljYWwgYWxpZ25tZW50CiAgICAgICAgIyAgIHRva2Vucy4KICAgICAgICAjIEBwYXR0ZXJucyAtIGEgbW9kaWZpZWQgbGlzdCBvZiB0b2tlbiB0eXBlcywgb25lIGZvciBlYWNoIGFsaWdubWVudAogICAgICAgICMgICBmaWVsZC4gIFRoZXNlIHNob3VsZCBub3JtYWxseSBlYWNoIG1hdGNoIGJlZm9yZSBhbGlnbm1lbnQgaXMKICAgICAgICAjICAgYWxsb3dlZCwgZXZlbiB3aGVuIHRoZSBhbGlnbm1lbnQgdG9rZW5zIG1hdGNoLgogICAgICAgIG15ICggJHNlbGYsICRpYmVnLCAkaWVuZCwgJHJhbGlnbm1lbnRfdHlwZV90b19nbyApID0gQF87CiAgICAgICAgbXkgQHRva2VucyAgICAgICAgPSAoKTsKICAgICAgICBteSBAZmllbGRzICAgICAgICA9ICgpOwogICAgICAgIG15IEBwYXR0ZXJucyAgICAgID0gKCk7CiAgICAgICAgbXkgQGZpZWxkX2xlbmd0aHMgPSAoKTsKICAgICAgICBteSAkaV9zdGFydCAgICAgICA9ICRpYmVnOwoKICAgICAgICBteSAkZGVwdGggICAgICAgICAgPSAwOwogICAgICAgIG15ICVjb250YWluZXJfbmFtZSA9ICggMCA9PiAiIiApOwoKICAgICAgICBteSAkaiA9IDA7ICAgICMgZmllbGQgaW5kZXgKCiAgICAgICAgJHBhdHRlcm5zWzBdID0gIiI7CiAgICAgICAgbXkgJXRva2VuX2NvdW50OwogICAgICAgIGZvciBteSAkaSAoICRpYmVnIC4uICRpZW5kICkgewoKICAgICAgICAgICAgIyBLZWVwIHRyYWNrIG9mIGNvbnRhaW5lcnMgYmFsYW5jZWQgb24gdGhpcyBsaW5lIG9ubHkuCiAgICAgICAgICAgICMgVGhlc2UgYXJlIHVzZWQgYmVsb3cgdG8gcHJldmVudCB1bndhbnRlZCBjcm9zcy1saW5lIGFsaWdubWVudHMuCiAgICAgICAgICAgICMgVW5iYWxhbmNlZCBjb250YWluZXJzIGFscmVhZHkgYXZvaWQgYWxpZ25pbmcgYWNyb3NzCiAgICAgICAgICAgICMgY29udGFpbmVyIGJvdW5kYXJpZXMuCgogICAgICAgICAgICBteSAkdHlwZSAgICAgICA9ICR0eXBlc190b19nb1skaV07CiAgICAgICAgICAgIG15ICR0b2tlbiAgICAgID0gJHRva2Vuc190b19nb1skaV07CiAgICAgICAgICAgIG15ICRkZXB0aF9sYXN0ID0gJGRlcHRoOwogICAgICAgICAgICBpZiAoICR0eXBlX3NlcXVlbmNlX3RvX2dvWyRpXSApIHsKICAgICAgICAgICAgICAgIGlmICggJGlzX29wZW5pbmdfdHlwZXskdG9rZW59ICkgewoKICAgICAgICAgICAgICAgICAgICAjIGlmIGNvbnRhaW5lciBpcyBiYWxhbmNlZCBvbiB0aGlzIGxpbmUuLi4KICAgICAgICAgICAgICAgICAgICBteSAkaV9tYXRlID0gJG1hdGVfaW5kZXhfdG9fZ29bJGldOwogICAgICAgICAgICAgICAgICAgIGlmICggJGlfbWF0ZSA+ICRpICYmICRpX21hdGUgPD0gJGllbmQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRkZXB0aCsrOwoKICAgICAgICAgICAgICAgICAgICAgIyBBcHBlbmQgdGhlIHByZXZpb3VzIHRva2VuIG5hbWUgdG8gbWFrZSB0aGUgY29udGFpbmVyIG5hbWUKICAgICAgICAgICAgICAgICAgICAgIyBtb3JlIHVuaXF1ZS4gIFRoaXMgbmFtZSB3aWxsIGFsc28gYmUgZ2l2ZW4gdG8gYW55IGNvbW1hcwogICAgICAgICAgICAgICAgICAgICAjIHdpdGhpbiB0aGlzIGNvbnRhaW5lciwgYW5kIGl0IGhlbHBzIGF2b2lkIHVuZGVzaXJhYmxlCiAgICAgICAgICAgICAgICAgICAgICMgYWxpZ25tZW50cyBvZiBkaWZmZXJlbnQgdHlwZXMgb2YgY29udGFpbmVycy4KCiAgICAgICAgICAgICAgICAgICAgICMgQ29udGFpbmVycyBiZWdpbm5pbmcgd2l0aCB7IGFuZCBbIGFyZSBnaXZlbiB0aG9zZSBuYW1lcwogICAgICAgICAgICAgICAgICAgICAjIGZvciB1bmlxdWVuZXNzLiBUaGF0IHdheSBjb21tYXMgaW4gZGlmZmVyZW50IGNvbnRhaW5lcnMKICAgICAgICAgICAgICAgICAgICAgIyB3aWxsIG5vdCBtYXRjaC4gSGVyZSBpcyBhbiBleGFtcGxlIG9mIHdoYXQgdGhpcyBwcmV2ZW50czoKICAgICAgICAgICAgICAgICAgICAgIwlhID0+IFsgMSwgICAgICAgMiwgMyBdLAogICAgICAgICAgICAgICAgICAgICAjICAgYiA9PiB7IGIxID0+IDQsIGIyID0+IDUgfSwKICAgICAgICAgICAgICAgICAgICAgIyBIZXJlIGlzIGFub3RoZXIgZXhhbXBsZSBvZiB3aGF0IHdlIGF2b2lkIGJ5IGxhYmVsaW5nIHRoZQogICAgICAgICAgICAgICAgICAgICAjIGNvbW1hcyBwcm9wZXJseToKCiAgICAgICAgICAgICAgICAgICAjIGlzX2QoIFsgJGEsICAgICAgICAkYSBdLCBbICRiLCAgICAgICAgICAgICAgICRjIF0gKTsKICAgICAgICAgICAgICAgICAgICMgaXNfZCggeyBmb28gPT4gJGEsIGJhciA9PiAkYSB9LCB7IGZvbyA9PiAkYiwgYmFyID0+ICRjIH0gKTsKICAgICAgICAgICAgICAgICAgICMgaXNfZCggWyBcJGEsICAgICAgIFwkYSBdLCBbIFwkYiwgICAgICAgICAgICAgXCRjIF0gKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRuYW1lID0gJHRva2VuOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICR0b2tlbiBlcSAnKCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICRzZWxmLT5tYWtlX3BhcmVuX25hbWUoJGkpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXJfbmFtZXskZGVwdGh9ID0gIisiIC4gJG5hbWU7CgogICAgICAgICAgICAgICAgICAgICAgICMgTWFrZSB0aGUgY29udGFpbmVyIG5hbWUgZXZlbiBtb3JlIHVuaXF1ZSBpZiBuZWNlc3NhcnkuCiAgICAgICAgICAgICAgICAgICAgICAgIyBJZiB3ZSBhcmUgbm90IHZlcnRpY2FsbHkgYWxpZ25pbmcgdGhpcyBvcGVuaW5nIHBhcmVuLAogICAgICAgICAgICAgICAgICAgICAgICMgYXBwZW5kIGEgY2hhcmFjdGVyIGNvdW50IHRvIGF2b2lkIGJhZCBhbGlnbm1lbnQgYmVjYXVzZQogICAgICAgICAgICAgICAgICAgICAgICMgaXQgdXN1YWxseSBsb29rcyBiYWQgdG8gYWxpZ24gY29tbWFzIHdpdGhpbiBjb250YWluZXJzCiAgICAgICAgICAgICAgICAgICAgICAgIyBmb3Igd2hpY2ggdGhlIG9wZW5pbmcgcGFyZW5zIGRvIG5vdCBhbGlnbi4gIEhlcmUKICAgICAgICAgICAgICAgICAgICAgICAjIGlzIGFuIGV4YW1wbGUgdmVyeSBCQUQgYWxpZ25tZW50IG9mIGNvbW1hcyAoYmVjYXVzZQogICAgICAgICAgICAgICAgICAgICAgICMgdGhlIGF0YW4yIGZ1bmN0aW9ucyBhcmUgbm90IGFsbCBhbGlnbmVkKToKICAgICAgICAgICAgICAgICAgICAgICAjICAgICRYWSA9CiAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICRYICogJFJUWVNRUDEgKiBhdGFuMiggJFgsICRSVFlTUVAxICkgKwogICAgICAgICAgICAgICAgICAgICAgICMgICAgICAkWSAqICRSVFhTUVAxICogYXRhbjIoICRZLCAkUlRYU1FQMSApIC0KICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgJFggKiBhdGFuMiggJFgsICAgICAgICAgICAgMSApIC0KICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgJFkgKiBhdGFuMiggJFksICAgICAgICAgICAgMSApOwogICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAjIE9uIHRoZSBvdGhlciBoYW5kLCBpdCBpcyB1c3VhbGx5IG9rYXkgdG8gYWxpZ24gY29tbWFzCiAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBvcGVuaW5nIHBhcmVucyBhbGlnbiwgc3VjaCBhczoKICAgICAgICAgICAgICAgICAgICAgICAjICAgIGdsVmVydGV4M2QoICRjeCArICRzICogJHhzLCAkY3ksICAgICAgICAgICAgJHogKTsKICAgICAgICAgICAgICAgICAgICAgICAjICAgIGdsVmVydGV4M2QoICRjeCwgICAgICAgICAgICAkY3kgKyAkcyAqICR5cywgJHogKTsKICAgICAgICAgICAgICAgICAgICAgICAjICAgIGdsVmVydGV4M2QoICRjeCAtICRzICogJHhzLCAkY3ksICAgICAgICAgICAgJHogKTsKICAgICAgICAgICAgICAgICAgICAgICAjICAgIGdsVmVydGV4M2QoICRjeCwgICAgICAgICAgICAkY3kgLSAkcyAqICR5cywgJHogKTsKICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgIyBUbyBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZXNlIHNpdHVhdGlvbnMsIHdlIHdpbGwgYXBwZW5kCiAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgbGVuZ3RoIG9mIHRoZSBsaW5lIGZyb20gdGhlIHByZXZpb3VzIG1hdGNoaW5nCiAgICAgICAgICAgICAgICAgICAgICAgIyB0b2tlbiwgb3IgYmVnaW5uaW5nIG9mIGxpbmUsIHRvIHRoZSBmdW5jdGlvbiBuYW1lLgogICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyB3aWxsIGFsbG93IHRoZSB2ZXJ0aWNhbCBhbGlnbmVyIHRvIHJlamVjdAogICAgICAgICAgICAgICAgICAgICAgICMgdW5kZXNpcmFibGUgbWF0Y2hlcy4KCiAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgd2UgYXJlIG5vdCBhbGlnbmluZyBvbiB0aGlzIHBhcmVuLi4uCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISRyYWxpZ25tZW50X3R5cGVfdG9fZ28tPlskaV0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTdW0gbGVuZ3RoIGZyb20gcHJldmlvdXMgYWxpZ25tZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkbGVuID0gdG9rZW5fc2VxdWVuY2VfbGVuZ3RoKCAkaV9zdGFydCwgJGkgLSAxICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBNaW5vciBwYXRjaDogZG8gbm90IGluY2x1ZGUgdGhlIGxlbmd0aCBvZiBhbnkgJyEnLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBPdGhlcndpc2UsIGNvbW1hcyBpbiB0aGUgZm9sbG93aW5nIGxpbmUgd2lsbCBub3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbWF0Y2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIG9rKCAyMCwgdGFwcHJveCggKCBwZGwgMiwgIDMgKSwgKCBwZGwgMiwgMyApICkgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIG9rKCAyMSwgIXRhcHByb3goICggcGRsIDIsIDMgKSwgKCBwZGwgMiwgNCApICkgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZ3JlcCB7ICRfIGVxICchJyB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHR5cGVzX3RvX2dvWyAkaV9zdGFydCAuLiAkaSAtIDEgXSApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxlbiAtPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGlfc3RhcnQgPT0gJGliZWcgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZvciBmaXJzdCB0b2tlbiwgdXNlIGRpc3RhbmNlIGZyb20gc3RhcnQgb2YgbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJ1dCBzdWJ0cmFjdCBvZmYgdGhlIGluZGVudGF0aW9uIGR1ZSB0byBsZXZlbC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBPdGhlcndpc2UsIHJlc3VsdHMgY291bGQgdmFyeSB3aXRoIGluZGVudGF0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsZW4gKz0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlYWRpbmdfc3BhY2VzX3RvX2dvKCRpYmVnKSAtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGV2ZWxzX3RvX2dvWyRpX3N0YXJ0XSAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkck9wdHNfaW5kZW50X2NvbHVtbnM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkbGVuIDwgMCApIHsgJGxlbiA9IDAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGFjayB0aGlzIGxlbmd0aCBvbnRvIHRoZSBjb250YWluZXIgbmFtZSB0byB0cnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdG8gbWFrZSBhIHVuaXF1ZSB0b2tlbiBuYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyX25hbWV7JGRlcHRofSAuPSAiLSIgLiAkbGVuOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkaXNfY2xvc2luZ190eXBleyR0b2tlbn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJGRlcHRoLS0gaWYgJGRlcHRoID4gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBpZiB3ZSBmaW5kIGEgbmV3IHN5bmNocm9uaXphdGlvbiB0b2tlbiwgd2UgYXJlIGRvbmUgd2l0aAogICAgICAgICAgICAjIGEgZmllbGQKICAgICAgICAgICAgaWYgKCAkaSA+ICRpX3N0YXJ0ICYmICRyYWxpZ25tZW50X3R5cGVfdG9fZ28tPlskaV0gKSB7CgogICAgICAgICAgICAgICAgbXkgJHRvayA9IG15ICRyYXdfdG9rID0gJHJhbGlnbm1lbnRfdHlwZV90b19nby0+WyRpXTsKCiAgICAgICAgICAgICAgICAjIG1hcCBzaW1pbGFyIGl0ZW1zCiAgICAgICAgICAgICAgICBteSAkdG9rX21hcCA9ICRvcGVyYXRvcl9tYXB7JHRva307CiAgICAgICAgICAgICAgICAkdG9rID0gJHRva19tYXAgaWYgKCR0b2tfbWFwKTsKCiAgICAgICAgICAgICAgICAjIG1ha2Ugc2VwYXJhdG9ycyBpbiBkaWZmZXJlbnQgbmVzdGluZyBkZXB0aHMgdW5pcXVlCiAgICAgICAgICAgICAgICAjIGJ5IGFwcGVuZGluZyB0aGUgbmVzdGluZyBkZXB0aCBkaWdpdC4KICAgICAgICAgICAgICAgIGlmICggJHJhd190b2sgbmUgJyMnICkgewogICAgICAgICAgICAgICAgICAgICR0b2sgLj0gIiRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpXSI7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBhbHNvIGRlY29yYXRlIGNvbW1hcyB3aXRoIGFueSBjb250YWluZXIgbmFtZSB0byBhdm9pZAogICAgICAgICAgICAgICAgIyB1bndhbnRlZCBjcm9zcy1saW5lIGFsaWdubWVudHMuCiAgICAgICAgICAgICAgICBpZiAoICRyYXdfdG9rIGVxICcsJyB8fCAkcmF3X3RvayBlcSAnPT4nICkgewoKICAgICAgICAgICAgICAgICAgIyBJZiB3ZSBhcmUgYXQgYW4gb3BlbmluZyB0b2tlbiB3aGljaCBpbmNyZWFzZWQgZGVwdGgsIHdlIGhhdmUKICAgICAgICAgICAgICAgICAgIyB0byB1c2UgdGhlIG5hbWUgZnJvbSB0aGUgcHJldmlvdXMgZGVwdGguCiAgICAgICAgICAgICAgICAgICAgbXkgJGRlcHRoX3AgPQogICAgICAgICAgICAgICAgICAgICAgKCAkZGVwdGhfbGFzdCA8ICRkZXB0aCA/ICRkZXB0aF9sYXN0IDogJGRlcHRoICk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkY29udGFpbmVyX25hbWV7JGRlcHRoX3B9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkdG9rIC49ICRjb250YWluZXJfbmFtZXskZGVwdGhfcH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgUGF0Y2ggdG8gYXZvaWQgYWxpZ25pbmcgbGVhZGluZyBhbmQgdHJhaWxpbmcgaWYsIHVubGVzcy4KICAgICAgICAgICAgICAgICMgTWFyayB0cmFpbGluZyBpZiwgdW5sZXNzIHN0YXRlbWVudHMgd2l0aCBjb250YWluZXIgbmFtZXMuCiAgICAgICAgICAgICAgICAjIFRoaXMgbWFrZXMgdGhlbSBkaWZmZXJlbnQgZnJvbSBsZWFkaW5nIGlmLCB1bmxlc3Mgd2hpY2gKICAgICAgICAgICAgICAgICMgYXJlIG5vdCBzbyBtYXJrZWQgYXQgcHJlc2VudC4gIElmIHdlIGV2ZXIgbmVlZCB0byBuYW1lCiAgICAgICAgICAgICAgICAjIHRoZW0gdG9vLCB3ZSBjb3VsZCB1c2UgY2kgdG8gZGlzdGluZ3Vpc2ggdGhlbS4KICAgICAgICAgICAgICAgICMgRXhhbXBsZSBwcm9ibGVtIHRvIGF2b2lkOgogICAgICAgICAgICAgICAgIyAgICByZXR1cm4gKCAyLCAiREJFUlJPUiIgKQogICAgICAgICAgICAgICAgIyAgICAgIGlmICggJHJldHZhbCA9PSAyICk7CiAgICAgICAgICAgICAgICAjICAgIGlmICAgKCBzY2FsYXIgQF8gKSB7CiAgICAgICAgICAgICAgICAjICAgICAgICBteSAoICRhLCAkYiwgJGMsICRkLCAkZSwgJGYgKSA9IEBfOwogICAgICAgICAgICAgICAgIyAgICB9CiAgICAgICAgICAgICAgICBpZiAoICRyYXdfdG9rIGVxICcoJyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICAgJGNpX2xldmVsc190b19nb1skaWJlZ10KICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGNvbnRhaW5lcl9uYW1leyRkZXB0aH0gPX4gL15cKyhpZnx1bmxlc3MpLyApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkdG9rIC49ICRjb250YWluZXJfbmFtZXskZGVwdGh9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIERlY29yYXRlIGJsb2NrIGJyYWNlcyB3aXRoIGJsb2NrIHR5cGVzIHRvIGF2b2lkCiAgICAgICAgICAgICAgICAjIHVud2FudGVkIGFsaWdubWVudHMgc3VjaCBhcyB0aGUgZm9sbG93aW5nOgogICAgICAgICAgICAgICAgIyBmb3JlYWNoICggQHskcm91dHB1dF9hcnJheX0gKSB7ICRmaC0+cHJpbnQoJF8pIH0KICAgICAgICAgICAgICAgICMgZXZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgeyAkZmgtPmNsb3NlKCkgfTsKICAgICAgICAgICAgICAgIGlmICggJHJhd190b2sgZXEgJ3snICYmICRibG9ja190eXBlX3RvX2dvWyRpXSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkYmxvY2tfdHlwZSA9ICRibG9ja190eXBlX3RvX2dvWyRpXTsKCiAgICAgICAgICAgICAgICAgICAgIyBtYXAgY2VydGFpbiByZWxhdGVkIGJsb2NrIHR5cGVzIHRvIGFsbG93CiAgICAgICAgICAgICAgICAgICAgIyBlbHNlIGJsb2NrcyB0byBhbGlnbgogICAgICAgICAgICAgICAgICAgICRibG9ja190eXBlID0gJGJsb2NrX3R5cGVfbWFweyRibG9ja190eXBlfQogICAgICAgICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCAkYmxvY2tfdHlwZV9tYXB7JGJsb2NrX3R5cGV9ICkgKTsKCiAgICAgICAgICAgICAgICAgICAgIyByZW1vdmUgc3ViIG5hbWVzIHRvIGFsbG93IG9uZS1saW5lIHN1YiBicmFjZXMgdG8gYWxpZ24KICAgICAgICAgICAgICAgICAgICAjIHJlZ2FyZGxlc3Mgb2YgbmFtZQogICAgICAgICAgICAgICAgICAgIGlmICggJGJsb2NrX3R5cGUgPX4gLyRTVUJfUEFUVEVSTi8gKSB7ICRibG9ja190eXBlID0gJ3N1YicgfQoKICAgICAgICAgICAgICAgICAgICAjIGFsbG93IGFsbCBjb250cm9sLXR5cGUgYmxvY2tzIHRvIGFsaWduCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkYmxvY2tfdHlwZSA9fiAvXltBLVpdKyQvICkgeyAkYmxvY2tfdHlwZSA9ICdCRUdJTicgfQoKICAgICAgICAgICAgICAgICAgICAkdG9rIC49ICRibG9ja190eXBlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgTWFyayBtdWx0aXBsZSBjb3BpZXMgb2YgY2VydGFpbiB0b2tlbnMgd2l0aCB0aGUgY29weSBudW1iZXIKICAgICAgICAgICAgICAgICMgVGhpcyB3aWxsIGFsbG93IHRoZSBhbGlnbmVyIHRvIGRlY2lkZSBpZiB0aGV5IGFyZSBtYXRjaGVkLgogICAgICAgICAgICAgICAgIyBGb3Igbm93LCBvbmx5IGRvIHRoaXMgZm9yIGVxdWFscy4gRm9yIGV4YW1wbGUsIHRoZSB0d28KICAgICAgICAgICAgICAgICMgZXF1YWxzIG9uIHRoZSBuZXh0IGxpbmUgd2lsbCBiZSBsYWJlbGVkICc9MCcgYW5kICc9MC4yJy4KICAgICAgICAgICAgICAgICMgTGF0ZXIsIHRoZSAnPTAuMicgd2lsbCBiZSBpZ25vcmVkIGluIGFsaWdubWVudCBiZWNhdXNlIGl0CiAgICAgICAgICAgICAgICAjIGhhcyBubyBtYXRjaC4KCiAgICAgICAgICAgICAgICAjICR8ICAgICAgICAgID0gJGRlYnVnID0gMSBpZiAkb3B0X2Q7CiAgICAgICAgICAgICAgICAjICRmdWxsX2luZGV4ID0gMSAgICAgICAgICBpZiAkb3B0X2k7CgogICAgICAgICAgICAgICAgaWYgKCAkcmF3X3RvayBlcSAnPScgfHwgJHJhd190b2sgZXEgJz0+JyApIHsKICAgICAgICAgICAgICAgICAgICAkdG9rZW5fY291bnR7JHRva30rKzsKICAgICAgICAgICAgICAgICAgICBpZiAoICR0b2tlbl9jb3VudHskdG9rfSA+IDEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0b2sgLj0gJy4nIC4gJHRva2VuX2NvdW50eyR0b2t9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGNvbmNhdGVuYXRlIHRoZSB0ZXh0IG9mIHRoZSBjb25zZWN1dGl2ZSB0b2tlbnMgdG8gZm9ybQogICAgICAgICAgICAgICAgIyB0aGUgZmllbGQKICAgICAgICAgICAgICAgIHB1c2goIEBmaWVsZHMsCiAgICAgICAgICAgICAgICAgICAgam9pbiggJycsIEB0b2tlbnNfdG9fZ29bICRpX3N0YXJ0IC4uICRpIC0gMSBdICkgKTsKCiAgICAgICAgICAgICAgICBwdXNoIEBmaWVsZF9sZW5ndGhzLAogICAgICAgICAgICAgICAgICAkc3VtbWVkX2xlbmd0aHNfdG9fZ29bJGldIC0gJHN1bW1lZF9sZW5ndGhzX3RvX2dvWyRpX3N0YXJ0XTsKCiAgICAgICAgICAgICAgICAjIHN0b3JlIHRoZSBhbGlnbm1lbnQgdG9rZW4gZm9yIHRoaXMgZmllbGQKICAgICAgICAgICAgICAgIHB1c2goIEB0b2tlbnMsICR0b2sgKTsKCiAgICAgICAgICAgICAgICAjIGdldCByZWFkeSBmb3IgdGhlIG5leHQgYmF0Y2gKICAgICAgICAgICAgICAgICRpX3N0YXJ0ID0gJGk7CiAgICAgICAgICAgICAgICAkaisrOwogICAgICAgICAgICAgICAgJHBhdHRlcm5zWyRqXSA9ICIiOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNvbnRpbnVlIGFjY3VtdWxhdGluZyB0b2tlbnMKCiAgICAgICAgICAgICMgZm9yIGtleXdvcmRzIHdlIGhhdmUgdG8gdXNlIHRoZSBhY3R1YWwgdGV4dAogICAgICAgICAgICBpZiAoICR0eXBlIGVxICdrJyApIHsKCiAgICAgICAgICAgICAgICBteSAkdG9rX2ZpeCA9ICR0b2tlbnNfdG9fZ29bJGldOwoKICAgICAgICAgICAgICAgICMgYnV0IG1hcCBjZXJ0YWluIGtleXdvcmRzIHRvIGEgY29tbW9uIHN0cmluZyB0byBhbGxvdwogICAgICAgICAgICAgICAgIyBhbGlnbm1lbnQuCiAgICAgICAgICAgICAgICAkdG9rX2ZpeCA9ICRrZXl3b3JkX21hcHskdG9rX2ZpeH0KICAgICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCAka2V5d29yZF9tYXB7JHRva19maXh9ICkgKTsKICAgICAgICAgICAgICAgICRwYXR0ZXJuc1skal0gLj0gJHRva19maXg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVsc2lmICggJHR5cGUgZXEgJ2InICkgewogICAgICAgICAgICAgICAgJHBhdHRlcm5zWyRqXSAuPSAkdHlwZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBoYW5kbGUgbm9uLWtleXdvcmRzLi4KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgbXkgJHR5cGVfZml4ID0gJHR5cGU7CgogICAgICAgICAgICAgICAgIyBNYXJrIG1vc3QgdGhpbmdzIGJlZm9yZSBhcnJvd3MgYXMgYSBxdW90ZSB0bwogICAgICAgICAgICAgICAgIyBnZXQgdGhlbSB0byBsaW5lIHVwLiBUZXN0ZmlsZTogbWl4ZWQucGwuCiAgICAgICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICR0eXBlID1+IC9eW3duQ10kLwogICAgICAgICAgICAgICAgaWYgKCAkaSA8ICRpZW5kIC0gMSAmJiAkaXNfd19uX0N7JHR5cGV9ICkgewogICAgICAgICAgICAgICAgICAgIG15ICRuZXh0X3R5cGUgPSAkdHlwZXNfdG9fZ29bICRpICsgMSBdOwogICAgICAgICAgICAgICAgICAgIG15ICRpX25leHRfbm9uYmxhbmsgPQogICAgICAgICAgICAgICAgICAgICAgKCAoICRuZXh0X3R5cGUgZXEgJ2InICkgPyAkaSArIDIgOiAkaSArIDEgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bJGlfbmV4dF9ub25ibGFua10gZXEgJz0+JyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGVfZml4ID0gJ1EnOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBQYXRjaCB0byBpZ25vcmUgbGVhZGluZyBtaW51cyBiZWZvcmUgd29yZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICMgYnkgY2hhbmdpbmcgcGF0dGVybiAnbVEnIGludG8ganVzdCAnUScsCiAgICAgICAgICAgICAgICAgICAgICAgICMgc28gdGhhdCB3ZSBjYW4gYWxpZ24gdGhpbmdzIGxpa2UgdGhpczoKICAgICAgICAgICAgICAgICAgICAgICAgIyAgQnV0dG9uICAgPT4gIlByaW50IGxldHRlciBcIn4kX1wiIiwKICAgICAgICAgICAgICAgICAgICAgICAgIyAgLWNvbW1hbmQgPT4gWyBzdWIgeyBwcmludCAiJF9bMF1cbiIgfSwgJF8gXSwKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkcGF0dGVybnNbJGpdIGVxICdtJyApIHsgJHBhdHRlcm5zWyRqXSA9ICIiIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBDb252ZXJ0IGEgYmFyZXdvcmQgd2l0aGluIGJyYWNlcyBpbnRvIGEgcXVvdGUgZm9yIG1hdGNoaW5nLgogICAgICAgICAgICAgICAgIyBUaGlzIHdpbGwgYWxsb3cgYWxpZ25tZW50IG9mIGV4cHJlc3Npb25zIGxpa2UgdGhpczoKICAgICAgICAgICAgICAgICMgICAgbG9jYWwgKCAkU0lHeydJTlQnfSApID0gSUdOT1JFOwogICAgICAgICAgICAgICAgIyAgICBsb2NhbCAoICRTSUd7QUxSTX0gKSAgPSAnUE9TVE1BTic7CiAgICAgICAgICAgICAgICBpZiAoICAgJHR5cGUgZXEgJ3cnCiAgICAgICAgICAgICAgICAgICAgJiYgJGkgPiAkaWJlZwogICAgICAgICAgICAgICAgICAgICYmICRpIDwgJGllbmQKICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZXNfdG9fZ29bICRpIC0gMSBdIGVxICdMJwogICAgICAgICAgICAgICAgICAgICYmICR0eXBlc190b19nb1sgJGkgKyAxIF0gZXEgJ1InICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkdHlwZV9maXggPSAnUSc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBwYXRjaCB0byBtYWtlIG51bWJlcnMgYW5kIHF1b3RlcyBhbGlnbgogICAgICAgICAgICAgICAgaWYgKCAkdHlwZSBlcSAnbicgKSB7ICR0eXBlX2ZpeCA9ICdRJyB9CgogICAgICAgICAgICAgICAgIyBwYXRjaCB0byBpZ25vcmUgYW55ICEgaW4gcGF0dGVybnMKICAgICAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJyEnICkgeyAkdHlwZV9maXggPSAnJyB9CgogICAgICAgICAgICAgICAgJHBhdHRlcm5zWyRqXSAuPSAkdHlwZV9maXg7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZG9uZSB3aXRoIHRoaXMgbGluZSAuLiBqb2luIHRleHQgb2YgdG9rZW5zIHRvIG1ha2UgdGhlIGxhc3QgZmllbGQKICAgICAgICBwdXNoKCBAZmllbGRzLCBqb2luKCAnJywgQHRva2Vuc190b19nb1sgJGlfc3RhcnQgLi4gJGllbmQgXSApICk7CiAgICAgICAgcHVzaCBAZmllbGRfbGVuZ3RocywKICAgICAgICAgICRzdW1tZWRfbGVuZ3Roc190b19nb1sgJGllbmQgKyAxIF0gLSAkc3VtbWVkX2xlbmd0aHNfdG9fZ29bJGlfc3RhcnRdOwoKICAgICAgICByZXR1cm4gKCBcQHRva2VucywgXEBmaWVsZHMsIFxAcGF0dGVybnMsIFxAZmllbGRfbGVuZ3RocyApOwogICAgfQoKfSAjIyBlbmQgY2xvc3VyZSBtYWtlX2FsaWdubWVudF9wYXR0ZXJucwoKc3ViIG1ha2VfcGFyZW5fbmFtZSB7CiAgICBteSAoICRzZWxmLCAkaSApID0gQF87CgogICAgIyBUaGUgdG9rZW4gYXQgaW5kZXggJGkgaXMgYSAnKCcuCiAgICAjIENyZWF0ZSBhbiBhbGlnbm1lbnQgbmFtZSBmb3IgaXQgdG8gYXZvaWQgaW5jb3JyZWN0IGFsaWdubWVudHMuCgogICAgIyBTdGFydCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBwcmV2aW91cyBub25ibGFuayB0b2tlbi4uLgogICAgbXkgJG5hbWUgPSAiIjsKICAgIG15ICRpbSAgID0gJGkgLSAxOwogICAgcmV0dXJuICIiIGlmICggJGltIDwgMCApOwogICAgaWYgKCAkdHlwZXNfdG9fZ29bJGltXSBlcSAnYicgKSB7ICRpbS0tOyB9CiAgICByZXR1cm4gIiIgaWYgKCAkaW0gPCAwICk7CiAgICAkbmFtZSA9ICR0b2tlbnNfdG9fZ29bJGltXTsKCiAgICAjIFByZXBlbmQgYW55IHN1YiBuYW1lIHRvIGFuIGlzb2xhdGVkIC0+IHRvIGF2b2lkIHVud2FudGVkIGFsaWdubWVudHMKICAgICMgW3Rlc3QgY2FzZSBpcyB0ZXN0OC9wZW5jby5wbF0KICAgIGlmICggJG5hbWUgZXEgJy0+JyApIHsKICAgICAgICAkaW0tLTsKICAgICAgICBpZiAoICRpbSA+PSAwICYmICR0eXBlc190b19nb1skaW1dIG5lICdiJyApIHsKICAgICAgICAgICAgJG5hbWUgPSAkdG9rZW5zX3RvX2dvWyRpbV0gLiAkbmFtZTsKICAgICAgICB9CiAgICB9CgogICAgIyBGaW5hbGx5LCByZW1vdmUgYW55IGxlYWRpbmcgYXJyb3dzCiAgICBpZiAoIHN1YnN0ciggJG5hbWUsIDAsIDIgKSBlcSAnLT4nICkgewogICAgICAgICRuYW1lID0gc3Vic3RyKCAkbmFtZSwgMiApOwogICAgfQogICAgcmV0dXJuICRuYW1lOwp9Cgp7ICAgICMjIGJlZ2luIGNsb3N1cmUgc2V0X2FkanVzdGVkX2luZGVudGF0aW9uCgogICAgbXkgKCAkbGFzdF9pbmRlbnRhdGlvbl93cml0dGVuLCAkbGFzdF91bmFkanVzdGVkX2luZGVudGF0aW9uLAogICAgICAgICRsYXN0X2xlYWRpbmdfdG9rZW4gKTsKCiAgICBzdWIgaW5pdGlhbGl6ZV9hZGp1c3RlZF9pbmRlbnRhdGlvbiB7CiAgICAgICAgJGxhc3RfaW5kZW50YXRpb25fd3JpdHRlbiAgICA9IDA7CiAgICAgICAgJGxhc3RfdW5hZGp1c3RlZF9pbmRlbnRhdGlvbiA9IDA7CiAgICAgICAgJGxhc3RfbGVhZGluZ190b2tlbiAgICAgICAgICA9ICIiOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgc2V0X2FkanVzdGVkX2luZGVudGF0aW9uIHsKCiAgICAgICAgIyBUaGlzIHJvdXRpbmUgaGFzIHRoZSBmaW5hbCBzYXkgcmVnYXJkaW5nIHRoZSBhY3R1YWwgaW5kZW50YXRpb24gb2YKICAgICAgICAjIGEgbGluZS4gIEl0IHN0YXJ0cyB3aXRoIHRoZSBiYXNpYyBpbmRlbnRhdGlvbiB3aGljaCBoYXMgYmVlbgogICAgICAgICMgZGVmaW5lZCBmb3IgdGhlIGxlYWRpbmcgdG9rZW4sIGFuZCB0aGVuIHRha2VzIGludG8gYWNjb3VudCBhbnkKICAgICAgICAjIG9wdGlvbnMgdGhhdCB0aGUgdXNlciBoYXMgc2V0IHJlZ2FyZGluZyBzcGVjaWFsIGluZGVudGluZyBhbmQKICAgICAgICAjIG91dGRlbnRpbmcuCgogICAgICAgICMgVGhpcyByb3V0aW5lIGhhcyB0byByZXNvbHZlIGEgbnVtYmVyIG9mIGNvbXBsZXggaW50ZXJhY3RpbmcgaXNzdWVzLAogICAgICAgICMgaW5jbHVkaW5nOgogICAgICAgICMgMS4gVGhlIHZhcmlvdXMgLWN0aT1uIHR5cGUgZmxhZ3MsIHdoaWNoIGNvbnRhaW4gdGhlIGRlc2lyZWQgY2hhbmdlIGluCiAgICAgICAgIyAgICBpbmRlbnRhdGlvbiBmb3IgbGluZXMgZW5kaW5nIGluIGNvbW1hcyBhbmQgc2VtaWNvbG9ucywgc2hvdWxkIGJlCiAgICAgICAgIyAgICBmb2xsb3dlZCwKICAgICAgICAjIDIuIHF3IHF1b3RlcyByZXF1aXJlIHNwZWNpYWwgcHJvY2Vzc2luZyBhbmQgZG8gbm90IGZpdCBwZXJmZWN0bHkKICAgICAgICAjICAgIHdpdGggbm9ybWFsIGNvbnRhaW5lcnMsCiAgICAgICAgIyAzLiBmb3JtYXR0aW5nIHdpdGggLXduIGNhbiBjb21wbGljYXRlIHRoaW5ncywgZXNwZWNpYWxseSB3aXRoIHF3CiAgICAgICAgIyAgICBxdW90ZXMsCiAgICAgICAgIyA0LiBmb3JtYXR0aW5nIHdpdGggdGhlIC1scCBvcHRpb24gaXMgY29tcGxpY2F0ZWQsIGFuZCBkb2VzIG5vdAogICAgICAgICMgICAgd29yayB3ZWxsIHdpdGggcXcgcXVvdGVzIGFuZCB3aXRoIC13biBmb3JtYXR0aW5nLgogICAgICAgICMgNS4gYSBudW1iZXIgb2Ygc3BlY2lhbCBzaXR1YXRpb25zLCBzdWNoIGFzICdjdWRkbGVkJyBmb3JtYXR0aW5nLgogICAgICAgICMgNi4gVGhpcyByb3V0aW5lIGlzIG1haW5seSBjb25jZXJuZWQgd2l0aCBvdXRkZW50aW5nIGNsb3NpbmcgdG9rZW5zCiAgICAgICAgIyAgICBidXQgbm90ZSB0aGF0IHRoZXJlIGlzIHNvbWUgb3ZlcmxhcCB3aXRoIHRoZSBmdW5jdGlvbnMgb2Ygc3ViCiAgICAgICAgIyAgICB1bmRvX2NpLCB3aGljaCB3YXMgcHJvY2Vzc2VkIGVhcmxpZXIsIHNvIGNhcmUgaGFzIHRvIGJlIHRha2VuIHRvCiAgICAgICAgIyAgICBrZWVwIHRoZW0gY29vcmRpbmF0ZWQuCgogICAgICAgIG15ICgKICAgICAgICAgICAgJHNlbGYsICAgICAgICRpYmVnLAogICAgICAgICAgICAkaWVuZCwgICAgICAgJHJmaWVsZHMsCiAgICAgICAgICAgICRycGF0dGVybnMsICAkcmlfZmlyc3QsCiAgICAgICAgICAgICRyaV9sYXN0LCAgICAkcmluZGVudGF0aW9uX2xpc3QsCiAgICAgICAgICAgICRsZXZlbF9qdW1wLCAkc3RhcnRpbmdfaW5fcXVvdGUsCiAgICAgICAgICAgICRpc19zdGF0aWNfYmxvY2tfY29tbWVudCwKICAgICAgICApID0gQF87CgogICAgICAgIG15ICRyTEwgICAgICAgICAgICAgICAgICAgICAgPSAkc2VsZi0+W19yTExfXTsKICAgICAgICBteSAkcmlzX2JsaV9jb250YWluZXIgICAgICAgID0gJHNlbGYtPltfcmlzX2JsaV9jb250YWluZXJfXTsKICAgICAgICBteSAkcnNlcW5vX2NvbnRyb2xsaW5nX215X2NpID0gJHNlbGYtPltfcnNlcW5vX2NvbnRyb2xsaW5nX215X2NpX107CgogICAgICAgICMgd2UgbmVlZCB0byBrbm93IHRoZSBsYXN0IHRva2VuIG9mIHRoaXMgbGluZQogICAgICAgIG15ICggJHRlcm1pbmFsX3R5cGUsICRpX3Rlcm1pbmFsICkgPSB0ZXJtaW5hbF90eXBlX2koICRpYmVnLCAkaWVuZCApOwoKICAgICAgICBteSAkdGVybWluYWxfYmxvY2tfdHlwZSA9ICRibG9ja190eXBlX3RvX2dvWyRpX3Rlcm1pbmFsXTsKICAgICAgICBteSAkaXNfb3V0ZGVudGVkX2xpbmUgICA9IDA7CgogICAgICAgIG15ICR0eXBlX2JlZyAgICAgID0gJHR5cGVzX3RvX2dvWyRpYmVnXTsKICAgICAgICBteSAkdG9rZW5fYmVnICAgICA9ICR0b2tlbnNfdG9fZ29bJGliZWddOwogICAgICAgIG15ICRLX2JlZyAgICAgICAgID0gJEtfdG9fZ29bJGliZWddOwogICAgICAgIG15ICRpYmVnX3dlbGRfZml4ID0gJGliZWc7CiAgICAgICAgbXkgJHNlcW5vX2JlZyAgICAgPSAkdHlwZV9zZXF1ZW5jZV90b19nb1skaWJlZ107CiAgICAgICAgbXkgJGlzX2JsaV9iZWcgICAgPSAkc2Vxbm9fYmVnID8gJHJpc19ibGlfY29udGFpbmVyLT57JHNlcW5vX2JlZ30gOiAwOwoKICAgICAgICAjIFFXIElOREVOVEFUSU9OIFBBVENIIDM6CiAgICAgICAgbXkgJHNlcW5vX3F3X2Nsb3Npbmc7CiAgICAgICAgaWYgKCAkdHlwZV9iZWcgZXEgJ3EnICYmICRpYmVnID09IDAgKSB7CiAgICAgICAgICAgIG15ICRLSyA9ICRLX3RvX2dvWyRpYmVnXTsKICAgICAgICAgICAgJHNlcW5vX3F3X2Nsb3NpbmcgPQogICAgICAgICAgICAgICRzZWxmLT5bX3JlbmRpbmdfbXVsdGlsaW5lX3F3X3NlcW5vX2J5X0tfXS0+eyRLS307CiAgICAgICAgfQoKICAgICAgICBteSAkaXNfc2VtaWNvbG9uX3Rlcm1pbmF0ZWQgPSAkdGVybWluYWxfdHlwZSBlcSAnOycKICAgICAgICAgICYmICggJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGllbmRdIDwgJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGliZWddCiAgICAgICAgICAgIHx8ICRzZXFub19xd19jbG9zaW5nICk7CgogICAgICAgICMgTk9URTogQSBmdXR1cmUgaW1wcm92ZW1lbnQgd291bGQgYmUgdG8gbWFrZSBpdCBzZW1pY29sb24gdGVybWluYXRlZAogICAgICAgICMgZXZlbiBpZiBpdCBkb2VzIG5vdCBoYXZlIGEgc2VtaWNvbG9uIGJ1dCBpcyBmb2xsb3dlZCBieSBhIGNsb3NpbmcKICAgICAgICAjIGJsb2NrIGJyYWNlLiBUaGlzIHdvdWxkIHVuZG8gY2kgZXZlbiBmb3Igc29tZXRoaW5nIGxpa2UgdGhlCiAgICAgICAgIyBmb2xsb3dpbmcsIGluIHdoaWNoIHRoZSBmaW5hbCBwYXJlbiBkb2VzIG5vdCBoYXZlIGEgc2VtaWNvbG9uIGJlY2F1c2UKICAgICAgICAjIGl0IGlzIGEgcG9zc2libGUgd2VsZCBsb2NhdGlvbjoKCiAgICAgICAgIyBpZiAoJEJPTERfTUFUSCkgewogICAgICAgICMgICAgICgKICAgICAgICAjICAgICAgICAgJGxhYmVscywgJGNvbW1lbnQsCiAgICAgICAgIyAgICAgICAgIGpvaW4oICcnLCAnPEI+JywgJm1ha2VfbWF0aCggJG1vZGUsICcnLCAnJywgJF8gKSwgJzwvQj4nICkKICAgICAgICAjICAgICApCiAgICAgICAgIyB9CiAgICAgICAgIwoKICAgICAgICAjIE1PSk86IFNldCBhIGZsYWcgaWYgdGhpcyBsaW5lcyBiZWdpbnMgd2l0aCAnKS0+JwogICAgICAgIG15ICRsZWFkaW5nX3BhcmVuX2Fycm93ID0gKAogICAgICAgICAgICAgICAgICR0eXBlc190b19nb1skaWJlZ10gZXEgJ30nCiAgICAgICAgICAgICAgJiYgJHRva2Vuc190b19nb1skaWJlZ10gZXEgJyknCiAgICAgICAgICAgICAgJiYgKAogICAgICAgICAgICAgICAgKCAkaWJlZyA8ICRpX3Rlcm1pbmFsICYmICR0eXBlc190b19nb1sgJGliZWcgKyAxIF0gZXEgJy0+JyApCiAgICAgICAgICAgICAgICB8fCAoICAgJGliZWcgPCAkaV90ZXJtaW5hbCAtIDEKICAgICAgICAgICAgICAgICAgICAmJiAkdHlwZXNfdG9fZ29bICRpYmVnICsgMSBdIGVxICdiJwogICAgICAgICAgICAgICAgICAgICYmICR0eXBlc190b19nb1sgJGliZWcgKyAyIF0gZXEgJy0+JyApCiAgICAgICAgICAgICAgKQogICAgICAgICk7CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIFNlY3Rpb24gMTogc2V0IGEgZmxhZyBhbmQgYSBkZWZhdWx0IGluZGVudGF0aW9uCiAgICAgICAgIwogICAgICAgICMgTW9zdCBsaW5lcyBhcmUgaW5kZW50ZWQgYWNjb3JkaW5nIHRvIHRoZSBpbml0aWFsIHRva2VuLgogICAgICAgICMgQnV0IGl0IGlzIGNvbW1vbiB0byBvdXRkZW50IHRvIHRoZSBsZXZlbCBqdXN0IGFmdGVyIHRoZQogICAgICAgICMgdGVybWluYWwgdG9rZW4gaW4gY2VydGFpbiBjYXNlcy4uLgogICAgICAgICMgYWRqdXN0X2luZGVudGF0aW9uIGZsYWc6CiAgICAgICAgIyAgICAgICAwIC0gZG8gbm90IGFkanVzdAogICAgICAgICMgICAgICAgMSAtIG91dGRlbnQKICAgICAgICAjICAgICAgIDIgLSB2ZXJ0aWNhbGx5IGFsaWduIHdpdGggb3BlbmluZyB0b2tlbgogICAgICAgICMgICAgICAgMyAtIGluZGVudAogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICBteSAkYWRqdXN0X2luZGVudGF0aW9uICAgICAgICAgPSAwOwogICAgICAgIG15ICRkZWZhdWx0X2FkanVzdF9pbmRlbnRhdGlvbiA9ICRhZGp1c3RfaW5kZW50YXRpb247CgogICAgICAgIG15ICgKICAgICAgICAgICAgJG9wZW5pbmdfaW5kZW50YXRpb24sICRvcGVuaW5nX29mZnNldCwKICAgICAgICAgICAgJGlzX2xlYWRpbmcsICAgICAgICAgICRvcGVuaW5nX2V4aXN0cwogICAgICAgICk7CgogICAgICAgICMgVXBkYXRlIHRoZSAkaXNfYmxpIGZsYWcgYXMgd2UgZ28uIEl0IGlzIGluaXRpYWxseSAxLgogICAgICAgICMgV2Ugbm90ZSBzZWVpbmcgYSBsZWFkaW5nIG9wZW5pbmcgYnJhY2UgYnkgc2V0dGluZyBpdCB0byAyLgogICAgICAgICMgSWYgd2UgZ2V0IHRvIHRoZSBjbG9zaW5nIGJyYWNlIHdpdGhvdXQgc2VlaW5nIHRoZSBvcGVuaW5nIHRoZW4gd2UKICAgICAgICAjIHR1cm4gaXQgb2ZmLiAgVGhpcyBvY2N1cnMgaWYgdGhlIG9wZW5pbmcgYnJhY2UgZGlkIG5vdCBnZXQgb3V0cHV0CiAgICAgICAgIyBhdCB0aGUgc3RhcnQgb2YgYSBsaW5lLCBzbyB3ZSB3aWxsIHRoZW4gaW5kZW50IHRoZSBjbG9zaW5nIGJyYWNlCiAgICAgICAgIyBpbiB0aGUgZGVmYXVsdCB3YXkuCiAgICAgICAgaWYgKCAkaXNfYmxpX2JlZyAmJiAkaXNfYmxpX2JlZyA9PSAxICkgewogICAgICAgICAgICBteSAkS19vcGVuaW5nX2NvbnRhaW5lciA9ICRzZWxmLT5bX0tfb3BlbmluZ19jb250YWluZXJfXTsKICAgICAgICAgICAgbXkgJEtfb3BlbmluZyAgICAgICAgICAgPSAkS19vcGVuaW5nX2NvbnRhaW5lci0+eyRzZXFub19iZWd9OwogICAgICAgICAgICBpZiAoICRLX2JlZyBlcSAkS19vcGVuaW5nICkgewogICAgICAgICAgICAgICAgJHJpc19ibGlfY29udGFpbmVyLT57JHNlcW5vX2JlZ30gPSAkaXNfYmxpX2JlZyA9IDI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7ICRpc19ibGlfYmVnID0gMCB9CiAgICAgICAgfQoKICAgICAgICAjIFFXIFBBVENIIGZvciB0aGUgY29tYmluYXRpb24gLWxwIC13bgogICAgICAgICMgRm9yIC1scCBmb3JtYXR0aW5nIHVzZSAkaWJlZ193ZWxkX2ZpeCB0byBnZXQgYXJvdW5kIHRoZSBwcm9ibGVtCiAgICAgICAgIyB0aGF0IHdpdGggLWxwIHR5cGUgZm9ybWF0dGluZyB0aGUgb3BlbmluZyBhbmQgY2xvc2luZyB0b2tlbnMgdG8gbm90CiAgICAgICAgIyBoYXZlIHNlcXVlbmNlIG51bWJlcnMuCiAgICAgICAgaWYgKCRzZXFub19xd19jbG9zaW5nKSB7CiAgICAgICAgICAgIG15ICRLX25leHRfbm9uYmxhbmsgPSAkc2VsZi0+S19uZXh0X2NvZGUoJEtfYmVnKTsKICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCRLX25leHRfbm9uYmxhbmspICkgewogICAgICAgICAgICAgICAgbXkgJHR5cGVfc2VxdWVuY2UgPSAkckxMLT5bJEtfbmV4dF9ub25ibGFua10tPltfVFlQRV9TRVFVRU5DRV9dOwogICAgICAgICAgICAgICAgbXkgJHRva2VuICAgICAgICAgPSAkckxMLT5bJEtfbmV4dF9ub25ibGFua10tPltfVE9LRU5fXTsKICAgICAgICAgICAgICAgIG15ICR3ZWxkZWQgPSAkc2VsZi0+d2VsZF9sZW5fbGVmdCggJHR5cGVfc2VxdWVuY2UsICR0b2tlbiApOwogICAgICAgICAgICAgICAgaWYgKCR3ZWxkZWQpIHsKICAgICAgICAgICAgICAgICAgICBteSAkaXRlc3QgPSAkaWJlZyArICggJEtfbmV4dF9ub25ibGFuayAtICRLX2JlZyApOwogICAgICAgICAgICAgICAgICAgIGlmICggJGl0ZXN0IDw9ICRtYXhfaW5kZXhfdG9fZ28gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpYmVnX3dlbGRfZml4ID0gJGl0ZXN0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBpZiB3ZSBhcmUgYXQgYSBjbG9zaW5nIHRva2VuIG9mIHNvbWUgdHlwZS4uCiAgICAgICAgaWYgKCAkaXNfY2xvc2luZ190eXBleyR0eXBlX2JlZ30gfHwgJHNlcW5vX3F3X2Nsb3NpbmcgKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgaW5kZW50YXRpb24gb2YgdGhlIGxpbmUgY29udGFpbmluZyB0aGUgY29ycmVzcG9uZGluZwogICAgICAgICAgICAjIG9wZW5pbmcgdG9rZW4KICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgJG9wZW5pbmdfaW5kZW50YXRpb24sICRvcGVuaW5nX29mZnNldCwKICAgICAgICAgICAgICAgICRpc19sZWFkaW5nLCAgICAgICAgICAkb3BlbmluZ19leGlzdHMKICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgPSAkc2VsZi0+Z2V0X29wZW5pbmdfaW5kZW50YXRpb24oICRpYmVnX3dlbGRfZml4LCAkcmlfZmlyc3QsCiAgICAgICAgICAgICAgICAkcmlfbGFzdCwgJHJpbmRlbnRhdGlvbl9saXN0LCAkc2Vxbm9fcXdfY2xvc2luZyApOwoKICAgICAgICAgICAgIyBGaXJzdCBzZXQgdGhlIGRlZmF1bHQgYmVoYXZpb3I6CiAgICAgICAgICAgIGlmICgKCiAgICAgICAgICAgICAgICAjIGRlZmF1bHQgYmVoYXZpb3IgaXMgdG8gb3V0ZGVudCBjbG9zaW5nIGxpbmVzCiAgICAgICAgICAgICAgICAjIG9mIHRoZSBmb3JtOiAgICIpOyAgfTsgIF07ICApLT54eHg7IgogICAgICAgICAgICAgICAgJGlzX3NlbWljb2xvbl90ZXJtaW5hdGVkCgogICAgICAgICAgICAgICAgIyBhbmQgJ2N1ZGRsZWQgcGFyZW5zJyBvZiB0aGUgZm9ybTogICAiKS0+cGFjaygiCiAgICAgICAgICAgICAgICAjIEJ1ZyBmaXggZm9yIFJUICMxMjM3NDldOiB0aGUgdHlwZXMgaGVyZSB3ZXJlCiAgICAgICAgICAgICAgICAjIGluY29ycmVjdGx5ICcoJyBhbmQgJyknLiAgQ29ycmVjdGVkIHRvIGJlICd7JyBhbmQgJ30nCiAgICAgICAgICAgICAgICB8fCAoCiAgICAgICAgICAgICAgICAgICAgICAgJHRlcm1pbmFsX3R5cGUgZXEgJ3snCiAgICAgICAgICAgICAgICAgICAgJiYgJHR5cGVfYmVnIGVxICd9JwogICAgICAgICAgICAgICAgICAgICYmICggJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGllbmRdICsgMSA9PQogICAgICAgICAgICAgICAgICAgICAgICAkbmVzdGluZ19kZXB0aF90b19nb1skaWJlZ10gKQogICAgICAgICAgICAgICAgKQoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIGNvbnRpbnVhdGlvbiBpbmRlbnRhdGlvbiBmb3IgYW55IGxpbmUgbGlrZQogICAgICAgICAgICAgICAgIyAJfSAuLi4gewogICAgICAgICAgICAgICAgIyBvciB3aXRob3V0IGVuZGluZyAneycgYW5kIHVuYmFsYW5jZWQsIHN1Y2ggYXMKICAgICAgICAgICAgICAgICMgICAgICAgc3VjaCBhcyAnfS0+eyRvcGVyYXRvcn0nCiAgICAgICAgICAgICAgICB8fCAoCiAgICAgICAgICAgICAgICAgICAgJHR5cGVfYmVnIGVxICd9JwoKICAgICAgICAgICAgICAgICAgICAmJiAoICAgJHR5cGVzX3RvX2dvWyRpZW5kXSBlcSAneycKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJGxldmVsc190b19nb1skaWVuZF0gPCAkbGV2ZWxzX3RvX2dvWyRpYmVnXSApCiAgICAgICAgICAgICAgICApCgogICAgICAgICAgICAgICAgIyBhbmQgd2hlbiB0aGUgbmV4dCBsaW5lIGlzIGF0IGEgbG93ZXIgaW5kZW50YXRpb24gbGV2ZWwuLi4KCiAgICAgICAgICAgICAgICAjIFBBVENIICMxOiBhbmQgb25seSBpZiB0aGUgc3R5bGUgYWxsb3dzIHVuZG9pbmcgY29udGludWF0aW9uCiAgICAgICAgICAgICAgICAjIGZvciBhbGwgY2xvc2luZyB0b2tlbiB0eXBlcy4gV2Ugc2hvdWxkIHJlYWxseSB3YWl0IHVudGlsCiAgICAgICAgICAgICAgICAjIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgbmV4dCBsaW5lIGlzIGtub3duIGFuZCB0aGVuIG1ha2UKICAgICAgICAgICAgICAgICMgYSBkZWNpc2lvbiwgYnV0IHRoYXQgd291bGQgcmVxdWlyZSBhbm90aGVyIHBhc3MuCgogICAgICAgICAgICAgICAgIyBQQVRDSCAjMjogYW5kIG5vdCBpZiB0aGlzIHRva2VuIGlzIHVuZGVyIC14Y2kgY29udHJvbAogICAgICAgICAgICAgICAgfHwgKCAgICRsZXZlbF9qdW1wIDwgMAogICAgICAgICAgICAgICAgICAgICYmICEkc29tZV9jbG9zaW5nX3Rva2VuX2luZGVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgJiYgISRyc2Vxbm9fY29udHJvbGxpbmdfbXlfY2ktPnskS19iZWd9ICkKCiAgICAgICAgICAgICAgICAjIFBhdGNoIGZvciAtd249MiwgbXVsdGlwbGUgd2VsZGVkIGNsb3NpbmcgdG9rZW5zCiAgICAgICAgICAgICAgICB8fCAoICAgJGlfdGVybWluYWwgPiAkaWJlZwogICAgICAgICAgICAgICAgICAgICYmICRpc19jbG9zaW5nX3R5cGV7ICR0eXBlc190b19nb1skaWVuZF0gfSApCgogICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJGFkanVzdF9pbmRlbnRhdGlvbiA9IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgb3V0ZGVudCBzb21ldGhpbmcgbGlrZSAnKSwnCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICR0ZXJtaW5hbF90eXBlIGVxICcsJwoKICAgICAgICAgICAgICAgICMgUmVtb3ZlZCB0aGlzIGNvbnN0cmFpbnQgZm9yIC13bgogICAgICAgICAgICAgICAgIyBPTEQ6IGFsbG93IGp1c3Qgb25lIGNoYXJhY3RlciBiZWZvcmUgdGhlIGNvbW1hCiAgICAgICAgICAgICAgICAjICYmICRpX3Rlcm1pbmFsID09ICRpYmVnICsgMQoKICAgICAgICAgICAgICAgICMgcmVxdWlyZSBMSVNUIGVudmlyb25tZW50OyBvdGhlcndpc2UsIHdlIG1heSBvdXRkZW50IHRvbyBtdWNoIC0KICAgICAgICAgICAgICAgICMgdGhpcyBjYW4gaGFwcGVuIGluIGNhbGxzIHdpdGhvdXQgcGFyZW50aGVzZXMgKG92ZXJsb2FkLnQpOwogICAgICAgICAgICAgICAgJiYgJGNvbnRhaW5lcl9lbnZpcm9ubWVudF90b19nb1skaV90ZXJtaW5hbF0gZXEgJ0xJU1QnCiAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkYWRqdXN0X2luZGVudGF0aW9uID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB1bmRvIGNvbnRpbnVhdGlvbiBpbmRlbnRhdGlvbiBvZiBhIHRlcm1pbmFsIGNsb3NpbmcgdG9rZW4gaWYKICAgICAgICAgICAgIyBpdCBpcyB0aGUgbGFzdCB0b2tlbiBiZWZvcmUgYSBsZXZlbCBkZWNyZWFzZS4gIFRoaXMgd2lsbCBhbGxvdwogICAgICAgICAgICAjIGEgY2xvc2luZyB0b2tlbiB0byBsaW5lIHVwIHdpdGggaXRzIG9wZW5pbmcgY291bnRlcnBhcnQsIGFuZAogICAgICAgICAgICAjIGF2b2lkcyBhbiBpbmRlbnRhdGlvbiBqdW1wIGxhcmdlciB0aGFuIDEgbGV2ZWwuCiAgICAgICAgICAgIGlmICggICAkdHlwZXNfdG9fZ29bJGlfdGVybWluYWxdID1+IC9eW1x9XF1cKVJdJC8KICAgICAgICAgICAgICAgICYmICRpX3Rlcm1pbmFsID09ICRpYmVnCiAgICAgICAgICAgICAgICAmJiBkZWZpbmVkKCRLX2JlZykgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBteSAkS19uZXh0X25vbmJsYW5rID0gJHNlbGYtPktfbmV4dF9jb2RlKCRLX2JlZyk7CgogICAgICAgICAgICAgICAgaWYgKCAhJGlzX2JsaV9iZWcgJiYgZGVmaW5lZCgkS19uZXh0X25vbmJsYW5rKSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkbGV2ICAgICAgICA9ICRyTEwtPlskS19iZWddLT5bX0xFVkVMX107CiAgICAgICAgICAgICAgICAgICAgbXkgJGxldmVsX25leHQgPSAkckxMLT5bJEtfbmV4dF9ub25ibGFua10tPltfTEVWRUxfXTsKCiAgICAgICAgICAgICAgICAgICAgIyBhbmQgZG8gbm90IHVuZG8gY2kgaWYgaXQgd2FzIHNldCBieSB0aGUgLXhjaSBvcHRpb24KICAgICAgICAgICAgICAgICAgICAkYWRqdXN0X2luZGVudGF0aW9uID0gMQogICAgICAgICAgICAgICAgICAgICAgaWYgKCAkbGV2ZWxfbmV4dCA8ICRsZXYKICAgICAgICAgICAgICAgICAgICAgICAgJiYgISRyc2Vxbm9fY29udHJvbGxpbmdfbXlfY2ktPnskS19iZWd9ICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBQYXRjaCBmb3IgUlQgIzk2MTAxLCBpbiB3aGljaCBjbG9zaW5nIGJyYWNlIG9mIGFub255bW91cyBzdWJzCiAgICAgICAgICAgICAgICAjIHdhcyBub3Qgb3V0ZGVudGVkLiAgV2Ugc2hvdWxkIGxvb2sgYWhlYWQgYW5kIHNlZSBpZiB0aGVyZSBpcwogICAgICAgICAgICAgICAgIyBhIGxldmVsIGRlY3JlYXNlIGF0IHRoZSBuZXh0IHRva2VuIChpLmUuLCBhIGNsb3NpbmcgdG9rZW4pLAogICAgICAgICAgICAgICAgIyBidXQgcmlnaHQgbm93IHdlIGRvIG5vdCBoYXZlIHRoYXQgaW5mb3JtYXRpb24uICBGb3Igbm93CiAgICAgICAgICAgICAgICAjIHdlIHNlZSBpZiB3ZSBhcmUgaW4gYSBsaXN0LCBhbmQgdGhpcyB3b3JrcyB3ZWxsLgogICAgICAgICAgICAgICAgIyBTZWUgdGVzdCBmaWxlcyAnc3ViKi50JyBmb3IgZ29vZCB0ZXN0IGNhc2VzLgogICAgICAgICAgICAgICAgaWYgKCAgICRibG9ja190eXBlX3RvX2dvWyRpYmVnXSA9fiAvJEFTVUJfUEFUVEVSTi8KICAgICAgICAgICAgICAgICAgICAmJiAkY29udGFpbmVyX2Vudmlyb25tZW50X3RvX2dvWyRpX3Rlcm1pbmFsXSBlcSAnTElTVCcKICAgICAgICAgICAgICAgICAgICAmJiAhJHJPcHRzLT57J2luZGVudC1jbG9zaW5nLWJyYWNlJ30gKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgJG9wZW5pbmdfaW5kZW50YXRpb24sICRvcGVuaW5nX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgJGlzX2xlYWRpbmcsICAgICAgICAgICRvcGVuaW5nX2V4aXN0cwogICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgPSAkc2VsZi0+Z2V0X29wZW5pbmdfaW5kZW50YXRpb24oICRpYmVnLCAkcmlfZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICRyaV9sYXN0LCAkcmluZGVudGF0aW9uX2xpc3QgKTsKICAgICAgICAgICAgICAgICAgICBteSAkaW5kZW50YXRpb24gPSAkbGVhZGluZ19zcGFjZXNfdG9fZ29bJGliZWddOwogICAgICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCgkb3BlbmluZ19pbmRlbnRhdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgJiYgZ2V0X3NwYWNlcygkaW5kZW50YXRpb24pID4KICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X3NwYWNlcygkb3BlbmluZ19pbmRlbnRhdGlvbikgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGFkanVzdF9pbmRlbnRhdGlvbiA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFlWRVMgcGF0Y2ggMSBvZiAyOgogICAgICAgICAgICAjIFVuZG8gY2kgb2YgbGluZSB3aXRoIGxlYWRpbmcgY2xvc2luZyBldmFsIGJyYWNlLAogICAgICAgICAgICAjIGJ1dCBub3QgYmV5b25kIHRoZSBpbmRlbnRpb24gb2YgdGhlIGxpbmUgd2l0aAogICAgICAgICAgICAjIHRoZSBvcGVuaW5nIGJyYWNlLgogICAgICAgICAgICBpZiAoICAgJGJsb2NrX3R5cGVfdG9fZ29bJGliZWddIGVxICdldmFsJwogICAgICAgICAgICAgICAgJiYgISRyT3B0cy0+eydsaW5lLXVwLXBhcmVudGhlc2VzJ30KICAgICAgICAgICAgICAgICYmICEkck9wdHMtPnsnaW5kZW50LWNsb3NpbmctYnJhY2UnfSApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAkb3BlbmluZ19pbmRlbnRhdGlvbiwgJG9wZW5pbmdfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICRpc19sZWFkaW5nLCAgICAgICAgICAkb3BlbmluZ19leGlzdHMKICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICA9ICRzZWxmLT5nZXRfb3BlbmluZ19pbmRlbnRhdGlvbiggJGliZWcsICRyaV9maXJzdCwgJHJpX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgJHJpbmRlbnRhdGlvbl9saXN0ICk7CiAgICAgICAgICAgICAgICBteSAkaW5kZW50YXRpb24gPSAkbGVhZGluZ19zcGFjZXNfdG9fZ29bJGliZWddOwogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCRvcGVuaW5nX2luZGVudGF0aW9uKQogICAgICAgICAgICAgICAgICAgICYmIGdldF9zcGFjZXMoJGluZGVudGF0aW9uKSA+CiAgICAgICAgICAgICAgICAgICAgZ2V0X3NwYWNlcygkb3BlbmluZ19pbmRlbnRhdGlvbikgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRhZGp1c3RfaW5kZW50YXRpb24gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHBhdGNoIGZvciBpc3N1ZSBnaXQgIzQwOiAtYmxpIHNldHRpbmcgaGFzIHByaW9yaXR5CiAgICAgICAgICAgICRhZGp1c3RfaW5kZW50YXRpb24gPSAwIGlmICgkaXNfYmxpX2JlZyk7CgogICAgICAgICAgICAkZGVmYXVsdF9hZGp1c3RfaW5kZW50YXRpb24gPSAkYWRqdXN0X2luZGVudGF0aW9uOwoKICAgICAgICAgICAgIyBOb3cgbW9kaWZ5IGRlZmF1bHQgYmVoYXZpb3IgYWNjb3JkaW5nIHRvIHVzZXIgcmVxdWVzdDoKICAgICAgICAgICAgIyBoYW5kbGUgb3B0aW9uIHRvIGluZGVudCBub24tYmxvY2tzIG9mIHRoZSBmb3JtICk7ICB9OyAgXTsKICAgICAgICAgICAgIyBCdXQgZG9uJ3QgZG8gc3BlY2lhbCBpbmRlbnRhdGlvbiB0byBzb21ldGhpbmcgbGlrZSAnKS0+cGFjaygnCiAgICAgICAgICAgIGlmICggISRibG9ja190eXBlX3RvX2dvWyRpYmVnXSApIHsKCiAgICAgICAgICAgICAgICAjIE5vdGUgdGhhdCBsb2dpY2FsIHBhZGRpbmcgaGFzIGFscmVhZHkgYmVlbiBhcHBsaWVkLCBzbyB3ZSBtYXkKICAgICAgICAgICAgICAgICMgbmVlZCB0byByZW1vdmUgc29tZSBzcGFjZXMgdG8gZ2V0IGEgdmFsaWQgaGFzaCBrZXkuCiAgICAgICAgICAgICAgICBteSAkdG9rID0gJHRva2Vuc190b19nb1skaWJlZ107CiAgICAgICAgICAgICAgICBteSAkY3RpID0gJGNsb3NpbmdfdG9rZW5faW5kZW50YXRpb257JHRva307CgogICAgICAgICAgICAgICAgIyBGaXggdGhlIHZhbHVlIG9mICdjdGknIGZvciBhbiBpc2xvYXRlZCBub24td2VsZGVkIGNsb3NpbmcgcXcKICAgICAgICAgICAgICAgICMgZGVsaW1pdGVyLgogICAgICAgICAgICAgICAgaWYgKCAkc2Vxbm9fcXdfY2xvc2luZyAmJiAkaWJlZ193ZWxkX2ZpeCA9PSAkaWJlZyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBBIHF1b3RlIGRlbGltaXRlciB3aGljaCBpcyBub3QgYSBjb250YWluZXIgd2lsbCBub3QgaGF2ZQogICAgICAgICAgICAgICAgICAgICMgYSBjdGkgdmFsdWUgZGVmaW5lZC4gIEluIHRoaXMgY2FzZSB1c2UgdGhlIHN0eWxlIG9mIGEKICAgICAgICAgICAgICAgICAgICAjIHBhcmVuLiBGb3IgZXhhbXBsZQogICAgICAgICAgICAgICAgICAgICMgICBteSBAZmFycyA9ICgKICAgICAgICAgICAgICAgICAgICAjICAgICAgcXc8CiAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgZmFyCiAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgZmFyZmFyCiAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgZmFyZmFycy1mYXIKICAgICAgICAgICAgICAgICAgICAjICAgICAgPiwKICAgICAgICAgICAgICAgICAgICAjICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICFkZWZpbmVkKCRjdGkpICYmIGxlbmd0aCgkdG9rKSA9PSAxICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBzb21ldGhpbmcgb3RoZXIgdGhhbiAnKScsICd9JywgJ10nIDsgdXNlIGZsYWcgZm9yICcpJwogICAgICAgICAgICAgICAgICAgICAgICAkY3RpID0gJGNsb3NpbmdfdG9rZW5faW5kZW50YXRpb257JyknfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgQnV0IGZvciBub3csIGRvIG5vdCBvdXRkZW50IG5vbi1jb250YWluZXIgcXcKICAgICAgICAgICAgICAgICAgICAgICAgIyBkZWxpbWl0ZXJzIGJlY2F1c2UgaXQgd291bGQgd291bGQgY2hhbmdlIGV4aXN0aW5nCiAgICAgICAgICAgICAgICAgICAgICAgICMgZm9ybWF0dGluZy4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkdG9rIG5lICc+JyApIHsgJGN0aSA9IDMgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBBIG5vbi13ZWxkZWQgY2xvc2luZyBxdyBjYW5ub3QgY3VycmVudGx5IHVzZSAtY3RpPTEKICAgICAgICAgICAgICAgICAgICAjIGJlY2F1c2UgdGhhdCBvcHRpb24gcmVxdWlyZXMgYSBzZXF1ZW5jZSBudW1iZXIgdG8gZmluZAogICAgICAgICAgICAgICAgICAgICMgdGhlIG9wZW5pbmcgaW5kZW50YXRpb24sIGFuZCBxdyBxdW90ZSBkZWxpbWl0ZXJzIGFyZSBub3QKICAgICAgICAgICAgICAgICAgICAjIHNlcXVlbmNlZCBpdGVtcy4KICAgICAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQoJGN0aSkgJiYgJGN0aSA9PSAxICkgeyAkY3RpID0gMCB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCgkY3RpKSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyAkY3RpIG1heSBub3QgYmUgZGVmaW5lZCBmb3Igc2V2ZXJhbCByZWFzb25zLgogICAgICAgICAgICAgICAgICAgICMgLXBhZGRpbmcgbWF5IGhhdmUgYmVlbiBhcHBsaWVkIHNvIHRoZSBjaGFyYWN0ZXIKICAgICAgICAgICAgICAgICAgICAjICBoYXMgYSBsZW5ndGggPiAxCiAgICAgICAgICAgICAgICAgICAgIyAtIHdlIG1heSBoYXZlIHdlbGRlZCB0byBhIGNsb3NpbmcgcXVvdGUgdG9rZW4uCiAgICAgICAgICAgICAgICAgICAgIyAgIEhlcmUgaXMgYW4gZXhhbXBsZSAocGVybHRpZHkgLXduKToKICAgICAgICAgICAgICAgICAgICAjICAgICAgIF9fUEFDS0FHRV9fLT5sb2FkX2NvbXBvbmVudHMoIHF3KAogICAgICAgICAgICAgICAgICAgICMgID4gICAgICAgICBDb3JlCiAgICAgICAgICAgICAgICAgICAgIyAgPgogICAgICAgICAgICAgICAgICAgICMgID4gICAgICkgKTsKICAgICAgICAgICAgICAgICAgICAkYWRqdXN0X2luZGVudGF0aW9uID0gMDsKCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRjdGkgPT0gMSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICAgJGlfdGVybWluYWwgPD0gJGliZWcgKyAxCiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRpc19zZW1pY29sb25fdGVybWluYXRlZCApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkYWRqdXN0X2luZGVudGF0aW9uID0gMjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRhZGp1c3RfaW5kZW50YXRpb24gPSAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJGN0aSA9PSAyICkgewogICAgICAgICAgICAgICAgICAgIGlmICgkaXNfc2VtaWNvbG9uX3Rlcm1pbmF0ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGFkanVzdF9pbmRlbnRhdGlvbiA9IDM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkYWRqdXN0X2luZGVudGF0aW9uID0gMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRjdGkgPT0gMyApIHsKICAgICAgICAgICAgICAgICAgICAkYWRqdXN0X2luZGVudGF0aW9uID0gMzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBoYW5kbGUgb3B0aW9uIHRvIGluZGVudCBibG9ja3MKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJHJPcHRzLT57J2luZGVudC1jbG9zaW5nLWJyYWNlJ30KICAgICAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRpX3Rlcm1pbmFsID09ICRpYmVnICAgICMgIGlzb2xhdGVkIHRlcm1pbmFsICd9JwogICAgICAgICAgICAgICAgICAgICAgICB8fCAkaXNfc2VtaWNvbG9uX3Rlcm1pbmF0ZWQKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIH0geHh4eCA7CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJGFkanVzdF9pbmRlbnRhdGlvbiA9IDM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgaWYgYXQgJyk7JywgJ307JywgJz47JywgYW5kICddOycgb2YgYSB0ZXJtaW5hbCBxdyBxdW90ZQogICAgICAgIGVsc2lmICgkcnBhdHRlcm5zLT5bMF0gPX4gL15xYio7JC8KICAgICAgICAgICAgJiYgJHJmaWVsZHMtPlswXSA9fiAvXihbXClcfVxdXD5dKTskLyApCiAgICAgICAgewogICAgICAgICAgICBpZiAoICRjbG9zaW5nX3Rva2VuX2luZGVudGF0aW9ueyQxfSA9PSAwICkgewogICAgICAgICAgICAgICAgJGFkanVzdF9pbmRlbnRhdGlvbiA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkYWRqdXN0X2luZGVudGF0aW9uID0gMzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBpZiBsaW5lIGJlZ2lucyB3aXRoIGEgJzonLCBhbGlnbiBpdCB3aXRoIGFueQogICAgICAgICMgcHJldmlvdXMgbGluZSBsZWFkaW5nIHdpdGggY29ycmVzcG9uZGluZyA/CiAgICAgICAgZWxzaWYgKCAkdHlwZXNfdG9fZ29bJGliZWddIGVxICc6JyApIHsKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgJG9wZW5pbmdfaW5kZW50YXRpb24sICRvcGVuaW5nX29mZnNldCwKICAgICAgICAgICAgICAgICRpc19sZWFkaW5nLCAgICAgICAgICAkb3BlbmluZ19leGlzdHMKICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgPSAkc2VsZi0+Z2V0X29wZW5pbmdfaW5kZW50YXRpb24oICRpYmVnLCAkcmlfZmlyc3QsICRyaV9sYXN0LAogICAgICAgICAgICAgICAgJHJpbmRlbnRhdGlvbl9saXN0ICk7CiAgICAgICAgICAgIGlmICgkaXNfbGVhZGluZykgeyAkYWRqdXN0X2luZGVudGF0aW9uID0gMjsgfQogICAgICAgIH0KCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgU2VjdGlvbiAyOiBzZXQgaW5kZW50YXRpb24gYWNjb3JkaW5nIHRvIGZsYWcgc2V0IGFib3ZlCiAgICAgICAgIwogICAgICAgICMgU2VsZWN0IHRoZSBpbmRlbnRhdGlvbiBvYmplY3QgdG8gZGVmaW5lIGxlYWRpbmcKICAgICAgICAjIHdoaXRlc3BhY2UuICBJZiB3ZSBhcmUgb3V0ZGVudGluZyBzb21ldGhpbmcgbGlrZSAnfSB9ICk7JwogICAgICAgICMgdGhlbiB3ZSB3YW50IHRvIHVzZSBvbmUgbGV2ZWwgYmVsb3cgdGhlIGxhc3QgdG9rZW4KICAgICAgICAjICgkaV90ZXJtaW5hbCkgaW4gb3JkZXIgdG8gZ2V0IGl0IHRvIGZ1bGx5IG91dGRlbnQgdGhyb3VnaAogICAgICAgICMgYWxsIGxldmVscy4KICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgbXkgJGluZGVudGF0aW9uOwogICAgICAgIG15ICRsZXY7CiAgICAgICAgbXkgJGxldmVsX2VuZCA9ICRsZXZlbHNfdG9fZ29bJGllbmRdOwoKICAgICAgICBpZiAoICRhZGp1c3RfaW5kZW50YXRpb24gPT0gMCApIHsKICAgICAgICAgICAgJGluZGVudGF0aW9uID0gJGxlYWRpbmdfc3BhY2VzX3RvX2dvWyRpYmVnXTsKICAgICAgICAgICAgJGxldiAgICAgICAgID0gJGxldmVsc190b19nb1skaWJlZ107CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJGFkanVzdF9pbmRlbnRhdGlvbiA9PSAxICkgewoKICAgICAgICAgICAgIyBDaGFuZ2UgdGhlIGluZGVudGF0aW9uIHRvIGJlIHRoYXQgb2YgYSBkaWZmZXJlbnQgdG9rZW4gb24gdGhlIGxpbmUKICAgICAgICAgICAgIyBQcmV2aW91c2x5LCB0aGUgaW5kZW50YXRpb24gb2YgdGhlIHRlcm1pbmFsIHRva2VuIHdhcyB1c2VkOgogICAgICAgICAgICAjIE9MRCBDT0RJTkc6CiAgICAgICAgICAgICMgJGluZGVudGF0aW9uID0gJHJlZHVjZWRfc3BhY2VzX3RvX2dvWyRpX3Rlcm1pbmFsXTsKICAgICAgICAgICAgIyAkbGV2ICAgICAgICAgPSAkbGV2ZWxzX3RvX2dvWyRpX3Rlcm1pbmFsXTsKCiAgICAgICAgICAgICMgR2VuZXJhbGl6YXRpb24gZm9yIE1PSk86CiAgICAgICAgICAgICMgVXNlIHRoZSBsb3dlc3QgbGV2ZWwgaW5kZW50YXRpb24gb2YgdGhlIHRva2VucyBvbiB0aGUgbGluZS4KICAgICAgICAgICAgIyBGb3IgZXhhbXBsZSwgaGVyZSB3ZSBjYW4gdXNlIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgZW5kaW5nICc7JzoKICAgICAgICAgICAgIyAgICB9IHVudGlsICgkc2VsZWN0aW9uID4gMCBhbmQgJHNlbGVjdGlvbiA8IDEwKTsgICAjIG9rIHRvIHVzZSAnOycKICAgICAgICAgICAgIyBCdXQgdGhpcyB3aWxsIG5vdCBvdXRkZW50IGlmIHdlIHVzZSB0aGUgdGVybWluYWwgaW5kZW50YXRpb246CiAgICAgICAgICAgICMgICAgKS0+dGhlbiggc3ViIHsgICAgICAjIHVzZSBpbmRlbnRhdGlvbiBvZiB0aGUgLT4sIG5vdCB0aGUgewogICAgICAgICAgICAjIFdhcm5pbmc6IHJlZHVjZWRfc3BhY2VzX3RvX2dvW10gbWF5IGJlIGEgcmVmZXJlbmNlLCBkbyBub3QKICAgICAgICAgICAgIyBkbyBudW1lcmljYWwgY2hlY2tzIHdpdGggaXQKCiAgICAgICAgICAgIG15ICRpX2luZCA9ICRpYmVnOwogICAgICAgICAgICAkaW5kZW50YXRpb24gPSAkcmVkdWNlZF9zcGFjZXNfdG9fZ29bJGlfaW5kXTsKICAgICAgICAgICAgJGxldiAgICAgICAgID0gJGxldmVsc190b19nb1skaV9pbmRdOwogICAgICAgICAgICB3aGlsZSAoICRpX2luZCA8ICRpX3Rlcm1pbmFsICkgewogICAgICAgICAgICAgICAgJGlfaW5kKys7CiAgICAgICAgICAgICAgICBpZiAoICRsZXZlbHNfdG9fZ29bJGlfaW5kXSA8ICRsZXYgKSB7CiAgICAgICAgICAgICAgICAgICAgJGluZGVudGF0aW9uID0gJHJlZHVjZWRfc3BhY2VzX3RvX2dvWyRpX2luZF07CiAgICAgICAgICAgICAgICAgICAgJGxldiAgICAgICAgID0gJGxldmVsc190b19nb1skaV9pbmRdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGhhbmRsZSBpbmRlbnRlZCBjbG9zaW5nIHRva2VuIHdoaWNoIGFsaWducyB3aXRoIG9wZW5pbmcgdG9rZW4KICAgICAgICBlbHNpZiAoICRhZGp1c3RfaW5kZW50YXRpb24gPT0gMiApIHsKCiAgICAgICAgICAgICMgaGFuZGxlIG9wdGlvbiB0byBhbGlnbiBjbG9zaW5nIHRva2VuIHdpdGggb3BlbmluZyB0b2tlbgogICAgICAgICAgICAkbGV2ID0gJGxldmVsc190b19nb1skaWJlZ107CgogICAgICAgICAgICAjIGNhbGN1bGF0ZSBzcGFjZXMgbmVlZGVkIHRvIGFsaWduIHdpdGggb3BlbmluZyB0b2tlbgogICAgICAgICAgICBteSAkc3BhY2VfY291bnQgPQogICAgICAgICAgICAgIGdldF9zcGFjZXMoJG9wZW5pbmdfaW5kZW50YXRpb24pICsgJG9wZW5pbmdfb2Zmc2V0OwoKICAgICAgICAgICAgIyBJbmRlbnQgbGVzcyB0aGFuIHRoZSBwcmV2aW91cyBsaW5lLgogICAgICAgICAgICAjCiAgICAgICAgICAgICMgUHJvYmxlbTogRm9yIC1scCB3ZSBkb24ndCBleGFjdGx5IGtub3cgd2hhdCBpdCB3YXMgaWYgdGhlcmUKICAgICAgICAgICAgIyB3ZXJlIHJlY292ZXJhYmxlIHNwYWNlcyBzZW50IHRvIHRoZSBhbGlnbmVyLiAgQSBnb29kIHNvbHV0aW9uCiAgICAgICAgICAgICMgd291bGQgYmUgdG8gZm9yY2UgYSBmbHVzaCBvZiB0aGUgdmVydGljYWwgYWxpZ25tZW50IGJ1ZmZlciwgc28KICAgICAgICAgICAgIyB0aGF0IHdlIHdvdWxkIGtub3cuICBGb3Igbm93LCB0aGlzIHJ1bGUgaXMgdXNlZCBmb3IgLWxwOgogICAgICAgICAgICAjCiAgICAgICAgICAgICMgV2hlbiB0aGUgbGFzdCBsaW5lIGRpZCBub3Qgc3RhcnQgd2l0aCBhIGNsb3NpbmcgdG9rZW4gd2Ugd2lsbAogICAgICAgICAgICAjIGJlIG9wdGltaXN0aWMgdGhhdCB0aGUgYWxpZ25lciB3aWxsIHJlY292ZXIgZXZlcnl0aGluZyB3YW50ZWQuCiAgICAgICAgICAgICMKICAgICAgICAgICAgIyBUaGlzIHJ1bGUgd2lsbCBwcmV2ZW50IHVzIGZyb20gYnJlYWtpbmcgYSBoaWVyYXJjaHkgb2YgY2xvc2luZwogICAgICAgICAgICAjIHRva2VucywgYW5kIGluIGEgd29yc3QgY2FzZSB3aWxsIGxlYXZlIGEgY2xvc2luZyBwYXJlbiB0b28gZmFyCiAgICAgICAgICAgICMgaW5kZW50ZWQsIGJ1dCB0aGlzIGlzIGJldHRlciB0aGFuIGZyZXF1ZW50bHkgbGVhdmluZyBpdCBub3QKICAgICAgICAgICAgIyBpbmRlbnRlZCBlbm91Z2guCiAgICAgICAgICAgIG15ICRsYXN0X3NwYWNlcyA9IGdldF9zcGFjZXMoJGxhc3RfaW5kZW50YXRpb25fd3JpdHRlbik7CiAgICAgICAgICAgIGlmICggISRpc19jbG9zaW5nX3Rva2VueyRsYXN0X2xlYWRpbmdfdG9rZW59ICkgewogICAgICAgICAgICAgICAgJGxhc3Rfc3BhY2VzICs9CiAgICAgICAgICAgICAgICAgIGdldF9yZWNvdmVyYWJsZV9zcGFjZXMoJGxhc3RfaW5kZW50YXRpb25fd3JpdHRlbik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmVzZXQgdGhlIGluZGVudGF0aW9uIHRvIHRoZSBuZXcgc3BhY2UgY291bnQgaWYgaXQgd29ya3MKICAgICAgICAgICAgIyBvbmx5IG9wdGlvbnMgYXJlIGFsbCBvciBub25lOiBub3RoaW5nIGluLWJldHdlZW4gbG9va3MgZ29vZAogICAgICAgICAgICAkbGV2ID0gJGxldmVsc190b19nb1skaWJlZ107CiAgICAgICAgICAgIGlmICggJHNwYWNlX2NvdW50IDwgJGxhc3Rfc3BhY2VzICkgewogICAgICAgICAgICAgICAgaWYgKCRyT3B0c19saW5lX3VwX3BhcmVudGhlc2VzKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJGxldiA9ICRsZXZlbHNfdG9fZ29bJGliZWddOwogICAgICAgICAgICAgICAgICAgICRpbmRlbnRhdGlvbiA9CiAgICAgICAgICAgICAgICAgICAgICBuZXdfbHBfaW5kZW50YXRpb25faXRlbSggJHNwYWNlX2NvdW50LCAkbGV2LCAwLCAwLCAwICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkaW5kZW50YXRpb24gPSAkc3BhY2VfY291bnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmV2ZXJ0IHRvIGRlZmF1bHQgaWYgaXQgZG9lc24ndCB3b3JrCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJHNwYWNlX2NvdW50ID0gbGVhZGluZ19zcGFjZXNfdG9fZ28oJGliZWcpOwogICAgICAgICAgICAgICAgaWYgKCAkZGVmYXVsdF9hZGp1c3RfaW5kZW50YXRpb24gPT0gMCApIHsKICAgICAgICAgICAgICAgICAgICAkaW5kZW50YXRpb24gPSAkbGVhZGluZ19zcGFjZXNfdG9fZ29bJGliZWddOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkZGVmYXVsdF9hZGp1c3RfaW5kZW50YXRpb24gPT0gMSApIHsKICAgICAgICAgICAgICAgICAgICAkaW5kZW50YXRpb24gPSAkcmVkdWNlZF9zcGFjZXNfdG9fZ29bJGlfdGVybWluYWxdOwogICAgICAgICAgICAgICAgICAgICRsZXYgICAgICAgICA9ICRsZXZlbHNfdG9fZ29bJGlfdGVybWluYWxdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIEZ1bGwgaW5kZW50YWlvbiBvZiBjbG9zaW5nIHRva2VucyAoLWljYiBhbmQgLWljcCBvciAtY3RpPTIpCiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIGhhbmRsZSAtaWNiIChpbmRlbnRlZCBjbG9zaW5nIGNvZGUgYmxvY2sgYnJhY2VzKQogICAgICAgICAgICAjIFVwZGF0ZWQgbWV0aG9kIGZvciBpbmRlbnRlZCBibG9jayBicmFjZXM6IGluZGVudCBvbmUgZnVsbCBsZXZlbCBpZgogICAgICAgICAgICAjIHRoZXJlIGlzIG5vIGNvbnRpbnVhdGlvbiBpbmRlbnRhdGlvbi4gIFRoaXMgd2lsbCBvY2N1ciBmb3IgbWFqb3IKICAgICAgICAgICAgIyBzdHJ1Y3R1cmVzIHN1Y2ggYXMgc3ViLCBpZiwgZWxzZSwgYnV0IG5vdCBmb3IgdGhpbmdzIGxpa2UgbWFwCiAgICAgICAgICAgICMgYmxvY2tzLgogICAgICAgICAgICAjCiAgICAgICAgICAgICMgTm90ZTogb25seSBjb2RlIGJsb2NrcyB3aXRob3V0IGNvbnRpbnVhdGlvbiBpbmRlbnRhdGlvbiBhcmUKICAgICAgICAgICAgIyBoYW5kbGVkIGhlcmUgKGlmLCBlbHNlLCB1bmxlc3MsIC4uKS4gSW4gdGhlIGZvbGxvd2luZyBzbmlwcGV0LAogICAgICAgICAgICAjIHRoZSB0ZXJtaW5hbCBicmFjZSBvZiB0aGUgc29ydCBibG9jayB3aWxsIGhhdmUgY29udGludWF0aW9uCiAgICAgICAgICAgICMgaW5kZW50YXRpb24gYXMgc2hvd24gc28gaXQgd2lsbCBub3QgYmUgaGFuZGxlZCBieSB0aGUgY29kaW5nCiAgICAgICAgICAgICMgaGVyZS4gIFdlIHdvdWxkIGhhdmUgdG8gdW5kbyB0aGUgY29udGludWF0aW9uIGluZGVudGF0aW9uIHRvIGRvCiAgICAgICAgICAgICMgdGhpcywgYnV0IGl0IHByb2JhYmx5IGxvb2tzIG9rIGFzIGlzLiAgVGhpcyBpcyBhIHBvc3NpYmxlIGZ1dHVyZQogICAgICAgICAgICAjIHVwZGF0ZSBmb3Igc2VtaWNvbG9uIHRlcm1pbmF0ZWQgbGluZXMuCiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgaWYgKCRzb3J0YnkgZXEgJ2RhdGUnIG9yICRzb3J0YnkgZXEgJ3NpemUnKSB7CiAgICAgICAgICAgICMgICAgICAgICBAZmlsZXMgPSBzb3J0IHsKICAgICAgICAgICAgIyAgICAgICAgICAgICAkZmlsZV9kYXRheyRhfXskc29ydGJ5fSA8PT4gJGZpbGVfZGF0YXskYn17JHNvcnRieX0KICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgb3IgJGEgY21wICRiCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgIH0gQGZpbGVzOwogICAgICAgICAgICAjICAgICAgICAgfQogICAgICAgICAgICAjCiAgICAgICAgICAgIGlmICggICAkYmxvY2tfdHlwZV90b19nb1skaWJlZ10KICAgICAgICAgICAgICAgICYmICRjaV9sZXZlbHNfdG9fZ29bJGlfdGVybWluYWxdID09IDAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBteSAkc3BhY2VzID0gZ2V0X3NwYWNlcyggJGxlYWRpbmdfc3BhY2VzX3RvX2dvWyRpX3Rlcm1pbmFsXSApOwogICAgICAgICAgICAgICAgJGluZGVudGF0aW9uID0gJHNwYWNlcyArICRyT3B0c19pbmRlbnRfY29sdW1uczsKCiAgICAgICAgICAgICAgICAjIE5PVEU6IGZvciAtbHAgd2UgY291bGQgY3JlYXRlIGEgbmV3IGluZGVudGF0aW9uIG9iamVjdCwgYnV0CiAgICAgICAgICAgICAgICAjIHRoZXJlIGlzIHByb2JhYmx5IG5vIG5lZWQgdG8gZG8gaXQKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBoYW5kbGUgLWljcCBhbmQgYW55IC1pY2IgYmxvY2sgYnJhY2VzIHdoaWNoIGZhbGwgdGhyb3VnaCBhYm92ZQogICAgICAgICAgICAjIHRlc3Qgc3VjaCBhcyB0aGUgJ3NvcnQnIGJsb2NrIG1lbnRpb25lZCBhYm92ZS4KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBUaGVyZSBhcmUgY3VycmVudGx5IHR3byB3YXlzIHRvIGhhbmRsZSAtaWNwLi4uCiAgICAgICAgICAgICAgICAjIE9uZSB3YXkgaXMgdG8gdXNlIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgcHJldmlvdXMgbGluZToKICAgICAgICAgICAgICAgICMgJGluZGVudGF0aW9uID0gJGxhc3RfaW5kZW50YXRpb25fd3JpdHRlbjsKCiAgICAgICAgICAgICAgICAjIFRoZSBvdGhlciB3YXkgaXMgdG8gdXNlIHRoZSBpbmRlbnRhdGlvbiB0aGF0IHRoZSBwcmV2aW91cyBsaW5lCiAgICAgICAgICAgICAgICAjIHdvdWxkIGhhdmUgaGFkIGlmIGl0IGhhZG4ndCBiZWVuIGFkanVzdGVkOgogICAgICAgICAgICAgICAgJGluZGVudGF0aW9uID0gJGxhc3RfdW5hZGp1c3RlZF9pbmRlbnRhdGlvbjsKCiAgICAgICAgICAgICAgICAjIEN1cnJlbnQgbWV0aG9kOiB1c2UgdGhlIG1pbmltdW0gb2YgdGhlIHR3by4gVGhpcyBhdm9pZHMKICAgICAgICAgICAgICAgICMgaW5jb25zaXN0ZW50IGluZGVudGF0aW9uLgogICAgICAgICAgICAgICAgaWYgKCBnZXRfc3BhY2VzKCRsYXN0X2luZGVudGF0aW9uX3dyaXR0ZW4pIDwKICAgICAgICAgICAgICAgICAgICBnZXRfc3BhY2VzKCRpbmRlbnRhdGlvbikgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRpbmRlbnRhdGlvbiA9ICRsYXN0X2luZGVudGF0aW9uX3dyaXR0ZW47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdXNlIHByZXZpb3VzIGluZGVudGF0aW9uIGJ1dCB1c2Ugb3duIGxldmVsCiAgICAgICAgICAgICMgdG8gY2F1c2UgbGlzdCB0byBiZSBmbHVzaGVkIHByb3Blcmx5CiAgICAgICAgICAgICRsZXYgPSAkbGV2ZWxzX3RvX2dvWyRpYmVnXTsKICAgICAgICB9CgogICAgICAgICMgcmVtZW1iZXIgaW5kZW50YXRpb24gZXhjZXB0IGZvciBtdWx0aS1saW5lIHF1b3Rlcywgd2hpY2ggZ2V0CiAgICAgICAgIyBubyBpbmRlbnRhdGlvbgogICAgICAgIHVubGVzcyAoICRpYmVnID09IDAgJiYgJHN0YXJ0aW5nX2luX3F1b3RlICkgewogICAgICAgICAgICAkbGFzdF9pbmRlbnRhdGlvbl93cml0dGVuICAgID0gJGluZGVudGF0aW9uOwogICAgICAgICAgICAkbGFzdF91bmFkanVzdGVkX2luZGVudGF0aW9uID0gJGxlYWRpbmdfc3BhY2VzX3RvX2dvWyRpYmVnXTsKICAgICAgICAgICAgJGxhc3RfbGVhZGluZ190b2tlbiAgICAgICAgICA9ICR0b2tlbnNfdG9fZ29bJGliZWddOwoKICAgICAgICAgICAgIyBQYXRjaCB0byBtYWtlIGEgbGluZSB3aGljaCBpcyB0aGUgZW5kIG9mIGEgcXcgcXVvdGUgd29yayB3aXRoIHRoZQogICAgICAgICAgICAjIC1scCBvcHRpb24uICBNYWtlICR0b2tlbl9iZWcgbG9vayBsaWtlIGEgY2xvc2luZyB0b2tlbiBhcyBzb21lCiAgICAgICAgICAgICMgdHlwZSBldmVuIGlmIGl0IGlzIG5vdC4gIFRoaXMgdmVyaWFibGUgd2lsbCBiZWNvbWUKICAgICAgICAgICAgIyAkbGFzdF9sZWFkaW5nX3Rva2VuIGF0IHRoZSBlbmQgb2YgdGhpcyBsb29wLiAgVGhlbiwgaWYgdGhlIC1scAogICAgICAgICAgICAjIHN0eWxlIGlzIHNlbGVjdGVkLCBhbmQgdGhlIG5leHQgbGluZSBpcyBhbHNvIGEKICAgICAgICAgICAgIyBjbG9zaW5nIHRva2VuLCBpdCB3aWxsIG5vdCBnZXQgbW9yZSBpbmRlbnRhdGlvbiB0aGFuIHRoaXMgbGluZS4KICAgICAgICAgICAgIyBXZSBuZWVkIHRvIGRvIHRoaXMgYmVjYXVzZSBxdyBxdW90ZXMgKGF0IHByZXNlbnQpIG9ubHkgZ2V0CiAgICAgICAgICAgICMgY29udGludWF0aW9uIGluZGVudGF0aW9uLCBub3Qgb25lIGxldmVsIG9mIGluZGVudGF0aW9uLCBzbyB3ZQogICAgICAgICAgICAjIG5lZWQgdG8gdHVybiBvZmYgdGhlIC1scCBpbmRlbnRhdGlvbi4KCiAgICAgICAgICAgICMgLi4uIGEgcGljdHVyZSBpcyB3b3J0aCBhIHRob3VzYW5kIHdvcmRzOgoKICAgICAgICAgICAgIyBwZXJsdGlkeSAtd24gLWdudSAoV2l0aG91dCB0aGlzIHBhdGNoKToKICAgICAgICAgICAgIyAgIG9rKGRlZmluZWQoCiAgICAgICAgICAgICMgICAgICAgJHNlcWlvID0gJGdiLT5nZXRfU3RyZWFtX2J5X2JhdGNoKFtxdyhKMDA1MjIgQUYzMDMxMTIKICAgICAgICAgICAgIyAgICAgICAyOTgxMDE0KV0pCiAgICAgICAgICAgICMgICAgICAgICAgICAgKSk7CgogICAgICAgICAgICAjIHBlcmx0aWR5IC13biAtZ251IChXaXRoIHRoaXMgcGF0Y2gpOgogICAgICAgICAgICAjICBvayhkZWZpbmVkKAogICAgICAgICAgICAjICAgICAgJHNlcWlvID0gJGdiLT5nZXRfU3RyZWFtX2J5X2JhdGNoKFtxdyhKMDA1MjIgQUYzMDMxMTIKICAgICAgICAgICAgIyAgICAgIDI5ODEwMTQpXSkKICAgICAgICAgICAgIyAgKSk7CiAgICAgICAgICAgICMjIGlmICgkc2Vxbm9fcXdfY2xvc2luZykgeyAkbGFzdF9sZWFkaW5nX3Rva2VuID0gJyknIH0KICAgICAgICAgICAgaWYgKCAkc2Vxbm9fcXdfY2xvc2luZwogICAgICAgICAgICAgICAgJiYgKCBsZW5ndGgoJHRva2VuX2JlZykgPiAxIHx8ICR0b2tlbl9iZWcgZXEgJz4nICkgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkbGFzdF9sZWFkaW5nX3Rva2VuID0gJyknOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGJlIHN1cmUgbGluZXMgd2l0aCBsZWFkaW5nIGNsb3NpbmcgdG9rZW5zIGFyZSBub3Qgb3V0ZGVudGVkIG1vcmUKICAgICAgICAjIHRoYW4gdGhlIGxpbmUgd2hpY2ggY29udGFpbmVkIHRoZSBjb3JyZXNwb25kaW5nIG9wZW5pbmcgdG9rZW4uCgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIHVwZGF0ZWQgcGVyIGJ1ZyByZXBvcnQgaW4gYWxleF9idWcucGw6IHdlIG11c3Qgbm90CiAgICAgICAgIyBtZXNzIHdpdGggdGhlIGluZGVudGF0aW9uIG9mIGNsb3NpbmcgbG9naWNhbCBicmFjZXMgc28KICAgICAgICAjIHdlIG11c3QgdHJlYXQgc29tZXRoaW5nIGxpa2UgJ30gZWxzZSB7JyBhcyBpZiBpdCB3ZXJlCiAgICAgICAgIyBhbiBpc29sYXRlZCBicmFjZQogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICBteSAkaXNfaXNvbGF0ZWRfYmxvY2tfYnJhY2UgPSAkYmxvY2tfdHlwZV90b19nb1skaWJlZ10KICAgICAgICAgICYmICggJGlfdGVybWluYWwgPT0gJGliZWcKICAgICAgICAgICAgfHwgJGlzX2lmX2Vsc2lmX2Vsc2VfdW5sZXNzX3doaWxlX3VudGlsX2Zvcl9mb3JlYWNoewogICAgICAgICAgICAgICAgJGJsb2NrX3R5cGVfdG9fZ29bJGliZWddIH0gKTsKCiAgICAgICAgIyBvbmx5IGRvIHRoaXMgZm9yIGEgJzo7IHdoaWNoIGlzIGFsaWduZWQgd2l0aCBpdHMgbGVhZGluZyAnPycKICAgICAgICBteSAkaXNfdW5hbGlnbmVkX2NvbG9uID0gJHR5cGVzX3RvX2dvWyRpYmVnXSBlcSAnOicgJiYgISRpc19sZWFkaW5nOwoKICAgICAgICBpZiAoCiAgICAgICAgICAgIGRlZmluZWQoJG9wZW5pbmdfaW5kZW50YXRpb24pCiAgICAgICAgICAgICYmICEkbGVhZGluZ19wYXJlbl9hcnJvdyAgICAjIE1PSk8KICAgICAgICAgICAgJiYgISRpc19pc29sYXRlZF9ibG9ja19icmFjZQogICAgICAgICAgICAmJiAhJGlzX3VuYWxpZ25lZF9jb2xvbgogICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKCBnZXRfc3BhY2VzKCRvcGVuaW5nX2luZGVudGF0aW9uKSA+IGdldF9zcGFjZXMoJGluZGVudGF0aW9uKSApIHsKICAgICAgICAgICAgICAgICRpbmRlbnRhdGlvbiA9ICRvcGVuaW5nX2luZGVudGF0aW9uOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHJlbWVtYmVyIHRoZSBpbmRlbnRhdGlvbiBvZiBlYWNoIGxpbmUgb2YgdGhpcyBiYXRjaAogICAgICAgIHB1c2ggQHskcmluZGVudGF0aW9uX2xpc3R9LCAkaW5kZW50YXRpb247CgogICAgICAgICMgb3V0ZGVudCBsaW5lcyB3aXRoIGNlcnRhaW4gbGVhZGluZyB0b2tlbnMuLi4KICAgICAgICBpZiAoCgogICAgICAgICAgICAjIG11c3QgYmUgZmlyc3Qgd29yZCBvZiB0aGlzIGJhdGNoCiAgICAgICAgICAgICRpYmVnID09IDAKCiAgICAgICAgICAgICMgYW5kIC4uLgogICAgICAgICAgICAmJiAoCgogICAgICAgICAgICAgICAgIyBjZXJ0YWluIGxlYWRpbmcga2V5d29yZHMgaWYgcmVxdWVzdGVkCiAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgJHJPcHRzLT57J291dGRlbnQta2V5d29yZHMnfQogICAgICAgICAgICAgICAgICAgICYmICR0eXBlc190b19nb1skaWJlZ10gZXEgJ2snCiAgICAgICAgICAgICAgICAgICAgJiYgJG91dGRlbnRfa2V5d29yZHsgJHRva2Vuc190b19nb1skaWJlZ10gfQogICAgICAgICAgICAgICAgKQoKICAgICAgICAgICAgICAgICMgb3IgbGFiZWxzIGlmIHJlcXVlc3RlZAogICAgICAgICAgICAgICAgfHwgKCAkck9wdHMtPnsnb3V0ZGVudC1sYWJlbHMnfSAmJiAkdHlwZXNfdG9fZ29bJGliZWddIGVxICdKJyApCgogICAgICAgICAgICAgICAgIyBvciBzdGF0aWMgYmxvY2sgY29tbWVudHMgaWYgcmVxdWVzdGVkCiAgICAgICAgICAgICAgICB8fCAoICAgJHR5cGVzX3RvX2dvWyRpYmVnXSBlcSAnIycKICAgICAgICAgICAgICAgICAgICAmJiAkck9wdHMtPnsnb3V0ZGVudC1zdGF0aWMtYmxvY2stY29tbWVudHMnfQogICAgICAgICAgICAgICAgICAgICYmICRpc19zdGF0aWNfYmxvY2tfY29tbWVudCApCiAgICAgICAgICAgICkKICAgICAgICAgICkKCiAgICAgICAgewogICAgICAgICAgICBteSAkc3BhY2VfY291bnQgPSBsZWFkaW5nX3NwYWNlc190b19nbygkaWJlZyk7CiAgICAgICAgICAgIGlmICggJHNwYWNlX2NvdW50ID4gMCApIHsKICAgICAgICAgICAgICAgICRzcGFjZV9jb3VudCAtPSAkck9wdHNfY29udGludWF0aW9uX2luZGVudGF0aW9uOwogICAgICAgICAgICAgICAgJGlzX291dGRlbnRlZF9saW5lID0gMTsKICAgICAgICAgICAgICAgIGlmICggJHNwYWNlX2NvdW50IDwgMCApIHsgJHNwYWNlX2NvdW50ID0gMCB9CgogICAgICAgICAgICAgICAgIyBkbyBub3QgcHJvbW90ZSBhIHNwYWNlZCBzdGF0aWMgYmxvY2sgY29tbWVudCB0byBub24tc3BhY2VkOwogICAgICAgICAgICAgICAgIyB0aGlzIGlzIG5vdCBub3JtYWxseSBuZWNlc3NhcnkgYnV0IGNvdWxkIGJlIGZvciBzb21lCiAgICAgICAgICAgICAgICAjIHVudXN1YWwgdXNlciBpbnB1dHMgKHN1Y2ggYXMgLWNpID0gLWkpCiAgICAgICAgICAgICAgICBpZiAoICR0eXBlc190b19nb1skaWJlZ10gZXEgJyMnICYmICRzcGFjZV9jb3VudCA9PSAwICkgewogICAgICAgICAgICAgICAgICAgICRzcGFjZV9jb3VudCA9IDE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCRyT3B0c19saW5lX3VwX3BhcmVudGhlc2VzKSB7CiAgICAgICAgICAgICAgICAgICAgJGluZGVudGF0aW9uID0KICAgICAgICAgICAgICAgICAgICAgIG5ld19scF9pbmRlbnRhdGlvbl9pdGVtKCAkc3BhY2VfY291bnQsICRsZXYsIDAsIDAsIDAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRpbmRlbnRhdGlvbiA9ICRzcGFjZV9jb3VudDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICggJGluZGVudGF0aW9uLCAkbGV2LCAkbGV2ZWxfZW5kLCAkdGVybWluYWxfdHlwZSwKICAgICAgICAgICAgJHRlcm1pbmFsX2Jsb2NrX3R5cGUsICRpc19zZW1pY29sb25fdGVybWluYXRlZCwKICAgICAgICAgICAgJGlzX291dGRlbnRlZF9saW5lICk7CiAgICB9Cn0gIyMgZW5kIGNsb3N1cmUgc2V0X2FkanVzdGVkX2luZGVudGF0aW9uCgpzdWIgZ2V0X29wZW5pbmdfaW5kZW50YXRpb24gewoKICAgICMgZ2V0IHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgbGluZSB3aGljaCBvdXRwdXQgdGhlIG9wZW5pbmcgdG9rZW4KICAgICMgY29ycmVzcG9uZGluZyB0byBhIGdpdmVuIGNsb3NpbmcgdG9rZW4gaW4gdGhlIGN1cnJlbnQgb3V0cHV0IGJhdGNoLgogICAgIwogICAgIyBnaXZlbjoKICAgICMgJGlfY2xvc2luZyAtIGluZGV4IGluIHRoaXMgbGluZSBvZiBhIGNsb3NpbmcgdG9rZW4gJyknICd9JyBvciAnXScKICAgICMKICAgICMgJHJpX2ZpcnN0IC0gcmVmZXJlbmNlIHRvIGxpc3Qgb2YgdGhlIGZpcnN0IGluZGV4ICRpIGZvciBlYWNoIG91dHB1dAogICAgIyAgICAgICAgICAgICAgIGxpbmUgaW4gdGhpcyBiYXRjaAogICAgIyAkcmlfbGFzdCAtIHJlZmVyZW5jZSB0byBsaXN0IG9mIHRoZSBsYXN0IGluZGV4ICRpIGZvciBlYWNoIG91dHB1dCBsaW5lCiAgICAjICAgICAgICAgICAgICBpbiB0aGlzIGJhdGNoCiAgICAjICRyaW5kZW50YXRpb25fbGlzdCAtIHJlZmVyZW5jZSB0byBhIGxpc3QgY29udGFpbmluZyB0aGUgaW5kZW50YXRpb24KICAgICMgICAgICAgICAgICB1c2VkIGZvciBlYWNoIGxpbmUuCiAgICAjICRxd19zZXFubyAtIG9wdGlvbmFsIHNlcXVlbmNlIG51bWJlciB0byB1c2UgaWYgbm9ybWFsIHNlcW5vIG5vdCBkZWZpbmVkCiAgICAjICAgICAgICAgICAoVE9ETzogd291bGQgYmUgbW9yZSBnZW5lcmFsIHRvIGp1c3QgbG9vayB0aGlzIHVwIGZyb20gaW5kZXggaSkKICAgICMKICAgICMgcmV0dXJuOgogICAgIyAgIC10aGUgaW5kZW50YXRpb24gb2YgdGhlIGxpbmUgd2hpY2ggY29udGFpbmVkIHRoZSBvcGVuaW5nIHRva2VuCiAgICAjICAgIHdoaWNoIG1hdGNoZXMgdGhlIHRva2VuIGF0IGluZGV4ICRpX29wZW5pbmcKICAgICMgICAtYW5kIGl0cyBvZmZzZXQgKG51bWJlciBvZiBjb2x1bW5zKSBmcm9tIHRoZSBzdGFydCBvZiB0aGUgbGluZQogICAgIwogICAgbXkgKCAkc2VsZiwgJGlfY2xvc2luZywgJHJpX2ZpcnN0LCAkcmlfbGFzdCwgJHJpbmRlbnRhdGlvbl9saXN0LCAkcXdfc2Vxbm8gKQogICAgICA9IEBfOwoKICAgICMgZmlyc3QsIHNlZSBpZiB0aGUgb3BlbmluZyB0b2tlbiBpcyBpbiB0aGUgY3VycmVudCBiYXRjaAogICAgbXkgJGlfb3BlbmluZyA9ICRtYXRlX2luZGV4X3RvX2dvWyRpX2Nsb3NpbmddOwogICAgbXkgKCAkaW5kZW50LCAkb2Zmc2V0LCAkaXNfbGVhZGluZywgJGV4aXN0cyApOwogICAgJGV4aXN0cyA9IDE7CiAgICBpZiAoIGRlZmluZWQoJGlfb3BlbmluZykgJiYgJGlfb3BlbmluZyA+PSAwICkgewoKICAgICAgICAjIGl0IGlzLi5sb29rIHVwIHRoZSBpbmRlbnRhdGlvbgogICAgICAgICggJGluZGVudCwgJG9mZnNldCwgJGlzX2xlYWRpbmcgKSA9CiAgICAgICAgICBsb29rdXBfb3BlbmluZ19pbmRlbnRhdGlvbiggJGlfb3BlbmluZywgJHJpX2ZpcnN0LCAkcmlfbGFzdCwKICAgICAgICAgICAgJHJpbmRlbnRhdGlvbl9saXN0ICk7CiAgICB9CgogICAgIyBpZiBub3QsIGl0IHNob3VsZCBoYXZlIGJlZW4gc3RvcmVkIGluIHRoZSBoYXNoIGJ5IGEgcHJldmlvdXMgYmF0Y2gKICAgIGVsc2UgewogICAgICAgIG15ICRzZXFubyA9ICR0eXBlX3NlcXVlbmNlX3RvX2dvWyRpX2Nsb3NpbmddOwogICAgICAgICRzZXFubyA9ICRxd19zZXFubyB1bmxlc3MgKCRzZXFubyk7CiAgICAgICAgKCAkaW5kZW50LCAkb2Zmc2V0LCAkaXNfbGVhZGluZywgJGV4aXN0cyApID0KICAgICAgICAgIGdldF9zYXZlZF9vcGVuaW5nX2luZGVudGF0aW9uKCRzZXFubyk7CiAgICB9CiAgICByZXR1cm4gKCAkaW5kZW50LCAkb2Zmc2V0LCAkaXNfbGVhZGluZywgJGV4aXN0cyApOwp9CgpzdWIgc2V0X3ZlcnRpY2FsX3RpZ2h0bmVzc19mbGFncyB7CgogICAgbXkgKCAkc2VsZiwgJG4sICRuX2xhc3RfbGluZSwgJGliZWcsICRpZW5kLCAkcmlfZmlyc3QsICRyaV9sYXN0LAogICAgICAgICRlbmRpbmdfaW5fcXVvdGUsICRjbG9zaW5nX3NpZGVfY29tbWVudCApCiAgICAgID0gQF87CgogICAgIyBEZWZpbmUgdmVydGljYWwgdGlnaHRuZXNzIGNvbnRyb2xzIGZvciB0aGUgbnRoIGxpbmUgb2YgYSBiYXRjaC4KICAgICMgV2UgY3JlYXRlIGFuIGFycmF5IG9mIHBhcmFtZXRlcnMgd2hpY2ggdGVsbCB0aGUgdmVydGljYWwgYWxpZ25lcgogICAgIyBpZiB3ZSBzaG91bGQgY29tYmluZSB0aGlzIGxpbmUgd2l0aCB0aGUgbmV4dCBsaW5lIHRvIGFjaGlldmUgdGhlCiAgICAjIGRlc2lyZWQgdmVydGljYWwgdGlnaHRuZXNzLiAgVGhlIGFycmF5IG9mIHBhcmFtZXRlcnMgY29udGFpbnM6CiAgICAjCiAgICAjICAgWzBdIHR5cGU6IDE9b3BlbmluZyBub24tYmxvY2sgICAgMj1jbG9zaW5nIG5vbi1ibG9jawogICAgIyAgICAgICAgICAgICAzPW9wZW5pbmcgYmxvY2sgYnJhY2UgIDQ9Y2xvc2luZyBibG9jayBicmFjZQogICAgIwogICAgIyAgIFsxXSBmbGFnOiBpZiBvcGVuaW5nOiAxPW5vIG11bHRpcGxlIHN0ZXBzLCAyPW11bHRpcGxlIHN0ZXBzIG9rCiAgICAjICAgICAgICAgICAgIGlmIGNsb3Npbmc6IHNwYWNlcyBvZiBwYWRkaW5nIHRvIHVzZQogICAgIyAgIFsyXSBzZXF1ZW5jZSBudW1iZXIgb2YgY29udGFpbmVyCiAgICAjICAgWzNdIHZhbGlkIGZsYWc6IGRvIG5vdCBhcHBlbmQgaWYgdGhpcyBmbGFnIGlzIGZhbHNlLiBXaWxsIGJlCiAgICAjICAgICAgIHRydWUgaWYgYXBwcm9wcmlhdGUgLXZ0IGZsYWcgaXMgc2V0LiAgT3RoZXJ3aXNlLCBXaWxsIGJlCiAgICAjICAgICAgIG1hZGUgdHJ1ZSBvbmx5IGZvciAyIGxpbmUgY29udGFpbmVyIGluIHBhcmVucyB3aXRoIC1scAogICAgIwogICAgIyBUaGVzZSBmbGFncyBhcmUgdXNlZCBieSBzdWIgc2V0X2xlYWRpbmdfd2hpdGVzcGFjZSBpbgogICAgIyB0aGUgdmVydGljYWwgYWxpZ25lcgoKICAgIG15ICRydmVydGljYWxfdGlnaHRuZXNzX2ZsYWdzID0gWyAwLCAwLCAwLCAwLCAwLCAwIF07CgogICAgIyBVc2VzIHRoZXNlIHBhcmFtZXRlcnM6CiAgICAjICAgJHJPcHRzX2Jsb2NrX2JyYWNlX3RpZ2h0bmVzcwogICAgIyAgICRyT3B0c19ibG9ja19icmFjZV92ZXJ0aWNhbF90aWdodG5lc3MKICAgICMgICAkck9wdHNfc3RhY2tfY2xvc2luZ19ibG9ja19icmFjZQogICAgIyAgICVvcGVuaW5nX3ZlcnRpY2FsX3RpZ2h0bmVzcwogICAgIyAgICVjbG9zaW5nX3ZlcnRpY2FsX3RpZ2h0bmVzcwogICAgIyAgICVvcGVuaW5nX3Rva2VuX3JpZ2h0CiAgICAjICAgJXN0YWNrX2Nsb3NpbmdfdG9rZW4KICAgICMgICAlc3RhY2tfb3BlbmluZ190b2tlbgoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBWZXJ0aWNhbCBUaWdodG5lc3MgRmxhZ3MgU2VjdGlvbiAxOgogICAgIyBIYW5kbGUgTGluZXMgMSAuLiBuLTEgYnV0IG5vdCB0aGUgbGFzdCBsaW5lCiAgICAjIEZvciBub24tQkxPQ0sgdG9rZW5zLCB3ZSB3aWxsIG5lZWQgdG8gZXhhbWluZSB0aGUgbmV4dCBsaW5lCiAgICAjIHRvbywgc28gd2Ugd29uJ3QgY29uc2lkZXIgdGhlIGxhc3QgbGluZS4KICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgaWYgKCAkbiA8ICRuX2xhc3RfbGluZSApIHsKCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBWZXJ0aWNhbCBUaWdodG5lc3MgRmxhZ3MgU2VjdGlvbiAxYToKICAgICAgICAjIExvb2sgZm9yIFR5cGUgMSwgbGFzdCB0b2tlbiBvZiB0aGlzIGxpbmUgaXMgYSBub24tYmxvY2sgb3BlbmluZyB0b2tlbgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgIG15ICRpYmVnX25leHQgPSAkcmlfZmlyc3QtPlsgJG4gKyAxIF07CiAgICAgICAgbXkgJHRva2VuX2VuZCA9ICR0b2tlbnNfdG9fZ29bJGllbmRdOwogICAgICAgIG15ICRpZW5kX25leHQgPSAkcmlfbGFzdC0+WyAkbiArIDEgXTsKICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICR0eXBlX3NlcXVlbmNlX3RvX2dvWyRpZW5kXQogICAgICAgICAgICAmJiAhJGJsb2NrX3R5cGVfdG9fZ29bJGllbmRdCiAgICAgICAgICAgICYmICRpc19vcGVuaW5nX3Rva2VueyR0b2tlbl9lbmR9CiAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICRvcGVuaW5nX3ZlcnRpY2FsX3RpZ2h0bmVzc3skdG9rZW5fZW5kfSA+IDAKCiAgICAgICAgICAgICAgICAjIGFsbG93IDItbGluZSBtZXRob2QgY2FsbCB0byBiZSBjbG9zZWQgdXAKICAgICAgICAgICAgICAgIHx8ICggICAkck9wdHNfbGluZV91cF9wYXJlbnRoZXNlcwogICAgICAgICAgICAgICAgICAgICYmICR0b2tlbl9lbmQgZXEgJygnCiAgICAgICAgICAgICAgICAgICAgJiYgJGllbmQgPiAkaWJlZwogICAgICAgICAgICAgICAgICAgICYmICR0eXBlc190b19nb1sgJGllbmQgLSAxIF0gbmUgJ2InICkKICAgICAgICAgICAgKQogICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgICMgYXZvaWQgbXVsdGlwbGUganVtcHMgaW4gbmVzdGluZyBkZXB0aCBpbiBvbmUgbGluZSBpZgogICAgICAgICAgICAjIHJlcXVlc3RlZAogICAgICAgICAgICBteSAkb3Z0ICAgICAgID0gJG9wZW5pbmdfdmVydGljYWxfdGlnaHRuZXNzeyR0b2tlbl9lbmR9OwogICAgICAgICAgICBteSAkaWVuZF9uZXh0ID0gJHJpX2xhc3QtPlsgJG4gKyAxIF07CiAgICAgICAgICAgIHVubGVzcyAoCiAgICAgICAgICAgICAgICAkb3Z0IDwgMgogICAgICAgICAgICAgICAgJiYgKCAkbmVzdGluZ19kZXB0aF90b19nb1sgJGllbmRfbmV4dCArIDEgXSAhPQogICAgICAgICAgICAgICAgICAgICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpYmVnX25leHRdICkKICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIElmIC12dCBmbGFnIGhhcyBub3QgYmVlbiBzZXQsIG1hcmsgdGhpcyBhcyBpbnZhbGlkCiAgICAgICAgICAgICAgICAjIGFuZCBhbGlnbmVyIHdpbGwgdmFsaWRhdGUgaXQgaWYgaXQgc2VlcyB0aGUgY2xvc2luZyBwYXJlbgogICAgICAgICAgICAgICAgIyB3aXRoaW4gMiBsaW5lcy4KICAgICAgICAgICAgICAgIG15ICR2YWxpZF9mbGFnID0gJG92dDsKICAgICAgICAgICAgICAgIEB7JHJ2ZXJ0aWNhbF90aWdodG5lc3NfZmxhZ3N9ID0KICAgICAgICAgICAgICAgICAgKCAxLCAkb3Z0LCAkdHlwZV9zZXF1ZW5jZV90b19nb1skaWVuZF0sICR2YWxpZF9mbGFnICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgVmVydGljYWwgVGlnaHRuZXNzIEZsYWdzIFNlY3Rpb24gMWI6CiAgICAgICAgIyBMb29rIGZvciBUeXBlIDIsIGZpcnN0IHRva2VuIG9mIG5leHQgbGluZSBpcyBhIG5vbi1ibG9jayBjbG9zaW5nCiAgICAgICAgIyB0b2tlbiAuLiBhbmQgYmUgc3VyZSB0aGlzIGxpbmUgZG9lcyBub3QgaGF2ZSBhIHNpZGUgY29tbWVudAogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgIG15ICR0b2tlbl9uZXh0ID0gJHRva2Vuc190b19nb1skaWJlZ19uZXh0XTsKICAgICAgICBpZiAoICAgJHR5cGVfc2VxdWVuY2VfdG9fZ29bJGliZWdfbmV4dF0KICAgICAgICAgICAgJiYgISRibG9ja190eXBlX3RvX2dvWyRpYmVnX25leHRdCiAgICAgICAgICAgICYmICRpc19jbG9zaW5nX3Rva2VueyR0b2tlbl9uZXh0fQogICAgICAgICAgICAmJiAkdHlwZXNfdG9fZ29bJGllbmRdIG5lICcjJyApICAgICMgZm9yIHNhZmV0eSwgc2hvdWxkbid0IGhhcHBlbiEKICAgICAgICB7CiAgICAgICAgICAgIG15ICRvdnQgPSAkb3BlbmluZ192ZXJ0aWNhbF90aWdodG5lc3N7JHRva2VuX25leHR9OwogICAgICAgICAgICBteSAkY3Z0ID0gJGNsb3NpbmdfdmVydGljYWxfdGlnaHRuZXNzeyR0b2tlbl9uZXh0fTsKICAgICAgICAgICAgaWYgKAoKICAgICAgICAgICAgICAgICMgTmV2ZXIgYXBwZW5kIGEgdHJhaWxpbmcgbGluZSBsaWtlICAgJyktPnBhY2soJyBiZWNhdXNlIGl0CiAgICAgICAgICAgICAgICAjIHdpbGwgdGhyb3cgb2ZmIGxhdGVyIGFsaWdubWVudC4gIFNvIHRoaXMgbGluZSBtdXN0IHN0YXJ0IGF0IGEKICAgICAgICAgICAgICAgICMgZGVlcGVyIGxldmVsIHRoYW4gdGhlIG5leHQgbGluZSAoZml4MSBmb3Igd2VsZGluZywgZ2l0ICM0NSkuCiAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGliZWdfbmV4dF0gPj0KICAgICAgICAgICAgICAgICAgICAkbmVzdGluZ19kZXB0aF90b19nb1sgJGllbmRfbmV4dCArIDEgXSArIDEKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICAgICAkY3Z0ID09IDIKICAgICAgICAgICAgICAgICAgICB8fCAoCiAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXJfZW52aXJvbm1lbnRfdG9fZ29bJGliZWdfbmV4dF0gbmUgJ0xJU1QnCiAgICAgICAgICAgICAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjdnQgPT0gMQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsb3cgY2xvc2luZyB1cCAyLWxpbmUgbWV0aG9kIGNhbGxzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoICAgJHJPcHRzX2xpbmVfdXBfcGFyZW50aGVzZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdG9rZW5fbmV4dCBlcSAnKScgKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICMgZGVjaWRlIHdoaWNoIHRyYWlsaW5nIGNsb3NpbmcgdG9rZW5zIHRvIGFwcGVuZC4uCiAgICAgICAgICAgICAgICBteSAkb2sgPSAwOwogICAgICAgICAgICAgICAgaWYgKCAkY3Z0ID09IDIgfHwgJGllbmRfbmV4dCA9PSAkaWJlZ19uZXh0ICkgeyAkb2sgPSAxIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIG15ICRzdHIgPSBqb2luKCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgQHR5cGVzX3RvX2dvWyAkaWJlZ19uZXh0ICsgMSAuLiAkaWJlZ19uZXh0ICsgMiBdICk7CgogICAgICAgICAgICAgICAgICAgICMgYXBwZW5kIGNsb3NpbmcgdG9rZW4gaWYgZm9sbG93ZWQgYnkgY29tbWVudCBvciAnOycKICAgICAgICAgICAgICAgICAgICAjIG9yIGFub3RoZXIgY2xvc2luZyB0b2tlbiAoZml4MiBmb3Igd2VsZGluZywgZ2l0ICM0NSkKICAgICAgICAgICAgICAgICAgICBpZiAoICRzdHIgPX4gL15iP1tcKVxdXH1SIztdLyApIHsgJG9rID0gMSB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCRvaykgewogICAgICAgICAgICAgICAgICAgIG15ICR2YWxpZF9mbGFnID0gJGN2dDsKICAgICAgICAgICAgICAgICAgICBAeyRydmVydGljYWxfdGlnaHRuZXNzX2ZsYWdzfSA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgMiwKICAgICAgICAgICAgICAgICAgICAgICAgJHRpZ2h0bmVzc3skdG9rZW5fbmV4dH0gPT0gMiA/IDAgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAkdHlwZV9zZXF1ZW5jZV90b19nb1skaWJlZ19uZXh0XSwgJHZhbGlkX2ZsYWcsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBWZXJ0aWNhbCBUaWdodG5lc3MgRmxhZ3MgU2VjdGlvbiAxYzoKICAgICAgICAjIEltcGxlbWVudCB0aGUgT3BlbmluZyBUb2tlbiBSaWdodCBmbGFnIChUeXBlIDIpLi4KICAgICAgICAjIElmIHJlcXVlc3RlZCwgbW92ZSBhbiBpc29sYXRlZCB0cmFpbGluZyBvcGVuaW5nIHRva2VuIHRvIHRoZSBlbmQgb2YKICAgICAgICAjIHRoZSBwcmV2aW91cyBsaW5lIHdoaWNoIGVuZGVkIGluIGEgY29tbWEuICBXZSBjb3VsZCBkbyB0aGlzCiAgICAgICAgIyBpbiBzdWIgcmVjb21iaW5lX2JyZWFrcG9pbnRzIGJ1dCB0aGF0IHdvdWxkIGNhdXNlIHByb2JsZW1zCiAgICAgICAgIyB3aXRoIC1scCBmb3JtYXR0aW5nLiAgVGhlIHByb2JsZW0gaXMgdGhhdCBpbmRlbnRhdGlvbiB3aWxsCiAgICAgICAgIyBxdWlja2x5IG1vdmUgZmFyIHRvIHRoZSByaWdodCBpbiBuZXN0ZWQgZXhwcmVzc2lvbnMuICBCeQogICAgICAgICMgZG9pbmcgaXQgYWZ0ZXIgaW5kZW50YXRpb24gaGFzIGJlZW4gc2V0LCB3ZSBhdm9pZCBjaGFuZ2VzCiAgICAgICAgIyB0byB0aGUgaW5kZW50YXRpb24uICBBY3R1YWwgbW92ZW1lbnQgb2YgdGhlIHRva2VuIHRha2VzIHBsYWNlCiAgICAgICAgIyBpbiBzdWIgdmFsaWduX291dHB1dF9zdGVwX0IuCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgaWYgKAogICAgICAgICAgICAkb3BlbmluZ190b2tlbl9yaWdodHsgJHRva2Vuc190b19nb1skaWJlZ19uZXh0XSB9CgogICAgICAgICAgICAjIHByZXZpb3VzIGxpbmUgaXMgbm90IG9wZW5pbmcKICAgICAgICAgICAgIyAodXNlIC1zb3QgdG8gY29tYmluZSB3aXRoIGl0KQogICAgICAgICAgICAmJiAhJGlzX29wZW5pbmdfdG9rZW57JHRva2VuX2VuZH0KCiAgICAgICAgICAgICMgcHJldmlvdXMgbGluZSBlbmRlZCBpbiBvbmUgb2YgdGhlc2UKICAgICAgICAgICAgIyAoYWRkIG90aGVyIGNhc2VzIGlmIG5lY2Vzc2FyeTsgJz0+JyBhbmQgJy4nIGFyZSBub3QgbmVjZXNzYXJ5CiAgICAgICAgICAgICYmICEkYmxvY2tfdHlwZV90b19nb1skaWJlZ19uZXh0XQoKICAgICAgICAgICAgIyB0aGlzIGlzIGEgbGluZSB3aXRoIGp1c3QgYW4gb3BlbmluZyB0b2tlbgogICAgICAgICAgICAmJiAoICAgJGllbmRfbmV4dCA9PSAkaWJlZ19uZXh0CiAgICAgICAgICAgICAgICB8fCAkaWVuZF9uZXh0ID09ICRpYmVnX25leHQgKyAyCiAgICAgICAgICAgICAgICAmJiAkdHlwZXNfdG9fZ29bJGllbmRfbmV4dF0gZXEgJyMnICkKCiAgICAgICAgICAgICMgbG9va3MgYmFkIGlmIHdlIGFsaWduIHZlcnRpY2FsbHkgd2l0aCB0aGUgd3JvbmcgY29udGFpbmVyCiAgICAgICAgICAgICYmICR0b2tlbnNfdG9fZ29bJGliZWddIG5lICR0b2tlbnNfdG9fZ29bJGliZWdfbmV4dF0KICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICR2YWxpZF9mbGFnID0gMTsKICAgICAgICAgICAgbXkgJHNwYWNlcyAgICAgPSAoICR0eXBlc190b19nb1sgJGliZWdfbmV4dCAtIDEgXSBlcSAnYicgKSA/IDEgOiAwOwogICAgICAgICAgICBAeyRydmVydGljYWxfdGlnaHRuZXNzX2ZsYWdzfSA9CiAgICAgICAgICAgICAgKCAyLCAkc3BhY2VzLCAkdHlwZV9zZXF1ZW5jZV90b19nb1skaWJlZ19uZXh0XSwgJHZhbGlkX2ZsYWcsICk7CiAgICAgICAgfQoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIFZlcnRpY2FsIFRpZ2h0bmVzcyBGbGFncyBTZWN0aW9uIDFkOgogICAgICAgICMgU3RhY2tpbmcgb2Ygb3BlbmluZyBhbmQgY2xvc2luZyB0b2tlbnMgKFR5cGUgMikKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBteSAkc3RhY2thYmxlOwogICAgICAgIG15ICR0b2tlbl9iZWdfbmV4dCA9ICR0b2tlbnNfdG9fZ29bJGliZWdfbmV4dF07CgogICAgICAgICMgcGF0Y2ggdG8gbWFrZSBzb21ldGhpbmcgbGlrZSAncXcoJyBiZWhhdmUgbGlrZSBhbiBvcGVuaW5nIHBhcmVuCiAgICAgICAgIyAoYXJhbi50KQogICAgICAgIGlmICggJHR5cGVzX3RvX2dvWyRpYmVnX25leHRdIGVxICdxJyApIHsKICAgICAgICAgICAgaWYgKCAkdG9rZW5fYmVnX25leHQgPX4gL15xd1xzKihbXFtcKFx7XSkkLyApIHsKICAgICAgICAgICAgICAgICR0b2tlbl9iZWdfbmV4dCA9ICQxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICAgJGlzX2Nsb3NpbmdfdG9rZW57JHRva2VuX2VuZH0KICAgICAgICAgICAgJiYgJGlzX2Nsb3NpbmdfdG9rZW57JHRva2VuX2JlZ19uZXh0fSApCiAgICAgICAgewogICAgICAgICAgICAkc3RhY2thYmxlID0gJHN0YWNrX2Nsb3NpbmdfdG9rZW57JHRva2VuX2JlZ19uZXh0fQogICAgICAgICAgICAgIHVubGVzcyAoICRibG9ja190eXBlX3RvX2dvWyRpYmVnX25leHRdICkKICAgICAgICAgICAgICA7ICAgICMgc2hvdWxkbid0IGhhcHBlbjsganVzdCBjaGVja2luZwogICAgICAgIH0KICAgICAgICBlbHNpZiAoJGlzX29wZW5pbmdfdG9rZW57JHRva2VuX2VuZH0KICAgICAgICAgICAgJiYgJGlzX29wZW5pbmdfdG9rZW57JHRva2VuX2JlZ19uZXh0fSApCiAgICAgICAgewogICAgICAgICAgICAkc3RhY2thYmxlID0gJHN0YWNrX29wZW5pbmdfdG9rZW57JHRva2VuX2JlZ19uZXh0fQogICAgICAgICAgICAgIHVubGVzcyAoICRibG9ja190eXBlX3RvX2dvWyRpYmVnX25leHRdICkKICAgICAgICAgICAgICA7ICAgICMgc2hvdWxkbid0IGhhcHBlbjsganVzdCBjaGVja2luZwogICAgICAgIH0KCiAgICAgICAgaWYgKCRzdGFja2FibGUpIHsKCiAgICAgICAgICAgIG15ICRpc19zZW1pY29sb25fdGVybWluYXRlZDsKICAgICAgICAgICAgaWYgKCAkbiArIDEgPT0gJG5fbGFzdF9saW5lICkgewogICAgICAgICAgICAgICAgbXkgKCAkdGVybWluYWxfdHlwZSwgJGlfdGVybWluYWwgKSA9CiAgICAgICAgICAgICAgICAgIHRlcm1pbmFsX3R5cGVfaSggJGliZWdfbmV4dCwgJGllbmRfbmV4dCApOwogICAgICAgICAgICAgICAgJGlzX3NlbWljb2xvbl90ZXJtaW5hdGVkID0gJHRlcm1pbmFsX3R5cGUgZXEgJzsnCiAgICAgICAgICAgICAgICAgICYmICRuZXN0aW5nX2RlcHRoX3RvX2dvWyRpZW5kX25leHRdIDwKICAgICAgICAgICAgICAgICAgJG5lc3RpbmdfZGVwdGhfdG9fZ29bJGliZWdfbmV4dF07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdGhpcyBtdXN0IGJlIGEgbGluZSB3aXRoIGp1c3QgYW4gb3BlbmluZyB0b2tlbgogICAgICAgICAgICAjIG9yIGVuZCBpbiBhIHNlbWljb2xvbgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkaXNfc2VtaWNvbG9uX3Rlcm1pbmF0ZWQKICAgICAgICAgICAgICAgIHx8ICggICAkaWVuZF9uZXh0ID09ICRpYmVnX25leHQKICAgICAgICAgICAgICAgICAgICB8fCAkaWVuZF9uZXh0ID09ICRpYmVnX25leHQgKyAyCiAgICAgICAgICAgICAgICAgICAgJiYgJHR5cGVzX3RvX2dvWyRpZW5kX25leHRdIGVxICcjJyApCiAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBteSAkdmFsaWRfZmxhZyA9IDE7CiAgICAgICAgICAgICAgICBteSAkc3BhY2VzID0gKCAkdHlwZXNfdG9fZ29bICRpYmVnX25leHQgLSAxIF0gZXEgJ2InICkgPyAxIDogMDsKICAgICAgICAgICAgICAgIEB7JHJ2ZXJ0aWNhbF90aWdodG5lc3NfZmxhZ3N9ID0KICAgICAgICAgICAgICAgICAgKCAyLCAkc3BhY2VzLCAkdHlwZV9zZXF1ZW5jZV90b19nb1skaWJlZ19uZXh0XSwgJHZhbGlkX2ZsYWcsCiAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIFZlcnRpY2FsIFRpZ2h0bmVzcyBGbGFncyBTZWN0aW9uIDI6CiAgICAjIEhhbmRsZSB0eXBlIDMsIG9wZW5pbmcgYmxvY2sgYnJhY2VzIG9uIGxhc3QgbGluZSBvZiB0aGUgYmF0Y2gKICAgICMgQ2hlY2sgZm9yIGEgbGFzdCBsaW5lIHdpdGggaXNvbGF0ZWQgb3BlbmluZyBCTE9DSyBjdXJseQogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBlbHNpZiAoJHJPcHRzX2Jsb2NrX2JyYWNlX3ZlcnRpY2FsX3RpZ2h0bmVzcwogICAgICAgICYmICRpYmVnIGVxICRpZW5kCiAgICAgICAgJiYgJHR5cGVzX3RvX2dvWyRpZW5kXSBlcSAneycKICAgICAgICAmJiAkYmxvY2tfdHlwZV90b19nb1skaWVuZF0gPX4KICAgICAgICAvJGJsb2NrX2JyYWNlX3ZlcnRpY2FsX3RpZ2h0bmVzc19wYXR0ZXJuLyApCiAgICB7CiAgICAgICAgQHskcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFnc30gPQogICAgICAgICAgKCAzLCAkck9wdHNfYmxvY2tfYnJhY2VfdmVydGljYWxfdGlnaHRuZXNzLCAwLCAxICk7CiAgICB9CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIFZlcnRpY2FsIFRpZ2h0bmVzcyBGbGFncyBTZWN0aW9uIDM6CiAgICAjIEhhbmRsZSB0eXBlIDQsIGEgY2xvc2luZyBibG9jayBicmFjZSBvbiB0aGUgbGFzdCBsaW5lIG9mIHRoZSBiYXRjaCBDaGVjawogICAgIyBmb3IgYSBsYXN0IGxpbmUgd2l0aCBpc29sYXRlZCBjbG9zaW5nIEJMT0NLIGN1cmx5CiAgICAjIFBhdGNoOiBhZGRlZCBhIGNoZWNrIGZvciBhbnkgbmV3IGNsb3Npbmcgc2lkZSBjb21tZW50IHdoaWNoIHRoZQogICAgIyAtY3NjIG9wdGlvbiBtYXkgZ2VuZXJhdGUuIElmIGl0IGV4aXN0cywgdGhlcmUgd2lsbCBiZSBhIHNpZGUgY29tbWVudAogICAgIyBzbyB3ZSBjYW5ub3QgY29tYmluZSB3aXRoIGEgYnJhY2Ugb24gdGhlIG5leHQgbGluZS4gIFRoaXMgaXNzdWUKICAgICMgb2NjdXJzIGZvciB0aGUgY29tYmluYXRpb24gLXNjYmIgYW5kIC1jc2MgaXMgdXNlZC4KICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgZWxzaWYgKCRyT3B0c19zdGFja19jbG9zaW5nX2Jsb2NrX2JyYWNlCiAgICAgICAgJiYgJGliZWcgZXEgJGllbmQKICAgICAgICAmJiAkYmxvY2tfdHlwZV90b19nb1skaWVuZF0KICAgICAgICAmJiAkdHlwZXNfdG9fZ29bJGllbmRdIGVxICd9JwogICAgICAgICYmICggISRjbG9zaW5nX3NpZGVfY29tbWVudCB8fCAkbiA8ICRuX2xhc3RfbGluZSApICkKICAgIHsKICAgICAgICBteSAkc3BhY2VzID0gJHJPcHRzX2Jsb2NrX2JyYWNlX3RpZ2h0bmVzcyA9PSAyID8gMCA6IDE7CiAgICAgICAgQHskcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFnc30gPQogICAgICAgICAgKCA0LCAkc3BhY2VzLCAkdHlwZV9zZXF1ZW5jZV90b19nb1skaWVuZF0sIDEgKTsKICAgIH0KCiAgICAjIHBhY2sgaW4gdGhlIHNlcXVlbmNlIG51bWJlcnMgb2YgdGhlIGVuZHMgb2YgdGhpcyBsaW5lCiAgICBteSAkc2Vxbm9fYmVnID0gJHR5cGVfc2VxdWVuY2VfdG9fZ29bJGliZWddOwogICAgaWYgKCAhJHNlcW5vX2JlZyAmJiAkdHlwZXNfdG9fZ29bJGliZWddIGVxICdxJyApIHsKICAgICAgICAkc2Vxbm9fYmVnID0gJHNlbGYtPmdldF9zZXFubyggJGliZWcsICRlbmRpbmdfaW5fcXVvdGUgKTsKICAgIH0KICAgIG15ICRzZXFub19lbmQgPSAkdHlwZV9zZXF1ZW5jZV90b19nb1skaWVuZF07CiAgICBpZiAoICEkc2Vxbm9fZW5kICYmICR0eXBlc190b19nb1skaWVuZF0gZXEgJ3EnICkgewogICAgICAgICRzZXFub19lbmQgPSAkc2VsZi0+Z2V0X3NlcW5vKCAkaWVuZCwgJGVuZGluZ19pbl9xdW90ZSApOwogICAgfQogICAgJHJ2ZXJ0aWNhbF90aWdodG5lc3NfZmxhZ3MtPls0XSA9ICRzZXFub19iZWc7CiAgICAkcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFncy0+WzVdID0gJHNlcW5vX2VuZDsKICAgIHJldHVybiAkcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFnczsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIENPREUgU0VDVElPTiAxNDogQ29kZSBmb3IgY3JlYXRpbmcgY2xvc2luZyBzaWRlIGNvbW1lbnRzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnsgICAgIyMgYmVnaW4gY2xvc3VyZSBhY2N1bXVsYXRlX2NzY190ZXh0CgojIFRoZXNlIHJvdXRpbmVzIGFyZSBjYWxsZWQgb25jZSBwZXIgYmF0Y2ggd2hlbiB0aGUgLS1jbG9zaW5nLXNpZGUtY29tbWVudHMgZmxhZwojIGhhcyBiZWVuIHNldC4KCiAgICBteSAlYmxvY2tfbGVhZGluZ190ZXh0OwogICAgbXkgJWJsb2NrX29wZW5pbmdfbGluZV9udW1iZXI7CiAgICBteSAkY3NjX25ld19zdGF0ZW1lbnRfb2s7CiAgICBteSAkY3NjX2xhc3RfbGFiZWw7CiAgICBteSAlY3NjX2Jsb2NrX2xhYmVsOwogICAgbXkgJGFjY3VtdWxhdGluZ190ZXh0X2Zvcl9ibG9jazsKICAgIG15ICRsZWFkaW5nX2Jsb2NrX3RleHQ7CiAgICBteSAkcmxlYWRpbmdfYmxvY2tfaWZfZWxzaWZfdGV4dDsKICAgIG15ICRsZWFkaW5nX2Jsb2NrX3RleHRfbGV2ZWw7CiAgICBteSAkbGVhZGluZ19ibG9ja190ZXh0X2xlbmd0aF9leGNlZWRlZDsKICAgIG15ICRsZWFkaW5nX2Jsb2NrX3RleHRfbGluZV9sZW5ndGg7CiAgICBteSAkbGVhZGluZ19ibG9ja190ZXh0X2xpbmVfbnVtYmVyOwoKICAgIHN1YiBpbml0aWFsaXplX2NzY192YXJzIHsKICAgICAgICAlYmxvY2tfbGVhZGluZ190ZXh0ICAgICAgICAgICA9ICgpOwogICAgICAgICVibG9ja19vcGVuaW5nX2xpbmVfbnVtYmVyICAgID0gKCk7CiAgICAgICAgJGNzY19uZXdfc3RhdGVtZW50X29rICAgICAgICAgPSAxOwogICAgICAgICRjc2NfbGFzdF9sYWJlbCAgICAgICAgICAgICAgID0gIiI7CiAgICAgICAgJWNzY19ibG9ja19sYWJlbCAgICAgICAgICAgICAgPSAoKTsKICAgICAgICAkcmxlYWRpbmdfYmxvY2tfaWZfZWxzaWZfdGV4dCA9IFtdOwogICAgICAgICRhY2N1bXVsYXRpbmdfdGV4dF9mb3JfYmxvY2sgID0gIiI7CiAgICAgICAgcmVzZXRfYmxvY2tfdGV4dF9hY2N1bXVsYXRvcigpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgcmVzZXRfYmxvY2tfdGV4dF9hY2N1bXVsYXRvciB7CgogICAgICAgICMgc2F2ZSB0ZXh0IGFmdGVyICdpZicgYW5kICdlbHNpZicgdG8gYXBwZW5kIGFmdGVyICdlbHNlJwogICAgICAgIGlmICgkYWNjdW11bGF0aW5nX3RleHRfZm9yX2Jsb2NrKSB7CgogICAgICAgICAgICBpZiAoICRhY2N1bXVsYXRpbmdfdGV4dF9mb3JfYmxvY2sgPX4gL14oaWZ8ZWxzaWYpJC8gKSB7CiAgICAgICAgICAgICAgICBwdXNoIEB7JHJsZWFkaW5nX2Jsb2NrX2lmX2Vsc2lmX3RleHR9LCAkbGVhZGluZ19ibG9ja190ZXh0OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRhY2N1bXVsYXRpbmdfdGV4dF9mb3JfYmxvY2sgICAgICAgID0gIiI7CiAgICAgICAgJGxlYWRpbmdfYmxvY2tfdGV4dCAgICAgICAgICAgICAgICAgPSAiIjsKICAgICAgICAkbGVhZGluZ19ibG9ja190ZXh0X2xldmVsICAgICAgICAgICA9IDA7CiAgICAgICAgJGxlYWRpbmdfYmxvY2tfdGV4dF9sZW5ndGhfZXhjZWVkZWQgPSAwOwogICAgICAgICRsZWFkaW5nX2Jsb2NrX3RleHRfbGluZV9udW1iZXIgICAgID0gMDsKICAgICAgICAkbGVhZGluZ19ibG9ja190ZXh0X2xpbmVfbGVuZ3RoICAgICA9IDA7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBzZXRfYmxvY2tfdGV4dF9hY2N1bXVsYXRvciB7CiAgICAgICAgbXkgKCAkc2VsZiwgJGkgKSA9IEBfOwogICAgICAgICRhY2N1bXVsYXRpbmdfdGV4dF9mb3JfYmxvY2sgPSAkdG9rZW5zX3RvX2dvWyRpXTsKICAgICAgICBpZiAoICRhY2N1bXVsYXRpbmdfdGV4dF9mb3JfYmxvY2sgIX4gL15lbHMvICkgewogICAgICAgICAgICAkcmxlYWRpbmdfYmxvY2tfaWZfZWxzaWZfdGV4dCA9IFtdOwogICAgICAgIH0KICAgICAgICAkbGVhZGluZ19ibG9ja190ZXh0ICAgICAgICAgICAgICAgICA9ICIiOwogICAgICAgICRsZWFkaW5nX2Jsb2NrX3RleHRfbGV2ZWwgICAgICAgICAgID0gJGxldmVsc190b19nb1skaV07CiAgICAgICAgJGxlYWRpbmdfYmxvY2tfdGV4dF9saW5lX251bWJlciAgICAgPSAkc2VsZi0+Z2V0X291dHB1dF9saW5lX251bWJlcigpOwogICAgICAgICRsZWFkaW5nX2Jsb2NrX3RleHRfbGVuZ3RoX2V4Y2VlZGVkID0gMDsKCiAgICAgICAgIyB0aGlzIHdpbGwgY29udGFpbiB0aGUgY29sdW1uIG51bWJlciBvZiB0aGUgbGFzdCBjaGFyYWN0ZXIKICAgICAgICAjIG9mIHRoZSBjbG9zaW5nIHNpZGUgY29tbWVudAogICAgICAgICRsZWFkaW5nX2Jsb2NrX3RleHRfbGluZV9sZW5ndGggPQogICAgICAgICAgbGVuZ3RoKCRjc2NfbGFzdF9sYWJlbCkgKwogICAgICAgICAgbGVuZ3RoKCRhY2N1bXVsYXRpbmdfdGV4dF9mb3JfYmxvY2spICsKICAgICAgICAgIGxlbmd0aCggJHJPcHRzLT57J2Nsb3Npbmctc2lkZS1jb21tZW50LXByZWZpeCd9ICkgKwogICAgICAgICAgJGxlYWRpbmdfYmxvY2tfdGV4dF9sZXZlbCAqICRyT3B0c19pbmRlbnRfY29sdW1ucyArIDM7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBhY2N1bXVsYXRlX2Jsb2NrX3RleHQgewogICAgICAgIG15ICggJHNlbGYsICRpICkgPSBAXzsKCiAgICAgICAgIyBhY2N1bXVsYXRlIGxlYWRpbmcgdGV4dCBmb3IgLWNzYywgaWdub3JpbmcgYW55IHNpZGUgY29tbWVudHMKICAgICAgICBpZiAoICAgJGFjY3VtdWxhdGluZ190ZXh0X2Zvcl9ibG9jawogICAgICAgICAgICAmJiAhJGxlYWRpbmdfYmxvY2tfdGV4dF9sZW5ndGhfZXhjZWVkZWQKICAgICAgICAgICAgJiYgJHR5cGVzX3RvX2dvWyRpXSBuZSAnIycgKQogICAgICAgIHsKCiAgICAgICAgICAgIG15ICRhZGRlZF9sZW5ndGggPSAkdG9rZW5fbGVuZ3Roc190b19nb1skaV07CiAgICAgICAgICAgICRhZGRlZF9sZW5ndGggKz0gMSBpZiAkaSA9PSAwOwogICAgICAgICAgICBteSAkbmV3X2xpbmVfbGVuZ3RoID0KICAgICAgICAgICAgICAkbGVhZGluZ19ibG9ja190ZXh0X2xpbmVfbGVuZ3RoICsgJGFkZGVkX2xlbmd0aDsKCiAgICAgICAgICAgICMgd2UgY2FuIGFkZCB0aGlzIHRleHQgaWYgd2UgZG9uJ3QgZXhjZWVkIHNvbWUgbGltaXRzLi4KICAgICAgICAgICAgaWYgKAoKICAgICAgICAgICAgICAgICMgd2UgbXVzdCBub3QgaGF2ZSBhbHJlYWR5IGV4Y2VlZGVkIHRoZSB0ZXh0IGxlbmd0aCBsaW1pdAogICAgICAgICAgICAgICAgbGVuZ3RoKCRsZWFkaW5nX2Jsb2NrX3RleHQpIDwKICAgICAgICAgICAgICAgICRyT3B0c19jbG9zaW5nX3NpZGVfY29tbWVudF9tYXhpbXVtX3RleHQKCiAgICAgICAgICAgICAgICAjIGFuZCBlaXRoZXI6CiAgICAgICAgICAgICAgICAjIHRoZSBuZXcgdG90YWwgbGluZSBsZW5ndGggbXVzdCBiZSBiZWxvdyB0aGUgbGluZSBsZW5ndGggbGltaXQKICAgICAgICAgICAgICAgICMgb3IgdGhlIG5ldyBsZW5ndGggbXVzdCBiZSBiZWxvdyB0aGUgdGV4dCBsZW5ndGggbGltaXQKICAgICAgICAgICAgICAgICMgKGllLCB3ZSBtYXkgYWxsb3cgb25lIHRva2VuIHRvIGV4Y2VlZCB0aGUgdGV4dCBsZW5ndGggbGltaXQpCiAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgJG5ld19saW5lX2xlbmd0aCA8CiAgICAgICAgICAgICAgICAgICAgJG1heGltdW1fbGluZV9sZW5ndGhbJGxlYWRpbmdfYmxvY2tfdGV4dF9sZXZlbF0KCiAgICAgICAgICAgICAgICAgICAgfHwgbGVuZ3RoKCRsZWFkaW5nX2Jsb2NrX3RleHQpICsgJGFkZGVkX2xlbmd0aCA8CiAgICAgICAgICAgICAgICAgICAgJHJPcHRzX2Nsb3Npbmdfc2lkZV9jb21tZW50X21heGltdW1fdGV4dAogICAgICAgICAgICAgICAgKQoKICAgICAgICAgICAgICAgIyBVTkxFU1M6IHdlIGFyZSBhZGRpbmcgYSBjbG9zaW5nIHBhcmVuIGJlZm9yZSB0aGUgYnJhY2Ugd2Ugc2Vlay4KICAgICAgICAgICAgICAgIyBUaGlzIGlzIGFuIGF0dGVtcHQgdG8gYXZvaWQgc2l0dWF0aW9ucyB3aGVyZSB0aGUgLi4uIHRvIGJlCiAgICAgICAgICAgICAgICMgYWRkZWQgYXJlIGxvbmdlciB0aGFuIHRoZSBvbWl0dGVkIHJpZ2h0IHBhcmVuLCBhcyBpbjoKCiAgICAgICAgICAgICAjICAgZm9yZWFjaCBteSAkaXRlbSAoQGFfcmF0aGVyX2xvbmdfdmFyaWFibGVfbmFtZV9oZXJlKSB7CiAgICAgICAgICAgICAjICAgICAgJndoYXRldmVyOwogICAgICAgICAgICAgIyAgIH0gIyMgZW5kIGZvcmVhY2ggbXkgJGl0ZW0gKEBhX3JhdGhlcl9sb25nX3ZhcmlhYmxlX25hbWVfaGVyZS4uLgoKICAgICAgICAgICAgICAgIHx8ICgKICAgICAgICAgICAgICAgICAgICAkdG9rZW5zX3RvX2dvWyRpXSBlcSAnKScKICAgICAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpICsgMSA8PSAkbWF4X2luZGV4X3RvX2dvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkYmxvY2tfdHlwZV90b19nb1sgJGkgKyAxIF0gZXEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhY2N1bXVsYXRpbmdfdGV4dF9mb3JfYmxvY2sKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICB8fCAoICAgJGkgKyAyIDw9ICRtYXhfaW5kZXhfdG9fZ28KICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICRibG9ja190eXBlX3RvX2dvWyAkaSArIDIgXSBlcQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFjY3VtdWxhdGluZ190ZXh0X2Zvcl9ibG9jayApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICMgYWRkIGFuIGV4dHJhIHNwYWNlIGF0IGVhY2ggbmV3bGluZQogICAgICAgICAgICAgICAgaWYgKCAkaSA9PSAwICkgeyAkbGVhZGluZ19ibG9ja190ZXh0IC49ICcgJyB9CgogICAgICAgICAgICAgICAgIyBhZGQgdGhlIHRva2VuIHRleHQKICAgICAgICAgICAgICAgICRsZWFkaW5nX2Jsb2NrX3RleHQgLj0gJHRva2Vuc190b19nb1skaV07CiAgICAgICAgICAgICAgICAkbGVhZGluZ19ibG9ja190ZXh0X2xpbmVfbGVuZ3RoID0gJG5ld19saW5lX2xlbmd0aDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzaG93IHRoYXQgdGV4dCB3YXMgdHJ1bmNhdGVkIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICBlbHNpZiAoICR0eXBlc190b19nb1skaV0gbmUgJ2InICkgewogICAgICAgICAgICAgICAgJGxlYWRpbmdfYmxvY2tfdGV4dF9sZW5ndGhfZXhjZWVkZWQgPSAxOwogICAgICAgICAgICAgICAgJGxlYWRpbmdfYmxvY2tfdGV4dCAuPSAnLi4uJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3ViIGFjY3VtdWxhdGVfY3NjX3RleHQgewoKICAgICAgICBteSAoJHNlbGYpID0gQF87CgogICAgICAgICMgY2FsbGVkIG9uY2UgcGVyIG91dHB1dCBidWZmZXIgd2hlbiAtY3NjIGlzIHVzZWQuIEFjY3VtdWxhdGVzCiAgICAgICAgIyB0aGUgdGV4dCBwbGFjZWQgYWZ0ZXIgY2VydGFpbiBjbG9zaW5nIGJsb2NrIGJyYWNlcy4KICAgICAgICAjIERlZmluZXMgYW5kIHJldHVybnMgdGhlIGZvbGxvd2luZyBmb3IgdGhpcyBidWZmZXI6CgogICAgICAgIG15ICRibG9ja19sZWFkaW5nX3RleHQgPSAiIjsgICAgIyB0aGUgbGVhZGluZyB0ZXh0IG9mIHRoZSBsYXN0ICd9JwogICAgICAgIG15ICRyYmxvY2tfbGVhZGluZ19pZl9lbHNpZl90ZXh0OwogICAgICAgIG15ICRpX2Jsb2NrX2xlYWRpbmdfdGV4dCA9CiAgICAgICAgICAtMTsgICAgIyBpbmRleCBvZiB0b2tlbiBvd25pbmcgYmxvY2tfbGVhZGluZ190ZXh0CiAgICAgICAgbXkgJGJsb2NrX2xpbmVfY291bnQgICAgPSAxMDA7ICAgICMgaG93IG1hbnkgbGluZXMgdGhlIGJsb2NrIHNwYW5zCiAgICAgICAgbXkgJHRlcm1pbmFsX3R5cGUgICAgICAgPSAnYic7ICAgICMgdHlwZSBvZiBsYXN0IG5vbmJsYW5rIHRva2VuCiAgICAgICAgbXkgJGlfdGVybWluYWwgICAgICAgICAgPSAwOyAgICAgICMgaW5kZXggb2YgbGFzdCBub25ibGFuayB0b2tlbgogICAgICAgIG15ICR0ZXJtaW5hbF9ibG9ja190eXBlID0gIiI7CgogICAgICAgICMgdXBkYXRlIG1vc3QgcmVjZW50IHN0YXRlbWVudCBsYWJlbAogICAgICAgICRjc2NfbGFzdF9sYWJlbCA9ICIiIHVubGVzcyAoJGNzY19sYXN0X2xhYmVsKTsKICAgICAgICBpZiAoICR0eXBlc190b19nb1swXSBlcSAnSicgKSB7ICRjc2NfbGFzdF9sYWJlbCA9ICR0b2tlbnNfdG9fZ29bMF0gfQogICAgICAgIG15ICRibG9ja19sYWJlbCA9ICRjc2NfbGFzdF9sYWJlbDsKCiAgICAgICAgIyBMb29wIG92ZXIgYWxsIHRva2VucyBvZiB0aGlzIGJhdGNoCiAgICAgICAgZm9yIG15ICRpICggMCAuLiAkbWF4X2luZGV4X3RvX2dvICkgewogICAgICAgICAgICBteSAkdHlwZSAgICAgICA9ICR0eXBlc190b19nb1skaV07CiAgICAgICAgICAgIG15ICRibG9ja190eXBlID0gJGJsb2NrX3R5cGVfdG9fZ29bJGldOwogICAgICAgICAgICBteSAkdG9rZW4gICAgICA9ICR0b2tlbnNfdG9fZ29bJGldOwoKICAgICAgICAgICAgIyByZW1lbWJlciBsYXN0IG5vbmJsYW5rIHRva2VuIHR5cGUKICAgICAgICAgICAgaWYgKCAkdHlwZSBuZSAnIycgJiYgJHR5cGUgbmUgJ2InICkgewogICAgICAgICAgICAgICAgJHRlcm1pbmFsX3R5cGUgICAgICAgPSAkdHlwZTsKICAgICAgICAgICAgICAgICR0ZXJtaW5hbF9ibG9ja190eXBlID0gJGJsb2NrX3R5cGU7CiAgICAgICAgICAgICAgICAkaV90ZXJtaW5hbCAgICAgICAgICA9ICRpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkdHlwZV9zZXF1ZW5jZSA9ICR0eXBlX3NlcXVlbmNlX3RvX2dvWyRpXTsKICAgICAgICAgICAgaWYgKCAkYmxvY2tfdHlwZSAmJiAkdHlwZV9zZXF1ZW5jZSApIHsKCiAgICAgICAgICAgICAgICBpZiAoICR0b2tlbiBlcSAnfScgKSB7CgogICAgICAgICAgICAgICAgICAgICMgcmVzdG9yZSBhbnkgbGVhZGluZyB0ZXh0IHNhdmVkIHdoZW4gd2UgZW50ZXJlZCB0aGlzIGJsb2NrCiAgICAgICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCAkYmxvY2tfbGVhZGluZ190ZXh0eyR0eXBlX3NlcXVlbmNlfSApICkgewogICAgICAgICAgICAgICAgICAgICAgICAoICRibG9ja19sZWFkaW5nX3RleHQsICRyYmxvY2tfbGVhZGluZ19pZl9lbHNpZl90ZXh0ICkKICAgICAgICAgICAgICAgICAgICAgICAgICA9IEB7ICRibG9ja19sZWFkaW5nX3RleHR7JHR5cGVfc2VxdWVuY2V9IH07CiAgICAgICAgICAgICAgICAgICAgICAgICRpX2Jsb2NrX2xlYWRpbmdfdGV4dCA9ICRpOwogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgJGJsb2NrX2xlYWRpbmdfdGV4dHskdHlwZV9zZXF1ZW5jZX07CiAgICAgICAgICAgICAgICAgICAgICAgICRybGVhZGluZ19ibG9ja19pZl9lbHNpZl90ZXh0ID0KICAgICAgICAgICAgICAgICAgICAgICAgICAkcmJsb2NrX2xlYWRpbmdfaWZfZWxzaWZfdGV4dDsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCggJGNzY19ibG9ja19sYWJlbHskdHlwZV9zZXF1ZW5jZX0gKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGJsb2NrX2xhYmVsID0gJGNzY19ibG9ja19sYWJlbHskdHlwZV9zZXF1ZW5jZX07CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkY3NjX2Jsb2NrX2xhYmVseyR0eXBlX3NlcXVlbmNlfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgaWYgd2UgcnVuIGludG8gYSAnfScgdGhlbiB3ZSBwcm9iYWJseSBzdGFydGVkIGFjY3VtdWxhdGluZwogICAgICAgICAgICAgICAgICAgICMgYXQgc29tZXRoaW5nIGxpa2UgYSB0cmFpbGluZyAnaWYnIGNsYXVzZS4ubm8gaGFybSBkb25lLgogICAgICAgICAgICAgICAgICAgIGlmICggICAkYWNjdW11bGF0aW5nX3RleHRfZm9yX2Jsb2NrCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRsZXZlbHNfdG9fZ29bJGldIDw9ICRsZWFkaW5nX2Jsb2NrX3RleHRfbGV2ZWwgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGxldiA9ICRsZXZlbHNfdG9fZ29bJGldOwogICAgICAgICAgICAgICAgICAgICAgICByZXNldF9ibG9ja190ZXh0X2FjY3VtdWxhdG9yKCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQoICRibG9ja19vcGVuaW5nX2xpbmVfbnVtYmVyeyR0eXBlX3NlcXVlbmNlfSApICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRvdXRwdXRfbGluZV9udW1iZXIgPQogICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5nZXRfb3V0cHV0X2xpbmVfbnVtYmVyKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICRibG9ja19saW5lX2NvdW50ID0KICAgICAgICAgICAgICAgICAgICAgICAgICAkb3V0cHV0X2xpbmVfbnVtYmVyIC0KICAgICAgICAgICAgICAgICAgICAgICAgICAkYmxvY2tfb3BlbmluZ19saW5lX251bWJlcnskdHlwZV9zZXF1ZW5jZX0gKyAxOwogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgJGJsb2NrX29wZW5pbmdfbGluZV9udW1iZXJ7JHR5cGVfc2VxdWVuY2V9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgRXJyb3I6IGJsb2NrIG9wZW5pbmcgbGluZSB1bmRlZmluZWQgZm9yIHRoaXMgbGluZS4uCiAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBzaG91bGRuJ3QgYmUgcG9zc2libGUsIGJ1dCBpdCBpcyBub3QgYQogICAgICAgICAgICAgICAgICAgICAgICAjIHNpZ25pZmljYW50IHByb2JsZW0uCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2lmICggJHRva2VuIGVxICd7JyApIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJGxpbmVfbnVtYmVyID0gJHNlbGYtPmdldF9vdXRwdXRfbGluZV9udW1iZXIoKTsKICAgICAgICAgICAgICAgICAgICAkYmxvY2tfb3BlbmluZ19saW5lX251bWJlcnskdHlwZV9zZXF1ZW5jZX0gPSAkbGluZV9udW1iZXI7CgogICAgICAgICAgICAgICAgICAgICMgc2V0IGEgbGFiZWwgZm9yIHRoaXMgYmxvY2ssIGV4Y2VwdCBmb3IKICAgICAgICAgICAgICAgICAgICAjIGEgYmFyZSBibG9jayB3aGljaCBhbHJlYWR5IGhhcyB0aGUgbGFiZWwKICAgICAgICAgICAgICAgICAgICAjIEEgbGFiZWwgY2FuIG9ubHkgYmUgdXNlZCBvbiB0aGUgbmV4dCB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkYmxvY2tfdHlwZSA9fiAvOiQvICkgeyAkY3NjX2xhc3RfbGFiZWwgPSAiIiB9CiAgICAgICAgICAgICAgICAgICAgJGNzY19ibG9ja19sYWJlbHskdHlwZV9zZXF1ZW5jZX0gPSAkY3NjX2xhc3RfbGFiZWw7CiAgICAgICAgICAgICAgICAgICAgJGNzY19sYXN0X2xhYmVsID0gIiI7CgogICAgICAgICAgICAgICAgICAgIGlmICggICAkYWNjdW11bGF0aW5nX3RleHRfZm9yX2Jsb2NrCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRsZXZlbHNfdG9fZ29bJGldID09ICRsZWFkaW5nX2Jsb2NrX3RleHRfbGV2ZWwgKQogICAgICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGFjY3VtdWxhdGluZ190ZXh0X2Zvcl9ibG9jayBlcSAkYmxvY2tfdHlwZSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNhdmUgYW55IGxlYWRpbmcgdGV4dCBiZWZvcmUgd2UgZW50ZXIgdGhpcyBibG9jawogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJsb2NrX2xlYWRpbmdfdGV4dHskdHlwZV9zZXF1ZW5jZX0gPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxlYWRpbmdfYmxvY2tfdGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmxlYWRpbmdfYmxvY2tfaWZfZWxzaWZfdGV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRibG9ja19vcGVuaW5nX2xpbmVfbnVtYmVyeyR0eXBlX3NlcXVlbmNlfSA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsZWFkaW5nX2Jsb2NrX3RleHRfbGluZV9udW1iZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldF9ibG9ja190ZXh0X2FjY3VtdWxhdG9yKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG91bGRuJ3QgaGFwcGVuLCBidXQgbm90IGEgc2VyaW91cyBlcnJvci4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgV2Ugd2VyZSBhY2N1bXVsYXRpbmcgLWNzYyB0ZXh0IGZvciBibG9jayB0eXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICRhY2N1bXVsYXRpbmdfdGV4dF9mb3JfYmxvY2sgYW5kIHVuZXhwZWN0ZWRseQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBlbmNvdW50ZXJlZCBhICd7JyBmb3IgYmxvY2sgdHlwZSAkYmxvY2tfdHlwZS4KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAgICR0eXBlIGVxICdrJwogICAgICAgICAgICAgICAgJiYgJGNzY19uZXdfc3RhdGVtZW50X29rCiAgICAgICAgICAgICAgICAmJiAkaXNfaWZfZWxzaWZfZWxzZV91bmxlc3Nfd2hpbGVfdW50aWxfZm9yX2ZvcmVhY2h7JHRva2VufQogICAgICAgICAgICAgICAgJiYgJHRva2VuID1+IC8kY2xvc2luZ19zaWRlX2NvbW1lbnRfbGlzdF9wYXR0ZXJuLyApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRzZWxmLT5zZXRfYmxvY2tfdGV4dF9hY2N1bXVsYXRvcigkaSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBub3RlOiBpZ25vcmluZyB0eXBlICdxJyBiZWNhdXNlIG9mIHRyaWNrcyBiZWluZyBwbGF5ZWQKICAgICAgICAgICAgICAgICMgd2l0aCAncScgZm9yIGhhbmdpbmcgc2lkZSBjb21tZW50cwogICAgICAgICAgICAgICAgaWYgKCAkdHlwZSBuZSAnYicgJiYgJHR5cGUgbmUgJyMnICYmICR0eXBlIG5lICdxJyApIHsKICAgICAgICAgICAgICAgICAgICAkY3NjX25ld19zdGF0ZW1lbnRfb2sgPQogICAgICAgICAgICAgICAgICAgICAgKCAkYmxvY2tfdHlwZSB8fCAkdHlwZSBlcSAnSicgfHwgJHR5cGUgZXEgJzsnICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoICAgJHR5cGUgZXEgJzsnCiAgICAgICAgICAgICAgICAgICAgJiYgJGFjY3VtdWxhdGluZ190ZXh0X2Zvcl9ibG9jawogICAgICAgICAgICAgICAgICAgICYmICRsZXZlbHNfdG9fZ29bJGldID09ICRsZWFkaW5nX2Jsb2NrX3RleHRfbGV2ZWwgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHJlc2V0X2Jsb2NrX3RleHRfYWNjdW11bGF0b3IoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRzZWxmLT5hY2N1bXVsYXRlX2Jsb2NrX3RleHQoJGkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFRyZWF0IGFuICdlbHNlJyBibG9jayBzcGVjaWFsbHkgYnkgYWRkaW5nIHByZWNlZGluZyAnaWYnIGFuZAogICAgICAgICMgJ2Vsc2lmJyB0ZXh0LiAgT3RoZXJ3aXNlLCB0aGUgJ2VuZCBlbHNlJyBpcyBub3QgaGVscGZ1bCwKICAgICAgICAjIGVzcGVjaWFsbHkgZm9yIGN1ZGRsZWQtZWxzZSBmb3JtYXR0aW5nLgogICAgICAgIGlmICggJHRlcm1pbmFsX2Jsb2NrX3R5cGUgPX4gL15lbHMvICYmICRyYmxvY2tfbGVhZGluZ19pZl9lbHNpZl90ZXh0ICkgewogICAgICAgICAgICAkYmxvY2tfbGVhZGluZ190ZXh0ID0KICAgICAgICAgICAgICAkc2VsZi0+bWFrZV9lbHNlX2NzY190ZXh0KCAkaV90ZXJtaW5hbCwgJHRlcm1pbmFsX2Jsb2NrX3R5cGUsCiAgICAgICAgICAgICAgICAkYmxvY2tfbGVhZGluZ190ZXh0LCAkcmJsb2NrX2xlYWRpbmdfaWZfZWxzaWZfdGV4dCApOwogICAgICAgIH0KCiAgICAgICAgIyBpZiB0aGlzIGxpbmUgZW5kcyBpbiBhIGxhYmVsIHRoZW4gcmVtZW1iZXIgaXQgZm9yIHRoZSBuZXh0IHBhc3MKICAgICAgICAkY3NjX2xhc3RfbGFiZWwgPSAiIjsKICAgICAgICBpZiAoICR0ZXJtaW5hbF90eXBlIGVxICdKJyApIHsKICAgICAgICAgICAgJGNzY19sYXN0X2xhYmVsID0gJHRva2Vuc190b19nb1skaV90ZXJtaW5hbF07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gKCAkdGVybWluYWxfdHlwZSwgJGlfdGVybWluYWwsICRpX2Jsb2NrX2xlYWRpbmdfdGV4dCwKICAgICAgICAgICAgJGJsb2NrX2xlYWRpbmdfdGV4dCwgJGJsb2NrX2xpbmVfY291bnQsICRibG9ja19sYWJlbCApOwogICAgfQoKICAgIHN1YiBtYWtlX2Vsc2VfY3NjX3RleHQgewoKICAgICAgICAjIGNyZWF0ZSBhZGRpdGlvbmFsIC1jc2MgdGV4dCBmb3IgYW4gJ2Vsc2UnIGFuZCBvcHRpb25hbGx5ICdlbHNpZicsCiAgICAgICAgIyBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIHN3aXRjaAogICAgICAgICMKICAgICAgICAjICA9IDAgYWRkICdpZicgdGV4dCB0byB0cmFpbGluZyBlbHNlCiAgICAgICAgIyAgPSAxIHNhbWUgYXMgMCBwbHVzOgogICAgICAgICMgICAgICBhZGQgJ2lmJyB0byAnZWxzaWYncyBpZiBjYW4gZml0IGluIGxpbmUgbGVuZ3RoCiAgICAgICAgIyAgICAgIGFkZCBsYXN0ICdlbHNpZicgdG8gdHJhaWxpbmcgZWxzZSBpZiBjYW4gZml0IGluIG9uZSBsaW5lCiAgICAgICAgIyAgPSAyIHNhbWUgYXMgMSBidXQgZG8gbm90IGNoZWNrIGlmIGV4Y2VlZCBsaW5lIGxlbmd0aAogICAgICAgICMKICAgICAgICAjICRyaWZfZWxzaWZfdGV4dCA9IGEgcmVmZXJlbmNlIHRvIGEgbGlzdCBvZiBhbGwgcHJldmlvdXMgY2xvc2luZwogICAgICAgICMgc2lkZSBjb21tZW50cyBjcmVhdGVkIGZvciB0aGlzIGlmIGJsb2NrCiAgICAgICAgIwogICAgICAgIG15ICggJHNlbGYsICRpX3Rlcm1pbmFsLCAkYmxvY2tfdHlwZSwgJGJsb2NrX2xlYWRpbmdfdGV4dCwKICAgICAgICAgICAgJHJpZl9lbHNpZl90ZXh0ICkKICAgICAgICAgID0gQF87CiAgICAgICAgbXkgJGNzY190ZXh0ID0gJGJsb2NrX2xlYWRpbmdfdGV4dDsKCiAgICAgICAgbXkgJHJPcHRzX2Nsb3Npbmdfc2lkZV9jb21tZW50X2Vsc2VfZmxhZyA9CiAgICAgICAgICAkck9wdHMtPnsnY2xvc2luZy1zaWRlLWNvbW1lbnQtZWxzZS1mbGFnJ307CgogICAgICAgIGlmICggICAkYmxvY2tfdHlwZSBlcSAnZWxzaWYnCiAgICAgICAgICAgICYmICRyT3B0c19jbG9zaW5nX3NpZGVfY29tbWVudF9lbHNlX2ZsYWcgPT0gMCApCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gJGNzY190ZXh0OwogICAgICAgIH0KCiAgICAgICAgbXkgJGNvdW50ID0gQHskcmlmX2Vsc2lmX3RleHR9OwogICAgICAgIHJldHVybiAkY3NjX3RleHQgdW5sZXNzICgkY291bnQpOwoKICAgICAgICBteSAkaWZfdGV4dCA9ICdbIGlmJyAuICRyaWZfZWxzaWZfdGV4dC0+WzBdOwoKICAgICAgICAjIGFsd2F5cyBzaG93IHRoZSBsZWFkaW5nICdpZicgdGV4dCBvbiAnZWxzZScKICAgICAgICBpZiAoICRibG9ja190eXBlIGVxICdlbHNlJyApIHsKICAgICAgICAgICAgJGNzY190ZXh0IC49ICRpZl90ZXh0OwogICAgICAgIH0KCiAgICAgICAgIyBzZWUgaWYgdGhhdCdzIGFsbAogICAgICAgIGlmICggJHJPcHRzX2Nsb3Npbmdfc2lkZV9jb21tZW50X2Vsc2VfZmxhZyA9PSAwICkgewogICAgICAgICAgICByZXR1cm4gJGNzY190ZXh0OwogICAgICAgIH0KCiAgICAgICAgbXkgJGxhc3RfZWxzaWZfdGV4dCA9ICIiOwogICAgICAgIGlmICggJGNvdW50ID4gMSApIHsKICAgICAgICAgICAgJGxhc3RfZWxzaWZfdGV4dCA9ICcgW2Vsc2lmJyAuICRyaWZfZWxzaWZfdGV4dC0+WyAkY291bnQgLSAxIF07CiAgICAgICAgICAgIGlmICggJGNvdW50ID4gMiApIHsgJGxhc3RfZWxzaWZfdGV4dCA9ICcgWy4uLicgLiAkbGFzdF9lbHNpZl90ZXh0OyB9CiAgICAgICAgfQoKICAgICAgICAjIHRlbnRhdGl2ZWx5IGFwcGVuZCBvbmUgbW9yZSBpdGVtCiAgICAgICAgbXkgJHNhdmVkX3RleHQgPSAkY3NjX3RleHQ7CiAgICAgICAgaWYgKCAkYmxvY2tfdHlwZSBlcSAnZWxzZScgKSB7CiAgICAgICAgICAgICRjc2NfdGV4dCAuPSAkbGFzdF9lbHNpZl90ZXh0OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJGNzY190ZXh0IC49ICcgJyAuICRpZl90ZXh0OwogICAgICAgIH0KCiAgICAgICAgIyBhbGwgZG9uZSBpZiBubyBsZW5ndGggY2hlY2tzIHJlcXVlc3RlZAogICAgICAgIGlmICggJHJPcHRzX2Nsb3Npbmdfc2lkZV9jb21tZW50X2Vsc2VfZmxhZyA9PSAyICkgewogICAgICAgICAgICByZXR1cm4gJGNzY190ZXh0OwogICAgICAgIH0KCiAgICAgICAgIyB1bmRvIGl0IGlmIGxpbmUgbGVuZ3RoIGV4Y2VlZGVkCiAgICAgICAgbXkgJGxlbmd0aCA9CiAgICAgICAgICBsZW5ndGgoJGNzY190ZXh0KSArCiAgICAgICAgICBsZW5ndGgoJGJsb2NrX3R5cGUpICsKICAgICAgICAgIGxlbmd0aCggJHJPcHRzLT57J2Nsb3Npbmctc2lkZS1jb21tZW50LXByZWZpeCd9ICkgKwogICAgICAgICAgJGxldmVsc190b19nb1skaV90ZXJtaW5hbF0gKiAkck9wdHNfaW5kZW50X2NvbHVtbnMgKyAzOwogICAgICAgIGlmICggJGxlbmd0aCA+ICRtYXhpbXVtX2xpbmVfbGVuZ3RoWyRsZWFkaW5nX2Jsb2NrX3RleHRfbGV2ZWxdICkgewogICAgICAgICAgICAkY3NjX3RleHQgPSAkc2F2ZWRfdGV4dDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRjc2NfdGV4dDsKICAgIH0KfSAjIyBlbmQgY2xvc3VyZSBhY2N1bXVsYXRlX2NzY190ZXh0Cgp7ICAgICMjIGJlZ2luIGNsb3N1cmUgYmFsYW5jZV9jc2NfdGV4dAoKICAgICMgU29tZSBhZGRpdGlvbmFsIHJvdXRpbmVzIGZvciBoYW5kbGluZyB0aGUgLS1jbG9zaW5nLXNpZGUtY29tbWVudHMgb3B0aW9uCgogICAgbXkgJW1hdGNoaW5nX2NoYXI7CgogICAgQkVHSU4gewogICAgICAgICVtYXRjaGluZ19jaGFyID0gKAogICAgICAgICAgICAneycgPT4gJ30nLAogICAgICAgICAgICAnKCcgPT4gJyknLAogICAgICAgICAgICAnWycgPT4gJ10nLAogICAgICAgICAgICAnfScgPT4gJ3snLAogICAgICAgICAgICAnKScgPT4gJygnLAogICAgICAgICAgICAnXScgPT4gJ1snLAogICAgICAgICk7CiAgICB9CgogICAgc3ViIGJhbGFuY2VfY3NjX3RleHQgewoKICAgICAgICAjIEFwcGVuZCBjaGFyYWN0ZXJzIHRvIGJhbGFuY2UgYSBjbG9zaW5nIHNpZGUgY29tbWVudCBzbyB0aGF0IGVkaXRvcnMKICAgICAgICAjIHN1Y2ggYXMgdmltIGNhbiBjb3JyZWN0bHkganVtcCB0aHJvdWdoIGNvZGUuCiAgICAgICAgIyBTaW1wbGUgRXhhbXBsZToKICAgICAgICAjICBpbnB1dCAgPSAjIyBlbmQgZm9yZWFjaCBteSAkZm9vICggc29ydCB7ICRiICAuLi4KICAgICAgICAjICBvdXRwdXQgPSAjIyBlbmQgZm9yZWFjaCBteSAkZm9vICggc29ydCB7ICRiICAuLi59KQoKICAgICAgICAjIE5PVEU6IFRoaXMgcm91dGluZSBkb2VzIG5vdCBjdXJyZW50bHkgZmlsdGVyIG91dCBzdHJ1Y3R1cmVzIHdpdGhpbgogICAgICAgICMgcXVvdGVkIHRleHQgYmVjYXVzZSB0aGUgYm91bmNlIGFsZ29yaXRobXMgaW4gdGV4dCBlZGl0b3JzIGRvIG5vdAogICAgICAgICMgbmVjZXNzYXJpbHkgZG8gdGhpcyBlaXRoZXIgKGEgdmVyc2lvbiBvZiB2aW0gd2FzIGNoZWNrZWQgYW5kCiAgICAgICAgIyBkaWQgbm90IGRvIHRoaXMpLgoKICAgICAgICAjIFNvbWUgY29tcGxleCBleGFtcGxlcyB3aGljaCB3aWxsIGNhdXNlIHRyb3VibGUgZm9yIHNvbWUgZWRpdG9yczoKICAgICAgICAjICB3aGlsZSAoICRtYXNrX3N0cmluZyA9fiAvXHtbXntdKj9cfS9nICkgewogICAgICAgICMgIGlmICggJG1hc2tfc3RyID1+IC9cfVxzKmVsc1teXHtcfV0rXHskLyApIHsKICAgICAgICAjICBpZiAoICQxIGVxICd7JyApIHsKICAgICAgICAjIHRlc3QgZmlsZSB0ZXN0MS9icmFjZXMucGwgaGFzIG1hbnkgc3VjaCBleGFtcGxlcy4KCiAgICAgICAgbXkgKCRjc2MpID0gQF87CgogICAgICAgICMgbG9vcCB0byBleGFtaW5lIGNoYXJhY3RlcnMgb25lLWJ5LW9uZSwgUklHSFQgdG8gTEVGVCBhbmQKICAgICAgICAjIGJ1aWxkIGEgYmFsYW5jaW5nIGVuZGluZywgTEVGVCB0byBSSUdIVC4KICAgICAgICBmb3IgKCBteSAkcG9zID0gbGVuZ3RoKCRjc2MpIC0gMSA7ICRwb3MgPj0gMCA7ICRwb3MtLSApIHsKCiAgICAgICAgICAgIG15ICRjaGFyID0gc3Vic3RyKCAkY3NjLCAkcG9zLCAxICk7CgogICAgICAgICAgICAjIGlnbm9yZSBldmVyeXRoaW5nIGV4Y2VwdCBzdHJ1Y3R1cmFsIGNoYXJhY3RlcnMKICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCAkbWF0Y2hpbmdfY2hhcnskY2hhcn0gKTsKCiAgICAgICAgICAgICMgcG9wIG1vc3QgcmVjZW50bHkgYXBwZW5kZWQgY2hhcmFjdGVyCiAgICAgICAgICAgIG15ICR0b3AgPSBjaG9wKCRjc2MpOwoKICAgICAgICAgICAgIyBwdXNoIGl0IGJhY2sgcGx1cyB0aGUgbWF0ZSB0byB0aGUgbmV3ZXN0IGNoYXJhY3RlcgogICAgICAgICAgICAjIHVubGVzcyB0aGV5IGJhbGFuY2UgZWFjaCBvdGhlci4KICAgICAgICAgICAgJGNzYyA9ICRjc2MgLiAkdG9wIC4gJG1hdGNoaW5nX2NoYXJ7JGNoYXJ9IHVubGVzcyAkdG9wIGVxICRjaGFyOwogICAgICAgIH0KCiAgICAgICAgIyByZXR1cm4gdGhlIGJhbGFuY2VkIHN0cmluZwogICAgICAgIHJldHVybiAkY3NjOwogICAgfQp9ICMjIGVuZCBjbG9zdXJlIGJhbGFuY2VfY3NjX3RleHQKCnN1YiBhZGRfY2xvc2luZ19zaWRlX2NvbW1lbnQgewoKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICBteSAkckxMICA9ICRzZWxmLT5bX3JMTF9dOwoKICAgICMgYWRkIGNsb3Npbmcgc2lkZSBjb21tZW50cyBhZnRlciBjbG9zaW5nIGJsb2NrIGJyYWNlcyBpZiAtY3NjIHVzZWQKICAgIG15ICggJGNsb3Npbmdfc2lkZV9jb21tZW50LCAkY3Njd19ibG9ja19jb21tZW50ICk7CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBTdGVwIDE6IGxvb3AgdGhyb3VnaCBhbGwgdG9rZW5zIG9mIHRoaXMgbGluZSB0byBhY2N1bXVsYXRlCiAgICAjIHRoZSB0ZXh0IG5lZWRlZCB0byBjcmVhdGUgdGhlIGNsb3Npbmcgc2lkZSBjb21tZW50cy4gQWxzbyBzZWUKICAgICMgaG93IHRoZSBsaW5lIGVuZHMuCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgbXkgKCAkdGVybWluYWxfdHlwZSwgJGlfdGVybWluYWwsICRpX2Jsb2NrX2xlYWRpbmdfdGV4dCwKICAgICAgICAkYmxvY2tfbGVhZGluZ190ZXh0LCAkYmxvY2tfbGluZV9jb3VudCwgJGJsb2NrX2xhYmVsICkKICAgICAgPSAkc2VsZi0+YWNjdW11bGF0ZV9jc2NfdGV4dCgpOwoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgU3RlcCAyOiBtYWtlIHRoZSBjbG9zaW5nIHNpZGUgY29tbWVudCBpZiB0aGlzIGVuZHMgYSBibG9jawogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgbXkgJGhhdmVfc2lkZV9jb21tZW50ID0gJHR5cGVzX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dIGVxICcjJzsKCiAgICAjIGlmIHRoaXMgbGluZSBtaWdodCBlbmQgaW4gYSBibG9jayBjbG9zdXJlLi4KICAgIGlmICgKICAgICAgICAkdGVybWluYWxfdHlwZSBlcSAnfScKCiAgICAgICAgIyAuLmFuZCBlaXRoZXIKICAgICAgICAmJiAoCgogICAgICAgICAgICAjIHRoZSBibG9jayBpcyBsb25nIGVub3VnaAogICAgICAgICAgICAoICRibG9ja19saW5lX2NvdW50ID49ICRyT3B0cy0+eydjbG9zaW5nLXNpZGUtY29tbWVudC1pbnRlcnZhbCd9ICkKCiAgICAgICAgICAgICMgb3IgdGhlcmUgaXMgYW4gZXhpc3RpbmcgY29tbWVudCB0byBjaGVjawogICAgICAgICAgICB8fCAoICAgJGhhdmVfc2lkZV9jb21tZW50CiAgICAgICAgICAgICAgICAmJiAkck9wdHMtPnsnY2xvc2luZy1zaWRlLWNvbW1lbnQtd2FybmluZ3MnfSApCiAgICAgICAgKQoKICAgICAgICAjIC4uIGFuZCBpZiB0aGlzIGlzIG9uZSBvZiB0aGUgdHlwZXMgb2YgaW50ZXJlc3QKICAgICAgICAmJiAkYmxvY2tfdHlwZV90b19nb1skaV90ZXJtaW5hbF0gPX4KICAgICAgICAvJGNsb3Npbmdfc2lkZV9jb21tZW50X2xpc3RfcGF0dGVybi8KCiAgICAgICAgIyAuLiBidXQgbm90IGFuIGFub255bW91cyBzdWIKICAgICAgICAjIFRoZXNlIGFyZSBub3Qgbm9ybWFsbHkgb2YgaW50ZXJlc3QsIGFuZCB0aGVpciBjbG9zaW5nIGJyYWNlcyBhcmUKICAgICAgICAjIG9mdGVuIGZvbGxvd2VkIGJ5IGNvbW1hcyBvciBzZW1pY29sb25zIGFueXdheS4gIFRoaXMgYWxzbyBhdm9pZHMKICAgICAgICAjIHBvc3NpYmxlIGVycmF0aWMgb3V0cHV0IGR1ZSB0byBsaW5lIG51bWJlcmluZyBpbmNvbnNpc3RlbmNpZXMKICAgICAgICAjIGluIHRoZSBjYXNlcyB3aGVyZSB0aGVpciBjbG9zaW5nIGJyYWNlcyB0ZXJtaW5hdGUgYSBsaW5lLgogICAgICAgICYmICRibG9ja190eXBlX3RvX2dvWyRpX3Rlcm1pbmFsXSBuZSAnc3ViJwoKICAgICAgICAjIC4uYW5kIHRoZSBjb3JyZXNwb25kaW5nIG9wZW5pbmcgYnJhY2UgbXVzdCBpcyBub3QgaW4gdGhpcyBiYXRjaAogICAgICAgICMgKGJlY2F1c2Ugd2UgZG8gbm90IG5lZWQgdG8gdGFnIG9uZS1saW5lIGJsb2NrcywgYWx0aG91Z2ggdGhpcwogICAgICAgICMgc2hvdWxkIGFsc28gYmUgY2F1Z2h0IHdpdGggYSBwb3NpdGl2ZSAtY3NjaSB2YWx1ZSkKICAgICAgICAmJiAkbWF0ZV9pbmRleF90b19nb1skaV90ZXJtaW5hbF0gPCAwCgogICAgICAgICMgLi5hbmQgZWl0aGVyCiAgICAgICAgJiYgKAoKICAgICAgICAgICAgIyB0aGlzIGlzIHRoZSBsYXN0IHRva2VuIChsaW5lIGRvZXNuJ3QgaGF2ZSBhIHNpZGUgY29tbWVudCkKICAgICAgICAgICAgISRoYXZlX3NpZGVfY29tbWVudAoKICAgICAgICAgICAgIyBvciB0aGUgb2xkIHNpZGUgY29tbWVudCBpcyBhIGNsb3Npbmcgc2lkZSBjb21tZW50CiAgICAgICAgICAgIHx8ICR0b2tlbnNfdG9fZ29bJG1heF9pbmRleF90b19nb10gPX4KICAgICAgICAgICAgLyRjbG9zaW5nX3NpZGVfY29tbWVudF9wcmVmaXhfcGF0dGVybi8KICAgICAgICApCiAgICAgICkKICAgIHsKCiAgICAgICAgIyB0aGVuIG1ha2UgdGhlIGNsb3Npbmcgc2lkZSBjb21tZW50IHRleHQKICAgICAgICBpZiAoJGJsb2NrX2xhYmVsKSB7ICRibG9ja19sYWJlbCAuPSAiICIgfQogICAgICAgIG15ICR0b2tlbiA9CiIkck9wdHMtPnsnY2xvc2luZy1zaWRlLWNvbW1lbnQtcHJlZml4J30gJGJsb2NrX2xhYmVsJGJsb2NrX3R5cGVfdG9fZ29bJGlfdGVybWluYWxdIjsKCiAgICAgICAgIyBhcHBlbmQgYW55IGV4dHJhIGRlc2NyaXB0aXZlIHRleHQgY29sbGVjdGVkIGFib3ZlCiAgICAgICAgaWYgKCAkaV9ibG9ja19sZWFkaW5nX3RleHQgPT0gJGlfdGVybWluYWwgKSB7CiAgICAgICAgICAgICR0b2tlbiAuPSAkYmxvY2tfbGVhZGluZ190ZXh0OwogICAgICAgIH0KCiAgICAgICAgJHRva2VuID0gYmFsYW5jZV9jc2NfdGV4dCgkdG9rZW4pCiAgICAgICAgICBpZiAkck9wdHMtPnsnY2xvc2luZy1zaWRlLWNvbW1lbnRzLWJhbGFuY2VkJ307CgogICAgICAgICR0b2tlbiA9fiBzL1xzKiQvLzsgICAgIyB0cmltIGFueSB0cmFpbGluZyB3aGl0ZXNwYWNlCgogICAgICAgICMgaGFuZGxlIGNhc2Ugb2YgZXhpc3RpbmcgY2xvc2luZyBzaWRlIGNvbW1lbnQKICAgICAgICBpZiAoJGhhdmVfc2lkZV9jb21tZW50KSB7CgogICAgICAgICAgICAjIHdhcm4gaWYgcmVxdWVzdGVkIGFuZCB0b2tlbnMgZGlmZmVyIHNpZ25pZmljYW50bHkKICAgICAgICAgICAgaWYgKCAkck9wdHMtPnsnY2xvc2luZy1zaWRlLWNvbW1lbnQtd2FybmluZ3MnfSApIHsKICAgICAgICAgICAgICAgIG15ICRvbGRfY3NjID0gJHRva2Vuc190b19nb1skbWF4X2luZGV4X3RvX2dvXTsKICAgICAgICAgICAgICAgIG15ICRuZXdfY3NjID0gJHRva2VuOwogICAgICAgICAgICAgICAgJG5ld19jc2MgPX4gcy9ccysvL2c7ICAgICAgICAgICAgIyB0cmltIGFsbCB3aGl0ZXNwYWNlCiAgICAgICAgICAgICAgICAkb2xkX2NzYyA9fiBzL1xzKy8vZzsgICAgICAgICAgICAjIHRyaW0gYWxsIHdoaXRlc3BhY2UKICAgICAgICAgICAgICAgICRuZXdfY3NjID1+IHMvW1xdXClcfVxzXSokLy87ICAgICMgdHJpbSB0cmFpbGluZyBzdHJ1Y3R1cmVzCiAgICAgICAgICAgICAgICAkb2xkX2NzYyA9fiBzL1tcXVwpXH1cc10qJC8vOyAgICAjIHRyaW0gdHJhaWxpbmcgc3RydWN0dXJlcwogICAgICAgICAgICAgICAgJG5ld19jc2MgPX4gcy8oXC5cLlwuKSQvLzsgICAgICAgIyB0cmltIHRyYWlsaW5nICcuLi4nCiAgICAgICAgICAgICAgICBteSAkbmV3X3RyYWlsaW5nX2RvdHMgPSAkMTsKICAgICAgICAgICAgICAgICRvbGRfY3NjID1+IHMvKFwuXC5cLilccyokLy87ICAgICMgdHJpbSB0cmFpbGluZyAnLi4uJwoKICAgICAgICAgICAgICAgICMgUGF0Y2ggdG8gaGFuZGxlIG11bHRpcGxlIGNsb3Npbmcgc2lkZSBjb21tZW50cyBhdAogICAgICAgICAgICAgICAgIyBlbHNlIGFuZCBlbHNpZidzLiAgVGhlc2UgaGF2ZSBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkCiAgICAgICAgICAgICAgICAjIHRvIGNoZWNrLCBzbyBpZiB3ZSBzZWUgYW4gaW5kaWNhdGlvbiBvZgogICAgICAgICAgICAgICAgIyAnWyBpZicgb3IgJ1sgIyBlbHNpZicsIHRoZW4gYXNzdW1lIHRoZXkgd2VyZSBtYWRlCiAgICAgICAgICAgICAgICAjIGJ5IHBlcmx0aWR5LgogICAgICAgICAgICAgICAgaWYgKCAkYmxvY2tfdHlwZV90b19nb1skaV90ZXJtaW5hbF0gZXEgJ2Vsc2UnICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJG9sZF9jc2MgPX4gL1xbXHMqZWxzaWYvICkgeyAkb2xkX2NzYyA9ICRuZXdfY3NjIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJGJsb2NrX3R5cGVfdG9fZ29bJGlfdGVybWluYWxdIGVxICdlbHNpZicgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkb2xkX2NzYyA9fiAvXFtccyppZi8gKSB7ICRvbGRfY3NjID0gJG5ld19jc2MgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgaWYgb2xkIGNvbW1lbnQgaXMgY29udGFpbmVkIGluIG5ldyBjb21tZW50LAogICAgICAgICAgICAgICAgIyBvbmx5IGNvbXBhcmUgdGhlIGNvbW1vbiBwYXJ0LgogICAgICAgICAgICAgICAgaWYgKCBsZW5ndGgoJG5ld19jc2MpID4gbGVuZ3RoKCRvbGRfY3NjKSApIHsKICAgICAgICAgICAgICAgICAgICAkbmV3X2NzYyA9IHN1YnN0ciggJG5ld19jc2MsIDAsIGxlbmd0aCgkb2xkX2NzYykgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGlmIHRoZSBuZXcgY29tbWVudCBpcyBzaG9ydGVyIGFuZCBoYXMgYmVlbiBsaW1pdGVkLAogICAgICAgICAgICAgICAgIyBvbmx5IGNvbXBhcmUgdGhlIGNvbW1vbiBwYXJ0LgogICAgICAgICAgICAgICAgaWYgKCBsZW5ndGgoJG5ld19jc2MpIDwgbGVuZ3RoKCRvbGRfY3NjKQogICAgICAgICAgICAgICAgICAgICYmICRuZXdfdHJhaWxpbmdfZG90cyApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJG9sZF9jc2MgPSBzdWJzdHIoICRvbGRfY3NjLCAwLCBsZW5ndGgoJG5ld19jc2MpICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBhbnkgcmVtYWluaW5nIGRpZmZlcmVuY2U/CiAgICAgICAgICAgICAgICBpZiAoICRuZXdfY3NjIG5lICRvbGRfY3NjICkgewoKICAgICAgICAgICAgICAgICAgICAjIGp1c3QgbGVhdmUgdGhlIG9sZCBjb21tZW50IGlmIHdlIGFyZSBiZWxvdyB0aGUgdGhyZXNob2xkCiAgICAgICAgICAgICAgICAgICAgIyBmb3IgY3JlYXRpbmcgc2lkZSBjb21tZW50cwogICAgICAgICAgICAgICAgICAgIGlmICggJGJsb2NrX2xpbmVfY291bnQgPAogICAgICAgICAgICAgICAgICAgICAgICAkck9wdHMtPnsnY2xvc2luZy1zaWRlLWNvbW1lbnQtaW50ZXJ2YWwnfSApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkdG9rZW4gPSB1bmRlZjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlIHdlJ2xsIG1ha2UgYSBub3RlIG9mIGl0CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nKAoicGVybHRpZHkgLWNzY3cgcmVwbGFjZWQ6ICR0b2tlbnNfdG9fZ29bJG1heF9pbmRleF90b19nb11cbiIKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2F2ZSB0aGUgb2xkIHNpZGUgY29tbWVudCBpbiBhIG5ldyB0cmFpbGluZyBibG9jawogICAgICAgICAgICAgICAgICAgICAgICAjIGNvbW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHRpbWVzdGFtcCA9ICIiOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRyT3B0cy0+eyd0aW1lc3RhbXAnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICggJGRheSwgJG1vbnRoLCAkeWVhciApID0gKGxvY2FsdGltZSlbIDMsIDQsIDUgXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5ZWFyICArPSAxOTAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1vbnRoICs9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGltZXN0YW1wID0gIiR5ZWFyLSRtb250aC0kZGF5IjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAkY3Njd19ibG9ja19jb21tZW50ID0KIiMjIHBlcmx0aWR5IC1jc2N3ICR0aW1lc3RhbXA6ICR0b2tlbnNfdG9fZ29bJG1heF9pbmRleF90b19nb10iOwojIyAiIyMgcGVybHRpZHkgLWNzY3cgJHllYXItJG1vbnRoLSRkYXk6ICR0b2tlbnNfdG9fZ29bJG1heF9pbmRleF90b19nb10iOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAjIE5vIGRpZmZlcmVuY2VzLi4gd2UgY2FuIHNhZmVseSBkZWxldGUgb2xkIGNvbW1lbnQgaWYgd2UKICAgICAgICAgICAgICAgICAgICAjIGFyZSBiZWxvdyB0aGUgdGhyZXNob2xkCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkYmxvY2tfbGluZV9jb3VudCA8CiAgICAgICAgICAgICAgICAgICAgICAgICRyT3B0cy0+eydjbG9zaW5nLXNpZGUtY29tbWVudC1pbnRlcnZhbCd9ICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0b2tlbiA9IHVuZGVmOwogICAgICAgICAgICAgICAgICAgICAgICAkc2VsZi0+dW5zdG9yZV90b2tlbl90b19nbygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkdHlwZXNfdG9fZ29bJG1heF9pbmRleF90b19nb10gZXEgJyMnICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT51bnN0b3JlX3Rva2VuX3RvX2dvKCkKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICR0eXBlc190b19nb1skbWF4X2luZGV4X3RvX2dvXSBlcSAnYicgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc3dpdGNoIHRvIHRoZSBuZXcgY3NjICh1bmxlc3Mgd2UgZGVsZXRlZCBpdCEpCiAgICAgICAgICAgIGlmICgkdG9rZW4pIHsKICAgICAgICAgICAgICAgICR0b2tlbnNfdG9fZ29bJG1heF9pbmRleF90b19nb10gPSAkdG9rZW47CiAgICAgICAgICAgICAgICBteSAkSyA9ICRLX3RvX2dvWyRtYXhfaW5kZXhfdG9fZ29dOwogICAgICAgICAgICAgICAgJHJMTC0+WyRLXS0+W19UT0tFTl9dID0gJHRva2VuOwogICAgICAgICAgICAgICAgJHJMTC0+WyRLXS0+W19UT0tFTl9MRU5HVEhfXSA9CiAgICAgICAgICAgICAgICAgIGxlbmd0aCgkdG9rZW4pOyAgICAjIE5PVEU6IGxlbmd0aCBubyBsb25nZXIgaW1wb3J0YW50CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgaGFuZGxlIGNhc2Ugb2YgTk8gZXhpc3RpbmcgY2xvc2luZyBzaWRlIGNvbW1lbnQKICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgVG8gYXZvaWQgaW5zZXJ0aW5nIGEgbmV3IHRva2VuIGluIHRoZSB0b2tlbiBhcnJheXMsIHdlCiAgICAgICAgICAgICMgd2lsbCBqdXN0IHJldHVybiB0aGUgbmV3IHNpZGUgY29tbWVudCBzbyB0aGF0IGl0IGNhbiBiZQogICAgICAgICAgICAjIGluc2VydGVkIGp1c3QgYmVmb3JlIGl0IGlzIG5lZWRlZCBpbiB0aGUgY2FsbCB0byB0aGUKICAgICAgICAgICAgIyB2ZXJ0aWNhbCBhbGlnbmVyLgogICAgICAgICAgICAkY2xvc2luZ19zaWRlX2NvbW1lbnQgPSAkdG9rZW47CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuICggJGNsb3Npbmdfc2lkZV9jb21tZW50LCAkY3Njd19ibG9ja19jb21tZW50ICk7Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBDT0RFIFNFQ1RJT04gMTU6IFN1bW1hcml6ZQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpzdWIgd3JhcHVwIHsKCiAgICAjIFRoaXMgaXMgdGhlIGxhc3Qgcm91dGluZSBjYWxsZWQgd2hlbiBhIGZpbGUgaXMgZm9ybWF0dGVkLgogICAgIyBGbHVzaCBidWZmZXIgYW5kIHdyaXRlIGFueSBpbmZvcm1hdGl2ZSBtZXNzYWdlcwogICAgbXkgJHNlbGYgPSBzaGlmdDsKCiAgICAkc2VsZi0+Zmx1c2goKTsKICAgIG15ICRmaWxlX3dyaXRlcl9vYmplY3QgPSAkc2VsZi0+W19maWxlX3dyaXRlcl9vYmplY3RfXTsKICAgICRmaWxlX3dyaXRlcl9vYmplY3QtPmRlY3JlbWVudF9vdXRwdXRfbGluZV9udW1iZXIoKQogICAgICA7ICAgICMgZml4IHVwIGxpbmUgbnVtYmVyIHNpbmNlIGl0IHdhcyBpbmNyZW1lbnRlZAogICAgd2VfYXJlX2F0X3RoZV9sYXN0X2xpbmUoKTsKICAgIG15ICRhZGRlZF9zZW1pY29sb25fY291bnQgICAgPSAkc2VsZi0+W19hZGRlZF9zZW1pY29sb25fY291bnRfXTsKICAgIG15ICRmaXJzdF9hZGRlZF9zZW1pY29sb25fYXQgPSAkc2VsZi0+W19maXJzdF9hZGRlZF9zZW1pY29sb25fYXRfXTsKICAgIG15ICRsYXN0X2FkZGVkX3NlbWljb2xvbl9hdCAgPSAkc2VsZi0+W19sYXN0X2FkZGVkX3NlbWljb2xvbl9hdF9dOwoKICAgIGlmICggJGFkZGVkX3NlbWljb2xvbl9jb3VudCA+IDAgKSB7CiAgICAgICAgbXkgJGZpcnN0ID0gKCAkYWRkZWRfc2VtaWNvbG9uX2NvdW50ID4gMSApID8gIkZpcnN0IiA6ICIiOwogICAgICAgIG15ICR3aGF0ID0KICAgICAgICAgICggJGFkZGVkX3NlbWljb2xvbl9jb3VudCA+IDEgKSA/ICJzZW1pY29sb25zIHdlcmUiIDogInNlbWljb2xvbiB3YXMiOwogICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoIiRhZGRlZF9zZW1pY29sb25fY291bnQgJHdoYXQgYWRkZWQ6XG4iKTsKICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICAgICAiICAkZmlyc3QgYXQgaW5wdXQgbGluZSAkZmlyc3RfYWRkZWRfc2VtaWNvbG9uX2F0XG4iKTsKCiAgICAgICAgaWYgKCAkYWRkZWRfc2VtaWNvbG9uX2NvdW50ID4gMSApIHsKICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgKICAgICAgICAgICAgICAgICIgICBMYXN0IGF0IGlucHV0IGxpbmUgJGxhc3RfYWRkZWRfc2VtaWNvbG9uX2F0XG4iKTsKICAgICAgICB9CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiICAoVXNlIC1uYXNjIHRvIHByZXZlbnQgc2VtaWNvbG9uIGFkZGl0aW9uKVxuIik7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiXG4iKTsKICAgIH0KCiAgICBteSAkZGVsZXRlZF9zZW1pY29sb25fY291bnQgICAgPSAkc2VsZi0+W19kZWxldGVkX3NlbWljb2xvbl9jb3VudF9dOwogICAgbXkgJGZpcnN0X2RlbGV0ZWRfc2VtaWNvbG9uX2F0ID0gJHNlbGYtPltfZmlyc3RfZGVsZXRlZF9zZW1pY29sb25fYXRfXTsKICAgIG15ICRsYXN0X2RlbGV0ZWRfc2VtaWNvbG9uX2F0ICA9ICRzZWxmLT5bX2xhc3RfZGVsZXRlZF9zZW1pY29sb25fYXRfXTsKICAgIGlmICggJGRlbGV0ZWRfc2VtaWNvbG9uX2NvdW50ID4gMCApIHsKICAgICAgICBteSAkZmlyc3QgPSAoICRkZWxldGVkX3NlbWljb2xvbl9jb3VudCA+IDEgKSA/ICJGaXJzdCIgOiAiIjsKICAgICAgICBteSAkd2hhdCA9CiAgICAgICAgICAoICRkZWxldGVkX3NlbWljb2xvbl9jb3VudCA+IDEgKQogICAgICAgICAgPyAic2VtaWNvbG9ucyB3ZXJlIgogICAgICAgICAgOiAic2VtaWNvbG9uIHdhcyI7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgKICAgICAgICAgICAgIiRkZWxldGVkX3NlbWljb2xvbl9jb3VudCB1bm5lY2Vzc2FyeSAkd2hhdCBkZWxldGVkOlxuIik7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgKICAgICAgICAgICAgIiAgJGZpcnN0IGF0IGlucHV0IGxpbmUgJGZpcnN0X2RlbGV0ZWRfc2VtaWNvbG9uX2F0XG4iKTsKCiAgICAgICAgaWYgKCAkZGVsZXRlZF9zZW1pY29sb25fY291bnQgPiAxICkgewogICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICAgICAgICAgIiAgIExhc3QgYXQgaW5wdXQgbGluZSAkbGFzdF9kZWxldGVkX3NlbWljb2xvbl9hdFxuIik7CiAgICAgICAgfQogICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoIiAgKFVzZSAtbmRzbSB0byBwcmV2ZW50IHNlbWljb2xvbiBkZWxldGlvbilcbiIpOwogICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoIlxuIik7CiAgICB9CgogICAgbXkgJGVtYmVkZGVkX3RhYl9jb3VudCAgICA9ICRzZWxmLT5bX2VtYmVkZGVkX3RhYl9jb3VudF9dOwogICAgbXkgJGZpcnN0X2VtYmVkZGVkX3RhYl9hdCA9ICRzZWxmLT5bX2ZpcnN0X2VtYmVkZGVkX3RhYl9hdF9dOwogICAgbXkgJGxhc3RfZW1iZWRkZWRfdGFiX2F0ICA9ICRzZWxmLT5bX2xhc3RfZW1iZWRkZWRfdGFiX2F0X107CiAgICBpZiAoICRlbWJlZGRlZF90YWJfY291bnQgPiAwICkgewogICAgICAgIG15ICRmaXJzdCA9ICggJGVtYmVkZGVkX3RhYl9jb3VudCA+IDEgKSA/ICJGaXJzdCIgOiAiIjsKICAgICAgICBteSAkd2hhdCA9CiAgICAgICAgICAoICRlbWJlZGRlZF90YWJfY291bnQgPiAxICkKICAgICAgICAgID8gInF1b3RlcyBvciBwYXR0ZXJucyIKICAgICAgICAgIDogInF1b3RlIG9yIHBhdHRlcm4iOwogICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoIiRlbWJlZGRlZF90YWJfY291bnQgJHdoYXQgaGFkIGVtYmVkZGVkIHRhYnM6XG4iKTsKICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KAoiVGhpcyBtZWFucyB0aGUgZGlzcGxheSBvZiB0aGlzIHNjcmlwdCBjb3VsZCB2YXJ5IHdpdGggZGV2aWNlIG9yIHNvZnR3YXJlXG4iCiAgICAgICAgKTsKICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCIgICRmaXJzdCBhdCBpbnB1dCBsaW5lICRmaXJzdF9lbWJlZGRlZF90YWJfYXRcbiIpOwoKICAgICAgICBpZiAoICRlbWJlZGRlZF90YWJfY291bnQgPiAxICkgewogICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICAgICAgICAgIiAgIExhc3QgYXQgaW5wdXQgbGluZSAkbGFzdF9lbWJlZGRlZF90YWJfYXRcbiIpOwogICAgICAgIH0KICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCJcbiIpOwogICAgfQoKICAgIG15ICRmaXJzdF90YWJiaW5nX2Rpc2FncmVlbWVudCA9ICRzZWxmLT5bX2ZpcnN0X3RhYmJpbmdfZGlzYWdyZWVtZW50X107CiAgICBteSAkbGFzdF90YWJiaW5nX2Rpc2FncmVlbWVudCAgPSAkc2VsZi0+W19sYXN0X3RhYmJpbmdfZGlzYWdyZWVtZW50X107CiAgICBteSAkdGFiYmluZ19kaXNhZ3JlZW1lbnRfY291bnQgPSAkc2VsZi0+W190YWJiaW5nX2Rpc2FncmVlbWVudF9jb3VudF9dOwogICAgbXkgJGluX3RhYmJpbmdfZGlzYWdyZWVtZW50ICAgID0gJHNlbGYtPltfaW5fdGFiYmluZ19kaXNhZ3JlZW1lbnRfXTsKCiAgICBpZiAoJGZpcnN0X3RhYmJpbmdfZGlzYWdyZWVtZW50KSB7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgKIkZpcnN0IGluZGVudGF0aW9uIGRpc2FncmVlbWVudCBzZWVuIGF0IGlucHV0IGxpbmUgJGZpcnN0X3RhYmJpbmdfZGlzYWdyZWVtZW50XG4iCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkZmlyc3RfYnRkID0gJHNlbGYtPltfZmlyc3RfYnJhY2VfdGFiYmluZ19kaXNhZ3JlZW1lbnRfXTsKICAgIGlmICgkZmlyc3RfYnRkKSB7CiAgICAgICAgbXkgJG1zZyA9CiJGaXJzdCBjbG9zaW5nIGJyYWNlIGluZGVudGF0aW9uIGRpc2FncmVlbWVudCBzdGFydGVkIGF0IGlucHV0IGxpbmUgJGZpcnN0X2J0ZFxuIjsKICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCRtc2cpOwoKICAgICAgICAjIGxlYXZlIGEgaGludCBpbiB0aGUgLkVSUiBmaWxlIGlmIHRoZXJlIHdhcyBhIGJyYWNlIGVycm9yCiAgICAgICAgaWYgKCBnZXRfc2F3X2JyYWNlX2Vycm9yKCkgKSB7IHdhcm5pbmcoIk5PVEU6ICRtc2ciKSB9CiAgICB9CgogICAgbXkgJGluX2J0ZCA9ICRzZWxmLT5bX2luX2JyYWNlX3RhYmJpbmdfZGlzYWdyZWVtZW50X107CiAgICBpZiAoJGluX2J0ZCkgewogICAgICAgIG15ICRtc2cgPQoiRW5kaW5nIHdpdGggYnJhY2UgaW5kZW50YXRpb24gZGlzYWdyZWVtZW50IHdoaWNoIHN0YXJ0ZWQgYXQgaW5wdXQgbGluZSAkaW5fYnRkXG4iOwogICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoJG1zZyk7CgogICAgICAgICMgbGVhdmUgYSBoaW50IGluIHRoZSAuRVJSIGZpbGUgaWYgdGhlcmUgd2FzIGEgYnJhY2UgZXJyb3IKICAgICAgICBpZiAoIGdldF9zYXdfYnJhY2VfZXJyb3IoKSApIHsgd2FybmluZygiTk9URTogJG1zZyIpIH0KICAgIH0KCiAgICBpZiAoJGluX3RhYmJpbmdfZGlzYWdyZWVtZW50KSB7CiAgICAgICAgbXkgJG1zZyA9CiJFbmRpbmcgd2l0aCBpbmRlbnRhdGlvbiBkaXNhZ3JlZW1lbnQgd2hpY2ggc3RhcnRlZCBhdCBpbnB1dCBsaW5lICRpbl90YWJiaW5nX2Rpc2FncmVlbWVudFxuIjsKICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCRtc2cpOwogICAgfQogICAgZWxzZSB7CgogICAgICAgIGlmICgkbGFzdF90YWJiaW5nX2Rpc2FncmVlbWVudCkgewoKICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgKIkxhc3QgaW5kZW50YXRpb24gZGlzYWdyZWVtZW50IHNlZW4gYXQgaW5wdXQgbGluZSAkbGFzdF90YWJiaW5nX2Rpc2FncmVlbWVudFxuIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiTm8gaW5kZW50YXRpb24gZGlzYWdyZWVtZW50IHNlZW5cbiIpOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJGZpcnN0X3RhYmJpbmdfZGlzYWdyZWVtZW50KSB7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgKIk5vdGU6IEluZGVudGF0aW9uIGRpc2FncmVlbWVudCBkZXRlY3Rpb24gaXMgbm90IGFjY3VyYXRlIGZvciBvdXRkZW50aW5nIGFuZCAtbHAuXG4iCiAgICAgICAgKTsKICAgIH0KICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoIlxuIik7CgogICAgbXkgJHZhbyA9ICRzZWxmLT5bX3ZlcnRpY2FsX2FsaWduZXJfb2JqZWN0X107CiAgICAkdmFvLT5yZXBvcnRfYW55dGhpbmdfdW51c3VhbCgpOwoKICAgICRmaWxlX3dyaXRlcl9vYmplY3QtPnJlcG9ydF9saW5lX2xlbmd0aF9lcnJvcnMoKTsKCiAgICAkc2VsZi0+W19jb252ZXJnZWRfXSA9ICRmaWxlX3dyaXRlcl9vYmplY3QtPmdldF9jb252ZXJnZW5jZV9jaGVjaygpCiAgICAgIHx8ICRyT3B0cy0+eydpbmRlbnQtb25seSd9OwoKICAgIHJldHVybjsKfQoKfSAjIyBlbmQgcGFja2FnZSBQZXJsOjpUaWR5OjpGb3JtYXR0ZXIKMTsK</File>
        <File Location="Kernel/cpan-lib/Perl/Tidy/IndentationItem.pm" Permission="660" Encode="Base64">IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyB0aGUgUGVybDo6VGlkeTo6SW5kZW50YXRpb25JdGVtIGNsYXNzIHN1cHBsaWVzIGl0ZW1zIHdoaWNoIGNvbnRhaW4KIyBob3cgbXVjaCB3aGl0ZXNwYWNlIHNob3VsZCBiZSB1c2VkIGF0IHRoZSBzdGFydCBvZiBhIGxpbmUKIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnBhY2thZ2UgUGVybDo6VGlkeTo6SW5kZW50YXRpb25JdGVtOwp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm91ciAkVkVSU0lPTiA9ICcyMDIxMDExMSc7CgpCRUdJTiB7CgogICAgIyBBcnJheSBpbmRleCBuYW1lcwogICAgbXkgJGkgPSAwOwogICAgdXNlIGNvbnN0YW50IHsKICAgICAgICBfc3BhY2VzXyAgICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9sZXZlbF8gICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2NpX2xldmVsXyAgICAgICAgICAgPT4gJGkrKywKICAgICAgICBfYXZhaWxhYmxlX3NwYWNlc18gICA9PiAkaSsrLAogICAgICAgIF9jbG9zZWRfICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2NvbW1hX2NvdW50XyAgICAgICAgPT4gJGkrKywKICAgICAgICBfc2VxdWVuY2VfbnVtYmVyXyAgICA9PiAkaSsrLAogICAgICAgIF9pbmRleF8gICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2hhdmVfY2hpbGRfICAgICAgICAgPT4gJGkrKywKICAgICAgICBfcmVjb3ZlcmFibGVfc3BhY2VzXyA9PiAkaSsrLAogICAgICAgIF9hbGlnbl9wYXJlbl8gICAgICAgID0+ICRpKyssCiAgICAgICAgX21hcmtlZF8gICAgICAgICAgICAgPT4gJGkrKywKICAgICAgICBfc3RhY2tfZGVwdGhfICAgICAgICA9PiAkaSsrLAogICAgICAgIF9zdGFydGluZ19pbmRleF9LXyAgID0+ICRpKyssCiAgICAgICAgX2Fycm93X2NvdW50XyAgICAgICAgPT4gJGkrKywKICAgIH07Cn0KCnN1YiBBVVRPTE9BRCB7CgogICAgIyBDYXRjaCBhbnkgdW5kZWZpbmVkIHN1YiBjYWxscyBzbyB0aGF0IHdlIGFyZSBzdXJlIHRvIGdldAogICAgIyBzb21lIGRpYWdub3N0aWMgaW5mb3JtYXRpb24uICBUaGlzIHN1YiBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkCiAgICAjIGV4Y2VwdCBmb3IgYSBwcm9ncmFtbWluZyBlcnJvci4KICAgIG91ciAkQVVUT0xPQUQ7CiAgICByZXR1cm4gaWYgKCAkQVVUT0xPQUQgPX4gL1xiREVTVFJPWSQvICk7CiAgICBteSAoICRwa2csICRmbmFtZSwgJGxubyApID0gY2FsbGVyKCk7CiAgICBteSAkbXlfcGFja2FnZSA9IF9fUEFDS0FHRV9fOwogICAgcHJpbnQgU1RERVJSIDw8RU9NOwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVycm9yIGRldGVjdGVkIGluIHBhY2thZ2UgJyRteV9wYWNrYWdlJywgdmVyc2lvbiAkVkVSU0lPTgpSZWNlaXZlZCB1bmV4cGVjdGVkIEFVVE9MT0FEIGNhbGwgZm9yIHN1YiAnJEFVVE9MT0FEJwpDYWxsZWQgZnJvbSBwYWNrYWdlOiAnJHBrZycgIApDYWxsZWQgZnJvbSBGaWxlICckZm5hbWUnICBhdCBsaW5lICckbG5vJwpUaGlzIGVycm9yIGlzIHByb2JhYmx5IGR1ZSB0byBhIHJlY2VudCBwcm9ncmFtbWluZyBjaGFuZ2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFT00KICAgIGV4aXQgMTsKfQoKc3ViIERFU1RST1kgewoKICAgICMgcmVxdWlyZWQgdG8gYXZvaWQgY2FsbCB0byBBVVRPTE9BRCBpbiBzb21lIHZlcnNpb25zIG9mIHBlcmwKfQoKc3ViIG5ldyB7CgogICAgIyBDcmVhdGUgYW4gJ2luZGVudGF0aW9uX2l0ZW0nIHdoaWNoIGRlc2NyaWJlcyBvbmUgbGV2ZWwgb2YgbGVhZGluZwogICAgIyB3aGl0ZXNwYWNlIHdoZW4gdGhlICctbHAnIGluZGVudGF0aW9uIGlzIHVzZWQuCiAgICBteSAoICRjbGFzcywgJWlucHV0X2hhc2ggKSA9IEBfOwoKICAgICMgREVGSU5JVElPTlM6CiAgICAjIHNwYWNlcyAgICAgICAgICAgICA9PiAgIyB0b3RhbCBsZWFkaW5nIHdoaXRlIHNwYWNlcwogICAgIyBsZXZlbCAgICAgICAgICAgICAgPT4gICMgdGhlIGluZGVudGF0aW9uICdsZXZlbCcKICAgICMgY2lfbGV2ZWwgICAgICAgICAgID0+ICAjIHRoZSAnY29udGludWF0aW9uIGxldmVsJwogICAgIyBhdmFpbGFibGVfc3BhY2VzICAgPT4gICMgaG93IG1hbnkgbGVmdCBzcGFjZXMgYXZhaWxhYmxlCiAgICAjICAgICAgICAgICAgICAgICAgICAgICAgIyBmb3IgdGhpcyBsZXZlbAogICAgIyBjbG9zZWQgICAgICAgICAgICAgPT4gICMgaW5kZXggd2hlcmUgd2Ugc2F3IGNsb3NpbmcgJ30nCiAgICAjIGNvbW1hX2NvdW50ICAgICAgICA9PiAgIyBob3cgbWFueSBjb21tYXMgYXQgdGhpcyBsZXZlbD8KICAgICMgc2VxdWVuY2VfbnVtYmVyICAgID0+ICAjIG91dHB1dCBiYXRjaCBudW1iZXIKICAgICMgaW5kZXggICAgICAgICAgICAgID0+ICAjIGluZGV4IGluIG91dHB1dCBiYXRjaCBsaXN0CiAgICAjIGhhdmVfY2hpbGQgICAgICAgICA9PiAgIyBhbnkgZGVwZW5kZW50cz8KICAgICMgcmVjb3ZlcmFibGVfc3BhY2VzID0+ICAjIGhvdyBtYW55IHNwYWNlcyB0byB0aGUgcmlnaHQKICAgICMgICAgICAgICAgICAgICAgICAgICAgICAjIHdlIHdvdWxkIGxpa2UgdG8gbW92ZSB0byBnZXQKICAgICMgICAgICAgICAgICAgICAgICAgICAgICAjIGFsaWdubWVudCAobmVnYXRpdmUgaWYgbGVmdCkKICAgICMgYWxpZ25fcGFyZW4gICAgICAgID0+ICAjIGRvIHdlIHdhbnQgdG8gdHJ5IHRvIGFsaWduCiAgICAjICAgICAgICAgICAgICAgICAgICAgICAgIyB3aXRoIGFuIG9wZW5pbmcgc3RydWN0dXJlPwogICAgIyBtYXJrZWQgICAgICAgICAgICAgPT4gICMgaWYgdmlzaXRlZCBieSBjb3JyZWN0b3IgbG9naWMKICAgICMgc3RhY2tfZGVwdGggICAgICAgID0+ICAjIGluZGVudGF0aW9uIG5lc3RpbmcgZGVwdGgKICAgICMgc3RhcnRpbmdfaW5kZXhfSyAgID0+ICAjIGZpcnN0IHRva2VuIGluZGV4IEsgb2YgdGhpcyBsZXZlbAogICAgIyBhcnJvd19jb3VudCAgICAgICAgPT4gICMgaG93IG1hbnkgPT4ncwoKICAgIG15ICRzZWxmID0gW107CiAgICAkc2VsZi0+W19zcGFjZXNfXSAgICAgICAgICAgICA9ICRpbnB1dF9oYXNoe3NwYWNlc307CiAgICAkc2VsZi0+W19sZXZlbF9dICAgICAgICAgICAgICA9ICRpbnB1dF9oYXNoe2xldmVsfTsKICAgICRzZWxmLT5bX2NpX2xldmVsX10gICAgICAgICAgID0gJGlucHV0X2hhc2h7Y2lfbGV2ZWx9OwogICAgJHNlbGYtPltfYXZhaWxhYmxlX3NwYWNlc19dICAgPSAkaW5wdXRfaGFzaHthdmFpbGFibGVfc3BhY2VzfTsKICAgICRzZWxmLT5bX2Nsb3NlZF9dICAgICAgICAgICAgID0gLTE7CiAgICAkc2VsZi0+W19jb21tYV9jb3VudF9dICAgICAgICA9IDA7CiAgICAkc2VsZi0+W19zZXF1ZW5jZV9udW1iZXJfXSAgICA9ICRpbnB1dF9oYXNoe2dudV9zZXF1ZW5jZV9udW1iZXJ9OwogICAgJHNlbGYtPltfaW5kZXhfXSAgICAgICAgICAgICAgPSAkaW5wdXRfaGFzaHtpbmRleH07CiAgICAkc2VsZi0+W19oYXZlX2NoaWxkX10gICAgICAgICA9IDA7CiAgICAkc2VsZi0+W19yZWNvdmVyYWJsZV9zcGFjZXNfXSA9IDA7CiAgICAkc2VsZi0+W19hbGlnbl9wYXJlbl9dICAgICAgICA9ICRpbnB1dF9oYXNoe2FsaWduX3BhcmVufTsKICAgICRzZWxmLT5bX21hcmtlZF9dICAgICAgICAgICAgID0gMDsKICAgICRzZWxmLT5bX3N0YWNrX2RlcHRoX10gICAgICAgID0gJGlucHV0X2hhc2h7c3RhY2tfZGVwdGh9OwogICAgJHNlbGYtPltfc3RhcnRpbmdfaW5kZXhfS19dICAgPSAkaW5wdXRfaGFzaHtzdGFydGluZ19pbmRleF9LfTsKICAgICRzZWxmLT5bX2Fycm93X2NvdW50X10gICAgICAgID0gMDsKCiAgICBibGVzcyAkc2VsZiwgJGNsYXNzOwogICAgcmV0dXJuICRzZWxmOwp9CgpzdWIgcGVybWFuZW50bHlfZGVjcmVhc2VfYXZhaWxhYmxlX3NwYWNlcyB7CgogICAgIyBtYWtlIGEgcGVybWFuZW50IHJlZHVjdGlvbiBpbiB0aGUgYXZhaWxhYmxlIGluZGVudGF0aW9uIHNwYWNlcwogICAgIyBhdCBvbmUgaW5kZW50YXRpb24gaXRlbS4gIE5PVEU6IGlmIHRoZXJlIGFyZSBjaGlsZCBub2RlcywgdGhlaXIKICAgICMgdG90YWwgU1BBQ0VTIG11c3QgYmUgcmVkdWNlZCBieSB0aGUgY2FsbGVyLgoKICAgIG15ICggJGl0ZW0sICRzcGFjZXNfbmVlZGVkICkgPSBAXzsKICAgIG15ICRhdmFpbGFibGVfc3BhY2VzID0gJGl0ZW0tPmdldF9hdmFpbGFibGVfc3BhY2VzKCk7CiAgICBteSAkZGVsZXRlZF9zcGFjZXMgPQogICAgICAoICRhdmFpbGFibGVfc3BhY2VzID4gJHNwYWNlc19uZWVkZWQgKQogICAgICA/ICRzcGFjZXNfbmVlZGVkCiAgICAgIDogJGF2YWlsYWJsZV9zcGFjZXM7CiAgICAkaXRlbS0+ZGVjcmVhc2VfYXZhaWxhYmxlX3NwYWNlcygkZGVsZXRlZF9zcGFjZXMpOwogICAgJGl0ZW0tPmRlY3JlYXNlX1NQQUNFUygkZGVsZXRlZF9zcGFjZXMpOwogICAgJGl0ZW0tPnNldF9yZWNvdmVyYWJsZV9zcGFjZXMoMCk7CgogICAgcmV0dXJuICRkZWxldGVkX3NwYWNlczsKfQoKc3ViIHRlbnRhdGl2ZWx5X2RlY3JlYXNlX2F2YWlsYWJsZV9zcGFjZXMgewoKICAgICMgV2UgYXJlIGFza2VkIHRvIHRlbnRhdGl2ZWx5IGRlbGV0ZSAkc3BhY2VzX25lZWRlZCBvZiBpbmRlbnRhdGlvbgogICAgIyBmb3IgYW4gaW5kZW50YXRpb24gaXRlbS4gIFdlIG1heSB3YW50IHRvIHVuZG8gdGhpcyBsYXRlci4gIE5PVEU6IGlmCiAgICAjIHRoZXJlIGFyZSBjaGlsZCBub2RlcywgdGhlaXIgdG90YWwgU1BBQ0VTIG11c3QgYmUgcmVkdWNlZCBieSB0aGUKICAgICMgY2FsbGVyLgogICAgbXkgKCAkaXRlbSwgJHNwYWNlc19uZWVkZWQgKSA9IEBfOwogICAgbXkgJGF2YWlsYWJsZV9zcGFjZXMgPSAkaXRlbS0+Z2V0X2F2YWlsYWJsZV9zcGFjZXMoKTsKICAgIG15ICRkZWxldGVkX3NwYWNlcyA9CiAgICAgICggJGF2YWlsYWJsZV9zcGFjZXMgPiAkc3BhY2VzX25lZWRlZCApCiAgICAgID8gJHNwYWNlc19uZWVkZWQKICAgICAgOiAkYXZhaWxhYmxlX3NwYWNlczsKICAgICRpdGVtLT5kZWNyZWFzZV9hdmFpbGFibGVfc3BhY2VzKCRkZWxldGVkX3NwYWNlcyk7CiAgICAkaXRlbS0+ZGVjcmVhc2VfU1BBQ0VTKCRkZWxldGVkX3NwYWNlcyk7CiAgICAkaXRlbS0+aW5jcmVhc2VfcmVjb3ZlcmFibGVfc3BhY2VzKCRkZWxldGVkX3NwYWNlcyk7CiAgICByZXR1cm4gJGRlbGV0ZWRfc3BhY2VzOwp9CgpzdWIgZ2V0X3N0YWNrX2RlcHRoIHsKICAgIHJldHVybiAkX1swXS0+W19zdGFja19kZXB0aF9dOwp9CgpzdWIgZ2V0X3NwYWNlcyB7CiAgICByZXR1cm4gJF9bMF0tPltfc3BhY2VzX107Cn0KCnN1YiBnZXRfbWFya2VkIHsKICAgIHJldHVybiAkX1swXS0+W19tYXJrZWRfXTsKfQoKc3ViIHNldF9tYXJrZWQgewogICAgbXkgKCAkc2VsZiwgJHZhbHVlICkgPSBAXzsKICAgIGlmICggZGVmaW5lZCgkdmFsdWUpICkgewogICAgICAgICRzZWxmLT5bX21hcmtlZF9dID0gJHZhbHVlOwogICAgfQogICAgcmV0dXJuICRzZWxmLT5bX21hcmtlZF9dOwp9CgpzdWIgZ2V0X2F2YWlsYWJsZV9zcGFjZXMgewogICAgcmV0dXJuICRfWzBdLT5bX2F2YWlsYWJsZV9zcGFjZXNfXTsKfQoKc3ViIGRlY3JlYXNlX1NQQUNFUyB7CiAgICBteSAoICRzZWxmLCAkdmFsdWUgKSA9IEBfOwogICAgaWYgKCBkZWZpbmVkKCR2YWx1ZSkgKSB7CiAgICAgICAgJHNlbGYtPltfc3BhY2VzX10gLT0gJHZhbHVlOwogICAgfQogICAgcmV0dXJuICRzZWxmLT5bX3NwYWNlc19dOwp9CgpzdWIgZGVjcmVhc2VfYXZhaWxhYmxlX3NwYWNlcyB7CiAgICBteSAoICRzZWxmLCAkdmFsdWUgKSA9IEBfOwogICAgaWYgKCBkZWZpbmVkKCR2YWx1ZSkgKSB7CiAgICAgICAgJHNlbGYtPltfYXZhaWxhYmxlX3NwYWNlc19dIC09ICR2YWx1ZTsKICAgIH0KICAgIHJldHVybiAkc2VsZi0+W19hdmFpbGFibGVfc3BhY2VzX107Cn0KCnN1YiBnZXRfYWxpZ25fcGFyZW4gewogICAgcmV0dXJuICRfWzBdLT5bX2FsaWduX3BhcmVuX107Cn0KCnN1YiBnZXRfcmVjb3ZlcmFibGVfc3BhY2VzIHsKICAgIHJldHVybiAkX1swXS0+W19yZWNvdmVyYWJsZV9zcGFjZXNfXTsKfQoKc3ViIHNldF9yZWNvdmVyYWJsZV9zcGFjZXMgewogICAgbXkgKCAkc2VsZiwgJHZhbHVlICkgPSBAXzsKICAgIGlmICggZGVmaW5lZCgkdmFsdWUpICkgewogICAgICAgICRzZWxmLT5bX3JlY292ZXJhYmxlX3NwYWNlc19dID0gJHZhbHVlOwogICAgfQogICAgcmV0dXJuICRzZWxmLT5bX3JlY292ZXJhYmxlX3NwYWNlc19dOwp9CgpzdWIgaW5jcmVhc2VfcmVjb3ZlcmFibGVfc3BhY2VzIHsKICAgIG15ICggJHNlbGYsICR2YWx1ZSApID0gQF87CiAgICBpZiAoIGRlZmluZWQoJHZhbHVlKSApIHsKICAgICAgICAkc2VsZi0+W19yZWNvdmVyYWJsZV9zcGFjZXNfXSArPSAkdmFsdWU7CiAgICB9CiAgICByZXR1cm4gJHNlbGYtPltfcmVjb3ZlcmFibGVfc3BhY2VzX107Cn0KCnN1YiBnZXRfY2lfbGV2ZWwgewogICAgcmV0dXJuICRfWzBdLT5bX2NpX2xldmVsX107Cn0KCnN1YiBnZXRfbGV2ZWwgewogICAgcmV0dXJuICRfWzBdLT5bX2xldmVsX107Cn0KCnN1YiBnZXRfc2VxdWVuY2VfbnVtYmVyIHsKICAgIHJldHVybiAkX1swXS0+W19zZXF1ZW5jZV9udW1iZXJfXTsKfQoKc3ViIGdldF9pbmRleCB7CiAgICByZXR1cm4gJF9bMF0tPltfaW5kZXhfXTsKfQoKc3ViIGdldF9zdGFydGluZ19pbmRleF9LIHsKICAgIHJldHVybiAkX1swXS0+W19zdGFydGluZ19pbmRleF9LX107Cn0KCnN1YiBzZXRfaGF2ZV9jaGlsZCB7CiAgICBteSAoICRzZWxmLCAkdmFsdWUgKSA9IEBfOwogICAgaWYgKCBkZWZpbmVkKCR2YWx1ZSkgKSB7CiAgICAgICAgJHNlbGYtPltfaGF2ZV9jaGlsZF9dID0gJHZhbHVlOwogICAgfQogICAgcmV0dXJuICRzZWxmLT5bX2hhdmVfY2hpbGRfXTsKfQoKc3ViIGdldF9oYXZlX2NoaWxkIHsKICAgIHJldHVybiAkX1swXS0+W19oYXZlX2NoaWxkX107Cn0KCnN1YiBzZXRfYXJyb3dfY291bnQgewogICAgbXkgKCAkc2VsZiwgJHZhbHVlICkgPSBAXzsKICAgIGlmICggZGVmaW5lZCgkdmFsdWUpICkgewogICAgICAgICRzZWxmLT5bX2Fycm93X2NvdW50X10gPSAkdmFsdWU7CiAgICB9CiAgICByZXR1cm4gJHNlbGYtPltfYXJyb3dfY291bnRfXTsKfQoKc3ViIGdldF9hcnJvd19jb3VudCB7CiAgICByZXR1cm4gJF9bMF0tPltfYXJyb3dfY291bnRfXTsKfQoKc3ViIHNldF9jb21tYV9jb3VudCB7CiAgICBteSAoICRzZWxmLCAkdmFsdWUgKSA9IEBfOwogICAgaWYgKCBkZWZpbmVkKCR2YWx1ZSkgKSB7CiAgICAgICAgJHNlbGYtPltfY29tbWFfY291bnRfXSA9ICR2YWx1ZTsKICAgIH0KICAgIHJldHVybiAkc2VsZi0+W19jb21tYV9jb3VudF9dOwp9CgpzdWIgZ2V0X2NvbW1hX2NvdW50IHsKICAgIHJldHVybiAkX1swXS0+W19jb21tYV9jb3VudF9dOwp9CgpzdWIgc2V0X2Nsb3NlZCB7CiAgICBteSAoICRzZWxmLCAkdmFsdWUgKSA9IEBfOwogICAgaWYgKCBkZWZpbmVkKCR2YWx1ZSkgKSB7CiAgICAgICAgJHNlbGYtPltfY2xvc2VkX10gPSAkdmFsdWU7CiAgICB9CiAgICByZXR1cm4gJHNlbGYtPltfY2xvc2VkX107Cn0KCnN1YiBnZXRfY2xvc2VkIHsKICAgIHJldHVybiAkX1swXS0+W19jbG9zZWRfXTsKfQoxOwo=</File>
        <File Location="Kernel/cpan-lib/Perl/Tidy/IOScalar.pm" Permission="660" Encode="Base64">IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBUaGlzIGlzIGEgc3RyaXBwZWQgZG93biB2ZXJzaW9uIG9mIElPOjpTY2FsYXIKIyBHaXZlbiBhIHJlZmVyZW5jZSB0byBhIHNjYWxhciwgaXQgc3VwcGxpZXMgZWl0aGVyOgojIGEgZ2V0bGluZSBtZXRob2Qgd2hpY2ggcmVhZHMgbGluZXMgKG1vZGU9J3InKSwgb3IKIyBhIHByaW50IG1ldGhvZCB3aGljaCByZWFkcyBsaW5lcyAobW9kZT0ndycpCiMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCnBhY2thZ2UgUGVybDo6VGlkeTo6SU9TY2FsYXI7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIENhcnA7Cm91ciAkVkVSU0lPTiA9ICcyMDIxMDExMSc7CgpzdWIgQVVUT0xPQUQgewoKICAgICMgQ2F0Y2ggYW55IHVuZGVmaW5lZCBzdWIgY2FsbHMgc28gdGhhdCB3ZSBhcmUgc3VyZSB0byBnZXQKICAgICMgc29tZSBkaWFnbm9zdGljIGluZm9ybWF0aW9uLiAgVGhpcyBzdWIgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZAogICAgIyBleGNlcHQgZm9yIGEgcHJvZ3JhbW1pbmcgZXJyb3IuCiAgICBvdXIgJEFVVE9MT0FEOwogICAgcmV0dXJuIGlmICggJEFVVE9MT0FEID1+IC9cYkRFU1RST1kkLyApOwogICAgbXkgKCAkcGtnLCAkZm5hbWUsICRsbm8gKSA9IGNhbGxlcigpOwogICAgbXkgJG15X3BhY2thZ2UgPSBfX1BBQ0tBR0VfXzsKICAgIHByaW50IFNUREVSUiA8PEVPTTsKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFcnJvciBkZXRlY3RlZCBpbiBwYWNrYWdlICckbXlfcGFja2FnZScsIHZlcnNpb24gJFZFUlNJT04KUmVjZWl2ZWQgdW5leHBlY3RlZCBBVVRPTE9BRCBjYWxsIGZvciBzdWIgJyRBVVRPTE9BRCcKQ2FsbGVkIGZyb20gcGFja2FnZTogJyRwa2cnICAKQ2FsbGVkIGZyb20gRmlsZSAnJGZuYW1lJyAgYXQgbGluZSAnJGxubycKVGhpcyBlcnJvciBpcyBwcm9iYWJseSBkdWUgdG8gYSByZWNlbnQgcHJvZ3JhbW1pbmcgY2hhbmdlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRU9NCiAgICBleGl0IDE7Cn0KCnN1YiBERVNUUk9ZIHsKCiAgICAjIHJlcXVpcmVkIHRvIGF2b2lkIGNhbGwgdG8gQVVUT0xPQUQgaW4gc29tZSB2ZXJzaW9ucyBvZiBwZXJsCn0KCnN1YiBuZXcgewogICAgbXkgKCAkcGFja2FnZSwgJHJzY2FsYXIsICRtb2RlICkgPSBAXzsKICAgIG15ICRyZWYgPSByZWYgJHJzY2FsYXI7CiAgICBpZiAoICRyZWYgbmUgJ1NDQUxBUicgKSB7CiAgICAgICAgY29uZmVzcyA8PEVPTTsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmV4cGVjdGluZyByZWYgdG8gU0NBTEFSIGJ1dCBnb3QgcmVmIHRvICgkcmVmKTsgdHJhY2UgZm9sbG93czoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVPTQoKICAgIH0KICAgIGlmICggJG1vZGUgZXEgJ3cnICkgewogICAgICAgICR7JHJzY2FsYXJ9ID0gIiI7CiAgICAgICAgcmV0dXJuIGJsZXNzIFsgJHJzY2FsYXIsICRtb2RlIF0sICRwYWNrYWdlOwogICAgfQogICAgZWxzaWYgKCAkbW9kZSBlcSAncicgKSB7CgogICAgICAgICMgQ29udmVydCBhIHNjYWxhciB0byBhbiBhcnJheS4KICAgICAgICAjIFRoaXMgYXZvaWRzIGxvb2tpbmcgZm9yICJcbiIgb24gZWFjaCBjYWxsIHRvIGdldGxpbmUKICAgICAgICAjCiAgICAgICAgIyBOT1RFUzogVGhlIC0xIGNvdW50IGlzIG5lZWRlZCB0byBhdm9pZCBsb3NzIG9mIHRyYWlsaW5nIGJsYW5rIGxpbmVzCiAgICAgICAgIyAod2hpY2ggbWlnaHQgYmUgaW1wb3J0YW50IGluIGEgREFUQSBzZWN0aW9uKS4KICAgICAgICBteSBAYXJyYXk7CiAgICAgICAgaWYgKCAkcnNjYWxhciAmJiAkeyRyc2NhbGFyfSApIHsKCiAgICAgICAgICAgICNAYXJyYXkgPSBtYXAgeyAkXyAuPSAiXG4iIH0gc3BsaXQgL1xuLywgJHskcnNjYWxhcn0sIC0xOwogICAgICAgICAgICBAYXJyYXkgPSBtYXAgeyAkXyAuICJcbiIgfSBzcGxpdCAvXG4vLCAkeyRyc2NhbGFyfSwgLTE7CgogICAgICAgICAgICAjIHJlbW92ZSBwb3NzaWJsZSBleHRyYSBibGFuayBsaW5lIGludHJvZHVjZWQgd2l0aCBzcGxpdAogICAgICAgICAgICBpZiAoIEBhcnJheSAmJiAkYXJyYXlbLTFdIGVxICJcbiIgKSB7IHBvcCBAYXJyYXkgfQogICAgICAgIH0KICAgICAgICBteSAkaV9uZXh0ID0gMDsKICAgICAgICByZXR1cm4gYmxlc3MgWyBcQGFycmF5LCAkbW9kZSwgJGlfbmV4dCBdLCAkcGFja2FnZTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIGNvbmZlc3MgPDxFT007Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpleHBlY3RpbmcgbW9kZSA9ICdyJyBvciAndycgYnV0IGdvdCBtb2RlICgkbW9kZSk7IHRyYWNlIGZvbGxvd3M6Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFT00KICAgIH0KfQoKc3ViIGdldGxpbmUgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIG15ICRtb2RlID0gJHNlbGYtPlsxXTsKICAgIGlmICggJG1vZGUgbmUgJ3InICkgewogICAgICAgIGNvbmZlc3MgPDxFT007Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpnZXRsaW5lIGNhbGwgcmVxdWlyZXMgbW9kZSA9ICdyJyBidXQgbW9kZSA9ICgkbW9kZSk7IHRyYWNlIGZvbGxvd3M6Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFT00KICAgIH0KICAgIG15ICRpID0gJHNlbGYtPlsyXSsrOwogICAgcmV0dXJuICRzZWxmLT5bMF0tPlskaV07Cn0KCnN1YiBwcmludCB7CiAgICBteSAoICRzZWxmLCAkbXNnICkgPSBAXzsKICAgIG15ICRtb2RlID0gJHNlbGYtPlsxXTsKICAgIGlmICggJG1vZGUgbmUgJ3cnICkgewogICAgICAgIGNvbmZlc3MgPDxFT007Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpwcmludCBjYWxsIHJlcXVpcmVzIG1vZGUgPSAndycgYnV0IG1vZGUgPSAoJG1vZGUpOyB0cmFjZSBmb2xsb3dzOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCiAgICB9CiAgICAkeyAkc2VsZi0+WzBdIH0gLj0gJG1zZzsKICAgIHJldHVybjsKfQpzdWIgY2xvc2UgeyByZXR1cm4gfQoxOwoK</File>
        <File Location="Kernel/cpan-lib/Perl/Tidy/HtmlWriter.pm" Permission="660" Encode="Base64">IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBUaGUgUGVybDo6VGlkeTo6SHRtbFdyaXRlciBjbGFzcyB3cml0ZXMgYSBjb3B5IG9mIHRoZSBpbnB1dCBzdHJlYW0gaW4gaHRtbAojCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKcGFja2FnZSBQZXJsOjpUaWR5OjpIdG1sV3JpdGVyOwp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm91ciAkVkVSU0lPTiA9ICcyMDIxMDExMSc7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7CgojIGNsYXNzIHZhcmlhYmxlcwp1c2UgdmFycyBxd3sKICAlaHRtbF9jb2xvcgogICVodG1sX2JvbGQKICAlaHRtbF9pdGFsaWMKICAldG9rZW5fc2hvcnRfbmFtZXMKICAlc2hvcnRfdG9fbG9uZ19uYW1lcwogICRyT3B0cwogICRjc3NfZmlsZW5hbWUKICAkY3NzX2xpbmtuYW1lCiAgJG1pc3NpbmdfaHRtbF9lbnRpdGllcwogICRtaXNzaW5nX3BvZF9odG1sCn07CgojIHJlcGxhY2UgdW5zYWZlIGNoYXJhY3RlcnMgd2l0aCBIVE1MIGVudGl0eSByZXByZXNlbnRhdGlvbiBpZiBIVE1MOjpFbnRpdGllcwojIGlzIGF2YWlsYWJsZQojeyBldmFsICJ1c2UgSFRNTDo6RW50aXRpZXMiOyAkbWlzc2luZ19odG1sX2VudGl0aWVzID0gJEA7IH0KCkJFR0lOIHsKICAgIGlmICggIWV2YWwgeyByZXF1aXJlIEhUTUw6OkVudGl0aWVzOyAxIH0gKSB7CiAgICAgICAgJG1pc3NpbmdfaHRtbF9lbnRpdGllcyA9ICRAID8gJEAgOiAxOwogICAgfQogICAgaWYgKCAhZXZhbCB7IHJlcXVpcmUgUG9kOjpIdG1sOyAxIH0gKSB7CiAgICAgICAgJG1pc3NpbmdfcG9kX2h0bWwgPSAkQCA/ICRAIDogMTsKICAgIH0KfQoKc3ViIEFVVE9MT0FEIHsKCiAgICAjIENhdGNoIGFueSB1bmRlZmluZWQgc3ViIGNhbGxzIHNvIHRoYXQgd2UgYXJlIHN1cmUgdG8gZ2V0CiAgICAjIHNvbWUgZGlhZ25vc3RpYyBpbmZvcm1hdGlvbi4gIFRoaXMgc3ViIHNob3VsZCBuZXZlciBiZSBjYWxsZWQKICAgICMgZXhjZXB0IGZvciBhIHByb2dyYW1taW5nIGVycm9yLgogICAgb3VyICRBVVRPTE9BRDsKICAgIHJldHVybiBpZiAoICRBVVRPTE9BRCA9fiAvXGJERVNUUk9ZJC8gKTsKICAgIG15ICggJHBrZywgJGZuYW1lLCAkbG5vICkgPSBjYWxsZXIoKTsKICAgIG15ICRteV9wYWNrYWdlID0gX19QQUNLQUdFX187CiAgICBwcmludCBTVERFUlIgPDxFT007Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRXJyb3IgZGV0ZWN0ZWQgaW4gcGFja2FnZSAnJG15X3BhY2thZ2UnLCB2ZXJzaW9uICRWRVJTSU9OClJlY2VpdmVkIHVuZXhwZWN0ZWQgQVVUT0xPQUQgY2FsbCBmb3Igc3ViICckQVVUT0xPQUQnCkNhbGxlZCBmcm9tIHBhY2thZ2U6ICckcGtnJyAgCkNhbGxlZCBmcm9tIEZpbGUgJyRmbmFtZScgIGF0IGxpbmUgJyRsbm8nClRoaXMgZXJyb3IgaXMgcHJvYmFibHkgZHVlIHRvIGEgcmVjZW50IHByb2dyYW1taW5nIGNoYW5nZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVPTQogICAgZXhpdCAxOwp9CgpzdWIgREVTVFJPWSB7CgogICAgIyByZXF1aXJlZCB0byBhdm9pZCBjYWxsIHRvIEFVVE9MT0FEIGluIHNvbWUgdmVyc2lvbnMgb2YgcGVybAp9CgpzdWIgbmV3IHsKCiAgICBteSAoICRjbGFzcywgQGFyZ3MgKSA9IEBfOwoKICAgIG15ICVkZWZhdWx0cyA9ICgKICAgICAgICBpbnB1dF9maWxlICAgICAgICAgPT4gdW5kZWYsCiAgICAgICAgaHRtbF9maWxlICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIGV4dGVuc2lvbiAgICAgICAgICA9PiB1bmRlZiwKICAgICAgICBodG1sX3RvY19leHRlbnNpb24gPT4gdW5kZWYsCiAgICAgICAgaHRtbF9zcmNfZXh0ZW5zaW9uID0+IHVuZGVmLAogICAgKTsKICAgIG15ICVhcmdzID0gKCAlZGVmYXVsdHMsIEBhcmdzICk7CgogICAgbXkgJGlucHV0X2ZpbGUgICAgICAgICA9ICRhcmdze2lucHV0X2ZpbGV9OwogICAgbXkgJGh0bWxfZmlsZSAgICAgICAgICA9ICRhcmdze2h0bWxfZmlsZX07CiAgICBteSAkZXh0ZW5zaW9uICAgICAgICAgID0gJGFyZ3N7ZXh0ZW5zaW9ufTsKICAgIG15ICRodG1sX3RvY19leHRlbnNpb24gPSAkYXJnc3todG1sX3RvY19leHRlbnNpb259OwogICAgbXkgJGh0bWxfc3JjX2V4dGVuc2lvbiA9ICRhcmdze2h0bWxfc3JjX2V4dGVuc2lvbn07CgogICAgbXkgJGh0bWxfZmlsZV9vcGVuZWQgPSAwOwogICAgbXkgJGh0bWxfZmg7CiAgICAoICRodG1sX2ZoLCBteSAkaHRtbF9maWxlbmFtZSApID0KICAgICAgUGVybDo6VGlkeTo6c3RyZWFtaGFuZGxlKCAkaHRtbF9maWxlLCAndycgKTsKICAgIHVubGVzcyAoJGh0bWxfZmgpIHsKICAgICAgICBQZXJsOjpUaWR5OjpXYXJuKCJjYW4ndCBvcGVuICRodG1sX2ZpbGU6ICQhXG4iKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICAkaHRtbF9maWxlX29wZW5lZCA9IDE7CgogICAgaWYgKCAhJGlucHV0X2ZpbGUgfHwgJGlucHV0X2ZpbGUgZXEgJy0nIHx8IHJlZigkaW5wdXRfZmlsZSkgKSB7CiAgICAgICAgJGlucHV0X2ZpbGUgPSAiTk9OQU1FIjsKICAgIH0KCiAgICAjIHdyaXRlIHRoZSB0YWJsZSBvZiBjb250ZW50cyB0byBhIHN0cmluZwogICAgbXkgJHRvY19zdHJpbmc7CiAgICBteSAkaHRtbF90b2NfZmggPSBQZXJsOjpUaWR5OjpJT1NjYWxhci0+bmV3KCBcJHRvY19zdHJpbmcsICd3JyApOwoKICAgIG15ICRodG1sX3ByZV9maDsKICAgIG15IEBwcmVfc3RyaW5nX3N0YWNrOwogICAgaWYgKCAkck9wdHMtPnsnaHRtbC1wcmUtb25seSd9ICkgewoKICAgICAgICAjIHByZSBzZWN0aW9uIGdvZXMgZGlyZWN0bHkgdG8gdGhlIG91dHB1dCBzdHJlYW0KICAgICAgICAkaHRtbF9wcmVfZmggPSAkaHRtbF9maDsKICAgICAgICAkaHRtbF9wcmVfZmgtPnByaW50KCA8PCJQUkVfRU5EIik7CjxwcmU+ClBSRV9FTkQKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIHByZSBzZWN0aW9uIGdvIG91dCB0byBhIHRlbXBvcmFyeSBzdHJpbmcKICAgICAgICBteSAkcHJlX3N0cmluZzsKICAgICAgICAkaHRtbF9wcmVfZmggPSBQZXJsOjpUaWR5OjpJT1NjYWxhci0+bmV3KCBcJHByZV9zdHJpbmcsICd3JyApOwogICAgICAgIHB1c2ggQHByZV9zdHJpbmdfc3RhY2ssIFwkcHJlX3N0cmluZzsKICAgIH0KCiAgICAjIHBvZCB0ZXh0IGdldHMgZGl2ZXJ0ZWQgaWYgdGhlICdwb2QyaHRtbCcgaXMgdXNlZAogICAgbXkgJGh0bWxfcG9kX2ZoOwogICAgbXkgJHBvZF9zdHJpbmc7CiAgICBpZiAoICRyT3B0cy0+eydwb2QyaHRtbCd9ICkgewogICAgICAgIGlmICggJHJPcHRzLT57J2h0bWwtcHJlLW9ubHknfSApIHsKICAgICAgICAgICAgdW5kZWYgJHJPcHRzLT57J3BvZDJodG1sJ307CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAjI2V2YWwgInVzZSBQb2Q6Okh0bWwiOwogICAgICAgICAgICAjaWYgKCRAKSB7CiAgICAgICAgICAgIGlmICgkbWlzc2luZ19wb2RfaHRtbCkgewogICAgICAgICAgICAgICAgUGVybDo6VGlkeTo6V2FybigKInVuYWJsZSB0byBmaW5kIFBvZDo6SHRtbDsgY2Fubm90IHVzZSBwb2QyaHRtbFxuLW5wb2QgZGlzYWJsZXMgdGhpcyBtZXNzYWdlXG4iCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgdW5kZWYgJHJPcHRzLT57J3BvZDJodG1sJ307CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkaHRtbF9wb2RfZmggPSBQZXJsOjpUaWR5OjpJT1NjYWxhci0+bmV3KCBcJHBvZF9zdHJpbmcsICd3JyApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG15ICR0b2NfZmlsZW5hbWU7CiAgICBteSAkc3JjX2ZpbGVuYW1lOwogICAgaWYgKCAkck9wdHMtPnsnZnJhbWVzJ30gKSB7CiAgICAgICAgdW5sZXNzICgkZXh0ZW5zaW9uKSB7CiAgICAgICAgICAgIFBlcmw6OlRpZHk6Oldhcm4oCiJjYW5ub3QgdXNlIGZyYW1lcyB3aXRob3V0IGEgc3BlY2lmaWVkIG91dHB1dCBleHRlbnNpb247IGlnbm9yaW5nIC1mcm1cbiIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgdW5kZWYgJHJPcHRzLT57J2ZyYW1lcyd9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJHRvY19maWxlbmFtZSA9ICRpbnB1dF9maWxlIC4gJGh0bWxfdG9jX2V4dGVuc2lvbiAuICRleHRlbnNpb247CiAgICAgICAgICAgICRzcmNfZmlsZW5hbWUgPSAkaW5wdXRfZmlsZSAuICRodG1sX3NyY19leHRlbnNpb24gLiAkZXh0ZW5zaW9uOwogICAgICAgIH0KICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgT3V0cHV0IGlzIG5vdyBkaXJlY3RlZCBhcyBmb2xsb3dzOgogICAgIyBodG1sX3RvY19maCA8LS0gdGFibGUgb2YgY29udGVudHMgaXRlbXMKICAgICMgaHRtbF9wcmVfZmggPC0tIHRoZSA8cHJlPiBzZWN0aW9uIG9mIGZvcm1hdHRlZCBjb2RlLCBleGNlcHQ6CiAgICAjIGh0bWxfcG9kX2ZoIDwtLSBwb2QgZ29lcyBoZXJlIHdpdGggdGhlIHBvZDJodG1sIG9wdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgbXkgJHRpdGxlID0gJHJPcHRzLT57J3RpdGxlJ307CiAgICB1bmxlc3MgKCR0aXRsZSkgewogICAgICAgICggJHRpdGxlLCBteSAkcGF0aCApID0gZmlsZXBhcnNlKCRpbnB1dF9maWxlKTsKICAgIH0KICAgIG15ICR0b2NfaXRlbV9jb3VudCA9IDA7CiAgICBteSAkaW5fdG9jX3BhY2thZ2UgPSAiIjsKICAgIG15ICRsYXN0X2xldmVsICAgICA9IDA7CiAgICByZXR1cm4gYmxlc3MgewogICAgICAgIF9pbnB1dF9maWxlICAgICAgICA9PiAkaW5wdXRfZmlsZSwgICAgICAgICAgIyBuYW1lIG9mIGlucHV0IGZpbGUKICAgICAgICBfdGl0bGUgICAgICAgICAgICAgPT4gJHRpdGxlLCAgICAgICAgICAgICAgICMgdGl0bGUsIHVuZXNjYXBlZAogICAgICAgIF9odG1sX2ZpbGUgICAgICAgICA9PiAkaHRtbF9maWxlLCAgICAgICAgICAgIyBuYW1lIG9mIC5odG1sIG91dHB1dCBmaWxlCiAgICAgICAgX3RvY19maWxlbmFtZSAgICAgID0+ICR0b2NfZmlsZW5hbWUsICAgICAgICAjIGZvciBmcmFtZXMgb3B0aW9uCiAgICAgICAgX3NyY19maWxlbmFtZSAgICAgID0+ICRzcmNfZmlsZW5hbWUsICAgICAgICAjIGZvciBmcmFtZXMgb3B0aW9uCiAgICAgICAgX2h0bWxfZmlsZV9vcGVuZWQgID0+ICRodG1sX2ZpbGVfb3BlbmVkLCAgICAjIGEgZmxhZwogICAgICAgIF9odG1sX2ZoICAgICAgICAgICA9PiAkaHRtbF9maCwgICAgICAgICAgICAgIyB0aGUgb3V0cHV0IHN0cmVhbQogICAgICAgIF9odG1sX3ByZV9maCAgICAgICA9PiAkaHRtbF9wcmVfZmgsICAgICAgICAgIyBwcmUgc2VjdGlvbiBnb2VzIGhlcmUKICAgICAgICBfcnByZV9zdHJpbmdfc3RhY2sgPT4gXEBwcmVfc3RyaW5nX3N0YWNrLCAgICMgc3RhY2sgb2YgcHJlIHNlY3Rpb25zCiAgICAgICAgX2h0bWxfcG9kX2ZoICAgICAgID0+ICRodG1sX3BvZF9maCwgICAgICAgICAjIHBvZCBnb2VzIGhlcmUgaWYgcG9kMmh0bWwKICAgICAgICBfcnBvZF9zdHJpbmcgICAgICAgPT4gXCRwb2Rfc3RyaW5nLCAgICAgICAgICMgc3RyaW5nIGhvbGRpbmcgcG9kCiAgICAgICAgX3BvZF9jdXRfY291bnQgICAgID0+IDAsICAgICAgICAgICAgICAgICAgICAjIGhvdyBtYW55ID1jdXQncz8KICAgICAgICBfaHRtbF90b2NfZmggICAgICAgPT4gJGh0bWxfdG9jX2ZoLCAgICAgICAgICMgZmggZm9yIHRhYmxlIG9mIGNvbnRlbnRzCiAgICAgICAgX3J0b2Nfc3RyaW5nICAgICAgID0+IFwkdG9jX3N0cmluZywgICAgICAgICAjIHN0cmluZyBob2xkaW5nIHRvYwogICAgICAgIF9ydG9jX2l0ZW1fY291bnQgICA9PiBcJHRvY19pdGVtX2NvdW50LCAgICAgIyBob3cgbWFueSB0b2MgaXRlbXMKICAgICAgICBfcmluX3RvY19wYWNrYWdlICAgPT4gXCRpbl90b2NfcGFja2FnZSwgICAgICMgcGFja2FnZSBuYW1lCiAgICAgICAgX3J0b2NfbmFtZV9jb3VudCAgID0+IHt9LCAgICAgICAgICAgICAgICAgICAjIGhhc2ggdG8gdHJhY2sgdW5pcXVlIG5hbWVzCiAgICAgICAgX3JwYWNrYWdlX3N0YWNrICAgID0+IFtdLCAgICAgICAgICAgICAgICAgICAjIHN0YWNrIHRvIGNoZWNrIGZvciBwYWNrYWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5hbWUgY2hhbmdlcwogICAgICAgIF9ybGFzdF9sZXZlbCAgICAgICA9PiBcJGxhc3RfbGV2ZWwsICAgICAgICAgIyBicmFjZSBpbmRlbnRhdGlvbiBsZXZlbAogICAgfSwgJGNsYXNzOwp9CgpzdWIgY2xvc2Vfb2JqZWN0IHsKICAgIG15ICgkb2JqZWN0KSA9IEBfOwoKICAgICMgcmV0dXJucyB0cnVlIGlmIGNsb3NlIHdvcmtzLCBmYWxzZSBpZiBub3QKICAgICMgZmFpbHVyZSBwcm9iYWJseSBtZWFucyB0aGVyZSBpcyBubyBjbG9zZSBtZXRob2QKICAgIHJldHVybiBldmFsIHsgJG9iamVjdC0+Y2xvc2UoKTsgMSB9Owp9CgpzdWIgYWRkX3RvY19pdGVtIHsKCiAgICAjIEFkZCBhbiBpdGVtIHRvIHRoZSBodG1sIHRhYmxlIG9mIGNvbnRlbnRzLgogICAgIyBUaGlzIGlzIGNhbGxlZCBldmVuIGlmIG5vIHRhYmxlIG9mIGNvbnRlbnRzIGlzIHdyaXR0ZW4sCiAgICAjIGJlY2F1c2Ugd2Ugc3RpbGwgd2FudCB0byBwdXQgdGhlIGFuY2hvcnMgaW4gdGhlIDxwcmU+IHRleHQuCiAgICAjIFdlIGFyZSBnaXZlbiBhbiBhbmNob3IgbmFtZSBhbmQgaXRzIHR5cGU7IHR5cGVzIGFyZToKICAgICMgICAgICAncGFja2FnZScsICdzdWInLCAnX19FTkRfXycsICdfX0RBVEFfXycsICdFT0YnCiAgICAjIFRoZXJlIG11c3QgYmUgYW4gJ0VPRicgY2FsbCBhdCB0aGUgZW5kIHRvIHdyYXAgdGhpbmdzIHVwLgogICAgbXkgKCAkc2VsZiwgJG5hbWUsICR0eXBlICkgPSBAXzsKICAgIG15ICRodG1sX3RvY19maCAgICAgPSAkc2VsZi0+e19odG1sX3RvY19maH07CiAgICBteSAkaHRtbF9wcmVfZmggICAgID0gJHNlbGYtPntfaHRtbF9wcmVfZmh9OwogICAgbXkgJHJ0b2NfbmFtZV9jb3VudCA9ICRzZWxmLT57X3J0b2NfbmFtZV9jb3VudH07CiAgICBteSAkcnRvY19pdGVtX2NvdW50ID0gJHNlbGYtPntfcnRvY19pdGVtX2NvdW50fTsKICAgIG15ICRybGFzdF9sZXZlbCAgICAgPSAkc2VsZi0+e19ybGFzdF9sZXZlbH07CiAgICBteSAkcmluX3RvY19wYWNrYWdlID0gJHNlbGYtPntfcmluX3RvY19wYWNrYWdlfTsKICAgIG15ICRycGFja2FnZV9zdGFjayAgPSAkc2VsZi0+e19ycGFja2FnZV9zdGFja307CgogICAgIyBwYWNrYWdlcyBjb250YWluIHN1Ymxpc3RzIG9mIHN1YnMsIHNvIHRvIGF2b2lkIGVycm9ycyBhbGwgcGFja2FnZQogICAgIyBpdGVtcyBhcmUgd3JpdHRlbiBhbmQgZmluaXNoZWQgd2l0aCB0aGUgZm9sbG93aW5nIHJvdXRpbmVzCiAgICBteSAkZW5kX3BhY2thZ2VfbGlzdCA9IHN1YiB7CiAgICAgICAgaWYgKCAkeyRyaW5fdG9jX3BhY2thZ2V9ICkgewogICAgICAgICAgICAkaHRtbF90b2NfZmgtPnByaW50KCI8L3VsPlxuPC9saT5cbiIpOwogICAgICAgICAgICAkeyRyaW5fdG9jX3BhY2thZ2V9ID0gIiI7CiAgICAgICAgfQogICAgfTsKCiAgICBteSAkc3RhcnRfcGFja2FnZV9saXN0ID0gc3ViIHsKICAgICAgICBteSAoICR1bmlxdWVfbmFtZSwgJHBhY2thZ2UgKSA9IEBfOwogICAgICAgIGlmICggJHskcmluX3RvY19wYWNrYWdlfSApIHsgJGVuZF9wYWNrYWdlX2xpc3QtPigpIH0KICAgICAgICAkaHRtbF90b2NfZmgtPnByaW50KDw8RU9NKTsKPGxpPjxhIGhyZWY9XCIjJHVuaXF1ZV9uYW1lXCI+cGFja2FnZSAkcGFja2FnZTwvYT4KPHVsPgpFT00KICAgICAgICAkeyRyaW5fdG9jX3BhY2thZ2V9ID0gJHBhY2thZ2U7CiAgICB9OwoKICAgICMgc3RhcnQgdGhlIHRhYmxlIG9mIGNvbnRlbnRzIG9uIHRoZSBmaXJzdCBpdGVtCiAgICB1bmxlc3MgKCAkeyRydG9jX2l0ZW1fY291bnR9ICkgewoKICAgICAgICAjIGJ1dCBqdXN0IHF1aXQgaWYgd2UgaGl0IEVPRiB3aXRob3V0IGFueSBvdGhlciBlbnRyaWVzCiAgICAgICAgIyBpbiB0aGlzIGNhc2UsIHRoZXJlIHdpbGwgYmUgbm8gdG9jCiAgICAgICAgcmV0dXJuIGlmICggJHR5cGUgZXEgJ0VPRicgKTsKICAgICAgICAkaHRtbF90b2NfZmgtPnByaW50KCA8PCJUT0NfRU5EIik7CjwhLS0gQkVHSU4gQ09ERSBJTkRFWCAtLT48YSBuYW1lPSJjb2RlLWluZGV4Ij48L2E+Cjx1bD4KVE9DX0VORAogICAgfQogICAgJHskcnRvY19pdGVtX2NvdW50fSsrOwoKICAgICMgbWFrZSBhIHVuaXF1ZSBhbmNob3IgbmFtZSBmb3IgdGhpcyBsb2NhdGlvbjoKICAgICMgICAtIHBhY2thZ2VzIGdldCBhICdwYWNrYWdlLScgcHJlZml4CiAgICAjICAgLSBzdWJzIHVzZSB0aGVpciBuYW1lcwogICAgbXkgJHVuaXF1ZV9uYW1lID0gJG5hbWU7CiAgICBpZiAoICR0eXBlIGVxICdwYWNrYWdlJyApIHsgJHVuaXF1ZV9uYW1lID0gInBhY2thZ2UtJG5hbWUiIH0KCiAgICAjIGFwcGVuZCAnLTEnLCAnLTInLCBldGMgaWYgbmVjZXNzYXJ5IHRvIG1ha2UgdW5pcXVlOyB0aGlzIHdpbGwKICAgICMgYmUgdW5pcXVlIGJlY2F1c2Ugc3VicyBhbmQgcGFja2FnZXMgY2Fubm90IGhhdmUgYSAnLScKICAgIGlmICggbXkgJGNvdW50ID0gJHJ0b2NfbmFtZV9jb3VudC0+eyBsYyAkdW5pcXVlX25hbWUgfSsrICkgewogICAgICAgICR1bmlxdWVfbmFtZSAuPSAiLSRjb3VudCI7CiAgICB9CgogICAgIyAgIC0gYWxsIG5hbWVzIGdldCB0ZXJtaW5hbCAnLScgaWYgcG9kMmh0bWwgaXMgdXNlZCwgdG8gYXZvaWQKICAgICMgICAgIGNvbmZsaWN0cyB3aXRoIGFuY2hvciBuYW1lcyBjcmVhdGVkIGJ5IHBvZDJodG1sCiAgICBpZiAoICRyT3B0cy0+eydwb2QyaHRtbCd9ICkgeyAkdW5pcXVlX25hbWUgLj0gJy0nIH0KCiAgICAjIHN0YXJ0L3N0b3AgbGlzdHMgb2Ygc3VicwogICAgaWYgKCAkdHlwZSBlcSAnc3ViJyApIHsKICAgICAgICBteSAkcGFja2FnZSA9ICRycGFja2FnZV9zdGFjay0+WyAkeyRybGFzdF9sZXZlbH0gXTsKICAgICAgICB1bmxlc3MgKCRwYWNrYWdlKSB7ICRwYWNrYWdlID0gJ21haW4nIH0KCiAgICAgICAgIyBpZiB3ZSdyZSBhbHJlYWR5IGluIGEgcGFja2FnZS9zdWIgbGlzdCwgYmUgc3VyZSBpdHMgdGhlIHJpZ2h0CiAgICAgICAgIyBwYWNrYWdlIG9yIGVsc2UgY2xvc2UgaXQKICAgICAgICBpZiAoICR7JHJpbl90b2NfcGFja2FnZX0gJiYgJHskcmluX3RvY19wYWNrYWdlfSBuZSAkcGFja2FnZSApIHsKICAgICAgICAgICAgJGVuZF9wYWNrYWdlX2xpc3QtPigpOwogICAgICAgIH0KCiAgICAgICAgIyBzdGFydCBhIHBhY2thZ2Uvc3ViIGxpc3QgaWYgbmVjZXNzYXJ5CiAgICAgICAgdW5sZXNzICggJHskcmluX3RvY19wYWNrYWdlfSApIHsKICAgICAgICAgICAgJHN0YXJ0X3BhY2thZ2VfbGlzdC0+KCAkdW5pcXVlX25hbWUsICRwYWNrYWdlICk7CiAgICAgICAgfQogICAgfQoKICAgICMgbm93IHdyaXRlIGFuIGVudHJ5IGluIHRoZSB0b2MgZm9yIHRoaXMgaXRlbQogICAgaWYgKCAkdHlwZSBlcSAncGFja2FnZScgKSB7CiAgICAgICAgJHN0YXJ0X3BhY2thZ2VfbGlzdC0+KCAkdW5pcXVlX25hbWUsICRuYW1lICk7CiAgICB9CiAgICBlbHNpZiAoICR0eXBlIGVxICdzdWInICkgewogICAgICAgICRodG1sX3RvY19maC0+cHJpbnQoIjxsaT48YSBocmVmPVwiIyR1bmlxdWVfbmFtZVwiPiRuYW1lPC9hPjwvbGk+XG4iKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRlbmRfcGFja2FnZV9saXN0LT4oKTsKICAgICAgICAkaHRtbF90b2NfZmgtPnByaW50KCI8bGk+PGEgaHJlZj1cIiMkdW5pcXVlX25hbWVcIj4kbmFtZTwvYT48L2xpPlxuIik7CiAgICB9CgogICAgIyB3cml0ZSB0aGUgYW5jaG9yIGluIHRoZSA8cHJlPiBzZWN0aW9uCiAgICAkaHRtbF9wcmVfZmgtPnByaW50KCI8YSBuYW1lPVwiJHVuaXF1ZV9uYW1lXCI+PC9hPiIpOwoKICAgICMgZW5kIHRoZSB0YWJsZSBvZiBjb250ZW50cywgaWYgYW55LCBvbiB0aGUgZW5kIG9mIGZpbGUKICAgIGlmICggJHR5cGUgZXEgJ0VPRicgKSB7CiAgICAgICAgJGh0bWxfdG9jX2ZoLT5wcmludCggPDwiVE9DX0VORCIpOwo8L3VsPgo8IS0tIEVORCBDT0RFIElOREVYIC0tPgpUT0NfRU5ECiAgICB9CiAgICByZXR1cm47Cn0KCkJFR0lOIHsKCiAgICAjIFRoaXMgaXMgdGhlIG9mZmljaWFsIGxpc3Qgb2YgdG9rZW5zIHdoaWNoIG1heSBiZSBpZGVudGlmaWVkIGJ5IHRoZQogICAgIyB1c2VyLiAgTG9uZyBuYW1lcyBhcmUgdXNlZCBhcyBnZXRvcHQga2V5cy4gIFNob3J0IG5hbWVzIGFyZQogICAgIyBjb252ZW5pZW50IHNob3J0IGFiYnJldmlhdGlvbnMgZm9yIHNwZWNpZnlpbmcgaW5wdXQuICBTaG9ydCBuYW1lcwogICAgIyBzb21ld2hhdCByZXNlbWJsZSB0b2tlbiB0eXBlIGNoYXJhY3RlcnMsIGJ1dCBhcmUgb2Z0ZW4gZGlmZmVyZW50CiAgICAjIGJlY2F1c2UgdGhleSBtYXkgb25seSBiZSBhbHBoYW51bWVyaWMsIHRvIGFsbG93IGNvbW1hbmQgbGluZQogICAgIyBpbnB1dC4gIEFsc28sIG5vdGUgdGhhdCBiZWNhdXNlIG9mIGNhc2UgaW5zZW5zaXRpdml0eSBvZiBodG1sLAogICAgIyB0aGlzIHRhYmxlIG11c3QgYmUgaW4gYSBzaW5nbGUgY2FzZSBvbmx5IChJJ3ZlIGNob3NlbiB0byB1c2UgYWxsCiAgICAjIGxvd2VyIGNhc2UpLgogICAgIyBXaGVuIGFkZGluZyBORVdfVE9LRU5TOiB1cGRhdGUgdGhpcyBoYXNoIHRhYmxlCiAgICAjIHNob3J0IG5hbWVzID0+IGxvbmcgbmFtZXMKICAgICVzaG9ydF90b19sb25nX25hbWVzID0gKAogICAgICAgICduJyAgPT4gJ251bWVyaWMnLAogICAgICAgICdwJyAgPT4gJ3BhcmVuJywKICAgICAgICAncScgID0+ICdxdW90ZScsCiAgICAgICAgJ3MnICA9PiAnc3RydWN0dXJlJywKICAgICAgICAnYycgID0+ICdjb21tZW50JywKICAgICAgICAndicgID0+ICd2LXN0cmluZycsCiAgICAgICAgJ2NtJyA9PiAnY29tbWEnLAogICAgICAgICd3JyAgPT4gJ2JhcmV3b3JkJywKICAgICAgICAnY28nID0+ICdjb2xvbicsCiAgICAgICAgJ3B1JyA9PiAncHVuY3R1YXRpb24nLAogICAgICAgICdpJyAgPT4gJ2lkZW50aWZpZXInLAogICAgICAgICdqJyAgPT4gJ2xhYmVsJywKICAgICAgICAnaCcgID0+ICdoZXJlLWRvYy10YXJnZXQnLAogICAgICAgICdoaCcgPT4gJ2hlcmUtZG9jLXRleHQnLAogICAgICAgICdrJyAgPT4gJ2tleXdvcmQnLAogICAgICAgICdzYycgPT4gJ3NlbWljb2xvbicsCiAgICAgICAgJ20nICA9PiAnc3Vicm91dGluZScsCiAgICAgICAgJ3BkJyA9PiAncG9kLXRleHQnLAogICAgKTsKCiAgICAjIE5vdyB3ZSBoYXZlIHRvIG1hcCBhY3R1YWwgdG9rZW4gdHlwZXMgaW50byBvbmUgb2YgdGhlIGFib3ZlIHNob3J0CiAgICAjIG5hbWVzOyBhbnkgdG9rZW4gdHlwZXMgbm90IG1hcHBlZCB3aWxsIGdldCAncHVuY3R1YXRpb24nCiAgICAjIHByb3BlcnRpZXMuCgogICAgIyBUaGUgdmFsdWVzIG9mIHRoaXMgaGFzaCB0YWJsZSBjb3JyZXNwb25kIHRvIHRoZSBrZXlzIG9mIHRoZQogICAgIyBwcmV2aW91cyBoYXNoIHRhYmxlLgogICAgIyBUaGUga2V5cyBvZiB0aGlzIGhhc2ggdGFibGUgYXJlIHRva2VuIHR5cGVzIGFuZCBjYW4gYmUgc2VlbgogICAgIyBieSBydW5uaW5nIHdpdGggLS1kdW1wLXRva2VuLXR5cGVzICgtZHR0KS4KCiAgICAjIFdoZW4gYWRkaW5nIE5FV19UT0tFTlM6IHVwZGF0ZSB0aGlzIGhhc2ggdGFibGUKICAgICMgJHR5cGUgPT4gJHNob3J0X25hbWUKICAgICV0b2tlbl9zaG9ydF9uYW1lcyA9ICgKICAgICAgICAnIycgID0+ICdjJywKICAgICAgICAnbicgID0+ICduJywKICAgICAgICAndicgID0+ICd2JywKICAgICAgICAnaycgID0+ICdrJywKICAgICAgICAnRicgID0+ICdrJywKICAgICAgICAnUScgID0+ICdxJywKICAgICAgICAncScgID0+ICdxJywKICAgICAgICAnSicgID0+ICdqJywKICAgICAgICAnaicgID0+ICdqJywKICAgICAgICAnaCcgID0+ICdoJywKICAgICAgICAnSCcgID0+ICdoaCcsCiAgICAgICAgJ3cnICA9PiAndycsCiAgICAgICAgJywnICA9PiAnY20nLAogICAgICAgICc9PicgPT4gJ2NtJywKICAgICAgICAnOycgID0+ICdzYycsCiAgICAgICAgJzonICA9PiAnY28nLAogICAgICAgICdmJyAgPT4gJ3NjJywKICAgICAgICAnKCcgID0+ICdwJywKICAgICAgICAnKScgID0+ICdwJywKICAgICAgICAnTScgID0+ICdtJywKICAgICAgICAnUCcgID0+ICdwZCcsCiAgICAgICAgJ0EnICA9PiAnY28nLAogICAgKTsKCiAgICAjIFRoZXNlIHRva2VuIHR5cGVzIHdpbGwgYWxsIGJlIGNhbGxlZCBpZGVudGlmaWVycyBmb3Igbm93CiAgICAjIEZJWE1FOiBjb3VsZCBzZXBhcmF0ZSB1c2VyIGRlZmluZWQgbW9kdWxlcyBhcyBzZXBhcmF0ZSB0eXBlCiAgICBteSBAaWRlbnRpZmllciA9IHF3PCBpIHQgVSBDIFkgWiBHIDo6IENPUkU6Oj47CiAgICBAdG9rZW5fc2hvcnRfbmFtZXN7QGlkZW50aWZpZXJ9ID0gKCdpJykgeCBzY2FsYXIoQGlkZW50aWZpZXIpOwoKICAgICMgVGhlc2UgdG9rZW4gdHlwZXMgd2lsbCBiZSBjYWxsZWQgJ3N0cnVjdHVyZScKICAgIG15IEBzdHJ1Y3R1cmUgPSBxdzwgeyB9ID47CiAgICBAdG9rZW5fc2hvcnRfbmFtZXN7QHN0cnVjdHVyZX0gPSAoJ3MnKSB4IHNjYWxhcihAc3RydWN0dXJlKTsKCiAgICAjIE9MRCBOT1RFUzogc2F2ZSBmb3IgcmVmZXJlbmNlCiAgICAjIEFueSBvZiB0aGVzZSBjb3VsZCBiZSBhZGRlZCBsYXRlciBpZiBpdCB3b3VsZCBiZSB1c2VmdWwuCiAgICAjIEZvciBub3csIHRoZXkgd2lsbCBieSBkZWZhdWx0IGJlY29tZSBwdW5jdHVhdGlvbgogICAgIyAgICBteSBAbGlzdCA9IHF3PCBMIFIgWyBdID47CiAgICAjICAgIEB0b2tlbl9sb25nX25hbWVze0BsaXN0fSA9ICgnbm9uLXN0cnVjdHVyZScpIHggc2NhbGFyKEBsaXN0KTsKICAgICMKICAgICMgICAgbXkgQGxpc3QgPSBxdyIKICAgICMgICAgICAvIC89ICogKj0gKiogKio9ICsgKz0gLSAtPSAlICU9ID0gKysgLS0gPDwgPDw9ID4+ID4+PSBwcCBwIG0gbW0KICAgICMgICAgICAiOwogICAgIyAgICBAdG9rZW5fbG9uZ19uYW1lc3tAbGlzdH0gPSAoJ21hdGgnKSB4IHNjYWxhcihAbGlzdCk7CiAgICAjCiAgICAjICAgIG15IEBsaXN0ID0gcXciICYgJj0gfiB+PSBeIF49IHwgfD0gIjsKICAgICMgICAgQHRva2VuX2xvbmdfbmFtZXN7QGxpc3R9ID0gKCdiaXQnKSB4IHNjYWxhcihAbGlzdCk7CiAgICAjCiAgICAjICAgIG15IEBsaXN0ID0gcXciID09ICE9IDwgPiA8PSA8PT4gIjsKICAgICMgICAgQHRva2VuX2xvbmdfbmFtZXN7QGxpc3R9ID0gKCdudW1lcmljYWwtY29tcGFyaXNvbicpIHggc2NhbGFyKEBsaXN0KTsKICAgICMKICAgICMgICAgbXkgQGxpc3QgPSBxdyIgJiYgfHwgISAmJj0gfHw9IC8vPSAiOwogICAgIyAgICBAdG9rZW5fbG9uZ19uYW1lc3tAbGlzdH0gPSAoJ2xvZ2ljYWwnKSB4IHNjYWxhcihAbGlzdCk7CiAgICAjCiAgICAjICAgIG15IEBsaXN0ID0gcXciIC4gLj0gPX4gIX4geCB4PSAiOwogICAgIyAgICBAdG9rZW5fbG9uZ19uYW1lc3tAbGlzdH0gPSAoJ3N0cmluZy1vcGVyYXRvcnMnKSB4IHNjYWxhcihAbGlzdCk7CiAgICAjCiAgICAjICAgICMgSW5jb21wbGV0ZS4uCiAgICAjICAgIG15IEBsaXN0ID0gcXciIC4uIC0+IDw+IC4uLiBcID8gIjsKICAgICMgICAgQHRva2VuX2xvbmdfbmFtZXN7QGxpc3R9ID0gKCdtaXNjLW9wZXJhdG9ycycpIHggc2NhbGFyKEBsaXN0KTsKCn0KCnN1YiBtYWtlX2dldG9wdF9sb25nX25hbWVzIHsKICAgIG15ICggJGNsYXNzLCAkcmdldG9wdF9uYW1lcyApID0gQF87CiAgICB3aGlsZSAoIG15ICggJHNob3J0X25hbWUsICRuYW1lICkgPSBlYWNoICVzaG9ydF90b19sb25nX25hbWVzICkgewogICAgICAgIHB1c2ggQHskcmdldG9wdF9uYW1lc30sICJodG1sLWNvbG9yLSRuYW1lPXMiOwogICAgICAgIHB1c2ggQHskcmdldG9wdF9uYW1lc30sICJodG1sLWl0YWxpYy0kbmFtZSEiOwogICAgICAgIHB1c2ggQHskcmdldG9wdF9uYW1lc30sICJodG1sLWJvbGQtJG5hbWUhIjsKICAgIH0KICAgIHB1c2ggQHskcmdldG9wdF9uYW1lc30sICJodG1sLWNvbG9yLWJhY2tncm91bmQ9cyI7CiAgICBwdXNoIEB7JHJnZXRvcHRfbmFtZXN9LCAiaHRtbC1saW5rZWQtc3R5bGUtc2hlZXQ9cyI7CiAgICBwdXNoIEB7JHJnZXRvcHRfbmFtZXN9LCAibm9odG1sLXN0eWxlLXNoZWV0cyI7CiAgICBwdXNoIEB7JHJnZXRvcHRfbmFtZXN9LCAiaHRtbC1wcmUtb25seSI7CiAgICBwdXNoIEB7JHJnZXRvcHRfbmFtZXN9LCAiaHRtbC1saW5lLW51bWJlcnMiOwogICAgcHVzaCBAeyRyZ2V0b3B0X25hbWVzfSwgImh0bWwtZW50aXRpZXMhIjsKICAgIHB1c2ggQHskcmdldG9wdF9uYW1lc30sICJzdHlsZXNoZWV0IjsKICAgIHB1c2ggQHskcmdldG9wdF9uYW1lc30sICJodG1sLXRhYmxlLW9mLWNvbnRlbnRzISI7CiAgICBwdXNoIEB7JHJnZXRvcHRfbmFtZXN9LCAicG9kMmh0bWwhIjsKICAgIHB1c2ggQHskcmdldG9wdF9uYW1lc30sICJmcmFtZXMhIjsKICAgIHB1c2ggQHskcmdldG9wdF9uYW1lc30sICJodG1sLXRvYy1leHRlbnNpb249cyI7CiAgICBwdXNoIEB7JHJnZXRvcHRfbmFtZXN9LCAiaHRtbC1zcmMtZXh0ZW5zaW9uPXMiOwoKICAgICMgUG9kOjpIdG1sIHBhcmFtZXRlcnM6CiAgICBwdXNoIEB7JHJnZXRvcHRfbmFtZXN9LCAiYmFja2xpbms9cyI7CiAgICBwdXNoIEB7JHJnZXRvcHRfbmFtZXN9LCAiY2FjaGVkaXI9cyI7CiAgICBwdXNoIEB7JHJnZXRvcHRfbmFtZXN9LCAiaHRtbHJvb3Q9cyI7CiAgICBwdXNoIEB7JHJnZXRvcHRfbmFtZXN9LCAibGlicG9kcz1zIjsKICAgIHB1c2ggQHskcmdldG9wdF9uYW1lc30sICJwb2RwYXRoPXMiOwogICAgcHVzaCBAeyRyZ2V0b3B0X25hbWVzfSwgInBvZHJvb3Q9cyI7CiAgICBwdXNoIEB7JHJnZXRvcHRfbmFtZXN9LCAidGl0bGU9cyI7CgogICAgIyBQb2Q6Okh0bWwgcGFyYW1ldGVycyB3aXRoIGxlYWRpbmcgJ3BvZCcgd2hpY2ggd2lsbCBiZSByZW1vdmVkCiAgICAjIGJlZm9yZSB0aGUgY2FsbCB0byBQb2Q6Okh0bWwKICAgIHB1c2ggQHskcmdldG9wdF9uYW1lc30sICJwb2RxdWlldCEiOwogICAgcHVzaCBAeyRyZ2V0b3B0X25hbWVzfSwgInBvZHZlcmJvc2UhIjsKICAgIHB1c2ggQHskcmdldG9wdF9uYW1lc30sICJwb2RyZWN1cnNlISI7CiAgICBwdXNoIEB7JHJnZXRvcHRfbmFtZXN9LCAicG9kZmx1c2giOwogICAgcHVzaCBAeyRyZ2V0b3B0X25hbWVzfSwgInBvZGhlYWRlciEiOwogICAgcHVzaCBAeyRyZ2V0b3B0X25hbWVzfSwgInBvZGluZGV4ISI7CiAgICByZXR1cm47Cn0KCnN1YiBtYWtlX2FiYnJldmlhdGVkX25hbWVzIHsKCiAgICAjIFdlJ3JlIGFwcGVuZGluZyB0aGluZ3MgbGlrZSB0aGlzIHRvIHRoZSBleHBhbnNpb24gbGlzdDoKICAgICMgICAgICAnaGNjJyAgICA9PiBbcXcoaHRtbC1jb2xvci1jb21tZW50KV0sCiAgICAjICAgICAgJ2hjaycgICAgPT4gW3F3KGh0bWwtY29sb3Ita2V5d29yZCldLAogICAgIyAgZXRjCiAgICBteSAoICRjbGFzcywgJHJleHBhbnNpb24gKSA9IEBfOwoKICAgICMgYWJicmV2aWF0aW9ucyBmb3IgY29sb3IvYm9sZC9pdGFsaWMgcHJvcGVydGllcwogICAgd2hpbGUgKCBteSAoICRzaG9ydF9uYW1lLCAkbG9uZ19uYW1lICkgPSBlYWNoICVzaG9ydF90b19sb25nX25hbWVzICkgewogICAgICAgICR7JHJleHBhbnNpb259eyJoYyRzaG9ydF9uYW1lIn0gID0gWyJodG1sLWNvbG9yLSRsb25nX25hbWUiXTsKICAgICAgICAkeyRyZXhwYW5zaW9ufXsiaGIkc2hvcnRfbmFtZSJ9ICA9IFsiaHRtbC1ib2xkLSRsb25nX25hbWUiXTsKICAgICAgICAkeyRyZXhwYW5zaW9ufXsiaGkkc2hvcnRfbmFtZSJ9ICA9IFsiaHRtbC1pdGFsaWMtJGxvbmdfbmFtZSJdOwogICAgICAgICR7JHJleHBhbnNpb259eyJuaGIkc2hvcnRfbmFtZSJ9ID0gWyJub2h0bWwtYm9sZC0kbG9uZ19uYW1lIl07CiAgICAgICAgJHskcmV4cGFuc2lvbn17Im5oaSRzaG9ydF9uYW1lIn0gPSBbIm5vaHRtbC1pdGFsaWMtJGxvbmdfbmFtZSJdOwogICAgfQoKICAgICMgYWJicmV2aWF0aW9ucyBmb3IgYWxsIG90aGVyIGh0bWwgb3B0aW9ucwogICAgJHskcmV4cGFuc2lvbn17ImhjYmcifSAgPSBbImh0bWwtY29sb3ItYmFja2dyb3VuZCJdOwogICAgJHskcmV4cGFuc2lvbn17InByZSJ9ICAgPSBbImh0bWwtcHJlLW9ubHkiXTsKICAgICR7JHJleHBhbnNpb259eyJ0b2MifSAgID0gWyJodG1sLXRhYmxlLW9mLWNvbnRlbnRzIl07CiAgICAkeyRyZXhwYW5zaW9ufXsibnRvYyJ9ICA9IFsibm9odG1sLXRhYmxlLW9mLWNvbnRlbnRzIl07CiAgICAkeyRyZXhwYW5zaW9ufXsibm5uIn0gICA9IFsiaHRtbC1saW5lLW51bWJlcnMiXTsKICAgICR7JHJleHBhbnNpb259eyJoZW50In0gID0gWyJodG1sLWVudGl0aWVzIl07CiAgICAkeyRyZXhwYW5zaW9ufXsibmhlbnQifSA9IFsibm9odG1sLWVudGl0aWVzIl07CiAgICAkeyRyZXhwYW5zaW9ufXsiY3NzIn0gICA9IFsiaHRtbC1saW5rZWQtc3R5bGUtc2hlZXQiXTsKICAgICR7JHJleHBhbnNpb259eyJuc3MifSAgID0gWyJub2h0bWwtc3R5bGUtc2hlZXRzIl07CiAgICAkeyRyZXhwYW5zaW9ufXsic3MifSAgICA9IFsic3R5bGVzaGVldCJdOwogICAgJHskcmV4cGFuc2lvbn17InBvZCJ9ICAgPSBbInBvZDJodG1sIl07CiAgICAkeyRyZXhwYW5zaW9ufXsibnBvZCJ9ICA9IFsibm9wb2QyaHRtbCJdOwogICAgJHskcmV4cGFuc2lvbn17ImZybSJ9ICAgPSBbImZyYW1lcyJdOwogICAgJHskcmV4cGFuc2lvbn17Im5mcm0ifSAgPSBbIm5vZnJhbWVzIl07CiAgICAkeyRyZXhwYW5zaW9ufXsidGV4dCJ9ICA9IFsiaHRtbC10b2MtZXh0ZW5zaW9uIl07CiAgICAkeyRyZXhwYW5zaW9ufXsic2V4dCJ9ICA9IFsiaHRtbC1zcmMtZXh0ZW5zaW9uIl07CiAgICByZXR1cm47Cn0KCnN1YiBjaGVja19vcHRpb25zIHsKCiAgICAjIFRoaXMgd2lsbCBiZSBjYWxsZWQgb25jZSBhZnRlciBvcHRpb25zIGhhdmUgYmVlbiBwYXJzZWQKICAgICMgTm90ZSB0aGF0IHdlIGFyZSBkZWZpbmluZyB0aGUgcGFja2FnZSB2YXJpYWJsZSAkck9wdHMgaGVyZToKICAgICggbXkgJGNsYXNzLCAkck9wdHMgKSA9IEBfOwoKICAgICMgWDExIGNvbG9yIG5hbWVzIGZvciBkZWZhdWx0IHNldHRpbmdzIHRoYXQgc2VlbWVkIHRvIGxvb2sgb2sKICAgICMgKHRoZXNlIGNvbG9yIG5hbWVzIGFyZSBvbmx5IHVzZWQgZm9yIHByb2dyYW1taW5nIGNsYXJpdHk7IHRoZSBoZXgKICAgICMgbnVtYmVycyBhcmUgYWN0dWFsbHkgd3JpdHRlbikKICAgIHVzZSBjb25zdGFudCBGb3Jlc3RHcmVlbiAgID0+ICIjMjI4QjIyIjsKICAgIHVzZSBjb25zdGFudCBTYWRkbGVCcm93biAgID0+ICIjOEI0NTEzIjsKICAgIHVzZSBjb25zdGFudCBtYWdlbnRhNCAgICAgID0+ICIjOEIwMDhCIjsKICAgIHVzZSBjb25zdGFudCBJbmRpYW5SZWQzICAgID0+ICIjQ0Q1NTU1IjsKICAgIHVzZSBjb25zdGFudCBEZWVwU2t5Qmx1ZTQgID0+ICIjMDA2ODhCIjsKICAgIHVzZSBjb25zdGFudCBNZWRpdW1PcmNoaWQzID0+ICIjQjQ1MkNEIjsKICAgIHVzZSBjb25zdGFudCBibGFjayAgICAgICAgID0+ICIjMDAwMDAwIjsKICAgIHVzZSBjb25zdGFudCB3aGl0ZSAgICAgICAgID0+ICIjRkZGRkZGIjsKICAgIHVzZSBjb25zdGFudCByZWQgICAgICAgICAgID0+ICIjRkYwMDAwIjsKCiAgICAjIHNldCBkZWZhdWx0IGNvbG9yLCBib2xkLCBpdGFsaWMgcHJvcGVydGllcwogICAgIyBhbnl0aGluZyBub3QgbGlzdGVkIGhlcmUgd2lsbCBiZSBnaXZlbiB0aGUgZGVmYXVsdCAocHVuY3R1YXRpb24pIGNvbG9yIC0tCiAgICAjIHRoZXNlIHR5cGVzIGN1cnJlbnRseSBub3QgbGlzdGVkIGFuZCBnZXQgZGVmYXVsdDogd3MgcHUgcyBzYyBjbSBjbyBwCiAgICAjIFdoZW4gYWRkaW5nIE5FV19UT0tFTlM6IGFkZCBhbiBlbnRyeSBoZXJlIGlmIHlvdSBkb24ndCB3YW50IGRlZmF1bHRzCgogICAgIyBzZXRfZGVmYXVsdF9wcm9wZXJ0aWVzKCAkc2hvcnRfbmFtZSwgZGVmYXVsdF9jb2xvciwgYm9sZD8sIGl0YWxpYz8gKTsKICAgIHNldF9kZWZhdWx0X3Byb3BlcnRpZXMoICdjJywgIEZvcmVzdEdyZWVuLCAgIDAsIDAgKTsKICAgIHNldF9kZWZhdWx0X3Byb3BlcnRpZXMoICdwZCcsIEZvcmVzdEdyZWVuLCAgIDAsIDEgKTsKICAgIHNldF9kZWZhdWx0X3Byb3BlcnRpZXMoICdrJywgIG1hZ2VudGE0LCAgICAgIDEsIDAgKTsgICAgIyB3YXMgU2FkZGxlQnJvd24KICAgIHNldF9kZWZhdWx0X3Byb3BlcnRpZXMoICdxJywgIEluZGlhblJlZDMsICAgIDAsIDAgKTsKICAgIHNldF9kZWZhdWx0X3Byb3BlcnRpZXMoICdoaCcsIEluZGlhblJlZDMsICAgIDAsIDEgKTsKICAgIHNldF9kZWZhdWx0X3Byb3BlcnRpZXMoICdoJywgIEluZGlhblJlZDMsICAgIDEsIDAgKTsKICAgIHNldF9kZWZhdWx0X3Byb3BlcnRpZXMoICdpJywgIERlZXBTa3lCbHVlNCwgIDAsIDAgKTsKICAgIHNldF9kZWZhdWx0X3Byb3BlcnRpZXMoICd3JywgIGJsYWNrLCAgICAgICAgIDAsIDAgKTsKICAgIHNldF9kZWZhdWx0X3Byb3BlcnRpZXMoICduJywgIE1lZGl1bU9yY2hpZDMsIDAsIDAgKTsKICAgIHNldF9kZWZhdWx0X3Byb3BlcnRpZXMoICd2JywgIE1lZGl1bU9yY2hpZDMsIDAsIDAgKTsKICAgIHNldF9kZWZhdWx0X3Byb3BlcnRpZXMoICdqJywgIEluZGlhblJlZDMsICAgIDEsIDAgKTsKICAgIHNldF9kZWZhdWx0X3Byb3BlcnRpZXMoICdtJywgIHJlZCwgICAgICAgICAgIDEsIDAgKTsKCiAgICBzZXRfZGVmYXVsdF9jb2xvciggJ2h0bWwtY29sb3ItYmFja2dyb3VuZCcsICB3aGl0ZSApOwogICAgc2V0X2RlZmF1bHRfY29sb3IoICdodG1sLWNvbG9yLXB1bmN0dWF0aW9uJywgYmxhY2sgKTsKCiAgICAjIHNldHVwIHByb3BlcnR5IGxvb2t1cCB0YWJsZXMgZm9yIHRva2VucyBiYXNlZCBvbiB0aGVpciBzaG9ydCBuYW1lcwogICAgIyBldmVyeSB0b2tlbiB0eXBlIGhhcyBhIHNob3J0IG5hbWUsIGFuZCB3aWxsIHVzZSB0aGVzZSB0YWJsZXMKICAgICMgdG8gZG8gdGhlIGh0bWwgbWFya3VwCiAgICB3aGlsZSAoIG15ICggJHNob3J0X25hbWUsICRsb25nX25hbWUgKSA9IGVhY2ggJXNob3J0X3RvX2xvbmdfbmFtZXMgKSB7CiAgICAgICAgJGh0bWxfY29sb3J7JHNob3J0X25hbWV9ICA9ICRyT3B0cy0+eyJodG1sLWNvbG9yLSRsb25nX25hbWUifTsKICAgICAgICAkaHRtbF9ib2xkeyRzaG9ydF9uYW1lfSAgID0gJHJPcHRzLT57Imh0bWwtYm9sZC0kbG9uZ19uYW1lIn07CiAgICAgICAgJGh0bWxfaXRhbGljeyRzaG9ydF9uYW1lfSA9ICRyT3B0cy0+eyJodG1sLWl0YWxpYy0kbG9uZ19uYW1lIn07CiAgICB9CgogICAgIyB3cml0ZSBzdHlsZSBzaGVldCB0byBTVERPVVQgYW5kIGRpZSBpZiByZXF1ZXN0ZWQKICAgIGlmICggZGVmaW5lZCggJHJPcHRzLT57J3N0eWxlc2hlZXQnfSApICkgewogICAgICAgIHdyaXRlX3N0eWxlX3NoZWV0X2ZpbGUoJy0nKTsKICAgICAgICBQZXJsOjpUaWR5OjpFeGl0KDApOwogICAgfQoKICAgICMgbWFrZSBzdXJlIHVzZXIgZ2l2ZXMgYSBmaWxlIG5hbWUgYWZ0ZXIgLWNzcwogICAgaWYgKCBkZWZpbmVkKCAkck9wdHMtPnsnaHRtbC1saW5rZWQtc3R5bGUtc2hlZXQnfSApICkgewogICAgICAgICRjc3NfbGlua25hbWUgPSAkck9wdHMtPnsnaHRtbC1saW5rZWQtc3R5bGUtc2hlZXQnfTsKICAgICAgICBpZiAoICRjc3NfbGlua25hbWUgPX4gL14tLyApIHsKICAgICAgICAgICAgUGVybDo6VGlkeTo6RGllKCJZb3UgbXVzdCBzcGVjaWZ5IGEgdmFsaWQgZmlsZW5hbWUgYWZ0ZXIgLWNzc1xuIik7CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgZm9yIGNvbmZsaWN0CiAgICBpZiAoICRjc3NfbGlua25hbWUgJiYgJHJPcHRzLT57J25vaHRtbC1zdHlsZS1zaGVldHMnfSApIHsKICAgICAgICAkck9wdHMtPnsnbm9odG1sLXN0eWxlLXNoZWV0cyd9ID0gMDsKICAgICAgICBQZXJsOjpUaWR5OjpXYXJuKAogICAgICAgICAgICAiWW91IGNhbid0IHNwZWNpZnkgYm90aCAtY3NzIGFuZCAtbnNzOyAtbnNzIGlnbm9yZWRcbiIpOwogICAgfQoKICAgICMgd3JpdGUgYSBzdHlsZSBzaGVldCBmaWxlIGlmIG5lY2Vzc2FyeQogICAgaWYgKCRjc3NfbGlua25hbWUpIHsKCiAgICAgICAgIyBpZiB0aGUgc2VsZWN0ZWQgZmlsZW5hbWUgZXhpc3RzLCBkb24ndCB3cml0ZSwgYmVjYXVzZSB1c2VyIG1heQogICAgICAgICMgaGF2ZSBkb25lIHNvbWUgd29yayBieSBoYW5kIHRvIGNyZWF0ZSBpdDsgdXNlIGJhY2t1cCBuYW1lIGluc3RlYWQKICAgICAgICAjIEFsc28sIHRoaXMgd2lsbCBhdm9pZCBhIHBvdGVudGlhbCBkaXNhc3RlciBpbiB3aGljaCB0aGUgdXNlcgogICAgICAgICMgZm9yZ2V0cyB0byBzcGVjaWZ5IHRoZSBzdHlsZSBzaGVldCwgbGlrZSB0aGlzOgogICAgICAgICMgICAgcGVybHRpZHkgLWh0bWwgLWNzcyBteWZpbGUxLnBsIG15ZmlsZTIucGwKICAgICAgICAjIFRoaXMgd291bGQgY2F1c2UgbXlmaWxlMS5wbCB0byBwYXJzZWQgYXMgdGhlIHN0eWxlIHNoZWV0IGJ5IEdldE9wdHMKICAgICAgICBteSAkY3NzX2ZpbGVuYW1lID0gJGNzc19saW5rbmFtZTsKICAgICAgICB1bmxlc3MgKCAtZSAkY3NzX2ZpbGVuYW1lICkgewogICAgICAgICAgICB3cml0ZV9zdHlsZV9zaGVldF9maWxlKCRjc3NfZmlsZW5hbWUpOwogICAgICAgIH0KICAgIH0KICAgICRtaXNzaW5nX2h0bWxfZW50aXRpZXMgPSAxIHVubGVzcyAkck9wdHMtPnsnaHRtbC1lbnRpdGllcyd9OwogICAgcmV0dXJuOwp9CgpzdWIgd3JpdGVfc3R5bGVfc2hlZXRfZmlsZSB7CgogICAgbXkgJGNzc19maWxlbmFtZSA9IHNoaWZ0OwogICAgbXkgJGZoOwogICAgdW5sZXNzICggJGZoID0gSU86OkZpbGUtPm5ldygiPiAkY3NzX2ZpbGVuYW1lIikgKSB7CiAgICAgICAgUGVybDo6VGlkeTo6RGllKCJjYW4ndCBvcGVuICRjc3NfZmlsZW5hbWU6ICQhXG4iKTsKICAgIH0KICAgIHdyaXRlX3N0eWxlX3NoZWV0X2RhdGEoJGZoKTsKICAgIGNsb3NlX29iamVjdCgkZmgpOwogICAgcmV0dXJuOwp9CgpzdWIgd3JpdGVfc3R5bGVfc2hlZXRfZGF0YSB7CgogICAgIyB3cml0ZSB0aGUgc3R5bGUgc2hlZXQgZGF0YSB0byBhbiBvcGVuIGZpbGUgaGFuZGxlCiAgICBteSAkZmggPSBzaGlmdDsKCiAgICBteSAkYmdfY29sb3IgICA9ICRyT3B0cy0+eydodG1sLWNvbG9yLWJhY2tncm91bmQnfTsKICAgIG15ICR0ZXh0X2NvbG9yID0gJHJPcHRzLT57J2h0bWwtY29sb3ItcHVuY3R1YXRpb24nfTsKCiAgICAjIHByZS1iZ2NvbG9yIGlzIG5ldywgYW5kIG1heSBub3QgYmUgZGVmaW5lZAogICAgbXkgJHByZV9iZ19jb2xvciA9ICRyT3B0cy0+eydodG1sLXByZS1jb2xvci1iYWNrZ3JvdW5kJ307CiAgICAkcHJlX2JnX2NvbG9yID0gJGJnX2NvbG9yIHVubGVzcyAkcHJlX2JnX2NvbG9yOwoKICAgICRmaC0+cHJpbnQoPDwiRU9NIik7Ci8qIGRlZmF1bHQgc3R5bGUgc2hlZXQgZ2VuZXJhdGVkIGJ5IHBlcmx0aWR5ICovCmJvZHkge2JhY2tncm91bmQ6ICRiZ19jb2xvcjsgY29sb3I6ICR0ZXh0X2NvbG9yfQpwcmUgeyBjb2xvcjogJHRleHRfY29sb3I7IAogICAgICBiYWNrZ3JvdW5kOiAkcHJlX2JnX2NvbG9yOwogICAgICBmb250LWZhbWlseTogY291cmllcjsKICAgIH0gCgpFT00KCiAgICBmb3JlYWNoIG15ICRzaG9ydF9uYW1lICggc29ydCBrZXlzICVzaG9ydF90b19sb25nX25hbWVzICkgewogICAgICAgIG15ICRsb25nX25hbWUgPSAkc2hvcnRfdG9fbG9uZ19uYW1lc3skc2hvcnRfbmFtZX07CgogICAgICAgIG15ICRhYmJyZXYgPSAnLicgLiAkc2hvcnRfbmFtZTsKICAgICAgICBpZiAoIGxlbmd0aCgkc2hvcnRfbmFtZSkgPT0gMSApIHsgJGFiYnJldiAuPSAnICcgfSAgICAjIGZvciBhbGlnbm1lbnQKICAgICAgICBteSAkY29sb3IgPSAkaHRtbF9jb2xvcnskc2hvcnRfbmFtZX07CiAgICAgICAgaWYgKCAhZGVmaW5lZCgkY29sb3IpICkgeyAkY29sb3IgPSAkdGV4dF9jb2xvciB9CiAgICAgICAgJGZoLT5wcmludCgiJGFiYnJldiBceyBjb2xvcjogJGNvbG9yOyIpOwoKICAgICAgICBpZiAoICRodG1sX2JvbGR7JHNob3J0X25hbWV9ICkgewogICAgICAgICAgICAkZmgtPnByaW50KCIgZm9udC13ZWlnaHQ6Ym9sZDsiKTsKICAgICAgICB9CgogICAgICAgIGlmICggJGh0bWxfaXRhbGljeyRzaG9ydF9uYW1lfSApIHsKICAgICAgICAgICAgJGZoLT5wcmludCgiIGZvbnQtc3R5bGU6aXRhbGljOyIpOwogICAgICAgIH0KICAgICAgICAkZmgtPnByaW50KCJ9IC8qICRsb25nX25hbWUgKi9cbiIpOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgc2V0X2RlZmF1bHRfY29sb3IgewoKICAgICMgbWFrZSBzdXJlIHRoYXQgb3B0aW9ucyBoYXNoICRyT3B0cy0+eyRrZXl9IGNvbnRhaW5zIGEgdmFsaWQgY29sb3IKICAgIG15ICggJGtleSwgJGNvbG9yICkgPSBAXzsKICAgIGlmICggJHJPcHRzLT57JGtleX0gKSB7ICRjb2xvciA9ICRyT3B0cy0+eyRrZXl9IH0KICAgICRyT3B0cy0+eyRrZXl9ID0gY2hlY2tfUkdCKCRjb2xvcik7CiAgICByZXR1cm47Cn0KCnN1YiBjaGVja19SR0IgewoKICAgICMgaWYgY29sb3IgaXMgYSA2IGRpZ2l0IGhleCBSR0IgdmFsdWUsIHByZXBlbmQgYSAjLCBvdGhlcndpc2UKICAgICMgYXNzdW1lIHRoYXQgaXQgaXMgYSB2YWxpZCBhc2NpaSBjb2xvciBuYW1lCiAgICBteSAoJGNvbG9yKSA9IEBfOwogICAgaWYgKCAkY29sb3IgPX4gL15bMC05YS1mQS1GXXs2LDZ9JC8gKSB7ICRjb2xvciA9ICIjJGNvbG9yIiB9CiAgICByZXR1cm4gJGNvbG9yOwp9CgpzdWIgc2V0X2RlZmF1bHRfcHJvcGVydGllcyB7CiAgICBteSAoICRzaG9ydF9uYW1lLCAkY29sb3IsICRib2xkLCAkaXRhbGljICkgPSBAXzsKCiAgICBzZXRfZGVmYXVsdF9jb2xvciggImh0bWwtY29sb3ItJHNob3J0X3RvX2xvbmdfbmFtZXN7JHNob3J0X25hbWV9IiwgJGNvbG9yICk7CiAgICBteSAka2V5OwogICAgJGtleSAgICAgICAgICAgPSAiaHRtbC1ib2xkLSRzaG9ydF90b19sb25nX25hbWVzeyRzaG9ydF9uYW1lfSI7CiAgICAkck9wdHMtPnska2V5fSA9ICggZGVmaW5lZCAkck9wdHMtPnska2V5fSApID8gJHJPcHRzLT57JGtleX0gOiAkYm9sZDsKICAgICRrZXkgICAgICAgICAgID0gImh0bWwtaXRhbGljLSRzaG9ydF90b19sb25nX25hbWVzeyRzaG9ydF9uYW1lfSI7CiAgICAkck9wdHMtPnska2V5fSA9ICggZGVmaW5lZCAkck9wdHMtPnska2V5fSApID8gJHJPcHRzLT57JGtleX0gOiAkaXRhbGljOwogICAgcmV0dXJuOwp9CgpzdWIgcG9kX3RvX2h0bWwgewoKICAgICMgVXNlIFBvZDo6SHRtbCB0byBwcm9jZXNzIHRoZSBwb2QgYW5kIG1ha2UgdGhlIHBhZ2UKICAgICMgdGhlbiBtZXJnZSB0aGUgcGVybHRpZHkgY29kZSBzZWN0aW9ucyBpbnRvIGl0LgogICAgIyByZXR1cm4gMSBpZiBzdWNjZXNzLCAwIG90aGVyd2lzZQogICAgbXkgKCAkc2VsZiwgJHBvZF9zdHJpbmcsICRjc3Nfc3RyaW5nLCAkdG9jX3N0cmluZywgJHJwcmVfc3RyaW5nX3N0YWNrICkgPQogICAgICBAXzsKICAgIG15ICRpbnB1dF9maWxlICAgPSAkc2VsZi0+e19pbnB1dF9maWxlfTsKICAgIG15ICR0aXRsZSAgICAgICAgPSAkc2VsZi0+e190aXRsZX07CiAgICBteSAkc3VjY2Vzc19mbGFnID0gMDsKCiAgICAjIGRvbid0IHRyeSB0byB1c2UgcG9kMmh0bWwgaWYgbm8gcG9kCiAgICB1bmxlc3MgKCRwb2Rfc3RyaW5nKSB7CiAgICAgICAgcmV0dXJuICRzdWNjZXNzX2ZsYWc7CiAgICB9CgogICAgIyBQb2Q6Okh0bWwgcmVxdWlyZXMgYSByZWFsIHRlbXBvcmFyeSBmaWxlbmFtZQogICAgbXkgKCAkZmhfdG1wLCAkdG1wZmlsZSApID0gRmlsZTo6VGVtcDo6dGVtcGZpbGUoKTsKICAgIHVubGVzcyAoJGZoX3RtcCkgewogICAgICAgIFBlcmw6OlRpZHk6Oldhcm4oCiAgICAgICAgICAgICJ1bmFibGUgdG8gb3BlbiB0ZW1wb3JhcnkgZmlsZSAkdG1wZmlsZTsgY2Fubm90IHVzZSBwb2QyaHRtbFxuIik7CiAgICAgICAgcmV0dXJuICRzdWNjZXNzX2ZsYWc7CiAgICB9CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBXYXJuaW5nOiBhIHRlbXBvcmFyeSBmaWxlIGlzIG9wZW47IHdlIGhhdmUgdG8gY2xlYW4gdXAgaWYKICAgICMgdGhpbmdzIGdvIGJhZC4gIEZyb20gaGVyZSBvbiBhbGwgcmV0dXJucyBzaG91bGQgYmUgYnkgZ29pbmcgdG8KICAgICMgUkVUVVJOIHNvIHRoYXQgdGhlIHRlbXBvcmFyeSBmaWxlIGdldHMgdW5saW5rZWQuCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgIyB3cml0ZSB0aGUgcG9kIHRleHQgdG8gdGhlIHRlbXBvcmFyeSBmaWxlCiAgICAkZmhfdG1wLT5wcmludCgkcG9kX3N0cmluZyk7CiAgICAkZmhfdG1wLT5jbG9zZSgpOwoKICAgICMgSGFuZCBvZmYgdGhlIHBvZCB0byBwb2QyaHRtbC4KICAgICMgTm90ZSB0aGF0IHdlIGNhbiB1c2UgdGhlIHNhbWUgdGVtcG9yYXJ5IGZpbGVuYW1lIGZvciBpbnB1dCBhbmQgb3V0cHV0CiAgICAjIGJlY2F1c2Ugb2YgdGhlIHdheSBwb2QyaHRtbCB3b3Jrcy4KICAgIHsKCiAgICAgICAgbXkgQGFyZ3M7CiAgICAgICAgcHVzaCBAYXJncywgIi0taW5maWxlPSR0bXBmaWxlIiwgIi0tb3V0ZmlsZT0kdG1wZmlsZSIsICItLXRpdGxlPSR0aXRsZSI7CgogICAgICAgICMgRmxhZ3Mgd2l0aCBzdHJpbmcgYXJnczoKICAgICAgICAjICJiYWNrbGluaz1zIiwgImNhY2hlZGlyPXMiLCAiaHRtbHJvb3Q9cyIsICJsaWJwb2RzPXMiLAogICAgICAgICMgInBvZHBhdGg9cyIsICJwb2Ryb290PXMiCiAgICAgICAgIyBOb3RlOiAtY3NzPXMgaXMgaGFuZGxlZCBieSBwZXJsdGlkeSBpdHNlbGYKICAgICAgICBmb3JlYWNoIG15ICRrdyAocXcoYmFja2xpbmsgY2FjaGVkaXIgaHRtbHJvb3QgbGlicG9kcyBwb2RwYXRoIHBvZHJvb3QpKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKCAkck9wdHMtPnska3d9ICkgeyBwdXNoIEBhcmdzLCAiLS0ka3c9JHJPcHRzLT57JGt3fSIgfQogICAgICAgIH0KCiAgICAgICAgIyBUb2dnbGUgc3dpdGNoZXM7IHRoZXNlIGhhdmUgZXh0cmEgbGVhZGluZyAncG9kJwogICAgICAgICMgImhlYWRlciEiLCAiaW5kZXghIiwgInJlY3Vyc2UhIiwgInF1aWV0ISIsICJ2ZXJib3NlISIKICAgICAgICBmb3JlYWNoIG15ICRrdyAocXcocG9kaGVhZGVyIHBvZGluZGV4IHBvZHJlY3Vyc2UgcG9kcXVpZXQgcG9kdmVyYm9zZSkpIHsKICAgICAgICAgICAgbXkgJGt3ZCA9ICRrdzsgICAgIyBhbGxvd3MgdXMgdG8gc3RyaXAgJ3BvZCcKICAgICAgICAgICAgaWYgICAgKCAkck9wdHMtPnska3d9ICkgeyAka3dkID1+IHMvXnBvZC8vOyBwdXNoIEBhcmdzLCAiLS0ka3dkIiB9CiAgICAgICAgICAgIGVsc2lmICggZGVmaW5lZCggJHJPcHRzLT57JGt3fSApICkgewogICAgICAgICAgICAgICAgJGt3ZCA9fiBzL15wb2QvLzsKICAgICAgICAgICAgICAgIHB1c2ggQGFyZ3MsICItLW5vJGt3ZCI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgImZsdXNoIiwKICAgICAgICBteSAka3cgPSAncG9kZmx1c2gnOwogICAgICAgIGlmICggJHJPcHRzLT57JGt3fSApIHsgJGt3ID1+IHMvXnBvZC8vOyBwdXNoIEBhcmdzLCAiLS0ka3ciIH0KCiAgICAgICAgIyBNdXN0IGNsZWFuIHVwIGlmIHBvZDJodG1sIGRpZXMgKGl0IGNhbik7CiAgICAgICAgIyBCZSBjYXJlZnVsIG5vdCB0byBvdmVyd3JpdGUgY2FsbGVycyBfX0RJRV9fIHJvdXRpbmUKICAgICAgICBsb2NhbCAkU0lHe19fRElFX199ID0gc3ViIHsKICAgICAgICAgICAgdW5saW5rICR0bXBmaWxlIGlmIC1lICR0bXBmaWxlOwogICAgICAgICAgICBQZXJsOjpUaWR5OjpEaWUoICRfWzBdICk7CiAgICAgICAgfTsKCiAgICAgICAgUG9kOjpIdG1sOjpwb2QyaHRtbChAYXJncyk7CiAgICB9CiAgICAkZmhfdG1wID0gSU86OkZpbGUtPm5ldyggJHRtcGZpbGUsICdyJyApOwogICAgdW5sZXNzICgkZmhfdG1wKSB7CgogICAgICAgICMgdGhpcyBlcnJvciBzaG91bGRuJ3QgaGFwcGVuIC4uLiB3ZSBqdXN0IHVzZWQgdGhpcyBmaWxlbmFtZQogICAgICAgIFBlcmw6OlRpZHk6Oldhcm4oCiAgICAgICAgICAgICJ1bmFibGUgdG8gb3BlbiB0ZW1wb3JhcnkgZmlsZSAkdG1wZmlsZTsgY2Fubm90IHVzZSBwb2QyaHRtbFxuIik7CiAgICAgICAgZ290byBSRVRVUk47CiAgICB9CgogICAgbXkgJGh0bWxfZmggPSAkc2VsZi0+e19odG1sX2ZofTsKICAgIG15IEB0b2M7CiAgICBteSAkaW5fdG9jOwogICAgbXkgJHVsX2xldmVsID0gMDsKICAgIG15ICRub19wcmludDsKCiAgICAjIFRoaXMgcm91dGluZSB3aWxsIHdyaXRlIHRoZSBodG1sIHNlbGVjdGl2ZWx5IGFuZCBzdG9yZSB0aGUgdG9jCiAgICBteSAkaHRtbF9wcmludCA9IHN1YiB7CiAgICAgICAgZm9yZWFjaCAoQF8pIHsKICAgICAgICAgICAgJGh0bWxfZmgtPnByaW50KCRfKSB1bmxlc3MgKCRub19wcmludCk7CiAgICAgICAgICAgIGlmICgkaW5fdG9jKSB7IHB1c2ggQHRvYywgJF8gfQogICAgICAgIH0KICAgIH07CgogICAgIyBsb29wIG92ZXIgbGluZXMgb2YgaHRtbCBvdXRwdXQgZnJvbSBwb2QyaHRtbCBhbmQgbWVyZ2UgaW4KICAgICMgdGhlIG5lY2Vzc2FyeSBwZXJsdGlkeSBodG1sIHNlY3Rpb25zCiAgICBteSAoICRzYXdfYm9keSwgJHNhd19pbmRleCwgJHNhd19ib2R5X2VuZCApOwoKICAgIG15ICR0aW1lc3RhbXAgPSAiIjsKICAgIGlmICggJHJPcHRzLT57J3RpbWVzdGFtcCd9ICkgewogICAgICAgIG15ICRkYXRlID0gbG9jYWx0aW1lOwogICAgICAgICR0aW1lc3RhbXAgPSAib24gJGRhdGUiOwogICAgfQogICAgd2hpbGUgKCBteSAkbGluZSA9ICRmaF90bXAtPmdldGxpbmUoKSApIHsKCiAgICAgICAgaWYgKCAkbGluZSA9fiAvXlxzKjxodG1sPlxzKiQvaSApIHsKICAgICAgICAgICAgIyNteSAkZGF0ZSA9IGxvY2FsdGltZTsKICAgICAgICAgICAgIyMkaHRtbF9wcmludC0+KCI8IS0tIEdlbmVyYXRlZCBieSBwZXJsdGlkeSBvbiAkZGF0ZSAtLT5cbiIpOwogICAgICAgICAgICAkaHRtbF9wcmludC0+KCI8IS0tIEdlbmVyYXRlZCBieSBwZXJsdGlkeSAkdGltZXN0YW1wIC0tPlxuIik7CiAgICAgICAgICAgICRodG1sX3ByaW50LT4oJGxpbmUpOwogICAgICAgIH0KCiAgICAgICAgIyBDb3B5IHRoZSBwZXJsdGlkeSBjc3MsIGlmIGFueSwgYWZ0ZXIgPGJvZHk+IHRhZwogICAgICAgIGVsc2lmICggJGxpbmUgPX4gL15ccyo8Ym9keS4qPlxzKiQvaSApIHsKICAgICAgICAgICAgJHNhd19ib2R5ID0gMTsKICAgICAgICAgICAgJGh0bWxfcHJpbnQtPigkY3NzX3N0cmluZykgaWYgJGNzc19zdHJpbmc7CiAgICAgICAgICAgICRodG1sX3ByaW50LT4oJGxpbmUpOwoKICAgICAgICAgICAgIyBhZGQgYSB0b3AgYW5jaG9yIGFuZCBoZWFkaW5nCiAgICAgICAgICAgICRodG1sX3ByaW50LT4oIjxhIG5hbWU9XCItdG9wLVwiPjwvYT5cbiIpOwogICAgICAgICAgICAkdGl0bGUgPSBlc2NhcGVfaHRtbCgkdGl0bGUpOwogICAgICAgICAgICAkaHRtbF9wcmludC0+KCI8aDE+JHRpdGxlPC9oMT5cbiIpOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBmb3Igc3RhcnQgb2YgaW5kZXgsIG9sZCBwb2QyaHRtbAogICAgICAgICMgYmVmb3JlIFBvZDo6SHRtbCBWRVJTSU9OIDEuMTVfMDIgaXQgaXMgZGVsaW1pdGVkIGJ5IGNvbW1lbnRzIGFzOgogICAgICAgICMgICAgPCEtLSBJTkRFWCBCRUdJTiAtLT4KICAgICAgICAjICAgIDx1bD4KICAgICAgICAjICAgICAuLi4KICAgICAgICAjICAgIDwvdWw+CiAgICAgICAgIyAgICA8IS0tIElOREVYIEVORCAtLT4KICAgICAgICAjCiAgICAgICAgZWxzaWYgKCAkbGluZSA9fiAvXlxzKjwhLS0gSU5ERVggQkVHSU4gLS0+XHMqJC9pICkgewogICAgICAgICAgICAkaW5fdG9jID0gJ0lOREVYJzsKCiAgICAgICAgICAgICMgd2hlbiBmcmFtZXMgYXJlIHVzZWQsIGFuIGV4dHJhIHRhYmxlIG9mIGNvbnRlbnRzIGluIHRoZQogICAgICAgICAgICAjIGNvbnRlbnRzIHBhbmVsIGlzIGNvbmZ1c2luZywgc28gZG9uJ3QgcHJpbnQgaXQKICAgICAgICAgICAgJG5vX3ByaW50ID0gJHJPcHRzLT57J2ZyYW1lcyd9CiAgICAgICAgICAgICAgfHwgISRyT3B0cy0+eydodG1sLXRhYmxlLW9mLWNvbnRlbnRzJ307CiAgICAgICAgICAgICRodG1sX3ByaW50LT4oIjxoMj5Eb2MgSW5kZXg6PC9oMj5cbiIpIGlmICRyT3B0cy0+eydmcmFtZXMnfTsKICAgICAgICAgICAgJGh0bWxfcHJpbnQtPigkbGluZSk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGZvciBzdGFydCBvZiBpbmRleCwgbmV3IHBvZDJodG1sCiAgICAgICAgIyBBZnRlciBQb2Q6Okh0bWwgVkVSU0lPTiAxLjE1XzAyIGl0IGlzIGRlbGltaXRlZCBhczoKICAgICAgICAjIDx1bCBpZD0iaW5kZXgiPgogICAgICAgICMgLi4uCiAgICAgICAgIyA8L3VsPgogICAgICAgIGVsc2lmICggJGxpbmUgPX4gL15ccyo8dWxccytpZD0iaW5kZXgiPi9pICkgewogICAgICAgICAgICAkaW5fdG9jICAgPSAnVUwnOwogICAgICAgICAgICAkdWxfbGV2ZWwgPSAxOwoKICAgICAgICAgICAgIyB3aGVuIGZyYW1lcyBhcmUgdXNlZCwgYW4gZXh0cmEgdGFibGUgb2YgY29udGVudHMgaW4gdGhlCiAgICAgICAgICAgICMgY29udGVudHMgcGFuZWwgaXMgY29uZnVzaW5nLCBzbyBkb24ndCBwcmludCBpdAogICAgICAgICAgICAkbm9fcHJpbnQgPSAkck9wdHMtPnsnZnJhbWVzJ30KICAgICAgICAgICAgICB8fCAhJHJPcHRzLT57J2h0bWwtdGFibGUtb2YtY29udGVudHMnfTsKICAgICAgICAgICAgJGh0bWxfcHJpbnQtPigiPGgyPkRvYyBJbmRleDo8L2gyPlxuIikgaWYgJHJPcHRzLT57J2ZyYW1lcyd9OwogICAgICAgICAgICAkaHRtbF9wcmludC0+KCRsaW5lKTsKICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgZm9yIGVuZCBvZiBpbmRleCwgb2xkIHBvZDJodG1sCiAgICAgICAgZWxzaWYgKCAkbGluZSA9fiAvXlxzKjwhLS0gSU5ERVggRU5EIC0tPlxzKiQvaSApIHsKICAgICAgICAgICAgJHNhd19pbmRleCA9IDE7CiAgICAgICAgICAgICRodG1sX3ByaW50LT4oJGxpbmUpOwoKICAgICAgICAgICAgIyBDb3B5IHRoZSBwZXJsdGlkeSB0b2MsIGlmIGFueSwgYWZ0ZXIgdGhlIFBvZDo6SHRtbCB0b2MKICAgICAgICAgICAgaWYgKCR0b2Nfc3RyaW5nKSB7CiAgICAgICAgICAgICAgICAkaHRtbF9wcmludC0+KCI8aHIgLz5cbiIpIGlmICRyT3B0cy0+eydmcmFtZXMnfTsKICAgICAgICAgICAgICAgICRodG1sX3ByaW50LT4oIjxoMj5Db2RlIEluZGV4OjwvaDI+XG4iKTsKICAgICAgICAgICAgICAgICMjbXkgQHRvYyA9IG1hcCB7ICRfIC49ICJcbiIgfSBzcGxpdCAvXG4vLCAkdG9jX3N0cmluZzsKICAgICAgICAgICAgICAgIG15IEB0b2MgPSBtYXAgeyAkXyAuICJcbiIgfSBzcGxpdCAvXG4vLCAkdG9jX3N0cmluZzsKICAgICAgICAgICAgICAgICRodG1sX3ByaW50LT4oQHRvYyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGluX3RvYyAgID0gIiI7CiAgICAgICAgICAgICRub19wcmludCA9IDA7CiAgICAgICAgfQoKICAgICAgICAjIG11c3QgdHJhY2sgPHVsPiBkZXB0aCBsZXZlbCBmb3IgbmV3IHBvZDJodG1sCiAgICAgICAgZWxzaWYgKCAkbGluZSA9fiAvXHMqPHVsPlxzKiQvaSAmJiAkaW5fdG9jIGVxICdVTCcgKSB7CiAgICAgICAgICAgICR1bF9sZXZlbCsrOwogICAgICAgICAgICAkaHRtbF9wcmludC0+KCRsaW5lKTsKICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgZm9yIGVuZCBvZiBpbmRleCwgZm9yIG5ldyBwb2QyaHRtbAogICAgICAgIGVsc2lmICggJGxpbmUgPX4gL1xzKjxcL3VsPi9pICYmICRpbl90b2MgZXEgJ1VMJyApIHsKICAgICAgICAgICAgJHVsX2xldmVsLS07CiAgICAgICAgICAgICRodG1sX3ByaW50LT4oJGxpbmUpOwoKICAgICAgICAgICAgIyBDb3B5IHRoZSBwZXJsdGlkeSB0b2MsIGlmIGFueSwgYWZ0ZXIgdGhlIFBvZDo6SHRtbCB0b2MKICAgICAgICAgICAgaWYgKCAkdWxfbGV2ZWwgPD0gMCApIHsKICAgICAgICAgICAgICAgICRzYXdfaW5kZXggPSAxOwogICAgICAgICAgICAgICAgaWYgKCR0b2Nfc3RyaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgJGh0bWxfcHJpbnQtPigiPGhyIC8+XG4iKSBpZiAkck9wdHMtPnsnZnJhbWVzJ307CiAgICAgICAgICAgICAgICAgICAgJGh0bWxfcHJpbnQtPigiPGgyPkNvZGUgSW5kZXg6PC9oMj5cbiIpOwogICAgICAgICAgICAgICAgICAgICMjbXkgQHRvYyA9IG1hcCB7ICRfIC49ICJcbiIgfSBzcGxpdCAvXG4vLCAkdG9jX3N0cmluZzsKICAgICAgICAgICAgICAgICAgICBteSBAdG9jID0gbWFwIHsgJF8gLiAiXG4iIH0gc3BsaXQgL1xuLywgJHRvY19zdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgJGh0bWxfcHJpbnQtPihAdG9jKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRpbl90b2MgICA9ICIiOwogICAgICAgICAgICAgICAgJHVsX2xldmVsID0gMDsKICAgICAgICAgICAgICAgICRub19wcmludCA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgQ29weSBvbmUgcGVybHRpZHkgc2VjdGlvbiBhZnRlciBlYWNoIG1hcmtlcgogICAgICAgIGVsc2lmICggJGxpbmUgPX4gL14oLiopPCEtLSBwRVJMVElEWSBzRUNUSU9OIC0tPiguKikkLyApIHsKICAgICAgICAgICAgJGxpbmUgPSAkMjsKICAgICAgICAgICAgJGh0bWxfcHJpbnQtPigkMSkgaWYgJDE7CgogICAgICAgICAgICAjIEludGVybWluZ2xlIGNvZGUgYW5kIHBvZCBzZWN0aW9ucyBpZiB3ZSBzYXcgbXVsdGlwbGUgPWN1dCdzLgogICAgICAgICAgICBpZiAoICRzZWxmLT57X3BvZF9jdXRfY291bnR9ID4gMSApIHsKICAgICAgICAgICAgICAgIG15ICRycHJlX3N0cmluZyA9IHNoaWZ0KCBAeyRycHJlX3N0cmluZ19zdGFja30gKTsKICAgICAgICAgICAgICAgIGlmICggJHskcnByZV9zdHJpbmd9ICkgewogICAgICAgICAgICAgICAgICAgICRodG1sX3ByaW50LT4oJzxwcmU+Jyk7CiAgICAgICAgICAgICAgICAgICAgJGh0bWxfcHJpbnQtPiggJHskcnByZV9zdHJpbmd9ICk7CiAgICAgICAgICAgICAgICAgICAgJGh0bWxfcHJpbnQtPignPC9wcmU+Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgIyBzaG91bGRuJ3QgaGFwcGVuOiB3ZSBzdG9yZWQgYSBzdHJpbmcgYmVmb3JlIHdyaXRpbmcKICAgICAgICAgICAgICAgICAgICAjIGVhY2ggbWFya2VyLgogICAgICAgICAgICAgICAgICAgIFBlcmw6OlRpZHk6Oldhcm4oCiJQcm9ibGVtIG1lcmdpbmcgaHRtbCBzdHJlYW0gd2l0aCBwb2QyaHRtbDsgb3JkZXIgbWF5IGJlIHdyb25nXG4iCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRodG1sX3ByaW50LT4oJGxpbmUpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIElmIGRpZG4ndCBzZWUgbXVsdGlwbGUgPWN1dCBsaW5lcywgd2UnbGwgcHV0IHRoZSBwb2Qgb3V0IGZpcnN0CiAgICAgICAgICAgICMgYW5kIHRoZW4gdGhlIGNvZGUsIGJlY2F1c2UgaXQncyBsZXNzIGNvbmZ1c2luZy4KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBzaW5jZSB3ZSBhcmUgbm90IGludGVybWl4aW5nIGNvZGUgYW5kIHBvZCwgd2UgZG9uJ3QgbmVlZAogICAgICAgICAgICAgICAgIyBvciB3YW50IGFueSA8aHI+IGxpbmVzIHdoaWNoIHNlcGFyYXRlZCBwb2QgYW5kIGNvZGUKICAgICAgICAgICAgICAgICRodG1sX3ByaW50LT4oJGxpbmUpIHVubGVzcyAoICRsaW5lID1+IC9eXHMqPGhyPlxzKiQvaSApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIENvcHkgYW55IHJlbWFpbmluZyBjb2RlIHNlY3Rpb24gYmVmb3JlIHRoZSA8L2JvZHk+IHRhZwogICAgICAgIGVsc2lmICggJGxpbmUgPX4gL15ccyo8XC9ib2R5PlxzKiQvaSApIHsKICAgICAgICAgICAgJHNhd19ib2R5X2VuZCA9IDE7CiAgICAgICAgICAgIGlmICggQHskcnByZV9zdHJpbmdfc3RhY2t9ICkgewogICAgICAgICAgICAgICAgdW5sZXNzICggJHNlbGYtPntfcG9kX2N1dF9jb3VudH0gPiAxICkgewogICAgICAgICAgICAgICAgICAgICRodG1sX3ByaW50LT4oJzxociAvPicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgd2hpbGUgKCBteSAkcnByZV9zdHJpbmcgPSBzaGlmdCggQHskcnByZV9zdHJpbmdfc3RhY2t9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgJGh0bWxfcHJpbnQtPignPHByZT4nKTsKICAgICAgICAgICAgICAgICAgICAkaHRtbF9wcmludC0+KCAkeyRycHJlX3N0cmluZ30gKTsKICAgICAgICAgICAgICAgICAgICAkaHRtbF9wcmludC0+KCc8L3ByZT4nKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkaHRtbF9wcmludC0+KCRsaW5lKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRodG1sX3ByaW50LT4oJGxpbmUpOwogICAgICAgIH0KICAgIH0KCiAgICAkc3VjY2Vzc19mbGFnID0gMTsKICAgIHVubGVzcyAoJHNhd19ib2R5KSB7CiAgICAgICAgUGVybDo6VGlkeTo6V2FybigiRGlkIG5vdCBzZWUgPGJvZHk+IGluIHBvZDJodG1sIG91dHB1dFxuIik7CiAgICAgICAgJHN1Y2Nlc3NfZmxhZyA9IDA7CiAgICB9CiAgICB1bmxlc3MgKCRzYXdfYm9keV9lbmQpIHsKICAgICAgICBQZXJsOjpUaWR5OjpXYXJuKCJEaWQgbm90IHNlZSA8L2JvZHk+IGluIHBvZDJodG1sIG91dHB1dFxuIik7CiAgICAgICAgJHN1Y2Nlc3NfZmxhZyA9IDA7CiAgICB9CiAgICB1bmxlc3MgKCRzYXdfaW5kZXgpIHsKICAgICAgICBQZXJsOjpUaWR5OjpXYXJuKCJEaWQgbm90IGZpbmQgSU5ERVggRU5EIGluIHBvZDJodG1sIG91dHB1dFxuIik7CiAgICAgICAgJHN1Y2Nlc3NfZmxhZyA9IDA7CiAgICB9CgogIFJFVFVSTjoKICAgIGNsb3NlX29iamVjdCgkaHRtbF9maCk7CgogICAgIyBub3RlIHRoYXQgd2UgaGF2ZSB0byB1bmxpbmsgdG1wZmlsZSBiZWZvcmUgbWFraW5nIGZyYW1lcwogICAgIyBiZWNhdXNlIHRoZSB0bXBmaWxlIG1heSBiZSBvbmUgb2YgdGhlIG5hbWVzIHVzZWQgZm9yIGZyYW1lcwogICAgaWYgKCAtZSAkdG1wZmlsZSApIHsKICAgICAgICB1bmxlc3MgKCB1bmxpbmsoJHRtcGZpbGUpICkgewogICAgICAgICAgICBQZXJsOjpUaWR5OjpXYXJuKCJjb3VsZG4ndCB1bmxpbmsgdGVtcG9yYXJ5IGZpbGUgJHRtcGZpbGU6ICQhXG4iKTsKICAgICAgICAgICAgJHN1Y2Nlc3NfZmxhZyA9IDA7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJHN1Y2Nlc3NfZmxhZyAmJiAkck9wdHMtPnsnZnJhbWVzJ30gKSB7CiAgICAgICAgJHNlbGYtPm1ha2VfZnJhbWUoIFxAdG9jICk7CiAgICB9CiAgICByZXR1cm4gJHN1Y2Nlc3NfZmxhZzsKfQoKc3ViIG1ha2VfZnJhbWUgewoKICAgICMgTWFrZSBhIGZyYW1lIHdpdGggdGFibGUgb2YgY29udGVudHMgaW4gdGhlIGxlZnQgcGFuZWwKICAgICMgYW5kIHRoZSB0ZXh0IGluIHRoZSByaWdodCBwYW5lbC4KICAgICMgT24gZW50cnk6CiAgICAjICAkaHRtbF9maWxlbmFtZSBjb250YWlucyB0aGUgbm8tZnJhbWVzIGh0bWwgb3V0cHV0CiAgICAjICAkcnRvYyBpcyBhIHJlZmVyZW5jZSB0byBhbiBhcnJheSB3aXRoIHRoZSB0YWJsZSBvZiBjb250ZW50cwogICAgbXkgKCAkc2VsZiwgJHJ0b2MgKSA9IEBfOwogICAgbXkgJGlucHV0X2ZpbGUgICAgPSAkc2VsZi0+e19pbnB1dF9maWxlfTsKICAgIG15ICRodG1sX2ZpbGVuYW1lID0gJHNlbGYtPntfaHRtbF9maWxlfTsKICAgIG15ICR0b2NfZmlsZW5hbWUgID0gJHNlbGYtPntfdG9jX2ZpbGVuYW1lfTsKICAgIG15ICRzcmNfZmlsZW5hbWUgID0gJHNlbGYtPntfc3JjX2ZpbGVuYW1lfTsKICAgIG15ICR0aXRsZSAgICAgICAgID0gJHNlbGYtPntfdGl0bGV9OwogICAgJHRpdGxlID0gZXNjYXBlX2h0bWwoJHRpdGxlKTsKCiAgICAjIEZVVFVSRSBpbnB1dCBwYXJhbWV0ZXI6CiAgICBteSAkdG9wX2Jhc2VuYW1lID0gIiI7CgogICAgIyBXZSBuZWVkIHRvIHByb2R1Y2UgMyBodG1sIGZpbGVzOgogICAgIyAxLiAtIHRoZSB0YWJsZSBvZiBjb250ZW50cwogICAgIyAyLiAtIHRoZSBjb250ZW50cyAoc291cmNlIGNvZGUpIGl0c2VsZgogICAgIyAzLiAtIHRoZSBmcmFtZSB3aGljaCBjb250YWlucyB0aGVtCgogICAgIyBnZXQgYmFzZW5hbWVzIGZvciByZWxhdGl2ZSBsaW5rcwogICAgbXkgKCAkdG9jX2Jhc2VuYW1lLCAkdG9jX3BhdGggKSA9IGZpbGVwYXJzZSgkdG9jX2ZpbGVuYW1lKTsKICAgIG15ICggJHNyY19iYXNlbmFtZSwgJHNyY19wYXRoICkgPSBmaWxlcGFyc2UoJHNyY19maWxlbmFtZSk7CgogICAgIyAxLiBNYWtlIHRoZSB0YWJsZSBvZiBjb250ZW50cyBwYW5lbCwgd2l0aCBhcHByb3ByaWF0ZSBjaGFuZ2VzCiAgICAjIHRvIHRoZSBhbmNob3IgbmFtZXMKICAgIG15ICRzcmNfZnJhbWVfbmFtZSA9ICdTUkMnOwogICAgbXkgJGZpcnN0X2FuY2hvciA9CiAgICAgIHdyaXRlX3RvY19odG1sKCAkdGl0bGUsICR0b2NfZmlsZW5hbWUsICRzcmNfYmFzZW5hbWUsICRydG9jLAogICAgICAgICRzcmNfZnJhbWVfbmFtZSApOwoKICAgICMgMi4gVGhlIGN1cnJlbnQgLmh0bWwgZmlsZW5hbWUgaXMgcmVuYW1lZCB0byBiZSB0aGUgY29udGVudHMgcGFuZWwKICAgIHJlbmFtZSggJGh0bWxfZmlsZW5hbWUsICRzcmNfZmlsZW5hbWUgKQogICAgICBvciBQZXJsOjpUaWR5OjpEaWUoIkNhbm5vdCByZW5hbWUgJGh0bWxfZmlsZW5hbWUgdG8gJHNyY19maWxlbmFtZTokIVxuIik7CgogICAgIyAzLiBUaGVuIHVzZSB0aGUgb3JpZ2luYWwgaHRtbCBmaWxlbmFtZSBmb3IgdGhlIGZyYW1lCiAgICB3cml0ZV9mcmFtZV9odG1sKAogICAgICAgICR0aXRsZSwgICAgICAgICRodG1sX2ZpbGVuYW1lLCAkdG9wX2Jhc2VuYW1lLAogICAgICAgICR0b2NfYmFzZW5hbWUsICRzcmNfYmFzZW5hbWUsICAkc3JjX2ZyYW1lX25hbWUKICAgICk7CiAgICByZXR1cm47Cn0KCnN1YiB3cml0ZV90b2NfaHRtbCB7CgogICAgIyB3cml0ZSBhIHNlcGFyYXRlIGh0bWwgdGFibGUgb2YgY29udGVudHMgZmlsZSBmb3IgZnJhbWVzCiAgICBteSAoICR0aXRsZSwgJHRvY19maWxlbmFtZSwgJHNyY19iYXNlbmFtZSwgJHJ0b2MsICRzcmNfZnJhbWVfbmFtZSApID0gQF87CiAgICBteSAkZmggPSBJTzo6RmlsZS0+bmV3KCAkdG9jX2ZpbGVuYW1lLCAndycgKQogICAgICBvciBQZXJsOjpUaWR5OjpEaWUoIkNhbm5vdCBvcGVuICR0b2NfZmlsZW5hbWU6JCFcbiIpOwogICAgJGZoLT5wcmludCg8PEVPTSk7CjxodG1sPgo8aGVhZD4KPHRpdGxlPiR0aXRsZTwvdGl0bGU+CjwvaGVhZD4KPGJvZHk+CjxoMT48YSBocmVmPVwiJHNyY19iYXNlbmFtZSMtdG9wLSIgdGFyZ2V0PSIkc3JjX2ZyYW1lX25hbWUiPiR0aXRsZTwvYT48L2gxPgpFT00KCiAgICBteSAkZmlyc3RfYW5jaG9yID0KICAgICAgY2hhbmdlX2FuY2hvcl9uYW1lcyggJHJ0b2MsICRzcmNfYmFzZW5hbWUsICIkc3JjX2ZyYW1lX25hbWUiICk7CiAgICAkZmgtPnByaW50KCBqb2luICIiLCBAeyRydG9jfSApOwoKICAgICRmaC0+cHJpbnQoPDxFT00pOwo8L2JvZHk+CjwvaHRtbD4KRU9NCgogICAgcmV0dXJuOwp9CgpzdWIgd3JpdGVfZnJhbWVfaHRtbCB7CgogICAgIyB3cml0ZSBhbiBodG1sIGZpbGUgdG8gYmUgdGhlIHRhYmxlIG9mIGNvbnRlbnRzIGZyYW1lCiAgICBteSAoCiAgICAgICAgJHRpdGxlLCAgICAgICAgJGZyYW1lX2ZpbGVuYW1lLCAkdG9wX2Jhc2VuYW1lLAogICAgICAgICR0b2NfYmFzZW5hbWUsICRzcmNfYmFzZW5hbWUsICAgJHNyY19mcmFtZV9uYW1lCiAgICApID0gQF87CgogICAgbXkgJGZoID0gSU86OkZpbGUtPm5ldyggJGZyYW1lX2ZpbGVuYW1lLCAndycgKQogICAgICBvciBQZXJsOjpUaWR5OjpEaWUoIkNhbm5vdCBvcGVuICR0b2NfYmFzZW5hbWU6JCFcbiIpOwoKICAgICRmaC0+cHJpbnQoPDxFT00pOwo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBGcmFtZXNldC8vRU4iCiAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtZnJhbWVzZXQuZHRkIj4KPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSIgPz4KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgo8aGVhZD4KPHRpdGxlPiR0aXRsZTwvdGl0bGU+CjwvaGVhZD4KRU9NCgogICAgIyB0d28gbGVmdCBwYW5lbHMsIG9uZSByaWdodCwgaWYgbWFzdGVyIGluZGV4IGZpbGUKICAgIGlmICgkdG9wX2Jhc2VuYW1lKSB7CiAgICAgICAgJGZoLT5wcmludCg8PEVPTSk7CjxmcmFtZXNldCBjb2xzPSIyMCUsODAlIj4KPGZyYW1lc2V0IHJvd3M9IjMwJSw3MCUiPgo8ZnJhbWUgc3JjID0gIiR0b3BfYmFzZW5hbWUiIC8+CjxmcmFtZSBzcmMgPSAiJHRvY19iYXNlbmFtZSIgLz4KPC9mcmFtZXNldD4KRU9NCiAgICB9CgogICAgIyBvbmUgbGVmdCBwYW5lbHMsIG9uZSByaWdodCwgaWYgbm8gbWFzdGVyIGluZGV4IGZpbGUKICAgIGVsc2UgewogICAgICAgICRmaC0+cHJpbnQoPDxFT00pOwo8ZnJhbWVzZXQgY29scz0iMjAlLCoiPgo8ZnJhbWUgc3JjID0gIiR0b2NfYmFzZW5hbWUiIC8+CkVPTQogICAgfQogICAgJGZoLT5wcmludCg8PEVPTSk7CjxmcmFtZSBzcmMgPSAiJHNyY19iYXNlbmFtZSIgbmFtZSA9ICIkc3JjX2ZyYW1lX25hbWUiIC8+Cjxub2ZyYW1lcz4KPGJvZHk+CjxwPklmIHlvdSBzZWUgdGhpcyBtZXNzYWdlLCB5b3UgYXJlIHVzaW5nIGEgbm9uLWZyYW1lLWNhcGFibGUgd2ViIGNsaWVudC48L3A+CjxwPlRoaXMgZG9jdW1lbnQgY29udGFpbnM6PC9wPgo8dWw+CjxsaT48YSBocmVmPSIkdG9jX2Jhc2VuYW1lIj5BIHRhYmxlIG9mIGNvbnRlbnRzPC9hPjwvbGk+CjxsaT48YSBocmVmPSIkc3JjX2Jhc2VuYW1lIj5UaGUgc291cmNlIGNvZGU8L2E+PC9saT4KPC91bD4KPC9ib2R5Pgo8L25vZnJhbWVzPgo8L2ZyYW1lc2V0Pgo8L2h0bWw+CkVPTQogICAgcmV0dXJuOwp9CgpzdWIgY2hhbmdlX2FuY2hvcl9uYW1lcyB7CgogICAgIyBhZGQgYSBmaWxlbmFtZSBhbmQgdGFyZ2V0IHRvIGFuY2hvcnMKICAgICMgYWxzbyByZXR1cm4gdGhlIGZpcnN0IGFuY2hvcgogICAgbXkgKCAkcmxpbmVzLCAkZmlsZW5hbWUsICR0YXJnZXQgKSA9IEBfOwogICAgbXkgJGZpcnN0X2FuY2hvcjsKICAgIGZvcmVhY2ggbXkgJGxpbmUgKCBAeyRybGluZXN9ICkgewoKICAgICAgICAjICBXZSdyZSBsb29raW5nIGZvciBsaW5lcyBsaWtlIHRoaXM6CiAgICAgICAgIyAgPExJPjxBIEhSRUY9IiNzeW5vcHNpcyI+U1lOT1BTSVM8L0E+PC9MST4KICAgICAgICAjICAtLS0tICAtICAgICAgIC0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgICQxICAgICAgICAgICAgICAkNCAgICAgICAgICAgICQ1CiAgICAgICAgaWYgKCAkbGluZSA9fiAvXiguKik8YSguKilocmVmXHMqPVxzKiIoW14jXSopIyhbXiJdKykiW14+XSo+KC4qKSQvaSApIHsKICAgICAgICAgICAgbXkgJHByZSAgPSAkMTsKICAgICAgICAgICAgbXkgJG5hbWUgPSAkNDsKICAgICAgICAgICAgbXkgJHBvc3QgPSAkNTsKICAgICAgICAgICAgbXkgJGhyZWYgPSAiJGZpbGVuYW1lIyRuYW1lIjsKICAgICAgICAgICAgJGxpbmUgPSAiJHByZTxhIGhyZWY9XCIkaHJlZlwiIHRhcmdldD1cIiR0YXJnZXRcIj4kcG9zdFxuIjsKICAgICAgICAgICAgdW5sZXNzICgkZmlyc3RfYW5jaG9yKSB7ICRmaXJzdF9hbmNob3IgPSAkaHJlZiB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuICRmaXJzdF9hbmNob3I7Cn0KCnN1YiBjbG9zZV9odG1sX2ZpbGUgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIHJldHVybiB1bmxlc3MgJHNlbGYtPntfaHRtbF9maWxlX29wZW5lZH07CgogICAgbXkgJGh0bWxfZmggICAgID0gJHNlbGYtPntfaHRtbF9maH07CiAgICBteSAkcnRvY19zdHJpbmcgPSAkc2VsZi0+e19ydG9jX3N0cmluZ307CgogICAgIyBUaGVyZSBhcmUgMyBiYXNpYyBwYXRocyB0byBodG1sIG91dHB1dC4uLgoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIFBhdGggMTogZmluaXNoIHVwIGlmIGluIC1wcmUgbW9kZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGlmICggJHJPcHRzLT57J2h0bWwtcHJlLW9ubHknfSApIHsKICAgICAgICAkaHRtbF9maC0+cHJpbnQoIDw8IlBSRV9FTkQiKTsKPC9wcmU+ClBSRV9FTkQKICAgICAgICBjbG9zZV9vYmplY3QoJGh0bWxfZmgpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIEZpbmlzaCB0aGUgaW5kZXgKICAgICRzZWxmLT5hZGRfdG9jX2l0ZW0oICdFT0YnLCAnRU9GJyApOwoKICAgIG15ICRycHJlX3N0cmluZ19zdGFjayA9ICRzZWxmLT57X3JwcmVfc3RyaW5nX3N0YWNrfTsKCiAgICAjIFBhdGNoIHRvIGRhcmtlbiB0aGUgPHByZT4gYmFja2dyb3VuZCBjb2xvciBpbiBjYXNlIG9mIHBvZDJodG1sIGFuZAogICAgIyBpbnRlcmxlYXZlZCBjb2RlL2RvY3VtZW50YXRpb24uICBPdGhlcndpc2UsIHRoZSBkaXN0aW5jdGlvbgogICAgIyBiZXR3ZWVuIGNvZGUgYW5kIGRvY3VtZW50YXRpb24gaXMgYmx1cnJlZC4KICAgIGlmICggICAkck9wdHMtPntwb2QyaHRtbH0KICAgICAgICAmJiAkc2VsZi0+e19wb2RfY3V0X2NvdW50fSA+PSAxCiAgICAgICAgJiYgJHJPcHRzLT57J2h0bWwtY29sb3ItYmFja2dyb3VuZCd9IGVxICcjRkZGRkZGJyApCiAgICB7CiAgICAgICAgJHJPcHRzLT57J2h0bWwtcHJlLWNvbG9yLWJhY2tncm91bmQnfSA9ICcjRjBGMEYwJzsKICAgIH0KCiAgICAjIHB1dCB0aGUgY3NzIG9yIGl0cyBsaW5rIGludG8gYSBzdHJpbmcsIGlmIHVzZWQKICAgIG15ICRjc3Nfc3RyaW5nOwogICAgbXkgJGZoX2NzcyA9IFBlcmw6OlRpZHk6OklPU2NhbGFyLT5uZXcoIFwkY3NzX3N0cmluZywgJ3cnICk7CgogICAgIyB1c2UgY3NzIGxpbmtlZCB0byBhbm90aGVyIGZpbGUKICAgIGlmICggJHJPcHRzLT57J2h0bWwtbGlua2VkLXN0eWxlLXNoZWV0J30gKSB7CiAgICAgICAgJGZoX2Nzcy0+cHJpbnQoCiAgICAgICAgICAgIHFxKDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iJGNzc19saW5rbmFtZSIgdHlwZT0idGV4dC9jc3MiIC8+KSk7CiAgICB9CgogICAgIyB1c2UgY3NzIGVtYmVkZGVkIGluIHRoaXMgZmlsZQogICAgZWxzaWYgKCAhJHJPcHRzLT57J25vaHRtbC1zdHlsZS1zaGVldHMnfSApIHsKICAgICAgICAkZmhfY3NzLT5wcmludCggPDwnRU5EQ1NTJyk7CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CjwhLS0KRU5EQ1NTCiAgICAgICAgd3JpdGVfc3R5bGVfc2hlZXRfZGF0YSgkZmhfY3NzKTsKICAgICAgICAkZmhfY3NzLT5wcmludCggPDwiRU5EQ1NTIik7Ci0tPgo8L3N0eWxlPgpFTkRDU1MKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIHBhdGggMjogdXNlIHBvZDJodG1sIGlmIHJlcXVlc3RlZAogICAgIyAgICAgICAgIElmIHdlIGZhaWwgZm9yIHNvbWUgcmVhc29uLCBjb250aW51ZSBvbiB0byBwYXRoIDMKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGlmICggJHJPcHRzLT57J3BvZDJodG1sJ30gKSB7CiAgICAgICAgbXkgJHJwb2Rfc3RyaW5nID0gJHNlbGYtPntfcnBvZF9zdHJpbmd9OwogICAgICAgICRzZWxmLT5wb2RfdG9faHRtbCgKICAgICAgICAgICAgJHskcnBvZF9zdHJpbmd9LCAkY3NzX3N0cmluZywKICAgICAgICAgICAgJHskcnRvY19zdHJpbmd9LCAkcnByZV9zdHJpbmdfc3RhY2sKICAgICAgICApICYmIHJldHVybjsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIHBhdGggMzogd3JpdGUgY29kZSBpbiBodG1sLCB3aXRoIHBvZCBvbmx5IGluIGl0YWxpY3MKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIG15ICRpbnB1dF9maWxlID0gJHNlbGYtPntfaW5wdXRfZmlsZX07CiAgICBteSAkdGl0bGUgICAgICA9IGVzY2FwZV9odG1sKCRpbnB1dF9maWxlKTsKICAgIG15ICR0aW1lc3RhbXAgID0gIiI7CiAgICBpZiAoICRyT3B0cy0+eyd0aW1lc3RhbXAnfSApIHsKICAgICAgICBteSAkZGF0ZSA9IGxvY2FsdGltZTsKICAgICAgICAkdGltZXN0YW1wID0gIm9uICRkYXRlIjsKICAgIH0KICAgICRodG1sX2ZoLT5wcmludCggPDwiSFRNTF9TVEFSVCIpOwo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAKICAgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgo8IS0tIEdlbmVyYXRlZCBieSBwZXJsdGlkeSAkdGltZXN0YW1wIC0tPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CjxoZWFkPgo8dGl0bGU+JHRpdGxlPC90aXRsZT4KSFRNTF9TVEFSVAoKICAgICMgb3V0cHV0IHRoZSBjc3MsIGlmIHVzZWQKICAgIGlmICgkY3NzX3N0cmluZykgewogICAgICAgICRodG1sX2ZoLT5wcmludCgkY3NzX3N0cmluZyk7CiAgICAgICAgJGh0bWxfZmgtPnByaW50KCA8PCJFTkRDU1MiKTsKPC9oZWFkPgo8Ym9keT4KRU5EQ1NTCiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgJGh0bWxfZmgtPnByaW50KCA8PCJIVE1MX1NUQVJUIik7CjwvaGVhZD4KPGJvZHkgYmdjb2xvcj1cIiRyT3B0cy0+eydodG1sLWNvbG9yLWJhY2tncm91bmQnfVwiIHRleHQ9XCIkck9wdHMtPnsnaHRtbC1jb2xvci1wdW5jdHVhdGlvbid9XCI+CkhUTUxfU1RBUlQKICAgIH0KCiAgICAkaHRtbF9maC0+cHJpbnQoIjxhIG5hbWU9XCItdG9wLVwiPjwvYT5cbiIpOwogICAgJGh0bWxfZmgtPnByaW50KCA8PCJFT00iKTsKPGgxPiR0aXRsZTwvaDE+CkVPTQoKICAgICMgY29weSB0aGUgdGFibGUgb2YgY29udGVudHMKICAgIGlmICggICAkeyRydG9jX3N0cmluZ30KICAgICAgICAmJiAhJHJPcHRzLT57J2ZyYW1lcyd9CiAgICAgICAgJiYgJHJPcHRzLT57J2h0bWwtdGFibGUtb2YtY29udGVudHMnfSApCiAgICB7CiAgICAgICAgJGh0bWxfZmgtPnByaW50KCAkeyRydG9jX3N0cmluZ30gKTsKICAgIH0KCiAgICAjIGNvcHkgdGhlIHByZSBzZWN0aW9uKHMpCiAgICBteSAkZm5hbWVfY29tbWVudCA9ICRpbnB1dF9maWxlOwogICAgJGZuYW1lX2NvbW1lbnQgPX4gcy8tLSsvLS9nOyAgICAjIHByb3RlY3QgSFRNTCBjb21tZW50IHRhZ3MKICAgICRodG1sX2ZoLT5wcmludCggPDwiRU5EX1BSRSIpOwo8aHIgLz4KPCEtLSBjb250ZW50cyBvZiBmaWxlbmFtZTogJGZuYW1lX2NvbW1lbnQgLS0+CjxwcmU+CkVORF9QUkUKCiAgICBmb3JlYWNoIG15ICRycHJlX3N0cmluZyAoIEB7JHJwcmVfc3RyaW5nX3N0YWNrfSApIHsKICAgICAgICAkaHRtbF9maC0+cHJpbnQoICR7JHJwcmVfc3RyaW5nfSApOwogICAgfQoKICAgICMgYW5kIGZpbmlzaCB0aGUgaHRtbCBwYWdlCiAgICAkaHRtbF9maC0+cHJpbnQoIDw8IkhUTUxfRU5EIik7CjwvcHJlPgo8L2JvZHk+CjwvaHRtbD4KSFRNTF9FTkQKICAgIGNsb3NlX29iamVjdCgkaHRtbF9maCk7CgogICAgaWYgKCAkck9wdHMtPnsnZnJhbWVzJ30gKSB7CiAgICAgICAgIyNteSBAdG9jID0gbWFwIHsgJF8gLj0gIlxuIiB9IHNwbGl0IC9cbi8sICR7JHJ0b2Nfc3RyaW5nfTsKICAgICAgICBteSBAdG9jID0gbWFwIHsgJF8gLiAiXG4iIH0gc3BsaXQgL1xuLywgJHskcnRvY19zdHJpbmd9OwogICAgICAgICRzZWxmLT5tYWtlX2ZyYW1lKCBcQHRvYyApOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgbWFya3VwX3Rva2VucyB7CiAgICBteSAoICRzZWxmLCAkcnRva2VucywgJHJ0b2tlbl90eXBlLCAkcmxldmVscyApID0gQF87CiAgICBteSAoIEBjb2xvcmVkX3Rva2VucywgJHR5cGUsICR0b2tlbiwgJGxldmVsICk7CiAgICBteSAkcmxhc3RfbGV2ZWwgICAgPSAkc2VsZi0+e19ybGFzdF9sZXZlbH07CiAgICBteSAkcnBhY2thZ2Vfc3RhY2sgPSAkc2VsZi0+e19ycGFja2FnZV9zdGFja307CgogICAgZm9yICggbXkgJGogPSAwIDsgJGogPCBAeyRydG9rZW5fdHlwZX0gOyAkaisrICkgewogICAgICAgICR0eXBlICA9ICRydG9rZW5fdHlwZS0+WyRqXTsKICAgICAgICAkdG9rZW4gPSAkcnRva2Vucy0+WyRqXTsKICAgICAgICAkbGV2ZWwgPSAkcmxldmVscy0+WyRqXTsKICAgICAgICAkbGV2ZWwgPSAwIGlmICggJGxldmVsIDwgMCApOwoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgVXBkYXRlIHRoZSBwYWNrYWdlIHN0YWNrLiAgVGhlIHBhY2thZ2Ugc3RhY2sgaXMgbmVlZGVkIHRvIGtlZXAKICAgICAgICAjIHRoZSB0b2MgY29ycmVjdCBiZWNhdXNlIHNvbWUgcGFja2FnZXMgbWF5IGJlIGRlY2xhcmVkIHdpdGhpbgogICAgICAgICMgYmxvY2tzIGFuZCBnbyBvdXQgb2Ygc2NvcGUgd2hlbiB3ZSBsZWF2ZSB0aGUgYmxvY2suCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBpZiAoICRsZXZlbCA+ICR7JHJsYXN0X2xldmVsfSApIHsKICAgICAgICAgICAgdW5sZXNzICggJHJwYWNrYWdlX3N0YWNrLT5bICRsZXZlbCAtIDEgXSApIHsKICAgICAgICAgICAgICAgICRycGFja2FnZV9zdGFjay0+WyAkbGV2ZWwgLSAxIF0gPSAnbWFpbic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHJwYWNrYWdlX3N0YWNrLT5bJGxldmVsXSA9ICRycGFja2FnZV9zdGFjay0+WyAkbGV2ZWwgLSAxIF07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJGxldmVsIDwgJHskcmxhc3RfbGV2ZWx9ICkgewogICAgICAgICAgICBteSAkcGFja2FnZSA9ICRycGFja2FnZV9zdGFjay0+WyRsZXZlbF07CiAgICAgICAgICAgIHVubGVzcyAoJHBhY2thZ2UpIHsgJHBhY2thZ2UgPSAnbWFpbicgfQoKICAgICAgICAgICAgIyBpZiB3ZSBjaGFuZ2UgcGFja2FnZXMgZHVlIHRvIGEgbmVzdGluZyBjaGFuZ2UsIHdlCiAgICAgICAgICAgICMgaGF2ZSB0byBtYWtlIGFuIGVudHJ5IGluIHRoZSB0b2MKICAgICAgICAgICAgaWYgKCAkcGFja2FnZSBuZSAkcnBhY2thZ2Vfc3RhY2stPlsgJGxldmVsICsgMSBdICkgewogICAgICAgICAgICAgICAgJHNlbGYtPmFkZF90b2NfaXRlbSggJHBhY2thZ2UsICdwYWNrYWdlJyApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICR7JHJsYXN0X2xldmVsfSA9ICRsZXZlbDsKCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIEludGVyY2VwdCBhIHN1YiBuYW1lIGhlcmU7IHNwbGl0IGl0CiAgICAgICAgIyBpbnRvIGtleXdvcmQgJ3N1YicgYW5kIHN1YiBuYW1lOyBhbmQgYWRkIGFuCiAgICAgICAgIyBlbnRyeSBpbiB0aGUgdG9jCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBpZiAoICR0eXBlIGVxICdpJyAmJiAkdG9rZW4gPX4gL14oc3ViXHMrKShcdy4qKSQvICkgewogICAgICAgICAgICAkdG9rZW4gPSAkc2VsZi0+bWFya3VwX2h0bWxfZWxlbWVudCggJDEsICdrJyApOwogICAgICAgICAgICBwdXNoIEBjb2xvcmVkX3Rva2VucywgJHRva2VuOwogICAgICAgICAgICAkdG9rZW4gPSAkMjsKICAgICAgICAgICAgJHR5cGUgID0gJ00nOwoKICAgICAgICAgICAgIyBidXQgZG9uJ3QgaW5jbHVkZSBzdWIgZGVjbGFyYXRpb25zIGluIHRoZSB0b2M7CiAgICAgICAgICAgICMgdGhlc2Ugd2xsbCBoYXZlIGxlYWRpbmcgdG9rZW4gdHlwZXMgJ2k7JwogICAgICAgICAgICBteSAkc2lnbmF0dXJlID0gam9pbiAiIiwgQHskcnRva2VuX3R5cGV9OwogICAgICAgICAgICB1bmxlc3MgKCAkc2lnbmF0dXJlID1+IC9eaTsvICkgewogICAgICAgICAgICAgICAgbXkgJHN1Ym5hbWUgPSAkdG9rZW47CiAgICAgICAgICAgICAgICAkc3VibmFtZSA9fiBzL1tcc1woXS4qJC8vOyAjIHJlbW92ZSBhbnkgYXR0cmlidXRlcyBhbmQgcHJvdG90eXBlCiAgICAgICAgICAgICAgICAkc2VsZi0+YWRkX3RvY19pdGVtKCAkc3VibmFtZSwgJ3N1YicgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIEludGVyY2VwdCBhIHBhY2thZ2UgbmFtZSBoZXJlOyBzcGxpdCBpdAogICAgICAgICMgaW50byBrZXl3b3JkICdwYWNrYWdlJyBhbmQgbmFtZTsgYWRkIHRvIHRoZSB0b2MsCiAgICAgICAgIyBhbmQgdXBkYXRlIHRoZSBwYWNrYWdlIHN0YWNrCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBpZiAoICR0eXBlIGVxICdpJyAmJiAkdG9rZW4gPX4gL14ocGFja2FnZVxzKykoXHcuKikkLyApIHsKICAgICAgICAgICAgJHRva2VuID0gJHNlbGYtPm1hcmt1cF9odG1sX2VsZW1lbnQoICQxLCAnaycgKTsKICAgICAgICAgICAgcHVzaCBAY29sb3JlZF90b2tlbnMsICR0b2tlbjsKICAgICAgICAgICAgJHRva2VuID0gJDI7CiAgICAgICAgICAgICR0eXBlICA9ICdpJzsKICAgICAgICAgICAgJHNlbGYtPmFkZF90b2NfaXRlbSggIiR0b2tlbiIsICdwYWNrYWdlJyApOwogICAgICAgICAgICAkcnBhY2thZ2Vfc3RhY2stPlskbGV2ZWxdID0gJHRva2VuOwogICAgICAgIH0KCiAgICAgICAgJHRva2VuID0gJHNlbGYtPm1hcmt1cF9odG1sX2VsZW1lbnQoICR0b2tlbiwgJHR5cGUgKTsKICAgICAgICBwdXNoIEBjb2xvcmVkX3Rva2VucywgJHRva2VuOwogICAgfQogICAgcmV0dXJuICggXEBjb2xvcmVkX3Rva2VucyApOwp9CgpzdWIgbWFya3VwX2h0bWxfZWxlbWVudCB7CiAgICBteSAoICRzZWxmLCAkdG9rZW4sICR0eXBlICkgPSBAXzsKCiAgICByZXR1cm4gJHRva2VuIGlmICggJHR5cGUgZXEgJ2InICk7ICAgICAgICAgIyBza2lwIGEgYmxhbmsgdG9rZW4KICAgIHJldHVybiAkdG9rZW4gaWYgKCAkdG9rZW4gPX4gL15ccyokLyApOyAgICAjIHNraXAgYSBibGFuayBsaW5lCiAgICAkdG9rZW4gPSBlc2NhcGVfaHRtbCgkdG9rZW4pOwoKICAgICMgZ2V0IHRoZSBzaG9ydCBhYmJyZXZpYXRpb24gZm9yIHRoaXMgdG9rZW4gdHlwZQogICAgbXkgJHNob3J0X25hbWUgPSAkdG9rZW5fc2hvcnRfbmFtZXN7JHR5cGV9OwogICAgaWYgKCAhZGVmaW5lZCgkc2hvcnRfbmFtZSkgKSB7CiAgICAgICAgJHNob3J0X25hbWUgPSAicHUiOyAgICAgICAgICAgICAgICAgICAgIyBwdW5jdHVhdGlvbiBpcyBkZWZhdWx0CiAgICB9CgogICAgIyBoYW5kbGUgc3R5bGUgc2hlZXRzLi4KICAgIGlmICggISRyT3B0cy0+eydub2h0bWwtc3R5bGUtc2hlZXRzJ30gKSB7CiAgICAgICAgaWYgKCAkc2hvcnRfbmFtZSBuZSAncHUnICkgewogICAgICAgICAgICAkdG9rZW4gPSBxcSg8c3BhbiBjbGFzcz0iJHNob3J0X25hbWUiPikgLiAkdG9rZW4gLiAiPC9zcGFuPiI7CiAgICAgICAgfQogICAgfQoKICAgICMgaGFuZGxlIG5vIHN0eWxlIHNoZWV0cy4uCiAgICBlbHNlIHsKICAgICAgICBteSAkY29sb3IgPSAkaHRtbF9jb2xvcnskc2hvcnRfbmFtZX07CgogICAgICAgIGlmICggJGNvbG9yICYmICggJGNvbG9yIG5lICRyT3B0cy0+eydodG1sLWNvbG9yLXB1bmN0dWF0aW9uJ30gKSApIHsKICAgICAgICAgICAgJHRva2VuID0gcXEoPGZvbnQgY29sb3I9IiRjb2xvciI+KSAuICR0b2tlbiAuICI8L2ZvbnQ+IjsKICAgICAgICB9CiAgICAgICAgaWYgKCAkaHRtbF9pdGFsaWN7JHNob3J0X25hbWV9ICkgeyAkdG9rZW4gPSAiPGk+JHRva2VuPC9pPiIgfQogICAgICAgIGlmICggJGh0bWxfYm9sZHskc2hvcnRfbmFtZX0gKSAgIHsgJHRva2VuID0gIjxiPiR0b2tlbjwvYj4iIH0KICAgIH0KICAgIHJldHVybiAkdG9rZW47Cn0KCnN1YiBlc2NhcGVfaHRtbCB7CgogICAgbXkgJHRva2VuID0gc2hpZnQ7CiAgICBpZiAoJG1pc3NpbmdfaHRtbF9lbnRpdGllcykgewogICAgICAgICR0b2tlbiA9fiBzL1wmLyZhbXA7L2c7CiAgICAgICAgJHRva2VuID1+IHMvXDwvJmx0Oy9nOwogICAgICAgICR0b2tlbiA9fiBzL1w+LyZndDsvZzsKICAgICAgICAkdG9rZW4gPX4gcy9cIi8mcXVvdDsvZzsKICAgIH0KICAgIGVsc2UgewogICAgICAgIEhUTUw6OkVudGl0aWVzOjplbmNvZGVfZW50aXRpZXMoJHRva2VuKTsKICAgIH0KICAgIHJldHVybiAkdG9rZW47Cn0KCnN1YiBmaW5pc2hfZm9ybWF0dGluZyB7CgogICAgIyBjYWxsZWQgYWZ0ZXIgbGFzdCBsaW5lCiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgJHNlbGYtPmNsb3NlX2h0bWxfZmlsZSgpOwogICAgcmV0dXJuOwp9CgpzdWIgd3JpdGVfbGluZSB7CgogICAgbXkgKCAkc2VsZiwgJGxpbmVfb2ZfdG9rZW5zICkgPSBAXzsKICAgIHJldHVybiB1bmxlc3MgJHNlbGYtPntfaHRtbF9maWxlX29wZW5lZH07CiAgICBteSAkaHRtbF9wcmVfZmggPSAkc2VsZi0+e19odG1sX3ByZV9maH07CiAgICBteSAkbGluZV90eXBlICAgPSAkbGluZV9vZl90b2tlbnMtPntfbGluZV90eXBlfTsKICAgIG15ICRpbnB1dF9saW5lICA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3RleHR9OwogICAgbXkgJGxpbmVfbnVtYmVyID0gJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfbnVtYmVyfTsKICAgIGNob21wICRpbnB1dF9saW5lOwoKICAgICMgbWFya3VwIGxpbmUgb2YgY29kZS4uCiAgICBteSAkaHRtbF9saW5lOwogICAgaWYgKCAkbGluZV90eXBlIGVxICdDT0RFJyApIHsKICAgICAgICBteSAkcnRva2VuX3R5cGUgPSAkbGluZV9vZl90b2tlbnMtPntfcnRva2VuX3R5cGV9OwogICAgICAgIG15ICRydG9rZW5zICAgICA9ICRsaW5lX29mX3Rva2Vucy0+e19ydG9rZW5zfTsKICAgICAgICBteSAkcmxldmVscyAgICAgPSAkbGluZV9vZl90b2tlbnMtPntfcmxldmVsc307CgogICAgICAgIGlmICggJGlucHV0X2xpbmUgPX4gLyheXHMqKS8gKSB7CiAgICAgICAgICAgICRodG1sX2xpbmUgPSAkMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRodG1sX2xpbmUgPSAiIjsKICAgICAgICB9CiAgICAgICAgbXkgKCRyY29sb3JlZF90b2tlbnMpID0KICAgICAgICAgICRzZWxmLT5tYXJrdXBfdG9rZW5zKCAkcnRva2VucywgJHJ0b2tlbl90eXBlLCAkcmxldmVscyApOwogICAgICAgICRodG1sX2xpbmUgLj0gam9pbiAnJywgQHskcmNvbG9yZWRfdG9rZW5zfTsKICAgIH0KCiAgICAjIG1hcmt1cCBsaW5lIG9mIG5vbi1jb2RlLi4KICAgIGVsc2UgewogICAgICAgIG15ICRsaW5lX2NoYXJhY3RlcjsKICAgICAgICBpZiAgICAoICRsaW5lX3R5cGUgZXEgJ0hFUkUnICkgICAgICAgeyAkbGluZV9jaGFyYWN0ZXIgPSAnSCcgfQogICAgICAgIGVsc2lmICggJGxpbmVfdHlwZSBlcSAnSEVSRV9FTkQnICkgICB7ICRsaW5lX2NoYXJhY3RlciA9ICdoJyB9CiAgICAgICAgZWxzaWYgKCAkbGluZV90eXBlIGVxICdGT1JNQVQnICkgICAgIHsgJGxpbmVfY2hhcmFjdGVyID0gJ0gnIH0KICAgICAgICBlbHNpZiAoICRsaW5lX3R5cGUgZXEgJ0ZPUk1BVF9FTkQnICkgeyAkbGluZV9jaGFyYWN0ZXIgPSAnaCcgfQogICAgICAgIGVsc2lmICggJGxpbmVfdHlwZSBlcSAnU1lTVEVNJyApICAgICB7ICRsaW5lX2NoYXJhY3RlciA9ICdjJyB9CiAgICAgICAgZWxzaWYgKCAkbGluZV90eXBlIGVxICdFTkRfU1RBUlQnICkgewogICAgICAgICAgICAkbGluZV9jaGFyYWN0ZXIgPSAnayc7CiAgICAgICAgICAgICRzZWxmLT5hZGRfdG9jX2l0ZW0oICdfX0VORF9fJywgJ19fRU5EX18nICk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJGxpbmVfdHlwZSBlcSAnREFUQV9TVEFSVCcgKSB7CiAgICAgICAgICAgICRsaW5lX2NoYXJhY3RlciA9ICdrJzsKICAgICAgICAgICAgJHNlbGYtPmFkZF90b2NfaXRlbSggJ19fREFUQV9fJywgJ19fREFUQV9fJyApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRsaW5lX3R5cGUgPX4gL15QT0QvICkgewogICAgICAgICAgICAkbGluZV9jaGFyYWN0ZXIgPSAnUCc7CiAgICAgICAgICAgIGlmICggJHJPcHRzLT57J3BvZDJodG1sJ30gKSB7CiAgICAgICAgICAgICAgICBteSAkaHRtbF9wb2RfZmggPSAkc2VsZi0+e19odG1sX3BvZF9maH07CiAgICAgICAgICAgICAgICBpZiAoICRsaW5lX3R5cGUgZXEgJ1BPRF9TVEFSVCcgKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICRycHJlX3N0cmluZ19zdGFjayA9ICRzZWxmLT57X3JwcmVfc3RyaW5nX3N0YWNrfTsKICAgICAgICAgICAgICAgICAgICBteSAkcnByZV9zdHJpbmcgICAgICAgPSAkcnByZV9zdHJpbmdfc3RhY2stPlstMV07CgogICAgICAgICAgICAgICAgICAgICMgaWYgd2UgaGF2ZSB3cml0dGVuIGFueSBub24tYmxhbmsgbGluZXMgdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgIyBjdXJyZW50IHByZSBzZWN0aW9uLCBzdGFydCB3cml0aW5nIHRvIGEgbmV3IG91dHB1dAogICAgICAgICAgICAgICAgICAgICMgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkeyRycHJlX3N0cmluZ30gPX4gL1xTLyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHByZV9zdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgICRodG1sX3ByZV9maCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgUGVybDo6VGlkeTo6SU9TY2FsYXItPm5ldyggXCRwcmVfc3RyaW5nLCAndycgKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYtPntfaHRtbF9wcmVfZmh9ID0gJGh0bWxfcHJlX2ZoOwogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEB7JHJwcmVfc3RyaW5nX3N0YWNrfSwgXCRwcmVfc3RyaW5nOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBsZWF2ZSBhIG1hcmtlciBpbiB0aGUgcG9kIHN0cmVhbSBzbyB3ZSBrbm93CiAgICAgICAgICAgICAgICAgICAgICAgICMgd2hlcmUgdG8gcHV0IHRoZSBwcmUgc2VjdGlvbiB3ZSBqdXN0CiAgICAgICAgICAgICAgICAgICAgICAgICMgZmluaXNoZWQuCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRmb3JfaHRtbCA9ICc9Zm9yIGh0bWwnOyAgICAjIGRvbid0IGNvbmZ1c2UgcG9kIHV0aWxzCiAgICAgICAgICAgICAgICAgICAgICAgICRodG1sX3BvZF9maC0+cHJpbnQoPDxFT00pOwoKJGZvcl9odG1sCjwhLS0gcEVSTFRJRFkgc0VDVElPTiAtLT4KCkVPTQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBvdGhlcndpc2UsIGp1c3QgY2xlYXIgdGhlIGN1cnJlbnQgc3RyaW5nIGFuZCBzdGFydAogICAgICAgICAgICAgICAgICAgICMgb3ZlcgogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkeyRycHJlX3N0cmluZ30gPSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgJGh0bWxfcG9kX2ZoLT5wcmludCgiXG4iKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkaHRtbF9wb2RfZmgtPnByaW50KCAkaW5wdXRfbGluZSAuICJcbiIgKTsKICAgICAgICAgICAgICAgIGlmICggJGxpbmVfdHlwZSBlcSAnUE9EX0VORCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJHNlbGYtPntfcG9kX2N1dF9jb3VudH0rKzsKICAgICAgICAgICAgICAgICAgICAkaHRtbF9wb2RfZmgtPnByaW50KCJcbiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgeyAkbGluZV9jaGFyYWN0ZXIgPSAnUScgfQogICAgICAgICRodG1sX2xpbmUgPSAkc2VsZi0+bWFya3VwX2h0bWxfZWxlbWVudCggJGlucHV0X2xpbmUsICRsaW5lX2NoYXJhY3RlciApOwogICAgfQoKICAgICMgYWRkIHRoZSBsaW5lIG51bWJlciBpZiByZXF1ZXN0ZWQKICAgIGlmICggJHJPcHRzLT57J2h0bWwtbGluZS1udW1iZXJzJ30gKSB7CiAgICAgICAgbXkgJGV4dHJhX3NwYWNlID0KICAgICAgICAgICAgKCAkbGluZV9udW1iZXIgPCAxMCApICAgPyAiICAgIgogICAgICAgICAgOiAoICRsaW5lX251bWJlciA8IDEwMCApICA/ICIgICIKICAgICAgICAgIDogKCAkbGluZV9udW1iZXIgPCAxMDAwICkgPyAiICIKICAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgICAgICAiIjsKICAgICAgICAkaHRtbF9saW5lID0gJGV4dHJhX3NwYWNlIC4gJGxpbmVfbnVtYmVyIC4gIiAiIC4gJGh0bWxfbGluZTsKICAgIH0KCiAgICAjIHdyaXRlIHRoZSBsaW5lCiAgICAkaHRtbF9wcmVfZmgtPnByaW50KCIkaHRtbF9saW5lXG4iKTsKICAgIHJldHVybjsKfQoxOwoK</File>
        <File Location="Kernel/cpan-lib/Perl/Tidy/LineSink.pm" Permission="660" Encode="Base64">IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyB0aGUgUGVybDo6VGlkeTo6TGluZVNpbmsgY2xhc3Mgc3VwcGxpZXMgYSB3cml0ZV9saW5lIG1ldGhvZCBmb3IKIyBhY3R1YWwgZmlsZSB3cml0aW5nCiMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpwYWNrYWdlIFBlcmw6OlRpZHk6OkxpbmVTaW5rOwp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm91ciAkVkVSU0lPTiA9ICcyMDIxMDExMSc7CgpzdWIgQVVUT0xPQUQgewoKICAgICMgQ2F0Y2ggYW55IHVuZGVmaW5lZCBzdWIgY2FsbHMgc28gdGhhdCB3ZSBhcmUgc3VyZSB0byBnZXQKICAgICMgc29tZSBkaWFnbm9zdGljIGluZm9ybWF0aW9uLiAgVGhpcyBzdWIgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZAogICAgIyBleGNlcHQgZm9yIGEgcHJvZ3JhbW1pbmcgZXJyb3IuCiAgICBvdXIgJEFVVE9MT0FEOwogICAgcmV0dXJuIGlmICggJEFVVE9MT0FEID1+IC9cYkRFU1RST1kkLyApOwogICAgbXkgKCAkcGtnLCAkZm5hbWUsICRsbm8gKSA9IGNhbGxlcigpOwogICAgbXkgJG15X3BhY2thZ2UgPSBfX1BBQ0tBR0VfXzsKICAgIHByaW50IFNUREVSUiA8PEVPTTsKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFcnJvciBkZXRlY3RlZCBpbiBwYWNrYWdlICckbXlfcGFja2FnZScsIHZlcnNpb24gJFZFUlNJT04KUmVjZWl2ZWQgdW5leHBlY3RlZCBBVVRPTE9BRCBjYWxsIGZvciBzdWIgJyRBVVRPTE9BRCcKQ2FsbGVkIGZyb20gcGFja2FnZTogJyRwa2cnICAKQ2FsbGVkIGZyb20gRmlsZSAnJGZuYW1lJyAgYXQgbGluZSAnJGxubycKVGhpcyBlcnJvciBpcyBwcm9iYWJseSBkdWUgdG8gYSByZWNlbnQgcHJvZ3JhbW1pbmcgY2hhbmdlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRU9NCiAgICBleGl0IDE7Cn0KCnN1YiBERVNUUk9ZIHsKCiAgICAjIHJlcXVpcmVkIHRvIGF2b2lkIGNhbGwgdG8gQVVUT0xPQUQgaW4gc29tZSB2ZXJzaW9ucyBvZiBwZXJsCn0KCnN1YiBuZXcgewoKICAgIG15ICggJGNsYXNzLCBAYXJncyApID0gQF87CgogICAgbXkgJWRlZmF1bHRzID0gKAogICAgICAgIG91dHB1dF9maWxlICAgICAgICAgICAgICA9PiB1bmRlZiwKICAgICAgICBsaW5lX3NlcGFyYXRvciAgICAgICAgICAgPT4gdW5kZWYsCiAgICAgICAgck9wdHMgICAgICAgICAgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIHJwZW5kaW5nX2xvZ2ZpbGVfbWVzc2FnZSA9PiB1bmRlZiwKICAgICAgICBpc19lbmNvZGVkX2RhdGEgICAgICAgICAgPT4gdW5kZWYsCiAgICApOwogICAgbXkgJWFyZ3MgPSAoICVkZWZhdWx0cywgQGFyZ3MgKTsKCiAgICBteSAkb3V0cHV0X2ZpbGUgICAgICAgICAgICAgID0gJGFyZ3N7b3V0cHV0X2ZpbGV9OwogICAgbXkgJGxpbmVfc2VwYXJhdG9yICAgICAgICAgICA9ICRhcmdze2xpbmVfc2VwYXJhdG9yfTsKICAgIG15ICRyT3B0cyAgICAgICAgICAgICAgICAgICAgPSAkYXJnc3tyT3B0c307CiAgICBteSAkcnBlbmRpbmdfbG9nZmlsZV9tZXNzYWdlID0gJGFyZ3N7cnBlbmRpbmdfbG9nZmlsZV9tZXNzYWdlfTsKICAgIG15ICRpc19lbmNvZGVkX2RhdGEgICAgICAgICAgPSAkYXJnc3tpc19lbmNvZGVkX2RhdGF9OwoKICAgIG15ICRmaCA9IHVuZGVmOwoKICAgIG15ICRvdXRwdXRfZmlsZV9vcGVuID0gMDsKCiAgICBpZiAoICRyT3B0cy0+eydmb3JtYXQnfSBlcSAndGlkeScgKSB7CiAgICAgICAgKCAkZmgsICRvdXRwdXRfZmlsZSApID0KICAgICAgICAgIFBlcmw6OlRpZHk6OnN0cmVhbWhhbmRsZSggJG91dHB1dF9maWxlLCAndycsICRpc19lbmNvZGVkX2RhdGEgKTsKICAgICAgICB1bmxlc3MgKCRmaCkgeyBQZXJsOjpUaWR5OjpEaWUoIkNhbm5vdCB3cml0ZSB0byBvdXRwdXQgc3RyZWFtXG4iKTsgfQogICAgICAgICRvdXRwdXRfZmlsZV9vcGVuID0gMTsKICAgIH0KCiAgICAjIGluIG9yZGVyIHRvIGNoZWNrIG91dHB1dCBzeW50YXggd2hlbiBzdGFuZGFyZCBvdXRwdXQgaXMgdXNlZCwKICAgICMgb3Igd2hlbiBpdCBpcyBhbiBvYmplY3QsIHdlIGhhdmUgdG8gbWFrZSBhIGNvcHkgb2YgdGhlIGZpbGUKICAgIGlmICggJG91dHB1dF9maWxlIGVxICctJyB8fCByZWYgJG91dHB1dF9maWxlICkgewogICAgICAgIGlmICggJHJPcHRzLT57J2NoZWNrLXN5bnRheCd9ICkgewoKICAgICAgICAgICAgIyBUdXJuaW5nIG9mZiBzeW50YXggY2hlY2sgd2hlbiBzdGFuZGFyZCBvdXRwdXQgaXMgdXNlZC4KICAgICAgICAgICAgIyBUaGUgcmVhc29uIGlzIHRoYXQgdGVtcG9yYXJ5IGZpbGVzIGNhdXNlIHByb2JsZW1zIG9uCiAgICAgICAgICAgICMgb24gbWFueSBzeXN0ZW1zLgogICAgICAgICAgICAkck9wdHMtPnsnY2hlY2stc3ludGF4J30gPSAwOwogICAgICAgICAgICAkeyRycGVuZGluZ19sb2dmaWxlX21lc3NhZ2V9IC49IDw8RU9NOwpOb3RlOiAtLXN5bnRheCBjaGVjayB3aWxsIGJlIHNraXBwZWQgYmVjYXVzZSBzdGFuZGFyZCBvdXRwdXQgaXMgdXNlZApFT00KCiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBibGVzcyB7CiAgICAgICAgX2ZoICAgICAgICAgICAgICAgPT4gJGZoLAogICAgICAgIF9vdXRwdXRfZmlsZSAgICAgID0+ICRvdXRwdXRfZmlsZSwKICAgICAgICBfb3V0cHV0X2ZpbGVfb3BlbiA9PiAkb3V0cHV0X2ZpbGVfb3BlbiwKICAgICAgICBfbGluZV9zZXBhcmF0b3IgICA9PiAkbGluZV9zZXBhcmF0b3IsCiAgICAgICAgX2lzX2VuY29kZWRfZGF0YSAgPT4gJGlzX2VuY29kZWRfZGF0YSwKICAgIH0sICRjbGFzczsKfQoKc3ViIHdyaXRlX2xpbmUgewoKICAgIG15ICggJHNlbGYsICRsaW5lICkgPSBAXzsKICAgIG15ICRmaCA9ICRzZWxmLT57X2ZofTsKCiAgICBteSAkb3V0cHV0X2ZpbGVfb3BlbiA9ICRzZWxmLT57X291dHB1dF9maWxlX29wZW59OwogICAgY2hvbXAgJGxpbmU7CiAgICAkbGluZSAuPSAkc2VsZi0+e19saW5lX3NlcGFyYXRvcn07CgogICAgJGZoLT5wcmludCgkbGluZSkgaWYgKCAkc2VsZi0+e19vdXRwdXRfZmlsZV9vcGVufSApOwoKICAgIHJldHVybjsKfQoKc3ViIGNsb3NlX291dHB1dF9maWxlIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CgogICAgIyBPbmx5IGNsb3NlIHBoeXNpY2FsIGZpbGVzLCBub3QgU1RET1VUIGFuZCBvdGhlciBvYmplY3RzCiAgICBteSAkb3V0cHV0X2ZpbGUgPSAkc2VsZi0+e19vdXRwdXRfZmlsZX07CiAgICBpZiAoICRvdXRwdXRfZmlsZSBuZSAnLScgJiYgIXJlZiAkb3V0cHV0X2ZpbGUgKSB7CiAgICAgICAgJHNlbGYtPntfZmh9LT5jbG9zZSgpIGlmICRzZWxmLT57X291dHB1dF9maWxlX29wZW59OwogICAgfQogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/cpan-lib/Perl/Tidy/LineBuffer.pm" Permission="660" Encode="Base64">IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBUaGUgUGVybDo6VGlkeTo6TGluZUJ1ZmZlciBjbGFzcyBzdXBwbGllcyBhICdnZXRfbGluZSgpJwojIG1ldGhvZCBmb3IgcmV0dXJuaW5nIHRoZSBuZXh0IGxpbmUgdG8gYmUgcGFyc2VkLCBhcyB3ZWxsIGFzIGEKIyAncGVla19haGVhZCgpJyBtZXRob2QKIwojIFRoZSBpbnB1dCBwYXJhbWV0ZXIgaXMgYW4gb2JqZWN0IHdpdGggYSAnZ2V0X2xpbmUoKScgbWV0aG9kCiMgd2hpY2ggcmV0dXJucyB0aGUgbmV4dCBsaW5lIHRvIGJlIHBhcnNlZAojCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKcGFja2FnZSBQZXJsOjpUaWR5OjpMaW5lQnVmZmVyOwp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm91ciAkVkVSU0lPTiA9ICcyMDIxMDExMSc7CgpzdWIgQVVUT0xPQUQgewoKICAgICMgQ2F0Y2ggYW55IHVuZGVmaW5lZCBzdWIgY2FsbHMgc28gdGhhdCB3ZSBhcmUgc3VyZSB0byBnZXQKICAgICMgc29tZSBkaWFnbm9zdGljIGluZm9ybWF0aW9uLiAgVGhpcyBzdWIgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZAogICAgIyBleGNlcHQgZm9yIGEgcHJvZ3JhbW1pbmcgZXJyb3IuCiAgICBvdXIgJEFVVE9MT0FEOwogICAgcmV0dXJuIGlmICggJEFVVE9MT0FEID1+IC9cYkRFU1RST1kkLyApOwogICAgbXkgKCAkcGtnLCAkZm5hbWUsICRsbm8gKSA9IGNhbGxlcigpOwogICAgbXkgJG15X3BhY2thZ2UgPSBfX1BBQ0tBR0VfXzsKICAgIHByaW50IFNUREVSUiA8PEVPTTsKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFcnJvciBkZXRlY3RlZCBpbiBwYWNrYWdlICckbXlfcGFja2FnZScsIHZlcnNpb24gJFZFUlNJT04KUmVjZWl2ZWQgdW5leHBlY3RlZCBBVVRPTE9BRCBjYWxsIGZvciBzdWIgJyRBVVRPTE9BRCcKQ2FsbGVkIGZyb20gcGFja2FnZTogJyRwa2cnICAKQ2FsbGVkIGZyb20gRmlsZSAnJGZuYW1lJyAgYXQgbGluZSAnJGxubycKVGhpcyBlcnJvciBpcyBwcm9iYWJseSBkdWUgdG8gYSByZWNlbnQgcHJvZ3JhbW1pbmcgY2hhbmdlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRU9NCiAgICBleGl0IDE7Cn0KCnN1YiBERVNUUk9ZIHsKCiAgICAjIHJlcXVpcmVkIHRvIGF2b2lkIGNhbGwgdG8gQVVUT0xPQUQgaW4gc29tZSB2ZXJzaW9ucyBvZiBwZXJsCn0KCnN1YiBuZXcgewoKICAgIG15ICggJGNsYXNzLCAkbGluZV9zb3VyY2Vfb2JqZWN0ICkgPSBAXzsKCiAgICByZXR1cm4gYmxlc3MgewogICAgICAgIF9saW5lX3NvdXJjZV9vYmplY3QgPT4gJGxpbmVfc291cmNlX29iamVjdCwKICAgICAgICBfcmxvb2thaGVhZF9idWZmZXIgID0+IFtdLAogICAgfSwgJGNsYXNzOwp9CgpzdWIgcGVla19haGVhZCB7CiAgICBteSAoICRzZWxmLCAkYnVmZmVyX2luZGV4ICkgPSBAXzsKICAgIG15ICRsaW5lICAgICAgICAgICAgICAgPSB1bmRlZjsKICAgIG15ICRsaW5lX3NvdXJjZV9vYmplY3QgPSAkc2VsZi0+e19saW5lX3NvdXJjZV9vYmplY3R9OwogICAgbXkgJHJsb29rYWhlYWRfYnVmZmVyICA9ICRzZWxmLT57X3Jsb29rYWhlYWRfYnVmZmVyfTsKICAgIGlmICggJGJ1ZmZlcl9pbmRleCA8IHNjYWxhciggQHskcmxvb2thaGVhZF9idWZmZXJ9ICkgKSB7CiAgICAgICAgJGxpbmUgPSAkcmxvb2thaGVhZF9idWZmZXItPlskYnVmZmVyX2luZGV4XTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRsaW5lID0gJGxpbmVfc291cmNlX29iamVjdC0+Z2V0X2xpbmUoKTsKICAgICAgICBwdXNoKCBAeyRybG9va2FoZWFkX2J1ZmZlcn0sICRsaW5lICk7CiAgICB9CiAgICByZXR1cm4gJGxpbmU7Cn0KCnN1YiBnZXRfbGluZSB7CiAgICBteSAkc2VsZiAgICAgICAgICAgICAgID0gc2hpZnQ7CiAgICBteSAkbGluZSAgICAgICAgICAgICAgID0gdW5kZWY7CiAgICBteSAkbGluZV9zb3VyY2Vfb2JqZWN0ID0gJHNlbGYtPntfbGluZV9zb3VyY2Vfb2JqZWN0fTsKICAgIG15ICRybG9va2FoZWFkX2J1ZmZlciAgPSAkc2VsZi0+e19ybG9va2FoZWFkX2J1ZmZlcn07CgogICAgaWYgKCBzY2FsYXIoIEB7JHJsb29rYWhlYWRfYnVmZmVyfSApICkgewogICAgICAgICRsaW5lID0gc2hpZnQgQHskcmxvb2thaGVhZF9idWZmZXJ9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJGxpbmUgPSAkbGluZV9zb3VyY2Vfb2JqZWN0LT5nZXRfbGluZSgpOwogICAgfQogICAgcmV0dXJuICRsaW5lOwp9CjE7Cgo=</File>
        <File Location="Kernel/cpan-lib/Perl/Tidy/DevNull.pm" Permission="660" Encode="Base64">IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBUaGUgUGVybDo6VGlkeTo6RGV2TnVsbCBjbGFzcyBzdXBwbGllcyBhIGR1bW15IHByaW50IG1ldGhvZAojCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKcGFja2FnZSBQZXJsOjpUaWR5OjpEZXZOdWxsOwp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm91ciAkVkVSU0lPTiA9ICcyMDIxMDExMSc7CnN1YiBuZXcgICB7IG15ICRzZWxmID0gc2hpZnQ7IHJldHVybiBibGVzcyB7fSwgJHNlbGYgfQpzdWIgcHJpbnQgeyByZXR1cm4gfQpzdWIgY2xvc2UgeyByZXR1cm4gfQoKMTsKCg==</File>
        <File Location="Kernel/cpan-lib/Perl/Tidy/Diagnostics.pm" Permission="660" Encode="Base64">IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBUaGUgUGVybDo6VGlkeTo6RGlhZ25vc3RpY3MgY2xhc3Mgd3JpdGVzIHRoZSBESUFHTk9TVElDUyBmaWxlLCB3aGljaCBpcwojIHVzZWZ1bCBmb3IgcHJvZ3JhbSBkZXZlbG9wbWVudC4KIwojIE9ubHkgb25lIHN1Y2ggZmlsZSBpcyBjcmVhdGVkIHJlZ2FyZGxlc3Mgb2YgdGhlIG51bWJlciBvZiBpbnB1dAojIGZpbGVzIHByb2Nlc3NlZC4gIFRoaXMgYWxsb3dzIHRoZSByZXN1bHRzIG9mIHByb2Nlc3NpbmcgbWFueSBmaWxlcwojIHRvIGJlIHN1bW1hcml6ZWQgaW4gYSBzaW5nbGUgZmlsZS4KCiMgT3V0cHV0IG1lc3NhZ2VzIGdvIHRvIGEgZmlsZSBuYW1lZCBESUFHTk9TVElDUywgd2hlcmUKIyB0aGV5IGFyZSBsYWJlbGVkIGJ5IGZpbGUgYW5kIGxpbmUuICBUaGlzIGFsbG93cyBtYW55IGZpbGVzIHRvIGJlCiMgc2Nhbm5lZCBhdCBvbmNlIGZvciBzb21lIHBhcnRpY3VsYXIgY29uZGl0aW9uIG9mIGludGVyZXN0LiAgSXQgd2FzCiMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgZGV2ZWxvcGluZyBndWVzc2luZyBzdHJhdGVnaWVzLgojCiMgTk9URTogVGhpcyBmZWF0dXJlIGlzIGRlYWN0aXZhdGVkIGluIGZpbmFsIHJlbGVhc2VzIGJ1dCBjYW4gYmUKIyByZWFjdGl2YXRlZCBmb3IgZGVidWdnaW5nIGJ5IHVuLWNvbW1lbnRpbmcgdGhlICdJJyBvcHRpb25zIGZsYWcKIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnBhY2thZ2UgUGVybDo6VGlkeTo6RGlhZ25vc3RpY3M7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKb3VyICRWRVJTSU9OID0gJzIwMjEwMTExJzsKCnN1YiBBVVRPTE9BRCB7CgogICAgIyBDYXRjaCBhbnkgdW5kZWZpbmVkIHN1YiBjYWxscyBzbyB0aGF0IHdlIGFyZSBzdXJlIHRvIGdldAogICAgIyBzb21lIGRpYWdub3N0aWMgaW5mb3JtYXRpb24uICBUaGlzIHN1YiBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkCiAgICAjIGV4Y2VwdCBmb3IgYSBwcm9ncmFtbWluZyBlcnJvci4KICAgIG91ciAkQVVUT0xPQUQ7CiAgICByZXR1cm4gaWYgKCAkQVVUT0xPQUQgPX4gL1xiREVTVFJPWSQvICk7CiAgICBteSAoICRwa2csICRmbmFtZSwgJGxubyApID0gY2FsbGVyKCk7CiAgICBteSAkbXlfcGFja2FnZSA9IF9fUEFDS0FHRV9fOwogICAgcHJpbnQgU1RERVJSIDw8RU9NOwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVycm9yIGRldGVjdGVkIGluIHBhY2thZ2UgJyRteV9wYWNrYWdlJywgdmVyc2lvbiAkVkVSU0lPTgpSZWNlaXZlZCB1bmV4cGVjdGVkIEFVVE9MT0FEIGNhbGwgZm9yIHN1YiAnJEFVVE9MT0FEJwpDYWxsZWQgZnJvbSBwYWNrYWdlOiAnJHBrZycgIApDYWxsZWQgZnJvbSBGaWxlICckZm5hbWUnICBhdCBsaW5lICckbG5vJwpUaGlzIGVycm9yIGlzIHByb2JhYmx5IGR1ZSB0byBhIHJlY2VudCBwcm9ncmFtbWluZyBjaGFuZ2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFT00KICAgIGV4aXQgMTsKfQoKc3ViIERFU1RST1kgewoKICAgICMgcmVxdWlyZWQgdG8gYXZvaWQgY2FsbCB0byBBVVRPTE9BRCBpbiBzb21lIHZlcnNpb25zIG9mIHBlcmwKfQoKc3ViIG5ldyB7CgogICAgbXkgJGNsYXNzID0gc2hpZnQ7CiAgICByZXR1cm4gYmxlc3MgewogICAgICAgIF93cml0ZV9kaWFnbm9zdGljc19jb3VudCA9PiAwLAogICAgICAgIF9sYXN0X2RpYWdub3N0aWNfZmlsZSAgICA9PiAiIiwKICAgICAgICBfaW5wdXRfZmlsZSAgICAgICAgICAgICAgPT4gIiIsCiAgICAgICAgX2ZoICAgICAgICAgICAgICAgICAgICAgID0+IHVuZGVmLAogICAgfSwgJGNsYXNzOwp9CgpzdWIgc2V0X2lucHV0X2ZpbGUgewogICAgbXkgKCAkc2VsZiwgJGlucHV0X2ZpbGUgKSA9IEBfOwogICAgJHNlbGYtPntfaW5wdXRfZmlsZX0gPSAkaW5wdXRfZmlsZTsKICAgIHJldHVybjsKfQoKc3ViIHdyaXRlX2RpYWdub3N0aWNzIHsKICAgIG15ICggJHNlbGYsICRtc2cgKSA9IEBfOwoKICAgIHVubGVzcyAoICRzZWxmLT57X3dyaXRlX2RpYWdub3N0aWNzX2NvdW50fSApIHsKICAgICAgICBvcGVuKCAkc2VsZi0+e19maH0sICI+IiwgIkRJQUdOT1NUSUNTIiApCiAgICAgICAgICBvciBQZXJsOjpUaWR5OjpEaWUoImNvdWxkbid0IG9wZW4gRElBR05PU1RJQ1M6ICQhXG4iKTsKICAgIH0KCiAgICBteSAkZmggICAgICAgICAgICAgICAgICAgPSAkc2VsZi0+e19maH07CiAgICBteSAkbGFzdF9kaWFnbm9zdGljX2ZpbGUgPSAkc2VsZi0+e19sYXN0X2RpYWdub3N0aWNfZmlsZX07CiAgICBteSAkaW5wdXRfZmlsZSAgICAgICAgICAgPSAkc2VsZi0+e19pbnB1dF9maWxlfTsKICAgIGlmICggJGxhc3RfZGlhZ25vc3RpY19maWxlIG5lICRpbnB1dF9maWxlICkgewogICAgICAgICRmaC0+cHJpbnQoIlxuRklMRTokaW5wdXRfZmlsZVxuIik7CiAgICB9CiAgICAkc2VsZi0+e19sYXN0X2RpYWdub3N0aWNfZmlsZX0gPSAkaW5wdXRfZmlsZTsKICAgIG15ICRpbnB1dF9saW5lX251bWJlciA9IFBlcmw6OlRpZHk6OlRva2VuaXplcjo6Z2V0X2lucHV0X2xpbmVfbnVtYmVyKCk7CiAgICAkZmgtPnByaW50KCIkaW5wdXRfbGluZV9udW1iZXI6XHQkbXNnIik7CiAgICAkc2VsZi0+e193cml0ZV9kaWFnbm9zdGljc19jb3VudH0rKzsKICAgIHJldHVybjsKfQoKMTsKCg==</File>
        <File Location="Kernel/cpan-lib/Perl/Tidy/LineSource.pm" Permission="660" Encode="Base64">IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyB0aGUgUGVybDo6VGlkeTo6TGluZVNvdXJjZSBjbGFzcyBzdXBwbGllcyBhbiBvYmplY3Qgd2l0aCBhICdnZXRfbGluZSgpJyBtZXRob2QKIyB3aGljaCByZXR1cm5zIHRoZSBuZXh0IGxpbmUgdG8gYmUgcGFyc2VkCiMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpwYWNrYWdlIFBlcmw6OlRpZHk6OkxpbmVTb3VyY2U7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKb3VyICRWRVJTSU9OID0gJzIwMjEwMTExJzsKCnN1YiBBVVRPTE9BRCB7CgogICAgIyBDYXRjaCBhbnkgdW5kZWZpbmVkIHN1YiBjYWxscyBzbyB0aGF0IHdlIGFyZSBzdXJlIHRvIGdldAogICAgIyBzb21lIGRpYWdub3N0aWMgaW5mb3JtYXRpb24uICBUaGlzIHN1YiBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkCiAgICAjIGV4Y2VwdCBmb3IgYSBwcm9ncmFtbWluZyBlcnJvci4KICAgIG91ciAkQVVUT0xPQUQ7CiAgICByZXR1cm4gaWYgKCAkQVVUT0xPQUQgPX4gL1xiREVTVFJPWSQvICk7CiAgICBteSAoICRwa2csICRmbmFtZSwgJGxubyApID0gY2FsbGVyKCk7CiAgICBteSAkbXlfcGFja2FnZSA9IF9fUEFDS0FHRV9fOwogICAgcHJpbnQgU1RERVJSIDw8RU9NOwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVycm9yIGRldGVjdGVkIGluIHBhY2thZ2UgJyRteV9wYWNrYWdlJywgdmVyc2lvbiAkVkVSU0lPTgpSZWNlaXZlZCB1bmV4cGVjdGVkIEFVVE9MT0FEIGNhbGwgZm9yIHN1YiAnJEFVVE9MT0FEJwpDYWxsZWQgZnJvbSBwYWNrYWdlOiAnJHBrZycgIApDYWxsZWQgZnJvbSBGaWxlICckZm5hbWUnICBhdCBsaW5lICckbG5vJwpUaGlzIGVycm9yIGlzIHByb2JhYmx5IGR1ZSB0byBhIHJlY2VudCBwcm9ncmFtbWluZyBjaGFuZ2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFT00KICAgIGV4aXQgMTsKfQoKc3ViIERFU1RST1kgewoKICAgICMgcmVxdWlyZWQgdG8gYXZvaWQgY2FsbCB0byBBVVRPTE9BRCBpbiBzb21lIHZlcnNpb25zIG9mIHBlcmwKfQoKc3ViIG5ldyB7CgogICAgbXkgKCAkY2xhc3MsIEBhcmdzICkgPSBAXzsKCiAgICBteSAlZGVmYXVsdHMgPSAoCiAgICAgICAgaW5wdXRfZmlsZSAgICAgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIHJPcHRzICAgICAgICAgICAgICAgICAgICA9PiB1bmRlZiwKICAgICAgICBycGVuZGluZ19sb2dmaWxlX21lc3NhZ2UgPT4gdW5kZWYsCiAgICApOwoKICAgIG15ICVhcmdzID0gKCAlZGVmYXVsdHMsIEBhcmdzICk7CgogICAgbXkgJGlucHV0X2ZpbGUgICAgICAgICAgICAgICA9ICRhcmdze2lucHV0X2ZpbGV9OwogICAgbXkgJHJPcHRzICAgICAgICAgICAgICAgICAgICA9ICRhcmdze3JPcHRzfTsKICAgIG15ICRycGVuZGluZ19sb2dmaWxlX21lc3NhZ2UgPSAkYXJnc3tycGVuZGluZ19sb2dmaWxlX21lc3NhZ2V9OwoKICAgIG15ICRpbnB1dF9saW5lX2VuZGluZzsKICAgIGlmICggJHJPcHRzLT57J3ByZXNlcnZlLWxpbmUtZW5kaW5ncyd9ICkgewogICAgICAgICRpbnB1dF9saW5lX2VuZGluZyA9IFBlcmw6OlRpZHk6OmZpbmRfaW5wdXRfbGluZV9lbmRpbmcoJGlucHV0X2ZpbGUpOwogICAgfQoKICAgICggbXkgJGZoLCAkaW5wdXRfZmlsZSApID0gUGVybDo6VGlkeTo6c3RyZWFtaGFuZGxlKCAkaW5wdXRfZmlsZSwgJ3InICk7CiAgICByZXR1cm4gdW5sZXNzICRmaDsKCiAgICAjIGluIG9yZGVyIHRvIGNoZWNrIG91dHB1dCBzeW50YXggd2hlbiBzdGFuZGFyZCBvdXRwdXQgaXMgdXNlZCwKICAgICMgb3Igd2hlbiBpdCBpcyBhbiBvYmplY3QsIHdlIGhhdmUgdG8gbWFrZSBhIGNvcHkgb2YgdGhlIGZpbGUKICAgIGlmICggKCAkaW5wdXRfZmlsZSBlcSAnLScgfHwgcmVmICRpbnB1dF9maWxlICkgJiYgJHJPcHRzLT57J2NoZWNrLXN5bnRheCd9ICkKICAgIHsKCiAgICAgICAgIyBUdXJuaW5nIG9mZiBzeW50YXggY2hlY2sgd2hlbiBpbnB1dCBvdXRwdXQgaXMgdXNlZC4KICAgICAgICAjIFRoZSByZWFzb24gaXMgdGhhdCB0ZW1wb3JhcnkgZmlsZXMgY2F1c2UgcHJvYmxlbXMgb24KICAgICAgICAjIG9uIG1hbnkgc3lzdGVtcy4KICAgICAgICAkck9wdHMtPnsnY2hlY2stc3ludGF4J30gPSAwOwoKICAgICAgICAkeyRycGVuZGluZ19sb2dmaWxlX21lc3NhZ2V9IC49IDw8RU9NOwpOb3RlOiAtLXN5bnRheCBjaGVjayB3aWxsIGJlIHNraXBwZWQgYmVjYXVzZSBzdGFuZGFyZCBpbnB1dCBpcyB1c2VkCkVPTQoKICAgIH0KCiAgICByZXR1cm4gYmxlc3MgewogICAgICAgIF9maCAgICAgICAgICAgICAgICA9PiAkZmgsCiAgICAgICAgX2ZpbGVuYW1lICAgICAgICAgID0+ICRpbnB1dF9maWxlLAogICAgICAgIF9pbnB1dF9saW5lX2VuZGluZyA9PiAkaW5wdXRfbGluZV9lbmRpbmcsCiAgICAgICAgX3JpbnB1dF9idWZmZXIgICAgID0+IFtdLAogICAgICAgIF9zdGFydGVkICAgICAgICAgICA9PiAwLAogICAgfSwgJGNsYXNzOwp9CgpzdWIgY2xvc2VfaW5wdXRfZmlsZSB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwoKICAgICMgT25seSBjbG9zZSBwaHlzaWNhbCBmaWxlcywgbm90IFNURElOIGFuZCBvdGhlciBvYmplY3RzCiAgICBteSAkZmlsZW5hbWUgPSAkc2VsZi0+e19maWxlbmFtZX07CiAgICBpZiAoICRmaWxlbmFtZSBuZSAnLScgJiYgIXJlZiAkZmlsZW5hbWUgKSB7CiAgICAgICAgZXZhbCB7ICRzZWxmLT57X2ZofS0+Y2xvc2UoKSB9OwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgZ2V0X2xpbmUgewogICAgbXkgJHNlbGYgICAgICAgICAgPSBzaGlmdDsKICAgIG15ICRsaW5lICAgICAgICAgID0gdW5kZWY7CiAgICBteSAkZmggICAgICAgICAgICA9ICRzZWxmLT57X2ZofTsKICAgIG15ICRyaW5wdXRfYnVmZmVyID0gJHNlbGYtPntfcmlucHV0X2J1ZmZlcn07CgogICAgaWYgKCBzY2FsYXIoIEB7JHJpbnB1dF9idWZmZXJ9ICkgKSB7CiAgICAgICAgJGxpbmUgPSBzaGlmdCBAeyRyaW5wdXRfYnVmZmVyfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRsaW5lID0gJGZoLT5nZXRsaW5lKCk7CgogICAgICAgICMgcGF0Y2ggdG8gcmVhZCByYXcgbWFjIGZpbGVzIHVuZGVyIHVuaXgsIGRvcwogICAgICAgICMgc2VlIGlmIHRoZSBmaXJzdCBsaW5lIGhhcyBlbWJlZGRlZCBccidzCiAgICAgICAgaWYgKCAkbGluZSAmJiAhJHNlbGYtPntfc3RhcnRlZH0gKSB7CiAgICAgICAgICAgIGlmICggJGxpbmUgPX4gL1tcMDE1XVteXDAxNVwwMTJdLyApIHsKCiAgICAgICAgICAgICAgICAjIGZvdW5kIG9uZSAtLSBicmVhayB0aGUgbGluZSB1cCBhbmQgc3RvcmUgaW4gYSBidWZmZXIKICAgICAgICAgICAgICAgIEB7JHJpbnB1dF9idWZmZXJ9ID0gbWFwIHsgJF8gLiAiXG4iIH0gc3BsaXQgL1wwMTUvLCAkbGluZTsKICAgICAgICAgICAgICAgIG15ICRjb3VudCA9IEB7JHJpbnB1dF9idWZmZXJ9OwogICAgICAgICAgICAgICAgJGxpbmUgPSBzaGlmdCBAeyRyaW5wdXRfYnVmZmVyfTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkc2VsZi0+e19zdGFydGVkfSsrOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAkbGluZTsKfQoxOwoK</File>
        <File Location="Kernel/cpan-lib/Perl/Tidy/Logger.pm" Permission="660" Encode="Base64">IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBUaGUgUGVybDo6VGlkeTo6TG9nZ2VyIGNsYXNzIHdyaXRlcyB0aGUgLkxPRyBhbmQgLkVSUiBmaWxlcwojCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKcGFja2FnZSBQZXJsOjpUaWR5OjpMb2dnZXI7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKb3VyICRWRVJTSU9OID0gJzIwMjEwMTExJzsKCnN1YiBBVVRPTE9BRCB7CgogICAgIyBDYXRjaCBhbnkgdW5kZWZpbmVkIHN1YiBjYWxscyBzbyB0aGF0IHdlIGFyZSBzdXJlIHRvIGdldAogICAgIyBzb21lIGRpYWdub3N0aWMgaW5mb3JtYXRpb24uICBUaGlzIHN1YiBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkCiAgICAjIGV4Y2VwdCBmb3IgYSBwcm9ncmFtbWluZyBlcnJvci4KICAgIG91ciAkQVVUT0xPQUQ7CiAgICByZXR1cm4gaWYgKCAkQVVUT0xPQUQgPX4gL1xiREVTVFJPWSQvICk7CiAgICBteSAoICRwa2csICRmbmFtZSwgJGxubyApID0gY2FsbGVyKCk7CiAgICBteSAkbXlfcGFja2FnZSA9IF9fUEFDS0FHRV9fOwogICAgcHJpbnQgU1RERVJSIDw8RU9NOwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVycm9yIGRldGVjdGVkIGluIHBhY2thZ2UgJyRteV9wYWNrYWdlJywgdmVyc2lvbiAkVkVSU0lPTgpSZWNlaXZlZCB1bmV4cGVjdGVkIEFVVE9MT0FEIGNhbGwgZm9yIHN1YiAnJEFVVE9MT0FEJwpDYWxsZWQgZnJvbSBwYWNrYWdlOiAnJHBrZycgIApDYWxsZWQgZnJvbSBGaWxlICckZm5hbWUnICBhdCBsaW5lICckbG5vJwpUaGlzIGVycm9yIGlzIHByb2JhYmx5IGR1ZSB0byBhIHJlY2VudCBwcm9ncmFtbWluZyBjaGFuZ2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFT00KICAgIGV4aXQgMTsKfQoKc3ViIERFU1RST1kgewoKICAgICMgcmVxdWlyZWQgdG8gYXZvaWQgY2FsbCB0byBBVVRPTE9BRCBpbiBzb21lIHZlcnNpb25zIG9mIHBlcmwKfQoKc3ViIG5ldyB7CgogICAgbXkgKCAkY2xhc3MsIEBhcmdzICkgPSBAXzsKCiAgICBteSAlZGVmYXVsdHMgPSAoCiAgICAgICAgck9wdHMgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIGxvZ19maWxlICAgICAgICA9PiB1bmRlZiwKICAgICAgICB3YXJuaW5nX2ZpbGUgICAgPT4gdW5kZWYsCiAgICAgICAgZmhfc3RkZXJyICAgICAgID0+IHVuZGVmLAogICAgICAgIHNhd19leHRydWNlICAgICA9PiB1bmRlZiwKICAgICAgICBkaXNwbGF5X25hbWUgICAgPT4gdW5kZWYsCiAgICAgICAgaXNfZW5jb2RlZF9kYXRhID0+IHVuZGVmLAogICAgKTsKCiAgICBteSAlYXJncyA9ICggJWRlZmF1bHRzLCBAYXJncyApOwoKICAgIG15ICRyT3B0cyAgICAgICAgICAgPSAkYXJnc3tyT3B0c307CiAgICBteSAkbG9nX2ZpbGUgICAgICAgID0gJGFyZ3N7bG9nX2ZpbGV9OwogICAgbXkgJHdhcm5pbmdfZmlsZSAgICA9ICRhcmdze3dhcm5pbmdfZmlsZX07CiAgICBteSAkZmhfc3RkZXJyICAgICAgID0gJGFyZ3N7Zmhfc3RkZXJyfTsKICAgIG15ICRzYXdfZXh0cnVkZSAgICAgPSAkYXJnc3tzYXdfZXh0cnVkZX07CiAgICBteSAkZGlzcGxheV9uYW1lICAgID0gJGFyZ3N7ZGlzcGxheV9uYW1lfTsKICAgIG15ICRpc19lbmNvZGVkX2RhdGEgPSAkYXJnc3tpc19lbmNvZGVkX2RhdGF9OwoKICAgIG15ICRmaF93YXJuaW5ncyA9ICRyT3B0cy0+eydzdGFuZGFyZC1lcnJvci1vdXRwdXQnfSA/ICRmaF9zdGRlcnIgOiB1bmRlZjsKCiAgICAjIHJlbW92ZSBhbnkgb2xkIGVycm9yIG91dHB1dCBmaWxlIGlmIHdlIG1pZ2h0IHdyaXRlIGEgbmV3IG9uZQogICAgdW5sZXNzICggJGZoX3dhcm5pbmdzIHx8IHJlZigkd2FybmluZ19maWxlKSApIHsKICAgICAgICBpZiAoIC1lICR3YXJuaW5nX2ZpbGUgKSB7CiAgICAgICAgICAgIHVubGluaygkd2FybmluZ19maWxlKQogICAgICAgICAgICAgIG9yIFBlcmw6OlRpZHk6OkRpZSgKICAgICAgICAgICAgICAgICJjb3VsZG4ndCB1bmxpbmsgd2FybmluZyBmaWxlICR3YXJuaW5nX2ZpbGU6ICQhXG4iKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJGxvZ2ZpbGVfZ2FwID0KICAgICAgZGVmaW5lZCggJHJPcHRzLT57J2xvZ2ZpbGUtZ2FwJ30gKQogICAgICA/ICRyT3B0cy0+eydsb2dmaWxlLWdhcCd9CiAgICAgIDogNTA7CiAgICBpZiAoICRsb2dmaWxlX2dhcCA9PSAwICkgeyAkbG9nZmlsZV9nYXAgPSAxIH0KCiAgICBteSAkZmlsZW5hbWVfc3RhbXAgICAgPSAkZGlzcGxheV9uYW1lID8gJGRpc3BsYXlfbmFtZSAuICc6JyA6ICI/PyI7CiAgICBteSAkaW5wdXRfc3RyZWFtX25hbWUgPSAkZGlzcGxheV9uYW1lID8gJGRpc3BsYXlfbmFtZSAgICAgICA6ICI/PyI7CiAgICByZXR1cm4gYmxlc3MgewogICAgICAgIF9sb2dfZmlsZSAgICAgICAgICAgICAgICAgICAgICA9PiAkbG9nX2ZpbGUsCiAgICAgICAgX2xvZ2ZpbGVfZ2FwICAgICAgICAgICAgICAgICAgID0+ICRsb2dmaWxlX2dhcCwKICAgICAgICBfck9wdHMgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJHJPcHRzLAogICAgICAgIF9maF93YXJuaW5ncyAgICAgICAgICAgICAgICAgICA9PiAkZmhfd2FybmluZ3MsCiAgICAgICAgX2xhc3RfaW5wdXRfbGluZV93cml0dGVuICAgICAgID0+IDAsCiAgICAgICAgX2F0X2VuZF9vZl9maWxlICAgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgX3VzZV9wcmVmaXggICAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgX2Jsb2NrX2xvZ19vdXRwdXQgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgX2xpbmVfb2ZfdG9rZW5zICAgICAgICAgICAgICAgID0+IHVuZGVmLAogICAgICAgIF9vdXRwdXRfbGluZV9udW1iZXIgICAgICAgICAgICA9PiB1bmRlZiwKICAgICAgICBfd3JvdGVfbGluZV9pbmZvcm1hdGlvbl9zdHJpbmcgPT4gMCwKICAgICAgICBfd3JvdGVfY29sdW1uX2hlYWRpbmdzICAgICAgICAgPT4gMCwKICAgICAgICBfd2FybmluZ19maWxlICAgICAgICAgICAgICAgICAgPT4gJHdhcm5pbmdfZmlsZSwKICAgICAgICBfd2FybmluZ19jb3VudCAgICAgICAgICAgICAgICAgPT4gMCwKICAgICAgICBfY29tcGxhaW50X2NvdW50ICAgICAgICAgICAgICAgPT4gMCwKICAgICAgICBfaXNfZW5jb2RlZF9kYXRhICAgICAgICAgICAgICAgPT4gJGlzX2VuY29kZWRfZGF0YSwKICAgICAgICBfc2F3X2NvZGVfYnVnICAgICAgPT4gLTEsICAgICAgICAgICAgICAgICAgICMgLTE9bm8gMD1tYXliZSAxPWZvciBzdXJlCiAgICAgICAgX3Nhd19icmFjZV9lcnJvciAgID0+IDAsCiAgICAgICAgX3Nhd19leHRydWRlICAgICAgID0+ICRzYXdfZXh0cnVkZSwKICAgICAgICBfb3V0cHV0X2FycmF5ICAgICAgPT4gW10sCiAgICAgICAgX2lucHV0X3N0cmVhbV9uYW1lID0+ICRpbnB1dF9zdHJlYW1fbmFtZSwKICAgICAgICBfZmlsZW5hbWVfc3RhbXAgICAgPT4gJGZpbGVuYW1lX3N0YW1wLAogICAgfSwgJGNsYXNzOwp9CgpzdWIgZ2V0X2lucHV0X3N0cmVhbV9uYW1lIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICByZXR1cm4gJHNlbGYtPntfaW5wdXRfc3RyZWFtX25hbWV9Owp9CgpzdWIgZ2V0X3dhcm5pbmdfY291bnQgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIHJldHVybiAkc2VsZi0+e193YXJuaW5nX2NvdW50fTsKfQoKc3ViIGdldF91c2VfcHJlZml4IHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICByZXR1cm4gJHNlbGYtPntfdXNlX3ByZWZpeH07Cn0KCnN1YiBibG9ja19sb2dfb3V0cHV0IHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAkc2VsZi0+e19ibG9ja19sb2dfb3V0cHV0fSA9IDE7CiAgICByZXR1cm47Cn0KCnN1YiB1bmJsb2NrX2xvZ19vdXRwdXQgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICRzZWxmLT57X2Jsb2NrX2xvZ19vdXRwdXR9ID0gMDsKICAgIHJldHVybjsKfQoKc3ViIGludGVycnVwdF9sb2dmaWxlIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAkc2VsZi0+e191c2VfcHJlZml4fSA9IDA7CiAgICAkc2VsZi0+d2FybmluZygiXG4iKTsKICAgICRzZWxmLT53cml0ZV9sb2dmaWxlX2VudHJ5KCAnIycgeCAyNCAuICIgIFdBUk5JTkcgICIgLiAnIycgeCAyNSAuICJcbiIgKTsKICAgIHJldHVybjsKfQoKc3ViIHJlc3VtZV9sb2dmaWxlIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAkc2VsZi0+d3JpdGVfbG9nZmlsZV9lbnRyeSggJyMnIHggNjAgLiAiXG4iICk7CiAgICAkc2VsZi0+e191c2VfcHJlZml4fSA9IDE7CiAgICByZXR1cm47Cn0KCnN1YiB3ZV9hcmVfYXRfdGhlX2xhc3RfbGluZSB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgdW5sZXNzICggJHNlbGYtPntfd3JvdGVfbGluZV9pbmZvcm1hdGlvbl9zdHJpbmd9ICkgewogICAgICAgICRzZWxmLT53cml0ZV9sb2dmaWxlX2VudHJ5KCJMYXN0IGxpbmVcblxuIik7CiAgICB9CiAgICAkc2VsZi0+e19hdF9lbmRfb2ZfZmlsZX0gPSAxOwogICAgcmV0dXJuOwp9CgojIHJlY29yZCBzb21lIHN0dWZmIGluIGNhc2Ugd2UgZ28gZG93biBpbiBmbGFtZXMKc3ViIGJsYWNrX2JveCB7CiAgICBteSAoICRzZWxmLCAkbGluZV9vZl90b2tlbnMsICRvdXRwdXRfbGluZV9udW1iZXIgKSA9IEBfOwogICAgbXkgJGlucHV0X2xpbmUgICAgICAgID0gJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdGV4dH07CiAgICBteSAkaW5wdXRfbGluZV9udW1iZXIgPSAkbGluZV9vZl90b2tlbnMtPntfbGluZV9udW1iZXJ9OwoKICAgICMgc2F2ZSBsaW5lIGluZm9ybWF0aW9uIGluIGNhc2Ugd2UgaGF2ZSB0byB3cml0ZSBhIGxvZ2ZpbGUgbWVzc2FnZQogICAgJHNlbGYtPntfbGluZV9vZl90b2tlbnN9ICAgICAgICAgICAgICAgID0gJGxpbmVfb2ZfdG9rZW5zOwogICAgJHNlbGYtPntfb3V0cHV0X2xpbmVfbnVtYmVyfSAgICAgICAgICAgID0gJG91dHB1dF9saW5lX251bWJlcjsKICAgICRzZWxmLT57X3dyb3RlX2xpbmVfaW5mb3JtYXRpb25fc3RyaW5nfSA9IDA7CgogICAgbXkgJGxhc3RfaW5wdXRfbGluZV93cml0dGVuID0gJHNlbGYtPntfbGFzdF9pbnB1dF9saW5lX3dyaXR0ZW59OwogICAgaWYgKAogICAgICAgICgKICAgICAgICAgICAgKCAkaW5wdXRfbGluZV9udW1iZXIgLSAkbGFzdF9pbnB1dF9saW5lX3dyaXR0ZW4gKSA+PQogICAgICAgICAgICAkc2VsZi0+e19sb2dmaWxlX2dhcH0KICAgICAgICApCiAgICAgICAgfHwgKCAkaW5wdXRfbGluZSA9fiAvXlxzKihzdWJ8cGFja2FnZSlccysoXHcrKS8gKQogICAgICApCiAgICB7CiAgICAgICAgbXkgJHN0cnVjdHVyYWxfaW5kZW50YXRpb25fbGV2ZWwgPSAkbGluZV9vZl90b2tlbnMtPntfbGV2ZWxfMH07CiAgICAgICAgJHN0cnVjdHVyYWxfaW5kZW50YXRpb25fbGV2ZWwgPSAwCiAgICAgICAgICBpZiAoICRzdHJ1Y3R1cmFsX2luZGVudGF0aW9uX2xldmVsIDwgMCApOwogICAgICAgICRzZWxmLT57X2xhc3RfaW5wdXRfbGluZV93cml0dGVufSA9ICRpbnB1dF9saW5lX251bWJlcjsKICAgICAgICAoIG15ICRvdXRfc3RyID0gJGlucHV0X2xpbmUgKSA9fiBzL15ccyovLzsKICAgICAgICBjaG9tcCAkb3V0X3N0cjsKCiAgICAgICAgJG91dF9zdHIgPSAoICcuJyB4ICRzdHJ1Y3R1cmFsX2luZGVudGF0aW9uX2xldmVsICkgLiAkb3V0X3N0cjsKCiAgICAgICAgaWYgKCBsZW5ndGgoJG91dF9zdHIpID4gMzUgKSB7CiAgICAgICAgICAgICRvdXRfc3RyID0gc3Vic3RyKCAkb3V0X3N0ciwgMCwgMzUgKSAuICIgLi4uLiI7CiAgICAgICAgfQogICAgICAgICRzZWxmLT5sb2dmaWxlX291dHB1dCggIiIsICIkb3V0X3N0clxuIiApOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgd3JpdGVfbG9nZmlsZV9lbnRyeSB7CgogICAgbXkgKCAkc2VsZiwgQG1zZyApID0gQF87CgogICAgIyBhZGQgbGVhZGluZyA+Pj4gdG8gYXZvaWQgY29uZnVzaW5nIGVycm9yIG1lc3NhZ2VzIGFuZCBjb2RlCiAgICAkc2VsZi0+bG9nZmlsZV9vdXRwdXQoICI+Pj4iLCAiQG1zZyIgKTsKICAgIHJldHVybjsKfQoKc3ViIHdyaXRlX2NvbHVtbl9oZWFkaW5ncyB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwoKICAgICRzZWxmLT57X3dyb3RlX2NvbHVtbl9oZWFkaW5nc30gPSAxOwogICAgbXkgJHJvdXRwdXRfYXJyYXkgPSAkc2VsZi0+e19vdXRwdXRfYXJyYXl9OwogICAgcHVzaCBAeyRyb3V0cHV0X2FycmF5fSwgPDxFT007ClRoZSBuZXN0aW5nIGRlcHRocyBpbiB0aGUgdGFibGUgYmVsb3cgYXJlIGF0IHRoZSBzdGFydCBvZiB0aGUgbGluZXMuClRoZSBpbmRpY2F0ZWQgb3V0cHV0IGxpbmUgbnVtYmVycyBhcmUgbm90IGFsd2F5cyBleGFjdC4KY2kgPSBsZXZlbHMgb2YgY29udGludWF0aW9uIGluZGVudGF0aW9uOyBiayA9IDEgaWYgaW4gQkxPQ0ssIDAgaWYgbm90LgoKaW46b3V0IGluZGVudCBjIGIgIG5lc3RpbmcgICBjb2RlICsgbWVzc2FnZXM7IChtZXNzYWdlcyBiZWdpbiB3aXRoID4+PikKbGluZXMgIGxldmVscyBpIGsgICAgICAgICAgICAoY29kZSBiZWdpbnMgd2l0aCBvbmUgJy4nIHBlciBpbmRlbnQgbGV2ZWwpCi0tLS0tLSAgLS0tLS0gLSAtIC0tLS0tLS0tICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFT00KICAgIHJldHVybjsKfQoKc3ViIG1ha2VfbGluZV9pbmZvcm1hdGlvbl9zdHJpbmcgewoKICAgICMgbWFrZSBjb2x1bW5zIG9mIGluZm9ybWF0aW9uIHdoZW4gYSBsb2dmaWxlIG1lc3NhZ2UgbmVlZHMgdG8gZ28gb3V0CiAgICBteSAkc2VsZiAgICAgICAgICAgICAgICAgICAgPSBzaGlmdDsKICAgIG15ICRsaW5lX29mX3Rva2VucyAgICAgICAgICA9ICRzZWxmLT57X2xpbmVfb2ZfdG9rZW5zfTsKICAgIG15ICRpbnB1dF9saW5lX251bWJlciAgICAgICA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX251bWJlcn07CiAgICBteSAkbGluZV9pbmZvcm1hdGlvbl9zdHJpbmcgPSAiIjsKICAgIGlmICgkaW5wdXRfbGluZV9udW1iZXIpIHsKCiAgICAgICAgbXkgJG91dHB1dF9saW5lX251bWJlciAgID0gJHNlbGYtPntfb3V0cHV0X2xpbmVfbnVtYmVyfTsKICAgICAgICBteSAkYnJhY2VfZGVwdGggICAgICAgICAgPSAkbGluZV9vZl90b2tlbnMtPntfY3VybHlfYnJhY2VfZGVwdGh9OwogICAgICAgIG15ICRwYXJlbl9kZXB0aCAgICAgICAgICA9ICRsaW5lX29mX3Rva2Vucy0+e19wYXJlbl9kZXB0aH07CiAgICAgICAgbXkgJHNxdWFyZV9icmFja2V0X2RlcHRoID0gJGxpbmVfb2ZfdG9rZW5zLT57X3NxdWFyZV9icmFja2V0X2RlcHRofTsKICAgICAgICBteSAkZ3Vlc3NlZF9pbmRlbnRhdGlvbl9sZXZlbCA9CiAgICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfZ3Vlc3NlZF9pbmRlbnRhdGlvbl9sZXZlbH07CgogICAgICAgIG15ICRzdHJ1Y3R1cmFsX2luZGVudGF0aW9uX2xldmVsID0gJGxpbmVfb2ZfdG9rZW5zLT57X2xldmVsXzB9OwoKICAgICAgICAkc2VsZi0+d3JpdGVfY29sdW1uX2hlYWRpbmdzKCkgdW5sZXNzICRzZWxmLT57X3dyb3RlX2NvbHVtbl9oZWFkaW5nc307CgogICAgICAgICMga2VlcCBsb2dmaWxlIGNvbHVtbnMgYWxpZ25lZCBmb3Igc2NyaXB0cyB1cCB0byA5OTkgbGluZXM7CiAgICAgICAgIyBmb3IgbG9uZ2VyIHNjcmlwdHMgaXQgZG9lc24ndCByZWFsbHkgbWF0dGVyCiAgICAgICAgbXkgJGV4dHJhX3NwYWNlID0gIiI7CiAgICAgICAgJGV4dHJhX3NwYWNlIC49CiAgICAgICAgICAgICggJGlucHV0X2xpbmVfbnVtYmVyIDwgMTAgKSAgPyAiICAiCiAgICAgICAgICA6ICggJGlucHV0X2xpbmVfbnVtYmVyIDwgMTAwICkgPyAiICIKICAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiOwogICAgICAgICRleHRyYV9zcGFjZSAuPQogICAgICAgICAgICAoICRvdXRwdXRfbGluZV9udW1iZXIgPCAxMCApICA/ICIgICIKICAgICAgICAgIDogKCAkb3V0cHV0X2xpbmVfbnVtYmVyIDwgMTAwICkgPyAiICIKICAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIjsKCiAgICAgICAgIyB0aGVyZSBhcmUgMiBwb3NzaWJsZSBuZXN0aW5nIHN0cmluZ3M6CiAgICAgICAgIyB0aGUgb3JpZ2luYWwgd2hpY2ggbG9va3MgbGlrZSB0aGlzOiAgKDAgWzEgezIKICAgICAgICAjIHRoZSBuZXcgb25lLCB3aGljaCBsb29rcyBsaWtlIHRoaXM6ICB7e1sKICAgICAgICAjIHRoZSBuZXcgb25lIGlzIGVhc2llciB0byByZWFkLCBhbmQgc2hvd3MgdGhlIG9yZGVyLCBidXQKICAgICAgICAjIGNvdWxkIGJlIGFyYml0cmFyaWx5IGxvbmcsIHNvIHdlIHVzZSBpdCB1bmxlc3MgaXQgaXMgdG9vIGxvbmcKICAgICAgICBteSAkbmVzdGluZ19zdHJpbmcgPQogICAgICAgICAgIigkcGFyZW5fZGVwdGggWyRzcXVhcmVfYnJhY2tldF9kZXB0aCB7JGJyYWNlX2RlcHRoIjsKICAgICAgICBteSAkbmVzdGluZ19zdHJpbmdfbmV3ID0gJGxpbmVfb2ZfdG9rZW5zLT57X25lc3RpbmdfdG9rZW5zXzB9OwogICAgICAgIG15ICRjaV9sZXZlbCAgICAgICAgICAgPSAkbGluZV9vZl90b2tlbnMtPntfY2lfbGV2ZWxfMH07CiAgICAgICAgaWYgKCAkY2lfbGV2ZWwgPiA5ICkgeyAkY2lfbGV2ZWwgPSAnKicgfQogICAgICAgIG15ICRiayA9ICggJGxpbmVfb2ZfdG9rZW5zLT57X25lc3RpbmdfYmxvY2tzXzB9ID1+IC8xJC8gKSA/ICcxJyA6ICcwJzsKCiAgICAgICAgaWYgKCBsZW5ndGgoJG5lc3Rpbmdfc3RyaW5nX25ldykgPD0gOCApIHsKICAgICAgICAgICAgJG5lc3Rpbmdfc3RyaW5nID0KICAgICAgICAgICAgICAkbmVzdGluZ19zdHJpbmdfbmV3IC4gIiAiIHggKCA4IC0gbGVuZ3RoKCRuZXN0aW5nX3N0cmluZ19uZXcpICk7CiAgICAgICAgfQogICAgICAgICRsaW5lX2luZm9ybWF0aW9uX3N0cmluZyA9CiJMJGlucHV0X2xpbmVfbnVtYmVyOiRvdXRwdXRfbGluZV9udW1iZXIkZXh0cmFfc3BhY2UgaSRndWVzc2VkX2luZGVudGF0aW9uX2xldmVsOiRzdHJ1Y3R1cmFsX2luZGVudGF0aW9uX2xldmVsICRjaV9sZXZlbCAkYmsgJG5lc3Rpbmdfc3RyaW5nIjsKICAgIH0KICAgIHJldHVybiAkbGluZV9pbmZvcm1hdGlvbl9zdHJpbmc7Cn0KCnN1YiBsb2dmaWxlX291dHB1dCB7CiAgICBteSAoICRzZWxmLCAkcHJvbXB0LCAkbXNnICkgPSBAXzsKICAgIHJldHVybiBpZiAoICRzZWxmLT57X2Jsb2NrX2xvZ19vdXRwdXR9ICk7CgogICAgbXkgJHJvdXRwdXRfYXJyYXkgPSAkc2VsZi0+e19vdXRwdXRfYXJyYXl9OwogICAgaWYgKCAkc2VsZi0+e19hdF9lbmRfb2ZfZmlsZX0gfHwgISRzZWxmLT57X3VzZV9wcmVmaXh9ICkgewogICAgICAgIHB1c2ggQHskcm91dHB1dF9hcnJheX0sICIkbXNnIjsKICAgIH0KICAgIGVsc2UgewogICAgICAgIG15ICRsaW5lX2luZm9ybWF0aW9uX3N0cmluZyA9ICRzZWxmLT5tYWtlX2xpbmVfaW5mb3JtYXRpb25fc3RyaW5nKCk7CiAgICAgICAgJHNlbGYtPntfd3JvdGVfbGluZV9pbmZvcm1hdGlvbl9zdHJpbmd9ID0gMTsKCiAgICAgICAgaWYgKCRsaW5lX2luZm9ybWF0aW9uX3N0cmluZykgewogICAgICAgICAgICBwdXNoIEB7JHJvdXRwdXRfYXJyYXl9LCAiJGxpbmVfaW5mb3JtYXRpb25fc3RyaW5nICAgJHByb21wdCRtc2ciOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcHVzaCBAeyRyb3V0cHV0X2FycmF5fSwgIiRtc2ciOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybjsKfQoKc3ViIGdldF9zYXdfYnJhY2VfZXJyb3IgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIHJldHVybiAkc2VsZi0+e19zYXdfYnJhY2VfZXJyb3J9Owp9CgpzdWIgaW5jcmVtZW50X2JyYWNlX2Vycm9yIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAkc2VsZi0+e19zYXdfYnJhY2VfZXJyb3J9Kys7CiAgICByZXR1cm47Cn0KCnN1YiBicmFjZV93YXJuaW5nIHsKICAgIG15ICggJHNlbGYsICRtc2cgKSA9IEBfOwoKICAgICN1c2UgY29uc3RhbnQgQlJBQ0VfV0FSTklOR19MSU1JVCA9PiAxMDsKICAgIG15ICRCUkFDRV9XQVJOSU5HX0xJTUlUID0gMTA7CiAgICBteSAkc2F3X2JyYWNlX2Vycm9yICAgICA9ICRzZWxmLT57X3Nhd19icmFjZV9lcnJvcn07CgogICAgaWYgKCAkc2F3X2JyYWNlX2Vycm9yIDwgJEJSQUNFX1dBUk5JTkdfTElNSVQgKSB7CiAgICAgICAgJHNlbGYtPndhcm5pbmcoJG1zZyk7CiAgICB9CiAgICAkc2F3X2JyYWNlX2Vycm9yKys7CiAgICAkc2VsZi0+e19zYXdfYnJhY2VfZXJyb3J9ID0gJHNhd19icmFjZV9lcnJvcjsKCiAgICBpZiAoICRzYXdfYnJhY2VfZXJyb3IgPT0gJEJSQUNFX1dBUk5JTkdfTElNSVQgKSB7CiAgICAgICAgJHNlbGYtPndhcm5pbmcoIk5vIGZ1cnRoZXIgd2FybmluZ3Mgb2YgdGhpcyB0eXBlIHdpbGwgYmUgZ2l2ZW5cbiIpOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgY29tcGxhaW4gewoKICAgICMgaGFuZGxlIG5vbi1jcml0aWNhbCB3YXJuaW5nIG1lc3NhZ2VzIGJhc2VkIG9uIGlucHV0IGZsYWcKICAgIG15ICggJHNlbGYsICRtc2cgKSA9IEBfOwogICAgbXkgJHJPcHRzID0gJHNlbGYtPntfck9wdHN9OwoKICAgICMgdGhlc2UgYXBwZWFyIGluIC5FUlIgb3V0cHV0IG9ubHkgaWYgLXcgZmxhZyBpcyB1c2VkCiAgICBpZiAoICRyT3B0cy0+eyd3YXJuaW5nLW91dHB1dCd9ICkgewogICAgICAgICRzZWxmLT53YXJuaW5nKCRtc2cpOwogICAgfQoKICAgICMgb3RoZXJ3aXNlLCB0aGV5IGdvIHRvIHRoZSAuTE9HIGZpbGUKICAgIGVsc2UgewogICAgICAgICRzZWxmLT57X2NvbXBsYWludF9jb3VudH0rKzsKICAgICAgICAkc2VsZi0+d3JpdGVfbG9nZmlsZV9lbnRyeSgkbXNnKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIHdhcm5pbmcgewoKICAgICMgcmVwb3J0IGVycm9ycyB0byAuRVJSIGZpbGUgKG9yIHN0ZG91dCkKICAgIG15ICggJHNlbGYsICRtc2cgKSA9IEBfOwoKICAgICN1c2UgY29uc3RhbnQgV0FSTklOR19MSU1JVCA9PiA1MDsKICAgIG15ICRXQVJOSU5HX0xJTUlUID0gNTA7CgogICAgIyBBbHdheXMgYnVtcCB0aGUgd2FybiBjb3VudCwgZXZlbiBpZiBubyBtZXNzYWdlIGdvZXMgb3V0CiAgICBQZXJsOjpUaWR5OjpXYXJuX2NvdW50X2J1bXAoKTsKCiAgICBteSAkck9wdHMgPSAkc2VsZi0+e19yT3B0c307CiAgICB1bmxlc3MgKCAkck9wdHMtPnsncXVpZXQnfSApIHsKCiAgICAgICAgbXkgJHdhcm5pbmdfY291bnQgICA9ICRzZWxmLT57X3dhcm5pbmdfY291bnR9OwogICAgICAgIG15ICRmaF93YXJuaW5ncyAgICAgPSAkc2VsZi0+e19maF93YXJuaW5nc307CiAgICAgICAgbXkgJGlzX2VuY29kZWRfZGF0YSA9ICRzZWxmLT57X2lzX2VuY29kZWRfZGF0YX07CiAgICAgICAgaWYgKCAhJGZoX3dhcm5pbmdzICkgewogICAgICAgICAgICBteSAkd2FybmluZ19maWxlID0gJHNlbGYtPntfd2FybmluZ19maWxlfTsKICAgICAgICAgICAgKCAkZmhfd2FybmluZ3MsIG15ICRmaWxlbmFtZSApID0KICAgICAgICAgICAgICBQZXJsOjpUaWR5OjpzdHJlYW1oYW5kbGUoICR3YXJuaW5nX2ZpbGUsICd3JywgJGlzX2VuY29kZWRfZGF0YSApOwogICAgICAgICAgICAkZmhfd2FybmluZ3Mgb3IgUGVybDo6VGlkeTo6RGllKCJjb3VsZG4ndCBvcGVuICRmaWxlbmFtZSAkIVxuIik7CiAgICAgICAgICAgIFBlcmw6OlRpZHk6Oldhcm5fbXNnKCIjIyBQbGVhc2Ugc2VlIGZpbGUgJGZpbGVuYW1lXG4iKQogICAgICAgICAgICAgIHVubGVzcyByZWYoJHdhcm5pbmdfZmlsZSk7CiAgICAgICAgICAgICRzZWxmLT57X2ZoX3dhcm5pbmdzfSA9ICRmaF93YXJuaW5nczsKICAgICAgICAgICAgJGZoX3dhcm5pbmdzLT5wcmludCgiUGVybHRpZHkgdmVyc2lvbiBpcyAkUGVybDo6VGlkeTo6VkVSU0lPTlxuIik7CiAgICAgICAgfQoKICAgICAgICBteSAkZmlsZW5hbWVfc3RhbXAgPSAkc2VsZi0+e19maWxlbmFtZV9zdGFtcH07CgogICAgICAgIGlmICggJHdhcm5pbmdfY291bnQgPCAkV0FSTklOR19MSU1JVCApIHsKCiAgICAgICAgICAgIGlmICggISR3YXJuaW5nX2NvdW50ICkgewoKICAgICAgICAgICAgICAgICMgT24gZmlyc3QgZXJyb3IgYWx3YXlzIHdyaXRlIGEgbGluZSB3aXRoIHRoZSBmaWxlbmFtZS4gIE5vdGUKICAgICAgICAgICAgICAgICMgdGhhdCB0aGUgZmlsZW5hbWUgd2lsbCBiZSAncGVybHRpZHknIGlmIGlucHV0IGlzIGZyb20gc3RkaW4KICAgICAgICAgICAgICAgICMgb3IgZnJvbSBhIGRhdGEgc3RydWN0dXJlLgogICAgICAgICAgICAgICAgaWYgKCRmaWxlbmFtZV9zdGFtcCkgewogICAgICAgICAgICAgICAgICAgICRmaF93YXJuaW5ncy0+cHJpbnQoCiAgICAgICAgICAgICAgICAgICAgICAgICJcbiRmaWxlbmFtZV9zdGFtcCBCZWdpbiBFcnJvciBPdXRwdXQgU3RyZWFtXG4iKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIFR1cm4gb2ZmIGZpbGVuYW1lIHN0YW1waW5nIHVubGVzcyBlcnJvciBvdXRwdXQgaXMgZGlyZWN0ZWQKICAgICAgICAgICAgICAgICMgdG8gdGhlIHN0YW5kYXJkIGVycm9yIG91dHB1dCAod2l0aCAtc2UgZmxhZykKICAgICAgICAgICAgICAgIGlmICggISRyT3B0cy0+eydzdGFuZGFyZC1lcnJvci1vdXRwdXQnfSApIHsKICAgICAgICAgICAgICAgICAgICAkZmlsZW5hbWVfc3RhbXAgPSAiIjsKICAgICAgICAgICAgICAgICAgICAkc2VsZi0+e19maWxlbmFtZV9zdGFtcH0gPSAkZmlsZW5hbWVfc3RhbXA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJHNlbGYtPmdldF91c2VfcHJlZml4KCkgPiAwICkgewogICAgICAgICAgICAgICAgJHNlbGYtPndyaXRlX2xvZ2ZpbGVfZW50cnkoIldBUk5JTkc6ICRtc2ciKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBwcmVmaXggJ2ZpbGVuYW1lOmxpbmVfbm86ICcgdG8gbWVzc2FnZSBsaW5lcwogICAgICAgICAgICAgICAgbXkgJGlucHV0X2xpbmVfbnVtYmVyID0KICAgICAgICAgICAgICAgICAgUGVybDo6VGlkeTo6VG9rZW5pemVyOjpnZXRfaW5wdXRfbGluZV9udW1iZXIoKTsKICAgICAgICAgICAgICAgIGlmICggIWRlZmluZWQoJGlucHV0X2xpbmVfbnVtYmVyKSApIHsgJGlucHV0X2xpbmVfbnVtYmVyID0gLTEgfQogICAgICAgICAgICAgICAgbXkgJHByZV9zdHJpbmcgPSAkZmlsZW5hbWVfc3RhbXAgLiAkaW5wdXRfbGluZV9udW1iZXIgLiAnOiAnOwogICAgICAgICAgICAgICAgY2hvbXAgJG1zZzsKICAgICAgICAgICAgICAgICRtc2cgPX4gcy9cbi9cbiRwcmVfc3RyaW5nL2c7CiAgICAgICAgICAgICAgICAkbXNnID0gJHByZV9zdHJpbmcgLiAkbXNnIC4gIlxuIjsKCiAgICAgICAgICAgICAgICAkZmhfd2FybmluZ3MtPnByaW50KCRtc2cpOwoKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRzZWxmLT53cml0ZV9sb2dmaWxlX2VudHJ5KCRtc2cpOwoKICAgICAgICAgICAgICAgICMgYWRkIHByZWZpeCAnZmlsZW5hbWU6ICcgdG8gbWVzc2FnZSBsaW5lcwogICAgICAgICAgICAgICAgaWYgKCRmaWxlbmFtZV9zdGFtcCkgewogICAgICAgICAgICAgICAgICAgIG15ICRwcmVfc3RyaW5nID0gJGZpbGVuYW1lX3N0YW1wIC4gIiAiOwogICAgICAgICAgICAgICAgICAgIGNob21wICRtc2c7CiAgICAgICAgICAgICAgICAgICAgJG1zZyA9fiBzL1xuL1xuJHByZV9zdHJpbmcvZzsKICAgICAgICAgICAgICAgICAgICAkbXNnID0gJHByZV9zdHJpbmcgLiAkbXNnIC4gIlxuIjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkZmhfd2FybmluZ3MtPnByaW50KCRtc2cpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICR3YXJuaW5nX2NvdW50Kys7CiAgICAgICAgJHNlbGYtPntfd2FybmluZ19jb3VudH0gPSAkd2FybmluZ19jb3VudDsKCiAgICAgICAgaWYgKCAkd2FybmluZ19jb3VudCA9PSAkV0FSTklOR19MSU1JVCApIHsKICAgICAgICAgICAgJGZoX3dhcm5pbmdzLT5wcmludCgKICAgICAgICAgICAgICAgICRmaWxlbmFtZV9zdGFtcCAuICJObyBmdXJ0aGVyIHdhcm5pbmdzIHdpbGwgYmUgZ2l2ZW5cbiIgKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm47Cn0KCiMgcHJvZ3JhbW1pbmcgYnVnIGNvZGVzOgojICAgLTEgPSBubyBidWcKIyAgICAwID0gbWF5YmUsIG5vdCBzdXJlLgojICAgIDEgPSBkZWZpbml0ZWx5CnN1YiByZXBvcnRfcG9zc2libGVfYnVnIHsKICAgIG15ICRzZWxmICAgICAgICAgPSBzaGlmdDsKICAgIG15ICRzYXdfY29kZV9idWcgPSAkc2VsZi0+e19zYXdfY29kZV9idWd9OwogICAgJHNlbGYtPntfc2F3X2NvZGVfYnVnfSA9ICggJHNhd19jb2RlX2J1ZyA8IDAgKSA/IDAgOiAkc2F3X2NvZGVfYnVnOwogICAgcmV0dXJuOwp9CgpzdWIgcmVwb3J0X2RlZmluaXRlX2J1ZyB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgJHNlbGYtPntfc2F3X2NvZGVfYnVnfSA9IDE7CiAgICByZXR1cm47Cn0KCnN1YiBhc2tfdXNlcl9mb3JfYnVnX3JlcG9ydCB7CgogICAgbXkgKCAkc2VsZiwgJGluZmlsZV9zeW50YXhfb2ssICRmb3JtYXR0ZXIgKSA9IEBfOwogICAgbXkgJHNhd19jb2RlX2J1ZyA9ICRzZWxmLT57X3Nhd19jb2RlX2J1Z307CiAgICBpZiAoICggJHNhd19jb2RlX2J1ZyA9PSAwICkgJiYgKCAkaW5maWxlX3N5bnRheF9vayA9PSAxICkgKSB7CiAgICAgICAgJHNlbGYtPndhcm5pbmcoPDxFT00pOwoKWW91IG1heSBoYXZlIGVuY291bnRlcmVkIGEgY29kZSBidWcgaW4gcGVybHRpZHkuICBJZiB5b3UgdGhpbmsgc28sIGFuZAp0aGUgcHJvYmxlbSBpcyBub3QgbGlzdGVkIGluIHRoZSBCVUdTIGZpbGUgYXQKaHR0cDovL3Blcmx0aWR5LnNvdXJjZWZvcmdlLm5ldCwgcGxlYXNlIHJlcG9ydCBpdCBzbyB0aGF0IGl0IGNhbiBiZQpjb3JyZWN0ZWQuICBJbmNsdWRlIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSBzY3JpcHQgd2hpY2ggaGFzIHRoZSBwcm9ibGVtLAphbG9uZyB3aXRoIHRoZSAuTE9HIGZpbGUuIFNlZSB0aGUgbWFudWFsIHBhZ2VzIGZvciBjb250YWN0IGluZm9ybWF0aW9uLgpUaGFuayB5b3UhCkVPTQoKICAgIH0KICAgIGVsc2lmICggJHNhd19jb2RlX2J1ZyA9PSAxICkgewogICAgICAgIGlmICggJHNlbGYtPntfc2F3X2V4dHJ1ZGV9ICkgewogICAgICAgICAgICAkc2VsZi0+d2FybmluZyg8PEVPTSk7CgpZb3UgbWF5IGhhdmUgZW5jb3VudGVyZWQgYSBidWcgaW4gcGVybHRpZHkuICBIb3dldmVyLCBzaW5jZSB5b3UgYXJlIHVzaW5nIHRoZQotZXh0cnVkZSBvcHRpb24sIHRoZSBwcm9ibGVtIG1heSBiZSB3aXRoIHBlcmwgb3Igb25lIG9mIGl0cyBtb2R1bGVzLCB3aGljaCBoYXZlCm9jY2FzaW9uYWwgcHJvYmxlbXMgd2l0aCB0aGlzIHR5cGUgb2YgZmlsZS4gIElmIHlvdSBiZWxpZXZlIHRoYXQgdGhlCnByb2JsZW0gaXMgd2l0aCBwZXJsdGlkeSwgYW5kIHRoZSBwcm9ibGVtIGlzIG5vdCBsaXN0ZWQgaW4gdGhlIEJVR1MgZmlsZSBhdApodHRwOi8vcGVybHRpZHkuc291cmNlZm9yZ2UubmV0LCBwbGVhc2UgcmVwb3J0IGl0IHNvIHRoYXQgaXQgY2FuIGJlIGNvcnJlY3RlZC4KSW5jbHVkZSB0aGUgc21hbGxlc3QgcG9zc2libGUgc2NyaXB0IHdoaWNoIGhhcyB0aGUgcHJvYmxlbSwgYWxvbmcgd2l0aCB0aGUgLkxPRwpmaWxlLiBTZWUgdGhlIG1hbnVhbCBwYWdlcyBmb3IgY29udGFjdCBpbmZvcm1hdGlvbi4KVGhhbmsgeW91IQpFT00KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRzZWxmLT53YXJuaW5nKDw8RU9NKTsKCk9vcHMsIHlvdSBzZWVtIHRvIGhhdmUgZW5jb3VudGVyZWQgYSBidWcgaW4gcGVybHRpZHkuICBQbGVhc2UgY2hlY2sgdGhlCkJVR1MgZmlsZSBhdCBodHRwOi8vcGVybHRpZHkuc291cmNlZm9yZ2UubmV0LiAgSWYgdGhlIHByb2JsZW0gaXMgbm90Cmxpc3RlZCB0aGVyZSwgcGxlYXNlIHJlcG9ydCBpdCBzbyB0aGF0IGl0IGNhbiBiZSBjb3JyZWN0ZWQuICBJbmNsdWRlIHRoZQpzbWFsbGVzdCBwb3NzaWJsZSBzY3JpcHQgd2hpY2ggcHJvZHVjZXMgdGhpcyBtZXNzYWdlLCBhbG9uZyB3aXRoIHRoZQouTE9HIGZpbGUgaWYgYXBwcm9wcmlhdGUuICBTZWUgdGhlIG1hbnVhbCBwYWdlcyBmb3IgY29udGFjdCBpbmZvcm1hdGlvbi4KWW91ciBlZmZvcnRzIGFyZSBhcHByZWNpYXRlZC4gIApUaGFuayB5b3UhCkVPTQogICAgICAgICAgICBteSAkYWRkZWRfc2VtaWNvbG9uX2NvdW50ID0gMDsKICAgICAgICAgICAgZXZhbCB7CiAgICAgICAgICAgICAgICAkYWRkZWRfc2VtaWNvbG9uX2NvdW50ID0KICAgICAgICAgICAgICAgICAgJGZvcm1hdHRlci0+Z2V0X2FkZGVkX3NlbWljb2xvbl9jb3VudCgpOwogICAgICAgICAgICB9OwogICAgICAgICAgICBpZiAoICRhZGRlZF9zZW1pY29sb25fY291bnQgPiAwICkgewogICAgICAgICAgICAgICAgJHNlbGYtPndhcm5pbmcoPDxFT00pOwoKVGhlIGxvZyBmaWxlIHNob3dzIHRoYXQgcGVybHRpZHkgYWRkZWQgJGFkZGVkX3NlbWljb2xvbl9jb3VudCBzZW1pY29sb25zLgpQbGVhc2UgcmVydW4gd2l0aCAtbmFzYyB0byBzZWUgaWYgdGhhdCBpcyB0aGUgY2F1c2Ugb2YgdGhlIHN5bnRheCBlcnJvci4gIEV2ZW4KaWYgdGhhdCBpcyB0aGUgcHJvYmxlbSwgcGxlYXNlIHJlcG9ydCBpdCBzbyB0aGF0IGl0IGNhbiBiZSBmaXhlZC4KRU9NCgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgZ2V0X3NhdmVfbG9nZmlsZSB7CgogICAgIyBUbyBiZSBjYWxsZWQgYWZ0ZXIgdG9rZW5pemVyIGhhcyBmaW5pc2hlZCB0byBtYWtlIGZvcm1hdHRpbmcgbW9yZQogICAgIyBlZmZpY2llbnQuICBUaGlzIGlzIG5vdCBwcmVjaXNlbHkgdGhlIHNhbWUgYXMgdGhlIGNoZWNrIHVzZWQgYmVsb3cKICAgICMgYmVjYXVzZSB3ZSBkb24ndCB5ZXQgaGF2ZSB0aGUgc3ludGF4IGNoZWNrIHJlc3VsdCwgYnV0IHNpbmNlIHN5bnRheAogICAgIyBjaGVja2luZyBpcyBvZmYgYnkgZGVmYXVsdCBpdCB3aWxsIGJlIHRoZSBzYW1lIGV4Y2VwdCBpbiBkZWJ1ZyBydW5zIHdpdGgKICAgICMgc3ludGF4IGNoZWNraW5nIGFjdGl2YXRlZC4gIEluIHRoYXQgY2FzZSBpdCB3aWxsIHRlbGwgdGhlIGZvcm1hdHRlciB0bwogICAgIyBzYXZlIHRoZSBsb2dmaWxlIGV2ZW4gaWYgaXQgbWF5IGFjdHVhbGx5IGJlIGRlbGV0ZWQgYmFzZWQgb24gdGhlIHN5bnRheAogICAgIyBjaGVjay4KICAgIG15ICRzZWxmICAgICAgICAgPSBzaGlmdDsKICAgIG15ICRzYXdfY29kZV9idWcgPSAkc2VsZi0+e19zYXdfY29kZV9idWd9OwogICAgbXkgJHJPcHRzICAgICAgICA9ICRzZWxmLT57X3JPcHRzfTsKICAgIHJldHVybgogICAgICAgICAkc2F3X2NvZGVfYnVnID09IDEKICAgICAgfHwgJHJPcHRzLT57J2xvZ2ZpbGUnfQogICAgICB8fCAkck9wdHMtPnsnY2hlY2stc3ludGF4J307Cn0KCnN1YiBmaW5pc2ggewoKICAgICMgY2FsbGVkIGFmdGVyIGFsbCBmb3JtYXR0aW5nIHRvIHN1bW1hcml6ZSBlcnJvcnMKICAgIG15ICggJHNlbGYsICRpbmZpbGVfc3ludGF4X29rLCAkZm9ybWF0dGVyICkgPSBAXzsKCiAgICBteSAkck9wdHMgICAgICAgICA9ICRzZWxmLT57X3JPcHRzfTsKICAgIG15ICR3YXJuaW5nX2NvdW50ID0gJHNlbGYtPntfd2FybmluZ19jb3VudH07CiAgICBteSAkc2F3X2NvZGVfYnVnICA9ICRzZWxmLT57X3Nhd19jb2RlX2J1Z307CgogICAgbXkgJHNhdmVfbG9nZmlsZSA9CiAgICAgICAgICggJHNhd19jb2RlX2J1ZyA9PSAwICYmICRpbmZpbGVfc3ludGF4X29rID09IDEgKQogICAgICB8fCAkc2F3X2NvZGVfYnVnID09IDEKICAgICAgfHwgJHJPcHRzLT57J2xvZ2ZpbGUnfTsKICAgIG15ICRsb2dfZmlsZSA9ICRzZWxmLT57X2xvZ19maWxlfTsKICAgIGlmICgkd2FybmluZ19jb3VudCkgewogICAgICAgIGlmICgkc2F2ZV9sb2dmaWxlKSB7CiAgICAgICAgICAgICRzZWxmLT5ibG9ja19sb2dfb3V0cHV0KCk7ICAgICMgYXZvaWQgZWNob2luZyB0aGlzIHRvIHRoZSBsb2dmaWxlCiAgICAgICAgICAgICRzZWxmLT53YXJuaW5nKAogICAgICAgICAgICAgICAgIlRoZSBsb2dmaWxlICRsb2dfZmlsZSBtYXkgY29udGFpbiB1c2VmdWwgaW5mb3JtYXRpb25cbiIpOwogICAgICAgICAgICAkc2VsZi0+dW5ibG9ja19sb2dfb3V0cHV0KCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRzZWxmLT57X2NvbXBsYWludF9jb3VudH0gPiAwICkgewogICAgICAgICAgICAkc2VsZi0+d2FybmluZygKIlRvIHNlZSAkc2VsZi0+e19jb21wbGFpbnRfY291bnR9IG5vbi1jcml0aWNhbCB3YXJuaW5ncyByZXJ1biB3aXRoIC13XG4iCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRzZWxmLT57X3Nhd19icmFjZV9lcnJvcn0KICAgICAgICAgICAgJiYgKCAkc2VsZi0+e19sb2dmaWxlX2dhcH0gPiAxIHx8ICEkc2F2ZV9sb2dmaWxlICkgKQogICAgICAgIHsKICAgICAgICAgICAgJHNlbGYtPndhcm5pbmcoIlRvIHNhdmUgYSBmdWxsIC5MT0cgZmlsZSByZXJ1biB3aXRoIC1nXG4iKTsKICAgICAgICB9CiAgICB9CiAgICAkc2VsZi0+YXNrX3VzZXJfZm9yX2J1Z19yZXBvcnQoICRpbmZpbGVfc3ludGF4X29rLCAkZm9ybWF0dGVyICk7CgogICAgaWYgKCRzYXZlX2xvZ2ZpbGUpIHsKICAgICAgICBteSAkbG9nX2ZpbGUgICAgICAgID0gJHNlbGYtPntfbG9nX2ZpbGV9OwogICAgICAgIG15ICRpc19lbmNvZGVkX2RhdGEgPSAkc2VsZi0+e19pc19lbmNvZGVkX2RhdGF9OwogICAgICAgIG15ICggJGZoLCAkZmlsZW5hbWUgKSA9CiAgICAgICAgICBQZXJsOjpUaWR5OjpzdHJlYW1oYW5kbGUoICRsb2dfZmlsZSwgJ3cnLCAkaXNfZW5jb2RlZF9kYXRhICk7CiAgICAgICAgaWYgKCRmaCkgewogICAgICAgICAgICBteSAkcm91dHB1dF9hcnJheSA9ICRzZWxmLT57X291dHB1dF9hcnJheX07CiAgICAgICAgICAgIGZvcmVhY2ggKCBAeyRyb3V0cHV0X2FycmF5fSApIHsgJGZoLT5wcmludCgkXykgfQogICAgICAgICAgICBpZiAoICRsb2dfZmlsZSBuZSAnLScgJiYgIXJlZiAkbG9nX2ZpbGUgKSB7CiAgICAgICAgICAgICAgICBldmFsIHsgJGZoLT5jbG9zZSgpIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm47Cn0KMTsKCg==</File>
        <File Location="Kernel/cpan-lib/Perl/Tidy/VerticalAligner.pm" Permission="660" Encode="Base64">cGFja2FnZSBQZXJsOjpUaWR5OjpWZXJ0aWNhbEFsaWduZXI7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKb3VyICRWRVJTSU9OID0gJzIwMjEwMTExJzsKCnVzZSBQZXJsOjpUaWR5OjpWZXJ0aWNhbEFsaWduZXI6OkFsaWdubWVudDsKdXNlIFBlcmw6OlRpZHk6OlZlcnRpY2FsQWxpZ25lcjo6TGluZTsKCiMgVGhlIFBlcmw6OlRpZHk6OlZlcnRpY2FsQWxpZ25lciBwYWNrYWdlIGNvbGxlY3RzIG91dHB1dCBsaW5lcyBhbmQKIyBhdHRlbXB0cyB0byBsaW5lIHVwIGNlcnRhaW4gY29tbW9uIHRva2Vucywgc3VjaCBhcyA9PiBhbmQgIywgd2hpY2ggYXJlCiMgaWRlbnRpZmllZCBieSB0aGUgY2FsbGluZyByb3V0aW5lLgojCiMgVXNhZ2U6CiMgICAtIEluaXRpYXRlIGFuIG9iamVjdCB3aXRoIGEgY2FsbCB0byBuZXcoKS4KIyAgIC0gV3JpdGUgbGluZXMgb25lLWJ5LW9uZSB3aXRoIGNhbGxzIHRvIHZhbGlnbl9pbnB1dCgpLgojICAgLSBNYWtlIGEgZmluYWwgY2FsbCB0byBmbHVzaCgpIHRvIGVtcHR5IHRoZSBwaXBlbGluZS4KIwojIFRoZSBzdWIgdmFsaWduX2lucHV0IGNvbGxlY3RzIGxpbmVzIGludG8gZ3JvdXBzLiAgV2hlbiBhIGdyb3VwIHJlYWNoZXMKIyB0aGUgbWF4aW11bSBwb3NzaWJsZSBzaXplIGl0IGlzIHByb2Nlc3NlZCBmb3IgYWxpZ25tZW50IGFuZCBvdXRwdXQuCiMgVGhlIG1heGltdW0gZ3JvdXAgc2l6ZSBpcyByZWFjaGVkIHdoZW5lcnZlciB0aGVyZSBpcyBhIGNoYW5nZSBpbiBpbmRlbnRhdGlvbgojIGxldmVsLCBhIGJsYW5rIGxpbmUsIGEgYmxvY2sgY29tbWVudCwgb3IgYW4gZXh0ZXJuYWwgZmx1c2ggY2FsbC4gIFRoZSBjYWxsaW5nCiMgcm91dGluZSBtYXkgYWxzbyBmb3JjZSBhIGJyZWFrIGluIGFsaWdubWVudCBhdCBhbnkgdGltZS4KIwojIElmIHRoZSBjYWxsaW5nIHJvdXRpbmUgbmVlZHMgdG8gaW50ZXJydXB0IHRoZSBvdXRwdXQgYW5kIHNlbmQgb3RoZXIgdGV4dCB0bwojIHRoZSBvdXRwdXQsIGl0IG11c3QgZmlyc3QgY2FsbCBmbHVzaCgpIHRvIGVtcHR5IHRoZSBvdXRwdXQgcGlwZWxpbmUuICBUaGlzCiMgbWlnaHQgb2NjdXIgZm9yIGV4YW1wbGUgaWYgYSBibG9jayBvZiBwb2QgdGV4dCBuZWVkcyB0byBiZSBzZW50IHRvIHRoZSBvdXRwdXQKIyBiZXR3ZWVuIGJsb2NrcyBvZiBjb2RlLgoKIyBJdCBpcyBlc3NlbnRpYWwgdGhhdCBhIGZpbmFsIGNhbGwgdG8gZmx1c2goKSBiZSBtYWRlLiBPdGhlcndpc2Ugc29tZQojIGZpbmFsIGxpbmVzIG9mIHRleHQgd2lsbCBiZSBsb3N0LgoKIyBJbmRleC4uLgojIENPREUgU0VDVElPTiAxOiBQcmVsaW1pbmFyeSBjb2RlLCBnbG9iYWwgZGVmaW5pdGlvbnMgYW5kIHN1YiBuZXcKIyAgICAgICAgICAgICAgICAgc3ViIG5ldwojIENPREUgU0VDVElPTiAyOiBTb21lIEJhc2ljIFV0aWxpdGllcwojIENPREUgU0VDVElPTiAzOiBDb2RlIHRvIGFjY2VwdCBpbnB1dCBhbmQgZm9ybSBncm91cHMKIyAgICAgICAgICAgICAgICAgc3ViIHZhbGlnbl9pbnB1dAojIENPREUgU0VDVElPTiA0OiBDb2RlIHRvIHByb2Nlc3MgY29tbWVudCBsaW5lcwojICAgICAgICAgICAgICAgICBzdWIgX2ZsdXNoX2NvbW1lbnRfbGluZXMKIyBDT0RFIFNFQ1RJT04gNTogQ29kZSB0byBwcm9jZXNzIGdyb3VwcyBvZiBjb2RlIGxpbmVzCiMgICAgICAgICAgICAgICAgIHN1YiBfZmx1c2hfZ3JvdXBfbGluZXMKIyBDT0RFIFNFQ1RJT04gNjogT3V0cHV0IFN0ZXAgQQojICAgICAgICAgICAgICAgICBzdWIgdmFsaWduX291dHB1dF9zdGVwX0EKIyBDT0RFIFNFQ1RJT04gNzogT3V0cHV0IFN0ZXAgQgojICAgICAgICAgICAgICAgICBzdWIgdmFsaWduX291dHB1dF9zdGVwX0IKIyBDT0RFIFNFQ1RJT04gODogT3V0cHV0IFN0ZXAgQwojICAgICAgICAgICAgICAgICBzdWIgdmFsaWduX291dHB1dF9zdGVwX0MKIyBDT0RFIFNFQ1RJT04gOTogT3V0cHV0IFN0ZXAgRAojICAgICAgICAgICAgICAgICBzdWIgdmFsaWduX291dHB1dF9zdGVwX0QKIyBDT0RFIFNFQ1RJT04gMTA6IFN1bW1hcnkKIyAgICAgICAgICAgICAgICAgc3ViIHJlcG9ydF9hbnl0aGluZ191bnVzdWFsCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBDT0RFIFNFQ1RJT04gMTogUHJlbGltaW5hcnkgY29kZSwgZ2xvYmFsIGRlZmluaXRpb25zIGFuZCBzdWIgbmV3CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKc3ViIEFVVE9MT0FEIHsKCiAgICAjIENhdGNoIGFueSB1bmRlZmluZWQgc3ViIGNhbGxzIHNvIHRoYXQgd2UgYXJlIHN1cmUgdG8gZ2V0CiAgICAjIHNvbWUgZGlhZ25vc3RpYyBpbmZvcm1hdGlvbi4gIFRoaXMgc3ViIHNob3VsZCBuZXZlciBiZSBjYWxsZWQKICAgICMgZXhjZXB0IGZvciBhIHByb2dyYW1taW5nIGVycm9yLgogICAgb3VyICRBVVRPTE9BRDsKICAgIHJldHVybiBpZiAoICRBVVRPTE9BRCA9fiAvXGJERVNUUk9ZJC8gKTsKICAgIG15ICggJHBrZywgJGZuYW1lLCAkbG5vICkgPSBjYWxsZXIoKTsKICAgIG15ICRteV9wYWNrYWdlID0gX19QQUNLQUdFX187CiAgICBwcmludCBTVERFUlIgPDxFT007Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRXJyb3IgZGV0ZWN0ZWQgaW4gcGFja2FnZSAnJG15X3BhY2thZ2UnLCB2ZXJzaW9uICRWRVJTSU9OClJlY2VpdmVkIHVuZXhwZWN0ZWQgQVVUT0xPQUQgY2FsbCBmb3Igc3ViICckQVVUT0xPQUQnCkNhbGxlZCBmcm9tIHBhY2thZ2U6ICckcGtnJyAgCkNhbGxlZCBmcm9tIEZpbGUgJyRmbmFtZScgIGF0IGxpbmUgJyRsbm8nClRoaXMgZXJyb3IgaXMgcHJvYmFibHkgZHVlIHRvIGEgcmVjZW50IHByb2dyYW1taW5nIGNoYW5nZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVPTQogICAgZXhpdCAxOwp9CgpzdWIgREVTVFJPWSB7CgogICAgIyByZXF1aXJlZCB0byBhdm9pZCBjYWxsIHRvIEFVVE9MT0FEIGluIHNvbWUgdmVyc2lvbnMgb2YgcGVybAp9CgpCRUdJTiB7CgogICAgIyBEZWZpbmUgdGhlIGZpeGVkIGluZGV4ZXMgZm9yIHZhcmlhYmxlcyBpbiAkc2VsZiwgd2hpY2ggaXMgYW4gYXJyYXkKICAgICMgcmVmZXJlbmNlLiAgTm90ZSB0aGUgY29udmVudGlvbiBvZiBsZWFkaW5nIGFuZCB0cmFpbGluZyB1bmRlcnNjb3JlcyB0bwogICAgIyBrZWVwIHRoZW0gdW5pcXVlLgogICAgbXkgJGkgPSAwOwogICAgdXNlIGNvbnN0YW50IHsKICAgICAgICBfZmlsZV93cml0ZXJfb2JqZWN0XyA9PiAkaSsrLAogICAgICAgIF9sb2dnZXJfb2JqZWN0XyAgICAgID0+ICRpKyssCiAgICAgICAgX2RpYWdub3N0aWNzX29iamVjdF8gPT4gJGkrKywKICAgICAgICBfbGVuZ3RoX2Z1bmN0aW9uXyAgICA9PiAkaSsrLAoKICAgICAgICBfck9wdHNfICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJGkrKywKICAgICAgICBfck9wdHNfaW5kZW50X2NvbHVtbnNfICAgICAgICAgICAgICAgPT4gJGkrKywKICAgICAgICBfck9wdHNfdGFic18gICAgICAgICAgICAgICAgICAgICAgICAgPT4gJGkrKywKICAgICAgICBfck9wdHNfZW50YWJfbGVhZGluZ193aGl0ZXNwYWNlXyAgICAgPT4gJGkrKywKICAgICAgICBfck9wdHNfZml4ZWRfcG9zaXRpb25fc2lkZV9jb21tZW50XyAgPT4gJGkrKywKICAgICAgICBfck9wdHNfbWluaW11bV9zcGFjZV90b19jb21tZW50XyAgICAgPT4gJGkrKywKICAgICAgICBfck9wdHNfbWF4aW11bV9saW5lX2xlbmd0aF8gICAgICAgICAgPT4gJGkrKywKICAgICAgICBfck9wdHNfdmFyaWFibGVfbWF4aW11bV9saW5lX2xlbmd0aF8gPT4gJGkrKywKICAgICAgICBfck9wdHNfdmFsaWduXyAgICAgICAgICAgICAgICAgICAgICAgPT4gJGkrKywKCiAgICAgICAgX2xhc3RfbGV2ZWxfd3JpdHRlbl8gICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9sYXN0X3NpZGVfY29tbWVudF9jb2x1bW5fICAgICAgPT4gJGkrKywKICAgICAgICBfbGFzdF9zaWRlX2NvbW1lbnRfbGluZV9udW1iZXJfID0+ICRpKyssCiAgICAgICAgX2xhc3Rfc2lkZV9jb21tZW50X2xlbmd0aF8gICAgICA9PiAkaSsrLAogICAgICAgIF9sYXN0X3NpZGVfY29tbWVudF9sZXZlbF8gICAgICAgPT4gJGkrKywKICAgICAgICBfb3V0ZGVudGVkX2xpbmVfY291bnRfICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2ZpcnN0X291dGRlbnRlZF9saW5lX2F0XyAgICAgICA9PiAkaSsrLAogICAgICAgIF9sYXN0X291dGRlbnRlZF9saW5lX2F0XyAgICAgICAgPT4gJGkrKywKICAgICAgICBfY29uc2VjdXRpdmVfYmxvY2tfY29tbWVudHNfICAgID0+ICRpKyssCgogICAgICAgIF9yZ3JvdXBfbGluZXNfICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2dyb3VwX2xldmVsXyAgICAgICAgICAgICAgICAgPT4gJGkrKywKICAgICAgICBfZ3JvdXBfdHlwZV8gICAgICAgICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF96ZXJvX2NvdW50XyAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2xhc3RfbGVhZGluZ19zcGFjZV9jb3VudF8gICAgPT4gJGkrKywKICAgICAgICBfY29tbWVudF9sZWFkaW5nX3NwYWNlX2NvdW50XyA9PiAkaSsrLAogICAgICAgIF9leHRyYV9pbmRlbnRfb2tfICAgICAgICAgICAgID0+ICRpKyssCiAgICB9OwoKICAgICMgRGVidWcgZmxhZy4gVGhpcyBpcyBhIHJlbGljIGZyb20gdGhlIG9yaWdpbmFsIHByb2dyYW0gZGV2ZWxvcG1lbnQKICAgICMgbG9va2luZyBmb3IgcHJvYmxlbXMgd2l0aCB0YWIgY2hhcmFjdGVycy4gIENhdXRpb246IHRoaXMgZGVidWcgZmxhZyBjYW4KICAgICMgcHJvZHVjZSBhIGxvdCBvZiBvdXRwdXQgSXQgc2hvdWxkIGJlIDAgZXhjZXB0IHdoZW4gZGVidWdnaW5nIHNtYWxsCiAgICAjIHNjcmlwdHMuCgogICAgdXNlIGNvbnN0YW50IERFQlVHX1RBQlMgPT4gMDsKCiAgICBteSAkZGVidWdfd2FybmluZyA9IHN1YiB7CiAgICAgICAgcHJpbnQgU1RET1VUICJWQUxJR05fREVCVUdHSU5HIHdpdGgga2V5ICRfWzBdXG4iOwogICAgICAgIHJldHVybjsKICAgIH07CgogICAgREVCVUdfVEFCUyAmJiAkZGVidWdfd2FybmluZy0+KCdUQUJTJyk7Cgp9CgpzdWIgbmV3IHsKCiAgICBteSAoICRjbGFzcywgQGFyZ3MgKSA9IEBfOwoKICAgIG15ICVkZWZhdWx0cyA9ICgKICAgICAgICByT3B0cyAgICAgICAgICAgICAgPT4gdW5kZWYsCiAgICAgICAgZmlsZV93cml0ZXJfb2JqZWN0ID0+IHVuZGVmLAogICAgICAgIGxvZ2dlcl9vYmplY3QgICAgICA9PiB1bmRlZiwKICAgICAgICBkaWFnbm9zdGljc19vYmplY3QgPT4gdW5kZWYsCiAgICAgICAgbGVuZ3RoX2Z1bmN0aW9uICAgID0+IHN1YiB7IHJldHVybiBsZW5ndGgoICRfWzBdICkgfSwKICAgICk7CiAgICBteSAlYXJncyA9ICggJWRlZmF1bHRzLCBAYXJncyApOwoKICAgICMgSW5pdGlhbGl6ZSBvdGhlciBjYWNoZXMgYW5kIGJ1ZmZlcnMKICAgIGluaXRpYWxpemVfc3RlcF9CX2NhY2hlKCk7CiAgICBpbml0aWFsaXplX3ZhbGlnbl9idWZmZXIoKTsKICAgIGluaXRpYWxpemVfbGVhZGluZ19zdHJpbmdfY2FjaGUoKTsKICAgIGluaXRpYWxpemVfZGVjb2RlKCk7CgogICAgIyBJbml0aWFsaXplIGFsbCB2YXJpYWJsZXMgaW4gJHNlbGYuCiAgICAjIFRvIGFkZCBhbiBpdGVtIHRvICRzZWxmLCBmaXJzdCBkZWZpbmUgYSBuZXcgY29uc3RhbnQgaW5kZXggaW4gdGhlIEJFR0lOCiAgICAjIHNlY3Rpb24uCiAgICBteSAkc2VsZiA9IFtdOwoKICAgICMgb2JqZWN0cwogICAgJHNlbGYtPltfZmlsZV93cml0ZXJfb2JqZWN0X10gPSAkYXJnc3tmaWxlX3dyaXRlcl9vYmplY3R9OwogICAgJHNlbGYtPltfbG9nZ2VyX29iamVjdF9dICAgICAgPSAkYXJnc3tsb2dnZXJfb2JqZWN0fTsKICAgICRzZWxmLT5bX2RpYWdub3N0aWNzX29iamVjdF9dID0gJGFyZ3N7ZGlhZ25vc3RpY3Nfb2JqZWN0fTsKICAgICRzZWxmLT5bX2xlbmd0aF9mdW5jdGlvbl9dICAgID0gJGFyZ3N7bGVuZ3RoX2Z1bmN0aW9ufTsKCiAgICAjIHNob3J0Y3V0cyB0byB1c2VyIG9wdGlvbnMKICAgIG15ICRyT3B0cyA9ICRhcmdze3JPcHRzfTsKCiAgICAkc2VsZi0+W19yT3B0c19dICAgICAgICAgICAgICAgID0gJHJPcHRzOwogICAgJHNlbGYtPltfck9wdHNfaW5kZW50X2NvbHVtbnNfXSA9ICRyT3B0cy0+eydpbmRlbnQtY29sdW1ucyd9OwogICAgJHNlbGYtPltfck9wdHNfdGFic19dICAgICAgICAgICA9ICRyT3B0cy0+eyd0YWJzJ307CiAgICAkc2VsZi0+W19yT3B0c19lbnRhYl9sZWFkaW5nX3doaXRlc3BhY2VfXSA9CiAgICAgICRyT3B0cy0+eydlbnRhYi1sZWFkaW5nLXdoaXRlc3BhY2UnfTsKICAgICRzZWxmLT5bX3JPcHRzX2ZpeGVkX3Bvc2l0aW9uX3NpZGVfY29tbWVudF9dID0KICAgICAgJHJPcHRzLT57J2ZpeGVkLXBvc2l0aW9uLXNpZGUtY29tbWVudCd9OwogICAgJHNlbGYtPltfck9wdHNfbWluaW11bV9zcGFjZV90b19jb21tZW50X10gPQogICAgICAkck9wdHMtPnsnbWluaW11bS1zcGFjZS10by1jb21tZW50J307CiAgICAkc2VsZi0+W19yT3B0c19tYXhpbXVtX2xpbmVfbGVuZ3RoX10gPSAkck9wdHMtPnsnbWF4aW11bS1saW5lLWxlbmd0aCd9OwogICAgJHNlbGYtPltfck9wdHNfdmFyaWFibGVfbWF4aW11bV9saW5lX2xlbmd0aF9dID0KICAgICAgJHJPcHRzLT57J3ZhcmlhYmxlLW1heGltdW0tbGluZS1sZW5ndGgnfTsKICAgICRzZWxmLT5bX3JPcHRzX3ZhbGlnbl9dID0gJHJPcHRzLT57J3ZhbGlnbid9OwoKICAgICMgQmF0Y2ggb2YgbGluZXMgYmVpbmcgY29sbGVjdGVkCiAgICAkc2VsZi0+W19yZ3JvdXBfbGluZXNfXSAgICAgICAgICAgICAgICA9IFtdOwogICAgJHNlbGYtPltfZ3JvdXBfbGV2ZWxfXSAgICAgICAgICAgICAgICAgPSAwOwogICAgJHNlbGYtPltfZ3JvdXBfdHlwZV9dICAgICAgICAgICAgICAgICAgPSAiIjsKICAgICRzZWxmLT5bX3plcm9fY291bnRfXSAgICAgICAgICAgICAgICAgID0gMDsKICAgICRzZWxmLT5bX2NvbW1lbnRfbGVhZGluZ19zcGFjZV9jb3VudF9dID0gMDsKICAgICRzZWxmLT5bX2xhc3RfbGVhZGluZ19zcGFjZV9jb3VudF9dICAgID0gMDsKICAgICRzZWxmLT5bX2V4dHJhX2luZGVudF9va19dICAgICAgICAgICAgID0gMDsKCiAgICAjIE1lbW9yeSBvZiB3aGF0IGhhcyBiZWVuIHByb2Nlc3NlZAogICAgJHNlbGYtPltfbGFzdF9sZXZlbF93cml0dGVuX10gICAgICAgICAgICA9IC0xOwogICAgJHNlbGYtPltfbGFzdF9zaWRlX2NvbW1lbnRfY29sdW1uX10gICAgICA9IDA7CiAgICAkc2VsZi0+W19sYXN0X3NpZGVfY29tbWVudF9saW5lX251bWJlcl9dID0gMDsKICAgICRzZWxmLT5bX2xhc3Rfc2lkZV9jb21tZW50X2xlbmd0aF9dICAgICAgPSAwOwogICAgJHNlbGYtPltfbGFzdF9zaWRlX2NvbW1lbnRfbGV2ZWxfXSAgICAgICA9IC0xOwogICAgJHNlbGYtPltfb3V0ZGVudGVkX2xpbmVfY291bnRfXSAgICAgICAgICA9IDA7CiAgICAkc2VsZi0+W19maXJzdF9vdXRkZW50ZWRfbGluZV9hdF9dICAgICAgID0gMDsKICAgICRzZWxmLT5bX2xhc3Rfb3V0ZGVudGVkX2xpbmVfYXRfXSAgICAgICAgPSAwOwogICAgJHNlbGYtPltfY29uc2VjdXRpdmVfYmxvY2tfY29tbWVudHNfXSAgICA9IDA7CgogICAgYmxlc3MgJHNlbGYsICRjbGFzczsKICAgIHJldHVybiAkc2VsZjsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQ09ERSBTRUNUSU9OIDI6IEJhc2ljIFV0aWxpdGllcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnN1YiBmbHVzaCB7CgogICAgIyBmbHVzaCgpIGlzIHRoZSBleHRlcm5hbCBjYWxsIHRvIGNvbXBsZXRlbHkgZW1wdHkgdGhlIHBpcGVsaW5lLgogICAgbXkgKCRzZWxmKSA9IEBfOwoKICAgICMgcHVzaCB0aGluZ3Mgb3V0IHRoZSBwaXBsaW5lLi4uCgogICAgIyBwdXNoIG91dCBhbnkgY3VycmVudCBncm91cCBsaW5lcwogICAgJHNlbGYtPl9mbHVzaF9ncm91cF9saW5lcygpOwoKICAgICMgdGhlbiBhbnl0aGluZyBsZWZ0IGluIHRoZSBjYWNoZSBvZiBzdGVwX0IKICAgICRzZWxmLT5fZmx1c2hfY2FjaGUoKTsKCiAgICAjIHRoZW4gYW55dGhpbmcgbGVmdCBpbiB0aGUgYnVmZmVyIG9mIHN0ZXBfQwogICAgJHNlbGYtPmR1bXBfdmFsaWduX2J1ZmZlcigpOwoKICAgIHJldHVybjsKfQoKc3ViIGluaXRpYWxpemVfZm9yX25ld19ncm91cCB7CiAgICBteSAoJHNlbGYpID0gQF87CgogICAgJHNlbGYtPltfcmdyb3VwX2xpbmVzX10gICAgICAgICAgICAgICAgPSBbXTsKICAgICRzZWxmLT5bX2dyb3VwX3R5cGVfXSAgICAgICAgICAgICAgICAgID0gIiI7CiAgICAkc2VsZi0+W196ZXJvX2NvdW50X10gICAgICAgICAgICAgICAgICA9IDA7CiAgICAkc2VsZi0+W19jb21tZW50X2xlYWRpbmdfc3BhY2VfY291bnRfXSA9IDA7CiAgICAkc2VsZi0+W19sYXN0X2xlYWRpbmdfc3BhY2VfY291bnRfXSAgICA9IDA7CgogICAgIyBOb3RlIHRoYXQgdGhlIHZhbHVlIGZvciBfZ3JvdXBfbGV2ZWxfIGlzCiAgICAjIGhhbmRsZWQgc2VwYXJhdGVseSBpbiBzdWIgdmFsaWduX2lucHV0CiAgICByZXR1cm47Cn0KCnN1YiBncm91cF9saW5lX2NvdW50IHsKICAgIHJldHVybiArQHsgJF9bMF0tPltfcmdyb3VwX2xpbmVzX10gfTsKfQoKIyBpbnRlcmZhY2UgdG8gUGVybDo6VGlkeTo6RGlhZ25vc3RpY3Mgcm91dGluZXMKIyBGb3IgZGVidWdnaW5nOyBub3QgY3VycmVudGx5IHVzZWQKc3ViIHdyaXRlX2RpYWdub3N0aWNzIHsKICAgIG15ICggJHNlbGYsICRtc2cgKSA9IEBfOwogICAgbXkgJGRpYWdub3N0aWNzX29iamVjdCA9ICRzZWxmLT5bX2RpYWdub3N0aWNzX29iamVjdF9dOwogICAgaWYgKCRkaWFnbm9zdGljc19vYmplY3QpIHsKICAgICAgICAkZGlhZ25vc3RpY3Nfb2JqZWN0LT53cml0ZV9kaWFnbm9zdGljcygkbXNnKTsKICAgIH0KICAgIHJldHVybjsKfQoKIyBpbnRlcmZhY2UgdG8gUGVybDo6VGlkeTo6TG9nZ2VyIHJvdXRpbmVzCnN1YiB3YXJuaW5nIHsKICAgIG15ICggJHNlbGYsICRtc2cgKSA9IEBfOwogICAgbXkgJGxvZ2dlcl9vYmplY3QgPSAkc2VsZi0+W19sb2dnZXJfb2JqZWN0X107CiAgICBpZiAoJGxvZ2dlcl9vYmplY3QpIHsKICAgICAgICAkbG9nZ2VyX29iamVjdC0+d2FybmluZygkbXNnKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIHdyaXRlX2xvZ2ZpbGVfZW50cnkgewogICAgbXkgKCAkc2VsZiwgJG1zZyApID0gQF87CiAgICBteSAkbG9nZ2VyX29iamVjdCA9ICRzZWxmLT5bX2xvZ2dlcl9vYmplY3RfXTsKICAgIGlmICgkbG9nZ2VyX29iamVjdCkgewogICAgICAgICRsb2dnZXJfb2JqZWN0LT53cml0ZV9sb2dmaWxlX2VudHJ5KCRtc2cpOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgcmVwb3J0X2RlZmluaXRlX2J1ZyB7CiAgICBteSAoICRzZWxmLCAkbXNnICkgPSBAXzsKICAgIG15ICRsb2dnZXJfb2JqZWN0ID0gJHNlbGYtPltfbG9nZ2VyX29iamVjdF9dOwogICAgaWYgKCRsb2dnZXJfb2JqZWN0KSB7CiAgICAgICAgJGxvZ2dlcl9vYmplY3QtPnJlcG9ydF9kZWZpbml0ZV9idWcoKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIGdldF9jYWNoZWRfbGluZV9jb3VudCB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgcmV0dXJuICRzZWxmLT5ncm91cF9saW5lX2NvdW50KCkgKyAoIGdldF9jYWNoZWRfbGluZV90eXBlKCkgPyAxIDogMCApOwp9CgpzdWIgZ2V0X3NwYWNlcyB7CgogICAgIyByZXR1cm4gdGhlIG51bWJlciBvZiBsZWFkaW5nIHNwYWNlcyBhc3NvY2lhdGVkIHdpdGggYW4gaW5kZW50YXRpb24KICAgICMgdmFyaWFibGUgJGluZGVudGF0aW9uIGlzIGVpdGhlciBhIGNvbnN0YW50IG51bWJlciBvZiBzcGFjZXMgb3IgYW4KICAgICMgb2JqZWN0IHdpdGggYSBnZXRfc3BhY2VzIG1ldGhvZC4KICAgIG15ICRpbmRlbnRhdGlvbiA9IHNoaWZ0OwogICAgcmV0dXJuIHJlZigkaW5kZW50YXRpb24pID8gJGluZGVudGF0aW9uLT5nZXRfc3BhY2VzKCkgOiAkaW5kZW50YXRpb247Cn0KCnN1YiBnZXRfcmVjb3ZlcmFibGVfc3BhY2VzIHsKCiAgICAjIHJldHVybiB0aGUgbnVtYmVyIG9mIHNwYWNlcyAoKyBtZWFucyBzaGlmdCByaWdodCwgLSBtZWFucyBzaGlmdCBsZWZ0KQogICAgIyB0aGF0IHdlIHdvdWxkIGxpa2UgdG8gc2hpZnQgYSBncm91cCBvZiBsaW5lcyB3aXRoIHRoZSBzYW1lIGluZGVudGF0aW9uCiAgICAjIHRvIGdldCB0aGVtIHRvIGxpbmUgdXAgd2l0aCB0aGVpciBvcGVuaW5nIHBhcmVucwogICAgbXkgJGluZGVudGF0aW9uID0gc2hpZnQ7CiAgICByZXR1cm4gcmVmKCRpbmRlbnRhdGlvbikgPyAkaW5kZW50YXRpb24tPmdldF9yZWNvdmVyYWJsZV9zcGFjZXMoKSA6IDA7Cn0KCnN1YiBtYXhpbXVtX2xpbmVfbGVuZ3RoX2Zvcl9sZXZlbCB7CgogICAgIyByZXR1cm4gbWF4aW11bSBsaW5lIGxlbmd0aCBmb3IgbGluZSBzdGFydGluZyB3aXRoIGEgZ2l2ZW4gbGV2ZWwKICAgIG15ICggJHNlbGYsICRsZXZlbCApID0gQF87CiAgICBteSAkbWF4aW11bV9saW5lX2xlbmd0aCA9ICRzZWxmLT5bX3JPcHRzX21heGltdW1fbGluZV9sZW5ndGhfXTsKICAgIGlmICggJHNlbGYtPltfck9wdHNfdmFyaWFibGVfbWF4aW11bV9saW5lX2xlbmd0aF9dICkgewogICAgICAgIGlmICggJGxldmVsIDwgMCApIHsgJGxldmVsID0gMCB9CiAgICAgICAgJG1heGltdW1fbGluZV9sZW5ndGggKz0gJGxldmVsICogJHNlbGYtPltfck9wdHNfaW5kZW50X2NvbHVtbnNfXTsKICAgIH0KICAgIHJldHVybiAkbWF4aW11bV9saW5lX2xlbmd0aDsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQ09ERSBTRUNUSU9OIDM6IENvZGUgdG8gYWNjZXB0IGlucHV0IGFuZCBmb3JtIGdyb3VwcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnN1YiBwdXNoX2dyb3VwX2xpbmUgewoKICAgIG15ICggJHNlbGYsICRuZXdfbGluZSApID0gQF87CiAgICBteSAkcmdyb3VwX2xpbmVzID0gJHNlbGYtPltfcmdyb3VwX2xpbmVzX107CiAgICBwdXNoIEB7JHJncm91cF9saW5lc30sICRuZXdfbGluZTsKICAgIHJldHVybjsKfQoKdXNlIGNvbnN0YW50IERFQlVHX1ZBTElHTiAgICAgID0+IDA7CnVzZSBjb25zdGFudCBTQ19MT05HX0xJTkVfRElGRiA9PiAxMjsKCnN1YiB2YWxpZ25faW5wdXQgewoKICAgICMgUGxhY2Ugb25lIGxpbmUgaW4gdGhlIGN1cnJlbnQgdmVydGljYWwgZ3JvdXAuCiAgICAjCiAgICAjIFRoZSBpbnB1dCBwYXJhbWV0ZXJzIGFyZToKICAgICMgICAgICRsZXZlbCA9IGluZGVudGF0aW9uIGxldmVsIG9mIHRoaXMgbGluZQogICAgIyAgICAgJHJmaWVsZHMgPSByZWZlcmVuY2UgdG8gYXJyYXkgb2YgZmllbGRzCiAgICAjICAgICAkcnBhdHRlcm5zID0gcmVmZXJlbmNlIHRvIGFycmF5IG9mIHBhdHRlcm5zLCBvbmUgcGVyIGZpZWxkCiAgICAjICAgICAkcnRva2VucyAgID0gcmVmZXJlbmNlIHRvIGFycmF5IG9mIHRva2VucyBzdGFydGluZyBmaWVsZHMgMSwyLC4uCiAgICAjCiAgICAjIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiB3aGF0IHRoaXMgcGFja2FnZSBkb2VzLiAgSW4gdGhpcyBleGFtcGxlLAogICAgIyB3ZSBhcmUgdHJ5aW5nIHRvIGxpbmUgdXAgYm90aCB0aGUgJz0+JyBhbmQgdGhlICcjJy4KICAgICMKICAgICMgICAgICAgICAnMTgnID0+ICdncmF2ZScsICAgICMgICBcYAogICAgIyAgICAgICAgICcxOScgPT4gJ2FjdXRlJywgICAgIyAgIGAnCiAgICAjICAgICAgICAgJzIwJyA9PiAnY2Fyb24nLCAgICAjICAgXHYKICAgICMgPC10YWJzLT48ZjEtPjwtLWZpZWxkIDIgLS0tPjwtZjMtPgogICAgIyB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICB8CiAgICAjIHwgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgIHwKICAgICMgY29sMSAgICAgICAgY29sMiAgICAgICAgIGNvbDMgY29sNAogICAgIwogICAgIyBUaGUgY2FsbGluZyByb3V0aW5lIGhhcyBhbHJlYWR5IGJyb2tlbiB0aGUgZW50aXJlIGxpbmUgaW50byAzIGZpZWxkcyBhcwogICAgIyBpbmRpY2F0ZWQuICAoU28gdGhlIHdvcmsgb2YgaWRlbnRpZnlpbmcgcHJvbWlzaW5nIGNvbW1vbiB0b2tlbnMgaGFzCiAgICAjIGFscmVhZHkgYmVlbiBkb25lKS4KICAgICMKICAgICMgSW4gdGhpcyBleGFtcGxlLCB0aGVyZSB3aWxsIGJlIDIgdG9rZW5zIGJlaW5nIG1hdGNoZWQ6ICc9PicgYW5kICcjJy4KICAgICMgVGhleSBhcmUgdGhlIGxlYWRpbmcgcGFydHMgb2YgZmllbGRzIDIgYW5kIDMsIGJ1dCB3ZSBkbyBuZWVkIHRvIGtub3cKICAgICMgd2hhdCB0aGV5IGFyZSBzbyB0aGF0IHdlIGNhbiBkdW1wIGEgZ3JvdXAgb2YgbGluZXMgd2hlbiB0aGVzZSB0b2tlbnMKICAgICMgY2hhbmdlLgogICAgIwogICAgIyBUaGUgZmllbGRzIGNvbnRhaW4gdGhlIGFjdHVhbCBjaGFyYWN0ZXJzIG9mIGVhY2ggZmllbGQuICBUaGUgcGF0dGVybnMKICAgICMgYXJlIGxpa2UgdGhlIGZpZWxkcywgYnV0IHRoZXkgY29udGFpbiBtYWlubHkgdG9rZW4gdHlwZXMgaW5zdGVhZAogICAgIyBvZiB0b2tlbnMsIHNvIHRoZXkgaGF2ZSBmZXdlciBjaGFyYWN0ZXJzLiAgVGhleSBhcmUgdXNlZCB0byBiZQogICAgIyBzdXJlIHdlIGFyZSBtYXRjaGluZyBmaWVsZHMgb2Ygc2ltaWxhciB0eXBlLgogICAgIwogICAgIyBJbiB0aGlzIGV4YW1wbGUsIHRoZXJlIHdpbGwgYmUgNCBjb2x1bW4gaW5kZXhlcyBiZWluZyBhZGp1c3RlZC4gIFRoZQogICAgIyBmaXJzdCBvbmUgaXMgYWx3YXlzIGF0IHplcm8uICBUaGUgaW50ZXJpb3IgY29sdW1ucyBhcmUgYXQgdGhlIHN0YXJ0IG9mCiAgICAjIHRoZSBtYXRjaGluZyB0b2tlbnMsIGFuZCB0aGUgbGFzdCBvbmUgdHJhY2tzIHRoZSBtYXhpbXVtIGxpbmUgbGVuZ3RoLgogICAgIwogICAgIyBFYWNoIHRpbWUgYSBuZXcgbGluZSBjb21lcyBpbiwgaXQgam9pbnMgdGhlIGN1cnJlbnQgdmVydGljYWwKICAgICMgZ3JvdXAgaWYgcG9zc2libGUuICBPdGhlcndpc2UgaXQgY2F1c2VzIHRoZSBjdXJyZW50IGdyb3VwIHRvIGJlIGZsdXNoZWQKICAgICMgYW5kIGEgbmV3IGdyb3VwIGlzIHN0YXJ0ZWQuCiAgICAjCiAgICAjIEZvciBlYWNoIG5ldyBncm91cCBtZW1iZXIsIHRoZSBjb2x1bW4gbG9jYXRpb25zIGFyZSBpbmNyZWFzZWQsIGFzCiAgICAjIG5lY2Vzc2FyeSwgdG8gbWFrZSByb29tIGZvciB0aGUgbmV3IGZpZWxkcy4gIFdoZW4gdGhlIGdyb3VwIGlzIGZpbmFsbHkKICAgICMgb3V0cHV0LCB0aGVzZSBjb2x1bW4gbnVtYmVycyBhcmUgdXNlZCB0byBjb21wdXRlIHRoZSBhbW91bnQgb2Ygc3BhY2VzIG9mCiAgICAjIHBhZGRpbmcgbmVlZGVkIGZvciBlYWNoIGZpZWxkLgogICAgIwogICAgIyBQcm9ncmFtbWluZyBub3RlOiB0aGUgZmllbGRzIGFyZSBhc3N1bWVkIG5vdCB0byBoYXZlIGFueSB0YWIgY2hhcmFjdGVycy4KICAgICMgVGFicyBoYXZlIGJlZW4gcHJldmlvdXNseSByZW1vdmVkIGV4Y2VwdCBmb3IgdGFicyBpbiBxdW90ZWQgc3RyaW5ncyBhbmQKICAgICMgc2lkZSBjb21tZW50cy4gIFRhYnMgaW4gdGhlc2UgZmllbGRzIGNhbiBtZXNzIHVwIHRoZSBjb2x1bW4gY291bnRpbmcuCiAgICAjIFRoZSBsb2cgZmlsZSB3YXJucyB0aGUgdXNlciBpZiB0aGVyZSBhcmUgYW55IHN1Y2ggdGFicy4KCiAgICBteSAoICRzZWxmLCAkcmxpbmVfaGFzaCApID0gQF87CgogICAgbXkgJGxldmVsICAgICAgICAgICAgICAgICAgICAgPSAkcmxpbmVfaGFzaC0+e2xldmVsfTsKICAgIG15ICRsZXZlbF9lbmQgICAgICAgICAgICAgICAgID0gJHJsaW5lX2hhc2gtPntsZXZlbF9lbmR9OwogICAgbXkgJGxldmVsX2FkaiAgICAgICAgICAgICAgICAgPSAkcmxpbmVfaGFzaC0+e2xldmVsX2Fkan07CiAgICBteSAkaW5kZW50YXRpb24gICAgICAgICAgICAgICA9ICRybGluZV9oYXNoLT57aW5kZW50YXRpb259OwogICAgbXkgJGxpc3Rfc2Vxbm8gICAgICAgICAgICAgICAgPSAkcmxpbmVfaGFzaC0+e2xpc3Rfc2Vxbm99OwogICAgbXkgJG91dGRlbnRfbG9uZ19saW5lcyAgICAgICAgPSAkcmxpbmVfaGFzaC0+e291dGRlbnRfbG9uZ19saW5lc307CiAgICBteSAkaXNfdGVybWluYWxfdGVybmFyeSAgICAgICA9ICRybGluZV9oYXNoLT57aXNfdGVybWluYWxfdGVybmFyeX07CiAgICBteSAkaXNfdGVybWluYWxfc3RhdGVtZW50ICAgICA9ICRybGluZV9oYXNoLT57aXNfdGVybWluYWxfc3RhdGVtZW50fTsKICAgIG15ICRydmVydGljYWxfdGlnaHRuZXNzX2ZsYWdzID0gJHJsaW5lX2hhc2gtPntydmVydGljYWxfdGlnaHRuZXNzX2ZsYWdzfTsKICAgIG15ICRsZXZlbF9qdW1wICAgICAgICAgICAgICAgID0gJHJsaW5lX2hhc2gtPntsZXZlbF9qdW1wfTsKICAgIG15ICRyZmllbGRzICAgICAgICAgICAgICAgICAgID0gJHJsaW5lX2hhc2gtPntyZmllbGRzfTsKICAgIG15ICRydG9rZW5zICAgICAgICAgICAgICAgICAgID0gJHJsaW5lX2hhc2gtPntydG9rZW5zfTsKICAgIG15ICRycGF0dGVybnMgICAgICAgICAgICAgICAgID0gJHJsaW5lX2hhc2gtPntycGF0dGVybnN9OwogICAgbXkgJHJmaWVsZF9sZW5ndGhzICAgICAgICAgICAgPSAkcmxpbmVfaGFzaC0+e3JmaWVsZF9sZW5ndGhzfTsKICAgIG15ICR0ZXJtaW5hbF9ibG9ja190eXBlICAgICAgID0gJHJsaW5lX2hhc2gtPnt0ZXJtaW5hbF9ibG9ja190eXBlfTsKICAgIG15ICRiYXRjaF9jb3VudCAgICAgICAgICAgICAgID0gJHJsaW5lX2hhc2gtPntiYXRjaF9jb3VudH07CiAgICBteSAkYnJlYWtfYWxpZ25tZW50X2JlZm9yZSAgICA9ICRybGluZV9oYXNoLT57YnJlYWtfYWxpZ25tZW50X2JlZm9yZX07CiAgICBteSAkYnJlYWtfYWxpZ25tZW50X2FmdGVyICAgICA9ICRybGluZV9oYXNoLT57YnJlYWtfYWxpZ25tZW50X2FmdGVyfTsKICAgIG15ICRLZW5kICAgICAgICAgICAgICAgICAgICAgID0gJHJsaW5lX2hhc2gtPntLZW5kfTsKICAgIG15ICRjaV9sZXZlbCAgICAgICAgICAgICAgICAgID0gJHJsaW5lX2hhc2gtPntjaV9sZXZlbH07CgogICAgIyBUaGUgaW5kZXggJyRLZW5kJyBpcyBhIHZhbHVlIHdoaWNoIHBhc3NlZCBhbG9uZyB3aXRoIHRoZSBsaW5lIHRleHQgdG8gc3ViCiAgICAjICd3cml0ZV9jb2RlX2xpbmUnIGZvciBhIGNvbnZlcmdlbmNlIGNoZWNrLgoKICAgICMgbnVtYmVyIG9mIGZpZWxkcyBpcyAkam1heAogICAgIyBudW1iZXIgb2YgdG9rZW5zIGJldHdlZW4gZmllbGRzIGlzICRqbWF4LTEKICAgIG15ICRqbWF4ID0gQHskcmZpZWxkc30gLSAxOwoKICAgIG15ICRsZWFkaW5nX3NwYWNlX2NvdW50ID0gZ2V0X3NwYWNlcygkaW5kZW50YXRpb24pOwoKICAgICMgc2V0IG91dGRlbnRlZCBmbGFnIHRvIGJlIHN1cmUgd2UgZWl0aGVyIGFsaWduIHdpdGhpbiBzdGF0ZW1lbnRzIG9yCiAgICAjIGFjcm9zcyBzdGF0ZW1lbnQgYm91bmRhcmllcywgYnV0IG5vdCBib3RoLgogICAgbXkgJGlzX291dGRlbnRlZCA9CiAgICAgICRzZWxmLT5bX2xhc3RfbGVhZGluZ19zcGFjZV9jb3VudF9dID4gJGxlYWRpbmdfc3BhY2VfY291bnQ7CiAgICAkc2VsZi0+W19sYXN0X2xlYWRpbmdfc3BhY2VfY291bnRfXSA9ICRsZWFkaW5nX3NwYWNlX2NvdW50OwoKICAgICMgSWRlbnRpZnkgYSBoYW5naW5nIHNpZGUgY29tbWVudC4gIEhhbmdpbmcgc2lkZSBjb21tZW50cyBoYXZlIGFuIGVtcHR5CiAgICAjIGluaXRpYWwgZmllbGQuCiAgICBteSAkaXNfaGFuZ2luZ19zaWRlX2NvbW1lbnQgPQogICAgICAoICRqbWF4ID09IDEgJiYgJHJ0b2tlbnMtPlswXSBlcSAnIycgJiYgJHJmaWVsZHMtPlswXSA9fiAvXlxzKiQvICk7CgogICAgIyBVbmRvIG91dGRlbnRlZCBmbGFnIGZvciBhIGhhbmdpbmcgc2lkZSBjb21tZW50CiAgICAkaXNfb3V0ZGVudGVkID0gMCBpZiAkaXNfaGFuZ2luZ19zaWRlX2NvbW1lbnQ7CgogICAgIyBJZGVudGlmeSBhIGJsb2NrIGNvbW1lbnQuCiAgICBteSAkaXNfYmxvY2tfY29tbWVudCA9ICRqbWF4ID09IDAgJiYgc3Vic3RyKCAkcmZpZWxkcy0+WzBdLCAwLCAxICkgZXEgJyMnOwoKICAgICMgQmxvY2sgY29tbWVudCAuLiB1cGRhdGUgY291bnQKICAgIGlmICgkaXNfYmxvY2tfY29tbWVudCkgewogICAgICAgICRzZWxmLT5bX2NvbnNlY3V0aXZlX2Jsb2NrX2NvbW1lbnRzX10rKzsKICAgIH0KCiAgICAjIE5vdCBhIGJsb2NrIGNvbW1lbnQgLi4KICAgICMgRm9yZ2V0IHNpZGUgY29tbWVudCBjb2x1bW4gaWYgd2Ugc2F3IDIgb3IgbW9yZSBibG9jayBjb21tZW50cywKICAgICMgYW5kIHJlc2V0IHRoZSBjb3VudAogICAgZWxzZSB7CgogICAgICAgIGlmICggJHNlbGYtPltfY29uc2VjdXRpdmVfYmxvY2tfY29tbWVudHNfXSA+IDEgKSB7CiAgICAgICAgICAgICRzZWxmLT5mb3JnZXRfc2lkZV9jb21tZW50KCk7CiAgICAgICAgfQogICAgICAgICRzZWxmLT5bX2NvbnNlY3V0aXZlX2Jsb2NrX2NvbW1lbnRzX10gPSAwOwogICAgfQoKICAgICMgUmVzZXQgc2lkZSBjb21tZW50IGxvY2F0aW9uIGlmIHdlIGFyZSBlbnRlcmluZyBhIG5ldyBibG9jayBmcm9tIGxldmVsIDAuCiAgICAjIFRoaXMgaXMgaW50ZW5kZWQgdG8ga2VlcCB0aGVtIGZyb20gZHJpZnRpbmcgdG9vIGZhciB0byB0aGUgcmlnaHQuCiAgICBpZiAoICR0ZXJtaW5hbF9ibG9ja190eXBlICYmICRsZXZlbF9hZGogPT0gMCAmJiAkbGV2ZWxfZW5kID4gJGxldmVsICkgewogICAgICAgICRzZWxmLT5mb3JnZXRfc2lkZV9jb21tZW50KCk7CiAgICB9CgogICAgbXkgJGdyb3VwX2xldmVsID0gJHNlbGYtPltfZ3JvdXBfbGV2ZWxfXTsKCiAgICBERUJVR19WQUxJR04gJiYgZG8gewogICAgICAgIG15ICRubGluZXMgPSAkc2VsZi0+Z3JvdXBfbGluZV9jb3VudCgpOwogICAgICAgIHByaW50IFNURE9VVAoiRW50ZXJpbmcgdmFsaWduX2lucHV0OiBsaW5lcz0kbmxpbmVzIG5ldyAjZmllbGRzPSAkam1heCwgbGVhZGluZ19jb3VudD0kbGVhZGluZ19zcGFjZV9jb3VudCwgbGV2ZWxfanVtcD0kbGV2ZWxfanVtcCwgbGV2ZWw9JGxldmVsLCBncm91cF9sZXZlbD0kZ3JvdXBfbGV2ZWwsIGxldmVsX2p1bXA9JGxldmVsX2p1bXBcbiI7CiAgICB9OwoKICAgICMgVmFsaWRhdGUgY2FjaGVkIGxpbmUgaWYgbmVjZXNzYXJ5OiBJZiB3ZSBjYW4gcHJvZHVjZSBhIGNvbnRhaW5lcgogICAgIyB3aXRoIGp1c3QgMiBsaW5lcyB0b3RhbCBieSBjb21iaW5pbmcgYW4gZXhpc3RpbmcgY2FjaGVkIG9wZW5pbmcKICAgICMgdG9rZW4gd2l0aCB0aGUgY2xvc2luZyB0b2tlbiB0byBmb2xsb3csIHRoZW4gd2Ugd2lsbCBtYXJrIGJvdGgKICAgICMgY2FjaGVkIGZsYWdzIGFzIHZhbGlkLgogICAgbXkgJGNhY2hlZF9saW5lX3R5cGUgPSBnZXRfY2FjaGVkX2xpbmVfdHlwZSgpOwogICAgaWYgKCRjYWNoZWRfbGluZV90eXBlKSB7CiAgICAgICAgbXkgJGNhY2hlZF9saW5lX2ZsYWcgPSBnZXRfY2FjaGVkX2xpbmVfZmxhZygpOwogICAgICAgIGlmICgkcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFncykgewogICAgICAgICAgICBteSAkY2FjaGVkX3NlcW5vID0gZ2V0X2NhY2hlZF9zZXFubygpOwogICAgICAgICAgICBpZiAoICAgJGNhY2hlZF9zZXFubwogICAgICAgICAgICAgICAgJiYgJHNlbGYtPmdyb3VwX2xpbmVfY291bnQoKSA8PSAxCiAgICAgICAgICAgICAgICAmJiAkcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFncy0+WzJdCiAgICAgICAgICAgICAgICAmJiAkcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFncy0+WzJdID09ICRjYWNoZWRfc2Vxbm8gKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFncy0+WzNdIHx8PSAxOwogICAgICAgICAgICAgICAgc2V0X2NhY2hlZF9saW5lX3ZhbGlkKDEpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGRvIG5vdCBqb2luIGFuIG9wZW5pbmcgYmxvY2sgYnJhY2Ugd2l0aCBhbiB1bmJhbGFuY2VkIGxpbmUKICAgICAgICAjIHVubGVzcyByZXF1ZXN0ZWQgd2l0aCBhIGZsYWcgdmFsdWUgb2YgMgogICAgICAgIGlmICggICAkY2FjaGVkX2xpbmVfdHlwZSA9PSAzCiAgICAgICAgICAgICYmICEkc2VsZi0+Z3JvdXBfbGluZV9jb3VudCgpCiAgICAgICAgICAgICYmICRjYWNoZWRfbGluZV9mbGFnIDwgMgogICAgICAgICAgICAmJiAkbGV2ZWxfanVtcCAhPSAwICkKICAgICAgICB7CiAgICAgICAgICAgIHNldF9jYWNoZWRfbGluZV92YWxpZCgwKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzaG91bGRuJ3QgaGFwcGVuOgogICAgaWYgKCAkbGV2ZWwgPCAwICkgeyAkbGV2ZWwgPSAwIH0KCiAgICAjIGRvIG5vdCBhbGlnbiBjb2RlIGFjcm9zcyBpbmRlbnRhdGlvbiBsZXZlbCBjaGFuZ2VzCiAgICAjIG9yIGlmIHZlcnRpY2FsIGFsaWdubWVudCBpcyB0dXJuZWQgb2ZmIGZvciBkZWJ1Z2dpbmcKICAgIGlmICggJGxldmVsICE9ICRncm91cF9sZXZlbCB8fCAkaXNfb3V0ZGVudGVkIHx8ICEkc2VsZi0+W19yT3B0c192YWxpZ25fXSApIHsKCiAgICAgICAgIyB3ZSBhcmUgYWxsb3dlZCB0byBzaGlmdCBhIGdyb3VwIG9mIGxpbmVzIHRvIHRoZSByaWdodCBpZiBpdHMKICAgICAgICAjIGxldmVsIGlzIGdyZWF0ZXIgdGhhbiB0aGUgcHJldmlvdXMgYW5kIG5leHQgZ3JvdXAKICAgICAgICAkc2VsZi0+W19leHRyYV9pbmRlbnRfb2tfXSA9CiAgICAgICAgICAoICAgICAgJGxldmVsIDwgJGdyb3VwX2xldmVsCiAgICAgICAgICAgICAgJiYgJHNlbGYtPltfbGFzdF9sZXZlbF93cml0dGVuX10gPCAkZ3JvdXBfbGV2ZWwgKTsKCiAgICAgICAgJHNlbGYtPl9mbHVzaF9ncm91cF9saW5lcygpOwoKICAgICAgICAjIElmIHdlIGtub3cgdGhhdCB0aGlzIGxpbmUgd2lsbCBnZXQgZmx1c2hlZCBvdXQgYnkgaXRzZWxmIGJlY2F1c2UKICAgICAgICAjIG9mIGxldmVsIGNoYW5nZXMsIHdlIGNhbiBsZWF2ZSB0aGUgZXh0cmFfaW5kZW50X29rIGZsYWcgc2V0LgogICAgICAgICMgVGhhdCB3YXksIGlmIHdlIGdldCBhbiBleHRlcm5hbCBmbHVzaCBjYWxsLCB3ZSB3aWxsIHN0aWxsIGJlCiAgICAgICAgIyBhYmxlIHRvIGRvIHNvbWUgLWxwIGFsaWdubWVudCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJHNlbGYtPltfZXh0cmFfaW5kZW50X29rX10gPQogICAgICAgICAgKCAkaXNfdGVybWluYWxfc3RhdGVtZW50ICYmICRsZXZlbCA+ICRncm91cF9sZXZlbCApOwoKICAgICAgICAkZ3JvdXBfbGV2ZWwgPSAkbGV2ZWw7CiAgICAgICAgJHNlbGYtPltfZ3JvdXBfbGV2ZWxfXSA9ICRncm91cF9sZXZlbDsKCiAgICAgICAgIyB3YWl0IHVudGlsIGFmdGVyIHRoZSBhYm92ZSBmbHVzaCB0byBnZXQgdGhlIGxlYWRpbmcgc3BhY2UKICAgICAgICAjIGNvdW50IGJlY2F1c2UgaXQgbWF5IGhhdmUgYmVlbiBjaGFuZ2VkIGlmIHRoZSAtaWNwIGZsYWcgaXMgaW4KICAgICAgICAjIGVmZmVjdAogICAgICAgICRsZWFkaW5nX3NwYWNlX2NvdW50ID0gZ2V0X3NwYWNlcygkaW5kZW50YXRpb24pOwoKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIENvbGxlY3Qgb3V0ZGVudGFibGUgYmxvY2sgQ09NTUVOVFMKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIG15ICRpc19ibGFua19saW5lID0gIiI7CiAgICBpZiAoICRzZWxmLT5bX2dyb3VwX3R5cGVfXSBlcSAnQ09NTUVOVCcgKSB7CiAgICAgICAgaWYgKAogICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAkaXNfYmxvY2tfY29tbWVudAogICAgICAgICAgICAgICAgJiYgJG91dGRlbnRfbG9uZ19saW5lcwogICAgICAgICAgICAgICAgJiYgJGxlYWRpbmdfc3BhY2VfY291bnQgPT0KICAgICAgICAgICAgICAgICRzZWxmLT5bX2NvbW1lbnRfbGVhZGluZ19zcGFjZV9jb3VudF9dCiAgICAgICAgICAgICkKICAgICAgICAgICAgfHwgJGlzX2JsYW5rX2xpbmUKICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICAjIE5vdGUgdGhhdCBmb3IgYSBjb21tZW50IGdyb3VwIHdlIGFyZSBub3Qgc3RvcmluZyBhIGxpbmUKICAgICAgICAgICAgIyBidXQgcmF0aGVyIGp1c3QgdGhlIHRleHQgYW5kIGl0cyBsZW5ndGguCiAgICAgICAgICAgICRzZWxmLT5wdXNoX2dyb3VwX2xpbmUoCiAgICAgICAgICAgICAgICBbICRyZmllbGRzLT5bMF0sICRyZmllbGRfbGVuZ3Rocy0+WzBdLCAkS2VuZCBdICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRzZWxmLT5fZmx1c2hfZ3JvdXBfbGluZXMoKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJHJncm91cF9saW5lcyA9ICRzZWxmLT5bX3Jncm91cF9saW5lc19dOwogICAgaWYgKCAkYnJlYWtfYWxpZ25tZW50X2JlZm9yZSAmJiBAeyRyZ3JvdXBfbGluZXN9ICkgewogICAgICAgICRyZ3JvdXBfbGluZXMtPlstMV0tPnNldF9lbmRfZ3JvdXAoMSk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBhZGQgZHVtbXkgZmllbGRzIGZvciB0ZXJtaW5hbCB0ZXJuYXJ5CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBteSAkal90ZXJtaW5hbF9tYXRjaDsKCiAgICBpZiAoICRpc190ZXJtaW5hbF90ZXJuYXJ5ICYmIEB7JHJncm91cF9saW5lc30gKSB7CiAgICAgICAgJGpfdGVybWluYWxfbWF0Y2ggPQogICAgICAgICAgZml4X3Rlcm1pbmFsX3Rlcm5hcnkoICRyZ3JvdXBfbGluZXMtPlstMV0sICRyZmllbGRzLCAkcnRva2VucywKICAgICAgICAgICAgJHJwYXR0ZXJucywgJHJmaWVsZF9sZW5ndGhzLCAkZ3JvdXBfbGV2ZWwsICk7CiAgICAgICAgJGptYXggPSBAeyRyZmllbGRzfSAtIDE7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBhZGQgZHVtbXkgZmllbGRzIGZvciBlbHNlIHN0YXRlbWVudAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICMgTm90ZSB0aGUgdHJhaWxpbmcgc3BhY2UgYWZ0ZXIgJ2Vsc2UnIGhlcmUuIElmIHRoZXJlIHdlcmUgbm8gc3BhY2UgYmV0d2VlbgogICAgIyB0aGUgZWxzZSBhbmQgdGhlIG5leHQgJ3snIHRoZW4gd2Ugd291bGQgbm90IGJlIGFibGUgdG8gZG8gdmVydGljYWwKICAgICMgYWxpZ25tZW50IG9mIHRoZSAneycuCiAgICBpZiAoICAgJHJmaWVsZHMtPlswXSBlcSAnZWxzZSAnCiAgICAgICAgJiYgQHskcmdyb3VwX2xpbmVzfQogICAgICAgICYmICRsZXZlbF9qdW1wID09IDAgKQogICAgewoKICAgICAgICAkal90ZXJtaW5hbF9tYXRjaCA9CiAgICAgICAgICBmaXhfdGVybWluYWxfZWxzZSggJHJncm91cF9saW5lcy0+Wy0xXSwgJHJmaWVsZHMsICRydG9rZW5zLAogICAgICAgICAgICAkcnBhdHRlcm5zLCAkcmZpZWxkX2xlbmd0aHMgKTsKICAgICAgICAkam1heCA9IEB7JHJmaWVsZHN9IC0gMTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIEhhbmRsZSBzaW1wbGUgbGluZSBvZiBjb2RlIHdpdGggbm8gZmllbGRzIHRvIG1hdGNoLgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgaWYgKCAkam1heCA8PSAwICkgewogICAgICAgICRzZWxmLT5bX3plcm9fY291bnRfXSsrOwoKICAgICAgICBpZiAoIEB7JHJncm91cF9saW5lc30KICAgICAgICAgICAgJiYgIWdldF9yZWNvdmVyYWJsZV9zcGFjZXMoICRyZ3JvdXBfbGluZXMtPlswXS0+Z2V0X2luZGVudGF0aW9uKCkgKQogICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgICMgZmx1c2ggdGhlIGN1cnJlbnQgZ3JvdXAgaWYgaXQgaGFzIHNvbWUgYWxpZ25lZCBjb2x1bW5zLi4KICAgICAgICAgICAgIyBvciB3ZSBoYXZlbid0IHNlZW4gYSBjb21tZW50IGxhdGVseQogICAgICAgICAgICBpZiAoICAgJHJncm91cF9saW5lcy0+WzBdLT5nZXRfam1heCgpID4gMQogICAgICAgICAgICAgICAgfHwgJHNlbGYtPltfemVyb19jb3VudF9dID4gMyApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRzZWxmLT5fZmx1c2hfZ3JvdXBfbGluZXMoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBzdGFydCBuZXcgQ09NTUVOVCBncm91cCBpZiB0aGlzIGNvbW1lbnQgbWF5IGJlIG91dGRlbnRlZAogICAgICAgIGlmICggICAkaXNfYmxvY2tfY29tbWVudAogICAgICAgICAgICAmJiAkb3V0ZGVudF9sb25nX2xpbmVzCiAgICAgICAgICAgICYmICEkc2VsZi0+Z3JvdXBfbGluZV9jb3VudCgpICkKICAgICAgICB7CiAgICAgICAgICAgICRzZWxmLT5bX2dyb3VwX3R5cGVfXSAgICAgICAgICAgICAgICAgID0gJ0NPTU1FTlQnOwogICAgICAgICAgICAkc2VsZi0+W19jb21tZW50X2xlYWRpbmdfc3BhY2VfY291bnRfXSA9ICRsZWFkaW5nX3NwYWNlX2NvdW50OwogICAgICAgICAgICAkc2VsZi0+cHVzaF9ncm91cF9saW5lKAogICAgICAgICAgICAgICAgWyAkcmZpZWxkcy0+WzBdLCAkcmZpZWxkX2xlbmd0aHMtPlswXSwgJEtlbmQgXSApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIGp1c3Qgd3JpdGUgdGhpcyBsaW5lIGRpcmVjdGx5IGlmIG5vIGN1cnJlbnQgZ3JvdXAsIG5vIHNpZGUgY29tbWVudCwKICAgICAgICAjIGFuZCBubyBzcGFjZSByZWNvdmVyeSBpcyBuZWVkZWQuCiAgICAgICAgaWYgKCAgICEkc2VsZi0+Z3JvdXBfbGluZV9jb3VudCgpCiAgICAgICAgICAgICYmICFnZXRfcmVjb3ZlcmFibGVfc3BhY2VzKCRpbmRlbnRhdGlvbikgKQogICAgICAgIHsKCiAgICAgICAgICAgICRzZWxmLT52YWxpZ25fb3V0cHV0X3N0ZXBfQigKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBsZWFkaW5nX3NwYWNlX2NvdW50ICAgICAgID0+ICRsZWFkaW5nX3NwYWNlX2NvdW50LAogICAgICAgICAgICAgICAgICAgIGxpbmUgICAgICAgICAgICAgICAgICAgICAgPT4gJHJmaWVsZHMtPlswXSwKICAgICAgICAgICAgICAgICAgICBsaW5lX2xlbmd0aCAgICAgICAgICAgICAgID0+ICRyZmllbGRfbGVuZ3Rocy0+WzBdLAogICAgICAgICAgICAgICAgICAgIHNpZGVfY29tbWVudF9sZW5ndGggICAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBvdXRkZW50X2xvbmdfbGluZXMgICAgICAgID0+ICRvdXRkZW50X2xvbmdfbGluZXMsCiAgICAgICAgICAgICAgICAgICAgcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFncyA9PiAkcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFncywKICAgICAgICAgICAgICAgICAgICBsZXZlbCAgICAgICAgICAgICAgICAgICAgID0+ICRsZXZlbCwKICAgICAgICAgICAgICAgICAgICBLZW5kICAgICAgICAgICAgICAgICAgICAgID0+ICRLZW5kLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRzZWxmLT5bX3plcm9fY291bnRfXSA9IDA7CiAgICB9CgogICAgIyBwcm9ncmFtbWluZyBjaGVjazogKHNob3VsZG4ndCBoYXBwZW4pCiAgICAjIFRoZSBudW1iZXIgb2YgdG9rZW5zIHdoaWNoIHNlcGFyYXRlIHRoZSBmaWVsZHMgbXVzdCBhbHdheXMgYmUKICAgICMgb25lIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGZpZWxkcy4gSWYgdGhpcyBpcyBub3QgdHJ1ZSB0aGVuCiAgICAjIGFuIGVycm9yIGhhcyBiZWVuIG1hZGUgYnkgdGhlIEZvcm1hdHRlciBpbiBkZWZpbmluZyB0aGVzZQogICAgIyBxdWFudGl0aWVzLiAgU2VlIEZvcm1hdHRlci5wbS9zdWIgbWFrZV9hbGlnbm1lbnRfcGF0dGVybnMuCiAgICBpZiAoIEB7JHJmaWVsZHN9ICYmICggQHskcnRva2Vuc30gIT0gKCBAeyRyZmllbGRzfSAtIDEgKSApICkgewogICAgICAgIG15ICRudCAgPSBAeyRydG9rZW5zfTsKICAgICAgICBteSAkbmYgID0gQHskcmZpZWxkc307CiAgICAgICAgbXkgJG1zZyA9IDw8RU9NOwoiUHJvZ3JhbSBidWcgaW4gUGVybDo6VGlkeTo6VmVydGljYWxBbGlnbmVyIC0gbnVtYmVyIG9mIHRva2VucyA9ICRudCBzaG91bGQgYmUgb25lIGxlc3MgdGhhbiBudW1iZXIgb2YgZmllbGRzOiAkbmYpXG4iCkVPTQogICAgICAgICRzZWxmLT53YXJuaW5nKCRtc2cpOwogICAgICAgICRzZWxmLT5yZXBvcnRfZGVmaW5pdGVfYnVnKCk7CgogICAgICAgICMgVE9ETzogdGhpcyBoYXMgbmV2ZXIgaGFwcGVuZWQsIGJ1dCB3ZSBzaG91bGQgcHJvYmFibHkgY2FsbCBEaWUgaGVyZS4KICAgICAgICAjIE5lZWRzIHNvbWUgdGVzdGluZwogICAgICAgICMgUGVybDo6VGlkeTo6RGllKCRtc2cpOwogICAgfQogICAgbXkgJG1heGltdW1fbGluZV9sZW5ndGhfZm9yX2xldmVsID0KICAgICAgJHNlbGYtPm1heGltdW1fbGluZV9sZW5ndGhfZm9yX2xldmVsKCRsZXZlbCk7CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBJdCBzaW1wbGlmaWVzIHRoaW5ncyB0byBjcmVhdGUgYSB6ZXJvIGxlbmd0aCBzaWRlIGNvbW1lbnQKICAgICMgaWYgbm9uZSBleGlzdHMuCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAkc2VsZi0+bWFrZV9zaWRlX2NvbW1lbnQoICRydG9rZW5zLCAkcmZpZWxkcywgJHJwYXR0ZXJucywgJHJmaWVsZF9sZW5ndGhzICk7CiAgICAkam1heCA9IEB7JHJmaWVsZHN9IC0gMTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIGNyZWF0ZSBhbiBvYmplY3QgdG8gaG9sZCB0aGlzIGxpbmUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIG15ICRuZXdfbGluZSA9IFBlcmw6OlRpZHk6OlZlcnRpY2FsQWxpZ25lcjo6TGluZS0+bmV3KAogICAgICAgIHsKICAgICAgICAgICAgam1heCAgICAgICAgICAgICAgICAgICAgICA9PiAkam1heCwKICAgICAgICAgICAgcnRva2VucyAgICAgICAgICAgICAgICAgICA9PiAkcnRva2VucywKICAgICAgICAgICAgcmZpZWxkcyAgICAgICAgICAgICAgICAgICA9PiAkcmZpZWxkcywKICAgICAgICAgICAgcnBhdHRlcm5zICAgICAgICAgICAgICAgICA9PiAkcnBhdHRlcm5zLAogICAgICAgICAgICByZmllbGRfbGVuZ3RocyAgICAgICAgICAgID0+ICRyZmllbGRfbGVuZ3RocywKICAgICAgICAgICAgaW5kZW50YXRpb24gICAgICAgICAgICAgICA9PiAkaW5kZW50YXRpb24sCiAgICAgICAgICAgIGxlYWRpbmdfc3BhY2VfY291bnQgICAgICAgPT4gJGxlYWRpbmdfc3BhY2VfY291bnQsCiAgICAgICAgICAgIG91dGRlbnRfbG9uZ19saW5lcyAgICAgICAgPT4gJG91dGRlbnRfbG9uZ19saW5lcywKICAgICAgICAgICAgbGlzdF9zZXFubyAgICAgICAgICAgICAgICA9PiAkbGlzdF9zZXFubywKICAgICAgICAgICAgbGlzdF90eXBlICAgICAgICAgICAgICAgICA9PiAiIiwKICAgICAgICAgICAgaXNfaGFuZ2luZ19zaWRlX2NvbW1lbnQgICA9PiAkaXNfaGFuZ2luZ19zaWRlX2NvbW1lbnQsCiAgICAgICAgICAgIG1heGltdW1fbGluZV9sZW5ndGggICAgICAgPT4gJG1heGltdW1fbGluZV9sZW5ndGhfZm9yX2xldmVsLAogICAgICAgICAgICBydmVydGljYWxfdGlnaHRuZXNzX2ZsYWdzID0+ICRydmVydGljYWxfdGlnaHRuZXNzX2ZsYWdzLAogICAgICAgICAgICBpc190ZXJtaW5hbF90ZXJuYXJ5ICAgICAgID0+ICRpc190ZXJtaW5hbF90ZXJuYXJ5LAogICAgICAgICAgICBqX3Rlcm1pbmFsX21hdGNoICAgICAgICAgID0+ICRqX3Rlcm1pbmFsX21hdGNoLAogICAgICAgICAgICBlbmRfZ3JvdXAgICAgICAgICAgICAgICAgID0+ICRicmVha19hbGlnbm1lbnRfYWZ0ZXIsCiAgICAgICAgICAgIEtlbmQgICAgICAgICAgICAgICAgICAgICAgPT4gJEtlbmQsCiAgICAgICAgICAgIGNpX2xldmVsICAgICAgICAgICAgICAgICAgPT4gJGNpX2xldmVsLAogICAgICAgICAgICBpbWF4X3BhaXIgICAgICAgICAgICAgICAgID0+IC0xLAogICAgICAgIH0KICAgICk7CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBEZWNpZGUgaWYgdGhpcyBpcyBhIHNpbXBsZSBsaXN0IG9mIGl0ZW1zLgogICAgIyBXZSB1c2UgdGhpcyB0byBiZSBsZXNzIHJlc3RyaWN0aXZlIGluIGRlY2lkaW5nIHdoYXQgdG8gYWxpZ24uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBkZWNpZGVfaWZfbGlzdCgkbmV3X2xpbmUpIGlmICgkbGlzdF9zZXFubyk7CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyBBcHBlbmQgdGhpcyBsaW5lIHRvIHRoZSBjdXJyZW50IGdyb3VwIChvciBzdGFydCBuZXcgZ3JvdXApCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgJHNlbGYtPnB1c2hfZ3JvdXBfbGluZSgkbmV3X2xpbmUpOwoKICAgICMgb3V0cHV0IHRoaXMgZ3JvdXAgaWYgaXQgZW5kcyBpbiBhIHRlcm1pbmFsIGVsc2Ugb3IgdGVybmFyeSBsaW5lCiAgICBpZiAoIGRlZmluZWQoJGpfdGVybWluYWxfbWF0Y2gpICkgewogICAgICAgICRzZWxmLT5fZmx1c2hfZ3JvdXBfbGluZXMoKTsKICAgIH0KCiAgICAjIEZvcmNlIGJyZWFrIGFmdGVyIGp1bXAgdG8gbG93ZXIgbGV2ZWwKICAgIGlmICggJGxldmVsX2p1bXAgPCAwICkgewogICAgICAgICRzZWxmLT5fZmx1c2hfZ3JvdXBfbGluZXMoKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIFNvbWUgb2xkIGRlYnVnZ2luZyBzdHVmZgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgREVCVUdfVkFMSUdOICYmIGRvIHsKICAgICAgICBwcmludCBTVERPVVQgImV4aXRpbmcgdmFsaWduX2lucHV0IGZpZWxkczoiOwogICAgICAgIGR1bXBfYXJyYXkoIEB7JHJmaWVsZHN9ICk7CiAgICAgICAgcHJpbnQgU1RET1VUICJleGl0aW5nIHZhbGlnbl9pbnB1dCB0b2tlbnM6IjsKICAgICAgICBkdW1wX2FycmF5KCBAeyRydG9rZW5zfSApOwogICAgICAgIHByaW50IFNURE9VVCAiZXhpdGluZyB2YWxpZ25faW5wdXQgcGF0dGVybnM6IjsKICAgICAgICBkdW1wX2FycmF5KCBAeyRycGF0dGVybnN9ICk7CiAgICB9OwoKICAgIHJldHVybjsKfQoKc3ViIGpvaW5faGFuZ2luZ19jb21tZW50IHsKCiAgICAjIEFkZCBkdW1teSBmaWVsZHMgdG8gYSBoYW5naW5nIHNpZGUgY29tbWVudCB0byBtYWtlIGl0IGxvb2sKICAgICMgbGlrZSB0aGUgZmlyc3QgbGluZSBpbiBpdHMgcG90ZW50aWFsIGdyb3VwLiAgVGhpcyBzaW1wbGlmaWVzCiAgICAjIHRoZSBjb2RpbmcuCiAgICBteSAoICRuZXdfbGluZSwgJG9sZF9saW5lICkgPSBAXzsKCiAgICBteSAkam1heCA9ICRuZXdfbGluZS0+Z2V0X2ptYXgoKTsKCiAgICAjIG11c3QgYmUgMiBmaWVsZHMKICAgIHJldHVybiAwIHVubGVzcyAkam1heCA9PSAxOwogICAgbXkgJHJ0b2tlbnMgPSAkbmV3X2xpbmUtPmdldF9ydG9rZW5zKCk7CgogICAgIyB0aGUgc2Vjb25kIGZpZWxkIG11c3QgYmUgYSBjb21tZW50CiAgICByZXR1cm4gMCB1bmxlc3MgJHJ0b2tlbnMtPlswXSBlcSAnIyc7CiAgICBteSAkcmZpZWxkcyA9ICRuZXdfbGluZS0+Z2V0X3JmaWVsZHMoKTsKCiAgICAjIHRoZSBmaXJzdCBmaWVsZCBtdXN0IGJlIGVtcHR5CiAgICByZXR1cm4gMCB1bmxlc3MgJHJmaWVsZHMtPlswXSA9fiAvXlxzKiQvOwoKICAgICMgdGhlIGN1cnJlbnQgbGluZSBtdXN0IGhhdmUgZmV3ZXIgZmllbGRzCiAgICBteSAkbWF4aW11bV9maWVsZF9pbmRleCA9ICRvbGRfbGluZS0+Z2V0X2ptYXgoKTsKICAgIHJldHVybiAwCiAgICAgIHVubGVzcyAkbWF4aW11bV9maWVsZF9pbmRleCA+ICRqbWF4OwoKICAgICMgbG9va3Mgb2suLgogICAgbXkgJHJwYXR0ZXJucyAgICAgID0gJG5ld19saW5lLT5nZXRfcnBhdHRlcm5zKCk7CiAgICBteSAkcmZpZWxkX2xlbmd0aHMgPSAkbmV3X2xpbmUtPmdldF9yZmllbGRfbGVuZ3RocygpOwoKICAgICRuZXdfbGluZS0+c2V0X2lzX2hhbmdpbmdfc2lkZV9jb21tZW50KDEpOwogICAgJGptYXggPSAkbWF4aW11bV9maWVsZF9pbmRleDsKICAgICRuZXdfbGluZS0+c2V0X2ptYXgoJGptYXgpOwogICAgJHJmaWVsZHMtPlskam1heF0gICAgICAgICA9ICRyZmllbGRzLT5bMV07CiAgICAkcmZpZWxkX2xlbmd0aHMtPlskam1heF0gID0gJHJmaWVsZF9sZW5ndGhzLT5bMV07CiAgICAkcnRva2Vucy0+WyAkam1heCAtIDEgXSAgID0gJHJ0b2tlbnMtPlswXTsKICAgICRycGF0dGVybnMtPlsgJGptYXggLSAxIF0gPSAkcnBhdHRlcm5zLT5bMF07CiAgICBmb3JlYWNoIG15ICRqICggMSAuLiAkam1heCAtIDEgKSB7CiAgICAgICAgJHJmaWVsZHMtPlskal0gICAgICAgICA9ICcnOwogICAgICAgICRyZmllbGRfbGVuZ3Rocy0+WyRqXSAgPSAwOwogICAgICAgICRydG9rZW5zLT5bICRqIC0gMSBdICAgPSAiIjsKICAgICAgICAkcnBhdHRlcm5zLT5bICRqIC0gMSBdID0gIiI7CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3ViIG1ha2Vfc2lkZV9jb21tZW50IHsKCiAgICAjIGNyZWF0ZSBhbiBlbXB0eSBzaWRlIGNvbW1lbnQgaWYgbm9uZSBleGlzdHMKCiAgICBteSAoICRzZWxmLCAkcnRva2VucywgJHJmaWVsZHMsICRycGF0dGVybnMsICRyZmllbGRfbGVuZ3RocyApID0gQF87CgogICAgbXkgJGptYXggPSBAeyRyZmllbGRzfSAtIDE7CgogICAgIyBpZiBsaW5lIGRvZXMgbm90IGhhdmUgYSBzaWRlIGNvbW1lbnQuLi4KICAgIGlmICggKCAkam1heCA9PSAwICkgfHwgKCAkcnRva2Vucy0+WyAkam1heCAtIDEgXSBuZSAnIycgKSApIHsKICAgICAgICAkam1heCArPSAxOwogICAgICAgICRydG9rZW5zLT5bICRqbWF4IC0gMSBdICA9ICcjJzsKICAgICAgICAkcmZpZWxkcy0+WyRqbWF4XSAgICAgICAgPSAnJzsKICAgICAgICAkcmZpZWxkX2xlbmd0aHMtPlskam1heF0gPSAwOwogICAgICAgICRycGF0dGVybnMtPlskam1heF0gICAgICA9ICcjJzsKICAgIH0KICAgIHJldHVybjsKfQoKeyAgICAjIyBjbG9zdXJlIGZvciBzdWIgZGVjaWRlX2lmX2xpc3QKCiAgICBteSAlaXNfY29tbWFfdG9rZW47CgogICAgQkVHSU4gewoKICAgICAgICBteSBAcSA9IHF3KCA9PiApOwogICAgICAgIHB1c2ggQHEsICcsJzsKICAgICAgICBAaXNfY29tbWFfdG9rZW57QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKICAgIH0KCiAgICBzdWIgZGVjaWRlX2lmX2xpc3QgewoKICAgICAgICBteSAkbGluZSA9IHNoaWZ0OwoKICAgICAgICAjIEEgbGlzdCB3aWxsIGJlIHRha2VuIHRvIGJlIGEgbGluZSB3aXRoIGEgZm9yY2VkIGJyZWFrIGluIHdoaWNoIGFsbAogICAgICAgICMgb2YgdGhlIGZpZWxkIHNlcGFyYXRvcnMgYXJlIGNvbW1hcyBvciBjb21tYS1hcnJvd3MgKGV4Y2VwdCBmb3IgdGhlCiAgICAgICAgIyB0cmFpbGluZyAjKQoKICAgICAgICBteSAkcnRva2VucyAgICA9ICRsaW5lLT5nZXRfcnRva2VucygpOwogICAgICAgIG15ICR0ZXN0X3Rva2VuID0gJHJ0b2tlbnMtPlswXTsKICAgICAgICBteSAoICRyYXdfdG9rLCAkbGV2LCAkdGFnLCAkdG9rX2NvdW50ICkgPQogICAgICAgICAgZGVjb2RlX2FsaWdubWVudF90b2tlbigkdGVzdF90b2tlbik7CiAgICAgICAgaWYgKCAkaXNfY29tbWFfdG9rZW57JHJhd190b2t9ICkgewogICAgICAgICAgICBteSAkbGlzdF90eXBlID0gJHRlc3RfdG9rZW47CiAgICAgICAgICAgIG15ICRqbWF4ICAgICAgPSAkbGluZS0+Z2V0X2ptYXgoKTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCAxIC4uICRqbWF4IC0gMiApIHsKICAgICAgICAgICAgICAgICggJHJhd190b2ssICRsZXYsICR0YWcsICR0b2tfY291bnQgKSA9CiAgICAgICAgICAgICAgICAgIGRlY29kZV9hbGlnbm1lbnRfdG9rZW4oICRydG9rZW5zLT5bJF9dICk7CiAgICAgICAgICAgICAgICBpZiAoICEkaXNfY29tbWFfdG9rZW57JHJhd190b2t9ICkgewogICAgICAgICAgICAgICAgICAgICRsaXN0X3R5cGUgPSAiIjsKICAgICAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRsaW5lLT5zZXRfbGlzdF90eXBlKCRsaXN0X3R5cGUpOwogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9Cn0KCnN1YiBmaXhfdGVybWluYWxfdGVybmFyeSB7CgogICAgIyBBZGQgZW1wdHkgZmllbGRzIGFzIG5lY2Vzc2FyeSB0byBhbGlnbiBhIHRlcm5hcnkgdGVybQogICAgIyBsaWtlIHRoaXM6CiAgICAjCiAgICAjICBteSAkbGVhcHllYXIgPQogICAgIyAgICAgICR5ZWFyICUgNCAgID8gMAogICAgIyAgICA6ICR5ZWFyICUgMTAwID8gMQogICAgIyAgICA6ICR5ZWFyICUgNDAwID8gMAogICAgIyAgICA6ICAgICAgICAgICAgICAgMTsKICAgICMKICAgICMgcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIHRlcm1pbmFsIHF1ZXN0aW9uIHRva2VuLCBpZiBhbnkKCiAgICBteSAoICRvbGRfbGluZSwgJHJmaWVsZHMsICRydG9rZW5zLCAkcnBhdHRlcm5zLCAkcmZpZWxkX2xlbmd0aHMsCiAgICAgICAgJGdyb3VwX2xldmVsICkKICAgICAgPSBAXzsKCiAgICByZXR1cm4gdW5sZXNzICgkb2xkX2xpbmUpOwogICAgdXNlIGNvbnN0YW50IEVYUExBSU5fVEVSTkFSWSA9PiAwOwoKICAgIG15ICRqbWF4ICAgICAgICA9IEB7JHJmaWVsZHN9IC0gMTsKICAgIG15ICRyZmllbGRzX29sZCA9ICRvbGRfbGluZS0+Z2V0X3JmaWVsZHMoKTsKCiAgICBteSAkcnBhdHRlcm5zX29sZCAgICAgICA9ICRvbGRfbGluZS0+Z2V0X3JwYXR0ZXJucygpOwogICAgbXkgJHJ0b2tlbnNfb2xkICAgICAgICAgPSAkb2xkX2xpbmUtPmdldF9ydG9rZW5zKCk7CiAgICBteSAkbWF4aW11bV9maWVsZF9pbmRleCA9ICRvbGRfbGluZS0+Z2V0X2ptYXgoKTsKCiAgICAjIGxvb2sgZm9yIHRoZSBxdWVzdGlvbiBtYXJrIGFmdGVyIHRoZSA6CiAgICBteSAoJGpxdWVzdGlvbik7CiAgICBteSAkZGVwdGhfcXVlc3Rpb247CiAgICBteSAkcGFkICAgICAgICA9ICIiOwogICAgbXkgJHBhZF9sZW5ndGggPSAwOwogICAgZm9yZWFjaCBteSAkaiAoIDAgLi4gJG1heGltdW1fZmllbGRfaW5kZXggLSAxICkgewogICAgICAgIG15ICR0b2sgPSAkcnRva2Vuc19vbGQtPlskal07CiAgICAgICAgbXkgKCAkcmF3X3RvaywgJGxldiwgJHRhZywgJHRva19jb3VudCApID0gZGVjb2RlX2FsaWdubWVudF90b2tlbigkdG9rKTsKICAgICAgICBpZiAoICRyYXdfdG9rIGVxICc/JyApIHsKICAgICAgICAgICAgJGRlcHRoX3F1ZXN0aW9uID0gJGxldjsKCiAgICAgICAgICAgICMgZGVwdGggbXVzdCBiZSBjb3JyZWN0CiAgICAgICAgICAgIG5leHQgdW5sZXNzICggJGRlcHRoX3F1ZXN0aW9uIGVxICRncm91cF9sZXZlbCApOwoKICAgICAgICAgICAgJGpxdWVzdGlvbiA9ICRqOwogICAgICAgICAgICBpZiAoICRyZmllbGRzX29sZC0+WyAkaiArIDEgXSA9fiAvXihcP1xzKikvICkgewogICAgICAgICAgICAgICAgJHBhZF9sZW5ndGggPSBsZW5ndGgoJDEpOwogICAgICAgICAgICAgICAgJHBhZCAgICAgICAgPSAiICIgeCAkcGFkX2xlbmd0aDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybjsgICAgIyBzaG91bGRuJ3QgaGFwcGVuCiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGFzdDsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gdW5sZXNzICggZGVmaW5lZCgkanF1ZXN0aW9uKSApOyAgICAjIHNob3VsZG4ndCBoYXBwZW4KCiAgICAjIE5vdyBzcGxpY2UgdGhlIHRva2VucyBhbmQgcGF0dGVybnMgb2YgdGhlIHByZXZpb3VzIGxpbmUKICAgICMgaW50byB0aGUgZWxzZSBsaW5lIHRvIGluc3VyZSBhIG1hdGNoLiAgQWRkIGVtcHR5IGZpZWxkcwogICAgIyBhcyBuZWNlc3NhcnkuCiAgICBteSAkamFkZCA9ICRqcXVlc3Rpb247CgogICAgIyBXb3JrIG9uIGNvcGllcyBvZiB0aGUgYWN0dWFsIGFycmF5cyBpbiBjYXNlIHdlIGhhdmUKICAgICMgdG8gcmV0dXJuIGR1ZSB0byBhbiBlcnJvcgogICAgbXkgQGZpZWxkcyAgICAgICAgPSBAeyRyZmllbGRzfTsKICAgIG15IEBwYXR0ZXJucyAgICAgID0gQHskcnBhdHRlcm5zfTsKICAgIG15IEB0b2tlbnMgICAgICAgID0gQHskcnRva2Vuc307CiAgICBteSBAZmllbGRfbGVuZ3RocyA9IEB7JHJmaWVsZF9sZW5ndGhzfTsKCiAgICBFWFBMQUlOX1RFUk5BUlkgJiYgZG8gewogICAgICAgIGxvY2FsICQiID0gJz48JzsKICAgICAgICBwcmludCBTVERPVVQgIkNVUlJFTlQgRklFTERTPTxAeyRyZmllbGRzX29sZH0+XG4iOwogICAgICAgIHByaW50IFNURE9VVCAiQ1VSUkVOVCBUT0tFTlM9PEB7JHJ0b2tlbnNfb2xkfT5cbiI7CiAgICAgICAgcHJpbnQgU1RET1VUICJDVVJSRU5UIFBBVFRFUk5TPTxAeyRycGF0dGVybnNfb2xkfT5cbiI7CiAgICAgICAgcHJpbnQgU1RET1VUICJVTk1PRElGSUVEIEZJRUxEUz08QHskcmZpZWxkc30+XG4iOwogICAgICAgIHByaW50IFNURE9VVCAiVU5NT0RJRklFRCBUT0tFTlM9PEB7JHJ0b2tlbnN9PlxuIjsKICAgICAgICBwcmludCBTVERPVVQgIlVOTU9ESUZJRUQgUEFUVEVSTlM9PEB7JHJwYXR0ZXJuc30+XG4iOwogICAgfTsKCiAgICAjIGhhbmRsZSBjYXNlcyBvZiBsZWFkaW5nIGNvbG9uIG9uIHRoaXMgbGluZQogICAgaWYgKCAkZmllbGRzWzBdID1+IC9eKDpccyopKC4qKSQvICkgewoKICAgICAgICBteSAoICRjb2xvbiwgJHRoZXJlc3QgKSA9ICggJDEsICQyICk7CgogICAgICAgICMgSGFuZGxlIHN1Yi1jYXNlIG9mIGZpcnN0IGZpZWxkIHdpdGggbGVhZGluZyBjb2xvbiBwbHVzIGFkZGl0aW9uYWwgY29kZQogICAgICAgICMgVGhpcyBpcyB0aGUgdXN1YWwgc2l0dWF0aW9uIGFzIGF0IHRoZSAnMScgYmVsb3c6CiAgICAgICAgIyAgLi4uCiAgICAgICAgIyAgOiAkeWVhciAlIDQwMCA/IDAKICAgICAgICAjICA6ICAgICAgICAgICAgICAgMTsKICAgICAgICBpZiAoJHRoZXJlc3QpIHsKCiAgICAgICAgICAgICMgU3BsaXQgdGhlIGZpcnN0IGZpZWxkIGFmdGVyIHRoZSBsZWFkaW5nIGNvbG9uIGFuZCBpbnNlcnQgcGFkZGluZy4KICAgICAgICAgICAgIyBOb3RlIHRoYXQgdGhpcyBwYWRkaW5nIHdpbGwgcmVtYWluIGV2ZW4gaWYgdGhlIHRlcm1pbmFsIHZhbHVlIGdvZXMKICAgICAgICAgICAgIyBvdXQgb24gYSBzZXBhcmF0ZSBsaW5lLiAgVGhpcyBkb2VzIG5vdCBzZWVtIHRvIGxvb2sgdG8gYmFkLCBzbyBubwogICAgICAgICAgICAjIG1lY2hhbmlzbSBoYXMgYmVlbiBpbmNsdWRlZCB0byB1bmRvIGl0LgogICAgICAgICAgICBteSAkZmllbGQxICAgICAgICA9IHNoaWZ0IEBmaWVsZHM7CiAgICAgICAgICAgIG15ICRmaWVsZF9sZW5ndGgxID0gc2hpZnQgQGZpZWxkX2xlbmd0aHM7CiAgICAgICAgICAgIG15ICRsZW5fY29sb24gICAgID0gbGVuZ3RoKCRjb2xvbik7CiAgICAgICAgICAgIHVuc2hpZnQgQGZpZWxkcywgKCAkY29sb24sICRwYWQgLiAkdGhlcmVzdCApOwogICAgICAgICAgICB1bnNoaWZ0IEBmaWVsZF9sZW5ndGhzLAogICAgICAgICAgICAgICggJGxlbl9jb2xvbiwgJHBhZF9sZW5ndGggKyAkZmllbGRfbGVuZ3RoMSAtICRsZW5fY29sb24gKTsKCiAgICAgICAgICAgICMgY2hhbmdlIHRoZSBsZWFkaW5nIHBhdHRlcm4gZnJvbSA6IHRvID8KICAgICAgICAgICAgcmV0dXJuIHVubGVzcyAoICRwYXR0ZXJuc1swXSA9fiBzL15cOi8/LyApOwoKICAgICAgICAgICAgIyBpbnN0YWxsIGxlYWRpbmcgdG9rZW5zIGFuZCBwYXR0ZXJucyBvZiBleGlzdGluZyBsaW5lCiAgICAgICAgICAgIHVuc2hpZnQoIEB0b2tlbnMsICAgQHskcnRva2Vuc19vbGR9WyAwIC4uICRqcXVlc3Rpb24gXSApOwogICAgICAgICAgICB1bnNoaWZ0KCBAcGF0dGVybnMsIEB7JHJwYXR0ZXJuc19vbGR9WyAwIC4uICRqcXVlc3Rpb24gXSApOwoKICAgICAgICAgICAgIyBpbnNlcnQgYXBwcm9wcmlhdGUgbnVtYmVyIG9mIGVtcHR5IGZpZWxkcwogICAgICAgICAgICBzcGxpY2UoIEBmaWVsZHMsICAgICAgICAxLCAwLCAoJycpIHggJGphZGQgKSBpZiAkamFkZDsKICAgICAgICAgICAgc3BsaWNlKCBAZmllbGRfbGVuZ3RocywgMSwgMCwgKDApIHggJGphZGQgKSAgaWYgJGphZGQ7CiAgICAgICAgfQoKICAgICAgICAjIGhhbmRsZSBzdWItY2FzZSBvZiBmaXJzdCBmaWVsZCBqdXN0IGVxdWFsIHRvIGxlYWRpbmcgY29sb24uCiAgICAgICAgIyBUaGlzIGNhbiBoYXBwZW4gZm9yIGV4YW1wbGUgaW4gdGhlIGV4YW1wbGUgYmVsb3cgd2hlcmUKICAgICAgICAjIHRoZSBsZWFkaW5nICcoJyB3b3VsZCBjcmVhdGUgYSBuZXcgYWxpZ25tZW50IHRva2VuCiAgICAgICAgIyA6ICggJG5hbWUgPX4gL1tdfV0kLyApID8gKCAkbW5hbWUgPSAkbmFtZSApCiAgICAgICAgIyA6ICAgICAgICAgICAgICAgICAgICAgICAgKCAkbW5hbWUgPSAkbmFtZSAuICctPicgKTsKICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgIHJldHVybiB1bmxlc3MgKCAkam1heCA+IDAgJiYgJHRva2Vuc1swXSBuZSAnIycgKTsgIyBzaG91bGRuJ3QgaGFwcGVuCgogICAgICAgICAgICAjIHByZXBlbmQgYSBsZWFkaW5nID8gb250byB0aGUgc2Vjb25kIHBhdHRlcm4KICAgICAgICAgICAgJHBhdHRlcm5zWzFdID0gIj9iIiAuICRwYXR0ZXJuc1sxXTsKCiAgICAgICAgICAgICMgcGFkIHRoZSBzZWNvbmQgZmllbGQKICAgICAgICAgICAgJGZpZWxkc1sxXSAgICAgICAgPSAkcGFkIC4gJGZpZWxkc1sxXTsKICAgICAgICAgICAgJGZpZWxkX2xlbmd0aHNbMV0gPSAkcGFkX2xlbmd0aCArICRmaWVsZF9sZW5ndGhzWzFdOwoKICAgICAgICAgICAgIyBpbnN0YWxsIGxlYWRpbmcgdG9rZW5zIGFuZCBwYXR0ZXJucyBvZiBleGlzdGluZyBsaW5lLCByZXBsYWNpbmcKICAgICAgICAgICAgIyBsZWFkaW5nIHRva2VuIGFuZCBpbnNlcnRpbmcgYXBwcm9wcmlhdGUgbnVtYmVyIG9mIGVtcHR5IGZpZWxkcwogICAgICAgICAgICBzcGxpY2UoIEB0b2tlbnMsICAgMCwgMSwgQHskcnRva2Vuc19vbGR9WyAwIC4uICRqcXVlc3Rpb24gXSApOwogICAgICAgICAgICBzcGxpY2UoIEBwYXR0ZXJucywgMSwgMCwgQHskcnBhdHRlcm5zX29sZH1bIDEgLi4gJGpxdWVzdGlvbiBdICk7CiAgICAgICAgICAgIHNwbGljZSggQGZpZWxkcywgICAgICAgIDEsIDAsICgnJykgeCAkamFkZCApIGlmICRqYWRkOwogICAgICAgICAgICBzcGxpY2UoIEBmaWVsZF9sZW5ndGhzLCAxLCAwLCAoMCkgeCAkamFkZCApICBpZiAkamFkZDsKICAgICAgICB9CiAgICB9CgogICAgIyBIYW5kbGUgY2FzZSBvZiBubyBsZWFkaW5nIGNvbG9uIG9uIHRoaXMgbGluZS4gIFRoaXMgd2lsbAogICAgIyBiZSB0aGUgY2FzZSB3aGVuIC13YmE9JzonIGlzIHVzZWQuICBGb3IgZXhhbXBsZSwKICAgICMgICR5ZWFyICUgNDAwID8gMCA6CiAgICAjICAgICAgICAgICAgICAgIDE7CiAgICBlbHNlIHsKCiAgICAgICAgIyBpbnN0YWxsIGxlYWRpbmcgdG9rZW5zIGFuZCBwYXR0ZXJucyBvZiBleGlzdGluZyBsaW5lCiAgICAgICAgJHBhdHRlcm5zWzBdID0gJz8nIC4gJ2InIC4gJHBhdHRlcm5zWzBdOwogICAgICAgIHVuc2hpZnQoIEB0b2tlbnMsICAgQHskcnRva2Vuc19vbGR9WyAwIC4uICRqcXVlc3Rpb24gXSApOwogICAgICAgIHVuc2hpZnQoIEBwYXR0ZXJucywgQHskcnBhdHRlcm5zX29sZH1bIDAgLi4gJGpxdWVzdGlvbiBdICk7CgogICAgICAgICMgaW5zZXJ0IGFwcHJvcHJpYXRlIG51bWJlciBvZiBlbXB0eSBmaWVsZHMKICAgICAgICAkamFkZCAgICAgICAgICAgICA9ICRqcXVlc3Rpb24gKyAxOwogICAgICAgICRmaWVsZHNbMF0gICAgICAgID0gJHBhZCAuICRmaWVsZHNbMF07CiAgICAgICAgJGZpZWxkX2xlbmd0aHNbMF0gPSAkcGFkX2xlbmd0aCArICRmaWVsZF9sZW5ndGhzWzBdOwogICAgICAgIHNwbGljZSggQGZpZWxkcywgICAgICAgIDAsIDAsICgnJykgeCAkamFkZCApIGlmICRqYWRkOwogICAgICAgIHNwbGljZSggQGZpZWxkX2xlbmd0aHMsIDAsIDAsICgwKSB4ICRqYWRkICkgIGlmICRqYWRkOwogICAgfQoKICAgIEVYUExBSU5fVEVSTkFSWSAmJiBkbyB7CiAgICAgICAgbG9jYWwgJCIgPSAnPjwnOwogICAgICAgIHByaW50IFNURE9VVCAiTU9ESUZJRUQgVE9LRU5TPTxAdG9rZW5zPlxuIjsKICAgICAgICBwcmludCBTVERPVVQgIk1PRElGSUVEIFBBVFRFUk5TPTxAcGF0dGVybnM+XG4iOwogICAgICAgIHByaW50IFNURE9VVCAiTU9ESUZJRUQgRklFTERTPTxAZmllbGRzPlxuIjsKICAgIH07CgogICAgIyBhbGwgb2sgLi4gdXBkYXRlIHRoZSBhcnJheXMKICAgIEB7JHJmaWVsZHN9ICAgICAgICA9IEBmaWVsZHM7CiAgICBAeyRydG9rZW5zfSAgICAgICAgPSBAdG9rZW5zOwogICAgQHskcnBhdHRlcm5zfSAgICAgID0gQHBhdHRlcm5zOwogICAgQHskcmZpZWxkX2xlbmd0aHN9ID0gQGZpZWxkX2xlbmd0aHM7CgogICAgIyBmb3JjZSBhIGZsdXNoIGFmdGVyIHRoaXMgbGluZQogICAgcmV0dXJuICRqcXVlc3Rpb247Cn0KCnN1YiBmaXhfdGVybWluYWxfZWxzZSB7CgogICAgIyBBZGQgZW1wdHkgZmllbGRzIGFzIG5lY2Vzc2FyeSB0byBhbGlnbiBhIGJhbGFuY2VkIHRlcm1pbmFsCiAgICAjIGVsc2UgYmxvY2sgdG8gYSBwcmV2aW91cyBpZi9lbHNpZi91bmxlc3MgYmxvY2ssCiAgICAjIGxpa2UgdGhpczoKICAgICMKICAgICMgIGlmICAgKCAxIHx8ICR4ICkgeyBwcmludCAib2sgMTNcbiI7IH0KICAgICMgIGVsc2UgICAgICAgICAgICAgeyBwcmludCAibm90IG9rIDEzXG4iOyB9CiAgICAjCiAgICAjIHJldHVybnMgYSBwb3NpdGl2ZSB2YWx1ZSBpZiB0aGUgZWxzZSBibG9jayBzaG91bGQgYmUgaW5kZW50ZWQKICAgICMKICAgIG15ICggJG9sZF9saW5lLCAkcmZpZWxkcywgJHJ0b2tlbnMsICRycGF0dGVybnMsICRyZmllbGRfbGVuZ3RocyApID0gQF87CgogICAgcmV0dXJuIHVubGVzcyAoJG9sZF9saW5lKTsKICAgIG15ICRqbWF4ID0gQHskcmZpZWxkc30gLSAxOwogICAgcmV0dXJuIHVubGVzcyAoICRqbWF4ID4gMCApOwoKICAgICMgY2hlY2sgZm9yIGJhbGFuY2VkIGVsc2UgYmxvY2sgZm9sbG93aW5nIGlmL2Vsc2lmL3VubGVzcwogICAgbXkgJHJmaWVsZHNfb2xkID0gJG9sZF9saW5lLT5nZXRfcmZpZWxkcygpOwoKICAgICMgVEJEOiBhZGQgaGFuZGxpbmcgZm9yICdjYXNlJwogICAgcmV0dXJuIHVubGVzcyAoICRyZmllbGRzX29sZC0+WzBdID1+IC9eKGlmfGVsc2lmfHVubGVzcylccyokLyApOwoKICAgICMgbG9vayBmb3IgdGhlIG9wZW5pbmcgYnJhY2UgYWZ0ZXIgdGhlIGVsc2UsIGFuZCBleHRyYWN0IHRoZSBkZXB0aAogICAgbXkgJHRva19icmFjZSA9ICRydG9rZW5zLT5bMF07CiAgICBteSAkZGVwdGhfYnJhY2U7CiAgICBpZiAoICR0b2tfYnJhY2UgPX4gL15ceyhcZCspLyApIHsgJGRlcHRoX2JyYWNlID0gJDE7IH0KCiAgICAjIHByb2JhYmx5OiAgImVsc2UgIyBzaWRlX2NvbW1lbnQiCiAgICBlbHNlIHsgcmV0dXJuIH0KCiAgICBteSAkcnBhdHRlcm5zX29sZCAgICAgICA9ICRvbGRfbGluZS0+Z2V0X3JwYXR0ZXJucygpOwogICAgbXkgJHJ0b2tlbnNfb2xkICAgICAgICAgPSAkb2xkX2xpbmUtPmdldF9ydG9rZW5zKCk7CiAgICBteSAkbWF4aW11bV9maWVsZF9pbmRleCA9ICRvbGRfbGluZS0+Z2V0X2ptYXgoKTsKCiAgICAjIGJlIHN1cmUgdGhlIHByZXZpb3VzIGlmL2Vsc2lmIGlzIGZvbGxvd2VkIGJ5IGFuIG9wZW5pbmcgcGFyZW4KICAgIG15ICRqcGFyZW4gICAgPSAwOwogICAgbXkgJHRva19wYXJlbiA9ICcoJyAuICRkZXB0aF9icmFjZTsKICAgIG15ICR0b2tfdGVzdCAgPSAkcnRva2Vuc19vbGQtPlskanBhcmVuXTsKICAgIHJldHVybiB1bmxlc3MgKCAkdG9rX3Rlc3QgZXEgJHRva19wYXJlbiApOyAgICAjIHNob3VsZG4ndCBoYXBwZW4KCiAgICAjIE5vdyBmaW5kIHRoZSBvcGVuaW5nIGJsb2NrIGJyYWNlCiAgICBteSAoJGpicmFjZSk7CiAgICBmb3JlYWNoIG15ICRqICggMSAuLiAkbWF4aW11bV9maWVsZF9pbmRleCAtIDEgKSB7CiAgICAgICAgbXkgJHRvayA9ICRydG9rZW5zX29sZC0+WyRqXTsKICAgICAgICBpZiAoICR0b2sgZXEgJHRva19icmFjZSApIHsKICAgICAgICAgICAgJGpicmFjZSA9ICRqOwogICAgICAgICAgICBsYXN0OwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiB1bmxlc3MgKCBkZWZpbmVkKCRqYnJhY2UpICk7ICAgICAgICAgICAjIHNob3VsZG4ndCBoYXBwZW4KCiAgICAjIE5vdyBzcGxpY2UgdGhlIHRva2VucyBhbmQgcGF0dGVybnMgb2YgdGhlIHByZXZpb3VzIGxpbmUKICAgICMgaW50byB0aGUgZWxzZSBsaW5lIHRvIGluc3VyZSBhIG1hdGNoLiAgQWRkIGVtcHR5IGZpZWxkcwogICAgIyBhcyBuZWNlc3NhcnkuCiAgICBteSAkamFkZCA9ICRqYnJhY2UgLSAkanBhcmVuOwogICAgc3BsaWNlKCBAeyRydG9rZW5zfSwgICAwLCAwLCBAeyRydG9rZW5zX29sZH1bICRqcGFyZW4gLi4gJGpicmFjZSAtIDEgXSApOwogICAgc3BsaWNlKCBAeyRycGF0dGVybnN9LCAxLCAwLCBAeyRycGF0dGVybnNfb2xkfVsgJGpwYXJlbiArIDEgLi4gJGpicmFjZSBdICk7CiAgICBzcGxpY2UoIEB7JHJmaWVsZHN9LCAgICAgICAgMSwgMCwgKCcnKSB4ICRqYWRkICk7CiAgICBzcGxpY2UoIEB7JHJmaWVsZF9sZW5ndGhzfSwgMSwgMCwgKDApIHggJGphZGQgKTsKCiAgICAjIGZvcmNlIGEgZmx1c2ggYWZ0ZXIgdGhpcyBsaW5lIGlmIGl0IGRvZXMgbm90IGZvbGxvdyBhIGNhc2UKICAgIGlmICAgKCAkcmZpZWxkc19vbGQtPlswXSA9fiAvXmNhc2VccyokLyApIHsgcmV0dXJuIH0KICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuICRqYnJhY2UgfQp9CgpteSAlaXNfY2xvc2luZ19ibG9ja190eXBlOwoKQkVHSU4gewogICAgQF8gPSBxdzwgfSBdID47CiAgICBAaXNfY2xvc2luZ19ibG9ja190eXBle0BffSA9ICgxKSB4IHNjYWxhcihAXyk7Cn0KCnN1YiBjaGVja19tYXRjaCB7CgogICAgIyBTZWUgaWYgdGhlIGN1cnJlbnQgbGluZSBtYXRjaGVzIHRoZSBjdXJyZW50IHZlcnRpY2FsIGFsaWdubWVudCBncm91cC4KCiAgICBteSAoICRzZWxmLCAkbmV3X2xpbmUsICRiYXNlX2xpbmUsICRwcmV2X2xpbmUgKSA9IEBfOwoKICAgICMgR2l2ZW46CiAgICAjICAkbmV3X2xpbmUgID0gdGhlIGxpbmUgYmVpbmcgY29uc2lkZXJlZCBmb3IgZ3JvdXAgaW5jbHVzaW9uCiAgICAjICAkYmFzZV9saW5lID0gdGhlIGZpcnN0IGxpbmUgb2YgdGhlIGN1cnJlbnQgZ3JvdXAKICAgICMgICRwcmV2X2xpbmUgPSB0aGUgbGluZSBqdXN0IGJlZm9yZSAkbmV3X2xpbmUKCiAgICAjIHJldHVybnMgYSBmbGFnIGFuZCBhIHZhbHVlIGFzIGZvbGxvd3M6CiAgICAjICAgIHJldHVybiAoMCwgJGltYXhfYWxpZ24pICAgICBpZiB0aGUgbGluZSBkb2VzIG5vdCBtYXRjaAogICAgIyAgICByZXR1cm4gKDEsICRpbWF4X2FsaWduKSAgICAgaWYgdGhlIGxpbmUgbWF0Y2hlcyBidXQgZG9lcyBub3QgZml0CiAgICAjICAgIHJldHVybiAoMiwgJGltYXhfYWxpZ24pICAgICBpZiB0aGUgbGluZSBtYXRjaGVzIGFuZCBmaXRzCgogICAgIyBSZXR1cm5zICckaW1heF9hbGlnbicgd2hpY2ggaXMgdGhlIGluZGV4IG9mIHRoZSBtYXhpbXVtIG1hdGNoaW5nIHRva2VuLgogICAgIyBJdCB3aWxsIGJlIHVzZWQgaW4gdGhlIHN1YnNlcXVlbnQgbGVmdC10by1yaWdodCBzd2VlcCB0byBhbGlnbiBhcyBtYW55CiAgICAjIHRva2VucyBhcyBwb3NzaWJsZSBmb3IgbGluZXMgd2hpY2ggcGFydGlhbGx5IG1hdGNoLgogICAgbXkgJGltYXhfYWxpZ24gPSAtMTsKCiAgICAjIHZhcmlhYmxlICRHb1RvTXNnIGV4cGxhaW5zIHJlYXNvbiBmb3Igbm8gbWF0Y2gsIGZvciBkZWJ1Z2dpbmcKICAgIG15ICRHb1RvTXNnID0gIiI7CiAgICB1c2UgY29uc3RhbnQgRVhQTEFJTl9DSEVDS19NQVRDSCA9PiAwOwoKICAgICMgVGhpcyBpcyBhIGZsYWcgZm9yIHRlc3RpbmcgYWxpZ25tZW50IGJ5IHN1YiBzd2VlcF9sZWZ0X3RvX3JpZ2h0IG9ubHkuCiAgICAjIFRoaXMgdGVzdCBjYW4gaGVscCBmaW5kIHByb2JsZW1zIHdpdGggdGhlIGFsaWdubWVudCBsb2dpYy4KICAgICMgVGhpcyBmbGFnIHNob3VsZCBub3JtYWxseSBiZSB6ZXJvLgogICAgdXNlIGNvbnN0YW50IFRFU1RfU1dFRVBfT05MWSA9PiAwOwoKICAgIG15ICRqbWF4ICAgICAgICAgICAgICAgID0gJG5ld19saW5lLT5nZXRfam1heCgpOwogICAgbXkgJG1heGltdW1fZmllbGRfaW5kZXggPSAkYmFzZV9saW5lLT5nZXRfam1heCgpOwoKICAgIG15ICRqbGltaXQgPSAkam1heCAtIDI7CiAgICBpZiAoICRqbWF4ID4gJG1heGltdW1fZmllbGRfaW5kZXggKSB7CiAgICAgICAgJGpsaW1pdCA9ICRtYXhpbXVtX2ZpZWxkX2luZGV4IC0gMjsKICAgIH0KCiAgICBpZiAoICRuZXdfbGluZS0+Z2V0X2lzX2hhbmdpbmdfc2lkZV9jb21tZW50KCkgKSB7CgogICAgICAgICMgSFNDJ3MgY2FuIGpvaW4gdGhlIGdyb3VwIGlmIHRoZXkgZml0CiAgICB9CgogICAgIyBFdmVyeXRoaW5nIGVsc2UKICAgIGVsc2UgewoKICAgICAgICAjIEEgZ3JvdXAgd2l0aCBoYW5naW5nIHNpZGUgY29tbWVudHMgZW5kcyB3aXRoIHRoZSBmaXJzdCBub24gaGFuZ2luZwogICAgICAgICMgc2lkZSBjb21tZW50LgogICAgICAgIGlmICggJGJhc2VfbGluZS0+Z2V0X2lzX2hhbmdpbmdfc2lkZV9jb21tZW50KCkgKSB7CiAgICAgICAgICAgICRHb1RvTXNnID0gImVuZCBvZiBoYW5naW5nIHNpZGUgY29tbWVudHMiOwogICAgICAgICAgICBnb3RvIE5PX01BVENIOwogICAgICAgIH0KCiAgICAgICAgIyBUaGUgbnVtYmVyIG9mIHRva2VucyB0aGF0IHRoaXMgbGluZSBzaGFyZXMgd2l0aCB0aGUgcHJldmlvdXMgbGluZQogICAgICAgICMgaGFzIGJlZW4gc3RvcmVkIHdpdGggdGhlIHByZXZpb3VzIGxpbmUuICBUaGlzIHZhbHVlIHdhcyBjYWxjdWxhdGVkCiAgICAgICAgIyBhbmQgc3RvcmVkIGJ5IHN1YiAnbWF0Y2hfbGluZV9wYWlyJy4KICAgICAgICAkaW1heF9hbGlnbiA9ICRwcmV2X2xpbmUtPmdldF9pbWF4X3BhaXIoKTsKCiAgICAgICAgaWYgKCAkaW1heF9hbGlnbiAhPSAkamxpbWl0ICkgewogICAgICAgICAgICAkR29Ub01zZyA9ICJOb3QgYWxsIHRva2VucyBtYXRjaDogJGltYXhfYWxpZ24gIT0gJGpsaW1pdFxuIjsKICAgICAgICAgICAgZ290byBOT19NQVRDSDsKICAgICAgICB9CgogICAgfQoKICAgICMgVGhlIHRva2VucyBtYXRjaCwgYnV0IHRoZSBsaW5lcyBtdXN0IGhhdmUgaWRlbnRpY2FsIG51bWJlciBvZgogICAgIyB0b2tlbnMgdG8gam9pbiB0aGUgZ3JvdXAuCiAgICBpZiAoICRtYXhpbXVtX2ZpZWxkX2luZGV4ICE9ICRqbWF4ICkgewogICAgICAgICRHb1RvTXNnID0gInRva2VuIGNvdW50IGRpZmZlcnMiOwogICAgICAgIGdvdG8gTk9fTUFUQ0g7CiAgICB9CgogICAgIyBUaGUgdG9rZW5zIG1hdGNoLiBOb3cgU2VlIGlmIHRoZXJlIGlzIHNwYWNlIGZvciB0aGlzIGxpbmUgaW4gdGhlCiAgICAjIGN1cnJlbnQgZ3JvdXAuCiAgICBpZiAoICRzZWxmLT5jaGVja19maXQoICRuZXdfbGluZSwgJGJhc2VfbGluZSApICYmICFURVNUX1NXRUVQX09OTFkgKSB7CgogICAgICAgIEVYUExBSU5fQ0hFQ0tfTUFUQ0gKICAgICAgICAgICYmIHByaW50ICJtYXRjaCBhbmQgZml0LCBpbWF4X2FsaWduPSRpbWF4X2FsaWduLCBqbWF4PSRqbWF4XG4iOwogICAgICAgIHJldHVybiAoIDIsICRqbGltaXQgKTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICBFWFBMQUlOX0NIRUNLX01BVENICiAgICAgICAgICAmJiBwcmludCAibWF0Y2ggYnV0IG5vIGZpdCwgaW1heF9hbGlnbj0kaW1heF9hbGlnbiwgam1heD0kam1heFxuIjsKICAgICAgICByZXR1cm4gKCAxLCAkamxpbWl0ICk7CiAgICB9CgogIE5PX01BVENIOgoKICAgIEVYUExBSU5fQ0hFQ0tfTUFUQ0gKICAgICAgJiYgcHJpbnQKICAgICAgIm5vIG1hdGNoIGJlY2F1c2UgJEdvVG9Nc2csIG1heCBtYXRjaCBpbmRleCA9aSAkaW1heF9hbGlnbiwgam1heD0kam1heFxuIjsKCiAgICByZXR1cm4gKCAwLCAkaW1heF9hbGlnbiApOwp9CgpzdWIgY2hlY2tfZml0IHsKCiAgICBteSAoICRzZWxmLCAkbmV3X2xpbmUsICRvbGRfbGluZSApID0gQF87CgogICAgIyBUaGUgbmV3IGxpbmUgaGFzIGFsaWdubWVudHMgaWRlbnRpY2FsIHRvIHRoZSBjdXJyZW50IGdyb3VwLiBOb3cgd2UgaGF2ZQogICAgIyB0byBmaXQgdGhlIG5ldyBsaW5lIGludG8gdGhlIGdyb3VwIHdpdGhvdXQgY2F1c2luZyBhIGZpZWxkIHRvIGV4Y2VlZCB0aGUKICAgICMgbGluZSBsZW5ndGggbGltaXQuCiAgICAjICAgcmV0dXJuIHRydWUgaWYgc3VjY2Vzc2Z1bAogICAgIyAgIHJldHVybiBmYWxzZSBpZiBub3Qgc3VjY2Vzc2Z1bAoKICAgIG15ICRqbWF4ICAgICAgICAgICAgICAgID0gJG5ld19saW5lLT5nZXRfam1heCgpOwogICAgbXkgJGxlYWRpbmdfc3BhY2VfY291bnQgPSAkbmV3X2xpbmUtPmdldF9sZWFkaW5nX3NwYWNlX2NvdW50KCk7CiAgICBteSAkcmZpZWxkX2xlbmd0aHMgICAgICA9ICRuZXdfbGluZS0+Z2V0X3JmaWVsZF9sZW5ndGhzKCk7CiAgICBteSAkcGFkZGluZ19hdmFpbGFibGUgICA9ICRvbGRfbGluZS0+Z2V0X2F2YWlsYWJsZV9zcGFjZV9vbl9yaWdodCgpOwogICAgbXkgJGptYXhfb2xkICAgICAgICAgICAgPSAkb2xkX2xpbmUtPmdldF9qbWF4KCk7CgogICAgIyBTYWZldHkgY2hlY2sgLi4uIG9ubHkgbGluZXMgd2l0aCBlcXVhbCBhcnJheSBzaXplcyBzaG91bGQgYXJyaXZlIGhlcmUKICAgICMgZnJvbSBzdWIgY2hlY2tfbWF0Y2guICBTbyBpZiB0aGlzIGVycm9yIG9jY3VycywgbG9vayBhdCByZWNlbnQgY2hhbmdlcyBpbgogICAgIyBzdWIgY2hlY2tfbWF0Y2guICBJdCBpcyBvbmx5IHN1cHBvc2VkIHRvIGNoZWNrIHRoZSBmaXQgb2YgbGluZXMgd2l0aAogICAgIyBpZGVudGljYWwgbnVtYmVycyBvZiBhbGlnbm1lbnQgdG9rZW5zLgogICAgaWYgKCAkam1heF9vbGQgbmUgJGptYXggKSB7CgogICAgICAgICRzZWxmLT53YXJuaW5nKDw8RU9NKTsKUHJvZ3JhbSBidWcgZGV0ZWN0ZWQgaW4gUGVybDo6VGlkeTo6VmVydGljYWxBbGlnbmVyIHN1YiBjaGVja19maXQgCnVuZXhwZWN0ZWQgZGlmZmVyZW5jZSBpbiBhcnJheSBsZW5ndGhzOiAkam1heCAhPSAkam1heF9vbGQKRU9NCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgU2F2ZSBjdXJyZW50IGNvbHVtbnMgaW4gY2FzZSB0aGlzIGxpbmUgZG9lcyBub3QgZml0LgogICAgbXkgQGFsaWdubWVudHMgPSAkb2xkX2xpbmUtPmdldF9hbGlnbm1lbnRzKCk7CiAgICBmb3JlYWNoIG15ICRhbGlnbm1lbnQgKEBhbGlnbm1lbnRzKSB7CiAgICAgICAgJGFsaWdubWVudC0+c2F2ZV9jb2x1bW4oKTsKICAgIH0KCiAgICBteSAkaXNfaGFuZ2luZ19zaWRlX2NvbW1lbnQgPSAkbmV3X2xpbmUtPmdldF9pc19oYW5naW5nX3NpZGVfY29tbWVudCgpOwoKICAgICMgTG9vcCBvdmVyIGFsbCBhbGlnbm1lbnRzIC4uLgogICAgbXkgJG1heGltdW1fZmllbGRfaW5kZXggPSAkb2xkX2xpbmUtPmdldF9qbWF4KCk7CiAgICBmb3IgbXkgJGogKCAwIC4uICRqbWF4ICkgewoKICAgICAgICBteSAkcGFkID0gJHJmaWVsZF9sZW5ndGhzLT5bJGpdIC0gJG9sZF9saW5lLT5jdXJyZW50X2ZpZWxkX3dpZHRoKCRqKTsKCiAgICAgICAgaWYgKCAkaiA9PSAwICkgewogICAgICAgICAgICAkcGFkICs9ICRsZWFkaW5nX3NwYWNlX2NvdW50OwogICAgICAgIH0KCiAgICAgICAgIyBLZWVwIGdvaW5nIGlmIHRoaXMgZmllbGQgZG9lcyBub3QgbmVlZCBhbnkgc3BhY2UuCiAgICAgICAgbmV4dCBpZiAkcGFkIDwgMDsKCiAgICAgICAgIyBTZWUgaWYgaXQgbmVlZHMgdG9vIG11Y2ggc3BhY2UuCiAgICAgICAgaWYgKCAkcGFkID4gJHBhZGRpbmdfYXZhaWxhYmxlICkgewoKICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgICAgICMgTGluZSBkb2VzIG5vdCBmaXQgLS0gcmV2ZXJ0IHRvIHN0YXJ0aW5nIHN0YXRlCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICAgICBmb3JlYWNoIG15ICRhbGlnbm1lbnQgKEBhbGlnbm1lbnRzKSB7CiAgICAgICAgICAgICAgICAkYWxpZ25tZW50LT5yZXN0b3JlX2NvbHVtbigpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgbWFrZSByb29tIGZvciB0aGlzIGZpZWxkCiAgICAgICAgJG9sZF9saW5lLT5pbmNyZWFzZV9maWVsZF93aWR0aCggJGosICRwYWQgKTsKICAgICAgICAkcGFkZGluZ19hdmFpbGFibGUgLT0gJHBhZDsKICAgIH0KCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBUaGUgbGluZSBmaXRzLCB0aGUgbWF0Y2ggaXMgYWNjZXB0ZWQKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICByZXR1cm4gMTsKCn0KCnN1YiBpbnN0YWxsX25ld19hbGlnbm1lbnRzIHsKCiAgICBteSAoJG5ld19saW5lKSA9IEBfOwoKICAgIG15ICRqbWF4ICAgICAgICAgICA9ICRuZXdfbGluZS0+Z2V0X2ptYXgoKTsKICAgIG15ICRyZmllbGRfbGVuZ3RocyA9ICRuZXdfbGluZS0+Z2V0X3JmaWVsZF9sZW5ndGhzKCk7CiAgICBteSAkY29sICAgICAgICAgICAgPSAkbmV3X2xpbmUtPmdldF9sZWFkaW5nX3NwYWNlX2NvdW50KCk7CgogICAgZm9yIG15ICRqICggMCAuLiAkam1heCApIHsKICAgICAgICAkY29sICs9ICRyZmllbGRfbGVuZ3Rocy0+WyRqXTsKCiAgICAgICAgIyBjcmVhdGUgaW5pdGlhbCBhbGlnbm1lbnRzIGZvciB0aGUgbmV3IGdyb3VwCiAgICAgICAgbXkgJGFsaWdubWVudCA9CiAgICAgICAgICBQZXJsOjpUaWR5OjpWZXJ0aWNhbEFsaWduZXI6OkFsaWdubWVudC0+bmV3KCB7IGNvbHVtbiA9PiAkY29sIH0gKTsKICAgICAgICAkbmV3X2xpbmUtPnNldF9hbGlnbm1lbnQoICRqLCAkYWxpZ25tZW50ICk7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBjb3B5X29sZF9hbGlnbm1lbnRzIHsKICAgIG15ICggJG5ld19saW5lLCAkb2xkX2xpbmUgKSA9IEBfOwogICAgbXkgQG5ld19hbGlnbm1lbnRzID0gJG9sZF9saW5lLT5nZXRfYWxpZ25tZW50cygpOwogICAgJG5ld19saW5lLT5zZXRfYWxpZ25tZW50cyhAbmV3X2FsaWdubWVudHMpOwogICAgcmV0dXJuOwp9CgpzdWIgZHVtcF9hcnJheSB7CgogICAgIyBkZWJ1ZyByb3V0aW5lIHRvIGR1bXAgYXJyYXkgY29udGVudHMKICAgIGxvY2FsICQiID0gJykoJzsKICAgIHByaW50IFNURE9VVCAiKEBfKVxuIjsKICAgIHJldHVybjsKfQoKc3ViIGxldmVsX2NoYW5nZSB7CgogICAgIyBjb21wdXRlIGRlY3JlYXNlIGluIGxldmVsIHdoZW4gd2UgcmVtb3ZlICRkaWZmIHNwYWNlcyBmcm9tIHRoZQogICAgIyBsZWFkaW5nIHNwYWNlcwogICAgbXkgKCAkc2VsZiwgJGxlYWRpbmdfc3BhY2VfY291bnQsICRkaWZmLCAkbGV2ZWwgKSA9IEBfOwoKICAgIG15ICRyT3B0c19pbmRlbnRfY29sdW1ucyA9ICRzZWxmLT5bX3JPcHRzX2luZGVudF9jb2x1bW5zX107CiAgICBpZiAoJHJPcHRzX2luZGVudF9jb2x1bW5zKSB7CiAgICAgICAgbXkgJG9sZXYgPQogICAgICAgICAgaW50KCAoICRsZWFkaW5nX3NwYWNlX2NvdW50ICsgJGRpZmYgKSAvICRyT3B0c19pbmRlbnRfY29sdW1ucyApOwogICAgICAgIG15ICRubGV2ID0gaW50KCAkbGVhZGluZ19zcGFjZV9jb3VudCAvICRyT3B0c19pbmRlbnRfY29sdW1ucyApOwogICAgICAgICRsZXZlbCAtPSAoICRvbGV2IC0gJG5sZXYgKTsKICAgICAgICBpZiAoICRsZXZlbCA8IDAgKSB7ICRsZXZlbCA9IDAgfQogICAgfQogICAgcmV0dXJuICRsZXZlbDsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBDT0RFIFNFQ1RJT04gNDogQ29kZSB0byBwcm9jZXNzIGNvbW1lbnQgbGluZXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnN1YiBfZmx1c2hfY29tbWVudF9saW5lcyB7CgogICAgIyBPdXRwdXQgYSBncm91cCBjb25zaXN0aW5nIG9mIENPTU1FTlQgbGluZXMKCiAgICBteSAoJHNlbGYpID0gQF87CiAgICBteSAkcmdyb3VwX2xpbmVzID0gJHNlbGYtPltfcmdyb3VwX2xpbmVzX107CiAgICByZXR1cm4gdW5sZXNzICggQHskcmdyb3VwX2xpbmVzfSApOwogICAgbXkgJGdyb3VwX2xldmVsICAgICAgICAgPSAkc2VsZi0+W19ncm91cF9sZXZlbF9dOwogICAgbXkgJGxlYWRpbmdfc3BhY2VfY291bnQgPSAkc2VsZi0+W19jb21tZW50X2xlYWRpbmdfc3BhY2VfY291bnRfXTsKICAgIG15ICRsZWFkaW5nX3N0cmluZyA9CiAgICAgICRzZWxmLT5nZXRfbGVhZGluZ19zdHJpbmcoICRsZWFkaW5nX3NwYWNlX2NvdW50LCAkZ3JvdXBfbGV2ZWwgKTsKCiAgICAjIGxvb2sgZm9yIGV4Y2Vzc2l2ZWx5IGxvbmcgbGluZXMKICAgIG15ICRtYXhfZXhjZXNzID0gMDsKICAgIGZvcmVhY2ggbXkgJGl0ZW0gKCBAeyRyZ3JvdXBfbGluZXN9ICkgewogICAgICAgIG15ICggJHN0ciwgJHN0cl9sZW4gKSA9IEB7JGl0ZW19OwogICAgICAgIG15ICRleGNlc3MgPQogICAgICAgICAgJHN0cl9sZW4gKwogICAgICAgICAgJGxlYWRpbmdfc3BhY2VfY291bnQgLQogICAgICAgICAgJHNlbGYtPm1heGltdW1fbGluZV9sZW5ndGhfZm9yX2xldmVsKCRncm91cF9sZXZlbCk7CiAgICAgICAgaWYgKCAkZXhjZXNzID4gJG1heF9leGNlc3MgKSB7CiAgICAgICAgICAgICRtYXhfZXhjZXNzID0gJGV4Y2VzczsKICAgICAgICB9CiAgICB9CgogICAgIyB6ZXJvIGxlYWRpbmcgc3BhY2UgY291bnQgaWYgYW55IGxpbmVzIGFyZSB0b28gbG9uZwogICAgaWYgKCAkbWF4X2V4Y2VzcyA+IDAgKSB7CiAgICAgICAgJGxlYWRpbmdfc3BhY2VfY291bnQgLT0gJG1heF9leGNlc3M7CiAgICAgICAgaWYgKCAkbGVhZGluZ19zcGFjZV9jb3VudCA8IDAgKSB7ICRsZWFkaW5nX3NwYWNlX2NvdW50ID0gMCB9CiAgICAgICAgbXkgJGZpbGVfd3JpdGVyX29iamVjdCA9ICRzZWxmLT5bX2ZpbGVfd3JpdGVyX29iamVjdF9dOwogICAgICAgIG15ICRsYXN0X291dGRlbnRlZF9saW5lX2F0ID0KICAgICAgICAgICRmaWxlX3dyaXRlcl9vYmplY3QtPmdldF9vdXRwdXRfbGluZV9udW1iZXIoKTsKICAgICAgICAkc2VsZi0+W19sYXN0X291dGRlbnRlZF9saW5lX2F0X10gPSAkbGFzdF9vdXRkZW50ZWRfbGluZV9hdDsKICAgICAgICBteSAkb3V0ZGVudGVkX2xpbmVfY291bnQgPSAkc2VsZi0+W19vdXRkZW50ZWRfbGluZV9jb3VudF9dOwogICAgICAgIHVubGVzcyAoJG91dGRlbnRlZF9saW5lX2NvdW50KSB7CiAgICAgICAgICAgICRzZWxmLT5bX2ZpcnN0X291dGRlbnRlZF9saW5lX2F0X10gPSAkbGFzdF9vdXRkZW50ZWRfbGluZV9hdDsKICAgICAgICB9CiAgICAgICAgbXkgJG5saW5lcyA9IEB7JHJncm91cF9saW5lc307CiAgICAgICAgJG91dGRlbnRlZF9saW5lX2NvdW50ICs9ICRubGluZXM7CiAgICAgICAgJHNlbGYtPltfb3V0ZGVudGVkX2xpbmVfY291bnRfXSA9ICRvdXRkZW50ZWRfbGluZV9jb3VudDsKICAgIH0KCiAgICAjIHdyaXRlIHRoZSBsaW5lcwogICAgbXkgJG91dGRlbnRfbG9uZ19saW5lcyA9IDA7CgogICAgZm9yZWFjaCBteSAkaXRlbSAoIEB7JHJncm91cF9saW5lc30gKSB7CiAgICAgICAgbXkgKCAkbGluZSwgJGxpbmVfbGVuLCAkS2VuZCApID0gQHskaXRlbX07CiAgICAgICAgJHNlbGYtPnZhbGlnbl9vdXRwdXRfc3RlcF9CKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBsZWFkaW5nX3NwYWNlX2NvdW50ICAgICAgID0+ICRsZWFkaW5nX3NwYWNlX2NvdW50LAogICAgICAgICAgICAgICAgbGluZSAgICAgICAgICAgICAgICAgICAgICA9PiAkbGluZSwKICAgICAgICAgICAgICAgIGxpbmVfbGVuZ3RoICAgICAgICAgICAgICAgPT4gJGxpbmVfbGVuLAogICAgICAgICAgICAgICAgc2lkZV9jb21tZW50X2xlbmd0aCAgICAgICA9PiAwLAogICAgICAgICAgICAgICAgb3V0ZGVudF9sb25nX2xpbmVzICAgICAgICA9PiAkb3V0ZGVudF9sb25nX2xpbmVzLAogICAgICAgICAgICAgICAgcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFncyA9PiAiIiwKICAgICAgICAgICAgICAgIGxldmVsICAgICAgICAgICAgICAgICAgICAgPT4gJGdyb3VwX2xldmVsLAogICAgICAgICAgICAgICAgS2VuZCAgICAgICAgICAgICAgICAgICAgICA9PiAkS2VuZCwKICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9CgogICAgJHNlbGYtPmluaXRpYWxpemVfZm9yX25ld19ncm91cCgpOwogICAgcmV0dXJuOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBDT0RFIFNFQ1RJT04gNTogQ29kZSB0byBwcm9jZXNzIGdyb3VwcyBvZiBjb2RlIGxpbmVzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKc3ViIF9mbHVzaF9ncm91cF9saW5lcyB7CgogICAgIyBUaGlzIGlzIHRoZSB2ZXJ0aWNhbCBhbGlnbmVyIGludGVybmFsIGZsdXNoLCB3aGljaCBsZWF2ZXMgdGhlIGNhY2hlCiAgICAjIGludGFjdAogICAgbXkgKCRzZWxmKSA9IEBfOwoKICAgIG15ICRyZ3JvdXBfbGluZXMgPSAkc2VsZi0+W19yZ3JvdXBfbGluZXNfXTsKICAgIHJldHVybiB1bmxlc3MgKCBAeyRyZ3JvdXBfbGluZXN9ICk7CiAgICBteSAkZ3JvdXBfdHlwZSAgPSAkc2VsZi0+W19ncm91cF90eXBlX107CiAgICBteSAkZ3JvdXBfbGV2ZWwgPSAkc2VsZi0+W19ncm91cF9sZXZlbF9dOwoKICAgICMgRGVidWcKICAgIDAgJiYgZG8gewogICAgICAgIG15ICggJGEsICRiLCAkYyApID0gY2FsbGVyKCk7CiAgICAgICAgbXkgJG5saW5lcyA9IEB7JHJncm91cF9saW5lc307CiAgICAgICAgcHJpbnQgU1RET1VUCiJBUFBFTkQwOiBfZmx1c2hfZ3JvdXBfbGluZXMgY2FsbGVkIGZyb20gJGEgJGIgJGMgbGluZXM9JG5saW5lcywgdHlwZT0kZ3JvdXBfdHlwZSBcbiI7CiAgICB9OwoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIFNlY3Rpb24gMTogSGFuZGxlIGEgZ3JvdXAgb2YgQ09NTUVOVCBsaW5lcwogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgIGlmICggJGdyb3VwX3R5cGUgZXEgJ0NPTU1FTlQnICkgewogICAgICAgICRzZWxmLT5fZmx1c2hfY29tbWVudF9saW5lcygpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIFNlY3Rpb24gMjogSGFuZGxlIGxpbmUocykgb2YgQ09ERS4gIE1vc3Qgb2YgdGhlIGFjdHVhbCB3b3JrIG9mIHZlcnRpY2FsCiAgICAjIGFsaWduaW5nIGhhcHBlbnMgaGVyZSBpbiB0aGUgZm9sbG93aW5nIHN0ZXBzOgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICMgU1RFUCAxOiBSZW1vdmUgbW9zdCB1bm1hdGNoZWQgdG9rZW5zLiBUaGV5IGJsb2NrIGdvb2QgYWxpZ25tZW50cy4KICAgIG15ICggJG1heF9sZXZfZGlmZiwgJHNhd19zaWRlX2NvbW1lbnQgKSA9CiAgICAgIGRlbGV0ZV91bm1hdGNoZWRfdG9rZW5zKCAkcmdyb3VwX2xpbmVzLCAkZ3JvdXBfbGV2ZWwgKTsKCiAgICAjIFNURVAgMjogU3dlZXAgdG9wIHRvIGJvdHRvbSwgZm9ybWluZyBzdWJncm91cHMgb2YgbGluZXMgd2l0aCBleGFjdGx5CiAgICAjIG1hdGNoaW5nIGNvbW1vbiBhbGlnbm1lbnRzLiAgVGhlIGluZGV4ZXMgb2YgdGhlc2Ugc3ViZ3JvdXBzIGFyZSBpbiB0aGUKICAgICMgcmV0dXJuIHZhcmlhYmxlLgogICAgbXkgJHJncm91cHMgPSAkc2VsZi0+c3dlZXBfdG9wX2Rvd24oICRyZ3JvdXBfbGluZXMsICRncm91cF9sZXZlbCApOwoKICAgICMgU1RFUCAzOiBTd2VlcCBsZWZ0IHRvIHJpZ2h0IHRocm91Z2ggdGhlIGxpbmVzLCBsb29raW5nIGZvciBsZWFkaW5nCiAgICAjIGFsaWdubWVudCB0b2tlbnMgc2hhcmVkIGJ5IGdyb3Vwcy4KICAgIHN3ZWVwX2xlZnRfdG9fcmlnaHQoICRyZ3JvdXBfbGluZXMsICRyZ3JvdXBzLCAkZ3JvdXBfbGV2ZWwgKQogICAgICBpZiAoIEB7JHJncm91cHN9ID4gMSApOwoKICAgICMgU1RFUCA0OiBNb3ZlIHNpZGUgY29tbWVudHMgdG8gYSBjb21tb24gY29sdW1uIGlmIHBvc3NpYmxlLgogICAgaWYgKCRzYXdfc2lkZV9jb21tZW50KSB7CiAgICAgICAgJHNlbGYtPmFsaWduX3NpZGVfY29tbWVudHMoICRyZ3JvdXBfbGluZXMsICRyZ3JvdXBzICk7CiAgICB9CgogICAgIyBTVEVQIDU6IEZvciB0aGUgLWxwIG9wdGlvbiwgaW5jcmVhc2UgdGhlIGluZGVudGF0aW9uIG9mIGxpc3RzCiAgICAjIHRvIHRoZSBkZXNpcmVkIGFtb3VudCwgYnV0IGRvIG5vdCBleGNlZWQgdGhlIGxpbmUgbGVuZ3RoIGxpbWl0LgogICAgbXkgJGV4dHJhX2xlYWRpbmdfc3BhY2VzID0KICAgICAgJHNlbGYtPltfZXh0cmFfaW5kZW50X29rX10KICAgICAgPyBnZXRfZXh0cmFfbGVhZGluZ19zcGFjZXMoICRyZ3JvdXBfbGluZXMsICRyZ3JvdXBzICkKICAgICAgOiAwOwoKICAgICMgU1RFUCA2OiBPdXRwdXQgdGhlIGxpbmVzLgogICAgIyBBbGwgbGluZXMgaW4gdGhpcyBiYXRjaCBoYXZlIHRoZSBzYW1lIGJhc2ljIGxlYWRpbmcgc3BhY2luZzoKICAgIG15ICRncm91cF9sZWFkZXJfbGVuZ3RoID0gJHJncm91cF9saW5lcy0+WzBdLT5nZXRfbGVhZGluZ19zcGFjZV9jb3VudCgpOwoKICAgIGZvcmVhY2ggbXkgJGxpbmUgKCBAeyRyZ3JvdXBfbGluZXN9ICkgewogICAgICAgICRzZWxmLT52YWxpZ25fb3V0cHV0X3N0ZXBfQSgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbGluZSAgICAgICAgICAgICAgICAgPT4gJGxpbmUsCiAgICAgICAgICAgICAgICBtaW5fY2lfZ2FwICAgICAgICAgICA9PiAwLAogICAgICAgICAgICAgICAgZG9fbm90X2FsaWduICAgICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIGdyb3VwX2xlYWRlcl9sZW5ndGggID0+ICRncm91cF9sZWFkZXJfbGVuZ3RoLAogICAgICAgICAgICAgICAgZXh0cmFfbGVhZGluZ19zcGFjZXMgPT4gJGV4dHJhX2xlYWRpbmdfc3BhY2VzLAogICAgICAgICAgICAgICAgbGV2ZWwgICAgICAgICAgICAgICAgPT4gJGdyb3VwX2xldmVsLAogICAgICAgICAgICB9CiAgICAgICAgKTsKICAgIH0KCiAgICAkc2VsZi0+aW5pdGlhbGl6ZV9mb3JfbmV3X2dyb3VwKCk7CiAgICByZXR1cm47Cn0KCnsgICAgIyMgY2xvc3VyZSBmb3Igc3ViIHN3ZWVwX3RvcF9kb3duCgogICAgbXkgJHJhbGxfbGluZXM7ICAgICAgICAgIyBhbGwgb2YgdGhlIGxpbmVzCiAgICBteSAkZ3JwX2xldmVsOyAgICAgICAgICAjIGxldmVsIG9mIGFsbCBsaW5lcwogICAgbXkgJHJncm91cHM7ICAgICAgICAgICAgIyBkZXNjcmliZXMgdGhlIHBhcnRpdGlvbiBvZiBsaW5lcyB3ZSB3aWxsIG1ha2UgaGVyZQogICAgbXkgJGdyb3VwX2xpbmVfY291bnQ7ICAgIyBudW1iZXIgb2YgbGluZXMgaW4gY3VycmVudCBwYXJ0aXRpb24KCiAgICBCRUdJTiB7ICRyZ3JvdXBzID0gW10gfQoKICAgIHN1YiBpbml0aWFsaXplX2Zvcl9uZXdfcmdyb3VwIHsKICAgICAgICAkZ3JvdXBfbGluZV9jb3VudCA9IDA7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBhZGRfdG9fcmdyb3VwIHsKCiAgICAgICAgbXkgKCRqZW5kKSA9IEBfOwogICAgICAgIG15ICRybGluZSA9ICRyYWxsX2xpbmVzLT5bJGplbmRdOwoKICAgICAgICBteSAkamJlZyA9ICRqZW5kOwogICAgICAgIGlmICggJGdyb3VwX2xpbmVfY291bnQgPT0gMCApIHsKICAgICAgICAgICAgaW5zdGFsbF9uZXdfYWxpZ25tZW50cygkcmxpbmUpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJHJ2YWxzID0gcG9wIEB7JHJncm91cHN9OwogICAgICAgICAgICAkamJlZyA9ICRydmFscy0+WzBdOwogICAgICAgICAgICBjb3B5X29sZF9hbGlnbm1lbnRzKCAkcmxpbmUsICRyYWxsX2xpbmVzLT5bJGpiZWddICk7CiAgICAgICAgfQogICAgICAgIHB1c2ggQHskcmdyb3Vwc30sIFsgJGpiZWcsICRqZW5kLCB1bmRlZiBdOwogICAgICAgICRncm91cF9saW5lX2NvdW50Kys7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBnZXRfcmdyb3VwX2pyYW5nZSB7CgogICAgICAgIHJldHVybiB1bmxlc3MgQHskcmdyb3Vwc307CiAgICAgICAgcmV0dXJuIHVubGVzcyAoICRncm91cF9saW5lX2NvdW50ID4gMCApOwogICAgICAgIG15ICggJGpiZWcsICRqZW5kICkgPSBAeyAkcmdyb3Vwcy0+Wy0xXSB9OwogICAgICAgIHJldHVybiAoICRqYmVnLCAkamVuZCApOwogICAgfQoKICAgIHN1YiBlbmRfcmdyb3VwIHsKCiAgICAgICAgbXkgKCRpbWF4X2FsaWduKSA9IEBfOwogICAgICAgIHJldHVybiB1bmxlc3MgQHskcmdyb3Vwc307CiAgICAgICAgcmV0dXJuIHVubGVzcyAoICRncm91cF9saW5lX2NvdW50ID4gMCApOwoKICAgICAgICBteSAoICRqYmVnLCAkamVuZCApID0gQHsgcG9wIEB7JHJncm91cHN9IH07CiAgICAgICAgcHVzaCBAeyRyZ3JvdXBzfSwgWyAkamJlZywgJGplbmQsICRpbWF4X2FsaWduIF07CgogICAgICAgICMgVW5kbyBzb21lIGFsaWdubWVudHMgb2YgcG9vciB0d28tbGluZSBjb21iaW5hdGlvbnMuCiAgICAgICAgIyBXZSBoYWQgdG8gd2FpdCB1bnRpbCBub3cgdG8ga25vdyB0aGUgbGluZSBjb3VudC4KICAgICAgICBpZiAoICRqZW5kIC0gJGpiZWcgPT0gMSApIHsKICAgICAgICAgICAgbXkgJGxpbmVfMCA9ICRyYWxsX2xpbmVzLT5bJGpiZWddOwogICAgICAgICAgICBteSAkbGluZV8xID0gJHJhbGxfbGluZXMtPlskamVuZF07CgogICAgICAgICAgICBteSAkaW1heF9wYWlyID0gJGxpbmVfMS0+Z2V0X2ltYXhfcGFpcigpOwogICAgICAgICAgICBpZiAoICRpbWF4X3BhaXIgPiAkaW1heF9hbGlnbiApIHsgJGltYXhfYWxpZ24gPSAkaW1heF9wYWlyIH0KCiAgICAgICAgICAgICMjIGZsYWcgZm9yIHBvc3NpYmxlIGZ1dHVyZSB1c2U6CiAgICAgICAgICAgICMjIG15ICRpc19pc29sYXRlZF9wYWlyID0gJGltYXhfcGFpciA8IDAKICAgICAgICAgICAgIyMgICYmICggJGpiZWcgPT0gMAogICAgICAgICAgICAjIyAgICB8fCAkcmFsbF9saW5lcy0+WyAkamJlZyAtIDEgXS0+Z2V0X2ltYXhfcGFpcigpIDwgMCApOwoKICAgICAgICAgICAgbXkgJGltYXhfcHJldiA9CiAgICAgICAgICAgICAgJGpiZWcgPiAwID8gJHJhbGxfbGluZXMtPlsgJGpiZWcgLSAxIF0tPmdldF9pbWF4X3BhaXIoKSA6IC0xOwoKICAgICAgICAgICAgbXkgKCAkaXNfbWFyZ2luYWwsICRpbWF4X2FsaWduX2ZpeCApID0KICAgICAgICAgICAgICBpc19tYXJnaW5hbF9tYXRjaCggJGxpbmVfMCwgJGxpbmVfMSwgJGdycF9sZXZlbCwgJGltYXhfYWxpZ24sCiAgICAgICAgICAgICAgICAkaW1heF9wcmV2ICk7CiAgICAgICAgICAgIGlmICgkaXNfbWFyZ2luYWwpIHsKICAgICAgICAgICAgICAgIGNvbWJpbmVfZmllbGRzKCAkbGluZV8wLCAkbGluZV8xLCAkaW1heF9hbGlnbl9maXggKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaW5pdGlhbGl6ZV9mb3JfbmV3X3Jncm91cCgpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgYmxvY2tfcGVudWx0aW1hdGVfbWF0Y2ggewoKICAgICAgICAjIGVtZXJnZW5jeSByZXNldCB0byBwcmV2ZW50IHN3ZWVwX2xlZnRfdG9fcmlnaHQgZnJvbSB0cnlpbmcgdG8gbWF0Y2ggYQogICAgICAgICMgZmFpbGVkIHRlcm1pbmFsIGVsc2UgbWF0Y2gKICAgICAgICByZXR1cm4gdW5sZXNzIEB7JHJncm91cHN9ID4gMTsKICAgICAgICAkcmdyb3Vwcy0+Wy0yXS0+WzJdID0gLTE7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBzd2VlcF90b3BfZG93biB7CiAgICAgICAgbXkgKCAkc2VsZiwgJHJsaW5lcywgJGdyb3VwX2xldmVsICkgPSBAXzsKCiAgICAgICAgIyBQYXJ0aXRpb24gdGhlIHNldCBvZiBsaW5lcyBpbnRvIGZpbmFsIGFsaWdubWVudCBzdWJncm91cHMKICAgICAgICAjIGFuZCBzdG9yZSB0aGUgYWxpZ25tZW50cyB3aXRoIHRoZSBsaW5lcy4KCiAgICAgICAgIyBUaGUgYWxpZ25tZW50IHN1Ymdyb3VwcyB3ZSBhcmUgbWFraW5nIGhlcmUgYXJlIGdyb3VwcyBvZiBjb25zZWN1dGl2ZQogICAgICAgICMgbGluZXMgd2hpY2ggaGF2ZSAoMSkgaWRlbnRpY2FsIGFsaWdubWVudCB0b2tlbnMgYW5kICgyKSBkbyBub3QKICAgICAgICAjIGV4Y2VlZCB0aGUgYWxsb3dhYmxlIG1heGltdW0gbGluZSBsZW5ndGguICBBIGxhdGVyIHN3ZWVwIGZyb20KICAgICAgICAjIGxlZnQtdG8tcmlnaHQgKCdzd2VlcF9scicpIHdpbGwgaGFuZGxlIGFkZGl0aW9uYWwgYWxpZ25tZW50cy4KCiAgICAgICAgIyB0cmFuc2ZlciBhcmdzIHRvIGNsb3N1cmUgdmFyaWFibGVzCiAgICAgICAgJHJhbGxfbGluZXMgPSAkcmxpbmVzOwogICAgICAgICRncnBfbGV2ZWwgID0gJGdyb3VwX2xldmVsOwogICAgICAgICRyZ3JvdXBzICAgID0gW107CiAgICAgICAgaW5pdGlhbGl6ZV9mb3JfbmV3X3Jncm91cCgpOwogICAgICAgIHJldHVybiB1bmxlc3MgQHskcmxpbmVzfTsgICAgIyBzaG91bGRuJ3QgaGFwcGVuCgogICAgICAgICMgVW5zZXQgdGhlIF9lbmRfZ3JvdXAgZmxhZyBmb3IgdGhlIGxhc3QgbGluZSBpZiBpdCBpdCBzZXQgYmVjYXVzZSBpdAogICAgICAgICMgaXMgbm90IG5lZWRlZCBhbmQgY2FuIGNhdXNlcyBwcm9ibGVtcyBmb3IgLWxwIGZvcm1hdHRpbmcKICAgICAgICAkcmFsbF9saW5lcy0+Wy0xXS0+c2V0X2VuZF9ncm91cCgwKTsKCiAgICAgICAgIyBMb29wIG92ZXIgYWxsIGxpbmVzIC4uLgogICAgICAgIG15ICRqbGluZSA9IC0xOwogICAgICAgIGZvcmVhY2ggbXkgJG5ld19saW5lICggQHskcmFsbF9saW5lc30gKSB7CiAgICAgICAgICAgICRqbGluZSsrOwoKICAgICAgICAgICAgIyBTdGFydCBhIG5ldyBzdWJncm91cCBpZiBuZWNlc3NhcnkKICAgICAgICAgICAgaWYgKCAhJGdyb3VwX2xpbmVfY291bnQgKSB7CiAgICAgICAgICAgICAgICBhZGRfdG9fcmdyb3VwKCRqbGluZSk7CiAgICAgICAgICAgICAgICBpZiAoICRuZXdfbGluZS0+Z2V0X2VuZF9ncm91cCgpICkgewogICAgICAgICAgICAgICAgICAgIGVuZF9yZ3JvdXAoLTEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJGpfdGVybWluYWxfbWF0Y2ggPSAkbmV3X2xpbmUtPmdldF9qX3Rlcm1pbmFsX21hdGNoKCk7CiAgICAgICAgICAgIG15ICggJGpiZWcsICRqZW5kICkgPSBnZXRfcmdyb3VwX2pyYW5nZSgpOwogICAgICAgICAgICBpZiAoICFkZWZpbmVkKCRqYmVnKSApIHsKCiAgICAgICAgICAgICAgICAjIHNhZmV0eSBjaGVjaywgc2hvdWxkbid0IGhhcHBlbgogICAgICAgICAgICAgICAgJHNlbGYtPndhcm5pbmcoPDxFT00pOwpQcm9ncmFtIGJ1ZyBkZXRlY3RlZCBpbiBQZXJsOjpUaWR5OjpWZXJ0aWNhbEFsaWduZXIgc3ViIHN3ZWVwX3RvcF9kb3duIAp1bmRlZmluZWQgaW5kZXggZm9yIGdyb3VwIGxpbmUgY291bnQgJGdyb3VwX2xpbmVfY291bnQKRU9NCiAgICAgICAgICAgICAgICAkamJlZyA9ICRqbGluZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBteSAkYmFzZV9saW5lID0gJHJhbGxfbGluZXMtPlskamJlZ107CgogICAgICAgICAgICAjIEluaXRpYWxpemUgYSBnbG9iYWwgZmxhZyBzYXlpbmcgaWYgdGhlIGxhc3QgbGluZSBvZiB0aGUgZ3JvdXAKICAgICAgICAgICAgIyBzaG91bGQgbWF0Y2ggZW5kIG9mIGdyb3VwIGFuZCBhbHNvIHRlcm1pbmF0ZSB0aGUgZ3JvdXAuICBUaGVyZQogICAgICAgICAgICAjIHNob3VsZCBiZSBubyByZXR1cm5zIGJldHdlZW4gaGVyZSBhbmQgd2hlcmUgdGhlIGZsYWcgaXMgaGFuZGxlZAogICAgICAgICAgICAjIGF0IHRoZSBib3R0b20uCiAgICAgICAgICAgIG15ICRjb2xfbWF0Y2hpbmdfdGVybWluYWwgPSAwOwogICAgICAgICAgICBpZiAoIGRlZmluZWQoJGpfdGVybWluYWxfbWF0Y2gpICkgewoKICAgICAgICAgICAgICAgICMgcmVtZW1iZXIgdGhlIGNvbHVtbiBvZiB0aGUgdGVybWluYWwgPyBvciB7IHRvIG1hdGNoIHdpdGgKICAgICAgICAgICAgICAgICRjb2xfbWF0Y2hpbmdfdGVybWluYWwgPQogICAgICAgICAgICAgICAgICAkYmFzZV9saW5lLT5nZXRfY29sdW1uKCRqX3Rlcm1pbmFsX21hdGNoKTsKCiAgICAgICAgICAgICAgICAjIElnbm9yZSBhbiB1bmRlZmluZWQgdmFsdWUgYXMgYSBkZWZlbnNpdmUgc3RlcDsgc2hvdWxkbid0CiAgICAgICAgICAgICAgICAjIG5vcm1hbGx5IGhhcHBlbi4KICAgICAgICAgICAgICAgICRjb2xfbWF0Y2hpbmdfdGVybWluYWwgPSAwCiAgICAgICAgICAgICAgICAgIHVubGVzcyBkZWZpbmVkKCRjb2xfbWF0Y2hpbmdfdGVybWluYWwpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgIyBBbGxvdyBoYW5naW5nIHNpZGUgY29tbWVudCB0byBqb2luIGN1cnJlbnQgZ3JvdXAsIGlmIGFueS4gIFRoZQogICAgICAgICAgICAjIG9ubHkgYWR2YW50YWdlIGlzIHRvIGtlZXAgdGhlIG90aGVyIHRva2VucyBpbiB0aGUgc2FtZSBncm91cC4gRm9yCiAgICAgICAgICAgICMgZXhhbXBsZSwgdGhpcyB3b3VsZCBtYWtlIHRoZSAnPScgYWxpZ24gaGVyZToKICAgICAgICAgICAgIyAgJGF4ICAgICAgICAgPSAxOyAgICAgICAgICAgIyBzaWRlIGNvbW1lbnQKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBoYW5naW5nIHNpZGUgY29tbWVudAogICAgICAgICAgICAjICAkYm9vbmRvZ2dsZSA9IDU7ICAgICAgICAgICAjIHNpZGUgY29tbWVudAogICAgICAgICAgICAjICAkYmVldGxlICAgICA9IDU7ICAgICAgICAgICAjIHNpZGUgY29tbWVudAoKICAgICAgICAgICAgIyBoZXJlIGlzIGFub3RoZXIgZXhhbXBsZS4uCgogICAgICAgICAgICAjICBfcnRvY19uYW1lX2NvdW50ICAgPT4ge30sICAgICAgICAgICAgICAgICAgICMgaGFzaCB0byB0cmFjayAuLgogICAgICAgICAgICAjICBfcnBhY2thZ2Vfc3RhY2sgICAgPT4gW10sICAgICAgICAgICAgICAgICAgICMgc3RhY2sgdG8gY2hlY2sgLi4KICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5hbWUgY2hhbmdlcwogICAgICAgICAgICAjICBfcmxhc3RfbGV2ZWwgICAgICAgPT4gXCRsYXN0X2xldmVsLCAgICAgICAgICMgYnJhY2UgaW5kZW50YXRpb24KICAgICAgICAgICAgIwogICAgICAgICAgICAjCiAgICAgICAgICAgICMgSWYgdGhpcyB3ZXJlIG5vdCBkZXNpcmVkLCB0aGUgbmV4dCBzdGVwIGNvdWxkIGJlIHNraXBwZWQuCiAgICAgICAgICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICBpZiAoICRuZXdfbGluZS0+Z2V0X2lzX2hhbmdpbmdfc2lkZV9jb21tZW50KCkgKSB7CiAgICAgICAgICAgICAgICBqb2luX2hhbmdpbmdfY29tbWVudCggJG5ld19saW5lLCAkYmFzZV9saW5lICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgSWYgdGhpcyBsaW5lIGhhcyBubyBtYXRjaGluZyB0b2tlbnMsIHRoZW4gZmx1c2ggb3V0IHRoZSBsaW5lcwogICAgICAgICAgICAjIEJFRk9SRSB0aGlzIGxpbmUgdW5sZXNzIGJvdGggaXQgYW5kIHRoZSBwcmV2aW91cyBsaW5lIGhhdmUgc2lkZQogICAgICAgICAgICAjIGNvbW1lbnRzLiAgVGhpcyBwcmV2ZW50cyB0aGlzIGxpbmUgZnJvbSBwdXNoaW5nIHNpZGUgY29tZW50cyBvdXQKICAgICAgICAgICAgIyB0byB0aGUgcmlnaHQuCiAgICAgICAgICAgIGVsc2lmICggJG5ld19saW5lLT5nZXRfam1heCgpID09IDEgKSB7CgogICAgICAgICAgICAgICAgIyBUaGVyZSBhcmUgbm8gbWF0Y2hpbmcgdG9rZW5zLCBzbyBub3cgY2hlY2sgc2lkZSBjb21tZW50cy4KICAgICAgICAgICAgICAgICMgUHJvZ3JhbW1pbmcgbm90ZTogYWNjZXNzaW5nIGFycmF5cyB3aXRoIGluZGV4IC0xIGlzCiAgICAgICAgICAgICAgICAjIHJpc2t5IGluIFBlcmwsIGJ1dCB3ZSBoYXZlIHZlcmlmaWVkIHRoZXJlIGlzIGF0IGxlYXN0IG9uZQogICAgICAgICAgICAgICAgIyBsaW5lIGluIHRoZSBncm91cCBhbmQgdGhhdCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgZmllbGQuCiAgICAgICAgICAgICAgICBteSAkcHJldl9jb21tZW50ID0KICAgICAgICAgICAgICAgICAgJHJhbGxfbGluZXMtPlsgJGpsaW5lIC0gMSBdLT5nZXRfcmZpZWxkcygpLT5bLTFdOwogICAgICAgICAgICAgICAgbXkgJHNpZGVfY29tbWVudCA9ICRuZXdfbGluZS0+Z2V0X3JmaWVsZHMoKS0+Wy0xXTsKICAgICAgICAgICAgICAgIGVuZF9yZ3JvdXAoLTEpIHVubGVzcyAoICRzaWRlX2NvbW1lbnQgJiYgJHByZXZfY29tbWVudCApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFNlZSBpZiB0aGUgbmV3IGxpbmUgbWF0Y2hlcyBhbmQgZml0cyB0aGUgY3VycmVudCBncm91cCwKICAgICAgICAgICAgIyBpZiBpdCBzdGlsbCBleGlzdHMuIEZsdXNoIHRoZSBjdXJyZW50IGdyb3VwIGlmIG5vdC4KICAgICAgICAgICAgbXkgJG1hdGNoX2NvZGU7CiAgICAgICAgICAgIGlmICgkZ3JvdXBfbGluZV9jb3VudCkgewogICAgICAgICAgICAgICAgKCAkbWF0Y2hfY29kZSwgbXkgJGltYXhfYWxpZ24gKSA9CiAgICAgICAgICAgICAgICAgICRzZWxmLT5jaGVja19tYXRjaCggJG5ld19saW5lLCAkYmFzZV9saW5lLAogICAgICAgICAgICAgICAgICAgICRyYWxsX2xpbmVzLT5bICRqbGluZSAtIDEgXSApOwogICAgICAgICAgICAgICAgaWYgKCAkbWF0Y2hfY29kZSAhPSAyICkgeyBlbmRfcmdyb3VwKCRpbWF4X2FsaWduKSB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgU3RvcmUgdGhlIG5ldyBsaW5lCiAgICAgICAgICAgIGFkZF90b19yZ3JvdXAoJGpsaW5lKTsKCiAgICAgICAgICAgIGlmICggZGVmaW5lZCgkal90ZXJtaW5hbF9tYXRjaCkgKSB7CgogICAgICAgICAgICAgICAgIyBEZWNpZGUgaWYgd2Ugc2hvdWxkIGZpeCBhIHRlcm1pbmFsIG1hdGNoLiBXZSBjYW4gZWl0aGVyOgogICAgICAgICAgICAgICAgIyAxLiBmaXggaXQgYW5kIHByZXZlbnQgdGhlIHN3ZWVwX2xyIGZyb20gY2hhbmdpbmcgaXQsIG9yCiAgICAgICAgICAgICAgICAjIDIuIGxlYXZlIGl0IGFsb25lIGFuZCBsZXQgc3dlZXBfbHIgdHJ5IHRvIGZpeCBpdC4KCiAgICAgICAgICAgICAgICAjIFRoZSBjdXJyZW50IGxvZ2ljIGlzIHRvIGZpeCBpdCBpZjoKICAgICAgICAgICAgICAgICMgLWl0IGhhcyBub3Qgam9pbmVkIHRvIHByZXZpb3VzIGxpbmVzLAogICAgICAgICAgICAgICAgIyAtYW5kIGVpdGhlciB0aGUgcHJldmlvdXMgc3ViZ3JvdXAgaGFzIGp1c3QgMSBsaW5lLCBvcgogICAgICAgICAgICAgICAgIyAtdGhpcyBsaW5lIG1hdGNoZWQgYnV0IGRpZCBub3QgZml0IChzbyBzd2VlcCB3b24ndCB3b3JrKQogICAgICAgICAgICAgICAgbXkgJGZpeGl0OwogICAgICAgICAgICAgICAgaWYgKCAkZ3JvdXBfbGluZV9jb3VudCA9PSAxICkgewogICAgICAgICAgICAgICAgICAgICRmaXhpdCB8fD0gJG1hdGNoX2NvZGU7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJGZpeGl0ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIEB7JHJncm91cHN9ID4gMSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICggJGpiZWd4LCAkamVuZHggKSA9IEB7ICRyZ3JvdXBzLT5bLTJdIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkbmxpbmVzID0gJGplbmR4IC0gJGpiZWd4ICsgMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaXhpdCB8fD0gJG5saW5lcyA8PSAxOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkZml4aXQpIHsKICAgICAgICAgICAgICAgICAgICAkYmFzZV9saW5lID0gJG5ld19saW5lOwogICAgICAgICAgICAgICAgICAgIG15ICRjb2xfbm93ID0gJGJhc2VfbGluZS0+Z2V0X2NvbHVtbigkal90ZXJtaW5hbF9tYXRjaCk7CgogICAgICAgICAgICAgICAgICAgICMgSWdub3JlIGFuIHVuZGVmaW5lZCB2YWx1ZSBhcyBhIGRlZmVuc2l2ZSBzdGVwOyBzaG91bGRuJ3QKICAgICAgICAgICAgICAgICAgICAjIG5vcm1hbGx5IGhhcHBlbi4KICAgICAgICAgICAgICAgICAgICAkY29sX25vdyA9IDAgdW5sZXNzIGRlZmluZWQoJGNvbF9ub3cpOwoKICAgICAgICAgICAgICAgICAgICBteSAkcGFkID0gJGNvbF9tYXRjaGluZ190ZXJtaW5hbCAtICRjb2xfbm93OwogICAgICAgICAgICAgICAgICAgIG15ICRwYWRkaW5nX2F2YWlsYWJsZSA9CiAgICAgICAgICAgICAgICAgICAgICAkYmFzZV9saW5lLT5nZXRfYXZhaWxhYmxlX3NwYWNlX29uX3JpZ2h0KCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkY29sX25vdyAmJiAkcGFkID4gMCAmJiAkcGFkIDw9ICRwYWRkaW5nX2F2YWlsYWJsZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGJhc2VfbGluZS0+aW5jcmVhc2VfZmllbGRfd2lkdGgoICRqX3Rlcm1pbmFsX21hdGNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhZCApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBkbyBub3QgbGV0IHN3ZWVwX2xlZnRfdG9fcmlnaHQgY2hhbmdlIGFuIGlzb2xhdGVkICdlbHNlJwogICAgICAgICAgICAgICAgICAgIGlmICggISRuZXdfbGluZS0+Z2V0X2lzX3Rlcm1pbmFsX3Rlcm5hcnkoKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tfcGVudWx0aW1hdGVfbWF0Y2goKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbmRfcmdyb3VwKC0xKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBlbmQgdGhlIGdyb3VwIGlmIHdlIGtub3cgd2UgY2Fubm90IG1hdGNoIG5leHQgbGluZS4KICAgICAgICAgICAgZWxzaWYgKCAkbmV3X2xpbmUtPmdldF9lbmRfZ3JvdXAoKSApIHsKICAgICAgICAgICAgICAgIGVuZF9yZ3JvdXAoLTEpOwogICAgICAgICAgICB9CiAgICAgICAgfSAjIyBlbmQgbG9vcCBvdmVyIGxpbmVzCgogICAgICAgIGVuZF9yZ3JvdXAoLTEpOwogICAgICAgIHJldHVybiAoJHJncm91cHMpOwogICAgfQp9CgpzdWIgdHdvX2xpbmVfcGFkIHsKCiAgICBteSAoICRsaW5lX20sICRsaW5lLCAkaW1heF9taW4gKSA9IEBfOwoKICAgICMgR2l2ZW46CiAgICAjICB0d28gaXNvbGF0ZWQgKGxpc3QpIGxpbmVzCiAgICAjICBpbWF4X21pbiA9IG51bWJlciBvZiBjb21tb24gYWxpZ25tZW50IHRva2VucwogICAgIyBSZXR1cm46CiAgICAjICAkcGFkX21heCA9IG1heGltdW0gc3VnZ2VzdGVkIHBhZCBkaXN0bmNlCiAgICAjICAgICAgICAgICA9IDAgaWYgYWxpZ25tZW50IG5vdCByZWNvbW1lbmRlZAogICAgIyBOb3RlIHRoYXQgdGhpcyBpcyBvbmx5IGZvciB0d28gbGluZXMgd2hpY2ggZG8gbm90IGhhdmUgYWxpZ25tZW50IHRva2VucwogICAgIyBpbiBjb21tb24gd2l0aCBhbnkgb3RoZXIgbGluZXMuICBJdCBpcyBpbnRlbmRlZCBmb3IgbGlzdHMsIGJ1dCBpdCBtaWdodAogICAgIyBhbHNvIGJlIHVzZWQgZm9yIHR3byBub24tbGlzdCBsaW5lcyB3aXRoIGEgY29tbW9uIGxlYWRpbmcgJz0nLgoKICAgICMgQWxsb3cgYWxpZ25tZW50IGlmIHRoZSBkaWZmZXJlbmNlIGluIHRoZSB0d28gdW5wYWRkZWQgbGluZSBsZW5ndGhzCiAgICAjIGlzIG5vdCBtb3JlIHRoYW4gZWl0aGVyIGxpbmUgbGVuZ3RoLiAgVGhlIGlkZWEgaXMgdG8gYXZvaWQKICAgICMgYWxpZ25pbmcgbGluZXMgd2l0aCB2ZXJ5IGRpZmZlcmVudCBmaWVsZCBsZW5ndGhzLCBsaWtlIHRoZXNlIHR3bzoKCiAgICAjICAgWwogICAgIyAgICAgICAnVkFSQ0hBUicsIERCSTo6U1FMX1ZBUkNIQVIsIHVuZGVmLCAiJyIsICInIiwgdW5kZWYsIDAsIDEsCiAgICAjICAgICAgIDEsIDAsIDAsIDAsIHVuZGVmLCAwLCAwCiAgICAjICAgXTsKICAgIG15ICRyZmllbGRfbGVuZ3RocyAgID0gJGxpbmUtPmdldF9yZmllbGRfbGVuZ3RocygpOwogICAgbXkgJHJmaWVsZF9sZW5ndGhzX20gPSAkbGluZV9tLT5nZXRfcmZpZWxkX2xlbmd0aHMoKTsKCiAgICAjIFNhZmV0eSBjaGVjayAtIHNob3VsZG4ndCBoYXBwZW4KICAgIHJldHVybiAwCiAgICAgIHVubGVzcyAkaW1heF9taW4gPCBAeyRyZmllbGRfbGVuZ3Roc30gJiYgJGltYXhfbWluIDwgQHskcmZpZWxkX2xlbmd0aHNfbX07CgogICAgbXkgJGxlbnN1bV9tID0gMDsKICAgIG15ICRsZW5zdW0gICA9IDA7CiAgICBmb3IgKCBteSAkaSA9IDAgOyAkaSA8PSAkaW1heF9taW4gOyAkaSsrICkgewogICAgICAgICRsZW5zdW1fbSArPSAkcmZpZWxkX2xlbmd0aHNfbS0+WyRpXTsKICAgICAgICAkbGVuc3VtICAgKz0gJHJmaWVsZF9sZW5ndGhzLT5bJGldOwogICAgfQoKICAgIG15ICggJGxlbm1pbiwgJGxlbm1heCApID0KICAgICAgJGxlbnN1bSA+PSAkbGVuc3VtX20gPyAoICRsZW5zdW1fbSwgJGxlbnN1bSApIDogKCAkbGVuc3VtLCAkbGVuc3VtX20gKTsKCiAgICBteSAkcGF0dGVybnNfbWF0Y2g7CiAgICBpZiAoICRsaW5lX20tPmdldF9saXN0X3R5cGUoKSAmJiAkbGluZS0+Z2V0X2xpc3RfdHlwZSgpICkgewogICAgICAgICRwYXR0ZXJuc19tYXRjaCA9IDE7CiAgICAgICAgbXkgJHJwYXR0ZXJuc19tID0gJGxpbmVfbS0+Z2V0X3JwYXR0ZXJucygpOwogICAgICAgIG15ICRycGF0dGVybnMgICA9ICRsaW5lLT5nZXRfcnBhdHRlcm5zKCk7CiAgICAgICAgZm9yICggbXkgJGkgPSAwIDsgJGkgPD0gJGltYXhfbWluIDsgJGkrKyApIHsKICAgICAgICAgICAgbXkgJHBhdCAgID0gJHJwYXR0ZXJucy0+WyRpXTsKICAgICAgICAgICAgbXkgJHBhdF9tID0gJHJwYXR0ZXJuc19tLT5bJGldOwogICAgICAgICAgICBpZiAoICRwYXQgbmUgJHBhdF9tICkgeyAkcGF0dGVybnNfbWF0Y2ggPSAwOyBsYXN0IH0KICAgICAgICB9CiAgICB9CgogICAgbXkgJHBhZF9tYXggPSAkbGVubWF4OwogICAgaWYgKCAhJHBhdHRlcm5zX21hdGNoICYmICRsZW5tYXggPiAyICogJGxlbm1pbiApIHsgJHBhZF9tYXggPSAwIH0KCiAgICByZXR1cm4gJHBhZF9tYXg7Cn0KCnN1YiBzd2VlcF9sZWZ0X3RvX3JpZ2h0IHsKCiAgICBteSAoICRybGluZXMsICRyZ3JvdXBzLCAkZ3JvdXBfbGV2ZWwgKSA9IEBfOwoKICAgICMgU28gZmFyIHdlIGhhdmUgZGl2aWRlZCB0aGUgbGluZXMgaW50byBncm91cHMgaGF2aW5nIGFuIGVxdWFsIG51bWJlciBvZgogICAgIyBpZGVudGljYWwgYWxpZ25tZW50cy4gIEhlcmUgd2UgYXJlIGdvaW5nIHRvIGxvb2sgZm9yIGNvbW1vbiBsZWFkaW5nCiAgICAjIGFsaWdubWVudHMgYmV0d2VlbiB0aGUgZGlmZmVyZW50IGdyb3VwcyBhbmQgYWxpZ24gdGhlbSB3aGVuIHBvc3NpYmxlLgogICAgIyBGb3IgZXhhbXBsZSwgdGhlIHRocmVlIGxpbmVzIGJlbG93IGFyZSBpbiB0aHJlZSBncm91cHMgYmVjYXVzZSBlYWNoIGxpbmUKICAgICMgaGFzIGEgZGlmZmVyZW50IG51bWJlciBvZiBjb21tYXMuICBJbiB0aGlzIHJvdXRpbmUgd2Ugd2lsbCBzd2VlcCBmcm9tCiAgICAjIGxlZnQgdG8gcmlnaHQsIGFsaWduaW5nIHRoZSBsZWFkaW5nIGNvbW1hcyBhcyB3ZSBnbywgYnV0IHN0b3BwaW5nIGlmIHdlCiAgICAjIGhpdCB0aGUgbGluZSBsZW5ndGggbGltaXQuCgogICAgIyAgbXkgKCAkbnVtLCAkbnVtaSwgJG51bWosICAkeHl6YSwgJGthLCAgICR4eXpiLCAka2IsICRhZmYsICRlcnJvciApOwogICAgIyAgbXkgKCAkaSwgICAkaiwgICAgJGVycm9yLCAkYWZmLCAgJGFzdW0sICRhdmVjICk7CiAgICAjICBteSAoICRrbSwgICRhcmVhLCAkdmFyZWEgKTsKCiAgICAjIG5vdGhpbmcgdG8gZG8gaWYganVzdCBvbmUgZ3JvdXAKICAgIG15ICRuZ19tYXggPSBAeyRyZ3JvdXBzfSAtIDE7CiAgICByZXR1cm4gdW5sZXNzICggJG5nX21heCA+IDAgKTsKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIFN0ZXAgMTogTG9vcCBvdmVyIGdyb3VwcyB0byBmaW5kIGFsbCBjb21tb24gbGVhZGluZyBhbGlnbm1lbnQgdG9rZW5zCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgbXkgJGxpbmU7CiAgICBteSAkcnRva2VuczsKICAgIG15ICRpbWF4OyAgICAgIyBpbmRleCBvZiBtYXhpbXVtIG5vbi1zaWRlLWNvbW1lbnQgYWxpZ25tZW50IHRva2VuCiAgICBteSAkaXN0b3A7ICAgICMgYW4gb3B0aW9uYWwgc3RvcHBpbmcgaW5kZXgKICAgIG15ICRqYmVnOyAgICAgIyBzdGFydGluZyBsaW5lIGluZGV4CiAgICBteSAkamVuZDsgICAgICMgZW5kaW5nIGxpbmUgaW5kZXgKCiAgICBteSAkbGluZV9tOwogICAgbXkgJHJ0b2tlbnNfbTsKICAgIG15ICRpbWF4X207CiAgICBteSAkaXN0b3BfbTsKICAgIG15ICRqYmVnX207CiAgICBteSAkamVuZF9tOwoKICAgIG15ICRpc3RvcF9tbTsKCiAgICAjIExvb2sgYXQgbmVpZ2hib3JpbmcgcGFpcnMgb2YgZ3JvdXBzIGFuZCBmb3JtIGEgc2ltcGxlIGxpc3QKICAgICMgb2YgYWxsIGNvbW1vbiBsZWFkaW5nIGFsaWdubWVudCB0b2tlbnMuIEZvcmVhY2ggc3VjaCBtYXRjaCB3ZQogICAgIyBzdG9yZSBbJGksICRuZ10sIHdoZXJlCiAgICAjICAkaSA9IGluZGV4IG9mIHRoZSB0b2tlbiBpbiB0aGUgbGluZSAoMCwxLC4uLikKICAgICMgICRuZyBpcyB0aGUgc2Vjb25kIG9mIHRoZSB0d28gZ3JvdXBzIHdpdGggdGhpcyBjb21tb24gdG9rZW4KICAgIG15IEBpY29tbW9uOwoKICAgICMgSGFzaCB0byBob2xkIHRoZSBtYXhpbXVtIGFsaWdubWVudCBjaGFuZ2UgZm9yIGFueSBncm91cAogICAgbXkgJW1heF9tb3ZlOwoKICAgICMgYSBzbWFsbCBudW1iZXIgb2YgY29sdW1ucwogICAgbXkgJHNob3J0X3BhZCA9IDQ7CgogICAgbXkgJG5nID0gLTE7CiAgICBmb3JlYWNoIG15ICRpdGVtICggQHskcmdyb3Vwc30gKSB7CiAgICAgICAgJG5nKys7CgogICAgICAgICRpc3RvcF9tbSA9ICRpc3RvcF9tOwoKICAgICAgICAjIHNhdmUgX20gdmFsdWVzIG9mIHByZXZpb3VzIGdyb3VwCiAgICAgICAgJGxpbmVfbSAgICA9ICRsaW5lOwogICAgICAgICRydG9rZW5zX20gPSAkcnRva2VuczsKICAgICAgICAkaW1heF9tICAgID0gJGltYXg7CiAgICAgICAgJGlzdG9wX20gICA9ICRpc3RvcDsKICAgICAgICAkamJlZ19tICAgID0gJGpiZWc7CiAgICAgICAgJGplbmRfbSAgICA9ICRqZW5kOwoKICAgICAgICAjIEdldCB2YWx1ZXMgZm9yIHRoaXMgZ3JvdXAuIE5vdGUgdGhhdCB3ZSBqdXN0IGhhdmUgdG8gdXNlIHZhbHVlcyBmb3IKICAgICAgICAjIG9uZSBvZiB0aGUgbGluZXMgb2YgdGhlIGdyb3VwIHNpbmNlIGFsbCBtZW1iZXJzIGhhdmUgdGhlIHNhbWUKICAgICAgICAjIGFsaWdubWVudHMuCiAgICAgICAgKCAkamJlZywgJGplbmQsICRpc3RvcCApID0gQHskaXRlbX07CgogICAgICAgICRsaW5lICAgID0gJHJsaW5lcy0+WyRqYmVnXTsKICAgICAgICAkcnRva2VucyA9ICRsaW5lLT5nZXRfcnRva2VucygpOwogICAgICAgICRpbWF4ICAgID0gJGxpbmUtPmdldF9qbWF4KCkgLSAyOwogICAgICAgICRpc3RvcCAgID0gLTEgdW5sZXNzICggZGVmaW5lZCgkaXN0b3ApICk7CiAgICAgICAgJGlzdG9wICAgPSAkaW1heCBpZiAoICRpc3RvcCA+ICRpbWF4ICk7CgogICAgICAgICMgSW5pdGlhbGl6ZSBvbiBmaXJzdCBncm91cAogICAgICAgIG5leHQgaWYgKCAkbmcgPT0gMCApOwoKICAgICAgICAjIFVzZSB0aGUgbWluaW11bSBpbmRleCBsaW1pdCBvZiB0aGUgdHdvIGdyb3VwcwogICAgICAgIG15ICRpbWF4X21pbiA9ICRpbWF4ID4gJGltYXhfbSA/ICRpbWF4X20gOiAkaW1heDsKCiAgICAgICAgIyBBbHNvIGltcG9zZSBhIGxpbWl0IGlmIGdpdmVuLgogICAgICAgIGlmICggJGlzdG9wX20gPCAkaW1heF9taW4gKSB7CiAgICAgICAgICAgICRpbWF4X21pbiA9ICRpc3RvcF9tOwogICAgICAgIH0KCiAgICAgICAgIyBTcGVjaWFsIHRyZWF0bWVudCBvZiB0d28gb25lLWxpbmUgZ3JvdXBzIGlzb2xhdGVkIGZyb20gb3RoZXIgbGluZXMsCiAgICAgICAgIyB1bmxlc3MgdGhleSBmb3JtIGEgc2ltcGxlIGxpc3Qgb3IgYSB0ZXJtaW5hbCBtYXRjaC4gIE90aGVyd2lzZSB0aGUKICAgICAgICAjIGFsaWdubWVudCBjYW4gbG9vayBzdHJhbmdlIGluIHNvbWUgY2FzZXMuCiAgICAgICAgbXkgJGxpc3RfdHlwZSA9ICRybGluZXMtPlskamJlZ10tPmdldF9saXN0X3R5cGUoKTsKICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICRqZW5kID09ICRqYmVnCiAgICAgICAgICAgICYmICRqZW5kX20gPT0gJGpiZWdfbQogICAgICAgICAgICAmJiAoICRuZyA9PSAxIHx8ICRpc3RvcF9tbSA8IDAgKQogICAgICAgICAgICAmJiAoICRuZyA9PSAkbmdfbWF4IHx8ICRpc3RvcCA8IDAgKQogICAgICAgICAgICAmJiAhJGxpbmUtPmdldF9qX3Rlcm1pbmFsX21hdGNoKCkKCiAgICAgICAgICAgICMgT25seSBkbyB0aGlzIGZvciBpbXBlcmZlY3QgbWF0Y2hlcy4gVGhpcyBpcyBub3JtYWxseSB0cnVlIGV4Y2VwdAogICAgICAgICAgICAjIHdoZW4gdHdvIHBlcmZlY3QgbWF0Y2hlcyBjYW5ub3QgZm9ybSBhIGdyb3VwIGJlY2F1c2UgdGhlIGxpbmUKICAgICAgICAgICAgIyBsZW5ndGggbGltaXQgd291bGQgYmUgZXhjZWVkZWQuIEluIHRoYXQgY2FzZSB3ZSBjYW4gc3RpbGwgdHJ5CiAgICAgICAgICAgICMgdG8gbWF0Y2ggYXMgbWFueSBhbGlnbm1lbnRzIGFzIHBvc3NpYmxlLgogICAgICAgICAgICAmJiAoICRpbWF4ICE9ICRpbWF4X20gfHwgJGlzdG9wX20gIT0gJGltYXhfbSApCiAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgIyBXZSB3aWxsIGp1c3QgYWxpZ24gYXNzaWdubWVudHMgYW5kIHNpbXBsZSBsaXN0cwogICAgICAgICAgICBuZXh0IHVubGVzcyAoICRpbWF4X21pbiA+PSAwICk7CiAgICAgICAgICAgIG5leHQKICAgICAgICAgICAgICB1bmxlc3MgKCAkcnRva2Vucy0+WzBdID1+IC9ePVxkLwogICAgICAgICAgICAgICAgfHwgJGxpc3RfdHlwZSApOwoKICAgICAgICAgICAgIyBJbiB0aGlzIGNhc2Ugd2Ugd2lsbCBsaW1pdCBwYWRkaW5nIHRvIGEgc2hvcnQgZGlzdGFuY2UuICBUaGlzCiAgICAgICAgICAgICMgaXMgYSBjb21wcm9taXNlIHRvIGtlZXAgc29tZSB2ZXJ0aWNhbCBhbGlnbm1lbnQgYnV0IHByZXZlbnQgbGFyZ2UKICAgICAgICAgICAgIyBnYXBzLCB3aGljaCBkbyBub3QgbG9vayBnb29kIGZvciBqdXN0IHR3byBsaW5lcy4KICAgICAgICAgICAgbXkgJHBhZF9tYXggPQogICAgICAgICAgICAgIHR3b19saW5lX3BhZCggJHJsaW5lcy0+WyRqYmVnXSwgJHJsaW5lcy0+WyRqYmVnX21dLCAkaW1heF9taW4gKTsKICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCRwYWRfbWF4KTsKICAgICAgICAgICAgbXkgJG5nX20gPSAkbmcgLSAxOwogICAgICAgICAgICAkbWF4X21vdmV7IiRuZ19tIn0gPSAkcGFkX21heDsKICAgICAgICAgICAgJG1heF9tb3ZleyIkbmcifSAgID0gJHBhZF9tYXg7CiAgICAgICAgfQoKICAgICAgICAjIExvb3AgdG8gZmluZCBhbGwgY29tbW9uIGxlYWRpbmcgdG9rZW5zLgogICAgICAgIGlmICggJGltYXhfbWluID49IDAgKSB7CiAgICAgICAgICAgIGZvcmVhY2ggbXkgJGkgKCAwIC4uICRpbWF4X21pbiApIHsKICAgICAgICAgICAgICAgIG15ICR0b2sgICA9ICRydG9rZW5zLT5bJGldOwogICAgICAgICAgICAgICAgbXkgJHRva19tID0gJHJ0b2tlbnNfbS0+WyRpXTsKICAgICAgICAgICAgICAgIGxhc3QgaWYgKCAkdG9rIG5lICR0b2tfbSApOwogICAgICAgICAgICAgICAgcHVzaCBAaWNvbW1vbiwgWyAkaSwgJG5nLCAkdG9rIF07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gdW5sZXNzIEBpY29tbW9uOwoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIFN0ZXAgMjogUmVvcmRlciBhbmQgY29uc29saWRhdGUgdGhlIGxpc3QgaW50byBhIHRhc2sgbGlzdAogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAjIFdlIGhhdmUgdG8gd29yayBmaXJzdCBmcm9tIGxvd2VzdCB0b2tlbiBpbmRleCB0byBoaWdoZXN0LCB0aGVuIGJ5IGdyb3VwLAogICAgIyBzb3J0IG91ciBsaXN0IGZpcnN0IG9uIHRva2VuIGluZGV4IHRoZW4gZ3JvdXAgbnVtYmVyCiAgICBAaWNvbW1vbiA9IHNvcnQgeyAkYS0+WzBdIDw9PiAkYi0+WzBdIHx8ICRhLT5bMV0gPD0+ICRiLT5bMV0gfSBAaWNvbW1vbjsKCiAgICAjIE1ha2UgYSB0YXNrIGxpc3Qgb2YgdGhlIGZvcm0KICAgICMgICBbJGksIG5nX2JlZywgJG5nX2VuZCwgJHRva10sIC4uCiAgICAjIHdoZXJlCiAgICAjICAgJGkgaXMgdGhlIGluZGV4IG9mIHRoZSB0b2tlbiB0byBiZSBhbGlnbmVkCiAgICAjICAgJG5nX2JlZy4uJG5nX2VuZCBpcyB0aGUgZ3JvdXAgcmFuZ2UgZm9yIHRoaXMgYWN0aW9uCiAgICBteSBAdG9kbzsKICAgIG15ICggJGksICRuZ19lbmQsICR0b2sgKTsKICAgIGZvcmVhY2ggbXkgJGl0ZW0gKEBpY29tbW9uKSB7CiAgICAgICAgbXkgJG5nX2xhc3QgPSAkbmdfZW5kOwogICAgICAgIG15ICRpX2xhc3QgID0gJGk7CiAgICAgICAgKCAkaSwgJG5nX2VuZCwgJHRvayApID0gQHskaXRlbX07CiAgICAgICAgbXkgJG5nX2JlZyA9ICRuZ19lbmQgLSAxOwogICAgICAgIGlmICggZGVmaW5lZCgkbmdfbGFzdCkgJiYgJG5nX2JlZyA9PSAkbmdfbGFzdCAmJiAkaSA9PSAkaV9sYXN0ICkgewogICAgICAgICAgICBteSAkdmFyID0gcG9wKEB0b2RvKTsKICAgICAgICAgICAgJG5nX2JlZyA9ICR2YXItPlsxXTsKICAgICAgICB9CiAgICAgICAgbXkgKCAkcmF3X3RvaywgJGxldiwgJHRhZywgJHRva19jb3VudCApID0gZGVjb2RlX2FsaWdubWVudF90b2tlbigkdG9rKTsKICAgICAgICBwdXNoIEB0b2RvLCBbICRpLCAkbmdfYmVnLCAkbmdfZW5kLCAkcmF3X3RvaywgJGxldiBdOwogICAgfQoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMgU3RlcCAzOiBFeGVjdXRlIHRoZSB0YXNrIGxpc3QKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgIGRvX2xlZnRfdG9fcmlnaHRfc3dlZXAoICRybGluZXMsICRyZ3JvdXBzLCBcQHRvZG8sIFwlbWF4X21vdmUsICRzaG9ydF9wYWQsCiAgICAgICAgJGdyb3VwX2xldmVsICk7CiAgICByZXR1cm47Cn0KCnsgICAgIyMgY2xvc3VyZSBmb3Igc3ViIGRvX2xlZnRfdG9fcmlnaHRfc3dlZXAKCiAgICBteSAlaXNfZ29vZF9hbGlnbm1lbnRfdG9rZW47CgogICAgQkVHSU4gewoKICAgICAgICAjIE9uZSBvZiB0aGUgbW9zdCBkaWZmaWN1bHQgYXNwZWN0cyBvZiB2ZXJ0aWNhbCBhbGlnbm1lbnQgaXMga25vd2luZwogICAgICAgICMgd2hlbiBub3QgdG8gYWxpZ24uICBBbGlnbm1lbnQgY2FuIGdvIGZyb20gbG9va2luZyB2ZXJ5IG5pY2UgdG8gdmVyeQogICAgICAgICMgYmFkIHdoZW4gb3ZlcmRvbmUuICBJbiB0aGUgc3dlZXAgYWxnb3JpdGhtIHRoZXJlIGFyZSB0d28gc3BlY2lhbAogICAgICAgICMgY2FzZXMgd2hlcmUgd2UgbWF5IG5lZWQgdG8gbGltaXQgcGFkZGluZyB0byBhICckc2hvcnRfcGFkJyBkaXN0YW5jZQogICAgICAgICMgdG8gYXZvaWQgc29tZSB2ZXJ5IHVnbHkgZm9ybWF0dGluZzoKCiAgICAgICAgIyAxLiBUd28gaXNvbGF0ZWQgbGluZXMgd2l0aCBwYXJ0aWFsIGFsaWdubWVudAogICAgICAgICMgMi4gQSAndGFpbC13YWctZG9nJyBzaXR1YXRpb24sIGluIHdoaWNoIGEgc2luZ2xlIHRlcm1pbmFsCiAgICAgICAgIyAgICBsaW5lIHdpdGggcGFydGlhbCBhbGlnbm1lbnQgY291bGQgY2F1c2UgYSBzaWduaWZpY2FudCBwYWQKICAgICAgICAjICAgIGluY3JlYXNlIGluIG1hbnkgcHJldmlvdXMgbGluZXMgaWYgYWxsb3dlZCB0byBqb2luIHRoZSBhbGlnbm1lbnQuCgogICAgICAgICMgRm9yIG1vc3QgYWxpZ25tZW50IHRva2Vucywgd2Ugd2lsbCBhbGxvdyBvbmx5IGEgc21hbGwgcGFkIHRvIGJlCiAgICAgICAgIyBpbnRyb2R1Y2VkICh0aGUgaGFyZHdpcmVkICRzaG9ydF9wYWQgdmFyaWFibGUpIC4gQnV0IGZvciBzb21lICdnb29kJwogICAgICAgICMgYWxpZ25tZW50cyB3ZSBjYW4gYmUgbGVzcyByZXN0cmljdGl2ZS4KCiAgICAgICAgIyBUaGVzZSBhcmUgJ2dvb2QnIGFsaWdubWVudHMsIHdoaWNoIGFyZSBhbGxvd2VkIG1vcmUgcGFkZGluZzoKICAgICAgICBteSBAcSA9IHF3KAogICAgICAgICAgPT4gPSA/IGlmIHVubGVzcyBvciB8fCB7CiAgICAgICAgKTsKICAgICAgICBwdXNoIEBxLCAnLCc7CiAgICAgICAgQGlzX2dvb2RfYWxpZ25tZW50X3Rva2Vue0BxfSA9ICgwKSB4IHNjYWxhcihAcSk7CgogICAgICAgICMgUHJvbW90ZSBhIGZldyBvZiB0aGVzZSB0byAnYmVzdCcsIHdpdGggZXNzZW50aWFsbHkgbm8gcGFkIGxpbWl0OgogICAgICAgICRpc19nb29kX2FsaWdubWVudF90b2tlbnsnPSd9ICAgICAgPSAxOwogICAgICAgICRpc19nb29kX2FsaWdubWVudF90b2tlbnsnaWYnfSAgICAgPSAxOwogICAgICAgICRpc19nb29kX2FsaWdubWVudF90b2tlbnsndW5sZXNzJ30gPSAxOwogICAgICAgICRpc19nb29kX2FsaWdubWVudF90b2tlbnsnPT4nfSAgICAgPSAxCgogICAgICAgICAgIyBOb3RlIHRoZSBoYXNoIHZhbHVlcyBhcmUgc2V0IHNvIHRoYXQ6CiAgICAgICAgICAjICAgICAgICAgaWYgKCRpc19nb29kX2FsaWdubWVudF90b2tlbnskcmF3X3Rva30pID0+IGJlc3QKICAgICAgICAgICMgaWYgZGVmaW5lZCAoJGlzX2dvb2RfYWxpZ25tZW50X3Rva2VueyRyYXdfdG9rfSkgPT4gZ29vZCBvciBiZXN0CgogICAgfQoKICAgIHN1YiBkb19sZWZ0X3RvX3JpZ2h0X3N3ZWVwIHsKICAgICAgICBteSAoICRybGluZXMsICRyZ3JvdXBzLCAkcnRvZG8sICRybWF4X21vdmUsICRzaG9ydF9wYWQsICRncm91cF9sZXZlbCApCiAgICAgICAgICA9IEBfOwoKICAgICAgICAjICRibG9ja2luZ19sZXZlbFskbmogaXMgdGhlIGxldmVsIGF0IGEgbWF0Y2ggZmFpbHVyZSBiZXR3ZWVuIGdyb3VwcwogICAgICAgICMgJG5nLTEgYW5kICRuZwogICAgICAgIG15IEBibG9ja2luZ19sZXZlbDsKICAgICAgICBteSAkZ3JvdXBfbGlzdF90eXBlID0gJHJsaW5lcy0+WzBdLT5nZXRfbGlzdF90eXBlKCk7CgogICAgICAgIG15ICRtb3ZlX3RvX2NvbW1vbl9jb2x1bW4gPSBzdWIgewoKICAgICAgICAgICAgIyBNb3ZlIHRoZSBhbGlnbm1lbnQgY29sdW1uIG9mIHRva2VuICRpdG9rIHRvICRjb2xfd2FudCBmb3IgYQogICAgICAgICAgICAjIHNlcXVlbmNlIG9mIGdyb3Vwcy4KICAgICAgICAgICAgbXkgKCAkbmdiLCAkbmdlLCAkaXRvaywgJGNvbF93YW50LCAkcmF3X3RvayApID0gQF87CiAgICAgICAgICAgIHJldHVybiB1bmxlc3MgKCBkZWZpbmVkKCRuZ2IpICYmICRuZ2UgPiAkbmdiICk7CiAgICAgICAgICAgIGZvcmVhY2ggbXkgJG5nICggJG5nYiAuLiAkbmdlICkgewoKICAgICAgICAgICAgICAgIG15ICggJGpiZWcsICRqZW5kICkgPSBAeyAkcmdyb3Vwcy0+WyRuZ10gfTsKICAgICAgICAgICAgICAgIG15ICRsaW5lICA9ICRybGluZXMtPlskamJlZ107CiAgICAgICAgICAgICAgICBteSAkY29sICAgPSAkbGluZS0+Z2V0X2NvbHVtbigkaXRvayk7CiAgICAgICAgICAgICAgICBteSAkYXZhaWwgPSAkbGluZS0+Z2V0X2F2YWlsYWJsZV9zcGFjZV9vbl9yaWdodCgpOwogICAgICAgICAgICAgICAgbXkgJG1vdmUgID0gJGNvbF93YW50IC0gJGNvbDsKICAgICAgICAgICAgICAgIGlmICggJG1vdmUgPiAwICkgewoKICAgICAgICAgICAgICAgICAgICAjIGxpbWl0IHBhZGRpbmcgaW5jcmVhc2UgaW4gaXNvbGF0ZWQgdHdvIGxpbmVzCiAgICAgICAgICAgICAgICAgICAgbmV4dAogICAgICAgICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCAkcm1heF9tb3ZlLT57JG5nfSApCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRtb3ZlID4gJHJtYXhfbW92ZS0+eyRuZ30KICAgICAgICAgICAgICAgICAgICAgICAgJiYgISRpc19nb29kX2FsaWdubWVudF90b2tlbnskcmF3X3Rva30gKTsKCiAgICAgICAgICAgICAgICAgICAgJGxpbmUtPmluY3JlYXNlX2ZpZWxkX3dpZHRoKCAkaXRvaywgJG1vdmUgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJG1vdmUgPCAwICkgewoKICAgICAgICAgICAgICAgICAgICAjIHNwb3QgdG8gdGFrZSBzcGVjaWFsIGFjdGlvbiBvbiBmYWlsdXJlIHRvIG1vdmUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH07CgogICAgICAgIGZvcmVhY2ggbXkgJHRhc2sgKCBAeyRydG9kb30gKSB7CiAgICAgICAgICAgIG15ICggJGl0b2ssICRuZ19iZWcsICRuZ19lbmQsICRyYXdfdG9rLCAkbGV2ICkgPSBAeyR0YXNrfTsKCiAgICAgICAgICAgICMgTm90aGluZyB0byBkbyBmb3IgYSBzaW5nbGUgZ3JvdXAKICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCAkbmdfZW5kID4gJG5nX2JlZyApOwoKICAgICAgICAgICAgbXkgJG5nX2ZpcnN0OyAgIyBpbmRleCBvZiB0aGUgZmlyc3QgZ3JvdXAgb2YgYSBjb250aW51b3VzIHNlcXVlbmNlCiAgICAgICAgICAgIG15ICRjb2xfd2FudDsgICMgdGhlIGNvbW1vbiBhbGlnbm1lbnQgY29sdW1uIG9mIGEgc2VxdWVuY2Ugb2YgZ3JvdXBzCiAgICAgICAgICAgIG15ICRjb2xfbGltaXQ7ICMgbWF4aW11bSBjb2x1bW4gYmVmb3JlIGJ1bXBpbmcgaW50byBtYXggbGluZSBsZW5ndGgKICAgICAgICAgICAgbXkgJGxpbmVfY291bnRfbmdfbSA9IDA7CiAgICAgICAgICAgIG15ICRqbWF4X207CiAgICAgICAgICAgIG15ICRpdF9zdG9wX207CgogICAgICAgICAgICAjIExvb3Agb3ZlciB0aGUgZ3JvdXBzCiAgICAgICAgICAgICMgJ2l4XycgPSBpbmRleCBpbiB0aGUgYXJyYXkgb2YgbGluZXMKICAgICAgICAgICAgIyAnbmdfJyA9IGluZGV4IGluIHRoZSBhcnJheSBvZiBncm91cHMKICAgICAgICAgICAgIyAnaXRfJyA9IGluZGV4IGluIHRoZSBhcnJheSBvZiB0b2tlbnMKICAgICAgICAgICAgbXkgJGl4X21pbiAgICAgID0gJHJncm91cHMtPlskbmdfYmVnXS0+WzBdOwogICAgICAgICAgICBteSAkaXhfbWF4ICAgICAgPSAkcmdyb3Vwcy0+WyRuZ19lbmRdLT5bMV07CiAgICAgICAgICAgIG15ICRsaW5lc190b3RhbCA9ICRpeF9tYXggLSAkaXhfbWluICsgMTsKICAgICAgICAgICAgZm9yZWFjaCBteSAkbmcgKCAkbmdfYmVnIC4uICRuZ19lbmQgKSB7CiAgICAgICAgICAgICAgICBteSAoICRpeF9iZWcsICRpeF9lbmQsICRpdF9zdG9wICkgPSBAeyAkcmdyb3Vwcy0+WyRuZ10gfTsKICAgICAgICAgICAgICAgIG15ICRsaW5lX2NvdW50X25nID0gJGl4X2VuZCAtICRpeF9iZWcgKyAxOwoKICAgICAgICAgICAgICAgICMgSW1wb3J0YW50OiBub3RlIHRoYXQgc2luY2UgYWxsIGxpbmVzIGluIGEgZ3JvdXAgaGF2ZSBhIGNvbW1vbgogICAgICAgICAgICAgICAgIyBhbGlnbm1lbnRzIG9iamVjdCwgd2UganVzdCBoYXZlIHRvIHdvcmsgb24gb25lIG9mIHRoZSBsaW5lcwogICAgICAgICAgICAgICAgIyAodGhlIGZpcnN0IGxpbmUpLiAgQWxsIG9mIHRoZSByZXN0IHdpbGwgYmUgY2hhbmdlZAogICAgICAgICAgICAgICAgIyBhdXRvbWF0aWNhbGx5LgogICAgICAgICAgICAgICAgbXkgJGxpbmUgPSAkcmxpbmVzLT5bJGl4X2JlZ107CiAgICAgICAgICAgICAgICBteSAkam1heCA9ICRsaW5lLT5nZXRfam1heCgpOwoKICAgICAgICAgICAgICAgICMgdGhlIG1heGltdW0gc3BhY2Ugd2l0aG91dCBleGNlZWRpbmcgdGhlIGxpbmUgbGVuZ3RoOgogICAgICAgICAgICAgICAgbXkgJGF2YWlsICAgPSAkbGluZS0+Z2V0X2F2YWlsYWJsZV9zcGFjZV9vbl9yaWdodCgpOwogICAgICAgICAgICAgICAgbXkgJGNvbCAgICAgPSAkbGluZS0+Z2V0X2NvbHVtbigkaXRvayk7CiAgICAgICAgICAgICAgICBteSAkY29sX21heCA9ICRjb2wgKyAkYXZhaWw7CgogICAgICAgICAgICAgICAgIyBJbml0aWFsaXplIG9uIGZpcnN0IGdyb3VwCiAgICAgICAgICAgICAgICBpZiAoICFkZWZpbmVkKCRjb2xfd2FudCkgKSB7CiAgICAgICAgICAgICAgICAgICAgJG5nX2ZpcnN0ICAgICAgICA9ICRuZzsKICAgICAgICAgICAgICAgICAgICAkY29sX3dhbnQgICAgICAgID0gJGNvbDsKICAgICAgICAgICAgICAgICAgICAkY29sX2xpbWl0ICAgICAgID0gJGNvbF9tYXg7CiAgICAgICAgICAgICAgICAgICAgJGxpbmVfY291bnRfbmdfbSA9ICRsaW5lX2NvdW50X25nOwogICAgICAgICAgICAgICAgICAgICRqbWF4X20gICAgICAgICAgPSAkam1heDsKICAgICAgICAgICAgICAgICAgICAkaXRfc3RvcF9tICAgICAgID0gJGl0X3N0b3A7CiAgICAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIFJVTEU6IFRocm93IGEgYmxvY2tpbmcgZmxhZyB1cG9uIGVuY291bnRlcmluZyBhIHRva2VuIGxldmVsCiAgICAgICAgICAgICAgICAjIGRpZmZlcmVudCBmcm9tIHRoZSBsZXZlbCBvZiB0aGUgZmlyc3QgYmxvY2tpbmcgdG9rZW4uICBGb3IKICAgICAgICAgICAgICAgICMgZXhhbXBsZSwgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCBpZiB0aGUgPSBtYXRjaGVzIGdldAogICAgICAgICAgICAgICAgIyBibG9ja2VkIGJldHdlZW4gdHdvIGdyb3VwcyBhcyBzaG93biwgdGhlbiB3ZSB3YW50IHRvIHN0YXJ0CiAgICAgICAgICAgICAgICAjIGJsb2NraW5nIG1hdGNoZXMgYXQgdGhlIGNvbW1hcywgd2hpY2ggYXJlIGF0IGRlZXBlciBsZXZlbCwgc28KICAgICAgICAgICAgICAgICMgdGhhdCB3ZSBkbyBub3QgZ2V0IHRoZSBiaWcgZ2FwcyBzaG93biBoZXJlOgoKICAgICAgICAgICAgICAgICMgIG15ICR1bmtub3duMyA9IHBhY2soICJ2IiwgICAgICAgICAgLTIgKTsKICAgICAgICAgICAgICAgICMgIG15ICR1bmtub3duNCA9IHBhY2soICJ2IiwgICAgICAgICAgMHgwOSApOwogICAgICAgICAgICAgICAgIyAgbXkgJHVua25vd241ID0gcGFjayggIlZWViIsICAgICAgICAweDA2LCAweDAwLCAweDAwICk7CiAgICAgICAgICAgICAgICAjICBteSAkbnVtX2JiZF9ibG9ja3MgID0gcGFjayggIlYiLCAgICRudW1fbGlzdHMgKTsKICAgICAgICAgICAgICAgICMgIG15ICRyb290X3N0YXJ0YmxvY2sgPSBwYWNrKCAiViIsICAgJHJvb3Rfc3RhcnQgKTsKICAgICAgICAgICAgICAgICMgIG15ICR1bmtub3duNiAgICAgICAgPSBwYWNrKCAiVlYiLCAgMHgwMCwgMHgxMDAwICk7CgogICAgICAgICAgICAgICAgIyBPbiB0aGUgb3RoZXIgaGFuZCwgaXQgaXMgb2theSB0byBrZWVwIG1hdGNoaW5nIGF0IHRoZSBzYW1lCiAgICAgICAgICAgICAgICAjIGxldmVsIHN1Y2ggYXMgaW4gYSBzaW1wbGUgbGlzdCBvZiBjb21tYXMgYW5kL29yIGZhdCBhcnJvcnMuCgogICAgICAgICAgICAgICAgbXkgJGlzX2Jsb2NrZWQgPSBkZWZpbmVkKCAkYmxvY2tpbmdfbGV2ZWxbJG5nXSApCiAgICAgICAgICAgICAgICAgICYmICRsZXYgPiAkYmxvY2tpbmdfbGV2ZWxbJG5nXTsKCiAgICAgICAgICAgICAgICAjIFRBSUwtV0FHLURPRyBSVUxFOiBwcmV2ZW50IGEgJ3RhaWwtd2FnLWRvZycgc3luZHJvbSwgbWVhbmluZzoKICAgICAgICAgICAgICAgICMgRG8gbm90IGxldCBvbmUgb3IgdHdvIGxpbmVzIHdpdGggYSAqKmRpZmZlcmVudCBudW1iZXIgb2YKICAgICAgICAgICAgICAgICMgYWxpZ25tZW50cyoqIG9wZW4gdXAgYSBiaWcgZ2FwIGluIGEgbGFyZ2UgYmxvY2suICBGb3IKICAgICAgICAgICAgICAgICMgZXhhbXBsZSwgd2Ugd2lsbCBwcmV2ZW50IHNvbWV0aGluZyBsaWtlIHRoaXMsIHdoZXJlIHRoZSBmaXJzdAogICAgICAgICAgICAgICAgIyBsaW5lIHByeXMgb3BlbiB0aGUgcmVzdDoKCiAgICAgICAgICAgICMgICR3b3Jrc2hlZXQtPndyaXRlKCAiQjciLCAiaHR0cDovL3d3dy5wZXJsLmNvbSIsIHVuZGVmLCAkZm9ybWF0ICk7CiAgICAgICAgICAgICMgICR3b3Jrc2hlZXQtPndyaXRlKCAiQzciLCAiIiwgICAgICAgICAgICAgICAgICAgICRmb3JtYXQgKTsKICAgICAgICAgICAgIyAgJHdvcmtzaGVldC0+d3JpdGUoICJENyIsICIiLCAgICAgICAgICAgICAgICAgICAgJGZvcm1hdCApOwogICAgICAgICAgICAjICAkd29ya3NoZWV0LT53cml0ZSggIkQ4IiwgIiIsICAgICAgICAgICAgICAgICAgICAkZm9ybWF0ICk7CiAgICAgICAgICAgICMgICR3b3Jrc2hlZXQtPndyaXRlKCAiRDgiLCAiIiwgICAgICAgICAgICAgICAgICAgICRmb3JtYXQgKTsKCiAgICAgICAgICAgICAgICAjIFdlIHNob3VsZCBleGNsdWRlIGZyb20gY29uc2lkZXJhdGlvbiB0d28gZ3JvdXBzIHdoaWNoIGFyZQogICAgICAgICAgICAgICAgIyBlZmZlY3RpdmVseSB0aGUgc2FtZSBidXQgc2VwYXJhdGVkIGJlY2F1c2Ugb25lIGRvZXMgbm90CiAgICAgICAgICAgICAgICAjIGZpdCBpbiB0aGUgbWF4aW11bSBhbGxvd2VkIGxpbmUgbGVuZ3RoLgogICAgICAgICAgICAgICAgbXkgJGlzX3NhbWVfZ3JvdXAgPQogICAgICAgICAgICAgICAgICAkam1heCA9PSAkam1heF9tICYmICRpdF9zdG9wX20gPT0gJGptYXhfbSAtIDI7CgogICAgICAgICAgICAgICAgbXkgJGxpbmVzX2Fib3ZlID0gJGl4X2JlZyAtICRpeF9taW47CiAgICAgICAgICAgICAgICBteSAkbGluZXNfYmVsb3cgPSAkbGluZXNfdG90YWwgLSAkbGluZXNfYWJvdmU7CgogICAgICAgICAgICAgICAgIyBJbmNyZWFzZSB0aGUgdG9sZXJhYmxlIGdhcCBmb3IgY2VydGFpbiBmYXZvcmFibGUgZmFjdG9ycwogICAgICAgICAgICAgICAgbXkgJGZhY3RvciAgICA9IDE7CiAgICAgICAgICAgICAgICBteSAkdG9wX2xldmVsID0gJGxldiA9PSAkZ3JvdXBfbGV2ZWw7CgogICAgICAgICAgICAgICAgIyBBbGlnbiBiZXN0IHRvcCBsZXZlbCBhbGlnbm1lbnQgdG9rZW5zIGxpa2UgJz0nLCAnaWYnLCAuLi4KICAgICAgICAgICAgICAgICMgQSBmYWN0b3Igb2YgMTAgYWxsb3dzIGEgZ2FwIG9mIHVwIHRvIDQwIHNwYWNlcwogICAgICAgICAgICAgICAgaWYgKCAkdG9wX2xldmVsICYmICRpc19nb29kX2FsaWdubWVudF90b2tlbnskcmF3X3Rva30gKSB7CiAgICAgICAgICAgICAgICAgICAgJGZhY3RvciA9IDEwOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgT3RoZXJ3aXNlIGFsbG93IHNvbWUgbWluaW1hbCBwYWRkaW5nIG9mIGdvb2QgYWxpZ25tZW50cwogICAgICAgICAgICAgICAgZWxzaWYgKAoKICAgICAgICAgICAgICAgICAgICBkZWZpbmVkKCAkaXNfZ29vZF9hbGlnbm1lbnRfdG9rZW57JHJhd190b2t9ICkKCiAgICAgICAgICAgICAgICAgICAgIyBXZSBoYXZlIHRvIGJlIGNhcmVmdWwgaWYgdGhlcmUgYXJlIGp1c3QgMiBsaW5lcy4gIFRoaXMKICAgICAgICAgICAgICAgICAgICAjIHR3by1saW5lIGZhY3RvciBhbGxvd3MgbGFyZ2UgZ2FwcyBvbmx5IGZvciAyIGxpbmVzIHdoaWNoCiAgICAgICAgICAgICAgICAgICAgIyBhcmUgc2ltcGxlIGxpc3RzIHdpdGggZmV3ZXIgaXRlbXMgb24gdGhlIHNlY29uZCBsaW5lLiBJdAogICAgICAgICAgICAgICAgICAgICMgZ2l2ZXMgcmVzdWx0cyBzaW1pbGFyIHRvIHByZXZpb3VzIHZlcnNpb25zIG9mIHBlcmx0aWR5LgogICAgICAgICAgICAgICAgICAgICYmICggICAkbGluZXNfdG90YWwgPiAyCiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRncm91cF9saXN0X3R5cGUgJiYgJGptYXggPCAkam1heF9tICYmICR0b3BfbGV2ZWwgKQogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJGZhY3RvciArPSAxOwogICAgICAgICAgICAgICAgICAgIGlmICgkdG9wX2xldmVsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmYWN0b3IgKz0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJGlzX2JpZ19nYXA7CiAgICAgICAgICAgICAgICBpZiAoICEkaXNfc2FtZV9ncm91cCApIHsKICAgICAgICAgICAgICAgICAgICAkaXNfYmlnX2dhcCB8fD0KICAgICAgICAgICAgICAgICAgICAgICggICAgICAkbGluZXNfYWJvdmUgPT0gMQogICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRsaW5lc19hYm92ZSA9PSAyICYmICRsaW5lc19iZWxvdyA+PSA0ICkKICAgICAgICAgICAgICAgICAgICAgICYmICRjb2xfd2FudCA+ICRjb2wgKyAkc2hvcnRfcGFkICogJGZhY3RvcjsKICAgICAgICAgICAgICAgICAgICAkaXNfYmlnX2dhcCB8fD0KICAgICAgICAgICAgICAgICAgICAgICggICAgICAkbGluZXNfYmVsb3cgPT0gMQogICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRsaW5lc19iZWxvdyA9PSAyICYmICRsaW5lc19hYm92ZSA+PSA0ICkKICAgICAgICAgICAgICAgICAgICAgICYmICRjb2wgPiAkY29sX3dhbnQgKyAkc2hvcnRfcGFkICogJGZhY3RvcjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGlmIG1hdGNoIGlzIGxpbWl0ZWQgYnkgZ2FwIHNpemUsIHN0b3AgYWxpZ25pbmcgYXQgdGhpcyBsZXZlbAogICAgICAgICAgICAgICAgaWYgKCRpc19iaWdfZ2FwKSB7CiAgICAgICAgICAgICAgICAgICAgJGJsb2NraW5nX2xldmVsWyRuZ10gPSAkbGV2IC0gMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHF1aXQgYW5kIHJlc3RhcnQgaWYgaXQgY2Fubm90IGpvaW4gdGhpcyBiYXRjaAogICAgICAgICAgICAgICAgaWYgKCAgICRjb2xfd2FudCA+ICRjb2xfbWF4CiAgICAgICAgICAgICAgICAgICAgfHwgJGNvbCA+ICRjb2xfbGltaXQKICAgICAgICAgICAgICAgICAgICB8fCAkaXNfYmlnX2dhcAogICAgICAgICAgICAgICAgICAgIHx8ICRpc19ibG9ja2VkICkKICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgIyByZW1lbWJlciB0aGUgbGV2ZWwgb2YgdGhlIGZpcnN0IGJsb2NraW5nIHRva2VuCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCggJGJsb2NraW5nX2xldmVsWyRuZ10gKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGJsb2NraW5nX2xldmVsWyRuZ10gPSAkbGV2OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJG1vdmVfdG9fY29tbW9uX2NvbHVtbi0+KAogICAgICAgICAgICAgICAgICAgICAgICAkbmdfZmlyc3QsICRuZyAtIDEsICRpdG9rLCAkY29sX3dhbnQsICRyYXdfdG9rCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkbmdfZmlyc3QgICAgICAgID0gJG5nOwogICAgICAgICAgICAgICAgICAgICRjb2xfd2FudCAgICAgICAgPSAkY29sOwogICAgICAgICAgICAgICAgICAgICRjb2xfbGltaXQgICAgICAgPSAkY29sX21heDsKICAgICAgICAgICAgICAgICAgICAkbGluZV9jb3VudF9uZ19tID0gJGxpbmVfY291bnRfbmc7CiAgICAgICAgICAgICAgICAgICAgJGptYXhfbSAgICAgICAgICA9ICRqbWF4OwogICAgICAgICAgICAgICAgICAgICRpdF9zdG9wX20gICAgICAgPSAkaXRfc3RvcDsKICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRsaW5lX2NvdW50X25nX20gKz0gJGxpbmVfY291bnRfbmc7CgogICAgICAgICAgICAgICAgIyB1cGRhdGUgdGhlIGNvbW1vbiBjb2x1bW4gYW5kIGxpbWl0CiAgICAgICAgICAgICAgICBpZiAoICRjb2wgPiAkY29sX3dhbnQgKSAgICAgIHsgJGNvbF93YW50ICA9ICRjb2wgfQogICAgICAgICAgICAgICAgaWYgKCAkY29sX21heCA8ICRjb2xfbGltaXQgKSB7ICRjb2xfbGltaXQgPSAkY29sX21heCB9CgogICAgICAgICAgICB9ICMjIGVuZCBsb29wIG92ZXIgZ3JvdXBzCgogICAgICAgICAgICBpZiAoICRuZ19lbmQgPiAkbmdfZmlyc3QgKSB7CiAgICAgICAgICAgICAgICAkbW92ZV90b19jb21tb25fY29sdW1uLT4oCiAgICAgICAgICAgICAgICAgICAgJG5nX2ZpcnN0LCAkbmdfZW5kLCAkaXRvaywgJGNvbF93YW50LCAkcmF3X3RvawogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfSAjIyBlbmQgbG9vcCBvdmVyIGdyb3VwcyBmb3Igb25lIHRhc2sKICAgICAgICB9ICMjIGVuZCBsb29wIG92ZXIgdGFza3MKCiAgICAgICAgcmV0dXJuOwogICAgfQp9CgpzdWIgZGVsZXRlX3NlbGVjdGVkX3Rva2VucyB7CgogICAgbXkgKCAkbGluZV9vYmosICRyaWRlbCApID0gQF87CgogICAgIyAkbGluZV9vYmogICAgaXMgdGhlIGxpbmUgdG8gYmUgbW9kaWZpZWQKICAgICMgJHJpZGVsICAgICAgIGlzIGEgcmVmIHRvIGxpc3Qgb2YgaW5kZXhlcyB0byBiZSBkZWxldGVkCgogICAgIyByZW1vdmUgYW4gdW51c2VkIGFsaWdubWVudCB0b2tlbihzKSB0byBpbXByb3ZlIGFsaWdubWVudCBjaGFuY2VzCgogICAgcmV0dXJuIHVubGVzcyAoIGRlZmluZWQoJGxpbmVfb2JqKSAmJiBkZWZpbmVkKCRyaWRlbCkgJiYgQHskcmlkZWx9ICk7CgogICAgbXkgJGptYXhfb2xkICAgICAgICAgICA9ICRsaW5lX29iai0+Z2V0X2ptYXgoKTsKICAgIG15ICRyZmllbGRzX29sZCAgICAgICAgPSAkbGluZV9vYmotPmdldF9yZmllbGRzKCk7CiAgICBteSAkcmZpZWxkX2xlbmd0aHNfb2xkID0gJGxpbmVfb2JqLT5nZXRfcmZpZWxkX2xlbmd0aHMoKTsKICAgIG15ICRycGF0dGVybnNfb2xkICAgICAgPSAkbGluZV9vYmotPmdldF9ycGF0dGVybnMoKTsKICAgIG15ICRydG9rZW5zX29sZCAgICAgICAgPSAkbGluZV9vYmotPmdldF9ydG9rZW5zKCk7CiAgICBteSAkal90ZXJtaW5hbF9tYXRjaCAgID0gJGxpbmVfb2JqLT5nZXRfal90ZXJtaW5hbF9tYXRjaCgpOwoKICAgIHVzZSBjb25zdGFudCBFWFBMQUlOX0RFTEVURV9TRUxFQ1RFRCA9PiAwOwoKICAgIGxvY2FsICQiID0gJz4gPCc7CiAgICBFWFBMQUlOX0RFTEVURV9TRUxFQ1RFRCAmJiBwcmludCA8PEVPTTsKZGVsZXRlIGluZGV4ZXM6IDxAeyRyaWRlbH0+Cm9sZCBqbWF4OiAkam1heF9vbGQKb2xkIHRva2VuczogPEB7JHJ0b2tlbnNfb2xkfT4Kb2xkIHBhdHRlcm5zOiA8QHskcnBhdHRlcm5zX29sZH0+Cm9sZCBmaWVsZHM6IDxAeyRyZmllbGRzX29sZH0+Cm9sZCBmaWVsZF9sZW5ndGhzOiA8QHskcmZpZWxkX2xlbmd0aHNfb2xkfT4KRU9NCgogICAgbXkgJHJmaWVsZHNfbmV3ICAgICAgICA9IFtdOwogICAgbXkgJHJwYXR0ZXJuc19uZXcgICAgICA9IFtdOwogICAgbXkgJHJ0b2tlbnNfbmV3ICAgICAgICA9IFtdOwogICAgbXkgJHJmaWVsZF9sZW5ndGhzX25ldyA9IFtdOwoKICAgICMgQ29udmVydCBkZWxldGlvbiBsaXN0IHRvIGEgaGFzaCB0byBhbGxvdyBhbnkgb3JkZXIsIG11bHRpcGxlIGVudHJpZXMsCiAgICAjIGFuZCBhdm9pZCBwcm9ibGVtcyB3aXRoIGluZGV4IHZhbHVlcyBvdXQgb2YgcmFuZ2UKICAgIG15ICVkZWxldGVfbWU7CiAgICBAZGVsZXRlX21leyBAeyRyaWRlbH0gfSA9ICgxKSB4IHNjYWxhciggQHskcmlkZWx9ICk7CgogICAgbXkgJHBhdHRlcm4gICAgICA9ICRycGF0dGVybnNfb2xkLT5bMF07CiAgICBteSAkZmllbGQgICAgICAgID0gJHJmaWVsZHNfb2xkLT5bMF07CiAgICBteSAkZmllbGRfbGVuZ3RoID0gJHJmaWVsZF9sZW5ndGhzX29sZC0+WzBdOwogICAgcHVzaCBAeyRyZmllbGRzX25ld30sICAgICAgICAkZmllbGQ7CiAgICBwdXNoIEB7JHJmaWVsZF9sZW5ndGhzX25ld30sICRmaWVsZF9sZW5ndGg7CiAgICBwdXNoIEB7JHJwYXR0ZXJuc19uZXd9LCAgICAgICRwYXR0ZXJuOwoKICAgICMgTG9vcCB0byBlaXRoZXIgY29weSBpdGVtcyBvciBjb25jYXRlbmF0ZSBmaWVsZHMgYW5kIHBhdHRlcm5zCiAgICBteSAkam1pbl9kZWw7CiAgICBmb3IgKCBteSAkaiA9IDAgOyAkaiA8ICRqbWF4X29sZCA7ICRqKysgKSB7CiAgICAgICAgbXkgJHRva2VuICAgICAgICA9ICRydG9rZW5zX29sZC0+WyRqXTsKICAgICAgICBteSAkZmllbGQgICAgICAgID0gJHJmaWVsZHNfb2xkLT5bICRqICsgMSBdOwogICAgICAgIG15ICRmaWVsZF9sZW5ndGggPSAkcmZpZWxkX2xlbmd0aHNfb2xkLT5bICRqICsgMSBdOwogICAgICAgIG15ICRwYXR0ZXJuICAgICAgPSAkcnBhdHRlcm5zX29sZC0+WyAkaiArIDEgXTsKICAgICAgICBpZiAoICEkZGVsZXRlX21leyRqfSApIHsKICAgICAgICAgICAgcHVzaCBAeyRydG9rZW5zX25ld30sICAgICAgICAkdG9rZW47CiAgICAgICAgICAgIHB1c2ggQHskcmZpZWxkc19uZXd9LCAgICAgICAgJGZpZWxkOwogICAgICAgICAgICBwdXNoIEB7JHJwYXR0ZXJuc19uZXd9LCAgICAgICRwYXR0ZXJuOwogICAgICAgICAgICBwdXNoIEB7JHJmaWVsZF9sZW5ndGhzX25ld30sICRmaWVsZF9sZW5ndGg7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBpZiAoICFkZWZpbmVkKCRqbWluX2RlbCkgKSB7ICRqbWluX2RlbCA9ICRqIH0KICAgICAgICAgICAgJHJmaWVsZHNfbmV3LT5bLTFdIC49ICRmaWVsZDsKICAgICAgICAgICAgJHJmaWVsZF9sZW5ndGhzX25ldy0+Wy0xXSArPSAkZmllbGRfbGVuZ3RoOwogICAgICAgICAgICAkcnBhdHRlcm5zX25ldy0+Wy0xXSAuPSAkcGF0dGVybjsKICAgICAgICB9CiAgICB9CgogICAgIyAtLS0tLSB4IC0tLS0tLSB4IC0tLS0tLSB4IC0tLS0tLQogICAgI3QgICAgICAwICAgICAgICAxICAgICAgICAyICAgICAgICA8LSB0b2tlbiBpbmRleGluZwogICAgI2YgICAwICAgICAgMSAgICAgICAgMiAgICAgICAgMyAgICA8LSBmaWVsZCBhbmQgcGF0dGVybgoKICAgIG15ICRqbWF4X25ldyA9IEB7JHJmaWVsZHNfbmV3fSAtIDE7CiAgICAkbGluZV9vYmotPnNldF9ydG9rZW5zKCRydG9rZW5zX25ldyk7CiAgICAkbGluZV9vYmotPnNldF9ycGF0dGVybnMoJHJwYXR0ZXJuc19uZXcpOwogICAgJGxpbmVfb2JqLT5zZXRfcmZpZWxkcygkcmZpZWxkc19uZXcpOwogICAgJGxpbmVfb2JqLT5zZXRfcmZpZWxkX2xlbmd0aHMoJHJmaWVsZF9sZW5ndGhzX25ldyk7CiAgICAkbGluZV9vYmotPnNldF9qbWF4KCRqbWF4X25ldyk7CgogICAgIyBUaGUgdmFsdWUgb2Ygal90ZXJtaW5hbF9tYXRjaCB3aWxsIGJlIGluY29ycmVjdCBpZiB3ZSBkZWxldGUgdG9rZW5zIHByaW9yCiAgICAjIHRvIGl0LiBXZSB3aWxsIGhhdmUgdG8gZ2l2ZSB1cCBvbiBhbGlnbmluZyB0aGUgdGVybWluYWwgdG9rZW5zIGlmIHRoaXMKICAgICMgaGFwcGVucy4KICAgIGlmICggZGVmaW5lZCgkal90ZXJtaW5hbF9tYXRjaCkgJiYgJGptaW5fZGVsIDw9ICRqX3Rlcm1pbmFsX21hdGNoICkgewogICAgICAgICRsaW5lX29iai0+c2V0X2pfdGVybWluYWxfbWF0Y2godW5kZWYpOwogICAgfQoKICAgICMgdXBkYXRlIGxpc3QgdHlwZSAtCiAgICBpZiAoICRsaW5lX29iai0+Z2V0X2xpc3Rfc2Vxbm8oKSApIHsKCiAgICAgICAgIyMgVGhpcyB3b3JrcywgYnV0IGZvciBlZmZpY2llbmN5IHNlZSBpZiB3ZSBuZWVkIHRvIG1ha2UgYSBjaGFuZ2U6CiAgICAgICAgIyMgZGVjaWRlX2lmX2xpc3QoJGxpbmVfb2JqKTsKCiAgICAgICAgIyBBbiBleGlzdGluZyBsaXN0IHdpbGwgc3RpbGwgYmUgYSBsaXN0IGJ1dCB3aXRoIHBvc3NpYmx5IGRpZmZlcmVudAogICAgICAgICMgbGVhZGluZyB0b2tlbgogICAgICAgIG15ICRvbGRfbGlzdF90eXBlID0gJGxpbmVfb2JqLT5nZXRfbGlzdF90eXBlKCk7CiAgICAgICAgbXkgJG5ld19saXN0X3R5cGUgPSAiIjsKICAgICAgICBpZiAoICRydG9rZW5zX25ldy0+WzBdID1+IC9eKD0+fCwpLyApIHsKICAgICAgICAgICAgJG5ld19saXN0X3R5cGUgPSAkcnRva2Vuc19uZXctPlswXTsKICAgICAgICB9CiAgICAgICAgaWYgKCAhJG9sZF9saXN0X3R5cGUgfHwgJG9sZF9saXN0X3R5cGUgbmUgJG5ld19saXN0X3R5cGUgKSB7CiAgICAgICAgICAgIGRlY2lkZV9pZl9saXN0KCRsaW5lX29iaik7CiAgICAgICAgfQogICAgfQoKICAgIEVYUExBSU5fREVMRVRFX1NFTEVDVEVEICYmIHByaW50IDw8RU9NOwoKbmV3IGptYXg6ICRqbWF4X25ldwpuZXcgdG9rZW5zOiA8QHskcnRva2Vuc19uZXd9PgpuZXcgcGF0dGVybnM6IDxAeyRycGF0dGVybnNfbmV3fT4KbmV3IGZpZWxkczogPEB7JHJmaWVsZHNfbmV3fT4KRU9NCiAgICByZXR1cm47Cn0KCnsgICAgIyMgY2xvc3VyZSBmb3Igc3ViIGRlY29kZV9hbGlnbm1lbnRfdG9rZW4KCiAgICAjIFRoaXMgcm91dGluZSBpcyBjYWxsZWQgcmVwZWF0ZWRseSBmb3IgZWFjaCB0b2tlbiwgc28gaXQgbmVlZHMgdG8gYmUKICAgICMgZWZmaWNpZW50LiAgV2UgY2FuIHNwZWVkIHRoaW5ncyB1cCBieSByZW1lbWJlcmluZyB0aGUgaW5wdXRzIGFuZCBvdXRwdXRzCiAgICAjIGluIGEgaGFzaC4KICAgIG15ICVkZWNvZGVkX3Rva2VuOwoKICAgIHN1YiBpbml0aWFsaXplX2RlY29kZSB7CgogICAgICAgICMgV2Ugd2lsbCByZS1pbml0aWFsaXplIHRoZSBoYXNoIGZvciBlYWNoIGZpbGUuIE90aGVyd2lzZSwgdGhlcmUgaXMKICAgICAgICAjIGEgZGFuZ2VyIHRoYXQgdGhlIGhhc2ggY2FuIGJlY29tZSBhcmJpdHJhcmlseSBsYXJnZSBpZiBhIHZlcnkgbGFyZ2UKICAgICAgICAjIG51bWJlciBvZiBmaWxlcyBpcyBwcm9jZXNzZWQgYXQgb25jZS4KICAgICAgICAlZGVjb2RlZF90b2tlbiA9ICgpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgZGVjb2RlX2FsaWdubWVudF90b2tlbiB7CgogICAgICAgICMgVW5wYWNrIHRoZSB2YWx1ZXMgcGFja2VkIGluIGFuIGFsaWdubWVudCB0b2tlbgogICAgICAgICMKICAgICAgICAjIFVzYWdlOgogICAgICAgICMgICAgICAgIG15ICggJHJhd190b2ssICRsZXYsICR0YWcsICR0b2tfY291bnQgKSA9CiAgICAgICAgIyAgICAgICAgICBkZWNvZGVfYWxpZ25tZW50X3Rva2VuKCR0b2tlbik7CgogICAgICAgICMgQWxpZ25tZW50IHRva2VucyBoYXZlIGEgdHJhaWxpbmcgZGVjaW1hbCBsZXZlbCBhbmQgb3B0aW9uYWwgdGFnIChmb3IKICAgICAgICAjIGNvbW1hcyk6CiAgICAgICAgIyBGb3IgZXhhbXBsZSwgdGhlIGZpcnN0IGNvbW1hIGluIHRoZSBmb2xsb3dpbmcgbGluZQogICAgICAgICMgICAgIHN1YiBiYW5uZXIgIHsgY3JsZjsgcmVwb3J0KCBzaGlmdCwgJy8nLCBzaGlmdCApOyBjcmxmIH0KICAgICAgICAjIGlzIGRlY29yYXRlZCBhcyBmb2xsb3dzOgogICAgICAgICMgICAgLDIrcmVwb3J0LTYgID0+ICh0b2ssbGV2LHRhZykgPXF3KCAsICAgMiAgICtyZXBvcnQtNikKCiAgICAgICAgIyBBbiBvcHRpb25hbCB0b2tlbiBjb3VudCBtYXkgYmUgYXBwZW5kZWQgd2l0aCBhIGxlYWRpbmcgZG90LgogICAgICAgICMgQ3VycmVudGx5IHRoaXMgaXMgb25seSBkb25lIGZvciAnPScgdG9rZW5zIGJ1dCB0aGlzIGNvdWxkIGNoYW5nZS4KICAgICAgICAjIEZvciBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIGxpbmU6CiAgICAgICAgIyAgICRucG9ydCAgID0gJHBvcnQgPSBzaGlmdCB8fCAkbmFtZTsKICAgICAgICAjIFRoZSBmaXJzdCAnPScgbWF5IGVpdGhlciBiZSAnPTAnIG9yICc9MC4xJyBbbGV2ZWwgMCwgZmlyc3QgZXF1YWxzXQogICAgICAgICMgVGhlIHNlY29uZCAnPScgd2lsbCBiZSAnPTAuMicgW2xldmVsIDAsIHNlY29uZCBlcXVhbHNdCiAgICAgICAgbXkgKCR0b2spID0gQF87CgogICAgICAgIGlmICggZGVmaW5lZCggJGRlY29kZWRfdG9rZW57JHRva30gKSApIHsKICAgICAgICAgICAgcmV0dXJuIEB7ICRkZWNvZGVkX3Rva2VueyR0b2t9IH07CiAgICAgICAgfQoKICAgICAgICBteSAoICRyYXdfdG9rLCAkbGV2LCAkdGFnLCAkdG9rX2NvdW50ICkgPSAoICR0b2ssIDAsICIiLCAxICk7CiAgICAgICAgaWYgKCAkdG9rID1+IC9eKFxEKykoXGQrKShbXlwuXSopKFwuKFxkKykpPyQvICkgewogICAgICAgICAgICAkcmF3X3RvayAgID0gJDE7CiAgICAgICAgICAgICRsZXYgICAgICAgPSAkMjsKICAgICAgICAgICAgJHRhZyAgICAgICA9ICQzIGlmICgkMyk7CiAgICAgICAgICAgICR0b2tfY291bnQgPSAkNSBpZiAoJDUpOwogICAgICAgIH0KICAgICAgICBteSBAdmFscyA9ICggJHJhd190b2ssICRsZXYsICR0YWcsICR0b2tfY291bnQgKTsKICAgICAgICAkZGVjb2RlZF90b2tlbnskdG9rfSA9IFxAdmFsczsKICAgICAgICByZXR1cm4gQHZhbHM7CiAgICB9Cn0KCnsgICAgIyMgY2xvc3VyZSBmb3Igc3ViIGRlbGV0ZV91bm1hdGNoZWRfdG9rZW5zCgogICAgbXkgJWlzX2Fzc2lnbm1lbnQ7CiAgICBteSAla2VlcF9hZnRlcl9kZWxldGVkX2Fzc2lnbm1lbnQ7CgogICAgQkVHSU4gewogICAgICAgIG15IEBxOwoKICAgICAgICBAcSA9IHF3KAogICAgICAgICAgPSAqKj0gKz0gKj0gJj0gPDw9ICYmPQogICAgICAgICAgLT0gLz0gfD0gPj49IHx8PSAvLz0KICAgICAgICAgIC49ICU9IF49CiAgICAgICAgICB4PQogICAgICAgICk7CiAgICAgICAgQGlzX2Fzc2lnbm1lbnR7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICAgICAgIyBUaGVzZSB0b2tlbnMgbWF5IGJlIGtlcHQgZm9sbG93aW5nIGFuID0gZGVsZXRpb24KICAgICAgICBAcSA9IHF3KAogICAgICAgICAgaWYgdW5sZXNzIG9yIHx8CiAgICAgICAgKTsKICAgICAgICBAa2VlcF9hZnRlcl9kZWxldGVkX2Fzc2lnbm1lbnR7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICB9CgogICAgIyBUaGlzIGZsYWcgaXMgZm9yIHRlc3Rpbmcgb25seSBhbmQgc2hvdWxkIG5vcm1hbGx5IGJlIHplcm8uCiAgICB1c2UgY29uc3RhbnQgVEVTVF9ERUxFVEVfTlVMTCA9PiAwOwoKICAgIHN1YiBkZWxldGVfdW5tYXRjaGVkX3Rva2VucyB7CiAgICAgICAgbXkgKCAkcmxpbmVzLCAkZ3JvdXBfbGV2ZWwgKSA9IEBfOwoKICAgICAgICAjIFRoaXMgaXMgYSBwcmVsaW1pbmFyeSBzdGVwIGluIHZlcnRpY2FsIGFsaWdubWVudCBpbiB3aGljaCB3ZSByZW1vdmUKICAgICAgICAjIGFzIG1hbnkgb2J2aW91c2x5IHVuLW5lZWRlZCBhbGlnbm1lbnQgdG9rZW5zIGFzIHBvc3NpYmxlLiAgVGhpcyB3aWxsCiAgICAgICAgIyBwcmV2ZW50IHRoZW0gZnJvbSBpbnRlcmZlcmluZyB3aXRoIHRoZSBmaW5hbCBhbGlnbm1lbnQuCgogICAgICAgICMgVGhlc2UgYXJlIHRoZSByZXR1cm4gdmFsdWVzCiAgICAgICAgbXkgJG1heF9sZXZfZGlmZiAgICAgPSAwOyAgICAjIHVzZWQgdG8gYXZvaWQgYSBjYWxsIHRvIHBydW5lX3RyZWUKICAgICAgICBteSAkc2F3X3NpZGVfY29tbWVudCA9IDA7ICAgICMgdXNlZCB0byBhdm9pZCBhIGNhbGwgZm9yIHNpZGUgY29tbWVudHMKCiAgICAgICAgIyBIYW5kbGUgbm8gbGluZXMgLS0gc2hvdWxkbid0IGhhcHBlbgogICAgICAgIHJldHVybiB1bmxlc3MgQHskcmxpbmVzfTsKCiAgICAgICAgIyBIYW5kbGUgYSBzaW5nbGUgbGluZQogICAgICAgIGlmICggQHskcmxpbmVzfSA9PSAxICkgewogICAgICAgICAgICBteSAkbGluZSAgID0gJHJsaW5lcy0+WzBdOwogICAgICAgICAgICBteSAkam1heCAgID0gJGxpbmUtPmdldF9qbWF4KCk7CiAgICAgICAgICAgIG15ICRsZW5ndGggPSAkbGluZS0+Z2V0X3JmaWVsZF9sZW5ndGhzKCktPlskam1heF07CiAgICAgICAgICAgICRzYXdfc2lkZV9jb21tZW50ID0gJGxlbmd0aCA+IDA7CiAgICAgICAgICAgIHJldHVybiAoICRtYXhfbGV2X2RpZmYsICRzYXdfc2lkZV9jb21tZW50ICk7CiAgICAgICAgfQoKICAgICAgICBteSAkaGFzX3Rlcm1pbmFsX21hdGNoID0gJHJsaW5lcy0+Wy0xXS0+Z2V0X2pfdGVybWluYWxfbWF0Y2goKTsKCiAgICAgICAgIyBpZ25vcmUgaGFuZ2luZyBzaWRlIGNvbW1lbnRzIGluIHRoZXNlIG9wZXJhdGlvbnMKICAgICAgICBteSBAZmlsdGVyZWQgICA9IGdyZXAgeyAhJF8tPmdldF9pc19oYW5naW5nX3NpZGVfY29tbWVudCgpIH0gQHskcmxpbmVzfTsKICAgICAgICBteSAkcm5ld19saW5lcyA9IFxAZmlsdGVyZWQ7CgogICAgICAgICRzYXdfc2lkZV9jb21tZW50ID0gQGZpbHRlcmVkICE9IEB7JHJsaW5lc307CiAgICAgICAgJG1heF9sZXZfZGlmZiAgICAgPSAwOwoKICAgICAgICAjIG5vdGhpbmcgdG8gZG8gaWYgYWxsIGxpbmVzIHdlcmUgaGFuZ2luZyBzaWRlIGNvbW1lbnRzCiAgICAgICAgbXkgJGptYXggPSBAeyRybmV3X2xpbmVzfSAtIDE7CiAgICAgICAgcmV0dXJuICggJG1heF9sZXZfZGlmZiwgJHNhd19zaWRlX2NvbW1lbnQgKSB1bmxlc3MgKCAkam1heCA+PSAwICk7CgogICAgICAgIG15IEBlcXVhbHNfaW5mbzsKICAgICAgICBteSBAbGluZV9pbmZvOwogICAgICAgIG15ICVpc19nb29kX3RvazsKCiAgICAgICAgIyBjcmVhdGUgYSBoYXNoIG9mIHRva2VucyBmb3IgZWFjaCBsaW5lCiAgICAgICAgbXkgJHJsaW5lX2hhc2hlcyA9IFtdOwogICAgICAgIGZvcmVhY2ggbXkgJGxpbmUgKCBAeyRybmV3X2xpbmVzfSApIHsKICAgICAgICAgICAgbXkgJHJoYXNoICAgICA9IHt9OwogICAgICAgICAgICBteSAkcnRva2VucyAgID0gJGxpbmUtPmdldF9ydG9rZW5zKCk7CiAgICAgICAgICAgIG15ICRycGF0dGVybnMgPSAkbGluZS0+Z2V0X3JwYXR0ZXJucygpOwogICAgICAgICAgICBteSAkaSAgICAgICAgID0gMDsKICAgICAgICAgICAgbXkgKCAkaV9lcSwgJHRva19lcSwgJHBhdF9lcSApOwogICAgICAgICAgICBteSAoICRsZXZfbWluLCAkbGV2X21heCApOwogICAgICAgICAgICBmb3JlYWNoIG15ICR0b2sgKCBAeyRydG9rZW5zfSApIHsKICAgICAgICAgICAgICAgIG15ICggJHJhd190b2ssICRsZXYsICR0YWcsICR0b2tfY291bnQgKSA9CiAgICAgICAgICAgICAgICAgIGRlY29kZV9hbGlnbm1lbnRfdG9rZW4oJHRvayk7CgogICAgICAgICAgICAgICAgaWYgKCAkdG9rIG5lICcjJyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICFkZWZpbmVkKCRsZXZfbWluKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGxldl9taW4gPSAkbGV2OwogICAgICAgICAgICAgICAgICAgICAgICAkbGV2X21heCA9ICRsZXY7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRsZXYgPCAkbGV2X21pbiApIHsgJGxldl9taW4gPSAkbGV2IH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkbGV2ID4gJGxldl9tYXggKSB7ICRsZXZfbWF4ID0gJGxldiB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJHNhd19zaWRlX2NvbW1lbnQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRsZW5ndGggPSAkbGluZS0+Z2V0X3JmaWVsZF9sZW5ndGhzKCktPlsgJGkgKyAxIF07CiAgICAgICAgICAgICAgICAgICAgICAgICRzYXdfc2lkZV9jb21tZW50IHx8PSAkbGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIFBvc3NpYmxlIGZ1dHVyZSB1cGdyYWRlOiBmb3IgbXVsdGlwbGUgbWF0Y2hlcywKICAgICAgICAgICAgICAgICMgcmVjb3JkIFskaTEsICRpMiwgLi5dIGluc3RlYWQgb2YgJGkKICAgICAgICAgICAgICAgICRyaGFzaC0+eyR0b2t9ID0KICAgICAgICAgICAgICAgICAgWyAkaSwgdW5kZWYsIHVuZGVmLCAkcmF3X3RvaywgJGxldiwgJHRhZywgJHRva19jb3VudCBdOwoKICAgICAgICAgICAgICAgICMgcmVtZW1iZXIgdGhlIGZpcnN0IGVxdWFscyBhdCBsaW5lIGxldmVsCiAgICAgICAgICAgICAgICBpZiAoICFkZWZpbmVkKCRpX2VxKSAmJiAkcmF3X3RvayBlcSAnPScgKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICggJGxldiBlcSAkZ3JvdXBfbGV2ZWwgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpX2VxICAgPSAkaTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRva19lcSA9ICR0b2s7CiAgICAgICAgICAgICAgICAgICAgICAgICRwYXRfZXEgPSAkcnBhdHRlcm5zLT5bJGldOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRpKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHVzaCBAeyRybGluZV9oYXNoZXN9LCAkcmhhc2g7CiAgICAgICAgICAgIHB1c2ggQGVxdWFsc19pbmZvLCBbICRpX2VxLCAkdG9rX2VxLCAkcGF0X2VxIF07CiAgICAgICAgICAgIHB1c2ggQGxpbmVfaW5mbywgWyAkbGV2X21pbiwgJGxldl9tYXggXTsKICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCRsZXZfbWluKSApIHsKICAgICAgICAgICAgICAgIG15ICRsZXZfZGlmZiA9ICRsZXZfbWF4IC0gJGxldl9taW47CiAgICAgICAgICAgICAgICBpZiAoICRsZXZfZGlmZiA+ICRtYXhfbGV2X2RpZmYgKSB7ICRtYXhfbGV2X2RpZmYgPSAkbGV2X2RpZmYgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNvbXBhcmUgZWFjaCBsaW5lIHBhaXIgYW5kIHJlY29yZCBtYXRjaGVzCiAgICAgICAgbXkgJHJ0b2tfaGFzaCA9IHt9OwogICAgICAgIG15ICRuciAgICAgICAgPSAwOwogICAgICAgIGZvciAoIG15ICRqbCA9IDAgOyAkamwgPCAkam1heCA7ICRqbCsrICkgewogICAgICAgICAgICBteSAkbmwgPSAkbnI7CiAgICAgICAgICAgICRuciA9IDA7CiAgICAgICAgICAgIG15ICRqciAgICAgID0gJGpsICsgMTsKICAgICAgICAgICAgbXkgJHJoYXNoX2wgPSAkcmxpbmVfaGFzaGVzLT5bJGpsXTsKICAgICAgICAgICAgbXkgJHJoYXNoX3IgPSAkcmxpbmVfaGFzaGVzLT5bJGpyXTsKICAgICAgICAgICAgbXkgJGNvdW50ICAgPSAwOyAgICAgICAgICAgICAgICAgICAgICAjIFVOVVNFRCBOT1c/CiAgICAgICAgICAgIG15ICRudG9rcyAgID0gMDsKICAgICAgICAgICAgZm9yZWFjaCBteSAkdG9rICgga2V5cyAleyRyaGFzaF9sfSApIHsKICAgICAgICAgICAgICAgICRudG9rcysrOwogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCAkcmhhc2hfci0+eyR0b2t9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkdG9rIG5lICcjJyApIHsgJGNvdW50Kys7IH0KICAgICAgICAgICAgICAgICAgICBteSAkaWwgPSAkcmhhc2hfbC0+eyR0b2t9LT5bMF07CiAgICAgICAgICAgICAgICAgICAgbXkgJGlyID0gJHJoYXNoX3ItPnskdG9rfS0+WzBdOwogICAgICAgICAgICAgICAgICAgICRyaGFzaF9sLT57JHRva30tPlsyXSA9ICRpcjsKICAgICAgICAgICAgICAgICAgICAkcmhhc2hfci0+eyR0b2t9LT5bMV0gPSAkaWw7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkdG9rIG5lICcjJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyAkcnRva19oYXNoLT57JHRva30gfSwgKCAkamwsICRqciApOwogICAgICAgICAgICAgICAgICAgICAgICAkbnIrKzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgU2V0IGEgbGluZSBicmVhayBpZiBubyBtYXRjaGluZyB0b2tlbnMgYmV0d2VlbiB0aGVzZSBsaW5lcwogICAgICAgICAgICAjICh0aGlzIGlzIG5vdCBzdHJpY3RseSBuZWNlc3Nhcnkgbm93IGJ1dCBkb2VzIG5vdCBodXJ0KQogICAgICAgICAgICBpZiAoICRuciA9PSAwICYmICRubCA+IDAgKSB7CiAgICAgICAgICAgICAgICAkcm5ld19saW5lcy0+WyRqbF0tPnNldF9lbmRfZ3JvdXAoMSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQWxzbyBzZXQgYSBsaW5lIGJyZWFrIGlmIGJvdGggbGluZXMgaGF2ZSBzaW1wbGUgZXF1YWxzIGJ1dCB3aXRoCiAgICAgICAgICAgICMgZGlmZmVyZW50IGxlYWRpbmcgY2hhcmFjdGVycyBpbiBwYXR0ZXJucy4gIFRoaXMgY2hlY2sgaXMgc2ltaWxhcgogICAgICAgICAgICAjIHRvIG9uZSBpbiBzdWIgY2hlY2tfbWF0Y2gsIGFuZCB3aWxsIHByZXZlbnQgc3ViCiAgICAgICAgICAgICMgcHJ1bmVfYWxpZ25tZW50X3RyZWUgZnJvbSByZW1vdmluZyBhbGlnbm1lbnRzIHdoaWNoIG90aGVyd2lzZQogICAgICAgICAgICAjIHNob3VsZCBiZSBrZXB0LiBUaGlzIGZpeCBpcyByYXJlbHkgbmVlZGVkLCBidXQgaXQgY2FuCiAgICAgICAgICAgICMgb2NjYXNpb25hbGx5IGltcHJvdmUgZm9ybWF0dGluZy4KICAgICAgICAgICAgIyBGb3IgZXhhbXBsZToKICAgICAgICAgICAgIyAgICAgbXkgJG5hbWUgPSAkdGhpcy0+e05hbWV9OwogICAgICAgICAgICAjICAgICAkdHlwZSA9ICR0aGlzLT5jdHlwZSgkZ2VubG9vcHR5cGUpIGlmIGRlZmluZWQgJGdlbmxvb3B0eXBlOwogICAgICAgICAgICAjICAgICBteSAkZGVjbGluaSA9ICggJGFzZ25vbmx5ID8gIiIgICAgICAgICAgOiAiXHQkdHlwZSAqIiApOwogICAgICAgICAgICAjICAgICBteSAkY2FzdCAgICA9ICggJHR5cGUgICAgID8gIigkdHlwZSAqKSIgOiAiIiApOwogICAgICAgICAgICAjIFRoZSBsYXN0IHR3byBsaW5lcyBzdGFydCB3aXRoICdteScgYW5kIHdpbGwgbm90IG1hdGNoIHRoZQogICAgICAgICAgICAjIHByZXZpb3VzIGxpbmUgc3RhcnRpbmcgd2l0aCAkdHlwZSwgc28gd2UgZG8gbm90IHdhbnQKICAgICAgICAgICAgIyBwcnVuZV9hbGlnbm1lbnQgdHJlZSB0byBkZWxldGUgdGhlaXIgPyA6IGFsaWdubWVudHMgYXQgYSBkZWVwZXIKICAgICAgICAgICAgIyBsZXZlbC4KICAgICAgICAgICAgbXkgKCAkaV9lcV9sLCAkdG9rX2VxX2wsICRwYXRfZXFfbCApID0gQHsgJGVxdWFsc19pbmZvWyRqbF0gfTsKICAgICAgICAgICAgbXkgKCAkaV9lcV9yLCAkdG9rX2VxX3IsICRwYXRfZXFfciApID0gQHsgJGVxdWFsc19pbmZvWyRqcl0gfTsKICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCRpX2VxX2wpICYmIGRlZmluZWQoJGlfZXFfcikgKSB7CgogICAgICAgICAgICAgICAgIyBBbHNvLCBkbyBub3QgYWxpZ24gZXF1YWxzIGFjcm9zcyBhIGNoYW5nZSBpbiBjaSBsZXZlbAogICAgICAgICAgICAgICAgbXkgJGNpX2p1bXAgPSAkcm5ld19saW5lcy0+WyRqbF0tPmdldF9jaV9sZXZlbCgpICE9CiAgICAgICAgICAgICAgICAgICRybmV3X2xpbmVzLT5bJGpyXS0+Z2V0X2NpX2xldmVsKCk7CgogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICR0b2tfZXFfbCBlcSAkdG9rX2VxX3IKICAgICAgICAgICAgICAgICAgICAmJiAkaV9lcV9sID09IDAKICAgICAgICAgICAgICAgICAgICAmJiAkaV9lcV9yID09IDAKICAgICAgICAgICAgICAgICAgICAmJiAoIHN1YnN0ciggJHBhdF9lcV9sLCAwLCAxICkgbmUgc3Vic3RyKCAkcGF0X2VxX3IsIDAsIDEgKQogICAgICAgICAgICAgICAgICAgICAgICB8fCAkY2lfanVtcCApCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkcm5ld19saW5lcy0+WyRqbF0tPnNldF9lbmRfZ3JvdXAoMSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZmluZCBzdWJncm91cHMKICAgICAgICBteSBAc3ViZ3JvdXBzOwogICAgICAgIHB1c2ggQHN1Ymdyb3VwcywgWyAwLCAkam1heCBdOwogICAgICAgIGZvciAoIG15ICRqbCA9IDAgOyAkamwgPCAkam1heCA7ICRqbCsrICkgewogICAgICAgICAgICBpZiAoICRybmV3X2xpbmVzLT5bJGpsXS0+Z2V0X2VuZF9ncm91cCgpICkgewogICAgICAgICAgICAgICAgJHN1Ymdyb3Vwc1stMV0tPlsxXSA9ICRqbDsKICAgICAgICAgICAgICAgIHB1c2ggQHN1Ymdyb3VwcywgWyAkamwgKyAxLCAkam1heCBdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGZsYWcgdG8gYWxsb3cgc2tpcHBpbmcgcGFzcyAyCiAgICAgICAgbXkgJHNhd19sYXJnZV9ncm91cDsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBQQVNTIDEgb3ZlciBzdWJncm91cHMgdG8gcmVtb3ZlIHVubWF0Y2hlZCBhbGlnbm1lbnQgdG9rZW5zCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgZm9yZWFjaCBteSAkaXRlbSAoQHN1Ymdyb3VwcykgewogICAgICAgICAgICBteSAoICRqYmVnLCAkamVuZCApID0gQHskaXRlbX07CgogICAgICAgICAgICBteSAkbmxpbmVzID0gJGplbmQgLSAkamJlZyArIDE7CgogICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgICAgICMgTG9vayBmb3IgY29tcGxldGUgaWYvZWxzaWYvZWxzZSBhbmQgdGVybmFyeSBibG9ja3MKICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAgICAgIyBXZSBhcmUgbG9va2luZyBmb3IgYSBjb21tb24gJyRkaXZpZGluZ190b2tlbicgbGlrZSB0aGVzZToKCiAgICAgICAgICAgICMgICAgaWYgICAgKCAkYiBhbmQgJHMgKSB7ICRwLT57J3R5cGUnfSA9ICdhJzsgfQogICAgICAgICAgICAjICAgIGVsc2lmICgkYikgICAgICAgICAgeyAkcC0+eyd0eXBlJ30gPSAnYic7IH0KICAgICAgICAgICAgIyAgICBlbHNpZiAoJHMpICAgICAgICAgIHsgJHAtPnsndHlwZSd9ID0gJ3MnOyB9CiAgICAgICAgICAgICMgICAgZWxzZSAgICAgICAgICAgICAgICB7ICRwLT57J3R5cGUnfSA9ICcnOyB9CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICBeLS0tLS0tLS0tLS0gZGl2aWRpbmdfdG9rZW4KCiAgICAgICAgICAgICMgICBteSAkc2V2ZXJpdHkgPQogICAgICAgICAgICAjICAgICAgISRyb3V0aW5lICAgICAgICAgICAgICAgICAgICAgPyAnW1BGWF0nCiAgICAgICAgICAgICMgICAgIDogJHJvdXRpbmUgPX4gL3dhcm4uKl9kXHovICAgICA/ICdbRFNdJwogICAgICAgICAgICAjICAgICA6ICRyb3V0aW5lID1+IC9ja193YXJuLyAgICAgICAgPyAnVycKICAgICAgICAgICAgIyAgICAgOiAkcm91dGluZSA9fiAvY2tXQVJOXGQqcmVnX2QvID8gJ1MnCiAgICAgICAgICAgICMgICAgIDogJHJvdXRpbmUgPX4gL2NrV0FSTlxkKnJlZy8gICA/ICdXJwogICAgICAgICAgICAjICAgICA6ICRyb3V0aW5lID1+IC92V0FSTlxkLyAgICAgICAgPyAnW1dEU10nCiAgICAgICAgICAgICMgICAgIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbUEZYXSc7CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeLS0tLS0tLS0tLS0gZGl2aWRpbmdfdG9rZW4KCiAgICAgICAgICAgICMgT25seSBsb29rIGZvciBncm91cHMgd2hpY2ggYXJlIG1vcmUgdGhhbiAyIGxpbmVzIGxvbmcuICBUd28gbGluZXMKICAgICAgICAgICAgIyBjYW4gZ2V0IG1lc3NlZCB1cCBkb2luZyB0aGlzLCBwcm9iYWJseSBkdWUgdG8gdGhlIHZhcmlvdXMKICAgICAgICAgICAgIyB0d28tbGluZSBydWxlcy4KCiAgICAgICAgICAgIG15ICRkaXZpZGluZ190b2tlbjsKICAgICAgICAgICAgbXkgJXRva2VuX2xpbmVfY291bnQ7CiAgICAgICAgICAgIGlmICggJG5saW5lcyA+IDIgKSB7CgogICAgICAgICAgICAgICAgZm9yICggbXkgJGpqID0gJGpiZWcgOyAkamogPD0gJGplbmQgOyAkamorKyApIHsKICAgICAgICAgICAgICAgICAgICBteSAlc2VlbjsKICAgICAgICAgICAgICAgICAgICBteSAkbGluZSAgICA9ICRybmV3X2xpbmVzLT5bJGpqXTsKICAgICAgICAgICAgICAgICAgICBteSAkcnRva2VucyA9ICRsaW5lLT5nZXRfcnRva2VucygpOwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJHRvayAoIEB7JHJ0b2tlbnN9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEkc2VlbnskdG9rfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWVueyR0b2t9Kys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdG9rZW5fbGluZV9jb3VudHskdG9rfSsrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJHRvayAoIGtleXMgJXRva2VuX2xpbmVfY291bnQgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkdG9rZW5fbGluZV9jb3VudHskdG9rfSA9PSAkbmxpbmVzICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICAgc3Vic3RyKCAkdG9rLCAwLCAxICkgZXEgJz8nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBzdWJzdHIoICR0b2ssIDAsIDEgKSBlcSAneycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICR0b2sgPX4gL15ce1xkK2lmLyApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXZpZGluZ190b2tlbiA9ICR0b2s7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICAgICAjIExvb3Agb3ZlciBsaW5lcyB0byByZW1vdmUgdW53YW50ZWQgYWxpZ25tZW50IHRva2VucwogICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICAgICBmb3IgKCBteSAkamogPSAkamJlZyA7ICRqaiA8PSAkamVuZCA7ICRqaisrICkgewogICAgICAgICAgICAgICAgbXkgJGxpbmUgICAgPSAkcm5ld19saW5lcy0+WyRqal07CiAgICAgICAgICAgICAgICBteSAkcnRva2VucyA9ICRsaW5lLT5nZXRfcnRva2VucygpOwogICAgICAgICAgICAgICAgbXkgJHJoYXNoICAgPSAkcmxpbmVfaGFzaGVzLT5bJGpqXTsKICAgICAgICAgICAgICAgIG15ICRpX2VxICAgID0gJGVxdWFsc19pbmZvWyRqal0tPlswXTsKICAgICAgICAgICAgICAgIG15IEBpZGVsOwogICAgICAgICAgICAgICAgbXkgJGltYXggPSBAeyRydG9rZW5zfSAtIDI7CiAgICAgICAgICAgICAgICBteSAkZGVsZXRlX2Fib3ZlX2xldmVsOwogICAgICAgICAgICAgICAgbXkgJGRlbGV0ZWRfYXNzaWdubWVudF90b2tlbjsKCiAgICAgICAgICAgICAgICBteSAkc2F3X2RpdmlkaW5nX3Rva2VuID0gIiI7CiAgICAgICAgICAgICAgICAkc2F3X2xhcmdlX2dyb3VwIHx8PSAkbmxpbmVzID4gMiAmJiAkaW1heCA+IDE7CgogICAgICAgICAgICAgICAgIyBMb29wIG92ZXIgYWxsIGFsaWdubWVudCB0b2tlbnMKICAgICAgICAgICAgICAgIGZvciAoIG15ICRpID0gMCA7ICRpIDw9ICRpbWF4IDsgJGkrKyApIHsKICAgICAgICAgICAgICAgICAgICBteSAkdG9rID0gJHJ0b2tlbnMtPlskaV07CiAgICAgICAgICAgICAgICAgICAgbmV4dCBpZiAoICR0b2sgZXEgJyMnICk7ICAgICMgc2hvdWxkbid0IGhhcHBlbgogICAgICAgICAgICAgICAgICAgIG15ICggJGlpaSwgJGlsLCAkaXIsICRyYXdfdG9rLCAkbGV2LCAkdGFnLCAkdG9rX2NvdW50ICkgPQogICAgICAgICAgICAgICAgICAgICAgQHsgJHJoYXNoLT57JHRva30gfTsKCiAgICAgICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICAgICAgICAgICAgICMgSGVyZSBpcyB0aGUgYmFzaWMgUlVMRTogcmVtb3ZlIGFuIHVubWF0Y2hlZCBhbGlnbm1lbnQKICAgICAgICAgICAgICAgICAgICAjIHdoaWNoIGRvZXMgbm90IG9jY3VyIGluIHRoZSBzdXJyb3VuZGluZyBsaW5lcy4KICAgICAgICAgICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgICAgICAgICAgICAgbXkgJGRlbGV0ZV9tZSA9ICFkZWZpbmVkKCRpbCkgJiYgIWRlZmluZWQoJGlyKTsKCiAgICAgICAgICAgICAgICAgICAgIyBCdXQgbm93IHdlIG1vZGlmeSB0aGlzIHdpdGggZXhjZXB0aW9ucy4uLgoKICAgICAgICAgICAgICAgICAgICAjIEVYQ0VQVElPTiAxOiBJZiB3ZSBhcmUgaW4gYSBjb21wbGV0ZSB0ZXJuYXJ5IG9yCiAgICAgICAgICAgICAgICAgICAgIyBpZi9lbHNpZi9lbHNlIGdyb3VwLCBhbmQgdGhpcyB0b2tlbiBpcyBub3Qgb24gZXZlcnkgbGluZQogICAgICAgICAgICAgICAgICAgICMgb2YgdGhlIGdyb3VwLCBzaG91bGQgd2UgZGVsZXRlIGl0IHRvIHByZXNlcnZlIG92ZXJhbGwKICAgICAgICAgICAgICAgICAgICAjIGFsaWdubWVudD8KICAgICAgICAgICAgICAgICAgICBpZiAoJGRpdmlkaW5nX3Rva2VuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJHRva2VuX2xpbmVfY291bnR7JHRva30gPj0gJG5saW5lcyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzYXdfZGl2aWRpbmdfdG9rZW4gfHw9ICR0b2sgZXEgJGRpdmlkaW5nX3Rva2VuOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRm9yIHNob3J0ZXIgcnVucywgZGVsZXRlIHRva3MgdG8gc2F2ZSBhbGlnbm1lbnQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZvciBsb25nZXIgcnVucywga2VlcCB0b2tzIGFmdGVyIHRoZSAneycgb3IgJz8nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvIGFsbG93IHN1Yi1hbGlnbm1lbnRzIHdpdGhpbiBicmFjZXMuICBUaGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbnVtYmVyIDUgbGluZXMgaXMgYXJiaXRyYXJ5IGJ1dCBzZWVtcyB0byB3b3JrIG9rLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRlbGV0ZV9tZSB8fD0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAkbmxpbmVzIDwgNSB8fCAhJHNhd19kaXZpZGluZ190b2tlbiApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIEVYQ0VQVElPTiAyOiBSZW1vdmUgYWxsIHRva2VucyBhYm92ZSBhIGNlcnRhaW4gbGV2ZWwKICAgICAgICAgICAgICAgICAgICAjIGZvbGxvd2luZyBhIHByZXZpb3VzIGRlbGV0aW9uLiAgRm9yIGV4YW1wbGUsIHdlIGhhdmUgdG8KICAgICAgICAgICAgICAgICAgICAjIHJlbW92ZSB0YWdnZWQgaGlnaGVyIGxldmVsIGFsaWdubWVudCB0b2tlbnMgZm9sbG93aW5nIGEKICAgICAgICAgICAgICAgICAgICAjICc9PicgZGVsZXRpb24gYmVjYXVzZSB0aGUgdGFncyBvZiBoaWdoZXIgbGV2ZWwgdG9rZW5zCiAgICAgICAgICAgICAgICAgICAgIyB3aWxsIG5vdyBiZSBpbmNvcnJlY3QuIEZvciBleGFtcGxlLCB0aGlzIHdpbGwgcHJldmVudAogICAgICAgICAgICAgICAgICAgICMgYWxpZ25pbmcgY29tbWFzIGFzIGZvbGxvd3MgYWZ0ZXIgZGVsZXRpbmcgdGhlIHNlY29uZCAnPT4nCiAgICAgICAgICAgICAgICAgICAgIyAgICAkdy0+aW5zZXJ0KAogICAgICAgICAgICAgICAgICAgICMJTGlzdEJveCA9PiBvcmlnaW4gPT4gWyAyNzAsIDE2MCBdLAogICAgICAgICAgICAgICAgICAgICMJc2l6ZSAgICA9PiBbIDIwMCwgICAgICAgICAgIDU1IF0sCiAgICAgICAgICAgICAgICAgICAgIyAgICApOwogICAgICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCgkZGVsZXRlX2Fib3ZlX2xldmVsKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkbGV2ID4gJGRlbGV0ZV9hYm92ZV9sZXZlbCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZWxldGVfbWUgfHw9IDE7ICAgICMkdGFnOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAkZGVsZXRlX2Fib3ZlX2xldmVsID0gdW5kZWYgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBFWENFUFRJT04gMzogUmVtb3ZlIGFsbCBidXQgY2VydGFpbiB0b2tlbnMgYWZ0ZXIgYW4KICAgICAgICAgICAgICAgICAgICAjIGFzc2lnbm1lbnQgZGVsZXRpb24uCiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAkZGVsZXRlZF9hc3NpZ25tZW50X3Rva2VuCiAgICAgICAgICAgICAgICAgICAgICAgICYmICggJGxldiA+ICRncm91cF9sZXZlbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgISRrZWVwX2FmdGVyX2RlbGV0ZWRfYXNzaWdubWVudHskcmF3X3Rva30gKQogICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGRlbGV0ZV9tZSB8fD0gMTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgRVhDRVBUSU9OIDQ6IERvIG5vdCB0b3VjaCB0aGUgZmlyc3QgbGluZSBvZiBhIDIgbGluZQogICAgICAgICAgICAgICAgICAgICMgdGVybWluYWwgbWF0Y2gsIHN1Y2ggYXMgYmVsb3csIGJlY2F1c2Ugal90ZXJtaW5hbCBoYXMKICAgICAgICAgICAgICAgICAgICAjIGFscmVhZHkgYmVlbiBzZXQuCiAgICAgICAgICAgICAgICAgICAgIyAgICBpZiAoJHRhZykgeyAkdGFnbyA9ICI8JHRhZz4iOyAkdGFnYyA9ICI8LyR0YWc+IjsgfQogICAgICAgICAgICAgICAgICAgICMgICAgZWxzZSAgICAgIHsgJHRhZ28gPSAkdGFnYyA9ICcnOyB9CiAgICAgICAgICAgICAgICAgICAgIyBCdXQgc2VlIHNuaXBwZXRzICdlbHNlMS50JyBhbmQgJ2Vsc2UyLnQnCiAgICAgICAgICAgICAgICAgICAgJGRlbGV0ZV9tZSA9IDAKICAgICAgICAgICAgICAgICAgICAgIGlmICggJGpqID09ICRqYmVnCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRoYXNfdGVybWluYWxfbWF0Y2gKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJG5saW5lcyA9PSAyICk7CgogICAgICAgICAgICAgICAgICAgICMgRVhDRVBUSU9OIDU6IG1pc2MgYWRkaXRpb25hbCBydWxlcyBmb3IgY29tbWFzIGFuZCBlcXVhbHMKICAgICAgICAgICAgICAgICAgICBpZiAoJGRlbGV0ZV9tZSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBva2F5IHRvIGRlbGV0ZSBzZWNvbmQgYW5kIGhpZ2hlciBjb3BpZXMgb2YgYSB0b2tlbgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICR0b2tfY291bnQgPT0gMSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZvciBhIGNvbW1hLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRyYXdfdG9rIGVxICcsJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBEbyBub3QgZGVsZXRlIGNvbW1hcyBiZWZvcmUgYW4gZXF1YWxzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRlbGV0ZV9tZSA9IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCgkaV9lcSkgJiYgJGkgPCAkaV9lcSApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIERvIG5vdCBkZWxldGUgbGluZS1sZXZlbCBjb21tYXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGVsZXRlX21lID0gMCBpZiAoICRsZXYgPD0gJGdyb3VwX2xldmVsICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGb3IgYW4gYXNzaWdubWVudCBhdCBncm91cCBsZXZlbC4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICAgJGlzX2Fzc2lnbm1lbnR7JHJhd190b2t9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGxldiA9PSAkZ3JvdXBfbGV2ZWwgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIERvIG5vdCBkZWxldGUgaWYgaXQgaXMgdGhlIGxhc3QgYWxpZ25tZW50IG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtdWx0aXBsZSB0b2tlbnM7IHRoaXMgd2lsbCBwcmV2ZW50IHNvbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHVuZGVzaXJhYmxlIGFsaWdubWVudHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRpbWF4ID4gMCAmJiAkaSA9PSAkaW1heCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRlbGV0ZV9tZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE90aGVyd2lzZSwgc2V0IGEgZmxhZyB0byBkZWxldGUgbW9zdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVtYWluaW5nIHRva2VucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAkZGVsZXRlZF9hc3NpZ25tZW50X3Rva2VuID0gJHJhd190b2sgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgICAgICAgICAgICAgIyBBZGQgdGhpcyB0b2tlbiB0byB0aGUgZGVsZXRpb24gbGlzdAogICAgICAgICAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAgICAgICAgICAgICBpZiAoJGRlbGV0ZV9tZSkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBpZGVsLCAkaTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgdXBkYXRlIGRlbGV0aW9uIHByb3BhZ2F0aW9uIGZsYWdzCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIWRlZmluZWQoJGRlbGV0ZV9hYm92ZV9sZXZlbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRsZXYgPCAkZGVsZXRlX2Fib3ZlX2xldmVsICkKICAgICAgICAgICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZGVsZXRlIGFsbCBmb2xsb3dpbmcgaGlnaGVyIGxldmVsIGFsaWdubWVudHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZWxldGVfYWJvdmVfbGV2ZWwgPSAkbGV2OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYnV0IGtlZXAgZGVsZXRpbmcgYWZ0ZXIgPT4gdG8gbmV4dCBsb3dlciBsZXZlbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0byBhdm9pZCBzb21lIGJpemFycmUgYWxpZ25tZW50cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkcmF3X3RvayBlcSAnPT4nICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZWxldGVfYWJvdmVfbGV2ZWwgPSAkbGV2IC0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gICAgIyBFbmQgbG9vcCBvdmVyIGFsaWdubWVudCB0b2tlbnMKCiAgICAgICAgICAgICAgICAjIFByb2Nlc3MgYWxsIGRlbGV0aW9uIHJlcXVlc3RzIGZvciB0aGlzIGxpbmUKICAgICAgICAgICAgICAgIGlmIChAaWRlbCkgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZV9zZWxlY3RlZF90b2tlbnMoICRsaW5lLCBcQGlkZWwgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSAgICAjIEVuZCBsb29wb3ZlciBsaW5lcwogICAgICAgIH0gICAgIyBFbmQgbG9vcCBvdmVyIHN1Ymdyb3VwcwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBQQVNTIDIgb3ZlciBzdWJncm91cHMgdG8gcmVtb3ZlIG51bGwgYWxpZ25tZW50cwogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgIyBUaGlzIHBhc3MgaXMgb25seSB1c2VkIGZvciB0ZXN0aW5nLiBJdCBpcyBoZWxwaW5nIHRvIGlkZW50aWZ5CiAgICAgICAgIyBhbGlnbm1lbnQgc2l0dWF0aW9ucyB3aGljaCBtaWdodCBiZSBpbXByb3ZlZCB3aXRoIGEgZnV0dXJlIG1vcmUKICAgICAgICAjIGdlbmVyYWwgYWxnb3JpdGhtIHdoaWNoIGFkZHMgYSB0YWlsIG1hdGNoaW5nIGNhcGFiaWxpdHkuCiAgICAgICAgaWYgKFRFU1RfREVMRVRFX05VTEwpIHsKICAgICAgICAgICAgZGVsZXRlX251bGxfYWxpZ25tZW50cyggJHJuZXdfbGluZXMsICRybGluZV9oYXNoZXMsIFxAc3ViZ3JvdXBzICkKICAgICAgICAgICAgICBpZiAoJHNhd19sYXJnZV9ncm91cCk7CiAgICAgICAgfQoKICAgICAgICAjIFBBU1MgMzogQ29uc3RydWN0IGEgdHJlZSBvZiBtYXRjaGVkIGxpbmVzIGFuZCBkZWxldGUgc29tZSBzbWFsbCBkZWVwZXIKICAgICAgICAjIGxldmVscyBvZiB0b2tlbnMuICBUaGV5IGFsc28gYmxvY2sgZ29vZCBhbGlnbm1lbnRzLgogICAgICAgIHBydW5lX2FsaWdubWVudF90cmVlKCRybmV3X2xpbmVzKSBpZiAoJG1heF9sZXZfZGlmZik7CgogICAgICAgICMgUEFTUyA0OiBjb21wYXJlIGFsbCBsaW5lcyBmb3IgY29tbW9uIHRva2VucwogICAgICAgIG1hdGNoX2xpbmVfcGFpcnMoICRybGluZXMsICRybmV3X2xpbmVzLCBcQHN1Ymdyb3VwcywgJGdyb3VwX2xldmVsICk7CgogICAgICAgIHJldHVybiAoICRtYXhfbGV2X2RpZmYsICRzYXdfc2lkZV9jb21tZW50ICk7CiAgICB9Cn0KCnN1YiBkZWxldGVfbnVsbF9hbGlnbm1lbnRzIHsKICAgIG15ICggJHJuZXdfbGluZXMsICRybGluZV9oYXNoZXMsICRyc3ViZ3JvdXBzICkgPSBAXzsKCiAgICAjIFRoaXMgaXMgYW4gb3B0aW9uYWwgc2Vjb25kIHBhc3MgZm9yIGRlbGV0aW5nIGFsaWdubWVudCB0b2tlbnMgd2hpY2ggY2FuCiAgICAjIG9jY2FzaW9uYWxseSBpbXByb3ZlIGFsaWdubWVudC4gIFdlIGxvb2sgZm9yIGFuZCByZW1vdmUgJ251bGwKICAgICMgYWxpZ25tZW50cycsIHdoaWNoIGFyZSBhbGlnbm1lbnRzIHRoYXQgcmVxdWlyZSBubyBwYWRkaW5nLiAgU28gd2UgY2FuCiAgICAjICdjaGVhdCcgYW5kIGRlbGV0ZSB0aGVtLiBGb3IgZXhhbXBsZSwgbm90aWNlIHRoZSAnPX4nIGFsaWdubWVudCBpbiB0aGUKICAgICMgZmlyc3QgdHdvIGxpbmVzIG9mIHRoZSBmb2xsb3dpbmcgY29kZToKCiAgICAjICAgICRzeXNuYW1lIC49ICdkZWwnIGlmICRzZWxmLT5sYWJlbCA9fiAvZGVsZXRpb24vOwogICAgIyAgICAkc3lzbmFtZSAuPSAnaW5zJyBpZiAkc2VsZi0+bGFiZWwgPX4gL2luc2VydGlvbi87CiAgICAjICAgICRzeXNuYW1lIC49IHVjICRzZWxmLT5hbGxlbGVfb3JpLT5zZXEgaWYgJHNlbGYtPmFsbGVsZV9vcmktPnNlcTsKCiAgICAjIFRoZXNlICc9ficgdG9rZW5zIGFyZSBhbHJlYWR5IGFsaWduZWQgYmVjYXVzZSB0aGV5IGFyZSBib3RoIHRoZSBzYW1lCiAgICAjIGRpc3RhbmNlIGZyb20gdGhlIHByZXZpb3VzIGFsaWdubWVudCB0b2tlbiwgdGhlICdpZicuICBTbyB3ZSBjYW4KICAgICMgZWxpbWluYXRlIHRoZW0gYXMgYWxpZ25tZW50cy4gIFRoZSBhZHZhbnRhZ2UgaXMgdGhhdCBpbiBzb21lIGNhc2VzLCBzdWNoCiAgICAjIGFzIHRoaXMgb25lLCB0aGlzIHdpbGwgYWxsb3cgb3RoZXIgdG9rZW5zIHRvIGJlIGFsaWduZWQuIEluIHRoaXMgY2FzZSB3ZQogICAgIyB0aGVuIGdldCB0aGUgJ2lmJyB0b2tlbnMgdG8gYWxpZ246CgogICAgIyAgICRzeXNuYW1lIC49ICdkZWwnICAgICAgICAgICAgICAgICAgICAgaWYgJHNlbGYtPmxhYmVsID1+IC9kZWxldGlvbi87CiAgICAjICAgJHN5c25hbWUgLj0gJ2lucycgICAgICAgICAgICAgICAgICAgICBpZiAkc2VsZi0+bGFiZWwgPX4gL2luc2VydGlvbi87CiAgICAjICAgJHN5c25hbWUgLj0gdWMgJHNlbGYtPmFsbGVsZV9vcmktPnNlcSBpZiAkc2VsZi0+YWxsZWxlX29yaS0+c2VxOwoKICAgICMgVGhlIGZvbGxvd2luZyBydWxlcyBmb3IgbGltaXRpbmcgdGhpcyBvcGVyYXRpb24gaGF2ZSBiZWVuIGZvdW5kIHRvCiAgICAjIHdvcmsgd2VsbCBhbmQgYXZvaWQgcHJvYmxlbXM6CgogICAgIyBSdWxlIDEuIFdlIG9ubHkgY29uc2lkZXIgYSBzZXF1ZW5jZSBvZiBsaW5lcyB3aGljaCBoYXZlIHRoZSBzYW1lCiAgICAjIHNlcXVlbmNlIG9mIGFsaWdubWVudCB0b2tlbnMuCgogICAgIyBSdWxlIDIuIFdlIG5ldmVyIGVsaW1pbmF0ZSB0aGUgZmlyc3QgYWxpZ25tZW50IHRva2VuLiAgT25lIHJlYXNvbiBpcyB0aGF0CiAgICAjIGxpbmVzIG1heSBoYXZlIGRpZmZlcmVudCBsZWFkaW5nIGluZGVudGF0aW9uIHNwYWNlcywgc28ga2VlcGluZyB0aGUKICAgICMgZmlyc3QgYWxpZ25tZW50IHRva2VuIGluc3VyZXMgdGhhdCBvdXIgbGVuZ3RoIG1lYXN1cmVtZW50cyBzdGFydCBhdAogICAgIyBhIHdlbGwtZGVmaW5lZCBwb2ludC4gIEFub3RoZXIgcmVhc29uIGlzIHRoYXQgbm90aGluZyBpcyBnYWluZWQgYmVjYXVzZQogICAgIyB0aGUgbGVmdC10by1yaWdodCBzd2VlcCBjYW4gYWx3YXlzIGhhbmRsZSBhbGlnbm1lbnQgb2YgdGhpcyB0b2tlbi4KCiAgICAjIFJ1bGUgMy4gV2UgcmVxdWlyZSB0aGF0IHRoZSBmaXJzdCBhbGlnbm1lbnQgdG9rZW4gZXhpc3QgaW4gZWl0aGVyCiAgICAjIGEgcHJldmlvdXMgbGluZSBvciBhIHN1YnNlcXVlbnQgbGluZS4gIFRoZSByZWFzb24gaXMgdGhhdCB0aGlzIGF2b2lkcwogICAgIyBjaGFuZ2luZyB0d28tbGluZSBtYXRjaGVzIHdoaWNoIGdvIHRocm91Z2ggc3BlY2lhbCBsb2dpYy4KCiAgICAjIFJ1bGUgNC4gRG8gbm90IGRlbGV0ZSBhIHRva2VuIHdoaWNoIG9jY3VycyBpbiBhIHByZXZpb3VzIG9yIHN1YnNlcXVlbnQKICAgICMgbGluZS4gRm9yIGV4YW1wbGUsIGluIHRoZSBhYm92ZSBleGFtcGxlLCBpdCB3YXMgb2sgdG8gZWxpbWluYXRlIHRoZSAnPX4nCiAgICAjIHRva2VuIGZyb20gdHdvIGxpbmVzIGJlY2F1c2UgaXQgZGlkIG5vdCBvY2N1ciBpbiBhIHN1cnJvdW5kaW5nIGxpbmUuCiAgICAjIElmIGl0IGRpZCBvY2N1ciBpbiBhIHN1cnJvdW5kaW5nIGxpbmUsIHRoZSByZXN1bHQgY291bGQgYmUgY29uZnVzaW5nCiAgICAjIG9yIGV2ZW4gaW5jb3JyZWN0bHkgYWxpZ25lZC4KCiAgICAjIEEgY29uc2VxdWVuY2Ugb2YgdGhlc2UgcnVsZXMgaXMgdGhhdCB3ZSBvbmx5IG5lZWQgdG8gY29uc2lkZXIgc3ViZ3JvdXBzCiAgICAjIHdpdGggYXQgbGVhc3QgMyBsaW5lcyBhbmQgMiBhbGlnbm1lbnQgdG9rZW5zLgoKICAgICMgVGhlIHN1Ymdyb3VwIGxpbmUgaW5kZXggcmFuZ2UKICAgIG15ICggJGpiZWcsICRqZW5kICk7CgogICAgIyBWYXJzIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHN0YXJ0IG9mIGEgY3VycmVudCBzZXF1ZW5jZSBvZiBtYXRjaGluZwogICAgIyBsaW5lcy4KICAgIG15ICRydG9rZW5zX21hdGNoOwogICAgbXkgJHJmaWVsZF9sZW5ndGhzX21hdGNoOwogICAgbXkgJGpfbWF0Y2hfYmVnOwogICAgbXkgJGpfbWF0Y2hfZW5kOwogICAgbXkgJGltYXhfbWF0Y2g7CiAgICBteSAkcm5lZWRfcGFkOwoKICAgICMgVmFycyBmb3IgYSBsaW5lIGJlaW5nIHRlc3RlZAogICAgbXkgJHJ0b2tlbnM7CiAgICBteSAkcmZpZWxkX2xlbmd0aHM7CiAgICBteSAkaW1heDsKCiAgICBteSAkc3RhcnRfbWF0Y2ggPSBzdWIgewogICAgICAgIG15ICgkamopID0gQF87CiAgICAgICAgJHJ0b2tlbnNfbWF0Y2ggICAgICAgID0gJHJ0b2tlbnM7CiAgICAgICAgJHJmaWVsZF9sZW5ndGhzX21hdGNoID0gJHJmaWVsZF9sZW5ndGhzOwogICAgICAgICRqX21hdGNoX2JlZyAgICAgICAgICA9ICRqajsKICAgICAgICAkal9tYXRjaF9lbmQgICAgICAgICAgPSAkamo7CiAgICAgICAgJGltYXhfbWF0Y2ggICAgICAgICAgID0gJGltYXg7CiAgICAgICAgJHJuZWVkX3BhZCAgICAgICAgICAgID0gW107CiAgICAgICAgcmV0dXJuOwogICAgfTsKCiAgICBteSAkYWRkX3RvX21hdGNoID0gc3ViIHsKICAgICAgICBteSAoJGpqKSA9IEBfOwogICAgICAgICRqX21hdGNoX2VuZCA9ICRqajsKCiAgICAgICAgIyBLZWVwIHRyYWNrIG9mIGFueSBwYWRkaW5nIHRoYXQgd291bGQgYmUgbmVlZGVkIGZvciBlYWNoIHRva2VuCiAgICAgICAgZm9yICggbXkgJGkgPSAwIDsgJGkgPD0gJGltYXggOyAkaSsrICkgewogICAgICAgICAgICBuZXh0IGlmICggJHJuZWVkX3BhZC0+WyRpXSApOwogICAgICAgICAgICBteSAkbGVuZ3RoICAgICAgID0gJHJmaWVsZF9sZW5ndGhzLT5bJGldOwogICAgICAgICAgICBteSAkbGVuZ3RoX21hdGNoID0gJHJmaWVsZF9sZW5ndGhzX21hdGNoLT5bJGldOwogICAgICAgICAgICBpZiAoICRsZW5ndGggbmUgJGxlbmd0aF9tYXRjaCApIHsgJHJuZWVkX3BhZC0+WyRpXSA9IDEgfQogICAgICAgIH0KICAgIH07CgogICAgbXkgJGVuZF9tYXRjaCA9IHN1YiB7CiAgICAgICAgcmV0dXJuIHVubGVzcyAoICRqX21hdGNoX2VuZCA+ICRqX21hdGNoX2JlZyApOwogICAgICAgIG15ICRubGluZXMgICAgPSAkal9tYXRjaF9lbmQgLSAkal9tYXRjaF9iZWcgKyAxOwogICAgICAgIG15ICRyaGFzaF9iZWcgPSAkcmxpbmVfaGFzaGVzLT5bJGpfbWF0Y2hfYmVnXTsKICAgICAgICBteSAkcmhhc2hfZW5kID0gJHJsaW5lX2hhc2hlcy0+WyRqX21hdGNoX2VuZF07CiAgICAgICAgbXkgQGlkZWw7CgogICAgICAgICMgRG8gbm90IGRlbGV0ZSB1bmxlc3MgdGhlIGZpcnN0IHRva2VuIGFsc28gb2NjdXJzIGluIGEgc3Vycm91bmRpbmcgbGluZQogICAgICAgIG15ICR0b2swID0gJHJ0b2tlbnNfbWF0Y2gtPlswXTsKICAgICAgICByZXR1cm4KICAgICAgICAgIHVubGVzcyAoCiAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICRqX21hdGNoX2JlZyA+ICRqYmVnCiAgICAgICAgICAgICAgICAmJiAkcm5ld19saW5lcy0+WyAkal9tYXRjaF9iZWcgLSAxIF0tPmdldF9ydG9rZW5zKCktPlswXSBlcQogICAgICAgICAgICAgICAgJHRvazAKICAgICAgICAgICAgKQogICAgICAgICAgICB8fCAoICAgJGpfbWF0Y2hfZW5kIDwgJGplbmQKICAgICAgICAgICAgICAgICYmICRybmV3X2xpbmVzLT5bICRqX21hdGNoX2VuZCArIDEgXS0+Z2V0X3J0b2tlbnMoKS0+WzBdIGVxCiAgICAgICAgICAgICAgICAkdG9rMCApCiAgICAgICAgICApOwoKICAgICAgICAjIE5vdGUgdGhhdCB3ZSBhcmUgc2tpcHBpbmcgdGhlIHRva2VuIGF0IGk9MAogICAgICAgIGZvciAoIG15ICRpID0gMSA7ICRpIDw9ICRpbWF4X21hdGNoIDsgJGkrKyApIHsKCiAgICAgICAgICAgICMgZG8gbm90IGRlbGV0ZSBhIHRva2VuIHdoaWNoIHJlcXVpcmVzIHBhZGRpbmcgdG8gYWxpZ24KICAgICAgICAgICAgbmV4dCBpZiAoICRybmVlZF9wYWQtPlskaV0gKTsKCiAgICAgICAgICAgIG15ICR0b2sgPSAkcnRva2Vuc19tYXRjaC0+WyRpXTsKCiAgICAgICAgICAgICMgRG8gbm90IGRlbGV0ZSBhIHRva2VuIHdoaWNoIG9jY3VycyBpbiBhIHN1cnJvdW5kaW5nIGxpbmUKICAgICAgICAgICAgbmV4dAogICAgICAgICAgICAgIGlmICggJGpfbWF0Y2hfYmVnID4gJGpiZWcKICAgICAgICAgICAgICAgICYmIGRlZmluZWQoICRybGluZV9oYXNoZXMtPlsgJGpfbWF0Y2hfYmVnIC0gMSBdLT57JHRva30gKSApOwogICAgICAgICAgICBuZXh0CiAgICAgICAgICAgICAgaWYgKCAkal9tYXRjaF9lbmQgPCAkamVuZAogICAgICAgICAgICAgICAgJiYgZGVmaW5lZCggJHJsaW5lX2hhc2hlcy0+WyAkal9tYXRjaF9lbmQgKyAxIF0tPnskdG9rfSApICk7CgogICAgICAgICAgICAjIG9rIHRvIGRlbGV0ZQogICAgICAgICAgICBwdXNoIEBpZGVsLCAkaTsKICAgICAgICAgICAgIyNwcmludCAib2sgdG8gZGVsZXRlIHRvaz0kdG9rXG4iOwogICAgICAgIH0KICAgICAgICBpZiAoQGlkZWwpIHsKICAgICAgICAgICAgZm9yZWFjaCBteSAkaiAoICRqX21hdGNoX2JlZyAuLiAkal9tYXRjaF9lbmQgKSB7CiAgICAgICAgICAgICAgICBkZWxldGVfc2VsZWN0ZWRfdG9rZW5zKCAkcm5ld19saW5lcy0+WyRqXSwgXEBpZGVsICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwoKICAgIGZvcmVhY2ggbXkgJGl0ZW0gKCBAeyRyc3ViZ3JvdXBzfSApIHsKICAgICAgICAoICRqYmVnLCAkamVuZCApID0gQHskaXRlbX07CiAgICAgICAgbXkgJG5saW5lcyA9ICRqZW5kIC0gJGpiZWcgKyAxOwogICAgICAgIG5leHQgdW5sZXNzICggJG5saW5lcyA+IDIgKTsKCiAgICAgICAgZm9yICggbXkgJGpqID0gJGpiZWcgOyAkamogPD0gJGplbmQgOyAkamorKyApIHsKICAgICAgICAgICAgbXkgJGxpbmUgPSAkcm5ld19saW5lcy0+WyRqal07CiAgICAgICAgICAgICRydG9rZW5zICAgICAgICA9ICRsaW5lLT5nZXRfcnRva2VucygpOwogICAgICAgICAgICAkcmZpZWxkX2xlbmd0aHMgPSAkbGluZS0+Z2V0X3JmaWVsZF9sZW5ndGhzKCk7CiAgICAgICAgICAgICRpbWF4ICAgICAgICAgICA9IEB7JHJ0b2tlbnN9IC0gMjsKCiAgICAgICAgICAgICMgc3RhcnQgYSBuZXcgbWF0Y2ggZ3JvdXAKICAgICAgICAgICAgaWYgKCAkamogPT0gJGpiZWcgKSB7CiAgICAgICAgICAgICAgICAkc3RhcnRfbWF0Y2gtPigkamopOwogICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZWUgaWYgYWxsIHRva2VucyBvZiB0aGlzIGxpbmUgbWF0Y2ggdGhlIGN1cnJlbnQgZ3JvdXAKICAgICAgICAgICAgbXkgJG1hdGNoOwogICAgICAgICAgICBpZiAoICRpbWF4ID09ICRpbWF4X21hdGNoICkgewogICAgICAgICAgICAgICAgZm9yICggbXkgJGkgPSAwIDsgJGkgPD0gJGltYXggOyAkaSsrICkgewogICAgICAgICAgICAgICAgICAgIG15ICR0b2sgICAgICAgPSAkcnRva2Vucy0+WyRpXTsKICAgICAgICAgICAgICAgICAgICBteSAkdG9rX21hdGNoID0gJHJ0b2tlbnNfbWF0Y2gtPlskaV07CiAgICAgICAgICAgICAgICAgICAgbGFzdCBpZiAoICR0b2sgbmUgJHRva19tYXRjaCApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJG1hdGNoID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB5ZXMsIHRoZXkgYWxsIG1hdGNoCiAgICAgICAgICAgIGlmICgkbWF0Y2gpIHsKICAgICAgICAgICAgICAgICRhZGRfdG9fbWF0Y2gtPigkamopOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIG5vdywgdGhpcyBsaW5lIGRvZXMgbm90IG1hdGNoCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJGVuZF9tYXRjaC0+KCk7CiAgICAgICAgICAgICAgICAkc3RhcnRfbWF0Y2gtPigkamopOwogICAgICAgICAgICB9CiAgICAgICAgfSAgICAjIEVuZCBsb29wb3ZlciBsaW5lcwogICAgICAgICRlbmRfbWF0Y2gtPigpOwogICAgfSAgICAjIEVuZCBsb29wIG92ZXIgc3ViZ3JvdXBzCiAgICByZXR1cm47Cn0gIyMgZW5kIHN1YiBkZWxldGVfbnVsbF9hbGlnbm1lbnRzCgpzdWIgbWF0Y2hfbGluZV9wYWlycyB7CiAgICBteSAoICRybGluZXMsICRybmV3X2xpbmVzLCAkcnN1Ymdyb3VwcywgJGdyb3VwX2xldmVsICkgPSBAXzsKCiAgICAjIENvbXBhcmUgZWFjaCBwYWlyIG9mIGxpbmVzIGFuZCBzYXZlIGluZm9ybWF0aW9uIGFib3V0IGNvbW1vbiBtYXRjaGVzCiAgICAjICRybGluZXMgICAgID0gbGlzdCBvZiBsaW5lcyBpbmNsdWRpbmcgaGFuZ2luZyBzaWRlIGNvbW1lbnRzCiAgICAjICRybmV3X2xpbmVzID0gbGlzdCBvZiBsaW5lcyB3aXRob3V0IGFueSBoYW5naW5nIHNpZGUgY29tbWVudHMKICAgICMgJHJzdWJncm91cHMgPSBsaXN0IG9mIHN1Ymdyb3VwcyBvZiB0aGUgbmV3IGxpbmVzCgogICAgIyBUT0RPOgogICAgIyBNYXliZSBjaGFuZ2U6IGltYXhfcGFpciA9PiBwYWlyX21hdGNoX2luZm8gPSByZWYgdG8gYXJyYXkKICAgICMgID0gWyRpbWF4X2FsaWduLCAkck1zZywgLi4uIF0KICAgICMgIFRoaXMgbWF5IGV2ZW50dWFsbHkgaGF2ZSBtdWx0aS1sZXZlbCBtYXRjaCBpbmZvCgogICAgIyBQcmV2aW91cyBsaW5lIHZhcnMKICAgIG15ICggJGxpbmVfbSwgJHJ0b2tlbnNfbSwgJHJwYXR0ZXJuc19tLCAkcmZpZWxkX2xlbmd0aHNfbSwgJGltYXhfbSwKICAgICAgICAkbGlzdF90eXBlX20sICRjaV9sZXZlbF9tICk7CgogICAgIyBDdXJyZW50IGxpbmUgdmFycwogICAgbXkgKCAkbGluZSwgJHJ0b2tlbnMsICRycGF0dGVybnMsICRyZmllbGRfbGVuZ3RocywgJGltYXgsICRsaXN0X3R5cGUsCiAgICAgICAgJGNpX2xldmVsICk7CgogICAgdXNlIGNvbnN0YW50IEVYUExBSU5fQ09NUEFSRV9QQVRURVJOUyA9PiAwOwoKICAgIG15ICRjb21wYXJlX3BhdHRlcm5zID0gc3ViIHsKCiAgICAgICAgIyBoZWxwZXIgcm91dGluZSB0byBkZWNpZGUgaWYgcGF0dGVybnMgbWF0Y2ggd2VsbCBlbm91Z2guLgogICAgICAgICMgcmV0dXJuIGNvZGU6CiAgICAgICAgIyAgIDAgPSBwYXR0ZXJucyBtYXRjaCwgY29udGludWUKICAgICAgICAjICAgMSA9IG5vIG1hdGNoCiAgICAgICAgIyAgIDIgPSBubyBtYXRjaCwgYW5kIGxpbmVzIGRvIG5vdCBtYXRjaCBhdCBhbGwKCiAgICAgICAgbXkgKCAkdG9rLCAkdG9rX20sICRwYXQsICRwYXRfbSwgJHBhZCApID0gQF87CiAgICAgICAgbXkgJEdvVG9Nc2cgICAgID0gIiI7CiAgICAgICAgbXkgJHJldHVybl9jb2RlID0gMTsKCiAgICAgICAgbXkgKCAkYWxpZ25tZW50X3Rva2VuLCAkbGV2LCAkdGFnLCAkdG9rX2NvdW50ICkgPQogICAgICAgICAgZGVjb2RlX2FsaWdubWVudF90b2tlbigkdG9rKTsKCiAgICAgICAgIyBXZSBoYXZlIHRvIGJlIHZlcnkgY2FyZWZ1bCBhYm91dCBhbGlnbmluZyBjb21tYXMKICAgICAgICAjIHdoZW4gdGhlIHBhdHRlcm4ncyBkb24ndCBtYXRjaCwgYmVjYXVzZSBpdCBjYW4gYmUKICAgICAgICAjIHdvcnNlIHRvIGNyZWF0ZSBhbiBhbGlnbm1lbnQgd2hlcmUgbm9uZSBpcyBuZWVkZWQKICAgICAgICAjIHRoYW4gdG8gb21pdCBvbmUuICBIZXJlJ3MgYW4gZXhhbXBsZSB3aGVyZSB0aGUgJywncwogICAgICAgICMgYXJlIG5vdCBpbiBuYW1lZCBjb250YWluZXJzLiAgVGhlIGZpcnN0IGxpbmUgYmVsb3cKICAgICAgICAjIHNob3VsZCBub3QgbWF0Y2ggdGhlIG5leHQgdHdvOgogICAgICAgICMgICAoICRhLCAkYiApID0gKCAkYiwgJHIgKTsKICAgICAgICAjICAgKCAkeDEsICR4MiApID0gKCAkeDIgLSAkcSAqICR4MSwgJHgxICk7CiAgICAgICAgIyAgICggJHkxLCAkeTIgKSA9ICggJHkyIC0gJHEgKiAkeTEsICR5MSApOwogICAgICAgIGlmICggJGFsaWdubWVudF90b2tlbiBlcSAnLCcgKSB7CgogICAgICAgICAgICAjIGRvIG5vdCBhbGlnbiBjb21tYXMgdW5sZXNzIHRoZXkgYXJlIGluIG5hbWVkCiAgICAgICAgICAgICMgY29udGFpbmVycwogICAgICAgICAgICAkR29Ub01zZyA9ICJkbyBub3QgYWxpZ24gY29tbWFzIGluIHVubmFtZWQgY29udGFpbmVycyI7CiAgICAgICAgICAgIGdvdG8gTk9fTUFUQ0ggdW5sZXNzICggJHRvayA9fiAvW0EtWmEtel0vICk7CiAgICAgICAgfQoKICAgICAgICAjIGRvIG5vdCBhbGlnbiBwYXJlbnMgdW5sZXNzIHBhdHRlcm5zIG1hdGNoOwogICAgICAgICMgbGFyZ2UgdWdseSBzcGFjZXMgY2FuIG9jY3VyIGluIG1hdGggZXhwcmVzc2lvbnMuCiAgICAgICAgZWxzaWYgKCAkYWxpZ25tZW50X3Rva2VuIGVxICcoJyApIHsKCiAgICAgICAgICAgICMgQnV0IHdlIGNhbiBhbGxvdyBhIG1hdGNoIGlmIHRoZSBwYXJlbnMgZG9uJ3QKICAgICAgICAgICAgIyByZXF1aXJlIGFueSBwYWRkaW5nLgogICAgICAgICAgICAkR29Ub01zZyA9ICJkbyBub3QgYWxpZ24gJygnIHVubGVzcyBwYXR0ZXJucyBtYXRjaCBvciBwYWQ9MCI7CiAgICAgICAgICAgIGlmICggJHBhZCAhPSAwICkgeyBnb3RvIE5PX01BVENIIH0KICAgICAgICB9CgogICAgICAgICMgSGFuZGxlIGFuICc9JyBhbGlnbm1lbnQgd2l0aCBkaWZmZXJlbnQgcGF0dGVybnMgdG8KICAgICAgICAjIHRoZSBsZWZ0LgogICAgICAgIGVsc2lmICggJGFsaWdubWVudF90b2tlbiBlcSAnPScgKSB7CgogICAgICAgICAgICAjIEl0IGlzIGJlc3QgdG8gYmUgYSBsaXR0bGUgcmVzdHJpY3RpdmUgd2hlbgogICAgICAgICAgICAjIGFsaWduaW5nICc9JyB0b2tlbnMuICBIZXJlIGlzIGFuIGV4YW1wbGUgb2YKICAgICAgICAgICAgIyB0d28gbGluZXMgdGhhdCB3ZSB3aWxsIG5vdCBhbGlnbjoKICAgICAgICAgICAgIyAgICAgICBteSAkdmFyaWFibGU9NjsKICAgICAgICAgICAgIyAgICAgICAkYmI9NDsKICAgICAgICAgICAgIyBUaGUgcHJvYmxlbSBpcyB0aGF0IG9uZSBpcyBhICdteScgZGVjbGFyYXRpb24sCiAgICAgICAgICAgICMgYW5kIHRoZSBvdGhlciBpc24ndCwgc28gdGhleSdyZSBub3QgdmVyeSBzaW1pbGFyLgogICAgICAgICAgICAjIFdlIHdpbGwgZmlsdGVyIHRoZXNlIG91dCBieSBjb21wYXJpbmcgdGhlIGZpcnN0CiAgICAgICAgICAgICMgbGV0dGVyIG9mIHRoZSBwYXR0ZXJuLiAgVGhpcyBpcyBjcnVkZSwgYnV0IHdvcmtzCiAgICAgICAgICAgICMgd2VsbCBlbm91Z2guCiAgICAgICAgICAgIGlmICggc3Vic3RyKCAkcGF0X20sIDAsIDEgKSBuZSBzdWJzdHIoICRwYXQsIDAsIDEgKSApIHsKICAgICAgICAgICAgICAgICRHb1RvTXNnID0gImZpcnN0IGNoYXJhY3RlciBiZWZvcmUgZXF1YWxzIGRpZmZlciI7CiAgICAgICAgICAgICAgICBnb3RvIE5PX01BVENIOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFRoZSBpbnRyb2R1Y3Rpb24gb2Ygc3ViICdwcnVuZV9hbGlnbm1lbnRfdHJlZScKICAgICAgICAgICAgIyBlbmFibGVkIGFsaWdubWVudCBvZiBsaXN0cyBsZWZ0IG9mIHRoZSBlcXVhbHMgd2l0aAogICAgICAgICAgICAjIG90aGVyIHNjYWxhciB2YXJpYWJsZXMuIEZvciBleGFtcGxlOgogICAgICAgICAgICAjIG15ICggJEQsICRzLCAkZSApID0gQF87CiAgICAgICAgICAgICMgbXkgJGQgICAgICAgICAgICAgPSBsZW5ndGggJEQ7CiAgICAgICAgICAgICMgbXkgJGMgICAgICAgICAgICAgPSAkZSAtICRzIC0gJGQ7CgogICAgICAgICAgICAjIEJ1dCB0aGlzIHdvdWxkIGNoYW5nZSBmb3JtYXR0aW5nIG9mIGEgbG90IG9mIHNjcmlwdHMsCiAgICAgICAgICAgICMgc28gZm9yIG5vdyB3ZSBwcmV2ZW50IGFsaWdubWVudCBvZiBjb21tYSBsaXN0cyBvbiB0aGUKICAgICAgICAgICAgIyBsZWZ0IHdpdGggc2NhbGFycyBvbiB0aGUgbGVmdC4gIFdlIHdpbGwgYWxzbyBwcmV2ZW50CiAgICAgICAgICAgICMgYW55IHBhcnRpYWwgYWxpZ25tZW50cy4KCiAgICAgICAgICAjIHNldCByZXR1cm4gY29kZSAyIGlmIHRoZSA9IGlzIGF0IGxpbmUgbGV2ZWwsIGJ1dAogICAgICAgICAgIyBzZXQgcmV0dXJuIGNvZGUgMSBpZiB0aGUgPSBpcyBiZWxvdyBsaW5lIGxldmVsLCBpLmUuCiAgICAgICAgICAjICAgIHN1YiBuZXcgeyBteSAoICRwLCAkdiApID0gQF87IGJsZXNzIFwkdiwgJHAgfQogICAgICAgICAgIyAgICBzdWIgaXRlciB7IG15ICgkeCkgPSBAXzsgcmV0dXJuIHVuZGVmIGlmICQkeCA8IDA7IHJldHVybiAkJHgtLTsgfQoKICAgICAgICAgICAgZWxzaWYgKAogICAgICAgICAgICAgICAgKCBpbmRleCggJHBhdF9tLCAnLCcgKSA+PSAwICkgbmUgKCBpbmRleCggJHBhdCwgJywnICkgPj0gMCApICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJEdvVG9Nc2cgPSAibWl4ZWQgY29tbWFzL25vLWNvbW1hcyBiZWZvcmUgZXF1YWxzIjsKICAgICAgICAgICAgICAgIGlmICggJGxldiBlcSAkZ3JvdXBfbGV2ZWwgKSB7CiAgICAgICAgICAgICAgICAgICAgJHJldHVybl9jb2RlID0gMjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdvdG8gTk9fTUFUQ0g7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICBNQVRDSDoKICAgICAgICByZXR1cm4gKCAwLCBcJEdvVG9Nc2cgKTsKCiAgICAgIE5PX01BVENIOgoKICAgICAgICBFWFBMQUlOX0NPTVBBUkVfUEFUVEVSTlMKICAgICAgICAgICYmIHByaW50IFNUREVSUiAibm8gbWF0Y2ggYmVjYXVzZSAkR29Ub01zZ1xuIjsKCiAgICAgICAgcmV0dXJuICggJHJldHVybl9jb2RlLCBcJEdvVG9Nc2cgKTsKCiAgICB9OyAgICAjIyBlbmQgb2YgJGNvbXBhcmVfcGF0dGVybnMtPigpCgogICAgIyBsb29wIG92ZXIgc3ViZ3JvdXBzCiAgICBmb3JlYWNoIG15ICRpdGVtICggQHskcnN1Ymdyb3Vwc30gKSB7CiAgICAgICAgbXkgKCAkamJlZywgJGplbmQgKSA9IEB7JGl0ZW19OwogICAgICAgIG15ICRubGluZXMgPSAkamVuZCAtICRqYmVnICsgMTsKICAgICAgICBuZXh0IHVubGVzcyAoICRubGluZXMgPiAxICk7CgogICAgICAgICMgbG9vcCBvdmVyIGxpbmVzIGluIGEgc3ViZ3JvdXAKICAgICAgICBmb3IgKCBteSAkamogPSAkamJlZyA7ICRqaiA8PSAkamVuZCA7ICRqaisrICkgewoKICAgICAgICAgICAgJGxpbmVfbSAgICAgICAgICAgPSAkbGluZTsKICAgICAgICAgICAgJHJ0b2tlbnNfbSAgICAgICAgPSAkcnRva2VuczsKICAgICAgICAgICAgJHJwYXR0ZXJuc19tICAgICAgPSAkcnBhdHRlcm5zOwogICAgICAgICAgICAkcmZpZWxkX2xlbmd0aHNfbSA9ICRyZmllbGRfbGVuZ3RoczsKICAgICAgICAgICAgJGltYXhfbSAgICAgICAgICAgPSAkaW1heDsKICAgICAgICAgICAgJGxpc3RfdHlwZV9tICAgICAgPSAkbGlzdF90eXBlOwogICAgICAgICAgICAkY2lfbGV2ZWxfbSAgICAgICA9ICRjaV9sZXZlbDsKCiAgICAgICAgICAgICRsaW5lICAgICAgICAgICA9ICRybmV3X2xpbmVzLT5bJGpqXTsKICAgICAgICAgICAgJHJ0b2tlbnMgICAgICAgID0gJGxpbmUtPmdldF9ydG9rZW5zKCk7CiAgICAgICAgICAgICRycGF0dGVybnMgICAgICA9ICRsaW5lLT5nZXRfcnBhdHRlcm5zKCk7CiAgICAgICAgICAgICRyZmllbGRfbGVuZ3RocyA9ICRsaW5lLT5nZXRfcmZpZWxkX2xlbmd0aHMoKTsKICAgICAgICAgICAgJGltYXggICAgICAgICAgID0gQHskcnRva2Vuc30gLSAyOwogICAgICAgICAgICAkbGlzdF90eXBlICAgICAgPSAkbGluZS0+Z2V0X2xpc3RfdHlwZSgpOwogICAgICAgICAgICAkY2lfbGV2ZWwgICAgICAgPSAkbGluZS0+Z2V0X2NpX2xldmVsKCk7CgogICAgICAgICAgICAjIG5vdGhpbmcgdG8gZG8gZm9yIGZpcnN0IGxpbmUKICAgICAgICAgICAgbmV4dCBpZiAoICRqaiA9PSAkamJlZyApOwoKICAgICAgICAgICAgbXkgJGNpX2p1bXAgPSAkY2lfbGV2ZWwgLSAkY2lfbGV2ZWxfbTsKCiAgICAgICAgICAgIG15ICRpbWF4X21pbiA9ICRpbWF4X20gPCAkaW1heCA/ICRpbWF4X20gOiAkaW1heDsKCiAgICAgICAgICAgIG15ICRpbWF4X2FsaWduID0gLTE7CgogICAgICAgICAgICAjIGZpbmQgbnVtYmVyIG9mIGxlYWRpbmcgY29tbW9uIHRva2VucwoKICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgICAgICMgTm8gbWF0Y2ggdG8gaGFuZ2luZyBzaWRlIGNvbW1lbnQKICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgICAgIGlmICggJGxpbmUtPmdldF9pc19oYW5naW5nX3NpZGVfY29tbWVudCgpICkgewoKICAgICAgICAgICAgICAgICMgU2hvdWxkIG5vdCBnZXQgaGVyZTsgSFNDJ3MgaGF2ZSBiZWVuIGZpbHRlcmVkIG91dAogICAgICAgICAgICAgICAgJGltYXhfYWxpZ24gPSAtMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgICAgICMgSGFuZGxlIGNvbW1hLXNlcGFyYXRlZCBsaXN0cwogICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAgICAgZWxzaWYgKCAkbGlzdF90eXBlICYmICRsaXN0X3R5cGUgZXEgJGxpc3RfdHlwZV9tICkgewoKICAgICAgICAgICAgICAgICMgZG8gbm90IGFsaWduIGxpc3RzIGFjcm9zcyBhIGNpIGp1bXAgd2l0aCBuZXcgbGlzdCBtZXRob2QKICAgICAgICAgICAgICAgIGlmICgkY2lfanVtcCkgeyAkaW1heF9taW4gPSAtMSB9CgogICAgICAgICAgICAgICAgbXkgJGlfbm9tYXRjaCA9ICRpbWF4X21pbiArIDE7CiAgICAgICAgICAgICAgICBmb3IgKCBteSAkaSA9IDAgOyAkaSA8PSAkaW1heF9taW4gOyAkaSsrICkgewogICAgICAgICAgICAgICAgICAgIG15ICR0b2sgICA9ICRydG9rZW5zLT5bJGldOwogICAgICAgICAgICAgICAgICAgIG15ICR0b2tfbSA9ICRydG9rZW5zX20tPlskaV07CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkdG9rIG5lICR0b2tfbSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGlfbm9tYXRjaCA9ICRpOwogICAgICAgICAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkaW1heF9hbGlnbiA9ICRpX25vbWF0Y2ggLSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAgICAgIyBIYW5kbGUgbm9uLWxpc3RzCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG15ICRpX25vbWF0Y2ggPSAkaW1heF9taW4gKyAxOwogICAgICAgICAgICAgICAgZm9yICggbXkgJGkgPSAwIDsgJGkgPD0gJGltYXhfbWluIDsgJGkrKyApIHsKICAgICAgICAgICAgICAgICAgICBteSAkdG9rICAgPSAkcnRva2Vucy0+WyRpXTsKICAgICAgICAgICAgICAgICAgICBteSAkdG9rX20gPSAkcnRva2Vuc19tLT5bJGldOwogICAgICAgICAgICAgICAgICAgIGlmICggJHRvayBuZSAkdG9rX20gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpX25vbWF0Y2ggPSAkaTsKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIG15ICRwYXQgICA9ICRycGF0dGVybnMtPlskaV07CiAgICAgICAgICAgICAgICAgICAgbXkgJHBhdF9tID0gJHJwYXR0ZXJuc19tLT5bJGldOwoKICAgICAgICAgICAgICAgICAgICAjIElmIHBhdHRlcm5zIGRvbid0IG1hdGNoLCB3ZSBoYXZlIHRvIGJlIGNhcmVmdWwuLi4KICAgICAgICAgICAgICAgICAgICBpZiAoICRwYXRfbSBuZSAkcGF0ICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkcGFkID0KICAgICAgICAgICAgICAgICAgICAgICAgICAkcmZpZWxkX2xlbmd0aHMtPlskaV0gLSAkcmZpZWxkX2xlbmd0aHNfbS0+WyRpXTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgKCAkbWF0Y2hfY29kZSwgJHJtc2cgKSA9ICRjb21wYXJlX3BhdHRlcm5zLT4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdG9rLCAkdG9rX20sICRwYXQsICRwYXRfbSwgJHBhZAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG1hdGNoX2NvZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICAgICggJG1hdGNoX2NvZGUgZXEgMSApIHsgJGlfbm9tYXRjaCA9ICRpIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJG1hdGNoX2NvZGUgZXEgMiApIHsgJGlfbm9tYXRjaCA9IDAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRpbWF4X2FsaWduID0gJGlfbm9tYXRjaCAtIDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRsaW5lX20tPnNldF9pbWF4X3BhaXIoJGltYXhfYWxpZ24pOwoKICAgICAgICB9ICMjIGVuZCBsb29wIG92ZXIgbGluZXMKCiAgICAgICAgIyBQdXQgZmVuY2UgYXQgZW5kIG9mIHN1Ymdyb3VwCiAgICAgICAgJGxpbmUtPnNldF9pbWF4X3BhaXIoLTEpOwoKICAgIH0gIyMgZW5kIGxvb3Agb3ZlciBzdWJncm91cHMKCiAgICAjIGlmIHRoZXJlIGFyZSBoYW5naW5nIHNpZGUgY29tbWVudHMsIHByb3BhZ2F0ZSB0aGUgcGFpciBpbmZvIGRvd24gdG8gdGhlbQogICAgIyBzbyB0aGF0IGxpbmVzIGNhbiBqdXN0IGxvb2sgYmFjayBvbmUgbGluZSBmb3IgdGhlaXIgcGFpciBpbmZvLgogICAgaWYgKCBAeyRybGluZXN9ID4gQHskcm5ld19saW5lc30gKSB7CiAgICAgICAgbXkgJGxhc3RfcGFpcl9pbmZvID0gLTE7CiAgICAgICAgZm9yZWFjaCBteSAkbGluZSAoIEB7JHJsaW5lc30gKSB7CiAgICAgICAgICAgIGlmICggJGxpbmUtPmdldF9pc19oYW5naW5nX3NpZGVfY29tbWVudCgpICkgewogICAgICAgICAgICAgICAgJGxpbmUtPnNldF9pbWF4X3BhaXIoJGxhc3RfcGFpcl9pbmZvKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRsYXN0X3BhaXJfaW5mbyA9ICRsaW5lLT5nZXRfaW1heF9wYWlyKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBmYXRfY29tbWFfdG9fY29tbWEgewogICAgbXkgKCRzdHIpID0gQF87CgogICAgIyBXZSBhcmUgY2hhbmdpbmcgJz0+JyB0byAnLCcgYW5kIHJlbW92aW5nIGFueSB0cmFpbGluZyBkZWNpbWFsIGNvdW50CiAgICAjIGJlY2F1c2UgY3VycmVudGx5IGZhdCBjb21tYXMgaGF2ZSBhIGNvdW50IGFuZCBjb21tYXMgZG8gbm90LgogICAgIyBGb3IgZXhhbXBsZSwgd2Ugd2lsbCBjaGFuZ2UgJz0+Mit7LTMuMicgaW50byAnLDIrey0zJwogICAgaWYgKCAkc3RyID1+IC9ePT4oW15cLl0qKS8gKSB7ICRzdHIgPSAnLCcgLiAkMSB9CiAgICByZXR1cm4gJHN0cjsKfQoKc3ViIGdldF9saW5lX3Rva2VuX2luZm8gewoKICAgICMgc2NhbiBsaW5lcyBvZiB0b2tlbnMgYW5kIHJldHVybiBzdW1tYXJ5IGluZm9ybWF0aW9uIGFib3V0IHRoZSByYW5nZSBvZgogICAgIyBsZXZlbHMgYW5kIHBhdHRlcm5zLgogICAgbXkgKCRybGluZXMpID0gQF87CgogICAgIyBGaXJzdCBzY2FuIHRvIGNoZWNrIG1vbm90b25pY2l0eS4gSGVyZSBpcyBhbiBleGFtcGxlIG9mIHNldmVyYWwKICAgICMgbGluZXMgd2hpY2ggYXJlIG1vbm90b25pYy4gVGhlID0gaXMgdGhlIGxvd2VzdCBsZXZlbCwgYW5kCiAgICAjIHRoZSBjb21tYXMgYXJlIGFsbCBvbmUgbGV2ZWwgZGVlcGVyLiBTbyB0aGlzIGlzIG5vdCBub25tb25vdG9uaWMuCiAgICAjICAkJGR7IndlZWtzIn0gICA9IFsgInciLCAgIndrIiwgICJ3a3MiLCAid2VlayIsICJ3ZWVrcyIgXTsKICAgICMgICQkZHsiZGF5cyJ9ICAgID0gWyAiZCIsICAiZGF5IiwgImRheXMiIF07CiAgICAjICAkJGR7ImhvdXJzIn0gICA9IFsgImgiLCAgImhyIiwgICJocnMiLCAiaG91ciIsICJob3VycyIgXTsKICAgIG15IEBhbGxfdG9rZW5faW5mbzsKICAgIG15ICRhbGxfbW9ub3RvbmljID0gMTsKICAgIGZvciAoIG15ICRqaiA9IDAgOyAkamogPCBAeyRybGluZXN9IDsgJGpqKysgKSB7CiAgICAgICAgbXkgKCRsaW5lKSA9ICRybGluZXMtPlskampdOwogICAgICAgIG15ICRydG9rZW5zID0gJGxpbmUtPmdldF9ydG9rZW5zKCk7CiAgICAgICAgbXkgJGxhc3RfbGV2OwogICAgICAgIG15ICRpc19tb25vdG9uaWMgPSAxOwogICAgICAgIG15ICRpICAgICAgICAgICAgPSAtMTsKICAgICAgICBmb3JlYWNoIG15ICR0b2sgKCBAeyRydG9rZW5zfSApIHsKICAgICAgICAgICAgJGkrKzsKICAgICAgICAgICAgbXkgKCAkcmF3X3RvaywgJGxldiwgJHRhZywgJHRva19jb3VudCApID0KICAgICAgICAgICAgICBkZWNvZGVfYWxpZ25tZW50X3Rva2VuKCR0b2spOwogICAgICAgICAgICBwdXNoIEB7ICRhbGxfdG9rZW5faW5mb1skampdIH0sCiAgICAgICAgICAgICAgWyAkcmF3X3RvaywgJGxldiwgJHRhZywgJHRva19jb3VudCBdOwogICAgICAgICAgICBsYXN0IGlmICggJHRvayBlcSAnIycgKTsKICAgICAgICAgICAgaWYgKCAkaSA+IDAgJiYgJGxldiA8ICRsYXN0X2xldiApIHsgJGlzX21vbm90b25pYyA9IDAgfQogICAgICAgICAgICAkbGFzdF9sZXYgPSAkbGV2OwogICAgICAgIH0KICAgICAgICBpZiAoICEkaXNfbW9ub3RvbmljICkgeyAkYWxsX21vbm90b25pYyA9IDAgfQogICAgfQoKICAgIG15ICRybGluZV92YWx1ZXMgPSBbXTsKICAgIGZvciAoIG15ICRqaiA9IDAgOyAkamogPCBAeyRybGluZXN9IDsgJGpqKysgKSB7CiAgICAgICAgbXkgKCRsaW5lKSA9ICRybGluZXMtPlskampdOwoKICAgICAgICBteSAkcnRva2VucyA9ICRsaW5lLT5nZXRfcnRva2VucygpOwogICAgICAgIG15ICRpICAgICAgID0gLTE7CiAgICAgICAgbXkgKCAkbGV2X21pbiwgJGxldl9tYXggKTsKICAgICAgICBteSAkdG9rZW5fcGF0dGVybl9tYXggPSAiIjsKICAgICAgICBteSAlc2F3X2xldmVsOwogICAgICAgIG15IEB0b2tlbl9pbmZvOwogICAgICAgIG15ICRpc19tb25vdG9uaWMgPSAxOwoKICAgICAgICAjIGZpbmQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IHRva2VuIGJlZm9yZSB0aGUgc2lkZSBjb21tZW50CiAgICAgICAgbXkgJGltYXggICAgICA9IEB7JHJ0b2tlbnN9IC0gMjsKICAgICAgICBteSAkaW1heF90cnVlID0gJGltYXg7CgogICAgICAgICMgSWYgdGhlIGVudGlyZSBncm91cCBpcyBtb25vdG9uaWMsIGFuZCB0aGUgbGluZSBlbmRzIGluIGEgY29tbWEgbGlzdCwKICAgICAgICAjIHdhbGsgaXQgYmFjayB0byB0aGUgZmlyc3Qgc3VjaCBjb21tYS4gdGhpcyB3aWxsIGhhdmUgdGhlIGVmZmVjdCBvZgogICAgICAgICMgbWFraW5nIGFsbCB0cmFpbGluZyByYWdnZWQgY29tbWEgbGlzdHMgbWF0Y2ggaW4gdGhlIHBydW5lIHRyZWUKICAgICAgICAjIHJvdXRpbmUuICB0aGVzZSB0cmFpbGluZyBjb21tYSBsaXN0cyBjYW4gYmV0dGVyIGJlIGhhbmRsZWQgYnkgbGF0ZXIKICAgICAgICAjIGFsaWdubWVudCBydWxlcy4KCiAgICAgICAgIyBUcmVhdCBmYXQgY29tbWFzIHRoZSBzYW1lIGFzIGNvbW1hcyBoZXJlIGJ5IGNvbnZlcnRpbmcgdGhlbSB0bwogICAgICAgICMgY29tbWFzLiAgVGhpcyB3aWxsIGltcHJvdmUgdGhlIGNoYW5jZSBvZiBhbGlnbmluZyB0aGUgbGVhZGluZyBwYXJ0cwogICAgICAgICMgb2YgcmFnZ2VkIGxpc3RzLgoKICAgICAgICBteSAkdG9rX2VuZCA9IGZhdF9jb21tYV90b19jb21tYSggJHJ0b2tlbnMtPlskaW1heF0gKTsKICAgICAgICBpZiAoICRhbGxfbW9ub3RvbmljICYmICR0b2tfZW5kID1+IC9eLC8gKSB7CiAgICAgICAgICAgIG15ICRpID0gJGltYXggLSAxOwogICAgICAgICAgICB3aGlsZSAoICRpID49IDAKICAgICAgICAgICAgICAgICYmIGZhdF9jb21tYV90b19jb21tYSggJHJ0b2tlbnMtPlskaV0gKSBlcSAkdG9rX2VuZCApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRpbWF4ID0gJGk7CiAgICAgICAgICAgICAgICAkaS0tOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIG1ha2UgYSBmaXJzdCBwYXNzIHRvIGZpbmQgbGV2ZWwgcmFuZ2UKICAgICAgICBteSAkbGFzdF9sZXY7CiAgICAgICAgZm9yZWFjaCBteSAkdG9rICggQHskcnRva2Vuc30gKSB7CiAgICAgICAgICAgICRpKys7CiAgICAgICAgICAgIGxhc3QgaWYgKCAkaSA+ICRpbWF4ICk7CiAgICAgICAgICAgIGxhc3QgaWYgKCAkdG9rIGVxICcjJyApOwogICAgICAgICAgICBteSAoICRyYXdfdG9rLCAkbGV2LCAkdGFnLCAkdG9rX2NvdW50ICkgPQogICAgICAgICAgICAgIEB7ICRhbGxfdG9rZW5faW5mb1skampdLT5bJGldIH07CgogICAgICAgICAgICBsYXN0IGlmICggJHRvayBlcSAnIycgKTsKICAgICAgICAgICAgJHRva2VuX3BhdHRlcm5fbWF4IC49ICR0b2s7CiAgICAgICAgICAgICRzYXdfbGV2ZWx7JGxldn0rKzsKICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCgkbGV2X21pbikgKSB7CiAgICAgICAgICAgICAgICAkbGV2X21pbiA9ICRsZXY7CiAgICAgICAgICAgICAgICAkbGV2X21heCA9ICRsZXY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoICRsZXYgPCAkbGV2X21pbiApICB7ICRsZXZfbWluICAgICAgPSAkbGV2OyB9CiAgICAgICAgICAgICAgICBpZiAoICRsZXYgPiAkbGV2X21heCApICB7ICRsZXZfbWF4ICAgICAgPSAkbGV2OyB9CiAgICAgICAgICAgICAgICBpZiAoICRsZXYgPCAkbGFzdF9sZXYgKSB7ICRpc19tb25vdG9uaWMgPSAwIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkbGFzdF9sZXYgPSAkbGV2OwogICAgICAgIH0KCiAgICAgICAgIyBoYW5kbGUgbm8gbGV2ZWxzCiAgICAgICAgbXkgJHJ0b2tlbl9wYXR0ZXJucyA9IHt9OwogICAgICAgIG15ICRydG9rZW5faW5kZXhlcyAgPSB7fTsKICAgICAgICBteSBAbGV2cyAgICAgICAgICAgID0gc29ydCBrZXlzICVzYXdfbGV2ZWw7CiAgICAgICAgaWYgKCAhZGVmaW5lZCgkbGV2X21pbikgKSB7CiAgICAgICAgICAgICRsZXZfbWluICAgICAgICAgICAgICAgICAgICAgPSAtMTsKICAgICAgICAgICAgJGxldl9tYXggICAgICAgICAgICAgICAgICAgICA9IC0xOwogICAgICAgICAgICAkbGV2c1swXSAgICAgICAgICAgICAgICAgICAgID0gLTE7CiAgICAgICAgICAgICRydG9rZW5fcGF0dGVybnMtPnskbGV2X21pbn0gPSAiIjsKICAgICAgICAgICAgJHJ0b2tlbl9pbmRleGVzLT57JGxldl9taW59ICA9IFtdOwogICAgICAgIH0KCiAgICAgICAgIyBoYW5kbGUgb25lIGxldmVsCiAgICAgICAgZWxzaWYgKCAkbGV2X21heCA9PSAkbGV2X21pbiApIHsKICAgICAgICAgICAgJHJ0b2tlbl9wYXR0ZXJucy0+eyRsZXZfbWF4fSA9ICR0b2tlbl9wYXR0ZXJuX21heDsKICAgICAgICAgICAgJHJ0b2tlbl9pbmRleGVzLT57JGxldl9tYXh9ICA9IFsgKCAwIC4uICRpbWF4ICkgXTsKICAgICAgICB9CgogICAgICAgICMgaGFuZGxlIG11bHRpcGxlIGxldmVscwogICAgICAgIGVsc2UgewogICAgICAgICAgICAkcnRva2VuX3BhdHRlcm5zLT57JGxldl9tYXh9ID0gJHRva2VuX3BhdHRlcm5fbWF4OwogICAgICAgICAgICAkcnRva2VuX2luZGV4ZXMtPnskbGV2X21heH0gID0gWyAoIDAgLi4gJGltYXggKSBdOwoKICAgICAgICAgICAgbXkgJGRlYnVnICAgPSAwOwogICAgICAgICAgICBteSAkbGV2X3RvcCA9IHBvcCBAbGV2czsgICAgIyBhbHJlYWQgZGlkIG1heCBsZXZlbAogICAgICAgICAgICBteSAkaXRvayAgICA9IC0xOwogICAgICAgICAgICBmb3JlYWNoIG15ICR0b2sgKCBAeyRydG9rZW5zfSApIHsKICAgICAgICAgICAgICAgICRpdG9rKys7CiAgICAgICAgICAgICAgICBsYXN0IGlmICggJGl0b2sgPiAkaW1heCApOwogICAgICAgICAgICAgICAgbXkgKCAkcmF3X3RvaywgJGxldiwgJHRhZywgJHRva19jb3VudCApID0KICAgICAgICAgICAgICAgICAgQHsgJGFsbF90b2tlbl9pbmZvWyRqal0tPlskaXRva10gfTsKICAgICAgICAgICAgICAgIGxhc3QgaWYgKCAkcmF3X3RvayBlcSAnIycgKTsKICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGxldl90ZXN0IChAbGV2cykgewogICAgICAgICAgICAgICAgICAgIG5leHQgaWYgKCAkbGV2ID4gJGxldl90ZXN0ICk7CiAgICAgICAgICAgICAgICAgICAgJHJ0b2tlbl9wYXR0ZXJucy0+eyRsZXZfdGVzdH0gLj0gJHRvazsKICAgICAgICAgICAgICAgICAgICBwdXNoIEB7ICRydG9rZW5faW5kZXhlcy0+eyRsZXZfdGVzdH0gfSwgJGl0b2s7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHVzaCBAbGV2cywgJGxldl90b3A7CiAgICAgICAgfQoKICAgICAgICBwdXNoIEB7JHJsaW5lX3ZhbHVlc30sCiAgICAgICAgICBbCiAgICAgICAgICAgICRsZXZfbWluLCAgICAgICAgJGxldl9tYXgsICAgICAgJHJ0b2tlbl9wYXR0ZXJucywgXEBsZXZzLAogICAgICAgICAgICAkcnRva2VuX2luZGV4ZXMsICRpc19tb25vdG9uaWMsICRpbWF4X3RydWUsICAgICAgICRpbWF4LAogICAgICAgICAgXTsKCiAgICAgICAgIyBkZWJ1ZwogICAgICAgIDAgJiYgZG8gewogICAgICAgICAgICBsb2NhbCAkIiA9ICcpKCc7CiAgICAgICAgICAgIHByaW50ICJsZXZfbWluPSRsZXZfbWluLCBsZXZfbWF4PSRsZXZfbWF4LCBsZXZlbHM9KEBsZXZzKVxuIjsKICAgICAgICAgICAgZm9yZWFjaCBteSAka2V5ICggc29ydCBrZXlzICV7JHJ0b2tlbl9wYXR0ZXJuc30gKSB7CiAgICAgICAgICAgICAgICBwcmludCAiJGtleSA9PiAkcnRva2VuX3BhdHRlcm5zLT57JGtleX1cbiI7CiAgICAgICAgICAgICAgICBwcmludCAiJGtleSA9PiBAeyRydG9rZW5faW5kZXhlcy0+eyRrZXl9fVxuIjsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9ICMjIGVuZCBsb29wIG92ZXIgbGluZXMKICAgIHJldHVybiAoICRybGluZV92YWx1ZXMsICRhbGxfbW9ub3RvbmljICk7Cn0KCnN1YiBwcnVuZV9hbGlnbm1lbnRfdHJlZSB7CiAgICBteSAoJHJsaW5lcykgPSBAXzsKICAgIG15ICRqbWF4ID0gQHskcmxpbmVzfSAtIDE7CiAgICByZXR1cm4gdW5sZXNzICRqbWF4ID4gMDsKCiAgICAjIFZlcnRpY2FsIGFsaWdubWVudCBpbiBwZXJsdGlkeSBpcyBkb25lIGFzIGFuIGl0ZXJhdGl2ZSBwcm9jZXNzLiAgVGhlCiAgICAjIHN0YXJ0aW5nIHBvaW50IGlzIHRvIG1hcmsgYWxsIHBvc3NpYmxlIGFsaWdubWVudCB0b2tlbnMgKCc9JywgJywnLCAnPT4nLAogICAgIyBldGMpIGZvciB2ZXJ0aWNhbCBhbGlnbm1lbnQuICBUaGVuIHdlIGhhdmUgdG8gZGVsZXRlIGFsbCBhbGlnbm1lbnRzCiAgICAjIHdoaWNoLCBpZiBhY3R1YWxseSBtYWRlLCB3b3VsZCBkZXRyYWN0IGZyb20gb3ZlcmFsbCBhbGlnbm1lbnQuICBUaGlzCiAgICAjIGlzIGRvbmUgaW4gc2V2ZXJhbCBwaGFzZXMgb2Ygd2hpY2ggdGhpcyBpcyBvbmUuCgogICAgIyBJbiB0aGlzIHJvdXRpbmUgd2UgbG9vayBhdCB0aGUgYWxpZ25tZW50cyBvZiBhIGdyb3VwIG9mIGxpbmVzIGFzIGEKICAgICMgaGllcmFyY2hpY2FsIHRyZWUuICBXZSB3aWxsICdwcnVuZScgdGhlIHRyZWUgdG8gbGltaXRlZCBkZXB0aHMgaWYgdGhhdAogICAgIyB3aWxsIGltcHJvdmUgb3ZlcmFsbCBhbGlnbm1lbnQgYXQgdGhlIGxvd2VyIGRlcHRocy4KICAgICMgRm9yIGVhY2ggbGluZSB3ZSB3aWxsIGJlIGxvb2tpbmcgYXQgaXRzIGFsaWdubWVudCBwYXR0ZXJucyBkb3duIHRvCiAgICAjIGRpZmZlcmVudCBmaXhlZCBkZXB0aHMuIEZvciBlYWNoIGRlcHRoLCB3ZSBpbmNsdWRlIGFsbCBsb3dlciBkZXB0aHMgYW5kCiAgICAjIGlnbm9yZSBhbGwgaGlnaGVyIGRlcHRocy4gIFdlIHdhbnQgdG8gc2VlIGlmIHdlIGNhbiBnZXQgYWxpZ25tZW50IG9mIGEKICAgICMgbGFyZ2VyIGdyb3VwIG9mIGxpbmVzIGlmIHdlIGlnbm9yZSBhbGlnbm1lbnRzIGF0IHNvbWUgbG93ZXIgZGVwdGguCiAgICAjIEhlcmUgaXMgYW4gIyBleGFtcGxlOgoKICAgICMgZm9yICgKICAgICMgICAgIFsgJyR2YXInLCAgICAgc3ViIHsgam9pbiAkXywgImJhciIgfSwgICAgICAgICAgICAwLCAiYmFyIiBdLAogICAgIyAgICAgWyAnQ09OU1RBTlQnLCBzdWIgeyBqb2luICJmb28iLCAiYmFyIiB9LCAgICAgICAgIDAsICJiYXIiIF0sCiAgICAjICAgICBbICdDT05TVEFOVCcsIHN1YiB7IGpvaW4gImZvbyIsICJiYXIiLCAzIH0sICAgICAgMSwgImJhcmZvbzMiIF0sCiAgICAjICAgICBbICckbXl2YXInLCAgIHN1YiB7IG15ICR2YXI7IGpvaW4gJHZhciwgImJhciIgfSwgMCwgImJhciIgXSwKICAgICMgKTsKCiAgICAjIEluIHRoZSBhYm92ZSBleGFtcGxlLCBhbGwgbGluZXMgaGF2ZSB0aHJlZSBjb21tYXMgYXQgdGhlIGxvd2VzdCBkZXB0aAogICAgIyAoemVybyksIHNvIGlmIHRoZXJlIHdlcmUgbm8gb3RoZXIgYWxpZ25lbWVudHMsIHRoZXNlIGxpbmVzIHdvdWxkIGFsbAogICAgIyBhbGlnbiBjb25zaWRlcmluZyBvbmx5IHRoZSB6ZXJvIGRlcHRoIGFsaWdubWVudCB0b2tlbi4gIEJ1dCBzb21lIGxpbmVzCiAgICAjIGhhdmUgYWRkaXRpb25hbCBjb21tYSBhbGlnbm1lbnRzIGF0IHRoZSBuZXh0IGRlcHRoLCBzbyB3ZSBuZWVkIHRvIGRlY2lkZQogICAgIyBpZiB3ZSBzaG91bGQgZHJvcCB0aG9zZSB0byBrZWVwIHRoZSB0b3AgbGV2ZWwgYWxpZ25tZW50cywgb3Iga2VlcCB0aG9zZQogICAgIyBmb3Igc29tZSBhZGRpdGlvbmFsIGxvdyBsZXZlbCBhbGlnbm1lbnRzIGF0IHRoZSBleHBlbnNlIGxvc2luZyBzb21lIHRvcAogICAgIyBsZXZlbCBhbGlnbm1lbnRzLiAgSW4gdGhpcyBjYXNlIHdlIHdpbGwgZHJvcCB0aGUgZGVlcGVyIGxldmVsIGNvbW1hcyB0bwogICAgIyBrZWVwIHRoZSBlbnRpcmUgY29sbGVjdGlvbiBhbGlnbmVkLiAgQnV0IGluIHNvbWUgY2FzZXMgdGhlIGRlY2lzaW9uIGNvdWxkCiAgICAjIGdvIHRoZSBvdGhlciB3YXkuCgogICAgIyBUaGUgdHJlZSBmb3IgdGhpcyBleGFtcGxlIGF0IHRoZSB6ZXJvIGRlcHRoIGhhcyBvbmUgbm9kZSBjb250YWluaW5nCiAgICAjIGFsbCBmb3VyIGxpbmVzLCBzaW5jZSB0aGV5IGFyZSBpZGVudGljYWwgYXQgemVybyBsZXZlbCAodGhyZWUgY29tbWFzKS4KICAgICMgQXQgZGVwdGggb25lLCB0aGVyZSBhcmUgdGhyZWUgJ2NoaWxkcmVuJyBub2RlcywgbmFtZWx5OgogICAgIyAtIGxpbmVzIDEgYW5kIDIsIHdoaWNoIGhhdmUgYSBzaW5nbGUgY29tbWEgaW4gdGhlICdzdWInIGF0IGRlcHRoIDEKICAgICMgLSBsaW5lIDMsIHdoaWNoIGhhcyAyIGNvbW1hcyBhdCBkZXB0aCAxCiAgICAjIC0gbGluZTQsIHdoaWNoIGhhcyBhICc7JyBhbmQgYSAnLCcgYXQgZGVwdGggMQogICAgIyBUaGVyZSBhcmUgbm8gZGVlcGVyIGFsaWdubWVudHMgaW4gdGhpcyBleGFtcGxlLgogICAgIyBzbyB0aGUgdHJlZSBzdHJ1Y3R1cmUgZm9yIHRoaXMgZXhhbXBsZSBpczoKICAgICMKICAgICMgICAgZGVwdGggMCAgICAgICAgIGRlcHRoIDEgICAgICBkZXB0aCAyCiAgICAjICAgIFtsaW5lcyAxLTRdIC0tICBbbGluZSAxLTJdIC0gIChlbXB0eSkKICAgICMgICAgICAgICAgICAgICAgIHwgIFtsaW5lIDNdICAgLSAgKGVtcHR5KQogICAgIyAgICAgICAgICAgICAgICAgfCAgW2xpbmUgNF0gICAtICAoZW1wdHkpCgogICAgIyBXZSBjYW4gY2FycnkgdGhpcyB0byBhbnkgZGVwdGgsIGJ1dCBpdCBpcyBub3QgcmVhbGx5IHVzZWZ1bCB0byBnbyBiZWxvdwogICAgIyBkZXB0aCAyLiBUbyBjbGVhbmx5IHN0b3AgdGhlcmUsIHdlIHdpbGwgY29uc2lkZXIgZGVwdGggMiB0byBjb250YWluIGFsbAogICAgIyBhbGlnbm1lbnRzIGF0IGRlcHRoID49Mi4KCiAgICB1c2UgY29uc3RhbnQgRVhQTEFJTl9QUlVORSA9PiAwOwoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIFBydW5lIFRyZWUgU3RlcCAxLiBTdGFydCBieSBzY2FubmluZyB0aGUgbGluZXMgYW5kIGNvbGxlY3RpbmcgaW5mbwogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAjIE5vdGUgdGhhdCB0aGUgY2FsbGVyIGhhZCB0aGlzIGluZm8gYnV0IHdlIGhhdmUgdG8gcmVkbyB0aGlzIG5vdyBiZWNhdXNlCiAgICAjIGFsaWdubWVudCB0b2tlbnMgbWF5IGhhdmUgYmVlbiBkZWxldGVkLgogICAgbXkgKCAkcmxpbmVfdmFsdWVzLCAkYWxsX21vbm90b25pYyApID0gZ2V0X2xpbmVfdG9rZW5faW5mbygkcmxpbmVzKTsKCiAgICAjIElmIGFsbCB0aGUgbGluZXMgaGF2ZSBsZXZlbHMgd2hpY2ggaW5jcmVhc2UgbW9ub3RvbmljYWxseSBmcm9tIGxlZnQgdG8KICAgICMgcmlnaHQsIHRoZW4gdGhlIHN3ZWVwLWxlZnQtdG8tcmlnaHQgcGFzcyBjYW4gZG8gYSBiZXR0ZXIgam9iIG9mIGFsaWdubWVudAogICAgIyB0aGFuIHBydW5pbmcsIGFuZCB3aXRob3V0IGRlbGV0aW5nIGFsaWdubWVudHMuCiAgICByZXR1cm4gaWYgKCRhbGxfbW9ub3RvbmljKTsKCiAgICAjIENvbnRlbnRzIG9mICRybGluZV92YWx1ZXMKICAgICMgICBbCiAgICAjICAgICAkbGV2X21pbiwgICAgICAgICRsZXZfbWF4LCAgICAgICRydG9rZW5fcGF0dGVybnMsIFxAbGV2cywKICAgICMgICAgICRydG9rZW5faW5kZXhlcywgJGlzX21vbm90b25pYywgJGltYXhfdHJ1ZSwgICAgICAgJGltYXgsCiAgICAjICAgXTsKCiAgICAjIFdlIGNhbiB3b3JrIHRvIGFueSBkZXB0aCwgYnV0IHRoZXJlIGlzIGxpdHRsZSBhZHZhbnRhZ2UgdG8gd29ya2luZwogICAgIyB0byBhIGEgZGVwdGggZ3JlYXRlciB0aGFuIDIKICAgIG15ICRNQVhfREVQVEggPSAyOwoKICAgICMgVGhpcyBhcnJheXMgd2lsbCBob2xkIHRoZSB0cmVlIG9mIGFsaWdubWVudCB0b2tlbnMgYXQgZGlmZmVyZW50IGRlcHRocwogICAgIyBmb3IgdGhlc2UgbGluZXMuCiAgICBteSBAbWF0Y2hfdHJlZTsKCiAgICAjIFRyZWUgbm9kZXMgY29udGFpbiB0aGVzZSB2YWx1ZXM6CiAgICAjICRtYXRjaF90cmVlWyRkZXB0aF0gPSBbJGpiZWcsICRqZW5kLCAkbl9wYXJlbnQsICRsZXZlbCwgJHBhdHRlcm4sCiAgICAjICAgICAgICAgICAgICAgICAgICAgICAgJG5jX2JlZ19wLCAkbmNfZW5kX3AsICRyaW5kZXhlc107CiAgICAjIHdoZXJlCiAgICAjICAgICAgJGRlcHRoID0gMCwxLDIgPSBpbmRleCBvZiBkZXB0aCBvZiB0aGUgbWF0Y2gKCiAgICAjICAkamJlZyBiZWdpbm5pbmcgaW5kZXggaiBvZiB0aGUgcmFuZ2Ugb2YgbGluZXMgaW4gdGhpcyBtYXRjaAogICAgIyAgJGplbmQgZW5kaW5nIGluZGV4IGogb2YgdGhlIHJhbmdlIG9mIGxpbmVzIGluIHRoaXMgbWF0Y2gKICAgICMgICRuX3BhcmVudCA9IGluZGV4IG9mIHRoZSBjb250YWluaW5nIGdyb3VwIGF0ICRkZXB0aC0xLCBpZiBpdCBleGlzdHMKICAgICMgICRsZXZlbCA9IGFjdHVhbCBsZXZlbCBvZiBjb2RlIGJlaW5nIG1hdGNoZWQgaW4gdGhpcyBncm91cAogICAgIyAgJHBhdHRlcm4gPSBhbGlnbm1lbnQgcGF0dGVybiBiZWluZyBtYXRjaGVkCiAgICAjICAkbmNfYmVnX3AgPSBmaXJzdCBjaGlsZAogICAgIyAgJG5jX2VuZF9wID0gbGFzdCBjaGlsZAogICAgIyAgJHJpbmRleGVzID0gcmVmIHRvIHRva2VuIGluZGV4ZXMKCiAgICAjIHRoZSBwYXR0ZXJucyBhbmQgbGV2ZWxzIG9mIHRoZSBjdXJyZW50IGdyb3VwIGJlaW5nIGZvcm1lZCBhdCBlYWNoIGRlcHRoCiAgICBteSAoIEB0b2tlbl9wYXR0ZXJuc19jdXJyZW50LCBAbGV2ZWxzX2N1cnJlbnQsIEB0b2tlbl9pbmRleGVzX2N1cnJlbnQgKTsKCiAgICAjIHRoZSBwYXR0ZXJucyBhbmQgbGV2ZWxzIG9mIHRoZSBuZXh0IGxpbmUgYmVpbmcgdGVzdGVkIGF0IGVhY2ggZGVwdGgKICAgIG15ICggQHRva2VuX3BhdHRlcm5zX25leHQsIEBsZXZlbHNfbmV4dCwgQHRva2VuX2luZGV4ZXNfbmV4dCApOwoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBkZWZpbmUgYSByZWN1cnNpdmUgd29ya2VyIHN1YnJvdXRpbmUgZm9yIHRyZWUgY29uc3RydWN0aW9uCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAjIFRoaXMgaXMgYSByZWN1cnNpdmUgcm91dGluZSB3aGljaCBpcyBjYWxsZWQgaWYgYSBtYXRjaCBjb25kaXRpb24gY2hhbmdlcwogICAgIyBhdCBhbnkgZGVwdGggd2hlbiBhIG5ldyBsaW5lIGlzIGVuY291bnRlcmVkLiAgSXQgZW5kcyB0aGUgbWF0Y2ggbm9kZQogICAgIyB3aGljaCBjaGFuZ2VkIHBsdXMgYWxsIGRlZXBlciBub2RlcyBhdHRhY2hlZCB0byBpdC4KICAgIG15ICRlbmRfbm9kZTsKICAgICRlbmRfbm9kZSA9IHN1YiB7CiAgICAgICAgbXkgKCAkZGVwdGgsICRqbCwgJG5fcGFyZW50ICkgPSBAXzsKCiAgICAgICAgIyAkZGVwdGggaXMgdGhlIHRyZWUgZGVwdGgKICAgICAgICAjICRqbCBpcyB0aGUgIGluZGV4IG9mIHRoZSBsaW5lCiAgICAgICAgIyAkbl9wYXJlbnQgaXMgaW5kZXggb2YgdGhlIHBhcmVudCBub2RlIG9mIHRoaXMgbm9kZQoKICAgICAgICByZXR1cm4gaWYgKCAkZGVwdGggPiAkTUFYX0RFUFRIICk7CgogICAgICAgICMgZW5kIGFueSBjdXJyZW50IGdyb3VwIGF0IHRoaXMgZGVwdGgKICAgICAgICBpZiAoICAgJGpsID49IDAKICAgICAgICAgICAgJiYgZGVmaW5lZCggJG1hdGNoX3RyZWVbJGRlcHRoXSApCiAgICAgICAgICAgICYmIEB7ICRtYXRjaF90cmVlWyRkZXB0aF0gfQogICAgICAgICAgICAmJiBkZWZpbmVkKCAkbGV2ZWxzX2N1cnJlbnRbJGRlcHRoXSApICkKICAgICAgICB7CiAgICAgICAgICAgICRtYXRjaF90cmVlWyRkZXB0aF0tPlstMV0tPlsxXSA9ICRqbDsKICAgICAgICB9CgogICAgICAgICMgRGVmaW5lIHRoZSBpbmRleCBvZiB0aGUgbm9kZSB3ZSB3aWxsIGNyZWF0ZSBiZWxvdwogICAgICAgIG15ICRuZ19zZWxmID0gMDsKICAgICAgICBpZiAoIGRlZmluZWQoICRtYXRjaF90cmVlWyRkZXB0aF0gKSApIHsKICAgICAgICAgICAgJG5nX3NlbGYgPSBAeyAkbWF0Y2hfdHJlZVskZGVwdGhdIH07CiAgICAgICAgfQoKICAgICAgICAjIGVuZCBhbnkgbmV4dCBkZWVwZXIgY2hpbGQgbm9kZShzKQogICAgICAgICRlbmRfbm9kZS0+KCAkZGVwdGggKyAxLCAkamwsICRuZ19zZWxmICk7CgogICAgICAgICMgdXBkYXRlIHRoZSBsZXZlbHMgYmVpbmcgbWF0Y2hlZAogICAgICAgICR0b2tlbl9wYXR0ZXJuc19jdXJyZW50WyRkZXB0aF0gPSAkdG9rZW5fcGF0dGVybnNfbmV4dFskZGVwdGhdOwogICAgICAgICR0b2tlbl9pbmRleGVzX2N1cnJlbnRbJGRlcHRoXSAgPSAkdG9rZW5faW5kZXhlc19uZXh0WyRkZXB0aF07CiAgICAgICAgJGxldmVsc19jdXJyZW50WyRkZXB0aF0gICAgICAgICA9ICRsZXZlbHNfbmV4dFskZGVwdGhdOwoKICAgICAgICAjIERvIG5vdCBzdGFydCBhIG5ldyBncm91cCBhdCB0aGlzIGxldmVsIGlmIGl0IGlzIG5vdCBiZWluZyB1c2VkCiAgICAgICAgaWYgKCAhZGVmaW5lZCggJGxldmVsc19uZXh0WyRkZXB0aF0gKQogICAgICAgICAgICB8fCAkZGVwdGggPiAwCiAgICAgICAgICAgICYmICRsZXZlbHNfbmV4dFskZGVwdGhdIDw9ICRsZXZlbHNfbmV4dFsgJGRlcHRoIC0gMSBdICkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgQ3JlYXRlIGEgbm9kZSBmb3IgdGhlIG5leHQgZ3JvdXAgYXQgdGhpcyBkZXB0aC4gV2UgaW5pdGlhbGx5IGFzc3VtZQogICAgICAgICMgdGhhdCBpdCB3aWxsIGNvbnRpbnVlIHRvICRqbWF4LCBhbmQgY29ycmVjdCB0aGF0IGxhdGVyIGlmIHRoZSBub2RlCiAgICAgICAgIyBlbmRzIGVhcmxpZXIuCiAgICAgICAgcHVzaCBAeyAkbWF0Y2hfdHJlZVskZGVwdGhdIH0sCiAgICAgICAgICBbCiAgICAgICAgICAgICRqbCArIDEsICRqbWF4LCAkbl9wYXJlbnQsICRsZXZlbHNfY3VycmVudFskZGVwdGhdLAogICAgICAgICAgICAkdG9rZW5fcGF0dGVybnNfY3VycmVudFskZGVwdGhdLAogICAgICAgICAgICB1bmRlZiwgdW5kZWYsICR0b2tlbl9pbmRleGVzX2N1cnJlbnRbJGRlcHRoXSwKICAgICAgICAgIF07CgogICAgICAgIHJldHVybjsKICAgIH07ICAgICMjIGVuZCBzdWIgZW5kX25vZGUKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMgUHJ1bmUgVHJlZSBTdGVwIDIuIExvb3AgdG8gZm9ybSB0aGUgdHJlZSBvZiBtYXRjaGVzLgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICBmb3IgKCBteSAkanAgPSAwIDsgJGpwIDw9ICRqbWF4IDsgJGpwKysgKSB7CgogICAgICAgICMgd29ya2luZyB3aXRoIHR3byBhZGphY2VudCBsaW5lIGluZGV4ZXMsICdtJz1taW51cywgJ3AnPXBsdXMKICAgICAgICBteSAkam0gPSAkanAgLSAxOwoKICAgICAgICAjIFB1bGwgb3V0IG5lZWRlZCB2YWx1ZXMgZm9yIHRoZSBuZXh0IGxpbmUKICAgICAgICBteSAoICRsZXZfbWluLCAkbGV2X21heCwgJHJ0b2tlbl9wYXR0ZXJucywgJHJsZXZzLCAkcnRva2VuX2luZGV4ZXMsCiAgICAgICAgICAgICRpc19tb25vdG9uaWMsICRpbWF4X3RydWUsICRpbWF4ICkKICAgICAgICAgID0gQHsgJHJsaW5lX3ZhbHVlcy0+WyRqcF0gfTsKCiAgICAgICAgIyBUcmFuc2ZlciBsZXZlbHMgYW5kIHBhdHRlcm5zIGZvciB0aGlzIGxpbmUgdG8gdGhlIHdvcmtpbmcgYXJyYXlzLgogICAgICAgICMgSWYgdGhlIG51bWJlciBvZiBsZXZlbHMgZGlmZmVycyBmcm9tIG91ciBjaG9zZW4gTUFYX0RFUFRIIC4uLgogICAgICAgICMgaWYgZmV3ZXIgdGhhbiBNQVhfREVQVEg6IGxlYXZlIGxldmVscyBhdCBtaXNzaW5nIGRlcHRocyB1bmRlZmluZWQKICAgICAgICAjIGlmIG1vcmUgdGhhbiBNQVhfREVQVEg6IHNldCB0aGUgTUFYX0RFUFRIIGxldmVsIHRvIGJlIHRoZSBtYXhpbXVtCiAgICAgICAgQGxldmVsc19uZXh0ID0gQHskcmxldnN9WyAwIC4uICRNQVhfREVQVEggXTsKICAgICAgICBpZiAoIEB7JHJsZXZzfSA+ICRNQVhfREVQVEggKSB7CiAgICAgICAgICAgICRsZXZlbHNfbmV4dFskTUFYX0RFUFRIXSA9ICRybGV2cy0+Wy0xXTsKICAgICAgICB9CiAgICAgICAgbXkgJGRlcHRoID0gMDsKICAgICAgICBmb3JlYWNoIChAbGV2ZWxzX25leHQpIHsKICAgICAgICAgICAgJHRva2VuX3BhdHRlcm5zX25leHRbJGRlcHRoXSA9CiAgICAgICAgICAgICAgZGVmaW5lZCgkXykgPyAkcnRva2VuX3BhdHRlcm5zLT57JF99IDogdW5kZWY7CiAgICAgICAgICAgICR0b2tlbl9pbmRleGVzX25leHRbJGRlcHRoXSA9CiAgICAgICAgICAgICAgZGVmaW5lZCgkXykgPyAkcnRva2VuX2luZGV4ZXMtPnskX30gOiB1bmRlZjsKICAgICAgICAgICAgJGRlcHRoKys7CiAgICAgICAgfQoKICAgICAgICAjIExvb2sgZm9yIGEgY2hhbmdlIGluIG1hdGNoIGdyb3Vwcy4uLgoKICAgICAgICAjIEluaXRpYWxpemUgb24gdGhlIGZpcnN0IGxpbmUKICAgICAgICBpZiAoICRqcCA9PSAwICkgewogICAgICAgICAgICBteSAkbl9wYXJlbnQ7CiAgICAgICAgICAgICRlbmRfbm9kZS0+KCAwLCAkam0sICRuX3BhcmVudCApOwogICAgICAgIH0KCiAgICAgICAgIyBFbmQgZ3JvdXBzIGlmIGEgaGFyZCBmbGFnIGhhcyBiZWVuIHNldAogICAgICAgIGVsc2lmICggJHJsaW5lcy0+WyRqbV0tPmdldF9lbmRfZ3JvdXAoKSApIHsKICAgICAgICAgICAgbXkgJG5fcGFyZW50OwogICAgICAgICAgICAkZW5kX25vZGUtPiggMCwgJGptLCAkbl9wYXJlbnQgKTsKICAgICAgICB9CgogICAgICAgICMgQ29udGludWUgYXQgaGFuZ2luZyBzaWRlIGNvbW1lbnQKICAgICAgICBlbHNpZiAoICRybGluZXMtPlskanBdLT5nZXRfaXNfaGFuZ2luZ19zaWRlX2NvbW1lbnQoKSApIHsKICAgICAgICAgICAgbmV4dDsKICAgICAgICB9CgogICAgICAgICMgT3RoZXJ3aXNlIHNlZSBpZiBhbnl0aGluZyBjaGFuZ2VkIGFuZCB1cGRhdGUgdGhlIHRyZWUgaWYgc28KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgZm9yZWFjaCBteSAkZGVwdGggKCAwIC4uICRNQVhfREVQVEggKSB7CgogICAgICAgICAgICAgICAgbXkgJGRlZl9jdXJyZW50ID0gZGVmaW5lZCggJHRva2VuX3BhdHRlcm5zX2N1cnJlbnRbJGRlcHRoXSApOwogICAgICAgICAgICAgICAgbXkgJGRlZl9uZXh0ICAgID0gZGVmaW5lZCggJHRva2VuX3BhdHRlcm5zX25leHRbJGRlcHRoXSApOwogICAgICAgICAgICAgICAgbGFzdCB1bmxlc3MgKCAkZGVmX2N1cnJlbnQgfHwgJGRlZl9uZXh0ICk7CiAgICAgICAgICAgICAgICBpZiAoICAgISRkZWZfY3VycmVudAogICAgICAgICAgICAgICAgICAgIHx8ICEkZGVmX25leHQKICAgICAgICAgICAgICAgICAgICB8fCAkdG9rZW5fcGF0dGVybnNfY3VycmVudFskZGVwdGhdIG5lCiAgICAgICAgICAgICAgICAgICAgJHRva2VuX3BhdHRlcm5zX25leHRbJGRlcHRoXSApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbXkgJG5fcGFyZW50OwogICAgICAgICAgICAgICAgICAgIGlmICggJGRlcHRoID4gMCAmJiBkZWZpbmVkKCAkbWF0Y2hfdHJlZVsgJGRlcHRoIC0gMSBdICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRuX3BhcmVudCA9IEB7ICRtYXRjaF90cmVlWyAkZGVwdGggLSAxIF0gfSAtIDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRlbmRfbm9kZS0+KCAkZGVwdGgsICRqbSwgJG5fcGFyZW50ICk7CiAgICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0gIyMgZW5kIGxvb3AgdG8gZm9ybSB0cmVlIG9mIG1hdGNoZXMKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIFBydW5lIFRyZWUgU3RlcCAzLiBNYWtlIGxpbmtzIGZyb20gcGFyZW50IHRvIGNoaWxkIG5vZGVzCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgIyBJdCBzZWVtZWQgY2xlYW5lciB0byBkbyB0aGlzIGFzIGEgc2VwYXJhdGUgc3RlcCByYXRoZXIgdGhhbiBkdXJpbmcgdHJlZQogICAgIyBjb25zdHJ1Y3Rpb24uICBUaGUgY2hpbGRyZW4gbm9kZXMgaGF2ZSBsaW5rcyB1cCB0byB0aGUgcGFyZW50IG5vZGUgd2hpY2gKICAgICMgY3JlYXRlZCB0aGVtLiAgTm93IG1ha2UgbGlua3MgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiwgc28gdGhlIHBhcmVudHMKICAgICMgY2FuIGZpbmQgdGhlIGNoaWxkcmVuLiAgV2Ugc3RvcmUgdGhlIHJhbmdlIG9mIGNoaWxkcmVuIG5vZGVzICgkbmNfYmVnLAogICAgIyAkbmNfZW5kKSBvZiBlYWNoIHBhcmVudCB3aXRoIHR3byBhZGRpdGlvbmFsIGluZGV4ZXMgaW4gdGhlIG9yaWduYWwgYXJyYXkuCiAgICAjIFRoZXNlIHdpbGwgYmUgdW5kZWYgaWYgbm8gY2hpbGRyZW4uCiAgICBmb3IgKCBteSAkZGVwdGggPSAkTUFYX0RFUFRIIDsgJGRlcHRoID4gMCA7ICRkZXB0aC0tICkgewogICAgICAgIG5leHQgdW5sZXNzIGRlZmluZWQoICRtYXRjaF90cmVlWyRkZXB0aF0gKTsKICAgICAgICBteSAkbmNfbWF4ID0gQHsgJG1hdGNoX3RyZWVbJGRlcHRoXSB9IC0gMTsKICAgICAgICBteSAkbnBfbm93OwogICAgICAgIGZvcmVhY2ggbXkgJG5jICggMCAuLiAkbmNfbWF4ICkgewogICAgICAgICAgICBteSAkbnAgPSAkbWF0Y2hfdHJlZVskZGVwdGhdLT5bJG5jXS0+WzJdOwogICAgICAgICAgICBpZiAoICFkZWZpbmVkKCRucCkgKSB7CgogICAgICAgICAgICAgICAgIyBzaG91bGRuJ3QgaGFwcGVuCiAgICAgICAgICAgICAgICAjcHJpbnQgU1RERVJSICJsb3N0IGNoaWxkICRucCBhdCBkZXB0aCAkZGVwdGhcbiI7CiAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggIWRlZmluZWQoJG5wX25vdykgfHwgJG5wICE9ICRucF9ub3cgKSB7CiAgICAgICAgICAgICAgICAkbnBfbm93ID0gJG5wOwogICAgICAgICAgICAgICAgJG1hdGNoX3RyZWVbICRkZXB0aCAtIDEgXS0+WyRucF0tPls1XSA9ICRuYzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkbWF0Y2hfdHJlZVsgJGRlcHRoIC0gMSBdLT5bJG5wXS0+WzZdID0gJG5jOwogICAgICAgIH0KICAgIH0gIyMgZW5kIGxvb3AgdG8gbWFrZSBsaW5rcyBkb3duIHRvIHRoZSBjaGlsZCBub2RlcwoKICAgIEVYUExBSU5fUFJVTkUgPiAwICYmIGRvIHsKICAgICAgICBwcmludCAiVHJlZSBjb21wbGV0ZS4gRm91bmQgdGhlc2UgZ3JvdXBzOlxuIjsKICAgICAgICBmb3JlYWNoIG15ICRkZXB0aCAoIDAgLi4gJE1BWF9ERVBUSCApIHsKICAgICAgICAgICAgRHVtcF90cmVlX2dyb3VwcyggXEB7ICRtYXRjaF90cmVlWyRkZXB0aF0gfSwgImRlcHRoPSRkZXB0aCIgKTsKICAgICAgICB9CiAgICB9OwoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMgUHJ1bmUgVHJlZSBTdGVwIDQuIE1ha2UgYSBsaXN0IG9mIG5vZGVzIHRvIGJlIGRlbGV0ZWQKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAjICBsaXN0IG9mIGxpbmVzIHdpdGggdG9rZW5zIHRvIGJlIGRlbGV0ZWQ6CiAgICAjICBbJGpiZWcsICRqZW5kLCAkbGV2ZWxfa2VlcF0KICAgICMgICRqYmVnLi4kamVuZCBpcyB0aGUgcmFuZ2Ugb2YgbGluZSBpbmRleGVzLAogICAgIyAgJGxldmVsX2tlZXAgaXMgdGhlIG1pbmltdW0gbGV2ZWwgdG8ga2VlcAogICAgbXkgQGRlbGV0ZV9saXN0OwoKICAgICMgIEdyb3VwcyB3aXRoIGVuZGluZyBjb21tYSBsaXN0cyBhbmQgdGhlaXIgcmFuZ2Ugb2Ygc2l6ZXM6CiAgICAjICAkcmFnZ2VkX2NvbW1hX2dyb3VweyRpZH0gPSBbIGltYXhfZ3JvdXBfbWluLCBpbWF4X2dyb3VwX21heCBdCiAgICBteSAlcmFnZ2VkX2NvbW1hX2dyb3VwOwoKICAgICMgRGVmaW5lIGEgdGhyZXNob2xkIGxpbmUgY291bnQgZm9yIGZvcmNpbmcgYSBicmVhawogICAgbXkgJG5saW5lc19icmVhayA9IDM7CgogICAgIyBXZSB3b3JrIHdpdGggYSBsaXN0IG9mIG5vZGVzIHRvIHZpc2l0IGF0IHRoZSBuZXh0IGRlZXBlciBkZXB0aC4KICAgIG15IEB0b2RvX2xpc3Q7CiAgICBpZiAoIGRlZmluZWQoICRtYXRjaF90cmVlWzBdICkgKSB7CiAgICAgICAgQHRvZG9fbGlzdCA9ICggMCAuLiBAeyAkbWF0Y2hfdHJlZVswXSB9IC0gMSApOwogICAgfQoKICAgIGZvciAoIG15ICRkZXB0aCA9IDAgOyAkZGVwdGggPD0gJE1BWF9ERVBUSCA7ICRkZXB0aCsrICkgewogICAgICAgIGxhc3QgdW5sZXNzIChAdG9kb19saXN0KTsKICAgICAgICBteSBAdG9kb19uZXh0OwogICAgICAgIGZvcmVhY2ggbXkgJG5wIChAdG9kb19saXN0KSB7CiAgICAgICAgICAgIG15ICggJGpiZWdfcCwgJGplbmRfcCwgJG5wX3AsICRsZXZfcCwgJHBhdF9wLCAkbmNfYmVnX3AsICRuY19lbmRfcCwKICAgICAgICAgICAgICAgICRyaW5kZXhlc19wICkKICAgICAgICAgICAgICA9IEB7ICRtYXRjaF90cmVlWyRkZXB0aF0tPlskbnBdIH07CiAgICAgICAgICAgIG15ICRubGluZXNfcCA9ICRqZW5kX3AgLSAkamJlZ19wICsgMTsKCiAgICAgICAgICAgICMgbm90aGluZyB0byBkbyBpZiBubyBjaGlsZHJlbgogICAgICAgICAgICBuZXh0IHVubGVzcyBkZWZpbmVkKCRuY19iZWdfcCk7CgogICAgICAgICAgICAjIERlZmluZSB0aGUgbnVtYmVyIG9mIGxpbmVzIHRvIGVpdGhlciBrZWVwIG9yIGRlbGV0ZSBhIGNoaWxkIG5vZGUuCiAgICAgICAgICAgICMgVGhpcyBpcyB0aGUga2V5IGRlY2lzaW9uIHdlIGhhdmUgdG8gbWFrZS4gIFdlIHdhbnQgdG8gZGVsZXRlCiAgICAgICAgICAgICMgc2hvcnQgcnVucyBvZiBtYXRjaGVkIGxpbmVzLCBhbmQga2VlcCBsb25nIHJ1bnMuICBJdCBzZWVtcyBlYXNpZXIKICAgICAgICAgICAgIyBmb3IgdGhlIGV5ZSB0byBmb2xsb3cgYnJlYWtzIGluIG1vbm90b25pYyBsZXZlbCBjaGFuZ2VzIHRoYW4KICAgICAgICAgICAgIyBub24tbW9ub3RvbmljIGxldmVsIGNoYW5nZXMuICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBsb29rcwogICAgICAgICAgICAjIGJlc3QgaWYgd2UgZGVsZXRlIHRoZSBsb3dlciBsZXZlbCBhbGlnbm1lbnRzOgoKICAgICAgICAgICAgIyAgWzFdICAgICAgICAgICAgICAgICAgfn4gW107CiAgICAgICAgICAgICMgIFsgWyJmb28iXSwgWyJiYXIiXSBdIH5+IFsgcXIvby8sIHFyL2EvIF07CiAgICAgICAgICAgICMgIFsgcXIvby8sIHFyL2EvIF0gICAgIH5+IFsgWyJmb28iXSwgWyJiYXIiXSBdOwogICAgICAgICAgICAjICBbICJmb28iLCAiYmFyIiBdICAgICB+fiBbIHFyL28vLCBxci9hLyBdOwogICAgICAgICAgICAjICBbIHFyL28vLCBxci9hLyBdICAgICB+fiBbICJmb28iLCAiYmFyIiBdOwogICAgICAgICAgICAjICAkZGVlcDEgICAgICAgICAgICAgICB+fiAkZGVlcDE7CgogICAgICAgICAgICAjIFNvIHdlIHdpbGwgdXNlIHR3byB0aHJlc2hvbGRzLgogICAgICAgICAgICBteSAkbm1pbl9tb25vICAgICA9ICRkZXB0aCArIDI7CiAgICAgICAgICAgIG15ICRubWluX25vbl9tb25vID0gJGRlcHRoICsgNjsKICAgICAgICAgICAgaWYgKCAkbm1pbl9tb25vID4gJG5saW5lc19wIC0gMSApIHsKICAgICAgICAgICAgICAgICRubWluX21vbm8gPSAkbmxpbmVzX3AgLSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJG5taW5fbm9uX21vbm8gPiAkbmxpbmVzX3AgLSAxICkgewogICAgICAgICAgICAgICAgJG5taW5fbm9uX21vbm8gPSAkbmxpbmVzX3AgLSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGxvb3AgdG8ga2VlcCBvciBkZWxldGUgZWFjaCBjaGlsZCBub2RlCiAgICAgICAgICAgIGZvcmVhY2ggbXkgJG5jICggJG5jX2JlZ19wIC4uICRuY19lbmRfcCApIHsKICAgICAgICAgICAgICAgIG15ICggJGpiZWdfYywgJGplbmRfYywgJG5wX2MsICRsZXZfYywgJHBhdF9jLCAkbmNfYmVnX2MsCiAgICAgICAgICAgICAgICAgICAgJG5jX2VuZF9jICkKICAgICAgICAgICAgICAgICAgPSBAeyAkbWF0Y2hfdHJlZVsgJGRlcHRoICsgMSBdLT5bJG5jXSB9OwogICAgICAgICAgICAgICAgbXkgJG5saW5lc19jICAgICA9ICRqZW5kX2MgLSAkamJlZ19jICsgMTsKICAgICAgICAgICAgICAgIG15ICRpc19tb25vdG9uaWMgPSAkcmxpbmVfdmFsdWVzLT5bJGpiZWdfY10tPls1XTsKICAgICAgICAgICAgICAgIG15ICRubWluICAgICAgICAgPSAkaXNfbW9ub3RvbmljID8gJG5taW5fbW9ubyA6ICRubWluX25vbl9tb25vOwogICAgICAgICAgICAgICAgaWYgKCAkbmxpbmVzX2MgPCAkbm1pbiApIHsKIyNwcmludCAiZGVsZXRpbmcgY2hpbGQsIG5saW5lcz0kbmxpbmVzX2MsIG5taW49JG5taW5cbiI7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAZGVsZXRlX2xpc3QsIFsgJGpiZWdfYywgJGplbmRfYywgJGxldl9wIF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKIyNwcmludCAia2VlcGluZyBjaGlsZCwgbmxpbmVzPSRubGluZXNfYywgbm1pbj0kbm1pblxuIjsKICAgICAgICAgICAgICAgICAgICBwdXNoIEB0b2RvX25leHQsICRuYzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBAdG9kb19saXN0ID0gQHRvZG9fbmV4dDsKICAgIH0gIyMgZW5kIGxvb3AgdG8gbWFyayBub2RlcyB0byBkZWxldGUKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIFBydW5lIFRyZWUgU3RlcCA1LiBMb29wIHRvIGRlbGV0ZSBzZWxlY3RlZCBhbGlnbm1lbnQgdG9rZW5zCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICBmb3JlYWNoIG15ICRpdGVtIChAZGVsZXRlX2xpc3QpIHsKICAgICAgICBteSAoICRqYmVnLCAkamVuZCwgJGxldmVsX2tlZXAgKSA9IEB7JGl0ZW19OwogICAgICAgIGZvcmVhY2ggbXkgJGpqICggJGpiZWcgLi4gJGplbmQgKSB7CiAgICAgICAgICAgIG15ICRsaW5lID0gJHJsaW5lcy0+WyRqal07CiAgICAgICAgICAgIG15IEBpZGVsOwogICAgICAgICAgICBteSAkcnRva2VucyA9ICRsaW5lLT5nZXRfcnRva2VucygpOwogICAgICAgICAgICBteSAkaW1heCAgICA9IEB7JHJ0b2tlbnN9IC0gMjsKICAgICAgICAgICAgZm9yICggbXkgJGkgPSAwIDsgJGkgPD0gJGltYXggOyAkaSsrICkgewogICAgICAgICAgICAgICAgbXkgJHRvayA9ICRydG9rZW5zLT5bJGldOwogICAgICAgICAgICAgICAgbXkgKCAkcmF3X3RvaywgJGxldiwgJHRhZywgJHRva19jb3VudCApID0KICAgICAgICAgICAgICAgICAgZGVjb2RlX2FsaWdubWVudF90b2tlbigkdG9rKTsKICAgICAgICAgICAgICAgIGlmICggJGxldiA+ICRsZXZlbF9rZWVwICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQGlkZWwsICRpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChAaWRlbCkgewogICAgICAgICAgICAgICAgZGVsZXRlX3NlbGVjdGVkX3Rva2VucyggJGxpbmUsIFxAaWRlbCApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSAjIyBlbmQgbG9vcCB0byBkZWxldGUgc2VsZWN0ZWQgYWxpZ25tZW50IHRva2VucwoKICAgIHJldHVybjsKfSAjIyBlbmQgc3ViIHBydW5lX2FsaWdubWVudF90cmVlCgpzdWIgRHVtcF90cmVlX2dyb3VwcyB7CiAgICBteSAoICRyZ3JvdXAsICRtc2cgKSA9IEBfOwogICAgcHJpbnQgIiRtc2dcbiI7CiAgICBsb2NhbCAkIiA9ICcpKCc7CiAgICBmb3JlYWNoIG15ICRpdGVtICggQHskcmdyb3VwfSApIHsKICAgICAgICBteSBAZml4ID0gQHskaXRlbX07CiAgICAgICAgZm9yZWFjaCAoQGZpeCkgeyAkXyA9ICJ1bmRlZiIgdW5sZXNzIGRlZmluZWQgJF87IH0KICAgICAgICAkZml4WzRdID0gIi4uLiI7CiAgICAgICAgcHJpbnQgIihAZml4KVxuIjsKICAgIH0KICAgIHJldHVybjsKfQoKeyAgICAjIyBjbG9zdXJlIGZvciBzdWIgaXNfbWFyZ2luYWxfbWF0Y2gKCiAgICBteSAlaXNfaWZfb3I7CiAgICBteSAlaXNfYXNzaWdubWVudDsKICAgIG15ICVpc19nb29kX2FsaWdubWVudDsKCiAgICAjIFRoaXMgdGVzdCBkaWQgbm90IGdpdmUgc3VmZmljaWVudGx5IGJldHRlciByZXN1bHRzIHRvIHVzZSBhcyBhbiB1cGRhdGUsCiAgICAjIGJ1dCB0aGUgZmxhZyBpcyB3b3J0aCBrZWVwaW5nIGFzIGEgc3RhcnRpbmcgcG9pbnQgZm9yIGZ1dHVyZSB0ZXN0aW5nLgogICAgdXNlIGNvbnN0YW50IFRFU1RfTUFSR0lOQUxfRVFfQUxJR05NRU5UID0+IDA7CgogICAgQkVHSU4gewoKICAgICAgICBteSBAcSA9IHF3KAogICAgICAgICAgaWYgdW5sZXNzIG9yIHx8CiAgICAgICAgKTsKICAgICAgICBAaXNfaWZfb3J7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICAgICAgQHEgPSBxdygKICAgICAgICAgID0gKio9ICs9ICo9ICY9IDw8PSAmJj0KICAgICAgICAgIC09IC89IHw9ID4+PSB8fD0gLy89CiAgICAgICAgICAuPSAlPSBePQogICAgICAgICAgeD0KICAgICAgICApOwogICAgICAgIEBpc19hc3NpZ25tZW50e0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgICAgICMgVmVydGljYWxseSBhbGlnbmluZyBvbiBjZXJ0YWluICJnb29kIiB0b2tlbnMgaXMgdXN1YWxseSBva2F5CiAgICAgICAgIyBzbyB3ZSBjYW4gYmUgbGVzcyByZXN0cmljdGl2ZSBpbiBtYXJnaW5hbCBjYXNlcy4KICAgICAgICBAcSA9IHF3KCB7ID8gPT4gPSApOwogICAgICAgIHB1c2ggQHEsICgnLCcpOwogICAgICAgIEBpc19nb29kX2FsaWdubWVudHtAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwogICAgfQoKICAgIHN1YiBpc19tYXJnaW5hbF9tYXRjaCB7CgogICAgICAgIG15ICggJGxpbmVfMCwgJGxpbmVfMSwgJGdyb3VwX2xldmVsLCAkaW1heF9hbGlnbiwgJGltYXhfcHJldiApID0gQF87CgogICAgICAgICMgRGVjaWRlIGlmIHdlIHNob3VsZCB1bmRvIHNvbWUgb3IgYWxsIG9mIHRoZSBjb21tb24gYWxpZ25tZW50cyBvZiBhCiAgICAgICAgIyBncm91cCBvZiBqdXN0IHR3byBsaW5lcy4KCiAgICAgICAgIyBHaXZlbjoKICAgICAgICAjICAgJGxpbmVfMCBhbmQgJGxpbmVfMSAtIHRoZSB0d28gbGluZXMKICAgICAgICAjICAgJGdyb3VwX2xldmVsID0gdGhlIGluZGVudGF0aW9uIGxldmVsIG9mIHRoZSBncm91cCBiZWluZyBwcm9jZXNzZWQKICAgICAgICAjICAgJGltYXhfYWxpZ24gPSB0aGUgbWF4aW11bSBpbmRleCBvZiB0aGUgY29tbW9uIGFsaWdubWVudCB0b2tlbnMKICAgICAgICAjICAgICAgICAgICAgICAgICBvZiB0aGUgdHdvIGxpbmVzCiAgICAgICAgIyAgICRpbWF4X3ByZXYgID0gdGhlIG1heGltdW0gaW5kZXggb2YgdGhlIGNvbW1vbiBhbGlnbm1lbnQgdG9rZW5zCiAgICAgICAgIyAgICAgICAgICAgICAgICAgd2l0aCB0aGUgbGluZSBiZWZvcmUgJGxpbmVfMCAoPS0xIG9mIGRvZXMgbm90IGV4aXN0KQoKICAgICAgICAjIFJldHVybjoKICAgICAgICAjICAgJGlzX21hcmdpbmFsID0gdHJ1ZSBpZiB0aGUgdHdvIGxpbmVzIHNob3VsZCBOT1QgYmUgZnVsbHkgYWxpZ25lZAogICAgICAgICMgICAgICAgICAgICAgICAgPSBmYWxzZSBpZiB0aGUgdHdvIGxpbmVzIGNhbiByZW1haW4gZnVsbHkgYWxpZ25lZAogICAgICAgICMgICAkaW1heF9hbGlnbiAgPSB0aGUgaW5kZXggb2YgdGhlIGhpZ2hlc3QgYWxpZ25tZW50IHRva2VuIHNoYXJlZCBieQogICAgICAgICMgICAgICAgICAgICAgICAgICB0aGVzZSB0d28gbGluZXMgdG8ga2VlcCBpZiB0aGUgbWF0Y2ggaXMgbWFyZ2luYWwuCgogICAgICAgICMgV2hlbiB3ZSBoYXZlIGFuIGFsaWdubWVudCBncm91cCBvZiBqdXN0IHR3byBsaW5lcyBsaWtlIHRoaXMsIHdlIGFyZQogICAgICAgICMgd29ya2luZyBpbiB0aGUgdHdpbGlnaHQgem9uZSBvZiB3aGF0IGxvb2tzIGdvb2QgYW5kIHdoYXQgbG9va3MgYmFkLgogICAgICAgICMgVGhpcyByb3V0aW5lIGlzIGEgY29sbGVjdGlvbiBvZiBydWxlcyB3aGljaCB3b3JrIGhhdmUgYmVlbiBmb3VuZCB0bwogICAgICAgICMgd29yayBmYWlybHkgd2VsbCwgYnV0IGl0IHdpbGwgbmVlZCB0byBiZSB1cGRhdGVkIGZyb20gdGltZSB0byB0aW1lLgoKICAgICAgICBteSAkaXNfbWFyZ2luYWwgPSAwOwoKICAgICAgICAjIGFsd2F5cyBrZWVwIGFsaWdubWVudHMgb2YgYSB0ZXJtaW5hbCBlbHNlIG9yIHRlcm5hcnkKICAgICAgICBnb3RvIFJFVFVSTiBpZiAoIGRlZmluZWQoICRsaW5lXzEtPmdldF9qX3Rlcm1pbmFsX21hdGNoKCkgKSApOwoKICAgICAgICAjIGFsd2F5cyBhbGlnbiBsaXN0cwogICAgICAgIG15ICRncm91cF9saXN0X3R5cGUgPSAkbGluZV8wLT5nZXRfbGlzdF90eXBlKCk7CiAgICAgICAgZ290byBSRVRVUk4gaWYgKCRncm91cF9saXN0X3R5cGUpOwoKICAgICAgICAjIGFsd2F5cyBhbGlnbiBoYW5naW5nIHNpZGUgY29tbWVudHMKICAgICAgICBteSAkaXNfaGFuZ2luZ19zaWRlX2NvbW1lbnQgPSAkbGluZV8xLT5nZXRfaXNfaGFuZ2luZ19zaWRlX2NvbW1lbnQoKTsKICAgICAgICBnb3RvIFJFVFVSTiBpZiAoJGlzX2hhbmdpbmdfc2lkZV9jb21tZW50KTsKCiAgICAgICAgbXkgJGptYXhfMCAgICAgICAgICAgPSAkbGluZV8wLT5nZXRfam1heCgpOwogICAgICAgIG15ICRqbWF4XzEgICAgICAgICAgID0gJGxpbmVfMS0+Z2V0X2ptYXgoKTsKICAgICAgICBteSAkcnRva2Vuc18xICAgICAgICA9ICRsaW5lXzEtPmdldF9ydG9rZW5zKCk7CiAgICAgICAgbXkgJHJ0b2tlbnNfMCAgICAgICAgPSAkbGluZV8wLT5nZXRfcnRva2VucygpOwogICAgICAgIG15ICRyZmllbGRfbGVuZ3Roc18wID0gJGxpbmVfMC0+Z2V0X3JmaWVsZF9sZW5ndGhzKCk7CiAgICAgICAgbXkgJHJmaWVsZF9sZW5ndGhzXzEgPSAkbGluZV8xLT5nZXRfcmZpZWxkX2xlbmd0aHMoKTsKICAgICAgICBteSAkcnBhdHRlcm5zXzAgICAgICA9ICRsaW5lXzAtPmdldF9ycGF0dGVybnMoKTsKICAgICAgICBteSAkcnBhdHRlcm5zXzEgICAgICA9ICRsaW5lXzEtPmdldF9ycGF0dGVybnMoKTsKICAgICAgICBteSAkaW1heF9uZXh0ICAgICAgICA9ICRsaW5lXzEtPmdldF9pbWF4X3BhaXIoKTsKCiAgICAgICAgIyBXZSB3aWxsIHNjYW4gdGhlIGFsaWdubWVudCB0b2tlbnMgYW5kIHNldCBhIGZsYWcgJyRpc19tYXJnaW5hbCcgaWYKICAgICAgICAjIGl0IHNlZW1zIHRoYXQgdGhlIGFuIGFsaWdubWVudCB3b3VsZCBsb29rIGJhZC4KICAgICAgICBteSAkbWF4X3BhZCAgICAgICAgICAgID0gMDsKICAgICAgICBteSAkc2F3X2dvb2RfYWxpZ25tZW50ID0gMDsKICAgICAgICBteSAkc2F3X2lmX29yOyAgICAgICAgIyBpZiB3ZSBzYXcgYW4gJ2lmJyBvciAnb3InIGF0IGdyb3VwIGxldmVsCiAgICAgICAgbXkgJHJhd190b2tiID0gIiI7ICAgICMgZmlyc3QgdG9rZW4gc2VlbiBhdCBncm91cCBsZXZlbAogICAgICAgIG15ICRqZmlyc3RfYmFkOwogICAgICAgIG15ICRsaW5lX2VuZGluZ19mYXRfY29tbWE7ICAgICMgaXMgbGFzdCB0b2tlbiBqdXN0IGEgJz0+JyA/CiAgICAgICAgbXkgJGowX2VxX3BhZDsKICAgICAgICBteSAkajBfbWF4X3BhZCA9IDA7CgogICAgICAgIGZvciAoIG15ICRqID0gMCA7ICRqIDwgJGptYXhfMSAtIDEgOyAkaisrICkgewogICAgICAgICAgICBteSAoICRyYXdfdG9rLCAkbGV2LCAkdGFnLCAkdG9rX2NvdW50ICkgPQogICAgICAgICAgICAgIGRlY29kZV9hbGlnbm1lbnRfdG9rZW4oICRydG9rZW5zXzEtPlskal0gKTsKICAgICAgICAgICAgaWYgKCAkcmF3X3RvayAmJiAkbGV2ID09ICRncm91cF9sZXZlbCApIHsKICAgICAgICAgICAgICAgIGlmICggISRyYXdfdG9rYiApIHsgJHJhd190b2tiID0gJHJhd190b2sgfQogICAgICAgICAgICAgICAgJHNhd19pZl9vciB8fD0gJGlzX2lmX29yeyRyYXdfdG9rfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBXaGVuIHRoZSBmaXJzdCBvZiB0aGUgdHdvIGxpbmVzIGVuZHMgaW4gYSBiYXJlICc9PicgdGhpcyB3aWxsCiAgICAgICAgICAgICMgcHJvYmFibHkgYmUgbWFyZ2luYWwgbWF0Y2guICAoRm9yIGEgYmFyZSA9PiwgdGhlIG5leHQgZmllbGQgbGVuZ3RoCiAgICAgICAgICAgICMgd2lsbCBiZSAyIG9yIDMsIGRlcGVuZGluZyBvbiBzaWRlIGNvbW1lbnQpCiAgICAgICAgICAgICRsaW5lX2VuZGluZ19mYXRfY29tbWEgPQogICAgICAgICAgICAgICAgICRqID09ICRqbWF4XzEgLSAyCiAgICAgICAgICAgICAgJiYgJHJhd190b2sgZXEgJz0+JwogICAgICAgICAgICAgICYmICRyZmllbGRfbGVuZ3Roc18wLT5bICRqICsgMSBdIDw9IDM7CgogICAgICAgICAgICBteSAkcGFkID0gJHJmaWVsZF9sZW5ndGhzXzEtPlskal0gLSAkcmZpZWxkX2xlbmd0aHNfMC0+WyRqXTsKICAgICAgICAgICAgaWYgKCAkaiA9PSAwICkgewogICAgICAgICAgICAgICAgJHBhZCArPSAkbGluZV8xLT5nZXRfbGVhZGluZ19zcGFjZV9jb3VudCgpIC0KICAgICAgICAgICAgICAgICAgJGxpbmVfMC0+Z2V0X2xlYWRpbmdfc3BhY2VfY291bnQoKTsKCiAgICAgICAgICAgICAgICAjIFJlbWVtYmVyIHRoZSBwYWQgYXQgYSBsZWFkaW5nIGVxdWFscwogICAgICAgICAgICAgICAgaWYgKCAkcmF3X3RvayBlcSAnPScgJiYgJGxldiA9PSAkZ3JvdXBfbGV2ZWwgKSB7CiAgICAgICAgICAgICAgICAgICAgJGowX2VxX3BhZCA9ICRwYWQ7CiAgICAgICAgICAgICAgICAgICAgJGowX21heF9wYWQgPQogICAgICAgICAgICAgICAgICAgICAgMC41ICogKCAkcmZpZWxkX2xlbmd0aHNfMS0+WzBdICsgJHJmaWVsZF9sZW5ndGhzXzAtPlswXSApOwogICAgICAgICAgICAgICAgICAgICRqMF9tYXhfcGFkID0gNCBpZiAoICRqMF9tYXhfcGFkIDwgNCApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRwYWQgPCAwICkgICAgICAgIHsgJHBhZCAgICAgPSAtJHBhZCB9CiAgICAgICAgICAgIGlmICggJHBhZCA+ICRtYXhfcGFkICkgeyAkbWF4X3BhZCA9ICRwYWQgfQogICAgICAgICAgICBpZiAoICRpc19nb29kX2FsaWdubWVudHskcmF3X3Rva30gJiYgISRsaW5lX2VuZGluZ19mYXRfY29tbWEgKSB7CiAgICAgICAgICAgICAgICAkc2F3X2dvb2RfYWxpZ25tZW50ID0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRqZmlyc3RfYmFkID0gJGogdW5sZXNzIGRlZmluZWQoJGpmaXJzdF9iYWQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJHJwYXR0ZXJuc18wLT5bJGpdIG5lICRycGF0dGVybnNfMS0+WyRqXSApIHsKCiAgICAgICAgICAgICAgICAjIEZsYWcgdGhpcyBhcyBhIG1hcmdpbmFsIG1hdGNoIHNpbmNlIHBhdHRlcm5zIGRpZmZlci4KICAgICAgICAgICAgICAgICMgTm9ybWFsbHksIHdlIHdpbGwgbm90IGFsbG93IGp1c3QgdHdvIGxpbmVzIHRvIG1hdGNoIGlmCiAgICAgICAgICAgICAgICAjIG1hcmdpbmFsLiBCdXQgd2UgY2FuIGFsbG93IG1hdGNoaW5nIGluIHNvbWUgc3BlY2lmaWMgY2FzZXMuCgogICAgICAgICAgICAgICAgJGpmaXJzdF9iYWQgID0gJGogaWYgKCAhZGVmaW5lZCgkamZpcnN0X2JhZCkgKTsKICAgICAgICAgICAgICAgICRpc19tYXJnaW5hbCA9IDEgIGlmICggJGlzX21hcmdpbmFsID09IDAgKTsKICAgICAgICAgICAgICAgIGlmICggJHJhd190b2sgZXEgJz0nICkgewoKICAgICAgICAgICAgICAgICAgICAjIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIG1hcmdpbmFsIG1hdGNoOgogICAgICAgICAgICAgICAgICAgICMgICAgICAgJGRvbmV7JCRvcH0gPSAxOwogICAgICAgICAgICAgICAgICAgICMgICAgICAgJG9wICAgICAgICAgPSBjb21waWxlX2JibG9jaygkb3ApOwogICAgICAgICAgICAgICAgICAgICMgVGhlIGxlZnQgdG9rZW5zIGFyZSBib3RoIGlkZW50aWZpZXJzLCBidXQKICAgICAgICAgICAgICAgICAgICAjIG9uZSBhY2Nlc3NlcyBhIGhhc2ggYW5kIHRoZSBvdGhlciBkb2Vzbid0LgogICAgICAgICAgICAgICAgICAgICMgV2UnbGwgbGV0IHRoaXMgYmUgYSB0ZW50YXRpdmUgbWF0Y2ggYW5kIHVuZG8KICAgICAgICAgICAgICAgICAgICAjIGl0IGxhdGVyIGlmIHdlIGRvbid0IGZpbmQgbW9yZSB0aGFuIDIgbGluZXMKICAgICAgICAgICAgICAgICAgICAjIGluIHRoZSBncm91cC4KICAgICAgICAgICAgICAgICAgICAkaXNfbWFyZ2luYWwgPSAyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkaXNfbWFyZ2luYWwgPSAxIGlmICggJGlzX21hcmdpbmFsID09IDAgJiYgJGxpbmVfZW5kaW5nX2ZhdF9jb21tYSApOwoKICAgICAgICAjIFR1cm4gb2ZmIHRoZSAibWFyZ2luYWwgbWF0Y2giIGZsYWcgaW4gc29tZSBjYXNlcy4uLgogICAgICAgICMgQSAibWFyZ2luYWwgbWF0Y2giIG9jY3VycyB3aGVuIHRoZSBhbGlnbm1lbnQgdG9rZW5zIGFncmVlCiAgICAgICAgIyBidXQgdGhlcmUgYXJlIGRpZmZlcmVuY2VzIGluIHRoZSBvdGhlciB0b2tlbnMgKHBhdHRlcm5zKS4KICAgICAgICAjIElmIHdlIGxlYXZlIHRoZSBtYXJnaW5hbCBtYXRjaCBmbGFnIHNldCwgdGhlbiB0aGUgcnVsZSBpcyB0aGF0IHdlCiAgICAgICAgIyB3aWxsIGFsaWduIG9ubHkgaWYgdGhlcmUgYXJlIG1vcmUgdGhhbiB0d28gbGluZXMgaW4gdGhlIGdyb3VwLgogICAgICAgICMgV2Ugd2lsbCB0dXJuIG9mIHRoZSBmbGFnIGlmIHdlIGFsbW9zdCBoYXZlIGEgbWF0Y2gKICAgICAgICAjIGFuZCBlaXRoZXIgd2UgaGF2ZSBzZWVuIGEgZ29vZCBhbGlnbm1lbnQgdG9rZW4gb3Igd2UKICAgICAgICAjIGp1c3QgbmVlZCBhIHNtYWxsIHBhZCAoMiBzcGFjZXMpIHRvIGZpdC4gIFRoZXNlIHJ1bGVzIGFyZQogICAgICAgICMgdGhlIHJlc3VsdCBvZiBleHBlcmltZW50YXRpb24uICBUb2tlbnMgd2hpY2ggbWlzYWxpZ25lZCBieSBqdXN0CiAgICAgICAgIyBvbmUgb3IgdHdvIGNoYXJhY3RlcnMgYXJlIGFubm95aW5nLiAgT24gdGhlIG90aGVyIGhhbmQsCiAgICAgICAgIyBsYXJnZSBnYXBzIHRvIGxlc3MgaW1wb3J0YW50IGFsaWdubWVudCB0b2tlbnMgYXJlIGFsc28gYW5ub3lpbmcuCiAgICAgICAgaWYgKCAkaXNfbWFyZ2luYWwgPT0gMQogICAgICAgICAgICAmJiAoICRzYXdfZ29vZF9hbGlnbm1lbnQgfHwgJG1heF9wYWQgPCAzICkgKQogICAgICAgIHsKICAgICAgICAgICAgJGlzX21hcmdpbmFsID0gMDsKICAgICAgICB9CgogICAgICAgICMgV2Ugd2lsbCB1c2UgdGhlIGxpbmUgZW5kaW5ncyB0byBoZWxwIGRlY2lkZSBvbiBhbGlnbm1lbnRzLi4uCiAgICAgICAgIyBTZWUgaWYgdGhlIGxpbmVzIGVuZCB3aXRoIHNlbWljb2xvbnMuLi4KICAgICAgICBteSAkc2NfdGVybTA7CiAgICAgICAgbXkgJHNjX3Rlcm0xOwogICAgICAgIGlmICggJGptYXhfMCA8IDEgfHwgJGptYXhfMSA8IDEgKSB7CgogICAgICAgICAgICAjIHNob3VsZG4ndCBoYXBwZW4KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15ICRwYXQwID0gJHJwYXR0ZXJuc18wLT5bICRqbWF4XzAgLSAxIF07CiAgICAgICAgICAgIG15ICRwYXQxID0gJHJwYXR0ZXJuc18xLT5bICRqbWF4XzEgLSAxIF07CiAgICAgICAgICAgICRzY190ZXJtMCA9ICRwYXQwID1+IC87Yj8kLzsKICAgICAgICAgICAgJHNjX3Rlcm0xID0gJHBhdDEgPX4gLztiPyQvOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJGlzX21hcmdpbmFsICYmICEkc2NfdGVybTAgKSB7CgogICAgICAgICAgICAjIEZpcnN0IGxpbmUgb2YgYXNzaWdubWVudCBzaG91bGQgYmUgc2VtaWNvbG9uIHRlcm1pbmF0ZWQuCiAgICAgICAgICAgICMgRm9yIGV4YW1wbGUsIGRvIG5vdCBhbGlnbiBoZXJlOgogICAgICAgICAgICAjICAkJGhyZWZ7LU5VTV9URVhUX0ZJTEVTfSA9ICQkaHJlZnstTlVNX0JJTkFSWV9GSUxFU30gPQogICAgICAgICAgICAjICAgICQkaHJlZnstTlVNX0RJUlN9ID0gMDsKICAgICAgICAgICAgaWYgKCAkaXNfYXNzaWdubWVudHskcmF3X3Rva2J9ICkgewogICAgICAgICAgICAgICAgJGlzX21hcmdpbmFsID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBUcnkgdG8gYXZvaWQgc29tZSB1bmRlc2lyYWJsZSBhbGlnbm1lbnRzIG9mIG9wZW5pbmcgdG9rZW5zCiAgICAgICAgIyBmb3IgZXhhbXBsZSwgdGhlIHNwYWNlIGJldHdlZW4gZ3JlcCBhbmQgeyBoZXJlOgogICAgICAgICMgIHJldHVybiBtYXAgeyAoICRfID0+ICRfICkgfQogICAgICAgICMgICAgZ3JlcCAgICAgeyAvJGhhbmRsZXMvIH0gJHNlbGYtPl9nZXRfZGVsZWdhdGVfbWV0aG9kX2xpc3Q7CiAgICAgICAgJGlzX21hcmdpbmFsIHx8PQogICAgICAgICAgICAgKCAkcmF3X3Rva2IgZXEgJygnIHx8ICRyYXdfdG9rYiBlcSAneycgKQogICAgICAgICAgJiYgJGptYXhfMSA9PSAyCiAgICAgICAgICAmJiAkc2NfdGVybTAgbmUgJHNjX3Rlcm0xOwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyByZXR1cm4gdW5sZXNzIHRoaXMgaXMgYSBtYXJnaW5hbCBtYXRjaAogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICBnb3RvIFJFVFVSTiBpZiAoICEkaXNfbWFyZ2luYWwgKTsKCiAgICAgICAgIyBVbmRvIHRoZSBtYXJnaW5hbCBtYXRjaCBmbGFnIGluIGNlcnRhaW4gY2FzZXMsCgogICAgICAgICMgVHdvIGxpbmVzIHdpdGggYSBsZWFkaW5nIGVxdWFscy1saWtlIG9wZXJhdG9yIGFyZSBhbGxvd2VkIHRvCiAgICAgICAgIyBhbGlnbiBpZiB0aGUgcGF0dGVybnMgdG8gdGhlIGxlZnQgb2YgdGhlIGVxdWFscyBhcmUgdGhlIHNhbWUuCiAgICAgICAgIyBGb3IgZXhhbXBsZSB0aGUgZm9sbG93aW5nIHR3byBsaW5lcyBhcmUgYSBtYXJnaW5hbCBtYXRjaCBidXQgaGF2ZQogICAgICAgICMgdGhlIHNhbWUgbGVmdCBzaWRlIHBhdHRlcm5zLCBzbyB3ZSB3aWxsIGFsaWduIHRoZSBlcXVhbHMuCiAgICAgICAgIyAgICAgbXkgJG9yaWcgPSBteSAkZm9ybWF0ID0gIl48PDw8PCB+flxuIjsKICAgICAgICAjICAgICBteSAkYWJjICA9ICJhYmMiOwogICAgICAgICMgQnV0IHRoZXNlIGhhdmUgYSBkaWZmZXJlbnQgbGVmdCBwYXR0ZXJuIHNvIHRoZXkgd2lsbCBub3QgYmUKICAgICAgICAjIGFsaWduZWQKICAgICAgICAjICAgICAkeG1sZG9jIC49ICRgOwogICAgICAgICMgICAgICRzZWxmLT57J2xlZnRvdmVycyd9IC49ICI8Yngtc2VxOnNlcSIgLiAkJzsKCiAgICAgICAgIyBGaXJzdCBsaW5lIHNlbWljb2xvbiB0ZXJtaW5hdGVkIGJ1dCBzZWNvbmQgbm90LCB1c3VhbGx5IG9rOgogICAgICAgICMgICAgICAgICAgICAgICBteSAkd2FudCA9ICInYWInLCAnYScsICdiJyI7CiAgICAgICAgIyAgICAgICAgICAgICAgIG15ICRnb3QgID0gam9pbiggIiwgIiwKICAgICAgICAjICAgICAgICAgICAgICAgICAgICBtYXAgeyBkZWZpbmVkKCRfKSA/ICInJF8nIiA6ICJ1bmRlZiIgfQogICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgIEBnb3QgKTsKICAgICAgICAjICBGaXJzdCBsaW5lIG5vdCBzZW1pY29sb24gdGVybWluYXRlZCwgTm90IE9LIHRvIG1hdGNoOgogICAgICAgICMgICAkJGhyZWZ7LU5VTV9URVhUX0ZJTEVTfSA9ICQkaHJlZnstTlVNX0JJTkFSWV9GSUxFU30gPQogICAgICAgICMgICAgICAkJGhyZWZ7LU5VTV9ESVJTfSA9IDA7CiAgICAgICAgbXkgJHBhdDAgPSAkcnBhdHRlcm5zXzAtPlswXTsKICAgICAgICBteSAkcGF0MSA9ICRycGF0dGVybnNfMS0+WzBdOwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBUdXJuIG9mZiB0aGUgbWFyZ2luYWwgZmxhZyBmb3Igc29tZSB0eXBlcyBvZiBhc3NpZ25tZW50cwogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICBpZiAoICRpc19hc3NpZ25tZW50eyRyYXdfdG9rYn0gKSB7CgogICAgICAgICAgICAjIHVuZG8gbWFyZ2luYWwgZmxhZyBpZiBmaXJzdCBsaW5lIGlzIHNlbWljb2xvbiB0ZXJtaW5hdGVkCiAgICAgICAgICAgICMgYW5kIGxlYWRpbmcgcGF0dGVycyBtYXRjaAogICAgICAgICAgICBpZiAoJHNjX3Rlcm0wKSB7ICAgICMgJiYgJHNjX3Rlcm0xKSB7CiAgICAgICAgICAgICAgICAkaXNfbWFyZ2luYWwgPSAkcGF0MCBuZSAkcGF0MTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRyYXdfdG9rYiBlcSAnPT4nICkgewoKICAgICAgICAgICAgIyB1bmRvIG1hcmdpbmFsIGZsYWcgaWYgcGF0dGVybnMgbWF0Y2gKICAgICAgICAgICAgJGlzX21hcmdpbmFsID0gJHBhdDAgbmUgJHBhdDEgfHwgJGxpbmVfZW5kaW5nX2ZhdF9jb21tYTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkcmF3X3Rva2IgZXEgJz1+JyApIHsKCiAgICAgICAgICAgICMgdW5kbyBtYXJnaW5hbCBmbGFnIGlmIGJvdGggbGluZXMgYXJlIHNlbWljb2xvbiB0ZXJtaW5hdGVkCiAgICAgICAgICAgICMgYW5kIGxlYWRpbmcgcGF0dGVycyBtYXRjaAogICAgICAgICAgICBpZiAoICRzY190ZXJtMSAmJiAkc2NfdGVybTAgKSB7CiAgICAgICAgICAgICAgICAkaXNfbWFyZ2luYWwgPSAkcGF0MCBuZSAkcGF0MTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBUdXJuIG9mZiB0aGUgbWFyZ2luYWwgZmxhZyBpZiB3ZSBzYXcgYW4gJ2lmJyBvciAnb3InCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgICMgQSB0cmFpbGluZyAnaWYnIGFuZCAnb3InIG9mdGVuIGdpdmVzIGEgZ29vZCBhbGlnbm1lbnQKICAgICAgICAjIEZvciBleGFtcGxlLCB3ZSBjYW4gYWxpZ24gdGhlc2U6CiAgICAgICAgIyAgcmV0dXJuIC0xICAgICBpZiAkX1swXSA9fiBtL15DSEFQVHxBUFBFTkRJWC87CiAgICAgICAgIyAgcmV0dXJuICQxICsgMCBpZiAkX1swXSA9fiBtL15TRUNUKFxkKikkLzsKCiAgICAgICAgIyBvcgogICAgICAgICMgICRkX2luX21bMl0gPSAyOSAgICAgICAgICBpZiAoICZEYXRlX0xlYXBZZWFyKCR5KSApOwogICAgICAgICMgICRkICAgICAgICAgPSAkZF9pbl9tWyRtXSBpZiAoICRkID4gJGRfaW5fbVskbV0gKTsKCiAgICAgICAgaWYgKCRzYXdfaWZfb3IpIHsKCiAgICAgICAgICAgICMgdW5kbyBtYXJnaW5hbCBmbGFnIGlmIGJvdGggbGluZXMgYXJlIHNlbWljb2xvbiB0ZXJtaW5hdGVkCiAgICAgICAgICAgIGlmICggJHNjX3Rlcm0wICYmICRzY190ZXJtMSApIHsKICAgICAgICAgICAgICAgICRpc19tYXJnaW5hbCA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRm9yIGEgbWFyZ2luYWwgbWF0Y2gsIG9ubHkga2VlcCBtYXRjaGVzIGJlZm9yZSB0aGUgZmlyc3QgJ2JhZCcgbWF0Y2gKICAgICAgICBpZiAoICAgJGlzX21hcmdpbmFsCiAgICAgICAgICAgICYmIGRlZmluZWQoJGpmaXJzdF9iYWQpCiAgICAgICAgICAgICYmICRpbWF4X2FsaWduID4gJGpmaXJzdF9iYWQgLSAxICkKICAgICAgICB7CiAgICAgICAgICAgICRpbWF4X2FsaWduID0gJGpmaXJzdF9iYWQgLSAxOwogICAgICAgIH0KCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIEFsbG93IHN3ZWVwIHRvIG1hdGNoIGxpbmVzIHdpdGggbGVhZGluZyAnPScgaW4gc29tZSBjYXNlcwogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgaWYgKCAkaW1heF9hbGlnbiA8IDAgJiYgZGVmaW5lZCgkajBfZXFfcGFkKSApIHsKCiAgICAgICAgICAgIGlmICgKCiAgICAgICAgICAgICAgICAjIElmIHRoZXJlIGlzIGEgZm9sbG93aW5nIGxpbmUgd2l0aCBsZWFkaW5nIGVxdWFscywgb3IKICAgICAgICAgICAgICAgICMgcHJlY2VkaW5nIGxpbmUgd2l0aCBsZWFkaW5nIGVxdWFscywgdGhlbiBsZXQgdGhlIHN3ZWVwIGFsaWduCiAgICAgICAgICAgICAgICAjIHRoZW0gd2l0aG91dCByZXN0cmljdGlvbi4gIEZvciBleGFtcGxlLCB0aGUgZmlyc3QgdHdvIGxpbmVzCiAgICAgICAgICAgICAgICAjIGhlcmUgYXJlIGEgbWFyZ2luYWwgbWF0Y2gsIGJ1dCB0aGV5IGFyZSBmb2xsb3dlZCBieSBhIGxpbmUKICAgICAgICAgICAgICAgICMgd2l0aCBsZWFkaW5nIGVxdWFscywgc28gdGhlIHN3ZWVwLWxyIGxvZ2ljIGNhbiBhbGlnbiBhbGwgb2YKICAgICAgICAgICAgICAgICMgdGhlIGxpbmVzOgoKICAgICAgICAgICAgICAgICMgICRkYXRlWzFdID0gJG1vbnRoX3RvX251bXsgJGRhdGVbMV0gfTsgICAgICAgICAgICAjIDwtLWxpbmVfMAogICAgICAgICAgICAgICAgIyAgQHhkYXRlICAgPSBzcGxpdCggL1s6XC9cc10vLCAkbG9nLT5maWVsZCgndCcpICk7ICMgPC0tbGluZV8xCiAgICAgICAgICAgICAgICAjICAkZGF5ICAgICA9IHNwcmludGYoICIlMDRkLyUwMmQvJTAyZCIsIEBkYXRlWyAyLCAxLCAwIF0gKTsKICAgICAgICAgICAgICAgICMgICR0aW1lICAgID0gc3ByaW50ZiggIiUwMmQ6JTAyZDolMDJkIiwgQGRhdGVbIDMgLi4gNSBdICk7CgogICAgICAgICAgICAgICAgIyBMaWtld2lzZSwgaWYgd2UgcmV2ZXJzZSB0aGUgdHdvIHBhaXJzIHdlIHdhbnQgdGhlIHNhbWUgcmVzdWx0CgogICAgICAgICAgICAgICAgIyAgJGRheSAgICAgPSBzcHJpbnRmKCAiJTA0ZC8lMDJkLyUwMmQiLCBAZGF0ZVsgMiwgMSwgMCBdICk7CiAgICAgICAgICAgICAgICAjICAkdGltZSAgICA9IHNwcmludGYoICIlMDJkOiUwMmQ6JTAyZCIsIEBkYXRlWyAzIC4uIDUgXSApOwogICAgICAgICAgICAgICAgIyAgJGRhdGVbMV0gPSAkbW9udGhfdG9fbnVteyAkZGF0ZVsxXSB9OyAgICAgICAgICAgICMgPC0tbGluZV8wCiAgICAgICAgICAgICAgICAjICBAeGRhdGUgICA9IHNwbGl0KCAvWzpcL1xzXS8sICRsb2ctPmZpZWxkKCd0JykgKTsgIyA8LS1saW5lXzEKCiAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgJGltYXhfbmV4dCA+PSAwCiAgICAgICAgICAgICAgICAgICAgfHwgJGltYXhfcHJldiA+PSAwCiAgICAgICAgICAgICAgICAgICAgfHwgVEVTVF9NQVJHSU5BTF9FUV9BTElHTk1FTlQKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICYmICRqMF9lcV9wYWQgPj0gLSRqMF9tYXhfcGFkCiAgICAgICAgICAgICAgICAmJiAkajBfZXFfcGFkIDw9ICRqMF9tYXhfcGFkCiAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgIyBCdXQgZG8gbm90IGRvIHRoaXMgaWYgdGhlcmUgaXMgYSBjb21tYSBiZWZvcmUgdGhlICc9Jy4KICAgICAgICAgICAgICAgICMgRm9yIGV4YW1wbGUsIHRoZSBmaXJzdCB0d28gbGluZXMgYmVsb3cgaGF2ZSBjb21tYXMgYW5kCiAgICAgICAgICAgICAgICAjIHRoZXJlZm9yZSBhcmUgbm90IGFsbG93ZWQgdG8gYWxpZ24gd2l0aCBsaW5lcyAzICYgNDoKCiAgICAgICAgICAgICAgICAjIG15ICggJHgsICR5ICkgPSAkc2VsZi0+U2l6ZSgpOyAgICAgICAgICAgICAgICAgICAgICAjPC0tbGluZV8wCiAgICAgICAgICAgICAgICAjIG15ICggJGxlZnQsICR0b3AsICRyaWdodCwgJGJvdHRvbSApID0gJHNlbGYtPldpbmRvdygpOyAjPC0tbF8xCiAgICAgICAgICAgICAgICAjIG15ICR2eCA9ICRyaWdodCAtICRsZWZ0OwogICAgICAgICAgICAgICAgIyBteSAkdnkgPSAkYm90dG9tIC0gJHRvcDsKCiAgICAgICAgICAgICAgICBpZiAoICRycGF0dGVybnNfMC0+WzBdICF+IC8sLyAmJiAkcnBhdHRlcm5zXzEtPlswXSAhfiAvLC8gKSB7CiAgICAgICAgICAgICAgICAgICAgJGltYXhfYWxpZ24gPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgUkVUVVJOOgogICAgICAgIHJldHVybiAoICRpc19tYXJnaW5hbCwgJGltYXhfYWxpZ24gKTsKICAgIH0KfQoKc3ViIGdldF9leHRyYV9sZWFkaW5nX3NwYWNlcyB7CgogICAgbXkgKCAkcmxpbmVzLCAkcmdyb3VwcyApID0gQF87CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgRGVmaW5lIGFueSBleHRyYSBpbmRlbnRhdGlvbiBzcGFjZSAoZm9yIHRoZSAtbHAgb3B0aW9uKS4KICAgICMgSGVyZSBpcyB3aHk6CiAgICAjIElmIGEgbGlzdCBoYXMgc2lkZSBjb21tZW50cywgc3ViIHNjYW5fbGlzdCBtdXN0IGR1bXAgdGhlCiAgICAjIGxpc3QgYmVmb3JlIGl0IHNlZXMgZXZlcnl0aGluZy4gIFdoZW4gdGhpcyBoYXBwZW5zLCBpdCBzZXRzCiAgICAjIHRoZSBpbmRlbnRhdGlvbiB0byB0aGUgc3RhbmRhcmQgc2NoZW1lLCBidXQgbm90ZXMgaG93CiAgICAjIG1hbnkgc3BhY2VzIGl0IHdvdWxkIGhhdmUgbGlrZWQgdG8gdXNlLiAgV2UgbWF5IGJlIGFibGUKICAgICMgdG8gcmVjb3ZlciB0aGF0IHNwYWNlIGhlcmUgaW4gdGhlIGV2ZW50IHRoYXQgYWxsIG9mIHRoZQogICAgIyBsaW5lcyBvZiBhIGxpc3QgYXJlIGJhY2sgdG9nZXRoZXIgYWdhaW4uCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgIHJldHVybiAwIHVubGVzcyAoIEB7JHJsaW5lc30gJiYgQHskcmdyb3Vwc30gKTsKCiAgICBteSAkb2JqZWN0ID0gJHJsaW5lcy0+WzBdLT5nZXRfaW5kZW50YXRpb24oKTsKICAgIHJldHVybiAwIHVubGVzcyAoIHJlZigkb2JqZWN0KSApOwogICAgbXkgJGV4dHJhX2xlYWRpbmdfc3BhY2VzICAgICAgICAgICAgPSAwOwogICAgbXkgJGV4dHJhX2luZGVudGF0aW9uX3NwYWNlc193YW50ZWQgPSBnZXRfcmVjb3ZlcmFibGVfc3BhY2VzKCRvYmplY3QpOwogICAgcmV0dXJuICgkZXh0cmFfbGVhZGluZ19zcGFjZXMpIHVubGVzcyAoJGV4dHJhX2luZGVudGF0aW9uX3NwYWNlc193YW50ZWQpOwoKICAgIG15ICRtaW5fc3BhY2VzID0gJGV4dHJhX2luZGVudGF0aW9uX3NwYWNlc193YW50ZWQ7CiAgICBpZiAoICRtaW5fc3BhY2VzID4gMCApIHsgJG1pbl9zcGFjZXMgPSAwIH0KCiAgICAjIGxvb3Agb3ZlciBhbGwgZ3JvdXBzCiAgICBteSAkbmcgICAgICA9IC0xOwogICAgbXkgJG5ncm91cHMgPSBAeyRyZ3JvdXBzfTsKICAgIGZvcmVhY2ggbXkgJGl0ZW0gKCBAeyRyZ3JvdXBzfSApIHsKICAgICAgICAkbmcrKzsKICAgICAgICBteSAoICRqYmVnLCAkamVuZCApID0gQHskaXRlbX07CiAgICAgICAgZm9yZWFjaCBteSAkaiAoICRqYmVnIC4uICRqZW5kICkgewogICAgICAgICAgICBuZXh0IGlmICggJGogPT0gMCApOwoKICAgICAgICAgICAgIyBhbGwgaW5kZW50YXRpb24gb2JqZWN0cyBtdXN0IGJlIHRoZSBzYW1lCiAgICAgICAgICAgIGlmICggJG9iamVjdCAhPSAkcmxpbmVzLT5bJGpdLT5nZXRfaW5kZW50YXRpb24oKSApIHsKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICMgZmluZCB0aGUgbWF4aW11bSBzcGFjZSB3aXRob3V0IGV4Y2VlZGluZyB0aGUgbGluZSBsZW5ndGggZm9yIHRoaXMgZ3JvdXAKICAgICAgICBteSAkYXZhaWwgPSAkcmxpbmVzLT5bJGpiZWddLT5nZXRfYXZhaWxhYmxlX3NwYWNlX29uX3JpZ2h0KCk7CiAgICAgICAgbXkgJHNwYWNlcyA9CiAgICAgICAgICAoICRhdmFpbCA+ICRleHRyYV9pbmRlbnRhdGlvbl9zcGFjZXNfd2FudGVkICkKICAgICAgICAgID8gJGV4dHJhX2luZGVudGF0aW9uX3NwYWNlc193YW50ZWQKICAgICAgICAgIDogJGF2YWlsOwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIE5vdGU6IG1pbiBzcGFjZXMgY2FuIGJlIG5lZ2F0aXZlOyBmb3IgZXhhbXBsZSB3aXRoIC1nbnUKICAgICAgICAjIGYoCiAgICAgICAgIyAgIGRvIHsgMTsgISEobXkgJHggPSBibGVzcyBbXSk7IH0KICAgICAgICAjICApOwogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgVGhlIGZvbGxvd2luZyBydWxlIGlzIG5lZWRlZCB0byBtYXRjaCBvbGRlciBmb3JtYXR0aW5nOgogICAgICAgICMgRm9yIG11bHRpcGxlIGdyb3Vwcywgd2Ugd2lsbCBrZWVwIHNwYWNlcyBub24tbmVnYXRpdmUuCiAgICAgICAgIyBGb3IgYSBzaW5nbGUgZ3JvdXAsIHdlIHdpbGwgYWxsb3cgYSBuZWdhdGl2ZSBzcGFjZS4KICAgICAgICBpZiAoICRuZ3JvdXBzID4gMSAmJiAkc3BhY2VzIDwgMCApIHsgJHNwYWNlcyA9IDAgfQoKICAgICAgICAjIHVwZGF0ZSB0aGUgbWluaW11bSBzcGFjaW5nCiAgICAgICAgaWYgKCAkbmcgPT0gMCB8fCAkc3BhY2VzIDwgJGV4dHJhX2xlYWRpbmdfc3BhY2VzICkgewogICAgICAgICAgICAkZXh0cmFfbGVhZGluZ19zcGFjZXMgPSAkc3BhY2VzOwogICAgICAgIH0KICAgIH0KCiAgICAjIHVwZGF0ZSB0aGUgaW5kZW50YXRpb24gb2JqZWN0IGJlY2F1c2Ugd2l0aCAtaWNwIHRoZSB0ZXJtaW5hbAogICAgIyAnKTsnIHdpbGwgdXNlIHRoZSBzYW1lIGFkanVzdG1lbnQuCiAgICAkb2JqZWN0LT5wZXJtYW5lbnRseV9kZWNyZWFzZV9hdmFpbGFibGVfc3BhY2VzKCAtJGV4dHJhX2xlYWRpbmdfc3BhY2VzICk7CiAgICByZXR1cm4gJGV4dHJhX2xlYWRpbmdfc3BhY2VzOwp9CgpzdWIgZm9yZ2V0X3NpZGVfY29tbWVudCB7CiAgICBteSAoJHNlbGYpID0gQF87CiAgICAkc2VsZi0+W19sYXN0X3NpZGVfY29tbWVudF9jb2x1bW5fXSA9IDA7CiAgICByZXR1cm47Cn0KCnN1YiBpc19nb29kX3NpZGVfY29tbWVudF9jb2x1bW4gewogICAgbXkgKCAkc2VsZiwgJGxpbmUsICRsaW5lX251bWJlciwgJGxldmVsLCAkbnVtNSApID0gQF87CgogICAgIyBVcG9uIGVuY291bnRlcmluZyB0aGUgZmlyc3Qgc2lkZSBjb21tZW50IG9mIGEgZ3JvdXAsIGRlY2lkZSBpZgogICAgIyBhIHByZXZpb3VzIHNpZGUgY29tbWVudCBzaG91bGQgYmUgZm9yZ290dGVuLiAgVGhpcyBpbnZvbHZlcwogICAgIyBjaGVja2luZyBzZXZlcmFsIHJ1bGVzLgoKICAgICMgUmV0dXJuIHRydWUgdG8ga2VlcCBvbGQgY29tbWVudCBsb2NhdGlvbgogICAgIyBSZXR1cm4gZmFsc2UgdG8gZm9yZ2V0IG9sZCBjb21tZW50IGxvY2F0aW9uCgogICAgbXkgJHJmaWVsZHMgICAgICAgICAgICAgICAgID0gJGxpbmUtPmdldF9yZmllbGRzKCk7CiAgICBteSAkaXNfaGFuZ2luZ19zaWRlX2NvbW1lbnQgPSAkbGluZS0+Z2V0X2lzX2hhbmdpbmdfc2lkZV9jb21tZW50KCk7CgogICAgIyBSVUxFMTogTmV2ZXIgZm9yZ2V0IGNvbW1lbnQgYmVmb3JlIGEgaGFuZ2luZyBzaWRlIGNvbW1lbnQKICAgIGdvdG8gS0VFUCBpZiAoJGlzX2hhbmdpbmdfc2lkZV9jb21tZW50KTsKCiAgICAjIFJVTEUyOiBGb3JnZXQgYSBzaWRlIGNvbW1lbnQgYWZ0ZXIgYSBzaG9ydCBsaW5lIGRpZmZlcmVuY2UsCiAgICAjIHdoZXJlICdzaG9ydCBsaW5lIGRpZmZlcmVuY2UnIGlzIGNvbXB1dGVkIGZyb20gYSBmb3JtdWxhLgogICAgIyBVc2luZyBhIHNtb290aCBmb3JtdWxhIGhlbHBzIG1pbmltaXplIHN1ZGRlbiBsYXJnZSBjaGFuZ2VzLgogICAgbXkgJGxpbmVfZGlmZiA9ICRsaW5lX251bWJlciAtICRzZWxmLT5bX2xhc3Rfc2lkZV9jb21tZW50X2xpbmVfbnVtYmVyX107CiAgICBteSAkYWxldl9kaWZmID0gYWJzKCAkbGV2ZWwgLSAkc2VsZi0+W19sYXN0X3NpZGVfY29tbWVudF9sZXZlbF9dICk7CgogICAgIyAnJG51bTUnIGlzIHRoZSBudW1iZXIgb2YgY29tbWVudHMgaW4gdGhlIGZpcnN0IDUgbGluZXMgYWZ0ZXIgdGhlIGZpcnN0CiAgICAjIGNvbW1lbnQuICBJdCBpcyBuZWVkZWQgdG8ga2VlcCBhIGNvbXBhY3QgZ3JvdXAgb2Ygc2lkZSBjb21tZW50cyBmcm9tCiAgICAjIGJlaW5nIGluZmx1ZW5jZWQgYnkgYSBtb3JlIGRpc3RhbnQgc2lkZSBjb21tZW50LgogICAgJG51bTUgPSAxIHVubGVzcyAoJG51bTUpOwoKICAgICMgU29tZSB2YWx1ZXM6CgogICAgIyAgICAgICAgJGFkaWZmICAkbnVtNSAgICRzaG9ydF9kaWZmCiAgICAjICAgICAgICAwICAgICAgICogICAgICAgMTIKICAgICMgICAgICAgIDEgICAgICAgMSAgICAgICA2CiAgICAjICAgICAgICAxICAgICAgIDIgICAgICAgNAogICAgIyAgICAgICAgMSAgICAgICAzICAgICAgIDMKICAgICMgICAgICAgIDEgICAgICAgNCAgICAgICAyCiAgICAjICAgICAgICAyICAgICAgIDEgICAgICAgNAogICAgIyAgICAgICAgMiAgICAgICAyICAgICAgIDIKICAgICMgICAgICAgIDIgICAgICAgMyAgICAgICAxCiAgICAjICAgICAgICAzICAgICAgIDEgICAgICAgMwogICAgIyAgICAgICAgMyAgICAgICAyICAgICAgIDEKCiAgICBteSAkc2hvcnRfZGlmZiA9IFNDX0xPTkdfTElORV9ESUZGIC8gKCAxICsgJGFsZXZfZGlmZiAqICRudW01ICk7CgogICAgZ290byBGT1JHRVQKICAgICAgaWYgKCAkbGluZV9kaWZmID4gJHNob3J0X2RpZmYgKTsKCiAgICAjIFJVTEUzOiBGb3JnZXQgYSBzaWRlIGNvbW1lbnQgaWYgdGhpcyBsaW5lIGlzIGF0IGxvd2VyIGxldmVsIGFuZAogICAgIyBlbmRzIGEgYmxvY2sKICAgIG15ICRsYXN0X3NjX2xldmVsID0gJHNlbGYtPltfbGFzdF9zaWRlX2NvbW1lbnRfbGV2ZWxfXTsKICAgIGdvdG8gRk9SR0VUCiAgICAgIGlmICggJGxldmVsIDwgJGxhc3Rfc2NfbGV2ZWwKICAgICAgICAmJiAkaXNfY2xvc2luZ19ibG9ja190eXBleyBzdWJzdHIoICRyZmllbGRzLT5bMF0sIDAsIDEgKSB9ICk7CgogICAgIyBSVUxFIDQ6IEZvcmdldCB0aGUgbGFzdCBzaWRlIGNvbW1lbnQgaWYgdGhpcyBjb21tZW50IG1pZ2h0IGpvaW4gYSBjYWNoZWQKICAgICMgbGluZSAuLi4KICAgIGlmICggbXkgJGNhY2hlZF9saW5lX3R5cGUgPSBnZXRfY2FjaGVkX2xpbmVfdHlwZSgpICkgewoKICAgICAgICAjIC4uLiBvdGhlcndpc2Ugc2lkZSBjb21tZW50IGFsaWdubWVudCB3aWxsIGdldCBtZXNzZWQgdXAuCiAgICAgICAgIyBGb3IgZXhhbXBsZSwgaW4gdGhlIGZvbGxvd2luZyB0ZXN0IHNjcmlwdAogICAgICAgICMgd2l0aCB1c2luZyAncGVybHRpZHkgLXNjdCAtYWN0PTInLCB0aGUgbGFzdCBjb21tZW50IHdvdWxkIHRyeSB0bwogICAgICAgICMgYWxpZ24gd2l0aCB0aGUgcHJldmlvdXMgYW5kIHRoZW4gYmUgaW4gdGhlIHdyb25nIGNvbHVtbiB3aGVuCiAgICAgICAgIyB0aGUgbGluZXMgYXJlIGNvbWJpbmVkOgoKICAgICAgICAjIGZvcmVhY2ggJGxpbmUgKAogICAgICAgICMgICAgWzAsIDEsIDJdLCBbMywgNCwgNV0sIFs2LCA3LCA4XSwgICAgIyByb3dzCiAgICAgICAgIyAgICBbMCwgMywgNl0sIFsxLCA0LCA3XSwgWzIsIDUsIDhdLCAgICAjIGNvbHVtbnMKICAgICAgICAjICAgIFswLCA0LCA4XSwgWzIsIDQsIDZdCiAgICAgICAgIyAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGRpYWdvbmFscwogICAgICAgIGdvdG8gRk9SR0VUCiAgICAgICAgICBpZiAoICRjYWNoZWRfbGluZV90eXBlID09IDIgfHwgJGNhY2hlZF9saW5lX3R5cGUgPT0gNCApOwogICAgfQoKICAgICMgT3RoZXJ3aXNlLCBrZWVwIGl0IGFsaXZlCiAgICBnb3RvIEtFRVA7CgogIEZPUkdFVDoKICAgIHJldHVybiAwOwoKICBLRUVQOgogICAgcmV0dXJuIDE7Cn0KCnN1YiBhbGlnbl9zaWRlX2NvbW1lbnRzIHsKCiAgICBteSAoICRzZWxmLCAkcmxpbmVzLCAkcmdyb3VwcyApID0gQF87CgogICAgIyBBbGlnbiBhbnkgc2lkZSBjb21tZW50cyBpbiB0aGlzIGJhdGNoIG9mIGxpbmVzCgogICAgIyBHaXZlbjoKICAgICMgICRybGluZXMgIC0gdGhlIGxpbmVzCiAgICAjICAkcmdyb3VwcyAtIHRoZSBwYXJ0aXRpb24gb2YgdGhlIGxpbmVzIGludG8gZ3JvdXBzCiAgICAjCiAgICAjIFdlIHdpbGwgYmUgd29ya2luZyBncm91cC1ieS1ncm91cCBiZWNhdXNlIGFsbCBzaWRlIGNvbW1lbnRzCiAgICAjIChyZWFsIG9yIGZha2UpIGluIGVhY2ggZ3JvdXAgYXJlIGFscmVhZHkgYWxpZ25lZC4gU28gd2UganVzdCBoYXZlCiAgICAjIHRvIG1ha2UgYWxpZ25tZW50cyBiZXR3ZWVuIGdyb3VwcyB3aGVyZXZlciBwb3NzaWJsZS4KCiAgICAjIEFuIHVudXN1YWwgYXNwZWN0IGlzIHRoYXQgd2l0aGluIGVhY2ggZ3JvdXAgd2UgaGF2ZSBhbGlnbmVkIGJvdGggcmVhbAogICAgIyBhbmQgZmFrZSBzaWRlIGNvbW1lbnRzLiAgVGhpcyBoYXMgdGhlIGNvbnNlcXVlbmNlIHRoYXQgdGhlIGxlbmd0aHMgb2YKICAgICMgbG9uZyBsaW5lcyB3aXRob3V0IHJlYWwgc2lkZSBjb21tZW50cyBjYW4gY2F1c2UgJ3B1c2gnIGFsbCBzaWRlIGNvbW1lbnRzCiAgICAjIHRvIHRoZSByaWdodC4gIFRoaXMgc2VlbXMgdW51c3VhbCwgYnV0IHRlc3Rpbmcgd2l0aCBhbmQgd2l0aG91dCB0aGlzCiAgICAjIGZlYXR1cmUgc2hvd3MgdGhhdCBpdCBpcyB1c3VhbGx5IGJldHRlciB0aGlzIHdheS4gIE90aGV3aXNlLCBzaWRlCiAgICAjIGNvbW1lbnRzIGNhbiBiZSBoaWRkZW4gYmV0d2VlbiBsb25nIGxpbmVzIHdpdGhvdXQgc2lkZSBjb21tZW50cyBhbmQKICAgICMgdGh1cyBiZSBoYXJkZXIgdG8gcmVhZC4KCiAgICBteSAkZ3JvdXBfbGV2ZWwgICAgICAgID0gJHNlbGYtPltfZ3JvdXBfbGV2ZWxfXTsKICAgIG15ICRjb250aW51aW5nX3NjX2Zsb3cgPSAkc2VsZi0+W19sYXN0X3NpZGVfY29tbWVudF9sZW5ndGhfXSA+IDAKICAgICAgJiYgJGdyb3VwX2xldmVsID09ICRzZWxmLT5bX2xhc3RfbGV2ZWxfd3JpdHRlbl9dOwoKICAgICMgRmluZCBncm91cHMgd2l0aCBzaWRlIGNvbW1lbnRzLCBhbmQgcmVtZW1iZXIgdGhlIGZpcnN0IG5vbmJsYW5rIGNvbW1lbnQKICAgIG15ICRqX3NjX2JlZzsKICAgIG15IEB0b2RvOwogICAgbXkgJG5nID0gLTE7CiAgICBmb3JlYWNoIG15ICRpdGVtICggQHskcmdyb3Vwc30gKSB7CiAgICAgICAgJG5nKys7CiAgICAgICAgbXkgKCAkamJlZywgJGplbmQgKSA9IEB7JGl0ZW19OwogICAgICAgIGZvcmVhY2ggbXkgJGogKCAkamJlZyAuLiAkamVuZCApIHsKICAgICAgICAgICAgbXkgJGxpbmUgPSAkcmxpbmVzLT5bJGpdOwogICAgICAgICAgICBteSAkam1heCA9ICRsaW5lLT5nZXRfam1heCgpOwogICAgICAgICAgICBpZiAoICRsaW5lLT5nZXRfcmZpZWxkX2xlbmd0aHMoKS0+WyRqbWF4XSApIHsKCiAgICAgICAgICAgICAgICAjIHRoaXMgZ3JvdXAgaGFzIGEgbGluZSB3aXRoIGEgc2lkZSBjb21tZW50CiAgICAgICAgICAgICAgICBwdXNoIEB0b2RvLCAkbmc7CiAgICAgICAgICAgICAgICBpZiAoICFkZWZpbmVkKCRqX3NjX2JlZykgKSB7CiAgICAgICAgICAgICAgICAgICAgJGpfc2NfYmVnID0gJGo7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZG9uZSBpZiBubyBncm91cHMgd2l0aCBzaWRlIGNvbW1lbnRzCiAgICByZXR1cm4gdW5sZXNzIEB0b2RvOwoKICAgICMgQ291bnQgJG51bTUgPSBudW1iZXIgb2YgY29tbWVudHMgaW4gdGhlIDUgbGluZXMgYWZ0ZXIgdGhlIGZpcnN0IGNvbW1lbnQKICAgICMgVGhpcyBpcyBhbiBpbXBvcnRhbnQgZmFjdG9yIGluIGEgZGVjaXNpb24gZm9ybXVsYQogICAgbXkgJG51bTUgPSAxOwogICAgZm9yICggbXkgJGpqID0gJGpfc2NfYmVnICsgMSA7ICRqaiA8IEB7JHJsaW5lc30gOyAkamorKyApIHsKICAgICAgICBteSAkbGRpZmYgPSAkamogLSAkal9zY19iZWc7CiAgICAgICAgbGFzdCBpZiAoICRsZGlmZiA+IDUgKTsKICAgICAgICBteSAkbGluZSAgID0gJHJsaW5lcy0+WyRqal07CiAgICAgICAgbXkgJGptYXggICA9ICRsaW5lLT5nZXRfam1heCgpOwogICAgICAgIG15ICRzY19sZW4gPSAkbGluZS0+Z2V0X3JmaWVsZF9sZW5ndGhzKCktPlskam1heF07CiAgICAgICAgbmV4dCB1bmxlc3MgKCRzY19sZW4pOwogICAgICAgICRudW01Kys7CiAgICB9CgogICAgIyBGb3JnZXQgdGhlIG9sZCBzaWRlIGNvbW1lbnQgbG9jYXRpb24gaWYgbmVjZXNzYXJ5CiAgICBteSAkbGluZSA9ICRybGluZXMtPlskal9zY19iZWddOwogICAgbXkgJGxudW0gPQogICAgICAkal9zY19iZWcgKyAkc2VsZi0+W19maWxlX3dyaXRlcl9vYmplY3RfXS0+Z2V0X291dHB1dF9saW5lX251bWJlcigpOwogICAgbXkgJGtlZXBfaXQgPQogICAgICAkc2VsZi0+aXNfZ29vZF9zaWRlX2NvbW1lbnRfY29sdW1uKCAkbGluZSwgJGxudW0sICRncm91cF9sZXZlbCwgJG51bTUgKTsKICAgIG15ICRsYXN0X3NpZGVfY29tbWVudF9jb2x1bW4gPQogICAgICAka2VlcF9pdCA/ICRzZWxmLT5bX2xhc3Rfc2lkZV9jb21tZW50X2NvbHVtbl9dIDogMDsKCiAgICAjIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBncm91cHMgd2Ugd2lsbCBkbyB0d28gcGFzc2VzCiAgICAjIHNvIHRoYXQgd2UgY2FuIGZpbmQgYSBjb21tb24gYWxpZ25tZW50IGZvciBhbGwgZ3JvdXBzLgogICAgbXkgJE1BWF9QQVNTID0gQHRvZG8gPiAxID8gMiA6IDE7CgogICAgIyBMb29wIG92ZXIgcGFzc2VzCiAgICBteSAkbWF4X2NvbW1lbnRfY29sdW1uID0gJGxhc3Rfc2lkZV9jb21tZW50X2NvbHVtbjsKICAgIGZvciAoIG15ICRQQVNTID0gMSA7ICRQQVNTIDw9ICRNQVhfUEFTUyA7ICRQQVNTKysgKSB7CgogICAgICAgICMgSWYgdGhlcmUgYXJlIHR3byBwYXNzZXMsIHRoZW4gb24gdGhlIGxhc3QgcGFzcyBtYWtlIHRoZSBvbGQgY29sdW1uCiAgICAgICAgIyBlcXVhbCB0byB0aGUgbGFyZ2VzdCBvZiB0aGUgZ3JvdXAuICBUaGlzIHdpbGwgcmVzdWx0IGluIHRoZSBjb21tZW50cwogICAgICAgICMgYmVpbmcgYWxpZ25lZCBpZiBwb3NzaWJsZS4KICAgICAgICBpZiAoICRQQVNTID09ICRNQVhfUEFTUyApIHsKICAgICAgICAgICAgJGxhc3Rfc2lkZV9jb21tZW50X2NvbHVtbiA9ICRtYXhfY29tbWVudF9jb2x1bW47CiAgICAgICAgfQoKICAgICAgICAjIExvb3Agb3ZlciB0aGUgZ3JvdXBzIHdpdGggc2lkZSBjb21tZW50cwogICAgICAgIG15ICRjb2x1bW5fbGltaXQ7CiAgICAgICAgZm9yZWFjaCBteSAkbmcgKEB0b2RvKSB7CiAgICAgICAgICAgIG15ICggJGpiZWcsICRqZW5kICkgPSBAeyAkcmdyb3Vwcy0+WyRuZ10gfTsKCiAgICAgICAgICAgICMgTm90ZSB0aGF0IHNpbmNlIGFsbCBsaW5lcyBpbiBhIGdyb3VwIGhhdmUgY29tbW9uIGFsaWdubWVudHMsIHdlCiAgICAgICAgICAgICMganVzdCBoYXZlIHRvIHdvcmsgb24gb25lIG9mIHRoZSBsaW5lcyAodGhlIGZpcnN0IGxpbmUpLgogICAgICAgICAgICBteSAkbGluZSAgICAgICAgICAgICAgICAgICAgPSAkcmxpbmVzLT5bJGpiZWddOwogICAgICAgICAgICBteSAkam1heCAgICAgICAgICAgICAgICAgICAgPSAkbGluZS0+Z2V0X2ptYXgoKTsKICAgICAgICAgICAgbXkgJGlzX2hhbmdpbmdfc2lkZV9jb21tZW50ID0gJGxpbmUtPmdldF9pc19oYW5naW5nX3NpZGVfY29tbWVudCgpOwogICAgICAgICAgICBsYXN0CiAgICAgICAgICAgICAgaWYgKCAkUEFTUyA8ICRNQVhfUEFTUyAmJiAkaXNfaGFuZ2luZ19zaWRlX2NvbW1lbnQgKTsKCiAgICAgICAgICAgICMgdGhlIG1heGltdW0gc3BhY2Ugd2l0aG91dCBleGNlZWRpbmcgdGhlIGxpbmUgbGVuZ3RoOgogICAgICAgICAgICBteSAkYXZhaWwgPSAkbGluZS0+Z2V0X2F2YWlsYWJsZV9zcGFjZV9vbl9yaWdodCgpOwoKICAgICAgICAgICAgIyB0cnkgdG8gdXNlIHRoZSBwcmV2aW91cyBjb21tZW50IGNvbHVtbgogICAgICAgICAgICBteSAkc2lkZV9jb21tZW50X2NvbHVtbiA9ICRsaW5lLT5nZXRfY29sdW1uKCAkam1heCAtIDEgKTsKICAgICAgICAgICAgbXkgJG1vdmUgPSAkbGFzdF9zaWRlX2NvbW1lbnRfY29sdW1uIC0gJHNpZGVfY29tbWVudF9jb2x1bW47CgogICAgICAgICAgICAjIFJlbWVtYmVyIHRoZSBtYXhpbXVtIHBvc3NpYmxlIGNvbHVtbiBvZiB0aGUgZmlyc3QgbGluZSB3aXRoCiAgICAgICAgICAgICMgc2lkZSBjb21tZW50CiAgICAgICAgICAgIGlmICggIWRlZmluZWQoJGNvbHVtbl9saW1pdCkgKSB7CiAgICAgICAgICAgICAgICAkY29sdW1uX2xpbWl0ID0gJHNpZGVfY29tbWVudF9jb2x1bW4gKyAkYXZhaWw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG5leHQgaWYgKCAkam1heCA8PSAwICk7CgogICAgICAgICAgICAjIGJ1dCBpZiB0aGlzIGRvZXNuJ3Qgd29yaywgZ2l2ZSB1cCBhbmQgdXNlIHRoZSBtaW5pbXVtIHNwYWNlCiAgICAgICAgICAgIG15ICRtaW5fbW92ZSA9ICRzZWxmLT5bX3JPcHRzX21pbmltdW1fc3BhY2VfdG9fY29tbWVudF9dIC0gMTsKICAgICAgICAgICAgaWYgKCAkbW92ZSA+ICRhdmFpbCApIHsKICAgICAgICAgICAgICAgICRtb3ZlID0gJG1pbl9tb3ZlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGJ1dCB3ZSB3YW50IHNvbWUgbWluaW11bSBzcGFjZSB0byB0aGUgY29tbWVudAogICAgICAgICAgICBpZiAoICAgJG1vdmUgPj0gMAogICAgICAgICAgICAgICAgJiYgJGpfc2NfYmVnID09IDAKICAgICAgICAgICAgICAgICYmICRjb250aW51aW5nX3NjX2Zsb3cgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkbWluX21vdmUgPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJlbW92ZSBjb25zdHJhaW50cyBvbiBoYW5naW5nIHNpZGUgY29tbWVudHMKICAgICAgICAgICAgaWYgKCRpc19oYW5naW5nX3NpZGVfY29tbWVudCkgeyAkbWluX21vdmUgPSAwIH0KCiAgICAgICAgICAgIGlmICggJG1vdmUgPCAkbWluX21vdmUgKSB7CiAgICAgICAgICAgICAgICAkbW92ZSA9ICRtaW5fbW92ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkb24ndCBleGNlZWQgdGhlIGF2YWlsYWJsZSBzcGFjZQogICAgICAgICAgICBpZiAoICRtb3ZlID4gJGF2YWlsICkgeyAkbW92ZSA9ICRhdmFpbCB9CgogICAgICAgICAgICAjIFdlIGNhbiBvbmx5IGluY3JlYXNlIHNwYWNlLCBuZXZlciBkZWNyZWFzZS4KICAgICAgICAgICAgaWYgKCAkbW92ZSA8IDAgKSB7ICRtb3ZlID0gMCB9CgogICAgICAgICAgICAjIERpc2NvdmVyIHRoZSBsYXJnZXN0IGNvbHVtbiBvbiB0aGUgcHJlbGltaW5hcnkgIHBhc3MKICAgICAgICAgICAgaWYgKCAkUEFTUyA8ICRNQVhfUEFTUyApIHsKICAgICAgICAgICAgICAgIG15ICRjb2wgPSAkbGluZS0+Z2V0X2NvbHVtbiggJGptYXggLSAxICkgKyAkbW92ZTsKCiAgICAgICAgICAgICAgICAjIGJ1dCBpZ25vcmUgY29sdW1ucyB0b28gbGFyZ2UgZm9yIHRoZSBzdGFydGluZyBsaW5lCiAgICAgICAgICAgICAgICBpZiAoICRjb2wgPiAkbWF4X2NvbW1lbnRfY29sdW1uICYmICRjb2wgPCAkY29sdW1uX2xpbWl0ICkgewogICAgICAgICAgICAgICAgICAgICRtYXhfY29tbWVudF9jb2x1bW4gPSAkY29sOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIE1ha2UgdGhlIGNoYW5nZXMgb24gdGhlIGZpbmFsIHBhc3MKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkbGluZS0+aW5jcmVhc2VfZmllbGRfd2lkdGgoICRqbWF4IC0gMSwgJG1vdmUgKTsKCiAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIHRoaXMgY29sdW1uIGZvciB0aGUgbmV4dCBncm91cAogICAgICAgICAgICAgICAgJGxhc3Rfc2lkZV9jb21tZW50X2NvbHVtbiA9ICRsaW5lLT5nZXRfY29sdW1uKCAkam1heCAtIDEgKTsKICAgICAgICAgICAgfQogICAgICAgIH0gIyMgZW5kIGxvb3Agb3ZlciBncm91cHMKICAgIH0gIyMgZW5kIGxvb3Agb3ZlciBwYXNzZXMKCiAgICAjIEZpbmQgdGhlIGxhc3Qgc2lkZSBjb21tZW50CiAgICBteSAkal9zY19sYXN0OwogICAgbXkgJG5nX2xhc3QgPSAkdG9kb1stMV07CiAgICBteSAoICRqYmVnLCAkamVuZCApID0gQHsgJHJncm91cHMtPlskbmdfbGFzdF0gfTsKICAgIGZvciAoIG15ICRqaiA9ICRqZW5kIDsgJGpqID49ICRqYmVnIDsgJGpqLS0gKSB7CiAgICAgICAgbXkgJGxpbmUgPSAkcmxpbmVzLT5bJGpqXTsKICAgICAgICBteSAkam1heCA9ICRsaW5lLT5nZXRfam1heCgpOwogICAgICAgIGlmICggJGxpbmUtPmdldF9yZmllbGRfbGVuZ3RocygpLT5bJGptYXhdICkgewogICAgICAgICAgICAkal9zY19sYXN0ID0gJGpqOwogICAgICAgICAgICBsYXN0OwogICAgICAgIH0KICAgIH0KCiAgICAjIFNhdmUgZmluYWwgc2lkZSBjb21tZW50IGluZm8gZm9yIHBvc3NpYmxlIHVzZSBieSB0aGUgbmV4dCBiYXRjaAogICAgaWYgKCBkZWZpbmVkKCRqX3NjX2xhc3QpICkgewogICAgICAgIG15ICRsaW5lX251bWJlciA9CiAgICAgICAgICAkc2VsZi0+W19maWxlX3dyaXRlcl9vYmplY3RfXS0+Z2V0X291dHB1dF9saW5lX251bWJlcigpICsgJGpfc2NfbGFzdDsKICAgICAgICAkc2VsZi0+W19sYXN0X3NpZGVfY29tbWVudF9jb2x1bW5fXSAgICAgID0gJGxhc3Rfc2lkZV9jb21tZW50X2NvbHVtbjsKICAgICAgICAkc2VsZi0+W19sYXN0X3NpZGVfY29tbWVudF9saW5lX251bWJlcl9dID0gJGxpbmVfbnVtYmVyOwogICAgICAgICRzZWxmLT5bX2xhc3Rfc2lkZV9jb21tZW50X2xldmVsX10gICAgICAgPSAkZ3JvdXBfbGV2ZWw7CiAgICB9CiAgICByZXR1cm47Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBDT0RFIFNFQ1RJT04gNjogT3V0cHV0IFN0ZXAgQQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpzdWIgdmFsaWduX291dHB1dF9zdGVwX0EgewoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBUaGlzIGlzIFN0ZXAgQSBpbiB3cml0aW5nIHZlcnRpY2FsbHkgYWxpZ25lZCBsaW5lcy4KICAgICMgVGhlIGxpbmUgaXMgcHJlcGFyZWQgYWNjb3JkaW5nIHRvIHRoZSBhbGlnbm1lbnRzIHdoaWNoIGhhdmUKICAgICMgYmVlbiBmb3VuZC4gVGhlbiBpdCBpcyBzaGlwcGVkIHRvIHRoZSBuZXh0IHN0ZXAuCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICBteSAoICRzZWxmLCAkcmlucHV0X2hhc2ggKSA9IEBfOwoKICAgIG15ICRsaW5lICAgICAgICAgICAgICAgICA9ICRyaW5wdXRfaGFzaC0+e2xpbmV9OwogICAgbXkgJG1pbl9jaV9nYXAgICAgICAgICAgID0gJHJpbnB1dF9oYXNoLT57bWluX2NpX2dhcH07CiAgICBteSAkZG9fbm90X2FsaWduICAgICAgICAgPSAkcmlucHV0X2hhc2gtPntkb19ub3RfYWxpZ259OwogICAgbXkgJGdyb3VwX2xlYWRlcl9sZW5ndGggID0gJHJpbnB1dF9oYXNoLT57Z3JvdXBfbGVhZGVyX2xlbmd0aH07CiAgICBteSAkZXh0cmFfbGVhZGluZ19zcGFjZXMgPSAkcmlucHV0X2hhc2gtPntleHRyYV9sZWFkaW5nX3NwYWNlc307CiAgICBteSAkbGV2ZWwgICAgICAgICAgICAgICAgPSAkcmlucHV0X2hhc2gtPntsZXZlbH07CgogICAgbXkgJHJmaWVsZHMgICAgICAgICAgICAgICAgICAgPSAkbGluZS0+Z2V0X3JmaWVsZHMoKTsKICAgIG15ICRyZmllbGRfbGVuZ3RocyAgICAgICAgICAgID0gJGxpbmUtPmdldF9yZmllbGRfbGVuZ3RocygpOwogICAgbXkgJGxlYWRpbmdfc3BhY2VfY291bnQgICAgICAgPSAkbGluZS0+Z2V0X2xlYWRpbmdfc3BhY2VfY291bnQoKTsKICAgIG15ICRvdXRkZW50X2xvbmdfbGluZXMgICAgICAgID0gJGxpbmUtPmdldF9vdXRkZW50X2xvbmdfbGluZXMoKTsKICAgIG15ICRtYXhpbXVtX2ZpZWxkX2luZGV4ICAgICAgID0gJGxpbmUtPmdldF9qbWF4KCk7CiAgICBteSAkcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFncyA9ICRsaW5lLT5nZXRfcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFncygpOwogICAgbXkgJEtlbmQgICAgICAgICAgICAgICAgICAgICAgPSAkbGluZS0+Z2V0X0tlbmQoKTsKCiAgICAjIGFkZCBhbnkgZXh0cmEgc3BhY2VzCiAgICBpZiAoICRsZWFkaW5nX3NwYWNlX2NvdW50ID4gJGdyb3VwX2xlYWRlcl9sZW5ndGggKSB7CiAgICAgICAgJGxlYWRpbmdfc3BhY2VfY291bnQgKz0gJG1pbl9jaV9nYXA7CiAgICB9CgogICAgbXkgJHN0ciAgICAgPSAkcmZpZWxkcy0+WzBdOwogICAgbXkgJHN0cl9sZW4gPSAkcmZpZWxkX2xlbmd0aHMtPlswXTsKCiAgICAjIGxvb3AgdG8gY29uY2F0ZW5hdGUgYWxsIGZpZWxkcyBvZiB0aGlzIGxpbmUgYW5kIG5lZWRlZCBwYWRkaW5nCiAgICBteSAkdG90YWxfcGFkX2NvdW50ID0gMDsKICAgIGZvciBteSAkaiAoIDEgLi4gJG1heGltdW1fZmllbGRfaW5kZXggKSB7CgogICAgICAgICMgc2tpcCB6ZXJvLWxlbmd0aCBzaWRlIGNvbW1lbnRzCiAgICAgICAgbGFzdAogICAgICAgICAgaWYgKAogICAgICAgICAgICAoICRqID09ICRtYXhpbXVtX2ZpZWxkX2luZGV4ICkKICAgICAgICAgICAgJiYgKCAhZGVmaW5lZCggJHJmaWVsZHMtPlskal0gKQogICAgICAgICAgICAgICAgfHwgKCAkcmZpZWxkX2xlbmd0aHMtPlskal0gPT0gMCApICkKICAgICAgICAgICk7CgogICAgICAgICMgY29tcHV0ZSBzcGFjZXMgb2YgcGFkZGluZyBiZWZvcmUgdGhpcyBmaWVsZAogICAgICAgIG15ICRjb2wgPSAkbGluZS0+Z2V0X2NvbHVtbiggJGogLSAxICk7CiAgICAgICAgbXkgJHBhZCA9ICRjb2wgLSAoICRzdHJfbGVuICsgJGxlYWRpbmdfc3BhY2VfY291bnQgKTsKCiAgICAgICAgaWYgKCRkb19ub3RfYWxpZ24pIHsKICAgICAgICAgICAgJHBhZCA9CiAgICAgICAgICAgICAgKCAkaiA8ICRtYXhpbXVtX2ZpZWxkX2luZGV4ICkKICAgICAgICAgICAgICA/IDAKICAgICAgICAgICAgICA6ICRzZWxmLT5bX3JPcHRzX21pbmltdW1fc3BhY2VfdG9fY29tbWVudF9dIC0gMTsKICAgICAgICB9CgogICAgICAgICMgaWYgdGhlIC1mcHNjIGZsYWcgaXMgc2V0LCBtb3ZlIHRoZSBzaWRlIGNvbW1lbnQgdG8gdGhlIHNlbGVjdGVkCiAgICAgICAgIyBjb2x1bW4gaWYgYW5kIG9ubHkgaWYgaXQgaXMgcG9zc2libGUsIGlnbm9yaW5nIGNvbnN0cmFpbnRzIG9uCiAgICAgICAgIyBsaW5lIGxlbmd0aCBhbmQgbWluaW11bSBzcGFjZSB0byBjb21tZW50CiAgICAgICAgaWYgKCAgICRzZWxmLT5bX3JPcHRzX2ZpeGVkX3Bvc2l0aW9uX3NpZGVfY29tbWVudF9dCiAgICAgICAgICAgICYmICRqID09ICRtYXhpbXVtX2ZpZWxkX2luZGV4ICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRuZXdwYWQgPQogICAgICAgICAgICAgICRwYWQgKyAkc2VsZi0+W19yT3B0c19maXhlZF9wb3NpdGlvbl9zaWRlX2NvbW1lbnRfXSAtICRjb2wgLSAxOwogICAgICAgICAgICBpZiAoICRuZXdwYWQgPj0gMCApIHsgJHBhZCA9ICRuZXdwYWQ7IH0KICAgICAgICB9CgogICAgICAgICMgYWNjdW11bGF0ZSB0aGUgcGFkZGluZwogICAgICAgIGlmICggJHBhZCA+IDAgKSB7ICR0b3RhbF9wYWRfY291bnQgKz0gJHBhZDsgfQoKICAgICAgICAjIG9ubHkgYWRkIHBhZGRpbmcgd2hlbiB3ZSBoYXZlIGEgZmluaXRlIGZpZWxkOwogICAgICAgICMgdGhpcyBhdm9pZHMgZXh0cmEgdGVybWluYWwgc3BhY2VzIGlmIHdlIGhhdmUgZW1wdHkgZmllbGRzCiAgICAgICAgaWYgKCAkcmZpZWxkX2xlbmd0aHMtPlskal0gPiAwICkgewogICAgICAgICAgICAkc3RyIC49ICcgJyB4ICR0b3RhbF9wYWRfY291bnQ7CiAgICAgICAgICAgICRzdHJfbGVuICs9ICR0b3RhbF9wYWRfY291bnQ7CiAgICAgICAgICAgICR0b3RhbF9wYWRfY291bnQgPSAwOwogICAgICAgICAgICAkc3RyIC49ICRyZmllbGRzLT5bJGpdOwogICAgICAgICAgICAkc3RyX2xlbiArPSAkcmZpZWxkX2xlbmd0aHMtPlskal07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkdG90YWxfcGFkX2NvdW50ID0gMDsKICAgICAgICB9CiAgICB9CgogICAgbXkgJHNpZGVfY29tbWVudF9sZW5ndGggPSAkcmZpZWxkX2xlbmd0aHMtPlskbWF4aW11bV9maWVsZF9pbmRleF07CgogICAgIyBzaGlwIHRoaXMgbGluZSBvZmYKICAgICRzZWxmLT52YWxpZ25fb3V0cHV0X3N0ZXBfQigKICAgICAgICB7CiAgICAgICAgICAgIGxlYWRpbmdfc3BhY2VfY291bnQgPT4gJGxlYWRpbmdfc3BhY2VfY291bnQgKyAkZXh0cmFfbGVhZGluZ19zcGFjZXMsCiAgICAgICAgICAgIGxpbmUgICAgICAgICAgICAgICAgPT4gJHN0ciwKICAgICAgICAgICAgbGluZV9sZW5ndGggICAgICAgICA9PiAkc3RyX2xlbiwKICAgICAgICAgICAgc2lkZV9jb21tZW50X2xlbmd0aCA9PiAkc2lkZV9jb21tZW50X2xlbmd0aCwKICAgICAgICAgICAgb3V0ZGVudF9sb25nX2xpbmVzICA9PiAkb3V0ZGVudF9sb25nX2xpbmVzLAogICAgICAgICAgICBydmVydGljYWxfdGlnaHRuZXNzX2ZsYWdzID0+ICRydmVydGljYWxfdGlnaHRuZXNzX2ZsYWdzLAogICAgICAgICAgICBsZXZlbCAgICAgICAgICAgICAgICAgICAgID0+ICRsZXZlbCwKICAgICAgICAgICAgS2VuZCAgICAgICAgICAgICAgICAgICAgICA9PiAkS2VuZCwKICAgICAgICB9CiAgICApOwogICAgcmV0dXJuOwp9CgpzdWIgY29tYmluZV9maWVsZHMgewoKICAgICMgV2UgaGF2ZSBhIGdyb3VwIG9mIHR3byBsaW5lcyBmb3Igd2hpY2ggd2UgZG8gbm90IHdhbnQgdG8gYWxpZ24gdG9rZW5zCiAgICAjIGJldHdlZW4gaW5kZXggJGltYXhfYWxpZ24gYW5kIHRoZSBzaWRlIGNvbW1lbnQuICBTbyB3ZSB3aWxsIGRlbGV0ZSBmaWVsZHMKICAgICMgYmV0d2VlbiAkaW1heF9hbGlnbiBhbmQgdGhlIHNpZGUgY29tbWVudC4gIEFsaWdubWVudHMgaGF2ZSBhbHJlYWR5CiAgICAjIGJlZW4gc2V0IHNvIHdlIGhhdmUgdG8gYWRqdXN0IHRoZW0uCgogICAgbXkgKCAkbGluZV8wLCAkbGluZV8xLCAkaW1heF9hbGlnbiApID0gQF87CgogICAgaWYgKCAhZGVmaW5lZCgkaW1heF9hbGlnbikgKSB7ICRpbWF4X2FsaWduID0gLTEgfQoKICAgICMgRmlyc3QgZGVsZXRlIHRoZSB1bndhbnRlZCB0b2tlbnMKICAgIG15ICRqbWF4X29sZCAgICAgICA9ICRsaW5lXzAtPmdldF9qbWF4KCk7CiAgICBteSBAb2xkX2FsaWdubWVudHMgPSAkbGluZV8wLT5nZXRfYWxpZ25tZW50cygpOwogICAgbXkgQGlkZWwgICAgICAgICAgID0gKCAkaW1heF9hbGlnbiArIDEgLi4gJGptYXhfb2xkIC0gMiApOwoKICAgIHJldHVybiB1bmxlc3MgKEBpZGVsKTsKCiAgICBmb3JlYWNoIG15ICRsaW5lICggJGxpbmVfMCwgJGxpbmVfMSApIHsKICAgICAgICBkZWxldGVfc2VsZWN0ZWRfdG9rZW5zKCAkbGluZSwgXEBpZGVsICk7CiAgICB9CgogICAgIyBOb3cgYWRqdXN0IHRoZSBhbGlnbm1lbnRzLiAgTm90ZSB0aGF0IHRoZSBzaWRlIGNvbW1lbnQgYWxpZ25tZW50CiAgICAjIGlzIGFsd2F5cyBhdCBqbWF4LTEsIGFuZCB0aGVyZSBpcyBhbiBlbmRpbmcgYWxpZ25tZW50IGF0IGptYXguCiAgICBteSBAbmV3X2FsaWdubWVudHM7CiAgICBpZiAoICRpbWF4X2FsaWduID49IDAgKSB7CiAgICAgICAgQG5ld19hbGlnbm1lbnRzWyAwIC4uICRpbWF4X2FsaWduIF0gPQogICAgICAgICAgQG9sZF9hbGlnbm1lbnRzWyAwIC4uICRpbWF4X2FsaWduIF07CiAgICB9CgogICAgbXkgJGptYXhfbmV3ID0gJGxpbmVfMC0+Z2V0X2ptYXgoKTsKCiAgICAkbmV3X2FsaWdubWVudHNbICRqbWF4X25ldyAtIDEgXSA9ICRvbGRfYWxpZ25tZW50c1sgJGptYXhfb2xkIC0gMSBdOwogICAgJG5ld19hbGlnbm1lbnRzWyRqbWF4X25ld10gPSAkb2xkX2FsaWdubWVudHNbJGptYXhfb2xkXTsKICAgICRsaW5lXzAtPnNldF9hbGlnbm1lbnRzKEBuZXdfYWxpZ25tZW50cyk7CiAgICAkbGluZV8xLT5zZXRfYWxpZ25tZW50cyhAbmV3X2FsaWdubWVudHMpOwogICAgcmV0dXJuOwp9CgpzdWIgZ2V0X291dHB1dF9saW5lX251bWJlciB7CgogICAgIyBUaGUgb3V0cHV0IGxpbmUgbnVtYmVyIHJlcG9ydGVkIHRvIGEgY2FsbGVyID0KICAgICMgdGhlIG51bWJlciBvZiBpdGVtcyBzdGlsbCBpbiB0aGUgYnVmZmVyICsKICAgICMgdGhlIG51bWJlciBvZiBpdGVtcyB3cml0dGVuLgogICAgcmV0dXJuICRfWzBdLT5ncm91cF9saW5lX2NvdW50KCkgKwogICAgICAkX1swXS0+W19maWxlX3dyaXRlcl9vYmplY3RfXS0+Z2V0X291dHB1dF9saW5lX251bWJlcigpOwp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQ09ERSBTRUNUSU9OIDc6IE91dHB1dCBTdGVwIEIKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKeyAgICAjIyBjbG9zdXJlIGZvciBzdWIgdmFsaWduX291dHB1dF9zdGVwX0IKCiAgICAjIFRoZXNlIGFyZSB2YWx1ZXMgZm9yIGEgY2FjaGUgdXNlZCBieSB2YWxpZ25fb3V0cHV0X3N0ZXBfQi4KICAgIG15ICRjYWNoZWRfbGluZV90ZXh0OwogICAgbXkgJGNhY2hlZF9saW5lX3RleHRfbGVuZ3RoOwogICAgbXkgJGNhY2hlZF9saW5lX3R5cGU7CiAgICBteSAkY2FjaGVkX2xpbmVfZmxhZzsKICAgIG15ICRjYWNoZWRfc2Vxbm87CiAgICBteSAkY2FjaGVkX2xpbmVfdmFsaWQ7CiAgICBteSAkY2FjaGVkX2xpbmVfbGVhZGluZ19zcGFjZV9jb3VudDsKICAgIG15ICRjYWNoZWRfc2Vxbm9fc3RyaW5nOwogICAgbXkgJGNhY2hlZF9saW5lX0tlbmQ7CiAgICBteSAkc2Vxbm9fc3RyaW5nOwogICAgbXkgJGxhc3Rfbm9uYmxhbmtfc2Vxbm9fc3RyaW5nOwoKICAgIHN1YiBnZXRfc2Vxbm9fc3RyaW5nIHsKICAgICAgICByZXR1cm4gJHNlcW5vX3N0cmluZzsKICAgIH0KCiAgICBzdWIgZ2V0X2xhc3Rfbm9uYmxhbmtfc2Vxbm9fc3RyaW5nIHsKICAgICAgICByZXR1cm4gJGxhc3Rfbm9uYmxhbmtfc2Vxbm9fc3RyaW5nOwogICAgfQoKICAgIHN1YiBzZXRfbGFzdF9ub25ibGFua19zZXFub19zdHJpbmcgewogICAgICAgIG15ICgkdmFsKSA9IEBfOwogICAgICAgICRsYXN0X25vbmJsYW5rX3NlcW5vX3N0cmluZyA9ICR2YWw7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBnZXRfY2FjaGVkX2xpbmVfZmxhZyB7CiAgICAgICAgcmV0dXJuICRjYWNoZWRfbGluZV9mbGFnOwogICAgfQoKICAgIHN1YiBnZXRfY2FjaGVkX2xpbmVfdHlwZSB7CiAgICAgICAgcmV0dXJuICRjYWNoZWRfbGluZV90eXBlOwogICAgfQoKICAgIHN1YiBzZXRfY2FjaGVkX2xpbmVfdmFsaWQgewogICAgICAgIG15ICgkdmFsKSA9IEBfOwogICAgICAgICRjYWNoZWRfbGluZV92YWxpZCA9ICR2YWw7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBnZXRfY2FjaGVkX3NlcW5vIHsKICAgICAgICByZXR1cm4gJGNhY2hlZF9zZXFubzsKICAgIH0KCiAgICBzdWIgaW5pdGlhbGl6ZV9zdGVwX0JfY2FjaGUgewoKICAgICAgICAjIHZhbGlnbl9vdXRwdXRfc3RlcF9CIGNhY2hlOgogICAgICAgICRjYWNoZWRfbGluZV90ZXh0ICAgICAgICAgICAgICAgID0gIiI7CiAgICAgICAgJGNhY2hlZF9saW5lX3RleHRfbGVuZ3RoICAgICAgICAgPSAwOwogICAgICAgICRjYWNoZWRfbGluZV90eXBlICAgICAgICAgICAgICAgID0gMDsKICAgICAgICAkY2FjaGVkX2xpbmVfZmxhZyAgICAgICAgICAgICAgICA9IDA7CiAgICAgICAgJGNhY2hlZF9zZXFubyAgICAgICAgICAgICAgICAgICAgPSAwOwogICAgICAgICRjYWNoZWRfbGluZV92YWxpZCAgICAgICAgICAgICAgID0gMDsKICAgICAgICAkY2FjaGVkX2xpbmVfbGVhZGluZ19zcGFjZV9jb3VudCA9IDA7CiAgICAgICAgJGNhY2hlZF9zZXFub19zdHJpbmcgICAgICAgICAgICAgPSAiIjsKICAgICAgICAkY2FjaGVkX2xpbmVfS2VuZCAgICAgICAgICAgICAgICA9IHVuZGVmOwoKICAgICAgICAjIFRoZXNlIHZhcnMgaG9sZCBhIHN0cmluZyBvZiBzZXF1ZW5jZSBudW1iZXJzIGpvaW5lZCB0b2dldGhlciB1c2VkIGJ5CiAgICAgICAgIyB0aGUgY2FjaGUKICAgICAgICAkc2Vxbm9fc3RyaW5nICAgICAgICAgICAgICAgPSAiIjsKICAgICAgICAkbGFzdF9ub25ibGFua19zZXFub19zdHJpbmcgPSAiIjsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3ViIF9mbHVzaF9jYWNoZSB7CiAgICAgICAgbXkgKCRzZWxmKSA9IEBfOwogICAgICAgIGlmICgkY2FjaGVkX2xpbmVfdHlwZSkgewogICAgICAgICAgICAkc2Vxbm9fc3RyaW5nID0gJGNhY2hlZF9zZXFub19zdHJpbmc7CiAgICAgICAgICAgICRzZWxmLT52YWxpZ25fb3V0cHV0X3N0ZXBfQygKICAgICAgICAgICAgICAgICRjYWNoZWRfbGluZV90ZXh0LAogICAgICAgICAgICAgICAgJGNhY2hlZF9saW5lX2xlYWRpbmdfc3BhY2VfY291bnQsCiAgICAgICAgICAgICAgICAkc2VsZi0+W19sYXN0X2xldmVsX3dyaXR0ZW5fXSwKICAgICAgICAgICAgICAgICRjYWNoZWRfbGluZV9LZW5kLAogICAgICAgICAgICApOwogICAgICAgICAgICAkY2FjaGVkX2xpbmVfdHlwZSAgICAgICAgPSAwOwogICAgICAgICAgICAkY2FjaGVkX2xpbmVfdGV4dCAgICAgICAgPSAiIjsKICAgICAgICAgICAgJGNhY2hlZF9saW5lX3RleHRfbGVuZ3RoID0gMDsKICAgICAgICAgICAgJGNhY2hlZF9zZXFub19zdHJpbmcgICAgID0gIiI7CiAgICAgICAgICAgICRjYWNoZWRfbGluZV9LZW5kICAgICAgICA9IHVuZGVmOwogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3ViIHZhbGlnbl9vdXRwdXRfc3RlcF9CIHsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBUaGlzIGlzIFN0ZXAgQiBpbiB3cml0aW5nIHZlcnRpY2FsbHkgYWxpZ25lZCBsaW5lcy4KICAgICAgICAjIFZlcnRpY2FsIHRpZ2h0bmVzcyBpcyBhcHBsaWVkIGFjY29yZGluZyB0byBwcmVzZXQgZmxhZ3MuCiAgICAgICAgIyBJbiBwYXJ0aWN1bGFyIHRoaXMgcm91dGluZSBoYW5kbGVzIHN0YWNraW5nIG9mIG9wZW5pbmcKICAgICAgICAjIGFuZCBjbG9zaW5nIHRva2Vucy4KICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgbXkgKCAkc2VsZiwgJHJpbnB1dCApID0gQF87CgogICAgICAgIG15ICRsZWFkaW5nX3NwYWNlX2NvdW50ICAgICAgID0gJHJpbnB1dC0+e2xlYWRpbmdfc3BhY2VfY291bnR9OwogICAgICAgIG15ICRzdHIgICAgICAgICAgICAgICAgICAgICAgID0gJHJpbnB1dC0+e2xpbmV9OwogICAgICAgIG15ICRzdHJfbGVuZ3RoICAgICAgICAgICAgICAgID0gJHJpbnB1dC0+e2xpbmVfbGVuZ3RofTsKICAgICAgICBteSAkc2lkZV9jb21tZW50X2xlbmd0aCAgICAgICA9ICRyaW5wdXQtPntzaWRlX2NvbW1lbnRfbGVuZ3RofTsKICAgICAgICBteSAkb3V0ZGVudF9sb25nX2xpbmVzICAgICAgICA9ICRyaW5wdXQtPntvdXRkZW50X2xvbmdfbGluZXN9OwogICAgICAgIG15ICRydmVydGljYWxfdGlnaHRuZXNzX2ZsYWdzID0gJHJpbnB1dC0+e3J2ZXJ0aWNhbF90aWdodG5lc3NfZmxhZ3N9OwogICAgICAgIG15ICRsZXZlbCAgICAgICAgICAgICAgICAgICAgID0gJHJpbnB1dC0+e2xldmVsfTsKICAgICAgICBteSAkS2VuZCAgICAgICAgICAgICAgICAgICAgICA9ICRyaW5wdXQtPntLZW5kfTsKCiAgICAgICAgbXkgJGxhc3RfbGV2ZWxfd3JpdHRlbiA9ICRzZWxmLT5bX2xhc3RfbGV2ZWxfd3JpdHRlbl9dOwoKICAgICAgICAjIFVzZWZ1bCAtZ2NzIHRlc3QgY2FzZXMgZm9yIHdpZGUgY2hhcmFjdGVycyBhcmUKICAgICAgICAjIHBlcmw1MjcvKG1ldGhvZC50LjIsIHJlZ19tZXNnLnQsIG1pbWUtaGVhZGVyLnQpCgogICAgICAgICMgaGFuZGxlIG91dGRlbnRpbmcgb2YgbG9uZyBsaW5lczoKICAgICAgICBpZiAoJG91dGRlbnRfbG9uZ19saW5lcykgewogICAgICAgICAgICBteSAkZXhjZXNzID0KICAgICAgICAgICAgICAkc3RyX2xlbmd0aCAtCiAgICAgICAgICAgICAgJHNpZGVfY29tbWVudF9sZW5ndGggKwogICAgICAgICAgICAgICRsZWFkaW5nX3NwYWNlX2NvdW50IC0KICAgICAgICAgICAgICAkc2VsZi0+bWF4aW11bV9saW5lX2xlbmd0aF9mb3JfbGV2ZWwoJGxldmVsKTsKICAgICAgICAgICAgaWYgKCAkZXhjZXNzID4gMCApIHsKICAgICAgICAgICAgICAgICRsZWFkaW5nX3NwYWNlX2NvdW50ID0gMDsKICAgICAgICAgICAgICAgIG15ICRmaWxlX3dyaXRlcl9vYmplY3QgPSAkc2VsZi0+W19maWxlX3dyaXRlcl9vYmplY3RfXTsKICAgICAgICAgICAgICAgIG15ICRsYXN0X291dGRlbnRlZF9saW5lX2F0ID0KICAgICAgICAgICAgICAgICAgJGZpbGVfd3JpdGVyX29iamVjdC0+Z2V0X291dHB1dF9saW5lX251bWJlcigpOwogICAgICAgICAgICAgICAgJHNlbGYtPltfbGFzdF9vdXRkZW50ZWRfbGluZV9hdF9dID0gJGxhc3Rfb3V0ZGVudGVkX2xpbmVfYXQ7CgogICAgICAgICAgICAgICAgbXkgJG91dGRlbnRlZF9saW5lX2NvdW50ID0gJHNlbGYtPltfb3V0ZGVudGVkX2xpbmVfY291bnRfXTsKICAgICAgICAgICAgICAgIHVubGVzcyAoJG91dGRlbnRlZF9saW5lX2NvdW50KSB7CiAgICAgICAgICAgICAgICAgICAgJHNlbGYtPltfZmlyc3Rfb3V0ZGVudGVkX2xpbmVfYXRfXSA9CiAgICAgICAgICAgICAgICAgICAgICAkbGFzdF9vdXRkZW50ZWRfbGluZV9hdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRvdXRkZW50ZWRfbGluZV9jb3VudCsrOwogICAgICAgICAgICAgICAgJHNlbGYtPltfb3V0ZGVudGVkX2xpbmVfY291bnRfXSA9ICRvdXRkZW50ZWRfbGluZV9jb3VudDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBNYWtlIHByZWxpbWluYXJ5IGxlYWRpbmcgd2hpdGVzcGFjZS4gIEl0IGNvdWxkIGdldCBjaGFuZ2VkCiAgICAgICAgIyBsYXRlciBieSBlbnRhYmJpbmcsIHNvIHdlIGhhdmUgdG8ga2VlcCB0cmFjayBvZiBhbnkgY2hhbmdlcwogICAgICAgICMgdG8gdGhlIGxlYWRpbmdfc3BhY2VfY291bnQgZnJvbSBoZXJlIG9uLgogICAgICAgIG15ICRsZWFkaW5nX3N0cmluZyA9CiAgICAgICAgICAkbGVhZGluZ19zcGFjZV9jb3VudCA+IDAgPyAoICcgJyB4ICRsZWFkaW5nX3NwYWNlX2NvdW50ICkgOiAiIjsKICAgICAgICBteSAkbGVhZGluZ19zdHJpbmdfbGVuZ3RoID0gbGVuZ3RoKCRsZWFkaW5nX3N0cmluZyk7CgogICAgICAgICMgVW5wYWNrIGFueSByZWNvbWJpbmF0aW9uIGRhdGE7IGl0IHdhcyBwYWNrZWQgYnkKICAgICAgICAjIHN1YiBzZW5kX2xpbmVzX3RvX3ZlcnRpY2FsX2FsaWduZXIuIENvbnRlbnRzOgogICAgICAgICMKICAgICAgICAjICAgWzBdIHR5cGU6IDE9b3BlbmluZyBub24tYmxvY2sgICAgMj1jbG9zaW5nIG5vbi1ibG9jawogICAgICAgICMgICAgICAgICAgICAgMz1vcGVuaW5nIGJsb2NrIGJyYWNlICA0PWNsb3NpbmcgYmxvY2sgYnJhY2UKICAgICAgICAjICAgWzFdIGZsYWc6IGlmIG9wZW5pbmc6IDE9bm8gbXVsdGlwbGUgc3RlcHMsIDI9bXVsdGlwbGUgc3RlcHMgb2sKICAgICAgICAjICAgICAgICAgICAgIGlmIGNsb3Npbmc6IHNwYWNlcyBvZiBwYWRkaW5nIHRvIHVzZQogICAgICAgICMgICBbMl0gc2VxdWVuY2UgbnVtYmVyIG9mIGNvbnRhaW5lcgogICAgICAgICMgICBbM10gdmFsaWQgZmxhZzogZG8gbm90IGFwcGVuZCBpZiB0aGlzIGZsYWcgaXMgZmFsc2UKICAgICAgICAjCiAgICAgICAgbXkgKCAkb3Blbl9vcl9jbG9zZSwgJHRpZ2h0bmVzc19mbGFnLCAkc2Vxbm8sICR2YWxpZCwgJHNlcW5vX2JlZywKICAgICAgICAgICAgJHNlcW5vX2VuZCApOwogICAgICAgIGlmICgkcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFncykgewogICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAkb3Blbl9vcl9jbG9zZSwgJHRpZ2h0bmVzc19mbGFnLCAkc2Vxbm8sICR2YWxpZCwgJHNlcW5vX2JlZywKICAgICAgICAgICAgICAgICRzZXFub19lbmQKICAgICAgICAgICAgKSA9IEB7JHJ2ZXJ0aWNhbF90aWdodG5lc3NfZmxhZ3N9OwogICAgICAgIH0KCiAgICAgICAgJHNlcW5vX3N0cmluZyA9ICRzZXFub19lbmQ7CgogICAgICAgIyBoYW5kbGUgYW55IGNhY2hlZCBsaW5lIC4uCiAgICAgICAjIGVpdGhlciBhcHBlbmQgdGhpcyBsaW5lIHRvIGl0IG9yIHdyaXRlIGl0IG91dAogICAgICAgIyBOb3RlOiB0aGUgZnVuY3Rpb24gbGVuZ3RoKCkgaXMgdXNlZCBpbiB0aGlzIG5leHQgdGVzdCBvdXQgb2YgY2F1dGlvbi4KICAgICAgICMgQWxsIHRlc3RpbmcgaGFzIHNob3duIHRoYXQgdGhlIHZhcmlhYmxlICRjYWNoZWRfbGluZV90ZXh0X2xlbmd0aCBpcwogICAgICAgIyBjb3JyZWN0LCBidXQgaXRzIGNhbGN1bGF0aW9uIGlzIGNvbXBsZXggYW5kIGEgbG9zcyBvZiBjYWNoZWQgdGV4dCB3b3VsZAogICAgICAgIyBiZSBhIGRpc2FzdGVyLgogICAgICAgIGlmICggbGVuZ3RoKCRjYWNoZWRfbGluZV90ZXh0KSApIHsKCiAgICAgICAgICAgICMgRHVtcCBhbiBpbnZhbGlkIGNhY2hlZCBsaW5lCiAgICAgICAgICAgIGlmICggISRjYWNoZWRfbGluZV92YWxpZCApIHsKICAgICAgICAgICAgICAgICRzZWxmLT52YWxpZ25fb3V0cHV0X3N0ZXBfQygKICAgICAgICAgICAgICAgICAgICAkY2FjaGVkX2xpbmVfdGV4dCwgICAkY2FjaGVkX2xpbmVfbGVhZGluZ19zcGFjZV9jb3VudCwKICAgICAgICAgICAgICAgICAgICAkbGFzdF9sZXZlbF93cml0dGVuLCAkY2FjaGVkX2xpbmVfS2VuZAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBIYW5kbGUgY2FjaGVkIGxpbmUgZW5kaW5nIGluIE9QRU5JTkcgdG9rZW5zCiAgICAgICAgICAgIGVsc2lmICggJGNhY2hlZF9saW5lX3R5cGUgPT0gMSB8fCAkY2FjaGVkX2xpbmVfdHlwZSA9PSAzICkgewoKICAgICAgICAgICAgICAgIG15ICRnYXAgPSAkbGVhZGluZ19zcGFjZV9jb3VudCAtICRjYWNoZWRfbGluZV90ZXh0X2xlbmd0aDsKCiAgICAgICAgICAgICAgICAjIGhhbmRsZSBvcHRpb24gb2YganVzdCBvbmUgdGlnaHQgb3BlbmluZyBwZXIgbGluZToKICAgICAgICAgICAgICAgIGlmICggJGNhY2hlZF9saW5lX2ZsYWcgPT0gMSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQoJG9wZW5fb3JfY2xvc2UpICYmICRvcGVuX29yX2Nsb3NlID09IDEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRnYXAgPSAtMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAkZ2FwID49IDAgJiYgZGVmaW5lZCgkc2Vxbm9fYmVnKSApIHsKICAgICAgICAgICAgICAgICAgICAkbGVhZGluZ19zdHJpbmcgICAgICAgID0gJGNhY2hlZF9saW5lX3RleHQgLiAnICcgeCAkZ2FwOwogICAgICAgICAgICAgICAgICAgICRsZWFkaW5nX3N0cmluZ19sZW5ndGggPSAkY2FjaGVkX2xpbmVfdGV4dF9sZW5ndGggKyAkZ2FwOwogICAgICAgICAgICAgICAgICAgICRsZWFkaW5nX3NwYWNlX2NvdW50ICAgPSAkY2FjaGVkX2xpbmVfbGVhZGluZ19zcGFjZV9jb3VudDsKICAgICAgICAgICAgICAgICAgICAkc2Vxbm9fc3RyaW5nID0gJGNhY2hlZF9zZXFub19zdHJpbmcgLiAnOicgLiAkc2Vxbm9fYmVnOwogICAgICAgICAgICAgICAgICAgICRsZXZlbCAgICAgICAgPSAkbGFzdF9sZXZlbF93cml0dGVuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHNlbGYtPnZhbGlnbl9vdXRwdXRfc3RlcF9DKAogICAgICAgICAgICAgICAgICAgICAgICAkY2FjaGVkX2xpbmVfdGV4dCwgICAkY2FjaGVkX2xpbmVfbGVhZGluZ19zcGFjZV9jb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3RfbGV2ZWxfd3JpdHRlbiwgJGNhY2hlZF9saW5lX0tlbmQKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIEhhbmRsZSBjYWNoZWQgbGluZSBlbmRpbmcgaW4gQ0xPU0lORyB0b2tlbnMKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBteSAkdGVzdF9saW5lID0KICAgICAgICAgICAgICAgICAgJGNhY2hlZF9saW5lX3RleHQgLiAnICcgeCAkY2FjaGVkX2xpbmVfZmxhZyAuICRzdHI7CiAgICAgICAgICAgICAgICBteSAkdGVzdF9saW5lX2xlbmd0aCA9CiAgICAgICAgICAgICAgICAgICRjYWNoZWRfbGluZV90ZXh0X2xlbmd0aCArICRjYWNoZWRfbGluZV9mbGFnICsgJHN0cl9sZW5ndGg7CiAgICAgICAgICAgICAgICBpZiAoCgogICAgICAgICAgICAgICAgICAgICMgVGhlIG5ldyBsaW5lIG11c3Qgc3RhcnQgd2l0aCBjb250YWluZXIKICAgICAgICAgICAgICAgICAgICAkc2Vxbm9fYmVnCgogICAgICAgICAgICAgICAgICAgICMgVGhlIGNvbnRhaW5lciBjb21iaW5hdGlvbiBtdXN0IGJlIG9rYXkuLgogICAgICAgICAgICAgICAgICAgICYmICgKCiAgICAgICAgICAgICAgICAgICAgICAgICMgb2theSB0byBjb21iaW5lIGxpa2UgdHlwZXMKICAgICAgICAgICAgICAgICAgICAgICAgKCAkb3Blbl9vcl9jbG9zZSA9PSAkY2FjaGVkX2xpbmVfdHlwZSApCgogICAgICAgICAgICAgICAgICAgICAgICAjIGNsb3NpbmcgYmxvY2sgYnJhY2UgbWF5IGFwcGVuZCB0byBub24tYmxvY2sKICAgICAgICAgICAgICAgICAgICAgICAgfHwgKCAkY2FjaGVkX2xpbmVfdHlwZSA9PSAyICYmICRvcGVuX29yX2Nsb3NlID09IDQgKQoKICAgICAgICAgICAgICAgICAgICAgICAgIyBzb21ldGhpbmcgbGlrZSAnKTsnCiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICggISRvcGVuX29yX2Nsb3NlICYmICRjYWNoZWRfbGluZV90eXBlID09IDIgKQoKICAgICAgICAgICAgICAgICAgICApCgogICAgICAgICAgICAgICAgICAgICMgVGhlIGNvbWJpbmVkIGxpbmUgbXVzdCBmaXQKICAgICAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgICAgICR0ZXN0X2xpbmVfbGVuZ3RoIDw9CiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5tYXhpbXVtX2xpbmVfbGVuZ3RoX2Zvcl9sZXZlbCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsYXN0X2xldmVsX3dyaXR0ZW4pCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICRzZXFub19zdHJpbmcgPSAkY2FjaGVkX3NlcW5vX3N0cmluZyAuICc6JyAuICRzZXFub19iZWc7CgogICAgICAgICAgICAgICAgICAgICMgUGF0Y2ggdG8gb3V0ZGVudCBjbG9zaW5nIHRva2VucyBlbmRpbmcgIyBpbiAnKTsnIElmIHdlCiAgICAgICAgICAgICAgICAgICAgIyBhcmUgam9pbmluZyBhIGxpbmUgbGlrZSAnKTsnIHRvIGEgcHJldmlvdXMgc3RhY2tlZCBzZXQgb2YKICAgICAgICAgICAgICAgICAgICAjIGNsb3NpbmcgdG9rZW5zLCB0aGVuIGRlY2lkZSBpZiB3ZSBtYXkgb3V0ZGVudCB0aGUKICAgICAgICAgICAgICAgICAgICAjIGNvbWJpbmVkIHN0YWNrIHRvIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgJyk7Jy4gIFNpbmNlIHdlCiAgICAgICAgICAgICAgICAgICAgIyBzaG91bGQgbm90IG5vcm1hbGx5IG91dGRlbnQgYW55IG9mIHRoZSBvdGhlciB0b2tlbnMgbW9yZQogICAgICAgICAgICAgICAgICAgICMgdGhhbiB0aGUgaW5kZW50YXRpb24gb2YgdGhlIGxpbmVzIHRoYXQgY29udGFpbmVkIHRoZW0sIHdlCiAgICAgICAgICAgICAgICAgICAgIyB3aWxsIG9ubHkgZG8gdGhpcyBpZiBhbGwgb2YgdGhlIGNvcnJlc3BvbmRpbmcgb3BlbmluZwogICAgICAgICAgICAgICAgICAgICMgdG9rZW5zIHdlcmUgb24gdGhlIHNhbWUgbGluZS4gIFRoaXMgY2FuIGhhcHBlbiB3aXRoIC1zb3QKICAgICAgICAgICAgICAgICAgICAjIGFuZCAtc2N0LgoKICAgICAgICAgICAgICAgICAgICAjIEZvciBleGFtcGxlLCBpdCBpcyBvayBoZXJlOgogICAgICAgICAgICAgICAgICAgICMgICBfX1BBQ0tBR0VfXy0+bG9hZF9jb21wb25lbnRzKCBxdygKICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgUEs6OkF1dG8KICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgQ29yZQogICAgICAgICAgICAgICAgICAgICMgICApKTsKICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBCdXQsIGZvciBleGFtcGxlLCB3ZSBkbyBub3Qgb3V0ZGVudCBpbiB0aGlzIGV4YW1wbGUKICAgICAgICAgICAgICAgICAgICAjIGJlY2F1c2UgdGhhdCB3b3VsZCBwdXQgdGhlIGNsb3Npbmcgc3ViIGJyYWNlIG91dCBmYXJ0aGVyCiAgICAgICAgICAgICAgICAgICAgIyB0aGFuIHRoZSBvcGVuaW5nIHN1YiBicmFjZToKICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyAgIHBlcmx0aWR5IC1zb3QgLXNjdAogICAgICAgICAgICAgICAgICAgICMgICAkYy0+VGs6OmJpbmQoCiAgICAgICAgICAgICAgICAgICAgIyAgICAgICAnPENvbnRyb2wtZj4nID0+IHN1YiB7CiAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgbXkgKCRjKSA9IEBfOwogICAgICAgICAgICAgICAgICAgICMgICAgICAgICAgIG15ICRlID0gJGMtPlhFdmVudDsKICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICBpdGVtc1VuZGVyQXJlYSAkYzsKICAgICAgICAgICAgICAgICAgICAjICAgICAgIH0gKTsKICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgaWYgKCAgICRzdHIgPX4gL15cKTsvCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRjYWNoZWRfbGluZV90ZXh0ID1+IC9eW1wpXH1cXVxzXSokLyApCiAgICAgICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGUgd2F5IHRvIHRlbGwgdGhpcyBpcyBpZiB0aGUgc3RhY2tlZCBzZXF1ZW5jZQogICAgICAgICAgICAgICAgICAgICAgICAjIG51bWJlcnMgb2YgdGhpcyBvdXRwdXQgbGluZSBhcmUgdGhlIHJldmVyc2Ugb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICMgc3RhY2tlZCBzZXF1ZW5jZSBudW1iZXJzIG9mIHRoZSBwcmV2aW91cyBub24tYmxhbmsKICAgICAgICAgICAgICAgICAgICAgICAgIyBsaW5lIG9mIHNlcXVlbmNlIG51bWJlcnMuICBTbyB3ZSBjYW4gam9pbiBpZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIyBwcmV2aW91cyBub25ibGFuayBzdHJpbmcgb2YgdG9rZW5zIGlzIHRoZSBtaXJyb3IKICAgICAgICAgICAgICAgICAgICAgICAgIyBpbWFnZS4gIEZvciBleGFtcGxlIGlmIHN0YWNrICl9XSBpcyAxMzo4OjYgdGhlbiB3ZQogICAgICAgICAgICAgICAgICAgICAgICAjIGFyZSBsb29raW5nIGZvciBhIGxlYWRpbmcgc3RhY2sgbGlrZSBbeyggd2hpY2gKICAgICAgICAgICAgICAgICAgICAgICAgIyBpcyA2Ojg6MTMuIFdlIG9ubHkgbmVlZCB0byBjaGVjayB0aGUgdHdvIGVuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICMgYmVjYXVzZSB0aGUgaW50ZXJtZWRpYXRlIHRva2VucyBtdXN0IGZhbGwgaW4gb3JkZXIuCiAgICAgICAgICAgICAgICAgICAgICAgICMgTm90ZSBvbiBzcGVlZDogaGF2aW5nIHRvIHNwbGl0IG9uIGNvbG9ucyBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgIyBlbGltaW5hdGUgbXVsdGlwbGUgY29sb25zIG1pZ2h0IGFwcGVhciB0byBiZSBzbG93LAogICAgICAgICAgICAgICAgICAgICAgICAjIGJ1dCBpdCdzIG5vdCBhbiBpc3N1ZSBiZWNhdXNlIHdlIGFsbW9zdCBuZXZlciBjb21lCiAgICAgICAgICAgICAgICAgICAgICAgICMgdGhyb3VnaCBoZXJlLiAgSW4gYSB0eXBpY2FsIGZpbGUgd2UgZG9uJ3QuCgogICAgICAgICAgICAgICAgICAgICAgICAkc2Vxbm9fc3RyaW5nICAgICAgICAgICAgICAgPX4gcy9eOisvLzsKICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfc2Vxbm9fc3RyaW5nID1+IHMvXjorLy87CiAgICAgICAgICAgICAgICAgICAgICAgICRzZXFub19zdHJpbmcgICAgICAgICAgICAgICA9fiBzLzorLzovZzsKICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfc2Vxbm9fc3RyaW5nID1+IHMvOisvOi9nOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBob3cgbWFueSBzcGFjZXMgY2FuIHdlIG91dGRlbnQ/CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRkaWZmID0KICAgICAgICAgICAgICAgICAgICAgICAgICAkY2FjaGVkX2xpbmVfbGVhZGluZ19zcGFjZV9jb3VudCAtCiAgICAgICAgICAgICAgICAgICAgICAgICAgJGxlYWRpbmdfc3BhY2VfY291bnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggICAkZGlmZiA+IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGxlbmd0aCgkc2Vxbm9fc3RyaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgbGVuZ3RoKCRsYXN0X25vbmJsYW5rX3NlcW5vX3N0cmluZykgPT0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCgkc2Vxbm9fc3RyaW5nKSApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15IEBzZXFub19sYXN0ID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBzcGxpdCAvOi8sICRsYXN0X25vbmJsYW5rX3NlcW5vX3N0cmluZyApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgQHNlcW5vX25vdyA9ICggc3BsaXQgLzovLCAkc2Vxbm9fc3RyaW5nICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICAgQHNlcW5vX25vdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIEBzZXFub19sYXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHNlcW5vX25vd1stMV0gPT0gJHNlcW5vX2xhc3RbMF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkc2Vxbm9fbm93WzBdID09ICRzZXFub19sYXN0Wy0xXSApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT0sgdG8gb3V0ZGVudCAuLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZm9yIGFic29sdXRlIHNhZmV0eSwgYmUgc3VyZSB3ZSBvbmx5IHJlbW92ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2hpdGVzcGFjZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICR3cyA9IHN1YnN0ciggJHRlc3RfbGluZSwgMCwgJGRpZmYgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICggbGVuZ3RoKCR3cykgPT0gJGRpZmYgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkd3MgPX4gL15ccyskLyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRlc3RfbGluZSA9IHN1YnN0ciggJHRlc3RfbGluZSwgJGRpZmYgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNhY2hlZF9saW5lX2xlYWRpbmdfc3BhY2VfY291bnQgLT0gJGRpZmY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsYXN0X2xldmVsX3dyaXR0ZW4gPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5sZXZlbF9jaGFuZ2UoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2FjaGVkX2xpbmVfbGVhZGluZ19zcGFjZV9jb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaWZmLCAkbGFzdF9sZXZlbF93cml0dGVuICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5yZWR1Y2VfdmFsaWduX2J1ZmZlcl9pbmRlbnRhdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaWZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvdWxkbid0IGhhcHBlbiwgYnV0IG5vdCBjcml0aWNhbDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjI2Vsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIEVSUk9SIHRyYW5zZmVycmluZyBpbmRlbnRhdGlvbiBoZXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyN9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRzdHIgICAgICAgICAgICAgICAgICAgPSAkdGVzdF9saW5lOwogICAgICAgICAgICAgICAgICAgICRzdHJfbGVuZ3RoICAgICAgICAgICAgPSAkdGVzdF9saW5lX2xlbmd0aDsKICAgICAgICAgICAgICAgICAgICAkbGVhZGluZ19zdHJpbmcgICAgICAgID0gIiI7CiAgICAgICAgICAgICAgICAgICAgJGxlYWRpbmdfc3RyaW5nX2xlbmd0aCA9IDA7CiAgICAgICAgICAgICAgICAgICAgJGxlYWRpbmdfc3BhY2VfY291bnQgICA9ICRjYWNoZWRfbGluZV9sZWFkaW5nX3NwYWNlX2NvdW50OwogICAgICAgICAgICAgICAgICAgICRsZXZlbCAgICAgICAgICAgICAgICAgPSAkbGFzdF9sZXZlbF93cml0dGVuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHNlbGYtPnZhbGlnbl9vdXRwdXRfc3RlcF9DKAogICAgICAgICAgICAgICAgICAgICAgICAkY2FjaGVkX2xpbmVfdGV4dCwgICAkY2FjaGVkX2xpbmVfbGVhZGluZ19zcGFjZV9jb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3RfbGV2ZWxfd3JpdHRlbiwgJGNhY2hlZF9saW5lX0tlbmQKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRjYWNoZWRfbGluZV90eXBlICAgICAgICA9IDA7CiAgICAgICAgJGNhY2hlZF9saW5lX3RleHQgICAgICAgID0gIiI7CiAgICAgICAgJGNhY2hlZF9saW5lX3RleHRfbGVuZ3RoID0gMDsKICAgICAgICAkY2FjaGVkX2xpbmVfS2VuZCAgICAgICAgPSB1bmRlZjsKCiAgICAgICAgIyBtYWtlIHRoZSBsaW5lIHRvIGJlIHdyaXR0ZW4KICAgICAgICBteSAkbGluZSAgICAgICAgPSAkbGVhZGluZ19zdHJpbmcgLiAkc3RyOwogICAgICAgIG15ICRsaW5lX2xlbmd0aCA9ICRsZWFkaW5nX3N0cmluZ19sZW5ndGggKyAkc3RyX2xlbmd0aDsKCiAgICAgICAgIyBTYWZldHkgY2hlY2s6IGJlIHN1cmUgdGhhdCBhIGxpbmUgdG8gYmUgY2FjaGVkIGFzIGEgc3RhY2tlZCBibG9jawogICAgICAgICMgYnJhY2UgbGluZSBlbmRzIGluIHRoZSBhcHByb3ByaWF0ZSBvcGVuaW5nIG9yIGNsb3NpbmcgYmxvY2sgYnJhY2UuCiAgICAgICAgIyBUaGlzIHNob3VsZCBhbHdheXMgYmUgdGhlIGNhc2UgaWYgdGhlIGNhbGxlciBzZXQgZmxhZ3MgY29ycmVjdGx5LgogICAgICAgICMgQ29kZSAnMycgaXMgZm9yIC1zb2JiLCBjb2RlICc0JyBpcyBmb3IgLXNjYmIuCiAgICAgICAgaWYgKCRvcGVuX29yX2Nsb3NlKSB7CiAgICAgICAgICAgIGlmICggICAkb3Blbl9vcl9jbG9zZSA9PSAzICYmICRsaW5lICF+IC9ce1xzKiQvCiAgICAgICAgICAgICAgICB8fCAkb3Blbl9vcl9jbG9zZSA9PSA0ICYmICRsaW5lICF+IC9cfVxzKiQvICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJG9wZW5fb3JfY2xvc2UgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHdyaXRlIG9yIGNhY2hlIHRoaXMgbGluZQogICAgICAgIGlmICggISRvcGVuX29yX2Nsb3NlIHx8ICRzaWRlX2NvbW1lbnRfbGVuZ3RoID4gMCApIHsKICAgICAgICAgICAgJHNlbGYtPnZhbGlnbl9vdXRwdXRfc3RlcF9DKCAkbGluZSwgJGxlYWRpbmdfc3BhY2VfY291bnQsICRsZXZlbCwKICAgICAgICAgICAgICAgICRLZW5kICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkY2FjaGVkX2xpbmVfdGV4dCAgICAgICAgICAgICAgICA9ICRsaW5lOwogICAgICAgICAgICAkY2FjaGVkX2xpbmVfdGV4dF9sZW5ndGggICAgICAgICA9ICRsaW5lX2xlbmd0aDsKICAgICAgICAgICAgJGNhY2hlZF9saW5lX3R5cGUgICAgICAgICAgICAgICAgPSAkb3Blbl9vcl9jbG9zZTsKICAgICAgICAgICAgJGNhY2hlZF9saW5lX2ZsYWcgICAgICAgICAgICAgICAgPSAkdGlnaHRuZXNzX2ZsYWc7CiAgICAgICAgICAgICRjYWNoZWRfc2Vxbm8gICAgICAgICAgICAgICAgICAgID0gJHNlcW5vOwogICAgICAgICAgICAkY2FjaGVkX2xpbmVfdmFsaWQgICAgICAgICAgICAgICA9ICR2YWxpZDsKICAgICAgICAgICAgJGNhY2hlZF9saW5lX2xlYWRpbmdfc3BhY2VfY291bnQgPSAkbGVhZGluZ19zcGFjZV9jb3VudDsKICAgICAgICAgICAgJGNhY2hlZF9zZXFub19zdHJpbmcgICAgICAgICAgICAgPSAkc2Vxbm9fc3RyaW5nOwogICAgICAgICAgICAkY2FjaGVkX2xpbmVfS2VuZCAgICAgICAgICAgICAgICA9ICRLZW5kOwogICAgICAgIH0KCiAgICAgICAgJHNlbGYtPltfbGFzdF9sZXZlbF93cml0dGVuX10gICAgICAgPSAkbGV2ZWw7CiAgICAgICAgJHNlbGYtPltfbGFzdF9zaWRlX2NvbW1lbnRfbGVuZ3RoX10gPSAkc2lkZV9jb21tZW50X2xlbmd0aDsKICAgICAgICAkc2VsZi0+W19leHRyYV9pbmRlbnRfb2tfXSAgICAgICAgICA9IDA7CiAgICAgICAgcmV0dXJuOwogICAgfQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgQ09ERSBTRUNUSU9OIDg6IE91dHB1dCBTdGVwIEMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKeyAgICAjIyBjbG9zdXJlIGZvciBzdWIgdmFsaWduX291dHB1dF9zdGVwX0MKCiAgICAjIFZlcnRpY2FsIGFsaWdubWVudCBidWZmZXIgdXNlZCBieSB2YWxpZ25fb3V0cHV0X3N0ZXBfQwogICAgbXkgJHZhbGlnbl9idWZmZXJfZmlsbGluZzsKICAgIG15IEB2YWxpZ25fYnVmZmVyOwoKICAgIHN1YiBpbml0aWFsaXplX3ZhbGlnbl9idWZmZXIgewogICAgICAgIEB2YWxpZ25fYnVmZmVyICAgICAgICAgPSAoKTsKICAgICAgICAkdmFsaWduX2J1ZmZlcl9maWxsaW5nID0gIiI7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBkdW1wX3ZhbGlnbl9idWZmZXIgewogICAgICAgIG15ICgkc2VsZikgPSBAXzsKICAgICAgICBpZiAoQHZhbGlnbl9idWZmZXIpIHsKICAgICAgICAgICAgZm9yZWFjaCAoQHZhbGlnbl9idWZmZXIpIHsKICAgICAgICAgICAgICAgICRzZWxmLT52YWxpZ25fb3V0cHV0X3N0ZXBfRCggQHskX30gKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBAdmFsaWduX2J1ZmZlciA9ICgpOwogICAgICAgIH0KICAgICAgICAkdmFsaWduX2J1ZmZlcl9maWxsaW5nID0gIiI7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiByZWR1Y2VfdmFsaWduX2J1ZmZlcl9pbmRlbnRhdGlvbiB7CgogICAgICAgIG15ICggJHNlbGYsICRkaWZmICkgPSBAXzsKICAgICAgICBpZiAoICR2YWxpZ25fYnVmZmVyX2ZpbGxpbmcgJiYgJGRpZmYgKSB7CiAgICAgICAgICAgIG15ICRtYXhfdmFsaWduX2J1ZmZlciA9IEB2YWxpZ25fYnVmZmVyOwogICAgICAgICAgICBmb3JlYWNoIG15ICRpICggMCAuLiAkbWF4X3ZhbGlnbl9idWZmZXIgLSAxICkgewogICAgICAgICAgICAgICAgbXkgKCAkbGluZSwgJGxlYWRpbmdfc3BhY2VfY291bnQsICRsZXZlbCwgJEtlbmQgKSA9CiAgICAgICAgICAgICAgICAgIEB7ICR2YWxpZ25fYnVmZmVyWyRpXSB9OwogICAgICAgICAgICAgICAgbXkgJHdzID0gc3Vic3RyKCAkbGluZSwgMCwgJGRpZmYgKTsKICAgICAgICAgICAgICAgIGlmICggKCBsZW5ndGgoJHdzKSA9PSAkZGlmZiApICYmICR3cyA9fiAvXlxzKyQvICkgewogICAgICAgICAgICAgICAgICAgICRsaW5lID0gc3Vic3RyKCAkbGluZSwgJGRpZmYgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICggJGxlYWRpbmdfc3BhY2VfY291bnQgPj0gJGRpZmYgKSB7CiAgICAgICAgICAgICAgICAgICAgJGxlYWRpbmdfc3BhY2VfY291bnQgLT0gJGRpZmY7CiAgICAgICAgICAgICAgICAgICAgJGxldmVsID0KICAgICAgICAgICAgICAgICAgICAgICRzZWxmLT5sZXZlbF9jaGFuZ2UoICRsZWFkaW5nX3NwYWNlX2NvdW50LCAkZGlmZiwKICAgICAgICAgICAgICAgICAgICAgICAgJGxldmVsICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdmFsaWduX2J1ZmZlclskaV0gPQogICAgICAgICAgICAgICAgICBbICRsaW5lLCAkbGVhZGluZ19zcGFjZV9jb3VudCwgJGxldmVsLCAkS2VuZCBdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgdmFsaWduX291dHB1dF9zdGVwX0MgewoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIFRoaXMgaXMgU3RlcCBDIGluIHdyaXRpbmcgdmVydGljYWxseSBhbGlnbmVkIGxpbmVzLgogICAgICAgICMgTGluZXMgYXJlIGVpdGhlciBzdG9yZWQgaW4gYSBidWZmZXIgb3IgcGFzc2VkIGFsb25nIHRvIHRoZSBuZXh0IHN0ZXAuCiAgICAgICAgIyBUaGUgcmVhc29uIGZvciBzdG9yaW5nIGxpbmVzIGlzIHRoYXQgd2UgbWF5IGxhdGVyIHdhbnQgdG8gcmVkdWNlIHRoZWlyCiAgICAgICAgIyBpbmRlbnRhdGlvbiB3aGVuIC1zb3QgYW5kIC1zY3QgYXJlIGJvdGggdXNlZC4KICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICBteSAoICRzZWxmLCBAYXJncyApID0gQF87CgogICAgICAgIG15ICRzZXFub19zdHJpbmcgICAgICAgICAgICAgICA9IGdldF9zZXFub19zdHJpbmcoKTsKICAgICAgICBteSAkbGFzdF9ub25ibGFua19zZXFub19zdHJpbmcgPSBnZXRfbGFzdF9ub25ibGFua19zZXFub19zdHJpbmcoKTsKCiAgICAgICAgIyBEdW1wIGFueSBzYXZlZCBsaW5lcyBpZiB3ZSBzZWUgYSBsaW5lIHdpdGggYW4gdW5iYWxhbmNlZCBvcGVuaW5nIG9yCiAgICAgICAgIyBjbG9zaW5nIHRva2VuLgogICAgICAgICRzZWxmLT5kdW1wX3ZhbGlnbl9idWZmZXIoKQogICAgICAgICAgaWYgKCAkc2Vxbm9fc3RyaW5nICYmICR2YWxpZ25fYnVmZmVyX2ZpbGxpbmcgKTsKCiAgICAgICAgIyBFaXRoZXIgc3RvcmUgb3Igd3JpdGUgdGhpcyBsaW5lCiAgICAgICAgaWYgKCR2YWxpZ25fYnVmZmVyX2ZpbGxpbmcpIHsKICAgICAgICAgICAgcHVzaCBAdmFsaWduX2J1ZmZlciwgW0BhcmdzXTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRzZWxmLT52YWxpZ25fb3V0cHV0X3N0ZXBfRChAYXJncyk7CiAgICAgICAgfQoKICAgICAgICAjIEZvciBsaW5lcyBzdGFydGluZyBvciBlbmRpbmcgd2l0aCBvcGVuaW5nIG9yIGNsb3NpbmcgdG9rZW5zLi4KICAgICAgICBpZiAoJHNlcW5vX3N0cmluZykgewogICAgICAgICAgICAkbGFzdF9ub25ibGFua19zZXFub19zdHJpbmcgPSAkc2Vxbm9fc3RyaW5nOwogICAgICAgICAgICBzZXRfbGFzdF9ub25ibGFua19zZXFub19zdHJpbmcoJHNlcW5vX3N0cmluZyk7CgogICAgICAgICAgICAjIFN0YXJ0IHN0b3JpbmcgbGluZXMgd2hlbiB3ZSBzZWUgYSBsaW5lIHdpdGggbXVsdGlwbGUgc3RhY2tlZAogICAgICAgICAgICAjIG9wZW5pbmcgdG9rZW5zLgogICAgICAgICAgICAjIHBhdGNoIGZvciBSVCAjOTQzNTQsIHJlcXVlc3RlZCBieSBDb2xpbiBXaWxsaWFtcwogICAgICAgICAgICBpZiAoICAgJHNlcW5vX3N0cmluZyA9fiAvXlxkKyhcOitcZCspKyQvCiAgICAgICAgICAgICAgICAmJiAkYXJnc1swXSAhfiAvXltcfVwpXF1cOlw/XS8gKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgIyBUaGlzIHRlc3QgaXMgZWZmaWNpZW50IGJ1dCBhIGxpdHRsZSBzdWJ0bGU6IFRoZSBmaXJzdCB0ZXN0CiAgICAgICAgICAgICAgICAjIHNheXMgdGhhdCB3ZSBoYXZlIG11bHRpcGxlIHNlcXVlbmNlIG51bWJlcnMgYW5kIGhlbmNlCiAgICAgICAgICAgICAgICAjIG11bHRpcGxlIG9wZW5pbmcgb3IgY2xvc2luZyB0b2tlbnMgaW4gdGhpcyBsaW5lLiAgVGhlIHNlY29uZAogICAgICAgICAgICAgICAgIyBwYXJ0IG9mIHRoZSB0ZXN0IHJlamVjdHMgc3RhY2tlZCBjbG9zaW5nIGFuZCB0ZXJuYXJ5IHRva2Vucy4KICAgICAgICAgICAgICAgICMgU28gaWYgd2UgZ2V0IGhlcmUgdGhlbiB3ZSBzaG91bGQgaGF2ZSBzdGFja2VkIHVuYmFsYW5jZWQKICAgICAgICAgICAgICAgICMgb3BlbmluZyB0b2tlbnMuCgogICAgICAgICAgICAgICAgIyBIZXJlIGlzIGEgY29tcGxleCBleGFtcGxlOgoKICAgICAgICAgICAgICAgICMgRm9vKCRCYXJbMF0sIHsgICMgKHNpZGUgY29tbWVudCkKICAgICAgICAgICAgICAgICMgCWJheiA9PiAxLAogICAgICAgICAgICAgICAgIyB9KTsKCiAgICAgICAgICAgICAgICAjIFRoZSBmaXJzdCBsaW5lIGhhcyBzZXF1ZW5jZSA2Ojo0LiAgSXQgZG9lcyBub3QgYmVnaW4gd2l0aAogICAgICAgICAgICAgICAgIyBhIGNsb3NpbmcgdG9rZW4gb3IgdGVybmFyeSwgc28gaXQgcGFzc2VzIHRoZSB0ZXN0IGFuZCBtdXN0IGJlCiAgICAgICAgICAgICAgICAjIHN0YWNrZWQgb3BlbmluZyB0b2tlbnMuCgogICAgICAgICAgICAgICAgIyBUaGUgbGFzdCBsaW5lIGhhcyBzZXF1ZW5jZSA0OjYgYnV0IGlzIGEgc3RhY2sgb2YgY2xvc2luZwogICAgICAgICAgICAgICAgIyB0b2tlbnMsIHNvIGl0IGdldHMgcmVqZWN0ZWQuCgogICAgICAgICAgICAgICAgIyBOb3RlIHRoYXQgdGhlIHNlcXVlbmNlIG51bWJlciBvZiBhbiBvcGVuaW5nIHRva2VuIGZvciBhIHF3CiAgICAgICAgICAgICAgICAjIHF1b3RlIGlzIGEgbmVnYXRpdmUgbnVtYmVyIGFuZCB3aWxsIGJlIHJlamVjdGVkLiAgRm9yCiAgICAgICAgICAgICAgICAjIGV4YW1wbGUsIGZvciB0aGUgZm9sbG93aW5nIGxpbmU6IHNraXBfc3ltYm9scyhbcXcoCiAgICAgICAgICAgICAgICAjICRzZXFub19zdHJpbmc9JzEwOjU6LTEnLiAgSXQgd291bGQgYmUgb2theSB0byBhY2NlcHQgaXQgYnV0IEkKICAgICAgICAgICAgICAgICMgZGVjaWRlZCBub3QgdG8gZG8gdGhpcyBhZnRlciB0ZXN0aW5nLgoKICAgICAgICAgICAgICAgICR2YWxpZ25fYnVmZmVyX2ZpbGxpbmcgPSAkc2Vxbm9fc3RyaW5nOwoKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBDT0RFIFNFQ1RJT04gOTogT3V0cHV0IFN0ZXAgRAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpzdWIgdmFsaWduX291dHB1dF9zdGVwX0QgewoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBUaGlzIGlzIFN0ZXAgRCBpbiB3cml0aW5nIHZlcnRpY2FsbHkgYWxpZ25lZCBsaW5lcy4KICAgICMgSXQgaXMgdGhlIGVuZCBvZiB0aGUgdmVydGljYWwgYWxpZ25tZW50IHBpcGVsaW5lLgogICAgIyBXcml0ZSBvbmUgdmVydGljYWxseSBhbGlnbmVkIGxpbmUgb2YgY29kZSB0byB0aGUgb3V0cHV0IG9iamVjdC4KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgIG15ICggJHNlbGYsICRsaW5lLCAkbGVhZGluZ19zcGFjZV9jb3VudCwgJGxldmVsLCAkS2VuZCApID0gQF87CgogICAgIyBUaGUgbGluZSBpcyBjdXJyZW50bHkgY29ycmVjdCBpZiB0aGVyZSBpcyBubyB0YWJiaW5nIChyZWNvbW1lbmRlZCEpCiAgICAjIFdlIG1heSBoYXZlIHRvIGxvcCBvZmYgc29tZSBsZWFkaW5nIHNwYWNlcyBhbmQgcmVwbGFjZSB3aXRoIHRhYnMuCiAgICBpZiAoICRsZWFkaW5nX3NwYWNlX2NvdW50ID4gMCApIHsKCiAgICAgICAgbXkgJHJPcHRzX2luZGVudF9jb2x1bW5zID0gJHNlbGYtPltfck9wdHNfaW5kZW50X2NvbHVtbnNfXTsKICAgICAgICBteSAkck9wdHNfdGFicyAgICAgICAgICAgPSAkc2VsZi0+W19yT3B0c190YWJzX107CiAgICAgICAgbXkgJHJPcHRzX2VudGFiX2xlYWRpbmdfd2hpdGVzcGFjZSA9CiAgICAgICAgICAkc2VsZi0+W19yT3B0c19lbnRhYl9sZWFkaW5nX3doaXRlc3BhY2VfXTsKCiAgICAgICAgIyBOb3RoaW5nIHRvIGRvIGlmIG5vIHRhYnMKICAgICAgICBpZiAoICEoICRyT3B0c190YWJzIHx8ICRyT3B0c19lbnRhYl9sZWFkaW5nX3doaXRlc3BhY2UgKQogICAgICAgICAgICB8fCAkck9wdHNfaW5kZW50X2NvbHVtbnMgPD0gMCApCiAgICAgICAgewoKICAgICAgICAgICAgIyBub3RoaW5nIHRvIGRvCiAgICAgICAgfQoKICAgICAgICAjIEhhbmRsZSBlbnRhYiBvcHRpb24KICAgICAgICBlbHNpZiAoJHJPcHRzX2VudGFiX2xlYWRpbmdfd2hpdGVzcGFjZSkgewoKICAgICAgICAgICAgIyBQYXRjaCAxMi1ub3YtMjAxOCBiYXNlZCBvbiByZXBvcnQgZnJvbSBHbGVubi4gRXh0cmEgcGFkZGluZyB3YXMKICAgICAgICAgICAgIyBub3QgY29ycmVjdGx5IGVudGFiYmVkLCBub3Igd2VyZSBzaWRlIGNvbW1lbnRzOiBJbmNyZWFzZSBsZWFkaW5nCiAgICAgICAgICAgICMgc3BhY2UgY291bnQgZm9yIGEgcGFkZGVkIGxpbmUgdG8gZ2V0IGNvcnJlY3QgdGFiYmluZwogICAgICAgICAgICBpZiAoICRsaW5lID1+IC9eKFxzKykoLiopJC8gKSB7CiAgICAgICAgICAgICAgICBteSAkc3BhY2VzID0gbGVuZ3RoKCQxKTsKICAgICAgICAgICAgICAgIGlmICggJHNwYWNlcyA+ICRsZWFkaW5nX3NwYWNlX2NvdW50ICkgewogICAgICAgICAgICAgICAgICAgICRsZWFkaW5nX3NwYWNlX2NvdW50ID0gJHNwYWNlczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJHNwYWNlX2NvdW50ID0KICAgICAgICAgICAgICAkbGVhZGluZ19zcGFjZV9jb3VudCAlICRyT3B0c19lbnRhYl9sZWFkaW5nX3doaXRlc3BhY2U7CiAgICAgICAgICAgIG15ICR0YWJfY291bnQgPQogICAgICAgICAgICAgIGludCggJGxlYWRpbmdfc3BhY2VfY291bnQgLyAkck9wdHNfZW50YWJfbGVhZGluZ193aGl0ZXNwYWNlICk7CiAgICAgICAgICAgIG15ICRsZWFkaW5nX3N0cmluZyA9ICJcdCIgeCAkdGFiX2NvdW50IC4gJyAnIHggJHNwYWNlX2NvdW50OwogICAgICAgICAgICBpZiAoICRsaW5lID1+IC9eXHN7JGxlYWRpbmdfc3BhY2VfY291bnQsJGxlYWRpbmdfc3BhY2VfY291bnR9LyApIHsKICAgICAgICAgICAgICAgIHN1YnN0ciggJGxpbmUsIDAsICRsZWFkaW5nX3NwYWNlX2NvdW50ICkgPSAkbGVhZGluZ19zdHJpbmc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBzaG91bGRuJ3QgaGFwcGVuIC0gcHJvZ3JhbSBlcnJvciBjb3VudGluZyB3aGl0ZXNwYWNlCiAgICAgICAgICAgICAgICAjIC0gc2tpcCBlbnRhYmJpbmcKICAgICAgICAgICAgICAgIERFQlVHX1RBQlMKICAgICAgICAgICAgICAgICAgJiYgJHNlbGYtPndhcm5pbmcoCiJFcnJvciBlbnRhYmJpbmcgaW4gdmFsaWduX291dHB1dF9zdGVwX0Q6IGV4cGVjdGVkIGNvdW50PSRsZWFkaW5nX3NwYWNlX2NvdW50XG4iCiAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgSGFuZGxlIG9wdGlvbiBvZiBvbmUgdGFiIHBlciBsZXZlbAogICAgICAgIGVsc2UgewogICAgICAgICAgICBteSAkbGVhZGluZ19zdHJpbmcgPSAoICJcdCIgeCAkbGV2ZWwgKTsKICAgICAgICAgICAgbXkgJHNwYWNlX2NvdW50ID0KICAgICAgICAgICAgICAkbGVhZGluZ19zcGFjZV9jb3VudCAtICRsZXZlbCAqICRyT3B0c19pbmRlbnRfY29sdW1uczsKCiAgICAgICAgICAgICMgc2hvdWxkbid0IGhhcHBlbjoKICAgICAgICAgICAgaWYgKCAkc3BhY2VfY291bnQgPCAwICkgewoKICAgICAgICAgICAgICAgICMgQnV0IGl0IGNvdWxkIGJlIGFuIG91dGRlbnRlZCBjb21tZW50CiAgICAgICAgICAgICAgICBpZiAoICRsaW5lICF+IC9eXHMqIy8gKSB7CiAgICAgICAgICAgICAgICAgICAgREVCVUdfVEFCUwogICAgICAgICAgICAgICAgICAgICAgJiYgJHNlbGYtPndhcm5pbmcoCiJFcnJvciBlbnRhYmJpbmcgaW4gdmFsaWduX291dHB1dF9zdGVwX0Q6IGZvciBsZXZlbD0kbGV2ZWwgY291bnQ9JGxlYWRpbmdfc3BhY2VfY291bnRcbiIKICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkbGVhZGluZ19zdHJpbmcgPSAoICcgJyB4ICRsZWFkaW5nX3NwYWNlX2NvdW50ICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkbGVhZGluZ19zdHJpbmcgLj0gKCAnICcgeCAkc3BhY2VfY291bnQgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICRsaW5lID1+IC9eXHN7JGxlYWRpbmdfc3BhY2VfY291bnQsJGxlYWRpbmdfc3BhY2VfY291bnR9LyApIHsKICAgICAgICAgICAgICAgIHN1YnN0ciggJGxpbmUsIDAsICRsZWFkaW5nX3NwYWNlX2NvdW50ICkgPSAkbGVhZGluZ19zdHJpbmc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBzaG91bGRuJ3QgaGFwcGVuIC0gcHJvZ3JhbSBlcnJvciBjb3VudGluZyB3aGl0ZXNwYWNlCiAgICAgICAgICAgICAgICAjIHdlJ2xsIHNraXAgZW50YWJiaW5nCiAgICAgICAgICAgICAgICBERUJVR19UQUJTCiAgICAgICAgICAgICAgICAgICYmICRzZWxmLT53YXJuaW5nKAoiRXJyb3IgZW50YWJiaW5nIGluIHZhbGlnbl9vdXRwdXRfc3RlcF9EOiBleHBlY3RlZCBjb3VudD0kbGVhZGluZ19zcGFjZV9jb3VudFxuIgogICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgbXkgJGZpbGVfd3JpdGVyX29iamVjdCA9ICRzZWxmLT5bX2ZpbGVfd3JpdGVyX29iamVjdF9dOwogICAgJGZpbGVfd3JpdGVyX29iamVjdC0+d3JpdGVfY29kZV9saW5lKCAkbGluZSAuICJcbiIsICRLZW5kICk7CgogICAgcmV0dXJuOwp9Cgp7ICAgICMjIGNsb3N1cmUgZm9yIHN1YiBnZXRfbGVhZGluZ19zdHJpbmcKCiAgICBteSBAbGVhZGluZ19zdHJpbmdfY2FjaGU7CgogICAgc3ViIGluaXRpYWxpemVfbGVhZGluZ19zdHJpbmdfY2FjaGUgewogICAgICAgIEBsZWFkaW5nX3N0cmluZ19jYWNoZSA9ICgpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgZ2V0X2xlYWRpbmdfc3RyaW5nIHsKCiAgICAgICAgIyBkZWZpbmUgdGhlIGxlYWRpbmcgd2hpdGVzcGFjZSBzdHJpbmcgZm9yIHRoaXMgbGluZS4uCiAgICAgICAgbXkgKCAkc2VsZiwgJGxlYWRpbmdfd2hpdGVzcGFjZV9jb3VudCwgJGdyb3VwX2xldmVsICkgPSBAXzsKCiAgICAgICAgIyBIYW5kbGUgY2FzZSBvZiB6ZXJvIHdoaXRlc3BhY2UsIHdoaWNoIGluY2x1ZGVzIG11bHRpLWxpbmUgcXVvdGVzCiAgICAgICAgIyAod2hpY2ggbWF5IGhhdmUgYSBmaW5pdGUgbGV2ZWw7IHRoaXMgcHJldmVudHMgdGFiIHByb2JsZW1zKQogICAgICAgIGlmICggJGxlYWRpbmdfd2hpdGVzcGFjZV9jb3VudCA8PSAwICkgewogICAgICAgICAgICByZXR1cm4gIiI7CiAgICAgICAgfQoKICAgICAgICAjIGxvb2sgZm9yIHByZXZpb3VzIHJlc3VsdAogICAgICAgIGVsc2lmICggJGxlYWRpbmdfc3RyaW5nX2NhY2hlWyRsZWFkaW5nX3doaXRlc3BhY2VfY291bnRdICkgewogICAgICAgICAgICByZXR1cm4gJGxlYWRpbmdfc3RyaW5nX2NhY2hlWyRsZWFkaW5nX3doaXRlc3BhY2VfY291bnRdOwogICAgICAgIH0KCiAgICAgICAgIyBtdXN0IGNvbXB1dGUgYSBzdHJpbmcgZm9yIHRoaXMgbnVtYmVyIG9mIHNwYWNlcwogICAgICAgIG15ICRsZWFkaW5nX3N0cmluZzsKCiAgICAgICAgIyBIYW5kbGUgc2ltcGxlIGNhc2Ugb2Ygbm8gdGFicwogICAgICAgIG15ICRyT3B0c19pbmRlbnRfY29sdW1ucyA9ICRzZWxmLT5bX3JPcHRzX2luZGVudF9jb2x1bW5zX107CiAgICAgICAgbXkgJHJPcHRzX3RhYnMgICAgICAgICAgID0gJHNlbGYtPltfck9wdHNfdGFic19dOwogICAgICAgIG15ICRyT3B0c19lbnRhYl9sZWFkaW5nX3doaXRlc3BhY2UgPQogICAgICAgICAgJHNlbGYtPltfck9wdHNfZW50YWJfbGVhZGluZ193aGl0ZXNwYWNlX107CgogICAgICAgIGlmICggISggJHJPcHRzX3RhYnMgfHwgJHJPcHRzX2VudGFiX2xlYWRpbmdfd2hpdGVzcGFjZSApCiAgICAgICAgICAgIHx8ICRyT3B0c19pbmRlbnRfY29sdW1ucyA8PSAwICkKICAgICAgICB7CiAgICAgICAgICAgICRsZWFkaW5nX3N0cmluZyA9ICggJyAnIHggJGxlYWRpbmdfd2hpdGVzcGFjZV9jb3VudCApOwogICAgICAgIH0KCiAgICAgICAgIyBIYW5kbGUgZW50YWIgb3B0aW9uCiAgICAgICAgZWxzaWYgKCRyT3B0c19lbnRhYl9sZWFkaW5nX3doaXRlc3BhY2UpIHsKICAgICAgICAgICAgbXkgJHNwYWNlX2NvdW50ID0KICAgICAgICAgICAgICAkbGVhZGluZ193aGl0ZXNwYWNlX2NvdW50ICUgJHJPcHRzX2VudGFiX2xlYWRpbmdfd2hpdGVzcGFjZTsKICAgICAgICAgICAgbXkgJHRhYl9jb3VudCA9IGludCgKICAgICAgICAgICAgICAgICRsZWFkaW5nX3doaXRlc3BhY2VfY291bnQgLyAkck9wdHNfZW50YWJfbGVhZGluZ193aGl0ZXNwYWNlICk7CiAgICAgICAgICAgICRsZWFkaW5nX3N0cmluZyA9ICJcdCIgeCAkdGFiX2NvdW50IC4gJyAnIHggJHNwYWNlX2NvdW50OwogICAgICAgIH0KCiAgICAgICAgIyBIYW5kbGUgb3B0aW9uIG9mIG9uZSB0YWIgcGVyIGxldmVsCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRsZWFkaW5nX3N0cmluZyA9ICggIlx0IiB4ICRncm91cF9sZXZlbCApOwogICAgICAgICAgICBteSAkc3BhY2VfY291bnQgPQogICAgICAgICAgICAgICRsZWFkaW5nX3doaXRlc3BhY2VfY291bnQgLSAkZ3JvdXBfbGV2ZWwgKiAkck9wdHNfaW5kZW50X2NvbHVtbnM7CgogICAgICAgICAgICAjIHNob3VsZG4ndCBoYXBwZW46CiAgICAgICAgICAgIGlmICggJHNwYWNlX2NvdW50IDwgMCApIHsKICAgICAgICAgICAgICAgIERFQlVHX1RBQlMKICAgICAgICAgICAgICAgICAgJiYgJHNlbGYtPndhcm5pbmcoCiJFcnJvciBpbiBnZXRfbGVhZGluZ19zdHJpbmc6IGZvciBsZXZlbD0kZ3JvdXBfbGV2ZWwgY291bnQ9JGxlYWRpbmdfd2hpdGVzcGFjZV9jb3VudFxuIgogICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgLS0gc2tpcCBlbnRhYmJpbmcKICAgICAgICAgICAgICAgICRsZWFkaW5nX3N0cmluZyA9ICggJyAnIHggJGxlYWRpbmdfd2hpdGVzcGFjZV9jb3VudCApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJGxlYWRpbmdfc3RyaW5nIC49ICggJyAnIHggJHNwYWNlX2NvdW50ICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJGxlYWRpbmdfc3RyaW5nX2NhY2hlWyRsZWFkaW5nX3doaXRlc3BhY2VfY291bnRdID0gJGxlYWRpbmdfc3RyaW5nOwogICAgICAgIHJldHVybiAkbGVhZGluZ19zdHJpbmc7CiAgICB9Cn0gICAgIyBlbmQgZ2V0X2xlYWRpbmdfc3RyaW5nCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIENPREUgU0VDVElPTiAxMDogU3VtbWFyeQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKc3ViIHJlcG9ydF9hbnl0aGluZ191bnVzdWFsIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CgogICAgbXkgJG91dGRlbnRlZF9saW5lX2NvdW50ID0gJHNlbGYtPltfb3V0ZGVudGVkX2xpbmVfY291bnRfXTsKICAgIGlmICggJG91dGRlbnRlZF9saW5lX2NvdW50ID4gMCApIHsKICAgICAgICAkc2VsZi0+d3JpdGVfbG9nZmlsZV9lbnRyeSgKICAgICAgICAgICAgIiRvdXRkZW50ZWRfbGluZV9jb3VudCBsb25nIGxpbmVzIHdlcmUgb3V0ZGVudGVkOlxuIik7CiAgICAgICAgbXkgJGZpcnN0X291dGRlbnRlZF9saW5lX2F0ID0gJHNlbGYtPltfZmlyc3Rfb3V0ZGVudGVkX2xpbmVfYXRfXTsKICAgICAgICAkc2VsZi0+d3JpdGVfbG9nZmlsZV9lbnRyeSgKICAgICAgICAgICAgIiAgRmlyc3QgYXQgb3V0cHV0IGxpbmUgJGZpcnN0X291dGRlbnRlZF9saW5lX2F0XG4iKTsKCiAgICAgICAgaWYgKCAkb3V0ZGVudGVkX2xpbmVfY291bnQgPiAxICkgewogICAgICAgICAgICBteSAkbGFzdF9vdXRkZW50ZWRfbGluZV9hdCA9ICRzZWxmLT5bX2xhc3Rfb3V0ZGVudGVkX2xpbmVfYXRfXTsKICAgICAgICAgICAgJHNlbGYtPndyaXRlX2xvZ2ZpbGVfZW50cnkoCiAgICAgICAgICAgICAgICAiICAgTGFzdCBhdCBvdXRwdXQgbGluZSAkbGFzdF9vdXRkZW50ZWRfbGluZV9hdFxuIik7CiAgICAgICAgfQogICAgICAgICRzZWxmLT53cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICAgICAiICB1c2UgLW5vbGwgdG8gcHJldmVudCBvdXRkZW50aW5nLCAtbD1uIHRvIGluY3JlYXNlIGxpbmUgbGVuZ3RoXG4iCiAgICAgICAgKTsKICAgICAgICAkc2VsZi0+d3JpdGVfbG9nZmlsZV9lbnRyeSgiXG4iKTsKICAgIH0KICAgIHJldHVybjsKfQoxOwo=</File>
        <File Location="Kernel/cpan-lib/Perl/Tidy/Tokenizer.pm" Permission="660" Encode="Base64">IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBUaGUgUGVybDo6VGlkeTo6VG9rZW5pemVyIHBhY2thZ2UgaXMgZXNzZW50aWFsbHkgYSBmaWx0ZXIgd2hpY2gKIyByZWFkcyBsaW5lcyBvZiBwZXJsIHNvdXJjZSBjb2RlIGZyb20gYSBzb3VyY2Ugb2JqZWN0IGFuZCBwcm92aWRlcwojIGNvcnJlc3BvbmRpbmcgdG9rZW5pemVkIGxpbmVzIHRocm91Z2ggaXRzIGdldF9saW5lKCkgbWV0aG9kLiAgTGluZXMKIyBmbG93IGZyb20gdGhlIHNvdXJjZV9vYmplY3QgdG8gdGhlIGNhbGxlciBsaWtlIHRoaXM6CiMKIyBzb3VyY2Vfb2JqZWN0IC0tPiBMaW5lQnVmZmVyX29iamVjdCAtLT4gVG9rZW5pemVyIC0tPiAgY2FsbGluZyByb3V0aW5lCiMgICBnZXRfbGluZSgpICAgICAgICAgZ2V0X2xpbmUoKSAgICAgICAgICAgZ2V0X2xpbmUoKSAgICAgbGluZV9vZl90b2tlbnMKIwojIFRoZSBzb3VyY2Ugb2JqZWN0IGNhbiBiZSBhbnkgb2JqZWN0IHdpdGggYSBnZXRfbGluZSgpIG1ldGhvZCB3aGljaAojIHN1cHBsaWVzIG9uZSBsaW5lIChhIGNoYXJhY3RlciBzdHJpbmcpIHBlcmwgY2FsbC4KIyBUaGUgTGluZUJ1ZmZlciBvYmplY3QgaXMgY3JlYXRlZCBieSB0aGUgVG9rZW5pemVyLgojIFRoZSBUb2tlbml6ZXIgcmV0dXJucyBhIHJlZmVyZW5jZSB0byBhIGRhdGEgc3RydWN0dXJlICdsaW5lX29mX3Rva2VucycKIyBjb250YWluaW5nIG9uZSB0b2tlbml6ZWQgbGluZSBmb3IgZWFjaCBjYWxsIHRvIGl0cyBnZXRfbGluZSgpIG1ldGhvZC4KIwojIFdBUk5JTkc6IFRoaXMgaXMgbm90IGEgcmVhbCBjbGFzcy4gIE9ubHkgb25lIHRva2VuaXplciBteSBiZSB1c2VkLgojCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKcGFja2FnZSBQZXJsOjpUaWR5OjpUb2tlbml6ZXI7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKb3VyICRWRVJTSU9OID0gJzIwMjEwMTExJzsKCnVzZSBQZXJsOjpUaWR5OjpMaW5lQnVmZmVyOwp1c2UgQ2FycDsKCiMgUEFDS0FHRSBWQVJJQUJMRVMgZm9yIHByb2Nlc3NpbmcgYW4gZW50aXJlIEZJTEUuCiMgVGhlc2UgbXVzdCBiZSBwYWNrYWdlIHZhcmlhYmxlcyBiZWNhdXNlIG1vc3QgbWF5IGdldCBsb2NhbGl6ZWQgZHVyaW5nCiMgcHJvY2Vzc2luZy4gIE1vc3QgYXJlIGluaXRpYWxpemVkIGluIHN1YiBwcmVwYXJlX2Zvcl9hX25ld19maWxlLgp1c2UgdmFycyBxd3sKICAkdG9rZW5pemVyX3NlbGYKCiAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4KICAkbGFzdF9ub25ibGFua190eXBlCiAgJGxhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZQogICRzdGF0ZW1lbnRfdHlwZQogICRpbl9hdHRyaWJ1dGVfbGlzdAogICRjdXJyZW50X3BhY2thZ2UKICAkY29udGV4dAoKICAlaXNfY29uc3RhbnQKICAlaXNfdXNlcl9mdW5jdGlvbgogICV1c2VyX2Z1bmN0aW9uX3Byb3RvdHlwZQogICVpc19ibG9ja19mdW5jdGlvbgogICVpc19ibG9ja19saXN0X2Z1bmN0aW9uCiAgJXNhd19mdW5jdGlvbl9kZWZpbml0aW9uCiAgJXNhd191c2VfbW9kdWxlCgogICRicmFjZV9kZXB0aAogICRwYXJlbl9kZXB0aAogICRzcXVhcmVfYnJhY2tldF9kZXB0aAoKICBAY3VycmVudF9kZXB0aAogIEB0b3RhbF9kZXB0aAogICR0b3RhbF9kZXB0aAogIEBuZXN0aW5nX3NlcXVlbmNlX251bWJlcgogIEBjdXJyZW50X3NlcXVlbmNlX251bWJlcgogIEBwYXJlbl90eXBlCiAgQHBhcmVuX3NlbWljb2xvbl9jb3VudAogIEBwYXJlbl9zdHJ1Y3R1cmFsX3R5cGUKICBAYnJhY2VfdHlwZQogIEBicmFjZV9zdHJ1Y3R1cmFsX3R5cGUKICBAYnJhY2VfY29udGV4dAogIEBicmFjZV9wYWNrYWdlCiAgQHNxdWFyZV9icmFja2V0X3R5cGUKICBAc3F1YXJlX2JyYWNrZXRfc3RydWN0dXJhbF90eXBlCiAgQGRlcHRoX2FycmF5CiAgQG5lc3RlZF90ZXJuYXJ5X2ZsYWcKICBAbmVzdGVkX3N0YXRlbWVudF90eXBlCiAgQHN0YXJ0aW5nX2xpbmVfb2ZfY3VycmVudF9kZXB0aAp9OwoKIyBHTE9CQUwgQ09OU1RBTlRTIGZvciByb3V0aW5lcyBpbiB0aGlzIHBhY2thZ2UsCiMgSW5pdGlhbGl6ZWQgaW4gYSBCRUdJTiBibG9jay4KdXNlIHZhcnMgcXd7CiAgJWlzX2luZGlyZWN0X29iamVjdF90YWtlcgogICVpc19ibG9ja19vcGVyYXRvcgogICVleHBlY3Rpbmdfb3BlcmF0b3JfdG9rZW4KICAlZXhwZWN0aW5nX29wZXJhdG9yX3R5cGVzCiAgJWV4cGVjdGluZ190ZXJtX3R5cGVzCiAgJWV4cGVjdGluZ190ZXJtX3Rva2VuCiAgJWlzX2RpZ3JhcGgKICAlaXNfZmlsZV90ZXN0X29wZXJhdG9yCiAgJWlzX3RyaWdyYXBoCiAgJWlzX3RldHJhZ3JhcGgKICAlaXNfdmFsaWRfdG9rZW5fdHlwZQogICVpc19rZXl3b3JkCiAgJWlzX2NvZGVfYmxvY2tfdG9rZW4KICAlcmVhbGx5X3dhbnRfdGVybQogIEBvcGVuaW5nX2JyYWNlX25hbWVzCiAgQGNsb3NpbmdfYnJhY2VfbmFtZXMKICAlaXNfa2V5d29yZF90YWtpbmdfbGlzdAogICVpc19rZXl3b3JkX3Rha2luZ19vcHRpb25hbF9hcmcKICAlaXNfa2V5d29yZF9yZWplY3Rpbmdfc2xhc2hfYXNfcGF0dGVybl9kZWxpbWl0ZXIKICAlaXNfa2V5d29yZF9yZWplY3RpbmdfcXVlc3Rpb25fYXNfcGF0dGVybl9kZWxpbWl0ZXIKICAlaXNfcV9xcV9xd19xeF9xcl9zX3lfdHJfbQogICVpc19zdWIKICAlaXNfcGFja2FnZQogICVpc19jb21tYV9xdWVzdGlvbl9jb2xvbgogICVvdGhlcl9saW5lX2VuZGluZ3MKfTsKCiMgcG9zc2libGUgdmFsdWVzIG9mIG9wZXJhdG9yX2V4cGVjdGVkKCkKdXNlIGNvbnN0YW50IFRFUk0gICAgID0+IC0xOwp1c2UgY29uc3RhbnQgVU5LTk9XTiAgPT4gMDsKdXNlIGNvbnN0YW50IE9QRVJBVE9SID0+IDE7CgojIHBvc3NpYmxlIHZhbHVlcyBvZiBjb250ZXh0CnVzZSBjb25zdGFudCBTQ0FMQVJfQ09OVEVYVCAgPT4gLTE7CnVzZSBjb25zdGFudCBVTktOT1dOX0NPTlRFWFQgPT4gMDsKdXNlIGNvbnN0YW50IExJU1RfQ09OVEVYVCAgICA9PiAxOwoKIyBNYXhpbXVtIG51bWJlciBvZiBsaXR0bGUgbWVzc2FnZXM7IHByb2JhYmx5IG5lZWQgbm90IGJlIGNoYW5nZWQuCnVzZSBjb25zdGFudCBNQVhfTkFHX01FU1NBR0VTID0+IDY7CgpCRUdJTiB7CgogICAgIyBBcnJheSBpbmRleCBuYW1lcyBmb3IgJHNlbGYKICAgIG15ICRpID0gMDsKICAgIHVzZSBjb25zdGFudCB7CiAgICAgICAgX3JoZXJlX3RhcmdldF9saXN0XyAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2luX2hlcmVfZG9jXyAgICAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2hlcmVfZG9jX3RhcmdldF8gICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2hlcmVfcXVvdGVfY2hhcmFjdGVyXyAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2luX2RhdGFfICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2luX2VuZF8gICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2luX2Zvcm1hdF8gICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2luX2Vycm9yXyAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2luX3BvZF8gICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2luX2F0dHJpYnV0ZV9saXN0XyAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2luX3F1b3RlXyAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3F1b3RlX3RhcmdldF8gICAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2xpbmVfc3RhcnRfcXVvdGVfICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3N0YXJ0aW5nX2xldmVsXyAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2tub3dfc3RhcnRpbmdfbGV2ZWxfICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3RhYnNpemVfICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2luZGVudF9jb2x1bW5zXyAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2xvb2tfZm9yX2hhc2hfYmFuZ18gICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3RyaW1fcXdfICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2NvbnRpbnVhdGlvbl9pbmRlbnRhdGlvbl8gICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX291dGRlbnRfbGFiZWxzXyAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2xhc3RfbGluZV9udW1iZXJfICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3Nhd19wZXJsX2Rhc2hfUF8gICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3Nhd19wZXJsX2Rhc2hfd18gICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3Nhd191c2Vfc3RyaWN0XyAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3Nhd192X3N0cmluZ18gICAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2hpdF9idWdfICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2xvb2tfZm9yX2F1dG9sb2FkZXJfICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2xvb2tfZm9yX3NlbGZsb2FkZXJfICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3Nhd19hdXRvbG9hZGVyXyAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3Nhd19zZWxmbG9hZGVyXyAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3Nhd19oYXNoX2JhbmdfICAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3Nhd19lbmRfICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3Nhd19kYXRhXyAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3Nhd19uZWdhdGl2ZV9pbmRlbnRhdGlvbl8gICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3N0YXJ0ZWRfdG9rZW5pemluZ18gICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2xpbmVfYnVmZmVyX29iamVjdF8gICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2RlYnVnZ2VyX29iamVjdF8gICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2RpYWdub3N0aWNzX29iamVjdF8gICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2xvZ2dlcl9vYmplY3RfICAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3VuZXhwZWN0ZWRfZXJyb3JfY291bnRfICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3N0YXJ0ZWRfbG9va2luZ19mb3JfaGVyZV90YXJnZXRfYXRfID0+ICRpKyssCiAgICAgICAgX25lYXJseV9tYXRjaGVkX2hlcmVfdGFyZ2V0X2F0XyAgICAgID0+ICRpKyssCiAgICAgICAgX2xpbmVfb2ZfdGV4dF8gICAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3Jsb3dlcl9jYXNlX2xhYmVsc19hdF8gICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX2V4dGVuZGVkX3N5bnRheF8gICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX21heGltdW1fbGV2ZWxfICAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3RydWVfYnJhY2VfZXJyb3JfY291bnRfICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3JPcHRzX21heGltdW1fbGV2ZWxfZXJyb3JzXyAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3JPcHRzX21heGltdW1fdW5leHBlY3RlZF9lcnJvcnNfICAgID0+ICRpKyssCiAgICAgICAgX3JPcHRzX2xvZ2ZpbGVfICAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX3JPcHRzXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICB9Owp9Cgp7ICAgICMjIGNsb3N1cmUgZm9yIHN1YnMgdG8gY291bnQgaW5zdGFuY2VzCgogICAgIyBtZXRob2RzIHRvIGNvdW50IGluc3RhbmNlcwogICAgbXkgJF9jb3VudCA9IDA7CiAgICBzdWIgZ2V0X2NvdW50ICAgICAgICB7IHJldHVybiAkX2NvdW50OyB9CiAgICBzdWIgX2luY3JlbWVudF9jb3VudCB7IHJldHVybiArKyRfY291bnQgfQogICAgc3ViIF9kZWNyZW1lbnRfY291bnQgeyByZXR1cm4gLS0kX2NvdW50IH0KfQoKc3ViIERFU1RST1kgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICRzZWxmLT5fZGVjcmVtZW50X2NvdW50KCk7CiAgICByZXR1cm47Cn0KCnN1YiBBVVRPTE9BRCB7CgogICAgIyBDYXRjaCBhbnkgdW5kZWZpbmVkIHN1YiBjYWxscyBzbyB0aGF0IHdlIGFyZSBzdXJlIHRvIGdldAogICAgIyBzb21lIGRpYWdub3N0aWMgaW5mb3JtYXRpb24uICBUaGlzIHN1YiBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkCiAgICAjIGV4Y2VwdCBmb3IgYSBwcm9ncmFtbWluZyBlcnJvci4KICAgIG91ciAkQVVUT0xPQUQ7CiAgICByZXR1cm4gaWYgKCAkQVVUT0xPQUQgPX4gL1xiREVTVFJPWSQvICk7CiAgICBteSAoICRwa2csICRmbmFtZSwgJGxubyApID0gY2FsbGVyKCk7CiAgICBteSAkbXlfcGFja2FnZSA9IF9fUEFDS0FHRV9fOwogICAgcHJpbnQgU1RERVJSIDw8RU9NOwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVycm9yIGRldGVjdGVkIGluIHBhY2thZ2UgJyRteV9wYWNrYWdlJywgdmVyc2lvbiAkVkVSU0lPTgpSZWNlaXZlZCB1bmV4cGVjdGVkIEFVVE9MT0FEIGNhbGwgZm9yIHN1YiAnJEFVVE9MT0FEJwpDYWxsZWQgZnJvbSBwYWNrYWdlOiAnJHBrZycgIApDYWxsZWQgZnJvbSBGaWxlICckZm5hbWUnICBhdCBsaW5lICckbG5vJwpUaGlzIGVycm9yIGlzIHByb2JhYmx5IGR1ZSB0byBhIHJlY2VudCBwcm9ncmFtbWluZyBjaGFuZ2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFT00KICAgIGV4aXQgMTsKfQoKc3ViIGNoZWNrX29wdGlvbnMgewoKICAgICMgQ2hlY2sgVG9rZW5pemVyIHBhcmFtZXRlcnMKICAgIG15ICRyT3B0cyA9IHNoaWZ0OwoKICAgICVpc19zdWIgPSAoKTsKICAgICRpc19zdWJ7J3N1Yid9ID0gMTsKCiAgICAjIEluc3RhbGwgYW55IGFsaWFzZXMgdG8gJ3N1YicKICAgIGlmICggJHJPcHRzLT57J3N1Yi1hbGlhcy1saXN0J30gKSB7CgogICAgICAgICMgTm90ZSB0aGF0IGFueSAnc3ViLWFsaWFzLWxpc3QnIGhhcyBiZWVuIHByZXByb2Nlc3NlZCB0bwogICAgICAgICMgYmUgYSB0cmltbWVkLCBzcGFjZS1zZXBhcmF0ZWQgbGlzdCB3aGljaCBpbmNsdWRlcyAnc3ViJwogICAgICAgICMgZm9yIGV4YW1wbGUsIGl0IG1pZ2h0IGJlICdzdWIgbWV0aG9kIGZ1bicKICAgICAgICBteSBAc3ViX2FsaWFzX2xpc3QgPSBzcGxpdCAvXHMrLywgJHJPcHRzLT57J3N1Yi1hbGlhcy1saXN0J307CiAgICAgICAgZm9yZWFjaCBteSAkd29yZCAoQHN1Yl9hbGlhc19saXN0KSB7CiAgICAgICAgICAgICRpc19zdWJ7JHdvcmR9ID0gMTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBuZXcgewoKICAgIG15ICggJGNsYXNzLCBAYXJncyApID0gQF87CgogICAgIyBOb3RlOiAndGFicycgYW5kICdpbmRlbnRfY29sdW1ucycgYXJlIHRlbXBvcmFyeSBhbmQgc2hvdWxkIGJlCiAgICAjIHJlbW92ZWQgYXNhcAogICAgbXkgJWRlZmF1bHRzID0gKAogICAgICAgIHNvdXJjZV9vYmplY3QgICAgICAgID0+IHVuZGVmLAogICAgICAgIGRlYnVnZ2VyX29iamVjdCAgICAgID0+IHVuZGVmLAogICAgICAgIGRpYWdub3N0aWNzX29iamVjdCAgID0+IHVuZGVmLAogICAgICAgIGxvZ2dlcl9vYmplY3QgICAgICAgID0+IHVuZGVmLAogICAgICAgIHN0YXJ0aW5nX2xldmVsICAgICAgID0+IHVuZGVmLAogICAgICAgIGluZGVudF9jb2x1bW5zICAgICAgID0+IDQsCiAgICAgICAgdGFic2l6ZSAgICAgICAgICAgICAgPT4gOCwKICAgICAgICBsb29rX2Zvcl9oYXNoX2JhbmcgICA9PiAwLAogICAgICAgIHRyaW1fcXcgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgbG9va19mb3JfYXV0b2xvYWRlciAgPT4gMSwKICAgICAgICBsb29rX2Zvcl9zZWxmbG9hZGVyICA9PiAxLAogICAgICAgIHN0YXJ0aW5nX2xpbmVfbnVtYmVyID0+IDEsCiAgICAgICAgZXh0ZW5kZWRfc3ludGF4ICAgICAgPT4gMCwKICAgICAgICByT3B0cyAgICAgICAgICAgICAgICA9PiB7fSwKICAgICk7CiAgICBteSAlYXJncyA9ICggJWRlZmF1bHRzLCBAYXJncyApOwoKICAgICMgd2UgYXJlIGdpdmVuIGFuIG9iamVjdCB3aXRoIGEgZ2V0X2xpbmUoKSBtZXRob2QgdG8gc3VwcGx5IHNvdXJjZSBsaW5lcwogICAgbXkgJHNvdXJjZV9vYmplY3QgPSAkYXJnc3tzb3VyY2Vfb2JqZWN0fTsKICAgIG15ICRyT3B0cyAgICAgICAgID0gJGFyZ3N7ck9wdHN9OwoKICAgICMgd2UgY3JlYXRlIGFub3RoZXIgb2JqZWN0IHdpdGggYSBnZXRfbGluZSgpIGFuZCBwZWVrX2FoZWFkKCkgbWV0aG9kCiAgICBteSAkbGluZV9idWZmZXJfb2JqZWN0ID0gUGVybDo6VGlkeTo6TGluZUJ1ZmZlci0+bmV3KCRzb3VyY2Vfb2JqZWN0KTsKCiAgICAjIFRva2VuaXplciBzdGF0ZSBkYXRhIGlzIGFzIGZvbGxvd3M6CiAgICAjIF9yaGVyZV90YXJnZXRfbGlzdF8gICAgcmVmZXJlbmNlIHRvIGxpc3Qgb2YgaGVyZS1kb2MgdGFyZ2V0cwogICAgIyBfaGVyZV9kb2NfdGFyZ2V0XyAgICAgIHRoZSB0YXJnZXQgc3RyaW5nIGZvciBhIGhlcmUgZG9jdW1lbnQKICAgICMgX2hlcmVfcXVvdGVfY2hhcmFjdGVyXyB0aGUgdHlwZSBvZiBoZXJlLWRvYyBxdW90aW5nICgiICcgYCBvciBub25lKQogICAgIyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGRldGVybWluZSBpZiBpbnRlcnBvbGF0aW9uIGlzIGRvbmUKICAgICMgX3F1b3RlX3RhcmdldF8gICAgICAgICBjaGFyYWN0ZXIgd2Ugc2VlayBpZiBjaGFzaW5nIGEgcXVvdGUKICAgICMgX2xpbmVfc3RhcnRfcXVvdGVfICAgICBsaW5lIHdoZXJlIHdlIHN0YXJ0ZWQgbG9va2luZyBmb3IgYSBsb25nIHF1b3RlCiAgICAjIF9pbl9oZXJlX2RvY18gICAgICAgICAgZmxhZyBpbmRpY2F0aW5nIGlmIHdlIGFyZSBpbiBhIGhlcmUtZG9jCiAgICAjIF9pbl9wb2RfICAgICAgICAgICAgICAgZmxhZyBzZXQgaWYgd2UgYXJlIGluIHBvZCBkb2N1bWVudGF0aW9uCiAgICAjIF9pbl9lcnJvcl8gICAgICAgICAgICAgZmxhZyBzZXQgaWYgd2Ugc2F3IHNldmVyZSBlcnJvciAoYmluYXJ5IGluIHNjcmlwdCkKICAgICMgX2luX2RhdGFfICAgICAgICAgICAgICBmbGFnIHNldCBpZiB3ZSBhcmUgaW4gX19EQVRBX18gc2VjdGlvbgogICAgIyBfaW5fZW5kXyAgICAgICAgICAgICAgIGZsYWcgc2V0IGlmIHdlIGFyZSBpbiBfX0VORF9fIHNlY3Rpb24KICAgICMgX2luX2Zvcm1hdF8gICAgICAgICAgICBmbGFnIHNldCBpZiB3ZSBhcmUgaW4gYSBmb3JtYXQgZGVzY3JpcHRpb24KICAgICMgX2luX2F0dHJpYnV0ZV9saXN0XyAgICBmbGFnIHRlbGxpbmcgaWYgd2UgYXJlIGxvb2tpbmcgZm9yIGF0dHJpYnV0ZXMKICAgICMgX2luX3F1b3RlXyAgICAgICAgICAgICBmbGFnIHRlbGxpbmcgaWYgd2UgYXJlIGNoYXNpbmcgYSBxdW90ZQogICAgIyBfc3RhcnRpbmdfbGV2ZWxfICAgICAgIGluZGVudGF0aW9uIGxldmVsIG9mIGZpcnN0IGxpbmUKICAgICMgX2xpbmVfYnVmZmVyX29iamVjdF8gICBvYmplY3Qgd2l0aCBnZXRfbGluZSgpIG1ldGhvZCB0byBzdXBwbHkgc291cmNlIGNvZGUKICAgICMgX2RpYWdub3N0aWNzX29iamVjdF8gICBwbGFjZSB0byB3cml0ZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24KICAgICMgX3VuZXhwZWN0ZWRfZXJyb3JfY291bnRfIGVycm9yIGNvdW50IHVzZWQgdG8gbGltaXQgb3V0cHV0CiAgICAjIF9sb3dlcl9jYXNlX2xhYmVsc19hdF8gbGluZSBudW1iZXJzIHdoZXJlIGxvd2VyIGNhc2UgbGFiZWxzIHNlZW4KICAgICMgX2hpdF9idWdfICAgICAgICAgICAgICBwcm9ncmFtIGJ1ZyBkZXRlY3RlZAoKICAgIG15ICRzZWxmID0gW107CiAgICAkc2VsZi0+W19yaGVyZV90YXJnZXRfbGlzdF9dICAgICAgICA9IFtdOwogICAgJHNlbGYtPltfaW5faGVyZV9kb2NfXSAgICAgICAgICAgICAgPSAwOwogICAgJHNlbGYtPltfaGVyZV9kb2NfdGFyZ2V0X10gICAgICAgICAgPSAiIjsKICAgICRzZWxmLT5bX2hlcmVfcXVvdGVfY2hhcmFjdGVyX10gICAgID0gIiI7CiAgICAkc2VsZi0+W19pbl9kYXRhX10gICAgICAgICAgICAgICAgICA9IDA7CiAgICAkc2VsZi0+W19pbl9lbmRfXSAgICAgICAgICAgICAgICAgICA9IDA7CiAgICAkc2VsZi0+W19pbl9mb3JtYXRfXSAgICAgICAgICAgICAgICA9IDA7CiAgICAkc2VsZi0+W19pbl9lcnJvcl9dICAgICAgICAgICAgICAgICA9IDA7CiAgICAkc2VsZi0+W19pbl9wb2RfXSAgICAgICAgICAgICAgICAgICA9IDA7CiAgICAkc2VsZi0+W19pbl9hdHRyaWJ1dGVfbGlzdF9dICAgICAgICA9IDA7CiAgICAkc2VsZi0+W19pbl9xdW90ZV9dICAgICAgICAgICAgICAgICA9IDA7CiAgICAkc2VsZi0+W19xdW90ZV90YXJnZXRfXSAgICAgICAgICAgICA9ICIiOwogICAgJHNlbGYtPltfbGluZV9zdGFydF9xdW90ZV9dICAgICAgICAgPSAtMTsKICAgICRzZWxmLT5bX3N0YXJ0aW5nX2xldmVsX10gICAgICAgICAgID0gJGFyZ3N7c3RhcnRpbmdfbGV2ZWx9OwogICAgJHNlbGYtPltfa25vd19zdGFydGluZ19sZXZlbF9dICAgICAgPSBkZWZpbmVkKCAkYXJnc3tzdGFydGluZ19sZXZlbH0gKTsKICAgICRzZWxmLT5bX3RhYnNpemVfXSAgICAgICAgICAgICAgICAgID0gJGFyZ3N7dGFic2l6ZX07CiAgICAkc2VsZi0+W19pbmRlbnRfY29sdW1uc19dICAgICAgICAgICA9ICRhcmdze2luZGVudF9jb2x1bW5zfTsKICAgICRzZWxmLT5bX2xvb2tfZm9yX2hhc2hfYmFuZ19dICAgICAgID0gJGFyZ3N7bG9va19mb3JfaGFzaF9iYW5nfTsKICAgICRzZWxmLT5bX3RyaW1fcXdfXSAgICAgICAgICAgICAgICAgID0gJGFyZ3N7dHJpbV9xd307CiAgICAkc2VsZi0+W19jb250aW51YXRpb25faW5kZW50YXRpb25fXSA9ICRhcmdze2NvbnRpbnVhdGlvbl9pbmRlbnRhdGlvbn07CiAgICAkc2VsZi0+W19vdXRkZW50X2xhYmVsc19dICAgICAgICAgICA9ICRhcmdze291dGRlbnRfbGFiZWxzfTsKICAgICRzZWxmLT5bX2xhc3RfbGluZV9udW1iZXJfXSAgICAgICAgID0gJGFyZ3N7c3RhcnRpbmdfbGluZV9udW1iZXJ9IC0gMTsKICAgICRzZWxmLT5bX3Nhd19wZXJsX2Rhc2hfUF9dICAgICAgICAgID0gMDsKICAgICRzZWxmLT5bX3Nhd19wZXJsX2Rhc2hfd19dICAgICAgICAgID0gMDsKICAgICRzZWxmLT5bX3Nhd191c2Vfc3RyaWN0X10gICAgICAgICAgID0gMDsKICAgICRzZWxmLT5bX3Nhd192X3N0cmluZ19dICAgICAgICAgICAgID0gMDsKICAgICRzZWxmLT5bX2hpdF9idWdfXSAgICAgICAgICAgICAgICAgID0gMDsKICAgICRzZWxmLT5bX2xvb2tfZm9yX2F1dG9sb2FkZXJfXSAgICAgID0gJGFyZ3N7bG9va19mb3JfYXV0b2xvYWRlcn07CiAgICAkc2VsZi0+W19sb29rX2Zvcl9zZWxmbG9hZGVyX10gICAgICA9ICRhcmdze2xvb2tfZm9yX3NlbGZsb2FkZXJ9OwogICAgJHNlbGYtPltfc2F3X2F1dG9sb2FkZXJfXSAgICAgICAgICAgPSAwOwogICAgJHNlbGYtPltfc2F3X3NlbGZsb2FkZXJfXSAgICAgICAgICAgPSAwOwogICAgJHNlbGYtPltfc2F3X2hhc2hfYmFuZ19dICAgICAgICAgICAgPSAwOwogICAgJHNlbGYtPltfc2F3X2VuZF9dICAgICAgICAgICAgICAgICAgPSAwOwogICAgJHNlbGYtPltfc2F3X2RhdGFfXSAgICAgICAgICAgICAgICAgPSAwOwogICAgJHNlbGYtPltfc2F3X25lZ2F0aXZlX2luZGVudGF0aW9uX10gPSAwOwogICAgJHNlbGYtPltfc3RhcnRlZF90b2tlbml6aW5nX10gICAgICAgPSAwOwogICAgJHNlbGYtPltfbGluZV9idWZmZXJfb2JqZWN0X10gICAgICAgPSAkbGluZV9idWZmZXJfb2JqZWN0OwogICAgJHNlbGYtPltfZGVidWdnZXJfb2JqZWN0X10gICAgICAgICAgPSAkYXJnc3tkZWJ1Z2dlcl9vYmplY3R9OwogICAgJHNlbGYtPltfZGlhZ25vc3RpY3Nfb2JqZWN0X10gICAgICAgPSAkYXJnc3tkaWFnbm9zdGljc19vYmplY3R9OwogICAgJHNlbGYtPltfbG9nZ2VyX29iamVjdF9dICAgICAgICAgICAgPSAkYXJnc3tsb2dnZXJfb2JqZWN0fTsKICAgICRzZWxmLT5bX3VuZXhwZWN0ZWRfZXJyb3JfY291bnRfXSAgID0gMDsKICAgICRzZWxmLT5bX3N0YXJ0ZWRfbG9va2luZ19mb3JfaGVyZV90YXJnZXRfYXRfXSA9IDA7CiAgICAkc2VsZi0+W19uZWFybHlfbWF0Y2hlZF9oZXJlX3RhcmdldF9hdF9dICAgICAgPSB1bmRlZjsKICAgICRzZWxmLT5bX2xpbmVfb2ZfdGV4dF9dICAgICAgICAgICAgICAgICAgICAgICA9ICIiOwogICAgJHNlbGYtPltfcmxvd2VyX2Nhc2VfbGFiZWxzX2F0X10gICAgICAgICAgICAgID0gdW5kZWY7CiAgICAkc2VsZi0+W19leHRlbmRlZF9zeW50YXhfXSAgICAgICAgICAgICAgICAgICAgPSAkYXJnc3tleHRlbmRlZF9zeW50YXh9OwogICAgJHNlbGYtPltfbWF4aW11bV9sZXZlbF9dICAgICAgICAgICAgICAgICAgICAgID0gMDsKICAgICRzZWxmLT5bX3RydWVfYnJhY2VfZXJyb3JfY291bnRfXSAgICAgICAgICAgICA9IDA7CiAgICAkc2VsZi0+W19yT3B0c19tYXhpbXVtX2xldmVsX2Vycm9yc19dID0gJHJPcHRzLT57J21heGltdW0tbGV2ZWwtZXJyb3JzJ307CiAgICAkc2VsZi0+W19yT3B0c19tYXhpbXVtX3VuZXhwZWN0ZWRfZXJyb3JzX10gPQogICAgICAkck9wdHMtPnsnbWF4aW11bS11bmV4cGVjdGVkLWVycm9ycyd9OwogICAgJHNlbGYtPltfck9wdHNfbG9nZmlsZV9dID0gJHJPcHRzLT57J2xvZ2ZpbGUnfTsKICAgICRzZWxmLT5bX3JPcHRzX10gICAgICAgICA9ICRyT3B0czsKICAgIGJsZXNzICRzZWxmLCAkY2xhc3M7CgogICAgJHRva2VuaXplcl9zZWxmID0gJHNlbGY7CgogICAgcHJlcGFyZV9mb3JfYV9uZXdfZmlsZSgpOwogICAgZmluZF9zdGFydGluZ19pbmRlbnRhdGlvbl9sZXZlbCgpOwoKICAgICMgVGhpcyBpcyBub3QgYSBmdWxsIGNsYXNzIHlldCwgc28gZGllIGlmIGFuIGF0dGVtcHQgaXMgbWFkZSB0bwogICAgIyBjcmVhdGUgbW9yZSB0aGFuIG9uZSBvYmplY3QuCgogICAgaWYgKCBfaW5jcmVtZW50X2NvdW50KCkgPiAxICkgewogICAgICAgIGNvbmZlc3MKIkF0dGVtcHQgdG8gY3JlYXRlIG1vcmUgdGhhbiAxIG9iamVjdCBpbiAkY2xhc3MsIHdoaWNoIGlzIG5vdCBhIHRydWUgY2xhc3MgeWV0XG4iOwogICAgfQoKICAgIHJldHVybiAkc2VsZjsKCn0KCiMgaW50ZXJmYWNlIHRvIFBlcmw6OlRpZHk6OkxvZ2dlciByb3V0aW5lcwpzdWIgd2FybmluZyB7CiAgICBteSAkbXNnICAgICAgICAgICA9IHNoaWZ0OwogICAgbXkgJGxvZ2dlcl9vYmplY3QgPSAkdG9rZW5pemVyX3NlbGYtPltfbG9nZ2VyX29iamVjdF9dOwogICAgaWYgKCRsb2dnZXJfb2JqZWN0KSB7CiAgICAgICAgJGxvZ2dlcl9vYmplY3QtPndhcm5pbmcoJG1zZyk7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBjb21wbGFpbiB7CiAgICBteSAkbXNnICAgICAgICAgICA9IHNoaWZ0OwogICAgbXkgJGxvZ2dlcl9vYmplY3QgPSAkdG9rZW5pemVyX3NlbGYtPltfbG9nZ2VyX29iamVjdF9dOwogICAgaWYgKCRsb2dnZXJfb2JqZWN0KSB7CiAgICAgICAgJGxvZ2dlcl9vYmplY3QtPmNvbXBsYWluKCRtc2cpOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgd3JpdGVfbG9nZmlsZV9lbnRyeSB7CiAgICBteSAkbXNnICAgICAgICAgICA9IHNoaWZ0OwogICAgbXkgJGxvZ2dlcl9vYmplY3QgPSAkdG9rZW5pemVyX3NlbGYtPltfbG9nZ2VyX29iamVjdF9dOwogICAgaWYgKCRsb2dnZXJfb2JqZWN0KSB7CiAgICAgICAgJGxvZ2dlcl9vYmplY3QtPndyaXRlX2xvZ2ZpbGVfZW50cnkoJG1zZyk7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBpbnRlcnJ1cHRfbG9nZmlsZSB7CiAgICBteSAkbG9nZ2VyX29iamVjdCA9ICR0b2tlbml6ZXJfc2VsZi0+W19sb2dnZXJfb2JqZWN0X107CiAgICBpZiAoJGxvZ2dlcl9vYmplY3QpIHsKICAgICAgICAkbG9nZ2VyX29iamVjdC0+aW50ZXJydXB0X2xvZ2ZpbGUoKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIHJlc3VtZV9sb2dmaWxlIHsKICAgIG15ICRsb2dnZXJfb2JqZWN0ID0gJHRva2VuaXplcl9zZWxmLT5bX2xvZ2dlcl9vYmplY3RfXTsKICAgIGlmICgkbG9nZ2VyX29iamVjdCkgewogICAgICAgICRsb2dnZXJfb2JqZWN0LT5yZXN1bWVfbG9nZmlsZSgpOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgaW5jcmVtZW50X2JyYWNlX2Vycm9yIHsKICAgIG15ICRsb2dnZXJfb2JqZWN0ID0gJHRva2VuaXplcl9zZWxmLT5bX2xvZ2dlcl9vYmplY3RfXTsKICAgIGlmICgkbG9nZ2VyX29iamVjdCkgewogICAgICAgICRsb2dnZXJfb2JqZWN0LT5pbmNyZW1lbnRfYnJhY2VfZXJyb3IoKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIHJlcG9ydF9kZWZpbml0ZV9idWcgewogICAgJHRva2VuaXplcl9zZWxmLT5bX2hpdF9idWdfXSA9IDE7CiAgICBteSAkbG9nZ2VyX29iamVjdCA9ICR0b2tlbml6ZXJfc2VsZi0+W19sb2dnZXJfb2JqZWN0X107CiAgICBpZiAoJGxvZ2dlcl9vYmplY3QpIHsKICAgICAgICAkbG9nZ2VyX29iamVjdC0+cmVwb3J0X2RlZmluaXRlX2J1ZygpOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgYnJhY2Vfd2FybmluZyB7CiAgICBteSAkbXNnICAgICAgICAgICA9IHNoaWZ0OwogICAgbXkgJGxvZ2dlcl9vYmplY3QgPSAkdG9rZW5pemVyX3NlbGYtPltfbG9nZ2VyX29iamVjdF9dOwogICAgaWYgKCRsb2dnZXJfb2JqZWN0KSB7CiAgICAgICAgJGxvZ2dlcl9vYmplY3QtPmJyYWNlX3dhcm5pbmcoJG1zZyk7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBnZXRfc2F3X2JyYWNlX2Vycm9yIHsKICAgIG15ICRsb2dnZXJfb2JqZWN0ID0gJHRva2VuaXplcl9zZWxmLT5bX2xvZ2dlcl9vYmplY3RfXTsKICAgIGlmICgkbG9nZ2VyX29iamVjdCkgewogICAgICAgIHJldHVybiAkbG9nZ2VyX29iamVjdC0+Z2V0X3Nhd19icmFjZV9lcnJvcigpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9Cn0KCnN1YiBnZXRfdW5leHBlY3RlZF9lcnJvcl9jb3VudCB7CiAgICBteSAoJHNlbGYpID0gQF87CiAgICByZXR1cm4gJHNlbGYtPltfdW5leHBlY3RlZF9lcnJvcl9jb3VudF9dOwp9CgojIGludGVyZmFjZSB0byBQZXJsOjpUaWR5OjpEaWFnbm9zdGljcyByb3V0aW5lcwpzdWIgd3JpdGVfZGlhZ25vc3RpY3MgewogICAgbXkgJG1zZyA9IHNoaWZ0OwogICAgaWYgKCAkdG9rZW5pemVyX3NlbGYtPltfZGlhZ25vc3RpY3Nfb2JqZWN0X10gKSB7CiAgICAgICAgJHRva2VuaXplcl9zZWxmLT5bX2RpYWdub3N0aWNzX29iamVjdF9dLT53cml0ZV9kaWFnbm9zdGljcygkbXNnKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIGdldF9tYXhpbXVtX2xldmVsIHsKICAgIHJldHVybiAkdG9rZW5pemVyX3NlbGYtPltfbWF4aW11bV9sZXZlbF9dOwp9CgpzdWIgcmVwb3J0X3Rva2VuaXphdGlvbl9lcnJvcnMgewoKICAgIG15ICgkc2VsZikgPSBAXzsKCiAgICAjIFJlcG9ydCBhbnkgdG9rZW5pemF0aW9uIGVycm9ycyBhbmQgcmV0dXJuIGEgZmxhZyAnJHNldmVyZV9lcnJvcicuCiAgICAjIFNldCAkc2V2ZXJlX2Vycm9yID0gMSBpZiB0aGUgdG9rZW5pemF0aW9ucyBlcnJvcnMgYXJlIHNvIHNldmVyZSB0aGF0CiAgICAjIHRoZSBmb3JtYXR0ZXIgc2hvdWxkIG5vdCBhdHRlbXB0IHRvIGZvcm1hdCB0aGUgZmlsZS4gSW5zdGVhZCwgaXQgd2lsbAogICAgIyBqdXN0IG91dHB1dCB0aGUgZmlsZSB2ZXJiYXRpbS4KCiAgICAjIHNldCBzZXZlcmUgZXJyb3IgZmxhZyBpZiB0b2tlbml6ZXIgaGFzIGVuY291bnRlcmVkIGZpbGUgcmVhZGluZyBwcm9ibGVtcwogICAgIyAoaS5lLiB1bmV4cGVjdGVkIGJpbmFyeSBjaGFyYWN0ZXJzKQogICAgbXkgJHNldmVyZV9lcnJvciA9ICRzZWxmLT5bX2luX2Vycm9yX107CgogICAgbXkgJG1heGxlID0gJHNlbGYtPltfck9wdHNfbWF4aW11bV9sZXZlbF9lcnJvcnNfXTsKICAgIG15ICRtYXh1ZSA9ICRzZWxmLT5bX3JPcHRzX21heGltdW1fdW5leHBlY3RlZF9lcnJvcnNfXTsKICAgICRtYXhsZSA9IDEgdW5sZXNzIGRlZmluZWQoJG1heGxlKTsKICAgICRtYXh1ZSA9IDAgdW5sZXNzIGRlZmluZWQoJG1heHVlKTsKCiAgICBteSAkbGV2ZWwgPSBnZXRfaW5kZW50YXRpb25fbGV2ZWwoKTsKICAgIGlmICggJGxldmVsICE9ICR0b2tlbml6ZXJfc2VsZi0+W19zdGFydGluZ19sZXZlbF9dICkgewogICAgICAgIHdhcm5pbmcoImZpbmFsIGluZGVudGF0aW9uIGxldmVsOiAkbGV2ZWxcbiIpOwogICAgICAgIG15ICRsZXZlbF9kaWZmID0gJHRva2VuaXplcl9zZWxmLT5bX3N0YXJ0aW5nX2xldmVsX10gLSAkbGV2ZWw7CiAgICAgICAgaWYgKCAkbGV2ZWxfZGlmZiA8IDAgKSB7ICRsZXZlbF9kaWZmID0gLSRsZXZlbF9kaWZmIH0KCiAgICAgICAgIyBTZXQgc2V2ZXJlIGVycm9yIGZsYWcgaWYgdGhlIGxldmVsIGVycm9yIGlzIGdyZWF0ZXIgdGhhbiAxLgogICAgICAgICMgVGhlIGZvcm1hdHRlciBjYW4gZnVuY3Rpb24gZm9yIGFueSBsZXZlbCBlcnJvciBidXQgaXQgaXMgcHJvYmFibHkKICAgICAgICAjIGJlc3Qgbm90IHRvIGF0dGVtcHQgZm9ybWF0dGluZyBmb3IgYSBoaWdoIGxldmVsIGVycm9yLgogICAgICAgIGlmICggJG1heGxlID49IDAgJiYgJGxldmVsX2RpZmYgPiAkbWF4bGUgKSB7CiAgICAgICAgICAgICRzZXZlcmVfZXJyb3IgPSAxOwogICAgICAgICAgICB3YXJuaW5nKDw8RU9NKTsKRm9ybWF0dGluZyB3aWxsIGJlIHNraXBwZWQgYmVjYXVzZSBsZXZlbCBlcnJvciAnJGxldmVsX2RpZmYnIGV4Y2VlZHMgLW1heGxlPSRtYXhsZTsgdXNlIC1tYXhsZT0tMSB0byBmb3JjZSBmb3JtYXR0aW5nCkVPTQogICAgICAgIH0KICAgIH0KCiAgICBjaGVja19maW5hbF9uZXN0aW5nX2RlcHRocygpOwoKICAgICMgTGlrZXdpc2UsIGxhcmdlIG51bWJlcnMgb2YgYnJhY2UgZXJyb3JzIHVzdWFsbHkgaW5kaWNhdGUgbm9uLXBlcmwKICAgICMgc2NpcnB0cywgc28gc2V0IHRoZSBzZXZlcmUgZXJyb3IgZmxhZyBhdCBhIGxvdyBudW1iZXIuICBUaGlzIGlzIHNpbWlsYXIKICAgICMgdG8gdGhlIGxldmVsIGNoZWNrLCBidXQgZGlmZmVyZW50IGJlY2F1c2UgYnJhY2VzIG1heSBiYWxhbmNlIGJ1dCBiZQogICAgIyBpbmNvcnJlY3RseSBpbnRlcmxhY2VkLgogICAgaWYgKCAkdG9rZW5pemVyX3NlbGYtPltfdHJ1ZV9icmFjZV9lcnJvcl9jb3VudF9dID4gMiApIHsKICAgICAgICAkc2V2ZXJlX2Vycm9yID0gMTsKICAgIH0KCiAgICBpZiAoICR0b2tlbml6ZXJfc2VsZi0+W19sb29rX2Zvcl9oYXNoX2JhbmdfXQogICAgICAgICYmICEkdG9rZW5pemVyX3NlbGYtPltfc2F3X2hhc2hfYmFuZ19dICkKICAgIHsKICAgICAgICB3YXJuaW5nKAogICAgICAgICAgICAiaGl0IEVPRiB3aXRob3V0IHNlZWluZyBoYXNoLWJhbmcgbGluZTsgbWF5YmUgZG9uJ3QgbmVlZCAteD9cbiIpOwogICAgfQoKICAgIGlmICggJHRva2VuaXplcl9zZWxmLT5bX2luX2Zvcm1hdF9dICkgewogICAgICAgIHdhcm5pbmcoImhpdCBFT0Ygd2hpbGUgaW4gZm9ybWF0IGRlc2NyaXB0aW9uXG4iKTsKICAgIH0KCiAgICBpZiAoICR0b2tlbml6ZXJfc2VsZi0+W19pbl9wb2RfXSApIHsKCiAgICAgICAgIyBKdXN0IHdyaXRlIGxvZyBlbnRyeSBpZiB0aGlzIGlzIGFmdGVyIF9fRU5EX18gb3IgX19EQVRBX18KICAgICAgICAjIGJlY2F1c2UgdGhpcyBoYXBwZW5zIHRvIG9mdGVuLCBhbmQgaXQgaXMgbm90IGxpa2VseSB0byBiZQogICAgICAgICMgYSBwYXJzaW5nIGVycm9yLgogICAgICAgIGlmICggJHRva2VuaXplcl9zZWxmLT5bX3Nhd19kYXRhX10gfHwgJHRva2VuaXplcl9zZWxmLT5bX3Nhd19lbmRfXSApIHsKICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgKImhpdCBlb2Ygd2hpbGUgaW4gcG9kIGRvY3VtZW50YXRpb24gKG5vID1jdXQgc2Vlbilcblx0dGhpcyBjYW4gY2F1c2UgdHJvdWJsZSB3aXRoIHNvbWUgcG9kIHV0aWxpdGllc1xuIgogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGNvbXBsYWluKAoiaGl0IGVvZiB3aGlsZSBpbiBwb2QgZG9jdW1lbnRhdGlvbiAobm8gPWN1dCBzZWVuKVxuXHR0aGlzIGNhbiBjYXVzZSB0cm91YmxlIHdpdGggc29tZSBwb2QgdXRpbGl0aWVzXG4iCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgIH0KCiAgICBpZiAoICR0b2tlbml6ZXJfc2VsZi0+W19pbl9oZXJlX2RvY19dICkgewogICAgICAgICRzZXZlcmVfZXJyb3IgPSAxOwogICAgICAgIG15ICRoZXJlX2RvY190YXJnZXQgPSAkdG9rZW5pemVyX3NlbGYtPltfaGVyZV9kb2NfdGFyZ2V0X107CiAgICAgICAgbXkgJHN0YXJ0ZWRfbG9va2luZ19mb3JfaGVyZV90YXJnZXRfYXQgPQogICAgICAgICAgJHRva2VuaXplcl9zZWxmLT5bX3N0YXJ0ZWRfbG9va2luZ19mb3JfaGVyZV90YXJnZXRfYXRfXTsKICAgICAgICBpZiAoJGhlcmVfZG9jX3RhcmdldCkgewogICAgICAgICAgICB3YXJuaW5nKAoiaGl0IEVPRiBpbiBoZXJlIGRvY3VtZW50IHN0YXJ0aW5nIGF0IGxpbmUgJHN0YXJ0ZWRfbG9va2luZ19mb3JfaGVyZV90YXJnZXRfYXQgd2l0aCB0YXJnZXQ6ICRoZXJlX2RvY190YXJnZXRcbiIKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHdhcm5pbmcoCiJoaXQgRU9GIGluIGhlcmUgZG9jdW1lbnQgc3RhcnRpbmcgYXQgbGluZSAkc3RhcnRlZF9sb29raW5nX2Zvcl9oZXJlX3RhcmdldF9hdCB3aXRoIGVtcHR5IHRhcmdldCBzdHJpbmdcbiIKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgbXkgJG5lYXJseV9tYXRjaGVkX2hlcmVfdGFyZ2V0X2F0ID0KICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+W19uZWFybHlfbWF0Y2hlZF9oZXJlX3RhcmdldF9hdF9dOwogICAgICAgIGlmICgkbmVhcmx5X21hdGNoZWRfaGVyZV90YXJnZXRfYXQpIHsKICAgICAgICAgICAgd2FybmluZygKIk5PVEU6IGFsbW9zdCBtYXRjaGVkIGF0IGlucHV0IGxpbmUgJG5lYXJseV9tYXRjaGVkX2hlcmVfdGFyZ2V0X2F0IGV4Y2VwdCBmb3Igd2hpdGVzcGFjZVxuIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIFNvbWV0aGluZyBpcyBzZXJpb3VzbHkgd3JvbmcgaWYgd2UgZW5kZWQgaW5zaWRlIGEgcXVvdGUKICAgIGlmICggJHRva2VuaXplcl9zZWxmLT5bX2luX3F1b3RlX10gKSB7CiAgICAgICAgJHNldmVyZV9lcnJvciA9IDE7CiAgICAgICAgbXkgJGxpbmVfc3RhcnRfcXVvdGUgPSAkdG9rZW5pemVyX3NlbGYtPltfbGluZV9zdGFydF9xdW90ZV9dOwogICAgICAgIG15ICRxdW90ZV90YXJnZXQgICAgID0gJHRva2VuaXplcl9zZWxmLT5bX3F1b3RlX3RhcmdldF9dOwogICAgICAgIG15ICR3aGF0ID0KICAgICAgICAgICggJHRva2VuaXplcl9zZWxmLT5bX2luX2F0dHJpYnV0ZV9saXN0X10gKQogICAgICAgICAgPyAiYXR0cmlidXRlIGxpc3QiCiAgICAgICAgICA6ICJxdW90ZS9wYXR0ZXJuIjsKICAgICAgICB3YXJuaW5nKAoiaGl0IEVPRiBzZWVraW5nIGVuZCBvZiAkd2hhdCBzdGFydGluZyBhdCBsaW5lICRsaW5lX3N0YXJ0X3F1b3RlIGVuZGluZyBpbiAkcXVvdGVfdGFyZ2V0XG4iCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICR0b2tlbml6ZXJfc2VsZi0+W19oaXRfYnVnX10gKSB7CiAgICAgICAgJHNldmVyZV9lcnJvciA9IDE7CiAgICB9CgogICAgIyBNdWx0aXBsZSAidW5leHBlY3RlZCIgdHlwZSB0b2tlbml6YXRpb24gZXJyb3JzIHVzdWFsbHkgaW5kaWNhdGUgcGFyc2luZwogICAgIyBub24tcGVybCBzY3JpcHRzLCBvciB0aGF0IHNvbWV0aGluZyBpcyBzZXJpb3VzbHkgd3JvbmcsIHNvIHdlIHNob3VsZAogICAgIyBhdm9pZCBmb3JtYXR0aW5nIHRoZW0uICBUaGlzIGNhbiBoYXBwZW4gZm9yIGV4YW1wbGUgaWYgd2UgcnVuIHBlcmx0aWR5IG9uCiAgICAjIGEgc2hlbGwgc2NyaXB0IG9yIGFuIGh0bWwgZmlsZS4gIEJ1dCB1bmZvcnR1bmF0ZWx5IHRoaXMgY2hlY2sgY2FuCiAgICAjIGludGVyZmVyZSB3aXRoIHNvbWUgZXh0ZW5kZWQgc3ludGF4ZXMsIHN1Y2ggYXMgUlBlcmwsIHNvIGl0IGhhcyB0byBiZSBvZmYKICAgICMgYnkgZGVmYXVsdC4KICAgIG15ICR1ZV9jb3VudCA9ICR0b2tlbml6ZXJfc2VsZi0+W191bmV4cGVjdGVkX2Vycm9yX2NvdW50X107CiAgICBpZiAoICRtYXh1ZSA+IDAgJiYgJHVlX2NvdW50ID4gJG1heHVlICkgewogICAgICAgIHdhcm5pbmcoPDxFT00pOwpGb3JtYXR0aW5nIHdpbGwgYmUgc2tpcHBlZCBzaW5jZSB1bmV4cGVjdGVkIHRva2VuIGNvdW50ID0gJHVlX2NvdW50ID4gLW1heHVlPSRtYXh1ZTsgdXNlIC1tYXh1ZT0wIHRvIGZvcmNlIGZvcm1hdHRpbmcKRU9NCiAgICAgICAgJHNldmVyZV9lcnJvciA9IDE7CiAgICB9CgogICAgdW5sZXNzICggJHRva2VuaXplcl9zZWxmLT5bX3Nhd19wZXJsX2Rhc2hfd19dICkgewogICAgICAgIGlmICggJF0gPCA1LjAwNiApIHsKICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiU3VnZ2VzdCBpbmNsdWRpbmcgJy13IHBhcmFtZXRlcidcbiIpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiU3VnZ2VzdCBpbmNsdWRpbmcgJ3VzZSB3YXJuaW5nczsnXG4iKTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkdG9rZW5pemVyX3NlbGYtPltfc2F3X3BlcmxfZGFzaF9QX10gKSB7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiVXNlIG9mIC1QIHBhcmFtZXRlciBmb3IgZGVmaW5lcyBpcyBkaXNjb3VyYWdlZFxuIik7CiAgICB9CgogICAgdW5sZXNzICggJHRva2VuaXplcl9zZWxmLT5bX3Nhd191c2Vfc3RyaWN0X10gKSB7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiU3VnZ2VzdCBpbmNsdWRpbmcgJ3VzZSBzdHJpY3Q7J1xuIik7CiAgICB9CgogICAgIyBpdCBpcyBzdWdnZXN0ZWQgdGhhdCBsYWJlbHMgaGF2ZSBhdCBsZWFzdCBvbmUgdXBwZXIgY2FzZSBjaGFyYWN0ZXIKICAgICMgZm9yIGxlZ2liaWxpdHkgYW5kIHRvIGF2b2lkIGNvZGUgYnJlYWthZ2UgYXMgbmV3IGtleXdvcmRzIGFyZSBpbnRyb2R1Y2VkCiAgICBpZiAoICR0b2tlbml6ZXJfc2VsZi0+W19ybG93ZXJfY2FzZV9sYWJlbHNfYXRfXSApIHsKICAgICAgICBteSBAbG93ZXJfY2FzZV9sYWJlbHNfYXQgPQogICAgICAgICAgQHsgJHRva2VuaXplcl9zZWxmLT5bX3Jsb3dlcl9jYXNlX2xhYmVsc19hdF9dIH07CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgKICAgICAgICAgICAgIlN1Z2dlc3QgdXNpbmcgdXBwZXIgY2FzZSBjaGFyYWN0ZXJzIGluIGxhYmVsKHMpXG4iKTsKICAgICAgICBsb2NhbCAkIiA9ICcpKCc7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiICBkZWZpbmVkIGF0IGxpbmUocyk6IChAbG93ZXJfY2FzZV9sYWJlbHNfYXQpXG4iKTsKICAgIH0KICAgIHJldHVybiAkc2V2ZXJlX2Vycm9yOwp9CgpzdWIgcmVwb3J0X3Zfc3RyaW5nIHsKCiAgICAjIHdhcm4gaWYgdGhpcyB2ZXJzaW9uIGNhbid0IGhhbmRsZSB2LXN0cmluZ3MKICAgIG15ICR0b2sgPSBzaGlmdDsKICAgIHVubGVzcyAoICR0b2tlbml6ZXJfc2VsZi0+W19zYXdfdl9zdHJpbmdfXSApIHsKICAgICAgICAkdG9rZW5pemVyX3NlbGYtPltfc2F3X3Zfc3RyaW5nX10gPQogICAgICAgICAgJHRva2VuaXplcl9zZWxmLT5bX2xhc3RfbGluZV9udW1iZXJfXTsKICAgIH0KICAgIGlmICggJF0gPCA1LjAwNiApIHsKICAgICAgICB3YXJuaW5nKAoiRm91bmQgdi1zdHJpbmcgJyR0b2snIGJ1dCB2LXN0cmluZ3MgYXJlIG5vdCBpbXBsZW1lbnRlZCBpbiB5b3VyIHZlcnNpb24gb2YgcGVybDsgc2VlIENhbWVsIDMgYm9vayBjaCAyXG4iCiAgICAgICAgKTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIGdldF9pbnB1dF9saW5lX251bWJlciB7CiAgICByZXR1cm4gJHRva2VuaXplcl9zZWxmLT5bX2xhc3RfbGluZV9udW1iZXJfXTsKfQoKIyByZXR1cm5zIHRoZSBuZXh0IHRva2VuaXplZCBsaW5lCnN1YiBnZXRfbGluZSB7CgogICAgbXkgJHNlbGYgPSBzaGlmdDsKCiAgICAjIFVTRVMgR0xPQkFMIFZBUklBQkxFUzogJHRva2VuaXplcl9zZWxmLCAkYnJhY2VfZGVwdGgsCiAgICAjICRzcXVhcmVfYnJhY2tldF9kZXB0aCwgJHBhcmVuX2RlcHRoCgogICAgbXkgJGlucHV0X2xpbmUgPSAkdG9rZW5pemVyX3NlbGYtPltfbGluZV9idWZmZXJfb2JqZWN0X10tPmdldF9saW5lKCk7CiAgICAkdG9rZW5pemVyX3NlbGYtPltfbGluZV9vZl90ZXh0X10gPSAkaW5wdXRfbGluZTsKCiAgICByZXR1cm4gdW5sZXNzICgkaW5wdXRfbGluZSk7CgogICAgbXkgJGlucHV0X2xpbmVfbnVtYmVyID0gKyskdG9rZW5pemVyX3NlbGYtPltfbGFzdF9saW5lX251bWJlcl9dOwoKICAgICMgRmluZCBhbmQgcmVtb3ZlIHdoYXQgY2hhcmFjdGVycyB0ZXJtaW5hdGUgdGhpcyBsaW5lLCBpbmNsdWRpbmcgYW55CiAgICAjIGNvbnRyb2wgcgogICAgbXkgJGlucHV0X2xpbmVfc2VwYXJhdG9yID0gIiI7CiAgICBpZiAoIGNob21wKCRpbnB1dF9saW5lKSApIHsgJGlucHV0X2xpbmVfc2VwYXJhdG9yID0gJC8gfQoKICAgICMgVGhlIGZpcnN0IHRlc3QgaGVyZSB2ZXJ5IHNpZ25pZmljYW50bHkgc3BlZWRzIHRoaW5ncyB1cCwgYnV0IGJlIHN1cmUgdG8KICAgICMga2VlcCB0aGUgcmVnZXggYW5kIGhhc2ggJW90aGVyX2xpbmVfZW5kaW5ncyB0aGUgc2FtZS4KICAgIGlmICggJG90aGVyX2xpbmVfZW5kaW5nc3sgc3Vic3RyKCAkaW5wdXRfbGluZSwgLTEgKSB9ICkgewogICAgICAgIGlmICggJGlucHV0X2xpbmUgPX4gcy8oKFxyfFwwMzV8XDAzMikrKSQvLyApIHsKICAgICAgICAgICAgJGlucHV0X2xpbmVfc2VwYXJhdG9yID0gJDIgLiAkaW5wdXRfbGluZV9zZXBhcmF0b3I7CiAgICAgICAgfQogICAgfQoKICAgICMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdlIGtlZXAgdGhlIGxpbmUgdGV4dCB0ZXJtaW5hdGVkIHdpdGgKICAgICMgYSBuZXdsaW5lIGNoYXJhY3RlcgogICAgJGlucHV0X2xpbmUgLj0gIlxuIjsKICAgICR0b2tlbml6ZXJfc2VsZi0+W19saW5lX29mX3RleHRfXSA9ICRpbnB1dF9saW5lOyAgICAjIHVwZGF0ZQoKICAgICMgY3JlYXRlIGEgZGF0YSBzdHJ1Y3R1cmUgZGVzY3JpYmluZyB0aGlzIGxpbmUgd2hpY2ggd2lsbCBiZQogICAgIyByZXR1cm5lZCB0byB0aGUgY2FsbGVyLgoKICAgICMgX2xpbmVfdHlwZSBjb2RlcyBhcmU6CiAgICAjICAgU1lTVEVNICAgICAgICAgLSBzeXN0ZW0tc3BlY2lmaWMgY29kZSBiZWZvcmUgaGFzaC1iYW5nIGxpbmUKICAgICMgICBDT0RFICAgICAgICAgICAtIGxpbmUgb2YgcGVybCBjb2RlIChpbmNsdWRpbmcgY29tbWVudHMpCiAgICAjICAgUE9EX1NUQVJUICAgICAgLSBsaW5lIHN0YXJ0aW5nIHBvZCwgc3VjaCBhcyAnPWhlYWQnCiAgICAjICAgUE9EICAgICAgICAgICAgLSBwb2QgZG9jdW1lbnRhdGlvbiB0ZXh0CiAgICAjICAgUE9EX0VORCAgICAgICAgLSBsYXN0IGxpbmUgb2YgcG9kIHNlY3Rpb24sICc9Y3V0JwogICAgIyAgIEhFUkUgICAgICAgICAgIC0gdGV4dCBvZiBoZXJlLWRvY3VtZW50CiAgICAjICAgSEVSRV9FTkQgICAgICAgLSBsYXN0IGxpbmUgb2YgaGVyZS1kb2MgKHRhcmdldCB3b3JkKQogICAgIyAgIEZPUk1BVCAgICAgICAgIC0gZm9ybWF0IHNlY3Rpb24KICAgICMgICBGT1JNQVRfRU5EICAgICAtIGxhc3QgbGluZSBvZiBmb3JtYXQgc2VjdGlvbiwgJy4nCiAgICAjICAgREFUQV9TVEFSVCAgICAgLSBfX0RBVEFfXyBsaW5lCiAgICAjICAgREFUQSAgICAgICAgICAgLSB1bmlkZW50aWZpZWQgdGV4dCBmb2xsb3dpbmcgX19EQVRBX18KICAgICMgICBFTkRfU1RBUlQgICAgICAtIF9fRU5EX18gbGluZQogICAgIyAgIEVORCAgICAgICAgICAgIC0gdW5pZGVudGlmaWVkIHRleHQgZm9sbG93aW5nIF9fRU5EX18KICAgICMgICBFUlJPUiAgICAgICAgICAtIHdlIGFyZSBpbiBiaWcgdHJvdWJsZSwgcHJvYmFibHkgbm90IGEgcGVybCBzY3JpcHQKCiAgICAjIE90aGVyIHZhcmlhYmxlczoKICAgICMgICBfY3VybHlfYnJhY2VfZGVwdGggICAgIC0gZGVwdGggb2YgY3VybHkgYnJhY2VzIGF0IHN0YXJ0IG9mIGxpbmUKICAgICMgICBfc3F1YXJlX2JyYWNrZXRfZGVwdGggIC0gZGVwdGggb2Ygc3F1YXJlIGJyYWNrZXRzIGF0IHN0YXJ0IG9mIGxpbmUKICAgICMgICBfcGFyZW5fZGVwdGggICAgICAgICAgIC0gZGVwdGggb2YgcGFyZW5zIGF0IHN0YXJ0IG9mIGxpbmUKICAgICMgICBfc3RhcnRpbmdfaW5fcXVvdGUgICAgIC0gdGhpcyBsaW5lIGNvbnRpbnVlcyBhIG11bHRpLWxpbmUgcXVvdGUKICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNvIGRvbid0IHRyaW0gbGVhZGluZyBibGFua3MhKQogICAgIyAgIF9lbmRpbmdfaW5fcXVvdGUgICAgICAgLSB0aGlzIGxpbmUgZW5kcyBpbiBhIG11bHRpLWxpbmUgcXVvdGUKICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNvIGRvbid0IHRyaW0gdHJhaWxpbmcgYmxhbmtzISkKICAgIG15ICRsaW5lX29mX3Rva2VucyA9IHsKICAgICAgICBfbGluZV90eXBlICAgICAgICAgICAgICAgICA9PiAnRU9GJywKICAgICAgICBfbGluZV90ZXh0ICAgICAgICAgICAgICAgICA9PiAkaW5wdXRfbGluZSwKICAgICAgICBfbGluZV9udW1iZXIgICAgICAgICAgICAgICA9PiAkaW5wdXRfbGluZV9udW1iZXIsCiAgICAgICAgX2d1ZXNzZWRfaW5kZW50YXRpb25fbGV2ZWwgPT4gMCwKICAgICAgICBfY3VybHlfYnJhY2VfZGVwdGggICAgICAgICA9PiAkYnJhY2VfZGVwdGgsCiAgICAgICAgX3NxdWFyZV9icmFja2V0X2RlcHRoICAgICAgPT4gJHNxdWFyZV9icmFja2V0X2RlcHRoLAogICAgICAgIF9wYXJlbl9kZXB0aCAgICAgICAgICAgICAgID0+ICRwYXJlbl9kZXB0aCwKICAgICAgICBfcXVvdGVfY2hhcmFjdGVyICAgICAgICAgICA9PiAnJywKIyMgICAgICAgIF9ydG9rZW5fdHlwZSAgICAgICAgICAgICAgID0+IHVuZGVmLAojIyAgICAgICAgX3J0b2tlbnMgICAgICAgICAgICAgICAgICAgPT4gdW5kZWYsCiMjICAgICAgICBfcmxldmVscyAgICAgICAgICAgICAgICAgICA9PiB1bmRlZiwKIyMgICAgICAgIF9yc2xldmVscyAgICAgICAgICAgICAgICAgID0+IHVuZGVmLAojIyAgICAgICAgX3JibG9ja190eXBlICAgICAgICAgICAgICAgPT4gdW5kZWYsCiMjICAgICAgICBfcmNvbnRhaW5lcl90eXBlICAgICAgICAgICA9PiB1bmRlZiwKIyMgICAgICAgIF9yY29udGFpbmVyX2Vudmlyb25tZW50ICAgID0+IHVuZGVmLAojIyAgICAgICAgX3J0eXBlX3NlcXVlbmNlICAgICAgICAgICAgPT4gdW5kZWYsCiMjICAgICAgICBfcm5lc3RpbmdfdG9rZW5zICAgICAgICAgICA9PiB1bmRlZiwKIyMgICAgICAgIF9yY2lfbGV2ZWxzICAgICAgICAgICAgICAgID0+IHVuZGVmLAojIyAgICAgICAgX3JuZXN0aW5nX2Jsb2NrcyAgICAgICAgICAgPT4gdW5kZWYsCiMjICAgICAgICBfc3RhcnRpbmdfaW5fcXVvdGUgICAgICAgICA9PiAwLAojIyAgICAgICAgX2VuZGluZ19pbl9xdW90ZSAgICAgICAgICAgPT4gMCwKICAgIH07CgogICAgIyBtdXN0IHByaW50IGxpbmUgdW5jaGFuZ2VkIGlmIHdlIGFyZSBpbiBhIGhlcmUgZG9jdW1lbnQKICAgIGlmICggJHRva2VuaXplcl9zZWxmLT5bX2luX2hlcmVfZG9jX10gKSB7CgogICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3R5cGV9ID0gJ0hFUkUnOwogICAgICAgIG15ICRoZXJlX2RvY190YXJnZXQgICAgICA9ICR0b2tlbml6ZXJfc2VsZi0+W19oZXJlX2RvY190YXJnZXRfXTsKICAgICAgICBteSAkaGVyZV9xdW90ZV9jaGFyYWN0ZXIgPSAkdG9rZW5pemVyX3NlbGYtPltfaGVyZV9xdW90ZV9jaGFyYWN0ZXJfXTsKICAgICAgICBteSAkY2FuZGlkYXRlX3RhcmdldCAgICAgPSAkaW5wdXRfbGluZTsKICAgICAgICBjaG9tcCAkY2FuZGlkYXRlX3RhcmdldDsKCiAgICAgICAgIyBIYW5kbGUgPDx+IHRhcmdldHMsIHdoaWNoIGFyZSBpbmRpY2F0ZWQgaGVyZSBieSBhIGxlYWRpbmcgc3BhY2Ugb24KICAgICAgICAjIHRoZSBoZXJlIHF1b3RlIGNoYXJhY3RlcgogICAgICAgIGlmICggJGhlcmVfcXVvdGVfY2hhcmFjdGVyID1+IC9eXHMvICkgewogICAgICAgICAgICAkY2FuZGlkYXRlX3RhcmdldCA9fiBzL15ccyovLzsKICAgICAgICB9CiAgICAgICAgaWYgKCAkY2FuZGlkYXRlX3RhcmdldCBlcSAkaGVyZV9kb2NfdGFyZ2V0ICkgewogICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPltfbmVhcmx5X21hdGNoZWRfaGVyZV90YXJnZXRfYXRfXSA9IHVuZGVmOwogICAgICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfbGluZV90eXBlfSA9ICdIRVJFX0VORCc7CiAgICAgICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoIkV4aXRpbmcgSEVSRSBkb2N1bWVudCAkaGVyZV9kb2NfdGFyZ2V0XG4iKTsKCiAgICAgICAgICAgIG15ICRyaGVyZV90YXJnZXRfbGlzdCA9ICR0b2tlbml6ZXJfc2VsZi0+W19yaGVyZV90YXJnZXRfbGlzdF9dOwogICAgICAgICAgICBpZiAoIEB7JHJoZXJlX3RhcmdldF9saXN0fSApIHsgICMgdGhlcmUgY2FuIGJlIG11bHRpcGxlIGhlcmUgdGFyZ2V0cwogICAgICAgICAgICAgICAgKCAkaGVyZV9kb2NfdGFyZ2V0LCAkaGVyZV9xdW90ZV9jaGFyYWN0ZXIgKSA9CiAgICAgICAgICAgICAgICAgIEB7IHNoaWZ0IEB7JHJoZXJlX3RhcmdldF9saXN0fSB9OwogICAgICAgICAgICAgICAgJHRva2VuaXplcl9zZWxmLT5bX2hlcmVfZG9jX3RhcmdldF9dID0gJGhlcmVfZG9jX3RhcmdldDsKICAgICAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+W19oZXJlX3F1b3RlX2NoYXJhY3Rlcl9dID0KICAgICAgICAgICAgICAgICAgJGhlcmVfcXVvdGVfY2hhcmFjdGVyOwogICAgICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgKICAgICAgICAgICAgICAgICAgICAiRW50ZXJpbmcgSEVSRSBkb2N1bWVudCAkaGVyZV9kb2NfdGFyZ2V0XG4iKTsKICAgICAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+W19uZWFybHlfbWF0Y2hlZF9oZXJlX3RhcmdldF9hdF9dID0gdW5kZWY7CiAgICAgICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPltfc3RhcnRlZF9sb29raW5nX2Zvcl9oZXJlX3RhcmdldF9hdF9dID0KICAgICAgICAgICAgICAgICAgJGlucHV0X2xpbmVfbnVtYmVyOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJHRva2VuaXplcl9zZWxmLT5bX2luX2hlcmVfZG9jX10gICAgICAgICAgPSAwOwogICAgICAgICAgICAgICAgJHRva2VuaXplcl9zZWxmLT5bX2hlcmVfZG9jX3RhcmdldF9dICAgICAgPSAiIjsKICAgICAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+W19oZXJlX3F1b3RlX2NoYXJhY3Rlcl9dID0gIiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZm9yIGVycm9yIG9mIGV4dHJhIHdoaXRlc3BhY2UKICAgICAgICAjIG5vdGUgZm9yIFBFUkw2OiBsZWFkaW5nIHdoaXRlc3BhY2UgaXMgYWxsb3dlZAogICAgICAgIGVsc2UgewogICAgICAgICAgICAkY2FuZGlkYXRlX3RhcmdldCA9fiBzL1xzKiQvLzsKICAgICAgICAgICAgJGNhbmRpZGF0ZV90YXJnZXQgPX4gcy9eXHMqLy87CiAgICAgICAgICAgIGlmICggJGNhbmRpZGF0ZV90YXJnZXQgZXEgJGhlcmVfZG9jX3RhcmdldCApIHsKICAgICAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+W19uZWFybHlfbWF0Y2hlZF9oZXJlX3RhcmdldF9hdF9dID0KICAgICAgICAgICAgICAgICAgJGlucHV0X2xpbmVfbnVtYmVyOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkbGluZV9vZl90b2tlbnM7CiAgICB9CgogICAgIyBtdXN0IHByaW50IGxpbmUgdW5jaGFuZ2VkIGlmIHdlIGFyZSBpbiBhIGZvcm1hdCBzZWN0aW9uCiAgICBlbHNpZiAoICR0b2tlbml6ZXJfc2VsZi0+W19pbl9mb3JtYXRfXSApIHsKCiAgICAgICAgaWYgKCAkaW5wdXRfbGluZSA9fiAvXlwuW1xzI10qJC8gKSB7CiAgICAgICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoIkV4aXRpbmcgZm9ybWF0IHNlY3Rpb25cbiIpOwogICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPltfaW5fZm9ybWF0X10gPSAwOwogICAgICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfbGluZV90eXBlfSA9ICdGT1JNQVRfRU5EJzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3R5cGV9ID0gJ0ZPUk1BVCc7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkbGluZV9vZl90b2tlbnM7CiAgICB9CgogICAgIyBtdXN0IHByaW50IGxpbmUgdW5jaGFuZ2VkIGlmIHdlIGFyZSBpbiBwb2QgZG9jdW1lbnRhdGlvbgogICAgZWxzaWYgKCAkdG9rZW5pemVyX3NlbGYtPltfaW5fcG9kX10gKSB7CgogICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3R5cGV9ID0gJ1BPRCc7CiAgICAgICAgaWYgKCAkaW5wdXRfbGluZSA9fiAvXj1jdXQvICkgewogICAgICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfbGluZV90eXBlfSA9ICdQT0RfRU5EJzsKICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiRXhpdGluZyBQT0Qgc2VjdGlvblxuIik7CiAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+W19pbl9wb2RfXSA9IDA7CiAgICAgICAgfQogICAgICAgIGlmICggJGlucHV0X2xpbmUgPX4gL15cI1whLipwZXJsXGIvICYmICEkdG9rZW5pemVyX3NlbGYtPltfaW5fZW5kX10gKSB7CiAgICAgICAgICAgIHdhcm5pbmcoCiAgICAgICAgICAgICAgICAiSGFzaC1iYW5nIGluIHBvZCBjYW4gY2F1c2Ugb2xkZXIgdmVyc2lvbnMgb2YgcGVybCB0byBmYWlsISBcbiIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbGluZV9vZl90b2tlbnM7CiAgICB9CgogICAgIyBtdXN0IHByaW50IGxpbmUgdW5jaGFuZ2VkIGlmIHdlIGhhdmUgc2VlbiBhIHNldmVyZSBlcnJvciAoaS5lLiwgd2UKICAgICMgYXJlIHNlZWluZyBpbGxlZ2FsIHRva2VucyBhbmQgY2Fubm90IGNvbnRpbnVlLiAgU3ludGF4IGVycm9ycyBkbwogICAgIyBub3QgcGFzcyB0aGlzIHJvdXRlKS4gIENhbGxpbmcgcm91dGluZSBjYW4gZGVjaWRlIHdoYXQgdG8gZG8sIGJ1dAogICAgIyB0aGUgZGVmYXVsdCBjYW4gYmUgdG8ganVzdCBwYXNzIGFsbCBsaW5lcyBhcyBpZiB0aGV5IHdlcmUgYWZ0ZXIgX19FTkRfXwogICAgZWxzaWYgKCAkdG9rZW5pemVyX3NlbGYtPltfaW5fZXJyb3JfXSApIHsKICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfbGluZV90eXBlfSA9ICdFUlJPUic7CiAgICAgICAgcmV0dXJuICRsaW5lX29mX3Rva2VuczsKICAgIH0KCiAgICAjIHByaW50IGxpbmUgdW5jaGFuZ2VkIGlmIHdlIGFyZSBfX0RBVEFfXyBzZWN0aW9uCiAgICBlbHNpZiAoICR0b2tlbml6ZXJfc2VsZi0+W19pbl9kYXRhX10gKSB7CgogICAgICAgICMgLi4uYnV0IGxvb2sgZm9yIFBPRAogICAgICAgICMgTm90ZSB0aGF0IHRoZSBfaW5fZGF0YSBhbmQgX2luX2VuZCBmbGFncyByZW1haW4gc2V0CiAgICAgICAgIyBzbyB0aGF0IHdlIHJldHVybiB0byB0aGF0IHN0YXRlIGFmdGVyIHNlZWluZyB0aGUKICAgICAgICAjIGVuZCBvZiBhIHBvZCBzZWN0aW9uCiAgICAgICAgaWYgKCAkaW5wdXRfbGluZSA9fiAvXj0oXHcrKVxiLyAmJiAkMSBuZSAnY3V0JyApIHsKICAgICAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdHlwZX0gPSAnUE9EX1NUQVJUJzsKICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiRW50ZXJpbmcgUE9EIHNlY3Rpb25cbiIpOwogICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPltfaW5fcG9kX10gPSAxOwogICAgICAgICAgICByZXR1cm4gJGxpbmVfb2ZfdG9rZW5zOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdHlwZX0gPSAnREFUQSc7CiAgICAgICAgICAgIHJldHVybiAkbGluZV9vZl90b2tlbnM7CiAgICAgICAgfQogICAgfQoKICAgICMgcHJpbnQgbGluZSB1bmNoYW5nZWQgaWYgd2UgYXJlIGluIF9fRU5EX18gc2VjdGlvbgogICAgZWxzaWYgKCAkdG9rZW5pemVyX3NlbGYtPltfaW5fZW5kX10gKSB7CgogICAgICAgICMgLi4uYnV0IGxvb2sgZm9yIFBPRAogICAgICAgICMgTm90ZSB0aGF0IHRoZSBfaW5fZGF0YSBhbmQgX2luX2VuZCBmbGFncyByZW1haW4gc2V0CiAgICAgICAgIyBzbyB0aGF0IHdlIHJldHVybiB0byB0aGF0IHN0YXRlIGFmdGVyIHNlZWluZyB0aGUKICAgICAgICAjIGVuZCBvZiBhIHBvZCBzZWN0aW9uCiAgICAgICAgaWYgKCAkaW5wdXRfbGluZSA9fiAvXj0oXHcrKVxiLyAmJiAkMSBuZSAnY3V0JyApIHsKICAgICAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdHlwZX0gPSAnUE9EX1NUQVJUJzsKICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiRW50ZXJpbmcgUE9EIHNlY3Rpb25cbiIpOwogICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPltfaW5fcG9kX10gPSAxOwogICAgICAgICAgICByZXR1cm4gJGxpbmVfb2ZfdG9rZW5zOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdHlwZX0gPSAnRU5EJzsKICAgICAgICAgICAgcmV0dXJuICRsaW5lX29mX3Rva2VuczsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBmb3IgYSBoYXNoLWJhbmcgbGluZSBpZiB3ZSBoYXZlbid0IHNlZW4gb25lCiAgICBpZiAoICEkdG9rZW5pemVyX3NlbGYtPltfc2F3X2hhc2hfYmFuZ19dICkgewogICAgICAgIGlmICggJGlucHV0X2xpbmUgPX4gL15cI1whLipwZXJsXGIvICkgewogICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPltfc2F3X2hhc2hfYmFuZ19dID0gJGlucHV0X2xpbmVfbnVtYmVyOwoKICAgICAgICAgICAgIyBjaGVjayBmb3IgLXcgYW5kIC1QIGZsYWdzCiAgICAgICAgICAgIGlmICggJGlucHV0X2xpbmUgPX4gL15cI1whLipwZXJsXHMuKi0uKlAvICkgewogICAgICAgICAgICAgICAgJHRva2VuaXplcl9zZWxmLT5bX3Nhd19wZXJsX2Rhc2hfUF9dID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkaW5wdXRfbGluZSA9fiAvXlwjXCEuKnBlcmxccy4qLS4qdy8gKSB7CiAgICAgICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPltfc2F3X3BlcmxfZGFzaF93X10gPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkaW5wdXRfbGluZV9udW1iZXIgPiAxCgogICAgICAgICAgICAgICAgIyBsZWF2ZSBhbnkgaGFzaCBiYW5nIGluIGEgQkVHSU4gYmxvY2sgYWxvbmUKICAgICAgICAgICAgICAgICMgaS5lLiBzZWUgJ2RlYnVnZ2VyLWR1Y2tfdHlwZS50JwogICAgICAgICAgICAgICAgJiYgISgKICAgICAgICAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua19ibG9ja190eXBlCiAgICAgICAgICAgICAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZSBlcSAnQkVHSU4nCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAmJiAhJHRva2VuaXplcl9zZWxmLT5bX2xvb2tfZm9yX2hhc2hfYmFuZ19dCgogICAgICAgICAgICAgICAgIyBUcnkgdG8gYXZvaWQgZ2l2aW5nIGEgZmFsc2UgYWxhcm0gYXQgYSBzaW1wbGUgY29tbWVudC4KICAgICAgICAgICAgICAgICMgVGhlc2UgbG9vayBsaWtlIHZhbGlkIGhhc2gtYmFuZyBsaW5lczoKCiAgICAgICAgICAgICAgICAjIS91c3IvYmluL3BlcmwgLXcKICAgICAgICAgICAgICAgICMhICAgL3Vzci9iaW4vcGVybCAtdwogICAgICAgICAgICAgICAgIyFjOlxwZXJsXGJpblxwZXJsLmV4ZQoKICAgICAgICAgICAgICAgICMgVGhlc2UgYXJlIGNvbW1lbnRzOgogICAgICAgICAgICAgICAgIyEgSSBsb3ZlIHBlcmwKICAgICAgICAgICAgICAgICMhICBzdW5vcyBkb2VzIG5vdCB5ZXQgcHJvdmlkZSBhIC91c3IvYmluL3BlcmwKCiAgICAgICAgICAgICAgICAjIENvbW1lbnRzIHR5cGljYWxseSBoYXZlIG11bHRpcGxlIHNwYWNlcywgd2hpY2ggc3VnZ2VzdHMKICAgICAgICAgICAgICAgICMgdGhlIGZpbHRlcgogICAgICAgICAgICAgICAgJiYgJGlucHV0X2xpbmUgPX4gL15cI1whKFxzKyk/KFxTKyk/cGVybC8KICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIHRoaXMgaXMgaGVscGZ1bCBmb3IgVk1TIHN5c3RlbXM7IHdlIG1heSBoYXZlIGFjY2lkZW50YWxseQogICAgICAgICAgICAgICAgIyB0b2tlbml6ZWQgc29tZSBEQ0wgY29tbWFuZHMKICAgICAgICAgICAgICAgIGlmICggJHRva2VuaXplcl9zZWxmLT5bX3N0YXJ0ZWRfdG9rZW5pemluZ19dICkgewogICAgICAgICAgICAgICAgICAgIHdhcm5pbmcoCiJUaGVyZSBzZWVtcyB0byBiZSBhIGhhc2gtYmFuZyBhZnRlciBsaW5lIDE7IGRvIHlvdSBuZWVkIHRvIHJ1biB3aXRoIC14ID9cbiIKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgY29tcGxhaW4oIlVzZWxlc3MgaGFzaC1iYW5nIGFmdGVyIGxpbmUgMVxuIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgUmVwb3J0IHRoZSBsZWFkaW5nIGhhc2gtYmFuZyBhcyBhIHN5c3RlbSBsaW5lCiAgICAgICAgICAgICMgVGhpcyB3aWxsIHByZXZlbnQgLWRhYyBmcm9tIGRlbGV0aW5nIGl0CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdHlwZX0gPSAnU1lTVEVNJzsKICAgICAgICAgICAgICAgIHJldHVybiAkbGluZV9vZl90b2tlbnM7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyB3YWl0IGZvciBhIGhhc2gtYmFuZyBiZWZvcmUgcGFyc2luZyBpZiB0aGUgdXNlciBpbnZva2VkIHVzIHdpdGggLXgKICAgIGlmICggJHRva2VuaXplcl9zZWxmLT5bX2xvb2tfZm9yX2hhc2hfYmFuZ19dCiAgICAgICAgJiYgISR0b2tlbml6ZXJfc2VsZi0+W19zYXdfaGFzaF9iYW5nX10gKQogICAgewogICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3R5cGV9ID0gJ1NZU1RFTSc7CiAgICAgICAgcmV0dXJuICRsaW5lX29mX3Rva2VuczsKICAgIH0KCiAgICAjIGEgZmlyc3QgbGluZSBvZiB0aGUgZm9ybSAnOiAjJyB3aWxsIGJlIG1hcmtlZCBhcyBTWVNURU0KICAgICMgc2luY2UgbGluZXMgb2YgdGhpcyBmb3JtIG1heSBiZSB1c2VkIGJ5IHRjc2gKICAgIGlmICggJGlucHV0X2xpbmVfbnVtYmVyID09IDEgJiYgJGlucHV0X2xpbmUgPX4gL15ccypcOlxzKlwjLyApIHsKICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfbGluZV90eXBlfSA9ICdTWVNURU0nOwogICAgICAgIHJldHVybiAkbGluZV9vZl90b2tlbnM7CiAgICB9CgogICAgIyBub3cgd2Uga25vdyB0aGF0IGl0IGlzIG9rIHRvIHRva2VuaXplIHRoZSBsaW5lLi4uCiAgICAjIHRoZSBsaW5lIHRva2VuaXplciB3aWxsIG1vZGlmeSBhbnkgb2YgdGhlc2UgcHJpdmF0ZSB2YXJpYWJsZXM6CiAgICAjICAgICAgICBfcmhlcmVfdGFyZ2V0X2xpc3QKICAgICMgICAgICAgIF9pbl9kYXRhCiAgICAjICAgICAgICBfaW5fZW5kCiAgICAjICAgICAgICBfaW5fZm9ybWF0CiAgICAjICAgICAgICBfaW5fZXJyb3IKICAgICMgICAgICAgIF9pbl9wb2QKICAgICMgICAgICAgIF9pbl9xdW90ZQogICAgbXkgJGVuZGluZ19pbl9xdW90ZV9sYXN0ID0gJHRva2VuaXplcl9zZWxmLT5bX2luX3F1b3RlX107CiAgICB0b2tlbml6ZV90aGlzX2xpbmUoJGxpbmVfb2ZfdG9rZW5zKTsKCiAgICAjIE5vdyBmaW5pc2ggZGVmaW5pbmcgdGhlIHJldHVybiBzdHJ1Y3R1cmUgYW5kIHJldHVybiBpdAogICAgJGxpbmVfb2ZfdG9rZW5zLT57X2VuZGluZ19pbl9xdW90ZX0gPSAkdG9rZW5pemVyX3NlbGYtPltfaW5fcXVvdGVfXTsKCiAgICAjIGhhbmRsZSBzZXZlcmUgZXJyb3IgKGJpbmFyeSBkYXRhIGluIHNjcmlwdCkKICAgIGlmICggJHRva2VuaXplcl9zZWxmLT5bX2luX2Vycm9yX10gKSB7CiAgICAgICAgJHRva2VuaXplcl9zZWxmLT5bX2luX3F1b3RlX10gPSAwOyAgICAjIHRvIGF2b2lkIGFueSBtb3JlIG1lc3NhZ2VzCiAgICAgICAgd2FybmluZygiR2l2aW5nIHVwIGFmdGVyIGVycm9yXG4iKTsKICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfbGluZV90eXBlfSA9ICdFUlJPUic7CiAgICAgICAgcmVzZXRfaW5kZW50YXRpb25fbGV2ZWwoMCk7ICAgICAgICAgICAjIGF2b2lkIGVycm9yIG1lc3NhZ2VzCiAgICAgICAgcmV0dXJuICRsaW5lX29mX3Rva2VuczsKICAgIH0KCiAgICAjIGhhbmRsZSBzdGFydCBvZiBwb2QgZG9jdW1lbnRhdGlvbgogICAgaWYgKCAkdG9rZW5pemVyX3NlbGYtPltfaW5fcG9kX10gKSB7CgogICAgICAgICMgVGhpcyBnZXRzIHRyaWNreS4uYWJvdmUgYSBfX0RBVEFfXyBvciBfX0VORF9fIHNlY3Rpb24sIHBlcmwKICAgICAgICAjIGFjY2VwdHMgJz1jdXQnIGFzIHRoZSBzdGFydCBvZiBwb2Qgc2VjdGlvbi4gQnV0IGFmdGVyd2FyZHMsCiAgICAgICAgIyBvbmx5IHBvZCB1dGlsaXRpZXMgc2VlIGl0IGFuZCB0aGV5IG1heSBpZ25vcmUgYW4gPWN1dCB3aXRob3V0CiAgICAgICAgIyBsZWFkaW5nID1oZWFkLiAgSW4gYW55IGNhc2UsIHRoaXMgaXNuJ3QgZ29vZC4KICAgICAgICBpZiAoICRpbnB1dF9saW5lID1+IC9ePWN1dFxiLyApIHsKICAgICAgICAgICAgaWYgKCAkdG9rZW5pemVyX3NlbGYtPltfc2F3X2RhdGFfXSB8fCAkdG9rZW5pemVyX3NlbGYtPltfc2F3X2VuZF9dICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY29tcGxhaW4oIj1jdXQgd2hpbGUgbm90IGluIHBvZCBpZ25vcmVkXG4iKTsKICAgICAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+W19pbl9wb2RfXSA9IDA7CiAgICAgICAgICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfbGluZV90eXBlfSA9ICdQT0RfRU5EJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3R5cGV9ID0gJ1BPRF9TVEFSVCc7CiAgICAgICAgICAgICAgICB3YXJuaW5nKAoiPWN1dCBzdGFydHMgYSBwb2Qgc2VjdGlvbiAuLiB0aGlzIGNhbiBmb29sIHBvZCB1dGlsaXRpZXMuXG4iCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiRW50ZXJpbmcgUE9EIHNlY3Rpb25cbiIpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdHlwZX0gPSAnUE9EX1NUQVJUJzsKICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiRW50ZXJpbmcgUE9EIHNlY3Rpb25cbiIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRsaW5lX29mX3Rva2VuczsKICAgIH0KCiAgICAjIFVwZGF0ZSBpbmRlbnRhdGlvbiBsZXZlbHMgZm9yIGxvZyBtZXNzYWdlcy4KICAgICMgU2tpcCBibGFuayBsaW5lcyBhbmQgYWxzbyBibG9jayBjb21tZW50cywgdW5sZXNzIGEgbG9nZmlsZSBpcyByZXF1ZXN0ZWQuCiAgICAjIE5vdGUgdGhhdCBfbGluZV9vZl90ZXh0XyBpcyB0aGUgaW5wdXQgbGluZSBidXQgdHJpbW1lZCBmcm9tIGxlZnQgdG8gcmlnaHQuCiAgICBteSAkbG90ID0gJHRva2VuaXplcl9zZWxmLT5bX2xpbmVfb2ZfdGV4dF9dOwogICAgaWYgKCAkbG90ICYmICggJHNlbGYtPltfck9wdHNfbG9nZmlsZV9dIHx8IHN1YnN0ciggJGxvdCwgMCwgMSApIG5lICcjJyApICkgewogICAgICAgIG15ICRybGV2ZWxzID0gJGxpbmVfb2ZfdG9rZW5zLT57X3JsZXZlbHN9OwogICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19ndWVzc2VkX2luZGVudGF0aW9uX2xldmVsfSA9CiAgICAgICAgICBndWVzc19vbGRfaW5kZW50YXRpb25fbGV2ZWwoJGlucHV0X2xpbmUpOwogICAgfQoKICAgICMgc2VlIGlmIHRoaXMgbGluZSBjb250YWlucyBoZXJlIGRvYyB0YXJnZXRzCiAgICBteSAkcmhlcmVfdGFyZ2V0X2xpc3QgPSAkdG9rZW5pemVyX3NlbGYtPltfcmhlcmVfdGFyZ2V0X2xpc3RfXTsKICAgIGlmICggQHskcmhlcmVfdGFyZ2V0X2xpc3R9ICkgewoKICAgICAgICBteSAoICRoZXJlX2RvY190YXJnZXQsICRoZXJlX3F1b3RlX2NoYXJhY3RlciApID0KICAgICAgICAgIEB7IHNoaWZ0IEB7JHJoZXJlX3RhcmdldF9saXN0fSB9OwogICAgICAgICR0b2tlbml6ZXJfc2VsZi0+W19pbl9oZXJlX2RvY19dICAgICAgICAgID0gMTsKICAgICAgICAkdG9rZW5pemVyX3NlbGYtPltfaGVyZV9kb2NfdGFyZ2V0X10gICAgICA9ICRoZXJlX2RvY190YXJnZXQ7CiAgICAgICAgJHRva2VuaXplcl9zZWxmLT5bX2hlcmVfcXVvdGVfY2hhcmFjdGVyX10gPSAkaGVyZV9xdW90ZV9jaGFyYWN0ZXI7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiRW50ZXJpbmcgSEVSRSBkb2N1bWVudCAkaGVyZV9kb2NfdGFyZ2V0XG4iKTsKICAgICAgICAkdG9rZW5pemVyX3NlbGYtPltfc3RhcnRlZF9sb29raW5nX2Zvcl9oZXJlX3RhcmdldF9hdF9dID0KICAgICAgICAgICRpbnB1dF9saW5lX251bWJlcjsKICAgIH0KCiAgICAjIE5PVEU6IF9fRU5EX18gYW5kIF9fREFUQV9fIHN0YXRlbWVudHMgYXJlIHdyaXR0ZW4gdW5mb3JtYXR0ZWQKICAgICMgYmVjYXVzZSB0aGV5IGNhbiB0aGVvcmV0aWNhbGx5IGNvbnRhaW4gYWRkaXRpb25hbCBjaGFyYWN0ZXJzCiAgICAjIHdoaWNoIGFyZSBub3QgdG9rZW5pemVkIChhbmQgY2Fubm90IGJlIHJlYWQgd2l0aCA8REFUQT4gZWl0aGVyISkuCiAgICBpZiAoICR0b2tlbml6ZXJfc2VsZi0+W19pbl9kYXRhX10gKSB7CiAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdHlwZX0gPSAnREFUQV9TVEFSVCc7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiU3RhcnRpbmcgX19EQVRBX18gc2VjdGlvblxuIik7CiAgICAgICAgJHRva2VuaXplcl9zZWxmLT5bX3Nhd19kYXRhX10gPSAxOwoKICAgICAgICAjIGtlZXAgcGFyc2luZyBhZnRlciBfX0RBVEFfXyBpZiB1c2UgU2VsZkxvYWRlciB3YXMgc2VlbgogICAgICAgIGlmICggJHRva2VuaXplcl9zZWxmLT5bX3Nhd19zZWxmbG9hZGVyX10gKSB7CiAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+W19pbl9kYXRhX10gPSAwOwogICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICAgICAgICAgIlNlbGZMb2FkZXIgc2VlbiwgY29udGludWluZzsgLW5sc2wgZGVhY3RpdmF0ZXNcbiIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRsaW5lX29mX3Rva2VuczsKICAgIH0KCiAgICBlbHNpZiAoICR0b2tlbml6ZXJfc2VsZi0+W19pbl9lbmRfXSApIHsKICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfbGluZV90eXBlfSA9ICdFTkRfU1RBUlQnOwogICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoIlN0YXJ0aW5nIF9fRU5EX18gc2VjdGlvblxuIik7CiAgICAgICAgJHRva2VuaXplcl9zZWxmLT5bX3Nhd19lbmRfXSA9IDE7CgogICAgICAgICMga2VlcCBwYXJzaW5nIGFmdGVyIF9fRU5EX18gaWYgdXNlIEF1dG9Mb2FkZXIgd2FzIHNlZW4KICAgICAgICBpZiAoICR0b2tlbml6ZXJfc2VsZi0+W19zYXdfYXV0b2xvYWRlcl9dICkgewogICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPltfaW5fZW5kX10gPSAwOwogICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICAgICAgICAgIkF1dG9Mb2FkZXIgc2VlbiwgY29udGludWluZzsgLW5sYWwgZGVhY3RpdmF0ZXNcbiIpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJGxpbmVfb2ZfdG9rZW5zOwogICAgfQoKICAgICMgbm93LCBmaW5hbGx5LCB3ZSBrbm93IHRoYXQgdGhpcyBsaW5lIGlzIHR5cGUgJ0NPREUnCiAgICAkbGluZV9vZl90b2tlbnMtPntfbGluZV90eXBlfSA9ICdDT0RFJzsKCiAgICAjIHJlbWVtYmVyIGlmIHdlIGhhdmUgc2VlbiBhbnkgcmVhbCBjb2RlCiAgICBpZiAoICAhJHRva2VuaXplcl9zZWxmLT5bX3N0YXJ0ZWRfdG9rZW5pemluZ19dCiAgICAgICAgJiYgJGlucHV0X2xpbmUgIX4gL15ccyokLwogICAgICAgICYmICRpbnB1dF9saW5lICF+IC9eXHMqIy8gKQogICAgewogICAgICAgICR0b2tlbml6ZXJfc2VsZi0+W19zdGFydGVkX3Rva2VuaXppbmdfXSA9IDE7CiAgICB9CgogICAgaWYgKCAkdG9rZW5pemVyX3NlbGYtPltfZGVidWdnZXJfb2JqZWN0X10gKSB7CiAgICAgICAgJHRva2VuaXplcl9zZWxmLT5bX2RlYnVnZ2VyX29iamVjdF9dCiAgICAgICAgICAtPndyaXRlX2RlYnVnX2VudHJ5KCRsaW5lX29mX3Rva2Vucyk7CiAgICB9CgogICAgIyBOb3RlOiBpZiBrZXl3b3JkICdmb3JtYXQnIG9jY3VycyBpbiB0aGlzIGxpbmUgY29kZSwgaXQgaXMgc3RpbGwgQ09ERQogICAgIyAoa2V5d29yZCAnZm9ybWF0JyBuZWVkIG5vdCBzdGFydCBhIGxpbmUpCiAgICBpZiAoICR0b2tlbml6ZXJfc2VsZi0+W19pbl9mb3JtYXRfXSApIHsKICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCJFbnRlcmluZyBmb3JtYXQgc2VjdGlvblxuIik7CiAgICB9CgogICAgaWYgKCAkdG9rZW5pemVyX3NlbGYtPltfaW5fcXVvdGVfXQogICAgICAgIGFuZCAoICR0b2tlbml6ZXJfc2VsZi0+W19saW5lX3N0YXJ0X3F1b3RlX10gPCAwICkgKQogICAgewoKICAgICAgICAjaWYgKCAoIG15ICRxdW90ZV90YXJnZXQgPSBnZXRfcXVvdGVfdGFyZ2V0KCkgKSAhfiAvXlxzKiQvICkgewogICAgICAgIGlmICggKCBteSAkcXVvdGVfdGFyZ2V0ID0gJHRva2VuaXplcl9zZWxmLT5bX3F1b3RlX3RhcmdldF9dICkgIX4KICAgICAgICAgICAgL15ccyokLyApCiAgICAgICAgewogICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPltfbGluZV9zdGFydF9xdW90ZV9dID0gJGlucHV0X2xpbmVfbnVtYmVyOwogICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICAgICAgICAgIlN0YXJ0IG11bHRpLWxpbmUgcXVvdGUgb3IgcGF0dGVybiBlbmRpbmcgaW4gJHF1b3RlX3RhcmdldFxuIik7CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAoICR0b2tlbml6ZXJfc2VsZi0+W19saW5lX3N0YXJ0X3F1b3RlX10gPj0gMCApCiAgICAgICAgJiYgISR0b2tlbml6ZXJfc2VsZi0+W19pbl9xdW90ZV9dICkKICAgIHsKICAgICAgICAkdG9rZW5pemVyX3NlbGYtPltfbGluZV9zdGFydF9xdW90ZV9dID0gLTE7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiRW5kIG9mIG11bHRpLWxpbmUgcXVvdGUgb3IgcGF0dGVyblxuIik7CiAgICB9CgogICAgIyB3ZSBhcmUgcmV0dXJuaW5nIGEgbGluZSBvZiBDT0RFCiAgICByZXR1cm4gJGxpbmVfb2ZfdG9rZW5zOwp9CgpzdWIgZmluZF9zdGFydGluZ19pbmRlbnRhdGlvbl9sZXZlbCB7CgogICAgIyBXZSBuZWVkIHRvIGZpbmQgdGhlIGluZGVudGF0aW9uIGxldmVsIG9mIHRoZSBmaXJzdCBsaW5lIG9mIHRoZQogICAgIyBzY3JpcHQgYmVpbmcgZm9ybWF0dGVkLiAgT2Z0ZW4gaXQgd2lsbCBiZSB6ZXJvIGZvciBhbiBlbnRpcmUgZmlsZSwKICAgICMgYnV0IGlmIHdlIGFyZSBmb3JtYXR0aW5nIGEgbG9jYWwgYmxvY2sgb2YgY29kZSAod2l0aGluIGFuIGVkaXRvciBmb3IKICAgICMgZXhhbXBsZSkgaXQgbWF5IG5vdCBiZSB6ZXJvLiAgVGhlIHVzZXIgbWF5IHNwZWNpZnkgdGhpcyB3aXRoIHRoZQogICAgIyAtc2lsPW4gcGFyYW1ldGVyIGJ1dCBub3JtYWxseSBkb2Vzbid0IHNvIHdlIGhhdmUgdG8gZ3Vlc3MuCiAgICAjCiAgICAjIFVTRVMgR0xPQkFMIFZBUklBQkxFUzogJHRva2VuaXplcl9zZWxmCiAgICBteSAkc3RhcnRpbmdfbGV2ZWwgPSAwOwoKICAgICMgdXNlIHZhbHVlIGlmIGdpdmVuIGFzIHBhcmFtZXRlcgogICAgaWYgKCAkdG9rZW5pemVyX3NlbGYtPltfa25vd19zdGFydGluZ19sZXZlbF9dICkgewogICAgICAgICRzdGFydGluZ19sZXZlbCA9ICR0b2tlbml6ZXJfc2VsZi0+W19zdGFydGluZ19sZXZlbF9dOwogICAgfQoKICAgICMgaWYgd2Uga25vdyB0aGVyZSBpcyBhIGhhc2hfYmFuZyBsaW5lLCB0aGUgbGV2ZWwgbXVzdCBiZSB6ZXJvCiAgICBlbHNpZiAoICR0b2tlbml6ZXJfc2VsZi0+W19sb29rX2Zvcl9oYXNoX2JhbmdfXSApIHsKICAgICAgICAkdG9rZW5pemVyX3NlbGYtPltfa25vd19zdGFydGluZ19sZXZlbF9dID0gMTsKICAgIH0KCiAgICAjIG90aGVyd2lzZSBmaWd1cmUgaXQgb3V0IGZyb20gdGhlIGlucHV0IGZpbGUKICAgIGVsc2UgewogICAgICAgIG15ICRsaW5lOwogICAgICAgIG15ICRpID0gMDsKCiAgICAgICAgIyBrZWVwIGxvb2tpbmcgYXQgbGluZXMgdW50aWwgd2UgZmluZCBhIGhhc2ggYmFuZyBvciBwaWVjZSBvZiBjb2RlCiAgICAgICAgbXkgJG1zZyA9ICIiOwogICAgICAgIHdoaWxlICggJGxpbmUgPQogICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPltfbGluZV9idWZmZXJfb2JqZWN0X10tPnBlZWtfYWhlYWQoICRpKysgKSApCiAgICAgICAgewoKICAgICAgICAgICAgIyBpZiBmaXJzdCBsaW5lIGlzICMhIHRoZW4gYXNzdW1lIHN0YXJ0aW5nIGxldmVsIGlzIHplcm8KICAgICAgICAgICAgaWYgKCAkaSA9PSAxICYmICRsaW5lID1+IC9eXCNcIS8gKSB7CiAgICAgICAgICAgICAgICAkc3RhcnRpbmdfbGV2ZWwgPSAwOwogICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgfQogICAgICAgICAgICBuZXh0IGlmICggJGxpbmUgPX4gL15ccyojLyApOyAgICAjIHNraXAgcGFzdCBjb21tZW50cwogICAgICAgICAgICBuZXh0IGlmICggJGxpbmUgPX4gL15ccyokLyApOyAgICAjIHNraXAgcGFzdCBibGFuayBsaW5lcwogICAgICAgICAgICAkc3RhcnRpbmdfbGV2ZWwgPSBndWVzc19vbGRfaW5kZW50YXRpb25fbGV2ZWwoJGxpbmUpOwogICAgICAgICAgICBsYXN0OwogICAgICAgIH0KICAgICAgICAkbXNnID0gIkxpbmUgJGkgaW1wbGllcyBzdGFydGluZy1pbmRlbnRhdGlvbi1sZXZlbCA9ICRzdGFydGluZ19sZXZlbFxuIjsKICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCIkbXNnIik7CiAgICB9CiAgICAkdG9rZW5pemVyX3NlbGYtPltfc3RhcnRpbmdfbGV2ZWxfXSA9ICRzdGFydGluZ19sZXZlbDsKICAgIHJlc2V0X2luZGVudGF0aW9uX2xldmVsKCRzdGFydGluZ19sZXZlbCk7CiAgICByZXR1cm47Cn0KCnN1YiBndWVzc19vbGRfaW5kZW50YXRpb25fbGV2ZWwgewogICAgbXkgKCRsaW5lKSA9IEBfOwoKICAgICMgR3Vlc3MgdGhlIGluZGVudGF0aW9uIGxldmVsIG9mIGFuIGlucHV0IGxpbmUuCiAgICAjCiAgICAjIEZvciB0aGUgZmlyc3QgbGluZSBvZiBjb2RlIHRoaXMgcmVzdWx0IHdpbGwgZGVmaW5lIHRoZSBzdGFydGluZwogICAgIyBpbmRlbnRhdGlvbiBsZXZlbC4gIEl0IHdpbGwgbWFpbmx5IGJlIG5vbi16ZXJvIHdoZW4gcGVybHRpZHkgaXMgYXBwbGllZAogICAgIyB3aXRoaW4gYW4gZWRpdG9yIHRvIGEgbG9jYWwgYmxvY2sgb2YgY29kZS4KICAgICMKICAgICMgVGhpcyBpcyBhbiBpbXBvc3NpYmxlIHRhc2sgaW4gZ2VuZXJhbCBiZWNhdXNlIHdlIGNhbid0IGtub3cgd2hhdCB0YWJzCiAgICAjIG1lYW50IGZvciB0aGUgb2xkIHNjcmlwdCBhbmQgaG93IG1hbnkgc3BhY2VzIHdlcmUgdXNlZCBmb3Igb25lCiAgICAjIGluZGVudGF0aW9uIGxldmVsIGluIHRoZSBnaXZlbiBpbnB1dCBzY3JpcHQuICBGb3IgZXhhbXBsZSBpdCBtYXkgaGF2ZQogICAgIyBiZWVuIHByZXZpb3VzbHkgZm9ybWF0dGVkIHdpdGggLWk9NyAtZXQ9My4gIEJ1dCB3ZSBjYW4gYXQgbGVhc3QgdHJ5IHRvCiAgICAjIG1ha2Ugc3VyZSB0aGF0IHBlcmx0aWR5IGd1ZXNzZXMgY29ycmVjdGx5IGlmIGl0IGlzIGFwcGxpZWQgcmVwZWF0ZWRseSB0bwogICAgIyBhIGJsb2NrIG9mIGNvZGUgd2l0aGluIGFuIGVkaXRvciwgc28gdGhhdCB0aGUgYmxvY2sgc3RheXMgYXQgdGhlIHNhbWUKICAgICMgbGV2ZWwgd2hlbiBwZXJsdGlkeSBpcyBhcHBsaWVkIHJlcGVhdGVkbHkuCiAgICAjCiAgICAjIFVTRVMgR0xPQkFMIFZBUklBQkxFUzogJHRva2VuaXplcl9zZWxmCiAgICBteSAkbGV2ZWwgPSAwOwoKICAgICMgZmluZCBsZWFkaW5nIHRhYnMsIHNwYWNlcywgYW5kIGFueSBzdGF0ZW1lbnQgbGFiZWwKICAgIG15ICRzcGFjZXMgPSAwOwogICAgaWYgKCAkbGluZSA9fiAvXihcdCspPyhccyspPyhcdys6W146XSk/LyApIHsKCiAgICAgICAgIyBJZiB0aGVyZSBhcmUgbGVhZGluZyB0YWJzLCB3ZSB1c2UgdGhlIHRhYiBzY2hlbWUgZm9yIHRoaXMgcnVuLCBpZgogICAgICAgICMgYW55LCBzbyB0aGF0IHRoZSBjb2RlIHdpbGwgcmVtYWluIHN0YWJsZSB3aGVuIGVkaXRpbmcuCiAgICAgICAgaWYgKCQxKSB7ICRzcGFjZXMgKz0gbGVuZ3RoKCQxKSAqICR0b2tlbml6ZXJfc2VsZi0+W190YWJzaXplX10gfQoKICAgICAgICBpZiAoJDIpIHsgJHNwYWNlcyArPSBsZW5ndGgoJDIpIH0KCiAgICAgICAgIyBjb3JyZWN0IGZvciBvdXRkZW50ZWQgbGFiZWxzCiAgICAgICAgaWYgKCAkMyAmJiAkdG9rZW5pemVyX3NlbGYtPltfb3V0ZGVudF9sYWJlbHNfXSApIHsKICAgICAgICAgICAgJHNwYWNlcyArPSAkdG9rZW5pemVyX3NlbGYtPltfY29udGludWF0aW9uX2luZGVudGF0aW9uX107CiAgICAgICAgfQogICAgfQoKICAgICMgY29tcHV0ZSBpbmRlbnRhdGlvbiB1c2luZyB0aGUgdmFsdWUgb2YgLWkgZm9yIHRoaXMgcnVuLgogICAgIyBJZiAtaT0wIGlzIHVzZWQgZm9yIHRoaXMgcnVuICh3aGljaCBpcyBwb3NzaWJsZSkgaXQgZG9lc24ndCBtYXR0ZXIKICAgICMgd2hhdCB3ZSBkbyBoZXJlIGJ1dCB3ZSdsbCBndWVzcyB0aGF0IHRoZSBvbGQgcnVuIHVzZWQgNCBzcGFjZXMgcGVyIGxldmVsLgogICAgbXkgJGluZGVudF9jb2x1bW5zID0gJHRva2VuaXplcl9zZWxmLT5bX2luZGVudF9jb2x1bW5zX107CiAgICAkaW5kZW50X2NvbHVtbnMgPSA0IGlmICggISRpbmRlbnRfY29sdW1ucyApOwogICAgJGxldmVsICAgICAgICAgID0gaW50KCAkc3BhY2VzIC8gJGluZGVudF9jb2x1bW5zICk7CiAgICByZXR1cm4gKCRsZXZlbCk7Cn0KCiMgVGhpcyBpcyBhIGN1cnJlbnRseSB1bnVzZWQgZGVidWcgcm91dGluZQpzdWIgZHVtcF9mdW5jdGlvbnMgewoKICAgIG15ICRmaCA9ICpTVERPVVQ7CiAgICBmb3JlYWNoIG15ICRwa2cgKCBrZXlzICVpc191c2VyX2Z1bmN0aW9uICkgewogICAgICAgICRmaC0+cHJpbnQoIlxubm9uLWNvbnN0YW50IHN1YnMgaW4gcGFja2FnZSAkcGtnXG4iKTsKCiAgICAgICAgZm9yZWFjaCBteSAkc3ViICgga2V5cyAleyAkaXNfdXNlcl9mdW5jdGlvbnskcGtnfSB9ICkgewogICAgICAgICAgICBteSAkbXNnID0gIiI7CiAgICAgICAgICAgIGlmICggJGlzX2Jsb2NrX2xpc3RfZnVuY3Rpb257JHBrZ317JHN1Yn0gKSB7CiAgICAgICAgICAgICAgICAkbXNnID0gJ2Jsb2NrX2xpc3QnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRpc19ibG9ja19mdW5jdGlvbnskcGtnfXskc3VifSApIHsKICAgICAgICAgICAgICAgICRtc2cgPSAnYmxvY2snOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRmaC0+cHJpbnQoIiRzdWIgJG1zZ1xuIik7CiAgICAgICAgfQogICAgfQoKICAgIGZvcmVhY2ggbXkgJHBrZyAoIGtleXMgJWlzX2NvbnN0YW50ICkgewogICAgICAgICRmaC0+cHJpbnQoIlxuY29uc3RhbnRzIGFuZCBjb25zdGFudCBzdWJzIGluIHBhY2thZ2UgJHBrZ1xuIik7CgogICAgICAgIGZvcmVhY2ggbXkgJHN1YiAoIGtleXMgJXsgJGlzX2NvbnN0YW50eyRwa2d9IH0gKSB7CiAgICAgICAgICAgICRmaC0+cHJpbnQoIiRzdWJcbiIpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybjsKfQoKc3ViIHByZXBhcmVfZm9yX2FfbmV3X2ZpbGUgewoKICAgICMgcHJldmlvdXMgdG9rZW5zIG5lZWRlZCB0byBkZXRlcm1pbmUgd2hhdCB0byBleHBlY3QgbmV4dAogICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gICAgICA9ICc7JzsgICAgIyB0aGUgb25seSBwb3NzaWJsZSBzdGFydGluZyBzdGF0ZSB3aGljaAogICAgJGxhc3Rfbm9uYmxhbmtfdHlwZSAgICAgICA9ICc7JzsgICAgIyB3aWxsIG1ha2UgYSBsZWFkaW5nIGJyYWNlIGEgY29kZSBibG9jawogICAgJGxhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZSA9ICcnOwoKICAgICMgc2NhbGFycyBmb3IgcmVtZW1iZXJpbmcgc3RhdGVtZW50IHR5cGVzIGFjcm9zcyBtdWx0aXBsZSBsaW5lcwogICAgJHN0YXRlbWVudF90eXBlICAgID0gJyc7ICAgICAgICAgICAgIyAnJyBvciAndXNlJyBvciAnc3ViLi4nIG9yICdjYXNlLi4nCiAgICAkaW5fYXR0cmlidXRlX2xpc3QgPSAwOwoKICAgICMgc2NhbGFycyBmb3IgcmVtZW1iZXJpbmcgd2hlcmUgd2UgYXJlIGluIHRoZSBmaWxlCiAgICAkY3VycmVudF9wYWNrYWdlID0gIm1haW4iOwogICAgJGNvbnRleHQgICAgICAgICA9IFVOS05PV05fQ09OVEVYVDsKCiAgICAjIGhhc2hlcyB1c2VkIHRvIHJlbWVtYmVyIGZ1bmN0aW9uIGluZm9ybWF0aW9uCiAgICAlaXNfY29uc3RhbnQgICAgICAgICAgICAgPSAoKTsgICAgICAjIHVzZXItZGVmaW5lZCBjb25zdGFudHMKICAgICVpc191c2VyX2Z1bmN0aW9uICAgICAgICA9ICgpOyAgICAgICMgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucwogICAgJXVzZXJfZnVuY3Rpb25fcHJvdG90eXBlID0gKCk7ICAgICAgIyB0aGVpciBwcm90b3R5cGVzCiAgICAlaXNfYmxvY2tfZnVuY3Rpb24gICAgICAgPSAoKTsKICAgICVpc19ibG9ja19saXN0X2Z1bmN0aW9uICA9ICgpOwogICAgJXNhd19mdW5jdGlvbl9kZWZpbml0aW9uID0gKCk7CiAgICAlc2F3X3VzZV9tb2R1bGUgICAgICAgICAgPSAoKTsKCiAgICAjIHZhcmlhYmxlcyB1c2VkIHRvIHRyYWNrIGRlcHRocyBvZiB2YXJpb3VzIGNvbnRhaW5lcnMKICAgICMgYW5kIHJlcG9ydCBuZXN0aW5nIGVycm9ycwogICAgJHBhcmVuX2RlcHRoICAgICAgICAgICAgID0gMDsKICAgICRicmFjZV9kZXB0aCAgICAgICAgICAgICA9IDA7CiAgICAkc3F1YXJlX2JyYWNrZXRfZGVwdGggICAgPSAwOwogICAgQGN1cnJlbnRfZGVwdGggICAgICAgICAgID0gKDApIHggc2NhbGFyIEBjbG9zaW5nX2JyYWNlX25hbWVzOwogICAgJHRvdGFsX2RlcHRoICAgICAgICAgICAgID0gMDsKICAgIEB0b3RhbF9kZXB0aCAgICAgICAgICAgICA9ICgpOwogICAgQG5lc3Rpbmdfc2VxdWVuY2VfbnVtYmVyID0gKCAwIC4uIEBjbG9zaW5nX2JyYWNlX25hbWVzIC0gMSApOwogICAgQGN1cnJlbnRfc2VxdWVuY2VfbnVtYmVyID0gKCk7CgogICAgQHBhcmVuX3R5cGUgICAgICAgICAgICAgICAgICAgICA9ICgpOwogICAgQHBhcmVuX3NlbWljb2xvbl9jb3VudCAgICAgICAgICA9ICgpOwogICAgQHBhcmVuX3N0cnVjdHVyYWxfdHlwZSAgICAgICAgICA9ICgpOwogICAgQGJyYWNlX3R5cGUgICAgICAgICAgICAgICAgICAgICA9ICgpOwogICAgQGJyYWNlX3N0cnVjdHVyYWxfdHlwZSAgICAgICAgICA9ICgpOwogICAgQGJyYWNlX2NvbnRleHQgICAgICAgICAgICAgICAgICA9ICgpOwogICAgQGJyYWNlX3BhY2thZ2UgICAgICAgICAgICAgICAgICA9ICgpOwogICAgQHNxdWFyZV9icmFja2V0X3R5cGUgICAgICAgICAgICA9ICgpOwogICAgQHNxdWFyZV9icmFja2V0X3N0cnVjdHVyYWxfdHlwZSA9ICgpOwogICAgQGRlcHRoX2FycmF5ICAgICAgICAgICAgICAgICAgICA9ICgpOwogICAgQG5lc3RlZF90ZXJuYXJ5X2ZsYWcgICAgICAgICAgICA9ICgpOwogICAgQG5lc3RlZF9zdGF0ZW1lbnRfdHlwZSAgICAgICAgICA9ICgpOwogICAgQHN0YXJ0aW5nX2xpbmVfb2ZfY3VycmVudF9kZXB0aCA9ICgpOwoKICAgICRwYXJlbl90eXBlWyRwYXJlbl9kZXB0aF0gICAgICAgICAgICA9ICcnOwogICAgJHBhcmVuX3NlbWljb2xvbl9jb3VudFskcGFyZW5fZGVwdGhdID0gMDsKICAgICRwYXJlbl9zdHJ1Y3R1cmFsX3R5cGVbJGJyYWNlX2RlcHRoXSA9ICcnOwogICAgJGJyYWNlX3R5cGVbJGJyYWNlX2RlcHRoXSA9ICc7JzsgICAgIyBpZGVudGlmeSBvcGVuaW5nIGJyYWNlIGFzIGNvZGUgYmxvY2sKICAgICRicmFjZV9zdHJ1Y3R1cmFsX3R5cGVbJGJyYWNlX2RlcHRoXSAgICAgICAgICAgICAgICAgICA9ICcnOwogICAgJGJyYWNlX2NvbnRleHRbJGJyYWNlX2RlcHRoXSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gVU5LTk9XTl9DT05URVhUOwogICAgJGJyYWNlX3BhY2thZ2VbJHBhcmVuX2RlcHRoXSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJGN1cnJlbnRfcGFja2FnZTsKICAgICRzcXVhcmVfYnJhY2tldF90eXBlWyRzcXVhcmVfYnJhY2tldF9kZXB0aF0gICAgICAgICAgICA9ICcnOwogICAgJHNxdWFyZV9icmFja2V0X3N0cnVjdHVyYWxfdHlwZVskc3F1YXJlX2JyYWNrZXRfZGVwdGhdID0gJyc7CgogICAgaW5pdGlhbGl6ZV90b2tlbml6ZXJfc3RhdGUoKTsKICAgIHJldHVybjsKfQoKeyAgICAjIyBjbG9zdXJlIGZvciBzdWIgdG9rZW5pemVfdGhpc19saW5lCgogICAgdXNlIGNvbnN0YW50IEJSQUNFICAgICAgICAgID0+IDA7CiAgICB1c2UgY29uc3RhbnQgU1FVQVJFX0JSQUNLRVQgPT4gMTsKICAgIHVzZSBjb25zdGFudCBQQVJFTiAgICAgICAgICA9PiAyOwogICAgdXNlIGNvbnN0YW50IFFVRVNUSU9OX0NPTE9OID0+IDM7CgogICAgIyBUVjE6IHNjYWxhcnMgZm9yIHByb2Nlc3Npbmcgb25lIExJTkUuCiAgICAjIFJlLWluaXRpYWxpemVkIG9uIGVhY2ggZW50cnkgdG8gc3ViIHRva2VuaXplX3RoaXNfbGluZS4KICAgIG15ICgKICAgICAgICAkYmxvY2tfdHlwZSwgICAgICAgICRjb250YWluZXJfdHlwZSwgICAgJGV4cGVjdGluZywKICAgICAgICAkaSwgICAgICAgICAgICAgICAgICRpX3RvaywgICAgICAgICAgICAgJGlucHV0X2xpbmUsCiAgICAgICAgJGlucHV0X2xpbmVfbnVtYmVyLCAkbGFzdF9ub25ibGFua19pLCAgICRtYXhfdG9rZW5faW5kZXgsCiAgICAgICAgJG5leHRfdG9rLCAgICAgICAgICAkbmV4dF90eXBlLCAgICAgICAgICRwZWVrZWRfYWhlYWQsCiAgICAgICAgJHByb3RvdHlwZSwgICAgICAgICAkcmhlcmVfdGFyZ2V0X2xpc3QsICRydG9rZW5fbWFwLAogICAgICAgICRydG9rZW5fdHlwZSwgICAgICAgJHJ0b2tlbnMsICAgICAgICAgICAkdG9rLAogICAgICAgICR0eXBlLCAgICAgICAgICAgICAgJHR5cGVfc2VxdWVuY2UsICAgICAkaW5kZW50X2ZsYWcsCiAgICApOwoKICAgICMgVFYyOiByZWZzIHRvIEFSUkFZUyBmb3IgcHJvY2Vzc2luZyBvbmUgTElORQogICAgIyBSZS1pbml0aWFsaXplZCBvbiBlYWNoIGNhbGwuCiAgICBteSAkcm91dHB1dF90b2tlbl9saXN0ICAgICA9IFtdOyAgICAjIHN0YWNrIG9mIG91dHB1dCB0b2tlbiBpbmRleGVzCiAgICBteSAkcm91dHB1dF90b2tlbl90eXBlICAgICA9IFtdOyAgICAjIHRva2VuIHR5cGVzCiAgICBteSAkcm91dHB1dF9ibG9ja190eXBlICAgICA9IFtdOyAgICAjIHR5cGVzIG9mIGNvZGUgYmxvY2sKICAgIG15ICRyb3V0cHV0X2NvbnRhaW5lcl90eXBlID0gW107ICAgICMgcGFyZW4gdHlwZXMsIHN1Y2ggYXMgaWYsIGVsc2lmLCAuLgogICAgbXkgJHJvdXRwdXRfdHlwZV9zZXF1ZW5jZSAgPSBbXTsgICAgIyBuZXN0aW5nIHNlcXVlbnRpYWwgbnVtYmVyCiAgICBteSAkcm91dHB1dF9pbmRlbnRfZmxhZyAgICA9IFtdOyAgICAjCgogICAgIyBUVjM6IFNDQUxBUlMgZm9yIHF1b3RlIHZhcmlhYmxlcy4gIFRoZXNlIGFyZSBpbml0aWFsaXplZCB3aXRoIGEKICAgICMgc3Vicm91dGluZSBjYWxsIGFuZCBjb250aW51YWxseSB1cGRhdGVkIGFzIGxpbmVzIGFyZSBwcm9jZXNzZWQuCiAgICBteSAoICRpbl9xdW90ZSwgJHF1b3RlX3R5cGUsICRxdW90ZV9jaGFyYWN0ZXIsICRxdW90ZV9wb3MsICRxdW90ZV9kZXB0aCwKICAgICAgICAkcXVvdGVkX3N0cmluZ18xLCAkcXVvdGVkX3N0cmluZ18yLCAkYWxsb3dlZF9xdW90ZV9tb2RpZmllcnMsICk7CgogICAgIyBUVjQ6IFNDQUxBUlMgZm9yIG11bHRpLWxpbmUgaWRlbnRpZmllcnMgYW5kCiAgICAjIHN0YXRlbWVudHMuIFRoZXNlIGFyZSBpbml0aWFsaXplZCB3aXRoIGEgc3Vicm91dGluZSBjYWxsCiAgICAjIGFuZCBjb250aW51YWxseSB1cGRhdGVkIGFzIGxpbmVzIGFyZSBwcm9jZXNzZWQuCiAgICBteSAoICRpZF9zY2FuX3N0YXRlLCAkaWRlbnRpZmllciwgJHdhbnRfcGFyZW4sICRpbmRlbnRlZF9pZl9sZXZlbCApOwoKICAgICMgVFY1OiBTQ0FMQVJTIGZvciB0cmFja2luZyBpbmRlbnRhdGlvbiBsZXZlbC4KICAgICMgSW5pdGlhbGl6ZWQgb25jZSBhbmQgY29udGludWFsbHkgdXBkYXRlZCBhcyBsaW5lcyBhcmUKICAgICMgcHJvY2Vzc2VkLgogICAgbXkgKAogICAgICAgICRuZXN0aW5nX3Rva2VuX3N0cmluZywgICAgICAkbmVzdGluZ190eXBlX3N0cmluZywKICAgICAgICAkbmVzdGluZ19ibG9ja19zdHJpbmcsICAgICAgJG5lc3RpbmdfYmxvY2tfZmxhZywKICAgICAgICAkbmVzdGluZ19saXN0X3N0cmluZywgICAgICAgJG5lc3RpbmdfbGlzdF9mbGFnLAogICAgICAgICRjaV9zdHJpbmdfaW5fdG9rZW5pemVyLCAgICAkY29udGludWF0aW9uX3N0cmluZ19pbl90b2tlbml6ZXIsCiAgICAgICAgJGluX3N0YXRlbWVudF9jb250aW51YXRpb24sICRsZXZlbF9pbl90b2tlbml6ZXIsCiAgICAgICAgJHNsZXZlbF9pbl90b2tlbml6ZXIsICAgICAgICRyc2xldmVsX3N0YWNrLAogICAgKTsKCiAgICAjIFRWNjogU0NBTEFSUyBmb3IgcmVtZW1iZXJpbmcgc2V2ZXJhbCBwcmV2aW91cwogICAgIyB0b2tlbnMuIEluaXRpYWxpemVkIG9uY2UgYW5kIGNvbnRpbnVhbGx5IHVwZGF0ZWQgYXMKICAgICMgbGluZXMgYXJlIHByb2Nlc3NlZC4KICAgIG15ICgKICAgICAgICAkbGFzdF9ub25ibGFua19jb250YWluZXJfdHlwZSwgICAgICRsYXN0X25vbmJsYW5rX3R5cGVfc2VxdWVuY2UsCiAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua190b2tlbiwgICAgICAgICAkbGFzdF9sYXN0X25vbmJsYW5rX3R5cGUsCiAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua19ibG9ja190eXBlLCAgICAkbGFzdF9sYXN0X25vbmJsYW5rX2NvbnRhaW5lcl90eXBlLAogICAgICAgICRsYXN0X2xhc3Rfbm9uYmxhbmtfdHlwZV9zZXF1ZW5jZSwgJGxhc3Rfbm9uYmxhbmtfcHJvdG90eXBlLAogICAgKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgYmVnaW5uaW5nIG9mIHRva2VuaXplciB2YXJpYWJsZSBhY2Nlc3MgYW5kIG1hbmlwdWxhdGlvbiByb3V0aW5lcwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgc3ViIGluaXRpYWxpemVfdG9rZW5pemVyX3N0YXRlIHsKCiAgICAgICAgIyBUVjE6IGluaXRpYWxpemVkIG9uIGVhY2ggY2FsbAogICAgICAgICMgVFYyOiBpbml0aWFsaXplZCBvbiBlYWNoIGNhbGwKICAgICAgICAjIFRWMzoKICAgICAgICAkaW5fcXVvdGUgICAgICAgICAgICAgICAgPSAwOwogICAgICAgICRxdW90ZV90eXBlICAgICAgICAgICAgICA9ICdRJzsKICAgICAgICAkcXVvdGVfY2hhcmFjdGVyICAgICAgICAgPSAiIjsKICAgICAgICAkcXVvdGVfcG9zICAgICAgICAgICAgICAgPSAwOwogICAgICAgICRxdW90ZV9kZXB0aCAgICAgICAgICAgICA9IDA7CiAgICAgICAgJHF1b3RlZF9zdHJpbmdfMSAgICAgICAgID0gIiI7CiAgICAgICAgJHF1b3RlZF9zdHJpbmdfMiAgICAgICAgID0gIiI7CiAgICAgICAgJGFsbG93ZWRfcXVvdGVfbW9kaWZpZXJzID0gIiI7CgogICAgICAgICMgVFY0OgogICAgICAgICRpZF9zY2FuX3N0YXRlICAgICA9ICcnOwogICAgICAgICRpZGVudGlmaWVyICAgICAgICA9ICcnOwogICAgICAgICR3YW50X3BhcmVuICAgICAgICA9ICIiOwogICAgICAgICRpbmRlbnRlZF9pZl9sZXZlbCA9IDA7CgogICAgICAgICMgVFY1OgogICAgICAgICRuZXN0aW5nX3Rva2VuX3N0cmluZyAgICAgICAgICAgICA9ICIiOwogICAgICAgICRuZXN0aW5nX3R5cGVfc3RyaW5nICAgICAgICAgICAgICA9ICIiOwogICAgICAgICRuZXN0aW5nX2Jsb2NrX3N0cmluZyAgICAgICAgICAgICA9ICcxJzsgICAgIyBpbml0aWFsbHkgaW4gYSBibG9jawogICAgICAgICRuZXN0aW5nX2Jsb2NrX2ZsYWcgICAgICAgICAgICAgICA9IDE7CiAgICAgICAgJG5lc3RpbmdfbGlzdF9zdHJpbmcgICAgICAgICAgICAgID0gJzAnOyAgICAjIGluaXRpYWxseSBub3QgaW4gYSBsaXN0CiAgICAgICAgJG5lc3RpbmdfbGlzdF9mbGFnICAgICAgICAgICAgICAgID0gMDsgICAgICAjIGluaXRpYWxseSBub3QgaW4gYSBsaXN0CiAgICAgICAgJGNpX3N0cmluZ19pbl90b2tlbml6ZXIgICAgICAgICAgID0gIiI7CiAgICAgICAgJGNvbnRpbnVhdGlvbl9zdHJpbmdfaW5fdG9rZW5pemVyID0gIjAiOwogICAgICAgICRpbl9zdGF0ZW1lbnRfY29udGludWF0aW9uICAgICAgICA9IDA7CiAgICAgICAgJGxldmVsX2luX3Rva2VuaXplciAgICAgICAgICAgICAgID0gMDsKICAgICAgICAkc2xldmVsX2luX3Rva2VuaXplciAgICAgICAgICAgICAgPSAwOwogICAgICAgICRyc2xldmVsX3N0YWNrICAgICAgICAgICAgICAgICAgICA9IFtdOwoKICAgICAgICAjIFRWNjoKICAgICAgICAkbGFzdF9ub25ibGFua19jb250YWluZXJfdHlwZSAgICAgID0gJyc7CiAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdHlwZV9zZXF1ZW5jZSAgICAgICA9ICcnOwogICAgICAgICRsYXN0X2xhc3Rfbm9uYmxhbmtfdG9rZW4gICAgICAgICAgPSAnOyc7CiAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua190eXBlICAgICAgICAgICA9ICc7JzsKICAgICAgICAkbGFzdF9sYXN0X25vbmJsYW5rX2Jsb2NrX3R5cGUgICAgID0gJyc7CiAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua19jb250YWluZXJfdHlwZSA9ICcnOwogICAgICAgICRsYXN0X2xhc3Rfbm9uYmxhbmtfdHlwZV9zZXF1ZW5jZSAgPSAnJzsKICAgICAgICAkbGFzdF9ub25ibGFua19wcm90b3R5cGUgICAgICAgICAgID0gIiI7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBzYXZlX3Rva2VuaXplcl9zdGF0ZSB7CgogICAgICAgIG15ICRyVFYxID0gWwogICAgICAgICAgICAkYmxvY2tfdHlwZSwgICAgICAgICRjb250YWluZXJfdHlwZSwgICAgJGV4cGVjdGluZywKICAgICAgICAgICAgJGksICAgICAgICAgICAgICAgICAkaV90b2ssICAgICAgICAgICAgICRpbnB1dF9saW5lLAogICAgICAgICAgICAkaW5wdXRfbGluZV9udW1iZXIsICRsYXN0X25vbmJsYW5rX2ksICAgJG1heF90b2tlbl9pbmRleCwKICAgICAgICAgICAgJG5leHRfdG9rLCAgICAgICAgICAkbmV4dF90eXBlLCAgICAgICAgICRwZWVrZWRfYWhlYWQsCiAgICAgICAgICAgICRwcm90b3R5cGUsICAgICAgICAgJHJoZXJlX3RhcmdldF9saXN0LCAkcnRva2VuX21hcCwKICAgICAgICAgICAgJHJ0b2tlbl90eXBlLCAgICAgICAkcnRva2VucywgICAgICAgICAgICR0b2ssCiAgICAgICAgICAgICR0eXBlLCAgICAgICAgICAgICAgJHR5cGVfc2VxdWVuY2UsICAgICAkaW5kZW50X2ZsYWcsCiAgICAgICAgXTsKCiAgICAgICAgbXkgJHJUVjIgPSBbCiAgICAgICAgICAgICRyb3V0cHV0X3Rva2VuX2xpc3QsICAgICRyb3V0cHV0X3Rva2VuX3R5cGUsCiAgICAgICAgICAgICRyb3V0cHV0X2Jsb2NrX3R5cGUsICAgICRyb3V0cHV0X2NvbnRhaW5lcl90eXBlLAogICAgICAgICAgICAkcm91dHB1dF90eXBlX3NlcXVlbmNlLCAkcm91dHB1dF9pbmRlbnRfZmxhZywKICAgICAgICBdOwoKICAgICAgICBteSAkclRWMyA9IFsKICAgICAgICAgICAgJGluX3F1b3RlLCAgICAgICAgJHF1b3RlX3R5cGUsCiAgICAgICAgICAgICRxdW90ZV9jaGFyYWN0ZXIsICRxdW90ZV9wb3MsCiAgICAgICAgICAgICRxdW90ZV9kZXB0aCwgICAgICRxdW90ZWRfc3RyaW5nXzEsCiAgICAgICAgICAgICRxdW90ZWRfc3RyaW5nXzIsICRhbGxvd2VkX3F1b3RlX21vZGlmaWVycywKICAgICAgICBdOwoKICAgICAgICBteSAkclRWNCA9CiAgICAgICAgICBbICRpZF9zY2FuX3N0YXRlLCAkaWRlbnRpZmllciwgJHdhbnRfcGFyZW4sICRpbmRlbnRlZF9pZl9sZXZlbCBdOwoKICAgICAgICBteSAkclRWNSA9IFsKICAgICAgICAgICAgJG5lc3RpbmdfdG9rZW5fc3RyaW5nLCAgICAgICRuZXN0aW5nX3R5cGVfc3RyaW5nLAogICAgICAgICAgICAkbmVzdGluZ19ibG9ja19zdHJpbmcsICAgICAgJG5lc3RpbmdfYmxvY2tfZmxhZywKICAgICAgICAgICAgJG5lc3RpbmdfbGlzdF9zdHJpbmcsICAgICAgICRuZXN0aW5nX2xpc3RfZmxhZywKICAgICAgICAgICAgJGNpX3N0cmluZ19pbl90b2tlbml6ZXIsICAgICRjb250aW51YXRpb25fc3RyaW5nX2luX3Rva2VuaXplciwKICAgICAgICAgICAgJGluX3N0YXRlbWVudF9jb250aW51YXRpb24sICRsZXZlbF9pbl90b2tlbml6ZXIsCiAgICAgICAgICAgICRzbGV2ZWxfaW5fdG9rZW5pemVyLCAgICAgICAkcnNsZXZlbF9zdGFjaywKICAgICAgICBdOwoKICAgICAgICBteSAkclRWNiA9IFsKICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfY29udGFpbmVyX3R5cGUsCiAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3R5cGVfc2VxdWVuY2UsCiAgICAgICAgICAgICRsYXN0X2xhc3Rfbm9uYmxhbmtfdG9rZW4sCiAgICAgICAgICAgICRsYXN0X2xhc3Rfbm9uYmxhbmtfdHlwZSwKICAgICAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua19ibG9ja190eXBlLAogICAgICAgICAgICAkbGFzdF9sYXN0X25vbmJsYW5rX2NvbnRhaW5lcl90eXBlLAogICAgICAgICAgICAkbGFzdF9sYXN0X25vbmJsYW5rX3R5cGVfc2VxdWVuY2UsCiAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3Byb3RvdHlwZSwKICAgICAgICBdOwogICAgICAgIHJldHVybiBbICRyVFYxLCAkclRWMiwgJHJUVjMsICRyVFY0LCAkclRWNSwgJHJUVjYgXTsKICAgIH0KCiAgICBzdWIgcmVzdG9yZV90b2tlbml6ZXJfc3RhdGUgewogICAgICAgIG15ICgkcnN0YXRlKSA9IEBfOwogICAgICAgIG15ICggJHJUVjEsICRyVFYyLCAkclRWMywgJHJUVjQsICRyVFY1LCAkclRWNiApID0gQHskcnN0YXRlfTsKICAgICAgICAoCiAgICAgICAgICAgICRibG9ja190eXBlLCAgICAgICAgJGNvbnRhaW5lcl90eXBlLCAgICAkZXhwZWN0aW5nLAogICAgICAgICAgICAkaSwgICAgICAgICAgICAgICAgICRpX3RvaywgICAgICAgICAgICAgJGlucHV0X2xpbmUsCiAgICAgICAgICAgICRpbnB1dF9saW5lX251bWJlciwgJGxhc3Rfbm9uYmxhbmtfaSwgICAkbWF4X3Rva2VuX2luZGV4LAogICAgICAgICAgICAkbmV4dF90b2ssICAgICAgICAgICRuZXh0X3R5cGUsICAgICAgICAgJHBlZWtlZF9haGVhZCwKICAgICAgICAgICAgJHByb3RvdHlwZSwgICAgICAgICAkcmhlcmVfdGFyZ2V0X2xpc3QsICRydG9rZW5fbWFwLAogICAgICAgICAgICAkcnRva2VuX3R5cGUsICAgICAgICRydG9rZW5zLCAgICAgICAgICAgJHRvaywKICAgICAgICAgICAgJHR5cGUsICAgICAgICAgICAgICAkdHlwZV9zZXF1ZW5jZSwgICAgICRpbmRlbnRfZmxhZywKICAgICAgICApID0gQHskclRWMX07CgogICAgICAgICgKICAgICAgICAgICAgJHJvdXRwdXRfdG9rZW5fbGlzdCwgICAgJHJvdXRwdXRfdG9rZW5fdHlwZSwKICAgICAgICAgICAgJHJvdXRwdXRfYmxvY2tfdHlwZSwgICAgJHJvdXRwdXRfY29udGFpbmVyX3R5cGUsCiAgICAgICAgICAgICRyb3V0cHV0X3R5cGVfc2VxdWVuY2UsICRyb3V0cHV0X3R5cGVfc2VxdWVuY2UsCiAgICAgICAgKSA9IEB7JHJUVjJ9OwoKICAgICAgICAoCiAgICAgICAgICAgICRpbl9xdW90ZSwgJHF1b3RlX3R5cGUsICRxdW90ZV9jaGFyYWN0ZXIsICRxdW90ZV9wb3MsICRxdW90ZV9kZXB0aCwKICAgICAgICAgICAgJHF1b3RlZF9zdHJpbmdfMSwgJHF1b3RlZF9zdHJpbmdfMiwgJGFsbG93ZWRfcXVvdGVfbW9kaWZpZXJzLAogICAgICAgICkgPSBAeyRyVFYzfTsKCiAgICAgICAgKCAkaWRfc2Nhbl9zdGF0ZSwgJGlkZW50aWZpZXIsICR3YW50X3BhcmVuLCAkaW5kZW50ZWRfaWZfbGV2ZWwgKSA9CiAgICAgICAgICBAeyRyVFY0fTsKCiAgICAgICAgKAogICAgICAgICAgICAkbmVzdGluZ190b2tlbl9zdHJpbmcsICAgICAgJG5lc3RpbmdfdHlwZV9zdHJpbmcsCiAgICAgICAgICAgICRuZXN0aW5nX2Jsb2NrX3N0cmluZywgICAgICAkbmVzdGluZ19ibG9ja19mbGFnLAogICAgICAgICAgICAkbmVzdGluZ19saXN0X3N0cmluZywgICAgICAgJG5lc3RpbmdfbGlzdF9mbGFnLAogICAgICAgICAgICAkY2lfc3RyaW5nX2luX3Rva2VuaXplciwgICAgJGNvbnRpbnVhdGlvbl9zdHJpbmdfaW5fdG9rZW5pemVyLAogICAgICAgICAgICAkaW5fc3RhdGVtZW50X2NvbnRpbnVhdGlvbiwgJGxldmVsX2luX3Rva2VuaXplciwKICAgICAgICAgICAgJHNsZXZlbF9pbl90b2tlbml6ZXIsICAgICAgICRyc2xldmVsX3N0YWNrLAogICAgICAgICkgPSBAeyRyVFY1fTsKCiAgICAgICAgKAogICAgICAgICAgICAkbGFzdF9ub25ibGFua19jb250YWluZXJfdHlwZSwKICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdHlwZV9zZXF1ZW5jZSwKICAgICAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua190b2tlbiwKICAgICAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua190eXBlLAogICAgICAgICAgICAkbGFzdF9sYXN0X25vbmJsYW5rX2Jsb2NrX3R5cGUsCiAgICAgICAgICAgICRsYXN0X2xhc3Rfbm9uYmxhbmtfY29udGFpbmVyX3R5cGUsCiAgICAgICAgICAgICRsYXN0X2xhc3Rfbm9uYmxhbmtfdHlwZV9zZXF1ZW5jZSwKICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfcHJvdG90eXBlLAogICAgICAgICkgPSBAeyRyVFY2fTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3ViIGdldF9pbmRlbnRhdGlvbl9sZXZlbCB7CgogICAgICAgICMgcGF0Y2ggdG8gYXZvaWQgcmVwb3J0aW5nIGVycm9yIGlmIGluZGVudGVkIGlmIGlzIG5vdCB0ZXJtaW5hdGVkCiAgICAgICAgaWYgKCRpbmRlbnRlZF9pZl9sZXZlbCkgeyByZXR1cm4gJGxldmVsX2luX3Rva2VuaXplciAtIDEgfQogICAgICAgIHJldHVybiAkbGV2ZWxfaW5fdG9rZW5pemVyOwogICAgfQoKICAgIHN1YiByZXNldF9pbmRlbnRhdGlvbl9sZXZlbCB7CiAgICAgICAgJGxldmVsX2luX3Rva2VuaXplciA9ICRzbGV2ZWxfaW5fdG9rZW5pemVyID0gc2hpZnQ7CiAgICAgICAgcHVzaCBAeyRyc2xldmVsX3N0YWNrfSwgJHNsZXZlbF9pbl90b2tlbml6ZXI7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBwZWVrZWRfYWhlYWQgewogICAgICAgIG15ICRmbGFnID0gc2hpZnQ7CiAgICAgICAgJHBlZWtlZF9haGVhZCA9IGRlZmluZWQoJGZsYWcpID8gJGZsYWcgOiAkcGVla2VkX2FoZWFkOwogICAgICAgIHJldHVybiAkcGVla2VkX2FoZWFkOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIGVuZCBvZiB0b2tlbml6ZXIgdmFyaWFibGUgYWNjZXNzIGFuZCBtYW5pcHVsYXRpb24gcm91dGluZXMKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgYmVnaW5uaW5nIG9mIHZhcmlvdXMgc2Nhbm5lciBpbnRlcmZhY2Ugcm91dGluZXMKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBzdWIgc2Nhbl9yZXBsYWNlbWVudF90ZXh0IHsKCiAgICAgICAgIyBjaGVjayBmb3IgaGVyZS1kb2NzIGluIHJlcGxhY2VtZW50IHRleHQgaW52b2tlZCBieQogICAgICAgICMgYSBzdWJzdGl0dXRpb24gb3BlcmF0b3Igd2l0aCBleGVjdXRhYmxlIG1vZGlmaWVyICdlJy4KICAgICAgICAjCiAgICAgICAgIyBnaXZlbjoKICAgICAgICAjICAkcmVwbGFjZW1lbnRfdGV4dAogICAgICAgICMgcmV0dXJuOgogICAgICAgICMgICRyaHQgPSByZWZlcmVuY2UgdG8gYW55IGhlcmUtZG9jIHRhcmdldHMKICAgICAgICBteSAoJHJlcGxhY2VtZW50X3RleHQpID0gQF87CgogICAgICAgICMgcXVpY2sgY2hlY2sKICAgICAgICByZXR1cm4gdW5sZXNzICggJHJlcGxhY2VtZW50X3RleHQgPX4gLzw8LyApOwoKICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCJzY2FubmluZyByZXBsYWNlbWVudCB0ZXh0IGZvciBoZXJlLWRvYyB0YXJnZXRzXG4iKTsKCiAgICAgICAgIyBzYXZlIHRoZSBsb2dnZXIgb2JqZWN0IGZvciBlcnJvciBtZXNzYWdlcwogICAgICAgIG15ICRsb2dnZXJfb2JqZWN0ID0gJHRva2VuaXplcl9zZWxmLT5bX2xvZ2dlcl9vYmplY3RfXTsKCiAgICAgICAgIyBsb2NhbGl6ZSBhbGwgcGFja2FnZSB2YXJpYWJsZXMKICAgICAgICBsb2NhbCAoCiAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZiwgICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3Rva2VuLAogICAgICAgICAgICAkbGFzdF9ub25ibGFua190eXBlLCAgICAgICAgICAgICAkbGFzdF9ub25ibGFua19ibG9ja190eXBlLAogICAgICAgICAgICAkc3RhdGVtZW50X3R5cGUsICAgICAgICAgICAgICAgICAkaW5fYXR0cmlidXRlX2xpc3QsCiAgICAgICAgICAgICRjdXJyZW50X3BhY2thZ2UsICAgICAgICAgICAgICAgICRjb250ZXh0LAogICAgICAgICAgICAlaXNfY29uc3RhbnQsICAgICAgICAgICAgICAgICAgICAlaXNfdXNlcl9mdW5jdGlvbiwKICAgICAgICAgICAgJXVzZXJfZnVuY3Rpb25fcHJvdG90eXBlLCAgICAgICAgJWlzX2Jsb2NrX2Z1bmN0aW9uLAogICAgICAgICAgICAlaXNfYmxvY2tfbGlzdF9mdW5jdGlvbiwgICAgICAgICAlc2F3X2Z1bmN0aW9uX2RlZmluaXRpb24sCiAgICAgICAgICAgICRicmFjZV9kZXB0aCwgICAgICAgICAgICAgICAgICAgICRwYXJlbl9kZXB0aCwKICAgICAgICAgICAgJHNxdWFyZV9icmFja2V0X2RlcHRoLCAgICAgICAgICAgQGN1cnJlbnRfZGVwdGgsCiAgICAgICAgICAgIEB0b3RhbF9kZXB0aCwgICAgICAgICAgICAgICAgICAgICR0b3RhbF9kZXB0aCwKICAgICAgICAgICAgQG5lc3Rpbmdfc2VxdWVuY2VfbnVtYmVyLCAgICAgICAgQGN1cnJlbnRfc2VxdWVuY2VfbnVtYmVyLAogICAgICAgICAgICBAcGFyZW5fdHlwZSwgICAgICAgICAgICAgICAgICAgICBAcGFyZW5fc2VtaWNvbG9uX2NvdW50LAogICAgICAgICAgICBAcGFyZW5fc3RydWN0dXJhbF90eXBlLCAgICAgICAgICBAYnJhY2VfdHlwZSwKICAgICAgICAgICAgQGJyYWNlX3N0cnVjdHVyYWxfdHlwZSwgICAgICAgICAgQGJyYWNlX2NvbnRleHQsCiAgICAgICAgICAgIEBicmFjZV9wYWNrYWdlLCAgICAgICAgICAgICAgICAgIEBzcXVhcmVfYnJhY2tldF90eXBlLAogICAgICAgICAgICBAc3F1YXJlX2JyYWNrZXRfc3RydWN0dXJhbF90eXBlLCBAZGVwdGhfYXJyYXksCiAgICAgICAgICAgIEBzdGFydGluZ19saW5lX29mX2N1cnJlbnRfZGVwdGgsIEBuZXN0ZWRfdGVybmFyeV9mbGFnLAogICAgICAgICAgICBAbmVzdGVkX3N0YXRlbWVudF90eXBlLAogICAgICAgICk7CgogICAgICAgICMgc2F2ZSBhbGwgbGV4aWNhbCB2YXJpYWJsZXMKICAgICAgICBteSAkcnN0YXRlID0gc2F2ZV90b2tlbml6ZXJfc3RhdGUoKTsKICAgICAgICBfZGVjcmVtZW50X2NvdW50KCk7ICAgICMgYXZvaWQgZXJyb3IgY2hlY2sgZm9yIG11bHRpcGxlIHRva2VuaXplcnMKCiAgICAgICAgIyBtYWtlIGEgbmV3IHRva2VuaXplcgogICAgICAgIG15ICRyT3B0cyA9IHt9OwogICAgICAgIG15ICRycGVuZGluZ19sb2dmaWxlX21lc3NhZ2U7CiAgICAgICAgbXkgJHNvdXJjZV9vYmplY3QgPSBQZXJsOjpUaWR5OjpMaW5lU291cmNlLT5uZXcoCiAgICAgICAgICAgIGlucHV0X2ZpbGUgICAgICAgICAgICAgICA9PiBcJHJlcGxhY2VtZW50X3RleHQsCiAgICAgICAgICAgIHJPcHRzICAgICAgICAgICAgICAgICAgICA9PiAkck9wdHMsCiAgICAgICAgICAgIHJwZW5kaW5nX2xvZ2ZpbGVfbWVzc2FnZSA9PiAkcnBlbmRpbmdfbG9nZmlsZV9tZXNzYWdlLAogICAgICAgICk7CiAgICAgICAgbXkgJHRva2VuaXplciA9IFBlcmw6OlRpZHk6OlRva2VuaXplci0+bmV3KAogICAgICAgICAgICBzb3VyY2Vfb2JqZWN0ICAgICAgICA9PiAkc291cmNlX29iamVjdCwKICAgICAgICAgICAgbG9nZ2VyX29iamVjdCAgICAgICAgPT4gJGxvZ2dlcl9vYmplY3QsCiAgICAgICAgICAgIHN0YXJ0aW5nX2xpbmVfbnVtYmVyID0+ICRpbnB1dF9saW5lX251bWJlciwKICAgICAgICApOwoKICAgICAgICAjIHNjYW4gdGhlIHJlcGxhY2VtZW50IHRleHQKICAgICAgICAxIHdoaWxlICggJHRva2VuaXplci0+Z2V0X2xpbmUoKSApOwoKICAgICAgICAjIHJlbW92ZSBhbnkgaGVyZSBkb2MgdGFyZ2V0cwogICAgICAgIG15ICRyaHQgPSB1bmRlZjsKICAgICAgICBpZiAoICR0b2tlbml6ZXJfc2VsZi0+W19pbl9oZXJlX2RvY19dICkgewogICAgICAgICAgICAkcmh0ID0gW107CiAgICAgICAgICAgIHB1c2ggQHskcmh0fSwKICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPltfaGVyZV9kb2NfdGFyZ2V0X10sCiAgICAgICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPltfaGVyZV9xdW90ZV9jaGFyYWN0ZXJfXQogICAgICAgICAgICAgIF07CiAgICAgICAgICAgIGlmICggJHRva2VuaXplcl9zZWxmLT5bX3JoZXJlX3RhcmdldF9saXN0X10gKSB7CiAgICAgICAgICAgICAgICBwdXNoIEB7JHJodH0sIEB7ICR0b2tlbml6ZXJfc2VsZi0+W19yaGVyZV90YXJnZXRfbGlzdF9dIH07CiAgICAgICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPltfcmhlcmVfdGFyZ2V0X2xpc3RfXSA9IHVuZGVmOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+W19pbl9oZXJlX2RvY19dID0gdW5kZWY7CiAgICAgICAgfQoKICAgICAgICAjIG5vdyBpdHMgc2FmZSB0byByZXBvcnQgZXJyb3JzCiAgICAgICAgbXkgJHNldmVyZV9lcnJvciA9ICR0b2tlbml6ZXItPnJlcG9ydF90b2tlbml6YXRpb25fZXJyb3JzKCk7CgogICAgICAgICMgVE9ETzogQ291bGQgcHJvcGFnYXRlIGEgc2V2ZXJlIGVycm9yIHVwCgogICAgICAgICMgcmVzdG9yZSBhbGwgdG9rZW5pemVyIGxleGljYWwgdmFyaWFibGVzCiAgICAgICAgcmVzdG9yZV90b2tlbml6ZXJfc3RhdGUoJHJzdGF0ZSk7CgogICAgICAgICMgcmV0dXJuIHRoZSBoZXJlIGRvYyB0YXJnZXRzCiAgICAgICAgcmV0dXJuICRyaHQ7CiAgICB9CgogICAgc3ViIHNjYW5fYmFyZV9pZGVudGlmaWVyIHsKICAgICAgICAoICRpLCAkdG9rLCAkdHlwZSwgJHByb3RvdHlwZSApID0KICAgICAgICAgIHNjYW5fYmFyZV9pZGVudGlmaWVyX2RvKCAkaW5wdXRfbGluZSwgJGksICR0b2ssICR0eXBlLCAkcHJvdG90eXBlLAogICAgICAgICAgICAkcnRva2VuX21hcCwgJG1heF90b2tlbl9pbmRleCApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgc2Nhbl9pZGVudGlmaWVyIHsKICAgICAgICAoICRpLCAkdG9rLCAkdHlwZSwgJGlkX3NjYW5fc3RhdGUsICRpZGVudGlmaWVyICkgPQogICAgICAgICAgc2Nhbl9pZGVudGlmaWVyX2RvKCAkaSwgJGlkX3NjYW5fc3RhdGUsICRpZGVudGlmaWVyLCAkcnRva2VucywKICAgICAgICAgICAgJG1heF90b2tlbl9pbmRleCwgJGV4cGVjdGluZywgJHBhcmVuX3R5cGVbJHBhcmVuX2RlcHRoXSApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICB1c2UgY29uc3RhbnQgVkVSSUZZX0ZBU1RTQ0FOID0+IDA7CiAgICBteSAlZmFzdF9zY2FuX2NvbnRleHQ7CgogICAgQkVHSU4gewogICAgICAgICVmYXN0X3NjYW5fY29udGV4dCA9ICgKICAgICAgICAgICAgJyQnID0+IFNDQUxBUl9DT05URVhULAogICAgICAgICAgICAnKicgPT4gU0NBTEFSX0NPTlRFWFQsCiAgICAgICAgICAgICdAJyA9PiBMSVNUX0NPTlRFWFQsCiAgICAgICAgICAgICclJyA9PiBMSVNUX0NPTlRFWFQsCiAgICAgICAgICAgICcmJyA9PiBVTktOT1dOX0NPTlRFWFQsCiAgICAgICAgKTsKICAgIH0KCiAgICBzdWIgc2Nhbl9pZGVudGlmaWVyX2Zhc3QgewoKICAgICAgICAjIFRoaXMgaXMgYSB3cmFwcGVyIGZvciBzdWIgc2Nhbl9pZGVudGlmaWVyLiBJdCBkb2VzIGEgZmFzdCBwcmVsaW1pbmFyeQogICAgICAgICMgc2NhbiBmb3IgY2VydGFpbiBjb21tb24gaWRlbnRpZmllcnM6CiAgICAgICAgIyAgICckdmFyJywgJ0B2YXInLCAldmFyLCAqdmFyLCAmdmFyLCAnQHsuLi59JywgJyV7Li4ufScKICAgICAgICAjIElmIGl0IGRvZXMgbm90IGZpbmQgb25lIG9mIHRoZXNlLCBvciB0aGlzIGlzIGEgcmVzdGFydCwgaXQgY2FsbHMgdGhlCiAgICAgICAgIyBvcmlnaW5hbCBzY2FubmVyIGRpcmVjdGx5LgoKICAgICAgICAjIFRoaXMgZ2l2ZXMgdGhlIHNhbWUgcmVzdWx0cyBhcyB0aGUgZnVsbCBzY2FubmVyIGluIGFib3V0IDEvNCB0aGUKICAgICAgICAjIHRvdGFsIHJ1bnRpbWUgZm9yIGEgdHlwaWNhbCBpbnB1dCBzdHJlYW0uCgogICAgICAgIG15ICRpX2JlZ2luICAgPSAkaTsKICAgICAgICBteSAkdG9rX2JlZ2luID0gJHRvazsKICAgICAgICBteSAkZmFzdF9zY2FuX3R5cGU7CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIHF1aWNrIHNjYW4gd2l0aCBsZWFkaW5nIHNpZ2lsCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgIGlmICggICEkaWRfc2Nhbl9zdGF0ZQogICAgICAgICAgICAmJiAkaSArIDEgPD0gJG1heF90b2tlbl9pbmRleAogICAgICAgICAgICAmJiAkZmFzdF9zY2FuX2NvbnRleHR7JHRva30gKQogICAgICAgIHsKICAgICAgICAgICAgJGNvbnRleHQgPSAkZmFzdF9zY2FuX2NvbnRleHR7JHRva307CgogICAgICAgICAgICAjIGxvb2sgZm9yICR2YXIsIEB2YXIsIC4uLgogICAgICAgICAgICBpZiAoICRydG9rZW5fdHlwZS0+WyAkaSArIDEgXSBlcSAndycgKSB7CiAgICAgICAgICAgICAgICBteSAkcHJldHlwZV9uZXh0ID0gIiI7CiAgICAgICAgICAgICAgICBteSAkaV9uZXh0ICAgICAgID0gJGkgKyAyOwogICAgICAgICAgICAgICAgaWYgKCAkaV9uZXh0IDw9ICRtYXhfdG9rZW5faW5kZXggKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAgICRydG9rZW5fdHlwZS0+WyRpX25leHRdIGVxICdiJwogICAgICAgICAgICAgICAgICAgICAgICAmJiAkaV9uZXh0IDwgJG1heF90b2tlbl9pbmRleCApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkaV9uZXh0ICs9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRwcmV0eXBlX25leHQgPSAkcnRva2VuX3R5cGUtPlskaV9uZXh0XTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICggJHByZXR5cGVfbmV4dCBuZSAnOicgJiYgJHByZXR5cGVfbmV4dCBuZSAiJyIgKSB7CgogICAgICAgICAgICAgICAgICAgICMgRm91bmQgdHlwZSAnaScgbGlrZSAnJHZhcicsICdAdmFyJywgb3IgJyV2YXInCiAgICAgICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgICAgID0gJHRvayAuICRydG9rZW5zLT5bICRpICsgMSBdOwogICAgICAgICAgICAgICAgICAgICR0b2sgICAgICAgICAgICA9ICRpZGVudGlmaWVyOwogICAgICAgICAgICAgICAgICAgICR0eXBlICAgICAgICAgICA9ICdpJzsKICAgICAgICAgICAgICAgICAgICAkaSAgICAgICAgICAgICAgPSAkaSArIDE7CiAgICAgICAgICAgICAgICAgICAgJGZhc3Rfc2Nhbl90eXBlID0gJHR5cGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgTG9vayBmb3IgQHsgb3IgJXsgIC4KICAgICAgICAgICAgIyBCdXQgd2UgbXVzdCBsZXQgdGhlIGZ1bGwgc2Nhbm5lciBoYW5kbGUgdGhpbmdzICR7IGJlY2F1c2UgaXQgbWF5CiAgICAgICAgICAgICMga2VlcCBnb2luZyB0byBnZXQgYSBjb21wbGV0ZSBpZGVudGlmaWVyIGxpa2UgJyR7I30nICAuCiAgICAgICAgICAgIGVsc2lmICgKICAgICAgICAgICAgICAgICRydG9rZW5fdHlwZS0+WyAkaSArIDEgXSBlcSAneycKICAgICAgICAgICAgICAgICYmICggICAkdG9rX2JlZ2luIGVxICdAJwogICAgICAgICAgICAgICAgICAgIHx8ICR0b2tfYmVnaW4gZXEgJyUnICkKICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAkaWRlbnRpZmllciAgICAgPSAkdG9rOwogICAgICAgICAgICAgICAgJHR5cGUgICAgICAgICAgID0gJ3QnOwogICAgICAgICAgICAgICAgJGZhc3Rfc2Nhbl90eXBlID0gJHR5cGU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIFF1aWNrIHNjYW4gd2l0aCBsZWFkaW5nIC0+CiAgICAgICAgIyBMb29rIGZvciAtPlsgYW5kIC0+ewogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICAgICR0b2sgZXEgJy0+JwogICAgICAgICAgICAmJiAkaSA8ICRtYXhfdG9rZW5faW5kZXgKICAgICAgICAgICAgJiYgKCAgICRydG9rZW5zLT5bICRpICsgMSBdIGVxICd7JwogICAgICAgICAgICAgICAgfHwgJHJ0b2tlbnMtPlsgJGkgKyAxIF0gZXEgJ1snICkKICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICR0eXBlICAgICAgICAgICA9ICR0b2s7CiAgICAgICAgICAgICRmYXN0X3NjYW5fdHlwZSA9ICR0eXBlOwogICAgICAgICAgICAkaWRlbnRpZmllciAgICAgPSAkdG9rOwogICAgICAgICAgICAkY29udGV4dCAgICAgICAgPSBVTktOT1dOX0NPTlRFWFQ7CiAgICAgICAgfQoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIFZlcmlmeSBjb3JyZWN0bmVzcyBkdXJpbmcgZGV2ZWxvcG1lbnQKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICBpZiAoIFZFUklGWV9GQVNUU0NBTiAmJiAkZmFzdF9zY2FuX3R5cGUgKSB7CgogICAgICAgICAgICAjIFdlIHdpbGwgY2FsbCB0aGUgZnVsbCBtZXRob2QKICAgICAgICAgICAgbXkgJGlkZW50aWZpZXJfc2ltcGxlID0gJGlkZW50aWZpZXI7CiAgICAgICAgICAgIG15ICR0b2tfc2ltcGxlICAgICAgICA9ICR0b2s7CiAgICAgICAgICAgIG15ICRmYXN0X3NjYW5fdHlwZSAgICA9ICR0eXBlOwogICAgICAgICAgICBteSAkaV9zaW1wbGUgICAgICAgICAgPSAkaTsKICAgICAgICAgICAgbXkgJGNvbnRleHRfc2ltcGxlICAgID0gJGNvbnRleHQ7CgogICAgICAgICAgICAkdG9rID0gJHRva19iZWdpbjsKICAgICAgICAgICAgJGkgICA9ICRpX2JlZ2luOwogICAgICAgICAgICBzY2FuX2lkZW50aWZpZXIoKTsKCiAgICAgICAgICAgIGlmICggICAkdG9rIG5lICR0b2tfc2ltcGxlCiAgICAgICAgICAgICAgICB8fCAkdHlwZSBuZSAkZmFzdF9zY2FuX3R5cGUKICAgICAgICAgICAgICAgIHx8ICRpICE9ICRpX3NpbXBsZQogICAgICAgICAgICAgICAgfHwgJGlkZW50aWZpZXIgbmUgJGlkZW50aWZpZXJfc2ltcGxlCiAgICAgICAgICAgICAgICB8fCAkaWRfc2Nhbl9zdGF0ZQogICAgICAgICAgICAgICAgfHwgJGNvbnRleHQgbmUgJGNvbnRleHRfc2ltcGxlICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcHJpbnQgU1RERVJSIDw8RU9NOwpzY2FuX2lkZW50aWZpZXJfZmFzdCBkaWZmZXJzIGZyb20gc2Nhbl9pZGVudGlmaWVyOgpzaW1wbGU6ICBpPSRpX3NpbXBsZSwgdG9rPSR0b2tfc2ltcGxlLCB0eXBlPSRmYXN0X3NjYW5fdHlwZSwgaWRlbnQ9JGlkZW50aWZpZXJfc2ltcGxlLCBjb250ZXh0PSckY29udGV4dF9zaW1wbGUKZnVsbDogICAgaT0kaSwgdG9rPSR0b2ssIHR5cGU9JHR5cGUsIGlkZW50PSRpZGVudGlmaWVyLCBjb250ZXh0PSckY29udGV4dCBzdGF0ZT0kaWRfc2Nhbl9zdGF0ZQpFT00KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBjYWxsIGZ1bGwgc2Nhbm5lciBpZiBmYXN0IG1ldGhvZCBkaWQgbm90IHN1Y2NlZWQKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICBpZiAoICEkZmFzdF9zY2FuX3R5cGUgKSB7CiAgICAgICAgICAgIHNjYW5faWRlbnRpZmllcigpOwogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3ViIHNjYW5faWQgewogICAgICAgICggJGksICR0b2ssICR0eXBlLCAkaWRfc2Nhbl9zdGF0ZSApID0KICAgICAgICAgIHNjYW5faWRfZG8oICRpbnB1dF9saW5lLCAkaSwgJHRvaywgJHJ0b2tlbnMsICRydG9rZW5fbWFwLAogICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSwgJG1heF90b2tlbl9pbmRleCApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgc2Nhbl9udW1iZXIgewogICAgICAgIG15ICRudW1iZXI7CiAgICAgICAgKCAkaSwgJHR5cGUsICRudW1iZXIgKSA9CiAgICAgICAgICBzY2FuX251bWJlcl9kbyggJGlucHV0X2xpbmUsICRpLCAkcnRva2VuX21hcCwgJHR5cGUsCiAgICAgICAgICAgICRtYXhfdG9rZW5faW5kZXggKTsKICAgICAgICByZXR1cm4gJG51bWJlcjsKICAgIH0KCiAgICB1c2UgY29uc3RhbnQgVkVSSUZZX0ZBU1ROVU0gPT4gMDsKCiAgICBzdWIgc2Nhbl9udW1iZXJfZmFzdCB7CgogICAgICAgICMgVGhpcyBpcyBhIHdyYXBwZXIgZm9yIHN1YiBzY2FuX251bWJlci4gSXQgZG9lcyBhIGZhc3QgcHJlbGltaW5hcnkKICAgICAgICAjIHNjYW4gZm9yIGEgc2ltcGxlIGludGVnZXIuICBJdCBjYWxscyB0aGUgb3JpZ2luYWwgc2Nhbl9udW1iZXIgaWYgaXQKICAgICAgICAjIGRvZXMgbm90IGZpbmQgb25lLgoKICAgICAgICBteSAkaV9iZWdpbiAgID0gJGk7CiAgICAgICAgbXkgJHRva19iZWdpbiA9ICR0b2s7CiAgICAgICAgbXkgJG51bWJlcjsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgUXVpY2sgY2hlY2sgZm9yIChzaWduZWQpIGludGVnZXIKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgICMgVGhpcyB3aWxsIGJlIHRoZSBzdHJpbmcgb2YgZGlnaXRzOgogICAgICAgIG15ICRpX2QgICA9ICRpOwogICAgICAgIG15ICR0b2tfZCA9ICR0b2s7CiAgICAgICAgbXkgJHR5cF9kID0gJHJ0b2tlbl90eXBlLT5bJGlfZF07CgogICAgICAgICMgY2hlY2sgZm9yIHNpZ25lZCBpbnRlZ2VyCiAgICAgICAgbXkgJHNpZ24gPSAiIjsKICAgICAgICBpZiAoICAgJHR5cF9kIG5lICdkJwogICAgICAgICAgICAmJiAoICR0eXBfZCBlcSAnKycgfHwgJHR5cF9kIGVxICctJyApCiAgICAgICAgICAgICYmICRpX2QgPCAkbWF4X3Rva2VuX2luZGV4ICkKICAgICAgICB7CiAgICAgICAgICAgICRzaWduID0gJHRva19kOwogICAgICAgICAgICAkaV9kKys7CiAgICAgICAgICAgICR0b2tfZCA9ICRydG9rZW5zLT5bJGlfZF07CiAgICAgICAgICAgICR0eXBfZCA9ICRydG9rZW5fdHlwZS0+WyRpX2RdOwogICAgICAgIH0KCiAgICAgICAgIyBIYW5kbGUgaW50ZWdlcnMKICAgICAgICBpZiAoCiAgICAgICAgICAgICR0eXBfZCBlcSAnZCcKICAgICAgICAgICAgJiYgKAogICAgICAgICAgICAgICAgJGlfZCA9PSAkbWF4X3Rva2VuX2luZGV4CiAgICAgICAgICAgICAgICB8fCAoICAgJGlfZCA8ICRtYXhfdG9rZW5faW5kZXgKICAgICAgICAgICAgICAgICAgICAmJiAkcnRva2VuX3R5cGUtPlsgJGlfZCArIDEgXSBuZSAnLicKICAgICAgICAgICAgICAgICAgICAmJiAkcnRva2VuX3R5cGUtPlsgJGlfZCArIDEgXSBuZSAndycgKQogICAgICAgICAgICApCiAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAjIExldCBsZXQgZnVsbCBzY2FubmVyIGhhbmRsZSBtdWx0aS1kaWdpdCBpbnRlZ2VycyBiZWdpbm5pbmcgd2l0aAogICAgICAgICAgICAjICcwJyBiZWNhdXNlIHRoZXJlIGNvdWxkIGJlIGVycm9yIG1lc3NhZ2VzLiAgRm9yIGV4YW1wbGUsICcwMDknIGlzCiAgICAgICAgICAgICMgbm90IGEgdmFsaWQgbnVtYmVyLgoKICAgICAgICAgICAgaWYgKCAkdG9rX2QgZXEgJzAnIHx8IHN1YnN0ciggJHRva19kLCAwLCAxICkgbmUgJzAnICkgewogICAgICAgICAgICAgICAgJG51bWJlciA9ICRzaWduIC4gJHRva19kOwogICAgICAgICAgICAgICAgJHR5cGUgICA9ICduJzsKICAgICAgICAgICAgICAgICRpICAgICAgPSAkaV9kOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIFZlcmlmeSBjb3JyZWN0bmVzcyBkdXJpbmcgZGV2ZWxvcG1lbnQKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICBpZiAoIFZFUklGWV9GQVNUTlVNICYmIGRlZmluZWQoJG51bWJlcikgKSB7CgogICAgICAgICAgICAjIFdlIHdpbGwgY2FsbCB0aGUgZnVsbCBtZXRob2QKICAgICAgICAgICAgbXkgJHR5cGVfc2ltcGxlICAgPSAkdHlwZTsKICAgICAgICAgICAgbXkgJGlfc2ltcGxlICAgICAgPSAkaTsKICAgICAgICAgICAgbXkgJG51bWJlcl9zaW1wbGUgPSAkbnVtYmVyOwoKICAgICAgICAgICAgJHRvayAgICA9ICR0b2tfYmVnaW47CiAgICAgICAgICAgICRpICAgICAgPSAkaV9iZWdpbjsKICAgICAgICAgICAgJG51bWJlciA9IHNjYW5fbnVtYmVyKCk7CgogICAgICAgICAgICBpZiAoICAgJHR5cGUgbmUgJHR5cGVfc2ltcGxlCiAgICAgICAgICAgICAgICB8fCAoICRpICE9ICRpX3NpbXBsZSAmJiAkaSA8PSAkbWF4X3Rva2VuX2luZGV4ICkKICAgICAgICAgICAgICAgIHx8ICRudW1iZXIgbmUgJG51bWJlcl9zaW1wbGUgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBwcmludCBTVERFUlIgPDxFT007CnNjYW5fbnVtYmVyX2Zhc3QgZGlmZmVycyBmcm9tIHNjYW5fbnVtYmVyOgpzaW1wbGU6ICBpPSRpX3NpbXBsZSwgdHlwZT0kdHlwZV9zaW1wbGUsIG51bWJlcj0kbnVtYmVyX3NpbXBsZQpmdWxsOiAgaT0kaSwgdHlwZT0kdHlwZSwgbnVtYmVyPSRudW1iZXIKRU9NCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBjYWxsIGZ1bGwgc2Nhbm5lciBpZiBtYXkgbm90IGJlIGludGVnZXIKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgIGlmICggIWRlZmluZWQoJG51bWJlcikgKSB7CiAgICAgICAgICAgICRudW1iZXIgPSBzY2FuX251bWJlcigpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJG51bWJlcjsKICAgIH0KCiAgICAjIGEgc3ViIHRvIHdhcm4gaWYgdG9rZW4gZm91bmQgd2hlcmUgdGVybSBleHBlY3RlZAogICAgc3ViIGVycm9yX2lmX2V4cGVjdGluZ19URVJNIHsKICAgICAgICBpZiAoICRleHBlY3RpbmcgPT0gVEVSTSApIHsKICAgICAgICAgICAgaWYgKCAkcmVhbGx5X3dhbnRfdGVybXskbGFzdF9ub25ibGFua190eXBlfSApIHsKICAgICAgICAgICAgICAgIHJlcG9ydF91bmV4cGVjdGVkKCAkdG9rLCAidGVybSIsICRpX3RvaywgJGxhc3Rfbm9uYmxhbmtfaSwKICAgICAgICAgICAgICAgICAgICAkcnRva2VuX21hcCwgJHJ0b2tlbl90eXBlLCAkaW5wdXRfbGluZSApOwogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgYSBzdWIgdG8gd2FybiBpZiB0b2tlbiBmb3VuZCB3aGVyZSBvcGVyYXRvciBleHBlY3RlZAogICAgc3ViIGVycm9yX2lmX2V4cGVjdGluZ19PUEVSQVRPUiB7CiAgICAgICAgbXkgJHRoaW5nID0gc2hpZnQ7CiAgICAgICAgaWYgKCAkZXhwZWN0aW5nID09IE9QRVJBVE9SICkgewogICAgICAgICAgICBpZiAoICFkZWZpbmVkKCR0aGluZykgKSB7ICR0aGluZyA9ICR0b2sgfQogICAgICAgICAgICByZXBvcnRfdW5leHBlY3RlZCggJHRoaW5nLCAib3BlcmF0b3IiLCAkaV90b2ssICRsYXN0X25vbmJsYW5rX2ksCiAgICAgICAgICAgICAgICAkcnRva2VuX21hcCwgJHJ0b2tlbl90eXBlLCAkaW5wdXRfbGluZSApOwogICAgICAgICAgICBpZiAoICRpX3RvayA9PSAwICkgewogICAgICAgICAgICAgICAgaW50ZXJydXB0X2xvZ2ZpbGUoKTsKICAgICAgICAgICAgICAgIHdhcm5pbmcoIk1pc3NpbmcgJzsnIG9yICcsJyBhYm92ZT9cbiIpOwogICAgICAgICAgICAgICAgcmVzdW1lX2xvZ2ZpbGUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIGVuZCBzY2FubmVyIGludGVyZmFjZXMKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgbXkgJWlzX2Zvcl9mb3JlYWNoOwogICAgQF8gPSBxdyhmb3IgZm9yZWFjaCk7CiAgICBAaXNfZm9yX2ZvcmVhY2h7QF99ID0gKDEpIHggc2NhbGFyKEBfKTsKCiAgICBteSAlaXNfbXlfb3VyX3N0YXRlOwogICAgQF8gPSBxdyhteSBvdXIgc3RhdGUpOwogICAgQGlzX215X291cl9zdGF0ZXtAX30gPSAoMSkgeCBzY2FsYXIoQF8pOwoKICAgICMgVGhlc2Uga2V5d29yZHMgbWF5IGludHJvZHVjZSBibG9ja3MgYWZ0ZXIgcGFyZW50aGVzaXplZCBleHByZXNzaW9ucywKICAgICMgaW4gdGhlIGZvcm06CiAgICAjIGtleXdvcmQgKCAuLi4uICkgeyBCTE9DSyB9CiAgICAjIHBhdGNoIGZvciBTV0lUQ0gvQ0FTRTogYWRkZWQgJ3N3aXRjaCcgJ2Nhc2UnICdnaXZlbicgJ3doZW4nCiAgICBteSAlaXNfYmxvY2t0eXBlX3dpdGhfcGFyZW47CiAgICBAXyA9CiAgICAgIHF3KGlmIGVsc2lmIHVubGVzcyB3aGlsZSB1bnRpbCBmb3IgZm9yZWFjaCBzd2l0Y2ggY2FzZSBnaXZlbiB3aGVuIGNhdGNoKTsKICAgIEBpc19ibG9ja3R5cGVfd2l0aF9wYXJlbntAX30gPSAoMSkgeCBzY2FsYXIoQF8pOwoKICAgIG15ICVpc19jYXNlX2RlZmF1bHQ7CiAgICBAXyA9IHF3KGNhc2UgZGVmYXVsdCk7CiAgICBAaXNfY2FzZV9kZWZhdWx0e0BffSA9ICgxKSB4IHNjYWxhcihAXyk7CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgYmVnaW4gaGFzaCBvZiBjb2RlIGZvciBoYW5kbGluZyBtb3N0IHRva2VuIHR5cGVzCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgbXkgJHRva2VuaXphdGlvbl9jb2RlID0gewoKICAgICAgICAjIG5vIHNwZWNpYWwgY29kZSBmb3IgdGhlc2UgdHlwZXMgeWV0LCBidXQgc3ludGF4IGNoZWNrcwogICAgICAgICMgY291bGQgYmUgYWRkZWQKCiMjICAgICAgJyEnICAgPT4gdW5kZWYsCiMjICAgICAgJyE9JyAgPT4gdW5kZWYsCiMjICAgICAgJyF+JyAgPT4gdW5kZWYsCiMjICAgICAgJyU9JyAgPT4gdW5kZWYsCiMjICAgICAgJyYmPScgPT4gdW5kZWYsCiMjICAgICAgJyY9JyAgPT4gdW5kZWYsCiMjICAgICAgJys9JyAgPT4gdW5kZWYsCiMjICAgICAgJy09JyAgPT4gdW5kZWYsCiMjICAgICAgJy4uJyAgPT4gdW5kZWYsCiMjICAgICAgJy4uJyAgPT4gdW5kZWYsCiMjICAgICAgJy4uLicgPT4gdW5kZWYsCiMjICAgICAgJy49JyAgPT4gdW5kZWYsCiMjICAgICAgJzw8PScgPT4gdW5kZWYsCiMjICAgICAgJzw9JyAgPT4gdW5kZWYsCiMjICAgICAgJzw9PicgPT4gdW5kZWYsCiMjICAgICAgJzw+JyAgPT4gdW5kZWYsCiMjICAgICAgJz0nICAgPT4gdW5kZWYsCiMjICAgICAgJz09JyAgPT4gdW5kZWYsCiMjICAgICAgJz1+JyAgPT4gdW5kZWYsCiMjICAgICAgJz49JyAgPT4gdW5kZWYsCiMjICAgICAgJz4+JyAgPT4gdW5kZWYsCiMjICAgICAgJz4+PScgPT4gdW5kZWYsCiMjICAgICAgJ1xcJyAgPT4gdW5kZWYsCiMjICAgICAgJ149JyAgPT4gdW5kZWYsCiMjICAgICAgJ3w9JyAgPT4gdW5kZWYsCiMjICAgICAgJ3x8PScgPT4gdW5kZWYsCiMjICAgICAgJy8vPScgPT4gdW5kZWYsCiMjICAgICAgJ34nICAgPT4gdW5kZWYsCiMjICAgICAgJ35+JyAgPT4gdW5kZWYsCiMjICAgICAgJyF+ficgID0+IHVuZGVmLAoKICAgICAgICAnPicgPT4gc3ViIHsKICAgICAgICAgICAgZXJyb3JfaWZfZXhwZWN0aW5nX1RFUk0oKQogICAgICAgICAgICAgIGlmICggJGV4cGVjdGluZyA9PSBURVJNICk7CiAgICAgICAgfSwKICAgICAgICAnfCcgPT4gc3ViIHsKICAgICAgICAgICAgZXJyb3JfaWZfZXhwZWN0aW5nX1RFUk0oKQogICAgICAgICAgICAgIGlmICggJGV4cGVjdGluZyA9PSBURVJNICk7CiAgICAgICAgfSwKICAgICAgICAnJCcgPT4gc3ViIHsKCiAgICAgICAgICAgICMgc3RhcnQgbG9va2luZyBmb3IgYSBzY2FsYXIKICAgICAgICAgICAgZXJyb3JfaWZfZXhwZWN0aW5nX09QRVJBVE9SKCJTY2FsYXIiKQogICAgICAgICAgICAgIGlmICggJGV4cGVjdGluZyA9PSBPUEVSQVRPUiApOwogICAgICAgICAgICBzY2FuX2lkZW50aWZpZXJfZmFzdCgpOwoKICAgICAgICAgICAgaWYgKCAkaWRlbnRpZmllciBlcSAnJF5XJyApIHsKICAgICAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+W19zYXdfcGVybF9kYXNoX3dfXSA9IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQ2hlY2sgZm9yIGlkZW50aWZpZXIgaW4gaW5kaXJlY3Qgb2JqZWN0IHNsb3QKICAgICAgICAgICAgIyAodm9yYm9hcmQucGwsIHNvcnQudCkuICBTb21ldGhpbmcgbGlrZToKICAgICAgICAgICAgIyAgIC9eKHByaW50fHByaW50Znxzb3J0fGV4ZWN8c3lzdGVtKSQvCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRpc19pbmRpcmVjdF9vYmplY3RfdGFrZXJ7JGxhc3Rfbm9uYmxhbmtfdG9rZW59CiAgICAgICAgICAgICAgICB8fCAoICggJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJygnICkKICAgICAgICAgICAgICAgICAgICAmJiAkaXNfaW5kaXJlY3Rfb2JqZWN0X3Rha2VyeyAkcGFyZW5fdHlwZVskcGFyZW5fZGVwdGhdIH0gKQogICAgICAgICAgICAgICAgfHwgKCAgICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ3cnCiAgICAgICAgICAgICAgICAgICAgfHwgJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAnVScgKSAgICAjIHBvc3NpYmxlIG9iamVjdAogICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHR5cGUgPSAnWic7CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICcoJyA9PiBzdWIgewoKICAgICAgICAgICAgKyskcGFyZW5fZGVwdGg7CiAgICAgICAgICAgICRwYXJlbl9zZW1pY29sb25fY291bnRbJHBhcmVuX2RlcHRoXSA9IDA7CiAgICAgICAgICAgIGlmICgkd2FudF9wYXJlbikgewogICAgICAgICAgICAgICAgJGNvbnRhaW5lcl90eXBlID0gJHdhbnRfcGFyZW47CiAgICAgICAgICAgICAgICAkd2FudF9wYXJlbiAgICAgPSAiIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRzdGF0ZW1lbnRfdHlwZSA9fiAvXnN1YlxiLyApIHsKICAgICAgICAgICAgICAgICRjb250YWluZXJfdHlwZSA9ICRzdGF0ZW1lbnRfdHlwZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRjb250YWluZXJfdHlwZSA9ICRsYXN0X25vbmJsYW5rX3Rva2VuOwoKICAgICAgICAgICAgICAgICMgV2UgY2FuIGNoZWNrIGZvciBhIHN5bnRheCBlcnJvciBoZXJlIG9mIHVuZXhwZWN0ZWQgJygnLAogICAgICAgICAgICAgICAgIyBidXQgdGhpcyBpcyBnb2luZyB0byBnZXQgbWVzc3kuLi4KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkZXhwZWN0aW5nID09IE9QRVJBVE9SCgogICAgICAgICAgICAgICAgICAgICMgYmUgc3VyZSB0aGlzIGlzIG5vdCBhIG1ldGhvZCBjYWxsIG9mIHRoZSBmb3JtCiAgICAgICAgICAgICAgICAgICAgIyAmbWV0aG9kKC4uLiksICRtZXRob2QtPiguLiksICZ7bWV0aG9kfSguLi4pLAogICAgICAgICAgICAgICAgICAgICMgJHJlZlsyXShsaXN0KSBpcyBvayAmIHNob3J0IGZvciAkcmVmWzJdLT4obGlzdCkKICAgICAgICAgICAgICAgICAgICAjIE5PVEU6IGF0IHByZXNlbnQsIGJyYWNlcyBpbiBzb21ldGhpbmcgbGlrZSAmeyB4eHggfQogICAgICAgICAgICAgICAgICAgICMgYXJlIG5vdCBtYXJrZWQgYXMgYSBibG9jaywgd2UgbWlnaHQgaGF2ZSBhIG1ldGhvZCBjYWxsCiAgICAgICAgICAgICAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gIX4gL14oW1xdXH1cJl18XC1cPikvCgogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICMgcmVmOiBjYW1lbCAzIHAgNzAzLgogICAgICAgICAgICAgICAgICAgIGlmICggJGxhc3RfbGFzdF9ub25ibGFua190b2tlbiBlcSAnZG8nICkgewogICAgICAgICAgICAgICAgICAgICAgICBjb21wbGFpbigKImRvIFNVQlJPVVRJTkUgaXMgZGVwcmVjYXRlZDsgY29uc2lkZXIgJiBvciAtPiBub3RhdGlvblxuIgogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgdGhpcyBpcyBhbiBlbXB0eSBsaXN0LCAoKSwgdGhlbiBpdCBpcyBub3QgYW4KICAgICAgICAgICAgICAgICAgICAgICAgIyBlcnJvcjsgZm9yIGV4YW1wbGUsIHdlIG1pZ2h0IGhhdmUgYSBjb25zdGFudCBwaSBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgIyBpbnZva2UgaXQgd2l0aCBwaSgpIG9yIGp1c3QgcGk7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICggJG5leHRfbm9uYmxhbmtfdG9rZW4sICRpX25leHQgKSA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZF9uZXh0X25vbmJsYW5rX3Rva2VuKCAkaSwgJHJ0b2tlbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWF4X3Rva2VuX2luZGV4ICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJG5leHRfbm9uYmxhbmtfdG9rZW4gbmUgJyknICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGhpbnQ7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogdGhpcyBnaXZlcyBhbiBlcnJvciBwYXJzaW5nIHNvbWV0aGluZyBsaWtlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICRzdWJzdWJzWzBdKCkoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdoaWNoIGlzIGEgdmFsaWQgc3ludGF4IChzZWUgc3Vic3ViLnQpLiAgV2UgbWF5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5lZWQgdG8gcmV2aXNlIHRoaXMgY29kaW5nLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfaWZfZXhwZWN0aW5nX09QRVJBVE9SKCcoJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkbGFzdF9ub25ibGFua190eXBlIGVxICdDJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaGludCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJGxhc3Rfbm9uYmxhbmtfdG9rZW4gaGFzIGEgdm9pZCBwcm90b3R5cGVcbiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ2knICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggICAkaV90b2sgPiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICRsYXN0X25vbmJsYW5rX3Rva2VuID1+IC9eXCQvICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoaW50ID0KIkRvIHlvdSBtZWFuICckbGFzdF9ub25ibGFua190b2tlbi0+KCcgP1xuIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGhpbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRfbG9nZmlsZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcoJGhpbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZV9sb2dmaWxlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0gIyMgZW5kIGlmICggJG5leHRfbm9uYmxhbmtfdG9rZW4uLi4KICAgICAgICAgICAgICAgICAgICB9ICMjIGVuZCBlbHNlIFsgaWYgKCAkbGFzdF9sYXN0X25vbmJsYW5rX3Rva2VuLi4uCiAgICAgICAgICAgICAgICB9ICMjIGVuZCBpZiAoICRleHBlY3RpbmcgPT0gT1BFUkFUT1IuLi4KICAgICAgICAgICAgfQogICAgICAgICAgICAkcGFyZW5fdHlwZVskcGFyZW5fZGVwdGhdID0gJGNvbnRhaW5lcl90eXBlOwogICAgICAgICAgICAoICR0eXBlX3NlcXVlbmNlLCAkaW5kZW50X2ZsYWcgKSA9CiAgICAgICAgICAgICAgaW5jcmVhc2VfbmVzdGluZ19kZXB0aCggUEFSRU4sICRydG9rZW5fbWFwLT5bJGlfdG9rXSApOwoKICAgICAgICAgICAgIyBwcm9wYWdhdGUgdHlwZXMgZG93biB0aHJvdWdoIG5lc3RlZCBwYXJlbnMKICAgICAgICAgICAgIyBmb3IgZXhhbXBsZTogdGhlIHNlY29uZCBwYXJlbiBpbiAnaWYgKCgnIHdvdWxkIGJlIHN0cnVjdHVyYWwKICAgICAgICAgICAgIyBzaW5jZSB0aGUgZmlyc3QgaXMuCgogICAgICAgICAgICBpZiAoICRsYXN0X25vbmJsYW5rX3Rva2VuIGVxICcoJyApIHsKICAgICAgICAgICAgICAgICR0eXBlID0gJGxhc3Rfbm9uYmxhbmtfdHlwZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyAgICAgV2UgZXhjbHVkZSBwYXJlbnMgYXMgc3RydWN0dXJhbCBhZnRlciBhICcsJyBiZWNhdXNlIGl0CiAgICAgICAgICAgICMgICAgIGNhdXNlcyBzdWJ0bGUgcHJvYmxlbXMgd2l0aCBjb250aW51YXRpb24gaW5kZW50YXRpb24gZm9yCiAgICAgICAgICAgICMgICAgIHNvbWV0aGluZyBsaWtlIHRoaXMsIHdoZXJlIHRoZSBmaXJzdCAnb3InIHdpbGwgbm90IGdldAogICAgICAgICAgICAjICAgICBpbmRlbnRlZC4KICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgYXNzZXJ0KAogICAgICAgICAgICAjICAgICAgICAgICAgIF9fTElORV9fLAogICAgICAgICAgICAjICAgICAgICAgICAgICggbm90IGRlZmluZWQgJGNoZWNrICkKICAgICAgICAgICAgIyAgICAgICAgICAgICAgIG9yIHJlZiAkY2hlY2sKICAgICAgICAgICAgIyAgICAgICAgICAgICAgIG9yICRjaGVjayBlcSAibmV3IgogICAgICAgICAgICAjICAgICAgICAgICAgICAgb3IgJGNoZWNrIGVxICJvbGQiLAogICAgICAgICAgICAjICAgICAgICAgKTsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICBMaWtld2lzZSwgd2UgZXhjbHVkZSBwYXJlbnMgd2hlcmUgYSBzdGF0ZW1lbnQgY2FuIHN0YXJ0CiAgICAgICAgICAgICMgICAgIGJlY2F1c2Ugb2YgcHJvYmxlbXMgd2l0aCBjb250aW51YXRpb24gaW5kZW50YXRpb24sIGxpa2UKICAgICAgICAgICAgIyAgICAgdGhlc2U6CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICgkZmlyc3RsaW5lID1+IC9eI1whLipwZXJsLykKICAgICAgICAgICAgIyAgICAgICAgIGFuZCAocHJpbnQgJEZpbGU6OkZpbmQ6Om5hbWUsICJcbiIpCiAgICAgICAgICAgICMgICAgICAgICAgIGFuZCAocmV0dXJuIDEpOwogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAocmVmKCR1c2FnZV9mcmVmKSA9fiAvQ09ERS8pCiAgICAgICAgICAgICMgICAgICAgICA/ICYkdXNhZ2VfZnJlZgogICAgICAgICAgICAjICAgICAgICAgICA6ICgmYmxhc3RfdXNhZ2UsICZibGFzdF9wYXJhbXMsICZibGFzdF9nZW5lcmFsX3BhcmFtcyk7CgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICR0eXBlID0gJ3snOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJyknICkgewogICAgICAgICAgICAgICAgd2FybmluZygKICAgICAgICAgICAgICAgICAgICAiU3ludGF4IGVycm9yPyBmb3VuZCB0b2tlbiAnJGxhc3Rfbm9uYmxhbmtfdHlwZScgdGhlbiAnKCdcbiIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHBhcmVuX3N0cnVjdHVyYWxfdHlwZVskcGFyZW5fZGVwdGhdID0gJHR5cGU7CgogICAgICAgIH0sCiAgICAgICAgJyknID0+IHN1YiB7CiAgICAgICAgICAgICggJHR5cGVfc2VxdWVuY2UsICRpbmRlbnRfZmxhZyApID0KICAgICAgICAgICAgICBkZWNyZWFzZV9uZXN0aW5nX2RlcHRoKCBQQVJFTiwgJHJ0b2tlbl9tYXAtPlskaV90b2tdICk7CgogICAgICAgICAgICBpZiAoICRwYXJlbl9zdHJ1Y3R1cmFsX3R5cGVbJHBhcmVuX2RlcHRoXSBlcSAneycgKSB7CiAgICAgICAgICAgICAgICAkdHlwZSA9ICd9JzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGNvbnRhaW5lcl90eXBlID0gJHBhcmVuX3R5cGVbJHBhcmVuX2RlcHRoXTsKCiAgICAgICAgICAgICMgcmVzdG9yZSBzdGF0ZW1lbnQgdHlwZSBhcyAnc3ViJyBhdCBjbG9zaW5nIHBhcmVuIG9mIGEgc2lnbmF0dXJlCiAgICAgICAgICAgICMgc28gdGhhdCBhIHN1YnNlcXVlbnQgJzonIGlzIGlkZW50aWZpZWQgYXMgYW4gYXR0cmlidXRlCiAgICAgICAgICAgIGlmICggJGNvbnRhaW5lcl90eXBlID1+IC9ec3ViXGIvICkgewogICAgICAgICAgICAgICAgJHN0YXRlbWVudF90eXBlID0gJGNvbnRhaW5lcl90eXBlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjICAgIC9eKGZvcnxmb3JlYWNoKSQvCiAgICAgICAgICAgIGlmICggJGlzX2Zvcl9mb3JlYWNoeyAkcGFyZW5fdHlwZVskcGFyZW5fZGVwdGhdIH0gKSB7CiAgICAgICAgICAgICAgICBteSAkbnVtX3NjID0gJHBhcmVuX3NlbWljb2xvbl9jb3VudFskcGFyZW5fZGVwdGhdOwogICAgICAgICAgICAgICAgaWYgKCAkbnVtX3NjID4gMCAmJiAkbnVtX3NjICE9IDIgKSB7CiAgICAgICAgICAgICAgICAgICAgd2FybmluZygiRXhwZWN0ZWQgMiAnOycgaW4gJ2Zvcig7OyknIGJ1dCBzYXcgJG51bV9zY1xuIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJHBhcmVuX2RlcHRoID4gMCApIHsgJHBhcmVuX2RlcHRoLS0gfQogICAgICAgIH0sCiAgICAgICAgJywnID0+IHN1YiB7CiAgICAgICAgICAgIGlmICggJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAnLCcgKSB7CiAgICAgICAgICAgICAgICBjb21wbGFpbigiUmVwZWF0ZWQgJywncyBcbiIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHBhdGNoIGZvciBvcGVyYXRvcl9leHBlY3RlZDogbm90ZSBpZiB3ZSBhcmUgaW4gdGhlIGxpc3QgKHVzZS50KQogICAgICAgICAgICBpZiAoICRzdGF0ZW1lbnRfdHlwZSBlcSAndXNlJyApIHsgJHN0YXRlbWVudF90eXBlID0gJ191c2UnIH0KIyMgICAgICAgICAgICAgICAgRklYTUU6IG5lZWQgdG8gbW92ZSB0aGlzIGVsc2V3aGVyZSwgcGVyaGFwcyBjaGVjayBhZnRlciBhICcoJwojIyAgICAgICAgICAgICAgICBlbHNpZiAoJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJygnKSB7CiMjICAgICAgICAgICAgICAgICAgICB3YXJuaW5nKCJMZWFkaW5nICcsJ3MgaWxsZWdhbCBpbiBzb21lIHZlcnNpb25zIG9mIHBlcmxcbiIpOwojIyAgICAgICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAnOycgPT4gc3ViIHsKICAgICAgICAgICAgJGNvbnRleHQgICAgICAgID0gVU5LTk9XTl9DT05URVhUOwogICAgICAgICAgICAkc3RhdGVtZW50X3R5cGUgPSAnJzsKICAgICAgICAgICAgJHdhbnRfcGFyZW4gICAgID0gIiI7CgogICAgICAgICAgICAjICAgIC9eKGZvcnxmb3JlYWNoKSQvCiAgICAgICAgICAgIGlmICggJGlzX2Zvcl9mb3JlYWNoeyAkcGFyZW5fdHlwZVskcGFyZW5fZGVwdGhdIH0gKQogICAgICAgICAgICB7ICAgICMgbWFyayA7IGluIGZvciBsb29wCgogICAgICAgICAgICAgICAgIyBCZSBjYXJlZnVsOiB3ZSBkbyBub3Qgd2FudCBhIHNlbWljb2xvbiBzdWNoIGFzIHRoZQogICAgICAgICAgICAgICAgIyBmb2xsb3dpbmcgdG8gYmUgaW5jbHVkZWQ6CiAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAjICAgIGZvciAoc29ydCB7c3RyY29sbCgkYSwkYik7fSBrZXlzICVpbnZlc3RtZW50cykgewoKICAgICAgICAgICAgICAgIGlmICggICAkYnJhY2VfZGVwdGggPT0gJGRlcHRoX2FycmF5W1BBUkVOXVtCUkFDRV1bJHBhcmVuX2RlcHRoXQogICAgICAgICAgICAgICAgICAgICYmICRzcXVhcmVfYnJhY2tldF9kZXB0aCA9PQogICAgICAgICAgICAgICAgICAgICRkZXB0aF9hcnJheVtQQVJFTl1bU1FVQVJFX0JSQUNLRVRdWyRwYXJlbl9kZXB0aF0gKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICdmJzsKICAgICAgICAgICAgICAgICAgICAkcGFyZW5fc2VtaWNvbG9uX2NvdW50WyRwYXJlbl9kZXB0aF0rKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICB9LAogICAgICAgICciJyA9PiBzdWIgewogICAgICAgICAgICBlcnJvcl9pZl9leHBlY3RpbmdfT1BFUkFUT1IoIlN0cmluZyIpCiAgICAgICAgICAgICAgaWYgKCAkZXhwZWN0aW5nID09IE9QRVJBVE9SICk7CiAgICAgICAgICAgICRpbl9xdW90ZSAgICAgICAgICAgICAgICA9IDE7CiAgICAgICAgICAgICR0eXBlICAgICAgICAgICAgICAgICAgICA9ICdRJzsKICAgICAgICAgICAgJGFsbG93ZWRfcXVvdGVfbW9kaWZpZXJzID0gIiI7CiAgICAgICAgfSwKICAgICAgICAiJyIgPT4gc3ViIHsKICAgICAgICAgICAgZXJyb3JfaWZfZXhwZWN0aW5nX09QRVJBVE9SKCJTdHJpbmciKQogICAgICAgICAgICAgIGlmICggJGV4cGVjdGluZyA9PSBPUEVSQVRPUiApOwogICAgICAgICAgICAkaW5fcXVvdGUgICAgICAgICAgICAgICAgPSAxOwogICAgICAgICAgICAkdHlwZSAgICAgICAgICAgICAgICAgICAgPSAnUSc7CiAgICAgICAgICAgICRhbGxvd2VkX3F1b3RlX21vZGlmaWVycyA9ICIiOwogICAgICAgIH0sCiAgICAgICAgJ2AnID0+IHN1YiB7CiAgICAgICAgICAgIGVycm9yX2lmX2V4cGVjdGluZ19PUEVSQVRPUigiU3RyaW5nIikKICAgICAgICAgICAgICBpZiAoICRleHBlY3RpbmcgPT0gT1BFUkFUT1IgKTsKICAgICAgICAgICAgJGluX3F1b3RlICAgICAgICAgICAgICAgID0gMTsKICAgICAgICAgICAgJHR5cGUgICAgICAgICAgICAgICAgICAgID0gJ1EnOwogICAgICAgICAgICAkYWxsb3dlZF9xdW90ZV9tb2RpZmllcnMgPSAiIjsKICAgICAgICB9LAogICAgICAgICcvJyA9PiBzdWIgewogICAgICAgICAgICBteSAkaXNfcGF0dGVybjsKCiAgICAgICAgICAgICMgYSBwYXR0ZXJuIGNhbm5vdCBmb2xsb3cgY2VydGFpbiBrZXl3b3JkcyB3aGljaCB0YWtlIG9wdGlvbmFsCiAgICAgICAgICAgICMgYXJndW1lbnRzLCBsaWtlICdzaGlmdCcgYW5kICdwb3AnLiBTZWUgYWxzbyAnPycuCiAgICAgICAgICAgIGlmICggJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAnaycKICAgICAgICAgICAgICAgICYmICRpc19rZXl3b3JkX3JlamVjdGluZ19zbGFzaF9hc19wYXR0ZXJuX2RlbGltaXRlcnsKICAgICAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua190b2tlbn0gKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkaXNfcGF0dGVybiA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkZXhwZWN0aW5nID09IFVOS05PV04gKSB7ICAgICMgaW5kZXRlcm1pbmF0ZSwgbXVzdCBndWVzcy4uCiAgICAgICAgICAgICAgICBteSAkbXNnOwogICAgICAgICAgICAgICAgKCAkaXNfcGF0dGVybiwgJG1zZyApID0KICAgICAgICAgICAgICAgICAgZ3Vlc3NfaWZfcGF0dGVybl9vcl9kaXZpc2lvbiggJGksICRydG9rZW5zLCAkcnRva2VuX21hcCwKICAgICAgICAgICAgICAgICAgICAkbWF4X3Rva2VuX2luZGV4ICk7CgogICAgICAgICAgICAgICAgaWYgKCRtc2cpIHsKICAgICAgICAgICAgICAgICAgICB3cml0ZV9kaWFnbm9zdGljcygiRElWSURFOiRtc2dcbiIpOwogICAgICAgICAgICAgICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoJG1zZyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7ICRpc19wYXR0ZXJuID0gKCAkZXhwZWN0aW5nID09IFRFUk0gKSB9CgogICAgICAgICAgICBpZiAoJGlzX3BhdHRlcm4pIHsKICAgICAgICAgICAgICAgICRpbl9xdW90ZSAgICAgICAgICAgICAgICA9IDE7CiAgICAgICAgICAgICAgICAkdHlwZSAgICAgICAgICAgICAgICAgICAgPSAnUSc7CiAgICAgICAgICAgICAgICAkYWxsb3dlZF9xdW90ZV9tb2RpZmllcnMgPSAnW21zaXhwb2R1YWxuZ2NdJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsgICAgIyBub3QgYSBwYXR0ZXJuOyBjaGVjayBmb3IgYSAvPSB0b2tlbgoKICAgICAgICAgICAgICAgIGlmICggJHJ0b2tlbnMtPlsgJGkgKyAxIF0gZXEgJz0nICkgeyAgICAjIGZvcm0gdG9rZW4gLz0KICAgICAgICAgICAgICAgICAgICAkaSsrOwogICAgICAgICAgICAgICAgICAgICR0b2sgID0gJy89JzsKICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICR0b2s7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICNERUJVRyAtIGNvbGxlY3RpbmcgaW5mbyBvbiB3aGF0IHRva2VucyBmb2xsb3cgYSBkaXZpZGUKICAgICAgICAgICAgICAjIGZvciBkZXZlbG9wbWVudCBvZiBndWVzc2luZyBhbGdvcml0aG0KICAgICAgICAgICAgICAjaWYgKCBudW1lcmF0b3JfZXhwZWN0ZWQoICRpLCAkcnRva2VucywgJG1heF90b2tlbl9pbmRleCApIDwgMCApIHsKICAgICAgICAgICAgICAjICAgICN3cml0ZV9kaWFnbm9zdGljcyggIkRJVklERT8gJGlucHV0X2xpbmVcbiIgKTsKICAgICAgICAgICAgICAjfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAneycgPT4gc3ViIHsKCiAgICAgICAgICAgICMgaWYgd2UganVzdCBzYXcgYSAnKScsIHdlIHdpbGwgbGFiZWwgdGhpcyBibG9jayB3aXRoCiAgICAgICAgICAgICMgaXRzIHR5cGUuICBXZSBuZWVkIHRvIGRvIHRoaXMgdG8gYWxsb3cgc3ViCiAgICAgICAgICAgICMgY29kZV9ibG9ja190eXBlIHRvIGRldGVybWluZSBpZiB0aGlzIGJyYWNlIHN0YXJ0cyBhCiAgICAgICAgICAgICMgY29kZSBibG9jayBvciBhbm9ueW1vdXMgaGFzaC4gIChUaGUgdHlwZSBvZiBhIHBhcmVuCiAgICAgICAgICAgICMgcGFpciBpcyB0aGUgcHJlY2VkaW5nIHRva2VuLCBzdWNoIGFzICdpZicsICdlbHNlJywKICAgICAgICAgICAgIyBldGMpLgogICAgICAgICAgICAkY29udGFpbmVyX3R5cGUgPSAiIjsKCiAgICAgICAgICAgICMgQVRUUlM6IGZvciBhICd7JyBmb2xsb3dpbmcgYW4gYXR0cmlidXRlIGxpc3QsIHJlc2V0CiAgICAgICAgICAgICMgdGhpbmdzIHRvIGxvb2sgbGlrZSB3ZSBqdXN0IHNhdyB0aGUgc3ViIG5hbWUKICAgICAgICAgICAgIyBGSVhNRTogbmVlZCB0byBlbmQgd2l0aCBcYiBoZXJlPz8KICAgICAgICAgICAgaWYgKCAkc3RhdGVtZW50X3R5cGUgPX4gL15zdWIvICkgewogICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gPSAkc3RhdGVtZW50X3R5cGU7CiAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua190eXBlICA9ICdpJzsKICAgICAgICAgICAgICAgICRzdGF0ZW1lbnRfdHlwZSAgICAgID0gIiI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcGF0Y2ggZm9yIFNXSVRDSC9DQVNFOiBoaWRlIHRoZXNlIGtleXdvcmRzIGZyb20gYW4gaW1tZWRpYXRlbHkKICAgICAgICAgICAgIyBmb2xsb3dpbmcgb3BlbmluZyBicmFjZQogICAgICAgICAgICBlbHNpZiAoICggJHN0YXRlbWVudF90eXBlIGVxICdjYXNlJyB8fCAkc3RhdGVtZW50X3R5cGUgZXEgJ3doZW4nICkKICAgICAgICAgICAgICAgICYmICRzdGF0ZW1lbnRfdHlwZSBlcSAkbGFzdF9ub25ibGFua190b2tlbiApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3Rva2VuID0gIjsiOwogICAgICAgICAgICB9CgogICAgICAgICAgICBlbHNpZiAoICRsYXN0X25vbmJsYW5rX3Rva2VuIGVxICcpJyApIHsKICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3Rva2VuID0gJHBhcmVuX3R5cGVbICRwYXJlbl9kZXB0aCArIDEgXTsKCiAgICAgICAgICAgICAgICAjIGRlZmVuc2l2ZSBtb3ZlIGluIGNhc2Ugb2YgYSBuZXN0aW5nIGVycm9yIChwYnVnLnQpCiAgICAgICAgICAgICAgICAjIGluIHdoaWNoIHRoaXMgJyknIGhhZCBubyBwcmV2aW91cyAnKCcKICAgICAgICAgICAgICAgICMgdGhpcyBuZXN0aW5nIGVycm9yIHdpbGwgaGF2ZSBiZWVuIGNhdWdodAogICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCgkbGFzdF9ub25ibGFua190b2tlbikgKSB7CiAgICAgICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gPSAnaWYnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgY2hlY2sgZm9yIHN5bnRheCBlcnJvciBoZXJlOwogICAgICAgICAgICAgICAgdW5sZXNzICggJGlzX2Jsb2NrdHlwZV93aXRoX3BhcmVueyRsYXN0X25vbmJsYW5rX3Rva2VufSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICR0b2tlbml6ZXJfc2VsZi0+W19leHRlbmRlZF9zeW50YXhfXSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgd2UgYXBwZW5kIGEgdHJhaWxpbmcgKCkgdG8gbWFyayB0aGlzIGFzIGFuIHVua25vd24KICAgICAgICAgICAgICAgICAgICAgICAgIyBibG9jayB0eXBlLiAgVGhpcyBhbGxvd3MgcGVybHRpZHkgdG8gZm9ybWF0IHNvbWUKICAgICAgICAgICAgICAgICAgICAgICAgIyBjb21tb24gZXh0ZW5zaW9ucyBvZiBwZXJsIHN5bnRheC4KICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIHVzZWQgYnkgc3ViIGNvZGVfYmxvY2tfdHlwZQogICAgICAgICAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua190b2tlbiAuPSAnKCknOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGxpc3QgPQogICAgICAgICAgICAgICAgICAgICAgICAgIGpvaW4oICcgJywgc29ydCBrZXlzICVpc19ibG9ja3R5cGVfd2l0aF9wYXJlbiApOwogICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nKAoic3ludGF4IGVycm9yIGF0ICcpIHsnLCBkaWRuJ3Qgc2VlIG9uZSBvZjogPDwkbGlzdD4+OyBJZiB0aGlzIGNvZGUgaXMgb2theSB0cnkgdXNpbmcgdGhlIC14cyBmbGFnXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHBhdGNoIGZvciBwYXJlbi1sZXNzIGZvci9mb3JlYWNoIGdsaXRjaCwgcGFydCAyLgogICAgICAgICAgICAjIHNlZSBub3RlIGJlbG93IHVuZGVyICdxdycKICAgICAgICAgICAgZWxzaWYgKCRsYXN0X25vbmJsYW5rX3Rva2VuIGVxICdxdycKICAgICAgICAgICAgICAgICYmICRpc19mb3JfZm9yZWFjaHskd2FudF9wYXJlbn0gKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua190b2tlbiA9ICR3YW50X3BhcmVuOwogICAgICAgICAgICAgICAgaWYgKCAkbGFzdF9sYXN0X25vbmJsYW5rX3Rva2VuIGVxICR3YW50X3BhcmVuICkgewogICAgICAgICAgICAgICAgICAgIHdhcm5pbmcoCiJzeW50YXggZXJyb3IgYXQgJyR3YW50X3BhcmVuIC4uIHsnIC0tIG1pc3NpbmcgXCQgbG9vcCB2YXJpYWJsZVxuIgogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHdhbnRfcGFyZW4gPSAiIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBub3cgaWRlbnRpZnkgd2hpY2ggb2YgdGhlIHRocmVlIHBvc3NpYmxlIHR5cGVzIG9mCiAgICAgICAgICAgICMgY3VybHkgYnJhY2VzIHdlIGhhdmU6IGhhc2ggaW5kZXggY29udGFpbmVyLCBhbm9ueW1vdXMKICAgICAgICAgICAgIyBoYXNoIHJlZmVyZW5jZSwgb3IgY29kZSBibG9jay4KCiAgICAgICAgICAgICMgbm9uLXN0cnVjdHVyYWwgKGhhc2ggaW5kZXgpIGN1cmx5IGJyYWNlIHBhaXIKICAgICAgICAgICAgIyBnZXQgbWFya2VkICdMJyBhbmQgJ1InCiAgICAgICAgICAgIGlmICggaXNfbm9uX3N0cnVjdHVyYWxfYnJhY2UoKSApIHsKICAgICAgICAgICAgICAgICR0eXBlID0gJ0wnOwoKICAgICAgICAgICAgICAgICMgcGF0Y2ggZm9yIFNXSVRDSC9DQVNFOgogICAgICAgICAgICAgICAgIyBhbGxvdyBwYXJlbi1sZXNzIGlkZW50aWZpZXIgYWZ0ZXIgJ3doZW4nCiAgICAgICAgICAgICAgICAjIGlmIHRoZSBicmFjZSBpcyBwcmVjZWRlZCBieSBhIHNwYWNlCiAgICAgICAgICAgICAgICBpZiAoICAgJHN0YXRlbWVudF90eXBlIGVxICd3aGVuJwogICAgICAgICAgICAgICAgICAgICYmICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ2knCiAgICAgICAgICAgICAgICAgICAgJiYgJGxhc3RfbGFzdF9ub25ibGFua190eXBlIGVxICdrJwogICAgICAgICAgICAgICAgICAgICYmICggJGlfdG9rID09IDAgfHwgJHJ0b2tlbl90eXBlLT5bICRpX3RvayAtIDEgXSBlcSAnYicgKSApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJHR5cGUgICAgICAgPSAneyc7CiAgICAgICAgICAgICAgICAgICAgJGJsb2NrX3R5cGUgPSAkc3RhdGVtZW50X3R5cGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY29kZSBhbmQgYW5vbnltb3VzIGhhc2ggaGF2ZSB0aGUgc2FtZSB0eXBlLCAneycsIGJ1dCBhcmUKICAgICAgICAgICAgIyBkaXN0aW5ndWlzaGVkIGJ5ICdibG9ja190eXBlJywKICAgICAgICAgICAgIyB3aGljaCB3aWxsIGJlIGJsYW5rIGZvciBhbiBhbm9ueW1vdXMgaGFzaAogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAkYmxvY2tfdHlwZSA9IGNvZGVfYmxvY2tfdHlwZSggJGlfdG9rLCAkcnRva2VucywgJHJ0b2tlbl90eXBlLAogICAgICAgICAgICAgICAgICAgICRtYXhfdG9rZW5faW5kZXggKTsKCiAgICAgICAgICAgICAgICAjIHBhdGNoIHRvIHByb21vdGUgYmFyZXdvcmQgdHlwZSB0byBmdW5jdGlvbiB0YWtpbmcgYmxvY2sKICAgICAgICAgICAgICAgIGlmICggICAkYmxvY2tfdHlwZQogICAgICAgICAgICAgICAgICAgICYmICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ3cnCiAgICAgICAgICAgICAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfaSA+PSAwICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRyb3V0cHV0X3Rva2VuX3R5cGUtPlskbGFzdF9ub25ibGFua19pXSBlcSAndycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRyb3V0cHV0X3Rva2VuX3R5cGUtPlskbGFzdF9ub25ibGFua19pXSA9ICdHJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBwYXRjaCBmb3IgU1dJVENIL0NBU0U6IGlmIHdlIGZpbmQgYSBzdHJheSBvcGVuaW5nIGJsb2NrIGJyYWNlCiAgICAgICAgICAgICAgICAjIHdoZXJlIHdlIG1pZ2h0IGFjY2VwdCBhICdjYXNlJyBvciAnd2hlbicgYmxvY2ssIHRoZW4gdGFrZSBpdAogICAgICAgICAgICAgICAgaWYgKCAgICRzdGF0ZW1lbnRfdHlwZSBlcSAnY2FzZScKICAgICAgICAgICAgICAgICAgICB8fCAkc3RhdGVtZW50X3R5cGUgZXEgJ3doZW4nICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkYmxvY2tfdHlwZSB8fCAkYmxvY2tfdHlwZSBlcSAnfScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRibG9ja190eXBlID0gJHN0YXRlbWVudF90eXBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGJyYWNlX3R5cGVbICsrJGJyYWNlX2RlcHRoIF0gICAgICAgID0gJGJsb2NrX3R5cGU7CiAgICAgICAgICAgICRicmFjZV9wYWNrYWdlWyRicmFjZV9kZXB0aF0gICAgICAgICA9ICRjdXJyZW50X3BhY2thZ2U7CiAgICAgICAgICAgICRicmFjZV9zdHJ1Y3R1cmFsX3R5cGVbJGJyYWNlX2RlcHRoXSA9ICR0eXBlOwogICAgICAgICAgICAkYnJhY2VfY29udGV4dFskYnJhY2VfZGVwdGhdICAgICAgICAgPSAkY29udGV4dDsKICAgICAgICAgICAgKCAkdHlwZV9zZXF1ZW5jZSwgJGluZGVudF9mbGFnICkgPQogICAgICAgICAgICAgIGluY3JlYXNlX25lc3RpbmdfZGVwdGgoIEJSQUNFLCAkcnRva2VuX21hcC0+WyRpX3Rva10gKTsKICAgICAgICB9LAogICAgICAgICd9JyA9PiBzdWIgewogICAgICAgICAgICAkYmxvY2tfdHlwZSA9ICRicmFjZV90eXBlWyRicmFjZV9kZXB0aF07CiAgICAgICAgICAgIGlmICgkYmxvY2tfdHlwZSkgeyAkc3RhdGVtZW50X3R5cGUgPSAnJyB9CiAgICAgICAgICAgIGlmICggZGVmaW5lZCggJGJyYWNlX3BhY2thZ2VbJGJyYWNlX2RlcHRoXSApICkgewogICAgICAgICAgICAgICAgJGN1cnJlbnRfcGFja2FnZSA9ICRicmFjZV9wYWNrYWdlWyRicmFjZV9kZXB0aF07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2FuIGhhcHBlbiBvbiBicmFjZSBlcnJvciAoY2F1Z2h0IGVsc2V3aGVyZSkKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgKCAkdHlwZV9zZXF1ZW5jZSwgJGluZGVudF9mbGFnICkgPQogICAgICAgICAgICAgIGRlY3JlYXNlX25lc3RpbmdfZGVwdGgoIEJSQUNFLCAkcnRva2VuX21hcC0+WyRpX3Rva10gKTsKCiAgICAgICAgICAgIGlmICggJGJyYWNlX3N0cnVjdHVyYWxfdHlwZVskYnJhY2VfZGVwdGhdIGVxICdMJyApIHsKICAgICAgICAgICAgICAgICR0eXBlID0gJ1InOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHByb3BhZ2F0ZSB0eXBlIGluZm9ybWF0aW9uIGZvciAnZG8nIGFuZCAnZXZhbCcgYmxvY2tzLCBhbmQgYWxzbwogICAgICAgICAgICAjIGZvciBzbWFydG1hdGNoIG9wZXJhdG9yLiAgVGhpcyBpcyBuZWNlc3NhcnkgdG8gZW5hYmxlIHVzIHRvIGtub3cKICAgICAgICAgICAgIyBpZiBhbiBvcGVyYXRvciBvciB0ZXJtIGlzIGV4cGVjdGVkIG5leHQuCiAgICAgICAgICAgIGlmICggJGlzX2Jsb2NrX29wZXJhdG9yeyRibG9ja190eXBlfSApIHsKICAgICAgICAgICAgICAgICR0b2sgPSAkYmxvY2tfdHlwZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGNvbnRleHQgPSAkYnJhY2VfY29udGV4dFskYnJhY2VfZGVwdGhdOwogICAgICAgICAgICBpZiAoICRicmFjZV9kZXB0aCA+IDAgKSB7ICRicmFjZV9kZXB0aC0tOyB9CiAgICAgICAgfSwKICAgICAgICAnJicgPT4gc3ViIHsgICAgIyBtYXliZSBzdWIgY2FsbD8gc3RhcnQgbG9va2luZwoKICAgICAgICAgICAgIyBXZSBoYXZlIHRvIGNoZWNrIGZvciBzdWIgY2FsbCB1bmxlc3Mgd2UgYXJlIHN1cmUgd2UKICAgICAgICAgICAgIyBhcmUgZXhwZWN0aW5nIGFuIG9wZXJhdG9yLiAgVGhpcyBleGFtcGxlIGZyb20gczJwCiAgICAgICAgICAgICMgZ290IG1pc3Rha2VuIGFzIGEgcSBvcGVyYXRvciBpbiBhbiBlYXJseSB2ZXJzaW9uOgogICAgICAgICAgICAjICAgcHJpbnQgQk9EWSAmcSg8PCdFT1QnKTsKICAgICAgICAgICAgaWYgKCAkZXhwZWN0aW5nICE9IE9QRVJBVE9SICkgewoKICAgICAgICAgICAgICAgICMgQnV0IG9ubHkgbG9vayBmb3IgYSBzdWIgY2FsbCBpZiB3ZSBhcmUgZXhwZWN0aW5nIGEgdGVybSBvcgogICAgICAgICAgICAgICAgIyBpZiB0aGVyZSBpcyBubyBleGlzdGluZyBzcGFjZSBhZnRlciB0aGUgJi4KICAgICAgICAgICAgICAgICMgRm9yIGV4YW1wbGUgd2UgcHJvYmFibHkgZG9uJ3Qgd2FudCAmIGFzIHN1YiBjYWxsIGhlcmU6CiAgICAgICAgICAgICAgICAjICAgIEZjbnRsOjpTX0lSVVNSICYgJG1vZGU7CiAgICAgICAgICAgICAgICBpZiAoICRleHBlY3RpbmcgPT0gVEVSTSB8fCAkbmV4dF90eXBlIG5lICdiJyApIHsKICAgICAgICAgICAgICAgICAgICBzY2FuX2lkZW50aWZpZXJfZmFzdCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAnPCcgPT4gc3ViIHsgICAgIyBhbmdsZSBvcGVyYXRvciBvciBsZXNzIHRoYW4/CgogICAgICAgICAgICBpZiAoICRleHBlY3RpbmcgIT0gT1BFUkFUT1IgKSB7CiAgICAgICAgICAgICAgICAoICRpLCAkdHlwZSApID0KICAgICAgICAgICAgICAgICAgZmluZF9hbmdsZV9vcGVyYXRvcl90ZXJtaW5hdGlvbiggJGlucHV0X2xpbmUsICRpLCAkcnRva2VuX21hcCwKICAgICAgICAgICAgICAgICAgICAkZXhwZWN0aW5nLCAkbWF4X3Rva2VuX2luZGV4ICk7CgogICAgICAgICAgICAgICAgIyMgIFRoaXMgbWVzc2FnZSBpcyBub3QgdmVyeSBoZWxwZnVsIGFuZCBxdWl0ZSBjb25mdXNpbmcgaWYgdGhlIGFib3ZlCiAgICAgICAgICAgICAgICAjIyAgcm91dGluZSBkZWNpZGVkIG5vdCB0byB3cml0ZSBhIG1lc3NhZ2Ugd2l0aCB0aGUgbGluZSBudW1iZXIuCiAgICAgICAgICAgICAgICAjIyAgaWYgKCAkdHlwZSBlcSAnPCcgJiYgJGV4cGVjdGluZyA9PSBURVJNICkgewogICAgICAgICAgICAgICAgIyMgICAgICBlcnJvcl9pZl9leHBlY3RpbmdfVEVSTSgpOwogICAgICAgICAgICAgICAgIyMgICAgICBpbnRlcnJ1cHRfbG9nZmlsZSgpOwogICAgICAgICAgICAgICAgIyMgICAgICB3YXJuaW5nKCJVbnRlcm1pbmF0ZWQgPD4gb3BlcmF0b3I/XG4iKTsKICAgICAgICAgICAgICAgICMjICAgICAgcmVzdW1lX2xvZ2ZpbGUoKTsKICAgICAgICAgICAgICAgICMjICB9CgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAnPycgPT4gc3ViIHsgICAgIyA/OiBjb25kaXRpb25hbCBvciBzdGFydGluZyBwYXR0ZXJuPwoKICAgICAgICAgICAgbXkgJGlzX3BhdHRlcm47CgogICAgICAgICAgICAjIFBhdGNoIGZvciBydCAjMTI2OTY1CiAgICAgICAgICAgICMgYSBwYXR0ZXJuIGNhbm5vdCBmb2xsb3cgY2VydGFpbiBrZXl3b3JkcyB3aGljaCB0YWtlIG9wdGlvbmFsCiAgICAgICAgICAgICMgYXJndW1lbnRzLCBsaWtlICdzaGlmdCcgYW5kICdwb3AnLiBTZWUgYWxzbyAnLycuCiAgICAgICAgICAgIGlmICggJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAnaycKICAgICAgICAgICAgICAgICYmICRpc19rZXl3b3JkX3JlamVjdGluZ19xdWVzdGlvbl9hc19wYXR0ZXJuX2RlbGltaXRlcnsKICAgICAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua190b2tlbn0gKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkaXNfcGF0dGVybiA9IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcGF0Y2ggZm9yIFJUIzEzMTI4OCwgdXNlciBjb25zdGFudCBmdW5jdGlvbiB3aXRob3V0IHByb3RvdHlwZQogICAgICAgICAgICAjIGxhc3QgdHlwZSBpcyAnVScgZm9sbG93ZWQgYnkgPy4KICAgICAgICAgICAgZWxzaWYgKCAkbGFzdF9ub25ibGFua190eXBlID1+IC9eW0ZVWV0kLyApIHsKICAgICAgICAgICAgICAgICRpc19wYXR0ZXJuID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRleHBlY3RpbmcgPT0gVU5LTk9XTiApIHsKCiAgICAgICAgICAgICAgICAjIEluIG9sZGVyIHZlcnNpb25zIG9mIFBlcmwsIGEgYmFyZSA/IGNhbiBiZSBhIHBhdHRlcm4KICAgICAgICAgICAgICAgICMgZGVsaW1pdGVyLiAgSW4gcGVybCB2ZXJzaW9uIDUuMjIgdGhpcyB3YXMKICAgICAgICAgICAgICAgICMgZHJvcHBlZCwgYnV0IHdlIGhhdmUgdG8gc3VwcG9ydCBpdCBpbiBvcmRlciB0byBmb3JtYXQKICAgICAgICAgICAgICAgICMgb2xkZXIgcHJvZ3JhbXMuIFNlZToKICAgICAgICAgICAgICAgICMjIGh0dHBzOi8vcGVybC5kZXZlbG9wcGV6LmNvbS9kb2N1bWVudGF0aW9ucy9lbi81LjIyLjAvcGVybDUyMTFkZWx0YS5odG1sCiAgICAgICAgICAgICAgICAjIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGxpbmUgd29ya2VkCiAgICAgICAgICAgICAgICAjIGF0IG9uZSB0aW1lOgogICAgICAgICAgICAgICAgIyAgICAgID8oLiopPyAmJiAocHJpbnQgJDEsIlxuIik7CiAgICAgICAgICAgICAgICAjIEluIGN1cnJlbnQgdmVyc2lvbnMgaXQgd291bGQgaGF2ZSB0byBiZSB3cml0dGVuIHdpdGggc2xhc2hlczoKICAgICAgICAgICAgICAgICMgICAgICAvKC4qKS8gJiYgKHByaW50ICQxLCJcbiIpOwogICAgICAgICAgICAgICAgbXkgJG1zZzsKICAgICAgICAgICAgICAgICggJGlzX3BhdHRlcm4sICRtc2cgKSA9CiAgICAgICAgICAgICAgICAgIGd1ZXNzX2lmX3BhdHRlcm5fb3JfY29uZGl0aW9uYWwoICRpLCAkcnRva2VucywgJHJ0b2tlbl9tYXAsCiAgICAgICAgICAgICAgICAgICAgJG1heF90b2tlbl9pbmRleCApOwoKICAgICAgICAgICAgICAgIGlmICgkbXNnKSB7IHdyaXRlX2xvZ2ZpbGVfZW50cnkoJG1zZykgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgeyAkaXNfcGF0dGVybiA9ICggJGV4cGVjdGluZyA9PSBURVJNICkgfQoKICAgICAgICAgICAgaWYgKCRpc19wYXR0ZXJuKSB7CiAgICAgICAgICAgICAgICAkaW5fcXVvdGUgICAgICAgICAgICAgICAgPSAxOwogICAgICAgICAgICAgICAgJHR5cGUgICAgICAgICAgICAgICAgICAgID0gJ1EnOwogICAgICAgICAgICAgICAgJGFsbG93ZWRfcXVvdGVfbW9kaWZpZXJzID0gJ1ttc2l4cG9kdWFsbmdjXSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAoICR0eXBlX3NlcXVlbmNlLCAkaW5kZW50X2ZsYWcgKSA9CiAgICAgICAgICAgICAgICAgIGluY3JlYXNlX25lc3RpbmdfZGVwdGgoIFFVRVNUSU9OX0NPTE9OLAogICAgICAgICAgICAgICAgICAgICRydG9rZW5fbWFwLT5bJGlfdG9rXSApOwogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAnKicgPT4gc3ViIHsgICAgIyB0eXBlZ2xvYiwgb3IgbXVsdGlwbHk/CgogICAgICAgICAgICBpZiAoICRleHBlY3RpbmcgPT0gVEVSTSApIHsKICAgICAgICAgICAgICAgIHNjYW5faWRlbnRpZmllcl9mYXN0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgaWYgKCAkcnRva2Vucy0+WyAkaSArIDEgXSBlcSAnPScgKSB7CiAgICAgICAgICAgICAgICAgICAgJHRvayAgPSAnKj0nOwogICAgICAgICAgICAgICAgICAgICR0eXBlID0gJHRvazsKICAgICAgICAgICAgICAgICAgICAkaSsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkcnRva2Vucy0+WyAkaSArIDEgXSBlcSAnKicgKSB7CiAgICAgICAgICAgICAgICAgICAgJHRvayAgPSAnKionOwogICAgICAgICAgICAgICAgICAgICR0eXBlID0gJHRvazsKICAgICAgICAgICAgICAgICAgICAkaSsrOwogICAgICAgICAgICAgICAgICAgIGlmICggJHJ0b2tlbnMtPlsgJGkgKyAxIF0gZXEgJz0nICkgewogICAgICAgICAgICAgICAgICAgICAgICAkdG9rICA9ICcqKj0nOwogICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICR0b2s7CiAgICAgICAgICAgICAgICAgICAgICAgICRpKys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAnLicgPT4gc3ViIHsgICAgIyB3aGF0IGtpbmQgb2YgLiA/CgogICAgICAgICAgICBpZiAoICRleHBlY3RpbmcgIT0gT1BFUkFUT1IgKSB7CiAgICAgICAgICAgICAgICBzY2FuX251bWJlcigpOwogICAgICAgICAgICAgICAgaWYgKCAkdHlwZSBlcSAnLicgKSB7CiAgICAgICAgICAgICAgICAgICAgZXJyb3JfaWZfZXhwZWN0aW5nX1RFUk0oKQogICAgICAgICAgICAgICAgICAgICAgaWYgKCAkZXhwZWN0aW5nID09IFRFUk0gKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgJzonID0+IHN1YiB7CgogICAgICAgICAgICAjIGlmIHRoaXMgaXMgdGhlIGZpcnN0IG5vbmJsYW5rIGNoYXJhY3RlciwgY2FsbCBpdCBhIGxhYmVsCiAgICAgICAgICAgICMgc2luY2UgcGVybCBzZWVtcyB0byBqdXN0IHN3YWxsb3cgaXQKICAgICAgICAgICAgaWYgKCAkaW5wdXRfbGluZV9udW1iZXIgPT0gMSAmJiAkbGFzdF9ub25ibGFua19pID09IC0xICkgewogICAgICAgICAgICAgICAgJHR5cGUgPSAnSic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQVRUUlM6IGNoZWNrIGZvciBhICc6JyB3aGljaCBpbnRyb2R1Y2VzIGFuIGF0dHJpYnV0ZSBsaXN0CiAgICAgICAgICAgICMgZWl0aGVyIGFmdGVyIGEgJ3N1Yicga2V5d29yZCBvciB3aXRoaW4gYSBwYXJlbiBsaXN0CiAgICAgICAgICAgIGVsc2lmICggJHN0YXRlbWVudF90eXBlID1+IC9ec3ViXGIvICkgewogICAgICAgICAgICAgICAgJHR5cGUgICAgICAgICAgICAgID0gJ0EnOwogICAgICAgICAgICAgICAgJGluX2F0dHJpYnV0ZV9saXN0ID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBXaXRoaW5nIGEgc2lnbmF0dXJlLCB1bmxlc3Mgd2UgYXJlIGluIGEgdGVybmFyeS4gIEZvciBleGFtcGxlLAogICAgICAgICAgICAjIGZyb20gJ3QvZmlsdGVyX2V4YW1wbGUudCc6CiAgICAgICAgICAgICMgICAgbWV0aG9kIGZvbzQgKCAkY2xhc3M6ICRiYXIgKSB7ICRjbGFzcy0+YmFyKCRiYXIpIH0KICAgICAgICAgICAgZWxzaWYgKCAkcGFyZW5fdHlwZVskcGFyZW5fZGVwdGhdID1+IC9ec3ViXGIvCiAgICAgICAgICAgICAgICAmJiAhaXNfYmFsYW5jZWRfY2xvc2luZ19jb250YWluZXIoUVVFU1RJT05fQ09MT04pICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHR5cGUgICAgICAgICAgICAgID0gJ0EnOwogICAgICAgICAgICAgICAgJGluX2F0dHJpYnV0ZV9saXN0ID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjaGVjayBmb3Igc2NhbGFyIGF0dHJpYnV0ZSwgc3VjaCBhcwogICAgICAgICAgICAjIG15ICRmb28gOiBzaGFyZWQgPSAxOwogICAgICAgICAgICBlbHNpZiAoJGlzX215X291cl9zdGF0ZXskc3RhdGVtZW50X3R5cGV9CiAgICAgICAgICAgICAgICAmJiAkY3VycmVudF9kZXB0aFtRVUVTVElPTl9DT0xPTl0gPT0gMCApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICR0eXBlICAgICAgICAgICAgICA9ICdBJzsKICAgICAgICAgICAgICAgICRpbl9hdHRyaWJ1dGVfbGlzdCA9IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgTG9vayBmb3IgU3dpdGNoOjpQbGFpbiBzeW50YXggaWYgYW4gZXJyb3Igd291bGQgb3RoZXJ3aXNlIG9jY3VyCiAgICAgICAgICAgICMgaGVyZS4gTm90ZSB0aGF0IHdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIGlmIHRoZSBleHRlbmRlZCBzeW50YXgKICAgICAgICAgICAgIyBmbGFnIGlzIHNldCBiZWNhdXNlIG90aGVyd2lzZSBhbiBlcnJvciB3b3VsZCBvY2N1ciwgYW5kIHdlIHdvdWxkCiAgICAgICAgICAgICMgdGhlbiBoYXZlIHRvIG91dHB1dCBhIG1lc3NhZ2UgdGVsbGluZyB0aGUgdXNlciB0byBzZXQgdGhlCiAgICAgICAgICAgICMgZXh0ZW5kZWQgc3ludGF4IGZsYWcgdG8gYXZvaWQgdGhlIGVycm9yLgogICAgICAgICAgICAjICBjYXNlIDE6IHsKICAgICAgICAgICAgIyAgZGVmYXVsdDogewogICAgICAgICAgICAjICBkZWZhdWx0OgogICAgICAgICAgICAjIE5vdGUgdGhhdCB0aGUgbGluZSAnZGVmYXVsdDonIHdpbGwgYmUgcGFyc2VkIGFzIGEgbGFiZWwgZWxzZXdoZXJlLgogICAgICAgICAgICBlbHNpZiAoICRpc19jYXNlX2RlZmF1bHR7JHN0YXRlbWVudF90eXBlfQogICAgICAgICAgICAgICAgJiYgIWlzX2JhbGFuY2VkX2Nsb3NpbmdfY29udGFpbmVyKFFVRVNUSU9OX0NPTE9OKSApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICMgbWFyayBpdCBhcyBhIHBlcmx0aWR5IGxhYmVsIHR5cGUKICAgICAgICAgICAgICAgICR0eXBlID0gJ0onOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIG90aGVyd2lzZSwgaXQgc2hvdWxkIGJlIHBhcnQgb2YgYSA/Lzogb3BlcmF0b3IKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAoICR0eXBlX3NlcXVlbmNlLCAkaW5kZW50X2ZsYWcgKSA9CiAgICAgICAgICAgICAgICAgIGRlY3JlYXNlX25lc3RpbmdfZGVwdGgoIFFVRVNUSU9OX0NPTE9OLAogICAgICAgICAgICAgICAgICAgICRydG9rZW5fbWFwLT5bJGlfdG9rXSApOwogICAgICAgICAgICAgICAgaWYgKCAkbGFzdF9ub25ibGFua190b2tlbiBlcSAnPycgKSB7CiAgICAgICAgICAgICAgICAgICAgd2FybmluZygiU3ludGF4IGVycm9yIG5lYXIgPyA6XG4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgJysnID0+IHN1YiB7ICAgICMgd2hhdCBraW5kIG9mIHBsdXM/CgogICAgICAgICAgICBpZiAoICRleHBlY3RpbmcgPT0gVEVSTSApIHsKICAgICAgICAgICAgICAgIG15ICRudW1iZXIgPSBzY2FuX251bWJlcl9mYXN0KCk7CgogICAgICAgICAgICAgICAgIyB1bmFyeSBwbHVzIGlzIHNhZmVzdCBhc3N1bXB0aW9uIGlmIG5vdCBhIG51bWJlcgogICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCgkbnVtYmVyKSApIHsgJHR5cGUgPSAncCc7IH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRleHBlY3RpbmcgPT0gT1BFUkFUT1IgKSB7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoICRuZXh0X3R5cGUgZXEgJ3cnICkgeyAkdHlwZSA9ICdwJyB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICdAJyA9PiBzdWIgewoKICAgICAgICAgICAgZXJyb3JfaWZfZXhwZWN0aW5nX09QRVJBVE9SKCJBcnJheSIpCiAgICAgICAgICAgICAgaWYgKCAkZXhwZWN0aW5nID09IE9QRVJBVE9SICk7CiAgICAgICAgICAgIHNjYW5faWRlbnRpZmllcl9mYXN0KCk7CiAgICAgICAgfSwKICAgICAgICAnJScgPT4gc3ViIHsgICAgIyBoYXNoIG9yIG1vZHVsbz8KCiAgICAgICAgICAgICMgZmlyc3QgZ3Vlc3MgaXMgaGFzaCBpZiBubyBmb2xsb3dpbmcgYmxhbmsKICAgICAgICAgICAgaWYgKCAkZXhwZWN0aW5nID09IFVOS05PV04gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRuZXh0X3R5cGUgbmUgJ2InICkgeyAkZXhwZWN0aW5nID0gVEVSTSB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkZXhwZWN0aW5nID09IFRFUk0gKSB7CiAgICAgICAgICAgICAgICBzY2FuX2lkZW50aWZpZXJfZmFzdCgpOwogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAnWycgPT4gc3ViIHsKICAgICAgICAgICAgJHNxdWFyZV9icmFja2V0X3R5cGVbICsrJHNxdWFyZV9icmFja2V0X2RlcHRoIF0gPQogICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3Rva2VuOwogICAgICAgICAgICAoICR0eXBlX3NlcXVlbmNlLCAkaW5kZW50X2ZsYWcgKSA9CiAgICAgICAgICAgICAgaW5jcmVhc2VfbmVzdGluZ19kZXB0aCggU1FVQVJFX0JSQUNLRVQsICRydG9rZW5fbWFwLT5bJGlfdG9rXSApOwoKICAgICAgICAgICAgIyBJdCBtYXkgc2VlbSBvZGQsIGJ1dCBzdHJ1Y3R1cmFsIHNxdWFyZSBicmFja2V0cyBoYXZlCiAgICAgICAgICAgICMgdHlwZSAneycgYW5kICd9Jy4gIFRoaXMgc2ltcGxpZmllcyB0aGUgaW5kZW50YXRpb24gbG9naWMuCiAgICAgICAgICAgIGlmICggIWlzX25vbl9zdHJ1Y3R1cmFsX2JyYWNlKCkgKSB7CiAgICAgICAgICAgICAgICAkdHlwZSA9ICd7JzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkc3F1YXJlX2JyYWNrZXRfc3RydWN0dXJhbF90eXBlWyRzcXVhcmVfYnJhY2tldF9kZXB0aF0gPSAkdHlwZTsKICAgICAgICB9LAogICAgICAgICddJyA9PiBzdWIgewogICAgICAgICAgICAoICR0eXBlX3NlcXVlbmNlLCAkaW5kZW50X2ZsYWcgKSA9CiAgICAgICAgICAgICAgZGVjcmVhc2VfbmVzdGluZ19kZXB0aCggU1FVQVJFX0JSQUNLRVQsICRydG9rZW5fbWFwLT5bJGlfdG9rXSApOwoKICAgICAgICAgICAgaWYgKCAkc3F1YXJlX2JyYWNrZXRfc3RydWN0dXJhbF90eXBlWyRzcXVhcmVfYnJhY2tldF9kZXB0aF0gZXEgJ3snICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHR5cGUgPSAnfSc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcHJvcGFnYXRlIHR5cGUgaW5mb3JtYXRpb24gZm9yIHNtYXJ0bWF0Y2ggb3BlcmF0b3IuICBUaGlzIGlzCiAgICAgICAgICAgICMgbmVjZXNzYXJ5IHRvIGVuYWJsZSB1cyB0byBrbm93IGlmIGFuIG9wZXJhdG9yIG9yIHRlcm0gaXMgZXhwZWN0ZWQKICAgICAgICAgICAgIyBuZXh0LgogICAgICAgICAgICBpZiAoICRzcXVhcmVfYnJhY2tldF90eXBlWyRzcXVhcmVfYnJhY2tldF9kZXB0aF0gZXEgJ35+JyApIHsKICAgICAgICAgICAgICAgICR0b2sgPSAkc3F1YXJlX2JyYWNrZXRfdHlwZVskc3F1YXJlX2JyYWNrZXRfZGVwdGhdOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRzcXVhcmVfYnJhY2tldF9kZXB0aCA+IDAgKSB7ICRzcXVhcmVfYnJhY2tldF9kZXB0aC0tOyB9CiAgICAgICAgfSwKICAgICAgICAnLScgPT4gc3ViIHsgICAgIyB3aGF0IGtpbmQgb2YgbWludXM/CgogICAgICAgICAgICBpZiAoICggJGV4cGVjdGluZyAhPSBPUEVSQVRPUiApCiAgICAgICAgICAgICAgICAmJiAkaXNfZmlsZV90ZXN0X29wZXJhdG9yeyRuZXh0X3Rva30gKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBteSAoICRuZXh0X25vbmJsYW5rX3Rva2VuLCAkaV9uZXh0ICkgPQogICAgICAgICAgICAgICAgICBmaW5kX25leHRfbm9uYmxhbmtfdG9rZW4oICRpICsgMSwgJHJ0b2tlbnMsCiAgICAgICAgICAgICAgICAgICAgJG1heF90b2tlbl9pbmRleCApOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgZm9yIGEgcXVvdGVkIHdvcmQgbGlrZSAiLXc9Pnh4IjsKICAgICAgICAgICAgICAgICMgaXQgaXMgc3VmZmljaWVudCB0byBqdXN0IGNoZWNrIGZvciBhIGZvbGxvd2luZyAnPScKICAgICAgICAgICAgICAgIGlmICggJG5leHRfbm9uYmxhbmtfdG9rZW4gZXEgJz0nICkgewogICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ20nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGkrKzsKICAgICAgICAgICAgICAgICAgICAkdG9rIC49ICRuZXh0X3RvazsKICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICdGJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRleHBlY3RpbmcgPT0gVEVSTSApIHsKICAgICAgICAgICAgICAgIG15ICRudW1iZXIgPSBzY2FuX251bWJlcl9mYXN0KCk7CgogICAgICAgICAgICAgICAgIyBtYXliZSBwYXJ0IG9mIGJhcmV3b3JkIHRva2VuPyB1bmFyeSBpcyBzYWZlc3QKICAgICAgICAgICAgICAgIGlmICggIWRlZmluZWQoJG51bWJlcikgKSB7ICR0eXBlID0gJ20nOyB9CgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJGV4cGVjdGluZyA9PSBPUEVSQVRPUiApIHsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICBpZiAoICRuZXh0X3R5cGUgZXEgJ3cnICkgewogICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ20nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgJ14nID0+IHN1YiB7CgogICAgICAgICAgICAjIGNoZWNrIGZvciBzcGVjaWFsIHZhcmlhYmxlcyBsaWtlICR7XldBUk5JTkdfQklUU30KICAgICAgICAgICAgaWYgKCAkZXhwZWN0aW5nID09IFRFUk0gKSB7CgogICAgICAgICAgICAgICAgIyBGSVhNRTogdGhpcyBzaG91bGQgd29yayBidXQgd2lsbCBub3QgY2F0Y2ggZXJyb3JzCiAgICAgICAgICAgICAgICAjIGJlY2F1c2Ugd2UgYWxzbyBoYXZlIHRvIGJlIHN1cmUgdGhhdCBwcmV2aW91cyB0b2tlbiBpcwogICAgICAgICAgICAgICAgIyBhIHR5cGUgY2hhcmFjdGVyICgkLEAsJSkuCiAgICAgICAgICAgICAgICBpZiAoICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJ3snCiAgICAgICAgICAgICAgICAgICAgJiYgKCAkbmV4dF90b2sgIX4gL15cZC8gKQogICAgICAgICAgICAgICAgICAgICYmICggJG5leHRfdG9rID1+IC9eXHcvICkgKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICBpZiAoICRuZXh0X3RvayBlcSAnVycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+W19zYXdfcGVybF9kYXNoX3dfXSA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICR0b2sgID0gJHRvayAuICRuZXh0X3RvazsKICAgICAgICAgICAgICAgICAgICAkaSAgICA9ICRpICsgMTsKICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICd3JzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKCBlcnJvcl9pZl9leHBlY3RpbmdfVEVSTSgpICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBTb21ldGhpbmcgbGlrZSB0aGlzIGlzIHZhbGlkIGJ1dCBzdHJhbmdlOgogICAgICAgICAgICAgICAgICAgICAgICAjIHVuZGVmIF5JOwogICAgICAgICAgICAgICAgICAgICAgICBjb21wbGFpbigiVGhlICdeJyBzZWVtcyB1bnVzdWFsIGhlcmVcbiIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgICc6OicgPT4gc3ViIHsgICAgIyBwcm9iYWJseSBhIHN1YiBjYWxsCiAgICAgICAgICAgIHNjYW5fYmFyZV9pZGVudGlmaWVyKCk7CiAgICAgICAgfSwKICAgICAgICAnPDwnID0+IHN1YiB7ICAgICMgbWF5YmUgYSBoZXJlLWRvYz8KCiMjICAgICAgVGhpcyBjaGVjayByZW1vdmVkIGJlY2F1c2UgaXQgY291bGQgYmUgYSBkZXByZWNhdGVkIGhlcmUtZG9jIHdpdGgKIyMgICAgICBubyBzcGVjaWZpZWQgdGFyZ2V0LiAgU2VlIGV4YW1wbGUgaW4gbG9nIDE2IFNlcCAyMDIwLgojIyAgICAgICAgICAgIHJldHVybgojIyAgICAgICAgICAgICAgdW5sZXNzICggJGkgPCAkbWF4X3Rva2VuX2luZGV4ICkKIyMgICAgICAgICAgICAgIDsgICAgICAgICAgIyBoZXJlLWRvYyBub3QgcG9zc2libGUgaWYgZW5kIG9mIGxpbmUKCiAgICAgICAgICAgIGlmICggJGV4cGVjdGluZyAhPSBPUEVSQVRPUiApIHsKICAgICAgICAgICAgICAgIG15ICggJGZvdW5kX3RhcmdldCwgJGhlcmVfZG9jX3RhcmdldCwgJGhlcmVfcXVvdGVfY2hhcmFjdGVyLAogICAgICAgICAgICAgICAgICAgICRzYXdfZXJyb3IgKTsKICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAkZm91bmRfdGFyZ2V0LCAkaGVyZV9kb2NfdGFyZ2V0LCAkaGVyZV9xdW90ZV9jaGFyYWN0ZXIsICRpLAogICAgICAgICAgICAgICAgICAgICRzYXdfZXJyb3IKICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICA9IGZpbmRfaGVyZV9kb2MoICRleHBlY3RpbmcsICRpLCAkcnRva2VucywgJHJ0b2tlbl9tYXAsCiAgICAgICAgICAgICAgICAgICAgJG1heF90b2tlbl9pbmRleCApOwoKICAgICAgICAgICAgICAgIGlmICgkZm91bmRfdGFyZ2V0KSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyRyaGVyZV90YXJnZXRfbGlzdH0sCiAgICAgICAgICAgICAgICAgICAgICBbICRoZXJlX2RvY190YXJnZXQsICRoZXJlX3F1b3RlX2NoYXJhY3RlciBdOwogICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ2gnOwogICAgICAgICAgICAgICAgICAgIGlmICggbGVuZ3RoKCRoZXJlX2RvY190YXJnZXQpID4gODAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICR0cnVuY2F0ZWQgPSBzdWJzdHIoICRoZXJlX2RvY190YXJnZXQsIDAsIDgwICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsYWluKCJMb25nIGhlcmUtdGFyZ2V0OiAnJHRydW5jYXRlZCcgLi4uXG4iKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAhJGhlcmVfZG9jX3RhcmdldCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVc2Ugb2YgYmFyZSA8PCB0byBtZWFuIDw8IiIgaXMgZGVwcmVjYXRlZCcgLiAiXG4iICkKICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKCRoZXJlX3F1b3RlX2NoYXJhY3Rlcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJGhlcmVfZG9jX3RhcmdldCAhfiAvXltBLVpfXVx3KyQvICkgewogICAgICAgICAgICAgICAgICAgICAgICBjb21wbGFpbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmNvbnZlbnRpb25hbCBoZXJlLXRhcmdldDogJyRoZXJlX2RvY190YXJnZXQnXG4iKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRleHBlY3RpbmcgPT0gVEVSTSApIHsKICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKCRzYXdfZXJyb3IpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvdWxkbid0IGhhcHBlbi4uCiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcoIlByb2dyYW0gYnVnOyBkaWRuJ3QgZmluZCBoZXJlIGRvYyB0YXJnZXRcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICByZXBvcnRfZGVmaW5pdGVfYnVnKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAnPDx+JyA9PiBzdWIgeyAgICAjIGEgaGVyZS1kb2MsIG5ldyB0eXBlIGFkZGVkIGluIHYyNgogICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICB1bmxlc3MgKCAkaSA8ICRtYXhfdG9rZW5faW5kZXggKQogICAgICAgICAgICAgIDsgICAgICAgICAgICMgaGVyZS1kb2Mgbm90IHBvc3NpYmxlIGlmIGVuZCBvZiBsaW5lCiAgICAgICAgICAgIGlmICggJGV4cGVjdGluZyAhPSBPUEVSQVRPUiApIHsKICAgICAgICAgICAgICAgIG15ICggJGZvdW5kX3RhcmdldCwgJGhlcmVfZG9jX3RhcmdldCwgJGhlcmVfcXVvdGVfY2hhcmFjdGVyLAogICAgICAgICAgICAgICAgICAgICRzYXdfZXJyb3IgKTsKICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAkZm91bmRfdGFyZ2V0LCAkaGVyZV9kb2NfdGFyZ2V0LCAkaGVyZV9xdW90ZV9jaGFyYWN0ZXIsICRpLAogICAgICAgICAgICAgICAgICAgICRzYXdfZXJyb3IKICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICA9IGZpbmRfaGVyZV9kb2MoICRleHBlY3RpbmcsICRpLCAkcnRva2VucywgJHJ0b2tlbl9tYXAsCiAgICAgICAgICAgICAgICAgICAgJG1heF90b2tlbl9pbmRleCApOwoKICAgICAgICAgICAgICAgIGlmICgkZm91bmRfdGFyZ2V0KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICggbGVuZ3RoKCRoZXJlX2RvY190YXJnZXQpID4gODAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICR0cnVuY2F0ZWQgPSBzdWJzdHIoICRoZXJlX2RvY190YXJnZXQsIDAsIDgwICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsYWluKCJMb25nIGhlcmUtdGFyZ2V0OiAnJHRydW5jYXRlZCcgLi4uXG4iKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkaGVyZV9kb2NfdGFyZ2V0ICF+IC9eW0EtWl9dXHcrJC8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsYWluKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuY29udmVudGlvbmFsIGhlcmUtdGFyZ2V0OiAnJGhlcmVfZG9jX3RhcmdldCdcbiIpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBOb3RlIHRoYXQgd2UgcHV0IGEgbGVhZGluZyBzcGFjZSBvbiB0aGUgaGVyZSBxdW90ZQogICAgICAgICAgICAgICAgICAgICMgY2hhcmFjdGVyIGluZGljYXRlIHRoYXQgaXQgbWF5IGJlIHByZWNlZGVkIGJ5IHNwYWNlcwogICAgICAgICAgICAgICAgICAgICRoZXJlX3F1b3RlX2NoYXJhY3RlciA9ICIgIiAuICRoZXJlX3F1b3RlX2NoYXJhY3RlcjsKICAgICAgICAgICAgICAgICAgICBwdXNoIEB7JHJoZXJlX3RhcmdldF9saXN0fSwKICAgICAgICAgICAgICAgICAgICAgIFsgJGhlcmVfZG9jX3RhcmdldCwgJGhlcmVfcXVvdGVfY2hhcmFjdGVyIF07CiAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAnaCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRleHBlY3RpbmcgPT0gVEVSTSApIHsKICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKCRzYXdfZXJyb3IpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvdWxkbid0IGhhcHBlbi4uCiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcoIlByb2dyYW0gYnVnOyBkaWRuJ3QgZmluZCBoZXJlIGRvYyB0YXJnZXRcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICByZXBvcnRfZGVmaW5pdGVfYnVnKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAnLT4nID0+IHN1YiB7CgogICAgICAgICAgICAjIGlmIC0+IHBvaW50cyB0byBhIGJhcmUgd29yZCwgd2UgbXVzdCBzY2FuIGZvciBhbiBpZGVudGlmaWVyLAogICAgICAgICAgICAjIG90aGVyd2lzZSBzb21ldGhpbmcgbGlrZSAtPnkgd291bGQgbG9vayBsaWtlIHRoZSB5IG9wZXJhdG9yCiAgICAgICAgICAgIHNjYW5faWRlbnRpZmllcl9mYXN0KCk7CiAgICAgICAgfSwKCiAgICAgICAgIyB0eXBlID0gJ3BwJyBmb3IgcHJlLWluY3JlbWVudCwgJysrJyBmb3IgcG9zdC1pbmNyZW1lbnQKICAgICAgICAnKysnID0+IHN1YiB7CiAgICAgICAgICAgIGlmICAgICggJGV4cGVjdGluZyA9PSBURVJNICkgeyAkdHlwZSA9ICdwcCcgfQogICAgICAgICAgICBlbHNpZiAoICRleHBlY3RpbmcgPT0gVU5LTk9XTiApIHsKICAgICAgICAgICAgICAgIG15ICggJG5leHRfbm9uYmxhbmtfdG9rZW4sICRpX25leHQgKSA9CiAgICAgICAgICAgICAgICAgIGZpbmRfbmV4dF9ub25ibGFua190b2tlbiggJGksICRydG9rZW5zLCAkbWF4X3Rva2VuX2luZGV4ICk7CiAgICAgICAgICAgICAgICBpZiAoICRuZXh0X25vbmJsYW5rX3Rva2VuIGVxICckJyApIHsgJHR5cGUgPSAncHAnIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgICc9PicgPT4gc3ViIHsKICAgICAgICAgICAgaWYgKCAkbGFzdF9ub25ibGFua190eXBlIGVxICR0b2sgKSB7CiAgICAgICAgICAgICAgICBjb21wbGFpbigiUmVwZWF0ZWQgJz0+J3MgXG4iKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwYXRjaCBmb3Igb3BlcmF0b3JfZXhwZWN0ZWQ6IG5vdGUgaWYgd2UgYXJlIGluIHRoZSBsaXN0ICh1c2UudCkKICAgICAgICAgICAgIyBUT0RPOiBtYWtlIHZlcnNpb24gbnVtYmVycyBhIG5ldyB0b2tlbiB0eXBlCiAgICAgICAgICAgIGlmICggJHN0YXRlbWVudF90eXBlIGVxICd1c2UnICkgeyAkc3RhdGVtZW50X3R5cGUgPSAnX3VzZScgfQogICAgICAgIH0sCgogICAgICAgICMgdHlwZSA9ICdtbScgZm9yIHByZS1kZWNyZW1lbnQsICctLScgZm9yIHBvc3QtZGVjcmVtZW50CiAgICAgICAgJy0tJyA9PiBzdWIgewoKICAgICAgICAgICAgaWYgICAgKCAkZXhwZWN0aW5nID09IFRFUk0gKSB7ICR0eXBlID0gJ21tJyB9CiAgICAgICAgICAgIGVsc2lmICggJGV4cGVjdGluZyA9PSBVTktOT1dOICkgewogICAgICAgICAgICAgICAgbXkgKCAkbmV4dF9ub25ibGFua190b2tlbiwgJGlfbmV4dCApID0KICAgICAgICAgICAgICAgICAgZmluZF9uZXh0X25vbmJsYW5rX3Rva2VuKCAkaSwgJHJ0b2tlbnMsICRtYXhfdG9rZW5faW5kZXggKTsKICAgICAgICAgICAgICAgIGlmICggJG5leHRfbm9uYmxhbmtfdG9rZW4gZXEgJyQnICkgeyAkdHlwZSA9ICdtbScgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgJyYmJyA9PiBzdWIgewogICAgICAgICAgICBlcnJvcl9pZl9leHBlY3RpbmdfVEVSTSgpCiAgICAgICAgICAgICAgaWYgKCAkZXhwZWN0aW5nID09IFRFUk0gKTsKICAgICAgICB9LAoKICAgICAgICAnfHwnID0+IHN1YiB7CiAgICAgICAgICAgIGVycm9yX2lmX2V4cGVjdGluZ19URVJNKCkKICAgICAgICAgICAgICBpZiAoICRleHBlY3RpbmcgPT0gVEVSTSApOwogICAgICAgIH0sCgogICAgICAgICcvLycgPT4gc3ViIHsKICAgICAgICAgICAgZXJyb3JfaWZfZXhwZWN0aW5nX1RFUk0oKQogICAgICAgICAgICAgIGlmICggJGV4cGVjdGluZyA9PSBURVJNICk7CiAgICAgICAgfSwKICAgIH07CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgZW5kIGhhc2ggb2YgY29kZSBmb3IgaGFuZGxpbmcgaW5kaXZpZHVhbCB0b2tlbiB0eXBlcwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICBteSAlbWF0Y2hpbmdfc3RhcnRfdG9rZW4gPSAoICd9JyA9PiAneycsICddJyA9PiAnWycsICcpJyA9PiAnKCcgKTsKCiAgICAjIFRoZXNlIGJsb2NrIHR5cGVzIHRlcm1pbmF0ZSBzdGF0ZW1lbnRzIGFuZCBkbyBub3QgbmVlZCBhIHRyYWlsaW5nCiAgICAjIHNlbWljb2xvbgogICAgIyBwYXRjaGVkIGZvciBTV0lUQ0gvQ0FTRS8KICAgIG15ICVpc196ZXJvX2NvbnRpbnVhdGlvbl9ibG9ja190eXBlOwogICAgQF8gPSBxdyggfSB7IEJFR0lOIEVORCBDSEVDSyBJTklUIEFVVE9MT0FEIERFU1RST1kgVU5JVENIRUNLIGNvbnRpbnVlIDsKICAgICAgaWYgZWxzaWYgZWxzZSB1bmxlc3Mgd2hpbGUgdW50aWwgZm9yIGZvcmVhY2ggc3dpdGNoIGNhc2UgZ2l2ZW4gd2hlbik7CiAgICBAaXNfemVyb19jb250aW51YXRpb25fYmxvY2tfdHlwZXtAX30gPSAoMSkgeCBzY2FsYXIoQF8pOwoKICAgIG15ICVpc19ub3RfemVyb19jb250aW51YXRpb25fYmxvY2tfdHlwZTsKICAgIEBfID0gcXcoc29ydCBncmVwIG1hcCBkbyBldmFsKTsKICAgIEBpc19ub3RfemVyb19jb250aW51YXRpb25fYmxvY2tfdHlwZXtAX30gPSAoMSkgeCBzY2FsYXIoQF8pOwoKICAgIG15ICVpc19sb2dpY2FsX2NvbnRhaW5lcjsKICAgIEBfID0gcXcoaWYgZWxzaWYgdW5sZXNzIHdoaWxlIGFuZCBvciBlcnIgbm90ICYmICEgIHx8IGZvciBmb3JlYWNoKTsKICAgIEBpc19sb2dpY2FsX2NvbnRhaW5lcntAX30gPSAoMSkgeCBzY2FsYXIoQF8pOwoKICAgIG15ICVpc19iaW5hcnlfdHlwZTsKICAgIEBfID0gcXcofHwgJiYpOwogICAgQGlzX2JpbmFyeV90eXBle0BffSA9ICgxKSB4IHNjYWxhcihAXyk7CgogICAgbXkgJWlzX2JpbmFyeV9rZXl3b3JkOwogICAgQF8gPSBxdyhhbmQgb3IgZXJyIGVxIG5lIGNtcCk7CiAgICBAaXNfYmluYXJ5X2tleXdvcmR7QF99ID0gKDEpIHggc2NhbGFyKEBfKTsKCiAgICAjICdMJyBpcyB0b2tlbiBmb3Igb3BlbmluZyB7IGF0IGhhc2gga2V5CiAgICBteSAlaXNfb3BlbmluZ190eXBlOwogICAgQF8gPSBxdzwgTCB7ICggWyA+OwogICAgQGlzX29wZW5pbmdfdHlwZXtAX30gPSAoMSkgeCBzY2FsYXIoQF8pOwoKICAgICMgJ1InIGlzIHRva2VuIGZvciBjbG9zaW5nIH0gYXQgaGFzaCBrZXkKICAgIG15ICVpc19jbG9zaW5nX3R5cGU7CiAgICBAXyA9IHF3PCBSIH0gKSBdID47CiAgICBAaXNfY2xvc2luZ190eXBle0BffSA9ICgxKSB4IHNjYWxhcihAXyk7CgogICAgbXkgJWlzX3JlZG9fbGFzdF9uZXh0X2dvdG87CiAgICBAXyA9IHF3KHJlZG8gbGFzdCBuZXh0IGdvdG8pOwogICAgQGlzX3JlZG9fbGFzdF9uZXh0X2dvdG97QF99ID0gKDEpIHggc2NhbGFyKEBfKTsKCiAgICBteSAlaXNfdXNlX3JlcXVpcmU7CiAgICBAXyA9IHF3KHVzZSByZXF1aXJlKTsKICAgIEBpc191c2VfcmVxdWlyZXtAX30gPSAoMSkgeCBzY2FsYXIoQF8pOwoKICAgICMgVGhpcyBoYXNoIGhvbGRzIHRoZSBhcnJheSBpbmRleCBpbiAkdG9rZW5pemVyX3NlbGYgZm9yIHRoZXNlIGtleXdvcmRzOgogICAgbXkgJWlzX2Zvcm1hdF9FTkRfREFUQSA9ICgKICAgICAgICAnZm9ybWF0JyAgID0+IF9pbl9mb3JtYXRfLAogICAgICAgICdfX0VORF9fJyAgPT4gX2luX2VuZF8sCiAgICAgICAgJ19fREFUQV9fJyA9PiBfaW5fZGF0YV8sCiAgICApOwoKICAgICMgb3JpZ2luYWwgcmVmOiBjYW1lbCAzIHAgMTQ3LAogICAgIyBidXQgcGVybCBtYXkgYWNjZXB0IHVuZG9jdW1lbnRlZCBmbGFncwogICAgIyBwZXJsIDUuMTAgYWRkcyAncCcgKHByZXNlcnZlKQogICAgIyBQZXJsIHZlcnNpb24gNS4yMiBhZGRlZCAnbicKICAgICMgRnJvbSBodHRwOi8vcGVybGRvYy5wZXJsLm9yZy9wZXJsb3AuaHRtbCB3ZSBoYXZlCiAgICAjIC9QQVRURVJOL21zaXhwb2R1YWxuZ2Mgb3IgbT9QQVRURVJOP21zaXhwb2R1YWxuZ2MKICAgICMgcy9QQVRURVJOL1JFUExBQ0VNRU5UL21zaXhwb2R1YWxuZ2NlcgogICAgIyB5L1NFQVJDSExJU1QvUkVQTEFDRU1FTlRMSVNUL2Nkc3IKICAgICMgdHIvU0VBUkNITElTVC9SRVBMQUNFTUVOVExJU1QvY2RzcgogICAgIyBxci9TVFJJTkcvbXNpeHBvZHVhbG4KICAgIG15ICVxdW90ZV9tb2RpZmllcnMgPSAoCiAgICAgICAgJ3MnICA9PiAnW21zaXhwb2R1YWxuZ2Nlcl0nLAogICAgICAgICd5JyAgPT4gJ1tjZHNyXScsCiAgICAgICAgJ3RyJyA9PiAnW2Nkc3JdJywKICAgICAgICAnbScgID0+ICdbbXNpeHBvZHVhbG5nY10nLAogICAgICAgICdxcicgPT4gJ1ttc2l4cG9kdWFsbl0nLAogICAgICAgICdxJyAgPT4gIiIsCiAgICAgICAgJ3FxJyA9PiAiIiwKICAgICAgICAncXcnID0+ICIiLAogICAgICAgICdxeCcgPT4gIiIsCiAgICApOwoKICAgICMgdGFibGUgc2hvd2luZyBob3cgbWFueSBxdW90ZWQgdGhpbmdzIHRvIGxvb2sgZm9yIGFmdGVyIHF1b3RlIG9wZXJhdG9yLi4KICAgICMgcywgeSwgdHIgaGF2ZSAyIChwYXR0ZXJuIGFuZCByZXBsYWNlbWVudCkKICAgICMgb3RoZXJzIGhhdmUgMSAocGF0dGVybiBvbmx5KQogICAgbXkgJXF1b3RlX2l0ZW1zID0gKAogICAgICAgICdzJyAgPT4gMiwKICAgICAgICAneScgID0+IDIsCiAgICAgICAgJ3RyJyA9PiAyLAogICAgICAgICdtJyAgPT4gMSwKICAgICAgICAncXInID0+IDEsCiAgICAgICAgJ3EnICA9PiAxLAogICAgICAgICdxcScgPT4gMSwKICAgICAgICAncXcnID0+IDEsCiAgICAgICAgJ3F4JyA9PiAxLAogICAgKTsKCiAgICB1c2UgY29uc3RhbnQgREVCVUdfVE9LRU5JWkUgPT4gMDsKCiAgICBzdWIgdG9rZW5pemVfdGhpc19saW5lIHsKCiAgIyBUaGlzIHJvdXRpbmUgYnJlYWtzIGEgbGluZSBvZiBwZXJsIGNvZGUgaW50byB0b2tlbnMgd2hpY2ggYXJlIG9mIHVzZSBpbgogICMgaW5kZW50YXRpb24gYW5kIHJlZm9ybWF0dGluZy4gIE9uZSBvZiBteSBnb2FscyBoYXMgYmVlbiB0byBkZWZpbmUgdG9rZW5zCiAgIyBzdWNoIHRoYXQgYSBuZXdsaW5lIG1heSBiZSBpbnNlcnRlZCBiZXR3ZWVuIGFueSBwYWlyIG9mIHRva2VucyB3aXRob3V0CiAgIyBjaGFuZ2luZyBvciBpbnZhbGlkYXRpbmcgdGhlIHByb2dyYW0uIFRoaXMgdmVyc2lvbiBjb21lcyBjbG9zZSB0byB0aGlzLAogICMgYWx0aG91Z2ggdGhlcmUgYXJlIG5lY2Vzc2FyaWx5IGEgZmV3IGV4Y2VwdGlvbnMgd2hpY2ggbXVzdCBiZSBjYXVnaHQgYnkKICAjIHRoZSBmb3JtYXR0ZXIuICBNYW55IG9mIHRoZXNlIGludm9sdmUgdGhlIHRyZWF0bWVudCBvZiBiYXJlIHdvcmRzLgogICMKICAjIFRoZSB0b2tlbnMgYW5kIHRoZWlyIHR5cGVzIGFyZSByZXR1cm5lZCBpbiBhcnJheXMuICBTZWUgcHJldmlvdXMKICAjIHJvdXRpbmUgZm9yIHRoZWlyIG5hbWVzLgogICMKICAjIFNlZSBhbHNvIHRoZSBhcnJheSAidmFsaWRfdG9rZW5fdHlwZXMiIGluIHRoZSBCRUdJTiBzZWN0aW9uIGZvciBhbgogICMgdXAtdG8tZGF0ZSBsaXN0LgogICMKICAjIFRvIHNpbXBsaWZ5IHRoaW5ncywgdG9rZW4gdHlwZXMgYXJlIGVpdGhlciBhIHNpbmdsZSBjaGFyYWN0ZXIsIG9yIHRoZXkKICAjIGFyZSBpZGVudGljYWwgdG8gdGhlIHRva2VucyB0aGVtc2VsdmVzLgogICMKICAjIEFzIGEgZGVidWdnaW5nIGFpZCwgdGhlIC1EIGZsYWcgY3JlYXRlcyBhIGZpbGUgY29udGFpbmluZyBhIHNpZGUtYnktc2lkZQogICMgY29tcGFyaXNvbiBvZiB0aGUgaW5wdXQgc3RyaW5nIGFuZCBpdHMgdG9rZW5pemF0aW9uIGZvciBlYWNoIGxpbmUgb2YgYSBmaWxlLgogICMgVGhpcyBpcyBhbiBpbnZhbHVhYmxlIGRlYnVnZ2luZyBhaWQuCiAgIwogICMgSW4gYWRkaXRpb24gdG8gdG9rZW5zLCBhbmQgc29tZSBhc3NvY2lhdGVkIHF1YW50aXRpZXMsIHRoZSB0b2tlbml6ZXIKICAjIGFsc28gcmV0dXJucyBmbGFncyBpbmRpY2F0aW9uIGFueSBzcGVjaWFsIGxpbmUgdHlwZXMuICBUaGVzZSBpbmNsdWRlCiAgIyBxdW90ZXMsIGhlcmVfZG9jcywgZm9ybWF0cy4KICAjCiAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICMKICAjIEhvdyB0byBhZGQgTkVXX1RPS0VOUzoKICAjCiAgIyBOZXcgdG9rZW4gdHlwZXMgd2lsbCB1bmRvdWJ0ZWRseSBiZSBuZWVkZWQgaW4gdGhlIGZ1dHVyZSBib3RoIHRvIGtlZXAgdXAKICAjIHdpdGggY2hhbmdlcyBpbiBwZXJsIGFuZCB0byBoZWxwIGFkYXB0IHRoZSB0b2tlbml6ZXIgdG8gb3RoZXIgYXBwbGljYXRpb25zLgogICMKICAjIEhlcmUgYXJlIHNvbWUgbm90ZXMgb24gdGhlIG1pbmltYWwgc3RlcHMuICBJIHdyb3RlIHRoZXNlIG5vdGVzIHdoaWxlCiAgIyBhZGRpbmcgdGhlICd2JyB0b2tlbiB0eXBlIGZvciB2LXN0cmluZ3MsIHdoaWNoIGFyZSB0aGluZ3MgbGlrZSB2ZXJzaW9uCiAgIyBudW1iZXJzIDUuNi4wLCBhbmQgaXAgYWRkcmVzc2VzLCBhbmQgd2lsbCB1c2UgdGhhdCBhcyBhbiBleGFtcGxlLiAgKCBZb3UKICAjIGNhbiB1c2UgeW91ciBlZGl0b3IgdG8gc2VhcmNoIGZvciB0aGUgc3RyaW5nICJORVdfVE9LRU5TIiB0byBmaW5kIHRoZQogICMgYXBwcm9wcmlhdGUgc2VjdGlvbnMgdG8gY2hhbmdlKToKICAjCiAgIyAqLiBUcnkgdG8gdGFsayBzb21lYm9keSBlbHNlIGludG8gZG9pbmcgaXQhICBJZiBub3QsIC4uCiAgIwogICMgKi4gTWFrZSBhIGJhY2t1cCBvZiB5b3VyIGN1cnJlbnQgdmVyc2lvbiBpbiBjYXNlIHRoaW5ncyBkb24ndCB3b3JrIG91dCEKICAjCiAgIyAqLiBUaGluayBvZiBhIG5ldywgdW51c2VkIGNoYXJhY3RlciBmb3IgdGhlIHRva2VuIHR5cGUsIGFuZCBhZGQgdG8KICAjIHRoZSBhcnJheSBAdmFsaWRfdG9rZW5fdHlwZXMgaW4gdGhlIEJFR0lOIHNlY3Rpb24gb2YgdGhpcyBwYWNrYWdlLgogICMgRm9yIGV4YW1wbGUsIEkgdXNlZCAndicgZm9yIHYtc3RyaW5ncy4KICAjCiAgIyAqLiBJbXBsZW1lbnQgY29kaW5nIHRvIHJlY29nbml6ZSB0aGUgJHR5cGUgb2YgdGhlIHRva2VuIGluIHRoaXMgcm91dGluZS4KICAjIFRoaXMgaXMgdGhlIGhhcmRlc3QgcGFydCwgYW5kIGlzIGJlc3QgZG9uZSBieSBpbWl0YXRpbmcgb3IgbW9kaWZ5aW5nCiAgIyBzb21lIG9mIHRoZSBleGlzdGluZyBjb2RpbmcuICBGb3IgZXhhbXBsZSwgdG8gcmVjb2duaXplIHYtc3RyaW5ncywgSQogICMgcGF0Y2hlZCAnc3ViIHNjYW5fYmFyZV9pZGVudGlmaWVyJyB0byByZWNvZ25pemUgdi1zdHJpbmdzIGJlZ2lubmluZyB3aXRoCiAgIyAndicgYW5kICdzdWIgc2Nhbl9udW1iZXInIHRvIHJlY29nbml6ZSB2LXN0cmluZ3Mgd2l0aG91dCB0aGUgbGVhZGluZyAndicuCiAgIwogICMgKi4gVXBkYXRlIHN1YiBvcGVyYXRvcl9leHBlY3RlZC4gIFRoaXMgdXBkYXRlIGlzIGNyaXRpY2FsbHkgaW1wb3J0YW50IGJ1dAogICMgdGhlIGNvZGluZyBpcyB0cml2aWFsLiAgTG9vayBhdCB0aGUgY29tbWVudHMgaW4gdGhhdCByb3V0aW5lIGZvciBoZWxwLgogICMgRm9yIHYtc3RyaW5ncywgd2hpY2ggc2hvdWxkIGJlaGF2ZSBsaWtlIG51bWJlcnMsIEkganVzdCBhZGRlZCAndicgdG8gdGhlCiAgIyByZWdleCB1c2VkIHRvIGhhbmRsZSBudW1iZXJzIGFuZCBzdHJpbmdzICh0eXBlcyAnbicgYW5kICdRJykuCiAgIwogICMgKi4gSW1wbGVtZW50IGEgJ2JvbmQgc3RyZW5ndGgnIHJ1bGUgaW4gc3ViIHNldF9ib25kX3N0cmVuZ3RocyBpbgogICMgUGVybDo6VGlkeTo6Rm9ybWF0dGVyIGZvciBicmVha2luZyBsaW5lcyBhcm91bmQgdGhpcyB0b2tlbiB0eXBlLiAgWW91IGNhbgogICMgc2tpcCB0aGlzIHN0ZXAgYW5kIHRha2UgdGhlIGRlZmF1bHQgYXQgZmlyc3QsIHRoZW4gYWRqdXN0IGxhdGVyIHRvIGdldAogICMgZGVzaXJlZCByZXN1bHRzLiAgRm9yIGFkZGluZyB0eXBlICd2JywgSSBsb29rZWQgYXQgc3ViIGJvbmRfc3RyZW5ndGggYW5kCiAgIyBzYXcgdGhhdCBudW1iZXIgdHlwZSAnbicgd2FzIHVzaW5nIGRlZmF1bHQgc3RyZW5ndGhzLCBzbyBJIGRpZG4ndCBkbwogICMgYW55dGhpbmcuICBJIG1heSB0dW5lIGl0IHVwIHNvbWVkYXkgaWYgSSBkb24ndCBsaWtlIHRoZSB3YXkgbGluZQogICMgYnJlYWtzIHdpdGggdi1zdHJpbmdzIGxvb2suCiAgIwogICMgKi4gSW1wbGVtZW50IGEgJ3doaXRlc3BhY2UnIHJ1bGUgaW4gc3ViIHNldF93aGl0ZXNwYWNlX2ZsYWdzIGluCiAgIyBQZXJsOjpUaWR5OjpGb3JtYXR0ZXIuICBGb3IgYWRkaW5nIHR5cGUgJ3YnLCBJIGxvb2tlZCBhdCB0aGlzIHJvdXRpbmUKICAjIGFuZCBzYXcgdGhhdCB0eXBlICduJyB1c2VkIHNwYWNlcyBvbiBib3RoIHNpZGVzLCBzbyBJIGp1c3QgYWRkZWQgJ3YnCiAgIyB0byB0aGUgYXJyYXkgQHNwYWNlc19ib3RoX3NpZGVzLgogICMKICAjICouIFVwZGF0ZSBIdG1sV3JpdGVyIHBhY2thZ2Ugc28gdGhhdCB1c2VycyBjYW4gY29sb3JpemUgdGhlIHRva2VuIGFzCiAgIyBkZXNpcmVkLiAgVGhpcyBpcyBxdWl0ZSBlYXN5OyBzZWUgY29tbWVudHMgaWRlbnRpZmllZCBieSAnTkVXX1RPS0VOUycgaW4KICAjIHRoYXQgcGFja2FnZS4gIEZvciB2LXN0cmluZ3MsIEkgaW5pdGlhbGx5IGNob3NlIHRvIHVzZSBhIGRlZmF1bHQgY29sb3IKICAjIGVxdWFsIHRvIHRoZSBkZWZhdWx0IGZvciBudW1iZXJzLCBidXQgaXQgbWlnaHQgYmUgbmljZSB0byBjaGFuZ2UgdGhhdAogICMgZXZlbnR1YWxseS4KICAjCiAgIyAqLiBVcGRhdGUgY29tbWVudHMgaW4gUGVybDo6VGlkeTo6VG9rZW5pemVyOjpkdW1wX3Rva2VuX3R5cGVzLgogICMKICAjICouIFJ1biBsb3RzIGFuZCBsb3RzIG9mIGRlYnVnIHRlc3RzLiAgU3RhcnQgd2l0aCBzcGVjaWFsIGZpbGVzIGRlc2lnbmVkCiAgIyB0byB0ZXN0IHRoZSBuZXcgdG9rZW4gdHlwZS4gIFJ1biB3aXRoIHRoZSAtRCBmbGFnIHRvIGNyZWF0ZSBhIC5ERUJVRwogICMgZmlsZSB3aGljaCBzaG93cyB0aGUgdG9rZW5pemF0aW9uLiAgV2hlbiB0aGVzZSB3b3JrIG9rLCB0ZXN0IGFzIG1hbnkgb2xkCiAgIyBzY3JpcHRzIGFzIHBvc3NpYmxlLiAgU3RhcnQgd2l0aCBhbGwgb2YgdGhlICcudCcgZmlsZXMgaW4gdGhlICd0ZXN0JwogICMgZGlyZWN0b3J5IG9mIHRoZSBkaXN0cmlidXRpb24gZmlsZS4gIENvbXBhcmUgLnRkeSBvdXRwdXQgd2l0aCBwcmV2aW91cwogICMgdmVyc2lvbiBhbmQgdXBkYXRlZCB2ZXJzaW9uIHRvIHNlZSB0aGUgZGlmZmVyZW5jZXMuICBUaGVuIGluY2x1ZGUgYXMKICAjIG1hbnkgbW9yZSBmaWxlcyBhcyBwb3NzaWJsZS4gTXkgb3duIHRlY2huaXF1ZSBoYXMgYmVlbiB0byBjb2xsZWN0IGEgaHVnZQogICMgbnVtYmVyIG9mIHBlcmwgc2NyaXB0cyAodGhvdXNhbmRzISkgaW50byBvbmUgZGlyZWN0b3J5IGFuZCBydW4gcGVybHRpZHkKICAjICosIHRoZW4gcnVuIGRpZmYgYmV0d2VlbiB0aGUgb3V0cHV0IG9mIHRoZSBwcmV2aW91cyB2ZXJzaW9uIGFuZCB0aGUKICAjIGN1cnJlbnQgdmVyc2lvbi4KICAjCiAgIyAqLiBGb3IgYW5vdGhlciBleGFtcGxlLCBzZWFyY2ggZm9yIHRoZSBzbWFydG1hdGNoIG9wZXJhdG9yICd+ficKICAjIHdpdGggeW91ciBlZGl0b3IgdG8gc2VlIHdoZXJlIHVwZGF0ZXMgd2VyZSBtYWRlIGZvciBpdC4KICAjCiAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgICBteSAkbGluZV9vZl90b2tlbnMgPSBzaGlmdDsKICAgICAgICBteSAoJHVudHJpbW1lZF9pbnB1dF9saW5lKSA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX3RleHR9OwoKICAgICAgICAjIHBhdGNoIHdoaWxlIGNvZGluZyBjaGFuZ2UgaXMgdW5kZXJ3YXkKICAgICAgICAjIG1ha2UgY2FsbGVycyBwcml2YXRlIGRhdGEgdG8gYWxsb3cgYWNjZXNzCiAgICAgICAgIyAkdG9rZW5pemVyX3NlbGYgPSAkY2FsbGVyX3Rva2VuaXplcl9zZWxmOwoKICAgICAgICAjIGV4dHJhY3QgbGluZSBudW1iZXIgZm9yIHVzZSBpbiBlcnJvciBtZXNzYWdlcwogICAgICAgICRpbnB1dF9saW5lX251bWJlciA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX251bWJlcn07CgogICAgICAgICMgcmVpbml0aWFsaXplIGZvciBtdWx0aS1saW5lIHF1b3RlCiAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X3N0YXJ0aW5nX2luX3F1b3RlfSA9ICRpbl9xdW90ZSAmJiAkcXVvdGVfdHlwZSBlcSAnUSc7CgogICAgICAgICMgY2hlY2sgZm9yIHBvZCBkb2N1bWVudGF0aW9uCiAgICAgICAgaWYgKCBzdWJzdHIoICR1bnRyaW1tZWRfaW5wdXRfbGluZSwgMCwgMSApIGVxICc9JwogICAgICAgICAgICAmJiAkdW50cmltbWVkX2lucHV0X2xpbmUgPX4gL149W0EtWmEtel9dLyApCiAgICAgICAgewoKICAgICAgICAgICAgIyBtdXN0IG5vdCBiZSBpbiBtdWx0aS1saW5lIHF1b3RlCiAgICAgICAgICAgICMgYW5kIG11c3Qgbm90IGJlIGluIGFuIGVxdWF0aW9uCiAgICAgICAgICAgIGlmICggISRpbl9xdW90ZQogICAgICAgICAgICAgICAgJiYgKCBvcGVyYXRvcl9leHBlY3RlZCggWyAnYicsICc9JywgJ2InIF0gKSA9PSBURVJNICkgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPltfaW5fcG9kX10gPSAxOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkaW5wdXRfbGluZSA9ICR1bnRyaW1tZWRfaW5wdXRfbGluZTsKCiAgICAgICAgY2hvbXAgJGlucHV0X2xpbmU7CgogICAgICAgICMgU2V0IGEgZmxhZyB0byBpbmRpY2F0ZSBpZiB3ZSBtaWdodCBiZSBhdCBhbiBfX0VORF9fIG9yIF9fREFUQV9fIGxpbmUKICAgICAgICAjIFRoaXMgd2lsbCBiZSB1c2VkIGJlbG93IHRvIGF2b2lkIHF1b3RpbmcgYSBiYXJlIHdvcmQgZm9sbG93ZWQgYnkKICAgICAgICAjIGEgZmF0IGNvbW1hLgogICAgICAgIG15ICRpc19FTkRfb3JfREFUQTsKCiAgICAgICAgIyB0cmltIHN0YXJ0IG9mIHRoaXMgbGluZSB1bmxlc3Mgd2UgYXJlIGNvbnRpbnVpbmcgYSBxdW90ZWQgbGluZQogICAgICAgICMgZG8gbm90IHRyaW0gZW5kIGJlY2F1c2Ugd2UgbWlnaHQgZW5kIGluIGEgcXVvdGUgKHRlc3Q6IGRla2VuNC5wbCkKICAgICAgICAjIFBlcmw6OlRpZHk6OkZvcm1hdHRlciB3aWxsIGRlbGV0ZSBuZWVkbGVzcyB0cmFpbGluZyBibGFua3MKICAgICAgICB1bmxlc3MgKCAkaW5fcXVvdGUgJiYgKCAkcXVvdGVfdHlwZSBlcSAnUScgKSApIHsKICAgICAgICAgICAgJGlucHV0X2xpbmUgPX4gcy9eXHMrLy87ICAgICMgdHJpbSBsZWZ0IGVuZAoKICAgICAgICAgICAgJGlzX0VORF9vcl9EQVRBID0gc3Vic3RyKCAkaW5wdXRfbGluZSwgMCwgMSApIGVxICdfJwogICAgICAgICAgICAgICYmICRpbnB1dF9saW5lID1+IC9eXHMqX18oRU5EfERBVEEpX19ccyokLzsKICAgICAgICB9CgogICAgICAgICMgdXBkYXRlIHRoZSBjb3B5IG9mIHRoZSBsaW5lIGZvciB1c2UgaW4gZXJyb3IgbWVzc2FnZXMKICAgICAgICAjIFRoaXMgbXVzdCBiZSBleGFjdGx5IHdoYXQgd2UgZ2l2ZSB0aGUgcHJlX3Rva2VuaXplcgogICAgICAgICR0b2tlbml6ZXJfc2VsZi0+W19saW5lX29mX3RleHRfXSA9ICRpbnB1dF9saW5lOwoKICAgICAgICAjIHJlLWluaXRpYWxpemUgZm9yIHRoZSBtYWluIGxvb3AKICAgICAgICAkcm91dHB1dF90b2tlbl9saXN0ICAgICA9IFtdOyAgICAjIHN0YWNrIG9mIG91dHB1dCB0b2tlbiBpbmRleGVzCiAgICAgICAgJHJvdXRwdXRfdG9rZW5fdHlwZSAgICAgPSBbXTsgICAgIyB0b2tlbiB0eXBlcwogICAgICAgICRyb3V0cHV0X2Jsb2NrX3R5cGUgICAgID0gW107ICAgICMgdHlwZXMgb2YgY29kZSBibG9jawogICAgICAgICRyb3V0cHV0X2NvbnRhaW5lcl90eXBlID0gW107ICAgICMgcGFyZW4gdHlwZXMsIHN1Y2ggYXMgaWYsIGVsc2lmLCAuLgogICAgICAgICRyb3V0cHV0X3R5cGVfc2VxdWVuY2UgID0gW107ICAgICMgbmVzdGluZyBzZXF1ZW50aWFsIG51bWJlcgoKICAgICAgICAkcmhlcmVfdGFyZ2V0X2xpc3QgPSBbXTsKCiAgICAgICAgJHRvayAgICAgICAgICAgICA9ICRsYXN0X25vbmJsYW5rX3Rva2VuOwogICAgICAgICR0eXBlICAgICAgICAgICAgPSAkbGFzdF9ub25ibGFua190eXBlOwogICAgICAgICRwcm90b3R5cGUgICAgICAgPSAkbGFzdF9ub25ibGFua19wcm90b3R5cGU7CiAgICAgICAgJGxhc3Rfbm9uYmxhbmtfaSA9IC0xOwogICAgICAgICRibG9ja190eXBlICAgICAgPSAkbGFzdF9ub25ibGFua19ibG9ja190eXBlOwogICAgICAgICRjb250YWluZXJfdHlwZSAgPSAkbGFzdF9ub25ibGFua19jb250YWluZXJfdHlwZTsKICAgICAgICAkdHlwZV9zZXF1ZW5jZSAgID0gJGxhc3Rfbm9uYmxhbmtfdHlwZV9zZXF1ZW5jZTsKICAgICAgICAkaW5kZW50X2ZsYWcgICAgID0gMDsKICAgICAgICAkcGVla2VkX2FoZWFkICAgID0gMDsKCiAgICAgICAgIyB0b2tlbml6YXRpb24gaXMgZG9uZSBpbiB0d28gc3RhZ2VzLi4KICAgICAgICAjIHN0YWdlIDEgaXMgYSB2ZXJ5IHNpbXBsZSBwcmUtdG9rZW5pemF0aW9uCiAgICAgICAgbXkgJG1heF90b2tlbnNfd2FudGVkID0gMDsgIyB0aGlzIHNpZ25hbHMgcHJlX3Rva2VuaXplIHRvIGdldCBhbGwgdG9rZW5zCgogICAgICAgICMgYSBsaXR0bGUgb3B0aW1pemF0aW9uIGZvciBhIGZ1bGwtbGluZSBjb21tZW50CiAgICAgICAgaWYgKCAhJGluX3F1b3RlICYmIHN1YnN0ciggJGlucHV0X2xpbmUsIDAsIDEgKSBlcSAnIycgKSB7CiAgICAgICAgICAgICRtYXhfdG9rZW5zX3dhbnRlZCA9IDEgICAgIyBubyB1c2UgdG9rZW5pemluZyBhIGNvbW1lbnQKICAgICAgICB9CgogICAgICAgICMgc3RhcnQgYnkgYnJlYWtpbmcgdGhlIGxpbmUgaW50byBwcmUtdG9rZW5zCiAgICAgICAgKCAkcnRva2VucywgJHJ0b2tlbl9tYXAsICRydG9rZW5fdHlwZSApID0KICAgICAgICAgIHByZV90b2tlbml6ZSggJGlucHV0X2xpbmUsICRtYXhfdG9rZW5zX3dhbnRlZCApOwoKICAgICAgICAkbWF4X3Rva2VuX2luZGV4ID0gc2NhbGFyKCBAeyRydG9rZW5zfSApIC0gMTsKICAgICAgICBwdXNoKCBAeyRydG9rZW5zfSwgJyAnLCAnICcsICcgJyApOyAgIyBleHRyYSB3aGl0ZXNwYWNlIHNpbXBsaWZpZXMgbG9naWMKICAgICAgICBwdXNoKCBAeyRydG9rZW5fbWFwfSwgIDAsICAgMCwgICAwICk7ICAgICAjIHNob3VsZG4ndCBiZSByZWZlcmVuY2VkCiAgICAgICAgcHVzaCggQHskcnRva2VuX3R5cGV9LCAnYicsICdiJywgJ2InICk7CgogICAgICAgICMgaW5pdGlhbGl6ZSBmb3IgbWFpbiBsb29wCiAgICAgICAgZm9yZWFjaCBteSAkaWkgKCAwIC4uICRtYXhfdG9rZW5faW5kZXggKyAzICkgewogICAgICAgICAgICAkcm91dHB1dF90b2tlbl90eXBlLT5bJGlpXSAgICAgPSAiIjsKICAgICAgICAgICAgJHJvdXRwdXRfYmxvY2tfdHlwZS0+WyRpaV0gICAgID0gIiI7CiAgICAgICAgICAgICRyb3V0cHV0X2NvbnRhaW5lcl90eXBlLT5bJGlpXSA9ICIiOwogICAgICAgICAgICAkcm91dHB1dF90eXBlX3NlcXVlbmNlLT5bJGlpXSAgPSAiIjsKICAgICAgICAgICAgJHJvdXRwdXRfaW5kZW50X2ZsYWctPlskaWldICAgID0gMDsKICAgICAgICB9CiAgICAgICAgJGkgICAgID0gLTE7CiAgICAgICAgJGlfdG9rID0gLTE7CgogICAgICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBiZWdpbiBtYWluIHRva2VuaXphdGlvbiBsb29wCiAgICAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgIyB3ZSBhcmUgbG9va2luZyBhdCBlYWNoIHByZS10b2tlbiBvZiBvbmUgbGluZSBhbmQgY29tYmluaW5nIHRoZW0KICAgICAgICAjIGludG8gdG9rZW5zCiAgICAgICAgd2hpbGUgKCArKyRpIDw9ICRtYXhfdG9rZW5faW5kZXggKSB7CgogICAgICAgICAgICBpZiAoJGluX3F1b3RlKSB7ICAgICMgY29udGludWUgbG9va2luZyBmb3IgZW5kIG9mIGEgcXVvdGUKICAgICAgICAgICAgICAgICR0eXBlID0gJHF1b3RlX3R5cGU7CgogICAgICAgICAgICAgICAgdW5sZXNzICggQHskcm91dHB1dF90b2tlbl9saXN0fSApCiAgICAgICAgICAgICAgICB7ICAgICAgICAgICAgICAgIyBpbml0aWFsaXplIGlmIGNvbnRpbnVhdGlvbiBsaW5lCiAgICAgICAgICAgICAgICAgICAgcHVzaCggQHskcm91dHB1dF90b2tlbl9saXN0fSwgJGkgKTsKICAgICAgICAgICAgICAgICAgICAkcm91dHB1dF90b2tlbl90eXBlLT5bJGldID0gJHR5cGU7CgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRvayA9ICRxdW90ZV9jaGFyYWN0ZXIgaWYgKCRxdW90ZV9jaGFyYWN0ZXIpOwoKICAgICAgICAgICAgICAgICMgc2NhbiBmb3IgdGhlIGVuZCBvZiB0aGUgcXVvdGUgb3IgcGF0dGVybgogICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICRpLCAkaW5fcXVvdGUsICRxdW90ZV9jaGFyYWN0ZXIsICRxdW90ZV9wb3MsICRxdW90ZV9kZXB0aCwKICAgICAgICAgICAgICAgICAgICAkcXVvdGVkX3N0cmluZ18xLCAkcXVvdGVkX3N0cmluZ18yCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgPSBkb19xdW90ZSgKICAgICAgICAgICAgICAgICAgICAkaSwgICAgICAgICAgICAgICAkaW5fcXVvdGUsICAgICRxdW90ZV9jaGFyYWN0ZXIsCiAgICAgICAgICAgICAgICAgICAgJHF1b3RlX3BvcywgICAgICAgJHF1b3RlX2RlcHRoLCAkcXVvdGVkX3N0cmluZ18xLAogICAgICAgICAgICAgICAgICAgICRxdW90ZWRfc3RyaW5nXzIsICRydG9rZW5zLCAgICAgJHJ0b2tlbl9tYXAsCiAgICAgICAgICAgICAgICAgICAgJG1heF90b2tlbl9pbmRleAogICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWxsIGRvbmUgaWYgd2UgZGlkbid0IGZpbmQgaXQKICAgICAgICAgICAgICAgIGxhc3QgaWYgKCRpbl9xdW90ZSk7CgogICAgICAgICAgICAgICAgIyBzYXZlIHBhdHRlcm4gYW5kIHJlcGxhY2VtZW50IHRleHQgZm9yIHJlc2Nhbm5pbmcKICAgICAgICAgICAgICAgIG15ICRxczEgPSAkcXVvdGVkX3N0cmluZ18xOwogICAgICAgICAgICAgICAgbXkgJHFzMiA9ICRxdW90ZWRfc3RyaW5nXzI7CgogICAgICAgICAgICAgICAgIyByZS1pbml0aWFsaXplIGZvciBuZXh0IHNlYXJjaAogICAgICAgICAgICAgICAgJHF1b3RlX2NoYXJhY3RlciA9ICcnOwogICAgICAgICAgICAgICAgJHF1b3RlX3BvcyAgICAgICA9IDA7CiAgICAgICAgICAgICAgICAkcXVvdGVfdHlwZSAgICAgID0gJ1EnOwogICAgICAgICAgICAgICAgJHF1b3RlZF9zdHJpbmdfMSA9ICIiOwogICAgICAgICAgICAgICAgJHF1b3RlZF9zdHJpbmdfMiA9ICIiOwogICAgICAgICAgICAgICAgbGFzdCBpZiAoICsrJGkgPiAkbWF4X3Rva2VuX2luZGV4ICk7CgogICAgICAgICAgICAgICAgIyBsb29rIGZvciBhbnkgbW9kaWZpZXJzCiAgICAgICAgICAgICAgICBpZiAoJGFsbG93ZWRfcXVvdGVfbW9kaWZpZXJzKSB7CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgZm9yIGV4YWN0IHF1b3RlIG1vZGlmaWVycwogICAgICAgICAgICAgICAgICAgIGlmICggJHJ0b2tlbnMtPlskaV0gPX4gL15bQS1aYS16X10vICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkc3RyID0gJHJ0b2tlbnMtPlskaV07CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRzYXdfbW9kaWZpZXJfZTsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCAkc3RyID1+IC9cRyRhbGxvd2VkX3F1b3RlX21vZGlmaWVycy9nYyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRwb3MgID0gcG9zKCRzdHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGNoYXIgPSBzdWJzdHIoICRzdHIsICRwb3MgLSAxLCAxICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2F3X21vZGlmaWVyX2UgfHw9ICggJGNoYXIgZXEgJ2UnICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgRm9yIGFuICdlJyBxdW90ZSBtb2RpZmllciB3ZSBtdXN0IHNjYW4gdGhlIHJlcGxhY2VtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICMgdGV4dCBmb3IgaGVyZS1kb2MgdGFyZ2V0cy4uLgogICAgICAgICAgICAgICAgICAgICAgICAjIGJ1dCBpZiB0aGUgbW9kaWZpZXIgc3RhcnRzIGEgbmV3IGxpbmUgd2UgY2FuIHNraXAKICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGlzIGJlY2F1c2UgZWl0aGVyIHRoZSBoZXJlIGRvYyB3aWxsIGJlIGZ1bGx5CiAgICAgICAgICAgICAgICAgICAgICAgICMgY29udGFpbmVkIGluIHRoZSByZXBsYWNlbWVudCB0ZXh0IChzbyB3ZSBjYW4KICAgICAgICAgICAgICAgICAgICAgICAgIyBpZ25vcmUgaXQpIG9yIFBlcmwgd2lsbCBub3QgZmluZCBpdC4KICAgICAgICAgICAgICAgICAgICAgICAgIyBTZWUgdGVzdCAnaGVyZTIuaW4nLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRzYXdfbW9kaWZpZXJfZSAmJiAkaV90b2sgPj0gMCApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkcmh0ID0gc2Nhbl9yZXBsYWNlbWVudF90ZXh0KCRxczEpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2hhbmdlIHR5cGUgZnJvbSAnUScgdG8gJ2gnIGZvciBxdW90ZXMgd2l0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBoZXJlLWRvYyB0YXJnZXRzIHNvIHRoYXQgdGhlIGZvcm1hdHRlciAoc2VlIHN1YgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBwcm9jZXNzX2xpbmVfb2ZfQ09ERSkgd2lsbCBub3QgbWFrZSBhbnkgbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBicmVha3MgYWZ0ZXIgdGhpcyBwb2ludC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcmh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyRyaGVyZV90YXJnZXRfbGlzdH0sIEB7JHJodH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAnaCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkaV90b2sgPCAwICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkaWxhc3QgPSAkcm91dHB1dF90b2tlbl9saXN0LT5bLTFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm91dHB1dF90b2tlbl90eXBlLT5bJGlsYXN0XSA9ICR0eXBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCBwb3MoJHN0cikgKSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG1hdGNoZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggcG9zKCRzdHIpID09IGxlbmd0aCgkc3RyKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IGlmICggKyskaSA+ICRtYXhfdG9rZW5faW5kZXggKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIExvb2tzIGxpa2UgYSBqb2luZWQgcXVvdGUgbW9kaWZpZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYW5kIGtleXdvcmQsIG1heWJlIHNvbWV0aGluZyBsaWtlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHMveHh4L3l5eS9nZWZvciBAaz0uLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRXhhbXBsZSBpcyAiZ2FsZ2VuLnBsIi4gIFdvdWxkIGhhdmUgdG8gc3BsaXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIHdvcmQgYW5kIGluc2VydCBhIG5ldyB0b2tlbiBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcHJlLXRva2VuIGxpc3QuICBUaGlzIGlzIHNvIHJhcmUgdGhhdCBJIGhhdmVuJ3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZG9uZSBpdC4gIFdpbGwganVzdCBpc3N1ZSBhIHdhcm5pbmcgY2l0YXRpb24uCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGVycm9yIG1pZ2h0IGFsc28gYmUgdHJpZ2dlcmVkIGlmIG15IHF1b3RlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG1vZGlmaWVyIGNoYXJhY3RlcnMgYXJlIGluY29tcGxldGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcoPDxFT00pOwoKUGFydGlhbCBtYXRjaCB0byBxdW90ZSBtb2RpZmllciAkYWxsb3dlZF9xdW90ZV9tb2RpZmllcnMgYXQgd29yZDogJyRzdHInClBsZWFzZSBwdXQgYSBzcGFjZSBiZXR3ZWVuIHF1b3RlIG1vZGlmaWVycyBhbmQgdHJhaWxpbmcga2V5d29yZHMuCkVPTQoKICAgICAgICAgICAgICAgICAgICAgICAgICMgcHJpbnQgInRva2VuICRydG9rZW5zLT5bJGldXG4iOwogICAgICAgICAgICAgICAgICAgICAgICAgIyBteSAkbnVtID0gbGVuZ3RoKCRzdHIpIC0gcG9zKCRzdHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgIyAkcnRva2Vucy0+WyRpXT1zdWJzdHIoJHJ0b2tlbnMtPlskaV0scG9zKCRzdHIpLCRudW0pOwogICAgICAgICAgICAgICAgICAgICAgICAgIyBwcmludCAiY29udGludWluZyB3aXRoIG5ldyB0b2tlbiAkcnRva2Vucy0+WyRpXVxuIjsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBza2lwcGluZyBwYXN0IHRoaXMgdG9rZW4gZG9lcyBsZWFzdCBkYW1hZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IGlmICggKyskaSA+ICRtYXhfdG9rZW5faW5kZXggKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGV4YW1wbGUgZmlsZTogcm9raWNraTQucGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBlcnJvciBtaWdodCBhbHNvIGJlIHRyaWdnZXJlZCBpZiBteSBxdW90ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtb2RpZmllciBjaGFyYWN0ZXJzIGFyZSBpbmNvbXBsZXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KAoiTm90ZTogZm91bmQgd29yZCAkc3RyIGF0IHF1b3RlIG1vZGlmaWVyIGxvY2F0aW9uXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIHJlLWluaXRpYWxpemUKICAgICAgICAgICAgICAgICAgICAkYWxsb3dlZF9xdW90ZV9tb2RpZmllcnMgPSAiIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgdW5sZXNzICggJHR5cGUgZXEgJ2InIHx8ICR0b2sgZXEgJ0NPUkU6OicgKSB7CgogICAgICAgICAgICAgICAgIyB0cnkgdG8gY2F0Y2ggc29tZSBjb21tb24gZXJyb3JzCiAgICAgICAgICAgICAgICBpZiAoICggJHR5cGUgZXEgJ24nICkgJiYgKCAkdG9rIG5lICcwJyApICkgewoKICAgICAgICAgICAgICAgICAgICBpZiAoICRsYXN0X25vbmJsYW5rX3Rva2VuIGVxICdlcScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsYWluKCJTaG91bGQgJ2VxJyBiZSAnPT0nIGhlcmUgP1xuIik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJ25lJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxhaW4oIlNob3VsZCAnbmUnIGJlICchPScgaGVyZSA/XG4iKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua190b2tlbiAgICAgID0gJGxhc3Rfbm9uYmxhbmtfdG9rZW47CiAgICAgICAgICAgICAgICAkbGFzdF9sYXN0X25vbmJsYW5rX3R5cGUgICAgICAgPSAkbGFzdF9ub25ibGFua190eXBlOwogICAgICAgICAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua19ibG9ja190eXBlID0gJGxhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZTsKICAgICAgICAgICAgICAgICRsYXN0X2xhc3Rfbm9uYmxhbmtfY29udGFpbmVyX3R5cGUgPQogICAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua19jb250YWluZXJfdHlwZTsKICAgICAgICAgICAgICAgICRsYXN0X2xhc3Rfbm9uYmxhbmtfdHlwZV9zZXF1ZW5jZSA9CiAgICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3R5cGVfc2VxdWVuY2U7CiAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua190b2tlbiAgICAgICAgICA9ICR0b2s7CiAgICAgICAgICAgICAgICAkbGFzdF9ub25ibGFua190eXBlICAgICAgICAgICA9ICR0eXBlOwogICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfcHJvdG90eXBlICAgICAgPSAkcHJvdG90eXBlOwogICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZSAgICAgPSAkYmxvY2tfdHlwZTsKICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX2NvbnRhaW5lcl90eXBlID0gJGNvbnRhaW5lcl90eXBlOwogICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdHlwZV9zZXF1ZW5jZSAgPSAkdHlwZV9zZXF1ZW5jZTsKICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX2kgICAgICAgICAgICAgID0gJGlfdG9rOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHN0b3JlIHByZXZpb3VzIHRva2VuIHR5cGUKICAgICAgICAgICAgaWYgKCAkaV90b2sgPj0gMCApIHsKICAgICAgICAgICAgICAgICRyb3V0cHV0X3Rva2VuX3R5cGUtPlskaV90b2tdICAgICA9ICR0eXBlOwogICAgICAgICAgICAgICAgJHJvdXRwdXRfYmxvY2tfdHlwZS0+WyRpX3Rva10gICAgID0gJGJsb2NrX3R5cGU7CiAgICAgICAgICAgICAgICAkcm91dHB1dF9jb250YWluZXJfdHlwZS0+WyRpX3Rva10gPSAkY29udGFpbmVyX3R5cGU7CiAgICAgICAgICAgICAgICAkcm91dHB1dF90eXBlX3NlcXVlbmNlLT5bJGlfdG9rXSAgPSAkdHlwZV9zZXF1ZW5jZTsKICAgICAgICAgICAgICAgICRyb3V0cHV0X2luZGVudF9mbGFnLT5bJGlfdG9rXSAgICA9ICRpbmRlbnRfZmxhZzsKICAgICAgICAgICAgfQogICAgICAgICAgICBteSAkcHJlX3RvayAgPSAkcnRva2Vucy0+WyRpXTsgICAgICAgICMgZ2V0IHRoZSBuZXh0IHByZS10b2tlbgogICAgICAgICAgICBteSAkcHJlX3R5cGUgPSAkcnRva2VuX3R5cGUtPlskaV07ICAgICMgYW5kIHR5cGUKICAgICAgICAgICAgJHRvayAgICAgICAgPSAkcHJlX3RvazsKICAgICAgICAgICAgJHR5cGUgICAgICAgPSAkcHJlX3R5cGU7ICAgICAgICAgICAgICAjIHRvIGJlIG1vZGlmaWVkIGFzIG5lY2Vzc2FyeQogICAgICAgICAgICAkYmxvY2tfdHlwZSA9ICIiOyAgICAjIGJsYW5rIGZvciBhbGwgdG9rZW5zIGV4Y2VwdCBjb2RlIGJsb2NrIGJyYWNlcwogICAgICAgICAgICAkY29udGFpbmVyX3R5cGUgPSAiIjsgICAgIyBibGFuayBmb3IgYWxsIHRva2VucyBleGNlcHQgc29tZSBwYXJlbnMKICAgICAgICAgICAgJHR5cGVfc2VxdWVuY2UgID0gIiI7ICAgICMgYmxhbmsgZm9yIGFsbCB0b2tlbnMgZXhjZXB0ID8vOgogICAgICAgICAgICAkaW5kZW50X2ZsYWcgICAgPSAwOwogICAgICAgICAgICAkcHJvdG90eXBlID0gIiI7ICAgICMgYmxhbmsgZm9yIGFsbCB0b2tlbnMgZXhjZXB0IHVzZXIgZGVmaW5lZCBzdWJzCiAgICAgICAgICAgICRpX3RvayAgICAgPSAkaTsKCiAgICAgICAgICAgICMgdGhpcyBwcmUtdG9rZW4gd2lsbCBzdGFydCBhbiBvdXRwdXQgdG9rZW4KICAgICAgICAgICAgcHVzaCggQHskcm91dHB1dF90b2tlbl9saXN0fSwgJGlfdG9rICk7CgogICAgICAgICAgICAjIGNvbnRpbnVlIGdhdGhlcmluZyBpZGVudGlmaWVyIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICAjIGJ1dCBkbyBub3Qgc3RhcnQgb24gYmxhbmtzIGFuZCBjb21tZW50cwogICAgICAgICAgICBpZiAoICRpZF9zY2FuX3N0YXRlICYmICRwcmVfdHlwZSBuZSAnYicgJiYgJHByZV90eXBlIG5lICcjJyApIHsKCiAgICAgICAgICAgICAgICBpZiAoICRpc19zdWJ7JGlkX3NjYW5fc3RhdGV9IHx8ICRpc19wYWNrYWdleyRpZF9zY2FuX3N0YXRlfSApIHsKICAgICAgICAgICAgICAgICAgICBzY2FuX2lkKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBzY2FuX2lkZW50aWZpZXIoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBsYXN0IGlmICgkaWRfc2Nhbl9zdGF0ZSk7CiAgICAgICAgICAgICAgICBuZXh0IGlmICggKCAkaSA+IDAgKSB8fCAkdHlwZSApOwoKICAgICAgICAgICAgICAgICMgZGlkbid0IGZpbmQgYW55IHRva2VuOyBzdGFydCBvdmVyCiAgICAgICAgICAgICAgICAkdHlwZSA9ICRwcmVfdHlwZTsKICAgICAgICAgICAgICAgICR0b2sgID0gJHByZV90b2s7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaGFuZGxlIHdoaXRlc3BhY2UgdG9rZW5zLi4KICAgICAgICAgICAgbmV4dCBpZiAoICR0eXBlIGVxICdiJyApOwogICAgICAgICAgICBteSAkcHJldl90b2sgID0gJGkgPiAwID8gJHJ0b2tlbnMtPlsgJGkgLSAxIF0gICAgIDogJyAnOwogICAgICAgICAgICBteSAkcHJldl90eXBlID0gJGkgPiAwID8gJHJ0b2tlbl90eXBlLT5bICRpIC0gMSBdIDogJ2InOwoKICAgICAgICAgICAgIyBCdWlsZCBsYXJnZXIgdG9rZW5zIHdoZXJlIHBvc3NpYmxlLCBzaW5jZSB3ZSBhcmUgbm90IGluIGEgcXVvdGUuCiAgICAgICAgICAgICMKICAgICAgICAgICAgIyBGaXJzdCB0cnkgdG8gYXNzZW1ibGUgZGlncmFwaHMuICBUaGUgZm9sbG93aW5nIHRva2VucyBhcmUKICAgICAgICAgICAgIyBleGNsdWRlZCBhbmQgaGFuZGxlZCBzcGVjaWFsbHk6CiAgICAgICAgICAgICMgJy89JyBpcyBleGNsdWRlZCBiZWNhdXNlIHRoZSAvIG1pZ2h0IHN0YXJ0IGEgcGF0dGVybi4KICAgICAgICAgICAgIyAneD0nIGlzIGV4Y2x1ZGVkIHNpbmNlIGl0IG1pZ2h0IGJlICR4PSwgd2l0aCAkIG9uIHByZXZpb3VzIGxpbmUKICAgICAgICAgICAgIyAnKionIGFuZCAqPSBtaWdodCBiZSB0eXBlZ2xvYnMgb2YgcHVuY3R1YXRpb24gdmFyaWFibGVzCiAgICAgICAgICAgICMgSSBoYXZlIGFsbG93ZWQgdG9rZW5zIHN0YXJ0aW5nIHdpdGggPCwgc3VjaCBhcyA8PSwKICAgICAgICAgICAgIyBiZWNhdXNlIEkgZG9uJ3QgdGhpbmsgdGhlc2UgY291bGQgYmUgdmFsaWQgYW5nbGUgb3BlcmF0b3JzLgogICAgICAgICAgICAjIHRlc3QgZmlsZTogc3RvcnJzNC5wbAogICAgICAgICAgICBteSAkdGVzdF90b2sgICA9ICR0b2sgLiAkcnRva2Vucy0+WyAkaSArIDEgXTsKICAgICAgICAgICAgbXkgJGNvbWJpbmVfb2sgPSAkaXNfZGlncmFwaHskdGVzdF90b2t9OwoKICAgICAgICAgICAgIyBjaGVjayBmb3Igc3BlY2lhbCBjYXNlcyB3aGljaCBjYW5ub3QgYmUgY29tYmluZWQKICAgICAgICAgICAgaWYgKCRjb21iaW5lX29rKSB7CgogICAgICAgICAgICAgICAgIyAnLy8nIG11c3QgYmUgZGVmaW5lZF9vciBvcGVyYXRvciBpZiBhbiBvcGVyYXRvciBpcyBleHBlY3RlZC4KICAgICAgICAgICAgICAgICMgVE9ETzogQ29kZSBmb3Igb3RoZXIgYW1iaWd1b3VzIGRpZ3JhcGhzICgvPSwgeD0sICoqLCAqPSkKICAgICAgICAgICAgICAgICMgY291bGQgYmUgbWlncmF0ZWQgaGVyZSBmb3IgY2xhcml0eQoKICAgICAgICAgICAgICAjIFBhdGNoIGZvciBSVCMxMDIzNzEsIG1pc3BhcnNpbmcgYSAvLyBpbiB0aGUgZm9sbG93aW5nIHNuaXBwZXQ6CiAgICAgICAgICAgICAgIyAgICAgc3RhdGUgJGIgLy89IGNjYygpOwogICAgICAgICAgICAgICMgVGhlIHNvbHV0aW9uIGlzIHRvIGFsd2F5cyBhY2NlcHQgdGhlIGRpZ3JhcGggKG9yIHRyaWdyYXBoKSBhZnRlcgogICAgICAgICAgICAgICMgdG9rZW4gdHlwZSAnWicgKHBvc3NpYmxlIGZpbGUgaGFuZGxlKS4gIFRoZSByZWFzb24gaXMgdGhhdAogICAgICAgICAgICAgICMgc3ViIG9wZXJhdG9yX2V4cGVjdGVkIGdpdmVzIFRFUk0gZXhwZWN0ZWQgaGVyZSwgd2hpY2ggaXMKICAgICAgICAgICAgICAjIHdyb25nIGluIHRoaXMgY2FzZS4KICAgICAgICAgICAgICAgIGlmICggJHRlc3RfdG9rIGVxICcvLycgJiYgJGxhc3Rfbm9uYmxhbmtfdHlwZSBuZSAnWicgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJG5leHRfdHlwZSA9ICRydG9rZW5zLT5bICRpICsgMSBdOwogICAgICAgICAgICAgICAgICAgIG15ICRleHBlY3RpbmcgPQogICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3JfZXhwZWN0ZWQoIFsgJHByZXZfdHlwZSwgJHRvaywgJG5leHRfdHlwZSBdICk7CgogICAgICAgICAgICAgICAgICAgICMgUGF0Y2hlZCBmb3IgUlQjMTAxNTQ3LCB3YXMgJ3VubGVzcyAoJGV4cGVjdGluZz09T1BFUkFUT1IpJwogICAgICAgICAgICAgICAgICAgICRjb21iaW5lX29rID0gMCBpZiAoICRleHBlY3RpbmcgPT0gVEVSTSApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgUGF0Y2ggZm9yIFJUICMxMTQzNTk6IE1pc3NwYXJzaW5nIG9mICJwcmludCAkeCAqKiAwLjU7CiAgICAgICAgICAgICAgICAjIEFjY2VwdCB0aGUgZGlncmFwaHMgJyoqJyBvbmx5IGFmdGVyIHR5cGUgJ1onCiAgICAgICAgICAgICAgICAjIE90aGVyd2lzZSBwb3N0cG9uZSB0aGUgZGVjaXNpb24uCiAgICAgICAgICAgICAgICBpZiAoICR0ZXN0X3RvayBlcSAnKionICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJGxhc3Rfbm9uYmxhbmtfdHlwZSBuZSAnWicgKSB7ICRjb21iaW5lX29rID0gMCB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRjb21iaW5lX29rCgogICAgICAgICAgICAgICAgJiYgKCAkdGVzdF90b2sgbmUgJy89JyApICAgICMgbWlnaHQgYmUgcGF0dGVybgogICAgICAgICAgICAgICAgJiYgKCAkdGVzdF90b2sgbmUgJ3g9JyApICAgICMgbWlnaHQgYmUgJHgKICAgICAgICAgICAgICAgICYmICggJHRlc3RfdG9rIG5lICcqPScgKSAgICAjIHR5cGVnbG9iPwoKICAgICAgICAgICAgICAgICMgTW92ZWQgYWJvdmUgYXMgcGFydCBvZiBmaXggZm9yCiAgICAgICAgICAgICAgICAjIFJUICMxMTQzNTk6IE1pc3NwYXJzaW5nIG9mICJwcmludCAkeCAqKiAwLjU7CiAgICAgICAgICAgICAgICAjICYmICggJHRlc3RfdG9rIG5lICcqKicgKSAgICAjIHR5cGVnbG9iPwogICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHRvayA9ICR0ZXN0X3RvazsKICAgICAgICAgICAgICAgICRpKys7CgogICAgICAgICAgICAgICAgIyBOb3cgdHJ5IHRvIGFzc2VtYmxlIHRyaWdyYXBocy4gIE5vdGUgdGhhdCBhbGwgcG9zc2libGUKICAgICAgICAgICAgICAgICMgcGVybCB0cmlncmFwaHMgY2FuIGJlIGNvbnN0cnVjdGVkIGJ5IGFwcGVuZGluZyBhIGNoYXJhY3RlcgogICAgICAgICAgICAgICAgIyB0byBhIGRpZ3JhcGguCiAgICAgICAgICAgICAgICAkdGVzdF90b2sgPSAkdG9rIC4gJHJ0b2tlbnMtPlsgJGkgKyAxIF07CgogICAgICAgICAgICAgICAgaWYgKCAkaXNfdHJpZ3JhcGh7JHRlc3RfdG9rfSApIHsKICAgICAgICAgICAgICAgICAgICAkdG9rID0gJHRlc3RfdG9rOwogICAgICAgICAgICAgICAgICAgICRpKys7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBUaGUgb25seSBjdXJyZW50IHRldHJhZ3JhcGggaXMgdGhlIGRvdWJsZSBkaWFtb25kIG9wZXJhdG9yCiAgICAgICAgICAgICAgICAjIGFuZCBpdHMgZmlyc3QgdGhyZWUgY2hhcmFjdGVycyBhcmUgbm90IGEgdHJpZ3JhcGgsIHNvCiAgICAgICAgICAgICAgICAjIHdlIGRvIGNhbiBkbyBhIHNwZWNpYWwgdGVzdCBmb3IgaXQKICAgICAgICAgICAgICAgIGVsc2lmICggJHRlc3RfdG9rIGVxICc8PD4nICkgewogICAgICAgICAgICAgICAgICAgICR0ZXN0X3RvayAuPSAkcnRva2Vucy0+WyAkaSArIDIgXTsKICAgICAgICAgICAgICAgICAgICBpZiAoICRpc190ZXRyYWdyYXBoeyR0ZXN0X3Rva30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0b2sgPSAkdGVzdF90b2s7CiAgICAgICAgICAgICAgICAgICAgICAgICRpICs9IDI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkdHlwZSAgICAgID0gJHRvazsKICAgICAgICAgICAgJG5leHRfdG9rICA9ICRydG9rZW5zLT5bICRpICsgMSBdOwogICAgICAgICAgICAkbmV4dF90eXBlID0gJHJ0b2tlbl90eXBlLT5bICRpICsgMSBdOwoKICAgICAgICAgICAgREVCVUdfVE9LRU5JWkUgJiYgZG8gewogICAgICAgICAgICAgICAgbG9jYWwgJCIgPSAnKSgnOwogICAgICAgICAgICAgICAgbXkgQGRlYnVnX2xpc3QgPSAoCiAgICAgICAgICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4sICAgICAgJHRvaywKICAgICAgICAgICAgICAgICAgICAkbmV4dF90b2ssICAgICAgICAgICAgICAgICAkYnJhY2VfZGVwdGgsCiAgICAgICAgICAgICAgICAgICAgJGJyYWNlX3R5cGVbJGJyYWNlX2RlcHRoXSwgJHBhcmVuX2RlcHRoLAogICAgICAgICAgICAgICAgICAgICRwYXJlbl90eXBlWyRwYXJlbl9kZXB0aF0KICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBwcmludCBTVERPVVQgIlRPS0VOSVpFOihAZGVidWdfbGlzdClcbiI7CiAgICAgICAgICAgIH07CgogICAgICAgICAgICAjIHR1cm4gb2ZmIGF0dHJpYnV0ZSBsaXN0IG9uIGZpcnN0IG5vbi1ibGFuaywgbm9uLWJhcmV3b3JkCiAgICAgICAgICAgIGlmICggJHByZV90eXBlIG5lICd3JyApIHsgJGluX2F0dHJpYnV0ZV9saXN0ID0gMCB9CgogICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAgICAgIyBXZSBoYXZlIHRoZSBuZXh0IHRva2VuLCAkdG9rLgogICAgICAgICAgICAjIE5vdyB3ZSBoYXZlIHRvIGV4YW1pbmUgdGhpcyB0b2tlbiBhbmQgZGVjaWRlIHdoYXQgaXQgaXMKICAgICAgICAgICAgIyBhbmQgZGVmaW5lIGl0cyAkdHlwZQogICAgICAgICAgICAjCiAgICAgICAgICAgICMgc2VjdGlvbiAxOiBiYXJlIHdvcmRzCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAgICAgaWYgKCAkcHJlX3R5cGUgZXEgJ3cnICkgewogICAgICAgICAgICAgICAgJGV4cGVjdGluZyA9CiAgICAgICAgICAgICAgICAgIG9wZXJhdG9yX2V4cGVjdGVkKCBbICRwcmV2X3R5cGUsICR0b2ssICRuZXh0X3R5cGUgXSApOwogICAgICAgICAgICAgICAgbXkgKCAkbmV4dF9ub25ibGFua190b2tlbiwgJGlfbmV4dCApID0KICAgICAgICAgICAgICAgICAgZmluZF9uZXh0X25vbmJsYW5rX3Rva2VuKCAkaSwgJHJ0b2tlbnMsICRtYXhfdG9rZW5faW5kZXggKTsKCiAgICAgICAgICAgICAgICAjIEFUVFJTOiBoYW5kbGUgc3ViIGFuZCB2YXJpYWJsZSBhdHRyaWJ1dGVzCiAgICAgICAgICAgICAgICBpZiAoJGluX2F0dHJpYnV0ZV9saXN0KSB7CgogICAgICAgICAgICAgICAgICAgICMgdHJlYXQgYmFyZSB3b3JkIGZvbGxvd2VkIGJ5IG9wZW4gcGFyZW4gbGlrZSBxdygKICAgICAgICAgICAgICAgICAgICBpZiAoICRuZXh0X25vbmJsYW5rX3Rva2VuIGVxICcoJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgRm9yIHNvbWV0aGluZyBsaWtlOgogICAgICAgICAgICAgICAgICAgICAgICAjICAgICA6IHByb3RvdHlwZSgkJCkKICAgICAgICAgICAgICAgICAgICAgICAgIyB3ZSBzaG91bGQgbGV0IGRvX3NjYW5fc3ViIHNlZSBpdCBzbyB0aGF0IGl0IGNhbiBzZWUKICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgcHJvdG90eXBlLiAgQWxsIG90aGVyIGF0dHJpYnV0ZXMgZ2V0IHBhcnNlZCBhcyBhCiAgICAgICAgICAgICAgICAgICAgICAgICMgcXVvdGVkIHN0cmluZy4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkdG9rIGVxICdwcm90b3R5cGUnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAncHJvdG90eXBlJzsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHN0YXJ0IGp1c3QgYWZ0ZXIgdGhlIHdvcmQgJ3Byb3RvdHlwZScKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpX2JlZyA9ICRpICsgMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICggJGksICR0b2ssICR0eXBlLCAkaWRfc2Nhbl9zdGF0ZSApID0gZG9fc2Nhbl9zdWIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9saW5lICAgICAgPT4gJGlucHV0X2xpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgICAgICAgICAgICAgICA9PiAkaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaV9iZWcgICAgICAgICAgID0+ICRpX2JlZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rICAgICAgICAgICAgID0+ICR0b2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgICAgICAgICAgICA9PiAkdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRva2VucyAgICAgICAgID0+ICRydG9rZW5zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydG9rZW5fbWFwICAgICAgPT4gJHJ0b2tlbl9tYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkX3NjYW5fc3RhdGUgICA9PiAkaWRfc2Nhbl9zdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X3Rva2VuX2luZGV4ID0+ICRtYXhfdG9rZW5faW5kZXgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICMgSWYgc3VjY2Vzc2Z1bCwgbWFyayBhcyB0eXBlICdxJyB0byBiZSBjb25zaXN0ZW50IHdpdGggb3RoZXIKICAgICAgICAgICAgICAgICAgICMgYXR0cmlidXRlcy4gIE5vdGUgdGhhdCB0eXBlICd3JyB3b3VsZCBhbHNvIHdvcmsuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRpID4gJGlfYmVnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ3EnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiBub3Qgc3VjY2Vzc2Z1bCwgY29udGludWUgYW5kIHBhcnNlIGFzIGEgcXVvdGUuCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgQWxsIG90aGVyIGF0dHJpYnV0ZSBsaXN0cyBtdXN0IGJlIHBhcnNlZCBhcyBxdW90ZXMKICAgICAgICAgICAgICAgICAgICAgICAgIyAoc2VlICdzaWduYXR1cmVzLnQnIGZvciBnb29kIGV4YW1wbGVzKQogICAgICAgICAgICAgICAgICAgICAgICAkaW5fcXVvdGUgICAgICAgICAgICAgICAgPSAkcXVvdGVfaXRlbXN7J3EnfTsKICAgICAgICAgICAgICAgICAgICAgICAgJGFsbG93ZWRfcXVvdGVfbW9kaWZpZXJzID0gJHF1b3RlX21vZGlmaWVyc3sncSd9OwogICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSAgICAgICAgICAgICAgICAgICAgPSAncSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRxdW90ZV90eXBlICAgICAgICAgICAgICA9ICdxJzsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgaGFuZGxlIGJhcmV3b3JkIG5vdCBmb2xsb3dlZCBieSBvcGVuIHBhcmVuCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ3cnOwogICAgICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHF1b3RlIGEgd29yZCBmb2xsb3dlZCBieSA9PiBvcGVyYXRvcgogICAgICAgICAgICAgICAgIyB1bmxlc3MgdGhlIHdvcmQgX19FTkRfXyBvciBfX0RBVEFfXyBhbmQgdGhlIG9ubHkgd29yZCBvbgogICAgICAgICAgICAgICAgIyB0aGUgbGluZS4KICAgICAgICAgICAgICAgIGlmICggISRpc19FTkRfb3JfREFUQSAmJiAkbmV4dF9ub25ibGFua190b2tlbiBlcSAnPScgKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICggJHJ0b2tlbnMtPlsgJGlfbmV4dCArIDEgXSBlcSAnPicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGlzX2NvbnN0YW50eyRjdXJyZW50X3BhY2thZ2V9eyR0b2t9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAnQyc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkaXNfdXNlcl9mdW5jdGlvbnskY3VycmVudF9wYWNrYWdlfXskdG9rfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ1UnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHByb3RvdHlwZSA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1c2VyX2Z1bmN0aW9uX3Byb3RvdHlwZXskY3VycmVudF9wYWNrYWdlfXskdG9rfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICR0b2sgPX4gL152XGQrJC8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICd2JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydF92X3N0cmluZygkdG9rKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQmFyZXdvcmQgZm9sbG93ZWQgYnkgYSBmYXQgY29tbWEgLi4uIHNlZSAnZ2l0MTguaW4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgdG9rIGlzIHNvbWV0aGluZyBsaWtlICd4MTcnIHRoZW4gaXQgY291bGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhY3R1YWxseSBiZSBvcGVyYXRvciB4IGZvbGxvd2VkIGJ5IG51bWJlciAxNy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGb3IgZXhhbXBsZSwgaGVyZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgMTIzeDE3ID0+IFsgNzkyLCAxMjI0IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKGEga2V5IG9mIDEyMyByZXBlYXRlZCAxNyB0aW1lcywgcGVyaGFwcyBub3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3aGF0IHdhcyBpbnRlbmRlZCkuIFdlIHdpbGwgbWFyayB4MTcgYXMgdHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAjICduJyBhbmQgaXQgd2lsbCBiZSBzcGxpdC4gSWYgdGhlIHByZXZpb3VzIHRva2VuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2FzIGFsc28gYSBiYXJld29yZCB0aGVuIGl0IGlzIG5vdCB2ZXJ5IGNsZWFyIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZ29pbmcgb24uICBJbiB0aGlzIGNhc2Ugd2Ugd2lsbCBub3QgYmUgc3VyZSB0aGF0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYW4gb3BlcmF0b3IgaXMgZXhwZWN0ZWQsIHNvIHdlIGp1c3QgbWFyayBpdCBhcyBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYmFyZXdvcmQuICBQZXJsIGlzIGEgbGl0dGxlIG11cmt5IGluIHdoYXQgaXQgZG9lcwogICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGggc3R1ZmYgbGlrZSB0aGlzLCBhbmQgaXRzIGJlaGF2aW9yIGNhbiBjaGFuZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvdmVyIHRpbWUuICBTb21ldGhpbmcgbGlrZQogICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgIGEgeDE4ID0+IFs3OTIsIDEyMjRdLCB3aWxsIGNvbXBpbGUgYXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhIGtleSB3aXRoIDE4IGEncy4gIEJ1dCBzb21ldGhpbmcgbGlrZQogICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgIHB1c2ggQGFycmF5LCBhIHgxODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpcyBhIHN5bnRheCBlcnJvci4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGV4cGVjdGluZyA9PSBPUEVSQVRPUiAmJiAkdG9rID1+IC9eeFxkKyQvICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ24nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZ2l0ICMxOAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ3cnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2lmX2V4cGVjdGluZ19PUEVSQVRPUigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgIyBxdW90ZSBhIGJhcmUgd29yZCB3aXRoaW4gYnJhY2VzLi5saWtlIHh4eC0+e3N9OyBub3RlIHRoYXQgd2UKICAgICAjIG11c3QgYmUgc3VyZSB0aGlzIGlzIG5vdCBhIHN0cnVjdHVyYWwgYnJhY2UsIHRvIGF2b2lkCiAgICAgIyBtaXN0YWtpbmcge3N9IGluIHRoZSBmb2xsb3dpbmcgZm9yIGEgcXVvdGVkIGJhcmUgd29yZDoKICAgICAjICAgICBmb3IoQFspe3N9YmxhfUJMQX0KICAgICAjIEFsc28gdHJlYXQgcSBpbiBzb21ldGhpbmcgbGlrZSB2YXJ7LXF9IGFzIGEgYmFyZSB3b3JkLCBub3QgcW91dGUgb3BlcmF0b3IKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkbmV4dF9ub25ibGFua190b2tlbiBlcSAnfScKICAgICAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ0wnCiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICggICAkbGFzdF9ub25ibGFua190eXBlIGVxICdtJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGxhc3RfbGFzdF9ub25ibGFua190eXBlIGVxICdMJyApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAndyc7CiAgICAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGEgYmFyZSB3b3JkIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IDo6IGlzIG5vdCBhIGtleXdvcmQ7CiAgICAgICAgICAgICAgICAjIHVzZSAkdG9rX2t3IHdoZW4gdGVzdGluZyBmb3Iga2V5d29yZHMgdG8gYXZvaWQgYSBtaXN0YWtlCiAgICAgICAgICAgICAgICBteSAkdG9rX2t3ID0gJHRvazsKICAgICAgICAgICAgICAgIGlmICggICAkcnRva2Vucy0+WyAkaSArIDEgXSBlcSAnOicKICAgICAgICAgICAgICAgICAgICAmJiAkcnRva2Vucy0+WyAkaSArIDIgXSBlcSAnOicgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICR0b2tfa3cgLj0gJzo6JzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGhhbmRsZSBvcGVyYXRvciB4IChub3cgd2Uga25vdyBpdCBpc24ndCAkeD0pCiAgICAgICAgICAgICAgICBpZiAoICAgJGV4cGVjdGluZyA9PSBPUEVSQVRPUgogICAgICAgICAgICAgICAgICAgICYmIHN1YnN0ciggJHRvaywgMCwgMSApIGVxICd4JwogICAgICAgICAgICAgICAgICAgICYmICR0b2sgPX4gL154XGQqJC8gKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlmICggJHRvayBlcSAneCcgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRydG9rZW5zLT5bICRpICsgMSBdIGVxICc9JyApIHsgICAgIyB4PQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRvayAgPSAneD0nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAkdG9rOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGkrKzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ3gnOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBQYXRjaDogbWFyayBzb21ldGhpbmcgbGlrZSB4NCBhcyBhbiBpbnRlZ2VyIGZvciBub3cKICAgICAgICAgICAgICAgICAgICAjIEl0IGdldHMgZml4ZWQgZG93bnN0cmVhbS4gIFRoaXMgaXMgZWFzaWVyIHRoYW4KICAgICAgICAgICAgICAgICAgICAjIHNwbGl0dGluZyB0aGUgcHJldG9rZW4uCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ24nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJHRva19rdyBlcSAnQ09SRTo6JyApIHsKICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICR0b2sgPSAkdG9rX2t3OwogICAgICAgICAgICAgICAgICAgICRpICs9IDI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICggJHRvayBlcSAnc3RyaWN0JyApCiAgICAgICAgICAgICAgICAgICAgYW5kICggJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJ3VzZScgKSApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJHRva2VuaXplcl9zZWxmLT5bX3Nhd191c2Vfc3RyaWN0X10gPSAxOwogICAgICAgICAgICAgICAgICAgIHNjYW5fYmFyZV9pZGVudGlmaWVyKCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZWxzaWYgKCAoICR0b2sgZXEgJ3dhcm5pbmdzJyApCiAgICAgICAgICAgICAgICAgICAgYW5kICggJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJ3VzZScgKSApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJHRva2VuaXplcl9zZWxmLT5bX3Nhd19wZXJsX2Rhc2hfd19dID0gMTsKCiAgICAgICAgICAgICAgICAgICAgIyBzY2FuIGFzIGlkZW50aWZpZXIsIHNvIHRoYXQgd2UgcGljayB1cCBzb21ldGhpbmcgbGlrZToKICAgICAgICAgICAgICAgICAgICAjIHVzZSB3YXJuaW5nczo6cmVnaXN0ZXIKICAgICAgICAgICAgICAgICAgICBzY2FuX2JhcmVfaWRlbnRpZmllcigpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2lmICgKICAgICAgICAgICAgICAgICAgICAgICAkdG9rIGVxICdBdXRvTG9hZGVyJwogICAgICAgICAgICAgICAgICAgICYmICR0b2tlbml6ZXJfc2VsZi0+W19sb29rX2Zvcl9hdXRvbG9hZGVyX10KICAgICAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3Rva2VuIGVxICd1c2UnCgogICAgICAgICAgICAgICAgICAgICAgICAjIHRoZXNlIHJlZ2V4ZXMgYXJlIGZyb20gQXV0b1NwbGl0LnBtLCB3aGljaCB3ZSB3YW50CiAgICAgICAgICAgICAgICAgICAgICAgICMgdG8gbWltaWMKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJGlucHV0X2xpbmUgPX4gL15ccyoodXNlfHJlcXVpcmUpXHMrQXV0b0xvYWRlclxiLwogICAgICAgICAgICAgICAgICAgICAgICB8fCAkaW5wdXRfbGluZSA9fiAvXGJJU0Fccyo9LipcYkF1dG9Mb2FkZXJcYi8KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCJBdXRvTG9hZGVyIHNlZW4sIC1ubGFsIGRlYWN0aXZhdGVzXG4iKTsKICAgICAgICAgICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPltfc2F3X2F1dG9sb2FkZXJfXSAgICAgID0gMTsKICAgICAgICAgICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPltfbG9va19mb3JfYXV0b2xvYWRlcl9dID0gMDsKICAgICAgICAgICAgICAgICAgICBzY2FuX2JhcmVfaWRlbnRpZmllcigpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2lmICgKICAgICAgICAgICAgICAgICAgICAgICAkdG9rIGVxICdTZWxmTG9hZGVyJwogICAgICAgICAgICAgICAgICAgICYmICR0b2tlbml6ZXJfc2VsZi0+W19sb29rX2Zvcl9zZWxmbG9hZGVyX10KICAgICAgICAgICAgICAgICAgICAmJiAoICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJ3VzZScKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJGlucHV0X2xpbmUgPX4gL15ccyoodXNlfHJlcXVpcmUpXHMrU2VsZkxvYWRlclxiLwogICAgICAgICAgICAgICAgICAgICAgICB8fCAkaW5wdXRfbGluZSA9fiAvXGJJU0Fccyo9LipcYlNlbGZMb2FkZXJcYi8gKQogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiU2VsZkxvYWRlciBzZWVuLCAtbmxzbCBkZWFjdGl2YXRlc1xuIik7CiAgICAgICAgICAgICAgICAgICAgJHRva2VuaXplcl9zZWxmLT5bX3Nhd19zZWxmbG9hZGVyX10gICAgICA9IDE7CiAgICAgICAgICAgICAgICAgICAgJHRva2VuaXplcl9zZWxmLT5bX2xvb2tfZm9yX3NlbGZsb2FkZXJfXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgc2Nhbl9iYXJlX2lkZW50aWZpZXIoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBlbHNpZiAoICggJHRvayBlcSAnY29uc3RhbnQnICkKICAgICAgICAgICAgICAgICAgICBhbmQgKCAkbGFzdF9ub25ibGFua190b2tlbiBlcSAndXNlJyApICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBzY2FuX2JhcmVfaWRlbnRpZmllcigpOwogICAgICAgICAgICAgICAgICAgIG15ICggJG5leHRfbm9uYmxhbmtfdG9rZW4sICRpX25leHQgKSA9CiAgICAgICAgICAgICAgICAgICAgICBmaW5kX25leHRfbm9uYmxhbmtfdG9rZW4oICRpLCAkcnRva2VucywKICAgICAgICAgICAgICAgICAgICAgICAgJG1heF90b2tlbl9pbmRleCApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJG5leHRfbm9uYmxhbmtfdG9rZW4pIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGlzX2tleXdvcmR7JG5leHRfbm9uYmxhbmtfdG9rZW59ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQXNzdW1lIHF3IGlzIHVzZWQgYXMgYSBxdW90ZSBhbmQgb2theSwgYXMgaW46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICB1c2UgY29uc3RhbnQgcXd7IERFQlVHIDAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm90IHdvcnRoIHRyeWluZyB0byBwYXJzZSBmb3IganVzdCBhIHdhcm5pbmcKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5PVEU6IFRoaXMgd2FybmluZyBpcyBkZWFjdGl2YXRlZCBiZWNhdXNlIHJlY2VudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB2ZXJzaW9ucyBvZiBwZXJsIGRvIG5vdCBjb21wbGFpbiBoZXJlLCBidXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIGNvZGluZyBpcyByZXRhaW5lZCBmb3IgcmVmZXJlbmNlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAwICYmICRuZXh0X25vbmJsYW5rX3Rva2VuIG5lICdxdycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZygKIkF0dGVtcHRpbmcgdG8gZGVmaW5lIGNvbnN0YW50ICckbmV4dF9ub25ibGFua190b2tlbicgd2hpY2ggaXMgYSBwZXJsIGtleXdvcmRcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBjb3VsZCBjaGVjayBmb3IgZXJyb3IgaW4gd2hpY2ggbmV4dCB0b2tlbiBpcwogICAgICAgICAgICAgICAgICAgICAgICAjIG5vdCBhIHdvcmQgKG51bWJlciwgcHVuY3R1YXRpb24sIC4uKQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpc19jb25zdGFudHskY3VycmVudF9wYWNrYWdlfXskbmV4dF9ub25ibGFua190b2tlbn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdmFyaW91cyBxdW90ZSBvcGVyYXRvcnMKICAgICAgICAgICAgICAgIGVsc2lmICggJGlzX3FfcXFfcXdfcXhfcXJfc195X3RyX217JHRva30gKSB7CiMjTklDT0wgUEFUQ0gKICAgICAgICAgICAgICAgICAgICBpZiAoICRleHBlY3RpbmcgPT0gT1BFUkFUT1IgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIEJlIGNhcmVmdWwgbm90IHRvIGNhbGwgYW4gZXJyb3IgZm9yIGEgcXcgcXVvdGUKICAgICAgICAgICAgICAgICAgICAgICAgIyB3aGVyZSBhIHBhcmVudGhlc2l6ZWQgbGlzdCBpcyBhbGxvd2VkLiAgRm9yIGV4YW1wbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICMgaXQgY291bGQgYWxzbyBiZSBhIGZvci9mb3JlYWNoIGNvbnN0cnVjdCBzdWNoIGFzCiAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgIyAgICBmb3JlYWNoIG15ICRrZXkgcXdcVW5vIER1ZSBUcmVzIFF1YWRyb1wgewogICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICBwcmludCAiU2V0ICRrZXlcbiI7CiAgICAgICAgICAgICAgICAgICAgICAgICMgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAjCgogICAgICAgICAgICAgICAgICAgICAgICAjIE9yIGl0IGNvdWxkIGJlIGEgZnVuY3Rpb24gY2FsbC4KICAgICAgICAgICAgICAgICAgICAgICAgIyBOT1RFOiBCcmFjZXMgaW4gc29tZXRoaW5nIGxpa2UgJnsgeHh4IH0gYXJlIG5vdAogICAgICAgICAgICAgICAgICAgICAgICAjIG1hcmtlZCBhcyBhIGJsb2NrLCB3ZSBtaWdodCBoYXZlIGEgbWV0aG9kIGNhbGwuCiAgICAgICAgICAgICAgICAgICAgICAgICMgJm1ldGhvZCguLi4pLCAkbWV0aG9kLT4oLi4pLCAme21ldGhvZH0oLi4uKSwKICAgICAgICAgICAgICAgICAgICAgICAgIyAkcmVmWzJdKGxpc3QpIGlzIG9rICYgc2hvcnQgZm9yICRyZWZbMl0tPihsaXN0KQogICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICMgU2VlIG5vdGVzIGluICdzdWIgY29kZV9ibG9ja190eXBlJyBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgIyAnc3ViIGlzX25vbl9zdHJ1Y3R1cmFsX2JyYWNlJwoKICAgICAgICAgICAgICAgICAgICAgICAgdW5sZXNzICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0b2sgZXEgJ3F3JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAgICRsYXN0X25vbmJsYW5rX3Rva2VuID1+IC9eKFtcXVx9XCZdfFwtXD4pLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRpc19mb3JfZm9yZWFjaHskd2FudF9wYXJlbn0gKQogICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfaWZfZXhwZWN0aW5nX09QRVJBVE9SKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJGluX3F1b3RlICAgICAgICAgICAgICAgID0gJHF1b3RlX2l0ZW1zeyR0b2t9OwogICAgICAgICAgICAgICAgICAgICRhbGxvd2VkX3F1b3RlX21vZGlmaWVycyA9ICRxdW90ZV9tb2RpZmllcnN7JHRva307CgogICAgICAgICAgICAgICAgICAgIyBBbGwgcXVvdGUgdHlwZXMgYXJlICdRJyBleGNlcHQgcG9zc2libHkgcXcgcXVvdGVzLgogICAgICAgICAgICAgICAgICAgIyBxdyBxdW90ZXMgYXJlIHNwZWNpYWwgaW4gdGhhdCB0aGV5IG1heSBnZW5lcmFsbHkgYmUgdHJpbW1lZAogICAgICAgICAgICAgICAgICAgIyBvZiBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlLiAgU28gdGhleSBhcmUgZ2l2ZW4gYQogICAgICAgICAgICAgICAgICAgIyBzZXBhcmF0ZSB0eXBlLCAncScsIHVubGVzcyByZXF1ZXN0ZWQgb3RoZXJ3aXNlLgogICAgICAgICAgICAgICAgICAgICR0eXBlID0KICAgICAgICAgICAgICAgICAgICAgICggJHRvayBlcSAncXcnICYmICR0b2tlbml6ZXJfc2VsZi0+W190cmltX3F3X10gKQogICAgICAgICAgICAgICAgICAgICAgPyAncScKICAgICAgICAgICAgICAgICAgICAgIDogJ1EnOwogICAgICAgICAgICAgICAgICAgICRxdW90ZV90eXBlID0gJHR5cGU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjaGVjayBmb3IgYSBzdGF0ZW1lbnQgbGFiZWwKICAgICAgICAgICAgICAgIGVsc2lmICgKICAgICAgICAgICAgICAgICAgICAgICAoICRuZXh0X25vbmJsYW5rX3Rva2VuIGVxICc6JyApCiAgICAgICAgICAgICAgICAgICAgJiYgKCAkcnRva2Vucy0+WyAkaV9uZXh0ICsgMSBdIG5lICc6JyApCiAgICAgICAgICAgICAgICAgICAgJiYgKCAkaV9uZXh0IDw9ICRtYXhfdG9rZW5faW5kZXggKSAgICAjIGNvbG9uIG9uIHNhbWUgbGluZQogICAgICAgICAgICAgICAgICAgICYmIGxhYmVsX29rKCkKICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlmICggJHRvayAhfiAvW0EtWl0vICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEB7ICR0b2tlbml6ZXJfc2VsZi0+W19ybG93ZXJfY2FzZV9sYWJlbHNfYXRfXSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICRpbnB1dF9saW5lX251bWJlcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAnSic7CiAgICAgICAgICAgICAgICAgICAgJHRvayAuPSAnOic7CiAgICAgICAgICAgICAgICAgICAgJGkgPSAkaV9uZXh0OwogICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyAgICAgICdzdWInIG9yIGFsaWFzCiAgICAgICAgICAgICAgICBlbHNpZiAoICRpc19zdWJ7JHRva19rd30gKSB7CiAgICAgICAgICAgICAgICAgICAgZXJyb3JfaWZfZXhwZWN0aW5nX09QRVJBVE9SKCkKICAgICAgICAgICAgICAgICAgICAgIGlmICggJGV4cGVjdGluZyA9PSBPUEVSQVRPUiApOwogICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemVfc3VibmFtZSgpOwogICAgICAgICAgICAgICAgICAgIHNjYW5faWQoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjICAgICAgJ3BhY2thZ2UnCiAgICAgICAgICAgICAgICBlbHNpZiAoICRpc19wYWNrYWdleyR0b2tfa3d9ICkgewogICAgICAgICAgICAgICAgICAgIGVycm9yX2lmX2V4cGVjdGluZ19PUEVSQVRPUigpCiAgICAgICAgICAgICAgICAgICAgICBpZiAoICRleHBlY3RpbmcgPT0gT1BFUkFUT1IgKTsKICAgICAgICAgICAgICAgICAgICBzY2FuX2lkKCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBOb3RlIG9uIHRva2VuIHR5cGVzIGZvciBmb3JtYXQsIF9fREFUQV9fLCBfX0VORF9fOgogICAgICAgICAgICAgICAgIyBJdCBzaW1wbGlmaWVzIHRoaW5ncyB0byBnaXZlIHRoZXNlIHR5cGUgJzsnLCBzbyB0aGF0IHdoZW4gd2UKICAgICAgICAgICAgICAgICMgc3RhcnQgcmVzY2FubmluZyB3ZSB3aWxsIGJlIGV4cGVjdGluZyBhIHRva2VuIG9mIHR5cGUgVEVSTS4KICAgICAgICAgICAgICAgICMgV2Ugd2lsbCBzd2l0Y2ggdG8gdHlwZSAnaycgYmVmb3JlIG91dHB1dHRpbmcgdGhlIHRva2Vucy4KICAgICAgICAgICAgICAgIGVsc2lmICggJGlzX2Zvcm1hdF9FTkRfREFUQXskdG9rX2t3fSApIHsKICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICc7JzsgICAgIyBtYWtlIHRva2VuaXplciBsb29rIGZvciBURVJNIG5leHQKCiAgICAgICAgICAgICAgICAgICAgIyBSZW1lbWJlciB0aGF0IHdlIGFyZSBpbiBvbmUgb2YgdGhlc2UgdGhyZWUgc2VjdGlvbnMKICAgICAgICAgICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPlsgJGlzX2Zvcm1hdF9FTkRfREFUQXskdG9rX2t3fSBdID0gMTsKICAgICAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2lmICggJGlzX2tleXdvcmR7JHRva19rd30gKSB7CiAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAnayc7CgogICAgICAgICAgICAgICAgICAgICMgU2luY2UgZm9yIGFuZCBmb3JlYWNoIG1heSBub3QgYmUgZm9sbG93ZWQgaW1tZWRpYXRlbHkKICAgICAgICAgICAgICAgICAgICAjIGJ5IGFuIG9wZW5pbmcgcGFyZW4sIHdlIGhhdmUgdG8gcmVtZW1iZXIgd2hpY2gga2V5d29yZAogICAgICAgICAgICAgICAgICAgICMgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBuZXh0ICcoJwogICAgICAgICAgICAgICAgICAgIGlmICggJGlzX2Zvcl9mb3JlYWNoeyR0b2t9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG5ld19zdGF0ZW1lbnRfb2soKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3YW50X3BhcmVuID0gJHRvazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyByZWNvZ25pemUgJ3VzZScgc3RhdGVtZW50cywgd2hpY2ggYXJlIHNwZWNpYWwKICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRpc191c2VfcmVxdWlyZXskdG9rfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXRlbWVudF90eXBlID0gJHRvazsKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfaWZfZXhwZWN0aW5nX09QRVJBVE9SKCkKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRleHBlY3RpbmcgPT0gT1BFUkFUT1IgKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgcmVtZW1iZXIgbXkgYW5kIG91ciB0byBjaGVjayBmb3IgdHJhaWxpbmcgIjogc2hhcmVkIgogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJGlzX215X291cl9zdGF0ZXskdG9rfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXRlbWVudF90eXBlID0gJHRvazsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgZm9yIG1pc3BsYWNlZCAnZWxzaWYnIGFuZCAnZWxzZScsIGJ1dCBhbGxvdyBpc29sYXRlZAogICAgICAgICAgICAgICAgICAgICMgZWxzZSBvciBlbHNpZiBibG9ja3MgdG8gYmUgZm9ybWF0dGVkLiAgVGhpcyBpcyBpbmRpY2F0ZWQKICAgICAgICAgICAgICAgICAgICAjIGJ5IGEgbGFzdCBub2JsYW5rIHRva2VuIG9mICc7JwogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJHRvayBlcSAnZWxzaWYnICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gbmUgJzsnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkbGFzdF9ub25ibGFua19ibG9ja190eXBlICF+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvXihpZnxlbHNpZnx1bmxlc3MpJC8gKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nKAoiZXhwZWN0aW5nICckdG9rJyB0byBmb2xsb3cgb25lIG9mICdpZnxlbHNpZnx1bmxlc3MnXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJHRvayBlcSAnZWxzZScgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHBhdGNoZWQgZm9yIFNXSVRDSC9DQVNFCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3Rva2VuIG5lICc7JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZSAhfgogICAgICAgICAgICAgICAgICAgICAgICAgICAgL14oaWZ8ZWxzaWZ8dW5sZXNzfGNhc2V8d2hlbikkLwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcGF0Y2ggdG8gYXZvaWQgYW4gdW53YW50ZWQgZXJyb3IgbWVzc2FnZSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIGNhc2Ugb2YgYSBwYXJlbmxlc3MgJ2Nhc2UnIChSVCAxMDU0ODQpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzd2l0Y2ggKCAxICkgeyBjYXNlIHggeyAyIH0gZWxzZSB7IH0gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHN0YXRlbWVudF90eXBlICF+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvXihpZnxlbHNpZnx1bmxlc3N8Y2FzZXx3aGVuKSQvCiAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nKAoiZXhwZWN0aW5nICckdG9rJyB0byBmb2xsb3cgb25lIG9mICdpZnxlbHNpZnx1bmxlc3N8Y2FzZXx3aGVuJ1xuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICR0b2sgZXEgJ2NvbnRpbnVlJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAgICRsYXN0X25vbmJsYW5rX3Rva2VuIG5lICc7JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZSAhfgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyheKFx7fFx9fDt8d2hpbGV8dW50aWx8Zm9yfGZvcmVhY2gpfDokKS8gKQogICAgICAgICAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBub3RlOiAnOycgJ3snIGFuZCAnfScgaW4gbGlzdCBhYm92ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWNhdXNlIGNvbnRpbnVlcyBjYW4gZm9sbG93IGJhcmUgYmxvY2tzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAnOicgaXMgbGFiZWxlZCBibG9jawogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTk9URTogVGhpcyBjaGVjayBoYXMgYmVlbiBkZWFjdGl2YXRlZCBiZWNhdXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnRpbnVlIGhhcyBhbiBhbHRlcm5hdGl2ZSB1c2FnZSBmb3IgZ2l2ZW4vd2hlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBibG9ja3MgaW4gcGVybCA1LjEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIyB3YXJuaW5nKCInJHRvaycgc2hvdWxkIGZvbGxvdyBhIGJsb2NrXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgcGF0Y2ggZm9yIFNXSVRDSC9DQVNFIGlmICdjYXNlJyBhbmQgJ3doZW4gYXJlCiAgICAgICAgICAgICAgICAgICAgIyB0cmVhdGVkIGFzIGtleXdvcmRzLiAgQWxzbyAnZGVmYXVsdCcgZm9yIFN3aXRjaDo6UGxhaW4KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoJHRvayBlcSAnd2hlbicKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHRvayBlcSAnY2FzZScKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJHRvayBlcSAnZGVmYXVsdCcgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXRlbWVudF90eXBlID0gJHRvazsgICAgIyBuZXh0ICd7JyBpcyBibG9jawogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgaW5kZW50IHRyYWlsaW5nIGlmL3VubGVzcy93aGlsZS91bnRpbAogICAgICAgICAgICAgICAgICAgICMgb3V0ZGVudGluZyB3aWxsIGJlIGhhbmRsZWQgYnkgbGF0ZXIgaW5kZW50YXRpb24gbG9vcAojIyBERUFDVElWQVRFRDogdW5mb3J0dW5hdGVseSB0aGlzIGNhbiBjYXVzZSBzb21lIHVud2FudGVkIGluZGVudGF0aW9uIGxpa2U6CiMjJG9wdF9vID0gMQojIyAgaWYgISgKIyMgICAgICAgICAgICAgJG9wdF9iCiMjICAgICAgICAgIHx8ICRvcHRfYwojIyAgICAgICAgICB8fCAkb3B0X2QKIyMgICAgICAgICAgfHwgJG9wdF9mCiMjICAgICAgICAgIHx8ICRvcHRfaQojIyAgICAgICAgICB8fCAkb3B0X2wKIyMgICAgICAgICAgfHwgJG9wdF9vCiMjICAgICAgICAgIHx8ICRvcHRfeAojIyAgKTsKIyMgICAgICAgICAgICAgICAgICAgIGlmICggICAkdG9rID1+IC9eKGlmfHVubGVzc3x3aGlsZXx1bnRpbCkkLwojIyAgICAgICAgICAgICAgICAgICAgICAgICYmICRuZXh0X25vbmJsYW5rX3Rva2VuIG5lICcoJyApCiMjICAgICAgICAgICAgICAgICAgICB7CiMjICAgICAgICAgICAgICAgICAgICAgICAgJGluZGVudF9mbGFnID0gMTsKIyMgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGNoZWNrIGZvciBpbmxpbmUgbGFiZWwgZm9sbG93aW5nCiAgICAgICAgICAgICAgICAjICAgICAgICAgL14ocmVkb3xsYXN0fG5leHR8Z290bykkLwogICAgICAgICAgICAgICAgZWxzaWYgKCggJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAnaycgKQogICAgICAgICAgICAgICAgICAgICYmICggJGlzX3JlZG9fbGFzdF9uZXh0X2dvdG97JGxhc3Rfbm9uYmxhbmtfdG9rZW59ICkgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ2onOwogICAgICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzb21ldGhpbmcgZWxzZSAtLQogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgIHNjYW5fYmFyZV9pZGVudGlmaWVyKCk7CgogICAgICAgICAgICAgICAgICAgIGlmICggICAkc3RhdGVtZW50X3R5cGUgZXEgJ3VzZScKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJ3VzZScgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNhd191c2VfbW9kdWxleyRjdXJyZW50X3BhY2thZ2V9LT57JHRva30gPSAxOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkdHlwZSBlcSAndycgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRleHBlY3RpbmcgPT0gT1BFUkFUT1IgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBQYXRjaCB0byBhdm9pZCBlcnJvciBtZXNzYWdlIGZvciBSUGVybCBvdmVybG9hZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wZXJhdG9yIGZ1bmN0aW9uczogdXNlIG92ZXJsb2FkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICcrJyA9PiBcJnNzZV9hZGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICctJyA9PiBcJnNzZV9zdWIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICcqJyA9PiBcJnNzZV9tdWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICcvJyA9PiBcJnNzZV9kaXY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiB0aGlzIHNob3VsZCBldmVudHVhbGx5IGJlIGdlbmVyYWxpemVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICAgJHNhd191c2VfbW9kdWxleyRjdXJyZW50X3BhY2thZ2V9LT57J1JQZXJsJ30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkdG9rID1+IC9ec3NlXyhtdWx8ZGl2fGFkZHxzdWIpJC8gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGRvbid0IGNvbXBsYWluIGFib3V0IHBvc3NpYmxlIGluZGlyZWN0IG9iamVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBub3RhdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRm9yIGV4YW1wbGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgcGFja2FnZSBtYWluOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIHN1YiBuZXcoJCkgeyAuLi4gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICRiID0gbmV3IEE6OjsgICMgY2FsbHMgQTo6bmV3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgJGMgPSBuZXcgQTsgICAgIyBzYW1lIHRoaW5nIGJ1dCBzdXNwaWNpb3VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgd2lsbCBjYWxsIEE6Om5ldyBidXQgd2UgaGF2ZSBhICduZXcnIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG1haW46OiB3aGljaCBsb29rcyBsaWtlIGEgY29uc3RhbnQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ0MnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJHRvayAhfiAvOjokLyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxhaW4oPDxFT00pOwpFeHBlY3Rpbmcgb3BlcmF0b3IgYWZ0ZXIgJyRsYXN0X25vbmJsYW5rX3Rva2VuJyBidXQgZm91bmQgYmFyZSB3b3JkICckdG9rJwogICAgICAgTWF5YmUgaW5kaXJlY3RldCBvYmplY3Qgbm90YXRpb24/CkVPTQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2lmX2V4cGVjdGluZ19PUEVSQVRPUigiYmFyZXdvcmQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgIyBtYXJrIGJhcmUgd29yZHMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgYSBwYXJlbiBhcwogICAgICAgICAgICAgICAgICAgICAgICAjIGZ1bmN0aW9ucwogICAgICAgICAgICAgICAgICAgICAgICAkbmV4dF90b2sgPSAkcnRva2Vucy0+WyAkaSArIDEgXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkbmV4dF90b2sgZXEgJygnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAnVSc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgdW5kZXJzY29yZSBhZnRlciBmaWxlIHRlc3Qgb3BlcmF0b3IgaXMgZmlsZSBoYW5kbGUKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkdG9rIGVxICdfJyAmJiAkbGFzdF9ub25ibGFua190eXBlIGVxICdGJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ1onOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIHBhdGNoIGZvciBTV0lUQ0gvQ0FTRSBpZiAnY2FzZScgYW5kICd3aGVuIGFyZQogICAgICAgICAgICAgICAgICAgICAgICAjIG5vdCB0cmVhdGVkIGFzIGtleXdvcmRzOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRvayBlcSAnY2FzZScKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkYnJhY2VfdHlwZVskYnJhY2VfZGVwdGhdIGVxICdzd2l0Y2gnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoICAgJHRvayBlcSAnd2hlbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkYnJhY2VfdHlwZVskYnJhY2VfZGVwdGhdIGVxICdnaXZlbicgKQogICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXRlbWVudF90eXBlID0gJHRvazsgICAgIyBuZXh0ICd7JyBpcyBibG9jawogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgICAgICAgICAgID0gJ2snOyAjIGZvciBrZXl3b3JkIHN5bnRheCBjb2xvcmluZwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIHBhdGNoIGZvciBTV0lUQ0gvQ0FTRSBpZiBzd2l0Y2ggYW5kIGdpdmVuIG5vdCBrZXl3b3JkcwogICAgICAgICAgICAgICAgICAgICAgICAjIFN3aXRjaCBpcyBub3QgYSBwZXJsIDUga2V5d29yZCwgYnV0IHdlIHdpbGwgZ2FtYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICMgYW5kIG1hcmsgc3dpdGNoIGZvbGxvd2VkIGJ5IHBhcmVuIGFzIGEga2V5d29yZC4gIFRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgIyBpcyBvbmx5IG5lY2Vzc2FyeSB0byBnZXQgaHRtbCBzeW50YXggY29sb3JpbmcgbmljZSwKICAgICAgICAgICAgICAgICAgICAgICAgIyBhbmQgZG9lcyBub3QgY29tbWl0IHRoaXMgYXMgYmVpbmcgYSBzd2l0Y2gvY2FzZS4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkbmV4dF9ub25ibGFua190b2tlbiBlcSAnKCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICggJHRvayBlcSAnc3dpdGNoJyB8fCAkdG9rIGVxICdnaXZlbicgKSApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ2snOyAgICAjIGZvciBrZXl3b3JkIHN5bnRheCBjb2xvcmluZwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAgICAgIyBzZWN0aW9uIDI6IHN0cmluZ3Mgb2YgZGlnaXRzCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICAgICBlbHNpZiAoICRwcmVfdHlwZSBlcSAnZCcgKSB7CiAgICAgICAgICAgICAgICAkZXhwZWN0aW5nID0KICAgICAgICAgICAgICAgICAgb3BlcmF0b3JfZXhwZWN0ZWQoIFsgJHByZXZfdHlwZSwgJHRvaywgJG5leHRfdHlwZSBdICk7CiAgICAgICAgICAgICAgICBlcnJvcl9pZl9leHBlY3RpbmdfT1BFUkFUT1IoIk51bWJlciIpCiAgICAgICAgICAgICAgICAgIGlmICggJGV4cGVjdGluZyA9PSBPUEVSQVRPUiApOwoKICAgICAgICAgICAgICAgIG15ICRudW1iZXIgPSBzY2FuX251bWJlcl9mYXN0KCk7CiAgICAgICAgICAgICAgICBpZiAoICFkZWZpbmVkKCRudW1iZXIpICkgewoKICAgICAgICAgICAgICAgICAgICAjIHNob3VsZG4ndCBoYXBwZW4gLSB3ZSBzaG91bGQgYWx3YXlzIGdldCBhIG51bWJlcgogICAgICAgICAgICAgICAgICAgIHdhcm5pbmcoIm5vbi1udW1iZXIgYmVnaW5uaW5nIHdpdGggZGlnaXQtLXByb2dyYW0gYnVnXG4iKTsKICAgICAgICAgICAgICAgICAgICByZXBvcnRfZGVmaW5pdGVfYnVnKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICAgICAjIHNlY3Rpb24gMzogYWxsIG90aGVyIHRva2VucwogICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbGFzdCBpZiAoICR0b2sgZXEgJyMnICk7CiAgICAgICAgICAgICAgICBteSAkY29kZSA9ICR0b2tlbml6YXRpb25fY29kZS0+eyR0b2t9OwogICAgICAgICAgICAgICAgaWYgKCRjb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgJGV4cGVjdGluZyA9CiAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcl9leHBlY3RlZCggWyAkcHJldl90eXBlLCAkdG9rLCAkbmV4dF90eXBlIF0gKTsKICAgICAgICAgICAgICAgICAgICAkY29kZS0+KCk7CiAgICAgICAgICAgICAgICAgICAgcmVkbyBpZiAkaW5fcXVvdGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIGVuZCBvZiBtYWluIHRva2VuaXphdGlvbiBsb29wCiAgICAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgICBpZiAoICRpX3RvayA+PSAwICkgewogICAgICAgICAgICAkcm91dHB1dF90b2tlbl90eXBlLT5bJGlfdG9rXSAgICAgPSAkdHlwZTsKICAgICAgICAgICAgJHJvdXRwdXRfYmxvY2tfdHlwZS0+WyRpX3Rva10gICAgID0gJGJsb2NrX3R5cGU7CiAgICAgICAgICAgICRyb3V0cHV0X2NvbnRhaW5lcl90eXBlLT5bJGlfdG9rXSA9ICRjb250YWluZXJfdHlwZTsKICAgICAgICAgICAgJHJvdXRwdXRfdHlwZV9zZXF1ZW5jZS0+WyRpX3Rva10gID0gJHR5cGVfc2VxdWVuY2U7CiAgICAgICAgICAgICRyb3V0cHV0X2luZGVudF9mbGFnLT5bJGlfdG9rXSAgICA9ICRpbmRlbnRfZmxhZzsKICAgICAgICB9CgogICAgICAgIHVubGVzcyAoICggJHR5cGUgZXEgJ2InICkgfHwgKCAkdHlwZSBlcSAnIycgKSApIHsKICAgICAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua190b2tlbiAgICAgICAgICA9ICRsYXN0X25vbmJsYW5rX3Rva2VuOwogICAgICAgICAgICAkbGFzdF9sYXN0X25vbmJsYW5rX3R5cGUgICAgICAgICAgID0gJGxhc3Rfbm9uYmxhbmtfdHlwZTsKICAgICAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua19ibG9ja190eXBlICAgICA9ICRsYXN0X25vbmJsYW5rX2Jsb2NrX3R5cGU7CiAgICAgICAgICAgICRsYXN0X2xhc3Rfbm9uYmxhbmtfY29udGFpbmVyX3R5cGUgPSAkbGFzdF9ub25ibGFua19jb250YWluZXJfdHlwZTsKICAgICAgICAgICAgJGxhc3RfbGFzdF9ub25ibGFua190eXBlX3NlcXVlbmNlICA9ICRsYXN0X25vbmJsYW5rX3R5cGVfc2VxdWVuY2U7CiAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3Rva2VuICAgICAgICAgICAgICAgPSAkdG9rOwogICAgICAgICAgICAkbGFzdF9ub25ibGFua190eXBlICAgICAgICAgICAgICAgID0gJHR5cGU7CiAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX2Jsb2NrX3R5cGUgICAgICAgICAgPSAkYmxvY2tfdHlwZTsKICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfY29udGFpbmVyX3R5cGUgICAgICA9ICRjb250YWluZXJfdHlwZTsKICAgICAgICAgICAgJGxhc3Rfbm9uYmxhbmtfdHlwZV9zZXF1ZW5jZSAgICAgICA9ICR0eXBlX3NlcXVlbmNlOwogICAgICAgICAgICAkbGFzdF9ub25ibGFua19wcm90b3R5cGUgICAgICAgICAgID0gJHByb3RvdHlwZTsKICAgICAgICB9CgogICAgICAgICMgcmVzZXQgaW5kZW50YXRpb24gbGV2ZWwgaWYgbmVjZXNzYXJ5IGF0IGEgc3ViIG9yIHBhY2thZ2UKICAgICAgICAjIGluIGFuIGF0dGVtcHQgdG8gcmVjb3ZlciBmcm9tIGEgbmVzdGluZyBlcnJvcgogICAgICAgIGlmICggJGxldmVsX2luX3Rva2VuaXplciA8IDAgKSB7CiAgICAgICAgICAgIGlmICggJGlucHV0X2xpbmUgPX4gL15ccyooc3VifHBhY2thZ2UpXHMrKFx3KykvICkgewogICAgICAgICAgICAgICAgcmVzZXRfaW5kZW50YXRpb25fbGV2ZWwoMCk7CiAgICAgICAgICAgICAgICBicmFjZV93YXJuaW5nKCJyZXNldHRpbmcgbGV2ZWwgdG8gMCBhdCAkMSAkMlxuIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYWxsIGRvbmUgdG9rZW5pemluZyB0aGlzIGxpbmUgLi4uCiAgICAgICAgIyBub3cgcHJlcGFyZSB0aGUgZmluYWwgbGlzdCBvZiB0b2tlbnMgYW5kIHR5cGVzCgogICAgICAgIG15IEB0b2tlbl90eXBlICAgICA9ICgpOyAgICMgc3RhY2sgb2Ygb3V0cHV0IHRva2VuIHR5cGVzCiAgICAgICAgbXkgQGJsb2NrX3R5cGUgICAgID0gKCk7ICAgIyBzdGFjayBvZiBvdXRwdXQgY29kZSBibG9jayB0eXBlcwogICAgICAgIG15IEBjb250YWluZXJfdHlwZSA9ICgpOyAgICMgc3RhY2sgb2Ygb3V0cHV0IGNvZGUgY29udGFpbmVyIHR5cGVzCiAgICAgICAgbXkgQHR5cGVfc2VxdWVuY2UgID0gKCk7ICAgIyBzdGFjayBvZiBvdXRwdXQgdHlwZSBzZXF1ZW5jZSBudW1iZXJzCiAgICAgICAgbXkgQHRva2VucyAgICAgICAgID0gKCk7ICAgIyBvdXRwdXQgdG9rZW5zCiAgICAgICAgbXkgQGxldmVscyAgICAgICAgID0gKCk7ICAgIyBzdHJ1Y3R1cmFsIGJyYWNlIGxldmVscyBvZiBvdXRwdXQgdG9rZW5zCiAgICAgICAgbXkgQHNsZXZlbHMgICAgICAgID0gKCk7ICAgIyBzZWNvbmRhcnkgbmVzdGluZyBsZXZlbHMgb2Ygb3V0cHV0IHRva2VucwogICAgICAgIG15IEBuZXN0aW5nX3Rva2VucyA9ICgpOyAgICMgc3RyaW5nIG9mIHRva2VucyBsZWFkaW5nIHRvIHRoaXMgZGVwdGgKICAgICAgICBteSBAbmVzdGluZ190eXBlcyAgPSAoKTsgICAjIHN0cmluZyBvZiB0b2tlbiB0eXBlcyBsZWFkaW5nIHRvIHRoaXMgZGVwdGgKICAgICAgICBteSBAbmVzdGluZ19ibG9ja3MgPSAoKTsgICAjIHN0cmluZyBvZiBibG9jayB0eXBlcyBsZWFkaW5nIHRvIHRoaXMgZGVwdGgKICAgICAgICBteSBAbmVzdGluZ19saXN0cyAgPSAoKTsgICAjIHN0cmluZyBvZiBsaXN0IHR5cGVzIGxlYWRpbmcgdG8gdGhpcyBkZXB0aAogICAgICAgIG15IEBjaV9zdHJpbmcgPSAoKTsgICMgc3RyaW5nIG5lZWRlZCB0byBjb21wdXRlIGNvbnRpbnVhdGlvbiBpbmRlbnRhdGlvbgogICAgICAgIG15IEBjb250YWluZXJfZW52aXJvbm1lbnQgPSAoKTsgICAgIyBCTE9DSyBvciBMSVNUCiAgICAgICAgbXkgJGNvbnRhaW5lcl9lbnZpcm9ubWVudCA9ICcnOwogICAgICAgIG15ICRpbSAgICAgICAgICAgICAgICAgICAgPSAtMTsgICAgIyBwcmV2aW91cyAkaSB2YWx1ZQogICAgICAgIG15ICRudW07CgogICAgICAgICMgQ291bnQgdGhlIG51bWJlciBvZiAnMSdzIGluIHRoZSBzdHJpbmcgKHByZXZpb3VzbHkgc3ViIG9uZXNfY291bnQpCiAgICAgICAgbXkgJGNpX3N0cmluZ19zdW0gPSAoIG15ICRzdHIgPSAkY2lfc3RyaW5nX2luX3Rva2VuaXplciApID1+IHRyLzEvMC87CgojIENvbXB1dGluZyBUb2tlbiBJbmRlbnRhdGlvbgojCiMgICAgIFRoZSBmaW5hbCBzZWN0aW9uIG9mIHRoZSB0b2tlbml6ZXIgZm9ybXMgdG9rZW5zIGFuZCBhbHNvIGNvbXB1dGVzCiMgICAgIHBhcmFtZXRlcnMgbmVlZGVkIHRvIGZpbmQgaW5kZW50YXRpb24uICBJdCBpcyBtdWNoIGVhc2llciB0byBkbyBpdAojICAgICBpbiB0aGUgdG9rZW5pemVyIHRoYW4gZWxzZXdoZXJlLiAgSGVyZSBpcyBhIGJyaWVmIGRlc2NyaXB0aW9uIG9mIGhvdwojICAgICBpbmRlbnRhdGlvbiBpcyBjb21wdXRlZC4gIFBlcmw6OlRpZHkgY29tcHV0ZXMgaW5kZW50YXRpb24gYXMgdGhlIHN1bQojICAgICBvZiAyIHRlcm1zOgojCiMgICAgICgxKSBzdHJ1Y3R1cmFsIGluZGVudGF0aW9uLCBzdWNoIGFzIGlmL2Vsc2UvZWxzaWYgYmxvY2tzCiMgICAgICgyKSBjb250aW51YXRpb24gaW5kZW50YXRpb24sIHN1Y2ggYXMgbG9uZyBwYXJhbWV0ZXIgY2FsbCBsaXN0cy4KIwojICAgICBUaGVzZSBhcmUgb2NjYXNpb25hbGx5IGNhbGxlZCBwcmltYXJ5IGFuZCBzZWNvbmRhcnkgaW5kZW50YXRpb24uCiMKIyAgICAgU3RydWN0dXJhbCBpbmRlbnRhdGlvbiBpcyBpbnRyb2R1Y2VkIGJ5IHRva2VucyBvZiB0eXBlICd7JywgYWx0aG91Z2gKIyAgICAgdGhlIGFjdHVhbCB0b2tlbnMgbWlnaHQgYmUgJ3snLCAnKCcsIG9yICdbJy4gIFN0cnVjdHVyYWwgaW5kZW50YXRpb24KIyAgICAgaXMgb2YgdHdvIHR5cGVzOiBCTE9DSyBhbmQgbm9uLUJMT0NLLiAgRGVmYXVsdCBzdHJ1Y3R1cmFsIGluZGVudGF0aW9uCiMgICAgIGlzIDQgY2hhcmFjdGVycyBpZiB0aGUgc3RhbmRhcmQgaW5kZW50YXRpb24gc2NoZW1lIGlzIHVzZWQuCiMKIyAgICAgQ29udGludWF0aW9uIGluZGVudGF0aW9uIGlzIGludHJvZHVjZWQgd2hlbmV2ZXIgYSBsaW5lIGF0IEJMT0NLIGxldmVsCiMgICAgIGlzIGJyb2tlbiBiZWZvcmUgaXRzIHRlcm1pbmF0aW9uLiAgRGVmYXVsdCBjb250aW51YXRpb24gaW5kZW50YXRpb24KIyAgICAgaXMgMiBjaGFyYWN0ZXJzIGluIHRoZSBzdGFuZGFyZCBpbmRlbnRhdGlvbiBzY2hlbWUuCiMKIyAgICAgQm90aCB0eXBlcyBvZiBpbmRlbnRhdGlvbiBtYXkgYmUgbmVzdGVkIGFyYml0cmFyaWx5IGRlZXAgYW5kCiMgICAgIGludGVybGFjZWQuICBUaGUgZGlzdGluY3Rpb24gYmV0d2VlbiB0aGUgdHdvIGlzIHNvbWV3aGF0IGFyYml0cmFyeS4KIwojICAgICBGb3IgZWFjaCB0b2tlbiwgd2Ugd2lsbCBkZWZpbmUgdHdvIHZhcmlhYmxlcyB3aGljaCB3b3VsZCBhcHBseSBpZgojICAgICB0aGUgY3VycmVudCBzdGF0ZW1lbnQgd2VyZSBicm9rZW4ganVzdCBiZWZvcmUgdGhhdCB0b2tlbiwgc28gdGhhdAojICAgICB0aGF0IHRva2VuIHN0YXJ0ZWQgYSBuZXcgbGluZToKIwojICAgICAkbGV2ZWwgPSB0aGUgc3RydWN0dXJhbCBpbmRlbnRhdGlvbiBsZXZlbCwKIyAgICAgJGNpX2xldmVsID0gdGhlIGNvbnRpbnVhdGlvbiBpbmRlbnRhdGlvbiBsZXZlbAojCiMgICAgIFRoZSB0b3RhbCBpbmRlbnRhdGlvbiB3aWxsIGJlICRsZXZlbCAqICg0IHNwYWNlcykgKyAkY2lfbGV2ZWwgKiAoMiBzcGFjZXMpLAojICAgICBhc3N1bWluZyBkZWZhdWx0cy4gIEhvd2V2ZXIsIGluIHNvbWUgc3BlY2lhbCBjYXNlcyBpdCBpcyBjdXN0b21hcnkKIyAgICAgdG8gbW9kaWZ5ICRjaV9sZXZlbCBmcm9tIHRoaXMgc3RyaWN0IHZhbHVlLgojCiMgICAgIFRoZSB0b3RhbCBzdHJ1Y3R1cmFsIGluZGVudGF0aW9uIGlzIGVhc3kgdG8gY29tcHV0ZSBieSBhZGRpbmcgYW5kCiMgICAgIHN1YnRyYWN0aW5nIDEgZnJvbSBhIHNhdmVkIHZhbHVlIGFzIHR5cGVzICd7JyBhbmQgJ30nIGFyZSBzZWVuLiAgVGhlCiMgICAgIHJ1bm5pbmcgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBpcyAkbGV2ZWxfaW5fdG9rZW5pemVyLgojCiMgICAgIFRoZSB0b3RhbCBjb250aW51YXRpb24gaXMgbXVjaCBtb3JlIGRpZmZpY3VsdCB0byBjb21wdXRlLCBhbmQgcmVxdWlyZXMKIyAgICAgc2V2ZXJhbCB2YXJpYWJsZXMuICBUaGVzZSB2YXJpYWJsZXMgYXJlOgojCiMgICAgICRjaV9zdHJpbmdfaW5fdG9rZW5pemVyID0gYSBzdHJpbmcgb2YgMSdzIGFuZCAwJ3MgaW5kaWNhdGluZywgZm9yCiMgICAgICAgZWFjaCBpbmRlbnRhdGlvbiBsZXZlbCwgaWYgdGhlcmUgYXJlIGludGVydmVuaW5nIG9wZW4gc2Vjb25kYXJ5CiMgICAgICAgc3RydWN0dXJlcyBqdXN0IHByaW9yIHRvIHRoYXQgbGV2ZWwuCiMgICAgICRjb250aW51YXRpb25fc3RyaW5nX2luX3Rva2VuaXplciA9IGEgc3RyaW5nIG9mIDEncyBhbmQgMCdzIGluZGljYXRpbmcKIyAgICAgICBpZiB0aGUgbGFzdCB0b2tlbiBhdCB0aGF0IGxldmVsIGlzICJjb250aW51ZWQiLCBtZWFuaW5nIHRoYXQgaXQKIyAgICAgICBpcyBub3QgdGhlIGZpcnN0IHRva2VuIG9mIGFuIGV4cHJlc3Npb24uCiMgICAgICRuZXN0aW5nX2Jsb2NrX3N0cmluZyA9IGEgc3RyaW5nIG9mIDEncyBhbmQgMCdzIGluZGljYXRpbmcsIGZvciBlYWNoCiMgICAgICAgaW5kZW50YXRpb24gbGV2ZWwsIGlmIHRoZSBsZXZlbCBpcyBvZiB0eXBlIEJMT0NLIG9yIG5vdC4KIyAgICAgJG5lc3RpbmdfYmxvY2tfZmxhZyA9IHRoZSBtb3N0IHJlY2VudCAxIG9yIDAgb2YgJG5lc3RpbmdfYmxvY2tfc3RyaW5nCiMgICAgICRuZXN0aW5nX2xpc3Rfc3RyaW5nID0gYSBzdHJpbmcgb2YgMSdzIGFuZCAwJ3MgaW5kaWNhdGluZywgZm9yIGVhY2gKIyAgICAgICBpbmRlbnRhdGlvbiBsZXZlbCwgaWYgaXQgaXMgYXBwcm9wcmlhdGUgZm9yIGxpc3QgZm9ybWF0dGluZy4KIyAgICAgICBJZiBzbywgY29udGludWF0aW9uIGluZGVudGF0aW9uIGlzIHVzZWQgdG8gaW5kZW50IGxvbmcgbGlzdCBpdGVtcy4KIyAgICAgJG5lc3RpbmdfbGlzdF9mbGFnID0gdGhlIG1vc3QgcmVjZW50IDEgb3IgMCBvZiAkbmVzdGluZ19saXN0X3N0cmluZwojICAgICBAeyRyc2xldmVsX3N0YWNrfSA9IGEgc3RhY2sgb2YgdG90YWwgbmVzdGluZyBkZXB0aHMgYXQgZWFjaAojICAgICAgIHN0cnVjdHVyYWwgaW5kZW50YXRpb24gbGV2ZWwsIHdoZXJlICJ0b3RhbCBuZXN0aW5nIGRlcHRoIiBtZWFucwojICAgICAgIHRoZSBuZXN0aW5nIGRlcHRoIHRoYXQgd291bGQgb2NjdXIgaWYgZXZlcnkgbmVzdGluZyB0b2tlbiAtLSAneycsICdbJywKIyAgICAgICBhbmQgJygnIC0tICwgcmVnYXJkbGVzcyBvZiBjb250ZXh0LCBpcyB1c2VkIHRvIGNvbXB1dGUgYSBuZXN0aW5nCiMgICAgICAgZGVwdGguCgogICAgICAgICNteSAkbmVzdGluZ19ibG9ja19mbGFnID0gKCRuZXN0aW5nX2Jsb2NrX3N0cmluZyA9fiAvMSQvKTsKICAgICAgICAjbXkgJG5lc3RpbmdfbGlzdF9mbGFnID0gKCRuZXN0aW5nX2xpc3Rfc3RyaW5nID1+IC8xJC8pOwoKICAgICAgICBteSAoICRjaV9zdHJpbmdfaSwgJGxldmVsX2ksICRuZXN0aW5nX2Jsb2NrX3N0cmluZ19pLAogICAgICAgICAgICAkbmVzdGluZ19saXN0X3N0cmluZ19pLCAkbmVzdGluZ190b2tlbl9zdHJpbmdfaSwKICAgICAgICAgICAgJG5lc3RpbmdfdHlwZV9zdHJpbmdfaSwgKTsKCiAgICAgICAgZm9yZWFjaCBteSAkaSAoIEB7JHJvdXRwdXRfdG9rZW5fbGlzdH0gKQogICAgICAgIHsgICAgIyBzY2FuIHRoZSBsaXN0IG9mIHByZS10b2tlbnMgaW5kZXhlcwoKICAgICAgICAgICAgIyBzZWxmLWNoZWNraW5nIGZvciB2YWxpZCB0b2tlbiB0eXBlcwogICAgICAgICAgICBteSAkdHlwZSAgICAgICAgICAgICAgICAgICAgPSAkcm91dHB1dF90b2tlbl90eXBlLT5bJGldOwogICAgICAgICAgICBteSAkZm9yY2VkX2luZGVudGF0aW9uX2ZsYWcgPSAkcm91dHB1dF9pbmRlbnRfZmxhZy0+WyRpXTsKCiAgICAgICAgICAgICMgU2VlIGlmIHdlIHNob3VsZCB1bmRvIHRoZSAkZm9yY2VkX2luZGVudGF0aW9uX2ZsYWcuCiAgICAgICAgICAgICMgRm9yY2VkIGluZGVudGF0aW9uIGFmdGVyICdpZicsICd1bmxlc3MnLCAnd2hpbGUnIGFuZCAndW50aWwnCiAgICAgICAgICAgICMgZXhwcmVzc2lvbnMgd2l0aG91dCB0cmFpbGluZyBwYXJlbnMgaXMgb3B0aW9uYWwgYW5kIGRvZXNuJ3QKICAgICAgICAgICAgIyBhbHdheXMgbG9vayBnb29kLiAgSXQgaXMgdXN1YWxseSBva2F5IGZvciBhIHRyYWlsaW5nIGxvZ2ljYWwKICAgICAgICAgICAgIyBleHByZXNzaW9uLCBidXQgaWYgdGhlIGV4cHJlc3Npb24gaXMgYSBmdW5jdGlvbiBjYWxsLCBjb2RlIGJsb2NrLAogICAgICAgICAgICAjIG9yIHNvbWUga2luZCBvZiBsaXN0IGl0IHB1dHMgaW4gYW4gdW53YW50ZWQgZXh0cmEgaW5kZW50YXRpb24KICAgICAgICAgICAgIyBsZXZlbCB3aGljaCBpcyBoYXJkIHRvIHJlbW92ZS4KICAgICAgICAgICAgIwogICAgICAgICAgICAjIEV4YW1wbGUgd2hlcmUgZXh0cmEgaW5kZW50YXRpb24gbG9va3Mgb2s6CiAgICAgICAgICAgICMgcmV0dXJuIDEKICAgICAgICAgICAgIyAgIGlmICRkZXRfYSA8IDAgYW5kICRkZXRfYiA+IDAKICAgICAgICAgICAgIyAgICAgICBvciAkZGV0X2EgPiAwIGFuZCAkZGV0X2IgPCAwOwogICAgICAgICAgICAjCiAgICAgICAgICAgICMgRXhhbXBsZSB3aGVyZSBleHRyYSBpbmRlbnRhdGlvbiBpcyBub3QgbmVlZGVkIGJlY2F1c2UKICAgICAgICAgICAgIyB0aGUgZXZhbCBicmFjZSBhbHNvIHByb3ZpZGVzIGluZGVudGF0aW9uOgogICAgICAgICAgICAjIHByaW50ICJub3QgIiBpZiBkZWZpbmVkIGV2YWwgewogICAgICAgICAgICAjICAgICByZWR1Y2UgeyBkaWUgaWYgJGIgPiAyOyAkYSArICRiIH0gMCwgMSwgMiwgMywgNDsKICAgICAgICAgICAgIyB9OwogICAgICAgICAgICAjCiAgICAgICAgICAgICMgVGhlIGZvbGxvd2luZyBydWxlIHdvcmtzIGZhaXJseSB3ZWxsOgogICAgICAgICAgICAjICAgVW5kbyB0aGUgZmxhZyBpZiB0aGUgZW5kIG9mIHRoaXMgbGluZSwgb3Igc3RhcnQgb2YgdGhlIG5leHQKICAgICAgICAgICAgIyAgIGxpbmUsIGlzIGFuIG9wZW5pbmcgY29udGFpbmVyIHRva2VuIG9yIGEgY29tbWEuCiAgICAgICAgICAgICMgVGhpcyBhbG1vc3QgYWx3YXlzIHdvcmtzLCBidXQgaWYgbm90IGFmdGVyIGFub3RoZXIgcGFzcyBpdCB3aWxsCiAgICAgICAgICAgICMgYmUgc3RhYmxlLgogICAgICAgICAgICBpZiAoICRmb3JjZWRfaW5kZW50YXRpb25fZmxhZyAmJiAkdHlwZSBlcSAnaycgKSB7CiAgICAgICAgICAgICAgICBteSAkaXhsYXN0ICA9IC0xOwogICAgICAgICAgICAgICAgbXkgJGlsYXN0ICAgPSAkcm91dHB1dF90b2tlbl9saXN0LT5bJGl4bGFzdF07CiAgICAgICAgICAgICAgICBteSAkdG9rbGFzdCA9ICRyb3V0cHV0X3Rva2VuX3R5cGUtPlskaWxhc3RdOwogICAgICAgICAgICAgICAgaWYgKCAkdG9rbGFzdCBlcSAnIycgKSB7CiAgICAgICAgICAgICAgICAgICAgJGl4bGFzdC0tOwogICAgICAgICAgICAgICAgICAgICRpbGFzdCAgID0gJHJvdXRwdXRfdG9rZW5fbGlzdC0+WyRpeGxhc3RdOwogICAgICAgICAgICAgICAgICAgICR0b2tsYXN0ID0gJHJvdXRwdXRfdG9rZW5fdHlwZS0+WyRpbGFzdF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoICR0b2tsYXN0IGVxICdiJyApIHsKICAgICAgICAgICAgICAgICAgICAkaXhsYXN0LS07CiAgICAgICAgICAgICAgICAgICAgJGlsYXN0ICAgPSAkcm91dHB1dF90b2tlbl9saXN0LT5bJGl4bGFzdF07CiAgICAgICAgICAgICAgICAgICAgJHRva2xhc3QgPSAkcm91dHB1dF90b2tlbl90eXBlLT5bJGlsYXN0XTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICggJHRva2xhc3QgPX4gL15bXHssXSQvICkgewogICAgICAgICAgICAgICAgICAgICRmb3JjZWRfaW5kZW50YXRpb25fZmxhZyA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAoICR0b2tsYXN0LCBteSAkaV9uZXh0ICkgPQogICAgICAgICAgICAgICAgICAgICAgZmluZF9uZXh0X25vbmJsYW5rX3Rva2VuKCAkbWF4X3Rva2VuX2luZGV4LCAkcnRva2VucywKICAgICAgICAgICAgICAgICAgICAgICAgJG1heF90b2tlbl9pbmRleCApOwogICAgICAgICAgICAgICAgICAgIGlmICggJHRva2xhc3QgPX4gL15bXHssXSQvICkgewogICAgICAgICAgICAgICAgICAgICAgICAkZm9yY2VkX2luZGVudGF0aW9uX2ZsYWcgPSAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBpZiB3ZSBhcmUgYWxyZWFkeSBpbiBhbiBpbmRlbnRlZCBpZiwgc2VlIGlmIHdlIHNob3VsZCBvdXRkZW50CiAgICAgICAgICAgIGlmICgkaW5kZW50ZWRfaWZfbGV2ZWwpIHsKCiAgICAgICAgICAgICAgICAjIGRvbid0IHRyeSB0byBuZXN0IHRyYWlsaW5nIGlmJ3MgLSBzaG91bGRuJ3QgaGFwcGVuCiAgICAgICAgICAgICAgICBpZiAoICR0eXBlIGVxICdrJyApIHsKICAgICAgICAgICAgICAgICAgICAkZm9yY2VkX2luZGVudGF0aW9uX2ZsYWcgPSAwOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgY2hlY2sgZm9yIHRoZSBub3JtYWwgY2FzZSAtIG91dGRlbnRpbmcgYXQgbmV4dCAnOycKICAgICAgICAgICAgICAgIGVsc2lmICggJHR5cGUgZXEgJzsnICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJGxldmVsX2luX3Rva2VuaXplciA9PSAkaW5kZW50ZWRfaWZfbGV2ZWwgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmb3JjZWRfaW5kZW50YXRpb25fZmxhZyA9IC0xOwogICAgICAgICAgICAgICAgICAgICAgICAkaW5kZW50ZWRfaWZfbGV2ZWwgICAgICAgPSAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGhhbmRsZSBjYXNlIG9mIG1pc3Npbmcgc2VtaWNvbG9uCiAgICAgICAgICAgICAgICBlbHNpZiAoICR0eXBlIGVxICd9JyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRsZXZlbF9pbl90b2tlbml6ZXIgPT0gJGluZGVudGVkX2lmX2xldmVsICkgewogICAgICAgICAgICAgICAgICAgICAgICAkaW5kZW50ZWRfaWZfbGV2ZWwgPSAwOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBUQkQ6IFRoaXMgY291bGQgYmUgYSBzdWJyb3V0aW5lIGNhbGwKICAgICAgICAgICAgICAgICAgICAgICAgJGxldmVsX2luX3Rva2VuaXplci0tOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIEB7JHJzbGV2ZWxfc3RhY2t9ID4gMSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcCggQHskcnNsZXZlbF9zdGFja30gKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGxlbmd0aCgkbmVzdGluZ19ibG9ja19zdHJpbmcpID4gMSApCiAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgIyB0cnVlIGZvciB2YWxpZCBzY3JpcHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNob3AgJG5lc3RpbmdfYmxvY2tfc3RyaW5nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hvcCAkbmVzdGluZ19saXN0X3N0cmluZzsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICR0b2sgPSAkcnRva2Vucy0+WyRpXTsgICMgdGhlIHRva2VuLCBidXQgT05MWSBpZiBzYW1lIGFzIHByZXRva2VuCiAgICAgICAgICAgICRsZXZlbF9pID0gJGxldmVsX2luX3Rva2VuaXplcjsKCiAgICAgICAgICAgICMgVGhpcyBjYW4gaGFwcGVuIGJ5IHJ1bm5pbmcgcGVybHRpZHkgb24gbm9uLXNjcmlwdHMKICAgICAgICAgICAgIyBhbHRob3VnaCBpdCBjb3VsZCBhbHNvIGJlIGJ1ZyBpbnRyb2R1Y2VkIGJ5IHByb2dyYW1taW5nIGNoYW5nZS4KICAgICAgICAgICAgIyBQZXJsIHNpbGVudGx5IGFjY2VwdHMgYSAwMzIgKF5aKSBhbmQgdGFrZXMgaXQgYXMgdGhlIGVuZAogICAgICAgICAgICBpZiAoICEkaXNfdmFsaWRfdG9rZW5fdHlwZXskdHlwZX0gKSB7CiAgICAgICAgICAgICAgICBteSAkdmFsID0gb3JkKCR0eXBlKTsKICAgICAgICAgICAgICAgIHdhcm5pbmcoCiAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgY2hhcmFjdGVyIGRlY2ltYWwgJHZhbCAoJHR5cGUpIGluIHNjcmlwdFxuIik7CiAgICAgICAgICAgICAgICAkdG9rZW5pemVyX3NlbGYtPltfaW5fZXJyb3JfXSA9IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAjIFRPS0VOIFRZUEUgUEFUQ0hFUwogICAgICAgICAgICAjICBvdXRwdXQgX19FTkRfXywgX19EQVRBX18sIGFuZCBmb3JtYXQgYXMgdHlwZSAnaycgaW5zdGVhZCBvZiAnOycKICAgICAgICAgICAgIyB0byBtYWtlIGh0bWwgY29sb3JzIGNvcnJlY3QsIGV0Yy4KICAgICAgICAgICAgbXkgJGZpeF90eXBlID0gJHR5cGU7CiAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJzsnICYmICR0b2sgPX4gL1x3LyApIHsgJGZpeF90eXBlID0gJ2snIH0KCiAgICAgICAgICAgICMgb3V0cHV0IGFub255bW91cyAnc3ViJyBhcyBrZXl3b3JkCiAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJ3QnICYmICRpc19zdWJ7JHRva30gKSB7ICRmaXhfdHlwZSA9ICdrJyB9CgogICAgICAgICAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAgICAgICAkbmVzdGluZ190b2tlbl9zdHJpbmdfaSA9ICRuZXN0aW5nX3Rva2VuX3N0cmluZzsKICAgICAgICAgICAgJG5lc3RpbmdfdHlwZV9zdHJpbmdfaSAgPSAkbmVzdGluZ190eXBlX3N0cmluZzsKICAgICAgICAgICAgJG5lc3RpbmdfYmxvY2tfc3RyaW5nX2kgPSAkbmVzdGluZ19ibG9ja19zdHJpbmc7CiAgICAgICAgICAgICRuZXN0aW5nX2xpc3Rfc3RyaW5nX2kgID0gJG5lc3RpbmdfbGlzdF9zdHJpbmc7CgogICAgICAgICAgICAjIHNldCBwcmltYXJ5IGluZGVudGF0aW9uIGxldmVscyBiYXNlZCBvbiBzdHJ1Y3R1cmFsIGJyYWNlcwogICAgICAgICAgICAjIE5vdGU6IHRoZXNlIGFyZSBzZXQgc28gdGhhdCB0aGUgbGVhZGluZyBicmFjZXMgaGF2ZSBhIEhJR0hFUgogICAgICAgICAgICAjIGxldmVsIHRoYW4gdGhlaXIgQ09OVEVOVFMsIHdoaWNoIGlzIGNvbnZlbmllbnQgZm9yIGluZGVudGF0aW9uCiAgICAgICAgICAgICMgQWxzbywgZGVmaW5lIGNvbnRpbnVhdGlvbiBpbmRlbnRhdGlvbiBmb3IgZWFjaCB0b2tlbi4KICAgICAgICAgICAgaWYgKCAkdHlwZSBlcSAneycgfHwgJHR5cGUgZXEgJ0wnIHx8ICRmb3JjZWRfaW5kZW50YXRpb25fZmxhZyA+IDAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgIyB1c2UgZW52aXJvbm1lbnQgYmVmb3JlIHVwZGF0aW5nCiAgICAgICAgICAgICAgICAkY29udGFpbmVyX2Vudmlyb25tZW50ID0KICAgICAgICAgICAgICAgICAgICAkbmVzdGluZ19ibG9ja19mbGFnID8gJ0JMT0NLJwogICAgICAgICAgICAgICAgICA6ICRuZXN0aW5nX2xpc3RfZmxhZyAgPyAnTElTVCcKICAgICAgICAgICAgICAgICAgOiAgICAgICAgICAgICAgICAgICAgICAgIiI7CgogICAgICAgICAgICAgICAgIyBpZiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRvdGFsIG5lc3RpbmcgbGV2ZWxzIGlzIG5vdCAxLAogICAgICAgICAgICAgICAgIyB0aGVyZSBhcmUgaW50ZXJ2ZW5pbmcgbm9uLXN0cnVjdHVyYWwgbmVzdGluZyB0eXBlcyBiZXR3ZWVuCiAgICAgICAgICAgICAgICAjIHRoaXMgJ3snIGFuZCB0aGUgcHJldmlvdXMgdW5jbG9zZWQgJ3snCiAgICAgICAgICAgICAgICBteSAkaW50ZXJ2ZW5pbmdfc2Vjb25kYXJ5X3N0cnVjdHVyZSA9IDA7CiAgICAgICAgICAgICAgICBpZiAoIEB7JHJzbGV2ZWxfc3RhY2t9ICkgewogICAgICAgICAgICAgICAgICAgICRpbnRlcnZlbmluZ19zZWNvbmRhcnlfc3RydWN0dXJlID0KICAgICAgICAgICAgICAgICAgICAgICRzbGV2ZWxfaW5fdG9rZW5pemVyIC0gJHJzbGV2ZWxfc3RhY2stPlstMV07CiAgICAgICAgICAgICAgICB9CgogICAgICMgQ29udGludWF0aW9uIEluZGVudGF0aW9uCiAgICAgIwogICAgICMgSGF2aW5nIHRyaWVkIHNldHRpbmcgY29udGludWF0aW9uIGluZGVudGF0aW9uIGJvdGggaW4gdGhlIGZvcm1hdHRlciBhbmQKICAgICAjIGluIHRoZSB0b2tlbml6ZXIsIEkgY2FuIHNheSB0aGF0IHNldHRpbmcgaXQgaW4gdGhlIHRva2VuaXplciBpcyBtdWNoLAogICAgICMgbXVjaCBlYXNpZXIuICBUaGUgZm9ybWF0dGVyIGFscmVhZHkgaGFzIHRvbyBtdWNoIHRvIGRvLCBhbmQgY2FuJ3QKICAgICAjIG1ha2UgZGVjaXNpb25zIG9uIGxpbmUgYnJlYWtzIHdpdGhvdXQga25vd2luZyB3aGF0ICdjaScgd2lsbCBiZSBhdAogICAgICMgYXJiaXRyYXJ5IGxvY2F0aW9ucy4KICAgICAjCiAgICAgIyBCdXQgYSBwcm9ibGVtIHdpdGggc2V0dGluZyB0aGUgY29udGludWF0aW9uIGluZGVudGF0aW9uIChjaSkgaGVyZQogICAgICMgaW4gdGhlIHRva2VuaXplciBpcyB0aGF0IHdlIGRvIG5vdCBrbm93IHdoZXJlIGxpbmUgYnJlYWtzIHdpbGwgYWN0dWFsbHkKICAgICAjIGJlLiAgQXMgYSByZXN1bHQsIHdlIGRvbid0IGtub3cgaWYgd2Ugc2hvdWxkIHByb3BhZ2F0ZSBjb250aW51YXRpb24KICAgICAjIGluZGVudGF0aW9uIHRvIGhpZ2hlciBsZXZlbHMgb2Ygc3RydWN0dXJlLgogICAgICMKICAgICAjIEZvciBuZXN0aW5nIG9mIG9ubHkgc3RydWN0dXJhbCBpbmRlbnRhdGlvbiwgd2UgbmV2ZXIgbmVlZCB0byBkbyB0aGlzLgogICAgICMgRm9yIGV4YW1wbGUsIGluIGEgbG9uZyBpZiBzdGF0ZW1lbnQsIGxpa2UgdGhpcwogICAgICMKICAgICAjICAgaWYgKCAhJG91dHB1dF9ibG9ja190eXBlWyRpXQogICAgICMgICAgICYmICgkaW5fc3RhdGVtZW50X2NvbnRpbnVhdGlvbikgKQogICAgICMgICB7ICAgICAgICAgICA8LS1vdXRkZW50ZWQKICAgICAjICAgICAgIGRvX3NvbWV0aGluZygpOwogICAgICMgICB9CiAgICAgIwogICAgICMgdGhlIHNlY29uZCBsaW5lIGhhcyBjaSBidXQgd2UgZG8gbm9ybWFsbHkgZ2l2ZSB0aGUgbGluZXMgd2l0aGluIHRoZSBCTE9DSwogICAgICMgYW55IGNpLiAgVGhpcyB3b3VsZCBiZSB0cnVlIGlmIHdlIGhhZCBibG9ja3MgbmVzdGVkIGFyYml0cmFyaWx5IGRlZXBseS4KICAgICAjCiAgICAgIyBCdXQgY29uc2lkZXIgc29tZXRoaW5nIGxpa2UgdGhpcywgd2hlcmUgd2UgaGF2ZSBjcmVhdGVkIGEgYnJlYWsgYWZ0ZXIKICAgICAjIGFuIG9wZW5pbmcgcGFyZW4gb24gbGluZSAxLCBhbmQgdGhlIHBhcmVuIGlzIG5vdCAoY3VycmVudGx5KSBhCiAgICAgIyBzdHJ1Y3R1cmFsIGluZGVudGF0aW9uIHRva2VuOgogICAgICMKICAgICAjIG15ICRmaWxlID0gJG1lbnViYXItPk1lbnVidXR0b24oCiAgICAgIyAgIHF3Ly10ZXh0IEZpbGUgLXVuZGVybGluZSAwIC1tZW51aXRlbXMvID0+IFsKICAgICAjICAgICAgIFsKICAgICAjICAgICAgICAgICBDYXNjYWRlICAgID0+ICd+VmlldycsCiAgICAgIyAgICAgICAgICAgLW1lbnVpdGVtcyA9PiBbCiAgICAgIyAgICAgICAgICAgLi4uCiAgICAgIwogICAgICMgVGhlIHNlY29uZCBsaW5lIGhhcyBjaSwgc28gaXQgd291bGQgc2VlbSByZWFzb25hYmxlIHRvIHByb3BhZ2F0ZSBpdAogICAgICMgZG93biwgZ2l2aW5nIHRoZSB0aGlyZCBsaW5lIDEgY2kgKyAxIGluZGVudGF0aW9uLiAgVGhpcyBzdWdnZXN0cyB0aGUKICAgICAjIGZvbGxvd2luZyBydWxlLCB3aGljaCBpcyBjdXJyZW50bHkgdXNlZCB0byBwcm9wYWdhdGluZyBjaSBkb3duOiBpZiB0aGVyZQogICAgICMgYXJlIGFueSBub24tc3RydWN0dXJhbCBvcGVuaW5nIHBhcmVucyAob3IgYnJhY2tldHMsIG9yIGJyYWNlcyksIGJlZm9yZQogICAgICMgYW4gb3BlbmluZyBzdHJ1Y3R1cmFsIGJyYWNlLCB0aGVuIGNpIGlzIHByb3BhZ2F0ZWQgZG93biwgYW5kIG90aGVyd2lzZQogICAgICMgbm90LiAgVGhlIHZhcmlhYmxlICRpbnRlcnZlbmluZ19zZWNvbmRhcnlfc3RydWN0dXJlIGNvbnRhaW5zIHRoaXMKICAgICAjIGluZm9ybWF0aW9uIGZvciB0aGUgY3VycmVudCB0b2tlbiwgYW5kIHRoZSBzdHJpbmcKICAgICAjICIkY2lfc3RyaW5nX2luX3Rva2VuaXplciIgaXMgYSBzdGFjayBvZiBwcmV2aW91cyB2YWx1ZXMgb2YgdGhpcwogICAgICMgdmFyaWFibGUuCgogICAgICAgICAgICAgICAgIyBzYXZlIHRoZSBjdXJyZW50IHN0YXRlcwogICAgICAgICAgICAgICAgcHVzaCggQHskcnNsZXZlbF9zdGFja30sIDEgKyAkc2xldmVsX2luX3Rva2VuaXplciApOwogICAgICAgICAgICAgICAgJGxldmVsX2luX3Rva2VuaXplcisrOwoKICAgICAgICAgICAgICAgIGlmICggJGxldmVsX2luX3Rva2VuaXplciA+ICR0b2tlbml6ZXJfc2VsZi0+W19tYXhpbXVtX2xldmVsX10gKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+W19tYXhpbXVtX2xldmVsX10gPSAkbGV2ZWxfaW5fdG9rZW5pemVyOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkZm9yY2VkX2luZGVudGF0aW9uX2ZsYWcpIHsKCiAgICAgICAgICAgICAgICAgICAgIyBicmVhayBCRUZPUkUgJz8nIHdoZW4gdGhlcmUgaXMgZm9yY2VkIGluZGVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkdHlwZSBlcSAnPycgKSB7ICRsZXZlbF9pID0gJGxldmVsX2luX3Rva2VuaXplcjsgfQogICAgICAgICAgICAgICAgICAgIGlmICggJHR5cGUgZXEgJ2snICkgewogICAgICAgICAgICAgICAgICAgICAgICAkaW5kZW50ZWRfaWZfbGV2ZWwgPSAkbGV2ZWxfaW5fdG9rZW5pemVyOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBkbyBub3QgY2hhbmdlIGNvbnRhaW5lciBlbnZpcm9ubWVudCBoZXJlIGlmIHdlIGFyZSBub3QKICAgICAgICAgICAgICAgICAgICAjIGF0IGEgcmVhbCBsaXN0LiBBZGRpbmcgdGhpcyBjaGVjayBwcmV2ZW50cyAiYmxpbmtlcnMiCiAgICAgICAgICAgICAgICAgICAgIyBvZnRlbiBuZWFyICd1bmxlc3MiIGNsYXVzZXMsIHN1Y2ggYXMgaW4gdGhlIGZvbGxvd2luZwogICAgICAgICAgICAgICAgICAgICMgY29kZToKIyMgICAgICAgICAgbmV4dAojIyAgICAgICAgICAgIHVubGVzcyAtZSAoCiMjICAgICAgICAgICAgICAgICAgICAkYXJjaGl2ZSA9CiMjICAgICAgICAgICAgICAgICAgICAgIEZpbGU6OlNwZWMtPmNhdGRpciggJF8sICJhdXRvIiwgJHJvb3QsICIkc3ViJGxpYl9leHQiICkKIyMgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkbmVzdGluZ19ibG9ja19zdHJpbmcgLj0gIiRuZXN0aW5nX2Jsb2NrX2ZsYWciOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgIGlmICggJHJvdXRwdXRfYmxvY2tfdHlwZS0+WyRpXSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG5lc3RpbmdfYmxvY2tfZmxhZyA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICRuZXN0aW5nX2Jsb2NrX3N0cmluZyAuPSAnMSc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkbmVzdGluZ19ibG9ja19mbGFnID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgJG5lc3RpbmdfYmxvY2tfc3RyaW5nIC49ICcwJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB3ZSB3aWxsIHVzZSBjb250aW51YXRpb24gaW5kZW50YXRpb24gd2l0aGluIGNvbnRhaW5lcnMKICAgICAgICAgICAgICAgICMgd2hpY2ggYXJlIG5vdCBibG9ja3MgYW5kIG5vdCBsb2dpY2FsIGV4cHJlc3Npb25zCiAgICAgICAgICAgICAgICBteSAkYml0ID0gMDsKICAgICAgICAgICAgICAgIGlmICggISRyb3V0cHV0X2Jsb2NrX3R5cGUtPlskaV0gKSB7CgogICAgICAgICAgICAgICAgICAgICMgcHJvcGFnYXRlIGZsYWcgZG93biBhdCBuZXN0ZWQgb3BlbiBwYXJlbnMKICAgICAgICAgICAgICAgICAgICBpZiAoICRyb3V0cHV0X2NvbnRhaW5lcl90eXBlLT5bJGldIGVxICcoJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGJpdCA9IDEgaWYgJG5lc3RpbmdfbGlzdF9mbGFnOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICMgdXNlIGxpc3QgY29udGludWF0aW9uIGlmIG5vdCBhIGxvZ2ljYWwgZ3JvdXBpbmcKICAgICAgICAgICAgICAgICAgIyAvXihpZnxlbHNpZnx1bmxlc3N8d2hpbGV8YW5kfG9yfG5vdHwmJnwhfFx8XHx8Zm9yfGZvcmVhY2gpJC8KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGJpdCA9IDEKICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAkaXNfbG9naWNhbF9jb250YWluZXJ7ICRyb3V0cHV0X2NvbnRhaW5lcl90eXBlLT5bJGldCiAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkbmVzdGluZ19saXN0X3N0cmluZyAuPSAkYml0OwogICAgICAgICAgICAgICAgJG5lc3RpbmdfbGlzdF9mbGFnID0gJGJpdDsKCiAgICAgICAgICAgICAgICAkY2lfc3RyaW5nX2luX3Rva2VuaXplciAuPQogICAgICAgICAgICAgICAgICAoICRpbnRlcnZlbmluZ19zZWNvbmRhcnlfc3RydWN0dXJlICE9IDAgKSA/ICcxJyA6ICcwJzsKICAgICAgICAgICAgICAgICRjaV9zdHJpbmdfc3VtID0KICAgICAgICAgICAgICAgICAgKCBteSAkc3RyID0gJGNpX3N0cmluZ19pbl90b2tlbml6ZXIgKSA9fiB0ci8xLzAvOwogICAgICAgICAgICAgICAgJGNvbnRpbnVhdGlvbl9zdHJpbmdfaW5fdG9rZW5pemVyIC49CiAgICAgICAgICAgICAgICAgICggJGluX3N0YXRlbWVudF9jb250aW51YXRpb24gPiAwICkgPyAnMScgOiAnMCc7CgogICAjICBTb21ldGltZXMgd2Ugd2FudCB0byBnaXZlIGFuIG9wZW5pbmcgYnJhY2UgY29udGludWF0aW9uIGluZGVudGF0aW9uLAogICAjICBhbmQgc29tZXRpbWVzIG5vdC4gIEZvciBjb2RlIGJsb2Nrcywgd2UgZG9uJ3QgZG8gaXQsIHNvIHRoYXQgdGhlIGxlYWRpbmcKICAgIyAgJ3snIGdldHMgb3V0ZGVudGVkLCBsaWtlIHRoaXM6CiAgICMKICAgIyAgIGlmICggISRvdXRwdXRfYmxvY2tfdHlwZVskaV0KICAgIyAgICAgJiYgKCRpbl9zdGF0ZW1lbnRfY29udGludWF0aW9uKSApCiAgICMgICB7ICAgICAgICAgICA8LS1vdXRkZW50ZWQKICAgIwogICAjICBGb3Igb3RoZXIgdHlwZXMsIHdlIHdpbGwgZ2l2ZSB0aGVtIGNvbnRpbnVhdGlvbiBpbmRlbnRhdGlvbi4gIEZvciBleGFtcGxlLAogICAjICBoZXJlIGlzIGhvdyBhIGxpc3QgbG9va3Mgd2l0aCB0aGUgb3BlbmluZyBwYXJlbiBpbmRlbnRlZDoKICAgIwogICAjICAgICBATG9MID0KICAgIyAgICAgICAoIFsgImZyZWQiLCAiYmFybmV5IiBdLCBbICJnZW9yZ2UiLCAiamFuZSIsICJlbHJveSIgXSwKICAgIyAgICAgICAgIFsgImhvbWVyIiwgIm1hcmdlIiwgImJhcnQiIF0sICk7CiAgICMKICAgIyAgVGhpcyBsb29rcyBiZXN0IHdoZW4gJ2NpJyBpcyBvbmUtaGFsZiBvZiB0aGUgaW5kZW50YXRpb24gIChpLmUuLCAyIGFuZCA0KQoKICAgICAgICAgICAgICAgIG15ICR0b3RhbF9jaSA9ICRjaV9zdHJpbmdfc3VtOwogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICEkcm91dHB1dF9ibG9ja190eXBlLT5bJGldICAgICMgcGF0Y2g6IHNraXAgZm9yIEJMT0NLCiAgICAgICAgICAgICAgICAgICAgJiYgKCRpbl9zdGF0ZW1lbnRfY29udGludWF0aW9uKQogICAgICAgICAgICAgICAgICAgICYmICEoICRmb3JjZWRfaW5kZW50YXRpb25fZmxhZyAmJiAkdHlwZSBlcSAnOicgKQogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJHRvdGFsX2NpICs9ICRpbl9zdGF0ZW1lbnRfY29udGludWF0aW9uCiAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgKCBzdWJzdHIoICRjaV9zdHJpbmdfaW5fdG9rZW5pemVyLCAtMSApIGVxICcxJyApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRjaV9zdHJpbmdfaSAgICAgICAgICAgICAgID0gJHRvdGFsX2NpOwogICAgICAgICAgICAgICAgJGluX3N0YXRlbWVudF9jb250aW51YXRpb24gPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICBlbHNpZiAoJHR5cGUgZXEgJ30nCiAgICAgICAgICAgICAgICB8fCAkdHlwZSBlcSAnUicKICAgICAgICAgICAgICAgIHx8ICRmb3JjZWRfaW5kZW50YXRpb25fZmxhZyA8IDAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgIyBvbmx5IGEgbmVzdGluZyBlcnJvciBpbiB0aGUgc2NyaXB0IHdvdWxkIHByZXZlbnQgcG9wcGluZyBoZXJlCiAgICAgICAgICAgICAgICBpZiAoIEB7JHJzbGV2ZWxfc3RhY2t9ID4gMSApIHsgcG9wKCBAeyRyc2xldmVsX3N0YWNrfSApOyB9CgogICAgICAgICAgICAgICAgJGxldmVsX2kgPSAtLSRsZXZlbF9pbl90b2tlbml6ZXI7CgogICAgICAgICAgICAgICAgIyByZXN0b3JlIHByZXZpb3VzIGxldmVsIHZhbHVlcwogICAgICAgICAgICAgICAgaWYgKCBsZW5ndGgoJG5lc3RpbmdfYmxvY2tfc3RyaW5nKSA+IDEgKQogICAgICAgICAgICAgICAgeyAgICAjIHRydWUgZm9yIHZhbGlkIHNjcmlwdAogICAgICAgICAgICAgICAgICAgIGNob3AgJG5lc3RpbmdfYmxvY2tfc3RyaW5nOwogICAgICAgICAgICAgICAgICAgICRuZXN0aW5nX2Jsb2NrX2ZsYWcgPQogICAgICAgICAgICAgICAgICAgICAgc3Vic3RyKCAkbmVzdGluZ19ibG9ja19zdHJpbmcsIC0xICkgZXEgJzEnOwogICAgICAgICAgICAgICAgICAgIGNob3AgJG5lc3RpbmdfbGlzdF9zdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgJG5lc3RpbmdfbGlzdF9mbGFnID0KICAgICAgICAgICAgICAgICAgICAgIHN1YnN0ciggJG5lc3RpbmdfbGlzdF9zdHJpbmcsIC0xICkgZXEgJzEnOwoKICAgICAgICAgICAgICAgICAgICBjaG9wICRjaV9zdHJpbmdfaW5fdG9rZW5pemVyOwogICAgICAgICAgICAgICAgICAgICRjaV9zdHJpbmdfc3VtID0KICAgICAgICAgICAgICAgICAgICAgICggbXkgJHN0ciA9ICRjaV9zdHJpbmdfaW5fdG9rZW5pemVyICkgPX4gdHIvMS8wLzsKCiAgICAgICAgICAgICAgICAgICAgJGluX3N0YXRlbWVudF9jb250aW51YXRpb24gPQogICAgICAgICAgICAgICAgICAgICAgY2hvcCAkY29udGludWF0aW9uX3N0cmluZ19pbl90b2tlbml6ZXI7CgogICAgICAgICAgICAgICAgICAgICMgemVybyBjb250aW51YXRpb24gZmxhZyBhdCB0ZXJtaW5hbCBCTE9DSyAnfScgd2hpY2gKICAgICAgICAgICAgICAgICAgICAjIGVuZHMgYSBzdGF0ZW1lbnQuCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkcm91dHB1dF9ibG9ja190eXBlLT5bJGldICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyAuLi5UaGVzZSBpbmNsdWRlIG5vbi1hbm9ueW1vdXMgc3VicwogICAgICAgICAgICAgICAgICAgICAgICAjIG5vdGU6IGNvdWxkIGJlIHN1YiA6OmFiYyB7IG9yIHN1YiAnYWJjCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJHJvdXRwdXRfYmxvY2tfdHlwZS0+WyRpXSA9fiBtL15zdWJccyovZ2MgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgIyBub3RlOiBvbGRlciB2ZXJzaW9ucyBvZiBwZXJsIHJlcXVpcmUgdGhlIC9nYyBtb2RpZmllcgogICAgICAgICAgICAgICAgICAgICAgICAgIyBoZXJlIG9yIGVsc2UgdGhlIFxHIGRvZXMgbm90IHdvcmsuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRyb3V0cHV0X2Jsb2NrX3R5cGUtPlskaV0gPX4gL1xHKCd8Ojp8XHcpL2djICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5fc3RhdGVtZW50X2NvbnRpbnVhdGlvbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiMgLi4uYW5kIGluY2x1ZGUgYWxsIGJsb2NrIHR5cGVzIGV4Y2VwdCB1c2VyIHN1YnMgd2l0aAojIGJsb2NrIHByb3RvdHlwZXMgYW5kIHRoZXNlOiAoc29ydHxncmVwfG1hcHxkb3xldmFsKQojIC9eKFx9fFx7fEJFR0lOfEVORHxDSEVDS3xJTklUfEFVVE9MT0FEfERFU1RST1l8VU5JVENIRUNLfGNvbnRpbnVlfDt8aWZ8ZWxzaWZ8ZWxzZXx1bmxlc3N8d2hpbGV8dW50aWx8Zm9yfGZvcmVhY2gpJC8KICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlzX3plcm9fY29udGludWF0aW9uX2Jsb2NrX3R5cGV7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJvdXRwdXRfYmxvY2tfdHlwZS0+WyRpXSB9ICkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluX3N0YXRlbWVudF9jb250aW51YXRpb24gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIC4uYnV0IHRoZXNlIGFyZSBub3QgdGVybWluYWwgdHlwZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICMgICAgIC9eKHNvcnR8Z3JlcHxtYXB8ZG98ZXZhbCkkLyApCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpc19ub3RfemVyb19jb250aW51YXRpb25fYmxvY2tfdHlwZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm91dHB1dF9ibG9ja190eXBlLT5bJGldIH0gKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgLi5hbmQgYSBibG9jayBpbnRyb2R1Y2VkIGJ5IGEgbGFiZWwKICAgICAgICAgICAgICAgICAgICAgICAgIyAvXlx3K1xzKjokL2djICkgewogICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRyb3V0cHV0X2Jsb2NrX3R5cGUtPlskaV0gPX4gLzokLyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbl9zdGF0ZW1lbnRfY29udGludWF0aW9uID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgIyB1c2VyIGZ1bmN0aW9uIHdpdGggYmxvY2sgcHJvdG90eXBlCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluX3N0YXRlbWVudF9jb250aW51YXRpb24gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIElmIHdlIGFyZSBpbiBhIGxpc3QsIHRoZW4KICAgICAgICAgICAgICAgICAgICAjIHdlIG11c3Qgc2V0IGNvbnRpbnVhdGlvbiBpbmRlbnRhdGlvbiBhdCB0aGUgY2xvc2luZwogICAgICAgICAgICAgICAgICAgICMgcGFyZW4gb2Ygc29tZXRoaW5nIGxpa2UgdGhpcyAocGFyZW4gYWZ0ZXIgJGNoZWNrKToKICAgICAgICAgICAgICAgICAgICAjICAgICBhc3NlcnQoCiAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgIF9fTElORV9fLAogICAgICAgICAgICAgICAgICAgICMgICAgICAgICAoIG5vdCBkZWZpbmVkICRjaGVjayApCiAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgb3IgcmVmICRjaGVjawogICAgICAgICAgICAgICAgICAgICMgICAgICAgICAgIG9yICRjaGVjayBlcSAibmV3IgogICAgICAgICAgICAgICAgICAgICMgICAgICAgICAgIG9yICRjaGVjayBlcSAib2xkIiwKICAgICAgICAgICAgICAgICAgICAjICAgICApOwogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJHRvayBlcSAnKScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpbl9zdGF0ZW1lbnRfY29udGludWF0aW9uID0gMQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmICRyb3V0cHV0X2NvbnRhaW5lcl90eXBlLT5bJGldID1+IC9eWzssXHtcfV0kLzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJHRvayBlcSAnOycgKSB7ICRpbl9zdGF0ZW1lbnRfY29udGludWF0aW9uID0gMCB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB1c2UgZW52aXJvbm1lbnQgYWZ0ZXIgdXBkYXRpbmcKICAgICAgICAgICAgICAgICRjb250YWluZXJfZW52aXJvbm1lbnQgPQogICAgICAgICAgICAgICAgICAgICRuZXN0aW5nX2Jsb2NrX2ZsYWcgPyAnQkxPQ0snCiAgICAgICAgICAgICAgICAgIDogJG5lc3RpbmdfbGlzdF9mbGFnICA/ICdMSVNUJwogICAgICAgICAgICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgICAiIjsKICAgICAgICAgICAgICAgICRjaV9zdHJpbmdfaSA9ICRjaV9zdHJpbmdfc3VtICsgJGluX3N0YXRlbWVudF9jb250aW51YXRpb247CiAgICAgICAgICAgICAgICAkbmVzdGluZ19ibG9ja19zdHJpbmdfaSA9ICRuZXN0aW5nX2Jsb2NrX3N0cmluZzsKICAgICAgICAgICAgICAgICRuZXN0aW5nX2xpc3Rfc3RyaW5nX2kgID0gJG5lc3RpbmdfbGlzdF9zdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgbm90IGEgc3RydWN0dXJhbCBpbmRlbnRhdGlvbiB0eXBlLi4KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgJGNvbnRhaW5lcl9lbnZpcm9ubWVudCA9CiAgICAgICAgICAgICAgICAgICAgJG5lc3RpbmdfYmxvY2tfZmxhZyA/ICdCTE9DSycKICAgICAgICAgICAgICAgICAgOiAkbmVzdGluZ19saXN0X2ZsYWcgID8gJ0xJU1QnCiAgICAgICAgICAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgICIiOwoKICAgICAgICAgICAgICAgICMgemVybyB0aGUgY29udGludWF0aW9uIGluZGVudGF0aW9uIGF0IGNlcnRhaW4gdG9rZW5zIHNvCiAgICAgICAgICAgICAgICAjIHRoYXQgdGhleSB3aWxsIGJlIGF0IHRoZSBzYW1lIGxldmVsIGFzIGl0cyBjb250YWluZXIuICBGb3IKICAgICAgICAgICAgICAgICMgY29tbWFzLCB0aGlzIHNpbXBsaWZpZXMgdGhlIC1scCBpbmRlbnRhdGlvbiBsb2dpYywgd2hpY2gKICAgICAgICAgICAgICAgICMgY291bnRzIGNvbW1hcy4gIEZvciA/OiBpdCBtYWtlcyB0aGVtIHN0YW5kIG91dC4KICAgICAgICAgICAgICAgIGlmICgkbmVzdGluZ19saXN0X2ZsYWcpIHsKICAgICAgICAgICAgICAgICAgICAjIyAgICAgICR0eXBlID1+IC9eWyxcP1w6XSQvCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkaXNfY29tbWFfcXVlc3Rpb25fY29sb257JHR5cGV9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkaW5fc3RhdGVtZW50X2NvbnRpbnVhdGlvbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgYmUgc3VyZSBiaW5hcnkgb3BlcmF0b3JzIGdldCBjb250aW51YXRpb24gaW5kZW50YXRpb24KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyX2Vudmlyb25tZW50CiAgICAgICAgICAgICAgICAgICAgJiYgKCAgICR0eXBlIGVxICdrJyAmJiAkaXNfYmluYXJ5X2tleXdvcmR7JHRva30KICAgICAgICAgICAgICAgICAgICAgICAgfHwgJGlzX2JpbmFyeV90eXBleyR0eXBlfSApCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkaW5fc3RhdGVtZW50X2NvbnRpbnVhdGlvbiA9IDE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjb250aW51YXRpb24gaW5kZW50YXRpb24gaXMgc3VtIG9mIGFueSBvcGVuIGNpIGZyb20gcHJldmlvdXMKICAgICAgICAgICAgICAgICMgbGV2ZWxzIHBsdXMgdGhlIGN1cnJlbnQgbGV2ZWwKICAgICAgICAgICAgICAgICRjaV9zdHJpbmdfaSA9ICRjaV9zdHJpbmdfc3VtICsgJGluX3N0YXRlbWVudF9jb250aW51YXRpb247CgogICAgICAgICAgICAgICAgIyB1cGRhdGUgY29udGludWF0aW9uIGZsYWcgLi4uCiAgICAgICAgICAgICAgICAjIGlmIHRoaXMgaXNuJ3QgYSBibGFuayBvciBjb21tZW50Li4KICAgICAgICAgICAgICAgIGlmICggJHR5cGUgbmUgJ2InICYmICR0eXBlIG5lICcjJyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBhbmQgd2UgYXJlIGluIGEgQkxPQ0sKICAgICAgICAgICAgICAgICAgICBpZiAoJG5lc3RpbmdfYmxvY2tfZmxhZykgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgbmV4dCB0b2tlbiBhZnRlciBhICc7JyBhbmQgbGFiZWwgc3RhcnRzIGEgbmV3IHN0bXQKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkdHlwZSBlcSAnOycgfHwgJHR5cGUgZXEgJ0onICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluX3N0YXRlbWVudF9jb250aW51YXRpb24gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIG90aGVyd2lzZSwgd2UgYXJlIGNvbnRpbnVpbmcgdGhlIGN1cnJlbnQgc3RhdGVtZW50CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluX3N0YXRlbWVudF9jb250aW51YXRpb24gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGlmIHdlIGFyZSBub3QgaW4gYSBCTE9DSy4uCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGRvIG5vdCB1c2UgY29udGludWF0aW9uIGluZGVudGF0aW9uIGlmIG5vdCBsaXN0CiAgICAgICAgICAgICAgICAgICAgICAgICMgZW52aXJvbm1lbnQgKGNvdWxkIGJlIHdpdGhpbiBpZi9lbHNpZiBjbGF1c2UpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISRuZXN0aW5nX2xpc3RfZmxhZyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbl9zdGF0ZW1lbnRfY29udGludWF0aW9uID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgIyBvdGhlcndpc2UsIHRoZSB0b2tlbiBhZnRlciBhICcsJyBzdGFydHMgYSBuZXcgdGVybQoKICAgICAgICAgICAgICAgICAgICAgICAgIyBQYXRjaCBGT1IgUlQjOTk5NjE7IG5vIGNvbnRpbnVhdGlvbiBhZnRlciBhICc7JwogICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgcGVybHRpZHkgY3VycmVudGx5IG1hcmtzCiAgICAgICAgICAgICAgICAgICAgICAgICMgYSBibG9jayBwcmVjZWRlZCBieSBhIHR5cGUgY2hhcmFjdGVyIGxpa2UgJSBvciBACiAgICAgICAgICAgICAgICAgICAgICAgICMgYXMgYSBub24gYmxvY2ssIHRvIHNpbXBsaWZ5IGZvcm1hdHRpbmcuIEJ1dCB0aGVzZQogICAgICAgICAgICAgICAgICAgICAgICAjIGFyZSBhY3R1YWxseSBibG9ja3MgYW5kIGNhbiBoYXZlIHNlbWljb2xvbnMuCiAgICAgICAgICAgICAgICAgICAgICAgICMgU2VlIGNvZGVfYmxvY2tfdHlwZSgpIGFuZCBpc19ub25fc3RydWN0dXJhbF9icmFjZSgpLgogICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICR0eXBlIGVxICcsJyB8fCAkdHlwZSBlcSAnOycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5fc3RhdGVtZW50X2NvbnRpbnVhdGlvbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlLCB3ZSBhcmUgY29udGludWluZyB0aGUgY3VycmVudCB0ZXJtCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluX3N0YXRlbWVudF9jb250aW51YXRpb24gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRsZXZlbF9pbl90b2tlbml6ZXIgPCAwICkgewogICAgICAgICAgICAgICAgdW5sZXNzICggJHRva2VuaXplcl9zZWxmLT5bX3Nhd19uZWdhdGl2ZV9pbmRlbnRhdGlvbl9dICkgewogICAgICAgICAgICAgICAgICAgICR0b2tlbml6ZXJfc2VsZi0+W19zYXdfbmVnYXRpdmVfaW5kZW50YXRpb25fXSA9IDE7CiAgICAgICAgICAgICAgICAgICAgd2FybmluZygiU3RhcnRpbmcgbmVnYXRpdmUgaW5kZW50YXRpb25cbiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNldCBzZWNvbmRhcnkgbmVzdGluZyBsZXZlbHMgYmFzZWQgb24gYWxsIGNvbnRhaW5tZW50IHRva2VuIHR5cGVzCiAgICAgICAgICAgICMgTm90ZTogdGhlc2UgYXJlIHNldCBzbyB0aGF0IHRoZSBuZXN0aW5nIGRlcHRoIGlzIHRoZSBkZXB0aAogICAgICAgICAgICAjIG9mIHRoZSBQUkVWSU9VUyBUT0tFTiwgd2hpY2ggaXMgY29udmVuaWVudCBmb3Igc2V0dGluZwogICAgICAgICAgICAjIHRoZSBzdHJlbmd0aCBvZiB0b2tlbiBib25kcwogICAgICAgICAgICBteSAkc2xldmVsX2kgPSAkc2xldmVsX2luX3Rva2VuaXplcjsKCiAgICAgICAgICAgICMgICAgL15bTFx7XChcW10kLwogICAgICAgICAgICBpZiAoICRpc19vcGVuaW5nX3R5cGV7JHR5cGV9ICkgewogICAgICAgICAgICAgICAgJHNsZXZlbF9pbl90b2tlbml6ZXIrKzsKICAgICAgICAgICAgICAgICRuZXN0aW5nX3Rva2VuX3N0cmluZyAuPSAkdG9rOwogICAgICAgICAgICAgICAgJG5lc3RpbmdfdHlwZV9zdHJpbmcgIC49ICR0eXBlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjICAgICAgIC9eW1JcfVwpXF1dJC8KICAgICAgICAgICAgZWxzaWYgKCAkaXNfY2xvc2luZ190eXBleyR0eXBlfSApIHsKICAgICAgICAgICAgICAgICRzbGV2ZWxfaW5fdG9rZW5pemVyLS07CiAgICAgICAgICAgICAgICBteSAkY2hhciA9IGNob3AgJG5lc3RpbmdfdG9rZW5fc3RyaW5nOwoKICAgICAgICAgICAgICAgIGlmICggJGNoYXIgbmUgJG1hdGNoaW5nX3N0YXJ0X3Rva2VueyR0b2t9ICkgewogICAgICAgICAgICAgICAgICAgICRuZXN0aW5nX3Rva2VuX3N0cmluZyAuPSAkY2hhciAuICR0b2s7CiAgICAgICAgICAgICAgICAgICAgJG5lc3RpbmdfdHlwZV9zdHJpbmcgIC49ICR0eXBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgY2hvcCAkbmVzdGluZ190eXBlX3N0cmluZzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCggQGJsb2NrX3R5cGUsICAgICAgICAgICAgJHJvdXRwdXRfYmxvY2tfdHlwZS0+WyRpXSApOwogICAgICAgICAgICBwdXNoKCBAY2lfc3RyaW5nLCAgICAgICAgICAgICAkY2lfc3RyaW5nX2kgKTsKICAgICAgICAgICAgcHVzaCggQGNvbnRhaW5lcl9lbnZpcm9ubWVudCwgJGNvbnRhaW5lcl9lbnZpcm9ubWVudCApOwogICAgICAgICAgICBwdXNoKCBAY29udGFpbmVyX3R5cGUsICAgICAgICAkcm91dHB1dF9jb250YWluZXJfdHlwZS0+WyRpXSApOwogICAgICAgICAgICBwdXNoKCBAbGV2ZWxzLCAgICAgICAgICAgICAgICAkbGV2ZWxfaSApOwogICAgICAgICAgICBwdXNoKCBAbmVzdGluZ190b2tlbnMsICAgICAgICAkbmVzdGluZ190b2tlbl9zdHJpbmdfaSApOwogICAgICAgICAgICBwdXNoKCBAbmVzdGluZ190eXBlcywgICAgICAgICAkbmVzdGluZ190eXBlX3N0cmluZ19pICk7CiAgICAgICAgICAgIHB1c2goIEBzbGV2ZWxzLCAgICAgICAgICAgICAgICRzbGV2ZWxfaSApOwogICAgICAgICAgICBwdXNoKCBAdG9rZW5fdHlwZSwgICAgICAgICAgICAkZml4X3R5cGUgKTsKICAgICAgICAgICAgcHVzaCggQHR5cGVfc2VxdWVuY2UsICAgICAgICAgJHJvdXRwdXRfdHlwZV9zZXF1ZW5jZS0+WyRpXSApOwogICAgICAgICAgICBwdXNoKCBAbmVzdGluZ19ibG9ja3MsICAgICAgICAkbmVzdGluZ19ibG9ja19zdHJpbmcgKTsKICAgICAgICAgICAgcHVzaCggQG5lc3RpbmdfbGlzdHMsICAgICAgICAgJG5lc3RpbmdfbGlzdF9zdHJpbmcgKTsKCiAgICAgICAgICAgICMgbm93IGZvcm0gdGhlIHByZXZpb3VzIHRva2VuCiAgICAgICAgICAgIGlmICggJGltID49IDAgKSB7CiAgICAgICAgICAgICAgICAkbnVtID0KICAgICAgICAgICAgICAgICAgJHJ0b2tlbl9tYXAtPlskaV0gLSAkcnRva2VuX21hcC0+WyRpbV07ICAjIGhvdyBtYW55IGNoYXJhY3RlcnMKCiAgICAgICAgICAgICAgICBpZiAoICRudW0gPiAwICkgewogICAgICAgICAgICAgICAgICAgIHB1c2goIEB0b2tlbnMsCiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN0ciggJGlucHV0X2xpbmUsICRydG9rZW5fbWFwLT5bJGltXSwgJG51bSApICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGltID0gJGk7CiAgICAgICAgfQoKICAgICAgICAkbnVtID0gbGVuZ3RoKCRpbnB1dF9saW5lKSAtICRydG9rZW5fbWFwLT5bJGltXTsgICAjIG1ha2UgdGhlIGxhc3QgdG9rZW4KICAgICAgICBpZiAoICRudW0gPiAwICkgewogICAgICAgICAgICBwdXNoKCBAdG9rZW5zLCBzdWJzdHIoICRpbnB1dF9saW5lLCAkcnRva2VuX21hcC0+WyRpbV0sICRudW0gKSApOwogICAgICAgIH0KCiAgICAgICAgJHRva2VuaXplcl9zZWxmLT5bX2luX2F0dHJpYnV0ZV9saXN0X10gPSAkaW5fYXR0cmlidXRlX2xpc3Q7CiAgICAgICAgJHRva2VuaXplcl9zZWxmLT5bX2luX3F1b3RlX10gICAgICAgICAgPSAkaW5fcXVvdGU7CiAgICAgICAgJHRva2VuaXplcl9zZWxmLT5bX3F1b3RlX3RhcmdldF9dID0KICAgICAgICAgICRpbl9xdW90ZSA/IG1hdGNoaW5nX2VuZF90b2tlbigkcXVvdGVfY2hhcmFjdGVyKSA6ICIiOwogICAgICAgICR0b2tlbml6ZXJfc2VsZi0+W19yaGVyZV90YXJnZXRfbGlzdF9dID0gJHJoZXJlX3RhcmdldF9saXN0OwoKICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfcnRva2VuX3R5cGV9ICAgICAgICAgICAgPSBcQHRva2VuX3R5cGU7CiAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X3J0b2tlbnN9ICAgICAgICAgICAgICAgID0gXEB0b2tlbnM7CiAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X3JibG9ja190eXBlfSAgICAgICAgICAgID0gXEBibG9ja190eXBlOwogICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19yY29udGFpbmVyX3R5cGV9ICAgICAgICA9IFxAY29udGFpbmVyX3R5cGU7CiAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X3Jjb250YWluZXJfZW52aXJvbm1lbnR9ID0gXEBjb250YWluZXJfZW52aXJvbm1lbnQ7CiAgICAgICAgJGxpbmVfb2ZfdG9rZW5zLT57X3J0eXBlX3NlcXVlbmNlfSAgICAgICAgID0gXEB0eXBlX3NlcXVlbmNlOwogICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19ybGV2ZWxzfSAgICAgICAgICAgICAgICA9IFxAbGV2ZWxzOwogICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19yc2xldmVsc30gICAgICAgICAgICAgICA9IFxAc2xldmVsczsKICAgICAgICAkbGluZV9vZl90b2tlbnMtPntfcm5lc3RpbmdfdG9rZW5zfSAgICAgICAgPSBcQG5lc3RpbmdfdG9rZW5zOwogICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19yY2lfbGV2ZWxzfSAgICAgICAgICAgICA9IFxAY2lfc3RyaW5nOwogICAgICAgICRsaW5lX29mX3Rva2Vucy0+e19ybmVzdGluZ19ibG9ja3N9ICAgICAgICA9IFxAbmVzdGluZ19ibG9ja3M7CgogICAgICAgIHJldHVybjsKICAgIH0KfSAgICAjIGVuZCB0b2tlbml6ZV90aGlzX2xpbmUKCiMjIyMjIyMjI2kjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgVG9rZW5pemVyIHJvdXRpbmVzIHdoaWNoIGFzc2lzdCBpbiBpZGVudGlmeWluZyB0b2tlbiB0eXBlcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBoYXNoIGxvb2t1cCB0YWJsZSBvZiBvcGVyYXRvciBleHBlY3RlZCB2YWx1ZXMKbXkgJW9wX2V4cGVjdGVkX3RhYmxlOwoKQkVHSU4gewoKICAgICMgQWx3YXlzIGV4cGVjdGluZyBURVJNIGZvbGxvd2luZyB0aGVzZSB0eXBlczoKICAgICMgbm90ZTogdGhpcyBpcyBpZGVudGljYWwgdG8gJ0B2YWx1ZV9yZXF1ZXN0b3JfdHlwZScgZGVmaW5lZCBsYXRlci4KICAgIG15IEBxID0gcXcoCiAgICAgIDsgISArIHggJiA/ICBGIEogLSBwIC8gWSA6ICUgZiBVIH4gQSBHIGogTCAqIC4gfCBeIDwgPSBbIG0geyBcID4gdAogICAgICB8fCA+PSAhPSBtbSAqPSA9PiAuLiAhfiA9PSAmJiB8PSAuPSBwcCAtPSA9fiArPSA8PSAlPSBePSB4PSB+fiAqKiA8PCAvPQogICAgICAmPSAvLyA+PiB+LiAmLiB8LiBeLgogICAgICAuLi4gKio9IDw8PSA+Pj0gJiY9IHx8PSAvLz0gPD0+ICF+fiAmLj0gfC49IF4uPSA8PH4KICAgICk7CiAgICBwdXNoIEBxLCAnLCc7CiAgICBwdXNoIEBxLCAnKCc7ICAgICMgZm9yIGNvbXBsZXRlbmVzcywgbm90IGN1cnJlbnRseSBhIHRva2VuIHR5cGUKICAgIEB7b3BfZXhwZWN0ZWRfdGFibGV9e0BxfSA9IChURVJNKSB4IHNjYWxhcihAcSk7CgogICAgIyBBbHdheXMgVU5LTk9XTiBmb2xsb3dpbmcgdGhlc2UgdHlwZXM6CiAgICBAcSA9IHF3KCB3ICk7CiAgICBAe29wX2V4cGVjdGVkX3RhYmxlfXtAcX0gPSAoVU5LTk9XTikgeCBzY2FsYXIoQHEpOwoKICAgICMgQWx3YXlzIGV4cGVjdGluZyBPUEVSQVRPUiAuLi4KICAgICMgJ24nIGFuZCAndicgYXJlIGN1cnJlbnRseSBleGNsdWRlZCBiZWNhdXNlIHRoZXkgbWlnaHQgYmUgVkVSU0lPTiBudW1iZXJzCiAgICAjICdpJyBpcyBjdXJyZW50bHkgZXhjbHVkZWQgYmVjYXVzZSBpdCBtaWdodCBiZSBhIHBhY2thZ2UKICAgICMgJ3EnIGlzIGN1cnJlbnRseSBleGNsdWRlZCBiZWNhdXNlIGl0IG1pZ2h0IGJlIGEgcHJvdG90eXBlCiAgICBAcSA9IHF3KCAtLSBDIC0+IGggUiArKyBdIFEgPD4gKTsgICAgIyMgbiB2IHEgaSApOwogICAgcHVzaCBAcSwgJyknOwogICAgQHtvcF9leHBlY3RlZF90YWJsZX17QHF9ID0gKE9QRVJBVE9SKSB4IHNjYWxhcihAcSk7Cgp9CgpzdWIgb3BlcmF0b3JfZXhwZWN0ZWQgewoKICAgICMgUmV0dXJucyBhIHBhcmFtZXRlciBpbmRpY2F0aW5nIHdoYXQgdHlwZXMgb2YgdG9rZW5zIGNhbiBvY2N1ciBuZXh0CgogICAgIyBDYWxsIGZvcm1hdDoKICAgICMgICAgJG9wX2V4cGVjdGVkID0gb3BlcmF0b3JfZXhwZWN0ZWQoIFsgJHByZXZfdHlwZSwgJHRvaywgJG5leHRfdHlwZSBdICk7CiAgICAjIHdoZXJlCiAgICAjICAgICRwcmV2X3R5cGUgaXMgdGhlIHR5cGUgb2YgdGhlIHByZXZpb3VzIHRva2VuIChibGFuayBvciBub3QpCiAgICAjICAgICR0b2sgaXMgdGhlIGN1cnJlbnQgdG9rZW4KICAgICMgICAgJG5leHRfdHlwZSBpcyB0aGUgdHlwZSBvZiB0aGUgbmV4dCB0b2tlbiAoYmxhbmsgb3Igbm90KQoKICAgICMgTWFueSBwZXJsIHN5bWJvbHMgaGF2ZSB0d28gb3IgbW9yZSBtZWFuaW5ncy4gIEZvciBleGFtcGxlLCAnPDwnCiAgICAjIGNhbiBiZSBhIHNoaWZ0IG9wZXJhdG9yIG9yIGEgaGVyZS1kb2Mgb3BlcmF0b3IuICBUaGUKICAgICMgaW50ZXJwcmV0YXRpb24gb2YgdGhlc2Ugc3ltYm9scyBkZXBlbmRzIG9uIHRoZSBjdXJyZW50IHN0YXRlIG9mCiAgICAjIHRoZSB0b2tlbml6ZXIsIHdoaWNoIG1heSBlaXRoZXIgYmUgZXhwZWN0aW5nIGEgdGVybSBvciBhbgogICAgIyBvcGVyYXRvci4gIEZvciB0aGlzIGV4YW1wbGUsIGEgPDwgd291bGQgYmUgYSBzaGlmdCBpZiBhbiBPUEVSQVRPUgogICAgIyBpcyBleHBlY3RlZCwgYW5kIGEgaGVyZS1kb2MgaWYgYSBURVJNIGlzIGV4cGVjdGVkLiAgVGhpcyByb3V0aW5lCiAgICAjIGlzIGNhbGxlZCB0byBtYWtlIHRoaXMgZGVjaXNpb24gZm9yIGFueSBjdXJyZW50IHRva2VuLiAgSXQgcmV0dXJucwogICAgIyBvbmUgb2YgdGhyZWUgcG9zc2libGUgdmFsdWVzOgogICAgIwogICAgIyAgICAgT1BFUkFUT1IgLSBvcGVyYXRvciBleHBlY3RlZCAob3IgYXQgbGVhc3QsIG5vdCBhIHRlcm0pCiAgICAjICAgICBVTktOT1dOICAtIGNhbid0IHRlbGwKICAgICMgICAgIFRFUk0gICAgIC0gYSB0ZXJtIGlzIGV4cGVjdGVkIChvciBhdCBsZWFzdCwgbm90IGFuIG9wZXJhdG9yKQogICAgIwogICAgIyBUaGUgZGVjaXNpb24gaXMgYmFzZWQgb24gd2hhdCBoYXMgYmVlbiBzZWVuIHNvIGZhci4gIFRoaXMKICAgICMgaW5mb3JtYXRpb24gaXMgc3RvcmVkIGluIHRoZSAiJGxhc3Rfbm9uYmxhbmtfdHlwZSIgYW5kCiAgICAjICIkbGFzdF9ub25ibGFua190b2tlbiIgdmFyaWFibGVzLiAgRm9yIGV4YW1wbGUsIGlmIHRoZQogICAgIyAkbGFzdF9ub25ibGFua190eXBlIGlzICc9ficsIHRoZW4gd2UgYXJlIGV4cGVjdGluZyBhIFRFUk0sIHdoZXJlYXMKICAgICMgaWYgJGxhc3Rfbm9uYmxhbmtfdHlwZSBpcyAnbicgKG51bWVyaWMpLCB3ZSBhcmUgZXhwZWN0aW5nIGFuCiAgICAjIE9QRVJBVE9SLgogICAgIwogICAgIyBJZiBhIFVOS05PV04gaXMgcmV0dXJuZWQsIHRoZSBjYWxsaW5nIHJvdXRpbmUgbXVzdCBndWVzcy4gQSBtYWpvcgogICAgIyBnb2FsIG9mIHRoaXMgdG9rZW5pemVyIGlzIHRvIG1pbmltaXplIHRoZSBwb3NzaWJpbGl0eSBvZiByZXR1cm5pbmcKICAgICMgVU5LTk9XTiwgYmVjYXVzZSBhIHdyb25nIGd1ZXNzIGNhbiBzcG9pbCB0aGUgZm9ybWF0dGluZyBvZiBhCiAgICAjIHNjcmlwdC4KICAgICMKICAgICMgQWRkaW5nIE5FV19UT0tFTlM6IGl0IGlzIGNyaXRpY2FsbHkgaW1wb3J0YW50IHRoYXQgdGhpcyByb3V0aW5lIGJlCiAgICAjIHVwZGF0ZWQgdG8gYWxsb3cgaXQgdG8gZGV0ZXJtaW5lIGlmIGFuIG9wZXJhdG9yIG9yIHRlcm0gaXMgdG8gYmUKICAgICMgZXhwZWN0ZWQgYWZ0ZXIgdGhlIG5ldyB0b2tlbi4gIERvaW5nIHRoaXMgc2ltcGx5IGludm9sdmVzIGFkZGluZwogICAgIyB0aGUgbmV3IHRva2VuIGNoYXJhY3RlciB0byBvbmUgb2YgdGhlIHJlZ2V4ZXMgaW4gdGhpcyByb3V0aW5lIG9yCiAgICAjIHRvIG9uZSBvZiB0aGUgaGFzaCBsaXN0cwogICAgIyB0aGF0IGl0IHVzZXMsIHdoaWNoIGFyZSBpbml0aWFsaXplZCBpbiB0aGUgQkVHSU4gc2VjdGlvbi4KICAgICMgVVNFUyBHTE9CQUwgVkFSSUFCTEVTOiAkbGFzdF9ub25ibGFua190eXBlLCAkbGFzdF9ub25ibGFua190b2tlbiwKICAgICMgJHN0YXRlbWVudF90eXBlCgogICAgIyBXaGVuIHBvc3NpYmxlLCB0b2tlbiB0eXBlcyBzaG91bGQgYmUgc2VsZWN0ZWQgc3VjaCB0aGF0IHdlIGNhbiBkZXRlcm1pbmUKICAgICMgdGhlICdvcGVyYXRvcl9leHBlY3RlZCcgdmFsdWUgYnkgYSBzaW1wbGUgaGFzaCBsb29rdXAuICBJZiB0aGVyZSBhcmUKICAgICMgZXhjZXB0aW9ucywgdGhhdCBpcyBhbiBpbmRpY2F0aW9uIHRoYXQgYSBuZXcgdHlwZSBpcyBuZWVkZWQuCgogICAgbXkgKCRyYXJnKSA9IEBfOwoKICAgICMjIyMjIyMjIyMjIyMjCiAgICAjIFRhYmxlIGxvb2t1cAogICAgIyMjIyMjIyMjIyMjIyMKCiAgICAjIE1hbnkgdHlwZXMgYXJlIGNhbiBiZSBvYnRhaW5lZCBieSBhIHRhYmxlIGxvb2t1cCBnaXZlbiB0aGUgcHJldmlvdXMgdHlwZS4KICAgICMgVGhpcyB0eXBpY2FsbHkgaGFuZGxlcyBoYWxmIG9yIG1vcmUgb2YgdGhlIGNhbGxzLgogICAgbXkgJG9wX2V4cGVjdGVkID0gJG9wX2V4cGVjdGVkX3RhYmxleyRsYXN0X25vbmJsYW5rX3R5cGV9OwogICAgZ290byBSRVRVUk4gaWYgKCBkZWZpbmVkKCRvcF9leHBlY3RlZCkgKTsKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIEhhbmRsZSBzcGVjaWFsIGNhc2VzCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgJG9wX2V4cGVjdGVkID0gVU5LTk9XTjsKICAgIG15ICggJHByZXZfdHlwZSwgJHRvaywgJG5leHRfdHlwZSApID0gQHskcmFyZ307CgogICAgIyBUeXBlcyAnaycsICd9JyBhbmQgJ1onIGRlcGVuZCBvbiBjb250ZXh0CiAgICAjIEZJWE1FOiBUeXBlcyAnaScsICduJywgJ3YnLCAncScgY3VycmVudGx5IGFsc28gdGVtcG9yYXJpbHkgZGVwZW5kIG9uCiAgICAjIGNvbnRleHQgYnV0IHRoYXQgZGVwZW5kZW5jZSBjb3VsZCBldmVudHVhbGx5IGJlIGVsaW1pbmF0ZWQgd2l0aCBiZXR0ZXIKICAgICMgdG9rZW4gdHlwZSBkZWZpbml0aW9uCgogICAgIyBpZGVudGlmaWVyLi4uCiAgICBpZiAoICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ2knICkgewogICAgICAgICRvcF9leHBlY3RlZCA9IE9QRVJBVE9SOwoKICAgICAgICAjIEZJWE1FOiBpdCB3b3VsZCBiZSBjbGVhbmVyIHRvIG1ha2UgdGhpcyBhIHNwZWNpYWwgdHlwZQogICAgICAgICMgZXhwZWN0aW5nIFZFUlNJT04gb3Ige30gYWZ0ZXIgcGFja2FnZSBOQU1FU1BBQ0UKICAgICAgICAjIFRPRE86IG1heWJlIG1hcmsgdGhlc2Ugd29yZHMgYXMgdHlwZSAnWSc/CiAgICAgICAgaWYgKCAgICRzdGF0ZW1lbnRfdHlwZSA9fiAvXnBhY2thZ2VcYi8KICAgICAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gPX4gL15wYWNrYWdlXGIvICkKICAgICAgICB7CiAgICAgICAgICAgICRvcF9leHBlY3RlZCA9IFRFUk07CiAgICAgICAgfQogICAgfQoKICAgICMga2V5d29yZC4uLgogICAgZWxzaWYgKCAkbGFzdF9ub25ibGFua190eXBlIGVxICdrJyApIHsKICAgICAgICAkb3BfZXhwZWN0ZWQgPSBURVJNOwogICAgICAgIGlmICggJGV4cGVjdGluZ19vcGVyYXRvcl90b2tlbnskbGFzdF9ub25ibGFua190b2tlbn0gKSB7CiAgICAgICAgICAgICRvcF9leHBlY3RlZCA9IE9QRVJBVE9SOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRleHBlY3RpbmdfdGVybV90b2tlbnskbGFzdF9ub25ibGFua190b2tlbn0gKSB7CgogICAgICAgICAgICAjIEV4Y2VwdGlvbnMgZnJvbSBURVJNOgoKICAgICAgICAgICAgIyAvLyBtYXkgZm9sbG93IHBlcmwgZnVuY3Rpb25zIHdoaWNoIG1heSBiZSB1bmFyeSBvcGVyYXRvcnMKICAgICAgICAgICAgIyBzZWUgdGVzdCBmaWxlIGRvci50IChkZWZpbmVkIG9yKTsKICAgICAgICAgICAgaWYgKCAgICR0b2sgZXEgJy8nCiAgICAgICAgICAgICAgICAmJiAkbmV4dF90eXBlIGVxICcvJwogICAgICAgICAgICAgICAgJiYgJGlzX2tleXdvcmRfcmVqZWN0aW5nX3NsYXNoX2FzX3BhdHRlcm5fZGVsaW1pdGVyewogICAgICAgICAgICAgICAgICAgICRsYXN0X25vbmJsYW5rX3Rva2VufSApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRvcF9leHBlY3RlZCA9IE9QRVJBVE9SOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFBhdGNoIHRvIGFsbG93IGEgPyBmb2xsb3dpbmcgJ3NwbGl0JyB0byBiZSBhIGRlcHJpY2F0ZWQgcGF0dGVybgogICAgICAgICAgICAjIGRlbGltaXRlci4gIFRoaXMgcGF0Y2ggaXMgY29vcmRpbmF0ZWQgd2l0aCB0aGUgb21pc3Npb24gb2Ygc3BsaXQKICAgICAgICAgICAgIyBmcm9tIHRoZSBsaXN0CiAgICAgICAgICAgICMgJWlzX2tleXdvcmRfcmVqZWN0aW5nX3F1ZXN0aW9uX2FzX3BhdHRlcm5fZGVsaW1pdGVyLiBUaGlzIHBhdGNoCiAgICAgICAgICAgICMgd2lsbCBmb3JjZSBwZXJsdGlkeSB0byBndWVzcy4KICAgICAgICAgICAgZWxzaWYgKCR0b2sgZXEgJz8nCiAgICAgICAgICAgICAgICAmJiAkbGFzdF9ub25ibGFua190b2tlbiBlcSAnc3BsaXQnICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJG9wX2V4cGVjdGVkID0gVU5LTk9XTjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0gIyMgZW5kIHR5cGUgJ2snCgogICAgIyBjbG9zaW5nIGNvbnRhaW5lciB0b2tlbi4uLgoKICAgICMgTm90ZSB0aGF0IHRoZSBhY3R1YWwgdG9rZW4gZm9yIHR5cGUgJ30nIG1heSBhbHNvIGJlIGEgJyknLgoKICAgICMgQWxzbyBub3RlIHRoYXQgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gaXMgbm90IHRoZSB0b2tlbiBjb3JyZXNwb25kaW5nIHRvCiAgICAjICRsYXN0X25vbmJsYW5rX3R5cGUgd2hlbiB0aGUgdHlwZSBpcyBhIGNsb3NpbmcgY29udGFpbmVyLiAgSW4gdGhhdAogICAgIyBjYXNlIGl0IGlzIHRoZSB0b2tlbiBiZWZvcmUgdGhlIGNvcnJlc3BvbmRpbmcgb3BlbmluZyBjb250YWluZXIgdG9rZW4uCiAgICAjIFNvIGZvciBleGFtcGxlLCBmb3IgdGhpcyBzbmlwcGV0CiAgICAjICAgICAgICRhID0gZG8geyBCTE9DSyB9IC8gMjsKICAgICMgdGhlICRsYXN0X25vbmJsYW5rX3Rva2VuIGlzICdkbycgd2hlbiAkbGFzdF9ub25ibGFua190eXBlIGVxICd9Jy4KCiAgICBlbHNpZiAoICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ30nICkgewogICAgICAgICRvcF9leHBlY3RlZCA9IFVOS05PV047CgogICAgICAgICMgaGFuZGxlIHNvbWV0aGluZyBhZnRlciAnZG8nIGFuZCAnZXZhbCcKICAgICAgICBpZiAoICRpc19ibG9ja19vcGVyYXRvcnskbGFzdF9ub25ibGFua190b2tlbn0gKSB7CgogICAgICAgICAgICAjIHNvbWV0aGluZyBsaWtlICRhID0gZG8geyBCTE9DSyB9IC8gMjsKICAgICAgICAgICAgJG9wX2V4cGVjdGVkID0gT1BFUkFUT1I7ICAgICMgYmxvY2sgbW9kZSBmb2xsb3dpbmcgfQogICAgICAgIH0KCiAgICAgICAgZWxzaWYgKCAkbGFzdF9ub25ibGFua190b2tlbiA9fiAvXihcKXxcJHxcLVw+KS8gKSB7CiAgICAgICAgICAgICRvcF9leHBlY3RlZCA9IE9QRVJBVE9SOwogICAgICAgICAgICBpZiAoICRsYXN0X25vbmJsYW5rX3Rva2VuIGVxICckJyApIHsgJG9wX2V4cGVjdGVkID0gVU5LTk9XTiB9CgogICAgICAgIH0KCiAgICAgICAgIyBDaGVjayBmb3Igc21hcnRtYXRjaCBvcGVyYXRvciBiZWZvcmUgcHJlY2VkaW5nIGJyYWNlIG9yIHNxdWFyZQogICAgICAgICMgYnJhY2tldC4gIEZvciBleGFtcGxlLCBhdCB0aGUgPyBhZnRlciB0aGUgXSBpbiB0aGUgZm9sbG93aW5nCiAgICAgICAgIyBleHByZXNzaW9ucyB3ZSBhcmUgZXhwZWN0aW5nIGFuIG9wZXJhdG9yOgogICAgICAgICMKICAgICAgICAjIHFyLzMvIH5+IFsnMTIzNCddID8gMSA6IDA7CiAgICAgICAgIyBtYXAgeyAkXyB+fiBbICcwJywgJzEnIF0gPyAneCcgOiAnbycgfSBAYTsKICAgICAgICBlbHNpZiAoICRsYXN0X25vbmJsYW5rX3Rva2VuIGVxICd+ficgKSB7CiAgICAgICAgICAgICRvcF9leHBlY3RlZCA9IE9QRVJBVE9SOwogICAgICAgIH0KCiAgICAgICAgIyBBIHJpZ2h0IGJyYWNlIGhlcmUgaW5kaWNhdGVzIHRoZSBlbmQgb2YgYSBzaW1wbGUgYmxvY2suICBBbGwKICAgICAgICAjIG5vbi1zdHJ1Y3R1cmFsIHJpZ2h0IGJyYWNlcyBoYXZlIHR5cGUgJ1InIGFsbCBicmFjZXMgYXNzb2NpYXRlZCB3aXRoCiAgICAgICAgIyBibG9jayBvcGVyYXRvciBrZXl3b3JkcyBoYXZlIGJlZW4gZ2l2ZW4gdGhvc2Uga2V5d29yZHMgYXMKICAgICAgICAjICJsYXN0X25vbmJsYW5rX3Rva2VuIiBhbmQgY2F1Z2h0IGFib3ZlLiAgKFRoaXMgc3RhdGVtZW50IGlzIG9yZGVyCiAgICAgICAgIyBkZXBlbmRlbnQsIGFuZCBtdXN0IGNvbWUgYWZ0ZXIgY2hlY2tpbmcgJGxhc3Rfbm9uYmxhbmtfdG9rZW4pLgogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBwYXRjaCBmb3IgZG9yLnQgKGRlZmluZWQgb3IpLgogICAgICAgICAgICBpZiAoICAgJHRvayBlcSAnLycKICAgICAgICAgICAgICAgICYmICRuZXh0X3R5cGUgZXEgJy8nCiAgICAgICAgICAgICAgICAmJiAkbGFzdF9ub25ibGFua190b2tlbiBlcSAnXScgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkb3BfZXhwZWN0ZWQgPSBPUEVSQVRPUjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBQYXRjaCBmb3IgUlQgIzExNjM0NDogbWlzcGFyc2UgYSB0ZXJuYXJ5IG9wZXJhdG9yIGFmdGVyIGFuCiAgICAgICAgICAgICMgYW5vbnltb3VzIGhhc2gsIGxpa2UgdGhpczoKICAgICAgICAgICAgIyAgIHJldHVybiByZWYge30gPyAxIDogMDsKICAgICAgICAgICAgIyBUaGUgcmlnaHQgYnJhY2Ugc2hvdWxkIHJlYWxseSBiZSBtYXJrZWQgdHlwZSAnUicgaW4gdGhpcyBjYXNlLAogICAgICAgICAgICAjIGFuZCBpdCBpcyBzYWZlc3QgdG8gcmV0dXJuIGFuIFVOS05PV04gaGVyZS4gRXhwZWN0aW5nIGEgVEVSTSB3aWxsCiAgICAgICAgICAgICMgY2F1c2UgdGhlICc/JyB0byBhbHdheXMgYmUgaW50ZXJwcmV0ZWQgYXMgYSBwYXR0ZXJuIGRlbGltaXRlcgogICAgICAgICAgICAjIHJhdGhlciB0aGFuIGludHJvZHVjaW5nIGEgdGVybmFyeSBvcGVyYXRvci4KICAgICAgICAgICAgZWxzaWYgKCAkdG9rIGVxICc/JyApIHsKICAgICAgICAgICAgICAgICRvcF9leHBlY3RlZCA9IFVOS05PV047CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkb3BfZXhwZWN0ZWQgPSBURVJNOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSAjIyBlbmQgdHlwZSAnfScKCiAgICAjIG51bWJlciBvciB2LXN0cmluZy4uLgogICAgIyBBbiBleGNlcHRpb24gaXMgZm9yIFZFUlNJT04gbnVtYmVycyBhICd1c2UnIHN0YXRlbWVudC4gSXQgaGFzIHRoZSBmb3JtYXQKICAgICMgICAgIHVzZSBNb2R1bGUgVkVSU0lPTiBMSVNUCiAgICAjIFdlIGNvdWxkIGF2b2lkIHRoaXMgZXhjZXB0aW9uIGJ5IHdyaXRpbmcgYSBzcGVjaWFsIHN1YiB0byBwYXJzZSAndXNlJwogICAgIyBzdGF0ZW1lbnRzIGFuZCBwZXJoYXBzIG1hcmsgdGhlc2UgbnVtYmVycyB3aXRoIGEgbmV3IHR5cGUgViAoZm9yIFZFUlNJT04pCiAgICBlbHNpZiAoICRsYXN0X25vbmJsYW5rX3R5cGUgPX4gL15bbnZdJC8gKSB7CiAgICAgICAgJG9wX2V4cGVjdGVkID0gT1BFUkFUT1I7CiAgICAgICAgaWYgKCAkc3RhdGVtZW50X3R5cGUgZXEgJ3VzZScgKSB7CiAgICAgICAgICAgICRvcF9leHBlY3RlZCA9IFVOS05PV047CiAgICAgICAgfQogICAgfQoKICAgICMgcXVvdGUuLi4KICAgICMgRklYTUU6IGxhYmVsZWQgcHJvdG90eXBlIHdvcmRzIHNob3VsZCBwcm9iYWJseSBiZSBnaXZlbiB0eXBlICdBJyBvciBtYXliZQogICAgIyAnSic7IG5vdCAncSc7IG9yIG1heWJlIG1hcmsgYXMgdHlwZSAnWScKICAgIGVsc2lmICggJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAncScgKSB7CiAgICAgICAgJG9wX2V4cGVjdGVkID0gT1BFUkFUT1I7CiAgICAgICAgaWYgKCAkbGFzdF9ub25ibGFua190b2tlbiBlcSAncHJvdG90eXBlJyApCiAgICAgICAgICAjI3x8ICRsYXN0X25vbmJsYW5rX3Rva2VuIGVxICdzd2l0Y2gnICkKICAgICAgICB7CiAgICAgICAgICAgICRvcF9leHBlY3RlZCA9IFRFUk07CiAgICAgICAgfQogICAgfQoKICAgICMgZmlsZSBoYW5kbGUgb3Igc2ltaWxhcgogICAgZWxzaWYgKCAkbGFzdF9ub25ibGFua190eXBlIGVxICdaJyApIHsKCiAgICAgICAgJG9wX2V4cGVjdGVkID0gVU5LTk9XTjsKCiAgICAgICAgIyBhbmdsZS50CiAgICAgICAgaWYgKCAkbGFzdF9ub25ibGFua190b2tlbiA9fiAvXlx3LyApIHsKICAgICAgICAgICAgJG9wX2V4cGVjdGVkID0gVU5LTk9XTjsKICAgICAgICB9CgogICAgICAgICMgVGhlICd3ZWlyZCBwYXJzaW5nIHJ1bGVzJyBvZiBuZXh0IHNlY3Rpb24gZG8gbm90IHdvcmsgZm9yICc8JyBhbmQgJz8nCiAgICAgICAgIyBJdCBpcyBiZXN0IHRvIG1hcmsgdGhlbSBhcyB1bmtub3duLiAgVGVzdCBjYXNlOgogICAgICAgICMgIHByaW50ICRmaCA8REFUQT47CiAgICAgICAgZWxzaWYgKCAkdG9rID1+IC9eW1w8XD9dJC8gKSB7CiAgICAgICAgICAgICRvcF9leHBlY3RlZCA9IFVOS05PV047CiAgICAgICAgfQoKICAgICAgICAjIEZvciBwb3NzaWJsZSBmaWxlIGhhbmRsZSBsaWtlICIkYSIsIFBlcmwgdXNlcyB3ZWlyZCBwYXJzaW5nIHJ1bGVzLgogICAgICAgICMgRm9yIGV4YW1wbGU6CiAgICAgICAgIyBwcmludCAkYS8yLCIvaGkiOyAgIC0gZGl2aXNpb24KICAgICAgICAjIHByaW50ICRhIC8gMiwiL2hpIjsgLSBkaXZpc2lvbgogICAgICAgICMgcHJpbnQgJGEvIDIsIi9oaSI7ICAtIGRpdmlzaW9uCiAgICAgICAgIyBwcmludCAkYSAvMiwiL2hpIjsgIC0gcGF0dGVybiAoYW5kIGVycm9yKSEKICAgICAgICAjIFNvbWUgZXhhbXBsZXMgd2hlcmUgdGhpcyBsb2dpYyB3b3JrcyBva2F5LCBmb3IgJyYnLCcqJywnKyc6CiAgICAgICAgIyAgICBwcmludCAkZmggJnhzaV9wcm90b3MoQG1vZHMpOwogICAgICAgICMgICAgbXkgJHggPSBuZXcgJENvbXByZXNzQ2xhc3MgKkZIOwogICAgICAgICMgICAgcHJpbnQgJE9VVCArKCAkY291bnQgJSAxNSA/ICIsICIgOiAiXG5cdCIgKTsKICAgICAgICBlbHNpZiAoJHByZXZfdHlwZSBlcSAnYicKICAgICAgICAgICAgJiYgJG5leHRfdHlwZSBuZSAnYicgKQogICAgICAgIHsKICAgICAgICAgICAgJG9wX2V4cGVjdGVkID0gVEVSTTsKICAgICAgICB9CgogICAgICAgICMgTm90ZSB0aGF0ICc/JyBhbmQgJzwnIGhhdmUgYmVlbiBtb3ZlZCBhYm92ZQogICAgICAgICMgKCAkdG9rID1+IC9eKFt4XC9cK1wtXCpcJVwmXC5cP1w8XXxcPlw+KSQvICkgewogICAgICAgIGVsc2lmICggJHRvayA9fiAvXihbeFwvXCtcLVwqXCVcJlwuXXxcPlw+KSQvICkgewoKICAgICAgICAgICAgIyBEbyBub3QgY29tcGxhaW4gaW4gJ3VzZScgc3RhdGVtZW50cywgd2hpY2ggaGF2ZSBzcGVjaWFsIHN5bnRheC4KICAgICAgICAgICAgIyBGb3IgZXhhbXBsZSwgZnJvbSBSVCMxMzAzNDQ6CiAgICAgICAgICAgICMgICB1c2UgbGliICRGaW5kQmluOjpCaW4gLiAnL2xpYic7CiAgICAgICAgICAgIGlmICggJHN0YXRlbWVudF90eXBlIG5lICd1c2UnICkgewogICAgICAgICAgICAgICAgY29tcGxhaW4oIm9wZXJhdG9yIGluIHByaW50IHN0YXRlbWVudCBub3QgcmVjb21tZW5kZWRcbiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRvcF9leHBlY3RlZCA9IE9QRVJBVE9SOwogICAgICAgIH0KICAgIH0KCiAgICAjIGFueXRoaW5nIGVsc2UuLi4KICAgIGVsc2UgewogICAgICAgICRvcF9leHBlY3RlZCA9IFVOS05PV047CiAgICB9CgogIFJFVFVSTjoKCiAgICAjIGRlYnVnIGFuZCBkaWFnbm9zdGljcyBjYW4gZ28gaGVyZS4uCgogICAgMCAmJiBkbyB7CiAgICAgICAgcHJpbnQgU1RET1VUCiJFWFBFQ1Q6IHJldHVybnMgJG9wX2V4cGVjdGVkIGZvciBsYXN0IHR5cGUgJGxhc3Rfbm9uYmxhbmtfdHlwZSB0b2tlbiAkbGFzdF9ub25ibGFua190b2tlblxuIjsKICAgIH07CgogICAgcmV0dXJuICRvcF9leHBlY3RlZDsKCn0gIyMgZW5kIG9mIHN1YiBvcGVyYXRvcl9leHBlY3RlZAoKc3ViIG5ld19zdGF0ZW1lbnRfb2sgewoKICAgICMgcmV0dXJuIHRydWUgaWYgdGhlIGN1cnJlbnQgdG9rZW4gY2FuIHN0YXJ0IGEgbmV3IHN0YXRlbWVudAogICAgIyBVU0VTIEdMT0JBTCBWQVJJQUJMRVM6ICRsYXN0X25vbmJsYW5rX3R5cGUKCiAgICByZXR1cm4gbGFiZWxfb2soKSAgICAjIGEgbGFiZWwgd291bGQgYmUgb2sgaGVyZQoKICAgICAgfHwgJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAnSic7ICAgICMgb3Igd2UgZm9sbG93IGEgbGFiZWwKCn0KCnN1YiBsYWJlbF9vayB7CgogICAgIyBEZWNpZGUgaWYgYSBiYXJlIHdvcmQgZm9sbG93ZWQgYnkgYSBjb2xvbiBoZXJlIGlzIGEgbGFiZWwKICAgICMgVVNFUyBHTE9CQUwgVkFSSUFCTEVTOiAkbGFzdF9ub25ibGFua190b2tlbiwgJGxhc3Rfbm9uYmxhbmtfdHlwZSwKICAgICMgJGJyYWNlX2RlcHRoLCBAYnJhY2VfdHlwZQoKICAgICMgaWYgaXQgZm9sbG93cyBhbiBvcGVuaW5nIG9yIGNsb3NpbmcgY29kZSBibG9jayBjdXJseSBicmFjZS4uCiAgICBpZiAoICggJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJ3snIHx8ICRsYXN0X25vbmJsYW5rX3Rva2VuIGVxICd9JyApCiAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAkbGFzdF9ub25ibGFua190b2tlbiApCiAgICB7CgogICAgICAgICMgaXQgaXMgYSBsYWJlbCBpZiBhbmQgb25seSBpZiB0aGUgY3VybHkgZW5jbG9zZXMgYSBjb2RlIGJsb2NrCiAgICAgICAgcmV0dXJuICRicmFjZV90eXBlWyRicmFjZV9kZXB0aF07CiAgICB9CgogICAgIyBvdGhlcndpc2UsIGl0IGlzIGEgbGFiZWwgaWYgYW5kIG9ubHkgaWYgaXQgZm9sbG93cyBhICc7JyAocmVhbCBvciBmYWtlKQogICAgIyBvciBhbm90aGVyIGxhYmVsCiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gKCAkbGFzdF9ub25ibGFua190eXBlIGVxICc7JyB8fCAkbGFzdF9ub25ibGFua190eXBlIGVxICdKJyApOwogICAgfQp9CgpzdWIgY29kZV9ibG9ja190eXBlIHsKCiAgICAjIERlY2lkZSBpZiB0aGlzIGlzIGEgYmxvY2sgb2YgY29kZSwgYW5kIGl0cyB0eXBlLgogICAgIyBNdXN0IGJlIGNhbGxlZCBvbmx5IHdoZW4gJHR5cGUgPSAkdG9rZW4gPSAneycKICAgICMgVGhlIHByb2JsZW0gaXMgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgc3RhcnQgb2YgYSBibG9jayBvZiBjb2RlCiAgICAjIGFuZCB0aGUgc3RhcnQgb2YgYW4gYW5vbnltb3VzIGhhc2ggcmVmZXJlbmNlCiAgICAjIFJldHVybnMgIiIgaWYgbm90IGNvZGUgYmxvY2ssIG90aGVyd2lzZSByZXR1cm5zICdsYXN0X25vbmJsYW5rX3Rva2VuJwogICAgIyB0byBpbmRpY2F0ZSB0aGUgdHlwZSBvZiBjb2RlIGJsb2NrLiAgKEZvciBleGFtcGxlLCAnbGFzdF9ub25ibGFua190b2tlbicKICAgICMgbWlnaHQgYmUgJ2lmJyBmb3IgYW4gaWYgYmxvY2ssICdlbHNlJyBmb3IgYW4gZWxzZSBibG9jaywgZXRjKS4KICAgICMgVVNFUyBHTE9CQUwgVkFSSUFCTEVTOiAkbGFzdF9ub25ibGFua190b2tlbiwgJGxhc3Rfbm9uYmxhbmtfdHlwZSwKICAgICMgJGxhc3Rfbm9uYmxhbmtfYmxvY2tfdHlwZSwgJGJyYWNlX2RlcHRoLCBAYnJhY2VfdHlwZQoKICAgICMgaGFuZGxlIGNhc2Ugb2YgbXVsdGlwbGUgJ3sncwoKIyBwcmludCAiQkxPQ0tfVFlQRSBFWEFNSU5JTkc6IHR5cGU9JGxhc3Rfbm9uYmxhbmtfdHlwZSB0b2s9JGxhc3Rfbm9uYmxhbmtfdG9rZW5cbiI7CgogICAgbXkgKCAkaSwgJHJ0b2tlbnMsICRydG9rZW5fdHlwZSwgJG1heF90b2tlbl9pbmRleCApID0gQF87CiAgICBpZiAoICAgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJ3snCiAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAkbGFzdF9ub25ibGFua190b2tlbiApCiAgICB7CgogICAgICAgICMgb3BlbmluZyBicmFjZSB3aGVyZSBhIHN0YXRlbWVudCBtYXkgYXBwZWFyIGlzIHByb2JhYmx5CiAgICAgICAgIyBhIGNvZGUgYmxvY2sgYnV0IG1pZ2h0IGJlIGFuZCBhbm9ueW1vdXMgaGFzaCByZWZlcmVuY2UKICAgICAgICBpZiAoICRicmFjZV90eXBlWyRicmFjZV9kZXB0aF0gKSB7CiAgICAgICAgICAgIHJldHVybiBkZWNpZGVfaWZfY29kZV9ibG9jayggJGksICRydG9rZW5zLCAkcnRva2VuX3R5cGUsCiAgICAgICAgICAgICAgICAkbWF4X3Rva2VuX2luZGV4ICk7CiAgICAgICAgfQoKICAgICAgICAjIGNhbm5vdCBzdGFydCBhIGNvZGUgYmxvY2sgd2l0aGluIGFuIGFub255bW91cyBoYXNoCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAiIjsKICAgICAgICB9CiAgICB9CgogICAgZWxzaWYgKCAkbGFzdF9ub25ibGFua190b2tlbiBlcSAnOycgKSB7CgogICAgICAgICMgYW4gb3BlbmluZyBicmFjZSB3aGVyZSBhIHN0YXRlbWVudCBtYXkgYXBwZWFyIGlzIHByb2JhYmx5CiAgICAgICAgIyBhIGNvZGUgYmxvY2sgYnV0IG1pZ2h0IGJlIGFuZCBhbm9ueW1vdXMgaGFzaCByZWZlcmVuY2UKICAgICAgICByZXR1cm4gZGVjaWRlX2lmX2NvZGVfYmxvY2soICRpLCAkcnRva2VucywgJHJ0b2tlbl90eXBlLAogICAgICAgICAgICAkbWF4X3Rva2VuX2luZGV4ICk7CiAgICB9CgogICAgIyBoYW5kbGUgY2FzZSBvZiAnfXsnCiAgICBlbHNpZiAoJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJ30nCiAgICAgICAgJiYgJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAkbGFzdF9ub25ibGFua190b2tlbiApCiAgICB7CgogICAgICAgICMgYSB9IHsgc2l0dWF0aW9uIC4uLgogICAgICAgICMgY291bGQgYmUgaGFzaCByZWZlcmVuY2UgYWZ0ZXIgY29kZSBibG9jay4uKGJsa3R5cGUxLnQpCiAgICAgICAgaWYgKCRsYXN0X25vbmJsYW5rX2Jsb2NrX3R5cGUpIHsKICAgICAgICAgICAgcmV0dXJuIGRlY2lkZV9pZl9jb2RlX2Jsb2NrKCAkaSwgJHJ0b2tlbnMsICRydG9rZW5fdHlwZSwKICAgICAgICAgICAgICAgICRtYXhfdG9rZW5faW5kZXggKTsKICAgICAgICB9CgogICAgICAgICMgbXVzdCBiZSBhIGJsb2NrIGlmIGl0IGZvbGxvd3MgYSBjbG9zaW5nIGhhc2ggcmVmZXJlbmNlCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAkbGFzdF9ub25ibGFua190b2tlbjsKICAgICAgICB9CiAgICB9CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBOT1RFOiBicmFjZXMgYWZ0ZXIgdHlwZSBjaGFyYWN0ZXJzIHN0YXJ0IGNvZGUgYmxvY2tzLCBidXQgZm9yCiAgICAjIHNpbXBsaWNpdHkgdGhlc2UgYXJlIG5vdCBpZGVudGlmaWVkIGFzIHN1Y2guICBTZWUgYWxzbwogICAgIyBzdWIgaXNfbm9uX3N0cnVjdHVyYWxfYnJhY2UuCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIyAgICBlbHNpZiAoICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ3QnICkgewojIyAgICAgICByZXR1cm4gJGxhc3Rfbm9uYmxhbmtfdG9rZW47CiMjICAgIH0KCiAgICAjIGJyYWNlIGFmdGVyIGxhYmVsOgogICAgZWxzaWYgKCAkbGFzdF9ub25ibGFua190eXBlIGVxICdKJyApIHsKICAgICAgICByZXR1cm4gJGxhc3Rfbm9uYmxhbmtfdG9rZW47CiAgICB9CgojIG90aGVyd2lzZSwgbG9vayBhdCBwcmV2aW91cyB0b2tlbi4gIFRoaXMgbXVzdCBiZSBhIGNvZGUgYmxvY2sgaWYKIyBpdCBmb2xsb3dzIGFueSBvZiB0aGVzZToKIyAvXihCRUdJTnxFTkR8Q0hFQ0t8SU5JVHxBVVRPTE9BRHxERVNUUk9ZfFVOSVRDSEVDS3xjb250aW51ZXxpZnxlbHNpZnxlbHNlfHVubGVzc3xkb3x3aGlsZXx1bnRpbHxldmFsfGZvcnxmb3JlYWNofG1hcHxncmVwfHNvcnQpJC8KICAgIGVsc2lmICggJGlzX2NvZGVfYmxvY2tfdG9rZW57JGxhc3Rfbm9uYmxhbmtfdG9rZW59ICkgewoKICAgICAgICAjIEJ1ZyBQYXRjaDogTm90ZSB0aGF0IHRoZSBvcGVuaW5nIGJyYWNlIGFmdGVyIHRoZSAnaWYnIGluIHRoZSBmb2xsb3dpbmcKICAgICAgICAjIHNuaXBwZXQgaXMgYW4gYW5vbnltb3VzIGhhc2ggcmVmIGFuZCBub3QgYSBjb2RlIGJsb2NrIQogICAgICAgICMgICBwcmludCAnaGknIGlmIHsgeCA9PiAxLCB9LT57eH07CiAgICAgICAgIyBXZSBjYW4gaWRlbnRpZnkgdGhpcyBzaXR1YXRpb24gYmVjYXVzZSB0aGUgbGFzdCBub25ibGFuayB0eXBlCiAgICAgICAgIyB3aWxsIGJlIGEga2V5d29yZCAoaW5zdGVhZCBvZiBhIGNsb3NpbmcgcGVyZW4pCiAgICAgICAgaWYgKCAgICRsYXN0X25vbmJsYW5rX3Rva2VuID1+IC9eKGlmfHVubGVzcykkLwogICAgICAgICAgICAmJiAkbGFzdF9ub25ibGFua190eXBlIGVxICdrJyApCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gIiI7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICByZXR1cm4gJGxhc3Rfbm9uYmxhbmtfdG9rZW47CiAgICAgICAgfQogICAgfQoKICAgICMgb3IgYSBzdWIgb3IgcGFja2FnZSBCTE9DSwogICAgZWxzaWYgKCAoICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ2knIHx8ICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ3QnICkKICAgICAgICAmJiAkbGFzdF9ub25ibGFua190b2tlbiA9fiAvXihzdWJ8cGFja2FnZSlcYi8gKQogICAgewogICAgICAgIHJldHVybiAkbGFzdF9ub25ibGFua190b2tlbjsKICAgIH0KCiAgICAjIG9yIGEgc3ViIGFsaWFzCiAgICBlbHNpZiAoKCAkbGFzdF9ub25ibGFua190eXBlIGVxICdpJyB8fCAkbGFzdF9ub25ibGFua190eXBlIGVxICd0JyApCiAgICAgICAgJiYgKCAkaXNfc3VieyRsYXN0X25vbmJsYW5rX3Rva2VufSApICkKICAgIHsKICAgICAgICByZXR1cm4gJ3N1Yic7CiAgICB9CgogICAgZWxzaWYgKCAkc3RhdGVtZW50X3R5cGUgPX4gL14oc3VifHBhY2thZ2UpXGIvICkgewogICAgICAgIHJldHVybiAkc3RhdGVtZW50X3R5cGU7CiAgICB9CgogICAgIyB1c2VyLWRlZmluZWQgc3VicyB3aXRoIGJsb2NrIHBhcmFtZXRlcnMgKGxpa2UgZ3JlcC9tYXAvZXZhbCkKICAgIGVsc2lmICggJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAnRycgKSB7CiAgICAgICAgcmV0dXJuICRsYXN0X25vbmJsYW5rX3Rva2VuOwogICAgfQoKICAgICMgY2hlY2sgYmFyZXdvcmQKICAgIGVsc2lmICggJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAndycgKSB7CiAgICAgICAgcmV0dXJuIGRlY2lkZV9pZl9jb2RlX2Jsb2NrKCAkaSwgJHJ0b2tlbnMsICRydG9rZW5fdHlwZSwKICAgICAgICAgICAgJG1heF90b2tlbl9pbmRleCApOwogICAgfQoKICAgICMgUGF0Y2ggZm9yIGJ1ZyAjIFJUICM5NDMzOCByZXBvcnRlZCBieSBEYW5pZWwgVHJpemVuCiAgICAjIGZvci1sb29wIGluIGEgcGFyZW50aGVzaXplZCBibG9jay1tYXAgdHJpZ2dlcmluZyBhbiBlcnJvciBtZXNzYWdlOgogICAgIyAgICBtYXAoIHsgZm9yZWFjaCBteSAkaXRlbSAoICcwJywgJzEnICkgeyBwcmludCAkaXRlbX0gfSBxdyhhIGIgYykgKTsKICAgICMgQ2hlY2sgZm9yIGEgY29kZSBibG9jayB3aXRoaW4gYSBwYXJlbnRoZXNpemVkIGZ1bmN0aW9uIGNhbGwKICAgIGVsc2lmICggJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJygnICkgewogICAgICAgIG15ICRwYXJlbl90eXBlID0gJHBhcmVuX3R5cGVbJHBhcmVuX2RlcHRoXTsKICAgICAgICBpZiAoICRwYXJlbl90eXBlICYmICRwYXJlbl90eXBlID1+IC9eKG1hcHxncmVwfHNvcnQpJC8gKSB7CgogICAgICAgICAgICAjIFdlIHdpbGwgbWFyayB0aGlzIGFzIGEgY29kZSBibG9jayBidXQgdXNlIHR5cGUgJ3QnIGluc3RlYWQKICAgICAgICAgICAgIyBvZiB0aGUgbmFtZSBvZiB0aGUgY29udGluaW5nIGZ1bmN0aW9uLiAgVGhpcyB3aWxsIGFsbG93IGZvcgogICAgICAgICAgICAjIGNvcnJlY3QgcGFyc2luZyBidXQgd2lsbCB1c3VhbGx5IHByb2R1Y2UgYmV0dGVyIGZvcm1hdHRpbmcuCiAgICAgICAgICAgICMgQnJhY2VzIHdpdGggYmxvY2sgdHlwZSAndCcgYXJlIG5vdCBicm9rZW4gb3BlbiBhdXRvbWF0aWNhbGx5CiAgICAgICAgICAgICMgaW4gdGhlIGZvcm1hdHRlciBhcyBhcmUgb3RoZXIgY29kZSBibG9jayB0eXBlcywgYW5kIHRoaXMgdXN1YWxseQogICAgICAgICAgICAjIHdvcmtzIGJlc3QuCiAgICAgICAgICAgIHJldHVybiAndCc7ICAgICMgKE5vdCAkcGFyZW5fdHlwZSkKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAiIjsKICAgICAgICB9CiAgICB9CgogICAgIyBoYW5kbGUgdW5rbm93biBzeW50YXggJykgeycKICAgICMgd2UgcHJldmlvdXNseSBhcHBlbmRlZCBhICcoKScgdG8gbWFyayB0aGlzIGNhc2UKICAgIGVsc2lmICggJGxhc3Rfbm9uYmxhbmtfdG9rZW4gPX4gL1woXCkkLyApIHsKICAgICAgICByZXR1cm4gJGxhc3Rfbm9uYmxhbmtfdG9rZW47CiAgICB9CgogICAgIyBhbnl0aGluZyBlbHNlIG11c3QgYmUgYW5vbnltb3VzIGhhc2ggcmVmZXJlbmNlCiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gIiI7CiAgICB9Cn0KCnN1YiBkZWNpZGVfaWZfY29kZV9ibG9jayB7CgogICAgIyBVU0VTIEdMT0JBTCBWQVJJQUJMRVM6ICRsYXN0X25vbmJsYW5rX3Rva2VuCiAgICBteSAoICRpLCAkcnRva2VucywgJHJ0b2tlbl90eXBlLCAkbWF4X3Rva2VuX2luZGV4ICkgPSBAXzsKCiAgICBteSAoICRuZXh0X25vbmJsYW5rX3Rva2VuLCAkaV9uZXh0ICkgPQogICAgICBmaW5kX25leHRfbm9uYmxhbmtfdG9rZW4oICRpLCAkcnRva2VucywgJG1heF90b2tlbl9pbmRleCApOwoKICAgICMgd2UgYXJlIGF0IGEgJ3snIHdoZXJlIGEgc3RhdGVtZW50IG1heSBhcHBlYXIuCiAgICAjIFdlIG11c3QgZGVjaWRlIGlmIHRoaXMgYnJhY2Ugc3RhcnRzIGFuIGFub255bW91cyBoYXNoIG9yIGEgY29kZQogICAgIyBibG9jay4KICAgICMgcmV0dXJuICIiIGlmIGFub255bW91cyBoYXNoLCBhbmQgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gb3RoZXJ3aXNlCgogICAgIyBpbml0aWFsaXplIHRvIGJlIGNvZGUgQkxPQ0sKICAgIG15ICRjb2RlX2Jsb2NrX3R5cGUgPSAkbGFzdF9ub25ibGFua190b2tlbjsKCiAgICAjIENoZWNrIGZvciB0aGUgY29tbW9uIGNhc2Ugb2YgYW4gZW1wdHkgYW5vbnltb3VzIGhhc2ggcmVmZXJlbmNlOgogICAgIyBNYXliZSBzb21ldGhpbmcgbGlrZSBzdWIgeyB7IH0gfQogICAgaWYgKCAkbmV4dF9ub25ibGFua190b2tlbiBlcSAnfScgKSB7CiAgICAgICAgJGNvZGVfYmxvY2tfdHlwZSA9ICIiOwogICAgfQoKICAgIGVsc2UgewoKICAgICAgICAjIFRvIGd1ZXNzIGlmIHRoaXMgJ3snIGlzIGFuIGFub255bW91cyBoYXNoIHJlZmVyZW5jZSwgbG9vayBhaGVhZAogICAgICAgICMgYW5kIHRlc3QgYXMgZm9sbG93czoKICAgICAgICAjCiAgICAgICAgIyBpdCBpcyBhIGhhc2ggcmVmZXJlbmNlIGlmIG5leHQgY29tZToKICAgICAgICAjICAgLSBhIHN0cmluZyBvciBkaWdpdCBmb2xsb3dlZCBieSBhIGNvbW1hIG9yID0+CiAgICAgICAgIyAgIC0gYmFyZXdvcmQgZm9sbG93ZWQgYnkgPT4KICAgICAgICAjIG90aGVyd2lzZSBpdCBpcyBhIGNvZGUgYmxvY2sKICAgICAgICAjCiAgICAgICAgIyBFeGFtcGxlcyBvZiBhbm9ueW1vdXMgaGFzaCByZWY6CiAgICAgICAgIyB7J2FhJyx9OwogICAgICAgICMgezEsMn0KICAgICAgICAjCiAgICAgICAgIyBFeGFtcGxlcyBvZiBjb2RlIGJsb2NrczoKICAgICAgICAjIHsxOyBwcmludCAiaGVsbG9cbiIsIDE7fQogICAgICAgICMgeyRhLDF9OwoKICAgICAgICAjIFdlIGFyZSBvbmx5IGdvaW5nIHRvIGxvb2sgYWhlYWQgb25lIG1vcmUgKG5vbmJsYW5rL2NvbW1lbnQpIGxpbmUuCiAgICAgICAgIyBTdHJhbmdlIGZvcm1hdHRpbmcgY291bGQgY2F1c2UgYSBiYWQgZ3Vlc3MsIGJ1dCB0aGF0J3MgdW5saWtlbHkuCiAgICAgICAgbXkgQHByZV90eXBlczsKICAgICAgICBteSBAcHJlX3Rva2VuczsKCiAgICAgICAgIyBJZ25vcmUgdGhlIHJlc3Qgb2YgdGhpcyBsaW5lIGlmIGl0IGlzIGEgc2lkZSBjb21tZW50CiAgICAgICAgaWYgKCAkbmV4dF9ub25ibGFua190b2tlbiBuZSAnIycgKSB7CiAgICAgICAgICAgIEBwcmVfdHlwZXMgID0gQHskcnRva2VuX3R5cGV9WyAkaSArIDEgLi4gJG1heF90b2tlbl9pbmRleCBdOwogICAgICAgICAgICBAcHJlX3Rva2VucyA9IEB7JHJ0b2tlbnN9WyAkaSArIDEgLi4gJG1heF90b2tlbl9pbmRleCBdOwogICAgICAgIH0KICAgICAgICBteSAoICRycHJlX3Rva2VucywgJHJwcmVfdHlwZXMgKSA9CiAgICAgICAgICBwZWVrX2FoZWFkX2Zvcl9uX25vbmJsYW5rX3ByZV90b2tlbnMoMjApOyAgICAjIDIwIGlzIGFyYml0cmFyeSBidXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZ2VuZXJvdXMsIGFuZCBwcmV2ZW50cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3YXN0aW5nIGxvdHMgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGltZSBpbiBtYW5nbGVkIGZpbGVzCiAgICAgICAgaWYgKCBkZWZpbmVkKCRycHJlX3R5cGVzKSAmJiBAeyRycHJlX3R5cGVzfSApIHsKICAgICAgICAgICAgcHVzaCBAcHJlX3R5cGVzLCAgQHskcnByZV90eXBlc307CiAgICAgICAgICAgIHB1c2ggQHByZV90b2tlbnMsIEB7JHJwcmVfdG9rZW5zfTsKICAgICAgICB9CgogICAgICAgICMgcHV0IGEgc2VudGluZWwgdG9rZW4gdG8gc2ltcGxpZnkgc3RvcHBpbmcgdGhlIHNlYXJjaAogICAgICAgIHB1c2ggQHByZV90eXBlcywgJ30nOwogICAgICAgIHB1c2ggQHByZV90eXBlcywgJ30nOwoKICAgICAgICBteSAkamJlZyA9IDA7CiAgICAgICAgJGpiZWcgPSAxIGlmICRwcmVfdHlwZXNbMF0gZXEgJ2InOwoKICAgICAgICAjIGZpcnN0IGxvb2sgZm9yIG9uZSBvZiB0aGVzZQogICAgICAgICMgIC0gYmFyZXdvcmQKICAgICAgICAjICAtIGJhcmV3b3JkIHdpdGggbGVhZGluZyAtCiAgICAgICAgIyAgLSBkaWdpdAogICAgICAgICMgIC0gcXVvdGVkIHN0cmluZwogICAgICAgIG15ICRqID0gJGpiZWc7CiAgICAgICAgaWYgKCAkcHJlX3R5cGVzWyRqXSA9fiAvXltcJ1wiXS8gKSB7CgogICAgICAgICAgICAjIGZpbmQgdGhlIGNsb3NpbmcgcXVvdGU7IGRvbid0IHdvcnJ5IGFib3V0IGVzY2FwZXMKICAgICAgICAgICAgbXkgJHF1b3RlX21hcmsgPSAkcHJlX3R5cGVzWyRqXTsKICAgICAgICAgICAgZm9yZWFjaCBteSAkayAoICRqICsgMSAuLiBAcHJlX3R5cGVzIC0gMiApIHsKICAgICAgICAgICAgICAgIGlmICggJHByZV90eXBlc1ska10gZXEgJHF1b3RlX21hcmsgKSB7CiAgICAgICAgICAgICAgICAgICAgJGogPSAkayArIDE7CiAgICAgICAgICAgICAgICAgICAgbXkgJG5leHQgPSAkcHJlX3R5cGVzWyRqXTsKICAgICAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJHByZV90eXBlc1skal0gZXEgJ2QnICkgewogICAgICAgICAgICAkaisrOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRwcmVfdHlwZXNbJGpdIGVxICd3JyApIHsKICAgICAgICAgICAgJGorKzsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkcHJlX3R5cGVzWyRqXSBlcSAnLScgJiYgJHByZV90eXBlc1sgKyskaiBdIGVxICd3JyApIHsKICAgICAgICAgICAgJGorKzsKICAgICAgICB9CiAgICAgICAgaWYgKCAkaiA+ICRqYmVnICkgewoKICAgICAgICAgICAgJGorKyBpZiAkcHJlX3R5cGVzWyRqXSBlcSAnYic7CgogICAgICAgICAgICAjIFBhdGNoZWQgZm9yIFJUICM5NTcwOAogICAgICAgICAgICBpZiAoCgogICAgICAgICAgICAgICAgIyBpdCBpcyBhIGNvbW1hIHdoaWNoIGlzIG5vdCBhIHBhdHRlcm4gZGVsaW1ldGVyIGV4Y2VwdCBmb3IgcXcKICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAkcHJlX3R5cGVzWyRqXSBlcSAnLCcKICAgICAgICAgICAgICAgICAgICAmJiAkcHJlX3Rva2Vuc1skamJlZ10gIX4gL14oc3xtfHl8dHJ8cXJ8cXxxcXxxeCkkLwogICAgICAgICAgICAgICAgKQoKICAgICAgICAgICAgICAgICMgb3IgYSA9PgogICAgICAgICAgICAgICAgfHwgKCAkcHJlX3R5cGVzWyRqXSBlcSAnPScgJiYgJHByZV90eXBlc1sgKyskaiBdIGVxICc+JyApCiAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkY29kZV9ibG9ja190eXBlID0gIiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRjb2RlX2Jsb2NrX3R5cGU7Cn0KCnN1YiByZXBvcnRfdW5leHBlY3RlZCB7CgogICAgIyByZXBvcnQgdW5leHBlY3RlZCB0b2tlbiB0eXBlIGFuZCBzaG93IHdoZXJlIGl0IGlzCiAgICAjIFVTRVMgR0xPQkFMIFZBUklBQkxFUzogJHRva2VuaXplcl9zZWxmCiAgICBteSAoICRmb3VuZCwgJGV4cGVjdGluZywgJGlfdG9rLCAkbGFzdF9ub25ibGFua19pLCAkcnByZXRva2VuX21hcCwKICAgICAgICAkcnByZXRva2VuX3R5cGUsICRpbnB1dF9saW5lICkKICAgICAgPSBAXzsKCiAgICBpZiAoICsrJHRva2VuaXplcl9zZWxmLT5bX3VuZXhwZWN0ZWRfZXJyb3JfY291bnRfXSA8PSBNQVhfTkFHX01FU1NBR0VTICkgewogICAgICAgIG15ICRtc2cgPSAiZm91bmQgJGZvdW5kIHdoZXJlICRleHBlY3RpbmcgZXhwZWN0ZWQiOwogICAgICAgIG15ICRwb3MgPSAkcnByZXRva2VuX21hcC0+WyRpX3Rva107CiAgICAgICAgaW50ZXJydXB0X2xvZ2ZpbGUoKTsKICAgICAgICBteSAkaW5wdXRfbGluZV9udW1iZXIgPSAkdG9rZW5pemVyX3NlbGYtPltfbGFzdF9saW5lX251bWJlcl9dOwogICAgICAgIG15ICggJG9mZnNldCwgJG51bWJlcmVkX2xpbmUsICR1bmRlcmxpbmUgKSA9CiAgICAgICAgICBtYWtlX251bWJlcmVkX2xpbmUoICRpbnB1dF9saW5lX251bWJlciwgJGlucHV0X2xpbmUsICRwb3MgKTsKICAgICAgICAkdW5kZXJsaW5lID0gd3JpdGVfb25fdW5kZXJsaW5lKCAkdW5kZXJsaW5lLCAkcG9zIC0gJG9mZnNldCwgJ14nICk7CgogICAgICAgIG15ICR0cmFpbGVyID0gIiI7CiAgICAgICAgaWYgKCAoICRpX3RvayA+IDAgKSAmJiAoICRsYXN0X25vbmJsYW5rX2kgPj0gMCApICkgewogICAgICAgICAgICBteSAkcG9zX3ByZXYgPSAkcnByZXRva2VuX21hcC0+WyRsYXN0X25vbmJsYW5rX2ldOwogICAgICAgICAgICBteSAkbnVtOwogICAgICAgICAgICBpZiAoICRycHJldG9rZW5fdHlwZS0+WyAkaV90b2sgLSAxIF0gZXEgJ2InICkgewogICAgICAgICAgICAgICAgJG51bSA9ICRycHJldG9rZW5fbWFwLT5bICRpX3RvayAtIDEgXSAtICRwb3NfcHJldjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRudW0gPSAkcG9zIC0gJHBvc19wcmV2OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJG51bSA+IDQwICkgeyAkbnVtID0gNDA7ICRwb3NfcHJldiA9ICRwb3MgLSA0MDsgfQoKICAgICAgICAgICAgJHVuZGVybGluZSA9CiAgICAgICAgICAgICAgd3JpdGVfb25fdW5kZXJsaW5lKCAkdW5kZXJsaW5lLCAkcG9zX3ByZXYgLSAkb2Zmc2V0LCAnLScgeCAkbnVtICk7CiAgICAgICAgICAgICR0cmFpbGVyID0gIiAocHJldmlvdXMgdG9rZW4gdW5kZXJsaW5lZCkiOwogICAgICAgIH0KICAgICAgICAkdW5kZXJsaW5lID1+IHMvXHMrJC8vOwogICAgICAgIHdhcm5pbmcoICRudW1iZXJlZF9saW5lIC4gIlxuIiApOwogICAgICAgIHdhcm5pbmcoICR1bmRlcmxpbmUgLiAiXG4iICk7CiAgICAgICAgd2FybmluZyggJG1zZyAuICR0cmFpbGVyIC4gIlxuIiApOwogICAgICAgIHJlc3VtZV9sb2dmaWxlKCk7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBpc19ub25fc3RydWN0dXJhbF9icmFjZSB7CgogICAgIyBEZWNpZGUgaWYgYSBicmFjZSBvciBicmFja2V0IGlzIHN0cnVjdHVyYWwgb3Igbm9uLXN0cnVjdHVyYWwKICAgICMgYnkgbG9va2luZyBhdCB0aGUgcHJldmlvdXMgdG9rZW4gYW5kIHR5cGUKICAgICMgVVNFUyBHTE9CQUwgVkFSSUFCTEVTOiAkbGFzdF9ub25ibGFua190eXBlLCAkbGFzdF9ub25ibGFua190b2tlbgoKICAgICMgRVhQRVJJTUVOVEFMOiBNYXJrIHNsaWNlcyBhcyBzdHJ1Y3R1cmFsOyBpZGVhIHdhcyB0byBpbXByb3ZlIGZvcm1hdHRpbmcuCiAgICAjIFRlbnRhdGl2ZWx5IGRlYWN0aXZhdGVkIGJlY2F1c2UgaXQgY2F1c2VkIHRoZSB3cm9uZyBvcGVyYXRvciBleHBlY3RhdGlvbgogICAgIyBmb3IgdGhpcyBjb2RlOgogICAgIyAgICAgICR1c2VyID0gQHZhcnNbMV0gLyAxMDA7CiAgICAjIE11c3QgdXBkYXRlIHN1YiBvcGVyYXRvcl9leHBlY3RlZCBiZWZvcmUgcmUtaW1wbGVtZW50aW5nLgogICAgIyBpZiAoICRsYXN0X25vbmJsYW5rX3R5cGUgZXEgJ2knICYmICRsYXN0X25vbmJsYW5rX3Rva2VuID1+IC9eQC8gKSB7CiAgICAjICAgIHJldHVybiAwOwogICAgIyB9CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBOT1RFOiBicmFjZXMgYWZ0ZXIgdHlwZSBjaGFyYWN0ZXJzIHN0YXJ0IGNvZGUgYmxvY2tzLCBidXQgZm9yCiAgICAjIHNpbXBsaWNpdHkgdGhlc2UgYXJlIG5vdCBpZGVudGlmaWVkIGFzIHN1Y2guICBTZWUgYWxzbwogICAgIyBzdWIgY29kZV9ibG9ja190eXBlCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgIyNpZiAoJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAndCcpIHtyZXR1cm4gMH0KCiAgICAjIG90aGVyd2lzZSwgaXQgaXMgbm9uLXN0cnVjdHVyYWwgaWYgaXQgaXMgZGVjb3JhdGVkCiAgICAjIGJ5IHR5cGUgaW5mb3JtYXRpb24uCiAgICAjIEZvciBleGFtcGxlLCB0aGUgJ3snIGhlcmUgaXMgbm9uLXN0cnVjdHVyYWw6ICAgJHt4eHh9CiAgICByZXR1cm4gKAogICAgICAgICRsYXN0X25vbmJsYW5rX3Rva2VuID1+IC9eKFtcJFxAXCpcJlwlXCldfC0+fDo6KS8KCiAgICAgICAgICAjIG9yIGlmIHdlIGZvbGxvdyBhIGhhc2ggb3IgYXJyYXkgY2xvc2luZyBjdXJseSBicmFjZSBvciBicmFja2V0CiAgICAgICAgICAjIEZvciBleGFtcGxlLCB0aGUgc2Vjb25kICd7JyBpbiB0aGlzIGlzIG5vbi1zdHJ1Y3R1cmFsOiAkYXsneCd9eyd5J30KICAgICAgICAgICMgYmVjYXVzZSB0aGUgZmlyc3QgJ30nIHdvdWxkIGhhdmUgYmVlbiBnaXZlbiB0eXBlICdSJwogICAgICAgICAgfHwgJGxhc3Rfbm9uYmxhbmtfdHlwZSA9fiAvXihbUlxdXSkkLwogICAgKTsKfQoKIyMjIyMjIyMjaSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBUb2tlbml6ZXIgcm91dGluZXMgZm9yIHRyYWNraW5nIGNvbnRhaW5lciBuZXN0aW5nIGRlcHRocwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBUaGUgZm9sbG93aW5nIHJvdXRpbmVzIGtlZXAgdHJhY2sgb2YgbmVzdGluZyBkZXB0aHMgb2YgdGhlIG5lc3RpbmcKIyB0eXBlcywgKCBbIHsgYW5kID8uICBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgZGV0ZXJtaW5pbmcgdGhlIGluZGVudGF0aW9uCiMgbGV2ZWwsIGFuZCBhbHNvIGZvciBkZWJ1Z2dpbmcgcHJvZ3JhbXMuICBOb3Qgb25seSBkbyB0aGV5IGtlZXAgdHJhY2sgb2YKIyBuZXN0aW5nIGRlcHRocyBvZiB0aGUgaW5kaXZpZHVhbCBicmFjZSB0eXBlcywgYnV0IHRoZXkgY2hlY2sgdGhhdCBlYWNoCiMgb2YgdGhlIG90aGVyIGJyYWNlIHR5cGVzIGlzIGJhbGFuY2VkIHdpdGhpbiBtYXRjaGluZyBwYWlycy4gIEZvcgojIGV4YW1wbGUsIGlmIHRoZSBwcm9ncmFtIHNlZXMgdGhpcyBzZXF1ZW5jZToKIwojICAgICAgICAgeyAgKCAoICkgfQojCiMgdGhlbiBpdCBjYW4gZGV0ZXJtaW5lIHRoYXQgdGhlcmUgaXMgYW4gZXh0cmEgbGVmdCBwYXJlbiBzb21ld2hlcmUKIyBiZXR3ZWVuIHRoZSB7IGFuZCB0aGUgfS4gIEFuZCBzbyBvbiB3aXRoIGV2ZXJ5IG90aGVyIHBvc3NpYmxlCiMgY29tYmluYXRpb24gb2Ygb3V0ZXIgYW5kIGlubmVyIGJyYWNlIHR5cGVzLiAgRm9yIGFub3RoZXIKIyBleGFtcGxlOgojCiMgICAgICAgICAoIFsgLi4uLi4gXSAgXSApCiMKIyB3aGljaCBoYXMgYW4gZXh0cmEgXSB3aXRoaW4gdGhlIHBhcmVucy4KIwojIFRoZSBicmFjZSB0eXBlcyBoYXZlIGluZGV4ZXMgMCAuLiAzIHdoaWNoIGFyZSBpbmRleGVzIGludG8KIyB0aGUgbWF0cmljZXMuCiMKIyBUaGUgcGFpciA/IDogYXJlIHRyZWF0ZWQgYXMganVzdCBhbm90aGVyIG5lc3RpbmcgdHlwZSwgd2l0aCA/IGFjdGluZwojIGFzIHRoZSBvcGVuaW5nIGJyYWNlIGFuZCA6IGFjdGluZyBhcyB0aGUgY2xvc2luZyBicmFjZS4KIwojIFRoZSBtYXRyaXgKIwojICAgICAgICAgJGRlcHRoX2FycmF5WyRhXVskYl1bICRjdXJyZW50X2RlcHRoWyRhXSBdID0gJGN1cnJlbnRfZGVwdGhbJGJdOwojCiMgc2F2ZXMgdGhlIG5lc3RpbmcgZGVwdGggb2YgYnJhY2UgdHlwZSAkYiAod2hlcmUgJGIgaXMgZWl0aGVyIG9mIHRoZSBvdGhlcgojIG5lc3RpbmcgdHlwZXMpIHdoZW4gYnJhY2UgdHlwZSAkYSBlbnRlcnMgYSBuZXcgZGVwdGguICBXaGVuIHRoaXMgZGVwdGgKIyBkZWNyZWFzZXMsIGEgY2hlY2sgaXMgbWFkZSB0aGF0IHRoZSBjdXJyZW50IGRlcHRoIG9mIGJyYWNlIHR5cGVzICRiIGlzCiMgdW5jaGFuZ2VkLCBvciBvdGhlcndpc2UgdGhlcmUgbXVzdCBoYXZlIGJlZW4gYW4gZXJyb3IuICBUaGlzIGNhbgojIGJlIHZlcnkgdXNlZnVsIGZvciBsb2NhbGl6aW5nIGVycm9ycywgcGFydGljdWxhcmx5IHdoZW4gcGVybCBydW5zIHRvCiMgdGhlIGVuZCBvZiBhIGxhcmdlIGZpbGUgKHN1Y2ggYXMgdGhpcyBvbmUpIGFuZCBhbm5vdW5jZXMgdGhhdCB0aGVyZQojIGlzIGEgcHJvYmxlbSBzb21ld2hlcmUuCiMKIyBBIG51bWVyaWNhbCBzZXF1ZW5jZSBudW1iZXIgaXMgbWFpbnRhaW5lZCBmb3IgZXZlcnkgbmVzdGluZyB0eXBlLAojIHNvIHRoYXQgZWFjaCBtYXRjaGluZyBwYWlyIGNhbiBiZSB1bmlxdWVseSBpZGVudGlmaWVkIGluIGEgc2ltcGxlCiMgd2F5LgoKc3ViIGluY3JlYXNlX25lc3RpbmdfZGVwdGggewogICAgbXkgKCAkYWEsICRwb3MgKSA9IEBfOwoKICAgICMgVVNFUyBHTE9CQUwgVkFSSUFCTEVTOiAkdG9rZW5pemVyX3NlbGYsIEBjdXJyZW50X2RlcHRoLAogICAgIyBAY3VycmVudF9zZXF1ZW5jZV9udW1iZXIsIEBkZXB0aF9hcnJheSwgQHN0YXJ0aW5nX2xpbmVfb2ZfY3VycmVudF9kZXB0aCwKICAgICMgJHN0YXRlbWVudF90eXBlCiAgICAkY3VycmVudF9kZXB0aFskYWFdKys7CiAgICAkdG90YWxfZGVwdGgrKzsKICAgICR0b3RhbF9kZXB0aFskYWFdWyAkY3VycmVudF9kZXB0aFskYWFdIF0gPSAkdG90YWxfZGVwdGg7CiAgICBteSAkaW5wdXRfbGluZV9udW1iZXIgPSAkdG9rZW5pemVyX3NlbGYtPltfbGFzdF9saW5lX251bWJlcl9dOwogICAgbXkgJGlucHV0X2xpbmUgICAgICAgID0gJHRva2VuaXplcl9zZWxmLT5bX2xpbmVfb2ZfdGV4dF9dOwoKICAgICMgU2VxdWVuY2UgbnVtYmVycyBpbmNyZW1lbnQgYnkgbnVtYmVyIG9mIGl0ZW1zLiAgVGhpcyBrZWVwcwogICAgIyBhIHVuaXF1ZSBzZXQgb2YgbnVtYmVycyBidXQgc3RpbGwgYWxsb3dzIHRoZSByZWxhdGl2ZSBsb2NhdGlvbgogICAgIyBvZiBhbnkgdHlwZSB0byBiZSBkZXRlcm1pbmVkLgogICAgJG5lc3Rpbmdfc2VxdWVuY2VfbnVtYmVyWyRhYV0gKz0gc2NhbGFyKEBjbG9zaW5nX2JyYWNlX25hbWVzKTsKICAgIG15ICRzZXFubyA9ICRuZXN0aW5nX3NlcXVlbmNlX251bWJlclskYWFdOwogICAgJGN1cnJlbnRfc2VxdWVuY2VfbnVtYmVyWyRhYV1bICRjdXJyZW50X2RlcHRoWyRhYV0gXSA9ICRzZXFubzsKCiAgICAkc3RhcnRpbmdfbGluZV9vZl9jdXJyZW50X2RlcHRoWyRhYV1bICRjdXJyZW50X2RlcHRoWyRhYV0gXSA9CiAgICAgIFsgJGlucHV0X2xpbmVfbnVtYmVyLCAkaW5wdXRfbGluZSwgJHBvcyBdOwoKICAgIGZvciBteSAkYmIgKCAwIC4uIEBjbG9zaW5nX2JyYWNlX25hbWVzIC0gMSApIHsKICAgICAgICBuZXh0IGlmICggJGJiID09ICRhYSApOwogICAgICAgICRkZXB0aF9hcnJheVskYWFdWyRiYl1bICRjdXJyZW50X2RlcHRoWyRhYV0gXSA9ICRjdXJyZW50X2RlcHRoWyRiYl07CiAgICB9CgogICAgIyBzZXQgYSBmbGFnIGZvciBpbmRlbnRpbmcgYSBuZXN0ZWQgdGVybmFyeSBzdGF0ZW1lbnQKICAgIG15ICRpbmRlbnQgPSAwOwogICAgaWYgKCAkYWEgPT0gUVVFU1RJT05fQ09MT04gKSB7CiAgICAgICAgJG5lc3RlZF90ZXJuYXJ5X2ZsYWdbICRjdXJyZW50X2RlcHRoWyRhYV0gXSA9IDA7CiAgICAgICAgaWYgKCAkY3VycmVudF9kZXB0aFskYWFdID4gMSApIHsKICAgICAgICAgICAgaWYgKCAkbmVzdGVkX3Rlcm5hcnlfZmxhZ1sgJGN1cnJlbnRfZGVwdGhbJGFhXSAtIDEgXSA9PSAwICkgewogICAgICAgICAgICAgICAgbXkgJHBkZXB0aCA9ICR0b3RhbF9kZXB0aFskYWFdWyAkY3VycmVudF9kZXB0aFskYWFdIC0gMSBdOwogICAgICAgICAgICAgICAgaWYgKCAkcGRlcHRoID09ICR0b3RhbF9kZXB0aCAtIDEgKSB7CiAgICAgICAgICAgICAgICAgICAgJGluZGVudCA9IDE7CiAgICAgICAgICAgICAgICAgICAgJG5lc3RlZF90ZXJuYXJ5X2ZsYWdbICRjdXJyZW50X2RlcHRoWyRhYV0gLSAxIF0gPSAtMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgICRuZXN0ZWRfc3RhdGVtZW50X3R5cGVbJGFhXVsgJGN1cnJlbnRfZGVwdGhbJGFhXSBdID0gJHN0YXRlbWVudF90eXBlOwogICAgJHN0YXRlbWVudF90eXBlID0gIiI7CiAgICByZXR1cm4gKCAkc2Vxbm8sICRpbmRlbnQgKTsKfQoKc3ViIGlzX2JhbGFuY2VkX2Nsb3NpbmdfY29udGFpbmVyIHsKCiAgICAjIFJldHVybiB0cnVlIGlmIGEgY2xvc2luZyBjb250YWluZXIgY2FuIGdvIGhlcmUgd2l0aG91dCBlcnJvcgogICAgIyBSZXR1cm4gZmFsc2UgaWYgbm90CiAgICBteSAoJGFhKSA9IEBfOwoKICAgICMgY2Fubm90IGNsb3NlIGlmIHRoZXJlIHdhcyBubyBvcGVuaW5nCiAgICByZXR1cm4gdW5sZXNzICggJGN1cnJlbnRfZGVwdGhbJGFhXSA+IDAgKTsKCiAgICAjIGNoZWNrIHRoYXQgYW55IG90aGVyIGJyYWNlIHR5cGVzICRiYiBjb250YWluZWQgd2l0aGluIHdvdWxkIGJlIGJhbGFuY2VkCiAgICBmb3IgbXkgJGJiICggMCAuLiBAY2xvc2luZ19icmFjZV9uYW1lcyAtIDEgKSB7CiAgICAgICAgbmV4dCBpZiAoICRiYiA9PSAkYWEgKTsKICAgICAgICByZXR1cm4KICAgICAgICAgIHVubGVzcyAoICRkZXB0aF9hcnJheVskYWFdWyRiYl1bICRjdXJyZW50X2RlcHRoWyRhYV0gXSA9PQogICAgICAgICAgICAkY3VycmVudF9kZXB0aFskYmJdICk7CiAgICB9CgogICAgIyBPSywgZXZlcnl0aGluZyB3aWxsIGJlIGJhbGFuY2VkCiAgICByZXR1cm4gMTsKfQoKc3ViIGRlY3JlYXNlX25lc3RpbmdfZGVwdGggewoKICAgIG15ICggJGFhLCAkcG9zICkgPSBAXzsKCiAgICAjIFVTRVMgR0xPQkFMIFZBUklBQkxFUzogJHRva2VuaXplcl9zZWxmLCBAY3VycmVudF9kZXB0aCwKICAgICMgQGN1cnJlbnRfc2VxdWVuY2VfbnVtYmVyLCBAZGVwdGhfYXJyYXksIEBzdGFydGluZ19saW5lX29mX2N1cnJlbnRfZGVwdGgKICAgICMgJHN0YXRlbWVudF90eXBlCiAgICBteSAkc2Vxbm8gICAgICAgICAgICAgPSAwOwogICAgbXkgJGlucHV0X2xpbmVfbnVtYmVyID0gJHRva2VuaXplcl9zZWxmLT5bX2xhc3RfbGluZV9udW1iZXJfXTsKICAgIG15ICRpbnB1dF9saW5lICAgICAgICA9ICR0b2tlbml6ZXJfc2VsZi0+W19saW5lX29mX3RleHRfXTsKCiAgICBteSAkb3V0ZGVudCA9IDA7CiAgICAkdG90YWxfZGVwdGgtLTsKICAgIGlmICggJGN1cnJlbnRfZGVwdGhbJGFhXSA+IDAgKSB7CgogICAgICAgICMgc2V0IGEgZmxhZyBmb3IgdW4taW5kZW50aW5nIGFmdGVyIHNlZWluZyBhIG5lc3RlZCB0ZXJuYXJ5IHN0YXRlbWVudAogICAgICAgICRzZXFubyA9ICRjdXJyZW50X3NlcXVlbmNlX251bWJlclskYWFdWyAkY3VycmVudF9kZXB0aFskYWFdIF07CiAgICAgICAgaWYgKCAkYWEgPT0gUVVFU1RJT05fQ09MT04gKSB7CiAgICAgICAgICAgICRvdXRkZW50ID0gJG5lc3RlZF90ZXJuYXJ5X2ZsYWdbICRjdXJyZW50X2RlcHRoWyRhYV0gXTsKICAgICAgICB9CiAgICAgICAgJHN0YXRlbWVudF90eXBlID0gJG5lc3RlZF9zdGF0ZW1lbnRfdHlwZVskYWFdWyAkY3VycmVudF9kZXB0aFskYWFdIF07CgogICAgICAgICMgY2hlY2sgdGhhdCBhbnkgYnJhY2UgdHlwZXMgJGJiIGNvbnRhaW5lZCB3aXRoaW4gYXJlIGJhbGFuY2VkCiAgICAgICAgZm9yIG15ICRiYiAoIDAgLi4gQGNsb3NpbmdfYnJhY2VfbmFtZXMgLSAxICkgewogICAgICAgICAgICBuZXh0IGlmICggJGJiID09ICRhYSApOwoKICAgICAgICAgICAgdW5sZXNzICggJGRlcHRoX2FycmF5WyRhYV1bJGJiXVsgJGN1cnJlbnRfZGVwdGhbJGFhXSBdID09CiAgICAgICAgICAgICAgICAkY3VycmVudF9kZXB0aFskYmJdICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbXkgJGRpZmYgPQogICAgICAgICAgICAgICAgICAkY3VycmVudF9kZXB0aFskYmJdIC0KICAgICAgICAgICAgICAgICAgJGRlcHRoX2FycmF5WyRhYV1bJGJiXVsgJGN1cnJlbnRfZGVwdGhbJGFhXSBdOwoKICAgICAgICAgICAgICAgICMgZG9uJ3Qgd2hpbmUgdG9vIG1hbnkgdGltZXMKICAgICAgICAgICAgICAgIG15ICRzYXdfYnJhY2VfZXJyb3IgPSBnZXRfc2F3X2JyYWNlX2Vycm9yKCk7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJHNhd19icmFjZV9lcnJvciA8PSBNQVhfTkFHX01FU1NBR0VTCgogICAgICAgICAgICAgICAgICAgICMgaWYgdG9vIG1hbnkgY2xvc2luZyB0eXBlcyBoYXZlIG9jY3VycmVkLCB3ZSBwcm9iYWJseQogICAgICAgICAgICAgICAgICAgICMgYWxyZWFkeSBjYXVnaHQgdGhpcyBlcnJvcgogICAgICAgICAgICAgICAgICAgICYmICggKCAkZGlmZiA+IDAgKSB8fCAoICRzYXdfYnJhY2VfZXJyb3IgPD0gMCApICkKICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGludGVycnVwdF9sb2dmaWxlKCk7CiAgICAgICAgICAgICAgICAgICAgbXkgJHJzbCA9CiAgICAgICAgICAgICAgICAgICAgICAkc3RhcnRpbmdfbGluZV9vZl9jdXJyZW50X2RlcHRoWyRhYV0KICAgICAgICAgICAgICAgICAgICAgIFsgJGN1cnJlbnRfZGVwdGhbJGFhXSBdOwogICAgICAgICAgICAgICAgICAgIG15ICRzbCAgPSAkcnNsLT5bMF07CiAgICAgICAgICAgICAgICAgICAgbXkgJHJlbCA9IFsgJGlucHV0X2xpbmVfbnVtYmVyLCAkaW5wdXRfbGluZSwgJHBvcyBdOwogICAgICAgICAgICAgICAgICAgIG15ICRlbCAgPSAkcmVsLT5bMF07CiAgICAgICAgICAgICAgICAgICAgbXkgKCRlc3MpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRkaWZmID09IDEgfHwgJGRpZmYgPT0gLTEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRlc3MgPSAnJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRlc3MgPSAncyc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG15ICRibmFtZSA9CiAgICAgICAgICAgICAgICAgICAgICAoICRkaWZmID4gMCApCiAgICAgICAgICAgICAgICAgICAgICA/ICRvcGVuaW5nX2JyYWNlX25hbWVzWyRiYl0KICAgICAgICAgICAgICAgICAgICAgIDogJGNsb3NpbmdfYnJhY2VfbmFtZXNbJGJiXTsKICAgICAgICAgICAgICAgICAgICB3cml0ZV9lcnJvcl9pbmRpY2F0b3JfcGFpciggQHskcnNsfSwgJ14nICk7CiAgICAgICAgICAgICAgICAgICAgbXkgJG1zZyA9IDw8IkVPTSI7CkZvdW5kICRkaWZmIGV4dHJhICRibmFtZSRlc3MgYmV0d2VlbiAkb3BlbmluZ19icmFjZV9uYW1lc1skYWFdIG9uIGxpbmUgJHNsIGFuZCAkY2xvc2luZ19icmFjZV9uYW1lc1skYWFdIG9uIGxpbmUgJGVsCkVPTQoKICAgICAgICAgICAgICAgICAgICBpZiAoICRkaWZmID4gMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHJtbCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXJ0aW5nX2xpbmVfb2ZfY3VycmVudF9kZXB0aFskYmJdCiAgICAgICAgICAgICAgICAgICAgICAgICAgWyAkY3VycmVudF9kZXB0aFskYmJdIF07CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRtbCA9ICRybWwtPlswXTsKICAgICAgICAgICAgICAgICAgICAgICAgJG1zZyAuPQoiICAgIFRoZSBtb3N0IHJlY2VudCB1bi1tYXRjaGVkICRibmFtZSBpcyBvbiBsaW5lICRtbFxuIjsKICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVfZXJyb3JfaW5kaWNhdG9yX3BhaXIoIEB7JHJtbH0sICdeJyApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB3cml0ZV9lcnJvcl9pbmRpY2F0b3JfcGFpciggQHskcmVsfSwgJ14nICk7CiAgICAgICAgICAgICAgICAgICAgd2FybmluZygkbXNnKTsKICAgICAgICAgICAgICAgICAgICByZXN1bWVfbG9nZmlsZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaW5jcmVtZW50X2JyYWNlX2Vycm9yKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJGN1cnJlbnRfZGVwdGhbJGFhXS0tOwogICAgfQogICAgZWxzZSB7CgogICAgICAgIG15ICRzYXdfYnJhY2VfZXJyb3IgPSBnZXRfc2F3X2JyYWNlX2Vycm9yKCk7CiAgICAgICAgaWYgKCAkc2F3X2JyYWNlX2Vycm9yIDw9IE1BWF9OQUdfTUVTU0FHRVMgKSB7CiAgICAgICAgICAgIG15ICRtc2cgPSA8PCJFT00iOwpUaGVyZSBpcyBubyBwcmV2aW91cyAkb3BlbmluZ19icmFjZV9uYW1lc1skYWFdIHRvIG1hdGNoIGEgJGNsb3NpbmdfYnJhY2VfbmFtZXNbJGFhXSBvbiBsaW5lICRpbnB1dF9saW5lX251bWJlcgpFT00KICAgICAgICAgICAgaW5kaWNhdGVfZXJyb3IoICRtc2csICRpbnB1dF9saW5lX251bWJlciwgJGlucHV0X2xpbmUsICRwb3MsICdeJyApOwogICAgICAgIH0KICAgICAgICBpbmNyZW1lbnRfYnJhY2VfZXJyb3IoKTsKCiAgICAgICAgIyBrZWVwIHRyYWNrIG9mIGVycm9ycyBpbiBicmFjZXMgYWxvbmUgKGlnbm9yaW5nIHRlcm5hcnkgbmVzdGluZyBlcnJvcnMpCiAgICAgICAgJHRva2VuaXplcl9zZWxmLT5bX3RydWVfYnJhY2VfZXJyb3JfY291bnRfXSsrCiAgICAgICAgICBpZiAoICRjbG9zaW5nX2JyYWNlX25hbWVzWyRhYV0gbmUgIic6JyIgKTsKICAgIH0KICAgIHJldHVybiAoICRzZXFubywgJG91dGRlbnQgKTsKfQoKc3ViIGNoZWNrX2ZpbmFsX25lc3RpbmdfZGVwdGhzIHsKCiAgICAjIFVTRVMgR0xPQkFMIFZBUklBQkxFUzogQGN1cnJlbnRfZGVwdGgsIEBzdGFydGluZ19saW5lX29mX2N1cnJlbnRfZGVwdGgKCiAgICBmb3IgbXkgJGFhICggMCAuLiBAY2xvc2luZ19icmFjZV9uYW1lcyAtIDEgKSB7CgogICAgICAgIGlmICggJGN1cnJlbnRfZGVwdGhbJGFhXSApIHsKICAgICAgICAgICAgbXkgJHJzbCA9CiAgICAgICAgICAgICAgJHN0YXJ0aW5nX2xpbmVfb2ZfY3VycmVudF9kZXB0aFskYWFdWyAkY3VycmVudF9kZXB0aFskYWFdIF07CiAgICAgICAgICAgIG15ICRzbCAgPSAkcnNsLT5bMF07CiAgICAgICAgICAgIG15ICRtc2cgPSA8PCJFT00iOwpGaW5hbCBuZXN0aW5nIGRlcHRoIG9mICRvcGVuaW5nX2JyYWNlX25hbWVzWyRhYV1zIGlzICRjdXJyZW50X2RlcHRoWyRhYV0KVGhlIG1vc3QgcmVjZW50IHVuLW1hdGNoZWQgJG9wZW5pbmdfYnJhY2VfbmFtZXNbJGFhXSBpcyBvbiBsaW5lICRzbApFT00KICAgICAgICAgICAgaW5kaWNhdGVfZXJyb3IoICRtc2csIEB7JHJzbH0sICdeJyApOwogICAgICAgICAgICBpbmNyZW1lbnRfYnJhY2VfZXJyb3IoKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm47Cn0KCiMjIyMjIyMjI2kjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgVG9rZW5pemVyIHJvdXRpbmVzIGZvciBsb29raW5nIGFoZWFkIGluIGlucHV0IHN0cmVhbQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKc3ViIHBlZWtfYWhlYWRfZm9yX25fbm9uYmxhbmtfcHJlX3Rva2VucyB7CgogICAgIyByZXR1cm5zIG5leHQgbiBwcmV0b2tlbnMgaWYgdGhleSBleGlzdAogICAgIyByZXR1cm5zIHVuZGVmJ3MgaWYgaGl0cyBlb2Ygd2l0aG91dCBzZWVpbmcgYW55IHByZXRva2VucwogICAgIyBVU0VTIEdMT0JBTCBWQVJJQUJMRVM6ICR0b2tlbml6ZXJfc2VsZgogICAgbXkgJG1heF9wcmV0b2tlbnMgPSBzaGlmdDsKICAgIG15ICRsaW5lOwogICAgbXkgJGkgPSAwOwogICAgbXkgKCAkcnByZV90b2tlbnMsICRybWFwLCAkcnByZV90eXBlcyApOwoKICAgIHdoaWxlICggJGxpbmUgPQogICAgICAgICR0b2tlbml6ZXJfc2VsZi0+W19saW5lX2J1ZmZlcl9vYmplY3RfXS0+cGVla19haGVhZCggJGkrKyApICkKICAgIHsKICAgICAgICAkbGluZSA9fiBzL15ccyovLzsgICAgICAgICAgICAgICAgICMgdHJpbSBsZWFkaW5nIGJsYW5rcwogICAgICAgIG5leHQgaWYgKCBsZW5ndGgoJGxpbmUpIDw9IDAgKTsgICAgIyBza2lwIGJsYW5rCiAgICAgICAgbmV4dCBpZiAoICRsaW5lID1+IC9eIy8gKTsgICAgICAgICAjIHNraXAgY29tbWVudAogICAgICAgICggJHJwcmVfdG9rZW5zLCAkcm1hcCwgJHJwcmVfdHlwZXMgKSA9CiAgICAgICAgICBwcmVfdG9rZW5pemUoICRsaW5lLCAkbWF4X3ByZXRva2VucyApOwogICAgICAgIGxhc3Q7CiAgICB9CiAgICByZXR1cm4gKCAkcnByZV90b2tlbnMsICRycHJlX3R5cGVzICk7Cn0KCiMgbG9vayBhaGVhZCBmb3IgbmV4dCBub24tYmxhbmssIG5vbi1jb21tZW50IGxpbmUgb2YgY29kZQpzdWIgcGVla19haGVhZF9mb3Jfbm9uYmxhbmtfdG9rZW4gewoKICAgICMgVVNFUyBHTE9CQUwgVkFSSUFCTEVTOiAkdG9rZW5pemVyX3NlbGYKICAgIG15ICggJHJ0b2tlbnMsICRtYXhfdG9rZW5faW5kZXggKSA9IEBfOwogICAgbXkgJGxpbmU7CiAgICBteSAkaSA9IDA7CgogICAgd2hpbGUgKCAkbGluZSA9CiAgICAgICAgJHRva2VuaXplcl9zZWxmLT5bX2xpbmVfYnVmZmVyX29iamVjdF9dLT5wZWVrX2FoZWFkKCAkaSsrICkgKQogICAgewogICAgICAgICRsaW5lID1+IHMvXlxzKi8vOyAgICAgICAgICAgICAgICAgIyB0cmltIGxlYWRpbmcgYmxhbmtzCiAgICAgICAgbmV4dCBpZiAoIGxlbmd0aCgkbGluZSkgPD0gMCApOyAgICAjIHNraXAgYmxhbmsKICAgICAgICBuZXh0IGlmICggJGxpbmUgPX4gL14jLyApOyAgICAgICAgICMgc2tpcCBjb21tZW50CiAgICAgICAgbXkgKCAkcnRvaywgJHJtYXAsICRydHlwZSApID0KICAgICAgICAgIHByZV90b2tlbml6ZSggJGxpbmUsIDIgKTsgICAgICAgICMgb25seSBuZWVkIDIgcHJlLXRva2VucwogICAgICAgIG15ICRqID0gJG1heF90b2tlbl9pbmRleCArIDE7CgogICAgICAgIGZvcmVhY2ggbXkgJHRvayAoIEB7JHJ0b2t9ICkgewogICAgICAgICAgICBsYXN0IGlmICggJHRvayA9fiAiXG4iICk7CiAgICAgICAgICAgICRydG9rZW5zLT5bICsrJGogXSA9ICR0b2s7CiAgICAgICAgfQogICAgICAgIGxhc3Q7CiAgICB9CiAgICByZXR1cm4gJHJ0b2tlbnM7Cn0KCiMjIyMjIyMjI2kjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgVG9rZW5pemVyIGd1ZXNzaW5nIHJvdXRpbmVzIGZvciBhbWJpZ3VvdXMgc2l0dWF0aW9ucwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKc3ViIGd1ZXNzX2lmX3BhdHRlcm5fb3JfY29uZGl0aW9uYWwgewoKICAgICMgdGhpcyByb3V0aW5lIGlzIGNhbGxlZCB3aGVuIHdlIGhhdmUgZW5jb3VudGVyZWQgYSA/IGZvbGxvd2luZyBhbgogICAgIyB1bmtub3duIGJhcmV3b3JkLCBhbmQgd2UgbXVzdCBkZWNpZGUgaWYgaXQgc3RhcnRzIGEgcGF0dGVybiBvciBub3QKICAgICMgaW5wdXQgcGFyYW1ldGVyczoKICAgICMgICAkaSAtIHRva2VuIGluZGV4IG9mIHRoZSA/IHN0YXJ0aW5nIHBvc3NpYmxlIHBhdHRlcm4KICAgICMgb3V0cHV0IHBhcmFtZXRlcnM6CiAgICAjICAgJGlzX3BhdHRlcm4gPSAwIGlmIHByb2JhYmx5IG5vdCBwYXR0ZXJuLCAgPTEgaWYgcHJvYmFibHkgYSBwYXR0ZXJuCiAgICAjICAgbXNnID0gYSB3YXJuaW5nIG9yIGRpYWdub3N0aWMgbWVzc2FnZQogICAgIyBVU0VTIEdMT0JBTCBWQVJJQUJMRVM6ICRsYXN0X25vbmJsYW5rX3Rva2VuCgogICAgIyBGSVhNRTogdGhpcyBuZWVkcyB0byBiZSByZXdyaXR0ZW4KCiAgICBteSAoICRpLCAkcnRva2VucywgJHJ0b2tlbl9tYXAsICRtYXhfdG9rZW5faW5kZXggKSA9IEBfOwogICAgbXkgJGlzX3BhdHRlcm4gPSAwOwogICAgbXkgJG1zZyAgICAgICAgPSAiZ3Vlc3NpbmcgdGhhdCA/IGFmdGVyICRsYXN0X25vbmJsYW5rX3Rva2VuIHN0YXJ0cyBhICI7CgogICAgaWYgKCAkaSA+PSAkbWF4X3Rva2VuX2luZGV4ICkgewogICAgICAgICRtc2cgLj0gImNvbmRpdGlvbmFsIChubyBlbmQgdG8gcGF0dGVybiBmb3VuZCBvbiB0aGUgbGluZSlcbiI7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBteSAkaWJlZyA9ICRpOwogICAgICAgICRpID0gJGliZWcgKyAxOwogICAgICAgIG15ICRuZXh0X3Rva2VuID0gJHJ0b2tlbnMtPlskaV07ICAgICMgZmlyc3QgdG9rZW4gYWZ0ZXIgPwoKICAgICAgICAjIGxvb2sgZm9yIGEgcG9zc2libGUgZW5kaW5nID8gb24gdGhpcyBsaW5lLi4KICAgICAgICBteSAkaW5fcXVvdGUgICAgICAgID0gMTsKICAgICAgICBteSAkcXVvdGVfZGVwdGggICAgID0gMDsKICAgICAgICBteSAkcXVvdGVfY2hhcmFjdGVyID0gJyc7CiAgICAgICAgbXkgJHF1b3RlX3BvcyAgICAgICA9IDA7CiAgICAgICAgbXkgJHF1b3RlZF9zdHJpbmc7CiAgICAgICAgKAogICAgICAgICAgICAkaSwgJGluX3F1b3RlLCAkcXVvdGVfY2hhcmFjdGVyLCAkcXVvdGVfcG9zLCAkcXVvdGVfZGVwdGgsCiAgICAgICAgICAgICRxdW90ZWRfc3RyaW5nCiAgICAgICAgICApCiAgICAgICAgICA9IGZvbGxvd19xdW90ZWRfc3RyaW5nKCAkaWJlZywgJGluX3F1b3RlLCAkcnRva2VucywgJHF1b3RlX2NoYXJhY3RlciwKICAgICAgICAgICAgJHF1b3RlX3BvcywgJHF1b3RlX2RlcHRoLCAkbWF4X3Rva2VuX2luZGV4ICk7CgogICAgICAgIGlmICgkaW5fcXVvdGUpIHsKCiAgICAgICAgICAgICMgd2UgZGlkbid0IGZpbmQgYW4gZW5kaW5nID8gb24gdGhpcyBsaW5lLAogICAgICAgICAgICAjIHNvIHdlIGJpYXMgdG93YXJkcyBjb25kaXRpb25hbAogICAgICAgICAgICAkaXNfcGF0dGVybiA9IDA7CiAgICAgICAgICAgICRtc2cgLj0gImNvbmRpdGlvbmFsIChubyBlbmRpbmcgPyBvbiB0aGlzIGxpbmUpXG4iOwoKICAgICAgICAgICAgIyB3ZSBmb3VuZCBhbiBlbmRpbmcgPywgc28gd2UgYmlhcyB0b3dhcmRzIGEgcGF0dGVybgogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgV2F0Y2ggb3V0IGZvciBhbiBlbmRpbmcgPyBpbiBxdW90ZXMsIGxpa2UgdGhpcwogICAgICAgICAgICAjICAgIG15ICRjYXNlX2ZsYWcgPSBGaWxlOjpTcGVjLT5jYXNlX3RvbGVyYW50ID8gJyg/aSknIDogJyc7CiAgICAgICAgICAgIG15ICRzX3F1b3RlID0gMDsKICAgICAgICAgICAgbXkgJGRfcXVvdGUgPSAwOwogICAgICAgICAgICBteSAkY29sb25zICA9IDA7CiAgICAgICAgICAgIGZvcmVhY2ggbXkgJGlpICggJGliZWcgKyAxIC4uICRpIC0gMSApIHsKICAgICAgICAgICAgICAgIG15ICR0b2sgPSAkcnRva2Vucy0+WyRpaV07CiAgICAgICAgICAgICAgICBpZiAoICR0b2sgZXEgIjoiICkgeyAkY29sb25zKysgfQogICAgICAgICAgICAgICAgaWYgKCAkdG9rIGVxICInIiApIHsgJHNfcXVvdGUrKyB9CiAgICAgICAgICAgICAgICBpZiAoICR0b2sgZXEgJyInICkgeyAkZF9xdW90ZSsrIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICRzX3F1b3RlICUgMiB8fCAkZF9xdW90ZSAlIDIgfHwgJGNvbG9ucyApIHsKICAgICAgICAgICAgICAgICRpc19wYXR0ZXJuID0gMDsKICAgICAgICAgICAgICAgICRtc2cgLj0gImZvdW5kIGVuZGluZyA/IGJ1dCB1bmJhbGFuY2VkIHF1b3RlIGNoYXJzXG4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggcGF0dGVybl9leHBlY3RlZCggJGksICRydG9rZW5zLCAkbWF4X3Rva2VuX2luZGV4ICkgPj0gMCApIHsKICAgICAgICAgICAgICAgICRpc19wYXR0ZXJuID0gMTsKICAgICAgICAgICAgICAgICRtc2cgLj0gInBhdHRlcm4gKGZvdW5kIGVuZGluZyA/IGFuZCBwYXR0ZXJuIGV4cGVjdGVkKVxuIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRtc2cgLj0gInBhdHRlcm4gKHVuY2VydGFpbiwgYnV0IGZvdW5kIGVuZGluZyA/KVxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAoICRpc19wYXR0ZXJuLCAkbXNnICk7Cn0KCnN1YiBndWVzc19pZl9wYXR0ZXJuX29yX2RpdmlzaW9uIHsKCiAgICAjIHRoaXMgcm91dGluZSBpcyBjYWxsZWQgd2hlbiB3ZSBoYXZlIGVuY291bnRlcmVkIGEgLyBmb2xsb3dpbmcgYW4KICAgICMgdW5rbm93biBiYXJld29yZCwgYW5kIHdlIG11c3QgZGVjaWRlIGlmIGl0IHN0YXJ0cyBhIHBhdHRlcm4gb3IgaXMgYQogICAgIyBkaXZpc2lvbgogICAgIyBpbnB1dCBwYXJhbWV0ZXJzOgogICAgIyAgICRpIC0gdG9rZW4gaW5kZXggb2YgdGhlIC8gc3RhcnRpbmcgcG9zc2libGUgcGF0dGVybgogICAgIyBvdXRwdXQgcGFyYW1ldGVyczoKICAgICMgICAkaXNfcGF0dGVybiA9IDAgaWYgcHJvYmFibHkgZGl2aXNpb24sICA9MSBpZiBwcm9iYWJseSBhIHBhdHRlcm4KICAgICMgICBtc2cgPSBhIHdhcm5pbmcgb3IgZGlhZ25vc3RpYyBtZXNzYWdlCiAgICAjIFVTRVMgR0xPQkFMIFZBUklBQkxFUzogJGxhc3Rfbm9uYmxhbmtfdG9rZW4KICAgIG15ICggJGksICRydG9rZW5zLCAkcnRva2VuX21hcCwgJG1heF90b2tlbl9pbmRleCApID0gQF87CiAgICBteSAkaXNfcGF0dGVybiA9IDA7CiAgICBteSAkbXNnICAgICAgICA9ICJndWVzc2luZyB0aGF0IC8gYWZ0ZXIgJGxhc3Rfbm9uYmxhbmtfdG9rZW4gc3RhcnRzIGEgIjsKCiAgICBpZiAoICRpID49ICRtYXhfdG9rZW5faW5kZXggKSB7CiAgICAgICAgJG1zZyAuPSAiZGl2aXNpb24gKG5vIGVuZCB0byBwYXR0ZXJuIGZvdW5kIG9uIHRoZSBsaW5lKVxuIjsKICAgIH0KICAgIGVsc2UgewogICAgICAgIG15ICRpYmVnID0gJGk7CiAgICAgICAgbXkgJGRpdmlkZV9leHBlY3RlZCA9CiAgICAgICAgICBudW1lcmF0b3JfZXhwZWN0ZWQoICRpLCAkcnRva2VucywgJG1heF90b2tlbl9pbmRleCApOwogICAgICAgICRpID0gJGliZWcgKyAxOwogICAgICAgIG15ICRuZXh0X3Rva2VuID0gJHJ0b2tlbnMtPlskaV07ICAgICMgZmlyc3QgdG9rZW4gYWZ0ZXIgc2xhc2gKCiAgICAgICAgIyBPbmUgb2YgdGhlIHRoaW5ncyB3ZSBjYW4gbG9vayBhdCBpcyB0aGUgc3BhY2luZyBhcm91bmQgdGhlIHNsYXNoLgogICAgICAgICMgVGhlcmUgIyBhcmUgZm91ciBwb3NzaWJsZSBzcGFjaW5ncyBhcm91bmQgdGhlIGZpcnN0IHNsYXNoOgogICAgICAgICMKICAgICAgICAjICAgICByZXR1cm4gcGkvdHdvOyMvOyAgICAgLS8tCiAgICAgICAgIyAgICAgcmV0dXJuIHBpLyB0d287Iy87ICAgIC0vKwogICAgICAgICMgICAgIHJldHVybiBwaSAvIHR3bzsjLzsgICArLysKICAgICAgICAjICAgICByZXR1cm4gcGkgL3R3bzsjLzsgICAgKy8tICAgPC0tIHBvc3NpYmxlIHBhdHRlcm4KICAgICAgICAjCiAgICAgICAgIyBTcGFjaW5nIHJ1bGU6IGEgc3BhY2UgYmVmb3JlIHRoZSBzbGFzaCBidXQgbm90IGFmdGVyIHRoZSBzbGFzaAogICAgICAgICMgdXN1YWxseSBpbmRpY2F0ZXMgYSBwYXR0ZXJuLiAgV2UgY2FuIHVzZSB0aGlzIHRvIGJyZWFrIHRpZXMuCgogICAgICAgIG15ICRpc19wYXR0ZXJuX2J5X3NwYWNpbmcgPQogICAgICAgICAgKCAkaSA+IDEgJiYgJG5leHRfdG9rZW4gbmUgJyAnICYmICRydG9rZW5zLT5bICRpIC0gMiBdIGVxICcgJyApOwoKICAgICAgICAjIGxvb2sgZm9yIGEgcG9zc2libGUgZW5kaW5nIC8gb24gdGhpcyBsaW5lLi4KICAgICAgICBteSAkaW5fcXVvdGUgICAgICAgID0gMTsKICAgICAgICBteSAkcXVvdGVfZGVwdGggICAgID0gMDsKICAgICAgICBteSAkcXVvdGVfY2hhcmFjdGVyID0gJyc7CiAgICAgICAgbXkgJHF1b3RlX3BvcyAgICAgICA9IDA7CiAgICAgICAgbXkgJHF1b3RlZF9zdHJpbmc7CiAgICAgICAgKAogICAgICAgICAgICAkaSwgJGluX3F1b3RlLCAkcXVvdGVfY2hhcmFjdGVyLCAkcXVvdGVfcG9zLCAkcXVvdGVfZGVwdGgsCiAgICAgICAgICAgICRxdW90ZWRfc3RyaW5nCiAgICAgICAgICApCiAgICAgICAgICA9IGZvbGxvd19xdW90ZWRfc3RyaW5nKCAkaWJlZywgJGluX3F1b3RlLCAkcnRva2VucywgJHF1b3RlX2NoYXJhY3RlciwKICAgICAgICAgICAgJHF1b3RlX3BvcywgJHF1b3RlX2RlcHRoLCAkbWF4X3Rva2VuX2luZGV4ICk7CgogICAgICAgIGlmICgkaW5fcXVvdGUpIHsKCiAgICAgICAgICAgICMgd2UgZGlkbid0IGZpbmQgYW4gZW5kaW5nIC8gb24gdGhpcyBsaW5lLCBzbyB3ZSBiaWFzIHRvd2FyZHMKICAgICAgICAgICAgIyBkaXZpc2lvbgogICAgICAgICAgICBpZiAoICRkaXZpZGVfZXhwZWN0ZWQgPj0gMCApIHsKICAgICAgICAgICAgICAgICRpc19wYXR0ZXJuID0gMDsKICAgICAgICAgICAgICAgICRtc2cgLj0gImRpdmlzaW9uIChubyBlbmRpbmcgLyBvbiB0aGlzIGxpbmUpXG4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgYXNzdW1pbmcgYSBtdWx0aS1saW5lIHBhdHRlcm4gLi4uIHRoaXMgaXMgcmlza3ksIGJ1dCBkaXZpc2lvbgogICAgICAgICAgICAgICAgIyBkb2VzIG5vdCBzZWVtIHBvc3NpYmxlLiAgSWYgdGhpcyBmYWlscywgaXQgd291bGQgZWl0aGVyIGJlIGR1ZQogICAgICAgICAgICAgICAgIyB0byBhIHN5bnRheCBlcnJvciBpbiB0aGUgY29kZSwgb3IgdGhlIGRpdmlzaW9uX2V4cGVjdGVkIGxvZ2ljCiAgICAgICAgICAgICAgICAjIG5lZWRzIHRvIGJlIGZpeGVkLgogICAgICAgICAgICAgICAgJG1zZyAgICAgICAgPSAibXVsdGktbGluZSBwYXR0ZXJuIChkaXZpc2lvbiBub3QgcG9zc2libGUpXG4iOwogICAgICAgICAgICAgICAgJGlzX3BhdHRlcm4gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHdlIGZvdW5kIGFuIGVuZGluZyAvLCBzbyB3ZSBiaWFzIHNsaWdodGx5IHRvd2FyZHMgYSBwYXR0ZXJuCiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICBteSAkcGF0dGVybl9leHBlY3RlZCA9CiAgICAgICAgICAgICAgcGF0dGVybl9leHBlY3RlZCggJGksICRydG9rZW5zLCAkbWF4X3Rva2VuX2luZGV4ICk7CgogICAgICAgICAgICBpZiAoICRwYXR0ZXJuX2V4cGVjdGVkID49IDAgKSB7CgogICAgICAgICAgICAgICAgIyBwYXR0ZXJuIGxvb2tzIHBvc3NpYmxlLi4uCiAgICAgICAgICAgICAgICBpZiAoICRkaXZpZGVfZXhwZWN0ZWQgPj0gMCApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBCb3RoIHBhdHRlcm4gYW5kIGRpdmlkZSBjYW4gd29yayBoZXJlLi4uCgogICAgICAgICAgICAgICAgICAgICMgQSB2ZXJ5IGNvbW1vbiBiYXJlIHdvcmQgaW4gbWF0aCBleHByZXNzaW9ucyBpcyAncGknCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkbGFzdF9ub25ibGFua190b2tlbiBlcSAncGknICkgewogICAgICAgICAgICAgICAgICAgICAgICAkbXNnIC49ICJkaXZpc2lvbiAocGF0dGVybiB3b3JrcyB0b28gYnV0IHNhdyAncGknKVxuIjsKICAgICAgICAgICAgICAgICAgICAgICAgJGlzX3BhdHRlcm4gPSAwOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBBIHZlcnkgY29tbW9uIGJhcmUgd29yZCBpbiBwYXR0ZXJuIGV4cHJlc3Npb25zIGlzICdvaycKICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRsYXN0X25vbmJsYW5rX3Rva2VuIGVxICdvaycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRtc2cgLj0gInBhdHRlcm4gKGRpdmlzaW9uIHdvcmtzIHRvbyBidXQgc2F3ICdvaycpXG4iOwogICAgICAgICAgICAgICAgICAgICAgICAkaXNfcGF0dGVybiA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIElmIG9uZSBydWxlIGlzIG1vcmUgZGVmaW5pdGUsIHVzZSBpdAogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJGRpdmlkZV9leHBlY3RlZCA+ICRwYXR0ZXJuX2V4cGVjdGVkICkgewogICAgICAgICAgICAgICAgICAgICAgICAkbXNnIC49CiAgICAgICAgICAgICAgICAgICAgICAgICAgImRpdmlzaW9uIChtb3JlIGxpa2VseSBiYXNlZCBvbiBmb2xsb3dpbmcgdG9rZW5zKVxuIjsKICAgICAgICAgICAgICAgICAgICAgICAgJGlzX3BhdHRlcm4gPSAwOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBvdGhlcndpc2UsIHVzZSB0aGUgc3BhY2luZyBydWxlCiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCRpc19wYXR0ZXJuX2J5X3NwYWNpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG1zZyAuPQoicGF0dGVybiAoZ3Vlc3Mgb24gc3BhY2luZywgYnV0IGRpdmlzaW9uIHBvc3NpYmxlIHRvbylcbiI7CiAgICAgICAgICAgICAgICAgICAgICAgICRpc19wYXR0ZXJuID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRtc2cgLj0KImRpdmlzaW9uIChndWVzcyBvbiBzcGFjaW5nLCBidXQgcGF0dGVybiBpcyBwb3NzaWJsZSB0b28pXG4iOwogICAgICAgICAgICAgICAgICAgICAgICAkaXNfcGF0dGVybiA9IDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZGl2aWRlX2V4cGVjdGVkIDwgMCBtZWFucyBkaXZpZGUgY2FuIG5vdCB3b3JrIGhlcmUKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRpc19wYXR0ZXJuID0gMTsKICAgICAgICAgICAgICAgICAgICAkbXNnIC49ICJwYXR0ZXJuIChkaXZpc2lvbiBub3QgcG9zc2libGUpXG4iOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHBhdHRlcm4gZG9lcyBub3QgbG9vayBwb3NzaWJsZS4uLgogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICBpZiAoICRkaXZpZGVfZXhwZWN0ZWQgPj0gMCApIHsKICAgICAgICAgICAgICAgICAgICAkaXNfcGF0dGVybiA9IDA7CiAgICAgICAgICAgICAgICAgICAgJG1zZyAuPSAiZGl2aXNpb24gKHBhdHRlcm4gbm90IHBvc3NpYmxlKVxuIjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIE5laXRoZXIgcGF0dGVybiBub3IgZGl2aWRlIGxvb2sgcG9zc2libGUuLi5nbyBieSBzcGFjaW5nCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJGlzX3BhdHRlcm5fYnlfc3BhY2luZykgewogICAgICAgICAgICAgICAgICAgICAgICAkbXNnIC49ICJwYXR0ZXJuIChndWVzcyBvbiBzcGFjaW5nKVxuIjsKICAgICAgICAgICAgICAgICAgICAgICAgJGlzX3BhdHRlcm4gPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG1zZyAuPSAiZGl2aXNpb24gKGd1ZXNzIG9uIHNwYWNpbmcpXG4iOwogICAgICAgICAgICAgICAgICAgICAgICAkaXNfcGF0dGVybiA9IDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuICggJGlzX3BhdHRlcm4sICRtc2cgKTsKfQoKIyB0cnkgdG8gcmVzb2x2ZSBoZXJlLWRvYyB2cy4gc2hpZnQgYnkgbG9va2luZyBhaGVhZCBmb3IKIyBub24tY29kZSBvciB0aGUgZW5kIHRva2VuIChjdXJyZW50bHkgb25seSBsb29rcyBmb3IgZW5kIHRva2VuKQojIHJldHVybnMgMSBpZiBpdCBpcyBwcm9iYWJseSBhIGhlcmUgZG9jLCAwIGlmIG5vdApzdWIgZ3Vlc3NfaWZfaGVyZV9kb2MgewoKICAgICMgVGhpcyBpcyBob3cgbWFueSBsaW5lcyB3ZSB3aWxsIHNlYXJjaCBmb3IgYSB0YXJnZXQgYXMgcGFydCBvZiB0aGUKICAgICMgZ3Vlc3Npbmcgc3RyYXRlZ3kuICBJdCBpcyBhIGNvbnN0YW50IGJlY2F1c2UgdGhlcmUgaXMgcHJvYmFibHkKICAgICMgbGl0dGxlIHJlYXNvbiB0byBjaGFuZ2UgaXQuCiAgICAjIFVTRVMgR0xPQkFMIFZBUklBQkxFUzogJHRva2VuaXplcl9zZWxmLCAkY3VycmVudF9wYWNrYWdlCiAgICAjICVpc19jb25zdGFudCwKICAgIG15ICRIRVJFX0RPQ19XSU5ET1cgPSA0MDsKCiAgICBteSAkbmV4dF90b2tlbiAgICAgICAgPSBzaGlmdDsKICAgIG15ICRoZXJlX2RvY19leHBlY3RlZCA9IDA7CiAgICBteSAkbGluZTsKICAgIG15ICRrICAgPSAwOwogICAgbXkgJG1zZyA9ICJjaGVja2luZyA8PCI7CgogICAgd2hpbGUgKCAkbGluZSA9CiAgICAgICAgJHRva2VuaXplcl9zZWxmLT5bX2xpbmVfYnVmZmVyX29iamVjdF9dLT5wZWVrX2FoZWFkKCAkaysrICkgKQogICAgewogICAgICAgIGNob21wICRsaW5lOwoKICAgICAgICBpZiAoICRsaW5lID1+IC9eJG5leHRfdG9rZW4kLyApIHsKICAgICAgICAgICAgJG1zZyAuPSAiIC0tIGZvdW5kIHRhcmdldCAkbmV4dF90b2tlbiBhaGVhZCAkayBsaW5lc1xuIjsKICAgICAgICAgICAgJGhlcmVfZG9jX2V4cGVjdGVkID0gMTsgICAgIyBnb3QgaXQKICAgICAgICAgICAgbGFzdDsKICAgICAgICB9CiAgICAgICAgbGFzdCBpZiAoICRrID49ICRIRVJFX0RPQ19XSU5ET1cgKTsKICAgIH0KCiAgICB1bmxlc3MgKCRoZXJlX2RvY19leHBlY3RlZCkgewoKICAgICAgICBpZiAoICFkZWZpbmVkKCRsaW5lKSApIHsKICAgICAgICAgICAgJGhlcmVfZG9jX2V4cGVjdGVkID0gLTE7ICAgICMgaGl0IGVvZiB3aXRob3V0IHNlZWluZyB0YXJnZXQKICAgICAgICAgICAgJG1zZyAuPSAiIC0tIG11c3QgYmUgc2hpZnQ7IHRhcmdldCAkbmV4dF90b2tlbiBub3QgaW4gZmlsZVxuIjsKCiAgICAgICAgfQogICAgICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzdGlsbCB1bnN1cmUuLnRha2luZyBhIHdpbGQgZ3Vlc3MKCiAgICAgICAgICAgIGlmICggISRpc19jb25zdGFudHskY3VycmVudF9wYWNrYWdlfXskbmV4dF90b2tlbn0gKSB7CiAgICAgICAgICAgICAgICAkaGVyZV9kb2NfZXhwZWN0ZWQgPSAxOwogICAgICAgICAgICAgICAgJG1zZyAuPQogICAgICAgICAgICAgICAgICAiIC0tIGd1ZXNzaW5nIGl0J3MgYSBoZXJlLWRvYyAoJG5leHRfdG9rZW4gbm90IGEgY29uc3RhbnQpXG4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJG1zZyAuPQogICAgICAgICAgICAgICAgICAiIC0tIGd1ZXNzaW5nIGl0J3MgYSBzaGlmdCAoJG5leHRfdG9rZW4gaXMgYSBjb25zdGFudClcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCRtc2cpOwogICAgcmV0dXJuICRoZXJlX2RvY19leHBlY3RlZDsKfQoKIyMjIyMjIyMjaSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBUb2tlbml6ZXIgUm91dGluZXMgZm9yIHNjYW5uaW5nIGlkZW50aWZpZXJzIGFuZCByZWxhdGVkIGl0ZW1zCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpzdWIgc2Nhbl9iYXJlX2lkZW50aWZpZXJfZG8gewoKICAgICMgdGhpcyByb3V0aW5lIGlzIGNhbGxlZCB0byBzY2FuIGEgdG9rZW4gc3RhcnRpbmcgd2l0aCBhbiBhbHBoYW51bWVyaWMKICAgICMgdmFyaWFibGUgb3IgcGFja2FnZSBzZXBhcmF0b3IsIDo6IG9yICcuCiAgICAjIFVTRVMgR0xPQkFMIFZBUklBQkxFUzogJGN1cnJlbnRfcGFja2FnZSwgJGxhc3Rfbm9uYmxhbmtfdG9rZW4sCiAgICAjICRsYXN0X25vbmJsYW5rX3R5cGUsQHBhcmVuX3R5cGUsICRwYXJlbl9kZXB0aAoKICAgIG15ICggJGlucHV0X2xpbmUsICRpLCAkdG9rLCAkdHlwZSwgJHByb3RvdHlwZSwgJHJ0b2tlbl9tYXAsCiAgICAgICAgJG1heF90b2tlbl9pbmRleCApCiAgICAgID0gQF87CiAgICBteSAkaV9iZWdpbiA9ICRpOwogICAgbXkgJHBhY2thZ2UgPSB1bmRlZjsKCiAgICBteSAkaV9iZWcgPSAkaTsKCiAgICAjIHdlIGhhdmUgdG8gYmFjayB1cCBvbmUgcHJldG9rZW4gYXQgYSA6OiBzaW5jZSBlYWNoIDogaXMgb25lIHByZXRva2VuCiAgICBpZiAoICR0b2sgZXEgJzo6JyApIHsgJGlfYmVnLS0gfQogICAgaWYgKCAkdG9rIGVxICctPicgKSB7ICRpX2JlZy0tIH0KICAgIG15ICRwb3NfYmVnID0gJHJ0b2tlbl9tYXAtPlskaV9iZWddOwogICAgcG9zKCRpbnB1dF9saW5lKSA9ICRwb3NfYmVnOwoKICAgICMgIEV4YW1wbGVzOgogICAgIyAgIEE6OkI6OkMKICAgICMgICBBOjoKICAgICMgICA6OkEKICAgICMgICBBJ0IKICAgIGlmICggJGlucHV0X2xpbmUgPX4gbS9cR1xzKigoPzpcdyooPzonfDo6KSkpKig/Oig/Oi0+KT8oXHcrKSk/L2djICkgewoKICAgICAgICBteSAkcG9zICA9IHBvcygkaW5wdXRfbGluZSk7CiAgICAgICAgbXkgJG51bWMgPSAkcG9zIC0gJHBvc19iZWc7CiAgICAgICAgJHRvayA9IHN1YnN0ciggJGlucHV0X2xpbmUsICRwb3NfYmVnLCAkbnVtYyApOwoKICAgICAgICAjIHR5cGUgJ3cnIGluY2x1ZGVzIGFueXRoaW5nIHdpdGhvdXQgbGVhZGluZyB0eXBlIGluZm8KICAgICAgICAjICgkLCUsQCwqKSBpbmNsdWRpbmcgc29tZXRoaW5nIGxpa2UgYWJjOjpkZWY6OmdoaQogICAgICAgICR0eXBlID0gJ3cnOwoKICAgICAgICBteSAkc3ViX25hbWUgPSAiIjsKICAgICAgICBpZiAoIGRlZmluZWQoJDIpICkgeyAkc3ViX25hbWUgPSAkMjsgfQogICAgICAgIGlmICggZGVmaW5lZCgkMSkgKSB7CiAgICAgICAgICAgICRwYWNrYWdlID0gJDE7CgogICAgICAgICAgICAjIHBhdGNoOiBkb24ndCBhbGxvdyBpc29sYXRlZCBwYWNrYWdlIG5hbWUgd2hpY2gganVzdCBlbmRzCiAgICAgICAgICAgICMgaW4gdGhlIG9sZCBzdHlsZSBwYWNrYWdlIHNlcGFyYXRvciAoc2luZ2xlIHF1b3RlKS4gIEV4YW1wbGU6CiAgICAgICAgICAgICMgICB1c2UgQ0dJJzphbGwnOwogICAgICAgICAgICBpZiAoICEoJHN1Yl9uYW1lKSAmJiBzdWJzdHIoICRwYWNrYWdlLCAtMSwgMSApIGVxICdcJycgKSB7CiAgICAgICAgICAgICAgICAkcG9zLS07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRwYWNrYWdlID1+IHMvXCcvOjovZzsKICAgICAgICAgICAgaWYgKCAkcGFja2FnZSA9fiAvXlw6LyApIHsgJHBhY2thZ2UgPSAnbWFpbicgLiAkcGFja2FnZSB9CiAgICAgICAgICAgICRwYWNrYWdlID1+IHMvOjokLy87CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkcGFja2FnZSA9ICRjdXJyZW50X3BhY2thZ2U7CgogICAgICAgICAgICBpZiAoICRpc19rZXl3b3JkeyR0b2t9ICkgewogICAgICAgICAgICAgICAgJHR5cGUgPSAnayc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgaWYgaXQgaXMgYSBiYXJld29yZC4uCiAgICAgICAgaWYgKCAkdHlwZSBlcSAndycgKSB7CgogICAgICAgICAgICAjIGNoZWNrIGZvciB2LXN0cmluZyB3aXRoIGxlYWRpbmcgJ3YnIHR5cGUgY2hhcmFjdGVyCiAgICAgICAgICAgICMgKFRoaXMgc2VlbXMgdG8gaGF2ZSBwcmVjZWRlbmNlIG92ZXIgZmlsZWhhbmRsZSwgdHlwZSAnWScpCiAgICAgICAgICAgIGlmICggJHRvayA9fiAvXnZcZFtfXGRdKiQvICkgewoKICAgICAgICAgICAgICAgICMgd2Ugb25seSBoYXZlIHRoZSBmaXJzdCBwYXJ0IC0gc29tZXRoaW5nIGxpa2UgJ3YxMDEnIC0KICAgICAgICAgICAgICAgICMgbG9vayBmb3IgbW9yZQogICAgICAgICAgICAgICAgaWYgKCAkaW5wdXRfbGluZSA9fiBtL1xHKFwuXGRbX1xkXSopKy9nYyApIHsKICAgICAgICAgICAgICAgICAgICAkcG9zICA9IHBvcygkaW5wdXRfbGluZSk7CiAgICAgICAgICAgICAgICAgICAgJG51bWMgPSAkcG9zIC0gJHBvc19iZWc7CiAgICAgICAgICAgICAgICAgICAgJHRvayAgPSBzdWJzdHIoICRpbnB1dF9saW5lLCAkcG9zX2JlZywgJG51bWMgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICR0eXBlID0gJ3YnOwoKICAgICAgICAgICAgICAgICMgd2FybiBpZiB0aGlzIHZlcnNpb24gY2FuJ3QgaGFuZGxlIHYtc3RyaW5ncwogICAgICAgICAgICAgICAgcmVwb3J0X3Zfc3RyaW5nKCR0b2spOwogICAgICAgICAgICB9CgogICAgICAgICAgICBlbHNpZiAoICRpc19jb25zdGFudHskcGFja2FnZX17JHN1Yl9uYW1lfSApIHsKICAgICAgICAgICAgICAgICR0eXBlID0gJ0MnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGJhcmV3b3JkIGFmdGVyIHNvcnQgaGFzIGltcGxpZWQgZW1wdHkgcHJvdG90eXBlOyBmb3IgZXhhbXBsZToKICAgICAgICAgICAgIyBAc29ydGVkID0gc29ydCBudW1lcmljYWxseSAoIDUzLCAyOSwgMTEsIDMyLCA3ICk7CiAgICAgICAgICAgICMgVGhpcyBoYXMgcHJpb3JpdHkgb3ZlciB3aGF0ZXZlciB0aGUgdXNlciBoYXMgc3BlY2lmaWVkLgogICAgICAgICAgICBlbHNpZiAoJGxhc3Rfbm9uYmxhbmtfdG9rZW4gZXEgJ3NvcnQnCiAgICAgICAgICAgICAgICAmJiAkbGFzdF9ub25ibGFua190eXBlIGVxICdrJyApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICR0eXBlID0gJ1onOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIE5vdGU6IHN0cmFuZ2VseSwgcGVybCBkb2VzIG5vdCBzZWVtIHRvIHJlYWxseSBsZXQgeW91IGNyZWF0ZQogICAgICAgICAgICAjIGZ1bmN0aW9ucyB3aGljaCBhY3QgbGlrZSBldmFsIGFuZCBkbywgaW4gdGhlIHNlbnNlIHRoYXQgZXZhbAogICAgICAgICAgICAjIGFuZCBkbyBtYXkgaGF2ZSBvcGVyYXRvcnMgZm9sbG93aW5nIHRoZSBmaW5hbCB9LCBidXQgYW55IG9wZXJhdG9ycwogICAgICAgICAgICAjIHRoYXQgeW91IGNyZWF0ZSB3aXRoIHByb3RvdHlwZSAoJikgYXBwYXJlbnRseSBkbyBub3QgYWxsb3cKICAgICAgICAgICAgIyB0cmFpbGluZyBvcGVyYXRvcnMsIG9ubHkgdGVybXMuICBUaGlzIHNlZW1zIHN0cmFuZ2UuCiAgICAgICAgICAgICMgSWYgdGhpcyBldmVyIGNoYW5nZXMsIGhlcmUgaXMgdGhlIHVwZGF0ZQogICAgICAgICAgICAjIHRvIG1ha2UgcGVybHRpZHkgYmVoYXZlIGFjY29yZGluZ2x5OgoKICAgICAgICAgICAgIyBlbHNpZiAoICRpc19ibG9ja19mdW5jdGlvbnskcGFja2FnZX17JHRva30gKSB7CiAgICAgICAgICAgICMgICAgJHRvaz0nZXZhbCc7ICMgcGF0Y2ggdG8gZG8gYnJhY2VzIGxpa2UgZXZhbCAgLSBkb2Vzbid0IHdvcmsKICAgICAgICAgICAgIyAgICAkdHlwZSA9ICdrJzsKICAgICAgICAgICAgI30KICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBjb3VsZCBiZWNvbWUgYSBzZXBhcmF0ZSB0eXBlIHRvIGFsbG93IGZvciBkaWZmZXJlbnQKICAgICAgICAgICAgIyBmdXR1cmUgYmVoYXZpb3I6CiAgICAgICAgICAgIGVsc2lmICggJGlzX2Jsb2NrX2Z1bmN0aW9ueyRwYWNrYWdlfXskc3ViX25hbWV9ICkgewogICAgICAgICAgICAgICAgJHR5cGUgPSAnRyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkaXNfYmxvY2tfbGlzdF9mdW5jdGlvbnskcGFja2FnZX17JHN1Yl9uYW1lfSApIHsKICAgICAgICAgICAgICAgICR0eXBlID0gJ0cnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJGlzX3VzZXJfZnVuY3Rpb257JHBhY2thZ2V9eyRzdWJfbmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkdHlwZSAgICAgID0gJ1UnOwogICAgICAgICAgICAgICAgJHByb3RvdHlwZSA9ICR1c2VyX2Z1bmN0aW9uX3Byb3RvdHlwZXskcGFja2FnZX17JHN1Yl9uYW1lfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjaGVjayBmb3IgaW5kaXJlY3Qgb2JqZWN0CiAgICAgICAgICAgIGVsc2lmICgKCiAgICAgICAgICAgICAgICAjIGFkZGVkIDIwMDEtMDMtMjc6IG11c3Qgbm90IGJlIGZvbGxvd2VkIGltbWVkaWF0ZWx5IGJ5ICcoJwogICAgICAgICAgICAgICAgIyBzZWUgZmhhbmRsZS50CiAgICAgICAgICAgICAgICAoICRpbnB1dF9saW5lICF+IG0vXEdcKC9nYyApCgogICAgICAgICAgICAgICAgIyBhbmQKICAgICAgICAgICAgICAgICYmICgKCiAgICAgICAgICAgICAgICAgICAgIyBwcmVjZWRlZCBieSBrZXl3b3JkIGxpa2UgJ3ByaW50JywgJ3ByaW50ZicgYW5kIGZyaWVuZHMKICAgICAgICAgICAgICAgICAgICAkaXNfaW5kaXJlY3Rfb2JqZWN0X3Rha2VyeyRsYXN0X25vbmJsYW5rX3Rva2VufQoKICAgICAgICAgICAgICAgICAgICAjIG9yIHByZWNlZGVkIGJ5IHNvbWV0aGluZyBsaWtlICdwcmludCgnIG9yICdwcmludGYoJwogICAgICAgICAgICAgICAgICAgIHx8ICgKICAgICAgICAgICAgICAgICAgICAgICAgKCAkbGFzdF9ub25ibGFua190b2tlbiBlcSAnKCcgKQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkaXNfaW5kaXJlY3Rfb2JqZWN0X3Rha2VyeyAkcGFyZW5fdHlwZVskcGFyZW5fZGVwdGhdCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICMgbWF5IG5vdCBiZSBpbmRpcmVjdCBvYmplY3QgdW5sZXNzIGZvbGxvd2VkIGJ5IGEgc3BhY2UKICAgICAgICAgICAgICAgIGlmICggJGlucHV0X2xpbmUgPX4gbS9cR1xzKy9nYyApIHsKICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICdZJzsKCiAgICAgICAgICAgICAgICAgICAgIyBBYmFuZG9uIEhvcGUgLi4uCiAgICAgICAgICAgICAgICAgICAgIyBQZXJsJ3MgaW5kaXJlY3Qgb2JqZWN0IG5vdGF0aW9uIGlzIGEgdmVyeSBiYWQKICAgICAgICAgICAgICAgICAgICAjIHRoaW5nIGFuZCBjYW4gY2F1c2Ugc3VidGxlIGJ1Z3MsIGVzcGVjaWFsbHkgZm9yCiAgICAgICAgICAgICAgICAgICAgIyBiZWdpbm5pbmcgcHJvZ3JhbW1lcnMuICBBbmQgSSBoYXZlbid0IGV2ZW4gYmVlbgogICAgICAgICAgICAgICAgICAgICMgYWJsZSB0byBmaWd1cmUgb3V0IGEgc2FuZSB3YXJuaW5nIHNjaGVtZSB3aGljaAogICAgICAgICAgICAgICAgICAgICMgZG9lc24ndCBnZXQgaW4gdGhlIHdheSBvZiBnb29kIHNjcmlwdHMuCgogICAgICAgICAgICAgICAgICAgICMgQ29tcGxhaW4gaWYgYSBmaWxlaGFuZGxlIGhhcyBhbnkgbG93ZXIgY2FzZQogICAgICAgICAgICAgICAgICAgICMgbGV0dGVycy4gIFRoaXMgaXMgc3VnZ2VzdGVkIGdvb2QgcHJhY3RpY2UuCiAgICAgICAgICAgICAgICAgICAgIyBVc2UgJ3N1Yl9uYW1lJyBiZWNhdXNlIHNvbWV0aGluZyBsaWtlCiAgICAgICAgICAgICAgICAgICAgIyBtYWluOjpNWUhBTkRMRSBpcyBvayBmb3IgZmlsZWhhbmRsZQogICAgICAgICAgICAgICAgICAgIGlmICggJHN1Yl9uYW1lID1+IC9bYS16XS8gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNvdWxkIGJlIGJ1ZyBjYXVzZWQgYnkgb2xkZXIgcGVybHRpZHkgaWYKICAgICAgICAgICAgICAgICAgICAgICAgIyBmb2xsb3dlZCBieSAnKCcKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkaW5wdXRfbGluZSA9fiBtL1xHXHMqXCgvZ2MgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGFpbigKIkNhdXRpb246IHVua25vd24gd29yZCAnJHRvaycgaW4gaW5kaXJlY3Qgb2JqZWN0IHNsb3RcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBiYXJld29yZCBub3QgZm9sbG93ZWQgYnkgYSBzcGFjZSAtLSBtYXkgbm90IGJlIGZpbGVoYW5kbGUKICAgICAgICAgICAgICAgICMgKG1heSBiZSBmdW5jdGlvbiBjYWxsIGRlZmluZWQgaW4gYSAndXNlJyBzdGF0ZW1lbnQpCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICdaJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBOb3cgd2UgbXVzdCBjb252ZXJ0IGJhY2sgZnJvbSBjaGFyYWN0ZXIgcG9zaXRpb24KICAgICAgICAjIHRvIHByZV90b2tlbiBpbmRleC4KICAgICAgICAjIEkgZG9uJ3QgdGhpbmsgYW4gZXJyb3IgZmxhZyBjYW4gb2NjdXIgaGVyZSAuLmJ1dCB3aG8ga25vd3MKICAgICAgICBteSAkZXJyb3I7CiAgICAgICAgKCAkaSwgJGVycm9yICkgPQogICAgICAgICAgaW52ZXJzZV9wcmV0b2tlbl9tYXAoICRpLCAkcG9zLCAkcnRva2VuX21hcCwgJG1heF90b2tlbl9pbmRleCApOwogICAgICAgIGlmICgkZXJyb3IpIHsKICAgICAgICAgICAgd2FybmluZygic2Nhbl9iYXJlX2lkZW50aWZpZXI6IFBvc3NpYmx5IGludmFsaWQgdG9rZW5pemF0aW9uXG4iKTsKICAgICAgICB9CiAgICB9CgogICAgIyBubyBtYXRjaCBidXQgbGluZSBub3QgYmxhbmsgLSBjb3VsZCBiZSBzeW50YXggZXJyb3IKICAgICMgcGVybCB3aWxsIHRha2UgJzo6JyBhbG9uZSB3aXRob3V0IGNvbXBsYWludAogICAgZWxzZSB7CiAgICAgICAgJHR5cGUgPSAndyc7CgogICAgICAgICMgY2hhbmdlIHRoaXMgd2FybmluZyB0byBsb2cgbWVzc2FnZSBpZiBpdCBiZWNvbWVzIGFubm95aW5nCiAgICAgICAgd2FybmluZygiZGlkbid0IGZpbmQgaWRlbnRpZmllciBhZnRlciBsZWFkaW5nIDo6XG4iKTsKICAgIH0KICAgIHJldHVybiAoICRpLCAkdG9rLCAkdHlwZSwgJHByb3RvdHlwZSApOwp9CgpzdWIgc2Nhbl9pZF9kbyB7CgojIFRoaXMgaXMgdGhlIG5ldyBzY2FubmVyIGFuZCB3aWxsIGV2ZW50dWFsbHkgcmVwbGFjZSBzY2FuX2lkZW50aWZpZXIuCiMgT25seSB0eXBlICdzdWInIGFuZCAncGFja2FnZScgYXJlIGltcGxlbWVudGVkLgojIFRva2VuIHR5cGVzICQgKiAlIEAgJiAtPiBhcmUgbm90IHlldCBpbXBsZW1lbnRlZC4KIwojIFNjYW4gaWRlbnRpZmllciBmb2xsb3dpbmcgYSB0eXBlIHRva2VuLgojIFRoZSB0eXBlIG9mIGNhbGwgZGVwZW5kcyBvbiAkaWRfc2Nhbl9zdGF0ZTogJGlkX3NjYW5fc3RhdGUgPSAnJwojIGZvciBzdGFydGluZyBjYWxsLCBpbiB3aGljaCBjYXNlICR0b2sgbXVzdCBiZSB0aGUgdG9rZW4gZGVmaW5pbmcKIyB0aGUgdHlwZS4KIwojIElmIHRoZSB0eXBlIHRva2VuIGlzIHRoZSBsYXN0IG5vbmJsYW5rIHRva2VuIG9uIHRoZSBsaW5lLCBhIHZhbHVlCiMgb2YgJGlkX3NjYW5fc3RhdGUgPSAkdG9rIGlzIHJldHVybmVkLCBpbmRpY2F0aW5nIHRoYXQgZnVydGhlcgojIGNhbGxzIG11c3QgYmUgbWFkZSB0byBnZXQgdGhlIGlkZW50aWZpZXIuICBJZiB0aGUgdHlwZSB0b2tlbiBpcwojIG5vdCB0aGUgbGFzdCBub25ibGFuayB0b2tlbiBvbiB0aGUgbGluZSwgdGhlIGlkZW50aWZpZXIgaXMKIyBzY2FubmVkIGFuZCBoYW5kbGVkIGFuZCBhIHZhbHVlIG9mICcnIGlzIHJldHVybmVkLgojIFVTRVMgR0xPQkFMIFZBUklBQkxFUzogJGN1cnJlbnRfcGFja2FnZSwgJGxhc3Rfbm9uYmxhbmtfdG9rZW4sICRpbl9hdHRyaWJ1dGVfbGlzdCwKIyAkc3RhdGVtZW50X3R5cGUsICR0b2tlbml6ZXJfc2VsZgoKICAgIG15ICggJGlucHV0X2xpbmUsICRpLCAkdG9rLCAkcnRva2VucywgJHJ0b2tlbl9tYXAsICRpZF9zY2FuX3N0YXRlLAogICAgICAgICRtYXhfdG9rZW5faW5kZXggKQogICAgICA9IEBfOwogICAgdXNlIGNvbnN0YW50IERFQlVHX05TQ0FOID0+IDA7CiAgICBteSAkdHlwZSA9ICcnOwogICAgbXkgKCAkaV9iZWcsICRwb3NfYmVnICk7CgogICAgI3ByaW50ICJOU0NBTjplbnRlcmluZyBpPSRpLCB0b2s9JHRvaywgdHlwZT0kdHlwZSwgc3RhdGU9JGlkX3NjYW5fc3RhdGVcbiI7CiAgICAjbXkgKCRhLCRiLCRjKSA9IGNhbGxlcjsKICAgICNwcmludCAiTlNDQU46IHNjYW5faWQgY2FsbGVkIHdpdGggdG9rPSR0b2sgJGEgJGIgJGNcbiI7CgogICAgIyBvbiByZS1lbnRyeSwgc3RhcnQgc2Nhbm5pbmcgYXQgZmlyc3QgdG9rZW4gb24gdGhlIGxpbmUKICAgIGlmICgkaWRfc2Nhbl9zdGF0ZSkgewogICAgICAgICRpX2JlZyA9ICRpOwogICAgICAgICR0eXBlICA9ICcnOwogICAgfQoKICAgICMgb24gaW5pdGlhbCBlbnRyeSwgc3RhcnQgc2Nhbm5pbmcganVzdCBhZnRlciB0eXBlIHRva2VuCiAgICBlbHNlIHsKICAgICAgICAkaV9iZWcgICAgICAgICA9ICRpICsgMTsKICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICR0b2s7CiAgICAgICAgJHR5cGUgICAgICAgICAgPSAndCc7CiAgICB9CgogICAgIyBmaW5kICRpX2JlZyA9IGluZGV4IG9mIG5leHQgbm9uYmxhbmsgdG9rZW4sCiAgICAjIGFuZCBoYW5kbGUgZW1wdHkgbGluZXMKICAgIG15ICRibGFua19saW5lICAgICAgICAgID0gMDsKICAgIG15ICRuZXh0X25vbmJsYW5rX3Rva2VuID0gJHJ0b2tlbnMtPlskaV9iZWddOwogICAgaWYgKCAkaV9iZWcgPiAkbWF4X3Rva2VuX2luZGV4ICkgewogICAgICAgICRibGFua19saW5lID0gMTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIG9ubHkgYSAnIycgaW1tZWRpYXRlbHkgYWZ0ZXIgYSAnJCcgaXMgbm90IGEgY29tbWVudAogICAgICAgIGlmICggJG5leHRfbm9uYmxhbmtfdG9rZW4gZXEgJyMnICkgewogICAgICAgICAgICB1bmxlc3MgKCAkdG9rIGVxICckJyApIHsKICAgICAgICAgICAgICAgICRibGFua19saW5lID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAkbmV4dF9ub25ibGFua190b2tlbiA9fiAvXlxzLyApIHsKICAgICAgICAgICAgKCAkbmV4dF9ub25ibGFua190b2tlbiwgJGlfYmVnICkgPQogICAgICAgICAgICAgIGZpbmRfbmV4dF9ub25ibGFua190b2tlbl9vbl90aGlzX2xpbmUoICRpX2JlZywgJHJ0b2tlbnMsCiAgICAgICAgICAgICAgICAkbWF4X3Rva2VuX2luZGV4ICk7CiAgICAgICAgICAgIGlmICggJG5leHRfbm9uYmxhbmtfdG9rZW4gPX4gLyheI3xeXHMqJCkvICkgewogICAgICAgICAgICAgICAgJGJsYW5rX2xpbmUgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgaGFuZGxlIG5vbi1ibGFuayBsaW5lOyBpZGVudGlmaWVyLCBpZiBhbnksIG11c3QgZm9sbG93CiAgICB1bmxlc3MgKCRibGFua19saW5lKSB7CgogICAgICAgIGlmICggJGlzX3N1YnskaWRfc2Nhbl9zdGF0ZX0gKSB7CiAgICAgICAgICAgICggJGksICR0b2ssICR0eXBlLCAkaWRfc2Nhbl9zdGF0ZSApID0gZG9fc2Nhbl9zdWIoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaW5wdXRfbGluZSAgICAgID0+ICRpbnB1dF9saW5lLAogICAgICAgICAgICAgICAgICAgIGkgICAgICAgICAgICAgICA9PiAkaSwKICAgICAgICAgICAgICAgICAgICBpX2JlZyAgICAgICAgICAgPT4gJGlfYmVnLAogICAgICAgICAgICAgICAgICAgIHRvayAgICAgICAgICAgICA9PiAkdG9rLAogICAgICAgICAgICAgICAgICAgIHR5cGUgICAgICAgICAgICA9PiAkdHlwZSwKICAgICAgICAgICAgICAgICAgICBydG9rZW5zICAgICAgICAgPT4gJHJ0b2tlbnMsCiAgICAgICAgICAgICAgICAgICAgcnRva2VuX21hcCAgICAgID0+ICRydG9rZW5fbWFwLAogICAgICAgICAgICAgICAgICAgIGlkX3NjYW5fc3RhdGUgICA9PiAkaWRfc2Nhbl9zdGF0ZSwKICAgICAgICAgICAgICAgICAgICBtYXhfdG9rZW5faW5kZXggPT4gJG1heF90b2tlbl9pbmRleAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgZWxzaWYgKCAkaXNfcGFja2FnZXskaWRfc2Nhbl9zdGF0ZX0gKSB7CiAgICAgICAgICAgICggJGksICR0b2ssICR0eXBlICkgPQogICAgICAgICAgICAgIGRvX3NjYW5fcGFja2FnZSggJGlucHV0X2xpbmUsICRpLCAkaV9iZWcsICR0b2ssICR0eXBlLCAkcnRva2VucywKICAgICAgICAgICAgICAgICRydG9rZW5fbWFwLCAkbWF4X3Rva2VuX2luZGV4ICk7CiAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJyc7CiAgICAgICAgfQoKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgd2FybmluZygiaW52YWxpZCB0b2tlbiBpbiBzY2FuX2lkOiAkdG9rXG4iKTsKICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnJzsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkaWRfc2Nhbl9zdGF0ZSAmJiAoICFkZWZpbmVkKCR0eXBlKSB8fCAhJHR5cGUgKSApIHsKCiAgICAgICAgIyBzaG91bGRuJ3QgaGFwcGVuOgogICAgICAgIHdhcm5pbmcoCiJQcm9ncmFtIGJ1ZyBpbiBzY2FuX2lkOiB1bmRlZmluZWQgdHlwZSBidXQgc2Nhbl9zdGF0ZT0kaWRfc2Nhbl9zdGF0ZVxuIgogICAgICAgICk7CiAgICAgICAgcmVwb3J0X2RlZmluaXRlX2J1ZygpOwogICAgfQoKICAgIERFQlVHX05TQ0FOICYmIGRvIHsKICAgICAgICBwcmludCBTVERPVVQKICAgICAgICAgICJOU0NBTjogcmV0dXJucyBpPSRpLCB0b2s9JHRvaywgdHlwZT0kdHlwZSwgc3RhdGU9JGlkX3NjYW5fc3RhdGVcbiI7CiAgICB9OwogICAgcmV0dXJuICggJGksICR0b2ssICR0eXBlLCAkaWRfc2Nhbl9zdGF0ZSApOwp9CgpzdWIgY2hlY2tfcHJvdG90eXBlIHsKICAgIG15ICggJHByb3RvLCAkcGFja2FnZSwgJHN1Ym5hbWUgKSA9IEBfOwogICAgcmV0dXJuIHVubGVzcyAoIGRlZmluZWQoJHBhY2thZ2UpICYmIGRlZmluZWQoJHN1Ym5hbWUpICk7CiAgICBpZiAoIGRlZmluZWQoJHByb3RvKSApIHsKICAgICAgICAkcHJvdG8gPX4gcy9eXHMqXChccyovLzsKICAgICAgICAkcHJvdG8gPX4gcy9ccypcKSQvLzsKICAgICAgICBpZiAoJHByb3RvKSB7CiAgICAgICAgICAgICRpc191c2VyX2Z1bmN0aW9ueyRwYWNrYWdlfXskc3VibmFtZX0gICAgICAgID0gMTsKICAgICAgICAgICAgJHVzZXJfZnVuY3Rpb25fcHJvdG90eXBleyRwYWNrYWdlfXskc3VibmFtZX0gPSAiKCRwcm90bykiOwoKICAgICAgICAgICAgIyBwcm90b3R5cGVzIGNvbnRhaW5pbmcgJyYnIG11c3QgYmUgdHJlYXRlZCBzcGVjaWFsbHkuLgogICAgICAgICAgICBpZiAoICRwcm90byA9fiAvXCYvICkgewoKICAgICAgICAgICAgICAgICMgcmlnaHQgY3VybHkgYnJhY2VzIG9mIHByb3RvdHlwZXMgZW5kaW5nIGluCiAgICAgICAgICAgICAgICAjICcmJyBtYXkgYmUgZm9sbG93ZWQgYnkgYW4gb3BlcmF0b3IKICAgICAgICAgICAgICAgIGlmICggJHByb3RvID1+IC9cJiQvICkgewogICAgICAgICAgICAgICAgICAgICRpc19ibG9ja19mdW5jdGlvbnskcGFja2FnZX17JHN1Ym5hbWV9ID0gMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHJpZ2h0IGN1cmx5IGJyYWNlcyBvZiBwcm90b3R5cGVzIE5PVCBlbmRpbmcgaW4KICAgICAgICAgICAgICAgICMgJyYnIG1heSBOT1QgYmUgZm9sbG93ZWQgYnkgYW4gb3BlcmF0b3IKICAgICAgICAgICAgICAgIGVsc2lmICggJHByb3RvICF+IC9cJiQvICkgewogICAgICAgICAgICAgICAgICAgICRpc19ibG9ja19saXN0X2Z1bmN0aW9ueyRwYWNrYWdlfXskc3VibmFtZX0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkaXNfY29uc3RhbnR7JHBhY2thZ2V9eyRzdWJuYW1lfSA9IDE7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJGlzX3VzZXJfZnVuY3Rpb257JHBhY2thZ2V9eyRzdWJuYW1lfSA9IDE7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBkb19zY2FuX3BhY2thZ2UgewoKICAgICMgZG9fc2Nhbl9wYWNrYWdlIHBhcnNlcyBhIHBhY2thZ2UgbmFtZQogICAgIyBpdCBpcyBjYWxsZWQgd2l0aCAkaV9iZWcgZXF1YWwgdG8gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBub25ibGFuawogICAgIyB0b2tlbiBmb2xsb3dpbmcgYSAncGFja2FnZScgdG9rZW4uCiAgICAjIFVTRVMgR0xPQkFMIFZBUklBQkxFUzogJGN1cnJlbnRfcGFja2FnZSwKCiAgICAjIHBhY2thZ2UgTkFNRVNQQUNFCiAgICAjIHBhY2thZ2UgTkFNRVNQQUNFIFZFUlNJT04KICAgICMgcGFja2FnZSBOQU1FU1BBQ0UgQkxPQ0sKICAgICMgcGFja2FnZSBOQU1FU1BBQ0UgVkVSU0lPTiBCTE9DSwogICAgIwogICAgIyBJZiBWRVJTSU9OIGlzIHByb3ZpZGVkLCBwYWNrYWdlIHNldHMgdGhlICRWRVJTSU9OIHZhcmlhYmxlIGluIHRoZSBnaXZlbgogICAgIyBuYW1lc3BhY2UgdG8gYSB2ZXJzaW9uIG9iamVjdCB3aXRoIHRoZSBWRVJTSU9OIHByb3ZpZGVkLiBWRVJTSU9OIG11c3QgYmUKICAgICMgYSAic3RyaWN0IiBzdHlsZSB2ZXJzaW9uIG51bWJlciBhcyBkZWZpbmVkIGJ5IHRoZSB2ZXJzaW9uIG1vZHVsZTogYQogICAgIyBwb3NpdGl2ZSBkZWNpbWFsIG51bWJlciAoaW50ZWdlciBvciBkZWNpbWFsLWZyYWN0aW9uKSB3aXRob3V0CiAgICAjIGV4cG9uZW50aWF0aW9uIG9yIGVsc2UgYSBkb3R0ZWQtZGVjaW1hbCB2LXN0cmluZyB3aXRoIGEgbGVhZGluZyAndicKICAgICMgY2hhcmFjdGVyIGFuZCBhdCBsZWFzdCB0aHJlZSBjb21wb25lbnRzLgogICAgIyByZWZlcmVuY2UgaHR0cDovL3Blcmxkb2MucGVybC5vcmcvZnVuY3Rpb25zL3BhY2thZ2UuaHRtbAoKICAgIG15ICggJGlucHV0X2xpbmUsICRpLCAkaV9iZWcsICR0b2ssICR0eXBlLCAkcnRva2VucywgJHJ0b2tlbl9tYXAsCiAgICAgICAgJG1heF90b2tlbl9pbmRleCApCiAgICAgID0gQF87CiAgICBteSAkcGFja2FnZSA9IHVuZGVmOwogICAgbXkgJHBvc19iZWcgPSAkcnRva2VuX21hcC0+WyRpX2JlZ107CiAgICBwb3MoJGlucHV0X2xpbmUpID0gJHBvc19iZWc7CgogICAgIyBoYW5kbGUgbm9uLWJsYW5rIGxpbmU7IHBhY2thZ2UgbmFtZSwgaWYgYW55LCBtdXN0IGZvbGxvdwogICAgaWYgKCAkaW5wdXRfbGluZSA9fiBtL1xHXHMqKCg/Olx3Kig/Oid8OjopKSpcdyopL2djICkgewogICAgICAgICRwYWNrYWdlID0gJDE7CiAgICAgICAgJHBhY2thZ2UgPSAoIGRlZmluZWQoJDEpICYmICQxICkgPyAkMSA6ICdtYWluJzsKICAgICAgICAkcGFja2FnZSA9fiBzL1wnLzo6L2c7CiAgICAgICAgaWYgKCAkcGFja2FnZSA9fiAvXlw6LyApIHsgJHBhY2thZ2UgPSAnbWFpbicgLiAkcGFja2FnZSB9CiAgICAgICAgJHBhY2thZ2UgPX4gcy86OiQvLzsKICAgICAgICBteSAkcG9zICA9IHBvcygkaW5wdXRfbGluZSk7CiAgICAgICAgbXkgJG51bWMgPSAkcG9zIC0gJHBvc19iZWc7CiAgICAgICAgJHRvayAgPSAncGFja2FnZSAnIC4gc3Vic3RyKCAkaW5wdXRfbGluZSwgJHBvc19iZWcsICRudW1jICk7CiAgICAgICAgJHR5cGUgPSAnaSc7CgogICAgICAgICMgTm93IHdlIG11c3QgY29udmVydCBiYWNrIGZyb20gY2hhcmFjdGVyIHBvc2l0aW9uCiAgICAgICAgIyB0byBwcmVfdG9rZW4gaW5kZXguCiAgICAgICAgIyBJIGRvbid0IHRoaW5rIGFuIGVycm9yIGZsYWcgY2FuIG9jY3VyIGhlcmUgLi5idXQgPwogICAgICAgIG15ICRlcnJvcjsKICAgICAgICAoICRpLCAkZXJyb3IgKSA9CiAgICAgICAgICBpbnZlcnNlX3ByZXRva2VuX21hcCggJGksICRwb3MsICRydG9rZW5fbWFwLCAkbWF4X3Rva2VuX2luZGV4ICk7CiAgICAgICAgaWYgKCRlcnJvcikgeyB3YXJuaW5nKCJQb3NzaWJseSBpbnZhbGlkIHBhY2thZ2VcbiIpIH0KICAgICAgICAkY3VycmVudF9wYWNrYWdlID0gJHBhY2thZ2U7CgogICAgICAgICMgd2Ugc2hvdWxkIG5vdyBoYXZlIHBhY2thZ2UgTkFNRVNQQUNFCiAgICAgICAgIyBub3cgZXhwZWN0aW5nIFZFUlNJT04sIEJMT0NLLCBvciA7IHRvIGZvbGxvdyAuLi4KICAgICAgICAjIHBhY2thZ2UgTkFNRVNQQUNFIFZFUlNJT04KICAgICAgICAjIHBhY2thZ2UgTkFNRVNQQUNFIEJMT0NLCiAgICAgICAgIyBwYWNrYWdlIE5BTUVTUEFDRSBWRVJTSU9OIEJMT0NLCiAgICAgICAgbXkgKCAkbmV4dF9ub25ibGFua190b2tlbiwgJGlfbmV4dCApID0KICAgICAgICAgIGZpbmRfbmV4dF9ub25ibGFua190b2tlbiggJGksICRydG9rZW5zLCAkbWF4X3Rva2VuX2luZGV4ICk7CgogICAgICAgICMgY2hlY2sgdGhhdCBzb21ldGhpbmcgcmVjb2duaXphYmxlIGZvbGxvd3MsIGJ1dCBkbyBub3QgcGFyc2UuCiAgICAgICAgIyBBIFZFUlNJT04gbnVtYmVyIHdpbGwgYmUgcGFyc2VkIGxhdGVyIGFzIGEgbnVtYmVyIG9yIHYtc3RyaW5nIGluIHRoZQogICAgICAgICMgbm9ybWFsIHdheS4gIFdoYXQgaXMgaW1wb3J0YW50IGlzIHRvIHNldCB0aGUgc3RhdGVtZW50IHR5cGUgaWYKICAgICAgICAjIGV2ZXJ5dGhpbmcgbG9va3Mgb2theSBzbyB0aGF0IHRoZSBvcGVyYXRvcl9leHBlY3RlZCgpIHJvdXRpbmUKICAgICAgICAjIGtub3dzIHRoYXQgdGhlIG51bWJlciBpcyBpbiBhIHBhY2thZ2Ugc3RhdGVtZW50LgogICAgICAgICMgRXhhbXBsZXMgb2YgdmFsaWQgcHJpbWl0aXZlIHRva2VucyB0aGF0IG1pZ2h0IGZvbGxvdyBhcmU6CiAgICAgICAgIyAgMTIzNSAgLiA7IHsgfSB2MyAgdgogICAgICAgIGlmICggJG5leHRfbm9uYmxhbmtfdG9rZW4gPX4gL14oW3ZcLlxkO1x7XH1dKXx2XGR8XGQrJC8gKSB7CiAgICAgICAgICAgICRzdGF0ZW1lbnRfdHlwZSA9ICR0b2s7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICB3YXJuaW5nKAogICAgICAgICAgICAgICAgIlVuZXhwZWN0ZWQgJyRuZXh0X25vbmJsYW5rX3Rva2VuJyBhZnRlciBwYWNrYWdlIG5hbWUgJyR0b2snXG4iCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgbm8gbWF0Y2ggYnV0IGxpbmUgbm90IGJsYW5rIC0tCiAgICAjIGNvdWxkIGJlIGEgbGFiZWwgd2l0aCBuYW1lIHBhY2thZ2UsIGxpa2UgcGFja2FnZTogICwgZm9yIGV4YW1wbGUuCiAgICBlbHNlIHsKICAgICAgICAkdHlwZSA9ICdrJzsKICAgIH0KCiAgICByZXR1cm4gKCAkaSwgJHRvaywgJHR5cGUgKTsKfQoKc3ViIHNjYW5faWRlbnRpZmllcl9kbyB7CgogICAgIyBUaGlzIHJvdXRpbmUgYXNzZW1ibGVzIHRva2VucyBpbnRvIGlkZW50aWZpZXJzLiAgSXQgbWFpbnRhaW5zIGEKICAgICMgc2NhbiBzdGF0ZSwgaWRfc2Nhbl9zdGF0ZS4gIEl0IHVwZGF0ZXMgaWRfc2Nhbl9zdGF0ZSBiYXNlZCB1cG9uCiAgICAjIGN1cnJlbnQgaWRfc2Nhbl9zdGF0ZSBhbmQgdG9rZW4sIGFuZCByZXR1cm5zIGFuIHVwZGF0ZWQKICAgICMgaWRfc2Nhbl9zdGF0ZSBhbmQgdGhlIG5leHQgaW5kZXggYWZ0ZXIgdGhlIGlkZW50aWZpZXIuCgogICAgIyBVU0VTIEdMT0JBTCBWQVJJQUJMRVM6ICRjb250ZXh0LCAkbGFzdF9ub25ibGFua190b2tlbiwKICAgICMgJGxhc3Rfbm9uYmxhbmtfdHlwZQoKICAgIG15ICggJGksICRpZF9zY2FuX3N0YXRlLCAkaWRlbnRpZmllciwgJHJ0b2tlbnMsICRtYXhfdG9rZW5faW5kZXgsCiAgICAgICAgJGV4cGVjdGluZywgJGNvbnRhaW5lcl90eXBlICkKICAgICAgPSBAXzsKICAgIHVzZSBjb25zdGFudCBERUJVR19TQ0FOX0lEID0+IDA7CiAgICBteSAkaV9iZWdpbiAgID0gJGk7CiAgICBteSAkdHlwZSAgICAgID0gJyc7CiAgICBteSAkdG9rX2JlZ2luID0gJHJ0b2tlbnMtPlskaV9iZWdpbl07CiAgICBpZiAoICR0b2tfYmVnaW4gZXEgJzonICkgeyAkdG9rX2JlZ2luID0gJzo6JyB9CiAgICBteSAkaWRfc2Nhbl9zdGF0ZV9iZWdpbiA9ICRpZF9zY2FuX3N0YXRlOwogICAgbXkgJGlkZW50aWZpZXJfYmVnaW4gICAgPSAkaWRlbnRpZmllcjsKICAgIG15ICR0b2sgICAgICAgICAgICAgICAgID0gJHRva19iZWdpbjsKICAgIG15ICRtZXNzYWdlICAgICAgICAgICAgID0gIiI7CiAgICBteSAkdG9rX2lzX2JsYW5rOyAgICAjIGEgZmxhZyB0byBzcGVlZCB0aGluZ3MgdXAKCiAgICBteSAkaW5fcHJvdG90eXBlX29yX3NpZ25hdHVyZSA9CiAgICAgICRjb250YWluZXJfdHlwZSAmJiAkY29udGFpbmVyX3R5cGUgPX4gL15zdWJcYi87CgogICAgIyB0aGVzZSBmbGFncyB3aWxsIGJlIHVzZWQgdG8gaGVscCBmaWd1cmUgb3V0IHRoZSB0eXBlOgogICAgbXkgJHNhd19hbHBoYTsKICAgIG15ICRzYXdfdHlwZTsKCiAgICAjIGFsbG93IG9sZCBwYWNrYWdlIHNlcGFyYXRvciAoJykgZXhjZXB0IGluICd1c2UnIHN0YXRlbWVudAogICAgbXkgJGFsbG93X3RpY2sgPSAoICRsYXN0X25vbmJsYW5rX3Rva2VuIG5lICd1c2UnICk7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIGdldCBzdGFydGVkIGJ5IGRlZmluaW5nIGEgdHlwZSBhbmQgYSBzdGF0ZSBpZiBuZWNlc3NhcnkKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgIGlmICggISRpZF9zY2FuX3N0YXRlICkgewogICAgICAgICRjb250ZXh0ID0gVU5LTk9XTl9DT05URVhUOwoKICAgICAgICAjIGZpeHVwIGZvciBkaWdyYXBoCiAgICAgICAgaWYgKCAkdG9rIGVxICc+JyApIHsKICAgICAgICAgICAgJHRvayAgICAgICA9ICctPic7CiAgICAgICAgICAgICR0b2tfYmVnaW4gPSAkdG9rOwogICAgICAgIH0KICAgICAgICAkaWRlbnRpZmllciA9ICR0b2s7CgogICAgICAgIGlmICggJHRvayBlcSAnJCcgfHwgJHRvayBlcSAnKicgKSB7CiAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJyQnOwogICAgICAgICAgICAkY29udGV4dCAgICAgICA9IFNDQUxBUl9DT05URVhUOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICR0b2sgZXEgJyUnIHx8ICR0b2sgZXEgJ0AnICkgewogICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICckJzsKICAgICAgICAgICAgJGNvbnRleHQgICAgICAgPSBMSVNUX0NPTlRFWFQ7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJHRvayBlcSAnJicgKSB7CiAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJyYnOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICR0b2sgZXEgJ3N1Yicgb3IgJHRvayBlcSAncGFja2FnZScgKSB7CiAgICAgICAgICAgICRzYXdfYWxwaGEgICAgID0gMDsgICAgICMgJ3N1YicgaXMgY29uc2lkZXJlZCB0eXBlIGluZm8gaGVyZQogICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICckJzsKICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJyAnOyAgICAgIyBuZWVkIGEgc3BhY2UgdG8gc2VwYXJhdGUgc3ViIGZyb20gc3ViIG5hbWUKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkdG9rIGVxICc6OicgKSB7CiAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJ0EnOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICR0b2sgPX4gL15cdy8gKSB7CiAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJzonOwogICAgICAgICAgICAkc2F3X2FscGhhICAgICA9IDE7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJHRvayBlcSAnLT4nICkgewogICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICckJzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIHNob3VsZG4ndCBoYXBwZW4KICAgICAgICAgICAgbXkgKCAkYSwgJGIsICRjICkgPSBjYWxsZXI7CiAgICAgICAgICAgIHdhcm5pbmcoIlByb2dyYW0gQnVnOiBzY2FuX2lkZW50aWZpZXIgZ2l2ZW4gYmFkIHRva2VuID0gJHRvayBcbiIpOwogICAgICAgICAgICB3YXJuaW5nKCIgICBjYWxsZWQgZnJvbSBzdWIgJGEgIGxpbmU6ICRjXG4iKTsKICAgICAgICAgICAgcmVwb3J0X2RlZmluaXRlX2J1ZygpOwogICAgICAgIH0KICAgICAgICAkc2F3X3R5cGUgPSAhJHNhd19hbHBoYTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRpLS07CiAgICAgICAgJHNhd19hbHBoYSA9ICggJHRvayA9fiAvXlx3LyApOwogICAgICAgICRzYXdfdHlwZSAgPSAoICR0b2sgPX4gLyhbXCRcJVxAXCpcJl0pLyApOwogICAgfQoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMgbG9vcCB0byBnYXRoZXIgdGhlIGlkZW50aWZpZXIKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICBteSAkaV9zYXZlID0gJGk7CgogICAgd2hpbGUgKCAkaSA8ICRtYXhfdG9rZW5faW5kZXggKSB7CiAgICAgICAgbXkgJGxhc3RfdG9rX2lzX2JsYW5rID0gJHRva19pc19ibGFuazsKICAgICAgICBpZiAgICgkdG9rX2lzX2JsYW5rKSB7ICR0b2tfaXNfYmxhbmsgPSB1bmRlZiB9CiAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgeyAkaV9zYXZlICAgICAgID0gJGkgfQoKICAgICAgICAkdG9rID0gJHJ0b2tlbnMtPlsgKyskaSBdOwoKICAgICAgICAjIHBhdGNoIHRvIG1ha2UgZGlncmFwaCA6OiBpZiBuZWNlc3NhcnkKICAgICAgICBpZiAoICggJHRvayBlcSAnOicgKSAmJiAoICRydG9rZW5zLT5bICRpICsgMSBdIGVxICc6JyApICkgewogICAgICAgICAgICAkdG9rID0gJzo6JzsKICAgICAgICAgICAgJGkrKzsKICAgICAgICB9CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgU3RhcnRpbmcgdmFyaWFibGUgbmFtZQogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICBpZiAoICRpZF9zY2FuX3N0YXRlIGVxICckJyApIHsKCiAgICAgICAgICAgIGlmICggJHRvayBlcSAnJCcgKSB7CgogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKCiAgICAgICAgICAgICAgICAjIHdlJ3ZlIGdvdCBhIHB1bmN0dWF0aW9uIHZhcmlhYmxlIGlmIGVuZCBvZiBsaW5lIChwdW5jdC50KQogICAgICAgICAgICAgICAgaWYgKCAkaSA9PSAkbWF4X3Rva2VuX2luZGV4ICkgewogICAgICAgICAgICAgICAgICAgICR0eXBlICAgICAgICAgID0gJ2knOwogICAgICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJyc7CiAgICAgICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICR0b2sgPX4gL15cdy8gKSB7ICAgICMgYWxwaGFudW1lcmljIC4uCiAgICAgICAgICAgICAgICAkc2F3X2FscGhhICAgICA9IDE7CiAgICAgICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICc6JzsgICAgIyBub3cgbmVlZCA6OgogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICR0b2sgZXEgJzo6JyApIHsKICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJ0EnOwogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBQT1NUREVGUkVGIC0+QCAtPiUgLT4mIC0+KgogICAgICAgICAgICBlbHNpZiAoICggJHRvayA9fiAvXltcQFwlXCZcKl0kLyApICYmICRpZGVudGlmaWVyID1+IC9cLVw+JC8gKSB7CiAgICAgICAgICAgICAgICAkaWRlbnRpZmllciAuPSAkdG9rOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHRvayBlcSAiJyIgJiYgJGFsbG93X3RpY2sgKSB7ICAgICMgYWxwaGFudW1lcmljIC4uCiAgICAgICAgICAgICAgICAkc2F3X2FscGhhICAgICA9IDE7CiAgICAgICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICc6JzsgICAgICAgICAgICAgICAgICMgbm93IG5lZWQgOjoKICAgICAgICAgICAgICAgICRpZGVudGlmaWVyIC49ICR0b2s7CgogICAgICAgICAgICAgICAgIyBQZXJsIHdpbGwgYWNjZXB0IGxlYWRpbmcgZGlnaXRzIGluIGlkZW50aWZpZXJzLAogICAgICAgICAgICAgICAgIyBhbHRob3VnaCB0aGV5IG1heSBub3QgYWx3YXlzIHByb2R1Y2UgdXNlZnVsIHJlc3VsdHMuCiAgICAgICAgICAgICAgICAjIFNvbWV0aGluZyBsaWtlICRtYWluOjowIGlzIG9rLiAgQnV0IHRoaXMgYWxzbyB3b3JrczoKICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICMgIHN1YiBob3dkeTo6MTIzOjpidWJiYXsgcHJpbnQgImJ1YmJhICQ1NDMyMSFcbiIgfQogICAgICAgICAgICAgICAgIyAgaG93ZHk6OjEyMzo6YnViYmEoKTsKICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyAkIyBhbmQgUE9TVERFRlJFRiAtPiQjCiAgICAgICAgICAgIGVsc2lmICgKICAgICAgICAgICAgICAgICAgICggJHRvayBlcSAnIycgKQogICAgICAgICAgICAgICAgJiYgKCAkaWRlbnRpZmllciA9fiAvXCQkLyApCgogICAgICAgICAgICAgICAgIyBhICMgaW5zaWRlIGEgcHJvdG90eXBlIG9yIHNpZ25hdHVyZSBjYW4gb25seSBzdGFydCBhIGNvbW1lbnQKICAgICAgICAgICAgICAgICYmICEkaW5fcHJvdG90eXBlX29yX3NpZ25hdHVyZQogICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIyBBICcjJyBzdGFydHMgYSBjb21tZW50IGlmIGl0IGZvbGxvd3MgYSBzcGFjZS4gRm9yIGV4YW1wbGUsCiAgICAgICAgICAgICAgICAjIHRoZSBmb2xsb3dpbmcgaXMgZXF1aXZhbGVudCB0byAkYW5zPTQwLgogICAgICAgICAgICAgICAgIyAgIG15ICQgIwogICAgICAgICAgICAgICAgIyAgICAgYW5zID0gNDA7CiAgICAgICAgICAgICAgICBpZiAoJGxhc3RfdG9rX2lzX2JsYW5rKSB7CiAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAnaSc7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkaWRfc2Nhbl9zdGF0ZSBlcSAnJCcgKSB7ICR0eXBlID0gJ3QnIH0KICAgICAgICAgICAgICAgICAgICAkaSAgICAgICAgICAgICA9ICRpX3NhdmU7CiAgICAgICAgICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnJzsKICAgICAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgTWF5IGJlICckIycgb3IgJyQjYXJyYXknCiAgICAgICAgICAgICAgICAkaWRlbnRpZmllciAuPSAkdG9rOyAgICAjIGtlZXAgc2FtZSBzdGF0ZSwgYSAkIGNvdWxkIGZvbGxvdwogICAgICAgICAgICB9CgogICAgICAgICAgICBlbHNpZiAoICR0b2sgZXEgJ3snICkgewoKICAgICAgICAgICAgICAgICMgY2hlY2sgZm9yIHNvbWV0aGluZyBsaWtlICR7I30gb3IgJHupfQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgZXEgJyQnCiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRpZGVudGlmaWVyIGVxICdAJwogICAgICAgICAgICAgICAgICAgICAgICB8fCAkaWRlbnRpZmllciBlcSAnJCMnCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICYmICRpICsgMiA8PSAkbWF4X3Rva2VuX2luZGV4CiAgICAgICAgICAgICAgICAgICAgJiYgJHJ0b2tlbnMtPlsgJGkgKyAyIF0gZXEgJ30nCiAgICAgICAgICAgICAgICAgICAgJiYgJHJ0b2tlbnMtPlsgJGkgKyAxIF0gIX4gL1tcc1x3XS8KICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG15ICRuZXh0MiA9ICRydG9rZW5zLT5bICRpICsgMiBdOwogICAgICAgICAgICAgICAgICAgIG15ICRuZXh0MSA9ICRydG9rZW5zLT5bICRpICsgMSBdOwogICAgICAgICAgICAgICAgICAgICRpZGVudGlmaWVyIC49ICR0b2sgLiAkbmV4dDEgLiAkbmV4dDI7CiAgICAgICAgICAgICAgICAgICAgJGkgKz0gMjsKICAgICAgICAgICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICcnOwogICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBza2lwIHNvbWV0aGluZyBsaWtlICR7eHh4fSBvciAtPnsKICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJyc7CgogICAgICAgICAgICAgICAgIyBpZiB0aGlzIGlzIHRoZSBmaXJzdCB0b2tlbiBvZiBhIGxpbmUsIGFueSB0b2tlbnMgZm9yIHRoaXMKICAgICAgICAgICAgICAgICMgaWRlbnRpZmllciBoYXZlIGFscmVhZHkgYmVlbiBhY2N1bXVsYXRlZAogICAgICAgICAgICAgICAgaWYgKCAkaWRlbnRpZmllciBlcSAnJCcgfHwgJGkgPT0gMCApIHsgJGlkZW50aWZpZXIgPSAnJzsgfQogICAgICAgICAgICAgICAgJGkgPSAkaV9zYXZlOwogICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzcGFjZSBvayBhZnRlciBsZWFkaW5nICQgJSAqICYgQAogICAgICAgICAgICBlbHNpZiAoICR0b2sgPX4gL15ccyokLyApIHsKCiAgICAgICAgICAgICAgICAkdG9rX2lzX2JsYW5rID0gMTsKCiAgICAgICAgICAgICAgICBpZiAoICRpZGVudGlmaWVyID1+IC9eW1wkXCVcKlwmXEBdLyApIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCBsZW5ndGgoJGlkZW50aWZpZXIpID4gMSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgJGkgICAgICAgICAgICAgPSAkaV9zYXZlOwogICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSAgICAgICAgICA9ICdpJzsgICAgIyBwcm9iYWJseSBwdW5jdHVhdGlvbiB2YXJpYWJsZQogICAgICAgICAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc3BhY2VzIGFmdGVyICQncyBhcmUgY29tbW9uLCBhbmQgc3BhY2UgYWZ0ZXIgQAogICAgICAgICAgICAgICAgICAgICAgICAjIGlzIGhhcm1sZXNzLCBzbyBvbmx5IGNvbXBsYWluIGFib3V0IHNwYWNlCiAgICAgICAgICAgICAgICAgICAgICAgICMgYWZ0ZXIgb3RoZXIgdHlwZSBjaGFyYWN0ZXJzLiBTcGFjZSBhZnRlciAkIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAjIEAgd2lsbCBiZSByZW1vdmVkIGluIGZvcm1hdHRpbmcuICBSZXBvcnQgc3BhY2UKICAgICAgICAgICAgICAgICAgICAgICAgIyBhZnRlciAlIGFuZCAqIGJlY2F1c2UgdGhleSBtaWdodCBpbmRpY2F0ZSBhCiAgICAgICAgICAgICAgICAgICAgICAgICMgcGFyc2luZyBlcnJvci4gIEluIG90aGVyIHdvcmRzICclICcgbWlnaHQgYmUgYQogICAgICAgICAgICAgICAgICAgICAgICAjIG1vZHVsbyBvcGVyYXRvci4gIERlbGV0ZSB0aGlzIHdhcm5pbmcgaWYgaXQKICAgICAgICAgICAgICAgICAgICAgICAgIyBnZXRzIGFubm95aW5nLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRpZGVudGlmaWVyICF+IC9eW1xAXCRdJC8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZSA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTcGFjZSBpbiBpZGVudGlmaWVyLCBmb2xsb3dpbmcgJGlkZW50aWZpZXJcbiI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBlbHNlOgogICAgICAgICAgICAgICAgIyBzcGFjZSBhZnRlciAnLT4nIGlzIG9rCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkdG9rIGVxICdeJyApIHsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGZvciBzb21lIHNwZWNpYWwgdmFyaWFibGVzIGxpa2UgJF5XCiAgICAgICAgICAgICAgICBpZiAoICRpZGVudGlmaWVyID1+IC9eW1wkXCpcQFwlXSQvICkgewogICAgICAgICAgICAgICAgICAgICRpZGVudGlmaWVyIC49ICR0b2s7CiAgICAgICAgICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnQSc7CgogICAgICAgICAgICAgICAgICAgICMgUGVybCBhY2NlcHRzICckXl0nIG9yICdAXl0nLCBidXQKICAgICAgICAgICAgICAgICAgICAjIHRoZXJlIG11c3Qgbm90IGJlIGEgc3BhY2UgYmVmb3JlIHRoZSAnXScuCiAgICAgICAgICAgICAgICAgICAgbXkgJG5leHQxID0gJHJ0b2tlbnMtPlsgJGkgKyAxIF07CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkbmV4dDEgZXEgJ10nICkgewogICAgICAgICAgICAgICAgICAgICAgICAkaSsrOwogICAgICAgICAgICAgICAgICAgICAgICAkaWRlbnRpZmllciAuPSAkbmV4dDE7CiAgICAgICAgICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gIiI7CiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsgICAgIyBzb21ldGhpbmcgZWxzZQoKICAgICAgICAgICAgICAgIGlmICggJGluX3Byb3RvdHlwZV9vcl9zaWduYXR1cmUgJiYgJHRvayA9fiAvXltcKSw9I10vICkgewoKICAgICAgICAgICAgICAgICAgICAjIFdlIG1pZ2h0IGJlIGluIGFuIGV4dHJ1c2lvbiBvZgogICAgICAgICAgICAgICAgICAgICMgICAgIHN1YiBmb28yICggJGZpcnN0LCAkLCAkdGhpcmQgKSB7CiAgICAgICAgICAgICAgICAgICAgIyBsb29raW5nIGF0IGEgbGluZSBzdGFydGluZyB3aXRoIGEgY29tbWEsIGxpa2UKICAgICAgICAgICAgICAgICAgICAjICAgJAogICAgICAgICAgICAgICAgICAgICMgICAsCiAgICAgICAgICAgICAgICAgICAgIyBpbiB0aGlzIGNhc2UgdGhlIGNvbW1hIGVuZHMgdGhlIHNpZ25hdHVyZSB2YXJpYWJsZQogICAgICAgICAgICAgICAgICAgICMgJyQnIHdoaWNoIHdpbGwgaGF2ZSBiZWVuIHByZXZpb3VzbHkgbWFya2VkIHR5cGUgJ3QnCiAgICAgICAgICAgICAgICAgICAgIyByYXRoZXIgdGhhbiAnaScuCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkaSA9PSAkaV9iZWdpbiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgPSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgICAgICAgPSAiIjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgYXQgYSAjIHdlIGhhdmUgdG8gbWFyayBhcyB0eXBlICd0JyBiZWNhdXNlIG1vcmUgbWF5CiAgICAgICAgICAgICAgICAgICAgIyBmb2xsb3csIG90aGVyd2lzZSwgaW4gYSBzaWduYXR1cmUgd2UgY2FuIGxldCAnJCcgYmUgYW4KICAgICAgICAgICAgICAgICAgICAjIGlkZW50aWZpZXIgaGVyZSBmb3IgYmV0dGVyIGZvcm1hdHRpbmcuCiAgICAgICAgICAgICAgICAgICAgIyBTZWUgJ21hbmdsZTQuaW4nIGZvciBhIHRlc3QgY2FzZS4KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAnaSc7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJGlkX3NjYW5fc3RhdGUgZXEgJyQnICYmICR0b2sgZXEgJyMnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAndCc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJGkgPSAkaV9zYXZlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICcnOwogICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjaGVjayBmb3IgdmFyaW91cyBwdW5jdHVhdGlvbiB2YXJpYWJsZXMKICAgICAgICAgICAgICAgIGlmICggJGlkZW50aWZpZXIgPX4gL15bXCRcKlxAXCVdJC8gKSB7CiAgICAgICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIFBPU1RERUZSRUY6IFBvc3RmaXggcmVmZXJlbmNlIC0+JCogLT4lKiAgLT5AKiAtPioqIC0+JiogLT4kIyoKICAgICAgICAgICAgICAgIGVsc2lmICgkdG9rIGVxICcqJwogICAgICAgICAgICAgICAgICAgICYmICRpZGVudGlmaWVyID1+IC9cLVw+KFtcQFwlXCRcKlwmXXxcJFwjKSQvICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkaWRlbnRpZmllciAuPSAkdG9rOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2lmICggJGlkZW50aWZpZXIgZXEgJyQjJyApIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkdG9rIGVxICd7JyApIHsgJHR5cGUgPSAnaSc7ICRpID0gJGlfc2F2ZSB9CgogICAgICAgICAgICAgICAgICAgICMgcGVybCBzZWVtcyB0byBhbGxvdyBqdXN0IHRoZXNlOiAkIzogJCMtICQjKwogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJHRvayA9fiAvXltcOlwtXCtdJC8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gJ2knOwogICAgICAgICAgICAgICAgICAgICAgICAkaWRlbnRpZmllciAuPSAkdG9rOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGkgPSAkaV9zYXZlOwogICAgICAgICAgICAgICAgICAgICAgICB3cml0ZV9sb2dmaWxlX2VudHJ5KCAnVXNlIG9mICQjIGlzIGRlcHJlY2F0ZWQnIC4gIlxuIiApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJGlkZW50aWZpZXIgZXEgJyQkJyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBwZXJsIGRvZXMgbm90IGFsbG93IHJlZmVyZW5jZXMgdG8gcHVuY3R1YXRpb24KICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlcyB3aXRob3V0IGJyYWNlcy4gIEZvciBleGFtcGxlLCB0aGlzCiAgICAgICAgICAgICAgICAgICAgIyB3b24ndCB3b3JrOgogICAgICAgICAgICAgICAgICAgICMgICQ6PVw0OwogICAgICAgICAgICAgICAgICAgICMgICRhID0gJCQ6OwogICAgICAgICAgICAgICAgICAgICMgWW91IHdvdWxkIGhhdmUgdG8gdXNlCiAgICAgICAgICAgICAgICAgICAgIyAgJGEgPSAkeyQ6fTsKCiAgICAgICAgICAgICAgICAgICAgIyAnJCQnIGFsb25lIGlzIHB1bmN0dWF0aW9uIHZhcmlhYmxlIGZvciBQSUQKICAgICAgICAgICAgICAgICAgICAkaSA9ICRpX3NhdmU7CiAgICAgICAgICAgICAgICAgICAgaWYgICAoICR0b2sgZXEgJ3snICkgeyAkdHlwZSA9ICd0JyB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgeyAkdHlwZSA9ICdpJyB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRpZGVudGlmaWVyIGVxICctPicgKSB7CiAgICAgICAgICAgICAgICAgICAgJGkgPSAkaV9zYXZlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGkgPSAkaV9zYXZlOwogICAgICAgICAgICAgICAgICAgIGlmICggbGVuZ3RoKCRpZGVudGlmaWVyKSA9PSAxICkgeyAkaWRlbnRpZmllciA9ICcnOyB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICcnOwogICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIGxvb2tpbmcgZm9yIGFscGhhbnVtZXJpYyBhZnRlciA6OgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgIGVsc2lmICggJGlkX3NjYW5fc3RhdGUgZXEgJ0EnICkgewoKICAgICAgICAgICAgJHRva19pc19ibGFuayA9ICR0b2sgPX4gL15ccyokLzsKCiAgICAgICAgICAgIGlmICggJHRvayA9fiAvXlx3LyApIHsgICAgIyBmb3VuZCBpdAogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJzonOyAgICAjIG5vdyBuZWVkIDo6CiAgICAgICAgICAgICAgICAkc2F3X2FscGhhICAgICA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkdG9rIGVxICInIiAmJiAkYWxsb3dfdGljayApIHsKICAgICAgICAgICAgICAgICRpZGVudGlmaWVyIC49ICR0b2s7CiAgICAgICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICc6JzsgICAgIyBub3cgbmVlZCA6OgogICAgICAgICAgICAgICAgJHNhd19hbHBoYSAgICAgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHRva19pc19ibGFuayAmJiAkaWRlbnRpZmllciA9fiAvXnN1YiAvICkgewogICAgICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnKCc7CiAgICAgICAgICAgICAgICAkaWRlbnRpZmllciAuPSAkdG9rOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHRvayBlcSAnKCcgJiYgJGlkZW50aWZpZXIgPX4gL15zdWIgLyApIHsKICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJyknOwogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJyc7CiAgICAgICAgICAgICAgICAkaSAgICAgICAgICAgICA9ICRpX3NhdmU7CiAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgbG9va2luZyBmb3IgOjogYWZ0ZXIgYWxwaGFudW1lcmljCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgZWxzaWYgKCAkaWRfc2Nhbl9zdGF0ZSBlcSAnOicgKSB7ICAgICMgbG9va2luZyBmb3IgOjogYWZ0ZXIgYWxwaGEKCiAgICAgICAgICAgICR0b2tfaXNfYmxhbmsgPSAkdG9rID1+IC9eXHMqJC87CgogICAgICAgICAgICBpZiAoICR0b2sgZXEgJzo6JyApIHsgICAgICAgICAgICAjIGdvdCBpdAogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJ0EnOyAgICAgICAgIyBub3cgcmVxdWlyZSBhbHBoYQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHRvayA9fiAvXlx3LyApIHsgICAgICAgICMgbW9yZSBhbHBoYW51bWVyaWMgaXMgb2sgaGVyZQogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJzonOyAgICAgICAgIyBub3cgbmVlZCA6OgogICAgICAgICAgICAgICAgJHNhd19hbHBoYSAgICAgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHRvayBlcSAiJyIgJiYgJGFsbG93X3RpY2sgKSB7ICAgICMgdGljawoKICAgICAgICAgICAgICAgIGlmICggJGlzX2tleXdvcmR7JGlkZW50aWZpZXJ9ICkgewogICAgICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJyc7ICAgICAgICAgICAgICAjIHRoYXQncyBhbGwKICAgICAgICAgICAgICAgICAgICAkaSAgICAgICAgICAgICA9ICRpX3NhdmU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkaWRlbnRpZmllciAuPSAkdG9rOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHRva19pc19ibGFuayAmJiAkaWRlbnRpZmllciA9fiAvXnN1YiAvICkgewogICAgICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnKCc7CiAgICAgICAgICAgICAgICAkaWRlbnRpZmllciAuPSAkdG9rOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHRvayBlcSAnKCcgJiYgJGlkZW50aWZpZXIgPX4gL15zdWIgLyApIHsKICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJyknOwogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJyc7ICAgICAgICAjIHRoYXQncyBhbGwKICAgICAgICAgICAgICAgICRpICAgICAgICAgICAgID0gJGlfc2F2ZTsKICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgbG9va2luZyBmb3IgJygnIG9mIHByb3RvdHlwZQogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICBlbHNpZiAoICRpZF9zY2FuX3N0YXRlIGVxICcoJyApIHsKCiAgICAgICAgICAgIGlmICggJHRvayBlcSAnKCcgKSB7ICAgICMgZ290IGl0CiAgICAgICAgICAgICAgICAkaWRlbnRpZmllciAuPSAkdG9rOwogICAgICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnKSc7ICAgICMgbm93IGZpbmQgdGhlIGVuZCBvZiBpdAogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHRvayA9fiAvXlxzKiQvICkgeyAgICAjIGJsYW5rIC0ga2VlcCBnb2luZwogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgICAgICR0b2tfaXNfYmxhbmsgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnJzsgICAgICAgICMgdGhhdCdzIGFsbCAtIG5vIHByb3RvdHlwZQogICAgICAgICAgICAgICAgJGkgICAgICAgICAgICAgPSAkaV9zYXZlOwogICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBsb29raW5nIGZvciAnKScgb2YgcHJvdG90eXBlCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgIGVsc2lmICggJGlkX3NjYW5fc3RhdGUgZXEgJyknICkgewoKICAgICAgICAgICAgJHRva19pc19ibGFuayA9ICR0b2sgPX4gL15ccyokLzsKCiAgICAgICAgICAgIGlmICggJHRvayBlcSAnKScgKSB7ICAgICMgZ290IGl0CiAgICAgICAgICAgICAgICAkaWRlbnRpZmllciAuPSAkdG9rOwogICAgICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnJzsgICAgIyBhbGwgZG9uZQogICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICR0b2sgPX4gL15bXHNcJFwlXFxcKlxAXCZcO10vICkgewogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsgICAgIyBwcm9iYWJsZSBlcnJvciBpbiBzY3JpcHQsIGJ1dCBrZWVwIGdvaW5nCiAgICAgICAgICAgICAgICB3YXJuaW5nKCJVbmV4cGVjdGVkICckdG9rJyB3aGlsZSBzZWVraW5nIGVuZCBvZiBwcm90b3R5cGVcbiIpOwogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgU3RhcnRpbmcgc3ViIGNhbGwKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgIGVsc2lmICggJGlkX3NjYW5fc3RhdGUgZXEgJyYnICkgewoKICAgICAgICAgICAgaWYgKCAkdG9rID1+IC9eW1wkXHddLyApIHsgICAgIyBhbHBoYW51bWVyaWMgLi4KICAgICAgICAgICAgICAgICRpZF9zY2FuX3N0YXRlID0gJzonOyAgICAgIyBub3cgbmVlZCA6OgogICAgICAgICAgICAgICAgJHNhd19hbHBoYSAgICAgPSAxOwogICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJHRvazsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICR0b2sgZXEgIiciICYmICRhbGxvd190aWNrICkgeyAgICAjIGFscGhhbnVtZXJpYyAuLgogICAgICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnOic7ICAgICAgICAgICAgICAgICAjIG5vdyBuZWVkIDo6CiAgICAgICAgICAgICAgICAkc2F3X2FscGhhICAgICA9IDE7CiAgICAgICAgICAgICAgICAkaWRlbnRpZmllciAuPSAkdG9rOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHRvayA9fiAvXlxzKiQvICkgeyAgICAgICAgICAgICAgICMgYWxsb3cgc3BhY2UKICAgICAgICAgICAgICAgICR0b2tfaXNfYmxhbmsgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHRvayBlcSAnOjonICkgeyAgICAgICAgICAgICAgICAgICMgbGVhZGluZyA6OgogICAgICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnQSc7ICAgICAgICAgICAgICAgICAjIGFjY2VwdCBhbHBoYSBuZXh0CiAgICAgICAgICAgICAgICAkaWRlbnRpZmllciAuPSAkdG9rOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHRvayBlcSAneycgKSB7CiAgICAgICAgICAgICAgICBpZiAoICRpZGVudGlmaWVyIGVxICcmJyB8fCAkaSA9PSAwICkgeyAkaWRlbnRpZmllciA9ICcnOyB9CiAgICAgICAgICAgICAgICAkaSAgICAgICAgICAgICA9ICRpX3NhdmU7CiAgICAgICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICcnOwogICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIHB1bmN0dWF0aW9uIHZhcmlhYmxlPwogICAgICAgICAgICAgICAgIyB0ZXN0ZmlsZTogY3VubmluZ2hhbTQucGwKICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICMgV2UgaGF2ZSB0byBiZSBjYXJlZnVsIGhlcmUuICBJZiB3ZSBhcmUgaW4gYW4gdW5rbm93biBzdGF0ZSwKICAgICAgICAgICAgICAgICMgd2Ugd2lsbCByZWplY3QgdGhlIHB1bmN0dWF0aW9uIHZhcmlhYmxlLiAgSW4gdGhlIGZvbGxvd2luZwogICAgICAgICAgICAgICAgIyBleGFtcGxlIHRoZSAnJicgaXMgYSBiaW5hcnkgb3BlcmF0b3IgYnV0IHdlIGFyZSBpbiBhbiB1bmtub3duCiAgICAgICAgICAgICAgICAjIHN0YXRlIGJlY2F1c2UgdGhlcmUgaXMgbm8gc2lnaWwgb24gJ1ByaW1hJywgc28gd2UgZG9uJ3QKICAgICAgICAgICAgICAgICMga25vdyB3aGF0IGl0IGlzLiAgQnV0IGl0IGlzIGEgYmFkIGd1ZXNzIHRoYXQKICAgICAgICAgICAgICAgICMgJyZ+JyBpcyBhIGZ1bmN0aW9uIHZhcmlhYmxlLgogICAgICAgICAgICAgICAgIyAkc2VsZi0+e3RleHR9LT57Y29sb3JNYXB9LT5bCiAgICAgICAgICAgICAgICAjICAgUHJpbWE6OlBvZFZpZXc6OkNPTE9SX0NPREVfRk9SRUdST1VORAogICAgICAgICAgICAgICAgIyAgICYgfnRiOjpDT0xPUl9JTkRFWCBdID0KICAgICAgICAgICAgICAgICMgICAkc2VjLT57Q29sb3JDb2RlfQogICAgICAgICAgICAgICAgaWYgKCAkaWRlbnRpZmllciBlcSAnJicgJiYgJGV4cGVjdGluZyApIHsKICAgICAgICAgICAgICAgICAgICAkaWRlbnRpZmllciAuPSAkdG9rOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGlkZW50aWZpZXIgPSAnJzsKICAgICAgICAgICAgICAgICAgICAkaSAgICAgICAgICA9ICRpX3NhdmU7CiAgICAgICAgICAgICAgICAgICAgJHR5cGUgICAgICAgPSAnJic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkaWRfc2Nhbl9zdGF0ZSA9ICcnOwogICAgICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgdW5rbm93biBzdGF0ZSAtIHF1aXQKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgIGVsc2UgeyAgICAjIGNhbiBnZXQgaGVyZSBkdWUgdG8gZXJyb3IgaW4gaW5pdGlhbGl6YXRpb24KICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnJzsKICAgICAgICAgICAgJGkgICAgICAgICAgICAgPSAkaV9zYXZlOwogICAgICAgICAgICBsYXN0OwogICAgICAgIH0KICAgIH0gIyMgZW5kIG9mIG1haW4gbG9vcAoKICAgIGlmICggJGlkX3NjYW5fc3RhdGUgZXEgJyknICkgewogICAgICAgIHdhcm5pbmcoIkhpdCBlbmQgb2YgbGluZSB3aGlsZSBzZWVraW5nICkgdG8gZW5kIHByb3RvdHlwZVxuIik7CiAgICB9CgogICAgIyBvbmNlIHdlIGVudGVyIHRoZSBhY3R1YWwgaWRlbnRpZmllciwgaXQgbWF5IG5vdCBleHRlbmQgYmV5b25kCiAgICAjIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgbGluZQogICAgaWYgKCAkaWRfc2Nhbl9zdGF0ZSA9fiAvXltBXDpcKFwpXS8gKSB7CiAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnJzsKICAgIH0KCiAgICAjIFBhdGNoOiB0aGUgZGVwcmVjYXRlZCB2YXJpYWJsZSAkIyBkb2VzIG5vdCBjb21iaW5lIHdpdGggYW55dGhpbmcgb24gdGhlCiAgICAjIG5leHQgbGluZS4KICAgIGlmICggJGlkZW50aWZpZXIgZXEgJyQjJyApIHsgJGlkX3NjYW5fc3RhdGUgPSAnJyB9CgogICAgaWYgKCAkaSA8IDAgKSB7ICRpID0gMCB9CgogICAgIyBCZSBzdXJlIGEgdG9rZW4gdHlwZSBpcyBkZWZpbmVkCiAgICBpZiAoICEkdHlwZSApIHsKCiAgICAgICAgaWYgKCRzYXdfdHlwZSkgewoKICAgICAgICAgICAgaWYgKCRzYXdfYWxwaGEpIHsKICAgICAgICAgICAgICAgIGlmICggJGlkZW50aWZpZXIgPX4gL14tPi8gJiYgJGxhc3Rfbm9uYmxhbmtfdHlwZSBlcSAndycgKSB7CiAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAndyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsgJHR5cGUgPSAnaScgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJGlkZW50aWZpZXIgZXEgJy0+JyApIHsKICAgICAgICAgICAgICAgICR0eXBlID0gJy0+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICAgICAoIGxlbmd0aCgkaWRlbnRpZmllcikgPiAxICkKCiAgICAgICAgICAgICAgICAjIEluIHNvbWV0aGluZyBsaWtlICdAJD0nIHdlIGhhdmUgYW4gaWRlbnRpZmllciAnQCQnCiAgICAgICAgICAgICAgICAjIEluIHNvbWV0aGluZyBsaWtlICckJHsnIHdlIGhhdmUgdHlwZSAnJCQnIChhbmQgb25seQogICAgICAgICAgICAgICAgIyBwYXJ0IG9mIGFuIGlkZW50aWZpZXIpCiAgICAgICAgICAgICAgICAmJiAhKCAkaWRlbnRpZmllciA9fiAvXCQkLyAmJiAkdG9rIGVxICd7JyApCiAgICAgICAgICAgICAgICAmJiAoICRpZGVudGlmaWVyICF+IC9eKHN1YiB8cGFja2FnZSApJC8gKQogICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHR5cGUgPSAnaSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7ICR0eXBlID0gJ3QnIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCRzYXdfYWxwaGEpIHsKCiAgICAgICAgICAgICMgdHlwZSAndycgaW5jbHVkZXMgYW55dGhpbmcgd2l0aG91dCBsZWFkaW5nIHR5cGUgaW5mbwogICAgICAgICAgICAjICgkLCUsQCwqKSBpbmNsdWRpbmcgc29tZXRoaW5nIGxpa2UgYWJjOjpkZWY6OmdoaQogICAgICAgICAgICAkdHlwZSA9ICd3JzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICR0eXBlID0gJyc7CiAgICAgICAgfSAgICAjIHRoaXMgY2FuIGhhcHBlbiBvbiBhIHJlc3RhcnQKICAgIH0KCiAgICAjIFNlZSBpZiB3ZSBmb3JtZWQgYW4gaWRlbnRpZmllci4uLgogICAgaWYgKCRpZGVudGlmaWVyKSB7CiAgICAgICAgJHRvayA9ICRpZGVudGlmaWVyOwogICAgICAgIGlmICgkbWVzc2FnZSkgeyB3cml0ZV9sb2dmaWxlX2VudHJ5KCRtZXNzYWdlKSB9CiAgICB9CgogICAgIyBkaWQgbm90IGZpbmQgYW4gaWRlbnRpZmllciwgYmFjayAgdXAKICAgIGVsc2UgewogICAgICAgICR0b2sgPSAkdG9rX2JlZ2luOwogICAgICAgICRpICAgPSAkaV9iZWdpbjsKICAgIH0KCiAgICBERUJVR19TQ0FOX0lEICYmIGRvIHsKICAgICAgICBteSAoICRhLCAkYiwgJGMgKSA9IGNhbGxlcjsKICAgICAgICBwcmludCBTVERPVVQKIlNDQU5JRDogY2FsbGVkIGZyb20gJGEgJGIgJGMgd2l0aCB0b2ssIGksIHN0YXRlLCBpZGVudGlmaWVyID0kdG9rX2JlZ2luLCAkaV9iZWdpbiwgJGlkX3NjYW5fc3RhdGVfYmVnaW4sICRpZGVudGlmaWVyX2JlZ2luXG4iOwogICAgICAgIHByaW50IFNURE9VVAoiU0NBTklEOiByZXR1cm5lZCB3aXRoIHRvaywgaSwgc3RhdGUsIGlkZW50aWZpZXIgPSR0b2ssICRpLCAkaWRfc2Nhbl9zdGF0ZSwgJGlkZW50aWZpZXJcbiI7CiAgICB9OwogICAgcmV0dXJuICggJGksICR0b2ssICR0eXBlLCAkaWRfc2Nhbl9zdGF0ZSwgJGlkZW50aWZpZXIgKTsKfQoKeyAgICAjIyBjbG9zdXJlIGZvciBzdWIgZG9fc2Nhbl9zdWIKCiAgICAjIHNhdmVkIHBhY2thZ2UgYW5kIHN1Ym5hbWVzIGluIGNhc2UgcHJvdG90eXBlIGlzIG9uIHNlcGFyYXRlIGxpbmUKICAgIG15ICggJHBhY2thZ2Vfc2F2ZWQsICRzdWJuYW1lX3NhdmVkICk7CgogICAgIyBpbml0aWFsaXplIHN1Ym5hbWUgZWFjaCB0aW1lIGEgbmV3ICdzdWInIGtleXdvcmQgaXMgZW5jb3VudGVyZWQKICAgIHN1YiBpbml0aWFsaXplX3N1Ym5hbWUgewogICAgICAgICRwYWNrYWdlX3NhdmVkID0gIiI7CiAgICAgICAgJHN1Ym5hbWVfc2F2ZWQgPSAiIjsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgdXNlIGNvbnN0YW50IHsKICAgICAgICBTVUJfQ0FMTCAgICAgICA9PiAxLAogICAgICAgIFBBUkVOX0NBTEwgICAgID0+IDIsCiAgICAgICAgUFJPVE9UWVBFX0NBTEwgPT4gMywKICAgIH07CgogICAgc3ViIGRvX3NjYW5fc3ViIHsKCiAgICAgICAgIyBkb19zY2FuX3N1YiBwYXJzZXMgYSBzdWIgbmFtZSBhbmQgcHJvdG90eXBlLgoKICAgICAgICAjIEF0IHByZXNlbnQgdGhlcmUgYXJlIHRocmVlIGJhc2ljIENBTEwgVFlQRVMgd2hpY2ggYXJlCiAgICAgICAgIyBkaXN0aW5ndWlzaGVkIGJ5IHRoZSBzdGFydGluZyB2YWx1ZSBvZiAnJHRvayc6CiAgICAgICAgIyAxLiAkdG9rPSdzdWInLCBpZF9zY2FuX3N0YXRlPSdzdWInCiAgICAgICAgIyAgICBpdCBpcyBjYWxsZWQgd2l0aCAkaV9iZWcgZXF1YWwgdG8gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBub25ibGFuawogICAgICAgICMgICAgdG9rZW4gZm9sbG93aW5nIGEgJ3N1YicgdG9rZW4uCiAgICAgICAgIyAyLiAkdG9rPScoJywgaWRfc2Nhbl9zdGF0ZT0nc3ViJywKICAgICAgICAjICAgIGl0IGlzIGNhbGxlZCB3aXRoICRpX2JlZyBlcXVhbCB0byB0aGUgaW5kZXggb2YgYSAnKCcgd2hpY2ggbWF5CiAgICAgICAgIyAgICBzdGFydCBhIHByb3RvdHlwZS4KICAgICAgICAjIDMuICR0b2s9J3Byb3RvdHlwZScsIGlkX3NjYW5fc3RhdGU9J3Byb3RvdHlwZScKICAgICAgICAjICAgIGl0IGlzIGNhbGxlZCB3aXRoICRpX2JlZyBlcXVhbCB0byB0aGUgaW5kZXggb2YgYSAnKCcgd2hpY2ggaXMKICAgICAgICAjICAgIHByZWNlZGVkIGJ5ICc6IHByb3RvdHlwZScgYW5kIGhhcyAkaWRfc2Nhbl9zdGF0ZSBlcSAncHJvdG90eXBlJwoKICAgICAgICAjIEV4YW1wbGVzOgoKICAgICAgICAjIEEgc2luZ2xlIHR5cGUgMSBjYWxsIHdpbGwgZ2V0IGJvdGggdGhlIHN1YiBhbmQgcHJvdG90eXBlCiAgICAgICAgIyAgIHN1YiBmb28xICggJCQgKSB7IH0KICAgICAgICAjICAgXgoKICAgICAgICAjIFRoZSBzdWJuYW1lIHdpbGwgYmUgb2J0YWluZWQgd2l0aCBhICdzdWInIGNhbGwKICAgICAgICAjIFRoZSBwcm90b3R5cGUgb24gbGluZSAyIHdpbGwgYmUgb2J0YWluZWQgd2l0aCBhICcoJyBjYWxsCiAgICAgICAgIyAgIHN1YiBmb28xCiAgICAgICAgIyAgIF4gICAgICAgICAgICAgICAgICAgIDwtLS1jYWxsIHR5cGUgMQogICAgICAgICMgICAgICggJCQgKSB7IH0KICAgICAgICAjICAgICBeICAgICAgICAgICAgICAgICAgPC0tLWNhbGwgdHlwZSAyCgogICAgICAgICMgVGhlIHN1Ym5hbWUgd2lsbCBiZSBvYnRhaW5lZCB3aXRoIGEgJ3N1YicgY2FsbAogICAgICAgICMgVGhlIHByb3RvdHlwZSB3aWxsIGJlIG9idGFpbmVkIHdpdGggYSAncHJvdG90eXBlJyBjYWxsCiAgICAgICAgIyAgIHN1YiBmb28xICggJHgsICR5ICkgOiBwcm90b3R5cGUgKCAkJCApIHsgfQogICAgICAgICMgICBeIDwtLS10eXBlIDEgICAgICAgICAgICAgICAgICAgIF4gPC0tLXR5cGUgMwoKICAgICAgICAjIFRPRE86IGFkZCBmdXR1cmUgZXJyb3IgY2hlY2tzIHRvIGJlIHN1cmUgd2UgaGF2ZSBhIHZhbGlkCiAgICAgICAgIyBzdWIgbmFtZS4gIEZvciBleGFtcGxlLCAnc3ViICZkb2l0JyBpcyB3cm9uZy4gIEFsc28sIGJlIHN1cmUKICAgICAgICAjIGEgbmFtZSBpcyBnaXZlbiBpZiBhbmQgb25seSBpZiBhIG5vbi1hbm9ueW1vdXMgc3ViIGlzCiAgICAgICAgIyBhcHByb3ByaWF0ZS4KICAgICAgICAjIFVTRVMgR0xPQkFMIFZBUlM6ICRjdXJyZW50X3BhY2thZ2UsICRsYXN0X25vbmJsYW5rX3Rva2VuLAogICAgICAgICMgJGluX2F0dHJpYnV0ZV9saXN0LCAlc2F3X2Z1bmN0aW9uX2RlZmluaXRpb24sCiAgICAgICAgIyAkc3RhdGVtZW50X3R5cGUKCiAgICAgICAgbXkgKCRyaW5wdXRfaGFzaCkgPSBAXzsKCiAgICAgICAgbXkgJGlucHV0X2xpbmUgICAgICA9ICRyaW5wdXRfaGFzaC0+e2lucHV0X2xpbmV9OwogICAgICAgIG15ICRpICAgICAgICAgICAgICAgPSAkcmlucHV0X2hhc2gtPntpfTsKICAgICAgICBteSAkaV9iZWcgICAgICAgICAgID0gJHJpbnB1dF9oYXNoLT57aV9iZWd9OwogICAgICAgIG15ICR0b2sgICAgICAgICAgICAgPSAkcmlucHV0X2hhc2gtPnt0b2t9OwogICAgICAgIG15ICR0eXBlICAgICAgICAgICAgPSAkcmlucHV0X2hhc2gtPnt0eXBlfTsKICAgICAgICBteSAkcnRva2VucyAgICAgICAgID0gJHJpbnB1dF9oYXNoLT57cnRva2Vuc307CiAgICAgICAgbXkgJHJ0b2tlbl9tYXAgICAgICA9ICRyaW5wdXRfaGFzaC0+e3J0b2tlbl9tYXB9OwogICAgICAgIG15ICRpZF9zY2FuX3N0YXRlICAgPSAkcmlucHV0X2hhc2gtPntpZF9zY2FuX3N0YXRlfTsKICAgICAgICBteSAkbWF4X3Rva2VuX2luZGV4ID0gJHJpbnB1dF9oYXNoLT57bWF4X3Rva2VuX2luZGV4fTsKCiAgICAgICAgIyBEZXRlcm1pbmUgdGhlIENBTEwgVFlQRQogICAgICAgICMgMT1zdWIKICAgICAgICAjIDI9KAogICAgICAgICMgMz1wcm90b3R5cGUKICAgICAgICBteSAkY2FsbF90eXBlID0KICAgICAgICAgICAgJHRvayBlcSAncHJvdG90eXBlJyA/IFBST1RPVFlQRV9DQUxMCiAgICAgICAgICA6ICR0b2sgZXEgJygnICAgICAgICAgPyBQQVJFTl9DQUxMCiAgICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgICBTVUJfQ0FMTDsKCiAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAiIjsgICAgIyBub3JtYWxseSB3ZSBnZXQgZXZlcnl0aGluZyBpbiBvbmUgY2FsbAogICAgICAgIG15ICRzdWJuYW1lID0gJHN1Ym5hbWVfc2F2ZWQ7CiAgICAgICAgbXkgJHBhY2thZ2UgPSAkcGFja2FnZV9zYXZlZDsKICAgICAgICBteSAkcHJvdG8gICA9IHVuZGVmOwogICAgICAgIG15ICRhdHRycyAgID0gdW5kZWY7CiAgICAgICAgbXkgJG1hdGNoOwoKICAgICAgICBteSAkcG9zX2JlZyA9ICRydG9rZW5fbWFwLT5bJGlfYmVnXTsKICAgICAgICBwb3MoJGlucHV0X2xpbmUpID0gJHBvc19iZWc7CgogICAgICAgICMgTG9vayBmb3IgdGhlIHN1YiBOQU1FIGlmIHRoaXMgaXMgYSBTVUIgY2FsbAogICAgICAgIGlmICgKICAgICAgICAgICAgICAgJGNhbGxfdHlwZSA9PSBTVUJfQ0FMTAogICAgICAgICAgICAmJiAkaW5wdXRfbGluZSA9fiBtL1xHXHMqCiAgICAgICAgKCg/Olx3Kig/Oid8OjopKSopICAjIHBhY2thZ2UgLSBzb21ldGhpbmcgdGhhdCBlbmRzIGluIDo6IG9yICcKICAgICAgICAoXHcrKSAgICAgICAgICAgICAgICMgTkFNRSAgICAtIHJlcXVpcmVkCiAgICAgICAgL2djeAogICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJG1hdGNoICAgPSAxOwogICAgICAgICAgICAkc3VibmFtZSA9ICQyOwoKICAgICAgICAgICAgJHBhY2thZ2UgPSAoIGRlZmluZWQoJDEpICYmICQxICkgPyAkMSA6ICRjdXJyZW50X3BhY2thZ2U7CiAgICAgICAgICAgICRwYWNrYWdlID1+IHMvXCcvOjovZzsKICAgICAgICAgICAgaWYgKCAkcGFja2FnZSA9fiAvXlw6LyApIHsgJHBhY2thZ2UgPSAnbWFpbicgLiAkcGFja2FnZSB9CiAgICAgICAgICAgICRwYWNrYWdlID1+IHMvOjokLy87CiAgICAgICAgICAgIG15ICRwb3MgID0gcG9zKCRpbnB1dF9saW5lKTsKICAgICAgICAgICAgbXkgJG51bWMgPSAkcG9zIC0gJHBvc19iZWc7CiAgICAgICAgICAgICR0b2sgID0gJ3N1YiAnIC4gc3Vic3RyKCAkaW5wdXRfbGluZSwgJHBvc19iZWcsICRudW1jICk7CiAgICAgICAgICAgICR0eXBlID0gJ2knOwoKICAgICAgICAgICAgIyByZW1lbWJlciB0aGUgc3ViIG5hbWUgaW4gY2FzZSBhbm90aGVyIGNhbGwgaXMgbmVlZGVkIHRvCiAgICAgICAgICAgICMgZ2V0IHRoZSBwcm90b3R5cGUKICAgICAgICAgICAgJHBhY2thZ2Vfc2F2ZWQgPSAkcGFja2FnZTsKICAgICAgICAgICAgJHN1Ym5hbWVfc2F2ZWQgPSAkc3VibmFtZTsKICAgICAgICB9CgogICAgICAgICMgTm93IGxvb2sgZm9yIFBST1RPIEFUVFJTIGZvciBhbGwgY2FsbCB0eXBlcwogICAgICAgICMgTG9vayBmb3IgcHJvdG90eXBlL2F0dHJpYnV0ZXMgd2hpY2ggYXJlIHVzdWFsbHkgb24gdGhlIHNhbWUKICAgICAgICAjIGxpbmUgYXMgdGhlIHN1YiBuYW1lIGJ1dCB3aGljaCBtaWdodCBiZSBvbiBhIHNlcGFyYXRlIGxpbmUuCiAgICAgICAgIyBGb3IgZXhhbXBsZSwgd2UgbWlnaHQgaGF2ZSBhbiBhbm9ueW1vdXMgc3ViIHdpdGggYXR0cmlidXRlcywKICAgICAgICAjIG9yIGEgcHJvdG90eXBlIG9uIGEgc2VwYXJhdGUgbGluZSBmcm9tIGl0cyBzdWIgbmFtZQoKICAgICAgICAjIE5PVEU6IFdlIG9ubHkgd2FudCB0byBwYXJzZSBQUk9UT1RZUEVTIGhlcmUuIElmIHdlIHNlZSBhbnl0aGluZyB0aGF0CiAgICAgICAgIyBkb2VzIG5vdCBsb29rIGxpa2UgYSBwcm90b3R5cGUsIHdlIGFzc3VtZSBpdCBpcyBhIFNJR05BVFVSRSBhbmQgd2UKICAgICAgICAjIHdpbGwgc3RvcCBhbmQgbGV0IHRoZSB0aGUgc3RhbmRhcmQgdG9rZW5pemVyIGhhbmRsZSBpdC4gIEluCiAgICAgICAgIyBwYXJ0aWN1bGFyLCB3ZSBzdG9wIGlmIHdlIHNlZSBhbnkgbmVzdGVkIHBhcmVucywgYnJhY2VzLCBvciBjb21tYXMuCiAgICAgICAgIyBBbHNvIG5vdGUsIGEgdmFsaWQgcHJvdG90eXBlIGNhbm5vdCBjb250YWluIGFueSBhbHBoYWJldGljIGNoYXJhY3RlcgogICAgICAgICMgIC0tIHNlZSBodHRwczovL3Blcmxkb2MucGVybC5vcmcvcGVybHN1YgogICAgICAgICMgQnV0IGl0IGFwcGVhcnMgdGhhdCBhbiB1bmRlcnNjb3JlIGlzIHZhbGlkIGluIGEgcHJvdG90eXBlLCBzbyB0aGUKICAgICAgICAjIHJlZ2V4IGJlbG93IHVzZXMgW0EtWmEtel0gcmF0aGVyIHRoYW4gXHcKICAgICAgICAjIFRoaXMgaXMgdGhlIG9sZCByZWdleCB3aGljaCBoYXMgYmVlbiByZXBsYWNlZDoKICAgICAgICAjICRpbnB1dF9saW5lID1+IG0vXEcoXHMqXChbXlwpXChcfVx7XCwjXSpcKSk/ICAjIFBST1RPCiAgICAgICAgbXkgJHNhd19vcGVuaW5nX3BhcmVuID0gJGlucHV0X2xpbmUgPX4gL1xHXHMqXCgvOwogICAgICAgIGlmICgKICAgICAgICAgICAgJGlucHV0X2xpbmUgPX4gbS9cRyhccypcKFteXClcKFx9XHtcLCNBLVphLXpdKlwpKT8gICMgUFJPVE8KICAgICAgICAgICAgKFxzKjopPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQVRUUlMgbGVhZGluZyAnOicKICAgICAgICAgICAgL2djeAogICAgICAgICAgICAmJiAoICQxIHx8ICQyICkKICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRwcm90byA9ICQxOwogICAgICAgICAgICAkYXR0cnMgPSAkMjsKCiAgICAgICAjIEFwcGVuZCB0aGUgcHJvdG90eXBlIHRvIHRoZSBzdGFydGluZyB0b2tlbiBpZiBpdCBpcyAnc3ViJyBvcgogICAgICAgIyAncHJvdG90eXBlJy4gIFRoaXMgaXMgbm90IG5lY2Vzc2FyeSBidXQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cwogICAgICAgIyB2ZXJzaW9ucyB3aGVuIHRoZSAtY3NjIGZsYWcgaXMgdXNlZDoKICAgICAgICAgICAgaWYgKCAkcHJvdG8gJiYgKCAkbWF0Y2ggfHwgJGNhbGxfdHlwZSA9PSBQUk9UT1RZUEVfQ0FMTCApICkgewogICAgICAgICAgICAgICAgJHRvayAuPSAkcHJvdG87CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgSWYgd2UganVzdCBlbnRlcmVkIHRoZSBzdWIgYXQgYW4gb3BlbmluZyBwYXJlbiBvbiB0aGlzIGNhbGwsIG5vdAogICAgICAgICAgICAjIGEgZm9sbG93aW5nIDpwcm90b3R5cGUsIGxhYmVsIGl0IHdpdGggdGhlIHByZXZpb3VzIHRva2VuLiAgVGhpcyBpcwogICAgICAgICAgICAjIG5lY2Vzc2FyeSB0byBwcm9wYWdhdGUgdGhlIHN1YiBuYW1lIHRvIGl0cyBvcGVuaW5nIGJsb2NrLgogICAgICAgICAgICBlbHNpZiAoICRjYWxsX3R5cGUgPT0gUEFSRU5fQ0FMTCApIHsKICAgICAgICAgICAgICAgICR0b2sgPSAkbGFzdF9ub25ibGFua190b2tlbjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG1hdGNoIHx8PSAxOwogICAgICAgICAgICAkdHlwZSA9ICdpJzsKICAgICAgICB9CgogICAgICAgIGlmICgkbWF0Y2gpIHsKCiAgICAgICAgICAgICMgQVRUUlM6IGlmIHRoZXJlIGFyZSBhdHRyaWJ1dGVzLCBiYWNrIHVwIGFuZCBsZXQgdGhlICc6JyBiZQogICAgICAgICAgICAjIGZvdW5kIGxhdGVyIGJ5IHRoZSBzY2FubmVyLgogICAgICAgICAgICBteSAkcG9zID0gcG9zKCRpbnB1dF9saW5lKTsKICAgICAgICAgICAgaWYgKCRhdHRycykgewogICAgICAgICAgICAgICAgJHBvcyAtPSBsZW5ndGgoJGF0dHJzKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJG5leHRfbm9uYmxhbmtfdG9rZW4gPSAkdG9rOwoKICAgICAgICAgICAgIyBjYXRjaCBjYXNlIG9mIGxpbmUgd2l0aCBsZWFkaW5nIEFUVFIgJzonIGFmdGVyIGFub255bW91cyBzdWIKICAgICAgICAgICAgaWYgKCAkcG9zID09ICRwb3NfYmVnICYmICR0b2sgZXEgJzonICkgewogICAgICAgICAgICAgICAgJHR5cGUgICAgICAgICAgICAgID0gJ0EnOwogICAgICAgICAgICAgICAgJGluX2F0dHJpYnV0ZV9saXN0ID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBPdGhlcndpc2UsIGlmIHdlIGZvdW5kIGEgbWF0Y2ggd2UgbXVzdCBjb252ZXJ0IGJhY2sgZnJvbQogICAgICAgICAgICAjIHN0cmluZyBwb3NpdGlvbiB0byB0aGUgcHJlX3Rva2VuIGluZGV4IGZvciBjb250aW51ZWQgcGFyc2luZy4KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBJIGRvbid0IHRoaW5rIGFuIGVycm9yIGZsYWcgY2FuIG9jY3VyIGhlcmUgLi5idXQgPwogICAgICAgICAgICAgICAgbXkgJGVycm9yOwogICAgICAgICAgICAgICAgKCAkaSwgJGVycm9yICkgPSBpbnZlcnNlX3ByZXRva2VuX21hcCggJGksICRwb3MsICRydG9rZW5fbWFwLAogICAgICAgICAgICAgICAgICAgICRtYXhfdG9rZW5faW5kZXggKTsKICAgICAgICAgICAgICAgIGlmICgkZXJyb3IpIHsgd2FybmluZygiUG9zc2libHkgaW52YWxpZCBzdWJcbiIpIH0KCiAgICAgICAgICAgICAgICAjIGNoZWNrIGZvciBtdWx0aXBsZSBkZWZpbml0aW9ucyBvZiBhIHN1YgogICAgICAgICAgICAgICAgKCAkbmV4dF9ub25ibGFua190b2tlbiwgbXkgJGlfbmV4dCApID0KICAgICAgICAgICAgICAgICAgZmluZF9uZXh0X25vbmJsYW5rX3Rva2VuX29uX3RoaXNfbGluZSggJGksICRydG9rZW5zLAogICAgICAgICAgICAgICAgICAgICRtYXhfdG9rZW5faW5kZXggKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkbmV4dF9ub25ibGFua190b2tlbiA9fiAvXihccyp8IykkLyApCiAgICAgICAgICAgIHsgICAgIyBza2lwIGJsYW5rIG9yIHNpZGUgY29tbWVudAogICAgICAgICAgICAgICAgbXkgKCAkcnByZV90b2tlbnMsICRycHJlX3R5cGVzICkgPQogICAgICAgICAgICAgICAgICBwZWVrX2FoZWFkX2Zvcl9uX25vbmJsYW5rX3ByZV90b2tlbnMoMSk7CiAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQoJHJwcmVfdG9rZW5zKSAmJiBAeyRycHJlX3Rva2Vuc30gKSB7CiAgICAgICAgICAgICAgICAgICAgJG5leHRfbm9uYmxhbmtfdG9rZW4gPSAkcnByZV90b2tlbnMtPlswXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRuZXh0X25vbmJsYW5rX3Rva2VuID0gJ30nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFNlZSB3aGF0J3MgbmV4dC4uLgogICAgICAgICAgICBpZiAoICRuZXh0X25vbmJsYW5rX3Rva2VuIGVxICd7JyApIHsKICAgICAgICAgICAgICAgIGlmICgkc3VibmFtZSkgewoKICAgICAgICAgICAgICAgICAgICAjIENoZWNrIGZvciBtdWx0aXBsZSBkZWZpbml0aW9ucyBvZiBhIHN1YiwgYnV0CiAgICAgICAgICAgICAgICAgICAgIyBpdCBpcyBvayB0byBoYXZlIG11bHRpcGxlIHN1YiBCRUdJTiwgZXRjLAogICAgICAgICAgICAgICAgICAgICMgc28gd2UgZG8gbm90IGNvbXBsYWluIGlmIG5hbWUgaXMgYWxsIGNhcHMKICAgICAgICAgICAgICAgICAgICBpZiAoICAgJHNhd19mdW5jdGlvbl9kZWZpbml0aW9ueyRwYWNrYWdlfXskc3VibmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHN1Ym5hbWUgIX4gL15bQS1aXSskLyApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkbG5vID0gJHNhd19mdW5jdGlvbl9kZWZpbml0aW9ueyRwYWNrYWdlfXskc3VibmFtZX07CiAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcoCiJhbHJlYWR5IHNhdyBkZWZpbml0aW9uIG9mICdzdWIgJHN1Ym5hbWUnIGluIHBhY2thZ2UgJyRwYWNrYWdlJyBhdCBsaW5lICRsbm9cbiIKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJHNhd19mdW5jdGlvbl9kZWZpbml0aW9ueyRwYWNrYWdlfXskc3VibmFtZX0gPQogICAgICAgICAgICAgICAgICAgICAgJHRva2VuaXplcl9zZWxmLT5bX2xhc3RfbGluZV9udW1iZXJfXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRuZXh0X25vbmJsYW5rX3Rva2VuIGVxICc7JyApIHsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRuZXh0X25vbmJsYW5rX3Rva2VuIGVxICd9JyApIHsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBBVFRSUyAtIGlmIGFuIGF0dHJpYnV0ZSBsaXN0IGZvbGxvd3MsIHJlbWVtYmVyIHRoZSBuYW1lCiAgICAgICAgICAgICMgb2YgdGhlIHN1YiBzbyB0aGUgbmV4dCBvcGVuaW5nIGJyYWNlIGNhbiBiZSBsYWJlbGVkLgogICAgICAgICAgICAjIFNldHRpbmcgJ3N0YXRlbWVudF90eXBlJyBjYXVzZXMgYW55ICc6J3MgdG8gaW50cm9kdWNlCiAgICAgICAgICAgICMgYXR0cmlidXRlcy4KICAgICAgICAgICAgZWxzaWYgKCAkbmV4dF9ub25ibGFua190b2tlbiBlcSAnOicgKSB7CiAgICAgICAgICAgICAgICAkc3RhdGVtZW50X3R5cGUgPSAkdG9rIGlmICggJGNhbGxfdHlwZSA9PSBTVUJfQ0FMTCApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGlmIHdlIHN0b3BwZWQgYmVmb3JlIGFuIG9wZW4gcGFyZW4gLi4uCiAgICAgICAgICAgIGVsc2lmICggJG5leHRfbm9uYmxhbmtfdG9rZW4gZXEgJygnICkgewoKICAgICAgICAgICAgICAgICMgSWYgd2UgRElEIE5PVCBzZWUgdGhpcyBwYXJlbiBhYm92ZSB0aGVuIGl0IG11c3QgYmUgb24gdGhlCiAgICAgICAgICAgICAgICAjIG5leHQgbGluZSBzbyB3ZSB3aWxsIHNldCBhIGZsYWcgdG8gY29tZSBiYWNrIGhlcmUgYW5kIHNlZSBpZgogICAgICAgICAgICAgICAgIyBpdCBpcyBhIFBST1RPVFlQRQoKICAgICAgICAgICAgICAgICMgT3RoZXJ3aXNlLCB3ZSBhc3N1bWUgaXQgaXMgYSBTSUdOQVRVUkUgcmF0aGVyIHRoYW4gYQogICAgICAgICAgICAgICAgIyBQUk9UT1RZUEUgYW5kIGxldCB0aGUgbm9ybWFsIHRva2VuaXplciBoYW5kbGUgaXQgYXMgYSBsaXN0CiAgICAgICAgICAgICAgICBpZiAoICEkc2F3X29wZW5pbmdfcGFyZW4gKSB7CiAgICAgICAgICAgICAgICAgICAgJGlkX3NjYW5fc3RhdGUgPSAnc3ViJzsgICAgIyB3ZSBtdXN0IGNvbWUgYmFjayB0byBnZXQgcHJvdG8KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRzdGF0ZW1lbnRfdHlwZSA9ICR0b2sgaWYgKCAkY2FsbF90eXBlID09IFNVQl9DQUxMICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCRuZXh0X25vbmJsYW5rX3Rva2VuKSB7ICAgICAjIEVPRiB0ZWNobmljYWxseSBvawogICAgICAgICAgICAgICAgJHN1Ym5hbWUgPSAiIiB1bmxlc3MgZGVmaW5lZCgkc3VibmFtZSk7CiAgICAgICAgICAgICAgICB3YXJuaW5nKAoiZXhwZWN0aW5nICc6JyBvciAnOycgb3IgJ3snIGFmdGVyIGRlZmluaXRpb24gb3IgZGVjbGFyYXRpb24gb2Ygc3ViICckc3VibmFtZScgYnV0IHNhdyAnJG5leHRfbm9uYmxhbmtfdG9rZW4nXG4iCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNoZWNrX3Byb3RvdHlwZSggJHByb3RvLCAkcGFja2FnZSwgJHN1Ym5hbWUgKTsKICAgICAgICB9CgogICAgICAgICMgbm8gbWF0Y2ggdG8gZWl0aGVyIHN1YiBuYW1lIG9yIHByb3RvdHlwZSwgYnV0IGxpbmUgbm90IGJsYW5rCiAgICAgICAgZWxzZSB7CgogICAgICAgIH0KICAgICAgICByZXR1cm4gKCAkaSwgJHRvaywgJHR5cGUsICRpZF9zY2FuX3N0YXRlICk7CiAgICB9Cn0KCiMjIyMjIyMjI2kjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBUb2tlbml6ZXIgdXRpbGl0eSByb3V0aW5lcyB3aGljaCBtYXkgdXNlIENPTlNUQU5UUyBidXQgbm8gb3RoZXIgR0xPQkFMUwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpzdWIgZmluZF9uZXh0X25vbmJsYW5rX3Rva2VuIHsKICAgIG15ICggJGksICRydG9rZW5zLCAkbWF4X3Rva2VuX2luZGV4ICkgPSBAXzsKCiAgICBpZiAoICRpID49ICRtYXhfdG9rZW5faW5kZXggKSB7CiAgICAgICAgaWYgKCAhcGVla2VkX2FoZWFkKCkgKSB7CiAgICAgICAgICAgIHBlZWtlZF9haGVhZCgxKTsKICAgICAgICAgICAgJHJ0b2tlbnMgPQogICAgICAgICAgICAgIHBlZWtfYWhlYWRfZm9yX25vbmJsYW5rX3Rva2VuKCAkcnRva2VucywgJG1heF90b2tlbl9pbmRleCApOwogICAgICAgIH0KICAgIH0KICAgIG15ICRuZXh0X25vbmJsYW5rX3Rva2VuID0gJHJ0b2tlbnMtPlsgKyskaSBdOwoKICAgIGlmICggJG5leHRfbm9uYmxhbmtfdG9rZW4gPX4gL15ccyokLyApIHsKICAgICAgICAkbmV4dF9ub25ibGFua190b2tlbiA9ICRydG9rZW5zLT5bICsrJGkgXTsKICAgIH0KICAgIHJldHVybiAoICRuZXh0X25vbmJsYW5rX3Rva2VuLCAkaSApOwp9CgpzdWIgbnVtZXJhdG9yX2V4cGVjdGVkIHsKCiAgICAjIHRoaXMgaXMgYSBmaWx0ZXIgZm9yIGEgcG9zc2libGUgbnVtZXJhdG9yLCBpbiBzdXBwb3J0IG9mIGd1ZXNzaW5nCiAgICAjIGZvciB0aGUgLyBwYXR0ZXJuIGRlbGltaXRlciB0b2tlbi4KICAgICMgcmV0dXJucyAtCiAgICAjICAgMSAtIHllcwogICAgIyAgIDAgLSBjYW4ndCB0ZWxsCiAgICAjICAtMSAtIG5vCiAgICAjIE5vdGU6IEkgYW0gdXNpbmcgdGhlIGNvbnZlbnRpb24gdGhhdCB2YXJpYWJsZXMgZW5kaW5nIGluCiAgICAjIF9leHBlY3RlZCBoYXZlIHRoZXNlIDMgcG9zc2libGUgdmFsdWVzLgogICAgbXkgKCAkaSwgJHJ0b2tlbnMsICRtYXhfdG9rZW5faW5kZXggKSA9IEBfOwogICAgbXkgJG51bWVyYXRvcl9leHBlY3RlZCA9IDA7CgogICAgbXkgJG5leHRfdG9rZW4gPSAkcnRva2Vucy0+WyAkaSArIDEgXTsKICAgIGlmICggJG5leHRfdG9rZW4gZXEgJz0nICkgeyAkaSsrOyB9ICAgICMgaGFuZGxlIC89CiAgICBteSAoICRuZXh0X25vbmJsYW5rX3Rva2VuLCAkaV9uZXh0ICkgPQogICAgICBmaW5kX25leHRfbm9uYmxhbmtfdG9rZW4oICRpLCAkcnRva2VucywgJG1heF90b2tlbl9pbmRleCApOwoKICAgIGlmICggJG5leHRfbm9uYmxhbmtfdG9rZW4gPX4gLyhcKHxcJHxcd3xcLnxcQCkvICkgewogICAgICAgICRudW1lcmF0b3JfZXhwZWN0ZWQgPSAxOwogICAgfQogICAgZWxzZSB7CgogICAgICAgIGlmICggJG5leHRfbm9uYmxhbmtfdG9rZW4gPX4gL15ccyokLyApIHsKICAgICAgICAgICAgJG51bWVyYXRvcl9leHBlY3RlZCA9IDA7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkbnVtZXJhdG9yX2V4cGVjdGVkID0gLTE7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuICRudW1lcmF0b3JfZXhwZWN0ZWQ7Cn0KCnsgICAgIyMgY2xvc3VyZSBmb3Igc3ViIHBhdHRlcm5fZXhwZWN0ZWQKICAgIG15ICVwYXR0ZXJuX3Rlc3Q7CgogICAgQkVHSU4gewoKICAgICAgICAjIExpc3Qgb2YgdG9rZW5zIHdoaWNoIG1heSBmb2xsb3cgYSBwYXR0ZXJuLiAgTm90ZSB0aGF0IHdlIHdpbGwgbm90CiAgICAgICAgIyBoYXZlIGZvcm1lZCBkaWdyYXBocyBhdCB0aGlzIHBvaW50LCBzbyB3ZSB3aWxsIHNlZSAnJicgaW5zdGVhZCBvZgogICAgICAgICMgJyYmJyBhbmQgJ3wnIGluc3RlYWQgb2YgJ3x8JwoKICAgICAgICAjIC8oXCl8XH18XDt8XCZcJnxcfFx8fGFuZHxvcnx3aGlsZXxpZnx1bmxlc3MpLwogICAgICAgIG15IEBxID0gcXcoICYgJiYgfCB8fCA/IDogKyAtICogYW5kIG9yIHdoaWxlIGlmIHVubGVzcyk7CiAgICAgICAgcHVzaCBAcSwgJyknLCAnfScsICddJywgJz4nLCAnLCcsICc7JzsKICAgICAgICBAe3BhdHRlcm5fdGVzdH17QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKICAgIH0KCiAgICBzdWIgcGF0dGVybl9leHBlY3RlZCB7CgogICAgICAgICMgVGhpcyBhIGZpbHRlciBmb3IgYSBwb3NzaWJsZSBwYXR0ZXJuLgogICAgICAgICMgSXQgbG9va3MgYXQgdGhlIHRva2VuIGFmdGVyIGEgcG9zc2libGUgcGF0dGVybiBhbmQgdHJpZXMgdG8KICAgICAgICAjIGRldGVybWluZSBpZiB0aGF0IHRva2VuIGNvdWxkIGVuZCBhIHBhdHRlcm4uCiAgICAgICAgIyByZXR1cm5zIC0KICAgICAgICAjICAgMSAtIHllcwogICAgICAgICMgICAwIC0gY2FuJ3QgdGVsbAogICAgICAgICMgIC0xIC0gbm8KICAgICAgICBteSAoICRpLCAkcnRva2VucywgJG1heF90b2tlbl9pbmRleCApID0gQF87CiAgICAgICAgbXkgJGlzX3BhdHRlcm4gPSAwOwoKICAgICAgICBteSAkbmV4dF90b2tlbiA9ICRydG9rZW5zLT5bICRpICsgMSBdOwogICAgICAgIGlmICggJG5leHRfdG9rZW4gPX4gL15bbXNpeHBvZHVhbGdjXS8gKSB7CiAgICAgICAgICAgICRpKys7CiAgICAgICAgfSAgICAjIHNraXAgcG9zc2libGUgbW9kaWZpZXIKICAgICAgICBteSAoICRuZXh0X25vbmJsYW5rX3Rva2VuLCAkaV9uZXh0ICkgPQogICAgICAgICAgZmluZF9uZXh0X25vbmJsYW5rX3Rva2VuKCAkaSwgJHJ0b2tlbnMsICRtYXhfdG9rZW5faW5kZXggKTsKCiAgICAgICAgaWYgKCAkcGF0dGVybl90ZXN0eyRuZXh0X25vbmJsYW5rX3Rva2VufSApIHsKICAgICAgICAgICAgJGlzX3BhdHRlcm4gPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgIGlmICggJG5leHRfbm9uYmxhbmtfdG9rZW4gPX4gL15ccyokLyApIHsKICAgICAgICAgICAgICAgICRpc19wYXR0ZXJuID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRpc19wYXR0ZXJuID0gLTE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRpc19wYXR0ZXJuOwogICAgfQp9CgpzdWIgZmluZF9uZXh0X25vbmJsYW5rX3Rva2VuX29uX3RoaXNfbGluZSB7CiAgICBteSAoICRpLCAkcnRva2VucywgJG1heF90b2tlbl9pbmRleCApID0gQF87CiAgICBteSAkbmV4dF9ub25ibGFua190b2tlbjsKCiAgICBpZiAoICRpIDwgJG1heF90b2tlbl9pbmRleCApIHsKICAgICAgICAkbmV4dF9ub25ibGFua190b2tlbiA9ICRydG9rZW5zLT5bICsrJGkgXTsKCiAgICAgICAgaWYgKCAkbmV4dF9ub25ibGFua190b2tlbiA9fiAvXlxzKiQvICkgewoKICAgICAgICAgICAgaWYgKCAkaSA8ICRtYXhfdG9rZW5faW5kZXggKSB7CiAgICAgICAgICAgICAgICAkbmV4dF9ub25ibGFua190b2tlbiA9ICRydG9rZW5zLT5bICsrJGkgXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRuZXh0X25vbmJsYW5rX3Rva2VuID0gIiI7CiAgICB9CiAgICByZXR1cm4gKCAkbmV4dF9ub25ibGFua190b2tlbiwgJGkgKTsKfQoKc3ViIGZpbmRfYW5nbGVfb3BlcmF0b3JfdGVybWluYXRpb24gewoKICAgICMgV2UgYXJlIGxvb2tpbmcgYXQgYSAnPCcgYW5kIHdhbnQgdG8ga25vdyBpZiBpdCBpcyBhbiBhbmdsZSBvcGVyYXRvci4KICAgICMgV2UgYXJlIHRvIHJldHVybjoKICAgICMgICAkaSA9IHByZXRva2VuIGluZGV4IG9mIGVuZGluZyAnPicgaWYgZm91bmQsIGN1cnJlbnQgJGkgb3RoZXJ3aXNlCiAgICAjICAgJHR5cGUgPSAnUScgaWYgZm91bmQsICc+JyBvdGhlcndpc2UKICAgIG15ICggJGlucHV0X2xpbmUsICRpX2JlZywgJHJ0b2tlbl9tYXAsICRleHBlY3RpbmcsICRtYXhfdG9rZW5faW5kZXggKSA9IEBfOwogICAgbXkgJGkgICAgPSAkaV9iZWc7CiAgICBteSAkdHlwZSA9ICc8JzsKICAgIHBvcygkaW5wdXRfbGluZSkgPSAxICsgJHJ0b2tlbl9tYXAtPlskaV07CgogICAgbXkgJGZpbHRlcjsKCiAgICAjIHdlIGp1c3QgaGF2ZSB0byBmaW5kIHRoZSBuZXh0ICc+JyBpZiBhIHRlcm0gaXMgZXhwZWN0ZWQKICAgIGlmICggJGV4cGVjdGluZyA9PSBURVJNICkgeyAkZmlsdGVyID0gJ1tcPl0nIH0KCiAgICAjIHdlIGhhdmUgdG8gZ3Vlc3MgaWYgd2UgZG9uJ3Qga25vdyB3aGF0IGlzIGV4cGVjdGVkCiAgICBlbHNpZiAoICRleHBlY3RpbmcgPT0gVU5LTk9XTiApIHsgJGZpbHRlciA9ICdbXD5cO1w9XCNcfFw8XScgfQoKICAgICMgc2hvdWxkbid0IGhhcHBlbiAtIHdlIHNob3VsZG4ndCBiZSBoZXJlIGlmIG9wZXJhdG9yIGlzIGV4cGVjdGVkCiAgICBlbHNlIHsgd2FybmluZygiUHJvZ3JhbSBCdWcgaW4gZmluZF9hbmdsZV9vcGVyYXRvcl90ZXJtaW5hdGlvblxuIikgfQoKICAgICMgVG8gaWxsdXN0cmF0ZSB3aGF0IHdlIG1pZ2h0IGJlIGxvb2tpbmcgYXQsIGluIGNhc2Ugd2UgYXJlCiAgICAjIGd1ZXNzaW5nLCBoZXJlIGFyZSBzb21lIGV4YW1wbGVzIG9mIHZhbGlkIGFuZ2xlIG9wZXJhdG9ycwogICAgIyAob3IgZmlsZSBnbG9icyk6CiAgICAjICA8dG1wX2ltcC8qPgogICAgIyAgPEZIPgogICAgIyAgPCRmaD4KICAgICMgIDwqLmMgKi5oPgogICAgIyAgPF8+CiAgICAjICA8anNrZGZqc2tkZmoqIG9wLyoganNrZGpmamtvc3ZrKj4gKCBnbG9iLnQpCiAgICAjICA8JHtQUkVGSVh9KmltZyouJElNQUdFX1RZUEU+CiAgICAjICA8aW1nKi4kSU1BR0VfVFlQRT4KICAgICMgIDxUaW1nKi4kSU1BR0VfVFlQRT4KICAgICMgIDwkTEFURVgySFRNTFZFUlNJT05TJHtkZH1odG1sWzEtOV0uWzAtOV0ucGw+CiAgICAjCiAgICAjIEhlcmUgYXJlIHNvbWUgZXhhbXBsZXMgb2YgbGluZXMgd2hpY2ggZG8gbm90IGhhdmUgYW5nbGUgb3BlcmF0b3JzOgogICAgIyAgcmV0dXJuIHVubGVzcyAkc2VsZi0+WzJdKysgPCAkI3skc2VsZi0+WzFdfTsKICAgICMgIDwgMiAgfHwgQCR0ID4KICAgICMKICAgICMgdGhlIGZvbGxvd2luZyBsaW5lIGZyb20gZGxpc3Rlci5wbCBjYXVzZWQgdHJvdWJsZToKICAgICMgIHByaW50J34neDc5LCJcbiIsJEQ8MTAyND8iMC4kRCI6JEQ+PjEwLCJLLCAkQyBmaWxlc1xuXG5cbiI7CiAgICAjCiAgICAjIElmIHRoZSAnPCcgc3RhcnRzIGFuIGFuZ2xlIG9wZXJhdG9yLCBpdCBtdXN0IGVuZCBvbiB0aGlzIGxpbmUgYW5kCiAgICAjIGl0IG11c3Qgbm90IGhhdmUgY2VydGFpbiBjaGFyYWN0ZXJzIGxpa2UgJzsnIGFuZCAnPScgaW4gaXQuICBJIHVzZQogICAgIyB0aGlzIHRvIGxpbWl0IHRoZSB0ZXN0aW5nLiAgVGhpcyBmaWx0ZXIgc2hvdWxkIGJlIGltcHJvdmVkIGlmCiAgICAjIHBvc3NpYmxlLgoKICAgIGlmICggJGlucHV0X2xpbmUgPX4gLygkZmlsdGVyKS9nICkgewoKICAgICAgICBpZiAoICQxIGVxICc+JyApIHsKCiAgICAgICAgICAgICMgV2UgTUFZIGhhdmUgZm91bmQgYW4gYW5nbGUgb3BlcmF0b3IgdGVybWluYXRpb24gaWYgd2UgZ2V0CiAgICAgICAgICAgICMgaGVyZSwgYnV0IHdlIG5lZWQgdG8gZG8gbW9yZSB0byBiZSBzdXJlIHdlIGhhdmVuJ3QgYmVlbgogICAgICAgICAgICAjIGZvb2xlZC4KICAgICAgICAgICAgbXkgJHBvcyA9IHBvcygkaW5wdXRfbGluZSk7CgogICAgICAgICAgICBteSAkcG9zX2JlZyA9ICRydG9rZW5fbWFwLT5bJGldOwogICAgICAgICAgICBteSAkc3RyICAgICA9IHN1YnN0ciggJGlucHV0X2xpbmUsICRwb3NfYmVnLCAoICRwb3MgLSAkcG9zX2JlZyApICk7CgogICAgICAgICAgICAjIFJlamVjdCBpZiB0aGUgY2xvc2luZyAnPicgZm9sbG93cyBhICctJyBhcyBpbjoKICAgICAgICAgICAgIyBpZiAoIFZFUlNJT04gPCA1LjAwOSAmJiAkb3AtPiBuYW1lIGVxICdhc3NpZ24nICkgeyB9CiAgICAgICAgICAgIGlmICggJGV4cGVjdGluZyBlcSBVTktOT1dOICkgewogICAgICAgICAgICAgICAgbXkgJGNoZWNrID0gc3Vic3RyKCAkaW5wdXRfbGluZSwgJHBvcyAtIDIsIDEgKTsKICAgICAgICAgICAgICAgIGlmICggJGNoZWNrIGVxICctJyApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCAkaSwgJHR5cGUgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNkZWJ1ZyMjIyMjCiAgICAgICAgICAgICN3cml0ZV9kaWFnbm9zdGljcyggIkFOR0xFPyA6JHN0clxuIik7CiAgICAgICAgICAgICNwcmludCAiQU5HTEU6IGZvdW5kICQxIGF0IHBvcz0kcG9zIHN0cj0kc3RyIGNoZWNrPSRjaGVja1xuIjsKICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNkZWJ1ZyMjIyMjCiAgICAgICAgICAgICR0eXBlID0gJ1EnOwogICAgICAgICAgICBteSAkZXJyb3I7CiAgICAgICAgICAgICggJGksICRlcnJvciApID0KICAgICAgICAgICAgICBpbnZlcnNlX3ByZXRva2VuX21hcCggJGksICRwb3MsICRydG9rZW5fbWFwLCAkbWF4X3Rva2VuX2luZGV4ICk7CgogICAgICAgICAgICAjIEl0IG1heSBiZSBwb3NzaWJsZSB0aGF0IGEgcXVvdGUgZW5kcyBtaWR3YXkgaW4gYSBwcmV0b2tlbi4KICAgICAgICAgICAgIyBJZiB0aGlzIGhhcHBlbnMsIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8gc3BsaXQgdGhlIHByZXRva2VuLgogICAgICAgICAgICBpZiAoJGVycm9yKSB7CiAgICAgICAgICAgICAgICB3YXJuaW5nKAogICAgICAgICAgICAgICAgICAgICJQb3NzaWJsZSB0b2tpbml6YXRpb24gZXJyb3IuLnBsZWFzZSBjaGVjayB0aGlzIGxpbmVcbiIpOwogICAgICAgICAgICAgICAgcmVwb3J0X3Bvc3NpYmxlX2J1ZygpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNvdW50IGJsYW5rcyBvbiBpbnNpZGUgb2YgYnJhY2tldHMKICAgICAgICAgICAgbXkgJGJsYW5rX2NvdW50ID0gMDsKICAgICAgICAgICAgJGJsYW5rX2NvdW50KysgaWYgKCAkc3RyID1+IC88XHMrLyApOwogICAgICAgICAgICAkYmxhbmtfY291bnQrKyBpZiAoICRzdHIgPX4gL1xzKz4vICk7CgogICAgICAgICAgICAjIE5vdyBsZXQncyBzZWUgd2hlcmUgd2Ugc3RhbmQuLi4uCiAgICAgICAgICAgICMgT0sgaWYgbWF0aCBvcCBub3QgcG9zc2libGUKICAgICAgICAgICAgaWYgKCAkZXhwZWN0aW5nID09IFRFUk0gKSB7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgT0sgaWYgdGhlcmUgYXJlIG5vIG1vcmUgdGhhbiAyIG5vbi1ibGFuayBwcmUtdG9rZW5zIGluc2lkZQogICAgICAgICAgICAjIChub3QgcG9zc2libGUgdG8gd3JpdGUgMiB0b2tlbiBtYXRoIGJldHdlZW4gPCBhbmQgPikKICAgICAgICAgICAgIyBUaGlzIGNhdGNoZXMgbW9zdCBjb21tb24gY2FzZXMKICAgICAgICAgICAgZWxzaWYgKCAkaSA8PSAkaV9iZWcgKyAzICsgJGJsYW5rX2NvdW50ICkgewoKICAgICAgICAgICAgICAgICMgTm8gbG9uZ2VyIGFueSBuZWVkIHRvIGRvY3VtZW50IHRoaXMgY29tbW9uIGNhc2UKICAgICAgICAgICAgICAgICMjIHdyaXRlX2RpYWdub3N0aWNzKCJBTkdMRSgxIG9yIDIgdG9rZW5zKTogJHN0clxuIik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgT0sgaWYgdGhlcmUgaXMgc29tZSBraW5kIG9mIGlkZW50aWZpZXIgaW5zaWRlCiAgICAgICAgICAgICMgICBwcmludCAkZmggPHR2Zzo6SU5QVVQ+OwogICAgICAgICAgICBlbHNpZiAoICRzdHIgPX4gL148XHMqXCQ/KFx3fDo6fFxzKStccyo+JC8gKSB7CiAgICAgICAgICAgICAgICB3cml0ZV9kaWFnbm9zdGljcygiQU5HTEUgKGNvbnRhaW5zIGlkZW50aWZpZXIpOiAkc3RyXG4iKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBOb3Qgc3VyZS4uCiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgTGV0J3MgdHJ5IGEgQnJhY2UgVGVzdDogYW55IGJyYWNlcyBpbnNpZGUgbXVzdCBiYWxhbmNlCiAgICAgICAgICAgICAgICBteSAkYnIgPSAwOwogICAgICAgICAgICAgICAgd2hpbGUgKCAkc3RyID1+IC9cey9nICkgeyAkYnIrKyB9CiAgICAgICAgICAgICAgICB3aGlsZSAoICRzdHIgPX4gL1x9L2cgKSB7ICRici0tIH0KICAgICAgICAgICAgICAgIG15ICRzYiA9IDA7CiAgICAgICAgICAgICAgICB3aGlsZSAoICRzdHIgPX4gL1xbL2cgKSB7ICRzYisrIH0KICAgICAgICAgICAgICAgIHdoaWxlICggJHN0ciA9fiAvXF0vZyApIHsgJHNiLS0gfQogICAgICAgICAgICAgICAgbXkgJHByID0gMDsKICAgICAgICAgICAgICAgIHdoaWxlICggJHN0ciA9fiAvXCgvZyApIHsgJHByKysgfQogICAgICAgICAgICAgICAgd2hpbGUgKCAkc3RyID1+IC9cKS9nICkgeyAkcHItLSB9CgogICAgICAgICAgICAgICAgIyBpZiBicmFjZXMgZG8gbm90IGJhbGFuY2UgLSBub3QgYW5nbGUgb3BlcmF0b3IKICAgICAgICAgICAgICAgIGlmICggJGJyIHx8ICRzYiB8fCAkcHIgKSB7CiAgICAgICAgICAgICAgICAgICAgJGkgICAgPSAkaV9iZWc7CiAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAnPCc7CiAgICAgICAgICAgICAgICAgICAgd3JpdGVfZGlhZ25vc3RpY3MoCiAgICAgICAgICAgICAgICAgICAgICAgICJOT1QgQU5HTEUgKEJSQUNFPXskYnIgKCRwciBbJHNiICk6JHN0clxuIik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB3ZSBzaG91bGQga2VlcCBkb2luZyBtb3JlIGNoZWNrcyBoZXJlLi4udG8gYmUgY29udGludWVkCiAgICAgICAgICAgICAgICAjIFRlbnRhdGl2ZWx5IGFjY2VwdGluZyB0aGlzIGFzIGEgdmFsaWQgYW5nbGUgb3BlcmF0b3IuCiAgICAgICAgICAgICAgICAjIFRoZXJlIGFyZSBsb3RzIG1vcmUgdGhpbmdzIHRoYXQgY2FuIGJlIGNoZWNrZWQuCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB3cml0ZV9kaWFnbm9zdGljcygKICAgICAgICAgICAgICAgICAgICAgICAgIkFOR0xFLUd1ZXNzaW5nIHllczogJHN0ciBleHBlY3Rpbmc9JGV4cGVjdGluZ1xuIik7CiAgICAgICAgICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiR3Vlc3NpbmcgYW5nbGUgb3BlcmF0b3IgaGVyZTogJHN0clxuIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZGlkbid0IGZpbmQgZW5kaW5nID4KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaWYgKCAkZXhwZWN0aW5nID09IFRFUk0gKSB7CiAgICAgICAgICAgICAgICB3YXJuaW5nKCJObyBlbmRpbmcgPiBmb3IgYW5nbGUgb3BlcmF0b3JcbiIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuICggJGksICR0eXBlICk7Cn0KCnN1YiBzY2FuX251bWJlcl9kbyB7CgogICAgIyAgc2NhbiBhIG51bWJlciBpbiBhbnkgb2YgdGhlIGZvcm1hdHMgdGhhdCBQZXJsIGFjY2VwdHMKICAgICMgIFVuZGVyYmFycyAoXykgYXJlIGFsbG93ZWQgaW4gZGVjaW1hbCBudW1iZXJzLgogICAgIyAgaW5wdXQgcGFyYW1ldGVycyAtCiAgICAjICAgICAgJGlucHV0X2xpbmUgIC0gdGhlIHN0cmluZyB0byBzY2FuCiAgICAjICAgICAgJGkgICAgICAgICAgIC0gcHJlX3Rva2VuIGluZGV4IHRvIHN0YXJ0IHNjYW5uaW5nCiAgICAjICAgICRydG9rZW5fbWFwICAgIC0gcmVmZXJlbmNlIHRvIHRoZSBwcmVfdG9rZW4gbWFwIGdpdmluZyBzdGFydGluZwogICAgIyAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyIHBvc2l0aW9uIGluICRpbnB1dF9saW5lIG9mIHRva2VuICRpCiAgICAjICBvdXRwdXQgcGFyYW1ldGVycyAtCiAgICAjICAgICRpICAgICAgICAgICAgLSBsYXN0IHByZV90b2tlbiBpbmRleCBvZiB0aGUgbnVtYmVyIGp1c3Qgc2Nhbm5lZAogICAgIyAgICBudW1iZXIgICAgICAgIC0gdGhlIG51bWJlciAoY2hhcmFjdGVycyk7IG9yIHVuZGVmIGlmIG5vdCBhIG51bWJlcgoKICAgIG15ICggJGlucHV0X2xpbmUsICRpLCAkcnRva2VuX21hcCwgJGlucHV0X3R5cGUsICRtYXhfdG9rZW5faW5kZXggKSA9IEBfOwogICAgbXkgJHBvc19iZWcgPSAkcnRva2VuX21hcC0+WyRpXTsKICAgIG15ICRwb3M7CiAgICBteSAkaV9iZWdpbiA9ICRpOwogICAgbXkgJG51bWJlciAgPSB1bmRlZjsKICAgIG15ICR0eXBlICAgID0gJGlucHV0X3R5cGU7CgogICAgbXkgJGZpcnN0X2NoYXIgPSBzdWJzdHIoICRpbnB1dF9saW5lLCAkcG9zX2JlZywgMSApOwoKICAgICMgTG9vayBmb3IgYmFkIHN0YXJ0aW5nIGNoYXJhY3RlcnM7IFNob3VsZG4ndCBoYXBwZW4uLgogICAgaWYgKCAkZmlyc3RfY2hhciAhfiAvW1xkXC5cK1wtRWVdLyApIHsKICAgICAgICB3YXJuaW5nKCJQcm9ncmFtIGJ1ZyAtIHNjYW5fbnVtYmVyIGdpdmVuIGNoYXJhY3RlciAkZmlyc3RfY2hhclxuIik7CiAgICAgICAgcmVwb3J0X2RlZmluaXRlX2J1ZygpOwogICAgICAgIHJldHVybiAoICRpLCAkdHlwZSwgJG51bWJlciApOwogICAgfQoKICAgICMgaGFuZGxlIHYtc3RyaW5nIHdpdGhvdXQgbGVhZGluZyAndicgY2hhcmFjdGVyICgnVHdvIERvdCcgcnVsZSkKICAgICMgKHZzdHJpbmcudCkKICAgICMgVE9ETzogdi1zdHJpbmdzIG1heSBjb250YWluIHVuZGVyc2NvcmVzCiAgICBwb3MoJGlucHV0X2xpbmUpID0gJHBvc19iZWc7CiAgICBpZiAoICRpbnB1dF9saW5lID1+IC9cRygoXGQrKT9cLlxkKyhcLlxkKykrKS9nICkgewogICAgICAgICRwb3MgPSBwb3MoJGlucHV0X2xpbmUpOwogICAgICAgIG15ICRudW1jID0gJHBvcyAtICRwb3NfYmVnOwogICAgICAgICRudW1iZXIgPSBzdWJzdHIoICRpbnB1dF9saW5lLCAkcG9zX2JlZywgJG51bWMgKTsKICAgICAgICAkdHlwZSAgID0gJ3YnOwogICAgICAgIHJlcG9ydF92X3N0cmluZygkbnVtYmVyKTsKICAgIH0KCiAgICAjIGhhbmRsZSBvY3RhbCwgaGV4LCBiaW5hcnkKICAgIGlmICggIWRlZmluZWQoJG51bWJlcikgKSB7CiAgICAgICAgcG9zKCRpbnB1dF9saW5lKSA9ICRwb3NfYmVnOwoKICAgICAgICAjIFBlcmwgNS4yMiBhZGRlZCBmbG9hdGluZyBwb2ludCBsaXRlcmFscywgbGlrZSAnMHgwLmIxNzIxN2Y3ZDFjZjc4cDAnCiAgICAgICAgIyBGb3IgcmVmZXJlbmNlLCB0aGUgZm9ybWF0IHByaW9yIHRvIGhleCBmbG9hdGluZyBwb2ludCBpczoKICAgICAgICAjICAgL1xHWystXT8wKChbeFhdWzAtOWEtZkEtRl9dKyl8KFswLTdfXSspfChbYkJdWzAxX10rKSkvZyApCiAgICAgICAgIyAgICAgICAgICAgICAoaGV4KSAgICAgICAgICAgICAgIChvY3RhbCkgICAoYmluYXJ5KQogICAgICAgIGlmICgKICAgICAgICAgICAgJGlucHV0X2xpbmUgPX4KCiAgICAgICAgICAgIC9cR1srLV0/MCggICAgICAgICAgICAgICAgICAgIyBsZWFkaW5nIFtzaWduZWRdIDAKCiAgICAgICAgICAgIyBhIGhleCBmbG9hdCwgaS5lLiAnMHgwLmIxNzIxN2Y3ZDFjZjc4cDAnCiAgICAgICAgICAgKFt4WF1bMC05YS1mQS1GX10qICAgICAgICAgICAgIyBYIGFuZCBvcHRpb25hbCBsZWFkaW5nIGRpZ2l0cwogICAgICAgICAgIChcLihbMC05YS1mQS1GXVswLTlhLWZBLUZfXSopPyk/ICAgIyBvcHRpb25hbCBkZWNpbWFsIGFuZCBmcmFjdGlvbgogICAgICAgICAgIFtQcF1bKy1dP1swLTlhLWZBLUZdICAgICAgICAgICMgUkVRVUlSRUQgZXhwb25lbnQgd2l0aCBkaWdpdAogICAgICAgICAgIFswLTlhLWZBLUZfXSopICAgICAgICAgICAgICAgICMgb3B0aW9uYWwgQWRkaXRpb25hbCBleHBvbmVudCBkaWdpdHMKCgkgICAjIG9yIGhleCBpbnRlZ2VyCiAgICAgICAgICAgfChbeFhdWzAtOWEtZkEtRl9dKykgICAgICAgIAoKCSAgICMgb3Igb2N0YWwgZnJhY3Rpb24KICAgICAgICAgICB8KFswLTdfXSsgICAgICAgICAgICAgICAjIHN0cmluZyBvZiBvY3RhbCBkaWdpdHMgCiAgICAgICAgICAgKFwuKFswLTddWzAtN19dKik/KT8gICAgIyBvcHRpb25hbCBkZWNpbWFsIGFuZCBmcmFjdGlvbgogICAgICAgICAgIFtQcF1bKy1dP1swLTddICAgICAgICAgICMgUkVRVUlSRUQgZXhwb25lbnQsIG5vIHVuZGVyc2NvcmUKICAgICAgICAgICBbMC03X10qKSAgICAgICAgICAgICAgICAjIEFkZGl0b25hbCBleHBvbmVudCBkaWdpdHMsIHdpdGggdW5kZXJzY29yZXMKCiAgICAgICAgICAgIyBvciBvY3RhbCBpbnRlZ2VyCiAgICAgICAgICAgfChbMC03X10rKSAgICAgICAgICAgICAgICMgc3RyaW5nIG9mIG9jdGFsIGRpZ2l0cyAKCiAgICAgICAgICAgIyBvciBhIGJpbmFyeSBmbG9hdAogICAgICAgICAgIHwoW2JCXVswMV9dKiAgICAgICAgICAgICMgJ2InIHdpdGggc3RyaW5nIG9mIGJpbmFyeSBkaWdpdHMgCiAgICAgICAgICAgKFwuKFswMV1bMDFfXSopPyk/ICAgICAgIyBvcHRpb25hbCBkZWNpbWFsIGFuZCBmcmFjdGlvbgogICAgICAgICAgIFtQcF1bKy1dP1swMV0gICAgICAgICAgICMgUmVxdWlyZWQgZXhwb25lbnQgaW5kaWNhdG9yLCBubyB1bmRlcnNjb3JlCiAgICAgICAgICAgWzAxX10qKSAgICAgICAgICAgICAgICAgIyBhZGRpdGlvbmFsIGV4cG9uZW50IGJpdHMKCgkgICAjIG9yIGJpbmFyeSBpbnRlZ2VyCiAgICAgICAgICAgfChbYkJdWzAxX10rKSAgICAgICAgICAgIyAnYicgd2l0aCBzdHJpbmcgb2YgYmluYXJ5IGRpZ2l0cyAKCiAgICAgICAgICAgKS9neAogICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJHBvcyA9IHBvcygkaW5wdXRfbGluZSk7CiAgICAgICAgICAgIG15ICRudW1jID0gJHBvcyAtICRwb3NfYmVnOwogICAgICAgICAgICAkbnVtYmVyID0gc3Vic3RyKCAkaW5wdXRfbGluZSwgJHBvc19iZWcsICRudW1jICk7CiAgICAgICAgICAgICR0eXBlICAgPSAnbic7CiAgICAgICAgfQogICAgfQoKICAgICMgaGFuZGxlIGRlY2ltYWwKICAgIGlmICggIWRlZmluZWQoJG51bWJlcikgKSB7CiAgICAgICAgcG9zKCRpbnB1dF9saW5lKSA9ICRwb3NfYmVnOwoKICAgICAgICBpZiAoICRpbnB1dF9saW5lID1+IC9cRyhbKy1dP1tcZF9dKihcLltcZF9dKik/KFtFZV1bKy1dPyhcZCspKT8pL2cgKSB7CiAgICAgICAgICAgICRwb3MgPSBwb3MoJGlucHV0X2xpbmUpOwoKICAgICAgICAgICAgIyB3YXRjaCBvdXQgZm9yIHRoaW5ncyBsaWtlIDAuLjQwIHdoaWNoIHdvdWxkIGdpdmUgMC4gYnkgdGhpczsKICAgICAgICAgICAgaWYgKCAgICggc3Vic3RyKCAkaW5wdXRfbGluZSwgJHBvcyAtIDEsIDEgKSBlcSAnLicgKQogICAgICAgICAgICAgICAgJiYgKCBzdWJzdHIoICRpbnB1dF9saW5lLCAkcG9zLCAxICkgZXEgJy4nICkgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkcG9zLS07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbXkgJG51bWMgPSAkcG9zIC0gJHBvc19iZWc7CiAgICAgICAgICAgICRudW1iZXIgPSBzdWJzdHIoICRpbnB1dF9saW5lLCAkcG9zX2JlZywgJG51bWMgKTsKICAgICAgICAgICAgJHR5cGUgICA9ICduJzsKICAgICAgICB9CiAgICB9CgogICAgIyBmaWx0ZXIgb3V0IG5vbi1udW1iZXJzIGxpa2UgZSArIC0gLiBlMiAgLmUzICtlNgogICAgIyB0aGUgcnVsZTogYXQgbGVhc3Qgb25lIGRpZ2l0LCBhbmQgYW55ICdlJyBtdXN0IGJlIHByZWNlZGVkIGJ5IGEgZGlnaXQKICAgIGlmICgKICAgICAgICAkbnVtYmVyICF+IC9cZC8gICAgIyBubyBkaWdpdHMKICAgICAgICB8fCAoICAgJG51bWJlciA9fiAvXiguKilbZUVdLwogICAgICAgICAgICAmJiAkMSAhfiAvXGQvICkgICAgIyBvciBubyBkaWdpdHMgYmVmb3JlIHRoZSAnZScKICAgICAgKQogICAgewogICAgICAgICRudW1iZXIgPSB1bmRlZjsKICAgICAgICAkdHlwZSAgID0gJGlucHV0X3R5cGU7CiAgICAgICAgcmV0dXJuICggJGksICR0eXBlLCAkbnVtYmVyICk7CiAgICB9CgogICAgIyBGb3VuZCBhIG51bWJlcjsgbm93IHdlIG11c3QgY29udmVydCBiYWNrIGZyb20gY2hhcmFjdGVyIHBvc2l0aW9uCiAgICAjIHRvIHByZV90b2tlbiBpbmRleC4gQW4gZXJyb3IgaGVyZSBpbXBsaWVzIHVzZXIgc3ludGF4IGVycm9yLgogICAgIyBBbiBleGFtcGxlIHdvdWxkIGJlIGFuIGludmFsaWQgb2N0YWwgbnVtYmVyIGxpa2UgJzAwOScuCiAgICBteSAkZXJyb3I7CiAgICAoICRpLCAkZXJyb3IgKSA9CiAgICAgIGludmVyc2VfcHJldG9rZW5fbWFwKCAkaSwgJHBvcywgJHJ0b2tlbl9tYXAsICRtYXhfdG9rZW5faW5kZXggKTsKICAgIGlmICgkZXJyb3IpIHsgd2FybmluZygiUG9zc2libHkgaW52YWxpZCBudW1iZXJcbiIpIH0KCiAgICByZXR1cm4gKCAkaSwgJHR5cGUsICRudW1iZXIgKTsKfQoKc3ViIGludmVyc2VfcHJldG9rZW5fbWFwIHsKCiAgICAjIFN0YXJ0aW5nIHdpdGggdGhlIGN1cnJlbnQgcHJlX3Rva2VuIGluZGV4ICRpLCBzY2FuIGZvcndhcmQgdW50aWwKICAgICMgZmluZGluZyB0aGUgaW5kZXggb2YgdGhlIG5leHQgcHJlX3Rva2VuIHdob3NlIHBvc2l0aW9uIGlzICRwb3MuCiAgICBteSAoICRpLCAkcG9zLCAkcnRva2VuX21hcCwgJG1heF90b2tlbl9pbmRleCApID0gQF87CiAgICBteSAkZXJyb3IgPSAwOwoKICAgIHdoaWxlICggKyskaSA8PSAkbWF4X3Rva2VuX2luZGV4ICkgewoKICAgICAgICBpZiAoICRwb3MgPD0gJHJ0b2tlbl9tYXAtPlskaV0gKSB7CgogICAgICAgICAgICAjIExldCB0aGUgY2FsbGluZyByb3V0aW5lIGhhbmRsZSBlcnJvcnMgaW4gd2hpY2ggd2UgZG8gbm90CiAgICAgICAgICAgICMgbGFuZCBvbiBhIHByZS10b2tlbiBib3VuZGFyeS4gIEl0IGNhbiBoYXBwZW4gYnkgcnVubmluZwogICAgICAgICAgICAjIHBlcmx0aWR5IG9uIHNvbWUgbm9uLXBlcmwgc2NyaXB0cywgZm9yIGV4YW1wbGUuCiAgICAgICAgICAgIGlmICggJHBvcyA8ICRydG9rZW5fbWFwLT5bJGldICkgeyAkZXJyb3IgPSAxIH0KICAgICAgICAgICAgJGktLTsKICAgICAgICAgICAgbGFzdDsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gKCAkaSwgJGVycm9yICk7Cn0KCnN1YiBmaW5kX2hlcmVfZG9jIHsKCiAgICAjIGZpbmQgdGhlIHRhcmdldCBvZiBhIGhlcmUgZG9jdW1lbnQsIGlmIGFueQogICAgIyBpbnB1dCBwYXJhbWV0ZXJzOgogICAgIyAgICRpIC0gdG9rZW4gaW5kZXggb2YgdGhlIHNlY29uZCA8IG9mIDw8CiAgICAjICAgKCRpIG11c3QgYmUgbGVzcyB0aGFuIHRoZSBsYXN0IHRva2VuIGluZGV4IGlmIHRoaXMgaXMgY2FsbGVkKQogICAgIyBvdXRwdXQgcGFyYW1ldGVyczoKICAgICMgICAkZm91bmRfdGFyZ2V0ID0gMCBkaWRuJ3QgZmluZCB0YXJnZXQ7ID0xIGZvdW5kIHRhcmdldAogICAgIyAgIEhFUkVfVEFSR0VUIC0gdGhlIHRhcmdldCBzdHJpbmcgKG1heSBiZSBlbXB0eSBzdHJpbmcpCiAgICAjICAgJGkgLSB1bmNoYW5nZWQgaWYgbm90IGhlcmUgZG9jLAogICAgIyAgICBvciBpbmRleCBvZiB0aGUgbGFzdCB0b2tlbiBvZiB0aGUgaGVyZSB0YXJnZXQKICAgICMgICAkc2F3X2Vycm9yIC0gZmxhZyBub3RpbmcgdW5iYWxhbmNlZCBxdW90ZSBvbiBoZXJlIHRhcmdldAogICAgbXkgKCAkZXhwZWN0aW5nLCAkaSwgJHJ0b2tlbnMsICRydG9rZW5fbWFwLCAkbWF4X3Rva2VuX2luZGV4ICkgPSBAXzsKICAgIG15ICRpYmVnICAgICAgICAgICAgICAgICA9ICRpOwogICAgbXkgJGZvdW5kX3RhcmdldCAgICAgICAgID0gMDsKICAgIG15ICRoZXJlX2RvY190YXJnZXQgICAgICA9ICcnOwogICAgbXkgJGhlcmVfcXVvdGVfY2hhcmFjdGVyID0gJyc7CiAgICBteSAkc2F3X2Vycm9yICAgICAgICAgICAgPSAwOwogICAgbXkgKCAkbmV4dF9ub25ibGFua190b2tlbiwgJGlfbmV4dF9ub25ibGFuaywgJG5leHRfdG9rZW4gKTsKICAgICRuZXh0X3Rva2VuID0gJHJ0b2tlbnMtPlsgJGkgKyAxIF07CgogICAgIyBwZXJsIGFsbG93cyBhIGJhY2tzbGFzaCBiZWZvcmUgdGhlIHRhcmdldCBzdHJpbmcgKGhlcmVkb2MudCkKICAgIG15ICRiYWNrc2xhc2ggPSAwOwogICAgaWYgKCAkbmV4dF90b2tlbiBlcSAnXFwnICkgewogICAgICAgICRiYWNrc2xhc2ggID0gMTsKICAgICAgICAkbmV4dF90b2tlbiA9ICRydG9rZW5zLT5bICRpICsgMiBdOwogICAgfQoKICAgICggJG5leHRfbm9uYmxhbmtfdG9rZW4sICRpX25leHRfbm9uYmxhbmsgKSA9CiAgICAgIGZpbmRfbmV4dF9ub25ibGFua190b2tlbl9vbl90aGlzX2xpbmUoICRpLCAkcnRva2VucywgJG1heF90b2tlbl9pbmRleCApOwoKICAgIGlmICggJG5leHRfbm9uYmxhbmtfdG9rZW4gPX4gL1tcJ1wiXGBdLyApIHsKCiAgICAgICAgbXkgJGluX3F1b3RlICAgID0gMTsKICAgICAgICBteSAkcXVvdGVfZGVwdGggPSAwOwogICAgICAgIG15ICRxdW90ZV9wb3MgICA9IDA7CiAgICAgICAgbXkgJHF1b3RlZF9zdHJpbmc7CgogICAgICAgICgKICAgICAgICAgICAgJGksICRpbl9xdW90ZSwgJGhlcmVfcXVvdGVfY2hhcmFjdGVyLCAkcXVvdGVfcG9zLCAkcXVvdGVfZGVwdGgsCiAgICAgICAgICAgICRxdW90ZWRfc3RyaW5nCiAgICAgICAgICApCiAgICAgICAgICA9IGZvbGxvd19xdW90ZWRfc3RyaW5nKCAkaV9uZXh0X25vbmJsYW5rLCAkaW5fcXVvdGUsICRydG9rZW5zLAogICAgICAgICAgICAkaGVyZV9xdW90ZV9jaGFyYWN0ZXIsICRxdW90ZV9wb3MsICRxdW90ZV9kZXB0aCwgJG1heF90b2tlbl9pbmRleCApOwoKICAgICAgICBpZiAoJGluX3F1b3RlKSB7ICAgICMgZGlkbid0IGZpbmQgZW5kIG9mIHF1b3RlLCBzbyBubyB0YXJnZXQgZm91bmQKICAgICAgICAgICAgJGkgPSAkaWJlZzsKICAgICAgICAgICAgaWYgKCAkZXhwZWN0aW5nID09IFRFUk0gKSB7CiAgICAgICAgICAgICAgICB3YXJuaW5nKAoiRGlkIG5vdCBmaW5kIGhlcmUtZG9jIHN0cmluZyB0ZXJtaW5hdG9yICgkaGVyZV9xdW90ZV9jaGFyYWN0ZXIpIGJlZm9yZSBlbmQgb2YgbGluZSBcbiIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkc2F3X2Vycm9yID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsgICAgICAgICAgICAgICMgZm91bmQgZW5kaW5nIHF1b3RlCiAgICAgICAgICAgICRmb3VuZF90YXJnZXQgPSAxOwoKICAgICAgICAgICAgbXkgJHRva2o7CiAgICAgICAgICAgIGZvcmVhY2ggbXkgJGogKCAkaV9uZXh0X25vbmJsYW5rICsgMSAuLiAkaSAtIDEgKSB7CiAgICAgICAgICAgICAgICAkdG9raiA9ICRydG9rZW5zLT5bJGpdOwoKICAgICAgICAgICAgICAgICMgd2UgaGF2ZSB0byByZW1vdmUgYW55IGJhY2tzbGFzaCBiZWZvcmUgdGhlIHF1b3RlIGNoYXJhY3RlcgogICAgICAgICAgICAgICAgIyBzbyB0aGF0IHRoZSBoZXJlLWRvYy10YXJnZXQgZXhhY3RseSBtYXRjaGVzIHRoaXMgc3RyaW5nCiAgICAgICAgICAgICAgICBuZXh0CiAgICAgICAgICAgICAgICAgIGlmICggJHRva2ogZXEgIlxcIgogICAgICAgICAgICAgICAgICAgICYmICRqIDwgJGkgLSAxCiAgICAgICAgICAgICAgICAgICAgJiYgJHJ0b2tlbnMtPlsgJGogKyAxIF0gZXEgJGhlcmVfcXVvdGVfY2hhcmFjdGVyICk7CiAgICAgICAgICAgICAgICAkaGVyZV9kb2NfdGFyZ2V0IC49ICR0b2tqOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGVsc2lmICggKCAkbmV4dF90b2tlbiA9fiAvXlxzKiQvICkgYW5kICggJGV4cGVjdGluZyA9PSBURVJNICkgKSB7CiAgICAgICAgJGZvdW5kX3RhcmdldCA9IDE7CiAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgKICAgICAgICAgICAgImZvdW5kIGJsYW5rIGhlcmUtdGFyZ2V0IGFmdGVyIDw8OyBzdWdnZXN0IHVzaW5nIFwiXCJcbiIpOwogICAgICAgICRpID0gJGliZWc7CiAgICB9CiAgICBlbHNpZiAoICRuZXh0X3Rva2VuID1+IC9eXHcvICkgeyAgICAjIHNpbXBsZSBiYXJld29yZCBvciBpbnRlZ2VyIGFmdGVyIDw8CgogICAgICAgIG15ICRoZXJlX2RvY19leHBlY3RlZDsKICAgICAgICBpZiAoICRleHBlY3RpbmcgPT0gVU5LTk9XTiApIHsKICAgICAgICAgICAgJGhlcmVfZG9jX2V4cGVjdGVkID0gZ3Vlc3NfaWZfaGVyZV9kb2MoJG5leHRfdG9rZW4pOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJGhlcmVfZG9jX2V4cGVjdGVkID0gMTsKICAgICAgICB9CgogICAgICAgIGlmICgkaGVyZV9kb2NfZXhwZWN0ZWQpIHsKICAgICAgICAgICAgJGZvdW5kX3RhcmdldCAgICA9IDE7CiAgICAgICAgICAgICRoZXJlX2RvY190YXJnZXQgPSAkbmV4dF90b2tlbjsKICAgICAgICAgICAgJGkgICAgICAgICAgICAgICA9ICRpYmVnICsgMTsKICAgICAgICB9CgogICAgfQogICAgZWxzZSB7CgogICAgICAgIGlmICggJGV4cGVjdGluZyA9PSBURVJNICkgewogICAgICAgICAgICAkZm91bmRfdGFyZ2V0ID0gMTsKICAgICAgICAgICAgd3JpdGVfbG9nZmlsZV9lbnRyeSgiTm90ZTogYmFyZSBoZXJlLWRvYyBvcGVyYXRvciA8PFxuIik7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkaSA9ICRpYmVnOwogICAgICAgIH0KICAgIH0KCiAgICAjIHBhdGNoIHRvIG5lZ2xlY3QgYW55IHByZXBlbmRlZCBiYWNrc2xhc2gKICAgIGlmICggJGZvdW5kX3RhcmdldCAmJiAkYmFja3NsYXNoICkgeyAkaSsrIH0KCiAgICByZXR1cm4gKCAkZm91bmRfdGFyZ2V0LCAkaGVyZV9kb2NfdGFyZ2V0LCAkaGVyZV9xdW90ZV9jaGFyYWN0ZXIsICRpLAogICAgICAgICRzYXdfZXJyb3IgKTsKfQoKc3ViIGRvX3F1b3RlIHsKCiAgICAjIGZvbGxvdyAob3IgY29udGludWUgZm9sbG93aW5nKSBxdW90ZWQgc3RyaW5nKHMpCiAgICAjICRpbl9xdW90ZSByZXR1cm4gY29kZToKICAgICMgICAwIC0gb2ssIGZvdW5kIGVuZAogICAgIyAgIDEgLSBzdGlsbCBtdXN0IGZpbmQgZW5kIG9mIHF1b3RlIHdob3NlIHRhcmdldCBpcyAkcXVvdGVfY2hhcmFjdGVyCiAgICAjICAgMiAtIHN0aWxsIGxvb2tpbmcgZm9yIGVuZCBvZiBmaXJzdCBvZiB0d28gcXVvdGVzCiAgICAjCiAgICAjIFJldHVybnMgdXBkYXRlZCBzdHJpbmdzOgogICAgIyAgJHF1b3RlZF9zdHJpbmdfMSA9IHF1b3RlZCBzdHJpbmcgc2VlbiB3aGlsZSBpbl9xdW90ZT0xCiAgICAjICAkcXVvdGVkX3N0cmluZ18yID0gcXVvdGVkIHN0cmluZyBzZWVuIHdoaWxlIGluX3F1b3RlPTIKICAgIG15ICgKICAgICAgICAkaSwgICAgICAgICAgICAgICAkaW5fcXVvdGUsICAgICRxdW90ZV9jaGFyYWN0ZXIsCiAgICAgICAgJHF1b3RlX3BvcywgICAgICAgJHF1b3RlX2RlcHRoLCAkcXVvdGVkX3N0cmluZ18xLAogICAgICAgICRxdW90ZWRfc3RyaW5nXzIsICRydG9rZW5zLCAgICAgJHJ0b2tlbl9tYXAsCiAgICAgICAgJG1heF90b2tlbl9pbmRleAogICAgKSA9IEBfOwoKICAgIG15ICRpbl9xdW90ZV9zdGFydGluZyA9ICRpbl9xdW90ZTsKCiAgICBteSAkcXVvdGVkX3N0cmluZzsKICAgIGlmICggJGluX3F1b3RlID09IDIgKSB7ICAgICMgdHdvIHF1b3Rlcy9xdW90ZWRfc3RyaW5nXzFzIHRvIGZvbGxvdwogICAgICAgIG15ICRpYmVnID0gJGk7CiAgICAgICAgKAogICAgICAgICAgICAkaSwgJGluX3F1b3RlLCAkcXVvdGVfY2hhcmFjdGVyLCAkcXVvdGVfcG9zLCAkcXVvdGVfZGVwdGgsCiAgICAgICAgICAgICRxdW90ZWRfc3RyaW5nCiAgICAgICAgICApCiAgICAgICAgICA9IGZvbGxvd19xdW90ZWRfc3RyaW5nKCAkaSwgJGluX3F1b3RlLCAkcnRva2VucywgJHF1b3RlX2NoYXJhY3RlciwKICAgICAgICAgICAgJHF1b3RlX3BvcywgJHF1b3RlX2RlcHRoLCAkbWF4X3Rva2VuX2luZGV4ICk7CiAgICAgICAgJHF1b3RlZF9zdHJpbmdfMiAuPSAkcXVvdGVkX3N0cmluZzsKICAgICAgICBpZiAoICRpbl9xdW90ZSA9PSAxICkgewogICAgICAgICAgICBpZiAoICRxdW90ZV9jaGFyYWN0ZXIgPX4gL1tce1xbXDxcKF0vICkgeyAkaSsrOyB9CiAgICAgICAgICAgICRxdW90ZV9jaGFyYWN0ZXIgPSAnJzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRxdW90ZWRfc3RyaW5nXzIgLj0gIlxuIjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkaW5fcXVvdGUgPT0gMSApIHsgICAgIyBvbmUgKG1vcmUpIHF1b3RlIHRvIGZvbGxvdwogICAgICAgIG15ICRpYmVnID0gJGk7CiAgICAgICAgKAogICAgICAgICAgICAkaSwgJGluX3F1b3RlLCAkcXVvdGVfY2hhcmFjdGVyLCAkcXVvdGVfcG9zLCAkcXVvdGVfZGVwdGgsCiAgICAgICAgICAgICRxdW90ZWRfc3RyaW5nCiAgICAgICAgICApCiAgICAgICAgICA9IGZvbGxvd19xdW90ZWRfc3RyaW5nKCAkaWJlZywgJGluX3F1b3RlLCAkcnRva2VucywgJHF1b3RlX2NoYXJhY3RlciwKICAgICAgICAgICAgJHF1b3RlX3BvcywgJHF1b3RlX2RlcHRoLCAkbWF4X3Rva2VuX2luZGV4ICk7CiAgICAgICAgJHF1b3RlZF9zdHJpbmdfMSAuPSAkcXVvdGVkX3N0cmluZzsKICAgICAgICBpZiAoICRpbl9xdW90ZSA9PSAxICkgewogICAgICAgICAgICAkcXVvdGVkX3N0cmluZ18xIC49ICJcbiI7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuICggJGksICRpbl9xdW90ZSwgJHF1b3RlX2NoYXJhY3RlciwgJHF1b3RlX3BvcywgJHF1b3RlX2RlcHRoLAogICAgICAgICRxdW90ZWRfc3RyaW5nXzEsICRxdW90ZWRfc3RyaW5nXzIgKTsKfQoKc3ViIGZvbGxvd19xdW90ZWRfc3RyaW5nIHsKCiAgICAjIHNjYW4gZm9yIGEgc3BlY2lmaWMgdG9rZW4sIHNraXBwaW5nIGVzY2FwZWQgY2hhcmFjdGVycwogICAgIyBpZiB0aGUgcXVvdGUgY2hhcmFjdGVyIGlzIGJsYW5rLCB1c2UgdGhlIGZpcnN0IG5vbi1ibGFuayBjaGFyYWN0ZXIKICAgICMgaW5wdXQgcGFyYW1ldGVyczoKICAgICMgICAkcnRva2VucyA9IHJlZmVyZW5jZSB0byB0aGUgYXJyYXkgb2YgdG9rZW5zCiAgICAjICAgJGkgPSB0aGUgdG9rZW4gaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciB0byBzZWFyY2gKICAgICMgICAkaW5fcXVvdGUgPSBudW1iZXIgb2YgcXVvdGVkIHN0cmluZ3MgYmVpbmcgZm9sbG93ZWQKICAgICMgICAkYmVnaW5uaW5nX3RvayA9IHRoZSBzdGFydGluZyBxdW90ZSBjaGFyYWN0ZXIKICAgICMgICAkcXVvdGVfcG9zID0gaW5kZXggdG8gY2hlY2sgbmV4dCBmb3IgYWxwaGFudW1lcmljIGRlbGltaXRlcgogICAgIyBvdXRwdXQgcGFyYW1ldGVyczoKICAgICMgICAkaSA9IHRoZSB0b2tlbiBpbmRleCBvZiB0aGUgZW5kaW5nIHF1b3RlIGNoYXJhY3RlcgogICAgIyAgICRpbl9xdW90ZSA9IGRlY3JlbWVudGVkIGlmIGZvdW5kIGVuZCwgdW5jaGFuZ2VkIGlmIG5vdAogICAgIyAgICRiZWdpbm5pbmdfdG9rID0gdGhlIHN0YXJ0aW5nIHF1b3RlIGNoYXJhY3RlcgogICAgIyAgICRxdW90ZV9wb3MgPSBpbmRleCB0byBjaGVjayBuZXh0IGZvciBhbHBoYW51bWVyaWMgZGVsaW1pdGVyCiAgICAjICAgJHF1b3RlX2RlcHRoID0gbmVzdGluZyBkZXB0aCwgc2luY2UgZGVsaW1pdGVycyAneyAoIFsgPCcgY2FuIGJlIG5lc3RlZC4KICAgICMgICAkcXVvdGVkX3N0cmluZyA9IHRoZSB0ZXh0IG9mIHRoZSBxdW90ZSAod2l0aG91dCBxdW90YXRpb24gdG9rZW5zKQogICAgbXkgKCAkaV9iZWcsICRpbl9xdW90ZSwgJHJ0b2tlbnMsICRiZWdpbm5pbmdfdG9rLCAkcXVvdGVfcG9zLCAkcXVvdGVfZGVwdGgsCiAgICAgICAgJG1heF90b2tlbl9pbmRleCApCiAgICAgID0gQF87CiAgICBteSAoICR0b2ssICRlbmRfdG9rICk7CiAgICBteSAkaSAgICAgICAgICAgICA9ICRpX2JlZyAtIDE7CiAgICBteSAkcXVvdGVkX3N0cmluZyA9ICIiOwoKICAgIDAgJiYgZG8gewogICAgICAgIHByaW50IFNURE9VVAoiUVVPVEUgZW50ZXJpbmcgd2l0aCBxdW90ZV9wb3MgPSAkcXVvdGVfcG9zIGk9JGkgYmVnaW5uaW5nX3RvayA9JGJlZ2lubmluZ190b2tcbiI7CiAgICB9OwoKICAgICMgZ2V0IHRoZSBjb3JyZXNwb25kaW5nIGVuZCB0b2tlbgogICAgaWYgKCAkYmVnaW5uaW5nX3RvayAhfiAvXlxzKiQvICkgewogICAgICAgICRlbmRfdG9rID0gbWF0Y2hpbmdfZW5kX3Rva2VuKCRiZWdpbm5pbmdfdG9rKTsKICAgIH0KCiAgICAjIGEgYmxhbmsgdG9rZW4gbWVhbnMgd2UgbXVzdCBmaW5kIGFuZCB1c2UgdGhlIGZpcnN0IG5vbi1ibGFuayBvbmUKICAgIGVsc2UgewogICAgICAgIG15ICRhbGxvd19xdW90ZV9jb21tZW50cyA9ICggJGkgPCAwICkgPyAxIDogMDsgIyBpPDAgbWVhbnMgd2Ugc2F3IGEgPGNyPgoKICAgICAgICB3aGlsZSAoICRpIDwgJG1heF90b2tlbl9pbmRleCApIHsKICAgICAgICAgICAgJHRvayA9ICRydG9rZW5zLT5bICsrJGkgXTsKCiAgICAgICAgICAgIGlmICggJHRvayAhfiAvXlxzKiQvICkgewoKICAgICAgICAgICAgICAgIGlmICggKCAkdG9rIGVxICcjJyApICYmICgkYWxsb3dfcXVvdGVfY29tbWVudHMpICkgewogICAgICAgICAgICAgICAgICAgICRpID0gJG1heF90b2tlbl9pbmRleDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICBpZiAoIGxlbmd0aCgkdG9rKSA+IDEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJHF1b3RlX3BvcyA8PSAwICkgeyAkcXVvdGVfcG9zID0gMSB9CiAgICAgICAgICAgICAgICAgICAgICAgICRiZWdpbm5pbmdfdG9rID0gc3Vic3RyKCAkdG9rLCAkcXVvdGVfcG9zIC0gMSwgMSApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGJlZ2lubmluZ190b2sgPSAkdG9rOwogICAgICAgICAgICAgICAgICAgICAgICAkcXVvdGVfcG9zICAgICA9IDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRlbmRfdG9rICAgICA9IG1hdGNoaW5nX2VuZF90b2tlbigkYmVnaW5uaW5nX3Rvayk7CiAgICAgICAgICAgICAgICAgICAgJHF1b3RlX2RlcHRoID0gMTsKICAgICAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJGFsbG93X3F1b3RlX2NvbW1lbnRzID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIFRoZXJlIGFyZSB0d28gZGlmZmVyZW50IGxvb3BzIHdoaWNoIHNlYXJjaCBmb3IgdGhlIGVuZGluZyBxdW90ZQogICAgIyBjaGFyYWN0ZXIuICBJbiB0aGUgcmFyZSBjYXNlIG9mIGFuIGFscGhhbnVtZXJpYyBxdW90ZSBkZWxpbWl0ZXIsIHdlCiAgICAjIGhhdmUgdG8gbG9vayB0aHJvdWdoIGFscGhhbnVtZXJpYyB0b2tlbnMgY2hhcmFjdGVyLWJ5LWNoYXJhY3Rlciwgc2luY2UKICAgICMgdGhlIHByZS10b2tlbml6YXRpb24gcHJvY2VzcyBjb21iaW5lcyBtdWx0aXBsZSBhbHBoYW51bWVyaWMKICAgICMgY2hhcmFjdGVycywgd2hlcmVhcyBmb3IgYSBub24tYWxwaGFudW1lcmljIGRlbGltaXRlciwgb25seSB0b2tlbnMgb2YKICAgICMgbGVuZ3RoIDEgY2FuIG1hdGNoLgoKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICMgQ2FzZSAxIChyYXJlKTogbG9vcCBmb3IgY2FzZSBvZiBhbHBoYW51bWVyaWMgcXVvdGUgZGVsaW1pdGVyLi4KICAgICMgInF1b3RlX3BvcyIgaXMgdGhlIHBvc2l0aW9uIHRoZSBjdXJyZW50IHdvcmQgdG8gYmVnaW4gc2VhcmNoaW5nCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICBpZiAoICRiZWdpbm5pbmdfdG9rID1+IC9cdy8gKSB7CgogICAgICAgICMgTm90ZSB0aGlzIGJlY2F1c2UgaXQgaXMgbm90IHJlY29tbWVuZGVkIHByYWN0aWNlIGV4Y2VwdAogICAgICAgICMgZm9yIG9iZnVzY2F0ZWQgcGVybCBjb250ZXN0cwogICAgICAgIGlmICggJGluX3F1b3RlID09IDEgKSB7CiAgICAgICAgICAgIHdyaXRlX2xvZ2ZpbGVfZW50cnkoCiAgICAgICAgICAgICAgICAiTm90ZTogYWxwaGFudW1lcmljIHF1b3RlIGRlbGltaXRlciAoJGJlZ2lubmluZ190b2spIFxuIik7CiAgICAgICAgfQoKICAgICAgICB3aGlsZSAoICRpIDwgJG1heF90b2tlbl9pbmRleCApIHsKCiAgICAgICAgICAgIGlmICggJHF1b3RlX3BvcyA9PSAwIHx8ICggJGkgPCAwICkgKSB7CiAgICAgICAgICAgICAgICAkdG9rID0gJHJ0b2tlbnMtPlsgKyskaSBdOwoKICAgICAgICAgICAgICAgIGlmICggJHRvayBlcSAnXFwnICkgewoKICAgICAgICAgICAgICAgICAgICAjIHJldGFpbiBiYWNrc2xhc2ggdW5sZXNzIGl0IGhpZGVzIHRoZSBlbmQgdG9rZW4KICAgICAgICAgICAgICAgICAgICAkcXVvdGVkX3N0cmluZyAuPSAkdG9rCiAgICAgICAgICAgICAgICAgICAgICB1bmxlc3MgJHJ0b2tlbnMtPlsgJGkgKyAxIF0gZXEgJGVuZF90b2s7CiAgICAgICAgICAgICAgICAgICAgJHF1b3RlX3BvcysrOwogICAgICAgICAgICAgICAgICAgIGxhc3QgaWYgKCAkaSA+PSAkbWF4X3Rva2VuX2luZGV4ICk7CiAgICAgICAgICAgICAgICAgICAgJHRvayA9ICRydG9rZW5zLT5bICsrJGkgXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBteSAkb2xkX3BvcyA9ICRxdW90ZV9wb3M7CgogICAgICAgICAgICB1bmxlc3MgKCBkZWZpbmVkKCR0b2spICYmIGRlZmluZWQoJGVuZF90b2spICYmIGRlZmluZWQoJHF1b3RlX3BvcykgKQogICAgICAgICAgICB7CgogICAgICAgICAgICB9CiAgICAgICAgICAgICRxdW90ZV9wb3MgPSAxICsgaW5kZXgoICR0b2ssICRlbmRfdG9rLCAkcXVvdGVfcG9zICk7CgogICAgICAgICAgICBpZiAoICRxdW90ZV9wb3MgPiAwICkgewoKICAgICAgICAgICAgICAgICRxdW90ZWRfc3RyaW5nIC49CiAgICAgICAgICAgICAgICAgIHN1YnN0ciggJHRvaywgJG9sZF9wb3MsICRxdW90ZV9wb3MgLSAkb2xkX3BvcyAtIDEgKTsKCiAgICAgICAgICAgICAgICAkcXVvdGVfZGVwdGgtLTsKCiAgICAgICAgICAgICAgICBpZiAoICRxdW90ZV9kZXB0aCA9PSAwICkgewogICAgICAgICAgICAgICAgICAgICRpbl9xdW90ZS0tOwogICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoICRvbGRfcG9zIDw9IGxlbmd0aCgkdG9rKSApIHsKICAgICAgICAgICAgICAgICAgICAkcXVvdGVkX3N0cmluZyAuPSBzdWJzdHIoICR0b2ssICRvbGRfcG9zICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIENhc2UgMiAobm9ybWFsKTogbG9vcCBmb3IgY2FzZSBvZiBhIG5vbi1hbHBoYW51bWVyaWMgcXVvdGUgZGVsaW1pdGVyLi4KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgZWxzZSB7CgogICAgICAgIHdoaWxlICggJGkgPCAkbWF4X3Rva2VuX2luZGV4ICkgewogICAgICAgICAgICAkdG9rID0gJHJ0b2tlbnMtPlsgKyskaSBdOwoKICAgICAgICAgICAgaWYgKCAkdG9rIGVxICRlbmRfdG9rICkgewogICAgICAgICAgICAgICAgJHF1b3RlX2RlcHRoLS07CgogICAgICAgICAgICAgICAgaWYgKCAkcXVvdGVfZGVwdGggPT0gMCApIHsKICAgICAgICAgICAgICAgICAgICAkaW5fcXVvdGUtLTsKICAgICAgICAgICAgICAgICAgICBsYXN0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHRvayBlcSAkYmVnaW5uaW5nX3RvayApIHsKICAgICAgICAgICAgICAgICRxdW90ZV9kZXB0aCsrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJHRvayBlcSAnXFwnICkgewoKICAgICAgICAgICAgICAgICMgcmV0YWluIGJhY2tzbGFzaCB1bmxlc3MgaXQgaGlkZXMgdGhlIGJlZ2lubmluZyBvciBlbmQgdG9rZW4KICAgICAgICAgICAgICAgICR0b2sgPSAkcnRva2Vucy0+WyArKyRpIF07CiAgICAgICAgICAgICAgICAkcXVvdGVkX3N0cmluZyAuPSAnXFwnCiAgICAgICAgICAgICAgICAgIHVubGVzcyAoICR0b2sgZXEgJGVuZF90b2sgfHwgJHRvayBlcSAkYmVnaW5uaW5nX3RvayApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRxdW90ZWRfc3RyaW5nIC49ICR0b2s7CiAgICAgICAgfQogICAgfQogICAgaWYgKCAkaSA+ICRtYXhfdG9rZW5faW5kZXggKSB7ICRpID0gJG1heF90b2tlbl9pbmRleCB9CiAgICByZXR1cm4gKCAkaSwgJGluX3F1b3RlLCAkYmVnaW5uaW5nX3RvaywgJHF1b3RlX3BvcywgJHF1b3RlX2RlcHRoLAogICAgICAgICRxdW90ZWRfc3RyaW5nICk7Cn0KCnN1YiBpbmRpY2F0ZV9lcnJvciB7CiAgICBteSAoICRtc2csICRsaW5lX251bWJlciwgJGlucHV0X2xpbmUsICRwb3MsICRjYXJyYXQgKSA9IEBfOwogICAgaW50ZXJydXB0X2xvZ2ZpbGUoKTsKICAgIHdhcm5pbmcoJG1zZyk7CiAgICB3cml0ZV9lcnJvcl9pbmRpY2F0b3JfcGFpciggJGxpbmVfbnVtYmVyLCAkaW5wdXRfbGluZSwgJHBvcywgJGNhcnJhdCApOwogICAgcmVzdW1lX2xvZ2ZpbGUoKTsKICAgIHJldHVybjsKfQoKc3ViIHdyaXRlX2Vycm9yX2luZGljYXRvcl9wYWlyIHsKICAgIG15ICggJGxpbmVfbnVtYmVyLCAkaW5wdXRfbGluZSwgJHBvcywgJGNhcnJhdCApID0gQF87CiAgICBteSAoICRvZmZzZXQsICRudW1iZXJlZF9saW5lLCAkdW5kZXJsaW5lICkgPQogICAgICBtYWtlX251bWJlcmVkX2xpbmUoICRsaW5lX251bWJlciwgJGlucHV0X2xpbmUsICRwb3MgKTsKICAgICR1bmRlcmxpbmUgPSB3cml0ZV9vbl91bmRlcmxpbmUoICR1bmRlcmxpbmUsICRwb3MgLSAkb2Zmc2V0LCAkY2FycmF0ICk7CiAgICB3YXJuaW5nKCAkbnVtYmVyZWRfbGluZSAuICJcbiIgKTsKICAgICR1bmRlcmxpbmUgPX4gcy9ccyokLy87CiAgICB3YXJuaW5nKCAkdW5kZXJsaW5lIC4gIlxuIiApOwogICAgcmV0dXJuOwp9CgpzdWIgbWFrZV9udW1iZXJlZF9saW5lIHsKCiAgICAjICBHaXZlbiBhbiBpbnB1dCBsaW5lLCBpdHMgbGluZSBudW1iZXIsIGFuZCBhIGNoYXJhY3RlciBwb3NpdGlvbiBvZgogICAgIyAgaW50ZXJlc3QsIGNyZWF0ZSBhIHN0cmluZyBub3QgbG9uZ2VyIHRoYW4gODAgY2hhcmFjdGVycyBvZiB0aGUgZm9ybQogICAgIyAgICAgJGxpbmVubzogc3ViX3N0cmluZwogICAgIyAgc3VjaCB0aGF0IHRoZSBzdWJfc3RyaW5nIG9mICRzdHIgY29udGFpbnMgdGhlIHBvc2l0aW9uIG9mIGludGVyZXN0CiAgICAjCiAgICAjICBIZXJlIGlzIGFuIGV4YW1wbGUgb2Ygd2hhdCB3ZSB3YW50LCBpbiB0aGlzIGNhc2Ugd2UgYWRkIHRyYWlsaW5nCiAgICAjICAnLi4uJyBiZWNhdXNlIHRoZSBsaW5lIGlzIGxvbmcuCiAgICAjCiAgICAjIDI6IChPbmUgb2YgUUFNTCAyLjAncyBhdXRob3JzIGlzIGEgbWVtYmVyIG9mIHRoZSBXb3JsZCBXaWRlIFdlYiBDb24gLi4uCiAgICAjCiAgICAjICBIZXJlIGlzIGFub3RoZXIgZXhhbXBsZSwgdGhpcyB0aW1lIGluIHdoaWNoIHdlIHVzZWQgbGVhZGluZyAnLi4uJwogICAgIyAgYmVjYXVzZSBvZiBleGNlc3NpdmUgbGVuZ3RoOgogICAgIwogICAgIyAyOiAuLi4gZXIgb2YgdGhlIFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0ncwogICAgIwogICAgIyAgaW5wdXQgcGFyYW1ldGVycyBhcmU6CiAgICAjICAgJGxpbmVubyA9IGxpbmUgbnVtYmVyCiAgICAjICAgJHN0ciA9IHRoZSB0ZXh0IG9mIHRoZSBsaW5lCiAgICAjICAgJHBvcyA9IHBvc2l0aW9uIG9mIGludGVyZXN0ICh0aGUgZXJyb3IpIDogMCA9IGZpcnN0IGNoYXJhY3RlcgogICAgIwogICAgIyAgIFdlIHJldHVybiA6CiAgICAjICAgICAtICRvZmZzZXQgPSBhbiBvZmZzZXQgd2hpY2ggY29ycmVjdHMgdGhlIHBvc2l0aW9uIGluIGNhc2Ugd2Ugb25seQogICAgIyAgICAgICBkaXNwbGF5IHBhcnQgb2YgYSBsaW5lLCBzdWNoIHRoYXQgJHBvcy0kb2Zmc2V0IGlzIHRoZSBlZmZlY3RpdmUKICAgICMgICAgICAgcG9zaXRpb24gZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGRpc3BsYXllZCBsaW5lLgogICAgIyAgICAgLSAkbnVtYmVyZWRfbGluZSA9IHRoZSBudW1iZXJlZCBsaW5lIGFzIGFib3ZlLAogICAgIyAgICAgLSAkdW5kZXJsaW5lID0gYSBibGFuayAndW5kZXJsaW5lJyB3aGljaCBpcyBhbGwgc3BhY2VzIHdpdGggdGhlIHNhbWUKICAgICMgICAgICAgbnVtYmVyIG9mIGNoYXJhY3RlcnMgYXMgdGhlIG51bWJlcmVkIGxpbmUuCgogICAgbXkgKCAkbGluZW5vLCAkc3RyLCAkcG9zICkgPSBAXzsKICAgIG15ICRvZmZzZXQgPSAoICRwb3MgPCA2MCApID8gMCA6ICRwb3MgLSA0MDsKICAgIG15ICRleGNlc3MgPSBsZW5ndGgoJHN0cikgLSAkb2Zmc2V0IC0gNjg7CiAgICBteSAkbnVtYyAgID0gKCAkZXhjZXNzID4gMCApID8gNjggOiB1bmRlZjsKCiAgICBpZiAoIGRlZmluZWQoJG51bWMpICkgewogICAgICAgIGlmICggJG9mZnNldCA9PSAwICkgewogICAgICAgICAgICAkc3RyID0gc3Vic3RyKCAkc3RyLCAkb2Zmc2V0LCAkbnVtYyAtIDQgKSAuICIgLi4uIjsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRzdHIgPSAiLi4uICIgLiBzdWJzdHIoICRzdHIsICRvZmZzZXQgKyA0LCAkbnVtYyAtIDQgKSAuICIgLi4uIjsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgaWYgKCAkb2Zmc2V0ID09IDAgKSB7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkc3RyID0gIi4uLiAiIC4gc3Vic3RyKCAkc3RyLCAkb2Zmc2V0ICsgNCApOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkbnVtYmVyZWRfbGluZSA9IHNwcmludGYoICIlZDogIiwgJGxpbmVubyApOwogICAgJG9mZnNldCAtPSBsZW5ndGgoJG51bWJlcmVkX2xpbmUpOwogICAgJG51bWJlcmVkX2xpbmUgLj0gJHN0cjsKICAgIG15ICR1bmRlcmxpbmUgPSAiICIgeCBsZW5ndGgoJG51bWJlcmVkX2xpbmUpOwogICAgcmV0dXJuICggJG9mZnNldCwgJG51bWJlcmVkX2xpbmUsICR1bmRlcmxpbmUgKTsKfQoKc3ViIHdyaXRlX29uX3VuZGVybGluZSB7CgogICAgIyBUaGUgInVuZGVybGluZSIgaXMgYSBzdHJpbmcgdGhhdCBzaG93cyB3aGVyZSBhbiBlcnJvciBpczsgaXQgc3RhcnRzCiAgICAjIG91dCBhcyBhIHN0cmluZyBvZiBibGFua3Mgd2l0aCB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIG51bWJlcmVkIGxpbmUgb2YKICAgICMgY29kZSBhYm92ZSBpdCwgYW5kIHdlIGhhdmUgdG8gYWRkIG1hcmtpbmcgdG8gc2hvdyB3aGVyZSBhbiBlcnJvciBpcy4KICAgICMgSW4gdGhlIGV4YW1wbGUgYmVsb3csIHdlIHdhbnQgdG8gd3JpdGUgdGhlIHN0cmluZyAnLS1eJyBqdXN0IGJlbG93CiAgICAjIHRoZSBsaW5lIG9mIGJhZCBjb2RlOgogICAgIwogICAgIyAyOiAoT25lIG9mIFFBTUwgMi4wJ3MgYXV0aG9ycyBpcyBhIG1lbWJlciBvZiB0aGUgV29ybGQgV2lkZSBXZWIgQ29uIC4uLgogICAgIyAgICAgICAgICAgICAgICAgLS0tXgogICAgIyBXZSBhcmUgZ2l2ZW4gdGhlIGN1cnJlbnQgdW5kZXJsaW5lIHN0cmluZywgcGx1cyBhIHBvc2l0aW9uIGFuZCBhCiAgICAjIHN0cmluZyB0byB3cml0ZSBvbiBpdC4KICAgICMKICAgICMgSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHRoZXJlIHdpbGwgYmUgMiBjYWxscyB0byBkbyB0aGlzOgogICAgIyBGaXJzdCBjYWxsOiAgJHBvcz0xOSwgcG9zX2Nocj1eCiAgICAjIFNlY29uZCBjYWxsOiAkcG9zPTE2LCBwb3NfY2hyPS0tLQogICAgIwogICAgIyBUaGlzIGlzIGEgdHJpdmlhbCB0aGluZyB0byBkbyB3aXRoIHN1YnN0ciwgYnV0IHRoZXJlIGlzIHNvbWUKICAgICMgY2hlY2tpbmcgdG8gZG8uCgogICAgbXkgKCAkdW5kZXJsaW5lLCAkcG9zLCAkcG9zX2NociApID0gQF87CgogICAgIyBjaGVjayBmb3IgZXJyb3IuLnNob3VsZG4ndCBoYXBwZW4KICAgIHVubGVzcyAoICggJHBvcyA+PSAwICkgJiYgKCAkcG9zIDw9IGxlbmd0aCgkdW5kZXJsaW5lKSApICkgewogICAgICAgIHJldHVybiAkdW5kZXJsaW5lOwogICAgfQogICAgbXkgJGV4Y2VzcyA9IGxlbmd0aCgkcG9zX2NocikgKyAkcG9zIC0gbGVuZ3RoKCR1bmRlcmxpbmUpOwogICAgaWYgKCAkZXhjZXNzID4gMCApIHsKICAgICAgICAkcG9zX2NociA9IHN1YnN0ciggJHBvc19jaHIsIDAsIGxlbmd0aCgkcG9zX2NocikgLSAkZXhjZXNzICk7CiAgICB9CiAgICBzdWJzdHIoICR1bmRlcmxpbmUsICRwb3MsIGxlbmd0aCgkcG9zX2NocikgKSA9ICRwb3NfY2hyOwogICAgcmV0dXJuICgkdW5kZXJsaW5lKTsKfQoKc3ViIHByZV90b2tlbml6ZSB7CgogICAgIyBCcmVhayBhIHN0cmluZywgJHN0ciwgaW50byBhIHNlcXVlbmNlIG9mIHByZWxpbWluYXJ5IHRva2Vucy4gIFdlCiAgICAjIGFyZSBpbnRlcmVzdGVkIGluIHRoZXNlIHR5cGVzIG9mIHRva2VuczoKICAgICMgICB3b3JkcyAgICAgICAodHlwZT0ndycpLCAgICAgICAgICAgIGV4YW1wbGU6ICdtYXhfdG9rZW5zX3dhbnRlZCcKICAgICMgICBkaWdpdHMgICAgICAodHlwZSA9ICdkJyksICAgICAgICAgIGV4YW1wbGU6ICcwNzU1JwogICAgIyAgIHdoaXRlc3BhY2UgICh0eXBlID0gJ2InKSwgICAgICAgICAgZXhhbXBsZTogJyAgICcKICAgICMgICBhbnkgb3RoZXIgc2luZ2xlIGNoYXJhY3RlciAoaS5lLiBwdW5jdDsgdHlwZSA9IHRoZSBjaGFyYWN0ZXIgaXRzZWxmKS4KICAgICMgV2UgY2Fubm90IGRvIGJldHRlciB0aGFuIHRoaXMgeWV0IGJlY2F1c2Ugd2UgbWlnaHQgYmUgaW4gYSBxdW90ZWQKICAgICMgc3RyaW5nIG9yIHBhdHRlcm4uICBDYWxsZXIgc2V0cyAkbWF4X3Rva2Vuc193YW50ZWQgdG8gMCB0byBnZXQgYWxsCiAgICAjIHRva2Vucy4KICAgIG15ICggJHN0ciwgJG1heF90b2tlbnNfd2FudGVkICkgPSBAXzsKCiAgICAjIHdlIHJldHVybiByZWZlcmVuY2VzIHRvIHRoZXNlIDMgYXJyYXlzOgogICAgbXkgQHRva2VucyAgICA9ICgpOyAgICAgIyBhcnJheSBvZiB0aGUgdG9rZW5zIHRoZW1zZWx2ZXMKICAgIG15IEB0b2tlbl9tYXAgPSAoMCk7ICAgICMgc3RyaW5nIHBvc2l0aW9uIG9mIHN0YXJ0IG9mIGVhY2ggdG9rZW4KICAgIG15IEB0eXBlICAgICAgPSAoKTsgICAgICMgJ2InPXdoaXRlc3BhY2UsICdkJz1kaWdpdHMsICd3Jz1hbHBoYSwgb3IgcHVuY3QKCiAgICBkbyB7CgogICAgICAgICMgd2hpdGVzcGFjZQogICAgICAgIGlmICggJHN0ciA9fiAvXEcoXHMrKS9nYyApIHsgcHVzaCBAdHlwZSwgJ2InOyB9CgogICAgICAgICMgbnVtYmVycwogICAgICAgICMgbm90ZSB0aGF0IHRoaXMgbXVzdCBjb21lIGJlZm9yZSB3b3JkcyEKICAgICAgICBlbHNpZiAoICRzdHIgPX4gL1xHKFxkKykvZ2MgKSB7IHB1c2ggQHR5cGUsICdkJzsgfQoKICAgICAgICAjIHdvcmRzCiAgICAgICAgZWxzaWYgKCAkc3RyID1+IC9cRyhcdyspL2djICkgeyBwdXNoIEB0eXBlLCAndyc7IH0KCiAgICAgICAgIyBzaW5nbGUtY2hhcmFjdGVyIHB1bmN0dWF0aW9uCiAgICAgICAgZWxzaWYgKCAkc3RyID1+IC9cRyhcVykvZ2MgKSB7IHB1c2ggQHR5cGUsICQxOyB9CgogICAgICAgICMgdGhhdCdzIGFsbC4uCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAoIFxAdG9rZW5zLCBcQHRva2VuX21hcCwgXEB0eXBlICk7CiAgICAgICAgfQoKICAgICAgICBwdXNoIEB0b2tlbnMsICAgICQxOwogICAgICAgIHB1c2ggQHRva2VuX21hcCwgcG9zKCRzdHIpOwoKICAgIH0gd2hpbGUgKCAtLSRtYXhfdG9rZW5zX3dhbnRlZCAhPSAwICk7CgogICAgcmV0dXJuICggXEB0b2tlbnMsIFxAdG9rZW5fbWFwLCBcQHR5cGUgKTsKfQoKc3ViIHNob3dfdG9rZW5zIHsKCiAgICAjIHRoaXMgaXMgYW4gb2xkIGRlYnVnIHJvdXRpbmUKICAgICMgbm90IGNhbGxlZCwgYnV0IHNhdmVkIGZvciByZWZlcmVuY2UKICAgIG15ICggJHJ0b2tlbnMsICRydG9rZW5fbWFwICkgPSBAXzsKICAgIG15ICRudW0gPSBzY2FsYXIoIEB7JHJ0b2tlbnN9ICk7CgogICAgZm9yZWFjaCBteSAkaSAoIDAgLi4gJG51bSAtIDEgKSB7CiAgICAgICAgbXkgJGxlbiA9IGxlbmd0aCggJHJ0b2tlbnMtPlskaV0gKTsKICAgICAgICBwcmludCBTVERPVVQgIiRpOiRsZW46JHJ0b2tlbl9tYXAtPlskaV06JHJ0b2tlbnMtPlskaV06XG4iOwogICAgfQogICAgcmV0dXJuOwp9Cgp7ICAgICMjIGNsb3N1cmUgZm9yIHN1YiBtYXRjaGluZyBlbmQgdG9rZW4KICAgIG15ICVtYXRjaGluZ19lbmRfdG9rZW47CgogICAgQkVHSU4gewogICAgICAgICVtYXRjaGluZ19lbmRfdG9rZW4gPSAoCiAgICAgICAgICAgICd7JyA9PiAnfScsCiAgICAgICAgICAgICcoJyA9PiAnKScsCiAgICAgICAgICAgICdbJyA9PiAnXScsCiAgICAgICAgICAgICc8JyA9PiAnPicsCiAgICAgICAgKTsKICAgIH0KCiAgICBzdWIgbWF0Y2hpbmdfZW5kX3Rva2VuIHsKCiAgICAgICAgIyByZXR1cm4gY2xvc2luZyBjaGFyYWN0ZXIgZm9yIGEgcGF0dGVybgogICAgICAgIG15ICRiZWdpbm5pbmdfdG9rZW4gPSBzaGlmdDsKICAgICAgICBpZiAoICRtYXRjaGluZ19lbmRfdG9rZW57JGJlZ2lubmluZ190b2tlbn0gKSB7CiAgICAgICAgICAgIHJldHVybiAkbWF0Y2hpbmdfZW5kX3Rva2VueyRiZWdpbm5pbmdfdG9rZW59OwogICAgICAgIH0KICAgICAgICByZXR1cm4gKCRiZWdpbm5pbmdfdG9rZW4pOwogICAgfQp9CgpzdWIgZHVtcF90b2tlbl90eXBlcyB7CiAgICBteSAoICRjbGFzcywgJGZoICkgPSBAXzsKCiAgICAjIFRoaXMgc2hvdWxkIGJlIHRoZSBsYXRlc3QgbGlzdCBvZiB0b2tlbiB0eXBlcyBpbiB1c2UKICAgICMgYWRkaW5nIE5FV19UT0tFTlM6IGFkZCBhIGNvbW1lbnQgaGVyZQogICAgJGZoLT5wcmludCg8PCdFTkRfT0ZfTElTVCcpOwoKSGVyZSBpcyBhIGxpc3Qgb2YgdGhlIHRva2VuIHR5cGVzIGN1cnJlbnRseSB1c2VkIGZvciBsaW5lcyBvZiB0eXBlICdDT0RFJy4gIApGb3IgdGhlIGZvbGxvd2luZyB0b2tlbnMsIHRoZSAidHlwZSIgb2YgYSB0b2tlbiBpcyBqdXN0IHRoZSB0b2tlbiBpdHNlbGYuICAKCi4uIDo6IDw8ID4+ICoqICYmIC4uIHx8IC8vIC0+ID0+ICs9IC09IC49ICU9ICY9IHw9IF49ICo9IDw+CiggKSA8PSA+PSA9PSA9fiAhfiAhPSArKyAtLSAvPSB4PQouLi4gKio9IDw8PSA+Pj0gJiY9IHx8PSAvLz0gPD0+IAosICsgLSAvICogfCAlICEgeCB+ID0gXCA/IDogLiA8ID4gXiAmCgpUaGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgdG9rZW4gdHlwZXMgYXJlIGRlZmluZWQ6CgogdHlwZSAgICBtZWFuaW5nCiAgICBiICAgIGJsYW5rICh3aGl0ZSBzcGFjZSkgCiAgICB7ICAgIGluZGVudDogb3BlbmluZyBzdHJ1Y3R1cmFsIGN1cmx5IGJyYWNlIG9yIHNxdWFyZSBicmFja2V0IG9yIHBhcmVuCiAgICAgICAgIChjb2RlIGJsb2NrLCBhbm9ueW1vdXMgaGFzaCByZWZlcmVuY2UsIG9yIGFub255bW91cyBhcnJheSByZWZlcmVuY2UpCiAgICB9ICAgIG91dGRlbnQ6IHJpZ2h0IHN0cnVjdHVyYWwgY3VybHkgYnJhY2Ugb3Igc3F1YXJlIGJyYWNrZXQgb3IgcGFyZW4KICAgIFsgICAgbGVmdCBub24tc3RydWN0dXJhbCBzcXVhcmUgYnJhY2tldCAoZW5jbG9zaW5nIGFuIGFycmF5IGluZGV4KQogICAgXSAgICByaWdodCBub24tc3RydWN0dXJhbCBzcXVhcmUgYnJhY2tldAogICAgKCAgICBsZWZ0IG5vbi1zdHJ1Y3R1cmFsIHBhcmVuIChhbGwgYnV0IGEgbGlzdCByaWdodCBvZiBhbiA9KQogICAgKSAgICByaWdodCBub24tc3RydWN0dXJhbCBwYXJlbgogICAgTCAgICBsZWZ0IG5vbi1zdHJ1Y3R1cmFsIGN1cmx5IGJyYWNlIChlbmNsb3NpbmcgYSBrZXkpCiAgICBSICAgIHJpZ2h0IG5vbi1zdHJ1Y3R1cmFsIGN1cmx5IGJyYWNlIAogICAgOyAgICB0ZXJtaW5hbCBzZW1pY29sb24KICAgIGYgICAgaW5kaWNhdGVzIGEgc2VtaWNvbG9uIGluIGEgImZvciIgc3RhdGVtZW50CiAgICBoICAgIGhlcmVfZG9jIG9wZXJhdG9yIDw8CiAgICAjICAgIGEgY29tbWVudAogICAgUSAgICBpbmRpY2F0ZXMgYSBxdW90ZSBvciBwYXR0ZXJuCiAgICBxICAgIGluZGljYXRlcyBhIHF3IHF1b3RlIGJsb2NrCiAgICBrICAgIGEgcGVybCBrZXl3b3JkCiAgICBDICAgIHVzZXItZGVmaW5lZCBjb25zdGFudCBvciBjb25zdGFudCBmdW5jdGlvbiAod2l0aCB2b2lkIHByb3RvdHlwZSA9ICgpKQogICAgVSAgICB1c2VyLWRlZmluZWQgZnVuY3Rpb24gdGFraW5nIHBhcmFtZXRlcnMKICAgIEcgICAgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIHRha2luZyBibG9jayBwYXJhbWV0ZXIgKGxpa2UgZ3JlcC9tYXAvZXZhbCkKICAgIE0gICAgKHVudXNlZCwgYnV0IHJlc2VydmVkIGZvciBzdWJyb3V0aW5lIGRlZmluaXRpb24gbmFtZSkKICAgIFAgICAgKHVudXNlZCwgYnV0IC1odG1sIHVzZXMgaXQgdG8gbGFiZWwgcG9kIHRleHQpCiAgICB0ICAgIHR5cGUgaW5kaWNhdGVyIHN1Y2ggYXMgJSwkLEAsKiwmLHN1YgogICAgdyAgICBiYXJlIHdvcmQgKHBlcmhhcHMgYSBzdWJyb3V0aW5lIGNhbGwpCiAgICBpICAgIGlkZW50aWZpZXIgb2Ygc29tZSB0eXBlICh3aXRoIGxlYWRpbmcgJSwgJCwgQCwgKiwgJiwgc3ViLCAtPiApCiAgICBuICAgIGEgbnVtYmVyCiAgICB2ICAgIGEgdi1zdHJpbmcKICAgIEYgICAgYSBmaWxlIHRlc3Qgb3BlcmF0b3IgKGxpa2UgLWUpCiAgICBZICAgIEZpbGUgaGFuZGxlCiAgICBaICAgIGlkZW50aWZpZXIgaW4gaW5kaXJlY3Qgb2JqZWN0IHNsb3Q6IG1heSBiZSBmaWxlIGhhbmRsZSwgb2JqZWN0CiAgICBKICAgIExBQkVMOiAgY29kZSBibG9jayBsYWJlbAogICAgaiAgICBMQUJFTCBhZnRlciBuZXh0LCBsYXN0LCByZWRvLCBnb3RvCiAgICBwICAgIHVuYXJ5ICsKICAgIG0gICAgdW5hcnkgLQogICAgcHAgICBwcmUtaW5jcmVtZW50IG9wZXJhdG9yICsrCiAgICBtbSAgIHByZS1kZWNyZW1lbnQgb3BlcmF0b3IgLS0gCiAgICBBICAgIDogdXNlZCBhcyBhdHRyaWJ1dGUgc2VwYXJhdG9yCiAgICAKICAgIEhlcmUgYXJlIHRoZSAnX2xpbmVfdHlwZScgY29kZXMgdXNlZCBpbnRlcm5hbGx5OgogICAgU1lTVEVNICAgICAgICAgLSBzeXN0ZW0tc3BlY2lmaWMgY29kZSBiZWZvcmUgaGFzaC1iYW5nIGxpbmUKICAgIENPREUgICAgICAgICAgIC0gbGluZSBvZiBwZXJsIGNvZGUgKGluY2x1ZGluZyBjb21tZW50cykKICAgIFBPRF9TVEFSVCAgICAgIC0gbGluZSBzdGFydGluZyBwb2QsIHN1Y2ggYXMgJz1oZWFkJwogICAgUE9EICAgICAgICAgICAgLSBwb2QgZG9jdW1lbnRhdGlvbiB0ZXh0CiAgICBQT0RfRU5EICAgICAgICAtIGxhc3QgbGluZSBvZiBwb2Qgc2VjdGlvbiwgJz1jdXQnCiAgICBIRVJFICAgICAgICAgICAtIHRleHQgb2YgaGVyZS1kb2N1bWVudAogICAgSEVSRV9FTkQgICAgICAgLSBsYXN0IGxpbmUgb2YgaGVyZS1kb2MgKHRhcmdldCB3b3JkKQogICAgRk9STUFUICAgICAgICAgLSBmb3JtYXQgc2VjdGlvbgogICAgRk9STUFUX0VORCAgICAgLSBsYXN0IGxpbmUgb2YgZm9ybWF0IHNlY3Rpb24sICcuJwogICAgREFUQV9TVEFSVCAgICAgLSBfX0RBVEFfXyBsaW5lCiAgICBEQVRBICAgICAgICAgICAtIHVuaWRlbnRpZmllZCB0ZXh0IGZvbGxvd2luZyBfX0RBVEFfXwogICAgRU5EX1NUQVJUICAgICAgLSBfX0VORF9fIGxpbmUKICAgIEVORCAgICAgICAgICAgIC0gdW5pZGVudGlmaWVkIHRleHQgZm9sbG93aW5nIF9fRU5EX18KICAgIEVSUk9SICAgICAgICAgIC0gd2UgYXJlIGluIGJpZyB0cm91YmxlLCBwcm9iYWJseSBub3QgYSBwZXJsIHNjcmlwdApFTkRfT0ZfTElTVAoKICAgIHJldHVybjsKfQoKQkVHSU4gewoKICAgICMgVGhlc2UgbmFtZXMgYXJlIHVzZWQgaW4gZXJyb3IgbWVzc2FnZXMKICAgIEBvcGVuaW5nX2JyYWNlX25hbWVzID0gcXcjICd7JyAnWycgJygnICc/JyAjOwogICAgQGNsb3NpbmdfYnJhY2VfbmFtZXMgPSBxdyMgJ30nICddJyAnKScgJzonICM7CgogICAgbXkgQHE7CgogICAgbXkgQGRpZ3JhcGhzID0gcXcoCiAgICAgIC4uIDo6IDw8ID4+ICoqICYmIC4uIHx8IC8vIC0+ID0+ICs9IC09IC49ICU9ICY9IHw9IF49ICo9IDw+CiAgICAgIDw9ID49ID09ID1+ICF+ICE9ICsrIC0tIC89IHg9IH5+IH4uIHwuICYuIF4uCiAgICApOwogICAgQGlzX2RpZ3JhcGh7QGRpZ3JhcGhzfSA9ICgxKSB4IHNjYWxhcihAZGlncmFwaHMpOwoKICAgIG15IEB0cmlncmFwaHMgPSBxdyggLi4uICoqPSA8PD0gPj49ICYmPSB8fD0gLy89IDw9PiAhfn4gJi49IHwuPSBeLj0gPDx+KTsKICAgIEBpc190cmlncmFwaHtAdHJpZ3JhcGhzfSA9ICgxKSB4IHNjYWxhcihAdHJpZ3JhcGhzKTsKCiAgICBteSBAdGV0cmFncmFwaHMgPSBxdyggPDw+PiApOwogICAgQGlzX3RldHJhZ3JhcGh7QHRldHJhZ3JhcGhzfSA9ICgxKSB4IHNjYWxhcihAdGV0cmFncmFwaHMpOwoKICAgICMgbWFrZSBhIGhhc2ggb2YgYWxsIHZhbGlkIHRva2VuIHR5cGVzIGZvciBzZWxmLWNoZWNraW5nIHRoZSB0b2tlbml6ZXIKICAgICMgKGFkZGluZyBORVdfVE9LRU5TIDogc2VsZWN0IGEgbmV3IGNoYXJhY3RlciBhbmQgYWRkIHRvIHRoaXMgbGlzdCkKICAgIG15IEB2YWxpZF90b2tlbl90eXBlcyA9IHF3IwogICAgICBBIGIgQyBHIEwgUiBmIGggUSBrIHQgdyBpIHEgbiBwIG0gRiBwcCBtbSBVIGogSiBZIFogdgogICAgICB7IH0gKCApIFsgXSA7ICsgLSAvICogfCAlICEgeCB+ID0gXCA/IDogLiA8ID4gXiAmCiAgICAgICM7CiAgICBwdXNoKCBAdmFsaWRfdG9rZW5fdHlwZXMsIEBkaWdyYXBocyApOwogICAgcHVzaCggQHZhbGlkX3Rva2VuX3R5cGVzLCBAdHJpZ3JhcGhzICk7CiAgICBwdXNoKCBAdmFsaWRfdG9rZW5fdHlwZXMsIEB0ZXRyYWdyYXBocyApOwogICAgcHVzaCggQHZhbGlkX3Rva2VuX3R5cGVzLCAoICcjJywgJywnLCAnQ09SRTo6JyApICk7CiAgICBAaXNfdmFsaWRfdG9rZW5fdHlwZXtAdmFsaWRfdG9rZW5fdHlwZXN9ID0gKDEpIHggc2NhbGFyKEB2YWxpZF90b2tlbl90eXBlcyk7CgogICAgIyBhIGxpc3Qgb2YgZmlsZSB0ZXN0IGxldHRlcnMsIGFzIGluIC1lIChUYWJsZSAzLTQgb2YgJ2NhbWVsIDMnKQogICAgbXkgQGZpbGVfdGVzdF9vcGVyYXRvcnMgPQogICAgICBxdyggQSBCIEMgTSBPIFIgUyBUIFcgWCBiIGMgZCBlIGYgZyBrIGwgbyBwIHIgcyB0IHUgdyB4IHopOwogICAgQGlzX2ZpbGVfdGVzdF9vcGVyYXRvcntAZmlsZV90ZXN0X29wZXJhdG9yc30gPQogICAgICAoMSkgeCBzY2FsYXIoQGZpbGVfdGVzdF9vcGVyYXRvcnMpOwoKICAgICMgdGhlc2UgZnVuY3Rpb25zIGhhdmUgcHJvdG90eXBlcyBvZiB0aGUgZm9ybSAoJiksIHNvIHdoZW4gdGhleSBhcmUKICAgICMgZm9sbG93ZWQgYnkgYSBibG9jaywgdGhhdCBibG9jayBNQVkgQkUgZm9sbG93ZWQgYnkgYW4gb3BlcmF0b3IuCiAgICAjIFNtYXJ0bWF0Y2ggb3BlcmF0b3Igfn4gbWF5IGJlIGZvbGxvd2VkIGJ5IGFub255bW91cyBoYXNoIG9yIGFycmF5IHJlZgogICAgQHEgPSBxdyggZG8gZXZhbCApOwogICAgQGlzX2Jsb2NrX29wZXJhdG9ye0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgIyB0aGVzZSBmdW5jdGlvbnMgYWxsb3cgYW4gaWRlbnRpZmllciBpbiB0aGUgaW5kaXJlY3Qgb2JqZWN0IHNsb3QKICAgIEBxID0gcXcoIHByaW50IHByaW50ZiBzb3J0IGV4ZWMgc3lzdGVtIHNheSk7CiAgICBAaXNfaW5kaXJlY3Rfb2JqZWN0X3Rha2Vye0BxfSA9ICgxKSB4IHNjYWxhcihAcSk7CgogICAgIyBUaGVzZSB0b2tlbnMgbWF5IHByZWNlZGUgYSBjb2RlIGJsb2NrCiAgICAjIHBhdGNoZWQgZm9yIFNXSVRDSC9DQVNFL0NBVENILiAgQWN0dWFsbHkgdGhlc2UgY291bGQgYmUgcmVtb3ZlZAogICAgIyBub3cgYW5kIHdlIGNvdWxkIGxldCB0aGUgZXh0ZW5kZWQtc3ludGF4IGNvZGluZyBoYW5kbGUgdGhlbS4KICAgICMgQWRkZWQgJ2RlZmF1bHQnIGZvciBTd2l0Y2g6OlBsYWluLgogICAgQHEgPQogICAgICBxdyggQkVHSU4gRU5EIENIRUNLIElOSVQgQVVUT0xPQUQgREVTVFJPWSBVTklUQ0hFQ0sgY29udGludWUgaWYgZWxzaWYgZWxzZQogICAgICB1bmxlc3MgZG8gd2hpbGUgdW50aWwgZXZhbCBmb3IgZm9yZWFjaCBtYXAgZ3JlcCBzb3J0CiAgICAgIHN3aXRjaCBjYXNlIGdpdmVuIHdoZW4gZGVmYXVsdCBjYXRjaCB0cnkgZmluYWxseSk7CiAgICBAaXNfY29kZV9ibG9ja190b2tlbntAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICMgSSdsbCBidWlsZCB0aGUgbGlzdCBvZiBrZXl3b3JkcyBpbmNyZW1lbnRhbGx5CiAgICBteSBAS2V5d29yZHMgPSAoKTsKCiAgICAjIGtleXdvcmRzIGFuZCB0b2tlbnMgYWZ0ZXIgd2hpY2ggYSB2YWx1ZSBvciBwYXR0ZXJuIGlzIGV4cGVjdGVkLAogICAgIyBidXQgbm90IGFuIG9wZXJhdG9yLiAgSW4gb3RoZXIgd29yZHMsIHRoZXNlIHNob3VsZCBjb25zdW1lIHRlcm1zCiAgICAjIHRvIHRoZWlyIHJpZ2h0LCBvciBhdCBsZWFzdCB0aGV5IGFyZSBub3QgZXhwZWN0ZWQgdG8gYmUgZm9sbG93ZWQKICAgICMgaW1tZWRpYXRlbHkgYnkgb3BlcmF0b3JzLgogICAgbXkgQHZhbHVlX3JlcXVlc3RvciA9IHF3KAogICAgICBBVVRPTE9BRAogICAgICBCRUdJTgogICAgICBDSEVDSwogICAgICBERVNUUk9ZCiAgICAgIEVORAogICAgICBFUQogICAgICBHRQogICAgICBHVAogICAgICBJTklUCiAgICAgIExFCiAgICAgIExUCiAgICAgIE5FCiAgICAgIFVOSVRDSEVDSwogICAgICBhYnMKICAgICAgYWNjZXB0CiAgICAgIGFsYXJtCiAgICAgIGFuZAogICAgICBhdGFuMgogICAgICBiaW5kCiAgICAgIGJpbm1vZGUKICAgICAgYmxlc3MKICAgICAgYnJlYWsKICAgICAgY2FsbGVyCiAgICAgIGNoZGlyCiAgICAgIGNobW9kCiAgICAgIGNob21wCiAgICAgIGNob3AKICAgICAgY2hvd24KICAgICAgY2hyCiAgICAgIGNocm9vdAogICAgICBjbG9zZQogICAgICBjbG9zZWRpcgogICAgICBjbXAKICAgICAgY29ubmVjdAogICAgICBjb250aW51ZQogICAgICBjb3MKICAgICAgY3J5cHQKICAgICAgZGJtY2xvc2UKICAgICAgZGJtb3BlbgogICAgICBkZWZpbmVkCiAgICAgIGRlbGV0ZQogICAgICBkaWUKICAgICAgZHVtcAogICAgICBlYWNoCiAgICAgIGVsc2UKICAgICAgZWxzaWYKICAgICAgZW9mCiAgICAgIGVxCiAgICAgIGV2YWxieXRlcwogICAgICBleGVjCiAgICAgIGV4aXN0cwogICAgICBleGl0CiAgICAgIGV4cAogICAgICBmYwogICAgICBmY250bAogICAgICBmaWxlbm8KICAgICAgZmxvY2sKICAgICAgZm9yCiAgICAgIGZvcmVhY2gKICAgICAgZm9ybWxpbmUKICAgICAgZ2UKICAgICAgZ2V0YwogICAgICBnZXRncmdpZAogICAgICBnZXRncm5hbQogICAgICBnZXRob3N0YnlhZGRyCiAgICAgIGdldGhvc3RieW5hbWUKICAgICAgZ2V0bmV0YnlhZGRyCiAgICAgIGdldG5ldGJ5bmFtZQogICAgICBnZXRwZWVybmFtZQogICAgICBnZXRwZ3JwCiAgICAgIGdldHByaW9yaXR5CiAgICAgIGdldHByb3RvYnluYW1lCiAgICAgIGdldHByb3RvYnludW1iZXIKICAgICAgZ2V0cHduYW0KICAgICAgZ2V0cHd1aWQKICAgICAgZ2V0c2VydmJ5bmFtZQogICAgICBnZXRzZXJ2Ynlwb3J0CiAgICAgIGdldHNvY2tuYW1lCiAgICAgIGdldHNvY2tvcHQKICAgICAgZ2xvYgogICAgICBnbXRpbWUKICAgICAgZ290bwogICAgICBncmVwCiAgICAgIGd0CiAgICAgIGhleAogICAgICBpZgogICAgICBpbmRleAogICAgICBpbnQKICAgICAgaW9jdGwKICAgICAgam9pbgogICAgICBrZXlzCiAgICAgIGtpbGwKICAgICAgbGFzdAogICAgICBsYwogICAgICBsY2ZpcnN0CiAgICAgIGxlCiAgICAgIGxlbmd0aAogICAgICBsaW5rCiAgICAgIGxpc3RlbgogICAgICBsb2NhbAogICAgICBsb2NhbHRpbWUKICAgICAgbG9jawogICAgICBsb2cKICAgICAgbHN0YXQKICAgICAgbHQKICAgICAgbWFwCiAgICAgIG1rZGlyCiAgICAgIG1zZ2N0bAogICAgICBtc2dnZXQKICAgICAgbXNncmN2CiAgICAgIG1zZ3NuZAogICAgICBteQogICAgICBuZQogICAgICBuZXh0CiAgICAgIG5vCiAgICAgIG5vdAogICAgICBvY3QKICAgICAgb3BlbgogICAgICBvcGVuZGlyCiAgICAgIG9yCiAgICAgIG9yZAogICAgICBvdXIKICAgICAgcGFjawogICAgICBwaXBlCiAgICAgIHBvcAogICAgICBwb3MKICAgICAgcHJpbnQKICAgICAgcHJpbnRmCiAgICAgIHByb3RvdHlwZQogICAgICBwdXNoCiAgICAgIHF1b3RlbWV0YQogICAgICByYW5kCiAgICAgIHJlYWQKICAgICAgcmVhZGRpcgogICAgICByZWFkbGluawogICAgICByZWFkbGluZQogICAgICByZWFkcGlwZQogICAgICByZWN2CiAgICAgIHJlZG8KICAgICAgcmVmCiAgICAgIHJlbmFtZQogICAgICByZXF1aXJlCiAgICAgIHJlc2V0CiAgICAgIHJldHVybgogICAgICByZXZlcnNlCiAgICAgIHJld2luZGRpcgogICAgICByaW5kZXgKICAgICAgcm1kaXIKICAgICAgc2NhbGFyCiAgICAgIHNlZWsKICAgICAgc2Vla2RpcgogICAgICBzZWxlY3QKICAgICAgc2VtY3RsCiAgICAgIHNlbWdldAogICAgICBzZW1vcAogICAgICBzZW5kCiAgICAgIHNldGhvc3RlbnQKICAgICAgc2V0bmV0ZW50CiAgICAgIHNldHBncnAKICAgICAgc2V0cHJpb3JpdHkKICAgICAgc2V0cHJvdG9lbnQKICAgICAgc2V0c2VydmVudAogICAgICBzZXRzb2Nrb3B0CiAgICAgIHNoaWZ0CiAgICAgIHNobWN0bAogICAgICBzaG1nZXQKICAgICAgc2htcmVhZAogICAgICBzaG13cml0ZQogICAgICBzaHV0ZG93bgogICAgICBzaW4KICAgICAgc2xlZXAKICAgICAgc29ja2V0CiAgICAgIHNvY2tldHBhaXIKICAgICAgc29ydAogICAgICBzcGxpY2UKICAgICAgc3BsaXQKICAgICAgc3ByaW50ZgogICAgICBzcXJ0CiAgICAgIHNyYW5kCiAgICAgIHN0YXQKICAgICAgc3RhdGUKICAgICAgc3R1ZHkKICAgICAgc3Vic3RyCiAgICAgIHN5bWxpbmsKICAgICAgc3lzY2FsbAogICAgICBzeXNvcGVuCiAgICAgIHN5c3JlYWQKICAgICAgc3lzc2VlawogICAgICBzeXN0ZW0KICAgICAgc3lzd3JpdGUKICAgICAgdGVsbAogICAgICB0ZWxsZGlyCiAgICAgIHRpZQogICAgICB0aWVkCiAgICAgIHRydW5jYXRlCiAgICAgIHVjCiAgICAgIHVjZmlyc3QKICAgICAgdW1hc2sKICAgICAgdW5kZWYKICAgICAgdW5sZXNzCiAgICAgIHVubGluawogICAgICB1bnBhY2sKICAgICAgdW5zaGlmdAogICAgICB1bnRpZQogICAgICB1bnRpbAogICAgICB1c2UKICAgICAgdXRpbWUKICAgICAgdmFsdWVzCiAgICAgIHZlYwogICAgICB3YWl0cGlkCiAgICAgIHdhcm4KICAgICAgd2hpbGUKICAgICAgd3JpdGUKICAgICAgeG9yCgogICAgICBzd2l0Y2gKICAgICAgY2FzZQogICAgICBkZWZhdWx0CiAgICAgIGdpdmVuCiAgICAgIHdoZW4KICAgICAgZXJyCiAgICAgIHNheQogICAgICBpc2EKCiAgICAgIGNhdGNoCiAgICApOwoKICAgICMgcGF0Y2hlZCBhYm92ZSBmb3IgU1dJVENIL0NBU0UgZ2l2ZW4vd2hlbiBlcnIgc2F5CiAgICAjICdlcnInIGlzIGEgZmFpcmx5IHNhZmUgYWRkaXRpb24uCiAgICAjIEFkZGVkICdkZWZhdWx0JyBmb3IgU3dpdGNoOjpQbGFpbi4gTm90ZSB0aGF0IHdlIGNvdWxkIGFsc28gaGF2ZQogICAgIyBhIHNlcGFyYXRlIHNldCBvZiBrZXl3b3JkcyB0byBpbmNsdWRlIGlmIHdlIHNlZSAndXNlIFN3aXRjaDo6UGxhaW4nCiAgICBwdXNoKCBAS2V5d29yZHMsIEB2YWx1ZV9yZXF1ZXN0b3IgKTsKCiAgICAjIFRoZXNlIGFyZSB0cmVhdGVkIHRoZSBzYW1lIGJ1dCBhcmUgbm90IGtleXdvcmRzOgogICAgbXkgQGV4dHJhX3ZyID0gcXcoCiAgICAgIGNvbnN0YW50CiAgICAgIHZhcnMKICAgICk7CiAgICBwdXNoKCBAdmFsdWVfcmVxdWVzdG9yLCBAZXh0cmFfdnIgKTsKCiAgICBAZXhwZWN0aW5nX3Rlcm1fdG9rZW57QHZhbHVlX3JlcXVlc3Rvcn0gPSAoMSkgeCBzY2FsYXIoQHZhbHVlX3JlcXVlc3Rvcik7CgogICAgIyB0aGlzIGxpc3QgY29udGFpbnMga2V5d29yZHMgd2hpY2ggZG8gbm90IGxvb2sgZm9yIGFyZ3VtZW50cywKICAgICMgc28gdGhhdCB0aGV5IG1pZ2h0IGJlIGZvbGxvd2VkIGJ5IGFuIG9wZXJhdG9yLCBvciBhdCBsZWFzdAogICAgIyBub3QgYSB0ZXJtLgogICAgbXkgQG9wZXJhdG9yX3JlcXVlc3RvciA9IHF3KAogICAgICBlbmRncmVudAogICAgICBlbmRob3N0ZW50CiAgICAgIGVuZG5ldGVudAogICAgICBlbmRwcm90b2VudAogICAgICBlbmRwd2VudAogICAgICBlbmRzZXJ2ZW50CiAgICAgIGZvcmsKICAgICAgZ2V0Z3JlbnQKICAgICAgZ2V0aG9zdGVudAogICAgICBnZXRsb2dpbgogICAgICBnZXRuZXRlbnQKICAgICAgZ2V0cHBpZAogICAgICBnZXRwcm90b2VudAogICAgICBnZXRwd2VudAogICAgICBnZXRzZXJ2ZW50CiAgICAgIHNldGdyZW50CiAgICAgIHNldHB3ZW50CiAgICAgIHRpbWUKICAgICAgdGltZXMKICAgICAgd2FpdAogICAgICB3YW50YXJyYXkKICAgICk7CgogICAgcHVzaCggQEtleXdvcmRzLCBAb3BlcmF0b3JfcmVxdWVzdG9yICk7CgogICAgIyBUaGVzZSBhcmUgdHJlYXRlZCB0aGUgc2FtZSBidXQgYXJlIG5vdCBjb25zaWRlcmVkIGtleXdvcmRzOgogICAgbXkgQGV4dHJhX29yID0gcXcoCiAgICAgIFNUREVSUgogICAgICBTVERJTgogICAgICBTVERPVVQKICAgICk7CgogICAgcHVzaCggQG9wZXJhdG9yX3JlcXVlc3RvciwgQGV4dHJhX29yICk7CgogICAgQGV4cGVjdGluZ19vcGVyYXRvcl90b2tlbntAb3BlcmF0b3JfcmVxdWVzdG9yfSA9CiAgICAgICgxKSB4IHNjYWxhcihAb3BlcmF0b3JfcmVxdWVzdG9yKTsKCiAgICAjIHRoZXNlIHRva2VuIFRZUEVTIGV4cGVjdCB0cmFpbGluZyBvcGVyYXRvciBidXQgbm90IGEgdGVybQogICAgIyBub3RlOiArKyBhbmQgLS0gYXJlIHBvc3QtaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQsICdDJyA9IGNvbnN0YW50CiAgICBteSBAb3BlcmF0b3JfcmVxdWVzdG9yX3R5cGVzID0gcXcoICsrIC0tIEMgPD4gcSApOwogICAgQGV4cGVjdGluZ19vcGVyYXRvcl90eXBlc3tAb3BlcmF0b3JfcmVxdWVzdG9yX3R5cGVzfSA9CiAgICAgICgxKSB4IHNjYWxhcihAb3BlcmF0b3JfcmVxdWVzdG9yX3R5cGVzKTsKCiAgICAjIHRoZXNlIHRva2VuIFRZUEVTIGNvbnN1bWUgdmFsdWVzICh0ZXJtcykKICAgICMgbm90ZTogcHAgYW5kIG1tIGFyZSBwcmUtaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQKICAgICMgZj1zZW1pY29sb24gaW4gZm9yLCAgRj1maWxlIHRlc3Qgb3BlcmF0b3IKICAgIG15IEB2YWx1ZV9yZXF1ZXN0b3JfdHlwZSA9IHF3IwogICAgICBMIHsgKCBbIH4gIX4gPX4gOyAuIC4uIC4uLiBBIDogJiYgISB8fCAvLyA9ICsgLSB4CiAgICAgICoqPSArPSAtPSAuPSAvPSAqPSAlPSB4PSAmPSB8PSBePSA8PD0gPj49ICYmPSB8fD0gLy89CiAgICAgIDw9ID49ID09ICE9ID0+IFwgPiA8ICUgKiAvID8gJiB8ICoqIDw9PiB+fiAhfn4gPDx+CiAgICAgIGYgRiBwcCBtbSBZIHAgbSBVIEogRyBqID4+IDw8IF4gdAogICAgICB+LiBeLiB8LiAmLiBeLj0gfC49ICYuPQogICAgICAjOwogICAgcHVzaCggQHZhbHVlX3JlcXVlc3Rvcl90eXBlLCAnLCcgKQogICAgICA7ICAgICMgKHBlcmwgZG9lc24ndCBsaWtlIGEgJywnIGluIGEgcXcgYmxvY2spCiAgICBAZXhwZWN0aW5nX3Rlcm1fdHlwZXN7QHZhbHVlX3JlcXVlc3Rvcl90eXBlfSA9CiAgICAgICgxKSB4IHNjYWxhcihAdmFsdWVfcmVxdWVzdG9yX3R5cGUpOwoKICAgICMgTm90ZTogdGhlIGZvbGxvd2luZyB2YWxpZCB0b2tlbiB0eXBlcyBhcmUgbm90IGFzc2lnbmVkIGhlcmUgdG8KICAgICMgaGFzaGVzIHJlcXVlc3RpbmcgdG8gYmUgZm9sbG93ZWQgYnkgdmFsdWVzIG9yIHRlcm1zLCBidXQgYXJlCiAgICAjIGluc3RlYWQgY3VycmVudGx5IGhhcmQtY29kZWQgaW50byBzdWIgb3BlcmF0b3JfZXhwZWN0ZWQ6CiAgICAjICkgLT4gOjogUSBSIFogXSBiIGggaSBrIG4gdiB3IH0gIwoKICAgICMgRm9yIHNpbXBsZSBzeW50YXggY2hlY2tpbmcsIGl0IGlzIG5pY2UgdG8gaGF2ZSBhIGxpc3Qgb2Ygb3BlcmF0b3JzIHdoaWNoCiAgICAjIHdpbGwgcmVhbGx5IGJlIHVuaGFwcHkgaWYgbm90IGZvbGxvd2VkIGJ5IGEgdGVybS4gIFRoaXMgaW5jbHVkZXMgbW9zdAogICAgIyBvZiB0aGUgYWJvdmUuLi4KICAgICVyZWFsbHlfd2FudF90ZXJtID0gJWV4cGVjdGluZ190ZXJtX3R5cGVzOwoKICAgICMgd2l0aCB0aGVzZSBleGNlcHRpb25zLi4uCiAgICBkZWxldGUgJHJlYWxseV93YW50X3Rlcm17J1UnfTsgIyB1c2VyIHN1YiwgZGVwZW5kcyBvbiBwcm90b3R5cGUKICAgIGRlbGV0ZSAkcmVhbGx5X3dhbnRfdGVybXsnRid9OyAjIGZpbGUgdGVzdCB3b3JrcyBvbiAkXyBpZiBubyBmb2xsb3dpbmcgdGVybQogICAgZGVsZXRlICRyZWFsbHlfd2FudF90ZXJteydZJ307ICMgaW5kaXJlY3Qgb2JqZWN0LCB0b28gcmlza3kgdG8gY2hlY2sgc3ludGF4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbGV0IHBlcmwgZG8gaXQKCiAgICBAcSA9IHF3KHEgcXEgcXcgcXggcXIgcyB5IHRyIG0pOwogICAgQGlzX3FfcXFfcXdfcXhfcXJfc195X3RyX217QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICBAcSA9IHF3KHBhY2thZ2UpOwogICAgQGlzX3BhY2thZ2V7QHF9ID0gKDEpIHggc2NhbGFyKEBxKTsKCiAgICBAcSA9IHF3KCA/IDogKTsKICAgIHB1c2ggQHEsICcsJzsKICAgIEBpc19jb21tYV9xdWVzdGlvbl9jb2xvbntAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICMgSGFzaCBvZiBvdGhlciBwb3NzaWJsZSBsaW5lIGVuZGluZ3Mgd2hpY2ggbWF5IG9jY3VyLgogICAgIyBLZWVwIHRoZXNlIGNvb3JkaW5hdGVkIHdpdGggdGhlIHJlZ2V4IHdoZXJlIHRoaXMgaXMgdXNlZC4KICAgICMgTm90ZTogY2hyKDEzKSA9IGNocigwMTUpPSJcciIuCiAgICBAcSA9ICggY2hyKDEzKSwgY2hyKDI5KSwgY2hyKDI2KSApOwogICAgQG90aGVyX2xpbmVfZW5kaW5nc3tAcX0gPSAoMSkgeCBzY2FsYXIoQHEpOwoKICAgICMgVGhlc2Uga2V5d29yZHMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGluIHRoZSB0b2tlbml6ZXIgY29kZToKICAgIG15IEBzcGVjaWFsX2tleXdvcmRzID0gcXcoCiAgICAgIGRvCiAgICAgIGV2YWwKICAgICAgZm9ybWF0CiAgICAgIG0KICAgICAgcGFja2FnZQogICAgICBxCiAgICAgIHFxCiAgICAgIHFyCiAgICAgIHF3CiAgICAgIHF4CiAgICAgIHMKICAgICAgc3ViCiAgICAgIHRyCiAgICAgIHkKICAgICk7CiAgICBwdXNoKCBAS2V5d29yZHMsIEBzcGVjaWFsX2tleXdvcmRzICk7CgogICAgIyBLZXl3b3JkcyBhZnRlciB3aGljaCBsaXN0IGZvcm1hdHRpbmcgbWF5IGJlIHVzZWQKICAgICMgV0FSTklORzogZG8gbm90IGluY2x1ZGUgfG1hcHxncmVwfGV2YWwgb3IgcGVybCBtYXkgZGllIG9uCiAgICAjIHN5bnRheCBlcnJvcnMgKG1hcDEudCkuCiAgICBteSBAa2V5d29yZF90YWtpbmdfbGlzdCA9IHF3KAogICAgICBhbmQKICAgICAgY2htb2QKICAgICAgY2hvbXAKICAgICAgY2hvcAogICAgICBjaG93bgogICAgICBkYm1vcGVuCiAgICAgIGRpZQogICAgICBlbHNpZgogICAgICBleGVjCiAgICAgIGZjbnRsCiAgICAgIGZvcgogICAgICBmb3JlYWNoCiAgICAgIGZvcm1saW5lCiAgICAgIGdldHNvY2tvcHQKICAgICAgaWYKICAgICAgaW5kZXgKICAgICAgaW9jdGwKICAgICAgam9pbgogICAgICBraWxsCiAgICAgIGxvY2FsCiAgICAgIG1zZ2N0bAogICAgICBtc2dyY3YKICAgICAgbXNnc25kCiAgICAgIG15CiAgICAgIG9wZW4KICAgICAgb3IKICAgICAgb3VyCiAgICAgIHBhY2sKICAgICAgcHJpbnQKICAgICAgcHJpbnRmCiAgICAgIHB1c2gKICAgICAgcmVhZAogICAgICByZWFkcGlwZQogICAgICByZWN2CiAgICAgIHJldHVybgogICAgICByZXZlcnNlCiAgICAgIHJpbmRleAogICAgICBzZWVrCiAgICAgIHNlbGVjdAogICAgICBzZW1jdGwKICAgICAgc2VtZ2V0CiAgICAgIHNlbmQKICAgICAgc2V0cHJpb3JpdHkKICAgICAgc2V0c29ja29wdAogICAgICBzaG1jdGwKICAgICAgc2htZ2V0CiAgICAgIHNobXJlYWQKICAgICAgc2htd3JpdGUKICAgICAgc29ja2V0CiAgICAgIHNvY2tldHBhaXIKICAgICAgc29ydAogICAgICBzcGxpY2UKICAgICAgc3BsaXQKICAgICAgc3ByaW50ZgogICAgICBzdGF0ZQogICAgICBzdWJzdHIKICAgICAgc3lzY2FsbAogICAgICBzeXNvcGVuCiAgICAgIHN5c3JlYWQKICAgICAgc3lzc2VlawogICAgICBzeXN0ZW0KICAgICAgc3lzd3JpdGUKICAgICAgdGllCiAgICAgIHVubGVzcwogICAgICB1bmxpbmsKICAgICAgdW5wYWNrCiAgICAgIHVuc2hpZnQKICAgICAgdW50aWwKICAgICAgdmVjCiAgICAgIHdhcm4KICAgICAgd2hpbGUKICAgICAgZ2l2ZW4KICAgICAgd2hlbgogICAgKTsKICAgIEBpc19rZXl3b3JkX3Rha2luZ19saXN0e0BrZXl3b3JkX3Rha2luZ19saXN0fSA9CiAgICAgICgxKSB4IHNjYWxhcihAa2V5d29yZF90YWtpbmdfbGlzdCk7CgogICAgIyBwZXJsIGZ1bmN0aW9ucyB3aGljaCBtYXkgYmUgdW5hcnkgb3BlcmF0b3JzLgoKICAgICMgVGhpcyBsaXN0IGlzIHVzZWQgdG8gZGVjaWRlIGlmIGEgcGF0dGVybiBkZWxpbWl0ZWQgYnkgc2xhc2hlcywgL3BhdHRlcm4vLAogICAgIyBjYW4gZm9sbG93IG9uZSBvZiB0aGVzZSBrZXl3b3Jkcy4KICAgIEBxID0gcXcoCiAgICAgIGNob21wIGVvZiBldmFsIGZjIGxjIHBvcCBzaGlmdCB1YyB1bmRlZgogICAgKTsKCiAgICBAaXNfa2V5d29yZF9yZWplY3Rpbmdfc2xhc2hfYXNfcGF0dGVybl9kZWxpbWl0ZXJ7QHF9ID0KICAgICAgKDEpIHggc2NhbGFyKEBxKTsKCiAgICAjIFRoZXNlIGFyZSBrZXl3b3JkcyBmb3Igd2hpY2ggYW4gYXJnIG1heSBvcHRpb25hbGx5IGJlIG9taXR0ZWQuICBUaGV5IGFyZQogICAgIyBjdXJyZW50bHkgb25seSB1c2VkIHRvIGRpc2FtYmlndWF0ZSBhID8gdXNlZCBhcyBhIHRlcm5hcnkgZnJvbSBvbmUgdXNlZAogICAgIyBhcyBhIChkZXByaWNhdGVkKSBwYXR0ZXJuIGRlbGltaXRlci4gIEluIHRoZSBmdXR1cmUsIHRoZXkgbWlnaHQgYmUgdXNlZAogICAgIyB0byBnaXZlIGEgd2FybmluZyBhYm91dCBhbWJpZ3VvdXMgc3ludGF4IGJlZm9yZSBhIC8uCiAgICAjIE5vdGU6IHNwbGl0IGhhcyBiZWVuIG9taXR0ZWQgKHNlZSBub3QgYmVsb3cpLgogICAgbXkgQGtleXdvcmRzX3Rha2luZ19vcHRpb25hbF9hcmcgPSBxdygKICAgICAgYWJzCiAgICAgIGFsYXJtCiAgICAgIGNhbGxlcgogICAgICBjaGRpcgogICAgICBjaG9tcAogICAgICBjaG9wCiAgICAgIGNocgogICAgICBjaHJvb3QKICAgICAgY2xvc2UKICAgICAgY29zCiAgICAgIGRlZmluZWQKICAgICAgZGllCiAgICAgIGVvZgogICAgICBldmFsCiAgICAgIGV2YWxieXRlcwogICAgICBleGl0CiAgICAgIGV4cAogICAgICBmYwogICAgICBnZXRjCiAgICAgIGdsb2IKICAgICAgZ210aW1lCiAgICAgIGhleAogICAgICBpbnQKICAgICAgbGFzdAogICAgICBsYwogICAgICBsY2ZpcnN0CiAgICAgIGxlbmd0aAogICAgICBsb2NhbHRpbWUKICAgICAgbG9nCiAgICAgIGxzdGF0CiAgICAgIG1rZGlyCiAgICAgIG5leHQKICAgICAgb2N0CiAgICAgIG9yZAogICAgICBwb3AKICAgICAgcG9zCiAgICAgIHByaW50CiAgICAgIHByaW50ZgogICAgICBwcm90b3R5cGUKICAgICAgcXVvdGVtZXRhCiAgICAgIHJhbmQKICAgICAgcmVhZGxpbmUKICAgICAgcmVhZGxpbmsKICAgICAgcmVhZHBpcGUKICAgICAgcmVkbwogICAgICByZWYKICAgICAgcmVxdWlyZQogICAgICByZXNldAogICAgICByZXZlcnNlCiAgICAgIHJtZGlyCiAgICAgIHNheQogICAgICBzZWxlY3QKICAgICAgc2hpZnQKICAgICAgc2luCiAgICAgIHNsZWVwCiAgICAgIHNxcnQKICAgICAgc3JhbmQKICAgICAgc3RhdAogICAgICBzdHVkeQogICAgICB0ZWxsCiAgICAgIHVjCiAgICAgIHVjZmlyc3QKICAgICAgdW1hc2sKICAgICAgdW5kZWYKICAgICAgdW5saW5rCiAgICAgIHdhcm4KICAgICAgd3JpdGUKICAgICk7CiAgICBAaXNfa2V5d29yZF90YWtpbmdfb3B0aW9uYWxfYXJne0BrZXl3b3Jkc190YWtpbmdfb3B0aW9uYWxfYXJnfSA9CiAgICAgICgxKSB4IHNjYWxhcihAa2V5d29yZHNfdGFraW5nX29wdGlvbmFsX2FyZyk7CgogICAgIyBUaGlzIGxpc3QgaXMgdXNlZCB0byBkZWNpZGUgaWYgYSBwYXR0ZXJuIGRlbG1pdGVkIGJ5IHF1ZXN0aW9uIG1hcmtzLAogICAgIyA/cGF0dGVybj8sIGNhbiBmb2xsb3cgb25lIG9mIHRoZXNlIGtleXdvcmRzLiAgTm90ZSB0aGF0IGZyb20gcGVybCA1LjIyCiAgICAjIG9uLCBhID9wYXR0ZXJuPyBpcyBub3QgcmVjb2duaXplZCwgc28gd2UgY2FuIGJlIG11Y2ggbW9yZSBzdHJpY3QgdGhhbgogICAgIyB3aXRoIGEgL3BhdHRlcm4vLiBOb3RlIHRoYXQgJ3NwbGl0JyBpcyBub3QgaW4gdGhpcyBsaXN0LiBJbiBjdXJyZW50CiAgICAjIHZlcnNpb25zIG9mIHBlcmwgYSBxdWVzdGlvbiBmb2xsb3dpbmcgc3BsaXQgbXVzdCBiZSBhIHRlcm5hcnksIGJ1dAogICAgIyBpbiBvbGRlciB2ZXJzaW9ucyBpdCBjb3VsZCBiZSBhIHBhdHRlcm4uICBUaGUgZ3Vlc3NpbmcgYWxnb3JpdGhtIHdpbGwKICAgICMgZGVjaWRlLiAgV2UgYXJlIGNvbWJpbmluZyB0d28gbGlzdHMgaGVyZSB0byBzaW1wbGlmeSB0aGUgdGVzdC4KICAgIEBxID0gKCBAa2V5d29yZHNfdGFraW5nX29wdGlvbmFsX2FyZywgQG9wZXJhdG9yX3JlcXVlc3RvciApOwogICAgQGlzX2tleXdvcmRfcmVqZWN0aW5nX3F1ZXN0aW9uX2FzX3BhdHRlcm5fZGVsaW1pdGVye0BxfSA9CiAgICAgICgxKSB4IHNjYWxhcihAcSk7CgogICAgIyBUaGVzZSBhcmUgbm90IHVzZWQgaW4gYW55IHdheSB5ZXQKICAgICMgICAgbXkgQHVudXNlZF9rZXl3b3JkcyA9IHF3KAogICAgIyAgICAgX19GSUxFX18KICAgICMgICAgIF9fTElORV9fCiAgICAjICAgICBfX1BBQ0tBR0VfXwogICAgIyAgICAgKTsKCiAgICAjICBUaGUgbGlzdCBvZiBrZXl3b3JkcyB3YXMgb3JpZ2luYWxseSBleHRyYWN0ZWQgZnJvbSBmdW5jdGlvbiAna2V5d29yZCcgaW4KICAgICMgIHBlcmwgZmlsZSB0b2tlLmMgdmVyc2lvbiA1LjAwNS4wMywgdXNpbmcgdGhpcyB1dGlsaXR5LCBwbHVzIGEKICAgICMgIGxpdHRsZSBlZGl0aW5nOiAoZmlsZSBnZXRrd2QucGwpOgogICAgIyAgd2hpbGUgKDw+KSB7IHdoaWxlICgvXCIoLiopXCIvZykgeyBwcmludCAiJDFcbiI7IH0gfQogICAgIyAgQWRkICdnZXQnIHByZWZpeCB3aGVyZSBuZWNlc3NhcnksIHRoZW4gc3BsaXQgaW50byB0aGUgYWJvdmUgbGlzdHMuCiAgICAjICBUaGlzIGxpc3Qgc2hvdWxkIGJlIHVwZGF0ZWQgYXMgbmVjZXNzYXJ5LgogICAgIyAgVGhlIGxpc3Qgc2hvdWxkIG5vdCBjb250YWluIHRoZXNlIHNwZWNpYWwgdmFyaWFibGVzOgogICAgIyAgQVJHViBEQVRBIEVOViBTSUcgU1RERVJSIFNURElOIFNURE9VVAogICAgIyAgX19EQVRBX18gX19FTkRfXwoKICAgIEBpc19rZXl3b3Jke0BLZXl3b3Jkc30gPSAoMSkgeCBzY2FsYXIoQEtleXdvcmRzKTsKfQoxOwo=</File>
        <File Location="Kernel/cpan-lib/Perl/Tidy/Debugger.pm" Permission="660" Encode="Base64">IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBUaGUgUGVybDo6VGlkeTo6RGVidWdnZXIgY2xhc3Mgc2hvd3MgbGluZSB0b2tlbml6YXRpb24KIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnBhY2thZ2UgUGVybDo6VGlkeTo6RGVidWdnZXI7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKb3VyICRWRVJTSU9OID0gJzIwMjEwMTExJzsKCnN1YiBuZXcgewoKICAgIG15ICggJGNsYXNzLCAkZmlsZW5hbWUsICRpc19lbmNvZGVkX2RhdGEgKSA9IEBfOwoKICAgIHJldHVybiBibGVzcyB7CiAgICAgICAgX2RlYnVnX2ZpbGUgICAgICAgID0+ICRmaWxlbmFtZSwKICAgICAgICBfZGVidWdfZmlsZV9vcGVuZWQgPT4gMCwKICAgICAgICBfZmggICAgICAgICAgICAgICAgPT4gdW5kZWYsCiAgICAgICAgX2lzX2VuY29kZWRfZGF0YSAgID0+ICRpc19lbmNvZGVkX2RhdGEsCiAgICB9LCAkY2xhc3M7Cn0KCnN1YiByZWFsbHlfb3Blbl9kZWJ1Z19maWxlIHsKCiAgICBteSAkc2VsZiAgICAgICAgICAgID0gc2hpZnQ7CiAgICBteSAkZGVidWdfZmlsZSAgICAgID0gJHNlbGYtPntfZGVidWdfZmlsZX07CiAgICBteSAkaXNfZW5jb2RlZF9kYXRhID0gJHNlbGYtPntfaXNfZW5jb2RlZF9kYXRhfTsKICAgIG15ICggJGZoLCAkZmlsZW5hbWUgKSA9CiAgICAgIFBlcmw6OlRpZHk6OnN0cmVhbWhhbmRsZSggJGRlYnVnX2ZpbGUsICd3JywgJGlzX2VuY29kZWRfZGF0YSApOwogICAgaWYgKCAhJGZoICkgewogICAgICAgIFBlcmw6OlRpZHk6Oldhcm4oImNhbid0IG9wZW4gJGRlYnVnX2ZpbGU6ICQhXG4iKTsKICAgIH0KICAgICRzZWxmLT57X2RlYnVnX2ZpbGVfb3BlbmVkfSA9IDE7CiAgICAkc2VsZi0+e19maH0gICAgICAgICAgICAgICAgPSAkZmg7CiAgICAkZmgtPnByaW50KAogICAgICAgICJVc2UgLWR1bXAtdG9rZW4tdHlwZXMgKC1kdHQpIHRvIGdldCBhIGxpc3Qgb2YgdG9rZW4gdHlwZSBjb2Rlc1xuIik7CiAgICByZXR1cm47Cn0KCnN1YiBjbG9zZV9kZWJ1Z19maWxlIHsKCiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgbXkgJGZoICAgPSAkc2VsZi0+e19maH07CiAgICBpZiAoICRzZWxmLT57X2RlYnVnX2ZpbGVfb3BlbmVkfSApIHsKICAgICAgICBpZiAoICFldmFsIHsgJHNlbGYtPntfZmh9LT5jbG9zZSgpOyAxIH0gKSB7CgogICAgICAgICAgICAjIG9rLCBtYXliZSBubyBjbG9zZSBmdW5jdGlvbgogICAgICAgIH0KICAgIH0KICAgIHJldHVybjsKfQoKc3ViIHdyaXRlX2RlYnVnX2VudHJ5IHsKCiAgICAjIFRoaXMgaXMgYSBkZWJ1ZyBkdW1wIHJvdXRpbmUgd2hpY2ggbWF5IGJlIG1vZGlmaWVkIGFzIG5lY2Vzc2FyeQogICAgIyB0byBkdW1wIHRva2VucyBvbiBhIGxpbmUtYnktbGluZSBiYXNpcy4gIFRoZSBvdXRwdXQgd2lsbCBiZSB3cml0dGVuCiAgICAjIHRvIHRoZSAuREVCVUcgZmlsZSB3aGVuIHRoZSAtRCBmbGFnIGlzIGVudGVyZWQuCiAgICBteSAoICRzZWxmLCAkbGluZV9vZl90b2tlbnMgKSA9IEBfOwoKICAgIG15ICRpbnB1dF9saW5lID0gJGxpbmVfb2ZfdG9rZW5zLT57X2xpbmVfdGV4dH07CgogICAgbXkgJHJ0b2tlbl90eXBlID0gJGxpbmVfb2ZfdG9rZW5zLT57X3J0b2tlbl90eXBlfTsKICAgIG15ICRydG9rZW5zICAgICA9ICRsaW5lX29mX3Rva2Vucy0+e19ydG9rZW5zfTsKICAgIG15ICRybGV2ZWxzICAgICA9ICRsaW5lX29mX3Rva2Vucy0+e19ybGV2ZWxzfTsKICAgIG15ICRyc2xldmVscyAgICA9ICRsaW5lX29mX3Rva2Vucy0+e19yc2xldmVsc307CiAgICBteSAkcmJsb2NrX3R5cGUgPSAkbGluZV9vZl90b2tlbnMtPntfcmJsb2NrX3R5cGV9OwoKICAgIG15ICRpbnB1dF9saW5lX251bWJlciA9ICRsaW5lX29mX3Rva2Vucy0+e19saW5lX251bWJlcn07CiAgICBteSAkbGluZV90eXBlICAgICAgICAgPSAkbGluZV9vZl90b2tlbnMtPntfbGluZV90eXBlfTsKCiAgICBteSAoICRqLCAkbnVtICk7CgogICAgbXkgJHRva2VuX3N0ciAgICAgICAgICAgICAgPSAiJGlucHV0X2xpbmVfbnVtYmVyOiAiOwogICAgbXkgJHJlY29uc3RydWN0ZWRfb3JpZ2luYWwgPSAiJGlucHV0X2xpbmVfbnVtYmVyOiAiOwogICAgbXkgJGJsb2NrX3N0ciAgICAgICAgICAgICAgPSAiJGlucHV0X2xpbmVfbnVtYmVyOiAiOwoKICAgIG15ICRwYXR0ZXJuICAgPSAiIjsKICAgIG15IEBuZXh0X2NoYXIgPSAoICciJywgJyInICk7CiAgICBteSAkaV9uZXh0ICAgID0gMDsKICAgIHVubGVzcyAoICRzZWxmLT57X2RlYnVnX2ZpbGVfb3BlbmVkfSApIHsgJHNlbGYtPnJlYWxseV9vcGVuX2RlYnVnX2ZpbGUoKSB9CiAgICBteSAkZmggPSAkc2VsZi0+e19maH07CgogICAgIyBGSVhNRTogY291bGQgY29udmVydCB0byB1c2Ugb2YgdG9rZW5fYXJyYXkgaW5zdGVhZAogICAgZm9yZWFjaCBteSAkaiAoIDAgLi4gQHskcnRva2VuX3R5cGV9IC0gMSApIHsKCiAgICAgICAgIyB0ZXN0aW5nIHBhdHRlcm5zCiAgICAgICAgaWYgKCAkcnRva2VuX3R5cGUtPlskal0gZXEgJ2snICkgewogICAgICAgICAgICAkcGF0dGVybiAuPSAkcnRva2Vucy0+WyRqXTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRwYXR0ZXJuIC49ICRydG9rZW5fdHlwZS0+WyRqXTsKICAgICAgICB9CiAgICAgICAgJHJlY29uc3RydWN0ZWRfb3JpZ2luYWwgLj0gJHJ0b2tlbnMtPlskal07CiAgICAgICAgJGJsb2NrX3N0ciAgICAgICAgICAgICAgLj0gIigkcmJsb2NrX3R5cGUtPlskal0pIjsKICAgICAgICAkbnVtID0gbGVuZ3RoKCAkcnRva2Vucy0+WyRqXSApOwogICAgICAgIG15ICR0eXBlX3N0ciA9ICRydG9rZW5fdHlwZS0+WyRqXTsKCiAgICAgICAgIyBiZSBzdXJlIHRoZXJlIGFyZSBubyBibGFuayB0b2tlbnMgKHNob3VsZG4ndCBoYXBwZW4pCiAgICAgICAgIyBUaGlzIGNhbiBvbmx5IGhhcHBlbiBpZiBhIHByb2dyYW1taW5nIGVycm9yIGhhcyBiZWVuIG1hZGUKICAgICAgICAjIGJlY2F1c2UgYWxsIHZhbGlkIHRva2VucyBhcmUgbm9uLWJsYW5rCiAgICAgICAgaWYgKCAkdHlwZV9zdHIgZXEgJyAnICkgewogICAgICAgICAgICAkZmgtPnByaW50KCJCTEFOSyBUT0tFTiBvbiB0aGUgbmV4dCBsaW5lXG4iKTsKICAgICAgICAgICAgJHR5cGVfc3RyID0gJG5leHRfY2hhclskaV9uZXh0XTsKICAgICAgICAgICAgJGlfbmV4dCAgID0gMSAtICRpX25leHQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoIGxlbmd0aCgkdHlwZV9zdHIpID09IDEgKSB7CiAgICAgICAgICAgICR0eXBlX3N0ciA9ICR0eXBlX3N0ciB4ICRudW07CiAgICAgICAgfQogICAgICAgICR0b2tlbl9zdHIgLj0gJHR5cGVfc3RyOwogICAgfQoKICAgICMgV3JpdGUgd2hhdCB5b3Ugd2FudCBoZXJlIC4uLgogICAgIyAkZmgtPnByaW50ICIkaW5wdXRfbGluZVxuIjsKICAgICMgJGZoLT5wcmludCAiJHBhdHRlcm5cbiI7CiAgICAkZmgtPnByaW50KCIkcmVjb25zdHJ1Y3RlZF9vcmlnaW5hbFxuIik7CiAgICAkZmgtPnByaW50KCIkdG9rZW5fc3RyXG4iKTsKCiAgICByZXR1cm47Cn0KMTsK</File>
        <File Location="Kernel/cpan-lib/Perl/Tidy/FileWriter.pm" Permission="660" Encode="Base64">IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyB0aGUgUGVybDo6VGlkeTo6RmlsZVdyaXRlciBjbGFzcyB3cml0ZXMgdGhlIG91dHB1dCBmaWxlCiMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpwYWNrYWdlIFBlcmw6OlRpZHk6OkZpbGVXcml0ZXI7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKb3VyICRWRVJTSU9OID0gJzIwMjEwMTExJzsKCnVzZSBjb25zdGFudCBERVZFTF9NT0RFID0+IDA7CgpzdWIgQVVUT0xPQUQgewoKICAgICMgQ2F0Y2ggYW55IHVuZGVmaW5lZCBzdWIgY2FsbHMgc28gdGhhdCB3ZSBhcmUgc3VyZSB0byBnZXQKICAgICMgc29tZSBkaWFnbm9zdGljIGluZm9ybWF0aW9uLiAgVGhpcyBzdWIgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZAogICAgIyBleGNlcHQgZm9yIGEgcHJvZ3JhbW1pbmcgZXJyb3IuCiAgICBvdXIgJEFVVE9MT0FEOwogICAgcmV0dXJuIGlmICggJEFVVE9MT0FEID1+IC9cYkRFU1RST1kkLyApOwogICAgbXkgKCAkcGtnLCAkZm5hbWUsICRsbm8gKSA9IGNhbGxlcigpOwogICAgbXkgJG15X3BhY2thZ2UgPSBfX1BBQ0tBR0VfXzsKICAgIHByaW50IFNUREVSUiA8PEVPTTsKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFcnJvciBkZXRlY3RlZCBpbiBwYWNrYWdlICckbXlfcGFja2FnZScsIHZlcnNpb24gJFZFUlNJT04KUmVjZWl2ZWQgdW5leHBlY3RlZCBBVVRPTE9BRCBjYWxsIGZvciBzdWIgJyRBVVRPTE9BRCcKQ2FsbGVkIGZyb20gcGFja2FnZTogJyRwa2cnICAKQ2FsbGVkIGZyb20gRmlsZSAnJGZuYW1lJyAgYXQgbGluZSAnJGxubycKVGhpcyBlcnJvciBpcyBwcm9iYWJseSBkdWUgdG8gYSByZWNlbnQgcHJvZ3JhbW1pbmcgY2hhbmdlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRU9NCiAgICBleGl0IDE7Cn0KCnN1YiBERVNUUk9ZIHsKCiAgICAjIHJlcXVpcmVkIHRvIGF2b2lkIGNhbGwgdG8gQVVUT0xPQUQgaW4gc29tZSB2ZXJzaW9ucyBvZiBwZXJsCn0KCm15ICRpbnB1dF9zdHJlYW1fbmFtZSA9ICIiOwoKIyBNYXhpbXVtIG51bWJlciBvZiBsaXR0bGUgbWVzc2FnZXM7IHByb2JhYmx5IG5lZWQgbm90IGJlIGNoYW5nZWQuCm15ICRNQVhfTkFHX01FU1NBR0VTID0gNjsKCkJFR0lOIHsKCiAgICAjIEFycmF5IGluZGV4IG5hbWVzIGZvciB2YXJpYWJsZXMKICAgIG15ICRpID0gMDsKICAgIHVzZSBjb25zdGFudCB7CiAgICAgICAgX2xpbmVfc2lua19vYmplY3RfICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9sb2dnZXJfb2JqZWN0XyAgICAgICAgICAgICAgPT4gJGkrKywKICAgICAgICBfck9wdHNfICAgICAgICAgICAgICAgICAgICAgID0+ICRpKyssCiAgICAgICAgX291dHB1dF9saW5lX251bWJlcl8gICAgICAgICA9PiAkaSsrLAogICAgICAgIF9jb25zZWN1dGl2ZV9ibGFua19saW5lc18gICAgPT4gJGkrKywKICAgICAgICBfY29uc2VjdXRpdmVfbm9uYmxhbmtfbGluZXNfID0+ICRpKyssCiAgICAgICAgX2ZpcnN0X2xpbmVfbGVuZ3RoX2Vycm9yXyAgICA9PiAkaSsrLAogICAgICAgIF9tYXhfbGluZV9sZW5ndGhfZXJyb3JfICAgICAgPT4gJGkrKywKICAgICAgICBfbGFzdF9saW5lX2xlbmd0aF9lcnJvcl8gICAgID0+ICRpKyssCiAgICAgICAgX2ZpcnN0X2xpbmVfbGVuZ3RoX2Vycm9yX2F0XyA9PiAkaSsrLAogICAgICAgIF9tYXhfbGluZV9sZW5ndGhfZXJyb3JfYXRfICAgPT4gJGkrKywKICAgICAgICBfbGFzdF9saW5lX2xlbmd0aF9lcnJvcl9hdF8gID0+ICRpKyssCiAgICAgICAgX2xpbmVfbGVuZ3RoX2Vycm9yX2NvdW50XyAgICA9PiAkaSsrLAogICAgICAgIF9tYXhfb3V0cHV0X2xpbmVfbGVuZ3RoXyAgICAgPT4gJGkrKywKICAgICAgICBfbWF4X291dHB1dF9saW5lX2xlbmd0aF9hdF8gID0+ICRpKyssCiAgICAgICAgX3JLX2NoZWNrbGlzdF8gICAgICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9LX2Fycml2YWxfb3JkZXJfbWF0Y2hlc18gICAgPT4gJGkrKywKICAgICAgICBfS19zZXF1ZW5jZV9lcnJvcl9tc2dfICAgICAgID0+ICRpKyssCiAgICAgICAgX0tfbGFzdF9hcnJpdmFsXyAgICAgICAgICAgICA9PiAkaSsrLAogICAgfTsKfQoKc3ViIHdhcm5pbmcgewogICAgbXkgKCAkc2VsZiwgJG1zZyApID0gQF87CiAgICBteSAkbG9nZ2VyX29iamVjdCA9ICRzZWxmLT5bX2xvZ2dlcl9vYmplY3RfXTsKICAgIGlmICgkbG9nZ2VyX29iamVjdCkgeyAkbG9nZ2VyX29iamVjdC0+d2FybmluZygkbXNnKTsgfQogICAgcmV0dXJuOwp9CgpzdWIgd3JpdGVfbG9nZmlsZV9lbnRyeSB7CiAgICBteSAoICRzZWxmLCAkbXNnICkgPSBAXzsKICAgIG15ICRsb2dnZXJfb2JqZWN0ID0gJHNlbGYtPltfbG9nZ2VyX29iamVjdF9dOwogICAgaWYgKCRsb2dnZXJfb2JqZWN0KSB7CiAgICAgICAgJGxvZ2dlcl9vYmplY3QtPndyaXRlX2xvZ2ZpbGVfZW50cnkoJG1zZyk7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiBuZXcgewogICAgbXkgKCAkY2xhc3MsICRsaW5lX3Npbmtfb2JqZWN0LCAkck9wdHMsICRsb2dnZXJfb2JqZWN0ICkgPSBAXzsKCiAgICBteSAkc2VsZiA9IFtdOwogICAgJHNlbGYtPltfbGluZV9zaW5rX29iamVjdF9dICAgICAgICAgICA9ICRsaW5lX3Npbmtfb2JqZWN0OwogICAgJHNlbGYtPltfbG9nZ2VyX29iamVjdF9dICAgICAgICAgICAgICA9ICRsb2dnZXJfb2JqZWN0OwogICAgJHNlbGYtPltfck9wdHNfXSAgICAgICAgICAgICAgICAgICAgICA9ICRyT3B0czsKICAgICRzZWxmLT5bX291dHB1dF9saW5lX251bWJlcl9dICAgICAgICAgPSAxOwogICAgJHNlbGYtPltfY29uc2VjdXRpdmVfYmxhbmtfbGluZXNfXSAgICA9IDA7CiAgICAkc2VsZi0+W19jb25zZWN1dGl2ZV9ub25ibGFua19saW5lc19dID0gMDsKICAgICRzZWxmLT5bX2ZpcnN0X2xpbmVfbGVuZ3RoX2Vycm9yX10gICAgPSAwOwogICAgJHNlbGYtPltfbWF4X2xpbmVfbGVuZ3RoX2Vycm9yX10gICAgICA9IDA7CiAgICAkc2VsZi0+W19sYXN0X2xpbmVfbGVuZ3RoX2Vycm9yX10gICAgID0gMDsKICAgICRzZWxmLT5bX2ZpcnN0X2xpbmVfbGVuZ3RoX2Vycm9yX2F0X10gPSAwOwogICAgJHNlbGYtPltfbWF4X2xpbmVfbGVuZ3RoX2Vycm9yX2F0X10gICA9IDA7CiAgICAkc2VsZi0+W19sYXN0X2xpbmVfbGVuZ3RoX2Vycm9yX2F0X10gID0gMDsKICAgICRzZWxmLT5bX2xpbmVfbGVuZ3RoX2Vycm9yX2NvdW50X10gICAgPSAwOwogICAgJHNlbGYtPltfbWF4X291dHB1dF9saW5lX2xlbmd0aF9dICAgICA9IDA7CiAgICAkc2VsZi0+W19tYXhfb3V0cHV0X2xpbmVfbGVuZ3RoX2F0X10gID0gMDsKICAgICRzZWxmLT5bX3JLX2NoZWNrbGlzdF9dICAgICAgICAgICAgICAgPSBbXTsKICAgICRzZWxmLT5bX0tfYXJyaXZhbF9vcmRlcl9tYXRjaGVzX10gICAgPSAwOwogICAgJHNlbGYtPltfS19zZXF1ZW5jZV9lcnJvcl9tc2dfXSAgICAgICA9ICIiOwogICAgJHNlbGYtPltfS19sYXN0X2Fycml2YWxfXSAgICAgICAgICAgICA9IC0xOwoKICAgICMgc2F2ZSBpbnB1dCBzdHJlYW0gbmFtZSBmb3IgbG9jYWwgZXJyb3IgbWVzc2FnZXMKICAgICRpbnB1dF9zdHJlYW1fbmFtZSA9ICIiOwogICAgaWYgKCRsb2dnZXJfb2JqZWN0KSB7CiAgICAgICAgJGlucHV0X3N0cmVhbV9uYW1lID0gJGxvZ2dlcl9vYmplY3QtPmdldF9pbnB1dF9zdHJlYW1fbmFtZSgpOwogICAgfQoKICAgIGJsZXNzICRzZWxmLCAkY2xhc3M7CiAgICByZXR1cm4gJHNlbGY7Cn0KCnN1YiBzZXR1cF9jb252ZXJnZW5jZV90ZXN0IHsKICAgIG15ICggJHNlbGYsICRybGlzdCApID0gQF87CiAgICBpZiAoIEB7JHJsaXN0fSApIHsKCiAgICAgICAgIyBXZSBhcmUgZ29pbmcgdG8gZGVzdHJveSB0aGUgbGlzdCwgc28gbWFrZSBhIGNvcHkKICAgICAgICAjIGFuZCBwdXQgaW4gcmV2ZXJzZSBvcmRlciBzbyB3ZSBjYW4gcG9wIHZhbHVlcwogICAgICAgIG15IEBsaXN0ID0gQHskcmxpc3R9OwogICAgICAgIGlmICggJGxpc3RbMF0gPCAkbGlzdFstMV0gKSB7CiAgICAgICAgICAgIEBsaXN0ID0gcmV2ZXJzZSBAbGlzdDsKICAgICAgICB9CiAgICAgICAgJHNlbGYtPltfcktfY2hlY2tsaXN0X10gPSBcQGxpc3Q7CiAgICB9CiAgICAkc2VsZi0+W19LX2Fycml2YWxfb3JkZXJfbWF0Y2hlc19dID0gMTsKICAgICRzZWxmLT5bX0tfc2VxdWVuY2VfZXJyb3JfbXNnX10gICAgPSAiIjsKICAgICRzZWxmLT5bX0tfbGFzdF9hcnJpdmFsX10gICAgICAgICAgPSAtMTsKICAgIHJldHVybjsKfQoKc3ViIGdldF9jb252ZXJnZW5jZV9jaGVjayB7CiAgICBteSAoJHNlbGYpID0gQF87CiAgICBteSAkcmxpc3QgPSAkc2VsZi0+W19yS19jaGVja2xpc3RfXTsKCiAgICAjIGNvbnZlcmdlZCBpZiBhbGwgSyBhcnJpdmVkIGFuZCBpbiBjb3JyZWN0IG9yZGVyCiAgICByZXR1cm4gJHNlbGYtPltfS19hcnJpdmFsX29yZGVyX21hdGNoZXNfXSAmJiAhQHskcmxpc3R9Owp9CgpzdWIgZ2V0X0tfc2VxdWVuY2VfZXJyb3JfbXNnIHsKICAgIG15ICgkc2VsZikgPSBAXzsKICAgIHJldHVybiAkc2VsZi0+W19LX3NlcXVlbmNlX2Vycm9yX21zZ19dOwp9CgpzdWIgZ2V0X291dHB1dF9saW5lX251bWJlciB7CiAgICByZXR1cm4gJF9bMF0tPltfb3V0cHV0X2xpbmVfbnVtYmVyX107Cn0KCnN1YiBkZWNyZW1lbnRfb3V0cHV0X2xpbmVfbnVtYmVyIHsKICAgICRfWzBdLT5bX291dHB1dF9saW5lX251bWJlcl9dLS07CiAgICByZXR1cm47Cn0KCnN1YiBnZXRfY29uc2VjdXRpdmVfbm9uYmxhbmtfbGluZXMgewogICAgcmV0dXJuICRfWzBdLT5bX2NvbnNlY3V0aXZlX25vbmJsYW5rX2xpbmVzX107Cn0KCnN1YiByZXNldF9jb25zZWN1dGl2ZV9ibGFua19saW5lcyB7CiAgICAkX1swXS0+W19jb25zZWN1dGl2ZV9ibGFua19saW5lc19dID0gMDsKICAgIHJldHVybjsKfQoKc3ViIHdhbnRfYmxhbmtfbGluZSB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgdW5sZXNzICggJHNlbGYtPltfY29uc2VjdXRpdmVfYmxhbmtfbGluZXNfXSApIHsKICAgICAgICAkc2VsZi0+d3JpdGVfYmxhbmtfY29kZV9saW5lKCk7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiByZXF1aXJlX2JsYW5rX2NvZGVfbGluZXMgewoKICAgICMgd3JpdGUgb3V0IHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mIGJsYW5rcyByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZiAtbWJsCiAgICAjIHVubGVzcyAtbWJsPTAuICBUaGlzIGFsbG93cyBleHRyYSBibGFuayBsaW5lcyB0byBiZSB3cml0dGVuIGZvciBzdWJzIGFuZAogICAgIyBwYWNrYWdlcyBldmVuIHdpdGggdGhlIGRlZmF1bHQgLW1ibD0xCiAgICBteSAoICRzZWxmLCAkY291bnQgKSA9IEBfOwogICAgbXkgJG5lZWQgICA9ICRjb3VudCAtICRzZWxmLT5bX2NvbnNlY3V0aXZlX2JsYW5rX2xpbmVzX107CiAgICBteSAkck9wdHMgID0gJHNlbGYtPltfck9wdHNfXTsKICAgIG15ICRmb3JjZWQgPSAkck9wdHMtPnsnbWF4aW11bS1jb25zZWN1dGl2ZS1ibGFuay1saW5lcyd9ID4gMDsKICAgIGZvcmVhY2ggbXkgJGkgKCAwIC4uICRuZWVkIC0gMSApIHsKICAgICAgICAkc2VsZi0+d3JpdGVfYmxhbmtfY29kZV9saW5lKCRmb3JjZWQpOwogICAgfQogICAgcmV0dXJuOwp9CgpzdWIgd3JpdGVfYmxhbmtfY29kZV9saW5lIHsKICAgIG15ICRzZWxmICAgPSBzaGlmdDsKICAgIG15ICRmb3JjZWQgPSBzaGlmdDsKICAgIG15ICRyT3B0cyAgPSAkc2VsZi0+W19yT3B0c19dOwogICAgcmV0dXJuCiAgICAgIGlmICghJGZvcmNlZAogICAgICAgICYmICRzZWxmLT5bX2NvbnNlY3V0aXZlX2JsYW5rX2xpbmVzX10gPj0KICAgICAgICAkck9wdHMtPnsnbWF4aW11bS1jb25zZWN1dGl2ZS1ibGFuay1saW5lcyd9ICk7CiAgICAkc2VsZi0+W19jb25zZWN1dGl2ZV9ibGFua19saW5lc19dKys7CiAgICAkc2VsZi0+W19jb25zZWN1dGl2ZV9ub25ibGFua19saW5lc19dID0gMDsKICAgICRzZWxmLT53cml0ZV9saW5lKCJcbiIpOwogICAgcmV0dXJuOwp9CgpzdWIgd3JpdGVfY29kZV9saW5lIHsKICAgIG15ICggJHNlbGYsICRzdHIsICRLICkgPSBAXzsKCiAgICAkc2VsZi0+W19jb25zZWN1dGl2ZV9ibGFua19saW5lc19dID0gMDsKICAgICRzZWxmLT5bX2NvbnNlY3V0aXZlX25vbmJsYW5rX2xpbmVzX10rKzsKICAgICRzZWxmLT53cml0ZV9saW5lKCRzdHIpOwoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjIENvbnZlcmdlbmNlIGFuZCBlcnJvciBjaGVjawogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGlmICggZGVmaW5lZCgkSykgKSB7CgogICAgICAgICMgQ29udmVyZ2VuY2UgY2hlY2s6IHdlIGFyZSBjaGVja2luZyBpZiBhbGwgZGVmaW5lZCBLIHZhbHVlcyBhcnJpdmUgaW4KICAgICAgICAjIHRoZSBvcmRlciB3aGljaCB3YXMgZGVmaW5lZCBieSB0aGUgY2FsbGVyLiAgUXVpdCBjaGVja2luZyBpZiBhbnkKICAgICAgICAjIHVuZXhwZWN0ZWQgSyB2YWx1ZSBhcnJpdmVzLgogICAgICAgIGlmICggJHNlbGYtPltfS19hcnJpdmFsX29yZGVyX21hdGNoZXNfXSApIHsKICAgICAgICAgICAgbXkgJEt0ID0gcG9wIEB7ICRzZWxmLT5bX3JLX2NoZWNrbGlzdF9dIH07CiAgICAgICAgICAgIGlmICggIWRlZmluZWQoJEt0KSB8fCAkS3QgIT0gJEsgKSB7CiAgICAgICAgICAgICAgICAkc2VsZi0+W19LX2Fycml2YWxfb3JkZXJfbWF0Y2hlc19dID0gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBDaGVjayBmb3Igb3V0LW9mLW9yZGVyIGFycml2YWxzIG9mIGluZGV4IEsuIFRoZSBLIHZhbHVlcyBhcmUgdGhlCiAgICAgICAgIyB0b2tlbiBpbmRleGVzIG9mIHRoZSBsYXN0IHRva2VuIG9mIGNvZGUgbGluZXMsIGFuZCB0aGV5IHNob3VsZCBjb21lCiAgICAgICAgIyBvdXQgaW4gaW5jcmVhc2luZyBvcmRlci4gIE90aGVyd2lzZSBzb21ldGhpbmcgaXMgc2VyaW91c2x5IHdyb25nLgogICAgICAgICMgTW9zdCBsaWtlbHkgYSByZWNlbnQgcHJvZ3JhbW1pbmcgY2hhbmdlIHRvIFZlcnRpY2FsQWxpZ25lci5wbSBoYXMKICAgICAgICAjIGNhdXNlZCBsaW5lcyB0byBnbyBvdXQgaW4gdGhlIHdyb25nIG9yZGVyLiAgVGhpcyBjb3VsZCBoYXBwZW4gaWYKICAgICAgICAjIGVpdGhlciB0aGUgY2FjaGUgb3IgYnVmZmVyIHRoYXQgaXQgdXNlcyBhcmUgZW1wdGllZCBpbiB0aGUgd3JvbmcKICAgICAgICAjIG9yZGVyLgogICAgICAgIGlmICggISRzZWxmLT5bX0tfc2VxdWVuY2VfZXJyb3JfbXNnX10gKSB7CiAgICAgICAgICAgIG15ICRLX3ByZXYgPSAkc2VsZi0+W19LX2xhc3RfYXJyaXZhbF9dOwogICAgICAgICAgICBpZiAoICRLIDwgJEtfcHJldiApIHsKICAgICAgICAgICAgICAgIGNob21wICRzdHI7CiAgICAgICAgICAgICAgICBpZiAoIGxlbmd0aCgkc3RyKSA+IDgwICkgewogICAgICAgICAgICAgICAgICAgICRzdHIgPSBzdWJzdHIoICRzdHIsIDAsIDgwICkgLiAiLi4uIjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkbXNnID0gPDxFT007CldoaWxlIG9wZXJhdGluZyBvbiBpbnB1dCBzdHJlYW0gd2l0aCBuYW1lOiAnJGlucHV0X3N0cmVhbV9uYW1lJwpMaW5lcyBoYXZlIGFycml2ZWQgb3V0IG9mIG9yZGVyIGluIHN1YiAnd3JpdGVfY29kZV9saW5lJwphcyBkZXRlY3RlZCBieSB0b2tlbiBpbmRleCBLPSRLIGFycml2aW5nIGFmdGVyIGluZGV4IEs9JEtfcHJldiBpbiB0aGUgZm9sbG93aW5nIGxpbmU6CiRzdHIKVGhpcyBpcyBwcm9iYWJseSBkdWUgdG8gYSByZWNlbnQgcHJvZ3JhbW1pbmcgY2hhbmdlIGFuZCBuZWVkcyB0byBiZSBmaXhlZC4KRU9NCgogICAgICAgICAgICAgICAgIyBGSVhNRTogaXQgd291bGQgYmUgYmVzdCB0byBzZXQgYSAnc2V2ZXJlX2Vycm9yJyBmbGFnIGhlcmUgYW5kCiAgICAgICAgICAgICAgICAjIHRlbGwgY2FsbGVyIHRvIG91dHB1dCB0aGUgb3JpZ2luYWwgZmlsZQogICAgICAgICAgICAgICAgJHNlbGYtPndhcm5pbmcoJG1zZyk7CgogICAgICAgICAgICAgICAgIyBPbmx5IGlzc3VlIHRoaXMgd2FybmluZyBvbmNlCiAgICAgICAgICAgICAgICAkc2VsZi0+W19LX3NlcXVlbmNlX2Vycm9yX21zZ19dID0gJG1zZzsKCiAgICAgICAgICAgICAgICAjIHN0b3AgaGVyZSBpbiBERVZFTCBtb2RlIHNvIHRoaXMgaXNzdWUgZG9lc24ndCBnZXQgbWlzc2VkCiAgICAgICAgICAgICAgICBERVZFTF9NT0RFICYmIFBlcmw6OlRpZHk6OkRpZSgkbXNnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkc2VsZi0+W19LX2xhc3RfYXJyaXZhbF9dID0gJEs7CiAgICB9CiAgICByZXR1cm47Cn0KCnN1YiB3cml0ZV9saW5lIHsKICAgIG15ICggJHNlbGYsICRzdHIgKSA9IEBfOwoKICAgICRzZWxmLT5bX2xpbmVfc2lua19vYmplY3RfXS0+d3JpdGVfbGluZSgkc3RyKTsKCiAgICBpZiAoIGNob21wICRzdHIgKSB7ICRzZWxmLT5bX291dHB1dF9saW5lX251bWJlcl9dKys7IH0KCiAgICAjIFRoaXMgY2FsY3VsYXRpb24gb2YgZXhjZXNzIGxpbmUgbGVuZ3RoIGlnbm9yZXMgYW55IGludGVybmFsIHRhYnMKICAgIG15ICRyT3B0cyAgID0gJHNlbGYtPltfck9wdHNfXTsKICAgIG15ICRsZW5fc3RyID0gbGVuZ3RoKCRzdHIpOwogICAgbXkgJGV4Y2VlZCAgPSAkbGVuX3N0ciAtICRyT3B0cy0+eydtYXhpbXVtLWxpbmUtbGVuZ3RoJ307CiAgICBpZiAoICRzdHIgJiYgc3Vic3RyKCAkc3RyLCAwLCAxICkgZXEgIlx0IiAmJiAkc3RyID1+IC9eXHQrL2cgKSB7CiAgICAgICAgJGV4Y2VlZCArPSBwb3MoJHN0cikgKiAkck9wdHMtPnsnaW5kZW50LWNvbHVtbnMnfTsKICAgIH0KCiAgICAjIE5vdGUgdGhhdCB3ZSBqdXN0IGluY3JlbWVudGVkIG91dHB1dCBsaW5lIG51bWJlciB0byBmdXR1cmUgdmFsdWUKICAgICMgc28gd2UgbXVzdCBzdWJ0cmFjdCAxIGZvciBjdXJyZW50IGxpbmUgbnVtYmVyCiAgICBpZiAoICRsZW5fc3RyID4gJHNlbGYtPltfbWF4X291dHB1dF9saW5lX2xlbmd0aF9dICkgewogICAgICAgICRzZWxmLT5bX21heF9vdXRwdXRfbGluZV9sZW5ndGhfXSA9ICRsZW5fc3RyOwogICAgICAgICRzZWxmLT5bX21heF9vdXRwdXRfbGluZV9sZW5ndGhfYXRfXSA9CiAgICAgICAgICAkc2VsZi0+W19vdXRwdXRfbGluZV9udW1iZXJfXSAtIDE7CiAgICB9CgogICAgaWYgKCAkZXhjZWVkID4gMCApIHsKICAgICAgICBteSAkb3V0cHV0X2xpbmVfbnVtYmVyID0gJHNlbGYtPltfb3V0cHV0X2xpbmVfbnVtYmVyX107CiAgICAgICAgJHNlbGYtPltfbGFzdF9saW5lX2xlbmd0aF9lcnJvcl9dICAgID0gJGV4Y2VlZDsKICAgICAgICAkc2VsZi0+W19sYXN0X2xpbmVfbGVuZ3RoX2Vycm9yX2F0X10gPSAkb3V0cHV0X2xpbmVfbnVtYmVyIC0gMTsKICAgICAgICBpZiAoICRzZWxmLT5bX2xpbmVfbGVuZ3RoX2Vycm9yX2NvdW50X10gPT0gMCApIHsKICAgICAgICAgICAgJHNlbGYtPltfZmlyc3RfbGluZV9sZW5ndGhfZXJyb3JfXSAgICA9ICRleGNlZWQ7CiAgICAgICAgICAgICRzZWxmLT5bX2ZpcnN0X2xpbmVfbGVuZ3RoX2Vycm9yX2F0X10gPSAkb3V0cHV0X2xpbmVfbnVtYmVyIC0gMTsKICAgICAgICB9CgogICAgICAgIGlmICggJHNlbGYtPltfbGFzdF9saW5lX2xlbmd0aF9lcnJvcl9dID4KICAgICAgICAgICAgJHNlbGYtPltfbWF4X2xpbmVfbGVuZ3RoX2Vycm9yX10gKQogICAgICAgIHsKICAgICAgICAgICAgJHNlbGYtPltfbWF4X2xpbmVfbGVuZ3RoX2Vycm9yX10gICAgPSAkZXhjZWVkOwogICAgICAgICAgICAkc2VsZi0+W19tYXhfbGluZV9sZW5ndGhfZXJyb3JfYXRfXSA9ICRvdXRwdXRfbGluZV9udW1iZXIgLSAxOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkc2VsZi0+W19saW5lX2xlbmd0aF9lcnJvcl9jb3VudF9dIDwgJE1BWF9OQUdfTUVTU0FHRVMgKSB7CiAgICAgICAgICAgICRzZWxmLT53cml0ZV9sb2dmaWxlX2VudHJ5KAogICAgICAgICAgICAgICAgIkxpbmUgbGVuZ3RoIGV4Y2VlZGVkIGJ5ICRleGNlZWQgY2hhcmFjdGVyc1xuIik7CiAgICAgICAgfQogICAgICAgICRzZWxmLT5bX2xpbmVfbGVuZ3RoX2Vycm9yX2NvdW50X10rKzsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIHJlcG9ydF9saW5lX2xlbmd0aF9lcnJvcnMgewogICAgbXkgJHNlbGYgICAgICAgICAgICAgICAgICAgID0gc2hpZnQ7CiAgICBteSAkck9wdHMgICAgICAgICAgICAgICAgICAgPSAkc2VsZi0+W19yT3B0c19dOwogICAgbXkgJGxpbmVfbGVuZ3RoX2Vycm9yX2NvdW50ID0gJHNlbGYtPltfbGluZV9sZW5ndGhfZXJyb3JfY291bnRfXTsKICAgIGlmICggJGxpbmVfbGVuZ3RoX2Vycm9yX2NvdW50ID09IDAgKSB7CiAgICAgICAgJHNlbGYtPndyaXRlX2xvZ2ZpbGVfZW50cnkoCiAgICAgICAgICAgICJObyBsaW5lcyBleGNlZWRlZCAkck9wdHMtPnsnbWF4aW11bS1saW5lLWxlbmd0aCd9IGNoYXJhY3RlcnNcbiIpOwogICAgICAgIG15ICRtYXhfb3V0cHV0X2xpbmVfbGVuZ3RoICAgID0gJHNlbGYtPltfbWF4X291dHB1dF9saW5lX2xlbmd0aF9dOwogICAgICAgIG15ICRtYXhfb3V0cHV0X2xpbmVfbGVuZ3RoX2F0ID0gJHNlbGYtPltfbWF4X291dHB1dF9saW5lX2xlbmd0aF9hdF9dOwogICAgICAgICRzZWxmLT53cml0ZV9sb2dmaWxlX2VudHJ5KAoiICBNYXhpbXVtIG91dHB1dCBsaW5lIGxlbmd0aCB3YXMgJG1heF9vdXRwdXRfbGluZV9sZW5ndGggYXQgbGluZSAkbWF4X291dHB1dF9saW5lX2xlbmd0aF9hdFxuIgogICAgICAgICk7CgogICAgfQogICAgZWxzZSB7CgogICAgICAgIG15ICR3b3JkID0gKCAkbGluZV9sZW5ndGhfZXJyb3JfY291bnQgPiAxICkgPyAicyIgOiAiIjsKICAgICAgICAkc2VsZi0+d3JpdGVfbG9nZmlsZV9lbnRyeSgKIiRsaW5lX2xlbmd0aF9lcnJvcl9jb3VudCBvdXRwdXQgbGluZSR3b3JkIGV4Y2VlZGVkICRyT3B0cy0+eydtYXhpbXVtLWxpbmUtbGVuZ3RoJ30gY2hhcmFjdGVyczpcbiIKICAgICAgICApOwoKICAgICAgICAkd29yZCA9ICggJGxpbmVfbGVuZ3RoX2Vycm9yX2NvdW50ID4gMSApID8gIkZpcnN0IiA6ICIiOwogICAgICAgIG15ICRmaXJzdF9saW5lX2xlbmd0aF9lcnJvciAgICA9ICRzZWxmLT5bX2ZpcnN0X2xpbmVfbGVuZ3RoX2Vycm9yX107CiAgICAgICAgbXkgJGZpcnN0X2xpbmVfbGVuZ3RoX2Vycm9yX2F0ID0gJHNlbGYtPltfZmlyc3RfbGluZV9sZW5ndGhfZXJyb3JfYXRfXTsKICAgICAgICAkc2VsZi0+d3JpdGVfbG9nZmlsZV9lbnRyeSgKIiAkd29yZCBhdCBsaW5lICRmaXJzdF9saW5lX2xlbmd0aF9lcnJvcl9hdCBieSAkZmlyc3RfbGluZV9sZW5ndGhfZXJyb3IgY2hhcmFjdGVyc1xuIgogICAgICAgICk7CgogICAgICAgIGlmICggJGxpbmVfbGVuZ3RoX2Vycm9yX2NvdW50ID4gMSApIHsKICAgICAgICAgICAgbXkgJG1heF9saW5lX2xlbmd0aF9lcnJvciAgICA9ICRzZWxmLT5bX21heF9saW5lX2xlbmd0aF9lcnJvcl9dOwogICAgICAgICAgICBteSAkbWF4X2xpbmVfbGVuZ3RoX2Vycm9yX2F0ID0gJHNlbGYtPltfbWF4X2xpbmVfbGVuZ3RoX2Vycm9yX2F0X107CiAgICAgICAgICAgIG15ICRsYXN0X2xpbmVfbGVuZ3RoX2Vycm9yICAgPSAkc2VsZi0+W19sYXN0X2xpbmVfbGVuZ3RoX2Vycm9yX107CiAgICAgICAgICAgIG15ICRsYXN0X2xpbmVfbGVuZ3RoX2Vycm9yX2F0ID0KICAgICAgICAgICAgICAkc2VsZi0+W19sYXN0X2xpbmVfbGVuZ3RoX2Vycm9yX2F0X107CiAgICAgICAgICAgICRzZWxmLT53cml0ZV9sb2dmaWxlX2VudHJ5KAoiIE1heGltdW0gYXQgbGluZSAkbWF4X2xpbmVfbGVuZ3RoX2Vycm9yX2F0IGJ5ICRtYXhfbGluZV9sZW5ndGhfZXJyb3IgY2hhcmFjdGVyc1xuIgogICAgICAgICAgICApOwogICAgICAgICAgICAkc2VsZi0+d3JpdGVfbG9nZmlsZV9lbnRyeSgKIiBMYXN0IGF0IGxpbmUgJGxhc3RfbGluZV9sZW5ndGhfZXJyb3JfYXQgYnkgJGxhc3RfbGluZV9sZW5ndGhfZXJyb3IgY2hhcmFjdGVyc1xuIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybjsKfQoxOwo=</File>
        <File Location="Kernel/cpan-lib/Perl/Tidy/IOScalarArray.pm" Permission="660" Encode="Base64">IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyBUaGlzIGlzIGEgc3RyaXBwZWQgZG93biB2ZXJzaW9uIG9mIElPOjpTY2FsYXJBcnJheQojIEdpdmVuIGEgcmVmZXJlbmNlIHRvIGFuIGFycmF5LCBpdCBzdXBwbGllcyBlaXRoZXI6CiMgYSBnZXRsaW5lIG1ldGhvZCB3aGljaCByZWFkcyBsaW5lcyAobW9kZT0ncicpLCBvcgojIGEgcHJpbnQgbWV0aG9kIHdoaWNoIHJlYWRzIGxpbmVzIChtb2RlPSd3JykKIwojIE5PVEU6IHRoaXMgcm91dGluZSBhc3N1bWVzIHRoYXQgdGhlcmUgYXJlbid0IGFueSBlbWJlZGRlZAojIG5ld2xpbmVzIHdpdGhpbiBhbnkgb2YgdGhlIGFycmF5IGVsZW1lbnRzLiAgVGhlcmUgYXJlIG5vIGNoZWNrcwojIGZvciB0aGF0LgojCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpwYWNrYWdlIFBlcmw6OlRpZHk6OklPU2NhbGFyQXJyYXk7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIENhcnA7Cm91ciAkVkVSU0lPTiA9ICcyMDIxMDExMSc7CgpzdWIgQVVUT0xPQUQgewoKICAgICMgQ2F0Y2ggYW55IHVuZGVmaW5lZCBzdWIgY2FsbHMgc28gdGhhdCB3ZSBhcmUgc3VyZSB0byBnZXQKICAgICMgc29tZSBkaWFnbm9zdGljIGluZm9ybWF0aW9uLiAgVGhpcyBzdWIgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZAogICAgIyBleGNlcHQgZm9yIGEgcHJvZ3JhbW1pbmcgZXJyb3IuCiAgICBvdXIgJEFVVE9MT0FEOwogICAgcmV0dXJuIGlmICggJEFVVE9MT0FEID1+IC9cYkRFU1RST1kkLyApOwogICAgbXkgKCAkcGtnLCAkZm5hbWUsICRsbm8gKSA9IGNhbGxlcigpOwogICAgbXkgJG15X3BhY2thZ2UgPSBfX1BBQ0tBR0VfXzsKICAgIHByaW50IFNUREVSUiA8PEVPTTsKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFcnJvciBkZXRlY3RlZCBpbiBwYWNrYWdlICckbXlfcGFja2FnZScsIHZlcnNpb24gJFZFUlNJT04KUmVjZWl2ZWQgdW5leHBlY3RlZCBBVVRPTE9BRCBjYWxsIGZvciBzdWIgJyRBVVRPTE9BRCcKQ2FsbGVkIGZyb20gcGFja2FnZTogJyRwa2cnICAKQ2FsbGVkIGZyb20gRmlsZSAnJGZuYW1lJyAgYXQgbGluZSAnJGxubycKVGhpcyBlcnJvciBpcyBwcm9iYWJseSBkdWUgdG8gYSByZWNlbnQgcHJvZ3JhbW1pbmcgY2hhbmdlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRU9NCiAgICBleGl0IDE7Cn0KCnN1YiBERVNUUk9ZIHsKCiAgICAjIHJlcXVpcmVkIHRvIGF2b2lkIGNhbGwgdG8gQVVUT0xPQUQgaW4gc29tZSB2ZXJzaW9ucyBvZiBwZXJsCn0KCnN1YiBuZXcgewogICAgbXkgKCAkcGFja2FnZSwgJHJhcnJheSwgJG1vZGUgKSA9IEBfOwogICAgbXkgJHJlZiA9IHJlZiAkcmFycmF5OwogICAgaWYgKCAkcmVmIG5lICdBUlJBWScgKSB7CiAgICAgICAgY29uZmVzcyA8PEVPTTsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmV4cGVjdGluZyByZWYgdG8gQVJSQVkgYnV0IGdvdCByZWYgdG8gKCRyZWYpOyB0cmFjZSBmb2xsb3dzOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCgogICAgfQogICAgaWYgKCAkbW9kZSBlcSAndycgKSB7CiAgICAgICAgQHskcmFycmF5fSA9ICgpOwogICAgICAgIHJldHVybiBibGVzcyBbICRyYXJyYXksICRtb2RlIF0sICRwYWNrYWdlOwogICAgfQogICAgZWxzaWYgKCAkbW9kZSBlcSAncicgKSB7CiAgICAgICAgbXkgJGlfbmV4dCA9IDA7CiAgICAgICAgcmV0dXJuIGJsZXNzIFsgJHJhcnJheSwgJG1vZGUsICRpX25leHQgXSwgJHBhY2thZ2U7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBjb25mZXNzIDw8RU9NOwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZXhwZWN0aW5nIG1vZGUgPSAncicgb3IgJ3cnIGJ1dCBnb3QgbW9kZSAoJG1vZGUpOyB0cmFjZSBmb2xsb3dzOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCiAgICB9Cn0KCnN1YiBnZXRsaW5lIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICBteSAkbW9kZSA9ICRzZWxmLT5bMV07CiAgICBpZiAoICRtb2RlIG5lICdyJyApIHsKICAgICAgICBjb25mZXNzIDw8RU9NOwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZ2V0bGluZSByZXF1aXJlcyBtb2RlID0gJ3InIGJ1dCBtb2RlID0gKCRtb2RlKTsgdHJhY2UgZm9sbG93czoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVPTQogICAgfQogICAgbXkgJGkgPSAkc2VsZi0+WzJdKys7CiAgICByZXR1cm4gJHNlbGYtPlswXS0+WyRpXTsKfQoKc3ViIHByaW50IHsKICAgIG15ICggJHNlbGYsICRtc2cgKSA9IEBfOwogICAgbXkgJG1vZGUgPSAkc2VsZi0+WzFdOwogICAgaWYgKCAkbW9kZSBuZSAndycgKSB7CiAgICAgICAgY29uZmVzcyA8PEVPTTsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnByaW50IHJlcXVpcmVzIG1vZGUgPSAndycgYnV0IG1vZGUgPSAoJG1vZGUpOyB0cmFjZSBmb2xsb3dzOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRU9NCiAgICB9CiAgICBwdXNoIEB7ICRzZWxmLT5bMF0gfSwgJG1zZzsKICAgIHJldHVybjsKfQpzdWIgY2xvc2UgeyByZXR1cm4gfQoxOwoK</File>
        <File Location="Kernel/cpan-lib/Perl/Tidy/VerticalAligner/Alignment.pm" Permission="660" Encode="Base64">IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyB0aGUgUGVybDo6VGlkeTo6VmVydGljYWxBbGlnbmVyOjpBbGlnbm1lbnQgY2xhc3MgaG9sZHMgaW5mb3JtYXRpb24KIyBvbiBhIHNpbmdsZSBjb2x1bW4gYmVpbmcgYWxpZ25lZAojCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpwYWNrYWdlIFBlcmw6OlRpZHk6OlZlcnRpY2FsQWxpZ25lcjo6QWxpZ25tZW50Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp7ICM8PDwgQSBub24taW5kZW50aW5nIGJyYWNlCgpvdXIgJFZFUlNJT04gPSAnMjAyMTAxMTEnOwoKIyAgICBfY29sdW1uXyAgICAgICAgICAjIHRoZSBjdXJyZW50IGNvbHVtbiBudW1iZXIKIyAgICBfc2F2ZWRfY29sdW1uXyAgICAjIGEgcGxhY2UgZm9yIHRlbXBvcmFyeSBzdG9yYWdlCm15ICRpID0gMDsKdXNlIGNvbnN0YW50IHsKICAgIF9jb2x1bW5fICAgICAgID0+ICRpKyssCiAgICBfc2F2ZWRfY29sdW1uXyA9PiAkaSsrLAp9OwoKc3ViIG5ldyB7CiAgICBteSAoICRjbGFzcywgJHJhcmcgKSA9IEBfOwogICAgbXkgJHNlbGYgPSBibGVzcyBbXSwgJGNsYXNzOwogICAgJHNlbGYtPltfY29sdW1uX10gICAgICAgPSAkcmFyZy0+e2NvbHVtbn07CiAgICAkc2VsZi0+W19zYXZlZF9jb2x1bW5fXSA9ICRyYXJnLT57c2F2ZWRfY29sdW1ufTsKICAgIHJldHVybiAkc2VsZjsKfQoKc3ViIEFVVE9MT0FEIHsKCiAgICAjIENhdGNoIGFueSB1bmRlZmluZWQgc3ViIGNhbGxzIHNvIHRoYXQgd2UgYXJlIHN1cmUgdG8gZ2V0CiAgICAjIHNvbWUgZGlhZ25vc3RpYyBpbmZvcm1hdGlvbi4gIFRoaXMgc3ViIHNob3VsZCBuZXZlciBiZSBjYWxsZWQKICAgICMgZXhjZXB0IGZvciBhIHByb2dyYW1taW5nIGVycm9yLgogICAgb3VyICRBVVRPTE9BRDsKICAgIHJldHVybiBpZiAoICRBVVRPTE9BRCA9fiAvXGJERVNUUk9ZJC8gKTsKICAgIG15ICggJHBrZywgJGZuYW1lLCAkbG5vICkgPSBjYWxsZXIoKTsKICAgIG15ICRteV9wYWNrYWdlID0gX19QQUNLQUdFX187CiAgICBwcmludCBTVERFUlIgPDxFT007Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRXJyb3IgZGV0ZWN0ZWQgaW4gcGFja2FnZSAnJG15X3BhY2thZ2UnLCB2ZXJzaW9uICRWRVJTSU9OClJlY2VpdmVkIHVuZXhwZWN0ZWQgQVVUT0xPQUQgY2FsbCBmb3Igc3ViICckQVVUT0xPQUQnCkNhbGxlZCBmcm9tIHBhY2thZ2U6ICckcGtnJyAgCkNhbGxlZCBmcm9tIEZpbGUgJyRmbmFtZScgIGF0IGxpbmUgJyRsbm8nClRoaXMgZXJyb3IgaXMgcHJvYmFibHkgZHVlIHRvIGEgcmVjZW50IHByb2dyYW1taW5nIGNoYW5nZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVPTQogICAgZXhpdCAxOwp9CgpzdWIgREVTVFJPWSB7CgogICAgIyByZXF1aXJlZCB0byBhdm9pZCBjYWxsIHRvIEFVVE9MT0FEIGluIHNvbWUgdmVyc2lvbnMgb2YgcGVybAp9CgpzdWIgZ2V0X2NvbHVtbiB7CiAgICByZXR1cm4gJF9bMF0tPltfY29sdW1uX107Cn0KCnN1YiBpbmNyZW1lbnRfY29sdW1uIHsKICAgICRfWzBdLT5bX2NvbHVtbl9dICs9ICRfWzFdOwogICAgcmV0dXJuOwp9CgpzdWIgc2F2ZV9jb2x1bW4gewogICAgJF9bMF0tPltfc2F2ZWRfY29sdW1uX10gPSAkX1swXS0+W19jb2x1bW5fXTsKICAgIHJldHVybjsKfQoKc3ViIHJlc3RvcmVfY29sdW1uIHsKICAgICRfWzBdLT5bX2NvbHVtbl9dID0gJF9bMF0tPltfc2F2ZWRfY29sdW1uX107CiAgICByZXR1cm47Cn0KfSAjIyBlbmQgb2YgcGFja2FnZSBWZXJ0aWNhbEFsaWduZXI6OkFsaWdubWVudAoxOwoK</File>
        <File Location="Kernel/cpan-lib/Perl/Tidy/VerticalAligner/Line.pm" Permission="660" Encode="Base64">IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyB0aGUgUGVybDo6VGlkeTo6VmVydGljYWxBbGlnbmVyOjpMaW5lIGNsYXNzIHN1cHBsaWVzIGFuIG9iamVjdCB0bwojIGNvbnRhaW4gYSBzaW5nbGUgb3V0cHV0IGxpbmUKIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnBhY2thZ2UgUGVybDo6VGlkeTo6VmVydGljYWxBbGlnbmVyOjpMaW5lOwp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm91ciAkVkVSU0lPTiA9ICcyMDIxMDExMSc7CgpCRUdJTiB7CiAgICBteSAkaSA9IDA7CiAgICB1c2UgY29uc3RhbnQgewogICAgICAgIF9qbWF4XyAgICAgICAgICAgICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9ydG9rZW5zXyAgICAgICAgICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9yZmllbGRzXyAgICAgICAgICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9yZmllbGRfbGVuZ3Roc18gICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9ycGF0dGVybnNfICAgICAgICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9pbmRlbnRhdGlvbl8gICAgICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9sZWFkaW5nX3NwYWNlX2NvdW50XyAgICAgICA9PiAkaSsrLAogICAgICAgIF9vdXRkZW50X2xvbmdfbGluZXNfICAgICAgICA9PiAkaSsrLAogICAgICAgIF9saXN0X3NlcW5vXyAgICAgICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9saXN0X3R5cGVfICAgICAgICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9pc19oYW5naW5nX3NpZGVfY29tbWVudF8gICA9PiAkaSsrLAogICAgICAgIF9yYWxpZ25tZW50c18gICAgICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9tYXhpbXVtX2xpbmVfbGVuZ3RoXyAgICAgICA9PiAkaSsrLAogICAgICAgIF9ydmVydGljYWxfdGlnaHRuZXNzX2ZsYWdzXyA9PiAkaSsrLAogICAgICAgIF9pc190ZXJtaW5hbF90ZXJuYXJ5XyAgICAgICA9PiAkaSsrLAogICAgICAgIF9qX3Rlcm1pbmFsX21hdGNoXyAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9lbmRfZ3JvdXBfICAgICAgICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9LZW5kXyAgICAgICAgICAgICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9jaV9sZXZlbF8gICAgICAgICAgICAgICAgICA9PiAkaSsrLAogICAgICAgIF9pbWF4X3BhaXJfICAgICAgICAgICAgICAgICA9PiAkaSsrLAogICAgfTsKfQoKc3ViIEFVVE9MT0FEIHsKCiAgICAjIENhdGNoIGFueSB1bmRlZmluZWQgc3ViIGNhbGxzIHNvIHRoYXQgd2UgYXJlIHN1cmUgdG8gZ2V0CiAgICAjIHNvbWUgZGlhZ25vc3RpYyBpbmZvcm1hdGlvbi4gIFRoaXMgc3ViIHNob3VsZCBuZXZlciBiZSBjYWxsZWQKICAgICMgZXhjZXB0IGZvciBhIHByb2dyYW1taW5nIGVycm9yLgogICAgb3VyICRBVVRPTE9BRDsKICAgIHJldHVybiBpZiAoICRBVVRPTE9BRCA9fiAvXGJERVNUUk9ZJC8gKTsKICAgIG15ICggJHBrZywgJGZuYW1lLCAkbG5vICkgPSBjYWxsZXIoKTsKICAgIG15ICRteV9wYWNrYWdlID0gX19QQUNLQUdFX187CiAgICBwcmludCBTVERFUlIgPDxFT007Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRXJyb3IgZGV0ZWN0ZWQgaW4gcGFja2FnZSAnJG15X3BhY2thZ2UnLCB2ZXJzaW9uICRWRVJTSU9OClJlY2VpdmVkIHVuZXhwZWN0ZWQgQVVUT0xPQUQgY2FsbCBmb3Igc3ViICckQVVUT0xPQUQnCkNhbGxlZCBmcm9tIHBhY2thZ2U6ICckcGtnJyAgCkNhbGxlZCBmcm9tIEZpbGUgJyRmbmFtZScgIGF0IGxpbmUgJyRsbm8nClRoaXMgZXJyb3IgaXMgcHJvYmFibHkgZHVlIHRvIGEgcmVjZW50IHByb2dyYW1taW5nIGNoYW5nZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVPTQogICAgZXhpdCAxOwp9Cgp7CgogICAgIyN1c2UgQ2FycDsKCiAgICAjIENvbnN0cnVjdG9yIG1heSBiZSBjYWxsZWQgYXMgYSBjbGFzcyBtZXRob2QKICAgIHN1YiBuZXcgewogICAgICAgIG15ICggJGNsYXNzLCAkcmkgKSA9IEBfOwogICAgICAgIG15ICRzZWxmID0gYmxlc3MgW10sICRjbGFzczsKCiAgICAgICAgJHNlbGYtPltfam1heF9dICAgICAgICAgICAgICAgICAgICAgID0gJHJpLT57am1heH07CiAgICAgICAgJHNlbGYtPltfcnRva2Vuc19dICAgICAgICAgICAgICAgICAgID0gJHJpLT57cnRva2Vuc307CiAgICAgICAgJHNlbGYtPltfcmZpZWxkc19dICAgICAgICAgICAgICAgICAgID0gJHJpLT57cmZpZWxkc307CiAgICAgICAgJHNlbGYtPltfcmZpZWxkX2xlbmd0aHNfXSAgICAgICAgICAgID0gJHJpLT57cmZpZWxkX2xlbmd0aHN9OwogICAgICAgICRzZWxmLT5bX3JwYXR0ZXJuc19dICAgICAgICAgICAgICAgICA9ICRyaS0+e3JwYXR0ZXJuc307CiAgICAgICAgJHNlbGYtPltfaW5kZW50YXRpb25fXSAgICAgICAgICAgICAgID0gJHJpLT57aW5kZW50YXRpb259OwogICAgICAgICRzZWxmLT5bX2xlYWRpbmdfc3BhY2VfY291bnRfXSAgICAgICA9ICRyaS0+e2xlYWRpbmdfc3BhY2VfY291bnR9OwogICAgICAgICRzZWxmLT5bX291dGRlbnRfbG9uZ19saW5lc19dICAgICAgICA9ICRyaS0+e291dGRlbnRfbG9uZ19saW5lc307CiAgICAgICAgJHNlbGYtPltfbGlzdF90eXBlX10gICAgICAgICAgICAgICAgID0gJHJpLT57bGlzdF90eXBlfTsKICAgICAgICAkc2VsZi0+W19saXN0X3NlcW5vX10gICAgICAgICAgICAgICAgPSAkcmktPntsaXN0X3NlcW5vfTsKICAgICAgICAkc2VsZi0+W19pc19oYW5naW5nX3NpZGVfY29tbWVudF9dICAgPSAkcmktPntpc19oYW5naW5nX3NpZGVfY29tbWVudH07CiAgICAgICAgJHNlbGYtPltfbWF4aW11bV9saW5lX2xlbmd0aF9dICAgICAgID0gJHJpLT57bWF4aW11bV9saW5lX2xlbmd0aH07CiAgICAgICAgJHNlbGYtPltfcnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFnc19dID0gJHJpLT57cnZlcnRpY2FsX3RpZ2h0bmVzc19mbGFnc307CiAgICAgICAgJHNlbGYtPltfaXNfdGVybWluYWxfdGVybmFyeV9dICAgICAgID0gJHJpLT57aXNfdGVybWluYWxfdGVybmFyeX07CiAgICAgICAgJHNlbGYtPltfal90ZXJtaW5hbF9tYXRjaF9dICAgICAgICAgID0gJHJpLT57al90ZXJtaW5hbF9tYXRjaH07CiAgICAgICAgJHNlbGYtPltfZW5kX2dyb3VwX10gICAgICAgICAgICAgICAgID0gJHJpLT57ZW5kX2dyb3VwfTsKICAgICAgICAkc2VsZi0+W19LZW5kX10gICAgICAgICAgICAgICAgICAgICAgPSAkcmktPntLZW5kfTsKICAgICAgICAkc2VsZi0+W19jaV9sZXZlbF9dICAgICAgICAgICAgICAgICAgPSAkcmktPntjaV9sZXZlbH07CiAgICAgICAgJHNlbGYtPltfaW1heF9wYWlyX10gICAgICAgICAgICAgICAgID0gJHJpLT57aW1heF9wYWlyfTsKCiAgICAgICAgJHNlbGYtPltfcmFsaWdubWVudHNfXSA9IFtdOwoKICAgICAgICByZXR1cm4gJHNlbGY7CiAgICB9CgogICAgc3ViIGdldF9qbWF4IHsgcmV0dXJuICRfWzBdLT5bX2ptYXhfXSB9CgogICAgc3ViIGdldF9ydG9rZW5zICAgICAgICB7IHJldHVybiAkX1swXS0+W19ydG9rZW5zX10gfQogICAgc3ViIGdldF9yZmllbGRzICAgICAgICB7IHJldHVybiAkX1swXS0+W19yZmllbGRzX10gfQogICAgc3ViIGdldF9yZmllbGRfbGVuZ3RocyB7IHJldHVybiAkX1swXS0+W19yZmllbGRfbGVuZ3Roc19dIH0KICAgIHN1YiBnZXRfcnBhdHRlcm5zICAgICAgeyByZXR1cm4gJF9bMF0tPltfcnBhdHRlcm5zX10gfQogICAgc3ViIGdldF9pbmRlbnRhdGlvbiAgICB7IHJldHVybiAkX1swXS0+W19pbmRlbnRhdGlvbl9dIH0KICAgIHN1YiBnZXRfS2VuZCAgICAgICAgICAgeyByZXR1cm4gJF9bMF0tPltfS2VuZF9dIH0KICAgIHN1YiBnZXRfY2lfbGV2ZWwgICAgICAgeyByZXR1cm4gJF9bMF0tPltfY2lfbGV2ZWxfXSB9CiAgICBzdWIgZ2V0X2xpc3Rfc2Vxbm8gICAgIHsgcmV0dXJuICRfWzBdLT5bX2xpc3Rfc2Vxbm9fXSB9CgogICAgc3ViIGdldF9pbWF4X3BhaXIgeyByZXR1cm4gJF9bMF0tPltfaW1heF9wYWlyX10gfQoKICAgIHN1YiBzZXRfaW1heF9wYWlyIHsKICAgICAgICBteSAoICRzZWxmLCAkdmFsICkgPSBAXzsKICAgICAgICAkc2VsZi0+W19pbWF4X3BhaXJfXSA9ICR2YWw7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBnZXRfal90ZXJtaW5hbF9tYXRjaCB7CiAgICAgICAgcmV0dXJuICRfWzBdLT5bX2pfdGVybWluYWxfbWF0Y2hfXTsKICAgIH0KCiAgICBzdWIgc2V0X2pfdGVybWluYWxfbWF0Y2ggewogICAgICAgIG15ICggJHNlbGYsICR2YWwgKSA9IEBfOwogICAgICAgICRzZWxmLT5bX2pfdGVybWluYWxfbWF0Y2hfXSA9ICR2YWw7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBnZXRfaXNfdGVybWluYWxfdGVybmFyeSB7CiAgICAgICAgcmV0dXJuICRfWzBdLT5bX2lzX3Rlcm1pbmFsX3Rlcm5hcnlfXTsKICAgIH0KCiAgICBzdWIgZ2V0X2xlYWRpbmdfc3BhY2VfY291bnQgewogICAgICAgIHJldHVybiAkX1swXS0+W19sZWFkaW5nX3NwYWNlX2NvdW50X107CiAgICB9CgogICAgc3ViIGdldF9vdXRkZW50X2xvbmdfbGluZXMgewogICAgICAgIHJldHVybiAkX1swXS0+W19vdXRkZW50X2xvbmdfbGluZXNfXTsKICAgIH0KICAgIHN1YiBnZXRfbGlzdF90eXBlIHsgcmV0dXJuICRfWzBdLT5bX2xpc3RfdHlwZV9dIH0KCiAgICBzdWIgZ2V0X2lzX2hhbmdpbmdfc2lkZV9jb21tZW50IHsKICAgICAgICByZXR1cm4gJF9bMF0tPltfaXNfaGFuZ2luZ19zaWRlX2NvbW1lbnRfXTsKICAgIH0KCiAgICBzdWIgZ2V0X3J2ZXJ0aWNhbF90aWdodG5lc3NfZmxhZ3MgewogICAgICAgIHJldHVybiAkX1swXS0+W19ydmVydGljYWxfdGlnaHRuZXNzX2ZsYWdzX107CiAgICB9CgogICAgc3ViIGdldF9hbGlnbm1lbnQgewogICAgICAgIG15ICggJHNlbGYsICRqICkgPSBAXzsKICAgICAgICByZXR1cm4gJHNlbGYtPltfcmFsaWdubWVudHNfXS0+WyRqXTsKICAgIH0KICAgIHN1YiBnZXRfYWxpZ25tZW50cyB7IHJldHVybiBAeyAkX1swXS0+W19yYWxpZ25tZW50c19dIH0gfQoKICAgIHN1YiBnZXRfY29sdW1uIHsKICAgICAgICAjI215ICggJHNlbGYsICRqICkgPSBAXzsKICAgICAgICBteSAkYWxpZ25tZW50ID0gJF9bMF0tPltfcmFsaWdubWVudHNfXS0+WyAkX1sxXSBdOwogICAgICAgIHJldHVybiB1bmxlc3MgZGVmaW5lZCgkYWxpZ25tZW50KTsKICAgICAgICByZXR1cm4gJGFsaWdubWVudC0+Z2V0X2NvbHVtbigpOwogICAgfQoKICAgIHN1YiBzZXRfYWxpZ25tZW50cyB7CiAgICAgICAgbXkgKCAkc2VsZiwgQGFyZ3MgKSA9IEBfOwogICAgICAgIEB7ICRzZWxmLT5bX3JhbGlnbm1lbnRzX10gfSA9IEBhcmdzOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgY3VycmVudF9maWVsZF93aWR0aCB7CiAgICAgICAgbXkgKCAkc2VsZiwgJGogKSA9IEBfOwogICAgICAgIG15ICRjb2xfaiAgPSAwOwogICAgICAgIG15ICRjb2xfam0gPSAwOwoKICAgICAgICBteSAkYWxpZ25tZW50X2ogPSAkc2VsZi0+W19yYWxpZ25tZW50c19dLT5bJGpdOwogICAgICAgICRjb2xfaiA9ICRhbGlnbm1lbnRfai0+Z2V0X2NvbHVtbigpIGlmIGRlZmluZWQoJGFsaWdubWVudF9qKTsKCiAgICAgICAgaWYgKCAkaiA+IDAgKSB7CiAgICAgICAgICAgIG15ICRhbGlnbm1lbnRfam0gPSAkc2VsZi0+W19yYWxpZ25tZW50c19dLT5bICRqIC0gMSBdOwogICAgICAgICAgICAkY29sX2ptID0gJGFsaWdubWVudF9qbS0+Z2V0X2NvbHVtbigpIGlmIGRlZmluZWQoJGFsaWdubWVudF9qbSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkY29sX2ogLSAkY29sX2ptOwogICAgfQoKICAgIHN1YiBpbmNyZWFzZV9maWVsZF93aWR0aCB7CgogICAgICAgIG15ICggJHNlbGYsICRqLCAkcGFkICkgPSBAXzsKICAgICAgICBteSAkam1heCA9ICRzZWxmLT5bX2ptYXhfXTsKICAgICAgICBmb3JlYWNoICggJGogLi4gJGptYXggKSB7CiAgICAgICAgICAgIG15ICRhbGlnbm1lbnQgPSAkc2VsZi0+W19yYWxpZ25tZW50c19dLT5bJF9dOwogICAgICAgICAgICBpZiAoIGRlZmluZWQoJGFsaWdubWVudCkgKSB7CiAgICAgICAgICAgICAgICAkYWxpZ25tZW50LT5pbmNyZW1lbnRfY29sdW1uKCRwYWQpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgZ2V0X2F2YWlsYWJsZV9zcGFjZV9vbl9yaWdodCB7CiAgICAgICAgbXkgJGptYXggPSAkX1swXS0+W19qbWF4X107CiAgICAgICAgcmV0dXJuICRfWzBdLT5bX21heGltdW1fbGluZV9sZW5ndGhfXSAtICRfWzBdLT5nZXRfY29sdW1uKCRqbWF4KTsKICAgIH0KCiAgICBzdWIgc2V0X2ptYXggeyBteSAoICRzZWxmLCAkdmFsICkgPSBAXzsgJHNlbGYtPltfam1heF9dID0gJHZhbDsgcmV0dXJuIH0KCiAgICBzdWIgc2V0X3J0b2tlbnMgewogICAgICAgIG15ICggJHNlbGYsICR2YWwgKSA9IEBfOwogICAgICAgICRzZWxmLT5bX3J0b2tlbnNfXSA9ICR2YWw7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBzZXRfcmZpZWxkcyB7CiAgICAgICAgbXkgKCAkc2VsZiwgJHZhbCApID0gQF87CiAgICAgICAgJHNlbGYtPltfcmZpZWxkc19dID0gJHZhbDsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgc3ViIHNldF9yZmllbGRfbGVuZ3RocyB7CiAgICAgICAgbXkgKCAkc2VsZiwgJHZhbCApID0gQF87CiAgICAgICAgJHNlbGYtPltfcmZpZWxkX2xlbmd0aHNfXSA9ICR2YWw7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBzZXRfcnBhdHRlcm5zIHsKICAgICAgICBteSAoICRzZWxmLCAkdmFsICkgPSBAXzsKICAgICAgICAkc2VsZi0+W19ycGF0dGVybnNfXSA9ICR2YWw7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBzZXRfbGlzdF90eXBlIHsKICAgICAgICBteSAoICRzZWxmLCAkdmFsICkgPSBAXzsKICAgICAgICAkc2VsZi0+W19saXN0X3R5cGVfXSA9ICR2YWw7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHN1YiBzZXRfaXNfaGFuZ2luZ19zaWRlX2NvbW1lbnQgewogICAgICAgIG15ICggJHNlbGYsICR2YWwgKSA9IEBfOwogICAgICAgICRzZWxmLT5bX2lzX2hhbmdpbmdfc2lkZV9jb21tZW50X10gPSAkdmFsOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgc2V0X2FsaWdubWVudCB7CiAgICAgICAgbXkgKCAkc2VsZiwgJGosICR2YWwgKSA9IEBfOwogICAgICAgICRzZWxmLT5bX3JhbGlnbm1lbnRzX10tPlskal0gPSAkdmFsOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdWIgZ2V0X2VuZF9ncm91cCB7IHJldHVybiAkX1swXS0+W19lbmRfZ3JvdXBfXSB9CgogICAgc3ViIHNldF9lbmRfZ3JvdXAgewogICAgICAgIG15ICggJHNlbGYsICR2YWwgKSA9IEBfOwogICAgICAgICRzZWxmLT5bX2VuZF9ncm91cF9dID0gJHZhbDsKICAgICAgICByZXR1cm47CiAgICB9Cn0KCjE7Cg==</File>
        <File Location="Kernel/cpan-lib/Pod/Strip.pm" Permission="660" Encode="Base64">cGFja2FnZSBQb2Q6OlN0cmlwOwoKdXNlIHdhcm5pbmdzOwp1c2Ugc3RyaWN0OwoKdXNlIGJhc2UgKCdQb2Q6OlNpbXBsZScpOwoKb3VyICRWRVJTSU9OID0gIjEuMDIiOwoKc3ViIG5ldyB7CiAgICBteSAkbmV3ID0gc2hpZnQtPlNVUEVSOjpuZXcoQF8pOwogICAgJG5ldy0+e19jb2RlX2xpbmV9PTA7CiAgICAkbmV3LT5jb2RlX2hhbmRsZXIoCiAgICAgICAgc3ViIHsKICAgICAgICAgICAgIyBBZGQgb3B0aW9uYWwgbGluZSBkaXJlY3RpdmVzCiAgICAgICAgICAgIGlmICgkX1syXS0+e19yZXBsYWNlX3dpdGhfY29tbWVudHN9KSB7CiAgICAgICAgICAgICAgICBpZiAoJF9bMl0tPntfY29kZV9saW5lfSsxPCRfWzFdKSB7CiAgICAgICAgICAgICAgICAgICAgcHJpbnQgeyRfWzJde291dHB1dF9maH19ICgiIyBzdHJpcHBlZCBQT0RcbiIpIHggKCRfWzFdIC0gJF9bMl0tPntfY29kZV9saW5lfSAtMSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJF9bMl0tPntfY29kZV9saW5lfT0kX1sxXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwcmludCB7JF9bMl17b3V0cHV0X2ZofX0gJF9bMF0sIlxuIjsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgfSk7CiAgICByZXR1cm4gJG5ldzsKfQoKCnN1YiByZXBsYWNlX3dpdGhfY29tbWVudHMgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICRzZWxmLT57X3JlcGxhY2Vfd2l0aF9jb21tZW50c30gPSBkZWZpbmVkICRfWzBdID8gJF9bMF0gOiAxOwp9CgoKMTsKX19FTkRfXwoKPXBvZAoKPWhlYWQxIE5BTUUKClBvZDo6U3RyaXAgLSBSZW1vdmUgUE9EIGZyb20gUGVybCBjb2RlCgo9aGVhZDEgU1lOT1BTSVMKCiAgICB1c2UgUG9kOjpTdHJpcDsKCiAgICBteSAkcD1Qb2Q6OlN0cmlwLT5uZXc7ICAgICAgICAgICAgICAjIGNyZWF0ZSBwYXJzZXIKICAgIG15ICRwb2RsZXNzOyAgICAgICAgICAgICAgICAgICAgICAgICMgc2V0IG91dHB1dCBzdHJpbmcKICAgICRwLT5vdXRwdXRfc3RyaW5nKFwkcG9kbGVzcyk7ICAgICAgICMgc2VlIFBvZDo6U2ltcGxlCiAgICAkcC0+cGFyc2Vfc3RyaW5nX2RvY3VtZW50KCRjb2RlKTsgICAjIG9yIHNvbWUgb3RoZXIgcGFyc2luZyBtZXRob2QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgZnJvbSBQb2Q6OlNpbXBsZQogICAgIyAkcG9kbGVzcyB3aWxsIG5vdyBjb250YWluIGNvZGUgd2l0aG91dCBhbnkgUE9ECgoKPWhlYWQxIERFU0NSSVBUSU9OCgpQb2Q6OlN0cmlwIGlzIGEgc3ViY2xhc3Mgb2YgUG9kOjpTaW1wbGUgdGhhdCBzdHJpcHMgYWxsIFBPRCBmcm9tIFBlcmwgQ29kZS4KCj1oZWFkMSBNRVRIT0RTCgpBbGwgbWV0aG9kcyBiZXNpZGVzIHRob3NlIGxpc3RlZCBoZXJlIGFyZSBpbmhlcml0ZWQgZnJvbSBQb2Q6OlNpbXBsZQoKPWhlYWQyIG5ldwoKR2VuZXJhdGUgYSBuZXcgcGFyc2VyIG9iamVjdC4KCj1oZWFkMiByZXBsYWNlX3dpdGhfY29tbWVudHMKCkNhbGwgdGhpcyBtZXRob2Qgd2l0aCBhIHRydWUgYXJndW1lbnQgdG8gcmVwbGFjZSBQT0Qgd2l0aCBjb21tZW50cyAobG9va2luZyBsaWtlICIjIHN0cmlwcGVkIFBPRCIpIGluc3RlYWQgb2Ygc3RyaXBwaW5nIGl0LgoKVGhpcyBoYXMgdGhlIGVmZmVjdCB0aGF0IGxpbmUgbnVtYmVycyBnZXQgcmVwb3J0ZWQgY29ycmVjdGx5IGluIGVycm9yCm1lc3NhZ2VzIGV0Yy4KCj1oZWFkMSBBVVRIT1IKClRob21hcyBLbGF1c25lciwgQzw8IDxkb21tQGNwYW4ub3JnPiA+PgoKPWhlYWQxIEJVR1MKClBsZWFzZSByZXBvcnQgYW55IGJ1Z3Mgb3IgZmVhdHVyZSByZXF1ZXN0cyB0bwpDPGJ1Zy1wb2Qtc3RyaXBAcnQuY3Bhbi5vcmc+LCBvciB0aHJvdWdoIHRoZSB3ZWIgaW50ZXJmYWNlIGF0Ckw8aHR0cDovL3J0LmNwYW4ub3JnPi4gIEkgd2lsbCBiZSBub3RpZmllZCwgYW5kIHRoZW4geW91J2xsIGF1dG9tYXRpY2FsbHkKYmUgbm90aWZpZWQgb2YgcHJvZ3Jlc3Mgb24geW91ciBidWcgYXMgSSBtYWtlIGNoYW5nZXMuCgo9aGVhZDEgQ09QWVJJR0hUICYgTElDRU5TRQoKQ29weXJpZ2h0IDIwMDQsIDIwMDUsIDIwMDYgVGhvbWFzIEtsYXVzbmVyLCBBbGwgUmlnaHRzIFJlc2VydmVkLgoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgUGVybCBpdHNlbGYuCgo9Y3V0Cgo=</File>
        <File Location="Kernel/TidyAll/OTOBO.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6Ok9UT0JPOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdjUuMjQ7CnVzZSB1dGY4OwoKdXNlIEZpbGU6OkJhc2VuYW1lIHF3KGRpcm5hbWUpOwp1c2UgbGliIGRpcm5hbWUoX19GSUxFX18pIC4gJy9QbHVnaW4vT1RPQk8nOyAgICAjIEZpbmQgb3VyIFBlcmw6OkNyaXRpYyBwb2xpY2llcwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoQ29kZTo6VGlkeUFsbCk7CgojIGNvcmUgbW9kdWxlcwp1c2UgRmlsZTo6QmFzZW5hbWU7CnVzZSBGaWxlOjpUZW1wICgpOwp1c2UgSU86OkZpbGU7CnVzZSBQT1NJWCAiOnN5c193YWl0X2giOwp1c2UgVGVybTo6QU5TSUNvbG9yIHF3KGNvbG9yZWQpOwp1c2UgVGltZTo6SGlSZXMgcXcoc2xlZXApOwoKIyBDUEFOIG1vZHVsZXMsIFJlcXVpcmUgc29tZSBuZWVkZWQgbW9kdWxlcyBoZXJlIGZvciBjbGFyaXR5IC8gYmV0dGVyIGVycm9yIG1lc3NhZ2VzLgp1c2UgQ29kZTo6VGlkeUFsbCAwLjU2Owp1c2UgUGVybDo6Q3JpdGljOwp1c2UgUGVybDo6VGlkeTsKCm91ciAkRnJhbWV3b3JrVmVyc2lvbk1ham9yID0gMDsKb3VyICRGcmFtZXdvcmtWZXJzaW9uTWlub3IgPSAwOwpvdXIgJFRoaXJkcGFydHlNb2R1bGUgICAgICA9IDA7Cm91ciBARmlsZUxpc3QgICAgICAgICAgICAgID0gKCk7ICAgICMgYWxsIGZpbGVzIGluIGN1cnJlbnQgcmVwb3NpdG9yeQoKIyBoYW5kbGUgY29sb3JpbmcKIyAgIGVudmlyb25tZW50IHZhcmlhYmxlIEFOU0lfQ09MT1JTX0RJU0FCTEVEIGlzIHVzZWQgYnkgVGVybTo6QU5TSUNvbG9yCmlmICggISgtdCBTVERPVVQpIHx8ICRFTlZ7T1RPQk9DT0RFUE9MSUNZX05PQ09MT1J9ICkgewogICAgJEVOVntBTlNJX0NPTE9SU19ESVNBQkxFRH0gPSAxOwp9CgpzdWIgbmV3X2Zyb21fY29uZl9maWxlIHsKICAgIG15ICggJENsYXNzLCAkQ29uZmlnRmlsZSwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZiA9ICRDbGFzcy0+U1VQRVI6Om5ld19mcm9tX2NvbmZfZmlsZSgKICAgICAgICAkQ29uZmlnRmlsZSwKICAgICAgICAlUGFyYW0sCiAgICAgICAgbm9fY2FjaGUgICA9PiAxLAogICAgICAgIG5vX2JhY2t1cHMgPT4gMSwKICAgICk7CgogICAgIyBSZXNldCB3aGVuIGEgbmV3IG9iamVjdCBpcyBjcmVhdGVkCiAgICAkRnJhbWV3b3JrVmVyc2lvbk1ham9yID0gMDsKICAgICRGcmFtZXdvcmtWZXJzaW9uTWlub3IgPSAwOwogICAgJFRoaXJkcGFydHlNb2R1bGUgICAgICA9IDA7CiAgICBARmlsZUxpc3QgICAgICAgICAgICAgID0gKCk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgRGV0ZXJtaW5lRnJhbWV3b3JrVmVyc2lvbkZyb21EaXJlY3RvcnkgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEZpcnN0IGNoZWNrIGlmIHdlIGhhdmUgYW4gT1RPQk8gZGlyZWN0b3J5LCB1c2UgUkVMRUFTRSBpbmZvIHRoZW4uCiAgICBpZiAoIC1yICRTZWxmLT57cm9vdF9kaXJ9IC4gJy9SRUxFQVNFJyApIHsKICAgICAgICBteSAkRmlsZUhhbmRsZSA9IElPOjpGaWxlLT5uZXcoICRTZWxmLT57cm9vdF9kaXJ9IC4gJy9SRUxFQVNFJywgJ3InICk7CiAgICAgICAgbXkgQENvbnRlbnQgICAgPSAkRmlsZUhhbmRsZS0+Z2V0bGluZXMoKTsKCiAgICAgICAgbXkgKCAkVmVyc2lvbk1ham9yLCAkVmVyc2lvbk1pbm9yICkgPSAkQ29udGVudFsxXSA9fiBte15WRVJTSU9OXHMrPVxzKyhcZCspXC4oXGQrKVwufXhtczsKICAgICAgICAkRnJhbWV3b3JrVmVyc2lvbk1ham9yID0gJFZlcnNpb25NYWpvcjsKICAgICAgICAkRnJhbWV3b3JrVmVyc2lvbk1pbm9yID0gJFZlcnNpb25NaW5vcjsKICAgIH0KICAgIGVsc2UgewogICAgICAgICMgTm93IGNoZWNrIGlmIHdlIGhhdmUgYSBtb2R1bGUgZGlyZWN0b3J5IHdpdGggYW4gU09QTSBmaWxlIGluIGl0LgogICAgICAgIG15IEBTT1BNRmlsZXMgPSBnbG9iICRTZWxmLT57cm9vdF9kaXJ9IC4gIi8qLnNvcG0iOwogICAgICAgIGlmIChAU09QTUZpbGVzKSB7CgogICAgICAgICAgICAjIFVzZSB0aGUgaGlnaGVzdCBmcmFtZXdvcmsgdmVyc2lvbiBmcm9tIHRoZSBmaXJzdCBTT1BNIGZpbGUuCiAgICAgICAgICAgIG15ICRGaWxlSGFuZGxlID0gSU86OkZpbGUtPm5ldyggJFNPUE1GaWxlc1swXSwgJ3InICk7CiAgICAgICAgICAgIG15IEBDb250ZW50ICAgID0gJEZpbGVIYW5kbGUtPmdldGxpbmVzKCk7CiAgICAgICAgICAgIGZvciBteSAkTGluZSAoQENvbnRlbnQpIHsKICAgICAgICAgICAgICAgIGlmICggJExpbmUgPX4gbXsgPEZyYW1ld29yayAoPzogWyBdKyBbXjw+XSogKT8gPiB9eG1zICkgewogICAgICAgICAgICAgICAgICAgIG15ICggJFZlcnNpb25NYWpvciwgJFZlcnNpb25NaW5vciApID0gJExpbmUgPX4gbXsgPEZyYW1ld29yayAoPzogWyBdKyBbXjw+XSogKT8gPiAoXGQrKSBcLiAoXGQrKSBcLiBbXjwqXSsgPFwvRnJhbWV3b3JrPiB9eG1zOwogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJFZlcnNpb25NYWpvciA+ICRGcmFtZXdvcmtWZXJzaW9uTWFqb3IKICAgICAgICAgICAgICAgICAgICAgICAgfHwgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFZlcnNpb25NYWpvciA9PSAkRnJhbWV3b3JrVmVyc2lvbk1ham9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkVmVyc2lvbk1pbm9yID4gJEZyYW1ld29ya1ZlcnNpb25NaW5vcgogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRGcmFtZXdvcmtWZXJzaW9uTWFqb3IgPSAkVmVyc2lvbk1ham9yOwogICAgICAgICAgICAgICAgICAgICAgICAkRnJhbWV3b3JrVmVyc2lvbk1pbm9yID0gJFZlcnNpb25NaW5vcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRMaW5lID1+IG17PFZlbmRvcj59ICYmICRMaW5lICF+IG17Um90aGVyIE9TU30gKSB7CiAgICAgICAgICAgICAgICAgICAgJFRoaXJkcGFydHlNb2R1bGUgPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkRnJhbWV3b3JrVmVyc2lvbk1ham9yKSB7CiAgICAgICAgcHJpbnQgIkZvdW5kIE9UT0JPIHZlcnNpb24gJEZyYW1ld29ya1ZlcnNpb25NYWpvci4kRnJhbWV3b3JrVmVyc2lvbk1pbm9yLlxuIjsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHByaW50ICJDb3VsZCBub3QgZGV0ZXJtaW5lIE9UT0JPIHZlcnNpb24gKGFzc3VtaW5nIGxhdGVzdCB2ZXJzaW9uKSFcbiI7CiAgICB9CgogICAgaWYgKCRUaGlyZHBhcnR5TW9kdWxlKSB7CiAgICAgICAgcHJpbnQKICAgICAgICAgICAgIlRoaXMgc2VlbXMgdG8gYmUgYSBtb2R1bGUgbm90IGNvcHlyaWdodGVkIGJ5IFJvdGhlciBPU1MgR21iSC4gRmlsZSBjb3B5cmlnaHQgd2lsbCBub3QgYmUgY2hhbmdlZC5cbiI7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBwcmludAogICAgICAgICAgICAiVGhpcyBtb2R1bGUgc2VlbXMgdG8gYmUgY29weXJpZ2h0ZWQgYnkgUm90aGVyIE9TUyBHbWJILiBGaWxlIGNvcHlyaWdodCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgYXNzaWduZWQgdG8gUm90aGVyIE9TUyBHbWJILlxuIjsKICAgICAgICBwcmludAogICAgICAgICAgICAiICBJZiB0aGlzIGlzIG5vdCBjb3JyZWN0LCB5b3UgY2FuIGNoYW5nZSB0aGUgPFZlbmRvcj4gdGFnIGluIHlvdXIgU09QTS5cbiI7CiAgICB9CgogICAgcmV0dXJuOwp9CgojCiMgUHJvY2VzcyBhIGxpc3Qgb2YgZmlsZSBwYXRocyBpbiBwYXJhbGxlbCB3aXRoIGZvcmtpbmcgKGlmIG5lZWRlZCkuCiMKc3ViIFByb2Nlc3NQYXRoc1BhcmFsbGVsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFByb2Nlc3NlcyA9ICRQYXJhbXtQcm9jZXNzZXN9IC8vICRFTlZ7T1RPQk9DT0RFUE9MSUNZX1BST0NFU1NFU30gLy8gNjsKICAgIG15IEBGaWxlcyAgICAgPSBAeyAkUGFyYW17RmlsZVBhdGhzfSAvLyBbXSB9OwoKICAgICMgTm8gcGFyYWxsZWwgcHJvY2Vzc2luZyBuZWVkZWQ6IGV4ZWN1dGUgZGlyZWN0bHkuCiAgICBpZiAoICRQcm9jZXNzZXMgPD0gMSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPnByb2Nlc3NfcGF0aHMoQEZpbGVzKTsKICAgIH0KCiAgICAjIFBhcmFsbGVsIHByb2Nlc3NpbmcuIFdlIGNodW5rIHRoZSBkYXRhIGFuZCBleGVjdXRlIHRoZSBjaHVua3MgaW4gcGFyYWxsZWwuCiAgICAjCiAgICAjIFRpZHlBbGwncyBidWlsdC1pbiAtLWpvYnMgZmxhZyBpcyBub3QgdXNlZCwgaXQgc2VlbXMgdG8gYmUgd2F5IHRvbyBzbG93LAogICAgIyAgIHBlcmhhcHMgYmVjYXVzZSBvZiBmb3JraW5nIGZvciBlYWNoIHNpbmdsZSBqb2IuCgogICAgbXkgJUFjdGl2ZUNoaWxkUElEOwoKICAgIG15ICRTdG9wID0gc3ViIHsKCiAgICAgICAgIyBQcm9wYWdhdGUga2lsbCBzaWduYWwgdG8gYWxsIGZvcmtzCiAgICAgICAgZm9yIG15ICRQSUQgKCBzb3J0IGtleXMgJUFjdGl2ZUNoaWxkUElEICkgewogICAgICAgICAgICBraWxsIDksICRQSUQ7CiAgICAgICAgfQoKICAgICAgICBwcmludCAiU3RvcHBlZCBieSB1c2VyIVxuIjsKICAgICAgICByZXR1cm4gMTsKICAgIH07CgogICAgbG9jYWwgJFNJR3tJTlR9ICA9IHN1YiB7ICRTdG9wLT4oKSB9OwogICAgbG9jYWwgJFNJR3tURVJNfSA9IHN1YiB7ICRTdG9wLT4oKSB9OwoKICAgIG15IEBHbG9iYWxSZXN1bHRzOwoKICAgIHByaW50ICJPVE9CT0NvZGVQb2xpY3kgd2lsbCB1c2UgdXAgdG8gJFByb2Nlc3NlcyBwYXJhbGxlbCBwcm9jZXNzZXMuXG4iOwoKICAgICMgVG8gc3RvcmUgcmVzdWx0cyBmcm9tIGNoaWxkIHByb2Nlc3Nlcy4KICAgIG15ICRUZW1wRGlyZWN0b3J5ID0gRmlsZTo6VGVtcC0+bmV3ZGlyKCkgfHwgZGllICJDb3VsZCBub3QgY3JlYXRlIHRlbXBvcmFyeSBkaXJlY3Rvcnk6ICQhIjsKCiAgICAjIHNwbGl0IGNodW5rcyBvZiBmaWxlcyBmb3IgZXZlcnkgcHJvY2VzcwogICAgbXkgQENodW5rczsKICAgIG15ICRJdGVtQ291bnQgPSAwOwoKICAgIGZvciBteSAkRmlsZSAoQEZpbGVzKSB7CiAgICAgICAgcHVzaCBAeyAkQ2h1bmtzWyAkSXRlbUNvdW50KysgJSAkUHJvY2Vzc2VzIF0gfSwgJEZpbGU7CiAgICB9CgogICAgQ0hVTks6CiAgICBmb3IgbXkgJENodW5rIChAQ2h1bmtzKSB7CgogICAgICAgICMgQ3JlYXRlIGEgY2hpbGQgcHJvY2Vzcy4KICAgICAgICBteSAkUElEID0gZm9yazsKCiAgICAgICAgIyBDaGlsZCBwcm9jZXNzIGNvdWxkIG5vdCBiZSBjcmVhdGVkLgogICAgICAgIGlmICggJFBJRCA8IDAgKSB7CiAgICAgICAgICAgIGRpZSAiVW5hYmxlIHRvIGZvcmsgYSBjaGlsZCBwcm9jZXNzIGZvciB0aWRpbmchIjsKICAgICAgICB9CgogICAgICAgICMgQ2hpbGQgcHJvY2Vzcy4KICAgICAgICBpZiAoICEkUElEICkgewoKICAgICAgICAgICAgbXkgQFJlc3VsdHMgPSAkU2VsZi0+cHJvY2Vzc19wYXRocyggQHskQ2h1bmt9ICk7CgogICAgICAgICAgICBteSAkQ2hpbGRQSUQgPSAkJDsKICAgICAgICAgICAgU3RvcmFibGU6OnN0b3JlKCBcQFJlc3VsdHMsICIkVGVtcERpcmVjdG9yeS8kQ2hpbGRQSUQudG1wIiApOwoKICAgICAgICAgICAgIyBDbG9zZSBjaGlsZCBwcm9jZXNzIGF0IHRoZSBlbmQuCiAgICAgICAgICAgIGV4aXQgMDsKICAgICAgICB9CgogICAgICAgICMgUGFyZW50IHByb2Nlc3MuCiAgICAgICAgJEFjdGl2ZUNoaWxkUElEeyRQSUR9ID0gewogICAgICAgICAgICBQSUQgPT4gJFBJRCwKICAgICAgICB9OwogICAgfQoKICAgICMgQ2hlY2sgdGhlIHN0YXR1cyBvZiBhbGwgY2hpbGQgcHJvY2Vzc2VzIGV2ZXJ5IDAuMSBzZWNvbmRzLgogICAgIyBXYWl0IGZvciBhbGwgY2hpbGQgcHJvY2Vzc2VzIHRvIGJlIGZpbmlzaGVkLgogICAgV0FJVDoKICAgIHdoaWxlICgxKSB7CgogICAgICAgIGxhc3QgV0FJVCBpZiAhJUFjdGl2ZUNoaWxkUElEOwogICAgICAgIHNsZWVwIDAuMTsKCiAgICAgICAgUElEOgogICAgICAgIGZvciBteSAkUElEICggc29ydCBrZXlzICVBY3RpdmVDaGlsZFBJRCApIHsKCiAgICAgICAgICAgIG15ICRXYWl0UmVzdWx0ID0gd2FpdHBpZCggJFBJRCwgV05PSEFORyApOwoKICAgICAgICAgICAgZGllICJDaGlsZCBwcm9jZXNzICckUElEJyBleGl0ZWQgd2l0aCBlcnJvcnM6ICQ/IiBpZiAkV2FpdFJlc3VsdCA9PSAtMTsKCiAgICAgICAgICAgIGlmICgkV2FpdFJlc3VsdCkgewoKICAgICAgICAgICAgICAgIG15ICRUZW1wRmlsZSA9ICIkVGVtcERpcmVjdG9yeS8kUElELnRtcCI7CiAgICAgICAgICAgICAgICBteSAkUmVzdWx0czsKCiAgICAgICAgICAgICAgICBpZiAoICEtZSAkVGVtcEZpbGUgKSB7CiAgICAgICAgICAgICAgICAgICAgZGllICJDb3VsZCBub3QgcmVhZCByZXN1bHRzIG9mIHByb2Nlc3MgJFBJRC5cbiI7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJFJlc3VsdHMgPSBTdG9yYWJsZTo6cmV0cmlldmUoJFRlbXBGaWxlKTsKICAgICAgICAgICAgICAgIHVubGluayAkVGVtcEZpbGU7CgogICAgICAgICAgICAgICAgIyBKb2luIHRoZSBjaGlsZCByZXN1bHRzLgogICAgICAgICAgICAgICAgQEdsb2JhbFJlc3VsdHMgPSAoIEBHbG9iYWxSZXN1bHRzLCBAeyAkUmVzdWx0cyB8fCBbXSB9ICk7CgogICAgICAgICAgICAgICAgZGVsZXRlICRBY3RpdmVDaGlsZFBJRHskUElEfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gQEdsb2JhbFJlc3VsdHM7Cn0KCiMKIyBQcmludCBhIHVzZWZ1bCBzdW1tYXJ5IGFuZCBkaWUgaW4gY2FzZSBvZiBlcnJvcnMuCiMKc3ViIEhhbmRsZVJlc3VsdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSBAR2xvYmFsUmVzdWx0cyA9IEB7ICRQYXJhbXtSZXN1bHRzfSAvLyBbXSB9OwoKICAgIG15IEBFcnJvclJlc3VsdHMgPSBncmVwIHsgJF8tPmVycm9yKCkgfSBAR2xvYmFsUmVzdWx0czsKICAgIGlmIChARXJyb3JSZXN1bHRzKSB7CiAgICAgICAgbXkgJEVycm9yQ291bnQgICA9IHNjYWxhcihARXJyb3JSZXN1bHRzKTsKICAgICAgICBteSAkRXJyb3JNZXNzYWdlID0gc3ByaW50ZigKICAgICAgICAgICAgX1JlcGxhY2VDb2xvclRhZ3MoIlxuPHJlZD5FcnJvcjogJWQgZmlsZShzKSBkaWQgbm90IHBhc3MgdmFsaWRhdGlvbi48L3JlZD5cbiIpLAogICAgICAgICAgICAkRXJyb3JDb3VudCwKICAgICAgICApOwogICAgICAgIGlmICggJEVycm9yQ291bnQgPCAxMCApIHsKICAgICAgICAgICAgZm9yIG15ICRFcnJvciAoQEVycm9yUmVzdWx0cykgewogICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiIC0gIiAuICRFcnJvci0+cGF0aCgpIC4gIlxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBkaWUgIiRFcnJvck1lc3NhZ2VcbiI7CiAgICB9CgogICAgbXkgQFRpZGllZFJlc3VsdHMgPSBncmVwIHsgJF8tPnN0YXRlKCkgZXEgJ3RpZGllZCcgfSBAR2xvYmFsUmVzdWx0czsKICAgIGlmIChAVGlkaWVkUmVzdWx0cykgewogICAgICAgIHByaW50ZigKICAgICAgICAgICAgX1JlcGxhY2VDb2xvclRhZ3MoIlxuPGdyZWVuPlZhbGlkYXRpb24gZmluaXNoZWQsPC9ncmVlbj4gPHllbGxvdz4lZCBmaWxlKHMpIHdlcmUgdGlkaWVkLjwveWVsbG93PlxuIiksCiAgICAgICAgICAgIHNjYWxhcihAVGlkaWVkUmVzdWx0cyksCiAgICAgICAgKTsKCiAgICB9CiAgICBlbHNlIHsKICAgICAgICBwcmludCBfUmVwbGFjZUNvbG9yVGFncygiXG48Z3JlZW4+VmFsaWRhdGlvbiBmaW5pc2hlZCwgbm8gcHJvYmxlbXMgZm91bmQuPC9ncmVlbj5cbiIpOwogICAgfQoKICAgIHJldHVybiAxOwp9CgojCiMgR2V0IGEgbGlzdCAoYWxtb3N0KSBhbGwgcmVsYXRpdmUgZmlsZSBwYXRocyBmcm9tIHRoZSByb290IGRpcmVjdG9yeS4gVGhpcyBsaXN0IGlzIHVzZWQgaW4gc29tZSBwbHVnaW5zIHRvIG1ha2UgdmFsaWRhdGlvbiBkZWNpc2lvbnMsCiMgICBub3QgZm9yIHRoZSBhY3R1YWwgZGVjaXNpb24gd2hpY2ggZmlsZXMgYXJlIHRvIGJlIHZhbGlkYXRlZC4KIwpzdWIgR2V0RmlsZUxpc3RGcm9tRGlyZWN0b3J5IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBPbmx5IHJ1biBvbmNlLgogICAgcmV0dXJuIGlmIEBGaWxlTGlzdDsKCiAgICBARmlsZUxpc3QgPSAkU2VsZi0+RmluZEZpbGVzSW5EaXJlY3RvcnkoIERpcmVjdG9yeSA9PiAkU2VsZi0+e3Jvb3RfZGlyfSApOwoKICAgIHJldHVybjsKfQoKIwojIEdldCBhIGxpc3Qgb2YgYWxsIHJlbGF0aXZlIGZpbGUgcGF0aHMgaW4gYSBkaXJlY3Rvcnkgd2l0aCBzb21lIGdsb2JhbCBpZ25vcmVzIGZvciBzcGVlZCdzIHNha2UuCiMKc3ViIEZpbmRGaWxlc0luRGlyZWN0b3J5IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJERpcmVjdG9yeSA9ICRQYXJhbXtEaXJlY3Rvcnl9OwoKICAgIG15IEBGaWxlczsKCiAgICBteSAkV2FudGVkID0gc3ViIHsKCiAgICAgICAgIyBTa2lwIG5vbi1yZWd1bGFyIGZpbGVzIGFuZCBkaXJlY3Rvcmllcy4KICAgICAgICByZXR1cm4gaWYgKCAhLWYgJEZpbGU6OkZpbmQ6Om5hbWUgKTsKCiAgICAgICAgIyBBbHNvIHNraXAgc3ltYm9saWMgbGlua3MsIFRpZHlBbGwgZG9lcyBub3QgbGlrZSB0aGVtLgogICAgICAgIHJldHVybiBpZiAoIC1sICRGaWxlOjpGaW5kOjpuYW1lICk7CgogICAgICAgICMgU29tZSBnbG9iYWwgaGFyZCBpZ25vcmVzIHRoYXQgYXJlIG1lYW50IHRvIHNwZWVkIHVwIHRoZSBsb2FkaW5nIHByb2Nlc3MsCiAgICAgICAgIyAgIGFzIGFwcGx5aW5nIHRoZSBUaWR5QWxsIGlnbm9yZS9zZWxlY3QgcnVsZXMgY2FuIGJlIHF1aXRlIHNsb3cuCiAgICAgICAgcmV0dXJuIGlmICRGaWxlOjpGaW5kOjpuYW1lID1+IG17L1wuZ2l0L307CiAgICAgICAgcmV0dXJuIGlmICRGaWxlOjpGaW5kOjpuYW1lID1+IG17L1wudGlkeWFsbC5kL307CiAgICAgICAgcmV0dXJuIGlmICRGaWxlOjpGaW5kOjpuYW1lID1+IG17L1wudnNjb2RlL307CiAgICAgICAgcmV0dXJuIGlmICRGaWxlOjpGaW5kOjpuYW1lID1+IG17L25vZGVfbW9kdWxlcy99OwogICAgICAgIHJldHVybiBpZiAkRmlsZTo6RmluZDo6bmFtZSA9fiBtey9qcy1jYWNoZS99OwogICAgICAgIHJldHVybiBpZiAkRmlsZTo6RmluZDo6bmFtZSA9fiBtey9jc3MtY2FjaGUvfTsKICAgICAgICByZXR1cm4gaWYgJEZpbGU6OkZpbmQ6Om5hbWUgPX4gbXsvdmFyL3RtcC99ICYmICRGaWxlOjpGaW5kOjpuYW1lICF+IG17LipcLnNhbXBsZSR9OwogICAgICAgIHJldHVybiBpZiAkRmlsZTo6RmluZDo6bmFtZSA9fiBtey92YXIvcHVibGljL2Rpc3QvfTsKCiAgICAgICAgcHVzaCBARmlsZXMsIEZpbGU6OlNwZWMtPmFiczJyZWwoICRGaWxlOjpGaW5kOjpuYW1lLCAkU2VsZi0+e3Jvb3RfZGlyfSApOwogICAgfTsKCiAgICBGaWxlOjpGaW5kOjpmaW5kKAogICAgICAgICRXYW50ZWQsCiAgICAgICAgJERpcmVjdG9yeSwKICAgICk7CgogICAgcmV0dXJuIEBGaWxlczsKfQoKIwojIEZpbHRlciByZWxhdGl2ZSBmaWxlIHBhdGhzIGZvciBvbmx5IHRoZSBmaWxlcyB0aGF0IGFyZSBtYXRjaGVkIGJ5IGF0IGxlYXN0IG9uZSBwbHVnaW4uCiMKc3ViIEZpbHRlck1hdGNoZWRGaWxlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBncmVwIHsgJFNlbGYtPnBsdWdpbnNfZm9yX3BhdGgoJF8pIH0gQHsgJFBhcmFte0ZpbGVzfSB9Owp9CgpzdWIgX1JlcGxhY2VDb2xvclRhZ3MgewogICAgbXkgKCRUZXh0KSA9IEBfOwoKICAgICRUZXh0IC8vPSAnJzsKCiAgICAkVGV4dCA9fiBzezwoZ3JlZW58eWVsbG93fHJlZCk+KC4qPyk8L1wxPn17Y29sb3JlZCgkMiwgJDEpfWdzbXhlOwoKICAgIHJldHVybiAkVGV4dDsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/OTOBO/Git/PreCommit.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6Ok9UT0JPOjpHaXQ6OlByZUNvbW1pdDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCj1oZWFkMSBTWU5PUFNJUwoKVGhpcyBjb21taXQgaG9vayBsb2FkcyB0aGUgT1RPQk8gdmVyc2lvbiBvZiBDb2RlOjpUaWR5QWxsCndpdGggdGhlIGN1c3RvbSBwbHVnaW5zLCBleGVjdXRlcyBpdCBmb3IgYW55IG1vZGlmaWVkIGZpbGVzCmFuZCByZXR1cm5zIGEgY29ycmVzcG9uZGluZyBzdGF0dXMgY29kZS4KCj1jdXQKCnVzZSBDd2Q7CnVzZSBGaWxlOjpTcGVjOwp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgQ29kZTo6VGlkeUFsbDsKdXNlIElQQzo6U3lzdGVtOjpTaW1wbGUgcXcoY2FwdHVyZXggcnVuKTsKdXNlIFRyeTo6VGlueTsKdXNlIFRpZHlBbGw6Ok9UT0JPOwp1c2UgTW9vOwoKc3ViIFJ1biB7CiAgICBteSAkU2VsZiA9IEBfOwoKICAgIHByaW50ICJPVE9CT0NvZGVQb2xpY3kgY29tbWl0IGhvb2sgc3RhcnRpbmcuLi5cbiI7CgogICAgbXkgJEVycm9yTWVzc2FnZTsKCiAgICB0cnkgewogICAgICAgICMgRmluZCBjb25mIGZpbGUgYXQgZ2l0IHJvb3QKICAgICAgICBteSAkUm9vdERpciA9IGNhcHR1cmV4KCAnZ2l0JywgInJldi1wYXJzZSIsICItLXNob3ctdG9wbGV2ZWwiICk7CiAgICAgICAgY2hvbXAoJFJvb3REaXIpOwoKICAgICAgICAjIEdhdGhlciBmaWxlIHBhdGhzIHRvIGJlIGNvbW1pdHRlZAogICAgICAgIG15ICRPdXRwdXQgPSBjYXB0dXJleCggJ2dpdCcsICJzdGF0dXMiLCAiLS1wb3JjZWxhaW4iICk7CgogICAgICAgICMgRmV0Y2ggb25seSBzdGFnZWQgZmlsZXMgdGhhdCB3aWxsIGJlIGNvbW1pdHRlZC4KICAgICAgICBteSBAQ2hhbmdlZEZpbGVzID0gZ3JlcCB7IC1mICYmICEtbCB9ICggJE91dHB1dCA9fiAvXltNQV0rXHMrKC4qKS9nbSApOwogICAgICAgIHB1c2ggQENoYW5nZWRGaWxlcywgZ3JlcCB7IC1mICYmICEtbCB9ICggJE91dHB1dCA9fiAvXlxzKlJNPytccysoLio/KVxzKy0+XHMrKC4qKS9nbSApOwogICAgICAgIHJldHVybiBpZiAhQENoYW5nZWRGaWxlczsKCiAgICAgICAgIyBBbHdheXMgaW5jbHVkZSBhbGwgU09QTSBmaWxlcyB0byB2ZXJpZnkgdGhlIGZpbGUgbGlzdC4KICAgICAgICBmb3IgbXkgJFNPUE1GaWxlICggbWFwIHsgRmlsZTo6U3BlYy0+YWJzMnJlbCggJF8sICRSb290RGlyICkgfSBnbG9iKCIkUm9vdERpci8qLnNvcG0iKSApIHsKICAgICAgICAgICAgaWYgKCAhZ3JlcCB7ICRfIGVxICRTT1BNRmlsZSB9IEBDaGFuZ2VkRmlsZXMgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBDaGFuZ2VkRmlsZXMsICRTT1BNRmlsZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBGaW5kIE9UT0JPQ29kZVBvbGljeSBjb25maWd1cmF0aW9uCiAgICAgICAgbXkgJFNjcmlwdERpcmVjdG9yeTsKICAgICAgICBpZiAoIC1sICQwICkgewogICAgICAgICAgICAkU2NyaXB0RGlyZWN0b3J5ID0gZGlybmFtZSggcmVhZGxpbmsoJDApICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2NyaXB0RGlyZWN0b3J5ID0gZGlybmFtZSgkMCk7CiAgICAgICAgfQogICAgICAgIG15ICRDb25maWdGaWxlID0gJFNjcmlwdERpcmVjdG9yeSAuICcvLi4vdGlkeWFsbHJjJzsKCiAgICAgICAgbXkgJFRpZHlBbGwgPSBUaWR5QWxsOjpPVE9CTy0+bmV3X2Zyb21fY29uZl9maWxlKAogICAgICAgICAgICAkQ29uZmlnRmlsZSwKICAgICAgICAgICAgY2hlY2tfb25seSA9PiAxLAogICAgICAgICAgICBtb2RlICAgICAgID0+ICdjb21taXQnLAogICAgICAgICAgICByb290X2RpciAgID0+ICRSb290RGlyLAogICAgICAgICAgICBkYXRhX2RpciAgID0+IEZpbGU6OlNwZWMtPnRtcGRpcigpLAogICAgICAgICk7CiAgICAgICAgJFRpZHlBbGwtPkRldGVybWluZUZyYW1ld29ya1ZlcnNpb25Gcm9tRGlyZWN0b3J5KCk7CiAgICAgICAgJFRpZHlBbGwtPkdldEZpbGVMaXN0RnJvbURpcmVjdG9yeSgpOwoKICAgICAgICBteSBAQ2hlY2tSZXN1bHRzID0gJFRpZHlBbGwtPlByb2Nlc3NQYXRoc1BhcmFsbGVsKAogICAgICAgICAgICBGaWxlUGF0aHMgPT4gWyBtYXAgeyIkUm9vdERpci8kXyJ9IEBDaGFuZ2VkRmlsZXMgXSwKICAgICAgICApOwoKICAgICAgICAkVGlkeUFsbC0+SGFuZGxlUmVzdWx0cygKICAgICAgICAgICAgUmVzdWx0cyA9PiBcQENoZWNrUmVzdWx0cywKICAgICAgICApOwogICAgfQogICAgY2F0Y2ggewogICAgICAgIG15ICRFeGNlcHRpb24gPSAkXzsKICAgICAgICBkaWUgIkVycm9yIGR1cmluZyBwcmUtY29tbWl0IGhvb2sgKHVzZSAtLW5vLXZlcmlmeSB0byBza2lwIGhvb2spOlxuJEV4Y2VwdGlvbiI7CiAgICB9OwogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICBkaWUgIiRFcnJvck1lc3NhZ2VcbllvdSBjYW4gdXNlIC0tbm8tdmVyaWZ5IHRvIHNraXAgdGhlIGhvb2tcbiI7CiAgICB9Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/OTOBO/Git/PreReceive.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6Ok9UT0JPOjpHaXQ6OlByZVJlY2VpdmU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgo9aGVhZDEgU1lOT1BTSVMKClRoaXMgcHJlIHJlY2VpdmUgaG9vayBsb2FkcyB0aGUgT1RPQk8gdmVyc2lvbiBvZiBDb2RlOjpUaWR5QWxsCndpdGggdGhlIGN1c3RvbSBwbHVnaW5zLCBleGVjdXRlcyBpdCBmb3IgYW55IG1vZGlmaWVkIGZpbGVzCmFuZCByZXR1cm5zIGEgY29ycmVzcG9uZGluZyBzdGF0dXMgY29kZS4KCj1jdXQKCnVzZSBDd2Q7CnVzZSBGaWxlOjpTcGVjOwp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgQ29kZTo6VGlkeUFsbDsKdXNlIElQQzo6U3lzdGVtOjpTaW1wbGUgcXcoY2FwdHVyZXggcnVuKTsKdXNlIFRyeTo6VGlueTsKdXNlIFRpZHlBbGw6Ok9UT0JPOwp1c2UgTW9vOwoKIyBJZ25vcmUgdGhlc2UgcmVwb3NpdG9yaWVzIG9uIHRoZSBzZXJ2ZXIgc28gdGhhdCB3ZSBjYW4gYWx3YXlzIHB1c2ggdG8gdGhlbS4KbXkgJUlnbm9yZVJlcG9zaXRvcmllcyA9ICgKICAgICdjb2RlcG9saWN5LmdpdCcgPT4gMSwKKTsKCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRXJyb3JNZXNzYWdlOwogICAgdHJ5IHsKCiAgICAgICAgcHJpbnQgIk9UT0JPQ29kZVBvbGljeSBwcmUgcmVjZWl2ZSBob29rIHN0YXJ0aW5nLi4uXG4iOwoKICAgICAgICBteSAkSW5wdXQgPSAkUGFyYW17SW5wdXR9OwogICAgICAgIGlmICggISRJbnB1dCApIHsKICAgICAgICAgICAgJElucHV0ID0gZG8geyBsb2NhbCAkLyA9IHVuZGVmOyA8PiB9OwogICAgICAgIH0KCiAgICAgICAgIyBEZWJ1ZwogICAgICAgICNwcmludCAiR290IGRhdGE6XG4kSW5wdXQiOwoKICAgICAgICBteSAkUm9vdERpcmVjdG9yeSA9IEN3ZDo6cmVhbHBhdGgoKTsKICAgICAgICBsb2NhbCAkRU5We0dJVF9ESVJ9ID0gJFJvb3REaXJlY3Rvcnk7CgogICAgICAgIG15ICRSZXBvc2l0b3J5TmFtZSA9IFsgc3BsaXQgbXsvfSwgJFJvb3REaXJlY3RvcnkgXS0+Wy0xXTsKICAgICAgICBpZiAoICRJZ25vcmVSZXBvc2l0b3JpZXN7JFJlcG9zaXRvcnlOYW1lfSApIHsKICAgICAgICAgICAgcHJpbnQgIlNraXBwaW5nIGNoZWNrcyBmb3IgcmVwb3NpdG9yeSAkUmVwb3NpdG9yeU5hbWUuXG4iOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkRXJyb3JNZXNzYWdlID0gJFNlbGYtPkhhbmRsZUlucHV0KCRJbnB1dCk7CiAgICB9CiAgICBjYXRjaCB7CiAgICAgICAgbXkgJEV4Y2VwdGlvbiA9ICRfOwogICAgICAgIHByaW50IFNUREVSUiAiKioqIEVycm9yIHJ1bm5pbmcgcHJlLXJlY2VpdmUgaG9vayAoYWxsb3dpbmcgcHVzaCB0byBwcm9jZWVkKTpcbiRFeGNlcHRpb24iOwogICAgfTsKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcHJpbnQgU1RERVJSICIkRXJyb3JNZXNzYWdlXG4iOwogICAgICAgIHByaW50IFNUREVSUiAiXG4qKiogUHVzaCBjb250YWlucyBmaWxlcyB3aGljaCBkbyBub3Qgc2F0aXNmeSB0aGUgQ29kZVBvbGljeSEgKioqXG4iOwogICAgICAgIGV4aXQgMTsKICAgIH0KfQoKc3ViIEhhbmRsZUlucHV0IHsKICAgIG15ICggJFNlbGYsICRJbnB1dCApID0gQF87CgogICAgbXkgQExpbmVzID0gc3BsaXQoIG0vXG4vLCAkSW5wdXQgKTsKCiAgICBteSAoQFJlc3VsdHMpOwoKICAgIExJTkU6CiAgICBmb3IgbXkgJExpbmUgKEBMaW5lcykgewogICAgICAgIGNob21wKCRMaW5lKTsKICAgICAgICBteSAoICRCYXNlLCAkQ29tbWl0LCAkUmVmICkgPSBzcGxpdCggbS9ccysvLCAkTGluZSApOwoKICAgICAgICBpZiAoICRDb21taXQgPX4gbS9eMCskLyApIHsKCiAgICAgICAgICAgICMgTm8gdGFyZ2V0IGNvbW1pdCAoYnJhbmNoIC8gdGFnIGRlbGV0ZSkuCiAgICAgICAgICAgIG5leHQgTElORTsKICAgICAgICB9CgogICAgICAgIGlmICggc3Vic3RyKCAkUmVmLCAwLCA5ICkgZXEgJ3JlZnMvdGFncycgKSB7CgogICAgICAgICAgICAjIE9ubHkgYWxsb3cgInJlbC0qIiBhcyBuYW1lIGZvciBuZXcgYW5kIHVwZGF0ZWQgdGFncy4KICAgICAgICAgICAgaWYgKCAkUmVmICF+IG17IFxBIHJlZnMvdGFncy9yZWwtXGQrX1xkK19cZCsgKF9hbHBoYVxkKyB8IF9iZXRhXGQrIHwgX3JjXGQrKT8gXHogfXhtcyApIHsKCiAgICAgICAgICAgICAgICBteSAkRXJyb3JNZXNzYWdlID0gIkVycm9yOiBmb3VuZCBpbnZhbGlkIHRhZyAnJFJlZicgLSBwbGVhc2Ugb25seSB1c2UgcmVsLUFfQl9DIG9yIHJlbC1BX0JfQ18oYWxwaGF8YmV0YXxyYylELiI7CiAgICAgICAgICAgICAgICByZXR1cm4gJEVycm9yTWVzc2FnZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBWYWxpZCB0YWcuCiAgICAgICAgICAgIG5leHQgTElORTsKICAgICAgICB9CgogICAgICAgIHByaW50ICJDaGVja2luZyBmcmFtZXdvcmsgdmVyc2lvbiBmb3IgJFJlZi4uLiAiOwoKICAgICAgICBteSBARmlsZUxpc3QgPSAkU2VsZi0+R2V0R2l0RmlsZUxpc3QoJENvbW1pdCk7CgogICAgICAgICMgQ3JlYXRlIHRpZHlhbGwgZm9yIGVhY2ggYnJhbmNoIHNlcGFyYXRlbHkKICAgICAgICBteSAkVGlkeUFsbCA9ICRTZWxmLT5DcmVhdGVUaWR5QWxsKCAkQ29tbWl0LCBcQEZpbGVMaXN0ICk7CgogICAgICAgIG15IEBDaGFuZ2VkRmlsZXMgPSAkU2VsZi0+R2V0Q2hhbmdlZEZpbGVzKCAkQmFzZSwgJENvbW1pdCApOwoKICAgICAgICAjIEFsd2F5cyBpbmNsdWRlIGFsbCBTT1BNIGZpbGVzIHRvIHZlcmlmeSB0aGUgZmlsZSBsaXN0LgogICAgICAgIGZvciBteSAkU09QTUZpbGUgKCBncmVwIHsgJF8gPX4gbXtcLnNvcG0kfSB9IEBGaWxlTGlzdCApIHsKICAgICAgICAgICAgaWYgKCAhZ3JlcCB7ICRfIGVxICRTT1BNRmlsZSB9IEBDaGFuZ2VkRmlsZXMgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBDaGFuZ2VkRmlsZXMsICRTT1BNRmlsZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgRklMRToKICAgICAgICBmb3IgbXkgJEZpbGUgKEBDaGFuZ2VkRmlsZXMpIHsKCiAgICAgICAgICAgICMgRG9uJ3QgdHJ5IHRvIHZhbGlkYXRlIGRlbGV0ZWQgZmlsZXMuCiAgICAgICAgICAgIGlmICggIWdyZXAgeyAkXyBlcSAkRmlsZSB9IEBGaWxlTGlzdCApIHsKICAgICAgICAgICAgICAgIHByaW50ICIkRmlsZSB3YXMgZGVsZXRlZCwgaWdub3JpbmcuXG4iOwogICAgICAgICAgICAgICAgbmV4dCBGSUxFOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIEdldCBmaWxlIGZyb20gZ2l0IHJlcG9zaXRvcnkuCiAgICAgICAgICAgIG15ICRDb250ZW50cyA9ICRTZWxmLT5HZXRHaXRGaWxlQ29udGVudHMoICRGaWxlLCAkQ29tbWl0ICk7CgogICAgICAgICAgICAjIE9ubHkgdmFsaWRhdGUgZmlsZXMgd2hpY2ggYWN0dWFsbHkgaGF2ZSBzb21lIGNvbnRlbnQuCiAgICAgICAgICAgIGlmICggJENvbnRlbnRzID1+IC9cUy8gJiYgJENvbnRlbnRzID1+IC9cbi8gKSB7CiAgICAgICAgICAgICAgICBwdXNoKCBAUmVzdWx0cywgJFRpZHlBbGwtPnByb2Nlc3Nfc291cmNlKCAkQ29udGVudHMsICRGaWxlICkgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAoIG15IEBFcnJvclJlc3VsdHMgPSBncmVwIHsgJF8tPmVycm9yKCkgfSBAUmVzdWx0cyApIHsKICAgICAgICByZXR1cm4gc3ByaW50ZiggIkVycm9yOiAlZCBmaWxlKHMpIGRpZCBub3QgcGFzcyB2YWxpZGF0aW9uIiwgc2NhbGFyKEBFcnJvclJlc3VsdHMpICk7CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgQ3JlYXRlVGlkeUFsbCB7CiAgICBteSAoICRTZWxmLCAkQ29tbWl0LCAkRmlsZUxpc3QgKSA9IEBfOwoKICAgICMgRmluZCBPVE9CT0NvZGVQb2xpY3kgY29uZmlndXJhdGlvbgogICAgbXkgJENvbmZpZ0ZpbGUgPSBkaXJuYW1lKF9fRklMRV9fKSAuICcvLi4vLi4vdGlkeWFsbHJjJzsKCiAgICBteSAkVGlkeUFsbCA9IFRpZHlBbGw6Ok9UT0JPLT5uZXdfZnJvbV9jb25mX2ZpbGUoCiAgICAgICAgJENvbmZpZ0ZpbGUsCiAgICAgICAgY2hlY2tfb25seSA9PiAxLAogICAgICAgIG1vZGUgICAgICAgPT4gJ2NvbW1pdCcsCiAgICApOwoKICAgICMgV2UgY2Fubm90IHVzZSB0aGVzZSBmdW5jdGlvbnMgaGVyZSBiZWNhdXNlIHdlIGhhdmUgYSBiYXJlIGdpdCByZXBvc2l0b3J5LAogICAgIyAgIHNvIHdlIGhhdmUgdG8gZG8gaXQgb24gb3VyIG93bi4KICAgICMkVGlkeUFsbC0+RGV0ZXJtaW5lRnJhbWV3b3JrVmVyc2lvbkZyb21EaXJlY3RvcnkoKTsKICAgICMkVGlkeUFsbC0+R2V0RmlsZUxpc3RGcm9tRGlyZWN0b3J5KCk7CgogICAgIyBTZXQgdGhlIGxpc3Qgb2YgZmlsZXMgdG8gYmUgY2hlY2tlZAogICAgQFRpZHlBbGw6Ok9UT0JPOjpGaWxlTGlzdCA9IEB7JEZpbGVMaXN0fTsKCiAgICAjIE5vdyB3ZSB0cnkgdG8gZGV0ZXJtaW5lIHRoZSBPVE9CTyB2ZXJzaW9uIGZyb20gdGhlIGNvbW1pdAoKICAgICMgTG9vayBmb3IgYSBSRUxFQVNFIGZpbGUgZmlyc3QgdG8gZGV0ZXJtaW5lIHRoZSBmcmFtZXdvcmsgdmVyc2lvbgogICAgaWYgKCBncmVwIHsgJF8gZXEgJ1JFTEVBU0UnIH0gQHskRmlsZUxpc3R9ICkgewogICAgICAgIG15IEBDb250ZW50ID0gc3BsaXQgL1xuLywgJFNlbGYtPkdldEdpdEZpbGVDb250ZW50cyggJ1JFTEVBU0UnLCAkQ29tbWl0ICk7CgogICAgICAgIG15ICggJFZlcnNpb25NYWpvciwgJFZlcnNpb25NaW5vciApID0gJENvbnRlbnRbMV0gPX4gbXteVkVSU0lPTlxzKz1ccysoXGQrKVwuKFxkKylcLn14bXM7CiAgICAgICAgJFRpZHlBbGw6Ok9UT0JPOjpGcmFtZXdvcmtWZXJzaW9uTWFqb3IgPSAkVmVyc2lvbk1ham9yOwogICAgICAgICRUaWR5QWxsOjpPVE9CTzo6RnJhbWV3b3JrVmVyc2lvbk1pbm9yID0gJFZlcnNpb25NaW5vcjsKICAgIH0KCiAgICAjIExvb2sgZm9yIGFueSBTT1BNIGZpbGVzCiAgICBlbHNlIHsKICAgICAgICBGSUxFOgogICAgICAgIGZvciBteSAkRmlsZSAoIEB7JEZpbGVMaXN0fSApIHsKICAgICAgICAgICAgaWYgKCBzdWJzdHIoICRGaWxlLCAtNSwgNSApIGVxICcuc29wbScgKSB7CiAgICAgICAgICAgICAgICBteSBAQ29udGVudCA9IHNwbGl0IC9cbi8sICRTZWxmLT5HZXRHaXRGaWxlQ29udGVudHMoICRGaWxlLCAkQ29tbWl0ICk7CgogICAgICAgICAgICAgICAgZm9yIG15ICRMaW5lIChAQ29udGVudCkgewogICAgICAgICAgICAgICAgICAgIGlmICggJExpbmUgPX4gbXsgPEZyYW1ld29yayAoPzogWyBdKyBbXjw+XSogKT8gPiB9eG1zICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAoICRWZXJzaW9uTWFqb3IsICRWZXJzaW9uTWlub3IgKSA9ICRMaW5lID1+IG17IDxGcmFtZXdvcmsgKD86IFsgXSsgW148Pl0qICk/ID4gKFxkKykgXC4gKFxkKykgXC4gW148Kl0rIDxcL0ZyYW1ld29yaz4gfXhtczsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFZlcnNpb25NYWpvciA+ICRUaWR5QWxsOjpPVE9CTzo6RnJhbWV3b3JrVmVyc2lvbk1ham9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFZlcnNpb25NYWpvciA9PSAkVGlkeUFsbDo6T1RPQk86OkZyYW1ld29ya1ZlcnNpb25NYWpvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICRWZXJzaW9uTWlub3IgPiAkVGlkeUFsbDo6T1RPQk86OkZyYW1ld29ya1ZlcnNpb25NaW5vcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGlkeUFsbDo6T1RPQk86OkZyYW1ld29ya1ZlcnNpb25NYWpvciA9ICRWZXJzaW9uTWFqb3I7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGlkeUFsbDo6T1RPQk86OkZyYW1ld29ya1ZlcnNpb25NaW5vciA9ICRWZXJzaW9uTWlub3I7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkTGluZSA9fiBtezxWZW5kb3I+fSAmJiAkTGluZSAhfiBte1JvdGhlciBPU1N9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGlkeUFsbDo6T1RPQk86OlRoaXJkcGFydHlNb2R1bGUgPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBsYXN0IEZJTEU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaWYgKCRUaWR5QWxsOjpPVE9CTzo6RnJhbWV3b3JrVmVyc2lvbk1ham9yKSB7CiAgICAgICAgcHJpbnQKICAgICAgICAgICAgIkZvdW5kIE9UT0JPIHZlcnNpb24gJFRpZHlBbGw6Ok9UT0JPOjpGcmFtZXdvcmtWZXJzaW9uTWFqb3IuJFRpZHlBbGw6Ok9UT0JPOjpGcmFtZXdvcmtWZXJzaW9uTWlub3JcbiI7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBwcmludCAiQ291bGQgbm90IGRldGVybWluZSBPVE9CTyB2ZXJzaW9uIChhc3N1bWluZyBsYXRlc3QgdmVyc2lvbikhXG4iOwogICAgfQoKICAgIGlmICgkVGlkeUFsbDo6T1RPQk86OlRoaXJkcGFydHlNb2R1bGUpIHsKICAgICAgICBwcmludAogICAgICAgICAgICAiVGhpcyBzZWVtcyB0byBiZSBhIG1vZHVsZSBub3QgY29weXJpZ2h0ZWQgYnkgUm90aGVyIE9TUyBHbWJILiBGaWxlIGNvcHlyaWdodCB3aWxsIG5vdCBiZSBjaGFuZ2VkLlxuIjsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHByaW50CiAgICAgICAgICAgICJUaGlzIG1vZHVsZSBzZWVtcyB0byBiZSBjb3B5cmlnaHRlZCBieSBSb3RoZXIgT1NTIEdtYkguIEZpbGUgY29weXJpZ2h0IHdpbGwgYXV0b21hdGljYWxseSBiZSBhc3NpZ25lZCB0byBSb3RoZXIgT1NTIEdtYkguXG4iOwogICAgICAgIHByaW50CiAgICAgICAgICAgICIgIElmIHRoaXMgaXMgbm90IGNvcnJlY3QsIHlvdSBjYW4gY2hhbmdlIHRoZSA8VmVuZG9yPiB0YWcgaW4geW91ciBTT1BNLlxuIjsKICAgIH0KCiAgICByZXR1cm4gJFRpZHlBbGw7Cn0KCnN1YiBHZXRHaXRGaWxlQ29udGVudHMgewogICAgbXkgKCAkU2VsZiwgJEZpbGUsICRDb21taXQgKSA9IEBfOwogICAgbXkgJENvbnRlbnQgPSBjYXB0dXJleCggImdpdCIsICJzaG93IiwgIiRDb21taXQ6JEZpbGUiICk7CiAgICByZXR1cm4gJENvbnRlbnQ7Cn0KCnN1YiBHZXRHaXRGaWxlTGlzdCB7CiAgICBteSAoICRTZWxmLCAkQ29tbWl0ICkgPSBAXzsKICAgIG15ICRPdXRwdXQgPSBjYXB0dXJleCggImdpdCIsICJscy10cmVlIiwgIi0tbmFtZS1vbmx5IiwgIi1yIiwgIiRDb21taXQiICk7CiAgICByZXR1cm4gc3BsaXQgL1xuLywgJE91dHB1dDsKfQoKc3ViIEdldENoYW5nZWRGaWxlcyB7CiAgICBteSAoICRTZWxmLCAkQmFzZSwgJENvbW1pdCApID0gQF87CgogICAgIyBPbmx5IHVzZSB0aGUgbGFzdCBjb21taXQgaWYgd2UgaGF2ZSBhIG5ldyBicmFuY2guCiAgICAjICAgVGhpcyBpcyBub3QgcGVyZmVjdCwgYnV0IG90aGVyd2lzZSBxdWl0ZSBjb21wbGljYXRlZC4KICAgIGlmICggJEJhc2UgPX4gbS9eMCskLyApIHsKICAgICAgICBteSAkT3V0cHV0ID0gY2FwdHVyZXgoICdnaXQnLCAnZGlmZi10cmVlJywgJy0tbm8tY29tbWl0LWlkJywgJy0tbmFtZS1vbmx5JywgJy1yJywgJENvbW1pdCApOwogICAgICAgIG15IEBGaWxlcyAgPSBncmVwIHsvXFMvfSBzcGxpdCggbS9cbi8sICRPdXRwdXQgKTsKICAgICAgICByZXR1cm4gQEZpbGVzOwogICAgfQoKICAgIG15ICRPdXRwdXQgPSBjYXB0dXJleCggJ2dpdCcsICJkaWZmIiwgIi0tbnVtc3RhdCIsICItLW5hbWUtb25seSIsICIkQmFzZS4uJENvbW1pdCIgKTsKICAgIG15IEBGaWxlcyAgPSBncmVwIHsvXFMvfSBzcGxpdCggbS9cbi8sICRPdXRwdXQgKTsKICAgIHJldHVybiBARmlsZXM7Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Base.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkJhc2U7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB2NS4yNDsKdXNlIHV0Zjg7Cgp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhDb2RlOjpUaWR5QWxsOjpQbHVnaW4pOwoKdXNlIFRpZHlBbGw6Ok9UT0JPOwoKdXNlIFRlcm06OkFOU0lDb2xvciBxdyhjb2xvcmVkKTsKCnN1YiBJc1BsdWdpbkRpc2FibGVkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFBsdWdpblBhY2thZ2UgPSByZWYgJFNlbGY7CgogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17Q29kZX0gJiYgIWRlZmluZWQgJFBhcmFte0ZpbGVuYW1lfSApIHsKICAgICAgICBwcmludCBTVERFUlIgIk5lZWQgQ29kZSBvciBGaWxlbmFtZSFcbiI7CiAgICAgICAgZGllOwogICAgfQoKICAgIG15ICRDb2RlID0gZGVmaW5lZCAkUGFyYW17Q29kZX0gPyAkUGFyYW17Q29kZX0gOiAkU2VsZi0+X0dldEZpbGVDb250ZW50cyggJFBhcmFte0ZpbGVuYW1lfSApOwoKICAgIGlmICggJENvZGUgPX4gbXtub2ZpbHRlclwoW14oKV0qXFEkUGx1Z2luUGFja2FnZVxFW14oKV0qXCl9aXNteCApIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICByZXR1cm47Cn0KCnN1YiBJc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiB7CiAgICBteSAoICRTZWxmLCAkRnJhbWV3b3JrVmVyc2lvbk1ham9yLCAkRnJhbWV3b3JrVmVyc2lvbk1pbm9yICkgPSBAXzsKCiAgICBpZiAoJFRpZHlBbGw6Ok9UT0JPOjpGcmFtZXdvcmtWZXJzaW9uTWFqb3IpIHsKICAgICAgICByZXR1cm4gMSBpZiAkVGlkeUFsbDo6T1RPQk86OkZyYW1ld29ya1ZlcnNpb25NYWpvciA8ICRGcmFtZXdvcmtWZXJzaW9uTWFqb3I7CiAgICAgICAgcmV0dXJuIDAgaWYgJFRpZHlBbGw6Ok9UT0JPOjpGcmFtZXdvcmtWZXJzaW9uTWFqb3IgPiAkRnJhbWV3b3JrVmVyc2lvbk1ham9yOwogICAgICAgIHJldHVybiAxIGlmICRUaWR5QWxsOjpPVE9CTzo6RnJhbWV3b3JrVmVyc2lvbk1pbm9yIDwgJEZyYW1ld29ya1ZlcnNpb25NaW5vcjsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICAjIERlZmF1bHQ6IGlmIGZyYW1ld29yayBpcyB1bmtub3duLCByZXR1cm4gZmFsc2UgKHN0cmljdCBjaGVja3MpLgogICAgcmV0dXJuIDA7Cn0KCnN1YiBJc1RoaXJkcGFydHlNb2R1bGUgewogICAgbXkgKCRTZWxmKSA9IEBfOwoKICAgIHJldHVybiAkVGlkeUFsbDo6T1RPQk86OlRoaXJkcGFydHlNb2R1bGUgPyAxIDogMDsKfQoKc3ViIERpZVdpdGhFcnJvciB7CiAgICBteSAoICRTZWxmLCAkRXJyb3IgKSA9IEBfOwoKICAgIGNob21wICRFcnJvcjsKCiAgICBkaWUgY29sb3JlZCggcmVmKCRTZWxmKSwgJ3llbGxvdycgKSAuICJcbiIgLiBjb2xvcmVkKCAkRXJyb3IsICdyZWQnICkgLiAiXG4iOwp9CgpzdWIgX0dldEZpbGVDb250ZW50cyB7CiAgICBteSAoICRTZWxmLCAkRmlsZW5hbWUgKSA9IEBfOwoKICAgIG9wZW4oIG15ICRGaWxlSGFuZGxlLCAnPCcsICRGaWxlbmFtZSApIHx8IGRpZSAiQ2FuJ3Qgb3BlbiAkRmlsZW5hbWVcbiI7ICAgICMjIG5vIGNyaXRpYyBxdyhPVE9CTzo6UHJvaGliaXRPcGVuKQoKICAgIG15ICRDb250ZW50ID0gZG8geyBsb2NhbCAkLyA9IHVuZGVmOyA8JEZpbGVIYW5kbGU+IH07CiAgICBjbG9zZSAkRmlsZUhhbmRsZTsKCiAgICByZXR1cm4gJENvbnRlbnQ7Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Common/CRLFLineEndings.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkNvbW1vbjo6Q1JMRkxpbmVFbmRpbmdzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6QmFzZSk7Cgo9aGVhZDEgU1lOT1BTSVMKClRoaXMgcGx1Z2luIGNvbnZlcnRzIGZpbGVzIHdpdGggQ1JMRiBsaW5lIGVuZGluZ3MuCgo9Y3V0CgpzdWIgdHJhbnNmb3JtX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgIyBSZW1vdmUgQ1JMRiBsaW5lIGVuZGluZ3MuCiAgICAkQ29kZSA9fiBzeyBcciAkIH17fXhtc2c7CgogICAgcmV0dXJuICRDb2RlOwp9CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICBpZiAoICRDb2RlID1+IG17IFxyICQgfXhtc2cgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIkZvdW5kIENSTEYgbGluZSBlbmRpbmdzISIpOwogICAgfQoKICAgIHJldHVybiAkQ29kZTsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Common/CustomizationMarkers.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkNvbW1vbjo6Q3VzdG9taXphdGlvbk1hcmtlcnM7CiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkNvbW1vbjo6Q3VzdG9taXphdGlvbk1hcmtlcnMpCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkNvbW1vbjo6T3JpZ2luKQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6QmFzZSk7Cgo9aGVhZDEgU1lOT1BTSVMKClRoaXMgcGx1Z2luIGNoZWNrcyB0aGF0IG9ubHkgdmFsaWQgT1RPQk8gY3VzdG9taXphdGlvbiBtYXJrZXJzIGFyZSB1c2VkCnRvIG1hcmsgY2hhbmdlZCBsaW5lcyBpbiBjdXN0b21pemVkL2Rlcml2ZWQgZmlsZXMuCgo9Y3V0CgpzdWIgdHJhbnNmb3JtX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgIyBGaW5kIHdyb25nIGN1c3RvbWl6YXRpb24gbWFya2VycyB3aXRob3V0IHNwYWNlIG9yIHdpdGggNCBoeXBoZW5zIGFuZCBjb3JyZWN0IHRoZW0KICAgICMKICAgICMgICAjLS0tCiAgICAjCiAgICAjICAgdG8KICAgICMKICAgICMgICAjIC0tLQogICAgIwogICAgJENvZGUgPX4gc3sgXiBbIF0qICggKD86IFwjIHwgXC9cLyApICkgWyBdKiAtezMsNH0gWyBdKiAkIH17JDEgLS0tfXhtc2c7CgogICAgIyBGaW5kIHdyb25nIGN1c3RvbWl6YXRpb24gbWFya2VycyBpbiBKUyBmaWxlcyBhbiBjb3JyZWN0IHRoZW0KICAgICMKICAgICMgICAvKioqLwogICAgIwogICAgIyAgIHRvCiAgICAjCiAgICAjICAgLy8gLS0tCiAgICAjCiAgICAkQ29kZSA9fiBzeyBeIFsgXSogXC8gWyBdKiBcKnsyLDN9IFsgXSogXC8gWyBdKiAkIH17Ly8gLS0tfXhtc2c7CgogICAgIyBGaW5kIHdyb25nIGNvbW1lbnRzIGFuZCBjb3JyZWN0IHRoZW0KICAgICMKICAgICMgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjCiAgICAjICAgb3IKICAgICMKICAgICMgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMKICAgICMgICB0bwogICAgIwogICAgIyAgICMKICAgICMKICAgICRDb2RlID1+IHN7IF4gXG4gXiBbIF0qICg/OiBcIyB8IFwvXC8gKSBbIF0qIC17NSw1MH0gWyBdKiAkIFxuIF4gXG4gfXtcbn14bXNnOwogICAgJENvZGUgPX4gc3sgXiAoIFsgXSogKD86IFwjIHwgXC9cLyApICkgWyBdKiAtezUsNTB9IFsgXSogJCB9eyQxfXhtc2c7CgogICAgIyBGaW5kIHNvbWVzdGhpbmcgbGlrZSB0aGF0IGFuZCByZW1vdmUgdGhlIGxlYWRpbmcgc3BhY2VzCiAgICAjCiAgICAjICAgIyAtLS0KICAgICMgICAjIE9UT0JPWHlaIC0gSGVyZSBhIGNvbW1lbnQuCiAgICAjICAgIyAtLS0KICAgICMKICAgICMgICBvcgogICAgIwogICAgIyAgICMgLS0tCiAgICAjICAgIyBPVE9CT1h5WgogICAgIyAgICMgLS0tCiAgICAjICAgIyBteSAkU3ViamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKS0+VGlja2V0U3ViamVjdENsZWFuKCk7CiAgICAjCiAgICAkQ29kZSA9fiBzewogICAgICAgICgKICAgICAgICAgICAgXiBbIF0rICg/OiBcIyB8IFwvXC8gKSBbIF0rIC0tLSBbIF0qICQgXG4KICAgICAgICAgICAgXiBbIF0rICg/OiBcIyB8IFwvXC8gKSBbIF0rIFteIF0rICg/OiBbIF0rIC0gW15cbl0rIHwgKSAkIFxuCiAgICAgICAgICAgIF4gWyBdKyAoPzogXCMgfCBcL1wvICkgWyBdKyAtLS0gWyBdKiAkIFxuCiAgICAgICAgICAgICg/OiBeIFsgXSsgKD86IFwjIHwgXC9cLyApIFteXG5dKiAkIFxuICkqCiAgICAgICAgKQogICAgfXsKICAgICAgICBteSAkU3RyaW5nID0gJDE7CiAgICAgICAgJFN0cmluZyA9fiBzeyBeIFsgXSsgfXt9eG1zZzsKICAgICAgICAkU3RyaW5nOwogICAgfXhtc2dlOwoKICAgICMgRmluZCB3cm9uZyBjdXN0b21pemF0aW9uIG1hcmtlcnMgaW4gSlMgZmlsZXMgYW4gY29ycmVjdCB0aGVtCiAgICAjCiAgICAjICAgLyoqCiAgICAjICAgKiBPVE9CT1h5WiAtIEhlcmUgYSBjb21tZW50LgogICAgIyAgICoqLwogICAgIwogICAgIyAgIG9yCiAgICAjCiAgICAjICAgLyoqKgogICAgIyAgICogT1RPQk9YeVoKICAgICMgICAqKiovCiAgICAjCiAgICAjICAgdG8KICAgICMKICAgICMgICAvLyAtLS0KICAgICMgICAvLyBPVE9CT1h5WgogICAgIyAgIC8vIC0tLQogICAgIwogICAgJENvZGUgPX4gc3sKICAgICAgICBeIFsgXSogXC8gWyBdKiBcKnsyLDN9IFsgXSogJCBcbgogICAgICAgIF4gWyBdKiBcKnsxLDN9IFsgXSsgKCBbXiBdKyAoPzogWyBdKyAtIFteXG5dKyB8ICkgKSAkIFxuCiAgICAgICAgXiBbIF0qIFwqezIsM30gWyBdKiBcLyBbIF0qICQgXG4KICAgIH17JFNlbGYtPl9DdXN0b21pemF0aW9uTWFya2VyKCQxKX14bXNnZTsKCiAgICAjIEZpbmQgc29tZXN0aGluZyBsaWtlIHRoYXQgYW5kIHJlbW92ZSB0aGUgbGVhZGluZyBzcGFjZXMKICAgICMKICAgICMgICAjIC0tLQogICAgIwogICAgJENvZGUgPX4gc3sgXiBbIF0rICggKD86IFwjIHwgXC9cLyApICkgWyBdKyAtLS0gWyBdKiAkIH17JDEgLS0tfXhtc2c7CgogICAgcmV0dXJuICRDb2RlOwp9CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICBteSAoICRDb3VudGVyLCAkRmxhZywgJEVycm9yTWVzc2FnZSApOwoKICAgIExJTkU6CiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKCiAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgIyBBbGxvdyAjIyBubyBjcml0aWMgYW5kICMjIHVzZSBjcml0aWMKICAgICAgICBuZXh0IExJTkUgaWYgJExpbmUgPX4gbXteIFxzKiBcI1wjIFxzKyAoPzpub3x1c2UpIFxzKyBjcml0aWN9eG1zOwoKICAgICAgICAjIEFsbG93ICMjIG5vZmlsdGVyCiAgICAgICAgbmV4dCBMSU5FIGlmICRMaW5lID1+IG17XiBccyogXCNcIyBccysgbm9maWx0ZXIgfXhtczsKCiAgICAgICAgaWYgKCAkTGluZSA9fiAvXlteI10vICYmICRDb3VudGVyIDwgMjQgKSB7CiAgICAgICAgICAgICRGbGFnID0gMTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkTGluZSA9fiAvXiAqIyAtLSQvICYmICggJENvdW50ZXIgPiAyMyB8fCAoICRDb3VudGVyID4gMTAgJiYgJEZsYWcgKSApICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkTGluZSA9fiBteyBeIFsgXSogKD86IFwjIHwgXC9cLyApKyBbIF0qIC0gWyBdKiAkIH14bXMgKSB7CiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkxpbmUgJENvdW50ZXI6ICRMaW5lXG4iOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRMaW5lID1+IG17IF4gWyBdKiAoPzogXCMgfCBcL1wvICkrIC17MSx9IFsgXSogJCB9eG1zICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkTGluZSA9fiBteyBeIFsgXSogKD86IFwjIHwgXC9cLyApKyBbIF0qIC17NCw0MH0gWyBdKiAkIH14bXMgKSB7CiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkxpbmUgJENvdW50ZXI6ICRMaW5lXG4iOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRMaW5lID1+IC9eICojKyAqW1wqXCtdKyQvICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkTGluZSA9fiBteyBeIFsgXSogKD86IFwjIHwgXC9cLyApezMsfSB9eG1zICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKUGxlYXNlIHJlbW92ZSBvciByZXBsYWNlIHdyb25nIFNlcGFyYXRvcnMgbGlrZSAnIyAtLScsIHZhbGlkIG9ubHk6ICMgLS0tIChmb3IgY3VzdG9taXppbmcgb3RvYm8gZmlsZXMpLgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQoKICAgIHJldHVybiAkQ29kZTsKfQoKc3ViIF9DdXN0b21pemF0aW9uTWFya2VyIHsKICAgIG15ICggJFNlbGYsICRNb2R1bGUgKSA9IEBfOwoKICAgIHJldHVybiA8PCJFTkRfQ1VTVE9NTUFSS0VSIjsKLy8gLS0tCi8vICRNb2R1bGUKLy8gLS0tCkVORF9DVVNUT01NQVJLRVIKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Common/CustomizationMarkersTT.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkNvbW1vbjo6Q3VzdG9taXphdGlvbk1hcmtlcnNUVDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkJhc2UpOwoKPWhlYWQxIFNZTk9QU0lTCgpUaGlzIHBsdWdpbiBjaGVja3MgdGhhdCBvbmx5IHZhbGlkIE9UT0JPIGN1c3RvbWl6YXRpb24gbWFya2VycyBhcmUgdXNlZAp0byBtYXJrIGNoYW5nZWQgbGluZXMgaW4gY3VzdG9taXplZC9kZXJpdmVkIEM8LnR0PiBmaWxlcy4KCj1jdXQKCnN1YiB0cmFuc2Zvcm1fc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICAjIEZpbmQgY3VzdG9taXphdGlvbiBtYXJrZXJzIHdpdGggLy8gaW4gLnR0IGZpbGVzIGFuZCByZXBsYWNlIHRoZW0gd2l0aCAjLgogICAgIwogICAgIyAgIC8vIC0tLQogICAgIyAgIC8vIE9UT0JPWHlaIC0gSGVyZSBhIGNvbW1lbnQuCiAgICAjICAgLy8gLS0tCiAgICAjCiAgICAjICAgdG8KICAgICMKICAgICMgICAjIC0tLQogICAgIyAgICMgT1RPQk9YeVogLSBIZXJlIGEgY29tbWVudC4KICAgICMgICAjIC0tLQogICAgIwogICAgJENvZGUgPX4gc3sKICAgICAgICAoCiAgICAgICAgICAgIF4gWyBdKiBcL1wvIFsgXSsgLS0tIFsgXSogJCBcbgogICAgICAgICAgICBeIFsgXSogXC9cLyBbIF0rIFteIF0rICg/OiBbIF0rIC0gW15cbl0rIHwgKSAkIFxuCiAgICAgICAgICAgIF4gWyBdKiBcL1wvIFsgXSsgLS0tIFsgXSogJCBcbgogICAgICAgICAgICAoPzogXiBbIF0qIFwvXC8gW15cbl0qICQgXG4gKSoKICAgICAgICApCiAgICB9ewogICAgICAgIG15ICRTdHJpbmcgPSAkMTsKICAgICAgICAkU3RyaW5nID1+IHN7IF4gWyBdKiBcL1wvIH17I314bXNnOwogICAgICAgICRTdHJpbmc7CiAgICB9eG1zZ2U7CgogICAgIyBGaW5kIHdyb25nIGN1c3RvbWl6YXRpb24gbWFya2VycyBpbiAudHQgZmlsZXMgYW5kIGNvcnJlY3QgdGhlbS4KICAgICMKICAgICMgICAvLyAtLS0KICAgICMKICAgICMgICB0bwogICAgIwogICAgIyAgICMgLS0tCiAgICAjCiAgICAkQ29kZSA9fiBzeyBeIFsgXSogXC9cLyBbIF0rIC0tLSBbIF0qICQgfXsjIC0tLX14bXNnOwoKICAgIHJldHVybiAkQ29kZTsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Common/NoFilter.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkNvbW1vbjo6Tm9GaWx0ZXI7CiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBvZDo6U3BlbGxDaGVjaykKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkJhc2UpOwoKPWhlYWQxIFNZTk9QU0lTCgpUaGlzIHBsdWdpbiBmaXhlcyBub2ZpbHRlciBsaW5lcy4KCj1jdXQKCnN1YiB0cmFuc2Zvcm1fc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICAjIFJlcGxhY2Ugbm9maWx0ZXIgbGluZXMgaW4gcG0gbGlrZSBmaWxlcy4KICAgICMKICAgICMgT3JpZ2luYWw6CiAgICAjICAgICAjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkxlZ2FsOjpMaWNlbnNlVmFsaWRhdG9yKQogICAgIyAgICAgIyBub2ZpbHRlciAoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6TGVnYWw6OkxpY2Vuc2VWYWxpZGF0b3IpCiAgICAjICAgICAjIyBub2ZpbHRlciAoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6TGVnYWw6OkxpY2Vuc2VWYWxpZGF0b3IpCiAgICAjICAgICAjIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpMZWdhbDo6TGljZW5zZVZhbGlkYXRvcik7CiAgICAjICAgICBteSAkRHVtcCA9IERhdGE6OkR1bXBlcjo6RHVtcGVyKCRIYXNoUmVmKTsgICAgI25vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OkR1bXBlcikKICAgICMKICAgICMgUmVwbGFjZW1lbnQ6CiAgICAjICAgICAjIyBub2ZpbHRlciAoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6TGVnYWw6OkxpY2Vuc2VWYWxpZGF0b3IpCiAgICAjICAgICBteSAkRHVtcCA9IERhdGE6OkR1bXBlcjo6RHVtcGVyKCRIYXNoUmVmKTsgICAgIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6RHVtcGVyKQogICAgIwogICAgJENvZGUgPX4gc3sgXiAoIFteXCNcbl0qICkgXCMrIFxzKiBubyBccyogZmlsdGVyIFxzKiBcKCAoIC4rPyApIFwpIC4qPyBcbiB9eyQxIyMgbm9maWx0ZXIoJDIpXG59eG1zZzsKCiAgICAjIFJlcGxhY2Ugbm9maWx0ZXIgbGluZXMgaW4ganMgbGlrZSBmaWxlcy4KICAgICMKICAgICMgT3JpZ2luYWw6CiAgICAjICAgICAvLyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpMZWdhbDo6TGljZW5zZVZhbGlkYXRvcikKICAgICMgICAgIC8vIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkxlZ2FsOjpMaWNlbnNlVmFsaWRhdG9yKQogICAgIyAgICAgLy8gbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6SmF2YVNjcmlwdDo6RmlsZU5hbWUpCiAgICAjICAgICAvLyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpMZWdhbDo6TGljZW5zZVZhbGlkYXRvcikKICAgICMgICAgIG15ICREdW1wID0gRGF0YTo6RHVtcGVyOjpEdW1wZXIoJEhhc2hSZWYpOyAgICAvLyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpEdW1wZXIpCiAgICAjCiAgICAjIFJlcGxhY2VtZW50OgogICAgIyAgICAgLy8gbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6TGVnYWw6OkxpY2Vuc2VWYWxpZGF0b3IpCiAgICAjICAgICBteSAkRHVtcCA9IERhdGE6OkR1bXBlcjo6RHVtcGVyKCRIYXNoUmVmKTsgICAgLy8gbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6RHVtcGVyKQogICAgIwogICAgJENvZGUgPX4gc3sgXiAoIFteXC9cbl0qICkgXC8rIFxzKiBubyBccyogZmlsdGVyIFxzKiBcKCAoIC4rPyApIFwpIC4qPyBcbiB9eyQxLy8gbm9maWx0ZXIoJDIpXG59eG1zZzsKCiAgICAjIFJlcGxhY2Ugbm9maWx0ZXIgbGluZXMgaW4gY3NzIGxpa2UgZmlsZXMuCiAgICAjCiAgICAjIE9yaWdpbmFsOgogICAgIyAgICAgLyogbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6TGVnYWw6OkxpY2Vuc2VWYWxpZGF0b3IpICovCiAgICAjICAgICAvKiogIG5vIGZpbHRlciAoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6TGVnYWw6OkxpY2Vuc2VWYWxpZGF0b3IpICovCiAgICAjICAgICAvKiAgbm9maWx0ZXIgKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkxlZ2FsOjpMaWNlbnNlVmFsaWRhdG9yKTsgKi8KICAgICMKICAgICMgUmVwbGFjZW1lbnQ6CiAgICAjICAgICAvKiBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpMZWdhbDo6TGljZW5zZVZhbGlkYXRvcikgKi8KICAgICMKICAgICRDb2RlCiAgICAgICAgPX4gc3sgXiAoIFxzKiApIFxcIFwqKyBbXlxuXSogbm8gXHMqIGZpbHRlciBccyogXCggKCAuKz8gKSBcKSAuKj8gXCorIFxcIFteXG5dKiBcbiB9eyQxLyogbm9maWx0ZXIoJDIpICovXG59eG1zZzsKCiAgICAjIFJlcGxhY2Ugbm9maWx0ZXIgbGluZXMgaW4geG1sIGxpa2UgZmlsZXMuCiAgICAjCiAgICAjIE9yaWdpbmFsOgogICAgIyAgICAgPCEtLSBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpMZWdhbDo6TGljZW5zZVZhbGlkYXRvcikgLS0+CiAgICAjICAgICA8IS0tICBubyBmaWx0ZXIgKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkxlZ2FsOjpMaWNlbnNlVmFsaWRhdG9yKSAtLT4KICAgICMgICAgIDwhLS0gIG5vZmlsdGVyIChUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpMZWdhbDo6TGljZW5zZVZhbGlkYXRvcik7IC0tPgogICAgIwogICAgIyBSZXBsYWNlbWVudDoKICAgICMgICAgIDwhLS0gbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6TGVnYWw6OkxpY2Vuc2VWYWxpZGF0b3IpIC0tPgogICAgIwogICAgJENvZGUKICAgICAgICA9fiBzeyBeICggXHMqICkgPCEtLSBbXlxuXSogbm8gXHMqIGZpbHRlciBccyogXCggKCAuKz8gKSBcKSAuKj8gLS0+IFteXG5dKiBcbiB9eyQxPCEtLSBub2ZpbHRlcigkMikgLS0+XG59eG1zZzsKCiAgICByZXR1cm4gJENvZGU7Cn0KCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgIHJldHVybiAkQ29kZSBpZiAkQ29kZSAhfiBteyBub2ZpbHRlciBcKCAuKz8gXCkgfXhtczsKCiAgICBpZiAoICRDb2RlID1+IG17IDwhLS0gXHMqIG5vZmlsdGVyIFxzKiBcKCB9eG1zICkgewoKICAgICAgICBpZiAoICRDb2RlICF+IG17IDwhLS0gXHMgbm9maWx0ZXIgXCggLis/IFwpIFxzIC0tPiB9eG1zICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiRm91bmQgaW52YWxpZCBub2ZpbHRlcigpIFhNTCBsaW5lISIpOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewoKICAgICAgICBpZiAoICRDb2RlICF+IG17ICg/OiBcI1wjIHwgXC9cLyB8IFwvXCogKSBccyBub2ZpbHRlciBcKCAuKz8gXCkgfXhtcyApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIkZvdW5kIGludmFsaWQgbm9maWx0ZXIoKSBsaW5lISIpOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJENvZGU7Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Common/Origin.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkNvbW1vbjo6T3JpZ2luOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6QmFzZSk7Cgo9aGVhZDEgU1lOT1BTSVMKClRoaXMgcGx1Z2luIGNoZWNrcyB0aGF0IG9ubHkgdmFsaWQgT1RPQk8gb3JpZ2lucyBhcmUgdXNlZAppbiBjdXN0b21pemVkL2Rlcml2ZWQgZmlsZXMuCgo9Y3V0CgpzdWIgdHJhbnNmb3JtX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgIyBSZW1vdmUgZm9ybWVyLW9yaWdpbiBiZWNhdXNlIGl0J3Mgbm90IG5lZWRlZCBhbnkgbW9yZQogICAgJENvZGUgPX4gc3sgXiBbIF0qICg/OiBcIyB8IFwvXC8gKSBbIF0rICg/OiBcJCApKiBmb3JtZXItb3JpZ2luOiAuKz8gJCBcbiB9e314bXNnOwoKICAgIG15ICRPcmlnaW4gPSAnJG9yaWdpbjonOwoKICAgICMgVHJhbnNmZXJzIHRoZSBvbGQgb3JpZ2luCiAgICAjCiAgICAjICMgJG9yaWdpbjogaHR0cHM6Ly9naXRodWIuY29tL09UT0JPL0lUU01JbmNpZGVudFByb2JsZW1NYW5hZ2VtZW50L2Jsb2IvNzRlZmNjYmM3ODIxNTM3MTM0YjUyMGI1MDhhMTE2YWZkZDQ4OWFkNC9LZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldEFjdGlvbkNvbW1vbi5wbQogICAgIwogICAgIyB0byB0aGUgbmV3CiAgICAjCiAgICAjICMgJG9yaWdpbjogSVRTTUluY2lkZW50UHJvYmxlbU1hbmFnZW1lbnQgLSA3NGVmY2NiYzc4MjE1MzcxMzRiNTIwYjUwOGExMTZhZmRkNDg5YWQ0IC0gS2VybmVsL01vZHVsZXMvQWdlbnRUaWNrZXRBY3Rpb25Db21tb24ucG0KICAgICMKICAgICRDb2RlID1+IHN7CiAgICAgICAgXgogICAgICAgICggWyBdKiAoPzogXCMgWyBdKyAgfCBcL1wvIFsgXSsgfCA8R2l0PiApICkKICAgICAgICAoPzogXCQgfMKgKSBvcmlnaW46IFsgXSsgaHR0cCAoPzogcyB8wqApIDpcL1wvIGdpdGh1YiBcLiBjb20gXC8gT1RPQk8gXC8KICAgICAgICAoIFteXC8gXG5dKyApCiAgICAgICAgXC8gKD86IGJsb2JcLyB8IGNvbW1pdFwvIHwgICkKICAgICAgICAoIFthLXowLTldKyApCiAgICAgICAgXC8KICAgICAgICAoIC4rPyApCiAgICAgICAgJAogICAgfXskMSRPcmlnaW4gJDIgLSAkMyAtICQ0fXhtczsKCiAgICAjIFRyYW5zZmVycyB0aGUgb2xkIG9yaWdpbgogICAgIwogICAgIyAjICRvcmlnaW46IGh0dHBzOi8vZ2l0Lm90b2JvLmNvbS9vdG9iby9JVFNNSW5jaWRlbnRQcm9ibGVtTWFuYWdlbWVudC9ibG9icy83NGVmY2NiYzc4MjE1MzcxMzRiNTIwYjUwOGExMTZhZmRkNDg5YWQ0L0tlcm5lbC9Nb2R1bGVzL0FnZW50VGlja2V0QWN0aW9uQ29tbW9uLnBtCiAgICAjCiAgICAjIHRvIHRoZSBuZXcKICAgICMKICAgICMgIyAkb3JpZ2luOiBJVFNNSW5jaWRlbnRQcm9ibGVtTWFuYWdlbWVudCAtIDc0ZWZjY2JjNzgyMTUzNzEzNGI1MjBiNTA4YTExNmFmZGQ0ODlhZDQgLSBLZXJuZWwvTW9kdWxlcy9BZ2VudFRpY2tldEFjdGlvbkNvbW1vbi5wbQogICAgIwogICAgJENvZGUgPX4gc3sKICAgICAgICBeCiAgICAgICAgKCBbIF0qICg/OiBcIyB8IFwvXC8gKSApCiAgICAgICAgWyBdKyAoPzogXCQgfMKgKSBvcmlnaW46IFsgXSsgaHR0cCAoPzogcyB8wqApIDpcL1wvIGdpdCBcLiBvdG9ibyBcLiBjb20gXC8gb3RvYm8gXC8KICAgICAgICAoIFteXC8gXG5dKyApCiAgICAgICAgXC8gYmxvYnMgXC8KICAgICAgICAoIFthLXowLTldKyApCiAgICAgICAgXC8KICAgICAgICAoIC4rPyApCiAgICAgICAgJAogICAgfXskMSAkT3JpZ2luICQyIC0gJDMgLSAkNH14bXM7CgogICAgIyBUcmFuc2ZlcnMgYW4gQ1ZTIE9sZElkCiAgICAjCiAgICAjICMgJE9sZElkOiBBZ2VudFRpY2tldEVtYWlsLmR0bCx2IDEuMTQyLjIuMSAyMDExLzA5LzA3IDIwOjUzOjUwIGVuIEV4cCAkCiAgICAjCiAgICAjIHRvIHRoZSBuZXcgb3JpZ2luCiAgICAjCiAgICAjICMgJG9yaWdpbjogb3RvYm8gLSAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIC0gQWdlbnRUaWNrZXRFbWFpbC5kdGwKICAgICMKCiAgICBpZiAoIG15ICgkRmlsZVN0cmluZykgPSAkQ29kZSA9fiBteyBeIFsgXSogKD86IFwjIHwgXC9cLyApIFsgXSsgXCRPbGRJZDogWyBdKyAoIFteXG5dKz8gKSAsdiBbIF0rIFteXG5dKyBcbiB9eG1zICkgewoKICAgICAgICBteSAkRmlsZVBhdGggPSAkRmlsZVN0cmluZzsKCiAgICAgICAgaWYgKCAkRmlsZVN0cmluZyA9fiBteyBeIFteXG5dKyBcLiBkdGwgJCB9eG1zICkgewogICAgICAgICAgICAkRmlsZVBhdGggPSAnS2VybmVsL091dHB1dC9IVE1ML1N0YW5kYXJkLycgLiAkRmlsZVN0cmluZzsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkRmlsZVN0cmluZyA9fiBteyBeIFteXG5dKyBcLiBqcyAkIH14bXMgKSB7CiAgICAgICAgICAgICRGaWxlUGF0aCA9ICd2YXIvaHR0cGQvaHRkb2NzL2pzLycgLiAkRmlsZVN0cmluZzsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkRmlsZVN0cmluZyA9fiBteyBeICg/OiBMYXlvdXQgfCBOYXZCYXIgfCBOb3RpZmljYXRpb25BZ2VudCB8IFRpY2tldE92ZXJ2aWV3IHwgVGlja2V0TWVudSB8IFRvb2xCYXIgfCBEYXNoYm9hcmQgKSBbXlxuXSsgXC4gcG0gJCB9eG1zICkgewogICAgICAgICAgICAkRmlsZVBhdGggPSAnS2VybmVsL091dHB1dC9IVE1MLycgLiAkRmlsZVN0cmluZzsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkRmlsZVN0cmluZyA9fiBteyBeICg/OiBBZ2VudCB8IEN1c3RvbWVyIHwgUHVibGljICkgW15cbl0rIFwuIHBtICQgfXhtcyApIHsKICAgICAgICAgICAgJEZpbGVQYXRoID0gJ0tlcm5lbC9Nb2R1bGVzLycgLiAkRmlsZVN0cmluZzsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkRmlsZVN0cmluZyA9fiBteyBeIFteXG5dKyBcLiBwbSAkIH14bXMgKSB7CiAgICAgICAgICAgICRGaWxlUGF0aCA9ICdLZXJuZWwvU3lzdGVtLycgLiAkRmlsZVN0cmluZzsKICAgICAgICB9CgogICAgICAgICRDb2RlID1+IHN7CiAgICAgICAgICAgIF4gKCBbIF0qICg/OiBcIyB8IFwvXC8gKSApIFsgXSsgXCRPbGRJZDogWyBdKyBbXlxuXSs/ICx2IFsgXSsgW15cbl0rIFxuCiAgICAgICAgfXskMSAkT3JpZ2luIG90b2JvIC0gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCAtICRGaWxlUGF0aFxufXhtczsKICAgIH0KCgogICAgIyBDaGVjayB0aGUgb3JpZ2luIGlmIGN1c3RvbWl6YXRpb24gbWFya2VycyBhcmUgZm91bmQKICAgIGlmICggJENvZGUgPX4gbXsgXiBbIF0qICg/OiBcIyB8IFwvXC8gKSBbIF0rIC0tLSBbIF0qICQgfXhtcyApIHsKCiAgICAgICAgbXkgJEZvdW5kT3JpZ2luOwogICAgICAgIG15ICRMaW5lQ291bnRlciA9IDA7CiAgICAgICAgT1JJR0lOTElORToKICAgICAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKICAgICAgICAgICAgJExpbmVDb3VudGVyKys7CgogICAgICAgICAgICBsYXN0IE9SSUdJTkxJTkUgaWYgJExpbmVDb3VudGVyID4gMTA7CgogICAgICAgICAgICBuZXh0IE9SSUdJTkxJTkUgaWYgJExpbmUgIX4gbXsgXiBbIF0qICg/OiBcIyB8IFwvXC8gKSBbIF0rIFwkb3JpZ2luOiBbIF0rIFteXG5dKyAkIH14bXM7CgogICAgICAgICAgICAkRm91bmRPcmlnaW4gPSAxOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJEZvdW5kT3JpZ2luICkgewoKICAgICAgICAgICAgbXkgJFBhY2thZ2VDb3VudGVyID0gMDsKCiAgICAgICAgICAgIFBBQ0tBR0VMSU5FOgogICAgICAgICAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKCiAgICAgICAgICAgICAgICBuZXh0IFBBQ0tBR0VMSU5FIGlmICRMaW5lICF+IG17IF4gcGFja2FnZSBbIF0rICggW0EtWmEtejAtOVw6XSsgKSBcOyAkIH14bXM7CgogICAgICAgICAgICAgICAgIyBjb3VudCBsaW5lcyB3aXRoIGFueSAncGFja2FnZS4uOycKICAgICAgICAgICAgICAgICRQYWNrYWdlQ291bnRlcisrOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJENvZGUgaWYgJFBhY2thZ2VDb3VudGVyID09IDA7CgogICAgICAgICAgICAjIG9ubHkgb25lICdwYWNrYWdlJyBhbGxvd2VkIHBlciBmaWxlIC0gc3BsaXQgZmlyc3QgaWYgdGhlcmUgYXJlIG1vcmUgcGFja2FnZXMgY29tYmluZWQuCiAgICAgICAgICAgIGlmICgkUGFja2FnZUNvdW50ZXIgPiAxKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiJFBhY2thZ2VDb3VudGVyIHBhY2thZ2UgbGluZXMgZm91bmQuXG4iKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgKCRGaWxlUGF0aCkgPSAkQ29kZSA9fiBteyBeIHBhY2thZ2UgWyBdKyAoIFtBLVphLXowLTlcOl0rICkgXDsgJCB9eG1zOwoKICAgICAgICAgICAgIyBqdXN0IGFsbG93IEtlcm5lbCBhbmQgc2NyaXB0czo6dGVzdHMgdG8gYmUgbW9kaWZpZWQgYXV0b21hdGljYWxseQogICAgICAgICAgICByZXR1cm4gJENvZGUgaWYgJEZpbGVQYXRoICF+IG17IF4gKCBLZXJuZWwgfCBzY3JpcHRzIFw6XDogdGVzdHMgKT8gXDpcOiB9eG1zOwoKICAgICAgICAgICAgJEZpbGVQYXRoID1+IHN7IFw6XDogfXsvfWdzbXg7CgogICAgICAgICAgICBteSAkTmV3T3JpZ2luID0gJE9yaWdpbiAuICcgb3RvYm8gLSAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIC0gJyAuICRGaWxlUGF0aCAuICcucG0nOwoKICAgICAgICAgICAgIyBwbGFjZSBuZXcgb3JpZ2luIGFmdGVyIENvcHlyaWdodAogICAgICAgICAgICAkQ29kZSA9fiBzeyAoIFwjIFsgXSsgQ29weXJpZ2h0IC4qIFwvIFxuIFwjIFsgXSsgLS0gXG4gXCMgWyBdKyApIH17JDEkTmV3T3JpZ2luXG4jIC0tXG4jIH14bXM7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkQ29kZTsKfQoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgIyBDaGVjayB0aGUgb3JpZ2luIGlmIGN1c3RvbWl6YXRpb24gbWFya2VycyBhcmUgZm91bmQKICAgIGlmICggJENvZGUgPX4gbXsgXiBbIF0qICg/OiBcIyB8IFwvXC8gKSBbIF0rIC0tLSBbIF0qICQgfXhtcyApIHsKCiAgICAgICAgbXkgJEZvdW5kT3JpZ2luOwogICAgICAgIG15ICRDb3VudGVyID0gMDsKICAgICAgICBMSU5FOgogICAgICAgIGZvciBteSAkTGluZSAoIHNwbGl0IC9cbi8sICRDb2RlICkgewoKICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgIGxhc3QgTElORSBpZiAkQ291bnRlciA+IDEwOwoKICAgICAgICAgICAgbmV4dCBMSU5FIGlmICRMaW5lICF+IG17IF4gWyBdKiAoPzogXCMgfCBcL1wvICkgWyBdKyBcJG9yaWdpbjogWyBdKyBbXlxuXSsgJCB9eG1zOwoKICAgICAgICAgICAgJEZvdW5kT3JpZ2luID0gMTsKICAgICAgICB9CgogICAgICAgIGlmICghJEZvdW5kT3JpZ2luKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCJDdXN0b21pemF0aW9uIG1hcmtlcnMgZm91bmQgYnV0IG5vIG9yaWdpbiBwcmVzZW50LlxuIik7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkQ29kZTsKfQoKc3ViIHZhbGlkYXRlX2ZpbGUgewogICAgbXkgKCAkU2VsZiwgJEZpbGVuYW1lICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIEZpbGVuYW1lID0+ICRGaWxlbmFtZSApOwoKICAgIG15ICRDb2RlID0gJFNlbGYtPl9HZXRGaWxlQ29udGVudHMoJEZpbGVuYW1lKTsKCiAgICAjIENoZWNrIGlmIGFsbCBmaWxlcyBpbiB0aGUgQ3VzdG9tIGRpcmVjdG9yeSBoYXMgYW4gb3JpZ2luCiAgICBpZiAoICRGaWxlbmFtZSA9fiBteyBcL0N1c3RvbVwvIH14bXMgKSB7CgogICAgICAgICMgQ2hlY2sgaWYgYW4gb3JpZ2luIGV4aXN0LgogICAgICAgIGlmICggJENvZGUgIX4gbXsgXiBbIF0qICg/OiBcIyB8IFwvXC8gKSBbIF0rIFwkb3JpZ2luOiBbIF0rIFteXG5dKyAkIH14bXMgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCJGaWxlIGlzIGluIEN1c3RvbSBkaXJlY3RvcnkgYnV0IG5vIG9yaWdpbiBwcmVzZW50LlxuIik7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJEZpbGVuYW1lID1+IG17IC4qIFwuY3NzIH14bXNpICkgewoKICAgICAgICAjIENoZWNrIGlmIGEgQ1NTIGZpbGUgaXMgb3ZlcnJpdHRlbiBpbiBDdXN0b20gZGlyZWN0b3J5LgogICAgICAgIGlmICggJEZpbGVuYW1lID1+IG17IFwvQ3VzdG9tXC92YXJcLyB9eG1zICkgewoKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7CkZvcmJpZGRlbiB0byBoYXZlIGEgQ1NTIGZpbGUgaW4gQ3VzdG9tIGZvbGRlciwgYmVjYXVzZSBpdCdzIG5vdCBhbGxvd2VkIHRvIG92ZXJyaWRlIGFuIGV4aXN0aW5nIENTUyBmaWxlLgpVc2UgYSBuZXcgb25lIHRvIG92ZXJyaWRlIGV4aXN0aW5nIENTUyBjbGFzc2VzLgpFT0YKICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgaWYgYW4gb3JpZ2luIGV4aXN0LgogICAgICAgIGlmICggJENvZGUgPX4gbXsgXiBbIF0qICg/OiBcIyB8IFwvXC8gfCBcKiApIFsgXSsgKD86IFwkIHwgXEAgKSBvcmlnaW46IFsgXSsgW15cbl0rICQgfXhtcyApIHsKCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpGb3JiaWRkZW4gdG8gaGF2ZSBhbiBvcmlnaW4gaW4gYSBDU1MgZmlsZSwgYmVjYXVzZSBpdCdzIG5vdCBhbGxvd2VkIHRvIG92ZXJyaWRlIGFuIGV4aXN0aW5nIENTUyBmaWxlLgpVc2UgYSBuZXcgb25lIHRvIG92ZXJyaWRlIGV4aXN0aW5nIENTUyBjbGFzc2VzLgpFT0YKICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgaWYgY3VzdG9taXphdGlvbiBtYXJrZXJzIGV4aXN0cy4KICAgICAgICBpZiAoICRDb2RlID1+IG17IF4gWyBdKiAoPzogXCMgfCBcL1wvIHwgXCogfCBcL1wqICkgWyBdKyAtLS0gWyBdKiAkIH14bXMgKSB7CgogICAgICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKRm9yYmlkZGVuIHRvIGhhdmUgY3VzdG9taXphdGlvbiBtYXJrZXJzIGluIGEgQ1NTIGZpbGUsIGJlY2F1c2UgaXQncyBub3QgYWxsb3dlZCB0byBvdmVycmlkZSBhbiBleGlzdGluZyBDU1MgZmlsZS4KVXNlIGEgbmV3IG9uZSB0byBvdmVycmlkZSBleGlzdGluZyBDU1MgY2xhc3Nlcy4KRU9GCiAgICAgICAgfQogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Common/ProhibitEmailAddresses.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkNvbW1vbjo6UHJvaGliaXRFbWFpbEFkZHJlc3NlczsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkJhc2UpOwoKPWhlYWQxIFNZTk9QU0lTCgpUaGlzIHBsdWdpbiBkaXNhbGxvd3MgcHJvYmxlbWF0aWMgZW1haWwgYWRkcmVzc2VzLgoKPWN1dAoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgbXkgKCAkQ291bnRlciwgJEVycm9yTWVzc2FnZSApOwoKICAgIGZvciBteSAkTGluZSAoIHNwbGl0IC9cbi8sICRDb2RlICkgewogICAgICAgICRDb3VudGVyKys7CiAgICAgICAgaWYgKCAkTGluZSA9fiAvc3VwcG9ydFxAb3RvYm9cLig/OmNvbXxkZSkvaXNteCApIHsKICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiTGluZSAkQ291bnRlcjogJExpbmVcbiI7CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7CkRvbid0IHVzZSBzdXBwb3J0XEBvdG9iby5jb20gaW4gYW55IHNvdXJjZSBmaWxlcyBvciBkb2N1bWVudHMgYXMgdGhpcyBhZGRyZXNzIGhhcyBTUEFNIHByb2JsZW1zLgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Common/TranslatableStringsSpellCheck.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkNvbW1vbjo6VHJhbnNsYXRhYmxlU3RyaW5nc1NwZWxsQ2hlY2s7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgSW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvc291cmNlL0RST0xTS1kvQ29kZS1UaWR5QWxsLTAuNTYvbGliL0NvZGUvVGlkeUFsbC9QbHVnaW4vUG9kU3BlbGwucG0KCnVzZSBGaWxlOjpUZW1wKCk7Cgp1c2UgTW9vOwoKZXh0ZW5kcyAnVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6QmFzZSc7CgpvdXIgJEh1bnNwZWxsUGF0aDsKb3VyICRIdW5zcGVsbERpY3Rpb25hcnlQYXRoOwpvdXIgJEh1bnNwZWxsV2hpdGVsaXN0UGF0aDsKCnN1YiB2YWxpZGF0ZV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIEZpbGVuYW1lID0+ICRGaWxlICk7CgogICAgaWYgKCAhJEh1bnNwZWxsUGF0aCApIHsKICAgICAgICAkSHVuc3BlbGxQYXRoID0gYHdoaWNoIGh1bnNwZWxsYDsKICAgICAgICBjaG9tcCAkSHVuc3BlbGxQYXRoOwogICAgICAgIGlmICggISRIdW5zcGVsbFBhdGggKSB7CiAgICAgICAgICAgIHByaW50IFNUREVSUiBfX1BBQ0tBR0VfXyAuICJcbkNvdWxkIG5vdCBmaW5kICdodW5zcGVsbCcsIHNraXBwaW5nIHNwZWxsIGNoZWNrZXIgdGVzdHMuXG4iOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkSHVuc3BlbGxEaWN0aW9uYXJ5UGF0aCA9IF9fRklMRV9fOwogICAgICAgICRIdW5zcGVsbERpY3Rpb25hcnlQYXRoID1+IHN7VHJhbnNsYXRhYmxlU3RyaW5nc1NwZWxsQ2hlY2tcLnBtJH17Li4vU3RhdGljRmlsZXMvSHVuc3BlbGwvRGljdGlvbmFyaWVzfTsKCiAgICAgICAgJEh1bnNwZWxsV2hpdGVsaXN0UGF0aCA9IF9fRklMRV9fOwogICAgICAgICRIdW5zcGVsbFdoaXRlbGlzdFBhdGggPX4gc3tcLnBtJH17LldoaXRlbGlzdC50eHR9OwogICAgfQoKICAgIG15ICRUZXh0ID0gJFNlbGYtPl9FeHRyYWN0VHJhbnNsYXRhYmxlU3RyaW5ncygkRmlsZSk7CgogICAgcmV0dXJuIGlmICEkVGV4dDsKCiAgICBteSAkVGVtcEZpbGUgPSBGaWxlOjpUZW1wLT5uZXcoKTsKICAgIHByaW50ICRUZW1wRmlsZSAkVGV4dDsKICAgICRUZW1wRmlsZS0+Y2xvc2UoKTsKCiAgICBteSAkQ01EICAgID0gIiRIdW5zcGVsbFBhdGggLWQgJHtIdW5zcGVsbERpY3Rpb25hcnlQYXRofS9lbl9VUyAtcCAkSHVuc3BlbGxXaGl0ZWxpc3RQYXRoIC1hICRUZW1wRmlsZSI7CiAgICBteSAkT3V0cHV0ID0gYCRDTURgOwoKICAgIGlmICggJHteQ0hJTERfRVJST1JfTkFUSVZFfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiRXJyb3IgcnVubmluZyAnJENNRCc6ICRPdXRwdXQiKTsKICAgIH0KCiAgICBteSAoIEBFcnJvcnMsICVTZWVuICk7CiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lICggc3BsaXQoIG0vXG4vLCAkT3V0cHV0ICkgKSB7CiAgICAgICAgaWYgKCBteSAoICRPcmlnaW5hbCwgJFJlbWFpbmluZyApID0gKCAkTGluZSA9fiAvXltcJlw/XCNdIChcUyspXHMrKC4qKS8gKSApIHsKCiAgICAgICAgICAgIGlmICggJE9yaWdpbmFsID1+IG17XiBfPyBbQS1aXSsgW2EtejAtOV0rIFtBLVphLXowLTldKiB9c214ICkgewogICAgICAgICAgICAgICAgbmV4dCBMSU5FOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICEkU2VlbnskT3JpZ2luYWx9KysgKSB7CiAgICAgICAgICAgICAgICBteSAoJFN1Z2dlc3Rpb25zKSA9ICggJFJlbWFpbmluZyA9fiAvOiAoLiopLyApOwogICAgICAgICAgICAgICAgaWYgKCRTdWdnZXN0aW9ucykgewogICAgICAgICAgICAgICAgICAgIHB1c2goIEBFcnJvcnMsIHNwcmludGYoICIlcyAoc3VnZ2VzdGlvbnM6ICVzKSIsICRPcmlnaW5hbCwgJFN1Z2dlc3Rpb25zICkgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHB1c2goIEBFcnJvcnMsICRPcmlnaW5hbCApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmIChARXJyb3JzKSB7CiAgICAgICAgbXkgJEVycm9yID0gc3ByaW50ZiggIlxuVHJhbnNsYXRhYmxlIHN0cmluZ3MgY29udGFpbnMgdW5yZWNvZ25pemVkIHdvcmRzOlxuJXNcbiIsIGpvaW4oICJcbiIsIHNvcnQgQEVycm9ycyApICk7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoJEVycm9yKTsKICAgIH0KCiAgICByZXR1cm47Cn0KCnN1YiBfRXh0cmFjdFRyYW5zbGF0YWJsZVN0cmluZ3MgewogICAgbXkgKCAkU2VsZiwgJEZpbGVuYW1lICkgPSBAXzsKCiAgICBteSAkQ29kZSA9ICRTZWxmLT5fR2V0RmlsZUNvbnRlbnRzKCRGaWxlbmFtZSk7CgogICAgbXkgJFJlc3VsdDsKCiAgICBpZiAoICRGaWxlbmFtZSA9fiBtey50dCR9aXNteCApIHsKICAgICAgICAkQ29kZSA9fiBzewogICAgICAgICAgICBUcmFuc2xhdGVcKAogICAgICAgICAgICAgICAgXHMqCiAgICAgICAgICAgICAgICAoWyInXSkoLio/KSg/PCFcXClcMQogICAgICAgIH0KICAgICAgICB7CiAgICAgICAgICAgIG15ICRXb3JkID0gJDIgLy8gJyc7CgogICAgICAgICAgICAjIHVuZXNjYXBlIGFueSBcIiBvciBcJyBzaWducwogICAgICAgICAgICAkV29yZCA9fiBze1xcIn17In1zbXhnOwogICAgICAgICAgICAkV29yZCA9fiBze1xcJ317J31zbXhnOwoKICAgICAgICAgICAgJFJlc3VsdCAuPSAiJFdvcmRcbiI7CgogICAgICAgICAgICAnJzsKICAgICAgICB9ZWd4OwogICAgfQogICAgZWxzaWYgKCAkRmlsZW5hbWUgPX4gbXtcLihwbXxwbCl9aXNteCApIHsKICAgICAgICAkQ29kZSA9fiBzewogICAgICAgICAgICAoPzoKICAgICAgICAgICAgICAgIC0+VHJhbnNsYXRlIHwgVHJhbnNsYXRhYmxlCiAgICAgICAgICAgICkKICAgICAgICAgICAgXCgKICAgICAgICAgICAgICAgIFxzKgogICAgICAgICAgICAgICAgKFsiJ10pKC4qPykoPzwhXFwpXDEKICAgICAgICB9CiAgICAgICAgewogICAgICAgICAgICBteSAkV29yZCA9ICQyIC8vICcnOwoKICAgICAgICAgICAgIyB1bmVzY2FwZSBhbnkgXCIgb3IgXCcgc2lnbnMKICAgICAgICAgICAgJFdvcmQgPX4gc3tcXCJ9eyJ9c214ZzsKICAgICAgICAgICAgJFdvcmQgPX4gc3tcXCd9eyd9c214ZzsKCiAgICAgICAgICAgICMgSWdub3JlIHN0cmluZ3MgY29udGFpbmluZyB2YXJpYWJsZXMKICAgICAgICAgICAgbXkgJFNraXBXb3JkOwogICAgICAgICAgICAkU2tpcFdvcmQgPSAxIGlmICRXb3JkID1+IG17XCR9eG1zOwoKICAgICAgICAgICAgaWYgKCRXb3JkICYmICEkU2tpcFdvcmQgKSB7CiAgICAgICAgICAgICAgICAkUmVzdWx0IC49ICIkV29yZFxuIjsKICAgICAgICAgICAgfQogICAgICAgICAgICAnJzsKICAgICAgICB9ZWd4OwogICAgfQogICAgZWxzaWYgKCAkRmlsZW5hbWUgPX4gbXtcLnhtbCR9aXNteCApIHsKICAgICAgICAkQ29kZSA9fiBzewogICAgICAgICAgICA8RGF0YVtePl0rVHJhbnNsYXRhYmxlPSIxIltePl0qPiguKj8pPC9EYXRhPgogICAgICAgIH0KICAgICAgICB7CiAgICAgICAgICAgIG15ICRXb3JkID0gJDEgLy8gJyc7CiAgICAgICAgICAgIGlmICgkV29yZCkgewogICAgICAgICAgICAgICAgJFJlc3VsdCAuPSAiJFdvcmRcbiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJyc7CiAgICAgICAgfWVneDsKICAgIH0KICAgIGVsc2lmICggJEZpbGVuYW1lID1+IG17XC5qcyR9aXNteCApIHsKICAgICAgICAkQ29kZSA9fiBzewogICAgICAgICAgICAoPzoKICAgICAgICAgICAgICAgIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlCiAgICAgICAgICAgICkKICAgICAgICAgICAgXCgKICAgICAgICAgICAgICAgIFxzKgogICAgICAgICAgICAgICAgKFsiJ10pKC4qPykoPzwhXFwpXDEKICAgICAgICB9CiAgICAgICAgewogICAgICAgICAgICBteSAkV29yZCA9ICQyIC8vICcnOwoKICAgICAgICAgICAgIyB1bmVzY2FwZSBhbnkgXCIgb3IgXCcgc2lnbnMKICAgICAgICAgICAgJFdvcmQgPX4gc3tcXCJ9eyJ9c214ZzsKICAgICAgICAgICAgJFdvcmQgPX4gc3tcXCd9eyd9c214ZzsKCiAgICAgICAgICAgIGlmICggJFdvcmQgKSB7CiAgICAgICAgICAgICAgICAkUmVzdWx0IC49ICIkV29yZFxuIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJyc7CiAgICAgICAgfWVneDsKICAgIH0KCiAgICByZXR1cm4gJFJlc3VsdDsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Common/TranslatableStringsSpellCheck.Whitelist.txt" Permission="660" Encode="Base64">b3RvYm8KaXRzbQpzbGEK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Common/RemoveCVSIDs.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkNvbW1vbjo6UmVtb3ZlQ1ZTSURzOwojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpDb21tb246OkN1c3RvbWl6YXRpb25NYXJrZXJzKQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwp1c2UgRmlsZTo6Q29weSBxdyhjb3B5KTsKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6QmFzZSk7Cgo9aGVhZDEgU1lOT1BTSVMKClRoaXMgcGx1Z2luIHJlbW92ZXMgb2xkICRJZDokIHRhZ3MgYW5kIHNpbWlsYXIgdGFncyB0aGF0IHdlcmUgYXV0b21hdGljYWxseQppbnNlcnRlZCBieSBDVlMgYnV0IGFyZSBubyBsb25nZXIgc3VwcG9ydGVkIGJ5IGdpdCwgc3VjaCBhcyB0aGUgJFZFUlNJT04KdmFyaWFibGUgYXNzaWdubWVudC4gUGxlYXNlIHZlcmlmeSBpZiB5b3VyIGNvZGUgc3RpbGwgcnVucyBhZnRlciB0aGUgcmVtb3ZhbC4KCj1jdXQKCnN1YiB0cmFuc2Zvcm1fc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICAjIFJlbW92ZSAkSWQgbGluZXMKICAgICMKICAgICMgUGVybCBmaWxlcwogICAgIyAkSWQ6IE1haW4ucG0sdiAxLjY5IDIwMTMtMDItMDUgMTA6NDM6MDcgbWcgRXhwICQKICAgICMKICAgICMgSmF2YVNjcmlwdCBmaWxlcwogICAgIyAvLyAkSWQ6IENvcmUuQWdlbnQuQWRtaW4uRHluYW1pY0ZpZWxkLmpzLHYgMS4xMSAyMDEyLTA4LTA2IDEyOjMzOjI0IG1nIEV4cCAkCiAgICAkQ29kZSA9fiBzeyBeICg/OiBcIyB8IFwvXC8gKSBbIF0gXCRJZDogWyBdIC4rPyAkIFxuIH17fXhtc2c7CiAgICAkQ29kZSA9fiBzeyBeICggKD86IFwjIHwgXC9cLyApICkgWyBdIC0tICQgXG4gXiAoPzogXCMgfCBcL1wvICkgWyBdIC0tICQgXG4gfXskMSAtLVxufXhtc2c7CgogICAgIyBSZW1vdmUgJE9sZElkMiwgJE9sZElkMyBhbmQgJE9sZElkNCBsaW5lcwogICAgIwogICAgIyBQZXJsIGZpbGVzCiAgICAjICRPbGRJZDI6IE1haW4ucG0sdiAxLjY5IDIwMTMtMDItMDUgMTA6NDM6MDcgbWcgRXhwICQKICAgICMKICAgICMgSmF2YVNjcmlwdCBmaWxlcwogICAgIyAvLyAkT2xkSWQyOiBDb3JlLkFnZW50LkFkbWluLkR5bmFtaWNGaWVsZC5qcyx2IDEuMTEgMjAxMi0wOC0wNiAxMjozMzoyNCBtZyBFeHAgJAogICAgJENvZGUgPX4gc3sgXiAoPzogXCMgfCBcL1wvICkgWyBdIFwkT2xkSWQyOiBbIF0gLis/ICQgXG4gfXt9eG1zZzsKICAgICRDb2RlID1+IHN7IF4gKD86IFwjIHwgXC9cLyApIFsgXSBcJE9sZElkMzogWyBdIC4rPyAkIFxuIH17fXhtc2c7CiAgICAkQ29kZSA9fiBzeyBeICg/OiBcIyB8IFwvXC8gKSBbIF0gXCRPbGRJZDQ6IFsgXSAuKz8gJCBcbiB9e314bXNnOwoKICAgICMgUmVtb3ZlICRJZCBmcm9tIFBPRAogICAgJENvZGUgPX4gc3sgXiA9aGVhZDEgWyBdKyBWRVJTSU9OIFxuKyBeIFwkSWQ6IFsgXSsgLis/IFxuKyB9e314bXNnOwoKICAgICMgUG9zdG1hc3Rlci1UZXN0LmJveCBmaWxlcwogICAgIyBYLUNWUzogJElkOiBQb3N0TWFzdGVyLVRlc3QxLmJveCx2IDEuMiAyMDA3LzA0LzEyIDIzOjU1OjU1IG1hcnRpbiBFeHAgJAogICAgJENvZGUgPX4gc3sgXiBYLUNWUzogWyBdIFwkSWQ6IFsgXSAuKz8gJCBcbiB9e314bXNnOwogICAgJENvZGUgPX4gc3sgXiBYLUNWUzogWyBdIFwkT2xkSWQ6IFsgXSAuKz8gJCBcbiB9e314bXNnOwogICAgJENvZGUgPX4gc3sgXiBYLUNWUzogWyBdIFwkT2xkSWQyOiBbIF0gLis/ICQgXG4gfXt9eG1zZzsKCiAgICAjIGRvY2Jvb2sgYW5kIHdzZGwgYW5kIG90aGVyIFhNTCBmaWxlcwogICAgIyA8IS0tICRJZDogZ2V0LXN0YXJ0ZWQueG1sLHYgMS4xIDIwMTEtMDgtMTUgMTc6NDY6MDkgY3IgRXhwICQgLS0+CiAgICAkQ29kZSA9fiBzeyBeIDwhLS0gWyBdIFwkSWQ6IFsgXSAuKz8gJCBcbiB9e314bXNnOwogICAgJENvZGUgPX4gc3sgXiA8IS0tIFsgXSBcJE9sZElkOiBbIF0gLis/ICQgXG4gfXt9eG1zZzsKICAgICRDb2RlID1+IHN7IF4gPCEtLSBbIF0gXCRPbGRJZDI6IFsgXSAuKz8gJCBcbiB9e314bXNnOwoKICAgICMgT1RPQk8gY29uZmlnIGZpbGVzCiAgICAjIDxDVlM+JElkOiBGcmFtZXdvcmsueG1sLHYgMS41MTkgMjAxMy0wMi0xNSAxNDowNzo1NSBtZyBFeHAgJDwvQ1ZTPgogICAgJENvZGUgPX4gc3sgXiBccyogPENWUz4gXCRJZDogWyBdIC4rPyAkIFxuIH17fXhtc2c7CiAgICAkQ29kZSA9fiBzeyBeIFxzKiA8Q1ZTPiBcJE9sZElkOiBbIF0gLis/ICQgXG4gfXt9eG1zZzsKICAgICRDb2RlID1+IHN7IF4gXHMqIDxDVlM+IFwkT2xkSWQyOiBbIF0gLis/ICQgXG4gfXt9eG1zZzsKCiAgICAjIHJlbW92ZSBlbXB0eSBJZHMKICAgICMgJElkOgogICAgJENvZGUgPX4gc3sgXiBcIyBbIF0gXCRJZDogJCBcbiB9e314bXNnOwogICAgJENvZGUgPX4gc3sgXiBcIyBbIF0gXCRPbGRJZDogJCBcbiB9e314bXNnOwogICAgJENvZGUgPX4gc3sgXiBcIyBbIF0gXCRPbGRJZDI6ICQgXG4gfXt9eG1zZzsKCiAgICAjIFJlbW92ZSBWRVJTSU9OIGFzc2lnbm1lbnQgZnJvbSBDb2RlCiAgICAkQ29kZSA9fiBzeyBeXCRWRVJTSU9OIFsgXSogPSBbIF0qIC4qPyBcbn17fXhtc2c7CgogICAgIyBSZW1vdmUgVkVSU0lPTiBmcm9tIGhlbHAgb2YgcGwgc2NyaXB0cwogICAgJENvZGUgPX4gc3sgWyBdKyA8UmV2aXNpb24gXHMrIFwkVkVSU0lPTj4gWyBdKyB9eyB9eG1zZzsKICAgICRDb2RlID1+IHN7IDxSZXZpc2lvbiBccysgXCRWRVJTSU9OPiB9e314bXNnOwoKICAgICMgUmVtb3ZlIFZFUlNJT04gZnJvbSBQT0QKICAgICRDb2RlID1+IHN7IF4gPWhlYWQxIFsgXSsgVkVSU0lPTiBcbisgXiBcJFJldmlzaW9uOiAuKj8gXG4rIH17fXhtc2c7CgogICAgIyBkZWxldGUgdGhlICd1c2UgdmFycyBxdygkVkVSU0lPTik7JyBsaW5lCiAgICAkQ29kZSA9fiBzeyAoIF4gJCBcbiApPyBeIHVzZSBbIF0gdmFycyBbIF0gcXdcKFwkVkVSU0lPTlwpOyAkIFxuIH17fWl4bXM7CgogICAgIyBSZW1vdmUgQHZlcnNpb24gdGFnIGZyb20gQ1NTRG9jCiAgICAkQ29kZSA9fiBze14gWyBdKyBbKl0gWyBdKyBbQF12ZXJzaW9uIFsgXSsgXCRSZXZpc2lvbjogLio/IFxufXt9eG1zZzsKCiAgICByZXR1cm4gJENvZGU7Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Common/ValidateFilename.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkNvbW1vbjo6VmFsaWRhdGVGaWxlbmFtZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKdXNlIEZpbGU6OkNvcHkgcXcoY29weSk7CnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkJhc2UpOwoKPWhlYWQxIFNZTk9QU0lTCgpUaGlzIHBsdWdpbiBwZXJmb3JtcyBiYXNpYyBmaWxlIG5hbWUgY2hlY2tzLgoKPWN1dAoKc3ViIHZhbGlkYXRlX2ZpbGUgewogICAgbXkgKCAkU2VsZiwgJEZpbGVuYW1lICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIEZpbGVuYW1lID0+ICRGaWxlbmFtZSApOwoKICAgIG15IEBGb3JiaWRkZW5DaGFyYWN0ZXJzID0gKAogICAgICAgICcgJywgIlxuIiwgIlx0IiwgJyInLCAnYCcsICfCtCcsICdcJycsICckJywgJyEnLCAnPywnLCAnKicsCiAgICAgICAgJygnLCAnKScsICAneycsICAnfScsICdbJywgJ10nLCAgJyMnLCAgJzwnLCAnPicsICc6JywgICdcXCcsICd8JywKICAgICk7CgogICAgZm9yIG15ICRGb3JiaWRkZW5DaGFyYWN0ZXIgKEBGb3JiaWRkZW5DaGFyYWN0ZXJzKSB7CiAgICAgICAgaWYgKCBpbmRleCggJEZpbGVuYW1lLCAkRm9yYmlkZGVuQ2hhcmFjdGVyICkgPiAtMSApIHsKICAgICAgICAgICAgbXkgJEZvcmJpZGRlbkxpc3QgPSBqb2luKCAnICcsIEBGb3JiaWRkZW5DaGFyYWN0ZXJzICk7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpGb3JiaWRkZW4gY2hhcmFjdGVyICckRm9yYmlkZGVuQ2hhcmFjdGVyJyBmb3VuZCBpbiBmaWxlIG5hbWUuCllvdSBzaG91bGQgbm90IHVzZSB0aGVzZSBjaGFyYWN0ZXJzIGluIGZpbGUgbmFtZXM6ICRGb3JiaWRkZW5MaXN0LgpFT0YKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Cron/CronScripts.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkNyb246OkNyb25TY3JpcHRzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6QmFzZSk7CgojIFdlIG9ubHkgd2FudCB0byBhbGxvdyB0d28gY3JvbiBmaWxlcyBmcm9tIE9UT0JPIDUgb24gYXMgdGhlIHJlc3QgaXMgbWFuYWdlZAojIHZpYSB0aGUgY3JvbiBkYWVtb24uCgpzdWIgdmFsaWRhdGVfZmlsZSB7CiAgICBteSAoICRTZWxmLCAkRmlsZW5hbWUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggRmlsZW5hbWUgPT4gJEZpbGVuYW1lICk7CgogICAgbXkgJUFsbG93ZWRGaWxlcyA9ICgKICAgICAgICAnYWFhX2Jhc2UuZGlzdCcgICAgICAgID0+IDEsCiAgICAgICAgJ290b2JvX2RhZW1vbi5kaXN0JyAgICA9PiAxLAogICAgICAgICdvdG9ib193ZWJzZXJ2ZXIuZGlzdCcgPT4gMSwKICAgICk7CgogICAgaWYgKCAhJEFsbG93ZWRGaWxlc3sgRmlsZTo6QmFzZW5hbWU6OmJhc2VuYW1lKCRGaWxlbmFtZSkgfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKUGxlYXNlIG1pZ3JhdGUgYWxsIHNjcm9uIHNjcmlwdHMgdG8gYmUgaGFuZGxlZCB2aWEgdGhlIE9UT0JPIERhZW1vbiAoc2VlIFN5c0NvbmZpZyBzZXR0aW5nIERhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrKS4KRU9GCiAgICB9Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/JavaScript/DebugCode.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkphdmFTY3JpcHQ6OkRlYnVnQ29kZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkJhc2UpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgbXkgJEVycm9yTWVzc2FnZTsKICAgIG15ICRDb3VudGVyOwoKICAgIGZvciBteSAkTGluZSAoIHNwbGl0KCAvXG4vLCAkQ29kZSApICkgewogICAgICAgICRDb3VudGVyKys7CiAgICAgICAgaWYgKCAkTGluZSA9fiBteyBjb25zb2xlXC5sb2dcKCB9eG1zICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlCiAgICAgICAgICAgICAgICAuPSAiRVJST1I6IEphdmFTY3JpcHQgZGVidWcgY2hlY2sgZm91bmQgYSBjb25zb2xlLmxvZygpIHN0YXRlbWVudCBpbiBsaW5lKCAkQ291bnRlciApOiAkTGluZVxuIjsKICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiVGhpcyB3aWxsIGJyZWFrIElFIGFuZCBPcGVyYS4gUGxlYXNlIHJlbW92ZSBpdCBmcm9tIHlvdXIgY29kZS5cbiI7CiAgICAgICAgfQogICAgICAgIGlmICggJExpbmUgPX4gbXsgXGJ4aXRcKCB9eG1zICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlCiAgICAgICAgICAgICAgICAuPSAiRVJST1I6IEphdmFTY3JpcHQgZGVidWcgY2hlY2sgZm91bmQgYSBza2lwcGVkIHRlc3QgJ3hpdCgpJyBzdGF0ZW1lbnQgaW4gbGluZSggJENvdW50ZXIgKTogJExpbmVcbiI7CiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIklmIHRoZSB0ZXN0IGlzIG5vIGxvbmdlciBuZWNlc3NhcnksIHBsZWFzZSByZW1vdmUgaXQgZnJvbSB5b3VyIGNvZGUuXG4iOwogICAgICAgIH0KICAgIH0KICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIiRFcnJvck1lc3NhZ2UiKTsKICAgIH0KfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/JavaScript/ESLint.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkphdmFTY3JpcHQ6OkVTTGludDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBFbmNvZGU7CnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkJhc2UpOwoKb3VyICROb2RlUGF0aDsKb3VyICRFU0xpbnRQYXRoOwoKc3ViIHRyYW5zZm9ybV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlbmFtZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBGaWxlbmFtZSA9PiAkRmlsZW5hbWUgKTsKCiAgICBpZiAoICEkRVNMaW50UGF0aCApIHsKCiAgICAgICAgIyBPbiBzb21lIHN5c3RlbXMgKFVidW50dSkgbm9kZWpzIGlzIGNhbGxlZCAvdXNyL2Jpbi9ub2RlanMgaW5zdGVhZCBvZiAvdXNyL2Jpbi9ub2RlLAogICAgICAgICMgICB3aGljaCBjYW4gbGVhZCB0byBwcm9ibGVtcyB3aXRoIGNhbGxpbmcgdGhlIG5vZGUgc2NyaXB0cyBkaXJlY3RseS4gVGhlcmVmb3JlIHdlCiAgICAgICAgIyAgIGRldGVybWluZSB0aGUgbm9kZWpzIGJpbmFyeSBhbmQgY2FsbCBpdCBkaXJlY3RseS4KICAgICAgICAkTm9kZVBhdGggPSBgd2hpY2ggbm9kZWpzIDI+L2Rldi9udWxsYCB8fCBgd2hpY2ggbm9kZSAyPi9kZXYvbnVsbGA7CiAgICAgICAgY2hvbXAgJE5vZGVQYXRoOwogICAgICAgIGlmICggISROb2RlUGF0aCApIHsKICAgICAgICAgICAgZGllICJFcnJvcjogY291bGQgbm90IGZpbmQgdGhlICdub2RlanMnIGJpbmFyeS5cbiI7CiAgICAgICAgfQoKICAgICAgICAkRVNMaW50UGF0aCA9IGB3aGljaCBlc2xpbnQgMj4vZGV2L251bGxgOwogICAgICAgIGNob21wICRFU0xpbnRQYXRoOwogICAgICAgIGlmICggISRFU0xpbnRQYXRoICkgewogICAgICAgICAgICBkaWUgIkVycm9yOiBjb3VsZCBub3QgZmluZCB0aGUgJ2VzbGludCcgc2NyaXB0LlxuIjsKICAgICAgICB9CgogICAgICAgICMgRm9yY2UgdGhlIG1pbmltdW0gdmVyc2lvbiBvZiBlc2xpbnQuCiAgICAgICAgbXkgJEVTTGludFZlcnNpb24gPSBgJE5vZGVQYXRoICRFU0xpbnRQYXRoIC12YDsKICAgICAgICBjaG9tcCAkRVNMaW50VmVyc2lvbjsKICAgICAgICBteSAoICRNYWpvciwgJE1pbm9yLCAkUGF0Y2ggKSA9ICRFU0xpbnRWZXJzaW9uID1+IG17dihcZCspWy5dKFxkKylbLl0oXGQrKX07CiAgICAgICAgbXkgJENvbXBhcmUgPSBzcHJpbnRmKCAiJTAzZCUwM2QlMDNkIiwgJE1ham9yLCAkTWlub3IsICRQYXRjaCApOwogICAgICAgIGlmICggIWxlbmd0aCgkTWFqb3IpIHx8ICRDb21wYXJlIDwgNV8wMDBfMDAxICkgewogICAgICAgICAgICB1bmRlZiAkRVNMaW50UGF0aDsgICAgIyBNYWtlIHN1cmUgdG8gcmUtaXNzdWUgdGhpcyBlcnJvciBmb3IgZnV0dXJlIGZpbGVzLgogICAgICAgICAgICBkaWUgIkVycm9yOiB5b3VyIGVzbGludCB2ZXJzaW9uICgkRVNMaW50VmVyc2lvbikgaXMgb3V0ZGF0ZWQuXG4iOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkRVNMaW50Q29uZmlnUGF0aCA9IF9fRklMRV9fOwogICAgJEVTTGludENvbmZpZ1BhdGggPX4gc3tFU0xpbnRcLnBtfXtFU0xpbnQvbGVnYWN5LmVzbGludHJjLmpzfTsKICAgIGlmICggJEZpbGVuYW1lID1+IG17RnJvbnRlbmQvfSApIHsKICAgICAgICBteSAkRVNMaW50Q29uZmlnRmlsZSA9ICdFU0xpbnQvZnJvbnRlbmQuZXNsaW50cmMuNy5qcyc7CgogICAgICAgICRFU0xpbnRDb25maWdQYXRoID0gX19GSUxFX187CiAgICAgICAgJEVTTGludENvbmZpZ1BhdGggPX4gc3tFU0xpbnRcLnBtfXskRVNMaW50Q29uZmlnRmlsZX07CiAgICB9CiAgICBlbHNpZiAoICRGaWxlbmFtZSA9fiBte3NjcmlwdHMvd2VicGFja30gKSB7CiAgICAgICAgJEVTTGludENvbmZpZ1BhdGggPSBfX0ZJTEVfXzsKICAgICAgICAkRVNMaW50Q29uZmlnUGF0aCA9fiBze0VTTGludFwucG19e0VTTGludC93ZWJwYWNrLmVzbGludHJjLmpzfTsKICAgIH0KCiAgICBteSAkRVNMaW50UnVsZXNQYXRoID0gX19GSUxFX187CiAgICAkRVNMaW50UnVsZXNQYXRoID1+IHN7RVNMaW50XC5wbX17RVNMaW50L1J1bGVzfTsKCiAgICBteSAkQ29tbWFuZCA9IHNwcmludGYoCiAgICAgICAgIiVzICVzIC1jICVzIC0tcnVsZXNkaXIgJXMgLS1maXggJXMgLS1xdWlldCIsCiAgICAgICAgJE5vZGVQYXRoLCAkRVNMaW50UGF0aCwgJEVTTGludENvbmZpZ1BhdGgsICRFU0xpbnRSdWxlc1BhdGgsICRGaWxlbmFtZQogICAgKTsKCiAgICBteSAkT3V0cHV0ID0gYCRDb21tYW5kYDsKICAgIGlmICggJHteQ0hJTERfRVJST1JfTkFUSVZFfSB8fCAkT3V0cHV0ICkgewogICAgICAgIEVuY29kZTo6X3V0Zjhfb24oJE91dHB1dCk7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIiRPdXRwdXRcbiIpOwogICAgfQp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/JavaScript/ESLint/frontend.eslintrc.7.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgovKgogKiBOT1RFOiBJbiBvcmRlciBmb3IgbGludGluZyB0byB3b3JrLCB5b3Ugd2lsbCBuZWVkIGZvbGxvd2luZyBnbG9iYWxseSBpbnN0YWxsZWQgTlBNIG1vZHVsZXMKICoKICogICBucG0gaW5zdGFsbCAtZyBlc2xpbnRANSBlc2xpbnQtcGx1Z2luLWltcG9ydCBlc2xpbnQtY29uZmlnLWFpcmJuYi1iYXNlIGVzbGludC1wbHVnaW4tdnVlIGJhYmVsLWVzbGludCBlc2xpbnQtcGx1Z2luLWplc3QKICoKICogRklYTUU6IFdlIGhhdmUgdG8gcGluIHRoZSBFU0xpbnQgdmVyc2lvbiB0byA1Lnggc2luY2Ugbm90IGFsbCBwbHVnaW5zIHdlIHVzZSBhcmUgY29tcGF0aWJsZSB3aXRoIDYueCBqdXN0IHlldC4KICovCgptb2R1bGUuZXhwb3J0cyA9IHsKCiAgICBwYXJzZXJPcHRpb25zOiB7CiAgICAgICAgcGFyc2VyOiAnYmFiZWwtZXNsaW50JywKICAgICAgICBzb3VyY2VUeXBlOiAnbW9kdWxlJwogICAgfSwKCiAgICBwbHVnaW5zOiBbCiAgICAgICAgJ2plc3QnLAogICAgXSwKCiAgICBlbnY6IHsKICAgICAgICBicm93c2VyOiB0cnVlLAogICAgICAgICdqZXN0L2dsb2JhbHMnOiB0cnVlLAogICAgfSwKCiAgICBleHRlbmRzOiBbCiAgICAgICAgJ2FpcmJuYi1iYXNlJywKICAgICAgICAncGx1Z2luOnZ1ZS9yZWNvbW1lbmRlZCcsCiAgICBdLAoKICAgIGdsb2JhbHM6IHsKICAgICAgICAndHJhbnNsYXRhYmxlJzogdHJ1ZSwKICAgIH0sCgogICAgcnVsZXM6IHsKCiAgICAgICAgLyoKICAgICAgICAgKiBBaXJCbkIgSlMgcnVsZSBvdmVycmlkZXMuCiAgICAgICAgICovCgogICAgICAgIC8vIEVuZm9yY2UgY29uc2lzdGVudCBpbmRlbnRhdGlvbi4KICAgICAgICAnaW5kZW50JzogWyAnZXJyb3InLCA0LCB7CiAgICAgICAgICAgICdTd2l0Y2hDYXNlJzogMSwKICAgICAgICAgICAgLy8gRml4IGlzc3VlIHdpdGggYENhbm5vdCByZWFkIHByb3BlcnR5ICdyYW5nZScgb2YgbnVsbGAgZXJyb3JzLiBQbGVhc2Ugc2VlCiAgICAgICAgICAgIC8vICAgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDgzOTE5MTMvZXNsaW50LWVycm9yLWNhbm5vdC1yZWFkLXByb3BlcnR5LXJhbmdlLW9mLW51bGwKICAgICAgICAgICAgLy8gICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgJ2lnbm9yZWROb2Rlcyc6IFsgJ1RlbXBsYXRlTGl0ZXJhbCcgXSwKICAgICAgICB9XSwKCiAgICAgICAgLy8gRml4IGlzc3VlIHdpdGggYENhbm5vdCByZWFkIHByb3BlcnR5ICdyYW5nZScgb2YgbnVsbGAgZXJyb3JzLiBQbGVhc2Ugc2VlCiAgICAgICAgLy8gICBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80ODM5MTkxMy9lc2xpbnQtZXJyb3ItY2Fubm90LXJlYWQtcHJvcGVydHktcmFuZ2Utb2YtbnVsbAogICAgICAgIC8vICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgJ3RlbXBsYXRlLWN1cmx5LXNwYWNpbmcnOiAnb2ZmJywKCiAgICAgICAgLy8gQWxsb3cgdW5uZWNlc3NhcmlseSBxdW90ZWQgcHJvcGVydGllcy4KICAgICAgICAncXVvdGUtcHJvcHMnOiAnb2ZmJywKCiAgICAgICAgLy8gQWxsb3cgZGFuZ2xpbmcgdW5kZXJzY29yZXMgdG8gaW5kaWNhdGUgcHJpdmF0ZSBtZXRob2RzIChsaWtlIF9pbnRlcm5hbE1ldGhvZCgpKS4KICAgICAgICAnbm8tdW5kZXJzY29yZS1kYW5nbGUnOiAnb2ZmJywKCiAgICAgICAgLy8gRW5mb3JjZSBhIG1heGltdW0gbGluZSBsZW5ndGguCiAgICAgICAgJ21heC1sZW4nOiBbICdlcnJvcicsIHsgJ2NvZGUnOiAxMjAgfSBdLAoKICAgICAgICAvLyBEb24ndCB0cnkgdG8gcmVzb2x2ZSB0aGUgZGVwZW5kZW5jaWVzLgogICAgICAgICdpbXBvcnQvbm8tdW5yZXNvbHZlZCc6ICdvZmYnLAoKICAgICAgICAvLyBBbGxvdyBmb3IgbWlzc2luZyBmaWxlIGV4dGVuc2lvbnMgaW4gaW1wb3J0IHN0YXRlbWVudHMuCiAgICAgICAgJ2ltcG9ydC9leHRlbnNpb25zJzogJ29mZicsCgogICAgICAgIC8vIFJlcXVpcmUgYSBzcGFjZSBiZWZvcmUgZnVuY3Rpb24gcGFyZW50aGVzaXMuCiAgICAgICAgJ3NwYWNlLWJlZm9yZS1mdW5jdGlvbi1wYXJlbic6IFsgJ2Vycm9yJywgJ2Fsd2F5cycgXSwKCiAgICAgICAgLy8gUmVxdWlyZSAiU3Ryb3VzdHJ1cCIgYnJhY2Ugc3R5bGUuCiAgICAgICAgJ2JyYWNlLXN0eWxlJzogWyAnZXJyb3InLCAnc3Ryb3VzdHJ1cCcgXSwKCiAgICAgICAgLy8gRW5mb3JjZSBzcGFjZXMgaW5zaWRlIG9mIGJyYWNrZXRzLgogICAgICAgICdhcnJheS1icmFja2V0LXNwYWNpbmcnOiBbICdlcnJvcicsICdhbHdheXMnIF0sCgogICAgICAgIC8vIERvIG5vdCBlbmZvcmNlIHRoYXQgY2xhc3MgbWV0aG9kcyB1dGlsaXplIHRoaXMuCiAgICAgICAgJ2NsYXNzLW1ldGhvZHMtdXNlLXRoaXMnOiAnb2ZmJywKCiAgICAgICAgLy8gQWxsb3cgdGhlIHVuYXJ5IG9wZXJhdG9ycyArKyBhbmQgLS0uCiAgICAgICAgJ25vLXBsdXNwbHVzJzogJ29mZicsCgogICAgICAgIC8vIEFsbG93IFJlYXNzaWdubWVudCBvZiBGdW5jdGlvbiBQYXJhbWV0ZXJzLgogICAgICAgICduby1wYXJhbS1yZWFzc2lnbic6ICdvZmYnLAoKICAgICAgICAvLyBFbmZvcmNlIGNvbnNpc3RlbnQgbGluZSBicmVha3MgaW5zaWRlIGZ1bmN0aW9uIHBhcmVudGhlc2VzLgogICAgICAgICdmdW5jdGlvbi1wYXJlbi1uZXdsaW5lJzogWyAnZXJyb3InLCAnY29uc2lzdGVudCcgXSwKCiAgICAgICAgLy8gSWdub3JlIHRyYWlsaW5nIGNvbW1hcyBpbiB0aGUgaW1wb3J0cywgZXhwb3J0cyBhbmQgZnVuY3Rpb25zLCBidXQgcmVxdWlyZSBpdCBpbiBhcnJheXMgYW5kIG9iamVjdAogICAgICAgIC8vICAgZGVmaW5pdGlvbnMuCiAgICAgICAgJ2NvbW1hLWRhbmdsZSc6IFsKICAgICAgICAgICAgJ2Vycm9yJywKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ2FycmF5cyc6ICdhbHdheXMtbXVsdGlsaW5lJywKICAgICAgICAgICAgICAgICdvYmplY3RzJzogJ2Fsd2F5cy1tdWx0aWxpbmUnLAogICAgICAgICAgICAgICAgJ2ltcG9ydHMnOiAnaWdub3JlJywKICAgICAgICAgICAgICAgICdleHBvcnRzJzogJ2lnbm9yZScsCiAgICAgICAgICAgICAgICAnZnVuY3Rpb25zJzogJ2lnbm9yZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKCiAgICAgICAgLy8gRG8gbm90IGZvcmNlIHRoZSB1c2Ugb2YgdGhlIG9iamVjdCBzcHJlYWQganVzdCB5ZXQgKHRhcmdldCBFUzIwMTgpLgogICAgICAgICdwcmVmZXItb2JqZWN0LXNwcmVhZCc6ICdvZmYnLAoKICAgICAgICAvLyBEbyBub3QgZm9yY2UgcGFyZW50aGVzZXMgb24gYXJyb3cgZnVuY3Rpb25zIHdpdGggc2luZ2xlIGFyZ3VtZW50cy4KICAgICAgICAnYXJyb3ctcGFyZW5zJzogJ29mZicsCgogICAgICAgIC8vIEFsbG93IHJlcXVpcmUoKSBjYWxscyB3aXRoIGV4cHJlc3Npb25zIChkeW5hbWljIGltcG9ydHMpLgogICAgICAgICdpbXBvcnQvbm8tZHluYW1pYy1yZXF1aXJlJzogJ29mZicsCgogICAgICAgIC8qCiAgICAgICAgICogVnVlLmpzIHJ1bGUgb3ZlcnJpZGVzLgogICAgICAgICAqLwoKICAgICAgICAvLyBFbmZvcmNlIGNvbnNpc3RlbnQgaW5kZW50YXRpb24gaW4gPHRlbXBsYXRlPi4KICAgICAgICAndnVlL2h0bWwtaW5kZW50JzogWyAnZXJyb3InLCA0IF0sCgogICAgICAgIC8vIEVuZm9yY2Ugdi1iaW5kIGRpcmVjdGl2ZSB1c2FnZSBpbiBsb25nIGZvcm0uCiAgICAgICAgJ3Z1ZS92LWJpbmQtc3R5bGUnOiBbICdlcnJvcicsICdsb25nZm9ybScgXSwKCiAgICAgICAgLy8gRW5mb3JjZSB2LW9uIGRpcmVjdGl2ZSB1c2FnZSBpbiBsb25nIGZvcm0uCiAgICAgICAgJ3Z1ZS92LW9uLXN0eWxlJzogIFsgJ2Vycm9yJywgJ2xvbmdmb3JtJyBdLAoKICAgICAgICAvLyBEb24ndCByZXF1aXJlIGRlZmF1bHQgdmFsdWUgZm9yIHByb3BzLgogICAgICAgICd2dWUvcmVxdWlyZS1kZWZhdWx0LXByb3AnOiAnb2ZmJywKCiAgICAgICAgLy8gRG9uJ3Qgd2FybiBhYm91dCB1bnVzZWQgY29tcG9uZW50cy4gVGhpcyBpcyBzb21ldGltZSBuZWVkZWQgZm9yIGR5bmFtaWMgY29tcG9uZW50IHVzYWdlLgogICAgICAgICd2dWUvbm8tdW51c2VkLWNvbXBvbmVudHMnOiAnb2ZmJywKCiAgICAgICAgLy8gRG9uJ3QgY29ycmVjdCBjYXNpbmcgb2YgY29tcG9uZW50IG5hbWVzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHJlYXNvbnMuCiAgICAgICAgJ3Z1ZS9jb21wb25lbnQtbmFtZS1pbi10ZW1wbGF0ZS1jYXNpbmcnOiAnb2ZmJywKCiAgICAgICAgLy8gRG9uJ3QgY29ycmVjdCBjbG9zaW5nIGJyYWNrZXQgcG9zaXRpb24gb2YgSFRNTCB0YWdzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHJlYXNvbnMuCiAgICAgICAgJ3Z1ZS9odG1sLWNsb3NpbmctYnJhY2tldC1uZXdsaW5lJzogJ29mZicsCgogICAgICAgIC8vIERvbid0IGNvcnJlY3QgbmV3IGxpbmVzIGluIHNpbmdsZSBsaW5lIEhUTUwgZWxlbWVudHMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgcmVhc29ucy4KICAgICAgICAndnVlL3NpbmdsZWxpbmUtaHRtbC1lbGVtZW50LWNvbnRlbnQtbmV3bGluZSc6ICdvZmYnLAoKICAgICAgICAvLyBOT1RFOiBUaGVzZSBydWxlcyB3aWxsIGJlIHR1cm5lZCBvbiBhZ2FpbiBpbiBPVE9CTyA4LgogICAgICAgICd2dWUvYXR0cmlidXRlcy1vcmRlcic6ICdvZmYnLAogICAgICAgICd2dWUvaHRtbC1jbG9zaW5nLWJyYWNrZXQtc3BhY2luZyc6ICdvZmYnLAogICAgICAgICd2dWUvbXVsdGlsaW5lLWh0bWwtZWxlbWVudC1jb250ZW50LW5ld2xpbmUnOiAnb2ZmJywKICAgIH0sCn07Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/JavaScript/ESLint/frontend.eslintrc.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgovKgogKiBOT1RFOiBJbiBvcmRlciBmb3IgbGludGluZyB0byB3b3JrLCB5b3Ugd2lsbCBuZWVkIGZvbGxvd2luZyBnbG9iYWxseSBpbnN0YWxsZWQgTlBNIG1vZHVsZXMKICoKICogICBucG0gaW5zdGFsbCAtZyBlc2xpbnRANSBlc2xpbnQtcGx1Z2luLWltcG9ydCBlc2xpbnQtY29uZmlnLWFpcmJuYi1iYXNlIGVzbGludC1wbHVnaW4tdnVlIGJhYmVsLWVzbGludCBlc2xpbnQtcGx1Z2luLWplc3QKICoKICogRklYTUU6IFdlIGhhdmUgdG8gcGluIHRoZSBFU0xpbnQgdmVyc2lvbiB0byA1Lnggc2luY2Ugbm90IGFsbCBwbHVnaW5zIHdlIHVzZSBhcmUgY29tcGF0aWJsZSB3aXRoIDYueCBqdXN0IHlldC4KICovCgptb2R1bGUuZXhwb3J0cyA9IHsKCiAgICBwYXJzZXJPcHRpb25zOiB7CiAgICAgICAgcGFyc2VyOiAnYmFiZWwtZXNsaW50JywKICAgICAgICBzb3VyY2VUeXBlOiAnbW9kdWxlJwogICAgfSwKCiAgICBwbHVnaW5zOiBbCiAgICAgICAgJ2plc3QnLAogICAgXSwKCiAgICBlbnY6IHsKICAgICAgICBicm93c2VyOiB0cnVlLAogICAgICAgICdqZXN0L2dsb2JhbHMnOiB0cnVlLAogICAgfSwKCiAgICBleHRlbmRzOiBbCiAgICAgICAgJ2FpcmJuYi1iYXNlJywKICAgICAgICAncGx1Z2luOnZ1ZS9yZWNvbW1lbmRlZCcsCiAgICBdLAoKICAgIGdsb2JhbHM6IHsKICAgICAgICAndHJhbnNsYXRhYmxlJzogdHJ1ZSwKICAgIH0sCgogICAgcnVsZXM6IHsKCiAgICAgICAgLyoKICAgICAgICAgKiBBaXJCbkIgSlMgcnVsZSBvdmVycmlkZXMuCiAgICAgICAgICovCgogICAgICAgIC8vIEVuZm9yY2UgY29uc2lzdGVudCBpbmRlbnRhdGlvbi4KICAgICAgICAnaW5kZW50JzogWyAnZXJyb3InLCA0LCB7CiAgICAgICAgICAgICdTd2l0Y2hDYXNlJzogMSwKICAgICAgICAgICAgLy8gRml4IGlzc3VlIHdpdGggYENhbm5vdCByZWFkIHByb3BlcnR5ICdyYW5nZScgb2YgbnVsbGAgZXJyb3JzLiBQbGVhc2Ugc2VlCiAgICAgICAgICAgIC8vICAgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDgzOTE5MTMvZXNsaW50LWVycm9yLWNhbm5vdC1yZWFkLXByb3BlcnR5LXJhbmdlLW9mLW51bGwKICAgICAgICAgICAgLy8gICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgJ2lnbm9yZWROb2Rlcyc6IFsgJ1RlbXBsYXRlTGl0ZXJhbCcgXSwKICAgICAgICB9XSwKCiAgICAgICAgLy8gRml4IGlzc3VlIHdpdGggYENhbm5vdCByZWFkIHByb3BlcnR5ICdyYW5nZScgb2YgbnVsbGAgZXJyb3JzLiBQbGVhc2Ugc2VlCiAgICAgICAgLy8gICBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80ODM5MTkxMy9lc2xpbnQtZXJyb3ItY2Fubm90LXJlYWQtcHJvcGVydHktcmFuZ2Utb2YtbnVsbAogICAgICAgIC8vICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgJ3RlbXBsYXRlLWN1cmx5LXNwYWNpbmcnOiAnb2ZmJywKCiAgICAgICAgLy8gQWxsb3cgdW5uZWNlc3NhcmlseSBxdW90ZWQgcHJvcGVydGllcy4KICAgICAgICAncXVvdGUtcHJvcHMnOiAnb2ZmJywKCiAgICAgICAgLy8gQWxsb3cgZGFuZ2xpbmcgdW5kZXJzY29yZXMgdG8gaW5kaWNhdGUgcHJpdmF0ZSBtZXRob2RzIChsaWtlIF9pbnRlcm5hbE1ldGhvZCgpKS4KICAgICAgICAnbm8tdW5kZXJzY29yZS1kYW5nbGUnOiAnb2ZmJywKCiAgICAgICAgLy8gRW5mb3JjZSBhIG1heGltdW0gbGluZSBsZW5ndGguCiAgICAgICAgJ21heC1sZW4nOiBbICdlcnJvcicsIHsgJ2NvZGUnOiAxMjAgfSBdLAoKICAgICAgICAvLyBEb24ndCB0cnkgdG8gcmVzb2x2ZSB0aGUgZGVwZW5kZW5jaWVzLgogICAgICAgICdpbXBvcnQvbm8tdW5yZXNvbHZlZCc6ICdvZmYnLAoKICAgICAgICAvLyBBbGxvdyBmb3IgbWlzc2luZyBmaWxlIGV4dGVuc2lvbnMgaW4gaW1wb3J0IHN0YXRlbWVudHMuCiAgICAgICAgJ2ltcG9ydC9leHRlbnNpb25zJzogJ29mZicsCgogICAgICAgIC8vIFJlcXVpcmUgYSBzcGFjZSBiZWZvcmUgZnVuY3Rpb24gcGFyZW50aGVzaXMuCiAgICAgICAgJ3NwYWNlLWJlZm9yZS1mdW5jdGlvbi1wYXJlbic6IFsgJ2Vycm9yJywgJ2Fsd2F5cycgXSwKCiAgICAgICAgLy8gUmVxdWlyZSAiU3Ryb3VzdHJ1cCIgYnJhY2Ugc3R5bGUuCiAgICAgICAgJ2JyYWNlLXN0eWxlJzogWyAnZXJyb3InLCAnc3Ryb3VzdHJ1cCcgXSwKCiAgICAgICAgLy8gRW5mb3JjZSBzcGFjZXMgaW5zaWRlIG9mIGJyYWNrZXRzLgogICAgICAgICdhcnJheS1icmFja2V0LXNwYWNpbmcnOiBbICdlcnJvcicsICdhbHdheXMnIF0sCgogICAgICAgIC8vIERvIG5vdCBlbmZvcmNlIHRoYXQgY2xhc3MgbWV0aG9kcyB1dGlsaXplIHRoaXMuCiAgICAgICAgJ2NsYXNzLW1ldGhvZHMtdXNlLXRoaXMnOiAnb2ZmJywKCiAgICAgICAgLy8gQWxsb3cgdGhlIHVuYXJ5IG9wZXJhdG9ycyArKyBhbmQgLS0uCiAgICAgICAgJ25vLXBsdXNwbHVzJzogJ29mZicsCgogICAgICAgIC8vIEFsbG93IFJlYXNzaWdubWVudCBvZiBGdW5jdGlvbiBQYXJhbWV0ZXJzLgogICAgICAgICduby1wYXJhbS1yZWFzc2lnbic6ICdvZmYnLAoKICAgICAgICAvLyBFbmZvcmNlIGNvbnNpc3RlbnQgbGluZSBicmVha3MgaW5zaWRlIGZ1bmN0aW9uIHBhcmVudGhlc2VzLgogICAgICAgICdmdW5jdGlvbi1wYXJlbi1uZXdsaW5lJzogWyAnZXJyb3InLCAnY29uc2lzdGVudCcgXSwKCiAgICAgICAgLy8gSWdub3JlIHRyYWlsaW5nIGNvbW1hcyBpbiB0aGUgaW1wb3J0cywgZXhwb3J0cyBhbmQgZnVuY3Rpb25zLCBidXQgcmVxdWlyZSBpdCBpbiBhcnJheXMgYW5kIG9iamVjdAogICAgICAgIC8vICAgZGVmaW5pdGlvbnMuCiAgICAgICAgJ2NvbW1hLWRhbmdsZSc6IFsKICAgICAgICAgICAgJ2Vycm9yJywKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ2FycmF5cyc6ICdhbHdheXMtbXVsdGlsaW5lJywKICAgICAgICAgICAgICAgICdvYmplY3RzJzogJ2Fsd2F5cy1tdWx0aWxpbmUnLAogICAgICAgICAgICAgICAgJ2ltcG9ydHMnOiAnaWdub3JlJywKICAgICAgICAgICAgICAgICdleHBvcnRzJzogJ2lnbm9yZScsCiAgICAgICAgICAgICAgICAnZnVuY3Rpb25zJzogJ2lnbm9yZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKCiAgICAgICAgLy8gRG8gbm90IGZvcmNlIHRoZSB1c2Ugb2YgdGhlIG9iamVjdCBzcHJlYWQganVzdCB5ZXQgKHRhcmdldCBFUzIwMTgpLgogICAgICAgICdwcmVmZXItb2JqZWN0LXNwcmVhZCc6ICdvZmYnLAoKICAgICAgICAvLyBEbyBub3QgZm9yY2UgcGFyZW50aGVzZXMgb24gYXJyb3cgZnVuY3Rpb25zIHdpdGggc2luZ2xlIGFyZ3VtZW50cy4KICAgICAgICAnYXJyb3ctcGFyZW5zJzogJ29mZicsCgogICAgICAgIC8vIEFsbG93IHJlcXVpcmUoKSBjYWxscyB3aXRoIGV4cHJlc3Npb25zIChkeW5hbWljIGltcG9ydHMpLgogICAgICAgICdpbXBvcnQvbm8tZHluYW1pYy1yZXF1aXJlJzogJ29mZicsCgogICAgICAgIC8qCiAgICAgICAgICogVnVlLmpzIHJ1bGUgb3ZlcnJpZGVzLgogICAgICAgICAqLwoKICAgICAgICAvLyBFbmZvcmNlIGNvbnNpc3RlbnQgaW5kZW50YXRpb24gaW4gPHRlbXBsYXRlPi4KICAgICAgICAndnVlL2h0bWwtaW5kZW50JzogWyAnZXJyb3InLCA0IF0sCgogICAgICAgIC8vIEVuZm9yY2Ugdi1iaW5kIGRpcmVjdGl2ZSB1c2FnZSBpbiBsb25nIGZvcm0uCiAgICAgICAgJ3Z1ZS92LWJpbmQtc3R5bGUnOiBbICdlcnJvcicsICdsb25nZm9ybScgXSwKCiAgICAgICAgLy8gRW5mb3JjZSB2LW9uIGRpcmVjdGl2ZSB1c2FnZSBpbiBsb25nIGZvcm0uCiAgICAgICAgJ3Z1ZS92LW9uLXN0eWxlJzogIFsgJ2Vycm9yJywgJ2xvbmdmb3JtJyBdLAoKICAgICAgICAvLyBEb24ndCByZXF1aXJlIGRlZmF1bHQgdmFsdWUgZm9yIHByb3BzLgogICAgICAgICd2dWUvcmVxdWlyZS1kZWZhdWx0LXByb3AnOiAnb2ZmJywKCiAgICAgICAgLy8gRG9uJ3Qgd2FybiBhYm91dCB1bnVzZWQgY29tcG9uZW50cy4gVGhpcyBpcyBzb21ldGltZSBuZWVkZWQgZm9yIGR5bmFtaWMgY29tcG9uZW50IHVzYWdlLgogICAgICAgICd2dWUvbm8tdW51c2VkLWNvbXBvbmVudHMnOiAnb2ZmJywKCiAgICAgICAgLy8gRG9uJ3QgY29ycmVjdCBjYXNpbmcgb2YgY29tcG9uZW50IG5hbWVzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHJlYXNvbnMuCiAgICAgICAgJ3Z1ZS9jb21wb25lbnQtbmFtZS1pbi10ZW1wbGF0ZS1jYXNpbmcnOiAnb2ZmJywKCiAgICAgICAgLy8gRG9uJ3QgY29ycmVjdCBjbG9zaW5nIGJyYWNrZXQgcG9zaXRpb24gb2YgSFRNTCB0YWdzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHJlYXNvbnMuCiAgICAgICAgJ3Z1ZS9odG1sLWNsb3NpbmctYnJhY2tldC1uZXdsaW5lJzogJ29mZicsCgogICAgICAgIC8vIERvbid0IGNvcnJlY3QgbmV3IGxpbmVzIGluIHNpbmdsZSBsaW5lIEhUTUwgZWxlbWVudHMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgcmVhc29ucy4KICAgICAgICAndnVlL3NpbmdsZWxpbmUtaHRtbC1lbGVtZW50LWNvbnRlbnQtbmV3bGluZSc6ICdvZmYnLAogICAgfSwKfTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/JavaScript/ESLint/legacy.eslintrc.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgptb2R1bGUuZXhwb3J0cyA9IHsKICAgICJlbnYiOiB7CiAgICAgICAgImJyb3dzZXIiOiB0cnVlLAogICAgICAgICJqcXVlcnkiOiB0cnVlCiAgICB9LAogICAgImdsb2JhbHMiOiB7CiAgICAgICAgIkNvcmUiOiB0cnVlLAogICAgICAgICJDS0VESVRPUiI6IHRydWUsCiAgICAgICAgImlzSlF1ZXJ5T2JqZWN0IjogdHJ1ZSwKICAgICAgICAicHJpbnRTdGFja1RyYWNlIjogdHJ1ZSwKICAgICAgICAiUVVuaXQiOiB0cnVlLAogICAgICAgIC8vIG9sZGVyIFFVbml0IHN0dWZmCiAgICAgICAgLy8gb25seSBuZWVkZWQgZm9yIE9UT0JPIDw9IDUKICAgICAgICAvLyBjYW4gYmUgcmVtb3ZlZCBsYXRlcgogICAgICAgICJtb2R1bGUiOiB0cnVlLAogICAgICAgICJ0ZXN0IjogdHJ1ZSwKICAgICAgICAiZXhwZWN0IjogdHJ1ZSwKICAgICAgICAiZXF1YWwiOiB0cnVlLAogICAgICAgICJkZWVwRXF1YWwiOiB0cnVlLAogICAgICAgICJhc3luY1Rlc3QiOiB0cnVlLAogICAgICAgICJzdGFydCI6IHRydWUsCiAgICAgICAgIm9rIjogdHJ1ZSwKICAgICAgICAibm90RXF1YWwiOiB0cnVlCiAgICB9LAogICAgImV4dGVuZHMiOiAiZXNsaW50OnJlY29tbWVuZGVkIiwKICAgICJydWxlcyI6IHsKICAgICAgICAicXVvdGVzIjogMCwKICAgICAgICAibmV3LWNhcCI6IDAsCiAgICAgICAgImdsb2JhbC1zdHJpY3QiOiAwLAogICAgICAgICJuby1hbGVydCI6IDAsCiAgICAgICAgInJhZGl4IjogMiwKICAgICAgICAidmFsaWQtanNkb2MiOiBbMiwgewogICAgICAgICAgICAicmVxdWlyZVJldHVybiI6IGZhbHNlLAogICAgICAgICAgICAicmVxdWlyZVBhcmFtRGVzY3JpcHRpb24iOiBmYWxzZSwKICAgICAgICAgICAgInJlcXVpcmVSZXR1cm5EZXNjcmlwdGlvbiI6IGZhbHNlCiAgICAgICAgfV0sCiAgICAgICAgIm5vLWNhdGNoLXNoYWRvdyI6IDAsCiAgICAgICAgInZhcnMtb24tdG9wIjogMiwKICAgICAgICAic3BhY2UtaW4tcGFyZW5zIjogWzIsICJuZXZlciJdLAogICAgICAgICJuby1ldmFsIjogMiwKICAgICAgICAibm8taW1wbGllZC1ldmFsIjogMiwKCiAgICAgICAgLy8gT1RPQk8tc3BlY2lmaWMgcnVsZXMKICAgICAgICAibm8td2luZG93IjogMgogICAgfQp9Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/JavaScript/ESLint/webpack.eslintrc.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgovKgogKiBOT1RFOiBJbiBvcmRlciBmb3IgbGludGluZyB0byB3b3JrLCB5b3Ugd2lsbCBuZWVkIGZvbGxvd2luZyBnbG9iYWxseSBpbnN0YWxsZWQgTlBNIG1vZHVsZXM6CiAqCiAqICAgbnBtIGluc3RhbGwgLWcgZXNsaW50QDUgZXNsaW50LXBsdWdpbi1pbXBvcnQgZXNsaW50LWNvbmZpZy1haXJibmItYmFzZSBlc2xpbnQtcGx1Z2luLXZ1ZSBiYWJlbC1lc2xpbnQgZXNsaW50LXBsdWdpbi1qZXN0CiAqCiAqIEZJWE1FOiBXZSBoYXZlIHRvIHBpbiB0aGUgRVNMaW50IHZlcnNpb24gdG8gNS54IHNpbmNlIG5vdCBhbGwgcGx1Z2lucyB3ZSB1c2UgYXJlIGNvbXBhdGlibGUgd2l0aCA2LngganVzdCB5ZXQuCiAqLwoKbW9kdWxlLmV4cG9ydHMgPSB7CgogICAgZXh0ZW5kczogWwogICAgICAgICdhaXJibmItYmFzZScsCiAgICBdLAoKICAgIHJ1bGVzOiB7CgogICAgICAgIC8qCiAgICAgICAgICogQWlyQm5CIEpTIHJ1bGUgb3ZlcnJpZGVzLgogICAgICAgICAqLwoKICAgICAgICAvLyBFbmZvcmNlIGNvbnNpc3RlbnQgaW5kZW50YXRpb24uCiAgICAgICAgJ2luZGVudCc6IFsgJ2Vycm9yJywgNCwgewogICAgICAgICAgICAnU3dpdGNoQ2FzZSc6IDEsCiAgICAgICAgICAgIC8vIEZpeCBpc3N1ZSB3aXRoIGBDYW5ub3QgcmVhZCBwcm9wZXJ0eSAncmFuZ2UnIG9mIG51bGxgIGVycm9ycy4gUGxlYXNlIHNlZQogICAgICAgICAgICAvLyAgIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ4MzkxOTEzL2VzbGludC1lcnJvci1jYW5ub3QtcmVhZC1wcm9wZXJ0eS1yYW5nZS1vZi1udWxsCiAgICAgICAgICAgIC8vICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICdpZ25vcmVkTm9kZXMnOiBbICdUZW1wbGF0ZUxpdGVyYWwnIF0sCiAgICAgICAgfV0sCgogICAgICAgIC8vIEZpeCBpc3N1ZSB3aXRoIGBDYW5ub3QgcmVhZCBwcm9wZXJ0eSAncmFuZ2UnIG9mIG51bGxgIGVycm9ycy4gUGxlYXNlIHNlZQogICAgICAgIC8vICAgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDgzOTE5MTMvZXNsaW50LWVycm9yLWNhbm5vdC1yZWFkLXByb3BlcnR5LXJhbmdlLW9mLW51bGwKICAgICAgICAvLyAgIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICd0ZW1wbGF0ZS1jdXJseS1zcGFjaW5nJzogJ29mZicsCgogICAgICAgIC8vIEFsbG93IHVubmVjZXNzYXJpbHkgcXVvdGVkIHByb3BlcnRpZXMuCiAgICAgICAgJ3F1b3RlLXByb3BzJzogJ29mZicsCgogICAgICAgIC8vIEFsbG93IGRhbmdsaW5nIHVuZGVyc2NvcmVzIHRvIGluZGljYXRlIHByaXZhdGUgbWV0aG9kcyAobGlrZSBfaW50ZXJuYWxNZXRob2QoKSkuCiAgICAgICAgJ25vLXVuZGVyc2NvcmUtZGFuZ2xlJzogJ29mZicsCgogICAgICAgIC8vIEVuZm9yY2UgYSBtYXhpbXVtIGxpbmUgbGVuZ3RoLgogICAgICAgICdtYXgtbGVuJzogWyAnZXJyb3InLCB7ICdjb2RlJzogMTIwIH0gXSwKCiAgICAgICAgLy8gRG9uJ3QgdHJ5IHRvIHJlc29sdmUgdGhlIGRlcGVuZGVuY2llcy4KICAgICAgICAnaW1wb3J0L25vLXVucmVzb2x2ZWQnOiAnb2ZmJywKCiAgICAgICAgLy8gQWxsb3cgZm9yIG1pc3NpbmcgZmlsZSBleHRlbnNpb25zIGluIGltcG9ydCBzdGF0ZW1lbnRzLgogICAgICAgICdpbXBvcnQvZXh0ZW5zaW9ucyc6ICdvZmYnLAoKICAgICAgICAvLyBSZXF1aXJlIGEgc3BhY2UgYmVmb3JlIGZ1bmN0aW9uIHBhcmVudGhlc2lzLgogICAgICAgICdzcGFjZS1iZWZvcmUtZnVuY3Rpb24tcGFyZW4nOiBbICdlcnJvcicsICdhbHdheXMnIF0sCgogICAgICAgIC8vIFJlcXVpcmUgIlN0cm91c3RydXAiIGJyYWNlIHN0eWxlLgogICAgICAgICdicmFjZS1zdHlsZSc6IFsgJ2Vycm9yJywgJ3N0cm91c3RydXAnIF0sCgogICAgICAgIC8vIEVuZm9yY2Ugc3BhY2VzIGluc2lkZSBvZiBicmFja2V0cy4KICAgICAgICAnYXJyYXktYnJhY2tldC1zcGFjaW5nJzogWyAnZXJyb3InLCAnYWx3YXlzJyBdLAoKICAgICAgICAvLyBEbyBub3QgZW5mb3JjZSB0aGF0IGNsYXNzIG1ldGhvZHMgdXRpbGl6ZSB0aGlzLgogICAgICAgICdjbGFzcy1tZXRob2RzLXVzZS10aGlzJzogJ29mZicsCgogICAgICAgIC8vIEFsbG93IHRoZSB1bmFyeSBvcGVyYXRvcnMgKysgYW5kIC0tLgogICAgICAgICduby1wbHVzcGx1cyc6ICdvZmYnLAoKICAgICAgICAvLyBBbGxvdyBSZWFzc2lnbm1lbnQgb2YgRnVuY3Rpb24gUGFyYW1ldGVycy4KICAgICAgICAnbm8tcGFyYW0tcmVhc3NpZ24nOiAnb2ZmJywKCiAgICAgICAgLy8gQWxsb3cgc3RyaWN0IG1vZGUgZGlyZWN0aXZlcy4KICAgICAgICAnc3RyaWN0JzogJ29mZicsCgogICAgICAgIC8vIEFsbG93IHRoZSB1c2Ugb2YgZGV2IGRlcGVuZGVuY2llcy4KICAgICAgICAnaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzJzogWyAnZXJyb3InLCB7ICdkZXZEZXBlbmRlbmNpZXMnOiB0cnVlIH0gXSwKCiAgICAgICAgLy8gQWxsb3cgY2FsbGJhY2tzIG9mIGFycmF5J3MgbWV0aG9kcyB3aXRob3V0IHJldHVybnMuCiAgICAgICAgJ2FycmF5LWNhbGxiYWNrLXJldHVybic6ICdvZmYnLAoKICAgICAgICAvLyBSZXF1aXJlIGJyYWNlcyBpbiBhcnJvdyBmdW5jdGlvbiBib2R5LgogICAgICAgICdhcnJvdy1ib2R5LXN0eWxlJzogWyAnZXJyb3InLCAnYWx3YXlzJyBdLAoKICAgICAgICAvLyBBbGxvdyByZXF1aXJlKCkgYW55d2hlcmUgaW4gdGhlIGNvZGUuCiAgICAgICAgJ2dsb2JhbC1yZXF1aXJlJzogJ29mZicsCgogICAgICAgIC8vIEFsbG93IHRoZSB1c2Ugb2YgY29uc29sZS4KICAgICAgICAnbm8tY29uc29sZSc6ICdvZmYnLAoKICAgICAgICAvLyBEbyBub3QgcmVxdWlyZSBkZXN0cnVjdHVyaW5nIGZyb20gYXJyYXlzIGFuZCBvYmplY3RzLgogICAgICAgICdwcmVmZXItZGVzdHJ1Y3R1cmluZyc6IFsgJ2Vycm9yJywgeyAnYXJyYXknOiBmYWxzZSwgJ29iamVjdCc6IGZhbHNlIH0gXSwKCiAgICAgICAgLy8gRW5mb3JjZSBjb25zaXN0ZW50IGxpbmUgYnJlYWtzIGluc2lkZSBmdW5jdGlvbiBwYXJlbnRoZXNlcy4KICAgICAgICAnZnVuY3Rpb24tcGFyZW4tbmV3bGluZSc6IFsgJ2Vycm9yJywgJ2NvbnNpc3RlbnQnIF0sCgogICAgICAgIC8vIFJlcXVpcmVkIChmdW5jdGlvbnM6IG5ldmVyKSBzaW5jZSBwcmVwcm9jZXNzb3JzIGFyZSBub3QgaGFuZGxlZCBieSBiYWJlbC4KICAgICAgICAvLyAgU2VlIGFsc286IGh0dHBzOi8vZXNsaW50Lm9yZy9kb2NzL3J1bGVzL2NvbW1hLWRhbmdsZQogICAgICAgICJjb21tYS1kYW5nbGUiOiBbImVycm9yIiwgewogICAgICAgICAgICAiYXJyYXlzIjogImFsd2F5cy1tdWx0aWxpbmUiLAogICAgICAgICAgICAib2JqZWN0cyI6ICJhbHdheXMtbXVsdGlsaW5lIiwKICAgICAgICAgICAgImltcG9ydHMiOiAiYWx3YXlzLW11bHRpbGluZSIsCiAgICAgICAgICAgICJleHBvcnRzIjogImFsd2F5cy1tdWx0aWxpbmUiLAogICAgICAgICAgICAiZnVuY3Rpb25zIjogIm5ldmVyIiwKICAgICAgICB9XSwKCiAgICAgICAgLy8gRG8gbm90IGZvcmNlIHRoZSB1c2Ugb2YgdGhlIG9iamVjdCBzcHJlYWQganVzdCB5ZXQgKHRhcmdldCBFUzIwMTgpLgogICAgICAgICdwcmVmZXItb2JqZWN0LXNwcmVhZCc6ICdvZmYnLAoKICAgICAgICAvLyBEbyBub3QgZm9yY2UgcGFyZW50aGVzZXMgb24gYXJyb3cgZnVuY3Rpb25zIHdpdGggc2luZ2xlIGFyZ3VtZW50cy4KICAgICAgICAnYXJyb3ctcGFyZW5zJzogJ29mZicsCiAgICB9LAp9Owo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/JavaScript/ESLint/Rules/no-window.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7CgovLwovLyBSdWxlIERlZmluaXRpb24KLy8KCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oY29udGV4dCkgewoKICAgIHJldHVybiB7CiAgICAgICAgIk1lbWJlckV4cHJlc3Npb24iOiBmdW5jdGlvbihub2RlKSB7CiAgICAgICAgICAgIHZhciBPYmplY3ROYW1lLAogICAgICAgICAgICAgICAgUHJvcGVydHlOYW1lLAogICAgICAgICAgICAgICAgUmVzZXJ2ZWRXb3JkcyA9IFsib3BlbmVyIiwgInBhcmVudCIsICJvcGVuIiwgIm5hbWUiLCAiY2xvc2UiXTsKICAgICAgICAgICAgaWYgKG5vZGUub2JqZWN0LnR5cGUgPT09ICdJZGVudGlmaWVyJykgewogICAgICAgICAgICAgICAgT2JqZWN0TmFtZSA9IG5vZGUub2JqZWN0Lm5hbWU7CgogICAgICAgICAgICAgICAgaWYgKE9iamVjdE5hbWUgPT09ICd3aW5kb3cnKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUucHJvcGVydHkudHlwZSA9PT0gJ0lkZW50aWZpZXInKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFByb3BlcnR5TmFtZSA9IG5vZGUucHJvcGVydHkubmFtZTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSZXNlcnZlZFdvcmRzLmluZGV4T2YoIiIgKyBQcm9wZXJ0eU5hbWUpICE9PSAtMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5yZXBvcnQobm9kZSwgIkRvIG5vdCB1c2UgdGhlICd3aW5kb3cnIG9iamVjdC4gVXNlIHRoZSBPVE9CTyBmdW5jdGlvbnMgaW4gQ29yZS5VSS5Qb3B1cCBpbnN0ZWFkOiB3aW5kb3cue3twcm9wZXJ0eX19IiwgeyBwcm9wZXJ0eTogUHJvcGVydHlOYW1lIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKfTsKCm1vZHVsZS5leHBvcnRzLnNjaGVtYSA9IFtdOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/JavaScript/FileName.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkphdmFTY3JpcHQ6OkZpbGVOYW1lOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6QmFzZSk7CgpzdWIgdmFsaWRhdGVfZmlsZSB7CiAgICBteSAoICRTZWxmLCAkRmlsZW5hbWUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggRmlsZW5hbWUgPT4gJEZpbGVuYW1lICk7CgogICAgbXkgJENvZGUgICAgICAgPSAkU2VsZi0+X0dldEZpbGVDb250ZW50cygkRmlsZW5hbWUpOwogICAgbXkgJE5hbWVPZkZpbGUgPSBzdWJzdHIoIGJhc2VuYW1lKCRGaWxlbmFtZSksIDAsIC0zICk7ICAgICMgY3V0IG9mZiAuanMKCiAgICBteSAkQ291bnRlcjsKCiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCggL1xuLywgJENvZGUgKSApIHsKICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICBpZiAoICRMaW5lID1+IG17XihbXj0gXSspXHMqPVxzKlwoZnVuY3Rpb25ccypcKFRhcmdldE5TXClccypceyB9eG1zICkgewoKICAgICAgICAgICAgaWYgKCAkMSBuZSAkTmFtZU9mRmlsZSAmJiAkTGluZSAhfiBte14vL30gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKVGhlIGZpbGUgbmFtZSAoJE5hbWVPZkZpbGUuanMpIGlzIG5vdCBlcXVhbCB0byB0aGUgbmFtZSBvZiB0aGUgSmF2YVNjcmlwdCBuYW1lc3BhY2UgKCQxKS4KRU9GCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/JavaScript/FileNameUnitTest.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkphdmFTY3JpcHQ6OkZpbGVOYW1lVW5pdFRlc3Q7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpCYXNlKTsKCnN1YiB2YWxpZGF0ZV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlbmFtZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBGaWxlbmFtZSA9PiAkRmlsZW5hbWUgKTsKCiAgICBteSAkQ29kZSAgICAgICA9ICRTZWxmLT5fR2V0RmlsZUNvbnRlbnRzKCRGaWxlbmFtZSk7CiAgICBteSAkTmFtZU9mRmlsZSA9IHN1YnN0ciggYmFzZW5hbWUoJEZpbGVuYW1lKSwgMCwgLTMgKTsgICAgIyBjdXQgb2ZmIC5qcwoKICAgIG15ICRDb3VudGVyOwoKICAgIGZvciBteSAkTGluZSAoIHNwbGl0KCAvXG4vLCAkQ29kZSApICkgewogICAgICAgICRDb3VudGVyKys7CgogICAgICAgIGlmICggJExpbmUgPX4gbXteKFtePSBdKylccyo9XHMqXChmdW5jdGlvblxzKlwoTmFtZXNwYWNlXClccypceyB9eG1zICkgewoKICAgICAgICAgICAgaWYgKCAkMSAuICIuVW5pdFRlc3QiIG5lICROYW1lT2ZGaWxlICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7ClRoZSBmaWxlIG5hbWUgKCROYW1lT2ZGaWxlLmpzKSBpcyBub3QgY29ycmVjdCBmb3IgdGhlIHVuaXQgdGVzdHMgb2YgdGhlIEphdmFTY3JpcHQgbmFtZXNwYWNlICgkMSkuIE11c3QgYmUgJDEuVW5pdFRlc3QuanMuCkVPRgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/JavaScript/UnloadEvent.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkphdmFTY3JpcHQ6OlVubG9hZEV2ZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6QmFzZSk7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICBteSAkRXJyb3JNZXNzYWdlOwogICAgbXkgJENvdW50ZXI7CgogICAgZm9yIG15ICRMaW5lICggc3BsaXQoIC9cbi8sICRDb2RlICkgKSB7CiAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICBpZiAoICRMaW5lID1+IG17IFwuYmluZFwoWyciXXVubG9hZCB9eG1zIHx8ICRMaW5lID1+IG17IFwub25cKFsnIl11bmxvYWQgfXhtcyApIHsKICAgICAgICAgICAgJEVycm9yTWVzc2FnZQogICAgICAgICAgICAgICAgLj0gIkVSUk9SOiBGb3VuZCB3aW5kb3cgdW5sb2FkIGV2ZW50IGluIGxpbmUoICRDb3VudGVyICk6ICRMaW5lXG4iOwogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJQbGVhc2UgdXNlIENvcmUuQXBwLkJpbmRXaW5kb3dVbmxvYWRFdmVudCgpIGZvciBjcm9zcy1icm93c2VyIGNvbXBhdGliaWxpdHkuXG4iOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCIkRXJyb3JNZXNzYWdlIik7CiAgICB9Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Legal/AddressUpdate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkxlZ2FsOjpBZGRyZXNzVXBkYXRlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6QmFzZSk7CgpzdWIgdHJhbnNmb3JtX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgcmV0dXJuICRDb2RlOwp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Legal/LicenseValidator.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkxlZ2FsOjpMaWNlbnNlVmFsaWRhdG9yOwojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpDb21tb246OkN1c3RvbWl6YXRpb25NYXJrZXJzKQojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpMZWdhbDo6TGljZW5zZVZhbGlkYXRvcikKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkJhc2UpOwoKc3ViIHRyYW5zZm9ybV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgICMgaW5zZXJ0IGxpY2Vuc2UgaGVhZGVyIHRyYW5zZm9ybWF0aW9ucwoKICAgIHJldHVybiAkQ29kZTsKfQoKc3ViIHZhbGlkYXRlX2ZpbGUgewogICAgbXkgKCAkU2VsZiwgJEZpbGVuYW1lICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIEZpbGVuYW1lID0+ICRGaWxlbmFtZSApOwoKICAgIG15ICRDb2RlID0gJFNlbGYtPl9HZXRGaWxlQ29udGVudHMoJEZpbGVuYW1lKTsKCiAgICBteSAoJEZpbGV0eXBlKSA9ICRGaWxlbmFtZSA9fiBteyAuKiBcLiAoIC4rICkgfXhtc2k7CiAgICAkRmlsZXR5cGUgfHw9ICcnOwoKICAgIGlmICggJEZpbGV0eXBlIGVxICdza2VsJyApIHsKICAgICAgICAoJEZpbGV0eXBlKSA9ICRGaWxlbmFtZSA9fiBteyAuKiBcLiAoIC4rICkgXC5za2VsIH14bXNpOwogICAgfQoKICAgICMgQ2hlY2sgYSBqYXZhc2NyaXB0IGxpY2Vuc2UgaGVhZGVyLgogICAgaWYgKCBsYyAkRmlsZXR5cGUgZXEgJ2pzJyApIHsKCiAgICAgICAgbXkgJERlc2NyaXB0aW9uICAgPSBfRGVzY0pTKCk7CiAgICAgICAgbXkgJEdQTEphdmFTY3JpcHQgPSBfR1BMSmF2YVNjcmlwdCgpOwoKICAgICAgICBpZiAoICRDb2RlICF+IG17XFEkR1BMSmF2YVNjcmlwdFxFfSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIkZvdW5kIG5vIHZhbGlkIGphdmFzY3JpcHQgbGljZW5zZSBoZWFkZXIhIik7CiAgICAgICAgfQogICAgICAgIGlmICggJENvZGUgIX4gbXtcUSREZXNjcmlwdGlvblxFfSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIkZvdW5kIG5vIHZhbGlkIGRlc2NyaXB0aW9uIGluIGphdmFzY3JpcHQgbGljZW5zZSBoZWFkZXIhIik7CiAgICAgICAgfQogICAgfQoKICAgICMgQ2hlY2sgYSBwZXJsIHNjcmlwdCBsaWNlbnNlIGhlYWRlci4KICAgIGVsc2lmICggbGMgJEZpbGV0eXBlIGVxICdwbCcgfHwgbGMgJEZpbGV0eXBlIGVxICdwc2dpJyB8fCBsYyAkRmlsZXR5cGUgZXEgJ3NoJyB8fCBsYyAkRmlsZXR5cGUgZXEgJ3QnICkgewoKICAgICAgICBteSAkRGVzY3JpcHRpb24gICA9IF9EZXNjUGVybCgpOwogICAgICAgIG15ICRHUExQZXJsU2NyaXB0ID0gX0dQTFBlcmxTY3JpcHQoKTsKCiAgICAgICAgaWYgKCAkQ29kZSAhfiBte1xRJEdQTFBlcmxTY3JpcHRcRX0gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCJGb3VuZCBubyB2YWxpZCBwZXJsIHNjcmlwdCBsaWNlbnNlIGhlYWRlciEiKTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkQ29kZSAhfiBte1xRJERlc2NyaXB0aW9uXEV9ICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiRm91bmQgbm8gdmFsaWQgZGVzY3JpcHRpb24gaW4gcGVybCBsaWNlbnNlIGhlYWRlciEiKTsKICAgICAgICB9CiAgICB9CgogICAgIyBDaGVjayBjc3MgbGljZW5zZSBoZWFkZXIuCiAgICBlbHNpZiAoIGxjICRGaWxldHlwZSBlcSAnY3NzJyB8fCBsYyAkRmlsZXR5cGUgZXEgJ3Njc3MnICkgewoKICAgICAgICBteSAkRGVzY3JpcHRpb24gPSBfRGVzY0NzcygpOwogICAgICAgIG15ICRHUExDc3MgICAgICA9IF9HUExDc3MoKTsKCiAgICAgICAgaWYgKCAkQ29kZSAhfiBte1xRJEdQTENzc1xFfSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIkZvdW5kIG5vIHZhbGlkIGNzcyBsaWNlbnNlIGhlYWRlciEiKTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkQ29kZSAhfiBte1xRJERlc2NyaXB0aW9uXEV9ICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiRm91bmQgbm8gdmFsaWQgZGVzY3JpcHRpb24gaW4gY3NzIGxpY2Vuc2UgaGVhZGVyISIpOwogICAgICAgIH0KICAgIH0KCiAgICAjIENoZWNrIHZ1ZSBsaWNlbnNlIGhlYWRlci4KICAgIGVsc2lmICggbGMgJEZpbGV0eXBlIGVxICd2dWUnICkgewoKICAgICAgICBteSAkR1BMVnVlID0gX0dQTFZ1ZSgpOwoKICAgICAgICBpZiAoICRDb2RlICF+IG17XFEkR1BMVnVlXEV9ICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiRm91bmQgbm8gdmFsaWQgdnVlIGxpY2Vuc2UgaGVhZGVyISIpOwogICAgICAgIH0KICAgIH0KCiAgICAjIENoZWNrIHhtbCBsaWNlbnNlIHRhZy4KICAgIGVsc2lmICggbGMgJEZpbGV0eXBlIGVxICd4bWwnICkgewoKICAgICAgICAjIERvIG5vdCB2YWxpZGF0ZSBYTUwgZmlsZXMsIGJlY2F1c2UgdGhlcmUgYSBzbyBtYW55IGRpZmZlcmVudCBjb250ZW50IChjb25maWcgWE1MLCBkb2N1bWVudGF0aW9uIFhNTCwgLi4uKQogICAgfQoKICAgICMgQ2hlY2sgb3BtIGFuZCBzb3BtIGxpY2Vuc2UgdGFnLgogICAgZWxzaWYgKCBsYyAkRmlsZXR5cGUgZXEgJ3NvcG0nIHx8IGxjICRGaWxldHlwZSBlcSAnb3BtJyApIHsKCiAgICAgICAgbXkgJEdQTE9QTSA9IF9HUExPUE0oKTsKCiAgICAgICAgaWYgKCAkQ29kZSAhfiBte1xRJEdQTE9QTVxFfSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIkZvdW5kIG5vIHZhbGlkIE9QTSBsaWNlbnNlIGhlYWRlciEiKTsKICAgICAgICB9CiAgICB9CgogICAgIyBDaGVjayBnZW5lcmljIGxpY2Vuc2UgaGVhZGVyLgogICAgZWxzZSB7CgogICAgICAgIG15ICRHUExHZW5lcmljID0gX0dQTEdlbmVyaWMoKTsKCiAgICAgICAgaWYgKCAkQ29kZSAhfiBte1xRJEdQTEdlbmVyaWNcRX0gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCJGb3VuZCBubyB2YWxpZCBsaWNlbnNlIGhlYWRlciEiKTsKICAgICAgICB9CiAgICB9CgogICAgIyBDaGVjayBwZXJsZG9jIGxpY2Vuc2UgaGVhZGVyLgogICAgaWYgKCBsYyAkRmlsZXR5cGUgZXEgJ3BsJyB8fCBsYyAkRmlsZXR5cGUgZXEgJ3BtJyApIHsKCiAgICAgICAgaWYgKCAkQ29kZSA9fiBteyA9aGVhZDEgXHMrIFRFUk1TIFxzKyBBTkQgXHMrIENPTkRJVElPTlMgXG4rIFRoaXMgXHMrIHNvZnR3YXJlIFxzKyBpcyBccysgcGFydCB9c214ICkgewoKICAgICAgICAgICAgbXkgJEdQTFBlcmxkb2MgPSBfR1BMUGVybGRvYygpOwoKICAgICAgICAgICAgaWYgKCAkQ29kZSAhfiBte1xRJEdQTFBlcmxkb2NcRX0gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiRm91bmQgbm8gdmFsaWQgcGVybGRvYyBsaWNlbnNlIGhlYWRlciEiKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCn0KCnN1YiBfR1BMUGVybFNjcmlwdCB7CiAgICByZXR1cm4gPDwnRU5EX0dQTFBFUkxTQ1JJUFQnOwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCkVORF9HUExQRVJMU0NSSVBUCn0KCnN1YiBfR1BMSmF2YVNjcmlwdCB7CiAgICByZXR1cm4gPDwnRU5EX0dQTEpBVkFTQ1JJUFQnOwovLyAtLQovLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgovLyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQovLyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgovLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKLy8gQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKLy8gRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgovLyAtLQpFTkRfR1BMSkFWQVNDUklQVAp9CgpzdWIgX0dQTENzcyB7CiAgICByZXR1cm4gPDwnRU5EX0dQTENTUyc7CgpUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgp0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgpUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoqLwpFTkRfR1BMQ1NTCn0KCnN1YiBfR1BMVnVlIHsKICAgIHJldHVybiA8PCdFTkRfR1BMVlVFJzsKClRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCnRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uClRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVApBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwpGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0tPgpFTkRfR1BMVlVFCn0KCnN1YiBfR1BMT1BNIHsKICAgIHJldHVybiAnPExpY2Vuc2U+R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDc8L0xpY2Vuc2U+JzsKfQoKc3ViIF9HUExHZW5lcmljIHsKICAgIHJldHVybiA8PCdFTkRfR1BMR0VORVJJQyc7CiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KRU5EX0dQTEdFTkVSSUMKfQoKc3ViIF9HUExQZXJsZG9jIHsKICAgIHJldHVybiA8PCdFTkRfR1BMUEVSTERPQyc7Cj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVE9CTyBwcm9qZWN0IChMPGh0dHBzOi8vb3RvYm8ub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgpFTkRfR1BMUEVSTERPQwp9CgpzdWIgX0Rlc2NQZXJsIHsKICAgIHJldHVybiA8PCdFTkRfREVTQ1BFUkxTQ1JJUFQnOwojIC0tCiMgT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgojIC0tCkVORF9ERVNDUEVSTFNDUklQVAp9CgpzdWIgX0Rlc2NKUyB7CiAgICByZXR1cm4gPDwnRU5EX0RFU0NKUyc7Ci8vIC0tCi8vIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KLy8gLS0KRU5EX0RFU0NKUwp9CgpzdWIgX0Rlc2NDc3MgewogICAgcmV0dXJuIDw8J0VORF9ERVNDQ1NTJzsKLyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKRU5EX0RFU0NDU1MKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Legal/ReplaceCopyright.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkxlZ2FsOjpSZXBsYWNlQ29weXJpZ2h0OwoKIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6VGltZSkKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkJhc2UpOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwp1c2UgRmlsZTo6Q29weSBxdyhjb3B5KTsKCnN1YiB0cmFuc2Zvcm1fc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICAjIERvbid0IHJlcGxhY2UgY29weXJpZ2h0IGluIHRoaXJkcGFydHkgY29kZS4KICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNUaGlyZHBhcnR5TW9kdWxlKCk7CgogICAgIyBSZXBsYWNlIDxVUkw+aHR0cDovL290b2JvLm9yZy88L1VSTD4gd2l0aCA8VVJMPmh0dHBzOi8vb3RvYm8uaW8vPC9VUkw+CiAgICAkQ29kZSA9fiBzeyBeICggXHMqICkgXDwgVVJMIFw+IC4rPyBcPCBcLyBVUkwgXD4gfXskMTxVUkw+aHR0cHM6Ly9vdG9iby5pby88L1VSTD59eG1zZzsKCiAgICBteSAkQ29weSA9ICdSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vJzsKCiAgICBteSAoICRTZWMsICRNaW4sICRIb3VyLCAkRGF5LCAkTW9udGgsICRZZWFyICkgPSBsb2NhbHRpbWUoIHRpbWUoKSApOwogICAgJFllYXIgKz0gMTkwMDsKCiAgICBteSAkWWVhclN0cmluZyA9ICIyMDE5LSRZZWFyIjsKCiAgICBteSAkT3V0cHV0ID0gJyc7CgogICAgbXkgQExpbmVzID0gc3BsaXQoIC9cbi8sICRDb2RlICk7CiAgICBteSAkaSAgICAgPSAwOwoKICAgICMgaGVhZGVyIHN0YXJ0CiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lIChATGluZXMpIHsKICAgICAgICBsYXN0IExJTkUgaWYgJExpbmUgPX4gL0NvcHlyaWdodC87CgogICAgICAgICRPdXRwdXQgLj0gJExpbmUgLiAiXG4iOwogICAgICAgICRpKys7CiAgICB9CgogICAgbXkgJENvcHlTZXQgPSAwOwoKICAgICMgY29weXJpZ2h0IGJsb2NrCiAgICB3aGlsZSAoICRMaW5lc1skaV0gJiYgJExpbmVzWyRpXSA9fiAvQ29weXJpZ2h0LyApIHsKICAgICAgICBteSAkTGluZSA9ICRMaW5lc1skaV07CgogICAgICAgICMgUE9EIGNvcHlyaWdodCBzdGF0ZW1lbnRzLgogICAgICAgIGlmICggJExpbmUgPX4gL14jIENvcHlyaWdodCAuKlJvdGhlciBPU1MvICkgewogICAgICAgICAgICAkTGluZSAgICA9ICIjIENvcHlyaWdodCAoQykgJFllYXJTdHJpbmcgJENvcHkiOwogICAgICAgICAgICAkQ29weVNldCA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIHN0cmluZyBpbiBkb2N1bWVudGF0aW9uLnltbCBmaWxlcwogICAgICAgIGVsc2lmICggJExpbmUgPX4gL15Db3B5cmlnaHQ6IC4qUm90aGVyIE9TUy8gKSB7CiAgICAgICAgICAgICRMaW5lICAgID0gIkNvcHlyaWdodDogJFllYXJTdHJpbmcgJENvcHkiOwogICAgICAgICAgICAkQ29weVNldCA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIEFueSBvdGhlciBnZW5lcmljIGNvcHlyaWdodCBzdGF0ZW1lbnRzLCBlLmcgOgogICAgICAgICMgICBwcmludCAiQ29weXJpZ2h0IChjKSAyMDAzLTIwMDggUm90aGVyIE9TUyBHbWJILCBodHRwOi8vd3d3Lm90b2JvLmNvbS9cbiI7CiAgICAgICAgIyAkMiBzaG91bGQgb25seSBvY2N1ciBpbjogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9Db3B5cmlnaHQudHQKICAgICAgICBlbHNpZiAoICRMaW5lID1+IC9eKFteXG5dKilDb3B5cmlnaHQuKlJvdGhlciBPU1MuKz8oXHMrLS0+KT8kL2kgKSB7CiAgICAgICAgICAgIG15ICRFbmQgPSAkMiAvLyAnJzsKICAgICAgICAgICAgJExpbmUgICAgPSAiJDFDb3B5cmlnaHQgKEMpICRZZWFyU3RyaW5nICRDb3B5JEVuZCI7CiAgICAgICAgICAgICRDb3B5U2V0ID0gMTsKICAgICAgICB9CgogICAgICAgICRPdXRwdXQgLj0gJExpbmUgLiAiXG4iOwogICAgICAgICRpKys7CiAgICB9CgogICAgIyBpZiB3ZSBhcmUgbm90IHlldCBsaXN0ZWQgYWRkIFJvdGhlciBPU1MgR21iSCBpZiB0aGUgZmlsZSBzZWVtcyB0byBoYXZlIGFuIHVzdWFsIGNvcHlyaWdodCBoZWFkZXIKICAgICMgaW4gcmFyZSBjYXNlcyB0aGlzIGNhbiBicmVhayBmaWxlcyBhbmQgdGhlbiBuZWVkcyBmdXJ0aGVyIGFkYXB0aW9uCiAgICBpZiAoICEkQ29weVNldCAmJiAkTGluZXNbICRpIC0gMSBdID1+IC9eKFsjXC9cc10qKUNvcHlyaWdodC8gKSB7CiAgICAgICAgJE91dHB1dCAuPSAiJDFDb3B5cmlnaHQgKEMpICRZZWFyU3RyaW5nICRDb3B5XG4iOwogICAgfQoKICAgICMgYWRkIHRoZSByZXN0IG9mIHRoZSBmaWxlCiAgICBmb3IgKCAkaSAuLiAkI0xpbmVzICkgewogICAgICAgICRPdXRwdXQgLj0gJExpbmVzWyRfXSAuICJcbiI7CiAgICB9CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Legal/SOPMLicense.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkxlZ2FsOjpTT1BNTGljZW5zZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkJhc2UpOwoKc3ViIHRyYW5zZm9ybV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgICMgUmVwbGFjZSBsaWNlbnNlIHdpdGggR1BMMwogICAgJENvZGUKICAgICAgICA9fiBzezxMaWNlbnNlPiAuKj8gPC9MaWNlbnNlPn17PExpY2Vuc2U+R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDc8L0xpY2Vuc2U+fWdzbXg7CgogICAgcmV0dXJuICRDb2RlOwp9CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICBpZiAoICRDb2RlICF+IG17PExpY2Vuc2U+IC4rPyA8L0xpY2Vuc2U+fXNteCApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiQ291bGQgbm90IGZpbmQgYSB2YWxpZCBPUE0gbGljZW5zZSBoZWFkZXIuIik7CiAgICB9CgogICAgaWYgKAogICAgICAgICRDb2RlCiAgICAgICAgIX4gbXs8TGljZW5zZT5HTlUgXHMgR0VORVJBTCBccyBQVUJMSUMgXHMgTElDRU5TRSBccyBWZXJzaW9uIFxzIDMsIFxzIDI5IFxzIEp1bmUgXHMgMjAwNzwvTGljZW5zZT59c214CiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpJbnZhbGlkIGxpY2Vuc2UgZm91bmQuClVzZSA8TGljZW5zZT5HTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRSBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNzwvTGljZW5zZT4uCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Migrations/OTOBO10/DateTime.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86Ok1pZ3JhdGlvbnM6Ok9UT0JPMTA6OkRhdGVUaW1lOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6QmFzZSk7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICAjIGFjdGl2ZSBvbmx5IGZvciBPVE9CTyAxMAogICAgcmV0dXJuIHVubGVzcyAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDExLCAwICk7CgogICAgbXkgKCAkQ291bnRlciwgJEVycm9yTWVzc2FnZSApOwoKICAgIExJTkU6CiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICBuZXh0IExJTkUgaWYgJExpbmUgPX4gbS9eXHMqXCMvc214OwoKICAgICAgICAjIExvb2sgZm9yIGNvZGUgdGhhdCB1c2VzIG5vdCBhbGxvd2VkIGRhdGUvdGltZSBtb2R1bGVzIGFuZCBmdW5jdGlvbnMKICAgICAgICBpZiAoICRMaW5lID1+IG17KHVzZVxzKyhEYXRlOjpQY2FsY3xUaW1lOjpMb2NhbHxUaW1lOjpQaWVjZSl8XGIodGltZWxvY2FsfGdtdGltZXx0aW1lZ20pXHMqXCgpfXNtICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKVXNlIG9mIERhdGU6OlBjYWxjLCBUaW1lOjpMb2NhbCwgVGltZTo6UGllY2UsIHRpbWVsb2NhbCwgZ210aW1lIGFuZCB0aW1lZ20gaXMgbm90IGFsbG93ZWQgYW55bW9yZS4gVXNlIEtlcm5lbDo6U3lzdGVtOjpEYXRlVGltZSBpbnN0ZWFkLgogICAgUGxlYXNlIHNlZSBodHRwOi8vZG9jLm90b2JvLmNvbS9kb2MvbWFudWFsL2RldmVsb3Blci82LjAvZW4vaHRtbC9wYWNrYWdlLXBvcnRpbmcuaHRtbCNwYWNrYWdlLXBvcnRpbmctNS10by02IGZvciBwb3J0aW5nIGd1aWRlbGluZXMuCiRFcnJvck1lc3NhZ2UKRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Migrations/OTOBO10/PerlConfigFileFormat.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86Ok1pZ3JhdGlvbnM6Ok9UT0JPMTA6OlBlcmxDb25maWdGaWxlRm9ybWF0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6QmFzZSk7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICAjIGFjdGl2ZSBvbmx5IGZvciBPVE9CTyAxMAogICAgcmV0dXJuIHVubGVzcyAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDExLCAwICk7CgogICAgaWYgKCAkQ29kZSAhfiBte15wYWNrYWdlIFxzfXNteCB8fCAkQ29kZSAhfiBte15zdWIgXHMrIExvYWR9c214ICkgewoKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKUGVybCBjb25maWd1cmF0aW9uIGZpbGVzIGZvciBPVE9CTyAxMCsgbXVzdCB1c2UgdGhlIHRoZSBuZXcgZm9ybWF0IGxpa2UgS2VybmVsL0NvbmZpZy9GaWxlcy9aWlpBQXV0by5wbSAodGhleSBuZWVkIHRvIGJlIGNyZWF0ZWQgYXMgYSBwYWNrYWdlIHdpdGggYSBMb2FkKCkgbWV0aG9kKS4KRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Migrations/OTOBO10/PermissionDataNotInSession.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86Ok1pZ3JhdGlvbnM6Ok9UT0JPMTA6OlBlcm1pc3Npb25EYXRhTm90SW5TZXNzaW9uOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6QmFzZSk7CgojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpNaWdyYXRpb25zOjpPVE9CTzEwOjpQZXJtaXNzaW9uRGF0YU5vdEluU2Vzc2lvbikKIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6T2JqZWN0RGVwZW5kZW5jaWVzKQoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgIyBhY3RpdmUgb25seSBmb3IgT1RPQk8gMTAKICAgIHJldHVybiB1bmxlc3MgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCAxMSwgMCApOwoKICAgIG15ICggJENvdW50ZXIsICRFcnJvck1lc3NhZ2UgKTsKCiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lICggc3BsaXQgL1xuLywgJENvZGUgKSB7CiAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgbmV4dCBMSU5FIGlmICRMaW5lID1+IG0vXlxzKlwjL3NteDsKCiAgICAgICAgaWYgKCAkTGluZSA9fiBte1VzZXJJc0dyb3VwfXNtICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKU2luY2UgT1RPQk8gMTAsIGdyb3VwIHBlcm1pc3Npb24gaW5mb3JtYXRpb24gaXMgbm8gbG9uZ2VyIHN0b3JlZCBpbiB0aGUgc2Vzc2lvbiBub3IgdGhlIExheW91dE9iamVjdCBhbmQgY2Fubm90IGJlIGZldGNoZWQgd2l0aCAnVXNlcklzR3JvdXBbXScuIEluc3RlYWQsIGl0IGNhbiBiZSBmZXRjaGVkIHdpdGggUGVybWlzc2lvbkNoZWNrKCkgb24gS2VybmVsOjpTeXN0ZW06Okdyb3VwIG9yIEtlcm5lbDo6U3lzdGVtOjpDdXN0b21lckdyb3VwLgoKRXhhbXBsZToKCiAgICBteSBcJEhhc1Blcm1pc3Npb24gPSBcJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPlBlcm1pc3Npb25DaGVjaygKICAgICAgICBVc2VySUQgICAgPT4gXCRVc2VySUQsCiAgICAgICAgR3JvdXBOYW1lID0+IFwkR3JvdXBOYW1lLAogICAgICAgIFR5cGUgICAgICA9PiAnbW92ZV9pbnRvJywKICAgICk7CgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Migrations/OTOBO10/SysConfig.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86Ok1pZ3JhdGlvbnM6Ok9UT0JPMTA6OlN5c0NvbmZpZzsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkJhc2UpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgIyBhY3RpdmUgb25seSBmb3IgT1RPQk8gMTAKICAgIHJldHVybiB1bmxlc3MgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCAxMSwgMCApOwoKICAgIG15ICggJENvdW50ZXIsICRFcnJvck1lc3NhZ2UgKTsKCiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lICggc3BsaXQgL1xuLywgJENvZGUgKSB7CiAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgbmV4dCBMSU5FIGlmICRMaW5lID1+IG0vXlxzKlwjL3NteDsKCiAgICAgICAgIyBMb29rIGZvciBjb2RlIHRoYXQgdXNlcyBub3Qgbm90IGV4aXN0aW5nIGZ1bmN0aW9ucy4KICAgICAgICBpZiAoCiAgICAgICAgICAgICRMaW5lID1+IG17CiAgICAgICAgICAgIC0+KENyZWF0ZUNvbmZpZ3xDb25maWdJdGVtVXBkYXRlfENvbmZpZ0l0ZW1HZXR8Q29uZmlnSXRlbVJlc2V0CiAgICAgICAgICAgIHxDb25maWdJdGVtVmFsaWRpdHlVcGRhdGV8Q29uZmlnR3JvdXBMaXN0fENvbmZpZ1N1Ykdyb3VwTGlzdAogICAgICAgICAgICB8Q29uZmlnU3ViR3JvdXBDb25maWdJdGVtTGlzdHxDb25maWdJdGVtU2VhcmNofENvbmZpZ0l0ZW1UcmFuc2xhdGFibGVTdHJpbmdzCiAgICAgICAgICAgIHxDb25maWdJdGVtVmFsaWRhdGV8Q29uZmlnSXRlbUNoZWNrQWxsKVwofXNteAogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAjIFNraXAgSVRTTSBmdW5jdGlvbnMsIHdoaWNoIGhhdmUgc2FtZSBuYW1lLgogICAgICAgICAgICBuZXh0IExJTkUgaWYgJExpbmUgPX4gbXtDb25maWdJdGVtT2JqZWN0fTsKICAgICAgICAgICAgbmV4dCBMSU5FIGlmICRMaW5lID1+IG17SVRTTX07CgogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKVXNlIG9mIHVuZXhpc3RpbmcgbWV0aG9kcyBpbiBLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnIGlzIG5vdCBhbGxvd2VkIChDcmVhdGVDb25maWcsIENvbmZpZ0l0ZW1VcGRhdGUsCkNvbmZpZ0l0ZW1HZXQsIENvbmZpZ0l0ZW1SZXNldCwgQ29uZmlnSXRlbVZhbGlkaXR5VXBkYXRlLENvbmZpZ0dyb3VwTGlzdCwgQ29uZmlnU3ViR3JvdXBMaXN0LApDb25maWdTdWJHcm91cENvbmZpZ0l0ZW1MaXN0LCBDb25maWdJdGVtU2VhcmNoLCBDb25maWdJdGVtVHJhbnNsYXRhYmxlU3RyaW5ncywgQ29uZmlnSXRlbVZhbGlkYXRlCmFuZCBDb25maWdJdGVtQ2hlY2tBbGwpLgoKICAgIFBsZWFzZSBzZWUgaHR0cDovL2RvYy5vdG9iby5jb20vZG9jL21hbnVhbC9kZXZlbG9wZXIvNi4wL2VuL2h0bWwvcGFja2FnZS1wb3J0aW5nLmh0bWwjcGFja2FnZS1wb3J0aW5nLTUtdG8tNiBmb3IgcG9ydGluZyBndWlkZWxpbmVzLgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Migrations/OTOBO10/TimeObject.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86Ok1pZ3JhdGlvbnM6Ok9UT0JPMTA6OlRpbWVPYmplY3Q7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB2NS4yNDsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6QmFzZSk7CgojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpNaWdyYXRpb25zOjpPVE9CTzEwOjpUaW1lT2JqZWN0KQoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgIyBhY3RpdmUgb25seSBmb3IgT1RPQk8gMTAKICAgIHJldHVybiB1bmxlc3MgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCAxMSwgMCApOwoKICAgIG15ICggJENvdW50ZXIsICRFcnJvck1lc3NhZ2UgKTsKCiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lICggc3BsaXQgL1xuLywgJENvZGUgKSB7CiAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgbmV4dCBMSU5FIGlmICRMaW5lID1+IG0vXlxzKlwjL3NteDsKCiAgICAgICAgaWYgKCAkTGluZSA9fiBte0tlcm5lbDo6U3lzdGVtOjpUaW1lW15hLXpBLVpdfXNtICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKVXNlIG9mIGRlcHJlY2F0ZWQgS2VybmVsOjpTeXN0ZW06OlRpbWUgaXMgbm90IGFsbG93ZWQgYW55bW9yZSBleGNlcHQgZm9yIGxlZ2FjeSBBUEkgaW50ZXJmYWNlcy4gUGxlYXNlIHVzZSBLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUgaW5zdGVhZC4KICAgIFBsZWFzZSBzZWUgaHR0cHM6Ly9kb2Mub3RvYm8ub3JnL21hbnVhbC9kZXZlbG9wZXIvc3RhYmxlL2VuL2NvbnRlbnQvaG93LWl0LXdvcmtzL2RhdGUtdGltZS5odG1sLgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Migrations/OTOBO10/TimeZoneOffset.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86Ok1pZ3JhdGlvbnM6Ok9UT0JPMTA6OlRpbWVab25lT2Zmc2V0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6QmFzZSk7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICAjIGFjdGl2ZSBvbmx5IGZvciBPVE9CTyAxMAogICAgcmV0dXJuIHVubGVzcyAkU2VsZi0+SXNGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW4oIDExLCAwICk7CgogICAgbXkgKCAkQ291bnRlciwgJEVycm9yTWVzc2FnZSApOwoKICAgIGZvciBteSAkTGluZSAoIHNwbGl0IC9cbi8sICRDb2RlICkgewogICAgICAgICRDb3VudGVyKys7CgogICAgICAgICMgTG9vayBmb3IgY29kZSB0aGF0IG1pZ2h0IGNvbnRhaW4gb2xkIHRpbWUgem9uZSBvZmZzZXQgY2FsY3VsYXRpb25zCiAgICAgICAgaWYgKAogICAgICAgICAgICAkTGluZSA9fiBteyh0aW1lem9uZXx0aW1lIHpvbmUpfXNtaQogICAgICAgICAgICAmJiAkTGluZSA9fiBtezM2MDB9c21pCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkxpbmUgJENvdW50ZXI6ICRMaW5lXG4iOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpDb2RlIG1pZ2h0IGNvbnRhaW4gZGVwcmVjYXRlZCB0aW1lIHpvbmUgb2Zmc2V0IGNhbGN1bGF0aW9ucy4gT25seSB1c2UgbWV0aG9kcyBwcm92aWRlZCBieSBLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUgdG8gY2hhbmdlIHRpbWUgem9uZXMgYW5kIGNhbGN1bGF0ZSBkYXRlL3RpbWUuCiRFcnJvck1lc3NhZ2UKRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Migrations/OTOBO10/XMLFrontendNavigation.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86Ok1pZ3JhdGlvbnM6Ok9UT0JPMTA6OlhNTEZyb250ZW5kTmF2aWdhdGlvbjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkJhc2UpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgIyBhY3RpdmUgb25seSBmb3IgT1RPQk8gMTAKICAgIHJldHVybiB1bmxlc3MgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCAxMSwgMCApOwoKICAgIG15ICggJENvdW50ZXIsICRFcnJvck1lc3NhZ2UgKTsKCiAgICBteSAoICRDdXJyZW50U2V0dGluZ05hbWUsICRJblZhbHVlLCAkVmFsdWVDb250ZW50ICk7CgogICAgTElORToKICAgIGZvciBteSAkTGluZSAoIHNwbGl0IC9cbi8sICRDb2RlICkgewogICAgICAgICRDb3VudGVyKys7CgogICAgICAgIGlmICggJExpbmUgPX4gbXs8U2V0dGluZ1xzK05hbWU9IiguKj8pIn1zbXggKSB7CiAgICAgICAgICAgICRDdXJyZW50U2V0dGluZ05hbWUgPSAkMTsKICAgICAgICAgICAgJEluVmFsdWUgICAgICAgICAgICA9IDA7CiAgICAgICAgICAgICRWYWx1ZUNvbnRlbnQgICAgICAgPSAnJzsKICAgICAgICB9CgogICAgICAgICRJblZhbHVlID0gMSAgICAgICAgICAgICAgICAgIGlmICRMaW5lID1+IG17PFZhbHVlPn07CiAgICAgICAgJFZhbHVlQ29udGVudCAuPSAiXG4iIC4gJExpbmUgaWYgJEluVmFsdWU7CiAgICAgICAgJEluVmFsdWUgPSAwICAgICAgICAgICAgICAgICAgaWYgJExpbmUgPX4gbXs8L1ZhbHVlPn07CgogICAgICAgIG5leHQgTElORSBpZiAhJFZhbHVlQ29udGVudCB8fCAkSW5WYWx1ZTsKCiAgICAgICAgbXkgQFJ1bGVzID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgPT4gJ1ZhbGlkIHRvcGxldmVsIGVudHJpZXMnLAogICAgICAgICAgICAgICAgTWF0Y2hTZXR0aW5nTmFtZSAgICAgICAgID0+IHFye14oQ3VzdG9tZXJ8UHVibGljKT9Gcm9udGVuZDo6TmF2aWdhdGlvbiMjIy4qfSwKICAgICAgICAgICAgICAgIFJlcXVpcmVWYWx1ZUNvbnRlbnRNYXRjaCA9PiBxcns8QXJyYXk+Lio8RGVmYXVsdEl0ZW1bXj5dK1ZhbHVlVHlwZT0iRnJvbnRlbmROYXZpZ2F0aW9uIn1zbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBSVUxFOgogICAgICAgIGZvciBteSAkUnVsZSAoQFJ1bGVzKSB7CiAgICAgICAgICAgIG5leHQgUlVMRSBpZiAkQ3VycmVudFNldHRpbmdOYW1lICF+ICRSdWxlLT57TWF0Y2hTZXR0aW5nTmFtZX07CgogICAgICAgICAgICBpZiAoICRWYWx1ZUNvbnRlbnQgIX4gJFJ1bGUtPntSZXF1aXJlVmFsdWVDb250ZW50TWF0Y2h9ICkgewogICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZQogICAgICAgICAgICAgICAgICAgIC49ICJJbmNvcnJlY3QgbWFpbiBtZW51IHJlZ2lzdHJhdGlvbiBmb3VuZCBpbiBzZXR0aW5nICRDdXJyZW50U2V0dGluZ05hbWU6JFZhbHVlQ29udGVudFxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpQcm9ibGVtcyB3ZXJlIGZvdW5kIGluIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIFhNTCBjb25maWd1cmF0aW9uOgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB2NS4yNDsKdXNlIHV0Zjg7Cgp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpCYXNlKTsKCnVzZSBQb2Q6OlN0cmlwKCk7CgojIFByb2Nlc3MgUGVybCBjb2RlIGFuZCByZXBsYWNlIGFsbCBQb2Qgc2VjdGlvbnMgd2l0aCBjb21tZW50cy4Kc3ViIFN0cmlwUG9kIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFBvZFN0cmlwID0gUG9kOjpTdHJpcC0+bmV3KCk7CiAgICAkUG9kU3RyaXAtPnJlcGxhY2Vfd2l0aF9jb21tZW50cygxKTsKICAgIG15ICRDb2RlOwogICAgJFBvZFN0cmlwLT5vdXRwdXRfc3RyaW5nKCBcJENvZGUgKTsKICAgICRQb2RTdHJpcC0+cGFyc2Vfc3RyaW5nX2RvY3VtZW50KCAkUGFyYW17Q29kZX0gKTsKICAgIHJldHVybiAkQ29kZTsKfQoKc3ViIFN0cmlwQ29tbWVudHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29kZSA9ICRQYXJhbXtDb2RlfTsKICAgICRDb2RlID1+IHMvXiBccyogXCMgLio/ICQvXG4vc214ZzsKICAgIHJldHVybiAkQ29kZTsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/BinScripts.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OkJpblNjcmlwdHM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsKTsKCiMgV2Ugb25seSB3YW50IHRvIGFsbG93IGEgaGFuZGZ1bCBvZiBzY3JpcHRzIGluIGJpbi4gQWxsIHRoZSByZXN0IHNob3VsZCBiZQojICAgbWlncmF0ZWQgdG8gY29uc29sZSBjb21tYW5kcy4KCnN1YiB2YWxpZGF0ZV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlbmFtZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBGaWxlbmFtZSA9PiAkRmlsZW5hbWUgKTsKCiAgICBteSAlQWxsb3dlZEZpbGVzID0gKAogICAgICAgICdvdG9iby5DaGVja01vZHVsZXMucGwnICAgPT4gMSwKICAgICAgICAnb3RvYm8uQ2hlY2tTdW0ucGwnICAgICAgID0+IDEsCiAgICAgICAgJ290b2JvLkNvZGVQb2xpY3kucGwnICAgICA9PiAxLAogICAgICAgICdvdG9iby5Db25zb2xlLnBsJyAgICAgICAgPT4gMSwKICAgICAgICAnb3RvYm8uRGFlbW9uLnBsJyAgICAgICAgID0+IDEsCiAgICAgICAgJ290b2JvLlNldFBlcm1pc3Npb25zLnBsJyA9PiAxLAogICAgKTsKCiAgICBpZiAoICEkQWxsb3dlZEZpbGVzeyBGaWxlOjpCYXNlbmFtZTo6YmFzZW5hbWUoJEZpbGVuYW1lKSB9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpQbGVhc2UgbWlncmF0ZSBhbGwgYmluLyBzY3JpcHRzIHRvIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kIG9iamVjdHMuCkVPRgogICAgfQp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/CacheNew.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OkNhY2hlTmV3OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybCk7CgojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpDYWNoZU5ldykKIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6T2JqZWN0RGVwZW5kZW5jaWVzKQoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgJENvZGUgPSAkU2VsZi0+U3RyaXBQb2QoIENvZGUgPT4gJENvZGUgKTsKCiAgICBteSAoICRFcnJvck1lc3NhZ2UsICRDb3VudGVyICk7CgogICAgTElORToKICAgIGZvciBteSAkTGluZSAoIHNwbGl0IC9cbi8sICRDb2RlICkgewogICAgICAgICRDb3VudGVyKys7CgogICAgICAgIGlmICggJExpbmUgPX4gbS9LZXJuZWw6OlN5c3RlbTo6Q2FjaGUtPm5ldy9zbXggKSB7CiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkxpbmUgJENvdW50ZXI6ICRMaW5lXG4iOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpEb24ndCBjcmVhdGUgeW91ciBvd24gaW5zdGFuY2Ugb2YgS2VybmVsOjpTeXN0ZW06OkNhY2hlLnBtLCBidXQgdXNlICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpIGluc3RlYWQuCiRFcnJvck1lc3NhZ2UKRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/Critic/Policy/OTOBO/ProhibitGoto.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFBlcmw6OkNyaXRpYzo6UG9saWN5OjpPVE9CTzo6UHJvaGliaXRHb3RvOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIFBlcmw6OkNyaXRpYzo6VXRpbHMgcXd7fTsKdXNlIHBhcmVudCAnUGVybDo6Q3JpdGljOjpQb2xpY3knOwoKb3VyICRWRVJTSU9OID0gJzAuMDEnOwoKbXkgJERlc2NyaXB0aW9uID0gcXtEb24ndCB1c2UgImdvdG8iIGluIFBlcmwgY29kZS59OwpteSAkRXhwbGFuYXRpb24gPSBxe307CgpzdWIgc3VwcG9ydGVkX3BhcmFtZXRlcnMgeyByZXR1cm47IH0Kc3ViIGRlZmF1bHRfc2V2ZXJpdHkgICAgIHsgcmV0dXJuICRQZXJsOjpDcml0aWM6OlV0aWxzOjpTRVZFUklUWV9ISUdIRVNUOyB9CnN1YiBkZWZhdWx0X3RoZW1lcyAgICAgICB7IHJldHVybiBxdyggb3RvYm8gKSB9CnN1YiBhcHBsaWVzX3RvICAgICAgICAgICB7IHJldHVybiAnUFBJOjpUb2tlbjo6V29yZCcgfQoKc3ViIHZpb2xhdGVzIHsKICAgIG15ICggJFNlbGYsICRFbGVtZW50ICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJEVsZW1lbnQgbmUgJ2dvdG8nOwogICAgcmV0dXJuICRTZWxmLT52aW9sYXRpb24oICREZXNjcmlwdGlvbiwgJEV4cGxhbmF0aW9uLCAkRWxlbWVudCApOwp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/Critic/Policy/OTOBO/ProhibitLowPrecedenceOps.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFBlcmw6OkNyaXRpYzo6UG9saWN5OjpPVE9CTzo6UHJvaGliaXRMb3dQcmVjZWRlbmNlT3BzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdjUuMjQ7CnVzZSB1dGY4OwoKdXNlIHBhcmVudCAnUGVybDo6Q3JpdGljOjpQb2xpY3knOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCnVzZSBQZXJsOjpDcml0aWM6OlV0aWxzIHF3e307CgojIE9UT0JPIG1vZHVsZXMKCm91ciAkVkVSU0lPTiA9ICcwLjAxJzsKCm15ICREZXNjcmlwdGlvbiA9IHF7VXNpbmcgbG93IHByZWNlZGVuY2Ugb3BlcmF0b3JzIGlzIG5vdCBhbGxvd2VkfTsKbXkgJEV4cGxhbmF0aW9uID0KICAgIHF7UmVwbGFjZSBsb3cgcHJlY2VkZW5jZSBvcGVyYXRvcnMgd2l0aCB0aGUgaGlnaCBwcmVjZWRlbmNlIHN1YnN0aXR1dGVzfTsKCm15ICVMb3dQcmVjZWRlbmNlT3BzID0gKAogICAgbm90ID0+ICchJywKICAgIGFuZCA9PiAnJiYnLAogICAgb3IgID0+ICd8fCcsCik7CgpzdWIgc3VwcG9ydGVkX3BhcmFtZXRlcnMgeyByZXR1cm47IH0Kc3ViIGRlZmF1bHRfc2V2ZXJpdHkgICAgIHsgcmV0dXJuICRQZXJsOjpDcml0aWM6OlV0aWxzOjpTRVZFUklUWV9ISUdIRVNUOyB9CnN1YiBkZWZhdWx0X3RoZW1lcyAgICAgICB7IHJldHVybiBxdyggb3RvYm8gKSB9CnN1YiBhcHBsaWVzX3RvICAgICAgICAgICB7IHJldHVybiAnUFBJOjpUb2tlbjo6T3BlcmF0b3InIH0KCnN1YiB2aW9sYXRlcyB7CiAgICBteSAoICRTZWxmLCAkT3AgKSA9IEBfOwoKICAgICMgSXMgdGhlIGVuY291bnRlcmVkIG9wIGEgbG93IHByZWNlZGVuY2Ugb3AgPwogICAgcmV0dXJuIHVubGVzcyBleGlzdHMgJExvd1ByZWNlZGVuY2VPcHN7JE9wfTsKICAgIHJldHVybiAkU2VsZi0+dmlvbGF0aW9uKCAkRGVzY3JpcHRpb24sICRFeHBsYW5hdGlvbiwgJE9wICk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/Critic/Policy/OTOBO/ProhibitOpen.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFBlcmw6OkNyaXRpYzo6UG9saWN5OjpPVE9CTzo6UHJvaGliaXRPcGVuOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIFBlcmw6OkNyaXRpYzo6VXRpbHMgcXd7aXNfZnVuY3Rpb25fY2FsbH07CnVzZSBwYXJlbnQgJ1Blcmw6OkNyaXRpYzo6UG9saWN5JzsKCm91ciAkVkVSU0lPTiA9ICcwLjAxJzsKCm15ICREZXNjcmlwdGlvbiA9IHF7VXNlIG9mICJvcGVuIiBpcyBub3QgYWxsb3dlZCB0byByZWFkIG9yIHdyaXRlIGZpbGVzLn07Cm15ICRFeHBsYW5hdGlvbiA9IHF7VXNlIE1haW5PYmplY3Q6OkZpbGVSZWFkKCkgb3IgRmlsZVdyaXRlKCkgaW5zdGVhZC59OwoKc3ViIHN1cHBvcnRlZF9wYXJhbWV0ZXJzIHsgcmV0dXJuOyB9CnN1YiBkZWZhdWx0X3NldmVyaXR5ICAgICB7IHJldHVybiAkUGVybDo6Q3JpdGljOjpVdGlsczo6U0VWRVJJVFlfSElHSEVTVDsgfQpzdWIgZGVmYXVsdF90aGVtZXMgICAgICAgeyByZXR1cm4gcXcoIG90b2JvICkgfQpzdWIgYXBwbGllc190byAgICAgICAgICAgeyByZXR1cm4gJ1BQSTo6VG9rZW46OldvcmQnIH0KCnN1YiB2aW9sYXRlcyB7CiAgICBteSAoICRTZWxmLCAkRWxlbWVudCApID0gQF87CgogICAgIyBPbmx5IG9wZXJhdGUgb24gY2FsbHMgb2Ygb3BlbigpCiAgICByZXR1cm4gaWYgJEVsZW1lbnQgbmUgJ29wZW4nOwogICAgcmV0dXJuIGlmICFpc19mdW5jdGlvbl9jYWxsKCRFbGVtZW50KTsKCiAgICByZXR1cm4gJFNlbGYtPnZpb2xhdGlvbiggJERlc2NyaXB0aW9uLCAkRXhwbGFuYXRpb24sICRFbGVtZW50ICk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/Critic/Policy/OTOBO/ProhibitRandInTests.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFBlcmw6OkNyaXRpYzo6UG9saWN5OjpPVE9CTzo6UHJvaGliaXRSYW5kSW5UZXN0czsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgU1lOT1BTSVM6IENoZWNrIGlmIG1vZHVsZXMgaGF2ZSBhICJ0cnVlIiByZXR1cm4gdmFsdWUKCnVzZSBQZXJsOjpDcml0aWM6OlV0aWxzIHF3e307CnVzZSBwYXJlbnQgJ1Blcmw6OkNyaXRpYzo6UG9saWN5JzsKdXNlIHBhcmVudCAnUGVybDo6Q3JpdGljOjpQb2xpY3lPVE9CTyc7CgpvdXIgJFZFUlNJT04gPSAnMC4wMic7CgpteSAkRGVzY3JpcHRpb24gPSBxe1VzZSBvZiAicmFuZCgpIiBvciAic3JhbmQoKSIgaXMgbm90IGFsbG93ZWQgaW4gdGVzdHMufTsKbXkgJEV4cGxhbmF0aW9uID0gcXtVc2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXI6OkdldFJhbmRvbU51bWJlcigpIG9yIEdldFJhbmRvbUlEKCkgaW5zdGVhZC59OwoKc3ViIHN1cHBvcnRlZF9wYXJhbWV0ZXJzIHsgcmV0dXJuOyB9CnN1YiBkZWZhdWx0X3NldmVyaXR5ICAgICB7IHJldHVybiAkUGVybDo6Q3JpdGljOjpVdGlsczo6U0VWRVJJVFlfSElHSEVTVDsgfQpzdWIgZGVmYXVsdF90aGVtZXMgICAgICAgeyByZXR1cm4gcXcoIG90b2JvICkgfQpzdWIgYXBwbGllc190byAgICAgICAgICAgeyByZXR1cm4gJ1BQSTo6VG9rZW46OldvcmQnIH0KCiMgT25seSBhcHBseSB0byB0ZXN0ICgudCkgZmlsZXMuCnN1YiBwcmVwYXJlX3RvX3NjYW5fZG9jdW1lbnQgewogICAgbXkgKCAkU2VsZiwgJERvY3VtZW50ICkgPSBAXzsKCiAgICByZXR1cm4gJERvY3VtZW50LT5sb2dpY2FsX2ZpbGVuYW1lKCkgPX4gbXsgXC50IFx6IH14bXM7Cn0KCnN1YiB2aW9sYXRlcyB7CiAgICBteSAoICRTZWxmLCAkRWxlbWVudCApID0gQF87CgogICAgaWYgKCAkRWxlbWVudCBlcSAncmFuZCcgfHwgJEVsZW1lbnQgZXEgJ3NyYW5kJyApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPnZpb2xhdGlvbiggJERlc2NyaXB0aW9uLCAkRXhwbGFuYXRpb24sICRFbGVtZW50ICk7CiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/Critic/Policy/OTOBO/ProhibitSmartMatchOperator.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFBlcmw6OkNyaXRpYzo6UG9saWN5OjpPVE9CTzo6UHJvaGliaXRTbWFydE1hdGNoT3BlcmF0b3I7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgUGVybDo6Q3JpdGljOjpVdGlscyBxd3t9Owp1c2UgcGFyZW50ICdQZXJsOjpDcml0aWM6OlBvbGljeSc7CgpvdXIgJFZFUlNJT04gPSAnMC4wMSc7CgpteSAkRGVzY3JpcHRpb24gPSBxe1VzZSBvZiBzbWFydCBtYXRjaCBvcGVyYXRvciB+fiBpcyBub3QgYWxsb3dlZH07Cm15ICRFeHBsYW5hdGlvbiA9CiAgICBxe1RoaXMgb3BlcmF0b3IgYmVoYXZlcyBkaWZmZXJlbnRseSBpbiBQZXJsIDUuMTAuMCBhbmQgNS4xMC4xLn07CgpzdWIgc3VwcG9ydGVkX3BhcmFtZXRlcnMgeyByZXR1cm47IH0Kc3ViIGRlZmF1bHRfc2V2ZXJpdHkgICAgIHsgcmV0dXJuICRQZXJsOjpDcml0aWM6OlV0aWxzOjpTRVZFUklUWV9ISUdIRVNUOyB9CnN1YiBkZWZhdWx0X3RoZW1lcyAgICAgICB7IHJldHVybiBxdyggb3RvYm8gKSB9CnN1YiBhcHBsaWVzX3RvICAgICAgICAgICB7IHJldHVybiAnUFBJOjpUb2tlbjo6T3BlcmF0b3InIH0KCnN1YiB2aW9sYXRlcyB7CiAgICBteSAoICRTZWxmLCAkRWxlbWVudCApID0gQF87CgogICAgcmV0dXJuIGlmICRFbGVtZW50IG5lICd+fic7CiAgICByZXR1cm4gJFNlbGYtPnZpb2xhdGlvbiggJERlc2NyaXB0aW9uLCAkRXhwbGFuYXRpb24sICRFbGVtZW50ICk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/Critic/Policy/OTOBO/RequireCamelCase.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFBlcmw6OkNyaXRpYzo6UG9saWN5OjpPVE9CTzo6UmVxdWlyZUNhbWVsQ2FzZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBQZXJsOjpDcml0aWM6OlV0aWxzIHF3e307CnVzZSBwYXJlbnQgJ1Blcmw6OkNyaXRpYzo6UG9saWN5JzsKdXNlIHBhcmVudCAnUGVybDo6Q3JpdGljOjpQb2xpY3lPVE9CTyc7CgpvdXIgJFZFUlNJT04gPSAnMC4wMSc7CgpteSAkRGVzY3JpcHRpb24gPSBxe1ZhcmlhYmxlLCBzdWJyb3V0aW5lLCBhbmQgcGFja2FnZSBuYW1lcyBoYXZlIHRvIGJlIGluIENhbWVsQ2FzZX07Cm15ICRFeHBsYW5hdGlvbiA9IHF7fTsKCnN1YiBzdXBwb3J0ZWRfcGFyYW1ldGVycyB7IHJldHVybjsgfQpzdWIgZGVmYXVsdF9zZXZlcml0eSAgICAgeyByZXR1cm4gJFBlcmw6OkNyaXRpYzo6VXRpbHM6OlNFVkVSSVRZX0hJR0hFU1Q7IH0Kc3ViIGRlZmF1bHRfdGhlbWVzICAgICAgIHsgcmV0dXJuIHF3KCBvdG9ibyApIH0KCm15ICVEaXNwYXRjaGVyID0gKAogICAgJ1BQSTo6U3RhdGVtZW50OjpTdWInICAgICA9PiBcJklzQ2FtZWxDYXNlLAogICAgJ1BQSTo6U3RhdGVtZW50OjpQYWNrYWdlJyA9PiBcJklzQ2FtZWxDYXNlLAogICAgJ1BQSTo6VG9rZW46OlN5bWJvbCcgICAgICA9PiBcJlZhcmlhYmxlSXNDYW1lbENhc2UsCik7CgpzdWIgYXBwbGllc190byB7CiAgICByZXR1cm4ga2V5cyAlRGlzcGF0Y2hlcjsKfQoKc3ViIHByZXBhcmVfdG9fc2Nhbl9kb2N1bWVudCB7CiAgICBteSAoICRTZWxmLCAkRG9jdW1lbnQgKSA9IEBfOwoKICAgICMgQ2xlYW51cCwgb25lIGluc3RhbmNlIGNhbiBzY2FuIG11bHRpcGxlIGZpbGVzLgogICAgZGVsZXRlICRTZWxmLT57X0lzRGVyaXZlZE1vZHVsZX07CgogICAgaWYgKCAkRG9jdW1lbnQtPmxvZ2ljYWxfZmlsZW5hbWUoKSAhfiBteyAoXC5wbSkgXHogfXhtcyApIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIEZpbmQgYWxsIHVzZSBwYXJlbnQvYmFzZSBzdGF0ZW1lbnRzCiAgICBteSAkRmluZFBlcmxJbmhlcml0YW5jZSA9IHN1YiB7CiAgICAgICAgcmV0dXJuICREb2N1bWVudC0+ZmluZF9hbnkoCiAgICAgICAgICAgIHN1YiB7CiAgICAgICAgICAgICAgICByZXR1cm4gJF9bMV0tPmlzYSgnUFBJOjpTdGF0ZW1lbnQ6OkluY2x1ZGUnKSAmJiAkX1sxXSA9fiBte1xBIHVzZSBccysgKHBhcmVudHxiYXNlKSBccyt9c214OwogICAgICAgICAgICB9CiAgICAgICAgKTsKICAgIH07CgogICAgIyBGaW5kIGFueSBNb29zZSBvciBNb29zZTo6Um9sZSBvYmplY3RzIHRoYXQgZXh0ZW5kIGFub3RoZXIgY2xhc3Mgb3Igcm9sZSAoZXh0ZW5kcy93aXRoKS4KICAgIG15ICRGaW5kTW9vc2VJbmhlcml0YW5jZSA9IHN1YiB7CiAgICAgICAgbXkgJE1vb3NlRm91bmQgPSAkRG9jdW1lbnQtPmZpbmRfYW55KAogICAgICAgICAgICBzdWIgeyByZXR1cm4gJF9bMV0tPmlzYSgnUFBJOjpTdGF0ZW1lbnQ6OkluY2x1ZGUnKSAmJiAkX1sxXSA9fiBte1xBIHVzZSBccysgTW9vc2UoOjpSb2xlKT99c214IH0KICAgICAgICApOwoKICAgICAgICByZXR1cm4gMCB1bmxlc3MgJE1vb3NlRm91bmQ7CgogICAgICAgIHJldHVybiAkRG9jdW1lbnQtPmZpbmRfYW55KAogICAgICAgICAgICBzdWIgeyByZXR1cm4gJF9bMV0tPmlzYSgnUFBJOjpUb2tlbjo6V29yZCcpICYmICRfWzFdID1+IG17XEEgZXh0ZW5kc3x3aXRoIFxafXNteCB9CiAgICAgICAgKTsKICAgIH07CgogICAgIyBGaW5kIGFueSBNb29zZSBvciBNb29zZTo6Um9sZSBvYmplY3RzIHRoYXQgZXh0ZW5kIGFub3RoZXIgY2xhc3Mgb3Igcm9sZSAoZXh0ZW5kcy93aXRoKS4KICAgIG15ICRGaW5kTW9vSW5oZXJpdGFuY2UgPSBzdWIgewogICAgICAgIG15ICRNb29Gb3VuZCA9ICREb2N1bWVudC0+ZmluZF9hbnkoCiAgICAgICAgICAgIHN1YiB7IHJldHVybiAkX1sxXS0+aXNhKCdQUEk6OlN0YXRlbWVudDo6SW5jbHVkZScpICYmICRfWzFdID1+IG17XEEgdXNlIFxzKyBNb28oOjpSb2xlKT99c214IH0KICAgICAgICApOwoKICAgICAgICByZXR1cm4gMCB1bmxlc3MgJE1vb0ZvdW5kOwoKICAgICAgICByZXR1cm4gJERvY3VtZW50LT5maW5kX2FueSgKICAgICAgICAgICAgc3ViIHsgcmV0dXJuICRfWzFdLT5pc2EoJ1BQSTo6VG9rZW46OldvcmQnKSAmJiAkX1sxXSA9fiBte1xBIGV4dGVuZHN8d2l0aCBcWn1zbXggfQogICAgICAgICk7CiAgICB9OwoKICAgICMgRmluZCBhbnkgTW9qbzo6QmFzZSBpbmhlcml0YW5jZS4KICAgIG15ICRGaW5kTW9qb0luaGVyaXRhbmNlID0gc3ViIHsKICAgICAgICByZXR1cm4gJERvY3VtZW50LT5maW5kX2FueSgKICAgICAgICAgICAgc3ViIHsgcmV0dXJuICRfWzFdLT5pc2EoJ1BQSTo6U3RhdGVtZW50OjpJbmNsdWRlJykgJiYgJF9bMV0gPX4gbXtcQSB1c2UgXHMrIE1vam86OkJhc2V9c214IH0KICAgICAgICApOwogICAgfTsKCiAgICAjIEZpbmQgYWxsIEs6OlM6Ok1haW4tPlJlcXVpcmVCYXNlQ2xhc3MoKSBzdGF0ZW1lbnRzLgogICAgbXkgJEZpbmRSZXF1aXJlQmFzZUNsYXNzID0gc3ViIHsKICAgICAgICByZXR1cm4gJERvY3VtZW50LT5maW5kX2FueSgKICAgICAgICAgICAgc3ViIHsKICAgICAgICAgICAgICAgIHJldHVybiAkX1sxXS0+aXNhKCdQUEk6OlRva2VuOjpXb3JkJykgJiYgJF9bMV0gZXEgJ1JlcXVpcmVCYXNlQ2xhc3MnOwogICAgICAgICAgICB9CiAgICAgICAgKTsKICAgIH07CgogICAgaWYgKAogICAgICAgICRGaW5kUGVybEluaGVyaXRhbmNlLT4oKQogICAgICAgIHx8ICRGaW5kTW9vc2VJbmhlcml0YW5jZS0+KCkKICAgICAgICB8fCAkRmluZE1vb0luaGVyaXRhbmNlLT4oKQogICAgICAgIHx8ICRGaW5kTW9qb0luaGVyaXRhbmNlLT4oKQogICAgICAgIHx8ICRGaW5kUmVxdWlyZUJhc2VDbGFzcy0+KCkKICAgICAgICApCiAgICB7CiAgICAgICAgJFNlbGYtPntfSXNEZXJpdmVkTW9kdWxlfSA9IDE7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiB2aW9sYXRlcyB7CiAgICBteSAoICRTZWxmLCAkRWxlbWVudCApID0gQF87CgogICAgJFNlbGYtPntFcnJvcnN9ID0gKCk7CgogICAgbXkgJEZ1bmN0aW9uID0gJERpc3BhdGNoZXJ7IHJlZiAkRWxlbWVudCB9OwogICAgcmV0dXJuIGlmICEkRnVuY3Rpb247CiAgICByZXR1cm4gaWYgJFNlbGYtPiRGdW5jdGlvbigkRWxlbWVudCk7CgogICAgcmV0dXJuICRTZWxmLT52aW9sYXRpb24oICIkRGVzY3JpcHRpb246ICIgLiBqb2luKCAiLCAiLCBAeyAkU2VsZi0+e0Vycm9yc30gfSApLCAkRXhwbGFuYXRpb24sICRFbGVtZW50ICk7Cn0KCnN1YiBJc0NhbWVsQ2FzZSB7CiAgICBteSAoICRTZWxmLCAkRWxlbWVudCApID0gQF87CgogICAgbXkgJE5hbWUgPSAkRWxlbWVudC0+ZmluZCgnUFBJOjpUb2tlbjo6V29yZCcpLT5bMV07CgogICAgcmV0dXJuIDEgaWYgISROYW1lOwoKICAgIG15ICVBbGxvd2VkRnVuY3Rpb25zID0gKAogICAgICAgIG5ldyA9PiAxLAogICAgKTsKCiAgICBpZiAoICRFbGVtZW50LT5pc2EoJ1BQSTo6U3RhdGVtZW50OjpTdWInKSApIHsKICAgICAgICByZXR1cm4gMSBpZiAkQWxsb3dlZEZ1bmN0aW9uc3skTmFtZX07CiAgICAgICAgcmV0dXJuIDEgaWYgJFNlbGYtPntfSXNEZXJpdmVkTW9kdWxlfTsKICAgIH0KICAgIGVsc2lmICggJEVsZW1lbnQtPmlzYSgnUFBJOjpTdGF0ZW1lbnQ6OlBhY2thZ2UnKSApIHsKICAgICAgICBpZiAoCiAgICAgICAgICAgICROYW1lID1+IG17IEtlcm5lbDo6TGFuZ3VhZ2UgOjogW2Etel17MiwzfV8gfXhtcwogICAgICAgICAgICB8fCAkTmFtZSBlcSAnbWFpbicKICAgICAgICAgICAgfHwgJE5hbWUgPX4gbXsgXnNjcmlwdHM6OiB9eG1zCiAgICAgICAgICAgIHx8ICROYW1lID1+IG17IF52YXI6OnBhY2thZ2VzZXR1cDo6IH14bXMKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRJc0NhbWVsQ2FzZSA9ICEoICROYW1lICF+IG17IFxBIF8qIFtBLVpdW2Etel0qIH14bXMgfHwgJE5hbWUgPX4gbXsgW15fXV8gfXhtcyApOwoKICAgIGlmICggISRJc0NhbWVsQ2FzZSApIHsKICAgICAgICBwdXNoIEB7ICRTZWxmLT57RXJyb3JzfSB9LCAkTmFtZTsKICAgIH0KCiAgICByZXR1cm4gJElzQ2FtZWxDYXNlOwp9CgpzdWIgVmFyaWFibGVJc0NhbWVsQ2FzZSB7CiAgICBteSAoICRTZWxmLCAkRWxlbWVudCApID0gQF87CgogICAgbXkgJE5hbWUgPSAiJEVsZW1lbnQiOwogICAgcmV0dXJuIDEgaWYgISROYW1lOwoKICAgICMgQWxsb3cgdmFyaWFibGVzIGZyb20gb3RoZXIgcGFja2FnZXMuCiAgICByZXR1cm4gMSBpZiBpbmRleCggJE5hbWUsICc6OicgKSA+IC0xOwoKICAgICMgQWxsb3cgUGVybCBidWlsdGlucy4KICAgIHJldHVybiAxIGlmICROYW1lIGVxICckYSc7CiAgICByZXR1cm4gMSBpZiAkTmFtZSBlcSAnJGInOwoKICAgICMgSWdub3JlIGZ1bmN0aW9uIGNhbGxzCiAgICByZXR1cm4gMSBpZiBzdWJzdHIoICROYW1lLCAwLCAxICkgZXEgJyYnOwoKICAgICMgQWxsb3cgc2hvcnQgdmFyaWFibGUgbmFtZXMgd2l0aCBsb3dlcmNhc2UgY2hhcmFjdGVycyBsaWtlICRzLgogICAgcmV0dXJuIDEgaWYgbGVuZ3RoICROYW1lID09IDI7CgogICAgbXkgJElzQ2FtZWxDYXNlID0gISggJE5hbWUgIX4gbXsgXEEgW1wqXEBcJFwlXV8qW0EtWl1bYS16XSogfXhtcyB8fCAkTmFtZSA9fiBteyBbXl9dXyB9eG1zICk7CgogICAgaWYgKCAhJElzQ2FtZWxDYXNlICkgewogICAgICAgIHB1c2ggQHsgJFNlbGYtPntFcnJvcnN9IH0sICROYW1lOwogICAgfQoKICAgIHJldHVybiAkSXNDYW1lbENhc2U7Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/Critic/Policy/OTOBO/RequireLabels.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFBlcmw6OkNyaXRpYzo6UG9saWN5OjpPVE9CTzo6UmVxdWlyZUxhYmVsczsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBQZXJsOjpDcml0aWM6OlV0aWxzIHF3e307CnVzZSBwYXJlbnQgJ1Blcmw6OkNyaXRpYzo6UG9saWN5JzsKdXNlIHBhcmVudCAnUGVybDo6Q3JpdGljOjpQb2xpY3lPVE9CTyc7CgpteSAkRGVzY3JpcHRpb24gPSBxe1BsZWFzZSBhbHdheXMgdXNlICduZXh0JyBhbmQgJ2xhc3QnIHdpdGggYSBsYWJlbC59OwpteSAkRXhwbGFuYXRpb24gPSBxe307CgpzdWIgc3VwcG9ydGVkX3BhcmFtZXRlcnMgeyByZXR1cm47IH0Kc3ViIGRlZmF1bHRfc2V2ZXJpdHkgICAgIHsgcmV0dXJuICRQZXJsOjpDcml0aWM6OlV0aWxzOjpTRVZFUklUWV9ISUdIRVNUOyB9CnN1YiBkZWZhdWx0X3RoZW1lcyAgICAgICB7IHJldHVybiBxdyggb3RvYm8gKSB9CnN1YiBhcHBsaWVzX3RvICAgICAgICAgICB7IHJldHVybiAnUFBJOjpTdGF0ZW1lbnQ6OkJyZWFrJyB9CgpzdWIgcHJlcGFyZV90b19zY2FuX2RvY3VtZW50IHsKICAgIG15ICggJFNlbGYsICREb2N1bWVudCApID0gQF87CgogICAgcmV0dXJuIDE7Cn0KCnN1YiB2aW9sYXRlcyB7CiAgICBteSAoICRTZWxmLCAkRWxlbWVudCApID0gQF87CgogICAgbXkgQENoaWxkcmVuID0gJEVsZW1lbnQtPmNoaWxkcmVuKCk7CiAgICBpZiAoICRDaGlsZHJlblswXS0+Y29udGVudCgpIG5lICduZXh0JyAmJiAkQ2hpbGRyZW5bMF0tPmNvbnRlbnQoKSBuZSAnbGFzdCcgKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRMYWJlbCA9ICRDaGlsZHJlblswXS0+c25leHRfc2libGluZygpOwoKICAgIGlmICgKICAgICAgICAhJExhYmVsCiAgICAgICAgfHwgISRMYWJlbC0+aXNhKCdQUEk6OlRva2VuOjpXb3JkJykKICAgICAgICB8fCAkTGFiZWwtPmNvbnRlbnQoKSAhfiBte15bQS1aX10rfXhtcwogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm4gJFNlbGYtPnZpb2xhdGlvbiggJERlc2NyaXB0aW9uLCAkRXhwbGFuYXRpb24sICRFbGVtZW50ICk7CiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/Critic/PolicyOTOBO.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFBlcmw6OkNyaXRpYzo6UG9saWN5T1RPQk87CgojCiMgQmFzZSBjbGFzcyBmb3IgY3VzdG9tZSBQZXJsOjpDcml0aWMgcG9saWNpZXMuCiMKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHY1LjI0Owp1c2UgdXRmODsKCiMgQmFzZSBjbGFzcyBmb3IgT1RPQk8gcGVybCBjcml0aWMgcG9saWNpZXMKCnN1YiBJc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiB7CiAgICBteSAoICRTZWxmLCAkRnJhbWV3b3JrVmVyc2lvbk1ham9yLCAkRnJhbWV3b3JrVmVyc2lvbk1pbm9yICkgPSBAXzsKCiAgICBpZiAoJFRpZHlBbGw6Ok9UT0JPOjpGcmFtZXdvcmtWZXJzaW9uTWFqb3IpIHsKICAgICAgICByZXR1cm4gMSBpZiAkVGlkeUFsbDo6T1RPQk86OkZyYW1ld29ya1ZlcnNpb25NYWpvciA8ICRGcmFtZXdvcmtWZXJzaW9uTWFqb3I7CiAgICAgICAgcmV0dXJuIDAgaWYgJFRpZHlBbGw6Ok9UT0JPOjpGcmFtZXdvcmtWZXJzaW9uTWFqb3IgPiAkRnJhbWV3b3JrVmVyc2lvbk1ham9yOwogICAgICAgIHJldHVybiAxIGlmICRUaWR5QWxsOjpPVE9CTzo6RnJhbWV3b3JrVmVyc2lvbk1pbm9yIDwgJEZyYW1ld29ya1ZlcnNpb25NaW5vcjsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICAjIERlZmF1bHQ6IGlmIGZyYW1ld29yayBpcyB1bmtub3duLCByZXR1cm4gZmFsc2UgKHN0cmljdCBjaGVja3MpLgogICAgcmV0dXJuIDA7Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/DBObject.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OkRCT2JqZWN0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybCk7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICAkQ29kZSA9ICRTZWxmLT5TdHJpcFBvZCggQ29kZSA9PiAkQ29kZSApOwogICAgJENvZGUgPSAkU2VsZi0+U3RyaXBDb21tZW50cyggQ29kZSA9PiAkQ29kZSApOwoKICAgIG15ICggJEVycm9yTWVzc2FnZSwgJENvdW50ZXIgKTsKCiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lICggc3BsaXQgL1xuLywgJENvZGUgKSB7CiAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICBuZXh0IExJTkUgaWYgJExpbmUgIX4gbXtce0RCT2JqZWN0XH19c214OwogICAgICAgIG5leHQgTElORSBpZiAkTGluZSA9fiBte0RCT2JqZWN0IFxzKyAgICA9PiBccyBcJFNlbGYtPlx7REJPYmplY3RcfSB9c214OwoKICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpEb24ndCB1c2UgdGhlIERCT2JqZWN0IGluIGZyb250ZW5kIG1vZHVsZXMuCiRFcnJvck1lc3NhZ2UKRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/DieExit.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OkRpZUV4aXQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwogICAgbXkgKCAkRXJyb3JNZXNzYWdlLCAkQ291bnRlciApOwoKICAgIExJTkU6CiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICBuZXh0IExJTkUgaWYgJExpbmUgPX4gbS9eXHMqXCMvc214OwoKICAgICAgICBpZiAoICRMaW5lID1+IG17XiBccyogKGRpZXxleGl0KSAoO3xcc3xcKCkgfXNteCApIHsKICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiTGluZSAkQ291bnRlcjogJExpbmVcbiI7CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7CkRvbid0IHVzZSAnZGllJyBhbmQgJ2V4aXQnIGluIG1vZHVsZXMuCiRFcnJvck1lc3NhZ2UKRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/Dumper.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OkR1bXBlcjsKIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6RHVtcGVyKQp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgIG15ICggJEVycm9yTWVzc2FnZSwgJENvdW50ZXIgKTsKCiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lICggc3BsaXQgL1xuLywgJENvZGUgKSB7CiAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgbmV4dCBMSU5FIGlmICRMaW5lID1+IG0vXlxzKlwjL3NteDsKCiAgICAgICAgaWYgKCAkTGluZSA9fiBte3VzZVxzK0RhdGE6OkR1bXBlcnwoLT58XHMpRHVtcGVyXCh9c214ICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKVXNlIE1haW46OkR1bXAoKSBpbnN0ZWFkIG9mIER1bXBlcigpLgpEb24ndCBmb3JnZXQgdG8gcmVtb3ZlIGRlYnVnIGNvZGUgbGlrZSBwcmludCBTVERFUlIgRHVtcGVyKC4uLikuCiRFcnJvck1lc3NhZ2UKRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/ForMy.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OkZvck15OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybCk7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICBteSAoICRDb3VudGVyLCAkRXJyb3JNZXNzYWdlICk7CgogICAgZm9yIG15ICRMaW5lICggc3BsaXQgL1xuLywgJENvZGUgKSB7CiAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgaWYgKCAkTGluZSA9fiBte14gXHMqIGZvciAoZWFjaCk/IFxzKyBcJC4rIFxzKyBcKCAgfXhtcyApIHsKICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiTGluZSAkQ291bnRlcjogJExpbmVcbiI7CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7ClBsZWFzZSB1c2UgbXkgdG8gZGVjbGFyZSB0aGUga2V5IHZhcmlhYmxlIGluCiRFcnJvck1lc3NhZ2UKRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/ForeachToFor.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OkZvcmVhY2hUb0ZvcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmwpOwoKc3ViIHRyYW5zZm9ybV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgICMgVGhlIGZvbGxvd2luZyB0ZXN0IG1hdGNoZXMgb25seSBmb3IgYSBmb3JlYWNoIHdpdGhvdXQgYSAiIyIgaW4gdGhlCiAgICAjIGJlZ2lubmluZyBvZiBhIGxpbmUuIFRoZSBmb3JlYWNoIGhhcyB0byBiZSB0aGUgZmlyc3QgZXhwcmVzc2lvbiBpbiBhCiAgICAjIGxpbmUsIHNwYWNlcyBkbyBub3QgbWF0dGVyLiBUaGUgZm9yZWFjaCBpcyByZXBsYWNlZCB3aXRoIGZvci4KICAgICMgQ29tbWVudHMgYW5kIG90aGVyIGxpbmVzIHdpdGggb3RoZXIgY2hhcnMgYmVmb3JlIHRoZSBmb3JlYWNoIGFyZQogICAgIyBpZ25vcmVkLgoKICAgICRDb2RlID1+IHN7XiAoW14jXSBcc3swLDIwMH0pIGZvcmVhY2ggKC4qPykgfXskMWZvciQyfXhtc2c7CgogICAgcmV0dXJuICRDb2RlOwp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/LayoutObject.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OkxheW91dE9iamVjdDsKIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6TGF5b3V0T2JqZWN0KQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybCk7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICAjIGRpc2FibGVkIGZvciBPVE9CTyAxMC4wCiAgICByZXR1cm4gaWYgISRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggMTAsIDAgKTsKCiAgICAkQ29kZSA9ICRTZWxmLT5TdHJpcFBvZCggQ29kZSA9PiAkQ29kZSApOwogICAgJENvZGUgPSAkU2VsZi0+U3RyaXBDb21tZW50cyggQ29kZSA9PiAkQ29kZSApOwoKICAgIG15ICRGb3JiaWRkZW4gPSBxcntcJExheW91dE9iamVjdHxLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0fXhtczsKCiAgICBpZiAoICRDb2RlID1+ICRGb3JiaWRkZW4gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7CkRvbid0IHVzZSB0aGUgTGF5b3V0T2JqZWN0IGluIGJpbi8gb3IgaW4gS2VybmVsL1N5c3RlbS4KRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/ModuleFormat.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6Ok1vZHVsZUZvcm1hdDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmwpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgIyBDaGVjayBmb3IgYWJzZW5zZSBvZiBzaGViYW5nIGxpbmUKICAgIGlmICggJENvZGUgPX4gbXtcQVwjIX14bXMgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7ClBlcmwgbW9kdWxlcyBzaG91bGQgbm90IGhhdmUgYSBzaGViYW5nIGxpbmUgKCMhL3Vzci9iaW4vcGVybCkuCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/NoExitInConsoleCommands.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6Ok5vRXhpdEluQ29uc29sZUNvbW1hbmRzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybCk7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICBteSAoICRFcnJvck1lc3NhZ2UsICRDb3VudGVyICk7CgogICAgTElORToKICAgIGZvciBteSAkTGluZSAoIHNwbGl0IC9cbi8sICRDb2RlICkgewogICAgICAgICRDb3VudGVyKys7CgogICAgICAgIG5leHQgTElORSBpZiAkTGluZSA9fiBtL15ccypcIy9zbXg7CgogICAgICAgIGlmICggJExpbmUgPX4gbXsgKF58XHMrKSBleGl0ICg7fFxzfFwoKSB9c214ICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKRG9uJ3QgdXNlICdleGl0JyBpbiBjb25zb2xlIGNvbW1hbmRzLCB1c2UgJ3JldHVybiBcJFNlbGYtPkV4aXRDb2RlT2soKTsnIG9yICdyZXR1cm4gXCRTZWxmLT5FeGl0Q29kZUVycm9yKCk7JyBpbnN0ZWFkLgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/ObjectDependencies.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6Ok9iamVjdERlcGVuZGVuY2llczsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHY1LjI0Owp1c2UgdXRmODsKCiMKIyBUaGlzIHBsdWdpbiBzY2FucyBwZXJsIHBhY2thZ2VzIGFuZCBjb21wYXJlcyB0aGUgb2JqZWN0cyB0aGV5IHJlcXVlc3QKIyBmcm9tIHRoZSBPYmplY3RNYW5hZ2VyIHdpdGggdGhlIGRlcGVuZGVuY2llcyB0aGV5IGRlY2xhcmUgYW5kIGNvbXBsYWlucwojIGFib3V0IGFueSBtaXNzaW5nIGRlcGVuZGVuY2llcy4KIyBEZXBlbmRlbmNpZXMgYXJlIGRlY2xhcmVkIHdpdGggQE9iamVjdERlcGVuZGVuY2llcyBhbmQgQFNvZnRPYmplY3REZXBlbmRlbmNpZXMuCiMKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KHVuaXEpOwoKIyBDUEFOIG1vZHVsZXMKdXNlIE1vbzsKCiMgT1RPQk8gbW9kdWxlcwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgICRDb2RlID0gJFNlbGYtPlN0cmlwUG9kKCBDb2RlID0+ICRDb2RlICk7CiAgICAkQ29kZSA9ICRTZWxmLT5TdHJpcENvbW1lbnRzKCBDb2RlID0+ICRDb2RlICk7CgogICAgIyBTa2lwIGlmIHRoZSBjb2RlIGRvZXNuJ3QgdXNlIHRoZSBPYmplY3RNYW5hZ2VyCiAgICByZXR1cm4gdW5sZXNzICRDb2RlID1+IG17XCRLZXJuZWw6Ok9NfXNteDsKCiAgICAjIFNraXAgaWYgd2UgaGF2ZSBhIHJvbGUsIGFzIGl0IGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQuCiAgICByZXR1cm4gaWYgJENvZGUgPX4gbXt1c2VccytNb29zZTo6Um9sZX1zbXg7CgogICAgIyBTa2lwIGlmIHdlIGhhdmUgYSB3ZWJhcHAgY29udHJvbGxlciwgYXMgdGhlc2UgYXJlIG5vdCBtYW5hZ2VkIHZpYSBPTS4KICAgIHJldHVybiBpZiAkQ29kZSA9fiBte3BhY2thZ2VccytLZXJuZWw6OldlYkFwcDo6KENvbnRyb2xsZXJ8UGx1Z2lufFNlcnZlcik6On1zbXg7CgogICAgIyBTa2lwIGlmIHRoZSBwYWNrYWdlIGNhbm5vdCBiZSBsb2FkZWQgdmlhIE9iamVjdE1hbmFnZXIKICAgIHJldHVybiBpZiAkQ29kZSA9fiBtewogICAgICAgIF4gXHMqIG91ciBccyogXCRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgXHMqID0gXHMqIDEKICAgIH1zbXg7CgogICAgbXkgJEVycm9yTWVzc2FnZTsKCiAgICBpZiAoICRDb2RlID1+IG17XiBccyogb3VyIFxzKiBcJE9iamVjdE1hbmFnZXJBd2FyZX1zbXggKSB7CiAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiRG9uJ3QgdXNlIHRoZSBkZXByZWNhdGVkIGZsYWcgXCRPYmplY3RNYW5hZ2VyQXdhcmUuIEl0IGNhbiBiZSByZW1vdmVkLlxuIjsKICAgIH0KCiAgICAjIE9rLCBmaXJzdCBjaGVjayBmb3IgdGhlIG9iamVjdHMgdGhhdCBhcmUgcmVxdWVzdGVkIGZyb20gT00uCiAgICBteSBAVXNlZE9iamVjdHM7CgogICAgIyBPbmx5IG1hdGNoIHdoYXQgaXMgYWJzb2x1dGVseSBuZWVkZWQgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzLgogICAgbXkgJFZhbGlkTGlzdEV4cHJlc3Npb24gPSAiW1xAYS16QS1aMC05X1s6c3BhY2U6XTonXCIsKCldKz8iOwoKICAgICMgUmVhbCBHZXQoKSBjYWxscy4KICAgICRDb2RlID1+IHN7CiAgICAgICAgXCRLZXJuZWw6Ok9NLT5HZXRcKCBccyogKFteXCRdJFZhbGlkTGlzdEV4cHJlc3Npb24pIFxzKiBcKQogICAgfXsKICAgICAgICBwdXNoIEBVc2VkT2JqZWN0cywgJFNlbGYtPl9DbGVhbnVwT2JqZWN0TGlzdCgKICAgICAgICAgICAgQ29kZSA9PiAkMSwKICAgICAgICApOwogICAgICAgICcnOwogICAgfWVzbXhnOwoKICAgICMgRm9yIGxvb3BzIHdpdGggR2V0KCkuCiAgICAkQ29kZSA9fiBzewogICAgICAgIGZvciBccysgKD86IG15IFxzKyBcJFthLXpBLXowLTlfXSsgXHMrKT8gXCgoJFZhbGlkTGlzdEV4cHJlc3Npb24pXClccypce1xuCiAgICAgICAgICAgIFxzKyBcJFNlbGYtPlx7XCQuKj9cfSBccyogKD86Ly98XHxcfCk/PSBccyogXCRLZXJuZWw6Ok9NLT5HZXRcKFxzKlwkW2EtekEtWjAtOV9dKz9ccypcKTsgXHMrCiAgICAgICAgXH0KICAgIH17CiAgICAgICAgcHVzaCBAVXNlZE9iamVjdHMsICRTZWxmLT5fQ2xlYW51cE9iamVjdExpc3QoCiAgICAgICAgICAgIENvZGUgPT4gJDEsCiAgICAgICAgKTsKICAgICAgICAnJzsKICAgIH1lc214ZzsKCiAgICAjIE5vdyBjaGVjayB0aGUgZGVjbGFyZWQgZGVwZW5kZW5jaWVzIGFuZCBjb21wYXJlLgogICAgIyBEZXBlbmRlbmNpZXMgY2FuIGJlIGRlY2xhcmVkIGluIHRoZSBhcnJheSBPYmplY3REZXBlbmRlbmNpZXMgYW5kIFNvZnRPYmplY3REZXBlbmRlbmNpZXMuCiAgICBteSAlT2JqZWN0SXNEZWNsYXJlZDsKICAgIHsKICAgICAgICBteSBARGVjbGFyZWRPYmplY3REZXBlbmRlbmNpZXM7CiAgICAgICAgZm9yIG15ICRBcnJheSAocXcoT2JqZWN0RGVwZW5kZW5jaWVzIFNvZnRPYmplY3REZXBlbmRlbmNpZXMpKSB7CiAgICAgICAgICAgICRDb2RlID1+IHN7CiAgICAgICAgICAgICAgICBeb3VyXHMrXEBcUSRBcnJheVxFXHMrPVxzK1woKCRWYWxpZExpc3RFeHByZXNzaW9uKVwpOwogICAgICAgICAgICB9ewogICAgICAgICAgICAgICAgcHVzaCBARGVjbGFyZWRPYmplY3REZXBlbmRlbmNpZXMsICRTZWxmLT5fQ2xlYW51cE9iamVjdExpc3QoCiAgICAgICAgICAgICAgICAgICAgQ29kZSA9PiAkMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAnJzsKICAgICAgICAgICAgfWVzbXg7CiAgICAgICAgfQoKICAgICAgICAlT2JqZWN0SXNEZWNsYXJlZCA9IG1hcCB7ICRfID0+IDEgfSBARGVjbGFyZWRPYmplY3REZXBlbmRlbmNpZXM7CiAgICB9CgogICAgbXkgQFVuZGVjbGFyZWRPYmplY3REZXBlbmRlbmNpZXMgPSBzb3J0IGdyZXAgeyAhJE9iamVjdElzRGVjbGFyZWR7JF99IH0gdW5pcSBAVXNlZE9iamVjdHM7CgogICAgaWYgKEBVbmRlY2xhcmVkT2JqZWN0RGVwZW5kZW5jaWVzKSB7CiAgICAgICAgJEVycm9yTWVzc2FnZSAuPQogICAgICAgICAgICAiVGhlIGZvbGxvd2luZyBvYmplY3RzIGFyZSB1c2VkIGluIHRoZSBjb2RlLCBidXQgbm90IGRlY2xhcmVkIGFzIGRlcGVuZGVuY2llczpcbiIKICAgICAgICAgICAgLiBqb2luKCAiLFxuIiwgbWFwIHsiICAgICckXycifSBzb3J0IHsgJGEgY21wICRiIH0gQFVuZGVjbGFyZWRPYmplY3REZXBlbmRlbmNpZXMgKQogICAgICAgICAgICAuICIsXG4iCiAgICAgICAgICAgIC4gJ1BsZWFzZSBhZGQgdGhlIG1pc3NpbmcgZGVwZW5kZW5jaWVzIHRvIHRoZSBhcnJheSBAT2JqZWN0RGVwZW5kZW5jaWVzLic7CiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKJEVycm9yTWVzc2FnZQpFT0YKICAgIH0KCiAgICByZXR1cm47Cn0KCiMgU21hbGwgaGVscGVyIGZ1bmN0aW9uIHRvIGNsZWFudXAgb2JqZWN0IGxpc3RzIGluIFBlcmwgY29kZSBmb3IgT00uCnN1YiBfQ2xlYW51cE9iamVjdExpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSBAUmVzdWx0OwoKICAgIE9CSkVDVDoKICAgIGZvciBteSAkT2JqZWN0ICggc3BsaXQoIG17XHMrfSwgJFBhcmFte0NvZGV9ICkgKSB7CiAgICAgICAgJE9iamVjdCA9fiBzL3F3XCgvLzsgICAgICAgICMgcmVtb3ZlIHF3KCkgbWFya2VyIHN0YXJ0CiAgICAgICAgJE9iamVjdCA9fiBzL15bKCInXSsvLzsgICAgICMgcmVtb3ZlIGxlYWRpbmcgcXVvdGVzIGFuZCBwYXJlbnRoZXNlcwogICAgICAgICRPYmplY3QgPX4gcy9bKSInLF0rJC8vOyAgICAjIHJlbW92ZSB0cmFpbGluZyBjb21tYSwgcXVvdGVzIGFuZCBwYXJlbnRoZXNlcwoKICAgICAgICBuZXh0IE9CSkVDVCB1bmxlc3MgJE9iamVjdDsKCiAgICAgICAgcHVzaCBAUmVzdWx0LCAkT2JqZWN0OwogICAgfQoKICAgIHJldHVybiBAUmVzdWx0Owp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/ObjectManagerCreation.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6Ok9iamVjdE1hbmFnZXJDcmVhdGlvbjsKIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6T2JqZWN0TWFuYWdlckNyZWF0aW9uKQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybCk7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICAkQ29kZSA9ICRTZWxmLT5TdHJpcFBvZCggQ29kZSA9PiAkQ29kZSApOwoKICAgIG15ICggJEVycm9yTWVzc2FnZSwgJENvdW50ZXIgKTsKCiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lICggc3BsaXQgL1xuLywgJENvZGUgKSB7CiAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgbmV4dCBMSU5FIGlmICRMaW5lID1+IG0vXlxzKlwjL3NteDsKCiAgICAgICAgaWYgKCAkTGluZSA9fiBteyBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3IH1zbXggKSB7CiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkxpbmUgJENvdW50ZXI6ICRMaW5lXG4iOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpEb24ndCBjcmVhdGUgbmV3IGluc3RhbmNlcyBvZiB0aGUgT2JqZWN0TWFuYWdlciBpbiBQZXJsIG1vZHVsZXMuIFRoaXMgc2hvdWxkIG9ubHkgYmUgZG9uZSBpbiB0b3BsZXZlbCBzY3JpcHRzLgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/ObjectNameSpace.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6Ok9iamVjdE5hbWVTcGFjZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMKIyBUaGlzIHBsdWdpbiBzY2FucyBwZXJsIHBhY2thZ2VzIGFuZCBjb21wYXJlcyB0aGUgb2JqZWN0cyB0aGV5IHJlcXVlc3QKIyAgIGZyb20gdGhlIE9iamVjdE1hbmFnZXIgd2l0aCB0aGUgZGVwZW5kZW5jaWVzIHRoZXkgZGVjbGFyZSBhbmQgY29tcGxhaW5zCiMgICBhYm91dCBhbnkgbWlzc2luZyBkZXBlbmRlbmNpZXMuCiMKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmwpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgJENvZGUgPSAkU2VsZi0+U3RyaXBQb2QoIENvZGUgPT4gJENvZGUgKTsKICAgICRDb2RlID0gJFNlbGYtPlN0cmlwQ29tbWVudHMoIENvZGUgPT4gJENvZGUgKTsKCiAgICAjIFNraXAgaWYgdGhlIGNvZGUgZG9lc24ndCB1c2UgdGhlIE9iamVjdE1hbmFnZXIKICAgIHJldHVybiBpZiAkQ29kZSAhfiBte1wkS2VybmVsOjpPTX1zbXg7CgogICAgIwogICAgIyBPSywgZmlyc3QgY2hlY2sgZm9yIHRoZSBvYmplY3RzIHRoYXQgYXJlIHJlcXVlc3RlZCBmcm9tIE9NLgogICAgIwogICAgbXkgQFVzZWRPYmplY3RzOwoKICAgICMgT25seSBtYXRoIHdoYXQgaXMgYWJzb2x1dGVseSBuZWVkZWQgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzLgogICAgbXkgJFZhbGlkTGlzdEV4cHJlc3Npb24gPSAiW1xAYS16QS1aMC05X1s6c3BhY2U6XTonXCIsKCldKz8iOwoKICAgICMgUmVhbCBHZXQoKSBjYWxscy4KICAgICRDb2RlID1+IHN7CiAgICAgICAgXCRLZXJuZWw6Ok9NLT5HZXRcKCBccyogKFteXCRdJFZhbGlkTGlzdEV4cHJlc3Npb24pIFxzKiBcKQogICAgfXsKICAgICAgICBwdXNoIEBVc2VkT2JqZWN0cywgJFNlbGYtPl9DbGVhbnVwT2JqZWN0TGlzdCgKICAgICAgICAgICAgQ29kZSA9PiAkMSwKICAgICAgICApOwogICAgICAgICcnOwogICAgfWVzbXhnOwoKICAgICMgRm9yIGxvb3BzIHdpdGggR2V0KCkuCiAgICAkQ29kZSA9fiBzewogICAgICAgIGZvciBccysgKD86IG15IFxzKyBcJFthLXpBLXowLTlfXSsgXHMrKT8gXCgoJFZhbGlkTGlzdEV4cHJlc3Npb24pXClccypce1xuCiAgICAgICAgICAgIFxzKyBcJFNlbGYtPlx7XCQuKj9cfSBccyogKD86Ly98XHxcfCk/PSBccyogXCRLZXJuZWw6Ok9NLT5HZXRcKFxzKlwkW2EtekEtWjAtOV9dKz9ccypcKTsgXHMrCiAgICAgICAgXH0KICAgIH17CiAgICAgICAgcHVzaCBAVXNlZE9iamVjdHMsICRTZWxmLT5fQ2xlYW51cE9iamVjdExpc3QoCiAgICAgICAgICAgIENvZGUgPT4gJDEsCiAgICAgICAgKTsKICAgICAgICAnJzsKICAgIH1lc214ZzsKCiAgICBteSBAV3JvbmdOYW1lU3BhY2VzOwogICAgbXkgJVNlZW47CiAgICBVU0VEX09CSkVDVDoKICAgIGZvciBteSAkVXNlZE9iamVjdCAoQFVzZWRPYmplY3RzKSB7CgogICAgICAgIG5leHQgVVNFRF9PQkpFQ1QgaWYgJFNlZW57JFVzZWRPYmplY3R9OwoKICAgICAgICBpZiAoICRVc2VkT2JqZWN0ICF+IG17XEEoPzpbXjpdKyg6OikqKStbXjpdXHp9bXN4ICkgewogICAgICAgICAgICBwdXNoIEBXcm9uZ05hbWVTcGFjZXMsICRVc2VkT2JqZWN0OwogICAgICAgICAgICAkU2VlbnskVXNlZE9iamVjdH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkRXJyb3JNZXNzYWdlOwogICAgaWYgKEBXcm9uZ05hbWVTcGFjZXMpIHsKICAgICAgICAkRXJyb3JNZXNzYWdlCiAgICAgICAgICAgIC49ICJUaGUgbmFtZSBzcGFjZSBmb3IgZm9sbG93aW5nIG9iamVjdHMgaXMgd3Jvbmc6XG4iOwogICAgICAgICRFcnJvck1lc3NhZ2UKICAgICAgICAgICAgLj0gam9pbiggIixcbiIsIG1hcCB7IiAgICAnJF8nIn0gc29ydCB7ICRhIGNtcCAkYiB9IEBXcm9uZ05hbWVTcGFjZXMgKQogICAgICAgICAgICAuICIsXG4iOwogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7CiRFcnJvck1lc3NhZ2UKRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgojIFNtYWxsIGhlbHBlciBmdW5jdGlvbiB0byBjbGVhbnVwIG9iamVjdCBsaXN0cyBpbiBQZXJsIGNvZGUgZm9yIE9NLgpzdWIgX0NsZWFudXBPYmplY3RMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgQFJlc3VsdDsKCiAgICBPQkpFQ1Q6CiAgICBmb3IgbXkgJE9iamVjdCAoIHNwbGl0KCBte1xzK30sICRQYXJhbXtDb2RlfSApICkgewogICAgICAgICRPYmplY3QgPX4gcy9xd1woLy87ICAgICAgICAjIHJlbW92ZSBxdygpIG1hcmtlciBzdGFydAogICAgICAgICRPYmplY3QgPX4gcy9eWygiJ10rLy87ICAgICAjIHJlbW92ZSBsZWFkaW5nIHF1b3RlcyBhbmQgcGFyZW50aGVzZXMKICAgICAgICAkT2JqZWN0ID1+IHMvWykiJyxdKyQvLzsgICAgIyByZW1vdmUgdHJhaWxpbmcgY29tbWEsIHF1b3RlcyBhbmQgcGFyZW50aGVzZXMKICAgICAgICBuZXh0IE9CSkVDVCBpZiAhJE9iamVjdDsKICAgICAgICBwdXNoIEBSZXN1bHQsICRPYmplY3Q7CiAgICB9CgogICAgcmV0dXJuIEBSZXN1bHQ7Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/ParamObject.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBhcmFtT2JqZWN0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybCk7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICAkQ29kZSA9ICRTZWxmLT5TdHJpcFBvZCggQ29kZSA9PiAkQ29kZSApOwogICAgJENvZGUgPSAkU2VsZi0+U3RyaXBDb21tZW50cyggQ29kZSA9PiAkQ29kZSApOwoKICAgIGlmICggJENvZGUgPX4gbXtQYXJhbU9iamVjdH14bXMgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7CkRvbid0IHVzZSB0aGUgUGFyYW1PYmplY3QgaW4gYmluLyBvciBpbiBLZXJuZWwvU3lzdGVtLgpFT0YKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/PerlCritic.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBlcmxDcml0aWM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB2NS4yNDsKdXNlIHV0Zjg7Cgp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsKTsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwp1c2UgUGVybDo6Q3JpdGljOwp1c2UgU3BlY2lvOjpMaWJyYXJ5OjpCdWlsdGluczsKdXNlIFNwZWNpbzo6TGlicmFyeTo6U3RyaW5nOwoKIyBPVE9CTyBtb2R1bGVzCgojIHByb2ZpbGUgaXMgYSByZXF1aXJlZCBwYXJhbWV0ZXIgdGhhdCBoYXMgdG8gYmUgc2V0IGluIHRpZHlhbGxyYwpoYXMgcHJvZmlsZSA9PiAoCiAgICBpcyAgPT4gJ3JvJywKICAgIGlzYSA9PiB0KCdTdHInKSwKKTsKCiMgVGhpcyBzdWIgd2lsbCBiZSBjYWxsZWQgYnkgQ29kZTo6VGlkeUFsbApzdWIgdmFsaWRhdGVfZmlsZSB7CiAgICBteSAoICRTZWxmLCAkRmlsZW5hbWUgKSA9IEBfOwoKICAgICMgQ2FjaGUgUGVybDo6Q3JpdGljIG9iamVjdCBpbnN0YW5jZSB0byBzYXZlIHRpbWUuIEJ1dCBjYWNoZSBpdAogICAgIyBmb3IgZXZlcnkgZnJhbWV3b3JrIHZlcnNpb24sIGJlY2F1c2UgdGhlIGNvbmZpZ3VyYXRpb24gbWF5IGRpZmZlci4KICAgIHN0YXRlICRDYWNoZWRQZXJsQ3JpdGljID0ge307CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBGaWxlbmFtZSA9PiAkRmlsZW5hbWUgKTsKCiAgICBteSAkRnJhbWV3b3JrVmVyc2lvbiA9ICIkVGlkeUFsbDo6T1RPQk86OkZyYW1ld29ya1ZlcnNpb25NYWpvci4kVGlkeUFsbDo6T1RPQk86OkZyYW1ld29ya1ZlcnNpb25NaW5vciI7CgogICAgaWYgKCAhJENhY2hlZFBlcmxDcml0aWMtPnskRnJhbWV3b3JrVmVyc2lvbn0gKSB7CgogICAgICAgICMgZmluZCB0aGUgcGVybGNyaXRpYyB3aXRoIHRoZSBmb2xsb3dpbmcgcHJpb3JpdGllczoKICAgICAgICAjIGkuICBzZXR0aW5nIGluIHRoZSBlbnZpcm9ubWVudCAkRU5We1BFUkxDUklUSUN9CiAgICAgICAgIyBpaS4gdGhlIGZpbGUgcGVybGNyaXRpY3JjIG5leHQgdG8gdGhpcyBtb2R1bGUKICAgICAgICBteSAkUHJvZmlsZSA9ICggJEVOVntQRVJMQ1JJVElDfSAmJiAtZiAkRU5We1BFUkxDUklUSUN9ICkKICAgICAgICAgICAgPwogICAgICAgICAgICAkRU5We1BFUkxDUklUSUN9CiAgICAgICAgICAgIDoKICAgICAgICAgICAgJFNlbGYtPnByb2ZpbGU7CgogICAgICAgICRDYWNoZWRQZXJsQ3JpdGljLT57JEZyYW1ld29ya1ZlcnNpb259ID0gUGVybDo6Q3JpdGljLT5uZXcoCiAgICAgICAgICAgIC1wcm9maWxlID0+ICRQcm9maWxlCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkUGVybENyaXRpYyA9ICRDYWNoZWRQZXJsQ3JpdGljLT57JEZyYW1ld29ya1ZlcnNpb259OwoKICAgICMgRm9yY2Ugc3RyaW5naWZpY2F0aW9uIG9mICRGaWxlbmFtZSBhcyBpdCBpcyBhIFBhdGg6OlRpbnkgb2JqZWN0IGluIENvZGU6OlRpZHlBbGwgMC41MCsuCiAgICBteSBAVmlvbGF0aW9ucyA9ICRQZXJsQ3JpdGljLT5jcml0aXF1ZSgiJEZpbGVuYW1lIik7CgogICAgcmV0dXJuIHVubGVzcyBAVmlvbGF0aW9uczsKCiAgICAjIE5vdGUgdGhhdCB0aGUgdmlvbGF0aW9ucyBoYXZlIG92ZXJsb2FkZWQgc3RyaW5naWZpY2F0aW9uLgogICAgIyBUaGUgZm9ybWF0LCBmb3IgdGhlIHN0cmluZ2lmaWNhdGlvbiwgaGFzIHRvIGJlIHNldCB1cCBzZXBlcmF0ZWx5LgogICAgbXkgJEZvcm1hdCA9ICRQZXJsQ3JpdGljLT5jb25maWctPnZlcmJvc2UgLy8gJyVwIHZpb2xhdGVkIGF0ICVmICVsIGNvbHVtbiAlYyAoU2V2ZXJpdHk6ICVzKVxcbiAgJW1cXG4lZVxcbic7CiAgICBQZXJsOjpDcml0aWM6OlZpb2xhdGlvbjo6c2V0X2Zvcm1hdCgkRm9ybWF0KTsKCiAgICAjIEZpZGRsZSB3aXRoIHRoZSBmaWxlIG5hbWVzIGFzIHJlcG9ydGVkIGJ5IFBlcmw6OkNyaXRpYy4gV2Ugd2FudCB0aGUgYWN0dWFsIGZpbGVzLAogICAgIyBub3QgdGhlIHRlbXBvcmFyeSBjb3BpZXMuCiAgICBteSAkUmVwb3J0ID0gIkBWaW9sYXRpb25zIjsKICAgICRSZXBvcnQgPX4gcyF2aW9sYXRlZCBhdCAvdG1wL0NvZGUtVGlkeUFsbC1cdysvIXZpb2xhdGVkIGF0ICFnOwoKICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCRSZXBvcnQpOwp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/PerlTidy.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBlcmxUaWR5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdjUuMjQ7CnVzZSB1dGY4OwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybCk7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIENhcHR1cmU6OlRpbnkgcXcoY2FwdHVyZV9tZXJnZWQpOwoKIyBSZXF1aXJlIGEgcmVjZW50IHZlcnNpb24gb2YgUGVybDo6VGlkeSBmb3IgY29uc2lzdGVudCBmb3JtYXR0aW5nIG9uIGFsbCBzeXN0ZW1zLgp1c2UgUGVybDo6VGlkeSB2MjAyMTAxMTE7CgojIE9UT0JPIG1vZHVsZXMKCiMgRm9yY2UgYSBjZXJ0YWluIHZlcnNpb24gZm9yIHVuaWZvcm1pdHkKaWYgKCBQZXJsOjpUaWR5LT5WRVJTSU9OKCkgbmUgJzIwMjEwMTExJyApIHsKICAgIG15ICRFcnJvciA9ICdOZXdlciB2ZXJzaW9ucyBvZiBQZXJsOjpUaWR5IHRoYW4gdjIwMjEwMTExIGFyZSBjdXJyZW50bHkgbm90IHN1cHBvcnRlZC4nOwogICAgJEVycm9yICAgLj0gJyBQbGVhc2UgdXNlIGV4YWN0bHkgdGhhdCB2ZXJzaW9uIChzdWRvIGNwYW5tIFBlcmw6OlRpZHlAdjIwMjEwMTExKS4nOwogICAgJEVycm9yICAgLj0gJyBZb3VyIGluc3RhbGxlZCB2ZXJzaW9uIGlzOiAnIC4gUGVybDo6VGlkeS0+VkVSU0lPTigpIC4gIi5cbiI7CiAgICBkaWUgJEVycm9yOwp9CgpzdWIgdHJhbnNmb3JtX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKENvZGUgPT4gJENvZGUpOwoKICAgICMgRG9uJ3QgbW9kaWZ5IGZpbGVzIHdoaWNoIGFyZSBkZXJpdmVkIGZpbGVzIChoYXZlIGNoYW5nZSBtYXJrZXJzKS4KICAgIHJldHVybiAkQ29kZSBpZiAkQ29kZSA9fiBteyBcJE9sZElkOiB8IF4gXHMqIFwjIFxzKiBcJG9yaWdpbjogfXhtczsKCiAgICAjIFRoZXJlIHdhcyBzb21lIGN1c3RvbSBjb2RlIGluIHBsYWNlIGhlcmUgdG8gcmVwbGFjZSAnLDsnIHdpdGggJzsnLCBidXQgdGhhdCBwcm92ZWQgdG8KICAgICMgYmUgbXVjaCB0b28gc2xvdyBvbiBsYXJnZSBmaWxlcyAoPiA0MHMgb24gQWdlbnRUaWNrZXRQcm9jZXNzLnBtKS4KICAgICMgVGhlcmVmb3JlLCB0aGlzIGxvZ2ljIHdhcyByZW1vdmVkLgoKICAgICMgVGhpcyBiaXQgb2YgaW5zYW5pdHkgaXMgbmVlZGVkIGJlY2F1c2UgaWYgc29tZSBvdGhlciBjb2RlIGNhbGxzCiAgICAjIEdldG9wdDo6TG9uZzo6Q29uZmlndXJlKCkgdG8gY2hhbmdlIHNvbWUgb3B0aW9ucywgdGhlbiBldmVyeXRoaW5nIGNhbiBnbwogICAgIyB0byBoZWxsLiBJbnRlcm5hbGx5IHBlcmx0aWR5KCkgdHJpZXMgdG8gdXNlIEdldG9wdDo6TG9uZyB3aXRob3V0CiAgICAjIHJlc2V0dGluZyB0aGUgY29uZmlndXJhdGlvbiBkZWZhdWx0cywgbGVhZGluZyB0byB2ZXJ5IGNvbmZ1c2luZwogICAgIyBlcnJvcnMuIFNlZSBodHRwczovL3J0LmNwYW4ub3JnL1RpY2tldC9EaXNwbGF5Lmh0bWw/aWQ9MTE4NTU4CiAgICBHZXRvcHQ6Okxvbmc6OkNvbmZpZ0RlZmF1bHRzKCk7CgogICAgIyBwZXJsdGlkeSByZXBvcnRzIGVycm9ycyBpbiB0d28gZGlmZmVyZW50IHdheXMuCiAgICAjIEFyZ3VtZW50L3Byb2ZpbGUgZXJyb3JzIGFyZSBvdXRwdXQgYW5kIGFuIGVycm9yX2ZsYWcgaXMgcmV0dXJuZWQuCiAgICAjIFN5bnRheCBlcnJvcnMgYXJlIHNlbnQgdG8gZXJyb3JmaWxlLgogICAgbXkgKCAkT3V0cHV0LCAkRXJyb3JGbGFnLCAkRXJyb3JGaWxlLCAkRGVzdGluYXRpb24gKTsKICAgICRPdXRwdXQgPSBjYXB0dXJlX21lcmdlZCB7CiAgICAgICAgJEVycm9yRmxhZyA9IFBlcmw6OlRpZHk6OnBlcmx0aWR5KAogICAgICAgICAgICBhcmd2ICAgICAgICA9PiAkU2VsZi0+YXJndigpLAogICAgICAgICAgICBzb3VyY2UgICAgICA9PiBcJENvZGUsCiAgICAgICAgICAgIGRlc3RpbmF0aW9uID0+IFwkRGVzdGluYXRpb24sCiAgICAgICAgICAgIGVycm9yZmlsZSAgID0+IFwkRXJyb3JGaWxlCiAgICAgICAgKTsKICAgIH07CiAgICBpZiAoJEVycm9yRmlsZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCIkRXJyb3JGaWxlIik7CiAgICB9CiAgICBpZiAoJEVycm9yRmxhZykgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCIkT3V0cHV0Iik7CiAgICB9CiAgICBpZiAoIGRlZmluZWQgJE91dHB1dCApIHsKICAgICAgICBwcmludCBTVERFUlIgJE91dHB1dDsKICAgIH0KCiAgICByZXR1cm4gJERlc3RpbmF0aW9uOwp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/Pod/FunctionPod.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBvZDo6RnVuY3Rpb25Qb2Q7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgIG15ICRGdW5jdGlvbk5hbWVJblBvZCA9ICcnOwogICAgbXkgJEZ1bmN0aW9uTGluZUluUG9kID0gJyc7CiAgICBteSAkRnVuY3Rpb25DYWxsSW5Qb2QgPSAnJzsKICAgIG15ICRMaW5lTnVtYmVyICAgICAgICA9IDA7CgogICAgbXkgJEVycm9yTWVzc2FnZSA9ICcnOwoKICAgIG15ICRQYWNrYWdlSXNSb2xlOwogICAgJFBhY2thZ2VJc1JvbGUgPSAxIGlmICRDb2RlID1+IG17XnVzZSBccysgTW9vc2U6OlJvbGV9aXNteDsKCiAgICBteSBAQ29kZUxpbmVzID0gc3BsaXQgL1xuLywgJENvZGU7CgogICAgZm9yIG15ICRMaW5lIChAQ29kZUxpbmVzKSB7CiAgICAgICAgJExpbmVOdW1iZXIrKzsKCiAgICAgICAgIyBDaGVjayB0aGUgZm9ybWF0dGluZyBvZiB0aGUgYWN0dWFsIGhlYWQyIGxpbmUKICAgICAgICAjIFBPRCBmb3IgZnVuY3Rpb25zIGlzIHJlY29nbmlzZWQgYnkgdGhlIHNpbmdsZSB3b3JkIGFmdGVyIHRoZSAnPWhlYWQyJy4KICAgICAgICAjIFBPRCBmb3IgcHJpdmF0ZSBmdW5jdGlvbnMsIHdoaWNoIGhhdmUgYSBsZWFkaW5nICdfJyBpbiB0aGVpciBuYW1lLCBpcyBub3QgY2hlY2tlZC4KICAgICAgICBpZiAoICRMaW5lID1+IG17Xj1oZWFkMiBccysgKFtBLVphLXowLTldKykgKFwoXCkpPyBccyogJH1zbXggKSB7CgogICAgICAgICAgICBteSAkRnVuY3Rpb25OYW1lICA9ICQxOwogICAgICAgICAgICBteSAkSXNGdW5jdGlvblBvZCA9ICQyID8gMSA6IDA7CgogICAgICAgICAgICBpZiAoJElzRnVuY3Rpb25Qb2QpIHsKICAgICAgICAgICAgICAgICRGdW5jdGlvbk5hbWVJblBvZCA9ICRGdW5jdGlvbk5hbWU7CiAgICAgICAgICAgICAgICAkRnVuY3Rpb25MaW5lSW5Qb2QgPSAkTGluZTsKICAgICAgICAgICAgICAgIGNob21wICRGdW5jdGlvbkxpbmVJblBvZDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2RlID1+IG17c3ViICRGdW5jdGlvbk5hbWV9ICkgewogICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiSXRlbSB3aXRob3V0IGZ1bmN0aW9uIChuZWFyIExpbmUgJExpbmVOdW1iZXIpLCB0aGUgbGluZSBzaG91bGQgbG9vayBsaWtlICc9aGVhZDIgU2FtcGxlRnVuY3Rpb24oKSdcbiI7CiAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRMaW5lTnVtYmVyOiAkTGluZVxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBsb29rIGF0IHRoZSBzYW1wbGUgY29kZSBpbiB0aGUgUE9ECiAgICAgICAgaWYgKCAkRnVuY3Rpb25OYW1lSW5Qb2QgJiYgJExpbmUgPX4gbS8tPiguKz8pXCgvICYmICEkRnVuY3Rpb25DYWxsSW5Qb2QgKSB7CiAgICAgICAgICAgICRGdW5jdGlvbkNhbGxJblBvZCA9ICQxOwogICAgICAgICAgICAkRnVuY3Rpb25DYWxsSW5Qb2QgPX4gcy8gLy87CgogICAgICAgICAgICBpZiAoICRMaW5lID1+IC9cJFNlbGYtPi8gJiYgISRQYWNrYWdlSXNSb2xlICkgewogICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiRG9uJ3QgdXNlIFwkU2VsZiBpbiBwZXJsZG9jXG4iOwogICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiTGluZSAkTGluZU51bWJlcjogJExpbmVcbiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkRnVuY3Rpb25OYW1lSW5Qb2QgbmUgJEZ1bmN0aW9uQ2FsbEluUG9kICkgewogICAgICAgICAgICAgICAgaWYgKCAkRnVuY3Rpb25OYW1lSW5Qb2QgbmUgJ25ldycgfHwgKCAkRnVuY3Rpb25DYWxsSW5Qb2QgbmUgJ0dldCcgJiYgJEZ1bmN0aW9uQ2FsbEluUG9kIG5lICdDcmVhdGUnICkgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG15ICREZXNjcmlwdGlvbkxpbmUgPSAkTGluZTsKICAgICAgICAgICAgICAgICAgICBjaG9tcCgkRGVzY3JpcHRpb25MaW5lKTsKICAgICAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICIkRnVuY3Rpb25MaW5lSW5Qb2QgPC0+ICREZXNjcmlwdGlvbkxpbmVcbiI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJEZ1bmN0aW9uTmFtZUluUG9kICYmICRMaW5lICF+IC9cJFtBLVphLXowLTk6XSstPiguKz8pXCgvICYmICRGdW5jdGlvbk5hbWVJblBvZCBuZSAnbmV3JyApIHsKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIlRoZSBmdW5jdGlvbiBzeW50YXggaXMgbm90IGNvcnJlY3QhXG4iOwogICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiTGluZSAkTGluZU51bWJlcjogJExpbmVcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgbG9vayBhdCB0aGUgc3ViIGRlY2xhcmF0aW9uIGZvbGxvd2luZyB0aGUgUE9ECiAgICAgICAgaWYgKCAkRnVuY3Rpb25OYW1lSW5Qb2QgJiYgJExpbmUgPX4gbS9zdWIvICkgewogICAgICAgICAgICBpZiAoICRMaW5lID1+IG0vc3ViICguKykgXHsvICkgewogICAgICAgICAgICAgICAgbXkgJEZ1bmN0aW9uU3ViID0gJDE7CiAgICAgICAgICAgICAgICAkRnVuY3Rpb25TdWIgPX4gcy8gLy87CiAgICAgICAgICAgICAgICBteSAkU3ViTGluZSA9ICRMaW5lOwoKICAgICAgICAgICAgICAgIGlmICggJEZ1bmN0aW9uU3ViIG5lICRGdW5jdGlvbk5hbWVJblBvZCApIHsKICAgICAgICAgICAgICAgICAgICBjaG9tcCgkU3ViTGluZSk7CiAgICAgICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiJEZ1bmN0aW9uTGluZUluUG9kIDwtPiAkU3ViTGluZSBcbiI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJEZ1bmN0aW9uTmFtZUluUG9kID0gJyc7CiAgICAgICAgICAgICRGdW5jdGlvbkNhbGxJblBvZCA9ICcnOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCRFcnJvck1lc3NhZ2UpOwogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/Pod/NamePod.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBvZDo6TmFtZVBvZDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmwpOwoKc3ViIHRyYW5zZm9ybV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgICMgRG9uJ3QgbW9kaWZ5IGZpbGVzIHdoaWNoIGFyZSBkZXJpdmVkIGZpbGVzIChoYXZlIGNoYW5nZSBtYXJrZXJzKS4KICAgIHJldHVybiAkQ29kZSBpZiAkQ29kZSA9fiBteyBcJE9sZElkOiB8IF4gXHMqIFwjIFxzKiBcJG9yaWdpbjogfXhtczsKCiAgICBteSAkUGFja2FnZU5hbWUgPSAnJzsKICAgIG15ICRJbnNpZGVOYW1lUG9kOwogICAgbXkgJFBhY2thZ2VOYW1lUG9kOwogICAgbXkgJFVwZGF0ZWQgPSAwOwoKICAgIG15IEBDb2RlTGluZXMgPSBzcGxpdCAvXG4vLCAkQ29kZTsKCiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lIChAQ29kZUxpbmVzKSB7CiAgICAgICAgaWYgKCAkTGluZSA9fiBte15wYWNrYWdlIFxzKz8gKFtBLVphLXowLTk6X10rPyk7fXNteCApIHsKICAgICAgICAgICAgJFBhY2thZ2VOYW1lID0gJDE7CiAgICAgICAgICAgIG5leHQgTElORTsKICAgICAgICB9CgogICAgICAgIGlmICggJExpbmUgPX4gbXtePWhlYWQxIFxzKyBOQU1FIFxzKiAkfXNteCApIHsKICAgICAgICAgICAgJEluc2lkZU5hbWVQb2QgPSAxOwogICAgICAgICAgICBuZXh0IExJTkU7CiAgICAgICAgfQoKICAgICAgICBuZXh0IExJTkUgaWYgISRJbnNpZGVOYW1lUG9kOwogICAgICAgIG5leHQgTElORSBpZiAhJExpbmU7CiAgICAgICAgbGFzdCBMSU5FIGlmICRMaW5lID1+IG17Xj1jdXQgXHMqICR9c214OwogICAgICAgIGxhc3QgTElORSBpZiAkTGluZSA9fiBte149aGVhZDF9c214OwoKICAgICAgICBpZiAoICRMaW5lID1+IG17XlxzKiAoW0EtWmEtejAtOTpfL1wuXSspfXNteCApIHsKICAgICAgICAgICAgJFBhY2thZ2VOYW1lUG9kID0gJDE7CiAgICAgICAgICAgIGlmICggJFBhY2thZ2VOYW1lIG5lICRQYWNrYWdlTmFtZVBvZCApIHsKICAgICAgICAgICAgICAgICRMaW5lID1+IHN7XlxzKiAoW0EtWmEtejAtOTpfL1wuXSspfXskUGFja2FnZU5hbWV9c214OwogICAgICAgICAgICAgICAgJFVwZGF0ZWQgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxhc3QgTElORTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCRVcGRhdGVkKSB7CiAgICAgICAgJENvZGUgPSBqb2luICJcbiIsIEBDb2RlTGluZXM7CiAgICAgICAgJENvZGUgLj0gIlxuIjsKICAgIH0KCiAgICByZXR1cm4gJENvZGU7Cn0KCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgICMgRG9uJ3QgY2hlY2sgZmlsZXMgd2hpY2ggYXJlIGRlcml2ZWQgZmlsZXMgKGhhdmUgY2hhbmdlIG1hcmtlcnMpLgogICAgcmV0dXJuICRDb2RlIGlmICRDb2RlID1+IG17IFwkT2xkSWQ6IHwgXiBccyogXCMgXHMqIFwkb3JpZ2luOiB9eG1zOwoKICAgIG15ICRQYWNrYWdlTmFtZSA9ICcnOwogICAgbXkgJEluc2lkZU5hbWVQb2Q7CiAgICBteSAkUGFja2FnZU5hbWVQb2Q7CiAgICBteSAkQ291bnRlciA9IDA7CiAgICBteSAkRXJyb3JNZXNzYWdlOwoKICAgIG15IEBDb2RlTGluZXMgPSBzcGxpdCAvXG4vLCAkQ29kZTsKCiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lIChAQ29kZUxpbmVzKSB7CiAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgaWYgKCAkTGluZSA9fiBte15wYWNrYWdlIFxzKz8gKFtBLVphLXowLTk6X10rPyk7fXNteCApIHsKICAgICAgICAgICAgJFBhY2thZ2VOYW1lID0gJDE7CiAgICAgICAgICAgIG5leHQgTElORTsKICAgICAgICB9CgogICAgICAgIGlmICggJExpbmUgPX4gbXtePWhlYWQxIFxzKyBOQU1FIFxzKiAkfXNteCApIHsKICAgICAgICAgICAgJEluc2lkZU5hbWVQb2QgPSAxOwogICAgICAgICAgICBuZXh0IExJTkU7CiAgICAgICAgfQoKICAgICAgICBuZXh0IExJTkUgaWYgISRJbnNpZGVOYW1lUG9kOwogICAgICAgIG5leHQgTElORSBpZiAhJExpbmU7CiAgICAgICAgbGFzdCBMSU5FIGlmICRMaW5lID1+IG17Xj1jdXQgXHMqICR9c214OwogICAgICAgIGxhc3QgTElORSBpZiAkTGluZSA9fiBte149aGVhZDF9c214OwoKICAgICAgICBpZiAoICRMaW5lID1+IG17XlxzKiAoW0EtWmEtejAtOTpfL1wuXSspfXNteCApIHsKICAgICAgICAgICAgJFBhY2thZ2VOYW1lUG9kID0gJDE7CiAgICAgICAgICAgIGlmICggJFBhY2thZ2VOYW1lIG5lICRQYWNrYWdlTmFtZVBvZCApIHsKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgPSAiUGFja2FnZU5hbWUgJFBhY2thZ2VOYW1lUG9kIGRvZXMgbm90IG1hdGNoIHBhY2thZ2UgJFBhY2thZ2VOYW1lXG4iOwogICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiTGluZSAkQ291bnRlcjogJExpbmVcbiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGFzdCBMSU5FOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCIkRXJyb3JNZXNzYWdlIik7CiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/Pod/SpellCheck.Whitelist.txt" Permission="660" Encode="Base64">YWdwbApncGwKb3RvYm8Kb3RycwpzbGEKCmFzY2lpCmh0bWwKY2dpCnBncApzbWltZQpDQQoKcGFyYW0KcGFyYW1zCnByb3Zpc2lvbmVyCgpkb2Nib29rCmV0Ywp1dGY4CmlkCmlkcwpzbGEKc2xhcwpBQ0wKY3N2CnNxbApkYm1zCmZldGNobWFpbAp0bXAKaXBjCm9wbQpzb3BtCml0c20KcGRmCnhtbApzdGF0CnN0YXRzCnV0ZgpmYXEKdW5pbnN0YWxsCnVuaW5zdGFsbHMKc3lzY29uZmlnCmltcG9ydGFibGUKaW52b2tlcgppbnZva2VycwptaW5pZmllZApkZWNyeXB0CmRlY3J5cHRlZAp1bm1hbmFnZWQKcHJlc2VsZWN0Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/Pod/SpellCheck.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBvZDo6U3BlbGxDaGVjazsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBJbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiBodHRwczovL21ldGFjcGFuLm9yZy9zb3VyY2UvRFJPTFNLWS9Db2RlLVRpZHlBbGwtMC41Ni9saWIvQ29kZS9UaWR5QWxsL1BsdWdpbi9Qb2RTcGVsbC5wbQoKdXNlIENhcHR1cmU6OlRpbnkgcXcoKTsKdXNlIEZpbGU6OlRlbXAoKTsKdXNlIFBvZDo6U3BlbGw7Cgp1c2UgTW9vOwoKZXh0ZW5kcyAnVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybCc7CgpvdXIgJEh1bnNwZWxsUGF0aDsKb3VyICRIdW5zcGVsbERpY3Rpb25hcnlQYXRoOwpvdXIgJEh1bnNwZWxsV2hpdGVsaXN0UGF0aDsKCnN1YiB2YWxpZGF0ZV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIEZpbGVuYW1lID0+ICRGaWxlICk7CgogICAgaWYgKCAhJEh1bnNwZWxsUGF0aCApIHsKICAgICAgICAkSHVuc3BlbGxQYXRoID0gYHdoaWNoIGh1bnNwZWxsYDsKICAgICAgICBjaG9tcCAkSHVuc3BlbGxQYXRoOwogICAgICAgIGlmICggISRIdW5zcGVsbFBhdGggKSB7CiAgICAgICAgICAgIHByaW50IFNUREVSUiBfX1BBQ0tBR0VfXyAuICJcbkNvdWxkIG5vdCBmaW5kICdodW5zcGVsbCcsIHNraXBwaW5nIHNwZWxsIGNoZWNrZXIgdGVzdHMuXG4iOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkSHVuc3BlbGxEaWN0aW9uYXJ5UGF0aCA9IF9fRklMRV9fOwogICAgICAgICRIdW5zcGVsbERpY3Rpb25hcnlQYXRoID1+IHN7U3BlbGxDaGVja1wucG0kfXsuLi8uLi9TdGF0aWNGaWxlcy9IdW5zcGVsbC9EaWN0aW9uYXJpZXN9OwoKICAgICAgICAkSHVuc3BlbGxXaGl0ZWxpc3RQYXRoID0gX19GSUxFX187CiAgICAgICAgJEh1bnNwZWxsV2hpdGVsaXN0UGF0aCA9fiBze1wucG0kfXsuV2hpdGVsaXN0LnR4dH07CiAgICB9CgogICAgIyAjIFRPRE86IE1PVkUgVE8gU0VQQVJBVEUgUGVybDo6Q29tbWVudHNTcGVsbENoZWNrIHBsdWdpbiBsYXRlcgogICAgIyBteSAkQ29kZSA9ICRTZWxmLT5fR2V0RmlsZUNvbnRlbnRzKCRGaWxlKTsKICAgICMKICAgICMgbXkgJENvbW1lbnRzID0gJFNlbGYtPlN0cmlwUG9kKCBDb2RlID0+ICRDb2RlICk7CiAgICAjICRDb21tZW50cyAgICA9fiBze14gXCMgXHMgc3RyaXBwZWQgXHMgUE9EfXt9c214ZzsKICAgICMgJENvbW1lbnRzICAgID1+IHN7XiBccyogW14jXHNdIC4qPyAkfXt9c214ZzsgICMgUmVtb3ZlIG5vbi1jb21tZW50IGxpbmVzCiAgICAjICRDb21tZW50cyAgICA9fiBze1xuXG4rfXtcbn1zbXhnOyAgICAgICAgICAgICAjIFJlbW92ZSBlbXB0eSBibG9ja3MKICAgICMgJENvbW1lbnRzICAgID1+IHN7XiBccyogWyNdIFxzKiB9e31zbXhnOyAgICAgICMgUmVtb3ZlIGNvbW1lbnQgc2lnbnMKCiAgICBteSAoICRQb2RUZXh0LCAkRXJyb3IgKSA9IENhcHR1cmU6OlRpbnk6OmNhcHR1cmUoIHN1YiB7IFBvZDo6U3BlbGwtPm5ldygpLT5wYXJzZV9mcm9tX2ZpbGUoICRGaWxlLT5zdHJpbmdpZnkoKSApIH0gKTsKICAgIGRpZSAkRXJyb3IgaWYgJEVycm9yOwoKICAgIG15ICRUZW1wRmlsZSA9IEZpbGU6OlRlbXAtPm5ldygpOwogICAgcHJpbnQgJFRlbXBGaWxlICRQb2RUZXh0OwogICAgJFRlbXBGaWxlLT5jbG9zZSgpOwoKICAgIG15ICRDTUQgICAgPSAiJEh1bnNwZWxsUGF0aCAtZCAke0h1bnNwZWxsRGljdGlvbmFyeVBhdGh9L2VuX1VTIC1wICRIdW5zcGVsbFdoaXRlbGlzdFBhdGggLWEgJFRlbXBGaWxlIjsKICAgIG15ICRPdXRwdXQgPSBgJENNRGA7CgogICAgaWYgKCAke15DSElMRF9FUlJPUl9OQVRJVkV9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCJFcnJvciBydW5uaW5nICckQ01EJzogJE91dHB1dCIpOwogICAgfQoKICAgIG15ICggQEVycm9ycywgJVNlZW4gKTsKICAgIExJTkU6CiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCggbS9cbi8sICRPdXRwdXQgKSApIHsKICAgICAgICBpZiAoIG15ICggJE9yaWdpbmFsLCAkUmVtYWluaW5nICkgPSAoICRMaW5lID1+IC9eW1wmXD9cI10gKFxTKylccysoLiopLyApICkgewoKICAgICAgICAgICAgaWYgKCAkT3JpZ2luYWwgPX4gbXteIF8/IFtBLVpdKyBbYS16MC05XSsgW0EtWmEtejAtOV0qIH1zbXggKSB7CiAgICAgICAgICAgICAgICBuZXh0IExJTkU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggISRTZWVueyRPcmlnaW5hbH0rKyApIHsKICAgICAgICAgICAgICAgIG15ICgkU3VnZ2VzdGlvbnMpID0gKCAkUmVtYWluaW5nID1+IC86ICguKikvICk7CiAgICAgICAgICAgICAgICBpZiAoJFN1Z2dlc3Rpb25zKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCggQEVycm9ycywgc3ByaW50ZiggIiVzIChzdWdnZXN0aW9uczogJXMpIiwgJE9yaWdpbmFsLCAkU3VnZ2VzdGlvbnMgKSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCggQEVycm9ycywgJE9yaWdpbmFsICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpZiAoQEVycm9ycykgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKAogICAgICAgICAgICBzcHJpbnRmKCAiXG5QZXJsIFBvZCBjb250YWlucyB1bnJlY29nbml6ZWQgd29yZHM6XG4lc1xuIiwgam9pbiggIlxuIiwgc29ydCBARXJyb3JzICkgKQogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/Pod/Validator.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBvZDo6VmFsaWRhdG9yOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybCk7Cgp1c2UgQ2FwdHVyZTo6VGlueSBxdyhjYXB0dXJlX21lcmdlZCk7CnVzZSBQb2Q6OkNoZWNrZXI7CgojCiMgVmFsaWRhdGVkIFBvZCB3aXRoIFBvZDo6Q2hlY2tlciBmb3Igc3ludGFjdGljYWwgY29ycmVjdG5lc3MuCiMKCnN1YiB2YWxpZGF0ZV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIEZpbGVuYW1lID0+ICRGaWxlICk7CgogICAgbXkgJENoZWNrZXIgPSBQb2Q6OkNoZWNrZXItPm5ldygpOwoKICAgICMgRm9yY2Ugc3RyaW5naWZpY2F0aW9uIG9mICRGaWxlIGFzIGl0IGlzIGEgUGF0aDo6VGlueSBvYmplY3QgaW4gQ29kZTo6VGlkeUFsbCAwLjUwKy4KICAgIG15ICRPdXRwdXQgPSBjYXB0dXJlX21lcmdlZCB7ICRDaGVja2VyLT5wYXJzZV9mcm9tX2ZpbGUoICIkRmlsZSIsIFwqU1RERVJSICkgfTsKCiAgICAjIE9ubHkgZGllIGlmIE91dHB1dCBpcyBmaWxsZWQgd2l0aCBlcnJvcnMuIE90aGVyd2lzZSBpdCBjb3VsZCBiZQogICAgIyAgIHRoYXQgdGhlcmUganVzdCB3YXMgbm8gUE9EIGluIHRoZSBmaWxlLgogICAgaWYgKCAkQ2hlY2tlci0+bnVtX2Vycm9ycygpICYmICRPdXRwdXQgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIiRPdXRwdXQiKTsKICAgIH0KfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/Print.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlByaW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybCk7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICBteSAoICRFcnJvck1lc3NhZ2UsICRDb3VudGVyICk7CgogICAgTElORToKICAgIGZvciBteSAkTGluZSAoIHNwbGl0IC9cbi8sICRDb2RlICkgewogICAgICAgICRDb3VudGVyKys7CgogICAgICAgIG5leHQgTElORSBpZiAkTGluZSA9fiBtL15ccypcIy9zbXg7CgogICAgICAgIGlmICggJExpbmUgPX4gbXteIFxzKiBwcmludCAoXHN8XCgpIH1zbXggKSB7CiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkxpbmUgJENvdW50ZXI6ICRMaW5lXG4iOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpEb24ndCB1c2UgJ3ByaW50JyBpbiBtb2R1bGVzLgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/Require.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlJlcXVpcmU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgICRDb2RlID0gJFNlbGYtPlN0cmlwUG9kKCBDb2RlID0+ICRDb2RlICk7CgogICAgbXkgKCAkRXJyb3JNZXNzYWdlLCAkQ291bnRlciApOwoKICAgIExJTkU6CiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICBpZiAoICRMaW5lID1+IG0vXiBccyogcmVxdWlyZSAoPzogXHMgfCBcKCApL3NteCApIHsKICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiTGluZSAkQ291bnRlcjogJExpbmVcbiI7CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7CkRvbid0IHVzZSByZXF1aXJlIGRpcmVjdGx5LCBidXQgTWFpbjo6UmVxdWlyZSBpbnN0ZWFkLgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/ScriptFormat.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlNjcmlwdEZvcm1hdDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmwpOwoKc3ViIHRyYW5zZm9ybV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgICMgRm9yIG90b2JvIHdlIHVzZSAvdXNyL2Jpbi9lbnYgcGVybAoKICAgICRDb2RlID1+IHN7XEFcIyEvdXNyL2Jpbi9wZXJsW15cbl0qfXtcIyEvdXNyL2Jpbi9lbnYgcGVybH14bXM7CgogICAgcmV0dXJuICRDb2RlOwp9CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICAjIENoZWNrIGZvciBwcmVzZW5jZSBvZiBzaGViYW5nIGxpbmUKICAgIGlmICggJENvZGUgIX4gbXtcQVwjIS91c3IvYmluL2VudlxzcGVybH14bXMgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7Ck5lZWQgJyMhL3Vzci9iaW4vZW52IHBlcmwnIGF0IHRoZSBzdGFydCBvZiBzY3JpcHQgZmlsZXMuCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/SubDeclaration.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlN1YkRlY2xhcmF0aW9uOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybCk7Cgo9aGVhZDEgU1lOT1BTSVMKClRoaXMgbW9kdWxlIGNoZWNrcyBmb3Igc3ViIGRlY2xhcmF0aW9ucyB3aXRoIHRoZSBicmFjZSBpbiB0aGUgZm9sbG93aW5nCmxpbmUgYW5kIGNvcnJlY3RzIHRoZW0uCgogICAgc3ViIGFiYwogICAgewogICAgICAgIC4uLgogICAgfQoKd2lsbCBiZWNvbWU6CgogICAgc3ViIGFiYyB7CiAgICAgICAgLi4uCiAgICB9Cgo9Y3V0CgpzdWIgdHJhbnNmb3JtX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgaWYgKCAkQ29kZSA9fiBtfF5zdWIgXHMrIFx3KyBccyogXHI/XG4gXHsgfHNteCApIHsKICAgICAgICAkQ29kZSA9fiBzfF4oc3ViIFxzKyBcdyspIFxzKiBccj9cbiBceyB8JDEge3xzbXhnOwogICAgfQoKICAgIHJldHVybiAkQ29kZTsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/SyntaxCheck.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlN5bnRheENoZWNrOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7Cgp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsKTsKCiMgY29yZSBtb2R1bGVzCnVzZSBGaWxlOjpUZW1wOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgIyBTaW1wbGUgY29tcGlsZSBjaGVja3MgdmVyeSBvZnRlbiBmYWlsIGJlY2F1c2UgcmVxdWlyZWQgbW9kdWxlcyBhcmUgbm90IGF2YWlsYWJsZS4KICAgICMgQnV0IGluc3RhbGxlZCBtb2R1bGVzIGFyZSBub3QgdGhlIHNjb3BlIG9mIHRoaXMgdGVzdCwgdGhlcmVmb3JlIHdlIHJlbW92ZSBtYW55CiAgICAjIG9mIHRoZSAndXNlJyBzdGF0ZW1lbnQuIEJ1dCBrZWVwIHNvbWUgbW9kdWxlcyBhbmQgcHJhZ21hdGEgYmVjYXVzZSByZW1vdmluZyB0aGVtCiAgICAjIHdvdWxkIGhhdmUgYW4gYWR2ZXJzZSBlZmZlY3QuCiAgICBteSAoICRDbGVhbmVkU291cmNlLCAkRGVsZXRhYmxlU3RhdGVtZW50ICk7CgogICAgIyBBbGxvdyBpbXBvcnRhbnQgbW9kdWxlcyB0aGF0IGNvbWUgd2l0aCB0aGUgUGVybCBjb3JlIG9yIGFyZSBleHRlcm5hbAogICAgIyAgIGRlcGVuZGVuY2llcyBvZiBPVE9CTyBhbmQgY2FuIHRodXMgYmUgYXNzdW1lZCBhcyBiZWluZyBpbnN0YWxsZWQuCiAgICAjICAgU29tZSBjb21tb24gbW9kdWxlcyB0aGF0IGFyZSB1c2VkIGR1cmluZyBkZXZlbG9wbWVudCBhcmUgYWxzbyBub3Qgc3RyaXBwZWQuCiAgICAjCiAgICAjIE5vdGUgdGhhdCB0aGlzIGlzIG5vdCBmb29sIHByb29mLiBNb2R1bGVzIGxpa2UgRGF0ZVRpbWU6OlRpbWVab25lOjpJQ2FsIHdvdWxkCiAgICAjIGFsc28gbm90IGJlIHN0cmlwcGVkIGFzIHRoZSB0aGF0IG1vZHVsZSBuYW1lIGNvbnRhaW5zIHRoZSBzdWJzdHJpbmcgJ0RhdGVUaW1lJy4KICAgICMKICAgICMgVGhlICd1c2UgdjUueHgnIGxpbmVzIGFyZSBhbHNvIGtlcHQgaW4gdGhlIGZpbGUuIFRoaXMgaXMgZmluZSBhcyB0aGVyZSBpcyBhIFBlcmw6OkNyaXRpYwogICAgIyBwb2xpY3kgdGhhdCBlbmZvcmNlcyB0aGF0IG5vIHZlcnNpb24gb2YgUGVybCBoaWdoZXIgdGhhbiB0aGUgbWluaW1hbCBzdXBwb3J0ZWQgdmVyc2lvbgogICAgIyBpcyByZXF1aXJlZC4KICAgIG15IEBBbGxvd2VkRXh0ZXJuYWxNb2R1bGVzID0gcXcoCiAgICAgICAgdmFycwogICAgICAgIGNvbnN0YW50CiAgICAgICAgc3RyaWN0CiAgICAgICAgd2FybmluZ3MKICAgICAgICB0aHJlYWRzCiAgICAgICAgbGliCgogICAgICAgIHY1LlxkXGQKCiAgICAgICAgQXJjaGl2ZTo6VGFyCiAgICAgICAgQXJjaGl2ZTo6WmlwCiAgICAgICAgQ2FycAogICAgICAgIENvbmZpZwogICAgICAgIENvbnN0OjpGYXN0CiAgICAgICAgQ3dkCiAgICAgICAgREJJCiAgICAgICAgRGF0YTo6RHVtcGVyCiAgICAgICAgRGF0ZVRpbWUKICAgICAgICBGY250bAogICAgICAgIEZpbGU6OkJhc2VuYW1lCiAgICAgICAgRmluZEJpbgogICAgICAgIElPOjpTb2NrZXQKICAgICAgICBMaXN0OjpVdGlsCiAgICAgICAgTW9vCiAgICAgICAgTW9vc2UKICAgICAgICBQT1NJWAogICAgICAgIFBlcmw6OkNyaXRpYzo6VXRpbHMKICAgICAgICBSZWFkb25seQogICAgICAgIFRlbXBsYXRlCiAgICAgICAgVGVzdDI6OlYwCiAgICAgICAgVGltZTo6SGlSZXMKICAgICk7CgogICAgbXkgJEFsbG93ZWRFeHRlcm5hbE1vZHVsZXNSZWdleCA9ICdcQSBccyogdXNlIFxzKyAoPzogJyAuIGpvaW4oICd8JywgQEFsbG93ZWRFeHRlcm5hbE1vZHVsZXMgKSAuICcgKSAnOwoKICAgIExJTkU6CiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKCiAgICAgICAgIyBDaGVjayBmb3IgJ3VzZSBWRVJTSU9OJyBkZWNsYXJhdGlvbnMgbGlrZSAndXNlIHY1LjQyJy4gQXZvaWQgcmVxdWlyaW5nIGEgdmVyc2lvbiBoaWdoZXIKICAgICAgICAjIHRoYW4gdGhlIG1pbmltYWwgc3VwcG9ydGVkIHZlcnNpb24uCiAgICAgICAgbXkgJE1pbmltYWxTdXBwb3J0ZWRWZXJzaW9uID0gJzUuMjQnOwogICAgICAgIGlmICggbXkgKCRSZXF1aXJlZFZlcnNpb24pID0gJExpbmUgPX4gbXsgXEEgXHMqIHVzZSBccysgdig1LlxkXGQpIH14bXMgKSB7CiAgICAgICAgICAgIGlmICggJFJlcXVpcmVkVmVyc2lvbiBndCAkTWluaW1hbFN1cHBvcnRlZFZlcnNpb24gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiUGVybCAkUmVxdWlyZWRWZXJzaW9uIGlzIHJlcXVpcmVkIGJ1dCAkTWluaW1hbFN1cHBvcnRlZFZlcnNpb24gaXMgdGhlIG1pbmltYWwgc3VwcG9ydGVkIHZlcnNpb25cbiIpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFdlJ2xsIHNraXAgYWxsIHVzZSAqOyBzdGF0ZW1lbnRzIGV4ZXB0IGZvciBleGNlbXB0ZWQgbW9kdWxlcwogICAgICAgIGlmICggJExpbmUgPX4gbXsgXEEgXHMqIHVzZSBccysgfXhtcyAmJiAkTGluZSAhfiBteyRBbGxvd2VkRXh0ZXJuYWxNb2R1bGVzUmVnZXh9eG1zICkgewogICAgICAgICAgICAkRGVsZXRhYmxlU3RhdGVtZW50ID0gMTsKICAgICAgICB9CgogICAgICAgIGlmICgkRGVsZXRhYmxlU3RhdGVtZW50KSB7CiAgICAgICAgICAgICRMaW5lID0gIiMkTGluZSI7CiAgICAgICAgfQoKICAgICAgICAjIExvb2sgZm9yIHRoZSBlbmQgb2YgdGhlIHRoZSAndXNlJyBzdGF0ZW1lbnQuCiAgICAgICAgIyBUaGUgc3RhdGVtZW50IHRlcm1pbmF0b3IgbWF5IGJlIGZvbGxvd2VkIGJ5IGFuIGVuZCBvZiBsaW5lIGNvbW1lbnQuCiAgICAgICAgIyBBbGwgYXNzdW1pbmcgdGhhdCB0aGUgJzsnIGlzIG5vdCBwYXJ0IG9mIGFuIGl0ZW0gaW4gdGhlIGltcG9ydCBsaXN0LgogICAgICAgIGlmICggJExpbmUgPX4gbXsgOyBccyogKD86IFwjIC4qKT8gXHogfXhtcyApIHsKICAgICAgICAgICAgJERlbGV0YWJsZVN0YXRlbWVudCA9IDA7CiAgICAgICAgfQoKICAgICAgICAkQ2xlYW5lZFNvdXJjZSAuPSAkTGluZSAuICJcbiI7CiAgICB9CgogICAgbXkgJFRlbXBGaWxlID0gRmlsZTo6VGVtcC0+bmV3OwogICAgcHJpbnQgJFRlbXBGaWxlICRDbGVhbmVkU291cmNlOwogICAgJFRlbXBGaWxlLT5mbHVzaDsKCiAgICAjIHN5bnRheCBjaGVjawogICAgbXkgJEVycm9yTWVzc2FnZTsKICAgIG15ICRGaWxlSGFuZGxlOwogICAgaWYgKCAhb3BlbiAkRmlsZUhhbmRsZSwgJy18JywgInBlcmwgLWN3ICIgLiAkVGVtcEZpbGUtPmZpbGVuYW1lKCkgLiAiIDI+JjEiICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCJGSUxURVI6IENhbid0IG9wZW4gdGVtcGZpbGU6ICQhXG4iKTsKICAgIH0KCiAgICB3aGlsZSAoIG15ICRMaW5lID0gPCRGaWxlSGFuZGxlPiApIHsKICAgICAgICBpZiAoICRMaW5lICF+IC8oc3ludGF4IE9LfHVzZWQgb25seSBvbmNlOiBwb3NzaWJsZSB0eXBvKS8gKSB7CiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gJExpbmU7CiAgICAgICAgfQogICAgfQogICAgY2xvc2UgJEZpbGVIYW5kbGU7CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiJEVycm9yTWVzc2FnZSIpOwogICAgfQp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/Tests/Helper.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlRlc3RzOjpIZWxwZXI7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgIG15ICVNYXRjaFJlZ2V4ZXMgPSAoCiAgICAgICAgSGVscGVyT2JqZWN0UGFyYW1zICAgICAgICAgICAgICAgPT4gcXJ7LT5PYmplY3RQYXJhbUFkZFwoXHMqJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJ314bXMsCiAgICAgICAgSGVscGVyT2JqZWN0RmxhZ1Jlc3RvcmVEYXRhYmFzZSAgPT4gcXJ7UmVzdG9yZURhdGFiYXNlXHMqPT5ccyoxfXhtcywKICAgICAgICBIZWxwZXJPYmplY3RGbGFnUEdQRW52aXJvbm1lbnQgICA9PiBxcntQcm92aWRlVGVzdFBHUEVudmlyb25tZW50XHMqPT5ccyoxfXhtcywKICAgICAgICBIZWxwZXJPYmplY3RGbGFnU01JTUVFbnZpcm9ubWVudCA9PiBxcntQcm92aWRlVGVzdFNNSU1FRW52aXJvbm1lbnRccyo9PlxzKjF9eG1zLAogICAgICAgIEhlbHBlckluc3RhbnRpYXRpb24gICAgICAgICAgICAgID0+IHFyey0+R2V0XCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInfXhtcywKICAgICAgICBTZWxlbml1bUluc3RhbnRpYXRpb24gICAgICAgICAgICA9PiBxcnstPkdldFwoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nfXhtcywKICAgICAgICBQR1BJbnN0YW50aWF0aW9uICAgICAgICAgICAgICAgICA9PiBxcnstPkdldFwoJ0tlcm5lbDo6U3lzdGVtOjpDcnlwdDo6UEdQJ314bXMsCiAgICAgICAgU01JTUVJbnN0YW50aWF0aW9uICAgICAgICAgICAgICAgPT4gcXJ7LT5HZXRcKCdLZXJuZWw6OlN5c3RlbTo6Q3J5cHQ6OlNNSU1FJ314bXMsCiAgICApOwoKICAgIG15ICVNYXRjaFBvc2l0aW9uczsKCiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlTWF0Y2hSZWdleGVzICkgewogICAgICAgIGlmICggJENvZGUgPX4gJE1hdGNoUmVnZXhlc3skS2V5fSApIHsKCiAgICAgICAgICAgICMgU3RvcmUgdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBtYXRjaC4KICAgICAgICAgICAgJE1hdGNoUG9zaXRpb25zeyRLZXl9ID0gJC1bMF07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJE1hdGNoUG9zaXRpb25ze0hlbHBlckluc3RhbnRpYXRpb259OwoKICAgIGlmICggJE1hdGNoUG9zaXRpb25ze1NlbGVuaXVtSW5zdGFudGlhdGlvbn0gJiYgJE1hdGNoUG9zaXRpb25ze0hlbHBlck9iamVjdFBhcmFtc30gKSB7CiAgICAgICAgaWYgKCAkTWF0Y2hQb3NpdGlvbnN7U2VsZW5pdW1JbnN0YW50aWF0aW9ufSA8ICRNYXRjaFBvc2l0aW9uc3tIZWxwZXJPYmplY3RQYXJhbXN9ICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKUGxlYXNlIGFsd2F5cyBzZXQgdGhlIEhlbHBlciBvYmplY3QgcGFyYW1zIGJlZm9yZSBjcmVhdGluZyB0aGUgU2VsZW5pdW0gb2JqZWN0IHRvIG1ha2Ugc3VyZSBhbnkgY29uc3RydWN0b3IgZmxhZ3MgYXJlIHByb3Blcmx5IHNldCBhbmQgcHJvY2Vzc2VkLiBUaGlzIG5lZWRzIHRvIGJlIGRvbmUgYmVjYXVzZSBTZWxlbml1bTo6bmV3KCkgYWxyZWFkeSBtYXkgY3JlYXRlIHRoZSBIZWxwZXIuCkVPRgogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICRNYXRjaFBvc2l0aW9uc3tTZWxlbml1bUluc3RhbnRpYXRpb259ICYmICRNYXRjaFBvc2l0aW9uc3tIZWxwZXJPYmplY3RGbGFnUmVzdG9yZURhdGFiYXNlfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKRG9uJ3QgdXNlIHRoZSBIZWxwZXIgZmxhZyAnUmVzdG9yZURhdGFiYXNlJyBpbiAgU2VsZW5pdW0gdGVzdHMsIGFzIHRoZSB3ZWIgc2VydmVyIGNhbm5vdCBhY2Nlc3MgdGhlIHRlc3QgdHJhbnNhY3Rpb24uCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/Time.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlRpbWU7CiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlRpbWUpCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgIG15ICggJEVycm9yTWVzc2FnZSwgJENvdW50ZXIgKTsKCiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lICggc3BsaXQgL1xuLywgJENvZGUgKSB7CiAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgbmV4dCBMSU5FIGlmICRMaW5lID1+IG0vXlxzKlwjL3NteDsKCiAgICAgICAgaWYgKCAkTGluZSA9fiBteyBsb2NhbHRpbWUgfXNteCApIHsKICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiTGluZSAkQ291bnRlcjogJExpbmVcbiI7CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7ClBsZWFzZSB1c2UgdGhlIGZ1bmN0aW9ucyBvZiB0aGUgVGltZU9iamVjdCBpbnN0ZWFkIG9mICdsb2NhbHRpbWUnLgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/Translatable.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlRyYW5zbGF0YWJsZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmwpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgJENvZGUgPSAkU2VsZi0+U3RyaXBQb2QoIENvZGUgPT4gJENvZGUgKTsKICAgICRDb2RlID0gJFNlbGYtPlN0cmlwQ29tbWVudHMoIENvZGUgPT4gJENvZGUgKTsKCiAgICBpZiAoICRDb2RlID1+IG17VHJhbnNsYXRhYmxlXCh9eG1zICYmICRDb2RlICF+IG17XnVzZVxzK0tlcm5lbDo6TGFuZ3VhZ2VbXlxuXStUcmFuc2xhdGFibGV9eG1zICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpUaGUgY29kZSB1c2VzIEtlcm5lbDo6TGFuZ3VhZ2U6OlRyYW5zbGF0YWJsZSgpLCBidXQgZG9lcyBub3QgaW1wb3J0IGl0IHRvIHRoZSBjdXJyZW50IHBhY2thZ2UuIFBsZWFzZSBhZGQ6CnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/TranslationEncoding.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlRyYW5zbGF0aW9uRW5jb2Rpbmc7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgIGlmICggJENvZGUgIX4gbXteWyBcdF0qdXNlXHMrdXRmODt9bXggKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7CkFsbCBsYW5ndWFnZSBmaWxlcyBtdXN0IGJlIGVuY29kZWQgaW4gInV0Zi04IiwgYW5kIGluY2x1ZGUgdGhlICJ1c2UgdXRmODsiIFBlcmwgcHJhZ21hLgpFT0YKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/UnitTestConfigChanges.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlVuaXRUZXN0Q29uZmlnQ2hhbmdlczsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCnVzZSBGaWxlOjpCYXNlbmFtZTsKCiMgQ1BBTiBtb2R1bGVzCnVzZSBNb287CgojIE9UT0JPIG1vZHVsZXMKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgojIE1ha2Ugc3VyZSBTZWxlbml1bSB0ZXN0cyBvbmx5IG1vZGlmeSB0aGUgY29uZmlndXJhdGlvbiB2aWEgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgpLgoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgbXkgKCAkRXJyb3JNZXNzYWdlLCAkTGluZU5vICkgPSAoICcnLCAxICk7CgogICAgTElORToKICAgIGZvciBteSAkTGluZSAoIHNwbGl0IC9cbi8sICRDb2RlICkgewogICAgICAgIG5leHQgTElORSB1bmxlc3MgJExpbmUgPX4gbXsgLT4gKD86IFNldHRpbmdVcGRhdGUgfCBTZXR0aW5nUmVzZXQgKSB9c214OwoKICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRMaW5lTm86ICRMaW5lXG4iOwogICAgfQogICAgY29udGludWUgewogICAgICAgICRMaW5lTm8rKzsKICAgIH0KCiAgICByZXR1cm4gdW5sZXNzICRFcnJvck1lc3NhZ2U7CgogICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7ClNlbGVuaXVtIHRlc3RzIHNob3VsZCBtb2RpZnkgdGhlIHN5c3RlbSBjb25maWd1cmF0aW9uIGV4Y2x1c2l2ZWx5IHZpYQpcJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgpLiBOb3RlIHRoYXQgdGhpcyBtZXRob2QgZG9lcyBub3QgaGF2ZQp0aGUgc2FtZSBBUEkgYXMgXCRTeXNDb25maWdPYmplY3QtPlNldHRpbmdVcGRhdGUoKS4KJEVycm9yTWVzc2FnZQpFT0YKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/UseParent.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlVzZVBhcmVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmwpOwoKc3ViIHRyYW5zZm9ybV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgICRDb2RlID1+IHN7IF4gXHMqIFxLIHVzZSBccysgYmFzZSBcYiB9e3VzZSBwYXJlbnR9c214ZzsKCiAgICByZXR1cm4gJENvZGU7Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/UseWarnings.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlVzZVdhcm5pbmdzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybCk7CgojIFBlcmw6OkNyaXRpYyB3aWxsIG1ha2Ugc3VyZSB0aGF0IHVzZSBzdHJpY3QgaXMgZW5hYmxlZC4KIyBOb3cgd2UgY2hlY2sgdGhhdCB1c2Ugd2FybmluZ3MgaXMgYWxzby4Kc3ViIHRyYW5zZm9ybV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiAkQ29kZSBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgICMgQ2hlY2sgaWYgdXNlIHdhcm5pbmdzIGlzIHByZXNlbnQsIG90aGVyd2lzZSBhZGQgaXQKICAgIGlmICggJENvZGUgIX4gbXteWyBcdF0qdXNlXHMrd2FybmluZ3M7fW14ICkgewogICAgICAgICRDb2RlID1+IHN7XlsgXHRdKnVzZVxzK3N0cmljdDt9e3VzZSBzdHJpY3Q7XG51c2Ugd2FybmluZ3M7fW14OwogICAgfQoKICAgIHJldHVybiAkQ29kZTsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/perlcriticrc" Permission="660" Encode="Base64">IyBTVEVSTiwgcGVyIGRlZmF1bHQgb25seSAkU0VWRVJJVFlfSElHSEVTVCA9IDUgYW5kICRTRVZFUklUWV9ISUdIID0gNCBhcmUgY292ZXJlZC4KIyBQb2xpY2llcyB3aXRoIGEgbG93ZXIgc2V2ZXJpdHkgcG9saWNpZXMgY2FuIGJlIGV4cGxpY2l0bHkgYWRkZWQgYmVsb3cuCnNldmVyaXR5ID0gNAoKIyBUaGlzIGlzIGZvciB0aGUgY2FzZSB3aGVuIHRoZSBQZXJsOjpDb21tdW5pdHkgcG9saWNpZXMgYXJlIGluc3RhbGxlZAojIGFuZCBub3QgdGhlbWUgaXMgc3BlY2lmaWVkLiBNYW55IGNvbW11bml0eSBwb2xpY2llcyBoYXZlIGFuIGFsaWFzIG5hbWUKIyB3aXRoIEZyZWVub2RlIGluIHRoZSBuYW1lLiBUaGVzZSBwb2xpY2llcyB3b3VsZCBiZSBjaGVja2VkIHR3aWNlLgpleGNsdWRlID0gRnJlZW5vZGUKCiMgdGVzdCBzY3JpcHRzIGFyZSBzY3JpcHRzCnByb2dyYW0tZXh0ZW5zaW9ucyA9IC5wbCAudAoKIyBGb3JtYXQgdGhlIHZpb2xhdGlvbnMsIGluZGljYXRpbmcgdGhlIHBvbGljeSBuYW1lLCBicmllZiBkZXNjcmlwdGlvbiBhbmQgZXhwbGFuYXRpb24uCiMgU2VlIGh0dHBzOi8vbWV0YWNwYW4ub3JnL3BvZC9QZXIgbDo6Q3JpdGljOjpWaW9sYXRpb24jT1ZFUkxPQURTIGZvciB0aGUgZXNjYXBlIGNoYXJhY3RlcnMuCiMgSW4gdmltIG1vdmUgdGhlIGN1cnNvciB0byB0aGUgZmlsZSBuYW1lIGFuZCB0eXBlIDxjLXc+RiBmb3Igb3BlbmluZyB0aGUgZmlsZSBhdCB0aGUgcmVsZXZhbnQgbGluZQojIGluIGEgbmV3IGhvcml6b250YWwgc3BsaXQgd2luZG93Lgp2ZXJib3NlID0gJXAgdmlvbGF0ZWQgYXQgJWYgJWwgY29sdW1uICVjIChTZXZlcml0eTogJXMpXG4gICVtXG4lZVxuCgojIHVzZWZ1bCBmb3IgYmF0Y2ggZWRpdGluZzoKI3ZlcmJvc2UgPSBzcCArJWwgJWZcbiBubyBjcml0aWMgcXcoJXApCgojIGluY2x1ZGluZyB0aGUgc291cmNlIGNvZGUgJXIgdGhhdCBjYXVzZXMgdGhlIHZpb2xhdGlvbjoKI3ZlcmJvc2UgPSAlcCB2aW9sYXRlZCBhdCBsaW5lICVsIGNvbHVtbiAlYyAoU2V2ZXJpdHk6ICVzKVxuICAlbVxuJXJcbgoKIyBUaGUgT1RPQk8gc3BlY2lmaWMgcG9saWNpZXMgZG9uJ3QgaGF2ZSB0byBiZSBhZGRlZCBleHBsaWNpdHksCgojIFJhaXNlIHRoZSBzZXZlcml0eSBvZiBzb21lIHBvbGljaWVzCiMgdGhhdCB3b3VsZCBub3QgYmUgaW5jbHVkZWQgYmVjYXVzZSB0aGVpciBkZWZhdWx0IHNldmVyaXR5IGlzIGJlbG93IDQuCltDbGFzc0hpZXJhcmNoaWVzOjpQcm9oaWJpdEV4cGxpY2l0SVNBXQpzZXZlcml0eSA9IDQKCltDb250cm9sU3RydWN0dXJlczo6UHJvaGliaXRVbmxlc3NCbG9ja3NdCnNldmVyaXR5ID0gNAoKW01pc2NlbGxhbmVhOjpQcm9oaWJpdFVzZWxlc3NOb0NyaXRpY10Kc2V2ZXJpdHkgPSA0CgpbTWlzY2VsbGFuZWE6OlByb2hpYml0VW5yZXN0cmljdGVkTm9Dcml0aWNdCnNldmVyaXR5ID0gNAoKI1tNb2R1bGVzOjpQcm9oaWJpdENvbmRpdGlvbmFsVXNlU3RhdGVtZW50c10KI3NldmVyaXR5ID0gNAoKI1tTdWJyb3V0aW5lczo6UHJvaGliaXRBbXBlcnNhbmRTaWdpbHNdCiNzZXZlcml0eSA9IDQKCiNbVmFsdWVzQW5kRXhwcmVzc2lvbnM6OlByb2hpYml0U3BlY2lhbExpdGVyYWxIZXJlZG9jVGVybWluYXRvcl0KI3NldmVyaXR5ID0gNAoKW1ZhcmlhYmxlczo6UHJvaGliaXRVbnVzZWRWYXJpYWJsZXNdCnNldmVyaXR5ID0gNAoKI1tWYXJpYWJsZXM6OlJlcXVpcmVJbml0aWFsaXphdGlvbkZvckxvY2FsVmFyc10KI3NldmVyaXR5ID0gNAoKIyBTcGVjaWZpYyBzZXR0aW5ncyBmb3Igc29tZSBwb2xpY2llcy4KCiMgYmUgYSBiaXQgbW9yZSByZWxheGVkIGFib3V0IGJyaWVmIG9wZW5zIGFuZCBhbGxvdyBtb3JlIHRoYXQgdGhlIGRlZmF1bHQgOSBsaW5lcwpbSW5wdXRPdXRwdXQ6OlJlcXVpcmVCcmllZk9wZW5dCmxpbmVzID0gMjAKCiMgdHVybiBvZmYgc29tZSBtb2R1bGVzCgojIGJlY2F1c2UgdGhpcyBpcyBjb3ZlcmVkIGJ5IE1vZHVsZXM6OlByb2hpYml0RXZpbE1vZHVsZXMKWy1Db21tdW5pdHk6OkRpc2NvdXJhZ2VkTW9kdWxlc10KCiMgVGhpcyBzZXR1cCBkb2VzIG5vdCB3b3JrIGFzCiMgICAgcmV0dXJuIDEgdW5sZXNzICRDb250ZW50ID1+IG17PG90cnNfY29uZmlnLio/dmVyc2lvbj0iMi4wIn07CiMgd2lsbCBzdGlsbCBiZSB0cmlnZ2VyZWQuCiMgU28gbGVhdmUgdGhpcyBwb2xpY3kgZGlzYWJsZWQuCiNbQ29udHJvbFN0cnVjdHVyZXM6OlByb2hpYml0UG9zdGZpeENvbnRyb2xzXQojU2V2ZXJpdHkgPSA0CiNBbGxvdyA9IGlmIGZvciB1bnRpbCB3aGVuIHdoaWxlCiNGbG93Y29udHJvbCA9IHdhcm4gZGllIGNhcnAgY3JvYWsgY2x1Y2sgY29uZmVzcyBnb3RvIGV4aXQgcmV0dXJuCg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Perl/perltidyrc" Permission="660" Encode="Base64">LWw9MTYwICAgICAgICAgICAgICAgICAgICAgICAgICAjIGxpbmUgbGVuZ3RoCi12bWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSBtYXhpbXVtIGxpbmUgbGVuZ3RoCi1pPTQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbmRlbnRhdGlvbiB3aWR0aAotY2k9NCAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY29udGludW91cyBpbmRlbnRhdGlvbiB3aWR0aAoteGNpICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZXh0ZW5kZWQgY29udGludW91cyBpbmRlbnRhdGlvbgotdnQ9MCAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdmVydGljYWwgdGlnaHRuZXNzCi12dGM9MCAgICAgICAgICAgICAgICAgICAgICAgICAgIyB2ZXJ0aWNhbCB0aWdodG5lc3MgY2xvc2luZwotY3RpPTAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY2xvc2luZyB0b2tlbiBpbmRlbnRhdGlvbgotcHQ9MSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcGFyZW4gdGlnaHRuZXNzCi1idD0xICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBicmFjZSB0aWdodG5lc3MKLXNidD0xICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNxdWFyZSBicmFja2V0cyB0aWdodG5lc3MKLWJidD0xICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJsb2NrIGJyYWNlIHRpZ2h0bmVzcwotbnNmcyAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gc3BhY2UgZm9yIHNlbWljb2xvbgotbm9scSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gb3V0ZGVudCBsb25nIHF1b3RlcwotYmJhbyAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYnJlYWsgYmVmb3JlIGFsbCBvcGVyYXRvcnMKLW5vbGEgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vIG91dGRlbnQgbGFiZWxzCi1uZG5sICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBubyBkZWxldGUgb2xkIG5ld2xpbmVzCi1jYWI9MCAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjb21tYSBhcnJvdyBicmVha3BvaW50cwotc2JjcD0iXiMgKFJvdGhlciBPU1N8RU8pIiAgICAgICMgdHJlYXQgcGF0dGVybnMgIiMgUm90aGVyIE9TUyIgYW5kICIjIEVPIiAocGFja2FnZSBtYXJrZXJzKSBhcyBzdGF0aWMgYmxvY2sgY29tbWVudHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgc2VlIHNlY3Rpb24gJ1N0YXRpYyBCbG9jayBDb21tZW50cycgaW4gcGVybHRpZHkgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvCi0tY2hhcmFjdGVyLWVuY29kaW5nPW5vbmUK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/PO/DocbookLint.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBPOjpEb2Nib29rTGludDsKCiMKIyBQZXJmb3JtIHNvbWUgcXVhbGl0eSBjaGVja3Mgb24gcG8gZmlsZXMuCiMKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkJhc2UpOwoKdXNlIExvY2FsZTo6UE8gICgpOwp1c2UgWE1MOjpQYXJzZXIgKCk7CgpzdWIgdmFsaWRhdGVfZmlsZSB7CiAgICBteSAoICRTZWxmLCAkRmlsZW5hbWUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggRmlsZW5hbWUgPT4gJEZpbGVuYW1lICk7CgogICAgbXkgJElzRG9jYm9va1RyYW5zbGF0aW9uID0gJEZpbGVuYW1lID1+IG17L2RvYy19c214OwogICAgbXkgJFN0cmluZ3MgICAgICAgICAgICAgID0gTG9jYWxlOjpQTy0+bG9hZF9maWxlX2FzYXJyYXkoJEZpbGVuYW1lKTsKCiAgICBteSAkRXJyb3JNZXNzYWdlOwoKICAgIFNUUklORzoKICAgIGZvciBteSAkU3RyaW5nICggQHsgJFN0cmluZ3MgLy8gW10gfSApIHsKCiAgICAgICAgbmV4dCBTVFJJTkcgaWYgJFN0cmluZy0+ZnV6enkoKTsKCiAgICAgICAgbXkgJFNvdXJjZSA9ICRTdHJpbmctPmRlcXVvdGUoICRTdHJpbmctPm1zZ2lkKCkgKTsKICAgICAgICBuZXh0IFNUUklORyBpZiAhJFNvdXJjZTsKICAgICAgICBteSAkVHJhbnNsYXRpb24gPSAkU3RyaW5nLT5kZXF1b3RlKCAkU3RyaW5nLT5tc2dzdHIoKSApOwogICAgICAgIG5leHQgU1RSSU5HIGlmICEkVHJhbnNsYXRpb247CgogICAgICAgIGlmICgkSXNEb2Nib29rVHJhbnNsYXRpb24pIHsKCiAgICAgICAgICAgICMgIyBEb24ndCB2YWxpZGF0ZSBjb250ZW50cyBvZiA8c2NyZWVuPiB0YWdzLCB0aGV5IHNob3VsZCBoYXZlIENEQVRBCiAgICAgICAgICAgICNuZXh0IFNUUklORyBpZiAkU3RyaW5nLT5hdXRvbWF0aWMoKSAmJiAkU3RyaW5nLT5hdXRvbWF0aWMgPX4gbXs8c2NyZWVuPiR9c214OwogICAgICAgICAgICBuZXh0IFNUUklORyBpZiAkU3RyaW5nLT5hdXRvbWF0aWMoKSAmJiAkU3RyaW5nLT5hdXRvbWF0aWMoKSA9fiBte0NEQVRBJH1zbXg7CgogICAgICAgICAgICAjIE9ic29sZXRlIHN0cmluZ3MgbWlnaHQgbG9vc2UgQ0RBVEEgY29tbWVudHMKICAgICAgICAgICAgbmV4dCBTVFJJTkcgaWYgJFN0cmluZy0+b2Jzb2xldGUoKTsKCiAgICAgICAgICAgIG15ICRQYXJzZXIgPSBYTUw6OlBhcnNlci0+bmV3KCk7CiAgICAgICAgICAgIGlmICggIWV2YWwgeyAkUGFyc2VyLT5wYXJzZSgiPGJvb2s+JFRyYW5zbGF0aW9uPC9ib29rPiIpIH0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJJbnZhbGlkIFhNTCB0cmFuc2xhdGlvbiBmb3VuZCBpbiBMaW5lOiAiCiAgICAgICAgICAgICAgICAgICAgLiAkU3RyaW5nLT5sb2FkZWRfbGluZV9udW1iZXIoKSAuICJcbiI7CiAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICIgIFNvdXJjZTogJFNvdXJjZVxuIjsKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIiAgVHJhbnNsYXRpb246ICRUcmFuc2xhdGlvblxuIjsKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIiAgWE1MOjpQYXJzZXIgcHJvZHVjZWQgZXJyb3JzOiAkQFxuIjsKICAgICAgICAgICAgICAgIG5leHQgU1RSSU5HOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkU3RyaXBwZWRTb3VyY2UgPSAkU291cmNlOwogICAgICAgICAgICAkU3RyaXBwZWRTb3VyY2UgPX4gc3s8IS0tLiotLT59e31zbXhnOwoKICAgICAgICAgICAgbXkgQFNvdXJjZVRhZ3MgPSAkU3RyaXBwZWRTb3VyY2UgPX4gbXs8W14+XSo+fXNtZzsKICAgICAgICAgICAgbmV4dCBTVFJJTkcgaWYgIUBTb3VyY2VUYWdzOwogICAgICAgICAgICBteSAlU291cmNlVGFnQ291bnQ7CiAgICAgICAgICAgIEBTb3VyY2VUYWdzID0gbWFwIHsgJF8gPX4gc3tePChbL2EtekEtWl8wLTldKykuKn17JDF9ZXNteGc7ICRfIH0gQFNvdXJjZVRhZ3M7ICAgICMjIG5vIGNyaXRpYyBxdyhDb250cm9sU3RydWN0dXJlczo6UHJvaGliaXRNdXRhdGluZ0xpc3RGdW5jdGlvbnMpCgogICAgICAgICAgICAjIFNvbWUgdGFncyB3aGljaCBkbyBub3QgaGF2ZSB0byBiZSB2YWxpZGF0ZWQgYXMgbG9uZyBhcyB0aGUgeG1sIHN0cnVjdHVyZSBpcyBzdGlsbCB2YWxpZC4KICAgICAgICAgICAgbXkgJUlnbm9yZVRhZ3MgPSAoCiAgICAgICAgICAgICAgICAnZW1waGFzaXMnICAgPT4gMSwKICAgICAgICAgICAgICAgICcvZW1waGFzaXMnICA9PiAxLAogICAgICAgICAgICAgICAgJ2NpdGV0aXRsZScgID0+IDEsCiAgICAgICAgICAgICAgICAnL2NpdGV0aXRsZScgPT4gMSwKICAgICAgICAgICAgICAgICd1bGluaycgICAgICA9PiAxLAogICAgICAgICAgICAgICAgJy91bGluaycgICAgID0+IDEsCiAgICAgICAgICAgICAgICAnbGluaycgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICcvbGluaycgICAgICA9PiAxLAogICAgICAgICAgICAgICAgJ2ZpbGVuYW1lJyAgID0+IDEsCiAgICAgICAgICAgICAgICAnL2ZpbGVuYW1lJyAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIFNPVVJDRV9UQUc6CiAgICAgICAgICAgIGZvciBteSAkU291cmNlVGFnIChAU291cmNlVGFncykgewogICAgICAgICAgICAgICAgbmV4dCBTT1VSQ0VfVEFHIGlmICRJZ25vcmVUYWdzeyRTb3VyY2VUYWd9OwogICAgICAgICAgICAgICAgJFNvdXJjZVRhZ0NvdW50eyRTb3VyY2VUYWd9Kys7CgogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3IgbXkgJFNvdXJjZVRhZyAoIHNvcnQga2V5cyAlU291cmNlVGFnQ291bnQgKSB7CiAgICAgICAgICAgICAgICBteSBAVHJhbnNsYXRlZFRhZ3MgICAgID0gJFRyYW5zbGF0aW9uID1+IG17PCRTb3VyY2VUYWdbPnwgXX1zbWc7CiAgICAgICAgICAgICAgICBteSAkVHJhbnNsYXRlZFRhZ0NvdW50ID0gc2NhbGFyIEBUcmFuc2xhdGVkVGFnczsKICAgICAgICAgICAgICAgIGlmICggJFRyYW5zbGF0ZWRUYWdDb3VudCAhPSAkU291cmNlVGFnQ291bnR7JFNvdXJjZVRhZ30gKSB7CiAgICAgICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiSW52YWxpZCBYTUwgdHJhbnNsYXRpb24gZm91bmQgaW4gTGluZTogIgogICAgICAgICAgICAgICAgICAgICAgICAuICRTdHJpbmctPmxvYWRlZF9saW5lX251bWJlcigpIC4gIlxuIjsKICAgICAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICIgIFNvdXJjZTogJFNvdXJjZVxuIjsKICAgICAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICIgIFRyYW5zbGF0aW9uOiAkVHJhbnNsYXRpb25cbiI7CiAgICAgICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZQogICAgICAgICAgICAgICAgICAgICAgICAuPSAiICBUYWcgPCRTb3VyY2VUYWc+IHdhcyBleHBlY3RlZCAkU291cmNlVGFnQ291bnR7JFNvdXJjZVRhZ30gYnV0IGZvdW5kICRUcmFuc2xhdGVkVGFnQ291bnQgdGltZXMuXG4iOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFNvdXJjZSBhbmQgdHJhbnNsYXRpb24gc2hvdWxkIGhhdmUgdGhlIHNhbWUgbGlua2VuZCBkZWZpbml0aW9ucy4KICAgICAgICAgICAgbXkgQFNvdXJjZUxpbmtFbmRzID0gJFNvdXJjZSAgICAgID1+IG17PGxpbmtbXj5dK2xpbmtlbmQ9WyInXShbXiciXSspWyciXX1zbXhnOwogICAgICAgICAgICBteSBAVGFyZ2V0TGlua0VuZHMgPSAkVHJhbnNsYXRpb24gPX4gbXs8bGlua1tePl0rbGlua2VuZD1bIiddKFteJyJdKylbJyJdfXNteGc7CgogICAgICAgICAgICBteSAkTGlua0VuZHNBcmVEaWZmZXJlbnQgPSAkU2VsZi0+X0RhdGFEaWZmKAogICAgICAgICAgICAgICAgRGF0YTEgPT4gWyBzb3J0IHsgJGEgY21wICRiIH0gQFNvdXJjZUxpbmtFbmRzIF0sCiAgICAgICAgICAgICAgICBEYXRhMiA9PiBbIHNvcnQgeyAkYSBjbXAgJGIgfSBAVGFyZ2V0TGlua0VuZHMgXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkTGlua0VuZHNBcmVEaWZmZXJlbnQpIHsKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkxpbmtlbmQgZGVmaW5pdGlvbnMgYXJlIGRpZmZlcmVudC5cblNvdXJjZTpcbiRTb3VyY2VcblRyYW5zbGF0aW9uOlxuJFRyYW5zbGF0aW9uXG5cbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiJEVycm9yTWVzc2FnZSIpOwogICAgfQp9CgpzdWIgX0RhdGFEaWZmIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIChxdyhEYXRhMSBEYXRhMikpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskX30gKSB7CiAgICAgICAgICAgIHByaW50IFNUREVSUiAiTmVlZCAkXyFcbiI7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyAnJwogICAgaWYgKCByZWYgJFBhcmFte0RhdGExfSBlcSAnJyAmJiByZWYgJFBhcmFte0RhdGEyfSBlcSAnJyApIHsKCiAgICAgICAgIyBkbyBub3RoaW5nLCBpdCdzIG9rCiAgICAgICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtEYXRhMX0gJiYgIWRlZmluZWQgJFBhcmFte0RhdGEyfTsKCiAgICAgICAgIyByZXR1cm4gZGlmZiwgYmVjYXVzZSBpdHMgZGlmZmVyZW50CiAgICAgICAgcmV0dXJuIDEgaWYgIWRlZmluZWQgJFBhcmFte0RhdGExfSB8fCAhZGVmaW5lZCAkUGFyYW17RGF0YTJ9OwoKICAgICAgICAjIHJldHVybiBkaWZmLCBiZWNhdXNlIGl0cyBkaWZmZXJlbnQKICAgICAgICByZXR1cm4gMSBpZiAkUGFyYW17RGF0YTF9IG5lICRQYXJhbXtEYXRhMn07CgogICAgICAgICMgcmV0dXJuLCBiZWNhdXNlIGl0cyBub3QgZGlmZmVyZW50CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgU0NBTEFSCiAgICBpZiAoIHJlZiAkUGFyYW17RGF0YTF9IGVxICdTQ0FMQVInICYmIHJlZiAkUGFyYW17RGF0YTJ9IGVxICdTQ0FMQVInICkgewoKICAgICAgICAjIGRvIG5vdGhpbmcsIGl0J3Mgb2sKICAgICAgICByZXR1cm4gaWYgIWRlZmluZWQgJHsgJFBhcmFte0RhdGExfSB9ICYmICFkZWZpbmVkICR7ICRQYXJhbXtEYXRhMn0gfTsKCiAgICAgICAgIyByZXR1cm4gZGlmZiwgYmVjYXVzZSBpdHMgZGlmZmVyZW50CiAgICAgICAgcmV0dXJuIDEgaWYgIWRlZmluZWQgJHsgJFBhcmFte0RhdGExfSB9IHx8ICFkZWZpbmVkICR7ICRQYXJhbXtEYXRhMn0gfTsKCiAgICAgICAgIyByZXR1cm4gZGlmZiwgYmVjYXVzZSBpdHMgZGlmZmVyZW50CiAgICAgICAgcmV0dXJuIDEgaWYgJHsgJFBhcmFte0RhdGExfSB9IG5lICR7ICRQYXJhbXtEYXRhMn0gfTsKCiAgICAgICAgIyByZXR1cm4sIGJlY2F1c2UgaXRzIG5vdCBkaWZmZXJlbnQKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBBUlJBWQogICAgaWYgKCByZWYgJFBhcmFte0RhdGExfSBlcSAnQVJSQVknICYmIHJlZiAkUGFyYW17RGF0YTJ9IGVxICdBUlJBWScgKSB7CiAgICAgICAgbXkgQEEgPSBAeyAkUGFyYW17RGF0YTF9IH07CiAgICAgICAgbXkgQEIgPSBAeyAkUGFyYW17RGF0YTJ9IH07CgogICAgICAgICMgY2hlY2sgaWYgdGhlIGNvdW50IGlzIGRpZmZlcmVudAogICAgICAgIHJldHVybiAxIGlmICQjQSBuZSAkI0I7CgogICAgICAgICMgY29tcGFyZSBhcnJheQogICAgICAgIENPVU5UOgogICAgICAgIGZvciBteSAkQ291bnQgKCAwIC4uICQjQSApIHsKCiAgICAgICAgICAgICMgZG8gbm90aGluZywgaXQncyBvawogICAgICAgICAgICBuZXh0IENPVU5UIGlmICFkZWZpbmVkICRBWyRDb3VudF0gJiYgIWRlZmluZWQgJEJbJENvdW50XTsKCiAgICAgICAgICAgICMgcmV0dXJuIGRpZmYsIGJlY2F1c2UgaXRzIGRpZmZlcmVudAogICAgICAgICAgICByZXR1cm4gMSBpZiAhZGVmaW5lZCAkQVskQ291bnRdIHx8ICFkZWZpbmVkICRCWyRDb3VudF07CgogICAgICAgICAgICBpZiAoICRBWyRDb3VudF0gbmUgJEJbJENvdW50XSApIHsKICAgICAgICAgICAgICAgIGlmICggcmVmICRBWyRDb3VudF0gZXEgJ0FSUkFZJyB8fCByZWYgJEFbJENvdW50XSBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEgaWYgJFNlbGYtPl9EYXRhRGlmZigKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YTEgPT4gJEFbJENvdW50XSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YTIgPT4gJEJbJENvdW50XQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT1VOVDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIEhBU0gKICAgIGlmICggcmVmICRQYXJhbXtEYXRhMX0gZXEgJ0hBU0gnICYmIHJlZiAkUGFyYW17RGF0YTJ9IGVxICdIQVNIJyApIHsKICAgICAgICBteSAlQSA9ICV7ICRQYXJhbXtEYXRhMX0gfTsKICAgICAgICBteSAlQiA9ICV7ICRQYXJhbXtEYXRhMn0gfTsKCiAgICAgICAgIyBjb21wYXJlICVBIHdpdGggJUIgYW5kIHJlbW92ZSBpdCBpZiBjaGVja2VkCiAgICAgICAgS0VZOgogICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVBICkgewoKICAgICAgICAgICAgIyBDaGVjayBpZiBib3RoIGFyZSB1bmRlZmluZWQKICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkQXskS2V5fSAmJiAhZGVmaW5lZCAkQnskS2V5fSApIHsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkQXskS2V5fTsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkQnskS2V5fTsKICAgICAgICAgICAgICAgIG5leHQgS0VZOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJldHVybiBkaWZmLCBiZWNhdXNlIGl0cyBkaWZmZXJlbnQKICAgICAgICAgICAgcmV0dXJuIDEgaWYgIWRlZmluZWQgJEF7JEtleX0gfHwgIWRlZmluZWQgJEJ7JEtleX07CgogICAgICAgICAgICBpZiAoICRBeyRLZXl9IGVxICRCeyRLZXl9ICkgewogICAgICAgICAgICAgICAgZGVsZXRlICRBeyRLZXl9OwogICAgICAgICAgICAgICAgZGVsZXRlICRCeyRLZXl9OwogICAgICAgICAgICAgICAgbmV4dCBLRVk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmV0dXJuIGlmIHZhbHVlcyBhcmUgZGlmZmVyZW50CiAgICAgICAgICAgIGlmICggcmVmICRBeyRLZXl9IGVxICdBUlJBWScgfHwgcmVmICRBeyRLZXl9IGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiAxIGlmICRTZWxmLT5fRGF0YURpZmYoCiAgICAgICAgICAgICAgICAgICAgRGF0YTEgPT4gJEF7JEtleX0sCiAgICAgICAgICAgICAgICAgICAgRGF0YTIgPT4gJEJ7JEtleX0KICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBkZWxldGUgJEF7JEtleX07CiAgICAgICAgICAgICAgICBkZWxldGUgJEJ7JEtleX07CiAgICAgICAgICAgICAgICBuZXh0IEtFWTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgcmVzdAogICAgICAgIHJldHVybiAxIGlmICVCOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoIHJlZiAkUGFyYW17RGF0YTF9IGVxICdSRUYnICYmIHJlZiAkUGFyYW17RGF0YTJ9IGVxICdSRUYnICkgewogICAgICAgIHJldHVybiAxIGlmICRTZWxmLT5fRGF0YURpZmYoCiAgICAgICAgICAgIERhdGExID0+ICR7ICRQYXJhbXtEYXRhMX0gfSwKICAgICAgICAgICAgRGF0YTIgPT4gJHsgJFBhcmFte0RhdGEyfSB9CiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/PO/HTMLTags.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBPOjpIVE1MVGFnczsKCiMKIyBGaWx0ZXIgZm9yYmlkZGVuIEhUTUwgdGFncyBpbiBGcmFtZXdvcmsvUGFja2FnZSB0cmFuc2xhdGlvbiBmaWxlcy4KIwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6QmFzZSk7Cgp1c2UgTG9jYWxlOjpQTyAoKTsKCnN1YiB2YWxpZGF0ZV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlbmFtZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBGaWxlbmFtZSA9PiAkRmlsZW5hbWUgKTsKCiAgICBteSAkSXNEb2Nib29rVHJhbnNsYXRpb24gPSAkRmlsZW5hbWUgPX4gbXsvZG9jLX1zbXg7CiAgICByZXR1cm4gaWYgJElzRG9jYm9va1RyYW5zbGF0aW9uOwoKICAgIG15IEBGb3JiaWRkZW5UYWdzID0gKAoKICAgICAgICAjIERhbmdlcm91cyB0YWdzIHRoYXQgY291bGQgYmUgdXNlZCB3aXRob3V0IGF0dHJpYnV0ZXMuCiAgICAgICAgcXIoXjxzY3JpcHQpaXhtcywKICAgICAgICBxcihePHN0eWxlKWl4bXMsCiAgICAgICAgcXIoXjxhcHBsZXQpaXhtcywKICAgICAgICBxcihePG9iamVjdClpeG1zLAogICAgICAgIHFyKF48c3ZnKWl4bXMsCiAgICAgICAgcXIoXjxlbWJlZClpeG1zLAogICAgICAgIHFyKF48bWV0YSlpeG1zLAogICAgICAgIHFyKF48aW1nKWl4bXMsCiAgICAgICAgcXIoXjx2aWRlbylpeG1zLAoKICAgICAgICAjIEFueSBIVE1MIHRhZyB3aXRoIGFkZGl0aW9uYWwgYXR0cmlidXRlcy4KICAgICAgICBxcihePFtePiBdK1sgXStbXj5dKz0paXhtcywKICAgICk7CgogICAgbXkgJFN0cmluZ3MgPSBMb2NhbGU6OlBPLT5sb2FkX2ZpbGVfYXNhcnJheSgkRmlsZW5hbWUpOwoKICAgIG15ICRFcnJvck1lc3NhZ2U7CgogICAgU1RSSU5HOgogICAgZm9yIG15ICRTdHJpbmcgKCBAeyAkU3RyaW5ncyAvLyBbXSB9ICkgewogICAgICAgIG5leHQgU1RSSU5HIGlmICRTdHJpbmctPmZ1enp5KCk7CgogICAgICAgIG15ICRTb3VyY2UgPSAkU3RyaW5nLT5kZXF1b3RlKCAkU3RyaW5nLT5tc2dpZCgpICkgLy8gJyc7CiAgICAgICAgbmV4dCBTVFJJTkcgaWYgISRTb3VyY2U7CgogICAgICAgIG15ICRUcmFuc2xhdGlvbiA9ICRTdHJpbmctPmRlcXVvdGUoICRTdHJpbmctPm1zZ3N0cigpICkgLy8gJyc7CgogICAgICAgIG15IEBJbnZhbGlkVGFnczsKCiAgICAgICAgZm9yIG15ICRQYXJ0ICggJFNvdXJjZSwgJFRyYW5zbGF0aW9uICkgewogICAgICAgICAgICBteSBAVGFncyA9ICRQYXJ0ID1+IG17PFtePl0qPn1zbWc7CgogICAgICAgICAgICBUQUc6CiAgICAgICAgICAgIGZvciBteSAkVGFnIChAVGFncykgewogICAgICAgICAgICAgICAgZm9yIG15ICRGb3JiaWRkZW5UYWcgKEBGb3JiaWRkZW5UYWdzKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBASW52YWxpZFRhZ3MsICRUYWcgaWYgJFRhZyA9fiAkRm9yYmlkZGVuVGFnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBuZXh0IFNUUklORyBpZiAhQEludmFsaWRUYWdzOwoKICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJJbnZhbGlkIEhUTUwgdGFncyBmb3VuZCBpbiBsaW5lOiAiIC4gJFN0cmluZy0+bG9hZGVkX2xpbmVfbnVtYmVyKCkgLiAiXG4iOwogICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIiAgU291cmNlOiAkU291cmNlXG4iOwogICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIiAgVHJhbnNsYXRpb246ICRUcmFuc2xhdGlvblxuIjsKICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICIgIEludmFsaWQgdGFnczogQEludmFsaWRUYWdzIjsKICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCIkRXJyb3JNZXNzYWdlIik7CiAgICB9Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/PO/msgfmt.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBPOjptc2dmbXQ7CgojCiMgVXNlIG1zZ2ZtdCB0byBjaGVjayB0aGUgYmFzaWMgdmFsaWRpdHkgb2YgLnBvIGFuZCAucG90IGZpbGVzLgojCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpCYXNlKTsKCnN1YiBfYnVpbGRfY21kIHsKICAgIHJldHVybiAnbXNnZm10IC1jIC1vIC9kZXYvbnVsbCc7Cn0KCnN1YiB2YWxpZGF0ZV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlbmFtZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBGaWxlbmFtZSA9PiAkRmlsZW5hbWUgKTsKCiAgICBteSAkQ29tbWFuZCA9IHNwcmludGYoICIlcyAlcyAlcyAyPiYxIiwgJFNlbGYtPmNtZCgpLCAkU2VsZi0+YXJndigpLCAkRmlsZW5hbWUgKTsKICAgIG15ICRPdXRwdXQgID0gYCRDb21tYW5kYDsKCiAgICAjIElmIGV4ZWN1dGlvbiBmYWlsZWQsIHdhcm4gYWJvdXQgaW5zdGFsbGluZyBwYWNrYWdlLgogICAgaWYgKCAke15DSElMRF9FUlJPUl9OQVRJVkV9ID09IC0xICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCInbXNnZm10JyB3YXMgbm90IGZvdW5kLCBwbGVhc2UgaW5zdGFsbCAnZ2V0dGV4dCcuXG4iKTsKICAgIH0KCiAgICBpZiAoICR7XkNISUxEX0VSUk9SX05BVElWRX0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIiRPdXRwdXRcbiIpOyAgICAjIG5vbi16ZXJvIGV4aXQgY29kZQogICAgfQp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/SOPM/CodeTags.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlNPUE06OkNvZGVUYWdzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6QmFzZSk7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICBteSAoIEBTZWxmVXNlZCwgQENEQVRBTWlzc2luZyApOwoKICAgICRDb2RlID1+IHN7CiAgICAgICAgKDxDb2RlW2EtekEtWl0rLio/PikgICAgIyBzdGFydCB0YWcKICAgICAgICAoLio/KSAgICAgICAgICAgICAgICAgICAjIGNvbnRlbnQKICAgICAgICA8L0NvZGVbYS16QS1aXSsuKj8+ICAgICAjIGVuZCB0YWcKICAgIH17CiAgICAgICAgbXkgJFN0YXJ0VGFnID0gJDE7CiAgICAgICAgbXkgJFRhZ0NvbnRlbnQgPSAkMjsKCiAgICAgICAgaWYgKCRUYWdDb250ZW50ID1+IG17XCRTZWxmfXNteCkgewogICAgICAgICAgICBwdXNoIEBTZWxmVXNlZCwgJFN0YXJ0VGFnOwogICAgICAgIH0KICAgICAgICBpZiAoJFRhZ0NvbnRlbnQgIX4gbXsgXEFccyo8IVxbQ0RBVEFcWyB9c214KSB7CiAgICAgICAgICAgIHB1c2ggQENEQVRBTWlzc2luZywgJFN0YXJ0VGFnOwogICAgICAgIH0KCiAgICB9c214Z2U7CgogICAgbXkgJEVycm9yTWVzc2FnZTsKCiAgICBpZiAoQFNlbGZVc2VkKSB7CiAgICAgICAgJEVycm9yTWVzc2FnZQogICAgICAgICAgICAuPSAiRG9uJ3QgdXNlIFwkU2VsZiBpbiA8Q29kZSo+IHRhZ3MuIFVzZSBcJEtlcm5lbDo6T00tPkdldCgpIGluc3RlYWQgdG8gYWNjZXNzIG9iamVjdHMuXG4iOwogICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIldyb25nIHRhZ3MgZm91bmQ6ICIgLiBqb2luKCAnLCAnLCBAU2VsZlVzZWQgKSAuICJcbiI7CiAgICB9CgogICAgaWYgKEBDREFUQU1pc3NpbmcpIHsKICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICI8Q29kZSo+IHRhZ3Mgc2hvdWxkIGFsd2F5cyBiZSB3cmFwcGVkIGluIENEQVRBIHNlY3Rpb25zLlxuIjsKICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJXcm9uZyB0YWdzIGZvdW5kOiAiIC4gam9pbiggJywgJywgQFNlbGZVc2VkICkgLiAiXG4iOwogICAgfQoKICAgICMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6Ok9iamVjdERlcGVuZGVuY2llcykKICAgIG15ICRFeGFtcGxlID0gPDwnRU9GJzsKSGVyZSBpcyBhIHZhbGlkIGV4YW1wbGUgdGFnOgogICAgPENvZGVJbnN0YWxsIFR5cGU9InBvc3QiPjwhW0NEQVRBWwogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ3Zhcjo6cGFja2FnZXNldHVwOjpNeVBhY2thZ2UnKS0+Q29kZUluc3RhbGwoKTsKICAgIF1dPjwvQ29kZUluc3RhbGw+CkVPRgoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIiRFcnJvck1lc3NhZ2VcbiRFeGFtcGxlIik7CiAgICB9Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/SOPM/FileList.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlNPUE06OkZpbGVMaXN0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6QmFzZSk7CgojIFRoaXMgbW9kdWxlIHZlcmlmaWVzOgojICAgLSB0aGF0IGFsbCBwYWNrYWdlZCBmaWxlcyBvZiBhbiBTT1BNIGFyZSBhdmFpbGFibGUsCiMgICAtIHRoYXQgdGhlIFNPUE0gZG9lcyBub3QgdHJ5IHRvIGNyZWF0ZSBuZXcgdG9wbGV2ZWwgZmlsZXMgb3IgZGlyZWN0b3JpZXMgaW4gL29wdC9vdG9ibywKIyAgIC0gdGhhdCBhbGwgZmlsZXMgaW4gYSB2YWxpZCB0b3BsZXZlbCBkaXJlY3RvcnkgYXJlIGFsc28gcGFja2FnZWQgKGV4Y2VwdCBmb3IgZG9jdW1lbnRhdGlvbikuCgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICBteSAoICRFcnJvck1lc3NhZ2VNaXNzaW5nRmlsZXMsICRFcnJvck1lc3NhZ2VVbnBhY2thZ2VkRmlsZXMsICRFcnJvck1lc3NhZ2VGb3JiaWRkZW5Ub3BsZXZlbCApOwoKICAgICMgU3RhcnRpbmcgd2l0aCBPVE9CTyAxMC4wIG9uLCBwYWNrYWdlcyBjYW5ub3QgY3JlYXRlIG5ldyB0b3BsZXZlbCBkaXJlY3Rvcmllcy9maWxlcwogICAgIyAgYmVjYXVzZSBvZiBzdHJpY3RlciBwZXJtaXNzaW9ucy4KICAgIG15ICRBbGxvd090aGVyVG9wbGV2ZWxFbnRyaWVzID0gMDsKCiAgICBteSBAU09QTUZpbGVMaXN0OwoKICAgICMgT25seSB2YWxpZGF0ZSBmaWxlcyBpbiBzdWJkaXJlY3RvcmllcyB0aGF0IGFyZSBhY3RpdmUgZm9yIGNoZWNraW5nIGJ5CiAgICAjICAgZGVmYXVsdCBvciBhY3R1YWxseSBhcHBlYXIgb24gdGhlIGxpc3Qgb2YgcGFja2FnZWQgZmlsZXMuCiAgICBteSAlVG9wbGV2ZWxEaXJlY3RvcmllcyA9ICgKICAgICAgICBiaW4gICAgICA9PiAxLAogICAgICAgIEN1c3RvbSAgID0+IDEsCiAgICAgICAgZG9jICAgICAgPT4gMSwKICAgICAgICBGcm9udGVuZCA9PiAxLAogICAgICAgIEtlcm5lbCAgID0+IDEsCiAgICAgICAgc2NyaXB0cyAgPT4gMSwKICAgICAgICB2YXIgICAgICA9PiAxLAogICAgKTsKCiAgICAjIEdvIHRyb3VnaCB0aGUgZmlsZXMgb24gdGhlIFNPUE0gZmlsZSBsaXN0CiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lICggc3BsaXQgL1xuLywgJENvZGUgKSB7CiAgICAgICAgaWYgKCAkTGluZSA9fiBtLzxGaWxlLipMb2NhdGlvbj0iKFteIl0rKSIvICkgewogICAgICAgICAgICBteSAkRmlsZSA9ICQxOwogICAgICAgICAgICBwdXNoIEBTT1BNRmlsZUxpc3QsICRGaWxlOwoKICAgICAgICAgICAgbXkgKCRUb3BsZXZlbERpcmVjdG9yeSkgPSAkRmlsZSA9fiBte14oW14vXSspL307CgogICAgICAgICAgICAjIFRvcGxldmVsIGZpbGUKICAgICAgICAgICAgaWYgKCAhJFRvcGxldmVsRGlyZWN0b3J5ICkgewogICAgICAgICAgICAgICAgbmV4dCBMSU5FIGlmICRBbGxvd090aGVyVG9wbGV2ZWxFbnRyaWVzOwoKICAgICAgICAgICAgICAgICMgUmVqZWN0IG5ldyB0b3BsZXZlbCBmaWxlcyBmb3IgT1RPQk8gMy4zKwogICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZUZvcmJpZGRlblRvcGxldmVsIC49ICIkRmlsZVxuIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBSZWplY3QgbmV3IHRvcGxldmVsIGRpcmVjdG9yaWVzIGZvciBPVE9CTyAzLjMrCiAgICAgICAgICAgIGVsc2lmICggISRBbGxvd090aGVyVG9wbGV2ZWxFbnRyaWVzICYmICEkVG9wbGV2ZWxEaXJlY3Rvcmllc3skVG9wbGV2ZWxEaXJlY3Rvcnl9ICkgewogICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZUZvcmJpZGRlblRvcGxldmVsIC49ICIkRmlsZVxuIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICMgQWNjZXB0IG5ldyB0b3BsZXZlbCBkaXJlY3RvcmllcyBmb3Igb2xkZXIgdmVyc2lvbnMsIGJ1dCB0aGVuCiAgICAgICAgICAgICAgICAjICAgY2hlY2sgdGhhdCBhbGwgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgbXVzdCBiZSBvbiB0aGUgU09QTSBmaWxlIGxpc3QuCiAgICAgICAgICAgICAgICAkVG9wbGV2ZWxEaXJlY3Rvcmllc3skVG9wbGV2ZWxEaXJlY3Rvcnl9ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIE5vdyBjaGVjayB3aGljaCBmaWxlcyBvbiB0aGUgU09QTSBsaXN0IGFyZSBub3QgYXZhaWxhYmxlLgogICAgRklMRToKICAgIGZvciBteSAkRmlsZSAoQFNPUE1GaWxlTGlzdCkgewogICAgICAgIGlmICggIWdyZXAgeyAkXyBlcSAkRmlsZSB9IEBUaWR5QWxsOjpPVE9CTzo6RmlsZUxpc3QgKSB7CiAgICAgICAgICAgICRFcnJvck1lc3NhZ2VNaXNzaW5nRmlsZXMgLj0gIiRGaWxlXG4iOwogICAgICAgIH0KICAgIH0KCiAgICAjIEZvciBhbGwgYWxsb3dlZCB0b3BsZXZlbCBkaXJlY3RvcmllcywgZXZlcnkgZmlsZSB0aGF0IGlzIHByZXNlbnQKICAgICMgICBtdXN0IGFsc28gYmUgcGFja2FnZWQuCiAgICBGSUxFOgogICAgZm9yIG15ICRGaWxlIChAVGlkeUFsbDo6T1RPQk86OkZpbGVMaXN0KSB7CgogICAgICAgIG15ICgkVG9wbGV2ZWxEaXJlY3RvcnkpID0gJEZpbGUgPX4gbXteKFteL10rKS99OwogICAgICAgIG5leHQgRklMRSBpZiAhJFRvcGxldmVsRGlyZWN0b3J5OwogICAgICAgIG5leHQgRklMRSBpZiAhJFRvcGxldmVsRGlyZWN0b3JpZXN7JFRvcGxldmVsRGlyZWN0b3J5fTsKCiAgICAgICAgIyBTa2lwIGRvY3VtZW50YXRpb24gZmlsZXMsIHRoZXNlIGRvbid0IGhhdmUgdG8gYmUgb24gdGhlIFNPUE0gbGlzdC4KICAgICAgICBuZXh0IEZJTEUgaWYgJEZpbGUgPX4gbXtcQSBkb2MvIH1tc3g7CgogICAgICAgICMgQWxsb3cgdW5wYWNrYWdlZCBoaWRkZW4gZmlsZXMuCiAgICAgICAgbmV4dCBGSUxFIGlmICRGaWxlID1+IG17L1suXX1tc3g7CgogICAgICAgIGlmICggIWdyZXAgeyAkXyBlcSAkRmlsZSB9IEBTT1BNRmlsZUxpc3QgKSB7CiAgICAgICAgICAgICRFcnJvck1lc3NhZ2VVbnBhY2thZ2VkRmlsZXMgLj0gIiRGaWxlXG4iOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkRXJyb3JNZXNzYWdlOwoKICAgIGlmICgkRXJyb3JNZXNzYWdlRm9yYmlkZGVuVG9wbGV2ZWwpIHsKICAgICAgICAkRXJyb3JNZXNzYWdlIC49IDw8IkVPRiI7ClRoZSBmb2xsb3dpbmcgcGFja2FnZWQgZmlsZXMgdHJ5IHRvIGNyZWF0ZSBuZXcgdG9wbGV2ZWwgZmlsZXMgb3IgZGlyZWN0b3JpZXMgaW4gL29wdC9vdG9ibywgd2hpY2ggaXMgbm90IHBvc3NpYmxlCmR1ZSB0byBwZXJtaXNzaW9uIHJlc3RyaWN0aW9uczoKJEVycm9yTWVzc2FnZUZvcmJpZGRlblRvcGxldmVsCkVPRgogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlTWlzc2luZ0ZpbGVzKSB7CiAgICAgICAgJEVycm9yTWVzc2FnZSAuPSA8PCJFT0YiOwpUaGUgZm9sbG93aW5nIGZpbGVzIHdlcmUgbGlzdGVkIGluIHRoZSBTT1BNIGJ1dCBub3QgZm91bmQgaW4gdGhlIGRpcmVjdG9yeToKJEVycm9yTWVzc2FnZU1pc3NpbmdGaWxlcwpFT0YKICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZVVucGFja2FnZWRGaWxlcykgewogICAgICAgICRFcnJvck1lc3NhZ2UgLj0gPDwiRU9GIjsKVGhlIGZvbGxvd2luZyBmaWxlcyB3ZXJlIGZvdW5kIGluIHRoZSBkaXJlY3RvcnkgYnV0IG5vdCBsaXN0ZWQgaW4gdGhlIFNPUE06CiRFcnJvck1lc3NhZ2VVbnBhY2thZ2VkRmlsZXMKRU9GCiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiJEVycm9yTWVzc2FnZSIpOwogICAgfQp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/SOPM/FileRights.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlNPUE06OkZpbGVSaWdodHM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpCYXNlKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgICMgc3RyaWN0IHBlcm1pc3Npb24gY2hlY2tzIHN0YXJ0aW5nIHdpdGggT1RPQk8gMTAKICAgIG15ICRFeGVjdXRhYmxlUGVybWlzc2lvbkNoZWNrID0gcXJ7UGVybWlzc2lvbj0iNzcwIn07CiAgICBteSAkU3RhdGljUGVybWlzc2lvbkNoZWNrICAgICA9IHFye1Blcm1pc3Npb249IjY2MCJ9OwogICAgbXkgJEV4cGxhbmF0aW9uICAgICAgICAgICAgICAgPSAnQSA8RmlsZT4tVGFnIGhhcyB3cm9uZyBwZXJtaXNzaW9ucy4gU2NyaXB0IGZpbGVzIG5vcm1hbGx5IG5lZWQgNzcwIHJpZ2h0cywgdGhlIG90aGVycyA2NjAuJzsKCiAgICAjIyBBIGxvdCBtb3JlIGxlbmllbnQgYmVmb3JlIE9UT0JPIDEwICh3b3JsZCBwZXJtaXNzaW9ucykKICAgICNpZiAoICRTZWxmLT5Jc0ZyYW1ld29ya1ZlcnNpb25MZXNzVGhhbiggNiwgMCApICkgewogICAgIyAgICAkRXhlY3V0YWJsZVBlcm1pc3Npb25DaGVjayA9IHFye1Blcm1pc3Npb249Ijc1NSJ9OwogICAgIyAgICAkU3RhdGljUGVybWlzc2lvbkNoZWNrICAgICA9IHFye1Blcm1pc3Npb249IjY0NCJ9OwogICAgIyAgICAkRXhwbGFuYXRpb24gPSAnQSA8RmlsZT4tVGFnIGhhcyB3cm9uZyBwZXJtaXNzaW9ucy4gU2NyaXB0IGZpbGVzIG5vcm1hbGx5IG5lZWQgNzU1IHJpZ2h0cywgdGhlIG90aGVycyA2NDQuJzsKICAgICN9CgogICAgbXkgKCAkRXJyb3JNZXNzYWdlLCAkQ291bnRlciApOwoKICAgIExJTkU6CiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKICAgICAgICAkQ291bnRlcisrOwogICAgICAgIG5leHQgTElORSBpZiAkTGluZSAhfiBtLzxGaWxlLipcLz4vOwogICAgICAgIGlmICggJExpbmUgPX4gbS88RmlsZS4qTG9jYXRpb249IihbXiJdKykiLipcLz4vICkgewogICAgICAgICAgICBpZiAoICQxICYmICQxID1+IC9cLihwbHxzaHxmcGx8cHNnaXxzaCkkLyApIHsKICAgICAgICAgICAgICAgIGlmICggJExpbmUgIX4gJEV4ZWN1dGFibGVQZXJtaXNzaW9uQ2hlY2sgKSB7CiAgICAgICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiTGluZSAkQ291bnRlcjogJExpbmVcbiI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKCAkTGluZSAhfiAkU3RhdGljUGVybWlzc2lvbkNoZWNrICkgewogICAgICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkxpbmUgJENvdW50ZXI6ICRMaW5lXG4iOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7CiRFeHBsYW5hdGlvbgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/SOPM/Name.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlNPUE06Ok5hbWU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpCYXNlKTsKCnN1YiB2YWxpZGF0ZV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlbmFtZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBGaWxlbmFtZSA9PiAkRmlsZW5hbWUgKTsKICAgIG15ICRDb2RlID0gJFNlbGYtPl9HZXRGaWxlQ29udGVudHMoJEZpbGVuYW1lKTsKCiAgICBteSAoJE5hbWVPZlRhZykgPSAkQ29kZSA9fiBtLzxOYW1lPihbXjw+XSspPFwvTmFtZT4vOwogICAgbXkgJE5hbWVPZkZpbGUgPSBzdWJzdHIoIGJhc2VuYW1lKCRGaWxlbmFtZSksIDAsIC01ICk7ICAgICAjIGN1dCBvZmYgLnNvcG0KCiAgICBpZiAoICROYW1lT2ZUYWcgbmUgJE5hbWVPZkZpbGUgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7ClRoZSBtb2R1bGUgbmFtZSAkTmFtZU9mVGFnIGlzIG5vdCBlcXVhbCB0byB0aGUgbmFtZSBvZiB0aGUgLnNvcG0gZmlsZSAoJE5hbWVPZkZpbGUpLgpFT0YKICAgIH0KfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/SOPM/PackageRequired.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlNPUE06OlBhY2thZ2VSZXF1aXJlZDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkJhc2UpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgaWYgKCAkQ29kZSA9fiBtezxQYWNrYWdlUmVxdWlyZWQ+fXNteCApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKWW91IHVzZSB0aGUgYXR0cmlidXRlIFBhY2thZ2VSZXF1aXJlZCB3aXRob3V0IGEgdmVyc2lvbiB0YWcuClVzZTogXCI8UGFja2FnZVJlcXVpcmVkIFZlcnNpb249IjEuMS4xIj5OZXdQYWNrYWdlPC9QYWNrYWdlUmVxdWlyZWQ+CkVPRgogICAgfQp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/SOPM/RequiredElements.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlNPUE06OlJlcXVpcmVkRWxlbWVudHM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpCYXNlKTsKCnN1YiB0cmFuc2Zvcm1fc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICAjIFJlcGxhY2UgT1RPQk8gR21iSCB3aXRoIFJvdGhlciBPU1MgR21iSAogICAgJENvZGUgPX4gc3sgT1RPQk8gWyBdKyBHbWJIIH17Um90aGVyIE9TUyBHbWJIfXhtc2c7CgogICAgIyBnZXQgdmVuZG9yCiAgICBteSAkVmVuZG9yID0gJyc7CiAgICBpZiAoICRDb2RlID1+IC88VmVuZG9yPig/PFZlbmRvcj5bXjw+XSspPFwvVmVuZG9yPi8gKSB7CiAgICAgICAgJFZlbmRvciA9ICQre1ZlbmRvcn07CiAgICB9CgogICAgIyBSZXBsYWNlIDxVUkw+aHR0cDovL290b2JvLm9yZy88L1VSTD4gd2l0aCA8VVJMPmh0dHBzOi8vb3RvYm8ub3JnLzwvVVJMPgogICAgaWYgKCAkVmVuZG9yIGVxICdSb3RoZXIgT1NTIEdtYkgnICkgewogICAgICAgICRDb2RlID1+IHN7IF4gKCBccyogKSBcPCBVUkwgXD4gLis/IFw8IFwvIFVSTCBcPiB9eyQxPFVSTD5odHRwczovL290b2JvLmlvLzwvVVJMPn14bXNnOwogICAgfQoKICAgICMgUmVwbGFjZSBWZXJzaW9uCiAgICAkQ29kZSA9fiBzeyA8VmVyc2lvbj4gW148PlxuXSogPFwvVmVyc2lvbj4gfXs8VmVyc2lvbj4wLjAuMDwvVmVyc2lvbj59eG1zZzsKCiAgICAjIGNsZWFudXAgZmlsZSB0YWdzCiAgICAkQ29kZSA9fiBzeyAiXC8+IH17IiBcLz59eG1zZzsKICAgICRDb2RlID1+IHN7ICI+PFwvRmlsZT4gfXsiIFwvPn14bXNnOwogICAgJENvZGUgPX4gc3sKICAgICAgICBeICggWyBdKiA8RmlsZSApIFsgXSsgKCBMb2NhdGlvbj0iIFteIDw+XG5dKyAiICkgWyBdKyAoIFBlcm1pc3Npb249IlxkXGRcZCIgKSBbIF0rICggXC8+ICkKICAgIH17JDEgJDMgJDIgJDR9eG1zZzsKCiAgICAjIFJlbW92ZSBCdWlsZEhvc3QgYW5kIEJ1aWxkRGF0ZSB0YWdzCiAgICAkQ29kZSA9fiBzeyA8QnVpbGRIb3N0PiBbXjw+XG5dKiA8XC9CdWlsZEhvc3Q+IH17fXhtc2c7CiAgICAkQ29kZSA9fiBzeyA8QnVpbGREYXRlPiBbXjw+XG5dKiA8XC9CdWlsZERhdGU+IH17fXhtc2c7CgogICAgIyBSZW1vdmUgQ2hhbmdlTG9nIHRhZ3MKICAgICRDb2RlID1+IHN7IDxDaGFuZ2VMb2c+IFtePD5cbl0qIDxcL0NoYW5nZUxvZz4gfXt9eG1zZzsKCiAgICByZXR1cm4gJENvZGU7Cn0KCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgIG15ICRFcnJvck1lc3NhZ2U7CgogICAgbXkgJE5hbWUgICAgICAgICAgICA9IDA7CiAgICBteSAkVmVyc2lvbiAgICAgICAgID0gMDsKICAgIG15ICRDb3VudGVyICAgICAgICAgPSAwOwogICAgbXkgJEZyYW1ld29yayAgICAgICA9IDA7CiAgICBteSAkVmVuZG9yICAgICAgICAgID0gMDsKICAgIG15ICRVUkwgICAgICAgICAgICAgPSAwOwogICAgbXkgJExpY2Vuc2UgICAgICAgICA9IDA7CiAgICBteSAkQnVpbGREYXRlICAgICAgID0gMDsKICAgIG15ICRCdWlsZEhvc3QgICAgICAgPSAwOwogICAgbXkgJERlc2NyaXB0aW9uRU4gICA9IDA7CiAgICBteSAkVGFibGUgICAgICAgICAgID0gMDsKICAgIG15ICREYXRhYmFzZVVwZ3JhZGUgPSAwOwogICAgbXkgJE5hbWVMZW5ndGggICAgICA9IDA7CiAgICBteSAkRG93bmxvYWRGbGFnICAgID0gMDsKICAgIG15ICRCdWlsZEZsYWcgICAgICAgPSAwOwogICAgbXkgJFBhY2thZ2VOYW1lICAgICA9ICcnOwoKICAgIG15ICRUYWJsZU5hbWVMZW5ndGggPSAzMDsKCiAgICBteSBAQ29kZUxpbmVzID0gc3BsaXQgL1xuLywgJENvZGU7CgogICAgZm9yIG15ICRMaW5lIChAQ29kZUxpbmVzKSB7CiAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICBpZiAoICRMaW5lID1+IC88TmFtZT4oW148Pl0rKTxcL05hbWU+LyApIHsKCiAgICAgICAgICAgICROYW1lICAgICAgICA9IDE7CiAgICAgICAgICAgICRQYWNrYWdlTmFtZSA9ICQxOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRMaW5lID1+IC88RGVzY3JpcHRpb24gTGFuZz0iZW4iPltePD5dKzxcL0Rlc2NyaXB0aW9uPi8gKSB7CiAgICAgICAgICAgICREZXNjcmlwdGlvbkVOID0gMTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkTGluZSA9fiAvPExpY2Vuc2U+KFtePD5dKyk8XC9MaWNlbnNlPi8gKSB7CiAgICAgICAgICAgICRMaWNlbnNlID0gMTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkTGluZSA9fiAvPFVSTD4oW148Pl0rKTxcL1VSTD4vICkgewogICAgICAgICAgICAkVVJMID0gMTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkTGluZSA9fiAvPEJ1aWxkSG9zdD5bXjw+XSo8XC9CdWlsZEhvc3Q+LyApIHsKICAgICAgICAgICAgJEJ1aWxkSG9zdCA9IDE7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJExpbmUgPX4gLzxCdWlsZERhdGU+W148Pl0qPFwvQnVpbGREYXRlPi8gKSB7CiAgICAgICAgICAgICRCdWlsZERhdGUgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRMaW5lID1+IC88VmVuZG9yPihbXjw+XSspPFwvVmVuZG9yPi8gKSB7CiAgICAgICAgICAgICRWZW5kb3IgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRMaW5lID1+IG17IDxGcmFtZXdvcmsgKD86IFsgXSsgW148Pl0qICk/ID4gKCBbXjw+XSsgKSA8XC9GcmFtZXdvcms+IH14bXMgKSB7CiAgICAgICAgICAgICRGcmFtZXdvcmsgPSAxOwoKICAgICAgICAgICAgbXkgJEZyYW1ld29ya1ZlcnNpb24gPSAkMTsKCiAgICAgICAgICAgIGlmICggJEZyYW1ld29ya1ZlcnNpb24gIX4gbXsgXGQrIFwuIFxkKyBcLiBbeFxkXSsgfXhtcyApIHsKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIlZlcnNpb24gbmVlZHMgdG8gaGF2ZSB0aGUgZm9ybWF0IDAuMC54IG9yIDAuMC4wIVxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRMaW5lID1+IC88VmVyc2lvbj4oW148Pl0rKTxcL1ZlcnNpb24+LyApIHsKICAgICAgICAgICAgJFZlcnNpb24gPSAxOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRMaW5lID1+IC88RmlsZShbXjw+XSspPihbXjw+XSopPFwvRmlsZT4vICkgewogICAgICAgICAgICBteSAkQXR0cmlidXRlcyA9ICQxOwogICAgICAgICAgICBteSAkQ29udGVudCAgICA9ICQyOwogICAgICAgICAgICBpZiAoICRDb250ZW50IG5lICcnICkgewogICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiRG9uJ3QgaW5zZXJ0IHNvbWV0aGluZyBiZXR3ZWVuIDxGaWxlPjxcL0ZpbGU+IVxuIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICRBdHRyaWJ1dGVzID1+IC8oVHlwZXxFbmNvZGUpPS8gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJEb24ndCB1c2UgdGhlIGF0dHJpYnV0ZSAnVHlwZScgb3IgJ0VuY29kZScgaW4gPEZpbGU+VGFncyFcbiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlcyA9fiAvTG9jYXRpb249Lis/XC5zb3BtLyApIHsKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkl0IGlzIHNlbnNlbGVzcyB0byBpbmNsdWRlIC5zb3BtLWZpbGVzIGluIGEgb3BtISAtPiAkTGluZSI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkTGluZSA9fiAvKDxUYWJsZSAuKz8+fDxcL1RhYmxlPikvICkgewogICAgICAgICAgICAkVGFibGUgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRMaW5lID1+IC88RGF0YWJhc2VVcGdyYWRlPi8gKSB7CiAgICAgICAgICAgICREYXRhYmFzZVVwZ3JhZGUgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRMaW5lID1+IC88XC9EYXRhYmFzZVVwZ3JhZGU+LyApIHsKICAgICAgICAgICAgJERhdGFiYXNlVXBncmFkZSA9IDA7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJExpbmUgPX4gLzxUYWJsZS4rPz4vICkgewogICAgICAgICAgICBpZiAoICREYXRhYmFzZVVwZ3JhZGUgJiYgJExpbmUgPX4gLzxUYWJsZS8gJiYgJExpbmUgIX4gL1ZlcnNpb249LyApIHsKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UKICAgICAgICAgICAgICAgICAgICAuPSAiSWYgeW91IHVzZSA8VGFibGUuLi4gaW4gYSA8RGF0YWJhc2VVcGdyYWRlPiBjb250ZXh0IHlvdSBuZWVkIHRvIGhhdmUgYSBWZXJzaW9uIGF0dHJpYnV0ZSB3aXRoIHRoZSBiZWdpbm5pbmcgdmVyc2lvbiB3aGVyZSB0aGlzIGNoYW5nZSBpcyBuZWVkZWQgKGUuIGcuIDxUYWJsZUFsdGVyIE5hbWU9XCJzb21lX3RhYmxlXCIgVmVyc2lvbj1cIjEuMC42XCI+KSFcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJExpbmUgPX4gLzwoQ29sdW1uLip8VGFibGVDcmVhdGUuKikgTmFtZT0iKC4rPykiLyApIHsKICAgICAgICAgICAgJE5hbWUgPSAkMjsKICAgICAgICAgICAgaWYgKCBsZW5ndGggJE5hbWUgPiAkVGFibGVOYW1lTGVuZ3RoICkgewogICAgICAgICAgICAgICAgJE5hbWVMZW5ndGggLj0gIkxpbmUgJENvdW50ZXI6ICROYW1lXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIE9UT0JPIDc6IENoZWNrIFBhY2thZ2VJc0Rvd25sb2FkYWJsZSArIFBhY2thZ2VJc0J1aWxkYWJsZSBmbGFncy4KICAgICAgICBpZiAoICRMaW5lID1+IG17IDxQYWNrYWdlSXNEb3dubG9hZGFibGU+KD86IFxkICk8XC9QYWNrYWdlSXNEb3dubG9hZGFibGU+IH14bXMgKSB7CgogICAgICAgICAgICAkRG93bmxvYWRGbGFnID0gMTsKICAgICAgICB9CgogICAgICAgIGlmICggJExpbmUgPX4gbXsgPFBhY2thZ2VJc0J1aWxkYWJsZT4oPzogXGQgKTxcL1BhY2thZ2VJc0J1aWxkYWJsZT4gfXhtcyApIHsKICAgICAgICAgICAgJEJ1aWxkRmxhZyA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgZm9yIG11bHRpLWxpbmUgZW5nbGlzaCBkZXNjcmlwdGlvbgogICAgaWYgKCAkQ29kZSA9fiAvPERlc2NyaXB0aW9uIExhbmc9ImVuIj48IVxbQ0RBVEFcW1tePD5dK1xdXF0+PFwvRGVzY3JpcHRpb24+L3MgKSB7CiAgICAgICAgJERlc2NyaXB0aW9uRU4gPSAxOwogICAgfQoKICAgIGlmICgkVGFibGUpIHsKICAgICAgICAkRXJyb3JNZXNzYWdlCiAgICAgICAgICAgIC49ICJUaGUgRWxlbWVudCA8VGFibGU+IGlzIG5vdCBhbGxvd2VkIGluIHNvcG0tZmlsZXMuIFBlcmhhcHMgeW91IG1lYW4gPFRhYmxlQ3JlYXRlPiFcbiI7CiAgICB9CiAgICBpZiAoJEJ1aWxkRGF0ZSkgewogICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIjxCdWlsZERhdGU+IG5vIGxvbmdlciB1c2VkIGluIC5zb3BtcyFcbiI7CiAgICB9CiAgICBpZiAoJEJ1aWxkSG9zdCkgewogICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIjxCdWlsZEhvc3Q+IG5vIGxvbmdlciB1c2VkIGluIC5zb3BtcyFcbiI7CiAgICB9CiAgICBpZiAoICEkRGVzY3JpcHRpb25FTiApIHsKICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJZb3UgaGF2ZSBmb3Jnb3QgdG8gdXNlIHRoZSBlbGVtZW50IDxEZXNjcmlwdGlvbiBMYW5nPVwiZW5cIj4hXG4iOwogICAgfQogICAgaWYgKCAhJE5hbWUgKSB7CiAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiWW91IGhhdmUgZm9yZ290IHRvIHVzZSB0aGUgZWxlbWVudCA8TmFtZT4hXG4iOwogICAgfQogICAgaWYgKCAhJFZlcnNpb24gKSB7CiAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiWW91IGhhdmUgZm9yZ290IHRvIHVzZSB0aGUgZWxlbWVudCA8VmVyc2lvbj4hXG4iOwogICAgfQogICAgaWYgKCAhJEZyYW1ld29yayApIHsKICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJZb3UgaGF2ZSBmb3Jnb3QgdG8gdXNlIHRoZSBlbGVtZW50IDxGcmFtZXdvcms+IVxuIjsKICAgIH0KICAgIGlmICggISRWZW5kb3IgKSB7CiAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiWW91IGhhdmUgZm9yZ290IHRvIHVzZSB0aGUgZWxlbWVudCA8VmVuZG9yPiFcbiI7CiAgICB9CiAgICBpZiAoICEkVVJMICkgewogICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIllvdSBoYXZlIGZvcmdvdCB0byB1c2UgdGhlIGVsZW1lbnQgPFVSTD4hXG4iOwogICAgfQogICAgaWYgKCAhJExpY2Vuc2UgKSB7CiAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiWW91IGhhdmUgZm9yZ290IHRvIHVzZSB0aGUgZWxlbWVudCA8TGljZW5zZT4hXG4iOwogICAgfQogICAgaWYgKCROYW1lTGVuZ3RoKSB7CiAgICAgICAgJEVycm9yTWVzc2FnZQogICAgICAgICAgICAuPSAiUGxlYXNlIHVzZSBDb2x1bW4gYW5kIFRhYmxlbmFtZXMgd2l0aCBsZXNzIHRoYW4gJFRhYmxlTmFtZUxlbmd0aCBsZXR0ZXJzIVxuIjsKICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICROYW1lTGVuZ3RoOwogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoJEVycm9yTWVzc2FnZSk7CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgSXNSZXN0cmljdGVkUGFja2FnZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVSZXN0cmljdGVkUGFja2FnZXMgPSAoCgogICAgICAgICMgT1RPQk8gRnJlZWJpZSBGZWF0dXJlcyAob3RvYm8ub3JnKQogICAgICAgIEZBUSAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgIGlQaG9uZUhhbmRsZSAgICAgICAgICAgICA9PiAxLAogICAgICAgIE1hc3RlclNsYXZlICAgICAgICAgICAgICA9PiAxLAogICAgICAgIE9UT0JPQXBwb2ludG1lbnRDYWxlbmRhciA9PiAxLAogICAgICAgIE9UT0JPQ29kZVBvbGljeSAgICAgICAgICA9PiAxLAogICAgICAgIE9UT0JPTWFzdGVyU2xhdmUgICAgICAgICA9PiAxLAogICAgICAgIFN1cHBvcnQgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgIFN1cnZleSAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgIFN5c3RlbU1vbml0b3JpbmcgICAgICAgICA9PiAxLAogICAgICAgIFRpbWVBY2NvdW50aW5nICAgICAgICAgICA9PiAxLAoKICAgICAgICAjIElUU00gcGFja2FnZXMgKGl0c20ub3RvYm8ub3JnKQogICAgICAgIEdlbmVyYWxDYXRhbG9nICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgSW1wb3J0RXhwb3J0ICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICBJVFNNICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgIElUU01DaGFuZ2VNYW5hZ2VtZW50ICAgICAgICAgID0+IDEsCiAgICAgICAgSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50ICAgPT4gMSwKICAgICAgICBJVFNNQ29yZSAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgIElUU01JbmNpZGVudFByb2JsZW1NYW5hZ2VtZW50ID0+IDEsCiAgICAgICAgSVRTTVNlcnZpY2VMZXZlbE1hbmFnZW1lbnQgICAgPT4gMSwKCiAgICAgICAgIyBTVE9STSBwYWNrYWdlcyAoc3Rvcm0ub3RvYm8ub3JnKQogICAgICAgIE9UT0JPU1RPUk0gPT4gMSwKICAgICk7CiAgICByZXR1cm4gMSBpZiAkUmVzdHJpY3RlZFBhY2thZ2VzeyAkUGFyYW17UGFja2FnZX0gfTsKCiAgICAjIEFsbCBwYWNrYWdlcyB3aGljaCBzdGFydCB3aXRoICJPVE9CTyIuCiAgICByZXR1cm4gMSBpZiAkUGFyYW17UGFja2FnZX0gPX4gbXsgXEEgT1RPQk8gLisgfXhtczsKCiAgICByZXR1cm4gMDsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/SOPM/XSDValidator.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlNPUE06OlhTRFZhbGlkYXRvcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkJhc2UpOwoKc3ViIHZhbGlkYXRlX2ZpbGUgewogICAgbXkgKCAkU2VsZiwgJEZpbGVuYW1lICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIEZpbGVuYW1lID0+ICRGaWxlbmFtZSApOwoKICAgIG15ICRYU0RGaWxlID0gZGlybmFtZShfX0ZJTEVfXykgLiAnLy4uL1N0YXRpY0ZpbGVzL1hTRC9TT1BNLnhzZCc7CgogICAgbXkgJENNRCA9ICJ4bWxsaW50IC0tbm9vdXQgLS1ub25ldCAtLXNjaGVtYSAkWFNERmlsZSI7CgogICAgbXkgJENvbW1hbmQgPSBzcHJpbnRmKCAiJXMgJXMgJXMgMj4mMSIsICRDTUQsICRTZWxmLT5hcmd2KCksICRGaWxlbmFtZSApOwogICAgbXkgJE91dHB1dCAgPSBgJENvbW1hbmRgOwoKICAgICMgSWYgZXhlY3V0aW9uIGZhaWxlZCwgd2FybiBhYm91dCBpbnN0YWxsaW5nIHBhY2thZ2UuCiAgICBpZiAoICR7XkNISUxEX0VSUk9SX05BVElWRX0gPT0gLTEgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIid4bWxsaW50JyB3YXMgbm90IGZvdW5kLCBwbGVhc2UgaW5zdGFsbCBpdC5cbiIpOwogICAgfQoKICAgIGlmICggJHteQ0hJTERfRVJST1JfTkFUSVZFfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiJE91dHB1dFxuIik7ICAgICMgbm9uLXplcm8gZXhpdCBjb2RlCiAgICB9Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/SQL/ReservedWords.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlNRTDo6UmVzZXJ2ZWRXb3JkczsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkJhc2UpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgbXkgJFRhYmxlQ3JlYXRlID0gMDsKICAgIG15ICRDb3VudGVyOwoKICAgIGZvciBteSAkTGluZSAoIHNwbGl0KCAvXG4vLCAkQ29kZSApICkgewogICAgICAgICRDb3VudGVyKys7CiAgICAgICAgaWYgKCAkTGluZSA9fiAvPFRhYmxlLyApIHsKICAgICAgICAgICAgJFRhYmxlQ3JlYXRlID0gMTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkVGFibGVDcmVhdGUgJiYgJExpbmUgPX4gLzxDb2x1bW4uKz9OYW1lPSIoLis/KSIuKj9cLz4vaSApIHsKICAgICAgICAgICAgaWYgKCAhJDEgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKRm91bmQgYW4gZW1wdHkgY29sdW1uIG5hbWUhCkxpbmUgJENvdW50ZXI6ICRMaW5lCkVPRgogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3IgbXkgJFJlc2VydmVkV29yZCAoCiAgICAgICAgICAgICAgICBxdygKICAgICAgICAgICAgICAgICAgICBhZGQgYWxsIGFsdGVyIGFuZAogICAgICAgICAgICAgICAgICAgIGFueSBhcyBhc2MgYmFja3VwCiAgICAgICAgICAgICAgICAgICAgYmVnaW4gYmV0d2VlbiBiaWdpbnQgYmluYXJ5CiAgICAgICAgICAgICAgICAgICAgYml0IGJvdHRvbSBicmVhayBidWxrIGJ5IGNhY2hlCiAgICAgICAgICAgICAgICAgICAgY2FsbCBjYXBhYmlsaXR5IGNhc2NhZGUgY2FzZQogICAgICAgICAgICAgICAgICAgIGNhc3QgY2hhciBjaGFyX2NvbnZlcnQgY2hhcmFjdGVyCiAgICAgICAgICAgICAgICAgICAgY2hlY2sgY2hlY2twb2ludCBjbG9zZSBjb21tZW50CiAgICAgICAgICAgICAgICAgICAgY29tbWl0IGNvbm5lY3QgY29uc3RyYWludCBjb250YWlucwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIGNvbnZlcnQgY3JlYXRlIGNyb3NzCiAgICAgICAgICAgICAgICAgICAgY3ViZSBjdXJyZW50IGN1cnJlbnRfdGltZXN0YW1wIGN1cnJlbnRfdXNlcgogICAgICAgICAgICAgICAgICAgIGN1cnNvciBkYXRlIGRic3BhY2UgZGVhbGxvY2F0ZQogICAgICAgICAgICAgICAgICAgIGRlYyBkZWNpbWFsIGRlY2xhcmUgZGVmYXVsdAogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBkZWxldGluZyBkZXNjIGRpc3RpbmN0CiAgICAgICAgICAgICAgICAgICAgZG8gZG91YmxlIGRyb3AgZHluYW1pYyBlYWNoCiAgICAgICAgICAgICAgICAgICAgZWxzZSBlbHNlaWYgZW5jcnlwdGVkIGVuZAogICAgICAgICAgICAgICAgICAgIGVuZGlmIGVzY2FwZSBleGNlcHQgZXhjZXB0aW9uCiAgICAgICAgICAgICAgICAgICAgZXhlYyBleGVjdXRlIGV4aXN0aW5nIGV4aXN0cwogICAgICAgICAgICAgICAgICAgIGV4dGVybmxvZ2luIGZldGNoIGZpcnN0IGZsb2F0CiAgICAgICAgICAgICAgICAgICAgZm9yIGZvcmNlIGZvcmVpZ24gZm9yd2FyZAogICAgICAgICAgICAgICAgICAgIGZyb20gZnVsbCBnb3RvIGdyYW50CiAgICAgICAgICAgICAgICAgICAgZ3JvdXAgaGF2aW5nIGhvbGRsb2NrIGlkZW50aWZpZWQKICAgICAgICAgICAgICAgICAgICBpZiBpbiBpbmRleCBpbmRleF9scGFyZW4KICAgICAgICAgICAgICAgICAgICBpbm5lciBpbm91dCBpbnNlbnNpdGl2ZSBpbnNlcnQKICAgICAgICAgICAgICAgICAgICBpbnNlcnRpbmcgaW5zdGFsbCBpbnN0ZWFkIGludAogICAgICAgICAgICAgICAgICAgIGludGVnZXIgaW50ZWdyYXRlZCBpbnRlcnNlY3QgaW50bwogICAgICAgICAgICAgICAgICAgIGlxIGlzIGlzb2xhdGlvbiBqb2luCiAgICAgICAgICAgICAgICAgICAga2V5IGxhdGVyYWwgbGVmdCBsaWtlCiAgICAgICAgICAgICAgICAgICAgbG9jayBsb25nIG1hdGNoCiAgICAgICAgICAgICAgICAgICAgbWVtYmVyc2hpcCBtZXNzYWdlIG1vZGUgbW9kaWZ5CiAgICAgICAgICAgICAgICAgICAgbmF0dXJhbCBuZXcgbm8gbm9ob2xkbG9jawogICAgICAgICAgICAgICAgICAgIG5vdCBub3RpZnkgbnVsbCBudW1lcmljCiAgICAgICAgICAgICAgICAgICAgb2Ygb2ZmIG9uIG9wZW4KICAgICAgICAgICAgICAgICAgICBvcHRpb24gb3B0aW9ucyBvciBvcmRlcgogICAgICAgICAgICAgICAgICAgIG90aGVycyBvdXQgb3V0ZXIgb3ZlcgogICAgICAgICAgICAgICAgICAgIHBhc3N0aHJvdWdoIHByZWNpc2lvbiBwcmVwYXJlIHByaW1hcnkKICAgICAgICAgICAgICAgICAgICBwcmludCBwcml2aWxlZ2VzIHByb2MgcHJvY2VkdXJlCiAgICAgICAgICAgICAgICAgICAgcHVibGljYXRpb24gcmFpc2Vycm9yIHJlYWR0ZXh0IHJlYWwKICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzIHJlbGVhc2UgcmVtb3RlCiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlIHJlbmFtZSByZW9yZ2FuaXplIHJlc291cmNlCiAgICAgICAgICAgICAgICAgICAgcmVzdG9yZSByZXN0cmljdCByZXR1cm4gcmV2b2tlCiAgICAgICAgICAgICAgICAgICAgcmlnaHQgcm9sZSByb2xsYmFjayByb2xsdXAgcm93IHJ1bGUgc2F2ZQogICAgICAgICAgICAgICAgICAgIHNhdmVwb2ludCBzY3JvbGwgc2VsZWN0IHNlbnNpdGl2ZQogICAgICAgICAgICAgICAgICAgIHNlc3Npb24gc2V0IHNldHVzZXIgc2hhcmUKICAgICAgICAgICAgICAgICAgICBzbWFsbGludCBzb21lIHNxbGNvZGUgc3Fsc3RhdGUKICAgICAgICAgICAgICAgICAgICBzdGFydCBzdG9wIHN1YnRyYW5zIHN1YnRyYW5zYWN0aW9uCiAgICAgICAgICAgICAgICAgICAgc3luY2hyb25pemUgc3ludGF4X2Vycm9yIHRhYmxlIHRlbXBvcmFyeQogICAgICAgICAgICAgICAgICAgIHRoZW4gdGltZSB0aW1lc3RhbXAgdGlueWludAogICAgICAgICAgICAgICAgICAgIHRvIHRvcCB0cmFuIHRyaWdnZXIKICAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZSB0c2VxdWFsIHVuYm91bmRlZCB1bmRvIHVuaW9uCiAgICAgICAgICAgICAgICAgICAgdW5pcXVlIHVua25vd24gdW5zaWduZWQgdXBkYXRlCiAgICAgICAgICAgICAgICAgICAgdXBkYXRpbmcgdXNlciB1c2luZyB2YWxpZGF0ZQogICAgICAgICAgICAgICAgICAgIHZhbHVlcyB2YXJiaW5hcnkgdmFyY2hhciB2YXJpYWJsZQogICAgICAgICAgICAgICAgICAgIHZhcnlpbmcgdmlldyB3YWl0IHdhaXRmb3IKICAgICAgICAgICAgICAgICAgICB3aGVuIHdoZXJlIHdoaWxlIHdpbmRvdwogICAgICAgICAgICAgICAgICAgIHdpdGggd2l0aF9jdWJlIHdpdGhfbHBhcmVuIHdpdGhfcm9sbHVwCiAgICAgICAgICAgICAgICAgICAgd2l0aGluIHdvcmsgd3JpdGV0ZXh0CiAgICAgICAgICAgICAgICAgICAgTk9NT05JVE9SSU5HIFJFQ09SRFNfUEVSX0JMT0NLIE5PV0FJVCBEWU5BTUlDX1NBTVBMSU5HIENPTFVNTl9TVEFUUyBHUk9VUFMKICAgICAgICAgICAgICAgICAgICBOT19QWF9KT0lOX0ZJTFRFUiBOT19TVEFUU19HU0VUUyBTV0FQX0pPSU5fSU5QVVRTIE5PT1JERVIgVFJJR0dFUlMgREVNQU5ECiAgICAgICAgICAgICAgICAgICAgTE9CIEdCWV9DT05DX1JPTExVUCBST1dERVBFTkRFTkNJRVMgTk9TVFJJQ1QgUFJJVklMRUdFIFNFTUlKT0lOIFJBVyBVU0VfTkxfV0lUSF9JTkRFWAogICAgICAgICAgICAgICAgICAgIElORk9STUFUSU9OQUwgREVOU0VfUkFOSyBOT19RVUVSWV9UUkFOU0ZPUk1BVElPTiBQT0lOVCBUUkFDSU5HIE5PX1hNTF9RVUVSWV9SRVdSSVRFCiAgICAgICAgICAgICAgICAgICAgTk9QQVJBTExFTF9JTkRFWCBMSU5LIFJFRiBUSU1FWk9ORV9BQkJSIFBJVl9TU0YgVFggUkVBRFMgREVMQVkgQkZJTEUgUFJJVkFURSBNQVhMT0dNRU1CRVJTCiAgICAgICAgICAgICAgICAgICAgVVNFX1NFTUkgQ09TVCBFVkFMTkFNRSBOT19DQVJURVNJQU4gVEFCTk8gVFJBQ0UgUExBTiBISU5UU0VUX0VORCBDT05UQUlORVIgQURNSU4gQ09MVU1OCiAgICAgICAgICAgICAgICAgICAgU1lTVEVNIFRaX09GRlNFVCBOTFNfTEVOR1RIX1NFTUFOVElDUyBESUNUSU9OQVJZIFNDTl9BU0NFTkRJTkcgRklDX0NJViBOT09WRVJSSURFIElORElDQVRPUgogICAgICAgICAgICAgICAgICAgIEJJTkFSWV9GTE9BVF9OQU4gUk9XSUQgU0VTU0lPTl9DQUNIRURfQ1VSU09SUyBPQkpOTyBTUUxfVFJBQ0UgQkxPQiBSRUxBVElPTkFMIEJJR0ZJTEUKICAgICAgICAgICAgICAgICAgICBBVkFJTEFCSUxJVFkgR1VBUkQgR1JPVVBfQlkgQURWSVNFIE1FUkdFIFFVT1RBIENGSUxFIE1FTUJFUiBUSEFOIFNBTFQgRFVNUCBFWFRFUk5BTExZCiAgICAgICAgICAgICAgICAgICAgQk9USCBHVUFSQU5URUVEIEVYVEVOVCBTRUNVUklUWSBTQ0FMRSBTWVNfRExfQ1VSU09SIFRZUEUgREVSRUZfTk9fUkVXUklURSBBVVRPIEVTVElNQVRFCiAgICAgICAgICAgICAgICAgICAgUE9XRVIgVVNFX1NUT1JFRF9PVVRMSU5FUyBTSUQgVkFSUkFZIExFU1MgVkFMVUUgWE1MRk9SRVNUIE1BWExPR0hJU1RPUlkgU1RPUkUgUkVEVU5EQU5DWQogICAgICAgICAgICAgICAgICAgIERFUVVFVUUgREJBIE1BVENIRUQgUFJFU0VOVCBDUFVfUEVSX0NBTEwgREVGSU5FUiBVUERfSk9JTklOREVYIE5FU1RFRF9UQUJMRV9TRVRfUkVGUwogICAgICAgICAgICAgICAgICAgIEVYUEFORF9HU0VUX1RPX1VOSU9OIElOREVYX1NTX0FTQyBFWFRSQUNUIE9SREVSRURfUFJFRElDQVRFUyBBTElBUyBOT19VU0VfSEFTSCBQUklPUgogICAgICAgICAgICAgICAgICAgIFhfRFlOX1BSVU5FIENPTVBPU0lURV9MSU1JVCBPQkpOT19SRVVTRSBSRVZFUlNFIERJU0FCTEUgQ1VSUkVOVF9EQVRFIElOSVRJQUwgTUlOSU1VTQogICAgICAgICAgICAgICAgICAgIElOVEVSTUVESUFURSBQQVJUSVRJT05fTElTVCBCWVRFIE1PVU5UIFBSRUJVSUxUIFNPVVJDRSBNT0RFTF9QQlkgQklUTUFQX1RSRUUgTE9HRklMRQogICAgICAgICAgICAgICAgICAgIFJPTEVTIERFR1JFRSBJTlZBTElEQVRFIFRBQkxFU1BBQ0UgUEFTU1dPUkRfVkVSSUZZX0ZVTkNUSU9OIENPTFVNTlMgQ0hPT1NFIFNNQUxMRklMRSBMRVZFTAogICAgICAgICAgICAgICAgICAgIE9MRF9QVVNIX1BSRUQgRFlOQU1JQ19TQU1QTElOR19FU1RfQ0ROIE5MU19EQVRFX0xBTkdVQUdFIFNFUlZFUkVSUk9SIE5FU1RFRF9UQUJMRV9GQVNUX0lOU0VSVAogICAgICAgICAgICAgICAgICAgIFNUUkVBTVMgTkxfU0ogRUxJTUlOQVRFX09VVEVSX0pPSU4gRU5URVJQUklTRSBESVNBU1NPQ0lBVEUgR1JPVVBJTkcgUEFDS0FHRSBEQVRFX01PREUgQ0hJTEQKICAgICAgICAgICAgICAgICAgICBOT19QUlVORV9HU0VUUyBSRUpFQ1QgTk9SRVNFVExPR1MgTk9fQ09OTkVDVF9CWV9DT1NUX0JBU0VEIENIVU5LIE9JRCBSRVRFTlRJT04gTUFYVFJBTlMKICAgICAgICAgICAgICAgICAgICBGQlRTQ0FOIE5PTkUgUEFSQU1FVEVSUyBPTkxJTkUgT1VUX09GX0xJTkUgR0xPQkFMX05BTUUgU1BBQ0UgSElOVFNFVF9CRUdJTiBQQVNTV09SRF9HUkFDRV9USU1FCiAgICAgICAgICAgICAgICAgICAgTk9DQUNIRSBGSU5BTCBZRUFSIFJCQSBFUlJPUlMgQ0xBU1MgVVNFX05MIENPTk5FQ1RfQllfQ09TVF9CQVNFRCBCSU5BUllfRE9VQkxFIERFRklORUQKICAgICAgICAgICAgICAgICAgICBFVkFMVUFUSU9OIFBVUkdFIEhPVVIgTEVOR1RIIFBSRUNFRElORyBERUNSRU1FTlQgU1VCTVVMVElTRVQgSU5ERVhfUk9XUyBTQ0hFRFVMRVIKICAgICAgICAgICAgICAgICAgICBBVVRIRU5USUNBVElPTiBOVU1CRVIgT0lESU5ERVggT1BBUVVFIFNBTVBMRSBVUERBVEFCTEUgT1JBX1JPV1NDTiBJTlRFUlBSRVRFRAogICAgICAgICAgICAgICAgICAgIE1BVEVSSUFMSVpFRCBJTkRFWF9DT01CSU5FIE9QQVFVRV9YQ0FOT05JQ0FMIElOTElORV9YTUxUWVBFX05UIFJFVFVSTklORyBRVUVSWQogICAgICAgICAgICAgICAgICAgIE9QVF9FU1RJTUFURSBDTE9CIE5PX0VYUEFORCBERVRBQ0hFRCBQQVNTV09SRF9MT0NLX1RJTUUgVkVDVE9SX1JFQUQgREFUQUZJTEUgUkVQTEFDRQogICAgICAgICAgICAgICAgICAgIE5MU19DSEFSQUNURVJTRVQgTk9fRUxJTUlOQVRFX0pPSU4gQlJPQURDQVNUIENJVl9HQiBIQVNIIFFCX05BTUUgQUZURVIgU1lTREJBIEFDQ09VTlQKICAgICAgICAgICAgICAgICAgICBTRVZFUkUgUFJFQ09NUFVURV9TVUJRVUVSWSBGVU5DVElPTiBJTkRFWFRZUEVTIEZMT0IgTVVMVElTRVQgTkxTX1NQRUNJQUxfQ0hBUlMgU0tJUAogICAgICAgICAgICAgICAgICAgIElHTk9SRV9PUFRJTV9FTUJFRERFRF9ISU5UUyBJTkRFWF9TUyBOT0dVQVJBTlRFRSBMT0NBTFRJTUVTVEFNUCBEQkFfUkVDWUNMRUJJTiBGSUxFIFRIUk9VR0gKICAgICAgICAgICAgICAgICAgICBQTFNRTF9XQVJOSU5HUyBNQU5BR0UgRFJJVklOR19TSVRFIEZBSUxFRCBTQ0FOX0lOU1RBTkNFUyBDT01QTEVURSBISUdIIFRSQU5TSVRJT05BTAogICAgICAgICAgICAgICAgICAgIE5PX1NFTUlKT0lOIERBWSBOT1BBUkFMTEVMIFhNTEFUVFJJQlVURVMgTU9WRSBOQVRJT05BTCBSRVFVSVJFRCBTS0lQX0VYVF9PUFRJTUlaRVIKICAgICAgICAgICAgICAgICAgICBOT1JFUEFJUiBSRUJVSUxEIEpPQiBTRUVEIFBPTElDWSBVU0VSUyBUT1BMRVZFTCBCSVRNQVAgREFUQUZJTEVTIEhBU0hfQUogSU5JVFJBTlMKICAgICAgICAgICAgICAgICAgICBCTE9DS1NJWkUgRkFTVCBNSU5JTUlaRSBTRVNTSU9OVFpOQU1FIFNFU1NJT05TX1BFUl9VU0VSIFNZU19PUF9CSVRWRUMgTk9fRUxJTUlOQVRFX09CWQogICAgICAgICAgICAgICAgICAgIFVCQSBEQVRBIFNVQlBBUlRJVElPTl9SRUwgU0VUUyBQUklWQVRFX1NHQSBCSU5BUllfRkxPQVQgRU5GT1JDRUQgVEFCTEVfU1RBVFMgRkxBR0dFUgogICAgICAgICAgICAgICAgICAgIFRFTVBfVEFCTEUgQVJDSElWRSBOT19QVVNIX1NVQlEgUkVDWUNMRSBEQVRBT0JKTk8gUVVFVUVfUk9XUCBTUUwgQ0hBSU5FRCBFTVBUWQogICAgICAgICAgICAgICAgICAgIFNBVkVfQVNfSU5URVJWQUxTIEJJVE1BUFMgT1BUSU1JWkVSX0ZFQVRVUkVTX0VOQUJMRSBGVU5DVElPTlMgQVVUT01BVElDIFNFQ09ORAogICAgICAgICAgICAgICAgICAgIE5PX0ZJTFRFUklORyBOQU1FRCBTVVNQRU5EIExJS0VDIE5PX0JVRkZFUiBQUV9OT01BUCBOTFNfTEFORyBBRFZJU09SCiAgICAgICAgICAgICAgICAgICAgRlJFU0ggTk9fQ09OTkVDVF9CWV9GSUxURVJJTkcgTk9TT1JUIFBBU1NXT1JEIEhBU0hLRVlTIEVYQ0xVRElORyBJTkRFWF9SUlMgRElTSwogICAgICAgICAgICAgICAgICAgIEJJVFMgQ0FDSEVfQ0IgVVNFIFNUQVIgQ1VSU09SX1NQRUNJRklDX1NFR01FTlQgU0I0IERJU1RSSUJVVEVEIEhFQVAgTUlORVhURU5UUyBETUwKICAgICAgICAgICAgICAgICAgICBBVFRSSUJVVEVTIE5PUkVMWSBLRVlTSVpFIExFQURJTkcgWE1MQ09MQVRUVkFMIEZSRUVMSVNUIEZBSUxFRF9MT0dJTl9BVFRFTVBUUwogICAgICAgICAgICAgICAgICAgIFNIQVJFRF9QT09MIFVTRV9BTlRJIEJZUEFTU19SRUNVUlNJVkVfQ0hFQ0sgQU5USUpPSU4gQUJPUlQgSU5ERVhfRklMVEVSIFJPTExJTkcKICAgICAgICAgICAgICAgICAgICBJVEVSQVRJT05fTlVNQkVSIENPQUxFU0NFIE5PX1NRTF9UVU5FIENMVVNURVIgUFJPVEVDVEVEIFBBUlRJVElPTl9IQVNIIEVSUk9SCiAgICAgICAgICAgICAgICAgICAgTk9fTVVMVElNVl9SRVdSSVRFIFVCMiBUSFJFQUQgU0lOR0xFIFNZU19QQVJBTExFTF9UWE4gSU5ERVhfQVNDIFBBUlRJVElPTgogICAgICAgICAgICAgICAgICAgIERJU01PVU5UIEhJRVJBUkNIWSBTVFJJUCBOTFNfREFURV9GT1JNQVQgQ09SUlVQVElPTiBTVE9SQUdFIENPTU1JVFRFRCBSRUNZQ0xFQklOCiAgICAgICAgICAgICAgICAgICAgUEFSSVRZIENBQ0hFX1RFTVBfVEFCTEUgRU5DUllQVElPTiBMT0NBTFRJTUUgUkVXUklURV9PUl9FUlJPUiBEQk1TX1NUQVRTIENIQVJfQ1MKICAgICAgICAgICAgICAgICAgICBFWENFUFRJT05TIEVYUElSRSBBVURJVCBMREFQX1JFR19TWU5DX0lOVEVSVkFMIE5PTUlOVkFMVUUgTElCUkFSWSBDT01QSUxFIE1BWFZBTFVFCiAgICAgICAgICAgICAgICAgICAgTkFOIE5PU0VHTUVOVCBOT0xPR0dJTkcgTk9ST1dERVBFTkRFTkNJRVMgUEFUSCBOT0ZPUkNFIEZJTklTSCBGSUNfUElWIE1BWCBTWVNBVVgKICAgICAgICAgICAgICAgICAgICBESU1FTlNJT04gT1JHQU5JWkFUSU9OIE5PU1dJVENIIFdSSVRFIE1JTlVTIEtJTEwgT0ZGTElORSBUUkFOU0FDVElPTiBGQUNUIEJFQ09NRQogICAgICAgICAgICAgICAgICAgIFVOQk9VTkQgVElWX1NTRiBPTEQgVEVNUEZJTEUgRVhQTE9TSU9OIFJFRlJFU0ggTUlSUk9SIFJFRl9DQVNDQURFX0NVUlNPUgogICAgICAgICAgICAgICAgICAgIE9QQ09ERSBPVkVSRkxPVyBDVVJTT1JfU0hBUklOR19FWEFDVCBQVVNIX1NVQlEgQ0FSRElOQUxJVFkgVVNFX1BSSVZBVEVfT1VUTElORVMKICAgICAgICAgICAgICAgICAgICBMSUtFNCBUWVBFUyBOT1RISU5HIFRJTUVaT05FX0hPVVIgVU5RVUlFU0NFIFJFU0laRSBDT0xMRUNUIElOU1RBTkNFIFNFVFRJTkdTIEVYUE9SVAogICAgICAgICAgICAgICAgICAgIERPTUFJTl9JTkRFWF9OT19TT1JUIE1FUkdFX1NKIExJTUlUIFNZU19PUF9FWFRSQUNUIExJS0UyIFNUQU5EQUxPTkUgTEFTVAogICAgICAgICAgICAgICAgICAgIENPTk5FQ1RfQllfRklMVEVSSU5HIFJFU1RSSUNUX0FMTF9SRUZfQ09OUyBNRVJHRV9DT05TVF9PTiBVTklGT1JNIFNDQU4gV0lUSE9VVAogICAgICAgICAgICAgICAgICAgIENQVV9QRVJfU0VTU0lPTiBQUk9HUkFNIFNFR19GSUxFIEFQUExZIFBBU1NXT1JEX0xJRkVfVElNRSBETUxfVVBEQVRFIEFMTE9XCiAgICAgICAgICAgICAgICAgICAgU0tJUF9VTlFfVU5VU0FCTEVfSURYIE5PX01FUkdFIENMT1NFX0NBQ0hFRF9PUEVOX0NVUlNPUlMgTkVTVEVEX1RBQkxFX0dFVF9SRUZTCiAgICAgICAgICAgICAgICAgICAgU1BFQ0lGSUNBVElPTiBDT05TSVNURU5UIFVTRV9DT05DQVQgU1lTX09QX05UQ0lNRyQgUFFfTUFQIFNIVVRET1dOIERFRkVSUkFCTEUKICAgICAgICAgICAgICAgICAgICBGT0xMT1dJTkcgU1BMSVQgVU5QUk9URUNURUQgVElNRV9aT05FIFNIUklOSyBJTkRFWF9TS0lQX1NDQU4gTE9HSUNBTAogICAgICAgICAgICAgICAgICAgIE1PREVMX01JTl9BTkFMWVNJUyBYTUxST09UIFNEX1NIT1cgQ1JFQVRFX1NUT1JFRF9PVVRMSU5FUyBSQVBJRExZIFVTRV9NRVJHRSBRVUVVRV9DVVJSCiAgICAgICAgICAgICAgICAgICAgU1RSSUNUIE1WX01FUkdFIE5PX09SREVSX1JPTExVUFMgVFJFQVQgVU5MSU1JVEVEIFRVTklORyBDSEFOR0UgUENUVVNFRCBNT1ZFTUVOVAogICAgICAgICAgICAgICAgICAgIE5PX1JFV1JJVEUgQU5DSUxMQVJZIENMVVNURVJJTkdfRkFDVE9SIEJMT0NLX1JBTkdFIFNFUVVFTlRJQUwgR0xPQkFMTFkgWE1MVFlQRSBJTlRFUlZBTAogICAgICAgICAgICAgICAgICAgIFNFUVVFTkNFRCBTV0lUQ0hPVkVSIEFUIE5PTUFYVkFMVUUgU1lTX0ZCVF9JTlNERUwgS0VSQkVST1MgVElNRVpPTkVfT0ZGU0VUCiAgICAgICAgICAgICAgICAgICAgSU5ERVhfU1NfREVTQyBSRUNPVkVSWSBOTFNfVEVSUklUT1JZIFNJWkUgRkFJTEdST1VQIEVMRU1FTlQgSU5TVEFOQ0VTIERJUkVDVE9SWQogICAgICAgICAgICAgICAgICAgIElER0VORVJBVE9SUyBQUkVTRVJWRV9PSUQgTk9fUEFSQUxMRUwgU1VCUEFSVElUSU9OUyBFWEVNUFQgSU5ERVhfSk9JTiBCRUdJTl9PVVRMSU5FX0RBVEEKICAgICAgICAgICAgICAgICAgICBORVRXT1JLIExPQ0FMIFVOVVNFRCBOT0FVRElUIFBIWVNJQ0FMIFdSQVBQRUQgRlJFRVBPT0xTIFBDVElOQ1JFQVNFIEZJTFRFUgogICAgICAgICAgICAgICAgICAgIEdBVEhFUl9QTEFOX1NUQVRJU1RJQ1MgU1lTT1BFUiBTRF9JTkhJQklUIFNFR01FTlQgRElTQUJMRV9SUEtFIE5MU19TT1JUIFBBVEhTCiAgICAgICAgICAgICAgICAgICAgRU5UUlkgTERBUF9SRUdJU1RSQVRJT05fRU5BQkxFRCBESVNLUyBPQkpFQ1QgSU5DUkVNRU5UQUwgUkVHRVhQX0xJS0UgT1ZFUkZMT1dfTk9NT1ZFCiAgICAgICAgICAgICAgICAgICAgU1VCUVVFUklFUyBOT19QQVJBTExFTF9JTkRFWCBYSUQgSU5JVElBTElaRUQgU1RBVElTVElDUyBFTkNSWVBUIEFVVE9BTExPQ0FURSBURU1QTEFURQogICAgICAgICAgICAgICAgICAgIExEQVBfUkVHSVNUUkFUSU9OIE5PX1VOTkVTVCBOT19QQVJUSUFMX0NPTU1JVCBPUkRJTkFMSVRZIE5MU19DT01QIE5PQ09NUFJFU1MgUlVMRVMKICAgICAgICAgICAgICAgICAgICBJTU1FRElBVEUgTUFJTiBSRUZFUkVOQ0lORyBFTlFVRVVFIFNFR19CTE9DSyBVTlJFQ09WRVJBQkxFIE5PX01PTklUT1JJTkcgTk9fQUNDRVNTCiAgICAgICAgICAgICAgICAgICAgUkVTT0xWRVIgVElNRVpPTkVfTUlOVVRFIE5PX0VMSU1JTkFURV9PVVRFUl9KT0lOIE5PX0lOREVYIFVOTkVTVCBHVUFSQU5URUUgQkVIQUxGCiAgICAgICAgICAgICAgICAgICAgQUxXQVlTIFRFU1QgUEVSTUFORU5UIFJFR0lTVEVSIENPTkZPUk1JTkcgU1lOT05ZTSBTS0lQX1VOVVNBQkxFX0lOREVYRVMgVVNFX0hBU0gKICAgICAgICAgICAgICAgICAgICBPUEVSQVRPUiBOT19QVUxMX1BSRUQgVVNFX1RUVF9GT1JfR1NFVFMgU0VSSUFMSVpBQkxFIE1JR1JBVEUgSVRFUkFURSBQTFNRTF9DQ0ZMQUdTCiAgICAgICAgICAgICAgICAgICAgSUdOT1JFX1dIRVJFX0NMQVVTRSBDUFVfQ09TVElORyBUUkFJTElORyBMT0NBTF9JTkRFWEVTIE9WRVJMQVBTIEVYVEVORFMgTk9BUFBFTkQKICAgICAgICAgICAgICAgICAgICBNRVRIT0QgUkVXUklURSBVTlBBQ0tFRCBDT0xVTU5fVkFMVUUgREFUQUJBU0UgRVhDSEFOR0UgTk9fVEVNUF9UQUJMRSBVUFNFUlQgWUVTCiAgICAgICAgICAgICAgICAgICAgUkVCQUxBTkNFIENPTlRFWFQgU1BGSUxFIE5FU1RFRCBUUkFDS0lORyBSRVNPTFZFIFBGSUxFIE1BWERBVEFGSUxFUyBHTE9CQUwKICAgICAgICAgICAgICAgICAgICBBVVRIRU5USUNBVEVEIE5FU1RFRF9UQUJMRV9JRCBJTkRFWEVTIFhNTE5BTUVTUEFDRVMgTk9fUkVGX0NBU0NBREUgU1lTREFURSBPUl9FWFBBTkQKICAgICAgICAgICAgICAgICAgICBBU1NPQ0lBVEUgTU9ERUxfQ09NUElMRV9TVUJRVUVSWSBJTklUSUFMTFkgUEFSVElBTExZIFhNTFNDSEVNQSBNSU5WQUxVRSBQSVZfR0IgSEVBREVSCiAgICAgICAgICAgICAgICAgICAgUkVTVE9SRV9BU19JTlRFUlZBTFMgTUFOQUdFRCBCTE9DSyBTSU5HTEVUQVNLIERFVEVSTUlORVMgUENUVkVSU0lPTiBFWFBMQUlOIEFORF9FUVVBTAogICAgICAgICAgICAgICAgICAgIENMT05FIE5PX1VTRV9IQVNIX0FHR1JFR0FUSU9OIEJVRkZFUl9DQUNIRSBYTUxUQUJMRSBFWFRFUk5BTCBORVZFUiBJREVOVElGSUVSIFBVTExfUFJFRAogICAgICAgICAgICAgICAgICAgIElOREVYRUQgTE9HSUNBTF9SRUFEU19QRVJfQ0FMTCBTVEFSVFVQIEZSRUVMSVNUUyBVUERfSU5ERVhFUyBNQVRFUklBTElaRSBMT0dPTiBTQ0hFTUEKICAgICAgICAgICAgICAgICAgICBOT19JTkRFWF9TUyBOT19CQVNFVEFCTEVfTVVMVElNVl9SRVdSSVRFIElOX01FTU9SWV9NRVRBREFUQSBTVFJVQ1RVUkUgTUFYRVhURU5UUwogICAgICAgICAgICAgICAgICAgIFJFQ09WRVJBQkxFIFJFRkVSRU5DRUQgTk9fU0VUX1RPX0pPSU4gU1RBUl9UUkFOU0ZPUk1BVElPTiBDT05ORUNUX0JZX0lTQ1lDTEUgUk9XTlVNCiAgICAgICAgICAgICAgICAgICAgU05BUFNIT1QgRVhDTFVTSVZFIENVUlJFTlRfVElNRSBLRUVQIFBBU1NXT1JEX1JFVVNFX01BWCBXSEVORVZFUiBJTlRFUk5BTF9VU0UgUFhfSk9JTl9GSUxURVIKICAgICAgICAgICAgICAgICAgICBQUV9ESVNUUklCVVRFIElOTElORSBIV01fQlJPS0VSRUQgRklSU1RfUk9XUyBNT0RFTF9OT19BTkFMWVNJUyBOT19QVVNIX1BSRUQgTU9ERUxfUFVTSF9SRUYKICAgICAgICAgICAgICAgICAgICBDT01QUkVTUyBOT1JFVkVSU0UgTk9fSU5ERVhfRkZTIEdFTkVSQVRFRCBOQVRJVkUgTElLRV9FWFBBTkQgUkVMWSBQQUNLQUdFUyBSRUFEIElHTk9SRQogICAgICAgICAgICAgICAgICAgIFNRTExEUiBESVNLR1JPVVAgRkxVU0ggQllQQVNTX1VKVkMgUkVTRVRMT0dTIFNZU19PUF9OT0VYUEFORCBQUk9URUNUSU9OIEJFRk9SRQogICAgICAgICAgICAgICAgICAgIElOU1RBTlRJQUJMRSBYTUxFTEVNRU5UIFNVQlBBUlRJVElPTiBYTUxQQVJTRSBGQUxTRSBBRE1JTklTVEVSIFNFTEVDVElWSVRZIFBDVFRIUkVTSE9MRAogICAgICAgICAgICAgICAgICAgIE5FWFQgRVJST1JfT05fT1ZFUkxBUF9USU1FIFJFS0VZIFFVSUVTQ0UgUFhfR1JBTlVMRSBMT0dPRkYgU0NPUEUgQklORElORyBOTFNfQ1VSUkVOQ1kKICAgICAgICAgICAgICAgICAgICBUSEUgWE1MUEkgUEFTU1dPUkRfUkVVU0VfVElNRSBYTUxRVUVSWSBQQVJUSVRJT05TIE5PX1FLTl9CVUZGIE1PREVMX0RZTkFNSUNfU1VCUVVFUlkKICAgICAgICAgICAgICAgICAgICBMT0NBVE9SIE5MU19OQ0hBUl9DT05WX0VYQ1AgTk9fU1RBUl9UUkFOU0ZPUk1BVElPTiBOT1JFV1JJVEUgVEFCTEVTUEFDRV9OTyBBRE1JTklTVFJBVE9SCiAgICAgICAgICAgICAgICAgICAgU0VNSUpPSU5fRFJJVkVSIElOREVYX0ZGUyBSRURVQ0VEIEtFWVMgTE9DS0VEIEJVRkZFUiBWQUxJREFUSU9OIEZMQVNIQkFDSyBFTkRfT1VUTElORV9EQVRBCiAgICAgICAgICAgICAgICAgICAgVE9fQ0hBUiBNQVNURVIgU1lTX1JJRF9PUkRFUiBQVUJMSUMgTUlOVVNfTlVMTCBOVkFSQ0hBUjIgQk9VTkQgUkJPX09VVExJTkUgQUNUSVZBVEUgVkFSQ0hBUjIKICAgICAgICAgICAgICAgICAgICBNQVhTSVpFIERFQ1JZUFQgVUlEIE1MU0xBQkVMIFVOVElMIEFVVE9FWFRFTkQgRUxJTUlOQVRFX0pPSU4gUkFORE9NIFNFUVVFTkNFIE5BViBDT05URU5UUwogICAgICAgICAgICAgICAgICAgIFVTQUdFIE9OTFkgUkVVU0UgTUFOVUFMIERPQ1VNRU5UIENPTk5FQ1RfQllfSVNMRUFGIENPTlNJREVSIEVORk9SQ0UgUkVNT1RFX01BUFBFRAogICAgICAgICAgICAgICAgICAgIExJU1QgTUFYQVJDSExPR1MgUk9XX0xFTkdUSCBOVUxMUyBTSEFSRUQgV0VMTEZPUk1FRCBJTkNMVURJTkcgQVBQRU5EIEZPUkNFX1hNTF9RVUVSWV9SRVdSSVRFCiAgICAgICAgICAgICAgICAgICAgSVNPTEFUSU9OX0xFVkVMIEFDQ0VTU0VEIE5MU19JU09fQ1VSUkVOQ1kgU1VDQ0VTU0ZVTCBDVVJSRU5UX1NDSEVNQSBST1dTIERBTkdMSU5HIFRSVUUgWk9ORQogICAgICAgICAgICAgICAgICAgIE5MU19OVU1FUklDX0NIQVJBQ1RFUlMgREVCVUcgVVBEQVRFRCBSRVNUUklDVEVEIE5PX0VYUEFORF9HU0VUX1RPX1VOSU9OIFNUQVRFTUVOVF9JRAogICAgICAgICAgICAgICAgICAgIE5PQ1BVX0NPU1RJTkcgQVVUSE9SSVpBVElPTiBOT19VU0VfTUVSR0UgT1BBUVVFX1RSQU5TRk9STSBBUlJBWSBNRUFTVVJFUyBNT0RFTAogICAgICAgICAgICAgICAgICAgIENPTk5FQ1RfVElNRSBPUFRJTUlaRVJfR09BTCBTVVBQTEVNRU5UQUwgUENURlJFRSBBTkFMWVpFIFJFQ09WRVIgREJfUk9MRV9DSEFOR0UKICAgICAgICAgICAgICAgICAgICBCTE9DS1MgTUFYSU5TVEFOQ0VTIERETCBOT1ZBTElEQVRFIFBSRVNFUlZFIE9QVF9QQVJBTSBDTEVBUiBDT0FSU0UgSURMRV9USU1FIFdBTExFVAogICAgICAgICAgICAgICAgICAgIFNDQUxFX1JPV1MgQVJDSElWRUxPRyBDRVJUSUZJQ0FURSBOT1JNQUwgTk9fTU9ERUxfUFVTSF9SRUYgVEFCTEVTIFVQR1JBREUgSU5GSU5JVEUKICAgICAgICAgICAgICAgICAgICBOT0FSQ0hJVkVMT0cgQ09OVFJPTEZJTEUgSURFTlRJVFkgUEVSRk9STUFOQ0UgSU5TVEFOVExZIE1BUFBJTkcgRU5BQkxFCiAgICAgICAgICAgICAgICAgICAgTE9HSUNBTF9SRUFEU19QRVJfU0VTU0lPTiBVU0VfSEFTSF9BR0dSRUdBVElPTiBERUZFUlJFRCBSRVBBSVIgTk9fU1dBUF9KT0lOX0lOUFVUUwogICAgICAgICAgICAgICAgICAgIEdMT0JBTF9UT1BJQ19FTkFCTEVEIEVMSU1JTkFURV9PQlkgU1VCU1RJVFVUQUJMRSBTVEFOREJZIE5MU19DQUxFTkRBUiBMQVlFUiBCQVRDSCBLRVlfTEVOR1RICiAgICAgICAgICAgICAgICAgICAgSU5DUkVNRU5UIEJVSUxEIE9SREVSRUQgTU9OVEggTkNMT0IgRVhQUl9DT1JSX0NIRUNLIE1FTU9SWSBVUk9XSUQgRVZFTlRTIEFMTF9ST1dTCiAgICAgICAgICAgICAgICAgICAgU1lTX09QX0VORk9SQ0VfTk9UX05VTEwkIFNEX0FMTCBDT01QVVRFIFVTRV9XRUFLX05BTUVfUkVTTCBOT01JTklNSVpFIFNQUkVBRFNIRUVUCiAgICAgICAgICAgICAgICAgICAgTkxfQUogQlVGRkVSX1BPT0wgTUVSR0VfQUogU0lCTElOR1MgQ09OU1RSQUlOVFMgVVNFUl9ERUZJTkVEIExPRyBJTVBPUlQgTkVTVEVEX1RBQkxFX1NFVF9TRVRJRAogICAgICAgICAgICAgICAgICAgIExFVkVMUyBQRVJDRU5UIFBVU0hfUFJFRCBSRVNVTUUgTk9fQ1BVX0NPU1RJTkcgU0lNUExFIERJU0NPTk5FQ1QgV0hJVEVTUEFDRQogICAgICAgICAgICAgICAgICAgIFVOTE9DSyBOT01BUFBJTkcgQVVUSElEIEFMTE9DQVRFIE5DSEFSX0NTIFVTRVJfUkVDWUNMRUJJTiBET01BSU5fSU5ERVhfU09SVCBRVUVSWV9CTE9DSwogICAgICAgICAgICAgICAgICAgIENZQ0xFIEhBU0hfU0ogVU5EUk9QIExPR0dJTkcgT1dOIFBBU1NJTkcgTUlOIFNXSVRDSCBTT1JUIEJJTkFSWV9ET1VCTEVfTkFOIE5PREVMQVkKICAgICAgICAgICAgICAgICAgICBQTFNRTF9PUFRJTUlaRV9MRVZFTCBQQVJUSVRJT05fUkFOR0UgVElNRVpPTkVfUkVHSU9OIENBQ0hFX0lOU1RBTkNFUyBTVU1NQVJZCiAgICAgICAgICAgICAgICAgICAgSU5ERVhfU1RBVFMgRElTVElOR1VJU0hFRCBJTlRFUk5BTF9DT05WRVJUIE5PX1VTRV9OTCBEQlRJTUVaT05FIFNZU19PUF9DQVNUIERPV05HUkFERQogICAgICAgICAgICAgICAgICAgIFJFU0VUIElOREVYX0RFU0MgTk9DWUNMRSBQT1NUX1RSQU5TQUNUSU9OIFBMU1FMX0NPREVfVFlQRSBFIFBBUkVOVCBNQVhMT0dGSUxFUwogICAgICAgICAgICAgICAgICAgIE5PX0ZBQ1QgVU5VU0FCTEUgWE1MU0VSSUFMSVpFIEpBVkEgTkNIQVIgREVSRUYgT1VUTElORSBTRVRfVE9fSk9JTiBORUVERUQgVkVSU0lPTlMKICAgICAgICAgICAgICAgICAgICBJTkRFWF9TQ0FOIEVYVEVOVFMgU0VTU0lPTlRJTUVaT05FIFBMU1FMX0RFQlVHIE1PTklUT1JJTkcgQklOQVJZX0RPVUJMRV9JTkZJTklUWSBTVEFUSUMKICAgICAgICAgICAgICAgICAgICBSRVNVTUFCTEUgUkFOR0UgTUFOQUdFTUVOVCBDT01QQVRJQklMSVRZIEFUVFJJQlVURSBNQVhJTUlaRSBVTkRFUiBQQVJBTExFTCBUSVZfR0IgQ09NUEFDVAogICAgICAgICAgICAgICAgICAgIE9QVElNQUwgQ1VCRV9HQiBJTkNMVURFX1ZFUlNJT04gUEFSQUxMRUxfSU5ERVggRklORSBTWVNUSU1FU1RBTVAgSU5ERVhUWVBFIE9VVExJTkVfTEVBRgogICAgICAgICAgICAgICAgICAgIENPTk5FQ1RfQllfUk9PVCBWRUNUT1JfUkVBRF9UUkFDRSBOTFNfTEFOR1VBR0UgU1RSSU5HIEJJTkFSWV9GTE9BVF9JTkZJTklUWSBVTkFSQ0hJVkVECiAgICAgICAgICAgICAgICAgICAgUFJPRklMRSBTQ04gTUlOVVRFIE1PREVMX0RPTlRWRVJJRllfVU5JUVVFTkVTUyBBQ0NFU1MKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIyB0aGUgZm9sbG93aW5nIHdvcmRzIGFyZSByZW1vdmVkIG9mIHN0ZWZhbnMgbGlzdCwgYmVjYXVzZSB0aGV5IGRvbid0IG1lcmdlCiAgICAgICAgICAgICAgICAjIGF0IHdpdGggaHR0cDovL3d3dy5wZXRlZnJlaXRhZy5jb20vdG9vbHMvc3FsX3Jlc2VydmVkX3dvcmRzX2NoZWNrZXIvCiAgICAgICAgICAgICAgICAjIElEIENBVEVHT1JZIE5BTUUgQ09OVEVOVCBWRVJTSU9OIFFVRVVFIEJPRFkgVElNRU9VVCBSRUZFUkVOQ0UgTk9USUZJQ0FUSU9OIFBST0pFQ1QgVFJVU1RFRAogICAgICAgICAgICAgICAgIyBhbGwgcmVzZXJ2ZWQgc3FsLXdvcmRzIHdpdGggc21hbGwgbGV0dGVycyBhcmUgZnJvbQogICAgICAgICAgICAgICAgIyBodHRwOi8vd3d3LnBldGVmcmVpdGFnLmNvbS90b29scy9zcWxfcmVzZXJ2ZWRfd29yZHNfY2hlY2tlci8KICAgICAgICAgICAgICAgICMgYW5kIGh0dHA6Ly93d3cuaWFueXdoZXJlLmNvbS9kZXZlbG9wZXIvcHJvZHVjdF9tYW51YWxzL3NxbGFueXdoZXJlLzA5MDEvZGUvaHRtbC9kYnJmZGU5LzAwMDAwMDEwLmh0bQogICAgICAgICAgICAgICAgIyAncmVmZXJlbmNlJyBhbmQgJ2xvZ2luJyBzZWVtcyB0byBiZSBhbGxvd2VkIChjaGVja2VkIGJ5IHd3dy5wZXRlZnJlaXRhZy5jb20pCgogICAgICAgICAgICAgICAgaWYgKCAkMSAmJiAkMSA9fiAvXiRSZXNlcnZlZFdvcmQkL2kgKSB7CiAgICAgICAgICAgICAgICAgICAgZGllIDw8IkVPRiI7CllvdSB1c2UgYSByZXNlcnZlZCBTUUwtV29yZCEKTGluZSAkQ291bnRlcjogJExpbmUKWW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyB0b29sIGZvciB5b3VyIG93biBjaGVja2luZzoKaHR0cDovL3d3dy5wZXRlZnJlaXRhZy5jb20vdG9vbHMvc3FsX3Jlc2VydmVkX3dvcmRzX2NoZWNrZXIvCkVPRgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJExpbmUgPX4gLzxcL1RhYmxlLyApIHsKICAgICAgICAgICAgICAgICRUYWJsZUNyZWF0ZSA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/Hunspell/Dictionaries/en_US.aff" Permission="660" Encode="Base64">U0VUIFVURi04ClRSWSBlc2lhbnJ0b2xjZHVnbXBoYnlmdmt3ekVTSUFOUlRPTENEVUdNUEhCWUZWS1daJwpJQ09OViAxCklDT05WIOKAmSAnCk5PU1VHR0VTVCAhCgojIG9yZGluYWwgbnVtYmVycwpDT01QT1VORE1JTiAxCiMgb25seSBpbiBjb21wb3VuZHM6IDF0aCwgMnRoLCAzdGgKT05MWUlOQ09NUE9VTkQgYwojIGNvbXBvdW5kIHJ1bGVzOgojIDEuIFswLTldKjFbMC05XXRoICgxMHRoLCAxMXRoLCAxMnRoLCA1NjcxNHRoLCBldGMuKQojIDIuIFswLTldKlswMi05XSgxc3R8Mm5kfDNyZHxbNC05XXRoKSAoMjFzdCwgMjJuZCwgMTIzcmQsIDEyMzR0aCwgZXRjLikKQ09NUE9VTkRSVUxFIDIKQ09NUE9VTkRSVUxFIG4qMXQKQ09NUE9VTkRSVUxFIG4qbXAKV09SRENIQVJTIDAxMjM0NTY3ODkKClBGWCBBIFkgMQpQRlggQSAgIDAgICAgIHJlICAgICAgICAgLgoKUEZYIEkgWSAxClBGWCBJICAgMCAgICAgaW4gICAgICAgICAuCgpQRlggVSBZIDEKUEZYIFUgICAwICAgICB1biAgICAgICAgIC4KClBGWCBDIFkgMQpQRlggQyAgIDAgICAgIGRlICAgICAgICAgIC4KClBGWCBFIFkgMQpQRlggRSAgIDAgICAgIGRpcyAgICAgICAgIC4KClBGWCBGIFkgMQpQRlggRiAgIDAgICAgIGNvbiAgICAgICAgIC4KClBGWCBLIFkgMQpQRlggSyAgIDAgICAgIHBybyAgICAgICAgIC4KClNGWCBWIE4gMgpTRlggViAgIGUgICAgIGl2ZSAgICAgICAgZQpTRlggViAgIDAgICAgIGl2ZSAgICAgICAgW15lXQoKU0ZYIE4gWSAzClNGWCBOICAgZSAgICAgaW9uICAgICAgICBlClNGWCBOICAgeSAgICAgaWNhdGlvbiAgICB5IApTRlggTiAgIDAgICAgIGVuICAgICAgICAgW15leV0gCgpTRlggWCBZIDMKU0ZYIFggICBlICAgICBpb25zICAgICAgIGUKU0ZYIFggICB5ICAgICBpY2F0aW9ucyAgIHkKU0ZYIFggICAwICAgICBlbnMgICAgICAgIFteZXldCgpTRlggSCBOIDIKU0ZYIEggICB5ICAgICBpZXRoICAgICAgIHkKU0ZYIEggICAwICAgICB0aCAgICAgICAgIFteeV0gCgpTRlggWSBZIDEKU0ZYIFkgICAwICAgICBseSAgICAgICAgIC4KClNGWCBHIFkgMgpTRlggRyAgIGUgICAgIGluZyAgICAgICAgZQpTRlggRyAgIDAgICAgIGluZyAgICAgICAgW15lXSAKClNGWCBKIFkgMgpTRlggSiAgIGUgICAgIGluZ3MgICAgICAgZQpTRlggSiAgIDAgICAgIGluZ3MgICAgICAgW15lXQoKU0ZYIEQgWSA0ClNGWCBEICAgMCAgICAgZCAgICAgICAgICBlClNGWCBEICAgeSAgICAgaWVkICAgICAgICBbXmFlaW91XXkKU0ZYIEQgICAwICAgICBlZCAgICAgICAgIFteZXldClNGWCBEICAgMCAgICAgZWQgICAgICAgICBbYWVpb3VdeQoKU0ZYIFQgTiA0ClNGWCBUICAgMCAgICAgc3QgICAgICAgICBlClNGWCBUICAgeSAgICAgaWVzdCAgICAgICBbXmFlaW91XXkKU0ZYIFQgICAwICAgICBlc3QgICAgICAgIFthZWlvdV15ClNGWCBUICAgMCAgICAgZXN0ICAgICAgICBbXmV5XQoKU0ZYIFIgWSA0ClNGWCBSICAgMCAgICAgciAgICAgICAgICBlClNGWCBSICAgeSAgICAgaWVyICAgICAgICBbXmFlaW91XXkKU0ZYIFIgICAwICAgICBlciAgICAgICAgIFthZWlvdV15ClNGWCBSICAgMCAgICAgZXIgICAgICAgICBbXmV5XQoKU0ZYIFogWSA0ClNGWCBaICAgMCAgICAgcnMgICAgICAgICBlClNGWCBaICAgeSAgICAgaWVycyAgICAgICBbXmFlaW91XXkKU0ZYIFogICAwICAgICBlcnMgICAgICAgIFthZWlvdV15ClNGWCBaICAgMCAgICAgZXJzICAgICAgICBbXmV5XQoKU0ZYIFMgWSA0ClNGWCBTICAgeSAgICAgaWVzICAgICAgICBbXmFlaW91XXkKU0ZYIFMgICAwICAgICBzICAgICAgICAgIFthZWlvdV15ClNGWCBTICAgMCAgICAgZXMgICAgICAgICBbc3h6aF0KU0ZYIFMgICAwICAgICBzICAgICAgICAgIFtec3h6aHldCgpTRlggUCBZIDMKU0ZYIFAgICB5ICAgICBpbmVzcyAgICAgIFteYWVpb3VdeQpTRlggUCAgIDAgICAgIG5lc3MgICAgICAgW2FlaW91XXkKU0ZYIFAgICAwICAgICBuZXNzICAgICAgIFteeV0KClNGWCBNIFkgMQpTRlggTSAgIDAgICAgICdzICAgICAgICAgLgoKU0ZYIEIgWSAzClNGWCBCICAgMCAgICAgYWJsZSAgICAgICBbXmFlaW91XQpTRlggQiAgIDAgICAgIGFibGUgICAgICAgZWUKU0ZYIEIgICBlICAgICBhYmxlICAgICAgIFteYWVpb3VdZQoKU0ZYIEwgWSAxClNGWCBMICAgMCAgICAgbWVudCAgICAgICAuCgpSRVAgOTAKUkVQIGEgZWkKUkVQIGVpIGEKUkVQIGEgZXkKUkVQIGV5IGEKUkVQIGFpIGllClJFUCBpZSBhaQpSRVAgYWxvdCBhX2xvdApSRVAgYXJlIGFpcgpSRVAgYXJlIGVhcgpSRVAgYXJlIGVpcgpSRVAgYWlyIGFyZQpSRVAgYWlyIGVyZQpSRVAgZXJlIGFpcgpSRVAgZXJlIGVhcgpSRVAgZXJlIGVpcgpSRVAgZWFyIGFyZQpSRVAgZWFyIGFpcgpSRVAgZWFyIGVyZQpSRVAgZWlyIGFyZQpSRVAgZWlyIGVyZQpSRVAgY2ggdGUKUkVQIHRlIGNoClJFUCBjaCB0aQpSRVAgdGkgY2gKUkVQIGNoIHR1ClJFUCB0dSBjaApSRVAgY2ggcwpSRVAgcyBjaApSRVAgY2ggawpSRVAgayBjaApSRVAgZiBwaApSRVAgcGggZgpSRVAgZ2ggZgpSRVAgZiBnaApSRVAgaSBpZ2gKUkVQIGlnaCBpClJFUCBpIHV5ClJFUCB1eSBpClJFUCBpIGVlClJFUCBlZSBpClJFUCBqIGRpClJFUCBkaSBqClJFUCBqIGdnClJFUCBnZyBqClJFUCBqIGdlClJFUCBnZSBqClJFUCBzIHRpClJFUCB0aSBzClJFUCBzIGNpClJFUCBjaSBzClJFUCBrIGNjClJFUCBjYyBrClJFUCBrIHF1ClJFUCBxdSBrClJFUCBrdyBxdQpSRVAgbyBlYXUKUkVQIGVhdSBvClJFUCBvIGV3ClJFUCBldyBvClJFUCBvbyBldwpSRVAgZXcgb28KUkVQIGV3IHVpClJFUCB1aSBldwpSRVAgb28gdWkKUkVQIHVpIG9vClJFUCBldyB1ClJFUCB1IGV3ClJFUCBvbyB1ClJFUCB1IG9vClJFUCB1IG9lClJFUCBvZSB1ClJFUCB1IGlldQpSRVAgaWV1IHUKUkVQIHVlIGV3ClJFUCBldyB1ZQpSRVAgdWZmIG91Z2gKUkVQIG9vIGlldQpSRVAgaWV1IG9vClJFUCBpZXIgZWFyClJFUCBlYXIgaWVyClJFUCBlYXIgYWlyClJFUCBhaXIgZWFyClJFUCB3IHF1ClJFUCBxdSB3ClJFUCB6IHNzClJFUCBzcyB6ClJFUCBzaHVuIHRpb24KUkVQIHNodW4gc2lvbgpSRVAgc2h1biBjaW9uClJFUCBzaXplIGNpc2UK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/Hunspell/Dictionaries/en_US.dic" Permission="660" Encode="Base64">NDg5NzQKMC9ubQowdGgvcHQKMS9uMQoxc3QvcAoxdGgvdGMKMi9ubQoybmQvcAoydGgvdGMKMy9ubQozcmQvcAozdGgvdGMKNC9ubQo0dGgvcHQKNS9ubQo1dGgvcHQKNi9ubQo2dGgvcHQKNy9ubQo3dGgvcHQKOC9ubQo4dGgvcHQKOS9ubQo5dGgvcHQKQS9TTQpBQS9NCkFBQQpBQi9NCkFCQQpBQkMvU00KQUJNL1NNCkFCUwpBQy9NCkFDTFUvTQpBQ1QKQUNUSC9NCkFEL00KQURDCkFERApBRE0KQURQL00KQUYKQUZBSUsKQUZCCkFGQy9NCkFGREMKQUZOCkFGVApBSS9TTQpBSURTL00KQUsKQUwKQU0vTQpBTUEKQU1EL00KQU5TSS9TCkFOWlVTL00KQU9ML00KQVAvTQpBUEIKQVBDCkFQSQpBUE8KQVBSCkFSCkFSQwpBU0FQCkFTQ0lJL1NNCkFTTC9NCkFTUENBCkFUTS9NCkFUUC9NCkFUVgpBVgpBVkkKQVdBQ1MvTQpBV09ML00KQVovTQpBWlQvTQpBYWNoZW4vTQpBYWxpeWFoL00KQWFyb24vTQpBYmJhcy9NCkFiYmFzaWQvTQpBYmJvdHQvTQpBYmJ5L00KQWJkdWwvTQpBYmUvTQpBYmVsL00KQWJlbGFyZC9NCkFiZWxzb24vTQpBYmVyZGVlbi9NCkFiZXJuYXRoeS9NCkFiaWRqYW4vTQpBYmlnYWlsL00KQWJpbGVuZS9NCkFibmVyL00KQWJvcmlnaW5lL01TCkFicmFoYW0vTQpBYnJhbS9NUwpBYnJhbXMvTQpBYnNhbG9tL00KQWJ1amEvTQpBYnlzc2luaWEvTQpBYnlzc2luaWFuL00KQWMvTQpBY2FkaWEvTQpBY2FwdWxjby9NCkFjY2VudHVyZS9NCkFjY3JhL00KQWNldmVkby9NCkFjaGFlYW4vTQpBY2hlYmUvTQpBY2hlcm5hci9NCkFjaGVzb24vTQpBY2hpbGxlcy9NCkFjb25jYWd1YS9NCkFjb3N0YS9NCkFjcm9wb2xpcwpBY3J1eC9NCkFjdGFlb24vTQpBY3Rvbi9NCkFjdHMvTQpBY3VmZi9NCkFkYS9TTQpBZGFtL1NNCkFkYW1zL00KQWRhbi9NCkFkYW5hL00KQWRhci9NCkFkZGFtcy9NCkFkZGVybGV5L00KQWRkaWUvTQpBZGRpc29uL00KQWRlbGEvTQpBZGVsYWlkZS9NCkFkZWxlL00KQWRlbGluZS9NCkFkZW4vTQpBZGVuYXVlci9NCkFkaGFyYS9NCkFkaWRhcy9NCkFkaXJvbmRhY2svU00KQWRpcm9uZGFja3MvTQpBZGtpbnMvTQpBZGxlci9NCkFkbQpBZG1pcmFsdHkKQWRvbGYvTQpBZG9sZm8vTQpBZG9scGgvTQpBZG9uaXMvTVMKQWRyZW5hbGluL01TCkFkcmlhbi9NCkFkcmlhbmEvTQpBZHJpYXRpYy9NCkFkcmllbm5lL00KQWR2ZW50L01TCkFkdmVudGlzdC9NUwpBZHZpbC9NCkFlZ2Vhbi9NCkFlbGZyaWMvTQpBZW5lYXMvTQpBZW5laWQvTQpBZW9sdXMvTQpBZXJvZmxvdC9NCkFlc2NoeWx1cy9NCkFlc2N1bGFwaXVzL00KQWVzb3AvTQpBZmdoYW4vU00KQWZnaGFuaS9NCkFmZ2hhbmlzdGFuL00KQWZyCkFmcmljYS9NCkFmcmljYW4vU00KQWZyaWthYW5zL00KQWZyaWthbmVyL1NNCkFmcm8vU00KQWZyb2NlbnRyaWMKQWZyb2NlbnRyaXNtL00KQWcvTQpBZ2FtZW1ub24vTQpBZ2FuYQpBZ2Fzc2kvTQpBZ2Fzc2l6L00KQWdhdGhhL00KQWdnaWUvTQpBZ2xhaWEvTQpBZ25lcy9NCkFnbmV3L00KQWduaS9NCkFncmEvTQpBZ3JpY29sYS9NCkFncmlwcGEvTQpBZ3JpcHBpbmEvTQpBZ3Vhc2NhbGllbnRlcwpBZ3VpbGFyL00KQWd1aW5hbGRvL00KQWd1aXJyZS9NCkFndXN0aW4vTQpBaGFiL00KQWhtYWQvTQpBaG1hZGFiYWQvTQpBaG1hZGluZWphZC9NCkFobWVkL00KQWhyaW1hbi9NCkFpZGEvTQpBaWtlbi9NCkFpbGVlbi9NCkFpbWVlL00KQWludS9NCkFpcmVkYWxlL01TCkFpcmVzL00KQWlzaGEvTQpBamF4L00KQWtiYXIvTQpBa2htYXRvdmEvTQpBa2loaXRvL00KQWtpdGEvTQpBa2l2YS9NCkFra2FkL00KQWtyb24vTQpBbC9NCkFsYS9TCkFsYWJhbWEvTQpBbGFiYW1hbi9NUwpBbGFiYW1pYW4vU00KQWxhZGRpbi9NCkFsYW1vL00KQWxhbW9nb3Jkby9NCkFsYW4vTQpBbGFuYS9NCkFsYXIvTQpBbGFyaWMvTQpBbGFza2EvTQpBbGFza2FuL01TCkFsYmEvTQpBbGJhbmlhL00KQWxiYW5pYW4vTVMKQWxiYW55L00KQWxiZWUvTQpBbGJlcmlvL00KQWxiZXJ0L00KQWxiZXJ0YS9NCkFsYmVydGFuCkFsYmVydG8vTQpBbGJpZ2Vuc2lhbi9NCkFsYmlvbi9NCkFsYmlyZW8vTQpBbGJ1cXVlcnF1ZS9NCkFsY2F0cmF6L00KQWxjZXN0aXMvTQpBbGNpYmlhZGVzL00KQWxjaW5kb3IvTQpBbGNtZW5hL00KQWxjb2EvTQpBbGNvdHQvTQpBbGN1aW4vTQpBbGN5b25lL00KQWxkYW4vTQpBbGRlYmFyYW4vTQpBbGRlbi9NCkFsZGVyYW1pbi9NCkFsZG8vTQpBbGRyaW4vTQpBbGVjL00KQWxlaWNoZW0vTQpBbGVqYW5kcmEvTQpBbGVqYW5kcm8vTQpBbGVtYmVydC9NCkFsZXBwby9NCkFsZXV0L01TCkFsZXV0aWFuL1NNCkFsZXgvTQpBbGV4YW5kZXIvTVMKQWxleGFuZHJhL00KQWxleGFuZHJpYS9NCkFsZXhhbmRyaWFuCkFsZXhlaS9NCkFsZXhpcy9NCkFsZm9uc28vTQpBbGZvbnpvL00KQWxmb3JkL00KQWxmcmVkL00KQWxmcmVkYS9NCkFsZnJlZG8vTQpBbGdlbmliL00KQWxnZXIvTQpBbGdlcmlhL00KQWxnZXJpYW4vU00KQWxnaWViYS9NCkFsZ2llcnMvTQpBbGdvbC9NCkFsZ29ucXVpYW4vU00KQWxnb25xdWluL01TCkFsaGFtYnJhL00KQWxoZW5hL00KQWxpL00KQWxpY2UvTQpBbGljaWEvTQpBbGlnaGllcmkvTQpBbGluZS9NCkFsaW90aC9NCkFsaXNhL00KQWxpc2hhL00KQWxpc29uL00KQWxpc3NhL00KQWxpc3RhaXIvTQpBbGthaWQvTQpBbGxhaC9NCkFsbGFoYWJhZC9NCkFsbGFuL00KQWxsZWdoZW5pZXMvTQpBbGxlZ2hlbnkvU00KQWxsZWdyYS9NCkFsbGVuL00KQWxsZW5kZS9NCkFsbGVudG93bi9NCkFsbGhhbGxvd3MvTQpBbGxpZS9NUwpBbGxpc29uL00KQWxsc3RhdGUvTQpBbGx5c29uL00KQWxtYS9NCkFsbWFjaC9NCkFsbWF0eS9NCkFsbWlnaHR5L00KQWxtb2hhZC9NCkFsbW9yYXZpZC9NCkFsbmlsYW0vTQpBbG5pdGFrL00KQWxvbnpvL00KQWxwZXJ0L00KQWxwaGFyZC9NCkFscGhlY2NhL00KQWxwaGVyYXR6L00KQWxwaG9uc2UvTQpBbHBob25zby9NCkFscGluZS9NCkFscG8vTQpBbHBzL00KQWxzYWNlL00KQWxzYXRpYW4vU00KQWxzb3AvTQpBbHN0b24vTQpBbHRhL00KQWx0YWkvTQpBbHRhaWMvTQpBbHRhaXIvTQpBbHRhbWlyYS9NCkFsdGhlYS9NCkFsdGlwbGFuby9NCkFsdG1hbi9NCkFsdG9pZHMvTQpBbHRvbi9NCkFsdWRyYS9NCkFsdmEvTQpBbHZhcmFkby9NCkFsdmFyZXovTQpBbHZhcm8vTQpBbHZpbi9NCkFseWNlL00KQWx5c29uL00KQWx5c3NhL00KQWx6aGVpbWVyL00KQW0vTU5SCkFtYWRldXMvTQpBbWFkby9NCkFtYWxpYS9NCkFtYW5kYS9NCkFtYXJpbGxvL00KQW1hcnUvTQpBbWF0ZXJhc3UvTQpBbWF0aS9NCkFtYXpvbi9TTQpBbWF6b25pYW4KQW1iZXIvTQpBbWVsaWEvTQpBbWVuL00KQW1lbmhvdGVwL00KQW1lcmFzaWFuL00KQW1lcmljYS9TTQpBbWVyaWNhbi9NUwpBbWVyaWNhbmEvTQpBbWVyaWNhbmlzbS9NUwpBbWVyaWNhbml6YXRpb24vTVMKQW1lcmljYW5pemUvR0RTCkFtZXJpbmQvU00KQW1lcmluZGlhbi9NUwpBbWVzbGFuL00KQW1oYXJpYy9NCkFtaGVyc3QvTQpBbWllL00KQW1pZ2EvTQpBbWlzaC9NCkFtbWFuL00KQW1vY28vTQpBbW9zL00KQW1wYXJvL00KQW1wZXJlL00KQW1yaXRzYXIvTQpBbXN0ZXJkYW0vTQpBbXRyYWsvTQpBbXVuZHNlbi9NCkFtdXIvTQpBbXdheS9NCkFteS9NCkFuYS9NCkFuYWJhcHRpc3QvTQpBbmFiZWwvTQpBbmFjaW4vTQpBbmFjcmVvbi9NCkFuYWhlaW0vTQpBbmFsZWN0cy9NCkFuYW5pYXMvTQpBbmFzYXppL00KQW5hc3Rhc2lhL00KQW5hdG9sZS9NCkFuYXRvbGlhL00KQW5hdG9saWFuL00KQW5heGFnb3Jhcy9NCkFuY2hvcmFnZS9NCkFuZGFsdXNpYS9NCkFuZGFsdXNpYW4vTQpBbmRhbWFuL00KQW5kZWFuL00KQW5kZXJzZW4vTQpBbmRlcnNvbi9NCkFuZGVzL00KQW5kb3JyYS9NCkFuZG9ycmFuL1NNCkFuZHJlL01TCkFuZHJlYS9NCkFuZHJlaS9NCkFuZHJlcy9NCkFuZHJldHRpL00KQW5kcmV3L1NNCkFuZHJld3MvTQpBbmRyaWFuYW1wb2luaW1lcmluYS9NCkFuZHJvaWQvTQpBbmRyb21hY2hlL00KQW5kcm9tZWRhL00KQW5kcm9wb3YvTQpBbmR5L00KQW5nYXJhL00KQW5nZWwvTQpBbmdlbGEvTQpBbmdlbGVzL00KQW5nZWxpYS9NCkFuZ2VsaWNhL00KQW5nZWxpY28vTQpBbmdlbGluYS9NCkFuZ2VsaW5lL00KQW5nZWxpcXVlL00KQW5nZWxpdGEvTQpBbmdlbG8vTQpBbmdlbG91L00KQW5nZXZpbi9NCkFuZ2llL00KQW5na29yL00KQW5nbGUvTVMKQW5nbGlhL00KQW5nbGljYW4vU00KQW5nbGljYW5pc20vTVMKQW5nbGljaXNtL01TCkFuZ2xpY2l6YXRpb24KQW5nbGljaXplCkFuZ2xvL00KQW5nbG9waGlsZS9NCkFuZ2xvcGhvYmUKQW5nb2xhL00KQW5nb2xhbi9NUwpBbmdvcmEvU00KQW5nc3Ryb20vTQpBbmd1aWxsYS9NCkFuZ3VzL00KQW5pYWtjaGFrL00KQW5pYmFsL00KQW5pdGEvTQpBbmthcmEvTQpBbm4vTQpBbm5hL00KQW5uYWJlbC9NCkFubmFiZWxsZS9NCkFubmFtL00KQW5uYXBvbGlzL00KQW5uYXB1cm5hL00KQW5uZS9NCkFubmV0dGUvTQpBbm5pZS9NCkFubm1hcmllL00KQW5udW5jaWF0aW9uL1NNCkFub3VpbGgvTQpBbnNlbG0vTQpBbnNlbG1vL00KQW5zaGFuL00KQW50YWV1cy9NCkFudGFuYW5hcml2by9NCkFudGFyY3RpYy9NCkFudGFyY3RpY2EvTQpBbnRhcmVzL00KQW50aG9ueS9NCkFudGhyb3BvY2VuZQpBbnRpY2hyaXN0L1NNCkFudGlldGFtL00KQW50aWdvbmUvTQpBbnRpZ3VhL00KQW50aWxsZWFuCkFudGlsbGVzL00KQW50aW9jaC9NCkFudGlwYXMvTQpBbnRpcG9kZXMKQW50b2ZhZ2FzdGEvTQpBbnRvaW5lL00KQW50b2luZXR0ZS9NCkFudG9uL00KQW50b25lL00KQW50b25pYS9NCkFudG9uaW51cy9NCkFudG9uaW8vTQpBbnRvbml1cy9NCkFudG9ueS9NCkFudHdhbi9NCkFudHdlcnAvTQpBbnViaXMvTQpBbnphYy9NCkFwYWNoZS9TTQpBcGFsYWNoaWNvbGEvTQpBcGF0b3NhdXJ1cwpBcGVubmluZXMvTQpBcGhyb2RpdGUvTQpBcGlhL00KQXBvY2FseXBzZS9NCkFwb2NyeXBoYS9NCkFwb2xsaW5haXJlL00KQXBvbGxvL1NNCkFwb2xsb25pYW4vTQpBcG9zdGxlL00KQXBwYWxhY2hpYS9NCkFwcGFsYWNoaWFuL1NNCkFwcGFsYWNoaWFucy9NCkFwcGFsb29zYS9TTQpBcHBsZS9NCkFwcGxlc2VlZC9NCkFwcGxldG9uL00KQXBwb21hdHRveC9NCkFwci9NCkFwcmlsL01TCkFwdWxlaXVzL00KQXF1YWZyZXNoL00KQXF1YXJpYW4KQXF1YXJpdXMvTVMKQXF1aWxhL00KQXF1aW5hcy9NCkFxdWluby9NCkFxdWl0YWluZS9NCkFyL00KQXJhL00KQXJhYi9TTQpBcmFiaWEvTQpBcmFiaWFuL01TCkFyYWJpYy9NCkFyYWJpc3QvTVMKQXJhYnkvTQpBcmFjZWxpL00KQXJhZmF0L00KQXJhZ29uCkFyYWd1YXlhL00KQXJhbC9NCkFyYW1haWMvTQpBcmFtY28vTQpBcmFwYWhvL01TCkFyYXBhaG9lcwpBcmFyYXQvTQpBcmF1Y2FuaWFuL00KQXJhd2FrL00KQXJhd2FrYW4vTQpBcmJpdHJvbi9NCkFyY2FkaWEvTQpBcmNhZGlhbi9NCkFyY2hlYW4vTQpBcmNoaWJhbGQvTQpBcmNoaWUvTQpBcmNoaW1lZGVzL00KQXJjdGljL00KQXJjdHVydXMvTQpBcmRhYmlsCkFyZGVuL00KQXJlcXVpcGEvTQpBcmVzL00KQXJnZW50aW5hL00KQXJnZW50aW5lL00KQXJnZW50aW5lYW4KQXJnZW50aW5pYW4vTVMKQXJnby9TTQpBcmdvbmF1dC9NUwpBcmdvbm5lL00KQXJnb3MvTQpBcmd1cy9NCkFyaWFkbmUvTQpBcmlhbmlzbS9NCkFyaWVsL00KQXJpZXMvTVMKQXJpb3N0by9NCkFyaXN0YXJjaHVzL00KQXJpc3RpZGVzL00KQXJpc3RvcGhhbmVzL00KQXJpc3RvdGVsaWFuL00KQXJpc3RvdGxlL00KQXJpdXMvTQpBcml6CkFyaXpvbmEvTQpBcml6b25hbi9TTQpBcml6b25pYW4vTVMKQXJqdW5hL00KQXJrL00KQXJrYW5zYW4vTVMKQXJrYW5zYXMvTQpBcmtoYW5nZWxzay9NCkFya3dyaWdodC9NCkFybGVuZS9NCkFybGluZS9NCkFybGluZ3Rvbi9NCkFybWFnZWRkb24vU00KQXJtYWduYWMvTQpBcm1hbmQvTQpBcm1hbmRvL00KQXJtYW5pL00KQXJtZW5pYS9NCkFybWVuaWFuL1NNCkFybWluaXVzL00KQXJtb25rL00KQXJtb3VyL00KQXJtc3Ryb25nL00KQXJuZWIvTQpBcm5oZW0vTQpBcm5vL00KQXJub2xkL00KQXJudWxmby9NCkFyb24vTQpBcnJoZW5pdXMvTQpBcnJvbi9NCkFydC9NCkFydGF4ZXJ4ZXMvTQpBcnRlbWlzL00KQXJ0aHVyL00KQXJ0aHVyaWFuL00KQXJ0aWUvTQpBcnR1cm8vTQpBcnViYS9NCkFyeWFuL01TCkFzL00KQXNhbWEvTQpBc2NlbGxhL00KQXNjZW5zaW9uL00KQXNnYXJkL00KQXNoYW50aS9NCkFzaGNyb2Z0L00KQXNoZS9NCkFzaGdhYmF0CkFzaGlrYWdhL00KQXNoa2VuYXppbS9NCkFzaGtoYWJhZC9NCkFzaGxlZS9NCkFzaGxleS9NCkFzaG1vbGVhbi9NCkFzaHVyYmFuaXBhbC9NCkFzaWEvTQpBc2lhZ28KQXNpYW4vTVMKQXNpYXRpYy9TTQpBc2ltb3YvTQpBc21hcmEvTQpBc29rYS9NCkFzcGVsbC9NCkFzcGVuL00KQXNwZXJnZXIvTQpBc3BpZGlza2UvTQpBc3F1aXRoL00KQXNzYWQvTQpBc3NhbS9NCkFzc2FtZXNlL00KQXNzZW1ibHkKQXNzaXNpL00KQXNzeXJpYS9NCkFzc3lyaWFuL1NNCkFzdGFpcmUvTQpBc3RhbmEvTQpBc3RhcnRlL00KQXN0b24vTQpBc3Rvci9NCkFzdG9yaWEvTQpBc3RyYWtoYW4vTQpBc3Ryb1R1cmYvTQpBc3R1cmlhcy9NCkFzdW5jaW9uL00KQXN3YW4vTQpBdC9TTQpBdGFjYW1hL00KQXRhaHVhbHBhL00KQXRhbGFudGEvTQpBdGFyaS9NCkF0YXR1cmsvTQpBdGhhYmFzY2EvTQpBdGhhYmFza2FuL1NNCkF0aGFuYXNpdXMKQXRoZW5hL00KQXRoZW5lL00KQXRoZW5pYW4vU00KQXRoZW5zL00KQXRraW5zL00KQXRraW5zb24vTQpBdGxhbnRhL00KQXRsYW50ZXMKQXRsYW50aWMvTQpBdGxhbnRpcy9NCkF0bGFzL01TCkF0bWFuL00KQXRvbmVtZW50CkF0cmV1cy9NCkF0cmlhL00KQXRyb3Bvcy9NCkF0dGljL00KQXR0aWNhL00KQXR0aWxhL00KQXR0bGVlL00KQXR0bgpBdHR1Y2tzL00KQXR3b29kL00KQXUvTQpBdWJyZXkvTQpBdWNrbGFuZC9NCkF1ZGVuL00KQXVkaS9NCkF1ZGlvbi9NCkF1ZHJhL00KQXVkcmV5L00KQXVkdWJvbi9NCkF1Zy9NCkF1Z2Vhbi9NCkF1Z3NidXJnL00KQXVndXN0L01TCkF1Z3VzdGEvTQpBdWd1c3Rhbi9NCkF1Z3VzdGluZS9NCkF1Z3VzdGluaWFuL01TCkF1Z3VzdHVzL00KQXVyYW5nemViL00KQXVyZWxpYS9NCkF1cmVsaW8vTQpBdXJlbGl1cy9NCkF1cmVvbXljaW4vTQpBdXJpZ2EvTQpBdXJvcmEvTQpBdXNjaHdpdHovTQpBdXNzaWUvTVMKQXVzdGVuL00KQXVzdGVybGl0ei9NCkF1c3Rpbi9NUwpBdXN0cmFsYXNpYS9NCkF1c3RyYWxhc2lhbgpBdXN0cmFsaWEvTQpBdXN0cmFsaWFuL1NNCkF1c3RyYWxvaWQvTQpBdXN0cmFsb3BpdGhlY3VzL00KQXVzdHJpYS9NCkF1c3RyaWFuL1NNCkF1c3Ryb25lc2lhbi9NCkF1dHVtbi9NCkF2L00KQXZhL00KQXZhbG9uL00KQXZlL00KQXZlbnRpbmUvTQpBdmVybnVzL00KQXZlcnJvZXMvTQpBdmVyeS9NCkF2ZXN0YS9NCkF2aWNlbm5hL00KQXZpZ25vbi9NCkF2aWxhL00KQXZpb3IvTQpBdmlzL00KQXZvZ2Fkcm8vTQpBdm9uL00KQXhpcwpBeHVtL00KQXlhbGEvTQpBeWVycy9NCkF5bWFyYS9NCkF5cnNoaXJlL00KQXl1cnZlZGEvTQpBeXl1YmlkL00KQXphbmEvTQpBemFuaWEvTQpBemF6ZWwvTQpBemVyYmFpamFuL00KQXplcmJhaWphbmkvTVMKQXpvcmVzL00KQXpvdi9NCkF6dGVjL1NNCkF6dGVjYW4vTQpBenRsYW4vTQpCL01OVApCQS9NCkJBU0lDL1NNCkJCL00KQkJCL00KQkJDL00KQkJRCkJCUwpCQlNlcwpCQy9NCkJGRgpCSUEKQklPUwpCSVRORVQKQkxUL1NNCkJNL00KQk1XL00KQk8KQlAvTQpCUE9FCkJSCkJTL00KQlNBCkJTRC9TTQpCVFUKQlRXCkJZT0IKQmEvTQpCYWFsL1NNCkJhYXRoL00KQmFhdGhpc3QvTQpCYWJiYWdlL00KQmFiYml0dC9NCkJhYmVsL01TCkJhYnlsb24vTVMKQmFieWxvbmlhL00KQmFieWxvbmlhbi9TTQpCYWNhbGwvTQpCYWNhcmRpL00KQmFjY2hhbmFsaWEvTQpCYWNjaGljCkJhY2NodXMvTQpCYWNoL00KQmFja3VzL00KQmFjb24vTQpCYWN0cmlhL00KQmFkZW4vTQpCYWRsYW5kcy9NCkJhZWRla2VyL01TCkJhZXovTQpCYWZmaW4vTQpCYWdnaWVzL00KQmFnaGRhZC9NCkJhZ3Vpby9NCkJhaGEnaS9NCkJhaGEndWxsYWgvTQpCYWhhbWEvU00KQmFoYW1hbmlhbgpCYWhhbWFzL00KQmFoYW1pYW4vTVMKQmFoaWEvTQpCYWhyYWluL00KQmFpa2FsL00KQmFpbGV5L00KQmFpcmQvTQpCYWtlbGl0ZS9NCkJha2VyL00KQmFrZXJzZmllbGQvTQpCYWt1L00KQmFrdW5pbi9NCkJhbGFuY2hpbmUvTQpCYWxhdG9uL00KQmFsYm9hL00KQmFsZGVyL00KQmFsZHdpbi9TTQpCYWxlYXJpYy9NCkJhbGZvdXIvTQpCYWxpL00KQmFsaW5lc2UvTQpCYWxrYW4vTVMKQmFsa2Fucy9NCkJhbGtoYXNoL00KQmFsbC9NCkJhbGxhcmQvTQpCYWx0aGF6YXIvTQpCYWx0aWMvTQpCYWx0aW1vcmUvTQpCYWx1Y2hpc3Rhbi9NCkJhbHphYy9NCkJhbWFrby9NCkJhbWJpL00KQmFuYWNoL00KQmFuY3JvZnQvTQpCYW5kdW5nL00KQmFuZ2Fsb3JlL00KQmFuZ2tvay9NCkJhbmdsYWRlc2gvTQpCYW5nbGFkZXNoaS9TTQpCYW5nb3IvTQpCYW5ndWkvTQpCYW5qYXJtYXNpbi9NCkJhbmp1bC9NCkJhbmtzL00KQmFubmVrZXIvTQpCYW5uaXN0ZXIvTQpCYW50aW5nL00KQmFudHUvTVMKQmFvdG91L00KQmFwdGlzdC9TTQpCYXB0aXN0ZS9NCkJhcmFiYmFzL00KQmFyYWNrL00KQmFyYmFkaWFuL1NNCkJhcmJhZG9zL00KQmFyYmFyYS9NCkJhcmJhcmVsbGEvTQpCYXJiYXJvc3NhL00KQmFyYmFyeS9NCkJhcmJlci9NCkJhcmJpZS9NCkJhcmJvdXIvTQpCYXJicmEvTQpCYXJidWRhL00KQmFyY2Vsb25hL00KQmFyY2xheS9TTQpCYXJjbGF5cy9NCkJhcmRlZW4vTQpCYXJlbnRzL00KQmFya2VyL00KQmFya2xleS9NCkJhcmxvdy9NCkJhcm5hYmFzL00KQmFybmFieS9NCkJhcm5hcmQvTQpCYXJuYXVsL00KQmFybmVzL00KQmFybmV0dC9NCkJhcm5leS9NCkJhcm51bS9NCkJhcm9kYS9NCkJhcnF1aXNpbWV0by9NCkJhcnIvTQpCYXJyYW5xdWlsbGEvTQpCYXJyZXJhL00KQmFycmV0dC9NCkJhcnJpZS9NCkJhcnJvbi9NCkJhcnJ5L00KQmFycnltb3JlL00KQmFydC9NCkJhcnRoL01TCkJhcnRob2xkaS9NCkJhcnRob2xvbWV3L00KQmFydGxldHQvTQpCYXJ0b2svTQpCYXJ0b24vTQpCYXJ1Y2gvTQpCYXJ5c2huaWtvdi9NCkJhc2VsL00KQmFzaG8vTQpCYXNpZS9NCkJhc2lsL00KQmFzcXVlL01TCkJhc3JhL00KQmFzcy9NCkJhc3NldGVycmUvTQpCYXN0aWxsZS9NCkJhc3V0b2xhbmQvTQpCYXRhYW4vTQpCYXRlcy9NCkJhdGhzaGViYS9NCkJhdGlzdGEvTQpCYXRtYW4vTQpCYXR0bGUvTQpCYXR1L00KQmF1ZGVsYWlyZS9NCkJhdWRvdWluL00KQmF1ZHJpbGxhcmQvTQpCYXVlci9NCkJhdWhhdXMvTQpCYXVtL00KQmF2YXJpYS9NCkJhdmFyaWFuL00KQmF4dGVyL00KQmF5YW1vbgpCYXllci9NCkJheWVzL00KQmF5ZXNpYW4vTQpCYXlldXgvTQpCYXlsb3IvTQpCYXlvbm5lL00KQmF5cmV1dGgvTQpCYXl3YXRjaC9NCkJlL01ICkJlYWNoL00KQmVhZGxlL00KQmVhbi9NCkJlYXJkL00KQmVhcmRtb3JlL00KQmVhcmRzbGV5L00KQmVhcm5haXNlL00KQmVhc2xleS9NCkJlYXRsZW1hbmlhL00KQmVhdGxlcy9NCkJlYXRyaWNlL00KQmVhdHJpeC9NCkJlYXRyaXovTQpCZWF0dHkvTQpCZWF1L00KQmVhdWZvcnQvTQpCZWF1am9sYWlzL00KQmVhdW1hcmNoYWlzL00KQmVhdW1vbnQvTQpCZWF1cmVnYXJkL00KQmVhdXZvaXIvTQpCZWNodGVsL00KQmVjay9NUgpCZWNrZXIvTQpCZWNrZXQvTQpCZWNrZXR0L00KQmVja3kvTQpCZWNxdWVyZWwvTQpCZWRlL00KQmVkb3Vpbi9TTQpCZWViZS9NCkJlZWNoZXIvTQpCZWVmYXJvbmkvTQpCZWVsemVidWIvTQpCZWVyYm9obS9NCkJlZXRob3Zlbi9NCkJlZXRvbi9NCkJlZ2luL00KQmVoYW4vTQpCZWhyaW5nL00KQmVpZGVyYmVja2UvTQpCZWlqaW5nL00KQmVpcnV0L00KQmVrZXN5L00KQmVsYS9NCkJlbGFydXMvTQpCZWxhdS9NCkJlbGVtL00KQmVsZmFzdC9NCkJlbGcKQmVsZ2lhbi9TTQpCZWxnaXVtL00KQmVsZ3JhZGUvTQpCZWxpbmRhL00KQmVsaXplL00KQmVsbC9NCkJlbGxhL00KQmVsbGFteS9NCkJlbGxhdHJpeC9NCkJlbGxlZWsvTQpCZWxsaW5pL00KQmVsbG93L00KQmVsbW9udC9NCkJlbG1vcGFuL00KQmVsb3J1c3NpYW4vTVMKQmVsc2hhenphci9NCkJlbHRhbmUvTQpCZWx1c2hpL00KQmVuL00KQmVuYWNlcnJhZi9NCkJlbmNobGV5L00KQmVuZGVyL00KQmVuZGl4L00KQmVuZWRpY3QvTQpCZW5lZGljdGluZS9NUwpCZW5lbHV4L00KQmVuZXQvTQpCZW5ldHRvbi9NCkJlbmdhbC9TTQpCZW5nYWxpL00KQmVuZ2hhemkvTQpCZW5pbi9NCkJlbmluZXNlL00KQmVuaXRhL00KQmVuaXRvL00KQmVuamFtaW4vTQpCZW5uZXR0L00KQmVubmllL00KQmVubnkvTQpCZW5zb24vTQpCZW50aGFtL00KQmVudGxleS9NCkJlbnRvbi9NCkJlbnovTQpCZW56ZWRyaW5lL00KQmVvd3VsZi9NCkJlcmJlci9TTQpCZXJlbmljZS9NCkJlcmV0dGEvTQpCZXJnL01OUgpCZXJnZW4vTQpCZXJnZXIvTQpCZXJnZXJhYy9NCkJlcmdtYW4vTQpCZXJnc29uL00KQmVyaWEvTQpCZXJpbmcvTQpCZXJrZWxleS9NCkJlcmtzaGlyZS9TTQpCZXJrc2hpcmVzL00KQmVybGUvTQpCZXJsaW4vU1pNUgpCZXJsaW5lci9NCkJlcmxpb3ovTQpCZXJsaXR6L00KQmVybXVkYS9TTQpCZXJtdWRhbi9TTQpCZXJtdWRpYW4vU00KQmVybi9NCkJlcm5hZGV0dGUvTQpCZXJuYWRpbmUvTQpCZXJuYW5rZS9NCkJlcm5hcmQvTQpCZXJuYXJkby9NCkJlcm5heXMvTQpCZXJuYmFjaC9NCkJlcm5lc2UKQmVybmhhcmR0L00KQmVybmljZS9NCkJlcm5pZS9NCkJlcm5pbmkvTQpCZXJub3VsbGkvTQpCZXJuc3RlaW4vTQpCZXJyYS9NCkJlcnJ5L00KQmVydC9NCkJlcnRhL00KQmVydGVsc21hbm4vTQpCZXJ0aGEvTQpCZXJ0aWUvTQpCZXJ0aWxsb24vTQpCZXJ0cmFtL00KQmVydHJhbmQvTQpCZXJ5bC9NCkJlcnplbGl1cy9NCkJlc3MvTQpCZXNzZWwvTQpCZXNzZW1lci9NCkJlc3NpZS9NCkJlc3QvTQpCZXRlbGdldXNlL00KQmV0aC9NCkJldGhhbnkvTQpCZXRoZS9NCkJldGhlc2RhL00KQmV0aGxlaGVtL00KQmV0aHVuZS9NCkJldHN5L00KQmV0dGUvTQpCZXR0aWUvTQpCZXR0eS9NCkJldHR5ZS9NCkJldWxhaC9NCkJldmVyaWRnZQpCZXZlcmxleS9NCkJldmVybHkvTQpCZXllci9NCkJoYXJhdC9NCkJob3BhbC9NCkJodXRhbi9NCkJodXRhbmVzZS9NCkJodXR0by9NCkJpL00KQmlhbHlzdG9rL00KQmlhbmNhL00KQmliCkJpYmxlL01TCkJpYy9NCkJpZGRsZS9NCkJpZGVuL00KQmllcmNlL00KQmlnZm9vdC9NCkJpZ2dsZXMvTQpCaWtvL00KQmlsYmFvL00KQmlsYm8vTQpCaWxsL01KCkJpbGxpZS9NCkJpbGxpbmdzL00KQmlsbHkvTQpCaW1pbmkvTQpCaW9rby9NCkJpcmQvTQpCaXJkc2V5ZS9NCkJpcmtlbnN0b2NrL00KQmlybWluZ2hhbS9NCkJpcm8vTQpCaXNjYXkvTQpCaXNjYXluZS9NCkJpc2hrZWsvTQpCaXNob3AvTQpCaXNtYXJjay9NCkJpc21hcmsvTQpCaXNxdWljay9NCkJpc3NhdS9NCkJpdFRvcnJlbnQvTQpCaXpldC9NCkJqZXJrbmVzL00KQmpvcmsvTQpCay9NCkJsYWNrQmVycnkvTQpCbGFja2JlYXJkL00KQmxhY2tidXJuL00KQmxhY2tmZWV0L00KQmxhY2tmb290L00KQmxhY2twb29sL00KQmxhY2tzaGlydC9NCkJsYWNrc3RvbmUvTQpCbGFja3dlbGwvTQpCbGFpbmUvTQpCbGFpci9NCkJsYWtlL00KQmxhbmNhL00KQmxhbmNoYXJkL00KQmxhbmNoZS9NCkJsYW5rZW5zaGlwL00KQmxhbnR5cmUvTQpCbGF0ei9NCkJsYXZhdHNreS9NCkJsZW5oZWltL00KQmxldmlucy9NCkJsaWdoL00KQmxvY2gvTQpCbG9ja2J1c3Rlci9NCkJsb2VtZm9udGVpbi9NCkJsb25kZWwvTQpCbG9uZGllL00KQmxvb20vTVIKQmxvb21lci9NCkJsb29tZmllbGQvTQpCbG9vbWluZ2RhbGUvTQpCbG9vbXNidXJ5L00KQmx1CkJsdWNoZXIvTQpCbHVlYmVhcmQvTQpCbHVldG9vdGgvTQpCbHZkCkJseXRoZS9NCkJvYWRpY2VhCkJvYXMvTQpCb2IvTQpCb2JiaS9NCkJvYmJpZS9NCkJvYmJpdHQvTQpCb2JieS9NCkJvY2NhY2Npby9NCkJvZGhpZGhhcm1hL00KQm9kaGlzYXR0dmEvTQpCb2RsZWlhbgpCb2VpbmcvTQpCb2VvdGlhL00KQm9lb3RpYW4vTQpCb2VyL1NNCkJvZXRoaXVzL00KQm9nYXJ0L00KQm9nb3RhL00KQm9oZW1pYS9NCkJvaGVtaWFuL1NNCkJvaHIvTQpCb2lzZS9NCkJvamFuZ2xlcy9NCkJvbGV5bi9NCkJvbGl2YXIvTQpCb2xpdmlhL00KQm9saXZpYW4vTVMKQm9sbHl3b29kL00KQm9sb2duYS9NCkJvbHNoZXZpay9TTQpCb2xzaGV2aWtpCkJvbHNoZXZpc20vTQpCb2xzaGV2aXN0L00KQm9sc2hvaS9NCkJvbHRvbi9NCkJvbHR6bWFubi9NCkJvbWJheS9NCkJvbmFwYXJ0ZS9NCkJvbmF2ZW50dXJlL00KQm9uZC9NCkJvbmhvZWZmZXIvTQpCb25pZmFjZS9NCkJvbml0YS9NCkJvbm4vTVIKQm9ubmVyL00KQm9ubmV2aWxsZS9NCkJvbm5pZS9NCkJvbm8vTQpCb29rZXIvTQpCb29sZS9NCkJvb2xlYW4vTQpCb29uZS9NCkJvb3Rlcy9NCkJvb3RoL00KQm9yZGVhdXgvTQpCb3JkZW4vTQpCb3Jkb24vTQpCb3JlYXMvTQpCb3JnL1NNCkJvcmdlcy9NCkJvcmdpYS9NCkJvcmdsdW0vTQpCb3Jpcy9NCkJvcmsvTQpCb3JsYXVnL00KQm9ybi9NCkJvcm5lby9NCkJvcm9idWR1ci9NCkJvcm9kaW4vTQpCb3J1L00KQm9zY2gvTQpCb3NlL00KQm9zbmlhL00KQm9zbmlhbgpCb3Nwb3J1cy9NCkJvc3Rvbi9NUwpCb3N0b25pYW4vTQpCb3N3ZWxsL00KQm90b3gKQm90c3dhbmEvTQpCb3R0aWNlbGxpL00KQm91bGRlci9NCkJvdWxlei9NCkJvdXJiYWtpL00KQm91cmJvbi9TTQpCb3VybmVtb3V0aC9NCkJvdmFyeS9NCkJvd2RpdGNoL00KQm93ZWxsL00KQm93ZW4vTQpCb3dlcnMvTQpCb3dlcnkvTQpCb3dpZS9NCkJvd21hbi9NCkJveWQvTQpCb3llci9NCkJveWxlL00KQnIvTVQKQnJhZC9NWQpCcmFkYnVyeS9NCkJyYWRkb2NrL00KQnJhZGZvcmQvTQpCcmFkbGV5L00KQnJhZGx5L00KQnJhZHNoYXcvTQpCcmFkc3RyZWV0L00KQnJhZHkvTQpCcmFnZy9NCkJyYWhlL00KQnJhaG1hL01TCkJyYWhtYWd1cHRhL00KQnJhaG1hbi9NUwpCcmFobWFuaQpCcmFobWFuaXNtL1NNCkJyYWhtYXB1dHJhL00KQnJhaG1zL00KQnJhaWxsZS9NUwpCcmFpbi9NCkJyYW1wdG9uL00KQnJhbi9NCkJyYW5jaC9NCkJyYW5kZWlzL00KQnJhbmRlbi9NCkJyYW5kZW5idXJnL00KQnJhbmRpL00KQnJhbmRpZS9NCkJyYW5kby9NCkJyYW5kb24vTQpCcmFuZHQvTQpCcmFuZHkvTQpCcmFudC9NCkJyYXF1ZS9NCkJyYXNpbGlhL00KQnJhdGlzbGF2YS9NCkJyYXR0YWluL00KQnJheS9NCkJyYXppbC9NCkJyYXppbGlhbi9NUwpCcmF6b3MvTQpCcmF6emF2aWxsZS9NCkJyZWFrc3BlYXIvTQpCcmVhdGhhbHl6ZXIKQnJlY2h0L00KQnJlY2tlbnJpZGdlL00KQnJlbWVuL00KQnJlbmRhL00KQnJlbmRhbi9NCkJyZW5uYW4vTQpCcmVubmVyL00KQnJlbnQvTQpCcmVudG9uL00KQnJlc3QvTQpCcmV0L00KQnJldG9uL00KQnJldHQvTQpCcmV3ZXIvTQpCcmV3c3Rlci9NCkJyZXpobmV2L00KQnJpYW4vTQpCcmlhbmEvTQpCcmlhbm5hL00KQnJpY2UvTQpCcmlkYWx2ZWlsL00KQnJpZGdlcG9ydC9NCkJyaWRnZXIvTQpCcmlkZ2VzL00KQnJpZGdldC9NCkJyaWRnZXRvd24vTQpCcmlkZ2V0dC9NCkJyaWRnZXR0ZS9NCkJyaWRnbWFuL00KQnJpZS9TTQpCcmlnYWRvb24vTQpCcmlnZ3MvTQpCcmlnaGFtL00KQnJpZ2h0L00KQnJpZ2h0b24vTQpCcmlnaWQvTQpCcmlnaXR0ZS9NCkJyaWxsby9NCkJyaW5rbGV5L00KQnJpc2JhbmUvTQpCcmlzdG9sL00KQnJpdC9TTQpCcml0YWluL00KQnJpdGFubmlhL00KQnJpdGFubmljL00KQnJpdGFubmljYS9NCkJyaXRpY2lzbS9TTQpCcml0aXNoL01SWgpCcml0aXNoZXIvTQpCcml0bmV5L00KQnJpdG9uL01TCkJyaXR0L01OCkJyaXR0YW55L1NNCkJyaXR0ZW4vTQpCcml0dG5leS9NCkJybm8vTQpCcm9hZHdheS9TTQpCcm9iZGluZ25hZy9NCkJyb2JkaW5nbmFnaWFuL00KQnJvY2svTQpCcm9rYXcvTQpCcm9uc29uL00KQnJvbnRlL00KQnJvbnRvc2F1cnVzCkJyb254L00KQnJvb2tlL01TCkJyb29rbHluL00KQnJvb2tzL00KQnJvcwpCcm93bi9NRwpCcm93bmUvTQpCcm93bmlhbi9NCkJyb3duaWUvUwpCcm93bmluZy9NCkJyb3duc2hpcnQvTQpCcm93bnN2aWxsZS9NCkJydWJlY2svTQpCcnVjZS9NCkJydWNrbmVyL00KQnJ1ZWdlbApCcnVtbWVsL00KQnJ1bmVpL00KQnJ1bmVpYW4vTVMKQnJ1bmVsbGVzY2hpL00KQnJ1bmhpbGRlL00KQnJ1bm8vTQpCcnVuc3dpY2svTQpCcnVzc2Vscy9NCkJydXQvTQpCcnV0dXMvTQpCcnlhbi9NCkJyeWFudC9NCkJyeWNlL00KQnJ5bm5lci9NCkJyeW9uL00KQnJ6ZXppbnNraS9NCkJ0dS9NCkJ1YmVyL00KQnVjaGFuYW4vTQpCdWNoYXJlc3QvTQpCdWNoZW53YWxkL00KQnVjaHdhbGQvTQpCdWNrL00KQnVja2luZ2hhbS9NCkJ1Y2tsZXkvTQpCdWNrbmVyL00KQnVkL00KQnVkYXBlc3QvTQpCdWRkaGEvU00KQnVkZGhpc20vU00KQnVkZGhpc3QvU00KQnVkZHkvTQpCdWR3ZWlzZXIvTQpCdWZmYWxvL00KQnVmZnkvTQpCdWZvcmQvTQpCdWdhdHRpL00KQnVnemlsbGEvTQpCdWljay9NCkJ1anVtYnVyYS9NCkJ1a2hhcmEvTQpCdWtoYXJpbi9NCkJ1bGF3YXlvL00KQnVsZmluY2gvTQpCdWxnYW5pbi9NCkJ1bGdhci9NCkJ1bGdhcmkvTQpCdWxnYXJpYS9NCkJ1bGdhcmlhbi9TTQpCdWxsb2NrL00KQnVsbHdpbmtsZS9NCkJ1bHRtYW5uL00KQnVtcHBvL00KQnVuY2hlL00KQnVuZGVzYmFuay9NCkJ1bmRlc3RhZy9NCkJ1bmluL00KQnVua2VyL00KQnVuc2VuL00KQnVudWVsL00KQnVueWFuL00KQnVyYmFuay9NCkJ1cmJlcnJ5L00KQnVyY2gvTQpCdXJnZXIvTQpCdXJnZXNzL00KQnVyZ295bmUvTQpCdXJndW5kaWFuL00KQnVyZ3VuZHkvU00KQnVya2UvTQpCdXJrcy9NCkJ1cmwvTQpCdXJsaW5ndG9uL00KQnVybWEvTQpCdXJtZXNlL00KQnVybmV0dC9NCkJ1cm5zL00KQnVybnNpZGUvTQpCdXJyL00KQnVycmlzL00KQnVycm91Z2hzL00KQnVyc2EvTQpCdXJ0L00KQnVydG9uL00KQnVydW5kaS9NCkJ1cnVuZGlhbi9NUwpCdXNjaC9NCkJ1c2gvTQpCdXNoaWRvL00KQnVzaG5lbGwvTQpCdXRsZXIvTQpCdXR0ZXJmaW5nZXJzL00KQnV4dGVodWRlL00KQnlibG9zL00KQnllcnMvTQpCeXJkL00KQnlyb24vTQpCeXJvbmljL00KQnl6YW50aW5lL01TCkJ5emFudGl1bS9NCkMvU00KQ0EKQ0FEL00KQ0FJCkNBTQpDQVAKQ0FSRQpDQVRWCkNCCkNCQy9NCkNCUy9NCkNDVFYKQ0NVCkNEL00KQ0RDCkNEVApDRU8vTQpDRgpDRkMvTQpDRk8KQ0dJCkNJQS9NCkNJRApDTk4vTQpDTlMvTQpDTy9NCkNPQk9ML1NNCkNPRApDT0wKQ09MQQpDUEEvTQpDUEkvTQpDUE8KQ1BSL00KQ1BVL00KQ1JUL1NNCkNTVC9NCkNUL00KQ1YKQ1ZTL00KQ1oKQ2EvTQpDYWJlcm5ldC9NCkNhYm90L00KQ2FicmFsL00KQ2FicmVyYS9NCkNhYnJpbmkvTQpDYWRldHRlCkNhZGlsbGFjL00KQ2FkaXovTQpDYWVkbW9uL00KQ2FlcnBoaWxseS9NCkNhZXNhci9TTQpDYWdlL00KQ2FnbmV5L00KQ2Fob2tpYS9NCkNhaWFwaGFzL00KQ2Fpbi9TTQpDYWlyby9NCkNhaXRsaW4vTQpDYWp1bi9NUwpDYWwvTQpDYWxhaXMvTQpDYWxjdXR0YS9NCkNhbGRlci9NCkNhbGRlcm9uL00KQ2FsZHdlbGwvTQpDYWxlYi9NCkNhbGVkb25pYS9NCkNhbGdhcnkvTQpDYWxob3VuL00KQ2FsaS9NCkNhbGliYW4vTQpDYWxpZgpDYWxpZm9ybmlhL00KQ2FsaWZvcm5pYW4vU00KQ2FsaWd1bGEvTQpDYWxsYWdoYW4vTQpDYWxsYWhhbi9NCkNhbGxhby9NCkNhbGxhcy9NCkNhbGxpZS9NCkNhbGxpb3BlL00KQ2FsbGlzdG8vTQpDYWxvb2Nhbi9NCkNhbHZhcnkvTQpDYWx2ZXJ0L00KQ2FsdmluL00KQ2FsdmluaXNtL01TCkNhbHZpbmlzdC9NUwpDYWx2aW5pc3RpYwpDYW1hY2hvL00KQ2FtYm9kaWEvTQpDYW1ib2RpYW4vU00KQ2FtYnJpYW4vU00KQ2FtYnJpZGdlL00KQ2FtZGVuL00KQ2FtZWwvTQpDYW1lbG9wYXJkYWxpcy9NCkNhbWVsb3QvTVMKQ2FtZW1iZXJ0L01TCkNhbWVyb24vTQpDYW1lcm9vbi9TTQpDYW1lcm9vbmlhbi9NUwpDYW1pbGxhL00KQ2FtaWxsZS9NCkNhbW9lbnMvTQpDYW1wYW5lbGxhL00KQ2FtcGJlbGwvTQpDYW1waW5hcy9NCkNhbXBvcy9NCkNhbXJ5L00KQ2FtdXMvTQpDYW4vTQpDYW5hYW4vTQpDYW5hYW5pdGUvTVMKQ2FuYWQKQ2FuYWRhL00KQ2FuYWRpYW4vU00KQ2FuYWRpYW5pc20KQ2FuYWxldHRvL00KQ2FuYXJpZXMvTQpDYW5hdmVyYWwvTQpDYW5iZXJyYS9NCkNhbmNlci9TTQpDYW5jdW4vTQpDYW5kYWNlL00KQ2FuZGljZS9NCkNhbmRpZGUvTQpDYW5keS9NCkNhbm5lcy9NCkNhbm5vbi9NCkNhbm9uL00KQ2Fub3B1cy9NCkNhbnRhYnJpZ2lhbi9NCkNhbnRlcmJ1cnkvTQpDYW50b24vTQpDYW50b25lc2UvTQpDYW50b3IvTQpDYW50cmVsbC9NCkNhbnR1L00KQ2FudXRlL00KQ2FwYWJsYW5jYS9NCkNhcGVrL00KQ2FwZWxsYS9NCkNhcGV0L00KQ2FwZXRpYW4vTQpDYXBldG93bi9NCkNhcGgvTQpDYXBpc3RyYW5vL00KQ2FwaXRvbC9TTQpDYXBpdG9saW5lL00KQ2Fwb25lL00KQ2Fwb3RlL00KQ2FwcmEvTQpDYXByaS9NCkNhcHJpY29ybi9NUwpDYXB0CkNhcHVjaGluL00KQ2FwdWxldC9NCkNhcmEvTQpDYXJhY2FsbGEvTQpDYXJhY2FzL00KQ2FyYXZhZ2dpby9NCkNhcmJvbG95L00KQ2FyYm9uaWZlcm91cy9NCkNhcmJvcnVuZHVtL00KQ2FyZGVuYXMvTQpDYXJkaWZmL00KQ2FyZGluL00KQ2FyZG96by9NCkNhcmV5L00KQ2FyaWIvTVMKQ2FyaWJiZWFuL01TCkNhcmluYS9NCkNhcmlzc2EvTQpDYXJsL00KQ2FybGEvTQpDYXJsZW5lL00KQ2FybGluL00KQ2FybG8vTVMKQ2FybG9zL00KQ2FybHNiYWQvTQpDYXJsc29uL00KQ2FybHRvbi9NCkNhcmx5L00KQ2FybHlsZS9NCkNhcm1lbGEvTQpDYXJtZWxsYS9NCkNhcm1lbG8vTQpDYXJtZW4vTQpDYXJtaWNoYWVsL00KQ2FybWluZS9NCkNhcm5hcC9NCkNhcm5hdGlvbi9NCkNhcm5lZ2llL00KQ2FybmV5L00KQ2Fybm90L00KQ2Fyb2wvTQpDYXJvbGUvTQpDYXJvbGluYS9NCkNhcm9saW5lL00KQ2Fyb2xpbmdpYW4vTQpDYXJvbGluaWFuL00KQ2Fyb2x5bi9NCkNhcnBhdGhpYW4vU00KQ2FycGF0aGlhbnMvTQpDYXJwZW50ZXIvTQpDYXJyL00KQ2FycmFuemEvTQpDYXJyaWUvUk0KQ2Fycmllci9NCkNhcnJpbGxvL00KQ2Fycm9sbC9NCkNhcnNvbi9NCkNhcnRlci9NCkNhcnRlc2lhbi9NCkNhcnRoYWdlL00KQ2FydGhhZ2luaWFuL01TCkNhcnRpZXIvTQpDYXJ0d3JpZ2h0L00KQ2FydXNvL00KQ2FydmVyL00KQ2FyeS9NCkNhc2FibGFuY2EvTQpDYXNhbHMvTQpDYXNhbmRyYS9NCkNhc2Fub3ZhL1NNCkNhc2NhZGVzL00KQ2FzZS9NCkNhc2V5L00KQ2FzaC9NCkNhc2lvL00KQ2FzcGFyL00KQ2FzcGlhbi9NCkNhc3NhbmRyYS9TTQpDYXNzYXR0L00KQ2Fzc2lkeS9NCkNhc3NpZS9NCkNhc3Npb3BlaWEvTQpDYXNzaXVzL00KQ2FzdGFuZWRhL00KQ2FzdGlsaWFuCkNhc3RpbGxvL00KQ2FzdGxlcmVhZ2gvTQpDYXN0b3IvTQpDYXN0cmllcy9NCkNhc3Ryby9NCkNhdGFsYW4vU00KQ2F0YWxpbmEvTQpDYXRhbG9uaWEvTQpDYXRhd2JhL00KQ2F0ZXJwaWxsYXIvTQpDYXRoYXkvTQpDYXRoZXIvTQpDYXRoZXJpbmUvTQpDYXRobGVlbi9NCkNhdGhvbGljL01TCkNhdGhvbGljaXNtL01TCkNhdGhyeW4vTQpDYXRoeS9NCkNhdGlsaW5lL00KQ2F0by9NCkNhdHNraWxsL1NNCkNhdHNraWxscy9NCkNhdHQvTQpDYXR1bGx1cy9NCkNhdWNhc2lhbi9NUwpDYXVjYXNvaWQKQ2F1Y2FzdXMvTQpDYXVjaHkvTQpDYXZlbmRpc2gvTQpDYXZvdXIvTQpDYXh0b24vTQpDYXllbm5lL00KQ2F5bWFuL00KQ2F5dWdhL1NNCkNheXVzZQpDYgpDZC9NCkNlL00KQ2VhdXNlc2N1L00KQ2VidS9NCkNlYnVhbm8vTQpDZWNlbGlhL00KQ2VjaWwvTQpDZWNpbGUvTQpDZWNpbGlhL00KQ2VjaWx5L00KQ2VkcmljL00KQ2VsZXN0ZS9NCkNlbGlhL00KQ2VsaW5hL00KQ2VsbGluaS9NCkNlbHNpdXMvTQpDZWx0L1NNCkNlbHRpYy9TTQpDZW5vem9pYy9NCkNlbnRhdXJ1cy9NCkNlbnRpZ3JhZGUKQ2VudHJhbApDZXBoZWlkL00KQ2VwaGV1cy9NCkNlcmJlcnVzL00KQ2VyZW5rb3YvTQpDZXJlcy9NCkNlcmYvTQpDZXJ2YW50ZXMvTQpDZXNhci9NCkNlc2FyZWFuL00KQ2Vzc25hL00KQ2V0dXMvTQpDZXlsb24vTQpDZXlsb25lc2UKQ2V6YW5uZS9NCkNmL00KQ2gnaW4vTQpDaC9OCkNoYWJsaXMvTQpDaGFkL00KQ2hhZGlhbi9NUwpDaGFkd2ljay9NCkNoYWdhbGwvTQpDaGFpdGFueWEvTQpDaGFpdGluL00KQ2hhbGRlYQpDaGFsZGVhbi9NCkNoYWxsZW5nZXIvTQpDaGFsbWVycwpDaGFtYmVybGFpbi9NCkNoYW1iZXJzL00KQ2hhbXBsYWluL00KQ2hhbXBvbGxpb24vTQpDaGFuL00KQ2hhbmNlL00KQ2hhbmNlbGxvcnN2aWxsZS9NCkNoYW5kaWdhcmgvTQpDaGFuZGxlci9NCkNoYW5kb24vTQpDaGFuZHJhL00KQ2hhbmRyYWd1cHRhL00KQ2hhbmRyYXNla2hhci9NCkNoYW5lbC9NCkNoYW5leS9NCkNoYW5nL00KQ2hhbmdjaHVuL00KQ2hhbmdzaGEvTQpDaGFudGlsbHkvTQpDaGFwbGluL00KQ2hhcGxpbmVzcXVlCkNoYXBtYW4vTQpDaGFwcGFxdWlkZGljay9NCkNoYXB1bHRlcGVjL00KQ2hhcmJyYXkvTQpDaGFyZG9ubmF5L00KQ2hhcml0eS9NCkNoYXJsZW1hZ25lL00KQ2hhcmxlbmUvTQpDaGFybGVzL00KQ2hhcmxlc3Rvbi9NUwpDaGFybGV5L00KQ2hhcmxpZS9NCkNoYXJsb3R0ZS9NCkNoYXJsb3R0ZXRvd24vTQpDaGFybWFpbmUvTQpDaGFybWluL00KQ2hhcm9sYWlzL00KQ2hhcm9uL00KQ2hhcnRpc20vTQpDaGFydHJlcy9NCkNoYXJ5YmRpcy9NCkNoYXNlL00KQ2hhc2l0eS9NCkNoYXRlYXVicmlhbmQvTQpDaGF0dGFob29jaGVlL00KQ2hhdHRhbm9vZ2EvTQpDaGF0dGVybGV5L00KQ2hhdHRlcnRvbi9NCkNoYXVjZXIvTQpDaGF1bmNleS9NCkNoYXV0YXVxdWEvTQpDaGF2ZXovTQpDaGF5ZWZza3kvTQpDaGUvTQpDaGVjaGVuL00KQ2hlY2hueWEvTQpDaGVkZGFyL00KQ2hlZXIvTQpDaGVlcmlvcy9NCkNoZWV0b3MvTQpDaGVldmVyL00KQ2hla2hvdi9NCkNoZWtob3ZpYW4KQ2hlbHNlYS9NCkNoZWx5YWJpbnNrL00KQ2hlbi9NCkNoZW5leS9NCkNoZW5nZHUvTQpDaGVubmFpL00KQ2hlb3BzL00KQ2hlcmkvTQpDaGVyaWUvTQpDaGVybmVua28vTQpDaGVybm9ieWwvTQpDaGVybm9teXJkaW4vTQpDaGVyb2tlZS9NUwpDaGVycnkvTQpDaGVyeWwvTQpDaGVzYXBlYWtlL00KQ2hlc2hpcmUvTQpDaGVzdGVyL00KQ2hlc3RlcmZpZWxkL00KQ2hlc3RlcnRvbi9NCkNoZXZhbGllci9NCkNoZXZpb3QvTQpDaGV2cm9sZXQvTQpDaGV2cm9uL00KQ2hldnkvTQpDaGV5ZW5uZS9TTQpDaGkvTQpDaGlhbnRpL01TCkNoaWJhL00KQ2hpYmNoYS9NCkNoaWNhZ28vTQpDaGljYWdvYW4vTQpDaGljYW5hL00KQ2hpY2Fuby9NCkNoaWNrYXNhdy9NUwpDaGljbGV0cy9NCkNoaWh1YWh1YS9NUwpDaGlsZS9NCkNoaWxlYW4vTVMKQ2hpbWJvcmF6by9NCkNoaW1lcmEvTVMKQ2hpbXUvTQpDaGluL00KQ2hpbmEvTQpDaGluYXRvd24vTQpDaGluZXNlL00KQ2hpbm9vay9NUwpDaGlwZXd5YW4vTQpDaGlwcGVuZGFsZS9NCkNoaXBwZXdhL1NNCkNoaXF1aXRhL00KQ2hpcmljby9NCkNoaXNob2xtL00KQ2hpc2luYXUvTQpDaGl0dGFnb25nL00KQ2hpdmFzL00KQ2hsb2UvTQpDaG9jdGF3L1NNCkNob21za3kvTQpDaG9uZ3FpbmcvTQpDaG9waW4vTQpDaG9wcmEvTQpDaG91L00KQ2hyZXRpZW4vTQpDaHJpcy9NCkNocmlzdC9NUwpDaHJpc3RhL00KQ2hyaXN0Y2h1cmNoL00KQ2hyaXN0ZW5kb20vTVMKQ2hyaXN0ZW5zZW4vTQpDaHJpc3RpL00KQ2hyaXN0aWFuL1NNCkNocmlzdGlhbml0eS9TTQpDaHJpc3RpYW5pemUKQ2hyaXN0aWUvTQpDaHJpc3RpbmEvTQpDaHJpc3RpbmUvTQpDaHJpc3RsaWtlCkNocmlzdG1hcy9NUwpDaHJpc3RtYXN0aWRlL01TCkNocmlzdG1hc3RpbWUvTVMKQ2hyaXN0b3Blci9NCkNocmlzdG9waGVyL00KQ2hyb25pY2xlcwpDaHJ5c2xlci9NCkNocnlzb3N0b20vTQpDaHJ5c3RhbC9NCkNodWNrL00KQ2h1a2NoaS9NCkNodW1hc2gvTQpDaHVuZy9NCkNodXJjaC9NCkNodXJjaGlsbC9NCkNodXJyaWd1ZXJhL00KQ2h1dmFzaC9NCkNpL00KQ2ljZXJvL00KQ2lkL00KQ2ltYWJ1ZS9NCkNpbmNpbm5hdGkvTQpDaW5kZXJlbGxhL01TCkNpbmR5L00KQ2luZW1hU2NvcGUvTQpDaW5lcmFtYS9NCkNpcHJvL00KQ2lyY2UvTQpDaXNjby9NCkNpdGliYW5rL00KQ2l0aWdyb3VwL00KQ2l0cm9lbi9NCkNsL01WCkNsYWlib3JuZS9NCkNsYWlyL00KQ2xhaXJlL00KQ2xhaXJvbC9NCkNsYW5jeS9NCkNsYXBleXJvbi9NCkNsYXB0b24vTQpDbGFyYS9NCkNsYXJlL00KQ2xhcmVuY2UvTQpDbGFyZW5kb24vTQpDbGFyaWNlL00KQ2xhcmlzc2EvTQpDbGFyay9NCkNsYXJrZS9NCkNsYXVkZS9NCkNsYXVkZXR0ZS9NCkNsYXVkaWEvTQpDbGF1ZGluZS9NCkNsYXVkaW8vTQpDbGF1ZGl1cy9NCkNsYXVzL00KQ2xhdXNld2l0ei9NCkNsYXVzaXVzL00KQ2xheS9NCkNsYXl0b24vTQpDbGVhcmFzaWwvTQpDbGVtL1hNCkNsZW1lbmNlYXUvTQpDbGVtZW5zL00KQ2xlbWVudC9NUwpDbGVtZW50aW5lL00KQ2xlbWVudHMvTQpDbGVtb25zL00KQ2xlbXNvbi9NCkNsZW8vTQpDbGVvcGF0cmEvTQpDbGV2ZWxhbmQvTQpDbGlidXJuL00KQ2xpZmYvTQpDbGlmZm9yZC9NCkNsaWZ0b24vTQpDbGluZS9NCkNsaW50L00KQ2xpbnRvbi9NCkNsaW8vTQpDbGl2ZS9NCkNsb3JldHMvTQpDbG9yb3gvTQpDbG9zdXJlL00KQ2xvdGhvL00KQ2xvdXNlYXUvTQpDbG92aXMvTQpDbHlkZS9NCkNseWRlc2RhbGUvTQpDbHl0ZW1uZXN0cmEvTQpDbS9NCkNtZHIKQ28vTQpDb2JhaW4vTQpDb2JiL00KQ29jaGFiYW1iYS9NCkNvY2hpbi9NCkNvY2hpc2UvTQpDb2NocmFuL00KQ29ja25leS9NCkNvY3RlYXUvTQpDb2QKQ29keS9NCkNvZmZleS9NCkNvZ25hYy9NCkNvaGFuL00KQ29oZW4vTQpDb2ltYmF0b3JlL00KQ29pbnRyZWF1L00KQ29rZS9TTQpDb2wvTQpDb2xiZXJ0L00KQ29sYnkvTQpDb2xlL00KQ29sZWVuL00KQ29sZW1hbi9NCkNvbGVyaWRnZS9NCkNvbGV0dGUvTQpDb2xmYXgvTQpDb2xnYXRlL00KQ29saW4vTQpDb2xsZWVuL00KQ29sbGllci9NCkNvbGxpbi9TTQpDb2xsaW5zL00KQ29sbwpDb2xvZ25lL00KQ29sb21iaWEvTQpDb2xvbWJpYW4vTVMKQ29sb21iby9NCkNvbG9uL00KQ29sb3JhZGFuL1NNCkNvbG9yYWRvL00KQ29sb3JhZG9hbgpDb2xvc3NldW0vTQpDb2x0L00KQ29sdHJhbmUvTQpDb2x1bWJpYS9NCkNvbHVtYmluZS9NCkNvbHVtYnVzL00KQ29tCkNvbWFuY2hlL01TCkNvbWJzL00KQ29tZHIKQ29taW50ZXJuL00KQ29tbWFuZG1lbnQKQ29tbW9ucy9NCkNvbW1vbndlYWx0aApDb21tdW5pb24vU00KQ29tbXVuaXNtCkNvbW11bmlzdC9TTQpDb21vL00KQ29tb3JhbgpDb21vcm9zL00KQ29tcGFxL00KQ29tcHRvbi9NCkNvbXB1U2VydmUvTQpDb210ZS9NCkNvbmFrcnkvTQpDb25hbi9NCkNvbmNlcGNpb24vTQpDb25jZXR0YS9NCkNvbmNvcmQvU00KQ29uY29yZGUvTQpDb25kaWxsYWMvTQpDb25kb3JjZXQvTQpDb25lc3RvZ2EvTQpDb25mZWRlcmFjeS9NCkNvbmZlZGVyYXRlL01TCkNvbmZ1Y2lhbi9TTQpDb25mdWNpYW5pc20vTVMKQ29uZnVjaXVzL00KQ29uZy9NCkNvbmdvL00KQ29uZ29sZXNlL00KQ29uZ3JlZ2F0aW9uYWwKQ29uZ3JlZ2F0aW9uYWxpc3QvTVMKQ29uZ3Jlc3MvTVMKQ29uZ3Jlc3Npb25hbApDb25ncmV2ZS9NCkNvbmxleS9NCkNvbm4vTVIKQ29ubmVjdGljdXQvTQpDb25uZW1hcmEvTQpDb25uZXIvTQpDb25uZXJ5L00KQ29ubmllL00KQ29ubm9sbHkvTQpDb25ub3JzL00KQ29ucmFkL00KQ29ucmFpbC9NCkNvbnNlcnZhdGl2ZQpDb25zdGFibGUvTQpDb25zdGFuY2UvTQpDb25zdGFudGluZS9NCkNvbnN0YW50aW5vcGxlL00KQ29uc3RpdHV0aW9uCkNvbnN1ZWxvL00KQ29udGluZW50L00KQ29udGluZW50YWwvTQpDb250cmVyYXMvTQpDb253YXkvTQpDb29rL00KQ29va2UvTQpDb29sZXkvTQpDb29saWRnZS9NCkNvb3Blci9NCkNvb3BlcnN0b3duL00KQ29vcnMvTQpDb3BhY2FiYW5hL00KQ29wZWxhbmQvTQpDb3BlbmhhZ2VuL00KQ29wZXJuaWNhbi9NCkNvcGVybmljdXMvTQpDb3BsYW5kL00KQ29wbGV5L00KQ29wcGVyZmllbGQvTQpDb3BwZXJ0b25lL00KQ29wcG9sYS9NCkNvcHRpYy9NCkNvcmEvTQpDb3JkZWxpYS9NCkNvcmRpbGxlcmFzL00KQ29yZG9iYS9NCkNvcmV5L00KQ29yZnUvTQpDb3JpbmEvTQpDb3JpbmUvTQpDb3Jpbm5lL00KQ29yaW50aC9NCkNvcmludGhpYW4vTVMKQ29yaW50aGlhbnMvTQpDb3Jpb2xhbnVzL00KQ29yaW9saXMvTQpDb3JrCkNvcmxlb25lL00KQ29ybWFjay9NCkNvcm5laWxsZS9NCkNvcm5lbGlhL00KQ29ybmVsaXVzL00KQ29ybmVsbC9NCkNvcm5pbmcvTQpDb3JuaXNoL01TCkNvcm53YWxsL00KQ29ybndhbGxpcy9NCkNvcm9uYWRvL00KQ29yb3QvTQpDb3JwCkNvcnJlZ2dpby9NCkNvcnJpbmUvTQpDb3JzaWNhL00KQ29yc2ljYW4vTQpDb3J0ZXMvTVMKQ29ydGxhbmQvTQpDb3J2YWxsaXMvTQpDb3J2ZXR0ZS9NCkNvcnZ1cy9NCkNvcnkvTQpDb3NieS9NCkNvc3NhY2svTQpDb3N0Y28vTQpDb3N0ZWxsby9NCkNvc3RuZXIvTQpDb3RlL00KQ290b25vdS9NCkNvdG9wYXhpL00KQ290c3dvbGQvTQpDb3R0b24vTQpDb3Vsb21iL00KQ291bHRlci9NCkNvdXBlcmluL00KQ291cmJldC9NCkNvdXJ0bmV5L00KQ291c3RlYXUvTQpDb3ZlbnRyeS9TTQpDb3dhcmQvTQpDb3dlbGwvTQpDb3dsZXkvTQpDb3dwZXIvTQpDb3gvTQpDb3kvTQpDb3p1bWVsL00KQ3BsCkNyL01UCkNyYWJiZS9NCkNyYWZ0L00KQ3JhaWcvTQpDcmFuYWNoL00KQ3JhbmUvTQpDcmFubWVyL00KQ3JhdGVyL00KQ3Jhd2ZvcmQvTQpDcmF5L00KQ3JheW9sYS9NCkNyZWF0aW9uL00KQ3JlYXRvci9NCkNyZWN5L00KQ3JlZS9EU00KQ3JlZWsvU00KQ3JlaWdodG9uL00KQ3Jlb2xlL1NNCkNyZW9uL00KQ3Jlc3NpZGEvTQpDcmVzdC9NCkNyZXRhY2VvdXMvTQpDcmV0YW4vU00KQ3JldGUvTQpDcmljaHRvbi9NCkNyaWNrL00KQ3JpbWVhL00KQ3JpbWVhbi9NCkNyaW9sbG8vTQpDcmlzY28vTQpDcmlzdGluYS9NCkNyb2F0L1NNCkNyb2F0aWEvTQpDcm9hdGlhbi9NUwpDcm9jZS9NCkNyb2NrZXR0L00KQ3JvZXN1cy9NCkNyb213ZWxsL00KQ3JvbXdlbGxpYW4vTQpDcm9uaW4vTQpDcm9ua2l0ZS9NCkNyb251cy9NCkNyb29rZXMvTQpDcm9zYnkvTQpDcm9zcy9NCkNyb3cvU00KQ3Jvd2xleS9NCkNydWNpZml4aW9uL01TCkNydWlrc2hhbmsvTQpDcnVpc2UvTQpDcnVzYWRlcydzCkNydXNvZS9NCkNydXgvTQpDcnV6L00KQ3J5cHRvem9pYy9NCkNyeXN0YWwvTQpDc29ua2EvTQpDdApDdGVzaXBob24vTQpDdGh1bGh1L00KQ3UvTQpDdWJhL00KQ3ViYW4vU00KQ3VjaHVsYWluL00KQ3Vpc2luYXJ0L00KQ3VsYmVydHNvbi9NCkN1bGxlbi9NCkN1bWJlcmxhbmQvTQpDdW1taW5ncy9NCkN1bmFyZC9NCkN1bm5pbmdoYW0vTQpDdXBpZC9NCkN1cmFjYW8vTQpDdXJpZS9NCkN1cml0aWJhL00KQ3Vycmllci9NCkN1cnJ5L1JNCkN1cnQvTQpDdXJ0aXMvTQpDdXN0ZXIvTQpDdXZpZXIvTQpDdXpjby9NCkN5YmVsZS9NCkN5Y2xhZGVzL00KQ3ljbG9wZXMvTQpDeWNsb3BzL00KQ3lnbnVzL00KQ3ltYmVsaW5lL00KQ3ludGhpYS9NCkN5cHJpYW4vTQpDeXByaW90L01TCkN5cHJ1cy9NCkN5cmFuby9NCkN5cmlsL00KQ3lyaWxsaWMvTQpDeXJ1cy9NCkN6ZWNoL00KQ3plY2hvc2xvdmFrCkN6ZWNob3Nsb3Zha2lhL00KQ3plY2hvc2xvdmFraWFuL1NNCkN6ZWNocwpDemVybnkvTQpEL00KREEvTQpEQVIKREFUL00KREJNUy9NCkRDL00KREQvTQpERFMvTQpERFQvUwpERQpERUEKREVDL1NECkRICkRIUwpESQpESgpETUNBCkRNRC9NCkRNWgpETkEvTQpET0EKRE9CCkRPRApET0UKRE9TL00KRE9UCkRQL1NNCkRQVApEU1QKRFRQCkRVSQpEVkQKRFZSL1NNCkRXSQpEYWNoYXUvTQpEYWNyb24vU00KRGFkYS9NCkRhZGFpc20vTQpEYWVkYWx1cy9NCkRhZ3VlcnJlL00KRGFnd29vZC9NCkRhaG9tZXkvTQpEYWltbGVyL00KRGFpc3kvTQpEYWthci9NCkRha290YS9TTQpEYWtvdGFuL00KRGFsYWkKRGFsZS9NCkRhbGV5L00KRGFsaS9NCkRhbGlhbi9NCkRhbGxhcy9NCkRhbG1hdGlhL00KRGFsbWF0aWFuL1NNCkRhbHRvbi9NCkRhbWFzY3VzL00KRGFtZS9NTgpEYW1pYW4vTQpEYW1pZW4vTQpEYW1pb24vTQpEYW1vY2xlcy9NCkRhbW9uL00KRGFuL00KRGFuYS9NCkRhbmFlL00KRGFuZS9TTQpEYW5lbGF3L00KRGFuZ2VyZmllbGQvTQpEYW5pYWwvTQpEYW5pZWwvU00KRGFuaWVsbGUvTQpEYW5pZWxzL00KRGFuaXNoL00KRGFubmllL00KRGFubnkvTQpEYW5vbmUvTQpEYW50ZS9NCkRhbnRvbi9NCkRhbnViZS9NCkRhbnViaWFuL00KRGFwaG5lL00KRGFyYnkvTQpEYXJjeS9NCkRhcmRhbmVsbGVzL00KRGFyZS9NCkRhcmVuL00KRGFyZnVyL00KRGFyaW4vTQpEYXJpby9NCkRhcml1cy9NCkRhcmplZWxpbmcvTQpEYXJsYS9NCkRhcmxlbmUvTQpEYXJsaW5nL00KRGFybmVsbC9NCkRhcnJlbC9NCkRhcnJlbGwvTQpEYXJyZW4vTQpEYXJyaW4vTQpEYXJyb3cvTQpEYXJyeWwvTQpEYXJ0aC9NCkRhcnRtb29yL00KRGFydG1vdXRoL00KRGFydm9uL00KRGFyd2luL00KRGFyd2luaWFuL00KRGFyd2luaXNtL1NNCkRhcndpbmlzdApEYXJ5bC9NCkRhdGFtYXRpb24KRGF1Z2hlcnR5L00KRGF1bWllci9NCkRhdmFvL00KRGF2ZS9NCkRhdmVucG9ydC9NCkRhdmlkL01TCkRhdmlkc29uL00KRGF2aWVzL00KRGF2aXMvTQpEYXZ5L1NNCkRhd2VzL00KRGF3a2lucwpEYXduL00KRGF3c29uL00KRGF5L00KRGF5YW4KRGF5dG9uL00KRGVHZW5lcmVzL00KRGVhZGhlYWQvTQpEZWFuL00KRGVhbmEvTQpEZWFuZHJlL00KRGVhbm4vTQpEZWFubmEvTQpEZWFubmUvTQpEZWF0aC9NCkRlYmJpZS9NCkRlYmJ5L00KRGViaWFuL00KRGVib3JhL00KRGVib3JhaC9NCkRlYm91aWxsZXQvTQpEZWJyYS9NCkRlYnMvTQpEZWJ1c3N5L00KRGVjL00KRGVjYWxvZ3VlL00KRGVjYXR1ci9NCkRlY2NhL00KRGVjY2FuL00KRGVjZW1iZXIvU00KRGVja2VyL00KRGVkZWtpbmQvTQpEZWUvTQpEZWVuYS9NCkRlZXJlL00KRGVmb2UvTQpEZWdhcy9NCkRlaWRyZS9NCkRlaW1vcy9NCkRlaXJkcmUvTQpEZWl0eQpEZWplc3VzL00KRGVsL00KRGVsYWNyb2l4L00KRGVsYWNydXovTQpEZWxhbmV5L00KRGVsYW5vL00KRGVsYXdhcmUvTVMKRGVsYXdhcmVhbi9TTQpEZWxiZXJ0L00KRGVsZW9uL00KRGVsZ2Fkby9NCkRlbGhpL00KRGVsaWEvTQpEZWxpYmVzL00KRGVsaWNpb3VzL00KRGVsaWxhaC9NCkRlbGlsYWhzCkRlbGl1cy9NCkRlbGwvTQpEZWxsYS9NCkRlbG1hci9NCkRlbG1hcnZhL00KRGVsbWVyL00KRGVsbW9uaWNvL00KRGVsb3Jlcy9NCkRlbG9yaXMvTQpEZWxwaGkvTQpEZWxwaGljL00KRGVscGhpbnVzL00KRGVsdGEvTQpEZW0vRwpEZW1hdmVuZC9NCkRlbWVyb2wvTQpEZW1ldGVyL00KRGVtZXRyaXVzL00KRGVtaW5nL00KRGVtb2NyYXQvU00KRGVtb2NyYXRpYwpEZW1vY3JpdHVzL00KRGVtb3N0aGVuZXMvTQpEZW1wc2V5L00KRGVuYS9NCkRlbmFsaQpEZW5lYi9NCkRlbmVib2xhL00KRGVuZy9NCkRlbmlzL00KRGVuaXNlL00KRGVubWFyay9NCkRlbm5pcy9NCkRlbm55L00KRGVudmVyL00KRGVvbi9NCkRlcHAvTQpEZXJieS9NCkRlcmVrL00KRGVyaWNrL00KRGVybW90L00KRGVycmljay9NCkRlcnJpZGEvTQpEZXNjYXJ0ZXMvTQpEZXNkZW1vbmEvTQpEZXNpcmVlL00KRGVzbW9uZC9NCkRldHJvaXQvTQpEZXV0ZXJvbm9teS9NCkRldmFuYWdhcmkvTQpEZXZpL00KRGV2aW4vTQpEZXZvbi9NCkRldm9uaWFuL00KRGV3YXIvTQpEZXdheW5lL00KRGV3ZXkvTQpEZXdpdHQvTQpEZXhlZHJpbmUvTQpEZXh0ZXIvTQpEaGFrYS9NCkRoYXVsYWdpcmkvTQpEaS9TTQpEaUNhcHJpby9NCkRpTWFnZ2lvL00KRGlhZ2hpbGV2L00KRGlhbC9NCkRpYW5hL00KRGlhbmUvTQpEaWFubi9NCkRpYW5uYS9NCkRpYW5uZS9NCkRpYXMKRGlhc3BvcmEvTVMKRGljay9YTQpEaWNrZW5zL00KRGlja2Vuc2lhbgpEaWNrZXJzb24vTQpEaWNraW5zb24vTQpEaWNrc29uL00KRGljdGFwaG9uZS9TTQpEaWRlcm90L00KRGlkby9NCkRpZHJpa3Nvbi9NCkRpZWZlbmJha2VyL00KRGllZ28vTQpEaWVtL00KRGlldHJpY2gvTQpEaWprc3RyYS9NCkRpam9uL00KRGlsYmVydC9NUwpEaWxsYXJkL00KRGlsbGluZ2VyL00KRGlsbG9uL00KRGluYS9NCkRpbmFoL00KRGluby9NCkRpb2NsZXRpYW4vTQpEaW9nZW5lcy9NCkRpb24vTQpEaW9ubmUvTQpEaW9ueXNpYW4vTQpEaW9ueXN1cy9NCkRpb3BoYW50aW5lL00KRGlvci9NCkRpcHBlci9NCkRpcgpEaXJhYy9NCkRpcmljaGxldC9NCkRpcmsvTQpEaXMvTQpEaXNuZXkvTQpEaXNuZXlsYW5kL00KRGlzcmFlbGkvTQpEaXZpbmUvTQpEaXdhbGkvTQpEaXgvTQpEaXhpZS9NCkRpeGllY3JhdC9NCkRpeGllbGFuZC9TTQpEaXhvbi9NCkRqaWJvdXRpL00KRG1pdHJpL00KRG5lcHJvcGV0cm92c2svTQpEbmllc3Rlci9NCkRvYmJpbi9NCkRvYmVybWFuL00KRG9icm8vTQpEb2N0b3IKRG9jdG9yb3cvTQpEb2RnZS9NCkRvZGdzb24vTQpEb2RvbWEvTQpEb2Rzb24vTQpEb2UvTQpEb2hhL00KRG9sYnkvTQpEb2xlL00KRG9sbGllL00KRG9sbHkvTQpEb2xvcmVzL00KRG9tZXNkYXkvTQpEb21pbmdvL00KRG9taW5ndWV6L00KRG9taW5pYy9NCkRvbWluaWNhL00KRG9taW5pY2FuL01TCkRvbWluaWNrL00KRG9taW5pb24KRG9taW5pcXVlL00KRG9taXRpYW4vTQpEb24vU00KRG9uYS9NCkRvbmFodWUvTQpEb25hbGQvTQpEb25hbGRzb24vTQpEb25hdGVsbG8vTQpEb25ldHNrL00KRG9uaXpldHRpL00KRG9ubi9NUgpEb25uYS9NCkRvbm5lL00KRG9ubmVsbC9NCkRvbm5lci9NCkRvbm5pZS9NCkRvbm55L00KRG9ub3Zhbi9NCkRvb2xleS9NCkRvb2xpdHRsZS9NCkRvb25lc2J1cnkvTQpEb3BwbGVyL00KRG9yYS9NCkRvcmNhcy9NCkRvcmVlbi9NCkRvcmlhbi9NCkRvcmljL00KRG9yaXMvTQpEb3JpdG9zL00KRG9yb3RoZWEvTQpEb3JvdGh5L00KRG9yc2V0L00KRG9yc2V5L00KRG9ydGh5L00KRG9ydG11bmQvTQpEb3N0b2V2c2t5L00KRG90L00KRG90c29uL00KRG91YWxhL00KRG91YXkvTQpEb3VibGVkYXkvTQpEb3VnL00KRG91Z2xhcy9NCkRvdWdsYXNzL00KRG91cm8vTQpEb3Zlci9NCkRvdy9NCkRvd25zL00KRG93bnkvTQpEb3lsZS9NCkRyCkRyYWNvL00KRHJhY29uaWFuL00KRHJhY3VsYS9NCkRyYWtlL00KRHJhbWFtaW5lL1NNCkRyYW1idWllL00KRHJhbm8vTQpEcmF2aWRpYW4vTQpEcmVpc2VyL00KRHJlc2Rlbi9NCkRyZXcvTQpEcmV5ZnVzL00KRHJpc3Rhbi9NCkRyb3Bib3gvTQpEcnVkZ2UvTQpEcnlkZW4vTQpEc2NodWJiYS9NCkR1CkR1UG9udC9NCkR1YW5lL00KRHViYWkvTQpEdWJjZWsvTQpEdWJoZS9NCkR1Ymxpbi9NCkR1YnJvdm5pay9NCkR1Y2hhbXAvTQpEdWRsZXkvTQpEdWZmeS9NCkR1aXNidXJnL00KRHVrZS9NCkR1bGxlcy9NCkR1bHV0aC9NCkR1bWFzL00KRHVtYmxlZG9yZS9NCkR1bWJvL00KRHVtcHN0ZXIvTQpEdW5hbnQvTQpEdW5iYXIvTQpEdW5jYW4vTQpEdW5kZWUKRHVuZWRpbi9NCkR1bmtpcmsvTQpEdW5sYXAvTQpEdW5uL00KRHVubmUvTQpEdXJhY2VsbC9NCkR1cmFuL00KRHVyYW50L00KRHVyYW50ZS9NCkR1cmJhbi9NCkR1cmVyL00KRHVyZXgvTQpEdXJoYW0vTVMKRHVya2hlaW0vTQpEdXJvYy9NCkR1cm9jaGVyL00KRHVzZS9NCkR1c2hhbmJlL00KRHVzc2VsZG9yZi9NCkR1c3RidXN0ZXIvTQpEdXN0aW4vTQpEdXN0eS9NCkR1dGNoL00KRHV0Y2htYW4vTQpEdXRjaG1lbi9NCkR1dGNod29tYW4KRHV2YWxpZXIvTQpEdmluYS9NCkR2b3Jhay9NCkR3YXluZS9NCkR3aWdodC9NCkR5L00KRHllci9NCkR5bGFuL00KRHlzb24vTQpEemVyemhpbnNreS9NCkR6dW5nYXJpYS9NCkUvU00KRUMKRUNHL00KRUNNQVNjcmlwdC9NCkVEUC9NCkVEVApFRUMvTQpFRUcvTQpFRU8KRUVPQwpFRkwKRUZUCkVLRy9NCkVMRi9NCkVNCkVNVApFTkUvTQpFT0UKRVBBL00KRVIKRVJBCkVTRS9NCkVTTApFU1AvTQpFU1BOL00KRVNSCkVTVC9NCkVUCkVUQQpFVEQKRVUKRVVMQS9TCkVha2lucy9NCkVhcmhhcnQvTQpFYXJsL00KRWFybGUvTQpFYXJsZW5lL00KRWFybGluZS9NCkVhcm5lc3QvTQpFYXJuZXN0aW5lL00KRWFybmhhcmR0L00KRWFycC9NCkVhc3QvU1pNUgpFYXN0ZXIvTQpFYXN0ZXJuL1IKRWFzdG1hbi9NCkVhc3R3b29kL00KRWF0b24vTQpFYmVuL00KRWJlbmVlemVyL00KRWJlcnQvTQpFYm9sYS9NCkVib25pY3MvTQpFYm9ueS9NCkVicm8vTQpFY2NsZXNpYXN0ZXMvTQpFY28vTQpFY3N0YXN5CkVjdWFkb3IvTQpFY3VhZG9yYW4vU00KRWN1YWRvcmVhbgpFY3VhZG9yaWFuL1NNCkVkL01OWApFZGFtL1NNCkVkZGEvTQpFZGRpZS9NCkVkZGluZ3Rvbi9NCkVkZHkvTQpFZGVuL00KRWRnYXIvTQpFZGdhcmRvL00KRWRpbmJ1cmdoL00KRWRpc29uL00KRWRpdGgvTQpFZG1vbmQvTQpFZG1vbnRvbi9NCkVkbXVuZC9NCkVkbmEvTQpFZHNlbC9NCkVkdWFyZG8vTQpFZHdhcmQvU00KRWR3YXJkaWFuL00KRWR3YXJkby9NCkVkd2FyZHMvTQpFZHdpbi9NCkVkd2luYS9NCkVleW9yZS9NCkVmZmllL00KRWZyYWluL00KRWZyZW4vTQpFZ2dvL00KRWd5cHQvTQpFZ3lwdGlhbi9NUwpFZ3lwdG9sb2d5L00KRWhyZW5iZXJnL00KRWhybGljaC9NCkVpY2htYW5uL00KRWlmZmVsL00KRWlsZWVuL00KRWluc3RlaW4vTVMKRWlyZS9NCkVpc2VuaG93ZXIvTQpFaXNlbnN0ZWluL00KRWlzbmVyL00KRWxhaW5lL00KRWxhbS9NCkVsYW5vci9NCkVsYXN0b3BsYXN0L00KRWxiYS9NCkVsYmUvTQpFbGJlcnQvTQpFbGJydXMvTQpFbGRvbi9NCkVsZWFub3IvTQpFbGVhemFyL00KRWxlY3RyYS9NCkVsZW5hL00KRWxnYXIvTQpFbGkvTQpFbGlhcy9NCkVsaWphaC9NCkVsaW5vci9NCkVsaW90L00KRWxpc2EvTQpFbGlzYWJldGgvTQpFbGlzZS9NCkVsaXNlby9NCkVsaXNoYS9NCkVsaXphL00KRWxpemFiZXRoL00KRWxpemFiZXRoYW4vU00KRWxsYS9NCkVsbGVuL00KRWxsZXNtZXJlL00KRWxsaWUvTQpFbGxpbmd0b24vTQpFbGxpb3QvTQpFbGxpb3R0L00KRWxsaXMvTQpFbGxpc29uL00KRWxtYS9NCkVsbWVyL00KRWxtby9NCkVsbmF0aC9NCkVsbm9yYS9NCkVsb2hpbS9NCkVsb2lzZS9NCkVsb3kvTQpFbHJveS9NCkVsc2EvTQpFbHNpZS9NCkVsc2lub3JlL00KRWx0YW5pbi9NCkVsdG9uL00KRWx1bC9NCkVsdmEvTQpFbHZpYS9NCkVsdmluL00KRWx2aXJhL00KRWx2aXMvTQpFbHdheS9NCkVsd29vZC9NCkVseXNlZS9NCkVseXNpYW4vTQpFbHlzaXVtL1NNCkVtYWNzL00KRW1hbnVlbC9NCkVtZXJzb24vTQpFbWVyeS9NCkVtaWwvTQpFbWlsZS9NCkVtaWxpYS9NCkVtaWxpby9NCkVtaWx5L00KRW1pbmVtL00KRW1pbmVuY2UKRW1tYS9NCkVtbWFudWVsL00KRW1tZXR0L00KRW1teS9NCkVtb3J5L00KRW5jYXJ0YS9NCkVuZHltaW9uL00KRW5nL00KRW5nZWxzL00KRW5nbGFuZC9NCkVuZ2xpc2gvTVJTCkVuZ2xpc2htYW4vTQpFbmdsaXNobWVuL00KRW5nbGlzaHdvbWFuL00KRW5nbGlzaHdvbWVuL00KRW5pZC9NCkVuaWYvTQpFbml3ZXRvay9NCkVua2lkdS9NCkVub2NoL00KRW5vcy9NCkVucmljby9NCkVucmlxdWUvTQpFbnJvbi9NCkVudGVycHJpc2UvTQpFb2NlbmUvTQpFcGNvdC9NCkVwaGVzaWFuL01TCkVwaGVzdXMvTQpFcGhyYWltL00KRXBpY3RldHVzL00KRXBpY3VyZWFuL00KRXBpY3VydXMvTQpFcGltZXRoaXVzL00KRXBpcGhhbnkvU00KRXBpc2NvcGFsCkVwaXNjb3BhbGlhbi9NUwpFcGlzdGxlCkVwc29tL00KRXBzb24vTQpFcHN0ZWluL00KRXF1dWxldXMvTQpFci9NCkVyYXNtdXMvTQpFcmF0by9NCkVyYXRvc3RoZW5lcy9NCkVyZWJ1cy9NCkVyZWN0b3IvTQpFcmV3aG9uL00KRXJoYXJkL00KRXJpYy9NCkVyaWNhL00KRXJpY2gvTQpFcmljay9NCkVyaWNrYS9NCkVyaWNrc29uL00KRXJpZGFudXMvTQpFcmllL00KRXJpay9NCkVyaWthL00KRXJpbi9NCkVyaXMvTVMKRXJpdHJlYS9NCkVyaXRyZWFuL1NNCkVybGVubWV5ZXIvTQpFcm1hL00KRXJuYS9NCkVybmVzdC9NCkVybmVzdGluZS9NCkVybmVzdG8vTQpFcm5pZS9NCkVybnN0L00KRXJvcy9NUwpFcnJvbC9NCkVyc2UvTQpFcnZJbi9NCkVyd2luL00KRXNhdS9NCkVzY2hlci9NCkVzY2hlcmljaGlhL00KRXNjb25kaWRvCkVza2ltby9NUwpFc21lcmFsZGEvTQpFc3BlcmFudG8vTQpFc3BlcmFuemEvTQpFc3Bpbm96YS9NCkVzcS9NCkVzcXVpcmUvTVMKRXNzZW4vTQpFc3NlbmUvTQpFc3NlcXVpYm8vTQpFc3NleC9NCkVzc2llL00KRXN0YWJsaXNobWVudApFc3RlYmFuL00KRXN0ZWxhL00KRXN0ZWxsYS9NCkVzdGVsbGUvTQpFc3Rlci9NCkVzdGVyaGF6eS9NCkVzdGVzL00KRXN0aGVyL00KRXN0b25pYS9NCkVzdG9uaWFuL1NNCkVzdHJhZGEvTQpFdGhhbi9NCkV0aGVsL00KRXRoZWxyZWQvTQpFdGhlcm5ldC9NCkV0aGlvcGlhL00KRXRoaW9waWFuL1NNCkV0bmEvTQpFdG9uL00KRXRydXJpYS9NCkV0cnVzY2FuL00KRXR0YS9NCkV1L00KRXVjaGFyaXN0L01TCkV1Y2hhcmlzdGljCkV1Y2xpZC9NCkV1Z2VuZS9NCkV1Z2VuaWEvTQpFdWdlbmllL00KRXVnZW5pby9NCkV1bGEvTQpFdWxlci9NCkV1bWVuaWRlcy9NCkV1bmljZS9NCkV1cGhyYXRlcy9NCkV1cgpFdXJhc2lhL00KRXVyYXNpYW4vTVMKRXVyaXBpZGVzL00KRXVyb2RvbGxhci9TTQpFdXJvcGEvTQpFdXJvcGUvTQpFdXJvcGVhbi9NUwpFdXJ5ZGljZS9NCkV1c3RhY2hpYW4vTQpFdXRlcnBlL00KRXZhL00KRXZhbi9TTQpFdmFuZ2VsaWNhbApFdmFuZ2VsaW5hL00KRXZhbmdlbGluZS9NCkV2YW5nZWxpc3QvTQpFdmFucy9NCkV2YW5zdmlsbGUvTQpFdmUvTQpFdmVseW4vTQpFdmVua2kvTQpFdmVyUmVhZHkvTQpFdmVyZXN0L00KRXZlcmV0dC9NCkV2ZXJldHRlL00KRXZlcmdsYWRlcy9NCkV2ZXJ0L00KRXZpYW4vTQpFdml0YS9NCkV3aW5nL00KRXhjYWxpYnVyL00KRXhjZWRyaW4vTQpFeGNlbGxlbmN5L1NNCkV4Y2hlcXVlcgpFeGVyY3ljbGUvTQpFeG9jZXQvTQpFeG9kdXMvTQpFeHhvbi9NCkV5Y2svTQpFeXJlL00KRXlzZW5jay9NCkV6ZWtpZWwvTQpFenJhL00KRi9NRApGQUEKRkFRL1NNCkZCSS9NCkZDQwpGRApGREEKRkRJQy9NCkZEUi9NCkZIQS9NCkZJQ0EvTQpGSUZPCkZMCkZNL1NNCkZOTUEvTQpGT0ZMCkZPUlRSQU4vTQpGUE8KRlNGL00KRlNMSUMKRlRDCkZVRC9TCkZXRApGV0lXCkZZCkZZSQpGYWJlcmdlL00KRmFiaWFuL01TCkZhY2Vib29rL00KRmFlcm9lL00KRmFmbmlyL00KRmFnaW4vTQpGYWhkL00KRmFocmVuaGVpdC9NCkZhaXJiYW5rcy9NCkZhaXNhbC9NCkZhaXNhbGFiYWQvTQpGYWl0aC9NCkZhbGFzaGEvTQpGYWxrbGFuZC9TTQpGYWxrbGFuZHMvTQpGYWxsb3BpYW4vTQpGYWxzdGFmZi9NCkZhbHdlbGwvTQpGYW5uaWUvTQpGYW5ueS9NCkZhcmFkYXkvTQpGYXJnby9NCkZhcmxleS9NCkZhcm1lci9NCkZhcnJhZ3V0L00KRmFycmFraGFuL00KRmFycmVsbC9NCkZhcnJvdy9NCkZhcnNpL00KRmFzc2JpbmRlci9NCkZhdGFoL00KRmF0ZXMvTQpGYXRoZXIvU00KRmF0aW1hL00KRmF0aW1pZC9NCkZhdWxrbmVyL00KRmF1bGtuZXJpYW4vTQpGYXVudGxlcm95L00KRmF1c3QvTQpGYXVzdGlhbi9NCkZhdXN0aW5vL00KRmF1c3R1cy9NCkZhd2tlcy9NCkZheS9NCkZheWUvTQpGZS9NCkZlYi9NCkZlYnJ1YXJ5L1NNCkZlZC9TTQpGZWRFeC9NCkZlZGVyYWwvTVMKRmVkZXJhbGlzdC9NCkZlZGVyaWNvL00KRmVkcy9NCkZlbGVjaWEvTQpGZWxpY2UvTQpGZWxpY2lhL00KRmVsaWNpdHkvTQpGZWxpcGUvTQpGZWxpeC9NCkZlbGxpbmkvTQpGZW5pYW4vTQpGZXJiZXIvTQpGZXJkaW5hbmQvTQpGZXJndXMvTQpGZXJndXNvbi9NCkZlcmxpbmdoZXR0aS9NCkZlcm1hdC9NCkZlcm1pL00KRmVybi9NCkZlcm5hbmRlei9NCkZlcm5hbmRvL00KRmVycmFyaS9NCkZlcnJhcm8vTQpGZXJyZWxsL00KRmVycmlzL00KRmV5bm1hbi9NCkZlei9NCkZpYXQvTQpGaWJlcmdsYXMvTQpGaWJvbmFjY2kvTQpGaWNodGUvTQpGaWRlbC9NCkZpZG8vTQpGaWVsZGluZy9NCkZpZWxkcy9NCkZpZ2Fyby9NCkZpZ3Vlcm9hL00KRmlqaS9NCkZpamlhbi9NUwpGaWxpcGluby9NUwpGaWxsbW9yZS9NCkZpbG9mYXgvTQpGaW5jaC9NCkZpbmxhbmQvTQpGaW5sZXkvTQpGaW5uL1NNCkZpbm5ib2dhZG90dGlyL00KRmlubmVnYW4vTQpGaW5uaXNoL00KRmlvbmEvTQpGaXJlZm94L00KRmlyZXN0b25lL00KRmlzY2hlci9NCkZpc2hlci9NCkZpc2svTQpGaXRjaC9NCkZpdHpnZXJhbGQvTQpGaXR6cGF0cmljay9NCkZpdHpyb3kvTQpGaXplYXUvTQpGbGEKRmxhbmFnYW4vTQpGbGFuZGVycy9NCkZsYXRoZWFkCkZsYXR0L00KRmxhdWJlcnQvTQpGbGVpc2NoZXIvTQpGbGVtaW5nL00KRmxlbWlzaC9NCkZsZXRjaGVyL00KRmxpbnQvTQpGbGludHN0b25lcy9NCkZsby9NCkZsb3JhL00KRmxvcmVuY2UvTQpGbG9yZW50aW5lL00KRmxvcmVzL00KRmxvcmlkYS9NCkZsb3JpZGFuL00KRmxvcmlkaWFuL1NNCkZsb3JpbmUvTQpGbG9yc2hlaW0vTQpGbG9yeS9NCkZsb3NzaWUvTQpGbG93ZXJzL00KRmxveWQvTQpGbHlubi9NCkZtL00KRm9jaC9NCkZva2tlci9NCkZvbGV5L00KRm9sZ2Vycy9NCkZvbHNvbS9NCkZvbWFsaGF1dC9NCkZvbmRhL00KRm9vc2JhbGwvTQpGb3JiZXMvTQpGb3JkL00KRm9yZW1hbi9NCkZvcmVzdC9NUgpGb3Jlc3Rlci9NCkZvcm1pY2EvTVMKRm9ybW9zYS9NCkZvcm1vc2FuL00KRm9ycmVzdC9NCkZvcnN0ZXIvTQpGb3J0YWxlemEvTQpGb3NzZS9NCkZvc3Rlci9NCkZvdG9tYXQvTQpGb3VjYXVsdC9NCkZvdXJpZXIvTQpGb3VybmV5cm9uL00KRm91cnRoCkZvd2xlci9NCkZveC9NUwpGci9NRApGcmFnb25hcmQvTQpGcmFuL00KRnJhbmNlL1NNCkZyYW5jZXMvTQpGcmFuY2VzY2EvTQpGcmFuY2luZS9NCkZyYW5jaXMvTQpGcmFuY2lzY2EvTQpGcmFuY2lzY2FuL01TCkZyYW5jaXNjby9NCkZyYW5jay9NCkZyYW5jby9NCkZyYW5jb2lzL00KRnJhbmNvaXNlL00KRnJhbmNvcGhpbGUKRnJhbmdsYWlzL00KRnJhbmsvU00KRnJhbmtlbC9NCkZyYW5rZW5zdGVpbi9NCkZyYW5rZm9ydC9NCkZyYW5rZnVydC9NUgpGcmFua2Z1cnRlci9NCkZyYW5raWUvTQpGcmFua2lzaApGcmFua2xpbi9NCkZyYW5rcy9NCkZyYW5ueS9NCkZyYW56L00KRnJhc2VyL00KRnJhdS9NTgpGcmF1bGVpbgpGcmF6aWVyL00KRnJlZC9NCkZyZWRhL00KRnJlZGRpZS9NCkZyZWRkeS9NCkZyZWRlcmljL00KRnJlZGVyaWNrL00KRnJlZGVyaWN0b24vTQpGcmVkcmljL00KRnJlZHJpY2svTQpGcmVlbWFuL00KRnJlZW1hc29uL1NNCkZyZWVtYXNvbnJ5L1NNCkZyZWV0b3duL00KRnJlaWRhL00KRnJlbW9udC9NCkZyZW5jaC9NUwpGcmVuY2htYW4vTQpGcmVuY2htZW4vTQpGcmVuY2h3b21hbi9NCkZyZW5jaHdvbWVuL00KRnJlb24vTQpGcmVzbmVsL00KRnJlc25vL00KRnJldWQvTQpGcmV1ZGlhbi9NCkZyZXkvTQpGcmV5YS9NCkZyaS9NCkZyaWRheS9TTQpGcmllZGEvTQpGcmllZGFuL00KRnJpZWRtYW4vTQpGcmllbmQvU00KRnJpZ2dhL00KRnJpZ2lkYWlyZS9NCkZyaXNiZWUvTQpGcmlzY28vTQpGcmlzaWFuL01TCkZyaXRvL00KRnJpdHovTQpGcm9iaXNoZXIvTQpGcm9kby9NCkZyb2lzc2FydC9NCkZyb21tL00KRnJvbmRlL00KRnJvbnRlbmFjL00KRnJvc3QvTQpGcm9zdGJlbHQvTQpGcnVuemUvTQpGcnkvTQpGcnllL00KRnVjaHMvTQpGdWVudGVzL00KRnVnZ2VyL00KRnVqaS9NCkZ1aml0c3UvTQpGdWppd2FyYS9NCkZ1aml5YW1hL00KRnVrdW9rYS9NCkZ1a3V5YW1hL00KRnVsYW5pL00KRnVsYnJpZ2h0L00KRnVsbGVyL00KRnVsbGVydG9uL00KRnVsdG9uL00KRnVuYWZ1dGkvTQpGdW5keS9NCkZ1cmllcy9NCkZ1cnR3YW5nbGVyL00KRnVzaHVuL00KRnV6aG91L00KRnV6emJ1c3Rlci9NCkcvTU5SQgpHQQpHQU8KR0FUVC9NCkdCL00KR0NDL00KR0RQL00KR0UvTQpHRUQKR0hRL00KR0h6CkdJCkdJRgpHSUdPCkdNL00KR01BVApHTU8KR01UL00KR05QL00KR05VL00KR09QL00KR1AvTQpHUEEKR1BPCkdQUwpHUFUKR1NBCkdURS9NCkdVCkdVSS9NCkdhL00KR2FibGUvTQpHYWJvbi9NCkdhYm9uZXNlL00KR2Fib3JvbmUvTQpHYWJyaWVsL00KR2FicmllbGEvTQpHYWJyaWVsbGUvTQpHYWNydXgvTQpHYWRzZGVuL00KR2FlYS9NCkdhZWwvU00KR2FlbGljL00KR2FnYXJpbi9NCkdhZ2UvTQpHYWlhL00KR2FpbC9NCkdhaW1hbi9NCkdhaW5lcy9NCkdhaW5zYm9yb3VnaC9NCkdhbGFoYWQvU00KR2FsYXBhZ29zL00KR2FsYXRlYS9NCkdhbGF0aWEvTQpHYWxhdGlhbnMvTQpHYWxheHkKR2FsYnJhaXRoL00KR2FsZS9NCkdhbGVuL00KR2FsaWJpL00KR2FsaWxlYW4vU00KR2FsaWxlZS9NCkdhbGlsZW8vTQpHYWxsL00KR2FsbGFnaGVyL00KR2FsbGVnb3MvTQpHYWxsaWMvTQpHYWxsaWNpc20vU00KR2FsbG8vTQpHYWxsb3dheS9NCkdhbGx1cC9NCkdhbG9pcy9NCkdhbHN3b3J0aHkvTQpHYWx2YW5pL00KR2FsdmVzdG9uL00KR2FtYQpHYW1heS9NCkdhbWJpYS9NCkdhbWJpYW4vU00KR2FtYmxlL00KR2Ftb3cvTQpHYW5kYWxmL00KR2FuZGhpL00KR2FuZGhpYW4vTQpHYW5lc2hhL00KR2FuZ2VzL00KR2FuZ3Rvay9NCkdhbnRyeS9NCkdhbnltZWRlL00KR2FwL00KR2FyYm8vTQpHYXJjaWEvTQpHYXJkbmVyL00KR2FyZXRoL00KR2FyZmllbGQvTQpHYXJmdW5rZWwvTQpHYXJnYW50dWEvTQpHYXJpYmFsZGkvTQpHYXJsYW5kL00KR2FybmVyL00KR2FycmV0dC9NCkdhcnJpY2svTQpHYXJyaXNvbi9NCkdhcnJ5L00KR2FydGgvTQpHYXJ2ZXkvTQpHYXJ5L00KR2FyemEvTQpHYXNjb255L00KR2Fzc2VyL00KR2FzdHJvZW50ZXJvbG9neQpHYXRlcy9NCkdhdGxpbmcvTQpHYXRvcmFkZS9NCkdhdHNieS9NCkdhdHVuL00KR2F1Z3Vpbi9NCkdhdWwvU00KR2F1bGlzaApHYXVzcy9NCkdhdXNzaWFuL00KR2F1dGFtYS9NCkdhdXRpZXIvTQpHYXZpbi9NCkdhd2Fpbi9NCkdheS9NCkdheWxlL00KR2F6YS9NCkdhemlhbnRlcC9NCkdkL00KR2RhbnNrL00KR2UvTQpHZWZmZW4vTQpHZWhlbm5hL00KR2VocmlnL00KR2VpZ2VyL00KR2VsYnZpZWgvTQpHZWxsZXIvTQpHZW1pbmkvTVMKR2VuL00KR2VuYS9NCkdlbmFyby9NCkdlbmUvTQpHZW5lc2lzL00KR2VuZXQvTQpHZW5ldmEvTQpHZW5ldmlldmUvTQpHZW5naGlzL00KR2Vub2EvU00KR2VudG9vL00KR2VudHJ5L00KR2VvL00KR2VvZmZyZXkvTQpHZW9yZ2UvTVMKR2VvcmdldG93bi9NCkdlb3JnZXR0ZS9NCkdlb3JnaWEvTQpHZW9yZ2lhbi9NUwpHZW9yZ2luYS9NCkdlci9NCkdlcmFsZC9NCkdlcmFsZGluZS9NCkdlcmFyZC9NCkdlcmFyZG8vTQpHZXJiZXIvTQpHZXJlL00KR2VyaXRvbC9NCkdlcm1hbi9NUwpHZXJtYW5pYy9NCkdlcm1hbnkvTQpHZXJvbmltby9NCkdlcnJ5L00KR2Vyc2h3aW4vTQpHZXJ0cnVkZS9NCkdlc3RhcG8vU00KR2V0aHNlbWFuZS9NCkdldHR5L00KR2V0dHlzYnVyZy9NCkdld3VyenRyYW1pbmVyL00KR2hhbmEvTQpHaGFuYWlhbgpHaGF0cy9NCkdoYXp2YW5pZC9NCkdoZW50L00KR2hpYmVsbGluZS9NCkdpYWNvbWV0dGkvTQpHaWFubmluaS9NCkdpYXVxdWUvTQpHaWJib24vTQpHaWJicy9NCkdpYnJhbHRhci9NUwpHaWJzb24vTQpHaWRlL00KR2lkZW9uL00KR2llbGd1ZC9NCkdpZW5haC9NCkdpbC9NCkdpbGEvTQpHaWxiZXJ0L00KR2lsYmVydG8vTQpHaWxjaHJpc3QvTQpHaWxkYS9NCkdpbGVhZC9NCkdpbGVzL00KR2lsZ2FtZXNoL00KR2lsbC9NCkdpbGxlc3BpZS9NCkdpbGxldHRlL00KR2lsbGlhbS9NCkdpbGxpYW4vTQpHaWxsaWdhbi9NCkdpbG1hbgpHaWxtb3JlL00KR2luYS9NCkdpbmdlci9NCkdpbmdyaWNoL00KR2lubnkvTQpHaW5vL00KR2luc2JlcmcvTQpHaW5zYnVyZy9NCkdpbnN1L00KR2lvcmdpb25lL00KR2lvdHRvL00KR2lvdmFubmkvTQpHaXJhdWRvdXgvTQpHaXNlbGxlL00KR2lzaC9NCkdpdEh1Yi9NCkdpdWxpYW5pL00KR2l1c2VwcGUvTQpHaXphL00KR2sKR2xhZHN0b25lL01TCkdsYWR5cy9NCkdsYXNlci9NCkdsYXNnb3cvTQpHbGFzcy9NCkdsYXN0b25idXJ5L00KR2xhc3dlZ2lhbi9TTQpHbGF4by9NCkdsZWFzb24vTQpHbGVuL00KR2xlbmRhL00KR2xlbmRhbGUKR2xlbmxpdmV0L00KR2xlbm4vTQpHbGVubmEvTQpHbG9yaWEvTQpHbG91Y2VzdGVyL00KR2xvdmVyL00KR25vc3RpYy9NCkdub3N0aWNpc20vTQpHbnVQRwpHb2EvTQpHb2JpL00KR29kL00KR29kYXJkL00KR29kZGFyZC9NCkdvZGVsL00KR29kaGVhZC9NCkdvZGl2YS9NCkdvZG90L00KR29kc3BlZWQvU00KR29kdGhhYWIvTQpHb2R1bm92L00KR29kemlsbGEvTQpHb2ViYmVscy9NCkdvZXJpbmcvTQpHb2V0aGFscy9NCkdvZXRoZS9NCkdvZmYvTQpHb2cvTQpHb2dvbC9NCkdvaWFuaWEvTQpHb2xhbi9NCkdvbGNvbmRhL00KR29sZGEvTQpHb2xkYmVyZy9NCkdvbGRlbi9NCkdvbGRpZS9NCkdvbGRpbG9ja3MvTQpHb2xkaW5nL00KR29sZG1hbi9NCkdvbGRzbWl0aC9NCkdvbGR3YXRlci9NCkdvbGR3eW4vTQpHb2xnaS9NCkdvbGdvdGhhL00KR29saWF0aC9NCkdvbWV6L00KR29tb3JyYWgvTQpHb21wZXJzL00KR29tdWxrYS9NCkdvbmR3YW5hbGFuZC9NCkdvbnphbGVzL00KR29uemFsZXovTQpHb256YWxvL00KR29vZC9NCkdvb2RhbGwvTQpHb29kbWFuL00KR29vZHJpY2gvTQpHb29kd2lsbC9NCkdvb2R3aW4vTQpHb29keWVhci9NCkdvb2dsZS9NCkdvb2xhZ29uZy9NCkdvcGhlcgpHb3JiYWNoZXYvTQpHb3JkaWFuL00KR29yZGltZXIvTQpHb3Jkb24vTQpHb3JlL00KR29yZW4vTQpHb3JleS9NCkdvcmdhcy9NCkdvcmdvbi9NCkdvcmdvbnpvbGEvTQpHb3JreS9NCkdvc3BlbC9NUwpHb3RlYm9yZy9NCkdvdGgvTQpHb3RoYW0vTQpHb3RoaWMvTVMKR290aHMKR291ZGEvU00KR291bGQvTQpHb3Vub2QvTQpHb3Zlcm5vcgpHb3lhL00KR3IvQgpHcmFibGUvTQpHcmFjY2h1cy9NCkdyYWNlL00KR3JhY2VsYW5kL00KR3JhY2llL00KR3JhY2llbGEvTQpHcmFkeS9NCkdyYWZmaWFzL00KR3JhZnRvbi9NCkdyYWhhbS9NCkdyYWhhbWUvTQpHcmFpbC9NCkdyYW1teS9NCkdyYW1waWFucy9NCkdyYW5hZGEvTQpHcmFudC9NCkdyYXNzL00KR3JhdmVzL00KR3JheS9NCkdyZWNpYW4vTQpHcmVlY2UvTQpHcmVlay9TTQpHcmVlbGV5L00KR3JlZW4vU00KR3JlZW5lL00KR3JlZW5sYW5kL00KR3JlZW5sYW5kaWMKR3JlZW5wZWFjZS9NCkdyZWVuc2Jvcm8vTQpHcmVlbnNsZWV2ZXMvTQpHcmVlbnNwYW4vTQpHcmVlbndpY2gvTQpHcmVlci9NCkdyZWcvTQpHcmVnZy9NCkdyZWdvcmlhbi9NCkdyZWdvcmlvL00KR3JlZ29yeS9NCkdyZW5hZGEvTQpHcmVuYWRpYW4vTVMKR3JlbmFkaW5lcy9NCkdyZW5kZWwvTQpHcmVub2JsZS9NCkdyZXNoYW0vTQpHcmV0YS9NCkdyZXRjaGVuL00KR3JldGVsL00KR3JldHpreS9NCkdyZXkvTQpHcmllZy9NCkdyaWZmaW4vTQpHcmlmZml0aC9NCkdyaW1lcy9NCkdyaW1tL00KR3JpbmNoL00KR3Jpcy9NCkdyb215a28vTQpHcm9waXVzL00KR3Jvc3MvTQpHcm9zei9NCkdyb3RpdXMvTQpHcm92ZXIvTQpHcm96bnkKR3J1bW1hbi9NCkdydW5keS9NCkdydW5ld2FsZC9NCkdydXMvTQpHcnV5ZXJlL1NNCkd1YWRhbGFqYXJhL00KR3VhZGFsY2FuYWwvTQpHdWFkYWxxdWl2aXIvTQpHdWFkYWx1cGUvTQpHdWFkZWxvdXBlL00KR3VhbGxhdGlyaS9NCkd1YW0vTQpHdWFtYW5pYW4KR3Vhbmd6aG91L00KR3VhbnRhbmFtby9NCkd1YXJhbmkvTQpHdWFybmllcmkvTQpHdWF0ZW1hbGEvTQpHdWF0ZW1hbGFuL01TCkd1YXlhcXVpbC9NCkd1Y2NpL00KR3VlbHBoL00KR3Vlcm5zZXkvTVMKR3VlcnJhL00KR3VlcnJlcm8vTQpHdWV2YXJhL00KR3VnZ2VuaGVpbS9NCkd1aWFuYS9NCkd1aWRvCkd1aWxsZXJtby9NCkd1aW5lYS9NCkd1aW5lYW4vTVMKR3VpbmV2ZXJlL00KR3Vpbm5lc3MvTQpHdWl5YW5nL00KR3Vpem90L00KR3VqYXJhdC9NCkd1amFyYXRpL00KR3VqcmFud2FsYS9NCkd1bGxhaC9NCkd1bGxpdmVyL00KR3VtYmVsL00KR3VudGhlci9NCkd1b2ZlbmcvTQpHdXB0YS9NCkd1cmtoYS9NCkd1cy9NCkd1c3Rhdi9NCkd1c3Rhdm8vTQpHdXN0YXZ1cy9NCkd1dGVuYmVyZy9NCkd1dGhyaWUvTQpHdXRpZXJyZXovTQpHdXkvTQpHdXlhbmEvTQpHdXlhbmVzZS9NCkd1em1hbi9NCkd3YWxpb3IvTQpHd2VuL00KR3dlbmRvbGluZS9NCkd3ZW5kb2x5bi9NCkd3eW4vTQpHeXBzeS9TTQpIL00KSEJPL00KSERECkhETUkKSERUVgpIRi9NCkhIUwpISQpISVYvTQpITQpITU8vTQpITVMKSE9WCkhQL00KSFBWCkhRL00KSFIKSFJICkhTCkhTQkMvTQpIU1QKSFQKSFRNTC9NCkhUVFAKSFVEL00KSGEvTQpIYWFzL00KSGFiYWtrdWsvTQpIYWJlci9NCkhhZGFyL00KSGFkZXMvTQpIYWRyaWFuL00KSGFmaXovTQpIYWdhci9NCkhhZ2dhaS9NCkhhZ2lvZ3JhcGhhL00KSGFndWUvTQpIYWhuL00KSGFpZGEvU00KSGFpZmEvTQpIYWlwaG9uZy9NCkhhaXRpL00KSGFpdGlhbi9NUwpIYWtrYS9NCkhha2x1eXQvTQpIYWwvU00KSGFsZGFuZS9NCkhhbGUvTQpIYWxlYWthbGEvTQpIYWxleS9NCkhhbGlmYXgvTQpIYWxsL00KSGFsbGV5L00KSGFsbGlidXJ0b24vTQpIYWxsaWUvTQpIYWxsbWFyay9NCkhhbGxvd2Vlbi9NUwpIYWxsc3RhdHQvTQpIYWxvbi9NCkhhbHMvTQpIYWxzZXkvTQpIYW0vTQpIYW1hbi9NCkhhbWJ1cmcvTVMKSGFtaHVuZy9NCkhhbWlsY2FyL00KSGFtaWxsL00KSGFtaWx0b24vTQpIYW1pbHRvbmlhbi9NCkhhbWl0aWMvTQpIYW1sZXQvTQpIYW1saW4vTQpIYW1tYXJza2pvbGQvTQpIYW1tZXJzdGVpbi9NCkhhbW1ldHQvTQpIYW1tb25kL00KSGFtbXVyYWJpL00KSGFtcHNoaXJlL00KSGFtcHRvbi9NCkhhbXN1bi9NCkhhbi9TTQpIYW5jb2NrL00KSGFuZGVsL00KSGFuZHkvTQpIYW5leS9NCkhhbmd1bC9NCkhhbmd6aG91L00KSGFuay9NCkhhbm5hL00KSGFubmFoL00KSGFubmliYWwvTQpIYW5vaS9NCkhhbm92ZXIvTQpIYW5vdmVyaWFuL00KSGFucy9NTgpIYW5zZWwvTQpIYW5zZW4vTQpIYW5zb24vTQpIYW51a2EKSGFudWtrYWgvTQpIYW51a2thaHMKSGFwc2J1cmcvTQpIYXJhcmUvTQpIYXJiaW4vTQpIYXJkaW4vTQpIYXJkaW5nL00KSGFyZHkvTQpIYXJncmVhdmVzL00KSGFybGFuL00KSGFybGVtL00KSGFybGVxdWluL00KSGFybGV5L00KSGFybG93L00KSGFybW9uL00KSGFyb2xkL00KSGFycGVyL00KSGFycHkvU00KSGFycmVsbC9NCkhhcnJpZXQvTQpIYXJyaWV0dC9NCkhhcnJpbmd0b24vTQpIYXJyaXMvTQpIYXJyaXNidXJnL00KSGFycmlzb24vTQpIYXJyb2RzL00KSGFycnkvTQpIYXJ0L00KSGFydGUvTQpIYXJ0Zm9yZC9NCkhhcnRsaW5lL00KSGFydG1hbi9NCkhhcnZhcmQvTQpIYXJ2ZXkvTQpIYXNicm8vTQpIYXNpZGltL00KSGFza2VsbC9NCkhhc3RpbmdzL00KSGF0ZmllbGQvTQpIYXRoYXdheS9NCkhhdHNoZXB1dC9NCkhhdHRlcmFzL00KSGF0dGllL00KSGF1cHRtYW5uL00KSGF1c2EvTQpIYXVzZG9yZmYvTQpIYXZhbmEvTVMKSGF2YXJ0aS9NCkhhdmVsL00KSGF2b2xpbmUvTQpIYXcKSGF3YWlpL00KSGF3YWlpYW4vU00KSGF3a2luZy9NCkhhd2tpbnMvTQpIYXdrcwpIYXd0aG9ybmUvTQpIYXkvU00KSGF5ZGVuL00KSGF5ZG4vTQpIYXllay9NCkhheWVzL00KSGF5bmVzL00KSGF5cy9NCkhheXdhcmQvTQpIYXl3b29kL00KSGF5d29ydGgvTQpIYXplbC9NCkhhemxpdHQvTQpIZS9NCkhlYWQvTQpIZWFyc3QvTQpIZWF0aC9NUgpIZWF0aGVyL00KSGVhdmlzaWRlL00KSGViCkhlYmUvTQpIZWJlcnQvTQpIZWJyYWljL00KSGVicmFpc20vU00KSGVicmV3L01TCkhlYnJld3MvTQpIZWJyaWRlcy9NCkhlY2F0ZS9NCkhlY3Rvci9NCkhlY3ViYS9NCkhlZXAvTQpIZWZuZXIvTQpIZWdlbC9NCkhlZ2VsaWFuL00KSGVnaXJhL00KSGVpZGVnZ2VyL00KSGVpZGVsYmVyZy9NCkhlaWRpL00KSGVpZmV0ei9NCkhlaW1saWNoL00KSGVpbmUvTQpIZWluZWtlbi9NCkhlaW5sZWluL00KSGVpbnJpY2gvTQpIZWluei9NCkhlaXNlbmJlcmcvTQpIZWlzbWFuL00KSGVsZW4vTQpIZWxlbmEvTQpIZWxlbmUvTQpIZWxnYS9NCkhlbGljb24vTQpIZWxpb3BvbGlzL00KSGVsaW9zL00KSGVsbGVuZS9TTQpIZWxsZW5pYy9NCkhlbGxlbmlzbS9NUwpIZWxsZW5pc3QKSGVsbGVuaXN0aWMvTQpIZWxsZW5pemF0aW9uL00KSGVsbGVuaXplL00KSGVsbGVyL00KSGVsbGVzcG9udC9NCkhlbGxtYW4vTQpIZWxtaG9sdHovTQpIZWxvaXNlL00KSGVsc2lua2kvTQpIZWx2ZXRpYW4KSGVsdmV0aXVzL00KSGVtaW5nd2F5L00KSGVuY2gvTQpIZW5kZXJzb24vTQpIZW5kcmljay9NUwpIZW5kcmlja3MvTQpIZW5kcml4L00KSGVubGV5L00KSGVubmVzc3kvTQpIZW5yaS9NCkhlbnJpZXR0YS9NCkhlbnJpay9NCkhlbnJ5L00KSGVuc2xleS9NCkhlbnNvbi9NCkhlcGJ1cm4vTQpIZXBoYWVzdHVzL00KSGVwcGxld2hpdGUvTQpIZXJhL00KSGVyYWNsZXMvTQpIZXJhY2xpdHVzL00KSGVyYWtsZXMvTQpIZXJiYXJ0L00KSGVyYmVydC9NCkhlcmN1bGFuZXVtL00KSGVyY3VsZWFuCkhlcmN1bGVzL00KSGVyZGVyL00KSGVyZWZvcmQvU00KSGVyZXJvL00KSGVyaWJlcnRvL00KSGVybWFuL00KSGVybWFwaHJvZGl0dXMvTQpIZXJtZXMvTQpIZXJtaW5pYS9NCkhlcm1pdGFnZS9NCkhlcm1pdGUvTQpIZXJtb3NpbGxvL00KSGVybmFuZGV6L00KSGVyb2QvTQpIZXJvZG90dXMvTQpIZXJyL01HCkhlcnJlcmEvTQpIZXJyaWNrL00KSGVycmluZy9NCkhlcnNjaGVsL00KSGVyc2V5L00KSGVyc2hlbC9NCkhlcnNoZXkvTQpIZXJ0ei9NCkhlcnR6c3BydW5nL00KSGVyemVnb3ZpbmEvTQpIZXJ6bC9NCkhlc2h2YW4vTQpIZXNpb2QvTQpIZXNwZXJ1cy9NCkhlc3MvTQpIZXNzZS9NCkhlc3NpYW4vTQpIZXN0ZXIvTQpIZXN0b24vTQpIZXR0aWUvTQpIZXdpdHQvTQpIZXdsZXR0L00KSGV5ZXJkYWhsL00KSGV5d29vZC9NCkhlemJvbGxhaC9NCkhlemVraWFoL00KSGYvTQpIZy9NCkhpYWxlYWgvTQpIaWF3YXRoYS9NCkhpYmVybmlhL00KSGliZXJuaWFuCkhpY2ttYW4vTQpIaWNrb2svTQpIaWNrcy9NCkhpZXJvbnltdXMvTQpIaWdhc2hpb3Nha2EKSGlnZ2lucy9NCkhpZ2hsYW5kZXIvU00KSGlnaGxhbmRzCkhpZ2huZXNzL00KSGlsYXJpby9NCkhpbGFyeS9NCkhpbGJlcnQvTQpIaWxkYS9NCkhpbGRlYnJhbmQvTQpIaWxmaWdlci9NCkhpbGwvTQpIaWxsYXJ5L00KSGlsbGVsL00KSGlsdG9uL00KSGltYWxheWEvU00KSGltYWxheWFuCkhpbWFsYXlhcy9NCkhpbW1sZXIvTQpIaW5heWFuYS9NCkhpbmRlbWl0aC9NCkhpbmRlbmJ1cmcvTQpIaW5kaS9NCkhpbmR1L1NNCkhpbmR1aXNtL1NNCkhpbmR1c3Rhbi9NCkhpbmR1c3RhbmkvU00KSGluZXMvTQpIaW50b24vTQpIaXBwYXJjaHVzL00KSGlwcG9jcmF0ZXMvTQpIaXBwb2NyYXRpYy9NCkhpcmFtL00KSGlyb2J1bWkvTQpIaXJvaGl0by9NCkhpcm9zaGltYS9NCkhpc3BhbmljL1NNCkhpc3BhbmlvbGEvTQpIaXNzL00KSGl0YWNoaS9NCkhpdGNoY29jay9NCkhpdGxlci9NUwpIaXR0aXRlL1NNCkhtb25nL00KSG8vTQpIb2JhcnQvTQpIb2JiZXMvTQpIb2Jicy9NCkhvY2tuZXkvTQpIb2RnZS9TTQpIb2RnZXMvTQpIb2Rna2luL00KSG9mZi9NCkhvZmZhL00KSG9mZm1hbi9NCkhvZnN0YWR0ZXIvTQpIb2dhbi9NCkhvZ2FydGgvTQpIb2d3YXJ0cy9NCkhvaGVubG9oZS9NCkhvaGVuc3RhdWZlbi9NCkhvaGVuem9sbGVybi9NCkhvaGhvdC9NCkhvaG9rYW0vTQpIb2trYWlkby9NCkhva3VzYWkvTQpIb2xiZWluL00KSG9sY29tYi9NCkhvbGRlbi9NCkhvbGRlci9NCkhvbGlkYXkvTQpIb2xpbmVzcwpIb2xsYW5kL1pTTVIKSG9sbGFuZGVyL00KSG9sbGVyaXRoL00KSG9sbGV5L00KSG9sbGllL00KSG9sbGlzL00KSG9sbG93YXkvTQpIb2xseS9NCkhvbGx5d29vZC9NCkhvbG1hbi9NCkhvbG1lcy9NCkhvbG9jYXVzdC9NCkhvbG9jZW5lL00KSG9sc3QvTQpIb2xzdGVpbi9TTQpIb2x0L00KSG9tZXIvTQpIb21lcmljL00KSG9uCkhvbmRhL00KSG9uZHVyYW4vTVMKSG9uZHVyYXMvTQpIb25lY2tlci9NCkhvbmV5d2VsbC9NCkhvbmcKSG9uaWFyYS9NCkhvbm9sdWx1L00KSG9ub3JhYmxlCkhvbnNodS9NCkhvb2QvTQpIb29rZS9STQpIb29rZXIvTQpIb29wZXIvTQpIb29zaWVyL01TCkhvb3RlcnMvTQpIb292ZXIvTVMKSG9wZS9NCkhvcGV3ZWxsL00KSG9waS9TTQpIb3BraW5zL00KSG9wcGVyL00KSG9yYWNlL00KSG9yYWNpby9NCkhvcmF0aW8vTQpIb3JtZWwvTQpIb3JtdXovTQpIb3JuL00KSG9ybmJsb3dlci9NCkhvcm5lL00KSG9yb3dpdHovTQpIb3J0aHkvTQpIb3J0b24vTQpIb3J1cy9NCkhvc2VhL00KSG9zdC9TTQpIb3Rwb2ludC9NCkhvdHRlbnRvdC9TTQpIb3VkaW5pL00KSG91c2UvTQpIb3VzbWFuL00KSG91c3Rvbi9NCkhvdXlobmhubS9NCkhvdmhhbmVzcy9NCkhvd2FyZC9NCkhvd2UvTQpIb3dlbGwvTVMKSG93ZWxscy9NCkhvd3JhaApIb3lsZS9NCkhyb3RoZ2FyL00KSHRzCkh1YW5nL00KSHViYmFyZC9NCkh1YmJsZS9NCkh1YmVyL00KSHViZXJ0L00KSHVjay9NCkh1ZGRlcnNmaWVsZApIdWRzb24vTQpIdWVydGEvTQpIdWV5L00KSHVmZi9NCkh1ZmZtYW4vTQpIdWdnaW5zL00KSHVnaC9NUwpIdWdoZXMvTQpIdWdvL00KSHVndWVub3QvTVMKSHVpL00KSHVpdHppbG9wb3RjaGxpL00KSHVsbC9NCkh1bWJlcnRvL00KSHVtYm9sZHQvTQpIdW1lL00KSHVtbWVyL00KSHVtcGhyZXkvU00KSHVtdmVlL00KSHVuL1NNCkh1bmcvTQpIdW5nYXJpYW4vU00KSHVuZ2FyeS9NCkh1bnNwZWxsL00KSHVudC9NUgpIdW50ZXIvTQpIdW50aW5ndG9uL00KSHVudGxleS9NCkh1bnRzdmlsbGUvTQpIdXJsZXkvTQpIdXJvbi9NCkh1cnN0L00KSHVzL00KSHVzc2Vpbi9NCkh1c3NlcmwvTQpIdXNzaXRlL00KSHVzdG9uL00KSHV0Y2hpbnNvbi9NCkh1dHRvbi9NCkh1dHUvTQpIdXhsZXkvTQpIdXlnZW5zL00KSHlhZGVzL00KSHlkZS9NCkh5ZGVyYWJhZC9NCkh5ZHJhL00KSHltZW4vTQpIeXBlcmlvbi9NCkh5dW5kYWkvTQpIei9NCkknZApJJ2xsCkknbQpJJ3ZlCkkvTQpJQQpJQk0vTQpJQ0JNL1NNCklDQwpJQ1UKSUQvU00KSURFCklFCklFRApJRUVFCklLRUEvTQpJTApJTUYvTQpJTUhPCklNTlNITwpJTU8KSU4KSU5HL00KSU5SSQpJTlMKSU9VL00KSVAKSVBBCklQTwpJUS9NCklSQS9TTQpJUkMKSVJTL00KSVNCTgpJU0lTCklTTy9NCklTUApJU1MKSVQKSVVECklWL1NNCklWRgpJYQpJYWNjb2NhL00KSWFnby9NCklhbi9NCklhcGV0dXMvTQpJYmFkYW4vTQpJYmVyaWEvTQpJYmVyaWFuL00KSWJpemEvTQpJYmxpcy9NCkliby9NCklic2VuL00KSWNhaG4vTQpJY2FydXMvTQpJY2UKSWNlbGFuZC9NUloKSWNlbGFuZGVyL00KSWNlbGFuZGljL00KSWRhL00KSWRhaG8vU00KSWRhaG9hbi9NUwpJZGFob2VzCklleWFzdS9NCklnbmFjaW8vTQpJZ25hdGl1cy9NCklnb3IvTQpJZ3Vhc3N1L00KSWpzc2VsbWVlci9NCklrZS9NCklraG5hdG9uL00KSWxhL00KSWxlbmUvTQpJbGlhZC9TTQpJbGwKSWxsaW5vaXMvTQpJbGxpbm9pc2FuL01TCklsbHVtaW5hdGkvTQpJbHl1c2hpbi9NCkltZWxkYS9NCkltaG90ZXAvTQpJbW9kaXVtL00KSW1vZ2VuZS9NCkltdXMvTQpJbi9NCkluYS9NCkluYwpJbmNhL1NNCkluY2hvbi9NCkluY29ycG9yYXRlZApJbmQKSW5kZXBlbmRlbmNlL00KSW5kaWEvTQpJbmRpYW4vTVMKSW5kaWFuYS9NCkluZGlhbmFuL1NNCkluZGlhbmFwb2xpcy9NCkluZGlhbmlhbgpJbmRpZXMvTQpJbmRpcmEvTQpJbmRvY2hpbmEvTQpJbmRvY2hpbmVzZS9NCkluZG9uZXNpYS9NCkluZG9uZXNpYW4vU00KSW5kb3JlL00KSW5kcmEvTQpJbmR1cy9NCkluZHkvU00KSW5lcy9NCkluZXovTQpJbmdlL00KSW5nbGV3b29kCkluZ3JhbS9NCkluZ3Jlcy9NCkluZ3JpZC9NCklubm9jZW50L00KSW5uc2JydWNrCklub251L00KSW5xdWlzaXRpb24vTQpJbnN0Ckluc3RhZ3JhbS9NCkluc3RhbWF0aWMvTQpJbnRlbC9NCkludGVsc2F0L00KSW50ZXJuYXRpb25hbGUvTQpJbnRlcm5ldC9TTQpJbnRlcnBvbC9NCkludWl0L01TCkludWt0aXR1dC9NCkludmFyL00KSW8vTQpJb25lc2NvL00KSW9uaWFuL01TCklvbmljL1NNCklvd2EvU00KSW93YW4vTVMKSXBoaWdlbmlhL00KSXBzd2ljaApJcWFsdWl0L00KSXFiYWwvTQpJcXVpdG9zL00KSXIvTQpJcmEvTQpJcmFuL00KSXJhbmlhbi9TTQpJcmFxL00KSXJhcWkvTVMKSXJlbGFuZC9NCklyZW5lL00KSXJpcy9NCklyaXNoL01SCklyaXNobWFuL00KSXJpc2htZW4vTQpJcmlzaHdvbWFuL00KSXJpc2h3b21lbi9NCklya3V0c2svTQpJcm1hL00KSXJvcXVvaWFuL1NNCklyb3F1b2lzL00KSXJyYXdhZGR5L00KSXJ0aXNoL00KSXJ2aW4vTQpJcnZpbmUvTQpJcnZpbmcvTQpJcndpbi9NCklzYWFjL00KSXNhYmVsL00KSXNhYmVsbGEvTQpJc2FiZWxsZS9NCklzYWlhaC9NCklzY2FyaW90L00KSXNmYWhhbi9NCklzaGVyd29vZC9NCklzaGltL00KSXNobWFlbC9NCklzaHRhci9NCklzaWFoL00KSXNpZHJvL00KSXNpcy9NCklzbGFtL01TCklzbGFtYWJhZC9NCklzbGFtaWMvTQpJc2xhbWlzbS9NCklzbGFtaXN0L00KSXNsYW1vcGhvYmlhCklzbGFtb3Bob2JpYwpJc21hZWwvTQpJc21haWwvTQpJc29sZGUvTQpJc3BlbGwvTQpJc3JhZWwvU00KSXNyYWVsaS9TTQpJc3JhZWxpdGUvTQpJc3NhYy9NCklzc2FjaGFyL00KSXN0YW5idWwvTQpJc3V6dS9NCkl0Ckl0YWlwdS9NCkl0YWwKSXRhbGlhbi9TTQpJdGFsaWFuYXRlCkl0YWx5L00KSXRhc2NhL00KSXRoYWNhL00KSXRoYWNhbi9NCkl0by9NCkl2YS9NCkl2YW4vTQpJdmFuaG9lL00KSXZlcy9NCkl2b3JpYW4KSXZvcnkvTQpJdnkvTQpJeWFyL00KSXphYWsvTQpJemFuYWdpL00KSXphbmFtaS9NCkl6aGV2c2svTQpJem1pci9NCkl6b2QvTQpJenZlc3RpYS9NCkovTUQKSkNTCkpECkpGSy9NCkpQCkpQRUcKSlYKSmFjay9NCkphY2tpZS9NCkphY2tseW4vTQpKYWNrc29uL00KSmFja3Nvbmlhbi9NCkphY2tzb252aWxsZS9NCkphY2t5L00KSmFjbHluL00KSmFjb2IvU00KSmFjb2JlYW4vTQpKYWNvYmkvTQpKYWNvYmluL00KSmFjb2JpdGUvTQpKYWNvYnMvTQpKYWNvYnNvbi9NCkphY3F1YXJkL00KSmFjcXVlbGluZS9NCkphY3F1ZWx5bi9NCkphY3F1ZXMvTQpKYWN1enppL00KSmFnZ2VyL00KSmFnaWVsbG9uL00KSmFndWFyL00KSmFoYW5naXIvTQpKYWltZS9NCkphaW4vTQpKYWluaXNtL00KSmFpcHVyL00KSmFrYXJ0YS9NCkpha2UvTQpKYW1hYWwvTQpKYW1haWNhL00KSmFtYWljYW4vU00KSmFtYWwvTQpKYW1hci9NCkphbWUvU00KSmFtZWwvTQpKYW1lcy9NCkphbWVzdG93bi9NCkphbWkvTQpKYW1pZS9NCkphbi9NCkphbmEvTQpKYW5hY2VrL00KSmFuZS9NCkphbmVsbC9NCkphbmVsbGUvTQpKYW5ldC9NCkphbmV0dGUvTQpKYW5pY2UvTQpKYW5pZS9NCkphbmluZS9NCkphbmlzL00KSmFuaXNzYXJ5L00KSmFuamF3ZWVkL00KSmFubmEvTQpKYW5uaWUvTQpKYW5zZW4vTQpKYW5zZW5pc3QvTQpKYW51YXJ5L1NNCkphbnVzL00KSmFwL1NNCkphcGFuL00KSmFwYW5lc2UvTVMKSmFwdXJhL00KSmFyZWQvTQpKYXJsc2JlcmcvTQpKYXJyZWQvTQpKYXJyZXR0L00KSmFycm9kL00KSmFydmlzL00KSmFzbWluZS9NCkphc29uL00KSmFzcGVyL00KSmF0YWthL00KSmF2YS9TTQpKYXZhU2NyaXB0L00KSmF2YW5lc2UvTQpKYXZpZXIvTQpKYXhhcnRlcy9NCkpheS9NCkpheWFwdXJhL00KSmF5YXdhcmRlbmUvTQpKYXljZWUvTVMKSmF5Y2Vlcy9NCkpheW5lL00KSmF5c29uL00KSmVhbi9NCkplYW5ldHRlL00KSmVhbmllL00KSmVhbmluZS9NCkplYW5uZS9NCkplYW5uZXR0ZS9NCkplYW5uaWUvTQpKZWFubmluZS9NCkplZC9NCkplZGkvTQpKZWVwL00KSmVldmVzL00KSmVmZi9NCkplZmZlcmV5L00KSmVmZmVyc29uL00KSmVmZmVyc29uaWFuL00KSmVmZmVyeS9NCkplZmZyZXkvTQpKZWZmcnkvTQpKZWhvc2hhcGhhdC9NCkplaG92YWgvTQpKZWt5bGwvTQpKZW5pZmVyL00KSmVua2lucy9NCkplbm5hL00KSmVubmVyL00KSmVubmllL00KSmVubmlmZXIvTQpKZW5uaW5ncy9NCkplbm55L00KSmVuc2VuL00KSmVwaHRoYWgvTQpKZXJhbGQvTQpKZXJlbWlhaC9NCkplcmVtaWFocwpKZXJlbXkvTQpKZXJpL00KSmVyaWNoby9NCkplcm1haW5lL00KSmVyb2JvYW0vTQpKZXJvbGQvTQpKZXJvbWUvTQpKZXJyaS9NCkplcnJvZC9NCkplcnJvbGQvTQpKZXJyeS9NCkplcnNleS9NUwpKZXJ1c2FsZW0vTQpKZXNzL00KSmVzc2UvTQpKZXNzaWNhL00KSmVzc2llL00KSmVzdWl0L01TCkplc3VzL00KSmV0d2F5L00KSmV3L1NNCkpld2VsL00KSmV3ZWxsL00KSmV3ZXNzL01TCkpld2lzaC9QTQpKZXdyeS9NCkplemViZWwvU00KSmlkZGEvTQpKaWxpbi9NCkppbGwvTQpKaWxsaWFuL00KSmltL00KSmltZW5lei9NCkppbW1pZS9NCkppbW15L00KSmluYW4vTQpKaW5uYWgvTQpKaW5ueS9NCkppdmFyby9NCkpvL00KSm9hbi9NCkpvYW5uL00KSm9hbm5hL00KSm9hbm5lL00KSm9hcXVpbi9NCkpvYi9TTQpKb2JzL00KSm9jYXN0YS9NCkpvY2VseW4vTQpKb2NrL00KSm9ja2V5L00KSm9kaS9NCkpvZGllL00KSm9keS9NCkpvZS9NCkpvZWwvTQpKb2V5L00KSm9namFrYXJ0YS9NCkpvaGFubi9NCkpvaGFubmEvTQpKb2hhbm5lcy9NCkpvaGFubmVzYnVyZy9NCkpvaG4vU00KSm9obmF0aGFuL00KSm9obmF0aG9uL00KSm9obmllL00KSm9obm5pZS9NCkpvaG5ueS9NCkpvaG5zL00KSm9obnNvbi9NCkpvaG5zdG9uL00KSm9sZW5lL00KSm9sc29uL00KSm9uL00KSm9uYWgvTQpKb25haHMKSm9uYXMvTQpKb25hdGhhbi9NCkpvbmF0aG9uL00KSm9uZXMvTQpKb25pL00KSm9uc29uL00KSm9wbGluL00KSm9yZGFuL00KSm9yZGFuaWFuL01TCkpvcmdlL00KSm9zZS9NCkpvc2VmL00KSm9zZWZhL00KSm9zZWZpbmEvTQpKb3NlcGgvTQpKb3NlcGhpbmUvTQpKb3NlcGhzCkpvc2VwaHNvbi9NCkpvc2VwaHVzL00KSm9zaC9NCkpvc2h1YS9NCkpvc2lhaC9NCkpvc2llL00KSm9zdWUvTQpKb3VsZS9NCkpvdmUvTQpKb3ZpYW4vTQpKb3kvTQpKb3ljZS9NCkpveWNlYW4vTQpKb3luZXIvTQpKcG4KSnIvTQpKdWFuL00KSnVhbmEvTQpKdWFuaXRhL00KSnVhcmV6L00KSnViYWwvTQpKdWRhZW8KSnVkYWgvTQpKdWRhaWMKSnVkYWljYWwKSnVkYWlzbS9NUwpKdWRhcy9NUwpKdWRkL00KSnVkZS9NCkp1ZGVhL00KSnVkZ2VzCkp1ZGl0aC9NCkp1ZHNvbi9NCkp1ZHkvTQpKdWdnZXJuYXV0L00KSnVsCkp1bGVzL00KSnVsaWEvTQpKdWxpYW4vTQpKdWxpYW5hL00KSnVsaWFubmUvTQpKdWxpZS9NCkp1bGlldC9NCkp1bGlldHRlL00KSnVsaW8vTQpKdWxpdXMvTQpKdWxsaWFyZC9NCkp1bHkvU00KSnVuL00KSnVuZS9TTQpKdW5lYXUvTQpKdW5nL00KSnVuZ2ZyYXUvTQpKdW5naWFuL00KSnVuaW9yL1NNCkp1bmtlci9TTQpKdW5vL00KSnVwaXRlci9NCkp1cmFzc2ljL00KSnVydWEvTQpKdXN0aWNlL00KSnVzdGluL00KSnVzdGluZS9NCkp1c3Rpbmlhbi9NCkp1dGxhbmQvTQpKdXZlbmFsL00KSy9TTU5HSgpLQi9NCktDCktGQy9NCktHQi9NCktJQQpLS0svTQpLTy9NCktQCktTCktZCkthYWJhL00KS2FidWwvTQpLYWZrYS9NCkthZmthZXNxdWUvTQpLYWdvc2hpbWEvTQpLYWhsdWEvTQpLYWlmZW5nL00KS2Fpc2VyL01TCkthaXRsaW4vTQpLYWxhaGFyaS9NCkthbGFtYXpvby9NCkthbGFzaG5pa292L00KS2FsYi9NCkthbGV2YWxhL00KS2FsZ29vcmxpZS9NCkthbGkvTQpLYWxteWsvTQpLYW1hL00KS2FtY2hhdGthL00KS2FtZWhhbWVoYS9NCkthbXBhbGEvTQpLYW1wdWNoZWEvTQpLYW4vU00KS2FuY2hlbmp1bmdhL00KS2FuZGFoYXIvTQpLYW5kaW5za3kvTQpLYW5lL00KS2FubmFkYS9NCkthbm8vTQpLYW5wdXIvTQpLYW5zYW4vTVMKS2Fuc2FzL00KS2FudC9NCkthbnRpYW4vTQpLYW9oc2l1bmcvTQpLYXBvc2kvTQpLYXJhL00KS2FyYWNoaS9NCkthcmFnYW5kYS9NCkthcmFrb3J1bS9NCkthcmFtYXpvdi9NCkthcmVlbS9NCkthcmVuL00KS2FyZW5pbmEvTQpLYXJpL00KS2FyaW4vTQpLYXJpbmEvTQpLYXJsL00KS2FybGEvTQpLYXJsb2ZmL00KS2Fyby9NCkthcm9sL00KS2Fycm9vL00KS2FyeW4vTQpLYXNhaS9NCkthc2V5L00KS2FzaG1pci9TTQpLYXNwYXJvdi9NCkthdGUvTQpLYXRlbHluL00KS2F0aGFyaW5lL00KS2F0aGVyaW5lL00KS2F0aGVyeW4vTQpLYXRoaWF3YXIvTQpLYXRoaWUvTQpLYXRobGVlbi9NCkthdGhtYW5kdS9NCkthdGhyaW5lL00KS2F0aHJ5bi9NCkthdGh5L00KS2F0aWUvTQpLYXRpbmEvTQpLYXRtYWkvTQpLYXRvd2ljZS9NCkthdHJpbmEvTQpLYXR5L00KS2F1YWkvTQpLYXVmbWFuL00KS2F1bmFzL00KS2F1bmRhL00KS2F3YWJhdGEvTQpLYXdhc2FraS9NCktheS9NCktheWUvTQpLYXlsYS9NCkthemFraC9NCkthemFraHMKS2F6YWtoc3Rhbi9NCkthemFuL00KS2F6YW50emFraXMvTQpLYi9NCktlYXRvbi9NCktlYXRzL00KS2Vjay9NCktlZW5hbi9NCktlZXdhdGluL00KS2VpbGxvci9NCktlaXNoYS9NCktlaXRoL00KS2VsbGVyL00KS2VsbGV5L00KS2VsbGkvTQpLZWxsaWUvTQpLZWxsb2dnL00KS2VsbHkvTQpLZWxzZXkvTQpLZWx2aW4vTQpLZW1lcm92by9NCktlbXAvTQpLZW1waXMvTQpLZW4vTQpLZW5kYWxsL00KS2VuZHJhL00KS2VuZHJpY2svTQpLZW5tb3JlL00KS2VubmFuL00KS2VubmVkeS9NCktlbm5ldGgvTQpLZW5uaXRoL00KS2VubnkvTQpLZW50L00KS2VudG9uL00KS2VudHVja2lhbi9NUwpLZW50dWNreS9NCktlbnlhL00KS2VueWFuL1NNCktlbnlhdHRhL00KS2VueW9uL00KS2VvZ2gvTQpLZW9rdWsvTQpLZXBsZXIvTQpLZXJlbnNreS9NCktlcmkvTQpLZXJtaXQvTQpLZXJuL00KS2Vyb3VhYy9NCktlcnIvTQpLZXJyaS9NCktlcnJ5L00KS2V0dGVyaW5nL00KS2V2ZW4vTQpLZXZpbi9NCktldmxhci9NCktldm9ya2lhbi9NCktld3BpZS9NCktleS9NCktleW5lcy9NCktleW5lc2lhbi9NCktoYWJhcm92c2svTQpLaGFjaGF0dXJpYW4vTQpLaGFsaWQvTQpLaGFuL00KS2hhcmtvdi9NCktoYXJ0b3VtL00KS2hheXlhbS9NCktoYXphci9NCktobWVyL00KS2hvaWtob2kvTQpLaG9pc2FuL00KS2hvbWVpbmkvTQpLaG9yYW5hL00KS2hydXNoY2hldi9NCktodWZ1L00KS2h1bG5hL00KS2h3YXJpem1pL00KS2h5YmVyL00KS2lja2Fwb28vTQpLaWRkL00KS2llbC9NCktpZXJrZWdhYXJkL00KS2lldGgvTQpLaWV2L00KS2lnYWxpL00KS2lrdXl1L00KS2lsYXVlYS9NCktpbGltYW5qYXJvL00KS2lscm95L00KS2ltL00KS2ltYmVybGV5L00KS2ltYmVybHkvTQpLaW5nL00KS2luZ3N0b24vTQpLaW5nc3Rvd24vTQpLaW5rbydzCktpbm5leS9NCktpbnNleS9NCktpbnNoYXNhL00KS2lvd2EvTVMKS2lwL00KS2lwbGluZy9NCktpcmJ5L00KS2lyY2hob2ZmL00KS2lyY2huZXIvTQpLaXJnaGlzdGFuL00KS2lyZ2hpei9NCktpcmdoaXppYS9NCktpcmliYXRpL00KS2lyaW55YWdhL00KS2lyay9NCktpcmtsYW5kL00KS2lya3BhdHJpY2svTQpLaXJvdi9NCktpcnN0ZW4vTQpLaXNhbmdhbmkvTQpLaXNoaW5ldi9NCktpc2xldi9NCktpc3Npbmdlci9NCktpdC9NCktpdGFreXVzaHUvTQpLaXRjaGVuZXIvTQpLaXR0eS9NCktpd2FuaXMvTQpLbGFuL00KS2xhbnNtYW4vTQpLbGF1cy9NCktsZWUvTQpLbGVlbmV4L01TCktsZWluL00KS2xpbXQvTQpLbGluZS9NCktsaW5nb24vTQpLbG9uZGlrZS9NUwpLbWFydC9NCktuYXBwL00KS25lc3NldC9NCktuZ3dhcnJleWUvTQpLbmlja2VyYm9ja2VyL00KS25pZXZlbC9NCktuaWdodC9NCktub3BmL00KS25vc3Nvcy9NCktub3dsZXMvTQpLbm94L00KS25veHZpbGxlL00KS251ZHNlbi9NCktudXRoL00KS251dGhzCktvYmUvTQpLb2NoL00KS29jaGFiL00KS29kYWNocm9tZS9NCktvZGFrL00KS29kYWx5L00KS29kaWFrL00KS29lc3RsZXIvTQpLb2hpbm9vci9NCktvaGwvTQpLb2l6dW1pL00KS29qYWsvTQpLb2x5bWEvTQpLb21tdW5pem1hL00KS29uZy9NCktvbmdvL00KS29ucmFkL00KS29vbnR6L00KS29wcGVsL00KS29yYW4vTVMKS29yYW5pYwpLb3JlYS9NCktvcmVhbi9TTQpLb3JuYmVyZy9NCktvcnkvTQpLb3J6eWJza2kvTQpLb3NjaXVza28vTQpLb3NzdXRoL00KS29zeWdpbi9NCktvdWZheC9NCktvd2xvb24vTQpLci9NCktyYWZ0L00KS3Jha2F0b2EvTQpLcmFrb3cvTQpLcmFtZXIvTQpLcmFzbm9kYXIvTQpLcmFzbm95YXJzay9NCktyZWJzL00KS3JlbWxpbi9NCktyZW1saW5vbG9naXN0CktyZW1saW5vbG9neQpLcmVzZ2UvTQpLcmluZ2xlL00KS3Jpcy9NCktyaXNobmEvTQpLcmlzaG5hbXVydGkvTQpLcmlzdGEvTQpLcmlzdGVuL00KS3Jpc3RpL00KS3Jpc3RpZS9NCktyaXN0aW4vTQpLcmlzdGluYS9NCktyaXN0aW5lL00KS3Jpc3RvcGhlci9NCktyaXN0eS9NCktyb2MvTQpLcm9nZXIvTQpLcm9uZWNrZXIvTQpLcm9wb3RraW4vTQpLcnVnZXIvTQpLcnVnZXJyYW5kL00KS3J1cHAvTQpLcnlzdGFsL00KS3NoYXRyaXlhL00KS3VibGFpL00KS3Vicmljay9NCkt1aG4vTQpLdWlieXNoZXYvTQpLdWx0aHVtbS9NCkt1bm1pbmcvTQpLdW9taW50YW5nL00KS3VyZC9NCkt1cmRpc2gvTQpLdXJkaXN0YW4vTQpLdXJvc2F3YS9NCkt1cnQvTQpLdXJ0aXMvTQpLdXNjaC9NCkt1dHV6b3YvTQpLdXdhaXQvTQpLdXdhaXRpL1NNCkt1em5ldHMvTQpLdXpuZXRzay9NCkt3YWtpdXRsL00KS3dhbi9NCkt3YW5nanUvTQpLd2FuemFhL01TCkt5L01ICkt5bGUvTQpLeW90by9NCkt5cmd5enN0YW4vTQpLeXVzaHUvTQpMJ0Ftb3VyL00KTCdFbmZhbnQKTCdPcmVhbC9NCkwnT3V2ZXJ0dXJlL00KTC9NTgpMQQpMQU4vTQpMQkovTQpMQwpMQ0QvTQpMQ00KTERDCkxFRC9NCkxHL00KTEdCVApMSUZPCkxMCkxMQi9NCkxMRC9NCkxORwpMT0dPCkxQL00KTFBHCkxQTi9TTQpMU0FUCkxTRC9NCkxWTgpMYS9TTQpMYWIKTGFiYW4vTQpMYWJyYWRvci9TTQpMYWJyYWRvcmVhbgpMYWNleS9NCkxhY2hlc2lzL00KTGFjeS9NCkxhZG9nYS9NCkxhZG9ubmEvTQpMYWR5L00KTGFkeXNoaXAvTVMKTGFmYXlldHRlL00KTGFmaXR0ZS9NCkxhZ29zL00KTGFncmFuZ2UvTQpMYWdyYW5naWFuL00KTGFob3JlL00KTGFpdXMvTQpMYWpvcy9NCkxha2Vpc2hhL00KTGFrZXdvb2QKTGFraXNoYS9NCkxha290YS9NCkxha3NobWkvTQpMYW1haXNtL1NNCkxhbWFyL00KTGFtYXJjay9NCkxhbWF6ZS9NCkxhbWIvTQpMYW1iZXJ0L00KTGFtYm9yZ2hpbmkvTQpMYW1icnVzY28vTQpMYW1lbnRhdGlvbnMKTGFtb250L00KTGFuYS9NCkxhbmFpL00KTGFuY2FzaGlyZS9NCkxhbmNhc3Rlci9NCkxhbmNlL00KTGFuY2Vsb3QvTQpMYW5kL00KTGFuZG9uL00KTGFuZHJ5L00KTGFuZHNhdC9NCkxhbmRzdGVpbmVyL00KTGFuZS9NCkxhbmcvTQpMYW5nZXJoYW5zL00KTGFuZ2xhbmQvTQpMYW5nbGV5L00KTGFuZ211aXIvTQpMYW5rYS9NCkxhbmthbi9NCkxhbm55L00KTGFuc2luZy9NCkxhbnpob3UvTQpMYW8vU00KTGFvY29vbi9NCkxhb3MvTQpMYW90aWFuL1NNCkxhcGxhY2UvTQpMYXBsYW5kL01SCkxhcHAvU00KTGFyYS9NCkxhcmFtaWUvTQpMYXJkbmVyL00KTGFyZWRvL00KTGFyb3Vzc2UvTQpMYXJyeS9NCkxhcnMvTU4KTGFyc2VuL00KTGFyc29uL00KTGFzY2F1eC9NCkxhc3NhL00KTGFzc2VuL00KTGFzc2llL00KTGF0L00KTGF0YXNoYS9NCkxhdGVyYW4vTQpMYXRoYW0vTQpMYXRpbi9NUlMKTGF0aW5hCkxhdGluby9TTQpMYXRpc2hhL00KTGF0b255YS9NCkxhdG95YS9NCkxhdHJvYmUvTQpMYXR2aWEvTQpMYXR2aWFuL01TCkxhdWQvTVIKTGF1ZGVyL00KTGF1ZS9NCkxhdW5kcm9tYXQvTQpMYXVyYS9NCkxhdXJhc2lhL00KTGF1cmVsL00KTGF1cmVuL00KTGF1cmVuY2UvTQpMYXVyZW50L00KTGF1cmkvTQpMYXVyaWUvTQpMYXZhbC9NCkxhdmVybi9NCkxhdmVybmUvTQpMYXZvaXNpZXIvTQpMYXZvbm5lL00KTGF3YW5kYS9NCkxhd3JlbmNlL00KTGF3c29uL00KTGF5YW1vbi9NCkxheWxhL00KTGF6YXJvL00KTGF6YXJ1cy9NCkxlL1NNCkxlYS9NCkxlYWNoL00KTGVhZGJlbGx5L00KTGVhaC9NCkxlYWtleS9NCkxlYW4vTQpMZWFuZGVyL00KTGVhbm4vTQpMZWFubmEvTQpMZWFubmUvTQpMZWFyL00KTGVhcmpldC9NCkxlYXJ5L00KTGVhdmVud29ydGgvTQpMZWJhbmVzZS9NCkxlYmFub24vTQpMZWJlc2d1ZS9NCkxlYmxhbmMvTQpMZWRhL00KTGVkZXJiZXJnL00KTGVlL00KTGVlZHMvTQpMZWV1d2VuaG9lay9NCkxlZXdhcmQvTQpMZWZ0CkxlZ2VuZHJlL00KTGVnZXIvTQpMZWdob3JuL00KTGVnby9NCkxlZ3JlZS9NCkxlaG1hbi9NCkxlaWJuaXovTQpMZWljZXN0ZXIvU00KTGVpZGVuL00KTGVpZi9NCkxlaWdoL00KTGVpbGEvTQpMZWlwemlnL00KTGVsYS9NCkxlbGFuZC9NCkxlbGlhL00KTGVtYWl0cmUvTQpMZW11ZWwvTQpMZW11cmlhL00KTGVuL00KTGVuYS9NCkxlbmFyZC9NCkxlbmluL00KTGVuaW5ncmFkL00KTGVuaW5pc20vTQpMZW5pbmlzdC9NCkxlbm5vbi9NCkxlbm55L00KTGVuby9NCkxlbm9pci9NCkxlbm9yYS9NCkxlbm9yZS9NCkxlbnQvU01OCkxlbnRlbi9NCkxlby9TTQpMZW9sYS9NCkxlb24vTQpMZW9uYS9NCkxlb25hcmQvTQpMZW9uYXJkby9NCkxlb25jYXZhbGxvL00KTGVvbmVsL00KTGVvbmlkL00KTGVvbmlkYXMvTQpMZW9ub3IvTQpMZW9wb2xkL00KTGVvcG9sZG8vTQpMZXBpZHVzL00KTGVwa2UvTQpMZXB1cy9NCkxlcm5lci9NCkxlcm95L00KTGVzL00KTGVzYS9NCkxlc2xleS9NCkxlc2xpZS9NCkxlc290aG8vTQpMZXNzZXBzL00KTGVzc2llL00KTGVzdGVyL00KTGVzdHJhZGUvTQpMZXRhL00KTGV0aGEvTQpMZXRoZS9NCkxldGljaWEvTQpMZXRpdGlhL00KTGV0dGVybWFuL00KTGV2YW50L00KTGV2ZXNxdWUvTQpMZXZpL1NNCkxldmlhdGhhbi9NCkxldmluZS9NCkxldml0aWN1cy9NCkxldml0dC9NCkxldnkvTQpMZXcvTQpMZXdpbnNreS9NCkxld2lzL00KTGV4aW5ndG9uL00KTGV4dXMvTQpMaGFzYS9NUwpMaG90c2UvTQpMaS9NWQpMaWJieS9NCkxpYmVyYWNlL00KTGliZXJhbApMaWJlcmlhL00KTGliZXJpYW4vU00KTGlicmEvTVMKTGlicmVPZmZpY2UvTQpMaWJyZXZpbGxlL00KTGlicml1bS9NCkxpYnlhL00KTGlieWFuL1NNCkxpY2h0ZW5zdGVpbi9NCkxpZGlhL00KTGllL00KTGllYmVybWFuL00KTGllYmZyYXVtaWxjaC9NCkxpZWNodGVuc3RlaW4vWk1SCkxpZWNodGVuc3RlaW5lci9NCkxpZWdlL00KTGlldXQKTGlsYS9NCkxpbGlhL00KTGlsaWFuL00KTGlsaWFuYS9NCkxpbGl0aC9NCkxpbGl1b2thbGFuaS9NCkxpbGxlL00KTGlsbGlhbi9NCkxpbGxpZS9NCkxpbGxpcHV0L00KTGlsbGlwdXRpYW4vTVMKTGlsbHkvTQpMaWxvbmd3ZS9NCkxpbHkvTQpMaW1hL00KTGltYmF1Z2gvTQpMaW1ibwpMaW1idXJnZXIvTQpMaW1vZ2VzL00KTGltb3VzaW4vTQpMaW1wb3BvL00KTGluL00KTGluYS9NCkxpbmNvbG4vTVMKTGluZC9NCkxpbmRhL00KTGluZGJlcmdoL00KTGluZHNheS9NCkxpbmRzZXkvTQpMaW5keS9NCkxpbm5hZXVzL00KTGlub3R5cGUvTQpMaW50b24vTQpMaW51cy9NCkxpbnV4L01TCkxpbndvb2QvTQpMaW9uZWwvTQpMaXBpenphbmVyL00KTGlwcGkvTQpMaXBwbWFubi9NCkxpcHNjb21iL00KTGlwdG9uL00KTGlzYS9NCkxpc2Jvbi9NCkxpc3Nham91cy9NCkxpc3Rlci9NCkxpc3RlcmluZS9NCkxpc3Rvbi9NCkxpc3p0L00KTGl0aHVhbmlhL00KTGl0aHVhbmlhbi9NUwpMaXR0bGUvTQpMaXR0b24vTQpMaXZlcnBvb2wvTQpMaXZlcnB1ZGxpYW4vU00KTGl2aWEvTQpMaXZpbmdzdG9uL00KTGl2aW5nc3RvbmUvTQpMaXZvbmlhL00KTGl2eS9NCkxpei9NCkxpemEvTQpMaXp6aWUvTQpMaXp6eS9NCkxqdWJsamFuYS9NCkxsZXdlbGx5bi9NCkxsb3lkL00KTG4KTG9hZmVyL1NNCkxvYmFjaGV2c2t5L00KTG9jaGludmFyL00KTG9ja2UvTQpMb2NrZWFuL00KTG9ja2hlZWQvTQpMb2Nrd29vZC9NCkxvZGdlL00KTG9kei9NCkxvZXdlL00KTG9ld2kvTQpMb2V3cy9NCkxvZ2FuL00KTG9oZW5ncmluL00KTG9pcmUvTQpMb2lzL00KTG9raS9NCkxvbGEvTQpMb2xpdGEvTQpMb2xsYXJkL00KTG9sbG9icmlnaWRhL00KTG9tYmFyZC9NCkxvbWJhcmRpL00KTG9tYmFyZHkvTQpMb21lL00KTG9uL00KTG9uZG9uL01SWgpMb25kb25lci9NCkxvbmcvTQpMb25nZmVsbG93L00KTG9uZ3N0cmVldC9NCkxvbmd1ZXVpbApMb25uaWUvTQpMb3Blei9NCkxvcmEvTQpMb3JhaW5lL00KTG9yZC9TTQpMb3Jkc2hpcC9TTQpMb3JlbGVpL00KTG9yZW4vTQpMb3JlbmEvTQpMb3JlbmUvTQpMb3JlbnR6L00KTG9yZW56L00KTG9yZW56by9NCkxvcmV0dGEvTQpMb3JpL00KTG9yaWUvTQpMb3JuYS9NCkxvcnJhaW5lL00KTG9ycmUvTQpMb3JyaWUvTQpMb3MKTG90L00KTG90aGFyaW8vU00KTG90dC9NCkxvdHRpZS9NCkxvdS9NCkxvdWVsbGEvTQpMb3VpZS9NCkxvdWlzL00KTG91aXNhL00KTG91aXNlL00KTG91aXNpYW5hL00KTG91aXNpYW5hbi9NUwpMb3Vpc2lhbmlhbi9NUwpMb3Vpc3ZpbGxlL00KTG91cmRlcy9NCkxvdXZyZS9NCkxvdmUvTQpMb3ZlY3JhZnQvTQpMb3ZlbGFjZS9NCkxvd2UvTQpMb3dlbGwvTQpMb3dlbmJyYXUvTQpMb3dlcnkvTQpMb3dsYW5kcwpMb3lhbmcvTQpMb3lkL00KTG95b2xhL00KTHIKTHQKTHRkCkx1L00KTHVhbmRhL00KTHVhbm4vTQpMdWJhdml0Y2hlci9NCkx1YmJvY2svTQpMdWJ1bWJhc2hpL00KTHVjYXMvTQpMdWNlL00KTHVjaWEvTQpMdWNpYW4vTQpMdWNpYW5vL00KTHVjaWVuL00KTHVjaWZlci9NCkx1Y2lsZS9NCkx1Y2lsbGUvTQpMdWNpbmRhL00KTHVjaW8vTQpMdWNpdGUvU00KTHVjaXVzL00KTHVja25vdy9NCkx1Y3JldGlhL00KTHVjcmV0aXVzL00KTHVjeS9NCkx1ZGRpdGUvTVMKTHVkaGlhbmEvTQpMdWR3aWcvTQpMdWVsbGEvTQpMdWZ0aGFuc2EvTQpMdWZ0d2FmZmUvTQpMdWdlci9NCkx1Z29zaS9NCkx1aWdpL00KTHVpcy9NCkx1aXNhL00KTHVrZS9NCkx1bGEvTQpMdWxseS9NCkx1bHUvTQpMdW1pZXJlL00KTHVuYS9NCkx1cGUvTQpMdXBlcmNhbGlhL00KTHVwdXMvTQpMdXJpYS9NCkx1c2FrYS9NCkx1c2l0YW5pYS9NCkx1dGhlci9NCkx1dGhlcmFuL1NNCkx1dGhlcmFuaXNtL01TCkx1dnMvTQpMdXhlbWJvdXJnL1pNUgpMdXhlbWJvdXJnZXIvTQpMdXhlbWJvdXJnaWFuCkx1ei9NCkx1em9uL00KTHZvdi9NCkx5WC9NCkx5YWxscHVyCkx5Y3JhL00KTHljdXJndXMvTQpMeWRpYS9NCkx5ZGlhbi9TTQpMeWVsbC9NCkx5bGUvTQpMeWx5L00KTHltYW4vTQpMeW1lL00KTHluY2gvTQpMeW5kYS9NCkx5bmRvbi9NCkx5bmV0dGUvTQpMeW5uL00KTHlubmUvTQpMeW5uZXR0ZS9NCkx5b24vU00KTHlvbnMvTQpMeXJhL00KTHlzZW5rby9NCkx5c2lzdHJhdGEvTQpMeXNvbC9NCk0vU01HQgpNQS9NCk1BU0gKTUIvTQpNQkEvTQpNQwpNQ0kvTQpNRC9NCk1EVApNRQpNRUdPL1MKTUZBL00KTUdNL00KTUh6Ck1JL00KTUlBCk1JREkvTQpNSVBTCk1JUlYKTUlUL00KTU0KTU4KTU8KTU9PQwpNUC9NCk1QRUcKTVJJL00KTVMvTQpNU0cvTQpNU1QvTQpNU1cKTVQvTQpNVFYvTQpNVlAvTQpNVwpNYWFsb3gvTQpNYWJlbC9NCk1hYmxlL00KTWFjL00KTWFjQXJ0aHVyL00KTWFjQnJpZGUvTQpNYWNEb25hbGQvTQpNYWNMZWlzaC9NCk1hY2FvL00KTWFjYXVsYXkvTQpNYWNiZXRoL00KTWFjY2FiZWVzCk1hY2NhYmV1cy9NCk1hY2UvTQpNYWNlZG9uL00KTWFjZWRvbmlhL00KTWFjZWRvbmlhbi9TTQpNYWNoL00KTWFjaGlhdmVsbGkvTQpNYWNoaWF2ZWxsaWFuL00KTWFjaWFzL00KTWFjaW50b3NoL00KTWFjay9NCk1hY2tlbnppZS9NCk1hY2tpbmFjL00KTWFja2luYXcvTQpNYWNtaWxsYW4vTQpNYWNvbi9NCk1hY3VtYmEvTQpNYWN5L00KTWFkYWdhc2Nhbi9TTQpNYWRhZ2FzY2FyL00KTWFkYW0KTWFkZGVuL00KTWFkZG94L00KTWFkZWlyYS9TTQpNYWRlbGVpbmUvTQpNYWRlbGluZS9NCk1hZGVseW4vTQpNYWRnZS9NCk1hZGlzb24vTQpNYWRvbm5hL1NNCk1hZHJhcy9NCk1hZHJpZC9NCk1hZHVyYWkvTQpNYWUvTQpNYWV0ZXJsaW5jay9NCk1hZmlhL01TCk1hZmlvc28vTQpNYWdkYWxlbmEvTQpNYWdkYWxlbmUvTQpNYWdlbGxhbi9NCk1hZ2VsbGFuaWMvTQpNYWdnaWUvTQpNYWdocmViL00KTWFnaQpNYWdpbm90L00KTWFnbml0b2dvcnNrL00KTWFnb2cvTQpNYWdvby9NCk1hZ3JpdHRlL00KTWFnc2F5c2F5L00KTWFndXMKTWFneWFyL1NNCk1haGFiaGFyYXRhL00KTWFoYXJhc2h0cmEvTQpNYWhhdmlyYS9NCk1haGF5YW5hL00KTWFoYXlhbmlzdC9NCk1haGRpL00KTWFoZm91ei9NCk1haGljYW4vU00KTWFobGVyL00KTWFpL00KTWFpZGVuZm9ybS9NCk1haWdyZXQvTQpNYWlsZXIvTQpNYWlsbG9sL00KTWFpbWFuL00KTWFpbW9uaWRlcy9NCk1haW5lL01aUgpNYWluZXIvTQpNYWlzaWUvTQpNYWl0cmV5YS9NCk1hagpNYWplc3R5Ck1ham9yL00KTWFqb3JjYS9NCk1hanVyby9NCk1ha2FyaW9zL00KTWFrZXIvTQpNYWxhYmFyL00KTWFsYWJvL00KTWFsYWNjYS9NCk1hbGFjaGkvTQpNYWxhZ2FzeS9NCk1hbGFtdWQvTQpNYWxhcHJvcC9NCk1hbGF3aS9NCk1hbGF3aWFuL1NNCk1hbGF5L01TCk1hbGF5YS9NCk1hbGF5YWxhbS9NCk1hbGF5YW4vTVMKTWFsYXlzaWEvTQpNYWxheXNpYW4vTVMKTWFsY29sbS9NCk1hbGRpdmUvTVMKTWFsZGl2ZXMvTQpNYWxkaXZpYW4vTVMKTWFsZG9uYWRvL00KTWFsZS9NCk1hbGkvTQpNYWxpYW4vU00KTWFsaWJ1L00KTWFsaW5kYS9NCk1hbGlub3dza2kvTQpNYWxsYXJtZS9NCk1hbGxvbWFycy9NCk1hbGxvcnkvTQpNYWxvbmUvTQpNYWxvcnkvTQpNYWxwbGFxdWV0L00KTWFscmF1eC9NCk1hbHRhL00KTWFsdGVzZS9NCk1hbHRodXMvTQpNYWx0aHVzaWFuL1NNCk1hbWVsdWtlL00KTWFtZXQvTQpNYW1pZS9NCk1hbW9yZS9NCk1hbi9NCk1hbmFndWEvTQpNYW5hbWEvTQpNYW5hc3NlaC9NCk1hbmNoZXN0ZXIvTQpNYW5jaHUvU00KTWFuY2h1cmlhL00KTWFuY2h1cmlhbi9NCk1hbmNpbmkvTQpNYW5jdW5pYW4vTVMKTWFuZGFsYXkvTQpNYW5kYXJpbi9NCk1hbmRlbGEvTQpNYW5kZWxicm90L00KTWFuZGluZ28vTQpNYW5kcmVsbC9NCk1hbmR5L00KTWFuZXQvTQpNYW5mcmVkL00KTWFuaGF0dGFuL1NNCk1hbmkvTQpNYW5pY2hlYW4vTQpNYW5pbGEvU00KTWFuaXRvYmEvTQpNYW5pdG91bGluL00KTWFubGV5L00KTWFubi9HTQpNYW5uaGVpbS9NCk1hbm5pbmcvTQpNYW5zZmllbGQvTQpNYW5zb24vTQpNYW50ZWduYS9NCk1hbnRsZS9NCk1hbnVlbC9NCk1hbnVlbGEvTQpNYW54L00KTWFvL00KTWFvaXNtL1NNCk1hb2lzdC9TTQpNYW9yaS9NUwpNYXBwbGV0aG9ycGUvTQpNYXB1dG8vTQpNYXIvU00KTWFyYS9NCk1hcmFjYWliby9NCk1hcmF0L00KTWFyYXRoYS9NCk1hcmF0aGkvTQpNYXJhdGhvbi9NCk1hcmMvTQpNYXJjZWF1L00KTWFyY2VsL00KTWFyY2VsaW5vL00KTWFyY2VsbGEvTQpNYXJjZWxvL00KTWFyY2gvTVMKTWFyY2kvTQpNYXJjaWEvTQpNYXJjaWFuby9NCk1hcmNpZS9NCk1hcmNvL01TCk1hcmNvbmkvTQpNYXJjb3MvTQpNYXJjdXMvTQpNYXJjdXNlCk1hcmN5L00KTWFyZHVrL00KTWFyZ2FyZXQvTQpNYXJnYXJpdGEvTQpNYXJnYXJpdG8vTQpNYXJnZS9NCk1hcmdlcnkvTQpNYXJnaWUvTQpNYXJnby9NCk1hcmdvdApNYXJncmV0L00KTWFyZ3JldGhlL00KTWFyZ3Vlcml0ZS9NCk1hcmkvU00KTWFyaWEvTQpNYXJpYW4vTQpNYXJpYW5hL1NNCk1hcmlhbmFzL00KTWFyaWFubmUvTQpNYXJpYW5vL00KTWFyaWJlbC9NCk1hcmljZWxhL00KTWFyaWUvTQpNYXJpZXR0YS9NCk1hcmlseW4vTQpNYXJpbi9NCk1hcmluYS9NCk1hcmluZS9TTQpNYXJpby9NCk1hcmlvbi9NCk1hcmlzL00KTWFyaXNhL00KTWFyaXNvbC9NCk1hcmlzc2EvTQpNYXJpdGFpbi9NCk1hcml0emEvTQpNYXJpdXBvbApNYXJpdXMvTQpNYXJqb3JpZS9NCk1hcmpvcnkvTQpNYXJrL1NNCk1hcmthYi9NCk1hcmtoYW0vTQpNYXJrb3YvTQpNYXJrcy9NCk1hcmxhL00KTWFybGJvcm8vTQpNYXJsYm9yb3VnaC9NCk1hcmxlbmUvTQpNYXJsZXkvTQpNYXJsaW4vTQpNYXJsb24vTQpNYXJsb3dlL00KTWFybWFyYS9NCk1hcm5lL00KTWFyb25pdGUvTQpNYXJwbGUvTQpNYXJxdWVzYXMvTQpNYXJxdWV0dGUvTQpNYXJxdWV6L00KTWFycXVpcy9NCk1hcnF1aXRhL00KTWFycmFrZXNoL00KTWFycmlvdHQvTQpNYXJzL01TCk1hcnNhbGEvTQpNYXJzZWlsbGFpc2UvTVMKTWFyc2VpbGxlcy9NCk1hcnNoL00KTWFyc2hhL00KTWFyc2hhbGwvTQpNYXJ0YS9NCk1hcnRlbC9NCk1hcnRoYS9NCk1hcnRpYWwvTQpNYXJ0aWFuL1NNCk1hcnRpbi9NCk1hcnRpbmEvTQpNYXJ0aW5lei9NCk1hcnRpbmlxdWUvTQpNYXJ0eS9NCk1hcnZhL00KTWFydmVsbC9NCk1hcnZpbi9NCk1hcngvTQpNYXJ4aWFuCk1hcnhpc20vU00KTWFyeGlzdC9TTQpNYXJ5L00KTWFyeWFubi9NCk1hcnlhbm5lL00KTWFyeWVsbGVuL00KTWFyeWxhbmQvTVIKTWFyeWxhbmRlci9NCk1hcnlsb3UvTQpNYXNhZGEvTQpNYXNhaS9NCk1hc2FyeWsvTQpNYXNjYWduaS9NCk1hc2VmaWVsZC9NCk1hc2VyYXRpL00KTWFzZXJ1L00KTWFzaGhhZC9NCk1hc29uL01TCk1hc29uaWMvTQpNYXNvbml0ZS9NCk1hc3MvTVMKTWFzc2FjaHVzZXR0cy9NCk1hc3Nhc29pdC9NCk1hc3NlbmV0L00KTWFzc2V5L00KTWFzdGVyL1MKTWFzdGVyQ2FyZC9NCk1hc3RlcnMvTQpNYXRoZXIvTQpNYXRoZXcvU00KTWF0aGV3cy9NCk1hdGhld3Nvbi9NCk1hdGhpYXMvTQpNYXRoaXMvTQpNYXRpbGRhL00KTWF0aXNzZS9NCk1hdHQvTQpNYXR0ZWwvTQpNYXR0ZXJob3JuL00KTWF0dGhldy9TTQpNYXR0aGV3cy9NCk1hdHRoaWFzL00KTWF0dGllL00KTWF1ZC9NCk1hdWRlL00KTWF1Z2hhbS9NCk1hdWkvTQpNYXVwYXNzYW50L00KTWF1cmEvTQpNYXVyZWVuL00KTWF1cmlhYy9NCk1hdXJpY2UvTQpNYXVyaWNpby9NCk1hdXJpbmUvTQpNYXVyaXRhbmlhL00KTWF1cml0YW5pYW4vU00KTWF1cml0aWFuL1NNCk1hdXJpdGl1cy9NCk1hdXJvL00KTWF1cm9pcy9NCk1hdXJ5YW4vTQpNYXVzZXIvTQpNYXZpcy9NCk1heC9NCk1heGltaWxpYW4vTQpNYXhpbmUvTQpNYXh3ZWxsL00KTWF5L1NNUgpNYXlhL1NNCk1heWFuL01TCk1heWVyL00KTWF5ZmFpci9NCk1heWZsb3dlci9NCk1heW5hcmQvTQpNYXlvL00KTWF5cG9sZQpNYXlyYS9NCk1heXMvTQpNYXl0YWcvTQpNYXphbWEvTQpNYXphcmluL00KTWF6YXRsYW4vTQpNYXpkYS9NCk1hem9sYS9NCk1henppbmkvTQpNYi9NCk1iYWJhbmUvTQpNYmluaS9NCk1jQWRhbS9NCk1jQnJpZGUvTQpNY0NhaW4vTQpNY0NhbGwvTQpNY0NhcnRoeS9NCk1jQ2FydGh5aXNtL00KTWNDYXJ0bmV5L00KTWNDYXJ0eS9NCk1jQ2xhaW4vTQpNY0NsZWxsYW4vTQpNY0NsdXJlL00KTWNDb25uZWxsL00KTWNDb3JtaWNrL00KTWNDb3kvTQpNY0NyYXkvTQpNY0N1bGxvdWdoL00KTWNEYW5pZWwvTQpNY0RvbmFsZC9NCk1jRG9ubmVsbC9NCk1jRG93ZWxsL00KTWNFbnJvZS9NCk1jRmFkZGVuL00KTWNGYXJsYW5kL00KTWNHZWUvTQpNY0dvdmVybi9NCk1jR293YW4vTQpNY0d1ZmZleS9NCk1jR3VpcmUvTQpNY0ludG9zaC9NCk1jSW50eXJlL00KTWNLYXkvTQpNY0tlZS9NCk1jS2VuemllL00KTWNLaW5sZXkvTQpNY0tpbm5leS9NCk1jS25pZ2h0L00KTWNMYXVnaGxpbi9NCk1jTGVhbi9NCk1jTGVvZC9NCk1jTHVoYW4vTQpNY01haG9uL00KTWNNaWxsYW4vTQpNY05hbWFyYS9NCk1jTmF1Z2h0b24vTQpNY05laWwvTQpNY1BoZXJzb24vTQpNY1F1ZWVuL00KTWNWZWlnaC9NCk1kL00KTWUKTWVhZC9NCk1lYWRlL00KTWVhZG93cy9NCk1lYWdhbi9NCk1lYW55L00KTWVjY2EvTVMKTWVkYW4vTQpNZWRlYS9NCk1lZGVsbGluL00KTWVkaWEvTQpNZWRpY2FpZC9TTQpNZWRpY2FyZS9TTQpNZWRpY2kvTQpNZWRpbmEvTQpNZWRpdGVycmFuZWFuL01TCk1lZHVzYS9NCk1lZy9NCk1lZ2FuL00KTWVnaGFuL00KTWVpZXIvTQpNZWlnaGVuL00KTWVpamkvTQpNZWlyL00KTWVqaWEvTQpNZWtvbmcvTQpNZWwvTQpNZWxhbmVzaWEvTQpNZWxhbmVzaWFuL00KTWVsYW5pZS9NCk1lbGJhL00KTWVsYm91cm5lL00KTWVsY2hpb3IvTQpNZWxjaGl6ZWRlay9NCk1lbGVuZGV6L00KTWVsaW5kYS9NCk1lbGlzYS9NCk1lbGlzYW5kZS9NCk1lbGlzc2EvTQpNZWxsb24vTQpNZWxvZHkvTQpNZWxwb21lbmUvTQpNZWx0b24vTQpNZWx2YS9NCk1lbHZpbGxlL00KTWVsdmluL00KTWVtbGluZy9NCk1lbXBoaXMvTQpNZW5hbmRlci9NCk1lbmNpdXMvTQpNZW5ja2VuL00KTWVuZGVsL00KTWVuZGVsZWV2L00KTWVuZGVsaWFuL00KTWVuZGVsc3NvaG4vTQpNZW5kZXovTQpNZW5kb2Npbm8vTQpNZW5kb3phL00KTWVuZWxhdXMvTQpNZW5lbGlrL00KTWVuZXMvTQpNZW5nemkKTWVua2FsaW5hbi9NCk1lbmthci9NCk1lbmtlbnQvTQpNZW5uZW4vTQpNZW5ub25pdGUvTVMKTWVub21pbmVlL00KTWVub3R0aS9NCk1lbnNhL00KTWVudGhvbGF0dW0vTQpNZW51aGluL00KTWVuemllcy9NCk1lcGhpc3RvCk1lcGhpc3RvcGhlbGVzL00KTWVyYWsvTQpNZXJjYWRvL00KTWVyY2F0b3IvTQpNZXJjZWRlcy9NCk1lcmNlci9NCk1lcmNpYS9NCk1lcmNrL00KTWVyY3Vyb2Nocm9tZS9NCk1lcmN1cnkvU00KTWVyZWRpdGgvTQpNZXJpbm8vTQpNZXJsZS9NCk1lcmxpbi9NCk1lcmxvdC9NCk1lcm92aW5naWFuL00KTWVycmlhbS9NCk1lcnJpY2svTQpNZXJyaWxsL00KTWVycmltYWNrL00KTWVycml0dC9NCk1lcnRoaW9sYXRlL00KTWVydG9uL00KTWVydmluL00KTWVzYS9NCk1lc2FiaS9NCk1lc21lci9NCk1lc29saXRoaWMvTQpNZXNvcG90YW1pYS9NCk1lc29wb3RhbWlhbgpNZXNvem9pYy9NCk1lc3NlcnNjaG1pZHQvTQpNZXNzaWFlbi9NCk1lc3NpYWgvTQpNZXNzaWFocwpNZXNzaWFuaWMKTWVzc2lldXJzCk1ldGFsbGljYS9NCk1ldGFtdWNpbC9NCk1ldGhvZGlzbS9TTQpNZXRob2Rpc3QvU00KTWV0aHVzZWxhaC9NCk1ldHRlcm5pY2gvTQpNZXVzZS9NCk1leApNZXhpY2FsaS9NCk1leGljYW4vTVMKTWV4aWNvL00KTWV5ZXIvTVMKTWV5ZXJiZWVyL00KTWV5ZXJzL00KTWZ1bWUvTQpNZy9NCk1ncgpNaUcvTQpNaWEvTQpNaWFtaS9NUwpNaWFwbGFjaWR1cy9NCk1pY2FoL00KTWljYXdiZXIvTQpNaWNoL00KTWljaGFlbC9NCk1pY2hhZWxtYXMvTVMKTWljaGVhbC9NCk1pY2hlbC9NCk1pY2hlbGFuZ2Vsby9NCk1pY2hlbGUvTQpNaWNoZWxpbi9NCk1pY2hlbGxlL00KTWljaGVsb2IvTQpNaWNoZWxzb24vTQpNaWNoaWdhbi9NCk1pY2hpZ2FuZGVyL01TCk1pY2hpZ2FuaXRlCk1pY2svTQpNaWNrZXkvTQpNaWNraWUvTQpNaWNreS9NCk1pY21hYy9TTQpNaWNyb25lc2lhL00KTWljcm9uZXNpYW4vTQpNaWNyb3NvZnQvTQpNaWRhcy9NCk1pZGRsZXRvbi9NCk1pZGVhc3QKTWlkZWFzdGVybgpNaWRsYW5kL01TCk1pZHdheS9NCk1pZHdlc3QvTQpNaWR3ZXN0ZXJuL01SCk1pZ3VlbC9NCk1pa2UvTQpNaWtoYWlsL00KTWlrb3lhbi9NCk1pbGFncm9zL00KTWlsYW4vTQpNaWxhbmVzZQpNaWxkcmVkL00KTWlsZXMvTQpNaWxmb3JkL00KTWlsa2VuL00KTWlsbC9TTVIKTWlsbGFyZC9NCk1pbGxheS9NCk1pbGxlci9NCk1pbGxldC9NCk1pbGxpY2VudC9NCk1pbGxpZS9NCk1pbGxpa2FuL00KTWlsbHMvTQpNaWxuZS9NCk1pbG8vTQpNaWxvc2V2aWMvTQpNaWxxdWV0b2FzdC9NCk1pbHRpYWRlcy9NCk1pbHRvbi9NCk1pbHRvbmljL00KTWlsdG93bi9NCk1pbHdhdWtlZS9NCk1pbWkvTQpNaW1vc2EvTQpNaW4vTQpNaW5hbW90by9NCk1pbmRhbmFvL00KTWluZG9yby9NCk1pbmR5L00KTWluZXJ2YS9NCk1pbmcvTQpNaW5ndXMvTQpNaW5uCk1pbm5lYXBvbGlzL00KTWlubmVsbGkvTQpNaW5uZXNvdGEvTQpNaW5uZXNvdGFuL1NNCk1pbm5pZS9NCk1pbm9hbi9NUwpNaW5vbHRhL00KTWlub3MvTQpNaW5vdC9NCk1pbm90YXVyL00KTWluc2svTQpNaW5za3kvTQpNaW50YWthL00KTWludWl0L00KTWludXRlbWFuL00KTWlvY2VuZS9NCk1pci9NCk1pcmEvTQpNaXJhYmVhdS9NCk1pcmFjaC9NCk1pcmFuZGEvTQpNaXJmYWsvTQpNaXJpYW0vTQpNaXJvL00KTWlyemFtL00KTWlza2l0by9NCk1pc3MKTWlzc2lzc2F1Z2EvTQpNaXNzaXNzaXBwaS9NCk1pc3Npc3NpcHBpYW4vU00KTWlzc291cmkvTQpNaXNzb3VyaWFuL01TCk1pc3N5L00KTWlzdGFzc2luaS9NCk1pc3RlcgpNaXN0cmVzcwpNaXN0eS9NCk1pdGNoL00KTWl0Y2hlbC9NCk1pdGNoZWxsL00KTWl0Zm9yZC9NCk1pdGhyYS9NCk1pdGhyaWRhdGVzL00KTWl0c3ViaXNoaS9NCk1pdHRlcnJhbmQvTQpNaXR0eS9NCk1pdHppL00KTWl4dGVjL00KTWl6YXIvTQpNawpNbGxlCk1tZS9TCk1uL00KTW5lbW9zeW5lL00KTW8vTQpNb2JpbC9NCk1vYmlsZS9NCk1vYnV0dS9NCk1vZGVzdG8vTQpNb2RpZ2xpYW5pL00KTW9lL00KTW9ldC9NCk1vZ2FkaXNodS9NCk1vZ3VsL01TCk1vaGFjcy9NCk1vaGFtZWQvTQpNb2hhbW1hZC9NCk1vaGFtbWVkYW4vU00KTW9oYW1tZWRhbmlzbS9TTQpNb2hhdmUvU00KTW9oYXdrL1NNCk1vaGVnYW4KTW9oby9NCk1vaG9yb3ZpY2ljL00KTW9pcmEvTQpNb2lzZXMvTQpNb2lzZXlldi9NCk1vamF2ZS9TTQpNb2xkYXZpYS9NCk1vbGRhdmlhbgpNb2xkb3ZhL00KTW9sZG92YW4KTW9saWVyZS9NCk1vbGluYS9NCk1vbGwvTQpNb2xsaWUvTQpNb2xseS9NCk1vbG5hci9NCk1vbG9jaC9NCk1vbG9rYWkvTQpNb2xvdG92L00KTW9sdWNjYXMvTQpNb21iYXNhL00KTW9uL1NNCk1vbmEvTQpNb25hY2FuCk1vbmFjby9NCk1vbmRhbGUvTQpNb25kYXkvU00KTW9uZHJpYW4vTQpNb25lZ2FzcXVlL1NNCk1vbmVyYS9NCk1vbmV0L00KTW9uZ29sL1NNCk1vbmdvbGlhL00KTW9uZ29saWFuL1NNCk1vbmdvbGljL00KTW9uZ29sb2lkCk1vbmljYS9NCk1vbmlxdWUvTQpNb25rL00KTW9ubW91dGgvTQpNb25vbmdhaGVsYS9NCk1vbnJvZS9NCk1vbnJvdmlhL00KTW9uc2FudG8vTQpNb25zaWV1ci9NCk1vbnNpZ25vci9TTQpNb250L00KTW9udGFndWUvTQpNb250YWlnbmUvTQpNb250YW5hL00KTW9udGFuYW4vU00KTW9udGNhbG0vTQpNb250ZS9NCk1vbnRlbmVncmluL00KTW9udGVuZWdyby9NCk1vbnRlcnJleS9NCk1vbnRlc3F1aWV1L00KTW9udGVzc29yaS9NCk1vbnRldmVyZGkvTQpNb250ZXZpZGVvL00KTW9udGV6dW1hL00KTW9udGdvbGZpZXIvTQpNb250Z29tZXJ5L00KTW9udGljZWxsby9NCk1vbnRveWEvTQpNb250cGVsaWVyL00KTW9udHJhY2hldC9NCk1vbnRyZWFsL00KTW9udHNlcnJhdC9NCk1vbnR5L00KTW9vZHkvTQpNb29nL00KTW9vbi9NCk1vb25leS9NCk1vb3IvU00KTW9vcmUvTQpNb29yaXNoL00KTW9yYWxlcy9NCk1vcmFuL00KTW9yYXZpYS9NCk1vcmF2aWFuL00KTW9yZHJlZC9NCk1vcmUvTQpNb3Jlbm8vTQpNb3JnYW4vU00KTW9yaWFydHkvTQpNb3Jpbi9NCk1vcmlzb24vTQpNb3JpdGEvTQpNb3JsZXkvTQpNb3Jtb24vU00KTW9ybW9uaXNtL1NNCk1vcm8vTQpNb3JvY2Nhbi9TTQpNb3JvY2NvL00KTW9yb25pL00KTW9ycGhldXMvTQpNb3JwaHkvTQpNb3JyaXMvTQpNb3JyaXNvbi9NCk1vcnJvdy9NCk1vcnNlL00KTW9ydC9NCk1vcnRpbWVyL00KTW9ydG9uL00KTW9zYWljL00KTW9zY293L00KTW9zZWxleS9NCk1vc2VsbGUvTQpNb3Nlcy9NCk1vc2xleS9NCk1vc3MvTQpNb3N1bC9NCk1vdG9yb2xhL00KTW90b3duL00KTW90cmluL00KTW90dC9NCk1vdWx0b24vTQpNb3VudC9NCk1vdW50YmF0dGVuL00KTW91bnRpZS9NUwpNb3Vzc29yZ3NreS9NCk1vdXRoZS9NCk1vdXRvbi9NCk1vd2dsaS9NCk1vemFtYmljYW4vU00KTW96YW1iaXF1ZS9NCk1vemFydC9NCk1vemlsbGEvTQpNci9TTQpNcy9TCk1zZ3IKTXQKTXVhd2l5YS9NCk11YmFyYWsvTQpNdWVsbGVyL00KTXVlbnN0ZXIvTVMKTXVnYWJlL00KTXVoYW1tYWQvTQpNdWhhbW1hZGFuL01TCk11aGFtbWFkYW5pc20vU00KTXVpci9NCk11amliL00KTXVsZGVyL00KTXVsbGVuL00KTXVsbGVyL00KTXVsbGlnYW4vTQpNdWxsaWthbi9NCk11bGxpbnMvTQpNdWxyb25leS9NCk11bHRhbi9NCk11bHRpY3MKTXVtYmFpL00KTXVtZm9yZC9NCk11bmNoL00KTXVuY2hoYXVzZW4vTQpNdW5pY2gvTQpNdW5vei9NCk11bnJvL00KTXVuc3Rlci9NCk11cHBldC9NCk11cmFzYWtpL00KTXVyYXQvTQpNdXJjaGlzb24vTQpNdXJjaWEKTXVyZG9jaC9NCk11cmllbC9NCk11cmlsbG8vTQpNdXJpbmUvTQpNdXJtYW5zay9NCk11cnBoeS9NCk11cnJheS9NCk11cnJvdy9NCk11cnJ1bWJpZGdlZS9NCk11c2NhdC9NCk11c2Nvdml0ZS9NCk11c2NvdnkvTQpNdXNlL00KTXVzaGFycmFmL00KTXVzaWFsL00KTXVza29nZWUvTQpNdXNsaW0vTVMKTXVzc29saW5pL00KTXVzc29yZ3NreS9NCk11dHN1aGl0by9NCk11emFrL00KTXlTcGFjZS9NCk15YW5tYXIvTQpNeWNlbmFlL00KTXljZW5hZWFuL00KTXllcnMvTQpNeWxhci9NUwpNeWxlcy9NCk15cmEvTQpNeXJkYWwvTQpNeXJuYS9NCk15cm9uL00KTXlydGxlL00KTXlzb3JlL00KTXlzdC9NCk4nRGphbWVuYQpOL01ECk5BQUNQL00KTkFGVEEvTQpOQVNBL00KTkFTQ0FSL00KTkFTREFRL00KTkFUTy9NCk5CCk5CQS9NCk5CQy9NCk5CUwpOQwpOQ0FBL00KTkNPCk5ECk5FL00KTkVICk5GCk5GQwpORkwvTQpOSApOSEwvTQpOSUgKTklNQlkKTkoKTkxSQgpOTQpOT1JBRC9NCk5PVwpOUApOUFIvTQpOUgpOUkEKTlJDCk5TCk5TQS9NCk5TQwpOU0YKTlNGVwpOVApOVgpOVy9NCk5XVApOWQpOWUMKTllTRQpOWgpOYS9NCk5hYmlzY28vTQpOYWJva292L00KTmFkZXIvTQpOYWRpYS9NCk5hZGluZS9NCk5hZ2FzYWtpL00KTmFnb3lhL00KTmFncHVyL00KTmFneS9NCk5haHVhdGwvTVMKTmFodW0vTQpOYWlwYXVsL00KTmFpci9NCk5haXJvYmkvTQpOYWlzbWl0aC9NCk5hbS9NCk5hbWF0aC9NCk5hbWliaWEvTQpOYW1pYmlhbi9NUwpOYW4vTQpOYW5hay9NCk5hbmNoYW5nL00KTmFuY3kvTQpOYW5ldHRlL00KTmFuamluZy9NCk5hbm5pZS9NCk5hbm9vay9NCk5hbnNlbi9NCk5hbnRlcy9NCk5hbnR1Y2tldC9NCk5hb21pL00KTmFwaHRhbGkvTQpOYXBpZXIvTQpOYXBsZXMvTQpOYXBvbGVvbi9NUwpOYXBvbGVvbmljL00KTmFwc3Rlci9NCk5hcmNpc3N1cy9NCk5hcm1hZGEvTQpOYXJuaWEvTQpOYXJyYWdhbnNldApOYXJyYWdhbnNldHQvTQpOYXNoL00KTmFzaHVhL00KTmFzaHZpbGxlL00KTmFzc2F1L00KTmFzc2VyL00KTmF0L00KTmF0YWxpYS9NCk5hdGFsaWUvTQpOYXRhc2hhL00KTmF0Y2hlei9NCk5hdGUvTU4KTmF0aGFuL1NNCk5hdGhhbmllbC9NCk5hdGhhbnMvTQpOYXRpb24vTQpOYXRpb253aWRlL00KTmF0aXZpdHkvTQpOYXVnYWh5ZGUvTQpOYXVydS9NCk5hdXRpbHVzL00KTmF2YWpvL1NNCk5hdmFqb2VzCk5hdmFycmUvTQpOYXZhcnJvL00KTmF2cmF0aWxvdmEvTQpOYXZ5Ck5hemFyZW5lL00KTmF6YXJldGgvTQpOYXpjYS9NCk5hemkvU00KTmF6aXNtL01TCk5iL00KTmQvTQpOZGphbWVuYS9NCk5lL00KTmVXUwpOZVdTZXMKTmVhbC9NCk5lYW5kZXJ0aGFsL1NNCk5lYXBvbGl0YW4vTQpOZWIKTmVicgpOZWJyYXNrYS9NCk5lYnJhc2thbi9NUwpOZWJ1Y2hhZG5lenphci9NCk5lZC9NCk5lZmVydGl0aS9NCk5lZ2V2L00KTmVncmVzcy9NUwpOZWdyaXR1ZGUKTmVncm8vTVMKTmVncm9lcwpOZWdyb2lkL1NNCk5lZ3Jvcy9NCk5laGVtaWFoL00KTmVocnUvTQpOZWlsL00KTmVsZGEvTQpOZWxsL00KTmVsbGllL00KTmVsbHkvTQpOZWxzZW4vTQpOZWxzb24vTQpOZW1idXRhbC9NCk5lbWVzaXMvTQpOZW9nZW5lL00KTmVvbGl0aGljCk5lcGFsL00KTmVwYWxlc2UvTQpOZXBhbGkvTVMKTmVwdHVuZS9NCk5lcmVpZC9NCk5lcmYvTQpOZXJvL00KTmVydWRhL00KTmVzY2FmZS9NCk5lc3NlbHJvZGUvTQpOZXN0bGUvTQpOZXN0b3IvTQpOZXN0b3JpdXMvTQpOZXRmbGl4L00KTmV0aGVybGFuZGVyL1NNCk5ldGhlcmxhbmRzL00KTmV0c2NhcGUvTQpOZXR0aWUvTQpOZXR6YWh1YWxjb3lvdGwvTQpOZXYvTQpOZXZhL00KTmV2YWRhL00KTmV2YWRhbi9TTQpOZXZhZGlhbgpOZXZpcy9NCk5ldnNreS9NCk5ld2Fyay9NCk5ld2Nhc3RsZS9NCk5ld2ZvdW5kbGFuZC9NUlMKTmV3bWFuL00KTmV3cG9ydC9NCk5ld3N3ZWVrL00KTmV3dG9uL00KTmV3dG9uaWFuL00KTmV4aXMvTQpOZ2FsaWVtYS9NCk5ndXllbi9NCk5pL00KTmlhZ2FyYS9NCk5pYW1leS9NCk5pYmVsdW5nL00KTmljYWVhL00KTmljYXJhZ3VhL00KTmljYXJhZ3Vhbi9TTQpOaWNjb2xvL00KTmljZS9NCk5pY2VuZS9NCk5pY2hpcmVuL00KTmljaG9sYXMvTQpOaWNob2xlL00KTmljaG9scy9NCk5pY2hvbHNvbi9NCk5pY2svTQpOaWNrZWxvZGVvbi9NCk5pY2tsYXVzL00KTmlja29sYXMvTQpOaWNvYmFyL00KTmljb2RlbXVzL00KTmljb2xhL1NNCk5pY29sYXMvTQpOaWNvbGUvTQpOaWNvc2lhL00KTmllYnVoci9NCk5pZWxzZW4vTQpOaWV0enNjaGUvTQpOaWV2ZXMvTQpOaWdlbC9NCk5pZ2VyL00KTmlnZXJpYS9NCk5pZ2VyaWFuL01TCk5pZ2VyaWVuL00KTmlnaHRpbmdhbGUvTQpOaWppbnNreS9NCk5pa2UvTQpOaWtpdGEvTQpOaWtrZWkvTQpOaWtraS9NCk5pa29sYWkvTQpOaWtvbi9NCk5pbGUvTQpOaW1pdHovTQpOaW1yb2QvTQpOaW5hL00KTmluZXZlaC9NCk5pbnRlbmRvL00KTmlvYmUvTQpOaXBwb24vTQpOaXBwb25lc2UvTQpOaXJlbmJlcmcvTQpOaXJ2YW5hL00KTmlzYW4vTQpOaXNlaS9NCk5pc3Nhbi9NCk5pdGEvTQpOaXZlYS9NCk5peG9uL00KTmtydW1haC9NCk5vL1NNCk5vRG96L00KTm9haC9NCk5vYmVsL00KTm9iZWxpc3QvTVMKTm9ibGUvTQpOb2UvTQpOb2VsL1NNCk5vZWxsZS9NCk5vZW1pL00KTm9raWEvTQpOb2xhL00KTm9sYW4vTQpOb21lL00KTm9uYS9NCk5vb3RrYS9NCk5vcmEvTQpOb3JiZXJ0L00KTm9yYmVydG8vTQpOb3JkaWMvTVMKTm9yZWVuL00KTm9yZm9say9NCk5vcmllZ2EvTQpOb3JtYS9NCk5vcm1hbi9NUwpOb3JtYW5kL00KTm9ybWFuZHkvTQpOb3JwbGFudC9NCk5vcnJpcy9NCk5vcnNlL00KTm9yc2VtYW4vTQpOb3JzZW1lbi9NCk5vcnRoL00KTm9ydGhhbXB0b24vTQpOb3J0aGVhc3QvTVMKTm9ydGhlcm5lci9NCk5vcnRocm9wL00KTm9ydGhydXAvTQpOb3J0aHMKTm9ydGh3ZXN0L1NNCk5vcnRvbi9NCk5vcncKTm9yd2F5L00KTm9yd2VnaWFuL1NNCk5vcndpY2gvTQpOb3NmZXJhdHUvTQpOb3N0cmFkYW11cy9NCk5vdHRpbmdoYW0vTQpOb3Vha2Nob3R0L00KTm91bWVhL00KTm92L00KTm92YS9NCk5vdmFydGlzL00KTm92ZW1iZXIvTVMKTm92Z29yb2QvTQpOb3ZvY2Fpbi9NUwpOb3ZvY2FpbmUKTm92b2t1em5ldHNrL00KTm92b3NpYmlyc2svTQpOb3h6ZW1hL00KTm95Y2UvTQpOb3llcy9NCk5wL00KTnViaWEvTQpOdWJpYW4vTQpOdWt1YWxvZmEvTQpOdW1iZXJzL00KTnVuYXZ1dC9NCk51bmV6L00KTnVua2kvTQpOdXJlbWJlcmcvTQpOdXJleWV2L00KTnV0cmFTd2VldC9NCk55UXVpbC9NCk55YXNhL00KTnllcmVyZS9NCk8nQnJpZW4vTQpPJ0Nhc2V5L00KTydDb25uZWxsL00KTydDb25ub3IvTQpPJ0Rvbm5lbGwvTQpPJ0hhcmEvTQpPJ0hpZ2dpbnMvTQpPJ0tlZWZmZS9NCk8nTmVpbC9NCk8nTmVpbGwvTQpPJ1JvdXJrZS9NCk8nVG9vbGUvTQpPL1NNCk9BUy9NCk9CCk9DUgpPRC9TTQpPRQpPRUQKT0gKT0hTQS9NCk9KCk9LL1NNREcKT01CL00KT04KT1BFQy9NCk9SCk9TL00KT1NIQS9NCk9TZXMKT1QKT1RCCk9UQwpPVE9ICk9haHUvTQpPYWtsYW5kL00KT2FrbGV5L00KT2F0ZXMvTQpPYXhhY2EvTQpPYi9NCk9iYWRpYWgvTQpPYmFtYS9NCk9iYW1hY2FyZQpPYmVybGluL00KT2Jlcm9uL00KT2NjYW0vTQpPY2NpZGVudApPY2NpZGVudGFsL01TCk9jZWFuaWEvTQpPY2VhbnNpZGUKT2NlYW51cy9NCk9jaG9hL00KT2N0L00KT2N0YXZpYS9NCk9jdGF2aWFuL00KT2N0YXZpby9NCk9jdG9iZXIvU00KT2RlbGwvTQpPZGVyL00KT2Rlc3NhL00KT2RldHMvTQpPZGluL00KT2Rpcy9NCk9kb20vTQpPZHlzc2V1cy9NCk9keXNzZXkvTQpPZWRpcGFsL00KT2VkaXB1cy9NCk9lcnN0ZWQvTQpPZmVsaWEvTQpPZmZlbmJhY2gvTQpPZmZpY2VNYXgvTQpPZ2JvbW9zaG8vTQpPZ2Rlbi9NCk9naWx2eS9NCk9nbGV0aG9ycGUvTQpPaGlvL00KT2hpb2FuL1NNCk9pc2UvTQpPamlid2EvU00KT2theWFtYQpPa2VlY2hvYmVlL00KT2tlZmVub2tlZS9NCk9raG90c2svTQpPa2luYXdhL00KT2tpbmF3YW4KT2tsYQpPa2xhaG9tYS9NCk9rbGFob21hbi9NCk9rdG9iZXJmZXN0L00KT2xhL00KT2xhZi9NCk9sYWp1d29uL00KT2xhdi9NCk9sZGVuYnVyZy9NCk9sZGZpZWxkL00KT2xkc21vYmlsZS9NCk9sZHV2YWkvTQpPbGVuL00KT2xlbmVrL00KT2xnYS9NCk9saWdvY2VuZS9NCk9saW4vTQpPbGl2ZS9NUgpPbGl2ZXIvTQpPbGl2ZXR0aS9NCk9saXZpYS9NCk9saXZpZXIvTQpPbGxpZS9NCk9sbWVjL00KT2xtc3RlZC9NCk9sc2VuL00KT2xzb24vTQpPbHltcGlhL1NNCk9seW1waWFkL01TCk9seW1waWFuL01TCk9seW1waWMvU00KT2x5bXBpY3MvTQpPbHltcHVzL00KT21haGEvTVMKT21hbi9NCk9tYW5pL01TCk9tYXIvTQpPbWF5eWFkL00KT21kdXJtYW4vTQpPbW5pcG90ZW50Ck9tc2svTQpPbmFzc2lzL00KT25lYWwvTQpPbmVnYS9NCk9uZWdpbi9NCk9uZWlkYS9NUwpPbmlvbi9NCk9uby9NCk9ub25kYWdhL01TCk9uc2FnZXIvTQpPbnQKT250YXJpYW4KT250YXJpby9NCk9vcnQvTQpPcGFsL00KT3BlbC9NCk9wZW5PZmZpY2UvTQpPcGhlbGlhL00KT3BoaXVjaHVzL00KT3BwZW5oZWltZXIvTQpPcHBvc2l0aW9uCk9wcmFoL00KT3JhL00KT3JhY2xlL00KT3Jhbi9NCk9yYW5nZS9NCk9yYW5qZXN0YWQvTQpPcmJpc29uL00KT3Jkb3ZpY2lhbi9NCk9yZS9OCk9yZWcKT3JlZ29uL00KT3JlZ29uaWFuL1NNCk9yZW8vTQpPcmVzdGVzL00KT3JpZW50L00KT3JpZW50YWwvTVMKT3JpZW50YWxpc20KT3Jpbi9NCk9yaW5vY28vTQpPcmlvbi9NCk9yaXlhL00KT3JpemFiYS9NCk9ya25leS9NCk9ybGFuZG8vTQpPcmxlYW5zL00KT3Jsb24vTVMKT3JseS9NCk9ycGhldXMvTQpPcnBoaWMvTQpPcnIvTQpPcnRlZ2EvTQpPcnRob2RveApPcnRpei9NCk9ydmFsL00KT3J2aWxsZS9NCk9yd2VsbC9NCk9yd2VsbGlhbi9NCk9zL00KT3NhZ2UvTVMKT3Nha2EvTQpPc2JlcnQvTQpPc2Jvcm4vTQpPc2Jvcm5lL00KT3NjYXIvTVMKT3NjZW9sYS9NCk9zZ29vZC9NCk9zaGF3YS9NCk9zaGtvc2gvTQpPc2lyaXMvTQpPc2xvL00KT3NtYW4vTQpPc3Ryb2dvdGgvTQpPc3R3YWxkL00KT3N2YWxkby9NCk9zd2FsZC9NCk90aGVsbG8vTQpPdGlzL00KT3R0YXdhL1NNCk90dG8vTQpPdHRvbWFuL00KT3VhZ2Fkb3Vnb3UvTQpPdWlqYS9NUwpPdmlkL00KT3dlbi9TTQpPd2Vucy9NCk94Zm9yZC9TTQpPeG5hcmQvTQpPeG9uaWFuL00KT3h1cy9NCk94eWNvbnRpbi9NCk96L00KT3phcmsvTVMKT3phcmtzL00KT3p5bWFuZGlhcy9NCk96emllL00KUC9NTgpQQS9NClBBQy9NClBBUkMvUwpQQVNDQUwKUEJTL00KUEJYClBDL1NNClBDQgpQQ01DSUEKUENQL00KUEQKUERGClBEUQpQRFQKUEUKUEVUL00KUEZDClBHClBHUApQSU4KUEoncwpQTE8vTQpQTS9TTURHClBNUy9NClBPClBPVy9NClBQClBQUwpQUgpQUkMvTQpQUk8KUFMvTQpQU1QvTQpQVApQVEEvTQpQVE8KUFZDL00KUFcKUFgKUGEvTQpQYWFyL00KUGFibG8vTQpQYWJsdW0vTQpQYWJzdC9NClBhY2UvTQpQYWNoZWNvL00KUGFjaWZpYy9NClBhY2luby9NClBhY2thcmQvTQpQYWRhbmcKUGFkZXJld3NraS9NClBhZGlsbGEvTQpQYWdhbmluaS9NClBhZ2UvTQpQYWdsaWEvTQpQYWhsYXZpL00KUGFpZ2UvTQpQYWluZS9NClBhaXV0ZS9TTQpQYWtpc3Rhbi9NClBha2lzdGFuaS9TTQpQYWxlbWJhbmcvTQpQYWxlb2NlbmUvTQpQYWxlb2dlbmUvTQpQYWxlb2xpdGhpYy9NClBhbGVvem9pYy9NClBhbGVybW8vTQpQYWxlc3RpbmUvTQpQYWxlc3Rpbmlhbi9TTQpQYWxlc3RyaW5hL00KUGFsZXkvTQpQYWxpa2lyL00KUGFsaXNhZGVzL00KUGFsbGFkaW8vTQpQYWxtZXIvTQpQYWxtZXJzdG9uL00KUGFsbW9saXZlL00KUGFsbXlyYS9NClBhbG9tYXIvTQpQYW0vTQpQYW1lbGEvTQpQYW1pcnMvTQpQYW1wZXJzL00KUGFuL00KUGFuYW1hL1NNClBhbmFtYW5pYW4vTVMKUGFuYXNvbmljL00KUGFuZG9yYS9NClBhbmdhZWEvTQpQYW5raHVyc3QvTQpQYW5tdW5qb20vTQpQYW5zeS9NClBhbnRhZ3J1ZWwvTQpQYW50YWxvb24vTQpQYW50aGVvbi9NClBhbnphL00KUGFyYWNlbHN1cy9NClBhcmFjbGV0ZS9NClBhcmFkaXNlClBhcmFndWF5L00KUGFyYWd1YXlhbi9NUwpQYXJhbHltcGljL1MKUGFyYW1hcmliby9NClBhcmFtb3VudC9NClBhcmFuYS9NClBhcmNoZWVzaS9NClBhcmV0by9NClBhcmlzL00KUGFyaXNpYW4vTVMKUGFyay9TTVIKUGFya2VyL00KUGFya2luc29uL00KUGFya2luc29uaXNtClBhcmttYW4vTQpQYXJrcy9NClBhcmxpYW1lbnQvTQpQYXJtZW5pZGVzClBhcm1lc2FuL01TClBhcm5hc3N1cy9NUwpQYXJuZWxsL00KUGFyci9NClBhcnJpc2gvTQpQYXJzaWZhbC9NClBhcnNvbnMvTQpQYXJ0aGVub24vTQpQYXJ0aGlhL00KUGFzYWRlbmEvTQpQYXNjYWwvU00KUGFzcXVhbGUvTQpQYXNzaW9uL1NNClBhc3NvdmVyL01TClBhc3Rlcm5hay9NClBhc3RldXIvTQpQYXQvTQpQYXRhZ29uaWEvTQpQYXRhZ29uaWFuL00KUGF0ZS9NClBhdGVsL00KUGF0ZXJzb24vTQpQYXRuYS9NClBhdHJpY2EvTQpQYXRyaWNlL00KUGF0cmljaWEvTQpQYXRyaWNrL00KUGF0c3kvTQpQYXR0ZXJzb24vTQpQYXR0aS9NClBhdHRvbi9NClBhdHR5L00KUGF1bC9HTQpQYXVsYS9NClBhdWxldHRlL00KUGF1bGkvTQpQYXVsaW5lL00KUGF1bGluZy9NClBhdmFyb3R0aS9NClBhdmxvdi9NClBhdmxvdmEvTQpQYXZsb3ZpYW4vTQpQYXduZWUvU00KUGF5UGFsL00KUGF5bmUvTQpQYi9NClBkL00KUGVhYm9keS9NClBlYWNlL00KUGVhbGUvTQpQZWFybC9NClBlYXJsaWUvTQpQZWFyc29uL00KUGVhcnkvTQpQZWNob3JhL00KUGVjay9NClBlY2tpbnBhaC9NClBlY29zL00KUGVkcm8vTQpQZWVsL00KUGVnL00KUGVnYXN1cy9NUwpQZWdneS9NClBlaS9NClBlaXBpbmcvTQpQZWtpbmcvU00KUGVraW5nZXNlL1NNClBlbGUvTQpQZWxlZS9NClBlbG9wb25uZXNlL00KUGVtYnJva2UvTQpQZW4vTQpQZW5hL00KUGVuZGVyZWNraS9NClBlbmVsb3BlL00KUGVubi9NClBlbm5hClBlbm5leS9NClBlbm5pbmd0b24vTQpQZW5uc3lsdmFuaWEvTQpQZW5uc3lsdmFuaWFuL01TClBlbm55L00KUGVubnpvaWwvTQpQZW5zYWNvbGEvTQpQZW50YWdvbi9NClBlbnRhdGV1Y2gvTQpQZW50YXgvTQpQZW50ZWNvc3QvU00KUGVudGVjb3N0YWwvTVMKUGVudGVjb3N0YWxpc20KUGVudGl1bS9TTQpQZW9yaWEvTQpQZXBpbi9NClBlcHNpL00KUGVweXMvTQpQZXF1b3QvTQpQZXJjaGVyb24vTQpQZXJjaXZhbC9NClBlcmN5L00KUGVyZWxtYW4vTQpQZXJlei9NClBlcmljbGVhbi9NClBlcmljbGVzL00KUGVya2lucy9NClBlcmwvU00KUGVybS9NClBlcm1hbGxveS9NClBlcm1pYW4vTQpQZXJub2QvTQpQZXJvbi9NClBlcm90L00KUGVycmllci9NClBlcnJ5L1JNClBlcnNlaWQvTQpQZXJzZXBob25lL00KUGVyc2Vwb2xpcy9NClBlcnNldXMvTQpQZXJzaGluZy9NClBlcnNpYS9NClBlcnNpYW4vU00KUGVydGgvTQpQZXJ1L00KUGVydXZpYW4vTVMKUGVzaGF3YXIvTQpQZXRhaW4vTQpQZXRlL1JNWgpQZXRlci9NClBldGVycy9NTgpQZXRlcnNlbi9NClBldGVyc29uL00KUGV0cmEvTQpQZXRyYXJjaC9NClBldHR5L00KUGV1Z2VvdC9NClBmYwpQZml6ZXIvTQpQaEQvTQpQaGFlZHJhL00KUGhhZXRob24vTQpQaGFuZXJvem9pYy9NClBoYXJhb2gvTQpQaGFyYW9ocwpQaGFyaXNhaWMKUGhhcmlzYWljYWwKUGhhcmlzZWUvTVMKUGhla2RhL00KUGhlbHBzL00KUGhpZGlhcy9NClBoaWwvTVkKUGhpbGFkZWxwaGlhL00KUGhpbGJ5L00KUGhpbGVtb24vTQpQaGlsaXAvTVMKUGhpbGlwcGUvTQpQaGlsaXBwaWFucy9NClBoaWxpcHBpbmUvU00KUGhpbGlwcGluZXMvTQpQaGlsaXBzL00KUGhpbGlzdGluZS9NClBoaWxsaXAvU00KUGhpbGxpcGEvTQpQaGlsbGlwcy9NClBoaWxseS9NClBoaXBwcy9NClBob2Jvcy9NClBob2ViZS9NClBob2VuaWNpYS9NClBob2VuaWNpYW4vU00KUGhvZW5peC9NClBob3Rvc3RhdC9NUwpQaG90b3N0YXR0ZWQKUGhvdG9zdGF0dGluZwpQaHJ5Z2lhL00KUGh5bGxpcy9NClBpYWYvTQpQaWFnZXQvTQpQaWFub2xhL00KUGljYXNzby9NClBpY2NhZGlsbHkvTQpQaWNrZXJpbmcvTQpQaWNrZXR0L00KUGlja2ZvcmQvTQpQaWNrd2ljay9NClBpY3QvTQpQaWVkbW9udC9NClBpZXJjZS9NClBpZXJyZS9NClBpZXJyb3QvTQpQaWtlL00KUGlsYXRlL01TClBpbGF0ZXMvTQpQaWxjb21heW8vTQpQaWxncmltL1NNClBpbGxzYnVyeS9NClBpbmF0dWJvL00KUGluY3VzL00KUGluZGFyL00KUGlua2VydG9uL00KUGlub2NjaGlvL00KUGlub2NoZXQvTQpQaW50ZXIvTQpQaW55aW4KUGlwcGluL00KUGlyYWV1cy9NClBpcmFuZGVsbG8vTQpQaXNhL00KUGlzY2VzL00KUGlzaXN0cmF0dXMvTQpQaXNzYXJvL00KUGl0Y2Fpcm4vTQpQaXR0L1NNClBpdHRtYW4vTQpQaXR0cy9NClBpdHRzYnVyZ2gvTQpQaXVzL00KUGl6YXJyby9NClBrd3kKUGwKUGxhbmNrL00KUGxhbm8KUGxhbnRhZ2VuZXQvTQpQbGFzdGljaW5lL00KUGxhdGFlYS9NClBsYXRoL00KUGxhdG8vTQpQbGF0b25pYwpQbGF0b25pc20vTQpQbGF0b25pc3QvTQpQbGF0dGUvTQpQbGF1dHVzL00KUGxheVN0YXRpb24vTQpQbGF5Ym95L00KUGxheXRleC9NClBsZWlhZGVzL00KUGxlaXN0b2NlbmUvTQpQbGV4aWdsYXMvTVMKUGxpbnkvTQpQbGlvY2VuZS9TTQpQbHV0YXJjaC9NClBsdXRvL00KUGx5bW91dGgvTQpQbS9NClBvL00KUG9jYWhvbnRhcy9NClBvY29uby9TTQpQb2Nvbm9zL00KUG9kZ29yaWNhL00KUG9kaG9yZXR6L00KUG9kdW5rL00KUG9lL00KUG9nby9NClBvaW5jYXJlL00KUG9pcmV0L00KUG9pcm90L00KUG9pc3Nvbi9NClBvaXRpZXIvTQpQb2tlbW9uL00KUG9sL01ZClBvbGFuZC9NClBvbGFuc2tpL00KUG9sYXJpcy9NClBvbGFyb2lkL01TClBvbGUvU00KUG9saXNoL00KUG9saXRidXJvL00KUG9say9NClBvbGxhcmQvTQpQb2xsb2NrL00KUG9sbHV4L00KUG9sbHkvTQpQb2xseWFubmEvTQpQb2xvL00KUG9sdGF2YS9NClBvbHloeW1uaWEvTQpQb2x5bmVzaWEvTQpQb2x5bmVzaWFuL01TClBvbHlwaGVtdXMvTQpQb21lcmFuaWEvTQpQb21lcmFuaWFuL00KUG9tb25hL00KUG9tcGFkb3VyL00KUG9tcGVpYW4KUG9tcGVpaS9NClBvbXBleS9NClBvbmNlL00KUG9udGNoYXJ0cmFpbi9NClBvbnRpYWMvTQpQb250aWFuYWsvTQpQb29oL00KUG9vbGUvTQpQb29uYS9NClBvcGUvTQpQb3BleWUvTQpQb3BvY2F0ZXBldGwvTQpQb3BwZXIvTQpQb3BwaW5zL00KUG9wc2ljbGUvTQpQb3JmaXJpby9NClBvcnJpbWEvTQpQb3JzY2hlL00KUG9ydC9NUgpQb3J0ZXIvTQpQb3J0aWEvTQpQb3J0bGFuZC9NClBvcnRvL00KUG9ydHNtb3V0aC9NClBvcnR1Z2FsL00KUG9ydHVndWVzZS9NClBvc2VpZG9uL00KUG9zdC9NClBvdGVta2luL00KUG90b21hYy9NClBvdHNkYW0vTQpQb3R0YXdhdG9taWUvTQpQb3R0ZXIvTQpQb3R0cy9NClBvdW5kL00KUG91c3Npbi9NClBvd2VsbC9NClBvd2VyUEMvTQpQb3dlclBvaW50L00KUG93ZXJzL00KUG93aGF0YW4vTQpQb3puYW4vTQpQci9NClByYWRhL00KUHJhZG8vTQpQcmFldG9yaWFuL00KUHJhZ3VlL00KUHJhaWEvTQpQcmFrcml0L00KUHJhdGNoZXR0L00KUHJhdHQvTQpQcmF2ZGEvTQpQcmF4aXRlbGVzL00KUHJlYWtuZXNzL00KUHJlY2FtYnJpYW4vTQpQcmVtaW5nZXIvTQpQcmVteXNsaWQvTQpQcmVuc2EvTQpQcmVudGljZS9NClByZXMKUHJlc2J5dGVyaWFuL1NNClByZXNieXRlcmlhbmlzbS9NUwpQcmVzY290dC9NClByZXNsZXkvTQpQcmVzdG9uL00KUHJldG9yaWEvTQpQcmlhbS9NClByaWJpbG9mL00KUHJpY2UvTQpQcmllc3RsZXkvTQpQcmluY2UvTQpQcmluY2V0b24vTQpQcmluY2lwZS9NClByaXNjaWxsYS9NClByaXVzL00KUHJpdmF0ZQpQcm9jcnVzdGVhbi9NClByb2NydXN0ZXMvTQpQcm9jdGVyL00KUHJvY3lvbi9NClByb2YKUHJvaGliaXRpb24KUHJva29maWV2L00KUHJvbWV0aGVhbi9NClByb21ldGhldXMvTQpQcm9waGV0cwpQcm9zZXJwaW5hL00KUHJvc2VycGluZS9NClByb3RhZ29yYXMvTQpQcm90ZXJvem9pYy9NClByb3Rlc3RhbnQvTVMKUHJvdGVzdGFudGlzbS9TTQpQcm90ZXVzL00KUHJvdWRob24vTQpQcm91c3QvTQpQcm92ZW5jYWwvTVMKUHJvdmVuY2UvTQpQcm92ZXJicwpQcm92aWRlbmNlL1NNClByb3ZvL00KUHJvemFjL01TClBydWRlbmNlL00KUHJ1ZGVudGlhbC9NClBydWl0dC9NClBydXNzaWEvTQpQcnVzc2lhbi9NUwpQcnV0L00KUHJ5b3IvTQpQc2FsbXMvTQpQc2FsdGVyL01TClBzeWNoZS9NClB0L00KUHRhaC9NClB0b2xlbWFpYy9NClB0b2xlbXkvU00KUHUvTQpQdWNjaW5pL00KUHVjay9NClB1Y2tldHQvTQpQdWVibGEvTQpQdWVibG8vTQpQdWVydG8KUHVnZXQvTQpQdWdoL00KUHVsYXNraS9NClB1bGl0emVyL00KUHVsbG1hbi9NUwpQdW5jaC9NClB1bmljL00KUHVuamFiL00KUHVuamFiaS9NClB1cmFuYS9NClB1cmNlbGwvTQpQdXJkdWUvTQpQdXJpbS9NUwpQdXJpbmEvTQpQdXJpdGFuL00KUHVyaXRhbmlzbS9NUwpQdXJ1cy9NClB1c2FuL00KUHVzZXkvTQpQdXNoa2luL00KUHVzaHR1L00KUHV0aW4vTQpQdXRuYW0vTQpQdXpvL00KUHZ0ClB5Z21hbGlvbi9NClB5Z215L1NNClB5bGUvTQpQeW0vTQpQeW5jaG9uL00KUHlvbmd5YW5nL00KUHlvdHIvTQpQeXJlbmVlcy9NClB5cmV4L01TClB5cnJoaWMvTQpQeXRoYWdvcmFzL00KUHl0aGFnb3JlYW4vTQpQeXRoaWFzL00KUHl0aG9uL00KUQpRQQpRQgpRQwpRRUQKUU0KUVdFUlRZClFhZGRhZmkvTQpRYW50YXMvTQpRYXRhci9NClFhdGFyaS9NUwpRaW5nZGFvL00KUWlxaWhhci9NClFvbS9NClF1YWFsdWRlL00KUXVha2VyL01TClF1YWtlcmlzbS9TTQpRdWFvYXIvTQpRdWFzaW1vZG8vTQpRdWF0ZXJuYXJ5L00KUXVheWxlL00KUXVlClF1ZWJlYy9NClF1ZWJlY29pcy9NClF1ZWNodWEvTQpRdWVlbi9NUwpRdWVlbnMvTQpRdWVlbnNsYW5kL00KUXVlbnRpbi9NClF1ZXR6YWxjb2F0bC9NClF1ZXpvbi9NClF1aW5jeS9NClF1aW5uL00KUXVpbnRpbGlhbi9NClF1aW50b24vTQpRdWlyaW5hbC9NClF1aXNsaW5nL00KUXVpdG8vTQpRdWl4b3RlL00KUXVpeG90aXNtL00KUXVtcmFuL00KUXVvbnNldC9NClIvTQpSQUYvTQpSQU0vU00KUkJJClJDClJDQS9NClJDTVAKUkQKUkRBClJFSVQKUkVNL1NNClJGClJGQy9TClJGRApSSQpSSUYKUklQClJJU0MKUk4vTQpSTkEvTQpST0ZMClJPTS9NClJPVEMvTQpSUApSUgpSU0ZTUgpSU0kKUlNWClJTVlAKUlRGTQpSVi9TTQpSYS9NClJhYmF0L00KUmFiZWxhaXMvTQpSYWJlbGFpc2lhbi9NClJhYmluL00KUmFjaGFlbC9NClJhY2hlbC9NClJhY2hlbGxlL00KUmFjaG1hbmlub2ZmL00KUmFjaW5lL00KUmFkY2xpZmZlL00KUmFlL00KUmFmYWVsL00KUmFmZmxlcy9NClJhZ25hcm9rL00KUmFpbmllci9NClJhbGVpZ2gvTQpSYWxwaC9NClJhbWEvTQpSYW1hZGEvTQpSYW1hZGFuL01TClJhbWFrcmlzaG5hL00KUmFtYW51amFuL00KUmFtYXlhbmEvTQpSYW1iby9NClJhbWlyZXovTQpSYW1pcm8vTQpSYW1vbi9NClJhbW9uYS9NClJhbW9zL00KUmFtc2F5L00KUmFtc2VzL00KUmFtc2V5L00KUmFuZC9NClJhbmRhbC9NClJhbmRhbGwvTQpSYW5kZWxsL00KUmFuZGkvTQpSYW5kb2xwaC9NClJhbmR5L00KUmFuZ29vbi9NClJhbmtpbi9NClJhbmtpbmUvTQpSYW91bC9NClJhcGhhZWwvTQpSYXBwYXBvcnQvTQpSYXB1bnplbC9NClJhcXVlbC9NClJhc2FsZ2V0aGkvTQpSYXNhbGhhZ3VlL00KUmFzbXVzc2VuL00KUmFzcHV0aW4vTQpSYXN0YQpSYXN0YWJhbi9NClJhc3RhZmFyaWFuL01TClJhc3RhZmFyaWFuaXNtClJhdGhlci9NClJhdGxpZmYvTQpSYXVsL00KUmF2ZWwvTQpSYXdhbHBpbmRpL00KUmF5L00KUmF5QmFuL00KUmF5YnVybi9NClJheWxlaWdoL00KUmF5bW9uZC9NClJheW11bmRvL00KUmIvTQpSZApSZS9NClJlYWRpbmcvTQpSZWFnYW4vTQpSZWFnYW5vbWljcy9NClJlYWx0b3IvTQpSZWFzb25lci9NClJlYmEvTQpSZWJla2FoL00KUmVjaWZlL00KUmVjb25zdHJ1Y3Rpb24vTQpSZWRlZW1lci9NClJlZGZvcmQvTQpSZWRncmF2ZS9NClJlZG1vbmQvTQpSZWVib2svTQpSZWVkL00KUmVlc2UvTQpSZWV2ZXMvTQpSZWZvcm1hdGlvbi9NUwpSZWZ1Z2lvL00KUmVnZ2llL00KUmVnaW5hL00KUmVnaW5hZS9NClJlZ2luYWxkL00KUmVnb3IvTQpSZWd1bHVzL00KUmVobnF1aXN0L00KUmVpY2gvTQpSZWljaHN0YWcncwpSZWlkL00KUmVpbGx5L00KUmVpbmFsZG8vTQpSZWluaGFyZHQvTQpSZWluaG9sZC9NClJlbWFycXVlL00KUmVtYnJhbmR0L00KUmVtaW5ndG9uL00KUmVtdXMvTQpSZW5hL00KUmVuYWlzc2FuY2UvU00KUmVuYXNjZW5jZQpSZW5hdWx0L00KUmVuZS9NClJlbmVlL00KUmVuby9NClJlbm9pci9NClJlcApSZXByZXNlbnRhdGl2ZQpSZXB1YmxpY2FuL1NNClJlcHVibGljYW5pc20KUmVxdWllbS9NUwpSZXNpc3RhbmNlClJlc3RvcmF0aW9uL00KUmVzdXJyZWN0aW9uClJldWJlbi9NClJldW5pb24vTQpSZXV0ZXJzL00KUmV1dGhlci9NClJldgpSZXZhL00KUmV2ZWxhdGlvbi9TTQpSZXZlbGF0aW9ucy9NClJldmVyZS9NClJldmVyZW5kL00KUmV2bG9uL00KUmV4L00KUmV5ZXMvTQpSZXlramF2aWsvTQpSZXluYS9NClJleW5hbGRvL00KUmV5bm9sZHMvTQpSZi9NClJoL00KUmhlYS9NClJoZWUvTQpSaGVpbmdhdS9NClJoZW5pc2gvTQpSaGlhbm5vbi9NClJoaW5lL00KUmhpbmVsYW5kL00KUmhvZGEvTQpSaG9kZS9TClJob2Rlcy9NClJob2Rlc2lhL00KUmhvZGVzaWFuClJob25kYS9NClJob25lL00KUmliYmVudHJvcC9NClJpY2FyZG8vTQpSaWNlL00KUmljaC9NClJpY2hhcmQvTVMKUmljaGFyZHMvTQpSaWNoYXJkc29uL00KUmljaGVsaWV1L00KUmljaGllL00KUmljaG1vbmQvTQpSaWNodGVyL00KUmljaHRob2Zlbi9NClJpY2svTQpSaWNrZW5iYWNrZXIvTQpSaWNrZXkvTQpSaWNraWUvTQpSaWNrb3Zlci9NClJpY2t5L00KUmljby9NClJpZGRsZS9NClJpZGUvTQpSaWVmZW5zdGFobC9NClJpZWwvTQpSaWVtYW5uL00KUmllc2xpbmcvTVMKUmlnYS9NClJpZ2VsL00KUmlnZ3MvTQpSaWdodApSaWdvYmVydG8vTQpSaWdvbGV0dG8vTQpSaWxleS9NClJpbGtlL00KUmltYmF1ZC9NClJpbmdsaW5nL00KUmluZ28vTQpSaW8vU00KUmlvcy9NClJpcGxleS9NClJpc29yZ2ltZW50by9NClJpdGEvTQpSaXRhbGluL00KUml0ei9NClJpdmFzL00KUml2ZXJhL00KUml2ZXJzL00KUml2ZXJzaWRlClJpdmllcmEvTVMKUml5YWRoL00KUml6YWwvTQpSbi9NClJvYWNoL00KUm9hbm9rZS9NClJvYi9NClJvYmJpZS9NClJvYmJpbi9NUwpSb2JiaW5zL00KUm9iYnkvTQpSb2JlcnNvbi9NClJvYmVydC9NUwpSb2JlcnRhL00KUm9iZXJ0by9NClJvYmVydHMvTQpSb2JlcnRzb24vTQpSb2Jlc29uL00KUm9iZXNwaWVycmUvTQpSb2Jpbi9NClJvYmluc29uL00KUm9iaXR1c3Npbi9NClJvYmxlcy9NClJvYnNvbi9NClJvYnQvTQpSb2J5bi9NClJvY2NvL00KUm9jaGEvTQpSb2NoYW1iZWF1L00KUm9jaGUvTQpSb2NoZWxsZS9NClJvY2hlc3Rlci9NClJvY2svTQpSb2NrZWZlbGxlci9NClJvY2tmb3JkL00KUm9ja2llcy9NClJvY2tuZS9NClJvY2t3ZWxsL00KUm9ja3kvU00KUm9kL00KUm9kZGVuYmVycnkvTQpSb2Rlcmljay9NClJvZGdlci9NUwpSb2RnZXJzL00KUm9kaW4vTQpSb2RuZXkvTQpSb2RvbGZvL00KUm9kcmljay9NClJvZHJpZ28vTQpSb2RyaWd1ZXovTQpSb2RyaXF1ZXovTQpSb2VnL00KUm9lbnRnZW4KUm9nZWxpby9NClJvZ2VyL01TClJvZ2Vycy9NClJvZ2V0L00KUm9qYXMvTQpSb2t1L00KUm9sYWlkcy9NClJvbGFuZC9NClJvbGFuZG8vTQpSb2xleC9NClJvbGxhbmQvTQpSb2xsZXJibGFkZS9NClJvbGxpbnMvTQpSb2xvZGV4L00KUm9sdmFhZy9NClJvbQpSb21hbi9NUwpSb21hbmVzcXVlL01TClJvbWFuaWEvTQpSb21hbmlhbi9NUwpSb21hbm8vTQpSb21hbm92L00KUm9tYW5zL00KUm9tYW5zaC9NClJvbWFudGljaXNtClJvbWFueS9TTQpSb21lL1NNClJvbWVvL00KUm9tZXJvL00KUm9tbWVsL00KUm9tbmV5L00KUm9tdWx1cy9NClJvbi9NClJvbmFsZC9NClJvbmRhL00KUm9ubmllL00KUm9ubnkvTQpSb25zdGFkdC9NClJvbnRnZW4KUm9vbmV5L00KUm9vc2V2ZWx0L00KUm9vdC9NClJvcXVlZm9ydC9TTQpSb3JzY2hhY2gvTQpSb3J5L00KUm9zYS9NClJvc2FsZXMvTQpSb3NhbGllL00KUm9zYWxpbmQvTQpSb3NhbGluZGEvTQpSb3NhbHluL00KUm9zYW5uYS9NClJvc2FubmUvTQpSb3NhcmlvL00KUm9zY29lL00KUm9zZS9NClJvc2Vhbm4vTQpSb3NlYXUvTQpSb3NlY3JhbnMvTQpSb3NlbGxhL00KUm9zZW1hcmllL00KUm9zZW1hcnkvTQpSb3NlbmJlcmcvTQpSb3NlbmRvL00KUm9zZW56d2VpZy9NClJvc2V0dGEvTQpSb3NpY3J1Y2lhbi9NClJvc2llL00KUm9zbHluL00KUm9zcy9NClJvc3NldHRpL00KUm9zc2luaS9NClJvc3RhbmQvTQpSb3N0b3YvTQpSb3N0cm9wb3ZpY2gvTQpSb3N3ZWxsL00KUm90YXJpYW4vTQpSb3RoL00KUm90aGtvL00KUm90aHNjaGlsZC9NClJvdHRlcmRhbS9NClJvdHR3ZWlsZXIvTQpSb3VhdWx0L00KUm91cmtlL00KUm91c3NlYXUvTQpSb3ZlL1JNClJvdmVyL00KUm93ZS9NClJvd2VuYS9NClJvd2xhbmQvTQpSb3dsaW5nL00KUm94YW5uZS9NClJveGllL00KUm94eS9NClJveS9NClJveWFsL00KUm95Y2UvTQpSb3plbGxlL00KUnRlClJ1L01IClJ1YmFpeWF0L00KUnViYmVybWFpZC9NClJ1YmVuL1NNClJ1YmVucy9NClJ1Ymljb24vTVMKUnViaWsvTQpSdWJpbi9NClJ1Ymluc3RlaW4vTQpSdWJ5L00KUnVjaGJhaC9NClJ1ZG9sZi9NClJ1ZG9scGgvTQpSdWR5L00KUnVkeWFyZC9NClJ1ZnVzL00KUnVoci9NClJ1aXovTQpSdWtleXNlci9NClJ1bXBlbHN0aWx0c2tpbi9NClJ1bXNmZWxkL00KUnVubnltZWRlL00KUnVueW9uL00KUnVwZXJ0L00KUnVzaC9NClJ1c2hkaWUvTQpSdXNobW9yZS9NClJ1c2tpbi9NClJ1c3MvTQpSdXNzZWwvTQpSdXNzZWxsL00KUnVzc2lhL00KUnVzc2lhbi9TTQpSdXNzby9NClJ1c3RiZWx0L00KUnVzdHkvTQpSdXRhbi9NClJ1dGdlcnMvTQpSdXRoL00KUnV0aGVyZm9yZC9NClJ1dGhpZS9NClJ1dGxlZGdlL00KUndhbmRhL01TClJ3YW5kYW4vU00KUnd5ClJ4ClJ5ClJ5YW4vTQpSeWRiZXJnL00KUnlkZXIvTQpSeXVreXUvTQpTL01OClNBClNBQwpTQUxUL00KU0FNL00KU0FQL00KU0FSUy9NClNBU0UKU0FUClNCQQpTQy9NClNDU0kvTQpTRApTREkKU0UvTQpTRUFUTwpTRUMvTQpTRgpTR01ML00KU0lEUy9NClNKClNKVwpTSwpTTFIKU08vUwpTT0IvTQpTT1AvTQpTT1MvTQpTT1NlcwpTUENBClNQRgpTUUwKU1JPClNTClNTQQpTU0UvTQpTU1MKU1NUClNTVy9NClNUClNURApTVE9MClNVU0UvTQpTVVYKU1ZOL00KU1cvTQpTV0FLClNXQVQKU2FhYi9NClNhYXIvTQpTYWFyaW5lbi9NClNhYXRjaGkvTQpTYWJiYXRoL00KU2FiYmF0aHMKU2FiaWsvTQpTYWJpbi9NClNhYmluYS9NClNhYmluZS9NClNhYnJlL00KU2FicmluYS9NClNhY2FqYXdlYS9NClNhY2NvL00KU2FjaHMvTQpTYWNyYW1lbnRvL00KU2FkYXQvTQpTYWRkYW0vTQpTYWRkdWNlZS9NClNhZGUvTQpTYWRpZS9NClNhZHIvTQpTYWZhdmlkL00KU2FmZXdheS9NClNhZ2FuL00KU2FnaW5hdy9NClNhZ2l0dGFyaXVzL01TClNhaGFyYS9NClNhaGFyYW4vTQpTYWhlbC9NClNhaWdvbi9NClNhaXBoL00KU2FrYWkvTQpTYWtoYS9NClNha2hhbGluL00KU2FraGFyb3YvTQpTYWtpL00KU2Frcy9NClNhbC9NWQpTYWxhZGluL00KU2FsYWRvL00KU2FsYW1pcy9NClNhbGFzL00KU2FsYXphci9NClNhbGVtL00KU2FsZXJuby9NClNhbGluYXMvTQpTYWxpbmdlci9NClNhbGlzYnVyeS9NClNhbGlzaC9NClNhbGsvTQpTYWxsaWUvTQpTYWxsdXN0L00KU2FsbHkvTQpTYWxvbWUvTQpTYWxvbmlrYS9NClNhbHRvbi9NClNhbHZhZG9yL00KU2FsdmFkb3Jhbi9TTQpTYWx2YWRvcmVhbi9NUwpTYWx2YWRvcmlhbi9NUwpTYWx2YXRvcmUvTQpTYWx3ZWVuL00KU2FseXV0L00KU2FtL00KU2FtYW50aGEvTQpTYW1hci9NClNhbWFyYS9NClNhbWFyaXRhbi9NUwpTYW1hcmthbmQvTQpTYW1taWUvTQpTYW1teS9NClNhbW9hL00KU2Ftb2FuL1NNClNhbW9zZXQvTQpTYW1veWVkL00KU2FtcHNvbi9NClNhbXNvbi9NClNhbXNvbml0ZS9NClNhbXN1bmcvTQpTYW11ZWwvTQpTYW11ZWxzb24vTQpTYW4nYQpTYW4vTQpTYW5hL00KU2FuY2hlei9NClNhbmNoby9NClNhbmQvWk0KU2FuZGJ1cmcvTQpTYW5kZXJzL00KU2FuZGluaXN0YS9NClNhbmRvdmFsL00KU2FuZHJhL00KU2FuZHkvTQpTYW5mb3JkL00KU2FuZm9yaXplZC9NClNhbmcvTVIKU2FuZ2VyL00KU2FuaGVkcmluL00KU2Fua2EvTQpTYW5rYXJhL00KU2Fuc2tyaXQvTQpTYW50YS9NClNhbnRhbmEvTQpTYW50YXlhbmEvTQpTYW50ZXJpYS9NClNhbnRpYWdvL00KU2FudG9zL00KU2FwcGhvL00KU2FwcG9yby9NClNhcmEvTQpTYXJhY2VuL01TClNhcmFnb3NzYS9NClNhcmFoL00KU2FyYWpldm8vTQpTYXJhbi9NClNhcmFzb3RhL00KU2FyYXRvdi9NClNhcmF3YWsvTQpTYXJkaW5pYS9NClNhcmdhc3NvL00KU2FyZ2VudC9NClNhcmdvbi9NClNhcm5vZmYvTQpTYXJveWFuL00KU2FydG8vTQpTYXJ0cmUvTQpTYXNoYS9NClNhc2sKU2Fza2F0Y2hld2FuL00KU2Fza2F0b29uL00KU2FzcXVhdGNoL01TClNhc3Nhbmlhbi9NClNhc3Nvb24vTQpTYXQvTQpTYXRhbi9NClNhdGFuaXNtL00KU2F0YW5pc3QvTQpTYXR1cmRheS9NUwpTYXR1cm4vTQpTYXR1cm5hbGlhL00KU2F1ZGkvTVMKU2F1bC9NClNhdW5kZXJzL00KU2F1bmRyYS9NClNhdXNzdXJlL00KU2F1dGVybmVzClNhdmFnZS9NClNhdmFubmFoL00KU2F2aW9yL00KU2F2b25hcm9sYS9NClNhdm95L00KU2F2b3lhcmQvTQpTYXd5ZXIvTQpTYXhvbi9NUwpTYXhvbnkvTQpTYXllcnMvTQpTYi9NClNjL00KU2NhbGEvTQpTY2FuClNjYW5kaW5hdmlhL00KU2NhbmRpbmF2aWFuL01TClNjYXJhbW91Y2gvTQpTY2FyYm9yb3VnaC9NClNjYXJsYXR0aS9NClNjaGVhdC9NClNjaGVkYXIvTQpTY2hlaGVyYXphZGUvTQpTY2hlbGxpbmcvTQpTY2hlbmVjdGFkeS9NClNjaGlhcGFyZWxsaS9NClNjaGljay9NClNjaGlsbGVyL00KU2NoaW5kbGVyL00KU2NobGVzaW5nZXIvTQpTY2hsaWVtYW5uL00KU2NobGl0ei9NClNjaG1pZHQvTQpTY2huYWJlbC9NClNjaG5hdXplci9NClNjaG5laWRlci9NClNjaG9lbmJlcmcvTQpTY2hvcGVuaGF1ZXIvTQpTY2hyaWVmZmVyL00KU2Nocm9kaW5nZXIvTQpTY2hyb2VkZXIvTQpTY2h1YmVydC9NClNjaHVsdHovTQpTY2h1bHovTQpTY2h1bWFubi9NClNjaHVtcGV0ZXIvTQpTY2h1eWxlci9NClNjaHV5bGtpbGwvTQpTY2h3YXJ0ei9NClNjaHdhcnplbmVnZ2VyL00KU2Nod2FyemtvcGYvTQpTY2h3ZWl0emVyL00KU2Nod2VwcGVzL00KU2Nod2luZ2VyL00KU2Nod2lubi9NClNjaWVudG9sb2dpc3QvU00KU2NpZW50b2xvZ3kvTQpTY2lwaW8vTQpTY29wZXMvTQpTY29ycGlvL1NNClNjb3JwaXVzL00KU2NvcnNlc2UvTQpTY290L1NNClNjb3RjaC9NUwpTY290Y2htYW4vTQpTY290Y2htZW4vTQpTY290Y2h3b21hbi9NClNjb3RjaHdvbWVuL00KU2NvdGlhL00KU2NvdGxhbmQvTQpTY290c21hbi9NClNjb3RzbWVuL00KU2NvdHN3b21hbi9NClNjb3Rzd29tZW4vTQpTY290dC9NClNjb3R0aWUvU00KU2NvdHRpc2gvTQpTY290dHNkYWxlL00KU2NyYWJibGUvTVMKU2NyYW50b24vTQpTY3JpYWJpbi9NClNjcmlibmVyL00KU2NyaXB0dXJlL1NNClNjcm9vZ2UvTQpTY3J1Z2dzL00KU2N1ZC9NClNjdWxsZXkvTQpTY3lsbGEvTQpTY3l0aGlhL00KU2N5dGhpYW4vTQpTZS9NSApTZWFib3JnL00KU2VhZ3JhbS9NClNlYW4vTQpTZWFycy9NClNlYXR0bGUvTQpTZWJhc3RpYW4vTQpTZWMKU2Vjb25hbC9NClNlY3JldGFyaWF0L00KU2VjcmV0YXJ5ClNlZGVyL01TClNlZG5hL00KU2VlYmVjay9NClNlZWdlci9NClNlZ2EvTQpTZWdvdmlhL00KU2VncmUvTQpTZWd1bmRvL00KU2Vpa28vTQpTZWluZS9NClNlaW5mZWxkL00KU2Vqb25nL00KU2VsYXNzaWUvTQpTZWxlY3RyaWMvTQpTZWxlbmEvTQpTZWxldWNpZC9NClNlbGV1Y3VzL00KU2VsaW0vTQpTZWxqdWsvTQpTZWxraXJrL00KU2VsbGVycy9NClNlbG1hL00KU2Vsem5pY2svTQpTZW1hcmFuZy9NClNlbWlub2xlL01TClNlbWlyYW1pcy9NClNlbWl0ZS9NUwpTZW1pdGljL1NNClNlbXRleC9NClNlbmF0ZS9NUwpTZW5kYWkvTQpTZW5lY2EvTVMKU2VuZWdhbC9NClNlbmVnYWxlc2UvTQpTZW5naG9yL00KU2VuaW9yL00KU2VubmFjaGVyaWIvTQpTZW5uZXR0L00KU2Vuc3Vycm91bmQvTQpTZW91bC9NClNlcApTZXBoYXJkaS9NClNlcG95L00KU2VwdC9NClNlcHRlbWJlci9NUwpTZXB0dWFnaW50L01TClNlcXVveWEvTQpTZXJiL1NNClNlcmJpYS9NClNlcmJpYW4vTVMKU2VyZW5hL00KU2VyZW5nZXRpL00KU2VyZ2VpL00KU2VyZ2lvL00KU2VycGVucy9NClNlcnJhL00KU2VycmFuby9NClNldC9NClNldGgvTQpTZXRvbi9NClNldXJhdC9NClNldXNzL00KU2V2YXN0b3BvbC9NClNldmVybi9NClNldmVydXMvTQpTZXZpbGxlL00KU2V2cmVzL00KU2V3YXJkL00KU2V4dGFucy9NClNleHRvbi9NClNleWNoZWxsZXMvTQpTZXlmZXJ0L00KU2V5bW91ci9NClNndApTaGFja2xldG9uL00KU2hhZmZlci9NClNoYWgvTQpTaGFrYS9NClNoYWtlcgpTaGFrZXNwZWFyZS9NClNoYWtlc3BlYXJlYW4vTQpTaGFuYS9NClNoYW5lL00KU2hhbmdoYWkvTQpTaGFua2FyYS9NClNoYW5uYS9NClNoYW5ub24vTQpTaGFudHVuZy9NClNoYXBpcm8vTQpTaGFyaSdhL00KU2hhcmkvTQpTaGFyaWYvTQpTaGFybGVuZS9NClNoYXJvbi9NClNoYXJwL00KU2hhcnBlL00KU2hhcnJvbi9NClNoYXN0YS9NClNoYXVsYS9NClNoYXVuL00KU2hhdW5hL00KU2hhdmlhbi9NClNoYXZ1b3QvTQpTaGF3L00KU2hhd24vTQpTaGF3bmEvTQpTaGF3bmVlL1NNClNoY2hhcmFuc2t5L00KU2hlYS9NClNoZWJhL00KU2hlYmVsaS9NClNoZWVuYS9NClNoZWV0cm9jay9NClNoZWZmaWVsZC9NClNoZWlsYS9NClNoZWxieS9NClNoZWxkb24vTQpTaGVsaWEvTQpTaGVsbC9NClNoZWxsZXkvTQpTaGVsbHkvTQpTaGVsdG9uL00KU2hlbmFuZG9haC9NClNoZW55YW5nL00KU2hlb2wvTQpTaGVwYXJkL00KU2hlcGhlcmQvTQpTaGVwcGFyZC9NClNoZXJhdGFuL00KU2hlcmF0b24vTQpTaGVyZWUvTQpTaGVyaS9NClNoZXJpZGFuL00KU2hlcmxvY2svTQpTaGVybWFuL00KU2hlcnBhL00KU2hlcnJpL00KU2hlcnJpZS9NClNoZXJyeS9NClNoZXJ3b29kL00KU2hlcnlsL00KU2hldGxhbmQvU00KU2hldGxhbmRzL00KU2hldmFyZG5hZHplL00KU2hldmF0L00KU2hpJ2l0ZS9NClNoaWVsZHMvTQpTaGlpdGUvTVMKU2hpamlhemh1YW5nL00KU2hpa29rdS9NClNoaWxsb25nL00KU2hpbG9oL00KU2hpbnRvL01TClNoaW50b2lzbS9NUwpTaGludG9pc3QvTVMKU2hpcmF6L00KU2hpcmxleS9NClNoaXZhL00KU2hvY2tsZXkvTQpTaG9ydC9NClNob3J0aG9ybi9NClNob3Nob25lL1NNClNob3N0YWtvdml0Y2gvTQpTaHJlay9NClNocmV2ZXBvcnQvTQpTaHJpbmVyL00KU2hyb3BzaGlyZS9NClNodWxhL00KU2h5bG9jay9NClNoeWxvY2tpYW4vTQpTaS9NClNpYW0vTQpTaWFtZXNlL00KU2liZWxpdXMvTQpTaWJlcmlhL00KU2liZXJpYW4vTVMKU2lieWwvTQpTaWNpbGlhbi9TTQpTaWNpbHkvTQpTaWQvTQpTaWRkaGFydGhhL00KU2lkbmV5L00KU2llZ2ZyaWVkL00KU2llbWVucy9NClNpZXJwaW5za2kvTQpTaWVycmFzClNpZ2lzbXVuZC9NClNpZ211bmQvTQpTaWd1cmQvTQpTaWhhbm91ay9NClNpa2gvTQpTaWtoaXNtClNpa2hzClNpa2tpbS9NClNpa2tpbWVzZS9NClNpa29yc2t5L00KU2lsYXMvTQpTaWxlc2lhL00KU2lsdXJpYW4vU00KU2lsdmEvTQpTaWx2aWEvTQpTaW1lbm9uL00KU2ltbWVudGFsL00KU2ltbW9ucy9NClNpbW9uL00KU2ltb25lL00KU2ltcHNvbi9TTQpTaW1wc29ucy9NClNpbXMvTQpTaW5haS9NClNpbmF0cmEvTQpTaW5iYWQvTQpTaW5jbGFpci9NClNpbmRiYWQvTQpTaW5kaGkvTQpTaW5nYXBvcmUvTQpTaW5nYXBvcmVhbi9TTQpTaW5nZXIvTQpTaW5naC9NClNpbmdsZXRvbi9NClNpbmhhbGVzZS9NClNpbmtpYW5nL00KU2lvdXgvTQpTaXIvU00KU2lyaXVzL00KU2lzdGluZS9NClNpc3lwaGVhbi9NClNpc3lwaHVzL00KU2l2YS9NClNpdmFuL00KU2phZWxsYW5kL00KU2tpbm5lci9NClNraXBweS9NClNrb3BqZS9NClNreWUvTQpTa3lsYWIvTQpTa3lwZS9NClNsYWNrd2FyZS9NClNsYXNoZG90L00KU2xhdGVyL00KU2xhdi9TTQpTbGF2aWMvTQpTbGF2b25pYy9NClNsaW5reS9NClNsb2FuL00KU2xvYW5lL00KU2xvY3VtL00KU2xvdmFrL1NNClNsb3Zha2lhL00KU2xvdmFraWFuClNsb3ZlbmUvU00KU2xvdmVuaWEvTQpTbG92ZW5pYW4vTVMKU2x1cnBlZS9NClNtL00KU21hbGwvTQpTbWV0YW5hL00KU21pcm5vZmYvTQpTbWl0aC9NClNtaXRoc29uL00KU21pdGhzb25pYW4vTQpTbW9rZXkvTQpTbW9sZW5zay9NClNtb2xsZXR0L00KU211dHMvTQpTbXlybmEKU24vTQpTbmFrZS9NClNuYXBwbGUvTQpTbmVhZC9NClNuZWxsL00KU25pY2tlcnMvTQpTbmlkZXIvTQpTbm9vcHkvTQpTbm93L00KU25vd2JlbHQvTQpTbnlkZXIvTQpTb2F2ZS9NClNvYwpTb2NvcnJvL00KU29jcmF0ZXMvTQpTb2NyYXRpYy9NClNvZGR5L00KU29kb20vTQpTb2ZpYS9NClNvaG8vTQpTb2wvTQpTb2xpcy9NClNvbG9tb24vTQpTb2xvbi9NClNvbHpoZW5pdHN5bi9NClNvbWFsaS9TTQpTb21hbGlhL00KU29tYWxpYW4vTVMKU29tbWUvTQpTb21vemEvTQpTb24vTQpTb25kaGVpbS9NClNvbmRyYS9NClNvbmdoYWkvTQpTb25naHVhL00KU29uaWEvTQpTb25qYS9NClNvbm55L00KU29ub3JhL00KU29udGFnL00KU29ueS9NClNvbnlhL00KU29waGlhL00KU29waGllL00KU29waG9jbGVhbi9NClNvcGhvY2xlcy9NClNvcHdpdGgvTQpTb3Jib25uZS9NClNvc2EvTQpTb3RvL00KU291cGhhbm91dm9uZy9NClNvdXJjZWZvcmdlL00KU291c2EvTQpTb3V0aC9NClNvdXRoYW1wdG9uL00KU291dGhlYXN0L01TClNvdXRoZXJuZXIvU00KU291dGhleS9NClNvdXRocwpTb3V0aHdlc3QvTVMKU292aWV0L00KU293ZXRvL00KU295aW5rYS9NClNveXV6L00KU3AKU3BhYXR6L00KU3BhY2tsZS9NClNwYWhuL00KU3BhaW4vTQpTcGFtL00KU3BhbgpTcGFuZ2xpc2gKU3BhbmlhcmQvU00KU3BhbmlzaC9NClNwYXJrcy9NClNwYXJ0YS9NClNwYXJ0YWN1cy9NClNwYXJ0YW4vTVMKU3BlYXJzL00KU3BlZXIvTQpTcGVuY2UvUk0KU3BlbmNlci9NClNwZW5jZXJpYW4vTQpTcGVuZ2xlci9NClNwZW5nbGVyaWFuL00KU3BlbnNlci9NClNwZW5zZXJpYW4vTQpTcGVycnkvTQpTcGhpbngvTQpTcGljYS9NClNwaWVsYmVyZy9NClNwaWxsYW5lL00KU3Bpbm96YS9NClNwaW54L00KU3Bpcm8vTQpTcGlyb2dyYXBoL00KU3BpdHNiZXJnZW4vTQpTcGl0ei9NClNwb2NrL00KU3Bva2FuZS9NClNwcmluZ2ZpZWxkL00KU3ByaW5nc3RlZW4vTQpTcHJpbnQvTQpTcHJpdGUvTQpTcHV0bmlrL00KU3EKU3F1YW50by9NClNxdWliYi9NClNyL00KU3JpbmFnYXIvTQpTcml2aWpheWEvTQpTdApTdGEKU3RhY2V5L00KU3RhY2kvTQpTdGFjaWUvTQpTdGFjeS9NClN0YWVsL00KU3RhZmZvcmQvTQpTdGFpck1hc3Rlci9NClN0YWxpbi9NClN0YWxpbmdyYWQvTQpTdGFsaW5pc3QvTQpTdGFsbG9uZS9NClN0YW1mb3JkL00KU3Rhbi9NClN0YW5kaXNoL00KU3RhbmZvcmQvTQpTdGFuaXNsYXZza3kvTQpTdGFubGV5L00KU3RhbnRvbi9NClN0YXBsZXMvTQpTdGFyYnVja3MvTQpTdGFyay9NClN0YXJrZXkvTQpTdGFyci9NClN0YXRlbi9NClN0YXRlcwpTdGF1YmFjaC9NClN0ZQpTdGVhZGljYW0vTQpTdGVlbGUvTQpTdGVmYW4vTQpTdGVmYW5pZS9NClN0ZWluL01SClN0ZWluYmVjay9NClN0ZWluZW0vTQpTdGVpbmVyL00KU3RlaW5tZXR6L00KU3RlaW53YXkvTQpTdGVsbGEvTQpTdGVuZGhhbC9NClN0ZW5nZWwvTQpTdGVwaGFuL00KU3RlcGhhbmllL00KU3RlcGhlbi9NUwpTdGVwaGVucy9NClN0ZXBoZW5zb24vTQpTdGVybGluZy9NClN0ZXJuL00KU3Rlcm5lL00KU3Rlcm5vL00KU3RldHNvbi9NClN0ZXViZW4vTQpTdGV2ZS9NClN0ZXZlbi9NUwpTdGV2ZW5zL00KU3RldmVuc29uL00KU3RldmllL00KU3Rld2FydC9NClN0aWVnbGl0ei9NClN0aWx0b24vU00KU3RpbXNvbi9NClN0aW5lL00KU3RpcmxpbmcvTQpTdG9ja2hhdXNlbi9NClN0b2NraG9sbS9NClN0b2NrdG9uL00KU3RvaWMvU00KU3RvaWNpc20vTVMKU3Rva2VzL00KU3RvbGljaG5heWEvTQpTdG9seXBpbi9NClN0b25lL00KU3RvbmVoZW5nZS9NClN0b3BwYXJkL00KU3RvdXQvTQpTdG93ZS9NClN0cmFiby9NClN0cmFkaXZhcmkKU3RyYWRpdmFyaXVzL00KU3RyYXNib3VyZy9NClN0cmF1c3MvTQpTdHJhdmluc2t5L00KU3RyZWlzYW5kL00KU3RyaWNrbGFuZC9NClN0cmluZGJlcmcvTQpTdHJvbWJvbGkvTQpTdHJvbmcvTQpTdHUvTQpTdHVhcnQvTVMKU3R1ZGViYWtlci9NClN0dXR0Z2FydC9NClN0dXl2ZXNhbnQvTQpTdHlnaWFuL00KU3R5cm9mb2FtL1NNClN0eXJvbi9NClN0eXgvTQpTdWFyZXovTQpTdWJhcnUvTQpTdWNyZS9NClN1Y3JldHMvTQpTdWRhbi9NClN1ZGFuZXNlL00KU3VkZXRlbmxhbmQvTQpTdWRva3UvTQpTdWRyYS9NClN1ZS9NClN1ZXRvbml1cy9NClN1ZXovTQpTdWZmb2xrL00KU3VmaS9NClN1ZmlzbS9NClN1aGFydG8vTQpTdWkvTQpTdWthcm5vL00KU3Vra290ClN1bGF3ZXNpL00KU3VsZWltYW4vTQpTdWxsYS9NClN1bGxpdmFuL00KU3VtYXRyYS9NClN1bWF0cmFuL1NNClN1bWVyaWEvTQpTdW1lcmlhbi9TTQpTdW1tZXIvTVMKU3VtbWVycy9NClN1bW5lci9NClN1bXRlci9NClN1bi9TTQpTdW5iZWFtL00KU3VuYmVsdC9NClN1bmRhbmVzZS9NClN1bmRhcy9NClN1bmRheS9NUwpTdW5nL00KU3Vua2lzdC9NClN1bm5pL1NNClN1bm5pdGUvTVMKU3Vubnl2YWxlL00KU3VwZXJib3dsL00KU3VwZXJmdW5kL00KU3VwZXJnbHVlL00KU3VwZXJpb3IvTQpTdXBlcm1hbi9NClN1cHQKU3VyYWJheWEvTQpTdXJhdC9NClN1cmluYW1lL00KU3VyaW5hbWVzZQpTdXJ5YS9NClN1c2FuL00KU3VzYW5hL00KU3VzYW5uYS9NClN1c2FubmUvTQpTdXNpZS9NClN1c3F1ZWhhbm5hL00KU3Vzc2V4L00KU3V0aGVybGFuZC9NClN1dHRvbi9NClN1dmEvTQpTdXdhbmVlL00KU3V6YW5uZS9NClN1emV0dGUvTQpTdXpob3UvTQpTdXp1a2kvTQpTdXp5L00KU3ZhbGJhcmQvTQpTdmVuL00KU3ZlbmdhbGkvTQpTdmVyZGxvdnNrClN3YWhpbGkvU00KU3dhbW1lcmRhbS9NClN3YW5lZS9NClN3YW5zZWEvTQpTd2Fuc29uL00KU3dhemkvU00KU3dhemlsYW5kL00KU3dlZC9OClN3ZWRlL1NNClN3ZWRlbi9NClN3ZWRlbmJvcmcvTQpTd2VkaXNoL00KU3dlZW5leS9NClN3ZWV0L00KU3dpZnQvTQpTd2luYnVybmUvTQpTd2lzcy9NUwpTd2lzc2Fpci9NClN3aXR6ClN3aXR6ZXJsYW5kL00KU3liaWwvTQpTeWRuZXkvTQpTeWtlcy9NClN5bHZlc3Rlci9NClN5bHZpYS9NClN5bHZpZS9NClN5bmdlL00KU3lyYWN1c2UvTQpTeXJpYS9NClN5cmlhYy9NClN5cmlhbi9NUwpTemlsYXJkL00KU3p5bWJvcnNrYS9NClQnYW5nL00KVC9NREcKVEEKVEFSUApUQi9NClRCQQpURApUREQKVEVGTApURUxORVQvUwpURUxORVRUZWQKVEVMTkVUVGluZwpURVNMClRFU09MClRHSUYKVEhDClRLTy9NClRMQy9NClRNClROClROVC9NClRPRUZMClRRTQpUVi9TTQpUVkEKVFdBL00KVFdYClRYClRhL00KVGFiYXNjby9TTQpUYWJhdGhhL00KVGFiZXJuYWNsZS9NUwpUYWJpdGhhL00KVGFicml6L01TClRhY2l0dXMvTQpUYWNvbWEvTQpUYWQvTQpUYWR6aGlrL00KVGFlZ3UvTQpUYWVqb24vTQpUYWZ0L00KVGFnYWxvZy9TTQpUYWdvcmUvTQpUYWd1cy9NClRhaGl0aS9NClRhaGl0aWFuL01TClRhaG9lL00KVGFpY2h1bmcvTQpUYWluYW4KVGFpbmUvTQpUYWlwZWkvTQpUYWlwaW5nL00KVGFpd2FuL00KVGFpd2FuZXNlL00KVGFpeXVhbi9NClRhamlraXN0YW4vTQpUYWtsYW1ha2FuL00KVGFsYm90L00KVGFsaWJhbi9NClRhbGllc2luL00KVGFsbGFoYXNzZWUvTQpUYWxsY2hpZWYvTQpUYWxsZXkvTQpUYWxsZXlyYW5kL00KVGFsbGlubi9NClRhbG11ZC9NUwpUYWxtdWRpYwpUYWxtdWRpc3QKVGFtYXJhL00KVGFtZWthL00KVGFtZXJhL00KVGFtZXJsYW5lL00KVGFtaS9NClRhbWlrYS9NClRhbWlsL01TClRhbW1hbnkvTQpUYW1taS9NClRhbW1pZS9NClRhbW11ei9NClRhbW15L00KVGFtcGEvTQpUYW1wYXgvTQpUYW1yYS9NClRhbXdvcnRoL00KVGFuY3JlZC9NClRhbmV5L00KVGFuZ2FueWlrYS9NClRhbmdpZXIvTVMKVGFuZ3NoYW4vTQpUYW5pYS9NClRhbmlzaGEvTQpUYW5uZXIvTQpUYW5uaGF1c2VyL00KVGFudGFsdXMvTQpUYW55YS9NClRhbnphbmlhL00KVGFuemFuaWFuL1NNClRhby9NClRhb2lzbS9NUwpUYW9pc3QvTVMKVGFyYS9NClRhcmFudGluby9NClRhcmF3YS9NClRhcmF6ZWQvTQpUYXJiZWxsL00KVGFyZ2V0L00KVGFyaW0vTQpUYXJrZW50b24vTQpUYXJraW5ndG9uL00KVGFydGFyeS9NClRhcnR1ZmZlL00KVGFyemFuL00KVGFzaGEvTQpUYXNoa2VudC9NClRhc21hbi9NClRhc21hbmlhL00KVGFzbWFuaWFuL00KVGFzcy9NClRhdGFyL01TClRhdGUvTQpUYXR1bS9NClRhdXJ1cy9NUwpUYXduZXkvTQpUYXlsb3IvTQpUYi9NClRiaWxpc2kvTQpUYy9NClRjaGFpa292c2t5L00KVGUvTQpUZVgKVGVYZXMKVGVhc2RhbGUvTQpUZWNobmljb2xvci9NClRlY3Vtc2VoL00KVGVkL00KVGVkZHkvTQpUZWZsb24vTVMKVGVndWNpZ2FscGEvTQpUZWhyYW4KVGVsZVByb21wVGVyClRlbGVQcm9tcHRlci9NClRlbGVtYWNodXMvTQpUZWxlbWFubi9NClRlbGV0eXBlClRlbGwvTVIKVGVsbGVyL00KVGVsdWd1L00KVGVtcGUKVGVtcGxhci9NClRlbm4vTQpUZW5uZXNzZWFuL1NNClRlbm5lc3NlZS9NClRlbm55c29uL00KVGVub2NodGl0bGFuL00KVGVvdGlodWFjYW4vTQpUZXJlbmNlL00KVGVyZXNhL00KVGVyZXNoa292YS9NClRlcmkvTQpUZXJrZWwvTQpUZXJwc2ljaG9yZS9NClRlcnIvTQpUZXJyYS9NClRlcnJhbi9NClRlcnJhbmNlL00KVGVycmVsbC9NClRlcnJlbmNlL00KVGVycmkvTQpUZXJyaWUvTQpUZXJyeS9NClRlcnRpYXJ5L00KVGVzbGEvTQpUZXNzL00KVGVzc2EvTQpUZXNzaWUvTQpUZXQvTQpUZXRoeXMvTQpUZXRvbnMvTQpUZXV0b24vTVMKVGV1dG9uaWMvTQpUZXZldC9NClRleC9NClRleGFjby9NClRleGFuL01TClRleGFzL00KVGgvTQpUaGFja2VyYXkvTQpUaGFkL00KVGhhZGRldXMvTQpUaGFpL1NNClRoYWlsYW5kL00KVGhhbGVzL00KVGhhbGlhL00KVGhhbWVzL00KVGhhbmgvTQpUaGFua3NnaXZpbmcvTVMKVGhhbnQvTQpUaGFyL00KVGhhcnAvTQpUaGF0Y2hlci9NClRoZWEvTQpUaGViZXMvTQpUaGVpbGVyL00KVGhlbG1hL00KVGhlbWlzdG9jbGVzL00KVGhlb2NyaXR1cy9NClRoZW9kb3JhL00KVGhlb2RvcmUvTQpUaGVvZG9yaWMvTQpUaGVvZG9zaXVzL00KVGhlb3NvcGh5L00KVGhlcmF2YWRhL00KVGhlcmVzYS9NClRoZXJlc2UvTQpUaGVybW9weWxhZS9NClRoZXJtb3MKVGhlcm9uL00KVGhlc2V1cy9NClRoZXNwaWFuL00KVGhlc3Bpcy9NClRoZXNzYWxvbmlhbi9TTQpUaGVzc2Fsb25pa2kvTQpUaGVzc2FseS9NClRoaWV1L00KVGhpbWJ1L00KVGhpbXBodQpUaG9tYXMvTQpUaG9taXNtL00KVGhvbWlzdGljL00KVGhvbXBzb24vTQpUaG9tc29uL00KVGhvci9NClRob3JhemluZS9NClRob3JlYXUvTQpUaG9ybnRvbi9NClRob3JvdWdoYnJlZC9NClRob3JwZS9NClRob3RoL00KVGhyYWNlL00KVGhyYWNpYW4vTQpUaHUKVGh1Y3lkaWRlcy9NClRodWxlL00KVGh1bmRlcmJpcmQvTQpUaHVyL1MKVGh1cmJlci9NClRodXJtYW4vTQpUaHVybW9uZC9NClRodXJzZGF5L1NNClRodXRtb3NlL00KVGkvTQpUaWEvTQpUaWFuamluL00KVGliZXIvTQpUaWJlcml1cy9NClRpYmV0L00KVGliZXRhbi9NUwpUaWNrZXRtYXN0ZXIvTQpUaWNvbmRlcm9nYS9NClRpZGUvTQpUaWVuYW5tZW4vTQpUaWZmYW55L00KVGlncmlzL00KVGlqdWFuYS9NClRpbGxpY2gvTQpUaWxsbWFuL00KVGlsc2l0L00KVGltL00KVGltYnVrdHUvTQpUaW1leC9NClRpbW15L00KVGltb24vTQpUaW1vci9NClRpbW90aHkvTQpUaW11ci9NClRpbXVyaWQvTQpUaW5hL00KVGluZy9NClRpbmtlcmJlbGwvTQpUaW5rZXJ0b3kvTQpUaW5zZWx0b3duL00KVGludG9yZXR0by9NClRpcHBlY2Fub2UvTQpUaXBwZXJhcnkvTQpUaXJhbmUKVGlyZXNpYXMvTQpUaXJvbC9NClRpcm9sZWFuClRpc2hhL00KVGlzaHJpL00KVGl0YW4vU00KVGl0YW5pYS9NClRpdGFuaWMvTQpUaXRpYW4vTQpUaXRpY2FjYS9NClRpdG8vTQpUaXR1cy9NClRsL00KVGxhbG9jL00KVGxpbmdpdC9NClRtL00KVG9iYWdvL00KVG9iaXQvTQpUb2J5L00KVG9jYW50aW5zL00KVG9jcXVldmlsbGUvTQpUb2QvTQpUb2RkL00KVG9nby9NClRvZ29sZXNlL00KVG9qby9NClRva2F5L00KVG9rdWdhd2EvTQpUb2t5by9NClRva3lvaXRlClRvbGVkby9NUwpUb2xraWVuL00KVG9sc3RveS9NClRvbHRlYy9NClRvbHlhdHRpL00KVG9tL00KVG9tYXMvTQpUb21iYXVnaC9NClRvbWxpbi9NClRvbW1pZS9NClRvbW15L00KVG9tcGtpbnMvTQpUb21zay9NClRvbmdhL00KVG9uZ2FuL01TClRvbmkvTQpUb25pYS9NClRvbnRvL00KVG9ueS9NClRvbnlhL00KVG9wZWthL00KVG9wc3kvTQpUb3JhaC9NClRvcmFocwpUb3JvbnRvL00KVG9ycXVlbWFkYS9NClRvcnJhbmNlL00KVG9ycmVucy9NClRvcnJlcy9NClRvcnJpY2VsbGkvTQpUb3J0b2xhL00KVG9ydHVnYS9NClRvcnZhbGRzL00KVG9yeS9TTQpUb3NjYS9NClRvc2NhbmluaS9NClRvc2hpYmEvTQpUb3RvL00KVG91bG91c2UvTQpUb3duZXMvTQpUb3duc2VuZC9NClRveW5iZWUvTQpUb3lvZGEvTQpUb3lvdGEvTQpUcmFjZXkvTQpUcmFjaS9NClRyYWNpZS9NClRyYWN5L00KVHJhZmFsZ2FyL00KVHJhaWx3YXlzL00KVHJhamFuL00KVHJhbi9NClRyYW5zY2F1Y2FzaWEvTQpUcmFuc3ZhYWwvTQpUcmFuc3lsdmFuaWEvTQpUcmFuc3lsdmFuaWFuL00KVHJhcHBpc3QvU00KVHJhdmlzL00KVHJhdm9sdGEvTQpUcmVhc3VyeS9TTQpUcmVibGlua2EvTQpUcmVra2llL00KVHJlbnQvTQpUcmVudG9uL00KVHJldmVseWFuL00KVHJldmluby9NClRyZXZvci9NClRyZXkvTQpUcmlhbmd1bHVtL00KVHJpYXNzaWMvTQpUcmljaWEvTQpUcmlkZW50L00KVHJpZXN0ZS9NClRyaW11cnRpL00KVHJpbmEvTQpUcmluaWRhZC9NClRyaW5pZGFkaWFuL01TClRyaW5pdHkvU00KVHJpcGl0YWthL00KVHJpcG9saS9NClRyaXBwZS9NClRyaXNoYS9NClRyaXN0YW4vTQpUcml0b24vTQpUcm9icmlhbmQvTQpUcm9pbHVzL00KVHJvamFuL01TClRyb2xsb3BlL00KVHJvbmRoZWltL00KVHJvcGljYW5hL00KVHJvdHNreS9NClRyb3kvTQpUcm95ZXMKVHJ1Y2tlZS9NClRydWRlYXUvTQpUcnVkeS9NClRydWZmYXV0L00KVHJ1amlsbG8vTQpUcnVtYW4vTQpUcnVtYnVsbC9NClRydW1wL00KVHJ1dGgvTQpUc2ltc2hpYW4vTQpUc2lvbGtvdnNreS9NClRzaXRzaWhhci9NClRzb25na2hhcGEvTQpUc3dhbmEvTQpUdS9NClR1YW1vdHUvTQpUdWFyZWcvTQpUdWJtYW4vTQpUdWNrZXIvTQpUdWNzb24vTQpUdWN1bWFuL00KVHVkb3IvU00KVHVlL1MKVHVlcy9NClR1ZXNkYXkvTVMKVHVsYW5lL00KVHVsbC9NClR1bHNhL00KVHVsc2lkYXMvTQpUdW1zL00KVHVuZ3VzL00KVHVuZ3Vza2EvTQpUdW5pcy9NClR1bmlzaWEvTQpUdW5pc2lhbi9NUwpUdW5uZXkvTQpUdXBpL00KVHVwcGVyd2FyZS9NClR1cHVuZ2F0by9NClR1cmdlbmV2L00KVHVyaW4vTQpUdXJpbmcvTQpUdXJrL1NNClR1cmtlc3Rhbi9NClR1cmtleS9NClR1cmtpYy9NUwpUdXJraXNoL00KVHVya21lbmlzdGFuL00KVHVybmVyL00KVHVycGluL00KVHVzY2Fsb29zYS9NClR1c2Nhbi9NClR1c2NhbnkvTQpUdXNjYXJvcmEvTVMKVHVzY29uL00KVHVza2VnZWUvTQpUdXNzYXVkL00KVHV0L00KVHV0YW5raGFtZW4vTQpUdXRzaS9NClR1dHUvTQpUdXZhbHUvTQpUdXZhbHVhbgpUd2Fpbi9NClR3ZWVkL00KVHdlZWRsZWRlZS9NClR3ZWVkbGVkdW0vTQpUd2lsYS9NClR3aW5raWVzL00KVHdpdHRlci9NClR3aXp6bGVycy9NClR3cApUeS9NClR5Y2hvL00KVHlsZW5vbC9NClR5bGVyL00KVHluZGFsZS9NClR5bmRhbGwvTQpUeXJlL00KVHlyZWUvTQpUeXJvbGVhbgpUeXJvbmUvTQpUeXNvbi9NClUvTQpVQVIKVUFXClVCUy9NClVDTEEvTQpVRk8vU00KVUhGL00KVUsvTQpVTApVTi9NClVORVNDTy9NClVOSUNFRi9NClVOSVgvTQpVUEMKVVBJL00KVVBTL00KVVJML1MKVVMvTQpVU0EvTQpVU0FGClVTQgpVU0NHClVTREEvTQpVU0lBClVTTUMKVVNOClVTTwpVU1AKVVNQUwpVU1MKVVNTUi9NClVUL00KVVRDClVWL00KVWJhbmdpL00KVWJ1bnR1L00KVWNheWFsaS9NClVjY2VsbG8vTQpVZGFsbC9NClVmYS9NClVnYW5kYS9NClVnYW5kYW4vTVMKVWlnaHVyL00KVWp1bmdwYW5kYW5nL00KVWtyYWluZS9NClVrcmFpbmlhbi9TTQpVbHN0ZXIvTQpVbHRyYXN1ZWRlL00KVWx5YW5vdnNrL00KVWx5c3Nlcy9NClVtYnJpZWwvTQpVbmRlcndvb2QvTQpVbmdhdmEvTQpVbmljb2RlL00KVW5pbGV2ZXIvTQpVbmlvbi9TTQpVbmlvbmlzdApVbmlyb3lhbC9NClVuaXRhcmlhbi9NUwpVbml0YXJpYW5pc20vTVMKVW5pdGFzL00KVW5peC9TClVudWthbGhhaS9NClVwYW5pc2hhZHMvTQpVcGRpa2UvTQpVcGpvaG4vTQpVcHRvbi9NClVyL00KVXJhbC9TTQpVcmFscy9NClVyYW5pYS9NClVyYW51cy9NClVyYmFuL00KVXJkdS9NClVyZXkvTQpVcmlhaC9NClVyaWVsL00KVXJpcy9NClVycXVoYXJ0L00KVXJzYS9NClVyc3VsYS9NClVyc3VsaW5lL00KVXJ1Z3VheS9NClVydWd1YXlhbi9NUwpVcnVtcWkvTQpVc2VuZXQvTVMKVXN0aW5vdi9NClV0ClV0YWgvTQpVdGFoYW4vTVMKVXRlL1NNClV0b3BpYS9TTQpVdG9waWFuL1NNClV0cmVjaHQvTQpVdHJpbGxvL00KVXpiZWsvTQpVemJla2lzdGFuL00KVXppL1NNClYvTQpWQQpWQVQvTQpWQVgKVkFYZXMKVkNSL00KVkQvTQpWRFQKVkRVClZGClZGVy9NClZHClZHQQpWSEYvTQpWSFMKVkkvTQpWSVAvU00KVklTVEEKVkoKVkxGL00KVk9BClZQClZUClZUT0wKVmEvTQpWYWRlci9NClZhZHV6L00KVmFsL00KVmFsYXJpZS9NClZhbGRlei9NClZhbGVuY2lhL1NNClZhbGVudGkvTQpWYWxlbnRpbi9NClZhbGVudGluZS9NClZhbGVudGluby9NClZhbGVuenVlbGEvTQpWYWxlcmlhL00KVmFsZXJpYW4vTQpWYWxlcmllL00KVmFsZXJ5L00KVmFsaGFsbGEvTQpWYWxpdW0vTVMKVmFsa3lyaWUvU00KVmFsbGVqbwpWYWxsZXR0YS9NClZhbG9pcy9NClZhbHBhcmFpc28vTQpWYWx2b2xpbmUvTQpWYW4vTQpWYW5jZS9NClZhbmNvdXZlci9NClZhbmRhbC9NUwpWYW5kZXJiaWx0L00KVmFuZHlrZS9NClZhbmVzc2EvTQpWYW5nL00KVmFudWF0dS9NClZhbnpldHRpL00KVmFyYW5hc2kvTQpWYXJlc2UvTQpWYXJnYXMvTQpWYXNlbGluZS9TTQpWYXNxdWV6L00KVmFzc2FyL00KVmF0aWNhbi9NClZhdWJhbi9NClZhdWdoYW4vTQpWYXVnaG4vTQpWYXpxdWV6L00KVmVibGVuL00KVmVkYS9TTQpWZWRhbnRhL00KVmVnYS9TTQpWZWdhcy9NClZlZ2VtaXRlL00KVmVsYS9NClZlbGFzcXVlei9NClZlbGF6cXVlei9NClZlbGNyby9NUwpWZWxlei9NClZlbG1hL00KVmVsdmVldGEvTQpWZW5ldGlhbi9TTQpWZW5lenVlbGEvTQpWZW5lenVlbGFuL1NNClZlbmljZS9NClZlbm4vTQpWZW50b2xpbi9NClZlbnVzL01TClZlbnVzaWFuL00KVmVyYS9NClZlcmFjcnV6L00KVmVyZGUvTQpWZXJkaS9NClZlcmR1bi9NClZlcml6b24vTQpWZXJsYWluZS9NClZlcm1lZXIvTQpWZXJtb250L1pNUgpWZXJtb250ZXIvTQpWZXJuL00KVmVybmEvTQpWZXJuZS9NClZlcm5vbi9NClZlcm9uYS9NClZlcm9uZXNlL00KVmVyb25pY2EvTQpWZXJzYWlsbGVzL00KVmVzYWxpdXMvTQpWZXNwYXNpYW4vTQpWZXNwdWNjaS9NClZlc3RhL00KVmVzdXZpdXMvTQpWaWFjb20vTQpWaWFncmEvTQpWaWMvTQpWaWNlbnRlL00KVmljaHkvTQpWaWNraS9NClZpY2tpZS9NClZpY2tzYnVyZy9NClZpY2t5L00KVmljdG9yL00KVmljdG9yaWEvTQpWaWN0b3JpYW4vTVMKVmljdG9yaWFuaXNtClZpY3Ryb2xhL00KVmlkYWwvTQpWaWVubmEvTQpWaWVubmVzZS9NClZpZW50aWFuZS9NClZpZXRjb25nL00KVmlldG1pbmgvTQpWaWV0bmFtL00KVmlldG5hbWVzZS9NClZpamF5YW5hZ2FyL00KVmlqYXlhd2FkYS9NClZpa2luZy9NUwpWaWxhL00KVmlsbGEvTQpWaWxsYXJyZWFsL00KVmlsbG9uL00KVmlsbWEvTQpWaWxuaXVzL00KVmlseXVpL00KVmluY2UvTQpWaW5jZW50L00KVmluZGVtaWF0cml4L00KVmluc29uL00KVmlvbGEvTQpWaW9sZXQvTQpWaXJnaWUvTQpWaXJnaWwvTQpWaXJnaW5pYS9NClZpcmdpbmlhbi9TTQpWaXJnby9TTQpWaXNhL00KVmlzYXlhbnMvTQpWaXNobnUvTQpWaXNpZ290aC9NClZpc2lnb3RocwpWaXN0dWxhL00KVml0aW0vTQpWaXRvL00KVml0dXMvTQpWaXZhbGRpL00KVml2ZWthbmFuZGEvTQpWaXZpYW4vTQpWaXZpZW5uZS9NClZsYWQvTQpWbGFkaW1pci9NClZsYWRpdm9zdG9rL00KVmxhbWluY2svTQpWbGFzaWMvTQpWb0lQClZvZ3VlL00KVm9sY2tlci9NClZvbGRlbW9ydC9NClZvbGdhL00KVm9sZ29ncmFkL00KVm9sa3N3YWdlbi9NClZvbHN0ZWFkL00KVm9sdGEvTQpWb2x0YWlyZS9NClZvbHZvL00KVm9uZGEvTQpWb25uZWd1dC9NClZvcm9uZXpoL00KVm9yc3Rlci9NClZveWFnZXIvTQpWdApWdWl0dG9uL00KVnVsY2FuL00KVnVsZwpWdWxnYXRlL1NNClcvTURUCldBCldBQwpXQVNQL00KV0FUUy9NCldDCldITy9NCldJCldNRApXTlcvTQpXUApXU1cvTQpXVE8KV1YKV1cKV1dJCldXSUkKV1dXL00KV1kKV1lTSVdZRwpXYWJhc2gvTQpXYWMKV2Fjby9NCldhZGUvTQpXYWduZXIvTQpXYWduZXJpYW4vTQpXYWhoYWJpL00KV2Fpa2lraS9NCldhaXRlL00KV2FrZS9NCldha3NtYW4vTQpXYWxkL01OCldhbGRlbWFyL00KV2FsZGVuL00KV2FsZGVuc2lhbi9NCldhbGRoZWltL00KV2FsZG8vTQpXYWxkb3JmL00KV2FsZXMvTQpXYWxlc2EvTQpXYWxncmVlbi9NCldhbGtlci9NCldhbGttYW4vTQpXYWxsL1NNUgpXYWxsYWNlL00KV2FsbGVuc3RlaW4vTQpXYWxsZXIvTQpXYWxsaXMvTQpXYWxsb29uL00KV2FsbHMvTQpXYWxtYXJ0L00KV2FscG9sZS9NCldhbHB1cmdpc25hY2h0L00KV2Fsc2gvTQpXYWx0L01SWgpXYWx0ZXIvTQpXYWx0ZXJzL00KV2FsdG9uL00KV2FuYW1ha2VyL00KV2FuZGEvTQpXYW5nL00KV2Fua2VsL00KV2FyZC9NCldhcmUvTUcKV2FyaG9sL00KV2FyaW5nL00KV2FybmVyL00KV2FycmVuL00KV2Fyc2F3L00KV2Fyd2ljay9NCldhc2F0Y2gvTQpXYXNoL00KV2FzaGluZ3Rvbi9NCldhc2hpbmd0b25pYW4vTVMKV2Fzc2VybWFubi9NCldhdGVyYnVyeS9NCldhdGVyZm9yZC9NCldhdGVyZ2F0ZS9NCldhdGVybG9vL01TCldhdGVycy9NCldhdGtpbnMvTQpXYXRzb24vTQpXYXR0L1NNCldhdHRlYXUvTQpXYXR0cy9NCldhdHVzaS9NCldhdWdoL00KV2F2ZQpXYXluZS9NCldlYXZlci9NCldlYi9NUgpXZWJiL00KV2ViZXIvTQpXZWJlcm4vTQpXZWJzdGVyL01TCldlZC9NCldlZGRlbGwvTQpXZWRnd29vZC9NCldlZG5lc2RheS9NUwpXZWVrcy9NCldlaHJtYWNodC9NCldlaS9NCldlaWVyc3RyYXNzL00KV2VpbGwvTQpXZWluYmVyZy9NCldlaXNzL00KV2Vpc3NtdWxsZXIvTQpXZWl6bWFubi9NCldlbGRvbi9NCldlbGxhbmQvTQpXZWxsZXIvTQpXZWxsZXMvTQpXZWxsaW5ndG9uL1NNCldlbGxzL00KV2Vsc2gvTQpXZWxzaG1hbi9NCldlbHNobWVuL00KV2Vsc2h3b21hbgpXZW5kZWxsL00KV2VuZGkvTQpXZW5keS9NCldlc2FrL00KV2VzbGV5L00KV2VzbGV5YW4vTQpXZXNzZXgvTQpXZXNzb24vTQpXZXN0L1NNCldlc3Rlcm4vTVJTCldlc3Rpbmdob3VzZS9NCldlc3RtaW5zdGVyL00KV2VzdG9uL00KV2VzdHBoYWxpYS9NCldleWRlbi9NCldlemVuL00KV2hhcnRvbi9NCldoZWF0aWVzL00KV2hlYXRzdG9uZS9NCldoZWVsZXIvTQpXaGVlbGluZy9NCldoaWcvU00KV2hpcHBsZS9NCldoaXJscG9vbC9NCldoaXN0bGVyL00KV2hpdGFrZXIvTQpXaGl0ZS9TTQpXaGl0ZWZpZWxkL00KV2hpdGVoYWxsL00KV2hpdGVoZWFkL00KV2hpdGVob3JzZS9NCldoaXRlbGV5L00KV2hpdGZpZWxkL00KV2hpdGxleS9NCldoaXRtYW4vTQpXaGl0bmV5L00KV2hpdHN1bmRheS9NUwpXaGl0dGllci9NCldpRmkKV2ljY2EvTQpXaWNoaXRhL00KV2llbWFyL00KV2llc2VsL00KV2llc2VudGhhbC9NCldpZ2dpbnMvTQpXaWduZXIvTQpXaWkvTQpXaWtpbGVha3MKV2lraXBlZGlhL00KV2lsYmVyZm9yY2UvTQpXaWxiZXJ0L00KV2lsYnVyL00KV2lsYnVybi9NCldpbGNveC9NCldpbGRhL00KV2lsZGUvTVIKV2lsZGVyL00KV2lsZXMvTQpXaWxleS9NCldpbGZvcmQvTQpXaWxmcmVkL00KV2lsZnJlZG8vTQpXaWxoZWxtL00KV2lsaGVsbWluYS9NCldpbGtlcnNvbi9NCldpbGtlcy9NCldpbGtpbnMvTQpXaWxraW5zb24vTQpXaWxsL00KV2lsbGEvTQpXaWxsYW1ldHRlL00KV2lsbGFyZC9NCldpbGxlbXN0YWQvTQpXaWxsaWFtL1NNCldpbGxpYW1zL00KV2lsbGlhbXNvbi9NCldpbGxpZS9NCldpbGxpcy9NCldpbGx5L00KV2lsbWEvTQpXaWxtZXIvTQpXaWxtaW5ndG9uL00KV2lsc29uL00KV2lsc29uaWFuL00KV2lsdG9uL00KV2ltYmxlZG9uL00KV2ltc2V5L00KV2luY2hlbGwvTQpXaW5jaGVzdGVyL01TCldpbmRicmVha2VyL00KV2luZGV4L00KV2luZGhvZWsvTQpXaW5kb3dzL00KV2luZHNvci9TTQpXaW5kd2FyZC9NCldpbmVzYXAvTQpXaW5mcmVkL00KV2luZnJleS9NCldpbmlmcmVkL00KV2lua2xlL00KV2lubmViYWdvL00KV2lubmllL00KV2lubmlwZWcvTQpXaW5zdG9uL00KV2ludGVycy9NCldpbnRocm9wL00KV2lzCldpc2MKV2lzY29uc2luL00KV2lzY29uc2luaXRlL01TCldpc2UvTQpXaXR0L00KV2l0dGdlbnN0ZWluL00KV2l0d2F0ZXJzcmFuZC9NCldtL00KV29iZWdvbi9NCldvZGVob3VzZS9NCldvbGYvTQpXb2xmZS9NCldvbGZmL00KV29sZmdhbmcvTQpXb2xsb25nb25nL00KV29sbHN0b25lY3JhZnQvTQpXb2xzZXkvTQpXb2x2ZXJoYW1wdG9uCldvbmRlci9NCldvbmRlcmJyYS9NCldvbmcvTQpXb29kL1NNCldvb2RhcmQvTQpXb29kaHVsbC9NCldvb2Ryb3cvTQpXb29kcy9NCldvb2RzdG9jay9NCldvb2R3YXJkL00KV29vbGYvTQpXb29saXRlL00KV29vbG9uZ29uZy9NCldvb2x3b3J0aC9NCldvb3N0ZXIvTQpXb290ZW4vTQpXb3JjZXN0ZXIvU00KV29yY2VzdGVyc2hpcmUvTQpXb3Jkc3dvcnRoL00KV29ya21hbi9NCldvcm1zL00KV290YW4vTQpXb3Zva2EvTQpXb3puaWFrL00KV296emVjay9NCldyYW5nZWxsL00KV3Jlbi9NCldyaWdodC9NCldyaWdsZXkvTQpXcm9jbGF3L00KV3UvTQpXdWhhbi9NCld1cmxpdHplci9NCld5YXR0L00KV3ljaGVybGV5L00KV3ljbGlmZmUvTQpXeWV0aC9NCld5bGllL00KV3lubi9NCld5bwpXeW9taW5nL00KV3lvbWluZ2l0ZS9TTQpYL00KWEVtYWNzL00KWEwvTQpYTUwKWFMKWFhMClhhbmFkdS9NClhhbnRoaXBwZS9NClhhdmllci9NClhlL1NNClhlbmFraXMvTQpYZW5pYS9NClhlbm9waG9uL00KWGVyb3gvTVMKWGVyeGVzL00KWGhvc2EvTQpYaSdhbi9NClhpYW4vU00KWGlhb3BpbmcvTQpYaW1lbmVzL00KWGluZ3UvTQpYaW9uZ251L00KWG1hcy9NUwpYb2NoaXBpbGxpL00KWHV6aG91L00KWS9NCllNQ0EvTQpZTUhBCllNTVYKWVQKWVdDQS9NCllXSEEKWWFjYy9NCllhaG9vL00KWWFodHplZS9NCllhaHdlaC9NCllha2ltYS9NCllha3V0L00KWWFrdXRzay9NCllhbGUvTQpZYWxvdy9NCllhbHRhL00KWWFsdS9NCllhbWFnYXRhL00KWWFtYWhhL00KWWFtb3Vzc291a3JvL00KWWFuZy9NCllhbmdvbi9NCllhbmd0emUvTQpZYW5rL1NNCllhbmtlZS9TTQpZYW9iYW5nL00KWWFvdW5kZS9NCllhcXVpL00KWWFyZW4KWWFyb3NsYXZsL00KWWF0YXJvL00KWWF0ZXMvTQpZYi9NClllYWdlci9NClllYXRzL00KWWVrYXRlcmluYnVyZy9NClllbGxvd2tuaWZlL00KWWVsbG93c3RvbmUvTQpZZWx0c2luL00KWWVtZW4vTQpZZW1lbmkvU00KWWVtZW5pdGUKWWVuaXNlaS9NClllcmV2YW4vTQpZZXJrZXMvTQpZZXNlbmlhL00KWWV2dHVzaGVua28vTQpZZ2dkcmFzaWwvTQpZaWRkaXNoL00KWW1pci9NCllvZGEvTQpZb2tuYXBhdGF3cGhhL00KWW9rby9NCllva29oYW1hL00KWW9sYW5kYS9NCllvbmcvTQpZb25rZXJzL00KWW9yay9NCllvcmtpZS9NCllvcmtzaGlyZS9NUwpZb3JrdG93bi9NCllvcnViYS9NCllvc2VtaXRlL00KWW9zc2FyaWFuL00KWW91VHViZS9NCllvdW5nL00KWW91bmdzdG93bi9NCllwcmVzL00KWXBzaWxhbnRpL00KWXVhbi9NCll1Y2F0YW4vTQpZdWdvL00KWXVnb3NsYXYvTVMKWXVnb3NsYXZpYS9NCll1Z29zbGF2aWFuL1NNCll1a29uL00KWXVsZS9TTQpZdWxldGlkZS9NUwpZdW1hL1NNCll1bm5hbi9NCll1cmkvTQpZdmVzL00KWXZldHRlL00KWXZvbm5lL00KWi9TTU5YVApaYWNoYXJpYWgvTQpaYWNoYXJ5L00KWmFjaGVyeS9NClphZ3JlYi9NClphaXJlL00KWmFpcmlhbgpaYW1iZXppL00KWmFtYmlhL00KWmFtYmlhbi9TTQpaYW1ib25pL00KWmFtZW5ob2YvTQpaYW1vcmEvTQpaYW5lL00KWmFudWNrL00KWmFuemliYXIvTQpaYXBhdGEvTQpaYXBvcm96aHllL00KWmFwb3RlYy9NClphcHBhL00KWmFyYS9NClphcmF0aHVzdHJhL00KWmVhbGFuZC9NClplYmVkZWUvTQpaZWNoYXJpYWgvTQpaZWRla2lhaC9NClplZG9uZy9NClplZmZpcmVsbGkvTQpaZWtlL00KWmVsaWcvTQpaZWxtYS9NClplbi9NClplbmdlci9NClplbm8vTQpaZXBoYW5pYWgvTQpaZXBoeXJ1cy9NClplc3QvTQpaZXVzL00KWmhkYW5vdgpaaGVuZ3pob3UvTQpaaGl2YWdvL00KWmh1a292L00KWmliby9NClppZWdmZWxkL00KWmllZ2xlci9NClppZ2d5L00KWmlrYQpaaW1iYWJ3ZS9NClppbWJhYndlYW4vU00KWmltbWVybWFuL00KWmluZmFuZGVsL00KWmlvbi9TTQpaaW9uaXNtL1NNClppb25pc3QvU00KWmlwbG9jL00KWm4vTQpab2UvTQpab2xhL00KWm9sbHZlcmVpbi9NClpvbG9mdC9NClpvbWJhL00KWm9ybi9NClpvcm9hc3Rlci9NClpvcm9hc3RyaWFuL01TClpvcm9hc3RyaWFuaXNtL1NNClpvcnJvL00KWm9zbWEvTQpaci9NClpzaWdtb25keS9NClp1YmVuZWxnZW51YmkvTQpadWJlbmVzY2hhbWFsaS9NClp1a29yL00KWnVsdS9TTQpadWx1bGFuZApadW5pL00KWnVyaWNoL00KWndpbmdsaS9NClp3b3J5a2luL00KWnlydGVjL00KWnl1Z2Fub3YvTQpaenoKYS9TCmFhaAphYXJkdmFyay9TTQphYi9TRFkKYWJhY2sKYWJhY3VzL01TCmFiYWZ0CmFiYWxvbmUvU00KYWJhbmRvbi9MU0RHCmFiYW5kb25tZW50L00KYWJhc2UvTEdEUwphYmFzZW1lbnQvTQphYmFzaC9HTERTCmFiYXNoZWQvVVkKYWJhc2htZW50L00KYWJhdGUvTEdEUwphYmF0ZWQvVQphYmF0ZW1lbnQvTQphYmF0dG9pci9NUwphYmJlL1NNCmFiYmVzcy9NUwphYmJleS9NUwphYmJvdC9NUwphYmJyCmFiYnJldi9TCmFiYnJldmlhdGUvRFNHTlgKYWJicmV2aWF0aW9uL00KYWJkaWNhdGUvR05EU1gKYWJkaWNhdGlvbi9NCmFiZG9tZW4vU00KYWJkb21pbmFsCmFiZHVjdC9EU0cKYWJkdWN0ZWUvTVMKYWJkdWN0aW9uL1NNCmFiZHVjdG9yL01TCmFiZWFtCmFiZXJyYW50CmFiZXJyYXRpb24vTVMKYWJlcnJhdGlvbmFsCmFiZXQvUwphYmV0dGVkCmFiZXR0aW5nCmFiZXR0b3IvU00KYWJleWFuY2UvTQphYmhvci9TCmFiaG9ycmVkCmFiaG9ycmVuY2UvTQphYmhvcnJlbnQvWQphYmhvcnJpbmcKYWJpZGFuY2UvTQphYmlkZS9HUwphYmlkaW5nL1kKYWJpbGl0eS9JRU1TCmFiamVjdC9ZUAphYmplY3Rpb24vTQphYmplY3RuZXNzL00KYWJqdXJhdGlvbi9TTQphYmp1cmF0b3J5CmFianVyZS9aR0RSUwphYmp1cmVyL00KYWJsYXRlL1hHTlZEUwphYmxhdGlvbi9NCmFibGF0aXZlL01TCmFibGF6ZQphYmxlL1VUCmFibGVyCmFibG9vbQphYmx1dGlvbi9TTQphYm5lZ2F0ZS9HTkRTCmFibmVnYXRpb24vTQphYm5vcm1hbC9ZCmFibm9ybWFsaXR5L1NNCmFib2FyZAphYm9kZS9NUwphYm9saXNoL0dEUwphYm9saXRpb24vTQphYm9saXRpb25pc20vTQphYm9saXRpb25pc3QvU00KYWJvbWluYWJsZQphYm9taW5hYmx5CmFib21pbmF0ZS9EU0dOWAphYm9taW5hdGlvbi9NCmFib3JpZ2luYWwvTVMKYWJvcmlnaW5lL1NNCmFib3JuaW5nCmFib3J0L0dWRFMKYWJvcnRpb24vTVMKYWJvcnRpb25pc3QvTVMKYWJvcnRpdmUvWQphYm91bmQvRFNHCmFib3V0CmFib3ZlL00KYWJvdmVib2FyZAphYnJhY2FkYWJyYS9NCmFicmFkZS9HRFMKYWJyYXNpb24vTVMKYWJyYXNpdmUvTVlQUwphYnJhc2l2ZW5lc3MvTQphYnJlYXN0CmFicmlkZ2UvRFNHCmFicmlkZ21lbnQvTVMKYWJyb2FkCmFicm9nYXRlL1hHTkRTCmFicm9nYXRpb24vTQphYnJvZ2F0b3IvTVMKYWJydXB0L1RQUlkKYWJydXB0bmVzcy9NCmFicy9NCmFic2Nlc3MvTURTRwphYnNjaXNzYS9TTQphYnNjaXNzaW9uL00KYWJzY29uZC9aR1NEUgphYnNjb25kZXIvTQphYnNlaWwvTURTRwphYnNlbmNlL1NNCmFic2VudC9EWVNHCmFic2VudGVlL01TCmFic2VudGVlaXNtL00KYWJzZW50bWluZGVkL1lQCmFic2VudG1pbmRlZG5lc3MvTQphYnNpbnRoZS9NCmFic29sdXRlL1BNWVROUwphYnNvbHV0ZW5lc3MvTQphYnNvbHV0aW9uL00KYWJzb2x1dGlzbS9NCmFic29sdXRpc3QvTVMKYWJzb2x2ZS9EU0cKYWJzb3JiL0FHRFMKYWJzb3JiYW5jZQphYnNvcmJlbmN5L00KYWJzb3JiZW50L1NNCmFic29yYmluZy9ZCmFic29ycHRpb24vTQphYnNvcnB0aXZlCmFic3RhaW4vRFJaR1MKYWJzdGFpbmVyL00KYWJzdGVtaW91cy9QWQphYnN0ZW1pb3VzbmVzcy9NCmFic3RlbnRpb24vTVMKYWJzdGluZW5jZS9NCmFic3RpbmVudAphYnN0cmFjdC9HU1BNRFkKYWJzdHJhY3RlZC9ZUAphYnN0cmFjdGVkbmVzcy9NCmFic3RyYWN0aW9uL1NNCmFic3RyYWN0bmVzcy9NUwphYnN0cnVzZS9ZUAphYnN0cnVzZW5lc3MvTQphYnN1cmQvVFBSWQphYnN1cmRpc3QvTVMKYWJzdXJkaXR5L1NNCmFic3VyZG5lc3MvTQphYnVuZGFuY2UvU00KYWJ1bmRhbnQvWQphYnVzZSdzCmFidXNlL0VHVkRTCmFidXNlci9NUwphYnVzaXZlL1lQCmFidXNpdmVuZXNzL00KYWJ1dC9TTAphYnV0bWVudC9NUwphYnV0dGVkCmFidXR0aW5nCmFidXp6CmFieXNtYWwvWQphYnlzcy9NUwphYnlzc2FsCmFjCmFjYWNpYS9NUwphY2FkZW1lL00KYWNhZGVtaWEvTQphY2FkZW1pYy9TTQphY2FkZW1pY2FsL1kKYWNhZGVtaWNpYW4vTVMKYWNhZGVteS9TTQphY2FudGh1cy9NUwphY2NlZGUvR0RTCmFjY2VsZXJhdGUvR05YRFMKYWNjZWxlcmF0aW9uL00KYWNjZWxlcmF0b3IvU00KYWNjZW50L01EU0cKYWNjZW50ZWQvVQphY2NlbnR1YWwKYWNjZW50dWF0ZS9HTkRTCmFjY2VudHVhdGlvbi9NCmFjY2VwdC9EU0JHCmFjY2VwdGFiaWxpdHkvTQphY2NlcHRhYmxlbmVzcy9NCmFjY2VwdGFibHkvVQphY2NlcHRhbmNlL1NNCmFjY2VwdGF0aW9uL01TCmFjY2VwdGVkL1UKYWNjZXNzL01EU0cKYWNjZXNzaWJpbGl0eS9JTQphY2Nlc3NpYmxlL0kKYWNjZXNzaWJseS9JCmFjY2Vzc2lvbi9NREdTCmFjY2Vzc29yaXplL0RTRwphY2Nlc3NvcnkvU00KYWNjaWRlbnQvTVMKYWNjaWRlbnRhbC9TTVkKYWNjbGFpbS9NREdTCmFjY2xhbWF0aW9uL00KYWNjbGltYXRlL0RTR04KYWNjbGltYXRpb24vTQphY2NsaW1hdGl6YXRpb24vTQphY2NsaW1hdGl6ZS9EU0cKYWNjbGl2aXR5L1NNCmFjY29sYWRlL1NNCmFjY29tbW9kYXRlL1hHTkRTCmFjY29tbW9kYXRpbmcvWQphY2NvbW1vZGF0aW9uL00KYWNjb21wYW5pZWQvVQphY2NvbXBhbmltZW50L01TCmFjY29tcGFuaXN0L1NNCmFjY29tcGFueS9EU0cKYWNjb21wbGljZS9TTQphY2NvbXBsaXNoL0RTTEcKYWNjb21wbGlzaGVkL1UKYWNjb21wbGlzaG1lbnQvTVMKYWNjb3JkL0dNRFMKYWNjb3JkYW5jZS9NCmFjY29yZGFudAphY2NvcmRpbmcvWQphY2NvcmRpb24vTVMKYWNjb3JkaW9uaXN0L01TCmFjY29zdC9HTURTCmFjY291bnQvTURTQkcKYWNjb3VudGFiaWxpdHkvTQphY2NvdW50YWJsZS9VCmFjY291bnRhbmN5L00KYWNjb3VudGFudC9NUwphY2NvdW50ZWQvVQphY2NvdW50aW5nL00KYWNjb3V0ZXIvU0dECmFjY291dGVybWVudHMvTQphY2NyZWRpdC9TR0QKYWNjcmVkaXRhdGlvbi9NCmFjY3JlZGl0ZWQvVQphY2NyZXRpb24vTVMKYWNjcnVhbC9NUwphY2NydWUvR0RTCmFjY3QKYWNjdWx0dXJhdGUvRFNHTgphY2N1bHR1cmF0aW9uL00KYWNjdW11bGF0ZS9YR05WRFMKYWNjdW11bGF0aW9uL00KYWNjdW11bGF0b3IvTVMKYWNjdXJhY3kvSU0KYWNjdXJhdGUvSVkKYWNjdXJhdGVuZXNzL00KYWNjdXJzZWQvUAphY2N1cnNlZG5lc3MvTQphY2N1c2F0aW9uL01TCmFjY3VzYXRpdmUvTVMKYWNjdXNhdG9yeQphY2N1c2UvWkdEUlMKYWNjdXNlci9NCmFjY3VzaW5nL1kKYWNjdXN0b20vRFNHCmFjY3VzdG9tZWQvVQphY2UvRFNNRwphY2VyYmF0ZS9EU0cKYWNlcmJpYwphY2VyYmljYWxseQphY2VyYml0eS9NCmFjZXRhbWlub3BoZW4vTQphY2V0YXRlL01TCmFjZXRpYwphY2V0b25lL00KYWNldG9uaWMKYWNldHlsCmFjZXR5bGVuZS9NCmFjaGUvRFNNRwphY2hlbmUvTVMKYWNoaWV2ZS9CTFpHRFJTCmFjaGlldmVtZW50L1NNCmFjaGlldmVyL00KYWNoaW5nL1kKYWNob28vTQphY2hyb21hdGljCmFjaHkvVFIKYWNpZC9TTVkKYWNpZGljCmFjaWRpZnkvR0RTCmFjaWRpdHkvTQphY2lkb3Npcy9NCmFjaWR1bG91cwphY2tub3dsZWRnZS9EU0cKYWNrbm93bGVkZ2VkL1UKYWNrbm93bGVkZ21lbnQvU00KYWNtZS9TTQphY25lL00KYWNvbHl0ZS9NUwphY29uaXRlL01TCmFjb3JuL01TCmFjb3VzdGljL1MKYWNvdXN0aWNhbC9ZCmFjb3VzdGljcy9NCmFjcXVhaW50L0FHU0QKYWNxdWFpbnRhbmNlL1NNCmFjcXVhaW50YW5jZXNoaXAvTQphY3F1YWludGVkL1UKYWNxdWllc2NlL0RTRwphY3F1aWVzY2VuY2UvTQphY3F1aWVzY2VudC9ZCmFjcXVpcmUvWkdCRFJTTAphY3F1aXJlbWVudC9NCmFjcXVpc2l0aW9uL01TCmFjcXVpc2l0aXZlL1lQCmFjcXVpc2l0aXZlbmVzcy9NCmFjcXVpdC9TCmFjcXVpdHRhbC9NUwphY3F1aXR0ZWQKYWNxdWl0dGluZwphY3JlL1NNCmFjcmVhZ2UvTVMKYWNyaWQvUFRSWQphY3JpZGl0eS9NCmFjcmlkbmVzcy9NCmFjcmltb25pb3VzL1lQCmFjcmltb25pb3VzbmVzcy9NCmFjcmltb255L00KYWNyb2JhdC9NUwphY3JvYmF0aWMvUwphY3JvYmF0aWNhbGx5CmFjcm9iYXRpY3MvTQphY3JvbnltL01TCmFjcm9waG9iaWEvTQphY3JvcG9saXMvTVMKYWNyb3NzCmFjcm9zdGljL1NNCmFjcnlsYW1pZGUKYWNyeWxpYy9NUwphY3QncwphY3QvQVNER1YKYWN0aW5nL00KYWN0aW5pdW0vTQphY3Rpb24vQVNNCmFjdGlvbmFibGUKYWN0aXZhdGUvSUNBTkdTRAphY3RpdmF0aW9uL0lDQU0KYWN0aXZhdG9yL01TCmFjdGl2ZSdzCmFjdGl2ZS9JS1kKYWN0aXZlbmVzcy9NCmFjdGl2ZXMKYWN0aXZpc20vTQphY3RpdmlzdC9NUwphY3Rpdml0aWVzCmFjdGl2aXR5L0lNCmFjdG9yL0FNUwphY3RyZXNzL01TCmFjdHVhbC9ZCmFjdHVhbGl0eS9TTQphY3R1YWxpemF0aW9uL00KYWN0dWFsaXplL0dEUwphY3R1YXJpYWwKYWN0dWFyeS9TTQphY3R1YXRlL0dORFMKYWN0dWF0aW9uL00KYWN0dWF0b3IvU00KYWN1aXR5L00KYWN1bWVuL00KYWN1cHJlc3N1cmUvTQphY3VwdW5jdHVyZS9NCmFjdXB1bmN0dXJpc3QvU00KYWN1dGUvUE1ZVFJTCmFjdXRlbmVzcy9NCmFjeWNsb3Zpci9NCmFjeWwKYWQvU00KYWRhZ2UvTVMKYWRhZ2lvL01TCmFkYW1hbnQvTVkKYWRhcHQvQlpHVkRSUwphZGFwdGFiaWxpdHkvTQphZGFwdGF0aW9uL01TCmFkYXB0ZXIvTQphZGFwdGlvbi9TCmFkZC9TRFJCWkcKYWRkZW5kL01TCmFkZGVuZGEKYWRkZW5kdW0vTQphZGRlci9NCmFkZGljdC9HVk1EUwphZGRpY3Rpb24vU00KYWRkaXRpb24vU00KYWRkaXRpb25hbC9ZCmFkZGl0aXZlL1NNCmFkZGxlL0dEUwphZGRyZXNzJ3MKYWRkcmVzcy9BR0RTCmFkZHJlc3NhYmxlCmFkZHJlc3NlZC9VCmFkZHJlc3NlZS9TTQphZGR1Y2UvR0RTCmFkZW5pbmUvTQphZGVub2NhcmNpbm9tYQphZGVub2lkL1NNCmFkZW5vaWRhbAphZGVwdC9NWVBTCmFkZXB0bmVzcy9NCmFkZXF1YWN5L0lNCmFkZXF1YXRlL0lZCmFkZXF1YXRlbmVzcy9NCmFkaGVyZS9HRFMKYWRoZXJlbmNlL00KYWRoZXJlbnQvU00KYWRoZXNpb24vTQphZGhlc2l2ZS9QU00KYWRoZXNpdmVuZXNzL00KYWRpYWJhdGljCmFkaWV1L01TCmFkaW9zCmFkaXBvc2UKYWRqCmFkamFjZW5jeS9NCmFkamFjZW50L1kKYWRqZWN0aXZhbC9ZCmFkamVjdGl2ZS9NUwphZGpvaW4vR0RTCmFkam91cm4vREdMUwphZGpvdXJubWVudC9TTQphZGp1ZGdlL0dEUwphZGp1ZGljYXRlL0dOVlhEUwphZGp1ZGljYXRpb24vTQphZGp1ZGljYXRvci9TTQphZGp1ZGljYXRvcnkKYWRqdW5jdC9NUwphZGp1cmF0aW9uL01TCmFkanVyZS9HRFMKYWRqdXN0L0FHRFNMCmFkanVzdGFibGUKYWRqdXN0ZXIvU00KYWRqdXN0bWVudC9BTVMKYWRqdXRhbnQvU00KYWRtYW4vTQphZG1lbgphZG1pbi9TCmFkbWluaXN0ZXIvREdTCmFkbWluaXN0cmF0ZS9YRFNHTlYKYWRtaW5pc3RyYXRpb24vTQphZG1pbmlzdHJhdGl2ZS9ZCmFkbWluaXN0cmF0b3IvTVMKYWRtaXJhYmx5CmFkbWlyYWwvTVMKYWRtaXJhbHR5L00KYWRtaXJhdGlvbi9NCmFkbWlyZS9CWkdEUlMKYWRtaXJlci9NCmFkbWlyaW5nL1kKYWRtaXNzaWJpbGl0eS9JTQphZG1pc3NpYmxlL0kKYWRtaXNzaWJseQphZG1pc3Npb24vQU0KYWRtaXNzaW9ucwphZG1pdC9BUwphZG1pdHRhbmNlL00KYWRtaXR0ZWQvWQphZG1pdHRpbmcvQQphZG1peC9HRFMKYWRtaXh0dXJlL1NNCmFkbW9uaXNoL0xEU0cKYWRtb25pc2htZW50L01TCmFkbW9uaXRpb24vTVMKYWRtb25pdG9yeQphZG8vTQphZG9iZS9NUwphZG9sZXNjZW5jZS9TTQphZG9sZXNjZW50L1NNCmFkb3B0L0FHVkRTCmFkb3B0YWJsZQphZG9wdGVyL01TCmFkb3B0aW9uL1NNCmFkb3JhYmxlbmVzcy9NCmFkb3JhYmx5CmFkb3JhdGlvbi9NCmFkb3JlL0JaR0RSUwphZG9yZXIvTQphZG9yaW5nL1kKYWRvcm4vTEdEUwphZG9ybmVkL1UKYWRvcm5tZW50L01TCmFkcmVuYWwvTVMKYWRyZW5hbGluJ3MKYWRyZW5hbGluZS9NCmFkcmVuZXJnaWMKYWRyaWZ0CmFkcm9pdC9QWQphZHJvaXRuZXNzL00KYWRzb3JiL1NERwphZHNvcmJlbnQvTVMKYWRzb3JwdGlvbi9TTQphZHVsYXRlL0RTR04KYWR1bGF0aW9uL00KYWR1bGF0b3IvTVMKYWR1bGF0b3J5CmFkdWx0L01TCmFkdWx0ZXJhbnQvTVMKYWR1bHRlcmF0ZS9HTkRTCmFkdWx0ZXJhdGVkL1UKYWR1bHRlcmF0aW9uL00KYWR1bHRlcmVyL1NNCmFkdWx0ZXJlc3MvTVMKYWR1bHRlcm91cwphZHVsdGVyeS9TTQphZHVsdGhvb2QvTQphZHVtYnJhdGUvR05EUwphZHVtYnJhdGlvbi9NCmFkdgphZHZhbmNlL0xEU01HCmFkdmFuY2VtZW50L1NNCmFkdmFudGFnZS9FRFNNRwphZHZhbnRhZ2VvdXMvRVkKYWR2ZW50L1NNCmFkdmVudGl0aW91cy9ZCmFkdmVudHVyZS9EUlNNWkcKYWR2ZW50dXJlci9NCmFkdmVudHVyZXNvbWUKYWR2ZW50dXJlc3MvTVMKYWR2ZW50dXJpc20KYWR2ZW50dXJpc3QvUwphZHZlbnR1cm91cy9ZUAphZHZlbnR1cm91c25lc3MvTQphZHZlcmIvU00KYWR2ZXJiaWFsL1NNWQphZHZlcnNhcmlhbAphZHZlcnNhcnkvU00KYWR2ZXJzZS9QUllUCmFkdmVyc2VuZXNzL00KYWR2ZXJzaXR5L1NNCmFkdmVydC9TTURHCmFkdmVydGlzZS9MWkdEUlMKYWR2ZXJ0aXNlZC9VCmFkdmVydGlzZW1lbnQvTVMKYWR2ZXJ0aXNlci9NCmFkdmVydGlzaW5nL00KYWR2ZXJ0b3JpYWwvU00KYWR2aWNlL00KYWR2aXNhYmlsaXR5L0lNCmFkdmlzYWJsZS9JCmFkdmlzYWJseQphZHZpc2UvTERSU1pHQgphZHZpc2VkL1VZCmFkdmlzZW1lbnQvTQphZHZpc2VyL00KYWR2aXNvcnkvU00KYWR2b2NhY3kvTQphZHZvY2F0ZS9NR0RTCmFkdnQKYWR3YXJlCmFkemUvU00KYWVnaXMvTQphZXJhdGUvRFNHTgphZXJhdGlvbi9NCmFlcmF0b3IvU00KYWVyaWFsL1NNWQphZXJpYWxpc3QvTVMKYWVyaWUvTVMKYWVyb2JhdGljL1MKYWVyb2JhdGljcy9NCmFlcm9iaWMvUwphZXJvYmljYWxseQphZXJvYmljcy9NCmFlcm9kcm9tZS9NUwphZXJvZHluYW1pYy9TCmFlcm9keW5hbWljYWxseQphZXJvZHluYW1pY3MvTQphZXJvZ3JhbS9TCmFlcm9uYXV0aWMvUwphZXJvbmF1dGljYWwKYWVyb25hdXRpY3MvTQphZXJvc29sL01TCmFlcm9zcGFjZS9NCmFlc3RoZXRlL01TCmFlc3RoZXRpYy9TCmFlc3RoZXRpY2FsbHkKYWVzdGhldGljaXNtL00KYWVzdGhldGljcy9NCmFmYXIKYWZmYWJpbGl0eS9NCmFmZmFibGUKYWZmYWJseQphZmZhaXIvTVMKYWZmZWN0J3MKYWZmZWN0L0VHRFMKYWZmZWN0YXRpb24vU00KYWZmZWN0ZWQvVVkKYWZmZWN0aW5nL1kKYWZmZWN0aW9uL0VNCmFmZmVjdGlvbmF0ZS9ZCmFmZmVjdGlvbnMKYWZmZXJlbnQKYWZmaWFuY2UvR0RTCmFmZmlkYXZpdC9TTQphZmZpbGlhdGUncwphZmZpbGlhdGUvRUdORFMKYWZmaWxpYXRlZC9VCmFmZmlsaWF0aW9uL0VNCmFmZmlsaWF0aW9ucwphZmZpbml0eS9TTQphZmZpcm0vQUdEUwphZmZpcm1hdGlvbi9BTVMKYWZmaXJtYXRpdmUvTVlTCmFmZml4L0dNRFMKYWZmbGF0dXMvTQphZmZsaWN0L0dEUwphZmZsaWN0aW9uL1NNCmFmZmx1ZW5jZS9NCmFmZmx1ZW50L1kKYWZmb3JkL0dEU0IKYWZmb3JkYWJpbGl0eQphZmZvcmRhYmx5CmFmZm9yZXN0L0VHU0QKYWZmb3Jlc3RhdGlvbi9NCmFmZnJheS9NUwphZmZyb250L0dNRFMKYWZnaGFuL01TCmFmaWNpb25hZG8vTVMKYWZpZWxkCmFmaXJlCmFmbGFtZQphZmxvYXQKYWZsdXR0ZXIKYWZvb3QKYWZvcmVtZW50aW9uZWQKYWZvcmVzYWlkCmFmb3JldGhvdWdodAphZm91bAphZnJhaWQvVQphZnJlc2gKYWZ0L1JaCmFmdGVyYmlydGgvTQphZnRlcmJpcnRocwphZnRlcmJ1cm5lci9NUwphZnRlcmNhcmUvTQphZnRlcmVmZmVjdC9NUwphZnRlcmdsb3cvU00KYWZ0ZXJpbWFnZS9NUwphZnRlcmxpZmUvTQphZnRlcmxpdmVzCmFmdGVybWFya2V0L01TCmFmdGVybWF0aC9NCmFmdGVybWF0aHMKYWZ0ZXJub29uL01TCmFmdGVyc2hhdmUvU00KYWZ0ZXJzaG9jay9TTQphZnRlcnRhc3RlL1NNCmFmdGVydGhvdWdodC9TTQphZnRlcndhcmQvUwphZnRlcndvcmQvTVMKYWdhaW4KYWdhaW5zdAphZ2FwZS9NCmFnYXIvTQphZ2F0ZS9NUwphZ2F2ZS9NCmFnZS9EU01HSgphZ2Vpc20vTQphZ2Vpc3QvU00KYWdlbGVzcy9ZUAphZ2VsZXNzbmVzcy9NCmFnZW5jeS9TTQphZ2VuZGEvU00KYWdlbnQvQU1TCmFnZXJhdHVtL00KYWdnbG9tZXJhdGUvRFNNR05YCmFnZ2xvbWVyYXRpb24vTQphZ2dsdXRpbmF0ZS9EU1hHTgphZ2dsdXRpbmF0aW9uL00KYWdncmFuZGl6ZS9HTERTCmFnZ3JhbmRpemVtZW50L00KYWdncmF2YXRlL0dOWERTCmFnZ3JhdmF0aW5nL1kKYWdncmF2YXRpb24vTQphZ2dyZWdhdGUvTUdORFNYCmFnZ3JlZ2F0aW9uL00KYWdncmVzc2lvbi9NCmFnZ3Jlc3NpdmUvUFkKYWdncmVzc2l2ZW5lc3MvTQphZ2dyZXNzb3IvU00KYWdncmlldmUvRFNHCmFnZ3JvCmFnaGFzdAphZ2lsZS9ZCmFnaWxpdHkvTQphZ2luZy9NCmFnaXRhdGUvWEdORFMKYWdpdGF0aW9uL00KYWdpdGF0b3IvTVMKYWdpdHByb3AvTQphZ2xlYW0KYWdsaXR0ZXIKYWdsb3cKYWdub3N0aWMvTVMKYWdub3N0aWNpc20vTQphZ28KYWdvZwphZ29uaXN0L1MKYWdvbml6ZS9HRFMKYWdvbml6aW5nL1kKYWdvbnkvU00KYWdvcmFwaG9iaWEvTQphZ29yYXBob2JpYy9NUwphZ3Jhcmlhbi9NUwphZ3JhcmlhbmlzbS9NCmFncmVlL0VCTERTCmFncmVlYWJsZW5lc3MvRU0KYWdyZWVhYmx5L0UKYWdyZWVpbmcvRQphZ3JlZW1lbnQvRVNNCmFncmlidXNpbmVzcy9NUwphZ3JpY3VsdHVyYWwvWQphZ3JpY3VsdHVyYWxpc3QvTVMKYWdyaWN1bHR1cmUvTQphZ3JpY3VsdHVyaXN0L01TCmFncm9ub21pYwphZ3Jvbm9taXN0L01TCmFncm9ub215L00KYWdyb3VuZAphZ3VlL00KYWgKYWhhCmFoY2hvbwphaGVhZAphaGVtCmFob3kKYWlkL1NNREcKYWlkZS9TTQphaWRlZC9VCmFpZ3JldHRlL01TCmFpbC9TRExHCmFpbGVyb24vU00KYWlsbWVudC9TTQphaW0vU01ERwphaW1sZXNzL1lQCmFpbWxlc3NuZXNzL00KYWluJ3QKYWlyL1NNREpHCmFpcmJhZy9NUwphaXJiYXNlL1NNCmFpcmJlZC9TCmFpcmJvcm5lCmFpcmJydXNoL01EU0cKYWlyYnVzL01TCmFpcmNyYWZ0L00KYWlyY3JhZnRtYW4KYWlyY3JhZnRtZW4KYWlyY3Jldy9TCmFpcmRyb21lL1MKYWlyZHJvcC9TTQphaXJkcm9wcGVkCmFpcmRyb3BwaW5nCmFpcmZhcmUvU00KYWlyZmllbGQvU00KYWlyZmxvdy9NCmFpcmZvaWwvU00KYWlyZnJlaWdodC9NCmFpcmd1bnMKYWlyaGVhZC9TTQphaXJpbHkKYWlyaW5lc3MvTQphaXJpbmcvTQphaXJsZXNzL1AKYWlybGVzc25lc3MvTQphaXJsZXR0ZXJzCmFpcmxpZnQvU0dNRAphaXJsaW5lL1JTTVoKYWlybGluZXIvTQphaXJsb2NrL1NNCmFpcm1haWwvR1NNRAphaXJtYW4vTQphaXJtZW4KYWlycGxhbmUvTVMKYWlycGxheS9NCmFpcnBvcnQvU00KYWlyc2hpcC9TTQphaXJzaG93L1MKYWlyc2ljay9QCmFpcnNpY2tuZXNzL00KYWlyc3BhY2UvTQphaXJzcGVlZAphaXJzdHJpa2UvTVMKYWlyc3RyaXAvU00KYWlydGlnaHQKYWlydGltZS9NCmFpcndhdmVzL00KYWlyd2F5L01TCmFpcndvbWFuCmFpcndvbWVuCmFpcndvcnRoaW5lc3MvTQphaXJ3b3J0aHkvUAphaXJ5L1BUUgphaXNsZS9NUwphaXRjaC9NUwphamFyCmFrYQpha2ltYm8KYWtpbgphbGFiYXN0ZXIvTQphbGFjawphbGFjcml0eS9NCmFsYXJtL0dNRFMKYWxhcm1pbmcvWQphbGFybWlzdC9TTQphbGFzCmFsYi9TTQphbGJhY29yZS9TTQphbGJhdHJvc3MvTVMKYWxiZWl0CmFsYmluaXNtL00KYWxiaW5vL01TCmFsYnVtL01OUwphbGJ1bWVuL00KYWxidW1pbi9NCmFsYnVtaW5vdXMKYWxjaGVtaXN0L1NNCmFsY2hlbXkvTQphbGNvaG9sL1NNCmFsY29ob2xpYy9NUwphbGNvaG9saWNhbGx5CmFsY29ob2xpc20vTQphbGNvdmUvTVMKYWxkZXIvTVMKYWxkZXJtYW4vTQphbGRlcm1lbgphbGRlcndvbWFuL00KYWxkZXJ3b21lbgphbGUvU01WCmFsZWF0b3J5CmFsZWhvdXNlL1NNCmFsZW1iaWMvU00KYWxlcnQvR01EWVBTCmFsZXJ0bmVzcy9NCmFsZXdpZmUvTQphbGV3aXZlcwphbGZhbGZhL00KYWxmcmVzY28KYWxnYS9NCmFsZ2FlCmFsZ2FsCmFsZ2VicmEvU00KYWxnZWJyYWljCmFsZ2VicmFpY2FsbHkKYWxnb3JpdGhtL1NNCmFsZ29yaXRobWljCmFsaWFzL0dNRFMKYWxpYmkvR01EUwphbGllbi9CR01EUwphbGllbmFibGUvSVUKYWxpZW5hdGUvRFNHTgphbGllbmF0aW9uL00KYWxpZW5pc3QvU00KYWxpZ2h0L0dEUwphbGlnbi9BTEdEUwphbGlnbmVkL1UKYWxpZ25lci9NUwphbGlnbm1lbnQvQU1TCmFsaWtlL1UKYWxpbWVudC9NRFNHCmFsaW1lbnRhcnkKYWxpbW9ueS9NCmFsaXZlbmVzcy9NCmFsaXlhaC9NCmFsaXlhaHMKYWxrYWxpL00KYWxrYWxpZXMKYWxrYWxpbmUKYWxrYWxpbml0eS9NCmFsa2FsaXplL0RTRwphbGthbG9pZC9TTQphbGt5ZC9NUwphbGwvTQphbGxheS9HRFMKYWxsZWdhdGlvbi9NUwphbGxlZ2UvR0RTCmFsbGVnZWQvWQphbGxlZ2lhbmNlL01TCmFsbGVnb3JpYwphbGxlZ29yaWNhbC9ZCmFsbGVnb3Jpc3QvTVMKYWxsZWdvcnkvU00KYWxsZWdyZXR0by9NUwphbGxlZ3JvL01TCmFsbGVsZS9NUwphbGxlbHVpYS9TTQphbGxlcmdlbi9TTQphbGxlcmdlbmljCmFsbGVyZ2ljCmFsbGVyZ2ljYWxseQphbGxlcmdpc3QvU00KYWxsZXJneS9TTQphbGxldmlhdGUvRFNHTgphbGxldmlhdGlvbi9NCmFsbGV5L01TCmFsbGV5d2F5L1NNCmFsbGlhbmNlL1NNCmFsbGlnYXRvci9NUwphbGxpdGVyYXRlL0RTWEdOVgphbGxpdGVyYXRpb24vTQphbGxpdGVyYXRpdmUvWQphbGxvY2F0ZS9BRFNHTgphbGxvY2F0aW9uL0FNCmFsbG9jYXRpb25zCmFsbG90L0xTCmFsbG90bWVudC9TTQphbGxvdHRlZAphbGxvdHRpbmcKYWxsb3ZlcgphbGxvdy9FR0RTCmFsbG93YWJsZS9VCmFsbG93YWJseQphbGxvd2FuY2UvU00KYWxsb3kvR01EUwphbGxveWVkL1UKYWxsc3BpY2UvTQphbGx1ZGUvR0RTCmFsbHVyZS9NR0xEUwphbGx1cmVtZW50L01TCmFsbHVyaW5nL1kKYWxsdXNpb24vU00KYWxsdXNpdmUvUFkKYWxsdXNpdmVuZXNzL00KYWxsdXZpYWwvTQphbGx1dml1bS9TTQphbGx5L0dEU00KYWxtYW5hYy9TTQphbG1pZ2h0eQphbG1vbmQvTVMKYWxtb25lci9TTQphbG1vc3QKYWxtcy9NCmFsbXNob3VzZS9NUwphbG9lL1NNCmFsb2Z0CmFsb2hhL01TCmFsb25lCmFsb25nCmFsb25nc2hvcmUKYWxvbmdzaWRlCmFsb29mL1BZCmFsb29mbmVzcy9NCmFsb3VkCmFscC9TTQphbHBhY2EvTVMKYWxwaGEvTVMKYWxwaGFiZXQvU00KYWxwaGFiZXRpYwphbHBoYWJldGljYWwvWQphbHBoYWJldGl6YXRpb24vU00KYWxwaGFiZXRpemUvWkdEUlMKYWxwaGFiZXRpemVyL00KYWxwaGFudW1lcmljCmFscGhhbnVtZXJpY2FsL1kKYWxwaW5lL1MKYWxyZWFkeQphbHJpZ2h0CmFsc28KYWx0L1MKYWx0YXIvTVMKYWx0YXJwaWVjZS9TTQphbHRlci9HREJTCmFsdGVyYWJsZS9VCmFsdGVyYXRpb24vTVMKYWx0ZXJjYXRpb24vU00KYWx0ZXJlZC9VCmFsdGVybmF0ZS9EU01ZR05WWAphbHRlcm5hdGlvbi9NCmFsdGVybmF0aXZlL01ZUwphbHRlcm5hdG9yL1NNCmFsdGhvdWdoCmFsdGltZXRlci9NUwphbHRpdHVkZS9NUwphbHRvL1NNCmFsdG9nZXRoZXIKYWx0cnVpc20vTQphbHRydWlzdC9TTQphbHRydWlzdGljCmFsdHJ1aXN0aWNhbGx5CmFsdW0vU00KYWx1bWluYS9NCmFsdW1pbnVtL00KYWx1bW5hL00KYWx1bW5hZQphbHVtbmkKYWx1bW51cy9NCmFsdmVvbGFyL1MKYWx3YXlzCmFtL04KYW1hbGdhbS9TTQphbWFsZ2FtYXRlL1hHTkRTCmFtYWxnYW1hdGlvbi9NCmFtYW51ZW5zZXMKYW1hbnVlbnNpcy9NCmFtYXJhbnRoL00KYW1hcmFudGhzCmFtYXJldHRvL00KYW1hcnlsbGlzL01TCmFtYXNzL0dEUwphbWF0ZXVyL1NNCmFtYXRldXJpc2gvWVAKYW1hdGV1cmlzaG5lc3MvTQphbWF0ZXVyaXNtL00KYW1hdG9yeQphbWF6ZS9MTUdEUwphbWF6ZW1lbnQvTQphbWF6aW5nL1kKYW1hem9uL01TCmFtYXpvbmlhbgphbWJhc3NhZG9yL1NNCmFtYmFzc2Fkb3JpYWwKYW1iYXNzYWRvcnNoaXAvTVMKYW1iYXNzYWRyZXNzL01TCmFtYmVyL00KYW1iZXJncmlzL00KYW1iaWFuY2UvTVMKYW1iaWRleHRlcml0eS9NCmFtYmlkZXh0cm91cy9ZCmFtYmllbnQKYW1iaWd1aXR5L1NNCmFtYmlndW91cy9VWQphbWJpdAphbWJpdGlvbi9NUwphbWJpdGlvdXMvWVAKYW1iaXRpb3VzbmVzcy9NCmFtYml2YWxlbmNlL00KYW1iaXZhbGVudC9ZCmFtYmxlL01aR0RSUwphbWJsZXIvTQphbWJyb3NpYS9NCmFtYnJvc2lhbAphbWJ1bGFuY2UvTVMKYW1idWxhbmNlbWFuCmFtYnVsYW5jZW1lbgphbWJ1bGFuY2V3b21hbgphbWJ1bGFuY2V3b21lbgphbWJ1bGFudAphbWJ1bGF0ZS9EU1hHTgphbWJ1bGF0aW9uL00KYW1idWxhdG9yeS9TTQphbWJ1c2NhZGUvTUdEUwphbWJ1c2gvR01EUwphbWVsaW9yYXRlL0dOVkRTCmFtZWxpb3JhdGlvbi9NCmFtZW4vQgphbWVuYWJpbGl0eS9NCmFtZW5hYmx5CmFtZW5kL0JMR0RTCmFtZW5kbWVudC9TTQphbWVuaXR5L1NNCmFtZXJjZS9HTERTCmFtZXJjZW1lbnQvU00KYW1lcmljaXVtL00KYW1ldGh5c3QvU00KYW1pYWJpbGl0eS9NCmFtaWFibGUKYW1pYWJseQphbWljYWJpbGl0eS9NCmFtaWNhYmxlCmFtaWNhYmx5CmFtaWQKYW1pZGUvTVMKYW1pZHNoaXAvUwphbWlnby9NUwphbWlubwphbWlzcwphbWl0eS9NCmFtbWV0ZXIvU00KYW1tby9NCmFtbW9uaWEvTQphbW1vbml1bQphbW11bml0aW9uL00KYW1uZXNpYS9NCmFtbmVzaWFjL01TCmFtbmVzaWMvU00KYW1uZXN0eS9HRFNNCmFtbmlvY2VudGVzZXMKYW1uaW9jZW50ZXNpcy9NCmFtbmlvbi9NUwphbW5pb3RpYwphbW9lYmEvTVMKYW1vZWJhZQphbW9lYmljCmFtb2sKYW1vbmcKYW1vbnRpbGxhZG8vU00KYW1vcmFsL1kKYW1vcmFsaXR5L00KYW1vcm91cy9ZUAphbW9yb3VzbmVzcy9NCmFtb3JwaG91cy9QWQphbW9ycGhvdXNuZXNzL00KYW1vcnRpemF0aW9uL1NNCmFtb3J0aXplL0RTR0IKYW1vdW50L0dNRFMKYW1vdXIvTVMKYW1veGljaWxsaW4KYW1wL1NNWQphbXBlcmFnZS9NCmFtcGVyZS9NUwphbXBlcnNhbmQvTVMKYW1waGV0YW1pbmUvU00KYW1waGliaWFuL01TCmFtcGhpYmlvdXMvWQphbXBoaXRoZWF0ZXIvU00KYW1waG9yYS9NCmFtcGhvcmFlCmFtcGljaWxsaW4KYW1wbGUvVFIKYW1wbGlmaWNhdGlvbi9NCmFtcGxpZmllci9NCmFtcGxpZnkvTkRSU1haRwphbXBsaXR1ZGUvU00KYW1wdWxlL01TCmFtcHV0YXRlL0dORFNYCmFtcHV0YXRpb24vTQphbXB1dGVlL01TCmFtdAphbXVsZXQvTVMKYW11c2UvTEdEUwphbXVzZW1lbnQvTVMKYW11c2luZy9ZCmFteWxhc2UvTQphbi9DUwphbmFib2xpc20vTQphbmFjaHJvbmlzbS9TTQphbmFjaHJvbmlzdGljCmFuYWNocm9uaXN0aWNhbGx5CmFuYWNvbmRhL1NNCmFuYWVyb2JlL1NNCmFuYWVyb2JpYwphbmFlcm9iaWNhbGx5CmFuYWdyYW0vTVMKYW5hbC9ZCmFuYWxnZXNpYS9NCmFuYWxnZXNpYy9TTQphbmFsb2cvTVMKYW5hbG9naWNhbC9ZCmFuYWxvZ2l6ZS9HRFMKYW5hbG9nb3VzL1lQCmFuYWxvZ291c25lc3MvTQphbmFsb2d1ZS9TTQphbmFsb2d5L1NNCmFuYWx5c2FuZC9NUwphbmFseXNlcy9BCmFuYWx5c2lzL0FNCmFuYWx5c3QvU00KYW5hbHl0aWMKYW5hbHl0aWNhbC9ZCmFuYWx5emFibGUKYW5hbHl6ZS9BRFNHCmFuYWx5emVyL1NNCmFuYXBlc3QvU00KYW5hcGVzdGljL01TCmFuYXJjaGljCmFuYXJjaGljYWxseQphbmFyY2hpc20vTQphbmFyY2hpc3QvTVMKYW5hcmNoaXN0aWMKYW5hcmNoeS9NCmFuYXRoZW1hL1NNCmFuYXRoZW1hdGl6ZS9EU0cKYW5hdG9taWMKYW5hdG9taWNhbC9ZCmFuYXRvbWlzdC9TTQphbmF0b21pemUvRFNHCmFuYXRvbXkvU00KYW5jZXN0b3IvU00KYW5jZXN0cmFsL1kKYW5jZXN0cmVzcy9NUwphbmNlc3RyeS9TTQphbmNob3IvTURHUwphbmNob3JhZ2UvTVMKYW5jaG9yaXRlL01TCmFuY2hvcm1hbi9NCmFuY2hvcm1lbgphbmNob3JwZW9wbGUKYW5jaG9ycGVyc29uL1NNCmFuY2hvcndvbWFuL00KYW5jaG9yd29tZW4KYW5jaG92eS9TTQphbmNpZW50L1NQTVJZVAphbmNpZW50bmVzcy9NCmFuY2lsbGFyeS9TTQphbmQKYW5kYW50ZS9TTQphbmRpcm9uL1NNCmFuZHJvZ2VuL00KYW5kcm9nZW5pYwphbmRyb2d5bm91cwphbmRyb2d5bnkvTQphbmRyb2lkL1NNCmFuZWNkb3RhbC9ZCmFuZWNkb3RlL01TCmFuZW1pYS9NCmFuZW1pYwphbmVtaWNhbGx5CmFuZW1vbWV0ZXIvU00KYW5lbW9uZS9TTQphbmVudAphbmVzdGhlc2lhL00KYW5lc3RoZXNpb2xvZ2lzdC9TTQphbmVzdGhlc2lvbG9neS9NCmFuZXN0aGV0aWMvU00KYW5lc3RoZXRpc3QvTVMKYW5lc3RoZXRpemF0aW9uL00KYW5lc3RoZXRpemUvR0RTCmFuZXVyeXNtL1NNCmFuZXcKYW5nZWwvTVMKYW5nZWxmaXNoL01TCmFuZ2VsaWMKYW5nZWxpY2EvTQphbmdlbGljYWwvWQphbmdlci9HTURTCmFuZ2luYS9NCmFuZ2lvcGxhc3R5L1NNCmFuZ2lvc3Blcm0vU00KYW5nbGUvTVpHRFJTCmFuZ2xlci9NCmFuZ2xld29ybS9NUwphbmdsaWNpc20vUwphbmdsaWNpemUvR0RTCmFuZ2xpbmcvTQphbmdsb3BoaWxlL1MKYW5nbG9waG9uZS9TCmFuZ29yYS9NUwphbmdvc3R1cmEKYW5ncmlseQphbmdyeS9UUgphbmdzdC9NCmFuZ3N0cm9tL01TCmFuZ3Vpc2gvR01EUwphbmd1bGFyCmFuZ3VsYXJpdHkvU00KYW5ndWxhdGlvbgphbmh5ZHJvdXMKYW5pbGluZS9NCmFuaW1hZHZlcnNpb24vTVMKYW5pbWFkdmVydC9HU0QKYW5pbWFsL01TCmFuaW1hbGN1bGUvU00KYW5pbWF0ZS9BRFNHTgphbmltYXRlZC9ZCmFuaW1hdGlvbi9BTQphbmltYXRpb25zCmFuaW1hdG9yL01TCmFuaW1lL00KYW5pbWlzbS9NCmFuaW1pc3QvU00KYW5pbWlzdGljCmFuaW1vc2l0eS9TTQphbmltdXMvTQphbmlvbi9NUwphbmlvbmljCmFuaXNlL00KYW5pc2VlZC9NCmFuaXNldHRlL00KYW5raC9NCmFua2hzCmFua2xlL01TCmFua2xlYm9uZS9NUwphbmtsZXQvTVMKYW5uYWxpc3QvU00KYW5uYWxzL00KYW5uZWFsL0dEUwphbm5lbGlkL01TCmFubmV4L0dNRFMKYW5uZXhhdGlvbi9NUwphbm5paGlsYXRlL0RTR04KYW5uaWhpbGF0aW9uL00KYW5uaWhpbGF0b3IvU00KYW5uaXZlcnNhcnkvU00KYW5ub3RhdGUvRFNYR05WCmFubm90YXRpb24vTQphbm5vdGF0b3IvTVMKYW5ub3VuY2UvRFJTTFpHCmFubm91bmNlZC9VCmFubm91bmNlbWVudC9NUwphbm5vdW5jZXIvTQphbm5veS9HRFMKYW5ub3lhbmNlL01TCmFubm95aW5nL1kKYW5udWFsL01ZUwphbm51YWxpemVkCmFubnVpdGFudC9TTQphbm51aXR5L1NNCmFubnVsL0xTCmFubnVsYXIKYW5udWxsZWQKYW5udWxsaW5nCmFubnVsbWVudC9TTQphbm51bmNpYXRpb24vU00KYW5vZGUvTVMKYW5vZGl6ZS9HRFMKYW5vZHluZS9NUwphbm9pbnQvR0RMUwphbm9pbnRtZW50L00KYW5vbWFsb3VzL1kKYW5vbWFseS9TTQphbm9uL1MKYW5vbnltaXR5L00KYW5vbnltb3VzL1kKYW5vcGhlbGVzL00KYW5vcmFrL01TCmFub3JlY3RpYy9TTQphbm9yZXhpYS9NCmFub3JleGljL01TCmFub3RoZXIKYW5zd2VyL0JNREdTCmFuc3dlcmFibGUvVQphbnN3ZXJlZC9VCmFuc3dlcnBob25lL1MKYW50L1NNRAphbnRhY2lkL1NNCmFudGFnb25pc20vU00KYW50YWdvbmlzdC9TTQphbnRhZ29uaXN0aWMKYW50YWdvbmlzdGljYWxseQphbnRhZ29uaXplL0RTRwphbnRhcmN0aWMKYW50ZS9TTQphbnRlYXRlci9NUwphbnRlYmVsbHVtCmFudGVjZWRlbmNlL00KYW50ZWNlZGVudC9TTQphbnRlY2hhbWJlci9TTQphbnRlZGF0ZS9HRFMKYW50ZWRpbHV2aWFuCmFudGVpbmcKYW50ZWxvcGUvTVMKYW50ZW5hdGFsCmFudGVubmEvU00KYW50ZW5uYWUKYW50ZXJpb3IKYW50ZXJvb20vTVMKYW50aGVtL01TCmFudGhlci9NUwphbnRoaWxsL1NNCmFudGhvbG9naXN0L1NNCmFudGhvbG9naXplL0RTRwphbnRob2xvZ3kvU00KYW50aHJhY2l0ZS9NCmFudGhyYXgvTQphbnRocm9wb2NlbnRyaWMKYW50aHJvcG9pZC9NUwphbnRocm9wb2xvZ2ljYWwvWQphbnRocm9wb2xvZ2lzdC9TTQphbnRocm9wb2xvZ3kvTQphbnRocm9wb21vcnBoaWMKYW50aHJvcG9tb3JwaGljYWxseQphbnRocm9wb21vcnBoaXNtL00KYW50aHJvcG9tb3JwaGl6ZQphbnRocm9wb21vcnBob3VzCmFudGkvU00KYW50aWFib3J0aW9uCmFudGlhYm9ydGlvbmlzdC9NUwphbnRpYWlyY3JhZnQKYW50aWJhY3RlcmlhbC9NUwphbnRpYmlvdGljL01TCmFudGlib2R5L1NNCmFudGljL01TCmFudGljYW5jZXIKYW50aWNpcGF0ZS9HTlhEUwphbnRpY2lwYXRlZC9VCmFudGljaXBhdGlvbi9NCmFudGljaXBhdG9yeQphbnRpY2tlZAphbnRpY2tpbmcKYW50aWNsZXJpY2FsCmFudGljbGltYWN0aWMKYW50aWNsaW1hY3RpY2FsbHkKYW50aWNsaW1heC9NUwphbnRpY2xpbmUvU00KYW50aWNsb2Nrd2lzZQphbnRpY29hZ3VsYW50L01TCmFudGljb21tdW5pc20vTQphbnRpY29tbXVuaXN0L1NNCmFudGljeWNsb25lL1NNCmFudGljeWNsb25pYwphbnRpZGVtb2NyYXRpYwphbnRpZGVwcmVzc2FudC9NUwphbnRpZG90ZS9NUwphbnRpZmFzY2lzdC9NUwphbnRpZnJlZXplL00KYW50aWdlbi9TTQphbnRpZ2VuaWMKYW50aWdlbmljaXR5L00KYW50aWhlcm8vTQphbnRpaGVyb2VzCmFudGloaXN0YW1pbmUvU00KYW50aWtub2NrL00KYW50aWxhYm9yCmFudGlsb2dhcml0aG0vU00KYW50aW1hY2Fzc2FyL01TCmFudGltYWxhcmlhbAphbnRpbWF0dGVyL00KYW50aW1pY3JvYmlhbAphbnRpbWlzc2lsZQphbnRpbW9ueS9NCmFudGludWNsZWFyCmFudGlveGlkYW50L01TCmFudGlwYXJ0aWNsZS9TTQphbnRpcGFzdGkKYW50aXBhc3RvL01TCmFudGlwYXRoZXRpYwphbnRpcGF0aHkvU00KYW50aXBlcnNvbm5lbAphbnRpcGVyc3BpcmFudC9TTQphbnRpcGhvbi9TTQphbnRpcGhvbmFsL01ZUwphbnRpcG9kYWwvUwphbnRpcG9kZWFuL01TCmFudGlwb2Rlcy9NCmFudGlwb2xsdXRpb24KYW50aXBvdmVydHkKYW50aXF1YXJpYW4vU00KYW50aXF1YXJpYW5pc20vTQphbnRpcXVhcnkvU00KYW50aXF1YXRlL0dEUwphbnRpcXVlL0RTTUcKYW50aXF1aXR5L1NNCmFudGlycmhpbnVtL1MKYW50aXNjaWVuY2UKYW50aXNlbWl0aWMKYW50aXNlbWl0aXNtL00KYW50aXNlcHNpcy9NCmFudGlzZXB0aWMvU00KYW50aXNlcHRpY2FsbHkKYW50aXNlcnVtL01TCmFudGlzbGF2ZXJ5CmFudGlzb2NpYWwvWQphbnRpc3Bhc21vZGljL01TCmFudGlzdWJtYXJpbmUKYW50aXRhbmsKYW50aXRoZXNlcwphbnRpdGhlc2lzL00KYW50aXRoZXRpYwphbnRpdGhldGljYWwvWQphbnRpdG94aW4vTVMKYW50aXRydXN0CmFudGl2ZW5pbi9NUwphbnRpdmVub20KYW50aXZpcmFsL01TCmFudGl2aXJ1cwphbnRpdml2aXNlY3Rpb25pc3QvTVMKYW50aXdhcgphbnRsZXIvTURTCmFudG9ueW0vU00KYW50b255bW91cwphbnRydW0KYW50c3kvVFIKYW51cy9NUwphbnZpbC9NUwphbnhpZXR5L1NNCmFueGlvdXMvWVAKYW54aW91c25lc3MvTQphbnkKYW55Ym9keS9TTQphbnlob3cKYW55bW9yZQphbnlvbmUvTQphbnlwbGFjZQphbnl0aGluZy9TTQphbnl0aW1lCmFueXdheS9TCmFueXdoZXJlCmFueXdpc2UKYW9ydGEvTVMKYW9ydGljCmFwYWNlCmFwYXJ0CmFwYXJ0aGVpZC9NCmFwYXJ0bWVudC9NUwphcGF0aGV0aWMKYXBhdGhldGljYWxseQphcGF0aHkvTQphcGF0aXRlL00KYXBlL0RTTUcKYXBlbGlrZQphcGVyaXRpZi9NUwphcGVydHVyZS9TTQphcGV4L01TCmFwaGFzaWEvTQphcGhhc2ljL01TCmFwaGVsaWEKYXBoZWxpb24vU00KYXBoaWQvTVMKYXBob3Jpc20vTVMKYXBob3Jpc3RpYwphcGhvcmlzdGljYWxseQphcGhyb2Rpc2lhYy9TTQphcGlhcmlzdC9TTQphcGlhcnkvU00KYXBpY2FsL1kKYXBpZWNlCmFwaXNoL1kKYXBsZW50eQphcGxvbWIvTQphcG9jYWx5cHNlL1NNCmFwb2NhbHlwdGljCmFwb2NyeXBoYS9NCmFwb2NyeXBoYWwvWQphcG9nZWUvTVMKYXBvbGl0aWNhbC9ZCmFwb2xvZ2V0aWMvVQphcG9sb2dldGljYWxseQphcG9sb2dpYS9TTQphcG9sb2dpc3QvTVMKYXBvbG9naXplL0dEUwphcG9sb2d5L1NNCmFwb3BsZWN0aWMKYXBvcGxleHkvU00KYXBvcHRvc2lzCmFwb3B0b3RpYwphcG9zdGFzeS9TTQphcG9zdGF0ZS9TTQphcG9zdGF0aXplL0dEUwphcG9zdGxlL01TCmFwb3N0bGVzaGlwL00KYXBvc3RvbGljCmFwb3N0cm9waGUvTVMKYXBvdGhlY2FyeS9TTQphcG90aGVnbS9TTQphcG90aGVvc2VzCmFwb3RoZW9zaXMvTQphcHAvU00KYXBwYWxsL0dEUwphcHBhbGxpbmcvWQphcHBhbG9vc2EvTVMKYXBwYXJhdGNoaWsvUwphcHBhcmF0dXMvTVMKYXBwYXJlbC9NREdTCmFwcGFyZW50L1kKYXBwYXJpdGlvbi9TTQphcHBlYWwvR01EUwphcHBlYWxpbmcvVVkKYXBwZWFyL0FFU0RHCmFwcGVhcmFuY2UvRUFNUwphcHBlYXNlL0xaR0RSUwphcHBlYXNlbWVudC9TTQphcHBlYXNlci9NCmFwcGVsbGFudC9TTQphcHBlbGxhdGUvWE4KYXBwZWxsYXRpb24vTQphcHBlbmQvR0RTCmFwcGVuZGFnZS9TTQphcHBlbmRlY3RvbXkvU00KYXBwZW5kaWNlcwphcHBlbmRpY2l0aXMvTQphcHBlbmRpeC9NUwphcHBlcnRhaW4vR0RTCmFwcGV0aXRlL1NNCmFwcGV0aXplci9NUwphcHBldGl6aW5nL1kKYXBwbGF1ZC9aR0RSUwphcHBsYXVkZXIvTQphcHBsYXVzZS9NCmFwcGxlL01TCmFwcGxlamFjay9NCmFwcGxlc2F1Y2UvTQphcHBsZXQvTVMKYXBwbGlhbmNlL1NNCmFwcGxpY2FiaWxpdHkvTQphcHBsaWNhYmxlL0kKYXBwbGljYWJseQphcHBsaWNhbnQvU00KYXBwbGljYXRpb24vQU0KYXBwbGljYXRvci9TTQphcHBsaWVyL01TCmFwcGxpcXVlL0RTTQphcHBsaXF1ZWluZwphcHBseS9BTlhHRFMKYXBwb2ludC9BRUxTVkdECmFwcG9pbnRlZS9TTQphcHBvaW50bWVudCdzL0EKYXBwb2ludG1lbnQvRVNNCmFwcG9ydGlvbi9BR0RMUwphcHBvcnRpb25tZW50L0FNCmFwcG9zZS9HRFMKYXBwb3NpdGUvWU5WUAphcHBvc2l0ZW5lc3MvTQphcHBvc2l0aW9uL00KYXBwb3NpdGl2ZS9TTQphcHByYWlzYWwvQU1TCmFwcHJhaXNlL0FEU0cKYXBwcmFpc2VyL01TCmFwcHJlY2lhYmxlL0kKYXBwcmVjaWFibHkvSQphcHByZWNpYXRlL0RTWEdOVgphcHByZWNpYXRlZC9VCmFwcHJlY2lhdGlvbi9NCmFwcHJlY2lhdGl2ZS9ZCmFwcHJlY2lhdG9yL01TCmFwcHJlY2lhdG9yeQphcHByZWhlbmQvR0RTCmFwcHJlaGVuc2lvbi9NUwphcHByZWhlbnNpdmUvWVAKYXBwcmVoZW5zaXZlbmVzcy9NCmFwcHJlbnRpY2UvRFNNRwphcHByZW50aWNlc2hpcC9NUwphcHByaXNlL0dEUwphcHByb2FjaC9HQk1EUwphcHByb2FjaGFibGUvVUkKYXBwcm9iYXRpb24vRU0KYXBwcm9iYXRpb25zCmFwcHJvcHJpYXRlL1BZR05YRFMKYXBwcm9wcmlhdGVkL1UKYXBwcm9wcmlhdGVuZXNzL0lNCmFwcHJvcHJpYXRpb24vTQphcHByb3ByaWF0b3IvU00KYXBwcm92YWwvRU0KYXBwcm92YWxzCmFwcHJvdmUvRUdEUwphcHByb3ZlZC9VCmFwcHJvdmluZy9FWQphcHByb3gKYXBwcm94aW1hdGUvRFNYWUdOCmFwcHJveGltYXRpb24vTQphcHB1cnRlbmFuY2UvU00KYXBwdXJ0ZW5hbnQKYXByaWNvdC9NUwphcHJvbi9NUwphcHJvcG9zCmFwc2UvU00KYXB0L0lZUFQKYXB0ZXIKYXB0aXR1ZGUvU00KYXB0bmVzcy9JTQphcXVhL1NNCmFxdWFjdWx0dXJlL00KYXF1YWx1bmcvTVMKYXF1YW1hcmluZS9TTQphcXVhbmF1dC9NUwphcXVhcGxhbmUvTUdEUwphcXVhcml1bS9NUwphcXVhdGljL1NNCmFxdWF0aWNhbGx5CmFxdWF0aWNzL00KYXF1YXRpbnQvUwphcXVhdml0L00KYXF1ZWR1Y3QvTVMKYXF1ZW91cwphcXVpZmVyL1NNCmFxdWlsaW5lCmFyYWJlc3F1ZS9NUwphcmFiaWxpdHkvTQphcmFjaG5pZC9NUwphcmFjaG5vcGhvYmlhCmFyYml0ZXIvU00KYXJiaXRyYWdlL01aR0RSUwphcmJpdHJhZ2VyL00KYXJiaXRyYWdldXIvU00KYXJiaXRyYW1lbnQvU00KYXJiaXRyYXJpbHkKYXJiaXRyYXJpbmVzcy9NCmFyYml0cmFyeS9QCmFyYml0cmF0ZS9HTkRTCmFyYml0cmF0aW9uL00KYXJiaXRyYXRvci9NUwphcmJvci9NUwphcmJvcmVhbAphcmJvcmV0dW0vU00KYXJib3J2aXRhZS9TTQphcmJ1dHVzL01TCmFyYy9TTURHCmFyY2FkZS9NUwphcmNhbmUKYXJjaC9QWlRHVk1EUlNZCmFyY2hhZW9sb2dpY2FsL1kKYXJjaGFlb2xvZ2lzdC9TTQphcmNoYWVvbG9neS9NCmFyY2hhaWMKYXJjaGFpY2FsbHkKYXJjaGFpc20vTVMKYXJjaGFpc3QvTVMKYXJjaGFuZ2VsL01TCmFyY2hiaXNob3AvU00KYXJjaGJpc2hvcHJpYy9TTQphcmNoZGVhY29uL1NNCmFyY2hkaW9jZXNhbgphcmNoZGlvY2VzZS9NUwphcmNoZHVjaGVzcy9NUwphcmNoZHVrZS9NUwphcmNoZW5lbXkvU00KYXJjaGVyL00KYXJjaGVyeS9NCmFyY2hldHlwYWwKYXJjaGV0eXBlL01TCmFyY2hmaWVuZC9NUwphcmNoaWVwaXNjb3BhbAphcmNoaXBlbGFnby9NUwphcmNoaXRlY3QvU00KYXJjaGl0ZWN0b25pYy9TCmFyY2hpdGVjdG9uaWNzL00KYXJjaGl0ZWN0dXJhbC9ZCmFyY2hpdGVjdHVyZS9NUwphcmNoaXRyYXZlL1NNCmFyY2hpdmFsCmFyY2hpdmUvRFNNRwphcmNoaXZpc3QvTVMKYXJjaG5lc3MvTQphcmNod2F5L1NNCmFyY3RpYy9NUwphcmRlbnQvWQphcmRvci9NUwphcmR1b3VzL1lQCmFyZHVvdXNuZXNzL00KYXJlL1NNQgphcmVhL1NNCmFyZWFsCmFyZW4ndAphcmVuYS9NUwphcmdlbnQvTQphcmdpbmluZQphcmdvbi9NCmFyZ29zeS9TTQphcmdvdC9NUwphcmd1YWJsZS9JVQphcmd1YWJseS9VCmFyZ3VlL1pHRFJTCmFyZ3Vlci9NCmFyZ3VtZW50L01TCmFyZ3VtZW50YXRpb24vTQphcmd1bWVudGF0aXZlL1BZCmFyZ3VtZW50YXRpdmVuZXNzL00KYXJneWxlL01TCmFyaWEvU00KYXJpZC9ZCmFyaWRpdHkvTQphcmlnaHQKYXJpc2UvR1MKYXJpc2VuCmFyaXN0b2NyYWN5L1NNCmFyaXN0b2NyYXQvU00KYXJpc3RvY3JhdGljCmFyaXN0b2NyYXRpY2FsbHkKYXJpdGhtZXRpYy9NCmFyaXRobWV0aWNhbC9ZCmFyaXRobWV0aWNpYW4vTVMKYXJrL1NNCmFybSdzCmFybS9FQUdEUwphcm1hZGEvTVMKYXJtYWRpbGxvL1NNCmFybWFtZW50L0FFTQphcm1hbWVudHMKYXJtYXR1cmUvTVMKYXJtYmFuZC9NUwphcm1jaGFpci9NUwphcm1lZC9VCmFybWZ1bC9NUwphcm1ob2xlL1NNCmFybWlzdGljZS9TTQphcm1sZXQvTVMKYXJtbG9hZC9TCmFybW9yL1pHTURSUwphcm1vcmVkL1UKYXJtb3Jlci9NCmFybW9yaWFsCmFybW9yeS9TTQphcm1waXQvTVMKYXJtcmVzdC9TTQphcm15L1NNCmFyb21hL01TCmFyb21hdGhlcmFwaXN0L01TCmFyb21hdGhlcmFweS9NCmFyb21hdGljL01TCmFyb21hdGljYWxseQphcm9zZQphcm91bmQKYXJvdXNhbC9NCmFyb3VzZS9HRFMKYXJwZWdnaW8vTVMKYXJyCmFycmFpZ24vREdTTAphcnJhaWdubWVudC9TTQphcnJhbmdlL0FFU0RMRwphcnJhbmdlbWVudCdzL0UKYXJyYW5nZW1lbnQvQVNNCmFycmFuZ2VyL1NNCmFycmFudAphcnJhcy9NUwphcnJheS9FR01EUwphcnJlYXJzL00KYXJyZXN0L0FHTURTCmFycmh5dGhtaWEvTQphcnJoeXRobWljCmFycmh5dGhtaWNhbAphcnJpdmFsL01TCmFycml2ZS9HRFMKYXJyb2dhbmNlL00KYXJyb2dhbnQvWQphcnJvZ2F0ZS9HTkRTCmFycm9nYXRpb24vTQphcnJvdy9NUwphcnJvd2hlYWQvTVMKYXJyb3dyb290L00KYXJyb3lvL01TCmFyc2VkCmFyc2VuYWwvTVMKYXJzZW5pYy9NCmFyc2luZwphcnNvbi9NCmFyc29uaXN0L1NNCmFydC9TTQphcnRlcmlhbAphcnRlcmlvbGUvTVMKYXJ0ZXJpb3NjbGVyb3Npcy9NCmFydGVyeS9TTQphcnRmdWwvUFkKYXJ0ZnVsbmVzcy9NCmFydGhyaXRpYy9NUwphcnRocml0aXMvTQphcnRocm9wb2QvTVMKYXJ0aHJvc2NvcGUvU00KYXJ0aHJvc2NvcGljCmFydGhyb3Njb3B5CmFydGljaG9rZS9TTQphcnRpY2xlL01EUwphcnRpY3VsYWN5L0kKYXJ0aWN1bGFyCmFydGljdWxhdGUvWUdOUERTWAphcnRpY3VsYXRlbmVzcy9JTQphcnRpY3VsYXRpb24vTQphcnRpZmFjdC9TTQphcnRpZmljZS9SU01aCmFydGlmaWNlci9NCmFydGlmaWNpYWwvWQphcnRpZmljaWFsaXR5L00KYXJ0aWxsZXJ5L00KYXJ0aWxsZXJ5bWFuL00KYXJ0aWxsZXJ5bWVuCmFydGluZXNzL00KYXJ0aXNhbi9NUwphcnRpc3QvTVMKYXJ0aXN0ZS9NUwphcnRpc3RpYy9JCmFydGlzdGljYWxseQphcnRpc3RyeS9NCmFydGxlc3MvUFkKYXJ0bGVzc25lc3MvTQphcnRzeS9UUgphcnR3b3JrL01TCmFydHkvUFRSCmFydWd1bGEKYXJ1bS9TTQphc2FwCmFzYmVzdG9zL00KYXNjZW5kL0FHRFMKYXNjZW5kYW5jZS9NCmFzY2VuZGFuY3kvTQphc2NlbmRhbnQvU00KYXNjZW5zaW9uL01TCmFzY2VudC9NUwphc2NlcnRhaW4vR0RTQkwKYXNjZXJ0YWlubWVudC9NCmFzY2V0aWMvTVMKYXNjZXRpY2FsbHkKYXNjZXRpY2lzbS9NCmFzY290L01TCmFzY3JpYmUvR0JEUwphc2NyaXB0aW9uL00KYXNlcHRpYwphc2VwdGljYWxseQphc2V4dWFsL1kKYXNleHVhbGl0eS9NCmFzaC9NRE5TRwphc2hhbWVkL1VZCmFzaGNhbi9NUwphc2hsYXIvTVMKYXNob3JlCmFzaHJhbS9NUwphc2h0cmF5L1NNCmFzaHkvVFIKYXNpZGUvTVMKYXNpbmluZS9ZCmFzaW5pbml0eS9TTQphc2svU0RHCmFza2FuY2UKYXNrZWQvVQphc2tldwphc2xhbnQKYXNsZWVwCmFzb2NpYWwKYXNwL1NNTlgKYXNwYXJhZ3VzL00KYXNwYXJ0YW1lL00KYXNwZWN0L01TCmFzcGVuL00KYXNwZXJpdHkvU00KYXNwZXJzaW9uL01TCmFzcGhhbHQvTURHUwphc3Bob2RlbC9TTQphc3BoeXhpYS9NCmFzcGh5eGlhdGUvRFNYR04KYXNwaHl4aWF0aW9uL00KYXNwaWMvTVMKYXNwaWRpc3RyYS9NUwphc3BpcmFudC9NUwphc3BpcmF0ZS9NR05EU1gKYXNwaXJhdGlvbi9NCmFzcGlyYXRvci9TTQphc3BpcmUvR0RTCmFzcGlyaW4vTVMKYXNzL01TCmFzc2FpbC9HQkRTCmFzc2FpbGFibGUvVQphc3NhaWxhbnQvU00KYXNzYXNzaW4vU00KYXNzYXNzaW5hdGUvR05YRFMKYXNzYXNzaW5hdGlvbi9NCmFzc2F1bHQvTURSR1MKYXNzYXkvWkdNRFJTCmFzc2F5ZXIvTQphc3NlbWJsYWdlL1NNCmFzc2VtYmxlL0FFR1NECmFzc2VtYmxlci9NUwphc3NlbWJsaWVzCmFzc2VtYmx5L0FNCmFzc2VtYmx5bWFuL00KYXNzZW1ibHltZW4KYXNzZW1ibHl3b21hbi9NCmFzc2VtYmx5d29tZW4KYXNzZW50L0dNRFMKYXNzZXJ0L0FHVkRTCmFzc2VydGlvbi9BTQphc3NlcnRpb25zCmFzc2VydGl2ZS9ZUAphc3NlcnRpdmVuZXNzL00KYXNzZXNzL0FMR0RTCmFzc2Vzc21lbnQvQVNNCmFzc2Vzc29yL01TCmFzc2V0L01TCmFzc2V2ZXJhdGUvRFNHTgphc3NldmVyYXRpb24vTQphc3Nob2xlL01TIQphc3NpZHVpdHkvTQphc3NpZHVvdXMvUFkKYXNzaWR1b3VzbmVzcy9NCmFzc2lnbidzCmFzc2lnbi9BTEdEUwphc3NpZ25hYmxlCmFzc2lnbmF0aW9uL01TCmFzc2lnbmVkL1UKYXNzaWduZWUvTQphc3NpZ25lci9NUwphc3NpZ25tZW50L0FNUwphc3NpZ25vci9NUwphc3NpbWlsYXRlL0RTR04KYXNzaW1pbGF0aW9uL00KYXNzaXN0L0dNRFMKYXNzaXN0YW5jZS9NCmFzc2lzdGFudC9TTQphc3Npc3RlZC9VCmFzc2l6ZS9NUwphc3NuCmFzc29jCmFzc29jaWF0ZSdzCmFzc29jaWF0ZS9FRFNHTlYKYXNzb2NpYXRpb24vRU0KYXNzb2NpYXRpb25zCmFzc29uYW5jZS9NCmFzc29uYW50L01TCmFzc29ydC9HTERTCmFzc29ydG1lbnQvTVMKYXNzdAphc3N1YWdlL0dEUwphc3N1bWUvQkdEUwphc3N1bXB0aW9uL1NNCmFzc3VtcHRpdmUKYXNzdXJhbmNlL0FTTQphc3N1cmUvQUdEUwphc3N1cmVkL01ZUwphc3RhdGluZS9NCmFzdGVyL0VNUwphc3Rlcmlzay9HTURTCmFzdGVybgphc3Rlcm9pZC9NUwphc3RobWEvTQphc3RobWF0aWMvU00KYXN0aG1hdGljYWxseQphc3RpZ21hdGljCmFzdGlnbWF0aXNtL1NNCmFzdGlyCmFzdG9uaXNoL0RTTEcKYXN0b25pc2hpbmcvWQphc3RvbmlzaG1lbnQvTQphc3RvdW5kL0dEUwphc3RvdW5kaW5nL1kKYXN0cmFkZGxlCmFzdHJha2hhbi9NCmFzdHJhbAphc3RyYXkKYXN0cmlkZQphc3RyaW5nZW5jeS9NCmFzdHJpbmdlbnQvU01ZCmFzdHJvbGFiZS9TTQphc3Ryb2xvZ2VyL1NNCmFzdHJvbG9naWNhbC9ZCmFzdHJvbG9naXN0L01TCmFzdHJvbG9neS9NCmFzdHJvbmF1dC9NUwphc3Ryb25hdXRpYy9TCmFzdHJvbmF1dGljYWwKYXN0cm9uYXV0aWNzL00KYXN0cm9ub21lci9TTQphc3Ryb25vbWljCmFzdHJvbm9taWNhbC9ZCmFzdHJvbm9teS9NCmFzdHJvcGh5c2ljYWwKYXN0cm9waHlzaWNpc3QvTVMKYXN0cm9waHlzaWNzL00KYXN0dXRlL1BZVFIKYXN0dXRlbmVzcy9NCmFzdW5kZXIKYXN5bHVtL1NNCmFzeW1tZXRyaWMKYXN5bW1ldHJpY2FsL1kKYXN5bW1ldHJ5L1NNCmFzeW1wdG9tYXRpYwphc3ltcHRvdGljCmFzeW1wdG90aWNhbGx5CmFzeW5jaHJvbm91cy9ZCmF0CmF0YXZpc20vTQphdGF2aXN0L1NNCmF0YXZpc3RpYwphdGF4aWEvTQphdGF4aWMvTVMKYXRlCmF0ZWxpZXIvU00KYXRoZWlzbS9NCmF0aGVpc3QvTVMKYXRoZWlzdGljCmF0aGVyb3NjbGVyb3Npcy9NCmF0aGVyb3NjbGVyb3RpYwphdGhpcnN0CmF0aGxldGUvTVMKYXRobGV0aWMvUwphdGhsZXRpY2FsbHkKYXRobGV0aWNpc20KYXRobGV0aWNzL00KYXRod2FydAphdGlsdAphdGlzaG9vCmF0bGFzL01TCmF0bW9zcGhlcmUvTVMKYXRtb3NwaGVyaWMvUwphdG1vc3BoZXJpY2FsbHkKYXRtb3NwaGVyaWNzL00KYXRvbGwvTVMKYXRvbS9TTQphdG9taWMKYXRvbWljYWxseQphdG9taXplL1pHRFJTCmF0b21pemVyL00KYXRvbmFsL1kKYXRvbmFsaXR5L00KYXRvbmUvTEdEUwphdG9uZW1lbnQvTQphdG9wCmF0cmlhCmF0cmlhbAphdHJpb3ZlbnRyaWN1bGFyCmF0cml1bS9NCmF0cm9jaW91cy9QWQphdHJvY2lvdXNuZXNzL00KYXRyb2NpdHkvU00KYXRyb3BoeS9EU01HCmF0cm9waW5lL00KYXR0YWNoL0FMR0RTCmF0dGFjaGUvQk0KYXR0YWNoZWQvVQphdHRhY2htZW50L0FNCmF0dGFjaG1lbnRzCmF0dGFjay9aR01EUlMKYXR0YWNrZXIvTQphdHRhaW4vQUdEUwphdHRhaW5hYmlsaXR5L00KYXR0YWluYWJsZS9VCmF0dGFpbmRlci9NCmF0dGFpbm1lbnQvU00KYXR0YXIvTQphdHRlbXB0J3MKYXR0ZW1wdC9BU0RHCmF0dGVuZC9TRFJaRwphdHRlbmRhbmNlL1NNCmF0dGVuZGFudC9TTQphdHRlbmRlZC9VCmF0dGVuZGVlL1NNCmF0dGVudGlvbi9JTQphdHRlbnRpb25zCmF0dGVudGl2ZS9JUFkKYXR0ZW50aXZlbmVzcy9JTQphdHRlbnVhdGUvRFNHTgphdHRlbnVhdGlvbi9NCmF0dGVzdC9TREcKYXR0ZXN0YXRpb24vU00KYXR0ZXN0ZWQvVQphdHRpYy9TTQphdHRpcmUvRFNNRwphdHRpdHVkZS9TTQphdHRpdHVkaW5hbAphdHRpdHVkaW5pemUvR0RTCmF0dG4KYXR0b3JuZXkvTVMKYXR0cmFjdC9TR1ZEQgphdHRyYWN0YW50L01TCmF0dHJhY3Rpb24vTVMKYXR0cmFjdGl2ZS9VWQphdHRyYWN0aXZlbmVzcy9NCmF0dHJpYnV0ZS9EU01HTlZCWAphdHRyaWJ1dGVkL1UKYXR0cmlidXRpb24vTQphdHRyaWJ1dGl2ZS9NWVMKYXR0cml0aW9uL00KYXR0dW5lL0RTRwphdHR5CmF0d2l0dGVyCmF0eXBpY2FsL1kKYXViZXJnaW5lL1MKYXVidXJuL00KYXVjdGlvbi9NREdTCmF1Y3Rpb25lZXIvU00KYXVkYWNpb3VzL1lQCmF1ZGFjaW91c25lc3MvTQphdWRhY2l0eS9NCmF1ZGliaWxpdHkvSU0KYXVkaWJsZS9NUwphdWRpYmx5L0kKYXVkaWVuY2UvTVMKYXVkaW8vTVMKYXVkaW9sb2dpY2FsCmF1ZGlvbG9naXN0L1NNCmF1ZGlvbG9neS9NCmF1ZGlvbWV0ZXIvU00KYXVkaW9waGlsZS9TTQphdWRpb3RhcGUvU00KYXVkaW92aXN1YWwvUwphdWRpb3Zpc3VhbHMvTQphdWRpdC9HTURTCmF1ZGl0aW9uL1NNREcKYXVkaXRvci9NUwphdWRpdG9yaXVtL1NNCmF1ZGl0b3J5CmF1Z2VyL01TCmF1Z2h0L01TCmF1Z21lbnQvRFJaR1MKYXVnbWVudGF0aW9uL01TCmF1Z21lbnRhdGl2ZQphdWdtZW50ZXIvTQphdWd1ci9HTURTCmF1Z3VyeS9TTQphdWd1c3QvUFRSWQphdWd1c3RuZXNzL00KYXVrL1NNCmF1bnQvU00KYXVudGllL1NNCmF1cmEvTVMKYXVyYWwvWQphdXJlb2xlL1NNCmF1cmV1cwphdXJpY2xlL1NNCmF1cmljdWxhcgphdXJvcmEvU00KYXVzY3VsdGF0ZS9HTkRTWAphdXNjdWx0YXRpb24vTQphdXNwaWNlL1NNCmF1c3BpY2lvdXMvSVkKYXVzcGljaW91c25lc3MvTQphdXN0ZXJlL1JZVAphdXN0ZXJpdHkvU00KYXVzdHJhbAphdXRoZW50aWMvSVUKYXV0aGVudGljYWxseQphdXRoZW50aWNhdGUvWEdORFMKYXV0aGVudGljYXRlZC9VCmF1dGhlbnRpY2F0aW9uL00KYXV0aGVudGljaXR5L00KYXV0aG9yL1NNREcKYXV0aG9yZXNzL01TCmF1dGhvcmlhbAphdXRob3JpdGFyaWFuL01TCmF1dGhvcml0YXJpYW5pc20vTQphdXRob3JpdGF0aXZlL1lQCmF1dGhvcml0YXRpdmVuZXNzL00KYXV0aG9yaXR5L1NNCmF1dGhvcml6YXRpb24vTVMKYXV0aG9yaXplL0FHRFMKYXV0aG9yaXplZC9VCmF1dGhvcnNoaXAvTQphdXRpc20vTQphdXRpc3RpYwphdXRvL01TCmF1dG9iYWhuL1NNCmF1dG9iaW9ncmFwaGVyL1NNCmF1dG9iaW9ncmFwaGljCmF1dG9iaW9ncmFwaGljYWwvWQphdXRvYmlvZ3JhcGh5L1NNCmF1dG9jbGF2ZS9NUwphdXRvY3JhY3kvU00KYXV0b2NyYXQvU00KYXV0b2NyYXRpYwphdXRvY3JhdGljYWxseQphdXRvY3Jvc3MKYXV0b2RpZGFjdC9TTQphdXRvZ3JhcGgvTURHCmF1dG9ncmFwaHMKYXV0b2ltbXVuZQphdXRvaW1tdW5pdHkvTQphdXRvbWFrZXIvU00KYXV0b21hdGUvR05EUwphdXRvbWF0aWMvU00KYXV0b21hdGljYWxseQphdXRvbWF0aW9uL00KYXV0b21hdGlzbS9NCmF1dG9tYXRpemUvR0RTCmF1dG9tYXRvbi9TTQphdXRvbW9iaWxlL0RTTUcKYXV0b21vdGl2ZQphdXRvbm9taWMKYXV0b25vbW91cy9ZCmF1dG9ub215L00KYXV0b3BpbG90L1NNCmF1dG9wc3kvR0RTTQphdXRvc3VnZ2VzdGlvbgphdXRvd29ya2VyL01TCmF1dHVtbi9TTQphdXR1bW5hbAphdXgKYXV4aWxpYXJ5L1NNCmF1eGluL00KYXYvUloKYXZhaWwvQkdNRFMKYXZhaWxhYmlsaXR5L1VNCmF2YWlsYWJsZS9VCmF2YWxhbmNoZS9TTQphdmFyaWNlL00KYXZhcmljaW91cy9ZCmF2YXN0CmF2YXRhci9NUwphdmF1bnQKYXZkcAphdmUKYXZlbmdlL1pHRFJTCmF2ZW5nZXIvTQphdmVudWUvTVMKYXZlcmFnZS9NWUdEUwphdmVycmVkCmF2ZXJyaW5nCmF2ZXJzZS9YTgphdmVyc2lvbi9NCmF2ZXJ0L0dEUwphdmcKYXZpYW4KYXZpYXJ5L1NNCmF2aWF0aW9uL00KYXZpYXRvci9NUwphdmlhdHJpY2VzCmF2aWF0cml4L01TCmF2aWQvWQphdmlkaXR5L00KYXZpb25pYy9TCmF2aW9uaWNzL00KYXZpdGFtaW5vc2lzL00KYXZvY2Fkby9TTQphdm9jYXRpb24vTVMKYXZvY2F0aW9uYWwKYXZvaWQvU0RHQgphdm9pZGFibGUvVQphdm9pZGFibHkvVQphdm9pZGFuY2UvTQphdm9pcmR1cG9pcy9NCmF2b3VjaC9EU0cKYXZvdy9FREdTCmF2b3dhbC9FU00KYXZvd2VkL1kKYXZ1bmN1bGFyL1kKYXcKYXdhaXQvR0RTCmF3YWtlL0dTCmF3YWtlbi9BR0RTCmF3YWtlbmluZy9TTQphd2FyZC9HTURTCmF3YXJkZWUvUwphd2FyZS9VUAphd2FyZW5lc3MvVU0KYXdhc2gKYXdheQphd2UvRFNNRwphd2VpZ2gKYXdlc29tZS9ZUAphd2Vzb21lbmVzcy9NCmF3ZXN0cnVjawphd2Z1bC9ZUAphd2Z1bGxlcgphd2Z1bGxlc3QKYXdmdWxuZXNzL00KYXdoaWxlCmF3a3dhcmQvUllQVAphd2t3YXJkbmVzcy9NCmF3bC9TTQphd24vR0pTTQphd25pbmcvTQphd29rZQphd29rZW4KYXdyeQpheC9NRFNHCmF4aWFsL1kKYXhpb20vU00KYXhpb21hdGljCmF4aW9tYXRpY2FsbHkKYXhpcy9NCmF4bGUvTVMKYXhsZXRyZWUvU00KYXhvbG90bC9TTQpheG9uL01TCmF5YWgvTQpheWFocwpheWF0b2xsYWgvTQpheWF0b2xsYWhzCmF5ZS9TTQphemFsZWEvU00KYXppbXV0aC9NCmF6aW11dGhzCmF6dXJlL1NNCmIvS0RUCmJhYS9TTURHCmJhYmJsZS9NWkdEUlMKYmFiYmxlci9NCmJhYmUvU00KYmFiZWwvTVMKYmFib29uL01TCmJhYnVzaGthL1NNCmJhYnkvVEdEUlNNCmJhYnlob29kL00KYmFieWlzaApiYWJ5c2F0CmJhYnlzaXQvUwpiYWJ5c2l0dGVyL01TCmJhYnlzaXR0aW5nL00KYmFjY2FsYXVyZWF0ZS9TTQpiYWNjYXJhdC9NCmJhY2NoYW5hbC9NUwpiYWNjaGFuYWxpYS9NCmJhY2NoYW5hbGlhbi9NUwpiYWNjeQpiYWNoZWxvci9TTQpiYWNoZWxvcmhvb2QvTQpiYWNpbGxhcnkKYmFjaWxsaQpiYWNpbGx1cy9NCmJhY2svU0paR01EUgpiYWNrYWNoZS9NUwpiYWNrYmVuY2gvUwpiYWNrYml0CmJhY2tiaXRlL1pHUlMKYmFja2JpdGVyL00KYmFja2JpdHRlbgpiYWNrYm9hcmQvU00KYmFja2JvbmUvTVMKYmFja2JyZWFraW5nCmJhY2tjaGF0CmJhY2tjbG90aApiYWNrY2xvdGhzCmJhY2tjb21iL0RTRwpiYWNrZGF0ZS9HRFMKYmFja2Rvb3IKYmFja2Ryb3AvTVMKYmFja2VyL00KYmFja2ZpZWxkL1NNCmJhY2tmaXJlL01HRFMKYmFja2dhbW1vbi9NCmJhY2tncm91bmQvTVJaUwpiYWNrZ3JvdW5kZXIvTQpiYWNraGFuZC9NRFJTWkcKYmFja2hhbmRlZC9ZCmJhY2toYW5kZXIvTQpiYWNraG9lL01TCmJhY2tpbmcvTQpiYWNrbGFzaC9NUwpiYWNrbGVzcwpiYWNrbG9nL01TCmJhY2tsb2dnZWQKYmFja2xvZ2dpbmcKYmFja3BhY2svWkdNRFJTCmJhY2twYWNrZXIvTQpiYWNrcGFja2luZy9NCmJhY2twZWRhbC9TREcKYmFja3Jlc3QvU00KYmFja3Jvb20vUwpiYWNrc2NyYXRjaGluZy9NCmJhY2tzZWF0L1NNCmJhY2tzaWRlL1NNCmJhY2tzbGFwcGVyL1NNCmJhY2tzbGFwcGluZy9NCmJhY2tzbGFzaC9NUwpiYWNrc2xpZApiYWNrc2xpZGUvUlNaRwpiYWNrc2xpZGVyL00KYmFja3NwYWNlL0RTTUcKYmFja3NwaW4vTQpiYWNrc3RhYmJlci9NUwpiYWNrc3RhYmJpbmcKYmFja3N0YWdlL00KYmFja3N0YWlyL1MKYmFja3N0b3AvU00KYmFja3N0b3BwZWQKYmFja3N0b3BwaW5nCmJhY2tzdG9yeS9TCmJhY2tzdHJlZXQvUwpiYWNrc3RyZXRjaC9NUwpiYWNrc3Ryb2tlL01HRFMKYmFja3RhbGsvTQpiYWNrdHJhY2svU0RHCmJhY2t1cC9NUwpiYWNrd2FyZC9QU1kKYmFja3dhcmRuZXNzL00KYmFja3dhc2gvTQpiYWNrd2F0ZXIvU00KYmFja3dvb2RzL00KYmFja3dvb2RzbWFuL00KYmFja3dvb2RzbWVuCmJhY2t5YXJkL1NNCmJhY29uL00KYmFjdGVyaWEvTQpiYWN0ZXJpYWwKYmFjdGVyaWNpZGFsCmJhY3RlcmljaWRlL1NNCmJhY3RlcmlvbG9naWMKYmFjdGVyaW9sb2dpY2FsCmJhY3RlcmlvbG9naXN0L1NNCmJhY3RlcmlvbG9neS9NCmJhY3Rlcml1bS9NCmJhZC9NWVAKYmFkZGVyCmJhZGRlc3QKYmFkZGllL01TCmJhZGUKYmFkZ2UvTVpSUwpiYWRnZXIvR01ECmJhZGluYWdlL00KYmFkbGFuZHMvTQpiYWRtYW4vTQpiYWRtZW4KYmFkbWludG9uL00KYmFkbW91dGgvR0QKYmFkbW91dGhzCmJhZG5lc3MvTQpiYWZmbGUvTVpHRFJTTApiYWZmbGVtZW50L00KYmFmZmxlci9NCmJhZy9TTQpiYWdhdGVsbGUvU00KYmFnZWwvTVMKYmFnZnVsL01TCmJhZ2dhZ2UvTQpiYWdnZWQKYmFnZ2llL00KYmFnZ2lseQpiYWdnaW5lc3MvTQpiYWdnaW5nCmJhZ2d5L1BUUlMKYmFncGlwZS9NWlJTCmJhZ3BpcGVyL00KYmFndWV0dGUvTVMKYmFoCmJhaHQvU00KYmFpbC9TQkdNRApiYWlsZXkvUwpiYWlsaWZmL1MKYmFpbGl3aWNrL01TCmJhaWxvdXQvU00KYmFpbHNtYW4vTQpiYWlsc21lbgpiYWlybi9NUwpiYWl0L1NHTUQKYmFpemUvTQpiYWtlL0RSU01aRwpiYWtlZC9VCmJha2VyL00KYmFrZXJ5L1NNCmJha2VzaG9wL01TCmJha2xhdmEvTQpiYWtzaGVlc2gvTQpiYWxhY2xhdmEvTVMKYmFsYWxhaWthL01TCmJhbGFuY2UncwpiYWxhbmNlL1VEU0cKYmFsYm9hL1NNCmJhbGNvbnkvU00KYmFsZC9TVEdQRFJZCmJhbGRlcmRhc2gvTQpiYWxkZmFjZWQKYmFsZG5lc3MvTQpiYWxkcmljL1NNCmJhbGR5L1MKYmFsZS9EUlNNWkcKYmFsZWVuL00KYmFsZWZ1bC9QWQpiYWxlZnVsbmVzcy9NCmJhbGVyL00KYmFsay9TR01ECmJhbGt5L1JUCmJhbGwvU0dNRApiYWxsYWQvU00KYmFsbGFkZWVyL01TCmJhbGxhZHJ5L00KYmFsbGFzdC9HU01ECmJhbGxjb2NrL01TCmJhbGxlcmluYS9TTQpiYWxsZXQvU00KYmFsbGV0aWMKYmFsbGdhbWUvTVMKYmFsbGdpcmwvUwpiYWxsZ293bi9TCmJhbGxpc3RpYy9TCmJhbGxpc3RpY3MvTQpiYWxsb29uL1NHTUQKYmFsbG9vbmlzdC9NUwpiYWxsb3QvU01ERwpiYWxscGFyay9NUwpiYWxscGxheWVyL01TCmJhbGxwb2ludC9NUwpiYWxscm9vbS9NUwpiYWxscy9EU0cKYmFsbHN5L1JUCmJhbGx5CmJhbGx5aG9vL1NNREcKYmFsbS9TTQpiYWxtaW5lc3MvTQpiYWxteS9SVFAKYmFsb25leS9NCmJhbHNhL01TCmJhbHNhbS9TTQpiYWxzYW1pYwpiYWx1c3Rlci9TTQpiYWx1c3RyYWRlL01TCmJhbWJvby9TTQpiYW1ib296bGUvRFNHCmJhbi9TTQpiYW5hbC9ZCmJhbmFsaXR5L1NNCmJhbmFuYS9TTQpiYW5kJ3MKYmFuZC9FU0dECmJhbmRhZ2UvRFNNRwpiYW5kYW5uYS9NUwpiYW5kYm94L01TCmJhbmRlYXUvTQpiYW5kZWF1eApiYW5kaXQvU00KYmFuZGl0cnkvTQpiYW5kbGVhZGVyL1MKYmFuZG1hc3Rlci9TTQpiYW5kb2xlZXIvU00KYmFuZHNtYW4vTQpiYW5kc21lbgpiYW5kc3RhbmQvU00KYmFuZHdhZ29uL1NNCmJhbmR3aWR0aApiYW5kd2lkdGhzCmJhbmR5L0RSU1RHCmJhbmUvU00KYmFuZWZ1bApiYW5nL1NHTURSCmJhbmdsZS9TTQpiYW5pCmJhbmlzaC9HTERTCmJhbmlzaG1lbnQvTQpiYW5pc3Rlci9TTQpiYW5qby9NUwpiYW5qb2lzdC9TTQpiYW5rL1NaR0JNRFIKYmFua2Jvb2svU00KYmFua2NhcmQvU00KYmFua2VyL00KYmFua2luZy9NCmJhbmtub3RlL1NNCmJhbmtyb2xsL1NHTUQKYmFua3J1cHQvU0dNRApiYW5rcnVwdGN5L1NNCmJhbm5lZApiYW5uZXIvU00KYmFubmluZwpiYW5ub2NrL01TCmJhbm5zL00KYmFucXVldC9aR01EUlMKYmFucXVldGVyL00KYmFucXVldHRlL1NNCmJhbnNoZWUvTVMKYmFudGFtL1NNCmJhbnRhbXdlaWdodC9TTQpiYW50ZXIvR1NNRApiYW50ZXJpbmcvWQpiYW55YW4vU00KYmFuemFpL1NNCmJhb2JhYi9TTQpiYXAvUwpiYXB0aXNtL01TCmJhcHRpc21hbApiYXB0aXN0L1MKYmFwdGlzdGVyeS9TTQpiYXB0aXplL1pHRFJTCmJhcHRpemVkL1UKYmFwdGl6ZXIvTQpiYXIncwpiYXIvRUNVVFMKYmFyYi9TWkdNRFIKYmFyYmFjb2EKYmFyYmFyaWFuL1NNCmJhcmJhcmlhbmlzbS9NUwpiYXJiYXJpYwpiYXJiYXJpY2FsbHkKYmFyYmFyaXNtL1NNCmJhcmJhcml0eS9TTQpiYXJiYXJpemUvRFNHCmJhcmJhcm91cy9ZCmJhcmJlY3VlL0RTTUcKYmFyYmVsL1NNCmJhcmJlbGwvTVMKYmFyYmVyL0dNRApiYXJiZXJyeS9TTQpiYXJiZXJzaG9wL01TCmJhcmJpZS9TCmJhcmJpdHVyYXRlL1NNCmJhcmJ3aXJlL00KYmFyY2Fyb2xlL1NNCmJhcmQvU00KYmFyZGljCmJhcmUvRFJTUFlHCmJhcmViYWNrL0QKYmFyZWZhY2VkL1kKYmFyZWZvb3QvRApiYXJlaGFuZGVkCmJhcmVoZWFkZWQKYmFyZWxlZ2dlZApiYXJlbmVzcy9NCmJhcmYvU0dNRFkKYmFyZmx5L1NNCmJhcmdhaW4vTURSWkdTCmJhcmdhaW5lci9NCmJhcmdlL01HRFMKYmFyZ2VtYW4vTQpiYXJnZW1lbgpiYXJob3AvUwpiYXJob3BwZWQKYmFyaG9wcGluZwpiYXJpc3RhL01TCmJhcml0b25lL01TCmJhcml1bS9NCmJhcmsncwpiYXJrL0NTR0QKYmFya2VlcC9aTVJTCmJhcmtlZXBlci9NCmJhcmtlci9TTQpiYXJsZXkvTQpiYXJtYWlkL01TCmJhcm1hbi9NCmJhcm1lbgpiYXJteS9SVApiYXJuL1NNCmJhcm5hY2xlL01EUwpiYXJuZXkvUwpiYXJuc3Rvcm0vU0RSWkcKYmFybnN0b3JtZXIvTQpiYXJueWFyZC9TTQpiYXJvbWV0ZXIvTVMKYmFyb21ldHJpYwpiYXJvbWV0cmljYWxseQpiYXJvbi9NUwpiYXJvbmFnZS9NUwpiYXJvbmVzcy9NUwpiYXJvbmV0L01TCmJhcm9uZXRjeS9TTQpiYXJvbmlhbApiYXJvbnkvU00KYmFyb3F1ZS9NCmJhcnF1ZS9TTQpiYXJyYWNrL01ER1MKYmFycmFjdWRhL1NNCmJhcnJhZ2UvTUdEUwpiYXJyZS9NR0pEUwpiYXJyZWQvVUVDCmJhcnJlbC9HU01ECmJhcnJlbi9UUFNNUgpiYXJyZW5uZXNzL00KYmFycmV0dGUvU00KYmFycmljYWRlL01HRFMKYmFycmllci9NUwpiYXJyaW5nL0VDVQpiYXJyaW8vU00KYmFycmlzdGVyL01TCmJhcnJvb20vTVMKYmFycm93L1NNCmJhcnRlbmRlci9TTQpiYXJ0ZXIvWkdTTURSCmJhcnRlcmVyL00KYmFyeW9uL1NNCmJhc2FsL1kKYmFzYWx0L00KYmFzYWx0aWMKYmFzZSdzCmJhc2UvQ0RTTFRHCmJhc2ViYWxsL1NNCmJhc2Vib2FyZC9NUwpiYXNlbGVzcwpiYXNlbGluZS9NUwpiYXNlbHkKYmFzZW1hbi9NCmJhc2VtZW4KYmFzZW1lbnQvQ01TCmJhc2VuZXNzL00KYmFzZXIKYmFzaC9HTURTCmJhc2hmdWwvUFkKYmFzaGZ1bG5lc3MvTQpiYXNoaW5nL00KYmFzaWMvTVMKYmFzaWNhbGx5CmJhc2lsL00KYmFzaWxpY2EvTVMKYmFzaWxpc2svTVMKYmFzaW4vTVMKYmFzaW5mdWwvTVMKYmFzaXMvTQpiYXNrL1NHRApiYXNrZXQvU00KYmFza2V0YmFsbC9NUwpiYXNrZXRyeS9NCmJhc2tldHdvcmsvTQpiYXNxdWUvUwpiYXNzL01TCmJhc3NldC9TTQpiYXNzaW5ldC9NUwpiYXNzaXN0L01TCmJhc3NvL01TCmJhc3Nvb24vTVMKYmFzc29vbmlzdC9TTQpiYXNzd29vZC9NUwpiYXN0L00KYmFzdGFyZC9NUwpiYXN0YXJkaXphdGlvbi9NUwpiYXN0YXJkaXplL0dEUwpiYXN0YXJkeS9NCmJhc3RlL1pHTlhEUlMKYmFzdGVyL00KYmFzdGlvbi9NCmJhdC9TTQpiYXRjaC9NRFNHCmJhdGUvS0FDR1NECmJhdGgvWkdNRFJTCmJhdGhlL00KYmF0aGVyL00KYmF0aGV0aWMKYmF0aGhvdXNlL01TCmJhdGhpbmcvTQpiYXRobWF0L01TCmJhdGhvcy9NCmJhdGhyb2JlL1NNCmJhdGhyb29tL1NNCmJhdGhzCmJhdGh0dWIvTVMKYmF0aHdhdGVyCmJhdGh5c2NhcGhlL1NNCmJhdGh5c3BoZXJlL01TCmJhdGlrL01TCmJhdGlzdGUvTQpiYXRtYW4vTQpiYXRtZW4KYmF0b24vTVMKYmF0c21hbi9NCmJhdHNtZW4KYmF0dGFsaW9uL1NNCmJhdHRlZApiYXR0ZW4vR1NNRApiYXR0ZXIvSlpHU01EUgpiYXR0ZXJlci9NCmJhdHRlcnkvU00KYmF0dGluZy9NCmJhdHRsZS9MRFJTTVpHCmJhdHRsZWF4ZS9NUwpiYXR0bGVkb3JlL1NNCmJhdHRsZWRyZXNzCmJhdHRsZWZpZWxkL01TCmJhdHRsZWZyb250L01TCmJhdHRsZWdyb3VuZC9NUwpiYXR0bGVtZW50L1NNCmJhdHRsZXIvTQpiYXR0bGVzaGlwL1NNCmJhdHR5L1JUCmJhdWJsZS9TTQpiYXVkL1NNCmJhdXhpdGUvTQpiYXdkL1NNCmJhd2RpbHkKYmF3ZGluZXNzL00KYmF3ZHkvUFJUCmJhd2wvU0dNRApiYXkvU01ERwpiYXliZXJyeS9TTQpiYXlvbmV0L1NNREcKYmF5b3UvTVMKYmF6YWFyL1NNCmJhemlsbGlvbi9TCmJhem9va2EvU00KYmJsCmJkcm0KYmUKYmVhY2gvTURTRwpiZWFjaGNvbWJlci9TTQpiZWFjaGZyb250CmJlYWNoaGVhZC9NUwpiZWFjaHdlYXIvTQpiZWFjb24vU00KYmVhZC9TR01ECmJlYWRpbmcvTQpiZWFkbGUvU00KYmVhZHkvUlQKYmVhZ2xlL1NNCmJlYWsvU1pNRFIKYmVha2VyL00KYmVhbS9TR01ECmJlYW4vU0dNRApiZWFuYmFnL01TCmJlYW5mZWFzdC9TCmJlYW5pZS9TTQpiZWFucG9sZS9NUwpiZWFuc3Byb3V0L1MKYmVhbnN0YWxrL01TCmJlYXIvU1pHQkpNUgpiZWFyYWJsZS9VCmJlYXJhYmx5L1UKYmVhcmQvTURHUwpiZWFyZGxlc3MKYmVhcmVyL00KYmVhcmluZy9NCmJlYXJpc2gvUFkKYmVhcmlzaG5lc3MvTQpiZWFybGlrZQpiZWFyc2tpbi9NUwpiZWFzdC9NUwpiZWFzdGxpbmVzcy9NCmJlYXN0bHkvVFBSTQpiZWF0L1NaR0JNTlJKCmJlYXRhYmxlL1UKYmVhdGVuL1UKYmVhdGVyL00KYmVhdGlmaWMKYmVhdGlmaWNhbGx5CmJlYXRpZmljYXRpb24vTQpiZWF0aWZ5L0dYTkRTCmJlYXRpbmcvTQpiZWF0aXR1ZGUvU00KYmVhdG5pay9NUwpiZWF1L1NNCmJlYXV0L01TCmJlYXV0ZW91cy9ZCmJlYXV0aWNpYW4vU00KYmVhdXRpZmljYXRpb24vTQpiZWF1dGlmaWVyL00KYmVhdXRpZnVsL1kKYmVhdXRpZnkvTkRSU1pHCmJlYXV0eS9TTQpiZWF2ZXIvU0dNRApiZWJvcC9NUwpiZWNhbG0vR1NECmJlY2FtZQpiZWNhdXNlCmJlY2svU00KYmVja29uL1NHRApiZWNsb3VkL0dEUwpiZWNvbWUvUwpiZWNvbWluZy9VWQpiZWNxdWVyZWwvUwpiZWQvU00KYmVkYXViL0dTRApiZWRhenpsZS9HRFNMCmJlZGF6emxlbWVudC9NCmJlZGJ1Zy9TTQpiZWRjaGFtYmVyL1MKYmVkY2xvdGhlcy9NCmJlZGRlZApiZWRkZXIKYmVkZGluZy9NCmJlZGVjay9HU0QKYmVkZXZpbC9MR0RTCmJlZGV2aWxtZW50L00KYmVkZmVsbG93L1NNCmJlZGhlYWQvUwpiZWRpbS9TCmJlZGltbWVkCmJlZGltbWluZwpiZWRpemVuL0dEUwpiZWRsYW0vU00KYmVkcGFuL1NNCmJlZHBvc3QvU00KYmVkcmFnZ2xlL0dEUwpiZWRyaWRkZW4KYmVkcm9jay9TTQpiZWRyb2xsL1NNCmJlZHJvb20vU00KYmVkc2lkZS9TTQpiZWRzaXQvUwpiZWRzaXR0ZXIvUwpiZWRzb3JlL1NNCmJlZHNwcmVhZC9TTQpiZWRzdGVhZC9TTQpiZWR0aW1lL1NNCmJlZS9SU01aR0oKYmVlYnJlYWQvTQpiZWVjaC9NUwpiZWVjaG51dC9NUwpiZWVmL1NHTUQKYmVlZmJ1cmdlci9TTQpiZWVmY2FrZS9NUwpiZWVmaW5lc3MvTQpiZWVmc3RlYWsvTVMKYmVlZnkvUlBUCmJlZWhpdmUvTVMKYmVla2VlcGVyL01TCmJlZWtlZXBpbmcvTQpiZWVsaW5lL01TCmJlZW4KYmVlcC9TWkdNRFIKYmVlcGVyL00KYmVlci9NCmJlZXJ5L1RSCmJlZXN3YXgvTQpiZWV0L1NNCmJlZXRsZS9NR0RTCmJlZXRyb290L1MKYmVldmVzCmJlZmFsbC9TR04KYmVmZWxsCmJlZml0L1MKYmVmaXR0ZWQKYmVmaXR0aW5nL1kKYmVmb2cvUwpiZWZvZ2dlZApiZWZvZ2dpbmcKYmVmb3JlCmJlZm9yZWhhbmQKYmVmb3VsL0RHUwpiZWZyaWVuZC9TR0QKYmVmdWRkbGUvR0xEUwpiZWZ1ZGRsZW1lbnQvTQpiZWcvUwpiZWdhbgpiZWdhdApiZWdldC9TCmJlZ2V0dGVyL1MKYmVnZXR0aW5nCmJlZ2dhci9NRFlHUwpiZWdnYXJ5L00KYmVnZ2VkCmJlZ2dpbmcKYmVnaW4vUwpiZWdpbm5lci9TTQpiZWdpbm5pbmcvTVMKYmVnb25lCmJlZ29uaWEvU00KYmVnb3QKYmVnb3R0ZW4KYmVncmltZS9EU0cKYmVncnVkZ2UvRFNHCmJlZ3J1ZGdpbmcvWQpiZWd1aWxlL0RSU1pHTApiZWd1aWxlbWVudC9NCmJlZ3VpbGVyL00KYmVndWlsaW5nL1kKYmVndWluZS9TTQpiZWd1bS9NUwpiZWd1bgpiZWhhbGYvTQpiZWhhbHZlcwpiZWhhdmUvR0RTCmJlaGF2aW9yL1NNCmJlaGF2aW9yYWwvWQpiZWhhdmlvcmlzbS9NCmJlaGF2aW9yaXN0L01TCmJlaGVhZC9ER1MKYmVoZWxkCmJlaGVtb3RoL00KYmVoZW1vdGhzCmJlaGVzdC9NUwpiZWhpbmQvTVMKYmVoaW5kaGFuZApiZWhvbGQvTlJaR1MKYmVob2xkZXIvTQpiZWhvb3ZlL0RTRwpiZWlnZS9NCmJlaW5nL00KYmVqZXdlbC9TREcKYmVsYWJvci9TREcKYmVsYXRlZC9ZCmJlbGF5L0dEUwpiZWxjaC9HTURTCmJlbGVhZ3Vlci9HU0QKYmVsZnJ5L1NNCmJlbGllL0RTCmJlbGllZi9FVU0KYmVsaWVmcwpiZWxpZXZhYmxlL1UKYmVsaWV2YWJseS9VCmJlbGlldmUvRURSU1pHCmJlbGlldmVyL0VVTVMKYmVsaWV2aW5nL1UKYmVsaXR0bGUvTERTRwpiZWxpdHRsZW1lbnQvTQpiZWxsL1NHTUQKYmVsbGFkb25uYS9NCmJlbGxib3kvU00KYmVsbGUvTVMKYmVsbGVkL0EKYmVsbGV0cmlzdC9NUwpiZWxsZXRyaXN0aWMKYmVsbGhvcC9TTQpiZWxsaWNvc2UKYmVsbGljb3NpdHkvTQpiZWxsaWdlcmVuY2UvTQpiZWxsaWdlcmVuY3kvTQpiZWxsaWdlcmVudC9NWVMKYmVsbGluZy9BCmJlbGxtYW4vTQpiZWxsbWVuCmJlbGxvdy9NREdTCmJlbGx3ZXRoZXIvTVMKYmVsbHkvR0RTTQpiZWxseWFjaGUvTUdEUwpiZWxseWJ1dHRvbi9TTQpiZWxseWZ1bC9NUwpiZWxvbmcvSkRHUwpiZWxvbmdpbmcvTQpiZWxvdmVkL1NNCmJlbG93CmJlbHQvU0dNRApiZWx0d2F5L1NNCmJlbHVnYS9NUwpiZWx5aW5nCmJlbWlyZS9HRFMKYmVtb2FuL0RHUwpiZW11c2UvTEdEUwpiZW11c2VkL1kKYmVtdXNlbWVudC9NCmJlbmNoL0dNRFMKYmVuY2htYXJrL01TCmJlbmQvQlNaR01SCmJlbmRlci9NCmJlbmR5L1RSCmJlbmVhdGgKYmVuZWRpY3RpbmUKYmVuZWRpY3Rpb24vU00KYmVuZWRpY3RvcnkKYmVuZWZhY3Rpb24vU00KYmVuZWZhY3Rvci9NUwpiZW5lZmFjdHJlc3MvTVMKYmVuZWZpY2UvU00KYmVuZWZpY2VuY2UvTQpiZW5lZmljZW50L1kKYmVuZWZpY2lhbC9ZCmJlbmVmaWNpYXJ5L1NNCmJlbmVmaXQvU01ERwpiZW5ldm9sZW5jZS9TTQpiZW5ldm9sZW50L1kKYmVuaWdodGVkL1kKYmVuaWduL1kKYmVuaWduYW50CmJlbmlnbml0eS9NCmJlbnQvU00KYmVudHdvb2QvTQpiZW51bWIvRFNHCmJlbnplbmUvTQpiZW56aW5lL00KYmVuenlsCmJlcXVlYXRoL0RHCmJlcXVlYXRocwpiZXF1ZXN0L01TCmJlcmF0ZS9HRFMKYmVyZWF2ZS9EU0xHCmJlcmVhdmVtZW50L01TCmJlcmVmdApiZXJldC9NUwpiZXJnL1NNCmJlcmliZXJpL00KYmVyay9TCmJlcmtlbGl1bS9NCmJlcm0vU00KYmVycnkvR0RTTQpiZXJyeWxpa2UKYmVyc2VyawpiZXJ0aC9HTUQKYmVydGhzCmJlcnlsL01TCmJlcnlsbGl1bS9NCmJlc2VlY2gvWkdSUwpiZXNlZWNoZXIvTQpiZXNlZWNoaW5nL1kKYmVzZWVtL0RTRwpiZXNldC9TCmJlc2V0dGluZwpiZXNpZGUvUwpiZXNpZWdlL1pHRFJTCmJlc2llZ2VyL00KYmVzbWVhci9EU0cKYmVzbWlyY2gvR0RTCmJlc29tL01TCmJlc290L1MKYmVzb3R0ZWQKYmVzb3R0aW5nCmJlc291Z2h0CmJlc3BhbmdsZS9EU0cKYmVzcGF0dGVyL0dTRApiZXNwZWFrL1NHCmJlc3BlY3RhY2xlZApiZXNwb2tlCmJlc3Bva2VuCmJlc3QvU0dNRApiZXN0aWFsL1kKYmVzdGlhbGl0eS9NCmJlc3RpYXJ5L1NNCmJlc3Rpci9TCmJlc3RpcnJlZApiZXN0aXJyaW5nCmJlc3Rvdy9ER1MKYmVzdG93YWwvU00KYmVzdHJldy9TREcKYmVzdHJld24KYmVzdHJpZGRlbgpiZXN0cmlkZS9TRwpiZXN0cm9kZQpiZXN0c2VsbGVyL01TCmJlc3RzZWxsaW5nCmJldC9TTQpiZXRhL1NNCmJldGFrZS9HUwpiZXRha2VuCmJldGNoYQpiZXRlbC9NCmJldGhpbmsvU0cKYmV0aG91Z2h0CmJldGlkZS9HRFMKYmV0aW1lcwpiZXRva2VuL0dEUwpiZXRvb2sKYmV0cmF5L0RSWkdTCmJldHJheWFsL1NNCmJldHJheWVyL00KYmV0cm90aC9ERwpiZXRyb3RoYWwvU00KYmV0cm90aGVkL00KYmV0cm90aHMKYmV0dGVyL01ER0xTCmJldHRlcm1lbnQvTQpiZXR0aW5nCmJldHRvci9NUwpiZXR3ZWVuCmJldHdpeHQKYmV2ZWwvR01EUwpiZXZlcmFnZS9TTQpiZXZ2eS9TCmJldnkvU00KYmV3YWlsL0RHUwpiZXdhcmUvR0RTCmJld2hpc2tlcmVkCmJld2lnZ2VkCmJld2lsZGVyL0xTR0QKYmV3aWxkZXJpbmcvWQpiZXdpbGRlcm1lbnQvTQpiZXdpdGNoL0dMRFMKYmV3aXRjaGluZy9ZCmJld2l0Y2htZW50L00KYmV5L1NNCmJleW9uZApiZXplbC9NUwpiZgpiaGFqaQpiaS9TTVJaCmJpYW5udWFsL1kKYmlhcy9HTURTCmJpYXNlZC9VCmJpYXRobG9uL1NNCmJpYi9TTQpiaWJsZS9NUwpiaWJsaWNhbApiaWJsaW9ncmFwaGVyL01TCmJpYmxpb2dyYXBoaWMKYmlibGlvZ3JhcGhpY2FsL1kKYmlibGlvZ3JhcGh5L1NNCmJpYmxpb3BoaWxlL1NNCmJpYnVsb3VzCmJpY2FtZXJhbApiaWNhbWVyYWxpc20vTQpiaWNhcmIvTVMKYmljYXJib25hdGUvTVMKYmljZW50ZW5hcnkvU00KYmljZW50ZW5uaWFsL1NNCmJpY2VwL01TCmJpY2Vwcy9NCmJpY2tlci9NRFJaR1MKYmlja2VyZXIvTQpiaWNvbmNhdmUKYmljb252ZXgKYmljdXNwaWQvTVMKYmljeWNsZS9EUlNNWkcKYmljeWNsZXIvTQpiaWN5Y2xpc3QvU00KYmlkL1NNRwpiaWRkYWJsZQpiaWRkZW4vVQpiaWRkZXIvTVMKYmlkZGluZy9NCmJpZGR5L1NNCmJpZGUvUwpiaWRldC9NUwpiaWRpcmVjdGlvbmFsL1kKYmllbm5pYWwvTVlTCmJpZW5uaXVtL01TCmJpZXIvTQpiaWZmL1NHRApiaWZvY2FsL1MKYmlmb2NhbHMvTQpiaWZ1cmNhdGUvWERTR04KYmlmdXJjYXRpb24vTQpiaWcvUApiaWdhbWlzdC9TTQpiaWdhbW91cwpiaWdhbXkvTQpiaWdnZXIKYmlnZ2VzdApiaWdnaWUvTVMKYmlnZ2lzaApiaWdoZWFkL1NNCmJpZ2hlYXJ0ZWQvUApiaWdoZWFydGVkbmVzcy9NCmJpZ2hvcm4vU00KYmlnaHQvTVMKYmlnbW91dGgvTQpiaWdtb3V0aHMKYmlnbmVzcy9NCmJpZ290L01EUwpiaWdvdHJ5L1NNCmJpZ3dpZy9NUwpiaWpvdS9NCmJpam91eApiaWtlL0RSU01aRwpiaWtlci9NCmJpa2luaS9NUwpiaWxhYmlhbC9NUwpiaWxhdGVyYWwvWQpiaWxiZXJyeS9TCmJpbGUvTQpiaWxnZS9NUwpiaWxpbmd1YWwvU01ZCmJpbGluZ3VhbGlzbS9NCmJpbGlvdXMvUApiaWxpb3VzbmVzcy9NCmJpbGlydWJpbgpiaWxrL1NaR0RSCmJpbGtlci9NCmJpbGwvU0JKR01ECmJpbGxib2FyZC9NUwpiaWxsZXQvR01EUwpiaWxsZm9sZC9TTQpiaWxsaG9vay9TCmJpbGxpYXJkL1MKYmlsbGlhcmRzL00KYmlsbGluZy9NCmJpbGxpbmdzZ2F0ZS9NCmJpbGxpb24vTUhTCmJpbGxpb25haXJlL1NNCmJpbGxpb250aC9NCmJpbGxpb250aHMKYmlsbG93L0dNRFMKYmlsbG93eQpiaWxseS9TTQpiaWxseWNhbi9TCmJpbWJvL01TCmJpbWV0YWxsaWMvU00KYmltZXRhbGxpc20vTQpiaW1vbnRobHkvU00KYmluL1NNCmJpbmFyeS9TTQpiaW5kJ3MKYmluZC9BVUdTCmJpbmRlci9NUwpiaW5kZXJ5L1NNCmJpbmRpbmcvTVMKYmluZHdlZWQvTQpiaW5nZS9NRFMKYmluZ28vTQpiaW5tYW4KYmlubWVuCmJpbm5hY2xlL1NNCmJpbm5lZApiaW5uaW5nCmJpbm9jdWxhci9NUwpiaW5vbWlhbC9TTQpiaW8vU00KYmlvY2hlbWljYWwvU01ZCmJpb2NoZW1pc3QvTVMKYmlvY2hlbWlzdHJ5L00KYmlvZGVncmFkYWJpbGl0eS9NCmJpb2RlZ3JhZGUvRFNHQgpiaW9kaXZlcnNpdHkvTQpiaW9ldGhpY3MvTQpiaW9mZWVkYmFjay9NCmJpb2cKYmlvZ3JhcGhlci9TTQpiaW9ncmFwaGljCmJpb2dyYXBoaWNhbC9ZCmJpb2dyYXBoeS9TTQpiaW9sCmJpb2xvZ2ljCmJpb2xvZ2ljYWwvWQpiaW9sb2dpc3QvTVMKYmlvbG9neS9NCmJpb21hc3MvTQpiaW9tZWRpY2FsCmJpb25pYy9TCmJpb25pY2FsbHkKYmlvbmljcy9NCmJpb3BoeXNpY2FsCmJpb3BoeXNpY2lzdC9NUwpiaW9waHlzaWNzL00KYmlvcGljL01TCmJpb3BzeS9HRFNNCmJpb3JlYWN0b3IvUwpiaW9yaHl0aG0vTVMKYmlvc2Vuc29yL1MKYmlvc3BoZXJlL1NNCmJpb3N5bnRoZXNpcwpiaW90ZWNoCmJpb3RlY2hub2xvZ2ljYWwKYmlvdGVjaG5vbG9neS9NCmJpb3Rpbi9NCmJpcGFydGlzYW4KYmlwYXJ0aXNhbnNoaXAvTQpiaXBhcnRpdGUKYmlwZWQvTVMKYmlwZWRhbApiaXBsYW5lL01TCmJpcG9sYXIKYmlwb2xhcml0eS9NCmJpcmFjaWFsCmJpcmNoL0dNRFMKYmlyZC9TWkdNRFIKYmlyZGJhdGgvTQpiaXJkYmF0aHMKYmlyZGJyYWluL1NNRApiaXJkY2FnZS9TCmJpcmRlci9NCmJpcmRob3VzZS9NUwpiaXJkaWUvTURTCmJpcmRpZWluZwpiaXJkbGlrZQpiaXJkbGltZS9NCmJpcmRzZWVkL00KYmlyZHNvbmcKYmlyZHdhdGNoZXIvU00KYmlyZHlpbmcKYmlyZXR0YS9TTQpiaXJ0aC9aR01EUgpiaXJ0aGRheS9NUwpiaXJ0aGVyL00KYmlydGhtYXJrL01TCmJpcnRocGxhY2UvTVMKYmlydGhyYXRlL01TCmJpcnRocmlnaHQvTVMKYmlydGhzL0EKYmlydGhzdG9uZS9TTQpiaXNjdWl0L1NNCmJpc2VjdC9ER1MKYmlzZWN0aW9uL01TCmJpc2VjdG9yL1NNCmJpc2V4dWFsL01ZUwpiaXNleHVhbGl0eS9NCmJpc2hvcC9NUwpiaXNob3ByaWMvU00KYmlzbXV0aC9NCmJpc29uL00KYmlzcXVlL00KYmlzdHJvL01TCmJpdC9DU01HCmJpdGNoL0dNRFMKYml0Y2hpbHkKYml0Y2hpbmVzcy9NCmJpdGNoeS9QUlQKYml0Y29pbi9TTQpiaXRlL1JTTVoKYml0ZXIvTQpiaXRpbmcvWQpiaXRtYXAvUwpiaXR0ZW4KYml0dGVyL1BNUllUUwpiaXR0ZXJuL1NNCmJpdHRlcm5lc3MvTQpiaXR0ZXJzL00KYml0dGVyc3dlZXQvTVMKYml0dHkvVFIKYml0dW1lbi9NCmJpdHVtaW5vdXMKYml2YWxlbnQKYml2YWx2ZS9TTQpiaXZvdWFjL01TCmJpdm91YWNrZWQKYml2b3VhY2tpbmcKYml3ZWVrbHkvU00KYml5ZWFybHkKYml6L00KYml6YXJyZS9ZCmJrCmJsL0RHCmJsYWIvU00KYmxhYmJlZApibGFiYmVyL0RHUwpibGFiYmVybW91dGgvTQpibGFiYmVybW91dGhzCmJsYWJiaW5nCmJsYWNrL1BYVEdNRE5SWVMKYmxhY2thbW9vci9NUwpibGFja2JhbGwvU0dNRApibGFja2JlcnJ5L0dTTQpibGFja2JpcmQvU00KYmxhY2tib2FyZC9NUwpibGFja2N1cnJhbnQvUwpibGFja2VuL0RHCmJsYWNrZmFjZQpibGFja2d1YXJkL1NNCmJsYWNraGVhZC9NUwpibGFja2luZy9NCmJsYWNraXNoCmJsYWNramFjay9NREdTCmJsYWNrbGVnL1MKYmxhY2tsaXN0L01EU0cKYmxhY2ttYWlsL01EUlNaRwpibGFja21haWxlci9NCmJsYWNrbmVzcy9NCmJsYWNrb3V0L1NNCmJsYWNrc21pdGgvTQpibGFja3NtaXRocwpibGFja3NuYWtlL1NNCmJsYWNrdGhvcm4vU00KYmxhY2t0b3AvU00KYmxhY2t0b3BwZWQKYmxhY2t0b3BwaW5nCmJsYWRkZXIvTVMKYmxhZGUvTURTCmJsYWcvUwpibGFnZ2VkCmJsYWdnaW5nCmJsYWgvTQpibGFocy9NCmJsYW1lL0JNR0RSUwpibGFtZWxlc3MvWVAKYmxhbWVsZXNzbmVzcy9NCmJsYW1ld29ydGhpbmVzcy9NCmJsYW1ld29ydGh5L1AKYmxhbW1vCmJsYW5jaC9HRFMKYmxhbmNtYW5nZS9NUwpibGFuZC9QVFJZCmJsYW5kaXNoL0RTTEcKYmxhbmRpc2htZW50L1NNCmJsYW5kbmVzcy9NCmJsYW5rL1RHUE1EUllTCmJsYW5rZXQvR01EUwpibGFua25lc3MvTQpibGFyZS9NR0RTCmJsYXJuZXkvU01ERwpibGFzZQpibGFzcGhlbWUvWkdEUlMKYmxhc3BoZW1lci9NCmJsYXNwaGVtb3VzL1kKYmxhc3BoZW15L1NNCmJsYXN0L1pHTURSUwpibGFzdGVyL00KYmxhc3RvZmYvTVMKYmxhdC9TCmJsYXRhbmN5L1NNCmJsYXRhbnQvWQpibGF0aGVyL1NNREcKYmxhemUvTVpHRFJTCmJsYXplci9NCmJsYXpvbi9NREdTCmJsZGcKYmxlYWNoL01EUlNaRwpibGVhY2hlZC9VCmJsZWFjaGVyL00KYmxlYWsvVFBSWQpibGVha25lc3MvTQpibGVhcgpibGVhcmlseQpibGVhcmluZXNzL00KYmxlYXJ5L1BSVApibGVhdC9HTURTCmJsZWVkL1pHUlMKYmxlZWRlci9NCmJsZWVkaW5nL00KYmxlZXAvWkdNRFJTCmJsZWVwZXIvTQpibGVtaXNoL0dNRFMKYmxlbWlzaGVkL1UKYmxlbmNoL0RTRwpibGVuZC9aR01EUlMKYmxlbmRlci9NCmJsZXNzL0dEU0oKYmxlc3NlZC9ZUApibGVzc2VkbmVzcy9NCmJsZXNzaW5nL00KYmxldGNoCmJsZXcKYmxpZ2h0L1pHTURSUwpibGltZXkKYmxpbXAvTVMKYmxpbXBpc2gKYmxpbmQvUFpUR01EUllTCmJsaW5kZXIvTQpibGluZGZvbGQvU01ERwpibGluZGluZy9ZCmJsaW5kbmVzcy9NCmJsaW5kc2lkZS9EU0cKYmxpbmkvTVMKYmxpbmsvWkdNRFJTCmJsaW5rZXIvTURHCmJsaW50ei9NUwpibGludHplL00KYmxpcC9TTQpibGlzcy9NCmJsaXNzZnVsL1lQCmJsaXNzZnVsbmVzcy9NCmJsaXN0ZXIvR01EUwpibGlzdGVyaW5nL1kKYmxpc3RlcnkKYmxpdGhlL1BZVFIKYmxpdGhlbmVzcy9NCmJsaXRoZXIvRwpibGl0aGVzb21lCmJsaXR6L0dNRFMKYmxpdHprcmllZy9NUwpibGl2ZXQvUwpibGl6emFyZC9TTQpibG9hdC9aR0RSUwpibG9hdHdhcmUKYmxvYi9TTQpibG9iYmVkCmJsb2JiaW5nCmJsb2MvU00KYmxvY2sncwpibG9jay9VR0RTCmJsb2NrYWRlL01aR0RSUwpibG9ja2FkZXIvTQpibG9ja2FnZS9NUwpibG9ja2J1c3Rlci9TTQpibG9ja2J1c3RpbmcvTQpibG9ja2VyL01TCmJsb2NraGVhZC9TTQpibG9ja2hvdXNlL01TCmJsb2cvU00KYmxvZ2dlZApibG9nZ2VyL01TCmJsb2dnaW5nCmJsb2tlL01TCmJsb2tpc2gKYmxvbmQvUFRNUlMKYmxvbmRlL01TCmJsb25kaXNoCmJsb25kbmVzcy9NCmJsb29kL0dNRFMKYmxvb2RiYXRoL00KYmxvb2RiYXRocwpibG9vZGN1cmRsaW5nCmJsb29kaG91bmQvU00KYmxvb2RpbHkKYmxvb2RpbmVzcy9NCmJsb29kbGVzcy9ZUApibG9vZGxlc3NuZXNzL00KYmxvb2RsZXR0aW5nL00KYmxvb2RsaW5lL1NNCmJsb29kbW9iaWxlL01TCmJsb29kc2hlZC9NCmJsb29kc2hvdApibG9vZHN0YWluL1NNRApibG9vZHN0b2NrL00KYmxvb2RzdHJlYW0vU00KYmxvb2RzdWNrZXIvU00KYmxvb2RzdWNraW5nCmJsb29kdGhpcnN0aWx5CmJsb29kdGhpcnN0aW5lc3MvTQpibG9vZHRoaXJzdHkvUlBUCmJsb29keS9QVEdEUlMKYmxvb20vWkdNRFJTCmJsb29tZXIvTQpibG9vcC9aR01EUlMKYmxvb3Blci9NCmJsb3Nzb20vR01EUwpibG9zc29teQpibG90L1NNCmJsb3RjaC9HTURTCmJsb3RjaHkvVFIKYmxvdHRlZApibG90dGVyL01TCmJsb3R0aW5nCmJsb3R0bwpibG91c2UvTUdEUwpibG93L1NaR01SCmJsb3dlci9NCmJsb3dmbHkvU00KYmxvd2d1bi9NUwpibG93aGFyZC9NUwpibG93aG9sZS9TCmJsb3dqb2IKYmxvd2xhbXAvUwpibG93bgpibG93b3V0L1NNCmJsb3dwaXBlL1NNCmJsb3d0b3JjaC9NUwpibG93dXAvTVMKYmxvd3kvVFIKYmxvd3p5L1JUCmJsdWJiZXIvR1NNRApibHViYmVyeQpibHVkZ2Vvbi9NREdTCmJsdWUvRFJTUE1URwpibHVlYmVsbC9NUwpibHVlYmVycnkvU00KYmx1ZWJpcmQvTVMKYmx1ZWJvbm5ldC9TTQpibHVlYm90dGxlL1NNCmJsdWVmaXNoL01TCmJsdWVnaWxsL01TCmJsdWVncmFzcy9NCmJsdWVpc2gKYmx1ZWphY2tldC9TTQpibHVlamVhbnMvTQpibHVlbmVzcy9NCmJsdWVub3NlL01TCmJsdWVwb2ludC9NUwpibHVlcHJpbnQvTURHUwpibHVlc3RvY2tpbmcvU00KYmx1ZXN5L1JUCmJsdWV0L01TCmJsdWZmL1pUR1BNRFJZUwpibHVmZmVyL00KYmx1ZmZuZXNzL00KYmx1aW5nL00KYmx1aXNoCmJsdW5kZXIvTURSWkdTCmJsdW5kZXJidXNzL01TCmJsdW5kZXJlci9NCmJsdW50L1BUR0RSWVMKYmx1bnRuZXNzL00KYmx1ci9TTQpibHVyYi9NUwpibHVycmVkCmJsdXJyaW5lc3MvTQpibHVycmluZwpibHVycnkvVFJQCmJsdXJ0L0dEUwpibHVzaC9aR01EUlMKYmx1c2hlci9NCmJsdXN0ZXIvTURSU1pHCmJsdXN0ZXJlci9NCmJsdXN0ZXJvdXMKYmx1c3RlcnkKYmx2ZApib2EvU00KYm9hci9TTQpib2FyZC9aR01EUlMKYm9hcmRlci9NCmJvYXJkaW5nL00KYm9hcmRpbmdob3VzZS9NUwpib2FyZHJvb20vTVMKYm9hcmR3YWxrL01TCmJvYXN0L1pHTURSUwpib2FzdGVyL00KYm9hc3RmdWwvUFkKYm9hc3RmdWxuZXNzL00KYm9hdC9TWkdNRFIKYm9hdGVyL00KYm9hdGhvdXNlL01TCmJvYXRpbmcvTQpib2F0bG9hZC9TCmJvYXRtYW4vTQpib2F0bWVuCmJvYXRzd2Fpbi9TTQpib2F0eWFyZC9TCmJvYi9TTQpib2JiZWQKYm9iYmluL01TCmJvYmJpbmcKYm9iYmxlL01HRFMKYm9iYnkvU00KYm9iYnlzb3hlci9TTQpib2JjYXQvTVMKYm9ib2xpbmsvU00KYm9ic2xlZC9TTQpib2JzbGVkZGVkCmJvYnNsZWRkZXIvTVMKYm9ic2xlZGRpbmcKYm9ic2xlaWdoL00KYm9ic2xlaWdocwpib2J0YWlsL1NNCmJvYndoaXRlL01TCmJvY2NpZS9NCmJvY2svTQpib2QvU01ERwpib2RhY2lvdXMKYm9kZS9TCmJvZGVnYS9NUwpib2RnZS9HRFMKYm9kaWNlL01TCmJvZGlseQpib2RraW4vTVMKYm9keS9EU00KYm9keWJ1aWxkZXIvU00KYm9keWJ1aWxkaW5nL00KYm9keWd1YXJkL01TCmJvZHlzdWl0L1NNCmJvZHl3b3JrL00KYm9mZmluL1MKYm9mZm8KYm9nL1NNCmJvZ2EKYm9nZXkvR01EUwpib2dleW1hbi9NCmJvZ2V5bWVuCmJvZ2dlZApib2dnaW5nCmJvZ2dsZS9HRFMKYm9nZ3kvVFIKYm9naWUvTVMKYm9nb24KYm9nb3NpdHkKYm9ndXMKYm9neW1hbi9NCmJvZ3ltZW4KYm9oZW1pYW4vU00KYm9oZW1pYW5pc20vTQpib2lsL1NKWkdNRFIKYm9pbGVyL00KYm9pbGVybWFrZXIvU00KYm9pbGVycGxhdGUvTQpib2luay9HRFMKYm9pc3Rlcm91cy9ZUApib2lzdGVyb3VzbmVzcy9NCmJvbGEvU00KYm9sZC9QVFJZCmJvbGRmYWNlL0RNCmJvbGRuZXNzL00KYm9sZS9TTQpib2xlcm8vTVMKYm9saXZhci9NUwpib2xpdmFyZXMKYm9sbC9TTQpib2xsYXJkL1MKYm9sbGl4L0dNRFMKYm9sbG9ja2luZy9TCmJvbGxvY2tzCmJvbG9nbmEvTQpib2xzaGllCmJvbHN0ZXIvR01EUwpib2x0J3MKYm9sdC9VU0dECmJvbHRob2xlL1MKYm9sdXMvTVMKYm9tYi9TSlpHTURSCmJvbWJhcmQvR0RMUwpib21iYXJkaWVyL01TCmJvbWJhcmRtZW50L1NNCmJvbWJhc3QvTQpib21iYXN0aWMKYm9tYmFzdGljYWxseQpib21iZXIvTQpib21icHJvb2YKYm9tYnNoZWxsL1NNCmJvbWJzaXRlL1MKYm9uYW56YS9NUwpib25ib24vTVMKYm9uY2UvUwpib25kL1NHTUQKYm9uZGFnZS9NCmJvbmRob2xkZXIvTVMKYm9uZGluZy9NCmJvbmRtYW4vTQpib25kbWVuCmJvbmRzbWFuL00KYm9uZHNtZW4KYm9uZHdvbWFuL00KYm9uZHdvbWVuCmJvbmUvRFJTTVpHCmJvbmVoZWFkL1NNRApib25lbGVzcwpib25lci9NCmJvbmVzaGFrZXIvUwpib25leWFyZApib25maXJlL01TCmJvbmcvU0dNRApib25nby9NUwpib25ob21pZS9NCmJvbmluZXNzL00KYm9uaXRvL01TCmJvbmsvU1pHRApib25uZXQvTVMKYm9ubnkvVFIKYm9ub2JvL01TCmJvbnNhaS9NCmJvbnVzL01TCmJvbnkvUFRSCmJvby9TTURIRwpib29iL1NHTUQKYm9vYnkvU00KYm9vZGxlL01TCmJvb2dlci9TCmJvb2dleW1hbi9NCmJvb2dleW1lbgpib29naWUvTURTCmJvb2dpZWluZwpib29naWVtYW4vTQpib29ob28vR01EUwpib29rL1NCSkdNRApib29rYmluZGVyL1NNCmJvb2tiaW5kZXJ5L1NNCmJvb2tiaW5kaW5nL00KYm9va2Nhc2UvTVMKYm9va2VuZC9NUwpib29raWUvTVMKYm9va2luZy9NCmJvb2tpc2gKYm9va2tlZXBlci9NUwpib29ra2VlcGluZy9NCmJvb2tsZXQvTVMKYm9va21ha2VyL1NNCmJvb2ttYWtpbmcvTQpib29rbWFyay9TTURHCmJvb2ttb2JpbGUvU00KYm9va3BsYXRlL01TCmJvb2tzZWxsZXIvTVMKYm9va3NoZWxmL00KYm9va3NoZWx2ZXMKYm9va3Nob3AvU00KYm9va3N0YWxsL1MKYm9va3N0b3JlL01TCmJvb2t3b3JtL1NNCmJvb20vU1pHTURSCmJvb21ib3gvTVMKYm9vbWVyYW5nL01ER1MKYm9vbi9TTQpib29uZG9ja3MvTQpib29uZG9nZ2xlL01aR0RSUwpib29uZG9nZ2xlci9NCmJvb25pZXMvTQpib29yL1NNCmJvb3Jpc2gvUFkKYm9vcmlzaG5lc3MvTVMKYm9vc3QvWkdNRFJTCmJvb3N0ZXIvTQpib290J3MKYm9vdC9BU0dECmJvb3RibGFjay9TTQpib290ZWUvTVMKYm9vdGgvTQpib290aHMKYm9vdGxhY2UvUwpib290bGVnL01TCmJvb3RsZWdnZWQKYm9vdGxlZ2dlci9NUwpib290bGVnZ2luZy9NCmJvb3RsZXNzCmJvb3RzdHJhcC9NUwpib290c3RyYXBwZWQKYm9vdHN0cmFwcGluZwpib290eS9TTQpib296ZS9NWkdEUlMKYm9vemVyL00KYm9venkvVFIKYm9wL1NNCmJvcHBlZApib3BwaW5nCmJvcmF4L00KYm9yZGVsbG8vTVMKYm9yZGVyL0dNRFMKYm9yZGVybGFuZC9NUwpib3JkZXJsaW5lL01TCmJvcmUvRFJTTVpHCmJvcmVkb20vTQpib3JlaG9sZS9TCmJvcmVyL00KYm9yaW5nL1kKYm9ybi9JQVUKYm9ybmUKYm9yb24vTQpib3JvdWdoL00KYm9yb3VnaHMKYm9ycm93L1NEUlpHSgpib3Jyb3dlci9NCmJvcnJvd2luZy9NCmJvcnNjaHQvTQpib3JzdGFsL1MKYm9yem9pL1NNCmJvc2gvTQpib3NvbSdzCmJvc29tL1VTCmJvc29teQpib3NzL0RTR00KYm9zc2lseQpib3NzaW5lc3MvTQpib3NzaXNtL00KYm9zc3kvUlRQCmJvdC9TCmJvdGFuaWMKYm90YW5pY2FsL1kKYm90YW5pc3QvU00KYm90YW55L00KYm90Y2gvRFJTWkdNCmJvdGNoZXIvTQpib3RoCmJvdGhlci9TTURHCmJvdGhlcmF0aW9uCmJvdGhlcnNvbWUKYm90bmV0L1NNCmJvdHRsZS9EUlNNWkcKYm90dGxlbmVjay9NUwpib3R0bGVyL00KYm90dG9tL1NNREcKYm90dG9tbGVzcwpib3R1bGludW0KYm90dWxpc20vTQpib3Vkb2lyL1NNCmJvdWZmYW50L1NNCmJvdWdhaW52aWxsZWEvTVMKYm91Z2gvTQpib3VnaHMKYm91Z2h0CmJvdWlsbGFiYWlzc2UvU00KYm91aWxsb24vTVMKYm91bGRlci9TTQpib3VsZXMKYm91bGV2YXJkL1NNCmJvdW5jZS9EUlNNWkcKYm91bmNlci9NCmJvdW5jaWx5CmJvdW5jaW5lc3MvTQpib3VuY3kvUlRQCmJvdW5kL0FTTUdECmJvdW5kYXJ5L1NNCmJvdW5kZW4KYm91bmRlci9TTQpib3VuZGxlc3MvUFkKYm91bmRsZXNzbmVzcy9NCmJvdW50ZW91cy9ZUApib3VudGVvdXNuZXNzL00KYm91bnRpZnVsL1lQCmJvdW50aWZ1bG5lc3MvTQpib3VudHkvU00KYm91cXVldC9TTQpib3VyYm9uL1NNCmJvdXJnZW9pcy9NCmJvdXJnZW9pc2llL00KYm91c3Ryb3BoZWRvbgpib3V0L01TCmJvdXRpcXVlL1NNCmJvdXRvbm5pZXJlL01TCmJvdXpvdWtpL01TCmJvdmluZS9TTQpib3Z2ZXIKYm93L1pHU01EUgpib3dkbGVyaXphdGlvbi9NUwpib3dkbGVyaXplL0RTRwpib3dlZC9VCmJvd2VsL1NNCmJvd2VyL00KYm93bC9NRFJaR1MKYm93bGVnL1NNCmJvd2xlZ2dlZApib3dsZXIvTQpib3dsZnVsL1NNCmJvd2xpbmUvU00KYm93bGluZy9NCmJvd21hbi9NCmJvd21lbgpib3dzcHJpdC9TTQpib3dzdHJpbmcvU00KYm93d293L1NNCmJveC9aR01ETlJTCmJveGNhci9TTQpib3hlci9NCmJveGluZy9NCmJveGxpa2UKYm94cm9vbS9TCmJveHdvb2QvTQpib3h5L1JUCmJveS9TTQpib3ljb3R0L1NHTUQKYm95ZnJpZW5kL01TCmJveWhvb2QvU00KYm95aXNoL1lQCmJveWlzaG5lc3MvTQpib3lzZW5iZXJyeS9TTQpib3pvL01TCmJwbQpicHMKYnJhL1NNCmJyYWNlL01aR0RSUwpicmFjZWxldC9NUwpicmFjZXIvTQpicmFjZXJvL01TCmJyYWNrZW4vTQpicmFja2V0L0dNRFMKYnJhY2tpc2gvUApicmFja2lzaG5lc3MvTQpicmFjdC9NUwpicmFkL1NNCmJyYWRhd2wvUwpicmFkeWNhcmRpYQpicmFlL1NNCmJyYWcvU00KYnJhZ2dhZG9jaW8vU00KYnJhZ2dhcnQvU00KYnJhZ2dlZApicmFnZ2VyL01TCmJyYWdnaW5nCmJyYWlkL0dNRFMKYnJhaWRpbmcvTQpicmFpbGxlL00KYnJhaW4vR01EUwpicmFpbmNoaWxkL00KYnJhaW5jaGlsZHJlbi9NCmJyYWluaW5lc3MvTQpicmFpbmxlc3MvWQpicmFpbnBvd2VyCmJyYWluc3Rvcm0vU01ERwpicmFpbnN0b3JtaW5nL00KYnJhaW50ZWFzZXIvU00KYnJhaW53YXNoL0RTRwpicmFpbndhc2hpbmcvTQpicmFpbndhdmUvUwpicmFpbnkvUFRSCmJyYWlzZS9HRFMKYnJha2UvTUdEUwpicmFrZW1hbi9NCmJyYWtlbWVuCmJyYW1ibGUvTVMKYnJhbWJseQpicmFuL00KYnJhbmNoL0dNRFMKYnJhbmNobGlrZQpicmFuZC9aR01EUlMKYnJhbmRlZC9VCmJyYW5kZXIvTQpicmFuZGlzaC9EU0cKYnJhbmR5L0dEU00KYnJhc2gvUFRSWQpicmFzaG5lc3MvTQpicmFzcy9NUwpicmFzc2VyaWUvTVMKYnJhc3NpZXJlL01TCmJyYXNzaWx5CmJyYXNzaW5lc3MvTQpicmFzc3kvUFRSCmJyYXQvU00KYnJhdHR5L1JUCmJyYXR3dXJzdC9TTQpicmF2YWRvL00KYnJhdmUvR1BNWURUUlMKYnJhdmVuZXNzL00KYnJhdmVyeS9NCmJyYXZvL1NNCmJyYXZ1cmEvU00KYnJhd2wvU0RSWkdNCmJyYXdsZXIvTQpicmF3bi9NCmJyYXduaW5lc3MvTQpicmF3bnkvUlRQCmJyYXkvREdTTQpicmF6ZS9EUlNaRwpicmF6ZW4vU0RZR1AKYnJhemVubmVzcy9NCmJyYXplci9NCmJyYXppZXIvU00KYnJlYWNoL0dNRFMKYnJlYWQvR01ESFMKYnJlYWRiYXNrZXQvU00KYnJlYWRib2FyZC9TTQpicmVhZGJveC9NUwpicmVhZGNydW1iL01TCmJyZWFkZnJ1aXQvU00KYnJlYWRsaW5lL01TCmJyZWFkdGgvTQpicmVhZHRocwpicmVhZHdpbm5lci9TTQpicmVhay9CTVpHUlMKYnJlYWthYmxlL01TCmJyZWFrYWdlL01TCmJyZWFrYXdheS9NUwpicmVha2Rvd24vTVMKYnJlYWtlci9NCmJyZWFrZmFzdC9NREdTCmJyZWFrZnJvbnQvTVMKYnJlYWtuZWNrCmJyZWFrb3V0L01TCmJyZWFrcG9pbnRzCmJyZWFrdGhyb3VnaC9NCmJyZWFrdGhyb3VnaHMKYnJlYWt1cC9TTQpicmVha3dhdGVyL1NNCmJyZWFtL01TCmJyZWFzdC9TTURHCmJyZWFzdGJvbmUvTVMKYnJlYXN0ZmVkCmJyZWFzdGZlZWQvR1MKYnJlYXN0cGxhdGUvU00KYnJlYXN0c3Ryb2tlL1NNCmJyZWFzdHdvcmsvTVMKYnJlYXRoL01EUlNaR0IKYnJlYXRoYWx5emUvWkdEUlMKYnJlYXRoZQpicmVhdGhlci9NCmJyZWF0aGluZy9NCmJyZWF0aGxlc3MvUFkKYnJlYXRobGVzc25lc3MvTQpicmVhdGhzCmJyZWF0aHRha2luZy9ZCmJyZWF0aHkvUlQKYnJlZC9JCmJyZWVjaC9NUwpicmVlZC9TUlpHTQpicmVlZGVyL00KYnJlZWRpbmcvSU0KYnJlZXplL0RTTUcKYnJlZXpld2F5L1NNCmJyZWV6aWx5CmJyZWV6aW5lc3MvTQpicmVlenkvUlRQCmJyZXRocmVuCmJyZXZlL1NNCmJyZXZldC9TTQpicmV2ZXR0ZWQKYnJldmV0dGluZwpicmV2aWFyeS9TTQpicmV2aXR5L00KYnJldy9NRFJaR1MKYnJld2VyL00KYnJld2VyeS9TTQpicmV3cHViL1NNCmJyaWJlL0RSU01aRwpicmliZXIvTQpicmliZXJ5L00KYnJpY2svU01ERwpicmlja2JhdC9TTQpicmlja2llL1MKYnJpY2tsYXllci9NUwpicmlja2xheWluZy9NCmJyaWNrd29yay9NCmJyaWNreWFyZC9TCmJyaWRhbC9TTQpicmlkZS9TTQpicmlkZWdyb29tL1NNCmJyaWRlc21haWQvTVMKYnJpZGdlL0RTTUcKYnJpZGdlYWJsZS9VCmJyaWRnZWhlYWQvU00KYnJpZGdld29yay9NCmJyaWRsZS9EU01HCmJyaWRsZWQvVQpicmlkbGV3YXkvUwpicmllL01aUgpicmllZidzCmJyaWVmL0NTRFRHSgpicmllZmNhc2UvU00KYnJpZWZlcgpicmllZmluZy9DTQpicmllZmx5CmJyaWVmbmVzcy9NCmJyaWVyL00KYnJpZy9NUwpicmlnYWRlL1NNCmJyaWdhZGllci9NUwpicmlnYW5kL1NNCmJyaWdhbmRhZ2UvTQpicmlnYW50aW5lL01TCmJyaWdodC9TUE5SWVhUCmJyaWdodGVuL0RSWkcKYnJpZ2h0ZW5lci9NCmJyaWdodG5lc3MvTQpicmlnaHRzL00KYnJpbGwKYnJpbGxpYW5jZS9NCmJyaWxsaWFuY3kvTQpicmlsbGlhbnQvTVlTCmJyaWxsaWFudGluZS9NCmJyaW0vTVMKYnJpbWZ1bApicmltbGVzcwpicmltbWVkCmJyaW1taW5nCmJyaW1zdG9uZS9NCmJyaW5kbGUvRE0KYnJpbmUvTQpicmluZy9TUlpHCmJyaW5nZXIvTQpicmluaW5lc3MvTQpicmluay9TTQpicmlua21hbnNoaXAvTQpicmlueS9SVFAKYnJpb2NoZS9TTQpicmlxdWV0dGUvTVMKYnJpc2svU0RSWVRHUApicmlza2V0L1NNCmJyaXNrbmVzcy9NCmJyaXN0bGUvRFNNRwpicmlzdGx5L1RSCmJyaXRjaGVzL00KYnJpdHRsZS9QUk1UCmJyaXR0bGVuZXNzL00KYnJvL1NNSApicm9hY2gvTURTRwpicm9hZC9TTU5SWVhUUApicm9hZGJhbmQvTQpicm9hZGNhc3QvQU1HUwpicm9hZGNhc3Rlci9NUwpicm9hZGNhc3RpbmcvTQpicm9hZGNsb3RoL00KYnJvYWRlbi9ERwpicm9hZGxvb20vTQpicm9hZG1pbmRlZApicm9hZG5lc3MvTQpicm9hZHNoZWV0L1NNCmJyb2Fkc2lkZS9NR0RTCmJyb2Fkc3dvcmQvU00KYnJvY2FkZS9EU01HCmJyb2Njb2xpL00KYnJvY2hldHRlL1NNCmJyb2NodXJlL01TCmJyb2dhbi9TTQpicm9ndWUvU00KYnJvaWwvU01EUlpHCmJyb2lsZXIvTQpicm9rZQpicm9rZW4vWVAKYnJva2VuaGVhcnRlZC9ZCmJyb2tlbm5lc3MvTQpicm9rZXIvU01ERwpicm9rZXJhZ2UvTVMKYnJvbGx5L1MKYnJvbWlkZS9TTQpicm9taWRpYwpicm9taW5lL00KYnJvbmMvU00KYnJvbmNoaQpicm9uY2hpYWwKYnJvbmNoaXRpYwpicm9uY2hpdGlzL00KYnJvbmNodXMvTQpicm9uY28vU00KYnJvbmNvYnVzdGVyL1NNCmJyb250b3NhdXIvTVMKYnJvbnRvc2F1cnVzL01TCmJyb256ZS9EU01HCmJyb29jaC9NUwpicm9vZC9TTURSWkcKYnJvb2Rlci9NCmJyb29kaWx5CmJyb29kaW5nL01ZCmJyb29kbWFyZS9NUwpicm9vZHkvUk1QVApicm9vay9TTURHCmJyb29rbGV0L1NNCmJyb29tL1NNCmJyb29tc3RpY2svTVMKYnJvdGgvTVJaCmJyb3RoZWwvTVMKYnJvdGhlci9NWQpicm90aGVyaG9vZC9NUwpicm90aGVybGluZXNzL00KYnJvdGhzCmJyb3VnaGFtL1NNCmJyb3VnaHQKYnJvdWhhaGEvU00KYnJvdy9NUwpicm93YmVhdC9TTkcKYnJvd24vU01EUlBURwpicm93bmZpZWxkCmJyb3duaWUvTVMKYnJvd25pc2gKYnJvd25uZXNzL00KYnJvd25vdXQvU00KYnJvd25zdG9uZS9NUwpicm93c2UvRFJTTVpHCmJyb3dzZXIvTQpicnIKYnJ1aW4vU00KYnJ1aXNlL0RSU01aRwpicnVpc2VyL00KYnJ1aXNpbmcvTQpicnVpdC9TREcKYnJ1bmNoL01EU0cKYnJ1bmV0L1NNCmJydW5ldHRlL01TCmJydW50L00KYnJ1c2gvTURTRwpicnVzaG9mZi9TTQpicnVzaHN0cm9rZS9TCmJydXNod29vZC9NCmJydXNod29yay9NCmJydXNxdWUvUlBZVApicnVzcXVlbmVzcy9NCmJydXRhbC9ZCmJydXRhbGl0eS9TTQpicnV0YWxpemF0aW9uL00KYnJ1dGFsaXplL0dEUwpicnV0ZS9TTQpicnV0aXNoL1BZCmJydXRpc2huZXNzL00KYnUKYnViL1NNCmJ1YmJsZS9EU01HCmJ1YmJsZWd1bS9NCmJ1YmJseS9STVQKYnViby9NCmJ1Ym9lcwpidWNjYW5lZXIvU0dNRApidWNrL01ER1MKYnVja2Fyb28vU00KYnVja2JvYXJkL01TCmJ1Y2tldC9TR01ECmJ1Y2tldGZ1bC9NUwpidWNrZXllL01TCmJ1Y2tsZSdzCmJ1Y2tsZS9VRFNHCmJ1Y2tsZXIvTVMKYnVja3JhbS9NCmJ1Y2tzYXcvTVMKYnVja3Nob3QvTQpidWNrc2tpbi9NUwpidWNrdGVldGgKYnVja3Rvb3RoL01ECmJ1Y2t3aGVhdC9NCmJ1Y2t5YmFsbC9TTQpidWNvbGljL01TCmJ1Y29saWNhbGx5CmJ1ZC9TTQpidWRkZWQKYnVkZGluZy9TCmJ1ZGR5L1NNCmJ1ZGdlL0RTRwpidWRnZXJpZ2FyL01TCmJ1ZGdldC9TR01ECmJ1ZGdldGFyeQpidWRnaWUvU00KYnVmZi9BTURHUwpidWZmYWxvL01ERwpidWZmYWxvZXMKYnVmZmVyL1NNREcKYnVmZmV0L1NNREdKCmJ1ZmZvb24vU00KYnVmZm9vbmVyeS9NCmJ1ZmZvb25pc2gKYnVnJ3MKYnVnL0NTCmJ1Z2Fib28vU00KYnVnYmVhci9TTQpidWdnZWQvQwpidWdnZXIvU01ERwpidWdnZXJ5CmJ1Z2dpbmcvQwpidWdneS9SU01UCmJ1Z2xlL0RSU01aRwpidWdsZXIvTQpidWlsZC9TTVJaR0oKYnVpbGRlci9NCmJ1aWxkaW5nL00KYnVpbGR1cC9TTQpidWlsdC9BSQpidWlsdGluCmJ1bGIvTVMKYnVsYm91cwpidWxnZS9EU01HCmJ1bGd5L1JUCmJ1bGltYXJleGlhL00KYnVsaW1pYS9NCmJ1bGltaWMvU00KYnVsay9NREdTCmJ1bGtoZWFkL01TCmJ1bGtpbmVzcy9NCmJ1bGt5L1JUUApidWxsL01ER1MKYnVsbGRvZy9TTQpidWxsZG9nZ2VkCmJ1bGxkb2dnaW5nCmJ1bGxkb3plL1pHRFJTCmJ1bGxkb3plci9NCmJ1bGxldC9TTQpidWxsZXRpbi9NREdTCmJ1bGxldHByb29mL1NERwpidWxsZmlnaHQvU01SWkcKYnVsbGZpZ2h0ZXIvTQpidWxsZmlnaHRpbmcvTQpidWxsZmluY2gvTVMKYnVsbGZyb2cvTVMKYnVsbGhlYWQvTURTCmJ1bGxoZWFkZWQvUFkKYnVsbGhlYWRlZG5lc3MvTQpidWxsaG9ybi9NUwpidWxsaW9uL00KYnVsbGlzaC9ZUApidWxsaXNobmVzcy9NCmJ1bGxvY2svU00KYnVsbHBlbi9TTQpidWxscmluZy9NUwpidWxsc2hpdC9NUyEKYnVsbHNoaXR0ZWQvIQpidWxsc2hpdHRlci9TTSEKYnVsbHNoaXR0aW5nLyEKYnVsbHdoaXAvUwpidWxseS9EU01HCmJ1bHJ1c2gvTVMKYnVsd2Fyay9NUwpidW0vU00KYnVtYmFnL1MKYnVtYmxlL0RSU1pHCmJ1bWJsZWJlZS9TTQpidW1ibGVyL00KYnVtZgpidW1tZWQKYnVtbWVyL1NNCmJ1bW1lc3QKYnVtbWluZwpidW1wL01EUlpHUwpidW1wZXIvTQpidW1waApidW1waW5lc3MvTQpidW1wa2luL01TCmJ1bXB0aW91cy9QWQpidW1wdGlvdXNuZXNzL00KYnVtcHkvUFJUCmJ1bi9TTQpidW5jaC9NRFNHCmJ1bmNoeS9SVApidW5jby9TTURHCmJ1bmRsZS9EU01HCmJ1bmcvTURHUwpidW5nYWxvdy9NUwpidW5nZWUvU00KYnVuZ2hvbGUvTVMKYnVuZ2xlL0RSU01aRwpidW5nbGVyL00KYnVuaW9uL1NNCmJ1bmsncwpidW5rL0NER1MKYnVua2VyL1NNCmJ1bmtob3VzZS9TTQpidW5rdW0vTQpidW5ueS9TTQpidW50L01ER1NKCmJ1bnRpbmcvTQpidW95L01ER1MKYnVveWFuY3kvTQpidW95YW50L1kKYnVyL1NNWQpidXJibGUvRFNNRwpidXJicy9NCmJ1cmRlbidzCmJ1cmRlbi9VU0dECmJ1cmRlbnNvbWUKYnVyZG9jay9NCmJ1cmVhdS9TTQpidXJlYXVjcmFjeS9TTQpidXJlYXVjcmF0L01TCmJ1cmVhdWNyYXRpYwpidXJlYXVjcmF0aWNhbGx5CmJ1cmVhdWNyYXRpemF0aW9uL00KYnVyZWF1Y3JhdGl6ZS9HRFMKYnVyZy9NUlpTCmJ1cmdlb24vRFNHCmJ1cmdlci9NCmJ1cmdoL01SWgpidXJnaGVyL00KYnVyZ2hzCmJ1cmdsYXIvTVMKYnVyZ2xhcml6ZS9HRFMKYnVyZ2xhcnByb29mCmJ1cmdsYXJ5L1NNCmJ1cmdsZS9EU0cKYnVyZ29tYXN0ZXIvU00KYnVyZ3VuZHkvU00KYnVyaWFsL0FTTQpidXJrYS9TTQpidXJsL01EUwpidXJsYXAvTQpidXJsZXNxdWUvTUdEUwpidXJsaW5lc3MvTQpidXJseS9SUFQKYnVybi9NRFJaR1NCCmJ1cm5hYmxlL1NNCmJ1cm5lci9NCmJ1cm5pc2gvWkdNRFJTCmJ1cm5pc2hlci9NCmJ1cm5vb3NlL01TCmJ1cm5vdXQvTVMKYnVybnQKYnVycC9NREdTCmJ1cnFhL1NNCmJ1cnIvTURHUwpidXJyaXRvL01TCmJ1cnJvL1NNCmJ1cnJvdy9TTURSWkcKYnVycm93ZXIvTQpidXJzYS9NCmJ1cnNhZQpidXJzYXIvU00KYnVyc2FyeS9TTQpidXJzaXRpcy9NCmJ1cnN0L1NNRwpidXJ5L0FEU0cKYnVzL0FNUwpidXNib3kvU00KYnVzYnkvU00KYnVzZWQKYnVzZ2lybC9NUwpidXNoL01EU0dKCmJ1c2hlbC9TR01ECmJ1c2hpbmVzcy9NCmJ1c2hpbmcvTQpidXNobWFuL00KYnVzaG1hc3Rlci9TTQpidXNobWVuCmJ1c2h3aGFjay9EUlNaRwpidXNod2hhY2tlci9NCmJ1c2h5L1JQVApidXNpbHkKYnVzaW5lc3MvTVMKYnVzaW5lc3NsaWtlCmJ1c2luZXNzbWFuL00KYnVzaW5lc3NtZW4KYnVzaW5lc3NwZXJzb24vU00KYnVzaW5lc3N3b21hbi9NCmJ1c2luZXNzd29tZW4KYnVzaW5nL00KYnVzay9EUlpHUwpidXNraW4vU00KYnVzbG9hZC9TCmJ1c3MvTQpidXN0L01EUlpHUwpidXN0ZXIvTQpidXN0bGUvRFNNRwpidXN0eS9SWlQKYnVzeS9EUlNUR1AKYnVzeWJvZHkvU00KYnVzeW5lc3MvTQpidXN5d29yay9NCmJ1dC9BQ1MKYnV0YW5lL00KYnV0Y2gvTVJTWgpidXRjaGVyL01ERwpidXRjaGVyeS9TTQpidXRsZXIvU00KYnV0dC9NRFJaR1MKYnV0dGUvU00KYnV0dGVkL0EKYnV0dGVyL01ERwpidXR0ZXJiYWxsL01TCmJ1dHRlcmNyZWFtCmJ1dHRlcmN1cC9TTQpidXR0ZXJmYXQvTQpidXR0ZXJmaW5nZXJlZApidXR0ZXJmaW5nZXJzL00KYnV0dGVyZmx5L0dEU00KYnV0dGVybWlsay9NCmJ1dHRlcm51dC9TTQpidXR0ZXJzY290Y2gvTQpidXR0ZXJ5L1RSU00KYnV0dGluZy9BCmJ1dHRvY2svU00KYnV0dG9uJ3MKYnV0dG9uL1VTREcKYnV0dG9uaG9sZS9EU01HCmJ1dHRvbndvb2QvTVMKYnV0dHJlc3MvTURTRwpidXR0eS9TCmJ1eG9tCmJ1eS9aR1NNUgpidXliYWNrL1NNCmJ1eWVyL00KYnV5b3V0L1NNCmJ1enovTURSU1pHCmJ1enphcmQvTVMKYnV6emVyL00KYnV6emtpbGwvU00KYnV6endvcmQvU00KYngKYnhzCmJ5L00KYnllL1NNCmJ5Z29uZS9TTQpieWxhdy9TTQpieWxpbmUvU00KYnlwYXNzL0dNRFMKYnlwYXRoL00KYnlwYXRocwpieXBsYXkvTQpieXByb2R1Y3QvTVMKYnlyZS9TCmJ5cm9hZC9TTQpieXN0YW5kZXIvTVMKYnl0ZS9NUwpieXdheS9TTQpieXdvcmQvU00KYnl6YW50aW5lCmMvSUVTCmNhCmNhYi9TTVJaCmNhYmFsL01TCmNhYmFsYSdzCmNhYmFsbGVyby9NUwpjYWJhbmEvU00KY2FiYXJldC9TTQpjYWJiYWdlL01TCmNhYmJlZApjYWJiaW5nCmNhYmJ5L1NNCmNhYmRyaXZlci9TTQpjYWJpbi9NUwpjYWJpbmV0L1NNCmNhYmluZXRtYWtlci9NUwpjYWJpbmV0bWFraW5nL00KY2FiaW5ldHJ5L00KY2FiaW5ldHdvcmsvTQpjYWJsZS9NR0RTCmNhYmxlY2FzdC9HTVMKY2FibGVncmFtL01TCmNhYm9jaG9uL1NNCmNhYm9vZGxlL00KY2Fib29zZS9TTQpjYWJyaW9sZXQvU00KY2Fic3RhbmQvU00KY2FjYW8vTVMKY2FjaGUvTUdEUwpjYWNoZXBvdC9TTQpjYWNoZXQvTVMKY2Fja2xlL01aR0RSUwpjYWNrbGVyL00KY2Fjb3Bob25vdXMKY2Fjb3Bob255L1NNCmNhY3RpCmNhY3R1cy9NCmNhZC9TTQpjYWRhdmVyL1NNCmNhZGF2ZXJvdXMKY2FkZGllL01EUwpjYWRkaXNoL1lQCmNhZGRpc2huZXNzL00KY2FkZHlpbmcKY2FkZW5jZS9EU00KY2FkZW56YS9TTQpjYWRldC9NUwpjYWRnZS9aR0RSUwpjYWRnZXIvTQpjYWRtaXVtL00KY2FkcmUvTVMKY2FkdWNlaQpjYWR1Y2V1cy9NCmNhZXN1cmEvU00KY2FmZS9TTQpjYWZldGVyaWEvTVMKY2FmZXRpZXJlL1MKY2FmZi9DUwpjYWZmZWluYXRlZApjYWZmZWluZS9NCmNhZnRhbi9NUwpjYWdlL0RTTUcKY2FnZXkKY2FnaWVyCmNhZ2llc3QKY2FnaWx5CmNhZ2luZXNzL00KY2Fnb3VsZS9TCmNhaG9vdC9NUwpjYWltYW4vTVMKY2Fpcm4vTVMKY2Fpc3Nvbi9TTQpjYWl0aWZmL1NNCmNham9sZS9aR0xEUlMKY2Fqb2xlbWVudC9NCmNham9sZXIvTQpjYWpvbGVyeS9NCmNha2UvRFNNRwpjYWtld2Fsay9TTQpjYWwKY2FsYWJhc2gvTVMKY2FsYWJvb3NlL1NNCmNhbGFtYXJpL1NNCmNhbGFtaW5lL00KY2FsYW1pdG91cy9ZCmNhbGFtaXR5L1NNCmNhbGNhcmVvdXMKY2FsY2lmZXJvdXMKY2FsY2lmaWNhdGlvbi9NCmNhbGNpZnkvR05EUwpjYWxjaW1pbmUvRFNNRwpjYWxjaW5lL0RTRwpjYWxjaXRlL00KY2FsY2l1bS9NCmNhbGN1bGFibGUvSQpjYWxjdWxhdGUvQUdOVkRTWApjYWxjdWxhdGVkL1kKY2FsY3VsYXRpbmcvWQpjYWxjdWxhdGlvbi9BTQpjYWxjdWxhdG9yL1NNCmNhbGN1bGkKY2FsY3VsdXMvTQpjYWxkZXJhL1NNCmNhbGVuZGFyL01ER1MKY2FsZW5kZXIncwpjYWxmL00KY2FsZnNraW4vTQpjYWxpYmVyL1NNCmNhbGlicmF0ZS9HTkRTWApjYWxpYnJhdGlvbi9NCmNhbGlicmF0b3IvU00KY2FsaWNvL00KY2FsaWNvZXMKY2FsaWZvcm5pdW0vTQpjYWxpcGVyL1NHTUQKY2FsaXBoL00KY2FsaXBoYXRlL01TCmNhbGlwaHMKY2FsaXN0aGVuaWMvUwpjYWxpc3RoZW5pY3MvTQpjYWxrL1NHTUQKY2FsbC9BU0dNRApjYWxsYS9NUwpjYWxsYWJsZQpjYWxsYmFjay9NUwpjYWxsZWQvVQpjYWxsZXIvTVMKY2FsbGlncmFwaGVyL1NNCmNhbGxpZ3JhcGhpYwpjYWxsaWdyYXBoaXN0L01TCmNhbGxpZ3JhcGh5L00KY2FsbGluZy9TTQpjYWxsaW9wZS9NUwpjYWxsb3NpdHkvU00KY2FsbG91cy9QR0RTWQpjYWxsb3VzbmVzcy9NCmNhbGxvdy9SUFQKY2FsbG93bmVzcy9NCmNhbGx1cy9NRFNHCmNhbG0vUFNUR01EUlkKY2FsbW5lc3MvTQpjYWxvcmljCmNhbG9yaWUvTVMKY2Fsb3JpZmljCmNhbHVtZXQvTVMKY2FsdW1uaWF0ZS9HTkRTCmNhbHVtbmlhdGlvbi9NCmNhbHVtbmlhdG9yL01TCmNhbHVtbmlvdXMKY2FsdW1ueS9TTQpjYWx2ZS9HRFMKY2FseXBzby9NUwpjYWx5eC9NUwpjYW0vU00KY2FtYXJhZGVyaWUvTQpjYW1iZXIvTURTRwpjYW1iaWFsCmNhbWJpdW0vU00KY2FtYnJpYy9NCmNhbWNvcmRlci9TTQpjYW1lCmNhbWVsL01TCmNhbWVsaGFpcgpjYW1lbGxpYS9NUwpjYW1lby9NUwpjYW1lcmEvTVMKY2FtZXJhbWFuL00KY2FtZXJhbWVuCmNhbWVyYXdvbWFuL00KY2FtZXJhd29tZW4KY2FtZXJhd29yawpjYW1pa25pY2tlcnMKY2FtaXNvbGUvU00KY2Ftb3VmbGFnZS9NWkdEUlMKY2Ftb3VmbGFnZXIvTQpjYW1wJ3MKY2FtcC9DU0dECmNhbXBhaWduL1NNRFJaRwpjYW1wYWlnbmVyL00KY2FtcGFuaWxlL1NNCmNhbXBhbm9sb2dpc3QvTVMKY2FtcGFub2xvZ3kvTQpjYW1wZXIvTVMKY2FtcGZpcmUvU00KY2FtcGdyb3VuZC9TTQpjYW1waG9yL00KY2FtcGluZy9NCmNhbXBzaXRlL1NNCmNhbXB1cy9NUwpjYW1weS9UUgpjYW1zaGFmdC9TTQpjYW4ndApjYW4vU01EUlpHCmNhbmFsL01TCmNhbmFsaXphdGlvbi9NCmNhbmFsaXplL0dEUwpjYW5hcGUvTVMKY2FuYXJkL01TCmNhbmFyeS9TTQpjYW5hc3RhL00KY2FuY2FuL01TCmNhbmNlbC9EUlNaRwpjYW5jZWxlci9NCmNhbmNlbGxhdGlvbi9TTQpjYW5jZXIvTVMKY2FuY2Vyb3VzCmNhbmRlbGFicmEvU00KY2FuZGVsYWJydW0vTQpjYW5kaWQvWVAKY2FuZGlkYQpjYW5kaWRhY3kvU00KY2FuZGlkYXRlL01TCmNhbmRpZGF0dXJlL1NNCmNhbmRpZG5lc3MvTQpjYW5kbGUvTVpHRFJTCmNhbmRsZWxpZ2h0L00KY2FuZGxlbGl0CmNhbmRsZXBvd2VyL00KY2FuZGxlci9NCmNhbmRsZXN0aWNrL01TCmNhbmRsZXdpY2svU00KY2FuZG9yL00KY2FuZHkvR0RTTQpjYW5keWZsb3NzCmNhbmUvU00KY2FuZWJyYWtlL01TCmNhbmVyL00KY2FuaW5lL01TCmNhbmlzdGVyL1NNCmNhbmtlci9HTURTCmNhbmtlcm91cwpjYW5uYWJpcy9NUwpjYW5uZWQKY2FubmVsbG9uaS9NCmNhbm5lcnkvU00KY2FubmliYWwvU00KY2FubmliYWxpc20vTQpjYW5uaWJhbGlzdGljCmNhbm5pYmFsaXphdGlvbi9NCmNhbm5pYmFsaXplL0dEUwpjYW5uaWx5L1UKY2FubmluZXNzL00KY2FubmluZwpjYW5ub24vR01EUwpjYW5ub25hZGUvTUdEUwpjYW5ub25iYWxsL1NNCmNhbm5vdApjYW5ueS9VVFIKY2Fub2UvTURTCmNhbm9laW5nCmNhbm9laXN0L1NNCmNhbm9sYS9NCmNhbm9uL01TCmNhbm9uaWNhbC9ZCmNhbm9uaXphdGlvbi9TTQpjYW5vbml6ZS9EU0cKY2Fub29kbGUvRFNHCmNhbm9weS9HRFNNCmNhbnN0CmNhbnQncwpjYW50L0NaUkRHUwpjYW50YWJpbGUKY2FudGFsb3VwZS9TTQpjYW50YW5rZXJvdXMvUFkKY2FudGFua2Vyb3VzbmVzcy9NCmNhbnRhdGEvTVMKY2FudGVlbi9NUwpjYW50ZXIvQ00KY2FudGVyZWQKY2FudGVyaW5nCmNhbnRpY2xlL01TCmNhbnRpbGV2ZXIvTURHUwpjYW50by9NUwpjYW50b24vTUxTCmNhbnRvbmFsCmNhbnRvbm1lbnQvTVMKY2FudG9yL01TCmNhbnZhcy9NR0RTCmNhbnZhc2JhY2svU00KY2FudmFzcy9NRFJTWkcKY2FudmFzc2VyL00KY2FueW9uL01HUwpjYXAvU01EUkJaCmNhcGFiaWxpdGllcwpjYXBhYmlsaXR5L0lNCmNhcGFibGUvSQpjYXBhYmx5L0kKY2FwYWNpb3VzL1BZCmNhcGFjaW91c25lc3MvTQpjYXBhY2l0YW5jZS9NCmNhcGFjaXRpZXMKY2FwYWNpdG9yL1NNCmNhcGFjaXR5L0lNCmNhcGFyaXNvbi9NREdTCmNhcGUvU00KY2FwZXIvR01ECmNhcGVza2luL00KY2FwaWxsYXJpdHkvTQpjYXBpbGxhcnkvU00KY2FwaXRhbC9NU1kKY2FwaXRhbGlzbS9NCmNhcGl0YWxpc3QvU00KY2FwaXRhbGlzdGljCmNhcGl0YWxpc3RpY2FsbHkKY2FwaXRhbGl6YXRpb24vTQpjYXBpdGFsaXplL0FEU0cKY2FwaXRhdGlvbi9DU00KY2FwaXRvbC9TTQpjYXBpdHVsYXRlL0FEU1hHTgpjYXBpdHVsYXRpb24vQU0KY2FwbGV0L01TCmNhcG8vU00KY2Fwb24vTVMKY2FwcGVkL1VBCmNhcHBpbmcvVUEKY2FwcHVjY2luby9TTQpjYXByaWNlL1NNCmNhcHJpY2lvdXMvUFkKY2FwcmljaW91c25lc3MvTQpjYXBzaWN1bS9TTQpjYXBzaXplL0RTRwpjYXBzdGFuL1NNCmNhcHN0b25lL01TCmNhcHN1bGFyCmNhcHN1bGUvRFNNRwpjYXBzdWxpemUvRFNHCmNhcHQKY2FwdGFpbi9TTURHCmNhcHRhaW5jeS9TTQpjYXB0aW9uL1NNREcKY2FwdGlvdXMvWVAKY2FwdGlvdXNuZXNzL00KY2FwdGl2YXRlL0RTR04KY2FwdGl2YXRpb24vTQpjYXB0aXZhdG9yL1NNCmNhcHRpdmUvU00KY2FwdGl2aXR5L1NNCmNhcHRvci9NUwpjYXB0dXJlL0FEU01HCmNhci9TTURSWkcKY2FyYWZlL01TCmNhcmFtZWwvU00KY2FyYW1lbGl6ZS9EU0cKY2FyYXBhY2UvU00KY2FyYXQvTVMKY2FyYXZhbi9TTQpjYXJhdmFuc2FyeS9TTQpjYXJhdmVsL1NNCmNhcmF3YXkvU00KY2FyYmlkZS9TTQpjYXJiaW5lL1NNCmNhcmJvaHlkcmF0ZS9TTQpjYXJib2xpYwpjYXJib24vTVMKY2FyYm9uYWNlb3VzCmNhcmJvbmF0ZS9NR05EUwpjYXJib25hdGlvbi9NCmNhcmJvbmlmZXJvdXMKY2FyYm9uaXplL0dEUwpjYXJib3J1bmR1bS9NCmNhcmJveS9NUwpjYXJicwpjYXJidW5jbGUvU00KY2FyYnVuY3VsYXIKY2FyYnVyZXRvci9TTQpjYXJjYXNzL01TCmNhcmNpbm9nZW4vU00KY2FyY2lub2dlbmljL01TCmNhcmNpbm9nZW5pY2l0eS9NCmNhcmNpbm9tYS9NUwpjYXJkL0VTR01ECmNhcmRhbW9tL1NNCmNhcmRhbW9uL1MKY2FyZGJvYXJkL00KY2FyZGVyL01TCmNhcmRob2xkZXIvUwpjYXJkaWFjCmNhcmRpZS9TCmNhcmRpZ2FuL1NNCmNhcmRpbmFsL1NNWQpjYXJkaW8KY2FyZGlvZ3JhbS9TTQpjYXJkaW9ncmFwaC9NCmNhcmRpb2dyYXBocwpjYXJkaW9sb2dpc3QvTVMKY2FyZGlvbG9neS9NCmNhcmRpb215b3BhdGh5CmNhcmRpb3B1bG1vbmFyeQpjYXJkaW92YXNjdWxhcgpjYXJkc2hhcnAvTVJaUwpjYXJkc2hhcnBlci9NCmNhcmUvU00KY2FyZWVuL0RHUwpjYXJlZXIvTURHUwpjYXJlZXJpc20KY2FyZWVyaXN0L1NNCmNhcmVmcmVlCmNhcmVmdWwvWVAKY2FyZWZ1bGxlcgpjYXJlZnVsbGVzdApjYXJlZnVsbmVzcy9NCmNhcmVnaXZlci9TTQpjYXJlbGVzcy9QWQpjYXJlbGVzc25lc3MvTQpjYXJlci9NCmNhcmVzcy9NRFNHCmNhcmV0L01TCmNhcmV0YWtlci9NUwpjYXJld29ybgpjYXJmYXJlL00KY2FyZ28vTQpjYXJnb2VzCmNhcmhvcC9NUwpjYXJpYm91L1NNCmNhcmljYXR1cmUvTUdEUwpjYXJpY2F0dXJpc3QvU00KY2FyaWVzL00KY2FyaWxsb24vU00KY2FyaW5nL00KY2FyaW91cwpjYXJqYWNrL0pTRFJaRwpjYXJqYWNrZXIvTQpjYXJqYWNraW5nL00KY2FybG9hZC9TTQpjYXJtaW5lL1NNCmNhcm5hZ2UvTQpjYXJuYWwvWQpjYXJuYWxpdHkvTQpjYXJuYXRpb24vSU1TCmNhcm5lbGlhbi9NUwpjYXJuaXZhbC9NUwpjYXJuaXZvcmEKY2Fybml2b3JlL1NNCmNhcm5pdm9yb3VzL1BZCmNhcm5pdm9yb3VzbmVzcy9NCmNhcm55L1NNCmNhcm9iL01TCmNhcm9sL1pHTURSUwpjYXJvbGVyL00KY2Fyb20vR01EUwpjYXJvdGVuZS9NCmNhcm90aWQvU00KY2Fyb3VzYWwvU00KY2Fyb3VzZS9EUlNNWkcKY2Fyb3VzZWwvU00KY2Fyb3VzZXIvTQpjYXJwL1NaR01EUgpjYXJwYWwvTVMKY2FycGVsL01TCmNhcnBlbnRlci9NREdTCmNhcnBlbnRyeS9NCmNhcnBlci9NCmNhcnBldC9NREdTCmNhcnBldGJhZy9NUwpjYXJwZXRiYWdnZWQKY2FycGV0YmFnZ2VyL01TCmNhcnBldGJhZ2dpbmcKY2FycGV0aW5nL00KY2FycGkKY2FycG9vbC9TTURHCmNhcnBvcnQvU00KY2FycHVzL00KY2FycmVsL01TCmNhcnJpYWdlL1NNCmNhcnJpYWdld2F5L1MKY2Fycmllci9NCmNhcnJpb24vTQpjYXJyb3QvTVMKY2Fycm90eQpjYXJyeS9aR0RSU00KY2FycnlhbGwvU00KY2Fycnljb3QvUwpjYXJyeW91dApjYXJyeW92ZXIvTVMKY2Fyc2ljay9QCmNhcnNpY2tuZXNzL00KY2FydC9TWkdNRFIKY2FydGFnZS9NCmNhcnRlbC9NUwpjYXJ0ZXIvTQpjYXJ0aG9yc2UvU00KY2FydGlsYWdlL1NNCmNhcnRpbGFnaW5vdXMKY2FydGxvYWQvU00KY2FydG9ncmFwaGVyL1NNCmNhcnRvZ3JhcGhpYwpjYXJ0b2dyYXBoeS9NCmNhcnRvbi9NUwpjYXJ0b29uL1NNREcKY2FydG9vbmlzdC9NUwpjYXJ0cmlkZ2UvTVMKY2FydHdoZWVsL0dNRFMKY2FydmUvSlpHRFJTCmNhcnZlci9NCmNhcnZlcnkvUwpjYXJ2aW5nL00KY2FyeWF0aWQvTVMKY2FzYWJhL01TCmNhc2NhZGUvRFNNRwpjYXNjYXJhL1NNCmNhc2UvTERTSk1HCmNhc2Vib29rL1MKY2FzZWQvVQpjYXNlaGFyZGVuL0RHUwpjYXNlaW4vTQpjYXNlbG9hZC9NUwpjYXNlbWVudC9NUwpjYXNld29yay9aTVIKY2FzZXdvcmtlci9NCmNhc2gvR01EUwpjYXNoYmFjay9NCmNhc2hib29rL01TCmNhc2hldy9NUwpjYXNoaWVyL0dTTUQKY2FzaGxlc3MKY2FzaG1lcmUvTQpjYXNpbmcvTQpjYXNpbm8vTVMKY2Fzay9TTQpjYXNrZXQvTVMKY2Fzc2F2YS9TTQpjYXNzZXJvbGUvRFNNRwpjYXNzZXR0ZS9NUwpjYXNzaWEvTVMKY2Fzc29jay9TTQpjYXNzb3dhcnkvU00KY2FzdC9BU0dNCmNhc3RhbmV0L01TCmNhc3Rhd2F5L01TCmNhc3RlL0pNWlJTCmNhc3RlbGxhdGVkCmNhc3Rlci9NCmNhc3RpZ2F0ZS9EU0dOCmNhc3RpZ2F0aW9uL00KY2FzdGlnYXRvci9TTQpjYXN0aW5nL0FNCmNhc3RsZS9NR0RTCmNhc3RvZmYvU00KY2FzdG9yL01TCmNhc3RyYXRlL0dOWERTCmNhc3RyYXRpb24vTQpjYXN1YWwvUE1ZUwpjYXN1YWxuZXNzL00KY2FzdWFsdHkvU00KY2FzdWlzdC9TTQpjYXN1aXN0aWMKY2FzdWlzdHJ5L00KY2F0L1NNCmNhdGFjbHlzbS9NUwpjYXRhY2x5c21hbApjYXRhY2x5c21pYwpjYXRhY29tYi9TTQpjYXRhZmFscXVlL01TCmNhdGFsZXBzeS9NCmNhdGFsZXB0aWMvTVMKY2F0YWxvZy9aR1NNRFIKY2F0YWxvZ2VyL00KY2F0YWxwYS9TTQpjYXRhbHlzZXMKY2F0YWx5c2lzL00KY2F0YWx5c3QvTVMKY2F0YWx5dGljL00KY2F0YWx5emUvR0RTCmNhdGFtYXJhbi9TTQpjYXRhcHVsdC9HTURTCmNhdGFyYWN0L01TCmNhdGFycmgvTQpjYXRhc3Ryb3BoZS9NUwpjYXRhc3Ryb3BoaWMKY2F0YXN0cm9waGljYWxseQpjYXRhdG9uaWEvTQpjYXRhdG9uaWMvU00KY2F0YmlyZC9TTQpjYXRib2F0L1NNCmNhdGNhbGwvR1NNRApjYXRjaC9aR0pMTVJTCmNhdGNoYWxsL01TCmNhdGNoZXIvTQpjYXRjaG1lbnQvTVMKY2F0Y2hwZW5ueQpjYXRjaHBocmFzZS9TTQpjYXRjaHdvcmQvTVMKY2F0Y2h5L1JUCmNhdGVjaGlzbS9TTQpjYXRlY2hpc3QvU00KY2F0ZWNoaXplL0RTRwpjYXRlZ29yaWNhbC9ZCmNhdGVnb3JpemF0aW9uL01TCmNhdGVnb3JpemUvR0RTCmNhdGVnb3J5L1NNCmNhdGVyL1pHSkRSUwpjYXRlcmNvcm5lcgpjYXRlcmVyL00KY2F0ZXJwaWxsYXIvTVMKY2F0ZXJ3YXVsL1NNREcKY2F0ZmlzaC9NUwpjYXRndXQvTQpjYXRoYXJzZXMKY2F0aGFyc2lzL00KY2F0aGFydGljL1NNCmNhdGhlZHJhbC9TTQpjYXRoZXRlci9TTQpjYXRoZXRlcml6ZS9EU0cKY2F0aG9kZS9TTQpjYXRob2RpYwpjYXRob2xpYwpjYXRob2xpY2l0eS9NCmNhdGlvbi9NUwpjYXRraW4vTVMKY2F0bGlrZQpjYXRuYXAvTVMKY2F0bmFwcGVkCmNhdG5hcHBpbmcKY2F0bmlwL00KY2F0c3VpdC9TCmNhdHRhaWwvU00KY2F0dGVkCmNhdHRlcnkvUwpjYXR0aWx5CmNhdHRpbmVzcy9NCmNhdHRpbmcKY2F0dGxlL00KY2F0dGxlbWFuL00KY2F0dGxlbWVuCmNhdHR5L1RQUgpjYXR3YWxrL1NNCmNhdWN1cy9NRFNHCmNhdWRhbC9ZCmNhdWdodC9VCmNhdWxkcm9uL01TCmNhdWxpZmxvd2VyL1NNCmNhdWxrL1pHTURSUwpjYXVsa2VyL00KY2F1c2FsL1kKY2F1c2FsaXR5L1NNCmNhdXNhdGlvbi9NCmNhdXNhdGl2ZQpjYXVzZS9NWkdEUlMKY2F1c2VsZXNzCmNhdXNlci9NCmNhdXNlcmllL1NNCmNhdXNld2F5L1NNCmNhdXN0aWMvU00KY2F1c3RpY2FsbHkKY2F1c3RpY2l0eS9NCmNhdXRlcml6YXRpb24vTQpjYXV0ZXJpemUvR0RTCmNhdXRpb24vU01ERwpjYXV0aW9uYXJ5CmNhdXRpb3VzL0lZCmNhdXRpb3VzbmVzcy9NCmNhdmFsY2FkZS9NUwpjYXZhbGllci9TTVkKY2F2YWxyeS9TTQpjYXZhbHJ5bWFuL00KY2F2YWxyeW1lbgpjYXZlL0RSU01aRwpjYXZlYXQvTVMKY2F2ZW1hbi9NCmNhdmVtZW4KY2F2ZXJuL01TCmNhdmVybm91cy9ZCmNhdmlhci9NCmNhdmlsL1pHSk1EUlMKY2F2aWxlci9NCmNhdmluZy9NCmNhdml0eS9GU00KY2F2b3J0L0RHUwpjYXcvU01ERwpjYXkvQ1NNCmNheWVubmUvTQpjYXl1c2UvTVMKY2MKY2Vhc2UvQ01HRFMKY2Vhc2VmaXJlL01TCmNlYXNlbGVzcy9ZUApjZWFzZWxlc3NuZXNzL00KY2VjYQpjZWNhbApjZWN1bS9NCmNlZGFyL01TCmNlZGUvRkFHU0QKY2VkZXIvTVMKY2VkaWxsYS9TTQpjZWlsaWRoCmNlaWxpZGhzCmNlaWxpbmcvTVMKY2VsYW5kaW5lL00KY2VsZWIvUwpjZWxlYnJhbnQvU00KY2VsZWJyYXRlL0RTR05YCmNlbGVicmF0aW9uL00KY2VsZWJyYXRvci9TTQpjZWxlYnJhdG9yeQpjZWxlYnJpdHkvU00KY2VsZXJpYWMKY2VsZXJpdHkvTQpjZWxlcnkvTQpjZWxlc3RhL01TCmNlbGVzdGlhbC9ZCmNlbGliYWN5L00KY2VsaWJhdGUvTVMKY2VsbC9TTUQKY2VsbGFyL01TCmNlbGxpc3QvU00KY2VsbG1hdGUvU00KY2VsbG8vTVMKY2VsbG9waGFuZS9NCmNlbGxwaG9uZS9NUwpjZWxsdWxhci9TTQpjZWxsdWxpdGUvTQpjZWxsdWxpdGlzCmNlbGx1bG9pZC9NCmNlbGx1bG9zZS9NCmNlbWVudC9NRFJaR1MKY2VtZW50ZXIvTQpjZW1lbnR1bS9NCmNlbWV0ZXJ5L1NNCmNlbm9iaXRlL01TCmNlbm9iaXRpYwpjZW5vdGFwaC9NCmNlbm90YXBocwpjZW5zZXIvTVMKY2Vuc29yL01ER1MKY2Vuc29yZWQvVQpjZW5zb3JpYWwKY2Vuc29yaW91cy9QWQpjZW5zb3Jpb3VzbmVzcy9NCmNlbnNvcnNoaXAvTQpjZW5zdXJlL0JEUlNNWkcKY2Vuc3VyZXIvTQpjZW5zdXMvTURTRwpjZW50L1NaTVIKY2VudGF1ci9TTQpjZW50YXZvL1NNCmNlbnRlbmFyaWFuL01TCmNlbnRlbmFyeS9TTQpjZW50ZW5uaWFsL01ZUwpjZW50ZXIvTURHCmNlbnRlcmJvYXJkL1NNCmNlbnRlcmZvbGQvTVMKY2VudGVycGllY2UvTVMKY2VudGlncmFkZQpjZW50aWdyYW0vU00KY2VudGlsaXRlci9NUwpjZW50aW1lL1NNCmNlbnRpbWV0ZXIvTVMKY2VudGlwZWRlL1NNCmNlbnRyYWwvU01ZCmNlbnRyYWxpc20KY2VudHJhbGlzdApjZW50cmFsaXR5L00KY2VudHJhbGl6YXRpb24vQ00KY2VudHJhbGl6ZS9DR0RTCmNlbnRyYWxpemVyL01TCmNlbnRyaWZ1Z2FsL1kKY2VudHJpZnVnZS9EU01HCmNlbnRyaXBldGFsL1kKY2VudHJpc20vTQpjZW50cmlzdC9NUwpjZW50dXJpb24vU00KY2VudHVyeS9TTQpjZXBoYWxpYwpjZXJhbWljL1NNCmNlcmFtaWNpc3QvU00KY2VyYW1pY3MvTQpjZXJhbWlzdC9NUwpjZXJlYWwvTVMKY2VyZWJlbGxhcgpjZXJlYmVsbHVtL1NNCmNlcmVicmEKY2VyZWJyYWwKY2VyZWJyYXRlL0dORFMKY2VyZWJyYXRpb24vTQpjZXJlYnJvdmFzY3VsYXIKY2VyZWJydW0vTVMKY2VyZW1lbnQvTVMKY2VyZW1vbmlhbC9TTVkKY2VyZW1vbmlvdXMvVVkKY2VyZW1vbmlvdXNuZXNzL00KY2VyZW1vbnkvU00KY2VyaXNlL00KY2VyaXVtL00KY2VybWV0L00KY2VydC9TCmNlcnRhaW4vVVkKY2VydGFpbnR5L1VTTQpjZXJ0aWZpYWJsZQpjZXJ0aWZpYWJseQpjZXJ0aWZpY2F0ZS9NR05YRFMKY2VydGlmaWNhdGlvbi9NCmNlcnRpZnkvRFNHCmNlcnRpdHVkZS9JTQpjZXJ0aXR1ZGVzCmNlcnVsZWFuL00KY2VydmljYWwKY2VydmljZXMKY2Vydml4L00KY2VzYXJlYW4vTVMKY2VzaXVtL00KY2Vzc2F0aW9uL01TCmNlc3Npb24vS0FGU00KY2Vzc3BpdC9TCmNlc3Nwb29sL01TCmNldGFjZWFuL01TCmNmCmNnCmNoL0lGVlQKY2hhZC9TCmNoYWZlL0dEUwpjaGFmZi9HTURTCmNoYWZmaW5jaC9NUwpjaGFncmluL0dTTUQKY2hhaW4ncwpjaGFpbi9VR0RTCmNoYWluc2F3L01ER1MKY2hhaXIvR01EUwpjaGFpcmxpZnQvTVMKY2hhaXJtYW4vTQpjaGFpcm1hbnNoaXAvU00KY2hhaXJtZW4KY2hhaXJwZXJzb24vU00KY2hhaXJ3b21hbi9NCmNoYWlyd29tZW4KY2hhaXNlL01TCmNoYWxjZWRvbnkvTQpjaGFsZXQvTVMKY2hhbGljZS9TTQpjaGFsay9HTURTCmNoYWxrYm9hcmQvU00KY2hhbGtpbmVzcy9NCmNoYWxreS9QUlQKY2hhbGxlbmdlL0RSU01aRwpjaGFsbGVuZ2VkL1UKY2hhbGxlbmdlci9NCmNoYWxsaXMvTQpjaGFtYmVyL1NNRApjaGFtYmVybGFpbi9NUwpjaGFtYmVybWFpZC9NUwpjaGFtYnJheS9NCmNoYW1lbGVvbi9TTQpjaGFtb2lzL00KY2hhbW9taWxlL01TCmNoYW1wL1pHTURTCmNoYW1wYWduZS9NUwpjaGFtcGlvbi9HTURTCmNoYW1waW9uc2hpcC9NUwpjaGFuY2UvTUdEUwpjaGFuY2VsL1NNCmNoYW5jZWxsZXJ5L1NNCmNoYW5jZWxsb3IvTVMKY2hhbmNlbGxvcnNoaXAvTQpjaGFuY2VyeS9TTQpjaGFuY2luZXNzL00KY2hhbmNyZS9TTQpjaGFuY3kvUFJUCmNoYW5kZWxpZXIvU00KY2hhbmRsZXIvTVMKY2hhbmdlL01aR0RSUwpjaGFuZ2VhYmlsaXR5L00KY2hhbmdlYWJsZS9QCmNoYW5nZWFibGVuZXNzL00KY2hhbmdlYWJseQpjaGFuZ2VkL1UKY2hhbmdlbGVzcy9ZCmNoYW5nZWxpbmcvU00KY2hhbmdlb3Zlci9TTQpjaGFuZ2VyL00KY2hhbmdpbmcvVQpjaGFubmVsL0dTTUQKY2hhbm5lbGl6YXRpb24vTQpjaGFubmVsaXplL0RTRwpjaGFuc29uL1NNCmNoYW50L1pHTURSUwpjaGFudGVyL00KY2hhbnRldXNlL01TCmNoYW50ZXkvU00KY2hhbnRpY2xlZXIvTVMKY2hhb3MvTQpjaGFvdGljCmNoYW90aWNhbGx5CmNoYXAvU00KY2hhcGFycmFsL1NNCmNoYXBhdGkvUwpjaGFwYXR0aS9TCmNoYXBib29rL01TCmNoYXBlYXUvU00KY2hhcGVsL01TCmNoYXBlcm9uL01ER1MKY2hhcGVyb25hZ2UvTQpjaGFwZXJvbmVkL1UKY2hhcGxhaW4vTVMKY2hhcGxhaW5jeS9TTQpjaGFwbGV0L1NNCmNoYXBwZWQKY2hhcHBpbmcKY2hhcHB5L1MKY2hhcHRlci9TTQpjaGFyL1NNCmNoYXJhYmFuYy9NUwpjaGFyYWN0ZXIvTVMKY2hhcmFjdGVyZnVsCmNoYXJhY3RlcmlzdGljL1NNCmNoYXJhY3RlcmlzdGljYWxseS9VCmNoYXJhY3Rlcml6YXRpb24vTVMKY2hhcmFjdGVyaXplL0RTRwpjaGFyYWN0ZXJsZXNzCmNoYXJhZGUvU00KY2hhcmJyb2lsL0dEUwpjaGFyY29hbC9NUwpjaGFyZC9NCmNoYXJkb25uYXkvU00KY2hhcmdlL0FFU0RHTQpjaGFyZ2VhYmxlL0EKY2hhcmdlZC9VCmNoYXJnZXIvU00KY2hhcmlseQpjaGFyaW5lc3MvTQpjaGFyaW90L1NNCmNoYXJpb3RlZXIvTVMKY2hhcmlzbWEvTQpjaGFyaXNtYXRpYy9NUwpjaGFyaXRhYmxlL1AKY2hhcml0YWJsZW5lc3MvTQpjaGFyaXRhYmx5L1UKY2hhcml0eS9TTQpjaGFybGFkeS9TCmNoYXJsYXRhbi9TTQpjaGFybGF0YW5pc20vTQpjaGFybGF0YW5yeS9NCmNoYXJsaWUvUwpjaGFybS9aR01EUlMKY2hhcm1lci9NCmNoYXJtaW5nL1kKY2hhcm1sZXNzCmNoYXJyZWQKY2hhcnJpbmcKY2hhcnQvR01EUwpjaGFydGVkL1UKY2hhcnRlcidzCmNoYXJ0ZXIvQVNHRApjaGFydGVyZXIvTVMKY2hhcnRyZXVzZS9NCmNoYXJ3b21hbi9NCmNoYXJ3b21lbgpjaGFyeS9UUlAKY2hhc2UvTVpHRFJTCmNoYXNlci9NCmNoYXNtL01TCmNoYXNzaXMvTQpjaGFzdGUvUFlUUgpjaGFzdGVuL0RHUwpjaGFzdGVuZXNzL00KY2hhc3Rpc2UvRFJTWkdMCmNoYXN0aXNlbWVudC9TTQpjaGFzdGlzZXIvTQpjaGFzdGl0eS9NCmNoYXN1YmxlL1NNCmNoYXQvU00KY2hhdGVhdS9TTQpjaGF0ZWF1eApjaGF0ZWxhaW5lL1NNCmNoYXRsaW5lL1MKY2hhdHJvb20vTQpjaGF0dGVkCmNoYXR0ZWwvTVMKY2hhdHRlci9NRFJaR1MKY2hhdHRlcmJveC9NUwpjaGF0dGVyZXIvTQpjaGF0dGlseQpjaGF0dGluZXNzL00KY2hhdHRpbmcKY2hhdHR5L1RQUgpjaGF1ZmZldXIvR01EUwpjaGF1dmluaXNtL00KY2hhdXZpbmlzdC9TTQpjaGF1dmluaXN0aWMKY2hhdXZpbmlzdGljYWxseQpjaGVhcC9QWFROUlkKY2hlYXBlbi9ERwpjaGVhcG5lc3MvTQpjaGVhcG8KY2hlYXBza2F0ZS9NUwpjaGVhdC9aR01EUlMKY2hlYXRlci9NCmNoZWNrL0FHTURTCmNoZWNrYm9vay9TTQpjaGVja2JveApjaGVja2VkL1UKY2hlY2tlci9NREdTCmNoZWNrZXJib2FyZC9TTQpjaGVja2Vycy9NCmNoZWNrbGlzdC9NUwpjaGVja21hdGUvTUdEUwpjaGVja29mZi9TTQpjaGVja291dC9TTQpjaGVja3BvaW50L1NNCmNoZWNrcm9vbS9NUwpjaGVja3N1bQpjaGVja3VwL01TCmNoZWRkYXIvTQpjaGVlay9HTURTCmNoZWVrYm9uZS9TTQpjaGVla2lseQpjaGVla2luZXNzL00KY2hlZWt5L1RQUgpjaGVlcC9HTURTCmNoZWVyL1pHTURSUwpjaGVlcmVyL00KY2hlZXJmdWwvWVAKY2hlZXJmdWxsZXIKY2hlZXJmdWxsZXN0CmNoZWVyZnVsbmVzcy9NCmNoZWVyaWx5CmNoZWVyaW5lc3MvTQpjaGVlcmlvL01TCmNoZWVybGVhZGVyL1NNCmNoZWVybGVzcy9QWQpjaGVlcmxlc3NuZXNzL00KY2hlZXJ5L1RQUgpjaGVlc2UvTUdEUwpjaGVlc2Vib2FyZC9TCmNoZWVzZWJ1cmdlci9TTQpjaGVlc2VjYWtlL1NNCmNoZWVzZWNsb3RoL00KY2hlZXNlcGFyaW5nL00KY2hlZXNpbmVzcy9NCmNoZWVzeS9UUFIKY2hlZXRhaC9NCmNoZWV0YWhzCmNoZWYvU00KY2hlbQpjaGVtaWNhbC9TTVkKY2hlbWlzZS9NUwpjaGVtaXN0L01TCmNoZW1pc3RyeS9NCmNoZW1vL00KY2hlbW90aGVyYXBldXRpYwpjaGVtb3RoZXJhcHkvTQpjaGVtdXJneS9NCmNoZW5pbGxlL00KY2hlcmlzaC9EU0cKY2hlcm9vdC9NUwpjaGVycnkvU00KY2hlcnQvTQpjaGVydWIvTVMKY2hlcnViaWMKY2hlcnViaW0KY2hlcnZpbC9NCmNoZXNzL00KY2hlc3Nib2FyZC9NUwpjaGVzc21hbi9NCmNoZXNzbWVuCmNoZXN0L01EUwpjaGVzdGVyZmllbGQvU00KY2hlc3RmdWwvU00KY2hlc3RudXQvU00KY2hlc3R5L1RSCmNoZXZhbGllci9TTQpjaGV2aW90L00KY2hldnJvbi9NUwpjaGV3L1NaR01EUgpjaGV3ZXIvTQpjaGV3aW5lc3MvTQpjaGV3eS9QVFIKY2hnCmNoZ2UKY2hpL1NNCmNoaWFyb3NjdXJvL00KY2hpYy9QVE1SCmNoaWNhbmUvTVMKY2hpY2FuZXJ5L1NNCmNoaWNoaS9NUwpjaGljay9YTU5TCmNoaWNrYWRlZS9TTQpjaGlja2VuL01ERwpjaGlja2VuZmVlZC9NCmNoaWNrZW5oZWFydGVkCmNoaWNrZW5wb3gvTQpjaGlja2Vuc2hpdC9TIQpjaGlja3BlYS9TTQpjaGlja3dlZWQvTQpjaGljbGUvTQpjaGljbmVzcy9NCmNoaWNvcnkvU00KY2hpZGUvR0RTCmNoaWRpbmcvWQpjaGllZi9UTVJZUwpjaGllZmRvbS9NCmNoaWVmdGFpbi9NUwpjaGllZnRhaW5zaGlwL1NNCmNoaWZmb24vTQpjaGlmZm9uaWVyL01TCmNoaWdnZXIvTVMKY2hpZ25vbi9NUwpjaGlodWFodWEvU00KY2hpbGJsYWluL1NNCmNoaWxkL00KY2hpbGRiZWFyaW5nL00KY2hpbGRiaXJ0aC9NCmNoaWxkYmlydGhzCmNoaWxkY2FyZS9NCmNoaWxkaG9vZC9TTQpjaGlsZGlzaC9ZUApjaGlsZGlzaG5lc3MvTQpjaGlsZGxlc3MvUApjaGlsZGxlc3NuZXNzL00KY2hpbGRsaWtlCmNoaWxkbWluZGVyL1MKY2hpbGRtaW5kaW5nCmNoaWxkcHJvb2YvR1NECmNoaWxkcmVuL00KY2hpbGkvTQpjaGlsaWVzCmNoaWxsL0pQWlRHTURSUwpjaGlsbGVyL00KY2hpbGxpbmVzcy9NCmNoaWxsaW5nL1kKY2hpbGxuZXNzL00KY2hpbGx5L1RQUgpjaGltZS9NWkdEUlMKY2hpbWVyL00KY2hpbWVyYS9NUwpjaGltZXJpYwpjaGltZXJpY2FsCmNoaW1uZXkvTVMKY2hpbXAvTVMKY2hpbXBhbnplZS9TTQpjaGluL1NNCmNoaW5hL00KY2hpbmF3YXJlL00KY2hpbmNoaWxsYS9NUwpjaGluZS9NUwpjaGluay9HTURTCmNoaW5sZXNzCmNoaW5uZWQKY2hpbm5pbmcKY2hpbm8vTVMKY2hpbnN0cmFwL01TCmNoaW50ei9NCmNoaW50enkvUlQKY2hpbndhZy9TCmNoaXAvU00KY2hpcGJvYXJkCmNoaXBtdW5rL1NNCmNoaXBvbGF0YS9TCmNoaXBwZWQKY2hpcHBlci9NUwpjaGlwcGllCmNoaXBwaW5nL1MKY2hpcHB5L1MKY2hpcm9ncmFwaHkvTQpjaGlyb3BvZGlzdC9NUwpjaGlyb3BvZHkvTQpjaGlyb3ByYWN0aWMvU00KY2hpcm9wcmFjdG9yL1NNCmNoaXJwL0dNRFMKY2hpcnBpbHkKY2hpcnB5L1BUUgpjaGlycnVwL0dNRFMKY2hpc2VsL1pHTURSUwpjaGlzZWxlci9NCmNoaXQvU00KY2hpdGNoYXQvU00KY2hpdGNoYXR0ZWQKY2hpdGNoYXR0aW5nCmNoaXRpbi9NCmNoaXRpbm91cwpjaGl0b3NhbgpjaGl0dGVybGluZ3MvTQpjaGl2YWxyb3VzL1BZCmNoaXZhbHJvdXNuZXNzL00KY2hpdmFscnkvTQpjaGl2ZS9NUwpjaGl2eS9HRFMKY2hsYW15ZGlhL01TCmNobGFteWRpYWUKY2hsb3JhbC9NCmNobG9yZGFuZS9NCmNobG9yaWRlL01TCmNobG9yaW5hdGUvR05EUwpjaGxvcmluYXRpb24vTQpjaGxvcmluZS9NCmNobG9yb2ZsdW9yb2NhcmJvbi9TTQpjaGxvcm9mb3JtL1NHTUQKY2hsb3JvcGh5bGwvTQpjaGxvcm9wbGFzdC9NUwpjaG0KY2hvYy9TCmNob2NrL0dNRFMKY2hvY2thYmxvY2sKY2hvY29ob2xpYy9TTQpjaG9jb2xhdGUvTVMKY2hvY29sYXR5CmNob2ljZS9NVFJTCmNob2lyL01TCmNob2lyYm95L01TCmNob2lybWFzdGVyL1NNCmNob2tlL01aR0RSUwpjaG9rZWNoZXJyeS9TTQpjaG9rZXIvTQpjaG9sZWN5c3RlY3RvbXkKY2hvbGVjeXN0aXRpcwpjaG9sZXIvTQpjaG9sZXJhL00KY2hvbGVyaWMKY2hvbGVzdGVyb2wvTQpjaG9tcC9aR01EUlMKY2hvb3NlL1pHUlMKY2hvb3Nlci9NCmNob29zaW5lc3MvTQpjaG9vc3kvVFBSCmNob3AvU00KY2hvcGhvdXNlL1NNCmNob3BwZWQKY2hvcHBlci9NREdTCmNob3BwaWx5CmNob3BwaW5lc3MvTQpjaG9wcGluZwpjaG9wcHkvVFBSCmNob3BzdGljay9TTQpjaG9yYWwvTVlTCmNob3JhbGUvTVMKY2hvcmQvTVMKY2hvcmRhbApjaG9yZGF0ZS9TTQpjaG9yZS9NUwpjaG9yZWEvTQpjaG9yZW9ncmFwaC9EUlpHCmNob3Jlb2dyYXBoZXIvTQpjaG9yZW9ncmFwaGljCmNob3Jlb2dyYXBoaWNhbGx5CmNob3Jlb2dyYXBocwpjaG9yZW9ncmFwaHkvTQpjaG9yaXN0ZXIvU00KY2hvcm9pZC9NUwpjaG9ydGxlL01aR0RSUwpjaG9ydGxlci9NCmNob3J1cy9HTURTCmNob3NlCmNob3NlbgpjaG93L1NHTUQKY2hvd2Rlci9NUwpjaHJpc20vTQpjaHJpc3Rlbi9BU0dECmNocmlzdGVuaW5nL01TCmNocmlzdGlhbi9VCmNocmlzdG9sb2d5CmNocm9tYXRpYwpjaHJvbWF0aWNhbGx5CmNocm9tYXRpbi9NCmNocm9tYXRvZ3JhcGh5CmNocm9tZS9NR0RTCmNocm9taXVtL00KY2hyb21vc29tYWwKY2hyb21vc29tZS9NUwpjaHJvbmljCmNocm9uaWNhbGx5CmNocm9uaWNsZS9EUlNNWkcKY2hyb25pY2xlci9NCmNocm9ub2dyYXBoL00KY2hyb25vZ3JhcGhzCmNocm9ub2xvZ2ljYWwvWQpjaHJvbm9sb2dpc3QvTVMKY2hyb25vbG9neS9TTQpjaHJvbm9tZXRlci9TTQpjaHJ5c2FsaXMvTVMKY2hyeXNhbnRoZW11bS9NUwpjaHViL1NNCmNodWJiaW5lc3MvTQpjaHViYnkvVFBSCmNodWNrL0dNRFMKY2h1Y2tob2xlL1NNCmNodWNrbGUvTUdEUwpjaHVmZmVkCmNodWcvU00KY2h1Z2dlZApjaHVnZ2luZwpjaHVra2EvTVMKY2h1bS9TTQpjaHVtbWVkCmNodW1taWx5CmNodW1taW5lc3MvTQpjaHVtbWluZwpjaHVtbXkvUFRSCmNodW1wL01TCmNodW5kZXIvR0RTCmNodW5rL0dNRFMKY2h1bmtpbmVzcy9NCmNodW5reS9QVFIKY2h1bnRlci9ER1MKY2h1cmNoL01TCmNodXJjaGdvZXIvU00KY2h1cmNoZ29pbmcvTQpjaHVyY2htYW4vTQpjaHVyY2htZW4KY2h1cmNod2FyZGVuL01TCmNodXJjaHdvbWFuCmNodXJjaHdvbWVuCmNodXJjaHlhcmQvU00KY2h1cmwvTVMKY2h1cmxpc2gvUFkKY2h1cmxpc2huZXNzL00KY2h1cm4vWkdNRFJTCmNodXJuZXIvTQpjaHV0ZS9NUwpjaHV0bmV5L01TCmNodXR6cGFoL00KY2h5bWUvTQpjaWFiYXR0YS9TTQpjaWFvL1MKY2ljYWRhL01TCmNpY2F0cmljZXMKY2ljYXRyaXgvTQpjaWNlcm9uZS9TTQpjaWNlcm9uaQpjaWRlcidzCmNpZGVyL1MKY2lnYXIvTVMKY2lnYXJldHRlL01TCmNpZ2FyaWxsby9NUwpjaWxhbnRyby9NCmNpbGlhCmNpbGl1bS9NCmNpbmNoL0dNRFMKY2luY2hvbmEvU00KY2luY3R1cmUvU00KY2luZGVyL0dNRFMKY2luZQpjaW5lbWEvTVMKY2luZW1hdGljCmNpbmVtYXRvZ3JhcGhlci9NUwpjaW5lbWF0b2dyYXBoaWMKY2luZW1hdG9ncmFwaHkvTQpjaW5uYWJhci9NCmNpbm5hbW9uL00KY2lwaGVyJ3MKY2lwaGVyL0NHRFMKY2lyCmNpcmNhCmNpcmNhZGlhbgpjaXJjbGUvTUdEUwpjaXJjbGV0L01TCmNpcmN1aXQvTURHUwpjaXJjdWl0YWwKY2lyY3VpdG91cy9ZUApjaXJjdWl0b3VzbmVzcy9NCmNpcmN1aXRyeS9NCmNpcmN1aXR5L00KY2lyY3VsYXIvU01ZCmNpcmN1bGFyaXR5L00KY2lyY3VsYXJpemUvRFNHCmNpcmN1bGF0ZS9BRFNHCmNpcmN1bGF0aW9uL1NNCmNpcmN1bGF0b3J5CmNpcmN1bWNpc2UvWERTR04KY2lyY3VtY2lzZWQvVQpjaXJjdW1jaXNpb24vTQpjaXJjdW1mZXJlbmNlL01TCmNpcmN1bWZlcmVudGlhbApjaXJjdW1mbGV4L01TCmNpcmN1bWxvY3V0aW9uL01TCmNpcmN1bWxvY3V0b3J5CmNpcmN1bW5hdmlnYXRlL1hHTkRTCmNpcmN1bW5hdmlnYXRpb24vTQpjaXJjdW1wb2xhcgpjaXJjdW1zY3JpYmUvR0RTCmNpcmN1bXNjcmlwdGlvbi9NUwpjaXJjdW1zcGVjdC9ZCmNpcmN1bXNwZWN0aW9uL00KY2lyY3Vtc3RhbmNlL01HRFMKY2lyY3Vtc3RhbnRpYWwvWQpjaXJjdW12ZW50L0RTRwpjaXJjdW12ZW50aW9uL00KY2lyY3VzL01TCmNpcnF1ZS9NUwpjaXJyaG9zaXMvTQpjaXJyaG90aWMvU00KY2lycmkKY2lycnVzL00KY2lzdGVybi9NUwpjaXQKY2l0YWRlbC9NUwpjaXRhdGlvbi9BTVMKY2l0ZSdzCmNpdGUvSUFHU0QKY2l0aWZpZWQKY2l0aXplbi9NUwpjaXRpemVucnkvTQpjaXRpemVuc2hpcC9NCmNpdHJpYwpjaXRyb24vTVMKY2l0cm9uZWxsYS9NCmNpdHJ1cy9NUwpjaXR5L1NNCmNpdHl3aWRlCmNpdmV0L01TCmNpdmljL1MKY2l2aWNhbGx5CmNpdmljcy9NCmNpdmlsL1VZCmNpdmlsaWFuL01TCmNpdmlsaXR5L0lTTQpjaXZpbGl6YXRpb24vTVMKY2l2aWxpemUvR0RTCmNpdmlsaXplZC9VCmNpdnZpZXMvTQpjawpjbApjbGFjay9HTURTCmNsYWQvVQpjbGFkZGluZy9NCmNsYWltJ3MKY2xhaW0vQ0tFQUdEUwpjbGFpbWFibGUvQQpjbGFpbWFudC9NUwpjbGFpbWVkL1UKY2xhaW1lci9FQ1NNCmNsYWlydm95YW5jZS9NCmNsYWlydm95YW50L01TCmNsYW0vU00KY2xhbWJha2UvTVMKY2xhbWJlci9aR01EUlMKY2xhbWJlcmVyL00KY2xhbW1lZApjbGFtbWlseQpjbGFtbWluZXNzL00KY2xhbW1pbmcKY2xhbW15L1BUUgpjbGFtb3IvR01EUwpjbGFtb3JvdXMKY2xhbXAvR01EUwpjbGFtcGRvd24vTVMKY2xhbi9TTQpjbGFuZGVzdGluZS9ZCmNsYW5nL1pHTURSUwpjbGFuZ29yL00KY2xhbmdvcm91cy9ZCmNsYW5rL0dNRFMKY2xhbm5pc2gvUApjbGFubmlzaG5lc3MvTQpjbGFuc21hbi9NCmNsYW5zbWVuCmNsYW5zd29tYW4KY2xhbnN3b21lbgpjbGFwL1NNCmNsYXBib2FyZC9NREdTCmNsYXBwZWQKY2xhcHBlci9NUwpjbGFwcGVyYm9hcmQvUwpjbGFwcGluZy9NCmNsYXB0cmFwL00KY2xhcXVlL01TCmNsYXJldC9NUwpjbGFyaWZpY2F0aW9uL00KY2xhcmlmeS9YRFNORwpjbGFyaW5ldC9TTQpjbGFyaW5ldGlzdC9TTQpjbGFyaW9uL01ER1MKY2xhcml0eS9NCmNsYXNoL0dNRFMKY2xhc3AncwpjbGFzcC9VR0RTCmNsYXNzL0dNRFMKY2xhc3NpYy9NUwpjbGFzc2ljYWwvTVkKY2xhc3NpY2lzbS9NCmNsYXNzaWNpc3QvTVMKY2xhc3NpZmlhYmxlCmNsYXNzaWZpY2F0aW9uL0NBTQpjbGFzc2lmaWNhdGlvbnMKY2xhc3NpZmllZCdzCmNsYXNzaWZpZWQvVQpjbGFzc2lmaWVkcwpjbGFzc2lmaWVyL01TCmNsYXNzaWZ5L0FDU0RHTgpjbGFzc2luZXNzL00KY2xhc3NsZXNzL1AKY2xhc3NtYXRlL01TCmNsYXNzcm9vbS9NUwpjbGFzc3dvcmsvTQpjbGFzc3kvVFJQCmNsYXR0ZXIvR01EUwpjbGF1c2FsCmNsYXVzZS9NUwpjbGF1c3Ryb3Bob2JpYS9NCmNsYXVzdHJvcGhvYmljCmNsYXZpY2hvcmQvU00KY2xhdmljbGUvTVMKY2xhdmllci9NUwpjbGF3J3MKY2xhdy9DU0dECmNsYXkvTQpjbGF5ZXkKY2xheWllcgpjbGF5aWVzdApjbGVhbi9CSlBaVEdEUllTCmNsZWFuZXIvTQpjbGVhbmluZy9NCmNsZWFubGluZXNzL1VNCmNsZWFubHkvVVRQUgpjbGVhbm5lc3MvVU0KY2xlYW5zZS9aR0RSUwpjbGVhbnNlci9NCmNsZWFudXAvTVMKY2xlYXIvSlBUR01EUllTCmNsZWFyYW5jZS9TTQpjbGVhcmhlYWRlZApjbGVhcmluZy9NCmNsZWFyaW5naG91c2UvU00KY2xlYXJuZXNzL00KY2xlYXJ3YXkvUwpjbGVhdC9NUwpjbGVhdmFnZS9NUwpjbGVhdmUvWkdEUlMKY2xlYXZlci9NCmNsZWYvU00KY2xlZnQvTVMKY2xlbWF0aXMvTVMKY2xlbWVuY3kvSU0KY2xlbWVudC9ZCmNsZW1lbnRpbmUvUwpjbGVuY2gvR01EUwpjbGVyZXN0b3J5L1NNCmNsZXJneS9TTQpjbGVyZ3ltYW4vTQpjbGVyZ3ltZW4KY2xlcmd5d29tYW4vTQpjbGVyZ3l3b21lbgpjbGVyaWMvTVMKY2xlcmljYWwvWQpjbGVyaWNhbGlzbS9NCmNsZXJrL0dNRFMKY2xlcmtzaGlwL00KY2xldmVyL1BUUlkKY2xldmVybmVzcy9NCmNsZXZpcy9NUwpjbGV3L1NHTUQKY2xpY2hlL01EUwpjbGljay9CWkdNRFJTCmNsaWNrZXIvTQpjbGllbnQvTVMKY2xpZW50ZWxlL01TCmNsaWZmL01TCmNsaWZmaGFuZ2VyL1NNCmNsaWZmaGFuZ2luZwpjbGlmZnRvcC9TCmNsaWkKY2xpbWFjdGVyaWMvTQpjbGltYWN0aWMKY2xpbWF0ZS9TTQpjbGltYXRpYwpjbGltYXRpY2FsbHkKY2xpbWF0b2xvZ2lzdC9TTQpjbGltYXRvbG9neS9NCmNsaW1heC9NRFNHCmNsaW1iL1NNRFJaR0IKY2xpbWJlci9NCmNsaW1iaW5nL00KY2xpbWUvU00KY2xpbmNoL01EUlNaRwpjbGluY2hlci9NCmNsaW5nL1NNUlpHCmNsaW5nZXIvTQpjbGluZ2ZpbG0KY2xpbmd5L1JUCmNsaW5pYy9TTQpjbGluaWNhbC9ZCmNsaW5pY2lhbi9TTQpjbGluay9TTURSWkcKY2xpbmtlci9NCmNsaW9tZXRyaWMvUwpjbGlvbWV0cmljaWFuL01TCmNsaW9tZXRyaWNzL00KY2xpcC9TTQpjbGlwYm9hcmQvTVMKY2xpcHBlZApjbGlwcGVyL1NNCmNsaXBwaW5nL1NNCmNsaXF1ZS9TTQpjbGlxdWV5CmNsaXF1aXNoL1lQCmNsaXF1aXNobmVzcy9NCmNsaXQvU00KY2xpdG9yYWwKY2xpdG9yaWRlcwpjbGl0b3Jpcy9NUwpjbGl4CmNsb2FjYS9NCmNsb2FjYWUKY2xvYWsncwpjbG9hay9VU0RHCmNsb2Frcm9vbS9NUwpjbG9iYmVyL1NNREcKY2xvY2hlL1NNCmNsb2NrL1NNREcKY2xvY2t3aXNlCmNsb2Nrd29yay9TTQpjbG9kL01TCmNsb2RkaXNoCmNsb2Rob3BwZXIvTVMKY2xvZydzCmNsb2cvVVMKY2xvZ2dlZC9VCmNsb2dnaW5nL1UKY2xvaXNvbm5lL00KY2xvaXN0ZXIvU01ERwpjbG9pc3RyYWwKY2xvbXAvU0RHCmNsb25hbApjbG9uZS9EU01HCmNsb25rL1NNREcKY2xvcC9NUwpjbG9wcGVkCmNsb3BwaW5nCmNsb3NlL0RSU01ZVEdKUApjbG9zZWZpc3RlZApjbG9zZW1vdXRoZWQKY2xvc2VuZXNzL00KY2xvc2VvdXQvTVMKY2xvc2V0L1NNREcKY2xvc2V1cC9TTQpjbG9zaW5nL00KY2xvc3VyZS9FU00KY2xvdC9NUwpjbG90aC9NCmNsb3RoZS9VRFNHCmNsb3RoZXNob3JzZS9NUwpjbG90aGVzbGluZS9TTQpjbG90aGVzcGluL1NNCmNsb3RoaWVyL01TCmNsb3RoaW5nL00KY2xvdGhzCmNsb3R0ZWQKY2xvdHRpbmcKY2xvdHVyZS9TTQpjbG91ZC9TTURHCmNsb3VkYnVyc3QvU00KY2xvdWRlZC9VCmNsb3VkaW5lc3MvTQpjbG91ZGxlc3MKY2xvdWR5L1JQVApjbG91dC9TTURHCmNsb3ZlL1JTTVoKY2xvdmVuCmNsb3Zlci9NCmNsb3ZlcmxlYWYvU00KY2xvdmVybGVhdmVzCmNsb3duL1NNREcKY2xvd25pc2gvWVAKY2xvd25pc2huZXNzL00KY2xveS9ER1MKY2xveWluZy9ZCmNsdWIvTVMKY2x1YmJhYmxlCmNsdWJiZWQKY2x1YmJlci9TCmNsdWJiaW5nCmNsdWJmZWV0CmNsdWJmb290L01ECmNsdWJob3VzZS9TTQpjbHVibGFuZApjbHVjay9TTURHCmNsdWUvTUdEUwpjbHVlbGVzcwpjbHVtcC9TTURHCmNsdW1weS9UUgpjbHVtc2lseQpjbHVtc2luZXNzL00KY2x1bXN5L1RSUApjbHVuZwpjbHVuay9TTURSWkcKY2x1bmtlci9NCmNsdW5reS9UUgpjbHVzdGVyL01EU0cKY2x1dGNoL0dNRFMKY2x1dHRlci9NRFNHCmNsdXR0ZXJlZC9VCmNsdmkKY2x2aWkKY2x4aQpjbHhpaQpjbHhpdgpjbHhpeApjbHh2aQpjbHh2aWkKY20KY25pZGFyaWFuL01TCmNvL0VTRApjb2FjaC9NRFNHCmNvYWNobG9hZC9TCmNvYWNobWFuL00KY29hY2htZW4KY29hY2h3b3JrCmNvYWRqdXRvci9NUwpjb2FndWxhbnQvTVMKY29hZ3VsYXRlL0dORFMKY29hZ3VsYXRpb24vTQpjb2FndWxhdG9yL01TCmNvYWwvTURHUwpjb2FsZXNjZS9HRFMKY29hbGVzY2VuY2UvTQpjb2FsZXNjZW50CmNvYWxmYWNlL01TCmNvYWxmaWVsZC9TCmNvYWxpdGlvbi9NUwpjb2FsaXRpb25pc3QvTVMKY29hbG1pbmUvUwpjb2Fyc2UvUllUUApjb2Fyc2VuL1NERwpjb2Fyc2VuZXNzL00KY29hc3QvU01EUlpHCmNvYXN0YWwKY29hc3Rlci9NCmNvYXN0Z3VhcmQvUwpjb2FzdGxpbmUvTVMKY29hdC9NREdKUwpjb2F0aW5nL00KY29hdHJvb20vUwpjb2F0dGFpbC9TTQpjb2F1dGhvci9NREdTCmNvYXgvRFJTWkcKY29heGVyL00KY29heGlhbApjb2F4aW5nL1kKY29iL1NNCmNvYmFsdC9NCmNvYmJlci9TCmNvYmJsZS9EUlNNWkcKY29iYmxlci9NCmNvYmJsZXN0b25lL1NNCmNvYm51dC9TCmNvYnJhL1NNCmNvYndlYi9TTQpjb2J3ZWJiZWQKY29id2ViYnkvUlQKY29jYS9NCmNvY2FpbmUvTQpjb2NjaS9TCmNvY2N1cy9NCmNvY2N5Z2VzCmNvY2N5eC9NCmNvY2hpbmVhbC9NCmNvY2hsZWEvU00KY29jaGxlYWUKY29jaGxlYXIKY29jay9NREdTCmNvY2thZGUvU00KY29ja2FtYW1pZQpjb2NrYXRvby9TTQpjb2NrYXRyaWNlL1NNCmNvY2tjaGFmZXIvUwpjb2NrY3Jvdy9TTQpjb2NrZXJlbC9TTQpjb2NrZXllZApjb2NrZmlnaHQvTUdTCmNvY2tmaWdodGluZy9NCmNvY2tpbHkKY29ja2luZXNzL00KY29ja2xlL1NNCmNvY2tsZXNoZWxsL1NNCmNvY2tuZXkvU00KY29ja3BpdC9TTQpjb2Nrcm9hY2gvTVMKY29ja3Njb21iL1NNCmNvY2tzdWNrZXIvTVMhCmNvY2tzdXJlCmNvY2t0YWlsL01TCmNvY2t5L1JUUApjb2NvL01TCmNvY29hL1NNCmNvY29udXQvU00KY29jb29uL1NNREcKY29kL1NNCmNvZGEvTVMKY29kZGVkCmNvZGRpbmcKY29kZGxlL0RTRwpjb2RlJ3MKY29kZS9DWkdEUlMKY29kZWluZS9NCmNvZGVwZW5kZW5jeS9NCmNvZGVwZW5kZW50L1NNCmNvZGVyL0NNCmNvZGV4L00KY29kZmlzaC9NUwpjb2RnZXIvU00KY29kaWNlcwpjb2RpY2lsL1NNCmNvZGlmaWNhdGlvbi9NCmNvZGlmaWVyL00KY29kaWZ5L1hEUlNOWkcKY29kb24vUwpjb2RwaWVjZS9NUwpjb2Rzd2FsbG9wCmNvZWQvTVMKY29lZHVjYXRpb24vTQpjb2VkdWNhdGlvbmFsCmNvZWZmaWNpZW50L01TCmNvZWxlbnRlcmF0ZS9NUwpjb2VxdWFsL01ZUwpjb2VyY2UvRFJTWkdOVgpjb2VyY2VyL00KY29lcmNpb24vTQpjb2V2YWwvU01ZCmNvZXhpc3QvRFNHCmNvZXhpc3RlbmNlL00KY29leGlzdGVudApjb2V4dGVuc2l2ZQpjb2ZmZWUvU00KY29mZmVlY2FrZS9TTQpjb2ZmZWVob3VzZS9NUwpjb2ZmZWVtYWtlci9TTQpjb2ZmZWVwb3QvTVMKY29mZmVyL1NNCmNvZmZlcmRhbS9NUwpjb2ZmaW4vU01ERwpjb2cvU00KY29nZW5jeS9NCmNvZ2VudC9ZCmNvZ2l0YXRlL0RTWEdOVgpjb2dpdGF0aW9uL00KY29naXRhdG9yL01TCmNvZ25hYy9TTQpjb2duYXRlL01TCmNvZ25pdGlvbi9BTQpjb2duaXRpb25hbApjb2duaXRpdmUvWQpjb2duaXphYmxlCmNvZ25pemFuY2UvQU0KY29nbml6YW50CmNvZ25vbWVuL1NNCmNvZ25vc2NlbnRlL00KY29nbm9zY2VudGkKY29nd2hlZWwvU00KY29oYWJpdC9TR0QKY29oYWJpdGFudC9NUwpjb2hhYml0YXRpb24vTQpjb2hlaXIvU00KY29oZXJlL0RTRwpjb2hlcmVuY2UvSU0KY29oZXJlbmN5L00KY29oZXJlbnQvSVkKY29oZXNpb24vTQpjb2hlc2l2ZS9ZUApjb2hlc2l2ZW5lc3MvTQpjb2hvL01TCmNvaG9ydC9TTQpjb2lmL01TCmNvaWZmZWQKY29pZmZpbmcKY29pZmZ1cmUvRFNNRwpjb2lsJ3MvQQpjb2lsL1VBREdTCmNvaW4vTURSWkdTCmNvaW5hZ2UvU00KY29pbmNpZGUvRFNHCmNvaW5jaWRlbmNlL01TCmNvaW5jaWRlbnQKY29pbmNpZGVudGFsL1kKY29pbmVyL00KY29pbnN1cmFuY2UvTQpjb2lyCmNvaXRhbApjb2l0dXMvTQpjb2tlL01HRFMKY29sL1MKY29sYS9NUwpjb2xhbmRlci9TTQpjb2xkL01SWVRQUwpjb2xkYmxvb2RlZApjb2xkbmVzcy9NCmNvbGVzbGF3L00KY29sZXVzL01TCmNvbGV5L1MKY29saWMvTQpjb2xpY2t5CmNvbGlzZXVtL01TCmNvbGl0aXMvTQpjb2xsCmNvbGxhYm9yYXRlL0RTWEdOVgpjb2xsYWJvcmF0aW9uL00KY29sbGFib3JhdGlvbmlzdApjb2xsYWJvcmF0aXZlL1kKY29sbGFib3JhdG9yL01TCmNvbGxhZ2UvU00KY29sbGFnZW4KY29sbGFwc2UvTUdEUwpjb2xsYXBzaWJsZQpjb2xsYXIvU01ERwpjb2xsYXJib25lL1NNCmNvbGxhcmQvU00KY29sbGFybGVzcwpjb2xsYXRlL0RTWEdOCmNvbGxhdGVyYWwvTVkKY29sbGF0ZXJhbGl6ZQpjb2xsYXRpb24vTQpjb2xsYXRvci9NUwpjb2xsZWFndWUvTVMKY29sbGVjdCdzCmNvbGxlY3QvQVNHVkQKY29sbGVjdGVkL1UKY29sbGVjdGVkbHkKY29sbGVjdGlibGUvU00KY29sbGVjdGlvbi9BTVMKY29sbGVjdGl2ZS9NWVMKY29sbGVjdGl2aXNtL00KY29sbGVjdGl2aXN0L1NNCmNvbGxlY3Rpdml6YXRpb24vTQpjb2xsZWN0aXZpemUvRFNHCmNvbGxlY3Rvci9NUwpjb2xsZWVuL1NNCmNvbGxlZ2UvU00KY29sbGVnaWFsaXR5L00KY29sbGVnaWFuL01TCmNvbGxlZ2lhdGUKY29sbGlkZS9EU0cKY29sbGllL1JTTVoKY29sbGllci9NCmNvbGxpZXJ5L1NNCmNvbGxpc2lvbi9TTQpjb2xsb2NhdGUvTUdORFNYCmNvbGxvY2F0aW9uL00KY29sbG9pZC9TTQpjb2xsb2lkYWwKY29sbG9xCmNvbGxvcXVpYWwvWQpjb2xsb3F1aWFsaXNtL1NNCmNvbGxvcXVpZXMKY29sbG9xdWl1bS9NUwpjb2xsb3F1eS9NCmNvbGx1ZGUvRFNHCmNvbGx1c2lvbi9NCmNvbGx1c2l2ZQpjb2xvZ25lL1NNCmNvbG9uL1NNCmNvbG9uZWwvU00KY29sb25lbGN5L00KY29sb25lcwpjb2xvbmlhbC9TTVkKY29sb25pYWxpc20vTQpjb2xvbmlhbGlzdC9NUwpjb2xvbmlzdC9TTQpjb2xvbml6YXRpb24vQUNNCmNvbG9uaXplL0NBR1NECmNvbG9uaXplci9NUwpjb2xvbm5hZGUvTURTCmNvbG9ub3Njb3B5L1NNCmNvbG9ueS9TTQpjb2xvcGhvbi9TTQpjb2xvcidzCmNvbG9yL0FFR0RTCmNvbG9yYW50L1NNCmNvbG9yYXRpb24vRU0KY29sb3JhdHVyYS9NUwpjb2xvcmJsaW5kL1AKY29sb3JibGluZG5lc3MvTQpjb2xvcmVkJ3MKY29sb3JlZC9VCmNvbG9yZWRzCmNvbG9yZmFzdC9QCmNvbG9yZmFzdG5lc3MvTQpjb2xvcmZ1bC9QWQpjb2xvcmZ1bG5lc3MvTQpjb2xvcmluZydzCmNvbG9yaXN0L1MKY29sb3JpemF0aW9uL00KY29sb3JpemUvRFNHCmNvbG9ybGVzcy9QWQpjb2xvcmxlc3NuZXNzL00KY29sb3J3YXkvUwpjb2xvc3NhbC9ZCmNvbG9zc2kKY29sb3NzdXMvTQpjb2xvc3RvbXkvU00KY29sb3N0cnVtL00KY29sdC9NUwpjb2x0aXNoCmNvbHVtYmluZS9TTQpjb2x1bW4vU01ECmNvbHVtbmFyCmNvbHVtbmlzdC9TTQpjb20vSkwKY29tYS9NUwpjb21ha2VyL1NNCmNvbWF0b3NlCmNvbWIvTURSWkdKUwpjb21iYXQvU01ER1YKY29tYmF0YW50L1NNCmNvbWJhdGl2ZW5lc3MvTQpjb21iZWQvVQpjb21iZXIvTQpjb21iaW5hdGlvbi9TTQpjb21iaW5lJ3MKY29tYmluZS9BRFNHCmNvbWJpbmVkL1UKY29tYmluZXIvTVMKY29tYmluZ3MvTQpjb21iby9TTQpjb21idXN0aWJpbGl0eS9NCmNvbWJ1c3RpYmxlL01TCmNvbWJ1c3Rpb24vTQpjb21idXN0aXZlCmNvbWUvSU1aR1JTCmNvbWViYWNrL01TCmNvbWVkaWFuL01TCmNvbWVkaWMKY29tZWRpZW5uZS9NUwpjb21lZG93bi9NUwpjb21lZHkvU00KY29tZWxpbmVzcy9NCmNvbWVseS9SUFQKY29tZXIncwpjb21lc3RpYmxlL1NNCmNvbWV0L1NNCmNvbWV1cHBhbmNlL1NNCmNvbWZpdCdzCmNvbWZpdC9FUwpjb21mb3J0L0VTTURHCmNvbWZvcnRhYmxlL1AKY29tZm9ydGFibGVuZXNzL00KY29tZm9ydGFibHkvVQpjb21mb3J0ZXIvTVMKY29tZm9ydGluZy9ZCmNvbWZvcnRsZXNzCmNvbWZ5L1JUCmNvbWljL1NNCmNvbWljYWwvWQpjb21pY2FsaXR5L00KY29taW5nL00KY29taXR5L00KY29tbQpjb21tYS9TTQpjb21tYW5kL1NNRFJMWkcKY29tbWFuZGFudC9NUwpjb21tYW5kZWVyL0dEUwpjb21tYW5kZXIvTQpjb21tYW5kbWVudC9NUwpjb21tYW5kby9TTQpjb21tZW1vcmF0ZS9YR05WRFMKY29tbWVtb3JhdGlvbi9NCmNvbW1lbW9yYXRvci9NUwpjb21tZW5jZS9BRFNMRwpjb21tZW5jZW1lbnQvQU0KY29tbWVuY2VtZW50cwpjb21tZW5kL0FTREJHCmNvbW1lbmRhYmx5CmNvbW1lbmRhdGlvbi9BTVMKY29tbWVuZGF0b3J5CmNvbW1lbnN1cmFibGUKY29tbWVuc3VyYXRlL0lZCmNvbW1lbnQvR1NNRApjb21tZW50YXJ5L1NNCmNvbW1lbnRhdGUvRFNHCmNvbW1lbnRhdG9yL1NNCmNvbW1lcmNlL00KY29tbWVyY2lhbC9TTVkKY29tbWVyY2lhbGlzbS9NCmNvbW1lcmNpYWxpemF0aW9uL00KY29tbWVyY2lhbGl6ZS9HRFMKY29tbWllL1NNCmNvbW1pbmdsZS9EU0cKY29tbWlzZXJhdGUvR05WRFNYCmNvbW1pc2VyYXRpb24vTQpjb21taXNzYXIvU00KY29tbWlzc2FyaWF0L1NNCmNvbW1pc3NhcnkvU00KY29tbWlzc2lvbidzCmNvbW1pc3Npb24vQUNTR0QKY29tbWlzc2lvbmFpcmUvUwpjb21taXNzaW9uZXIvU00KY29tbWl0L0FTCmNvbW1pdG1lbnQvTVMKY29tbWl0dGFsL1NNCmNvbW1pdHRlZC9BVQpjb21taXR0ZWUvU00KY29tbWl0dGVlbWFuL00KY29tbWl0dGVlbWVuCmNvbW1pdHRlZXdvbWFuL00KY29tbWl0dGVld29tZW4KY29tbWl0dGVyL1MKY29tbWl0dGluZy9BCmNvbW1vZGUncwpjb21tb2RlL0VJUwpjb21tb2RpZmljYXRpb24KY29tbW9kaW91cy9ZCmNvbW1vZGl0eS9TTQpjb21tb2RvcmUvU00KY29tbW9uJ3MKY29tbW9uL1VQUllUCmNvbW1vbmFsaXR5L1MKY29tbW9uYWx0eS9NCmNvbW1vbmVyL01TCmNvbW1vbm5lc3MvVU0KY29tbW9ucGxhY2UvTVMKY29tbW9ucwpjb21tb25zZW5zZQpjb21tb253ZWFsL01ICmNvbW1vbndlYWx0aC9NCmNvbW1vbndlYWx0aHMKY29tbW90aW9uL1NNCmNvbW11bmFsL1kKY29tbXVuZS9YRFNNR04KY29tbXVuaWNhYmlsaXR5L00KY29tbXVuaWNhYmxlL0kKY29tbXVuaWNhYmx5CmNvbW11bmljYW50L01TCmNvbW11bmljYXRlL0dOVkRTWApjb21tdW5pY2F0aW9uL00KY29tbXVuaWNhdGl2ZS9VCmNvbW11bmljYXRvci9TTQpjb21tdW5pb24vTQpjb21tdW5pcXVlL1NNCmNvbW11bmlzbS9NCmNvbW11bmlzdC9TTQpjb21tdW5pc3RpYwpjb21tdW5pdHkvU00KY29tbXV0YXRpb24vTVMKY29tbXV0YXRpdmUKY29tbXV0YXRvci9TTQpjb21tdXRlL0JEUlNNWkcKY29tbXV0ZXIvTQpjb21wL01EWUdTCmNvbXBhY3QvVEdTTURSWVAKY29tcGFjdGlvbgpjb21wYWN0bmVzcy9NCmNvbXBhY3Rvci9TTQpjb21wYW5pb24vU0JNCmNvbXBhbmlvbmFibHkKY29tcGFuaW9uc2hpcC9NCmNvbXBhbmlvbndheS9NUwpjb21wYW55L1NNCmNvbXBhcmFiaWxpdHkvTQpjb21wYXJhYmxlL0kKY29tcGFyYWJseS9JCmNvbXBhcmF0aXZlL01ZUwpjb21wYXJlL0JEU01HCmNvbXBhcmlzb24vTVMKY29tcGFydG1lbnQvU00KY29tcGFydG1lbnRhbApjb21wYXJ0bWVudGFsaXphdGlvbi9NCmNvbXBhcnRtZW50YWxpemUvRFNHCmNvbXBhc3MvR01EUwpjb21wYXNzaW9uL00KY29tcGFzc2lvbmF0ZS9ZCmNvbXBhdGliaWxpdHkvSU0KY29tcGF0aWJsZS9JTVMKY29tcGF0aWJseS9JCmNvbXBhdHJpb3QvTVMKY29tcGVlci9TTQpjb21wZWwvUwpjb21wZWxsZWQKY29tcGVsbGluZy9ZCmNvbXBlbmRpb3VzCmNvbXBlbmRpdW0vU00KY29tcGVuc2F0ZS9EU1hHTgpjb21wZW5zYXRlZC9VCmNvbXBlbnNhdGlvbi9NCmNvbXBlbnNhdG9yeQpjb21wZXJlL0RTRwpjb21wZXRlL0RTRwpjb21wZXRlbmNlL0lNCmNvbXBldGVuY2VzCmNvbXBldGVuY2llcwpjb21wZXRlbmN5L0lNCmNvbXBldGVudC9JWQpjb21wZXRpdGlvbi9TTQpjb21wZXRpdGl2ZS9QWQpjb21wZXRpdGl2ZW5lc3MvTQpjb21wZXRpdG9yL1NNCmNvbXBpbGF0aW9uL1NNCmNvbXBpbGUvRFJTWkcKY29tcGlsZXIvTQpjb21wbGFjZW5jZS9NCmNvbXBsYWNlbmN5L00KY29tcGxhY2VudC9ZCmNvbXBsYWluL0RSWkdTCmNvbXBsYWluYW50L01TCmNvbXBsYWluZXIvTQpjb21wbGFpbnQvU00KY29tcGxhaXNhbmNlL00KY29tcGxhaXNhbnQvWQpjb21wbGVjdGVkCmNvbXBsZW1lbnQvU0dNRApjb21wbGVtZW50YXJ5CmNvbXBsZXRlL1BZVEdOWERSUwpjb21wbGV0ZWQvVQpjb21wbGV0ZW5lc3MvSU0KY29tcGxldGlvbi9NCmNvbXBsZXgvTVNZCmNvbXBsZXhpb24vTURTCmNvbXBsZXhpb25hbApjb21wbGV4aXR5L1NNCmNvbXBsaWFuY2UvTQpjb21wbGlhbnQvWQpjb21wbGljYXRlL0dEUwpjb21wbGljYXRlZC9ZCmNvbXBsaWNhdGlvbi9NCmNvbXBsaWNpdApjb21wbGljaXR5L00KY29tcGxpbWVudC9NREdTCmNvbXBsaW1lbnRhcnkvVQpjb21wbHkvTkRTWEcKY29tcG8vUwpjb21wb25lbnQvU00KY29tcG9ydC9MU0dECmNvbXBvcnRtZW50L00KY29tcG9zZS9BRUNHU0QKY29tcG9zZWRseQpjb21wb3Nlci9NUwpjb21wb3NpdGUvTVlHTlhEUwpjb21wb3NpdGlvbi9DTQpjb21wb3NpdG9yL1NNCmNvbXBvc3QvU0dNRApjb21wb3N1cmUvRU0KY29tcG90ZS9TTQpjb21wb3VuZC9HTURCUwpjb21wb3VuZGVkL1UKY29tcHJlaGVuZC9TREcKY29tcHJlaGVuc2liaWxpdHkvSU0KY29tcHJlaGVuc2libGUvSQpjb21wcmVoZW5zaWJseS9JCmNvbXByZWhlbnNpb24vSU0KY29tcHJlaGVuc2lvbnMKY29tcHJlaGVuc2l2ZS9QTVlTCmNvbXByZWhlbnNpdmVuZXNzL00KY29tcHJlc3Mncwpjb21wcmVzcy9DR0RTCmNvbXByZXNzZWQvVQpjb21wcmVzc2libGUKY29tcHJlc3Npb24vQ00KY29tcHJlc3Nvci9TTQpjb21wcmlzZS9HRFMKY29tcHJvbWlzZS9NR0RTCmNvbXB0cm9sbGVyL01TCmNvbXB1bHNpb24vTVMKY29tcHVsc2l2ZS9ZUApjb21wdWxzaXZlbmVzcy9NCmNvbXB1bHNvcmlseQpjb21wdWxzb3J5L1NNCmNvbXB1bmN0aW9uL1NNCmNvbXB1dGF0aW9uL1NNCmNvbXB1dGF0aW9uYWwvWQpjb21wdXRlL0FEU0cKY29tcHV0ZXIvTVMKY29tcHV0ZXJhdGUKY29tcHV0ZXJpemF0aW9uL00KY29tcHV0ZXJpemUvR0RTCmNvbXB1dGluZy9NCmNvbXJhZGUvU01ZCmNvbXJhZGVzaGlwL00KY29uL0dTTQpjb25jYXRlbmF0ZS9YRFNHTgpjb25jYXRlbmF0aW9uL00KY29uY2F2ZS9ZUApjb25jYXZlbmVzcy9NCmNvbmNlYWwvU0RSWkdCTApjb25jZWFsZWQvVQpjb25jZWFsZXIvTQpjb25jZWFsbWVudC9NCmNvbmNlaXQvU01ECmNvbmNlaXRlZC9QWQpjb25jZWl0ZWRuZXNzL00KY29uY2VpdmFibGUvSQpjb25jZWl2YWJseS9JCmNvbmNlaXZlL0RTR0IKY29uY2VudHJhdGUvRFNNR05YCmNvbmNlbnRyYXRpb24vTQpjb25jZW50cmljCmNvbmNlbnRyaWNhbGx5CmNvbmNlcHQvU00KY29uY2VwdGlvbi9TTQpjb25jZXB0aW9uYWwKY29uY2VwdHVhbC9ZCmNvbmNlcHR1YWxpemF0aW9uL01TCmNvbmNlcHR1YWxpemUvRFNHCmNvbmNlcm4vVU1ECmNvbmNlcm5lZC9VWQpjb25jZXJuaW5nCmNvbmNlcm5zCmNvbmNlcnQncwpjb25jZXJ0L0VTREcKY29uY2VydGVkL1kKY29uY2VydGdvZXIvUwpjb25jZXJ0aW5hL1NHTUQKY29uY2VydGl6ZS9EU0cKY29uY2VydG1hc3Rlci9NUwpjb25jZXJ0by9TTQpjb25jZXNzaW9uYWlyZS9NUwpjb25jZXNzaW9uYWwKY29uY2Vzc2lvbmFyeQpjb25jaC9NCmNvbmNoaWUvUwpjb25jaHMKY29uY2llcmdlL01TCmNvbmNpbGlhdGUvRFNHTgpjb25jaWxpYXRpb24vQU0KY29uY2lsaWF0b3IvU00KY29uY2lsaWF0b3J5CmNvbmNpc2UvUlBZVE4KY29uY2lzZW5lc3MvTQpjb25jaXNpb24vTQpjb25jbGF2ZS9TTQpjb25jbHVkZS9EU0cKY29uY2x1c2lvbi9NUwpjb25jbHVzaXZlL0lZUApjb25jbHVzaXZlbmVzcy9JTQpjb25jb2N0L1NERwpjb25jb2N0aW9uL01TCmNvbmNvbWl0YW50L01ZUwpjb25jb3JkL00KY29uY29yZGFuY2UvU00KY29uY29yZGFudApjb25jb3JkYXQvU00KY29uY291cnNlL1NNCmNvbmNyZXRlL0RTUE1ZR05YCmNvbmNyZXRlbmVzcy9NCmNvbmNyZXRpb24vTQpjb25jdWJpbmFnZS9NCmNvbmN1YmluZS9NUwpjb25jdXBpc2NlbmNlL00KY29uY3VwaXNjZW50CmNvbmN1ci9TCmNvbmN1cnJlZApjb25jdXJyZW5jZS9TTQpjb25jdXJyZW5jeQpjb25jdXJyaW5nCmNvbmN1c3MvVgpjb25jdXNzaW9uL1NNCmNvbmRlbW4vU0RSWkcKY29uZGVtbmF0aW9uL01TCmNvbmRlbW5hdG9yeQpjb25kZW1uZXIvTQpjb25kZW5zYXRlL01OWFMKY29uZGVuc2F0aW9uL00KY29uZGVuc2UvRFJTWkcKY29uZGVuc2VyL00KY29uZGVzY2VuZGluZy9ZCmNvbmRlc2NlbnNpb24vTQpjb25kaWduCmNvbmRpbWVudC9NUwpjb25kaXRpb24ncwpjb25kaXRpb24vQUdTRApjb25kaXRpb25hbC9TTVkKY29uZGl0aW9uZWQvVQpjb25kaXRpb25lci9TTQpjb25kaXRpb25pbmcvTQpjb25kby9TTQpjb25kb2xlbmNlL1NNCmNvbmRvbS9TTQpjb25kb21pbml1bS9NUwpjb25kb25lL0RTRwpjb25kb3IvU00KY29uZHVjZS9EU0dWCmNvbmR1Y3QvTURHVgpjb25kdWN0YW5jZS9NCmNvbmR1Y3RpYmlsaXR5L00KY29uZHVjdGlibGUKY29uZHVjdGlvbi9NCmNvbmR1Y3Rpdml0eS9NCmNvbmR1Y3Rvci9NUwpjb25kdWN0cmVzcy9NUwpjb25kdWl0L1NNCmNvbmUvTQpjb25leXMKY29uZmFiL1NNCmNvbmZhYmJlZApjb25mYWJiaW5nCmNvbmZhYnVsYXRlL1hEU0dOCmNvbmZhYnVsYXRpb24vTQpjb25mZWN0aW9uL1NaTVIKY29uZmVjdGlvbmVyL00KY29uZmVjdGlvbmVyeS9TTQpjb25mZWRlcmFjeS9TTQpjb25mZWRlcmF0ZS9NCmNvbmZlci9TCmNvbmZlcmVlL1NNCmNvbmZlcmVuY2UvTUdTCmNvbmZlcnJhYmxlCmNvbmZlcnJhbC9NCmNvbmZlcnJlZApjb25mZXJyZXIvTVMKY29uZmVycmluZwpjb25mZXNzZWQvWQpjb25mZXNzaW9uL1NNCmNvbmZlc3Npb25hbC9TTQpjb25mZXNzb3IvTVMKY29uZmV0dGkvTQpjb25maWRhbnQvTVMKY29uZmlkYW50ZS9TTQpjb25maWRlL0RSU1pHCmNvbmZpZGVuY2UvU00KY29uZmlkZW50L1kKY29uZmlkZW50aWFsL1kKY29uZmlkZW50aWFsaXR5L00KY29uZmlkZXIvTQpjb25maWRpbmcvWQpjb25maWd1cmF0aW9uL1MKY29uZmlndXJlL0IKY29uZmluZWQvVQpjb25maW5lbWVudC9NUwpjb25maXJtL0FTREcKY29uZmlybWF0aW9uL0FTTQpjb25maXJtYXRvcnkKY29uZmlybWVkL1UKY29uZmlzY2F0ZS9EU0dOWApjb25maXNjYXRpb24vTQpjb25maXNjYXRvci9TTQpjb25maXNjYXRvcnkKY29uZmxhZ3JhdGlvbi9NUwpjb25mbGF0ZS9YRFNHTgpjb25mbGF0aW9uL00KY29uZmxpY3QvU0dNRApjb25mbHVlbmNlL01TCmNvbmZsdWVudApjb25mb3JtL1pCCmNvbmZvcm1hYmxlL1UKY29uZm9ybWFuY2UvTQpjb25mb3JtaXNtL00KY29uZm9ybWlzdC9TTQpjb25mb3JtaXR5L00KY29uZnJlcmUvTVMKY29uZnJvbnRhdGlvbi9TTQpjb25mcm9udGF0aW9uYWwKY29uZnVzZS9SWgpjb25mdXNlZC9ZCmNvbmZ1c2luZy9ZCmNvbmZ1dGF0aW9uL00KY29uZnV0ZS9EU0cKY29uZ2EvU01ERwpjb25nZWFsL1NMREcKY29uZ2VhbG1lbnQvTQpjb25nZXIvU00KY29uZ2VyaWVzL00KY29uZ2VzdC9TREdWCmNvbmdlc3Rpb24vTQpjb25nbG9tZXJhdGUvRFNYTUdOCmNvbmdsb21lcmF0aW9uL00KY29uZ3JhdHMvTQpjb25ncmF0dWxhdGUvWEdORFMKY29uZ3JhdHVsYXRpb24vTQpjb25ncmF0dWxhdG9yeQpjb25ncmVnYW50L01TCmNvbmdyZWdhdGUvR05EU1gKY29uZ3JlZ2F0aW9uL00KY29uZ3JlZ2F0aW9uYWwKY29uZ3JlZ2F0aW9uYWxpc20vTQpjb25ncmVnYXRpb25hbGlzdC9NUwpjb25ncmVzcy9NUwpjb25ncmVzc2lvbmFsCmNvbmdyZXNzbWFuL00KY29uZ3Jlc3NtZW4KY29uZ3Jlc3NwZW9wbGUKY29uZ3Jlc3NwZXJzb24vTVMKY29uZ3Jlc3N3b21hbi9NCmNvbmdyZXNzd29tZW4KY29uZ3J1ZW5jZS9NCmNvbmdydWVudC9ZCmNvbmdydWl0eS9JU00KY29uZ3J1b3VzCmNvbmljL1NNCmNvbmljYWwvWQpjb25pZmVyL1NNCmNvbmlmZXJvdXMKY29uamVjdHVyYWwKY29uamVjdHVyZS9NR0RTCmNvbmpvaW50CmNvbmp1Z2FsL1kKY29uanVnYXRlL0RTWEdOCmNvbmp1Z2F0aW9uL00KY29uanVuY3QvVk1TCmNvbmp1bmN0aXZhL1NNCmNvbmp1bmN0aXZlL1NNCmNvbmp1bmN0aXZpdGlzL00KY29uanVyYXRpb24vTVMKY29uanVyZS9EUlNaRwpjb25qdXJlci9NCmNvbmsvTURSWgpjb25tYW4KY29ubmVjdC9BRURWR1MKY29ubmVjdGFibGUKY29ubmVjdGVkL1UKY29ubmVjdGlvbi9FTVMKY29ubmVjdGl2ZS9NUwpjb25uZWN0aXZpdHkvTQpjb25uZWN0b3IvTVMKY29ubmVkCmNvbm5pbmcKY29ubmlwdGlvbi9NUwpjb25uaXZhbmNlL00KY29ubml2ZS9EUlNaRwpjb25uaXZlci9NCmNvbm5vaXNzZXVyL1NNCmNvbm5vdGF0aXZlCmNvbm51YmlhbApjb25xdWVyL0FTREcKY29ucXVlcmFibGUvVQpjb25xdWVyZWQvVQpjb25xdWVyb3IvTVMKY29ucXVlc3QvQU0KY29ucXVpc3RhZG9yL1NNCmNvbnMvRFNHCmNvbnNhbmd1aW5lb3VzCmNvbnNhbmd1aW5pdHkvTQpjb25zY2llbmNlbGVzcwpjb25zY2llbnRpb3VzL1BZCmNvbnNjaWVudGlvdXNuZXNzL00KY29uc2Npb3VzL1VZUApjb25zY2lvdXNuZXNzL1VNCmNvbnNjaW91c25lc3Nlcwpjb25zY3JpcHRpb24vTQpjb25zZWNyYXRlL0FEU0dOCmNvbnNlY3JhdGVkL1UKY29uc2VjcmF0aW9uL0FNCmNvbnNlY3JhdGlvbnMKY29uc2VjdXRpdmUvWQpjb25zZW5zdWFsCmNvbnNlbnN1cy9NUwpjb25zZW50L1NNREcKY29uc2VxdWVuY2UvU00KY29uc2VxdWVudC9ZCmNvbnNlcXVlbnRpYWwvSVkKY29uc2VydmFuY3kvU00KY29uc2VydmF0aW9uL00KY29uc2VydmF0aW9uaXNtL00KY29uc2VydmF0aW9uaXN0L1NNCmNvbnNlcnZhdGlzbS9NCmNvbnNlcnZhdGl2ZS9NWVMKY29uc2VydmF0b2lyZS9TCmNvbnNlcnZhdG9yL1NNCmNvbnNlcnZhdG9yeS9TTQpjb25zaWRlci9BR1NECmNvbnNpZGVyYWJsZS9JCmNvbnNpZGVyYWJseQpjb25zaWRlcmF0ZS9JUFlOCmNvbnNpZGVyYXRlbmVzcy9JTQpjb25zaWRlcmF0aW9uL0FJTQpjb25zaWRlcmF0aW9ucwpjb25zaWRlcmVkL1UKY29uc2lnbi9BU0RHCmNvbnNpZ25lZS9NUwpjb25zaWdubWVudC9NUwpjb25zaXN0L1NERwpjb25zaXN0ZW5jZS9NUwpjb25zaXN0ZW5jeS9JU00KY29uc2lzdGVudC9JWQpjb25zaXN0b3J5L1NNCmNvbnNvbGFibGUvSQpjb25zb2xhdGlvbi9NUwpjb25zb2xhdG9yeQpjb25zb2xpZGF0ZS9YRFNHTgpjb25zb2xpZGF0ZWQvVQpjb25zb2xpZGF0aW9uL00KY29uc29saWRhdG9yL01TCmNvbnNvbGluZy9ZCmNvbnNvbW1lL00KY29uc29uYW5jZS9TTQpjb25zb25hbnQvU01ZCmNvbnNvcnRpYQpjb25zb3J0aXVtL00KY29uc3BlY3R1cy9NUwpjb25zcGljdW91cy9JUFkKY29uc3BpY3VvdXNuZXNzL0lNCmNvbnNwaXJhY3kvU00KY29uc3BpcmF0b3IvTVMKY29uc3BpcmF0b3JpYWwvWQpjb25zcGlyZS9HRApjb25zdGFibGUvU00KY29uc3RhYnVsYXJ5L1NNCmNvbnN0YW5jeS9JTQpjb25zdGFudC9NWVMKY29uc3RlbGxhdGlvbi9TTQpjb25zdGVybmF0aW9uL00KY29uc3RpcGF0ZS9HTkRTCmNvbnN0aXBhdGlvbi9NCmNvbnN0aXR1ZW5jeS9TTQpjb25zdGl0dWVudC9TTQpjb25zdGl0dXRlL0FEU0dOVgpjb25zdGl0dXRpb24vQU0KY29uc3RpdHV0aW9uYWwvTVlTCmNvbnN0aXR1dGlvbmFsaXNtCmNvbnN0aXR1dGlvbmFsaXR5L1VNCmNvbnN0aXR1dGlvbnMKY29uc3RyYWluZWQvVQpjb25zdHJhaW50L1NNCmNvbnN0cmljdC9HVlNECmNvbnN0cmljdGlvbi9TTQpjb25zdHJpY3Rvci9TTQpjb25zdHJ1YWJsZQpjb25zdHJ1Y3Qncwpjb25zdHJ1Y3QvQ0FEVkdTCmNvbnN0cnVjdGlvbi9DQU1TCmNvbnN0cnVjdGlvbmFsCmNvbnN0cnVjdGlvbmlzdCdzCmNvbnN0cnVjdGlvbmlzdC9DUwpjb25zdHJ1Y3RpdmUvWVAKY29uc3RydWN0aXZlbmVzcy9NCmNvbnN0cnVjdG9yL01TCmNvbnN0cnVlL0dEUwpjb25zdWwvS1NNCmNvbnN1bGFyL0sKY29uc3VsYXRlL1NNCmNvbnN1bHNoaXAvTQpjb25zdWx0L0dTRApjb25zdWx0YW5jeS9TTQpjb25zdWx0YW50L01TCmNvbnN1bHRhdGlvbi9NUwpjb25zdWx0YXRpdmUKY29uc3VtYWJsZS9TTQpjb25zdW1lL0JEUlNaRwpjb25zdW1lZC9VCmNvbnN1bWVyL00KY29uc3VtZXJpc20vTQpjb25zdW1lcmlzdC9NUwpjb25zdW1tYXRlL1lHTlhEUwpjb25zdW1tYXRlZC9VCmNvbnN1bXB0aW9uL00KY29uc3VtcHRpdmUvU00KY29udApjb250YWN0L0FTREcKY29udGFjdGFibGUKY29udGFnaW9uL01TCmNvbnRhZ2lvdXMvUFkKY29udGFnaW91c25lc3MvTQpjb250YWluL1NCTERSWkcKY29udGFpbmVyL00KY29udGFpbmVyaXphdGlvbi9NCmNvbnRhaW5lcml6ZS9EU0cKY29udGFpbm1lbnQvTQpjb250YW1pbmFudC9TTQpjb250YW1pbmF0ZS9BQ0RTRwpjb250YW1pbmF0ZWQvVQpjb250YW1pbmF0aW9uL0NNCmNvbnRhbWluYXRvci9TTQpjb250ZApjb250ZW1uL1NERwpjb250ZW1wbGF0ZS9EU0dOVgpjb250ZW1wbGF0aW9uL00KY29udGVtcGxhdGl2ZS9TTVkKY29udGVtcG9yYW5laXR5L00KY29udGVtcG9yYW5lb3VzL1kKY29udGVtcHQvTQpjb250ZW1wdGlibGUKY29udGVtcHRpYmx5CmNvbnRlbXB0dW91cy9ZUApjb250ZW1wdHVvdXNuZXNzL00KY29udGVuZGVyL01TCmNvbnRlbnQvRVNMTURHCmNvbnRlbnRlZC9FWQpjb250ZW50ZWRuZXNzL00KY29udGVudGlvbi9TTQpjb250ZW50aW91cy9ZUApjb250ZW50aW91c25lc3MvTQpjb250ZW50bHkKY29udGVudG1lbnQvRU0KY29udGVybWlub3VzL1kKY29udGVzdGFibGUvSQpjb250ZXN0YW50L01TCmNvbnRlc3RlZC9VCmNvbnRleHR1YWxpemF0aW9uCmNvbnRleHR1YWxpemUvRFNHCmNvbnRpZ3VpdHkvTQpjb250aWd1b3VzL1kKY29udGluZW5jZS9JTQpjb250aW5lbnQvU00KY29udGluZW50YWwvU00KY29udGluZ2VuY3kvU00KY29udGluZ2VudC9TTVkKY29udGludWEKY29udGludWFsL1kKY29udGludWFuY2UvRU1TCmNvbnRpbnVhdGlvbi9FTVMKY29udGludWUvRUdEUwpjb250aW51aXR5L0VTTQpjb250aW51b3VzL0VZCmNvbnRpbnV1bS9NCmNvbnRvcnQvR0QKY29udG9ydGlvbi9NUwpjb250b3J0aW9uaXN0L1NNCmNvbnRyYWJhbmQvTQpjb250cmFiYXNzb29uL1MKY29udHJhY2VwdGlvbi9NCmNvbnRyYWNlcHRpdmUvU00KY29udHJhY3QvTURHCmNvbnRyYWN0aWJsZQpjb250cmFjdGlsZQpjb250cmFjdGlsaXR5CmNvbnRyYWN0aW9uL1MKY29udHJhY3R1YWwvWQpjb250cmFkaWN0L1NERwpjb250cmFkaWN0aW9uL1NNCmNvbnRyYWRpY3RvcnkKY29udHJhZGlzdGluY3Rpb24vTVMKY29udHJhZmxvdy9TCmNvbnRyYWlsL01TCmNvbnRyYWluZGljYXRlL0dOWERTCmNvbnRyYWluZGljYXRpb24vTQpjb250cmFsdG8vU00KY29udHJhcHRpb24vU00KY29udHJhcHVudGFsL1kKY29udHJhcmlhbi9TTQpjb250cmFyaWFuaXNtCmNvbnRyYXJpZXR5L00KY29udHJhcmlseQpjb250cmFyaW5lc3MvTQpjb250cmFyaXdpc2UKY29udHJhcnkvUFNNCmNvbnRyYXN0L01ER1MKY29udHJhdmVuZS9HRFMKY29udHJhdmVudGlvbi9TTQpjb250cmV0ZW1wcy9NCmNvbnRyaWJ1dGUvWEdORApjb250cmlidXRpb24vTQpjb250cmlidXRvci9NUwpjb250cmlidXRvcnkKY29udHJpdGlvbi9NCmNvbnRyaXZhbmNlL01TCmNvbnRyaXZlL1pHRFJTCmNvbnRyaXZlci9NCmNvbnRyb2wncwpjb250cm9sL0NTCmNvbnRyb2xsYWJsZS9VCmNvbnRyb2xsZWQvVUMKY29udHJvbGxlci9NUwpjb250cm9sbGluZy9DCmNvbnRyb3ZlcnNpYWwvWQpjb250cm92ZXJzeS9TTQpjb250cm92ZXJ0L0RTRwpjb250cm92ZXJ0aWJsZS9JCmNvbnR1bWFjaW91cy9ZCmNvbnR1bWFjeS9NCmNvbnR1bWVsaW91cwpjb250dW1lbHkvU00KY29udHVzZS9YRFNHTgpjb250dXNpb24vTQpjb251bmRydW0vU00KY29udXJiYXRpb24vTVMKY29udmFsZXNjZS9EU0cKY29udmFsZXNjZW5jZS9NUwpjb252YWxlc2NlbnQvU00KY29udmVjdGlvbi9NCmNvbnZlY3Rpb25hbApjb252ZWN0aXZlCmNvbnZlY3Rvci9TCmNvbnZlbmUvQURTRwpjb252ZW5lci9NUwpjb252ZW5pZW5jZS9JTVMKY29udmVuaWVudC9JWQpjb252ZW50L1NNCmNvbnZlbnRpY2xlL01TCmNvbnZlbnRpb24vU00KY29udmVudGlvbmFsL1VZCmNvbnZlbnRpb25hbGl0eS9VTQpjb252ZW50aW9uYWxpemUvR0RTCmNvbnZlbnRpb25lZXIvUwpjb252ZXJnZW5jZS9NUwpjb252ZXJnZW50CmNvbnZlcnNhbnQKY29udmVyc2F0aW9uL01TCmNvbnZlcnNhdGlvbmFsL1kKY29udmVyc2F0aW9uYWxpc3QvU00KY29udmVyc2UvWQpjb252ZXJ0J3MKY29udmVydC9BR1NECmNvbnZlcnRlZC9VCmNvbnZlcnRlci9TTQpjb252ZXJ0aWJpbGl0eS9NCmNvbnZlcnRpYmxlL1NNCmNvbnZleC9ZCmNvbnZleGl0eS9NCmNvbnZleS9TQkRHCmNvbnZleWFuY2UvTUdTCmNvbnZleW9yL01TCmNvbnZpY3QvR1NNRApjb252aWN0aW9uL01TCmNvbnZpbmNlL0dEUwpjb252aW5jZWQvVQpjb252aW5jaW5nL1VZCmNvbnZpdmlhbC9ZCmNvbnZpdmlhbGl0eS9NCmNvbnZva2UvRFNHCmNvbnZvbHV0ZWQKY29udm9sdXRpb24vTVMKY29udm95L1NNREcKY29udnVsc2UvR05WWERTCmNvbnZ1bHNpb24vTQpjb252dWxzaXZlL1kKY29ueS9NCmNvby9HU01ECmNvb2sncwpjb29rL0FER1MKY29va2Jvb2svTVMKY29va2VkL1UKY29va2VyL1NNCmNvb2tlcnkvU00KY29va2hvdXNlL1MKY29va2llL1NNCmNvb2tpbmcvTQpjb29rb3V0L1NNCmNvb2t3YXJlL1NNCmNvb2wvTURSWVpUR1BTCmNvb2xhbnQvU00KY29vbGVyL00KY29vbGllL1NNCmNvb2xuZXNzL00KY29vbi9NUyEKY29vbnNraW4vTVMKY29vcC9NRFJaR1MKY29vcGVyL01ERwpjb29wZXJhZ2UvTQpjb29wZXJhdGUvRFNHTlYKY29vcGVyYXRpb24vTQpjb29wZXJhdGl2ZS9QTVlTCmNvb3BlcmF0aXZlbmVzcy9NCmNvb3BlcmF0b3IvU00KY29vcmRpbmF0ZS9EU01ZR04KY29vcmRpbmF0ZWQvVQpjb29yZGluYXRpb24vTQpjb29yZGluYXRvci9NUwpjb290L01TCmNvb3RpZS9TTQpjb3AvR0pTTUQKY29wYWNldGljCmNvcGF5L00KY29wZS9NUwpjb3BpZXIvU00KY29waWxvdC9TTQpjb3BpbmcvTQpjb3Bpb3VzL1BZCmNvcGlvdXNuZXNzL00KY29wcGVkCmNvcHBlci9TTQpjb3BwZXJoZWFkL1NNCmNvcHBlcnBsYXRlL00KY29wcGVyeQpjb3BwaW5nCmNvcHJhL00KY29wc2UvU00KY29wdGVyL1NNCmNvcHVsYS9TTQpjb3B1bGF0ZS9HTlZEUwpjb3B1bGF0aW9uL00KY29wdWxhdGl2ZS9TTQpjb3B5J3MKY29weS9BRFNHCmNvcHlib29rL1NNCmNvcHljYXQvTVMKY29weWNhdHRlZApjb3B5Y2F0dGluZwpjb3B5aXN0L01TCmNvcHlsZWZ0CmNvcHlyaWdodC9HU01ECmNvcHl3cml0ZXIvTVMKY29xdWV0cnkvU00KY29xdWV0dGUvRFNNRwpjb3F1ZXR0aXNoL1kKY29yCmNvcmFjbGUvU00KY29yYWwvU00KY29yYmVsL1NNCmNvcmQvRUFTR0RNCmNvcmRhZ2UvTQpjb3JkaWFsL1NNWQpjb3JkaWFsaXR5L00KY29yZGlsbGVyYS9NUwpjb3JkaXRlL00KY29yZGxlc3MKY29yZG9uL1NNREcKY29yZG92YW4vTQpjb3JkdXJveS9NUwpjb3JkdXJveXMvTQpjb3JlL01aR0RSUwpjb3JlbGlnaW9uaXN0L1MKY29yZXIvTQpjb3Jlc3BvbmRlbnQvTVMKY29yZ2kvU00KY29yaWFuZGVyL00KY29yaydzCmNvcmsvVURHUwpjb3JrYWdlCmNvcmtlci9TTQpjb3Jrc2NyZXcvU01ERwpjb3JtL01TCmNvcm1vcmFudC9TTQpjb3JuL01EUlpHUwpjb3JuYmFsbC9NUwpjb3JuYnJlYWQvTQpjb3JuY29iL01TCmNvcm5jcmFrZS9TCmNvcm5lYS9TTQpjb3JuZWFsCmNvcm5lci9HTUQKY29ybmVyc3RvbmUvU00KY29ybmV0L1NNCmNvcm5maWVsZC9TCmNvcm5mbGFrZXMvTQpjb3JuZmxvdXIKY29ybmZsb3dlci9TTQpjb3JuaWNlL01TCmNvcm5pbHkKY29ybmluZXNzL00KY29ybm1lYWwvTQpjb3Jucm93L01ER1MKY29ybnN0YWxrL1NNCmNvcm5zdGFyY2gvTQpjb3JudWNvcGlhL01TCmNvcm55L1BSVApjb3JvbGxhL01TCmNvcm9sbGFyeS9TTQpjb3JvbmEvU00KY29yb25hbC9NUwpjb3JvbmFyeS9TTQpjb3JvbmF0aW9uL1NNCmNvcm9uZXIvTVMKY29yb25ldC9NUwpjb3JwCmNvcnBvcmEKY29ycG9yYWwvU00KY29ycG9yYXRlL1hZTgpjb3Jwb3JhdGlvbi9JTQpjb3Jwb3JhdGlzbQpjb3Jwb3JlYWwvWQpjb3Jwb3JlYWxpdHkvTQpjb3Jwcy9NUwpjb3Jwc2UvTQpjb3Jwc21hbi9NCmNvcnBzbWVuCmNvcnB1bGVuY2UvTQpjb3JwdWxlbnQKY29ycHVzL00KY29ycHVzY2xlL01TCmNvcnB1c2N1bGFyCmNvcnIKY29ycmFsL1NNCmNvcnJhbGxlZApjb3JyYWxsaW5nCmNvcnJlY3QvRFJZVEdWU0JQCmNvcnJlY3RlZC9VCmNvcnJlY3Rpb24vU00KY29ycmVjdGlvbmFsCmNvcnJlY3RpdmUvU00KY29ycmVjdG5lc3MvSU0KY29ycmVjdG9yCmNvcnJlbGF0ZS9YRFNNR05WCmNvcnJlbGF0ZWQvVQpjb3JyZWxhdGlvbi9NCmNvcnJlbGF0aXZlL01TCmNvcnJlc3BvbmQvU0RHCmNvcnJlc3BvbmRlbmNlL1NNCmNvcnJlc3BvbmRlbnQvU00KY29ycmVzcG9uZGluZy9ZCmNvcnJpZG9yL1NNCmNvcnJpZS9TCmNvcnJvYm9yYXRlL0dOVkRTWApjb3Jyb2JvcmF0ZWQvVQpjb3Jyb2JvcmF0aW9uL00KY29ycm9ib3JhdG9yL1NNCmNvcnJvYm9yYXRvcnkKY29ycm9kZS9HRFMKY29ycm9zaW9uL00KY29ycm9zaXZlL1NNWQpjb3JydWdhdGUvR05YRFMKY29ycnVnYXRpb24vTQpjb3JydXB0L0RSWVBTVEcKY29ycnVwdGliaWxpdHkvSU0KY29ycnVwdGlibGUvSQpjb3JydXB0aW9uL01TCmNvcnJ1cHRuZXNzL00KY29yc2FnZS9NUwpjb3JzYWlyL01TCmNvcnNldC9TR01ECmNvcnRlZ2UvTVMKY29ydGV4L00KY29ydGljYWwKY29ydGljZXMKY29ydGlzb25lL00KY29ydW5kdW0vTQpjb3J1c2NhdGUvR05EUwpjb3J1c2NhdGlvbi9NCmNvcnZldHRlL1NNCmNvcy9NCmNvc2gvRFNHCmNvc2lnbi9aR1NEUgpjb3NpZ25hdG9yeS9TTQpjb3NpZ25lci9NCmNvc2luZS9TTQpjb3NtZXRpYy9TTQpjb3NtZXRpY2FsbHkKY29zbWV0aWNpYW4vTVMKY29zbWV0b2xvZ2lzdC9NUwpjb3NtZXRvbG9neS9NCmNvc21pYwpjb3NtaWNhbGx5CmNvc21vZ29uaXN0L1NNCmNvc21vZ29ueS9TTQpjb3Ntb2xvZ2ljYWwKY29zbW9sb2dpc3QvU00KY29zbW9sb2d5L1NNCmNvc21vbmF1dC9TTQpjb3Ntb3BvbGl0YW4vTVMKY29zbW9wb2xpdGFuaXNtL00KY29zbW9zL01TCmNvc3BsYXkKY29zcG9uc29yL0dTTUQKY29zc2V0L1NHRApjb3NzZXR0ZWQKY29zc2V0dGluZwpjb3N0L01EWUdTSgpjb3N0YXIvU00KY29zdGFycmVkCmNvc3RhcnJpbmcKY29zdGxpbmVzcy9NCmNvc3RseS9QVFIKY29zdHVtZS9NWkdEUlMKY29zdHVtZXIvTQpjb3N0dW1pZXIvUwpjb3QvU00KY290YW5nZW50L01TCmNvdGUvTVMKY290ZXJpZS9NUwpjb3Rlcm1pbm91cwpjb3RpbGxpb24vU00KY290dGFnZS9NWkdSUwpjb3R0YWdlci9NCmNvdHRhci9TTQpjb3R0ZXIvU00KY290dG9uL1NHTUQKY290dG9ubW91dGgvTQpjb3R0b25tb3V0aHMKY290dG9uc2VlZC9NUwpjb3R0b250YWlsL01TCmNvdHRvbndvb2QvU00KY290dG9ueQpjb3R5bGVkb24vTVMKY291Y2gvTURTRwpjb3VjaGV0dGUvUwpjb3VnYXIvU00KY291Z2gvTURHCmNvdWdocwpjb3VsZApjb3VsZCd2ZQpjb3VsZG4ndApjb3VsZWUvU00KY291bGlzCmNvdWxvbWIvTVMKY291bmNpbC9NUwpjb3VuY2lsbWFuL00KY291bmNpbG1lbgpjb3VuY2lsb3IvTVMKY291bmNpbHBlcnNvbi9TTQpjb3VuY2lsd29tYW4vTQpjb3VuY2lsd29tZW4KY291bnNlbC9KTURHUwpjb3Vuc2Vsb3IvTVMKY291bnQvRUFTTURHCmNvdW50YWJsZS9VCmNvdW50YWJseQpjb3VudGRvd24vTVMKY291bnRlZC9VCmNvdW50ZW5hbmNlJ3MKY291bnRlbmFuY2UvRUdEUwpjb3VudGVyL0VNUwpjb3VudGVyYWN0L1NHVkQKY291bnRlcmFjdGlvbi9NUwpjb3VudGVyYXJndW1lbnQvUwpjb3VudGVyYXR0YWNrL0dNRFMKY291bnRlcmJhbGFuY2UvTUdEUwpjb3VudGVyYmxhc3QvUwpjb3VudGVyY2xhaW0vR1NNRApjb3VudGVyY2xvY2t3aXNlCmNvdW50ZXJjdWx0dXJlL1NNCmNvdW50ZXJlZApjb3VudGVyZXNwaW9uYWdlL00KY291bnRlcmV4YW1wbGUvUwpjb3VudGVyZmFjdHVhbApjb3VudGVyZmVpdC9aR01EUlMKY291bnRlcmZlaXRlci9NCmNvdW50ZXJmb2lsL01TCmNvdW50ZXJpbmcKY291bnRlcmluc3VyZ2VuY3kvU00KY291bnRlcmludGVsbGlnZW5jZS9NCmNvdW50ZXJtYW4vTQpjb3VudGVybWFuZC9HTURTCmNvdW50ZXJtZWFzdXJlL1NNCmNvdW50ZXJtZWxvZHkvUwpjb3VudGVybWVuCmNvdW50ZXJtb3ZlL1MKY291bnRlcm9mZmVuc2l2ZS9TTQpjb3VudGVyb2ZmZXIvU00KY291bnRlcnBhbmUvU00KY291bnRlcnBhcnQvU00KY291bnRlcnBldGl0aW9uCmNvdW50ZXJwb2ludC9NREdTCmNvdW50ZXJwb2lzZS9NR0RTCmNvdW50ZXJwcm9kdWN0aXZlCmNvdW50ZXJyZXZvbHV0aW9uL1NNCmNvdW50ZXJyZXZvbHV0aW9uYXJ5L1NNCmNvdW50ZXJzaWduL0dTTUQKY291bnRlcnNpZ25hdHVyZS9NUwpjb3VudGVyc2luay9HU00KY291bnRlcnNweS9TTQpjb3VudGVyc3Vuawpjb3VudGVydGVub3IvTVMKY291bnRlcnZhaWwvR1NECmNvdW50ZXJ3ZWlnaHQvTVMKY291bnRlc3MvTVMKY291bnRsZXNzCmNvdW50cmlmaWVkCmNvdW50cnkvU00KY291bnRyeW1hbi9NCmNvdW50cnltZW4KY291bnRyeXNpZGUvTVMKY291bnRyeXdpZGUKY291bnRyeXdvbWFuL00KY291bnRyeXdvbWVuCmNvdW50eS9TTQpjb3VudHl3aWRlCmNvdXAncwpjb3VwL0FTCmNvdXBlL1NNCmNvdXBsZSdzCmNvdXBsZS9VQ0dTRApjb3VwbGV0L01TCmNvdXBsaW5nL1NNCmNvdXBvbi9TTQpjb3VyYWdlL00KY291cmFnZW91cy9ZUApjb3VyYWdlb3VzbmVzcy9NCmNvdXJnZXR0ZS9TCmNvdXJpZXIvTURTRwpjb3Vyc2UvRURHTVMKY291cnNlYm9vay9TCmNvdXJzZXIvTVMKY291cnNld29yawpjb3VydC9TTURZRwpjb3VydGVvdXMvRVkKY291cnRlb3VzbmVzcy9NCmNvdXJ0ZXNhbi9TTQpjb3VydGVzeS9FU00KY291cnRob3VzZS9NUwpjb3VydGllci9TTQpjb3VydGxpbmVzcy9NCmNvdXJ0bHkvUFJUCmNvdXJ0cm9vbS9NUwpjb3VydHNoaXAvTVMKY291cnR5YXJkL01TCmNvdXNjb3VzL00KY291c2luL1NNCmNvdXR1cmUvTQpjb3V0dXJpZXIvTVMKY292ZS9NUwpjb3Zlbi9TTQpjb3ZlbmFudC9NRFNHCmNvdmVyJ3MKY292ZXIvQUVVR0RTCmNvdmVyYWdlL00KY292ZXJhbGwvTVMKY292ZXJpbmcncwpjb3ZlcmluZ3MKY292ZXJsZXQvTVMKY292ZXJ0L1NQTVkKY292ZXJ0bmVzcy9NCmNvdmV0L1NERwpjb3ZldG91cy9ZUApjb3ZldG91c25lc3MvTQpjb3ZleS9TTQpjb3cvWkdTTURSCmNvd2FyZC9TTVkKY293YXJkaWNlL00KY293YXJkbGluZXNzL00KY293YmVsbC9NUwpjb3diaXJkL01TCmNvd2JveS9TTQpjb3djYXRjaGVyL01TCmNvd2VyL0RHCmNvd2dpcmwvTVMKY293aGFuZC9NUwpjb3doZXJkL01TCmNvd2hpZGUvTVMKY293bC9NR1NKCmNvd2xpY2svTVMKY293bGluZy9NCmNvd21hbi9NCmNvd21lbgpjb3dvcmtlci9NUwpjb3dwYXQvUwpjb3dwb2tlL01TCmNvd3BveC9NCmNvd3B1bmNoZXIvU00KY293cmllL1NNCmNvd3NoZWQvUwpjb3dzbGlwL1NNCmNveC9HRFMKY294Y29tYi9NUwpjb3hzd2Fpbi9NUwpjb3kvVFBSWQpjb3luZXNzL00KY295b3RlL1NNCmNveXB1L1NNCmNvemVuL1NERwpjb3plbmFnZS9NCmNvemlseQpjb3ppbmVzcy9NCmNvenkvUlNNVFAKY3BkCmNwbApjcHMKY3JhYi9NUwpjcmFiYmVkCmNyYWJiZXIvU00KY3JhYmJpbHkKY3JhYmJpbmVzcy9NCmNyYWJiaW5nCmNyYWJieS9QUlQKY3JhYmdyYXNzL00KY3JhYmxpa2UKY3JhYndpc2UKY3JhY2svU01EUllaR0oKY3JhY2tkb3duL01TCmNyYWNrZXIvTQpjcmFja2VyamFjay9NUwpjcmFja2hlYWQvTVMKY3JhY2tsZS9EU0pNRwpjcmFja2xpbmcvTQpjcmFja3BvdC9NUwpjcmFja3VwL1NNCmNyYWRsZS9EU01HCmNyYWZ0L1NNREcKY3JhZnRpbHkKY3JhZnRpbmVzcy9NCmNyYWZ0c21hbi9NCmNyYWZ0c21hbnNoaXAvTQpjcmFmdHNtZW4KY3JhZnRzcGVvcGxlCmNyYWZ0c3dvbWFuL00KY3JhZnRzd29tZW4KY3JhZnR5L1JUUApjcmFnL01TCmNyYWdnaW5lc3MvTQpjcmFnZ3kvUlBUCmNyYW0vUwpjcmFtbWVkCmNyYW1tZXIvUwpjcmFtbWluZwpjcmFtcC9TTURHCmNyYW1waW5nL00KY3JhbXBvbi9TTQpjcmFuYmVycnkvU00KY3JhbmUvRFNNRwpjcmFuaWFsCmNyYW5pdW0vU00KY3JhbmsvU01ERwpjcmFua2Nhc2UvU00KY3JhbmtpbHkKY3JhbmtpbmVzcy9NCmNyYW5rc2hhZnQvTVMKY3Jhbmt5L1BSVApjcmFubnkvRFNNCmNyYXAvTVMKY3JhcGUvU00KY3JhcHBlZApjcmFwcGVyL1MKY3JhcHBpZS9SU01UCmNyYXBwaW5nCmNyYXBweQpjcmFwcy9NCmNyYXBzaG9vdGVyL01TCmNyYXNoL01EU0cKY3Jhc3MvUllUUApjcmFzc25lc3MvTQpjcmF0ZS9EUlNNWkcKY3JhdGVyL01ERwpjcmF2YXQvU00KY3JhdmUvRFNHSgpjcmF2ZW4vU01ZUApjcmF2ZW5uZXNzL00KY3JhdmluZy9NCmNyYXcvTVMKY3Jhd2RhZC9TTQpjcmF3bC9TTURSWkcKY3Jhd2xlci9NCmNyYXdsc3BhY2UvU00KY3Jhd2x5L1RSU00KY3JheS9TCmNyYXlmaXNoL01TCmNyYXlvbGEvUwpjcmF5b24vR1NNRApjcmF6ZS9EU01HCmNyYXppbHkKY3JhemluZXNzL00KY3JhenkvUFJTTVQKY3JlYWsvU01ERwpjcmVha2lseQpjcmVha2luZXNzL00KY3JlYWt5L1JQVApjcmVhbS9TTURSWkcKY3JlYW1lci9NCmNyZWFtZXJ5L1NNCmNyZWFtaWx5CmNyZWFtaW5lc3MvTQpjcmVhbXkvUlBUCmNyZWFzZS9JQ0dNU0QKY3JlYXRlL0tBRFNHTlYKY3JlYXRpb24ncy9LCmNyZWF0aW9uL0FTTQpjcmVhdGlvbmlzbS9TTQpjcmVhdGlvbmlzdC9TTQpjcmVhdGl2ZS9TTVlQCmNyZWF0aXZlbmVzcy9NCmNyZWF0aXZpdHkvTQpjcmVhdG9yL01TCmNyZWF0dXJlL1NNCmNyZWNoZS9TTQpjcmVkCmNyZWRlbmNlL00KY3JlZGVudGlhbC9TR01ECmNyZWRlbnphL1NNCmNyZWRpYmlsaXR5L0lNCmNyZWRpYmxlL0kKY3JlZGlibHkvSQpjcmVkaXQvRUdTQk1ECmNyZWRpdGFibHkvRQpjcmVkaXRvci9TTQpjcmVkaXR3b3J0aHkvUApjcmVkby9TTQpjcmVkdWxpdHkvSU0KY3JlZHVsb3VzL0lZCmNyZWR1bG91c25lc3MvTQpjcmVlZC9TTQpjcmVlay9TTQpjcmVlbC9TTQpjcmVlcC9TTVJaRwpjcmVlcGVyL00KY3JlZXBpbHkKY3JlZXBpbmVzcy9NCmNyZWVweS9UUFIKY3JlbWFpbnMvTQpjcmVtYXRlL0dORFNYCmNyZW1hdGlvbi9NCmNyZW1hdG9yaWEKY3JlbWF0b3JpdW0vTVMKY3JlbWF0b3J5L1NNCmNyZW1lL1NNCmNyZW5lbGF0ZS9YR05EUwpjcmVuZWxhdGlvbi9NCmNyZW9sZS9TTQpjcmVvc290ZS9NR0RTCmNyZXBlL1NNCmNyZXB0CmNyZXB1c2N1bGFyCmNyZXNjZW5kby9DU00KY3Jlc2NlbnQvTVMKY3Jlc3MvTQpjcmVzdC9TTURHCmNyZXN0ZmFsbGVuCmNyZXN0bGVzcwpjcmV0YWNlb3VzCmNyZXRpbi9TTQpjcmV0aW5pc20vTQpjcmV0aW5vdXMKY3JldG9ubmUvTQpjcmV2YXNzZS9TTQpjcmV2aWNlL01TCmNyZXcvTURHUwpjcmV3ZWwvTQpjcmV3ZWx3b3JrL00KY3Jld21hbi9NCmNyZXdtZW4KY3JpYi9NUwpjcmliYmFnZS9NCmNyaWJiZWQKY3JpYmJlci9NUwpjcmliYmluZwpjcmljay9TTURHCmNyaWNrZXQvTVJTWkcKY3JpY2tldGVyL00KY3JpZXIvTQpjcmlrZXkKY3JpbWUvU00KY3JpbWluYWwvTVlTCmNyaW1pbmFsaXR5L00KY3JpbWluYWxpemUvQ0dEUwpjcmltaW5vbG9naXN0L01TCmNyaW1pbm9sb2d5L00KY3JpbXAvU01ERwpjcmltc29uL1NNREcKY3JpbmdlL0RTTUcKY3JpbmtsZS9EU01HCmNyaW5rbHkvUlQKY3Jpbm9saW5lL1NNCmNyaXBlcwpjcmlwcGxlL0RSU01aRwpjcmlwcGxlci9NCmNyaXBwbGV3YXJlCmNyaXBwbGluZy9ZCmNyaXNlcwpjcmlzaXMvTQpjcmlzcC9TTURSWVRHUApjcmlzcGJyZWFkL1MKY3Jpc3BpbmVzcy9NCmNyaXNwbmVzcy9NCmNyaXNweS9QUlQKY3Jpc3Njcm9zcy9HTURTCmNyaXRlcmlhCmNyaXRlcmlvbi9NCmNyaXRpYy9TTQpjcml0aWNhbC9VWQpjcml0aWNpc20vTVMKY3JpdGljaXplL1pHRFJTCmNyaXRpY2l6ZXIvTQpjcml0aXF1ZS9NR0RTCmNyaXR0ZXIvU00KY3JvYWsvU01ERwpjcm9ha3kvUlQKY3JvY2hldC9TTURSWkcKY3JvY2hldGVyL00KY3JvY2hldGluZy9NCmNyb2NrL1NNRApjcm9ja2VyeS9NCmNyb2NvZGlsZS9TTQpjcm9jdXMvTVMKY3JvZnQvU1JaRwpjcm9pc3NhbnQvTVMKY3JvbmUvU00KY3JvbnkvU00KY3Jvbnlpc20vTQpjcm9vay9TTURHCmNyb29rZWQvUFRSWQpjcm9va2VkbmVzcy9NCmNyb29rbmVjay9TTQpjcm9vbi9TTURSWkcKY3Jvb25lci9NCmNyb3AvTVMKY3JvcGxhbmQvU00KY3JvcHBlZApjcm9wcGVyL01TCmNyb3BwaW5nCmNyb3F1ZXQvTQpjcm9xdWV0dGUvU00KY3Jvc2llci9NUwpjcm9zcydzCmNyb3NzL0FVR1RTRApjcm9zc2Jhci9TTQpjcm9zc2JlYW0vTVMKY3Jvc3Nib25lcy9NCmNyb3NzYm93L1NNCmNyb3NzYm93bWFuL00KY3Jvc3Nib3dtZW4KY3Jvc3NicmVkCmNyb3NzYnJlZWQvU0dNCmNyb3NzY2hlY2svU01ERwpjcm9zc2N1cnJlbnQvTVMKY3Jvc3NjdXQvU00KY3Jvc3NjdXR0aW5nCmNyb3NzZXIKY3Jvc3NmaXJlL01TCmNyb3NzaGF0Y2gvR0RTCmNyb3NzaW5nL1NNCmNyb3NzbHkKY3Jvc3NuZXNzL00KY3Jvc3NvdmVyL01TCmNyb3NzcGF0Y2gvTVMKY3Jvc3NwaWVjZS9TTQpjcm9zc3JvYWQvTVMKY3Jvc3Nyb2Fkcy9NCmNyb3NzdG93bgpjcm9zc3dhbGsvTVMKY3Jvc3N3aW5kL01TCmNyb3Nzd2lzZQpjcm9zc3dvcmQvTVMKY3JvdGNoL01TCmNyb3RjaGV0L1NNCmNyb3RjaGV0eQpjcm91Y2gvR01EUwpjcm91cC9NCmNyb3VwaWVyL00KY3JvdXB5L1pUUgpjcm91dG9uL01TCmNyb3cvTURHUwpjcm93YmFyL01TCmNyb3dkL1NNREcKY3Jvd2RlZC9VCmNyb3dkZnVuZC9TREcKY3Jvd2ZlZXQKY3Jvd2Zvb3QvU00KY3Jvd24vU01ERwpjcm93bmVkL1UKY3J1Y2lhbC9ZCmNydWNpYmxlL1NNCmNydWNpZml4L01TCmNydWNpZml4aW9uL1NNCmNydWNpZm9ybS9TTQpjcnVjaWZ5L0RTRwpjcnVkL00KY3J1ZGR5L1RSCmNydWRlL1JNWVRQCmNydWRlbmVzcy9NCmNydWRpdGVzL00KY3J1ZGl0eS9TTQpjcnVlbC9SWVBUCmNydWVsbmVzcy9NCmNydWVsdHkvU00KY3J1ZXQvU00KY3J1ZnQvU0QKY3J1ZnR5CmNydWlzZS9EUlNNWkcKY3J1aXNlci9NCmNydWxsZXIvTVMKY3J1bWIvU01EWUcKY3J1bWJsZS9NR0RTCmNydW1ibGluZXNzL00KY3J1bWJseS9UUFIKY3J1bWJ5L1RSCmNydW1taW5lc3MvTQpjcnVtbXkvUFRSCmNydW1wZXQvTVMKY3J1bXBsZS9NR0RTCmNydW5jaC9HTURSUwpjcnVuY2hpbmVzcy9NCmNydW5jaHkvVFJQCmNydXBwZXIvTVMKY3J1c2FkZS9NWkdEUlMKY3J1c2FkZXIvTQpjcnVzZS9TTQpjcnVzaC9NRFJTWkcKY3J1c2hlci9NCmNydXNoaW5nL1kKY3J1c3QvU01ERwpjcnVzdGFjZWFuL1NNCmNydXN0YWwKY3J1c3RpbHkKY3J1c3RpbmVzcy9NCmNydXN0eS9UUlAKY3J1dGNoL01TCmNydXgvTVMKY3J5L1pHSkRSU00KY3J5YmFieS9TTQpjcnlvZ2VuaWMvUwpjcnlvZ2VuaWNzL00KY3J5b25pY3MKY3J5b3N1cmdlcnkvTQpjcnlwdC9TTQpjcnlwdGljCmNyeXB0aWNhbGx5CmNyeXB0b2dyYW0vU00KY3J5cHRvZ3JhcGhlci9TTQpjcnlwdG9ncmFwaHkvTQpjcnlzdGFsL1NNCmNyeXN0YWxsaW5lCmNyeXN0YWxsaXphdGlvbi9NCmNyeXN0YWxsaXplL0FEU0cKY3J5c3RhbGxvZ3JhcGhpYwpjcnlzdGFsbG9ncmFwaHkKY3QKY3RuCmN0cgpjdQpjdWIvWkdTTURSCmN1YmJ5aG9sZS9NUwpjdWJlL01TCmN1YmVyL00KY3ViaWMKY3ViaWNhbApjdWJpY2xlL01TCmN1YmlzbS9NCmN1YmlzdC9TTQpjdWJpdC9TTQpjdWJvaWQvUwpjdWNrb2xkL01EU0cKY3Vja29sZHJ5L00KY3Vja29vL1NNCmN1Y3VtYmVyL1NNCmN1ZC9TTQpjdWRkbGUvRFNNRwpjdWRkbHkvVFIKY3VkZ2VsL1NHTURKCmN1ZS9EU01HCmN1ZmYvTURHUwpjdWlzaW5lL1NNCmN1bGluYXJ5CmN1bGwvTURHUwpjdWxtaW5hdGUvWERTR04KY3VsbWluYXRpb24vTQpjdWxvdHRlL1NNCmN1bHBhYmlsaXR5L00KY3VscGFibGUvSQpjdWxwYWJseQpjdWxwcml0L1NNCmN1bHQvTVMKY3VsdGlzbS9NCmN1bHRpc3QvTVMKY3VsdGl2YWJsZQpjdWx0aXZhci9TCmN1bHRpdmF0ZS9CRFNHTgpjdWx0aXZhdGVkL1UKY3VsdGl2YXRpb24vTQpjdWx0aXZhdG9yL01TCmN1bHR1cmFsL1kKY3VsdHVyZS9NR0RTCmN1bHR1cmVkL1UKY3VsdmVydC9NUwpjdW0vU00KY3VtYmVyL1NERwpjdW1iZXJzb21lL1AKY3VtYmVyc29tZW5lc3MvTQpjdW1icm91cwpjdW1pbi9NCmN1bW1lcmJ1bmQvTVMKY3VtbWluZwpjdW11bGF0aXZlL1kKY3VtdWxpCmN1bXVsb25pbWJpCmN1bXVsb25pbWJ1cy9NCmN1bXVsdXMvTQpjdW5laWZvcm0vTQpjdW5uaWxpbmd1cy9NCmN1bm5pbmcvTVJZVApjdW50L01TIQpjdXAvU00KY3VwYm9hcmQvU00KY3VwY2FrZS9NUwpjdXBmdWwvU00KY3VwaWQvU00KY3VwaWRpdHkvTQpjdXBvbGEvU01ECmN1cHBhL1MKY3VwcGVkCmN1cHBpbmcKY3VwcmljCmN1ci9TTVkKY3VyYWJpbGl0eS9NCmN1cmFjYW8KY3VyYWN5L1NNCmN1cmFyZS9NCmN1cmF0ZS9EU01HVgpjdXJhdGl2ZS9NUwpjdXJhdG9yL0tNUwpjdXJhdG9yaWFsCmN1cmIvTURHUwpjdXJiaW5nL00KY3VyYnNpZGUKY3VyYnN0b25lL1NNCmN1cmQvTVMKY3VyZGxlL0RTRwpjdXJlJ3MKY3VyZS9LWkdCRFJTCmN1cmVkL1UKY3VyZXIvS00KY3VyZXR0YWdlL00KY3VyZmV3L1NNCmN1cmlhL00KY3VyaWFlCmN1cmllL1NNCmN1cmlvL1NNCmN1cmlvc2l0eS9TTQpjdXJpb3VzL1lQCmN1cmlvdXNuZXNzL00KY3VyaXVtL00KY3VybCdzCmN1cmwvVURHUwpjdXJsZXIvU00KY3VybGV3L1NNCmN1cmxpY3VlL0RTTUcKY3VybGluZXNzL00KY3VybGluZy9NCmN1cmx5L1JQVApjdXJtdWRnZW9uL01ZUwpjdXJyYW50L01TCmN1cnJlbmN5L1NNCmN1cnJlbnQncwpjdXJyZW50L0ZBWQpjdXJyZW50cwpjdXJyaWN1bGEKY3VycmljdWxhcgpjdXJyaWN1bHVtL00KY3VycnkvRFNNRwpjdXJyeWNvbWIvU0dNRApjdXJzZS9EU01HVgpjdXJzZWQvWQpjdXJzaXZlJ3MKY3Vyc2l2ZS9FQVkKY3Vyc29yL1NNCmN1cnNvcmlseQpjdXJzb3JpbmVzcy9NCmN1cnNvcnkvUApjdXJ0L1JZVFAKY3VydGFpbC9HRFNMCmN1cnRhaWxtZW50L1NNCmN1cnRhaW4vR01EUwpjdXJ0bmVzcy9NCmN1cnRzeS9HRFNNCmN1cnZhY2VvdXMvUApjdXJ2YWNlb3VzbmVzcy9NCmN1cnZhdHVyZS9TTQpjdXJ2ZS9EU01HCmN1cnZ5L1JUCmN1c2hpb24vTURTRwpjdXNoeS9SVApjdXNwL01TCmN1c3BpZC9TTQpjdXNwaWRvci9TTQpjdXNzJ3MKY3Vzcy9GRUdTRApjdXNzZWQvUFkKY3VzdGFyZC9NUwpjdXN0b2RpYWwKY3VzdG9kaWFuL01TCmN1c3RvZGlhbnNoaXAvTQpjdXN0b2R5L00KY3VzdG9tL1NaTVIKY3VzdG9tYXJpbHkKY3VzdG9tYXJ5L1UKY3VzdG9tZXIvTQpjdXN0b21ob3VzZS9TTQpjdXN0b21pemF0aW9uL00KY3VzdG9taXplL0RTRwpjdXQvVFNNUgpjdXRhbmVvdXMKY3V0YXdheS9NUwpjdXRiYWNrL01TCmN1dGUvWVAKY3V0ZW5lc3MvTQpjdXRlc3kvVFIKY3V0ZXkvUwpjdXRpY2xlL01TCmN1dGllL1NNCmN1dGxhc3MvTVMKY3V0bGVyL1NNCmN1dGxlcnkvTQpjdXRsZXQvU00KY3V0b2ZmL1NNCmN1dG91dC9TTQpjdXR0ZXIvU00KY3V0dGhyb2F0L1NNCmN1dHRpbmcvTVlTCmN1dHRsZWZpc2gvTVMKY3V0dXAvU00KY3V0d29ybS9NUwpjdwpjd3QKY3lhbi9NCmN5YW5pZGUvTQpjeWJlcmJ1bGx5L1NNCmN5YmVyY2FmZS9TCmN5YmVybmV0aWMvUwpjeWJlcm5ldGljcy9NCmN5YmVycHVuay9TTQpjeWJlcnNleApjeWJlcnNwYWNlL01TCmN5Ym9yZy9TTQpjeWNsYW1lbi9NUwpjeWNsZS9BRFNNRwpjeWNsaWMKY3ljbGljYWwvWQpjeWNsaXN0L01TCmN5Y2xvbWV0ZXIvTVMKY3ljbG9uZS9NUwpjeWNsb25pYwpjeWNsb3BlZGlhL01TCmN5Y2xvcGVzCmN5Y2xvcHMvTQpjeWNsb3Ryb24vTVMKY3lnbmV0L01TCmN5bGluZGVyL01TCmN5bGluZHJpY2FsCmN5bWJhbC9NUwpjeW1iYWxpc3QvTVMKY3luaWMvU00KY3luaWNhbC9ZCmN5bmljaXNtL00KY3lub3N1cmUvTVMKY3lwcmVzcy9NUwpjeXN0L01TCmN5c3RpYwpjeXN0aXRpcwpjeXRva2luZXMKY3l0b2xvZ2lzdC9TTQpjeXRvbG9neS9NCmN5dG9wbGFzbS9NCmN5dG9wbGFzbWljCmN5dG9zaW5lL00KY3phci9NUwpjemFyaW5hL1NNCmN6YXJpc20KY3phcmlzdC9TTQpkJ0FyZXp6by9NCmQnRXN0YWluZy9NCmQvTlhHSgpkQgpkYWIvU00KZGFiYmVkCmRhYmJlci9NUwpkYWJiaW5nCmRhYmJsZS9aR0RSUwpkYWJibGVyL00KZGFjZS9TTQpkYWNoYS9NUwpkYWNoc2h1bmQvTVMKZGFjdHlsL01TCmRhY3R5bGljL01TCmRhZC9TTQpkYWRhaXNtL00KZGFkYWlzdC9NUwpkYWRkeS9TTQpkYWRvL00KZGFkb2VzCmRhZW1vbi9NUwpkYWVtb25pYwpkYWZmaW5lc3MvTQpkYWZmb2RpbC9TTQpkYWZmeS9QVFIKZGFmdC9QVFJZCmRhZnRuZXNzL00KZGFnL1MKZGFnZ2VyL01TCmRhZ28vUwpkYWdvZXMKZGFndWVycmVvdHlwZS9EU01HCmRhaGxpYS9NUwpkYWlsaW5lc3MvTQpkYWlseS9QU00KZGFpbnRpbHkKZGFpbnRpbmVzcy9NCmRhaW50eS9SU01UUApkYWlxdWlyaS9NUwpkYWlyeS9HU00KZGFpcnlpbmcvTQpkYWlyeW1haWQvTVMKZGFpcnltYW4vTQpkYWlyeW1lbgpkYWlyeXdvbWFuL00KZGFpcnl3b21lbgpkYWlzL01TCmRhaXN5L1NNCmRhbGUvU00KZGFsbGlhbmNlL01TCmRhbGxpZXIvTQpkYWxseS9aR0RSUwpkYWxtYXRpYW4vTVMKZGFtL1NNCmRhbWFnZS9NR0RTCmRhbWFnZWFibGUKZGFtYWdlZC9VCmRhbWFnZXMvTQpkYW1hc2svTURHUwpkYW1lL1NNCmRhbW1lZApkYW1taW5nCmRhbW1pdApkYW1uL1NCR01ECmRhbW5hYmx5CmRhbW5hdGlvbi9NCmRhbW5lZC9UCmRhbXAvU1BYWlRHTUROUlkKZGFtcGVuL1pHRFIKZGFtcGVuZXIvTQpkYW1wZXIvTQpkYW1wbmVzcy9NCmRhbXNlbC9NUwpkYW1zZWxmbHkvU00KZGFtc29uL01TCmRhbmNlL01aR0RSUwpkYW5jZXIvTQpkYW5jaW5nL00KZGFuZGVsaW9uL1NNCmRhbmRlci9NCmRhbmRpZnkvR0RTCmRhbmRsZS9HRFMKZGFuZHJ1ZmYvTQpkYW5keS9UUlNNCmRhbmcvU1pHRFIKZGFuZ2VyL00KZGFuZ2Vyb3VzL1kKZGFuZ2xlL1pHRFJTCmRhbmdsZXIvTQpkYW5pc2gvTVMKZGFuay9QVFJZCmRhbmtuZXNzL00KZGFuc2V1c2UvTVMKZGFwcGVyL1RSCmRhcHBsZS9NR0RTCmRhcmUvRFJTTVpHCmRhcmVkZXZpbC9NUwpkYXJlZGV2aWxyeS9NCmRhcmVyL00KZGFyZXNheQpkYXJpbmcvTVkKZGFyay9QWFRNTlJZCmRhcmtlbi9aR0RSCmRhcmtlbmVyL00KZGFya2llL1MKZGFya25lc3MvTQpkYXJrcm9vbS9NUwpkYXJsaW5nL01TCmRhcm4vU1pHTURSCmRhcm5lZC9UUgpkYXJuZXIvTQpkYXJ0L1NaR01EUgpkYXJ0Ym9hcmQvTVMKZGFydGVyL00KZGFzaC9aR01EUlMKZGFzaGJvYXJkL1NNCmRhc2hlci9NCmRhc2hpa2kvTVMKZGFzaGluZy9ZCmRhc3RhcmQvTVlTCmRhc3RhcmRsaW5lc3MvTQpkYXRhCmRhdGFiYXNlL1NNCmRhdGF0eXBlCmRhdGUvRFJTTVpHVgpkYXRlYm9vay9TCmRhdGVkL1UKZGF0ZWxlc3MKZGF0ZWxpbmUvTUdEUwpkYXRlci9NCmRhdGl2ZS9NUwpkYXR1bS9NCmRhdWIvU1pHTURSCmRhdWJlci9NCmRhdWdodGVyL1NNWQpkYXVudC9HRFMKZGF1bnRpbmcvWQpkYXVudGxlc3MvWVAKZGF1bnRsZXNzbmVzcy9NCmRhdXBoaW4vTVMKZGF2ZW5wb3J0L01TCmRhdml0L01TCmRhd2RsZS9aR0RSUwpkYXdkbGVyL00KZGF3bi9TR01ECmRheS9TTQpkYXliZWQvTVMKZGF5YnJlYWsvTQpkYXljYXJlL00KZGF5ZHJlYW0vTURSWkdTCmRheWRyZWFtZXIvTQpkYXlsaWdodC9NUwpkYXlsaWdodHMvTQpkYXlsb25nCmRheXRpbWUvTQpkYXplL0RTTUcKZGF6ZWQvWQpkYXp6bGUvTVpHRFJTCmRhenpsZXIvTQpkYXp6bGluZy9ZCmRiCmRibApkYwpkZC9TREcKZGRlZC9LCmRkaW5nL0sKZGVhY29uL01TCmRlYWNvbmVzcy9NUwpkZWFkL1hUTU5SWQpkZWFkYmVhdC9NUwpkZWFkYm9sdC9TTQpkZWFkZW4vR0QKZGVhZGhlYWQvU0RHCmRlYWRsaW5lL1NNCmRlYWRsaW5lc3MvTQpkZWFkbG9jay9HU01ECmRlYWRseS9UUFIKZGVhZHBhbi9NUwpkZWFkcGFubmVkCmRlYWRwYW5uaW5nCmRlYWR3b29kL00KZGVhZi9QWFROUgpkZWFmZW4vR0QKZGVhZmVuaW5nL1kKZGVhZm5lc3MvTQpkZWFsL1NKWkdNUgpkZWFsZXIvTQpkZWFsZXJzaGlwL1NNCmRlYWxpbmcvTQpkZWFsdApkZWFuL00KZGVhbmVyeS9TTQpkZWFuc2hpcC9NCmRlYXIvU1BUTVJZSApkZWFyZXN0L1MKZGVhcm5lc3MvTQpkZWFydGgvTQpkZWFydGhzCmRlYXJ5L1NNCmRlYXRoL01ZCmRlYXRoYmVkL1NNCmRlYXRoYmxvdy9NUwpkZWF0aGxlc3MvWQpkZWF0aGxpa2UKZGVhdGhzCmRlYXRodHJhcC9NUwpkZWF0aHdhdGNoL01TCmRlYXZlcwpkZWIvU00KZGViYWNsZS9NUwpkZWJhcmthdGlvbi9NCmRlYmFybWVudC9NCmRlYmF0ZS9CTVpSCmRlYmF0ZXIvTQpkZWJhdGluZy9NCmRlYmF1Y2gvTURTRwpkZWJhdWNoZWUvTVMKZGViYXVjaGVyeS9TTQpkZWJlbnR1cmUvTVMKZGViaWxpdGF0ZS9EU0dOCmRlYmlsaXRhdGlvbi9NCmRlYmlsaXR5L1NNCmRlYml0L0QKZGVib25haXIvUFkKZGVib25haXJuZXNzL00KZGVib3VjaC9HRFMKZGVicmlkZW1lbnQKZGVicmlzL00KZGVidC9TTQpkZWJ0b3IvTVMKZGVidWdnZXIvUwpkZWJ1dC9HTUQKZGVidXRhbnRlL1NNCmRlY2FkZS9NUwpkZWNhZGVuY2UvTQpkZWNhZGVuY3kvTQpkZWNhZGVudC9NWVMKZGVjYWYvTVMKZGVjYWZmZWluYXRlL0RTRwpkZWNhZ29uL01TCmRlY2FsL01TCmRlY2FtcG1lbnQvTQpkZWNhcGl0YXRlL1hHTkRTCmRlY2FwaXRhdG9yL01TCmRlY2F0aGxldGUvUwpkZWNhdGhsb24vU00KZGVjYXkvR0QKZGVjZWFzZWQvTQpkZWNlZGVudC9NUwpkZWNlaXQvTVMKZGVjZWl0ZnVsL1lQCmRlY2VpdGZ1bG5lc3MvTQpkZWNlaXZlL1VHRFMKZGVjZWl2ZXIvTVMKZGVjZWl2aW5nL1kKZGVjZWxlcmF0ZS9HTkRTCmRlY2VsZXJhdGlvbi9NCmRlY2VsZXJhdG9yL1NNCmRlY2VuY3kvSVNNCmRlY2VubmlhbC9TTQpkZWNlbnQvSVkKZGVjZXB0aW9uL01TCmRlY2VwdGl2ZS9ZUApkZWNlcHRpdmVuZXNzL00KZGVjaWJlbC9NUwpkZWNpZGFibGUvVQpkZWNpZGUvQlpHRFJTCmRlY2lkZWQvWQpkZWNpZHVvdXMKZGVjaWxpdGVyL01TCmRlY2ltYWwvU00KZGVjaW1hbGl6YXRpb24KZGVjaW1hdGUvRFNHTgpkZWNpbWF0aW9uL00KZGVjaW1ldGVyL01TCmRlY2lwaGVyYWJsZS9VSQpkZWNpc2lvbi9JTQpkZWNpc2lvbnMKZGVjaXNpdmUvSVBZCmRlY2lzaXZlbmVzcy9JTQpkZWNrL1NHTUQKZGVja2NoYWlyL1MKZGVja2hhbmQvU00KZGVja2xlL1MKZGVjbGFtYXRpb24vTVMKZGVjbGFtYXRvcnkKZGVjbGFyYXRpb24vTVMKZGVjbGFyYXRpdmUKZGVjbGFyYXRvcnkKZGVjbGFyZS9EUlNaR0IKZGVjbGFyZWQvVQpkZWNsYXJlci9NCmRlY2xlbnNpb24vU00KZGVjbGluYXRpb24vTQpkZWNsaW5lL0RSU01aRwpkZWNsaW5lci9NCmRlY2xpdml0eS9TTQpkZWNvbGxldGFnZS9TTQpkZWNvbGxldGUKZGVjb25nZXN0YW50L01TCmRlY29uc3RydWN0aW9uaXNtCmRlY29yL01TCmRlY29yYXRlL0FHTlZEUwpkZWNvcmF0aW5nL00KZGVjb3JhdGlvbi9BTQpkZWNvcmF0aW9ucwpkZWNvcmF0aXZlL1kKZGVjb3JhdG9yL01TCmRlY29yb3VzL0lZCmRlY29yb3VzbmVzcy9NCmRlY29ydW0vTQpkZWNvdXBhZ2UvRFNNRwpkZWNveS9HTURTCmRlY3JlYXNpbmcvWQpkZWNyZWUvTURTCmRlY3JlZWluZwpkZWNyZW1lbnRlZApkZWNyZW1lbnRzCmRlY3JlcGl0CmRlY3JlcGl0dWRlL00KZGVjcmltaW5hbGl6YXRpb24vTQpkZWNyeS9HRFMKZGVjcnlwdGlvbgpkZWRpY2F0ZS9BR0RTCmRlZGljYXRpb24vU00KZGVkaWNhdG9yL1NNCmRlZGljYXRvcnkKZGVkdWNlL0dEUwpkZWR1Y2libGUKZGVkdWN0L0dWRApkZWR1Y3RpYmxlL1NNCmRlZHVjdGlvbi9TTQpkZWR1Y3RpdmUvWQpkZWVkL0dECmRlZWpheS9NUwpkZWVtL0FTR0QKZGVlcC9TUFhUTU5SWQpkZWVwZW4vR0QKZGVlcG5lc3MvTQpkZWVyL00KZGVlcnNraW4vTQpkZWVyc3RhbGtlci9TCmRlZi9aCmRlZmFjZW1lbnQvTQpkZWZhY2VyL1NNCmRlZmFsY2F0ZS9EU1hHTgpkZWZhbGNhdGlvbi9NCmRlZmFtYXRpb24vTQpkZWZhbWF0b3J5CmRlZmFtZS9aR0RSUwpkZWZhbWVyL00KZGVmYXVsdGVyL1NNCmRlZmVhdC9NRFJaR1MKZGVmZWF0ZWQvVQpkZWZlYXRlci9NCmRlZmVhdGlzbS9NCmRlZmVhdGlzdC9NUwpkZWZlY2F0ZS9HTkRTCmRlZmVjYXRpb24vTQpkZWZlY3QvTURHVlMKZGVmZWN0aW9uL01TCmRlZmVjdGl2ZS9NUFlTCmRlZmVjdGl2ZW5lc3MvTQpkZWZlY3Rvci9NUwpkZWZlbmRhbnQvU00KZGVmZW5kZWQvVQpkZWZlbmVzdHJhdGlvbi9TCmRlZmVuc2UvRFNNR1YKZGVmZW5zZWxlc3MvWVAKZGVmZW5zZWxlc3NuZXNzL00KZGVmZW5zaWJsZS9JCmRlZmVuc2libHkvSQpkZWZlbnNpdmUvTVlQCmRlZmVuc2l2ZW5lc3MvTQpkZWZlcmVuY2UvTQpkZWZlcmVudGlhbC9ZCmRlZmVycmFsL01TCmRlZmVycmVkCmRlZmVycmluZwpkZWZmZXIKZGVmZmVzdApkZWZpYW50L1kKZGVmaWJyaWxsYXRpb24KZGVmaWJyaWxsYXRvci9TCmRlZmljaWVuY3kvU00KZGVmaWNpZW50CmRlZmljaXQvU00KZGVmaWxlbWVudC9NCmRlZmluYWJsZS9JVQpkZWZpbmUvQUdEUwpkZWZpbmVkL1UKZGVmaW5lci9NUwpkZWZpbml0ZS9JWVZQCmRlZmluaXRlbmVzcy9JTQpkZWZpbml0aW9uL0FNCmRlZmluaXRpb25zCmRlZmluaXRpdmUvWQpkZWZsYXRlL0dORFMKZGVmbGF0aW9uL00KZGVmbGF0aW9uYXJ5CmRlZmxlY3QvREdWUwpkZWZsZWN0aW9uL01TCmRlZmxlY3Rvci9TTQpkZWZvZ2dlci9TTQpkZWZvbGlhbnQvU00KZGVmb2xpYXRlL0RTR04KZGVmb2xpYXRpb24vTQpkZWZvbGlhdG9yL01TCmRlZm9ybWl0eS9TTQpkZWZyYXVkL0RSWkdTCmRlZnJhdWRlci9NCmRlZnJheWFsL00KZGVmcm9jay9ERwpkZWZyb3N0ZXIvTVMKZGVmdC9QVFJZCmRlZnRuZXNzL00KZGVmdW5jdApkZWZ5L0dEUwpkZWcKZGVnZW5lcmFjeS9NCmRlZ2VuZXJhdGUvTVYKZGVncmFkZS9CCmRlZ3JlZS9NUwpkZWh5ZHJhdG9yL1NNCmRlaHlkcm9nZW5hc2UKZGVpY2VyL01TCmRlaWZpY2F0aW9uL00KZGVpZnkvTkdEUwpkZWlnbi9HRFMKZGVpc3QvTVMKZGVpc3RpYwpkZWl0eS9TTQpkZWplY3QvR0RTCmRlamVjdGVkL1kKZGVqZWN0aW9uL00KZGVsYXkvWkRSCmRlbGVjdGFibGUKZGVsZWN0YWJseQpkZWxlY3RhdGlvbi9NCmRlbGVnYXRlL0dECmRlbGV0ZS9YR05EUwpkZWxldGVyaW91cwpkZWxldGlvbi9NCmRlbGZ0L00KZGVsZnR3YXJlL00KZGVsaS9TTQpkZWxpYmVyYXRlL1hZVlAKZGVsaWJlcmF0ZW5lc3MvTQpkZWxpY2FjeS9JU00KZGVsaWNhdGUvSVkKZGVsaWNhdGVuZXNzL00KZGVsaWNhdGVzc2VuL1NNCmRlbGljaW91cy9QWQpkZWxpY2lvdXNuZXNzL00KZGVsaWdodGVkL1kKZGVsaWdodGZ1bC9ZCmRlbGltaW5hdG9yCmRlbGluZWF0ZS9HTlhEUwpkZWxpbmVhdGlvbi9NCmRlbGlucXVlbmN5L1NNCmRlbGlucXVlbnQvU01ZCmRlbGlxdWVzY2UvRFNHCmRlbGlxdWVzY2VudApkZWxpcmlvdXMvWVAKZGVsaXJpb3VzbmVzcy9NCmRlbGlyaXVtL1NNCmRlbGl2ZXIvQURHUwpkZWxpdmVyYWJsZQpkZWxpdmVyYW5jZS9NCmRlbGl2ZXJlZC9VCmRlbGl2ZXJlci9TTQpkZWxsL1NNCmRlbHBoaW5pdW0vTVMKZGVsdGEvTVMKZGVsdWRlL0dEUwpkZWx1Z2UvTUdEUwpkZWx1c2lvbi9NUwpkZWx1c2lvbmFsCmRlbHVzaXZlL1kKZGVsdXhlCmRlbHZlL1pHRFJTCmRlbHZlci9NCmRlbWFnb2dpYwpkZW1hZ29naWNhbGx5CmRlbWFnb2d1ZS9TTQpkZW1hZ29ndWVyeS9NCmRlbWFnb2d5L00KZGVtYW5kL0dNRFMKZGVtYW5kaW5nL1UKZGVtYXJjYXRlL0RTR05YCmRlbWFyY2F0aW9uL00KZGVtZWFuL0dEUwpkZW1lYW5vci9NCmRlbWVudGVkL1kKZGVtZW50aWEvTQpkZW1lc25lL01TCmRlbWlnb2QvTVMKZGVtaWdvZGRlc3MvTVMKZGVtaWpvaG4vU00KZGVtaW1vbmRhaW5lL1NNCmRlbWltb25kZS9NCmRlbWlzZS9NR0RTCmRlbWl0YXNzZS9NUwpkZW1vL0dNRApkZW1vY3JhY3kvU00KZGVtb2NyYXQvTVMKZGVtb2NyYXRpYy9VCmRlbW9jcmF0aWNhbGx5CmRlbW9jcmF0aXphdGlvbi9NCmRlbW9jcmF0aXplL0dEUwpkZW1vZGUKZGVtb2dyYXBoZXIvU00KZGVtb2dyYXBoaWMvU00KZGVtb2dyYXBoaWNhbGx5CmRlbW9ncmFwaGljcy9NCmRlbW9ncmFwaHkvTQpkZW1vbGlzaC9EU0cKZGVtb2xpdGlvbi9NUwpkZW1vbi9NUwpkZW1vbmV0aXphdGlvbi9NCmRlbW9uaWFjCmRlbW9uaWFjYWwvWQpkZW1vbmljCmRlbW9uaWNhbGx5CmRlbW9uaXplL0dEUwpkZW1vbm9sb2d5L1NNCmRlbW9uc3RyYWJpbGl0eQpkZW1vbnN0cmFibGUvSQpkZW1vbnN0cmFibHkKZGVtb25zdHJhdGUvWEdOVkRTCmRlbW9uc3RyYXRpb24vTQpkZW1vbnN0cmF0aXZlL01ZU1AKZGVtb25zdHJhdGl2ZW5lc3MvTQpkZW1vbnN0cmF0b3IvTVMKZGVtb3RlL0dECmRlbW90aWMKZGVtb3VudApkZW11bGNlbnQvU00KZGVtdXIvVE1SUwpkZW11cmUvUFkKZGVtdXJlbmVzcy9NCmRlbXVycmFsL1NNCmRlbXVycmVkCmRlbXVycmVyL1NNCmRlbXVycmluZwpkZW4vTQpkZW5hdGlvbmFsaXphdGlvbgpkZW5hdHVyYXRpb24KZGVuYXR1cmUvREcKZGVuZHJpdGUvU00KZGVuZ3VlL00KZGVuaWFiaWxpdHkKZGVuaWFibGUvVQpkZW5pYWwvTVMKZGVuaWVyL00KZGVuaWdyYXRlL0RTR04KZGVuaWdyYXRpb24vTQpkZW5pbS9NUwpkZW5pdHJpZmljYXRpb24KZGVuaXplbi9NUwpkZW5vbWluYXRpb25hbApkZW5vdGF0aXZlCmRlbm91ZW1lbnQvTVMKZGVub3VuY2UvTERTRwpkZW5vdW5jZW1lbnQvU00KZGVuc2UvUFlUUgpkZW5zZW5lc3MvTQpkZW5zaXR5L1NNCmRlbnQvSVNHTUQKZGVudGFsL1kKZGVudGlmcmljZS9TTQpkZW50aW4vTQpkZW50aXN0L01TCmRlbnRpc3RyeS9NCmRlbnRpdGlvbi9NCmRlbnR1cmUvSU1TCmRlbnVjbGVhcml6ZS9HRFMKZGVudWRhdGlvbi9NCmRlbnVkZS9HRFMKZGVudW5jaWF0aW9uL1NNCmRlbnkvWkdEUlMKZGVvZG9yYW50L1NNCmRlb2Rvcml6YXRpb24vTQpkZW9kb3JpemUvRFJTWkcKZGVvZG9yaXplci9NCmRlcGFydGVkL00KZGVwYXJ0bWVudC9NUwpkZXBhcnRtZW50YWwvWQpkZXBhcnRtZW50YWxpemF0aW9uL00KZGVwYXJ0bWVudGFsaXplL0dEUwpkZXBhcnR1cmUvU00KZGVwZW5kYWJpbGl0eS9NCmRlcGVuZGFibGUvVQpkZXBlbmRhYmx5CmRlcGVuZGVuY2UvSU0KZGVwZW5kZW5jeS9TTQpkZXBlbmRlbnQvSU1ZUwpkZXBpY3QvR0RTCmRlcGljdGlvbi9NUwpkZXBpbGF0b3J5L1NNCmRlcGxldGUvR05EUwpkZXBsZXRpb24vTQpkZXBsb3JhYmx5CmRlcGxvcmUvQkdEUwpkZXBsb3kvQUxHRFMKZGVwbG95bWVudC9BTQpkZXBsb3ltZW50cwpkZXBvbmVudC9NUwpkZXBvcnRhdGlvbi9NUwpkZXBvcnRlZS9NUwpkZXBvcnRtZW50L00KZGVwb3NpdC9BR01EUwpkZXBvc2l0b3IvTVMKZGVwb3NpdG9yeS9TTQpkZXByYXZlL0dEUwpkZXByYXZpdHkvU00KZGVwcmVjYXRlL0dORFMKZGVwcmVjYXRpbmcvWQpkZXByZWNhdGlvbi9NCmRlcHJlY2F0b3J5CmRlcHJlY2lhdGUvRFNHTgpkZXByZWNpYXRpb24vTQpkZXByZWRhdGlvbi9TTQpkZXByZXNzYW50L1NNCmRlcHJlc3NpbmcvWQpkZXByZXNzaW9uL1NNCmRlcHJlc3NpdmUvU00KZGVwcmVzc29yL01TCmRlcHJlc3N1cml6YXRpb24KZGVwcml2ZS9HRFMKZGVwcm9ncmFtbWluZwpkZXB0aC9NCmRlcHRocwpkZXB1dGF0aW9uL01TCmRlcHV0ZS9EU0cKZGVwdXRpemUvRFNHCmRlcHV0eS9TTQpkZXJhaWxsZXVyL1NNCmRlcmFpbG1lbnQvU00KZGVyYW5nZW1lbnQvTQpkZXJieS9TTQpkZXJlbGljdC9NUwpkZXJlbGljdGlvbi9NCmRlcmlkZS9HRFMKZGVyaXNpb24vTQpkZXJpc2l2ZS9QWQpkZXJpc2l2ZW5lc3MvTQpkZXJpc29yeQpkZXJpdmF0aW9uL01TCmRlcml2YXRpdmUvTVMKZGVyaXZlL0IKZGVybWFsCmRlcm1hdGl0aXMvTQpkZXJtYXRvbG9naWNhbApkZXJtYXRvbG9naXN0L1NNCmRlcm1hdG9sb2d5L00KZGVybWlzL00KZGVyb2dhdGUvRFNHTgpkZXJvZ2F0aW9uL00KZGVyb2dhdG9yaWx5CmRlcm9nYXRvcnkKZGVycmljay9TTQpkZXJyaWVyZS9TTQpkZXJyaW5nZXIvU00KZGVydgpkZXJ2aXNoL01TCmRlc2FsaW5hdGUvR05EUwpkZXNhbGluYXRpb24vTQpkZXNhbGluaXphdGlvbi9NCmRlc2FsaW5pemUvR0RTCmRlc2NhbnQvTQpkZXNjZW5kL0ZHRFMKZGVzY2VuZGFudC9NUwpkZXNjZW5kZXIKZGVzY3JpYmFibGUvSQpkZXNjcmliZS9CWkdEUgpkZXNjcmliZXIvTQpkZXNjcmlwdGlvbi9TTQpkZXNjcmlwdGl2ZS9QWQpkZXNjcmlwdGl2ZW5lc3MvTQpkZXNjcmlwdG9yL1MKZGVzY3J5L0dEUwpkZXNlY3JhdGUvRFNHTgpkZXNlY3JhdGlvbi9NCmRlc2VsZWN0aW9uCmRlc2VydC9TRFJaR00KZGVzZXJ0ZXIvTQpkZXNlcnRpZmljYXRpb24KZGVzZXJ0aW9uL1NNCmRlc2VydmVkL1VZCmRlc2VydmluZy9VCmRlc2ljY2FudC9TTQpkZXNpY2NhdGUvRFNHTgpkZXNpY2NhdGlvbi9NCmRlc2ljY2F0b3IvU00KZGVzaWRlcmF0YQpkZXNpZGVyYXR1bS9NCmRlc2lnbi9BU0RHCmRlc2lnbmF0ZS9EU0dOWApkZXNpZ25hdGlvbi9NCmRlc2lyYWJpbGl0eS9VTQpkZXNpcmFibGVuZXNzL00KZGVzaXJhYmx5L1UKZGVzaXJlL0IKZGVzaXJlZC9VCmRlc2lyb3VzCmRlc2lzdC9TREcKZGVzay9TTQpkZXNraWxsL0cKZGVza3RvcC9TTQpkZXNvbGF0ZS9QRFNZR04KZGVzb2xhdGVuZXNzL00KZGVzb2xhdGlvbi9NCmRlc3BhaXIvU01ERwpkZXNwYWlyaW5nL1kKZGVzcGVyYWRvL00KZGVzcGVyYWRvZXMKZGVzcGVyYXRlL1lOUApkZXNwZXJhdGVuZXNzL00KZGVzcGVyYXRpb24vTQpkZXNwaWNhYmxlCmRlc3BpY2FibHkKZGVzcGlzZS9EU0cKZGVzcGl0ZQpkZXNwb2lsbWVudC9NCmRlc3BvbmRlbmNlL00KZGVzcG9uZGVuY3kvTQpkZXNwb25kZW50L1kKZGVzcG90aWMKZGVzcG90aWNhbGx5CmRlc3BvdGlzbS9NCmRlc3NlcnQvU00KZGVzc2VydHNwb29uL1MKZGVzc2VydHNwb29uZnVsL1MKZGVzdGluYXRpb24vU00KZGVzdGluZS9EU0cKZGVzdGlueS9TTQpkZXN0aXR1dGUvTgpkZXN0aXR1dGlvbi9NCmRlc3Ryb3kvU1pHRFIKZGVzdHJveWVyL00KZGVzdHJ1Y3QvR1ZNRFMKZGVzdHJ1Y3RpYmlsaXR5L0lNCmRlc3RydWN0aWJsZS9JCmRlc3RydWN0aW9uL00KZGVzdHJ1Y3RpdmUvUFkKZGVzdHJ1Y3RpdmVuZXNzL00KZGVzdWV0dWRlL00KZGVzdWx0b3JpbHkKZGVzdWx0b3J5CmRldGFjaC9CTEdEUwpkZXRhY2htZW50L01TCmRldGFpbi9MR0RTCmRldGFpbmVlL01TCmRldGFpbm1lbnQvTQpkZXRlY3QvU0RHVkIKZGV0ZWN0YWJsZS9VCmRldGVjdGVkL1UKZGV0ZWN0aW9uL00KZGV0ZWN0aXZlL1NNCmRldGVjdG9yL1NNCmRldGVudGUvU01OWApkZXRlbnRpb24vTQpkZXRlci9TTApkZXRlcmdlbnQvU00KZGV0ZXJpb3JhdGUvRFNHTgpkZXRlcmlvcmF0aW9uL00KZGV0ZXJtZW50L00KZGV0ZXJtaW5hYmxlL0kKZGV0ZXJtaW5hbnQvU00KZGV0ZXJtaW5hdGUKZGV0ZXJtaW5lL0FHRFMKZGV0ZXJtaW5lZC9VCmRldGVybWluZWRseQpkZXRlcm1pbmVyL1NNCmRldGVybWluaXNtL00KZGV0ZXJtaW5pc3RpYwpkZXRlcnJlZC9VCmRldGVycmVuY2UvTQpkZXRlcnJlbnQvTVMKZGV0ZXJyaW5nCmRldGVzdGFibHkKZGV0ZXN0YXRpb24vTQpkZXRocm9uZS9EU0xHCmRldGhyb25lbWVudC9NCmRldG9uYXRlL0dORFNYCmRldG9uYXRpb24vTQpkZXRvbmF0b3IvU00KZGV0b3gvTURTRwpkZXRveGlmaWNhdGlvbi9NCmRldG94aWZ5L0RTR04KZGV0cmFjdC9HRApkZXRyaW1lbnQvU00KZGV0cmltZW50YWwvWQpkZXRyaXR1cy9NCmRldWNlL1NNCmRldXRlcml1bS9NCmRldmFzdGF0ZS9HTkRTCmRldmFzdGF0aW5nL1kKZGV2YXN0YXRpb24vTQpkZXZhc3RhdG9yL01TCmRldmVsb3AvQVNHREwKZGV2ZWxvcGVkL1UKZGV2ZWxvcGVyL1NNCmRldmVsb3BtZW50L0FTTQpkZXZlbG9wbWVudGFsL1kKZGV2aWFuY2UvTQpkZXZpYW5jeS9NCmRldmlhbnQvU00KZGV2aWF0ZS9EU01HTlgKZGV2aWF0aW5nL1UKZGV2aWF0aW9uL00KZGV2aWwvU01ER0wKZGV2aWxpc2gvWVAKZGV2aWxpc2huZXNzL00KZGV2aWxtZW50L00KZGV2aWxyeS9TTQpkZXZpbHRyeS9TTQpkZXZpb3VzL1lQCmRldmlvdXNuZXNzL00KZGV2b2lkCmRldm9sdXRpb24vTQpkZXZvbHZlL0RTRwpkZXZvdGVkL1kKZGV2b3RlZS9TTQpkZXZvdGlvbi9NUwpkZXZvdGlvbmFsL1NNCmRldm91ci9TREcKZGV2b3V0L1BSWVQKZGV2b3V0bmVzcy9NCmRldy9NCmRld2JlcnJ5L1NNCmRld2NsYXcvU00KZGV3ZHJvcC9TTQpkZXdpbmVzcy9NCmRld2xhcC9TTQpkZXd5L1JUUApkZXh0ZXJpdHkvTQpkZXh0ZXJvdXMvWVAKZGV4dGVyb3VzbmVzcy9NCmRleHRyb3NlL00KZGhhcm1hCmRob3RpL1NNCmRob3cvTVMKZGlhYmV0ZXMvTQpkaWFiZXRpYy9TTQpkaWFib2xpYwpkaWFib2xpY2FsL1kKZGlhY3JpdGljL01TCmRpYWNyaXRpY2FsCmRpYWRlbS9TTQpkaWFlcmVzZXMKZGlhZXJlc2lzL00KZGlhZ25vc2UvRFNHCmRpYWdub3Npcy9NCmRpYWdub3N0aWMvUwpkaWFnbm9zdGljYWxseQpkaWFnbm9zdGljaWFuL1NNCmRpYWdub3N0aWNzL00KZGlhZ29uYWwvU01ZCmRpYWdyYW0vU00KZGlhZ3JhbW1hdGljCmRpYWdyYW1tYXRpY2FsbHkKZGlhZ3JhbW1lZApkaWFncmFtbWluZwpkaWFsL0FNREdTCmRpYWxlY3QvU00KZGlhbGVjdGFsCmRpYWxlY3RpYy9TTQpkaWFsZWN0aWNhbApkaWFsZWN0aWNzL00KZGlhbGluZy9TCmRpYWxvZwpkaWFsb2d1ZS9TTQpkaWFseXNlcwpkaWFseXNpcy9NCmRpYWx5emVzCmRpYW0KZGlhbWFudGUKZGlhbWV0ZXIvU00KZGlhbWV0cmljCmRpYW1ldHJpY2FsL1kKZGlhbW9uZC9TTQpkaWFtb25kYmFjay9NUwpkaWFwYXNvbi9TTQpkaWFwZXIvU01ERwpkaWFwaGFub3VzCmRpYXBocmFnbS9TTQpkaWFwaHJhZ21hdGljCmRpYXJpc3QvU00KZGlhcnJoZWEvTQpkaWFyeS9TTQpkaWFzcG9yYS9TTQpkaWFzdGFzZS9NCmRpYXN0b2xlL00KZGlhc3RvbGljCmRpYXRoZXJteS9NCmRpYXRvbS9TTQpkaWF0b21pYwpkaWF0b25pYwpkaWF0cmliZS9TTQpkaWJibGUvRFNNRwpkaWJzL00KZGljZS9HRFMKZGljZXMvSQpkaWNleQpkaWNob3RvbW91cwpkaWNob3RvbXkvU00KZGljaWVyCmRpY2llc3QKZGljay9NUlhaUwpkaWNrZXIvREcKZGlja2V5L1NNCmRpY2toZWFkL1MKZGlja3liaXJkL1MKZGljb3R5bGVkb24vTVMKZGljb3R5bGVkb25vdXMKZGljdApkaWN0YQpkaWN0YXRlL0RTTUdOWApkaWN0YXRpb24vTQpkaWN0YXRvci9TTQpkaWN0YXRvcmlhbC9ZCmRpY3RhdG9yc2hpcC9TTQpkaWN0aW9uL00KZGljdGlvbmFyeS9TTQpkaWN0dW0vTQpkaWQvQVUKZGlkYWN0aWMKZGlkYWN0aWNhbGx5CmRpZGRsZS9EUlNaRwpkaWRkbGVyL00KZGlkZGx5CmRpZGRseXNxdWF0CmRpZGR1bXMKZGlkZ2VyaWRvby9TCmRpZG4ndApkaWRvL00KZGlkb2VzCmRpZHN0CmRpZS9EU00KZGllbGVjdHJpYy9NUwpkaWVyZXNlcwpkaWVyZXNpcy9NCmRpZXNlbC9TTURHCmRpZXQvTURSWkdTCmRpZXRhcnkvU00KZGlldGVyL00KZGlldGV0aWMvUwpkaWV0ZXRpY3MvTQpkaWV0aXRpYW4vTVMKZGlmZi9EUlpHUwpkaWZmZXIvREcKZGlmZmVyZW5jZS9JTQpkaWZmZXJlbmNlcwpkaWZmZXJlbnQvSVkKZGlmZmVyZW50aWFsL1NNCmRpZmZlcmVudGlhdGUvRFNHTgpkaWZmZXJlbnRpYXRlZC9VCmRpZmZlcmVudGlhdGlvbi9NCmRpZmZpY3VsdC9ZCmRpZmZpY3VsdHkvU00KZGlmZmlkZW5jZS9NCmRpZmZpZGVudC9ZCmRpZmZyYWN0L0dTRApkaWZmcmFjdGlvbi9NCmRpZmZ1c2UvRFNZR05WUApkaWZmdXNlbmVzcy9NCmRpZmZ1c2lvbi9NCmRpZy9TTQpkaWdlcmF0aS9NCmRpZ2VzdC9TTURHVgpkaWdlc3RlZC9VCmRpZ2VzdGliaWxpdHkvTQpkaWdlc3RpYmxlL0kKZGlnZXN0aW9uL0lNCmRpZ2VzdGlvbnMKZGlnZXN0aXZlL1MKZGlnZ2VyL1NNCmRpZ2dpbmcvUwpkaWdnaW5ncy9NCmRpZ2ljYW0vUwpkaWdpdC9TTQpkaWdpdGFsL1kKZGlnaXRhbGlzL00KZGlnaXRpemF0aW9uCmRpZ2l0aXplL0dEUwpkaWduaWZpZWQvVQpkaWduaWZ5L0RTRwpkaWduaXRhcnkvU00KZGlnbml0eS9JU00KZGlncmFwaC9NCmRpZ3JhcGhzCmRpZ3Jlc3MvR1ZEUwpkaWdyZXNzaW9uL01TCmRpa2UvTUdEUwpkaWt0YXQvUwpkaWxhcGlkYXRlZApkaWxhcGlkYXRpb24vTQpkaWxhdGF0aW9uL00KZGlsYXRlL0RTR04KZGlsYXRpb24vTQpkaWxhdG9yL1NNCmRpbGF0b3J5CmRpbGRvL1MKZGlsZW1tYS9NUwpkaWxldHRhbnRlL1NNCmRpbGV0dGFudGlzaApkaWxldHRhbnRpc20vTQpkaWxpZ2VuY2UvTQpkaWxpZ2VudC9ZCmRpbGwvTVMKZGlsbHkvU00KZGlsbHlkYWxseS9EU0cKZGlsdXRlL0RTR05YCmRpbHV0ZWQvVQpkaWx1dGlvbi9NCmRpbS9QU1JZCmRpbWUvTVMKZGltZW5zaW9uL1NNCmRpbWVuc2lvbmFsCmRpbWVuc2lvbmxlc3MKZGltaW5pc2gvR0RTCmRpbWluaXNoZWQvVQpkaW1pbnVlbmRvL1NNCmRpbWludXRpb24vU00KZGltaW51dGl2ZS9TTQpkaW1pdHkvTQpkaW1tZWQvVQpkaW1tZXIvU00KZGltbWVzdApkaW1taW5nCmRpbW5lc3MvTQpkaW1wbGUvRFNNRwpkaW1wbHkKZGltd2l0L1NNCmRpbXdpdHRlZApkaW4vWkdTTURSCmRpbmFyL1NNCmRpbmUvUwpkaW5lci9NCmRpbmV0dGUvTVMKZGluZy9NREcKZGluZ2JhdC9NUwpkaW5naHkvU00KZGluZ2lseQpkaW5naW5lc3MvTQpkaW5nbGUvU00KZGluZ28vTQpkaW5nb2VzCmRpbmd1cy9NUwpkaW5neS9SUFQKZGluay9SCmRpbmt5L1JTTVQKZGlubmVkCmRpbm5lci9TTURHCmRpbm5lcnRpbWUvTQpkaW5uZXJ3YXJlL00KZGlubmluZwpkaW5vc2F1ci9TTQpkaW50L00KZGlvY2VzYW4vTVMKZGlvY2VzZS9NUwpkaW9kZS9TTQpkaW9yYW1hL1NNCmRpb3hpZGUvU00KZGlveGluL1NNCmRpcC9TTQpkaXBodGhlcmlhL00KZGlwaHRob25nL1NNCmRpcGxvaWQvU00KZGlwbG9tYS9TTQpkaXBsb21hY3kvTQpkaXBsb21hdC9NUwpkaXBsb21hdGEKZGlwbG9tYXRpYy9VCmRpcGxvbWF0aWNhbGx5CmRpcGxvbWF0aXN0L01TCmRpcGxvcGlhCmRpcG9sZS9TTQpkaXBwZWQKZGlwcGVyL1NNCmRpcHBpbmcKZGlwcHkvUlQKZGlwc28vUwpkaXBzb21hbmlhL00KZGlwc29tYW5pYWMvTVMKZGlwc3RpY2svU00KZGlwdGVyb3VzCmRpcHR5Y2gvTQpkaXB0eWNocwpkaXJlL1lUUgpkaXJlY3QvQVNER1ZUCmRpcmVjdGVyCmRpcmVjdGlvbi9JTQpkaXJlY3Rpb25hbApkaXJlY3Rpb25sZXNzCmRpcmVjdGlvbnMKZGlyZWN0aXZlL1NNCmRpcmVjdGx5CmRpcmVjdG5lc3MvSU0KZGlyZWN0b3IvTVMKZGlyZWN0b3JhdGUvU00KZGlyZWN0b3JpYWwKZGlyZWN0b3JzaGlwL1NNCmRpcmVjdG9yeS9TTQpkaXJlZnVsCmRpcmdlL1NNCmRpcmlnaWJsZS9NUwpkaXJrL01TCmRpcm5kbC9TTQpkaXJ0L00KZGlydGJhbGwvUwpkaXJ0aWx5CmRpcnRpbmVzcy9NCmRpcnR5L0RSU1RHUApkaXMvTQpkaXNhYmxlL0RTR0wKZGlzYWJsZW1lbnQvTQpkaXNhbWJpZ3VhdGUvTgpkaXNhcHBvaW50aW5nL1kKZGlzYXJtaW5nL1kKZGlzYXNzZW1ibHkKZGlzYXN0cm91cy9ZCmRpc2JhbmRtZW50L00KZGlzYmFybWVudC9NCmRpc2JlbGlldmluZy9ZCmRpc2J1cnNhbC9NCmRpc2J1cnNlL0RTR0wKZGlzYnVyc2VtZW50L01TCmRpc2MvTQpkaXNjZXJuL0xTREcKZGlzY2VybmlibGUvSQpkaXNjZXJuaWJseQpkaXNjZXJuaW5nL1kKZGlzY2Vybm1lbnQvTQpkaXNjaGFyZ2VkL1UKZGlzY2lwbGUvU00KZGlzY2lwbGVzaGlwL00KZGlzY2lwbGluYXJpYW4vU00KZGlzY2lwbGluYXJ5CmRpc2NpcGxpbmUvRFNNRwpkaXNjaXBsaW5lZC9VCmRpc2Nsb3NlL0RTRwpkaXNjbG9zZWQvVQpkaXNjby9NRwpkaXNjb2dyYXBoeS9TTQpkaXNjb2xvcmF0aW9uL1MKZGlzY29tYm9idWxhdGUvRFNHTgpkaXNjb21ib2J1bGF0aW9uL00KZGlzY29tZml0L0RHCmRpc2NvbWZpdHVyZS9NCmRpc2NvbW1vZGUvREcKZGlzY29uY2VydGluZy9ZCmRpc2Nvbm5lY3RlZC9QWQpkaXNjb25uZWN0ZWRuZXNzL00KZGlzY29uc29sYXRlL1kKZGlzY29yZGFuY2UvTQpkaXNjb3JkYW50L1kKZGlzY290aGVxdWUvU00KZGlzY291cmFnZS9MR0RTCmRpc2NvdXJhZ2VtZW50L1NNCmRpc2NvdXJhZ2luZy9ZCmRpc2NvdmVyL0FTREcKZGlzY292ZXJlZC9VCmRpc2NvdmVyZXIvTVMKZGlzY292ZXJ5L0FTTQpkaXNjcmVldC9QUllUCmRpc2NyZWV0bmVzcy9NCmRpc2NyZXBhbmN5L1NNCmRpc2NyZXBhbnQKZGlzY3JldGUvUFlOCmRpc2NyZXRlbmVzcy9NCmRpc2NyZXRpb24vSU0KZGlzY3JldGlvbmFyeQpkaXNjcmltaW5hbnQKZGlzY3JpbWluYXRlL0dORFMKZGlzY3JpbWluYXRpbmcvVQpkaXNjcmltaW5hdGlvbi9NCmRpc2NyaW1pbmF0b3IvTVMKZGlzY3JpbWluYXRvcnkKZGlzY3Vyc2l2ZW5lc3MvTQpkaXNjdXMvTVMKZGlzY3Vzc2FudC9TTQpkaXNjdXNzaW9uL1NNCmRpc2RhaW4vU01ERwpkaXNkYWluZnVsL1kKZGlzZW1ib3dlbC9TRExHCmRpc2VtYm93ZWxtZW50L00KZGlzZmlndXJlbWVudC9TTQpkaXNmcmFuY2hpc2VtZW50L00KZGlzZ29yZ2VtZW50L00KZGlzZ3J1bnRsZS9MR0RTCmRpc2dydW50bGVtZW50L00KZGlzZ3Vpc2UvR0QKZGlzZ3Vpc2VkL1UKZGlzZ3VzdGVkL1kKZGlzZ3VzdGluZy9ZCmRpc2gvTURTRwpkaXNoYWJpbGxlL00KZGlzaGFybW9uaW91cwpkaXNoY2xvdGgvTQpkaXNoY2xvdGhzCmRpc2hlYXJ0ZW5pbmcvWQpkaXNoZXZlbC9ER0xTCmRpc2hldmVsbWVudC9NCmRpc2hwYW4vU00KZGlzaHJhZy9TTQpkaXNodG93ZWwvTVMKZGlzaHdhcmUvTQpkaXNod2FzaGVyL01TCmRpc2h3YXRlci9NCmRpc2h5CmRpc2lsbHVzaW9uL0dMRApkaXNpbGx1c2lvbm1lbnQvTQpkaXNpbmZlY3RhbnQvTVMKZGlzaW5mZWN0aW9uL00KZGlzaW50ZXJlc3RlZC9QWQpkaXNpbnRlcmVzdGVkbmVzcy9NCmRpc2pvaW50ZWQvWVAKZGlzam9pbnRlZG5lc3MvTQpkaXNqdW5jdGl2ZQpkaXNqdW5jdHVyZQpkaXNrL01TCmRpc2tldHRlL01TCmRpc2xvZGdlL0dEUwpkaXNtYWwvWQpkaXNtYW50bGVtZW50L00KZGlzbWF5L1NNREcKZGlzbWF5ZWQvVQpkaXNtZW1iZXIvTEdECmRpc21lbWJlcm1lbnQvTQpkaXNtaXNzaXZlL1kKZGlzb3JkZXIvWQpkaXNvcmdhbml6YXRpb24vTQpkaXNwYXJhZ2UvRFNHTApkaXNwYXJhZ2VtZW50L00KZGlzcGFyYWdpbmcvWQpkaXNwYXJhdGUvWQpkaXNwYXRjaGVyL01TCmRpc3BlbC9TCmRpc3BlbGxlZApkaXNwZWxsaW5nCmRpc3BlbnNhcnkvU00KZGlzcGVuc2F0aW9uL01TCmRpc3BlbnNlL0JaR0RSUwpkaXNwZW5zZXIvTQpkaXNwZXJzYWwvTQpkaXNwZXJzZS9HTkRTCmRpc3BlcnNpb24vTQpkaXNwaXJpdC9HRFMKZGlzcGxlYXN1cmUvTQpkaXNwb3NhYmxlL1NNCmRpc3Bvc2FsL1NNCmRpc3Bvc2VkL0kKZGlzcG9zaXRpb24vSVNNCmRpc3Bvc3Nlc3Npb24vTQpkaXNwcm9vZi9TTQpkaXNwcm9wb3J0aW9uYWwKZGlzcHJvdmUvQgpkaXNwdXRhYmxlL0kKZGlzcHV0YWJseS9JCmRpc3B1dGFudC9NUwpkaXNwdXRhdGlvbi9TTQpkaXNwdXRhdGlvdXMvWQpkaXNwdXRlL0RSU01aR0IKZGlzcHV0ZWQvVQpkaXNwdXRlci9NCmRpc3F1aWV0L0dTTUQKZGlzcXVpc2l0aW9uL01TCmRpc3JlZ2FyZGZ1bApkaXNyZXBhaXIvTQpkaXNyZXB1dGUvTUIKZGlzcnVwdC9HVlNECmRpc3J1cHRpb24vU00KZGlzcnVwdGl2ZS9ZCmRpc3NlY3QvU0RHCmRpc3NlZApkaXNzZW1ibGFuY2UvTQpkaXNzZW1ibGUvWkdEUlMKZGlzc2VtYmxlci9NCmRpc3NlbWluYXRlL0dORFMKZGlzc2VtaW5hdGlvbi9NCmRpc3NlbnNpb24vU00KZGlzc2VudC9TTURSWkcKZGlzc2VudGVyL00KZGlzc2VydGF0aW9uL1NNCmRpc3NpZGVuY2UvTQpkaXNzaWRlbnQvTVMKZGlzc2ltaWxhcgpkaXNzaW1pbGl0dWRlL1MKZGlzc2luZwpkaXNzaXBhdGUvR05EUwpkaXNzaXBhdGlvbi9NCmRpc3NvY2lhdGUvR05EUwpkaXNzb2NpYXRpb24vTQpkaXNzb2x1YmxlL0kKZGlzc29sdXRlL1lOUApkaXNzb2x1dGVuZXNzL00KZGlzc29sdmUvQUdEUwpkaXNzb2x2ZWQvVQpkaXNzb25hbmNlL1NNCmRpc3NvbmFudApkaXNzdWFkZS9HRFMKZGlzc3Vhc2l2ZQpkaXN0CmRpc3RhZmYvU00KZGlzdGFsL1kKZGlzdGFuY2UvRFNNRwpkaXN0YW50L1kKZGlzdGFzdGUvU00KZGlzdGVtcGVyL00KZGlzdGVudGlvbi9TTQpkaXN0aWxsYXRlL1NNTlgKZGlzdGlsbGF0aW9uL00KZGlzdGlsbGVyeS9TTQpkaXN0aW5jdC9JWVRWUApkaXN0aW5jdGVyCmRpc3RpbmN0aW9uL1NNCmRpc3RpbmN0aXZlL1lQCmRpc3RpbmN0aXZlbmVzcy9NCmRpc3RpbmN0bmVzcy9JTQpkaXN0aW5ndWlzaC9HRFNCCmRpc3Rpbmd1aXNoYWJsZS9JCmRpc3Rpbmd1aXNoZWQvVQpkaXN0b3J0L0dEUgpkaXN0b3J0aW9uL01TCmRpc3RyYWN0L0RHCmRpc3RyYWN0ZWQvWQpkaXN0cmFjdGlvbi9TCmRpc3RyYWl0CmRpc3RyYXVnaHQKZGlzdHJlc3MvREcKZGlzdHJlc3NmdWwKZGlzdHJlc3NpbmcvWQpkaXN0cmlidXRlL0FHTlZEUwpkaXN0cmlidXRlZC9VCmRpc3RyaWJ1dGlvbi9BTQpkaXN0cmlidXRpb25hbApkaXN0cmlidXRpb25zCmRpc3RyaWJ1dGl2ZS9ZCmRpc3RyaWJ1dG9yJ3MKZGlzdHJpYnV0b3IvQVMKZGlzdHJpYnV0b3JzaGlwL1MKZGlzdHJpY3QncwpkaXN0cmljdC9BUwpkaXN0dXJiL1pHU0RSCmRpc3R1cmJhbmNlL1NNCmRpc3R1cmJlZC9VCmRpc3R1cmJlci9NCmRpc3R1cmJpbmcvWQpkaXN1bmlvbi9NCmRpc3lsbGFiaWMKZGl0Y2gvTURTRwpkaXRoZXIvU01EUlpHCmRpdGhlcmVyL00KZGl0cmFuc2l0aXZlCmRpdHN5CmRpdHRvL1NNREcKZGl0dHkvU00KZGl0ei9NUwpkaXVyZXRpYy9NUwpkaXVybmFsL1kKZGl2CmRpdmEvTVMKZGl2YWxlbnQKZGl2YW4vU00KZGl2ZS9NWlRHRFJTCmRpdmVyL00KZGl2ZXJnZS9EU0cKZGl2ZXJnZW5jZS9NUwpkaXZlcmdlbnQKZGl2ZXJzZS9YWU5QCmRpdmVyc2VuZXNzL00KZGl2ZXJzaWZpY2F0aW9uL00KZGl2ZXJzaWZ5L0dORFMKZGl2ZXJzaW9uL00KZGl2ZXJzaW9uYXJ5CmRpdmVyc2l0eS9TTQpkaXZlcnQvU0RHCmRpdmVydGljdWxpdGlzL00KZGl2ZXN0L1NMREcKZGl2ZXN0aXR1cmUvTVMKZGl2ZXN0bWVudC9NCmRpdmlkZS9EUlNNWkdCCmRpdmlkZWQvVQpkaXZpZGVuZC9NUwpkaXZpZGVyL00KZGl2aW5hdGlvbi9NCmRpdmluZS9EUlNNWVpURwpkaXZpbmVyL00KZGl2aW5nL00KZGl2aW5pdHkvU00KZGl2aXNpYmlsaXR5L0lNCmRpdmlzaWJsZS9JCmRpdmlzaW9uL01TCmRpdmlzaW9uYWwKZGl2aXNpdmUvUFkKZGl2aXNpdmVuZXNzL00KZGl2aXNvci9TTQpkaXZvcmNlL0RTTE1HCmRpdm9yY2VlL01TCmRpdm9yY2VtZW50L01TCmRpdm90L1NNCmRpdnVsZ2UvR0RTCmRpdnZ5L0RTTUcKZGl4aWVsYW5kL00KZGl6emlseQpkaXp6aW5lc3MvTQpkaXp6eS9EUlNQVEcKZGplbGxhYmEvTVMKZG8vU0pNUkhaRwpkb2FibGUKZG9iL1MKZG9iYmVkCmRvYmJpbi9TTQpkb2JiaW5nCmRvYmVybWFuL01TCmRvYnJvCmRvYy9TTQpkb2NlbnQvU00KZG9jaWxlL1kKZG9jaWxpdHkvTQpkb2NrL01EUlpHUwpkb2NrZXQvU01ERwpkb2NrbGFuZC9TCmRvY2tzaWRlCmRvY2t3b3JrZXIvTVMKZG9ja3lhcmQvTVMKZG9jdG9yL1NNREcKZG9jdG9yYWwKZG9jdG9yYXRlL01TCmRvY3RyaW5haXJlL01TCmRvY3RyaW5hbApkb2N0cmluZS9NUwpkb2N1ZHJhbWEvU00KZG9jdW1lbnQvR01EUwpkb2N1bWVudGFyeS9TTQpkb2N1bWVudGF0aW9uL1NNCmRvY3VtZW50ZWQvVQpkb2RkZXIvU01ERwpkb2RkZXJ5CmRvZGRsZQpkb2RnZS9EUlNNWkcKZG9kZ2VtL1MKZG9kZ2VyL00KZG9kZ3kvUlQKZG9kby9NUwpkb2UvU00KZG9lci9NCmRvZXMvQVUKZG9lc2tpbi9NUwpkb2Vzbid0CmRvZmYvREdTCmRvZy9TTQpkb2djYXJ0L1NNCmRvZ2NhdGNoZXIvU00KZG9nZS9NUwpkb2dlYXJlZApkb2dmaWdodC9TTQpkb2dmaXNoL01TCmRvZ2dlZC9QWQpkb2dnZWRuZXNzL00KZG9nZ2VyZWwvTQpkb2dnaW5nCmRvZ2dvbmUvVEdSUwpkb2dneS9SU01UCmRvZ2hvdXNlL1NNCmRvZ2llL1NNCmRvZ2xlZy9TTQpkb2dsZWdnZWQKZG9nbGVnZ2luZwpkb2dsaWtlCmRvZ21hL1NNCmRvZ21hdGljCmRvZ21hdGljYWxseQpkb2dtYXRpc20vTQpkb2dtYXRpc3QvU00KZG9nbmFwcGVyCmRvZ3Nib2R5L1MKZG9nc2xlZC9TCmRvZ3Ryb3QvTVMKZG9ndHJvdHRlZApkb2d0cm90dGluZwpkb2d3b29kL01TCmRvaWx5L1NNCmRvaW5nL1VTTQpkb2xkcnVtcy9NCmRvbGUncwpkb2xlL0ZHRFMKZG9sZWZ1bC9ZUApkb2xlZnVsbmVzcy9NCmRvbGwvTURHUwpkb2xsYXIvU00KZG9sbGhvdXNlL1NNCmRvbGxvcC9TR01ECmRvbGx5L1NNCmRvbG1lbi9TTQpkb2xvbWl0ZS9NCmRvbG9yL00KZG9sb3JvdXMvWQpkb2xwaGluL01TCmRvbHQvTVMKZG9sdGlzaC9ZUApkb2x0aXNobmVzcy9NCmRvbWFpbi9TTQpkb21lL01HRFMKZG9tZXN0aWMvU00KZG9tZXN0aWNhbGx5CmRvbWVzdGljYXRlL0RTR04KZG9tZXN0aWNhdGVkL1UKZG9tZXN0aWNhdGlvbi9NCmRvbWVzdGljaXR5L00KZG9taWNpbGUvRFNNRwpkb21pY2lsaWFyeQpkb21pbmFuY2UvTQpkb21pbmFudC9TTVkKZG9taW5hdGUvRFNHTgpkb21pbmF0aW9uL00KZG9taW5hdHJpY2VzCmRvbWluYXRyaXgvTQpkb21pbmVlci9TR0QKZG9taW5lZXJpbmcvWQpkb21pbmlvbi9TTQpkb21pbm8vTQpkb21pbm9lcwpkb24ndApkb24vU00KZG9uYS9NUwpkb25hdGUvRFNYR04KZG9uYXRpb24vTQpkb25lL0ZBVQpkb25nL01ER1MKZG9uZ2xlL1NNCmRvbmtleS9TTQpkb25uZWQKZG9ubmluZwpkb25uaXNoCmRvbm55YnJvb2svTVMKZG9ub3IvU00KZG9udXRzCmRvb2RhZC9TTQpkb29kYWgKZG9vZGFocwpkb29kbGUvRFJTTVpHCmRvb2RsZWJ1Zy9TTQpkb29kbGVyL00KZG9vaGlja2V5L1NNCmRvb2xhbGx5CmRvb20vTURHUwpkb29tc2F5ZXIvTVMKZG9vbXNkYXkvTQpkb29tc3Rlci9TCmRvb3Incwpkb29yL0lTCmRvb3JiZWxsL01TCmRvb3JqYW1iL1MKZG9vcmtlZXBlci9NUwpkb29ya25vYi9NUwpkb29ya25vY2tlci9TCmRvb3JtYW4vTQpkb29ybWF0L1NNCmRvb3JtZW4KZG9vcnBsYXRlL1NNCmRvb3Jwb3N0L1MKZG9vcnN0ZXAvTVMKZG9vcnN0ZXBwZWQKZG9vcnN0ZXBwaW5nCmRvb3JzdG9wL01TCmRvb3J3YXkvU00KZG9vcnlhcmQvTVMKZG9wYS9NCmRvcGFtaW5lCmRvcGUvTVpHRFJTCmRvcGVyL00KZG9wZXkKZG9waWVyCmRvcGllc3QKZG9waW5lc3MvTQpkb3BpbmcvTQpkb3BwZWxnYW5nZXIvUwpkb3JrL01TCmRvcmt5L1JUCmRvcm0vTVJaUwpkb3JtYW5jeS9NCmRvcm1hbnQKZG9ybWVyL00KZG9ybWljZQpkb3JtaXRvcnkvU00KZG9ybW91c2UvTQpkb3JzYWwvWQpkb3J5L1NNCmRvc2FnZS9TTQpkb3NlL01HRFMKZG9zaApkb3NpbWV0ZXIvU00KZG9zcy9EUlNaRwpkb3NzaG91c2UvUwpkb3NzaWVyL01TCmRvc3QKZG90L1pHU01EUgpkb3RhZ2UvTQpkb3RhcmQvU00KZG90Y29tL1NNCmRvdGUvUwpkb3Rlci9NCmRvdGluZy9ZCmRvdHRlZApkb3R0aW5nCmRvdHR5L1JUCmRvdWJsZSdzCmRvdWJsZS9BRFNHCmRvdWJsZWhlYWRlci9NUwpkb3VibGVzcGVhay9NCmRvdWJsZXQvTVMKZG91Ymxvb24vU00KZG91Ymx5CmRvdWJ0L1NNRFJaRwpkb3VidGVyL00KZG91YnRmdWwvUFkKZG91YnRmdWxuZXNzL00KZG91YnRpbmcvWQpkb3VidGxlc3MvWQpkb3VjaGUvRFNNRwpkb3VnaC9NCmRvdWdobnV0L1NNCmRvdWdodHkvUlQKZG91Z2h5L1RSCmRvdXIvUllUUApkb3VybmVzcy9NCmRvdXNlL0RTRwpkb3ZlL01TCmRvdmVjb3QvUwpkb3ZlY290ZS9TTQpkb3ZldGFpbC9NRFNHCmRvdmlzaApkb3dhZ2VyL01TCmRvd2RpbHkKZG93ZGluZXNzL00KZG93ZHkvUlNQVApkb3dlbC9TTURHCmRvd2VyL1NNREcKZG93bi9NRFJaR1MKZG93bmJlYXQvU00KZG93bmNhc3QKZG93bmRyYWZ0L01TCmRvd25lci9NCmRvd25mYWxsL1NNTgpkb3duZmllbGQKZG93bmdyYWRlL0RTTUcKZG93bmhlYXJ0ZWQvUFkKZG93bmhlYXJ0ZWRuZXNzL00KZG93bmhpbGwvTVMKZG93bmxvYWQvTURCU0cKZG93bm1hcmtldApkb3ducGxheS9EU0cKZG93bnBvdXIvTVMKZG93bnJhbmdlCmRvd25yaWdodApkb3ducml2ZXIKZG93bnNjYWxlCmRvd25zaGlmdC9TR0QKZG93bnNpZGUvTVMKZG93bnNpemUvR0RTCmRvd25zaXppbmcvTQpkb3duc3BvdXQvTVMKZG93bnN0YWdlCmRvd25zdGFpcnMvTQpkb3duc3RhdGUvTQpkb3duc3RyZWFtCmRvd25zd2luZy9NUwpkb3dudGltZS9NCmRvd250b3duL00KZG93bnRyZW5kL01TCmRvd250cm9kZGVuCmRvd250dXJuL01TCmRvd253YXJkL1MKZG93bndpbmQKZG93bnkvUlQKZG93cnkvU00KZG93c2UvRFJTWkcKZG93c2VyL00KZG94b2xvZ3kvU00KZG95ZW4vU00KZG95ZW5uZS9NUwpkb3ovWEdETlMKZG96ZS9NCmRvemVuL01ICmRvemlseQpkb3p5L1JUUApkcGkKZHB0CmRyYWIvTVlTUApkcmFiYmVyCmRyYWJiZXN0CmRyYWJuZXNzL00KZHJhY2htYS9NUwpkcmFjb25pYW4KZHJhZnQncwpkcmFmdC9BU0RHCmRyYWZ0ZWUvU00KZHJhZnRlci9TTQpkcmFmdGlseQpkcmFmdGluZXNzL00KZHJhZnRpbmcvTQpkcmFmdHNtYW4vTQpkcmFmdHNtYW5zaGlwL00KZHJhZnRzbWVuCmRyYWZ0c3dvbWFuL00KZHJhZnRzd29tZW4KZHJhZnR5L1JUUApkcmFnL01TCmRyYWdnZWQKZHJhZ2dpbmcKZHJhZ2d5L1RSCmRyYWduZXQvU00KZHJhZ29uL1NNCmRyYWdvbmZseS9TTQpkcmFnb29uL1NNREcKZHJhZ3N0ZXIvUwpkcmFpbi9TTURSWkcKZHJhaW5hZ2UvTQpkcmFpbmJvYXJkL1NNCmRyYWluZXIvTQpkcmFpbnBpcGUvTVMKZHJha2UvU00KZHJhbS9NUwpkcmFtYS9TTQpkcmFtYXRpYy9TCmRyYW1hdGljYWxseQpkcmFtYXRpY3MvTQpkcmFtYXRpc3QvU00KZHJhbWF0aXphdGlvbi9TTQpkcmFtYXRpemUvRFNHCmRyYW5rCmRyYXBlL0RSU01aRwpkcmFwZXIvTQpkcmFwZXJ5L1NNCmRyYXN0aWMKZHJhc3RpY2FsbHkKZHJhdApkcmF0dGVkCmRyYXVnaHRib2FyZC9TCmRyYXcvTVJaR1NKCmRyYXdiYWNrL01TCmRyYXdicmlkZ2UvTVMKZHJhd2VyL00KZHJhd2luZy9NCmRyYXdsL1NNREcKZHJhd24vQQpkcmF3c3RyaW5nL01TCmRyYXkvTVMKZHJlYWQvU01ERwpkcmVhZGZ1bC9QWQpkcmVhZGZ1bG5lc3MvTQpkcmVhZGxvY2tzL00KZHJlYWRub3VnaHQvTVMKZHJlYW0vU01EUlpHCmRyZWFtYm9hdC9NUwpkcmVhbWVkL1UKZHJlYW1lci9NCmRyZWFtaWx5CmRyZWFtaW5lc3MvTQpkcmVhbWxhbmQvTQpkcmVhbWxlc3MKZHJlYW1saWtlCmRyZWFtd29ybGQvU00KZHJlYW15L1JQVApkcmVhcgpkcmVhcmlseQpkcmVhcmluZXNzL00KZHJlYXJ5L1JQVApkcmVkZ2UvRFJTTVpHCmRyZWRnZXIvTQpkcmVncy9NCmRyZW5jaC9HRFMKZHJlc3MvQVVHU0RNCmRyZXNzYWdlL00KZHJlc3Nlci9NUwpkcmVzc2luZXNzL00KZHJlc3NpbmcvU00KZHJlc3NtYWtlci9TTQpkcmVzc21ha2luZy9NCmRyZXNzeS9UUFIKZHJldy9BCmRyaWJibGUvTVpHRFJTCmRyaWJibGVyL00KZHJpYmxldC9NUwpkcmllci9NCmRyaWZ0L1NNRFJaRwpkcmlmdGVyL00KZHJpZnRuZXQvUwpkcmlmdHdvb2QvTQpkcmlsbC9TTURSWkcKZHJpbGxlci9NCmRyaWxsbWFzdGVyL1NNCmRyaW5rL1NNUkJKWkcKZHJpbmthYmxlL1UKZHJpbmtlci9NCmRyaXAvTVMKZHJpcHBlZApkcmlwcGluZy9TTQpkcmlwcHkvVFIKZHJpdmUvUlNNWkdKCmRyaXZlbC9TWkdNRFIKZHJpdmVsZXIvTQpkcml2ZW4KZHJpdmVyL00KZHJpdmVzaGFmdC9TTQpkcml2ZXdheS9NUwpkcml6emxlL01HRFMKZHJpenpseQpkcm9ndWUvU00KZHJvaWQvUwpkcm9sbC9SUFQKZHJvbGxlcnkvU00KZHJvbGxuZXNzL00KZHJvbGx5CmRyb21lZGFyeS9TTQpkcm9uZS9EU01HCmRyb29sL1NNREcKZHJvb3AvR1NNRApkcm9vcGluZXNzL00KZHJvb3B5L1RQUgpkcm9wL01TCmRyb3BraWNrL01TCmRyb3BsZXQvU00KZHJvcG91dC9TTQpkcm9wcGVkCmRyb3BwZXIvU00KZHJvcHBpbmcvUwpkcm9wcGluZ3MvTQpkcm9wc2ljYWwKZHJvcHN5L00KZHJvc3MvTQpkcm91Z2h0L1NNCmRyb3ZlL1JTTVoKZHJvdmVyL00KZHJvd24vR1NKRApkcm93bmluZy9NCmRyb3dzZS9NR0RTCmRyb3dzaWx5CmRyb3dzaW5lc3MvTQpkcm93c3kvUlRQCmRydWIvUwpkcnViYmVkCmRydWJiZXIvU00KZHJ1YmJpbmcvTVMKZHJ1ZGdlL01HRFMKZHJ1ZGdlcnkvTQpkcnVnL01TCmRydWdnZWQKZHJ1Z2dpZS9TTQpkcnVnZ2luZwpkcnVnZ2lzdC9TTQpkcnVnZ3kKZHJ1Z3N0b3JlL01TCmRydWlkL1NNCmRydWlkaXNtL00KZHJ1bS9NUwpkcnVtYmVhdC9TTQpkcnVtbGluL1NNCmRydW1tZWQKZHJ1bW1lci9TTQpkcnVtbWluZwpkcnVtc3RpY2svU00KZHJ1bmsvU1RNTlIKZHJ1bmthcmQvTVMKZHJ1bmtlbi9QWQpkcnVua2VubmVzcy9NCmRydXBlL1NNCmRydXRoZXJzL00KZHJ5L1pUR0RSU01ZCmRyeWFkL1NNCmRyeWVyL1NNCmRyeW5lc3MvTQpkcnlzCmRyeXdhbGwvTQpkdWFsCmR1YWxpc20vTQpkdWFsaXR5L00KZHViL1NNCmR1YmJlZApkdWJiZXIvU00KZHViYmluL00KZHViYmluZwpkdWJpZXR5L00KZHViaW91cy9ZUApkdWJpb3VzbmVzcy9NCmR1Y2FsCmR1Y2F0L1NNCmR1Y2hlc3MvTVMKZHVjaHkvU00KZHVjay9NREdTCmR1Y2tiaWxsL1NNCmR1Y2tib2FyZHMKZHVja2xpbmcvU00KZHVja3BpbnMvTQpkdWNrd2VlZC9NCmR1Y2t5L1RSU00KZHVjdCdzL0sKZHVjdC9DS0lGUwpkdWN0aWxlCmR1Y3RpbGl0eS9NCmR1Y3RpbmcKZHVjdGxlc3MKZHVkL0dTTUQKZHVkZS9NUwpkdWRnZW9uL00KZHVlL1NNCmR1ZWwvTURSSlpHUwpkdWVsZXIvTQpkdWVsaXN0L1NNCmR1ZW5uYS9NUwpkdWV0L01TCmR1ZmYvTURSWkdTCmR1ZmZlci9NCmR1ZwpkdWdvdXQvTVMKZHVoCmR1a2UvTVMKZHVrZWRvbS9TTQpkdWxjZXQKZHVsY2ltZXIvTVMKZHVsbC9EUlBUR1MKZHVsbGFyZC9TTQpkdWxsbmVzcy9NCmR1bGx5CmR1bHkvVQpkdW1iL1JZUFQKZHVtYmJlbGwvU00KZHVtYmZvdW5kL1NERwpkdW1ibmVzcy9NCmR1bWJvL1MKZHVtYnN0cnVjawpkdW1id2FpdGVyL1NNCmR1bWR1bS9NUwpkdW1teS9TTQpkdW1wL01EUlpHUwpkdW1waW5lc3MvTQpkdW1wbGluZy9TTQpkdW1wc2l0ZS9TCmR1bXBzdGVyL1NNCmR1bXB5L1BUUgpkdW4vU00KZHVuY2UvU00KZHVuZGVyaGVhZC9NUwpkdW5lL01TCmR1bmcvTURHUwpkdW5nYXJlZS9NUwpkdW5nZW9uL1NNCmR1bmdoaWxsL01TCmR1bmsvTURHUwpkdW5uZWQKZHVubmVyCmR1bm5lc3QKZHVubmluZwpkdW5ubwpkdW8vU00KZHVvZGVjaW1hbApkdW9kZW5hCmR1b2RlbmFsCmR1b2RlbnVtL00KZHVvcG9seS9TCmR1cGUvTVpHRFJTCmR1cGVyL00KZHVwbGUKZHVwbGV4L01TCmR1cGxpY2F0ZSdzCmR1cGxpY2F0ZS9BR05EUwpkdXBsaWNhdGlvbi9BTQpkdXBsaWNhdG9yL01TCmR1cGxpY2l0b3VzCmR1cGxpY2l0eS9NCmR1cmFiaWxpdHkvTQpkdXJhYmxlCmR1cmFibHkKZHVyYW5jZS9NCmR1cmF0aW9uL00KZHVyZXNzL00KZHVyaW5nCmR1cnN0CmR1cnVtL00KZHVzay9NCmR1c2tpbmVzcy9NCmR1c2t5L1JUUApkdXN0L01EUlpHUwpkdXN0YmluL1NNCmR1c3RjYXJ0L1MKZHVzdGVyL00KZHVzdGluZXNzL00KZHVzdGxlc3MKZHVzdG1hbgpkdXN0bWVuCmR1c3RwYW4vU00KZHVzdHNoZWV0L1MKZHVzdHkvUlRQCmR1dGNoCmR1dGVvdXMvWQpkdXRpYWJsZQpkdXRpZnVsL1lQCmR1dGlmdWxuZXNzL00KZHV0eS9TTQpkdXZldC9TTQpkd2FyZi9TR01ECmR3YXJmaXNoCmR3YXJmaXNtL00KZHdlZWIvU00KZHdlbGwvU0paR1IKZHdlbGxlci9NCmR3ZWxsaW5nL00KZHdlbHQvSQpkd2luZGxlL0RTRwpkeWFkaWMKZHliYnVrL1NNCmR5YmJ1a2ltCmR5ZS9EUlNNWkcKZHllaW5nL0EKZHllci9NCmR5ZXN0dWZmL00KZHlpbmcvTQpkeWtlL01TCmR5bmFtaWMvTVMKZHluYW1pY2FsL1kKZHluYW1pY3MvTQpkeW5hbWlzbS9NCmR5bmFtaXRlL01aR0RSUwpkeW5hbWl0ZXIvTQpkeW5hbW8vU00KZHluYXN0aWMKZHluYXN0eS9TTQpkeXNlbnRlcnkvTQpkeXNmdW5jdGlvbi9NUwpkeXNmdW5jdGlvbmFsCmR5c2xlY3RpYy9TTQpkeXNsZXhpYS9NCmR5c2xleGljL1NNCmR5c3BlcHNpYS9NCmR5c3BlcHRpYy9NUwpkeXNwaGFnaWEKZHlzcHJvc2l1bS9NCmR5c3RvbmlhCmR6CmUnZW4KZSdlcgplL0ZEU1QKZUJheS9NCmVNdXNpYy9NCmVhCmVhY2gKZWFnZXIvUFRSWQplYWdlcm5lc3MvTQplYWdsZS9NUwplYWdsZXQvTVMKZWFyL1NNRFkKZWFyYWNoZS9TTQplYXJidWQvU00KZWFyZHJ1bS9TTQplYXJmdWwvU00KZWFybC9NUwplYXJsZG9tL1NNCmVhcmxpbmVzcy9NCmVhcmxvYmUvU00KZWFybHkvUlRQCmVhcm1hcmsvU01ERwplYXJtdWZmL1NNCmVhcm4vRFJaVEdKUwplYXJuZWQvVQplYXJuZXIvTQplYXJuZXN0L1NNWVAKZWFybmVzdG5lc3MvTQplYXJuaW5ncy9NCmVhcnBob25lL01TCmVhcnBpZWNlL1MKZWFycGx1Zy9TTQplYXJyaW5nL1NNCmVhcnNob3QvTQplYXJzcGxpdHRpbmcKZWFydGgncwplYXJ0aC9VRFlHCmVhcnRoYm91bmQKZWFydGhlbgplYXJ0aGVud2FyZS9NCmVhcnRoaW5lc3MvTQplYXJ0aGxpbmcvTVMKZWFydGhseS9SVAplYXJ0aHF1YWtlL1NNCmVhcnRocy9VCmVhcnRoc2hha2luZwplYXJ0aHdhcmQvUwplYXJ0aHdvcmsvTVMKZWFydGh3b3JtL01TCmVhcnRoeS9SVFAKZWFyd2F4L00KZWFyd2lnL1NNCmVhc2UvRURTTQplYXNlbC9TTQplYXNlbWVudC9TTQplYXNpbHkvVQplYXNpbmVzcy9VTQplYXNpbmcKZWFzdC9NCmVhc3Rib3VuZAplYXN0ZXJseS9TTQplYXN0ZXJuL1pSCmVhc3Rlcm5lci9NCmVhc3Rlcm5tb3N0CmVhc3R3YXJkL1MKZWFzeS9VUlRQCmVhc3lnb2luZwplYXQvWkdCU05SCmVhdGFibGUvU00KZWF0ZW4vVQplYXRlci9NCmVhdGVyeS9TTQplYXZlL01TCmVhdmVzZHJvcC9TCmVhdmVzZHJvcHBlZAplYXZlc2Ryb3BwZXIvU00KZWF2ZXNkcm9wcGluZwplYmIvU01ERwplYm9ueS9TTQplYnVsbGllbmNlL00KZWJ1bGxpZW50L1kKZWJ1bGxpdGlvbi9NCmVjY2VudHJpYy9TTQplY2NlbnRyaWNhbGx5CmVjY2VudHJpY2l0eS9TTQplY2NsCmVjY2xlc2lhbAplY2NsZXNpYXN0aWMvU00KZWNjbGVzaWFzdGljYWwvWQplY2hlbG9uL1NNCmVjaGlub2Rlcm0vU00KZWNobydzCmVjaG8vQURHCmVjaG9lcy9BCmVjaG9pYwplY2hvbG9jYXRpb24vTQplY2hvcwplY2xhaXIvU00KZWNsYXQvTQplY2xlY3RpYy9TTQplY2xlY3RpY2FsbHkKZWNsZWN0aWNpc20vTQplY2xpcHNlL0RTTUcKZWNsaXB0aWMvTQplY2xvZ3VlL1NNCmVjb2NpZGUvTQplY29sCmVjb2xvZ2ljCmVjb2xvZ2ljYWwvWQplY29sb2dpc3QvTVMKZWNvbG9neS9NCmVjb24KZWNvbm9tZXRyaWMKZWNvbm9taWMvUwplY29ub21pY2FsL1VZCmVjb25vbWljcy9NCmVjb25vbWlzdC9TTQplY29ub21pemUvRFJTWkcKZWNvbm9taXplci9NCmVjb25vbXkvU00KZWNvc3lzdGVtL01TCmVjb3RvdXJpc20vTQplY290b3VyaXN0L01TCmVjcnUvTQplY3N0YXN5L1NNCmVjc3RhdGljCmVjc3RhdGljYWxseQplY3UvUwplY3VtZW5pY2FsL1kKZWN1bWVuaWNpc20vTQplY3VtZW5pc20vTQplY3plbWEvTQplZC9BQ1NNCmVkYW1hbWUKZWRkeS9EU01HCmVkZWx3ZWlzcy9NCmVkZW1hL1NNCmVkZ2UvTVpHSkRSUwplZGdlci9NCmVkZ2V3aXNlCmVkZ2lseQplZGdpbmVzcy9NCmVkZ2luZy9NCmVkZ3kvUlRQCmVkaWJpbGl0eS9NCmVkaWJsZS9TTVAKZWRpYmxlbmVzcy9NCmVkaWN0L1NNCmVkaWZpY2F0aW9uL00KZWRpZmljZS9TTQplZGlmaWVyL00KZWRpZnkvRFJTWkdOCmVkaWZ5aW5nL1UKZWRpdCdzCmVkaXQvQURHUwplZGl0YWJsZQplZGl0ZWQvVQplZGl0aW9uL01TCmVkaXRvci9TTQplZGl0b3JpYWwvU01ZCmVkaXRvcmlhbGl6ZS9EU0cKZWRpdG9yc2hpcC9NCmVkdWMKZWR1Y2FiaWxpdHkvTQplZHVjYWJsZS9JCmVkdWNhdGUvQURTR05WCmVkdWNhdGVkL1UKZWR1Y2F0aW9uL0FNCmVkdWNhdGlvbmFsL1kKZWR1Y2F0aW9uYWxpc3QvUwplZHVjYXRpb25pc3QvUwplZHVjYXRpb25zCmVkdWNhdG9yL01TCmVkdWNlL0RTR0IKZWR1dGFpbm1lbnQvTQplZWsKZWVsL1NNCmVlcmllL1JUCmVlcmlseQplZXJpbmVzcy9NCmVmZi9HU0QKZWZmYWNlL0RTTEcKZWZmYWNlbWVudC9NCmVmZmVjdC9TTURHVgplZmZlY3RpdmUvSVBZCmVmZmVjdGl2ZW5lc3MvSU0KZWZmZWN0dWFsL0lZCmVmZmVjdHVhdGUvRFNHCmVmZmVtaW5hY3kvTQplZmZlbWluYXRlL1kKZWZmZW5kaS9TTQplZmZlcmVudAplZmZlcnZlc2NlL0dEUwplZmZlcnZlc2NlbmNlL00KZWZmZXJ2ZXNjZW50L1kKZWZmZXRlL1lQCmVmZmV0ZW5lc3MvTQplZmZpY2FjaW91cy9ZCmVmZmljYWN5L0lNCmVmZmljaWVuY3kvSVNNCmVmZmljaWVudC9JWQplZmZpZ3kvU00KZWZmbG9yZXNjZW5jZS9NCmVmZmxvcmVzY2VudAplZmZsdWVuY2UvTQplZmZsdWVudC9NUwplZmZsdXZpYQplZmZsdXZpdW0vTQplZmZvcnQvU00KZWZmb3J0bGVzcy9ZUAplZmZvcnRsZXNzbmVzcy9NCmVmZnJvbnRlcnkvTQplZmZ1bGdlbmNlL00KZWZmdWxnZW50CmVmZnVzZS9EU0dOVlgKZWZmdXNpb24vTQplZmZ1c2l2ZS9ZUAplZmZ1c2l2ZW5lc3MvTQplZ2FkCmVnYWxpdGFyaWFuL1NNCmVnYWxpdGFyaWFuaXNtL00KZWdnL0dTTUQKZWdnYmVhdGVyL01TCmVnZ2N1cC9TTQplZ2doZWFkL1NNCmVnZ25vZy9NCmVnZ3BsYW50L01TCmVnZ3NoZWxsL1NNCmVnbGFudGluZS9TTQplZ28vU00KZWdvY2VudHJpYy9NUwplZ29jZW50cmljYWxseQplZ29jZW50cmljaXR5L00KZWdvaXNtL00KZWdvaXN0L1NNCmVnb2lzdGljCmVnb2lzdGljYWwvWQplZ29tYW5pYS9NCmVnb21hbmlhYy9NUwplZ290aXNtL00KZWdvdGlzdC9TTQplZ290aXN0aWMKZWdvdGlzdGljYWwvWQplZ3JlZ2lvdXMvUFkKZWdyZWdpb3VzbmVzcy9NCmVncmVzcy9NUwplZ3JldC9TTQplaAplaWRlci9TTQplaWRlcmRvd24vTVMKZWlnZW52YWx1ZS9TCmVpZ2h0L1NNCmVpZ2h0ZWVuL01IUwplaWdodGVlbnRoL00KZWlnaHRlZW50aHMKZWlnaHRoL00KZWlnaHRocwplaWdodGlldGgvTQplaWdodGlldGhzCmVpZ2h0eS9TTUgKZWluc3RlaW5pdW0vTQplaXN0ZWRkZm9kL1MKZWl0aGVyCmVqYWN1bGF0ZS9HTlhEUwplamFjdWxhdGlvbi9NCmVqYWN1bGF0b3J5CmVqZWN0L1NERwplamVjdGlvbi9NUwplamVjdG9yL1NNCmVrZS9EU0cKZWxhYm9yYXRlL1lHTkRTUFgKZWxhYm9yYXRlbmVzcy9NCmVsYWJvcmF0aW9uL00KZWxhbi9NCmVsYW5kL1NNCmVsYXBzZS9EU0cKZWxhc3RpYy9NUwplbGFzdGljYWxseQplbGFzdGljYXRlZAplbGFzdGljaXR5L00KZWxhc3RpY2l6ZS9EU0cKZWxhdGUvRFNHTgplbGF0ZWQvWQplbGF0aW9uL00KZWxib3cvU01ERwplbGJvd3Jvb20vTQplbGRlci9TTVkKZWxkZXJiZXJyeS9TTQplbGRlcmNhcmUvTQplbGRlc3QKZWxkcml0Y2gKZWxlY3QncwplbGVjdC9BU0RHVgplbGVjdGFibGUKZWxlY3Rpb24vQU1TCmVsZWN0aW9uZWVyL0RHUwplbGVjdGl2ZS9NUwplbGVjdG9yL01TCmVsZWN0b3JhbC9ZCmVsZWN0b3JhdGUvTVMKZWxlY3RyaWMvUwplbGVjdHJpY2FsL1kKZWxlY3RyaWNpYW4vTVMKZWxlY3RyaWNpdHkvTQplbGVjdHJpZmljYXRpb24vTQplbGVjdHJpZmllci9NCmVsZWN0cmlmeS9aR05EUlMKZWxlY3Ryb2NhcmRpb2dyYW0vTVMKZWxlY3Ryb2NhcmRpb2dyYXBoL00KZWxlY3Ryb2NhcmRpb2dyYXBocwplbGVjdHJvY2FyZGlvZ3JhcGh5L00KZWxlY3Ryb2N1dGUvRFNYR04KZWxlY3Ryb2N1dGlvbi9NCmVsZWN0cm9kZS9TTQplbGVjdHJvZHluYW1pY3MKZWxlY3Ryb2VuY2VwaGFsb2dyYW0vTVMKZWxlY3Ryb2VuY2VwaGFsb2dyYXBoL00KZWxlY3Ryb2VuY2VwaGFsb2dyYXBoaWMKZWxlY3Ryb2VuY2VwaGFsb2dyYXBocwplbGVjdHJvZW5jZXBoYWxvZ3JhcGh5L00KZWxlY3Ryb2xvZ2lzdC9TTQplbGVjdHJvbHlzaXMvTQplbGVjdHJvbHl0ZS9NUwplbGVjdHJvbHl0aWMKZWxlY3Ryb21hZ25ldC9NUwplbGVjdHJvbWFnbmV0aWMKZWxlY3Ryb21hZ25ldGljYWxseQplbGVjdHJvbWFnbmV0aXNtL00KZWxlY3Ryb21vdGl2ZQplbGVjdHJvbi9NUwplbGVjdHJvbmljL1MKZWxlY3Ryb25pY2EvTQplbGVjdHJvbmljYWxseQplbGVjdHJvbmljcy9NCmVsZWN0cm9wbGF0ZS9EU0cKZWxlY3Ryb3Njb3BlL1NNCmVsZWN0cm9zY29waWMKZWxlY3Ryb3Nob2NrL00KZWxlY3Ryb3N0YXRpYy9TCmVsZWN0cm9zdGF0aWNzL00KZWxlY3Ryb3R5cGUvTVMKZWxlZW1vc3luYXJ5CmVsZWdhbmNlL0lNCmVsZWdhbnQvSVkKZWxlZ2lhYy9NUwplbGVnaWFjYWwKZWxlZ3kvU00KZWxlbQplbGVtZW50L01TCmVsZW1lbnRhbC9ZCmVsZW1lbnRhcnkKZWxlcGhhbnQvU00KZWxlcGhhbnRpYXNpcy9NCmVsZXBoYW50aW5lCmVsZXYKZWxldmF0ZS9YRFNHTgplbGV2YXRpb24vTQplbGV2YXRvci9NUwplbGV2ZW4vU01ICmVsZXZlbnMvUwplbGV2ZW50aC9NCmVsZXZlbnRocwplbGYvTQplbGZpbgplbGZpc2gKZWxpY2l0L1NERwplbGljaXRhdGlvbi9NCmVsaWRlL0RTRwplbGlnaWJpbGl0eS9JTQplbGlnaWJsZQplbGltaW5hdGUvWERTR04KZWxpbWluYXRpb24vTQplbGltaW5hdG9yL1MKZWxpc2lvbi9NUwplbGl0ZS9TTQplbGl0aXNtL00KZWxpdGlzdC9NUwplbGl4aXIvU00KZWxrL1NNCmVsbC9TTQplbGxpcHNlL01TCmVsbGlwc2lzL00KZWxsaXBzb2lkL1NNCmVsbGlwc29pZGFsCmVsbGlwdGljCmVsbGlwdGljYWwvWQplbG0vU00KZWxvY3V0aW9uL00KZWxvY3V0aW9uYXJ5CmVsb2N1dGlvbmlzdC9TTQplbG9kZWEvU00KZWxvbmdhdGUvRFNHTlgKZWxvbmdhdGlvbi9NCmVsb3BlL0RTR0wKZWxvcGVtZW50L01TCmVsb3F1ZW5jZS9NCmVsb3F1ZW50L1kKZWxzZQplbHNld2hlcmUKZWx1Y2lkYXRlL0RTR05YCmVsdWNpZGF0aW9uL00KZWx1ZGUvRFNHCmVsdXNpdmUvWVAKZWx1c2l2ZW5lc3MvTQplbHZlci9TTQplbHZlcwplbHZpc2gKZW0ncwplbS9TCmVtYWNpYXRlL0dORFMKZW1hY2lhdGlvbi9NCmVtYWlsL1NNREcKZW1hbmF0ZS9YRFNHTgplbWFuYXRpb24vTQplbWFuY2lwYXRlL0RTR04KZW1hbmNpcGF0aW9uL00KZW1hbmNpcGF0b3IvTVMKZW1hc2N1bGF0ZS9HTkRTCmVtYXNjdWxhdGlvbi9NCmVtYmFsbS9TWkdEUgplbWJhbG1lci9NCmVtYmFuay9TTEdECmVtYmFua21lbnQvU00KZW1iYXJnby9NREcKZW1iYXJnb2VzCmVtYmFyay9BRUdEUwplbWJhcmthdGlvbi9FTQplbWJhcmthdGlvbnMKZW1iYXJyYXNzL0dMRFMKZW1iYXJyYXNzZWQvVQplbWJhcnJhc3NpbmcvWQplbWJhcnJhc3NtZW50L1NNCmVtYmFzc3kvU00KZW1iYXR0bGVkCmVtYmVkL1MKZW1iZWRkZWQKZW1iZWRkaW5nCmVtYmVsbGlzaC9MR0RTCmVtYmVsbGlzaG1lbnQvU00KZW1iZXIvU00KZW1iZXp6bGUvWkdMRFJTCmVtYmV6emxlbWVudC9NCmVtYmV6emxlci9NCmVtYml0dGVyL0dMRFMKZW1iaXR0ZXJtZW50L00KZW1ibGF6b24vR0RMUwplbWJsYXpvbm1lbnQvTQplbWJsZW0vU00KZW1ibGVtYXRpYwplbWJsZW1hdGljYWxseQplbWJvZGltZW50L0VNCmVtYm9keS9BRUdTRAplbWJvbGRlbi9ER1MKZW1ib2xpc20vTVMKZW1ib2xpemF0aW9uCmVtYm9zcy9EUlNaRwplbWJvc3Nlci9NCmVtYm91Y2h1cmUvTQplbWJvd2VyL1NHRAplbWJyYWNlL0RTTUcKZW1icmFjZWFibGUKZW1icmFzdXJlL01TCmVtYnJvY2F0aW9uL01TCmVtYnJvaWRlci9TRFJaRwplbWJyb2lkZXJlci9NCmVtYnJvaWRlcnkvU00KZW1icm9pbC9ER0xTCmVtYnJvaWxtZW50L00KZW1icnlvL1NNCmVtYnJ5b2xvZ2ljYWwKZW1icnlvbG9naXN0L01TCmVtYnJ5b2xvZ3kvTQplbWJyeW9uaWMKZW1jZWUvRFNNCmVtY2VlaW5nCmVtZW5kL1NERwplbWVuZGF0aW9uL01TCmVtZXJhbGQvTVMKZW1lcmdlL0FEU0cKZW1lcmdlbmNlL0FNCmVtZXJnZW5jeS9TTQplbWVyZ2VudAplbWVyaXRhCmVtZXJpdHVzCmVtZXJ5L00KZW1ldGljL1NNCmVtZi9TCmVtaWdyYW50L1NNCmVtaWdyYXRlL0RTWEdOCmVtaWdyYXRpb24vTQplbWlncmUvU00KZW1pbmVuY2UvTVMKZW1pbmVudC9ZCmVtaXIvTVMKZW1pcmF0ZS9NUwplbWlzc2FyeS9TTQplbWlzc2lvbi9TTQplbWl0L1MKZW1pdHRlZAplbWl0dGVyL01TCmVtaXR0aW5nCmVtby9TTQplbW9qaS9TTQplbW9sbGllbnQvTVMKZW1vbHVtZW50L01TCmVtb3RlL1hEU0dOVgplbW90aWNvbi9TTQplbW90aW9uL00KZW1vdGlvbmFsL1VZCmVtb3Rpb25hbGlzbS9NCmVtb3Rpb25hbGl6ZS9HRFMKZW1vdGlvbmxlc3MKZW1vdGl2ZS9ZCmVtcGF0aGV0aWMKZW1wYXRoaXplL0RTRwplbXBhdGh5L00KZW1wZXJvci9NUwplbXBoYXNlcwplbXBoYXNpcy9NCmVtcGhhc2l6ZS9BR0RTCmVtcGhhdGljL1UKZW1waGF0aWNhbGx5CmVtcGh5c2VtYS9NCmVtcGlyZS9TTQplbXBpcmljCmVtcGlyaWNhbC9ZCmVtcGlyaWNpc20vTQplbXBpcmljaXN0L1NNCmVtcGxhY2VtZW50L1NNCmVtcGxveSdzCmVtcGxveS9BREdMUwplbXBsb3lhYmxlL1UKZW1wbG95ZWUvU00KZW1wbG95ZXIvU00KZW1wbG95bWVudC9VQU0KZW1wbG95bWVudHMKZW1wb3JpdW0vU00KZW1wb3dlci9TREdMCmVtcG93ZXJtZW50L00KZW1wcmVzcy9NUwplbXB0aWx5CmVtcHRpbmVzcy9NCmVtcHR5L1RHUERSU00KZW1weXJlYW4vTQplbXUvU00KZW11bGF0ZS9EU0dOVlgKZW11bGF0aW9uL00KZW11bGF0b3IvU00KZW11bHNpZmljYXRpb24vTQplbXVsc2lmaWVyL00KZW11bHNpZnkvTkRSU1pHCmVtdWxzaW9uL01TCmVuL1NNCmVuYWJsZS9EUlNaRwplbmFibGVyL00KZW5hY3QvQVNMREcKZW5hY3RtZW50L0FTTQplbmFtZWwvSlNaR01EUgplbmFtZWxlci9NCmVuYW1lbHdhcmUvTQplbmFtb3IvU0dECmVuYwplbmNhbXAvTFNHRAplbmNhbXBtZW50L01TCmVuY2Fwc3VsYXRlL1hHTkRTCmVuY2Fwc3VsYXRpb24vTQplbmNhc2UvTERTRwplbmNhc2VtZW50L00KZW5jZXBoYWxpdGljCmVuY2VwaGFsaXRpcy9NCmVuY2hhaW4vREdTCmVuY2hhbnQvRUxER1MKZW5jaGFudGVyL01TCmVuY2hhbnRpbmcvWQplbmNoYW50bWVudC9FTQplbmNoYW50bWVudHMKZW5jaGFudHJlc3MvTVMKZW5jaGlsYWRhL1NNCmVuY2lwaGVyL1NHRAplbmNpcmNsZS9EU0dMCmVuY2lyY2xlbWVudC9NCmVuY2wKZW5jbGF2ZS9NUwplbmNsb3NlL0dEUwplbmNsb3NlZC9VCmVuY2xvc3VyZS9TTQplbmNvZGUvRFJTWkcKZW5jb2Rlci9NCmVuY29taXVtL01TCmVuY29tcGFzcy9HRFMKZW5jb3JlL0RTTUcKZW5jb3VudGVyL0dTTUQKZW5jb3VyYWdlL0RTTEcKZW5jb3VyYWdlbWVudC9TTQplbmNvdXJhZ2luZy9ZCmVuY3JvYWNoL0dMRFMKZW5jcm9hY2htZW50L1NNCmVuY3J1c3QvREdTCmVuY3J1c3RhdGlvbi9TTQplbmNyeXB0L0RHUwplbmNyeXB0aW9uCmVuY3VtYmVyL0VHU0QKZW5jdW1iZXJlZC9VCmVuY3VtYnJhbmNlL01TCmVuY3kKZW5jeWNsaWNhbC9TTQplbmN5Y2xvcGVkaWEvTVMKZW5jeWNsb3BlZGljCmVuY3lzdC9MU0dECmVuY3lzdG1lbnQvTQplbmQvR1ZTSk1ECmVuZGFuZ2VyL1NHREwKZW5kYW5nZXJtZW50L00KZW5kZWFyL1NHTEQKZW5kZWFyaW5nL1kKZW5kZWFybWVudC9TTQplbmRlYXZvci9HU01ECmVuZGVtaWMvTVMKZW5kZW1pY2FsbHkKZW5kZ2FtZS9TCmVuZGluZy9NCmVuZGl2ZS9TTQplbmRsZXNzL1BZCmVuZGxlc3NuZXNzL00KZW5kbW9zdAplbmRvY2FyZGl0aXMKZW5kb2NyaW5lL01TCmVuZG9jcmlub2xvZ2lzdC9NUwplbmRvY3Jpbm9sb2d5L00KZW5kb2dlbm91cy9ZCmVuZG9tZXRyaWFsCmVuZG9tZXRyaW9zaXMKZW5kb21ldHJpdW0KZW5kb3JwaGluL01TCmVuZG9yc2UvTFpHRFJTCmVuZG9yc2VtZW50L01TCmVuZG9yc2VyL00KZW5kb3Njb3BlL01TCmVuZG9zY29waWMKZW5kb3Njb3B5L00KZW5kb3RoZWxpYWwKZW5kb3RoZXJtaWMKZW5kb3cvU0RMRwplbmRvd21lbnQvTVMKZW5kcG9pbnQvU00KZW5kdWUvRFNHCmVuZHVyYWJsZS9VCmVuZHVyYW5jZS9NCmVuZHVyZS9EU0JHCmVuZHdheXMKZW5lbWEvU00KZW5lbXkvU00KZW5lcmdldGljCmVuZXJnZXRpY2FsbHkKZW5lcmdpemUvWkdEUlMKZW5lcmdpemVyL00KZW5lcmd5L1NNCmVuZXJ2YXRlL0dORFMKZW5lcnZhdGlvbi9NCmVuZmVlYmxlL0dEU0wKZW5mZWVibGVtZW50L00KZW5maWxhZGUvRFNNRwplbmZvbGQvU0dECmVuZm9yY2UvTFpHRFJTCmVuZm9yY2VhYmxlL1UKZW5mb3JjZWQvVQplbmZvcmNlbWVudC9NCmVuZm9yY2VyL00KZW5mcmFuY2hpc2UvRUdEU0wKZW5mcmFuY2hpc2VtZW50L0VNCmVuZ2FnZS9FQURTRwplbmdhZ2VtZW50L0VNUwplbmdhZ2luZ2x5CmVuZ2VuZGVyL1NHRAplbmdpbmUvU00KZW5naW5lZXIvTURHUwplbmdpbmVlcmluZy9NCmVuZ29yZ2UvTEdEUwplbmdvcmdlbWVudC9NCmVuZ3JhbS9TTQplbmdyYXZlL1pHSkRSUwplbmdyYXZlci9NCmVuZ3JhdmluZy9NCmVuZ3Jvc3MvR0xEUwplbmdyb3NzbWVudC9NCmVuZ3VsZi9TTEdECmVuZ3VsZm1lbnQvTQplbmhhbmNlL0xaR0RSUwplbmhhbmNlbWVudC9TTQplbmlnbWEvU00KZW5pZ21hdGljCmVuaWdtYXRpY2FsbHkKZW5qYW1ibWVudC9TTQplbmpvaW4vU0dECmVuam95L0dCTFNECmVuam95YWJseQplbmpveW1lbnQvU00KZW5sYXJnZS9MWkdEUlMKZW5sYXJnZWFibGUKZW5sYXJnZW1lbnQvTVMKZW5sYXJnZXIvTQplbmxpZ2h0ZW4vU0dMRAplbmxpZ2h0ZW5lZC9VCmVubGlnaHRlbm1lbnQvTQplbmxpc3QvQURHU0wKZW5saXN0ZWUvU00KZW5saXN0bWVudC9BTQplbmxpc3RtZW50cwplbmxpdmVuL1NMREcKZW5saXZlbm1lbnQvTQplbm1lc2gvRFNHTAplbm1lc2htZW50L00KZW5taXR5L1NNCmVubm9ibGUvRFNHTAplbm5vYmxlbWVudC9NCmVubnVpL00KZW5vcm1pdHkvU00KZW5vcm1vdXMvUFkKZW5vcm1vdXNuZXNzL00KZW5vdWdoL00KZW5wbGFuZS9EU0cKZW5xdWlyZXIvUwplbnF1aXJpbmdseQplbnJhZ2UvR0RTCmVucmFwdHVyZS9EU0cKZW5yaWNoL0RTTEcKZW5yaWNobWVudC9NCmVucm9sbC9ETFNHCmVucm9sbG1lbnQvTVMKZW5zY29uY2UvRFNHCmVuc2VtYmxlL1NNCmVuc2hyaW5lL0dMRFMKZW5zaHJpbmVtZW50L00KZW5zaHJvdWQvREdTCmVuc2lnbi9NUwplbnNpbGFnZS9NCmVuc2xhdmUvRFNHTAplbnNsYXZlbWVudC9NCmVuc25hcmUvRFNMRwplbnNuYXJlbWVudC9NCmVuc3VlL0RTRwplbnN1cmUvWkdEUlMKZW5zdXJlci9NCmVudGFpbC9EU0dMCmVudGFpbG1lbnQvTQplbnRhbmdsZS9FRFNMRwplbnRhbmdsZW1lbnQvRU0KZW50YW5nbGVtZW50cwplbnRlbnRlL1NNCmVudGVyL0FTR0QKZW50ZXJpYwplbnRlcml0aXMvTQplbnRlcnByaXNlL01HUwplbnRlcnByaXNpbmcvWQplbnRlcnRhaW4vWkdEUlNMCmVudGVydGFpbmVyL00KZW50ZXJ0YWluaW5nL01ZCmVudGVydGFpbm1lbnQvTVMKZW50aHJhbGwvR0RTTAplbnRocmFsbG1lbnQvTQplbnRocm9uZS9HRFNMCmVudGhyb25lbWVudC9TTQplbnRodXNlL0RTRwplbnRodXNpYXNtL01TCmVudGh1c2lhc3QvTVMKZW50aHVzaWFzdGljL1UKZW50aHVzaWFzdGljYWxseQplbnRpY2UvR0RTTAplbnRpY2VtZW50L01TCmVudGljaW5nL1kKZW50aXJlL1kKZW50aXJldHkvTQplbnRpdGxlL0RTR0wKZW50aXRsZW1lbnQvU00KZW50aXR5L1NNCmVudG9tYi9EU0dMCmVudG9tYm1lbnQvTQplbnRvbW9sb2dpY2FsCmVudG9tb2xvZ2lzdC9NUwplbnRvbW9sb2d5L00KZW50b3VyYWdlL1NNCmVudHInYWN0ZQplbnRyYWlscy9NCmVudHJhbmNlL0xEU01HCmVudHJhbmNlbWVudC9NCmVudHJhbmNpbmcvWQplbnRyYW50L1NNCmVudHJhcC9MUwplbnRyYXBtZW50L00KZW50cmFwcGVkCmVudHJhcHBpbmcKZW50cmVhdC9HU0QKZW50cmVhdGluZy9ZCmVudHJlYXR5L1NNCmVudHJlZS9NUwplbnRyZW5jaC9EU0dMCmVudHJlbmNobWVudC9NUwplbnRyZXByZW5ldXIvU00KZW50cmVwcmVuZXVyaWFsCmVudHJlcHJlbmV1cnNoaXAKZW50cm9weS9NCmVudHJ1c3QvU0dECmVudHJ5L0FTTQplbnRyeXBob25lL1MKZW50cnl3YXkvTVMKZW50d2luZS9EU0cKZW51bWVyYWJsZQplbnVtZXJhdGUvRFNHTlgKZW51bWVyYXRpb24vTQplbnVtZXJhdG9yL1NNCmVudW5jaWF0ZS9EU0dOCmVudW5jaWF0aW9uL00KZW51cmVzaXMvTQplbnZlbG9wL1NMRFJaRwplbnZlbG9wZS9TTQplbnZlbG9wZXIvTQplbnZlbG9wbWVudC9NCmVudmVub20vU0RHCmVudmlhYmxlL1UKZW52aWFibHkKZW52aW91cy9QWQplbnZpb3VzbmVzcy9NCmVudmlyb25tZW50L01TCmVudmlyb25tZW50YWwvWQplbnZpcm9ubWVudGFsaXNtL00KZW52aXJvbm1lbnRhbGlzdC9TTQplbnZpcm9ucy9NCmVudmlzYWdlL0dEUwplbnZpc2lvbi9ER1MKZW52b3kvU00KZW52eS9EU01HCmVudnlpbmcvWQplbnp5bWF0aWMKZW56eW1lL1NNCmVvbGlhbgplb24vU00KZW9zaW5vcGhpbC9TCmVvc2lub3BoaWxpYwplcGF1bGV0L1NNCmVwZWUvTVMKZXBoZWRyaW5lL00KZXBoZW1lcmEvTQplcGhlbWVyYWwvWQplcGljL01TCmVwaWNlbnRlci9NUwplcGljdXJlL1NNCmVwaWN1cmVhbi9NUwplcGlkZW1pYy9TTQplcGlkZW1pY2FsbHkKZXBpZGVtaW9sb2dpY2FsCmVwaWRlbWlvbG9naXN0L1NNCmVwaWRlbWlvbG9neS9NCmVwaWRlcm1hbAplcGlkZXJtaWMKZXBpZGVybWlzL01TCmVwaWR1cmFsL1MKZXBpZ2xvdHRpcy9NUwplcGlncmFtL1NNCmVwaWdyYW1tYXRpYwplcGlncmFwaC9NCmVwaWdyYXBocwplcGlncmFwaHkvTQplcGlsZXBzeS9NCmVwaWxlcHRpYy9TTQplcGlsb2d1ZS9NUwplcGluZXBocmluZS9NCmVwaXBoYW55L1NNCmVwaXNjb3BhY3kvTQplcGlzY29wYWwKZXBpc2NvcGF0ZS9NCmVwaXNvZGUvU00KZXBpc29kaWMKZXBpc29kaWNhbGx5CmVwaXN0ZW1pYwplcGlzdGVtb2xvZ2ljYWwKZXBpc3RlbW9sb2d5CmVwaXN0bGUvU00KZXBpc3RvbGFyeQplcGl0YXBoL00KZXBpdGFwaHMKZXBpdGhlbGlhbAplcGl0aGVsaXVtL00KZXBpdGhldC9TTQplcGl0b21lL1NNCmVwaXRvbWl6ZS9HRFMKZXBvY2gvTQplcG9jaGFsCmVwb2NocwplcG9ueW1vdXMKZXBveHkvRFNNRwplcHNpbG9uL1NNCmVxdWFiaWxpdHkvTQplcXVhYmxlCmVxdWFibHkKZXF1YWwvU01EWUcKZXF1YWxpdHkvSU0KZXF1YWxpemF0aW9uL00KZXF1YWxpemUvWkdEUlMKZXF1YWxpemVyL00KZXF1YW5pbWl0eS9NCmVxdWF0ZS9EU0dOQlgKZXF1YXRpb24vTQplcXVhdG9yL1NNCmVxdWF0b3JpYWwKZXF1ZXJyeS9TTQplcXVlc3RyaWFuL1NNCmVxdWVzdHJpYW5pc20vTQplcXVlc3RyaWVubmUvU00KZXF1aWRpc3RhbnQvWQplcXVpbGF0ZXJhbC9TTQplcXVpbGlicml1bS9FTQplcXVpbmUvU00KZXF1aW5vY3RpYWwKZXF1aW5veC9NUwplcXVpcC9BUwplcXVpcGFnZS9NUwplcXVpcG1lbnQvTQplcXVpcG9pc2UvTQplcXVpcHBlZC9VQQplcXVpcHBpbmcvQQplcXVpdGFibGUvSQplcXVpdGFibHkvSQplcXVpdGF0aW9uL00KZXF1aXR5L0lTTQplcXVpdgplcXVpdmFsZW5jZS9NUwplcXVpdmFsZW5jeS9TTQplcXVpdmFsZW50L01ZUwplcXVpdm9jYWwvVVkKZXF1aXZvY2FsbmVzcy9NCmVxdWl2b2NhdGUvR05YRFMKZXF1aXZvY2F0aW9uL00KZXF1aXZvY2F0b3IvU00KZXIvQwplcmEvU00KZXJhZGljYWJsZS9JCmVyYWRpY2F0ZS9EU0dOCmVyYWRpY2F0aW9uL00KZXJhZGljYXRvci9NUwplcmFzZS9EUlNCWkcKZXJhc2VyL00KZXJhc3VyZS9TTQplcmJpdW0vTQplcmUKZXJlY3QvUFNHRFkKZXJlY3RpbGUKZXJlY3Rpb24vU00KZXJlY3RuZXNzL00KZXJlY3Rvci9NUwplcmVsb25nCmVyZW1pdGUvTVMKZXJnL1NNCmVyZ28KZXJnb25vbWljL1MKZXJnb25vbWljYWxseQplcmdvbm9taWNzL00KZXJnb3N0ZXJvbC9NCmVyZ290L00KZXJtaW5lL1NNCmVyb2RlL0RTRwplcm9kaWJsZQplcm9nZW5vdXMKZXJvc2lvbi9NCmVyb3NpdmUKZXJvdGljL1MKZXJvdGljYS9NCmVyb3RpY2FsbHkKZXJvdGljaXNtL00KZXJyL0dTRAplcnJhbmQvU00KZXJyYW50L0kKZXJyYXRhL1NNCmVycmF0aWMKZXJyYXRpY2FsbHkKZXJyYXR1bS9NCmVycm9uZW91cy9ZCmVycm9yL1NNCmVyc2F0ei9NUwplcnN0CmVyc3R3aGlsZQplcnVjdC9TREcKZXJ1Y3RhdGlvbi9TTQplcnVkaXRlL1lOCmVydWRpdGlvbi9NCmVydXB0L1NER1YKZXJ1cHRpb24vTVMKZXJ5c2lwZWxhcy9NCmVyeXRocm9jeXRlL1NNCmVyeXRocm9teWNpbgplc2NhbGF0ZS9DRFNHTgplc2NhbGF0aW9uL0NNCmVzY2FsYXRpb25zCmVzY2FsYXRvci9NUwplc2NhbGxvcC9TR01ECmVzY2Fsb3BlL1MKZXNjYXBhZGUvTVMKZXNjYXBlL0xNR0RTCmVzY2FwZWUvTVMKZXNjYXBlbWVudC9TTQplc2NhcGlzbS9NCmVzY2FwaXN0L01TCmVzY2Fwb2xvZ2lzdC9TCmVzY2Fwb2xvZ3kKZXNjYXJnb3QvTVMKZXNjYXJvbGUvTVMKZXNjYXJwbWVudC9NUwplc2NoYXRvbG9naWNhbAplc2NoYXRvbG9neQplc2NoZXcvU0RHCmVzY29ydC9TTURHCmVzY3JpdG9pcmUvTVMKZXNjcm93L1NNCmVzY3Vkby9TTQplc2N1dGNoZW9uL1NNCmVzb3BoYWdlYWwKZXNvcGhhZ2kKZXNvcGhhZ3VzL00KZXNvdGVyaWMKZXNvdGVyaWNhbGx5CmVzcAplc3BhZHJpbGxlL01TCmVzcGFsaWVyL01EU0cKZXNwZWNpYWwvWQplc3Bpb25hZ2UvTQplc3BsYW5hZGUvTVMKZXNwb3VzYWwvTQplc3BvdXNlL0dEUwplc3ByZXNzby9NUwplc3ByaXQvTQplc3B5L0RTRwplc3F1aXJlL1NNCmVzc2F5L1NNRFJaRwplc3NheWVyL00KZXNzYXlpc3QvU00KZXNzZW5jZS9TTQplc3NlbnRpYWwvSU1TCmVzc2VudGlhbGx5CmVzdGFibGlzaC9BRVNER0wKZXN0YWJsaXNobWVudC9BRU0KZXN0YWJsaXNobWVudHMKZXN0YXRlL1NNCmVzdGVlbS9FU01ERwplc3Rlci9TTQplc3RpbWFibGUvSQplc3RpbWF0ZS9NR05EU1gKZXN0aW1hdGlvbi9NCmVzdGltYXRvci9TTQplc3RvcHBlbAplc3RyYW5nZS9MRFNHCmVzdHJhbmdlbWVudC9NUwplc3Ryb2dlbi9NCmVzdHJvdXMKZXN0cnVzL01TCmVzdHVhcnkvU00KZXRhL1NNCmV0YwpldGNoL0RSU1pHSgpldGNoZXIvTQpldGNoaW5nL00KZXRlcm5hbC9ZUApldGVybmFsbmVzcy9NCmV0ZXJuaXR5L1NNCmV0aGFuZS9NCmV0aGFub2wvTQpldGhlci9NCmV0aGVyZWFsL1kKZXRoaWMvU00KZXRoaWNhbC9VWQpldGhpY3MvTQpldGhuaWMvU00KZXRobmljYWxseQpldGhuaWNpdHkvTQpldGhub2NlbnRyaWMKZXRobm9jZW50cmlzbS9NCmV0aG5vZ3JhcGhlci9TCmV0aG5vZ3JhcGhpYwpldGhub2dyYXBoaWNhbGx5CmV0aG5vZ3JhcGh5CmV0aG5vbG9naWNhbC9ZCmV0aG5vbG9naXN0L1NNCmV0aG5vbG9neS9NCmV0aG9sb2dpY2FsCmV0aG9sb2dpc3QvTVMKZXRob2xvZ3kvTQpldGhvcy9NCmV0aHlsL00KZXRoeWxlbmUvTQpldGlvbGF0ZWQKZXRpb2xvZ2ljCmV0aW9sb2dpY2FsCmV0aW9sb2d5L1NNCmV0aXF1ZXR0ZS9NCmV0dWRlL1NNCmV0eW1vbG9naWNhbC9ZCmV0eW1vbG9naXN0L1NNCmV0eW1vbG9neS9TTQpldWNhbHlwdGkKZXVjYWx5cHR1cy9NUwpldWNocmUvRFNNRwpldWNsaWRlYW4KZXVnZW5pYy9TCmV1Z2VuaWNhbGx5CmV1Z2VuaWNpc3QvTVMKZXVnZW5pY3MvTQpldWxvZ2lzdC9NUwpldWxvZ2lzdGljCmV1bG9naXplL1pHRFJTCmV1bG9naXplci9NCmV1bG9neS9TTQpldW51Y2gvTQpldW51Y2hzCmV1cGhlbWlzbS9TTQpldXBoZW1pc3RpYwpldXBoZW1pc3RpY2FsbHkKZXVwaG9uaW91cy9ZCmV1cGhvbnkvTQpldXBob3JpYS9NCmV1cGhvcmljCmV1cGhvcmljYWxseQpldXJla2EKZXVyby9NUwpldXJvcGl1bS9NCmV1dGVjdGljCmV1dGhhbmFzaWEvTQpldXRoYW5pemUvRFNHCmV1dGhlbmljcy9NCmV2YWN1YXRlL1hEU0dOCmV2YWN1YXRpb24vTQpldmFjdWVlL01TCmV2YWRlL0RSU1pHCmV2YWRlci9NCmV2YWx1YXRlL0FHTlZEU1gKZXZhbHVhdGlvbi9BTQpldmFuZXNjZW5jZS9NCmV2YW5lc2NlbnQKZXZhbmdlbGljCmV2YW5nZWxpY2FsL1NNWQpldmFuZ2VsaWNhbGlzbS9NCmV2YW5nZWxpc20vTQpldmFuZ2VsaXN0L01TCmV2YW5nZWxpc3RpYwpldmFuZ2VsaXplL0dEUwpldmFwb3JhdGUvR05EUwpldmFwb3JhdGlvbi9NCmV2YXBvcmF0b3IvU00KZXZhc2lvbi9TTQpldmFzaXZlL1lQCmV2YXNpdmVuZXNzL00KZXZlL0FTTQpldmVuL01EUllUR1NKUApldmVuaGFuZGVkL1kKZXZlbmluZy9NCmV2ZW5uZXNzL1VNCmV2ZW5zb25nL00KZXZlbnQvU00KZXZlbnRmdWwvVVkKZXZlbnRmdWxuZXNzL00KZXZlbnRpZGUvTQpldmVudHVhbC9ZCmV2ZW50dWFsaXR5L1NNCmV2ZW50dWF0ZS9HRFMKZXZlcgpldmVyZ2xhZGUvU00KZXZlcmdyZWVuL1NNCmV2ZXJsYXN0aW5nL01ZUwpldmVybW9yZQpldmVyeQpldmVyeWJvZHkvTQpldmVyeWRheQpldmVyeW9uZS9NCmV2ZXJ5cGxhY2UKZXZlcnl0aGluZy9NCmV2ZXJ5d2hlcmUKZXZpY3QvU0RHCmV2aWN0aW9uL01TCmV2aWRlbmNlL01HRFMKZXZpZGVudC9ZCmV2aWwvTVJZVFNQCmV2aWxkb2VyL1NNCmV2aWxkb2luZy9NCmV2aWxsZXIKZXZpbGxlc3QKZXZpbG5lc3MvTQpldmluY2UvRFNHCmV2aXNjZXJhdGUvRFNHTgpldmlzY2VyYXRpb24vTQpldm9jYXRpb24vTVMKZXZvY2F0aXZlL1kKZXZva2UvRFNHCmV2b2x1dGlvbi9NCmV2b2x1dGlvbmFyeQpldm9sdXRpb25pc3QvU00KZXZvbHZlL0RTRwpld2UvUlNNWgpld2VyL00KZXgvTVMKZXhhYnl0ZS9NUwpleGFjZXJiYXRlL0dORFMKZXhhY2VyYmF0aW9uL00KZXhhY3QvU1BEUllURwpleGFjdGluZy9ZCmV4YWN0aW9uL00KZXhhY3RpdHVkZS9NCmV4YWN0bmVzcy9JTQpleGFnZ2VyYXRlL1hEU0dOCmV4YWdnZXJhdGVkL1kKZXhhZ2dlcmF0aW9uL00KZXhhZ2dlcmF0b3IvTVMKZXhhbHQvU0RHCmV4YWx0YXRpb24vTQpleGFtL01TCmV4YW1pbmF0aW9uL0FNUwpleGFtaW5lL0FHRFMKZXhhbWluZXIvTVMKZXhhbXBsZS9NR0RTCmV4YW1wbGVkL1UKZXhhc3BlcmF0ZS9EU0dOCmV4YXNwZXJhdGVkL1kKZXhhc3BlcmF0aW5nL1kKZXhhc3BlcmF0aW9uL00KZXhjYXZhdGUvR05EU1gKZXhjYXZhdGlvbi9NCmV4Y2F2YXRvci9TTQpleGNlZWQvR1NECmV4Y2VlZGluZy9ZCmV4Y2VsL1MKZXhjZWxsZWQKZXhjZWxsZW5jZS9NCmV4Y2VsbGVuY3kvU00KZXhjZWxsZW50L1kKZXhjZWxsaW5nCmV4Y2Vsc2lvci9NCmV4Y2VwdC9HU0QKZXhjZXB0aW9uL0JTTQpleGNlcHRpb25hYmxlL1UKZXhjZXB0aW9uYWwvVVkKZXhjZXB0aW9uYWxpc20KZXhjZXJwdC9NREdTCmV4Y2Vzcy9WTVMKZXhjZXNzaXZlL1kKZXhjaGFuZ2UvRFNNRwpleGNoYW5nZWFibGUKZXhjaGVxdWVyL1NNCmV4Y2lzZS9YRFNNR04KZXhjaXNpb24vTQpleGNpdGFiaWxpdHkvTQpleGNpdGFibHkKZXhjaXRhdGlvbi9NCmV4Y2l0ZS9CRFJTTFpHCmV4Y2l0ZWQvWQpleGNpdGVtZW50L1NNCmV4Y2l0ZXIvTQpleGNpdGluZy9ZCmV4Y2wKZXhjbGFpbS9ER1MKZXhjbGFtYXRpb24vU00KZXhjbGFtYXRvcnkKZXhjbHVkZS9HRFMKZXhjbHVzaW9uL01TCmV4Y2x1c2lvbmFyeQpleGNsdXNpdmUvUE1ZUwpleGNsdXNpdmVuZXNzL00KZXhjbHVzaXZpdHkvTQpleGNvbW11bmljYXRlL0dORFNYCmV4Y29tbXVuaWNhdGlvbi9NCmV4Y29yaWF0ZS9EU0dOWApleGNvcmlhdGlvbi9NCmV4Y3JlbWVudC9NCmV4Y3JlbWVudGFsCmV4Y3Jlc2NlbmNlL01TCmV4Y3Jlc2NlbnQKZXhjcmV0YS9NCmV4Y3JldGUvWEdORFMKZXhjcmV0aW9uL00KZXhjcmV0b3J5CmV4Y3J1Y2lhdGluZy9ZCmV4Y3VscGF0ZS9EU0dOCmV4Y3VscGF0aW9uL00KZXhjdWxwYXRvcnkKZXhjdXJzaW9uL01TCmV4Y3Vyc2lvbmlzdC9NUwpleGN1cnNpdmUvWVAKZXhjdXJzaXZlbmVzcy9NCmV4Y3VzYWJsZS9JCmV4Y3VzYWJseS9JCmV4Y3VzZS9EU0JNRwpleGN1c2VkL1UKZXhlYy9NUwpleGVjcmFibGUKZXhlY3JhYmx5CmV4ZWNyYXRlL0RTR04KZXhlY3JhdGlvbi9NCmV4ZWN1dGUvQlhHTlZEUwpleGVjdXRpb24vWk1SCmV4ZWN1dGlvbmVyL00KZXhlY3V0aXZlL1NNCmV4ZWN1dG9yL01TCmV4ZWN1dHJpY2VzCmV4ZWN1dHJpeC9NCmV4ZWdlc2VzCmV4ZWdlc2lzL00KZXhlZ2V0aWMKZXhlZ2V0aWNhbApleGVtcGxhci9TTQpleGVtcGxhcnkKZXhlbXBsaWZpY2F0aW9uL00KZXhlbXBsaWZ5L0dEU1hOCmV4ZW1wdC9TR0QKZXhlbXB0aW9uL1NNCmV4ZXJjaXNlL0RSU01aRwpleGVyY2lzZXIvTQpleGVydC9TREcKZXhlcnRpb24vTVMKZXhldW50CmV4Zm9saWF0ZS9HTkRTCmV4aGFsYXRpb24vTVMKZXhoYWxlL0RTRwpleGhhdXN0L0dWTURTCmV4aGF1c3RpYmxlL0kKZXhoYXVzdGlvbi9NCmV4aGF1c3RpdmUvWVAKZXhoYXVzdGl2ZW5lc3MvTQpleGhpYml0L0dNRFMKZXhoaWJpdGlvbi9NUwpleGhpYml0aW9uaXNtL00KZXhoaWJpdGlvbmlzdC9NUwpleGhpYml0b3IvU00KZXhoaWxhcmF0ZS9EU0dOCmV4aGlsYXJhdGlvbi9NCmV4aG9ydC9TREcKZXhob3J0YXRpb24vTVMKZXhodW1hdGlvbi9NUwpleGh1bWUvRFNHCmV4aWdlbmNlL01TCmV4aWdlbmN5L1NNCmV4aWdlbnQKZXhpZ3VpdHkvTQpleGlndW91cwpleGlsZS9EU01HCmV4aXN0L1NERwpleGlzdGVuY2UvTVMKZXhpc3RlbnQKZXhpc3RlbnRpYWwvWQpleGlzdGVudGlhbGlzbS9NCmV4aXN0ZW50aWFsaXN0L01TCmV4aXQvTURHUwpleG9iaW9sb2d5L00KZXhvZHVzL01TCmV4b2dlbm91cwpleG9uCmV4b25lcmF0ZS9HTkRTCmV4b25lcmF0aW9uL00KZXhvcGxhbmV0L01TCmV4b3JiaXRhbmNlL00KZXhvcmJpdGFudC9ZCmV4b3JjaXNlL0RTRwpleG9yY2lzbS9TTQpleG9yY2lzdC9TTQpleG9za2VsZXRvbi9TTQpleG9zcGhlcmUvU00KZXhvdGhlcm1pYwpleG90aWMvU00KZXhvdGljYQpleG90aWNhbGx5CmV4b3RpY2lzbS9NCmV4cApleHBhbmQvQkdTRApleHBhbnNlL1hNTlZTCmV4cGFuc2libGUKZXhwYW5zaW9uL00KZXhwYW5zaW9uYXJ5CmV4cGFuc2lvbmlzbS9NCmV4cGFuc2lvbmlzdC9NUwpleHBhbnNpdmUvWVAKZXhwYW5zaXZlbmVzcy9NCmV4cGF0L1MKZXhwYXRpYXRlL0dORFMKZXhwYXRpYXRpb24vTQpleHBhdHJpYXRlL0RTTUdOCmV4cGF0cmlhdGlvbi9NCmV4cGVjdC9HU0QKZXhwZWN0YW5jeS9NCmV4cGVjdGFudC9ZCmV4cGVjdGF0aW9uL1NNCmV4cGVjdG9yYW50L1NNCmV4cGVjdG9yYXRlL0RTR04KZXhwZWN0b3JhdGlvbi9NCmV4cGVkaWVuY2UvSU0KZXhwZWRpZW5jZXMKZXhwZWRpZW5jaWVzCmV4cGVkaWVuY3kvSU0KZXhwZWRpZW50L1NNWQpleHBlZGl0ZS9EUlNaR05YCmV4cGVkaXRlci9NCmV4cGVkaXRpb24vTQpleHBlZGl0aW9uYXJ5CmV4cGVkaXRpb3VzL1BZCmV4cGVkaXRpb3VzbmVzcy9NCmV4cGVsL1MKZXhwZWxsZWQKZXhwZWxsaW5nCmV4cGVuZC9HU0JECmV4cGVuZGFibGUvU00KZXhwZW5kaXR1cmUvU00KZXhwZW5zZS9NUwpleHBlbnNpdmUvSVlQCmV4cGVuc2l2ZW5lc3MvSU0KZXhwZXJpZW5jZS9JTUQKZXhwZXJpZW5jZXMKZXhwZXJpZW5jaW5nCmV4cGVyaWVudGlhbApleHBlcmltZW50L01EUlNaRwpleHBlcmltZW50YWwvWQpleHBlcmltZW50YXRpb24vTQpleHBlcmltZW50ZXIvTQpleHBlcnQvU1BNWQpleHBlcnRpc2UvTQpleHBlcnRuZXNzL00KZXhwaWF0ZS9HTkRTCmV4cGlhdGlvbi9NCmV4cGlhdG9yeQpleHBpcmF0aW9uL00KZXhwaXJlL0RTRwpleHBpcmVkL1UKZXhwaXJ5L00KZXhwbGFpbi9BREdTCmV4cGxhaW5hYmxlCmV4cGxhaW5lZC9VCmV4cGxhbmF0aW9uL01TCmV4cGxhbmF0b3J5CmV4cGxldGl2ZS9NUwpleHBsaWNhYmxlL0kKZXhwbGljYXRlL1hHTkRTCmV4cGxpY2F0aW9uL00KZXhwbGljaXQvUFkKZXhwbGljaXRuZXNzL00KZXhwbG9kZS9HRFMKZXhwbG9pdC9aR0JNRFJTCmV4cGxvaXRhdGlvbi9NCmV4cGxvaXRhdGl2ZQpleHBsb2l0ZWQvVQpleHBsb2l0ZXIvTQpleHBsb3JhdGlvbi9NUwpleHBsb3JhdG9yeQpleHBsb3JlL1pHRFJTCmV4cGxvcmVkL1UKZXhwbG9yZXIvTQpleHBsb3Npb24vU00KZXhwbG9zaXZlL1NQTVkKZXhwbG9zaXZlbmVzcy9NCmV4cG8vTVMKZXhwb25lbnQvTVMKZXhwb25lbnRpYWwvWQpleHBvbmVudGlhdGlvbgpleHBvcnQvQlNaR01EUgpleHBvcnRhdGlvbi9NCmV4cG9ydGVyL00KZXhwb3NlL0RTTUcKZXhwb3NlZC9VCmV4cG9zaXRpb24vU00KZXhwb3NpdG9yL1NNCmV4cG9zaXRvcnkKZXhwb3N0dWxhdGUvR05YRFMKZXhwb3N0dWxhdGlvbi9NCmV4cG9zdXJlL01TCmV4cG91bmQvWkdEUlMKZXhwb3VuZGVyL00KZXhwcmVzcy9HVk1EU1kKZXhwcmVzc2VkL1UKZXhwcmVzc2libGUvSQpleHByZXNzaW9uL1NNCmV4cHJlc3Npb25pc20vTQpleHByZXNzaW9uaXN0L1NNCmV4cHJlc3Npb25pc3RpYwpleHByZXNzaW9ubGVzcy9ZCmV4cHJlc3NpdmUvUFkKZXhwcmVzc2l2ZW5lc3MvTQpleHByZXNzd2F5L1NNCmV4cHJvcHJpYXRlL0dOWERTCmV4cHJvcHJpYXRpb24vTQpleHByb3ByaWF0b3IvU00KZXhwdWxzaW9uL01TCmV4cHVuZ2UvR0RTCmV4cHVyZ2F0ZS9EU0dOWApleHB1cmdhdGVkL1UKZXhwdXJnYXRpb24vTQpleHF1aXNpdGUvWVAKZXhxdWlzaXRlbmVzcy9NCmV4dApleHRhbnQKZXh0ZW1wb3JhbmVvdXMvUFkKZXh0ZW1wb3JhbmVvdXNuZXNzL00KZXh0ZW1wb3JlCmV4dGVtcG9yaXphdGlvbi9NCmV4dGVtcG9yaXplL0dEUwpleHRlbmQvU1pHRFJCCmV4dGVuZGVyL00KZXh0ZW5zaWJsZQpleHRlbnNpb24vU00KZXh0ZW5zaW9uYWwKZXh0ZW5zaXZlL1lQCmV4dGVuc2l2ZW5lc3MvTQpleHRlbnQvU00KZXh0ZW51YXRlL0RTR04KZXh0ZW51YXRpb24vTQpleHRlcmlvci9NUwpleHRlcm1pbmF0ZS9EU1hHTgpleHRlcm1pbmF0aW9uL00KZXh0ZXJtaW5hdG9yL01TCmV4dGVybmFsL01ZUwpleHRlcm5hbGl6YXRpb24vU00KZXh0ZXJuYWxpemUvRFNHCmV4dGluY3QvR0RTCmV4dGluY3Rpb24vTVMKZXh0aW5ndWlzaC9aR0JEUlMKZXh0aW5ndWlzaGFibGUvSQpleHRpbmd1aXNoZXIvTQpleHRpcnBhdGUvR05EUwpleHRpcnBhdGlvbi9NCmV4dG9sL1MKZXh0b2xsZWQKZXh0b2xsaW5nCmV4dG9ydC9TR0QKZXh0b3J0aW9uL01SWgpleHRvcnRpb25hdGUvWQpleHRvcnRpb25lci9NCmV4dG9ydGlvbmlzdC9NUwpleHRyYS9TTQpleHRyYWNlbGx1bGFyCmV4dHJhY3QvTURHUwpleHRyYWN0aW9uL1NNCmV4dHJhY3Rvci9NUwpleHRyYWN1cnJpY3VsYXIKZXh0cmFkaXRlL0dOQlhEUwpleHRyYWRpdGlvbi9NCmV4dHJhanVkaWNpYWwKZXh0cmFsZWdhbApleHRyYW1hcml0YWwKZXh0cmFtdXJhbApleHRyYW5lb3VzL1kKZXh0cmFvcmRpbmFpcmUKZXh0cmFvcmRpbmFyaWx5CmV4dHJhb3JkaW5hcnkKZXh0cmFwb2xhdGUvWEdORFMKZXh0cmFwb2xhdGlvbi9NCmV4dHJhc2Vuc29yeQpleHRyYXRlcnJlc3RyaWFsL01TCmV4dHJhdGVycml0b3JpYWwKZXh0cmF0ZXJyaXRvcmlhbGl0eS9NCmV4dHJhdmFnYW5jZS9NUwpleHRyYXZhZ2FudC9ZCmV4dHJhdmFnYW56YS9NUwpleHRyYXZlaGljdWxhcgpleHRyZW1lL1BNWVRSUwpleHRyZW1lbmVzcy9NCmV4dHJlbWlzbS9NCmV4dHJlbWlzdC9NUwpleHRyZW1pdHkvU00KZXh0cmljYWJsZS9JCmV4dHJpY2F0ZS9HTkRTCmV4dHJpY2F0aW9uL00KZXh0cmluc2ljCmV4dHJpbnNpY2FsbHkKZXh0cm92ZXJzaW9uL00KZXh0cm92ZXJ0L1NNRApleHRydWRlL0dEUwpleHRydXNpb24vU00KZXh0cnVzaXZlCmV4dWJlcmFuY2UvTQpleHViZXJhbnQvWQpleHVkYXRpb24vTQpleHVkZS9EU0cKZXh1bHQvU0RHCmV4dWx0YW50L1kKZXh1bHRhdGlvbi9NCmV4dXJiL1NNCmV4dXJiYW4KZXh1cmJhbml0ZS9TTQpleHVyYmlhL00KZXllL0RTTQpleWViYWxsL0dNRFMKZXllYnJvdy9TTQpleWVkcm9wcGVyL1NNCmV5ZWZ1bC9TTQpleWVnbGFzcy9NUwpleWVpbmcKZXllbGFzaC9NUwpleWVsZXNzCmV5ZWxldC9TTQpleWVsaWQvU00KZXllbGluZXIvTVMKZXllb3BlbmVyL01TCmV5ZW9wZW5pbmcKZXllcGllY2UvTVMKZXllc2lnaHQvTQpleWVzb3JlL01TCmV5ZXN0cmFpbi9NCmV5ZXRlZXRoCmV5ZXRvb3RoL00KZXlld2FzaC9NCmV5ZXdpdG5lc3MvTVMKZi9DSUFWVFIKZmEvTQpmYWIKZmFibGUvRFNNCmZhYnJpYy9TTQpmYWJyaWNhdGUvRFNHTlgKZmFicmljYXRpb24vTQpmYWJyaWNhdG9yL1NNCmZhYnVsb3VzL1kKZmFjYWRlL1NNCmZhY2UncwpmYWNlL0FDU0RHCmZhY2VjbG90aC9NCmZhY2VjbG90aHMKZmFjZWxlc3MKZmFjZXQvU01ERwpmYWNldGlvdXMvWVAKZmFjZXRpb3VzbmVzcy9NCmZhY2lhbC9TTVkKZmFjaWxlL1kKZmFjaWxpdGF0ZS9HTkRTCmZhY2lsaXRhdGlvbi9NCmZhY2lsaXRhdG9yL01TCmZhY2lsaXR5L1NNCmZhY2luZy9TTQpmYWNzaW1pbGUvRFNNCmZhY3NpbWlsZWluZwpmYWN0L01TCmZhY3Rpb24vU00KZmFjdGlvbmFsCmZhY3Rpb25hbGlzbS9NCmZhY3Rpb3VzCmZhY3RpdGlvdXMKZmFjdG9pZC9TTQpmYWN0b3IncwpmYWN0b3IvQVNERwpmYWN0b3JpYWwvTVMKZmFjdG9yaXphdGlvbgpmYWN0b3JpemUvR0RTCmZhY3RvcnkvU00KZmFjdG90dW0vU00KZmFjdHVhbC9ZCmZhY3VsdHkvU00KZmFkL0dTTUQKZmFkZGlzaC9QCmZhZGRpc3QvTVMKZmFkZHkvUApmYWRlL01TCmZhZGluZy9VCmZhZXJpZS9TTQpmYWZmL0RHUwpmYWcvU00KZmFnZ2VkCmZhZ2dpbmcKZmFnZ290L1NNCmZhZ290L1NNRwpmYWllbmNlL00KZmFpbC9NREdKUwpmYWlsaW5nL00KZmFpbGxlL00KZmFpbHVyZS9TTQpmYWluL1JUCmZhaW50L1NNRFJZVEdQCmZhaW50aGVhcnRlZApmYWludG5lc3MvTQpmYWlyL01SWVRHSlBTCmZhaXJncm91bmQvTVMKZmFpcmluZy9NCmZhaXJuZXNzL1VNCmZhaXJ3YXkvU00KZmFpcnkvU00KZmFpcnlsYW5kL1NNCmZhaXRoL00KZmFpdGhmdWwncwpmYWl0aGZ1bC9VUFkKZmFpdGhmdWxuZXNzL1VNCmZhaXRoZnVscwpmYWl0aGxlc3MvUFkKZmFpdGhsZXNzbmVzcy9NCmZhaXRocwpmYWppdGEvU00KZmFqaXRhcy9NCmZha2UvTVpHRFJTCmZha2VyL00KZmFraXIvU00KZmFsY29uL1NNUloKZmFsY29uZXIvTQpmYWxjb25yeS9NCmZhbGwvTU5HUwpmYWxsYWNpb3VzL1kKZmFsbGFjeS9TTQpmYWxsYmFjawpmYWxsaWJpbGl0eS9JTQpmYWxsaWJsZS9QCmZhbGxpYmxlbmVzcy9NCmZhbGxpYmx5L0kKZmFsbG9mZi9TTQpmYWxsb3V0L00KZmFsbG93L1NNREcKZmFsc2UvUFJZVApmYWxzZWhvb2QvU00KZmFsc2VuZXNzL00KZmFsc2V0dG8vU00KZmFsc2llL1NNCmZhbHNpZmlhYmxlCmZhbHNpZmljYXRpb24vTQpmYWxzaWZpZXIvTQpmYWxzaWZ5L0RSU1pHTlgKZmFsc2l0eS9TTQpmYWx0ZXIvR1NKTUQKZmFsdGVyaW5nL1kKZmFtZSdzCmZhbWUvRApmYW1pbGlhbApmYW1pbGlhci9NWVMKZmFtaWxpYXJpdHkvVU0KZmFtaWxpYXJpemF0aW9uL00KZmFtaWxpYXJpemUvR0RTCmZhbWlseS9TTQpmYW1pbmUvU00KZmFtaXNoL0RTRwpmYW1vdXMvSVkKZmFuL1NNCmZhbmF0aWMvU00KZmFuYXRpY2FsL1kKZmFuYXRpY2lzbS9NCmZhbmJveS9TTQpmYW5jaWFibGUKZmFuY2llci9NCmZhbmNpZnVsL1lQCmZhbmNpZnVsbmVzcy9NCmZhbmNpbHkKZmFuY2luZXNzL00KZmFuY3kvRFJTTVpUR1AKZmFuY3l3b3JrL00KZmFuZGFuZ28vTVMKZmFuZG9tCmZhbmZhcmUvU00KZmFuZy9NRFMKZmFubGlnaHQvU00KZmFubmVkCmZhbm5pbmcKZmFubnkvU00KZmFudGFpbC9NUwpmYW50YXNpYS9TTQpmYW50YXNpc3QvUwpmYW50YXNpemUvR0RTCmZhbnRhc3RpYwpmYW50YXN0aWNhbC9ZCmZhbnRhc3kvRFNNRwpmYW56aW5lL01TCmZhcgpmYXJhZC9TTQpmYXJhZGl6ZS9ERwpmYXJhd2F5CmZhcmNlL1NNCmZhcmNpY2FsL1kKZmFyZS9NR0RTCmZhcmV3ZWxsL1NNCmZhcmluYS9NCmZhcmluYWNlb3VzCmZhcm0vTURSWkdTSgpmYXJtZXIvTQpmYXJtaGFuZC9TTQpmYXJtaG91c2UvU00KZmFybWluZy9NCmZhcm1sYW5kL01TCmZhcm1zdGVhZC9NUwpmYXJteWFyZC9NUwpmYXJvL00KZmFycmFnby9NCmZhcnJhZ29lcwpmYXJyaWVyL01TCmZhcnJvdy9TTURHCmZhcnNlZWluZwpmYXJzaWdodGVkL1AKZmFyc2lnaHRlZG5lc3MvTQpmYXJ0L01ER1MKZmFydGhlcgpmYXJ0aGVybW9zdApmYXJ0aGVzdApmYXJ0aGluZy9TTQpmYXNjaWEvU00KZmFzY2ljbGUvU00KZmFzY2luYXRlL0dORFNYCmZhc2NpbmF0aW5nL1kKZmFzY2luYXRpb24vTQpmYXNjaXNtL00KZmFzY2lzdC9NUwpmYXNjaXN0aWMKZmFzaGlvbi9aR0JNRFJTCmZhc2hpb25hYmxlL1UKZmFzaGlvbmFibHkvVQpmYXNoaW9uZXIvTQpmYXNoaW9uaXN0YS9NUwpmYXN0L01EUlRHU1AKZmFzdGJhY2svU00KZmFzdGJhbGwvU00KZmFzdGVuL1VBR0RTCmZhc3RlbmVyL1NNCmZhc3RlbmluZy9NUwpmYXN0aWRpb3VzL1BZCmZhc3RpZGlvdXNuZXNzL00KZmFzdG5lc3MvTVMKZmF0L0dTUE1ECmZhdGFsL1kKZmF0YWxpc20vTQpmYXRhbGlzdC9TTQpmYXRhbGlzdGljCmZhdGFsaXN0aWNhbGx5CmZhdGFsaXR5L1NNCmZhdGJhY2svTQpmYXRlL01TCmZhdGVmdWwvWVAKZmF0ZWZ1bG5lc3MvTQpmYXRoZWFkL01EUwpmYXRoZXIvU0dNRFkKZmF0aGVyaG9vZC9NCmZhdGhlcmxhbmQvTVMKZmF0aGVybGVzcwpmYXRob20vU01ER0IKZmF0aG9tYWJsZS9VCmZhdGhvbWxlc3MKZmF0aWd1ZS9NRFNHCmZhdGlndWVzL00KZmF0bmVzcy9NCmZhdHNvL1MKZmF0dGVuL1NERwpmYXR0ZXIKZmF0dGVzdApmYXR0aW5lc3MvTQpmYXR0eS9SU01UUApmYXR1aXR5L00KZmF0dW91cy9ZUApmYXR1b3VzbmVzcy9NCmZhdHdhL1NNCmZhdWNldC9TTQpmYXVsdC9DU01ERwpmYXVsdGZpbmRlci9TTQpmYXVsdGZpbmRpbmcvTQpmYXVsdGlseQpmYXVsdGluZXNzL00KZmF1bHRsZXNzL1BZCmZhdWx0bGVzc25lc3MvTQpmYXVsdHkvUFJUCmZhdW4vTVMKZmF1bmEvU00KZmF1dmlzbS9NCmZhdXZpc3QvU00KZmF1eApmYXZlL1MKZmF2b3IvRVNNREcKZmF2b3JhYmxlL1UKZmF2b3JhYmx5L1UKZmF2b3JpdGUvU00KZmF2b3JpdGlzbS9NCmZhd24vTURSWkdTCmZhd25lci9NCmZheC9HTURTCmZheS9UU01SCmZhemUvR0RTCmZhemVkL1UKZmVhbHR5L00KZmVhci9NREdTCmZlYXJmdWwvWVAKZmVhcmZ1bG5lc3MvTQpmZWFybGVzcy9QWQpmZWFybGVzc25lc3MvTQpmZWFyc29tZQpmZWFzaWJpbGl0eS9NCmZlYXNpYmxlL0lVCmZlYXNpYmx5CmZlYXN0L1NNRFJaRwpmZWFzdGVyL00KZmVhdC9NUwpmZWF0aGVyL1NHTUQKZmVhdGhlcmJlZGRpbmcvTQpmZWF0aGVyYnJhaW5lZApmZWF0aGVybGVzcwpmZWF0aGVyd2VpZ2h0L01TCmZlYXRoZXJ5L1RSCmZlYXR1cmUvRFNNRwpmZWF0dXJlbGVzcwpmZWJyaWxlCmZlY2FsCmZlY2VzL00KZmVja2xlc3MvUFkKZmVjdW5kCmZlY3VuZGF0ZS9HTkRTCmZlY3VuZGF0aW9uL00KZmVjdW5kaXR5L00KZmVkL1NNCmZlZGVyYWwvU01ZCmZlZGVyYWxpc20vTQpmZWRlcmFsaXN0L01TCmZlZGVyYWxpemF0aW9uL00KZmVkZXJhbGl6ZS9HRFMKZmVkZXJhdGUvRlhEU0dOCmZlZGVyYXRpb24vRk0KZmVkb3JhL1NNCmZlZS9TTQpmZWVibGUvUlRQCmZlZWJsZW5lc3MvTQpmZWVibHkKZmVlZC9NUlpHU0oKZmVlZGJhY2svTQpmZWVkYmFnL1NNCmZlZWRlci9NCmZlZWRpbmcvTQpmZWVkbG90L1NNCmZlZWwvTVJaR1NKCmZlZWxlci9NCmZlZWxnb29kCmZlZWxpbmcvTVkKZmVldApmZWlnbi9TREcKZmVpZ25lZC9VCmZlaW50L1NNREcKZmVpc3R5L1RSCmZlbGRzcGFyL00KZmVsaWNpdGF0ZS9HTlhEUwpmZWxpY2l0YXRpb24vTQpmZWxpY2l0b3VzL1kKZmVsaWNpdHkvSVNNCmZlbGluZS9TTQpmZWxsL01EUlpUR1MKZmVsbGEvUwpmZWxsYXRpby9NCmZlbGxvdy9TTQpmZWxsb3dtYW4vTQpmZWxsb3dtZW4KZmVsbG93c2hpcC9NUwpmZWxvbi9TTQpmZWxvbmlvdXMKZmVsb255L1NNCmZlbHQvTURHUwpmZW0KZmVtYWxlL1BTTQpmZW1hbGVuZXNzL00KZmVtaW5pbmUvU01ZCmZlbWluaW5pdHkvTQpmZW1pbmlzbS9NCmZlbWluaXN0L1NNCmZlbWluaXplL0RTRwpmZW1vcmFsCmZlbXVyL1NNCmZlbi9TTQpmZW5jZS9EUlNNWkcKZmVuY2VyL00KZmVuY2luZy9NCmZlbmQvQ0RSWkdTCmZlbmRlci9DTQpmZW5lc3RyYXRpb24vTQpmZW5uZWwvTQpmZXJhbApmZXJtZW50L0ZDTVMKZmVybWVudGF0aW9uL00KZmVybWVudGVkCmZlcm1lbnRpbmcKZmVybWl1bS9NCmZlcm4vTVMKZmVybnkvUlQKZmVyb2Npb3VzL1BZCmZlcm9jaW91c25lc3MvTQpmZXJvY2l0eS9NCmZlcnJldC9HU01ECmZlcnJpYwpmZXJyb21hZ25ldGljCmZlcnJvdXMKZmVycnVsZS9NUwpmZXJyeS9EU01HCmZlcnJ5Ym9hdC9TTQpmZXJyeW1hbi9NCmZlcnJ5bWVuCmZlcnRpbGUvSQpmZXJ0aWxpdHkvSU0KZmVydGlsaXphdGlvbi9NCmZlcnRpbGl6ZS9EUlNaRwpmZXJ0aWxpemVkL1UKZmVydGlsaXplci9NCmZlcnVsZS9TTQpmZXJ2ZW5jeS9NCmZlcnZlbnQvWQpmZXJ2aWQvWQpmZXJ2b3IvTQpmZXNzL0ZLR1NECmZlc3QvTVJaVlMKZmVzdGFsCmZlc3Rlci9HTUQKZmVzdGl2YWwvU00KZmVzdGl2ZS9ZUApmZXN0aXZlbmVzcy9NCmZlc3Rpdml0eS9TTQpmZXN0b29uL0dNRFMKZmV0YS9NCmZldGFsCmZldGNoL0RSU1pHCmZldGNoZXIvTQpmZXRjaGluZy9ZCmZldGUvTUdEUwpmZXRpZC9QCmZldGlkbmVzcy9NCmZldGlzaC9NUwpmZXRpc2hpc20vTQpmZXRpc2hpc3QvU00KZmV0aXNoaXN0aWMKZmV0bG9jay9NUwpmZXR0ZXIncwpmZXR0ZXIvVVNHRApmZXR0bGUvTQpmZXR0dWNjaW5lL00KZmV0dXMvTVMKZmV1ZC9NREdTCmZldWRhbApmZXVkYWxpc20vTQpmZXVkYWxpc3RpYwpmZXZlci9TTUQKZmV2ZXJpc2gvWVAKZmV2ZXJpc2huZXNzL00KZmV3L1RQTVIKZmV3bmVzcy9NCmZleQpmZXovTQpmZXp6ZXMKZmYKZmlhbmNlL0NNCmZpYW5jZWUvTVMKZmlhbmNlcwpmaWFzY28vTQpmaWFzY29lcwpmaWF0L01TCmZpYi9aU01SCmZpYmJlZApmaWJiZXIvU00KZmliYmluZwpmaWJlci9NCmZpYmVyYm9hcmQvTQpmaWJlcmZpbGwvTQpmaWJlcmdsYXNzL00KZmlicmlsL1NNCmZpYnJpbGxhdGUvR05EUwpmaWJyaWxsYXRpb24vTQpmaWJyaW4vTQpmaWJyb2lkCmZpYnJvc2lzL00KZmlicm91cwpmaWJ1bGEvTQpmaWJ1bGFlCmZpYnVsYXIKZmljaGUvU00KZmljaHUvU00KZmlja2xlL1JQVApmaWNrbGVuZXNzL00KZmljdGlvbi9NUwpmaWN0aW9uYWwvWQpmaWN0aW9uYWxpemF0aW9uL1NNCmZpY3Rpb25hbGl6ZS9EU0cKZmljdGl0aW91cy9ZCmZpY3RpdmUKZmljdXMvTQpmaWRkbGUvRFJTTVpHCmZpZGRsZXIvTQpmaWRkbGVzdGlja3MKZmlkZGx5L1RSCmZpZGVsaXR5L0lNCmZpZGdldC9TR01ECmZpZGdldHkKZmlkdWNpYXJ5L1NNCmZpZQpmaWVmL01TCmZpZWZkb20vTVMKZmllbGQvSVNNUloKZmllbGRlZApmaWVsZGVyL0lNCmZpZWxkaW5nCmZpZWxkc21hbgpmaWVsZHNtZW4KZmllbGR3b3JrL01SWgpmaWVsZHdvcmtlci9NCmZpZW5kL1NNCmZpZW5kaXNoL1kKZmllcmNlL1BSWVQKZmllcmNlbmVzcy9NCmZpZXJpbmVzcy9NCmZpZXJ5L1JQVApmaWVzdGEvU00KZmlmZS9NWlJTCmZpZmVyL00KZmlmdGVlbi9NSFMKZmlmdGVlbnRoL00KZmlmdGVlbnRocwpmaWZ0aC9NWQpmaWZ0aHMKZmlmdGlldGgvTQpmaWZ0aWV0aHMKZmlmdHkvU01ICmZpZy9TTE0KZmlnaHQvU01SWkcKZmlnaHRiYWNrCmZpZ2h0ZXIvSU1TCmZpZ2h0aW5nL0lNCmZpZ21lbnQvTVMKZmlndXJhdGlvbi9GTQpmaWd1cmF0aXZlL1kKZmlndXJlJ3MKZmlndXJlL0ZFR1NECmZpZ3VyZWhlYWQvU00KZmlndXJpbmUvTVMKZmlsYW1lbnQvTVMKZmlsYW1lbnRvdXMKZmlsYmVydC9NUwpmaWxjaC9EU0cKZmlsZSdzL0tDCmZpbGUvQ0FLR0RTCmZpbGVuYW1lL1MKZmlsZXIvQ1NNCmZpbGV0CmZpbGlhbApmaWxpYnVzdGVyL01EUlNaRwpmaWxpYnVzdGVyZXIvTQpmaWxpZ3JlZS9EU00KZmlsaWdyZWVpbmcKZmlsaW5nJ3MKZmlsaW5ncwpmaWxsJ3MKZmlsbC9BSURHUwpmaWxsZWQvVQpmaWxsZXIvTVMKZmlsbGV0L01ER1MKZmlsbGluZy9TTQpmaWxsaXAvTURHUwpmaWxseS9TTQpmaWxtL01ER1MKZmlsbWluZXNzL00KZmlsbW1ha2VyL1NNCmZpbG1zdHJpcC9NUwpmaWxteS9UUFIKZmlsbwpmaWx0ZXIvTURSQlNaRwpmaWx0ZXJlZC9VCmZpbHRlcmVyL00KZmlsdGgvTQpmaWx0aGlseQpmaWx0aGluZXNzL00KZmlsdGh5L1JQVApmaWx0cmF0ZSdzCmZpbHRyYXRlL0lHTkRTCmZpbHRyYXRpb24vSU0KZmluL1NNUgpmaW5hZ2xlL0RSU1pHCmZpbmFnbGVyL00KZmluYWwvU01ZCmZpbmFsZS9NUwpmaW5hbGlzdC9TTQpmaW5hbGl0eS9NCmZpbmFsaXphdGlvbi9NCmZpbmFsaXplL0RTRwpmaW5hbmNlJ3MKZmluYW5jZS9BRFNHCmZpbmFuY2lhbC9ZCmZpbmFuY2llci9NUwpmaW5hbmNpbmcvTQpmaW5jaC9NUwpmaW5kL0pNUlpHUwpmaW5kZXIvTQpmaW5kaW5nL00KZmluZGluZ3MvTQpmaW5lJ3MvRgpmaW5lL0NBRlRHRFMKZmluZWx5CmZpbmVuZXNzL00KZmluZXJ5L0FNCmZpbmVzcHVuCmZpbmVzc2UvRFNNRwpmaW5nZXIvTURHU0oKZmluZ2VyYm9hcmQvU00KZmluZ2VyaW5nL00KZmluZ2VybGluZy9TTQpmaW5nZXJtYXJrL1MKZmluZ2VybmFpbC9TTQpmaW5nZXJwcmludC9TR01ECmZpbmdlcnRpcC9NUwpmaW5pYWwvTVMKZmluaWNhbApmaW5pY2tpbmVzcy9NCmZpbmlja3kvUlBUCmZpbmlzL01TCmZpbmlzaCdzCmZpbmlzaC9BRFNHCmZpbmlzaGVkL1UKZmluaXNoZXIvTVMKZmluaXRlL0lZCmZpbmsvTURHUwpmaW5uZWQKZmlubnkKZmlyL1pHU0pNRFJICmZpcmUvTVMKZmlyZWFybS9TTQpmaXJlYmFsbC9NUwpmaXJlYm9tYi9NRFNKRwpmaXJlYm94L01TCmZpcmVicmFuZC9TTQpmaXJlYnJlYWsvU00KZmlyZWJyaWNrL1NNCmZpcmVidWcvU00KZmlyZWNyYWNrZXIvU00KZmlyZWRhbXAvTQpmaXJlZmlnaHQvTVJTWkcKZmlyZWZpZ2h0ZXIvTQpmaXJlZmlnaHRpbmcvTQpmaXJlZmx5L1NNCmZpcmVndWFyZC9TCmZpcmVob3VzZS9TTQpmaXJlbGlnaHQvWk1SCmZpcmVtYW4vTQpmaXJlbWVuCmZpcmVwbGFjZS9TTQpmaXJlcGx1Zy9NUwpmaXJlcG93ZXIvTQpmaXJlcHJvb2YvRFNHCmZpcmVyL00KZmlyZXNjcmVlbi9TCmZpcmVzaWRlL01TCmZpcmVzdG9ybS9NUwpmaXJldHJhcC9NUwpmaXJldHJ1Y2svTVMKZmlyZXdhbGwvTVMKZmlyZXdhdGVyL00KZmlyZXdvb2QvTQpmaXJld29yay9TTQpmaXJtL01EUllQVEdTCmZpcm1hbWVudC9TTQpmaXJtbmVzcy9NCmZpcm13YXJlL00KZmlyc3QvU01ZCmZpcnN0Ym9ybi9TTQpmaXJzdGhhbmQKZmlydGgvTQpmaXJ0aHMKZmlzY2FsL01ZUwpmaXNoL01EUlNaRwpmaXNoYm93bC9TTQpmaXNoY2FrZS9TTQpmaXNoZXIvTQpmaXNoZXJtYW4vTQpmaXNoZXJtZW4KZmlzaGVyeS9TTQpmaXNoaG9vay9TTQpmaXNoaWx5CmZpc2hpbmVzcy9NCmZpc2hpbmcvTQpmaXNobW9uZ2VyL01TCmZpc2huZXQvU00KZmlzaHBvbmQvTVMKZmlzaHRhaWwvREdTCmZpc2h3aWZlL00KZmlzaHdpdmVzCmZpc2h5L1RSUApmaXNzaWxlCmZpc3Npb24vQk0KZmlzc3VyZS9TTQpmaXN0L01TCmZpc3RmaWdodC9NUwpmaXN0ZnVsL1NNCmZpc3RpY3VmZnMvTQpmaXN0dWxhL1NNCmZpc3R1bG91cy9NCmZpdC9LQU1TCmZpdGZ1bC9ZUApmaXRmdWxuZXNzL00KZml0bHkKZml0bWVudC9TCmZpdG5lc3MvVU0KZml0dGVkL1VBCmZpdHRlci9NUwpmaXR0ZXN0CmZpdHRpbmcvU01ZCmZpdmUvTVpSUwpmaXgvWkdCSk1EUlMKZml4YXRlL0dOVkRTWApmaXhhdGlvbi9NCmZpeGF0aXZlL01TCmZpeGVkL1kKZml4ZXIvTQpmaXhpbmdzL00KZml4aXR5L00KZml4dHVyZS9NUwpmaXp6L01EU0cKZml6emxlL0RTTUcKZml6enkvUlQKZmpvcmQvU00KZmwvSkRHCmZsYWIvTQpmbGFiYmVyZ2FzdC9TR0QKZmxhYmJpbHkKZmxhYmJpbmVzcy9NCmZsYWJieS9SUFQKZmxhY2NpZC9ZCmZsYWNjaWRpdHkvTQpmbGFjay9TTQpmbGFnL01TCmZsYWdlbGxhCmZsYWdlbGxhbnQvUwpmbGFnZWxsYXRlL0dORFMKZmxhZ2VsbGF0aW9uL00KZmxhZ2VsbHVtL00KZmxhZ2dlZApmbGFnZ2luZy9VCmZsYWdtYW4vTQpmbGFnbWVuCmZsYWdvbi9NUwpmbGFncG9sZS9TTQpmbGFncmFuY2UvTQpmbGFncmFuY3kvTQpmbGFncmFudC9ZCmZsYWdzaGlwL1NNCmZsYWdzdGFmZi9NUwpmbGFnc3RvbmUvTVMKZmxhaWwvU0dNRApmbGFpci9TTQpmbGFrL00KZmxha2UvRFNNRwpmbGFraW5lc3MvTQpmbGFreS9UUlAKZmxhbWFnZQpmbGFtYmUvTVMKZmxhbWJlZWQKZmxhbWJlaW5nCmZsYW1ib3lhbmNlL00KZmxhbWJveWFuY3kvTQpmbGFtYm95YW50L1kKZmxhbWUvRFJTSk1aRwpmbGFtZW5jby9NUwpmbGFtZXByb29mL0RHUwpmbGFtZXRocm93ZXIvU00KZmxhbWluZ28vTVMKZmxhbW1hYmlsaXR5L0lNCmZsYW1tYWJsZS9TTQpmbGFuL01TCmZsYW5nZS9NUwpmbGFuay9TWkdNRFIKZmxhbmtlci9NCmZsYW5uZWwvU0dNRApmbGFubmVsZXR0ZS9NCmZsYXAvTVMKZmxhcGphY2svTVMKZmxhcHBlZApmbGFwcGVyL1NNCmZsYXBwaW5nCmZsYXJlL0RTTUcKZmxhcmV1cC9TTQpmbGFzaC9aVEdNRFJTCmZsYXNoYmFjay9TTQpmbGFzaGJ1bGIvU00KZmxhc2hjYXJkL1NNCmZsYXNoY3ViZS9TTQpmbGFzaGVyL00KZmxhc2hndW4vU00KZmxhc2hpbHkKZmxhc2hpbmVzcy9NCmZsYXNoaW5nL00KZmxhc2hsaWdodC9NUwpmbGFzaHkvUlRQCmZsYXNrL1NNCmZsYXQvTVlQUwpmbGF0YmVkL1NNCmZsYXRib2F0L1NNCmZsYXRicmVhZApmbGF0Y2FyL1NNCmZsYXRmZWV0CmZsYXRmaXNoL01TCmZsYXRmb290L1NNRApmbGF0aXJvbi9TTQpmbGF0bGFuZC9NCmZsYXRsZXQvUwpmbGF0bWF0ZS9TCmZsYXRuZXNzL00KZmxhdHRlZApmbGF0dGVuL1NERwpmbGF0dGVyL1NEUlpHCmZsYXR0ZXJlci9NCmZsYXR0ZXJpbmcvWQpmbGF0dGVyeS9NCmZsYXR0ZXN0CmZsYXR0aW5nCmZsYXR0aXNoCmZsYXR0b3AvU00KZmxhdHVsZW5jZS9NCmZsYXR1bGVudApmbGF0dXMvTQpmbGF0d2FyZS9NCmZsYXR3b3JtL1NNCmZsYXVudC9NRFNHCmZsYXVudGluZy9ZCmZsYXZvci9NRFNHSgpmbGF2b3JlZC9VCmZsYXZvcmZ1bApmbGF2b3JpbmcvTQpmbGF2b3JsZXNzCmZsYXZvcnNvbWUKZmxhdy9NREdTCmZsYXdsZXNzL1BZCmZsYXdsZXNzbmVzcy9NCmZsYXgvTU4KZmxheS9ER1MKZmxlYS9NUwpmbGVhYmFnL1NNCmZsZWFiaXRlL1MKZmxlYXBpdC9TCmZsZWNrL1NHTUQKZmxlZGdlZC9VCmZsZWRnbGluZy9NUwpmbGVlL1MKZmxlZWNlL01aR0RSUwpmbGVlY2VyL00KZmxlZWNpbmVzcy9NCmZsZWVjeS9SVFAKZmxlZWluZwpmbGVldC9TVEdNRFJZUApmbGVldGluZ2x5L00KZmxlZXRpbmduZXNzL00KZmxlZXRuZXNzL00KZmxlc2gvR01EU1kKZmxlc2hseS9UUgpmbGVzaHBvdC9NUwpmbGVzaHkvUlQKZmxldwpmbGV4L0FNUwpmbGV4ZWQKZmxleGliaWxpdHkvSU0KZmxleGlibGUvSQpmbGV4aWJseS9JCmZsZXhpbmcKZmxleGlvbgpmbGV4dGltZS9NCmZsaWJiZXJ0aWdpYmJldC9TTQpmbGljay9TWkdNRFIKZmxpY2tlci9HTUQKZmxpZXIvTQpmbGlnaHQvTVMKZmxpZ2h0aW5lc3MvTQpmbGlnaHRsZXNzCmZsaWdodHkvUFRSCmZsaW1mbGFtL1NNCmZsaW1mbGFtbWVkCmZsaW1mbGFtbWluZwpmbGltc2lseQpmbGltc2luZXNzL00KZmxpbXN5L1RSUApmbGluY2gvR01EUwpmbGluZy9HTQpmbGludC9TTQpmbGludGxvY2svU00KZmxpbnR5L1RSCmZsaXAvTVMKZmxpcHBhbmN5L00KZmxpcHBhbnQvWQpmbGlwcGVkCmZsaXBwZXIvTVMKZmxpcHBlc3QKZmxpcHBpbmcKZmxpcHB5L1MKZmxpcnQvU0dNRApmbGlydGF0aW9uL01TCmZsaXJ0YXRpb3VzL1lQCmZsaXJ0YXRpb3VzbmVzcy9NCmZsaXJ0eQpmbGl0L01TCmZsaXR0ZWQKZmxpdHRpbmcKZmxvYXQvU01EUlpHCmZsb2F0ZXIvTQpmbG9jay9TTURHCmZsb2NraW5nL00KZmxvZS9NUwpmbG9nL1MKZmxvZ2dlZApmbG9nZ2VyL1NNCmZsb2dnaW5nL01TCmZsb29kL1NNRFJHCmZsb29kZ2F0ZS9NUwpmbG9vZGxpZ2h0L01EU0cKZmxvb2RsaXQKZmxvb2RwbGFpbi9NUwpmbG9vZHdhdGVyL01TCmZsb29yL1NNREcKZmxvb3Jib2FyZC9NUwpmbG9vcmluZy9NCmZsb29yd2Fsa2VyL1NNCmZsb296eS9TTQpmbG9wL01TCmZsb3Bob3VzZS9NUwpmbG9wcGVkCmZsb3BwaWx5CmZsb3BwaW5lc3MvTQpmbG9wcGluZwpmbG9wcHkvUFJTTVQKZmxvcmEvU00KZmxvcmFsCmZsb3Jlc2NlbmNlL0lNCmZsb3Jlc2NlbnQvSQpmbG9yZXQvU00KZmxvcmlkL1BZCmZsb3JpZG5lc3MvTQpmbG9yaW4vU00KZmxvcmlzdC9TTQpmbG9zcy9NRFNHCmZsb3NzeS9SVApmbG90YXRpb24vU00KZmxvdGlsbGEvTVMKZmxvdHNhbS9NCmZsb3VuY2UvRFNNRwpmbG91bmN5CmZsb3VuZGVyL01EU0cKZmxvdXIvU01ERwpmbG91cmlzaC9HTURTCmZsb3VyeQpmbG91dC9TTURSWkcKZmxvdXRlci9NCmZsb3cvTURHUwpmbG93Y2hhcnQvU00KZmxvd2VyJ3MKZmxvd2VyL0NTREcKZmxvd2VyYmVkL01TCmZsb3dlcmluZXNzL00KZmxvd2VyaW5nL1MKZmxvd2VybGVzcwpmbG93ZXJwb3QvTVMKZmxvd2VyeS9QVFIKZmxvd24KZmx0CmZsdS9NCmZsdWIvTVMKZmx1YmJlZApmbHViYmluZwpmbHVjdHVhdGUvR05EU1gKZmx1Y3R1YXRpb24vTQpmbHVlL01TCmZsdWVuY3kvTQpmbHVlbnQvWQpmbHVmZi9TTURHCmZsdWZmaW5lc3MvTQpmbHVmZnkvUlBUCmZsdWlkL1NNWQpmbHVpZGl0eS9NCmZsdWtlL1NNCmZsdWt5L1JUCmZsdW1lL1NNCmZsdW1tb3gvRFNHCmZsdW5nCmZsdW5rL1NNREcKZmx1bmt5L1NNCmZsdW9yZXNjZS9EU0cKZmx1b3Jlc2NlbmNlL00KZmx1b3Jlc2NlbnQKZmx1b3JpZGF0ZS9HTkRTCmZsdW9yaWRhdGlvbi9NCmZsdW9yaWRlL1NNCmZsdW9yaW5lL00KZmx1b3JpdGUvTQpmbHVvcm9jYXJib24vTVMKZmx1b3Jvc2NvcGUvU00KZmx1b3Jvc2NvcGljCmZsdXJyeS9HRFNNCmZsdXNoL01EUlNURwpmbHVzdGVyL01EU0cKZmx1dGUvRFNNRwpmbHV0aW5nL00KZmx1dGlzdC9NUwpmbHV0dGVyL01EU0cKZmx1dHRlcnkKZmx1dmlhbApmbHV4L0lNUwpmbHV4ZWQKZmx1eGluZwpmbHkvWlRHQkRSU00KZmx5YXdheQpmbHlibG93bgpmbHlieS9NCmZseWJ5cwpmbHljYXRjaGVyL01TCmZseWluZy9NCmZseWxlYWYvTQpmbHlsZWF2ZXMKZmx5b3Zlci9NUwpmbHlwYXBlci9TTQpmbHlwYXN0L1MKZmx5c2hlZXQvUwpmbHlzcGVjay9HTURTCmZseXN3YXR0ZXIvTVMKZmx5dHJhcC9TCmZseXdheS9TTQpmbHl3ZWlnaHQvU00KZmx5d2hlZWwvTVMKZm9hbC9NREdTCmZvYW0vTURHUwpmb2FtaW5lc3MvTQpmb2FteS9SVFAKZm9iL1NNCmZvYmJlZApmb2JiaW5nCmZvY2FsL1kKZm9jdXMncwpmb2N1cy9BRFNHCmZvY3VzZWQvVQpmb2RkZXIvU00KZm9lL1NNCmZvZydzCmZvZy9DUwpmb2dib3VuZApmb2dnZWQvQwpmb2dnaWx5CmZvZ2dpbmVzcy9NCmZvZ2dpbmcvQwpmb2dneS9SVFAKZm9naG9ybi9NUwpmb2d5L1NNCmZvZ3lpc2gKZm9pYmxlL1NNCmZvaWwvTURHUwpmb2lzdC9TREcKZm9sCmZvbGQncwpmb2xkL0FVU0dECmZvbGRhd2F5CmZvbGRlci9TTQpmb2xkb3V0L01TCmZvbGlhZ2UvTQpmb2xpYwpmb2xpby9TTQpmb2xrL01TCmZvbGtsb3JlL00KZm9sa2xvcmljCmZvbGtsb3Jpc3QvTVMKZm9sa3NpbmVzcy9NCmZvbGtzaW5nZXIvU00KZm9sa3NpbmdpbmcvTQpmb2xrc3kvUFRSCmZvbGt0YWxlL01TCmZvbGt3YXkvTVMKZm9sbApmb2xsaWNsZS9NUwpmb2xsb3cvU0RSWkdKCmZvbGxvd2VyL00KZm9sbG93aW5nL00KZm9sbG93dXAvUwpmb2xseS9TTQpmb21lbnQvU0dECmZvbWVudGF0aW9uL00KZm9uZC9SWVRQCmZvbmRhbnQvTVMKZm9uZGxlL0RTRwpmb25kbmVzcy9NCmZvbmR1ZS9TTQpmb250L01TCmZvbnRhbmVsL01TCmZvbwpmb29iYXIKZm9vZC9NUwpmb29kaWUvU00KZm9vZHN0dWZmL1NNCmZvb2wvTURHUwpmb29sZXJ5L1NNCmZvb2xoYXJkaWx5CmZvb2xoYXJkaW5lc3MvTQpmb29saGFyZHkvVFBSCmZvb2xpc2gvWVAKZm9vbGlzaG5lc3MvTQpmb29scHJvb2YKZm9vbHNjYXAvTQpmb290L01EUlpHU0oKZm9vdGFnZS9NCmZvb3RiYWxsL01SWkdTCmZvb3RiYWxsZXIvTQpmb290YnJpZGdlL1NNCmZvb3RmYWxsL01TCmZvb3RoaWxsL01TCmZvb3Rob2xkL01TCmZvb3RpZQpmb290aW5nL00KZm9vdGxlc3MKZm9vdGxpZ2h0cy9NCmZvb3RsaW5nL01TCmZvb3Rsb2NrZXIvU00KZm9vdGxvb3NlCmZvb3RtYW4vTQpmb290bWVuCmZvb3Rub3RlL01HRFMKZm9vdHBhdGgvTQpmb290cGF0aHMKZm9vdHBsYXRlL1MKZm9vdHByaW50L1NNCmZvb3RyYWNlL01TCmZvb3RyZXN0L01TCmZvb3RzaWUvU00KZm9vdHNsb2dnaW5nCmZvb3Rzb3JlCmZvb3RzdGVwL01TCmZvb3RzdG9vbC9TTQpmb290d2Vhci9NCmZvb3R3b3JrL00KZm9vdHkKZm9wL1NNCmZvcHBlcnkvTQpmb3BwaXNoL1AKZm9wcGlzaG5lc3MvTQpmb3IvSApmb3JhCmZvcmFnZS9EUlNNWkcKZm9yYWdlci9NCmZvcmF5L1NNREcKZm9yYmFkZQpmb3JiZWFyL1NNRwpmb3JiZWFyYW5jZS9NCmZvcmJpZC9TCmZvcmJpZGRlbgpmb3JiaWRkaW5nL1lTCmZvcmJvcmUKZm9yYm9ybmUKZm9yY2UvRFNNRwpmb3JjZWQvVQpmb3JjZWZ1bC9QWQpmb3JjZWZ1bG5lc3MvTQpmb3JjZXBzL00KZm9yY2libGUKZm9yY2libHkKZm9yZC9NREdTQgpmb3JlL01TCmZvcmVhcm0vR1NNRApmb3JlYmVhci9NUwpmb3JlYm9kZS9HSkRTCmZvcmVib2RpbmcvTQpmb3JlY2FzdC9NUlpHUwpmb3JlY2FzdGVyL00KZm9yZWNhc3RsZS9NUwpmb3JlY2xvc2UvRFNHCmZvcmVjbG9zdXJlL01TCmZvcmVjb3VydC9TTQpmb3JlZG9vbS9ER1MKZm9yZWZhdGhlci9NUwpmb3JlZmVldApmb3JlZmluZ2VyL1NNCmZvcmVmb290L00KZm9yZWZyb250L1NNCmZvcmVnby9HCmZvcmVnb2VzCmZvcmVnb25lCmZvcmVncm91bmQvR01EUwpmb3JlaGFuZC9NUwpmb3JlaGVhZC9NUwpmb3JlaWduL1pSUApmb3JlaWduZXIvTQpmb3JlaWdubmVzcy9NCmZvcmVrbmV3CmZvcmVrbm93L0dTCmZvcmVrbm93bGVkZ2UvTQpmb3Jla25vd24KZm9yZWxlZy9TTQpmb3JlbGltYi9NUwpmb3JlbG9jay9NUwpmb3JlbWFuL00KZm9yZW1hc3QvTVMKZm9yZW1lbgpmb3JlbW9zdApmb3JlbmFtZS9NRFMKZm9yZW5vb24vTVMKZm9yZW5zaWMvTVMKZm9yZW5zaWNhbGx5CmZvcmVuc2ljcy9NCmZvcmVvcmRhaW4vR1NECmZvcmVwYXJ0L01TCmZvcmVwZXJzb24vU00KZm9yZXBsYXkvTQpmb3JlcXVhcnRlci9NUwpmb3JlcnVubmVyL01TCmZvcmVzYWlsL01TCmZvcmVzYXcKZm9yZXNlZS9SU0JaCmZvcmVzZWVhYmxlL1UKZm9yZXNlZWluZwpmb3Jlc2Vlbi9VCmZvcmVzZWVyL00KZm9yZXNoYWRvdy9HRFMKZm9yZXNob3JlL1MKZm9yZXNob3J0ZW4vRFNHCmZvcmVzaWdodC9NRApmb3Jlc2lnaHRlZG5lc3MvTQpmb3Jlc2tpbi9NUwpmb3Jlc3Qncwpmb3Jlc3QvQUNHRFMKZm9yZXN0YWxsL1NHRApmb3Jlc3RhdGlvbi9BQ00KZm9yZXN0ZXIvTVMKZm9yZXN0bGFuZC9NCmZvcmVzdHJ5L00KZm9yZXRhc3RlL0RTTUcKZm9yZXRlbGwvR1MKZm9yZXRob3VnaHQvTQpmb3JldG9sZApmb3JldmVyL00KZm9yZXZlcm1vcmUKZm9yZXdhcm4vRFNHCmZvcmV3ZW50CmZvcmV3b21hbi9NCmZvcmV3b21lbgpmb3Jld29yZC9NUwpmb3JmZWl0L0dTTUQKZm9yZmVpdHVyZS9TTQpmb3JnYXRoZXIvU0RHCmZvcmdhdmUKZm9yZ2UvRFJTTVpHVkoKZm9yZ2VyL00KZm9yZ2VyeS9TTQpmb3JnZXQvUwpmb3JnZXRmdWwvWVAKZm9yZ2V0ZnVsbmVzcy9NCmZvcmdldHRhYmxlL1UKZm9yZ2V0dGluZwpmb3JnaW5nL00KZm9yZ2l2YWJsZS9VCmZvcmdpdmUvQlJTWkdQCmZvcmdpdmVuCmZvcmdpdmVuZXNzL00KZm9yZ2l2ZXIvTQpmb3JnaXZpbmcvVQpmb3Jnby9SWkcKZm9yZ29lci9NCmZvcmdvZXMKZm9yZ29uZQpmb3Jnb3QKZm9yZ290dGVuL1UKZm9yay9NREdTCmZvcmtmdWwvU00KZm9ya2xpZnQvTVMKZm9ybG9ybi9ZCmZvcm0ncwpmb3JtL0NBSUZER1MKZm9ybWFsL1NNWQpmb3JtYWxkZWh5ZGUvTQpmb3JtYWxpbgpmb3JtYWxpc20vTQpmb3JtYWxpc3QvTVMKZm9ybWFsaXRpZXMKZm9ybWFsaXR5L0lNCmZvcm1hbGl6YXRpb24vTQpmb3JtYWxpemUvR0RTCmZvcm1hdC9TTVYKZm9ybWF0aW9uL0NGQVNNCmZvcm1hdHRlZC9BCmZvcm1hdHRpbmcvTQpmb3JtZWQvVQpmb3JtZXIvRklBTQpmb3JtZXJseQpmb3JtZml0dGluZwpmb3JtaWMKZm9ybWlkYWJsZQpmb3JtaWRhYmx5CmZvcm1sZXNzL1BZCmZvcm1sZXNzbmVzcy9NCmZvcm11bGEvTVMKZm9ybXVsYWljCmZvcm11bGF0ZS9BRFNHTlgKZm9ybXVsYXRlZC9VCmZvcm11bGF0aW9uL0FNCmZvcm11bGF0b3IvU00KZm9ybmljYXRlL0dORFMKZm9ybmljYXRpb24vTQpmb3JuaWNhdG9yL01TCmZvcnNha2UvR1MKZm9yc2FrZW4KZm9yc29vawpmb3Jzb290aApmb3Jzd2Vhci9TRwpmb3Jzd29yZQpmb3Jzd29ybgpmb3JzeXRoaWEvU00KZm9ydC9NUwpmb3J0ZS9TTQpmb3J0aGNvbWluZy9NCmZvcnRocmlnaHQvWVAKZm9ydGhyaWdodG5lc3MvTQpmb3J0aHdpdGgKZm9ydGlldGgvTQpmb3J0aWV0aHMKZm9ydGlmaWNhdGlvbi9NCmZvcnRpZmllZC9VCmZvcnRpZmllci9NCmZvcnRpZnkvRFJTTlpHWApmb3J0aXNzaW1vCmZvcnRpdHVkZS9NCmZvcnRuaWdodC9NWVMKZm9ydHJlc3MvTVMKZm9ydHVpdG91cy9ZUApmb3J0dWl0b3VzbmVzcy9NCmZvcnR1aXR5L00KZm9ydHVuYXRlL1VZCmZvcnR1bmUvTVMKZm9ydHVuZXRlbGxlci9TTQpmb3J0dW5ldGVsbGluZy9NCmZvcnR5L1NNSApmb3J1bS9TTQpmb3J3YXJkL01EUllaVEdTUApmb3J3YXJkZXIvTQpmb3J3YXJkbmVzcy9NCmZvcndlbnQKZm9zc2EKZm9zc2lsL1NNCmZvc3NpbGl6YXRpb24vTQpmb3NzaWxpemUvR0RTCmZvc3Rlci9HU0QKZm91Z2h0CmZvdWwvTURSWVRHU1AKZm91bGFyZC9NCmZvdWxtb3V0aGVkCmZvdWxuZXNzL00KZm91bmQvRlNERwpmb3VuZGF0aW9uL1NNCmZvdW5kZWQvVQpmb3VuZGVyL0dNRFMKZm91bmRsaW5nL1NNCmZvdW5kcnkvU00KZm91bnQvU00KZm91bnRhaW4vU00KZm91bnRhaW5oZWFkL01TCmZvdXIvTUhTCmZvdXJmb2xkCmZvdXJwb3N0ZXIvU00KZm91cnNjb3JlL00KZm91cnNvbWUvU00KZm91cnNxdWFyZQpmb3VydGVlbi9TTUgKZm91cnRlZW50aC9NCmZvdXJ0ZWVudGhzCmZvdXJ0aC9NWQpmb3VydGhzCmZvd2wvTURHUwpmb3gvR01EUwpmb3hmaXJlL00KZm94Z2xvdmUvU00KZm94aG9sZS9NUwpmb3hob3VuZC9TTQpmb3hodW50L0dTCmZveGlseQpmb3hpbmVzcy9NCmZveHRyb3QvTVMKZm94dHJvdHRlZApmb3h0cm90dGluZwpmb3h5L1JUUApmb3llci9TTQpmcHMKZnIKZnJhY2FzL01TCmZyYWNrL1NERwpmcmFjdGFsL1NNCmZyYWN0aW9uL0lTTQpmcmFjdGlvbmFsL1kKZnJhY3Rpb3VzL1lQCmZyYWN0aW91c25lc3MvTQpmcmFjdHVyZS9NR0RTCmZyYWcvUwpmcmFnaWxlL1JUCmZyYWdpbGl0eS9NCmZyYWdtZW50L0dNRFMKZnJhZ21lbnRhcnkvTQpmcmFnbWVudGF0aW9uL00KZnJhZ3JhbmNlL01TCmZyYWdyYW50L1kKZnJhaWwvUllUUApmcmFpbG5lc3MvTQpmcmFpbHR5L1NNCmZyYW1lL0RSU01aRwpmcmFtZWQvVQpmcmFtZXIvTQpmcmFtZXdvcmsvU00KZnJhbmMvU00KZnJhbmNoaXNlJ3MKZnJhbmNoaXNlL0VEU0cKZnJhbmNoaXNlZS9TTQpmcmFuY2hpc2VyL1NNCmZyYW5jaXVtL00KZnJhbmNvcGhvbmUKZnJhbmdpYmlsaXR5L00KZnJhbmdpYmxlCmZyYW5rL1NNRFJZVEdQCmZyYW5rZnVydGVyL01TCmZyYW5raW5jZW5zZS9NCmZyYW5rbmVzcy9NCmZyYW50aWMKZnJhbnRpY2FsbHkKZnJhcHBlL1NNCmZyYXQvTVMKZnJhdGVybmFsL1kKZnJhdGVybml0eS9GU00KZnJhdGVybml6YXRpb24vTQpmcmF0ZXJuaXplL1pHRFJTCmZyYXRlcm5pemVyL00KZnJhdHJpY2lkYWwKZnJhdHJpY2lkZS9NUwpmcmF1ZCdzCmZyYXVkL1MKZnJhdWRzdGVyL1MKZnJhdWR1bGVuY2UvTQpmcmF1ZHVsZW50L1kKZnJhdWdodApmcmF5J3MKZnJheS9DREdTCmZyYXp6bGUvTUdEUwpmcmVhay9TTURHCmZyZWFraXNoL1lQCmZyZWFraXNobmVzcy9NCmZyZWFreS9SVApmcmVja2xlL0RTTUcKZnJlY2tseQpmcmVlL1lURFJTCmZyZWViYXNlL01HRFMKZnJlZWJpZS9TTQpmcmVlYm9vdGVyL1NNCmZyZWVib3JuCmZyZWVkbWFuL00KZnJlZWRtZW4KZnJlZWRvbS9TTQpmcmVlaGFuZApmcmVlaG9sZC9aTVJTCmZyZWVob2xkZXIvTQpmcmVlaW5nCmZyZWVsYW5jZS9EUlNNWkcKZnJlZWxhbmNlci9NCmZyZWVsb2FkL1NEUlpHCmZyZWVsb2FkZXIvTQpmcmVlbWFuL00KZnJlZW1hc29ucnkKZnJlZW1lbgpmcmVlcGhvbmUKZnJlZXNpYS9TCmZyZWVzdGFuZGluZwpmcmVlc3RvbmUvU00KZnJlZXN0eWxlL1NNCmZyZWV0aGlua2VyL1NNCmZyZWV0aGlua2luZy9NCmZyZWV3YXJlL00KZnJlZXdheS9NUwpmcmVld2hlZWwvREdTCmZyZWV3aWxsCmZyZWV6YWJsZQpmcmVlemUncwpmcmVlemUvVUFHUwpmcmVlemVyL01TCmZyZWV6aW5nJ3MKZnJlaWdodC9NRFJaR1MKZnJlaWdodGVyL00KZnJlbmNoCmZyZW5ldGljCmZyZW5ldGljYWxseQpmcmVuemllZC9ZCmZyZW56eS9EU00KZnJlcQpmcmVxdWVuY2llcwpmcmVxdWVuY3kvSU0KZnJlcXVlbnQvRFJZU1pURwpmcmVxdWVudGVkL1UKZnJlcXVlbnRlci9NCmZyZXNjby9NCmZyZXNjb2VzCmZyZXNoL1BOUllYWlQKZnJlc2hlbi9aR0RSCmZyZXNoZW5lci9NCmZyZXNoZXQvTVMKZnJlc2htYW4vTQpmcmVzaG1lbgpmcmVzaG5lc3MvTQpmcmVzaHdhdGVyL00KZnJldC9NUwpmcmV0ZnVsL1lQCmZyZXRmdWxuZXNzL00KZnJldHNhdy9NUwpmcmV0dGVkCmZyZXR0aW5nCmZyZXR3b3JrL00KZnJpYWJsZQpmcmlhci9TTQpmcmlhcnkvU00KZnJpY2Fzc2VlL0RTTQpmcmljYXNzZWVpbmcKZnJpY2F0aXZlL1NNCmZyaWN0aW9uL1NNCmZyaWN0aW9uYWwKZnJpZGdlL1NNCmZyaWVkY2FrZS9NUwpmcmllbmQncwpmcmllbmQvVUdTRFkKZnJpZW5kbGVzcwpmcmllbmRsaWVzCmZyaWVuZGxpbmVzcy9VTQpmcmllbmRseSdzCmZyaWVuZGx5L1VQVFIKZnJpZW5kc2hpcC9NUwpmcmllemUvU00KZnJpZy9TCmZyaWdhdGUvTVMKZnJpZ2dlZApmcmlnZ2luZwpmcmlnaHQvU1hHTUROCmZyaWdodGVuL0RHCmZyaWdodGVuaW5nL1kKZnJpZ2h0ZnVsL1BZCmZyaWdodGZ1bG5lc3MvTQpmcmlnaWQvWVAKZnJpZ2lkaXR5L00KZnJpZ2lkbmVzcy9NCmZyaWxsL1NNRApmcmlsbHkvVFIKZnJpbmdlJ3MKZnJpbmdlL0lEU0cKZnJpcHBlcnkvU00KZnJpc2svU0RHCmZyaXNraWx5CmZyaXNraW5lc3MvTQpmcmlza3kvVFJQCmZyaXNzb24vUwpmcml0dGVyL01EU0cKZnJpdHovTQpmcml2b2xpdHkvU00KZnJpdm9sb3VzL1BZCmZyaXZvbG91c25lc3MvTQpmcml6ei9NRFNZRwpmcml6emxlL01HRFMKZnJpenp5L1RSCmZybwpmcm9jaydzCmZyb2NrL0NVUwpmcm9nL01TCmZyb2dnaW5nL1MKZnJvZ21hbi9NCmZyb2dtYXJjaC9HRFMKZnJvZ21lbgpmcm9nc3Bhd24KZnJvbGljL1NNCmZyb2xpY2tlZApmcm9saWNrZXIvU00KZnJvbGlja2luZwpmcm9saWNzb21lCmZyb20KZnJvbmQvU00KZnJvbnQncwpmcm9udC9GU0RHCmZyb250YWdlL01TCmZyb250YWwvWQpmcm9udGJlbmNoL1pSUwpmcm9udGllci9NUwpmcm9udGllcnNtYW4vTQpmcm9udGllcnNtZW4KZnJvbnRpZXJzd29tYW4KZnJvbnRpZXJzd29tZW4KZnJvbnRpc3BpZWNlL01TCmZyb250d2FyZC9TCmZyb3NoL00KZnJvc3Qncwpmcm9zdC9DU0RHCmZyb3N0Yml0CmZyb3N0Yml0ZS9NR1MKZnJvc3RiaXR0ZW4KZnJvc3RpbHkKZnJvc3RpbmVzcy9NCmZyb3N0aW5nL1NNCmZyb3N0eS9UUFIKZnJvdGgvTURHCmZyb3RoaW5lc3MvTQpmcm90aHMKZnJvdGh5L1RQUgpmcm91ZnJvdS9NCmZyb3dhcmQvUApmcm93YXJkbmVzcy9NCmZyb3duL1NNREcKZnJvd3ppbHkKZnJvd3ppbmVzcy9NCmZyb3d6eS9UUFIKZnJvemUvQVUKZnJvemVuL1VBCmZydWN0aWZ5L0RTRwpmcnVjdG9zZS9NCmZydWdhbC9ZCmZydWdhbGl0eS9NCmZydWl0L1NNREcKZnJ1aXRjYWtlL01TCmZydWl0ZXJlci9TCmZydWl0ZnVsL1lQCmZydWl0ZnVsbmVzcy9NCmZydWl0aW5lc3MvTQpmcnVpdGlvbi9NCmZydWl0bGVzcy9QWQpmcnVpdGxlc3NuZXNzL00KZnJ1aXR5L1RQUgpmcnVtcC9TTQpmcnVtcGlzaApmcnVtcHkvVFIKZnJ1c3RyYXRlL0dOWERTCmZydXN0cmF0aW5nL1kKZnJ1c3RyYXRpb24vTQpmcnVzdHVtL01TCmZyeS9HRFNNCmZyeWVyL1NNCmZ0CmZ0cC9aR1MKZnVjaHNpYS9NUwpmdWNrL1NNR0RSWiEKZnVja2VyL00hCmZ1Y2toZWFkL1MhCmZ1ZGRsZS9EU01HCmZ1ZGdlL0RTTUcKZnVlaHJlci9NUwpmdWVsJ3MKZnVlbC9BREdTCmZ1ZwpmdWdhbApmdWdneQpmdWdpdGl2ZS9NUwpmdWd1ZS9TTQpmdWhyZXIvU00KZnVsY3J1bS9NUwpmdWxmaWxsL0xER1MKZnVsZmlsbGVkL1UKZnVsZmlsbGluZy9VCmZ1bGZpbGxtZW50L00KZnVsbC9NRFJaVEdTUApmdWxsYmFjay9NUwpmdWxsZXIvTQpmdWxsbmVzcy9NCmZ1bGx5CmZ1bG1pbmF0ZS9EU1hHTgpmdWxtaW5hdGlvbi9NCmZ1bHNvbWUvUFkKZnVsc29tZW5lc3MvTQpmdW0vUwpmdW1ibGUvRFJTTVpHCmZ1bWJsZXIvTQpmdW1ibGluZy9ZCmZ1bWUvTUdEUwpmdW1pZ2FudC9NUwpmdW1pZ2F0ZS9HTkRTCmZ1bWlnYXRpb24vTQpmdW1pZ2F0b3IvU00KZnVteS9SVApmdW4vTQpmdW5jdGlvbi9NREdTCmZ1bmN0aW9uYWwvWQpmdW5jdGlvbmFsaXNtCmZ1bmN0aW9uYWxpc3QvUwpmdW5jdGlvbmFsaXR5L1MKZnVuY3Rpb25hcnkvU00KZnVuZC9BTURHUwpmdW5kYW1lbnRhbC9TTVkKZnVuZGFtZW50YWxpc20vTQpmdW5kYW1lbnRhbGlzdC9TTQpmdW5kZWQvVQpmdW5kaW5nL00KZnVuZHJhaXNlci9NUwpmdW5kcmFpc2luZwpmdW5lcmFsL01TCmZ1bmVyYXJ5CmZ1bmVyZWFsL1kKZnVuZmFpci9TCmZ1bmdhbApmdW5naQpmdW5naWJsZS9NUwpmdW5naWNpZGFsCmZ1bmdpY2lkZS9NUwpmdW5nb2lkCmZ1bmdvdXMKZnVuZ3VzL00KZnVuaWN1bGFyL1NNCmZ1bmsvTURHUwpmdW5raW5lc3MvTQpmdW5reS9QUlQKZnVubmVsL01ER1MKZnVubmVyCmZ1bm5lc3QKZnVubmlseQpmdW5uaW5lc3MvTQpmdW5ueS9UUFJTTQpmdW5ueW1hbi9NCmZ1bm55bWVuCmZ1ci9TTQpmdXJiZWxvdy9NCmZ1cmJpc2gvQURTRwpmdXJpb3VzL1kKZnVybCdzCmZ1cmwvVURHUwpmdXJsb25nL1NNCmZ1cmxvdWdoL0dNRApmdXJsb3VnaHMKZnVybgpmdXJuYWNlL1NNCmZ1cm5pc2gvQURTRwpmdXJuaXNoZWQvVQpmdXJuaXNoaW5ncy9NCmZ1cm5pdHVyZS9NCmZ1cm9yL1NNCmZ1cnJlZApmdXJyaWVyL00KZnVycmluZXNzL00KZnVycmluZy9NCmZ1cnJvdy9NRFNHCmZ1cnJ5L1pUUlAKZnVydGhlci9TR0QKZnVydGhlcmFuY2UvTQpmdXJ0aGVybW9yZQpmdXJ0aGVybW9zdApmdXJ0aGVzdApmdXJ0aXZlL1lQCmZ1cnRpdmVuZXNzL00KZnVyeS9TTQpmdXJ6ZS9NCmZ1c2Uncy9BCmZ1c2UvQ0FJRkdEUwpmdXNlZS9TTQpmdXNlbGFnZS9TTQpmdXNpYmlsaXR5L00KZnVzaWJsZQpmdXNpbGllci9TTQpmdXNpbGxhZGUvTVMKZnVzaW9uL0lGS1NNCmZ1c3MvTURTRwpmdXNzYnVkZ2V0L01TCmZ1c3NpbHkKZnVzc2luZXNzL00KZnVzc3BvdC9TTQpmdXNzeS9UUlAKZnVzdGlhbi9NCmZ1c3RpbmVzcy9NCmZ1c3R5L1RSUApmdXQKZnV0aWxlL1kKZnV0aWxpdHkvTQpmdXRvbi9TTQpmdXR1cmUvTVMKZnV0dXJpc20vTQpmdXR1cmlzdC9NUwpmdXR1cmlzdGljCmZ1dHVyaXR5L1NNCmZ1dHVyb2xvZ2lzdC9NUwpmdXR1cm9sb2d5L00KZnV0ei9EU0cKZnV6ei9NRFNHCmZ1enpiYWxsL1MKZnV6emlseQpmdXp6aW5lc3MvTQpmdXp6eS9QVFIKZndkCmZ3eQpnL1NOWFZCCmdhYi9TTQpnYWJhcmRpbmUvU00KZ2FiYmVkCmdhYmJpbmVzcy9NCmdhYmJpbmcKZ2FiYmxlL0RTTUcKZ2FiYnkvUlRQCmdhYmVyZGluZS9TTQpnYWJmZXN0L01TCmdhYmxlL0RTTQpnYWQvUwpnYWRhYm91dC9TTQpnYWRkZWQKZ2FkZGVyL1NNCmdhZGRpbmcKZ2FkZmx5L1NNCmdhZGdldC9TTQpnYWRnZXRyeS9NCmdhZG9saW5pdW0vTQpnYWZmL01EUlpHUwpnYWZmZS9TTQpnYWZmZXIvTQpnYWcvU00KZ2FnYQpnYWdnZWQKZ2FnZ2luZwpnYWdnbGUvU00KZ2FpZXR5L00KZ2FpbHkKZ2FpbidzCmdhaW4vQURHUwpnYWluZXIvU00KZ2FpbmZ1bC9ZCmdhaW5zYWlkCmdhaW5zYXkvWkdSUwpnYWluc2F5ZXIvTQpnYWl0L01SWlMKZ2FpdGVyL00KZ2FsL1NNCmdhbGEvTVMKZ2FsYWN0aWMKZ2FsYXh5L1NNCmdhbGUncwpnYWxlL0FTCmdhbGVuYS9NCmdhbGwvTURHUwpnYWxsYW50L1NNWQpnYWxsYW50cnkvTQpnYWxsYmxhZGRlci9NUwpnYWxsZW9uL1NNCmdhbGxlcmlhL01TCmdhbGxlcnkvU00KZ2FsbGV5L1NNCmdhbGxpbWF1ZnJ5L1NNCmdhbGxpdW0vTQpnYWxsaXZhbnQvR1NECmdhbGxvbi9TTQpnYWxsb3AvU01ERwpnYWxsb3dzL00KZ2FsbHN0b25lL01TCmdhbG9vdC9TTQpnYWxvcmUKZ2Fsb3NoL01TCmdhbHVtcGgvREcKZ2FsdW1waHMKZ2FsdmFuaWMKZ2FsdmFuaXNtL00KZ2FsdmFuaXphdGlvbi9NCmdhbHZhbml6ZS9EU0cKZ2FsdmFub21ldGVyL01TCmdhbWJpdC9TTQpnYW1ibGUvRFJTTVpHCmdhbWJsZXIvTQpnYW1ibGluZy9NCmdhbWJvbC9TTURHCmdhbWUvTVlUR0RSU1AKZ2FtZWNvY2svTVMKZ2FtZWtlZXBlci9NUwpnYW1lbmVzcy9NCmdhbWVzbWFuc2hpcC9NCmdhbWVzdGVyL01TCmdhbWV0ZS9TTQpnYW1ldGljCmdhbWluL1NNCmdhbWluZS9TTQpnYW1pbmVzcy9NCmdhbWluZy9NCmdhbW1hL1NNCmdhbW1vbi9NCmdhbW15CmdhbXV0L1NNCmdhbXkvUlRQCmdhbmRlci9TTQpnYW5nL01ER1MKZ2FuZ2J1c3RlcnMvTQpnYW5nbGFuZC9NCmdhbmdsaWEKZ2FuZ2xpbmcKZ2FuZ2xpb24vTQpnYW5nbGlvbmljCmdhbmdwbGFuay9TTQpnYW5ncmVuZS9EU01HCmdhbmdyZW5vdXMKZ2FuZ3N0YS9TCmdhbmdzdGVyL1NNCmdhbmd3YXkvTVMKZ2FuamEKZ2FubmV0L1NNCmdhbnRsZXQvTVMKZ2FudHJ5L1NNCmdhcC9HU01ECmdhcGUvTVMKZ2FyL1NMTQpnYXJhZ2UvRFNNRwpnYXJiL01ER1MKZ2FyYmFnZS9NCmdhcmJhZ2VtYW4KZ2FyYmFuem8vU00KZ2FyYmxlL0RTRwpnYXJjb24vU00KZ2FyZGVuL1NaR01EUgpnYXJkZW5lci9NCmdhcmRlbmlhL01TCmdhcmRlbmluZy9NCmdhcmZpc2gvTVMKZ2FyZ2FudHVhbgpnYXJnbGUvRFNNRwpnYXJnb3lsZS9TTQpnYXJpc2gvUFkKZ2FyaXNobmVzcy9NCmdhcmxhbmQvTURHUwpnYXJsaWMvTQpnYXJsaWNreQpnYXJtZW50L01TCmdhcm5lci9TR0QKZ2FybmV0L1NNCmdhcm5pc2gvR0xNRFMKZ2FybmlzaGVlL0RTTQpnYXJuaXNoZWVpbmcKZ2FybmlzaG1lbnQvU00KZ2FycmV0L1NNCmdhcnJpc29uL01EU0cKZ2Fycm90ZS9NWkdEUlMKZ2Fycm90ZXIvTQpnYXJydWxpdHkvTQpnYXJydWxvdXMvUFkKZ2FycnVsb3VzbmVzcy9NCmdhcnRlci9TTQpnYXMncwpnYXMvQ1MKZ2FzYmFnL1NNCmdhc2VvdXMKZ2FzaC9NRFNHCmdhc2hvbGRlci9TCmdhc2tldC9TTQpnYXNsaWdodC9NUwpnYXNtYW4KZ2FzbWVuCmdhc29ob2wvTQpnYXNvbGluZS9NCmdhc29tZXRlci9TCmdhc3AvTURHUwpnYXNzZWQvQwpnYXNzZXMKZ2Fzc2luZy9DCmdhc3N5L1JUCmdhc3RyaWMKZ2FzdHJpdGlzL00KZ2FzdHJvZW50ZXJpdGlzL00KZ2FzdHJvaW50ZXN0aW5hbApnYXN0cm9ub21lL1MKZ2FzdHJvbm9taWMKZ2FzdHJvbm9taWNhbC9ZCmdhc3Ryb25vbXkvTQpnYXN0cm9wb2QvU00KZ2Fzd29ya3MvTQpnYXRlL01HRFMKZ2F0ZWF1CmdhdGVhdXgKZ2F0ZWNyYXNoL0RSU1pHCmdhdGVjcmFzaGVyL00KZ2F0ZWhvdXNlL1NNCmdhdGVrZWVwZXIvTVMKZ2F0ZXBvc3QvTVMKZ2F0ZXdheS9NUwpnYXRoZXIvU0paR01EUgpnYXRoZXJlci9NCmdhdGhlcmluZy9NCmdhdG9yL1NNCmdhdWNoZS9SUFlUCmdhdWNoZW5lc3MvTQpnYXVjaGVyaWUvTQpnYXVjaG8vU00KZ2F1ZGlseQpnYXVkaW5lc3MvTQpnYXVkeS9SUFQKZ2F1Z2UvRFNNRwpnYXVudC9SUFQKZ2F1bnRsZXQvTVMKZ2F1bnRuZXNzL00KZ2F1emUvTQpnYXV6aW5lc3MvTQpnYXV6eS9SUFQKZ2F2ZQpnYXZlbC9TTQpnYXZvdHRlL01TCmdhd2QKZ2F3ay9ER1MKZ2F3a2lseQpnYXdraW5lc3MvTQpnYXdreS9SUFQKZ2F3cC9ER1MKZ2F5L1RTUE1SCmdheW5lc3MvTQpnYXplL01aR0RSUwpnYXplYm8vU00KZ2F6ZWxsZS9NUwpnYXplci9NCmdhemV0dGUvTUdEUwpnYXpldHRlZXIvTVMKZ2F6aWxsaW9uL1MKZ2F6cGFjaG8vTQpnYXp1bXAvREdTCmdlYXIvTURHUwpnZWFyYm94L01TCmdlYXJpbmcvTQpnZWFyc2hpZnQvTVMKZ2VhcndoZWVsL1NNCmdlY2tvL1NNCmdlZGRpdApnZWUvRFMKZ2VlaW5nCmdlZWsvTVMKZ2Vla3kvUlQKZ2Vlc2UKZ2VlemVyL01TCmdlaXNoYS9NCmdlbC9TTQpnZWxhdGluL00KZ2VsYXRpbm91cwpnZWxjYXAvTQpnZWxkL0RKR1MKZ2VsZGluZy9NCmdlbGlkCmdlbGlnbml0ZS9NCmdlbGxlZApnZWxsaW5nCmdlbS9TTQpnZW1vbG9naWNhbApnZW1vbG9naXN0L01TCmdlbW9sb2d5L00KZ2Vtc3RvbmUvTVMKZ2VuZGFybWUvTVMKZ2VuZGVyL01EUwpnZW5lL01TCmdlbmVhbG9naWNhbC9ZCmdlbmVhbG9naXN0L01TCmdlbmVhbG9neS9TTQpnZW5lcmEKZ2VuZXJhbC9TTVkKZ2VuZXJhbGlzc2ltby9NUwpnZW5lcmFsaXN0L01TCmdlbmVyYWxpdHkvU00KZ2VuZXJhbGl6YXRpb24vTVMKZ2VuZXJhbGl6ZS9HRFMKZ2VuZXJhbHNoaXAvTQpnZW5lcmF0ZS9DQVZOR1NECmdlbmVyYXRpb24vQUNNCmdlbmVyYXRpb25hbApnZW5lcmF0aW9ucwpnZW5lcmF0b3IvU00KZ2VuZXJpYy9TTQpnZW5lcmljYWxseQpnZW5lcm9zaXR5L1NNCmdlbmVyb3VzL1BZCmdlbmVyb3VzbmVzcy9NCmdlbmVzL1MKZ2VuZXNpcy9NCmdlbmV0aWMvUwpnZW5ldGljYWxseQpnZW5ldGljaXN0L01TCmdlbmV0aWNzL00KZ2VuaWFsL0ZZCmdlbmlhbGl0eS9GTQpnZW5pY3VsYXRlCmdlbmllL1NNCmdlbmlpCmdlbml0YWwvRlkKZ2VuaXRhbGlhL00KZ2VuaXRhbHMvTQpnZW5pdGl2ZS9NUwpnZW5pdG91cmluYXJ5Cmdlbml1cy9NUwpnZW5uZWQKZ2VubmluZwpnZW5vY2lkYWwKZ2Vub2NpZGUvTVMKZ2Vub21lL01TCmdlbm9taWNzCmdlbnJlL1NNCmdlbnQvQU1TCmdlbnRlZWwvWVAKZ2VudGVlbG5lc3MvTQpnZW50aWFuL1NNCmdlbnRpbGUvU00KZ2VudGlsaXR5L00KZ2VudGxlL1RHRFJTUApnZW50bGVmb2xrL01TCmdlbnRsZWZvbGtzL00KZ2VudGxlbWFuL01ZCmdlbnRsZW1hbmx5L1UKZ2VudGxlbWVuCmdlbnRsZW5lc3MvTQpnZW50bGV3b21hbi9NCmdlbnRsZXdvbWVuCmdlbnRseQpnZW50cmlmaWNhdGlvbi9NCmdlbnRyaWZ5L0RTR04KZ2VudHJ5L1NNCmdlbnVmbGVjdC9ER1MKZ2VudWZsZWN0aW9uL01TCmdlbnVpbmUvUFkKZ2VudWluZW5lc3MvTQpnZW51cy9NCmdlb2NhY2hlL0RTRwpnZW9jZW50cmljCmdlb2NlbnRyaWNhbGx5Cmdlb2NoZW1pc3RyeS9NCmdlb2RlL1NNCmdlb2Rlc2ljL1NNCmdlb2Rlc3kvTQpnZW9kZXRpYwpnZW9lbmdpbmVlcmluZwpnZW9nCmdlb2dyYXBoZXIvU00KZ2VvZ3JhcGhpYwpnZW9ncmFwaGljYWwvWQpnZW9ncmFwaHkvU00KZ2VvbG9naWMKZ2VvbG9naWNhbC9ZCmdlb2xvZ2lzdC9NUwpnZW9sb2d5L1NNCmdlb20KZ2VvbWFnbmV0aWMKZ2VvbWFnbmV0aXNtL00KZ2VvbWV0ZXIKZ2VvbWV0cmljCmdlb21ldHJpY2FsL1kKZ2VvbWV0cnkvU00KZ2VvcGh5c2ljYWwKZ2VvcGh5c2ljaXN0L1NNCmdlb3BoeXNpY3MvTQpnZW9wb2xpdGljYWwKZ2VvcG9saXRpY3MvTQpnZW9zdGF0aW9uYXJ5Cmdlb3N5bmNocm9ub3VzCmdlb3N5bmNsaW5lL01TCmdlb3RoZXJtYWwKZ2VvdGhlcm1pYwpnZXJhbml1bS9NUwpnZXJiaWwvTVMKZ2VyaWF0cmljL1MKZ2VyaWF0cmljaWFuL1MKZ2VyaWF0cmljcy9NCmdlcm0vTVMKZ2VybWFuZQpnZXJtYW5pdW0vTQpnZXJtaWNpZGFsCmdlcm1pY2lkZS9NUwpnZXJtaW5hbC9NCmdlcm1pbmF0ZS9HTkRTCmdlcm1pbmF0aW9uL00KZ2Vyb250b2xvZ2ljYWwKZ2Vyb250b2xvZ2lzdC9NUwpnZXJvbnRvbG9neS9NCmdlcnJ5bWFuZGVyL0dNRFMKZ2VycnltYW5kZXJpbmcvTQpnZXJ1bmQvTVMKZ2VzdGFsdC9TCmdlc3RhcG8vTVMKZ2VzdGF0ZS9HTkRTCmdlc3RhdGlvbi9NCmdlc3RhdGlvbmFsCmdlc3RpY3VsYXRlL0RTR05YCmdlc3RpY3VsYXRpb24vTQpnZXN0dXJhbApnZXN0dXJlL01HRFMKZ2VzdW5kaGVpdApnZXQvUwpnZXRhd2F5L1NNCmdldHRpbmcKZ2V0dXAvTQpnZXdnYXcvU00KZ2V5c2VyL1NNCmdoYXN0bGluZXNzL00KZ2hhc3RseS9UUFIKZ2hhdC9NUwpnaGVlCmdoZXJraW4vTVMKZ2hldHRvL1NNCmdoZXR0b2l6ZS9HRFMKZ2hvc3QvU01EWUcKZ2hvc3RsaW5lc3MvTQpnaG9zdGx5L1JUUApnaG9zdHdyaXRlL1pHUlMKZ2hvc3R3cml0ZXIvTQpnaG9zdHdyaXR0ZW4KZ2hvc3R3cm90ZQpnaG91bC9TTQpnaG91bGlzaC9ZUApnaG91bGlzaG5lc3MvTQpnaWFudC9TTQpnaWFudGVzcy9NUwpnaWJiZXIvR0RTCmdpYmJlcmlzaC9NCmdpYmJldC9HTURTCmdpYmJvbi9NUwpnaWJib3VzCmdpYmUvTUdEUwpnaWJsZXQvU00KZ2lkZGlseQpnaWRkaW5lc3MvTQpnaWRkeS9SVFAKZ2lmdC9NREdTCmdpZy9TTQpnaWdhYml0L1NNCmdpZ2FieXRlL01TCmdpZ2FoZXJ0ei9NCmdpZ2FudGljCmdpZ2FudGljYWxseQpnaWdhcGl4ZWwvTVMKZ2lnYXdhdHQvU00KZ2lnZ2VkCmdpZ2dpbmcKZ2lnZ2xlL0RSU01aRwpnaWdnbGVyL00KZ2lnZ2x5L1JUCmdpZ29sby9TTQpnaWxkL01EUlpHUwpnaWxkZXIvTQpnaWxkaW5nL00KZ2lsbC9NUwpnaWxsaWUvUwpnaWxsaW9uL1MKZ2lsdC9NUwpnaW1iYWxzL00KZ2ltY3JhY2svU00KZ2ltY3JhY2tlcnkvTQpnaW1sZXQvR1NNRApnaW1tZS9TTQpnaW1taWNrL01TCmdpbW1pY2tyeS9NCmdpbW1pY2t5CmdpbXAvTURHUwpnaW1weQpnaW4vU00KZ2luZ2VyL0dTTURZCmdpbmdlcmJyZWFkL00KZ2luZ2Vyc25hcC9TTQpnaW5nZXJ5CmdpbmdoYW0vTQpnaW5naXZpdGlzL00KZ2lua2dvL00KZ2lua2dvZXMKZ2lubmVkCmdpbm5pbmcKZ2lub3Jtb3VzCmdpbnNlbmcvTQpnaXJhZmZlL01TCmdpcmQvRFJaR1MKZ2lyZGVyL00KZ2lyZGxlL0RTTUcKZ2lybC9NUwpnaXJsZnJpZW5kL01TCmdpcmxob29kL1NNCmdpcmxpc2gvWVAKZ2lybGlzaG5lc3MvTQpnaXJseQpnaXJvL1MKZ2lydC9NREdTCmdpcnRoL00KZ2lydGhzCmdpc3QvTQpnaXQvUwpnaXRlL1MKZ2l2ZS9aR0pSUwpnaXZlYXdheS9NUwpnaXZlYmFjay9NUwpnaXZlbi9TTQpnaXZlci9NCmdpem1vL1NNCmdpenphcmQvTVMKZ2xhY2UvUwpnbGFjZWVkCmdsYWNlaW5nCmdsYWNpYWwvWQpnbGFjaWF0ZS9YR05EUwpnbGFjaWF0aW9uL00KZ2xhY2llci9NUwpnbGFkL01ZU1AKZ2xhZGRlbi9HRFMKZ2xhZGRlcgpnbGFkZGVzdApnbGFkZS9TTQpnbGFkaWF0b3IvU00KZ2xhZGlhdG9yaWFsCmdsYWRpb2xhL1NNCmdsYWRpb2xpCmdsYWRpb2x1cy9NCmdsYWRuZXNzL00KZ2xhZHNvbWUKZ2xhbQpnbGFtb3JpemF0aW9uL00KZ2xhbW9yaXplL0RTRwpnbGFtb3JvdXMvWQpnbGFtb3VyL0dNRFMKZ2xhbmNlL0RTTUcKZ2xhbmQvU00KZ2xhbmRlcwpnbGFuZHVsYXIKZ2xhbnMvTQpnbGFyZS9EU01HCmdsYXJpbmcvWQpnbGFzbm9zdC9NCmdsYXNzL01EU0cKZ2xhc3NibG93ZXIvTVMKZ2xhc3NibG93aW5nL00KZ2xhc3NmdWwvU00KZ2xhc3Nob3VzZS9TCmdsYXNzaWx5CmdsYXNzaW5lc3MvTQpnbGFzc3dhcmUvTQpnbGFzc3kvUlRQCmdsYXVjb21hL00KZ2xhemUvRFNNRwpnbGF6aWVyL1NNCmdsYXppbmcvTQpnbGVhbS9TTURHSgpnbGVhbi9TRFJaR0oKZ2xlYW5lci9NCmdsZWFuaW5ncy9NCmdsZWUvTQpnbGVlZnVsL1lQCmdsZWVmdWxuZXNzL00KZ2xlbi9NUwpnbGVub2h1bWVyYWwKZ2xlbm9pZApnbGliL1lQCmdsaWJiZXIKZ2xpYmJlc3QKZ2xpYm5lc3MvTQpnbGlkZS9EUlNNWkcKZ2xpZGVyL00KZ2xpZGluZy9NCmdsaW1tZXIvTURHSlMKZ2xpbW1lcmluZy9NCmdsaW1wc2UvTUdEUwpnbGludC9TTURHCmdsaXNzYW5kaQpnbGlzc2FuZG8vTQpnbGlzdGVuL01EU0cKZ2xpc3Rlci9EU0cKZ2xpdGNoL0dNRFMKZ2xpdHRlci9NRFNHCmdsaXR0ZXJhdGkKZ2xpdHRlcnkKZ2xpdHovTQpnbGl0enkvVFIKZ2xvYW1pbmcvU00KZ2xvYXQvU01ERwpnbG9hdGluZy9ZCmdsb2IvTURHUwpnbG9iYWwvWQpnbG9iYWxpc20vTQpnbG9iYWxpc3QvTVMKZ2xvYmFsaXphdGlvbi9NCmdsb2JhbGl6ZS9HRFMKZ2xvYmUvU00KZ2xvYmV0cm90dGVyL01TCmdsb2JldHJvdHRpbmcKZ2xvYnVsYXIKZ2xvYnVsZS9NUwpnbG9idWxpbi9NCmdsb2NrZW5zcGllbC9TTQpnbG9vbS9NCmdsb29taWx5Cmdsb29taW5lc3MvTQpnbG9vbXkvVFJQCmdsb3AvTQpnbG9wcHkKZ2xvcmlmaWNhdGlvbi9NCmdsb3JpZnkvR0RTTgpnbG9yaW91cy9JWQpnbG9yeS9EU01HCmdsb3NzL01EU0cKZ2xvc3NhcnkvU00KZ2xvc3NpbHkKZ2xvc3NpbmVzcy9NCmdsb3Nzb2xhbGlhL00KZ2xvc3N5L1BUUlNNCmdsb3R0YWwKZ2xvdHRpcy9NUwpnbG92ZS9EU01HCmdsb3cvTURSWkdTCmdsb3dlci9HTUQKZ2xvd2luZy9ZCmdsb3d3b3JtL01TCmdsdWNhZ29uCmdsdWNvc2UvTQpnbHVlL01HRFMKZ2x1ZWQvVQpnbHVleQpnbHVpZXIKZ2x1aWVzdApnbHVtL1lQCmdsdW1tZXIKZ2x1bW1lc3QKZ2x1bW5lc3MvTQpnbHV0L01OUwpnbHV0ZW4vTQpnbHV0ZW5vdXMKZ2x1dGlub3VzL1kKZ2x1dHRlZApnbHV0dGluZwpnbHV0dG9uL01TCmdsdXR0b25vdXMvWQpnbHV0dG9ueS9NCmdseWNlcmluL00KZ2x5Y2Vyb2wvTQpnbHljb2dlbi9NCmdseXBoCmdtCmduYXJsL1NNREcKZ25hcmx5L1RSCmduYXNoL01EU0cKZ25hdC9NUwpnbmF3L0RHUwpnbmVpc3MvTQpnbm9jY2hpCmdub21lL1NNCmdub21pYwpnbm9taXNoCmdudS9TTQpnby9KTVJIWkcKZ29hZC9NREdTCmdvYWwvTVMKZ29hbGllL1NNCmdvYWxrZWVwZXIvTVMKZ29hbGtlZXBpbmcvTQpnb2FsbGVzcwpnb2FsbW91dGgKZ29hbG1vdXRocwpnb2FscG9zdC9NUwpnb2Fsc2NvcmVyL1MKZ29hbHRlbmRlci9NUwpnb2F0L01TCmdvYXRlZS9TTQpnb2F0aGVyZC9NUwpnb2F0c2tpbi9NUwpnb2IvU00KZ29iYmVkCmdvYmJldC9TTQpnb2JiaW5nCmdvYmJsZS9EUlNNWkcKZ29iYmxlZHlnb29rL00KZ29iYmxlci9NCmdvYmxldC9TTQpnb2JsaW4vU00KZ29ic21hY2tlZApnb2JzdG9wcGVyL1MKZ29kL1NNCmdvZGF3ZnVsCmdvZGNoaWxkL00KZ29kY2hpbGRyZW4vTQpnb2RkYW1taXQKZ29kZGFtbi9ECmdvZGRhdWdodGVyL01TCmdvZGRlc3MvTVMKZ29kZmF0aGVyL1NNCmdvZGZvcnNha2VuCmdvZGhlYWQvTQpnb2Rob29kL00KZ29kbGVzcy9QWQpnb2RsZXNzbmVzcy9NCmdvZGxpa2UKZ29kbGluZXNzL1VNCmdvZGx5L1VSVFAKZ29kbW90aGVyL1NNCmdvZHBhcmVudC9TTQpnb2RzZW5kL1NNCmdvZHNvbi9TTQpnb2RzcGVlZApnb2VyL00KZ29lcwpnb2Zlci9TTQpnb2dnbGUvRFNNRwpnb2dnbGVzL00KZ29pbmcvTQpnb2l0ZXIvU00KZ29sZC9NTlMKZ29sZGJyaWNrL1pHU01EUgpnb2xkYnJpY2tlci9NCmdvbGRlbi9UUgpnb2xkZW5yb2QvTQpnb2xkZmllbGQvUwpnb2xkZmluY2gvTVMKZ29sZGZpc2gvTVMKZ29sZG1pbmUvU00KZ29sZHNtaXRoL00KZ29sZHNtaXRocwpnb2xmL01EUlpHUwpnb2xmZXIvTQpnb2xsaXdvZy9TCmdvbGx5L1NNCmdvbmFkL1NNCmdvbmFkYWwKZ29uZG9sYS9NUwpnb25kb2xpZXIvU00KZ29uZS9aUgpnb25lci9NCmdvbmcvTURHUwpnb25rL1MKZ29ubmEKZ29ub3JyaGVhL00KZ29ub3JyaGVhbApnb256bwpnb28vTQpnb29iZXIvU00KZ29vZC9NWVNQCmdvb2RieWUvTVMKZ29vZGhlYXJ0ZWQKZ29vZGlzaApnb29kbHkvVFIKZ29vZG5lc3MvTQpnb29kbmlnaHQKZ29vZHMvTQpnb29kd2lsbC9NCmdvb2R5L1NNCmdvb2V5Cmdvb2YvTURHUwpnb29mYmFsbC9TTQpnb29maW5lc3MvTQpnb29meS9SUFQKZ29vZ2xlL0RTTUcKZ29vZ2x5L1MKZ29vaWVyCmdvb2llc3QKZ29vay9NUwpnb29uL01TCmdvb3AvTQpnb29zZS9EU01HCmdvb3NlYmVycnkvU00KZ29vc2VidW1wcy9NCmdvb3Nlc3RlcC9TCmdvb3Nlc3RlcHBlZApnb29zZXN0ZXBwaW5nCmdvcGhlci9TTQpnb3JlL01HRFMKZ29yZ2Uncwpnb3JnZS9FRFNHCmdvcmdlb3VzL1lQCmdvcmdlb3VzbmVzcy9NCmdvcmdvbi9TTQpnb3JpbGxhL01TCmdvcmlseQpnb3JpbmVzcy9NCmdvcm1hbmRpemUvRFJTWkcKZ29ybWFuZGl6ZXIvTQpnb3JtbGVzcwpnb3JwL01TCmdvcnNlL00KZ29yeS9SVFAKZ29zaApnb3NoYXdrL01TCmdvc2xpbmcvU00KZ29zcGVsL01TCmdvc3NhbWVyL00KZ29zc2lwL01EUlpHUwpnb3NzaXBlci9NCmdvc3NpcHkKZ290CmdvdGNoYS9TCmdvdGhzCmdvdHRhCmdvdHRlbgpnb3VhY2hlL1MKZ291Z2UvRFJTTVpHCmdvdWdlci9NCmdvdWxhc2gvTVMKZ291cmQvU00KZ291cmRlL01TCmdvdXJtYW5kL1NNCmdvdXJtZXQvU00KZ291dC9NCmdvdXR5L1RSCmdvdgpnb3Zlcm4vREdTQkwKZ292ZXJuYWJsZS9VCmdvdmVybmFuY2UvTQpnb3Zlcm5lZC9VCmdvdmVybmVzcy9NUwpnb3Zlcm5tZW50L01TCmdvdmVybm1lbnRhbApnb3Zlcm5vci9TTQpnb3Zlcm5vcnNoaXAvTQpnb3Z0Cmdvd24vTURHUwpncgpncmFiL01TCmdyYWJiZWQKZ3JhYmJlci9NUwpncmFiYmluZwpncmFiYnkvVFIKZ3JhY2UvRURTTUcKZ3JhY2VmdWwvRVBZCmdyYWNlZnVsbmVzcy9FTQpncmFjZWxlc3MvUFkKZ3JhY2VsZXNzbmVzcy9NCmdyYWNpb3VzL1VZCmdyYWNpb3VzbmVzcy9NCmdyYWNrbGUvTVMKZ3JhZC9NUlpTQgpncmFkYXRlL1hHTkRTCmdyYWRhdGlvbi9DTQpncmFkZSdzCmdyYWRlL0NBRFNHCmdyYWRlZC9VCmdyYWRlci9NCmdyYWRpZW50L01TCmdyYWR1YWwvUFkKZ3JhZHVhbGlzbS9NCmdyYWR1YWxuZXNzL00KZ3JhZHVhdGUvWE1HTkRTCmdyYWR1YXRpb24vTQpncmFmZml0aQpncmFmZml0by9NCmdyYWZ0L1NNRFJaRwpncmFmdGVyL00KZ3JhaGFtL1MKZ3JhaWwKZ3JhaW4vSVNNRApncmFpbmluZXNzL00KZ3JhaW55L1BUUgpncmFtL0tNUwpncmFtbWFyL01TCmdyYW1tYXJpYW4vU00KZ3JhbW1hdGljYWwvVVkKZ3JhbW9waG9uZS9NUwpncmFtcHVzL01TCmdyYW4vUwpncmFuYXJ5L1NNCmdyYW5kL1NNUllQVApncmFuZGFtL01TCmdyYW5kYXVudC9NUwpncmFuZGNoaWxkL00KZ3JhbmRjaGlsZHJlbi9NCmdyYW5kZGFkL1NNCmdyYW5kZGFkZHkvU00KZ3JhbmRkYXVnaHRlci9TTQpncmFuZGVlL01TCmdyYW5kZXVyL00KZ3JhbmRmYXRoZXIvR01EWVMKZ3JhbmRpbG9xdWVuY2UvTQpncmFuZGlsb3F1ZW50CmdyYW5kaW9zZS9ZCmdyYW5kaW9zaXR5L00KZ3JhbmRtYS9NUwpncmFuZG1vdGhlci9NWVMKZ3JhbmRuZXBoZXcvTVMKZ3JhbmRuZXNzL00KZ3JhbmRuaWVjZS9NUwpncmFuZHBhL01TCmdyYW5kcGFyZW50L01TCmdyYW5kc29uL01TCmdyYW5kc3RhbmQvU0dNRApncmFuZHVuY2xlL1NNCmdyYW5nZS9TTQpncmFuaXRlL00KZ3Jhbml0aWMKZ3Jhbm55L1NNCmdyYW5vbGEvTQpncmFudC9TTURSWkcKZ3JhbnRlZS9NUwpncmFudGVyL00KZ3JhbnRzbWFuc2hpcC9NCmdyYW51bGFyCmdyYW51bGFyaXR5L00KZ3JhbnVsYXRlL0dORFMKZ3JhbnVsYXRpb24vTQpncmFudWxlL01TCmdyYXBlL1NNCmdyYXBlZnJ1aXQvTVMKZ3JhcGVzaG90L00KZ3JhcGV2aW5lL1NNCmdyYXBoL01ERwpncmFwaGljL01TCmdyYXBoaWNhbC9ZCmdyYXBoaXRlL00KZ3JhcGhvbG9naXN0L01TCmdyYXBob2xvZ3kvTQpncmFwaHMKZ3JhcG5lbC9NUwpncmFwcGxlL01HRFMKZ3Jhc3AvU01EQkcKZ3Jhc3MvTURTRwpncmFzc2hvcHBlci9NUwpncmFzc2xhbmQvTVMKZ3Jhc3Nyb290cwpncmFzc3kvVFIKZ3JhdGUvRFJTTVpHSgpncmF0ZWZ1bC9VWVAKZ3JhdGVmdWxuZXNzL1VNCmdyYXRlci9NCmdyYXRpZmljYXRpb24vTQpncmF0aWZ5L0dOWERTCmdyYXRpZnlpbmcvWQpncmF0aW4vUwpncmF0aW5nL01ZCmdyYXRpcwpncmF0aXR1ZGUvSU0KZ3JhdHVpdG91cy9ZUApncmF0dWl0b3VzbmVzcy9NCmdyYXR1aXR5L1NNCmdyYXZhbWVuL01TCmdyYXZlL0RSU01ZVEdQCmdyYXZlZGlnZ2VyL1NNCmdyYXZlbC9TR01EWQpncmF2ZW4KZ3JhdmVuZXNzL00KZ3JhdmVzaWRlL01TCmdyYXZlc3RvbmUvU00KZ3JhdmV5YXJkL01TCmdyYXZpZApncmF2aW1ldGVyL01TCmdyYXZpdGFzCmdyYXZpdGF0ZS9HTkRTCmdyYXZpdGF0aW9uL00KZ3Jhdml0YXRpb25hbApncmF2aXR5L00KZ3JhdnkvU00KZ3JheS9NRFJUR1NQCmdyYXliZWFyZC9TTQpncmF5aXNoCmdyYXluZXNzL00KZ3JhemUvRFJTTVpHCmdyYXplci9NCmdyZWFzZS9EUlNNWkcKZ3JlYXNlcGFpbnQvTQpncmVhc2lseQpncmVhc2luZXNzL00KZ3JlYXN5L1BUUgpncmVhdC9TTVJZUFQKZ3JlYXRjb2F0L1NNCmdyZWF0aGVhcnRlZApncmVhdG5lc3MvTQpncmViZS9TTQpncmVlZC9NCmdyZWVkaWx5CmdyZWVkaW5lc3MvTQpncmVlZHkvUFRSCmdyZWVuL0dQU01EUllUCmdyZWVuYmFjay9NUwpncmVlbmJlbHQvTVMKZ3JlZW5lcnkvTQpncmVlbmZpZWxkCmdyZWVuZmx5L1MKZ3JlZW5nYWdlL01TCmdyZWVuZ3JvY2VyL1NNCmdyZWVuaG9ybi9TTQpncmVlbmhvdXNlL1NNCmdyZWVuaXNoCmdyZWVubWFpbC9NCmdyZWVubmVzcy9NCmdyZWVucm9vbS9TTQpncmVlbnN3YXJkL00KZ3JlZW53b29kL00KZ3JlZXQvWkdKU0RSCmdyZWV0ZXIvTQpncmVldGluZy9NCmdyZWdhcmlvdXMvUFkKZ3JlZ2FyaW91c25lc3MvTQpncmVtbGluL1NNCmdyZW5hZGUvU00KZ3JlbmFkaWVyL01TCmdyZW5hZGluZS9NCmdyZXAvUwpncmVwcGVkCmdyZXBwaW5nCmdyZXcvQQpncmV5aG91bmQvU00KZ3JpYmJsZS9TCmdyaWQvTVMKZ3JpZGRsZS9TTQpncmlkZGxlY2FrZS9TTQpncmlkaXJvbi9TTQpncmlkbG9jay9TTUQKZ3JpZWYvU00KZ3JpZXZhbmNlL01TCmdyaWV2ZS9aR0RSUwpncmlldmVyL00KZ3JpZXZvdXMvUFkKZ3JpZXZvdXNuZXNzL00KZ3JpZmZpbi9TTQpncmlmZm9uL1NNCmdyaWxsL1NHTURKCmdyaWxsZS9NUwpncmltL0RZUEcKZ3JpbWFjZS9EU01HCmdyaW1lL1NNCmdyaW1pbmVzcy9NCmdyaW1tZXIKZ3JpbW1lc3QKZ3JpbW5lc3MvTQpncmlteS9UUlAKZ3Jpbi9NUwpncmluZC9TWkdNUkoKZ3JpbmRlci9NCmdyaW5kc3RvbmUvTVMKZ3JpbmdvL01TCmdyaW5uZWQKZ3Jpbm5pbmcKZ3JpcC9NRFJTWkcKZ3JpcGUvU00KZ3JpcGVyL00KZ3JpcHBlL01aR0RSCmdyaXBwZXIvTQpncmlzbGluZXNzL00KZ3Jpc2x5L1JUUApncmlzdC9NWQpncmlzdGxlL00KZ3Jpc3RtaWxsL01TCmdyaXQvTVMKZ3JpdHMvTQpncml0dGVkCmdyaXR0ZXIvU00KZ3JpdHRpbmVzcy9NCmdyaXR0aW5nCmdyaXR0eS9SVFAKZ3JpenpsZS9EU0cKZ3JpenpseS9UUlNNCmdyb2FuL1NHTUQKZ3JvYXQvU00KZ3JvY2VyL01TCmdyb2NlcnkvU00KZ3JvZy9NCmdyb2dnaWx5Cmdyb2dnaW5lc3MvTQpncm9nZ3kvUFJUCmdyb2luL1NNCmdyb2svUwpncm9ra2VkCmdyb2traW5nCmdyb21tZXQvU00KZ3Jvb20vU1pHTURSCmdyb29tZXIvTQpncm9vbWluZy9NCmdyb29tc21hbi9NCmdyb29tc21lbgpncm9vdmUvTUdEUwpncm9vdnkvUlQKZ3JvcGUvRFJTTVpHCmdyb3Blci9NCmdyb3NiZWFrL01TCmdyb3NncmFpbi9NCmdyb3NzL1BUR01EUlNZCmdyb3NzbmVzcy9NCmdyb3Rlc3F1ZS9TUE1ZCmdyb3Rlc3F1ZW5lc3MvTQpncm90dG8vTQpncm90dG9lcwpncm90dHkvVFIKZ3JvdWNoL0dNRFMKZ3JvdWNoaWx5Cmdyb3VjaGluZXNzL00KZ3JvdWNoeS9SVFAKZ3JvdW5kL1pHTURSSlMKZ3JvdW5kYnJlYWtpbmcvTVMKZ3JvdW5kY2xvdGgKZ3JvdW5kY2xvdGhzCmdyb3VuZGVyL00KZ3JvdW5kaG9nL01TCmdyb3VuZGluZy9NCmdyb3VuZGxlc3MvWQpncm91bmRudXQvTVMKZ3JvdW5kc2hlZXQvUwpncm91bmRza2VlcGVyL1MKZ3JvdW5kc21hbgpncm91bmRzbWVuCmdyb3VuZHN3ZWxsL1NNCmdyb3VuZHdhdGVyL00KZ3JvdW5kd29yay9NCmdyb3VwL0pTWkdNRFIKZ3JvdXBlci9NCmdyb3VwaWUvTVMKZ3JvdXBpbmcvTQpncm91cHdhcmUvTQpncm91c2UvTVpHRFJTCmdyb3VzZXIvTQpncm91dC9TR01ECmdyb3ZlL1NNCmdyb3ZlbC9aR0RSUwpncm92ZWxlci9NCmdyb3ZlbGxlZApncm92ZWxsaW5nCmdyb3cvQUhTRwpncm93ZXIvTVMKZ3Jvd2luZy9JCmdyb3dsL1NaR01EUgpncm93bGVyL00KZ3Jvd24vQUkKZ3Jvd251cC9NUwpncm93dGgvQU0KZ3Jvd3RocwpncnViL01TCmdydWJiZWQKZ3J1YmJlci9NUwpncnViYmlseQpncnViYmluZXNzL00KZ3J1YmJpbmcKZ3J1YmJ5L1RSUApncnVic3Rha2UvTQpncnVkZ2UvTUdEUwpncnVkZ2luZy9ZCmdydWUvUwpncnVlbC9HSk0KZ3J1ZWxpbmcvWQpncnVlc29tZS9SWVRQCmdydWVzb21lbmVzcy9NCmdydWZmL1RQUlkKZ3J1ZmZuZXNzL00KZ3J1bWJsZS9EUlNNWkdKCmdydW1ibGVyL00KZ3J1bXAvU00KZ3J1bXBpbHkKZ3J1bXBpbmVzcy9NCmdydW1weS9QUlQKZ3J1bmdlL01TCmdydW5neS9SVApncnVuaW9uL1NNCmdydW50L1NHTUQKZ3QKZ3VhY2Ftb2xlL00KZ3VhbmluZS9NCmd1YW5vL00KZ3VhcmFuaS9NUwpndWFyYW50ZWUvTURTCmd1YXJhbnRlZWluZwpndWFyYW50b3IvTVMKZ3VhcmFudHkvR0RTTQpndWFyZC9TWkdNRFIKZ3VhcmRlZC9ZCmd1YXJkZXIvTQpndWFyZGhvdXNlL1NNCmd1YXJkaWFuL1NNCmd1YXJkaWFuc2hpcC9NCmd1YXJkcmFpbC9TTQpndWFyZHJvb20vU00KZ3VhcmRzbWFuL00KZ3VhcmRzbWVuCmd1YXZhL1NNCmd1YmVybmF0b3JpYWwKZ3VlcnJpbGxhL1NNCmd1ZXNzL1pHQk1EUlMKZ3Vlc3Nlci9NCmd1ZXNzdGltYXRlL0RTTUcKZ3Vlc3N3b3JrL00KZ3Vlc3QvU0dNRApndWVzdGJvb2svU00KZ3Vlc3Rob3VzZS9TCmd1ZXN0cm9vbS9TCmd1ZmYvTQpndWZmYXcvTURHUwpndWlkYW5jZS9NCmd1aWRlL0RSU01aRwpndWlkZWJvb2svU00KZ3VpZGVkL1UKZ3VpZGVsaW5lL1NNCmd1aWRlcG9zdC9TTQpndWlkZXIvTQpndWlsZC9TWk1SCmd1aWxkZXIvTQpndWlsZGhhbGwvTVMKZ3VpbGUvTQpndWlsZWZ1bApndWlsZWxlc3MvWVAKZ3VpbGVsZXNzbmVzcy9NCmd1aWxsZW1vdC9TCmd1aWxsb3RpbmUvRFNNRwpndWlsdC9NCmd1aWx0aWx5Cmd1aWx0aW5lc3MvTQpndWlsdGxlc3MKZ3VpbHR5L1BSVApndWluZWEvTVMKZ3Vpc2UvRVNNCmd1aXRhci9NUwpndWl0YXJpc3QvU00KZ3VsYWcvU00KZ3VsY2gvTVMKZ3VsZGVuL01TCmd1bGYvTVMKZ3VsbC9NRFNHCmd1bGxldC9NUwpndWxsaWJpbGl0eS9NCmd1bGxpYmxlCmd1bGx5L1NNCmd1bHAvTURSU1pHCmd1bHBlci9NCmd1bS9TTQpndW1iYWxsL1MKZ3VtYm8vU00KZ3VtYm9pbC9TTQpndW1ib290L1MKZ3VtZHJvcC9TTQpndW1tZWQKZ3VtbWluZwpndW1teS9UUgpndW1wdGlvbi9NCmd1bXNob2UvTURTCmd1bXNob2VpbmcKZ3VuL1NNCmd1bmJvYXQvU00KZ3VuZmlnaHQvTVJaUwpndW5maWdodGVyL00KZ3VuZmlyZS9NCmd1bmdlCmd1bmd5Cmd1bmsvTQpndW5reQpndW5tYW4vTQpndW5tZW4KZ3VubWV0YWwvTQpndW5uZWQKZ3VubmVsL01TCmd1bm5lci9NUwpndW5uZXJ5L00KZ3VubmluZwpndW5ueS9NCmd1bm55c2Fjay9NUwpndW5wb2ludC9NCmd1bnBvd2Rlci9NCmd1bnJ1bm5lci9NUwpndW5ydW5uaW5nL00KZ3Vuc2hpcC9NUwpndW5zaG90L01TCmd1bnNsaW5nZXIvU00KZ3Vuc21pdGgvTQpndW5zbWl0aHMKZ3Vud2FsZS9NUwpndXBweS9TTQpndXJnbGUvTUdEUwpndXJuZXkvTVMKZ3VydS9NUwpndXNoL01EUlNaRwpndXNoZXIvTQpndXNoaW5nL1kKZ3VzaHkvVFIKZ3Vzc2V0L01TREcKZ3Vzc3kvRFNHCmd1c3QvRU1EU0cKZ3VzdGF0b3J5Cmd1c3RpbHkKZ3VzdG8vTQpndXN0eS9SVApndXQvU00KZ3V0bGVzcy9QCmd1dGxlc3NuZXNzL00KZ3V0c3kvUlQKZ3V0dGVkCmd1dHRlci9TTURHCmd1dHRlcnNuaXBlL01TCmd1dHRpbmcKZ3V0dHVyYWwvTVMKZ3V0dHkvUlQKZ3V2L1MKZ3V2bm9yL1MKZ3V5L1NHTUQKZ3V6emxlL0RSU1pHCmd1enpsZXIvTQpneW0vU00KZ3lta2hhbmEvTVMKZ3ltbmFzaXVtL01TCmd5bW5hc3QvTVMKZ3ltbmFzdGljL1MKZ3ltbmFzdGljYWxseQpneW1uYXN0aWNzL00KZ3ltbm9zcGVybS9TTQpneW1zbGlwL1MKZ3luZWNvbG9naWMKZ3luZWNvbG9naWNhbApneW5lY29sb2dpc3QvU00KZ3luZWNvbG9neS9NCmd5cC9TTQpneXBwZWQKZ3lwcGVyL1NNCmd5cHBpbmcKZ3lwc3Rlci9TTQpneXBzdW0vTQpneXBzeS9TTQpneXJhdGUvRFNHTlgKZ3lyYXRpb24vTQpneXJhdG9yL1NNCmd5cmZhbGNvbi9NUwpneXJvL01TCmd5cm9zY29wZS9NUwpneXJvc2NvcGljCmd5dmUvTUdEUwpoJ20KaC9OUlNYWkdWSgpoYS9TSApoYWJlcmRhc2hlci9TTQpoYWJlcmRhc2hlcnkvU00KaGFiaWxpbWVudC9TTQpoYWJpdCdzCmhhYml0L0lTQgpoYWJpdGFiaWxpdHkvTQpoYWJpdGF0L1NNCmhhYml0YXRpb24vTVMKaGFiaXR1YWwvWVAKaGFiaXR1YWxuZXNzL00KaGFiaXR1YXRlL0dORFMKaGFiaXR1YXRpb24vTQpoYWJpdHVlL1NNCmhhY2llbmRhL1NNCmhhY2svTURSWkdTCmhhY2tlci9NCmhhY2tpbmcvTQpoYWNraXNoCmhhY2tsZS9NUwpoYWNrbmV5L1NNREcKaGFja3Nhdy9TTQpoYWNrdGl2aXN0L01TCmhhY2t3b3JrL00KaGFkCmhhZGRvY2svU00KaGFkbid0CmhhZHN0CmhhZm5pdW0vTQpoYWZ0L01TCmhhZy9TTQpoYWdnYXJkL1lQCmhhZ2dhcmRuZXNzL00KaGFnZ2lzL01TCmhhZ2dpc2gKaGFnZ2xlL01aR0RSUwpoYWdnbGVyL00KaGFnaW9ncmFwaGVyL1NNCmhhZ2lvZ3JhcGh5L1NNCmhhaG5pdW0vTQpoYWlrdS9NCmhhaWwvTURHUwpoYWlsc3RvbmUvTVMKaGFpbHN0b3JtL01TCmhhaXIvTURTCmhhaXJiYWxsL01TCmhhaXJiYW5kL1MKaGFpcmJyZWFkdGgvTQpoYWlyYnJlYWR0aHMKaGFpcmJydXNoL01TCmhhaXJjbG90aC9NCmhhaXJjdXQvU00KaGFpcmRvL01TCmhhaXJkcmVzc2VyL1NNCmhhaXJkcmVzc2luZy9NCmhhaXJkcnllci9NUwpoYWlyZ3JpcC9TCmhhaXJpbmVzcy9NCmhhaXJsZXNzCmhhaXJsaWtlCmhhaXJsaW5lL1NNCmhhaXJuZXQvU00KaGFpcnBpZWNlL01TCmhhaXJwaW4vU00KaGFpcnNicmVhZHRoL00KaGFpcnNicmVhZHRocwpoYWlyc3BsaXR0ZXIvU00KaGFpcnNwbGl0dGluZy9NCmhhaXJzcHJheS9TCmhhaXJzcHJpbmcvTVMKaGFpcnN0eWxlL01TCmhhaXJzdHlsaXN0L1NNCmhhaXJ5L1RSUApoYWoKaGFqai9NCmhhamplcwpoYWpqaS9TTQpoYWtlL01TCmhhbGFsL00KaGFsYmVyZC9TTQpoYWxjeW9uCmhhbGUvSVRHRFJTCmhhbGYvTQpoYWxmYmFjay9TTQpoYWxmaGVhcnRlZC9QWQpoYWxmaGVhcnRlZG5lc3MvTQpoYWxmcGVuY2UKaGFsZnBlbm55L1NNCmhhbGZ0aW1lL01TCmhhbGZ0b25lL01TCmhhbGZ3YXkKaGFsZndpdC9TTQpoYWxpYnV0L1NNCmhhbGl0ZS9NCmhhbGl0b3Npcy9NCmhhbGwvTVMKaGFsbGVsdWphaC9NCmhhbGxlbHVqYWhzCmhhbGxtYXJrL0dNRFMKaGFsbG9vL01TRwpoYWxsb3cvRFNHCmhhbGxvd2VkL1UKaGFsbHVjaW5hdGUvR05YRFMKaGFsbHVjaW5hdGlvbi9NCmhhbGx1Y2luYXRvcnkKaGFsbHVjaW5vZ2VuL1NNCmhhbGx1Y2lub2dlbmljL1NNCmhhbGx3YXkvU00KaGFsby9NREdTCmhhbG9nZW4vU00KaGFsb24KaGFsdC9NRFJaR1MKaGFsdGVyL0dNRApoYWx0ZXJuZWNrL1MKaGFsdGluZy9ZCmhhbHZlL0RTRwpoYWx5YXJkL01TCmhhbS9TTQpoYW1idXJnL1NaTVIKaGFtYnVyZ2VyL00KaGFtbGV0L01TCmhhbW1lZApoYW1tZXIvTURSU0paRwpoYW1tZXJlci9NCmhhbW1lcmhlYWQvU00KaGFtbWVybG9jay9TTQpoYW1tZXJ0b2UvTVMKaGFtbWluZwpoYW1tb2NrL1NNCmhhbW15L1RSCmhhbXBlci9HTURTCmhhbXBlcmVkL1UKaGFtc3Rlci9NUwpoYW1zdHJpbmcvR1NNCmhhbXN0cnVuZwpoYW5kJ3MKaGFuZC9VREdTCmhhbmRiYWcvU00KaGFuZGJhbGwvTVMKaGFuZGJhcnJvdy9TTQpoYW5kYmlsbC9NUwpoYW5kYm9vay9NUwpoYW5kYnJha2UvUwpoYW5kY2FyL1NNCmhhbmRjYXJ0L01TCmhhbmRjbGFzcC9NUwpoYW5kY3JhZnQvU01ERwpoYW5kY3VmZi9NREdTCmhhbmRlZC9QCmhhbmRmdWwvU00KaGFuZGd1bi9TTQpoYW5kaGVsZC9NUwpoYW5kaG9sZC9NUwpoYW5kaWNhcC9NUwpoYW5kaWNhcHBlZApoYW5kaWNhcHBlci9NUwpoYW5kaWNhcHBpbmcKaGFuZGljcmFmdC9NUwpoYW5kaWx5CmhhbmRpbmVzcy9NCmhhbmRpd29yay9NCmhhbmRrZXJjaGllZi9NUwpoYW5kbGUvTVpHRFJTCmhhbmRsZWJhci9NUwpoYW5kbGVyL00KaGFuZG1hZGUKaGFuZG1haWQvWE1OUwpoYW5kbWFpZGVuL00KaGFuZG91dC9TTQpoYW5kb3Zlci9TCmhhbmRwaWNrL0dEUwpoYW5kcmFpbC9NUwpoYW5kc2F3L1NNCmhhbmRzZXQvU00KaGFuZHNoYWtlL0pNR1MKaGFuZHNvbWUvUFlUUgpoYW5kc29tZW5lc3MvTQpoYW5kc3ByaW5nL01TCmhhbmRzdGFuZC9TTQpoYW5kd29yay9NCmhhbmR3b3ZlbgpoYW5kd3JpdGluZy9NCmhhbmR3cml0dGVuCmhhbmR5L1VUUgpoYW5keW1hbi9NCmhhbmR5bWVuCmhhbmcvTURSSlpHUwpoYW5nYXIvTVMKaGFuZ2RvZwpoYW5nZXIvTQpoYW5naW5nL00KaGFuZ21hbi9NCmhhbmdtZW4KaGFuZ25haWwvTVMKaGFuZ291dC9TTQpoYW5nb3Zlci9NUwpoYW5ndXAvTVMKaGFuay9NUlpTCmhhbmtlci9HSkQKaGFua2VyaW5nL00KaGFua2llL01TCmhhbnNvbS9NUwpoYXAvTVkKaGFwaGF6YXJkL1lQCmhhcGhhemFyZG5lc3MvTQpoYXBsZXNzL1lQCmhhcGxlc3NuZXNzL00KaGFwbG9pZC9NUwpoYXBwZW4vU0RHSgpoYXBwZW5pbmcvTQpoYXBwZW5zdGFuY2UvU00KaGFwcGlseS9VCmhhcHBpbmVzcy9VTQpoYXBweS9VUlRQCmhhcmFuZ3VlL01HRFMKaGFyYXNzL0xaR0RSUwpoYXJhc3Nlci9NCmhhcmFzc21lbnQvTQpoYXJiaW5nZXIvU00KaGFyYm9yL0dNRFMKaGFyYm9ybWFzdGVyL1MKaGFyZC9OUllYVFAKaGFyZGJhY2svTVMKaGFyZGJhbGwvTQpoYXJkYm9hcmQvTQpoYXJkYm91bmQKaGFyZGNvcmUKaGFyZGNvdmVyL1NNCmhhcmRlbi9aR0RSCmhhcmRlbmVkL1UKaGFyZGVuZXIvTQpoYXJkaGF0L01TCmhhcmRoZWFkZWQvUFkKaGFyZGhlYWRlZG5lc3MvTQpoYXJkaGVhcnRlZC9QWQpoYXJkaGVhcnRlZG5lc3MvTQpoYXJkaWhvb2QvTQpoYXJkaWx5CmhhcmRpbmVzcy9NCmhhcmRsaW5lci9NUwpoYXJkbmVzcy9NCmhhcmRzY3JhYmJsZQpoYXJkc2hpcC9TTQpoYXJkc3RhbmQvU00KaGFyZHRhY2svTQpoYXJkdG9wL1NNCmhhcmR3YXJlL00KaGFyZHdpcmVkCmhhcmR3b29kL1NNCmhhcmR3b3JraW5nCmhhcmR5L1BUUgpoYXJlL01HRFMKaGFyZWJlbGwvTVMKaGFyZWJyYWluZWQKaGFyZWxpcC9TTQpoYXJlbGlwcGVkCmhhcmVtL1NNCmhhcmljb3QvUwpoYXJrL0RHUwpoYXJsZXF1aW4vU00KaGFybG90L1NNCmhhcmxvdHJ5L00KaGFybS9NREdTCmhhcm1lZC9VCmhhcm1mdWwvWVAKaGFybWZ1bG5lc3MvTQpoYXJtbGVzcy9QWQpoYXJtbGVzc25lc3MvTQpoYXJtb25pYy9TTQpoYXJtb25pY2EvTVMKaGFybW9uaWNhbGx5Cmhhcm1vbmllcwpoYXJtb25pb3VzL1BZCmhhcm1vbmlvdXNuZXNzL00KaGFybW9uaXVtL01TCmhhcm1vbml6YXRpb24vTQpoYXJtb25pemUvWkdEUlMKaGFybW9uaXplci9NCmhhcm1vbnkvRU0KaGFybmVzcydzCmhhcm5lc3MvVURTRwpoYXJwL01ER1MKaGFycGlzdC9TTQpoYXJwb29uL1pHU01EUgpoYXJwb29uZXIvTQpoYXJwc2ljaG9yZC9NUwpoYXJwc2ljaG9yZGlzdC9TTQpoYXJweS9TTQpoYXJyaWRhbi9NUwpoYXJyaWVyL00KaGFycm93L1NNREcKaGFycnVtcGgvR0QKaGFycnVtcGhzCmhhcnJ5L0RSU1pHCmhhcnNoL1JZVFAKaGFyc2huZXNzL00KaGFydC9NUwpoYXJ2ZXN0L1NNRFJaRwpoYXJ2ZXN0ZWQvVQpoYXJ2ZXN0ZXIvTQpoYXNoL0FNRFNHCmhhc2hpc2gvTQpoYXNodGFnL1NNCmhhc24ndApoYXNwL01TCmhhc3NsZS9EU01HCmhhc3NvY2svU00KaGFzdC9ETlhHCmhhc3RlL1NNCmhhc3Rlbi9ERwpoYXN0aWx5Cmhhc3RpbmVzcy9NCmhhc3R5L1JUUApoYXQvWkdTTURSCmhhdGJhbmQvUwpoYXRib3gvTVMKaGF0Y2gvTURTRwpoYXRjaGJhY2svTVMKaGF0Y2hlY2svU00KaGF0Y2hlZC9VCmhhdGNoZXJ5L1NNCmhhdGNoZXQvU00KaGF0Y2hpbmcvTQpoYXRjaHdheS9TTQpoYXRlL01TCmhhdGVmdWwvUFkKaGF0ZWZ1bG5lc3MvTQpoYXRlbW9uZ2VyL01TCmhhdGVyL00KaGF0cGluL1MKaGF0cmVkL1NNCmhhdHN0YW5kL1MKaGF0dGVkCmhhdHRlci9TTQpoYXR0aW5nCmhhdWJlcmsvU00KaGF1Z2h0aWx5CmhhdWdodGluZXNzL00KaGF1Z2h0eS9QUlQKaGF1bC9NRFJaR1MKaGF1bGFnZS9NCmhhdWxlci9NCmhhdWxpZXIvUwpoYXVuY2gvTVMKaGF1bnQvU01EUlpHCmhhdW50ZXIvTQpoYXVudGluZy9ZCmhhdXRldXIvTQpoYXZlL01HUwpoYXZlbid0CmhhdmVuL1NNCmhhdmVyc2Fjay9TTQpoYXZvYy9NCmhhdy9HU01ECmhhd2svTURSWkdTCmhhd2tlci9NCmhhd2tpc2gvUApoYXdraXNobmVzcy9NCmhhd3Nlci9TTQpoYXd0aG9ybi9NUwpoYXkvR1NNRApoYXljb2NrL1NNCmhheWxvZnQvU00KaGF5bWFraW5nCmhheW1vdy9TTQpoYXlyaWNrL01TCmhheXJpZGUvTVMKaGF5c2VlZC9NUwpoYXlzdGFjay9TTQpoYXl3aXJlCmhhemFyZC9TTURHCmhhemFyZG91cy9ZCmhhemUvTVpHSkRSUwpoYXplbC9TTQpoYXplbG51dC9NUwpoYXplci9NCmhhemlseQpoYXppbmVzcy9NCmhhemluZy9NCmhhem1hdApoYXp5L1JUUApoZHFycwpoZSdkCmhlJ2xsCmhlL00KaGVhZC9NRFJaR0pTCmhlYWRhY2hlL01TCmhlYWRiYW5kL01TCmhlYWRiYW5nZXIvUwpoZWFkYmFuZ2luZwpoZWFkYm9hcmQvU00KaGVhZGJ1dHQvRFNHCmhlYWRjYXNlL1MKaGVhZGNoZWVzZQpoZWFkY291bnQvUwpoZWFkZHJlc3MvTVMKaGVhZGVyL00KaGVhZGZpcnN0CmhlYWRnZWFyL00KaGVhZGh1bnQvRFJTWkcKaGVhZGh1bnRlci9NCmhlYWRodW50aW5nL00KaGVhZGlseQpoZWFkaW5lc3MvTQpoZWFkaW5nL00KaGVhZGxhbXAvTVMKaGVhZGxhbmQvTVMKaGVhZGxlc3MKaGVhZGxpZ2h0L01TCmhlYWRsaW5lL01aR0RSUwpoZWFkbGluZXIvTQpoZWFkbG9jay9NUwpoZWFkbG9uZwpoZWFkbWFuL00KaGVhZG1hc3Rlci9TTQpoZWFkbWVuCmhlYWRtaXN0cmVzcy9NUwpoZWFkcGhvbmUvTVMKaGVhZHBpZWNlL01TCmhlYWRwaW4vU00KaGVhZHF1YXJ0ZXIvU0RHCmhlYWRxdWFydGVycy9NCmhlYWRyZXN0L01TCmhlYWRyb29tL00KaGVhZHNjYXJmCmhlYWRzY2FydmVzCmhlYWRzZXQvU00KaGVhZHNoaXAvU00KaGVhZHNocmlua2VyL1NNCmhlYWRzbWFuL00KaGVhZHNtZW4KaGVhZHN0YWxsL1NNCmhlYWRzdGFuZC9TTQpoZWFkc3RvbmUvU00KaGVhZHN0cm9uZwpoZWFkdGVhY2hlci9TCmhlYWR3YWl0ZXIvU00KaGVhZHdhdGVycy9NCmhlYWR3YXkvTQpoZWFkd2luZC9TTQpoZWFkd29yZC9TTQpoZWFkeS9SVFAKaGVhbC9EUkhaR1MKaGVhbGVkL1UKaGVhbGVyL00KaGVhbHRoL00KaGVhbHRoY2FyZQpoZWFsdGhmdWwvUFkKaGVhbHRoZnVsbmVzcy9NCmhlYWx0aGlseS9VCmhlYWx0aGluZXNzL1VNCmhlYWx0aHkvVVRSUApoZWFwL01ER1MKaGVhci9BSEdKUwpoZWFyZC9BVQpoZWFyZXIvU00KaGVhcmluZy9BTQpoZWFya2VuL1NHRApoZWFyc2F5L00KaGVhcnNlJ3MKaGVhcnNlL0FTCmhlYXJ0L1NNCmhlYXJ0YWNoZS9NUwpoZWFydGJlYXQvTVMKaGVhcnRicmVhay9TTUcKaGVhcnRicm9rZW4KaGVhcnRidXJuL00KaGVhcnRlbi9FU0dECmhlYXJ0ZmVsdApoZWFydGgvTQpoZWFydGhydWcvUwpoZWFydGhzCmhlYXJ0aHN0b25lL1NNCmhlYXJ0aWx5CmhlYXJ0aW5lc3MvTQpoZWFydGxhbmQvTVMKaGVhcnRsZXNzL1BZCmhlYXJ0bGVzc25lc3MvTQpoZWFydHJlbmRpbmcvWQpoZWFydHNpY2svUApoZWFydHNpY2tuZXNzL00KaGVhcnRzdHJpbmdzL00KaGVhcnR0aHJvYi9NUwpoZWFydHdhcm1pbmcKaGVhcnR3b29kL00KaGVhcnR5L1JTTVBUCmhlYXQncwpoZWF0L0FER1MKaGVhdGVkL1UKaGVhdGVkbHkKaGVhdGVyL1NNCmhlYXRoL01OUlgKaGVhdGhlbi9NCmhlYXRoZW5kb20vTQpoZWF0aGVuaXNoCmhlYXRoZW5pc20vTQpoZWF0aGVyL00KaGVhdGhzCmhlYXRpbmcvTQpoZWF0cHJvb2YKaGVhdHN0cm9rZS9NCmhlYXR3YXZlL1MKaGVhdmUvRFJTTVpHCmhlYXZlbi9TTVkKaGVhdmVubHkvVFIKaGVhdmVucy9NCmhlYXZlbndhcmQvUwpoZWF2ZXIvTQpoZWF2aWx5CmhlYXZpbmVzcy9NCmhlYXZ5L1JTTVRQCmhlYXZ5aGVhcnRlZApoZWF2eXNldApoZWF2eXdlaWdodC9NUwpoZWNrL00KaGVja2xlL0RSU01aRwpoZWNrbGVyL00KaGVja2xpbmcvTQpoZWN0YXJlL1NNCmhlY3RpYwpoZWN0aWNhbGx5CmhlY3RvZ3JhbS9TTQpoZWN0b21ldGVyL01TCmhlY3Rvci9TTURHCmhlZGdlL0RSU01aRwpoZWRnZWhvZy9NUwpoZWRnZWhvcC9TCmhlZGdlaG9wcGVkCmhlZGdlaG9wcGluZwpoZWRnZXIvTQpoZWRnZXJvdy9TTQpoZWRvbmlzbS9NCmhlZG9uaXN0L01TCmhlZG9uaXN0aWMKaGVlZC9NREdTCmhlZWRlZC9VCmhlZWRmdWwvWQpoZWVkbGVzcy9QWQpoZWVkbGVzc25lc3MvTQpoZWVoYXcvU01ERwpoZWVsL01ER1MKaGVlbGxlc3MKaGVmdC9NREdTCmhlZnRpbHkKaGVmdGluZXNzL00KaGVmdHkvUFJUCmhlZ2Vtb25pYwpoZWdlbW9ueS9NCmhlZ2lyYS9TTQpoZWlmZXIvU00KaGVpZ2h0L1hTTU4KaGVpZ2h0ZW4vREcKaGVpbm91cy9ZUApoZWlub3VzbmVzcy9NCmhlaXIvTVMKaGVpcmVzcy9NUwpoZWlybG9vbS9TTQpoZWlzdC9TTURHCmhlbGQKaGVsaWNhbApoZWxpY2VzCmhlbGljb3B0ZXIvU0dNRApoZWxpb2NlbnRyaWMKaGVsaW90cm9wZS9TTQpoZWxpcGFkL1MKaGVsaXBvcnQvTVMKaGVsaXVtL00KaGVsaXgvTQpoZWxsL00KaGVsbGJlbnQKaGVsbGNhdC9NUwpoZWxsZWJvcmUvTQpoZWxsZmlyZQpoZWxsaG9sZS9NUwpoZWxsaW9uL01TCmhlbGxpc2gvWVAKaGVsbGlzaG5lc3MvTQpoZWxsby9TTQpoZWxsdXZhCmhlbG0vTVMKaGVsbWV0L1NNRApoZWxtc21hbi9NCmhlbG1zbWVuCmhlbG90L1NNCmhlbHAvTURSWkdTSgpoZWxwZXIvTQpoZWxwZnVsL1VZCmhlbHBmdWxuZXNzL00KaGVscGluZy9NCmhlbHBsZXNzL1BZCmhlbHBsZXNzbmVzcy9NCmhlbHBsaW5lL1NNCmhlbHBtYXRlL1NNCmhlbHZlL1NNCmhlbS9TTQpoZW1hdGl0ZS9NCmhlbWF0b2xvZ2ljCmhlbWF0b2xvZ2ljYWwKaGVtYXRvbG9naXN0L01TCmhlbWF0b2xvZ3kvTQpoZW1lL00KaGVtaXNwaGVyZS9TTQpoZW1pc3BoZXJpYwpoZW1pc3BoZXJpY2FsCmhlbWxpbmUvU00KaGVtbG9jay9TTQpoZW1tZWQKaGVtbWVyL1NNCmhlbW1pbmcKaGVtb2dsb2Jpbi9NCmhlbW9waGlsaWEvTQpoZW1vcGhpbGlhYy9NUwpoZW1vcnJoYWdlL01HRFMKaGVtb3JyaGFnaWMKaGVtb3JyaG9pZC9NUwpoZW1vc3RhdC9NUwpoZW1wL01OCmhlbXN0aXRjaC9NRFNHCmhlbi9NCmhlbmNlCmhlbmNlZm9ydGgKaGVuY2Vmb3J3YXJkCmhlbmNobWFuL00KaGVuY2htZW4KaGVubmEvU01ERwpoZW5wZWNrL0dTRApoZXAKaGVwYXJpbi9NCmhlcGF0aWMKaGVwYXRpdGlzL00KaGVwYXRvY3l0ZS9TCmhlcHBlcgpoZXBwZXN0CmhlcHRhZ29uL01TCmhlcHRhZ29uYWwKaGVwdGF0aGxvbi9TTQpoZXJhbGQvU01ERwpoZXJhbGRlZC9VCmhlcmFsZGljCmhlcmFsZHJ5L00KaGVyYi9NUwpoZXJiYWNlb3VzCmhlcmJhZ2UvTQpoZXJiYWwvUwpoZXJiYWxpc3QvTVMKaGVyYmljaWRhbApoZXJiaWNpZGUvTVMKaGVyYml2b3JlL1NNCmhlcmJpdm9yb3VzCmhlcmN1bGVhbgpoZXJkL01EUlpHUwpoZXJkZXIvTQpoZXJkc21hbi9NCmhlcmRzbWVuCmhlcmUvTQpoZXJlYWJvdXQvUwpoZXJlYWZ0ZXIvU00KaGVyZWJ5CmhlcmVkaXRhcnkKaGVyZWRpdHkvTQpoZXJlaW4KaGVyZWluYWZ0ZXIKaGVyZW9mCmhlcmVvbgpoZXJlc3kvU00KaGVyZXRpYy9TTQpoZXJldGljYWwKaGVyZXRvCmhlcmV0b2ZvcmUKaGVyZXVudG8KaGVyZXVwb24KaGVyZXdpdGgKaGVyaXRhYmxlL0kKaGVyaXRhZ2UvTVMKaGVybWFwaHJvZGl0ZS9TTQpoZXJtYXBocm9kaXRpYwpoZXJtZXRpYwpoZXJtZXRpY2FsL1kKaGVybWl0L1NNCmhlcm1pdGFnZS9NUwpoZXJuaWEvU00KaGVybmlhbApoZXJuaWF0ZS9HTkRTCmhlcm5pYXRpb24vTQpoZXJvL00KaGVyb2VzCmhlcm9pYy9TCmhlcm9pY2FsbHkKaGVyb2ljcy9NCmhlcm9pbi9TTQpoZXJvaW5lL1NNCmhlcm9pc20vTQpoZXJvbi9TTQpoZXJwZXMvTQpoZXJwZXRvbG9naXN0L1NNCmhlcnBldG9sb2d5L00KaGVycmluZy9NUwpoZXJyaW5nYm9uZS9NCmhlcnNlbGYKaGVydHovTQpoZXNpdGFuY2UvTQpoZXNpdGFuY3kvTQpoZXNpdGFudC9ZCmhlc2l0YXRlL0RTR05YCmhlc2l0YXRpbmcvVVkKaGVzaXRhdGlvbi9NCmhlc3NpYW4KaGV0ZXJvL1NNCmhldGVyb2RveApoZXRlcm9kb3h5L00KaGV0ZXJvZ2VuZWl0eS9NCmhldGVyb2dlbmVvdXMvWQpoZXRlcm9zZXh1YWwvTVlTCmhldGVyb3NleHVhbGl0eS9NCmhldXJpc3RpYy9NUwpoZXVyaXN0aWNhbGx5CmhldXJpc3RpY3MvTQpoZXcvWkdTRFIKaGV3ZXIvTQpoZXgvR01EUwpoZXhhZGVjaW1hbC9TCmhleGFnb24vTVMKaGV4YWdvbmFsCmhleGFncmFtL1NNCmhleGFtZXRlci9TTQpoZXkKaGV5ZGF5L1NNCmhmCmhndApoZ3d5CmhpL1NECmhpYXR1cy9NUwpoaWJhY2hpL01TCmhpYmVybmF0ZS9HTkRTCmhpYmVybmF0aW9uL00KaGliZXJuYXRvci9NUwpoaWJpc2N1cy9NUwpoaWNjb3VnaC9ERwpoaWNjb3VnaHMKaGljY3VwL0dTTUQKaGljay9NUwpoaWNrZXkvU00KaGlja29yeS9TTQpoaWQKaGlkZGVuCmhpZGUvTVpHSkRSUwpoaWRlYXdheS9TTQpoaWRlYm91bmQKaGlkZW91cy9ZUApoaWRlb3VzbmVzcy9NCmhpZGVvdXQvTVMKaGlkZXIvTQpoaWRpbmcvTQpoaWUvUwpoaWVpbmcKaGllcmFyY2hpYwpoaWVyYXJjaGljYWwvWQpoaWVyYXJjaHkvU00KaGllcm9nbHlwaC9NCmhpZXJvZ2x5cGhpYy9NUwpoaWVyb2dseXBocwpoaWdoL01SWVpUUApoaWdoYmFsbC9TTQpoaWdoYm9ybgpoaWdoYm95L01TCmhpZ2hicm93L1NNCmhpZ2hjaGFpci9NUwpoaWdoZmFsdXRpbgpoaWdoaGFuZGVkL1BZCmhpZ2hoYW5kZWRuZXNzL00KaGlnaGxhbmQvTVJaUwpoaWdobGFuZGVyL00KaGlnaGxpZ2h0L1NNRFJaRwpoaWdobGlnaHRlci9NCmhpZ2huZXNzL00KaGlnaHJvYWQvTVMKaGlnaHMKaGlnaHRhaWwvRFNHCmhpZ2h3YXkvTVMKaGlnaHdheW1hbi9NCmhpZ2h3YXltZW4KaGlqYWIKaGlqYWNrL1NKWkdNRFIKaGlqYWNrZXIvTQpoaWphY2tpbmcvTQpoaWtlL01aR0RSUwpoaWtlci9NCmhpa2luZy9NCmhpbGFyaW91cy9QWQpoaWxhcmlvdXNuZXNzL00KaGlsYXJpdHkvTQpoaWxsL01TCmhpbGxiaWxseS9TTQpoaWxsaW5lc3MvTQpoaWxsb2NrL01TCmhpbGxzaWRlL1NNCmhpbGx0b3AvTVMKaGlsbHkvUFJUCmhpbHQvTVMKaGltL1MKaGltc2VsZgpoaW5kL01SWlMKaGluZGVyL0dECmhpbmRlcmVkL1UKaGluZG1vc3QKaGluZHF1YXJ0ZXIvTVMKaGluZHJhbmNlL1NNCmhpbmRzaWdodC9NCmhpbmdlJ3MKaGluZ2UvVURTRwpoaW50L01EUlpHUwpoaW50ZXIvTQpoaW50ZXJsYW5kL1NNCmhpcC9TUE0KaGlwYmF0aApoaXBiYXRocwpoaXBib25lL01TCmhpcGh1Z2dlcnMKaGlwbmVzcy9NCmhpcHBlZApoaXBwZXIKaGlwcGVzdApoaXBwaWUvU00KaGlwcGluZwpoaXBwby9TTQpoaXBwb2Ryb21lL1NNCmhpcHBvcG90YW11cy9NUwpoaXBweQpoaXBzdGVyL01TCmhpcmFnYW5hCmhpcmUncwpoaXJlL0FHRFMKaGlyZWxpbmcvTVMKaGlyc3V0ZS9QCmhpcnN1dGVuZXNzL00KaGlzcy9NRFNHCmhpc3QKaGlzdGFtaW5lL01TCmhpc3RvZ3JhbS9NUwpoaXN0b2xvZ2lzdC9TTQpoaXN0b2xvZ3kvTQpoaXN0b3JpYW4vTVMKaGlzdG9yaWMKaGlzdG9yaWNhbC9ZCmhpc3RvcmljaXR5L00KaGlzdG9yaW9ncmFwaGVyL01TCmhpc3RvcmlvZ3JhcGh5L00KaGlzdG9yeS9TTQpoaXN0cmlvbmljL1MKaGlzdHJpb25pY2FsbHkKaGlzdHJpb25pY3MvTQpoaXQvU00KaGl0Y2gncwpoaXRjaC9VRFNHCmhpdGNoZXIvTVMKaGl0Y2hoaWtlL0RSU01aRwpoaXRjaGhpa2VyL00KaGl0aGVyCmhpdGhlcnRvCmhpdHRlci9TTQpoaXR0aW5nCmhpdmUvTUdEUwpoaXlhCmhtbQpoby9TTURSWVoKaG9hZ2llL01TCmhvYXJkL1NaR01EUkoKaG9hcmRlci9NCmhvYXJkaW5nL00KaG9hcmZyb3N0L00KaG9hcmluZXNzL00KaG9hcnNlL1lUUlAKaG9hcnNlbmVzcy9NCmhvYXJ5L1RSUApob2F4L01EUlNaRwpob2F4ZXIvTQpob2IvU00KaG9iYml0L1MKaG9iYmxlL01aR0RSUwpob2JibGVyL00KaG9iYnkvU00KaG9iYnlob3JzZS9NUwpob2JieWlzdC9TTQpob2Jnb2JsaW4vTVMKaG9ibmFpbC9TR01ECmhvYm5vYi9TCmhvYm5vYmJlZApob2Jub2JiaW5nCmhvYm8vTVMKaG9jay9NRFNHCmhvY2tleS9NCmhvY2tzaG9wL01TCmhvZC9TTQpob2RnZXBvZGdlL1NNCmhvZS9TTQpob2VjYWtlL1NNCmhvZWRvd24vU00KaG9laW5nCmhvZXIvTQpob2cvU00KaG9nYW4vU00KaG9nYmFjay9TTQpob2dnZWQKaG9nZ2luZwpob2dnaXNoL1kKaG9nc2hlYWQvU00KaG9ndGllL0RTCmhvZ3R5aW5nCmhvZ3dhc2gvTQpob2ljay9TR0QKaG9pc3QvU0dNRApob2tlL0dEUwpob2tleQpob2tpZXIKaG9raWVzdApob2t1bS9NCmhvbGQvTVJKU1pHCmhvbGRhbGwvUwpob2xkZXIvTQpob2xkaW5nL00KaG9sZG91dC9TTQpob2xkb3Zlci9TTQpob2xkdXAvTVMKaG9sZS9NR0RTCmhvbGV5CmhvbGlkYXkvU01ERwpob2xpZGF5bWFrZXIvUwpob2xpbmVzcy9VTQpob2xpc20KaG9saXN0aWMKaG9saXN0aWNhbGx5CmhvbGxlci9NREdTCmhvbGxvdy9NRFJZUFNURwpob2xsb3duZXNzL00KaG9sbHkvU00KaG9sbHlob2NrL01TCmhvbG1pdW0vTQpob2xvY2F1c3QvU00KaG9sb2dyYW0vTVMKaG9sb2dyYXBoL00KaG9sb2dyYXBoaWMKaG9sb2dyYXBocwpob2xvZ3JhcGh5L00KaG9scwpob2xzdGVyL1NNREcKaG9seS9VUlBUCmhvbWFnZS9NUwpob21icmUvTVMKaG9tYnVyZy9TTQpob21lL01ZWkdEUlMKaG9tZWJvZHkvU00KaG9tZWJveS9TTQpob21lY29taW5nL1NNCmhvbWVncm93bgpob21lbGFuZC9NUwpob21lbGVzcy9NUApob21lbGVzc25lc3MvTQpob21lbGlrZQpob21lbGluZXNzL00KaG9tZWx5L1BSVApob21lbWFkZQpob21lbWFrZXIvU00KaG9tZW1ha2luZy9NCmhvbWVvcGF0aC9NCmhvbWVvcGF0aGljCmhvbWVvcGF0aHMKaG9tZW9wYXRoeS9NCmhvbWVvc3Rhc2lzL00KaG9tZW9zdGF0aWMKaG9tZW93bmVyL01TCmhvbWVwYWdlL01TCmhvbWVyL0dNRApob21lcm9vbS9NUwpob21lc2Nob29saW5nL00KaG9tZXNpY2svUApob21lc2lja25lc3MvTQpob21lc3B1bi9NCmhvbWVzdGVhZC9TTURSWkcKaG9tZXN0ZWFkZXIvTQpob21lc3RyZXRjaC9NUwpob21ldG93bi9NUwpob21ld2FyZC9TCmhvbWV3b3JrL01SWkcKaG9tZXdyZWNrZXIvU00KaG9tZXkvU01QCmhvbWV5bmVzcy9NCmhvbWljaWRhbApob21pY2lkZS9NUwpob21pZXIKaG9taWVzdApob21pbGV0aWMKaG9taWx5L1NNCmhvbWluaWQvU00KaG9taW5vaWQvUwpob21pbnkvTQpob21vL01TCmhvbW9lcm90aWMKaG9tb2dlbmVpdHkvTQpob21vZ2VuZW91cy9ZCmhvbW9nZW5pemF0aW9uL00KaG9tb2dlbml6ZS9EU0cKaG9tb2dyYXBoL00KaG9tb2dyYXBocwpob21vbG9nb3VzCmhvbW9ueW0vU00KaG9tb3Bob2JpYS9NCmhvbW9waG9iaWMKaG9tb3Bob25lL01TCmhvbW9zZXh1YWwvU00KaG9tb3NleHVhbGl0eS9NCmhvbi9TWlRHTURSCmhvbmNoby9NUwpob25lL01TCmhvbmVyL00KaG9uZXN0L0VZVApob25lc3Rlcgpob25lc3R5L0VNCmhvbmV5L1NHTUQKaG9uZXliZWUvU00KaG9uZXljb21iL01EU0cKaG9uZXlkZXcvU00KaG9uZXlsb2N1c3QvTQpob25leW1vb24vWkdNRFJTCmhvbmV5bW9vbmVyL00KaG9uZXlwb3QvUwpob25leXN1Y2tsZS9TTQpob25rL01EUlNaRwpob25rZXIvTQpob25reS9TTQpob25vci9FU0dNREIKaG9ub3JhYmxlbmVzcy9NCmhvbm9yYWJseS9FCmhvbm9yYXJpbHkKaG9ub3Jhcml1bS9NUwpob25vcmFyeQpob25vcmVlL1NNCmhvbm9yZXIvU00KaG9ub3JpZmljL01TCmhvb2NoL00KaG9vZC9NRFNHCmhvb2RpZS9NUwpob29kbHVtL1NNCmhvb2Rvby9NRFNHCmhvb2R3aW5rL0RHUwpob29leS9NCmhvb2YvTURSU1pHCmhvb2sncwpob29rL1VEU0cKaG9va2FoL00KaG9va2Focwpob29rZXIvTVMKaG9va3VwL01TCmhvb2t3b3JtL01TCmhvb2t5L00KaG9vbGlnYW4vTVMKaG9vbGlnYW5pc20vTQpob29wL01EU0cKaG9vcGxhL00KaG9vcmF5Cmhvb3NlZ293L1NNCmhvb3QvTURSU1pHCmhvb3RlbmFubnkvU00KaG9vdGVyL00KaG9vdmVyL0RTRwpob292ZXMKaG9wL1NHTUQKaG9wZS9NUwpob3BlZnVsL1BTTVkKaG9wZWZ1bG5lc3MvTQpob3BlbGVzcy9ZUApob3BlbGVzc25lc3MvTQpob3BwZWQKaG9wcGVyL01TCmhvcHBpbmcKaG9wc2NvdGNoL01EU0cKaG9yYS9NUwpob3JkZS9EU01HCmhvcmVob3VuZC9TTQpob3Jpem9uL1NNCmhvcml6b250YWwvU01ZCmhvcm1vbmFsCmhvcm1vbmUvU00KaG9ybi9NRFMKaG9ybmJsZW5kZS9NCmhvcm5ldC9NUwpob3JubGVzcwpob3JubGlrZQpob3JucGlwZS9NUwpob3JueS9UUgpob3JvbG9naWMKaG9yb2xvZ2ljYWwKaG9yb2xvZ2lzdC9NUwpob3JvbG9neS9NCmhvcm9zY29wZS9TTQpob3JyZW5kb3VzL1kKaG9ycmlibGUvUApob3JyaWJsZW5lc3MvTQpob3JyaWJseQpob3JyaWQvWQpob3JyaWZpYwpob3JyaWZpY2FsbHkKaG9ycmlmeS9EU0cKaG9ycmlmeWluZy9ZCmhvcnJvci9NUwpob3JzZSdzCmhvcnNlL1VEU0cKaG9yc2ViYWNrL00KaG9yc2Vib3gvUwpob3JzZWZsZXNoL00KaG9yc2VmbHkvU00KaG9yc2VoYWlyL00KaG9yc2VoaWRlL00KaG9yc2VsYXVnaC9NCmhvcnNlbGF1Z2hzCmhvcnNlbGVzcwpob3JzZW1hbi9NCmhvcnNlbWFuc2hpcC9NCmhvcnNlbWVuCmhvcnNlcGxheS9NCmhvcnNlcG93ZXIvTQpob3JzZXJhZGlzaC9NUwpob3JzZXNoaXQvIQpob3JzZXNob2UvRFNNCmhvcnNlc2hvZWluZwpob3JzZXRhaWwvU00KaG9yc2V0cmFkaW5nCmhvcnNld2hpcC9TTQpob3JzZXdoaXBwZWQKaG9yc2V3aGlwcGluZwpob3JzZXdvbWFuL00KaG9yc2V3b21lbgpob3JzZXkKaG9yc2llcgpob3JzaWVzdApob3J0YXRvcnkKaG9ydGljdWx0dXJhbApob3J0aWN1bHR1cmFsaXN0L1MKaG9ydGljdWx0dXJlL00KaG9ydGljdWx0dXJpc3QvTVMKaG9zYW5uYS9TTQpob3NlL01HRFMKaG9zZXBpcGUvUwpob3NpZXIvTVMKaG9zaWVyeS9NCmhvc3AKaG9zcGhvbGlwYXNlCmhvc3BpY2UvTVMKaG9zcGl0YWJsZS9JCmhvc3BpdGFibHkvSQpob3NwaXRhbC9TTQpob3NwaXRhbGl0eS9NCmhvc3BpdGFsaXphdGlvbi9TTQpob3NwaXRhbGl6ZS9EU0cKaG9zdC9NRFNHCmhvc3RhZ2UvTVMKaG9zdGVsL1pHTURSUwpob3N0ZWxlci9NCmhvc3RlbHJ5L1NNCmhvc3Rlc3MvTURTRwpob3N0aWxlL01ZUwpob3N0aWxpdGllcy9NCmhvc3RpbGl0eS9TTQpob3N0bGVyL01TCmhvdC9TWVAKaG90YmVkL01TCmhvdGJsb29kZWQKaG90Ym94L01TCmhvdGNha2UvU00KaG90ZWwvU00KaG90ZWxpZXIvTVMKaG90Zm9vdC9NREdTCmhvdGhlYWQvRFNNCmhvdGhlYWRlZC9ZUApob3RoZWFkZWRuZXNzL00KaG90aG91c2UvU00KaG90a2V5L1MKaG90bGluay9TCmhvdG5lc3MvTQpob3RwbGF0ZS9TTQpob3Rwb3QvUwpob3RzL00KaG90c2hvdC9NUwpob3R0ZWQKaG90dGVyCmhvdHRlc3QKaG90dGllL1MKaG90dGluZwpob3VuZC9TR01ECmhvdXIvTVlTCmhvdXJnbGFzcy9NUwpob3VyaS9TTQpob3VzZSdzCmhvdXNlL0FEU0cKaG91c2Vib2F0L1NNCmhvdXNlYm91bmQKaG91c2Vib3kvU00KaG91c2VicmVhay9SU1pHCmhvdXNlYnJlYWtlci9NCmhvdXNlYnJlYWtpbmcvTQpob3VzZWJyb2tlCmhvdXNlYnJva2VuCmhvdXNlY2xlYW4vRFNHCmhvdXNlY2xlYW5pbmcvTQpob3VzZWNvYXQvU00KaG91c2VmbHkvU00KaG91c2VmdWwvU00KaG91c2Vob2xkL1NNUloKaG91c2Vob2xkZXIvTQpob3VzZWh1c2JhbmQvU00KaG91c2VrZWVwZXIvTVMKaG91c2VrZWVwaW5nL00KaG91c2VsaWdodHMvTQpob3VzZW1haWQvU00KaG91c2VtYW4vTQpob3VzZW1hc3Rlci9TCmhvdXNlbWF0ZS9TCmhvdXNlbWVuCmhvdXNlbWlzdHJlc3MvUwpob3VzZW1vdGhlci9TTQpob3VzZXBhcmVudC9TTQpob3VzZXBsYW50L01TCmhvdXNlcHJvdWQKaG91c2Vyb29tCmhvdXNldG9wL1NNCmhvdXNld2FyZXMvTQpob3VzZXdhcm1pbmcvU00KaG91c2V3aWZlL01ZCmhvdXNld2l2ZXMKaG91c2V3b3JrL00KaG91c2luZy9NUwpob3ZlCmhvdmVsL1NNCmhvdmVyL1NHRApob3ZlcmNyYWZ0L00KaG93J2QKaG93J3JlCmhvdy9TTQpob3diZWl0Cmhvd2RhaC9NCmhvd2RhaHMKaG93ZHkKaG93ZXZlcgpob3dpdHplci9TTQpob3dsL01EUlNaRwpob3dsZXIvTQpob3dzb2V2ZXIKaG95ZGVuL01TCmhveWRlbmlzaApocApoci9TCmh0Cmh1YXJhY2hlL1NNCmh1Yi9TTQpodWJidWIvU00KaHViYnkvU00KaHViY2FwL1NNCmh1YnJpcy9NCmh1Y2tsZWJlcnJ5L1NNCmh1Y2tzdGVyL1NHTUQKaHVja3N0ZXJpc20vTQpodWRkbGUvRFNNRwpodWUvRFNNCmh1ZmYvTURTRwpodWZmaWx5Cmh1ZmZpbmVzcy9NCmh1ZmZ5L1BSVApodWcvU1RNUgpodWdlL1lQCmh1Z2VuZXNzL00KaHVnZ2VkCmh1Z2dpbmcKaHVoCmh1bGEvTVMKaHVsay9NU0cKaHVsbC9NRFJTWkcKaHVsbGFiYWxvby9TTQpodWxsZXIvTQpodW0vU00KaHVtYW4vU01SWVRQCmh1bWFuZS9QWQpodW1hbmVuZXNzL00KaHVtYW5pc20vTQpodW1hbmlzdC9TTQpodW1hbmlzdGljCmh1bWFuaXRhcmlhbi9NUwpodW1hbml0YXJpYW5pc20vTQpodW1hbml0aWVzL00KaHVtYW5pdHkvSVNNCmh1bWFuaXphdGlvbi9DTQpodW1hbml6ZS9DRFNHCmh1bWFuaXplci9TTQpodW1hbmtpbmQvTQpodW1hbm5lc3MvTQpodW1hbm9pZC9TTQpodW1ibGUvRFJTWlRHSlAKaHVtYmxlbmVzcy9NCmh1bWJsZXIvTQpodW1ibHkKaHVtYnVnL1NNCmh1bWJ1Z2dlZApodW1idWdnaW5nCmh1bWRpbmdlci9NUwpodW1kcnVtL00KaHVtZXJhbApodW1lcmkKaHVtZXJ1cy9NCmh1bWlkL1kKaHVtaWRpZmljYXRpb24vTQpodW1pZGlmaWVyL0NNCmh1bWlkaWZ5L0NaR0RSUwpodW1pZGl0eS9NCmh1bWlkb3IvU00KaHVtaWxpYXRlL0RTR05YCmh1bWlsaWF0aW5nL1kKaHVtaWxpYXRpb24vTQpodW1pbGl0eS9NCmh1bW1lZApodW1tZXIvU00KaHVtbWluZwpodW1taW5nYmlyZC9TTQpodW1tb2NrL1NNCmh1bW1vY2t5Cmh1bW11cy9NCmh1bW9uZ291cwpodW1vci9TTURHCmh1bW9yZXNxdWUKaHVtb3Jpc3QvTVMKaHVtb3JsZXNzL1lQCmh1bW9ybGVzc25lc3MvTQpodW1vcm91cy9QWQpodW1vcm91c25lc3MvTQpodW1wL01EU0cKaHVtcGJhY2svTURTCmh1bXBoL0RHCmh1bXBocwpodW11cy9NCmh1bmNoL01EU0cKaHVuY2hiYWNrL1NNRApodW5kcmVkL1NNSApodW5kcmVkZm9sZApodW5kcmVkdGgvTQpodW5kcmVkdGhzCmh1bmRyZWR3ZWlnaHQvU00KaHVuZwpodW5nZXIvU01ERwpodW5nb3ZlcgpodW5ncmlseQpodW5ncmluZXNzL00KaHVuZ3J5L1BSVApodW5rL01SU1oKaHVua2VyL0RHCmh1bmt5L1JUCmh1bnQvTURSU1pHCmh1bnRlci9NCmh1bnRpbmcvTQpodW50cmVzcy9NUwpodW50c21hbi9NCmh1bnRzbWVuCmh1cmRsZS9EUlNNWkcKaHVyZGxlci9NCmh1cmRsaW5nL00KaHVybC9NRFJTWkcKaHVybGVyL00KaHVybGluZy9NCmh1cnJhaC9HTUQKaHVycmFocwpodXJyaWNhbmUvTVMKaHVycmllZC9VWQpodXJyeS9EU01HCmh1cnQvTVNHCmh1cnRmdWwvWVAKaHVydGZ1bG5lc3MvTQpodXJ0bGUvRFNHCmh1c2JhbmQvR01EUwpodXNiYW5kbWFuL00KaHVzYmFuZG1lbgpodXNiYW5kcnkvTQpodXNoL01EU0cKaHVzay9NRFJTWkcKaHVza2VyL00KaHVza2lseQpodXNraW5lc3MvTQpodXNreS9QUlNNVApodXNzYXIvU00KaHVzc3kvU00KaHVzdGluZ3MvTQpodXN0bGUvRFJTTVpHCmh1c3RsZXIvTQpodXQvU00KaHV0Y2gvTVMKaHV6emFoL01ERwpodXp6YWhzCmh3eQpoeWFjaW50aC9NCmh5YWNpbnRocwpoeWJyaWQvU00KaHlicmlkaXNtL00KaHlicmlkaXphdGlvbi9NCmh5YnJpZGl6ZS9EU0cKaHlkcmEvU00KaHlkcmFuZ2VhL1NNCmh5ZHJhbnQvTVMKaHlkcmF0ZSdzCmh5ZHJhdGUvQ0dORFMKaHlkcmF0aW9uL0NNCmh5ZHJhdWxpYy9TCmh5ZHJhdWxpY2FsbHkKaHlkcmF1bGljcy9NCmh5ZHJvL00KaHlkcm9jYXJib24vTVMKaHlkcm9jZXBoYWx1cy9NCmh5ZHJvZHluYW1pYy9TCmh5ZHJvZHluYW1pY3MvTQpoeWRyb2VsZWN0cmljCmh5ZHJvZWxlY3RyaWNhbGx5Cmh5ZHJvZWxlY3RyaWNpdHkvTQpoeWRyb2ZvaWwvTVMKaHlkcm9nZW4vTQpoeWRyb2dlbmF0ZS9DR0RTCmh5ZHJvZ2VuYXRpb24vTQpoeWRyb2dlbm91cwpoeWRyb2xvZ2lzdC9NUwpoeWRyb2xvZ3kvTQpoeWRyb2x5c2VzCmh5ZHJvbHlzaXMvTQpoeWRyb2x5emUvRFNHCmh5ZHJvbWV0ZXIvU00KaHlkcm9tZXRyeS9NCmh5ZHJvcGhvYmlhL00KaHlkcm9waG9iaWMKaHlkcm9waG9uZS9TTQpoeWRyb3BsYW5lL0dEU00KaHlkcm9wb25pYy9TCmh5ZHJvcG9uaWNhbGx5Cmh5ZHJvcG9uaWNzL00KaHlkcm9zcGhlcmUvTQpoeWRyb3RoZXJhcHkvTQpoeWRyb3VzCmh5ZHJveGlkZS9TTQpoeWVuYS9TTQpoeWdpZW5lL00KaHlnaWVuaWMvVQpoeWdpZW5pY2FsbHkKaHlnaWVuaXN0L01TCmh5Z3JvbWV0ZXIvU00KaHlpbmcKaHltZW4vU00KaHltZW5lYWwKaHltbi9NRFNHCmh5bW5hbC9NUwpoeW1uYm9vay9TTQpoeXBlL01HRFJTCmh5cGVyYWN0aXZlCmh5cGVyYWN0aXZpdHkvTQpoeXBlcmJvbGEvU00KaHlwZXJib2xlL00KaHlwZXJib2xpYwpoeXBlcmNyaXRpY2FsL1kKaHlwZXJnbHljZW1pYS9NCmh5cGVyaW5mbGF0aW9uCmh5cGVybGluay9HU01ECmh5cGVybWFya2V0L1MKaHlwZXJtZWRpYS9NCmh5cGVycGFyYXRoeXJvaWRpc20KaHlwZXJzZW5zaXRpdmUvUApoeXBlcnNlbnNpdGl2ZW5lc3MvTQpoeXBlcnNlbnNpdGl2aXR5L1NNCmh5cGVyc3BhY2UvUwpoeXBlcnRlbnNpb24vTQpoeXBlcnRlbnNpdmUvU00KaHlwZXJ0ZXh0L00KaHlwZXJ0aHlyb2lkL00KaHlwZXJ0aHlyb2lkaXNtL00KaHlwZXJ0cm9waHkvRFNNRwpoeXBlcnZlbnRpbGF0ZS9HTkRTCmh5cGVydmVudGlsYXRpb24vTQpoeXBoZW4vTURTRwpoeXBoZW5hdGUvWERTTUdOCmh5cGhlbmF0aW9uL00KaHlwbm9zZXMKaHlwbm9zaXMvTQpoeXBub3RoZXJhcGlzdC9TCmh5cG5vdGhlcmFweS9NCmh5cG5vdGljL1NNCmh5cG5vdGljYWxseQpoeXBub3Rpc20vTQpoeXBub3Rpc3QvTVMKaHlwbm90aXplL0dEUwpoeXBvL01TCmh5cG9hbGxlcmdlbmljCmh5cG9jaG9uZHJpYS9NCmh5cG9jaG9uZHJpYWMvU00KaHlwb2NyaXN5L1NNCmh5cG9jcml0ZS9NUwpoeXBvY3JpdGljYWwvWQpoeXBvZGVybWljL01TCmh5cG9nbHljZW1pYS9NCmh5cG9nbHljZW1pYy9TTQpoeXBvdGVudXNlL01TCmh5cG90aGFsYW1pCmh5cG90aGFsYW11cy9NCmh5cG90aGVybWlhL00KaHlwb3RoZXNlcwpoeXBvdGhlc2lzL00KaHlwb3RoZXNpemUvRFNHCmh5cG90aGV0aWNhbC9ZCmh5cG90aHlyb2lkL00KaHlwb3RoeXJvaWRpc20vTQpoeXNzb3AvTQpoeXN0ZXJlY3RvbXkvU00KaHlzdGVyZXNpcwpoeXN0ZXJpYS9NCmh5c3RlcmljL1NNCmh5c3RlcmljYWwvWQpoeXN0ZXJpY3MvTQppL1VTCmlQYWQvTQppUGhvbmUvTQppUG9kL00KaVR1bmVzL00KaWFtYi9NUwppYW1iaQppYW1iaWMvU00KaWFtYnVzL01TCmliZXgvTVMKaWJpZAppYmlkZW0KaWJpcy9NUwppYnVwcm9mZW4vTQppY2UncwppY2UvQ0RTRwppY2ViZXJnL1NNCmljZWJvYXQvU00KaWNlYm91bmQKaWNlYm94L01TCmljZWJyZWFrZXIvU00KaWNlY2FwL1NNCmljZW1hbi9NCmljZW1lbgppY2h0aHlvbG9naXN0L01TCmljaHRoeW9sb2d5L00KaWNpY2xlL1NNCmljaWx5CmljaW5lc3MvTQppY2luZy9TTQppY2t5L1JUCmljb24vTVMKaWNvbmljCmljb25vY2xhc20vTQppY29ub2NsYXN0L1NNCmljb25vY2xhc3RpYwppY29ub2dyYXBoeS9NCmljdHVzL00KaWN5L1RQUgppZC9TTVkKaWRlYS9NUwppZGVhbC9TTVkKaWRlYWxpc20vTQppZGVhbGlzdC9TTQppZGVhbGlzdGljCmlkZWFsaXN0aWNhbGx5CmlkZWFsaXphdGlvbi9NUwppZGVhbGl6ZS9EU0cKaWRlbQppZGVtcG90ZW50CmlkZW50aWNhbC9ZCmlkZW50aWZpYWJsZS9VCmlkZW50aWZpY2F0aW9uL00KaWRlbnRpZmllZC9VCmlkZW50aWZ5L1pHTkRSU1gKaWRlbnRpa2l0L1MKaWRlbnRpdHkvU00KaWRlb2dyYW0vU00KaWRlb2dyYXBoL00KaWRlb2dyYXBocwppZGVvbG9naWNhbC9ZCmlkZW9sb2dpc3QvU00KaWRlb2xvZ3VlL01TCmlkZW9sb2d5L1NNCmlkZXMvTQppZGlvY3kvU00KaWRpb20vU00KaWRpb21hdGljL1UKaWRpb21hdGljYWxseQppZGlvcGF0aGljCmlkaW9zeW5jcmFzeS9TTQppZGlvc3luY3JhdGljCmlkaW9zeW5jcmF0aWNhbGx5CmlkaW90L1NNCmlkaW90aWMKaWRpb3RpY2FsbHkKaWRsZS9NWlRHRFJTUAppZGxlbmVzcy9NCmlkbGVyL00KaWRvbC9NUwppZG9sYXRlci9TTQppZG9sYXRyZXNzL01TCmlkb2xhdHJvdXMKaWRvbGF0cnkvTQppZG9saXphdGlvbi9NCmlkb2xpemUvR0RTCmlkeWxsL1NNCmlkeWxsaWMKaWR5bGxpY2FsbHkKaWYvU00KaWZmaW5lc3MvTQppZmZ5L1JUUAppZ2xvby9TTQppZ25lb3VzCmlnbml0YWJsZQppZ25pdGUvQUdEUwppZ25pdGlvbi9NUwppZ25vYmxlCmlnbm9ibHkKaWdub21pbmlvdXMvWQppZ25vbWlueS9TTQppZ25vcmFtdXMvTVMKaWdub3JhbmNlL00KaWdub3JhbnQvWQppZ25vcmUvR0RTCmlndWFuYS9NUwppaQppaWkKaWxlYQppbGVpdGlzL00KaWxldW0vTQppbGlhCmlsaXVtL00KaWxrL1NNCmlsbC9TTVAKaWxsZWdhbC9NWVMKaWxsZWdhbGl0eS9TTQppbGxlZ2liaWxpdHkvTQppbGxlZ2libGUKaWxsZWdpYmx5CmlsbGVnaXRpbWFjeS9NCmlsbGVnaXRpbWF0ZS9ZCmlsbGliZXJhbC9ZCmlsbGliZXJhbGl0eS9NCmlsbGljaXQvWVAKaWxsaWNpdG5lc3MvTQppbGxpbWl0YWJsZQppbGxpdGVyYWN5L00KaWxsaXRlcmF0ZS9NWVMKaWxsbmVzcy9NUwppbGxvZ2ljYWwvWQppbGxvZ2ljYWxpdHkvTQppbGx1bWluYXRlL0dOWERTCmlsbHVtaW5hdGluZy9ZCmlsbHVtaW5hdGlvbi9NCmlsbHVtaW5lL0RTQkcKaWxsdXMvVgppbGx1c2lvbi9FTVMKaWxsdXNpb25pc3QvU00KaWxsdXNvcnkKaWxsdXN0cmF0ZS9HTlZYRFMKaWxsdXN0cmF0aW9uL00KaWxsdXN0cmF0aXZlL1kKaWxsdXN0cmF0b3IvU00KaWxsdXN0cmlvdXMvUFkKaWxsdXN0cmlvdXNuZXNzL00KaW1hZ2UvRFNNRwppbWFnZXJ5L00KaW1hZ2luYWJsZS9VCmltYWdpbmFibHkvVQppbWFnaW5hbAppbWFnaW5hcnkKaW1hZ2luYXRpb24vTVMKaW1hZ2luYXRpdmUvVVkKaW1hZ2luZS9EU0JKRwppbWFnby9NCmltYWdvZXMKaW1hbS9NUwppbWJhbGFuY2UvRFNNCmltYmVjaWxlL01TCmltYmVjaWxpYwppbWJlY2lsaXR5L1NNCmltYmliZS9aR0RSUwppbWJpYmVyL00KaW1icmljYXRpb24vTQppbWJyb2dsaW8vU00KaW1idWUvRFNHCmltaXRhYmxlL0kKaW1pdGF0ZS9EU0dOVlgKaW1pdGF0aW9uL00KaW1pdGF0aXZlL1BZCmltaXRhdGl2ZW5lc3MvTQppbWl0YXRvci9TTQppbW1hY3VsYXRlL1BZCmltbWFjdWxhdGVuZXNzL00KaW1tYW5lbmNlL00KaW1tYW5lbmN5L00KaW1tYW5lbnQvWQppbW1hdGVyaWFsL1lQCmltbWF0ZXJpYWxpdHkvTQppbW1hdGVyaWFsbmVzcy9NCmltbWF0dXJlL1kKaW1tYXR1cml0eS9NCmltbWVhc3VyYWJsZQppbW1lYXN1cmFibHkKaW1tZWRpYWNpZXMvTQppbW1lZGlhY3kvU00KaW1tZWRpYXRlL1BZCmltbWVkaWF0ZW5lc3MvTQppbW1lbW9yaWFsL1kKaW1tZW5zZS9ZCmltbWVuc2l0eS9TTQppbW1lcnNlL1hEU0dOVgppbW1lcnNpYmxlCmltbWVyc2lvbi9NCmltbWlncmFudC9TTQppbW1pZ3JhdGUvRFNHTgppbW1pZ3JhdGlvbi9NCmltbWluZW5jZS9NCmltbWluZW50L1kKaW1tb2JpbGUKaW1tb2JpbGl0eS9NCmltbW9iaWxpemF0aW9uL00KaW1tb2JpbGl6ZS9aR0RSUwppbW1vZGVyYXRlL1kKaW1tb2Rlc3QvWQppbW1vZGVzdHkvTQppbW1vbGF0ZS9EU0dOCmltbW9sYXRpb24vTQppbW1vcmFsL1kKaW1tb3JhbGl0eS9TTQppbW1vcnRhbC9NWVMKaW1tb3J0YWxpdHkvTQppbW1vcnRhbGl6ZS9EU0cKaW1tb3ZhYmlsaXR5L00KaW1tb3ZhYmxlCmltbW92YWJseQppbW11bmUKaW1tdW5pdHkvTQppbW11bml6YXRpb24vU00KaW1tdW5pemUvR0RTCmltbXVub2RlZmljaWVuY3kvTQppbW11bm9kZWZpY2llbnQKaW1tdW5vZ2xvYnVsaW4vUwppbW11bm9sb2dpYwppbW11bm9sb2dpY2FsCmltbXVub2xvZ2lzdC9NUwppbW11bm9sb2d5L00KaW1tdXJlL0RTRwppbW11dGFiaWxpdHkvTQppbW11dGFibGUKaW1tdXRhYmx5CmltcC9TTVIKaW1wYWN0L1NNREcKaW1wYWlyL1NER0wKaW1wYWlyZWQvVQppbXBhaXJtZW50L01TCmltcGFsYS9TTQppbXBhbGUvRFNHTAppbXBhbGVtZW50L00KaW1wYWxwYWJsZQppbXBhbHBhYmx5CmltcGFuZWwvU0RHCmltcGFydC9TREcKaW1wYXJ0aWFsL1kKaW1wYXJ0aWFsaXR5L00KaW1wYXNzYWJseQppbXBhc3NlL0JTTVYKaW1wYXNzaWJpbGl0eS9NCmltcGFzc2libGUKaW1wYXNzaWJseQppbXBhc3Npb25lZAppbXBhc3NpdmUvWVAKaW1wYXNzaXZlbmVzcy9NCmltcGFzc2l2aXR5L00KaW1wYXN0by9NCmltcGF0aWVuY2UvTVMKaW1wYXRpZW5zL00KaW1wYXRpZW50L1kKaW1wZWFjaC9aR0JMRFJTCmltcGVhY2hhYmxlL1UKaW1wZWFjaGVyL00KaW1wZWFjaG1lbnQvU00KaW1wZWNjYWJpbGl0eS9NCmltcGVjY2FibGUKaW1wZWNjYWJseQppbXBlY3VuaW91cy9QWQppbXBlY3VuaW91c25lc3MvTQppbXBlZGFuY2UvTQppbXBlZGUvRFNHCmltcGVkZWQvVQppbXBlZGltZW50L1NNCmltcGVkaW1lbnRhL00KaW1wZWwvUwppbXBlbGxlZAppbXBlbGxlci9NUwppbXBlbGxpbmcKaW1wZW5kL1NERwppbXBlbmV0cmFiaWxpdHkvTQppbXBlbmV0cmFibGUKaW1wZW5ldHJhYmx5CmltcGVuaXRlbmNlL00KaW1wZW5pdGVudC9ZCmltcGVyYXRpdmUvU01ZCmltcGVyY2VwdGliaWxpdHkvTQppbXBlcmNlcHRpYmxlCmltcGVyY2VwdGlibHkKaW1wZXJjZXB0aXZlCmltcGVyZgppbXBlcmZlY3QvU01ZUAppbXBlcmZlY3Rpb24vTVMKaW1wZXJmZWN0bmVzcy9NCmltcGVyaWFsL01ZUwppbXBlcmlhbGlzbS9NCmltcGVyaWFsaXN0L1NNCmltcGVyaWFsaXN0aWMKaW1wZXJpYWxpc3RpY2FsbHkKaW1wZXJpbC9HU0xECmltcGVyaWxtZW50L00KaW1wZXJpb3VzL1BZCmltcGVyaW91c25lc3MvTQppbXBlcmlzaGFibGUKaW1wZXJpc2hhYmx5CmltcGVybWFuZW5jZS9NCmltcGVybWFuZW50L1kKaW1wZXJtZWFiaWxpdHkvTQppbXBlcm1lYWJsZQppbXBlcm1lYWJseQppbXBlcm1pc3NpYmxlCmltcGVyc29uYWwvWQppbXBlcnNvbmF0ZS9HTlhEUwppbXBlcnNvbmF0aW9uL00KaW1wZXJzb25hdG9yL1NNCmltcGVydGluZW5jZS9NUwppbXBlcnRpbmVudC9ZCmltcGVydHVyYmFiaWxpdHkvTQppbXBlcnR1cmJhYmxlCmltcGVydHVyYmFibHkKaW1wZXJ2aW91cy9ZCmltcGV0aWdvL00KaW1wZXR1b3NpdHkvTQppbXBldHVvdXMvWVAKaW1wZXR1b3VzbmVzcy9NCmltcGV0dXMvTVMKaW1waWV0eS9TTQppbXBpbmdlL0xEU0cKaW1waW5nZW1lbnQvTQppbXBpb3VzL1BZCmltcGlvdXNuZXNzL00KaW1waXNoL1lQCmltcGlzaG5lc3MvTQppbXBsYWNhYmlsaXR5L00KaW1wbGFjYWJsZQppbXBsYWNhYmx5CmltcGxhbnQvQlNHTUQKaW1wbGFudGF0aW9uL00KaW1wbGF1c2liaWxpdHkvU00KaW1wbGF1c2libGUKaW1wbGF1c2libHkKaW1wbGVtZW50L0dCTURSUwppbXBsZW1lbnRhYmxlL1UKaW1wbGVtZW50YXRpb24vU00KaW1wbGVtZW50ZWQvVQppbXBsaWNhdGUvRFNHCmltcGxpY2F0aW9uL00KaW1wbGljaXQvUFkKaW1wbGljaXRuZXNzL00KaW1wbG9kZS9EU0cKaW1wbG9yZS9EU0cKaW1wbG9yaW5nL1kKaW1wbG9zaW9uL01TCmltcGxvc2l2ZQppbXBseS9YRFNHTgppbXBvbGl0ZS9ZUAppbXBvbGl0ZW5lc3MvTVMKaW1wb2xpdGljCmltcG9uZGVyYWJsZS9NUwppbXBvcnQvWkdCU01EUgppbXBvcnRhbmNlL00KaW1wb3J0YW50L1kKaW1wb3J0YXRpb24vTVMKaW1wb3J0ZXIvTQppbXBvcnR1bmF0ZS9ZCmltcG9ydHVuZS9HRFMKaW1wb3J0dW5pdHkvTQppbXBvc2UvQURTRwppbXBvc2VyL01TCmltcG9zaW5nL1UKaW1wb3NpbmdseQppbXBvc2l0aW9uL01TCmltcG9zc2liaWxpdHkvU00KaW1wb3NzaWJsZS9TCmltcG9zc2libHkKaW1wb3N0L1NNCmltcG9zdG9yL1NNCmltcG9zdHVyZS9NUwppbXBvdGVuY2UvTQppbXBvdGVuY3kvTQppbXBvdGVudC9ZCmltcG91bmQvREdTCmltcG92ZXJpc2gvRFNMRwppbXBvdmVyaXNobWVudC9NCmltcHJhY3RpY2FiaWxpdHkKaW1wcmFjdGljYWJsZQppbXByYWN0aWNhYmx5CmltcHJhY3RpY2FsL1kKaW1wcmFjdGljYWxpdHkvTQppbXByZWNhdGUvRFNYR04KaW1wcmVjYXRpb24vTQppbXByZWNpc2UvUFlOCmltcHJlY2lzZW5lc3MvTQppbXByZWNpc2lvbi9NCmltcHJlZ25hYmlsaXR5L00KaW1wcmVnbmFibGUKaW1wcmVnbmFibHkKaW1wcmVnbmF0ZS9HTkRTCmltcHJlZ25hdGlvbi9NCmltcHJlc2FyaW8vU00KaW1wcmVzcy9NRFNHVgppbXByZXNzZWQvVQppbXByZXNzaWJpbGl0eS9NCmltcHJlc3NpYmxlCmltcHJlc3Npb24vQlNNCmltcHJlc3Npb25hYmlsaXR5L00KaW1wcmVzc2lvbmlzbS9NCmltcHJlc3Npb25pc3QvU00KaW1wcmVzc2lvbmlzdGljCmltcHJlc3NpdmUvUFkKaW1wcmVzc2l2ZW5lc3MvTQppbXByaW1hdHVyL1NNCmltcHJpbnQvTURSWkdTCmltcHJpbnRlci9NCmltcHJpc29uL1NETEcKaW1wcmlzb25tZW50L1NNCmltcHJvYmFiaWxpdHkvU00KaW1wcm9iYWJsZQppbXByb2JhYmx5CmltcHJvbXB0dS9TTQppbXByb3Blci9ZCmltcHJvcHJpZXR5L1NNCmltcHJvdmUvR0JEU0wKaW1wcm92ZWQvVQppbXByb3ZlbWVudC9NUwppbXByb3ZpZGVuY2UvTQppbXByb3ZpZGVudC9ZCmltcHJvdmlzYXRpb24vU00KaW1wcm92aXNhdGlvbmFsCmltcHJvdmlzZS9aR0RSUwppbXByb3Zpc2VyL00KaW1wcnVkZW5jZS9NCmltcHJ1ZGVudC9ZCmltcHVkZW5jZS9NCmltcHVkZW50L1kKaW1wdWduL1pHU0RSCmltcHVnbmVyL00KaW1wdWxzZS9NR05WRFMKaW1wdWxzaW9uL00KaW1wdWxzaXZlL1BZCmltcHVsc2l2ZW5lc3MvTQppbXB1bml0eS9NCmltcHVyZS9SWVQKaW1wdXJpdHkvU00KaW1wdXRhdGlvbi9TTQppbXB1dGUvQkRTRwppbi9BU00KaW5hY2N1cmFjeS9TCmluYWN0aW9uL00KaW5hZGVxdWFjeS9TCmluYWR2ZXJ0ZW5jZS9NCmluYWR2ZXJ0ZW50L1kKaW5hbGllbmFiaWxpdHkvTQppbmFsaWVuYWJseQppbmFtb3JhdGEvU00KaW5hbmUvUllUCmluYW5pbWF0ZS9QWQppbmFuaW1hdGVuZXNzL00KaW5hbml0eS9TTQppbmFwcHJvcHJpYXRlL1kKaW5hcnRpY3VsYXRlL1kKaW5hc211Y2gKaW5hdWRpYmxlCmluYXVndXJhbC9TTQppbmF1Z3VyYXRlL1hHTkRTCmluYXVndXJhdGlvbi9NCmluYm9hcmQvTVMKaW5ib3VuZAppbmJveC9NUwppbmJyZWVkL1MKaW5jL1RHRAppbmNhbGN1bGFibHkKaW5jYW5kZXNjZW5jZS9NCmluY2FuZGVzY2VudC9ZCmluY2FudGF0aW9uL1NNCmluY2FwYWNpdGF0ZS9HRFMKaW5jYXJjZXJhdGUvWERTR04KaW5jYXJjZXJhdGlvbi9NCmluY2FybmFkaW5lL0RTRwppbmNhcm5hdGUvQVhHTkRTCmluY2FybmF0aW9uL0FNCmluY2VuZGlhcnkvU00KaW5jZW5zZS9NR0RTCmluY2VudGl2ZSdzCmluY2VudGl2ZS9FUwppbmNlcHRpb24vU00KaW5jZXNzYW50L1kKaW5jZXN0L00KaW5jZXN0dW91cy9QWQppbmNlc3R1b3VzbmVzcy9NCmluY2gvTURTRwppbmNob2F0ZQppbmNod29ybS9TTQppbmNpZGVuY2UvU00KaW5jaWRlbnQvU00KaW5jaWRlbnRhbC9NWVMKaW5jaW5lcmF0ZS9EU0dOCmluY2luZXJhdGlvbi9NCmluY2luZXJhdG9yL01TCmluY2lwaWVuY2UvTQppbmNpcGllbnQvWQppbmNpc2UvWEdOVkRTCmluY2lzaW9uL00KaW5jaXNpdmUvUFkKaW5jaXNpdmVuZXNzL00KaW5jaXNvci9NUwppbmNpdGVtZW50L01TCmluY2l0ZXIvTVMKaW5jbAppbmNsZW1lbnQKaW5jbGluYXRpb24vRU0KaW5jbGluYXRpb25zCmluY2xpbmUncwppbmNsaW5lL0VHRFMKaW5jbHVkZS9HRFMKaW5jbHVzaW9uL01TCmluY2x1c2l2ZS9ZUAppbmNsdXNpdmVuZXNzL00KaW5jb2duaXRvL01TCmluY29tYnVzdGlibGUKaW5jb21tb2RlL0dECmluY29tbW9kaW91cwppbmNvbW11bmljYWRvCmluY29tcGF0aWJpbGl0eS9TCmluY29tcGV0ZW50L01TCmluY29tcGxldGUvWQppbmNvbmNlaXZhYmlsaXR5L00KaW5jb25ncnVvdXMvUFkKaW5jb25ncnVvdXNuZXNzL00KaW5jb25zb2xhYmx5CmluY29uc3RhbnQvWQppbmNvbnRlc3RhYmlsaXR5L00KaW5jb250ZXN0YWJseQppbmNvbnRpbmVudAppbmNvbnRyb3ZlcnRpYmx5CmluY29udmVuaWVuY2UvR0QKaW5jb3Jwb3JhdGUvQURTR04KaW5jb3Jwb3JhdGVkL1UKaW5jb3Jwb3JhdGlvbi9BTQppbmNvcnBvcmVhbAppbmNvcnJlY3QvWQppbmNvcnJpZ2liaWxpdHkvTQppbmNvcnJpZ2libGUKaW5jb3JyaWdpYmx5CmluY29ycnVwdGlibHkKaW5jcmVhc2luZy9ZCmluY3JlbWVudC9TTUQKaW5jcmVtZW50YWwvWQppbmNyZW1lbnRhbGlzbQppbmNyZW1lbnRhbGlzdC9TTQppbmNyaW1pbmF0ZS9HTkRTCmluY3JpbWluYXRpb24vTQppbmNyaW1pbmF0b3J5CmluY3J1c3RhdGlvbi9TTQppbmN1YmF0ZS9HTkRTCmluY3ViYXRpb24vTQppbmN1YmF0b3IvU00KaW5jdWJ1cy9NUwppbmN1bGNhdGUvRFNHTgppbmN1bGNhdGlvbi9NCmluY3VscGF0ZS9EU0cKaW5jdW1iZW5jeS9TTQppbmN1bWJlbnQvU00KaW5jdW5hYnVsYQppbmN1bmFidWx1bS9NCmluY3VyL1NCCmluY3VyYWJsZS9NUwppbmN1cmFibHkKaW5jdXJpb3VzCmluY3VycmVkCmluY3VycmluZwppbmN1cnNpb24vTVMKaW5kCmluZGVidGVkL1AKaW5kZWJ0ZWRuZXNzL00KaW5kZWVkCmluZGVmYXRpZ2FibGUKaW5kZWZhdGlnYWJseQppbmRlZmVhc2libGUKaW5kZWZlYXNpYmx5CmluZGVmaW5hYmx5CmluZGVsaWJsZQppbmRlbGlibHkKaW5kZW1uaWZpY2F0aW9uL00KaW5kZW1uaWZ5L0dEU1hOCmluZGVtbml0eS9TTQppbmRlbnRhdGlvbi9NUwppbmRlbnRpb24vTQppbmRlbnR1cmUvREcKaW5kZXNjcmliYWJseQppbmRlc3RydWN0aWJseQppbmRldGVybWluYWJseQppbmRldGVybWluYWN5L00KaW5kZXRlcm1pbmF0ZS9ZCmluZGV4L1pHTURSUwppbmRleGF0aW9uL1NNCmluZGV4ZXIvTQppbmRpY2F0ZS9YRFNHTlYKaW5kaWNhdGlvbi9NCmluZGljYXRpdmUvU01ZCmluZGljYXRvci9NUwppbmRpY3QvR0RTQkwKaW5kaWN0bWVudC9TTQppbmRpZS9TCmluZGlnZW5jZS9NCmluZGlnZW5vdXMKaW5kaWdlbnQvU01ZCmluZGlnbmFudC9ZCmluZGlnbmF0aW9uL00KaW5kaWdvL00KaW5kaXJlY3QvWQppbmRpc2NpcGxpbmUKaW5kaXNjcmVldC9ZCmluZGlzY3JldGlvbi9TCmluZGlzY3JpbWluYXRlL1kKaW5kaXNwZW5zYWJpbGl0eS9NCmluZGlzcGVuc2FibGUvTVMKaW5kaXNwZW5zYWJseQppbmRpc3NvbHViaWxpdHkKaW5kaXNzb2x1Ymx5CmluZGlzdGluZ3Vpc2hhYmx5CmluZGl0ZS9HRFMKaW5kaXVtL00KaW5kaXZpZHVhbC9NWVMKaW5kaXZpZHVhbGlzbS9NCmluZGl2aWR1YWxpc3QvTVMKaW5kaXZpZHVhbGlzdGljCmluZGl2aWR1YWxpc3RpY2FsbHkKaW5kaXZpZHVhbGl0eS9NCmluZGl2aWR1YWxpemF0aW9uL00KaW5kaXZpZHVhbGl6ZS9HRFMKaW5kaXZpZHVhdGUvRFNHTgppbmRpdmlkdWF0aW9uL00KaW5kaXZpc2libHkKaW5kb2N0cmluYXRlL0dORFMKaW5kb2N0cmluYXRpb24vTQppbmRvbGVuY2UvTQppbmRvbGVudC9ZCmluZG9taXRhYmxlCmluZG9taXRhYmx5CmluZHViaXRhYmxlCmluZHViaXRhYmx5CmluZHVjZS9EUlNaR0wKaW5kdWNlbWVudC9TTQppbmR1Y2VyL00KaW5kdWN0L0RHVgppbmR1Y3RhbmNlL00KaW5kdWN0ZWUvU00KaW5kdWN0aW9uL01TCmluZHVjdGl2ZS9ZCmluZHVsZ2UvRFNHCmluZHVsZ2VuY2UvU00KaW5kdWxnZW50L1kKaW5kdXN0cmlhbC9ZCmluZHVzdHJpYWxpc20vTQppbmR1c3RyaWFsaXN0L1NNCmluZHVzdHJpYWxpemF0aW9uL00KaW5kdXN0cmlhbGl6ZS9EU0cKaW5kdXN0cmlvdXMvWVAKaW5kdXN0cmlvdXNuZXNzL00KaW5kdXN0cnkvU00KaW5kd2VsbC9TRwppbmVicmlhdGUvTUdORFMKaW5lYnJpYXRpb24vTQppbmVkaWJsZQppbmVmZmFiaWxpdHkvTQppbmVmZmFibGUKaW5lZmZhYmx5CmluZWxhc3RpYwppbmVsaWdpYmxlL01TCmluZWxpZ2libHkKaW5lbHVjdGFibGUKaW5lbHVjdGFibHkKaW5lcHQvWVAKaW5lcHRpdHVkZS9NCmluZXB0bmVzcy9NCmluZXF1YWxpdHkvUwppbmVydC9ZUAppbmVydGlhL00KaW5lcnRpYWwKaW5lcnRuZXNzL00KaW5lc2NhcGFibGUKaW5lc2NhcGFibHkKaW5lc3RpbWFibHkKaW5ldml0YWJpbGl0eS9NCmluZXZpdGFibGUvTQppbmV2aXRhYmx5CmluZXhhY3QvWQppbmV4aGF1c3RpYmx5CmluZXhvcmFiaWxpdHkKaW5leG9yYWJsZQppbmV4b3JhYmx5CmluZXhwZWRpZW50CmluZXhwZXJ0L1kKaW5leHBpYWJsZQppbmV4cGxpY2FibHkKaW5leHByZXNzaWJseQppbmV4cHJlc3NpdmUKaW5leHRyaWNhYmx5CmluZi9aVAppbmZhbGxpYmxlCmluZmFteS9TTQppbmZhbmN5L00KaW5mYW50L01TCmluZmFudGljaWRlL01TCmluZmFudGlsZQppbmZhbnRyeS9TTQppbmZhbnRyeW1hbi9NCmluZmFudHJ5bWVuCmluZmFyY3QvTVMKaW5mYXJjdGlvbi9NCmluZmF0dWF0ZS9EU1hHTgppbmZhdHVhdGlvbi9NCmluZmVjdC9BRVNERwppbmZlY3RlZC9VCmluZmVjdGlvbi9BU00KaW5mZWN0aW91cy9QWQppbmZlY3Rpb3VzbmVzcy9NCmluZmVsaWNpdG91cwppbmZlcmVuY2UvU00KaW5mZXJlbnRpYWwKaW5mZXJpb3IvTVMKaW5mZXJpb3JpdHkvTQppbmZlcm5hbC9ZCmluZmVybm8vTVMKaW5mZXJyZWQKaW5mZXJyaW5nCmluZmVzdC9HRFMKaW5mZXN0YXRpb24vTVMKaW5maWRlbC9NUwppbmZpZGVsaXR5L1MKaW5maWx0cmF0b3IvU00KaW5maW5pdGUvTVYKaW5maW5pdGVzaW1hbC9TTVkKaW5maW5pdGl2YWwKaW5maW5pdGl2ZS9NUwppbmZpbml0dWRlL00KaW5maW5pdHkvU00KaW5maXJtCmluZmlybWFyeS9TTQppbmZpcm1pdHkvU00KaW5maXgKaW5mbGFtZS9EU0cKaW5mbGFtbWFibGUKaW5mbGFtbWF0aW9uL1NNCmluZmxhbW1hdG9yeQppbmZsYXRhYmxlL1NNCmluZmxhdGUvRFNHTkIKaW5mbGF0aW9uL0VNCmluZmxhdGlvbmFyeQppbmZsZWN0L1NERwppbmZsZWN0aW9uL01TCmluZmxlY3Rpb25hbAppbmZsaWN0L1NER1YKaW5mbGljdGlvbi9NCmluZmxvdy9TTQppbmZsdWVuY2UvTUdEUwppbmZsdWVuY2VkL1UKaW5mbHVlbnRpYWwvWQppbmZsdWVuemEvTQppbmZvL00KaW5mb21lcmNpYWwvU00KaW5mb3JtL1oKaW5mb3JtYWwvWQppbmZvcm1hbnQvU00KaW5mb3JtYXRpb24vRU0KaW5mb3JtYXRpb25hbAppbmZvcm1hdGl2ZS9QWQppbmZvcm1hdGl2ZW5lc3MvTQppbmZvcm1lZC9VCmluZm90YWlubWVudC9NCmluZnJhCmluZnJhcmVkL00KaW5mcmFzb25pYwppbmZyYXN0cnVjdHVyYWwKaW5mcmFzdHJ1Y3R1cmUvU00KaW5mcmVxdWVuY2UvTQppbmZyZXF1ZW50L1kKaW5mcmluZ2VtZW50L01TCmluZnVyaWF0ZS9HRFMKaW5mdXJpYXRpbmcvWQppbmZ1c2VyL1NNCmluZ2VuaW91cy9QWQppbmdlbmlvdXNuZXNzL00KaW5nZW51ZS9TTQppbmdlbnVpdHkvTQppbmdlbnVvdXMvRVkKaW5nZW51b3VzbmVzcy9NCmluZ2VzdC9TREcKaW5nZXN0aW9uL00KaW5nbGVub29rL1NNCmluZ290L1NNCmluZ3JhaW4vRwppbmdyYXRlL1NNCmluZ3JhdGlhdGUvR05EUwppbmdyYXRpYXRpbmcvWQppbmdyYXRpYXRpb24vTQppbmdyZWRpZW50L01TCmluZ3Jlc3MvTVMKaW5ndWluYWwKaW5oYWJpdC9ERwppbmhhYml0YWJsZS9VCmluaGFiaXRhbnQvU00KaW5oYWJpdGVkL1UKaW5oYWxhbnQvU00KaW5oYWxhdGlvbi9NUwppbmhhbGF0b3IvTVMKaW5oYWxlci9TTQppbmhhcm1vbmlvdXMKaW5oZXJlL0RTRwppbmhlcmVudC9ZCmluaGVyaXQvRUdTRAppbmhlcml0YW5jZS9FTQppbmhlcml0YW5jZXMKaW5oZXJpdG9yL1NNCmluaGliaXQvR1NECmluaGliaXRpb24vU00KaW5oaWJpdG9yL1NNCmluaGliaXRvcnkKaW5odW1hbi9ZCmluaHVtYW5lL1kKaW5pbWljYWwvWQppbmltaXRhYmx5CmluaXF1aXRvdXMvWQppbmlxdWl0eS9TTQppbml0aWFsL1NHTURZCmluaXRpYWxpc20KaW5pdGlhbGl6YXRpb24KaW5pdGlhbGl6ZS9EU0cKaW5pdGlhbGl6ZWQvQVUKaW5pdGlhdGUvWE1HTlZEUwppbml0aWF0ZWQvVQppbml0aWF0aW9uL00KaW5pdGlhdGl2ZS9TTQppbml0aWF0b3IvTVMKaW5pdGlhdG9yeQppbmplY3QvU0RHCmluamVjdGlvbi9TTQppbmplY3Rvci9TTQppbmp1cmUvRFJTWkcKaW5qdXJlZC9VCmluanVyZXIvTQppbmp1cmlvdXMKaW5rL01ECmlua2Jsb3QvU00KaW5raW5lc3MvTQppbmtsaW5nL1NNCmlua3N0YW5kL1NNCmlua3dlbGwvTVMKaW5reS9SVFAKaW5sYW5kL00KaW5saW5lCmlubWF0ZS9TTQppbm1vc3QKaW5uL1NHTVJKCmlubmFyZHMvTQppbm5hdGUvUFkKaW5uYXRlbmVzcy9NCmlubmVybW9zdAppbm5lcnNvbGUvU00KaW5uZXJzcHJpbmcKaW5uZXJ2YXRlL0dORFMKaW5uZXJ2YXRpb24vTQppbm5pbmcvTQppbm5pdAppbm5rZWVwZXIvTVMKaW5ub2NlbmNlL00KaW5ub2NlbnQvTVlTCmlubm9jdW91cy9QWQppbm5vY3VvdXNuZXNzL00KaW5ub3ZhdGUvWERTR05WCmlubm92YXRpb24vTQppbm5vdmF0b3IvTVMKaW5ub3ZhdG9yeQppbm51ZW5kby9TTQppbm51bWVyYWJseQppbm51bWVyYXRlCmlub2N1bGF0ZS9BR0RTCmlub2N1bGF0aW9uL01TCmlub3BlcmF0aXZlCmlub3JkaW5hdGUvWQppbm9yZ2FuaWMKaW5xdWlyZS9aR0RSCmlucXVpcmVyL00KaW5xdWlyaW5nL1kKaW5xdWlyeS9TTQppbnF1aXNpdGlvbi9NUwppbnF1aXNpdGlvbmFsCmlucXVpc2l0aXZlL1lQCmlucXVpc2l0aXZlbmVzcy9NCmlucXVpc2l0b3IvU00KaW5xdWlzaXRvcmlhbAppbnJ1c2gvTVMKaW5zYW5lL1QKaW5zYXRpYWJpbGl0eS9NCmluc2F0aWFibHkKaW5zY3JpYmUvWkdEUgppbnNjcmliZXIvTQppbnNjcmlwdGlvbi9NUwppbnNjcnV0YWJpbGl0eS9NCmluc2NydXRhYmxlL1AKaW5zY3J1dGFibGVuZXNzL00KaW5zY3J1dGFibHkKaW5zZWFtL1NNCmluc2VjdGljaWRhbAppbnNlY3RpY2lkZS9NUwppbnNlY3Rpdm9yZS9NUwppbnNlY3Rpdm9yb3VzCmluc2VjdXJlL1kKaW5zZW1pbmF0ZS9EU0dOCmluc2VtaW5hdGlvbi9NCmluc2Vuc2F0ZQppbnNlbnNpYmxlCmluc2Vuc2l0aXZlL1kKaW5zZXBhcmFibGUvTVMKaW5zZXJ0J3MKaW5zZXJ0L0FHU0QKaW5zZXJ0aW9uL0FNCmluc2VydGlvbnMKaW5zZXR0aW5nCmluc2hvcmUKaW5zaWRlL1JTTVoKaW5zaWRlci9NCmluc2lkaW91cy9ZUAppbnNpZGlvdXNuZXNzL00KaW5zaWdodC9NUwppbnNpZ2h0ZnVsCmluc2lnbmlhL00KaW5zaW51YXRlL0dOVkRTWAppbnNpbnVhdGlvbi9NCmluc2ludWF0b3IvU00KaW5zaXBpZC9QWQppbnNpcGlkaXR5L00KaW5zaXN0L1NHRAppbnNpc3RlbmNlL00KaW5zaXN0ZW50L1kKaW5zaXN0aW5nL1kKaW5zb2ZhcgppbnNvbGUvU00KaW5zb2xlbmNlL00KaW5zb2xlbnQvWQppbnNvbHVibGUKaW5zb2x1Ymx5Cmluc29sdmVuY3kvUwppbnNvbW5pYS9NCmluc29tbmlhYy9TTQppbnNvbXVjaAppbnNvdWNpYW5jZS9NCmluc291Y2lhbnQKaW5zcGVjdC9BR0RTCmluc3BlY3Rpb24vU00KaW5zcGVjdG9yL01TCmluc3BlY3RvcmF0ZS9NUwppbnNwaXJhdGlvbi9NUwppbnNwaXJhdGlvbmFsCmluc3BpcmVkL1UKaW5zcGlyaW5nL1UKaW5zdAppbnN0YWJpbGl0eS9TCmluc3RhbGxhdGlvbi9NUwppbnN0YWxsZXIvVU1TCmluc3RhbGxtZW50L1NNCmluc3RhbmNlL0dECmluc3RhbnQvTVJZUwppbnN0YW50YW5lb3VzL1kKaW5zdGFudGlhdGUvRFNHCmluc3RhcgppbnN0YXRlL0FHRFMKaW5zdGVhZAppbnN0aWdhdGUvRFNHTgppbnN0aWdhdGlvbi9NCmluc3RpZ2F0b3IvTVMKaW5zdGlsbGF0aW9uL00KaW5zdGluY3QvVk1TCmluc3RpbmN0aXZlL1kKaW5zdGluY3R1YWwKaW5zdGl0dXRlL1hNWkdORFJTCmluc3RpdHV0ZXIvTQppbnN0aXR1dGlvbi9NCmluc3RpdHV0aW9uYWwvWQppbnN0aXR1dGlvbmFsaXphdGlvbi9NCmluc3RpdHV0aW9uYWxpemUvRFNHCmluc3RyCmluc3RydWN0L1NER1YKaW5zdHJ1Y3RlZC9VCmluc3RydWN0aW9uL01TCmluc3RydWN0aW9uYWwKaW5zdHJ1Y3RpdmUvWQppbnN0cnVjdG9yL01TCmluc3RydW1lbnQvTURTRwppbnN0cnVtZW50YWwvTVlTCmluc3RydW1lbnRhbGlzdC9TTQppbnN0cnVtZW50YWxpdHkvTQppbnN0cnVtZW50YXRpb24vTQppbnN1Ym9yZGluYXRlCmluc3VmZmVyYWJsZQppbnN1ZmZlcmFibHkKaW5zdWxhcgppbnN1bGFyaXR5L00KaW5zdWxhdGUvR05EUwppbnN1bGF0aW9uL00KaW5zdWxhdG9yL01TCmluc3VsaW4vTQppbnN1bHQvU01ERwppbnN1bHRpbmcvWQppbnN1cGVyYWJsZQppbnN1cGVyYWJseQppbnN1cmFuY2UvU00KaW5zdXJlL0RSU1pHQgppbnN1cmVkL1NNCmluc3VyZXIvTQppbnN1cmdlbmNlL1NNCmluc3VyZ2VuY3kvU00KaW5zdXJnZW50L01TCmluc3VybW91bnRhYmx5Cmluc3VycmVjdGlvbi9TTQppbnN1cnJlY3Rpb25pc3QvU00KaW50CmludGFjdAppbnRhZ2xpby9NUwppbnRlZ2VyL01TCmludGVncmFsL1NNWQppbnRlZ3JhdGUvQUVWTkdTRAppbnRlZ3JhdGlvbi9FQU0KaW50ZWdyYXRvcgppbnRlZ3JpdHkvTQppbnRlZ3VtZW50L1NNCmludGVsbGVjdC9NUwppbnRlbGxlY3R1YWwvTVlTCmludGVsbGVjdHVhbGlzbS9NCmludGVsbGVjdHVhbGl6ZS9HRFMKaW50ZWxsaWdlbmNlL00KaW50ZWxsaWdlbnQvWQppbnRlbGxpZ2VudHNpYS9NCmludGVsbGlnaWJpbGl0eS9NCmludGVsbGlnaWJsZS9VCmludGVsbGlnaWJseS9VCmludGVuZGVkL1NNCmludGVuc2UvWVRWUgppbnRlbnNpZmljYXRpb24vTQppbnRlbnNpZmllci9NCmludGVuc2lmeS9EUlNaR04KaW50ZW5zaXR5L1MKaW50ZW5zaXZlL01ZUFMKaW50ZW5zaXZlbmVzcy9NCmludGVudC9TTVlQCmludGVudGlvbi9NUwppbnRlbnRpb25hbC9VWQppbnRlbnRuZXNzL00KaW50ZXIvRVNMCmludGVyYWN0L1NHVkQKaW50ZXJhY3Rpb24vU00KaW50ZXJhY3RpdmUvWQppbnRlcmFjdGl2aXR5CmludGVyYnJlZAppbnRlcmJyZWVkL0dTCmludGVyY2VkZS9HRFMKaW50ZXJjZXB0L0dNRFMKaW50ZXJjZXB0aW9uL01TCmludGVyY2VwdG9yL1NNCmludGVyY2Vzc2lvbi9TTQppbnRlcmNlc3Nvci9NUwppbnRlcmNlc3NvcnkKaW50ZXJjaGFuZ2UvRFNNRwppbnRlcmNoYW5nZWFiaWxpdHkKaW50ZXJjaGFuZ2VhYmxlCmludGVyY2hhbmdlYWJseQppbnRlcmNpdHkKaW50ZXJjb2xsZWdpYXRlCmludGVyY29tL1NNCmludGVyY29tbXVuaWNhdGUvRFNHTgppbnRlcmNvbW11bmljYXRpb24vTQppbnRlcmNvbm5lY3QvR0RTCmludGVyY29ubmVjdGlvbi9TTQppbnRlcmNvbnRpbmVudGFsCmludGVyY291cnNlL00KaW50ZXJjdWx0dXJhbAppbnRlcmRlbm9taW5hdGlvbmFsCmludGVyZGVwYXJ0bWVudGFsCmludGVyZGVwZW5kZW5jZS9NCmludGVyZGVwZW5kZW50L1kKaW50ZXJkaWN0L0dNRFMKaW50ZXJkaWN0aW9uL00KaW50ZXJkaXNjaXBsaW5hcnkKaW50ZXJlc3QvRVNNRAppbnRlcmVzdGVkL1UKaW50ZXJlc3RpbmcvWQppbnRlcmZhY2UvTUdEUwppbnRlcmZhaXRoCmludGVyZmVyZS9HRFMKaW50ZXJmZXJlbmNlL00KaW50ZXJmZXJvbi9NCmludGVyZmlsZS9HRFMKaW50ZXJnYWxhY3RpYwppbnRlcmdvdmVybm1lbnRhbAppbnRlcmltL00KaW50ZXJpb3IvU00KaW50ZXJqCmludGVyamVjdC9HRFMKaW50ZXJqZWN0aW9uL1NNCmludGVybGFjZS9HRFMKaW50ZXJsYXJkL0RHUwppbnRlcmxlYXZlL0RTRwppbnRlcmxldWtpbi9NCmludGVybGluZS9HRFNKCmludGVybGluZWFyCmludGVybGluaW5nL00KaW50ZXJsaW5rL0RTRwppbnRlcmxvY2svR01EUwppbnRlcmxvY3V0b3IvU00KaW50ZXJsb2N1dG9yeQppbnRlcmxvcGUvWkdEUlMKaW50ZXJsb3Blci9NCmludGVybHVkZS9NR0RTCmludGVybWFycmlhZ2UvU00KaW50ZXJtYXJyeS9HRFMKaW50ZXJtZWRpYXJ5L1NNCmludGVybWVkaWF0ZS9NWVMKaW50ZXJtZW50L0VNCmludGVybWVudHMKaW50ZXJtZXp6aQppbnRlcm1lenpvL01TCmludGVybWluYWJseQppbnRlcm1pbmdsZS9EU0cKaW50ZXJtaXNzaW9uL1NNCmludGVybWl0dGVudC9ZCmludGVybWl4L0dEUwppbnRlcm4vR0RMCmludGVybmFsL1NZCmludGVybmFsaXphdGlvbi9NCmludGVybmFsaXplL0dEUwppbnRlcm5hdGlvbmFsL1NNWQppbnRlcm5hdGlvbmFsaXNtL00KaW50ZXJuYXRpb25hbGlzdC9TTQppbnRlcm5hdGlvbmFsaXphdGlvbgppbnRlcm5hdGlvbmFsaXplL0RTRwppbnRlcm5lY2luZQppbnRlcm5lZS9TTQppbnRlcm5ldAppbnRlcm5pc3QvTVMKaW50ZXJubWVudC9NCmludGVybnNoaXAvTVMKaW50ZXJvZmZpY2UKaW50ZXJwZW5ldHJhdGUvRFNHTgppbnRlcnBlcnNvbmFsCmludGVycGxhbmV0YXJ5CmludGVycGxheS9NCmludGVycG9sYXRlL1hEU0dOCmludGVycG9sYXRpb24vTQppbnRlcnBvc2UvR0RTCmludGVycG9zaXRpb24vTQppbnRlcnByZXQvQUdWRFMKaW50ZXJwcmV0YXRpb24vQU1TCmludGVycHJldGF0aXZlCmludGVycHJldGVkL1UKaW50ZXJwcmV0ZXIvTVMKaW50ZXJyYWNpYWwKaW50ZXJyZWQvRQppbnRlcnJlZ251bS9TTQppbnRlcnJlbGF0ZS9YRFNHTgppbnRlcnJlbGF0aW9uL00KaW50ZXJyZWxhdGlvbnNoaXAvTVMKaW50ZXJyaW5nL0UKaW50ZXJyb2dhdGUvRFNHTlZYCmludGVycm9nYXRpb24vTQppbnRlcnJvZ2F0aXZlL01ZUwppbnRlcnJvZ2F0b3IvU00KaW50ZXJyb2dhdG9yeS9TTQppbnRlcnJ1cHQvWkdNRFJTCmludGVycnVwdGVyL00KaW50ZXJydXB0aW9uL01TCmludGVyc2Nob2xhc3RpYwppbnRlcnNlY3QvR0RTCmludGVyc2VjdGlvbi9TTQppbnRlcnNlc3Npb24vU00KaW50ZXJzZXgKaW50ZXJzcGVyc2UvR05EUwppbnRlcnNwZXJzaW9uL00KaW50ZXJzdGF0ZS9NUwppbnRlcnN0ZWxsYXIKaW50ZXJzdGljZS9NUwppbnRlcnN0aXRpYWwKaW50ZXJ0d2luZS9HRFMKaW50ZXJ1cmJhbgppbnRlcnZhbC9TTQppbnRlcnZlbmUvR0RTCmludGVydmVudGlvbi9TTQppbnRlcnZlbnRpb25pc20vTQppbnRlcnZlbnRpb25pc3QvU00KaW50ZXJ2aWV3L1pHTURSUwppbnRlcnZpZXdlZS9NUwppbnRlcnZpZXdlci9NCmludGVydm9jYWxpYwppbnRlcndhcgppbnRlcndlYXZlL0dTCmludGVyd292ZQppbnRlcndvdmVuCmludGVzdGFjeS9NCmludGVzdGF0ZQppbnRlc3RpbmFsCmludGVzdGluZS9NUwppbnRpbWFjeS9TTQppbnRpbWF0ZS9NWUdORFNYCmludGltYXRpb24vTQppbnRpbWlkYXRlL0dORFMKaW50aW1pZGF0aW5nL1kKaW50aW1pZGF0aW9uL00KaW50b25hdGlvbi9TTQppbnRveGljYW50L1NNCmludG94aWNhdGUvRFNHTgppbnRveGljYXRpb24vTQppbnRyYWNyYW5pYWwKaW50cmFtdXJhbAppbnRyYW11c2N1bGFyCmludHJhbmV0L01TCmludHJhbnNpZ2VuY2UvTQppbnRyYW5zaWdlbnQvTVlTCmludHJhc3RhdGUKaW50cmF1dGVyaW5lCmludHJhdmVub3VzL01TWQppbnRyZXBpZC9ZCmludHJlcGlkaXR5L00KaW50cmljYWN5L1NNCmludHJpY2F0ZS9ZCmludHJpZ3VlL0RSU01aRwppbnRyaWd1ZXIvTQppbnRyaWd1aW5nL1kKaW50cmluc2ljCmludHJpbnNpY2FsbHkKaW50cm8vU00KaW50cm9kdWNlL0FHRFMKaW50cm9kdWN0aW9uL0FNCmludHJvZHVjdGlvbnMKaW50cm9kdWN0b3J5CmludHJvaXQvU00KaW50cm9zcGVjdC9HVkRTCmludHJvc3BlY3Rpb24vTQppbnRyb3NwZWN0aXZlL1kKaW50cm92ZXJzaW9uL00KaW50cm92ZXJ0L01EUwppbnRydWRlL0RSU1pHCmludHJ1ZGVyL00KaW50cnVzaW9uL1NNCmludHJ1c2l2ZS9ZUAppbnRydXNpdmVuZXNzL00KaW50dWl0L1NER1YKaW50dWl0aW9uL1MKaW50dWl0aXZlL1BZCmludHVpdGl2ZW5lc3MvTQppbnVuZGF0ZS9YRFNHTgppbnVuZGF0aW9uL00KaW51cmUvRFNHCmludmFkZS9EUlNaRwppbnZhZGVyL00KaW52YWxpZC9HTURZUwppbnZhbGlkaXNtL00KaW52YWx1YWJsZQppbnZhbHVhYmx5CmludmFyaWFudAppbnZhc2lvbi9NUwppbnZhc2l2ZQppbnZlY3RpdmUvTQppbnZlaWdoL0dECmludmVpZ2hzCmludmVpZ2xlL1pHRFJTCmludmVpZ2xlci9NCmludmVudC9BU0dWRAppbnZlbnRpb24vQU1TCmludmVudGl2ZS9QWQppbnZlbnRpdmVuZXNzL00KaW52ZW50b3IvTVMKaW52ZW50b3J5L0RTTUcKaW52ZXJzZS9TTVkKaW52ZXJ0L1NNREcKaW52ZXN0L0FTREdMCmludmVzdGlnYXRlL0dOVkRTWAppbnZlc3RpZ2F0aW9uL00KaW52ZXN0aWdhdG9yL1NNCmludmVzdGlnYXRvcnkKaW52ZXN0aXR1cmUvTVMKaW52ZXN0bWVudC9BRU0KaW52ZXN0b3IvU00KaW52ZXRlcmFjeS9NCmludmV0ZXJhdGUKaW52aWRpb3VzL1lQCmludmlkaW91c25lc3MvTQppbnZpZ2lsYXRlL0dORFMKaW52aWdpbGF0b3IvUwppbnZpZ29yYXRlL0FEU0cKaW52aWdvcmF0aW5nL1kKaW52aWdvcmF0aW9uL00KaW52aW5jaWJpbGl0eS9NCmludmluY2libHkKaW52aW9sYWJpbGl0eS9NCmludmlvbGFibHkKaW52aW9sYXRlCmludml0YXRpb24vU00KaW52aXRhdGlvbmFsL1NNCmludml0ZS9EU01HCmludml0ZWQvVQppbnZpdGVlL1NNCmludml0aW5nL1kKaW52b2tlL0RTRwppbnZvbHVudGFyaW5lc3MvTQppbnZvbHVudGFyeS9QCmludm9sdXRpb24vTQppbnZvbHZlL0xEU0cKaW52b2x2ZW1lbnQvU00KaW53YXJkL1NZCmlvY3RsCmlvZGlkZS9TTQppb2RpbmUvTQppb2RpemUvRFNHCmlvbi9VU00KaW9uaWMKaW9uaXphdGlvbi9VTQppb25pemUvVURTRwppb25pemVyL01TCmlvbm9zcGhlcmUvTVMKaW9ub3NwaGVyaWMKaW90YS9NUwppcGVjYWMvU00KaXJhc2NpYmlsaXR5L00KaXJhc2NpYmxlCmlyYXNjaWJseQppcmF0ZS9ZUAppcmF0ZW5lc3MvTQppcmUvTQppcmVmdWwKaXJlbmljCmlyaWRlcwppcmlkZXNjZW5jZS9NCmlyaWRlc2NlbnQvWQppcmlkaXVtL00KaXJpcy9NUwppcmsvU0dECmlya3NvbWUvWVAKaXJrc29tZW5lc3MvTQppcm9uL01EU0cKaXJvbmNsYWQvTVMKaXJvbmljCmlyb25pY2FsL1kKaXJvbmluZy9NCmlyb25tb25nZXIvUwppcm9ubW9uZ2VyeQppcm9uc3RvbmUvTQppcm9ud2FyZS9NCmlyb253b29kL01TCmlyb253b3JrL00KaXJvbnkvU00KaXJyYWRpYXRlL0RTR04KaXJyYWRpYXRpb24vTQppcnJhdGlvbmFsL1NNWQppcnJhdGlvbmFsaXR5L00KaXJyZWNsYWltYWJsZQppcnJlY29uY2lsYWJpbGl0eS9NCmlycmVjb25jaWxhYmxlCmlycmVjb25jaWxhYmx5CmlycmVjb3ZlcmFibGUKaXJyZWNvdmVyYWJseQppcnJlZGVlbWFibGUKaXJyZWRlZW1hYmx5CmlycmVkdWNpYmxlCmlycmVkdWNpYmx5CmlycmVmdXRhYmxlCmlycmVmdXRhYmx5CmlycmVnYXJkbGVzcwppcnJlZ3VsYXIvTVlTCmlycmVndWxhcml0eS9TTQppcnJlbGV2YW5jZS9NUwppcnJlbGV2YW5jeS9NUwppcnJlbGV2YW50L1kKaXJyZWxpZ2lvbgppcnJlbGlnaW91cwppcnJlbWVkaWFibGUKaXJyZW1lZGlhYmx5CmlycmVtb3ZhYmxlCmlycmVwYXJhYmxlCmlycmVwYXJhYmx5CmlycmVwbGFjZWFibGUKaXJyZXByZXNzaWJsZQppcnJlcHJlc3NpYmx5CmlycmVwcm9hY2hhYmxlCmlycmVwcm9hY2hhYmx5CmlycmVzaXN0aWJsZQppcnJlc2lzdGlibHkKaXJyZXNvbHV0ZS9QWU4KaXJyZXNvbHV0ZW5lc3MvTQppcnJlc29sdXRpb24vTQppcnJlc3BlY3RpdmUKaXJyZXNwb25zaWJpbGl0eS9NCmlycmVzcG9uc2libGUKaXJyZXNwb25zaWJseQppcnJldHJpZXZhYmxlCmlycmV0cmlldmFibHkKaXJyZXZlcmVuY2UvTQppcnJldmVyZW50L1kKaXJyZXZlcnNpYmxlCmlycmV2ZXJzaWJseQppcnJldm9jYWJsZQppcnJldm9jYWJseQppcnJpZ2FibGUKaXJyaWdhdGUvRFNHTgppcnJpZ2F0aW9uL00KaXJyaXRhYmlsaXR5L00KaXJyaXRhYmxlCmlycml0YWJseQppcnJpdGFudC9TTQppcnJpdGF0ZS9EU1hHTgppcnJpdGF0aW5nL1kKaXJyaXRhdGlvbi9NCmlycnVwdC9ER1ZTCmlycnVwdGlvbi9TTQppc2NoZW1pYQppc2NoZW1pYwppc2luZ2xhc3MvTQppc2wKaXNsYW5kL1NaTVIKaXNsYW5kZXIvTQppc2xlL01TCmlzbGV0L1NNCmlzbS9DTQppc21zCmlzbid0Cmlzb2Jhci9NUwppc29iYXJpYwppc29sYXRlL0RTTUdOCmlzb2xhdGlvbi9NCmlzb2xhdGlvbmlzbS9NCmlzb2xhdGlvbmlzdC9TTQppc29tZXIvTVMKaXNvbWVyaWMKaXNvbWVyaXNtL00KaXNvbWV0cmljL1MKaXNvbWV0cmljYWxseQppc29tZXRyaWNzL00KaXNvbW9ycGhpYwppc29zY2VsZXMKaXNvdGhlcm0vU00KaXNvdG9wZS9TTQppc290b3BpYwppc290cm9waWMKaXNzdWFuY2UvTQppc3N1ZS9BRFNNRwppc3N1ZXIvTVMKaXN0aG1pYW4KaXN0aG11cy9NUwppdCdkCml0J2xsCml0L1VTTQppdGFsCml0YWxpYy9TTQppdGFsaWNpemF0aW9uL00KaXRhbGljaXplL0dEUwppdGFsaWNzL00KaXRjaC9NRFNHCml0Y2hpbmVzcy9NCml0Y2h5L1JQVAppdGVtL01TCml0ZW1pemF0aW9uL00KaXRlbWl6ZS9HRFMKaXRlcmF0ZS9BWEdOVkRTCml0ZXJhdGlvbi9BTQppdGVyYXRvci9TCml0aW5lcmFudC9TTQppdGluZXJhcnkvU00KaXRzZWxmCml2L1UKaXZvcnkvU00KaXZ5L0RTTQppeApqL0YKamFiL1NNCmphYmJlZApqYWJiZXIvU01EUlpHCmphYmJlcmVyL00KamFiYmluZwpqYWJvdC9TTQpqYWNhcmFuZGEvTVMKamFjay9NREdTCmphY2thbC9TTQpqYWNrYXNzL01TCmphY2tib290L1NNRApqYWNrZGF3L01TCmphY2tldC9TTUQKamFja2hhbW1lci9NUwpqYWNra25pZmUvTUdEUwpqYWNra25pdmVzCmphY2twb3QvTVMKamFja3JhYmJpdC9NUwpqYWNrc3RyYXcvTVMKamFjcXVhcmQvTQpqYWRlL01HRFMKamFkZWQvUFkKamFkZWRuZXNzL00KamFkZWl0ZS9NCmphZy9TTQpqYWdnZWQvVFBSWQpqYWdnZWRuZXNzL00KamFnZ2llcwpqYWd1YXIvU00KamFpbC9NRFJaR1MKamFpbGJpcmQvU00KamFpbGJyZWFrL1NNCmphaWxlci9NCmphaWxob3VzZS9TCmphbGFwZW5vL01TCmphbG9weS9TTQpqYWxvdXNpZS9NUwpqYW0vU00KamFtYi9NUwpqYW1iYWxheWEvTQpqYW1ib3JlZS9NUwpqYW1tZWQKamFtbWluZwpqYW1teS9SVApqYW5nbGUvRFJTTVpHCmphbmdsZXIvTQpqYW5pdG9yL1NNCmphbml0b3JpYWwKamFwYW4vU00KamFwYW5uZWQKamFwYW5uaW5nCmphcGUvTUdEUwpqYXIvU00KamFyZGluaWVyZS9TTQpqYXJmdWwvTVMKamFyZ29uL00KamFycmVkCmphcnJpbmcvWQpqYXNtaW5lL1NNCmphc3Blci9NCmphdG8vTVMKamF1bmRpY2UvRFNNRwpqYXVudC9TR01ECmphdW50aWx5CmphdW50aW5lc3MvTQpqYXVudHkvUlBUCmphdmEvTQpqYXZlbGluL1NNCmphdy9TR01ECmphd2JvbmUvRFNNRwpqYXdicmVha2VyL01TCmphd2xpbmUvUwpqYXkvU00KamF5YmlyZC9TTQpqYXl3YWxrL0RSU1pHCmpheXdhbGtlci9NCmpheXdhbGtpbmcvTQpqYXp6L01EU0cKamF6enkvVFIKamN0CmplYWxvdXMvWQpqZWFsb3VzeS9TTQpqZWFuL01TCmplYW5zL00KamVlcC9NUwpqZWVyL01EU0cKamVlcmluZy9NWQpqZWV6CmplanVuYQpqZWp1bmUKamVqdW51bS9NCmplbGwvRFNHCmplbGxvL1MKamVsbHkvR0RTTQpqZWxseWJlYW4vTVMKamVsbHlmaXNoL01TCmplbGx5bGlrZQpqZWxseXJvbGwvU00KamVtbXkvR0RTCmplbm5ldC9NUwpqZW5ueS9TTQpqZW9wYXJkaXplL0dEUwpqZW9wYXJkeS9NCmplcmVtaWFkL01TCmplcmsvTURTRwpqZXJraWx5Cmplcmtpbi9NUwpqZXJraW5lc3MvTQpqZXJrd2F0ZXIKamVya3kvVFJNUApqZXJvYm9hbS9TCmplcnJ5YnVpbHQKamVycnljYW4vUwpqZXJzZXkvTVMKamVzdC9NRFJTWkcKamVzdGVyL00KamVzdGluZy9ZCmpldC9TTQpqZXRsaW5lci9TTQpqZXRwb3J0L01TCmpldHNhbS9NCmpldHRlZApqZXR0aW5nCmpldHRpc29uL01EU0cKamV0dHkvU00KamV3Cmpld2VsL1NaR01EUgpqZXdlbGVyL00KamV3ZWxyeS9TTQpqZwpqaWIvU0dNRApqaWJiZWQKamliYmluZwpqaWJlL01TCmppZmYvTVMKamlmZnkvU00KamlnJ3MKamlnL0FTCmppZ2dlZC9BCmppZ2dlcidzCmppZ2dlci9BU0RHCmppZ2dpbmcvQQpqaWdnbGUvRFNNRwpqaWdnbHkKamlnc2F3L1NNREcKamloYWQvU00KamloYWRpc3QvU00KamlsdC9NRFNHCmppbW15L0RTTUcKamltc29ud2VlZC9NCmppbmdsZS9EU01HCmppbmdseQpqaW5nb2lzbS9NCmppbmdvaXN0L1NNCmppbmdvaXN0aWMKamluay9EU0cKamlubgpqaW5uaS9NCmppbnJpa2lzaGEvU00KamlueC9NRFNHCmppdG5leS9TTQpqaXR0ZXJidWcvTVMKaml0dGVyYnVnZ2VkCmppdHRlcmJ1Z2dlci9NCmppdHRlcmJ1Z2dpbmcKaml0dGVycy9NCmppdHRlcnkvUlQKaml2ZS9NR0RTCmpvYi9TTQpqb2JiZWQKam9iYmVyL1NNCmpvYmJpbmcKam9iaG9sZGVyL01TCmpvYmxlc3MvUApqb2JsZXNzbmVzcy9NCmpvYnNoYXJlL1MKam9ic3dvcnRoCmpvYnN3b3J0aHMKam9jay9NUwpqb2NrZXkvU0dNRApqb2Nrc3RyYXAvTVMKam9jb3NlL1BZCmpvY29zZW5lc3MvTQpqb2Nvc2l0eS9NCmpvY3VsYXIvWQpqb2N1bGFyaXR5L00Kam9jdW5kL1kKam9jdW5kaXR5L00Kam9kaHB1cnMvTQpqb2V5L1MKam9nL1NNCmpvZ2dlZApqb2dnZXIvU00Kam9nZ2luZy9NCmpvZ2dsZS9EU01HCmpvaG4vTVMKam9obm55L1NNCmpvaG5ueWNha2UvTVMKam9pbidzCmpvaW4vQUZEU0cKam9pbmVyL0ZNUwpqb2luZXJ5L00Kam9pbnQncwpqb2ludC9FR1NECmpvaW50bHkvRgpqb2lzdC9TTQpqb2pvYmEKam9rZS9NWkdEUlMKam9rZXIvTQpqb2tleQpqb2tpZXIKam9raWVzdApqb2tpbmcvWQpqb2xsaWZpY2F0aW9uL1NNCmpvbGxpbHkKam9sbGluZXNzL00Kam9sbGl0eS9NCmpvbGx5L1RHUERSU00Kam9sdC9NRFJTWkcKam9sdGVyL00Kam9ucXVpbC9TTQpqb3NoL01EUlNaRwpqb3NoZXIvTQpqb3N0bGUvTUdEUwpqb3QvU00Kam90dGVkCmpvdHRlci9NUwpqb3R0aW5nL01TCmpvdWxlL1NNCmpvdW5jZS9NR0RTCmpvdW5jeQpqb3VybmFsL01TCmpvdXJuYWxlc2UvTQpqb3VybmFsaXNtL00Kam91cm5hbGlzdC9TTQpqb3VybmFsaXN0aWMKam91cm5leS9aR01EUlMKam91cm5leWVyL00Kam91cm5leW1hbi9NCmpvdXJuZXltZW4Kam91cm5vL1MKam91c3QvU1pHTURSCmpvdXN0ZXIvTQpqb3VzdGluZy9NCmpvdmlhbC9ZCmpvdmlhbGl0eS9NCmpvd2wvTVMKam93bHkvVFIKam95L1NHTUQKam95ZnVsL1lQCmpveWZ1bGxlcgpqb3lmdWxsZXN0CmpveWZ1bG5lc3MvTQpqb3lsZXNzL1BZCmpveWxlc3NuZXNzL00Kam95b3VzL1lQCmpveW91c25lc3MvTQpqb3lyaWRkZW4Kam95cmlkZS9SU01aRwpqb3lyaWRlci9NCmpveXJpZGluZy9NCmpveXJvZGUKam95c3RpY2svU00KanIKanViaWxhbnQvWQpqdWJpbGF0aW9uL00KanViaWxlZS9TTQpqdWRkZXIvR0RTCmp1ZGdlJ3MKanVkZ2UvQURTRwpqdWRnZXNoaXAvTQpqdWRnbWVudC9TTQpqdWRnbWVudGFsL1kKanVkaWNhdG9yeS9TTQpqdWRpY2F0dXJlL00KanVkaWNpYWwvWQpqdWRpY2lhcnkvU00KanVkaWNpb3VzL0lZUApqdWRpY2lvdXNuZXNzL0lNCmp1ZG8vTQpqdWcvU00KanVnZnVsL01TCmp1Z2dlZApqdWdnZXJuYXV0L1NNCmp1Z2dpbmcKanVnZ2xlL01aR0RSUwpqdWdnbGVyL00KanVnZ2xlcnkvTQpqdWd1bGFyL1NNCmp1aWNlL0RSU01aRwpqdWljZXIvTQpqdWljaWx5Cmp1aWNpbmVzcy9NCmp1aWN5L1BUUgpqdWppdHN1L00KanVqdWJlL01TCmp1a2Vib3gvTVMKanVsZXAvU00KanVsaWVubmUKanVtYmxlL01HRFMKanVtYm8vU00KanVtcC9NRFJTWkcKanVtcGVyL00KanVtcGlseQpqdW1waW5lc3MvTQpqdW1wc3VpdC9NUwpqdW1weS9UUlAKanVuCmp1bmNvL1NNCmp1bmN0aW9uL0ZJU00KanVuY3R1cmUvRk1TCmp1bmdsZS9NUwpqdW5pb3IvTVMKanVuaXBlci9TTQpqdW5rL01EUlNaRwpqdW5rZXIvTQpqdW5rZXQvTURTRwpqdW5rZXRlZXIvTVMKanVua2llL01UUlMKanVua3lhcmQvTVMKanVudGEvU00KanVyaWRpYwpqdXJpZGljYWwvWQpqdXJpc2RpY3Rpb24vU00KanVyaXNkaWN0aW9uYWwKanVyaXNwcnVkZW5jZS9NCmp1cmlzdC9NUwpqdXJpc3RpYwpqdXJvci9TTQpqdXJ5L0lTTQpqdXJ5bWFuL00KanVyeW1lbgpqdXJ5d29tYW4vTQpqdXJ5d29tZW4KanVzdC9SWVBUCmp1c3RpY2UvSU1TCmp1c3RpZmlhYmxlL1UKanVzdGlmaWFibHkvVQpqdXN0aWZpY2F0aW9uL00KanVzdGlmaWVkL1UKanVzdGlmeS9YR0RTTgpqdXN0bmVzcy9NCmp1dC9TTQpqdXRlL00KanV0dGVkCmp1dHRpbmcKanV2ZW5pbGUvU00KanV4dGFwb3NlL0RTRwpqdXh0YXBvc2l0aW9uL1NNCmsvSUZHUwprSHoKa1cKa1doCmthYmJhbGFoCmthYm9vbQprYWJ1a2kvTQprYWRkaXNoL01TCmthZmZlZWtsYXRjaC9NUwprYWZmZWVrbGF0c2NoL01TCmthaHVuYS9TCmthaXNlci9NUwprYWxlL00Ka2FsZWlkb3Njb3BlL01TCmthbGVpZG9zY29waWMKa2FsZWlkb3Njb3BpY2FsbHkKa2FtaWthemUvTVMKa2FuYQprYW5nYXJvby9NUwprYW5qaQprYW9saW4vTQprYXBvay9NCmthcHBhL1NNCmthcHV0CmthcmFrdWwvTQprYXJhb2tlL01TCmthcmF0L1NNCmthcmF0ZS9NCmthcm1hL00Ka2FybWljCmthcnQvTVMKa2F0YWthbmEKa2F0eWRpZC9TTQprYXlhay9TTURHCmtheWFraW5nL00Ka2F5by9NRFNHCmthem9vL1NNCmtjCmtlYmFiL1NNCmtlZGdlcmVlCmtlZWwvTURTRwprZWVsaGF1bC9ER1MKa2Vlbi9NRFJZU1RHUAprZWVubmVzcy9NCmtlZXAvTVJTWkcKa2VlcGVyL00Ka2VlcGluZy9NCmtlZXBzYWtlL01TCmtlZy9TTQprZWxwL00Ka2VsdmluL1NNCmtlbi9TTQprZW5uZWQKa2VubmVsL1NHTUQKa2VubmluZwprZW5vL00Ka2VwaS9NUwprZXB0CmtlcmF0aW4vTQprZXJhdGl0aXMKa2VyYnNpZGUKa2VyY2hpZWYvU00Ka2VyZnVmZmxlL1MKa2VybmVsL1NNCmtlcm9zZW5lL00Ka2VzdHJlbC9NUwprZXRjaC9NUwprZXRjaHVwL00Ka2V0dGxlL1NNCmtldHRsZWRydW0vU00Ka2V5L1NHTUQKa2V5YmluZGluZy9TCmtleWJvYXJkL1pHU01EUgprZXlib2FyZGVyL00Ka2V5Ym9hcmRpc3QvU00Ka2V5aG9sZS9NUwprZXlub3RlL01aR0RSUwprZXlub3Rlci9NCmtleXBhZC9TTQprZXlwdW5jaC9aR01EUlMKa2V5cHVuY2hlci9NCmtleXN0b25lL01TCmtleXN0cm9rZS9TTQprZXl3b3JkL01TCmtnCmtoYWtpL1NNCmtoYW4vTVMKa2liYmxlL0RTTUcKa2liYnV0ei9NUwpraWJidXR6aW0Ka2liaXR6L1pHRFJTCmtpYml0emVyL00Ka2lib3NoL00Ka2ljay9NRFJTWkcKa2lja2JhY2svU00Ka2lja2JhbGwvTQpraWNrYm94aW5nCmtpY2tlci9NCmtpY2tvZmYvTVMKa2lja3N0YW5kL01TCmtpY2t5L1JUCmtpZC9TTQpraWRkZWQKa2lkZGVyL1NNCmtpZGRpZS9TTQpraWRkaW5nCmtpZGRpc2gKa2lkZG8vU00Ka2lkbmFwL1MKa2lkbmFwcGVkCmtpZG5hcHBlci9NUwpraWRuYXBwaW5nL01TCmtpZG5leS9TTQpraWRza2luL00Ka2llbGJhc2EvTVMKa2llbGJhc2kKa2lrZS9TCmtpbGwvSk1EUlNaRwpraWxsZGVlci9TTQpraWxsZXIvTQpraWxsaW5nL00Ka2lsbGpveS9TTQpraWxuL01EU0cKa2lsby9NUwpraWxvYnl0ZS9TTQpraWxvY3ljbGUvU00Ka2lsb2dyYW0vU00Ka2lsb2hlcnR6L00Ka2lsb2xpdGVyL01TCmtpbG9tZXRlci9NUwpraWxvdG9uL1NNCmtpbG93YXR0L1NNCmtpbHQvTURSUwpraWx0ZXIvTQpraW1vbm8vTVMKa2luL00Ka2luYXNlCmtpbmQncwpraW5kL1VQUllUCmtpbmRhCmtpbmRlcmdhcnRlbi9NUwpraW5kZXJnYXJ0bmVyL1NNCmtpbmRoZWFydGVkL1BZCmtpbmRoZWFydGVkbmVzcy9NCmtpbmRsZS9BR0RTCmtpbmRsaW5lc3MvTQpraW5kbGluZy9NCmtpbmRseS9VUlQKa2luZG5lc3MvVU0Ka2luZG5lc3NlcwpraW5kcmVkL00Ka2luZHMKa2luZS9TCmtpbmVtYXRpYy9TCmtpbmVtYXRpY3MvTQpraW5ldGljL1MKa2luZXRpY2FsbHkKa2luZXRpY3MvTQpraW5mb2xrL1NNCmtpbmZvbGtzL00Ka2luZy9NWVMKa2luZ2RvbS9TTQpraW5nZmlzaGVyL1NNCmtpbmdseS9SVApraW5nbWFrZXIvUwpraW5ncGluL1NNCmtpbmdzaGlwL00Ka2luay9NRFNHCmtpbmtpbHkKa2lua2luZXNzL00Ka2lua3kvVFBSCmtpbnNmb2xrL00Ka2luc2hpcC9NCmtpbnNtYW4vTQpraW5zbWVuCmtpbnN3b21hbi9NCmtpbnN3b21lbgpraW9zay9TTQpraXAvU00Ka2lwcGVkCmtpcHBlci9NREdTCmtpcHBpbmcKa2lyc2NoL01TCmtpc21ldC9NCmtpc3MvTURSU0JaRwpraXNzZXIvTQpraXNzb2ZmL1NNCmtpc3NvZ3JhbS9TCmtpdC9TR01ECmtpdGNoZW4vU00Ka2l0Y2hlbmV0dGUvTVMKa2l0Y2hlbndhcmUvTQpraXRlL01TCmtpdGgvTQpraXRzY2gvTQpraXRzY2h5CmtpdHRlZApraXR0ZW4vTVMKa2l0dGVuaXNoCmtpdHRpbmcKa2l0dHkvU00Ka2l3aS9NUwpraXdpZnJ1aXQvTVMKa2wKa2xheG9uL1MKa2xlcHRvY3JhY3kKa2xlcHRvbWFuaWEvTQprbGVwdG9tYW5pYWMvU00Ka2x1ZGdlL0dEUwprbHVnZS9EUwprbHV0ei9NUwprbHV0emluZXNzL00Ka2x1dHp5L1RSUAprbQprbgprbmFjay9TWk1SCmtuYWNrZXIvR0QKa25hcHNhY2svTVMKa25hdmUvU00Ka25hdmVyeS9NCmtuYXZpc2gvWQprbmVhZC9TWkdEUgprbmVhZGVyL00Ka25lZS9NRFMKa25lZWNhcC9TTQprbmVlY2FwcGVkCmtuZWVjYXBwaW5nCmtuZWVpbmcKa25lZWwvU0cKa25lbGwvU0dNRAprbmVsdAprbmV3CmtuaWNrZXIvUwprbmlja2VyYm9ja2Vycy9NCmtuaWNrZXJzL00Ka25pY2trbmFjay9NUwprbmlmZS9EU01HCmtuaWdodC9NRFlTRwprbmlnaHRob29kL01TCmtuaWdodGxpbmVzcy9NCmtuaXNoL01TCmtuaXQvTVMKa25pdHRlZAprbml0dGVyL1NNCmtuaXR0aW5nL00Ka25pdHdlYXIvTQprbml2ZXMKa25vYi9NUwprbm9iYmx5Cmtub2JieS9UUgprbm9jay9TWkdNRFIKa25vY2thYm91dAprbm9ja2Rvd24vU00Ka25vY2tlci9NCmtub2Nrb2ZmL1NNCmtub2Nrb3V0L1NNCmtub2Nrd3Vyc3QvU00Ka25vbGwvU00Ka25vdC9NUwprbm90aG9sZS9TTQprbm90dGVkCmtub3R0aW5nCmtub3R0eS9UUgprbm93L1NCCmtub3dpbmcvVVlTCmtub3dsZWRnZS9NCmtub3dsZWRnZWFibGUKa25vd2xlZGdlYWJseQprbm93bgprbnVja2xlL0RTTUcKa251Y2tsZWR1c3Rlci9TCmtudWNrbGVoZWFkL01TCmtudXJsL1NHTUQKa29hbGEvU00Ka29hbi9TCmtvaGwKa29obHJhYmkvTQprb2hscmFiaWVzCmtvbGEvTVMKa29vay9NUwprb29rYWJ1cnJhL1NNCmtvb2tpbmVzcy9NCmtvb2t5L1RQUgprb3BlY2svTVMKa29ybWEKa29zaGVyL0RTRwprb3d0b3cvR01EUwprcGgKa3JhYWwvU00Ka3JhdXQvU00hCmtyaWxsL00Ka3JvbmEvTQprcm9uZS9STQprcm9ub3IKa3JvbnVyCmtyeXB0b24vTQprdAprdWNoZW4vU00Ka3Vkb3MvTQprdWR6dS9TTQprdW1xdWF0L01TCmt2ZXRjaC9aR01EUlMKa3ZldGNoZXIvTQprdwpsL1NEWFRHSgpsYS9NCmxhYi9TTQpsYWJlbCdzCmxhYmVsL0FTREcKbGFiZWxlZC9VCmxhYmlhCmxhYmlhbC9TTQpsYWJpbGUKbGFiaXVtL00KbGFib3IvU01EUlpHCmxhYm9yYXRvcnkvU00KbGFib3Jlci9NCmxhYm9yaW91cy9QWQpsYWJvcmlvdXNuZXNzL00KbGFib3JzYXZpbmcKbGFidXJudW0vTVMKbGFieXJpbnRoL00KbGFieXJpbnRoaW5lCmxhYnlyaW50aHMKbGFjL00KbGFjZSdzCmxhY2UvVUdEUwpsYWNlcmF0ZS9EU0dOWApsYWNlcmF0aW9uL00KbGFjZXdpbmcvU00KbGFjZXdvcmsvTQpsYWNocnltYWwKbGFjaHJ5bW9zZQpsYWNrL01EU0cKbGFja2FkYWlzaWNhbC9ZCmxhY2tleS9TTQpsYWNrbHVzdGVyCmxhY29uaWMKbGFjb25pY2FsbHkKbGFjcXVlci9HTURTCmxhY3Jvc3NlL00KbGFjdGF0ZS9HTkRTCmxhY3RhdGlvbi9NCmxhY3RlYWwKbGFjdGljCmxhY3Rvc2UvTQpsYWN1bmEvTQpsYWN1bmFlCmxhY3kvUlQKbGFkL1NHTUROSgpsYWRkZXIvR1NNRApsYWRkaWUvU00KbGFkZGlzaC9QCmxhZGUvUwpsYWRlbi9VCmxhZGluZy9NCmxhZGxlL0RTTUcKbGFkeS9TTQpsYWR5YmlyZC9TTQpsYWR5YnVnL01TCmxhZHlmaW5nZXIvTVMKbGFkeWxpa2UvVQpsYWR5bG92ZS9NUwpsYWR5c2hpcC9NUwpsYWV0cmlsZS9NCmxhZy9TWk1SCmxhZ2VyL00KbGFnZ2FyZC9NWVMKbGFnZ2VkCmxhZ2dpbmcvTQpsYWduaWFwcGUvU00KbGFnb29uL1NNCmxhaWQvSUEKbGFpbgpsYWlyL01TCmxhaXJkL1NNCmxhaXR5L00KbGFrZS9NUwpsYWtlZnJvbnQvUwpsYWtlc2lkZQpsYW0vU00KbGFtYS9NUwpsYW1hc2VyeS9TTQpsYW1iL01EU0cKbGFtYmFkYS9NUwpsYW1iYXN0ZS9HRFMKbGFtYmRhL1NNCmxhbWJlbmN5L00KbGFtYmVudC9ZCmxhbWJraW4vU00KbGFtYnNraW4vU00KbGFtYnN3b29sCmxhbWUvTVlaVEdEUlNQCmxhbWVicmFpbi9NRFMKbGFtZW5lc3MvTQpsYW1lbnQvQlNNREcKbGFtZW50YWJseQpsYW1lbnRhdGlvbi9NUwpsYW1pbmEvTQpsYW1pbmFlCmxhbWluYXIKbGFtaW5hdGUvTUdORFMKbGFtaW5hdGlvbi9NCmxhbW1lZApsYW1taW5nCmxhbXAvTVMKbGFtcGJsYWNrL00KbGFtcGxpZ2h0L01SWgpsYW1wbGlnaHRlci9NCmxhbXBvb24vU0dNRApsYW1wcG9zdC9TTQpsYW1wcmV5L01TCmxhbXBzaGFkZS9TTQpsYW5haS9TTQpsYW5jZS9EUlNNWkcKbGFuY2VyL00KbGFuY2V0L1NNCmxhbmQvTURSU0dKCmxhbmRhdS9TTQpsYW5kZmFsbC9NUwpsYW5kZmlsbC9NUwpsYW5kaG9sZGVyL1NNCmxhbmRob2xkaW5nL01TCmxhbmRpbmcvTQpsYW5kbGFkeS9TTQpsYW5kbGVzcy9NCmxhbmRsaW5lL01TCmxhbmRsb2NrZWQKbGFuZGxvcmQvTVMKbGFuZGx1YmJlci9NUwpsYW5kbWFyay9NUwpsYW5kbWFzcy9NUwpsYW5kbWluZS9TCmxhbmRvd25lci9NUwpsYW5kb3duZXJzaGlwCmxhbmRvd25pbmcvU00KbGFuZHNjYXBlL01aR0RSUwpsYW5kc2NhcGVyL00KbGFuZHNsaWQKbGFuZHNsaWRlL01HUwpsYW5kc2xpcC9TCmxhbmRzbWFuL00KbGFuZHNtZW4KbGFuZHdhcmQvUwpsYW5lL01TCmxhbmd1YWdlL01TCmxhbmd1aWQvUFkKbGFuZ3VpZG5lc3MvTQpsYW5ndWlzaC9EU0cKbGFuZ3Vvci9TTQpsYW5ndW9yb3VzL1kKbGFuay9SWVRQCmxhbmtpbmVzcy9NCmxhbmtuZXNzL00KbGFua3kvUlRQCmxhbm9saW4vTQpsYW50ZXJuL01TCmxhbnRoYW51bS9NCmxhbnlhcmQvTVMKbGFwL1NNCmxhcGFyb3Njb3BpYwpsYXBhcm9zY29weQpsYXBhcm90b215CmxhcGJvYXJkL1NNCmxhcGRvZy9TTQpsYXBlbC9TTQpsYXBpZGFyeS9TTQpsYXBpbi9TTQpsYXBwZWQKbGFwcGV0L1NNCmxhcHBpbmcKbGFwc2UvQUtHTVNECmxhcHRvcC9TTQpsYXB3aW5nL01TCmxhcmJvYXJkL1NNCmxhcmNlbmlzdC9TTQpsYXJjZW5vdXMKbGFyY2VueS9TTQpsYXJjaC9NUwpsYXJkL01EUlNaRwpsYXJkZXIvTQpsYXJkeS9SVApsYXJnZS9SU1BNWVQKbGFyZ2VoZWFydGVkCmxhcmdlbmVzcy9NCmxhcmdlc3MvTQpsYXJnaXNoCmxhcmdvL1NNCmxhcmlhdC9TTQpsYXJrL01EU0cKbGFya3NwdXIvU00KbGFydmEvTQpsYXJ2YWUKbGFydmFsCmxhcnluZ2VhbApsYXJ5bmdlcwpsYXJ5bmdpdGlzL00KbGFyeW54L00KbGFzYWduYS9NUwpsYXNjaXZpb3VzL1lQCmxhc2NpdmlvdXNuZXNzL00KbGFzZS9aR0RSUwpsYXNlci9NCmxhc2gvTURTR0oKbGFzaGluZy9NCmxhc3MvTVMKbGFzc2llL1NNCmxhc3NpdHVkZS9NCmxhc3NvL1NNREcKbGFzdC9NRFlTRwpsYXN0aW5nL1kKbGF0L1MKbGF0Y2gncwpsYXRjaC9VRFNHCmxhdGNoa2V5L1NNCmxhdGUvWVRSUApsYXRlY29tZXIvTVMKbGF0ZW5jeS9NCmxhdGVuZXNzL00KbGF0ZW50CmxhdGVyYWwvTURZU0cKbGF0ZXN0L00KbGF0ZXgvTQpsYXRoL01EUlNaRwpsYXRoZS9NCmxhdGhlci9HTUQKbGF0aGVyeQpsYXRocwpsYXRpY2VzCmxhdGlzaApsYXRpdHVkZS9NUwpsYXRpdHVkaW5hbApsYXRpdHVkaW5hcmlhbi9NUwpsYXRyaW5lL01TCmxhdHRlL1JTTQpsYXR0ZXIvTVkKbGF0dGljZS9NRFMKbGF0dGljZXdvcmsvU00KbGF1ZC9NRFNHQgpsYXVkYWJseQpsYXVkYW51bS9NCmxhdWRhdG9yeQpsYXVnaC9CTURHCmxhdWdoYWJseQpsYXVnaGluZy9NWQpsYXVnaGluZ3N0b2NrL1NNCmxhdWdocwpsYXVnaHRlci9NCmxhdW5jaC9BR01EUwpsYXVuY2hlci9TTQpsYXVuY2hwYWQvU00KbGF1bmRlci9EUlpHUwpsYXVuZGVyZXIvTQpsYXVuZGVyZXR0ZS9TTQpsYXVuZHJlc3MvTVMKbGF1bmRyb21hdC9NUwpsYXVuZHJ5L1NNCmxhdW5kcnltYW4vTQpsYXVuZHJ5bWVuCmxhdW5kcnl3b21hbi9NCmxhdW5kcnl3b21lbgpsYXVyZWF0ZS9NUwpsYXVyZWF0ZXNoaXAvTQpsYXVyZWwvU00KbGF2L1NHRApsYXZhL00KbGF2YWdlL00KbGF2YWxpZXJlL1NNCmxhdmF0b3JpYWwKbGF2YXRvcnkvU00KbGF2ZS9TCmxhdmVuZGVyL1NNCmxhdmlzaC9QVEdEUlNZCmxhdmlzaG5lc3MvTQpsYXcvU00KbGF3YnJlYWtlci9TTQpsYXdicmVha2luZy9NCmxhd2Z1bC9VUFkKbGF3ZnVsbmVzcy9VTQpsYXdnaXZlci9NUwpsYXdsZXNzL1BZCmxhd2xlc3NuZXNzL00KbGF3bWFrZXIvTVMKbGF3bWFraW5nL00KbGF3bWFuL00KbGF3bWVuCmxhd24vTVMKbGF3bm1vd2VyL1NNCmxhd3JlbmNpdW0vTQpsYXdzdWl0L01TCmxhd3llci9TTQpsYXgvVFJZUApsYXhhdGl2ZS9NUwpsYXhpdHkvTQpsYXhuZXNzL00KbGF5L0FJQ1NHTQpsYXlhYm91dC9TCmxheWF3YXkvTQpsYXllci9DU00KbGF5ZXJlZApsYXllcmluZy9NCmxheWV0dGUvTVMKbGF5bWFuL00KbGF5bWVuCmxheW9mZi9TTQpsYXlvdXQvU00KbGF5b3Zlci9NUwpsYXlwZW9wbGUKbGF5cGVyc29uL01TCmxheXVwL1NNCmxheXdvbWFuL00KbGF5d29tZW4KbGF6ZS9NR0RTCmxhemlseQpsYXppbmVzcy9NCmxhenkvRFJTVEdQCmxhenlib25lcy9NCmxiL1MKbGJ3CmxlYS9TTQpsZWFjaC9EU0cKbGVhZC9NRE5SU1pHCmxlYWRlci9NCmxlYWRlcmxlc3MKbGVhZGVyc2hpcC9TTQpsZWFkaW5nL00KbGVhZi9NRFNHCmxlYWZhZ2UvTQpsZWFmbGVzcwpsZWFmbGV0L0dNRFMKbGVhZnN0YWxrL01TCmxlYWZ5L1JUCmxlYWd1ZS9EU01HCmxlYWsvTURTRwpsZWFrYWdlL01TCmxlYWtpbmVzcy9NCmxlYWt5L1BSVApsZWFuL01EUlNUR0pQCmxlYW5pbmcvTQpsZWFubmVzcy9NCmxlYXAvTURSU1pHCmxlYXBlci9NCmxlYXBmcm9nL01TCmxlYXBmcm9nZ2VkCmxlYXBmcm9nZ2luZwpsZWFybi9BVUdEUwpsZWFybmVkbHkKbGVhcm5lci9NUwpsZWFybmluZydzCmxlYXNlL0FEU01HCmxlYXNlYmFjay9TTQpsZWFzZWhvbGQvTVJTWgpsZWFzZWhvbGRlci9NCmxlYXNlci9TTQpsZWFzaCdzCmxlYXNoL1VEU0cKbGVhc3QvTQpsZWFzdHdpc2UKbGVhdGhlci9NUwpsZWF0aGVyZXR0ZS9NCmxlYXRoZXJuZWNrL01TCmxlYXRoZXJ5CmxlYXZlL0RSU01aR0oKbGVhdmVuL1NHTUQKbGVhdmVuZWQvVQpsZWF2ZW5pbmcvTQpsZWF2ZXIvTQpsZWF2aW5ncy9NCmxlY2gvTURSU1pHCmxlY2hlci9NCmxlY2hlcm91cy9QWQpsZWNoZXJvdXNuZXNzL00KbGVjaGVyeS9NCmxlY2l0aGluL00KbGVjdGVybi9NUwpsZWN0dXJlL01aR0RSUwpsZWN0dXJlci9NCmxlY3R1cmVzaGlwL1NNCmxlZGdlL1JTTVoKbGVkZ2VyL00KbGVlL1JTTVoKbGVlY2gvTURTRwpsZWVrL01TCmxlZXIvTURHCmxlZXJpbmVzcy9NCmxlZXJ5L1JQVApsZWV3YXJkL1NNCmxlZXdheS9NCmxlZnQvTVJTVApsZWZ0aXNtL00KbGVmdGlzdC9TTQpsZWZ0bW9zdApsZWZ0b3Zlci9TTQpsZWZ0d2FyZC9TCmxlZnR5L1NNCmxlZy9TTQpsZWdhY3kvU00KbGVnYWwvU01ZCmxlZ2FsZXNlL00KbGVnYWxpc20vTVMKbGVnYWxpc3RpYwpsZWdhbGlzdGljYWxseQpsZWdhbGl0eS9TTQpsZWdhbGl6YXRpb24vTQpsZWdhbGl6ZS9HRFMKbGVnYXRlL0NYTU5TCmxlZ2F0ZWUvTVMKbGVnYXRpb24ncy9BQwpsZWdhdG8vU00KbGVnZW5kL1NNCmxlZ2VuZGFyaWx5CmxlZ2VuZGFyeQpsZWdlcmRlbWFpbi9NCmxlZ2dlZApsZWdnaW5lc3MvTQpsZWdnaW5nL01TCmxlZ2d5L1JQVApsZWdob3JuL01TCmxlZ2liaWxpdHkvTQpsZWdpYmxlCmxlZ2libHkKbGVnaW9uL1NNCmxlZ2lvbmFyeS9TTQpsZWdpb25uYWlyZS9TTQpsZWdpc2xhdGUvRFNHTlYKbGVnaXNsYXRpb24vTQpsZWdpc2xhdGl2ZS9ZCmxlZ2lzbGF0b3IvTVMKbGVnaXNsYXR1cmUvU00KbGVnaXQKbGVnaXRpbWFjeS9NCmxlZ2l0aW1hdGUvRFNZRwpsZWdpdGltYXRpemUvR0RTCmxlZ2l0aW1pemF0aW9uL00KbGVnaXRpbWl6ZS9EU0cKbGVnbGVzcwpsZWdtYW4vTQpsZWdtZW4KbGVncm9vbS9TTQpsZWd1bWUvTVMKbGVndW1pbm91cwpsZWd3YXJtZXIvUwpsZWd3b3JrL00KbGVpL1NNCmxlaXN1cmUvRE1ZCmxlaXN1cmVsaW5lc3MvTQpsZWlzdXJld2Vhci9NCmxlaXRtb3RpZi9NUwpsZWl0bW90aXYvTVMKbGVtbWEvUwpsZW1tZS9KRwpsZW1taW5nL00KbGVtb24vU00KbGVtb25hZGUvU00KbGVtb25ncmFzcwpsZW1vbnkKbGVtdXIvU00KbGVuZC9SU1pHCmxlbmRlci9NCmxlbmd0aC9NTlgKbGVuZ3RoZW4vR0QKbGVuZ3RoaWx5Cmxlbmd0aGluZXNzL00KbGVuZ3RocwpsZW5ndGh3aXNlCmxlbmd0aHkvUFJUCmxlbmllbmNlL00KbGVuaWVuY3kvTQpsZW5pZW50L1kKbGVuaXRpdmUKbGVucy9NUwpsZW50CmxlbnRpbC9NUwpsZW50bwpsZW9uaW5lCmxlb3BhcmQvU00KbGVvcGFyZGVzcy9NUwpsZW90YXJkL1NNCmxlcGVyL1NNCmxlcHJlY2hhdW4vTVMKbGVwcm9zeS9NCmxlcHJvdXMKbGVwdGEKbGVwdG9uL01TCmxlc2JpYW4vU00KbGVzYmlhbmlzbS9NCmxlc2lvbi9NUwpsZXNzL01OUlgKbGVzc2VlL01TCmxlc3Nlbi9HRApsZXNzb24vTVMKbGVzc29yL01TCmxldC9JU00KbGV0ZG93bi9TTQpsZXRoYWwvWQpsZXRoYXJnaWMKbGV0aGFyZ2ljYWxseQpsZXRoYXJneS9NCmxldHRlci9aR01EUlMKbGV0dGVyYm9tYi9TCmxldHRlcmJveC9TCmxldHRlcmVkL1UKbGV0dGVyZXIvTQpsZXR0ZXJoZWFkL01TCmxldHRlcmluZy9NCmxldHRlcnByZXNzL00KbGV0dGluZy9TCmxldHR1Y2UvTVMKbGV0dXAvU00KbGV1Y2luZQpsZXVjb3RvbXkvUwpsZXVrZW1pYS9NCmxldWtlbWljL1NNCmxldWtvY3l0ZS9NUwpsZXZlZS9TTQpsZXZlbC9QU1pHTURSWQpsZXZlbGVyL00KbGV2ZWxoZWFkZWQvUApsZXZlbGhlYWRlZG5lc3MvTQpsZXZlbG5lc3MvTQpsZXZlci9TR01ECmxldmVyYWdlJ3MKbGV2ZXJhZ2UvQ0RTRwpsZXZpYXRoYW4vTVMKbGV2aWVyL00KbGV2aXRhdGUvRFNHTgpsZXZpdGF0aW9uL00KbGV2aXR5L00KbGV2eS9EUlNNWkcKbGV3ZC9SWVBUCmxld2RuZXNzL00KbGV4ZXIvUwpsZXhpY2FsCmxleGljb2dyYXBoZXIvTVMKbGV4aWNvZ3JhcGhpYwpsZXhpY29ncmFwaGljYWwKbGV4aWNvZ3JhcGh5L00KbGV4aWNvbi9TTQpsZXhpcwpsZwpsaWFiaWxpdGllcwpsaWFiaWxpdHkvQU0KbGlhYmxlL0EKbGlhaXNlL0dEUwpsaWFpc29uL01TCmxpYXIvTVMKbGliL00KbGliYXRpb24vU00KbGliYmVyL01TCmxpYmVsL1NaR01EUgpsaWJlbGVyL00KbGliZWxvdXMKbGliZXJhbC9NWVBTCmxpYmVyYWxpc20vTQpsaWJlcmFsaXR5L00KbGliZXJhbGl6YXRpb24vU00KbGliZXJhbGl6ZS9HRFMKbGliZXJhbG5lc3MvTQpsaWJlcmF0ZS9DRFNHTgpsaWJlcmF0aW9uL0NNCmxpYmVyYXRvci9NUwpsaWJlcnRhcmlhbi9TTQpsaWJlcnRpbmUvTVMKbGliZXJ0eS9TTQpsaWJpZGluYWwKbGliaWRpbm91cwpsaWJpZG8vTVMKbGlicmFyaWFuL01TCmxpYnJhcmlhbnNoaXAKbGlicmFyeS9TTQpsaWJyZXR0aXN0L01TCmxpYnJldHRvL1NNCmxpY2UKbGljZW5zZS9NR0RTCmxpY2Vuc2VkL1UKbGljZW5zZWUvTVMKbGljZW50aWF0ZS9TTQpsaWNlbnRpb3VzL1lQCmxpY2VudGlvdXNuZXNzL00KbGljaGVuL01TCmxpY2l0L1kKbGljay9NREpTRwpsaWNraW5nL00KbGljb3JpY2UvU00KbGlkL1NNCmxpZGRlZApsaWRsZXNzCmxpZG8vTVMKbGllL0RTTQpsaWVkL01SCmxpZWYvUlQKbGllZ2UvU00KbGllbi9NUwpsaWV1L00KbGlldXRlbmFuY3kvTQpsaWV1dGVuYW50L01TCmxpZmUvTVpSCmxpZmViZWx0L1MKbGlmZWJsb29kL00KbGlmZWJvYXQvTVMKbGlmZWJ1b3kvTVMKbGlmZWZvcm1zCmxpZmVndWFyZC9TTQpsaWZlbGVzcy9ZUApsaWZlbGVzc25lc3MvTQpsaWZlbGlrZQpsaWZlbGluZS9NUwpsaWZlbG9uZwpsaWZlci9NCmxpZmVzYXZlci9TTQpsaWZlc2F2aW5nL00KbGlmZXNwYW4vUwpsaWZlc3R5bGUvU00KbGlmZXRpbWUvTVMKbGlmZXdvcmsvTVMKbGlmdC9NRFJTWkcKbGlmdGVyL00KbGlmdG9mZi9TTQpsaWdhbWVudC9NUwpsaWdhdGUvR05EUwpsaWdhdGlvbi9NCmxpZ2F0dXJlL01HRFMKbGlnaHQncy9DCmxpZ2h0L0NBU1RHRApsaWdodGVkL1UKbGlnaHRlbi9TRFJaRwpsaWdodGVuZXIvTQpsaWdodGVyL1NNCmxpZ2h0ZmFjZS9NRApsaWdodGhlYWRlZApsaWdodGhlYXJ0ZWQvWVAKbGlnaHRoZWFydGVkbmVzcy9NCmxpZ2h0aG91c2UvTVMKbGlnaHRpbmcncwpsaWdodGx5CmxpZ2h0bmVzcy9NCmxpZ2h0bmluZy9NRFMKbGlnaHRwcm9vZgpsaWdodHNoaXAvTVMKbGlnaHR3ZWlnaHQvU00KbGlnbmVvdXMKbGlnbmluCmxpZ25pdGUvTQpsaWkKbGlrYWJpbGl0eS9NCmxpa2FibGUvUApsaWthYmxlbmVzcy9NCmxpa2UvRU1HRFNUCmxpa2VsaWhvb2QvVU0KbGlrZWxpaG9vZHMKbGlrZWxpbmVzcy9VTQpsaWtlbHkvVVBSVApsaWtlbi9TR0QKbGlrZW5lc3MvVU0KbGlrZW5lc3NlcwpsaWtlcgpsaWtld2lzZQpsaWtpbmcvTQpsaWxhYy9TTQpsaWxsaXB1dGlhbgpsaWxvL1MKbGlsdC9NRFNHCmxpbHkvU00KbGltYi9NUwpsaW1iZXIvVURTRwpsaW1iZXJuZXNzL00KbGltYmxlc3MKbGltYm8vU00KbGltZS9NR0RTCmxpbWVhZGUvU00KbGltZWxpZ2h0L00KbGltZXJpY2svU00KbGltZXNjYWxlCmxpbWVzdG9uZS9NCmxpbWV5L1MKbGltaXQncwpsaW1pdC9DU1pHRFIKbGltaXRhdGlvbi9DTQpsaW1pdGF0aW9ucwpsaW1pdGVkL1UKbGltaXRlcidzCmxpbWl0aW5nL1MKbGltaXRsZXNzL1AKbGltaXRsZXNzbmVzcy9NCmxpbW4vRFNHCmxpbW8vTVMKbGltb3VzaW5lL01TCmxpbXAvTURSWVNQVEcKbGltcGV0L01TCmxpbXBpZC9ZUApsaW1waWRpdHkvTQpsaW1waWRuZXNzL00KbGltcG5lc3MvTQpsaW15L1JUCmxpbmFnZS9NCmxpbmNocGluL1NNCmxpbmRlbi9NUwpsaW5lL01aR0RSU0oKbGluZWFnZS9NUwpsaW5lYWwvWQpsaW5lYW1lbnQvU00KbGluZWFyL1kKbGluZWFyaXR5L00KbGluZWJhY2tlci9NUwpsaW5lZC9VCmxpbmVmZWVkCmxpbmVtYW4vTQpsaW5lbWVuCmxpbmVuL1NNCmxpbmVucy9NCmxpbmVyL00KbGluZXNtYW4vTQpsaW5lc21lbgpsaW5ldXAvTVMKbGluZy9NCmxpbmdlci9aR0pEUlMKbGluZ2VyZXIvTQpsaW5nZXJpZS9NCmxpbmdlcmluZy9ZCmxpbmdvL00KbGluZ29lcwpsaW5ndWFsCmxpbmd1aW5lL00KbGluZ3Vpc3QvU00KbGluZ3Vpc3RpYy9TCmxpbmd1aXN0aWNhbGx5Cmxpbmd1aXN0aWNzL00KbGluaW1lbnQvU00KbGluaW5nL00KbGluay9NRFJTRwpsaW5rYWdlL01TCmxpbmttYW4KbGlua21lbgpsaW5rdXAvTVMKbGlubmV0L01TCmxpbm8KbGlub2xldW0vTQpsaW5zZWVkL00KbGludCdzCmxpbnQvQ0RHCmxpbnRlbC9NUwpsaW50cwpsaW50eS9UUgpsaW9uL01TCmxpb25lc3MvTVMKbGlvbmhlYXJ0ZWQKbGlvbml6YXRpb24vTQpsaW9uaXplL0dEUwpsaXAvU00KbGlwaWQvU00KbGlwb3N1Y3Rpb24vTQpsaXBwZWQKbGlwcHkKbGlwcmVhZC9HUlMKbGlwcmVhZGVyL00KbGlwcmVhZGluZy9NCmxpcHN0aWNrL01EU0cKbGlxCmxpcXVlZmFjdGlvbi9NCmxpcXVlZnkvRFNHCmxpcXVldXIvU00KbGlxdWlkL01TCmxpcXVpZGF0ZS9YR05EUwpsaXF1aWRhdGlvbi9NCmxpcXVpZGF0b3IvTVMKbGlxdWlkaXR5L00KbGlxdWlkaXplL1pHRFJTCmxpcXVpZGl6ZXIvTQpsaXF1b3IvTURHUwpsaXJhL00KbGlyZQpsaXNsZS9NCmxpc3AvTURSU1pHCmxpc3Blci9NCmxpc3NvbWUKbGlzdC9NRE5TSlhHCmxpc3RlZC9VCmxpc3Rlbi9CTURSWkcKbGlzdGVuZXIvTQpsaXN0ZXJpYQpsaXN0aW5nL00KbGlzdGxlc3MvWVAKbGlzdGxlc3NuZXNzL00KbGl0L1pSCmxpdGFueS9TTQpsaXRjaGkvTVMKbGl0ZQpsaXRlci9NCmxpdGVyYWN5L00KbGl0ZXJhbC9TTVlQCmxpdGVyYWxuZXNzL00KbGl0ZXJhcmluZXNzL00KbGl0ZXJhcnkvUApsaXRlcmF0ZS9TTVkKbGl0ZXJhdGkvTQpsaXRlcmF0dXJlL00KbGl0aGUvUlBZVApsaXRoZW5lc3MvTQpsaXRoZXNvbWUKbGl0aGl1bS9NCmxpdGhvZ3JhcGgvTURSWkcKbGl0aG9ncmFwaGVyL00KbGl0aG9ncmFwaGljCmxpdGhvZ3JhcGhpY2FsbHkKbGl0aG9ncmFwaHMKbGl0aG9ncmFwaHkvTQpsaXRob3NwaGVyZS9TTQpsaXRpZ2FudC9TTQpsaXRpZ2F0ZS9EU0dOCmxpdGlnYXRpb24vTQpsaXRpZ2F0b3IvTVMKbGl0aWdpb3VzL1AKbGl0aWdpb3VzbmVzcy9NCmxpdG11cy9NCmxpdG90ZXMvTQpsaXR0ZXIvTURSU1pHCmxpdHRlcmF0ZXVyL01TCmxpdHRlcmJ1Zy9NUwpsaXR0ZXJlci9NCmxpdHRsZS9NVFJQCmxpdHRsZW5lc3MvTQpsaXR0b3JhbC9TTQpsaXR1cmdpY2FsL1kKbGl0dXJnaXN0L1NNCmxpdHVyZ3kvU00KbGl2YWJpbGl0eS9NCmxpdmFibGUvVQpsaXZlL0FUR0RTQgpsaXZlbGlob29kL1NNCmxpdmVsaW5lc3MvTQpsaXZlbG9uZy9TCmxpdmVseS9QUlQKbGl2ZW4vU0dECmxpdmVyJ3MKbGl2ZXIvUwpsaXZlcmllZApsaXZlcmlzaApsaXZlcndvcnQvTVMKbGl2ZXJ3dXJzdC9NCmxpdmVyeS9DU00KbGl2ZXJ5bWFuL0NNCmxpdmVyeW1lbi9DCmxpdmVzdG9jay9NCmxpdmV3YXJlCmxpdmlkL1kKbGl2aW5nL01TCmxpeC9LCmxpemFyZC9NUwpsbApsbGFtYS9TTQpsbGFuby9TTQpsbwpsb2FkJ3MKbG9hZC9BVUdTRApsb2FkYWJsZQpsb2FkZXIvTVMKbG9hZGluZydzCmxvYWYvTURSU1pHCmxvYWZlci9NCmxvYW0vTQpsb2FteS9UUgpsb2FuL01EUlNaRwpsb2FuZXIvTQpsb2Fuc2hhcmtpbmcvTQpsb2Fud29yZC9NUwpsb2F0aC9KWkdEUlMKbG9hdGhlCmxvYXRoZXIvTQpsb2F0aGluZy9NCmxvYXRoc29tZS9QWQpsb2F0aHNvbWVuZXNzL00KbG9hdmVzCmxvYi9TTUQKbG9iYXIKbG9iYmVkCmxvYmJlci9NUwpsb2JiaW5nCmxvYmJ5L0dEU00KbG9iYnlpc3QvTVMKbG9iZS9NUwpsb2JvdG9taXplL0RTRwpsb2JvdG9teS9TTQpsb2JzdGVyL01TCmxvY2FsL1NNWQpsb2NhbGUvTVMKbG9jYWxpdHkvU00KbG9jYWxpemF0aW9uL00KbG9jYWxpemUvRFNHCmxvY2F0ZS9FQUdORFMKbG9jYXRpb24ncy9BCmxvY2F0aW9uL0VTTQpsb2NhdG9yL01TCmxvY2F2b3JlL1NNCmxvY2kKbG9jay9NRFJTQlpHCmxvY2tlci9NCmxvY2tldC9NUwpsb2NramF3L00KbG9ja291dC9NUwpsb2Nrc21pdGgvTQpsb2Nrc21pdGhzCmxvY2tzdGVwL00KbG9ja3VwL01TCmxvY28vUwpsb2NvbW90aW9uL00KbG9jb21vdGl2ZS9NUwpsb2Nvd2VlZC9TTQpsb2N1bS9TCmxvY3VzL00KbG9jdXN0L1NNCmxvY3V0aW9uL01TCmxvZGUvTVMKbG9kZXN0YXIvTVMKbG9kZXN0b25lL01TCmxvZGdlL0RSU0pNWkcKbG9kZ2VyL00KbG9kZ2luZy9NCmxvZGdpbmdzL00KbG9mdC9NRFNHCmxvZnRpbHkKbG9mdGluZXNzL00KbG9mdHkvUFJUCmxvZy9TTQpsb2dhbmJlcnJ5L1NNCmxvZ2FyaXRobS9TTQpsb2dhcml0aG1pYwpsb2dib29rL1NNCmxvZ2UvTVMKbG9nZ2VkCmxvZ2dlci9TTQpsb2dnZXJoZWFkL1NNCmxvZ2dpYS9TTQpsb2dnaW5nL00KbG9naWMvTQpsb2dpY2FsL1kKbG9naWNhbGl0eS9NCmxvZ2ljaWFuL01TCmxvZ2luL1NNCmxvZ2lzdGljL1MKbG9naXN0aWNhbC9ZCmxvZ2lzdGljcy9NCmxvZ2phbS9TTQpsb2dvL01TCmxvZ29mZi9TTQpsb2dvbi9TTQpsb2dvdHlwZS9TTQpsb2dvdXQvU00KbG9ncm9sbGluZy9NCmxvZ3kvUlQKbG9pbi9NUwpsb2luY2xvdGgvTQpsb2luY2xvdGhzCmxvaXRlci9aR1NEUgpsb2l0ZXJlci9NCmxvaXRlcmluZy9NCmxvbGNhdC9TTQpsb2xsL0RTRwpsb2xsaXBvcC9TTQpsb2xsb3AvR1NECmxvbGx5L1MKbG9sbHlnYWcvUwpsb2xseWdhZ2dlZApsb2xseWdhZ2dpbmcKbG9uZS9ZWlIKbG9uZWxpbmVzcy9NCmxvbmVseS9QVFIKbG9uZXIvTQpsb25lc29tZS9ZUApsb25lc29tZW5lc3MvTQpsb25nJ3MKbG9uZy9LRFNURwpsb25nYm9hdC9NUwpsb25nYm93L01TCmxvbmdlcgpsb25nZXZpdHkvTQpsb25naGFpci9NUwpsb25naGFuZC9NCmxvbmdob3JuL01TCmxvbmdob3VzZS9TCmxvbmdpbmcvTVlTCmxvbmdpc2gKbG9uZ2l0dWRlL01TCmxvbmdpdHVkaW5hbC9ZCmxvbmdzaG9yZW1hbi9NCmxvbmdzaG9yZW1lbgpsb25nc2lnaHRlZApsb25nc3RhbmRpbmcKbG9uZ3RpbWUKbG9uZ3VldXIvU00KbG9uZ3dheXMKbG9vCmxvb2ZhaC9NCmxvb2ZhaHMKbG9vay9NRFJTWkcKbG9va2FsaWtlL01TCmxvb2tlci9NCmxvb2tvdXQvTVMKbG9va3VwCmxvb20vTURTRwpsb29uL01TCmxvb25pZS9NCmxvb255L1JTTVQKbG9vcC9NRFNHCmxvb3Bob2xlL01TCmxvb3B5L1JUCmxvb3MvTlJYCmxvb3NlL1VEU1RHCmxvb3NlbHkKbG9vc2VuL1VHU0QKbG9vc2VuZXNzL00KbG9vdC9NRFJTWkcKbG9vdGVyL00KbG9vdGluZy9NCmxvcC9TCmxvcGUvTUdEUwpsb3BwZWQKbG9wcGluZwpsb3BzaWRlZC9ZUApsb3BzaWRlZG5lc3MvTQpsb3F1YWNpb3VzL1BZCmxvcXVhY2lvdXNuZXNzL00KbG9xdWFjaXR5L00KbG9yZC9NRFlTRwpsb3JkbGluZXNzL00KbG9yZGx5L1RQUgpsb3Jkc2hpcC9TTQpsb3JlL00KbG9yZ25ldHRlL1NNCmxvcmlzL01TCmxvcm4KbG9ycnkvU00KbG9zZS9aR1JTSgpsb3Nlci9NCmxvc2luZy9NCmxvc3MvTVMKbG9zc2xlc3MKbG9zdApsb3QvU00KbG90aW9uL1NNCmxvdHRlcnkvU00KbG90dG8vTQpsb3R1cy9NUwpsb3VjaGUKbG91ZC9SWVRQCmxvdWRoYWlsZXIvU00KbG91ZG1vdXRoL01ECmxvdWRtb3V0aHMKbG91ZG5lc3MvTQpsb3Vkc3BlYWtlci9NUwpsb3VnaApsb3VnaHMKbG91bmdlL01aR0RSUwpsb3VuZ2VyL00KbG91ci9EU0cKbG91c2Uncwpsb3VzZS9DRFNHCmxvdXNpbHkKbG91c2luZXNzL00KbG91c3kvVFBSCmxvdXQvTVMKbG91dGlzaC9QWQpsb3V2ZXIvTURTCmxvdmFibGVuZXNzL00KbG92YWJseQpsb3ZlL01ZWkdEUlNCCmxvdmViaXJkL1NNCmxvdmVjaGlsZC9NCmxvdmVkL1UKbG92ZWxlc3MKbG92ZWxpbmVzcy9NCmxvdmVsb3JuCmxvdmVseS9SU01UUApsb3ZlbWFraW5nL00KbG92ZXIvTQpsb3Zlc2ljawpsb3ZleS9TCmxvdmluZy9ZCmxvdy9TWlRHTURSWVAKbG93Ym9ybgpsb3dib3kvTVMKbG93YnJvdy9TTQpsb3dkb3duL00KbG93ZXIvR0QKbG93ZXJjYXNlL00KbG93ZXJtb3N0Cmxvd2lzaApsb3dsYW5kL1NaTVIKbG93bGFuZGVyL00KbG93bGlmZS9TTQpsb3dsaW5lc3MvTQpsb3dseS9UUFIKbG93bmVzcy9NCmxveC9NCmxveWFsL0VUWQpsb3lhbGVyCmxveWFsaXNtL00KbG95YWxpc3QvU00KbG95YWx0aWVzCmxveWFsdHkvRU0KbG96ZW5nZS9TTQpsdGQKbHVhdS9NUwpsdWJiZXIvTVlTCmx1YmUvTUdEUwpsdWJyaWNhbnQvU00KbHVicmljYXRlL0RTR04KbHVicmljYXRpb24vTQpsdWJyaWNhdG9yL01TCmx1YnJpY2lvdXMvWQpsdWJyaWNpdHkvTQpsdWNpZC9QWQpsdWNpZGl0eS9NCmx1Y2lkbmVzcy9NCmx1Y2svTURTRwpsdWNraWx5L1UKbHVja2luZXNzL1VNCmx1Y2tsZXNzCmx1Y2t5L1VQVFIKbHVjcmF0aXZlL1lQCmx1Y3JhdGl2ZW5lc3MvTQpsdWNyZS9NCmx1Y3VicmF0ZS9HTkRTCmx1Y3VicmF0aW9uL00KbHVkaWNyb3VzL1lQCmx1ZGljcm91c25lc3MvTQpsdWRvCmx1ZmYvRFNHCmx1Zy9TTQpsdWdlL1MKbHVnZ2FnZS9NCmx1Z2dlZApsdWdnZXIvTVMKbHVnZ2luZwpsdWdob2xlL1MKbHVnc2FpbC9TTQpsdWd1YnJpb3VzL1lQCmx1Z3VicmlvdXNuZXNzL00KbHVrZXdhcm0vWVAKbHVrZXdhcm1uZXNzL00KbHVsbC9NRFNHCmx1bGxhYnkvU00KbHVsdS9TCmx1bWJhZ28vTQpsdW1iYXIKbHVtYmVyL01EUlpHUwpsdW1iZXJlci9NCmx1bWJlcmluZy9NCmx1bWJlcmphY2svU00KbHVtYmVybWFuL00KbHVtYmVybWVuCmx1bWJlcnlhcmQvU00KbHVtaW5hcnkvU00KbHVtaW5lc2NlbmNlL00KbHVtaW5lc2NlbnQKbHVtaW5vc2l0eS9NCmx1bWlub3VzL1kKbHVtbW94L01TCmx1bXAvTUROU0cKbHVtcGVjdG9teS9TCmx1bXBpbmVzcy9NCmx1bXBpc2gKbHVtcHkvVFJQCmx1bmFjeS9TTQpsdW5hcgpsdW5hdGljL1NNCmx1bmNoL0dNRFMKbHVuY2hib3gvUwpsdW5jaGVvbi9TTQpsdW5jaGVvbmV0dGUvU00KbHVuY2hyb29tL01TCmx1bmNodGltZS9NUwpsdW5nL01EU0cKbHVuZ2UvU00KbHVuZ2Zpc2gvTVMKbHVuZ2Z1bC9TCmx1bmtoZWFkL01TCmx1cGluZS9NUwpsdXB1cy9NCmx1cmNoL0dNRFMKbHVyZS9NR0RTCmx1cmd5Cmx1cmlkL1BZCmx1cmlkbmVzcy9NCmx1cmsvRFJTWkcKbHVzY2lvdXMvUFkKbHVzY2lvdXNuZXNzL00KbHVzaC9NUlNZUFQKbHVzaG5lc3MvTQpsdXN0L01EUlNHCmx1c3Rlci9NCmx1c3Rlcmxlc3MKbHVzdGZ1bC9ZCmx1c3RpbHkKbHVzdGluZXNzL00KbHVzdHJvdXMvWQpsdXN0eS9QVFIKbHV0YW5pc3QvU00KbHV0ZS9NUwpsdXRlbmlzdC9TTQpsdXRldGl1bS9NCmx1eHVyaWFuY2UvTQpsdXh1cmlhbnQvWQpsdXh1cmlhdGUvRFNHTgpsdXh1cmlhdGlvbi9NCmx1eHVyaW91cy9QWQpsdXh1cmlvdXNuZXNzL00KbHV4dXJ5L1NNCmx2aQpsdmlpCmx4aQpseGlpCmx4aXYKbHhpeApseHZpCmx4dmlpCmx5Y2V1bS9NUwpseWNoZ2F0ZS9TCmx5ZS9NRwpseWluZy9NCmx5bXBoL00KbHltcGhhdGljL1NNCmx5bXBob2N5dGUvU00KbHltcGhvaWQKbHltcGhvbWEvU00KbHluY2gvSlpHRFJTCmx5bmNoZXIvTQpseW5jaGluZy9NCmx5bngvTVMKbHlyZS9NUwpseXJlYmlyZC9NUwpseXJpYy9TTQpseXJpY2FsL1kKbHlyaWNpc20vTQpseXJpY2lzdC9TTQpseXNvc29tYWwKbHlzb3NvbWVzCm0vS0FTCm1hJ2FtCm1hL1NNSAptYWMvU0dNRAptYWNhYnJlCm1hY2FkYW0vTQptYWNhZGFtaWEvU00KbWFjYWRhbWl6ZS9HRFMKbWFjYXF1ZS9NUwptYWNhcm9uaS9NUwptYWNhcm9vbi9NUwptYWNhdy9TTQptYWNlL01TCm1hY2VyYXRlL0RTR04KbWFjZXJhdGlvbi9NCm1hY2gvTQptYWNoZXRlL1NNCm1hY2hpbmF0ZS9HTkRTWAptYWNoaW5hdGlvbi9NCm1hY2hpbmUvRFNNR0IKbWFjaGluZXJ5L00KbWFjaGluaXN0L01TCm1hY2hpc21vL00KbWFjaG8vTQptYWNrZXJlbC9TTQptYWNraW5hdy9TTQptYWNraW50b3NoL01TCm1hY3JhbWUvTQptYWNyby9TTQptYWNyb2Jpb3RpYy9TCm1hY3JvYmlvdGljcy9NCm1hY3JvY29zbS9TTQptYWNyb2Vjb25vbWljL1MKbWFjcm9lY29ub21pY3MvTQptYWNyb2xvZ3kvUwptYWNyb24vTVMKbWFjcm9waGFnZXMKbWFjcm9zY29waWMKbWFkL1NNWVAKbWFkYW0vU00KbWFkYW1lL00KbWFkY2FwL01TCm1hZGRlbi9ER1MKbWFkZGVuaW5nL1kKbWFkZGVyL01TCm1hZGRlc3QKbWFkZGluZwptYWRlL0FVCm1hZGVtb2lzZWxsZS9NUwptYWRob3VzZS9TTQptYWRtYW4vTQptYWRtZW4KbWFkbmVzcy9NCm1hZHJhcy9NUwptYWRyYXNhL1NNCm1hZHJhc2FoL00KbWFkcmFzYWhzCm1hZHJhc3NhL1NNCm1hZHJpZ2FsL1NNCm1hZHdvbWFuL00KbWFkd29tZW4KbWFlbHN0cm9tL1NNCm1hZXN0cm8vU00KbWFmaWEvU00KbWFmaW9zaQptYWZpb3NvL00KbWFnL1NNCm1hZ2F6aW5lL1NNCm1hZ2UvTVMKbWFnZW50YS9NCm1hZ2dvdC9NUwptYWdnb3R5Cm1hZ2kvTQptYWdpYy9TTQptYWdpY2FsL1kKbWFnaWNpYW4vU00KbWFnaWNrZWQKbWFnaWNraW5nCm1hZ2lzdGVyaWFsL1kKbWFnaXN0cmFjeS9NCm1hZ2lzdHJhdGUvU00KbWFnbWEvTQptYWduYW5pbWl0eS9NCm1hZ25hbmltb3VzL1kKbWFnbmF0ZS9TTQptYWduZXNpYS9NCm1hZ25lc2l1bS9NCm1hZ25ldC9NUwptYWduZXRpYwptYWduZXRpY2FsbHkKbWFnbmV0aXNtL00KbWFnbmV0aXRlL00KbWFnbmV0aXphYmxlCm1hZ25ldGl6YXRpb24vQ00KbWFnbmV0aXplL0NHRFMKbWFnbmV0by9TTQptYWduZXRvbWV0ZXIvU00KbWFnbmV0b3NwaGVyZQptYWduaWZpY2F0aW9uL00KbWFnbmlmaWNlbmNlL00KbWFnbmlmaWNlbnQvWQptYWduaWZpZXIvTQptYWduaWZ5L1pHWERSU04KbWFnbmlsb3F1ZW5jZS9NCm1hZ25pbG9xdWVudAptYWduaXR1ZGUvU00KbWFnbm9saWEvTVMKbWFnbnVtL01TCm1hZ3BpZS9NUwptYWd1cy9NCm1haGFyYWphaC9NCm1haGFyYWphaHMKbWFoYXJhbmkvU00KbWFoYXJpc2hpL1NNCm1haGF0bWEvU00KbWFob2dhbnkvU00KbWFob3V0L01TCm1haWQvTU5TWAptYWlkZW4vTVkKbWFpZGVuaGFpci9NCm1haWRlbmhlYWQvU00KbWFpZGVuaG9vZC9NCm1haWRzZXJ2YW50L1NNCm1haWwvSk1EUlNaRwptYWlsYmFnL1NNCm1haWxib21iL0dTRAptYWlsYm94L01TCm1haWxlci9NCm1haWxpbmcvTQptYWlsbG90L1NNCm1haWxtYW4vTQptYWlsbWVuCm1haWxzaG90L1MKbWFpbS9EU0cKbWFpbi9NWVMKbWFpbmZyYW1lL1NNCm1haW5sYW5kL01TCm1haW5saW5lL01HRFMKbWFpbm1hc3QvTVMKbWFpbnNhaWwvTVMKbWFpbnNwcmluZy9NUwptYWluc3RheS9NUwptYWluc3RyZWFtL1NNREcKbWFpbnRhaW4vWkdCRFJTCm1haW50YWluYWJpbGl0eQptYWludGVuYW5jZS9NCm1haW50b3AvU00KbWFpc29uZXR0ZS9NUwptYWl6ZS9TTQptYWplc3RpYwptYWplc3RpY2FsbHkKbWFqZXN0eS9TTQptYWpvbGljYS9NCm1ham9yL1NHTURZCm1ham9yZG9tby9NUwptYWpvcmV0dGUvTVMKbWFqb3JpdGFyaWFuL1NNCm1ham9yaXRhcmlhbmlzbQptYWpvcml0eS9TTQptYWtlJ3MvQQptYWtlL1VBR1MKbWFrZW92ZXIvTVMKbWFrZXIvU00KbWFrZXNoaWZ0L1NNCm1ha2V1cC9NUwptYWtld2VpZ2h0L1MKbWFraW5nL01TCm1ha2luZ3MvTQptYWxhY2hpdGUvTQptYWxhZGp1c3RlZAptYWxhZGp1c3RtZW50L00KbWFsYWRtaW5pc3RyYXRpb24KbWFsYWRyb2l0L1BZCm1hbGFkcm9pdG5lc3MvTQptYWxhZHkvU00KbWFsYWlzZS9NCm1hbGFtdXRlL01TCm1hbGFwcm9waXNtL1NNCm1hbGFyaWEvTQptYWxhcmlhbAptYWxhcmtleS9NCm1hbGF0aGlvbi9NCm1hbGNvbnRlbnQvTVMKbWFsZS9NUFMKbWFsZWRpY3Rpb24vU00KbWFsZWZhY3Rpb24vTQptYWxlZmFjdG9yL1NNCm1hbGVmaWMKbWFsZWZpY2VuY2UvTQptYWxlZmljZW50Cm1hbGVuZXNzL00KbWFsZXZvbGVuY2UvTQptYWxldm9sZW50L1kKbWFsZmVhc2FuY2UvTQptYWxmb3JtYXRpb24vU00KbWFsZm9ybWVkCm1hbGZ1bmN0aW9uL01EU0cKbWFsaWNlL00KbWFsaWNpb3VzL1BZCm1hbGljaW91c25lc3MvTQptYWxpZ24vRFNHCm1hbGlnbmFuY3kvU00KbWFsaWduYW50L1kKbWFsaWduaXR5L00KbWFsaW5nZXIvWkdTRFIKbWFsaW5nZXJlci9NCm1hbGwvTVMKbWFsbGFyZC9TTQptYWxsZWFiaWxpdHkvTQptYWxsZWFibGUKbWFsbGV0L01TCm1hbGxvdy9NUwptYWxub3VyaXNoZWQKbWFsbnV0cml0aW9uL00KbWFsb2NjbHVzaW9uL00KbWFsb2Rvcm91cwptYWxwcmFjdGljZS9TTQptYWx0L01EU0cKbWFsdGVkL01TCm1hbHRvc2UvTQptYWx0cmVhdC9HTERTCm1hbHRyZWF0bWVudC9NCm1hbHR5L1RSCm1hbHdhcmUvTQptYW0vUwptYW1hL01TCm1hbWJhL1NNCm1hbWJvL1NHTUQKbWFtbWEvTQptYW1tYWwvTVMKbWFtbWFsaWFuL01TCm1hbW1hcnkKbWFtbW9ncmFtL01TCm1hbW1vZ3JhcGh5L00KbWFtbW9uL00KbWFtbW90aC9NCm1hbW1vdGhzCm1hbW15L1NNCm1hbidzL0YKbWFuL1VTWQptYW5hY2xlL0RTTUcKbWFuYWdlL1pHRFJTTAptYW5hZ2VhYmlsaXR5L00KbWFuYWdlYWJsZS9VCm1hbmFnZW1lbnQvTVMKbWFuYWdlci9NCm1hbmFnZXJlc3MvUwptYW5hZ2VyaWFsCm1hbmFuYS9NUwptYW5hdGVlL1NNCm1hbmRhbGEvU00KbWFuZGFtdXMvTVMKbWFuZGFyaW4vTVMKbWFuZGF0ZS9EU01HCm1hbmRhdG9yeQptYW5kaWJsZS9NUwptYW5kaWJ1bGFyCm1hbmRvbGluL01TCm1hbmRyYWtlL01TCm1hbmRyZWwvU00KbWFuZHJpbGwvTVMKbWFuZS9NRFMKbWFuZWdlL00KbWFuZXV2ZXIvTURHU0JKCm1hbmV1dmVyYWJpbGl0eS9NCm1hbmZ1bC9ZCm1hbmdhL00KbWFuZ2FuZXNlL00KbWFuZ2UvRFJNWgptYW5nZXIvTQptYW5nZXRvdXQvUwptYW5naW5lc3MvTQptYW5nbGUvTVpHRFJTCm1hbmdvL00KbWFuZ29lcwptYW5ncm92ZS9NUwptYW5neS9UUlAKbWFuaGFuZGxlL0dEUwptYW5ob2xlL1NNCm1hbmhvb2QvTQptYW5odW50L1NNCm1hbmlhL1NNCm1hbmlhYy9NUwptYW5pYWNhbC9ZCm1hbmljL1NNCm1hbmljYWxseQptYW5pY3VyZS9NR0RTCm1hbmljdXJpc3QvTVMKbWFuaWZlc3QvTURZU0cKbWFuaWZlc3RhdGlvbi9TTQptYW5pZmVzdG8vU00KbWFuaWZvbGQvR01EUwptYW5pa2luL1NNCm1hbmlsYS9NCm1hbmlvYy9NUwptYW5pcHVsYWJsZQptYW5pcHVsYXRlL1hHTlZEUwptYW5pcHVsYXRpb24vTQptYW5pcHVsYXRpdmUvWQptYW5pcHVsYXRvci9NUwptYW5raW5kL00KbWFua3kKbWFubGlrZQptYW5saW5lc3MvTQptYW5seS9VVFIKbWFubmEvTQptYW5uZWQvVQptYW5uZXF1aW4vU00KbWFubmVyL01EWVMKbWFubmVyaXNtL1NNCm1hbm5lcmx5L1UKbWFubmluZy9VCm1hbm5pc2gvWVAKbWFubmlzaG5lc3MvTQptYW5vbWV0ZXIvU00KbWFub3IvU00KbWFub3JpYWwKbWFucG93ZXIvTQptYW5xdWUKbWFuc2FyZC9NUwptYW5zZS9TWE1OCm1hbnNlcnZhbnQvTQptYW5zaW9uL00KbWFuc2xhdWdodGVyL00KbWFudGEvU00KbWFudGVsL01TCm1hbnRlbHBpZWNlL1NNCm1hbnRlbHNoZWxmCm1hbnRlbHNoZWx2ZXMKbWFudGVzCm1hbnRpbGxhL1NNCm1hbnRpcy9NUwptYW50aXNzYS9TTQptYW50bGUncwptYW50bGUvRUdEUwptYW50cmEvTVMKbWFudWFsL01ZUwptYW51ZmFjdHVyZS9EUlNNWkcKbWFudWZhY3R1cmVyL00KbWFudWZhY3R1cmluZy9NCm1hbnVtaXNzaW9uL1NNCm1hbnVtaXQvUwptYW51bWl0dGVkCm1hbnVtaXR0aW5nCm1hbnVyZS9NR0RTCm1hbnVzY3JpcHQvTVMKbWFueS9NCm1hcCdzCm1hcC9BUwptYXBsZS9TTQptYXBtYWtlci9TTQptYXBwZWQvQQptYXBwZXIvTVMKbWFwcGluZy9TCm1hci9TCm1hcmFib3UvTVMKbWFyYWJvdXQvU00KbWFyYWNhL01TCm1hcmFzY2hpbm8vTVMKbWFyYXRob24vU01SWgptYXJhdGhvbmVyL00KbWFyYXVkL1pHRFJTCm1hcmF1ZGVyL00KbWFyYmxlL01HRFMKbWFyYmxlaXplL0dEUwptYXJibGluZy9NCm1hcmNoL1pHTURSUwptYXJjaGVyL00KbWFyY2hpb25lc3MvTVMKbWFyZS9NUwptYXJnYXJpbmUvTQptYXJnYXJpdGEvTVMKbWFyZ2UKbWFyZ2luL01TCm1hcmdpbmFsL1lTCm1hcmdpbmFsaWEvTQptYXJnaW5hbGl6YXRpb24vTQptYXJnaW5hbGl6ZS9HRFMKbWFyaWEvTQptYXJpYWNoaS9NUwptYXJpZ29sZC9NUwptYXJpanVhbmEvTQptYXJpbWJhL1NNCm1hcmluYS9NUwptYXJpbmFkZS9EU01HCm1hcmluYXJhL00KbWFyaW5hdGUvRFNHTgptYXJpbmF0aW9uL00KbWFyaW5lL01aUlMKbWFyaW5lci9NCm1hcmlvbmV0dGUvTVMKbWFyaXRhbC9ZCm1hcml0aW1lCm1hcmpvcmFtL00KbWFyay9BTURTRwptYXJrZG93bi9TTQptYXJrZWQvVQptYXJrZWRseQptYXJrZXIvTVMKbWFya2V0L01EUlpHQlMKbWFya2V0YWJpbGl0eS9NCm1hcmtldGFibGUvVQptYXJrZXRlZXIvU00KbWFya2V0ZXIvTQptYXJrZXRpbmcvTQptYXJrZXRwbGFjZS9TTQptYXJraW5nL1NNCm1hcmtrYS9NCm1hcmtrYWEKbWFya3NtYW4vTQptYXJrc21hbnNoaXAvTQptYXJrc21lbgptYXJrdXAvTVMKbWFybC9NCm1hcmxpbi9NUwptYXJsaW5lc3Bpa2UvU00KbWFybWFsYWRlL00KbWFybW9yZWFsCm1hcm1vc2V0L1NNCm1hcm1vdC9NUwptYXJvb24vTURHUwptYXJxdWUvTVMKbWFycXVlZS9TTQptYXJxdWVzcy9NUwptYXJxdWV0cnkvTQptYXJxdWlzL01TCm1hcnF1aXNlL00KbWFycXVpc2V0dGUvTQptYXJyZWQvVQptYXJyaWFnZS9BU00KbWFycmlhZ2VhYmlsaXR5L00KbWFycmlhZ2VhYmxlCm1hcnJpZWQvU00KbWFycmluZwptYXJyb3cvTVMKbWFycnkvQUdEUwptYXJzaC9NUwptYXJzaGFsL1NNREcKbWFyc2hsYW5kL1NNCm1hcnNobWFsbG93L1NNCm1hcnNoeS9SVAptYXJzdXBpYWwvTVMKbWFydC9NTlNYCm1hcnRlbi9NCm1hcnRlbnNpdGUKbWFydGlhbC9ZCm1hcnRpYW4vUwptYXJ0aW4vTVMKbWFydGluZXQvTVMKbWFydGluZ2FsZS9NUwptYXJ0aW5pL1NNCm1hcnR5ci9NREdTCm1hcnR5cmRvbS9NCm1hcnZlbC9NREdTCm1hcnZlbG91cy9ZCm1hcnppcGFuL00KbWFzYwptYXNjYXJhL0dNRFMKbWFzY290L01TCm1hc2N1bGluZS9TTQptYXNjdWxpbml0eS9NCm1hc2VyL1NNCm1hc2gvTURSU1pHCm1hc2hlci9NCm1hc2h1cC9NUwptYXNrJ3MKbWFzay9VRFNHCm1hc2tlci9NUwptYXNvY2hpc20vTQptYXNvY2hpc3QvU00KbWFzb2NoaXN0aWMKbWFzb2NoaXN0aWNhbGx5Cm1hc29uL1NNCm1hc29uaWMKbWFzb25yeS9NCm1hc3F1ZS9NUwptYXNxdWVyYWRlL0RSU01aRwptYXNxdWVyYWRlci9NCm1hc3MvTURTR1YKbWFzc2FjcmUvTUdEUwptYXNzYWdlL0RTTUcKbWFzc2V1ci9TTQptYXNzZXVzZS9NUwptYXNzaWYvTVMKbWFzc2l2ZS9QWQptYXNzaXZlbmVzcy9NCm1hc3QvTURTCm1hc3RlY3RvbXkvU00KbWFzdGVyJ3MKbWFzdGVyL0FER1MKbWFzdGVyY2xhc3MvUwptYXN0ZXJmdWwvWQptYXN0ZXJseQptYXN0ZXJtaW5kL1NHTUQKbWFzdGVycGllY2UvTVMKbWFzdGVyc3Ryb2tlL1NNCm1hc3RlcndvcmsvTVMKbWFzdGVyeS9NCm1hc3RoZWFkL01TCm1hc3RpYy9NCm1hc3RpY2F0ZS9HTkRTCm1hc3RpY2F0aW9uL00KbWFzdGlmZi9TTQptYXN0aXRpcwptYXN0b2Rvbi9TTQptYXN0b2lkL1NNCm1hc3R1cmJhdGUvR05EUwptYXN0dXJiYXRpb24vTQptYXN0dXJiYXRvcnkKbWF0L1NaR01EUgptYXRhZG9yL1NNCm1hdGNoL0FNUwptYXRjaGJvb2svU00KbWF0Y2hib3gvTVMKbWF0Y2hlZC9VCm1hdGNoaW5nCm1hdGNobGVzcwptYXRjaGxvY2svU00KbWF0Y2htYWtlci9NUwptYXRjaG1ha2luZy9NCm1hdGNoc3RpY2svTVMKbWF0Y2h3b29kL00KbWF0ZS9NUwptYXRlcmlhbC9TTVkKbWF0ZXJpYWxpc20vTQptYXRlcmlhbGlzdC9TTQptYXRlcmlhbGlzdGljCm1hdGVyaWFsaXN0aWNhbGx5Cm1hdGVyaWFsaXphdGlvbi9NCm1hdGVyaWFsaXplL0RTRwptYXRlcmllbC9NCm1hdGVybmFsL1kKbWF0ZXJuaXR5L00KbWF0ZXkvUwptYXRoL00KbWF0aGVtYXRpY2FsL1kKbWF0aGVtYXRpY2lhbi9TTQptYXRoZW1hdGljcy9NCm1hdGhzCm1hdGluZWUvU00KbWF0aW5nL00KbWF0aW5zL00KbWF0cmlhcmNoL00KbWF0cmlhcmNoYWwKbWF0cmlhcmNocwptYXRyaWFyY2h5L1NNCm1hdHJpY2VzCm1hdHJpY2lkYWwKbWF0cmljaWRlL01TCm1hdHJpY3VsYXRlL0RTR04KbWF0cmljdWxhdGlvbi9NCm1hdHJpbW9uaWFsCm1hdHJpbW9ueS9NCm1hdHJpeC9NCm1hdHJvbi9NWVMKbWF0dGUvRFJTTVpHCm1hdHRlci9NREcKbWF0dGluZy9NCm1hdHRvY2svU00KbWF0dHJlc3MvTVMKbWF0dXJhdGUvR05EUwptYXR1cmF0aW9uL00KbWF0dXJlL1lUR0RSUwptYXR1cml0eS9TTQptYXR6by9TTUgKbWF0em9oL00KbWF0em9ocwptYXR6b3QKbWF1ZGxpbgptYXVsL01EUlNaRwptYXVsZXIvTQptYXVuZGVyL1NERwptYXVzb2xldW0vU00KbWF1dmUvTQptYXZlbi9TTQptYXZlcmljay9TTQptYXcvU00KbWF3a2lzaC9QWQptYXdraXNobmVzcy9NCm1heC9HTURTCm1heGkvTVMKbWF4aWxsYS9NCm1heGlsbGFlCm1heGlsbGFyeQptYXhpbS9TTQptYXhpbWFsL1kKbWF4aW1pemF0aW9uL00KbWF4aW1pemUvR0RTCm1heGltdW0vU00KbWF5L00KbWF5YmUvU00KbWF5ZGF5L01TCm1heWZsb3dlci9NUwptYXlmbHkvU00KbWF5aGVtL00KbWF5bid0Cm1heW8vTQptYXlvbm5haXNlL00KbWF5b3IvU00KbWF5b3JhbAptYXlvcmFsdHkvTQptYXlvcmVzcy9NUwptYXlwb2xlL1NNCm1heXN0Cm1hemUvTVMKbWF6dXJrYS9NUwptZHNlCm1lL0RTSAptZWFkL00KbWVhZG93L01TCm1lYWRvd2xhcmsvTVMKbWVhZ2VyL1BZCm1lYWdlcm5lc3MvTQptZWFsL01TCm1lYWxpbmVzcy9NCm1lYWx0aW1lL1NNCm1lYWx5L1RQUgptZWFseWJ1Zy9TTQptZWFseW1vdXRoZWQKbWVhbi9NUllKUFNURwptZWFuZGVyL1NNREpHCm1lYW5kZXJpbmdzL00KbWVhbmllL00KbWVhbmluZy9NCm1lYW5pbmdmdWwvUFkKbWVhbmluZ2Z1bG5lc3MvTQptZWFuaW5nbGVzcy9ZUAptZWFuaW5nbGVzc25lc3MvTQptZWFubmVzcy9NCm1lYW50L1UKbWVhbnRpbWUvTQptZWFud2hpbGUvTQptZWFueS9TTQptZWFzCm1lYXNsZXMvTQptZWFzbHkvUlQKbWVhc3VyYWJsZQptZWFzdXJhYmx5Cm1lYXN1cmUncwptZWFzdXJlL0FEU0cKbWVhc3VyZWQvVQptZWFzdXJlbGVzcwptZWFzdXJlbWVudC9NUwptZWF0L01TCm1lYXRiYWxsL01TCm1lYXRoZWFkL01TCm1lYXRpbmVzcy9NCm1lYXRsZXNzCm1lYXRsb2FmL00KbWVhdGxvYXZlcwptZWF0cGFja2luZy9NCm1lYXR5L1RQUgptZWNjYS9TTQptZWNoYW5pYy9NUwptZWNoYW5pY2FsL1kKbWVjaGFuaWNzL00KbWVjaGFuaXNtL1NNCm1lY2hhbmlzdGljCm1lY2hhbmlzdGljYWxseQptZWNoYW5pemF0aW9uL00KbWVjaGFuaXplL0RTRwptZWRhbC9TTQptZWRhbGlzdC9NUwptZWRhbGxpb24vU00KbWVkZGxlL1pHRFJTCm1lZGRsZXIvTQptZWRkbGVzb21lCm1lZGlhL1NNCm1lZGlhbC9BWQptZWRpYW4vTVMKbWVkaWF0ZS9EU0dOCm1lZGlhdGVkL1UKbWVkaWF0aW9uL0FNCm1lZGlhdG9yL01TCm1lZGljL1NNCm1lZGljYWlkL00KbWVkaWNhbC9TTVkKbWVkaWNhbWVudC9NCm1lZGljYXJlL00KbWVkaWNhdGUvR05YRFMKbWVkaWNhdGlvbi9NCm1lZGljaW5hbC9ZCm1lZGljaW5lL01TCm1lZGljby9NUwptZWRpZXZhbAptZWRpZXZhbGlzdC9NUwptZWRpb2NyZQptZWRpb2NyaXR5L1NNCm1lZGl0YXRlL0RTR05WWAptZWRpdGF0aW9uL00KbWVkaXRhdGl2ZS9ZCm1lZGl1bS9NUwptZWRsZXkvTVMKbWVkdWxsYS9TTQptZWR1c2EKbWVkdXNhZQptZWVkL00KbWVlay9SWVBUCm1lZWtuZXNzL00KbWVlcnNjaGF1bS9TTQptZWV0L01KU0cKbWVldGluZy9NCm1lZXRpbmdob3VzZS9TTQptZWV0dXAKbWVnL1MKbWVnYQptZWdhYml0L1NNCm1lZ2FidWNrcy9NCm1lZ2FieXRlL01TCm1lZ2FjaHVyY2gvTVMKbWVnYWN5Y2xlL1NNCm1lZ2FkZWF0aC9NCm1lZ2FkZWF0aHMKbWVnYWhlcnR6L00KbWVnYWxpdGgvTQptZWdhbGl0aGljCm1lZ2FsaXRocwptZWdhbG9tYW5pYS9NCm1lZ2Fsb21hbmlhYy9TTQptZWdhbG9wb2xpcy9NUwptZWdhcGhvbmUvRFNNRwptZWdhcGl4ZWwvU00KbWVnYXN0YXIvUwptZWdhdG9uL1NNCm1lZ2F3YXR0L01TCm1laAptZWlvc2lzL00KbWVpb3RpYwptZWxhbWluZS9NCm1lbGFuY2hvbGlhL00KbWVsYW5jaG9saWMvUwptZWxhbmNob2x5L00KbWVsYW5nZS9NUwptZWxhbmluL00KbWVsYW5vbWEvU00KbWVsZC9NRFNHCm1lbGVlL1NNCm1lbGlvcmF0ZS9HTlZEUwptZWxpb3JhdGlvbi9NCm1lbGxpZmx1b3VzL1BZCm1lbGxpZmx1b3VzbmVzcy9NCm1lbGxvdy9QVEdEUllTCm1lbGxvd25lc3MvTQptZWxvZGljCm1lbG9kaWNhbGx5Cm1lbG9kaW91cy9ZUAptZWxvZGlvdXNuZXNzL00KbWVsb2RyYW1hL01TCm1lbG9kcmFtYXRpYy9TCm1lbG9kcmFtYXRpY2FsbHkKbWVsb2RyYW1hdGljcy9NCm1lbG9keS9TTQptZWxvbi9TTQptZWx0J3MKbWVsdC9BRFNHCm1lbHRkb3duL1NNCm1lbWJlcidzCm1lbWJlci9FQVMKbWVtYmVyc2hpcC9TTQptZW1icmFuZS9TTQptZW1icmFub3VzCm1lbWUvTVMKbWVtZW50by9NUwptZW1vL01TCm1lbW9pci9NUwptZW1vcmFiaWxpYS9NCm1lbW9yYWJpbGl0eS9NCm1lbW9yYWJsZS9VCm1lbW9yYWJseQptZW1vcmFuZHVtL01TCm1lbW9yaWFsL1NNCm1lbW9yaWFsaXplL0RTRwptZW1vcml6YXRpb24vTQptZW1vcml6ZS9EU0cKbWVtb3J5L1NNCm1lbXNhaGliL1MKbWVuL00KbWVuYWNlL01HRFMKbWVuYWNpbmcvWQptZW5hZ2UvTVMKbWVuYWdlcmllL01TCm1lbmQvTURSU1pHCm1lbmRhY2lvdXMvWQptZW5kYWNpdHkvTQptZW5kZWxldml1bS9NCm1lbmRlci9NCm1lbmRpY2FuY3kvTQptZW5kaWNhbnQvU00KbWVuZGluZy9NCm1lbmZvbGsvTVMKbWVuZm9sa3MvTQptZW5oYWRlbi9NCm1lbmlhbC9NWVMKbWVuaW5nZWFsCm1lbmluZ2VzCm1lbmluZ2l0aXMvTQptZW5pbngvTQptZW5pc2NpCm1lbmlzY3VzL00KbWVub3BhdXNhbAptZW5vcGF1c2UvTQptZW5vcmFoL00KbWVub3JhaHMKbWVuc2NoL01TCm1lbnNlcnZhbnRzCm1lbnNlcy9NCm1lbnN0cnVhbAptZW5zdHJ1YXRlL0dORFMKbWVuc3RydWF0aW9uL00KbWVuc3VyYWJsZQptZW5zdXJhdGlvbi9NCm1lbnN3ZWFyL00KbWVudGFsL1kKbWVudGFsaXN0L1NNCm1lbnRhbGl0eS9TTQptZW50aG9sL00KbWVudGhvbGF0ZWQKbWVudGlvbi9HU01ECm1lbnRpb25lZC9VCm1lbnRvci9NRFNHCm1lbnUvTVMKbWVvdy9NRFNHCm1lcmNhbnRpbGUKbWVyY2FudGlsaXNtL00KbWVyY2VuYXJ5L1NNCm1lcmNlci9NUwptZXJjZXJpemUvR0RTCm1lcmNoYW5kaXNlL01aR0RSUwptZXJjaGFuZGlzZXIvTQptZXJjaGFuZGlzaW5nL00KbWVyY2hhbnQvTUJTCm1lcmNoYW50bWFuL00KbWVyY2hhbnRtZW4KbWVyY2lmdWwvVVkKbWVyY2lsZXNzL1BZCm1lcmNpbGVzc25lc3MvTQptZXJjdXJpYWwvWQptZXJjdXJpYwptZXJjdXJ5L00KbWVyY3kvU00KbWVyZS9NWVRTCm1lcmV0cmljaW91cy9ZUAptZXJldHJpY2lvdXNuZXNzL00KbWVyZ2Fuc2VyL01TCm1lcmdlL0RSU1pHCm1lcmdlci9NCm1lcmlkaWFuL01TCm1lcmluZ3VlL01TCm1lcmluby9NUwptZXJpdC9DU00KbWVyaXRlZC9VCm1lcml0aW5nCm1lcml0b2NyYWN5L1NNCm1lcml0b2NyYXRpYwptZXJpdG9yaW91cy9QWQptZXJpdG9yaW91c25lc3MvTQptZXJtYWlkL1NNCm1lcm1hbi9NCm1lcm1lbgptZXJyaWx5Cm1lcnJpbWVudC9NCm1lcnJpbmVzcy9NCm1lcnJ5L1RSUAptZXJyeW1ha2VyL01TCm1lcnJ5bWFraW5nL00KbWVzYS9NUwptZXNjYWwvTVMKbWVzY2FsaW4KbWVzY2FsaW5lL00KbWVzZGFtZXMKbWVzZGVtb2lzZWxsZXMKbWVzaC9NRFNHCm1lc21lcmljCm1lc21lcmlzbS9NCm1lc21lcml6ZS9aR0RSUwptZXNtZXJpemVyL00KbWVzb21vcnBoL00KbWVzb21vcnBocwptZXNvbi9TTQptZXNvc3BoZXJlL1NNCm1lc3F1aXRlL1NNCm1lc3MvTURTRwptZXNzYWdlL01HRFMKbWVzc2VpZ25ldXJzCm1lc3Nlbmdlci9TTQptZXNzaWFoL00KbWVzc2lhaHMKbWVzc2lhbmljCm1lc3NpZXVycwptZXNzaWx5Cm1lc3NpbmVzcy9NCm1lc3NtYXRlL1NNCm1lc3N5L1BUUgptZXN0aXpvL01TCm1ldAptZXRhCm1ldGFib2xpYwptZXRhYm9saWNhbGx5Cm1ldGFib2xpc20vU00KbWV0YWJvbGl0ZS9TTQptZXRhYm9saXplL0RTRwptZXRhY2FycGFsL1NNCm1ldGFjYXJwaQptZXRhY2FycHVzL00KbWV0YWRhdGEKbWV0YWwvU01ECm1ldGFsYW5ndWFnZS9NUwptZXRhbGxpYwptZXRhbGx1cmdpYwptZXRhbGx1cmdpY2FsCm1ldGFsbHVyZ2lzdC9NUwptZXRhbGx1cmd5L00KbWV0YWx3b3JrL01SWkcKbWV0YWx3b3JrZXIvTQptZXRhbHdvcmtpbmcvTQptZXRhbW9ycGhpYwptZXRhbW9ycGhpc20vTQptZXRhbW9ycGhvc2UvR0RTCm1ldGFtb3JwaG9zaXMvTQptZXRhcGhvci9NUwptZXRhcGhvcmljCm1ldGFwaG9yaWNhbC9ZCm1ldGFwaHlzaWNhbC9ZCm1ldGFwaHlzaWNzL00KbWV0YXN0YXNlcwptZXRhc3Rhc2lzL00KbWV0YXN0YXNpemUvRFNHCm1ldGFzdGF0aWMKbWV0YXRhcnNhbC9NUwptZXRhdGFyc2kKbWV0YXRhcnN1cy9NCm1ldGF0aGVzZXMKbWV0YXRoZXNpcy9NCm1ldGUvTVpHRFJTCm1ldGVtcHN5Y2hvc2VzCm1ldGVtcHN5Y2hvc2lzL00KbWV0ZW9yL01TCm1ldGVvcmljCm1ldGVvcmljYWxseQptZXRlb3JpdGUvU00KbWV0ZW9yb2lkL1NNCm1ldGVvcm9sb2dpYwptZXRlb3JvbG9naWNhbAptZXRlb3JvbG9naXN0L1NNCm1ldGVvcm9sb2d5L00KbWV0ZXIvR01ECm1ldGhhZG9uZS9NCm1ldGhhbXBoZXRhbWluZS9NCm1ldGhhbmUvTQptZXRoYW5vbC9NCm1ldGhpbmtzCm1ldGhvZC9NUwptZXRob2RpY2FsL1lQCm1ldGhvZGljYWxuZXNzL00KbWV0aG9kb2xvZ2ljYWwvWQptZXRob2RvbG9neS9TTQptZXRob3RyZXhhdGUKbWV0aG91Z2h0Cm1ldGhzCm1ldGh5bC9NCm1ldGljdWxvdXMvWVAKbWV0aWN1bG91c25lc3MvTQptZXRpZXIvTVMKbWV0cmljL1MKbWV0cmljYWwvWQptZXRyaWNhdGUvR05EUwptZXRyaWNhdGlvbi9NCm1ldHJpY2l6ZS9HRFMKbWV0cm8vU00KbWV0cm9ub21lL01TCm1ldHJvcG9saXMvTVMKbWV0cm9wb2xpdGFuCm1ldHRsZS9NCm1ldHRsZXNvbWUKbWV3L1NHTUQKbWV3bC9EU0cKbWV3cy9NCm1lenphbmluZS9NUwptZXp6by9TTQptZmcKbWZyL1MKbWcKbWdyCm1pL01OWAptaWFzbWEvTVMKbWljL1MKbWljYS9NCm1pY2UKbWljay9TCm1pY2tleS9NUwptaWNyby9TTQptaWNyb2FnZ3Jlc3Npb24vU00KbWljcm9iZS9NUwptaWNyb2JpYWwKbWljcm9iaW9sb2dpY2FsCm1pY3JvYmlvbG9naXN0L01TCm1pY3JvYmlvbG9neS9NCm1pY3JvYnJld2VyeS9TTQptaWNyb2NoaXAvTVMKbWljcm9jaXJjdWl0L1NNCm1pY3JvY29kZQptaWNyb2NvbXB1dGVyL01TCm1pY3JvY29zbS9NUwptaWNyb2Nvc21pYwptaWNyb2RvdC9TTQptaWNyb2Vjb25vbWljcy9NCm1pY3JvZWxlY3Ryb25pYy9TCm1pY3JvZWxlY3Ryb25pY3MvTQptaWNyb2ZpYmVyL01TCm1pY3JvZmljaGUvTQptaWNyb2ZpbG0vR01EUwptaWNyb2Zsb3BwaWVzCm1pY3JvZ3Jvb3ZlL1NNCm1pY3JvbGlnaHQvTVMKbWljcm9sb2FuL01TCm1pY3JvbWFuYWdlL0dEU0wKbWljcm9tYW5hZ2VtZW50L00KbWljcm9tZXRlb3JpdGUvU00KbWljcm9tZXRlci9NUwptaWNyb24vTVMKbWljcm9vcmdhbmlzbS9NUwptaWNyb3Bob25lL1NNCm1pY3JvcHJvY2Vzc29yL01TCm1pY3Jvc2NvcGUvU00KbWljcm9zY29waWMKbWljcm9zY29waWNhbC9ZCm1pY3Jvc2NvcHkvTQptaWNyb3NlY29uZC9NUwptaWNyb3N1cmdlcnkvTQptaWNyb3dhdmUvRFNNR0IKbWljcm93YXZlYWJsZQptaWQKbWlkYWlyL00KbWlkZGF5L00KbWlkZGVuL01TCm1pZGRsZS9NR1MKbWlkZGxlYnJvdy9TTQptaWRkbGVtYW4vTQptaWRkbGVtZW4KbWlkZGxlbW9zdAptaWRkbGV3ZWlnaHQvTVMKbWlkZHkvU00KbWlkZmllbGQvUloKbWlkZ2UvU00KbWlkZ2V0L01TCm1pZGkvTVMKbWlkbGFuZC9NUwptaWRsaWZlL00KbWlkbW9zdAptaWRuaWdodC9NCm1pZHBvaW50L01TCm1pZHJpYi9NUwptaWRyaWZmL01TCm1pZHNlY3Rpb24vTVMKbWlkc2hpcG1hbi9NCm1pZHNoaXBtZW4KbWlkc2hpcHMKbWlkc2l6ZQptaWRzdC9NCm1pZHN0cmVhbS9NCm1pZHN1bW1lci9NCm1pZHRlcm0vTVMKbWlkdG93bi9NCm1pZHdheS9NUwptaWR3ZWVrL01TCm1pZHdpZmUvTUdEUwptaWR3aWZlcnkvU00KbWlkd2ludGVyL00KbWlkd2l2ZXMKbWlkeWVhci9NUwptaWVuL00KbWlmZi9EU0cKbWlnaHQndmUKbWlnaHQvTQptaWdodGlseQptaWdodGluZXNzL00KbWlnaHRuJ3QKbWlnaHR5L1RSUAptaWdub25ldHRlL1NNCm1pZ3JhaW5lL01TCm1pZ3JhbnQvTVMKbWlncmF0ZS9BR0RTCm1pZ3JhdGlvbi9TTQptaWdyYXRvcnkKbWlrYWRvL01TCm1pa2UvTUdEUwptaWwvU1pNUgptaWxhZHkvU00KbWlsY2gKbWlsZC9NUllUUAptaWxkZXcvU01ERwptaWxkbmVzcy9NCm1pbGUvTVMKbWlsZWFnZS9TTQptaWxlcG9zdC9NUwptaWxlci9NCm1pbGVzdG9uZS9NUwptaWxmL01TCm1pbGlldS9TTQptaWxpdGFuY3kvTQptaWxpdGFudC9NWVMKbWlsaXRhcmlseQptaWxpdGFyaXNtL00KbWlsaXRhcmlzdC9TTQptaWxpdGFyaXN0aWMKbWlsaXRhcml6YXRpb24vQ00KbWlsaXRhcml6ZS9DRFNHCm1pbGl0YXJ5L00KbWlsaXRhdGUvR0RTCm1pbGl0aWEvU00KbWlsaXRpYW1hbi9NCm1pbGl0aWFtZW4KbWlsay9NRFJTWkcKbWlsa2VyL00KbWlsa2luZXNzL00KbWlsa21haWQvTVMKbWlsa21hbi9NCm1pbGttZW4KbWlsa3NoYWtlL1NNCm1pbGtzb3AvTVMKbWlsa3dlZWQvU00KbWlsa3kvUlRQCm1pbGwvTURSU1pHSgptaWxsYWdlL00KbWlsbGVubmlhCm1pbGxlbm5pYWwvTQptaWxsZW5uaXVtL01TCm1pbGxlci9NCm1pbGxldC9NCm1pbGxpYXJkL01TCm1pbGxpYmFyL01TCm1pbGxpZ3JhbS9NUwptaWxsaWxpdGVyL01TCm1pbGxpbWV0ZXIvTVMKbWlsbGluZXIvTVMKbWlsbGluZXJ5L00KbWlsbGluZy9NCm1pbGxpb24vSFNNCm1pbGxpb25haXJlL1NNCm1pbGxpb25haXJlc3MvUwptaWxsaW9udGgvTQptaWxsaW9udGhzCm1pbGxpcGVkZS9TTQptaWxsaXNlY29uZC9TTQptaWxscG9uZC9TTQptaWxscmFjZS9TTQptaWxsc3RvbmUvU00KbWlsbHN0cmVhbS9NUwptaWxsd3JpZ2h0L1NNCm1pbG9tZXRlci9TCm1pbHF1ZXRvYXN0L1NNCm1pbHQvTURTRwptaW1lL01HRFMKbWltZW9ncmFwaC9HTUQKbWltZW9ncmFwaHMKbWltZXRpYwptaW1pYy9TTQptaW1pY2tlZAptaW1pY2tlci9TTQptaW1pY2tpbmcKbWltaWNyeS9TTQptaW1vc2EvU00KbWluCm1pbmFyZXQvTVMKbWluYXRvcnkKbWluY2UvRFJTTVpHCm1pbmNlbWVhdC9NCm1pbmNlci9NCm1pbmQncwptaW5kL0FEUlNaRwptaW5kYm9nZ2xpbmdseQptaW5kZWQvUAptaW5kZnVsL1lQCm1pbmRmdWxuZXNzL00KbWluZGxlc3MvWVAKbWluZGxlc3NuZXNzL00KbWluZHNldC9NUwptaW5lL01aR05EUlNYCm1pbmVmaWVsZC9TTQptaW5lci9NCm1pbmVyYWwvTVMKbWluZXJhbG9naWNhbAptaW5lcmFsb2dpc3QvTVMKbWluZXJhbG9neS9NCm1pbmVzdHJvbmUvTQptaW5lc3dlZXBlci9TTQptaW5nbGUvRFNHCm1pbmd5Cm1pbmkvTVMKbWluaWF0dXJlL01TCm1pbmlhdHVyaXN0L01TCm1pbmlhdHVyaXphdGlvbi9NCm1pbmlhdHVyaXplL0dEUwptaW5pYmFyL1MKbWluaWJpa2UvU00KbWluaWJ1cy9NUwptaW5pY2FiL1MKbWluaWNhbS9NUwptaW5pY29tcHV0ZXIvU00KbWluaWZsb3BwaWVzCm1pbmltL1NNCm1pbmltYWwvWQptaW5pbWFsaXNtL00KbWluaW1hbGlzdC9NUwptaW5pbWl6YXRpb24vTQptaW5pbWl6ZS9EU0cKbWluaW11bS9NUwptaW5pbmcvTQptaW5pb24vTQptaW5pc2VyaWVzL00KbWluaXNraXJ0L01TCm1pbmlzdGVyL1NHTUQKbWluaXN0ZXJpYWwKbWluaXN0cmFudC9NUwptaW5pc3RyYXRpb24vTVMKbWluaXN0cnkvU00KbWluaXZhbi9NUwptaW5rL01TCm1pbm5lc2luZ2VyL01TCm1pbm5vdy9TTQptaW5vci9TTURHCm1pbm9yaXR5L1NNCm1pbm94aWRpbC9NCm1pbnN0ZXIvTVMKbWluc3RyZWwvU00KbWluc3RyZWxzeS9NCm1pbnQvTURSU1pHCm1pbnRhZ2UvTQptaW50ZXIvTQptaW50eS9SVAptaW51ZW5kL01TCm1pbnVldC9TTQptaW51cy9NUwptaW51c2N1bGUvTVMKbWludXRlL1BEUlNNWVRHCm1pbnV0ZW1hbi9NCm1pbnV0ZW1lbgptaW51dGVuZXNzL00KbWludXRpYS9NCm1pbnV0aWFlCm1pbngvTVMKbWlyYWNsZS9NUwptaXJhY3Vsb3VzL1kKbWlyYWdlL1NNCm1pcmUvTUdEUwptaXJyb3IvR1NNRAptaXJ0aC9NCm1pcnRoZnVsL1BZCm1pcnRoZnVsbmVzcy9NCm1pcnRobGVzcy9ZCm1pcnkvUlQKbWlzYWRkcmVzcy9EU0cKbWlzYWR2ZW50dXJlL01TCm1pc2FsaWduZWQKbWlzYWxpZ25tZW50L00KbWlzYWxsaWFuY2UvTVMKbWlzYW50aHJvcGUvU00KbWlzYW50aHJvcGljCm1pc2FudGhyb3BpY2FsbHkKbWlzYW50aHJvcGlzdC9NUwptaXNhbnRocm9weS9NCm1pc2FwcGxpY2F0aW9uL00KbWlzYXBwbHkvRFNHTlgKbWlzYXBwcmVoZW5kL0dTRAptaXNhcHByZWhlbnNpb24vTVMKbWlzYXBwcm9wcmlhdGUvWERTR04KbWlzYXBwcm9wcmlhdGlvbi9NCm1pc2JlZ290dGVuCm1pc2JlaGF2ZS9HRFMKbWlzYmVoYXZpb3IvTQptaXNjCm1pc2NhbGN1bGF0ZS9EU1hHTgptaXNjYWxjdWxhdGlvbi9NCm1pc2NhbGwvRFNHCm1pc2NhcnJpYWdlL01TCm1pc2NhcnJ5L0dEUwptaXNjYXN0L1NHCm1pc2NlZ2VuYXRpb24vTQptaXNjZWxsYW5lb3VzL1kKbWlzY2VsbGFueS9TTQptaXNjaGFuY2UvU00KbWlzY2hpZWYvTQptaXNjaGlldm91cy9ZUAptaXNjaGlldm91c25lc3MvTQptaXNjaWJpbGl0eS9NCm1pc2NpYmxlCm1pc2NvbW11bmljYXRpb24vUwptaXNjb25jZWl2ZS9HRFMKbWlzY29uY2VwdGlvbi9TTQptaXNjb25kdWN0L01ER1MKbWlzY29uc3RydWN0aW9uL01TCm1pc2NvbnN0cnVlL0dEUwptaXNjb3VudC9NRFNHCm1pc2NyZWFudC9TTQptaXNjdWUvRFNNRwptaXNkZWFsL0dNUwptaXNkZWFsdAptaXNkZWVkL01TCm1pc2RlbWVhbm9yL01TCm1pc2RpYWdub3NlL0dEUwptaXNkaWFnbm9zaXMvTQptaXNkaWQKbWlzZGlyZWN0L1NERwptaXNkaXJlY3Rpb24vTQptaXNkby9KRwptaXNkb2VzCm1pc2RvaW5nL00KbWlzZG9uZQptaXNlci9TQk1ZCm1pc2VyYWJsZW5lc3MvTQptaXNlcmFibHkKbWlzZXJsaW5lc3MvTQptaXNlcnkvU00KbWlzZmVhc2FuY2UvTQptaXNmZWF0dXJlL1MKbWlzZmlsZS9HRFMKbWlzZmlyZS9NR0RTCm1pc2ZpdC9TTQptaXNmaXR0ZWQKbWlzZml0dGluZwptaXNmb3J0dW5lL1NNCm1pc2dpdmluZy9NUwptaXNnb3Zlcm4vU0RHTAptaXNnb3Zlcm5tZW50L00KbWlzZ3VpZGFuY2UvTQptaXNndWlkZS9EU0cKbWlzZ3VpZGVkL1kKbWlzaGFuZGxlL0RTRwptaXNoYXAvU00KbWlzaGVhci9HUwptaXNoZWFyZAptaXNoaXQvUwptaXNoaXR0aW5nCm1pc2htYXNoL01TCm1pc2lkZW50aWZ5L0dEUwptaXNpbmZvcm0vREdTCm1pc2luZm9ybWF0aW9uL00KbWlzaW50ZXJwcmV0L1NHRAptaXNpbnRlcnByZXRhdGlvbi9TTQptaXNqdWRnZS9EU0cKbWlzanVkZ21lbnQvU00KbWlzbGFiZWwvR1NECm1pc2xhaWQKbWlzbGF5L0dTCm1pc2xlYWQvR1MKbWlzbGVhZGluZy9ZCm1pc2xlZAptaXNtYW5hZ2UvTEdEUwptaXNtYW5hZ2VtZW50L00KbWlzbWF0Y2gvR01EUwptaXNuYW1lL0dEUwptaXNub21lci9NUwptaXNvZ2FtaXN0L01TCm1pc29nYW15L00KbWlzb2d5bmlzdC9TTQptaXNvZ3luaXN0aWMKbWlzb2d5bm91cwptaXNvZ3lueS9NCm1pc3BsYWNlL0dMRFMKbWlzcGxhY2VtZW50L00KbWlzcGxheS9HTURTCm1pc3ByaW50L0dNRFMKbWlzcHJpc2lvbi9NCm1pc3Byb25vdW5jZS9EU0cKbWlzcHJvbnVuY2lhdGlvbi9TTQptaXNxdW90YXRpb24vTVMKbWlzcXVvdGUvTUdEUwptaXNyZWFkL0dKUwptaXNyZWFkaW5nL00KbWlzcmVwb3J0L01ER1MKbWlzcmVwcmVzZW50L0dEUwptaXNyZXByZXNlbnRhdGlvbi9NUwptaXNydWxlL01HRFMKbWlzcydzCm1pc3MvRURTR1YKbWlzc2FsL0VTTQptaXNzZWQvVQptaXNzaGFwZS9HRFMKbWlzc2hhcGVuCm1pc3NpbGUvTVMKbWlzc2lsZXJ5L00KbWlzc2lvbi9BTVMKbWlzc2lvbmFyeS9TTQptaXNzaW9uZXIvU00KbWlzc2l2ZS9NUwptaXNzcGVhay9HUwptaXNzcGVsbC9HREpTCm1pc3NwZWxsaW5nL00KbWlzc3BlbmQvR1MKbWlzc3BlbnQKbWlzc3Bva2UKbWlzc3Bva2VuCm1pc3N0YXRlL0dEU0wKbWlzc3RhdGVtZW50L1NNCm1pc3N0ZXAvTVMKbWlzc3VzL01TCm1pc3QncwptaXN0L0NEUlNaRwptaXN0YWthYmxlL1UKbWlzdGFrZS9CTUdTCm1pc3Rha2VuL1kKbWlzdGVyJ3MKbWlzdGlseQptaXN0aW1lL0dEUwptaXN0aW5lc3MvTQptaXN0bGV0b2UvTQptaXN0b29rCm1pc3RyYWwvTVMKbWlzdHJhbnNsYXRlZAptaXN0cmVhdC9MREdTCm1pc3RyZWF0bWVudC9NCm1pc3RyZXNzL01TCm1pc3RyaWFsL01TCm1pc3RydXN0L01EU0cKbWlzdHJ1c3RmdWwvWQptaXN0eS9QUlQKbWlzdHlwZS9HUwptaXN1bmRlcnN0YW5kL1NHSgptaXN1bmRlcnN0YW5kaW5nL00KbWlzdW5kZXJzdG9vZAptaXN1c2UvRFNNRwptaXRlL01aUlMKbWl0ZXIvTURHCm1pdGlnYXRlL0RTR04KbWl0aWdhdGVkL1UKbWl0aWdhdGlvbi9NCm1pdG9jaG9uZHJpYQptaXRvY2hvbmRyaWFsCm1pdG9jaG9uZHJpb24KbWl0b3NlcwptaXRvc2lzL00KbWl0b3RpYwptaXRyYWwKbWl0dC9NTlNYCm1pdHRlbi9NCm1peC9aR01EUlNCCm1peGVkL1UKbWl4ZXIvTQptaXh0dXJlL1NNCm1penplbi9NUwptaXp6ZW5tYXN0L1NNCm1rYXkKbWtzCm1sCm1tCm1uZW1vbmljL01TCm1uZW1vbmljYWxseQptby9DS0hTCm1vYW4vTURSU1pHCm1vYW5lci9NCm1vYXQvTURTCm1vYidzCm1vYi9DUwptb2JiZWQvQwptb2JiaW5nL0MKbW9iaWxlL01TCm1vYmlsaXR5L00KbW9iaWxpemF0aW9uL0NNCm1vYmlsaXphdGlvbnMKbW9iaWxpemUvQ0RTRwptb2JpbGl6ZXIvU00KbW9ic3Rlci9TTQptb2NjYXNpbi9TTQptb2NoYS9TTQptb2NrL0RSU1pHCm1vY2tlci9NCm1vY2tlcnkvU00KbW9ja2luZy9ZCm1vY2tpbmdiaXJkL1NNCm1vZC9TVE0KbW9kYWwvU00KbW9kYWxpdHkvUwptb2RkZWQKbW9kZGluZwptb2RlL01TCm1vZGVsL1pHU0pNRFIKbW9kZWxlci9NCm1vZGVsaW5nL00KbW9kZW0vU00KbW9kZXJhdGUvTVlHTlBEUwptb2RlcmF0ZW5lc3MvTQptb2RlcmF0aW9uL00KbW9kZXJhdG9yL1NNCm1vZGVybi9NWVBTCm1vZGVybmlzbS9NCm1vZGVybmlzdC9TTQptb2Rlcm5pc3RpYwptb2Rlcm5pdHkvTQptb2Rlcm5pemF0aW9uL00KbW9kZXJuaXplL0RSU1pHCm1vZGVybml6ZXIvTQptb2Rlcm5uZXNzL00KbW9kZXN0L1kKbW9kZXN0eS9NCm1vZGljdW0vU00KbW9kaWZpYWJsZQptb2RpZmljYXRpb24vTQptb2RpZmllZC9VCm1vZGlmaWVyL00KbW9kaWZ5L0RSU1haR04KbW9kaXNoL1lQCm1vZGlzaG5lc3MvTQptb2R1bGFyCm1vZHVsYXRlL0NHTkRTCm1vZHVsYXRpb24vQ00KbW9kdWxhdGlvbnMKbW9kdWxhdG9yL01TCm1vZHVsZS9NUwptb2R1bG8KbW9kdWx1cwptb2dneQptb2d1bC9TTQptb2hhaXIvTQptb2kKbW9pZXR5L1NNCm1vaWwvTURTRwptb2lyZS9TTQptb2lzdC9YVFBOUlkKbW9pc3Rlbi9EUlpHCm1vaXN0ZW5lci9NCm1vaXN0bmVzcy9NCm1vaXN0dXJlL00KbW9pc3R1cml6ZS9aR0RSUwptb2lzdHVyaXplci9NCm1vbGFyL1NNCm1vbGFzc2VzL00KbW9sZC9NRFJKU1pHCm1vbGRib2FyZC9TTQptb2xkZXIvR01ECm1vbGRpbmVzcy9NCm1vbGRpbmcvTQptb2xkeS9UUFIKbW9sZS9NUwptb2xlY3VsYXIKbW9sZWN1bGFyaXR5L00KbW9sZWN1bGUvU00KbW9sZWhpbGwvU00KbW9sZXNraW4vTQptb2xlc3QvRFJaR1MKbW9sZXN0YXRpb24vTQptb2xlc3RlZC9VCm1vbGVzdGVyL00KbW9sbC9NUwptb2xsaWZpY2F0aW9uL00KbW9sbGlmeS9EU05HCm1vbGx1c2Nhbgptb2xsdXNrL1NNCm1vbGx5L1NNCm1vbGx5Y29kZGxlL0RTTUcKbW9sdC9NRE5SU1pHCm1vbHRlci9NCm1vbHliZGVudW0vTQptb20vU00KbW9tZW50L01TCm1vbWVudGEKbW9tZW50YXJpbHkKbW9tZW50YXJpbmVzcy9NCm1vbWVudGFyeS9QCm1vbWVudG91cy9QWQptb21lbnRvdXNuZXNzL00KbW9tZW50dW0vTQptb21teS9TTQptb25hcmNoL00KbW9uYXJjaGljCm1vbmFyY2hpY2FsCm1vbmFyY2hpc20vTQptb25hcmNoaXN0L01TCm1vbmFyY2hpc3RpYwptb25hcmNocwptb25hcmNoeS9TTQptb25hc3RlcnkvU00KbW9uYXN0aWMvTVMKbW9uYXN0aWNhbC9ZCm1vbmFzdGljaXNtL00KbW9uYXVyYWwKbW9uZXRhcmlseQptb25ldGFyaXNtL00KbW9uZXRhcmlzdC9NUwptb25ldGFyeQptb25ldGl6ZS9DR0RTCm1vbmV5L1NNRAptb25leWJhZy9NUwptb25leWJveC9TCm1vbmV5bGVuZGVyL1NNCm1vbmV5bWFrZXIvU00KbW9uZXltYWtpbmcvTQptb25nZXIvTURHUwptb25nb2wvUwptb25nb2xpc20vTQptb25nb2xvaWQvTVMKbW9uZ29vc2UvTVMKbW9uZ3JlbC9TTQptb25pZXMKbW9uaWtlci9TTQptb25pc20vTQptb25pc3QvTVMKbW9uaXRpb24vU00KbW9uaXRvci9TTURHCm1vbml0b3J5Cm1vbmsvTVMKbW9ua2V5L01ER1MKbW9ua2V5c2hpbmUvU00KbW9ua2lzaAptb25rc2hvb2QvU00KbW9uby9NCm1vbm9jaHJvbWF0aWMKbW9ub2Nocm9tZS9NUwptb25vY2xlL0RTTQptb25vY2xvbmFsCm1vbm9jb3R5bGVkb24vU00KbW9ub2NvdHlsZWRvbm91cwptb25vY3VsYXIKbW9ub2RpYwptb25vZGlzdC9TTQptb25vZHkvU00KbW9ub2dhbWlzdC9NUwptb25vZ2Ftb3VzL1kKbW9ub2dhbXkvTQptb25vZ3JhbS9TTQptb25vZ3JhbW1lZAptb25vZ3JhbW1pbmcKbW9ub2dyYXBoL00KbW9ub2dyYXBocwptb25vbGluZ3VhbC9NUwptb25vbGl0aC9NCm1vbm9saXRoaWMKbW9ub2xpdGhzCm1vbm9sb2dpc3QvU00KbW9ub2xvZ3VlL1NNCm1vbm9tYW5pYS9NCm1vbm9tYW5pYWMvTVMKbW9ub21hbmlhY2FsCm1vbm9tZXIvU00KbW9ub251Y2xlb3Npcy9NCm1vbm9waG9uaWMKbW9ub3BsYW5lL1NNCm1vbm9wb2xpc3QvU00KbW9ub3BvbGlzdGljCm1vbm9wb2xpemF0aW9uL00KbW9ub3BvbGl6ZS9EUlNaRwptb25vcG9saXplci9NCm1vbm9wb2x5L1NNCm1vbm9yYWlsL01TCm1vbm9zeWxsYWJpYwptb25vc3lsbGFibGUvTVMKbW9ub3RoZWlzbS9NCm1vbm90aGVpc3QvU00KbW9ub3RoZWlzdGljCm1vbm90b25lL01TCm1vbm90b25pYwptb25vdG9uaWNhbGx5Cm1vbm90b25vdXMvUFkKbW9ub3Rvbm91c25lc3MvTQptb25vdG9ueS9NCm1vbm91bnNhdHVyYXRlZAptb25veGlkZS9NUwptb25zZWlnbmV1ci9NCm1vbnNpZXVyL00KbW9uc2lnbm9yL1NNCm1vbnNvb24vU00KbW9uc29vbmFsCm1vbnN0ZXIvU00KbW9uc3RyYW5jZS9BU00KbW9uc3Ryb3NpdHkvU00KbW9uc3Ryb3VzL1kKbW9udGFnZS9TTQptb250aC9NWQptb250aGx5L1NNCm1vbnRocwptb251bWVudC9NUwptb251bWVudGFsL1kKbW9vL1NHTUQKbW9vY2gvWkdNRFJTCm1vb2NoZXIvTQptb29kL01TCm1vb2RpbHkKbW9vZGluZXNzL00KbW9vZHkvVFBSCm1vb24vTURTRwptb29uYmVhbS9NUwptb29ubGVzcwptb29ubGlnaHQvU01EUlpHCm1vb25saWdodGVyL00KbW9vbmxpZ2h0aW5nL00KbW9vbmxpdAptb29uc2NhcGUvU00KbW9vbnNoaW5lL01aUlMKbW9vbnNoaW5lci9NCm1vb25zaG90L01TCm1vb25zdG9uZS9NUwptb29uc3RydWNrCm1vb253YWxrL01TCm1vb3IvTURKU0cKbW9vcmhlbi9TCm1vb3JpbmcvTQptb29ybGFuZC9NUwptb29zZS9NCm1vb3QvRFNHCm1vcC9TWkdNRFIKbW9wZS9NUwptb3BlZC9TTQptb3Blci9NCm1vcGV5Cm1vcGllcgptb3BpZXN0Cm1vcGlzaAptb3BwZWQKbW9wcGV0L01TCm1vcHBpbmcKbW9yYWluZS9TTQptb3JhbC9TTVkKbW9yYWxlL00KbW9yYWxpc3QvTVMKbW9yYWxpc3RpYwptb3JhbGlzdGljYWxseQptb3JhbGl0aWVzCm1vcmFsaXR5L1VNCm1vcmFsaXphdGlvbi9DTQptb3JhbGl6ZS9DR0RTCm1vcmFsaXplci9NUwptb3Jhc3MvTVMKbW9yYXRvcml1bS9TTQptb3JheS9TTQptb3JiaWQvWVAKbW9yYmlkaXR5L00KbW9yYmlkbmVzcy9NCm1vcmRhbmN5L00KbW9yZGFudC9TTVkKbW9yZS9NUwptb3JlaXNoCm1vcmVsL1NNCm1vcmVvdmVyCm1vcmVzL00KbW9yZ3VlL01TCm1vcmlidW5kCm1vcm4vTUpTRwptb3JuaW5nL00KbW9yb2Njby9NCm1vcm9uL1NNCm1vcm9uaWMKbW9yb25pY2FsbHkKbW9yb3NlL1lQCm1vcm9zZW5lc3MvTQptb3JwaC9HRAptb3JwaGVtZS9NUwptb3JwaGVtaWMKbW9ycGhpYS9NCm1vcnBoaW5lL00KbW9ycGhpbmcvTQptb3JwaG9sb2dpY2FsCm1vcnBob2xvZ3kvTQptb3JwaHMKbW9ycm93L01TCm1vcnNlbC9NUwptb3J0YWwvTVlTCm1vcnRhbGl0eS9NCm1vcnRhci9NRFNHCm1vcnRhcmJvYXJkL1NNCm1vcnRnYWdlJ3MKbW9ydGdhZ2UvQUdEUwptb3J0Z2FnZWUvTVMKbW9ydGdhZ29yL01TCm1vcnRpY2lhbi9NUwptb3J0aWZpY2F0aW9uL00KbW9ydGlmeS9OR0RTCm1vcnRpc2UvRFNNRwptb3J0dWFyeS9TTQptb3NhaWMvTVMKbW9zZXkvU0dECm1vc2gvRFNHCm1vc3F1ZS9NUwptb3NxdWl0by9NCm1vc3F1aXRvZXMKbW9zcy9NUwptb3NzYmFjay9TTQptb3NzeS9UUgptb3N0L01ZCm1vdC9TTQptb3RlJ3MKbW90ZS9LQ1hTVk4KbW90ZWwvU00KbW90ZXQvU00KbW90aC9NCm1vdGhiYWxsL0dNRFMKbW90aGVyL01EWVNHCm1vdGhlcmJvYXJkL1NNCm1vdGhlcmZ1Y2tlci9NUyEKbW90aGVyZnVja2luZy8hCm1vdGhlcmhvb2QvTQptb3RoZXJsYW5kL01TCm1vdGhlcmxlc3MKbW90aGVybGluZXNzL00KbW90aHMKbW90aWYvU00KbW90aWxlL1MKbW90aWxpdHkvTQptb3Rpb24vS0NNCm1vdGlvbmVkCm1vdGlvbmluZwptb3Rpb25sZXNzL1lQCm1vdGlvbmxlc3NuZXNzL00KbW90aXZhdGUvQ0RTRwptb3RpdmF0ZWQvVQptb3RpdmF0aW9uL1NNCm1vdGl2YXRpb25hbAptb3RpdmF0b3IvU00KbW90aXZlL01TCm1vdGl2ZWxlc3MKbW90bGV5L01TCm1vdGxpZXIKbW90bGllc3QKbW90b2Nyb3NzL01TCm1vdG9yL1NHTUQKbW90b3JiaWtlL01HRFMKbW90b3Jib2F0L01TCm1vdG9yY2FkZS9NUwptb3RvcmNhci9TTQptb3RvcmN5Y2xlL0RTTUcKbW90b3JjeWNsaXN0L01TCm1vdG9yaXN0L1NNCm1vdG9yaXphdGlvbi9NCm1vdG9yaXplL0RTRwptb3Rvcm1hbi9NCm1vdG9ybWVuCm1vdG9ybW91dGgvTQptb3Rvcm1vdXRocwptb3RvcndheS9TTQptb3R0bGUvR0RTCm1vdHRvL00KbW90dG9lcwptb3VlL01TCm1vdW5kL1NHTUQKbW91bnQvRUFTR01ECm1vdW50YWJsZQptb3VudGFpbi9TTQptb3VudGFpbmVlci9TTURHCm1vdW50YWluZWVyaW5nL00KbW91bnRhaW5vdXMKbW91bnRhaW5zaWRlL1NNCm1vdW50YWludG9wL1NNCm1vdW50ZWJhbmsvTVMKbW91bnRlZC9VCm1vdW50ZXIvTVMKbW91bnRpbmcvU00KbW91cm4vU1pHRFIKbW91cm5lZC9VCm1vdXJuZXIvTQptb3VybmZ1bC9ZUAptb3VybmZ1bG5lc3MvTQptb3VybmluZy9NCm1vdXNlL0RSU01aRwptb3VzZXIvTQptb3VzZXRyYXAvU00KbW91c2V0cmFwcGVkCm1vdXNldHJhcHBpbmcKbW91c2luZXNzL00KbW91c3Nha2EvUwptb3Vzc2UvTUdEUwptb3VzeS9QVFIKbW91dGgvR01ECm1vdXRoZmVlbAptb3V0aGZ1bC9NUwptb3V0aGluZXNzL00KbW91dGhwaWVjZS9NUwptb3V0aHMKbW91dGh3YXNoL01TCm1vdXRod2F0ZXJpbmcKbW91dGh5L1BUUgptb3V0b24vTQptb3ZhYmxlL1NNCm1vdmUvQU1aR0RSU0IKbW92ZWQvVQptb3ZlbWVudC9TTQptb3Zlci9BTQptb3ZpZS9TTQptb3ZpZWdvZXIvU00KbW92aW5nL1kKbW93L1NaR01EUgptb3dlci9NCm1veGllL00KbW96emFyZWxsYS9NCm1wCm1wZwptcGgKbXQKbXRnCm10Z2UKbXUvU00KbXVjaC9NCm11Y2lsYWdlL00KbXVjaWxhZ2lub3VzCm11Y2svTURTRwptdWNrcmFrZS9EUlNaRwptdWNrcmFrZXIvTQptdWNreS9UUgptdWNvdXMKbXVjdXMvTQptdWQvTQptdWRkaWx5Cm11ZGRpbmVzcy9NCm11ZGRsZS9NR0RTCm11ZGRsZWhlYWRlZAptdWRkeS9QVEdEUlMKbXVkZmxhcC9TCm11ZGZsYXQvTVMKbXVkZ3VhcmQvU00KbXVkcGFjay9TCm11ZHJvb20vTVMKbXVkc2xpZGUvTVMKbXVkc2xpbmdlci9TTQptdWRzbGluZ2luZy9NCm11ZW5zdGVyL00KbXVlc2xpCm11ZXp6aW4vTVMKbXVmZi9NRFNHCm11ZmZpbi9NUwptdWZmbGUvWkdEUlMKbXVmZmxlci9NCm11ZnRpL1NNCm11Zy9TTQptdWdmdWwvTVMKbXVnZ2VkCm11Z2dlci9NUwptdWdnaW5lc3MvTQptdWdnaW5nL01TCm11Z2dpbnMKbXVnZ2xlL01TCm11Z2d5L1BUUgptdWdzaG90L01TCm11Z3d1bXAvTVMKbXVqYWhlZGRpbgptdWtsdWsvTVMKbXVsYXR0by9NCm11bGF0dG9lcwptdWxiZXJyeS9TTQptdWxjaC9HTURTCm11bGN0L1NHTUQKbXVsZS9NUwptdWxlc2tpbm5lci9NUwptdWxldGVlci9NUwptdWxpc2gvUFkKbXVsaXNobmVzcy9NCm11bGwvRFNHCm11bGxhaC9NCm11bGxhaHMKbXVsbGVpbi9NCm11bGxldC9NUwptdWxsaWdhbi9TTQptdWxsaWdhdGF3bnkvTQptdWxsaW9uL1NNRAptdWx0aQptdWx0aWNvbG9yZWQKbXVsdGljdWx0dXJhbAptdWx0aWN1bHR1cmFsaXNtL00KbXVsdGlkaW1lbnNpb25hbAptdWx0aWRpc2NpcGxpbmFyeQptdWx0aWZhY2V0ZWQKbXVsdGlmYW1pbHkKbXVsdGlmYXJpb3VzL1BZCm11bHRpZmFyaW91c25lc3MvTQptdWx0aWZvcm0KbXVsdGlncmFpbgptdWx0aWxhdGVyYWwvWQptdWx0aWxheWVyZWQKbXVsdGlsZXZlbAptdWx0aWxpbmd1YWwKbXVsdGlsaW5ndWFsaXNtL00KbXVsdGltZWRpYS9NCm11bHRpbWlsbGlvbmFpcmUvU00KbXVsdGluYXRpb25hbC9TTQptdWx0aXBhcnR5Cm11bHRpcGxheWVyL00KbXVsdGlwbGUvTVMKbXVsdGlwbGV4L1pHTURSUwptdWx0aXBsZXhlci9NCm11bHRpcGxpY2FuZC9NUwptdWx0aXBsaWNhdGlvbi9NCm11bHRpcGxpY2F0aXZlCm11bHRpcGxpY2l0eS9TTQptdWx0aXBsaWVyL00KbXVsdGlwbHkvTlpHRFJTWAptdWx0aXByb2Nlc3NpbmcKbXVsdGlwcm9jZXNzb3IvU00KbXVsdGlwdXJwb3NlCm11bHRpcmFjaWFsCm11bHRpc3RhZ2UKbXVsdGlzdG9yeQptdWx0aXRhc2svR1MKbXVsdGl0YXNraW5nL00KbXVsdGl0dWRlL1NNCm11bHRpdHVkaW5vdXMKbXVsdGl2YXJpYXRlCm11bHRpdmVyc2UvU00KbXVsdGl2aXRhbWluL01TCm11bHRpeWVhcgptdW0vU00KbXVtYmxlL01aR0RSUwptdW1ibGVyL00KbXVtYmxldHlwZWcvTQptdW1tZXIvTVMKbXVtbWVyeS9NCm11bW1pZmljYXRpb24vTQptdW1taWZ5L0dORFMKbXVtbXkvU00KbXVtcHMvTQptdW4KbXVuY2gvR0RTCm11bmNoaWVzL00KbXVuY2hraW4vU00KbXVuZGFuZS9TWQptdW5nL0RTRwptdW5pY2lwYWwvU01ZCm11bmljaXBhbGl0eS9TTQptdW5pZmljZW5jZS9NCm11bmlmaWNlbnQvWQptdW5pdGlvbi9NREdTCm11cmFsL1NNCm11cmFsaXN0L1NNCm11cmRlci9aR01EUlMKbXVyZGVyZXIvTQptdXJkZXJlc3MvTVMKbXVyZGVyb3VzL1kKbXVyay9NUwptdXJraWx5Cm11cmtpbmVzcy9NCm11cmt5L1BUUgptdXJtdXIvWkdKTURSUwptdXJtdXJlci9NCm11cm11cmluZy9NCm11cm11cm91cwptdXJyYWluL00KbXVzY2F0L01TCm11c2NhdGVsL1NNCm11c2NsZS9NR0RTCm11c2NsZWJvdW5kCm11c2NsZW1hbgptdXNjbGVtZW4KbXVzY2x5Cm11c2N1bGFyL1kKbXVzY3VsYXJpdHkvTQptdXNjdWxhdHVyZS9NCm11c2UvTUdEU0oKbXVzZXR0ZS9NUwptdXNldW0vTVMKbXVzaC9NRFJTWkcKbXVzaGluZXNzL00KbXVzaHJvb20vR1NNRAptdXNoeS9QVFIKbXVzaWMvU00KbXVzaWNhbC9NWVMKbXVzaWNhbGUvTVMKbXVzaWNhbGl0eS9NCm11c2ljaWFuL1NNWQptdXNpY2lhbnNoaXAvTQptdXNpY29sb2dpY2FsCm11c2ljb2xvZ2lzdC9NUwptdXNpY29sb2d5L00KbXVzaW5nL01ZCm11c2svTQptdXNrZWcvTVMKbXVza2VsbHVuZ2UvTVMKbXVza2V0L01TCm11c2tldGVlci9NUwptdXNrZXRyeS9NCm11c2tpZS9NCm11c2tpbmVzcy9NCm11c2ttZWxvbi9TTQptdXNrb3gvTU4KbXVza3JhdC9NUwptdXNreS9QVFJTCm11c2xpbi9NCm11c3MvTURTRwptdXNzZWwvTVMKbXVzc3kvVFIKbXVzdCd2ZQptdXN0L01SU1oKbXVzdGFjaGUvTURTCm11c3RhY2hpby9TTUQKbXVzdGFuZy9NUwptdXN0YXJkL00KbXVzdGVyL0dNRAptdXN0aWx5Cm11c3RpbmVzcy9NCm11c3RuJ3QKbXVzdHkvUFRSCm11dGFiaWxpdHkvTQptdXRhYmx5Cm11dGFnZW4vTVMKbXV0YW50L01TCm11dGF0ZS9YR05WRFMKbXV0YXRpb24vTQptdXRhdGlvbmFsCm11dGUvTVlUR0RSU1BCCm11dGVuZXNzL00KbXV0aWxhdGUvRFNHTlgKbXV0aWxhdGlvbi9NCm11dGlsYXRvci9TTQptdXRpbmVlci9TTQptdXRpbm91cy9ZCm11dGlueS9HRFNNCm11dHQvTVMKbXV0dGVyL1pHSk1EUlMKbXV0dGVyZXIvTQptdXR0ZXJpbmcvTQptdXR0b24vTQptdXR0b25jaG9wcy9NCm11dHRvbnkKbXV0dWFsL1kKbXV0dWFsaXR5L00KbXV1bXV1L01TCm11emFrCm11enppbHkKbXV6emxlL0RTTUcKbXV6enkvUApteQpteWNvbG9naXN0L1NNCm15Y29sb2d5L00KbXllbGl0aXMvTQpteW5hL01TCm15b2NhcmRpYWwKbXlvY2FyZGl1bQpteW9waWEvTQpteW9waWMKbXlvcGljYWxseQpteXJpYWQvU00KbXlybWlkb24vTVMKbXlycmgvTQpteXJ0bGUvU00KbXlzCm15c2VsZgpteXN0ZXJpb3VzL1BZCm15c3RlcmlvdXNuZXNzL00KbXlzdGVyeS9TTQpteXN0aWMvU00KbXlzdGljYWwvWQpteXN0aWNpc20vTQpteXN0aWZpY2F0aW9uL0NNCm15c3RpZnkvQ0RTR04KbXlzdGlxdWUvTQpteXRoL00KbXl0aGljCm15dGhpY2FsCm15dGhvbG9naWNhbApteXRob2xvZ2lzdC9TTQpteXRob2xvZ2l6ZS9EU0cKbXl0aG9sb2d5L1NNCm15dGhzCm15eG9tYXRvc2lzCm4vSUtUSApuYWFuL1MKbmFiL1MKbmFiYmVkCm5hYmJpbmcKbmFib2IvU00KbmFjZWxsZS9TTQpuYWNoby9TTQpuYWNyZS9NCm5hY3Jlb3VzCm5hZGlyL1NNCm5hZQpuYWZmL1JUCm5hZy9TTQpuYWdnZWQKbmFnZ2VyL01TCm5hZ2dpbmcKbmFnd2FyZQpuYWgKbmFpYWQvU00KbmFpZi9NUwpuYWlsL01EU0cKbmFpbGJydXNoL01TCm5haXZlL1JZVApuYWl2ZXRlL00KbmFpdmV0eS9NCm5ha2VkL1BZCm5ha2VkbmVzcy9NCm5hbWUncwpuYW1lL0FHRFMKbmFtZWFibGUvVQpuYW1lZC9VCm5hbWVkcm9wCm5hbWVkcm9wcGluZy9NCm5hbWVsZXNzL1kKbmFtZWx5Cm5hbWVwbGF0ZS9NUwpuYW1lc2FrZS9TTQpuYW5ueS9TTQpuYW5vYm90L1MKbmFub3NlY29uZC9TTQpuYW5vdGVjaG5vbG9neS9TTQpuYXAvU00KbmFwYWxtL01EU0cKbmFwZS9NUwpuYXBodGhhL00KbmFwaHRoYWxlbmUvTQpuYXBraW4vTVMKbmFwbGVzcwpuYXBvbGVvbi9TTQpuYXBwZWQKbmFwcGVyL01TCm5hcHBpbmcKbmFwcHkvVFJTTQpuYXJjL01TCm5hcmNpc3Npc20vTQpuYXJjaXNzaXN0L01TCm5hcmNpc3Npc3RpYwpuYXJjaXNzdXMvTQpuYXJjb2xlcHN5L00KbmFyY29sZXB0aWMKbmFyY29zZXMKbmFyY29zaXMvTQpuYXJjb3RpYy9TTQpuYXJjb3RpemF0aW9uL00KbmFyY290aXplL0dEUwpuYXJrCm5hcmt5Cm5hcnJhdGUvR05WRFNYCm5hcnJhdGlvbi9NCm5hcnJhdGl2ZS9TTQpuYXJyYXRvci9TTQpuYXJyb3cvUFRHTURSWVMKbmFycm93bmVzcy9NCm5hcndoYWwvTVMKbmFyeQpuYXNhbC9TTVkKbmFzYWxpdHkvTQpuYXNhbGl6YXRpb24vTQpuYXNhbGl6ZS9EU0cKbmFzY2VuY2UvQU0KbmFzY2VudC9BCm5hc3RpbHkKbmFzdGluZXNzL00KbmFzdHVydGl1bS9TTQpuYXN0eS9QVFIKbmF0YWwKbmF0Y2gKbmF0aW9uL01TCm5hdGlvbmFsL01ZUwpuYXRpb25hbGlzbS9NCm5hdGlvbmFsaXN0L1NNCm5hdGlvbmFsaXN0aWMKbmF0aW9uYWxpc3RpY2FsbHkKbmF0aW9uYWxpdHkvU00KbmF0aW9uYWxpemF0aW9uL01TCm5hdGlvbmFsaXplL0NEU0cKbmF0aW9uaG9vZC9NCm5hdGlvbndpZGUKbmF0aXZlL01TCm5hdGl2aXR5L1NNCm5hdGwKbmF0dGVyL0dNRFMKbmF0dGlseQpuYXR0aW5lc3MvTQpuYXR0eS9QVFIKbmF0dXJhbCdzCm5hdHVyYWwvVVBZCm5hdHVyYWxpc20vTQpuYXR1cmFsaXN0L1NNCm5hdHVyYWxpc3RpYwpuYXR1cmFsaXphdGlvbi9NCm5hdHVyYWxpemUvRFNHCm5hdHVyYWxuZXNzL1VNCm5hdHVyYWxzCm5hdHVyZSdzCm5hdHVyZS9DUwpuYXR1cmlzbQpuYXR1cmlzdC9TCm5hdWdodC9NUwpuYXVnaHRpbHkKbmF1Z2h0aW5lc3MvTQpuYXVnaHR5L1BUUgpuYXVzZWEvTQpuYXVzZWF0ZS9HRFMKbmF1c2VhdGluZy9ZCm5hdXNlb3VzL1BZCm5hdXNlb3VzbmVzcy9NCm5hdXRpY2FsL1kKbmF1dGlsdXMvTVMKbmF2YWwKbmF2ZS9NUwpuYXZlbC9TTQpuYXZpZ2FiaWxpdHkvTQpuYXZpZ2FibGUKbmF2aWdhdGUvRFNHTgpuYXZpZ2F0aW9uL00KbmF2aWdhdGlvbmFsCm5hdmlnYXRvci9NUwpuYXZ2eS9TCm5hdnkvU00KbmF5L1NNCm5heXNheWVyL01TCm5lJ2VyCm5lYW5kZXJ0aGFsL01TCm5lYXAvTVMKbmVhci9EUllTUFRHCm5lYXJieQpuZWFybmVzcy9NCm5lYXJzaG9yZQpuZWFyc2lkZQpuZWFyc2lnaHRlZC9ZUApuZWFyc2lnaHRlZG5lc3MvTQpuZWF0L05SWVBYVApuZWF0ZW4vR0QKbmVhdGgKbmVhdG5lc3MvTQpuZWJ1bGEvTQpuZWJ1bGFlCm5lYnVsYXIKbmVidWxvdXMvUFkKbmVidWxvdXNuZXNzL00KbmVjZXNzYXJpbHkvVQpuZWNlc3NhcnkvU00KbmVjZXNzaXRhdGUvRFNHCm5lY2Vzc2l0b3VzCm5lY2Vzc2l0eS9TTQpuZWNrL01EU0cKbmVja2JhbmQvUwpuZWNrZXJjaGllZi9NUwpuZWNraW5nL00KbmVja2xhY2UvTUdEU0oKbmVja2xpbmUvTVMKbmVja3RpZS9NUwpuZWNyb2xvZ3kvTQpuZWNyb21hbmNlci9TTQpuZWNyb21hbmN5L00KbmVjcm9waGlsaWEKbmVjcm9waGlsaWFjL1MKbmVjcm9wb2xpcy9NUwpuZWNyb3NlcwpuZWNyb3Npcy9NCm5lY3JvdGljCm5lY3Rhci9NCm5lY3RhcmluZS9NUwpuZWUKbmVlZC9NRFNHCm5lZWRlZC9VCm5lZWRmdWwvWQpuZWVkaW5lc3MvTQpuZWVkbGUvTUdEUwpuZWVkbGVwb2ludC9NCm5lZWRsZXNzL1lQCm5lZWRsZXNzbmVzcy9NCm5lZWRsZXdvbWFuL00KbmVlZGxld29tZW4KbmVlZGxld29yay9NCm5lZWRuJ3QKbmVlZHkvUFRSCm5lZmFyaW91cy9ZUApuZWZhcmlvdXNuZXNzL00KbmVnCm5lZ2F0ZS9EU0dOVlgKbmVnYXRpb24vTQpuZWdhdGl2ZS9NWUdQRFMKbmVnYXRpdmVuZXNzL00KbmVnYXRpdmlzbS9NCm5lZ2F0aXZpdHkvTQpuZWdsZWN0L1NHTUQKbmVnbGVjdGZ1bC9ZUApuZWdsZWN0ZnVsbmVzcy9NCm5lZ2xpZ2VlL01TCm5lZ2xpZ2VuY2UvTQpuZWdsaWdlbnQvWQpuZWdsaWdpYmxlCm5lZ2xpZ2libHkKbmVnb3RpYWJpbGl0eS9NCm5lZ290aWFibGUvQQpuZWdvdGlhdGUvQURTR04KbmVnb3RpYXRpb24vQU0KbmVnb3RpYXRpb25zCm5lZ290aWF0b3IvTVMKbmVncml0dWRlL00KbmVncm8KbmVncm9pZApuZWlnaC9NREcKbmVpZ2hib3IvU01EWUcKbmVpZ2hib3Job29kL1NNCm5laWdoYm9ybGluZXNzL00KbmVpZ2hzCm5laXRoZXIKbmVsc29uL1NNCm5lbWF0b2RlL1NNCm5lbWVzZXMKbmVtZXNpcy9NCm5lb2NsYXNzaWMKbmVvY2xhc3NpY2FsCm5lb2NsYXNzaWNpc20vTQpuZW9jb2xvbmlhbGlzbS9NCm5lb2NvbG9uaWFsaXN0L01TCm5lb2Nvbi9TTQpuZW9jb25zZXJ2YXRpdmUvU00KbmVvZHltaXVtL00KbmVvbGl0aGljCm5lb2xvZ2lzbS9TTQpuZW9uL00KbmVvbmF0YWwKbmVvbmF0ZS9NUwpuZW9waGlsaWEKbmVvcGh5dGUvTVMKbmVvcGxhc20vTVMKbmVvcGxhc3RpYwpuZW9wcmVuZS9NCm5lcGVudGhlL00KbmVwaGV3L1NNCm5lcGhyaXRlL00KbmVwaHJpdGljCm5lcGhyaXRpcy9NCm5lcGhyb3BhdGh5Cm5lcG90aXNtL00KbmVwb3Rpc3QvU00KbmVwb3Rpc3RpYwpuZXB0dW5pdW0vTQpuZXJkL01TCm5lcmR5L1JUCm5lcnZlJ3MKbmVydmUvVURTRwpuZXJ2ZWxlc3MvWVAKbmVydmVsZXNzbmVzcy9NCm5lcnZpbmVzcy9NCm5lcnZvdXMvWVAKbmVydm91c25lc3MvTQpuZXJ2eS9UUFIKbmVzdC9NRFNHCm5lc3RsZS9HSkRTCm5lc3RsaW5nL00KbmV0L1NNCm5ldGJhbGwKbmV0Ym9vay9NUwpuZXRoZXIKbmV0aGVybW9zdApuZXRoZXJ3b3JsZC9NCm5ldGlxdWV0dGUvUwpuZXR0ZWQKbmV0dGVyL1MKbmV0dGluZy9NCm5ldHRsZS9NR0RTCm5ldHRsZXNvbWUKbmV0d29yay9TR01ECm5ldHdvcmtpbmcvTQpuZXVyYWwvWQpuZXVyYWxnaWEvTQpuZXVyYWxnaWMKbmV1cmFzdGhlbmlhL00KbmV1cmFzdGhlbmljL01TCm5ldXJpdGljL01TCm5ldXJpdGlzL00KbmV1cm9sb2dpY2FsL1kKbmV1cm9sb2dpc3QvU00KbmV1cm9sb2d5L00KbmV1cm9uL01TCm5ldXJvbmFsCm5ldXJvc2VzCm5ldXJvc2lzL00KbmV1cm9zdXJnZW9uL01TCm5ldXJvc3VyZ2VyeS9NCm5ldXJvc3VyZ2ljYWwKbmV1cm90aWMvTVMKbmV1cm90aWNhbGx5Cm5ldXJvdHJhbnNtaXR0ZXIvU00KbmV1dApuZXV0ZXIvTURHUwpuZXV0cmFsL1NNWQpuZXV0cmFsaXNtL00KbmV1dHJhbGlzdC9TTQpuZXV0cmFsaXR5L00KbmV1dHJhbGl6YXRpb24vTQpuZXV0cmFsaXplL0RSU1pHCm5ldXRyYWxpemVyL00KbmV1dHJpbm8vU00KbmV1dHJvbi9TTQpuZXZlcgpuZXZlcm1vcmUKbmV2ZXJ0aGVsZXNzCm5ldmkKbmV2dXMvTQpuZXcvU1RNUllQCm5ld2JpZS9NUwpuZXdib3JuL1NNCm5ld2NvbWVyL1NNCm5ld2VsL1NNCm5ld2ZhbmdsZWQKbmV3Zm91bmQKbmV3bGluZS9TCm5ld2x5d2VkL1NNCm5ld25lc3MvTQpuZXdzL00KbmV3c2FnZW50L1MKbmV3c2JveS9TTQpuZXdzY2FzdC9TTVJaCm5ld3NjYXN0ZXIvTQpuZXdzZGVhbGVyL1NNCm5ld3NmbGFzaC9TCm5ld3NnaXJsL1NNCm5ld3Nncm91cC9NUwpuZXdzaG91bmQvUwpuZXdzbGV0dGVyL01TCm5ld3NtYW4vTQpuZXdzbWVuCm5ld3NwYXBlci9NUwpuZXdzcGFwZXJtYW4vTQpuZXdzcGFwZXJtZW4KbmV3c3BhcGVyd29tYW4vTQpuZXdzcGFwZXJ3b21lbgpuZXdzcGVhawpuZXdzcHJpbnQvTQpuZXdzcmVhZGVyL1MKbmV3c3JlZWwvTVMKbmV3c3Jvb20vTVMKbmV3c3N0YW5kL1NNCm5ld3N3ZWVrbHkvU00KbmV3c3dvbWFuL00KbmV3c3dvbWVuCm5ld3N3b3J0aGluZXNzL00KbmV3c3dvcnRoeS9QCm5ld3N5L1RSCm5ld3QvTVMKbmV3dG9uL01TCm5leHQvTQpuZXh1cy9NUwpuaWFjaW4vTQpuaWIvU00KbmliYmxlL01aR0RSUwpuaWJibGVyL00KbmljZS9QWVRSCm5pY2VuZXNzL00KbmljZXR5L1NNCm5pY2hlL1NNCm5pY2svTURSU1pHCm5pY2tlbC9NUwpuaWNrZWxvZGVvbi9TTQpuaWNrZXIvTURHCm5pY2tsZS9TCm5pY2tuYW1lL0RTTUcKbmljb3RpbmUvTQpuaWVjZS9TTQpuaWZmCm5pZmZ5Cm5pZnR5L1RSCm5pZ2dhL1NNCm5pZ2dhcmQvU01ZCm5pZ2dhcmRsaW5lc3MvTQpuaWdnYXoKbmlnZ2VyL1NNIQpuaWdnbGUvTVpHRFJTCm5pZ2dsZXIvTQpuaWdoL1JUCm5pZ2h0L1NNWQpuaWdodGNhcC9TTQpuaWdodGNsb3RoZXMvTQpuaWdodGNsdWIvU00KbmlnaHRjbHViYmVkCm5pZ2h0Y2x1YmJpbmcKbmlnaHRkcmVzcy9NUwpuaWdodGZhbGwvTQpuaWdodGdvd24vU00KbmlnaHRoYXdrL1NNCm5pZ2h0aWUvU00KbmlnaHRpbmdhbGUvU00KbmlnaHRsaWZlL00KbmlnaHRsaWdodC9TCm5pZ2h0bG9uZwpuaWdodG1hcmUvU00KbmlnaHRtYXJpc2gKbmlnaHRzaGFkZS9TTQpuaWdodHNoaXJ0L1NNCm5pZ2h0c3BvdC9NUwpuaWdodHN0YW5kL1NNCm5pZ2h0c3RpY2svU00KbmlnaHR0aW1lL00KbmlnaHR3YXRjaG1hbgpuaWdodHdhdGNobWVuCm5pZ2h0d2Vhci9NCm5paGlsaXNtL00KbmloaWxpc3QvTVMKbmloaWxpc3RpYwpuaWwvTQpuaW1iaQpuaW1ibGUvVFBSCm5pbWJsZW5lc3MvTQpuaW1ibHkKbmltYnVzL00KbmltYnkKbmltcm9kL01TCm5pbmNvbXBvb3AvU00KbmluZS9NUwpuaW5lcGluL01TCm5pbmVwaW5zL00KbmluZXRlZW4vU01ICm5pbmV0ZWVudGgvTQpuaW5ldGVlbnRocwpuaW5ldGlldGgvTQpuaW5ldGlldGhzCm5pbmV0eS9IU00KbmluamEvU00KbmlubnkvU00KbmludGgvTQpuaW50aHMKbmlvYml1bS9NCm5pcC9TTQpuaXBwZWQKbmlwcGVyL01TCm5pcHBpbmVzcy9NCm5pcHBpbmcKbmlwcGxlL01TCm5pcHB5L1RQUgpuaXJ2YW5hL00KbmlzZWkvTQpuaXQvU01SCm5pdGVyL00Kbml0cGljay9TWkdEUgpuaXRwaWNrZXIvTQpuaXRwaWNraW5nL00Kbml0cmF0ZS9EU01HTgpuaXRyYXRpb24vTQpuaXRyaWZpY2F0aW9uL00Kbml0cml0ZS9TTQpuaXRybwpuaXRyb2NlbGx1bG9zZS9NCm5pdHJvZ2VuL00Kbml0cm9nZW5vdXMKbml0cm9nbHljZXJpbi9NCm5pdHdpdC9NUwpuaXgvR01EUwpuby9TTQpub2IvU1kKbm9iYmxlL0dEUwpub2JlbGl1bS9NCm5vYmlsaXR5L00Kbm9ibGUvUlNQTVQKbm9ibGVtYW4vTQpub2JsZW1lbgpub2JsZW5lc3MvTQpub2JsZXdvbWFuL00Kbm9ibGV3b21lbgpub2JvZHkvU00Kbm9jdHVybmFsL1kKbm9jdHVybmUvTVMKbm9kL1NNCm5vZGFsCm5vZGRlZApub2RkaW5nCm5vZGRsZS9NUwpub2RkeQpub2RlL01TCm5vZHVsYXIKbm9kdWxlL01TCm5vZWwvTVMKbm9lcwpub2dnaW4vTVMKbm9ob3cKbm9pc2UvRFNNRwpub2lzZWxlc3MvUFkKbm9pc2VsZXNzbmVzcy9NCm5vaXNlbWFrZXIvTVMKbm9pc2lseQpub2lzaW5lc3MvTQpub2lzb21lCm5vaXN5L1BUUgpub21hZC9TTQpub21hZGljCm5vbWVuY2xhdHVyZS9NUwpub21pbmFsL1kKbm9taW5hdGUvQUNHTlZEUwpub21pbmF0aW9uJ3MvQQpub21pbmF0aW9uL0NTTQpub21pbmF0aXZlL1NNCm5vbWluYXRvci9DU00Kbm9taW5lZS9NUwpub24Kbm9uYWJyYXNpdmUKbm9uYWJzb3JiZW50L1NNCm5vbmFjYWRlbWljCm5vbmFjY2VwdGFuY2UvTQpub25hY2lkCm5vbmFjdGl2ZS9NUwpub25hZGRpY3RpdmUKbm9uYWRoZXNpdmUKbm9uYWRqYWNlbnQKbm9uYWRqdXN0YWJsZQpub25hZG1pbmlzdHJhdGl2ZQpub25hZ2UvTVMKbm9uYWdlbmFyaWFuL01TCm5vbmFnZ3Jlc3Npb24vTQpub25hbGNvaG9saWMKbm9uYWxpZ25lZApub25hbGlnbm1lbnQvTQpub25hbGxlcmdpYwpub25hcHBlYXJhbmNlL01TCm5vbmFzc2lnbmFibGUKbm9uYXRobGV0aWMKbm9uYXR0ZW5kYW5jZS9NCm5vbmF1dG9tb3RpdmUKbm9uYXZhaWxhYmlsaXR5L00Kbm9uYmFzaWMKbm9uYmVsaWV2ZXIvTVMKbm9uYmVsbGlnZXJlbnQvTVMKbm9uYmluZGluZwpub25icmVha2FibGUKbm9uYnVybmFibGUKbm9uY2Fsb3JpYwpub25jYW5jZXJvdXMKbm9uY2UvTQpub25jaGFsYW5jZS9NCm5vbmNoYWxhbnQvWQpub25jaGFyZ2VhYmxlCm5vbmNsZXJpY2FsL01TCm5vbmNsaW5pY2FsCm5vbmNvbGxlY3RhYmxlCm5vbmNvbS9NUwpub25jb21iYXQKbm9uY29tYmF0YW50L01TCm5vbmNvbWJ1c3RpYmxlCm5vbmNvbW1lcmNpYWwvTVMKbm9uY29tbWl0dGFsL1kKbm9uY29tbXVuaWNhYmxlCm5vbmNvbXBldGluZwpub25jb21wZXRpdGl2ZQpub25jb21wbGlhbmNlL00Kbm9uY29tcGx5aW5nCm5vbmNvbXByZWhlbmRpbmcKbm9uY29uZHVjdGluZwpub25jb25kdWN0b3IvTVMKbm9uY29uZm9ybWluZwpub25jb25mb3JtaXNtCm5vbmNvbmZvcm1pc3QvTVMKbm9uY29uZm9ybWl0eS9NCm5vbmNvbnNlY3V0aXZlCm5vbmNvbnN0cnVjdGl2ZQpub25jb250YWdpb3VzCm5vbmNvbnRpbnVvdXMKbm9uY29udHJpYnV0aW5nCm5vbmNvbnRyaWJ1dG9yeQpub25jb250cm92ZXJzaWFsCm5vbmNvbnZlcnRpYmxlCm5vbmNvb3BlcmF0aW9uL00Kbm9uY29ycm9kaW5nCm5vbmNvcnJvc2l2ZQpub25jcmVkaXQKbm9uY3JpbWluYWwvU00Kbm9uY3JpdGljYWwKbm9uY3J5c3RhbGxpbmUKbm9uY3VtdWxhdGl2ZQpub25jdXN0b2RpYWwKbm9uZGFpcnkKbm9uZGVkdWN0aWJsZS9NCm5vbmRlbGl2ZXJ5L1NNCm5vbmRlbW9jcmF0aWMKbm9uZGVub21pbmF0aW9uYWwKbm9uZGVwYXJ0bWVudGFsCm5vbmRlcHJlY2lhdGluZwpub25kZXNjcmlwdApub25kZXN0cnVjdGl2ZQpub25kZXRhY2hhYmxlCm5vbmRpc2NpcGxpbmFyeQpub25kaXNjbG9zdXJlL00Kbm9uZGlzY3JpbWluYXRpb24vTQpub25kaXNjcmltaW5hdG9yeQpub25kcmFtYXRpYwpub25kcmlua2VyL01TCm5vbmRyeWluZwpub25lCm5vbmVkdWNhdGlvbmFsCm5vbmVmZmVjdGl2ZQpub25lbGFzdGljCm5vbmVsZWN0cmljCm5vbmVsZWN0cmljYWwKbm9uZW1wdHkKbm9uZW5mb3JjZWFibGUKbm9uZW50aXR5L1NNCm5vbmVxdWl2YWxlbnQvTVMKbm9uZXNzZW50aWFsCm5vbmVzdWNoL01TCm5vbmV0aGVsZXNzCm5vbmV2ZW50L01TCm5vbmV4Y2hhbmdlYWJsZQpub25leGNsdXNpdmUKbm9uZXhlbXB0L00Kbm9uZXhpc3RlbmNlL00Kbm9uZXhpc3RlbnQKbm9uZXhwbG9zaXZlL01TCm5vbmZhY3R1YWwKbm9uZmFkaW5nCm5vbmZhdApub25mYXRhbApub25mYXR0ZW5pbmcKbm9uZmVycm91cwpub25maWN0aW9uL00Kbm9uZmljdGlvbmFsCm5vbmZsYW1tYWJsZQpub25mbG93ZXJpbmcKbm9uZmx1Y3R1YXRpbmcKbm9uZmx5aW5nCm5vbmZvb2QvTQpub25mcmVlemluZwpub25mdW5jdGlvbmFsCm5vbmdvdmVybm1lbnRhbApub25ncmFudWxhcgpub25oYXphcmRvdXMKbm9uaGVyZWRpdGFyeQpub25odW1hbgpub25pZGVudGljYWwKbm9uaW5jbHVzaXZlCm5vbmluZGVwZW5kZW50Cm5vbmluZHVzdHJpYWwKbm9uaW5mZWN0aW91cwpub25pbmZsYW1tYXRvcnkKbm9uaW5mbGF0aW9uYXJ5Cm5vbmluZmxlY3RlZApub25pbnRlbGxlY3R1YWwvTVMKbm9uaW50ZXJjaGFuZ2VhYmxlCm5vbmludGVyZmVyZW5jZS9NCm5vbmludGVydmVudGlvbi9NCm5vbmludG94aWNhdGluZwpub25pbnZhc2l2ZQpub25pcnJpdGF0aW5nCm5vbmlzc3VlCm5vbmp1ZGdtZW50YWwKbm9uanVkaWNpYWwKbm9ubGVnYWwKbm9ubGV0aGFsCm5vbmxpbmVhcgpub25saXRlcmFyeQpub25saXZpbmcvTQpub25tYWduZXRpYwpub25tYWxpZ25hbnQKbm9ubWVtYmVyL01TCm5vbm1ldGFsL1NNCm5vbm1ldGFsbGljCm5vbm1pZ3JhdG9yeQpub25taWxpdGFudApub25taWxpdGFyeQpub25uYXJjb3RpYy9TTQpub25uYXRpdmUvTVMKbm9ubmVnb3RpYWJsZQpub25udWNsZWFyCm5vbm51bWVyaWNhbApub25vYmplY3RpdmUKbm9ub2JsaWdhdG9yeQpub25vYnNlcnZhbmNlL00Kbm9ub2JzZXJ2YW50Cm5vbm9jY3VwYXRpb25hbApub25vY2N1cmVuY2UKbm9ub2ZmaWNpYWwKbm9ub3BlcmF0aW9uYWwKbm9ub3BlcmF0aXZlCm5vbnBhcmFsbGVsL01TCm5vbnBhcmVpbC9NUwpub25wYXJ0aWNpcGFudC9NUwpub25wYXJ0aWNpcGF0aW5nCm5vbnBhcnRpc2FuL1NNCm5vbnBheWluZwpub25wYXltZW50L1NNCm5vbnBlcmZvcm1hbmNlL00Kbm9ucGVyZm9ybWluZwpub25wZXJpc2hhYmxlCm5vbnBlcnNvbi9NUwpub25waHlzaWNhbC9ZCm5vbnBsdXMvUwpub25wbHVzc2VkCm5vbnBsdXNzaW5nCm5vbnBvaXNvbm91cwpub25wb2xpdGljYWwKbm9ucG9sbHV0aW5nCm5vbnBvcm91cwpub25wcmFjdGljaW5nCm5vbnByZWp1ZGljaWFsCm5vbnByZXNjcmlwdGlvbgpub25wcm9kdWN0aXZlCm5vbnByb2Zlc3Npb25hbC9TTQpub25wcm9maXQvU01CCm5vbnByb2xpZmVyYXRpb24vTQpub25wdWJsaWMKbm9ucHVuaXNoYWJsZQpub25yYWNpYWwKbm9ucmFkaW9hY3RpdmUKbm9ucmFuZG9tCm5vbnJlYWN0aXZlCm5vbnJlY2lwcm9jYWwvU00Kbm9ucmVjaXByb2NhdGluZwpub25yZWNvZ25pdGlvbi9NCm5vbnJlY292ZXJhYmxlCm5vbnJlY3VycmluZwpub25yZWRlZW1hYmxlCm5vbnJlZmlsbGFibGUKbm9ucmVmdW5kYWJsZQpub25yZWxpZ2lvdXMKbm9ucmVuZXdhYmxlCm5vbnJlcHJlc2VudGF0aW9uYWwKbm9ucmVzaWRlbnQvTVMKbm9ucmVzaWRlbnRpYWwKbm9ucmVzaWR1YWwvTQpub25yZXNpc3RhbmNlL00Kbm9ucmVzaXN0YW50Cm5vbnJlc3RyaWN0aXZlCm5vbnJldHVybmFibGUvTVMKbm9ucmh5dGhtaWMKbm9ucmlnaWQKbm9uc2FsYXJpZWQKbm9uc2NoZWR1bGVkCm5vbnNjaWVudGlmaWMKbm9uc2NvcmluZwpub25zZWFzb25hbApub25zZWN0YXJpYW4Kbm9uc2VjdWxhcgpub25zZWdyZWdhdGVkCm5vbnNlbnNlL00Kbm9uc2Vuc2ljYWwvWQpub25zZW5zaXRpdmUKbm9uc2V4aXN0Cm5vbnNleHVhbApub25za2lkCm5vbnNsaXAKbm9uc21va2VyL1NNCm5vbnNtb2tpbmcKbm9uc29jaWFsCm5vbnNwZWFraW5nCm5vbnNwZWNpYWxpc3QvTVMKbm9uc3BlY2lhbGl6aW5nCm5vbnNwZWNpZmljCm5vbnNwaXJpdHVhbC9TTQpub25zdGFpbmluZwpub25zdGFuZGFyZApub25zdGFydGVyL01TCm5vbnN0aWNrCm5vbnN0b3AKbm9uc3RyYXRlZ2ljCm5vbnN0cmlraW5nCm5vbnN0cnVjdHVyYWwKbm9uc3VjY2Vzc2l2ZQpub25zdXBwb3J0L0dNCm5vbnN1cmdpY2FsCm5vbnN1c3RhaW5pbmcKbm9uc3ltcGF0aGl6ZXIvTQpub250YXJuaXNoYWJsZQpub250YXhhYmxlCm5vbnRlY2huaWNhbApub250ZW51cmVkCm5vbnRoZWF0cmljYWwKbm9udGhpbmtpbmcKbm9udGhyZWF0ZW5pbmcKbm9udG94aWMKbm9udHJhZGl0aW9uYWwKbm9udHJhbnNmZXJhYmxlCm5vbnRyYW5zcGFyZW50Cm5vbnRyaXZpYWwKbm9udHJvcGljYWwKbm9udW5pZm9ybQpub251bmlvbgpub251c2VyL01TCm5vbnZlbm9tb3VzCm5vbnZlcmJhbApub252aWFibGUKbm9udmlvbGVuY2UvTQpub252aW9sZW50L1kKbm9udmlydWxlbnQKbm9udm9jYWwKbm9udm9jYXRpb25hbApub252b2xhdGlsZQpub252b3Rlci9NUwpub252b3RpbmcKbm9ud2hpdGUvTVMKbm9ud29ya2luZwpub255aWVsZGluZwpub256ZXJvCm5vb2RsZS9NR0RTCm5vb2svTVMKbm9va2llCm5vb2t5Cm5vb24vTQpub29uZGF5L00Kbm9vbnRpZGUvTQpub29udGltZS9NCm5vb3NlL1NNCm5vcGUKbm9yCm5vcidlYXN0ZXIKbm9ybS9NUwpub3JtYWwvTVkKbm9ybWFsY3kvTQpub3JtYWxpdHkvTQpub3JtYWxpemF0aW9uL00Kbm9ybWFsaXplL0RTRwpub3JtYXRpdmUKbm9ydGgvWk1SCm5vcnRoYm91bmQKbm9ydGhlYXN0L01SWgpub3J0aGVhc3Rlci9NWQpub3J0aGVhc3Rlcm4Kbm9ydGhlYXN0d2FyZC9TCm5vcnRoZXIvTVkKbm9ydGhlcmx5L1NNCm5vcnRoZXJuL1pSCm5vcnRoZXJuZXIvTQpub3J0aGVybm1vc3QKbm9ydGh3YXJkL1MKbm9ydGh3ZXN0L1pNUgpub3J0aHdlc3Rlci9NWQpub3J0aHdlc3Rlcm4Kbm9ydGh3ZXN0d2FyZC9TCm5vc2UvTUdEUwpub3NlYmFnL1MKbm9zZWJsZWVkL01TCm5vc2Vjb25lL1NNCm5vc2VkaXZlL0RTTUcKbm9zZWdheS9TTQpub3NoL01EUlNaRwpub3NoZXIvTQpub3NpbHkKbm9zaW5lc3MvTQpub3N0YWxnaWEvTQpub3N0YWxnaWMKbm9zdGFsZ2ljYWxseQpub3N0cmlsL01TCm5vc3RydW0vTVMKbm9zeS9SUFQKbm90L0IKbm90YWJpbGl0eS9TTQpub3RhYmxlL1NNCm5vdGFibHkKbm90YXJpYWwKbm90YXJpemF0aW9uL00Kbm90YXJpemUvR0RTCm5vdGFyeS9TTQpub3RhdGUvR0RTCm5vdGF0aW9uL0ZDU00Kbm90Y2gvR01EUwpub3RlJ3MKbm90ZS9GQ1NERwpub3RlYm9vay9NUwpub3RlbGV0L1MKbm90ZXBhZC9TCm5vdGVwYXBlci9NCm5vdGV3b3J0aGluZXNzL00Kbm90ZXdvcnRoeS9QCm5vdGhpbmcvUFNNCm5vdGhpbmduZXNzL00Kbm90aWNlL01HRFMKbm90aWNlYWJsZS9VCm5vdGljZWFibHkKbm90aWNlYm9hcmQvUwpub3RpY2VkL1UKbm90aWZpYWJsZQpub3RpZmljYXRpb24vTQpub3RpZmllci9NCm5vdGlmeS9ORFJTWFpHCm5vdGlvbi9NUwpub3Rpb25hbC9ZCm5vdG9yaWV0eS9NCm5vdG9yaW91cy9ZCm5vdHdpdGhzdGFuZGluZwpub3R3b3JrL1MKbm91Z2F0L01TCm5vdW4vS01TCm5vdXJpc2gvRFNMRwpub3VyaXNobWVudC9NCm5vdXMKbm92YS9NUwpub3ZhZQpub3ZlbC9TTQpub3ZlbGV0dGUvU00Kbm92ZWxpc3QvU00Kbm92ZWxpemF0aW9uL01TCm5vdmVsaXplL0RTRwpub3ZlbGxhL01TCm5vdmVsdHkvU00Kbm92ZW5hL01TCm5vdmVuZQpub3ZpY2UvTVMKbm92aXRpYXRlL01TCm5vdy9NCm5vd2FkYXlzL00Kbm93YXkvUwpub3doZXJlL00Kbm93aXNlCm5vd3QKbm94aW91cwpub3p6bGUvTVMKbnUvU00KbnVhbmNlL01EUwpudWIvU00KbnViYmluL01TCm51YmJ5L1RSCm51YmlsZQpudWNsZWFyL0sKbnVjbGVhdGUvRFNHTgpudWNsZWF0aW9uL00KbnVjbGVpCm51Y2xlaWMKbnVjbGVvbGkKbnVjbGVvbHVzL00KbnVjbGVvbi9TTQpudWNsZW9zaWRlCm51Y2xlb3RpZGUKbnVjbGV1cy9NCm51ZGUvTVRSUwpudWRnZS9HRFNNCm51ZGlzbS9NCm51ZGlzdC9TTQpudWRpdHkvTQpudWdhdG9yeQpudWdnZXQvU00KbnVpc2FuY2UvTVMKbnVrZS9NR0RTCm51bGwvUwpudWxsaWZpY2F0aW9uL00KbnVsbGlmeS9ORFNHCm51bGxpdHkvTQpudW1iL1pUR1BEUllTCm51bWJlcidzCm51bWJlci9BU0RHCm51bWJlcmVkL1UKbnVtYmVybGVzcwpudW1ibmVzcy9NCm51bWVyYWJsZS9JCm51bWVyYWN5L0lNCm51bWVyYWwvU00KbnVtZXJhdGUvWEdORFMKbnVtZXJhdGlvbi9NCm51bWVyYXRvci9NUwpudW1lcmljCm51bWVyaWNhbC9ZCm51bWVyb2xvZ2lzdC9NUwpudW1lcm9sb2d5L00KbnVtZXJvdXMvWQpudW1pbm91cwpudW1pc21hdGljL1MKbnVtaXNtYXRpY3MvTQpudW1pc21hdGlzdC9TTQpudW1za3VsbC9NUwpudW4vU00KbnVuY2lvL1NNCm51bm5lcnkvU00KbnVwdGlhbC9NUwpudXJzZS9NWkdEUlMKbnVyc2VsaW5ncwpudXJzZW1haWQvTVMKbnVyc2VyL00KbnVyc2VyeS9TTQpudXJzZXJ5bWFuL00KbnVyc2VyeW1lbgpudXJzaW5nL00KbnVyc2xpbmcvU00KbnVydHVyZS9EUlNNWkcKbnVydHVyZXIvTQpudXQvU00KbnV0Y2FzZS9TCm51dGNyYWNrZXIvTVMKbnV0aGF0Y2gvTVMKbnV0aG91c2UvUwpudXRtZWF0L1NNCm51dG1lZy9TTQpudXRwaWNrL1NNCm51dHJpYS9TTQpudXRyaWVudC9NUwpudXRyaW1lbnQvTVMKbnV0cml0aW9uL00KbnV0cml0aW9uYWwvWQpudXRyaXRpb25pc3QvU00KbnV0cml0aW91cy9ZUApudXRyaXRpb3VzbmVzcy9NCm51dHJpdGl2ZQpudXRzaGVsbC9NUwpudXR0ZWQKbnV0dGVyL1MKbnV0dGluZXNzL00KbnV0dGluZwpudXR0eS9SVFAKbnV6emxlL0RSU01aRwpudXp6bGVyL00KbnliYmxlL1MKbnlsb24vTVMKbnlsb25zL00KbnltcGgvTQpueW1waGV0L01TCm55bXBoby9TCm55bXBob21hbmlhL00KbnltcGhvbWFuaWFjL1NNCm55bXBocwpvCm8nY2xvY2sKbydlcgpvYWYvU00Kb2FmaXNoL1BZCm9hZmlzaG5lc3MvTQpvYWsvU01OCm9ha3VtL00Kb2FyL1NHTUQKb2FybG9jay9TTQpvYXJzbWFuL00Kb2Fyc21lbgpvYXJzd29tYW4vTQpvYXJzd29tZW4Kb2FzZXMKb2FzaXMvTQpvYXQvU01OCm9hdGNha2UvU00Kb2F0aC9NCm9hdGhzCm9hdG1lYWwvTQpvYXRzL00Kb2IvUwpvYmJsaWdhdG8vTVMKb2JkdXJhY3kvTQpvYmR1cmF0ZS9QWQpvYmR1cmF0ZW5lc3MvTQpvYmVkaWVuY2UvRU0Kb2JlZGllbnQvRVkKb2JlaXNhbmNlL1NNCm9iZWlzYW50Cm9iZWxpc2svTVMKb2Jlc2UKb2Jlc2l0eS9NCm9iZXkvRURTRwpvYmZ1c2NhdGUvR05YRFMKb2JmdXNjYXRpb24vTQpvYmkvU00Kb2JpdC9NUwpvYml0dWFyeS9TTQpvYmoKb2JqZWN0L1NHVk1ECm9iamVjdGlmeS9OR0RTCm9iamVjdGlvbi9TTUIKb2JqZWN0aW9uYWJsZS9VCm9iamVjdGlvbmFibHkKb2JqZWN0aXZlL1NNWVAKb2JqZWN0aXZlbmVzcy9NCm9iamVjdGl2aXR5L00Kb2JqZWN0b3IvTVMKb2JqdXJnYXRlL1hHTkRTCm9ianVyZ2F0aW9uL00Kb2JsYXRlL05YCm9ibGF0aW9uL00Kb2JsaWdhdGUvRFNYR04Kb2JsaWdhdGlvbi9NCm9ibGlnYXRvcmlseQpvYmxpZ2F0b3J5Cm9ibGlnZS9FR0RTCm9ibGlnaW5nL1kKb2JsaXF1ZS9TTVlQCm9ibGlxdWVuZXNzL00Kb2JsaXF1aXR5L00Kb2JsaXRlcmF0ZS9EU0dOCm9ibGl0ZXJhdGlvbi9NCm9ibGl2aW9uL00Kb2JsaXZpb3VzL1lQCm9ibGl2aW91c25lc3MvTQpvYmxvbmcvTVMKb2Jsb3F1eS9NCm9ibm94aW91cy9ZUApvYm5veGlvdXNuZXNzL00Kb2JvZS9NUwpvYm9pc3QvTVMKb2JzY2VuZS9SWVQKb2JzY2VuaXR5L1NNCm9ic2N1cmFudGlzbS9NCm9ic2N1cmFudGlzdC9TTQpvYnNjdXJlL0RSU1lURwpvYnNjdXJpdHkvU00Kb2JzZXF1aWVzCm9ic2VxdWlvdXMvUFkKb2JzZXF1aW91c25lc3MvTQpvYnNlcXV5L00Kb2JzZXJ2YWJseQpvYnNlcnZhbmNlL01TCm9ic2VydmFudC9ZCm9ic2VydmF0aW9uL1NNCm9ic2VydmF0aW9uYWwKb2JzZXJ2YXRvcnkvU00Kb2JzZXJ2ZS9EUlNCWkcKb2JzZXJ2ZWQvVQpvYnNlcnZlci9NCm9ic2Vzcy9EU0dWCm9ic2Vzc2lvbi9TTQpvYnNlc3Npb25hbC9ZCm9ic2Vzc2l2ZS9QU01ZCm9ic2Vzc2l2ZW5lc3MvTQpvYnNpZGlhbi9NCm9ic29sZXNjZS9EU0cKb2Jzb2xlc2NlbmNlL00Kb2Jzb2xlc2NlbnQKb2Jzb2xldGUvR0RTCm9ic3RhY2xlL01TCm9ic3RldHJpYy9TCm9ic3RldHJpY2FsCm9ic3RldHJpY2lhbi9TTQpvYnN0ZXRyaWNzL00Kb2JzdGluYWN5L00Kb2JzdGluYXRlL1kKb2JzdHJlcGVyb3VzL1lQCm9ic3RyZXBlcm91c25lc3MvTQpvYnN0cnVjdC9ER1ZTCm9ic3RydWN0ZWQvVQpvYnN0cnVjdGlvbi9TTQpvYnN0cnVjdGlvbmlzbS9NCm9ic3RydWN0aW9uaXN0L01TCm9ic3RydWN0aXZlL1lQCm9ic3RydWN0aXZlbmVzcy9NCm9idGFpbi9EQkxHUwpvYnRhaW5hYmxlL1UKb2J0YWlubWVudC9NCm9idHJ1ZGUvRFNHCm9idHJ1c2lvbi9NCm9idHJ1c2l2ZS9VUFkKb2J0cnVzaXZlbmVzcy9VTQpvYnR1c2UvWVRSUApvYnR1c2VuZXNzL00Kb2J2ZXJzZS9TTQpvYnZpYXRlL0RTR04Kb2J2aWF0aW9uL00Kb2J2aW91cy9QWQpvYnZpb3VzbmVzcy9NCm9jYXJpbmEvTVMKb2NjYXNpb24vR01EUwpvY2Nhc2lvbmFsL1kKb2NjaWRlbnRhbC9TTQpvY2NsdWRlL0dEUwpvY2NsdXNpb24vU00Kb2NjbHVzaXZlCm9jY3VsdC9NCm9jY3VsdGlzbS9NCm9jY3VsdGlzdC9TTQpvY2N1cGFuY3kvTQpvY2N1cGFudC9TTQpvY2N1cGF0aW9uL0FNCm9jY3VwYXRpb25hbC9ZCm9jY3VwYXRpb25zCm9jY3VwaWVkL1UKb2NjdXBpZXIvU00Kb2NjdXB5L0FEU0cKb2NjdXIvQVMKb2NjdXJyZWQvQQpvY2N1cnJlbmNlL1NNCm9jY3VycmluZy9BCm9jZWFuL1NNCm9jZWFuZnJvbnQvU00Kb2NlYW5nb2luZwpvY2VhbmljL00Kb2NlYW5vZ3JhcGhlci9TTQpvY2Vhbm9ncmFwaGljCm9jZWFub2dyYXBoeS9NCm9jZWFub2xvZ3kvTQpvY2Vsb3QvTVMKb2NoL1IKb2NoZXIvTQpvY2tlci9TCm9jdGFnb24vTVMKb2N0YWdvbmFsCm9jdGFsCm9jdGFuZS9NUwpvY3RhdmUvTVMKb2N0YXZvL01TCm9jdGV0L1NNCm9jdG9nZW5hcmlhbi9TTQpvY3RvcHVzL01TCm9jdWxhci9NUwpvY3VsaXN0L1NNCm9kYWxpc3F1ZS9TTQpvZGQvU1RSWUxQCm9kZGJhbGwvU00Kb2RkaXR5L1NNCm9kZG1lbnQvU00Kb2RkbmVzcy9NCm9kZHMvTQpvZGUvU00Kb2Rpb3VzL1lQCm9kaW91c25lc3MvTQpvZGl1bS9NCm9kb21ldGVyL01TCm9kb3IvTURTCm9kb3JpZmVyb3VzCm9kb3JsZXNzCm9kb3JvdXMKb2R5c3NleS9NUwpvZWRpcGFsCm9lbm9sb2d5L00Kb2Vub3BoaWxlL1NNCm9ldXZyZS9NUwpvZgpvZmYvU1pHRFJKCm9mZmFsL00Kb2ZmYmVhdC9NUwpvZmZlbmQvWkdEUlMKb2ZmZW5kZXIvTQpvZmZlbnNlL01TCm9mZmVuc2l2ZSdzCm9mZmVuc2l2ZS9JUFkKb2ZmZW5zaXZlbmVzcy9JTQpvZmZlbnNpdmVzCm9mZmVyL0pHTUQKb2ZmZXJpbmcvTQpvZmZlcnRvcnkvU00Kb2ZmaGFuZApvZmZoYW5kZWQvUFkKb2ZmaGFuZGVkbmVzcy9NCm9mZmljZS9NWlJTCm9mZmljZWhvbGRlci9TTQpvZmZpY2VyL00Kb2ZmaWNpYWwvTVlTCm9mZmljaWFsZG9tL00Kb2ZmaWNpYWxlc2UKb2ZmaWNpYWxpc20vTQpvZmZpY2lhbnQvU00Kb2ZmaWNpYXRlL0RTRwpvZmZpY2lhdG9yL01TCm9mZmljaW91cy9QWQpvZmZpY2lvdXNuZXNzL00Kb2ZmaW5nL00Kb2ZmaXNoCm9mZmxpbmUKb2ZmbG9hZC9TREcKb2ZmcHJpbnQvU00Kb2Zmc2V0L01TCm9mZnNldHRpbmcKb2Zmc2hvb3QvTVMKb2Zmc2hvcmUvRwpvZmZzaWRlCm9mZnNpdGUKb2Zmc3ByaW5nL00Kb2Zmc3RhZ2UvUwpvZmZ0cmFjawpvZnQKb2Z0ZW4vVFIKb2Z0ZW50aW1lcwpvZnR0aW1lcwpvZ2xlL01aR0RSUwpvZ2xlci9NCm9ncmUvTVMKb2dyZWlzaApvZ3Jlc3MvTVMKb2gvTQpvaG0vU00Kb2htbWV0ZXIvTVMKb2hvCm9ocwpvaQpvaWsvUwpvaWwvU0dNRApvaWxjYW4vUwpvaWxjbG90aC9NCm9pbGNsb3RocwpvaWxmaWVsZC9TCm9pbGluZXNzL00Kb2lsbWFuCm9pbG1lbgpvaWxza2luL01TCm9pbHNraW5zL00Kb2lseS9SUFQKb2luay9NRFNHCm9pbnRtZW50L1NNCm9rYXBpL1NNCm9rYXkvTVNHCm9rcmEvTVMKb2xkL1RNTlJQCm9sZGllL1NNCm9sZGlzaApvbGRuZXNzL00Kb2xkc3Rlci9NUwpvbGUvU01WCm9sZWFnaW5vdXMKb2xlYW5kZXIvTVMKb2xlby9NCm9sZW9tYXJnYXJpbmUvTQpvbGZhY3RvcnkvU00Kb2xpZ2FyY2gvTQpvbGlnYXJjaGljCm9saWdhcmNoaWNhbApvbGlnYXJjaHMKb2xpZ2FyY2h5L1NNCm9saWdvbnVjbGVvdGlkZS9TCm9saWdvcG9seS9TTQpvbGl2ZS9TTQpvbS9TTU5YCm9tYnVkc21hbi9NCm9tYnVkc21lbgpvbWVnYS9TTQpvbWVsZXQvTVMKb21lbi9NCm9taWNyb24vTVMKb21pbm91cy9ZUApvbWlub3VzbmVzcy9NCm9taXNzaW9uL01TCm9taXQvUwpvbWl0dGVkCm9taXR0aW5nCm9tbmlidXMvTVMKb21uaXBvdGVuY2UvTQpvbW5pcG90ZW50Cm9tbmlwcmVzZW5jZS9NCm9tbmlwcmVzZW50Cm9tbmlzY2llbmNlL00Kb21uaXNjaWVudApvbW5pdm9yZS9NUwpvbW5pdm9yb3VzL1BZCm9tbml2b3JvdXNuZXNzL00Kb24vWQpvbmNlL00Kb25jb2dlbmUvU00Kb25jb2xvZ2lzdC9TTQpvbmNvbG9neS9NCm9uY29taW5nCm9uZS9TWE1OUApvbmVuZXNzL00Kb25lcm91cy9QWQpvbmVyb3VzbmVzcy9NCm9uZXNlbGYKb25ldGltZQpvbmdvaW5nCm9uaW9uL00Kb25pb25za2luL00Kb25saW5lCm9ubG9va2VyL1NNCm9ubG9va2luZwpvbm9tYXRvcG9laWEvTQpvbm9tYXRvcG9laWMKb25vbWF0b3BvZXRpYwpvbnJ1c2gvTVNHCm9uc2NyZWVuCm9uc2V0L01TCm9uc2hvcmUKb25zaWRlCm9uc2l0ZQpvbnNsYXVnaHQvTVMKb25zdGFnZQpvbnRvCm9udG9nZW55L00Kb250b2xvZ2ljYWwKb250b2xvZ3kvTQpvbnVzL01TCm9ud2FyZApvbnl4L01TCm9vZGxlcy9NCm9vaC9HRApvb2hzCm9vbXBoCm9vcHMKb296ZS9NR0RTCm9venkvVFIKb3AvU01ERwpvcGFjaXR5L00Kb3BhbC9NUwpvcGFsZXNjZW5jZS9NCm9wYWxlc2NlbnQKb3BhcXVlL1BZVEdEUlMKb3BhcXVlbmVzcy9NCm9wY29kZS9TCm9wZS9TCm9wZW4vWlRHSlBNRFJZUwpvcGVuY2FzdApvcGVuZWQvVQpvcGVuZXIvTQpvcGVuaGFuZGVkL1AKb3BlbmhhbmRlZG5lc3MvTQpvcGVuaGVhcnRlZApvcGVuaW5nL00Kb3Blbm5lc3MvTQpvcGVud29yay9NCm9wZXJhL01TCm9wZXJhYmxlL0kKb3BlcmFuZC9TCm9wZXJhdGUvRFNHTlZYCm9wZXJhdGljCm9wZXJhdGljYWxseQpvcGVyYXRpb24vTQpvcGVyYXRpb25hbC9ZCm9wZXJhdGl2ZS9TTQpvcGVyYXRvci9TTQpvcGVyZXR0YS9TTQpvcGh0aGFsbWljCm9waHRoYWxtb2xvZ2lzdC9TTQpvcGh0aGFsbW9sb2d5L00Kb3BpYXRlL1NNCm9waW5lL0dOWERTCm9waW5pb24vTQpvcGluaW9uYXRlZApvcGl1bS9NCm9wb3NzdW0vTVMKb3BwCm9wcG9uZW50L1NNCm9wcG9ydHVuZS9JWQpvcHBvcnR1bmlzbS9NCm9wcG9ydHVuaXN0L1NNCm9wcG9ydHVuaXN0aWMKb3Bwb3J0dW5pc3RpY2FsbHkKb3Bwb3J0dW5pdHkvU00Kb3Bwb3NlL0RTRwpvcHBvc2VkL1UKb3Bwb3NpdGUvU01ZTlgKb3Bwb3NpdGlvbi9NCm9wcHJlc3MvRFNHVgpvcHByZXNzaW9uL00Kb3BwcmVzc2l2ZS9ZUApvcHByZXNzaXZlbmVzcy9NCm9wcHJlc3Nvci9NUwpvcHByb2JyaW91cy9ZCm9wcHJvYnJpdW0vTQpvcHQvU0dECm9wdGljL01TCm9wdGljYWwvWQpvcHRpY2lhbi9TTQpvcHRpY3MvTQpvcHRpbWEKb3B0aW1hbC9ZCm9wdGltaXNtL1NNCm9wdGltaXN0L1NNCm9wdGltaXN0aWMKb3B0aW1pc3RpY2FsbHkKb3B0aW1pemF0aW9uL01TCm9wdGltaXplL0RSU0cKb3B0aW11bS9TTQpvcHRpb24vU01ERwpvcHRpb25hbC9ZCm9wdG9tZXRyaXN0L01TCm9wdG9tZXRyeS9NCm9wdWxlbmNlL00Kb3B1bGVudC9ZCm9wdXMvTVMKb3IKb3JhY2xlL1NNCm9yYWN1bGFyCm9yYWwvTVlTCm9yYW5nZS9TTVAKb3JhbmdlYWRlL01TCm9yYW5nZXJ5L1NNCm9yYW5ndXRhbi9TTQpvcmF0ZS9HTlhEUwpvcmF0aW9uL00Kb3JhdG9yL1NNCm9yYXRvcmljYWwvWQpvcmF0b3Jpby9NUwpvcmF0b3J5L1NNCm9yYi9TTQpvcmJpY3VsYXIKb3JiaXQvTURSWkdTCm9yYml0YWwvU00Kb3JiaXRlci9NCm9yYy9TTQpvcmNoYXJkL1NNCm9yY2hlc3RyYS9NUwpvcmNoZXN0cmFsCm9yY2hlc3RyYXRlL0RTWEdOCm9yY2hlc3RyYXRpb24vTQpvcmNoaWQvU00Kb3JkYWluL1NETEcKb3JkYWlubWVudC9NCm9yZGVhbC9TTQpvcmRlci9FQU1ER1MKb3JkZXJpbmdzCm9yZGVybGluZXNzL0VNCm9yZGVybHkvUFNNCm9yZGluYWwvU00Kb3JkaW5hbmNlL1NNCm9yZGluYXJpbHkKb3JkaW5hcmluZXNzL00Kb3JkaW5hcnkvU01QCm9yZGluYXRlL01OU1gKb3JkaW5hdGlvbi9NCm9yZG5hbmNlL00Kb3JkdXJlL00Kb3JlL1NNCm9yZWdhbm8vTQpvcmcKb3JnYW4vTVMKb3JnYW5keS9NCm9yZ2FuZWxsZS9NUwpvcmdhbmljL1NNCm9yZ2FuaWNhbGx5L0kKb3JnYW5pc20vTVMKb3JnYW5pc21pYwpvcmdhbmlzdC9NUwpvcmdhbml6YXRpb24vQVNNCm9yZ2FuaXphdGlvbmFsL1kKb3JnYW5pemUvQUVTREcKb3JnYW5pemVkL1UKb3JnYW5pemVyL01TCm9yZ2FuemEvTQpvcmdhc20vU00Kb3JnYXNtaWMKb3JnaWFzdGljCm9yZ3kvU00Kb3JpZWwvTVMKb3JpZW50J3MKb3JpZW50L0FFREdTCm9yaWVudGFsL01TCm9yaWVudGFsaXN0L1MKb3JpZW50YXRlL0VEU0dOCm9yaWVudGF0aW9uL0FFTQpvcmllbnRhdGlvbnMKb3JpZW50ZWVyaW5nCm9yaWZpY2UvTVMKb3JpZwpvcmlnYW1pL00Kb3JpZ2luL1NNCm9yaWdpbmFsL01ZUwpvcmlnaW5hbGl0eS9NCm9yaWdpbmF0ZS9EU0dOCm9yaWdpbmF0aW9uL00Kb3JpZ2luYXRvci9TTQpvcmlvbGUvU00Kb3Jpc29uL1NNCm9ybW9sdS9NCm9ybmFtZW50L1NHTUQKb3JuYW1lbnRhbApvcm5hbWVudGF0aW9uL00Kb3JuYXRlL1lQCm9ybmF0ZW5lc3MvTQpvcm5lcmluZXNzL00Kb3JuZXJ5L1BSVApvcm5pdGhvbG9naWNhbApvcm5pdGhvbG9naXN0L01TCm9ybml0aG9sb2d5L00Kb3JvdHVuZApvcm90dW5kaXR5L1NNCm9ycGhhbi9TTURHCm9ycGhhbmFnZS9NUwpvcnJpcy9NUwpvcnRob2RvbnRpYS9NCm9ydGhvZG9udGljL1MKb3J0aG9kb250aWNzL00Kb3J0aG9kb250aXN0L1NNCm9ydGhvZG94L1UKb3J0aG9kb3h5L1NNCm9ydGhvZ29uYWwKb3J0aG9nb25hbGl0eQpvcnRob2dyYXBoaWMKb3J0aG9ncmFwaGljYWxseQpvcnRob2dyYXBoeS9TTQpvcnRob3BlZGljL1MKb3J0aG9wZWRpY3MvTQpvcnRob3BlZGlzdC9NUwpvcnpvL00Kb3NjaWxsYXRlL0dORFNYCm9zY2lsbGF0aW9uL00Kb3NjaWxsYXRvci9TTQpvc2NpbGxhdG9yeQpvc2NpbGxvc2NvcGUvTVMKb3NjdWxhdGUvRFNYR04Kb3NjdWxhdGlvbi9NCm9zaWVyL01TCm9zbWl1bS9NCm9zbW9zaXMvTQpvc21vdGljCm9zcHJleS9TTQpvc3NpZmljYXRpb24vTQpvc3NpZnkvTkdEUwpvc3RlbnNpYmxlCm9zdGVuc2libHkKb3N0ZW50YXRpb24vTQpvc3RlbnRhdGlvdXMvWQpvc3Rlb2FydGhyaXRpcy9NCm9zdGVvcGF0aC9NCm9zdGVvcGF0aGljCm9zdGVvcGF0aHMKb3N0ZW9wYXRoeS9NCm9zdGVvcG9yb3Npcy9NCm9zdGxlci9TCm9zdHJhY2lzbS9NCm9zdHJhY2l6ZS9HRFMKb3N0cmljaC9NUwpvdGhlci9TUApvdGhlcndpc2UKb3RoZXJ3b3JsZGx5Cm90aW9zZQpvdHRlci9NUwpvdHRvbWFuL01TCm91YmxpZXR0ZS9NUwpvdWNoCm91Z2h0Cm91Z2h0bid0Cm91bmNlL01TCm91ci9TCm91cnNlbHZlcwpvdXN0L1pHRFJTCm91c3Rlci9NCm91dC9TSkdNRFIKb3V0YWdlL1NNCm91dGFyZ3VlL0dEUwpvdXRiYWNrL01TCm91dGJhbGFuY2UvRFNHCm91dGJpZC9TCm91dGJpZGRpbmcKb3V0Ym9hcmQvTVMKb3V0Ym9hc3QvRFNHCm91dGJvdW5kCm91dGJveC9NUwpvdXRicmVhay9NUwpvdXRidWlsZGluZy9NUwpvdXRidXJzdC9TTQpvdXRjYXN0L01TCm91dGNsYXNzL0RTRwpvdXRjb21lL01TCm91dGNyb3AvTVMKb3V0Y3JvcHBlZApvdXRjcm9wcGluZy9TTQpvdXRjcnkvU00Kb3V0ZGF0ZWQKb3V0ZGlkCm91dGRpc3RhbmNlL0dEUwpvdXRkby9HCm91dGRvZXMKb3V0ZG9uZQpvdXRkb29yL1MKb3V0ZG9vcnMvTQpvdXRkb29yc3kKb3V0ZHJhdy9HUwpvdXRkcmF3bgpvdXRkcmV3Cm91dGVybW9zdApvdXRlcndlYXIvTQpvdXRmYWNlL0dEUwpvdXRmYWxsL1MKb3V0ZmllbGQvU01SWgpvdXRmaWVsZGVyL00Kb3V0ZmlnaHQvU0cKb3V0Zml0L1NNCm91dGZpdHRlZApvdXRmaXR0ZXIvTVMKb3V0Zml0dGluZwpvdXRmbGFuay9HU0QKb3V0Zmxvdy9NUwpvdXRmb3VnaHQKb3V0Zm94L0dEUwpvdXRnby9NSkcKb3V0Z29lcwpvdXRncmV3Cm91dGdyb3cvSEdTCm91dGdyb3duCm91dGdyb3d0aC9NCm91dGdyb3d0aHMKb3V0Z3Vlc3MvR0RTCm91dGd1bi9TCm91dGd1bm5lZApvdXRndW5uaW5nCm91dGhpdC9TCm91dGhpdHRpbmcKb3V0aG91c2UvU00Kb3V0aW5nL00Kb3V0bGFpZApvdXRsYW5kaXNoL1BZCm91dGxhbmRpc2huZXNzL00Kb3V0bGFzdC9EU0cKb3V0bGF3L1NHTUQKb3V0bGF5L1NHTQpvdXRsZXQvU00Kb3V0bGluZS9NR0RTCm91dGxpdmUvR0RTCm91dGxvb2svTVMKb3V0bHlpbmcKb3V0bWFuZXV2ZXIvR0RTCm91dG1hdGNoL0dEUwpvdXRtb2RlZApvdXRudW1iZXIvRFNHCm91dHBhY2UvR0RTCm91dHBhdGllbnQvTVMKb3V0cGVyZm9ybS9HU0QKb3V0cGxhY2UvTApvdXRwbGFjZW1lbnQvTQpvdXRwbGF5L0dEUwpvdXRwb2ludC9ER1MKb3V0cG9zdC9NUwpvdXRwb3VyaW5nL01TCm91dHByb2R1Y2UvRFNHCm91dHB1dC9TTQpvdXRwdXR0ZWQKb3V0cHV0dGluZwpvdXRyYWNlL0dEUwpvdXRyYWdlL01HRFMKb3V0cmFnZW91cy9ZCm91dHJhbgpvdXRyYW5rL0dEUwpvdXRyZQpvdXRyZWFjaC9NRFNHCm91dHJpZGVyL01TCm91dHJpZ2dlci9TTQpvdXRyaWdodApvdXRydW4vUwpvdXRydW5uaW5nCm91dHNjb3JlL0dEUwpvdXRzZWxsL0dTCm91dHNldC9TTQpvdXRzaGluZS9HUwpvdXRzaG9uZQpvdXRzaG91dC9HRFMKb3V0c2lkZS9NWlJTCm91dHNpZGVyL00Kb3V0c2l6ZS9NUwpvdXRza2lydC9NUwpvdXRzbWFydC9HRFMKb3V0c29sZApvdXRzb3VyY2UvRFNHCm91dHNvdXJjaW5nL00Kb3V0c3BlbmQvU0cKb3V0c3BlbnQKb3V0c3Bva2VuL1lQCm91dHNwb2tlbm5lc3MvTQpvdXRzcHJlYWQvR1MKb3V0c3RhbmRpbmcvWQpvdXRzdGF0aW9uL01TCm91dHN0YXkvREdTCm91dHN0cmV0Y2gvRFNHCm91dHN0cmlwL1MKb3V0c3RyaXBwZWQKb3V0c3RyaXBwaW5nCm91dHRhCm91dHRha2UvTVMKb3V0dm90ZS9HRFMKb3V0d2FyZC9ZUwpvdXR3ZWFyL0dTCm91dHdlaWdoL0dECm91dHdlaWdocwpvdXR3aXQvUwpvdXR3aXRoCm91dHdpdHRlZApvdXR3aXR0aW5nCm91dHdvcmUKb3V0d29yay9NRFJTWkcKb3V0d29ybgpvdXpvL01TCm92YQpvdmFsL01TCm92YXJpYW4Kb3ZhcnkvU00Kb3ZhdGUvTlgKb3ZhdGlvbi9NCm92ZW4vTVMKb3ZlbmJpcmQvU00Kb3ZlbnByb29mCm92ZW53YXJlCm92ZXIvTVlTCm92ZXJhYnVuZGFuY2UvTQpvdmVyYWJ1bmRhbnQKb3ZlcmFjaGlldmUvWkdEUlMKb3ZlcmFjaGlldmVyL00Kb3ZlcmFjdC9HVlNECm92ZXJhZ2UvU00Kb3ZlcmFnZ3Jlc3NpdmUKb3ZlcmFsbC9TTQpvdmVyYWxscy9NCm92ZXJhbWJpdGlvdXMKb3ZlcmFueGlvdXMKb3ZlcmFyY2hpbmcKb3ZlcmFybS9HU0QKb3ZlcmF0ZQpvdmVyYXR0ZW50aXZlCm92ZXJhd2UvRFNHCm92ZXJiYWxhbmNlL01HRFMKb3ZlcmJlYXIvR1MKb3ZlcmJlYXJpbmcvWQpvdmVyYmlkL1NNCm92ZXJiaWRkaW5nCm92ZXJiaXRlL01TCm92ZXJibG93bgpvdmVyYm9hcmQKb3ZlcmJvbGQKb3ZlcmJvb2svREdTCm92ZXJib3JlCm92ZXJib3JuZQpvdmVyYm91Z2h0Cm92ZXJidWlsZC9TRwpvdmVyYnVpbHQKb3ZlcmJ1cmRlbi9HU0QKb3ZlcmJ1eS9HUwpvdmVyY2FtZQpvdmVyY2FwYWNpdHkvTQpvdmVyY2FwaXRhbGl6ZS9EU0cKb3ZlcmNhcmVmdWwKb3ZlcmNhc3QvTUdTCm92ZXJjYXV0aW91cwpvdmVyY2hhcmdlL0RTTUcKb3ZlcmNsb2NrL0dECm92ZXJjbG91ZC9TR0QKb3ZlcmNvYXQvTVMKb3ZlcmNvbWUvR1MKb3ZlcmNvbXBlbnNhdGUvRFNHTgpvdmVyY29tcGVuc2F0aW9uL00Kb3ZlcmNvbmZpZGVuY2UvTQpvdmVyY29uZmlkZW50Cm92ZXJjb25zY2llbnRpb3VzCm92ZXJjb29rL0RHUwpvdmVyY3JpdGljYWwKb3ZlcmNyb3dkL1NERwpvdmVyY3Jvd2RpbmcvTQpvdmVyZGVjb3JhdGUvRFNHCm92ZXJkZXBlbmRlbnQKb3ZlcmRldmVsb3AvU0RHCm92ZXJkaWQKb3ZlcmRvL0cKb3ZlcmRvZXMKb3ZlcmRvbmUKb3ZlcmRvc2UvTUdEUwpvdmVyZHJhZnQvU00Kb3ZlcmRyYXcvR1MKb3ZlcmRyYXduCm92ZXJkcmVzcy9HTURTCm92ZXJkcmV3Cm92ZXJkcml2ZS9TTQpvdmVyZHViL1NNCm92ZXJkdWJiZWQKb3ZlcmR1YmJpbmcKb3ZlcmR1ZQpvdmVyZWFnZXIKb3ZlcmVhdC9HU04Kb3ZlcmVtb3Rpb25hbApvdmVyZW1waGFzaXMvTQpvdmVyZW1waGFzaXplL0dEUwpvdmVyZW50aHVzaWFzdGljCm92ZXJlc3RpbWF0ZS9NR05EUwpvdmVyZXN0aW1hdGlvbi9NCm92ZXJleGNpdGUvRFNHCm92ZXJleGVyY2lzZS9HRFMKb3ZlcmV4ZXJ0L1NERwpvdmVyZXhlcnRpb24vTQpvdmVyZXhwb3NlL0dEUwpvdmVyZXhwb3N1cmUvTQpvdmVyZXh0ZW5kL0RHUwpvdmVyZmVkCm92ZXJmZWVkL0dTCm92ZXJmaWxsL0RHUwpvdmVyZmxldwpvdmVyZmxpZ2h0L01TCm92ZXJmbG93L01EU0cKb3ZlcmZsb3duCm92ZXJmbHkvR1MKb3ZlcmZvbmQKb3ZlcmZ1bGwKb3ZlcmdlbmVyYWxpemUvRFNHCm92ZXJnZW5lcm91cwpvdmVyZ3JhemUvRFNHCm92ZXJncmV3Cm92ZXJncm91bmQKb3Zlcmdyb3cvSFNHCm92ZXJncm93bgpvdmVyZ3Jvd3RoL00Kb3ZlcmhhbmQvTURTCm92ZXJoYW5nL01TRwpvdmVyaGFzdHkKb3ZlcmhhdWwvTURTRwpvdmVyaGVhZC9NUwpvdmVyaGVhci9TRwpvdmVyaGVhcmQKb3ZlcmhlYXQvRFNHCm92ZXJodW5nCm92ZXJpbmR1bGdlL0dEUwpvdmVyaW5kdWxnZW5jZS9NCm92ZXJpbmR1bGdlbnQKb3ZlcmpveS9HU0QKb3ZlcmtpbGwvTQpvdmVybGFkZW4Kb3ZlcmxhaWQKb3ZlcmxhaW4Kb3ZlcmxhbmQKb3ZlcmxhcC9TTQpvdmVybGFwcGVkCm92ZXJsYXBwaW5nCm92ZXJsYXJnZQpvdmVybGF5L0dTTQpvdmVybGVhZgpvdmVybGllCm92ZXJsb2FkL0dNRFMKb3ZlcmxvbmcKb3Zlcmxvb2svR01EUwpvdmVybG9yZC9NUwpvdmVybHkvU0cKb3Zlcm1hbm5lZApvdmVybWFubmluZwpvdmVybWFzdGVyL1NERwpvdmVybW9kZXN0Cm92ZXJtdWNoL1MKb3Zlcm5pY2UKb3Zlcm5pZ2h0L01TCm92ZXJvcHRpbWlzbS9NCm92ZXJvcHRpbWlzdGljCm92ZXJwYWlkCm92ZXJwYXJ0aWN1bGFyCm92ZXJwYXNzL01TCm92ZXJwYXkvR1MKb3ZlcnBsYXkvR0RTCm92ZXJwb3B1bGF0ZS9HTkRTCm92ZXJwb3B1bGF0aW9uL00Kb3ZlcnBvd2VyL1NERwpvdmVycG93ZXJpbmcvWQpvdmVycHJhaXNlL0RTRwpvdmVycHJlY2lzZQpvdmVycHJpY2UvRFNHCm92ZXJwcmludC9TTURHCm92ZXJwcm9kdWNlL0dEUwpvdmVycHJvZHVjdGlvbi9NCm92ZXJwcm90ZWN0L1NER1YKb3ZlcnF1YWxpZmllZApvdmVycmFuCm92ZXJyYXRlL0dEUwpvdmVycmVhY2gvR0RTCm92ZXJyZWFjdC9TREcKb3ZlcnJlYWN0aW9uL1NNCm92ZXJyZWZpbmVkCm92ZXJyaWRkZW4Kb3ZlcnJpZGUvTUdTCm92ZXJyaXBlL00Kb3ZlcnJvZGUKb3ZlcnJ1bGUvR0RTCm92ZXJydW4vU00Kb3ZlcnJ1bm5pbmcKb3ZlcnNhbXBsaW5nCm92ZXJzYXcKb3ZlcnNlYS9TCm92ZXJzZWUvUlNaCm92ZXJzZWVpbmcKb3ZlcnNlZW4Kb3ZlcnNlZXIvTQpvdmVyc2VsbC9HUwpvdmVyc2Vuc2l0aXZlL1AKb3ZlcnNlbnNpdGl2ZW5lc3MvTQpvdmVyc2V4ZWQKb3ZlcnNoYWRvdy9EU0cKb3ZlcnNoYXJlL0RTRwpvdmVyc2hvZS9NUwpvdmVyc2hvb3QvR1MKb3ZlcnNob3QKb3ZlcnNpZ2h0L1NNCm92ZXJzaW1wbGUKb3ZlcnNpbXBsaWZpY2F0aW9uL00Kb3ZlcnNpbXBsaWZ5L0RTTkdYCm92ZXJzaXplCm92ZXJzbGVlcC9HUwpvdmVyc2xlcHQKb3ZlcnNvbGQKb3ZlcnNwZWNpYWxpemF0aW9uL00Kb3ZlcnNwZWNpYWxpemUvR0RTCm92ZXJzcGVuZC9TRwpvdmVyc3BlbnQKb3ZlcnNwcmVhZC9HUwpvdmVyc3RhZmZlZApvdmVyc3RhdGUvRFNMRwpvdmVyc3RhdGVtZW50L01TCm92ZXJzdGF5L0RTRwpvdmVyc3RlcC9TCm92ZXJzdGVwcGVkCm92ZXJzdGVwcGluZwpvdmVyc3RpbXVsYXRlL0RTRwpvdmVyc3RvY2svR1NECm92ZXJzdHJldGNoL0dEUwpvdmVyc3RyaWN0Cm92ZXJzdHJ1bmcKb3ZlcnN0dWZmZWQKb3ZlcnN1YnNjcmliZS9EU0cKb3ZlcnN1YnRsZQpvdmVyc3VwcGx5L0dEUwpvdmVyc3VzcGljaW91cwpvdmVydC9ZCm92ZXJ0YWtlL0dTCm92ZXJ0YWtlbgpvdmVydGF4L0dEUwpvdmVydGhpbmsvU0cKb3ZlcnRob3VnaHQKb3ZlcnRocmV3Cm92ZXJ0aHJvdy9TTUcKb3ZlcnRocm93bgpvdmVydGltZS9NUwpvdmVydGlyZS9HRFMKb3ZlcnRvbmUvTVMKb3ZlcnRvb2sKb3ZlcnR1cmUvTVMKb3ZlcnR1cm4vRFNHCm92ZXJ1c2UvRFNNRwpvdmVydmFsdWF0aW9uL1MKb3ZlcnZhbHVlL0RTRwpvdmVydmlldy9NUwpvdmVyd2VlbmluZy9ZCm92ZXJ3ZWlnaHQvTQpvdmVyd2hlbG0vU0dECm92ZXJ3aGVsbWluZy9ZCm92ZXJ3aW50ZXIvU0RHCm92ZXJ3b3JrL0dNRFMKb3ZlcndyaXRlL0dTCm92ZXJ3cml0dGVuCm92ZXJ3cm90ZQpvdmVyd3JvdWdodApvdmVyemVhbG91cwpvdmlkdWN0L1NNCm92aXBhcm91cwpvdm9pZC9NUwpvdnVsYXIKb3Z1bGF0ZS9EU0dOCm92dWxhdGlvbi9NCm92dWxlL01TCm92dW0vTQpvdwpvd2UvRFNHCm93bC9TTQpvd2xldC9NUwpvd2xpc2gvWQpvd24vRVNHRApvd25lci9NUwpvd25lcnNoaXAvTQpveC9NTgpveGJsb29kL00Kb3hib3cvTVMKb3hjYXJ0L1NNCm94Zm9yZC9TTQpveGlkYW50L01TCm94aWRhc2UKb3hpZGF0aW9uL00Kb3hpZGUvTVMKb3hpZGl6YXRpb24vTQpveGlkaXplL1pHRFJTCm94aWRpemVyL00Kb3h0YWlsL1MKb3h5YWNldHlsZW5lL00Kb3h5Z2VuL00Kb3h5Z2VuYXRlL0RTR04Kb3h5Z2VuYXRpb24vTQpveHltb3JhCm94eW1vcm9uL00Kb3lzdGVyL1NNCm96Cm96b25lL00KcC9OUlhUR0oKcEgKcGEvU01ICnBhYmx1bS9NCnBhYnVsdW0vTQpwYWNlL01aR0RSUwpwYWNlbWFrZXIvU00KcGFjZXIvTQpwYWNlc2V0dGVyL1NNCnBhY2V5CnBhY2h5ZGVybS9NUwpwYWNoeXNhbmRyYS9NUwpwYWNpZmljCnBhY2lmaWNhbGx5CnBhY2lmaWNhdGlvbi9NCnBhY2lmaWVyL00KcGFjaWZpc20vTQpwYWNpZmlzdC9TTQpwYWNpZmlzdGljCnBhY2lmeS9aR0RSU04KcGFjaydzCnBhY2svQVVHU0QKcGFja2FnZSdzCnBhY2thZ2UvQUdEUwpwYWNrYWdlci9TTQpwYWNrYWdpbmcvTQpwYWNrZXIvTVMKcGFja2V0L01TCnBhY2tpbmcncwpwYWNraW5naG91c2UvU00KcGFja3NhZGRsZS9NUwpwYWN0L01TCnBhY3kvUlQKcGFkL1NNCnBhZGRlZApwYWRkaW5nL00KcGFkZGxlL01aR0RSUwpwYWRkbGVyL00KcGFkZG9jay9NREdTCnBhZGR5L1NNCnBhZGxvY2svTURTRwpwYWRyZS9TTQpwYWVhbi9TTQpwYWVsbGEvTVMKcGFnYW4vU00KcGFnYW5pc20vTQpwYWdlL01aR0RSUwpwYWdlYW50L01TCnBhZ2VhbnRyeS9NCnBhZ2Vib3kvU00KcGFnZXIvTQpwYWdpbmF0ZS9EU0dOCnBhZ2luYXRpb24vTQpwYWdvZGEvTVMKcGFoCnBhaWQvQVUKcGFpbC9NUwpwYWlsZnVsL1NNCnBhaW4vTURTRwpwYWluZnVsL1BZCnBhaW5mdWxsZXIKcGFpbmZ1bGxlc3QKcGFpbmZ1bG5lc3MvTQpwYWlua2lsbGVyL01TCnBhaW5raWxsaW5nCnBhaW5sZXNzL1BZCnBhaW5sZXNzbmVzcy9NCnBhaW5zdGFraW5nL01ZCnBhaW50L1NaR0pNRFIKcGFpbnRiYWxsCnBhaW50Ym94L01TCnBhaW50YnJ1c2gvTVMKcGFpbnRlZC9VCnBhaW50ZXIvTVkKcGFpbnRpbmcvTQpwYWludHdvcmsKcGFpci9BTURTRwpwYWlyZWQvVQpwYWlyaW5nL1MKcGFpcndpc2UKcGFpc2xleS9TTQpwYWphbWEvUwpwYWphbWFzL00KcGFsL1NNWQpwYWxhY2UvTVMKcGFsYWRpbi9TTQpwYWxhbnF1aW4vU00KcGFsYXRhYmxlL1UKcGFsYXRhbC9TTQpwYWxhdGFsaXphdGlvbi9NCnBhbGF0YWxpemUvR0RTCnBhbGF0ZS9NQlMKcGFsYXRpYWwvWQpwYWxhdGluYXRlL01TCnBhbGF0aW5lL01TCnBhbGF2ZXIvR1NNRApwYWxhenppCnBhbGF6em8KcGFsZS9NWVRHUERSU0oKcGFsZWZhY2UvTVMKcGFsZW5lc3MvTQpwYWxlb2dyYXBoZXIvTVMKcGFsZW9ncmFwaHkvTQpwYWxlb2xpdGhpYwpwYWxlb250b2xvZ2lzdC9TTQpwYWxlb250b2xvZ3kvTQpwYWxldHRlL1NNCnBhbGZyZXkvU00KcGFsaW1vbnkvTQpwYWxpbXBzZXN0L01TCnBhbGluZHJvbWUvTVMKcGFsaW5kcm9taWMKcGFsaW5nL00KcGFsaXNhZGUvU00KcGFsaXNoCnBhbGwvTURTRwpwYWxsYWRpdW0vTQpwYWxsYmVhcmVyL01TCnBhbGxldC9NUwpwYWxsaWF0ZS9EU0dOVgpwYWxsaWF0aW9uL00KcGFsbGlhdGl2ZS9TTQpwYWxsaWQvWVAKcGFsbGlkbmVzcy9NCnBhbGxvci9NCnBhbG0vTURTRwpwYWxtYXRlCnBhbG1ldHRvL1NNCnBhbG1pc3QvU00KcGFsbWlzdHJ5L00KcGFsbXRvcC9TTQpwYWxteS9UUgpwYWxvbWluby9NUwpwYWxwYWJsZQpwYWxwYWJseQpwYWxwYXRlL0RTR04KcGFscGF0aW9uL00KcGFscGl0YXRlL1hHTkRTCnBhbHBpdGF0aW9uL00KcGFsc3kvR0RTTQpwYWx0cmluZXNzL00KcGFsdHJ5L1JQVApwYW1wYXMvTQpwYW1wZXIvRFNHCnBhbXBobGV0L01TCnBhbXBobGV0ZWVyL01TCnBhbi9TTQpwYW5hY2VhL1NNCnBhbmFjaGUvTQpwYW5hbWEvTVMKcGFuYXRlbGxhL1MKcGFuY2FrZS9EU01HCnBhbmNocm9tYXRpYwpwYW5jcmVhcy9NUwpwYW5jcmVhdGljCnBhbmNyZWF0aXRpcwpwYW5kYS9TTQpwYW5kZW1pYy9TTQpwYW5kZW1vbml1bS9NCnBhbmRlci9NRFJaR1MKcGFuZGVyZXIvTQpwYW5lL0tNCnBhbmVneXJpYy9TTQpwYW5lbC9TR0pNRApwYW5lbGluZy9NCnBhbmVsaXN0L01TCnBhbmVzCnBhbmcvTVMKcGFuaGFuZGxlL0RSU01aRwpwYW5oYW5kbGVyL00KcGFuaWMvU00KcGFuaWNrZWQKcGFuaWNraW5nCnBhbmlja3kKcGFubmVkCnBhbm5pZXIvU00KcGFubmluZwpwYW5vcGx5L1NNCnBhbm9yYW1hL1NNCnBhbm9yYW1pYwpwYW5waXBlcy9NCnBhbnN5L1NNCnBhbnQvTURTRwpwYW50YWxvb25zL00KcGFudGVjaG5pY29uL1MKcGFudGhlaXNtL00KcGFudGhlaXN0L1NNCnBhbnRoZWlzdGljCnBhbnRoZW9uL1NNCnBhbnRoZXIvTVMKcGFudGllL01TCnBhbnRvL1MKcGFudG9taW1lL01HRFMKcGFudG9taW1pYwpwYW50b21pbWlzdC9TTQpwYW50cnkvU00KcGFudHN1aXQvU00KcGFudHlob3NlL00KcGFudHlsaW5lci9NCnBhbnR5d2Fpc3QvU00KcGFwL1NNCnBhcGEvTVMKcGFwYWN5L1NNCnBhcGFsCnBhcGFyYXp6aS9NCnBhcGFyYXp6bwpwYXBheWEvTVMKcGFwZXIvU1pHTURSCnBhcGVyYmFjay9TTQpwYXBlcmJhcmsvUwpwYXBlcmJvYXJkL00KcGFwZXJib3kvU00KcGFwZXJjbGlwL1MKcGFwZXJlci9NCnBhcGVyZ2lybC9TTQpwYXBlcmhhbmdlci9TTQpwYXBlcmhhbmdpbmcvTQpwYXBlcmxlc3MKcGFwZXJ3ZWlnaHQvTVMKcGFwZXJ3b3JrL00KcGFwZXJ5CnBhcGlsbGEvTQpwYXBpbGxhZQpwYXBpbGxhcnkKcGFwaXN0L01TCnBhcG9vc2UvTVMKcGFwcHkvU00KcGFwcmlrYS9NCnBhcHlyaQpwYXB5cnVzL00KcGFyL1NaR01EUkJKCnBhcmEvTVMKcGFyYWJsZS9NUwpwYXJhYm9sYS9TTQpwYXJhYm9saWMKcGFyYWNldGFtb2wvUwpwYXJhY2h1dGUvRFNNRwpwYXJhY2h1dGlzdC9NUwpwYXJhZGUvTVpHRFJTCnBhcmFkZXIvTQpwYXJhZGlnbS9TTQpwYXJhZGlnbWF0aWMKcGFyYWRpc2FpY2FsCnBhcmFkaXNlL1NNCnBhcmFkb3gvTVMKcGFyYWRveGljYWwvWQpwYXJhZmZpbi9NCnBhcmFnbGlkaW5nCnBhcmFnb24vTVMKcGFyYWdyYXBoL0dNRApwYXJhZ3JhcGhzCnBhcmFrZWV0L1NNCnBhcmFsZWdhbC9NUwpwYXJhbGxheC9NUwpwYXJhbGxlbC9TR01ECnBhcmFsbGVsZWQvVQpwYXJhbGxlbGlzbS9NUwpwYXJhbGxlbG9ncmFtL1NNCnBhcmFseXNlcwpwYXJhbHlzaXMvTQpwYXJhbHl0aWMvU00KcGFyYWx5emUvRFNHCnBhcmFseXppbmcvWQpwYXJhbWVjaWEKcGFyYW1lY2l1bS9NCnBhcmFtZWRpYy9NUwpwYXJhbWVkaWNhbC9NUwpwYXJhbWV0ZXIvTVMKcGFyYW1ldHJpYwpwYXJhbWlsaXRhcnkvU00KcGFyYW1vdW50CnBhcmFtb3VudGN5CnBhcmFtb3VyL1NNCnBhcmFub2lhL00KcGFyYW5vaWFjL01TCnBhcmFub2lkL1NNCnBhcmFub3JtYWwKcGFyYXBldC9NUwpwYXJhcGhlcm5hbGlhL00KcGFyYXBocmFzZS9EU01HCnBhcmFwbGVnaWEvTQpwYXJhcGxlZ2ljL1NNCnBhcmFwcm9mZXNzaW9uYWwvTVMKcGFyYXBzeWNob2xvZ2lzdC9NUwpwYXJhcHN5Y2hvbG9neS9NCnBhcmFxdWF0L00KcGFyYXNhaWxpbmcKcGFyYXNjZW5kaW5nCnBhcmFzaXRlL1NNCnBhcmFzaXRpYwpwYXJhc2l0aWNhbC9ZCnBhcmFzaXRpc20vTQpwYXJhc29sL01TCnBhcmFzeW1wYXRoZXRpYy9TCnBhcmF0aGlvbi9NCnBhcmF0aHlyb2lkL01TCnBhcmF0cm9vcC9SWlMKcGFyYXRyb29wZXIvTQpwYXJhdHJvb3BzL00KcGFyYXR5cGhvaWQvTQpwYXJib2lsL0RTRwpwYXJjZWwvR01EUwpwYXJjaC9MR0RTCnBhcmNobWVudC9TTQpwYXJkbmVyL1MKcGFyZG9uL1pHTURSQlMKcGFyZG9uYWJsZS9VCnBhcmRvbmFibHkvVQpwYXJkb25lci9NCnBhcmUvUwpwYXJlZ29yaWMvTQpwYXJlbnQvR01EUwpwYXJlbnRhZ2UvTQpwYXJlbnRhbApwYXJlbnRoZXNlcwpwYXJlbnRoZXNpcy9NCnBhcmVudGhlc2l6ZS9EU0cKcGFyZW50aGV0aWMKcGFyZW50aGV0aWNhbC9ZCnBhcmVudGhvb2QvTQpwYXJlbnRpbmcvTQpwYXJlci9NCnBhcmVzL1MKcGFyZXNpcy9NCnBhcmZhaXQvTVMKcGFyaWFoL00KcGFyaWFocwpwYXJpZXRhbApwYXJpbXV0dWVsL01TCnBhcmluZy9NCnBhcmlzaC9NUwpwYXJpc2hpb25lci9NUwpwYXJpdHkvRVNNCnBhcmsvTURTRwpwYXJrYS9TTQpwYXJraW5nL00KcGFya2xhbmQKcGFya291cgpwYXJrd2F5L01TCnBhcmt5CnBhcmxhbmNlL00KcGFybGF5L0dNRFMKcGFybGV5L0dNRFMKcGFybGlhbWVudC9TTQpwYXJsaWFtZW50YXJpYW4vU00KcGFybGlhbWVudGFyeQpwYXJsb3IvTVMKcGFybG91cwpwYXJtaWdpYW5hCnBhcm9jaGlhbC9ZCnBhcm9jaGlhbGlzbS9NCnBhcm9kaXN0L1NNCnBhcm9keS9HRFNNCnBhcm9sZS9NR0RTCnBhcm9sZWUvTVMKcGFyb3RpZApwYXJveHlzbS9TTQpwYXJveHlzbWFsCnBhcnF1ZXQvTURTRwpwYXJxdWV0cnkvTQpwYXJyZWQKcGFycmljaWRhbApwYXJyaWNpZGUvTVMKcGFycmluZwpwYXJyb3QvR01EUwpwYXJyeS9HRFNNCnBhcnNlL0RSU0cKcGFyc2VjL01TCnBhcnNpbW9uaW91cy9ZCnBhcnNpbW9ueS9NCnBhcnNsZXkvTQpwYXJzbmlwL01TCnBhcnNvbi9NUwpwYXJzb25hZ2UvTVMKcGFydCdzCnBhcnQvQ0RTRwpwYXJ0YWtlL1pHUlMKcGFydGFrZW4KcGFydGFrZXIvTQpwYXJ0ZXJyZS9TTQpwYXJ0aGVub2dlbmVzaXMvTQpwYXJ0aWFsL01ZUwpwYXJ0aWFsaXR5L00KcGFydGljaXBhbnQvU00KcGFydGljaXBhdGUvRFNHTgpwYXJ0aWNpcGF0aW9uL00KcGFydGljaXBhdG9yL01TCnBhcnRpY2lwYXRvcnkKcGFydGljaXBpYWwvTQpwYXJ0aWNpcGxlL01TCnBhcnRpY2xlL1NNCnBhcnRpY2xlYm9hcmQvTQpwYXJ0aWN1bGFyL1NNWQpwYXJ0aWN1bGFyaXR5L1NNCnBhcnRpY3VsYXJpemF0aW9uL00KcGFydGljdWxhcml6ZS9EU0cKcGFydGljdWxhdGUvU00KcGFydGluZy9NUwpwYXJ0aXNhbi9TTQpwYXJ0aXNhbnNoaXAvTQpwYXJ0aXRpb24vR01EUwpwYXJ0aXRpdmUvTVMKcGFydGx5CnBhcnRuZXIvTURTRwpwYXJ0bmVyc2hpcC9NUwpwYXJ0b29rCnBhcnRyaWRnZS9TTQpwYXJ0dXJpdGlvbi9NCnBhcnR3YXkKcGFydHkvR0RTTQpwYXJ2ZW51L01TCnBhc2NhbC9NUwpwYXNjaGFsCnBhc2hhL1NNCnBhc3MvTQpwYXNzYWJseQpwYXNzYWdlL01TCnBhc3NhZ2V3YXkvTVMKcGFzc2Jvb2svTVMKcGFzc2UvRFJTQlhaR05WCnBhc3NlbC9NUwpwYXNzZW5nZXIvU00KcGFzc2VyL00KcGFzc2VyYnkvTQpwYXNzZXJzYnkKcGFzc2ltCnBhc3NpbmcvTVkKcGFzc2lvbi9FTQpwYXNzaW9uYXRlL0VZCnBhc3Npb25mbG93ZXIvU00KcGFzc2lvbmxlc3MKcGFzc2l2ZS9QTVlTCnBhc3NpdmVuZXNzL00KcGFzc2l2aXR5L00KcGFzc2l2aXphdGlvbgpwYXNzaXZpemUvRFNHCnBhc3NrZXkvTVMKcGFzc3BocmFzZS9TCnBhc3Nwb3J0L01TCnBhc3N3b3JkL01TCnBhc3QvQU1TCnBhc3RhL1NNCnBhc3RlL0RTTUcKcGFzdGVib2FyZC9NCnBhc3RlbC9NUwpwYXN0ZXJuL01TCnBhc3RldXJpemF0aW9uL00KcGFzdGV1cml6ZS9aR0RSUwpwYXN0ZXVyaXplZC9VCnBhc3RldXJpemVyL00KcGFzdGljaGUvTVMKcGFzdGllCnBhc3RpbGxlL01TCnBhc3RpbWUvTVMKcGFzdGluZXNzL00KcGFzdG9yL01TCnBhc3RvcmFsL01TCnBhc3RvcmF0ZS9NUwpwYXN0cmFtaS9NCnBhc3RyeS9TTQpwYXN0dXJhZ2UvTQpwYXN0dXJlL0RTTUcKcGFzdHVyZWxhbmQvTQpwYXN0eS9QVFJTTQpwYXQvU00KcGF0Y2gvRUdNRFMKcGF0Y2hpbHkKcGF0Y2hpbmVzcy9NCnBhdGNob3VsaQpwYXRjaHdvcmsvU00KcGF0Y2h5L1RQUgpwYXRlL01TCnBhdGVsbGEvTVMKcGF0ZWxsYWUKcGF0ZW50L0dNRFlTCnBhdGVyZmFtaWxpYXMvTVMKcGF0ZXJuYWwvWQpwYXRlcm5hbGlzbS9NCnBhdGVybmFsaXN0L1MKcGF0ZXJuYWxpc3RpYwpwYXRlcm5pdHkvTQpwYXRlcm5vc3Rlci9NUwpwYXRoL00KcGF0aGV0aWMKcGF0aGV0aWNhbGx5CnBhdGhmaW5kZXIvU00KcGF0aGxlc3MKcGF0aG9nZW4vU00KcGF0aG9nZW5pYwpwYXRob2xvZ2ljYWwvWQpwYXRob2xvZ2lzdC9TTQpwYXRob2xvZ3kvTQpwYXRob3MvTQpwYXRocwpwYXRod2F5L01TCnBhdGllbmNlL00KcGF0aWVudC9JTVNUCnBhdGllbnRlcgpwYXRpZW50bHkKcGF0aW5hL01TCnBhdGluZQpwYXRpby9TTQpwYXRpc3NlcmllL1MKcGF0b2lzL00KcGF0cmVzZmFtaWxpYXMKcGF0cmlhcmNoL00KcGF0cmlhcmNoYWwKcGF0cmlhcmNoYXRlL01TCnBhdHJpYXJjaHMKcGF0cmlhcmNoeS9TTQpwYXRyaWNpYW4vU00KcGF0cmljaWRlL1NNCnBhdHJpbW9uaWFsCnBhdHJpbW9ueS9TTQpwYXRyaW90L1NNCnBhdHJpb3RpYy9VCnBhdHJpb3RpY2FsbHkKcGF0cmlvdGlzbS9NCnBhdHJvbC9NUwpwYXRyb2xsZWQKcGF0cm9sbGluZwpwYXRyb2xtYW4vTQpwYXRyb2xtZW4KcGF0cm9sd29tYW4vTQpwYXRyb2x3b21lbgpwYXRyb24vTVMKcGF0cm9uYWdlL01TCnBhdHJvbmVzcy9NUwpwYXRyb25pemUvWkdEUlMKcGF0cm9uaXplci9NCnBhdHJvbml6aW5nL1kKcGF0cm9ueW1pYy9TTQpwYXRyb255bWljYWxseQpwYXRyb29uL1NNCnBhdHN5L1NNCnBhdHRlZApwYXR0ZXIvTURHUwpwYXR0ZXJuL1NNREcKcGF0dGluZwpwYXR0eS9TTQpwYXVjaXR5L00KcGF1bmNoL01TCnBhdW5jaHkvUlQKcGF1cGVyL01TCnBhdXBlcmlzbS9NCnBhdXBlcml6ZS9EU0cKcGF1c2UvRFNNRwpwYXZlL0FHRFMKcGF2ZWQvVQpwYXZlbWVudC9NUwpwYXZpbGlvbi9TTQpwYXZpbmcvTVMKcGF2bG92YS9TCnBhdy9TR01ECnBhd2wvTVMKcGF3bi9NRFNHCnBhd25icm9rZXIvTVMKcGF3bmJyb2tpbmcvTQpwYXduc2hvcC9NUwpwYXdwYXcvTVMKcGF5J3MKcGF5L0FTR0JMCnBheWJhY2svU00KcGF5Y2hlY2svTVMKcGF5ZGF5L01TCnBheWVkCnBheWVlL1NNCnBheWVyL1NNCnBheWxvYWQvU00KcGF5bWFzdGVyL1NNCnBheW1lbnQvQVNNCnBheW9mZi9NUwpwYXlvbGEvTQpwYXlvdXQvTVMKcGF5cGhvbmUvUwpwYXlyb2xsL1NNCnBheXNsaXAvU00KcGF5d2FsbC9TTQpwYXl3YXJlCnBjdApwZApwZWEvU00KcGVhY2UvU00KcGVhY2VhYmxlCnBlYWNlYWJseQpwZWFjZWZ1bC9QWQpwZWFjZWZ1bG5lc3MvTQpwZWFjZWtlZXBlci9TTQpwZWFjZWtlZXBpbmcvTQpwZWFjZW1ha2VyL01TCnBlYWNlbWFraW5nL00KcGVhY2V0aW1lL00KcGVhY2gvTVMKcGVhY2h5L1RSCnBlYWNvY2svTVMKcGVhZm93bC9NUwpwZWFoZW4vTVMKcGVhay9NRFNHCnBlYWt5CnBlYWwvQU1EU0cKcGVhbnV0L01TCnBlYXIvTVlTCnBlYXJsL1NHTUQKcGVhcmx5L1JUCnBlYXNhbnQvU00KcGVhc2FudHJ5L00KcGVhc2hvb3Rlci9TTQpwZWF0L00KcGVhdHkvVFIKcGViYmxlL01HRFMKcGViYmx5CnBlY2FuL1NNCnBlY2NhZGlsbG8vTQpwZWNjYWRpbGxvZXMKcGVjY2FyeS9TTQpwZWNrL01EUlNaRwpwZWNraXNoCnBlY3MKcGVjdGljCnBlY3Rpbi9NCnBlY3RvcmFsL01TCnBlY3VsYXRlL0dORFMKcGVjdWxhdGlvbi9NCnBlY3VsYXRvci9TTQpwZWN1bGlhci9ZCnBlY3VsaWFyaXR5L1NNCnBlY3VuaWFyeQpwZWRhZ29naWMKcGVkYWdvZ2ljYWwvWQpwZWRhZ29ndWUvU00KcGVkYWdvZ3kvTQpwZWRhbC9TR01ECnBlZGFsby9TCnBlZGFudC9NUwpwZWRhbnRpYwpwZWRhbnRpY2FsbHkKcGVkYW50cnkvTQpwZWRkbGUvWkdEUlMKcGVkZGxlci9NCnBlZGVyYXN0L01TCnBlZGVyYXN0eS9NCnBlZGVzdGFsL01TCnBlZGVzdHJpYW4vU00KcGVkZXN0cmlhbml6YXRpb24KcGVkZXN0cmlhbml6ZS9HRFMKcGVkaWF0cmljL1MKcGVkaWF0cmljaWFuL01TCnBlZGlhdHJpY3MvTQpwZWRpY2FiL1NNCnBlZGljdXJlL01HRFMKcGVkaWN1cmlzdC9NUwpwZWRpZ3JlZS9NRFMKcGVkaW1lbnQvTVMKcGVkb21ldGVyL01TCnBlZG9waGlsZS9TCnBlZG9waGlsaWEKcGVkdW5jbGUvTVMKcGVlL0RSU01aCnBlZWluZwpwZWVrL01EU0cKcGVla2Fib28vTQpwZWVsL01EUlNKWkcKcGVlbGVkL1UKcGVlbGVyL00KcGVlbGluZy9NCnBlZW4vTVMKcGVlcC9NRFJTWkcKcGVlcGJvCnBlZXBlci9NCnBlZXBob2xlL01TCnBlZXBzaG93L01TCnBlZXIvTURHCnBlZXJhZ2UvU00KcGVlcmVzcy9NUwpwZWVybGVzcwpwZWV2ZS9EU01HCnBlZXZpc2gvUFkKcGVldmlzaG5lc3MvTQpwZWV3ZWUvTVMKcGVld2l0L1MKcGVnL1NNCnBlZ2JvYXJkL01TCnBlZ2dlZApwZWdnaW5nCnBlaWdub2lyL1NNCnBlam9yYXRpb24vTQpwZWpvcmF0aXZlL1NNWQpwZWtlL01TCnBla2luZXNlcwpwZWtpbmdlc2UvU00KcGVrb2UvTQpwZWxhZ2ljCnBlbGYvTQpwZWxpY2FuL01TCnBlbGxhZ3JhL00KcGVsbGV0L0dNRFMKcGVsbHVjaWQKcGVsbWV0L1MKcGVsdC9NRFNHCnBlbHZpYwpwZWx2aXMvTVMKcGVtbWljYW4vTQpwZW4vTQpwZW5hbApwZW5hbGl6YXRpb24vTQpwZW5hbGl6ZS9EU0cKcGVuYWx0eS9TTQpwZW5hbmNlL01TCnBlbmNlCnBlbmNoYW50L1NNCnBlbmNpbC9HTURKUwpwZW5kL0NEU0cKcGVuZGFudC9NUwpwZW5kZW50L01TCnBlbmR1bG91cwpwZW5kdWx1bS9NUwpwZW5ldHJhYmlsaXR5L00KcGVuZXRyYWJsZQpwZW5ldHJhdGUvRFNHTlZYCnBlbmV0cmF0aW5nL1kKcGVuZXRyYXRpb24vTQpwZW5mcmllbmQvUwpwZW5ndWluL01TCnBlbmljaWxsaW4vTQpwZW5pbGUKcGVuaW5zdWxhL1NNCnBlbmluc3VsYXIKcGVuaXMvTVMKcGVuaXRlbmNlL00KcGVuaXRlbnQvU01ZCnBlbml0ZW50aWFsCnBlbml0ZW50aWFyeS9TTQpwZW5rbmlmZS9NCnBlbmtuaXZlcwpwZW5saWdodC9TTQpwZW5tYW4vTQpwZW5tYW5zaGlwL00KcGVubWVuCnBlbm5hbnQvTVMKcGVubmVkCnBlbm5pbGVzcwpwZW5uaW5nCnBlbm5vbi9NUwpwZW5ueS9TTQpwZW5ueXdlaWdodC9NUwpwZW5ueXdvcnRoCnBlbm9sb2dpc3QvTVMKcGVub2xvZ3kvTQpwZW5zaW9uL0JaR01EUlMKcGVuc2lvbmVyL00KcGVuc2l2ZS9QWQpwZW5zaXZlbmVzcy9NCnBlbnQKcGVudGFjbGUvTVMKcGVudGFnb24vTVMKcGVudGFnb25hbApwZW50YWdyYW0vU00KcGVudGFtZXRlci9TTQpwZW50YXRobGV0ZS9NUwpwZW50YXRobG9uL01TCnBlbnRob3VzZS9TTQpwZW51Y2hlL00KcGVudWx0aW1hdGUvU00KcGVudW1icmEvTVMKcGVudW1icmFlCnBlbnVyaW91cy9QWQpwZW51cmlvdXNuZXNzL00KcGVudXJ5L00KcGVvbi9NUwpwZW9uYWdlL00KcGVvbnkvU00KcGVvcGxlL01HRFMKcGVwL1NNCnBlcHBlZApwZXBwZXIvR01EUwpwZXBwZXJjb3JuL1NNCnBlcHBlcm1pbnQvU00KcGVwcGVyb25pL01TCnBlcHBlcnkKcGVwcGluZXNzL00KcGVwcGluZwpwZXBweS9UUFIKcGVwc2luL00KcGVwdGljL01TCnBlcHRpZGUvUwpwZXJhZHZlbnR1cmUvTQpwZXJhbWJ1bGF0ZS9YR05EUwpwZXJhbWJ1bGF0aW9uL00KcGVyYW1idWxhdG9yL01TCnBlcmNhbGUvTVMKcGVyY2VpdmUvQkdEUwpwZXJjZWl2ZWQvVQpwZXJjZW50L01TCnBlcmNlbnRhZ2UvU00KcGVyY2VudGlsZS9TTQpwZXJjZXB0aWJsZQpwZXJjZXB0aWJseQpwZXJjZXB0aW9uL1NNCnBlcmNlcHRpb25hbApwZXJjZXB0aXZlL1BZCnBlcmNlcHRpdmVuZXNzL00KcGVyY2VwdHVhbC9ZCnBlcmNoL0dNRFMKcGVyY2hhbmNlCnBlcmNpcGllbmNlL00KcGVyY2lwaWVudApwZXJjb2xhdGUvR05EUwpwZXJjb2xhdGlvbi9NCnBlcmNvbGF0b3IvU00KcGVyY3Vzc2lvbi9BTQpwZXJjdXNzaW9uaXN0L01TCnBlcmN1c3NpdmUKcGVyZGl0aW9uL00KcGVyZHVyYWJsZQpwZXJlZ3JpbmF0ZS9EU1hHTgpwZXJlZ3JpbmF0aW9uL00KcGVyZWdyaW5lL01TCnBlcmVtcHRvcmlseQpwZXJlbXB0b3J5CnBlcmVubmlhbC9TTVkKcGVyZXN0cm9pa2EvTQpwZXJmZWN0L1BUR01EUllTCnBlcmZlY3RhL01TCnBlcmZlY3RpYmlsaXR5L00KcGVyZmVjdGlibGUKcGVyZmVjdGlvbi9TTQpwZXJmZWN0aW9uaXNtL00KcGVyZmVjdGlvbmlzdC9TTQpwZXJmZWN0bmVzcy9NCnBlcmZpZGlvdXMvWQpwZXJmaWR5L1NNCnBlcmZvcmF0ZS9HTlhEUwpwZXJmb3JhdGlvbi9NCnBlcmZvcmNlCnBlcmZvcm0vU0RSWkcKcGVyZm9ybWFuY2UvU00KcGVyZm9ybWF0aXZlCnBlcmZvcm1lZC9VCnBlcmZvcm1lci9NCnBlcmZ1bWUvRFJTTVpHCnBlcmZ1bWVyL00KcGVyZnVtZXJ5L1NNCnBlcmZ1bmN0b3JpbHkKcGVyZnVuY3RvcnkKcGVyZnVzaW9uCnBlcmdvbGEvU00KcGVyaGFwcwpwZXJpY2FyZGlhCnBlcmljYXJkaWFsCnBlcmljYXJkaXRpcwpwZXJpY2FyZGl1bS9NCnBlcmlnZWUvU00KcGVyaWhlbGlhCnBlcmloZWxpb24vTQpwZXJpbC9TR01ECnBlcmlsb3VzL1kKcGVyaW1ldGVyL1NNCnBlcmluYXRhbApwZXJpbmVhCnBlcmluZXVtL00KcGVyaW9kL01TCnBlcmlvZGljCnBlcmlvZGljYWwvU01ZCnBlcmlvZGljaXR5L00KcGVyaW9kb250YWwKcGVyaW9kb250aWNzL00KcGVyaW9kb250aXN0L1NNCnBlcmlwYXRldGljL01TCnBlcmlwaGVyYWwvTVlTCnBlcmlwaGVyeS9TTQpwZXJpcGhyYXNlcwpwZXJpcGhyYXNpcy9NCnBlcmlwaHJhc3RpYwpwZXJpc2NvcGUvU00KcGVyaXNoL0JEUlNaRwpwZXJpc2hhYmxlL01TCnBlcmlzdGFsc2VzCnBlcmlzdGFsc2lzL00KcGVyaXN0YWx0aWMKcGVyaXN0eWxlL1NNCnBlcml0b25lYWwKcGVyaXRvbmV1bS9NUwpwZXJpdG9uaXRpcy9NCnBlcml3aWcvU00KcGVyaXdpbmtsZS9TTQpwZXJqdXJlL0RSU1pHCnBlcmp1cmVyL00KcGVyanVyeS9TTQpwZXJrL01EU0cKcGVya2lseQpwZXJraW5lc3MvTQpwZXJreS9UUFIKcGVybS9NRFNHCnBlcm1hZnJvc3QvTQpwZXJtYW5lbmNlL00KcGVybWFuZW5jeS9NCnBlcm1hbmVudC9TTVkKcGVybWVhYmlsaXR5L00KcGVybWVhYmxlCnBlcm1lYXRlL0dORFMKcGVybWVhdGlvbi9NCnBlcm1pc3NpYmxlCnBlcm1pc3NpYmx5CnBlcm1pc3Npb24vTVMKcGVybWlzc2l2ZS9QWQpwZXJtaXNzaXZlbmVzcy9NCnBlcm1pdC9NUwpwZXJtaXR0ZWQKcGVybWl0dGluZwpwZXJtdXRhdGlvbi9TTQpwZXJtdXRlL0RTRwpwZXJuaWNpb3VzL1lQCnBlcm5pY2lvdXNuZXNzL00KcGVyb3JhdGlvbi9NUwpwZXJveGlkZS9NR0RTCnBlcnBlbmRpY3VsYXIvU01ZCnBlcnBlbmRpY3VsYXJpdHkvTQpwZXJwZXRyYXRlL0RTR04KcGVycGV0cmF0aW9uL00KcGVycGV0cmF0b3IvTVMKcGVycGV0dWFsL1NNWQpwZXJwZXR1YXRlL0RTR04KcGVycGV0dWF0aW9uL00KcGVycGV0dWl0eS9NCnBlcnBsZXgvR0RTCnBlcnBsZXhlZC9ZCnBlcnBsZXhpdHkvU00KcGVycXVpc2l0ZS9TTQpwZXJzZWN1dGUvR05YRFMKcGVyc2VjdXRpb24vTQpwZXJzZWN1dG9yL1NNCnBlcnNldmVyYW5jZS9NCnBlcnNldmVyZS9EU0cKcGVyc2lmbGFnZS9NCnBlcnNpbW1vbi9TTQpwZXJzaXN0L1NHRApwZXJzaXN0ZW5jZS9NCnBlcnNpc3RlbnQvWQpwZXJzbmlja2V0eQpwZXJzb24vVU1TCnBlcnNvbmEvU00KcGVyc29uYWJsZQpwZXJzb25hZQpwZXJzb25hZ2UvTVMKcGVyc29uYWwvTVlTCnBlcnNvbmFsaXR5L1NNCnBlcnNvbmFsaXplL0NEU0cKcGVyc29uYWx0eS9NCnBlcnNvbmlmaWNhdGlvbi9NCnBlcnNvbmlmeS9HRFNOWApwZXJzb25uZWwvTQpwZXJzcGVjdGl2ZS9NUwpwZXJzcGV4CnBlcnNwaWNhY2lvdXMvWQpwZXJzcGljYWNpdHkvTQpwZXJzcGljdWl0eS9NCnBlcnNwaWN1b3VzCnBlcnNwaXJhdGlvbi9NCnBlcnNwaXJlL0dEUwpwZXJzdWFkZS9CWkdEUlMKcGVyc3VhZGVkL1UKcGVyc3VhZGVyL00KcGVyc3Vhc2lvbi9TTQpwZXJzdWFzaXZlL1BZCnBlcnN1YXNpdmVuZXNzL00KcGVydC9SWVBUCnBlcnRhaW4vR1NECnBlcnRpbmFjaW91cy9ZCnBlcnRpbmFjaXR5L00KcGVydGluZW5jZS9NCnBlcnRpbmVudC9ZCnBlcnRuZXNzL00KcGVydHVyYi9ER1MKcGVydHVyYmF0aW9uL1NNCnBlcnR1cmJlZC9VCnBlcnR1c3Npcy9NCnBlcnVrZS9NUwpwZXJ1c2FsL01TCnBlcnVzZS9HRFMKcGVydi9TCnBlcnZhZGUvRFNHCnBlcnZhc2l2ZS9QWQpwZXJ2YXNpdmVuZXNzL00KcGVydmVyc2UvUFhZTgpwZXJ2ZXJzZW5lc3MvTQpwZXJ2ZXJzaW9uL00KcGVydmVyc2l0eS9NCnBlcnZlcnQvU0dNRApwZXNldGEvTVMKcGVza2lseQpwZXNraW5lc3MvTQpwZXNreS9UUFIKcGVzby9NUwpwZXNzYXJ5L1MKcGVzc2ltYWwKcGVzc2ltaXNtL00KcGVzc2ltaXN0L1NNCnBlc3NpbWlzdGljCnBlc3NpbWlzdGljYWxseQpwZXN0L01SU1oKcGVzdGVyL0dECnBlc3RpY2lkZS9NUwpwZXN0aWZlcm91cwpwZXN0aWxlbmNlL1NNCnBlc3RpbGVudApwZXN0aWxlbnRpYWwKcGVzdGxlL01HRFMKcGVzdG8vTQpwZXQvU1pNUgpwZXRhYnl0ZS9NUwpwZXRhbC9TTUQKcGV0YXJkL01TCnBldGNvY2svU00KcGV0ZXIvR01ECnBldGlvbGUvU00KcGV0aXRlL01TCnBldGl0aW9uL1pHTURSUwpwZXRpdGlvbmVyL00KcGV0cmVsL01TCnBldHJpZmFjdGlvbi9NCnBldHJpZnkvRFNHCnBldHJvY2hlbWljYWwvU00KcGV0cm9kb2xsYXIvTVMKcGV0cm9sL00KcGV0cm9sYXR1bS9NCnBldHJvbGV1bS9NCnBldHJvbG9naXN0L1NNCnBldHJvbG9neS9NCnBldHRlZApwZXR0aWNvYXQvTVMKcGV0dGlmb2cvUwpwZXR0aWZvZ2dlZApwZXR0aWZvZ2dlci9TTQpwZXR0aWZvZ2dlcnkvTQpwZXR0aWZvZ2dpbmcKcGV0dGlseQpwZXR0aW5lc3MvTQpwZXR0aW5nL00KcGV0dGlzaC9ZCnBldHR5L1BUUgpwZXR1bGFuY2UvTQpwZXR1bGFudC9ZCnBldHVuaWEvTVMKcGV3L1NNCnBld2VlL1NNCnBld2l0L1NNCnBld3Rlci9NUwpwZXlvdGUvTQpwZgpwZmVubmlnL01TCnBnCnBoYWV0b24vTVMKcGhhZ2UvUwpwaGFnb2N5dGUvU00KcGhhbGFuZ2VyL1NNCnBoYWxhbmdlcwpwaGFsYW54L01TCnBoYWxsaQpwaGFsbGljCnBoYWxsb2NlbnRyaWMKcGhhbGxvY2VudHJpc20KcGhhbGx1cy9NCnBoYW50YXNtL01TCnBoYW50YXNtYWdvcmlhL01TCnBoYW50YXNtYWdvcmljYWwKcGhhbnRhc21hbApwaGFudG9tL1NNCnBoYXJhb2gvTQpwaGFyYW9ocwpwaGFyaXNhaWMKcGhhcmlzZWUvU00KcGhhcm1hY2V1dGljL01TCnBoYXJtYWNldXRpY2FsL1NNCnBoYXJtYWNldXRpY3MvTQpwaGFybWFjaXN0L01TCnBoYXJtYWNvbG9naWMKcGhhcm1hY29sb2dpY2FsCnBoYXJtYWNvbG9naXN0L1NNCnBoYXJtYWNvbG9neS9NCnBoYXJtYWNvcG9laWEvTVMKcGhhcm1hY3kvU00KcGhhcnluZ2VhbApwaGFyeW5nZXMKcGhhcnluZ2l0aXMvTQpwaGFyeW54L00KcGhhc2UvRFNNRwpwaGFzZW91dC9TTQpwaGF0CnBoZWFzYW50L01TCnBoZW5hY2V0aW4vTQpwaGVub2JhcmJpdGFsL00KcGhlbm9sL00KcGhlbm9tL01TCnBoZW5vbWVuYQpwaGVub21lbmFsL1kKcGhlbm9tZW5vbG9naWNhbApwaGVub21lbm9sb2d5CnBoZW5vbWVub24vTVMKcGhlbm90eXBlCnBoZXJvbW9uZS9NUwpwaGV3CnBoaS9TTQpwaGlhbC9TTQpwaGlsYW5kZXIvWkdEUlMKcGhpbGFuZGVyZXIvTQpwaGlsYW5kZXJpbmcvTQpwaGlsYW50aHJvcGljCnBoaWxhbnRocm9waWNhbGx5CnBoaWxhbnRocm9waXN0L01TCnBoaWxhbnRocm9weS9TTQpwaGlsYXRlbGljCnBoaWxhdGVsaXN0L01TCnBoaWxhdGVseS9NCnBoaWxoYXJtb25pYy9TTQpwaGlsaXBwaWMvTVMKcGhpbGlzdGluZS9NUwpwaGlsaXN0aW5pc20vTQpwaGlsb2RlbmRyb24vU00KcGhpbG9sb2dpY2FsCnBoaWxvbG9naXN0L01TCnBoaWxvbG9neS9NCnBoaWxvc29waGVyL01TCnBoaWxvc29waGljCnBoaWxvc29waGljYWwvWQpwaGlsb3NvcGhpemUvRFJTWkcKcGhpbG9zb3BoaXplci9NCnBoaWxvc29waHkvU00KcGhpbHRlci9NUwpwaGlzaC9aR0RSCnBoaXNoZXIvTQpwaGxlYml0aXMvTQpwaGxlZ20vTQpwaGxlZ21hdGljCnBobGVnbWF0aWNhbGx5CnBobG9lbS9NCnBobG94L00KcGhvYmlhL01TCnBob2JpYy9NUwpwaG9lYmUvTVMKcGhvZW5peC9NUwpwaG9uZS9EU01HCnBob25lY2FyZC9TCnBob25lbWUvTVMKcGhvbmVtaWMKcGhvbmVtaWNhbGx5CnBob25ldGljL1MKcGhvbmV0aWNhbGx5CnBob25ldGljaWFuL1NNCnBob25ldGljcy9NCnBob25leWVkCnBob25leWluZwpwaG9uaWMvUwpwaG9uaWNhbGx5CnBob25pY3MvTQpwaG9uaW5lc3MvTQpwaG9ub2dyYXBoL00KcGhvbm9ncmFwaGljCnBob25vZ3JhcGhzCnBob25vbG9naWNhbC9ZCnBob25vbG9naXN0L01TCnBob25vbG9neS9NCnBob255L1BUR0RSU00KcGhvb2V5CnBob3NwaGF0ZS9NUwpwaG9zcGhvZGllc3RlcmFzZQpwaG9zcGhvci9NUwpwaG9zcGhvcmVzY2VuY2UvTQpwaG9zcGhvcmVzY2VudC9ZCnBob3NwaG9yaWMKcGhvc3Bob3JvdXMKcGhvc3Bob3J1cy9NCnBob3NwaG9yeWxhdGlvbgpwaG90by9TR01ECnBob3RvY2VsbC9NUwpwaG90b2NvcGllci9NCnBob3RvY29weS9EUlNNWkcKcGhvdG9lbGVjdHJpYwpwaG90b2VsZWN0cmljYWxseQpwaG90b2VuZ3JhdmUvRFJTSlpHCnBob3RvZW5ncmF2ZXIvTQpwaG90b2VuZ3JhdmluZy9NCnBob3RvZmluaXNoaW5nL00KcGhvdG9nZW5pYwpwaG90b2dlbmljYWxseQpwaG90b2dyYXBoL01EUlpHCnBob3RvZ3JhcGhlci9NCnBob3RvZ3JhcGhpYwpwaG90b2dyYXBoaWNhbGx5CnBob3RvZ3JhcGhzL0EKcGhvdG9ncmFwaHkvTQpwaG90b2pvdXJuYWxpc20vTQpwaG90b2pvdXJuYWxpc3QvU00KcGhvdG9tZXRlci9NUwpwaG90b24vTVMKcGhvdG9zZW5zaXRpdmUKcGhvdG9zdGF0L1NNCnBob3Rvc3RhdGljCnBob3Rvc3RhdHRlZApwaG90b3N0YXR0aW5nCnBob3Rvc3ludGhlc2lzL00KcGhvdG9zeW50aGVzaXplL0dEUwpwaG90b3N5bnRoZXRpYwpwaG90b3Ryb3BpYwpwaG90b3Ryb3Bpc20KcGhvdG90eXBlc2V0dGVyCnBob3RvdHlwZXNldHRpbmcKcGhyYXNhbApwaHJhc2UncwpwaHJhc2UvQUdEUwpwaHJhc2Vib29rL1MKcGhyYXNlb2xvZ3kvTQpwaHJhc2luZy9NUwpwaHJlYWtpbmcKcGhyZW5vbG9naXN0L1NNCnBocmVub2xvZ3kvTQpwaHlsYQpwaHlsYWN0ZXJ5L1NNCnBoeWxvZ2VueS9NCnBoeWx1bS9NCnBoeXMKcGh5c2ljL1NNCnBoeXNpY2FsL01ZUwpwaHlzaWNhbGl0eQpwaHlzaWNpYW4vU00KcGh5c2ljaXN0L1NNCnBoeXNpY2tlZApwaHlzaWNraW5nCnBoeXNpY3MvTQpwaHlzaW8vUwpwaHlzaW9nbm9teS9TTQpwaHlzaW9ncmFwaHkvTQpwaHlzaW9sb2dpYwpwaHlzaW9sb2dpY2FsL1kKcGh5c2lvbG9naXN0L01TCnBoeXNpb2xvZ3kvTQpwaHlzaW90aGVyYXBpc3QvTVMKcGh5c2lvdGhlcmFweS9NCnBoeXNpcXVlL01TCnBpL1NNRFJIWkcKcGlhbmlzc2ltby9TTQpwaWFuaXN0L01TCnBpYW5vL1NNCnBpYW5vZm9ydGUvU00KcGlhbm9sYS9TCnBpYXN0ZXIvTVMKcGlhenphL01TCnBpYnJvY2gvTQpwaWJyb2NocwpwaWMvU00KcGljYS9NCnBpY2Fkb3IvTVMKcGljYW50ZQpwaWNhcmVzcXVlCnBpY2F5dW5lCnBpY2NhbGlsbGkvTQpwaWNjb2xvL01TCnBpY2svTURSU0paRwpwaWNrYXgvR01EUwpwaWNrZXIvTQpwaWNrZXJlbC9NUwpwaWNrZXQvWkdNRFJTCnBpY2tpbmdzL00KcGlja2xlL01HRFMKcGlja3BvY2tldC9TTQpwaWNrdXAvTVMKcGlja3kvUFRSCnBpY25pYy9NUwpwaWNuaWNrZWQKcGljbmlja2VyL1NNCnBpY25pY2tpbmcKcGljb3QvU00KcGljdG9ncmFwaC9NCnBpY3RvZ3JhcGhzCnBpY3RvcmlhbC9NWVMKcGljdHVyZS9NR0RTCnBpY3R1cmVzcXVlL1BZCnBpY3R1cmVzcXVlbmVzcy9NCnBpZGRsZS9NR0RTCnBpZGRseQpwaWRnaW4vTVMKcGllL1NNCnBpZWJhbGQvTVMKcGllY2UvRFNNRwpwaWVjZW1lYWwKcGllY2V3b3JrL01SWgpwaWVjZXdvcmtlci9NCnBpZWNydXN0L1NNCnBpZWluZwpwaWVyL00KcGllcmNlL0pHRFMKcGllcmNpbmcvTVkKcGlldHkvTQpwaWV6b2VsZWN0cmljCnBpZmZsZS9NRwpwaWcvU01MCnBpZ2Vvbi9NUwpwaWdlb25ob2xlL0RTTUcKcGlnZ2VkCnBpZ2dlcnkvUwpwaWdnaW5nCnBpZ2dpc2gvUFkKcGlnZ2lzaG5lc3MvTQpwaWdneS9UUlNNCnBpZ2d5YmFjay9NRFNHCnBpZ2hlYWRlZC9QWQpwaWdoZWFkZWRuZXNzL00KcGlnbGV0L01TCnBpZ21lbnQvTURTCnBpZ21lbnRhdGlvbi9NCnBpZ3Blbi9NUwpwaWdza2luL01TCnBpZ3N0eS9TTQpwaWdzd2lsbApwaWd0YWlsL01TCnBpa2UvTVpHRFJTCnBpa2VyL00KcGlrZXN0YWZmL1NNCnBpbGFmL1NNCnBpbGFzdGVyL01TCnBpbGNoYXJkL01TCnBpbGUvTUdEU0oKcGlsZXVwL01TCnBpbGZlci9aR0RSUwpwaWxmZXJhZ2UvTQpwaWxmZXJlci9NCnBpbGdyaW0vTVMKcGlsZ3JpbWFnZS9NUwpwaWxpbmcvTQpwaWxsL01EU0cKcGlsbGFnZS9NWkdEUlMKcGlsbGFnZXIvTQpwaWxsYXIvTURTCnBpbGxib3gvTVMKcGlsbGlvbi9NUwpwaWxsb2NrL1MKcGlsbG9yeS9HRFNNCnBpbGxvdy9HTURTCnBpbGxvd2Nhc2UvTVMKcGlsbG93c2xpcC9NUwpwaWxvdC9ER1NNCnBpbG90aG91c2UvU00KcGltZW50by9NUwpwaW1pZW50by9NUwpwaW1wL0dNRFlTCnBpbXBlcm5lbC9NUwpwaW1wbGUvRFNNCnBpbXBseS9SVApwaW4vU00KcGluYWZvcmUvTVMKcGluYXRhL01TCnBpbmJhbGwvTQpwaW5jZXIvTVMKcGluY2gvR01EUwpwaW5jdXNoaW9uL01TCnBpbmUncwpwaW5lL0FHRFMKcGluZWFwcGxlL01TCnBpbmV3b29kL1MKcGluZXkKcGluZmVhdGhlci9TTQpwaW5nL0dNRApwaW5oZWFkL1NNCnBpbmhvbGUvU00KcGluaWVyCnBpbmllc3QKcGluaW9uL1NNREcKcGluay9UR1BNRFJTCnBpbmtleWUvTQpwaW5raWUvU00KcGlua2lzaApwaW5rbmVzcy9NCnBpbmtvL01TCnBpbm5hY2xlL1NNCnBpbm5hdGUKcGlubmVkL1UKcGlubmluZy9VCnBpbm55L1MKcGlub2NobGUvTQpwaW5vbi9NUwpwaW5wb2ludC9TR01ECnBpbnByaWNrL01TCnBpbnNldHRlci9TTQpwaW5zdHJpcGUvRFNNCnBpbnQvTVMKcGludG8vTVMKcGludXAvTVMKcGlud2hlZWwvR1NNRApwaW55aW4vTQpwaW55b24vU00KcGlvbmVlci9TR01ECnBpb3VzL1lQCnBpb3VzbmVzcy9NCnBpcC9TWkdNRFIKcGlwZS9NUwpwaXBlbGluZS9TTQpwaXBlci9NCnBpcGV0dGUvU00KcGlwZXdvcmsKcGlwaW5nL00KcGlwaXQvTVMKcGlwcGVkCnBpcHBpbi9TTQpwaXBwaW5nCnBpcHNxdWVhay9TTQpwaXF1YW5jeS9NCnBpcXVhbnQvWQpwaXF1ZS9NR0RTCnBpcmFjeS9NCnBpcmFuaGEvU00KcGlyYXRlL0RTTUcKcGlyYXRpY2FsL1kKcGlyb2dpL00KcGlyb3Noa2kvTQpwaXJvdWV0dGUvRFNNRwpwaXNjYXRvcmlhbApwaXNtaXJlL1NNCnBpc3MvWkdNRFJTCnBpc3NvaXIvUwpwaXN0YWNoaW8vU00KcGlzdGUvUwpwaXN0aWwvU00KcGlzdGlsbGF0ZQpwaXN0b2wvU00KcGlzdG9uL1NNCnBpdC9TTQpwaXRhL01TCnBpdGFwYXQvU00KcGl0Y2gvTURSU1pHCnBpdGNoYmxlbmRlL00KcGl0Y2hlci9NCnBpdGNoZm9yay9NRFNHCnBpdGNobWFuL00KcGl0Y2htZW4KcGl0ZW91cy9ZUApwaXRlb3VzbmVzcy9NCnBpdGZhbGwvU00KcGl0aC9NCnBpdGhlYWQvUwpwaXRoaWx5CnBpdGhpbmVzcy9NCnBpdGh5L1JUUApwaXRpYWJsZQpwaXRpYWJseQpwaXRpZnVsL1kKcGl0aWxlc3MvUFkKcGl0aWxlc3NuZXNzL00KcGl0b24vTVMKcGl0dGEvUwpwaXR0YW5jZS9NUwpwaXR0ZWQKcGl0dGluZwpwaXR1aXRhcnkvU00KcGl0eS9HRFNNCnBpdHlpbmcvWQpwaXZvdC9NREdTCnBpdm90YWwKcGl4L00KcGl4ZWwvTVMKcGl4aWUvTVMKcGl6emEvTVMKcGl6emF6ei9NCnBpenplcmlhL1NNCnBpenppY2F0aQpwaXp6aWNhdG8vTQpwaidzCnBrCnBrZwpwa3QKcGt3eQpwbApwbGFjYXJkL1NNREcKcGxhY2F0ZS9EU0dOCnBsYWNhdGlvbi9NCnBsYWNhdG9yeQpwbGFjZSdzCnBsYWNlL0FFU0RMRwpwbGFjZWJvL1NNCnBsYWNlZC9VCnBsYWNlaG9sZGVyL01TCnBsYWNla2ljay9NRFJaR1MKcGxhY2VraWNrZXIvTQpwbGFjZW1lbnQvRUFTTQpwbGFjZW50YS9TTQpwbGFjZW50YWwvUwpwbGFjZXIvU00KcGxhY2lkL1kKcGxhY2lkaXR5L00KcGxhY2luZ3MKcGxhY2tldC9TTQpwbGFnaWFyaXNtL1NNCnBsYWdpYXJpc3QvU00KcGxhZ2lhcml6ZS9EUlNaRwpwbGFnaWFyaXplci9NCnBsYWdpYXJ5L00KcGxhZ3VlL0RTTUcKcGxhaWNlCnBsYWlkL01TCnBsYWluL01SWVRTUApwbGFpbmNoYW50CnBsYWluY2xvdGhlcwpwbGFpbmNsb3RoZXNtYW4vTQpwbGFpbmNsb3RoZXNtZW4KcGxhaW5uZXNzL00KcGxhaW5zbWFuL00KcGxhaW5zbWVuCnBsYWluc29uZy9NCnBsYWluc3Bva2VuCnBsYWludC9TTVYKcGxhaW50aWZmL1NNCnBsYWludGl2ZS9ZCnBsYWl0L01ER1MKcGxhbi9aTVJTCnBsYW5hcgpwbGFuZSdzCnBsYW5lL0NHRFMKcGxhbmVsb2FkL01TCnBsYW5lci9NCnBsYW5ldC9TTQpwbGFuZXRhcml1bS9TTQpwbGFuZXRhcnkKcGxhbmdlbmN5L00KcGxhbmdlbnQKcGxhbmsvTURHUwpwbGFua2luZy9NCnBsYW5rdG9uL00KcGxhbm5lZC9VCnBsYW5uZXIvU00KcGxhbm5pbmcvUwpwbGFudC9NRFJaR1NKCnBsYW50YWluL1NNCnBsYW50YXIKcGxhbnRhdGlvbi9NUwpwbGFudGVyL00KcGxhbnRpbmcvTQpwbGFudGxpa2UKcGxhcXVlL1NNCnBsYXNoL01EU0cKcGxhc21hL00KcGxhc3Rlci9TWkdNRFIKcGxhc3RlcmJvYXJkL00KcGxhc3RlcmVyL00KcGxhc3RpYy9TTQpwbGFzdGljaXR5L00KcGxhc3RpY2l6ZS9EU0cKcGxhc3RpcXVlCnBsYXQvWEdNRE5TCnBsYXRlL01TCnBsYXRlYXUvU01ERwpwbGF0ZWZ1bC9TTQpwbGF0ZWxldC9TTQpwbGF0ZW4vTQpwbGF0Zm9ybS9TR01ECnBsYXRpbmcvTQpwbGF0aW51bS9NCnBsYXRpdHVkZS9TTQpwbGF0aXR1ZGlub3VzCnBsYXRvbmljCnBsYXRvb24vU0dNRApwbGF0dGVkCnBsYXR0ZXIvU00KcGxhdHRpbmcKcGxhdHkvTQpwbGF0eXB1cy9NUwpwbGF0eXMKcGxhdWRpdC9TTQpwbGF1c2liaWxpdHkvTQpwbGF1c2libGUKcGxhdXNpYmx5CnBsYXkvQUVHTURTCnBsYXlhYmxlL0VVCnBsYXlhY3QvU0dECnBsYXlhY3RpbmcvTQpwbGF5YmFjay9NUwpwbGF5YmlsbC9NUwpwbGF5Ym9vay9NUwpwbGF5Ym95L1NNCnBsYXllci9TTQpwbGF5ZmVsbG93L1NNCnBsYXlmdWwvUFkKcGxheWZ1bG5lc3MvTQpwbGF5Z2lybC9NUwpwbGF5Z29lci9NUwpwbGF5Z3JvdW5kL1NNCnBsYXlncm91cC9TCnBsYXlob3VzZS9NUwpwbGF5bGlzdC9NUwpwbGF5bWF0ZS9NUwpwbGF5b2ZmL1NNCnBsYXlwZW4vU00KcGxheXJvb20vU00KcGxheXNjaG9vbC9TCnBsYXl0aGluZy9TTQpwbGF5dGltZS9NCnBsYXl3cmlnaHQvU00KcGxhemEvTVMKcGxlYS9NUwpwbGVhZC9EUlpHU0oKcGxlYWRlci9NCnBsZWFkaW5nL01ZCnBsZWFzYW50L1VUWVAKcGxlYXNhbnRlcgpwbGVhc2FudG5lc3MvVU0KcGxlYXNhbnRyeS9TTQpwbGVhc2UvRURTRwpwbGVhc2luZy9ZUwpwbGVhc3VyYWJseQpwbGVhc3VyZS9NR0RTQgpwbGVhc3VyZWZ1bApwbGVhdC9NREdTCnBsZWIvUwpwbGViYnkKcGxlYmUvTVMKcGxlYmVpYW4vTVMKcGxlYmlzY2l0ZS9NUwpwbGVjdHJhCnBsZWN0cnVtL01TCnBsZWRnZS9EU01HCnBsZW5hcnkvU00KcGxlbmlwb3RlbnRpYXJ5L1NNCnBsZW5pdHVkZS9TTQpwbGVudGVvdXMKcGxlbnRpZnVsL1kKcGxlbnR5L00KcGxlbnVtL1MKcGxlb25hc20vTVMKcGxldGhvcmEvTQpwbGV1cmEvTQpwbGV1cmFlCnBsZXVyaXN5L00KcGxleHVzL01TCnBsaWFiaWxpdHkvTQpwbGlhYmxlCnBsaWFuY3kvTQpwbGlhbnQvWQpwbGllcnMvTQpwbGlnaHQvU01ERwpwbGltc29sbC9TCnBsaW50aC9NCnBsaW50aHMKcGxvZC9TCnBsb2RkZWQKcGxvZGRlci9NUwpwbG9kZGluZy9TCnBsb25rL0RSU1pHCnBsb3AvTVMKcGxvcHBlZApwbG9wcGluZwpwbG9zaXZlL1MKcGxvdC9NUwpwbG90dGVkCnBsb3R0ZXIvU00KcGxvdHRpbmcKcGxvdmVyL1NNCnBsb3cvR01EUwpwbG93bWFuL00KcGxvd21lbgpwbG93c2hhcmUvTVMKcGxveSdzCnBsb3kvUwpwbHVjay9NRFNHCnBsdWNraWx5CnBsdWNraW5lc3MvTQpwbHVja3kvUlBUCnBsdWcncwpwbHVnL1VTCnBsdWdnZWQvVQpwbHVnZ2luZy9VCnBsdWdob2xlL1MKcGx1Z2luL1NNCnBsdW0vR01EUwpwbHVtYWdlL00KcGx1bWIvTURSU1pHSgpwbHVtYmVkL1UKcGx1bWJlci9NCnBsdW1iaW5nL00KcGx1bWUvTVMKcGx1bW1ldC9TR01ECnBsdW1teQpwbHVtcC9NRFJZU1RHUApwbHVtcG5lc3MvTQpwbHVteS9SVApwbHVuZGVyL1NaR01EUgpwbHVuZGVyZXIvTQpwbHVuZ2UvRFJTTVpHCnBsdW5nZXIvTQpwbHVuay9NRFNHCnBsdXBlcmZlY3QvU00KcGx1cmFsL1NNCnBsdXJhbGlzbS9NCnBsdXJhbGlzdC9NUwpwbHVyYWxpc3RpYwpwbHVyYWxpdHkvU00KcGx1cmFsaXphdGlvbi9NCnBsdXJhbGl6ZS9HRFMKcGx1cy9NUwpwbHVzaC9NUllUUApwbHVzaG5lc3MvTQpwbHVzaHkvUlQKcGx1dG9jcmFjeS9TTQpwbHV0b2NyYXQvU00KcGx1dG9jcmF0aWMKcGx1dG9uaXVtL00KcGx1dmlhbApwbHkvQUdEU00KcGx5d29vZC9NCnBtCnBuZXVtYXRpYwpwbmV1bWF0aWNhbGx5CnBuZXVtb2NvY2NhbApwbmV1bW9jb2NjaQpwbmV1bW9jb2NjdXMKcG5ldW1vbmlhL00KcG9hY2gvRFJTWkcKcG9hY2hlci9NCnBvYWNoaW5nL00KcG9jay9HTURTCnBvY2tldC9TTURHCnBvY2tldGJvb2svU00KcG9ja2V0ZnVsL1NNCnBvY2tldGtuaWZlL00KcG9ja2V0a25pdmVzCnBvY2ttYXJrL01ER1MKcG9kL1NNCnBvZGNhc3QvU01HCnBvZGRlZApwb2RkaW5nCnBvZGlhdHJpc3QvU00KcG9kaWF0cnkvTQpwb2RpdW0vU00KcG9lbS9NUwpwb2VzeS9NCnBvZXQvTVMKcG9ldGFzdGVyL01TCnBvZXRlc3MvTVMKcG9ldGljL1MKcG9ldGljYWwvWQpwb2V0cnkvTQpwb2dyb20vU00KcG9pL00KcG9pZ25hbmN5L00KcG9pZ25hbnQvWQpwb2luY2lhbmEvU00KcG9pbnNldHRpYS9TTQpwb2ludC9NRFJTWkcKcG9pbnRibGFuawpwb2ludGVkL1kKcG9pbnRlci9NCnBvaW50aWxsaXNtL00KcG9pbnRpbGxpc3QvU00KcG9pbnRsZXNzL1BZCnBvaW50bGVzc25lc3MvTQpwb2ludHkvVFIKcG9pc2UvTUdEUwpwb2lzb24vU0paR01EUgpwb2lzb25lci9NCnBvaXNvbmluZy9NCnBvaXNvbm91cy9ZCnBva2UvTVpHRFJTCnBva2VyL00KcG9rZXkvTVMKcG9reS9UUgpwb2wvU0dNRApwb2xhcgpwb2xhcml0eS9TTQpwb2xhcml6YXRpb24vQ00KcG9sYXJpemUvQ0RTRwpwb2xlL01TCnBvbGVheGUvR0RTCnBvbGVjYXQvTVMKcG9sZW1pYy9NUwpwb2xlbWljYWwvWQpwb2xlbWljaXN0L1NNCnBvbGVtaWNzL00KcG9sZXN0YXIvU00KcG9saWNlL0RTTUcKcG9saWNlbWFuL00KcG9saWNlbWVuCnBvbGljZXdvbWFuL00KcG9saWNld29tZW4KcG9saWN5L1NNCnBvbGljeWhvbGRlci9NUwpwb2xpY3ltYWtlci9TCnBvbGlvL01TCnBvbGlvbXllbGl0aXMvTQpwb2xpc2gvWkdNRFJTCnBvbGlzaGVkL1UKcG9saXNoZXIvTQpwb2xpdGJ1cm8vTVMKcG9saXRlL1JZVFAKcG9saXRlbmVzcy9NCnBvbGl0ZXNzZS9NCnBvbGl0aWMvUwpwb2xpdGljYWwvWQpwb2xpdGljaWFuL1NNCnBvbGl0aWNpemF0aW9uL00KcG9saXRpY2l6ZS9DRFNHCnBvbGl0aWNraW5nL00KcG9saXRpY28vU00KcG9saXRpY3MvTQpwb2xpdHkvU00KcG9sa2EvTURTRwpwb2xsL0dNRE5TCnBvbGxhY2svTVMKcG9sbGFyZC9TCnBvbGxlbi9NCnBvbGxpbmF0ZS9HTkRTCnBvbGxpbmF0aW9uL00KcG9sbGluYXRvci9TTQpwb2xsaW5nL00KcG9sbGl3b2cvU00KcG9sbHN0ZXIvU00KcG9sbHV0YW50L01TCnBvbGx1dGUvWkdORFJTCnBvbGx1dGVkL1UKcG9sbHV0ZXIvTQpwb2xsdXRpb24vTQpwb2xvL00KcG9sb25haXNlL1NNCnBvbG9uaXVtL00KcG9sdGVyZ2Vpc3QvTVMKcG9sdHJvb24vU00KcG9seQpwb2x5YWNyeWxhbWlkZQpwb2x5YW1vcnkvUwpwb2x5YW5kcm91cwpwb2x5YW5kcnkvTQpwb2x5Y2xpbmljL1NNCnBvbHllc3Rlci9NUwpwb2x5ZXRoeWxlbmUvTQpwb2x5Z2FtaXN0L01TCnBvbHlnYW1vdXMKcG9seWdhbXkvTQpwb2x5Z2xvdC9TTQpwb2x5Z29uL1NNCnBvbHlnb25hbApwb2x5Z3JhcGgvR01ECnBvbHlncmFwaHMKcG9seWhlZHJhbApwb2x5aGVkcm9uL1NNCnBvbHltYXRoL00KcG9seW1hdGhzCnBvbHltZXIvU00KcG9seW1lcmljCnBvbHltZXJpemF0aW9uL00KcG9seW1lcml6ZS9HRFMKcG9seW1vcnBoaWMKcG9seW1vcnBob3VzCnBvbHlub21pYWwvTVMKcG9seXAvTVMKcG9seXBob25pYwpwb2x5cGhvbnkvTQpwb2x5cHJvcHlsZW5lL00KcG9seXMKcG9seXNlbW91cwpwb2x5c3R5cmVuZS9NCnBvbHlzeWxsYWJpYwpwb2x5c3lsbGFibGUvTVMKcG9seXRlY2huaWMvTVMKcG9seXRoZWlzbS9NCnBvbHl0aGVpc3QvU00KcG9seXRoZWlzdGljCnBvbHl0aGVuZQpwb2x5dW5zYXR1cmF0ZS9EUwpwb2x5dXJldGhhbmUvTVMKcG9seXZpbnlsCnBvbS9TCnBvbWFkZS9EU01HCnBvbWFuZGVyL1NNCnBvbWVncmFuYXRlL01TCnBvbW1lbC9TR01ECnBvbW15L1MKcG9tcC9NCnBvbXBhZG91ci9TTUQKcG9tcGFuby9NUwpwb21wb20vU00KcG9tcG9zaXR5L00KcG9tcG91cy9ZUApwb21wb3VzbmVzcy9NCnBvbmNlL0dEUwpwb25jaG8vU00KcG9uY3kKcG9uZC9NUwpwb25kZXIvU1pHRFIKcG9uZGVyZXIvTQpwb25kZXJvdXMvWVAKcG9uZGVyb3VzbmVzcy9NCnBvbmUvTVMKcG9uZy9HRFMKcG9uZ2VlL00KcG9uaWFyZC9NUwpwb250aWZmL1NNCnBvbnRpZmljYWwvWQpwb250aWZpY2F0ZS9EU01HCnBvbnRvb24vU00KcG9ueS9HRFNNCnBvbnl0YWlsL01TCnBvby9TR0QKcG9vY2gvTURTRwpwb29kbGUvU00KcG9vZi9NUwpwb29mdGVyL1MKcG9vaC9HTUQKcG9vaHMKcG9vbC9HTURTCnBvb2xyb29tL01TCnBvb2xzaWRlL1MKcG9vcC9HTURTCnBvb3IvVFJZUApwb29yYm95L00KcG9vcmhvdXNlL1NNCnBvb3JuZXNzL00KcG9wL1NNCnBvcGNvcm4vTQpwb3BlL01TCnBvcGd1bi9TTQpwb3BpbmpheS9NUwpwb3BsYXIvU00KcG9wbGluL00KcG9wb3Zlci9TTQpwb3BwYS9NUwpwb3BwYWRvbS9TCnBvcHBlZApwb3BwZXIvU00KcG9wcGV0L1MKcG9wcGluZwpwb3BweS9TTQpwb3BweWNvY2svTQpwb3B1bGFjZS9NUwpwb3B1bGFyL1kKcG9wdWxhcml0eS9VTQpwb3B1bGFyaXphdGlvbi9NCnBvcHVsYXJpemUvRFNHCnBvcHVsYXRlL0FDR0RTCnBvcHVsYXRpb24vQ00KcG9wdWxhdGlvbnMKcG9wdWxpc20vTQpwb3B1bGlzdC9NUwpwb3B1bG91cy9QCnBvcHVsb3VzbmVzcy9NCnBvcHVwL01TCnBvcmNlbGFpbi9TTQpwb3JjaC9NUwpwb3JjaW5lCnBvcmN1cGluZS9TTQpwb3JlL01HRFMKcG9yZ3kvU00KcG9yay9aTVIKcG9ya2VyL00KcG9ya3kvUlNNVApwb3JuL00KcG9ybm8vTQpwb3Jub2dyYXBoZXIvTVMKcG9ybm9ncmFwaGljCnBvcm5vZ3JhcGhpY2FsbHkKcG9ybm9ncmFwaHkvTQpwb3Jvc2l0eS9NCnBvcm91cy9QCnBvcm91c25lc3MvTQpwb3JwaHlyaXRpYwpwb3JwaHlyeS9NCnBvcnBvaXNlL01HRFMKcG9ycmlkZ2UvTQpwb3JyaW5nZXIvU00KcG9ydCdzL0EKcG9ydC9DQUVHRFMKcG9ydGFiaWxpdHkvTQpwb3J0YWJsZS9NUwpwb3J0YWdlL0RTTUcKcG9ydGFsL1NNCnBvcnRjdWxsaXMvTVMKcG9ydGVuZC9TR0QKcG9ydGVudC9TTQpwb3J0ZW50b3VzL1lQCnBvcnRlci9BU00KcG9ydGVyaG91c2UvU00KcG9ydGZvbGlvL01TCnBvcnRob2xlL01TCnBvcnRpY28vTQpwb3J0aWNvZXMKcG9ydGllcmUvTVMKcG9ydGlvbi9LU0dNRApwb3J0bGluZXNzL00KcG9ydGx5L1JQVApwb3J0bWFudGVhdS9NUwpwb3J0cmFpdC9NUwpwb3J0cmFpdGlzdC9TTQpwb3J0cmFpdHVyZS9NCnBvcnRyYXkvU0dECnBvcnRyYXlhbC9NUwpwb3J0dWxhY2EvTQpwb3NlJ3MvQQpwb3NlL0NBS0VHRFMKcG9zZXIvRUtTTQpwb3NldXIvU00KcG9zaC9UUgpwb3NpdC9EU0dWCnBvc2l0aW9uL0NLRU1TCnBvc2l0aW9uYWwvSwpwb3NpdGlvbmVkL0sKcG9zaXRpb25pbmcvSwpwb3NpdGl2ZS9NWVBTCnBvc2l0aXZlbmVzcy9NCnBvc2l0aXZpc20KcG9zaXRpdmlzdC9TCnBvc2l0cm9uL01TCnBvc3MKcG9zc2UvTVMKcG9zc2Vzcy9BRVZHU0QKcG9zc2Vzc2lvbi9BU00KcG9zc2Vzc2l2ZS9TTVlQCnBvc3Nlc3NpdmVuZXNzL00KcG9zc2Vzc29yL1NNCnBvc3NpYmlsaXR5L1NNCnBvc3NpYmxlL1NNCnBvc3NpYmx5CnBvc3N1bS9TTQpwb3N0L1pHTURSU0oKcG9zdGFnZS9NCnBvc3RhbApwb3N0YmFnL1MKcG9zdGJveC9TCnBvc3RjYXJkL1NNCnBvc3Rjb2RlL1MKcG9zdGNvbG9uaWFsCnBvc3Rjb25zb25hbnRhbApwb3N0ZGF0ZS9EU0cKcG9zdGRvYy9NUwpwb3N0ZG9jdG9yYWwKcG9zdGVyL00KcG9zdGVyaW9yL1NNCnBvc3Rlcml0eS9NCnBvc3RncmFkdWF0ZS9TTQpwb3N0aGFzdGUKcG9zdGh1bW91cy9ZCnBvc3RoeXBub3RpYwpwb3N0aWUvUwpwb3N0aWxpb24vU00KcG9zdGluZHVzdHJpYWwKcG9zdGluZy9NCnBvc3RsdWRlL1NNCnBvc3RtYW4vTQpwb3N0bWFyay9TTURHCnBvc3RtYXN0ZXIvTVMKcG9zdG1lbgpwb3N0bWVub3BhdXNhbApwb3N0bWVyaWRpYW4KcG9zdG1pc3RyZXNzL01TCnBvc3Rtb2Rlcm4KcG9zdG1vZGVybmlzbS9NCnBvc3Rtb2Rlcm5pc3QvTVMKcG9zdG1vcnRlbS9TTQpwb3N0bmFzYWwKcG9zdG5hdGFsCnBvc3RvcGVyYXRpdmUKcG9zdHBhaWQKcG9zdHBhcnR1bQpwb3N0cG9uZS9EU0dMCnBvc3Rwb25lbWVudC9TTQpwb3N0cHJhbmRpYWwKcG9zdHNjcmlwdC9TTQpwb3N0c2Vhc29uL1NNCnBvc3RzeW5hcHRpYwpwb3N0dWxhdGUvWERTTUdOCnBvc3R1bGF0aW9uL00KcG9zdHVyYWwKcG9zdHVyZS9NR0pEUwpwb3N0dXJpbmcvTQpwb3N0d2FyCnBvc3R3b21hbgpwb3N0d29tZW4KcG9zeS9TTQpwb3QvQ1NNCnBvdGFiaWxpdHkvTQpwb3RhYmxlL1NNCnBvdGFzaC9NCnBvdGFzc2l1bS9NCnBvdGF0by9NCnBvdGF0b2VzCnBvdGJlbGx5L0RTTQpwb3Rib2lsZXIvU00KcG90ZW5jeS9NCnBvdGVudC9ZCnBvdGVudGF0ZS9NUwpwb3RlbnRpYWwvTVlTCnBvdGVudGlhbGl0eS9TTQpwb3RlbnRpYXRlL0dEUwpwb3RmdWwvU00KcG90aGVhZC9TTQpwb3RoZXIvU01ERwpwb3RoZXJiL1NNCnBvdGhvbGRlci9NUwpwb3Rob2xlL0RSU01aRwpwb3Rob29rL1NNCnBvdGlvbi9TTQpwb3RsdWNrL01TCnBvdHBpZS9TTQpwb3Rwb3VycmkvU00KcG90c2hlcmQvU00KcG90c2hvdC9NUwpwb3R0YWdlL00KcG90dGVkCnBvdHRlci9HU01ECnBvdHRlcnkvU00KcG90dGluZwpwb3R0eS9QUlNNVApwb3VjaC9NRFNHCnBvdWYvUwpwb3VmZmUvUwpwb3VsdGVyZXIvTVMKcG91bHRpY2UvRFNNRwpwb3VsdHJ5L00KcG91bmNlL0RTTUcKcG91bmQncwpwb3VuZC9LRFNHCnBvdW5kYWdlL00KcG91bmRpbmcvU00KcG91ci9HRFNKCnBvdXQvWkdNRFJTCnBvdXRlci9NCnBvdmVydHkvTQpwb3cKcG93ZGVyL0dTTUQKcG93ZGVyeQpwb3dlci9NRFNHCnBvd2VyYm9hdC9NUwpwb3dlcmZ1bC9ZCnBvd2VyaG91c2UvU00KcG93ZXJsZXNzL1BZCnBvd2VybGVzc25lc3MvTQpwb3d3b3cvU0dNRApwb3gvTVMKcHAKcHBtCnBwcgpwcgpwcmFjdGljYWJpbGl0eS9NCnByYWN0aWNhYmx5CnByYWN0aWNhbC9TTVkKcHJhY3RpY2FsaXR5L1NNCnByYWN0aWNlL0RTTUdCCnByYWN0aWNlZC9VCnByYWN0aWN1bS9TTQpwcmFjdGl0aW9uZXIvU00KcHJhZXRvci9TTQpwcmFldG9yaWFuCnByYWdtYXRpYy9NUwpwcmFnbWF0aWNhbC9ZCnByYWdtYXRpc20vTQpwcmFnbWF0aXN0L01TCnByYWlyaWUvU00KcHJhaXNlL0VEU01HCnByYWlzZXdvcnRoaW5lc3MvTQpwcmFpc2V3b3J0aHkvUApwcmFsaW5lL1NNCnByYW0vTVMKcHJhbmNlL0RSU01aRwpwcmFuY2VyL00KcHJhbmNpbmcvWQpwcmFuZy9EU0cKcHJhbmsvTVMKcHJhbmtzdGVyL1NNCnByYXNlb2R5bWl1bS9NCnByYXQvUwpwcmF0ZS9NWkdEUlMKcHJhdGVyL00KcHJhdGZhbGwvU00KcHJhdHRsZS9EUlNNWkcKcHJhdHRsZXIvTQpwcmF3bi9NRFNHCnByYXkvWkdEUlMKcHJheWVyL00KcHJheWVyZnVsL1kKcHJlYWNoL0RSU1pHTApwcmVhY2hlci9NCnByZWFjaG1lbnQvTQpwcmVhY2h5L1JUCnByZWFkb2xlc2NlbmNlL1NNCnByZWFtYmxlL01HRFMKcHJlYXJyYW5nZS9MR0RTCnByZWFycmFuZ2VtZW50L00KcHJlYXNzaWduZWQKcHJlY2FuY2VsL1NNREcKcHJlY2FuY2Vyb3VzCnByZWNhcmlvdXMvUFkKcHJlY2FyaW91c25lc3MvTQpwcmVjYXN0CnByZWNhdXRpb24vTVMKcHJlY2F1dGlvbmFyeQpwcmVjZWRlL0RTRwpwcmVjZWRlbmNlL00KcHJlY2VkZW50L1NNCnByZWNlcHQvU00KcHJlY2VwdG9yL1NNCnByZWNpbmN0L01TCnByZWNpb3NpdHkvTQpwcmVjaW91cy9ZUApwcmVjaW91c25lc3MvTQpwcmVjaXBpY2UvU00KcHJlY2lwaXRhbnQvTVMKcHJlY2lwaXRhdGUvWE1ZR05EUwpwcmVjaXBpdGF0aW9uL00KcHJlY2lwaXRvdXMvWQpwcmVjaXMvTQpwcmVjaXNlL0RSU1lUR05QCnByZWNpc2VuZXNzL00KcHJlY2lzaW9uL00KcHJlY2x1ZGUvR0RTCnByZWNsdXNpb24vTQpwcmVjb2Npb3VzL1lQCnByZWNvY2lvdXNuZXNzL00KcHJlY29jaXR5L00KcHJlY29nbml0aW9uL00KcHJlY29nbml0aXZlCnByZWNvbG9uaWFsCnByZWNvbmNlaXZlL0dEUwpwcmVjb25jZXB0aW9uL1NNCnByZWNvbmRpdGlvbi9NREdTCnByZWNvb2svR1NECnByZWN1cnNvci9TTQpwcmVjdXJzb3J5CnByZWRhdGUvRFNHCnByZWRhdG9yL01TCnByZWRhdG9yeQpwcmVkYXduCnByZWRlY2Vhc2UvR0RTCnByZWRlY2Vzc29yL1NNCnByZWRlZmluZWQKcHJlZGVzaWduYXRlL0dEUwpwcmVkZXN0aW5hdGlvbi9NCnByZWRlc3RpbmUvRFNHCnByZWRldGVybWluYXRpb24vTQpwcmVkZXRlcm1pbmUvWkdEUlMKcHJlZGV0ZXJtaW5lci9NCnByZWRpY2FibGUKcHJlZGljYW1lbnQvTVMKcHJlZGljYXRlL01HTlZEUwpwcmVkaWNhdGlvbi9NCnByZWRpY2F0aXZlL1kKcHJlZGljdC9CR1ZTRApwcmVkaWN0YWJpbGl0eS9VTQpwcmVkaWN0YWJsZS9VCnByZWRpY3RhYmx5L1UKcHJlZGljdGlvbi9TTQpwcmVkaWN0b3IvTVMKcHJlZGlnZXN0L0dEUwpwcmVkaWxlY3Rpb24vU00KcHJlZGlzcG9zZS9HRFMKcHJlZGlzcG9zaXRpb24vTVMKcHJlZG9taW5hbmNlL00KcHJlZG9taW5hbnQvWQpwcmVkb21pbmF0ZS9ZR0RTCnByZWVtaWUvU00KcHJlZW1pbmVuY2UvTQpwcmVlbWluZW50L1kKcHJlZW1wdC9HVlNECnByZWVtcHRpb24vTQpwcmVlbXB0aXZlL1kKcHJlZW4vRFNHCnByZWV4aXN0L0RHUwpwcmVleGlzdGVuY2UvTQpwcmVmCnByZWZhYi9TTQpwcmVmYWJiZWQKcHJlZmFiYmluZwpwcmVmYWJyaWNhdGUvRFNHTgpwcmVmYWJyaWNhdGlvbi9NCnByZWZhY2UvRFNNRwpwcmVmYXRvcnkKcHJlZmVjdC9TTQpwcmVmZWN0dXJlL01TCnByZWZlci9TQkwKcHJlZmVyYWJseQpwcmVmZXJlbmNlL01TCnByZWZlcmVudGlhbC9ZCnByZWZlcm1lbnQvTQpwcmVmZXJyZWQKcHJlZmVycmluZwpwcmVmaWd1cmUvR0RTCnByZWZpeC9NRFNHCnByZWZvcm0vR1NECnByZWZyb250YWwKcHJlZ2FtZS9TTQpwcmVnbmFuY3kvU00KcHJlZ25hbnQKcHJlaGVhdC9HU0QKcHJlaGVuc2lsZQpwcmVoaXN0b3JpYW4vUwpwcmVoaXN0b3JpYwpwcmVoaXN0b3JpY2FsL1kKcHJlaGlzdG9yeS9NCnByZWh1bWFuCnByZWp1ZGdlL0dEUwpwcmVqdWRnbWVudC9TTQpwcmVqdWRpY2UvTUdEUwpwcmVqdWRpY2VkL1UKcHJlanVkaWNpYWwKcHJla2luZGVyZ2FydGVuL1NNCnByZWxhY3kvTQpwcmVsYXRlL1NNCnByZWxpbS9TTQpwcmVsaW1pbmFyeS9TTQpwcmVsaXRlcmF0ZQpwcmVsdWRlL01TCnByZW1hcml0YWwKcHJlbWF0dXJlL1kKcHJlbWVkL1NNCnByZW1lZGljYWwKcHJlbWVkaXRhdGUvRFNHTgpwcmVtZWRpdGF0ZWQvVQpwcmVtZWRpdGF0aW9uL00KcHJlbWVuc3RydWFsCnByZW1pZXIvU0dNRApwcmVtaWVyZS9NUwpwcmVtaWVyc2hpcC9NUwpwcmVtaXNlL0RTTUcKcHJlbWl1bS9TTQpwcmVtaXgvR0RTCnByZW1vbGFyL1NNCnByZW1vbml0aW9uL01TCnByZW1vbml0b3J5CnByZW5hdGFsL1kKcHJlbnVwL1NNCnByZW51cHRpYWwKcHJlb2NjdXBhdGlvbi9TTQpwcmVvY2N1cHkvRFNHCnByZW9wZXJhdGl2ZQpwcmVvcmRhaW4vR0RTCnByZXAvTVMKcHJlcGFja2FnZS9EU0cKcHJlcGFja2VkCnByZXBhaWQKcHJlcGFyYXRpb24vU00KcHJlcGFyYXRvcnkKcHJlcGFyZS9HRFMKcHJlcGFyZWQvVVAKcHJlcGFyZWRuZXNzL1VNCnByZXBheS9HU0wKcHJlcGF5bWVudC9NUwpwcmVwb25kZXJhbmNlL1NNCnByZXBvbmRlcmFudC9ZCnByZXBvbmRlcmF0ZS9HRFMKcHJlcG9zaXRpb24vU00KcHJlcG9zaXRpb25hbC9ZCnByZXBvc3Nlc3MvR0RTCnByZXBvc3Nlc3NpbmcvVQpwcmVwb3NzZXNzaW9uL1NNCnByZXBvc3Rlcm91cy9ZCnByZXBwZWQKcHJlcHBpbmcKcHJlcHB5L1RSU00KcHJlcHViZXNjZW5jZS9NCnByZXB1YmVzY2VudC9TTQpwcmVwdWNlL01TCnByZXF1ZWwvTVMKcHJlcmVjb3JkL0dTRApwcmVyZWdpc3Rlci9TR0QKcHJlcmVnaXN0cmF0aW9uL00KcHJlcmVxdWlzaXRlL01TCnByZXJvZ2F0aXZlL1NNCnByZXMKcHJlc2FnZS9NR0RTCnByZXNieW9waWEvTQpwcmVzYnl0ZXIvU00KcHJlc2J5dGVyeS9TTQpwcmVzY2hvb2wvU1pNUgpwcmVzY2hvb2xlci9NCnByZXNjaWVuY2UvTQpwcmVzY2llbnQvWQpwcmVzY3JpYmUvRFNHCnByZXNjcmlwdC9TVk0KcHJlc2NyaXB0aW9uL1NNCnByZXNjcmlwdGl2ZS9ZCnByZXNlYXNvbi9TTQpwcmVzZW5jZS9TTQpwcmVzZW50L0xNRFJZWkdTQgpwcmVzZW50YWJseQpwcmVzZW50YXRpb24vQVNNCnByZXNlbnRlci9NCnByZXNlbnRpbWVudC9TTQpwcmVzZW50bWVudC9TTQpwcmVzZXJ2YXRpb24vTQpwcmVzZXJ2YXRpb25pc3QvU00KcHJlc2VydmF0aXZlL1NNCnByZXNlcnZlL0JEUlNNWkcKcHJlc2VydmVyL00KcHJlc2V0L1MKcHJlc2V0dGluZwpwcmVzaHJhbmsKcHJlc2hyaW5rL0dTCnByZXNocnVuawpwcmVzaWRlL0dEUwpwcmVzaWRlbmN5L1NNCnByZXNpZGVudC9NUwpwcmVzaWRlbnRpYWwKcHJlc2lkaXVtL00KcHJlc29ydC9ER1MKcHJlc3MncwpwcmVzcy9BQ0dTRApwcmVzc2VkL1UKcHJlc3Nlci9NUwpwcmVzc2llL1MKcHJlc3NpbmcvU01ZCnByZXNzbWFuL00KcHJlc3NtZW4KcHJlc3N1cmUvRFNNRwpwcmVzc3VyaXphdGlvbi9NCnByZXNzdXJpemUvQ0dEUwpwcmVzc3VyaXplci9TTQpwcmVzdGlkaWdpdGF0aW9uL00KcHJlc3RpZ2UvTQpwcmVzdGlnaW91cwpwcmVzdG8vU00KcHJlc3VtYWJseQpwcmVzdW1lL0dEU0IKcHJlc3VtcHRpb24vU00KcHJlc3VtcHRpdmUKcHJlc3VtcHR1b3VzL1lQCnByZXN1bXB0dW91c25lc3MvTQpwcmVzdXBwb3NlL0RTRwpwcmVzdXBwb3NpdGlvbi9NUwpwcmV0YXgKcHJldGVlbi9NUwpwcmV0ZW5kL0RSWkdTCnByZXRlbmRlci9NCnByZXRlbnNlL1NYTU4KcHJldGVuc2lvbi9NCnByZXRlbnRpb3VzL1VZCnByZXRlbnRpb3VzbmVzcy9NCnByZXRlcml0L1NNCnByZXRlcm0KcHJldGVybmF0dXJhbC9ZCnByZXRlc3QvREdTCnByZXRleHQvTVMKcHJldHJpYWwvUwpwcmV0dGlmeS9HRFMKcHJldHRpbHkKcHJldHRpbmVzcy9NCnByZXR0eS9UR0RSU01QCnByZXR6ZWwvTVMKcHJldmFpbC9ER1MKcHJldmFsZW5jZS9NCnByZXZhbGVudApwcmV2YXJpY2F0ZS9EU0dOWApwcmV2YXJpY2F0aW9uL00KcHJldmFyaWNhdG9yL1NNCnByZXZlbnQvREJTR1YKcHJldmVudGFibGUvVQpwcmV2ZW50YXRpdmUvTVMKcHJldmVudGlvbi9NCnByZXZlbnRpdmUvU00KcHJldmlldy9NRFJTWkcKcHJldmlvdXMvWQpwcmV2aXNpb24vTVMKcHJld2FyCnByZXkvR01EUwpwcmV6emllL1MKcHJpYXBpYwpwcmljZSdzCnByaWNlL0FHRFMKcHJpY2VsZXNzCnByaWNleQpwcmljaWVyCnByaWNpZXN0CnByaWNrL01EUllTWkcKcHJpY2tlci9NCnByaWNrbGUvTUdEUwpwcmlja2xpbmVzcy9NCnByaWNrbHkvUFJUCnByaWRlL01HRFMKcHJpZGVmdWwvWQpwcmllci9NCnByaWVzdC9TTVkKcHJpZXN0ZXNzL01TCnByaWVzdGhvb2QvU00KcHJpZXN0bGluZXNzL00KcHJpZXN0bHkvUlRQCnByaWcvTVMKcHJpZ2dpc2gvUApwcmlnZ2lzaG5lc3MvTQpwcmltL1pHRFJZUApwcmltYWN5L00KcHJpbWFsCnByaW1hcmlseQpwcmltYXJ5L1NNCnByaW1hdGUvTVMKcHJpbWUvTVMKcHJpbWVyL00KcHJpbWV2YWwKcHJpbWluZy9NCnByaW1pdGl2ZS9TUE1ZCnByaW1pdGl2ZW5lc3MvTQpwcmltbWVyCnByaW1tZXN0CnByaW1uZXNzL00KcHJpbW9nZW5pdG9yL1NNCnByaW1vZ2VuaXR1cmUvTQpwcmltb3JkaWFsL1kKcHJpbXAvRFNHCnByaW1yb3NlL1NNCnByaW11bGEvUwpwcmluY2UvU01ZCnByaW5jZWRvbS9TTQpwcmluY2VsaW5lc3MvTQpwcmluY2VseS9QUlQKcHJpbmNlc3MvTVMKcHJpbmNpcGFsL1NNWQpwcmluY2lwYWxpdHkvU00KcHJpbmNpcGxlL0RTTQpwcmluY2lwbGVkL1UKcHJpbnQvQU1EU0cKcHJpbnRhYmxlL1UKcHJpbnRlci9NUwpwcmludGluZy9TTQpwcmludG1ha2luZwpwcmludG91dC9TTQpwcmlvbi9TCnByaW9yL01TCnByaW9yZXNzL01TCnByaW9yaXRpemF0aW9uCnByaW9yaXRpemUvRFNHCnByaW9yaXR5L1NNCnByaW9yeS9TTQpwcmlzbS9NUwpwcmlzbWF0aWMKcHJpc29uL1NaTVIKcHJpc29uZXIvTQpwcmlzc2lseQpwcmlzc2luZXNzL00KcHJpc3N5L1BUUgpwcmlzdGluZQpwcml0aGVlCnByaXZhY3kvTQpwcml2YXRlL1hNWVROUlMKcHJpdmF0ZWVyL1NNCnByaXZhdGlvbi9DU00KcHJpdmF0aXphdGlvbi9TTQpwcml2YXRpemUvRFNHCnByaXZldC9TTQpwcml2aWxlZ2UvRFNNRwpwcml2aWxlZ2VkL1UKcHJpdmlseQpwcml2eS9SU01UCnByaXplL01HRFMKcHJpemVkL0EKcHJpemVmaWdodC9aR1NNUgpwcml6ZWZpZ2h0ZXIvTQpwcml6ZWZpZ2h0aW5nL00KcHJpemV3aW5uZXIvTVMKcHJpemV3aW5uaW5nCnByby9TTQpwcm9iYWJpbGlzdGljCnByb2JhYmlsaXR5L1NNCnByb2JhYmxlL1NNCnByb2JhYmx5CnByb2JhdGUvTU4KcHJvYmF0aW9uL1pNUgpwcm9iYXRpb25hbApwcm9iYXRpb25hcnkKcHJvYmF0aW9uZXIvTQpwcm9iZS9NR0RTQkoKcHJvYml0eS9NCnByb2JsZW0vTVMKcHJvYmxlbWF0aWMKcHJvYmxlbWF0aWNhbC9ZCnByb2Jvc2Nlcwpwcm9ib3NjaXMvTVMKcHJvY2FpbmUvTQpwcm9jZWR1cmFsCnByb2NlZHVyZS9TTQpwcm9jZWVkL0dKRFMKcHJvY2VlZGluZy9NCnByb2NlZWRzL00KcHJvY2VzcydzCnByb2Nlc3MvQUdEUwpwcm9jZXNzZWQvVQpwcm9jZXNzaW9uL0dECnByb2Nlc3Npb25hbC9NUwpwcm9jZXNzb3IvU00KcHJvY2xhbWF0aW9uL01TCnByb2NsaXZpdHkvU00KcHJvY3Jhc3RpbmF0ZS9EU0dOCnByb2NyYXN0aW5hdGlvbi9NCnByb2NyYXN0aW5hdG9yL01TCnByb2NyZWF0ZS9WCnByb2N0b3IvR01EUwpwcm9jdXJlbWVudC9NCnByb2QvTVMKcHJvZGlnYWwvTVlTCnByb2RpZ2FsaXR5L00KcHJvZGlnaW91cy9ZCnByb2RpZ3kvU00KcHJvZHVjZSdzCnByb2R1Y2UvQVpHRFJTCnByb2R1Y2VyL0FNCnByb2R1Y2libGUvQQpwcm9kdWN0aW9uL0FTTQpwcm9kdWN0aXZlL1VZCnByb2R1Y3RpdmVuZXNzL00KcHJvZHVjdGl2aXR5L00KcHJvZi9NUwpwcm9mYW5hdGlvbi9NUwpwcm9mYW5lL1BZR0RTCnByb2ZhbmVuZXNzL00KcHJvZmFuaXR5L1NNCnByb2Zlc3NlZC9ZCnByb2Zlc3Npb24vU00KcHJvZmVzc2lvbmFsL01ZUwpwcm9mZXNzaW9uYWxpc20vTQpwcm9mZXNzaW9uYWxpemF0aW9uCnByb2Zlc3Npb25hbGl6ZS9EU0cKcHJvZmVzc29yL1NNCnByb2Zlc3NvcmlhbC9ZCnByb2Zlc3NvcnNoaXAvU00KcHJvZmZlci9HTURTCnByb2ZpY2llbmN5L00KcHJvZmljaWVudC9NWVMKcHJvZml0L0JHRApwcm9maXRhYmlsaXR5L00KcHJvZml0YWJsZS9VCnByb2ZpdGFibHkvVQpwcm9maXRlZXIvTURHUwpwcm9maXRlZXJpbmcvTQpwcm9maXRlcm9sZS9TTQpwcm9maXRsZXNzCnByb2ZsaWdhY3kvTQpwcm9mbGlnYXRlL1NNWQpwcm9mb3JtYQpwcm9mb3VuZC9SWVRQCnByb2ZvdW5kbmVzcy9NCnByb2Z1bmRpdHkvU00KcHJvZnVzZS9QWQpwcm9mdXNlbmVzcy9NCnByb2dlbml0b3IvU00KcHJvZ2VueS9NCnByb2dlc3Rlcm9uZS9NCnByb2dlc3Rpbi9TCnByb2duYXRob3VzCnByb2dub3Nlcwpwcm9nbm9zaXMvTQpwcm9nbm9zdGljL01TCnByb2dub3N0aWNhdGUvWEdORFMKcHJvZ25vc3RpY2F0aW9uL00KcHJvZ25vc3RpY2F0b3IvTVMKcHJvZ3JhbS9DQVMKcHJvZ3JhbW1hYmxlL01TCnByb2dyYW1tYXRpYwpwcm9ncmFtbWVkL0FDCnByb2dyYW1tZXIvTVMKcHJvZ3JhbW1pbmcvU00KcHJvZ3Jlc3MvTURTR1YKcHJvZ3Jlc3Npb24vTVMKcHJvZ3Jlc3NpdmUvUE1ZUwpwcm9ncmVzc2l2ZW5lc3MvTQpwcm9oaWJpdC9ER1ZTCnByb2hpYml0aW9uL1NNCnByb2hpYml0aW9uaXN0L01TCnByb2hpYml0aXZlL1kKcHJvaGliaXRvcnkKcHJvamVjdC9HTURTCnByb2plY3RpbGUvU00KcHJvamVjdGlvbi9TTQpwcm9qZWN0aW9uaXN0L1NNCnByb2plY3Rvci9NUwpwcm9rYXJ5b3RpYwpwcm9sZS9TCnByb2xldGFyaWFuL01TCnByb2xldGFyaWF0L00KcHJvbGlmZXJhdGUvRFNHTgpwcm9saWZlcmF0aW9uL00KcHJvbGlmaWMKcHJvbGlmaWNhbGx5CnByb2xpeC9ZCnByb2xpeGl0eS9NCnByb2xvZ3VlL1NNCnByb2xvbmdhdGlvbi9TTQpwcm9tL00KcHJvbWVuYWRlL01HRFMKcHJvbWV0aGl1bS9NCnByb21pbmVuY2UvTQpwcm9taW5lbnQvWQpwcm9taXNjdWl0eS9NCnByb21pc2N1b3VzL1kKcHJvbWlzZS9EU01HCnByb21pc2luZy9ZCnByb21pc3NvcnkKcHJvbW8vTQpwcm9tb250b3J5L1NNCnByb21vdGUvRFJaRwpwcm9tb3Rlci9NCnByb21vdGlvbmFsCnByb21wdC9KUFNNRFJZWlRHCnByb21wdGVkL1UKcHJvbXB0ZXIvTQpwcm9tcHRpbmcvTQpwcm9tcHRpdHVkZS9NCnByb21wdG5lc3MvTQpwcm9tdWxnYXRlL0dORFMKcHJvbXVsZ2F0aW9uL00KcHJvbXVsZ2F0b3IvTVMKcHJvbmUvUApwcm9uZW5lc3MvTQpwcm9uZy9NRFMKcHJvbmdob3JuL01TCnByb25vbWluYWwvTQpwcm9ub3VuY2UvRFNMRwpwcm9ub3VuY2VhYmxlL1UKcHJvbm91bmNlbWVudC9TTQpwcm9udG8KcHJvbnVuY2lhdGlvbi9NUwpwcm9vZi9BREdTTQpwcm9vZnJlYWQvU1JaRwpwcm9vZnJlYWRlci9NCnByb3AvTVMKcHJvcGFnYW5kYS9NCnByb3BhZ2FuZGlzdC9NUwpwcm9wYWdhbmRpemUvR0RTCnByb3BhZ2F0ZS9EU0dOCnByb3BhZ2F0aW9uL00KcHJvcGFnYXRvci9TTQpwcm9wZWwvUwpwcm9wZWxsYW50L01TCnByb3BlbGxlZApwcm9wZWxsZXIvU00KcHJvcGVsbGluZwpwcm9wZW5zaXR5L1NNCnByb3Blci9NUllUCnByb3BlcnR5L0RTTQpwcm9waGVjeS9TTQpwcm9waGVzaWVyL00KcHJvcGhlc3kvRFJTTVpHCnByb3BoZXQvU00KcHJvcGhldGVzcy9NUwpwcm9waGV0aWMKcHJvcGhldGljYWwvWQpwcm9waHlsYWN0aWMvU00KcHJvcGh5bGF4ZXMKcHJvcGh5bGF4aXMvTQpwcm9waW5xdWl0eS9NCnByb3BpdGlhdGUvRFNHTgpwcm9waXRpYXRpb24vTQpwcm9waXRpYXRvcnkKcHJvcGl0aW91cy9ZCnByb3BvbmVudC9TTQpwcm9wb3J0aW9uL0VTTQpwcm9wb3J0aW9uYWwvWVMKcHJvcG9ydGlvbmFsaXR5CnByb3BvcnRpb25hdGUvRVkKcHJvcG9zYWwvTVMKcHJvcHBlZApwcm9wcGluZwpwcm9wcmlldGFyeS9TTQpwcm9wcmlldGllcy9NCnByb3ByaWV0b3IvU00KcHJvcHJpZXRvcmlhbC9ZCnByb3ByaWV0b3JzaGlwL00KcHJvcHJpZXRyZXNzL01TCnByb3ByaWV0eS9TTQpwcm9wdWxzaW9uL00KcHJvcHVsc2l2ZQpwcm9yYXRlL0RTRwpwcm9yb2dhdGlvbi9NCnByb3JvZ3VlL0dECnByb3NhaWMKcHJvc2FpY2FsbHkKcHJvc2Nlbml1bS9TTQpwcm9zY2l1dHRvL00KcHJvc2NyaWJlL0RHCnByb3NjcmlwdGlvbi9NUwpwcm9zZS9NCnByb3NlY3V0ZS9EU1hHTgpwcm9zZWN1dGlvbi9NCnByb3NlY3V0b3IvTVMKcHJvc2VseXRlL0RTTUcKcHJvc2VseXRpc20vTQpwcm9zZWx5dGl6ZS9EUlNaRwpwcm9zZWx5dGl6ZXIvTQpwcm9zb2R5L1NNCnByb3NwZWN0L01ER1ZTCnByb3NwZWN0aXZlL1kKcHJvc3BlY3Rvci9TTQpwcm9zcGVjdHVzL01TCnByb3NwZXIvR1NECnByb3NwZXJpdHkvTQpwcm9zcGVyb3VzL1kKcHJvc3RhdGUvTVMKcHJvc3RoZXNlcwpwcm9zdGhlc2lzL00KcHJvc3RoZXRpYwpwcm9zdGl0dXRlL01HTkRTCnByb3N0aXR1dGlvbi9NCnByb3N0cmF0ZS9HTlhEUwpwcm9zdHJhdGlvbi9NCnByb3N5L1JUCnByb3RhY3Rpbml1bS9NCnByb3RhZ29uaXN0L1NNCnByb3RlYW4KcHJvdGVjdC9HVlNECnByb3RlY3RlZC9VCnByb3RlY3Rpb24vU00KcHJvdGVjdGlvbmlzbS9NCnByb3RlY3Rpb25pc3QvTVMKcHJvdGVjdGl2ZS9QWQpwcm90ZWN0aXZlbmVzcy9NCnByb3RlY3Rvci9NUwpwcm90ZWN0b3JhdGUvTVMKcHJvdGVnZS9TTQpwcm90ZWdlZS9TCnByb3RlaW4vU00KcHJvdGVzdGFudC9TCnByb3Rlc3RhdGlvbi9NUwpwcm90b2NvbC9NUwpwcm90b24vU00KcHJvdG9wbGFzbS9NCnByb3RvcGxhc21pYwpwcm90b3R5cGUvTUdTCnByb3RvdHlwaWNhbApwcm90b3pvYQpwcm90b3pvYW4vTVMKcHJvdG96b2ljCnByb3RyYWN0L0dECnByb3RydWRlL0dEUwpwcm90cnVzaWxlCnByb3RydXNpb24vTVMKcHJvdHViZXJhbmNlL01TCnByb3R1YmVyYW50CnByb3VkL1JZVApwcm92L05CCnByb3ZhYmlsaXR5L00KcHJvdmFibHkKcHJvdmUvRUFHRFMKcHJvdmVkL1UKcHJvdmVuL1UKcHJvdmVuYW5jZS9TTQpwcm92ZW5kZXIvTQpwcm92ZW5pZW5jZS9NCnByb3ZlcmJpYWwvWQpwcm92aWRlL0RSU1pHCnByb3ZpZGVkL1UKcHJvdmlkZW5jZS9NCnByb3ZpZGVudC9ZCnByb3ZpZGVudGlhbC9ZCnByb3ZpZGVyL00KcHJvdmluY2UvTVMKcHJvdmluY2lhbC9TTVkKcHJvdmluY2lhbGlzbS9NCnByb3Zpc2lvbmFsL1kKcHJvdmlzby9TTQpwcm92b2NhdGV1ci9TCnByb3ZvY2F0aXZlL1BZCnByb3ZvY2F0aXZlbmVzcy9NCnByb3Zva2UvRFJTWkcKcHJvdm9rZWQvVQpwcm92b2tlci9NCnByb3Zva2luZy9ZCnByb3ZvbG9uZS9NCnByb3Zvc3QvU00KcHJvdy9NUwpwcm93ZXNzL00KcHJvd2wvTURSU1pHCnByb3dsZXIvTQpwcm94aW1hbApwcm94aW1hdGUKcHJveGltaXR5L00KcHJveHkvU00KcHJ1ZGUvTVMKcHJ1ZGVuY2UvTQpwcnVkZW50L1kKcHJ1ZGVudGlhbC9ZCnBydWRlcnkvTQpwcnVkaXNoL1lQCnBydWRpc2huZXNzL00KcHJ1bmUvTVpHRFJTCnBydW5lci9NCnBydXJpZW5jZS9NCnBydXJpZW50L1kKcHJ5L1pUR0RSU00KcHNhbG0vTVMKcHNhbG1pc3QvU00KcHNhbHRlcnkvU00KcHNlcGhvbG9naXN0L1MKcHNlcGhvbG9neQpwc2V1ZC9TCnBzZXVkby9TCnBzZXVkb255bS9TTQpwc2V1ZG9ueW1vdXMKcHNldWRvc2NpZW5jZS9NUwpwc2V1ZHkKcHNoYXcvTVMKcHNpL1NNCnBzaXR0YWNvc2lzL00KcHNvcmlhc2lzL00KcHNzdApwc3ljaC9NRFNHCnBzeWNoZS9NCnBzeWNoZWRlbGlhCnBzeWNoZWRlbGljL1NNCnBzeWNoZWRlbGljYWxseQpwc3ljaGlhdHJpYwpwc3ljaGlhdHJpc3QvU00KcHN5Y2hpYXRyeS9NCnBzeWNoaWMvTVMKcHN5Y2hpY2FsL1kKcHN5Y2hvL1NNCnBzeWNob2FjdGl2ZQpwc3ljaG9hbmFseXNlcwpwc3ljaG9hbmFseXNpcy9NCnBzeWNob2FuYWx5c3QvU00KcHN5Y2hvYW5hbHl0aWMKcHN5Y2hvYW5hbHl0aWNhbC9ZCnBzeWNob2FuYWx5emUvRFNHCnBzeWNob2JhYmJsZS9NCnBzeWNob2RyYW1hL01TCnBzeWNob2dlbmljCnBzeWNob2tpbmVzaXMKcHN5Y2hva2luZXRpYwpwc3ljaG9sb2dpY2FsL1kKcHN5Y2hvbG9naXN0L01TCnBzeWNob2xvZ3kvU00KcHN5Y2hvbWV0cmljCnBzeWNob25ldXJvc2VzCnBzeWNob25ldXJvc2lzL00KcHN5Y2hvcGF0aC9NCnBzeWNob3BhdGhpYwpwc3ljaG9wYXRob2xvZ3kKcHN5Y2hvcGF0aHMKcHN5Y2hvcGF0aHkvTQpwc3ljaG9waGFybWFjb2xvZ3kKcHN5Y2hvcy9TCnBzeWNob3Npcy9NCnBzeWNob3NvbWF0aWMKcHN5Y2hvdGhlcmFwaXN0L01TCnBzeWNob3RoZXJhcHkvU00KcHN5Y2hvdGljL1NNCnBzeWNob3RpY2FsbHkKcHN5Y2hvdHJvcGljL01TCnBzeWNocwpwdC9DCnB0YXJtaWdhbi9NUwpwdGVyb2RhY3R5bC9NUwpwdG9tYWluZS9TTQpwdWIvU00KcHViZXJ0YWwKcHViZXJ0eS9NCnB1YmVzL00KcHViZXNjZW5jZS9NCnB1YmVzY2VudApwdWJpYwpwdWJpcy9NCnB1YmxpYy9BTQpwdWJsaWNhbi9BTVMKcHVibGljYXRpb24vQVNNCnB1YmxpY2lzdC9NUwpwdWJsaWNpdHkvTQpwdWJsaWNpemUvR0RTCnB1YmxpY2x5CnB1Ymxpc2gvQUdEUwpwdWJsaXNoYWJsZQpwdWJsaXNoZWQvVQpwdWJsaXNoZXIvTVMKcHVibGlzaGluZy9NCnB1Y2UvTQpwdWNrL1pNUlMKcHVja2VyL01ERwpwdWNraXNoL1lQCnB1Y2tpc2huZXNzL00KcHVkL1MKcHVkZGluZy9TTQpwdWRkbGUvRFNNRwpwdWRkbGluZy9NCnB1ZGVuZGEKcHVkZW5kdW0vTQpwdWRnaW5lc3MvTQpwdWRneS9QUlQKcHVlYmxvL1NNCnB1ZXJpbGUKcHVlcmlsaXR5L00KcHVlcnBlcmFsCnB1ZmYvWkdNRFJTCnB1ZmZiYWxsL1NNCnB1ZmZlci9NCnB1ZmZpbi9TTQpwdWZmaW5lc3MvTQpwdWZmeS9QUlQKcHVnL1NNCnB1Z2lsaXNtL00KcHVnaWxpc3QvU00KcHVnaWxpc3RpYwpwdWduYWNpb3VzL1lQCnB1Z25hY2lvdXNuZXNzL00KcHVnbmFjaXR5L00KcHVrZS9NR0RTCnB1a2thCnB1bGNocml0dWRlL00KcHVsY2hyaXR1ZGlub3VzCnB1bGUvR0RTCnB1bGwvWkdNRFJTCnB1bGxiYWNrL01TCnB1bGxlci9NCnB1bGxldC9TTQpwdWxsZXkvU00KcHVsbG91dC9NUwpwdWxsb3Zlci9TTQpwdWxtb25hcnkKcHVscC9HTURTCnB1bHBpbmVzcy9NCnB1bHBpdC9TTQpwdWxwd29vZC9NCnB1bHB5L1JQVApwdWxzYXIvU00KcHVsc2F0ZS9YR05EUwpwdWxzYXRpb24vTQpwdWxzZS9BTUdEUwpwdWx2ZXJpemF0aW9uL00KcHVsdmVyaXplL0RTRwpwdW1hL01TCnB1bWljZS9TTQpwdW1tZWwvU0dECnB1bXAvWkdNRFJTCnB1bXBlci9NCnB1bXBlcm5pY2tlbC9NCnB1bXBraW4vTVMKcHVuL1NNCnB1bmNoL01EUlNaRwpwdW5jaGJhZy9TCnB1bmNoZW9uL01TCnB1bmNoZXIvTQpwdW5jaGxpbmUvUwpwdW5jaHkvVFIKcHVuY3RpbGlvL00KcHVuY3RpbGlvdXMvUFkKcHVuY3RpbGlvdXNuZXNzL00KcHVuY3R1YWwvWQpwdW5jdHVhbGl0eS9NCnB1bmN0dWF0ZS9HTkRTCnB1bmN0dWF0aW9uL00KcHVuY3R1cmUvRFNNRwpwdW5kaXQvU00KcHVuZGl0cnkvTQpwdW5nZW5jeS9NCnB1bmdlbnQvWQpwdW5pbmVzcy9NCnB1bmlzaC9CTEdEUwpwdW5pc2hlZC9VCnB1bmlzaGluZy9ZCnB1bmlzaG1lbnQvTVMKcHVuaXRpdmUvWQpwdW5rL1RNUlMKcHVubmVkCnB1bm5ldC9TCnB1bm5pbmcKcHVuc3Rlci9TTQpwdW50L1pHTURSUwpwdW50ZXIvTQpwdW55L1RSUApwdXAvU00KcHVwYS9NCnB1cGFlCnB1cGFsCnB1cGF0ZS9EU0cKcHVwaWwvTVMKcHVwcGVkCnB1cHBldC9NUwpwdXBwZXRlZXIvU00KcHVwcGV0cnkvTQpwdXBwaW5nCnB1cHB5L1NNCnB1cmJsaW5kCnB1cmNoYXNlL0RSU01aR0IKcHVyY2hhc2VyL00KcHVyZGFoL00KcHVyZS9QWVRSCnB1cmVicmVkL1NNCnB1cmVlL01EUwpwdXJlZWluZwpwdXJlbmVzcy9NCnB1cmdhdGl2ZS9TTQpwdXJnYXRvcmlhbApwdXJnYXRvcnkvU00KcHVyZ2UvTVpHRFJTCnB1cmdlci9NCnB1cmlmaWNhdGlvbi9NCnB1cmlmaWVyL00KcHVyaWZ5L05EUlNaRwpwdXJpbmUvTVMKcHVyaXNtL00KcHVyaXN0L01TCnB1cmlzdGljCnB1cml0YW4vU00KcHVyaXRhbmljYWwvWQpwdXJpdGFuaXNtL00KcHVyaXR5L00KcHVybC9HTURTCnB1cmxpZXUvU00KcHVybG9pbi9TR0QKcHVycGxlL01UUlMKcHVycGxpc2gKcHVycG9ydC9TTURHCnB1cnBvcnRlZC9ZCnB1cnBvc2UvRFNNWUcKcHVycG9zZWZ1bC9ZUApwdXJwb3NlZnVsbmVzcy9NCnB1cnBvc2VsZXNzL1BZCnB1cnIvR01EUwpwdXJzZS9NWkdEUlMKcHVyc2VyL00KcHVyc3VhbmNlL00KcHVyc3VhbnQKcHVyc3VlL1pHRFJTCnB1cnN1ZXIvTQpwdXJzdWl0L1NNCnB1cnVsZW5jZS9NCnB1cnVsZW50CnB1cnZleS9EU0cKcHVydmV5YW5jZS9NCnB1cnZleW9yL1NNCnB1cnZpZXcvTQpwdXMvTQpwdXNoL1pHTURSUwpwdXNoYmlrZS9TCnB1c2hjYXJ0L1NNCnB1c2hjaGFpci9TCnB1c2hlci9NCnB1c2hpbHkKcHVzaGluZXNzL00KcHVzaG92ZXIvTVMKcHVzaHBpbi9TCnB1c2h5L1RSUApwdXNpbGxhbmltaXR5L00KcHVzaWxsYW5pbW91cy9ZCnB1c3MvTVMKcHVzc3kvVFJTTQpwdXNzeWNhdC9NUwpwdXNzeWZvb3QvRFNHCnB1c3R1bGFyCnB1c3R1bGUvU00KcHV0L0lTTQpwdXRhdGl2ZQpwdXRvdXQvTVMKcHV0cmVmYWN0aW9uL00KcHV0cmVmYWN0aXZlCnB1dHJlZnkvR0RTCnB1dHJlc2NlbmNlL00KcHV0cmVzY2VudApwdXRyaWQKcHV0c2NoL01TCnB1dHQvWkdNRFJTCnB1dHRlZC9JCnB1dHRlZS9NUwpwdXR0ZXIvTURSWkcKcHV0dGVyZXIvTQpwdXR0aW5nL0kKcHV0dHkvR0RTTQpwdXR6L1MKcHV6emxlL01aR0RSU0wKcHV6emxlbWVudC9NCnB1enpsZXIvTQpwdnQKcHduL1NHRApweWVsb25lcGhyaXRpcwpweWdteS9TTQpweWxvbi9TTQpweWxvcmkKcHlsb3JpYwpweWxvcnVzL00KcHlvcnJoZWEvTQpweXJhbWlkL0dTTUQKcHlyYW1pZGFsCnB5cmUvTVMKcHlyaW1pZGluZS9NUwpweXJpdGUvU00KcHlyaXRlcy9NCnB5cm9tYW5pYS9NCnB5cm9tYW5pYWMvU00KcHlyb3RlY2huaWMvUwpweXJvdGVjaG5pY2FsCnB5cm90ZWNobmljcy9NCnB5cnV2YXRlCnB5dGhvbi9TTQpweXgvTVMKcHphenoKcQpxcgpxdC9TCnF0eQpxdWEKcXVhY2svR01EUwpxdWFja2VyeS9NCnF1YWQvTVMKcXVhZHJhbmdsZS9TTQpxdWFkcmFuZ3VsYXIKcXVhZHJhbnQvTVMKcXVhZHJhcGhvbmljCnF1YWRyYXRpYy9NUwpxdWFkcmF0dXJlCnF1YWRyZW5uaWFsCnF1YWRyZW5uaXVtL01TCnF1YWRyaWNlcHMvTVMKcXVhZHJpbGF0ZXJhbC9TTQpxdWFkcmlsbGUvWE1OUwpxdWFkcmlsbGlvbi9NCnF1YWRyaXBsZWdpYS9NCnF1YWRyaXBsZWdpYy9TTQpxdWFkcml2aXVtL00KcXVhZHJ1cGVkL01TCnF1YWRydXBlZGFsCnF1YWRydXBsZS9NR0RTCnF1YWRydXBsZXQvTVMKcXVhZHJ1cGxpY2F0ZS9NR05EUwpxdWFkcnVwbGljYXRpb24vTQpxdWFmZi9HTURTCnF1YWdtaXJlL1NNCnF1YWhvZy9NUwpxdWFpbC9HTURTCnF1YWludC9QUllUCnF1YWludG5lc3MvTQpxdWFrZS9NR0RTCnF1YWt5CnF1YWxpZmljYXRpb24vRU0KcXVhbGlmaWVkL1UKcXVhbGlmaWVyL1NNCnF1YWxpZnkvRUdYTkRTCnF1YWxpdGF0aXZlL1kKcXVhbGl0eS9TTQpxdWFsbS9NUwpxdWFsbWlzaApxdWFuZGFyeS9TTQpxdWFuZ28vUwpxdWFudGEKcXVhbnRpZmlhYmxlCnF1YW50aWZpY2F0aW9uL00KcXVhbnRpZmllci9NCnF1YW50aWZ5L05EUlNaRwpxdWFudGl0YXRpdmUvWQpxdWFudGl0eS9TTQpxdWFudHVtL00KcXVhcmFudGluZS9NR0RTCnF1YXJrL01TCnF1YXJyZWwvU1pHTURSCnF1YXJyZWxlci9NCnF1YXJyZWxzb21lL1AKcXVhcnJlbHNvbWVuZXNzL00KcXVhcnJ5L0RTTUcKcXVhcnQvTVMKcXVhcnRlci9TR01EWQpxdWFydGVyYmFjay9HTURTCnF1YXJ0ZXJkZWNrL01TCnF1YXJ0ZXJmaW5hbC9TTQpxdWFydGVybHkvU00KcXVhcnRlcm1hc3Rlci9NUwpxdWFydGVyc3RhZmYvTQpxdWFydGVyc3RhdmVzCnF1YXJ0ZXQvU00KcXVhcnRvL01TCnF1YXJ0ei9NCnF1YXNhci9NUwpxdWFzaC9HRFMKcXVhc2kKcXVhdHJhaW4vTVMKcXVhdmVyL01EU0cKcXVhdmVyeQpxdWF5L01TCnF1YXlzaWRlL1MKcXVlYXNpbHkKcXVlYXNpbmVzcy9NCnF1ZWFzeS9UUFIKcXVlZW4vR01EWVMKcXVlZW5seS9SVApxdWVlci9QVEdNRFJZUwpxdWVlcm5lc3MvTQpxdWVsbC9HRFMKcXVlbmNoL1pHRFJTQgpxdWVuY2hhYmxlL1UKcXVlbmNoZXIvTQpxdWVuY2hsZXNzCnF1ZXJ1bG91cy9ZUApxdWVydWxvdXNuZXNzL00KcXVlcnkvRFNNRwpxdWVzCnF1ZXNhZGlsbGEvTVMKcXVlc3QvSUZBTVMKcXVlc3RlZApxdWVzdGluZwpxdWVzdGlvbi9TTURSWkdCSgpxdWVzdGlvbmFibGUvVQpxdWVzdGlvbmFibHkvVQpxdWVzdGlvbmVkL1UKcXVlc3Rpb25lci9NCnF1ZXN0aW9uaW5nL01ZCnF1ZXN0aW9ubmFpcmUvU00KcXVldWUvTURTRwpxdWliYmxlL0RSU01aRwpxdWliYmxlci9NCnF1aWNoZS9TTQpxdWljay9NTlJZWFRQCnF1aWNrZW4vREcKcXVpY2tmaXJlCnF1aWNraWUvU00KcXVpY2tsaW1lL00KcXVpY2tuZXNzL00KcXVpY2tzYW5kL01TCnF1aWNrc2lsdmVyL00KcXVpY2tzdGVwL01TCnF1aWQvTVMKcXVpZXNjZW5jZS9NCnF1aWVzY2VudC9ZCnF1aWV0L1NNRE5SWVhUR1AKcXVpZXRlbi9ERwpxdWlldGlzbQpxdWlldG5lc3MvTQpxdWlldHVkZS9JRU0KcXVpZXR1cy9NUwpxdWlmZi9TCnF1aWxsL1NNCnF1aWx0L1NNRFJaRwpxdWlsdGVyL00KcXVpbHRpbmcvTQpxdWluL1MKcXVpbmNlL1NNCnF1aW5lL1MKcXVpbmluZS9NCnF1aW5vYQpxdWluc3kvTQpxdWludC9TTQpxdWludGVzc2VuY2UvU00KcXVpbnRlc3NlbnRpYWwvWQpxdWludGV0L1NNCnF1aW50dXBsZS9NR0RTCnF1aW50dXBsZXQvTVMKcXVpcC9NUwpxdWlwcGVkCnF1aXBwaW5nCnF1aXBzdGVyL1NNCnF1aXJlJ3MKcXVpcmUvSUFTCnF1aXJrL1NNREcKcXVpcmtpbmVzcy9NCnF1aXJreS9SVFAKcXVpcnQvU00KcXVpc2xpbmcvU00KcXVpdC9TCnF1aXRjbGFpbS9NUwpxdWl0ZQpxdWl0dGFuY2UvTQpxdWl0dGVyL1NNCnF1aXR0aW5nCnF1aXZlci9TTURHCnF1aXZlcnkKcXVpeG90aWMKcXVpeG90aWNhbGx5CnF1aXovTQpxdWl6emVkCnF1aXp6ZXIvU00KcXVpenplcwpxdWl6emljYWwvWQpxdWl6emluZwpxdW8vSApxdW9pbi9TTQpxdW9pdC9TTURHCnF1b25kYW0KcXVvcmF0ZS9JCnF1b3J1bS9TTQpxdW90L0IKcXVvdGEvU00KcXVvdGFiaWxpdHkvTQpxdW90YXRpb24vU00KcXVvdGUncwpxdW90ZS9VRFNHCnF1b3RpZGlhbgpxdW90aWVudC9TTQpxd2VydHkKci9TCnJhYmJldC9HTURTCnJhYmJpL1NNCnJhYmJpbmF0ZS9NCnJhYmJpbmljCnJhYmJpbmljYWwKcmFiYml0L0dNRFMKcmFiYmxlL01TCnJhYmlkL1BZCnJhYmlkbmVzcy9NCnJhYmllcy9NCnJhY2Nvb24vTQpyYWNlL01aR0RSUwpyYWNlY291cnNlL1NNCnJhY2Vnb2VyL1MKcmFjZWhvcnNlL01TCnJhY2VtZS9NUwpyYWNlci9NCnJhY2V0cmFjay9NUwpyYWNld2F5L01TCnJhY2lhbC9ZCnJhY2lhbGlzbS9NCnJhY2lhbGlzdC9NUwpyYWNpbHkKcmFjaW5lc3MvTQpyYWNpbmcvTQpyYWNpc20vTQpyYWNpc3QvU00KcmFjay9HTURTCnJhY2tldC9TTURHCnJhY2tldGVlci9TTURHCnJhY2tldGVlcmluZy9NCnJhY29udGV1ci9TTQpyYWNxdWV0YmFsbC9TTQpyYWN5L1BSVApyYWQvU00KcmFkYXIvU00KcmFkYXJzY29wZS9TTQpyYWRkbGVkCnJhZGlhbC9TTVkKcmFkaWFuY2UvTQpyYWRpYW50L1kKcmFkaWF0ZS9EU0dOWApyYWRpYXRpb24vTQpyYWRpYXRvci9TTQpyYWRpY2FsL1NNWQpyYWRpY2FsaXNtL00KcmFkaWNhbGl6YXRpb24vTQpyYWRpY2FsaXplL0RTRwpyYWRpY2NoaW8vTQpyYWRpaQpyYWRpby9NREdTCnJhZGlvYWN0aXZlL1kKcmFkaW9hY3Rpdml0eS9NCnJhZGlvY2FyYm9uL00KcmFkaW9ncmFtL01TCnJhZGlvZ3JhcGhlci9TTQpyYWRpb2dyYXBoeS9NCnJhZGlvaXNvdG9wZS9NUwpyYWRpb2xvZ2lzdC9TTQpyYWRpb2xvZ3kvTQpyYWRpb21hbi9NCnJhZGlvbWVuCnJhZGlvbWV0ZXIvTVMKcmFkaW9tZXRyaWMKcmFkaW9tZXRyeS9NCnJhZGlvcGhvbmUvU00KcmFkaW9zY29weS9NCnJhZGlvc29uZGUvU00KcmFkaW9zdXJnZXJ5CnJhZGlvdGVsZWdyYXBoL00KcmFkaW90ZWxlZ3JhcGhzCnJhZGlvdGVsZWdyYXBoeS9NCnJhZGlvdGVsZXBob25lL01TCnJhZGlvdGhlcmFwaXN0L01TCnJhZGlvdGhlcmFweS9NCnJhZGlzaC9NUwpyYWRpdW0vTQpyYWRpdXMvTQpyYWRvbi9NCnJhZmZpYS9NCnJhZmZpc2gvWVAKcmFmZmlzaG5lc3MvTQpyYWZmbGUvRFNNRwpyYWZ0L1pHTURSUwpyYWZ0ZXIvTQpyYWZ0aW5nL00KcmFnL1NHTUQKcmFnYS9NUwpyYWdhbXVmZmluL01TCnJhZ2JhZy9NCnJhZ2UvTVMKcmFnZ2EKcmFnZ2VkL1JZVFAKcmFnZ2VkbmVzcy9NCnJhZ2dlZHkvUlQKcmFnZ2luZwpyYWdpbmcvWQpyYWdsYW4vU00KcmFnb3V0L1NNCnJhZ3RhZy9TCnJhZ3RpbWUvTQpyYWd3ZWVkL00KcmFnd29ydApyYWgKcmFpZC9aR01EUlMKcmFpZGVyL00KcmFpbCdzCnJhaWwvQ0dEUwpyYWlsY2FyZC9TCnJhaWxpbmcvU00KcmFpbGxlcnkvU00KcmFpbHJvYWQvU1pHTURSCnJhaWxyb2FkZXIvTQpyYWlscm9hZGluZy9NCnJhaWx3YXkvU00KcmFpbHdheW1hbgpyYWlsd2F5bWVuCnJhaW1lbnQvTQpyYWluL0dNRFMKcmFpbmJvdy9TTQpyYWluY29hdC9TTQpyYWluZHJvcC9TTQpyYWluZmFsbC9TTQpyYWlubWFrZXIvU00KcmFpbm1ha2luZy9NCnJhaW5wcm9vZgpyYWluc3Rvcm0vTVMKcmFpbndhdGVyL00KcmFpbnkvUlQKcmFpc2UvTVpHRFJTCnJhaXNlci9NCnJhaXNpbi9TTQpyYWphaC9NCnJhamFocwpyYWtlL01HRFMKcmFraXNoL1lQCnJha2lzaG5lc3MvTQpyYWxseS9EU01HCnJhbS9TTQpyYW1ibGUvRFJTTVpHSgpyYW1ibGVyL00KcmFtYnVuY3Rpb3VzL1BZCnJhbWJ1bmN0aW91c25lc3MvTQpyYW1la2luL1NNCnJhbWllL00KcmFtaWZpY2F0aW9uL00KcmFtaWZ5L0RTWE5HCnJhbWpldC9TTQpyYW1tZWQKcmFtbWluZwpyYW1wL0dNUwpyYW1wYWdlL0RTTUcKcmFtcGFuY3kvTQpyYW1wYW50L1kKcmFtcGFydC9TTQpyYW1yb2QvU00KcmFtcm9kZGVkCnJhbXJvZGRpbmcKcmFtc2hhY2tsZQpyYW4vQQpyYW5jaC9NRFJTWkcKcmFuY2hlci9NCnJhbmNoaW5nL00KcmFuY2lkL1AKcmFuY2lkaXR5L00KcmFuY2lkbmVzcy9NCnJhbmNvci9NCnJhbmNvcm91cy9ZCnJhbmQvTQpyYW5kaW5lc3MvTQpyYW5kb20vUFNZCnJhbmRvbWl6YXRpb24vTQpyYW5kb21pemUvRFNHCnJhbmRvbW5lc3MvTVMKcmFuZHkvUlRQCnJhbmVlL01TCnJhbmcvWlIKcmFuZ2UncwpyYW5nZS9DR0RTCnJhbmdlZmluZGVyL1MKcmFuZ2VyL00KcmFuZ2luZXNzL00KcmFuZ3kvUlRQCnJhbmsvVEdKUE1EUllTCnJhbmtpbmcvTQpyYW5rbGUvRFNHCnJhbmtuZXNzL00KcmFuc2Fjay9TR0QKcmFuc29tL1NaR01EUgpyYW5zb21lci9NCnJhbnNvbXdhcmUKcmFudC9aR01ESlJTCnJhbnRlci9NCnJhcC9TWkdNRFIKcmFwYWNpb3VzL1BZCnJhcGFjaW91c25lc3MvTQpyYXBhY2l0eS9NCnJhcGUvTVMKcmFwZXIvTQpyYXBlc2VlZC9NCnJhcGlkL1BNUllUUwpyYXBpZGl0eS9NCnJhcGlkbmVzcy9NCnJhcGllci9TTQpyYXBpbmUvTQpyYXBpc3QvU00KcmFwcGVkCnJhcHBlbC9TTQpyYXBwZWxsZWQKcmFwcGVsbGluZwpyYXBwZXIvU00KcmFwcGluZwpyYXBwb3J0L01TCnJhcHBvcnRldXIvUwpyYXBwcm9jaGVtZW50L1NNCnJhcHNjYWxsaW9uL01TCnJhcHQvWVAKcmFwdG5lc3MvTQpyYXB0b3IvUwpyYXB0dXJlL01TCnJhcHR1cm91cy9ZCnJhcmUvWVRHUERSUwpyYXJlYml0L01TCnJhcmVmYWN0aW9uL00KcmFyZWZ5L0dEUwpyYXJlbmVzcy9NCnJhcml0eS9TTQpyYXNjYWwvU01ZCnJhc2gvWlRNUlNZUApyYXNoZXIvTQpyYXNobmVzcy9NCnJhc3AvR01EUwpyYXNwYmVycnkvU00KcmFzcHkvUlQKcmFzdGVyCnJhdC9TTQpyYXRhdG91aWxsZS9NCnJhdGJhZy9TCnJhdGNoZXQvR01EUwpyYXRlL0pYTVpHTkRSUwpyYXRlZC9VCnJhdGVwYXllci9TCnJhdGVyL00KcmF0aGVyCnJhdGhza2VsbGVyL1NNCnJhdGlmaWNhdGlvbi9NCnJhdGlmaWVyL00KcmF0aWZ5L05EUlNaRwpyYXRpbmcvTQpyYXRpby9NUwpyYXRpb2NpbmF0ZS9HTkRTCnJhdGlvY2luYXRpb24vTQpyYXRpb24vTURHCnJhdGlvbmFsL1NNWQpyYXRpb25hbGUvTVMKcmF0aW9uYWxpc20vTQpyYXRpb25hbGlzdC9TTQpyYXRpb25hbGlzdGljCnJhdGlvbmFsaXR5L00KcmF0aW9uYWxpemF0aW9uL01TCnJhdGlvbmFsaXplL0RTRwpyYXRsaWtlCnJhdGxpbmUvU00KcmF0dGFuL1NNCnJhdHRlZApyYXR0ZXIvU00KcmF0dGluZwpyYXR0bGUvRFJTTVpHSgpyYXR0bGVicmFpbi9TTUQKcmF0dGxlci9NCnJhdHRsZXNuYWtlL1NNCnJhdHRsZXRyYXAvU00KcmF0dGx5CnJhdHRyYXAvU00KcmF0dHkvUlQKcmF1Y291cy9ZUApyYXVjb3VzbmVzcy9NCnJhdW5jaGlseQpyYXVuY2hpbmVzcy9NCnJhdW5jaHkvVFJQCnJhdmFnZS9EUlNNWkcKcmF2YWdlci9NCnJhdmFnZXMvTQpyYXZlL0pNWkdEUlMKcmF2ZWwncwpyYXZlbC9VRFNHCnJhdmVsaW5nL1MKcmF2ZW4vTURTRwpyYXZlbm91cy9ZCnJhdmluZS9TTQpyYXZpbmcvTQpyYXZpb2xpL1NNCnJhdmlzaC9EUlNaR0wKcmF2aXNoZXIvTQpyYXZpc2hpbmcvWQpyYXZpc2htZW50L00KcmF3L1BUTVIKcmF3Ym9uZWQKcmF3aGlkZS9NCnJhd25lc3MvTQpyYXkvU00KcmF5b24vTQpyYXplL0dEUwpyYXpvci9NUwpyYXpvcmJhY2svTVMKcmF6ei9HTURTCnJhenptYXRhenovTQpyY3B0CnJkCnJlL0RTTVlUR1ZKCnJlYWNoL01EU0dCCnJlYWNoYWJsZS9VCnJlYWNxdWlyZS9EU0cKcmVhY3QvVgpyZWFjdGFudC9TTQpyZWFjdGlvbmFyeS9TTQpyZWFjdGl2aXR5CnJlYWQvWkdNUkJKUwpyZWFkYWJpbGl0eS9TTQpyZWFkZXIvTQpyZWFkZXJzaGlwL1NNCnJlYWRpbHkKcmVhZGluZXNzL00KcmVhZGluZy9NCnJlYWRtaXR0ZWQKcmVhZG91dC9TTQpyZWFkeS9EUlNUR1AKcmVhZmZvcmVzdGF0aW9uCnJlYWwvVE1SWVBTCnJlYWxpc20vTQpyZWFsaXN0L1NNCnJlYWxpc3RpYy9VCnJlYWxpc3RpY2FsbHkvVQpyZWFsaXRpZXMKcmVhbGl0eS9VTQpyZWFsaXphdGlvbi9NUwpyZWFsaXplL0RTQkcKcmVhbGl6ZWQvVQpyZWFsbS9NUwpyZWFsbmVzcy9NCnJlYWxwb2xpdGlrL00KcmVhbHR5L00KcmVhbS9aR01EUlMKcmVhbWVyL00KcmVhcC9aR0RSUwpyZWFwZXIvTQpyZWFyL0dNRFMKcmVhcmd1YXJkL01TCnJlYXJtb3N0CnJlYXJ3YXJkL1MKcmVhc29uL1NNRFJaR0IKcmVhc29uYWJsZS9VUApyZWFzb25hYmxlbmVzcy9VTQpyZWFzb25hYmx5L1UKcmVhc29uZXIvTQpyZWFzb25pbmcvTQpyZWFzc3VyaW5nL1kKcmViYXRlL00KcmViZWwvTVMKcmViZWxsaW9uL01TCnJlYmVsbGlvdXMvWVAKcmViZWxsaW91c25lc3MvTQpyZWJpZC9TCnJlYmlkZGluZwpyZWJpcnRoL00KcmVib2lsL1NERwpyZWJ1aWxkL1NHCnJlYnVrZS9EU01HCnJlYnVraW5nL1kKcmVidXR0YWwvTVMKcmVjJ2QKcmVjL00KcmVjYWxjaXRyYW5jZS9NCnJlY2FsY2l0cmFudApyZWNhbnQvU0RHCnJlY2FudGF0aW9uL1NNCnJlY2FwL01TCnJlY2FwaXRhbGl6YXRpb24KcmVjY2UvUwpyZWNkCnJlY2VpcHQvU01ERwpyZWNlaXZhYmxlcy9NCnJlY2VpdmUvRFJTWkdCCnJlY2VpdmVyL00KcmVjZWl2ZXJzaGlwL00KcmVjZW50L1JZVFAKcmVjZW50bmVzcy9NCnJlY2VwdGFjbGUvU00KcmVjZXB0aW9uL01TCnJlY2VwdGlvbmlzdC9TTQpyZWNlcHRpdmUvUFkKcmVjZXB0aXZlbmVzcy9NCnJlY2VwdGl2aXR5L00KcmVjZXB0b3IvU00KcmVjZXNzL01EU0dWCnJlY2Vzc2lvbmFsL1NNCnJlY2Vzc2lvbmFyeQpyZWNlc3NpdmUvU00KcmVjaGVyY2hlCnJlY2lkaXZpc20vTQpyZWNpZGl2aXN0L1NNCnJlY2lwZS9TTQpyZWNpcGllbnQvU00KcmVjaXByb2NhbC9TTVkKcmVjaXByb2NhdGUvR05EUwpyZWNpcHJvY2F0aW9uL00KcmVjaXByb2NpdHkvTQpyZWNpdGFsL1NNCnJlY2l0YWxpc3QvTVMKcmVjaXRhdGl2ZS9NUwpyZWNpdGVyL1NNCnJlY2tsZXNzL1lQCnJlY2tsZXNzbmVzcy9NCnJlY2tvbi9TSkRHCnJlY2tvbmluZy9NCnJlY2xhbWF0aW9uL00KcmVjbGluZS9EUlNaRwpyZWNsaW5lci9NCnJlY2x1c2UvU01WCnJlY29nbml6YWJsZS9VCnJlY29nbml6YWJseQpyZWNvZ25pemUvRFJTR0IKcmVjb2duaXplZC9VCnJlY29tYmluYXRpb24KcmVjb21wZW5zZS9EU01HCnJlY29tcGlsYXRpb24KcmVjb21waWxlL0dECnJlY29uL1MKcmVjb25jaWxlL0dEU0IKcmVjb25jaWxpYXRpb24vUwpyZWNvbmRpdGUKcmVjb25maWd1cmF0aW9uCnJlY29uZmlndXJlL0QKcmVjb25uYWlzc2FuY2UvTVMKcmVjb25ub2l0ZXIvREdTCnJlY29uc3RydWN0L1YKcmVjb25zdHJ1Y3RlZC9VCnJlY29yZGVkL1UKcmVjb3JkZXIvTVMKcmVjb3JkaW5nL01TCnJlY291cC9ERwpyZWNvdXJzZS9NCnJlY292ZXJhYmxlL1UKcmVjb3ZlcnkvU00KcmVjcmVhbnQvTVMKcmVjcmVhdGlvbmFsCnJlY3JpbWluYXRlL0RTR05YCnJlY3JpbWluYXRpb24vTQpyZWNyaW1pbmF0b3J5CnJlY3J1ZGVzY2UvR0RTCnJlY3J1ZGVzY2VuY2UvTQpyZWNydWRlc2NlbnQKcmVjcnVpdC9MU01EUlpHCnJlY3J1aXRlci9NCnJlY3J1aXRtZW50L00KcmVjdGFsL1kKcmVjdGFuZ2xlL01TCnJlY3Rhbmd1bGFyCnJlY3RpZmlhYmxlCnJlY3RpZmljYXRpb24vTQpyZWN0aWZpZXIvTQpyZWN0aWZ5L1hORFJTWkcKcmVjdGlsaW5lYXIKcmVjdGl0dWRlL00KcmVjdG8vTVMKcmVjdG9yL1NNCnJlY3RvcnkvU00KcmVjdHVtL1NNCnJlY3VtYmVudApyZWN1cGVyYXRlL0dOVkRTCnJlY3VwZXJhdGlvbi9NCnJlY3VyL1MKcmVjdXJyZWQKcmVjdXJyZW5jZS9TTQpyZWN1cnJpbmcKcmVjdXJzaW9uL1MKcmVjdXNlCnJlY3ljbGFibGUvU00KcmVjeWNsaW5nL00KcmVkL1BTTQpyZWRhY3QvU0RHCnJlZGFjdGlvbi9NCnJlZGFjdG9yL1NNCnJlZGJpcmQvU00KcmVkYnJlYXN0L01TCnJlZGJyaWNrCnJlZGNhcC9TTQpyZWRjb2F0L1NNCnJlZGN1cnJhbnQvUwpyZWRkZW4vU0RHCnJlZGRlcgpyZWRkZXN0CnJlZGRpc2gKcmVkZWVtL1JaQgpyZWRlZW1lci9NCnJlZGVtcHRpb24vTQpyZWRlbXB0aXZlCnJlZGhlYWQvU01ECnJlZGlyZWN0aW9uCnJlZGlzdHJpY3QvR0QKcmVkaXZpZGUvR0RTCnJlZGxpbmluZy9NCnJlZG5lY2svU00KcmVkbmVzcy9NCnJlZG8vRwpyZWRvbGVuY2UvTQpyZWRvbGVudApyZWRvdWJ0L1NCTQpyZWRvdWJ0YWJseQpyZWRvdW5kL1NERwpyZWRyYXcvU0cKcmVkc2tpbi9TTQpyZWR1Y2UvRFJTWkcKcmVkdWNlci9NCnJlZHVjaWJsZQpyZWR1Y3Rhc2UKcmVkdWN0aW9uL1NNCnJlZHVjdGlvbmlzdApyZWR1Y3RpdmUKcmVkdW5kYW5jeS9TTQpyZWR1bmRhbnQvWQpyZWR3b29kL1NNCnJlZHllL0RTCnJlZWRpbmVzcy9NCnJlZWR5L1JUUApyZWVmL1pHTURSUwpyZWVmZXIvTQpyZWVrL0dNRFMKcmVlbCdzCnJlZWwvVUdEUwpyZWV2ZS9HCnJlZXhwb3J0L1NERwpyZWYvU1pNCnJlZmFzaGlvbi9ER1MKcmVmZWN0aW9uL00KcmVmZWN0b3J5L1NNCnJlZmVyL0IKcmVmZXJlZS9EU00KcmVmZXJlZWluZwpyZWZlcmVuY2UvTUdEUwpyZWZlcmVuZHVtL01TCnJlZmVyZW50L1NNCnJlZmVyZW50aWFsCnJlZmVycmFsL1NNCnJlZmVycmVkCnJlZmVycmVyL1NNCnJlZmVycmluZwpyZWZmZWQKcmVmZmluZwpyZWZpbGwvQk0KcmVmaW5lZC9VCnJlZmluZW1lbnQvU00KcmVmaW5lci9TTQpyZWZpbmVyeS9TCnJlZml0dGluZwpyZWZsYXRlL1hEU0dOCnJlZmxhdGlvbmFyeQpyZWZsZWN0L0dWU0QKcmVmbGVjdGlvbi9NUwpyZWZsZWN0aXZlL1kKcmVmbGVjdG9yL01TCnJlZmxleGl2ZS9TTVkKcmVmbGV4b2xvZ3kKcmVmb3JnZS9EU0cKcmVmb3JtL01aCnJlZm9ybWF0L1YKcmVmb3JtYXRvcnkvU00KcmVmb3JtYXR0aW5nCnJlZm9ybWVkL1UKcmVmb3JtaXN0L1MKcmVmb3J0aWZ5L0dEUwpyZWZyYWN0L1NHVkQKcmVmcmFjdGlvbi9NCnJlZnJhY3RvcnkvU00KcmVmcmFpbi9TR01ECnJlZnJlc2gvWkdMRFJTCnJlZnJlc2hlci9NCnJlZnJlc2hpbmcvWQpyZWZyZXNobWVudC9TTQpyZWZyZXNobWVudHMvTQpyZWZyaWdlcmFudC9TTQpyZWZyaWdlcmF0ZS9EU0dOCnJlZnJpZ2VyYXRpb24vTQpyZWZyaWdlcmF0b3IvTVMKcmVmdWdlL1NNCnJlZnVnZWUvU00KcmVmdWxnZW5jZS9NCnJlZnVsZ2VudApyZWZ1bmQvQgpyZWZ1cmJpc2htZW50L01TCnJlZnVzYWwvTVMKcmVmdXRhdGlvbi9NUwpyZWZ1dGUvQkRSU1pHCnJlZnV0ZXIvTQpyZWcKcmVnYWwvRFlHCnJlZ2FsZW1lbnQvTQpyZWdhbGlhL00KcmVnYXJkL0VTTURHCnJlZ2FyZGxlc3MKcmVnYXJkcy9NCnJlZ2F0aGVyL0RHUwpyZWdhdHRhL1NNCnJlZ2VuY3kvU00KcmVnZW5lcmFjeS9NCnJlZ2VuZXJhdGUvVgpyZWdleC9NCnJlZ2V4cC9TCnJlZ2dhZS9NCnJlZ2ljaWRlL01TCnJlZ2ltZS9TTQpyZWdpbWVuL1NNCnJlZ2ltZW50L01ER1MKcmVnaW1lbnRhbApyZWdpbWVudGF0aW9uL00KcmVnaW9uL1NNCnJlZ2lvbmFsL1kKcmVnaW9uYWxpc20vTVMKcmVnaXN0ZXIvR01EUwpyZWdpc3RlcmVkL1UKcmVnaXN0cmFudC9NUwpyZWdpc3RyYXIvTVMKcmVnaXN0cmF0aW9uL1NNCnJlZ2lzdHJ5L1NNCnJlZ25hbnQKcmVncmVzcy9NRFNHVgpyZWdyZXNzaW9uL01TCnJlZ3JldC9TTQpyZWdyZXRmdWwvWQpyZWdyZXR0YWJsZQpyZWdyZXR0YWJseQpyZWdyZXR0ZWQKcmVncmV0dGluZwpyZWdyaW5kL0dTCnJlZ3JvdW5kCnJlZ3JvdXAvREdTCnJlZ3VsYXIvTVlTCnJlZ3VsYXJpdHkvU00KcmVndWxhcml6YXRpb24vTQpyZWd1bGFyaXplL0RTRwpyZWd1bGF0ZS9DRFNHTlYKcmVndWxhdGVkL1UKcmVndWxhdGlvbi9DTQpyZWd1bGF0aW9ucwpyZWd1bGF0b3IvTVMKcmVndWxhdG9yeQpyZWd1cmdpdGF0ZS9EU0dOCnJlZ3VyZ2l0YXRpb24vTQpyZWhhYi9NUwpyZWhhYmJlZApyZWhhYmJpbmcKcmVoYWJpbGl0YXRlL0dOVkRTCnJlaGFiaWxpdGF0aW9uL00KcmVoYW5nL1NERwpyZWhlYXJzL0dECnJlaGVhcnNhbC9NUwpyZWhlYXJzZWQvVQpyZWhpCnJlaHVuZwpyZWlnbi9NRFNHCnJlaW1idXJzZS9CRFNHTApyZWltYnVyc2VtZW50L01TCnJlaW4vR0QKcmVpbmRlZXIvTQpyZWluZm9yY2UvTEdEUwpyZWluZm9yY2VtZW50L1NNCnJlaW5pdGlhbGl6ZQpyZWluc3RhbGwvREcKcmVpbnN0YXRlbWVudC9NCnJlaW5zdXJhbmNlCnJlaXRlcmF0ZS9WCnJlamVjdC9HU01ECnJlamVjdGlvbi9TTQpyZWpvaWNlL0pHRFMKcmVqb2ljaW5nL00KcmVqb2luZGVyL1NNCnJlanV2ZW5hdGUvRFNHTgpyZWp1dmVuYXRpb24vTQpyZWwKcmVsYXRlL0RSU1haR05WCnJlbGF0ZWRuZXNzL00KcmVsYXRlci9NCnJlbGF0aW9uL00KcmVsYXRpb25hbApyZWxhdGlvbnNoaXAvTVMKcmVsYXRpdmUvTVlTCnJlbGF0aXZpc20vTQpyZWxhdGl2aXN0L1MKcmVsYXRpdmlzdGljCnJlbGF0aXZpdHkvTQpyZWxheC9EUlNaRwpyZWxheGFudC9NUwpyZWxheGF0aW9uL1NNCnJlbGF4ZXIvTQpyZWxheS9ECnJlbGVhc2UvQgpyZWxlYXNlZC9VCnJlbGVnYXRlL0dORFMKcmVsZW50L1NHRApyZWxlbnRsZXNzL1BZCnJlbGVudGxlc3NuZXNzL00KcmVsZXZhbmNlL00KcmVsZXZhbmN5L00KcmVsZXZhbnQvWQpyZWxpYWJpbGl0eS9VTQpyZWxpYWJsZS9VCnJlbGlhYmx5L1UKcmVsaWFuY2UvTQpyZWxpYW50CnJlbGljL01TCnJlbGllZi9TTQpyZWxpZXZlL1pHRFJTCnJlbGlldmVyL00KcmVsaWdpb24vU00KcmVsaWdpb3NpdHkKcmVsaWdpb3VzL01ZUApyZWxpZ2lvdXNuZXNzL00KcmVsaW5lL0RTRwpyZWxpbnF1aXNoL0xEU0cKcmVsaW5xdWlzaG1lbnQvTQpyZWxpcXVhcnkvU00KcmVsaXNoL0dNRFMKcmVsaXN0L1NHRApyZWxvY2F0ZS9CCnJlbHVjdGFuY2UvTQpyZWx1Y3RhbnQvWQpyZWx5L0dEUwpyZW0vTQpyZW1haW4vU0dECnJlbWFpbmRlci9HTURTCnJlbWFuZC9TR0QKcmVtYXBwaW5nCnJlbWFyay9CCnJlbWFya2FibGVuZXNzL00KcmVtYXJrYWJseQpyZW1hcmtlZC9VCnJlbWVkaWFibGUKcmVtZWR5L0dEU00KcmVtZW1iZXIvREcKcmVtZW1iZXJlZC9VCnJlbWVtYnJhbmNlL01TCnJlbWluZGVyL00KcmVtaW5pc2NlL0dEUwpyZW1pbmlzY2VuY2UvTVMKcmVtaW5pc2NlbnQvWQpyZW1pc3MvUFkKcmVtaXNzbmVzcy9NCnJlbWl0L1MKcmVtaXR0YW5jZS9TTQpyZW1pdHRlZApyZW1pdHRpbmcvVQpyZW1peC9EU0cKcmVtbmFudC9NUwpyZW1vZGVsL0dEUwpyZW1vbGQvU0dECnJlbW9uc3RyYW50L1NNCnJlbW9uc3RyYXRlL0RTRwpyZW1vcnNlL00KcmVtb3JzZWZ1bC9ZCnJlbW9yc2VsZXNzL1BZCnJlbW9yc2VsZXNzbmVzcy9NCnJlbW90ZS9SU01ZVFAKcmVtb3RlbmVzcy9NCnJlbW92YWwvU00KcmVtdW5lcmF0ZS9HTlZYRFMKcmVtdW5lcmF0aW9uL00KcmVuYWlzc2FuY2UvTVMKcmVuYWwKcmVuYXNjZW5jZS9TCnJlbmQvR1MKcmVuZGVyL1NHTURKCnJlbmRlcmluZy9NCnJlbmRlenZvdXMvR01EUwpyZW5kaXRpb24vTVMKcmVuZWdhZGUvRFNNRwpyZW5lZ2UvRFJTWkcKcmVuZWdlci9NCnJlbmV3L0RTQkcKcmVuZXdhbC9NUwpyZW5uZXQvTQpyZW5uaW4vTQpyZW5vdW5jZS9MRFNHCnJlbm91bmNlbWVudC9NCnJlbm92YXRlL0RTWEdOCnJlbm92YXRpb24vTQpyZW5vdmF0b3IvTVMKcmVub3duL01ECnJlbnQvWkdNRFJTCnJlbnRhbC9TTQpyZW50ZXIvTQpyZW51bmNpYXRpb24vU00KcmVvcGVuL1NERwpyZW9yZy9NRFNHCnJlcC9TTQpyZXBhaW50L0dEUwpyZXBhaXIvQlpSCnJlcGFpcmVyL00KcmVwYWlybWFuL00KcmVwYWlybWVuCnJlcGFyYWJsZQpyZXBhcmF0aW9uL01TCnJlcGFyYXRpb25zL00KcmVwYXJ0ZWUvTQpyZXBhdHJpYXRlL1hEU01HTgpyZXBhdHJpYXRpb24vTQpyZXBlYXQvU01EUlpHQgpyZXBlYXRhYmxlL1UKcmVwZWF0YWJseQpyZXBlYXRlZC9ZCnJlcGVhdGVyL00KcmVwZWF0aW5nL00KcmVwZWwvUwpyZXBlbGxlZApyZXBlbGxlbnQvU00KcmVwZWxsaW5nCnJlcGVudC9TREcKcmVwZW50YW5jZS9NCnJlcGVudGFudC9ZCnJlcGVyY3Vzc2lvbi9TCnJlcGVydG9pcmUvTVMKcmVwZXJ0b3J5L1NNCnJlcGV0aXRpb24vTVMKcmVwZXRpdGlvdXMvWVAKcmVwZXRpdGlvdXNuZXNzL00KcmVwZXRpdGl2ZS9ZUApyZXBldGl0aXZlbmVzcy9NCnJlcGhvdG9ncmFwaC9ERwpyZXBsYWNlYWJsZQpyZXBsYW50L0dTRApyZXBsZW5pc2gvTEdEUwpyZXBsZW5pc2htZW50L00KcmVwbGV0ZS9QRFNHTgpyZXBsZXRlbmVzcy9NCnJlcGxldGlvbi9NCnJlcGxpY2EvU00KcmVwbGljYXRlL0RTR05YCnJlcGxpY2F0aW9uL00KcmVwbGljYXRvci9TCnJlcG9ydGFnZS9NCnJlcG9ydGVkL1kKcmVwb3J0b3JpYWwKcmVwb3NlZnVsCnJlcG9zaXRvcnkvU00KcmVwcmVoZW5kL0RHUwpyZXByZWhlbnNpYmlsaXR5L00KcmVwcmVoZW5zaWJsZQpyZXByZWhlbnNpYmx5CnJlcHJlaGVuc2lvbi9NCnJlcHJlc2VudC9HRFMKcmVwcmVzZW50YXRpb25hbApyZXByZXNlbnRhdGl2ZS9NUwpyZXByZXNlbnRlZC9VCnJlcHJlc3Npb24vTVMKcmVwcmVzc2l2ZS9QWQpyZXByaWV2ZS9EU01HCnJlcHJpbWFuZC9HU01ECnJlcHJpc2FsL1NNCnJlcHJpc2UvU01HCnJlcHJvYWNoL0dNRFNCCnJlcHJvYWNoZnVsL1kKcmVwcm9iYXRlL01TCnJlcHJvZHVjdGl2ZQpyZXByb2dyYW1taW5nCnJlcHJvdmluZy9ZCnJlcHRpbGUvU00KcmVwdGlsaWFuL01TCnJlcHVibGljL1MKcmVwdWJsaWNhbmlzbS9NCnJlcHVkaWF0ZS9YR05EUwpyZXB1ZGlhdGlvbi9NCnJlcHVkaWF0b3IvTVMKcmVwdWduYW5jZS9NCnJlcHVnbmFudApyZXB1bHNpb24vTQpyZXB1bHNpdmUvWVAKcmVwdWxzaXZlbmVzcy9NCnJlcHVyY2hhc2UvR0RTCnJlcHV0YWJpbGl0eS9NCnJlcHV0YWJseS9FCnJlcHV0YXRpb24vTVMKcmVwdXRlL0RTTUdCCnJlcHV0ZWQvWQpyZXF1ZXN0L0dEUgpyZXF1aWVtL1NNCnJlcXVpcmUvTERHCnJlcXVpcmVtZW50L01TCnJlcXVpc2l0ZS9YTU5TCnJlcXVpc2l0aW9uL0dNRApyZXF1aXRhbC9NCnJlcXVpdGUvRFJTWkcKcmVxdWl0ZWQvVQpyZXF1aXRlci9NCnJlcmVhZC9TRwpyZXJlY29yZC9HRFMKcmVydW5uaW5nCnJlc2F0CnJlc2NpbmQvU0RHCnJlc2Npc3Npb24vTQpyZXNjdWUvRFJTTVpHCnJlc2N1ZXIvTQpyZXNlYWwvQgpyZXNlbGwvU0cKcmVzZW1ibGUvRFNHCnJlc2VuZApyZXNlbnQvTFNERwpyZXNlbnRmdWwvWVAKcmVzZW50ZnVsbmVzcy9NCnJlc2VudG1lbnQvTVMKcmVzZXJwaW5lL00KcmVzZXJ2YXRpb24vTVMKcmVzZXJ2ZWQvVVkKcmVzZXJ2ZWRuZXNzL00KcmVzZXJ2aXN0L1NNCnJlc2Vydm9pci9TTQpyZXNldHRpbmcKcmVzaGlwcGluZwpyZXNpZGVuY2UvU00KcmVzaWRlbmN5L1NNCnJlc2lkZW50L01TCnJlc2lkZW50aWFsCnJlc2lkdWEKcmVzaWR1YWwvTVMKcmVzaWR1ZS9TTQpyZXNpZHV1bS9NCnJlc2lnbmF0aW9uL1NNCnJlc2lnbmVkL1kKcmVzaWxpZW5jZS9NCnJlc2lsaWVuY3kvTQpyZXNpbGllbnQvWQpyZXNpbm91cwpyZXNpc3QvU01EUlpHCnJlc2lzdGFuY2UvU00KcmVzaXN0YW50L1UKcmVzaXN0aWJsZQpyZXNpc3RsZXNzCnJlc2lzdG9yL01TCnJlc2l0L1MKcmVzaXR0aW5nCnJlc29sZApyZXNvbGUvRFNHCnJlc29sdXRlL1BZCnJlc29sdXRlbmVzcy9NCnJlc29sdmUvUkJNCnJlc29sdmVkL1UKcmVzb25hbmNlL1NNCnJlc29uYW50L1kKcmVzb25hdGUvR0RTCnJlc29uYXRvci9TTQpyZXNvcnB0aW9uL00KcmVzb3VuZC9TR0QKcmVzb3VuZGluZy9ZCnJlc291cmNlZnVsL1lQCnJlc291cmNlZnVsbmVzcy9NCnJlc3AKcmVzcGVjdC9FU0dWTUQKcmVzcGVjdGFiaWxpdHkvTQpyZXNwZWN0YWJsZQpyZXNwZWN0YWJseQpyZXNwZWN0ZnVsL0VZCnJlc3BlY3RmdWxuZXNzL00KcmVzcGVjdGl2ZS9ZCnJlc3BlbGwvU0dECnJlc3BpcmF0aW9uL00KcmVzcGlyYXRvci9TTQpyZXNwaXJhdG9yeQpyZXNwaXJlL0RHCnJlc3BsZW5kZW5jZS9NCnJlc3BsZW5kZW50L1kKcmVzcG9uZC9TR0QKcmVzcG9uZGVudC9TTQpyZXNwb25zZS9NUwpyZXNwb25zaWJpbGl0eS9TTQpyZXNwb25zaWJsZQpyZXNwb25zaWJseQpyZXNwb25zaXZlL1VZUApyZXNwb25zaXZlbmVzcy9VTQpyZXN0L0dWTURTCnJlc3RhdGUvR0RTCnJlc3RhdXJhbnQvU00KcmVzdGF1cmF0ZXVyL01TCnJlc3RmdWwvWVAKcmVzdGZ1bGxlcgpyZXN0ZnVsbGVzdApyZXN0ZnVsbmVzcy9NCnJlc3RpdHV0aW9uL00KcmVzdGl2ZS9ZUApyZXN0aXZlbmVzcy9NCnJlc3RsZXNzL1BZCnJlc3RsZXNzbmVzcy9NCnJlc3RvcmF0aW9uL1NNCnJlc3RvcmF0aXZlL1NNCnJlc3RvcmVyL1NNCnJlc3RyYWluZWQvVQpyZXN0cmFpbnQvTVMKcmVzdHJpY3QvU0RHVgpyZXN0cmljdGVkL1UKcmVzdHJpY3Rpb24vTVMKcmVzdHJpY3RpdmUvWVAKcmVzdHJpY3RpdmVuZXNzL00KcmVzdHJpbmcvU0cKcmVzdHJvb20vU00KcmVzdHJ1Y3R1cmluZy9TTQpyZXN1bHQvR1NNRApyZXN1bHRhbnQvU00KcmVzdW1lL0RTTUcKcmVzdW1wdGlvbi9NUwpyZXN1cHBseS9EU0cKcmVzdXJnZW5jZS9NUwpyZXN1cmdlbnQKcmVzdXJyZWN0L0dTRApyZXN1cnJlY3Rpb24vTVMKcmVzdXNjaXRhdGUvR05EUwpyZXN1c2NpdGF0aW9uL00KcmVzdXNjaXRhdG9yL1NNCnJldGFpbGVyL01TCnJldGFpbi9TRFJaRwpyZXRhaW5lci9NCnJldGFrZS9HCnJldGFsaWF0ZS9EU0dOVlgKcmV0YWxpYXRpb24vTQpyZXRhbGlhdG9yeQpyZXRhcmQvU01EUlpHCnJldGFyZGFudC9TTQpyZXRhcmRhdGlvbi9NCnJldGFyZGVyL00KcmV0Y2gvRFNHCnJldGVhY2gvR1MKcmV0ZW50aW9uL00KcmV0ZW50aXZlL1lQCnJldGVudGl2ZW5lc3MvTQpyZXRoaW5rL1NHTQpyZXRob3VnaHQKcmV0aWNlbmNlL00KcmV0aWNlbnQvWQpyZXRpY3VsYXRlZApyZXRpY3VsYXRpb24vTVMKcmV0aW5hL1NNCnJldGluYWwKcmV0aW51ZS9TTQpyZXRpcmVlL1NNCnJldGlyZW1lbnQvTVMKcmV0b3J0L0dNRApyZXRyYWNlL0dEUwpyZXRyYWN0L0RCRwpyZXRyYWN0aWxlCnJldHJhY3Rpb24vUwpyZXRyYWluL0RHUwpyZXRyZWFkL0QKcmV0cmVuY2htZW50L01TCnJldHJpYnV0aW9uL01TCnJldHJpYnV0aXZlCnJldHJpZXZhbC9TTQpyZXRyaWV2ZS9EUlNNWkdCCnJldHJpZXZlci9NCnJldHJvL01TCnJldHJvYWN0aXZlL1kKcmV0cm9maXJlL0dEUwpyZXRyb2ZpdC9TTQpyZXRyb2ZpdHRlZApyZXRyb2ZpdHRpbmcKcmV0cm9ncmFkZS9EU0cKcmV0cm9ncmVzcy9HVkRTCnJldHJvZ3Jlc3Npb24vTQpyZXRyb3JvY2tldC9NUwpyZXRyb3NwZWN0L01EU0dWCnJldHJvc3BlY3Rpb24vTQpyZXRyb3NwZWN0aXZlL01ZUwpyZXRyb3ZpcnVzL01TCnJldHNpbmEvTQpyZXR1cm5hYmxlL1NNCnJldHVybmVlL1NNCnJldi9aVk0KcmV2YW1waW5nL00KcmV2ZWFsL0dKU0QKcmV2ZWFsZWQvVQpyZXZlYWxpbmcvWQpyZXZlaWxsZS9NCnJldmVsL0pNRFJTWkcKcmV2ZWxhdGlvbi9TTQpyZXZlbGVyL00KcmV2ZWxyeS9TTQpyZXZlbmdlL01HRFMKcmV2ZW51ZXIvU00KcmV2ZXJiCnJldmVyYmVyYXRlL0RTR05YCnJldmVyYmVyYXRpb24vTQpyZXZlcmUvRFNHCnJldmVyZW5jZS9EU01HCnJldmVyZW5kL1NNCnJldmVyZW50L1kKcmV2ZXJlbnRpYWwvWQpyZXZlcmllL01TCnJldmVycy9NCnJldmVyc2FsL1NNCnJldmVyc2UvWQpyZXZlcnNpYmlsaXR5CnJldmVyc2libGUKcmV2ZXJzaWJseQpyZXZlcnQvR1NECnJldmVydGlibGUKcmV2ZXRtZW50L1NNCnJldmlsZS9EUlNMWkcKcmV2aWxlbWVudC9NCnJldmlsZXIvTQpyZXZpc2VyL01TCnJldmlzaW9uL1NNCnJldmlzaW9uaXNtL00KcmV2aXNpb25pc3QvU00KcmV2aXZhbC9NUwpyZXZpdmFsaXNtL00KcmV2aXZhbGlzdC9TTQpyZXZpdmUvRFNHCnJldml2aWZpY2F0aW9uL00KcmV2b2NhYmxlCnJldm9rZS9EU0cKcmV2b2x0L0dECnJldm9sdGluZy9ZCnJldm9sdXRpb24vU00KcmV2b2x1dGlvbmFyeS9TTQpyZXZvbHV0aW9uaXN0L1NNCnJldm9sdXRpb25pemUvRFNHCnJldm9sdmUvQlpHRFJTCnJldm9sdmVyL00KcmV2dWUvTVMKcmV2dWxzaW9uL00KcmV2dmVkCnJldnZpbmcKcmV3YXJkZWQvVQpyZXdhcmRpbmcvVQpyZXdhcm0vR1NECnJld2FzaC9HRFMKcmV3ZWF2ZS9HUwpyZXdlZGRpbmcKcmV3aW5kL01CCnJld291bmQKcmV3cml0ZS9NR1MKcmhhcHNvZGljCnJoYXBzb2RpY2FsCnJoYXBzb2RpemUvR0RTCnJoYXBzb2R5L1NNCnJoZWEvTVMKcmhlbml1bS9NCnJoZW9zdGF0L1NNCnJoZXN1cy9NUwpyaGV0b3JpYy9NCnJoZXRvcmljYWwvWQpyaGV0b3JpY2lhbi9TTQpyaGV1bS9NCnJoZXVtYXRpYy9NUwpyaGV1bWF0aWNhbGx5CnJoZXVtYXRpc20vTQpyaGV1bWF0b2lkCnJoZXVteQpyaGluZXN0b25lL1NNCnJoaW5pdGlzL00Kcmhpbm8vTVMKcmhpbm9jZXJvcy9NUwpyaGlub3BsYXN0eQpyaGlub3ZpcnVzL01TCnJoaXpvbWUvTVMKcmhvL1NNCnJob2RpdW0vTQpyaG9kb2RlbmRyb24vU00KcmhvbWJvaWQvU00KcmhvbWJvaWRhbApyaG9tYnVzL01TCnJodWJhcmIvTVMKcmh5bWUvTVpHRFJTCnJoeW1lci9NCnJoeW1lc3Rlci9NUwpyaHl0aG0vU00Kcmh5dGhtaWMKcmh5dGhtaWNhbC9ZCnJpYWwvTVMKcmliL1NNCnJpYmFsZApyaWJhbGRyeS9NCnJpYmJlZApyaWJiZXIvU00KcmliYmluZwpyaWJib24vU00Kcmlib2ZsYXZpbi9NCnJpY2UvTVpHRFJTCnJpY2VyL00KcmljaC9UTVJTWVAKcmljaG5lc3MvTQpyaWNrL0dNRFMKcmlja2V0cy9NCnJpY2tldHkvUlQKcmlja3JhY2svTQpyaWNrc2hhdy9NUwpyaWNvY2hldC9HTURTCnJpY290dGEvTQpyaWQvUwpyaWRkYW5jZS9NCnJpZGRlbgpyaWRkaW5nCnJpZGRsZS9EU01HCnJpZGUvTVpHUlMKcmlkZXIvTQpyaWRlcmxlc3MKcmlkZXJzaGlwL00KcmlkZ2UvTUdEUwpyaWRnZXBvbGUvU00KcmlkZ3kKcmlkaWN1bGUvTUdEUwpyaWRpY3Vsb3VzL1lQCnJpZGljdWxvdXNuZXNzL00KcmlkaW5nL00KcmlmZS9UUgpyaWZmL0dNRFMKcmlmZmxlL0RTTUcKcmlmZnJhZmYvTQpyaWZsZS9NWkdEUlMKcmlmbGVtYW4vTQpyaWZsZW1lbgpyaWZsZXIvTQpyaWZsaW5nL00KcmlmdC9HTURTCnJpZy9TTQpyaWdhdG9uaS9NCnJpZ2dlZApyaWdnZXIvU00KcmlnZ2luZy9NCnJpZ2h0L01EUllTUFRHCnJpZ2h0ZW91cy9VUApyaWdodGVvdXNseQpyaWdodGVvdXNuZXNzL1VNCnJpZ2h0ZnVsL1BZCnJpZ2h0ZnVsbmVzcy9NCnJpZ2h0aXNtL00KcmlnaHRpc3QvU00KcmlnaHRtb3N0CnJpZ2h0bmVzcy9NCnJpZ2h0bwpyaWdodHNpemUvRFNHCnJpZ2h0d2FyZC9TCnJpZ2lkL1lQCnJpZ2lkaXR5L00KcmlnaWRuZXNzL00KcmlnbWFyb2xlL01TCnJpZ29yL01TCnJpZ29yb3VzL1lQCnJpZ29yb3VzbmVzcy9NCnJpbGUvR0RTCnJpbGwvTVMKcmltL1NHTUQKcmltZS9NUwpyaW1sZXNzCnJpbW1lZApyaW1taW5nCnJpbmQvTVMKcmluZy9aR01EUkoKcmluZ2VyL00KcmluZ2dpdC9NUwpyaW5nbGVhZGVyL01TCnJpbmdsZXQvTVMKcmluZ2xpa2UKcmluZ21hc3Rlci9NUwpyaW5nc2lkZS9NCnJpbmd0b25lL1NNCnJpbmd3b3JtL00Kcmluay9NUwpyaW5zZS9NR0RTCnJpb3QvWkdNRFJTCnJpb3Rlci9NCnJpb3RpbmcvTQpyaW90b3VzL1BZCnJpcC9TWFRNTlIKcmlwYXJpYW4KcmlwY29yZC9NUwpyaXBlL1lQCnJpcGVuL0RHCnJpcGVuZWQvVQpyaXBlbmVzcy9NCnJpcG9mZi9TTQpyaXBvc3RlL01HRFMKcmlwcGVkCnJpcHBlci9TTQpyaXBwaW5nCnJpcHBsZS9EU01HCnJpcHBseQpyaXBzYXcvU00KcmlwdGlkZS9NUwpyaXNlL0pNWkdSUwpyaXNlbgpyaXNlci9NCnJpc2liaWxpdHkvTQpyaXNpYmxlCnJpc2luZy9NCnJpc2svR01EUwpyaXNraWx5CnJpc2tpbmVzcy9NCnJpc2t5L1JQVApyaXNvdHRvL01TCnJpc3F1ZQpyaXNzb2xlL1MKcml0ZS9NUwpyaXR1YWwvU01ZCnJpdHVhbGlzbS9NCnJpdHVhbGlzdGljCnJpdHVhbGlzdGljYWxseQpyaXR1YWxpemVkCnJpdHp5L1JUCnJpdi9aTlIKcml2YWwvTURTRwpyaXZhbGVkL1UKcml2YWxyeS9TTQpyaXZlL0NHRFMKcml2ZXIvTQpyaXZlcmJhbmsvU00Kcml2ZXJiZWQvTVMKcml2ZXJib2F0L1NNCnJpdmVyZnJvbnQKcml2ZXJzaWRlL01TCnJpdmV0L01EUlNaRwpyaXZldGVyL00Kcml2aWVyYS9TCnJpdnVsZXQvTVMKcml5YWwvTVMKcm0Kcm9hY2gvR01EUwpyb2FkL0lNUwpyb2FkYmVkL1NNCnJvYWRibG9jay9NRFNHCnJvYWRob3VzZS9TTQpyb2FkaWUvTVMKcm9hZGtpbGwvTQpyb2FkcnVubmVyL1NNCnJvYWRzaG93L1NNCnJvYWRzaWRlL1NNCnJvYWRzdGVyL1NNCnJvYWR3YXkvU00Kcm9hZHdvcmsvU00Kcm9hZHdvcnRoeQpyb2FtL1pHRFJTCnJvYW1lci9NCnJvYW1pbmcvTQpyb2FuL01TCnJvYXIvWkdNRFJTCnJvYXJlci9NCnJvYXJpbmcvTQpyb2FzdC9aR01EUlNKCnJvYXN0ZXIvTQpyb2FzdGluZy9NCnJvYi9TCnJvYmJlZApyb2JiZXIvTVMKcm9iYmVyeS9TTQpyb2JiaW5nCnJvYmUncwpyb2JlL0VHRFMKcm9iaW4vTVMKcm9ib2NhbGwvU0dNRApyb2JvdC9NUwpyb2JvdGljL1MKcm9ib3RpY3MvTQpyb2JvdGl6ZS9HRFMKcm9idXN0L1JZUFQKcm9idXN0bmVzcy9NCnJvY2svWkdNRFJTCnJvY2thYmlsbHkvTQpyb2NrYm91bmQKcm9ja2VyL00Kcm9ja2VyeS9TCnJvY2tldC9NRFNHCnJvY2tldHJ5L00Kcm9ja2ZhbGwvU00Kcm9ja2luZXNzL00Kcm9ja3kvVFJQCnJvY29jby9NCnJvZC9TTQpyb2RlCnJvZGVudC9NUwpyb2Rlby9NUwpyb2UvU00Kcm9lYnVjay9TTQpyb2VudGdlbi9NUwpyb2dlci9HRFMKcm9ndWUncwpyb2d1ZS9LUwpyb2d1ZXJ5L00Kcm9ndWlzaC9ZUApyb2d1aXNobmVzcy9NCnJvaWwvR0RTCnJvaXN0ZXIvWkdEUlMKcm9pc3RlcmVyL00Kcm9sZS9NUwpyb2xsL01EUlpHSlMKcm9sbGJhY2svU00Kcm9sbGVyL00Kcm9sbGVyYmxhZGluZwpyb2xsZXJza2F0aW5nL00Kcm9sbGljay9TREcKcm9sbGlja2luZy9NCnJvbGxtb3AvUwpyb2xsb3Zlci9TTQpyb21haW5lL01TCnJvbWFuL00Kcm9tYW5jZS9NWkdEUlMKcm9tYW5jZXIvTQpyb21hbnRpYy9NUwpyb21hbnRpY2FsbHkKcm9tYW50aWNpc20vTQpyb21hbnRpY2lzdC9TTQpyb21hbnRpY2l6ZS9EU0cKcm9tZW8vTVMKcm9tcC9NRFJaR1MKcm9tcGVyL00Kcm9uZG8vU00Kcm9vZC9NUwpyb29mL01EUlpHUwpyb29mZXIvTQpyb29maW5nL00Kcm9vZmxlc3MKcm9vZnRvcC9TTQpyb29rL01ER1MKcm9va2VyeS9TTQpyb29raWUvU00Kcm9vbS9NRFJaR1MKcm9vbWVyL00Kcm9vbWV0dGUvU00Kcm9vbWZ1bC9TTQpyb29taW5lc3MvTQpyb29tbWF0ZS9TTQpyb29teS9SVFAKcm9vc3QvU01EUlpHCnJvb3N0ZXIvTQpyb290L01EUlpHUwpyb290ZXIvTQpyb290a2l0L1NNCnJvb3RsZXNzL1AKcm9vdGxldC9TTQpyb3BlL01aR0RSUwpyb3Blci9NCnJvcHkvUlQKcm9zYXJ5L1NNCnJvc2UvTVMKcm9zZWF0ZQpyb3NlYnVkL1NNCnJvc2VidXNoL01TCnJvc2VtYXJ5L00Kcm9zZXR0ZS9TTQpyb3Nld2F0ZXIvTQpyb3Nld29vZC9NUwpyb3NpbHkKcm9zaW4vU01ERwpyb3NpbmVzcy9NCnJvc3Rlci9TTQpyb3N0cnVtL01TCnJvc3kvUlRQCnJvdC9TTQpyb3RhL1MKcm90YXJ5L1NNCnJvdGF0ZS9EU0dOWApyb3RhdGlvbi9NCnJvdGF0aW9uYWwKcm90YXRvcnkKcm90ZS9NCnJvdGd1dC9NCnJvdGlzc2VyaWUvU00Kcm90b2dyYXZ1cmUvTVMKcm90b3IvU00Kcm90b3RpbGxlci9NUwpyb3R0ZWQKcm90dGVuL1RQUlkKcm90dGVubmVzcy9NCnJvdHRlci9TCnJvdHRpbmcKcm90dHdlaWxlci9TCnJvdHVuZC9QCnJvdHVuZGEvTVMKcm90dW5kaXR5L00Kcm90dW5kbmVzcy9NCnJvdWUvTVMKcm91Z2UvRFNNRwpyb3VnaC9NRE5SWVhUR1AKcm91Z2hhZ2UvTQpyb3VnaGNhc3QKcm91Z2hlbi9HRApyb3VnaGhvdXNlL01HRFMKcm91Z2huZWNrL0dNRFMKcm91Z2huZXNzL00Kcm91Z2hzCnJvdWdoc2hvZApyb3VsZXR0ZS9NCnJvdW5kL1BTTURSWVpURwpyb3VuZGFib3V0L1NNCnJvdW5kZWwvUwpyb3VuZGVsYXkvTVMKcm91bmRob3VzZS9TTQpyb3VuZGlzaApyb3VuZG5lc3MvTQpyb3VuZHVwL01TCnJvdW5kd29ybS9TTQpyb3VzZS9EU0cKcm91c3QvU0RHCnJvdXN0YWJvdXQvU00Kcm91dC9NUlpTCnJvdXRlJ3MKcm91dGUvQURTRwpyb3V0ZWluZwpyb3V0ZXIvTQpyb3V0aW5lL01ZUwpyb3V0aW5pemUvR0RTCnJvdXgKcm92ZS9aR0RSUwpyb3Zlci9NCnJvdy9TWkdNRFIKcm93YW4vUwpyb3dib2F0L01TCnJvd2RpbHkKcm93ZGluZXNzL00Kcm93ZHkvUFJTTVQKcm93ZHlpc20vTQpyb3dlbC9TTURHCnJvd2VyL00Kcm93aW5nL00Kcm93bG9jay9TCnJveWFsL1NNWQpyb3lhbGlzdC9TTQpyb3lhbHRpZXMvTQpyb3lhbHR5L1NNCnJwbQpycHMKcnQKcnRlCnJ1Yi9TTQpydWJhdG8vU00KcnViYmVkCnJ1YmJlci9TTQpydWJiZXJpemUvR0RTCnJ1YmJlcm5lY2svTURSU1pHCnJ1YmJlcm5lY2tlci9NCnJ1YmJlcnkKcnViYmluZy9TCnJ1YmJpc2gvTURTRwpydWJiaXNoeQpydWJibGUvTQpydWJkb3duL1NNCnJ1YmUvTVMKcnViZWxsYS9NCnJ1YmljdW5kCnJ1YmlkaXVtL00KcnVibGUvU00KcnVicmljL1NNCnJ1YnkvUlNNVApydWNoZWQKcnVjay9ER1MKcnVja3NhY2svTVMKcnVja3VzL01TCnJ1Y3Rpb25zCnJ1ZGRlci9TTQpydWRkZXJsZXNzCnJ1ZGRpbmVzcy9NCnJ1ZGR5L1JUUApydWRlL1lUUlAKcnVkZW5lc3MvTQpydWRpbWVudC9TTQpydWRpbWVudGFyeQpydWUvRFNNRwpydWVmdWwvUFkKcnVlZnVsbmVzcy9NCnJ1ZmYvTURZR1MKcnVmZmlhbi9NWVMKcnVmZmxlL0RTTUcKcnVmZmxlZC9VCnJ1Zy9TTQpydWdieS9NCnJ1Z2dlZC9QVFJZCnJ1Z2dlZG5lc3MvTQpydWdnZXIKcnVncmF0L1NNCnJ1aW4vTURHUwpydWluYXRpb24vTQpydWlub3VzL1kKcnVsZS9NWkdKRFJTCnJ1bGVyL00KcnVsaW5nL00KcnVtL1NNCnJ1bWJhL1NNREcKcnVtYmxlL0RTSk1HCnJ1bWJsaW5nL00KcnVtYnVzdGlvdXMKcnVtaW5hbnQvTVMKcnVtaW5hdGUvWEdOVkRTCnJ1bWluYXRpb24vTQpydW1pbmF0aXZlL1kKcnVtbWFnZS9EU01HCnJ1bW1lcgpydW1tZXN0CnJ1bW15L00KcnVtb3IvU01ERwpydW1vcm1vbmdlci9TTQpydW1wL01ZUwpydW1wbGUvRFNNRwpydW1wdXMvTVMKcnVuL0FTTQpydW5hYm91dC9NUwpydW5hcm91bmQvU00KcnVuYXdheS9NUwpydW5kb3duL1NNCnJ1bmUvTVMKcnVuZy9NUwpydW5pYwpydW5sZXQvU00KcnVubmVsL1NNCnJ1bm5lci9TTQpydW5uaW5nL00KcnVubnkvUlQKcnVub2ZmL1NNCnJ1bnQvTVMKcnVudHkvUlQKcnVud2F5L1NNCnJ1cGVlL1NNCnJ1cGlhaC9NCnJ1cGlhaHMKcnVwdHVyZS9NR0RTCnJ1cmFsCnJ1c2UvTVMKcnVzaC9NRFJTWkcKcnVzaGVyL00KcnVzaHkKcnVzay9NUwpydXNzZXQvU00KcnVzdC9NREdTCnJ1c3RpYy9TTQpydXN0aWNhbGx5CnJ1c3RpY2F0ZS9HRFMKcnVzdGljYXRpb24vTQpydXN0aWNpdHkvTQpydXN0aW5lc3MvTQpydXN0bGUvRFJTSk1aRwpydXN0bGVyL00KcnVzdHByb29mL1NERwpydXN0eS9SUE5UCnJ1dC9TTQpydXRhYmFnYS9TTQpydXRoZW5pdW0vTQpydXRoZXJmb3JkaXVtL00KcnV0aGxlc3MvWVAKcnV0aGxlc3NuZXNzL00KcnV0dGVkCnJ1dHRpbmcKcnV0dHkvUlQKcnllL00Kcy9OWVhCCnNhYmJhdGgvTQpzYWJiYXRocwpzYWJiYXRpY2FsL1NNCnNhYmVyL01TCnNhYmxlL01TCnNhYm90L01TCnNhYm90YWdlL0RTTUcKc2Fib3RldXIvU00Kc2FicmEvTVMKc2FjL1NNCnNhY2NoYXJpbi9NCnNhY2NoYXJpbmUKc2FjZXJkb3RhbApzYWNoZW0vU00Kc2FjaGV0L1NNCnNhY2svWkdNRFJKUwpzYWNrY2xvdGgvTQpzYWNrZXIvTQpzYWNrZnVsL01TCnNhY2tpbmcvTQpzYWNyYQpzYWNyYW1lbnQvTVMKc2FjcmFtZW50YWwKc2FjcmVkL1lQCnNhY3JlZG5lc3MvTQpzYWNyaWZpY2UvRFNNRwpzYWNyaWZpY2lhbC9ZCnNhY3JpbGVnZS9NUwpzYWNyaWxlZ2lvdXMvWQpzYWNyaXN0YW4vTVMKc2FjcmlzdHkvU00Kc2Fjcm9pbGlhYy9NUwpzYWNyb3NhbmN0L1AKc2Fjcm9zYW5jdG5lc3MvTQpzYWNydW0vTQpzYWQvUFkKc2FkZGVuL1NERwpzYWRkZXIKc2FkZGVzdApzYWRkbGUncwpzYWRkbGUvVURTRwpzYWRkbGViYWcvTVMKc2FkZGxlci9TCnNhZGRsZXJ5CnNhZGVzCnNhZGh1L1MKc2FkaXNtL00Kc2FkaXN0L1NNCnNhZGlzdGljCnNhZGlzdGljYWxseQpzYWRuZXNzL00Kc2Fkb21hc29jaGlzbS9NCnNhZG9tYXNvY2hpc3QvTVMKc2Fkb21hc29jaGlzdGljCnNhZmFyaS9TR01ECnNhZmUvTVlUUFJTCnNhZmVndWFyZC9TTURHCnNhZmVrZWVwaW5nL00Kc2FmZW5lc3MvTQpzYWZldHkvU00Kc2FmZmxvd2VyL01TCnNhZmZyb24vTVMKc2FnL1NNCnNhZ2EvTVMKc2FnYWNpb3VzL1kKc2FnYWNpdHkvTQpzYWdlL01ZVFJTCnNhZ2VicnVzaC9NCnNhZ2dlZApzYWdnaW5nCnNhZ2d5L1JUCnNhZ28vTQpzYWd1YXJvL01TCnNhaGliL01TCnNhaWQvVQpzYWlsL0dNRFNKCnNhaWxib2FyZC9NUlpHUwpzYWlsYm9hcmRlci9NCnNhaWxib2FyZGluZy9NCnNhaWxib2F0L01TCnNhaWxjbG90aC9NCnNhaWxmaXNoL01TCnNhaWxpbmcvTQpzYWlsb3IvU00Kc2FpbHBsYW5lL01TCnNhaW50L01EWVMKc2FpbnRob29kL00Kc2FpbnRsaWtlCnNhaW50bGluZXNzL00Kc2FpbnRseS9QUlQKc2FpdGgKc2FrZS9NCnNhbGFhbS9TTURHCnNhbGFibGUvVQpzYWxhY2lvdXMvUFkKc2FsYWNpb3VzbmVzcy9NCnNhbGFjaXR5L00Kc2FsYWQvTVMKc2FsYW1hbmRlci9TTQpzYWxhbWkvU00Kc2FsYXJ5L0RTTQpzYWxlL0FCTVMKc2FsZXJvb20vUwpzYWxlc2NsZXJrL1NNCnNhbGVzZ2lybC9TTQpzYWxlc2xhZHkvU00Kc2FsZXNtYW4vTQpzYWxlc21hbnNoaXAvTQpzYWxlc21lbgpzYWxlc3Blb3BsZS9NCnNhbGVzcGVyc29uL01TCnNhbGVzcm9vbS9TCnNhbGVzd29tYW4vTQpzYWxlc3dvbWVuCnNhbGllbmNlL00Kc2FsaWVudC9TTVkKc2FsaW5lL1NNCnNhbGluaXR5L00Kc2FsaXZhL00Kc2FsaXZhcnkKc2FsaXZhdGUvR05EUwpzYWxpdmF0aW9uL00Kc2FsbG93L1JUUApzYWxsb3duZXNzL00Kc2FsbHkvRFNNRwpzYWxtb24vU00Kc2FsbW9uZWxsYS9NCnNhbG1vbmVsbGFlCnNhbG9uL01TCnNhbG9vbi9TTQpzYWxzYS9NUwpzYWx0J3MKc2FsdC9DVEdEUwpzYWx0Ym94L01TCnNhbHRjZWxsYXIvU00Kc2FsdGVkL1UKc2FsdGVyCnNhbHRpbmUvU00Kc2FsdGluZXNzL00Kc2FsdHBldGVyL00Kc2FsdHNoYWtlci9TTQpzYWx0d2F0ZXIvTQpzYWx0eS9SVFAKc2FsdWJyaW91cy9JCnNhbHV0YXJ5CnNhbHV0YXRpb24vTVMKc2FsdXRhdG9yaWFuL01TCnNhbHV0YXRvcnkKc2FsdXRlL0RTTUcKc2FsdmFnZS9EU01HCnNhbHZhZ2VhYmxlCnNhbHZhdGlvbi9NCnNhbHZlL01aR0RSUwpzYWx2ZXIvTQpzYWx2by9NUwpzYW1hcml1bS9NCnNhbWJhL01EU0cKc2FtZS9TUApzYW1lbmVzcy9NCnNhbWV5CnNhbWl6ZGF0L1MKc2Ftb3NhL1MKc2Ftb3Zhci9TTQpzYW1wYW4vU00Kc2FtcGxlL0RSU01aR0oKc2FtcGxlci9NCnNhbXBsaW5nL00Kc2FtdXJhaS9TTQpzYW5hdG9yaXVtL1NNCnNhbmN0aWZpY2F0aW9uL00Kc2FuY3RpZnkvR0RTTgpzYW5jdGltb25pb3VzL1lQCnNhbmN0aW1vbmlvdXNuZXNzL00Kc2FuY3RpbW9ueS9NCnNhbmN0aW9uL0dTTUQKc2FuY3Rpb25lZC9VCnNhbmN0aXR5L00Kc2FuY3R1YXJ5L1NNCnNhbmN0dW0vU00Kc2FuZC9aR01EUlMKc2FuZGFsL1NNCnNhbmRhbHdvb2QvTQpzYW5kYmFnL1NNCnNhbmRiYWdnZWQKc2FuZGJhZ2dlci9TTQpzYW5kYmFnZ2luZwpzYW5kYmFuay9NUwpzYW5kYmFyL1NNCnNhbmRibGFzdC9aR01EUlMKc2FuZGJsYXN0ZXIvTQpzYW5kYm94L01TCnNhbmRjYXN0bGUvTVMKc2FuZGVyL00Kc2FuZGhvZy9TTQpzYW5kaW5lc3MvTQpzYW5kbG90L1NNCnNhbmRsb3R0ZXIvTVMKc2FuZG1hbi9NCnNhbmRtZW4Kc2FuZHBhcGVyL0dNRFMKc2FuZHBpcGVyL01TCnNhbmRwaXQvUwpzYW5kc3RvbmUvTQpzYW5kc3Rvcm0vU00Kc2FuZHdpY2gvTURTRwpzYW5keS9SVFAKc2FuZS9JWVRSCnNhbmVuZXNzL00Kc2FuZy9TCnNhbmdmcm9pZC9NCnNhbmdyaWEvTQpzYW5ndWluYXJ5CnNhbmd1aW5lL1kKc2FuaXRhcmlhbi9TTQpzYW5pdGFyaXVtL1NNCnNhbml0YXJ5L0lVCnNhbml0YXRpb24vTQpzYW5pdGl6ZS9HRFMKc2FuaXR5L0lNCnNhbmsKc2FucwpzYW5zZXJpZgpzYXAvU00Kc2FwaWVuY2UvTQpzYXBpZW5zCnNhcGllbnQKc2FwbGVzcwpzYXBsaW5nL01TCnNhcHBlZApzYXBwZXIvUwpzYXBwaGlyZS9TTQpzYXBwaW5lc3MvTQpzYXBwaW5nCnNhcHB5L1BSVApzYXByb3BoeXRlL1NNCnNhcHJvcGh5dGljCnNhcHN1Y2tlci9TTQpzYXB3b29kL00Kc2FyYW4vTQpzYXJjYXNtL01TCnNhcmNhc3RpYwpzYXJjYXN0aWNhbGx5CnNhcmNvbWEvTVMKc2FyY29waGFnaQpzYXJjb3BoYWd1cy9NCnNhcmRpbmUvTVMKc2FyZG9uaWMKc2FyZG9uaWNhbGx5CnNhcmdlL01TCnNhcmkvTVMKc2Fya3kKc2FybmllL1MKc2Fyb25nL1NNCnNhcnNhcGFyaWxsYS9NUwpzYXJ0b3JpYWwvWQpzYXNoL01TCnNhc2hheS9TR01ECnNhc3MvR01EUwpzYXNzYWZyYXMvTVMKc2Fzc3kvUlQKc2F0CnNhdGFuaWMKc2F0YW5pY2FsL1kKc2F0YW5pc20vTQpzYXRhbmlzdC9NUwpzYXRheQpzYXRjaGVsL01TCnNhdGUvR0RTCnNhdGVlbi9NCnNhdGVsbGl0ZS9EU01HCnNhdGlhYmxlL0kKc2F0aWF0ZS9HTkRTCnNhdGlhdGlvbi9NCnNhdGlldHkvTQpzYXRpbi9NCnNhdGlud29vZC9TTQpzYXRpbnkKc2F0aXJlL1NNCnNhdGlyaWMKc2F0aXJpY2FsL1kKc2F0aXJpc3QvU00Kc2F0aXJpemUvRFNHCnNhdGlzZmFjdGlvbi9FTQpzYXRpc2ZhY3Rpb25zCnNhdGlzZmFjdG9yaWx5L1UKc2F0aXNmYWN0b3J5L1UKc2F0aXNmaWVkL1UKc2F0aXNmeS9FRFNHCnNhdGlzZnlpbmcvVQpzYXRpc2Z5aW5nbHkKc2F0b3JpL00Kc2F0cmFwL1NNCnNhdHN1bWEvUwpzYXR1cmF0ZS9EU0dOCnNhdHVyYXRlZC9VCnNhdHVyYXRpb24vTQpzYXR1cm5pbmUKc2F0eXIvTVMKc2F0eXJpYXNpcy9NCnNhdHlyaWMKc2F1Y2UvTVpHRFJTCnNhdWNlcGFuL1NNCnNhdWNlci9NCnNhdWNpbHkKc2F1Y2luZXNzL00Kc2F1Y3kvUlBUCnNhdWVya3JhdXQvTQpzYXVuYS9NRFNHCnNhdW50ZXIvTURHUwpzYXVyaWFuCnNhdXJvcG9kL1NNCnNhdXNhZ2UvTVMKc2F1dGUvTVMKc2F1dGVlZApzYXV0ZWluZwpzYXZhZ2UvRFJTTVlUR1AKc2F2YWdlbmVzcy9NCnNhdmFnZXJ5L1NNCnNhdmFubmEvTVMKc2F2YW50L1NNCnNhdmUvQkpNWkdEUlMKc2F2ZWQvVQpzYXZlci9NCnNhdmluZy9NCnNhdmluZ3MvTQpzYXZpb3IvU00Kc2F2b3IvTURTRwpzYXZvcmluZXNzL00Kc2F2b3J5L1BUUlNNCnNhdm95L01TCnNhdnZ5L0RSU01URwpzYXcvU0dNRApzYXdib25lcy9NCnNhd2J1Y2svTVMKc2F3ZHVzdC9NCnNhd2ZseS9TTQpzYXdob3JzZS9TTQpzYXdtaWxsL01TCnNhd3llci9TTQpzYXgvTVMKc2F4aWZyYWdlL1NNCnNheG9waG9uZS9NUwpzYXhvcGhvbmlzdC9TTQpzYXkncwpzYXkvVVNHCnNheWluZy9TTQpzY2FiL01TCnNjYWJiYXJkL01TCnNjYWJiZWQKc2NhYmJpbmVzcy9NCnNjYWJiaW5nCnNjYWJieS9QVFIKc2NhYmllcy9NCnNjYWJyb3VzCnNjYWQvTVMKc2NhZmZvbGQvU01HCnNjYWZmb2xkaW5nL00Kc2NhZy9TCnNjYWdnZWQKc2NhbGFyL1MKc2NhbGF3YWcvTVMKc2NhbGQvTURTRwpzY2FsZSdzCnNjYWxlL0NHRFMKc2NhbGVsZXNzCnNjYWxlbmUKc2NhbGluZXNzL00Kc2NhbGxpb24vTVMKc2NhbGxvcC9HU01ECnNjYWxwL01EUlNaRwpzY2FscGVsL1NNCnNjYWxwZXIvTQpzY2FseS9SVFAKc2NhbS9NUwpzY2FtbWVkCnNjYW1tZXIvUwpzY2FtbWluZwpzY2FtcC9NUlNaCnNjYW1wZXIvR01ECnNjYW1waS9NCnNjYW4vTVMKc2NhbmRhbC9TTQpzY2FuZGFsaXplL0RTRwpzY2FuZGFsbW9uZ2VyL1NNCnNjYW5kYWxvdXMvWQpzY2FuZGl1bS9NCnNjYW5uZWQKc2Nhbm5lci9TTQpzY2FubmluZwpzY2Fuc2lvbi9NCnNjYW50L0NEU1RHCnNjYW50ZXIKc2NhbnRpbHkKc2NhbnRpbmVzcy9NCnNjYW50bHkKc2NhbnRuZXNzL00Kc2NhbnR5L1JTUFQKc2NhcGVnb2F0L1NHTUQKc2NhcGVncmFjZS9NUwpzY2FwdWxhL00Kc2NhcHVsYWUKc2NhcHVsYXIvU00Kc2Nhci9HTURTCnNjYXJhYi9TTQpzY2FyY2UvUllUUApzY2FyY2VuZXNzL00Kc2NhcmNpdHkvU00Kc2NhcmUvTVMKc2NhcmVjcm93L01TCnNjYXJlbW9uZ2VyL1NNRwpzY2FyZi9NRFNHCnNjYXJpZmljYXRpb24vTQpzY2FyaWZ5L05EU0cKc2NhcmlseQpzY2FyaW5lc3MvTQpzY2FybGF0aW5hL00Kc2NhcmxldC9NCnNjYXJwL01EUlNaRwpzY2FycGVyL0RHCnNjYXJyZWQKc2NhcnJpbmcKc2NhcnZlcwpzY2FyeS9SVFAKc2NhdC9NUwpzY2F0aGluZy9ZCnNjYXRvbG9naWNhbApzY2F0b2xvZ3kvTQpzY2F0dGVkCnNjYXR0ZXIvR0pTTUQKc2NhdHRlcmJyYWluL1NNRApzY2F0dGVyaW5nL00Kc2NhdHRlcnNob3QKc2NhdHRpbmcKc2NhdHR5CnNjYXZlbmdlL1pHRFJTCnNjYXZlbmdlci9NCnNjZW5hcmlvL01TCnNjZW5hcmlzdC9NUwpzY2VuZS9NUwpzY2VuZXJ5L00Kc2NlbmljCnNjZW5pY2FsbHkKc2NlbnQvQ01TCnNjZW50ZWQvVQpzY2VudGluZwpzY2VudGxlc3MKc2NlcHRlci9NUwpzY2gKc2NoYWRlbmZyZXVkZQpzY2hlZHVsZSdzCnNjaGVkdWxlL0FEU0cKc2NoZWR1bGVkL1UKc2NoZWR1bGVyL1MKc2NoZW1hCnNjaGVtYXRhCnNjaGVtYXRpYy9TTQpzY2hlbWF0aWNhbGx5CnNjaGVtYXRpemUvR0RTCnNjaGVtZS9EUlNNWkcKc2NoZW1lci9NCnNjaGVyem8vTVMKc2NoaWxsaW5nL01TCnNjaGlzbS9TTQpzY2hpc21hdGljL1NNCnNjaGlzdC9NCnNjaGl6by9TTQpzY2hpem9pZC9NUwpzY2hpem9waHJlbmlhL00Kc2NoaXpvcGhyZW5pYy9TTQpzY2hsZW1pZWwvU00Kc2NobGVwL1NNCnNjaGxlcHBlZApzY2hsZXBwaW5nCnNjaGxvY2svTQpzY2htYWx0ei9NCnNjaG1hbHR6eS9UUgpzY2htby9NCnNjaG1vZXMKc2NobW9vemUvRFJTWkcKc2NobXVjay9NUwpzY2huYXBwcy9NCnNjaG5hdXplci9TTQpzY2huaXR6ZWwvU00Kc2Nobm9vay9NUwpzY2hub3ovTVMKc2Nobm96emxlL1NNCnNjaG9sYXIvTVlTCnNjaG9sYXJzaGlwL01TCnNjaG9sYXN0aWMKc2Nob2xhc3RpY2FsbHkKc2Nob2xhc3RpY2lzbQpzY2hvb2wvU0dNRApzY2hvb2xiYWcvTVMKc2Nob29sYm9vay9TTQpzY2hvb2xib3kvTVMKc2Nob29sY2hpbGQvTQpzY2hvb2xjaGlsZHJlbi9NCnNjaG9vbGRheXMKc2Nob29sZWQvVQpzY2hvb2xmZWxsb3cvU00Kc2Nob29sZ2lybC9TTQpzY2hvb2xob3VzZS9TTQpzY2hvb2xpbmcvTQpzY2hvb2xraWQvUwpzY2hvb2xtYXJtL1NNCnNjaG9vbG1hcm1pc2gKc2Nob29sbWFzdGVyL01TCnNjaG9vbG1hdGUvU00Kc2Nob29sbWlzdHJlc3MvTVMKc2Nob29scm9vbS9TTQpzY2hvb2x0ZWFjaGVyL01TCnNjaG9vbHdvcmsvTQpzY2hvb2x5YXJkL1NNCnNjaG9vbmVyL1NNCnNjaHVzcy9HTURTCnNjaHVzc2Jvb21lci9NUwpzY2h3YS9NUwpzY2kKc2NpYXRpYwpzY2lhdGljYS9NCnNjaWVuY2UvRk1TCnNjaWVudGlmaWMvVQpzY2llbnRpZmljYWxseS9VCnNjaWVudGlzdC9TTQpzY2ltaXRhci9TTQpzY2ludGlsbGEvTVMKc2NpbnRpbGxhdGUvRFNHTgpzY2ludGlsbGF0aW9uL00Kc2Npb24vTVMKc2Npc3Nvci9HRFMKc2NsZXJvc2VzCnNjbGVyb3Npcy9NCnNjbGVyb3RpYwpzY29mZi9NRFJTWkcKc2NvZmZlci9NCnNjb2ZmbGF3L01TCnNjb2xkL01EU0dKCnNjb2xkaW5nL00Kc2NvbGlvc2lzL00Kc2NvbmNlL1NNCnNjb25lL01TCnNjb29wL01EU0cKc2Nvb3BmdWwvTVMKc2Nvb3QvRFJTWkcKc2Nvb3Rlci9NCnNjb3BlL01HRFMKc2NvcmJ1dGljCnNjb3JjaC9NRFJTWkcKc2NvcmNoZXIvTQpzY29yZS9NWkdEUlMKc2NvcmVib2FyZC9TTQpzY29yZWNhcmQvTVMKc2NvcmVrZWVwZXIvTVMKc2NvcmVsZXNzCnNjb3JlbGluZS9TCnNjb3Jlci9NCnNjb3JuL01EUlNaRwpzY29ybmVyL00Kc2Nvcm5mdWwvWQpzY29ycGlvbi9NUwpzY290Y2gvTURTRwpzY290Y2hzCnNjb3VuZHJlbC9NUwpzY291ci9EUlNaRwpzY291cmVyL00Kc2NvdXJnZS9EU01HCnNjb3V0L01EUlNaRwpzY291dGluZy9NCnNjb3V0bWFzdGVyL01TCnNjb3cvTVMKc2Nvd2wvTURTRwpzY3JhYmJsZS9NWkdEUlMKc2NyYWJibGVyL00Kc2NyYWcvTVMKc2NyYWdnbHkvUlQKc2NyYWdneS9UUgpzY3JhbS9TCnNjcmFtYmxlJ3MKc2NyYW1ibGUvVUdEUwpzY3JhbWJsZXIvTVMKc2NyYW1tZWQKc2NyYW1taW5nCnNjcmFwL01EUlNaR0oKc2NyYXBib29rL1NNCnNjcmFwZS9TTQpzY3JhcGVyL00Kc2NyYXBoZWFwL1NNCnNjcmFwaWUKc2NyYXBwZWQKc2NyYXBwZXIvTVMKc2NyYXBwaW5nCnNjcmFwcHkvVFIKc2NyYXB5YXJkL1NNCnNjcmF0Y2gvR01EUwpzY3JhdGNoY2FyZC9TCnNjcmF0Y2hlZC9VCnNjcmF0Y2hpbHkKc2NyYXRjaGluZXNzL00Kc2NyYXRjaHBhZC9TCnNjcmF0Y2h5L1BSVApzY3Jhd2wvU01ERwpzY3Jhd2x5CnNjcmF3bmluZXNzL00Kc2NyYXdueS9QVFIKc2NyZWFtL1NNRFJaRwpzY3JlYW1lci9NCnNjcmVhbWluZy9ZCnNjcmVlL01EUwpzY3JlZWNoL0dNRFMKc2NyZWVjaHkvVFIKc2NyZWVkL1MKc2NyZWVuL1NKTURHCnNjcmVlbmluZy9NCnNjcmVlbnBsYXkvU00Kc2NyZWVuc2F2ZXIKc2NyZWVuc2hvdC9TCnNjcmVlbndyaXRlci9TTQpzY3JlZW53cml0aW5nL00Kc2NyZXcncwpzY3Jldy9VRFNHCnNjcmV3YmFsbC9NUwpzY3Jld2RyaXZlci9NUwpzY3Jld2luZXNzL00Kc2NyZXd3b3JtL1NNCnNjcmV3eS9QUlQKc2NyaWJhbApzY3JpYmJsZS9NWkdEUlMKc2NyaWJibGVyL00Kc2NyaWJlJ3MKc2NyaWJlL0NLSVMKc2NyaW0vTVMKc2NyaW1tYWdlL01HRFMKc2NyaW1wL1NERwpzY3JpbXNoYXcvTURHUwpzY3JpcC9NUwpzY3JpcHQvRlNNREcKc2NyaXB0ZWQvVQpzY3JpcHR1cmFsCnNjcmlwdHVyZS9NUwpzY3JpcHR3cml0ZXIvU00Kc2NyaXZlbmVyL1NNCnNjcm9kL00Kc2Nyb2Z1bGEvTQpzY3JvZnVsb3VzCnNjcm9nL1MKc2Nyb2xsL0dTTUQKc2Nyb29nZS9NUwpzY3JvdGEKc2Nyb3RhbApzY3JvdHVtL00Kc2Nyb3VuZ2UvRFJTWkcKc2Nyb3VuZ2VyL00Kc2Nyb3VuZ3kvVFIKc2NydWIvTVMKc2NydWJiZWQKc2NydWJiZXIvU00Kc2NydWJiaW5nCnNjcnViYnkvUlQKc2NydWZmL1NNCnNjcnVmZmlseQpzY3J1ZmZpbmVzcy9NCnNjcnVmZnkvUlBUCnNjcnVtL1MKc2NydW1oYWxmCnNjcnVtaGFsdmVzCnNjcnVtbWFnZS9TCnNjcnVtbWVkCnNjcnVtbWluZwpzY3J1bXAvU0dECnNjcnVtcHRpb3VzL1kKc2NydW1weQpzY3J1bmNoL01EU0cKc2NydW5jaHkvU00Kc2NydXBsZS9NR0RTCnNjcnVwdWxvc2l0eS9NCnNjcnVwdWxvdXMvVVBZCnNjcnVwdWxvdXNuZXNzL1VNCnNjcnV0aW5lZXIvUwpzY3J1dGluaXplL0dEUwpzY3J1dGlueS9NCnNjdWJhL01EU0cKc2N1ZC9NUwpzY3VkZGVkCnNjdWRkaW5nCnNjdWZmL01EU0cKc2N1ZmZsZS9NR0RTCnNjdWxsL01EUlNaRwpzY3VsbGVyL00Kc2N1bGxlcnkvU00Kc2N1bGxpb24vU00Kc2N1bHB0L1NHRApzY3VscHRvci9TTQpzY3VscHRyZXNzL01TCnNjdWxwdHVyYWwKc2N1bHB0dXJlL0RTTUcKc2N1bS9NUwpzY3VtYmFnL01TCnNjdW1tZWQKc2N1bW1pbmcKc2N1bW15L1RSCnNjdXBwZXIvTURHUwpzY3VyZi9NCnNjdXJmeQpzY3VycmlsaXR5L00Kc2N1cnJpbG91cy9QWQpzY3Vycmlsb3VzbmVzcy9NCnNjdXJyeS9HRFNNCnNjdXJ2aWx5CnNjdXJ2eS9UUk0Kc2N1dGNoZW9uL1NNCnNjdXR0bGUvTUdEUwpzY3V0dGxlYnV0dC9NCnNjdXp6eS9UUgpzY3l0aGUvRFNNRwpzZWEvU00Kc2VhYmVkL1NNCnNlYWJpcmQvTVMKc2VhYm9hcmQvU00Kc2VhYm9ybmUKc2VhY29hc3QvU00Kc2VhZmFyZXIvU00Kc2VhZmFyaW5nL00Kc2VhZmxvb3IvU00Kc2VhZm9vZC9NCnNlYWZyb250L1NNCnNlYWdvaW5nCnNlYWd1bGwvTVMKc2VhaG9yc2UvTVMKc2VhbCdzCnNlYWwvQVVTREcKc2VhbGFudC9NUwpzZWFsZXIvU00Kc2VhbHNraW4vTQpzZWFtL0dNRE5TCnNlYW1hbi9NCnNlYW1hbnNoaXAvTQpzZWFtbGVzcy9ZCnNlYW1vdW50L01TCnNlYW1zdHJlc3MvTVMKc2VhbXkvUlQKc2VhbmNlL1NNCnNlYXBsYW5lL1NNCnNlYXBvcnQvTVMKc2Vhci9HTURTCnNlYXJjaC9BWkdNRFJTCnNlYXJjaGVyL0FNCnNlYXJjaGluZy9ZCnNlYXJjaGxpZ2h0L01TCnNlYXJpbmcvWQpzZWFzY2FwZS9TTQpzZWFzaGVsbC9TTQpzZWFzaG9yZS9TTQpzZWFzaWNrL1AKc2Vhc2lja25lc3MvTQpzZWFzaWRlL01TCnNlYXNvbi9TR01EQkoKc2Vhc29uYWJsZS9VCnNlYXNvbmFibHkvVQpzZWFzb25hbC9ZCnNlYXNvbmFsaXR5CnNlYXNvbmVkL1UKc2Vhc29uaW5nL00Kc2VhdCdzCnNlYXQvVUdEUwpzZWF0aW5nL00Kc2VhdG1hdGUvU00Kc2Vhd2FsbC9NUwpzZWF3YXJkL01TCnNlYXdhdGVyL00Kc2Vhd2F5L1NNCnNlYXdlZWQvTVMKc2Vhd29ydGhpbmVzcy9NCnNlYXdvcnRoeS9QCnNlYmFjZW91cwpzZWJvcnJoZWEvTQpzZWJ1bQpzZWMneQpzZWMvU00Kc2VjYW50L1NNCnNlY2F0ZXVycwpzZWNlZGUvRFNHCnNlY2Vzc2lvbi9NCnNlY2Vzc2lvbmlzdC9NUwpzZWNsdWRlL0dEUwpzZWNsdXNpb24vTQpzZWNsdXNpdmUKc2Vjb25kL1NMWkdNRFJZCnNlY29uZGFyaWx5CnNlY29uZGFyeS9TTQpzZWNvbmRlci9NCnNlY29uZGhhbmQKc2Vjb25kbWVudC9TCnNlY3JlY3kvTQpzZWNyZXQvU0dWTURZCnNlY3JldGFyaWFsCnNlY3JldGFyaWF0L01TCnNlY3JldGFyeS9TTQpzZWNyZXRhcnlzaGlwL00Kc2VjcmV0ZS9YTlMKc2VjcmV0aW9uL00Kc2VjcmV0aXZlL1BZCnNlY3JldGl2ZW5lc3MvTQpzZWNyZXRvcnkKc2VjdC9JTVMKc2VjdGFyaWFuL01TCnNlY3RhcmlhbmlzbS9NCnNlY3RhcnkvU00Kc2VjdGlvbi9BRVNNCnNlY3Rpb25hbC9NUwpzZWN0aW9uYWxpc20vTQpzZWN0aW9uZWQKc2VjdGlvbmluZwpzZWN0b3IvRVNNCnNlY3VsYXIKc2VjdWxhcmlzbS9NCnNlY3VsYXJpc3QvU00Kc2VjdWxhcml6YXRpb24vTQpzZWN1bGFyaXplL0RTRwpzZWN1cmUvRFJTWVRHCnNlY3VyZWQvVQpzZWN1cml0eS9JU00Kc2VjeQpzZWRhbi9NUwpzZWRhdGUvRFJTWVRHTlZQCnNlZGF0ZW5lc3MvTQpzZWRhdGlvbi9NCnNlZGF0aXZlL1NNCnNlZGVudGFyeQpzZWRnZS9NCnNlZGd5CnNlZGltZW50L01TCnNlZGltZW50YXJ5CnNlZGltZW50YXRpb24vTQpzZWRpdGlvbi9NCnNlZGl0aW91cwpzZWR1Y2UvRFJTWkcKc2VkdWNlci9NCnNlZHVjdGlvbi9TTQpzZWR1Y3RpdmUvWVAKc2VkdWN0aXZlbmVzcy9NCnNlZHVjdHJlc3MvTVMKc2VkdWxvdXMvWQpzZWUvUlNNWgpzZWVkJ3MKc2VlZC9BR0RTCnNlZWRiZWQvTVMKc2VlZGNhc2UvTVMKc2VlZGVkL1UKc2VlZGVyL1NNCnNlZWRpbmVzcy9NCnNlZWRsZXNzCnNlZWRsaW5nL01TCnNlZWRwb2QvTVMKc2VlZHkvUlBUCnNlZWluZy9TCnNlZWsvWkdSUwpzZWVrZXIvTQpzZWVtL0dEUwpzZWVtaW5nL1kKc2VlbWxpbmVzcy9VTQpzZWVtbHkvVVJUUApzZWVuL1UKc2VlcC9HRFMKc2VlcGFnZS9NCnNlZXIvTQpzZWVyc3Vja2VyL00Kc2Vlc2F3L1NNREcKc2VldGhlL0RTRwpzZWdmYXVsdC9TCnNlZ21lbnQvR1NNRApzZWdtZW50YXRpb24vTQpzZWdtZW50ZWQvVQpzZWdyZWdhdGUvQ0RTR04Kc2VncmVnYXRlZC9VCnNlZ3JlZ2F0aW9uL0NNCnNlZ3JlZ2F0aW9uaXN0L01TCnNlZ3VlL01HRFMKc2VndWVpbmcKc2VpZ25ldXIvU00Kc2VpZ25pb3IvU00Kc2VpbmUvTVpHRFJTCnNlaW5lci9NCnNlaXNtaWMKc2Vpc21pY2FsbHkKc2Vpc21vZ3JhcGgvWk1SCnNlaXNtb2dyYXBoZXIvTQpzZWlzbW9ncmFwaGljCnNlaXNtb2dyYXBocwpzZWlzbW9ncmFwaHkvTQpzZWlzbW9sb2dpYwpzZWlzbW9sb2dpY2FsCnNlaXNtb2xvZ2lzdC9NUwpzZWlzbW9sb2d5L00Kc2VpemUvR0RTCnNlaXp1cmUvTVMKc2VsZG9tCnNlbGVjdC9DU0dWRApzZWxlY3Rpb24vU00Kc2VsZWN0aXZlL1kKc2VsZWN0aXZpdHkvTQpzZWxlY3RtYW4vTQpzZWxlY3RtZW4Kc2VsZWN0bmVzcy9NCnNlbGVjdG9yL01TCnNlbGVuaXVtL00Kc2VsZW5vZ3JhcGhlci9NUwpzZWxlbm9ncmFwaHkvTQpzZWxmL00Kc2VsZmllL1NNCnNlbGZpc2gvVVlQCnNlbGZpc2huZXNzL1VNCnNlbGZsZXNzL1BZCnNlbGZsZXNzbmVzcy9NCnNlbGZzYW1lCnNlbGwvWkdNUlMKc2VsbGVyL00Kc2VsbG9mZi9NUwpzZWxsb3RhcGUvRFNHCnNlbGxvdXQvTVMKc2VsdHplci9NUwpzZWx2YWdlL01TCnNlbHZlcwpzZW1hbnRpYy9TCnNlbWFudGljYWxseQpzZW1hbnRpY2lzdC9NUwpzZW1hbnRpY3MvTQpzZW1hcGhvcmUvRFNNRwpzZW1ibGFuY2UvQVNNCnNlbWVuL00Kc2VtZXN0ZXIvU00Kc2VtaS9NUwpzZW1pYW5udWFsL1kKc2VtaWFyaWQKc2VtaWF1dG9tYXRpYy9NUwpzZW1pYnJldmUvUwpzZW1pY2lyY2xlL1NNCnNlbWljaXJjdWxhcgpzZW1pY29sb24vTVMKc2VtaWNvbmR1Y3RpbmcKc2VtaWNvbmR1Y3Rvci9NUwpzZW1pY29uc2Npb3VzCnNlbWlkYXJrbmVzcy9NCnNlbWlkZXRhY2hlZApzZW1pZmluYWwvU00Kc2VtaWZpbmFsaXN0L01TCnNlbWlnbG9zcy9TCnNlbWltb250aGx5L1NNCnNlbWluYWwKc2VtaW5hci9NUwpzZW1pbmFyaWFuL1NNCnNlbWluYXJ5L1NNCnNlbWlvZmZpY2lhbApzZW1pb3RpYy9TCnNlbWlvdGljcy9NCnNlbWlwZXJtZWFibGUKc2VtaXByZWNpb3VzCnNlbWlwcml2YXRlCnNlbWlwcm8vUwpzZW1pcHJvZmVzc2lvbmFsL1NNCnNlbWlxdWF2ZXIvUwpzZW1pcmV0aXJlZApzZW1pc2tpbGxlZApzZW1pc29saWQKc2VtaXN3ZWV0CnNlbWl0b25lL1NNCnNlbWl0cmFpbGVyL01TCnNlbWl0cmFuc3BhcmVudApzZW1pdHJvcGljYWwKc2VtaXZvd2VsL1NNCnNlbWl3ZWVrbHkvU00Kc2VtaXllYXJseQpzZW1vbGluYS9NCnNlbXBzdHJlc3MvTVMKc2VuYXRlL1NNCnNlbmF0b3IvTVMKc2VuYXRvcmlhbApzZW5kL1pHUlMKc2VuZGVyL00Kc2VuZG9mZi9NUwpzZW5lc2NlbmNlL00Kc2VuZXNjZW50CnNlbmlsZQpzZW5pbGl0eS9NCnNlbmlvci9TTQpzZW5pb3JpdHkvTQpzZW5uYS9NCnNlbm9yL01TCnNlbm9yYS9TTQpzZW5vcml0YS9TTQpzZW5zYXRpb24vTVMKc2Vuc2F0aW9uYWwvWQpzZW5zYXRpb25hbGlzbS9NCnNlbnNhdGlvbmFsaXN0L01TCnNlbnNhdGlvbmFsaXplL0dEUwpzZW5zZS9NR0RTCnNlbnNlbGVzcy9QWQpzZW5zZWxlc3NuZXNzL00Kc2Vuc2liaWxpdGllcwpzZW5zaWJpbGl0eS9JTQpzZW5zaWJsZS9QCnNlbnNpYmxlbmVzcy9NCnNlbnNpYmx5L0kKc2Vuc2l0aXZlL1NNWVAKc2Vuc2l0aXZlbmVzcy9NCnNlbnNpdGl2aXRpZXMKc2Vuc2l0aXZpdHkvSU0Kc2Vuc2l0aXphdGlvbi9DTQpzZW5zaXRpemUvQ0RTRwpzZW5zb3IvU00Kc2Vuc29yeQpzZW5zdWFsL1kKc2Vuc3VhbGlzdC9TTQpzZW5zdWFsaXR5L00Kc2Vuc3VvdXMvWVAKc2Vuc3VvdXNuZXNzL00Kc2VudC9GQVUKc2VudGVuY2UvTUdEUwpzZW50ZW50aW91cy9ZCnNlbnRpZW5jZS9JTQpzZW50aWVudC9JCnNlbnRpbWVudC9TTQpzZW50aW1lbnRhbC9ZCnNlbnRpbWVudGFsaXNtL00Kc2VudGltZW50YWxpc3QvTVMKc2VudGltZW50YWxpdHkvTQpzZW50aW1lbnRhbGl6YXRpb24vTQpzZW50aW1lbnRhbGl6ZS9HRFMKc2VudGluZWwvTVMKc2VudHJ5L1NNCnNlcGFsL01TCnNlcGFyYWJpbGl0eS9JTQpzZXBhcmFibGUKc2VwYXJhYmx5L0kKc2VwYXJhdGUvWE1ZR05WRFNQCnNlcGFyYXRlbmVzcy9NCnNlcGFyYXRpb24vTQpzZXBhcmF0aXNtL00Kc2VwYXJhdGlzdC9NUwpzZXBhcmF0b3IvTVMKc2VwaWEvTQpzZXBzaXMvTQpzZXB0YQpzZXB0YWwKc2VwdGV0L1NNCnNlcHRpYwpzZXB0aWNlbWlhL00Kc2VwdGljZW1pYwpzZXB0dWFnZW5hcmlhbi9NUwpzZXB0dW0vTQpzZXB1bGNoZXIvR01EUwpzZXB1bGNocmFsCnNlcQpzZXF1ZWwvU00Kc2VxdWVuY2UvTVpHRFJTCnNlcXVlbmNpbmcvTQpzZXF1ZW50aWFsL0ZZCnNlcXVlc3Rlci9TREcKc2VxdWVzdHJhdGUvWEdORFMKc2VxdWVzdHJhdGlvbi9NCnNlcXVpbi9TTUQKc2VxdWlubmVkCnNlcXVpdHVyCnNlcXVvaWEvTVMKc2VyYWdsaW8vTVMKc2VyYXBlL1NNCnNlcmFwaC9NCnNlcmFwaGljCnNlcmFwaHMKc2VyZS9UUgpzZXJlbmFkZS9NR0RTCnNlcmVuZGlwaXRvdXMKc2VyZW5kaXBpdHkvTQpzZXJlbmUvUlBZVApzZXJlbmVuZXNzL00Kc2VyZW5pdHkvTQpzZXJmL01TCnNlcmZkb20vTQpzZXJnZS9NCnNlcmdlYW50L01TCnNlcmlhbC9TTVkKc2VyaWFsaXphdGlvbi9TTQpzZXJpYWxpemUvR0RTCnNlcmllcy9NCnNlcmlmL01TCnNlcmlncmFwaC9NCnNlcmlncmFwaHMKc2VyaW5lCnNlcmlvdXMvUFkKc2VyaW91c25lc3MvTQpzZXJtb24vU00Kc2VybW9uaXplL0dEUwpzZXJvbG9neS9NCnNlcm90b25pbgpzZXJvdXMKc2VycGVudC9NUwpzZXJwZW50aW5lL00Kc2VycmF0ZS9YTkQKc2VycmF0aW9uL00Kc2VycmllZApzZXJ1bS9NUwpzZXJ2YW50L01TCnNlcnZlJ3MvQUYKc2VydmUvRkFDR0RTCnNlcnZlci9TTQpzZXJ2ZXJ5L1MKc2VydmljZS9FTVMKc2VydmljZWFiaWxpdHkvTQpzZXJ2aWNlYWJsZQpzZXJ2aWNlZApzZXJ2aWNlbWFuL00Kc2VydmljZW1lbgpzZXJ2aWNld29tYW4vTQpzZXJ2aWNld29tZW4Kc2VydmljaW5nCnNlcnZpZXR0ZS9NUwpzZXJ2aWxlCnNlcnZpbGl0eS9NCnNlcnZpbmcncwpzZXJ2aW5ncwpzZXJ2aXRvci9NUwpzZXJ2aXR1ZGUvTQpzZXJ2by9NUwpzZXJ2b21lY2hhbmlzbS9TTQpzZXJ2b21vdG9yL01TCnNlc2FtZS9TTQpzZXNxdWljZW50ZW5uaWFsL01TCnNlc3Npb24vTVMKc2V0L0FJU00Kc2V0YmFjay9NUwpzZXRzY3Jldy9TTQpzZXRzcXVhcmUvUwpzZXR0L0JKWkdSUwpzZXR0ZWUvTVMKc2V0dGVyL00Kc2V0dGluZy9NCnNldHRsZSdzCnNldHRsZS9BVUdEUwpzZXR0bGVtZW50L0FNCnNldHRsZW1lbnRzCnNldHRsZXIvU00Kc2V0dXAvTVMKc2V2ZW4vTUhTCnNldmVudGVlbi9TTUgKc2V2ZW50ZWVudGgvTQpzZXZlbnRlZW50aHMKc2V2ZW50aC9NCnNldmVudGhzCnNldmVudGlldGgvTQpzZXZlbnRpZXRocwpzZXZlbnR5L1NNSApzZXZlci9FVEdEUwpzZXZlcmFsL01ZCnNldmVyYW5jZS9TTQpzZXZlcmUvWVBSCnNldmVyZW5lc3MvTQpzZXZlcml0eS9NCnNldy9BU0dECnNld2FnZS9NCnNld2VyL01TCnNld2VyYWdlL00Kc2V3aW5nL00Kc2V3bi9BCnNleC9HTURTCnNleGFnZW5hcmlhbi9TTQpzZXhpbHkKc2V4aW5lc3MvTQpzZXhpc20vTQpzZXhpc3QvTVMKc2V4bGVzcwpzZXhvbG9naXN0L1NNCnNleG9sb2d5L00Kc2V4cG90L01TCnNleHRhbnQvU00Kc2V4dGV0L01TCnNleHRpbmcKc2V4dG9uL01TCnNleHR1cGxldC9TTQpzZXh1YWwvWQpzZXh1YWxpdHkvTQpzZXh5L1BUUgpzZgpzaApzaGFiYmlseQpzaGFiYmluZXNzL00Kc2hhYmJ5L1BUUgpzaGFjay9NRFNHCnNoYWNrbGUncwpzaGFja2xlL1VHRFMKc2hhZC9HTURTSgpzaGFkZS9NUwpzaGFkaWx5CnNoYWRpbmVzcy9NCnNoYWRpbmcvTQpzaGFkb3cvU0dNRApzaGFkb3dib3gvR0RTCnNoYWRvd3kvUlQKc2hhZHkvUlBUCnNoYWZ0L01EU0cKc2hhZy9NUwpzaGFnZ2VkCnNoYWdnaW5lc3MvTQpzaGFnZ2luZwpzaGFnZ3kvVFBSCnNoYWgvTQpzaGFocwpzaGFrZS9NWkdSUwpzaGFrZWRvd24vU00Kc2hha2VuL1UKc2hha2VvdXQvTVMKc2hha2VyL00Kc2hha2V1cC9NUwpzaGFraWx5CnNoYWtpbmVzcy9NCnNoYWt5L1JQVApzaGFsZS9NCnNoYWxsCnNoYWxsb3QvTVMKc2hhbGxvdy9UUE1SWVMKc2hhbGxvd25lc3MvTQpzaGFsb20Kc2hhbHQKc2hhbS9HTURTCnNoYW1hbi9TTQpzaGFtYW5pYwpzaGFtYW5pc20Kc2hhbWFuaXN0aWMKc2hhbWJsZS9NR0RTCnNoYW1ibGVzL00Kc2hhbWJvbGljCnNoYW1lL01TCnNoYW1lZmFjZWQvWQpzaGFtZWZ1bC9QWQpzaGFtZWZ1bG5lc3MvTQpzaGFtZWxlc3MvWVAKc2hhbWVsZXNzbmVzcy9NCnNoYW1tZWQKc2hhbW1pbmcKc2hhbXBvby9aR01EUlMKc2hhbXBvb2VyL00Kc2hhbXJvY2svTVMKc2hhbid0CnNoYW5keS9TCnNoYW5naGFpL0RTRwpzaGFuay9NUwpzaGFudHVuZy9NCnNoYW50eS9TTQpzaGFudHl0b3duL1NNCnNoYXBlJ3MKc2hhcGUvQUdEUwpzaGFwZWQvVQpzaGFwZWxlc3MvWVAKc2hhcGVsZXNzbmVzcy9NCnNoYXBlbGluZXNzL00Kc2hhcGVseS9QVFIKc2hhcmQvTVMKc2hhcmUvTVpHRFJTCnNoYXJlYWJsZQpzaGFyZWNyb3AvUwpzaGFyZWNyb3BwZWQKc2hhcmVjcm9wcGVyL01TCnNoYXJlY3JvcHBpbmcKc2hhcmVob2xkZXIvU00Kc2hhcmVob2xkaW5nL1MKc2hhcmVyL00Kc2hhcmV3YXJlL00Kc2hhcmlhL00Kc2hhcmlhaApzaGFyay9NRFNHCnNoYXJrc2tpbi9NCnNoYXJwL01ETlJZU1BYWlRHCnNoYXJwZW4vQURHUwpzaGFycGVuZXIvTVMKc2hhcnBlci9NCnNoYXJwaWUvTVMKc2hhcnBpc2gKc2hhcnBuZXNzL00Kc2hhcnBzaG9vdGVyL1NNCnNoYXJwc2hvb3RpbmcvTQpzaGF0dGVyL0dNRFMKc2hhdHRlcnByb29mCnNoYXZlL01aR0RSU0oKc2hhdmVuL1UKc2hhdmVyL00Kc2hhdmluZy9NCnNoYXdsL01TCnNoYXkvTVMKc2hlJ2QKc2hlJ2xsCnNoZS9EU00Kc2hlYWYvTQpzaGVhci9NRFJTWkcKc2hlYXJlci9NCnNoZWF0aC9KTQpzaGVhdGhlL1VHRFMKc2hlYXRoaW5nL00Kc2hlYXRocwpzaGVhdmUvRFNNRwpzaGViYW5nL01TCnNoZWJlZW4vUwpzaGVkL01TCnNoZWRkaW5nCnNoZWVuL00Kc2hlZW55L1RSCnNoZWVwL00Kc2hlZXBkb2cvTVMKc2hlZXBmb2xkL1NNCnNoZWVwaGVyZGVyL01TCnNoZWVwaXNoL1lQCnNoZWVwaXNobmVzcy9NCnNoZWVwc2tpbi9NUwpzaGVlci9NRFJTUFRHCnNoZWVybmVzcy9NCnNoZWV0L01TRwpzaGVldGluZy9NCnNoZWV0bGlrZQpzaGVpa2RvbS9NUwpzaGVpa2gvTQpzaGVpa2hzCnNoZWlsYS9TCnNoZWtlbC9TTQpzaGVsZi9NCnNoZWxsL01EUlNHCnNoZWxsYWMvTVMKc2hlbGxhY2tlZApzaGVsbGFja2luZy9NUwpzaGVsbGZpcmUvTQpzaGVsbGZpc2gvTVMKc2hlbHRlci9HTURTCnNoZWx2ZS9HRFMKc2hlbHZpbmcvTQpzaGVuYW5pZ2FuL1NNCnNoZXBoZXJkL1NNREcKc2hlcGhlcmRlc3MvTVMKc2hlcmJldC9TTQpzaGVyaWZmL1NNCnNoZXJyeS9TTQpzaGV3L0dEUwpzaGV3bgpzaGgKc2hpYXRzdS9NCnNoaWJib2xldGgvTQpzaGliYm9sZXRocwpzaGllbGQvTURHUwpzaGlmdC9HTURTCnNoaWZ0aWx5CnNoaWZ0aW5lc3MvTQpzaGlmdGxlc3MvUFkKc2hpZnRsZXNzbmVzcy9NCnNoaWZ0eS9SUFQKc2hpaXRha2UvU00Kc2hpbGwvR01EU0oKc2hpbGxlbGFnaC9NCnNoaWxsZWxhZ2hzCnNoaWxsaW5nL00Kc2hpbS9NUwpzaGltbWVkCnNoaW1tZXIvU01ERwpzaGltbWVyeQpzaGltbWluZwpzaGltbXkvRFNNRwpzaGluL1pHTURSUwpzaGluYm9uZS9TTQpzaGluZGlnL1NNCnNoaW5lL01TCnNoaW5lci9NCnNoaW5nbGUvRFNNRwpzaGluZ3VhcmQvTQpzaGluaW5lc3MvTQpzaGlubmVkCnNoaW5uaW5nCnNoaW5ueS9EU0cKc2hpbnNwbGludHMvTQpzaGlueS9UUlAKc2hpcCdzCnNoaXAvQUxTCnNoaXBib2FyZC9NUwpzaGlwYnVpbGRlci9TTQpzaGlwYnVpbGRpbmcvTQpzaGlwbG9hZC9TTQpzaGlwbWF0ZS9TTQpzaGlwbWVudC9BTQpzaGlwbWVudHMKc2hpcG93bmVyL01TCnNoaXBwZWQvQQpzaGlwcGVyL1NNCnNoaXBwaW5nL00Kc2hpcHNoYXBlCnNoaXB3cmVjay9HTURTCnNoaXB3cmlnaHQvTVMKc2hpcHlhcmQvU00Kc2hpcmUvTVMKc2hpcmsvWkdEUlMKc2hpcmtlci9NCnNoaXJyL0dNRFNKCnNoaXJyaW5nL00Kc2hpcnQvR01EUwpzaGlydGZyb250L1NNCnNoaXJ0aW5nL00Kc2hpcnRsZXNzCnNoaXJ0c2xlZXZlL1NNCnNoaXJ0dGFpbC9TTQpzaGlydHdhaXN0L01TCnNoaXJ0eQpzaGl0L1NNIQpzaGl0ZmFjZWQvIQpzaGl0aGVhZC9TIQpzaGl0bG9hZC8hCnNoaXR0ZWQvIQpzaGl0dGluZy8hCnNoaXR0eS9SVCEKc2hpdi9aTVJTCnNoaXZlci9NREcKc2hpdmVyeQpzaG9hbC9HTURTCnNob2F0L01TCnNob2NrL1pHTURSUwpzaG9ja2VyL00Kc2hvY2tpbmcvWQpzaG9ja3Byb29mCnNob2QvVQpzaG9kZGlseQpzaG9kZGluZXNzL00Kc2hvZGR5L1BSTVQKc2hvZS9NUwpzaG9laG9ybi9HTURTCnNob2VpbmcKc2hvZWxhY2UvTVMKc2hvZW1ha2VyL1NNCnNob2VzaGluZS9TTQpzaG9lc3RyaW5nL1NNCnNob2V0cmVlL01TCnNob2d1bi9NUwpzaG9ndW5hdGUvTQpzaG9uZQpzaG9vL0dEUwpzaG9vawpzaG9vdC9aR01SU0oKc2hvb3Rlci9NCnNob290aW5nL00Kc2hvb3RvdXQvTVMKc2hvcC9NUwpzaG9wYWhvbGljL01TCnNob3BmaXR0ZXIvUwpzaG9wZml0dGluZwpzaG9wZnJvbnQvUwpzaG9wa2VlcGVyL01TCnNob3BsaWZ0L0RSWkdTCnNob3BsaWZ0ZXIvTQpzaG9wbGlmdGluZy9NCnNob3BwZS9NWkdEUlMKc2hvcHBlci9NCnNob3BwaW5nL00Kc2hvcHRhbGsvTQpzaG9wd29ybgpzaG9yZS9NR0RTCnNob3JlYmlyZC9TTQpzaG9yZWxpbmUvTVMKc2hvcmluZy9NCnNob3J0L1hUR01ETlJZU1AKc2hvcnRhZ2UvTVMKc2hvcnRicmVhZC9NCnNob3J0Y2FrZS9NUwpzaG9ydGNoYW5nZS9EU0cKc2hvcnRjb21pbmcvTVMKc2hvcnRjcnVzdApzaG9ydGN1dC9NUwpzaG9ydGVuL0pHRApzaG9ydGVuaW5nL00Kc2hvcnRmYWxsL01TCnNob3J0aGFuZC9NRApzaG9ydGhvcm4vTVMKc2hvcnRpc2gKc2hvcnRsaXN0L0RHUwpzaG9ydG5lc3MvTQpzaG9ydHNpZ2h0ZWQvUFkKc2hvcnRzaWdodGVkbmVzcy9NCnNob3J0c3RvcC9NUwpzaG9ydHdhdmUvTVMKc2hvcnR5L1NNCnNob3QvTVMKc2hvdGd1bi9TTQpzaG90Z3VubmVkCnNob3RndW5uaW5nCnNob3VsZApzaG91bGQndmUKc2hvdWxkZXIvTURHUwpzaG91bGRuJ3QKc2hvdXQvWkdNRFJTCnNob3V0ZXIvTQpzaG92ZS9NR0RTCnNob3ZlbC9NRFNHCnNob3ZlbGZ1bC9TTQpzaG93L0paR01EUlMKc2hvd2Jpei9NCnNob3dib2F0L01ER1MKc2hvd2Nhc2UvTUdEUwpzaG93ZG93bi9NUwpzaG93ZXIvTURHCnNob3dlcnByb29mCnNob3dlcnkKc2hvd2dpcmwvTVMKc2hvd2dyb3VuZC9TCnNob3dpbHkKc2hvd2luZXNzL00Kc2hvd2luZy9NCnNob3dqdW1waW5nCnNob3dtYW4vTQpzaG93bWFuc2hpcC9NCnNob3dtZW4Kc2hvd24Kc2hvd29mZi9TTQpzaG93cGllY2UvU00Kc2hvd3BsYWNlL1NNCnNob3dyb29tL01TCnNob3dzdG9wcGVyL01TCnNob3dzdG9wcGluZwpzaG93dGltZQpzaG93eS9UUlAKc2hwdApzaHJhbmsKc2hyYXBuZWwvTQpzaHJlZC9NUwpzaHJlZGRlZApzaHJlZGRlci9NUwpzaHJlZGRpbmcKc2hyZXcvTVMKc2hyZXdkL1JZUFQKc2hyZXdkbmVzcy9NCnNocmV3aXNoCnNocmllay9NRFNHCnNocmlmdC9NCnNocmlrZS9NUwpzaHJpbGwvRFJTUFRHCnNocmlsbG5lc3MvTQpzaHJpbGx5CnNocmltcC9NRFJTWkcKc2hyaW5lL01TCnNocmluay9NU0JHCnNocmlua2FnZS9NCnNocml2ZS9HRFMKc2hyaXZlbC9TR0QKc2hyaXZlbgpzaHJvdWQvR01EUwpzaHJ1Yi9NUwpzaHJ1YmJlcnkvU00Kc2hydWJieS9SVApzaHJ1Zy9NUwpzaHJ1Z2dlZApzaHJ1Z2dpbmcKc2hydW5rL04Kc2h0aWNrL01TCnNodWNrL0dNRFMKc2h1Y2tzL1MKc2h1ZGRlci9NRFNHCnNodWZmbGUvQU1HRFMKc2h1ZmZsZWJvYXJkL1NNCnNodWZmbGVyL1NNCnNodW4vUwpzaHVubmVkCnNodW5uaW5nCnNodW50L01TREcKc2h1c2gvRFNHCnNodXQvUwpzaHV0ZG93bi9TTQpzaHV0ZXllL00Kc2h1dG9mZi9TTQpzaHV0b3V0L1NNCnNodXR0ZXIvU01ERwpzaHV0dGVyYnVnL01TCnNodXR0aW5nCnNodXR0bGUvRFNNRwpzaHV0dGxlY29jay9HTURTCnNoeS9UR0RSU01ZCnNoeWVyCnNoeWVzdApzaHluZXNzL00Kc2h5c3Rlci9TTQpzaWJpbGFudC9TTQpzaWJsaW5nL1NNCnNpYnlsL01TCnNpYnlsbGluZQpzaWMvUwpzaWNjZWQKc2ljY2luZwpzaWNrL1BYVEdETlJZUwpzaWNrYmF5L1MKc2lja2JlZC9TTQpzaWNrZW4vREcKc2lja2VuaW5nL1kKc2lja2llL01TCnNpY2tpc2gKc2lja2xlL01TCnNpY2tseS9SVApzaWNrbmVzcy9NUwpzaWNrby9NUwpzaWNrb3V0L1NNCnNpY2tyb29tL01TCnNpZGUncwpzaWRlL0FHRFMKc2lkZWFybS9TTQpzaWRlYmFyL1NNCnNpZGVib2FyZC9TTQpzaWRlYnVybnMvTQpzaWRlY2FyL1NNCnNpZGVraWNrL1NNCnNpZGVsaWdodC9NUwpzaWRlbGluZS9EU01HCnNpZGVsb25nCnNpZGVtYW4vTQpzaWRlbWVuCnNpZGVwaWVjZS9NUwpzaWRlcmVhbApzaWRlc2FkZGxlL01TCnNpZGVzaG93L01TCnNpZGVzcGxpdHRpbmcKc2lkZXN0ZXAvTVMKc2lkZXN0ZXBwZWQKc2lkZXN0ZXBwaW5nCnNpZGVzdHJva2UvRFNNRwpzaWRlc3dpcGUvRFNNRwpzaWRldHJhY2svU01ERwpzaWRld2Fsay9NUwpzaWRld2FsbC9NUwpzaWRld2F5cwpzaWRld2luZGVyL1NNCnNpZGluZy9NUwpzaWRsZS9NR0RTCnNpZWdlL01TCnNpZW5uYS9NCnNpZXJyYS9NUwpzaWVzdGEvTVMKc2lldmUvTUdEUwpzaWZ0L1pHRFJTCnNpZnRlZC9VCnNpZnRlci9NCnNpZ2gvR01ECnNpZ2hzCnNpZ2h0L0dNRFlTSgpzaWdodGluZy9NCnNpZ2h0bGVzcwpzaWdodGx5L1VUUgpzaWdodHJlYWQKc2lnaHRzZWVpbmcvTQpzaWdodHNlZXIvTVMKc2lnbWEvTVMKc2lnbidzL0MKc2lnbi9BRkNHRFMKc2lnbmFnZS9NCnNpZ25hbC9NRFJZU1pHCnNpZ25hbGVyL00Kc2lnbmFsaXphdGlvbi9NCnNpZ25hbGl6ZS9HRFMKc2lnbmFsbWFuL00Kc2lnbmFsbWVuCnNpZ25hdG9yeS9TTQpzaWduYXR1cmUvTVMKc2lnbmJvYXJkL01TCnNpZ25lZC9VCnNpZ25lci9DTVMKc2lnbmV0L01TCnNpZ25pZmljYW5jZS9JTQpzaWduaWZpY2FudC9JWQpzaWduaWZpY2F0aW9uL00Kc2lnbmlmeS9YRFNORwpzaWduaW5nJ3MvQwpzaWduaW5ncwpzaWdub3IvRk1TCnNpZ25vcmEvU00Kc2lnbm9yZQpzaWdub3JpCnNpZ25vcmluYS9NUwpzaWdub3JpbmUKc2lnbnBvc3QvR1NNRApzaWxhZ2UvTQpzaWxlbmNlL0RSU01aRwpzaWxlbmNlci9NCnNpbGVudC9NUllTVApzaWxob3VldHRlL0RTTUcKc2lsaWNhL00Kc2lsaWNhdGUvTVMKc2lsaWNlb3VzCnNpbGljb24vU00Kc2lsaWNvbmUvTQpzaWxpY29zaXMvTQpzaWxrL01OUwpzaWxraWx5CnNpbGtpbmVzcy9NCnNpbGtzY3JlZW4vU00Kc2lsa3dvcm0vTVMKc2lsa3kvVFJQCnNpbGwvTVMKc2lsbGluZXNzL00Kc2lsbHkvVFJTTVAKc2lsby9NUwpzaWx0L0dNRFMKc2lsdHkvVFIKc2lsdmVyL0dNRFMKc2lsdmVyZmlzaC9NUwpzaWx2ZXJzbWl0aC9NCnNpbHZlcnNtaXRocwpzaWx2ZXJ3YXJlL00Kc2lsdmVyeQpzaW0vU00Kc2ltaWFuL01TCnNpbWlsYXIvWQpzaW1pbGFyaXR5L0VTTQpzaW1pbGUvTVMKc2ltaWxpdHVkZS9FTQpzaW1tZXIvR01EUwpzaW1vbml6ZS9EU0cKc2ltb255L00Kc2ltcGF0aWNvCnNpbXBlci9HTURTCnNpbXBlcmluZy9ZCnNpbXBsZS9UUlAKc2ltcGxlbWluZGVkCnNpbXBsZW5lc3MvTQpzaW1wbGV0b24vU00Kc2ltcGxleApzaW1wbGljaXR5L00Kc2ltcGxpZmljYXRpb24vTQpzaW1wbGlmeS9EU1hORwpzaW1wbGlzdGljCnNpbXBsaXN0aWNhbGx5CnNpbXBseQpzaW11bGFjcmEKc2ltdWxhY3J1bS9TCnNpbXVsYXRlL0VEU0dOCnNpbXVsYXRpb24vRU0Kc2ltdWxhdGlvbnMKc2ltdWxhdG9yL0VNUwpzaW11bGNhc3QvR01EUwpzaW11bHRhbmVpdHkvTQpzaW11bHRhbmVvdXMvWQpzaW4vQVNNCnNpbmNlCnNpbmNlcmUvSVlUCnNpbmNlcmVyCnNpbmNlcml0eS9JTQpzaW5lL01TCnNpbmVjdXJlL01TCnNpbmV3L01TCnNpbmV3eQpzaW5mdWwvUFkKc2luZnVsbmVzcy9NCnNpbmcvQlpHTURSWVMKc2luZ2Fsb25nL1MKc2luZ2UvTVMKc2luZ2VpbmcKc2luZ2VyL00Kc2luZ2luZy9NCnNpbmdsZS9QTUdEUwpzaW5nbGVuZXNzL00Kc2luZ2xlcy9NCnNpbmdsZXQvUwpzaW5nbGV0b24vU00Kc2luZ2xldHJlZS9TTQpzaW5nc29uZy9TTURHCnNpbmd1bGFyL1NNWQpzaW5ndWxhcml0eS9TTQpzaW5pc3RlcgpzaW5rL0JaR01SUwpzaW5rYWJsZS9VCnNpbmtlci9NCnNpbmtob2xlL1NNCnNpbmxlc3MKc2lubmVkCnNpbm5lci9NUwpzaW5uaW5nCnNpbm9sb2d5CnNpbnVvc2l0eS9NCnNpbnVvdXMvWQpzaW51cy9NUwpzaW51c2l0aXMvTQpzaW51c29pZGFsCnNpcC9TTQpzaXBob24vR01EUwpzaXBwZWQKc2lwcGVyL1NNCnNpcHBpbmcKc2lyL1NYTU4Kc2lyZS9DTUdEUwpzaXJlbi9NCnNpcmxvaW4vU00Kc2lyb2Njby9TTQpzaXJyYWgKc2lycmVlL00Kc2lzL01TCnNpc2FsL00Kc2lzc2lmaWVkCnNpc3N5L1JTTVQKc2lzdGVyL0FTTQpzaXN0ZXJob29kL01TCnNpc3RlcmxpbmVzcy9NCnNpc3Rlcmx5L1AKc2l0L1MKc2l0YXIvU00Kc2l0YXJpc3QvTVMKc2l0Y29tL1NNCnNpdGUvTUdEUwpzaXRlbWFwL1NNCnNpdHRlci9TTQpzaXR0aW5nL1NNCnNpdHVhdGUvRFNYR04Kc2l0dWF0aW9uL00Kc2l0dWF0aW9uYWwKc2l4L01TSApzaXhmb2xkCnNpeHBlbmNlL01TCnNpeHNob290ZXIvTQpzaXh0ZWVuL1NNSApzaXh0ZWVudGgvTQpzaXh0ZWVudGhzCnNpeHRoL00Kc2l4dGhzCnNpeHRpZXRoL00Kc2l4dGlldGhzCnNpeHR5L1NNSApzaXphYmxlCnNpemUncwpzaXplL0FHRFMKc2l6ZXIKc2l6aW5nL00Kc2l6emxlL0RSU01aRwpza2EvTQpza2F0ZS9NWkdEUlMKc2thdGVib2FyZC9NRFJTWkcKc2thdGVib2FyZGVyL00Kc2thdGVib2FyZGluZy9NCnNrYXRlci9NCnNrYXRpbmcvTQpza2VkYWRkbGUvTUdEUwpza2VldC9aTVIKc2tlaW4vTVMKc2tlbGV0YWwKc2tlbGV0b24vU00Kc2tlcHRpYy9TTQpza2VwdGljYWwvWQpza2VwdGljaXNtL00Kc2tldGNoL01EUlNaRwpza2V0Y2hib29rL1MKc2tldGNoZXIvTQpza2V0Y2hpbHkKc2tldGNoaW5lc3MvTQpza2V0Y2hwYWQvUwpza2V0Y2h5L1JUUApza2V3L01EUlpHUwpza2V3YmFsZC9TCnNrZXdlci9NREcKc2tpL1NaR01EUgpza2lib2IvUwpza2lkL01TCnNraWRkZWQKc2tpZGRpbmcKc2tpZHBhbi9TCnNraWVyL00Kc2tpZmYvU00Kc2tpZmZsZQpza2lpbmcvTQpza2lsZnVsbHkKc2tpbGwncwpza2lsbC9DU0QKc2tpbGxlZC9VCnNraWxsZXQvU00Kc2tpbGxmdWwvVVkKc2tpbGxmdWxuZXNzL00Kc2tpbS9NUwpza2ltbWVkCnNraW1tZXIvU00Kc2tpbW1pbmcKc2tpbXAvU0RHCnNraW1waWx5CnNraW1waW5lc3MvTQpza2ltcHkvUlRQCnNraW4vTVMKc2tpbmNhcmUvTQpza2luZmxpbnQvTVMKc2tpbmZ1bApza2luaGVhZC9NUwpza2lubGVzcwpza2lubmVkCnNraW5uaW5lc3MvTQpza2lubmluZwpza2lubnkvUk1UUApza2ludApza2ludGlnaHQKc2tpcC9NUwpza2lwcGVkCnNraXBwZXIvU01ERwpza2lwcGluZwpza2lybWlzaC9aR01EUlMKc2tpcnQvU01ERwpza2l0L01TCnNraXR0ZXIvR1NECnNraXR0aXNoL1lQCnNraXR0aXNobmVzcy9NCnNraXR0bGUvUwpza2l2ZS9EUlNaRwpza2l2dnkvRFNNRwpza29hbC9TTQpza3VhL1MKc2t1bGR1Z2dlcnkvTQpza3Vsay9TRFJaRwpza3Vsa2VyL00Kc2t1bGwvU00Kc2t1bGxjYXAvTVMKc2t1bmsvU01ERwpza3kvR1NNCnNreWNhcC9TTQpza3lkaXZlL0RSU1pHCnNreWRpdmVyL00Kc2t5ZGl2aW5nL00Kc2t5amFjay9KWkdTRFIKc2t5amFja2VyL00Kc2t5amFja2luZy9NCnNreWxhcmsvU0dNRApza3lsaWdodC9NUwpza3lsaW5lL1NNCnNreXJvY2tldC9HU01ECnNreXNjcmFwZXIvU00Kc2t5d2FyZC9TCnNreXdyaXRlci9TTQpza3l3cml0aW5nL00Kc2xhYi9NUwpzbGFiYmVkCnNsYWJiaW5nCnNsYWNrL1BYWlRHTUROUllTCnNsYWNrZW4vREcKc2xhY2tlci9NCnNsYWNrbmVzcy9NCnNsYWNrcy9NCnNsYWcvTVMKc2xhZ2dlZApzbGFnZ2luZwpzbGFnaGVhcC9TCnNsYWluCnNsYWtlL0dEUwpzbGFsb20vTVNERwpzbGFtL01TCnNsYW1tZWQKc2xhbW1lci9TTQpzbGFtbWluZwpzbGFuZGVyL01aR0RSUwpzbGFuZGVyZXIvTQpzbGFuZGVyb3VzCnNsYW5nL00Kc2xhbmd5L1JUCnNsYW50L01TREcKc2xhbnRpbmcvWQpzbGFudHdpc2UKc2xhcC9NUwpzbGFwZGFzaApzbGFwaGFwcHkKc2xhcHBlZApzbGFwcGVyL1MKc2xhcHBpbmcKc2xhcHN0aWNrL00Kc2xhc2gvTURSU1pHCnNsYXNoZXIvTQpzbGF0L01ER1MKc2xhdGUvU00Kc2xhdGhlci9TREcKc2xhdHRlZApzbGF0dGVybi9TTVkKc2xhdWdodGVyL01EUlpHUwpzbGF1Z2h0ZXJlci9NCnNsYXVnaHRlcmhvdXNlL01TCnNsYXZlL0RSU01aRwpzbGF2ZWhvbGRlci9NUwpzbGF2ZXIvTURHCnNsYXZlcnkvTQpzbGF2aXNoL1BZCnNsYXZpc2huZXNzL00Kc2xhdy9NCnNsYXkvRFJaR0pTCnNsYXllci9NCnNsYXlpbmcvTQpzbGVhemUvU00Kc2xlYXplYmFnL1MKc2xlYXplYmFsbC9TCnNsZWF6aWx5CnNsZWF6aW5lc3MvTQpzbGVhenkvUFJUCnNsZWQvTVMKc2xlZGRlZApzbGVkZGVyL1NNCnNsZWRkaW5nCnNsZWRnZS9EU01HCnNsZWRnZWhhbW1lci9HU01ECnNsZWVrL1NEUllUR1AKc2xlZWtuZXNzL00Kc2xlZXAvU01SWkcKc2xlZXBlci9NCnNsZWVwaWx5CnNsZWVwaW5lc3MvTQpzbGVlcGxlc3MvUFkKc2xlZXBsZXNzbmVzcy9NCnNsZWVwb3Zlci9TTQpzbGVlcHdhbGsvWkdTRFIKc2xlZXB3YWxrZXIvTQpzbGVlcHdhbGtpbmcvTQpzbGVlcHdlYXIvTQpzbGVlcHkvUlBUCnNsZWVweWhlYWQvTVMKc2xlZXQvU01ERwpzbGVldHkKc2xlZXZlL0RTTQpzbGVldmVsZXNzCnNsZWlnaC9NREcKc2xlaWdocwpzbGVpZ2h0L1NNCnNsZW5kZXIvUFJUCnNsZW5kZXJpemUvRFNHCnNsZW5kZXJuZXNzL00Kc2xlcHQKc2xldXRoL01HCnNsZXV0aHMKc2xldy9NREdTCnNsaWNlL0RSU01aRwpzbGljZXIvTQpzbGljay9TTURSWVpUR1AKc2xpY2tlci9NCnNsaWNrbmVzcy9NCnNsaWQKc2xpZGUvUlNNWkcKc2xpZGVyL00Kc2xpZGVzaG93L01TCnNsaWdodC9TTURSWVRHUApzbGlnaHRuZXNzL00Kc2xpbS9QUwpzbGltZS9NCnNsaW1pbmVzcy9NCnNsaW1saW5lCnNsaW1tZWQKc2xpbW1lci9TCnNsaW1tZXN0CnNsaW1taW5nL00Kc2xpbW5lc3MvTQpzbGlteS9SVFAKc2xpbmcvU01HCnNsaW5nYmFjay9TCnNsaW5nc2hvdC9TTQpzbGluay9TRwpzbGlua3kvUlQKc2xpcC9NUwpzbGlwY2FzZS9NUwpzbGlwY292ZXIvTVMKc2xpcGtub3QvTVMKc2xpcHBhZ2UvTVMKc2xpcHBlZApzbGlwcGVyL1NNCnNsaXBwZXJpbmVzcy9NCnNsaXBwZXJ5L1BSVApzbGlwcGluZwpzbGlwcHkKc2xpcHNob2QKc2xpcHN0cmVhbS9TTQpzbGlwd2F5L1NNCnNsaXQvTVMKc2xpdGhlci9TR01ECnNsaXRoZXJ5CnNsaXR0ZXIKc2xpdHRpbmcKc2xpdmVyL0dTTUQKc2xvYi9NUwpzbG9iYmVkCnNsb2JiZXIvTURTRwpzbG9iYmVyeQpzbG9iYmluZwpzbG9lL01TCnNsb2cvTVMKc2xvZ2FuL1NNCnNsb2dhbmVlcmluZwpzbG9nZ2VkCnNsb2dnaW5nCnNsb29wL1NNCnNsb3AvTURHUwpzbG9wZS9TTQpzbG9wcGVkCnNsb3BwaWx5CnNsb3BwaW5lc3MvTQpzbG9wcGluZwpzbG9wcHkvUFRSCnNsb3BzL00Kc2xvc2gvRFNHCnNsb3QvTVMKc2xvdGgvTQpzbG90aGZ1bC9ZUApzbG90aGZ1bG5lc3MvTQpzbG90aHMKc2xvdHRlZApzbG90dGluZwpzbG91Y2gvWkdNRFJTCnNsb3VjaGVyL00Kc2xvdWNoeS9UUgpzbG91Z2gvR01ECnNsb3VnaHMKc2xvdmVuL1NNWQpzbG92ZW5saW5lc3MvTQpzbG92ZW5seS9QVFIKc2xvdy9EUllUR1NQCnNsb3djb2FjaC9TCnNsb3dkb3duL1NNCnNsb3duZXNzL00Kc2xvd3Bva2UvU00Kc2x1ZGdlL00Kc2x1ZGd5L1JUCnNsdWUvTUdEUwpzbHVnL01TCnNsdWdnYXJkL01TCnNsdWdnZWQKc2x1Z2dlci9TTQpzbHVnZ2luZwpzbHVnZ2lzaC9QWQpzbHVnZ2lzaG5lc3MvTQpzbHVpY2UvRFNNRwpzbHVtL01TCnNsdW1iZXIvR1NNRApzbHVtYmVyb3VzCnNsdW1kb2cvU00Kc2x1bWxvcmQvTVMKc2x1bW1lZApzbHVtbWVyCnNsdW1taW5nCnNsdW1teS9SVApzbHVtcC9TTURHCnNsdW5nCnNsdW5rCnNsdXIvTVMKc2x1cnAvU01ERwpzbHVycmVkCnNsdXJyaW5nCnNsdXJyeS9NCnNsdXNoL00Kc2x1c2hpbmVzcy9NCnNsdXNoeS9SUFQKc2x1dC9NUwpzbHV0dGlzaApzbHV0dHkvUlQKc2x5L1RSWQpzbHluZXNzL00Kc21hY2svU01EUlpHCnNtYWNrZXIvTQpzbWFsbC9TTVJUUApzbWFsbGhvbGRlci9TCnNtYWxsaG9sZGluZy9TCnNtYWxsaXNoCnNtYWxsbmVzcy9NCnNtYWxscG94L00Kc21hcm15L1JUCnNtYXJ0L1NNRE5SWVhUR1AKc21hcnRlbi9ERwpzbWFydG5lc3MvTQpzbWFydHBob25lL1NNCnNtYXJ0cy9NCnNtYXJ0d2F0Y2gvTVMKc21hcnR5L1NNCnNtYXJ0eXBhbnRzL00Kc21hc2gvTURSU1pHCnNtYXNoZXIvTQpzbWFzaHVwL1NNCnNtYXR0ZXJpbmcvTVMKc21lYXIvU01ERwpzbWVhcnkvUlQKc21lbGwvU01ERwpzbWVsbGluZXNzL00Kc21lbGx5L1JQVApzbWVsdC9TTURSWkcKc21lbHRlci9NCnNtaWRnZW4vTVMKc21pbGF4L00Kc21pbGUvRFNNRwpzbWlsZXkvU00Kc21pbGluZy9ZCnNtaXJjaC9HTURTCnNtaXJrL1NNREcKc21pdGUvU0cKc21pdGgvTQpzbWl0aGVyZWVucy9NCnNtaXRocwpzbWl0aHkvU00Kc21pdHRlbgpzbW9jay9TTURHCnNtb2NraW5nL00Kc21vZy9NUwpzbW9nZ3kvUlQKc21va2UvRFJTTVpHCnNtb2tlaG91c2UvTVMKc21va2VsZXNzCnNtb2tlci9NCnNtb2tlc2NyZWVuL1NNCnNtb2tlc3RhY2svU00Kc21va2V5CnNtb2tpbmVzcy9NCnNtb2tpbmcvTQpzbW9reS9SVFAKc21vbGRlci9TR01ECnNtb29jaC9NRFNHCnNtb29jaHkKc21vb3RoL1BEUllURwpzbW9vdGhpZS9NUwpzbW9vdGhuZXNzL00Kc21vb3RocwpzbW9yZ2FzYm9yZC9TTQpzbW90ZQpzbW90aGVyL0dTTUQKc211ZGdlL0RTTUcKc211ZGd5L1RSCnNtdWcvWVAKc211Z2dlcgpzbXVnZ2VzdApzbXVnZ2xlL1pHRFJTCnNtdWdnbGVyL00Kc211Z2dsaW5nL00Kc211Z25lc3MvTQpzbXVyZi9TCnNtdXQvTVMKc211dHRpbmVzcy9NCnNtdXR0eS9UUlAKc25hY2svU01ERwpzbmFmZmxlL0RTTUcKc25hZnUvU00Kc25hZy9NUwpzbmFnZ2VkCnNuYWdnaW5nCnNuYWlsL1NNREcKc25ha2UvRFNNRwpzbmFrZWJpdGUvTVMKc25ha2VsaWtlCnNuYWtlc2tpbgpzbmFreS9SVApzbmFwJ3MKc25hcC9VUwpzbmFwZHJhZ29uL1NNCnNuYXBwZWQvVQpzbmFwcGVyL01TCnNuYXBwaWx5CnNuYXBwaW5lc3MvTQpzbmFwcGluZy9VCnNuYXBwaXNoL1lQCnNuYXBwaXNobmVzcy9NCnNuYXBweS9UUlAKc25hcHNob3QvU00Kc25hcmUvRFNNRwpzbmFyZi9TREcKc25hcmsvUwpzbmFya3kvVFIKc25hcmwncwpzbmFybC9VU0RHCnNuYXJsaW5nL1kKc25hcmx5L1RSCnNuYXRjaC9aR01EUlMKc25hdGNoZXIvTQpzbmF6emlseQpzbmF6enkvVFIKc25lYWsvU01EUlpHCnNuZWFrZXIvTQpzbmVha2lseQpzbmVha2luZXNzL00Kc25lYWtpbmcvWQpzbmVha3kvVFJQCnNuZWVyL1NKTURHCnNuZWVyaW5nL1kKc25lZXplL0RTTUcKc25pY2svU0RSWkcKc25pY2tlci9NREcKc25pZGUvUllUCnNuaWZmL1NNRFJaRwpzbmlmZmVyL00Kc25pZmZsZS9EU01HCnNuaWZmeS9SVApzbmlmdGVyL1NNCnNuaXAvTURSWkdTCnNuaXBlL1NNCnNuaXBlci9NCnNuaXBwZWQKc25pcHBldC9TTQpzbmlwcGluZwpzbmlwcHkvUlQKc25pcHMvTQpzbml0L01TCnNuaXRjaC9NRFNHCnNuaXZlbC9TTURSWkcKc25pdmVsZXIvTQpzbm9iL01TCnNub2JiZXJ5L00Kc25vYmJpc2gvUFkKc25vYmJpc2huZXNzL00Kc25vYmJ5L1JUCnNub2cvUwpzbm9nZ2VkCnNub2dnaW5nCnNub29kL1NNCnNub29rZXIvTURTRwpzbm9vcC9TTURSWkcKc25vb3Blci9NCnNub29weS9UUgpzbm9vdC9TTQpzbm9vdGlseQpzbm9vdGluZXNzL00Kc25vb3R5L1BUUgpzbm9vemUvRFNNRwpzbm9yZS9EUlNNWkcKc25vcmVyL00Kc25vcmtlbC9aR01EUlMKc25vcmtlbGVyL00Kc25vcmtlbGluZy9NCnNub3J0L1NNRFJaRwpzbm9ydGVyL00Kc25vdC9NUwpzbm90dGlseQpzbm90dGluZXNzL00Kc25vdHR5L1RQUgpzbm91dC9TTQpzbm93L01ER1MKc25vd2JhbGwvR1NNRApzbm93YmFuay9TTQpzbm93YmlyZC9TTQpzbm93Ymxvd2VyL01TCnNub3dib2FyZC9aR01EUlMKc25vd2JvYXJkZXIvTQpzbm93Ym9hcmRpbmcvTQpzbm93Ym91bmQKc25vd2RyaWZ0L1NNCnNub3dkcm9wL1NNCnNub3dmYWxsL1NNCnNub3dmaWVsZC9TTQpzbm93Zmxha2UvU00Kc25vd2luZXNzL00Kc25vd2xpbmUKc25vd21hbi9NCnNub3dtZW4Kc25vd21vYmlsZS9EU01HCnNub3dwbG93L1NHTUQKc25vd3NoZWQKc25vd3Nob2UvU00Kc25vd3Nob2VpbmcKc25vd3N0b3JtL1NNCnNub3dzdWl0L1NNCnNub3d5L1BSVApzbnViL01TCnNudWJiZWQKc251YmJpbmcKc251ZmYvU01EUllaRwpzbnVmZmJveC9NUwpzbnVmZmVyL00Kc251ZmZsZS9NR0RTCnNudWcvTVlTUApzbnVnZ2VkCnNudWdnZXIKc251Z2dlc3QKc251Z2dpbmcKc251Z2dsZS9NR0RTCnNudWduZXNzL00Kc28Kc29hay9NREdTSgpzb2FraW5nL00Kc29hcC9NREdTCnNvYXBib3gvTVMKc29hcGluZXNzL00Kc29hcHN0b25lL00Kc29hcHN1ZHMvTQpzb2FweS9SUFQKc29hci9NREdTCnNvYi9TTQpzb2JiZWQKc29iYmluZy9ZCnNvYmVyL1NEUllQVEcKc29iZXJuZXNzL00Kc29icmlldHkvSU0Kc29icmlxdWV0L1NNCnNvYwpzb2NjZXIvTQpzb2NpYWJpbGl0eS9NCnNvY2lhYmxlL1NNCnNvY2lhYmx5CnNvY2lhbC9TTVkKc29jaWFsaXNtL00Kc29jaWFsaXN0L1NNCnNvY2lhbGlzdGljCnNvY2lhbGl0ZS9TTQpzb2NpYWxpemF0aW9uL00Kc29jaWFsaXplL0RTRwpzb2NpZXRhbApzb2NpZXR5L1NNCnNvY2lvZWNvbm9taWMKc29jaW9lY29ub21pY2FsbHkKc29jaW9sb2dpY2FsL1kKc29jaW9sb2dpc3QvU00Kc29jaW9sb2d5L00Kc29jaW9wYXRoL00Kc29jaW9wYXRocwpzb2Npb3BvbGl0aWNhbApzb2NrL01ER1MKc29ja2V0L1NNCnNvY2tleWUvU00Kc29kL1NNCnNvZGEvTVMKc29kZGVkCnNvZGRlbi9ZCnNvZGRpbmcKc29kaXVtL00Kc29kb21pdGUvTVMKc29kb21pemUvR0RTCnNvZG9teS9NCnNvZXZlcgpzb2ZhL01TCnNvZnQvTlJZWFRQCnNvZnRiYWNrCnNvZnRiYWxsL01TCnNvZnRib3VuZApzb2Z0Y292ZXIKc29mdGVuL0RSWkcKc29mdGVuZXIvTQpzb2Z0aGVhcnRlZApzb2Z0bmVzcy9NCnNvZnR3YXJlL00Kc29mdHdvb2QvU00Kc29mdHkvU00Kc29nZ2lseQpzb2dnaW5lc3MvTQpzb2dneS9SVFAKc29pZ25lCnNvaWduZWUKc29pbC9NREdTCnNvaWxlZC9VCnNvaXJlZS9TTQpzb2pvdXJuL1pHTURSUwpzb2pvdXJuZXIvTQpzb2wvU00Kc29sYWNlL0RTTUcKc29sYXIKc29sYXJpYQpzb2xhcml1bS9NCnNvbGQKc29sZGVyL1pHU01EUgpzb2xkZXJlci9NCnNvbGRpZXIvTURZU0cKc29sZGllcnkvTQpzb2xlL0ZTREdNCnNvbGVjaXNtL1NNCnNvbGVseQpzb2xlbW4vUFRSWQpzb2xlbW5lc3MvTQpzb2xlbW5pZnkvRFNHCnNvbGVtbml0eS9TTQpzb2xlbW5pemF0aW9uL00Kc29sZW1uaXplL0RTRwpzb2xlbW5uZXNzL00Kc29sZW5vaWQvTVMKc29saWNpdC9HRFMKc29saWNpdGF0aW9uL1NNCnNvbGljaXRlZC9VCnNvbGljaXRvci9TTQpzb2xpY2l0b3VzL1BZCnNvbGljaXRvdXNuZXNzL00Kc29saWNpdHVkZS9NCnNvbGlkL1BTTVJZVApzb2xpZGFyaXR5L00Kc29saWRpCnNvbGlkaWZpY2F0aW9uL00Kc29saWRpZnkvRFNORwpzb2xpZGl0eS9NCnNvbGlkbmVzcy9NCnNvbGlkdXMvTQpzb2xpbG9xdWllcwpzb2xpbG9xdWl6ZS9EU0cKc29saWxvcXV5L00Kc29saXBzaXNtL00Kc29saXBzaXN0aWMKc29saXRhaXJlL01TCnNvbGl0YXJpbmVzcy9NCnNvbGl0YXJ5L1NNUApzb2xpdHVkZS9NCnNvbG8vTURHUwpzb2xvaXN0L01TCnNvbHN0aWNlL01TCnNvbHViaWxpdHkvSU0Kc29sdWJsZS9NUwpzb2x1dGUncwpzb2x1dGUvQVhOCnNvbHV0ZXMKc29sdXRpb24ncy9BRQpzb2x2YWJsZS9JVQpzb2x2ZS9FQURTRwpzb2x2ZWQvVQpzb2x2ZW5jeS9JTQpzb2x2ZW50L0lNUwpzb2x2ZXIvU00Kc29tYXRpYwpzb21iZXIvUFkKc29tYmVybmVzcy9NCnNvbWJyZXJvL01TCnNvbWUKc29tZWJvZHkvU00Kc29tZWRheQpzb21laG93CnNvbWVvbmUvTVMKc29tZXBsYWNlCnNvbWVyc2F1bHQvTURHUwpzb21lcnNldC9TTQpzb21lcnNldHRlZApzb21lcnNldHRpbmcKc29tZXRoaW5nL1NNCnNvbWV0aW1lL1MKc29tZXdheS9TCnNvbWV3aGF0L1MKc29tZXdoZXJlCnNvbW5hbWJ1bGlzbS9NCnNvbW5hbWJ1bGlzdC9TTQpzb21ub2xlbmNlL00Kc29tbm9sZW50CnNvbi9TTQpzb25hci9TTQpzb25hdGEvU00Kc29uYXRpbmEvU00Kc29uZy9NUwpzb25nYmlyZC9TTQpzb25nYm9vay9TTQpzb25nZmVzdC9TTQpzb25nc3Rlci9NUwpzb25nc3RyZXNzL01TCnNvbmd3cml0ZXIvU00Kc29uZ3dyaXRpbmcKc29uaWMKc29ubmV0L1NNCnNvbm55L1NNCnNvbm9ncmFtL1NNCnNvbm9yaXR5L00Kc29ub3JvdXMvWVAKc29ub3JvdXNuZXNzL00Kc29uc29mYml0Y2hlcwpzb29uL1JUCnNvb3QvTQpzb290aC9NRFJTWkcKc29vdGhlCnNvb3RoZXIvTQpzb290aGluZy9ZCnNvb3Roc2F5ZXIvTVMKc29vdGhzYXlpbmcvTQpzb290eS9SVApzb3AvU00Kc29waApzb3BoaXNtL00Kc29waGlzdC9NUwpzb3BoaXN0aWMKc29waGlzdGljYWwKc29waGlzdGljYXRlL0RTTUdOCnNvcGhpc3RpY2F0ZWQvVQpzb3BoaXN0aWNhdGlvbi9NCnNvcGhpc3RyeS9TTQpzb3Bob21vcmUvTVMKc29waG9tb3JpYwpzb3BvcmlmaWMvTVMKc29wb3JpZmljYWxseQpzb3BwZWQKc29wcGluZwpzb3BweS9SVApzb3ByYW5vL01TCnNvcmJldC9TTQpzb3JjZXJlci9NUwpzb3JjZXJlc3MvTVMKc29yY2VyeS9NCnNvcmRpZC9QWQpzb3JkaWRuZXNzL00Kc29yZS9NWVRSU1AKc29yZWhlYWQvTVMKc29yZW5lc3MvTQpzb3JnaHVtL00Kc29yb3JpdHkvU00Kc29ycmVsL1NNCnNvcnJpbHkKc29ycmluZXNzL00Kc29ycm93L1NNREcKc29ycm93ZnVsL1lQCnNvcnJvd2Z1bG5lc3MvTQpzb3JyeS9SVFAKc29ydC9GQVNHRE0Kc29ydGEKc29ydGVkL1UKc29ydGVyL1NNCnNvcnRpZS9EU00Kc29ydGllaW5nCnNvdC9TTQpzb3R0aXNoCnNvdSd3ZXN0ZXIKc291L1NNSApzb3VmZmxlL1NNCnNvdWdoL01ERwpzb3VnaHMKc291Z2h0L1UKc291ay9TCnNvdWwvTVMKc291bGZ1bC9ZUApzb3VsZnVsbmVzcy9NCnNvdWxsZXNzL1lQCnNvdWxtYXRlL1NNCnNvdW5kL0pQU01EUllaVEcKc291bmRhbGlrZS9TCnNvdW5kYmFyL1MKc291bmRiaXRlL1MKc291bmRib2FyZC9NUwpzb3VuZGNoZWNrL1MKc291bmRlci9NCnNvdW5kaW5nL00Kc291bmRsZXNzL1kKc291bmRuZXNzL1VNCnNvdW5kcHJvb2YvR0RTCnNvdW5kcHJvb2ZpbmcvTQpzb3VuZHNjYXBlL1MKc291bmR0cmFjay9TTQpzb3VwL01ER1MKc291cGNvbi9NUwpzb3VweS9SVApzb3VyL01EUllUR1NQCnNvdXJjZS9BRFNNRwpzb3VyZG91Z2gvTQpzb3VyZG91Z2hzCnNvdXJpc2gKc291cm5lc3MvTQpzb3VycHVzcy9NUwpzb3VzYXBob25lL01TCnNvdXNlL0RTTUcKc291dGgvTQpzb3V0aGJvdW5kCnNvdXRoZWFzdC9aTVIKc291dGhlYXN0ZXIvTVkKc291dGhlYXN0ZXJuCnNvdXRoZWFzdHdhcmQvUwpzb3V0aGVybHkvU00Kc291dGhlcm4vU1pNUgpzb3V0aGVybmVyL00Kc291dGhlcm5tb3N0CnNvdXRocGF3L1NNCnNvdXRod2FyZC9NUwpzb3V0aHdlc3QvWk1SCnNvdXRod2VzdGVyL01ZCnNvdXRod2VzdGVybgpzb3V0aHdlc3R3YXJkL1MKc291dmVuaXIvU00Kc292ZXJlaWduL1NNCnNvdmVyZWlnbnR5L00Kc292aWV0L1NNCnNvdydzCnNvdy9BU0dECnNvd2VyL1NNCnNvd24vQQpzb3kvTQpzb3liZWFuL01TCnNvenpsZWQKc3BhL1NNCnNwYWNlL0RSU01aRwpzcGFjZWNyYWZ0L01TCnNwYWNlZmxpZ2h0L01TCnNwYWNlbWFuL00Kc3BhY2VtZW4Kc3BhY2Vwb3J0L1NNCnNwYWNlci9NCnNwYWNlc2hpcC9TTQpzcGFjZXN1aXQvU00Kc3BhY2V3YWxrL1NHTUQKc3BhY2V3b21hbi9NCnNwYWNld29tZW4Kc3BhY2V5CnNwYWNpYWwKc3BhY2llcgpzcGFjaWVzdApzcGFjaW5lc3MvTQpzcGFjaW5nL00Kc3BhY2lvdXMvWVAKc3BhY2lvdXNuZXNzL00Kc3BhZGUvRFNNRwpzcGFkZWZ1bC9NUwpzcGFkZXdvcmsvTQpzcGFkaWNlcwpzcGFkaXgvTQpzcGFnaGV0dGkvTQpzcGFrZQpzcGFtL01TCnNwYW1tZWQKc3BhbW1lci9TTQpzcGFtbWluZwpzcGFuL01TCnNwYW5kZXgvTQpzcGFuZ2xlL0RTTUcKc3BhbmdseQpzcGFuaWVsL1NNCnNwYW5rL1NNREdKCnNwYW5raW5nL00Kc3Bhbm5lZApzcGFubmVyL1NNCnNwYW5uaW5nCnNwYXIvTVMKc3BhcmUvRFJTTVlUR1AKc3BhcmVuZXNzL00Kc3BhcmVyaWJzL00Kc3BhcmluZy9VWQpzcGFyay9TTURZRwpzcGFya2xlL0RSU01aRwpzcGFya2xlci9NCnNwYXJreS9SVApzcGFycmVkCnNwYXJyaW5nCnNwYXJyb3cvU00Kc3BhcnJvd2hhd2svUwpzcGFyc2UvUllUUApzcGFyc2VuZXNzL00Kc3BhcnNpdHkvTQpzcGFydGFuCnNwYXNtL1NNCnNwYXNtb2RpYwpzcGFzbW9kaWNhbGx5CnNwYXN0aWMvU00Kc3BhdC9NUwpzcGF0ZS9TTQpzcGF0aGUvU00Kc3BhdGlhbC9ZCnNwYXR0ZWQKc3BhdHRlci9TR01ECnNwYXR0aW5nCnNwYXR1bGEvU00Kc3BhdmluL01ECnNwYXduL1NNREcKc3BheS9ER1MKc3BlYWsvU1JaR0oKc3BlYWtlYXN5L1NNCnNwZWFrZXIvTQpzcGVha2VycGhvbmUvUwpzcGVhci9TTURHCnNwZWFyZmlzaC9HTURTCnNwZWFyZ3VuCnNwZWFyaGVhZC9HTURTCnNwZWFybWludC9NCnNwZWMvTVMKc3BlY2lhbC9TTVkKc3BlY2lhbGlzbS9TCnNwZWNpYWxpc3QvTVMKc3BlY2lhbGl6YXRpb24vTVMKc3BlY2lhbGl6ZS9HRFMKc3BlY2lhbHR5L1NNCnNwZWNpZS9TTQpzcGVjaWVzL00Kc3BlY2lmCnNwZWNpZmlhYmxlCnNwZWNpZmljL01TCnNwZWNpZmljYWxseQpzcGVjaWZpY2F0aW9uL00Kc3BlY2lmaWNpdHkvTQpzcGVjaWZpZWQvVQpzcGVjaWZ5L1hOWkRSU0cKc3BlY2ltZW4vU00Kc3BlY2lvdXMvWVAKc3BlY2lvdXNuZXNzL00Kc3BlY2svU01ERwpzcGVja2xlL01HRFMKc3BlY3MvTQpzcGVjdGFjbGUvU00Kc3BlY3RhY2xlcy9NCnNwZWN0YWN1bGFyL01ZUwpzcGVjdGF0ZS9EU0cKc3BlY3RhdG9yL1NNCnNwZWN0ZXIvQU1TCnNwZWN0cmEKc3BlY3RyYWwKc3BlY3Ryb21ldGVyL01TCnNwZWN0cm9zY29wZS9NUwpzcGVjdHJvc2NvcGljCnNwZWN0cm9zY29weS9NCnNwZWN0cnVtL00Kc3BlY3VsYXRlL0RTWEdOVgpzcGVjdWxhdGlvbi9NCnNwZWN1bGF0aXZlL1kKc3BlY3VsYXRvci9NUwpzcGVkCnNwZWVjaC9NUwpzcGVlY2hpZnkvRFNHCnNwZWVjaGxlc3MvWVAKc3BlZWNobGVzc25lc3MvTQpzcGVlY2h3cml0ZXIvUwpzcGVlZC9TTVJaRwpzcGVlZGJvYXQvU00Kc3BlZWRlci9NCnNwZWVkaWx5CnNwZWVkaW5lc3MvTQpzcGVlZGluZy9NCnNwZWVkb21ldGVyL01TCnNwZWVkc3Rlci9TTQpzcGVlZHVwL01TCnNwZWVkd2F5L1NNCnNwZWVkd2VsbC9NCnNwZWVkeS9UUFIKc3BlbGVvbG9naWNhbApzcGVsZW9sb2dpc3QvTVMKc3BlbGVvbG9neS9NCnNwZWxsL0pTTURSWkcKc3BlbGxiaW5kL1pHUlMKc3BlbGxiaW5kZXIvTQpzcGVsbGJvdW5kCnNwZWxsY2hlY2svTURSWkdTCnNwZWxsY2hlY2tlci9NCnNwZWxsZG93bi9TTQpzcGVsbGVyL00Kc3BlbGxpbmcvTQpzcGVsdW5rZXIvTVMKc3BlbHVua2luZy9NCnNwZW5kL0JTUlpHCnNwZW5kZXIvTQpzcGVuZGluZy9NCnNwZW5kdGhyaWZ0L01TCnNwZW50L1UKc3Blcm0vU00Kc3Blcm1hdG96b2EKc3Blcm1hdG96b29uL00Kc3Blcm1pY2lkYWwKc3Blcm1pY2lkZS9NUwpzcGV3L01EUlpHUwpzcGV3ZXIvTQpzcGhhZ251bS9NUwpzcGhlcmUvU00Kc3BoZXJpY2FsL1kKc3BoZXJvaWQvU00Kc3BoZXJvaWRhbApzcGhpbmN0ZXIvTVMKc3BoaW54L01TCnNwaWMvUwpzcGljZS9EU01HCnNwaWNpbHkKc3BpY2luZXNzL00Kc3BpY3VsZS9NUwpzcGljeS9QUlQKc3BpZGVyL1NNCnNwaWRlcndlYi9NUwpzcGlkZXJ5CnNwaWVsL1NNREcKc3BpZmYvU0RHCnNwaWZmeS9UUgpzcGlnb3QvU00Kc3Bpa2UvRFNNRwpzcGlraW5lc3MvTQpzcGlreS9SUFQKc3BpbGwvU01ERwpzcGlsbGFnZS9NUwpzcGlsbG92ZXIvU00Kc3BpbGx3YXkvTVMKc3Bpbi9NUwpzcGluYWNoL00Kc3BpbmFsL1NNWQpzcGluZGxlL01HRFMKc3BpbmRseS9UUgpzcGluZS9TTQpzcGluZWxlc3MvWVAKc3BpbmV0L1NNCnNwaW5uYWtlci9TTQpzcGlubmVyL01TCnNwaW5uZXJldC9TTQpzcGlubmV5L1MKc3Bpbm5pbmcvTQpzcGluc3Rlci9TTQpzcGluc3Rlcmhvb2QvTQpzcGluc3RlcmlzaApzcGlueS9SVApzcGlyYWNsZS9TTQpzcGlyYWwvU0dNRFkKc3BpcmUncwpzcGlyZS9JRkFTCnNwaXJlYS9TTQpzcGlyaXQncwpzcGlyaXQvSVNHRApzcGlyaXRlZC9ZCnNwaXJpdGxlc3MKc3Bpcml0dWFsL01ZUwpzcGlyaXR1YWxpc20vTQpzcGlyaXR1YWxpc3QvTVMKc3Bpcml0dWFsaXN0aWMKc3Bpcml0dWFsaXR5L00Kc3Bpcml0dW91cwpzcGlyb2NoZXRlL1NNCnNwaXJ5CnNwaXQvTURHUwpzcGl0YmFsbC9TTQpzcGl0ZS9BU00Kc3BpdGVmdWwvUFkKc3BpdGVmdWxsZXIKc3BpdGVmdWxsZXN0CnNwaXRlZnVsbmVzcy9NCnNwaXRmaXJlL1NNCnNwaXR0ZWQKc3BpdHRpbmcKc3BpdHRsZS9NCnNwaXR0b29uL01TCnNwaXYvUwpzcGxhc2gvR01EUwpzcGxhc2hkb3duL01TCnNwbGFzaGlseQpzcGxhc2hpbmVzcy9NCnNwbGFzaHkvUlRQCnNwbGF0L1NNCnNwbGF0dGVkCnNwbGF0dGVyL0dTTUQKc3BsYXR0aW5nCnNwbGF5L1NNREcKc3BsYXlmZWV0CnNwbGF5Zm9vdC9NRApzcGxlZW4vU00Kc3BsZW5kaWQvUllUCnNwbGVuZG9yL01TCnNwbGVuZG9yb3VzCnNwbGVuZWN0b215CnNwbGVuZXRpYwpzcGxpY2UvRFJTTVpHCnNwbGljZXIvTQpzcGxpZmYvUwpzcGxpbmUvUwpzcGxpbnQvU1pHTURSCnNwbGludGVyL01ERwpzcGxpbnRlcnkKc3BsaXQvU00Kc3BsaXR0aW5nL01TCnNwbG9kZ2UvUwpzcGxvc2gvRFNHCnNwbG90Y2gvTURTRwpzcGxvdGNoeS9UUgpzcGx1cmdlL0RTTUcKc3BsdXR0ZXIvR01EUwpzcG9pbCdzCnNwb2lsL0NTRFJaRwpzcG9pbGFnZS9NCnNwb2lsZWQvVQpzcG9pbGVyL0NNCnNwb2lsc3BvcnQvTVMKc3Bva2UvU00Kc3Bva2VuL1UKc3Bva2VzbWFuL00Kc3Bva2VzbWVuCnNwb2tlc3Blb3BsZQpzcG9rZXNwZXJzb24vTVMKc3Bva2Vzd29tYW4vTQpzcG9rZXN3b21lbgpzcG9saWF0aW9uL0NNCnNwb25nZS9EUlNNWkcKc3BvbmdlY2FrZS9NCnNwb25nZXIvTQpzcG9uZ2luZXNzL00Kc3Bvbmd5L1JQVApzcG9uc29yL01ER1MKc3BvbnNvcnNoaXAvTQpzcG9udGFuZWl0eS9NCnNwb250YW5lb3VzL1kKc3Bvb2YvU01ERwpzcG9vay9TTURHCnNwb29raW5lc3MvTQpzcG9va3kvUlBUCnNwb29sL1NNREcKc3Bvb24vU01ERwpzcG9vbmJpbGwvTVMKc3Bvb25lcmlzbS9NUwpzcG9vbmZ1bC9TTQpzcG9vci9TTURHCnNwb3JhZGljCnNwb3JhZGljYWxseQpzcG9yZS9EU01HCnNwb3JyYW4vUwpzcG9ydC9TTURHVgpzcG9ydGluZXNzL00Kc3BvcnRpbmcvWQpzcG9ydGl2ZS9ZCnNwb3J0c2Nhc3QvTVJaR1MKc3BvcnRzY2FzdGVyL00Kc3BvcnRzbWFuL00Kc3BvcnRzbWFubGlrZS9VCnNwb3J0c21hbnNoaXAvTQpzcG9ydHNtZW4Kc3BvcnRzcGVvcGxlCnNwb3J0c3BlcnNvbgpzcG9ydHN3ZWFyL00Kc3BvcnRzd29tYW4vTQpzcG9ydHN3b21lbgpzcG9ydHN3cml0ZXIvU00Kc3BvcnR5L1RQUgpzcG90L0NNUwpzcG90bGVzcy9QWQpzcG90bGVzc25lc3MvTQpzcG90bGlnaHQvR1NNRApzcG90bGl0CnNwb3R0ZWQKc3BvdHRlci9NUwpzcG90dGlseQpzcG90dGluZXNzL00Kc3BvdHRpbmcKc3BvdHR5L1RQUgpzcG91c2FsL01TCnNwb3VzZS9TTQpzcG91dC9TTURHCnNwcmFpbi9HU01ECnNwcmFuZwpzcHJhdC9TTQpzcHJhd2wvR1NNRApzcHJheSdzCnNwcmF5L0FTREcKc3ByYXllci9NUwpzcHJlYWQvWkdCU01SCnNwcmVhZGVhZ2xlZApzcHJlYWRlci9NCnNwcmVhZHNoZWV0L01TCnNwcmVlL0RTTQpzcHJlZWluZwpzcHJpZy9TTQpzcHJpZ2dlZApzcHJpZ2h0bGluZXNzL00Kc3ByaWdodGx5L1JUUApzcHJpbmcvR1NNCnNwcmluZ2JvYXJkL01TCnNwcmluZ2Jvay9NUwpzcHJpbmdpbHkKc3ByaW5naW5lc3MvTQpzcHJpbmdsaWtlCnNwcmluZ3RpbWUvTQpzcHJpbmd5L1JQVApzcHJpbmtsZS9EUlNKTVpHCnNwcmlua2xlci9NCnNwcmlua2xpbmcvTQpzcHJpbnQvWkdTTURSCnNwcmludGVyL00Kc3ByaXRlL1NNCnNwcml0ei9aR01EUlMKc3ByaXR6ZXIvTQpzcHJvY2tldC9NUwpzcHJvZy9TCnNwcm91dC9HU01ECnNwcnVjZS9EUlNQTVlURwpzcHJ1Y2VuZXNzL00Kc3BydW5nCnNwcnkvUllUCnNwcnluZXNzL00Kc3B1ZC9NUwpzcHVtZS9EU01HCnNwdW1vbmkvTQpzcHVteQpzcHVuCnNwdW5rL1NNCnNwdW5reS9UUgpzcHVyL01TCnNwdXJnZS9NCnNwdXJpb3VzL1BZCnNwdXJpb3VzbmVzcy9NCnNwdXJuL1NERwpzcHVycmVkCnNwdXJyaW5nCnNwdXJ0L1NNREcKc3B1dGEKc3B1dG5pay9NUwpzcHV0dGVyL01ER1MKc3B1dHVtL00Kc3B5L0dEU00Kc3B5Z2xhc3MvTVMKc3B5bWFzdGVyL1MKc3B5d2FyZS9NCnNxCnNxcQpzcXVhYi9TTQpzcXVhYmJsZS9NWkdEUlMKc3F1YWJibGVyL00Kc3F1YWQvU00Kc3F1YWRyb24vTVMKc3F1YWxpZC9QVFJZCnNxdWFsaWRuZXNzL00Kc3F1YWxsL1NHTUQKc3F1YWxseQpzcXVhbG9yL00Kc3F1YW1vdXMKc3F1YW5kZXIvR0RTCnNxdWFyZS9QRFJTTVlURwpzcXVhcmVuZXNzL00Kc3F1YXJpc2gKc3F1YXNoL0dNRFMKc3F1YXNoeS9UUgpzcXVhdC9TTVAKc3F1YXRuZXNzL00Kc3F1YXR0ZWQKc3F1YXR0ZXIvTVMKc3F1YXR0ZXN0CnNxdWF0dGluZwpzcXVhdy9TTQpzcXVhd2svU1pHTURSCnNxdWF3a2VyL00Kc3F1ZWFrL1NaR01EUgpzcXVlYWtlci9NCnNxdWVha2lseQpzcXVlYWtpbmVzcy9NCnNxdWVha3kvVFJQCnNxdWVhbC9TWkdNRFIKc3F1ZWFsZXIvTQpzcXVlYW1pc2gvUFkKc3F1ZWFtaXNobmVzcy9NCnNxdWVlZ2VlL01EUwpzcXVlZWdlZWluZwpzcXVlZXplL0JNWkdEUlMKc3F1ZWV6ZWJveC9TCnNxdWVlemVyL00Kc3F1ZWxjaC9HTURTCnNxdWVsY2h5CnNxdWliL1NNCnNxdWlkL1NNCnNxdWlkZ3kKc3F1aWZmeQpzcXVpZ2dsZS9EU01HCnNxdWlnZ2x5CnNxdWludC9TVEdNRFIKc3F1aXJlL0RTTUcKc3F1aXJtL1NHTUQKc3F1aXJteS9SVApzcXVpcnJlbC9TR01ECnNxdWlydC9TR01ECnNxdWlzaC9HTURTCnNxdWlzaHkvUlQKc3JpcmFjaGEKc3NoCnN0CnN0YWIvTVlTCnN0YWJiZWQKc3RhYmJlci9NUwpzdGFiYmluZy9NUwpzdGFiaWxpdHkvSU0Kc3RhYmlsaXphdGlvbi9DTQpzdGFiaWxpemUvQ0RTRwpzdGFiaWxpemVyL01TCnN0YWJsZS9EUlNNVEcKc3RhYmxlbWFuL00Kc3RhYmxlbWF0ZS9TCnN0YWJsZW1lbgpzdGFibHkvVQpzdGFjY2F0by9NUwpzdGFjay9TTURHCnN0YWRpdW0vTVMKc3RhZmYncwpzdGFmZi9BU0RHCnN0YWZmZXIvTVMKc3RhZmZpbmcvTQpzdGFnL01ER1NKCnN0YWdlL1NNCnN0YWdlY29hY2gvTVMKc3RhZ2VjcmFmdC9NCnN0YWdlaGFuZC9NUwpzdGFnZXN0cnVjawpzdGFnZmxhdGlvbi9NCnN0YWdnZXIvTURHUwpzdGFnZ2VyaW5nL1kKc3RhZ2luZy9NCnN0YWduYW5jeS9NCnN0YWduYW50L1kKc3RhZ25hdGUvRFNHTgpzdGFnbmF0aW9uL00Kc3RhZ3kvUlQKc3RhaWQvUFJZVApzdGFpZG5lc3MvTQpzdGFpbi9TTURHCnN0YWluZWQvVQpzdGFpbmxlc3MvTQpzdGFpci9TTQpzdGFpcmNhc2UvTVMKc3RhaXJ3YXkvTVMKc3RhaXJ3ZWxsL1NNCnN0YWtlL0RTTUcKc3Rha2Vob2xkZXIvTVMKc3Rha2VvdXQvU00Kc3RhbGFjdGl0ZS9NUwpzdGFsYWdtaXRlL01TCnN0YWxlL0RSU1RHUApzdGFsZW1hdGUvRFNNRwpzdGFsZW5lc3MvTQpzdGFsay9TTURSSlpHCnN0YWxrZXIvTQpzdGFsa2luZy9NCnN0YWxsJ3MKc3RhbGwvSVNERwpzdGFsbGhvbGRlci9TCnN0YWxsaW9uL01TCnN0YWx3YXJ0L01ZUwpzdGFtZW4vU00Kc3RhbWluYS9NCnN0YW1tZXIvWkdNRFJTCnN0YW1tZXJlci9NCnN0YW1tZXJpbmcvWQpzdGFtcC9TTURSWkcKc3RhbXBlZGUvTUdEUwpzdGFtcGVyL00Kc3RhbmNlL0lTTQpzdGFuY2gvVEdEUlMKc3RhbmNoaW9uL1NNCnN0YW5kL1NNUkpaRwpzdGFuZGFsb25lCnN0YW5kYXJkL01TCnN0YW5kYXJkaXphdGlvbi9NCnN0YW5kYXJkaXplL0RTRwpzdGFuZGJ5L00Kc3RhbmRieXMKc3RhbmRlZS9NUwpzdGFuZGVyL00Kc3RhbmRpbmcvTQpzdGFuZG9mZi9NUwpzdGFuZG9mZmlzaApzdGFuZG91dC9NUwpzdGFuZHBpcGUvU00Kc3RhbmRwb2ludC9NUwpzdGFuZHN0aWxsL01TCnN0YW5rCnN0YW56YS9TTQpzdGFwaC9NCnN0YXBoeWxvY29jY2FsCnN0YXBoeWxvY29jY2kKc3RhcGh5bG9jb2NjdXMvTQpzdGFwbGUvRFJTTVpHCnN0YXBsZXIvTQpzdGFyL01EUlpHUwpzdGFyYm9hcmQvTQpzdGFyYnVyc3QvUwpzdGFyY2gvR01EUwpzdGFyY2hpbHkKc3RhcmNoaW5lc3MvTQpzdGFyY2h5L1BUUgpzdGFyZG9tL00Kc3RhcmR1c3QvTQpzdGFyZS9TTQpzdGFyZXIvTQpzdGFyZmlzaC9NUwpzdGFyZnJ1aXQKc3RhcmdhemUvRFJTWkcKc3RhcmdhemVyL00Kc3RhcmsvUllQWlQKc3RhcmtuZXNzL00Kc3Rhcmxlc3MKc3RhcmxldC9NUwpzdGFybGlnaHQvTQpzdGFybGluZy9TTQpzdGFybGl0CnN0YXJyZWQKc3RhcnJpbmcKc3RhcnJ5L1RSCnN0YXJzdHJ1Y2sKc3RhcnQvQVNNREcKc3RhcnRlci9NUwpzdGFydGxlL0dEUwpzdGFydGxpbmcvWQpzdGFydHVwL01TCnN0YXJ2YXRpb24vTQpzdGFydmUvRFNKRwpzdGFydmVsaW5nL01TCnN0YXNoL01EU0cKc3Rhc2lzCnN0YXQvTVMKc3RhdGUvRFJTTVlHTkxYCnN0YXRlY3JhZnQvTQpzdGF0ZWQvVQpzdGF0ZWhvb2QvTQpzdGF0ZWhvdXNlL01TCnN0YXRlbGVzcy9QCnN0YXRlbGVzc25lc3MvTQpzdGF0ZWxpbmVzcy9NCnN0YXRlbHkvUFJUCnN0YXRlbWVudC9BTVMKc3RhdGVtZW50ZWQKc3RhdGVtZW50aW5nCnN0YXRlcm9vbS9NUwpzdGF0ZXNpZGUKc3RhdGVzbWFuL00Kc3RhdGVzbWFubGlrZQpzdGF0ZXNtYW5zaGlwL00Kc3RhdGVzbWVuCnN0YXRlc3dvbWFuL00Kc3RhdGVzd29tZW4Kc3RhdGV3aWRlCnN0YXRpYy9TTQpzdGF0aWNhbGx5CnN0YXRpb24vTURSWkcKc3RhdGlvbmFyeQpzdGF0aW9uZXIvTQpzdGF0aW9uZXJ5L00Kc3RhdGlvbm1hc3Rlci9TCnN0YXRpc3RpYy9NUwpzdGF0aXN0aWNhbC9ZCnN0YXRpc3RpY2lhbi9TTQpzdGF0dWFyeS9NCnN0YXR1ZS9TTQpzdGF0dWVzcXVlCnN0YXR1ZXR0ZS9NUwpzdGF0dXJlL01TCnN0YXR1cy9NUwpzdGF0dXRlL01TCnN0YXR1dG9yaWx5CnN0YXR1dG9yeQpzdGF1bmNoL1BEUlNZVEcKc3RhdW5jaG5lc3MvTQpzdGF2ZS9EU01HCnN0YXkvTURSWkdTCnN0ZApzdGRpbwpzdGVhZC9TTQpzdGVhZGZhc3QvWVAKc3RlYWRmYXN0bmVzcy9NCnN0ZWFkaWx5L1UKc3RlYWRpbmVzcy9VTQpzdGVhZHkvVEdQRFJTTQpzdGVhay9TTQpzdGVha2hvdXNlL1NNCnN0ZWFsL1NNSEcKc3RlYWx0aC9NCnN0ZWFsdGhpbHkKc3RlYWx0aGluZXNzL00Kc3RlYWx0aHkvVFBSCnN0ZWFtL1NNRFJaRwpzdGVhbWJvYXQvTVMKc3RlYW1lci9NCnN0ZWFtZml0dGVyL1NNCnN0ZWFtZml0dGluZy9NCnN0ZWFtaW5lc3MvTQpzdGVhbXB1bmsKc3RlYW1yb2xsL1pHRFJTCnN0ZWFtcm9sbGVyL01ERwpzdGVhbXNoaXAvTVMKc3RlYW15L1RQUgpzdGVlZC9TTQpzdGVlbC9TTURHCnN0ZWVsaW5lc3MvTQpzdGVlbG1ha2VyL1MKc3RlZWx3b3JrZXIvU00Kc3RlZWx3b3Jrcy9NCnN0ZWVseS9QVFIKc3RlZWx5YXJkL1NNCnN0ZWVwL1NNRE5SWVBYVEcKc3RlZXBlbi9HRApzdGVlcGxlL01TCnN0ZWVwbGVjaGFzZS9NUwpzdGVlcGxlamFjay9TTQpzdGVlcG5lc3MvTQpzdGVlci9TTURCRwpzdGVlcmFnZS9NCnN0ZWVyaW5nL00Kc3RlZXJzbWFuL00Kc3RlZXJzbWVuCnN0ZWdvc2F1cmkKc3RlZ29zYXVydXMvTVMKc3RlaW4vU00Kc3RlbGxhcgpzdGVtL01TCnN0ZW1sZXNzCnN0ZW1tZWQKc3RlbW1pbmcKc3RlbXdhcmUvTQpzdGVuY2gvTVMKc3RlbmNpbC9HTURTCnN0ZW5vL1NNCnN0ZW5vZ3JhcGhlci9TTQpzdGVub2dyYXBoaWMKc3Rlbm9ncmFwaHkvTQpzdGVub3NpcwpzdGVudC9TTQpzdGVudG9yaWFuCnN0ZXAvSU1TCnN0ZXBicm90aGVyL1NNCnN0ZXBjaGlsZC9NCnN0ZXBjaGlsZHJlbi9NCnN0ZXBkYWQvTVMKc3RlcGRhdWdodGVyL1NNCnN0ZXBmYXRoZXIvU00Kc3RlcGxhZGRlci9NUwpzdGVwbW9tL01TCnN0ZXBtb3RoZXIvU00Kc3RlcHBhcmVudC9TTQpzdGVwcGUvRFJTTVpHCnN0ZXBwZXIvTQpzdGVwcGluZ3N0b25lL1NNCnN0ZXBzaXN0ZXIvTVMKc3RlcHNvbi9NUwpzdGVyZW8vU00Kc3RlcmVvcGhvbmljCnN0ZXJlb3Njb3BlL01TCnN0ZXJlb3Njb3BpYwpzdGVyZW90eXBlL0RTTUcKc3RlcmVvdHlwaWNhbApzdGVyaWxlCnN0ZXJpbGl0eS9NCnN0ZXJpbGl6YXRpb24vU00Kc3RlcmlsaXplL0RSU1pHCnN0ZXJpbGl6ZXIvTQpzdGVybGluZy9NCnN0ZXJuL1NNUllQVApzdGVybm5lc3MvTQpzdGVybnVtL01TCnN0ZXJvaWQvTVMKc3Rlcm9pZGFsCnN0ZXJ0b3JvdXMKc3RldC9TCnN0ZXRob3Njb3BlL01TCnN0ZXRzb24vTVMKc3RldHRlZApzdGV0dGluZwpzdGV2ZWRvcmUvU00Kc3Rldy9NREdTCnN0ZXdhcmQvR01EUwpzdGV3YXJkZXNzL01TCnN0ZXdhcmRzaGlwL00Kc3RpY2svU01SWkcKc3RpY2tlci9NCnN0aWNraWx5CnN0aWNraW5lc3MvTQpzdGlja2xlYmFjay9TTQpzdGlja2xlci9NUwpzdGlja3Bpbi9NUwpzdGlja3VwL01TCnN0aWNreS9QVFJTTQpzdGlmZi9TTUROUllQWFRHCnN0aWZmZW4vWkdEUgpzdGlmZmVuZXIvTQpzdGlmZmVuaW5nL00Kc3RpZmZuZXNzL00Kc3RpZmxlL0RTSkcKc3RpZmxpbmcvWQpzdGlnbWEvU00Kc3RpZ21hdGEKc3RpZ21hdGljCnN0aWdtYXRpemF0aW9uL00Kc3RpZ21hdGl6ZS9HRFMKc3RpbGUvU00Kc3RpbGV0dG8vU00Kc3RpbGwncwpzdGlsbC9JVEdTRApzdGlsbGJpcnRoL00Kc3RpbGxiaXJ0aHMKc3RpbGxib3JuCnN0aWxsZXIKc3RpbGxuZXNzL00Kc3RpbHQvU01ECnN0aWx0ZWQvWQpzdGltdWxhbnQvU00Kc3RpbXVsYXRlL0RTR05WCnN0aW11bGF0aW9uL00Kc3RpbXVsaQpzdGltdWx1cy9NCnN0aW5nL1pHU01SCnN0aW5nZXIvTQpzdGluZ2lseQpzdGluZ2luZXNzL00Kc3RpbmdyYXkvU00Kc3Rpbmd5L1JUUApzdGluay9aR1NNUgpzdGlua2J1Zy9TTQpzdGlua2VyL00Kc3Rpbmt5L1JUCnN0aW50L0dTTUQKc3RpcGVuZC9TTQpzdGlwZW5kaWFyeS9TCnN0aXBwbGUvRFNNRwpzdGlwcGxpbmcvTQpzdGlwdWxhdGUvWERTR04Kc3RpcHVsYXRpb24vTQpzdGlyL01TCnN0aXJyZWQKc3RpcnJlci9TTQpzdGlycmluZy9TWQpzdGlycnVwL1NNCnN0aXRjaCdzCnN0aXRjaC9BRFNHCnN0aXRjaGVyeS9NCnN0aXRjaGluZy9NCnN0b2F0L1NNCnN0b2NoYXN0aWMKc3RvY2sncwpzdG9jay9BR1NECnN0b2NrYWRlL0RTTUcKc3RvY2ticmVlZGVyL01TCnN0b2NrYnJva2VyL1NNCnN0b2NrYnJva2luZy9NCnN0b2NraG9sZGVyL1NNCnN0b2NraWx5CnN0b2NraW5lc3MvTQpzdG9ja2luZXR0ZS9NCnN0b2NraW5nL1NNCnN0b2NraXN0L1MKc3RvY2twaWxlL01HRFMKc3RvY2twb3QvU00Kc3RvY2tyb29tL01TCnN0b2NrdGFraW5nL00Kc3RvY2t5L1JUUApzdG9ja3lhcmQvTVMKc3RvZGdlCnN0b2RnaWx5CnN0b2RnaW5lc3MvTQpzdG9kZ3kvUlRQCnN0b2dpZS9NUwpzdG9pYy9TTQpzdG9pY2FsL1kKc3RvaWNpc20vTQpzdG9rZS9EUlNaRwpzdG9rZXIvTQpzdG9sZS9TTQpzdG9sZW4Kc3RvbGlkL1JZVFAKc3RvbGlkaXR5L00Kc3RvbGlkbmVzcy9NCnN0b2xvbi9NUwpzdG9tYWNoL01EUlpHCnN0b21hY2hhY2hlL1NNCnN0b21hY2hlci9NCnN0b21hY2hzCnN0b21wL0dTTUQKc3RvbmUvRFJTTVpHCnN0b25lbWFzb24vTVMKc3RvbmVyL00Kc3RvbmV3YWxsL0dTRApzdG9uZXdhcmUvTQpzdG9uZXdhc2hlZApzdG9uZXdvcmsvTQpzdG9uaWx5CnN0b25pbmVzcy9NCnN0b25rZXJlZApzdG9ua2luZwpzdG9ueS9UUlAKc3Rvb2QKc3Rvb2dlL01TCnN0b29sL1NNCnN0b29wL0dTTUQKc3RvcCdzCnN0b3AvVVMKc3RvcGNvY2svU00Kc3RvcGdhcC9TTQpzdG9wbGlnaHQvTVMKc3RvcG92ZXIvTVMKc3RvcHBhYmxlL1UKc3RvcHBhZ2UvTVMKc3RvcHBlZC9VCnN0b3BwZXIvR1NNRApzdG9wcGluZy9VCnN0b3BwbGUvRFNNRwpzdG9wd2F0Y2gvTVMKc3RvcmFnZS9NCnN0b3JlJ3MKc3RvcmUvQURTRwpzdG9yZWZyb250L01TCnN0b3JlaG91c2UvTVMKc3RvcmVrZWVwZXIvU00Kc3RvcmVyb29tL1NNCnN0b3JrL1NNCnN0b3JtL0dTTUQKc3Rvcm1pbHkKc3Rvcm1pbmVzcy9NCnN0b3JteS9SUFQKc3RvcnkvRFNNCnN0b3J5Ym9hcmQvTVMKc3Rvcnlib29rL1NNCnN0b3J5dGVsbGVyL01TCnN0b3J5dGVsbGluZy9NCnN0b3VwL1NNCnN0b3V0L1RTTVJZUApzdG91dGhlYXJ0ZWQKc3RvdXRuZXNzL00Kc3RvdmUvU00Kc3RvdmVwaXBlL1NNCnN0b3cvREdTCnN0b3dhZ2UvTQpzdG93YXdheS9NUwpzdHJhZGRsZS9EUlNNWkcKc3RyYWRkbGVyL00Kc3RyYWZlL01HRFMKc3RyYWdnbGUvRFJTWkcKc3RyYWdnbGVyL00Kc3RyYWdnbHkvVFIKc3RyYWlnaHQvU1BYVE1OUlkKc3RyYWlnaHRhd2F5L1NNCnN0cmFpZ2h0ZWRnZS9TTQpzdHJhaWdodGVuL1pHRFIKc3RyYWlnaHRlbmVyL00Kc3RyYWlnaHRmb3J3YXJkL1lQUwpzdHJhaWdodGZvcndhcmRuZXNzL00Kc3RyYWlnaHRuZXNzL00Kc3RyYWlnaHR3YXkKc3RyYWluJ3MKc3RyYWluL0ZBRFNHCnN0cmFpbmVyL0FTTQpzdHJhaXQvTU5TWApzdHJhaXRlbi9HRApzdHJhaXRqYWNrZXQvU0dNRApzdHJhaXRsYWNlZApzdHJhbmQvTURTRwpzdHJhbmdlL1BSWVpUCnN0cmFuZ2VuZXNzL00Kc3RyYW5nZXIvTQpzdHJhbmdsZS9aR0RSUwpzdHJhbmdsZWhvbGQvU00Kc3RyYW5nbGVyL00Kc3RyYW5ndWxhdGUvR05EUwpzdHJhbmd1bGF0aW9uL00Kc3RyYXAncwpzdHJhcC9VUwpzdHJhcGxlc3MvTVMKc3RyYXBwZWQvVQpzdHJhcHBpbmcvTQpzdHJhdGEKc3RyYXRhZ2VtL1NNCnN0cmF0ZWdpYy9TCnN0cmF0ZWdpY2FsL1kKc3RyYXRlZ2ljcy9NCnN0cmF0ZWdpc3QvU00Kc3RyYXRlZ3kvU00Kc3RyYXRpCnN0cmF0aWZpY2F0aW9uL00Kc3RyYXRpZnkvRFNHTgpzdHJhdG9zcGhlcmUvU00Kc3RyYXRvc3BoZXJpYwpzdHJhdHVtL00Kc3RyYXR1cy9NCnN0cmF3L0dTTUQKc3RyYXdiZXJyeS9TTQpzdHJheS9HU01ECnN0cmVhay9NRFJTWkcKc3RyZWFrZXIvTQpzdHJlYWt5L1RSCnN0cmVhbS9NRFJTWkcKc3RyZWFtZXIvTQpzdHJlYW1saW5lL0RTRwpzdHJlZXQvTVMKc3RyZWV0Y2FyL01TCnN0cmVldGxhbXAvUwpzdHJlZXRsaWdodC9TTQpzdHJlZXR3YWxrZXIvU00Kc3RyZWV0d2lzZQpzdHJlbmd0aC9NCnN0cmVuZ3RoZW4vQUdEUwpzdHJlbmd0aGVuZXIvTVMKc3RyZW5ndGhzCnN0cmVudW91cy9QWQpzdHJlbnVvdXNuZXNzL00Kc3RyZXAvTQpzdHJlcHRvY29jY2FsCnN0cmVwdG9jb2NjaQpzdHJlcHRvY29jY3VzL00Kc3RyZXB0b215Y2luL00Kc3RyZXNzL01EU0cKc3RyZXNzZWQvVQpzdHJlc3NmdWwKc3RyZXRjaC9CWkdNRFJTCnN0cmV0Y2hlci9NREcKc3RyZXRjaG1hcmtzCnN0cmV0Y2h5L1RSCnN0cmV3L0dTREgKc3RyZXduCnN0cmlhL00Kc3RyaWFlCnN0cmlhdGVkCnN0cmlhdGlvbi9NUwpzdHJpY2tlbgpzdHJpY3QvUllQVApzdHJpY3RuZXNzL00Kc3RyaWN0dXJlL1NNCnN0cmlkZGVuCnN0cmlkZS9NR1MKc3RyaWRlbmN5L00Kc3RyaWRlbnQvWQpzdHJpZmUvTQpzdHJpa2UvTVpHUlNKCnN0cmlrZWJvdW5kCnN0cmlrZWJyZWFrZXIvU00Kc3RyaWtlYnJlYWtpbmcKc3RyaWtlb3V0L01TCnN0cmlrZXIvTQpzdHJpa2luZy9ZCnN0cmluZy9NRFJTWkcKc3RyaW5nZW5jeS9NCnN0cmluZ2VudC9ZCnN0cmluZ2VyL00Kc3RyaW5naW5lc3MvTQpzdHJpbmd5L1BUUgpzdHJpcC9HU01ECnN0cmlwZS9NUwpzdHJpcGV5CnN0cmlwbGluZy9NUwpzdHJpcHBlZApzdHJpcHBlci9NUwpzdHJpcHBpbmcKc3RyaXB0ZWFzZS9NWkdEUlMKc3RyaXB0ZWFzZXIvTQpzdHJpcHkKc3RyaXZlL0dTCnN0cml2ZW4Kc3Ryb2JlL01TCnN0cm9ib3Njb3BlL01TCnN0cm9ib3Njb3BpYwpzdHJvZGUKc3Ryb2tlL01HRFMKc3Ryb2xsL01EUlNaRwpzdHJvbGxlci9NCnN0cm9uZy9SWVQKc3Ryb25nYm94L01TCnN0cm9uZ2hvbGQvTVMKc3Ryb25nbWFuL00Kc3Ryb25nbWVuCnN0cm9uZ3Jvb20vUwpzdHJvbnRpdW0vTQpzdHJvcC9TTQpzdHJvcGhlL1NNCnN0cm9waGljCnN0cm9wcGVkCnN0cm9wcGlseQpzdHJvcHBpbmcKc3Ryb3BweS9UUlAKc3Ryb3ZlCnN0cnVjawpzdHJ1Y3R1cmFsL1kKc3RydWN0dXJhbGlzbQpzdHJ1Y3R1cmFsaXN0L1MKc3RydWN0dXJlJ3MKc3RydWN0dXJlL0FHRFMKc3RydWN0dXJlZC9VCnN0cnVkZWwvU00Kc3RydWdnbGUvTUdEUwpzdHJ1bS9TTQpzdHJ1bW1lZApzdHJ1bW1pbmcKc3RydW1wZXQvTVMKc3RydW5nL1VBCnN0cnV0L1NNCnN0cnV0dGVkCnN0cnV0dGluZwpzdHJ5Y2huaW5lL00Kc3R1Yi9NUwpzdHViYmVkCnN0dWJiaW5nCnN0dWJibGUvTQpzdHViYmx5CnN0dWJib3JuL1JZUFQKc3R1YmJvcm5uZXNzL00Kc3R1YmJ5L1JUCnN0dWNjby9NREcKc3R1Y2NvZXMKc3R1Y2svVQpzdHVkL01ZUwpzdHVkYm9vay9NUwpzdHVkZGVkCnN0dWRkaW5nL00Kc3R1ZGVudC9TTQpzdHVkZW50c2hpcC9TCnN0dWRpZWQvVQpzdHVkaWVkbHkKc3R1ZGlvL01TCnN0dWRpb3VzL1BZCnN0dWRpb3VzbmVzcy9NCnN0dWRseS9SVApzdHVkeSdzCnN0dWR5L0FHRFMKc3R1ZmYvR1NNREoKc3R1ZmZpbHkKc3R1ZmZpbmVzcy9NCnN0dWZmaW5nL00Kc3R1ZmZ5L1JQVApzdHVsdGlmaWNhdGlvbi9NCnN0dWx0aWZ5L0RTTkcKc3R1bWJsZS9EUlNNWkcKc3R1bWJsZXIvTQpzdHVtcC9HU01ECnN0dW1weS9UUgpzdHVuL1MKc3R1bmcKc3R1bmsKc3R1bm5lZApzdHVubmVyL1MKc3R1bm5pbmcvWQpzdHVudC9HU01ECnN0dW50bWFuCnN0dW50bWVuCnN0dXBlZmFjdGlvbi9NCnN0dXBlZnkvRFNHCnN0dXBlbmRvdXMvWQpzdHVwaWQvVE1SWVMKc3R1cGlkaXR5L1NNCnN0dXBvci9NUwpzdHVyZGlseQpzdHVyZGluZXNzL00Kc3R1cmR5L1RSUApzdHVyZ2Vvbi9TTQpzdHV0dGVyL01EUlNaRwpzdHV0dGVyZXIvTQpzdHkvU00Kc3R5bGUncwpzdHlsZS9BRFNHCnN0eWxpCnN0eWxpc2gvUFkKc3R5bGlzaG5lc3MvTQpzdHlsaXN0L1NNCnN0eWxpc3RpYy9TCnN0eWxpc3RpY2FsbHkKc3R5bGl6ZS9EU0cKc3R5bHVzL01TCnN0eW1pZS9NRFMKc3R5bWllaW5nCnN0eXB0aWMvU00Kc3Vhc2lvbi9FTQpzdWF2ZS9SWVRQCnN1YXZlbmVzcy9NCnN1YXZpdHkvTQpzdWIvU00Kc3ViYWx0ZXJuL01TCnN1YmFxdWEKc3ViYXJjdGljCnN1YmFyZWEvTVMKc3ViYXRvbWljCnN1YmJhc2VtZW50L1NNCnN1YmJlZApzdWJiaW5nCnN1YmJyYW5jaC9NUwpzdWJjYXRlZ29yeS9TTQpzdWJjbGFzcwpzdWJjb21taXR0ZWUvU00Kc3ViY29tcGFjdC9TTQpzdWJjb25zY2lvdXMvUE1ZCnN1YmNvbnNjaW91c25lc3MvTQpzdWJjb250aW5lbnQvU00Kc3ViY29udGluZW50YWwKc3ViY29udHJhY3QvTURTRwpzdWJjb250cmFjdG9yL01TCnN1YmN1bHR1cmUvTVMKc3ViY3V0YW5lb3VzL1kKc3ViZGl2aWRlL0dEUwpzdWJkaXZpc2lvbi9TTQpzdWJkb21pbmFudApzdWJkdWUvRFNHCnN1YmVkaXRvci9TCnN1YmZhbWlseS9TTQpzdWJmcmVlemluZwpzdWJncm91cC9NUwpzdWJoZWFkL0dKTVMKc3ViaGVhZGluZy9NCnN1Ymh1bWFuL01TCnN1YmoKc3ViamVjdC9HVk1EUwpzdWJqZWN0aW9uL00Kc3ViamVjdGl2ZS9ZCnN1YmplY3Rpdml0eS9NCnN1YmpvaW4vR0RTCnN1Ymp1Z2F0ZS9HTkRTCnN1Ymp1Z2F0aW9uL00Kc3VianVuY3RpdmUvU00Kc3VibGVhc2UvTUdEUwpzdWJsZXQvU00Kc3VibGV0dGluZwpzdWJsaWV1dGVuYW50L1MKc3VibGltYXRlL0dORFMKc3VibGltYXRpb24vTQpzdWJsaW1lL1lUR0RSUwpzdWJsaW1pbmFsL1kKc3VibGltaXR5L00Kc3VibGluZ3VhbApzdWJtYXJnaW5hbApzdWJtYXJpbmUvTVpSUwpzdWJtYXJpbmVyL00Kc3VibWVyZ2UvR0RTCnN1Ym1lcmdlbmNlL00Kc3VibWVyc2UvR05EUwpzdWJtZXJzaWJsZS9NUwpzdWJtZXJzaW9uL00Kc3VibWljcm9zY29waWMKc3VibWlzc2lvbi9NUwpzdWJtaXNzaXZlL1BZCnN1Ym1pc3NpdmVuZXNzL00Kc3VibWl0L0FTCnN1Ym1pdHRlZC9BCnN1Ym1pdHRlcgpzdWJtaXR0aW5nL0EKc3Vibm9ybWFsCnN1Ym9yYml0YWwKc3Vib3JkZXIvTVMKc3Vib3JkaW5hdGUvRFNNR04Kc3Vib3JkaW5hdGlvbi9JTQpzdWJvcm4vU0dECnN1Ym9ybmF0aW9uL00Kc3VicGFyYWdyYXBoCnN1YnBsb3QvTVMKc3VicG9lbmEvR01EUwpzdWJwcmltZQpzdWJwcm9mZXNzaW9uYWwvU00Kc3VicHJvZ3JhbS9TCnN1YnJvdXRpbmUvU00Kc3Vic2NyaWJlL1VBU0RHCnN1YnNjcmliZXIvTVMKc3Vic2NyaXB0L01TCnN1YnNjcmlwdGlvbi9NUwpzdWJzZWN0aW9uL01TCnN1YnNlcXVlbnQvWQpzdWJzZXJ2aWVuY2UvTQpzdWJzZXJ2aWVudC9ZCnN1YnNldC9TTQpzdWJzaWRlL0dEUwpzdWJzaWRlbmNlL00Kc3Vic2lkaWFyaXR5CnN1YnNpZGlhcnkvU00Kc3Vic2lkaXphdGlvbi9NCnN1YnNpZGl6ZS9aR0RSUwpzdWJzaWRpemVyL00Kc3Vic2lkeS9TTQpzdWJzaXN0L1NERwpzdWJzaXN0ZW5jZS9NCnN1YnNvaWwvTQpzdWJzb25pYwpzdWJzcGFjZQpzdWJzcGVjaWVzL00Kc3Vic3RhbmNlL1NNCnN1YnN0YW5kYXJkCnN1YnN0YW50aWFsL0lZCnN1YnN0YW50aWF0ZS9HTkRTWApzdWJzdGFudGlhdGVkL1UKc3Vic3RhbnRpYXRpb24vRk0Kc3Vic3RhbnRpdmUvU01ZCnN1YnN0YXRpb24vTVMKc3Vic3RpdHVlbnQKc3Vic3RpdHV0ZS9YTUdORFMKc3Vic3RpdHV0aW9uL00Kc3Vic3RyYXRhCnN1YnN0cmF0ZS9NUwpzdWJzdHJhdHVtL00Kc3Vic3RydWN0dXJlL1NNCnN1YnN1bWUvRFNHCnN1YnN1bXB0aW9uCnN1YnN1cmZhY2UvTQpzdWJzeXN0ZW0vU00Kc3VidGVlbi9TTQpzdWJ0ZW5hbmN5L00Kc3VidGVuYW50L1NNCnN1YnRlbmQvU0RHCnN1YnRlcmZ1Z2UvU00Kc3VidGVycmFuZWFuCnN1YnRleHQvU00Kc3VidGl0bGUvRFNNRwpzdWJ0bGUvVFIKc3VidGxldHkvU00Kc3VidGx5CnN1YnRvcGljL1NNCnN1YnRvdGFsL1NHTUQKc3VidHJhY3QvR1NECnN1YnRyYWN0aW9uL1NNCnN1YnRyYWhlbmQvU00Kc3VidHJvcGljL1MKc3VidHJvcGljYWwKc3VidHJvcGljcy9NCnN1YnVyYi9NUwpzdWJ1cmJhbi9TTQpzdWJ1cmJhbml0ZS9TTQpzdWJ1cmJpYS9NCnN1YnZlbnRpb24vU00Kc3VidmVyc2lvbi9NCnN1YnZlcnNpdmUvU1BNWQpzdWJ2ZXJzaXZlbmVzcy9NCnN1YnZlcnQvU0RHCnN1YndheS9NUwpzdWJ6ZXJvCnN1Y2NlZWQvR0RTCnN1Y2Nlc3MvVk1TCnN1Y2Nlc3NmdWwvVVkKc3VjY2Vzc2lvbi9TTQpzdWNjZXNzaXZlL1kKc3VjY2Vzc29yL1NNCnN1Y2NpbmN0L1JZVFAKc3VjY2luY3RuZXNzL00Kc3VjY29yL1NHTUQKc3VjY290YXNoL00Kc3VjY3ViaQpzdWNjdWJ1cwpzdWNjdWxlbmNlL00Kc3VjY3VsZW5jeS9NCnN1Y2N1bGVudC9TTQpzdWNjdW1iL0dEUwpzdWNoCnN1Y2hsaWtlCnN1Y2svTURSWkdTCnN1Y2tlci9HTUQKc3Vja2xlL0RTSkcKc3Vja2xpbmcvTQpzdWNyb3NlL00Kc3VjdGlvbi9TTURHCnN1ZGRlbi9QWQpzdWRkZW5uZXNzL00Kc3Vkcy9NCnN1ZHN5L1RSCnN1ZS9EU0cKc3VlZGUvTQpzdWV0L00Kc3VldHkKc3VmZmVyL0RSWkdTSgpzdWZmZXJhbmNlL00Kc3VmZmVyZXIvTQpzdWZmZXJpbmcvTQpzdWZmaWNlL0RTRwpzdWZmaWNpZW5jeS9JTQpzdWZmaWNpZW50L0lZCnN1ZmZpeC9NRFNHCnN1ZmZpeGF0aW9uL00Kc3VmZm9jYXRlL0dORFMKc3VmZm9jYXRpb24vTQpzdWZmcmFnYW4vTVMKc3VmZnJhZ2UvTQpzdWZmcmFnZXR0ZS9TTQpzdWZmcmFnaXN0L01TCnN1ZmZ1c2UvRFNHTgpzdWZmdXNpb24vTQpzdWdhci9HU01ECnN1Z2FyY2FuZS9NCnN1Z2FyY29hdC9HRFMKc3VnYXJsZXNzCnN1Z2FycGx1bS9NUwpzdWdhcnkvUlQKc3VnZ2VzdC9HVlNEUgpzdWdnZXN0aWJpbGl0eS9NCnN1Z2dlc3RpYmxlCnN1Z2dlc3Rpb24vU00Kc3VnZ2VzdGl2ZS9ZUApzdWdnZXN0aXZlbmVzcy9NCnN1aWNpZGFsCnN1aWNpZGUvU00Kc3VpdC9CTURHUwpzdWl0YWJpbGl0eS9VTQpzdWl0YWJsZW5lc3MvTQpzdWl0YWJseS9VCnN1aXRjYXNlL1NNCnN1aXRlL1NNCnN1aXRlZC9VCnN1aXRpbmcvTQpzdWl0b3IvTVMKc3VraXlha2kvTQpzdWxmYS9NCnN1bGZhdGUvU00Kc3VsZmlkZS9TTQpzdWxmb25hbWlkZXMKc3VsZnVyL01EU0cKc3VsZnVyaWMKc3VsZnVyb3VzCnN1bGsvTURHUwpzdWxraWx5CnN1bGtpbmVzcy9NCnN1bGt5L1RSU01QCnN1bGxlbi9SWVBUCnN1bGxlbm5lc3MvTQpzdWxsaWVkL1UKc3VsbHkvR0RTCnN1bHRhbi9NUwpzdWx0YW5hL1NNCnN1bHRhbmF0ZS9NUwpzdWx0cmlseQpzdWx0cmluZXNzL00Kc3VsdHJ5L1JQVApzdW0vU00Kc3VtYWMvTQpzdW1tYXJpbHkKc3VtbWFyaXplL0dEUwpzdW1tYXJ5L1NNCnN1bW1hdApzdW1tYXRpb24vRk1TCnN1bW1lZApzdW1tZXIvTURTRwpzdW1tZXJob3VzZS9TTQpzdW1tZXJ0aW1lL00Kc3VtbWVyeQpzdW1taW5nCnN1bW1pdC9NUwpzdW1taXRyeS9NCnN1bW1vbi9EUlNaRwpzdW1tb25lci9NCnN1bW1vbnMvR01EUwpzdW1vL00Kc3VtcC9NUwpzdW1wdHVvdXMvUFkKc3VtcHR1b3VzbmVzcy9NCnN1bi9TTQpzdW5iYXRoL1pHTURSUwpzdW5iYXRoZQpzdW5iYXRoZXIvTQpzdW5iYXRoaW5nL00Kc3VuYmF0aHMKc3VuYmVhbS9TTQpzdW5iZWQvUwpzdW5iZWx0L1NNCnN1bmJsb2NrL01TCnN1bmJvbm5ldC9TTQpzdW5idXJuL1NHTUQKc3VuYnVyc3QvTVMKc3VuZGFlL01TCnN1bmRlY2svUwpzdW5kZXIvRFNHCnN1bmRpYWwvU00Kc3VuZG93bi9TTQpzdW5kcmVzcy9TCnN1bmRyaWVzL00Kc3VuZHJ5L1MKc3VuZmlzaC9NUwpzdW5mbG93ZXIvTVMKc3VuZy9VCnN1bmdsYXNzZXMvTQpzdW5oYXQvUwpzdW5rL04Kc3VubGFtcC9TTQpzdW5sZXNzCnN1bmxpZ2h0L00Kc3VubGl0CnN1bm5lZApzdW5uaW5lc3MvTQpzdW5uaW5nCnN1bm55L1RSUApzdW5yaXNlL1NNCnN1bnJvb2YvU00Kc3Vuc2NyZWVuL01TCnN1bnNldC9NUwpzdW5zaGFkZS9NUwpzdW5zaGluZS9NCnN1bnNoaW55CnN1bnNwb3QvU00Kc3Vuc3Ryb2tlL00Kc3VudGFuL01TCnN1bnRhbm5lZApzdW50YW5uaW5nCnN1bnRyYXAvUwpzdW51cC9NCnN1cC9TWk1SCnN1cGVyL00Kc3VwZXJhYnVuZGFuY2UvTVMKc3VwZXJhYnVuZGFudApzdXBlcmFubnVhdGUvR05EUwpzdXBlcmFubnVhdGlvbi9NCnN1cGVyYi9SWVQKc3VwZXJjYXJnby9NCnN1cGVyY2FyZ29lcwpzdXBlcmNoYXJnZS9aR0RSUwpzdXBlcmNoYXJnZXIvTQpzdXBlcmNpbGlvdXMvUFkKc3VwZXJjaWxpb3VzbmVzcy9NCnN1cGVyY2l0eS9TTQpzdXBlcmNvbXB1dGVyL01TCnN1cGVyY29uZHVjdGluZwpzdXBlcmNvbmR1Y3RpdmUKc3VwZXJjb25kdWN0aXZpdHkvTQpzdXBlcmNvbmR1Y3Rvci9TTQpzdXBlcmVnby9NUwpzdXBlcmVyb2dhdGlvbi9NCnN1cGVyZXJvZ2F0b3J5CnN1cGVyZmljaWFsL1kKc3VwZXJmaWNpYWxpdHkvTQpzdXBlcmZpbmUKc3VwZXJmbHVpdHkvTQpzdXBlcmZsdW91cy9ZUApzdXBlcmZsdW91c25lc3MvTQpzdXBlcmdsdWUKc3VwZXJncmFzcy9TCnN1cGVyaGVyby9NUwpzdXBlcmhlcm9lcwpzdXBlcmhpZ2h3YXkvU00Kc3VwZXJodW1hbgpzdXBlcmltcG9zZS9HRFMKc3VwZXJpbXBvc2l0aW9uL00Kc3VwZXJpbnRlbmQvRFNHCnN1cGVyaW50ZW5kZW5jZS9NCnN1cGVyaW50ZW5kZW5jeS9NCnN1cGVyaW50ZW5kZW50L1NNCnN1cGVyaW9yL01TCnN1cGVyaW9yaXR5L00Kc3VwZXJsYXRpdmUvU01ZCnN1cGVybWFuL00Kc3VwZXJtYXJrZXQvU00Kc3VwZXJtZW4Kc3VwZXJtb2RlbC9TTQpzdXBlcm1vbS9NUwpzdXBlcm5hbApzdXBlcm5hdHVyYWwvU1kKc3VwZXJub3ZhL01TCnN1cGVybm92YWUKc3VwZXJudW1lcmFyeS9TTQpzdXBlcnBvc2UvR0RTCnN1cGVycG9zaXRpb24vTQpzdXBlcnBvd2VyL1NNCnN1cGVyc2F0dXJhdGUvR05EUwpzdXBlcnNhdHVyYXRpb24vTQpzdXBlcnNjcmliZS9HRFMKc3VwZXJzY3JpcHQvTVMKc3VwZXJzY3JpcHRpb24vTQpzdXBlcnNlZGUvR0RTCnN1cGVyc2l6ZS9HRFMKc3VwZXJzb25pYwpzdXBlcnN0YXIvTVMKc3VwZXJzdGF0ZS9TCnN1cGVyc3RpdGlvbi9NUwpzdXBlcnN0aXRpb3VzL1kKc3VwZXJzdG9yZS9NUwpzdXBlcnN0cnVjdHVyZS9NUwpzdXBlcnRhbmtlci9NUwpzdXBlcnVzZXIvUwpzdXBlcnZlbmUvR0RTCnN1cGVydmVudGlvbi9NCnN1cGVydmlzZS9YR05EUwpzdXBlcnZpc2VkL1UKc3VwZXJ2aXNpb24vTQpzdXBlcnZpc29yL01TCnN1cGVydmlzb3J5CnN1cGVyd29tYW4vTQpzdXBlcndvbWVuCnN1cGluZS9ZCnN1cHAvRFJaRwpzdXBwZXIvTQpzdXBwZXJ0aW1lCnN1cHBsCnN1cHBsYW50L1NERwpzdXBwbGUvVExQUgpzdXBwbGVtZW50L01ER1MKc3VwcGxlbWVudGFsCnN1cHBsZW1lbnRhcnkKc3VwcGxlbWVudGF0aW9uL00Kc3VwcGxlbmVzcy9NCnN1cHBsaWFudC9TTQpzdXBwbGljYW50L01TCnN1cHBsaWNhdGUvR0RTCnN1cHBsaWNhdGlvbi9NCnN1cHBsaWVyL00Kc3VwcGx5L1pHRFJTTVhOCnN1cHBvcnQvTURSU0JaR1YKc3VwcG9ydGFibGUvVUkKc3VwcG9ydGVkL1UKc3VwcG9ydGVyL00Kc3VwcG9zZS9HRFMKc3VwcG9zZWQvWQpzdXBwb3NpdGlvbi9NUwpzdXBwb3NpdG9yeS9TTQpzdXBwcmVzcy9HRFMKc3VwcHJlc3NhbnQvTVMKc3VwcHJlc3NpYmxlCnN1cHByZXNzaW9uL00Kc3VwcHJlc3Nvci9TTQpzdXBwdXJhdGUvRFNHTgpzdXBwdXJhdGlvbi9NCnN1cHJhCnN1cHJhbmF0aW9uYWwKc3VwcmVtYWNpc3QvTVMKc3VwcmVtYWN5L00Kc3VwcmVtZS9ZCnN1cHJlbW8vUwpzdXB0CnN1cmNlYXNlL0RTTUcKc3VyY2hhcmdlL0RTTUcKc3VyY2luZ2xlL1NNCnN1cmUvUFlUUgpzdXJlZmlyZQpzdXJlZm9vdGVkCnN1cmVuZXNzL00Kc3VyZXR5L1NNCnN1cmYvTURSWkdTCnN1cmZhY2UncwpzdXJmYWNlL0FHRFMKc3VyZmJvYXJkL01EU0cKc3VyZmVpdC9NRFNHCnN1cmZlci9NCnN1cmZpbmcvTQpzdXJnZS9EU01HCnN1cmdlb24vTVMKc3VyZ2VyeS9TTQpzdXJnaWNhbC9ZCnN1cmxpbmVzcy9NCnN1cmx5L1BUUgpzdXJtaXNlL01HRFMKc3VybW91bnQvREdTQgpzdXJtb3VudGFibGUvSQpzdXJuYW1lL01TCnN1cnBhc3MvR0RTCnN1cnBhc3NlZC9VCnN1cnBsaWNlL01TCnN1cnBsdXMvTVMKc3VycGx1c3NlZApzdXJwbHVzc2luZwpzdXJwcmlzZS9EU01HSgpzdXJwcmlzaW5nL1VZCnN1cnJlYWwKc3VycmVhbGlzbS9NCnN1cnJlYWxpc3QvU00Kc3VycmVhbGlzdGljCnN1cnJlYWxpc3RpY2FsbHkKc3VycmVuZGVyL01EU0cKc3VycmVwdGl0aW91cy9QWQpzdXJyZXB0aXRpb3VzbmVzcy9NCnN1cnJleS9NUwpzdXJyb2dhY3kvTQpzdXJyb2dhdGUvU00Kc3Vycm91bmQvR1NESgpzdXJyb3VuZGluZy9NCnN1cnJvdW5kaW5ncy9NCnN1cnRheC9NRFNHCnN1cnRpdGxlL1MKc3VydmVpbGxhbmNlL00Kc3VydmV5J3MKc3VydmV5L0FER1MKc3VydmV5aW5nL00Kc3VydmV5b3IvU00Kc3Vydml2YWwvU00Kc3Vydml2YWxpc3QvU00Kc3Vydml2ZS9EU0dCCnN1cnZpdm9yL1NNCnN1c2NlcHRpYmlsaXR5L1NNCnN1c2NlcHRpYmxlL0kKc3VzaGkvTQpzdXNwZWN0L1NNREcKc3VzcGVjdGVkL1UKc3VzcGVuZC9TRFJaRwpzdXNwZW5kZXIvTQpzdXNwZW5zZS9YTU4Kc3VzcGVuc2VmdWwKc3VzcGVuc2lvbi9NCnN1c3BpY2lvbi9TTQpzdXNwaWNpb3VzL1kKc3Vzcy9EU0cKc3VzdGFpbi9TREJHCnN1c3RhaW5hYmlsaXR5CnN1c3RhaW5hYmxlL1UKc3VzdGVuYW5jZS9NCnN1dGxlci9NUwpzdXR0ZWUKc3V0dXJlL01HRFMKc3V6ZXJhaW4vTVMKc3V6ZXJhaW50eS9NCnN2ZWx0ZS9UUgpzd2FiL01TCnN3YWJiZWQKc3dhYmJpbmcKc3dhZGRsZS9EU0cKc3dhZy9NUwpzd2FnZ2VkCnN3YWdnZXIvU01EUkcKc3dhZ2dpbmcKc3dhaW4vU00Kc3dhbGxvdy9HU01ECnN3YWxsb3d0YWlsL01TCnN3YW0Kc3dhbWkvU00Kc3dhbXAvR1NNRApzd2FtcGxhbmQvTQpzd2FtcHkvUlQKc3dhbi9NUwpzd2Fuay9UR1NNRFIKc3dhbmtpbHkKc3dhbmtpbmVzcy9NCnN3YW5reS9SUFQKc3dhbm5lZApzd2FubmluZwpzd2Fuc29uZy9TCnN3YXAvTVMKc3dhcHBlZApzd2FwcGluZwpzd2FyZC9TTQpzd2FybS9HU01ECnN3YXJ0aHkvVFIKc3dhc2gvR01EUwpzd2FzaGJ1Y2tsZXIvU00Kc3dhc2hidWNrbGluZy9NCnN3YXN0aWthL1NNCnN3YXQvTVMKc3dhdGNoL01TCnN3YXRoL0dNRFMKc3dhdGhlL00Kc3dhdGhzCnN3YXR0ZWQKc3dhdHRlci9TTURHCnN3YXR0aW5nCnN3YXkvTURHUwpzd2F5YmFjay9NRApzd2F5ZWQvVQpzd2Vhci9aR1NSCnN3ZWFyZXIvTQpzd2VhcndvcmQvTVMKc3dlYXQvWkdTTURSCnN3ZWF0YmFuZC9NUwpzd2VhdGVyL00Kc3dlYXRwYW50cy9NCnN3ZWF0cy9NCnN3ZWF0c2hpcnQvU00Kc3dlYXRzaG9wL01TCnN3ZWF0c3VpdC9TCnN3ZWF0eS9SVApzd2VkZS9TTQpzd2VlcC9aR1NNUkoKc3dlZXBlci9NCnN3ZWVwaW5nL01ZCnN3ZWVwaW5ncy9NCnN3ZWVwc3Rha2VzL00Kc3dlZXQvWFRTTU5SWVAKc3dlZXRicmVhZC9TTQpzd2VldGJyaWVyL1NNCnN3ZWV0Y29ybgpzd2VldGVuZWQvVQpzd2VldGVuZXIvTVMKc3dlZXRlbmluZy9NCnN3ZWV0aGVhcnQvU00Kc3dlZXRpZS9TTQpzd2VldGlzaApzd2VldG1lYXQvTVMKc3dlZXRuZXNzL00Kc3dlbGwvVEdTTURSSgpzd2VsbGhlYWQvTURTCnN3ZWxsaW5nL00Kc3dlbHRlci9TR01ECnN3ZXB0CnN3ZXB0YmFjawpzd2VydmUvTUdEUwpzd2VydmluZy9VCnN3aWZ0L1BUU01SWQpzd2lmdG5lc3MvTQpzd2lnL01TCnN3aWdnZWQKc3dpZ2dpbmcKc3dpbGwvR1NNRApzd2ltL01TCnN3aW1tZXIvU00Kc3dpbW1pbmcvTVkKc3dpbXN1aXQvU00Kc3dpbXdlYXIKc3dpbmRsZS9EUlNNWkcKc3dpbmRsZXIvTQpzd2luZS9TTQpzd2luZWhlcmQvU00Kc3dpbmcvWkdTTVIKc3dpbmdlaW5nCnN3aW5nZXIvTQpzd2luaXNoCnN3aXBlL0RTTUcKc3dpcmwvR1NNRApzd2lybHkKc3dpc2gvVEdNRFJTCnN3aXRjaC9NRFJTWkdCCnN3aXRjaGJhY2svTVMKc3dpdGNoYmxhZGUvU00Kc3dpdGNoYm9hcmQvU00Kc3dpdGNoZXIvTQpzd2l2ZWwvTURHUwpzd2l6CnN3aXp6CnN3aXp6bGUvRFNHCnN3b2xsZW4Kc3dvb24vU0dNRApzd29vcC9TR01ECnN3b29zaC9NRFNHCnN3b3JkL1NNCnN3b3JkZmlzaC9NUwpzd29yZHBsYXkvTQpzd29yZHNtYW4vTQpzd29yZHNtYW5zaGlwL00Kc3dvcmRzbWVuCnN3b3JlCnN3b3JuCnN3b3QvUwpzd290dGVkCnN3b3R0aW5nCnN3dW0Kc3d1bmcKc3liYXJpdGUvU00Kc3liYXJpdGljCnN5Y2Ftb3JlL01TCnN5Y29waGFuY3kvTQpzeWNvcGhhbnQvU00Kc3ljb3BoYW50aWMKc3lsbGFiaWMKc3lsbGFiaWNhdGUvR05EUwpzeWxsYWJpY2F0aW9uL00Kc3lsbGFiaWZpY2F0aW9uL00Kc3lsbGFiaWZ5L0RTTkcKc3lsbGFibGUvTVMKc3lsbGFidWIvUwpzeWxsYWJ1cy9NUwpzeWxsb2dpc20vTVMKc3lsbG9naXN0aWMKc3lscGgvTQpzeWxwaGljCnN5bHBobGlrZQpzeWxwaHMKc3lsdmFuCnN5bWJpb3NlcwpzeW1iaW9zaXMvTQpzeW1iaW90aWMKc3ltYmlvdGljYWxseQpzeW1ib2wvTVMKc3ltYm9saWMKc3ltYm9saWNhbC9ZCnN5bWJvbGlzbS9NCnN5bWJvbGl6YXRpb24vTQpzeW1ib2xpemUvRFNHCnN5bW1ldHJpYwpzeW1tZXRyaWNhbC9ZCnN5bW1ldHJ5L1NNCnN5bXBhdGhldGljL1UKc3ltcGF0aGV0aWNhbGx5L1UKc3ltcGF0aGllcy9NCnN5bXBhdGhpemUvWkdEUlMKc3ltcGF0aGl6ZXIvTQpzeW1wYXRoeS9TTQpzeW1waG9uaWMKc3ltcGhvbnkvU00Kc3ltcG9zaXVtL01TCnN5bXB0b20vTVMKc3ltcHRvbWF0aWMKc3ltcHRvbWF0aWNhbGx5CnN5bi9ICnN5bmFnb2dhbApzeW5hZ29ndWUvU00Kc3luYXBzZS9NUwpzeW5hcHRpYwpzeW5jL01EU0cKc3luY2hyb25pY2l0eQpzeW5jaHJvbml6YXRpb24vU00Kc3luY2hyb25pemUvR0RTCnN5bmNocm9ub3VzL1kKc3luY29wYXRlL0RTR04Kc3luY29wYXRpb24vTQpzeW5jb3BlL00Kc3luZGljYWxpc20Kc3luZGljYWxpc3QvUwpzeW5kaWNhdGUvRFNNR04Kc3luZGljYXRpb24vTQpzeW5kcm9tZS9TTQpzeW5lcmdpc20vTQpzeW5lcmdpc3RpYwpzeW5lcmd5L1NNCnN5bmZ1ZWwvTVMKc3lub2QvU00Kc3lub255bS9TTQpzeW5vbnltb3VzCnN5bm9ueW15L00Kc3lub3BzZXMKc3lub3BzaXMvTQpzeW5vcHRpYwpzeW5vdmlhbApzeW50YWN0aWMKc3ludGFjdGljYWwvWQpzeW50YXgvTQpzeW50aGVzZXMKc3ludGhlc2lzL00Kc3ludGhlc2l6ZS9aR0RSUwpzeW50aGVzaXplci9NCnN5bnRoZXRpYy9TTQpzeW50aGV0aWNhbGx5CnN5bnRocwpzeXBoaWxpcy9NCnN5cGhpbGl0aWMvU00Kc3lyaW5nZS9EU01HCnN5cnVwL1NNCnN5cnVweQpzeXNhZG1pbi9TCnN5c29wL1MKc3lzdGVtL1NNCnN5c3RlbWF0aWMvVQpzeXN0ZW1hdGljYWwvWQpzeXN0ZW1hdGl6YXRpb24vTQpzeXN0ZW1hdGl6ZS9HRFMKc3lzdGVtaWMvTVMKc3lzdGVtaWNhbGx5CnN5c3RvbGUvU00Kc3lzdG9saWMKdC9TRE5YR0JKCnRhCnRhYi9TTQp0YWJiZWQKdGFiYmluZwp0YWJib3VsZWgvTQp0YWJieS9TTQp0YWJlcm5hY2xlL1NNCnRhYmxhL01TCnRhYmxlL01HRFMKdGFibGVhdS9NCnRhYmxlYXV4CnRhYmxlY2xvdGgvTQp0YWJsZWNsb3Rocwp0YWJsZWxhbmQvU00KdGFibGVzcG9vbi9TTQp0YWJsZXNwb29uZnVsL1NNCnRhYmxldC9TTQp0YWJsZXRvcC9NUwp0YWJsZXdhcmUvTQp0YWJsb2lkL1NNCnRhYm9vL01EU0cKdGFib3IvTVMKdGFidWxhcgp0YWJ1bGF0ZS9EU0dOWAp0YWJ1bGF0aW9uL00KdGFidWxhdG9yL1NNCnRhY2hvZ3JhcGgKdGFjaG9ncmFwaHMKdGFjaG9tZXRlci9TTQp0YWNoeWNhcmRpYS9NCnRhY2h5b24KdGFjaXQvUFkKdGFjaXRuZXNzL00KdGFjaXR1cm4vWQp0YWNpdHVybml0eS9NCnRhY2svWkdNRFJTCnRhY2tlci9NCnRhY2tpbmVzcy9NCnRhY2tsZS9EUlNNWkcKdGFja2xlci9NCnRhY2t5L1JUUAp0YWNvL01TCnRhY3QvRk0KdGFjdGZ1bC9ZUAp0YWN0ZnVsbmVzcy9NCnRhY3RpYy9TTQp0YWN0aWNhbC9ZCnRhY3RpY2lhbi9NUwp0YWN0aWxlCnRhY3RpbGl0eS9NCnRhY3RsZXNzL1BZCnRhY3RsZXNzbmVzcy9NCnRhZC9TTQp0YWRwb2xlL01TCnRhZmZldGEvTQp0YWZmcmFpbC9TTQp0YWZmeS9TTQp0YWcvU00KdGFnZ2VkCnRhZ2dlci9TTQp0YWdnaW5nCnRhZ2xpYXRlbGxlCnRhZ2xpbmUvTVMKdGFpZ2EvTVMKdGFpbC9BQ1NETUcKdGFpbGJhY2svTVMKdGFpbGJvYXJkL1MKdGFpbGJvbmUvUwp0YWlsY29hdC9NUwp0YWlsZ2F0ZS9NWkdEUlMKdGFpbGdhdGVyL00KdGFpbGxlc3MKdGFpbGxpZ2h0L01TCnRhaWxvci9TR01ECnRhaWxvcmluZy9NCnRhaWxwaWVjZS9TCnRhaWxwaXBlL1NNCnRhaWxzcGluL1NNCnRhaWx3aW5kL1NNCnRhaW50L01EU0cKdGFpbnRlZC9VCnRha2UvQUlNUwp0YWtlYXdheS9TCnRha2VuL0EKdGFrZW9mZi9NUwp0YWtlb3V0L01TCnRha2VvdmVyL1NNCnRha2VyL01TCnRha2luZy9TTQp0YWtpbmdzL00KdGFsYy9NCnRhbGN1bS9NCnRhbGUvTVMKdGFsZWJlYXJlci9NUwp0YWxlbnQvU01ECnRhbGVudGVkL1UKdGFsaQp0YWxpc21hbi9NUwp0YWxrL1pHTURSUwp0YWxrYXRpdmUvUFkKdGFsa2F0aXZlbmVzcy9NCnRhbGtlci9NCnRhbGtpZS9SU01UCnRhbGt5CnRhbGwvVFJQCnRhbGxib3kvTVMKdGFsbGllci9NCnRhbGxpc2gKdGFsbG5lc3MvTQp0YWxsb3cvTQp0YWxsb3d5CnRhbGx5L0RSU01aRwp0YWxseWhvL01ER1MKdGFsb24vTVMKdGFsdXMvTVMKdGFtL1NNCnRhbWFsZS9TTQp0YW1hcmFjay9NUwp0YW1hcmluZC9NUwp0YW1ib3VyaW5lL01TCnRhbWUvQllaVEdEUlNQCnRhbWVkL1UKdGFtZW5lc3MvTQp0YW1lci9NCnRhbW94aWZlbgp0YW1wL1pHRFJTCnRhbXBlci9aR0RSCnRhbXBlcmVyL00KdGFtcG9uL1NNCnRhbi9TTQp0YW5hZ2VyL01TCnRhbmJhcmsvTQp0YW5kZW0vU00KdGFuZG9vcmkvTQp0YW5nL01TCnRhbmdlbG8vTVMKdGFuZ2VudC9NUwp0YW5nZW50aWFsL1kKdGFuZ2VyaW5lL01TCnRhbmdpYmlsaXR5L0lNCnRhbmdpYmxlL0lNUwp0YW5naWJsZW5lc3MvTQp0YW5naWJseS9JCnRhbmdsZSdzCnRhbmdsZS9VRFNHCnRhbmdvL01EU0cKdGFuZ3kvUlQKdGFuay9aR01EUlMKdGFua2FyZC9NUwp0YW5rZXIvTQp0YW5rZnVsL01TCnRhbm5lZC9VCnRhbm5lci9TTQp0YW5uZXJ5L1NNCnRhbm5lc3QKdGFubmluL00KdGFubmluZy9NCnRhbnN5L00KdGFudGFsaXphdGlvbi9NCnRhbnRhbGl6ZS9aR0RSUwp0YW50YWxpemVyL00KdGFudGFsaXppbmcvWQp0YW50YWx1bS9NCnRhbnRhbW91bnQKdGFudHJhL00KdGFudHJ1bS9TTQp0YXAvU1pHTURSCnRhcGFzCnRhcGUvTVMKdGFwZWxpbmUvTVMKdGFwZXIvTURHCnRhcGVzdHJ5L1NNCnRhcGV3b3JtL01TCnRhcGlvY2EvTQp0YXBpci9NUwp0YXBwZWQvVQp0YXBwZXIvTVMKdGFwcGV0L01TCnRhcHBpbmcKdGFwcm9vbS9TTQp0YXByb290L1NNCnRhci9TR01ECnRhcmFtYXNhbGF0YQp0YXJhbnRlbGxhL01TCnRhcmFudHVsYS9TTQp0YXJiYWxsL1MKdGFyZGlseQp0YXJkaW5lc3MvTQp0YXJkeS9UUFIKdGFyZS9NUwp0YXJnZXQvTURHUwp0YXJpZmYvTVMKdGFybWFjL01TCnRhcm1hY2FkYW0KdGFybWFja2VkCnRhcm1hY2tpbmcKdGFybi9NUwp0YXJuaXNoL0dNRFMKdGFybmlzaGVkL1UKdGFyby9NUwp0YXJvdC9NUwp0YXJwL01TCnRhcnBhdWxpbi9NUwp0YXJwb24vTVMKdGFycmFnb24vU00KdGFycmVkCnRhcnJpbmcKdGFycnkvVEdEUlMKdGFyc2FsL01TCnRhcnNpCnRhcnN1cy9NCnRhcnQvUFRHTURSWVMKdGFydGFuL01TCnRhcnRhci9NUwp0YXJ0YXJpYwp0YXJ0bmVzcy9NCnRhcnR5L1QKdGFzZXIvR01EUwp0YXNrL0dNRFMKdGFza21hc3Rlci9NUwp0YXNrbWlzdHJlc3MvTVMKdGFzc2VsL01EU0cKdGFzdGUvSk1aR0RSUwp0YXN0ZWQvVQp0YXN0ZWZ1bC9FUFkKdGFzdGVmdWxuZXNzL0VNCnRhc3RlbGVzcy9QWQp0YXN0ZWxlc3NuZXNzL00KdGFzdGVyL00KdGFzdGlseQp0YXN0aW5lc3MvTQp0YXN0aW5nL00KdGFzdHkvVFJQCnRhdC9TWlIKdGF0YW1pL01TCnRhdGVyL00KdGF0dGVkCnRhdHRlci9NRFNHCnRhdHRlcmRlbWFsaW9uL01TCnRhdHRpZQp0YXR0aW5nL00KdGF0dGxlL01aR0RSUwp0YXR0bGVyL00KdGF0dGxldGFsZS9NUwp0YXR0b28vTURSU1pHCnRhdHRvb2VyL00KdGF0dG9vaXN0L1NNCnRhdHR5L1RSUwp0YXUvU00KdGF1Z2h0L1VBCnRhdW50L1pHTURSUwp0YXVudGVyL00KdGF1bnRpbmcvWQp0YXVwZS9NCnRhdXQvUFhUTlJZCnRhdXRlbi9ERwp0YXV0bmVzcy9NCnRhdXRvbG9naWNhbC9ZCnRhdXRvbG9nb3VzCnRhdXRvbG9neS9TTQp0YXZlcm4vTVMKdGF3ZHJpbHkKdGF3ZHJpbmVzcy9NCnRhd2RyeS9SVFAKdGF3bnkvVFJNCnRheC9CWkdNRFJTCnRheGEKdGF4YXRpb24vTQp0YXhlci9NCnRheGkvR01EUwp0YXhpY2FiL1NNCnRheGlkZXJtaXN0L1NNCnRheGlkZXJteS9NCnRheGltZXRlci9NUwp0YXhpd2F5L1MKdGF4bWFuCnRheG1lbgp0YXhvbgp0YXhvbm9taWMKdGF4b25vbWlzdC9NUwp0YXhvbm9teS9TTQp0YXhwYXllci9NUwp0YXhwYXlpbmcKdGIvUwp0YnNwCnRlYS9TTQp0ZWFiYWcvUwp0ZWFjYWtlL1NNCnRlYWNoL1pHUlNCSgp0ZWFjaGFibGUvVQp0ZWFjaGVyL00KdGVhY2hpbmcvTQp0ZWFjdXAvTVMKdGVhY3VwZnVsL01TCnRlYWsvTVMKdGVha2V0dGxlL1NNCnRlYWwvTVMKdGVhbGlnaHQvTVMKdGVhbS9HTURTCnRlYW1tYXRlL01TCnRlYW1zdGVyL01TCnRlYW13b3JrL00KdGVhcG90L01TCnRlYXIvR01EUwp0ZWFyYXdheS9TCnRlYXJkcm9wL1NNCnRlYXJmdWwvWQp0ZWFyZ2FzL01TCnRlYXJnYXNzZWQKdGVhcmdhc3NpbmcKdGVhcmplcmtlci9NUwp0ZWFyb29tL1NNCnRlYXJ5L1RSCnRlYXNlL01aR0RSUwp0ZWFzZWwvTVMKdGVhc2VyL00KdGVhc2luZy9ZCnRlYXNwb29uL1NNCnRlYXNwb29uZnVsL1NNCnRlYXQvTVMKdGVhdGltZS9TCnRlY2gvTQp0ZWNoaWUvUwp0ZWNobmV0aXVtL00KdGVjaG5pY2FsL1kKdGVjaG5pY2FsaXR5L1NNCnRlY2huaWNpYW4vU00KdGVjaG5pY29sb3IKdGVjaG5pcXVlL1NNCnRlY2hubwp0ZWNobm9iYWJibGUKdGVjaG5vY3JhY3kvU00KdGVjaG5vY3JhdC9NUwp0ZWNobm9jcmF0aWMKdGVjaG5vbG9naWNhbC9ZCnRlY2hub2xvZ2lzdC9NUwp0ZWNobm9sb2d5L1NNCnRlY2hub3Bob2JlL1MKdGVjaHMKdGVjdG9uaWMvUwp0ZWN0b25pY3MvTQp0ZWQvUwp0ZWRkeS9TCnRlZGlvdXMvUFkKdGVkaW91c25lc3MvTQp0ZWRpdW0vTQp0ZWUvRFNNSAp0ZWVpbmcKdGVlbS9HRFMKdGVlbi9NUwp0ZWVuYWdlL1JaCnRlZW5hZ2VyL00KdGVlbnkvVFIKdGVlbnlib3BwZXIvTVMKdGVldGVyL01EU0cKdGVldGhlL0dEUwp0ZWV0aGluZy9NCnRlZXRvdGFsL1JaCnRlZXRvdGFsZXIvTQp0ZWV0b3RhbGlzbS9NCnRla3RpdGUvU00KdGVsCnRlbGVjYXN0L1NaR01SCnRlbGVjYXN0ZXIvTQp0ZWxlY29tbXVuaWNhdGlvbi9NUwp0ZWxlY29tbXVuaWNhdGlvbnMvTQp0ZWxlY29tbXV0ZS9aR0RSUwp0ZWxlY29tbXV0ZXIvTQp0ZWxlY29tbXV0aW5nL00KdGVsZWNvbmZlcmVuY2UvTUdEUwp0ZWxlY29uZmVyZW5jaW5nL00KdGVsZWdlbmljCnRlbGVncmFtL01TCnRlbGVncmFwaC9NRFJaRwp0ZWxlZ3JhcGhlci9NCnRlbGVncmFwaGVzZQp0ZWxlZ3JhcGhpYwp0ZWxlZ3JhcGhpY2FsbHkKdGVsZWdyYXBoaXN0L1NNCnRlbGVncmFwaHMKdGVsZWdyYXBoeS9NCnRlbGVraW5lc2lzL00KdGVsZWtpbmV0aWMKdGVsZW1hcmtldGVyL1NNCnRlbGVtYXJrZXRpbmcvTQp0ZWxlbWV0ZXIvU00KdGVsZW1ldHJ5L1NNCnRlbGVvbG9naWNhbAp0ZWxlb2xvZ3kKdGVsZXBhdGhpYwp0ZWxlcGF0aGljYWxseQp0ZWxlcGF0aHkvTQp0ZWxlcGhvbmUvRFJTTVpHCnRlbGVwaG9uZXIvTQp0ZWxlcGhvbmljCnRlbGVwaG9uaXN0L1MKdGVsZXBob255L00KdGVsZXBob3RvL1NNCnRlbGVwaG90b2dyYXBoeS9NCnRlbGVwbGF5L01TCnRlbGVwb3J0CnRlbGVwb3J0YXRpb24KdGVsZXByaW50ZXIvTVMKdGVsZXByb2Nlc3NpbmcvTQp0ZWxlcHJvbXB0ZXIvU00KdGVsZXNhbGVzCnRlbGVzY29wZS9EU01HCnRlbGVzY29waWMKdGVsZXNjb3BpY2FsbHkKdGVsZXRleHQvTVMKdGVsZXRob24vTVMKdGVsZXR5cGUvUwp0ZWxldHlwZXdyaXRlci9NUwp0ZWxldmFuZ2VsaXNtL00KdGVsZXZhbmdlbGlzdC9NUwp0ZWxldmlzZS9YR05EUwp0ZWxldmlzaW9uL00KdGVsZXdvcmtlci9TCnRlbGV3b3JraW5nCnRlbGV4L01EU0cKdGVsbC9BR1MKdGVsbGVyL1NNCnRlbGxpbmcvWQp0ZWxsdGFsZS9TTQp0ZWxsdXJpdW0vTQp0ZWxseS9TTQp0ZWxuZXQKdGVtYmxvci9NUwp0ZW1lcml0eS9NCnRlbXAvTURSWlRHUwp0ZW1wZXIvTURHCnRlbXBlcmEvTFNNCnRlbXBlcmFtZW50L01TCnRlbXBlcmFtZW50YWwvWQp0ZW1wZXJhbmNlL0lNCnRlbXBlcmF0ZS9JWQp0ZW1wZXJhdGVuZXNzL00KdGVtcGVyYXR1cmUvU00KdGVtcGVzdC9TTQp0ZW1wZXN0dW91cy9ZUAp0ZW1wZXN0dW91c25lc3MvTQp0ZW1wbGF0ZSdzCnRlbXBsYXRlL1MKdGVtcGxlL1NNCnRlbXBvL1NNCnRlbXBvcmFsL1kKdGVtcG9yYXJpbHkKdGVtcG9yYXJpbmVzcy9NCnRlbXBvcmFyeS9GU00KdGVtcG9yaXplL1pHRFJTCnRlbXBvcml6ZXIvTQp0ZW1wdC9TRFJaRwp0ZW1wdGF0aW9uL01TCnRlbXB0ZXIvTQp0ZW1wdGluZy9ZCnRlbXB0cmVzcy9NUwp0ZW1wdXJhL00KdGVuL0JNSAp0ZW5hYmlsaXR5L00KdGVuYWJsZS9VCnRlbmFibHkKdGVuYWNpb3VzL1lQCnRlbmFjaW91c25lc3MvTQp0ZW5hY2l0eS9NCnRlbmFuY3kvU00KdGVuYW50L1NNREcKdGVuYW50ZWQvVQp0ZW5hbnRyeS9NCnRlbmNoCnRlbmQvSUVGREdTCnRlbmRlZC9VCnRlbmRlbmN5L1NNCnRlbmRlbnRpb3VzL1lQCnRlbmRlbnRpb3VzbmVzcy9NCnRlbmRlci9TTURSWVRHUAp0ZW5kZXJmb290L01TCnRlbmRlcmhlYXJ0ZWQvUAp0ZW5kZXJoZWFydGVkbmVzcy9NCnRlbmRlcml6ZS9aR0RSUwp0ZW5kZXJpemVyL00KdGVuZGVybG9pbi9TTQp0ZW5kZXJuZXNzL00KdGVuZGluaXRpcy9NCnRlbmRvbi9TTQp0ZW5kcmlsL1NNCnRlbmVtZW50L1NNCnRlbmV0L1NNCnRlbmZvbGQKdGVubmVyL1MKdGVubmlzL00KdGVub24vU01ERwp0ZW5vci9TTQp0ZW5waW4vU00KdGVucGlucy9NCnRlbnNlL0RSU01ZVEdOWFAKdGVuc2VuZXNzL00KdGVuc2lsZQp0ZW5zaW9uL0VTTQp0ZW5zaXR5L0lNCnRlbnNvci9TCnRlbnQvREdTTQp0ZW50YWNsZS9EU00KdGVudGF0aXZlL1BZCnRlbnRhdGl2ZW5lc3MvTQp0ZW50ZXJob29rL01TCnRlbnRoL01ZCnRlbnRocwp0ZW51aXR5L00KdGVudW91cy9QWQp0ZW51b3VzbmVzcy9NCnRlbnVyZS9EU01HCnRlcGVlL1NNCnRlcGlkL1lQCnRlcGlkaXR5L00KdGVwaWRuZXNzL00KdGVxdWlsYS9TTQp0ZXJhYml0L1NNCnRlcmFieXRlL01TCnRlcmFoZXJ0ei9NCnRlcmFwaXhlbC9NUwp0ZXJiaXVtL00KdGVyY2VudGVuYXJ5L1NNCnRlcmNlbnRlbm5pYWwvU00KdGVyaXlha2kKdGVybS9NRFlHUwp0ZXJtYWdhbnQvTVMKdGVybWluYWJsZS9JQwp0ZXJtaW5hbC9NWVMKdGVybWluYXRlL0RTR05YCnRlcm1pbmF0aW9uL0NTTQp0ZXJtaW5hdG9yL1MKdGVybWluaQp0ZXJtaW5vbG9naWNhbC9ZCnRlcm1pbm9sb2d5L1NNCnRlcm1pbnVzL00KdGVybWl0ZS9TTQp0ZXJuL0lNUwp0ZXJuYXJ5L1NNCnRlcnIKdGVycmFjZS9EU01HCnRlcnJhY290dGEvTQp0ZXJyYWluL1NNCnRlcnJhcGluL01TCnRlcnJhcml1bS9TTQp0ZXJyYXp6by9NUwp0ZXJyZXN0cmlhbC9TTVkKdGVycmlibGUvUAp0ZXJyaWJsZW5lc3MvTQp0ZXJyaWJseQp0ZXJyaWVyL00KdGVycmlmaWMKdGVycmlmaWNhbGx5CnRlcnJpZnkvR0RTCnRlcnJpZnlpbmcvWQp0ZXJyaW5lL1MKdGVycml0b3JpYWwvTVMKdGVycml0b3JpYWxpdHkKdGVycml0b3J5L1NNCnRlcnJvci9TTQp0ZXJyb3Jpc20vTQp0ZXJyb3Jpc3QvU00KdGVycm9yaXplL0RTRwp0ZXJyeS9STVoKdGVycnljbG90aC9NCnRlcnNlL1JZVFAKdGVyc2VuZXNzL00KdGVydGlhcnkKdGVzc2VsbGF0ZS9EU1hHTgp0ZXNzZWxsYXRpb24vTQp0ZXN0J3MvQUZLCnRlc3QvQUtGQ0RHUwp0ZXN0YWJsZS9DRgp0ZXN0YW1lbnQvTVMKdGVzdGFtZW50YXJ5CnRlc3RhdGUvUwp0ZXN0YXRvci9NUwp0ZXN0YXRyaWNlcwp0ZXN0YXRyaXgvTQp0ZXN0ZWQvVQp0ZXN0ZXIvS1NNCnRlc3Rlcwp0ZXN0aWNsZS9NUwp0ZXN0aWN1bGFyCnRlc3RpZmllci9NCnRlc3RpZnkvWkdEUlMKdGVzdGlseQp0ZXN0aW1vbmlhbC9NUwp0ZXN0aW1vbnkvU00KdGVzdGluZXNzL00KdGVzdGluZ3MKdGVzdGlzL00KdGVzdG9zdGVyb25lL00KdGVzdHkvUFJUCnRldGFudXMvTQp0ZXRjaGlseQp0ZXRjaHkvUFJUCnRldGhlci9TTURHCnRldHJhL1NNCnRldHJhY3ljbGluZS9NCnRldHJhaGVkcmFsCnRldHJhaGVkcm9uL01TCnRldHJhbWV0ZXIvU00KdGV4dC9GTVMKdGV4dGJvb2svU00KdGV4dGVkCnRleHRpbGUvTVMKdGV4dGluZwp0ZXh0dWFsL0ZZCnRleHR1cmFsCnRleHR1cmUvTUdEUwp0aGFsYW1pCnRoYWxhbXVzL00KdGhhbGlkb21pZGUvTQp0aGFsbGl1bS9NCnRoYW4KdGhhbmUvU00KdGhhbmsvU0RHCnRoYW5rZnVsL1lQCnRoYW5rZnVsbmVzcy9NCnRoYW5rbGVzcy9QWQp0aGFua2xlc3NuZXNzL00KdGhhbmtzZ2l2aW5nL1NNCnRoYXQvTQp0aGF0Y2gvTURSU1pHCnRoYXRjaGVyL00KdGhhdGNoaW5nL00KdGhhdy9NREdTCnRoZS9KRwp0aGVhdGVyL1NNCnRoZWF0ZXJnb2VyL1NNCnRoZWF0cmljYWwvWVMKdGhlYXRyaWNhbGl0eS9NCnRoZWF0cmljYWxzL00KdGhlYXRyaWNzL00KdGhlZS9TCnRoZWZ0L1NNCnRoZWlyL1MKdGhlaXNtL00KdGhlaXN0L1NNCnRoZWlzdGljCnRoZW0KdGhlbWF0aWMKdGhlbWF0aWNhbGx5CnRoZW1lL0RTTQp0aGVtc2VsdmVzCnRoZW4vTQp0aGVuY2UKdGhlbmNlZm9ydGgKdGhlbmNlZm9yd2FyZAp0aGVvY3JhY3kvU00KdGhlb2NyYXRpYwp0aGVvZG9saXRlL1MKdGhlb2xvZ2lhbi9TTQp0aGVvbG9naWNhbC9ZCnRoZW9sb2d5L1NNCnRoZW9yZW0vTVMKdGhlb3JldGljCnRoZW9yZXRpY2FsL1kKdGhlb3JldGljaWFuL1NNCnRoZW9yaXN0L1NNCnRoZW9yaXplL0RTRwp0aGVvcnkvU00KdGhlb3NvcGhpYwp0aGVvc29waGljYWwKdGhlb3NvcGhpc3QvU00KdGhlb3NvcGh5L00KdGhlcmFwZXV0aWMvUwp0aGVyYXBldXRpY2FsbHkKdGhlcmFwZXV0aWNzL00KdGhlcmFwaXN0L1NNCnRoZXJhcHkvU00KdGhlcmUvTQp0aGVyZWFib3V0L1MKdGhlcmVhZnRlcgp0aGVyZWF0CnRoZXJlYnkKdGhlcmVmb3IKdGhlcmVmb3JlCnRoZXJlZnJvbQp0aGVyZWluCnRoZXJlbWluL1NNCnRoZXJlb2YKdGhlcmVvbgp0aGVyZXRvCnRoZXJldG9mb3JlCnRoZXJldW50bwp0aGVyZXVwb24KdGhlcmV3aXRoCnRoZXJtL1NNCnRoZXJtYWwvTVlTCnRoZXJtaW9uaWMKdGhlcm1vZHluYW1pYy9TCnRoZXJtb2R5bmFtaWNzL00KdGhlcm1vbWV0ZXIvTVMKdGhlcm1vbWV0cmljCnRoZXJtb251Y2xlYXIKdGhlcm1vcGxhc3RpYy9TTQp0aGVybW9zL01TCnRoZXJtb3N0YXQvTVMKdGhlcm1vc3RhdGljCnRoZXJtb3N0YXRpY2FsbHkKdGhlc2F1cmkKdGhlc2F1cnVzL01TCnRoZXNlL1MKdGhlc2lzL00KdGhlc3BpYW4vU00KdGhldGEvU00KdGhldy9NUwp0aGV5CnRoZXknZAp0aGV5J2xsCnRoZXkncmUKdGhleSd2ZQp0aGlhbWluZS9NCnRoaWNrL1BNTlJZWFQKdGhpY2tlbi9EUkpaRwp0aGlja2VuZXIvTQp0aGlja2VuaW5nL00KdGhpY2tldC9NUwp0aGlja2hlYWRlZC9NCnRoaWNrbmVzcy9NUwp0aGlja28vUwp0aGlja3NldAp0aGllZi9NCnRoaWV2ZS9EU0cKdGhpZXZlcnkvTQp0aGlldmluZy9NCnRoaWV2aXNoCnRoaWdoL00KdGhpZ2hib25lL01TCnRoaWdocwp0aGltYmxlL01TCnRoaW1ibGVmdWwvU00KdGhpbi9ZU1AKdGhpbmUKdGhpbmcvTQp0aGluZ2FtYWJvYi9TTQp0aGluZ2FtYWppZy9TTQp0aGluZ3VtYWJvYi9TCnRoaW5ndW1teS9TCnRoaW5neS9TCnRoaW5rL1NSQlpHCnRoaW5rYWJsZS9VCnRoaW5rZXIvTQp0aGlua2luZydzCnRoaW5uZWQKdGhpbm5lci9NUwp0aGlubmVzcy9NCnRoaW5uZXN0CnRoaW5uaW5nCnRoaXJkL1NNWQp0aGlyc3QvU0dNRAp0aGlyc3RpbHkKdGhpcnN0aW5lc3MvTQp0aGlyc3R5L1RQUgp0aGlydGVlbi9TTUgKdGhpcnRlZW50aC9NCnRoaXJ0ZWVudGhzCnRoaXJ0aWV0aC9NCnRoaXJ0aWV0aHMKdGhpcnR5L0hTTQp0aGlzCnRoaXN0bGUvTVMKdGhpc3RsZWRvd24vTQp0aGl0aGVyCnRobwp0aG9sZS9TTQp0aG9uZy9TTQp0aG9yYWNpYwp0aG9yYXgvTVMKdGhvcml1bS9NCnRob3JuL1NNCnRob3JuaW5lc3MvTQp0aG9ybnkvUFJUCnRob3JvdWdoL1JZUFQKdGhvcm91Z2hicmVkL01TCnRob3JvdWdoZmFyZS9NUwp0aG9yb3VnaGdvaW5nCnRob3JvdWdobmVzcy9NCnRob3NlCnRob3UvTVMKdGhvdWdoCnRob3VnaHQvU00KdGhvdWdodGZ1bC9ZUAp0aG91Z2h0ZnVsbmVzcy9NCnRob3VnaHRsZXNzL1BZCnRob3VnaHRsZXNzbmVzcy9NCnRob3VzYW5kL01IUwp0aG91c2FuZGZvbGQKdGhvdXNhbmR0aC9NCnRob3VzYW5kdGhzCnRocmFsbC9TTURHCnRocmFsbGRvbS9NCnRocmFzaC9KTURSU1pHCnRocmFzaGVyL00KdGhyYXNoaW5nL00KdGhyZWFkL1NNRFJaRwp0aHJlYWRiYXJlCnRocmVhZGVyL00KdGhyZWFkbGlrZQp0aHJlYWR5L1RSCnRocmVhdC9TTU5YCnRocmVhdGVuL0RHCnRocmVhdGVuaW5nL1kKdGhyZWUvU00KdGhyZWVmb2xkCnRocmVlcGVuY2UvTQp0aHJlZXNjb3JlL01TCnRocmVlc29tZS9TTQp0aHJlbm9keS9TTQp0aHJlc2gvTURSU1pHCnRocmVzaGVyL00KdGhyZXNob2xkL1NNCnRocmV3CnRocmljZQp0aHJpZnQvU00KdGhyaWZ0aWx5CnRocmlmdGluZXNzL00KdGhyaWZ0bGVzcwp0aHJpZnR5L1BUUgp0aHJpbGwvU01EUlpHCnRocmlsbGVyL00KdGhyaWxsaW5nL1kKdGhyaXZlL0RTRwp0aHJvYXQvU00KdGhyb2F0aWx5CnRocm9hdGluZXNzL00KdGhyb2F0eS9SVFAKdGhyb2IvU00KdGhyb2JiZWQKdGhyb2JiaW5nCnRocm9lL1NNCnRocm9tYmkKdGhyb21ib2x5dGljCnRocm9tYm9zZXMKdGhyb21ib3Npcy9NCnRocm9tYm90aWMKdGhyb21idXMvTQp0aHJvbmUncwp0aHJvbmUvUwp0aHJvbmcvR1NNRAp0aHJvdHRsZS9EUlNNWkcKdGhyb3R0bGVyL00KdGhyb3VnaAp0aHJvdWdob3V0CnRocm91Z2hwdXQvTQp0aHJvdy9TTVJaRwp0aHJvd2F3YXkvU00KdGhyb3diYWNrL1NNCnRocm93ZXIvTQp0aHJvd24KdGhydQp0aHJ1bS9TTQp0aHJ1bW1lZAp0aHJ1bW1pbmcKdGhydXNoL01TCnRocnVzdC9HU00KdGhydXdheS9NUwp0aHVkL01TCnRodWRkZWQKdGh1ZGRpbmcKdGh1Zy9NUwp0aHVnZ2VyeS9NCnRodWdnaXNoCnRodWxpdW0vTQp0aHVtYi9TTURHCnRodW1ibmFpbC9TTQp0aHVtYnByaW50L1NNCnRodW1ic2NyZXcvU00KdGh1bWJ0YWNrL1NNCnRodW1wL1NNREcKdGh1bXBpbmcvTQp0aHVuZGVyL1pHTURSUwp0aHVuZGVyYm9sdC9TTQp0aHVuZGVyY2xhcC9TTQp0aHVuZGVyY2xvdWQvTVMKdGh1bmRlcmVyL00KdGh1bmRlcmhlYWQvU00KdGh1bmRlcm91cy9ZCnRodW5kZXJzaG93ZXIvU00KdGh1bmRlcnN0b3JtL1NNCnRodW5kZXJzdHJ1Y2sKdGh1bmRlcnkKdGh1bmsvUwp0aHVzCnRod2Fjay9aR1NNRFIKdGh3YWNrZXIvTQp0aHdhcnQvR1NNRAp0aHkKdGh5bWUvTQp0aHltaW5lL00KdGh5bXVzL01TCnRoeXJvaWQvTVMKdGh5cm9pZGFsCnRoeXNlbGYKdGkvTVJaCnRpYXJhL1NNCnRpYmlhL00KdGliaWFlCnRpYmlhbAp0aWMvU00KdGljay9NRFJaR1MKdGlja2VyL00KdGlja2V0L0dTTUQKdGlja2luZy9NCnRpY2tsZS9EUlNNWkcKdGlja2xlci9NCnRpY2tsaXNoL1lQCnRpY2tsaXNobmVzcy9NCnRpY2t0YWNrdG9lL00KdGlja3RvY2svTVMKdGlkYWwvWQp0aWRiaXQvU00KdGlkZGxlci9TCnRpZGRseQp0aWRkbHl3aW5rL1MKdGlkZGx5d2lua3MvTQp0aWRlL01HSkRTCnRpZGVsYW5kL1NNCnRpZGVtYXJrL1MKdGlkZXdhdGVyL01TCnRpZGV3YXkvTVMKdGlkaWx5L1UKdGlkaW5lc3MvVU0KdGlkaW5ncy9NCnRpZHkvRFJTTVRHUAp0aWUncwp0aWUvQVVTRAp0aWViYWNrL01TCnRpZWJyZWFrL1JTWgp0aWVicmVha2VyL00KdGllcGluL1MKdGllci9NRAp0aWZmL01ER1MKdGlnZXIvU00KdGlnZXJpc2gKdGlnaHQvU05SWVBYVAp0aWdodGVuL1pHRFIKdGlnaHRlbmVyL00KdGlnaHRmaXN0ZWQKdGlnaHRuZXNzL00KdGlnaHRyb3BlL01TCnRpZ2h0cy9NCnRpZ2h0d2FkL01TCnRpZ3Jlc3MvTVMKdGlsCnRpbGFwaWEKdGlsZGUvU00KdGlsZS9NWkdEUlMKdGlsZXIvTQp0aWxpbmcvTQp0aWxsJ3MKdGlsbC9FRFJaR1MKdGlsbGFibGUKdGlsbGFnZS9NCnRpbGxlci9FTQp0aWx0L01ER1MKdGltYmVyL1NNREcKdGltYmVybGFuZC9NCnRpbWJlcmxpbmUvTVMKdGltYnJlL1NNCnRpbWJyZWwvU00KdGltZS9NWVpHSkRSUwp0aW1la2VlcGVyL01TCnRpbWVrZWVwaW5nL00KdGltZWxlc3MvUFkKdGltZWxlc3NuZXNzL00KdGltZWxpbmUvTVMKdGltZWxpbmVzcy9VTQp0aW1lbHkvVVBSVAp0aW1lb3V0L1NNCnRpbWVwaWVjZS9NUwp0aW1lci9NCnRpbWVzY2FsZS9TCnRpbWVzZXJ2ZXIvU00KdGltZXNlcnZpbmcvTQp0aW1lc2hhcmUvUwp0aW1ldGFibGUvRFNNRwp0aW1ld29ybgp0aW1lem9uZQp0aW1pZC9SWVRQCnRpbWlkaXR5L00KdGltaWRuZXNzL00KdGltaW5nL00KdGltb3JvdXMvUFkKdGltb3JvdXNuZXNzL00KdGltb3RoeS9NCnRpbXBhbmkvTQp0aW1wYW5pc3QvU00KdGluL1NNCnRpbmN0dXJlL01HRFMKdGluZGVyL00KdGluZGVyYm94L01TCnRpbmUvTVMKdGluZm9pbC9NCnRpbmcvTURZRwp0aW5nZS9TTQp0aW5nZWluZwp0aW5nbGUvRFNNR0oKdGluZ2xpbmcvTQp0aW5pbmVzcy9NCnRpbmtlci9aR1NNRFIKdGlua2VyZXIvTQp0aW5rbGUvRFNNRwp0aW5uZWQKdGlubmluZXNzL00KdGlubmluZwp0aW5uaXR1cy9NCnRpbm55L1BSVAp0aW5wbGF0ZS9NCnRpbnBvdAp0aW5zZWwvR1NNRAp0aW5zbWl0aC9NCnRpbnNtaXRocwp0aW50L01ER1MKdGludGlubmFidWxhdGlvbi9NUwp0aW50eXBlL01TCnRpbndhcmUvTQp0aW55L1JUUAp0aXAvU00KdGlwcGVkCnRpcHBlci9TTQp0aXBwZXQvU00KdGlwcGV4L0dEUwp0aXBwaW5nCnRpcHBsZS9EUlNNWkcKdGlwcGxlci9NCnRpcHNpbHkKdGlwc2luZXNzL00KdGlwc3Rlci9NUwp0aXBzeS9SUFQKdGlwdG9lL0RTTQp0aXB0b2VpbmcKdGlwdG9wL1NNCnRpcmFkZS9TTQp0aXJhbWlzdS9NUwp0aXJlJ3MKdGlyZS9BR0RTCnRpcmVkL1BSWVQKdGlyZWRuZXNzL00KdGlyZWxlc3MvWVAKdGlyZWxlc3NuZXNzL00KdGlyZXNvbWUvUFkKdGlyZXNvbWVuZXNzL00KdGlzc3VlL1NNCnRpdC9TTQp0aXRhbi9TTQp0aXRhbmljCnRpdGFuaXVtL00KdGl0Y2gvUwp0aXRjaHkKdGl0aGUvRFJTTVpHCnRpdGhlci9NCnRpdGlhbi9NCnRpdGlsbGF0ZS9EU0dOCnRpdGlsbGF0aW5nL1kKdGl0aWxsYXRpb24vTQp0aXRpdmF0ZS9EU0dOCnRpdGl2YXRpb24vTQp0aXRsZS9EU01HCnRpdGxlZC9VCnRpdGxlaG9sZGVyL01TCnRpdGxpc3QvTVMKdGl0bWljZQp0aXRtb3VzZS9NCnRpdHRlci9TR01ECnRpdHRsZS9TTQp0aXR0eS9TCnRpdHVsYXIKdGl6egp0aXp6eS9TTQp0bgp0bnBrCnRvL0lVCnRvYWQvTVMKdG9hZHN0b29sL01TCnRvYWR5L0RTTUcKdG9hZHlpc20vTQp0b2FzdC9TTURSWkcKdG9hc3Rlci9NCnRvYXN0bWFzdGVyL1NNCnRvYXN0bWlzdHJlc3MvTVMKdG9hc3R5L1RSUwp0b2JhY2NvL01TCnRvYmFjY29uaXN0L1NNCnRvYm9nZ2FuL1pHU01EUgp0b2JvZ2dhbmVyL00KdG9ib2dnYW5pbmcvTQp0b2NjYXRhL1MKdG9jc2luL1NNCnRvZGF5L00KdG9kZGxlL0RSU01aRwp0b2RkbGVyL00KdG9kZHkvU00KdG9lL0RTTQp0b2VjYXAvU00KdG9laG9sZC9NUwp0b2VpbmcKdG9lbmFpbC9NUwp0b2VyYWcvUwp0b2ZmL1MKdG9mZmVlL1NNCnRvZnUvTQp0b2cvU00KdG9nYS9NRFMKdG9nZXRoZXIvUAp0b2dldGhlcm5lc3MvTQp0b2dnZWQKdG9nZ2luZwp0b2dnbGUvRFNNRwp0b2dzL00KdG9pbC9NRFJaR1MKdG9pbGVyL00KdG9pbGV0L01ER1MKdG9pbGV0cnkvU00KdG9pbGV0dGUvTQp0b2lsc29tZQp0b2tlL01HRFMKdG9rZW4vU00KdG9rZW5pc20vTQp0b2xkL0FVCnRvbGUvTQp0b2xlcmFibGUvSQp0b2xlcmFibHkvSQp0b2xlcmFuY2UvSU0KdG9sZXJhbmNlcwp0b2xlcmFudC9JWQp0b2xlcmF0ZS9HTkRTCnRvbGVyYXRpb24vTQp0b2xsL01ER1MKdG9sbGJvb3RoL00KdG9sbGJvb3Rocwp0b2xsZ2F0ZS9TTQp0b2xsd2F5L1NNCnRvbHVlbmUvTQp0b20vU00KdG9tYWhhd2svU0dNRAp0b21hdG8vTQp0b21hdG9lcwp0b21iL01ER1MKdG9tYm9sYS9TCnRvbWJveS9NUwp0b21ib3lpc2gKdG9tYnN0b25lL01TCnRvbWNhdC9NUwp0b21lL01TCnRvbWZvb2xlcnkvU00KdG9tb2dyYXBoaWMKdG9tb2dyYXBoeS9NCnRvbW9ycm93L01TCnRvbXRpdC9NUwp0b24vU00KdG9uYWwvWQp0b25hbGl0eS9TTQp0b25lJ3MKdG9uZS9JWkdEUlMKdG9uZWFybS9TTQp0b25lbGVzcy9ZCnRvbmVyL0lNCnRvbmcvTURHUwp0b25ndWUvTUdEUwp0b25ndWVsZXNzCnRvbmljL1NNCnRvbmlnaHQvTQp0b25uYWdlL1NNCnRvbm5lL1NNCnRvbnNpbC9NUwp0b25zaWxsZWN0b215L1NNCnRvbnNpbGxpdGlzL00KdG9uc29yaWFsCnRvbnN1cmUvRFNNRwp0b255L1JUCnRvbwp0b29rL0EKdG9vbCdzCnRvb2wvQURHUwp0b29sYmFyL00KdG9vbGJveC9NUwp0b29sa2l0CnRvb2xtYWtlci9NUwp0b290L01EUlpHUwp0b290ZXIvTQp0b290aC9NRAp0b290aGFjaGUvTVMKdG9vdGhicnVzaC9NUwp0b290aGlseQp0b290aGxlc3MKdG9vdGhwYXN0ZS9TTQp0b290aHBpY2svU00KdG9vdGhzb21lCnRvb3RoeS9SVAp0b290bGUvR0RTCnRvb3RzaWUvUwp0b3AvU00KdG9wYXovTVMKdG9wY29hdC9TTQp0b3BkcmVzc2luZy9TTQp0b3BlZS9TCnRvcGZsaWdodAp0b3BpCnRvcGlhcnkvTQp0b3BpYy9TTQp0b3BpY2FsL1kKdG9waWNhbGl0eS9NCnRvcGtub3QvU00KdG9wbGVzcwp0b3BtYXN0L1NNCnRvcG1vc3QKdG9wbm90Y2gKdG9wb2dyYXBoZXIvU00KdG9wb2dyYXBoaWMKdG9wb2dyYXBoaWNhbC9ZCnRvcG9ncmFwaHkvU00KdG9wb2xvZ2ljYWwvWQp0b3BvbG9neQp0b3BwZWQKdG9wcGVyL01TCnRvcHBpbmcvU00KdG9wcGxlL0dEUwp0b3BzYWlsL1NNCnRvcHNpZGUvU00KdG9wc29pbC9NCnRvcHNwaW4vTQp0b3F1ZS9TTQp0b3IvU00KdG9yY2gvR01EUwp0b3JjaGJlYXJlci9NUwp0b3JjaGxpZ2h0L00KdG9yZQp0b3JlYWRvci9NUwp0b3JtZW50L1NNREcKdG9ybWVudGluZy9ZCnRvcm1lbnRvci9NUwp0b3JuCnRvcm5hZG8vTQp0b3JuYWRvZXMKdG9ycGVkby9HTUQKdG9ycGVkb2VzCnRvcnBpZC9ZCnRvcnBpZGl0eS9NCnRvcnBvci9NCnRvcnF1ZS9NR0RTCnRvcnJlbnQvU00KdG9ycmVudGlhbAp0b3JyaWQvWVAKdG9ycmlkaXR5L00KdG9ycmlkbmVzcy9NCnRvcnNpb24vTQp0b3JzaW9uYWwKdG9yc28vU00KdG9ydCdzCnRvcnQvRkVBUwp0b3J0ZS9TTQp0b3J0ZWxsaW5pL00KdG9ydGlsbGEvTVMKdG9ydG9pc2UvTVMKdG9ydG9pc2VzaGVsbC9TTQp0b3J0b25pL00KdG9ydHVvdXMvUFkKdG9ydHVvdXNuZXNzL00KdG9ydHVyZS9EUlNNWkcKdG9ydHVyZXIvTQp0b3J0dXJvdXMKdG9ydXMKdG9zaAp0b3NzL01EUlNaRwp0b3NzdXAvTVMKdG90L1NHTUQKdG90YWwvR1NNRFkKdG90YWxpdGFyaWFuL1NNCnRvdGFsaXRhcmlhbmlzbS9NCnRvdGFsaXR5L1NNCnRvdGFsaXphdG9yL1NNCnRvdGUvTVMKdG90ZW0vU00KdG90ZW1pYwp0b3R0ZWQKdG90dGVyL1pHTURSUwp0b3R0ZXJlci9NCnRvdHRpbmcKdG91Y2FuL01TCnRvdWNoL0FHTURTCnRvdWNoZG93bi9TTQp0b3VjaGUvQkoKdG91Y2hlZC9VCnRvdWNoaWx5CnRvdWNoaW5lc3MvTQp0b3VjaGluZy9ZCnRvdWNobGluZS9TCnRvdWNocGFwZXIvUwp0b3VjaHNjcmVlbi9NUwp0b3VjaHN0b25lL01TCnRvdWNoeS9SUFQKdG91Z2gvWFRHTUROUllQCnRvdWdoZW4vWkdEUgp0b3VnaGVuZXIvTQp0b3VnaGllL1NNCnRvdWdobmVzcy9NCnRvdWdocwp0b3VwZWUvTVMKdG91ci9DRlNHRE0KdG91cmlzbS9NCnRvdXJpc3QvTVMKdG91cmlzdGljCnRvdXJpc3R5CnRvdXJtYWxpbmUvTQp0b3VybmFtZW50L1NNCnRvdXJuZXkvTVMKdG91cm5pcXVldC9NUwp0b3VzbGUvR0RTCnRvdXQvTURHUwp0b3cvU1pHTURSCnRvd2FyZC9TCnRvd2JvYXQvTVMKdG93ZWwvSkdTTUQKdG93ZWxldHRlL1NNCnRvd2VsaW5nL00KdG93ZXIvR01ECnRvd2hlYWQvTURTCnRvd2hlZS9NUwp0b3dsaW5lL01TCnRvd24vTVMKdG93bmVlL1MKdG93bmhvdXNlL01TCnRvd25pZS9NUwp0b3duc2ZvbGsvTQp0b3duc2hpcC9NUwp0b3duc21hbi9NCnRvd25zbWVuCnRvd25zcGVvcGxlL00KdG93bnN3b21hbi9NCnRvd25zd29tZW4KdG93cGF0aC9NCnRvd3BhdGhzCnRvd3JvcGUvU00KdG94ZW1pYS9NCnRveGljCnRveGljaXR5L1NNCnRveGljb2xvZ2ljYWwKdG94aWNvbG9naXN0L1NNCnRveGljb2xvZ3kvTQp0b3hpbi9TTQp0b3kvU0dNRAp0b3lib3kvUwp0cgp0cmFiZWN1bGEKdHJhYmVjdWxhcgp0cmFiZWN1bGUKdHJhY2UvSkRSU01aRwp0cmFjZWFibGUvVQp0cmFjZXIvTQp0cmFjZXJ5L1NNCnRyYWNoZWEvTQp0cmFjaGVhZQp0cmFjaGVhbAp0cmFjaGVvdG9teS9TTQp0cmFjaW5nL00KdHJhY2svWkdTTURSCnRyYWNrYmFsbC9TTQp0cmFja2VyL00KdHJhY2tsZXNzCnRyYWNrc3VpdC9TCnRyYWN0J3MKdHJhY3QvQ0VLRkFTCnRyYWN0YWJpbGl0eS9JTQp0cmFjdGFibGUvSQp0cmFjdGFibHkvSQp0cmFjdGlvbi9FRkFDS00KdHJhY3Rvci9GQ0tNUwp0cmFkCnRyYWRlL0pEUlNNWkcKdHJhZGVtYXJrL1NHTUQKdHJhZGVyL00KdHJhZGVzbWFuL00KdHJhZGVzbWVuCnRyYWRlc3Blb3BsZS9NCnRyYWRlc3dvbWFuL00KdHJhZGVzd29tZW4KdHJhZGluZy9NCnRyYWRpdGlvbi9NUwp0cmFkaXRpb25hbC9ZCnRyYWRpdGlvbmFsaXNtL00KdHJhZGl0aW9uYWxpc3QvU00KdHJhZHVjZS9EUlNaRwp0cmFkdWNlci9NCnRyYWZmaWMvU00KdHJhZmZpY2tlZAp0cmFmZmlja2VyL1NNCnRyYWZmaWNraW5nL00KdHJhZ2VkaWFuL1NNCnRyYWdlZGllbm5lL01TCnRyYWdlZHkvU00KdHJhZ2ljCnRyYWdpY2FsbHkKdHJhZ2ljb21lZHkvU00KdHJhZ2ljb21pYwp0cmFpbC9aR1NNRFIKdHJhaWxibGF6ZXIvTVMKdHJhaWxibGF6aW5nL00KdHJhaWxlci9NCnRyYWluL1pHU01EUkIKdHJhaW5lZC9VCnRyYWluZWUvU00KdHJhaW5lci9NCnRyYWluaW5nL00KdHJhaW5sb2FkL01TCnRyYWlubWFuL00KdHJhaW5tZW4KdHJhaW5zcG90dGVyL1MKdHJhaW5zcG90dGluZwp0cmFpcHNlL0RTTUcKdHJhaXQvU00KdHJhaXRvci9TTQp0cmFpdG9yb3VzL1kKdHJhamVjdG9yeS9TTQp0cmFtL01TCnRyYW1jYXIvUwp0cmFtbGluZXMKdHJhbW1lZAp0cmFtbWVsL1NHTUQKdHJhbW1lbGVkL1UKdHJhbW1pbmcKdHJhbXAvWkdTTURSCnRyYW1wZXIvTQp0cmFtcGxlL0RSU01aRwp0cmFtcGxlci9NCnRyYW1wb2xpbmUvTUdEUwp0cmFtd2F5L1MKdHJhbmNlL01TCnRyYW5jaGUvUwp0cmFucXVpbC9SWVQKdHJhbnF1aWxpdHkvTQp0cmFucXVpbGl6ZS9aR0RSUwp0cmFucXVpbGl6ZXIvTQp0cmFucy9JCnRyYW5zYWN0L0RHUwp0cmFuc2FjdGlvbi9TTQp0cmFuc2FjdG9yL01TCnRyYW5zYXRsYW50aWMKdHJhbnNjZWl2ZXIvU00KdHJhbnNjZW5kL0dTRAp0cmFuc2NlbmRlbmNlL00KdHJhbnNjZW5kZW50CnRyYW5zY2VuZGVudGFsL1kKdHJhbnNjZW5kZW50YWxpc20vTQp0cmFuc2NlbmRlbnRhbGlzdC9TTQp0cmFuc2NvbnRpbmVudGFsCnRyYW5zY3JpYmUvWkdEUlMKdHJhbnNjcmliZXIvTQp0cmFuc2NyaXB0L01TCnRyYW5zY3JpcHRpb24vU00KdHJhbnNkdWNlci9NUwp0cmFuc2VjdC9EU0cKdHJhbnNlcHQvTVMKdHJhbnNmZXIvTUJTCnRyYW5zZmVyYWwvTVMKdHJhbnNmZXJlbmNlL00KdHJhbnNmZXJyZWQKdHJhbnNmZXJyaW5nCnRyYW5zZmlndXJhdGlvbi9NCnRyYW5zZmlndXJlL0dEUwp0cmFuc2Zpbml0ZQp0cmFuc2ZpeC9EU0cKdHJhbnNmb3JtL0JTWkdNRFIKdHJhbnNmb3JtYXRpb24vU00KdHJhbnNmb3JtZXIvTQp0cmFuc2Z1c2UvRFNYR04KdHJhbnNmdXNpb24vTQp0cmFuc2dlbmRlci9TCnRyYW5zZ2VuaWMKdHJhbnNncmVzcy9HRFMKdHJhbnNncmVzc2lvbi9TTQp0cmFuc2dyZXNzb3IvU00KdHJhbnNpZW5jZS9NCnRyYW5zaWVuY3kvTQp0cmFuc2llbnQvU01ZCnRyYW5zaXN0b3IvU00KdHJhbnNpc3Rvcml6ZS9EU0cKdHJhbnNpdC9TR01ECnRyYW5zaXRpb24vR1NNRAp0cmFuc2l0aW9uYWwvWQp0cmFuc2l0aXZlL0lTTVkKdHJhbnNpdGl2ZW5lc3MvTQp0cmFuc2l0aXZpdHkvTQp0cmFuc2l0b3J5CnRyYW5zbAp0cmFuc2xhdGFibGUvVQp0cmFuc2xhdGUvRFNHTkJYCnRyYW5zbGF0ZWQvVQp0cmFuc2xhdGlvbi9NCnRyYW5zbGF0b3IvU00KdHJhbnNsaXRlcmF0ZS9EU0dOWAp0cmFuc2xpdGVyYXRpb24vTQp0cmFuc2xvY2F0aW9uCnRyYW5zbHVjZW5jZS9NCnRyYW5zbHVjZW5jeS9NCnRyYW5zbHVjZW50L1kKdHJhbnNtaWdyYXRlL0dORFMKdHJhbnNtaWdyYXRpb24vTQp0cmFuc21pc3NpYmxlCnRyYW5zbWlzc2lvbi9NUwp0cmFuc21pdC9TCnRyYW5zbWl0dGFibGUKdHJhbnNtaXR0YWwvTQp0cmFuc21pdHRhbmNlL00KdHJhbnNtaXR0ZWQKdHJhbnNtaXR0ZXIvU00KdHJhbnNtaXR0aW5nCnRyYW5zbW9ncmlmaWNhdGlvbi9NCnRyYW5zbW9ncmlmeS9EU05HCnRyYW5zbXV0YXRpb24vU00KdHJhbnNtdXRlL0JEU0cKdHJhbnNuYXRpb25hbC9NUwp0cmFuc29jZWFuaWMKdHJhbnNvbS9TTQp0cmFuc3BhY2lmaWMKdHJhbnNwYXJlbmN5L1NNCnRyYW5zcGFyZW50L1kKdHJhbnNwaXJhdGlvbi9NCnRyYW5zcGlyZS9EU0cKdHJhbnNwbGFudC9NREdTCnRyYW5zcGxhbnRhdGlvbi9NCnRyYW5zcG9sYXIKdHJhbnNwb25kZXIvU00KdHJhbnNwb3J0L0JTWkdNRFIKdHJhbnNwb3J0YXRpb24vTQp0cmFuc3BvcnRlci9NCnRyYW5zcG9zZS9EU0cKdHJhbnNwb3NpdGlvbi9NUwp0cmFuc3NleHVhbC9TTQp0cmFuc3NleHVhbGlzbS9NCnRyYW5zc2hpcC9TTAp0cmFuc3NoaXBtZW50L00KdHJhbnNzaGlwcGVkCnRyYW5zc2hpcHBpbmcKdHJhbnN1YnN0YW50aWF0aW9uL00KdHJhbnN2ZXJzZS9NWVMKdHJhbnN2ZXN0aXNtL00KdHJhbnN2ZXN0aXRlL01TCnRyYXAvTVMKdHJhcGRvb3IvTVMKdHJhcGV6ZS9TTQp0cmFwZXppdW0vU00KdHJhcGV6b2lkL1NNCnRyYXBlem9pZGFsCnRyYXBwYWJsZQp0cmFwcGVkCnRyYXBwZXIvU00KdHJhcHBpbmcvUwp0cmFwcGluZ3MvTQp0cmFwc2hvb3RpbmcvTQp0cmFzaC9HTURTCnRyYXNoY2FuL01TCnRyYXNoaW5lc3MvTQp0cmFzaHkvUlBUCnRyYXVtYS9NUwp0cmF1bWF0aWMKdHJhdW1hdGljYWxseQp0cmF1bWF0aXplL0dEUwp0cmF2YWlsL1NHTUQKdHJhdmVsL01EUlNaR0oKdHJhdmVsZWQvVQp0cmF2ZWxlci9NCnRyYXZlbGluZy9NCnRyYXZlbG9ndWUvTVMKdHJhdmVyc2FsL1NNCnRyYXZlcnNlL0RTTUcKdHJhdmVzdHkvR0RTTQp0cmF3bC9aR1NNRFIKdHJhd2xlci9NCnRyYXkvTVMKdHJlYWNoZXJvdXMvUFkKdHJlYWNoZXJvdXNuZXNzL00KdHJlYWNoZXJ5L1NNCnRyZWFjbGUvTQp0cmVhY2x5CnRyZWFkL0FHU00KdHJlYWRsZS9EU01HCnRyZWFkbWlsbC9NUwp0cmVhcwp0cmVhc29uL0JNCnRyZWFzb25vdXMKdHJlYXN1cmUvRFJTTVpHCnRyZWFzdXJlci9NCnRyZWFzdXJ5L1NNCnRyZWF0L0FHU01ECnRyZWF0YWJsZQp0cmVhdGVkL1UKdHJlYXRpc2UvU00KdHJlYXRtZW50L01TCnRyZWF0eS9TTQp0cmVibGUvTUdEUwp0cmVlL01EUwp0cmVlaW5nCnRyZWVsZXNzCnRyZWVsaWtlCnRyZWVsaW5lCnRyZWV0b3AvU00KdHJlZm9pbC9TTQp0cmVrL01TCnRyZWtrZWQKdHJla2tlci9TTQp0cmVra2luZwp0cmVsbGlzL0dNRFMKdHJlbWF0b2RlL01TCnRyZW1ibGUvRFNNRwp0cmVtZW5kb3VzL1kKdHJlbW9sby9TTQp0cmVtb3IvTVMKdHJlbXVsb3VzL1BZCnRyZW11bG91c25lc3MvTQp0cmVuY2gncwp0cmVuY2gvQURTRwp0cmVuY2hhbmN5L00KdHJlbmNoYW50L1kKdHJlbmNoZXIvTVMKdHJlbmNoZXJtYW4vTQp0cmVuY2hlcm1lbgp0cmVuZC9HU01ECnRyZW5kaWx5CnRyZW5kaW5lc3MvTQp0cmVuZHNldHRlci9TCnRyZW5kc2V0dGluZwp0cmVuZHkvUlNNUFQKdHJlcGlkYXRpb24vTQp0cmVzcGFzcy9NRFJTWkcKdHJlc3Bhc3Nlci9NCnRyZXNzL0VNUwp0cmVzdGxlL01TCnRyZXdzCnRyZXkvTVMKdHJpYWQvU00KdHJpYWdlL00KdHJpYWwvQVNNCnRyaWFsZWQKdHJpYWxpbmcKdHJpYW5nbGUvU00KdHJpYW5ndWxhci9ZCnRyaWFuZ3VsYXRlL0dORFMKdHJpYW5ndWxhdGlvbi9NCnRyaWF0aGxldGUvUwp0cmlhdGhsb24vU00KdHJpYmFsCnRyaWJhbGlzbS9NCnRyaWJlL1NNCnRyaWJlc21hbi9NCnRyaWJlc21lbgp0cmliZXN3b21hbi9NCnRyaWJlc3dvbWVuCnRyaWJ1bGF0aW9uL1NNCnRyaWJ1bmFsL1NNCnRyaWJ1bmUvTVMKdHJpYnV0YXJ5L1NNCnRyaWJ1dGUncwp0cmlidXRlL0ZTCnRyaWNlL00KdHJpY2VudGVubmlhbC9NUwp0cmljZXBzL01TCnRyaWNlcmF0b3BzL00KdHJpY2hpbmEvTQp0cmljaGluYWUKdHJpY2hpbm9zaXMvTQp0cmljay9HU01ECnRyaWNrZXJ5L00KdHJpY2tpbHkKdHJpY2tpbmVzcy9NCnRyaWNrbGUvTUdEUwp0cmlja3N0ZXIvU00KdHJpY2t5L1RSUAp0cmljb2xvci9TTQp0cmljeWNsZS9TTQp0cmlkZW50L01TCnRyaWVkL1UKdHJpZW5uaWFsL01ZUwp0cmllci9TTQp0cmlmZWN0YS9TTQp0cmlmbGUvTVpHRFJTCnRyaWZsZXIvTQp0cmlmb2NhbHMvTQp0cmlnL00KdHJpZ2dlci9NRFNHCnRyaWdseWNlcmlkZS9NUwp0cmlnb25vbWV0cmljCnRyaWdvbm9tZXRyaWNhbAp0cmlnb25vbWV0cnkvTQp0cmlrZS9TTQp0cmlsYXRlcmFsL1MKdHJpbGJ5L1NNCnRyaWxsL0dTTUQKdHJpbGxpb24vU01ICnRyaWxsaW9udGgvTQp0cmlsbGlvbnRocwp0cmlsbGl1bS9NCnRyaWxvYml0ZS9TTQp0cmlsb2d5L1NNCnRyaW0vUE1ZUwp0cmltYXJhbi9NUwp0cmltZXN0ZXIvU00KdHJpbW1lZC9VCnRyaW1tZXIvU00KdHJpbW1lc3QKdHJpbW1pbmcvU00KdHJpbW1pbmdzL00KdHJpbW5lc3MvTQp0cmltb250aGx5CnRyaW5pdHJvdG9sdWVuZS9NCnRyaW5pdHkvU00KdHJpbmtldC9TTQp0cmlvL01TCnRyaXAvTVlTCnRyaXBhcnRpdGUKdHJpcGUvTQp0cmlwbGUvTUdEUwp0cmlwbGV0L1NNCnRyaXBsZXgvTVMKdHJpcGxpY2F0ZS9NR0RTCnRyaXBvZC9NUwp0cmlwb2RhbAp0cmlwb3MKdHJpcHBlZAp0cmlwcGVyL1NNCnRyaXBwaW5nCnRyaXB0eWNoL00KdHJpcHR5Y2hzCnRyaXB3aXJlL1MKdHJpcmVtZS9TTQp0cmlzZWN0L1NERwp0cmlzZWN0aW9uL00KdHJpdGUvRlBZVAp0cml0ZW5lc3MvRk0KdHJpdGVyCnRyaXRpdW0vTQp0cml1bXBoL0dNRAp0cml1bXBoYWwKdHJpdW1waGFsaXNtCnRyaXVtcGhhbGlzdAp0cml1bXBoYW50L1kKdHJpdW1waHMKdHJpdW12aXIvTVMKdHJpdW12aXJhdGUvU00KdHJpdmFsZW50CnRyaXZldC9NUwp0cml2aWEvTQp0cml2aWFsL1kKdHJpdmlhbGl0eS9TTQp0cml2aWFsaXphdGlvbi9NCnRyaXZpYWxpemUvR0RTCnRyaXZpdW0vTQp0cm9jaGFpYwp0cm9jaGVlL1NNCnRyb2QvQVUKdHJvZGRlbi9BCnRyb2dsb2R5dGUvU00KdHJvaWthL01TCnRyb2xsL1NHTUQKdHJvbGxleS9TTQp0cm9sbGV5YnVzL01TCnRyb2xsb3AvU00KdHJvbWJvbmUvTVMKdHJvbWJvbmlzdC9NUwp0cm9tcC9TR0QKdHJvbi9TCnRyb29wL1NaR01EUgp0cm9vcGVyL00KdHJvb3BzaGlwL01TCnRyb3BlL1NNCnRyb3BoeS9TTQp0cm9waWMvTVMKdHJvcGljYWwvWQp0cm9waWNzL00KdHJvcGlzbS9TTQp0cm9wb3NwaGVyZS9TTQp0cm90L01TCnRyb3RoL00KdHJvdHRlZAp0cm90dGVyL1NNCnRyb3R0aW5nCnRyb3ViYWRvdXIvTVMKdHJvdWJsZS9EU01HCnRyb3VibGVkL1UKdHJvdWJsZW1ha2VyL01TCnRyb3VibGVzaG9vdC9EUlpHUwp0cm91Ymxlc2hvb3Rlci9NCnRyb3VibGVzaG9vdGluZy9NCnRyb3VibGVzaG90CnRyb3VibGVzb21lL1kKdHJvdWdoL00KdHJvdWdocwp0cm91bmNlL0RSU1pHCnRyb3VuY2VyL00KdHJvdXBlL01aR0RSUwp0cm91cGVyL00KdHJvdXNlci9TTQp0cm91c2Vycy9NCnRyb3Vzc2VhdS9NCnRyb3Vzc2VhdXgKdHJvdXQvU00KdHJvdmUvU00KdHJvdy9EU0cKdHJvd2VsL01EU0cKdHJveS9TCnRydWFuY3kvTQp0cnVhbnQvR01EUwp0cnVjZS9TTQp0cnVjay9TWkdNRFIKdHJ1Y2tlci9NCnRydWNraW5nL00KdHJ1Y2tsZS9NR0RTCnRydWNrbG9hZC9TTQp0cnVjdWxlbmNlL00KdHJ1Y3VsZW50L1kKdHJ1ZGdlL01HRFMKdHJ1ZS9NVEdEUlMKdHJ1ZWxvdmUvU00KdHJ1ZmZsZS9NUwp0cnVnL1MKdHJ1aXNtL01TCnRydWx5L1UKdHJ1bXAvU0dNRAp0cnVtcGVyeS9NCnRydW1wZXQvWkdNRFJTCnRydW1wZXRlci9NCnRydW5jYXRlL0dORFMKdHJ1bmNhdGlvbi9NCnRydW5jaGVvbi9TTQp0cnVuZGxlL01aR0RSUwp0cnVuZGxlci9NCnRydW5rL1NHTQp0cnVzcy9HTURTCnRydXN0L0VTR01ECnRydXN0ZWUvTVMKdHJ1c3RlZXNoaXAvU00KdHJ1c3RmdWwvRVkKdHJ1c3RmdWxuZXNzL00KdHJ1c3RpbmcvWQp0cnVzdHdvcnRoaW5lc3MvTQp0cnVzdHdvcnRoeS9UUFIKdHJ1c3R5L1RSU00KdHJ1dGgvWk1SCnRydXRoZXIvTQp0cnV0aGZ1bC9VWVAKdHJ1dGhmdWxuZXNzL1VNCnRydXRoaW5lc3MKdHJ1dGhzL1UKdHJ5J3MKdHJ5L0FHRFMKdHJ5aW5nL1kKdHJ5b3V0L1NNCnRyeXB0b3BoYW4KdHJ5c3QvU01ERwp0c2FyaXN0cwp0c2V0c2UvTVMKdHNwCnRzdW5hbWkvU00KdHR5cwp0dWIvU1pHTURSCnR1YmEvTVMKdHViYWwKdHViYnkvVFIKdHViZS9NUwp0dWJlbGVzcy9NCnR1YmVyL00KdHViZXJjbGUvU00KdHViZXJjdWxhcgp0dWJlcmN1bGluL00KdHViZXJjdWxvc2lzL00KdHViZXJjdWxvdXMKdHViZXJvc2UvTQp0dWJlcm91cwp0dWJmdWwvTVMKdHViaW5nL00KdHVidWxhcgp0dWJ1bGUvTVMKdHVjay9NRFJTWkcKdHVja2VyL01ERwp0dWZ0L01EUlNaRwp0dWZ0ZXIvTQp0dWcvU00KdHVnYm9hdC9NUwp0dWdnZWQKdHVnZ2luZwp0dWl0aW9uL0lNCnR1bGFyZW1pYS9NCnR1bGlwL1NNCnR1bGxlL00KdHVtL1MKdHVtYmxlL0RSU01aRwp0dW1ibGVkb3duCnR1bWJsZXIvTQp0dW1ibGV3ZWVkL1NNCnR1bWJsaW5nL00KdHVtYnJlbC9TTQp0dW1lc2NlbmNlL00KdHVtZXNjZW50CnR1bWlkCnR1bWlkaXR5L00KdHVtbXkvU00KdHVtb3IvU00KdHVtb3JvdXMKdHVtdWx0L1NNCnR1bXVsdHVvdXMvWQp0dW4vU1pHTURSCnR1bmEvTVMKdHVuZHJhL1NNCnR1bmUvTVMKdHVuZWZ1bC9ZUAp0dW5lZnVsbmVzcy9NCnR1bmVsZXNzL1kKdHVuZXIvTQp0dW5ldXAvU00KdHVuZ3N0ZW4vTQp0dW5pYy9TTQp0dW5uZWwvSlNNRFJaRwp0dW5uZWxlci9NCnR1bm55L1NNCnR1cGxlL1MKdHVwcGVuY2UKdHVwcGVubnkKdHVxdWUvU00KdHVyYmFuL1NNRAp0dXJiaWQKdHVyYmlkaXR5L00KdHVyYmluZS9TTQp0dXJiby9TTQp0dXJib2NoYXJnZS9aR0RSUwp0dXJib2NoYXJnZXIvTQp0dXJib2Zhbi9TTQp0dXJib2pldC9TTQp0dXJib3Byb3AvU00KdHVyYm90L1NNCnR1cmJ1bGVuY2UvTQp0dXJidWxlbnQvWQp0dXJkL01TCnR1cmR1Y2tlbi9TTQp0dXJlZW4vU00KdHVyZi9NRFNHCnR1cmZ5CnR1cmdpZC9ZCnR1cmdpZGl0eS9NCnR1cmtleS9TTQp0dXJtZXJpYy9TTQp0dXJtb2lsL01TCnR1cm4vQU1EUlNaRwp0dXJuYWJvdXQvU00KdHVybmFyb3VuZC9TTQp0dXJuYnVja2xlL1NNCnR1cm5jb2F0L1NNCnR1cm5lci9BTQp0dXJuaW5nL01TCnR1cm5pcC9TTQp0dXJua2V5L01TCnR1cm5vZmYvTVMKdHVybm91dC9NUwp0dXJub3Zlci9NUwp0dXJucGlrZS9NUwp0dXJuc3RpbGUvU00KdHVybnRhYmxlL1NNCnR1cnBlbnRpbmUvTQp0dXJwaXR1ZGUvTQp0dXJwcwp0dXJxdW9pc2UvU00KdHVycmV0L1NNRAp0dXJ0bGUvU00KdHVydGxlZG92ZS9TTQp0dXJ0bGVuZWNrL1NNRAp0dXNoL01TCnR1c2svTURTCnR1c3NsZS9EU01HCnR1c3NvY2svTVMKdHVzc29ja3kKdHV0L1NNCnR1dGVsYWdlL00KdHV0ZWxhcnkKdHV0b3IvU01ERwp0dXRvcmVkL1UKdHV0b3JpYWwvU00KdHV0b3JzaGlwL00KdHV0dGVkCnR1dHRpL1NNCnR1dHRpbmcKdHV0dS9NUwp0dXgvTVMKdHV4ZWRvL1NNCnR3YWRkbGUvTVpHRFJTCnR3YWRkbGVyL00KdHdhaW4vTQp0d2FuZy9TTURHCnR3YW5neS9SVAp0d2FzCnR3YXQvUwp0d2Vhay9TTURHCnR3ZWUKdHdlZWQvU00KdHdlZWRzL00KdHdlZWR5L1JUCnR3ZWVuCnR3ZWV0J3MKdHdlZXQvQVNERwp0d2VldGVyL1NNCnR3ZWV6ZXJzL00KdHdlbGZ0aC9NCnR3ZWxmdGhzCnR3ZWx2ZS9TTQp0d2VsdmVtb250aC9NCnR3ZWx2ZW1vbnRocwp0d2VudGlldGgvTQp0d2VudGlldGhzCnR3ZW50eS9TTUgKdHdlcmsvU0RHCnR3ZXJwL1NNCnR3aWNlCnR3aWRkbGUvTUdEUwp0d2lkZGx5CnR3aWcvTVMKdHdpZ2dlZAp0d2lnZ2luZwp0d2lnZ3kvVFIKdHdpbGlnaHQvTQp0d2lsaXQKdHdpbGwvTUQKdHdpbi9NRFJTWkcKdHdpbmUvU00KdHdpbmVyL00KdHdpbmdlL0RTTUcKdHdpbmsvU1kKdHdpbmtsZS9NR0pEUwp0d2lua2xpbmcvTQp0d2lubmVkCnR3aW5uaW5nCnR3aW5zZXQvUwp0d2lybC9TTURSWkcKdHdpcmxlci9NCnR3aXJseQp0d2lzdCdzCnR3aXN0L1VTREcKdHdpc3Rlci9NUwp0d2lzdHkvVFIKdHdpdC9NUwp0d2l0Y2gvR01EUwp0d2l0Y2h5L1JUCnR3aXR0ZWQKdHdpdHRlci9NRFNHCnR3aXR0ZXJ5CnR3aXR0aW5nCnR3aXh0CnR3by9TTQp0d29mZXIvU00KdHdvZm9sZAp0d29wZW5jZS9TTQp0d29wZW5ueQp0d29zb21lL1NNCnR3cAp0eWNvb24vU00KdHlpbmcvQVUKdHlrZS9NUwp0eW1wYW5pL00KdHltcGFuaWMKdHltcGFuaXN0L01TCnR5bXBhbnVtL1NNCnR5cGUncwp0eXBlL0FHRFMKdHlwZWNhc3QvR1MKdHlwZWZhY2UvTVMKdHlwZXNjcmlwdC9NUwp0eXBlc2V0L1MKdHlwZXNldHRlci9NUwp0eXBlc2V0dGluZy9NCnR5cGV3cml0ZS9SU1pHCnR5cGV3cml0ZXIvTQp0eXBld3JpdGluZy9NCnR5cGV3cml0dGVuCnR5cGV3cm90ZQp0eXBob2lkL00KdHlwaG9vbi9NUwp0eXBodXMvTQp0eXBpY2FsL1VZCnR5cGljYWxpdHkvTQp0eXBpZmljYXRpb24vTQp0eXBpZnkvTkdEUwp0eXBpbmcvTQp0eXBpc3QvU00KdHlwby9NUwp0eXBvZ3JhcGhlci9TTQp0eXBvZ3JhcGhpYwp0eXBvZ3JhcGhpY2FsL1kKdHlwb2dyYXBoeS9NCnR5cG9sb2d5L1NNCnR5cmFubmljCnR5cmFubmljYWwvWQp0eXJhbm5pemUvR0RTCnR5cmFubm9zYXVyL01TCnR5cmFubm9zYXVydXMvTVMKdHlyYW5ub3VzCnR5cmFubnkvU00KdHlyYW50L1NNCnR5cm8vTVMKdS9TCnViaXF1aXRvdXMvWQp1YmlxdWl0eS9NCnVkZGVyL1NNCnVmb2xvZ2lzdC9TTQp1Zm9sb2d5L00KdWdoCnVnbGluZXNzL00KdWdseS9SVFAKdWgKdWhmCnVrYXNlL1NNCnVrdWxlbGUvU00KdWxjZXIvU00KdWxjZXJhdGUvWERTR04KdWxjZXJhdGlvbi9NCnVsY2Vyb3VzCnVsbmEvTQp1bG5hZQp1bG5hcgp1bHN0ZXIvTVMKdWx0CnVsdGVyaW9yCnVsdGltYXRlL01ZCnVsdGltYXR1bS9NUwp1bHRpbW8KdWx0cmEvU00KdWx0cmFjb25zZXJ2YXRpdmUvU00KdWx0cmFoaWdoCnVsdHJhbGlnaHQvU00KdWx0cmFtYXJpbmUvTQp1bHRyYW1vZGVybgp1bHRyYXNvbmljCnVsdHJhc29uaWNhbGx5CnVsdHJhc291bmQvTVMKdWx0cmF2aW9sZXQvTQp1bHVsYXRlL0RTR05YCnVsdWxhdGlvbi9NCnVtCnVtYmVsL1NNCnVtYmVyL00KdW1iaWxpY2FsCnVtYmlsaWNpCnVtYmlsaWN1cy9NCnVtYnJhL1NNCnVtYnJhZ2UvTQp1bWJyZWxsYS9TTQp1bWlhay9TTQp1bWxhdXQvTVMKdW1wL1NHTUQKdW1waXJlL01HRFMKdW1wdGVlbi9ICnVuYWJyaWRnZWQvTVMKdW5hY2NlcHRhYmlsaXR5CnVuYWNjZXB0YWJsZQp1bmFjY29tbW9kYXRpbmcKdW5hY2NvdW50YWJseQp1bmFkdmVudHVyb3VzCnVuYWVzdGhldGljCnVuYWx0ZXJhYmx5CnVuYW1iaXRpb3VzCnVuYW5pbWl0eS9NCnVuYW5pbW91cy9ZCnVuYXBwYXJlbnQKdW5hcHBldGl6aW5nCnVuYXBwcmVjaWF0aXZlCnVuYXNzZXJ0aXZlCnVuYXNzdW1pbmcvWQp1bmF2YWlsaW5nL1kKdW5hd2FyZS9TCnVuYmVrbm93bnN0CnVuYmVuZC9TRwp1bmJlbnQKdW5iaWQKdW5ibGlua2luZy9ZCnVuYmx1c2hpbmcvWQp1bmJvc29tL0RHCnVuYm91bmQvRAp1bmJyZWFrYWJsZQp1bmJyb2tlbgp1bmNhbm55L1QKdW5jYXAvUwp1bmNhcmluZwp1bmNhdGFsb2d1ZWQKdW5jZWFzaW5nL1kKdW5jaGFuZ2VhYmxlCnVuY2hhcmFjdGVyaXN0aWMKdW5jaGFyaXRhYmxlCnVuY2hhc3RlL1JUCnVuY2lhbC9NCnVuY2xlL1NNCnVuY2xlYW4vRFJQVAp1bmNsZWFubHkvVAp1bmNsZWFyL0RSVAp1bmNvbWZvcnRhYmxlCnVuY29tbW9uL1QKdW5jb21wbGFpbmluZy9ZCnVuY29tcGxpY2F0ZWQKdW5jb21wcmVoZW5kaW5nL1kKdW5jb21wcm9taXNpbmcvWQp1bmNvbmRpdGlvbmFsL1kKdW5jb25nZW5pYWwKdW5jb25zY2lvbmFibGUKdW5jb25zY2lvbmFibHkKdW5jb25zY2lvdXMvTQp1bmNvbnN0aXR1dGlvbmFsL1kKdW5jb250cm9sbGFibHkKdW5jb250cm92ZXJzaWFsCnVuY29vbAp1bmNvb3BlcmF0aXZlCnVuY291dGgvWQp1bmNydXNoYWJsZQp1bmN0aW9uL1NNCnVuY3R1b3VzL1lQCnVuY3R1b3VzbmVzcy9NCnVuY3V0CnVuZGF1bnRlZC9ZCnVuZGVjaWRlZC9TTQp1bmRlbW9uc3RyYXRpdmUvWQp1bmRlbmlhYmx5CnVuZGVyCnVuZGVyYWNoaWV2ZS9MWkdEUlMKdW5kZXJhY2hpZXZlci9NCnVuZGVyYWN0L1NERwp1bmRlcmFnZQp1bmRlcmFwcHJlY2lhdGVkCnVuZGVyYXJtL1NNCnVuZGVyYmVsbHkvU00KdW5kZXJiaWQvUwp1bmRlcmJpZGRpbmcKdW5kZXJicnVzaC9NCnVuZGVyY2FycmlhZ2UvTVMKdW5kZXJjaGFyZ2UvTUdEUwp1bmRlcmNsYXNzL01TCnVuZGVyY2xhc3NtYW4vTQp1bmRlcmNsYXNzbWVuCnVuZGVyY2xvdGhlcy9NCnVuZGVyY2xvdGhpbmcvTQp1bmRlcmNvYXQvR0pTTUQKdW5kZXJjb2F0aW5nL00KdW5kZXJjb3Zlcgp1bmRlcmN1cnJlbnQvU00KdW5kZXJjdXQvU00KdW5kZXJjdXR0aW5nCnVuZGVyZGV2ZWxvcGVkCnVuZGVyZGV2ZWxvcG1lbnQvTQp1bmRlcmRvZy9TTQp1bmRlcmRvbmUKdW5kZXJlbXBsb3llZAp1bmRlcmVtcGxveW1lbnQvTQp1bmRlcmVzdGltYXRlL0RTTUdOWAp1bmRlcmVzdGltYXRpb24vTQp1bmRlcmV4cG9zZS9HRFMKdW5kZXJleHBvc3VyZS9NUwp1bmRlcmZlZAp1bmRlcmZlZWQvR1MKdW5kZXJmbG9vcgp1bmRlcmZsb3cKdW5kZXJmb290CnVuZGVyZnVuZGVkCnVuZGVyZnVyL00KdW5kZXJnYXJtZW50L1NNCnVuZGVyZ28vRwp1bmRlcmdvZXMKdW5kZXJnb25lCnVuZGVyZ3JhZC9TCnVuZGVyZ3JhZHVhdGUvU00KdW5kZXJncm91bmQvTVMKdW5kZXJncm93dGgvTQp1bmRlcmhhbmQKdW5kZXJoYW5kZWQvUFkKdW5kZXJoYW5kZWRuZXNzL00KdW5kZXJsYWluCnVuZGVybGF5L1NNCnVuZGVybGllL1MKdW5kZXJsaW5lL01HRFMKdW5kZXJsaW5nL01TCnVuZGVybGlwL1NNCnVuZGVybHlpbmcKdW5kZXJtYW5uZWQKdW5kZXJtZW50aW9uZWQKdW5kZXJtaW5lL0dEUwp1bmRlcm1vc3QKdW5kZXJuZWF0aC9NCnVuZGVybmVhdGhzCnVuZGVybm91cmlzaGVkCnVuZGVybm91cmlzaG1lbnQvTQp1bmRlcnBhaWQKdW5kZXJwYW50cy9NCnVuZGVycGFydC9NUwp1bmRlcnBhc3MvTVMKdW5kZXJwYXkvR1NMCnVuZGVycGF5bWVudC9TTQp1bmRlcnBpbi9TCnVuZGVycGlubmVkCnVuZGVycGlubmluZy9NUwp1bmRlcnBsYXkvREdTCnVuZGVycG9wdWxhdGVkCnVuZGVycHJpdmlsZWdlZAp1bmRlcnByb2R1Y3Rpb24vTQp1bmRlcnJhdGUvR0RTCnVuZGVycmVwcmVzZW50ZWQKdW5kZXJzY29yZS9EU01HCnVuZGVyc2VhL1MKdW5kZXJzZWNyZXRhcnkvU00KdW5kZXJzZWxsL0dTCnVuZGVyc2V4ZWQKdW5kZXJzaGlydC9TTQp1bmRlcnNob290L1NHCnVuZGVyc2hvcnRzL00KdW5kZXJzaG90CnVuZGVyc2lkZS9NUwp1bmRlcnNpZ24vREdTCnVuZGVyc2lnbmVkL00KdW5kZXJzaXplZAp1bmRlcnNraXJ0L1NNCnVuZGVyc29sZAp1bmRlcnN0YWZmZWQKdW5kZXJzdGFuZC9TR0JKCnVuZGVyc3RhbmRhYmx5CnVuZGVyc3RhbmRpbmcvTVkKdW5kZXJzdGF0ZS9EU0xHCnVuZGVyc3RhdGVtZW50L1NNCnVuZGVyc3Rvb2QKdW5kZXJzdHVkeS9HRFNNCnVuZGVydGFrZS9aR0pSUwp1bmRlcnRha2VuCnVuZGVydGFrZXIvTQp1bmRlcnRha2luZy9NCnVuZGVydGhpbmdzL00KdW5kZXJ0b25lL01TCnVuZGVydG9vawp1bmRlcnRvdy9TTQp1bmRlcnVzZWQKdW5kZXJ1dGlsaXplZAp1bmRlcnZhbHVhdGlvbi9NCnVuZGVydmFsdWUvRFNHCnVuZGVyd2F0ZXIKdW5kZXJ3YXkKdW5kZXJ3ZWFyL00KdW5kZXJ3ZWlnaHQvTQp1bmRlcndlbnQKdW5kZXJ3aGVsbS9ER1MKdW5kZXJ3aXJlL0RTCnVuZGVyd29ybGQvTVMKdW5kZXJ3cml0ZS9aR1JTCnVuZGVyd3JpdGVyL00KdW5kZXJ3cml0dGVuCnVuZGVyd3JvdGUKdW5kZXNpcmFibGUvTVMKdW5kaWVzL00KdW5kbwp1bmRvdWJ0ZWQvWQp1bmRyYW1hdGljCnVuZHVlCnVuZHVsYW50CnVuZHVsYXRlL0RTWEdOCnVuZHVsYXRpb24vTQp1bmR5aW5nCnVuZWFydGhsaW5lc3MvTQp1bmVhc2UvTQp1bmVhc3kvVAp1bmVhdGFibGUKdW5lY29ub21pYwp1bmVtcGxveWVkL00KdW5lbmRpbmcKdW5lbnRlcnByaXNpbmcKdW5lcXVhbC9EWQp1bmVycmluZy9ZCnVuZXNzZW50aWFsCnVuZXZlbi9ZCnVuZXhjZXB0aW9uYWJseQp1bmV4Y2l0ZWQKdW5leGNpdGluZwp1bmV4cGVjdGVkL1lQCnVuZXhwZWN0ZWRuZXNzL00KdW5mYWlsaW5nL1kKdW5mYWlyL1BUUlkKdW5mYWx0ZXJpbmcKdW5mYW1pbGlhcgp1bmZhdGhvbWFibHkKdW5mZWQKdW5mZWVsaW5nL1kKdW5mZW1pbmluZQp1bmZpdC9TCnVuZml0dGluZwp1bmZpeC9HRFMKdW5mbGFnZ2luZy9ZCnVuZmxhcHBhYmlsaXR5L00KdW5mbGFwcGFibGUKdW5mbGFwcGFibHkKdW5mbGF0dGVyaW5nCnVuZmxpbmNoaW5nL1kKdW5mb3JnZXR0YWJseQp1bmZvcmdpdmFibHkKdW5mb3J0dW5hdGUvTVMKdW5mcmllbmRseS9UCnVuZnJvY2svREcKdW5mcnVpdGZ1bAp1bmZ1bm55CnVuZ2FpbmxpbmVzcy9NCnVuZ2Fpbmx5L1JQVAp1bmdlbmVyb3VzCnVuZ2VudGxlCnVuZ29kbHkvVAp1bmdyYWNlZnVsL1kKdW5ncnVkZ2luZwp1bmd1YXJkZWQKdW5ndWVudC9TTQp1bmd1bGF0ZS9NUwp1bmhhbmR5L1QKdW5oYXBweS9UCnVuaGVhbHRoZnVsCnVuaGVhbHRoeS9UCnVuaGlzdG9yaWNhbAp1bmhvbHkvVAp1bmh1cnQKdW5pY2FtZXJhbAp1bmljZWxsdWxhcgp1bmljb3JuL1NNCnVuaWN5Y2xlL1NNCnVuaWRpcmVjdGlvbmFsCnVuaWZpY2F0aW9uL0FNCnVuaWZvcm0vU01EWUcKdW5pZm9ybWl0eS9NCnVuaWZ5L0FHRFNOCnVuaWxhdGVyYWwvWQp1bmlsYXRlcmFsaXNtCnVuaW1wb3J0YW50CnVuaW1wcmVzc2l2ZQp1bmluZm9ybWF0aXZlCnVuaW5oaWJpdGVkL1kKdW5pbnN0YWxsL0JTWkdEUgp1bmluc3VyZWQKdW5pbnRlbGxpZ2VudAp1bmludGVuZGVkCnVuaW50ZXJlc3RpbmcKdW5pbnRlcnJ1cHRlZC9ZCnVuaW50ZXJydXB0aWJsZQp1bmludml0aW5nCnVuaW9uL0FTTQp1bmlvbmlzbS9NCnVuaW9uaXN0L01TCnVuaXF1ZS9ZVFJQCnVuaXF1ZW5lc3MvTQp1bmlzZXgvTQp1bmlzb24vTQp1bml0YXJ5CnVuaXRlL0FFR1NECnVuaXRlZGx5CnVuaXRpZXMKdW5pdGl6ZS9EU0cKdW5pdHkvRU0KdW5pdmFsZW50CnVuaXZhbHZlL1NNCnVuaXZlcnNhbC9NWVMKdW5pdmVyc2FsaXR5L00KdW5pdmVyc2FsaXplL0RTRwp1bml2ZXJzZS9TTQp1bml2ZXJzaXR5L1NNCnVuanVzdC9ZCnVua2VtcHQKdW5raW5kL1QKdW5raW5kbHkvVAp1bmtub3dhYmxlL00KdW5rbm93bi9TTQp1bmxlYWRlZC9NCnVubGVzcwp1bmxpa2UvUEIKdW5saWtlbHkvVAp1bmxpdAp1bmxvY2svRFNHCnVubG92YWJsZQp1bmxvdmVseS9UUgp1bmxvdmluZwp1bmx1Y2t5L1QKdW5tYW5seS9UCnVubWFycmllZAp1bm1lYW5pbmcKdW5tZW50aW9uYWJsZS9NUwp1bm1lbnRpb25hYmxlcy9NCnVubWV0CnVubWluZGZ1bAp1bm1pc3NhYmxlCnVubWlzdGFrYWJseQp1bm1vcmFsCnVubW92YWJsZQp1bm11c2ljYWwKdW5uZWNlc3NhcnkKdW5uZXJ2aW5nL1kKdW5vYnNlcnZhbnQKdW5vZmZlbnNpdmUKdW5vZmZpY2lhbC9ZCnVub3JpZ2luYWwKdW5wZW9wbGUKdW5wZXJjZXB0aXZlCnVucGVyc3Vhc2l2ZQp1bnBpY2svR0RTCnVucGluL1MKdW5wbGVhc2luZwp1bnBvbGl0aWNhbAp1bnBvcHVsYXIKdW5wcmFjdGljYWwKdW5wcmVjZWRlbnRlZC9ZCnVucHJvZmVzc2lvbmFsL1kKdW5wcm9taXNpbmcKdW5wcm9waXRpb3VzCnVucXVlc3Rpb25pbmcvWQp1bnF1aWV0L1RSCnVucmVhZC9CCnVucmVhZHkKdW5yZWFsCnVucmVhc29uaW5nCnVucmVnZW5lcmF0ZQp1bnJlbGF0ZWQKdW5yZWxlbnRpbmcvWQp1bnJlbGlldmVkL1kKdW5yZW1hcmthYmxlCnVucmVtaXR0aW5nL1kKdW5yZXBlbnRhbnQKdW5yZXBvcnRlZAp1bnJlcHJlc2VudGF0aXZlCnVucmVzdC9NCnVucmlwZS9UUgp1bnJvbGwvR0RTCnVucm9tYW50aWMKdW5ydWxpbmVzcy9NCnVucnVseS9SVFAKdW5zYWZlL1lUUgp1bnNhbGVhYmxlCnVuc2F2b3J5CnVuc2NhdGhlZAp1bnNlYXJjaGFibGUKdW5zZWVpbmcvWQp1bnNlZW1seS9UCnVuc2Vlbi9NCnVuc2VudGltZW50YWwKdW5zZXQKdW5zaGFrYWJsZQp1bnNoYWthYmx5CnVuc2hhcGVseQp1bnNob2NrYWJsZQp1bnNob3JuCnVuc2lnaHRsaW5lc3MvTQp1bnNpZ2h0bHkvUFQKdW5zbWlsaW5nCnVuc29jaWFibGUKdW5zb2NpYWwKdW5zb2xkCnVuc291bmQvUFJZVAp1bnNwZWFrYWJsZQp1bnNwZWFrYWJseQp1bnNwZWNpZmljCnVuc3BlY3RhY3VsYXIKdW5zcG9ydGluZwp1bnN0YWJsZQp1bnN0ZWFkeS9UUlAKdW5zdGludGluZy9ZCnVuc3RyYXBwaW5nCnVuc3Vic3RhbnRpYWwKdW5zdWJ0bGUKdW5zdWl0YWJsZQp1bnN1cmUKdW5zdXNwZWN0aW5nL1kKdW5zeW1tZXRyaWNhbAp1bnRhY3RmdWwKdW50aGlua2FibHkKdW50aGlua2luZy9ZCnVudGlkeS9QVFIKdW50aWwKdW50aW1lbHkvVAp1bnRpcmluZy9ZCnVudG91Y2hhYmxlL01TCnVudG93YXJkCnVudHJ1ZS9SVAp1bnRydXN0d29ydGh5CnVudHJ1dGgvTQp1bnV0dGVyYWJsZQp1bnV0dGVyYWJseQp1bndhcnJhbnRhYmxlCnVud2FyeS9UCnVud2F2ZXJpbmcKdW53ZWQKdW53ZWxjb21lL0cKdW53ZWxsCnVud2llbGRpbmVzcy9NCnVud2llbGR5L1RSUAp1bndpc2UvUllUCnVud29ycmllZAp1bndvcnRoeS9UCnVud291bmQKdW53cmFwcGluZwp1bnlpZWxkaW5nCnVwL1MKdXBiZWF0L01TCnVwYnJhaWQvU0dECnVwYnJpbmdpbmcvTVMKdXBjaHVjay9TR0QKdXBjb21pbmcKdXBjb3VudHJ5L00KdXBkYXRlL01HRFJTCnVwZHJhZnQvTVMKdXBlbmQvU0dECnVwZnJvbnQKdXBncmFkZS9NR0RTCnVwaGVhdmFsL01TCnVwaGVsZAp1cGhpbGwvTVMKdXBob2xkL1pHUlMKdXBob2xkZXIvTQp1cGhvbHN0ZXIvQVNHRAp1cGhvbHN0ZXJlci9NUwp1cGhvbHN0ZXJ5L00KdXBrZWVwL00KdXBsYW5kL01TCnVwbGlmdC9KU01ERwp1cGxvYWQvU0RHCnVwbWFya2V0CnVwbW9zdAp1cG9uCnVwcGVkCnVwcGVyL1NNCnVwcGVyY2FzZS9NCnVwcGVyY2xhc3NtYW4vTQp1cHBlcmNsYXNzbWVuCnVwcGVyY2xhc3N3b21hbgp1cHBlcmNsYXNzd29tZW4KdXBwZXJjdXQvTVMKdXBwZXJjdXR0aW5nCnVwcGVybW9zdAp1cHBpbmcKdXBwaXNoCnVwcGl0eQp1cHJhaXNlL0RTRwp1cHJlYXIvR1NECnVwcmlnaHQvTVlQUwp1cHJpZ2h0bmVzcy9NCnVwcmlzaW5nL1NNCnVwcml2ZXIKdXByb2FyL1NNCnVwcm9hcmlvdXMvWQp1cHJvb3QvR1NECnVwc2NhbGUKdXBzZXQvU00KdXBzZXR0aW5nCnVwc2hvdC9TTQp1cHNpZGUvU00KdXBzaWxvbi9NUwp1cHN0YWdlL0dEUwp1cHN0YWlycwp1cHN0YW5kaW5nCnVwc3RhcnQvTURTRwp1cHN0YXRlL00KdXBzdHJlYW0KdXBzdHJva2UvU00KdXBzdXJnZS9NR0RTCnVwc3dpbmcvTVMKdXB0YWtlL1NNCnVwdGVtcG8KdXB0aHJ1c3QvR1NNCnVwdGljay9TTQp1cHRpZ2h0CnVwdG93bi9NCnVwdHJlbmQKdXB0dXJuL0dTTUQKdXB3YXJkL1NZCnVwd2luZAp1cmFjaWwvTQp1cmFuaXVtL00KdXJiYW4KdXJiYW5lL1JZVAp1cmJhbml0eS9NCnVyYmFuaXphdGlvbi9NCnVyYmFuaXplL0RTRwp1cmJhbm9sb2dpc3QvTVMKdXJiYW5vbG9neS9NCnVyY2hpbi9TTQp1cmVhL00KdXJlbWlhL00KdXJlbWljCnVyZXRlci9TTQp1cmV0aGFuZS9NCnVyZXRocmEvTQp1cmV0aHJhZQp1cmV0aHJhbAp1cmdlL01HRFMKdXJnZW5jeS9NCnVyZ2VudC9ZCnVyaWMKdXJpbmFsL1NNCnVyaW5hbHlzZXMKdXJpbmFseXNpcy9NCnVyaW5hcnkKdXJpbmF0ZS9HTkRTCnVyaW5hdGlvbi9NCnVyaW5lL00KdXJuL1NNCnVyb2dlbml0YWwKdXJvbG9naWNhbAp1cm9sb2dpc3QvTVMKdXJvbG9neS9NCnVyc2luZQp1cnRpY2FyaWEvTQp1c2FiaWxpdHkvTQp1c2FibGUvVUEKdXNhZ2UvU00KdXNlL0FFRFNNRwp1c2VkL1UKdXNlZnVsL1BZCnVzZWZ1bG5lc3MvTQp1c2VsZXNzL1lQCnVzZWxlc3NuZXNzL00KdXNlci9NUwp1c2VybmFtZS9NUwp1c2hlci9TTURHCnVzaGVyZXR0ZS9TTQp1c3UKdXN1YWwncwp1c3VhbC9VWQp1c3VyZXIvU00KdXN1cmlvdXMKdXN1cnAvU0RSWkcKdXN1cnBhdGlvbi9NCnVzdXJwZXIvTQp1c3VyeS9NCnV0ZW5zaWwvU00KdXRlcmkKdXRlcmluZQp1dGVydXMvTQp1dGlsaXRhcmlhbi9NUwp1dGlsaXRhcmlhbmlzbS9NCnV0aWxpdHkvU00KdXRpbGl6YXRpb24vTQp1dGlsaXplL0dCRFMKdXRtb3N0L00KdXRvcGlhL1NNCnV0dGVyL1NEWUcKdXR0ZXJhbmNlL1NNCnV0dGVybW9zdC9NCnV2ZWl0aXMKdXZ1bGEvU00KdXZ1bGFyL01TCnV4b3Jpb3VzCnYvQVMKdmFjL1MKdmFjYW5jeS9TTQp2YWNhbnQvWQp2YWNhdGUvRFNHCnZhY2F0aW9uL1pHTURSUwp2YWNhdGlvbmVyL00KdmFjYXRpb25pc3QvU00KdmFjY2luYXRlL0dORFNYCnZhY2NpbmF0aW9uL00KdmFjY2luZS9TTQp2YWNpbGxhdGUvWEdORFMKdmFjaWxsYXRpb24vTQp2YWN1aXR5L00KdmFjdW9sZS9NUwp2YWN1b3VzL1lQCnZhY3VvdXNuZXNzL00KdmFjdXVtL0dTTUQKdmFnYWJvbmQvU01ERwp2YWdhYm9uZGFnZS9NCnZhZ2FyaW91cwp2YWdhcnkvU00KdmFnaW5hL1NNCnZhZ2luYWUKdmFnaW5hbC9ZCnZhZ3JhbmN5L00KdmFncmFudC9NUwp2YWd1ZS9SWVRQCnZhZ3VlbmVzcy9NCnZhZ3VzCnZhaW4vUllUCnZhaW5nbG9yaW91cy9ZCnZhaW5nbG9yeS9NCnZhbAp2YWxhbmNlL01TCnZhbGUvTVMKdmFsZWRpY3Rpb24vTVMKdmFsZWRpY3Rvcmlhbi9TTQp2YWxlZGljdG9yeS9TTQp2YWxlbmNlL01TCnZhbGVuY3kvU00KdmFsZW50aW5lL1NNCnZhbGV0L1NNREcKdmFsZXR1ZGluYXJpYW4vTVMKdmFsZXR1ZGluYXJpYW5pc20vTQp2YWxpYW5jZS9NCnZhbGlhbnQvWQp2YWxpZC9ZCnZhbGlkYXRlL0lHTkRTCnZhbGlkYXRpb24vSU0KdmFsaWRhdGlvbnMKdmFsaWRpdHkvSU0KdmFsaWRuZXNzL00KdmFsaXNlL1NNCnZhbGxleS9TTQp2YWxvci9NCnZhbG9yb3VzL1kKdmFsdWFibGUvTVMKdmFsdWF0ZS9EU0cKdmFsdWF0aW9uL0NBTVMKdmFsdWUncwp2YWx1ZS9DQUdTRAp2YWx1ZWxlc3MKdmFsdWVyL1NNCnZhbHZlL0RTTUcKdmFsdmVsZXNzCnZhbHZ1bGFyCnZhbW9vc2UvRFNHCnZhbXAvQU1ER1MKdmFtcGlyZS9TTQp2YW4vU00KdmFuYWRpdW0vTQp2YW5kYWwvU00KdmFuZGFsaXNtL00KdmFuZGFsaXplL0RTRwp2YW5lL01TCnZhbmd1YXJkL01TCnZhbmlsbGEvU00KdmFuaXNoL0pEU0cKdmFuaXR5L1NNCnZhbm5lZAp2YW5uaW5nCnZhbnF1aXNoL1pHRFJTCnZhbnF1aXNoZXIvTQp2YW50YWdlL1NNCnZhcGUvR0RTCnZhcGlkL1lQCnZhcGlkaXR5L00KdmFwaWRuZXNzL00KdmFwb3IvU00KdmFwb3JpemF0aW9uL00KdmFwb3JpemUvRFJTWkcKdmFwb3JpemVyL00KdmFwb3JvdXMKdmFwb3J3YXJlCnZhcG9yeQp2YXF1ZXJvL01TCnZhci9TCnZhcmlhYmlsaXR5L0lNCnZhcmlhYmxlL0lTTQp2YXJpYWJseS9JCnZhcmlhbmNlL1NNCnZhcmlhbnQvTVMKdmFyaWF0ZS9OWAp2YXJpYXRpb24vTQp2YXJpY29sb3JlZAp2YXJpY29zZQp2YXJpZWQvVQp2YXJpZWdhdGUvRFNHTgp2YXJpZWdhdGlvbi9NCnZhcmlldGFsL1NNCnZhcmlldHkvU00KdmFyaW91cy9ZCnZhcmxldC9TTQp2YXJtaW50L01TCnZhcm5pc2gvR01EUwp2YXJuaXNoZWQvVQp2YXJzaXR5L1NNCnZhcnkvRFNHCnZhcnlpbmcvVQp2YXNjdWxhcgp2YXNlL01TCnZhc2VjdG9teS9TTQp2YXNvY29uc3RyaWN0aW9uCnZhc29tb3Rvcgp2YXNzYWwvU00KdmFzc2FsYWdlL00KdmFzdC9NUllUU1AKdmFzdG5lc3MvTQp2YXQvU00KdmF0dGVkCnZhdHRpbmcKdmF1ZGV2aWxsZS9NCnZhdWRldmlsbGlhbi9NUwp2YXVsdC9TTURSWkcKdmF1bHRlci9NCnZhdWx0aW5nL00KdmF1bnQvU01ERwp2Ygp2ZWFsL00KdmVjdG9yL1NHTUQKdmVlamF5L1NNCnZlZXAvTVMKdmVlci9NREdTCnZlZy9NCnZlZ2FuL1NNCnZlZ2FuaXNtCnZlZ2VidXJnZXIvUwp2ZWdlcwp2ZWdldGFibGUvU00KdmVnZXRhcmlhbi9TTQp2ZWdldGFyaWFuaXNtL00KdmVnZXRhdGUvR05WRFMKdmVnZXRhdGlvbi9NCnZlZ2dlZAp2ZWdnZXMKdmVnZ2llL1NNCnZlZ2dpZWJ1cmdlci9TCnZlZ2dpbmcKdmVoZW1lbmNlL00KdmVoZW1lbmN5L00KdmVoZW1lbnQvWQp2ZWhpY2xlL01TCnZlaGljdWxhcgp2ZWlsJ3MKdmVpbC9VREdTCnZlaW4vTURHUwp2ZWxhCnZlbGFyL1NNCnZlbGQvTVMKdmVsbHVtL00KdmVsb2NpcGVkZS9NUwp2ZWxvY2l0eS9TTQp2ZWxvZHJvbWUvUwp2ZWxvdXIvTVMKdmVsdW0vTQp2ZWx2ZXQvTQp2ZWx2ZXRlZW4vTQp2ZWx2ZXR5CnZlbmFsL1kKdmVuYWxpdHkvTQp2ZW5hdGlvbi9NCnZlbmQvREdTCnZlbmRldHRhL1NNCnZlbmRpYmxlCnZlbmRvci9NUwp2ZW5lZXIvTURHUwp2ZW5lcmFiaWxpdHkvTQp2ZW5lcmFibGUKdmVuZXJhdGUvRFNHTgp2ZW5lcmF0aW9uL00KdmVuZXJlYWwKdmVuZ2VhbmNlL00KdmVuZ2VmdWwvQVkKdmVuaWFsCnZlbmlyZW1hbi9NCnZlbmlyZW1lbgp2ZW5pc29uL00KdmVub20vTQp2ZW5vbW91cy9ZCnZlbm91cwp2ZW50J3MKdmVudC9ER1MKdmVudGlsYXRlL0dORFMKdmVudGlsYXRpb24vTQp2ZW50aWxhdG9yL1NNCnZlbnRyYWwKdmVudHJpY2xlL1NNCnZlbnRyaWN1bGFyCnZlbnRyaWxvcXVpc20vTQp2ZW50cmlsb3F1aXN0L1NNCnZlbnRyaWxvcXV5L00KdmVudHVyZS9EU01HCnZlbnR1cmVzb21lL1BZCnZlbnR1cmVzb21lbmVzcy9NCnZlbnR1cm91cy9QWQp2ZW50dXJvdXNuZXNzL00KdmVudWUvQVNNCnZlcmFjaW91cy9ZCnZlcmFjaXR5L00KdmVyYW5kYS9TTQp2ZXJiL0tNUwp2ZXJiYWwvTVlTCnZlcmJhbGl6YXRpb24vTQp2ZXJiYWxpemUvR0RTCnZlcmJhdGltCnZlcmJlbmEvU00KdmVyYmlhZ2UvTVMKdmVyYm9zZS9ZCnZlcmJvc2l0eS9NCnZlcmJvdGVuCnZlcmRhbnQvWQp2ZXJkaWN0L1NNCnZlcmRpZ3Jpcy9HTURTCnZlcmR1cmUvTQp2ZXJnZSdzCnZlcmdlL0ZEU0cKdmVyZ2VyL01TCnZlcmlmaWFibGUvVQp2ZXJpZmljYXRpb24vTQp2ZXJpZmllZC9VCnZlcmlmeS9EU05HCnZlcmlseQp2ZXJpc2ltaWxpdHVkZS9NCnZlcml0YWJsZQp2ZXJpdGFibHkKdmVyaXR5L1NNCnZlcm1pY2VsbGkvTQp2ZXJtaWN1bGl0ZS9NCnZlcm1pZm9ybQp2ZXJtaWxpb24vTQp2ZXJtaW4vTQp2ZXJtaW5vdXMKdmVybW91dGgvTQp2ZXJuYWN1bGFyL01TCnZlcm5hbAp2ZXJuaWVyL1NNCnZlcm9uaWNhL00KdmVycnVjYS9TTQp2ZXJydWNhZQp2ZXJzYQp2ZXJzYXRpbGUKdmVyc2F0aWxpdHkvTQp2ZXJzZS9BRk5HTVNEWAp2ZXJzZWQvVQp2ZXJzaWZpY2F0aW9uL00KdmVyc2lmaWVyL00KdmVyc2lmeS9aR05EUlMKdmVyc2lvbi9BRklNUwp2ZXJzaW9uZWQKdmVyc2lvbmluZwp2ZXJzby9TTQp2ZXJzdXMKdmVydC9BCnZlcnRlYnJhL00KdmVydGVicmFlCnZlcnRlYnJhbAp2ZXJ0ZWJyYXRlL0lNUwp2ZXJ0ZXgvTVMKdmVydGljYWwvTVlTCnZlcnRpY2VzCnZlcnRpZ2lub3VzCnZlcnRpZ28vTQp2ZXJ2ZS9NCnZlcnkvUlQKdmVzaWNsZS9TTQp2ZXNpY3VsYXIKdmVzaWN1bGF0ZQp2ZXNwZXIvTVMKdmVzc2VsL01TCnZlc3Qncwp2ZXN0L0lMREdTCnZlc3RhbC9NUwp2ZXN0aWJ1bGUvTVMKdmVzdGlnZS9TTQp2ZXN0aWdpYWwvWQp2ZXN0aW5nL00KdmVzdG1lbnQvSU1TCnZlc3RyeS9TTQp2ZXN0cnltYW4vTQp2ZXN0cnltZW4KdmV0L1NNCnZldGNoL01TCnZldGVyYW4vU00KdmV0ZXJpbmFyaWFuL01TCnZldGVyaW5hcnkvU00KdmV0by9NREcKdmV0b2VzCnZldHRlZAp2ZXR0aW5nCnZleC9HRFMKdmV4YXRpb24vU00KdmV4YXRpb3VzL1kKdmhmCnZpCnZpYQp2aWFiaWxpdHkvTQp2aWFibGUKdmlhYmx5CnZpYWR1Y3QvU00KdmlhbC9NUwp2aWFuZC9TTQp2aWJlL01TCnZpYmVzL00KdmlicmFoYXJwL1NNCnZpYnJhbmN5L00KdmlicmFudC9ZCnZpYnJhcGhvbmUvTVMKdmlicmFwaG9uaXN0L01TCnZpYnJhdGUvR05EU1gKdmlicmF0aW9uL00KdmlicmF0by9NUwp2aWJyYXRvci9TTQp2aWJyYXRvcnkKdmlidXJudW0vU00KdmljYXIvU00KdmljYXJhZ2UvU00KdmljYXJpb3VzL1lQCnZpY2FyaW91c25lc3MvTQp2aWNlL0NNUwp2aWNlZAp2aWNlZ2VyZW50L1NNCnZpY2VubmlhbAp2aWNlcmVnYWwKdmljZXJveS9NUwp2aWNoeXNzb2lzZS9NCnZpY2luZwp2aWNpbml0eS9NCnZpY2lvdXMvWVAKdmljaW91c25lc3MvTQp2aWNpc3NpdHVkZS9TTQp2aWN0aW0vTVMKdmljdGltaXphdGlvbi9NCnZpY3RpbWl6ZS9HRFMKdmljdG9yL01TCnZpY3RvcmlvdXMvWQp2aWN0b3J5L1NNCnZpY3R1YWwvU01ERwp2aWN1bmEvTVMKdmlkZWxpY2V0CnZpZGVvL0dTTUQKdmlkZW9jYXNzZXR0ZS9TTQp2aWRlb2NvbmZlcmVuY2luZwp2aWRlb2Rpc2MvTVMKdmlkZW9waG9uZS9NUwp2aWRlb3RhcGUvRFNNRwp2aWRlb3RleAp2aWUvRFMKdmlldy9BTURSU1pHCnZpZXdlci9BTQp2aWV3ZXJzaGlwL00Kdmlld2ZpbmRlci9TTQp2aWV3aW5nL1NNCnZpZXdwb2ludC9NUwp2aWdlc2ltYWwKdmlnaWwvU00KdmlnaWxhbmNlL00KdmlnaWxhbnQvWQp2aWdpbGFudGUvU00KdmlnaWxhbnRpc20vTQp2aWdpbGFudGlzdC9NCnZpZ25ldHRlL0RTTUcKdmlnbmV0dGlzdC9NUwp2aWdvci9NCnZpZ29yb3VzL1kKdmlpCnZpaWkKdmlraW5nL01TCnZpbGUvWVRQUgp2aWxlbmVzcy9NCnZpbGlmaWNhdGlvbi9NCnZpbGlmeS9EU05HCnZpbGxhL1NNCnZpbGxhZ2UvUlNNWgp2aWxsYWdlci9NCnZpbGxhaW4vU00KdmlsbGFpbm91cwp2aWxsYWlueS9TTQp2aWxsZWluL1NNCnZpbGxlaW5hZ2UvTQp2aWxsaQp2aWxsdXMvTQp2aW0vTQp2aW5haWdyZXR0ZS9NCnZpbmNpYmxlL0kKdmluZGljYXRlL1hEU0dOCnZpbmRpY2F0aW9uL00KdmluZGljYXRvci9NUwp2aW5kaWN0aXZlL1BZCnZpbmRpY3RpdmVuZXNzL00KdmluZS9NUwp2aW5lZ2FyL00KdmluZWdhcnkKdmluZXlhcmQvTVMKdmluby9NCnZpbm91cwp2aW50YWdlL01TCnZpbnRuZXIvTVMKdmlueWwvU00KdmlvbC9NQlMKdmlvbGEvU00KdmlvbGFibGUvSQp2aW9sYXRlL0dORFNYCnZpb2xhdGlvbi9NCnZpb2xhdG9yL1NNCnZpb2xlbmNlL00KdmlvbGVudC9ZCnZpb2xldC9NUwp2aW9saW4vTVMKdmlvbGluY2VsbG8vUwp2aW9saW5pc3QvU00KdmlvbGlzdC9NUwp2aW9sb25jZWxsaXN0L1NNCnZpb2xvbmNlbGxvL01TCnZpcGVyL1NNCnZpcGVyb3VzCnZpcmFnby9NCnZpcmFnb2VzCnZpcmFsCnZpcmVvL1NNCnZpcmdpbi9NUwp2aXJnaW5hbC9TTQp2aXJnaW5pdHkvTQp2aXJndWxlL01TCnZpcmlsZQp2aXJpbGl0eS9NCnZpcm9sb2dpc3QvU00Kdmlyb2xvZ3kvTQp2aXJ0dWFsL1kKdmlydHVhbGl6YXRpb24KdmlydHVlL1NNCnZpcnR1b3NpdHkvTQp2aXJ0dW9zby9NCnZpcnR1b3VzL1lQCnZpcnR1b3VzbmVzcy9NCnZpcnVsZW5jZS9NCnZpcnVsZW50L1kKdmlydXMvTVMKdmlzYS9NRFNHCnZpc2FnZS9NUwp2aXNjZXJhCnZpc2NlcmFsL1kKdmlzY2lkCnZpc2Nvc2UvTQp2aXNjb3NpdHkvTQp2aXNjb3VudC9TTQp2aXNjb3VudGN5L1NNCnZpc2NvdW50ZXNzL01TCnZpc2NvdXMKdmlzY3VzL00KdmlzZS9BQ01HRFMKdmlzaWJpbGl0eS9JTQp2aXNpYmxlL0kKdmlzaWJseS9JCnZpc2lvbi9LR0RTTQp2aXNpb25hcnkvU00KdmlzaXQncwp2aXNpdC9BU0dECnZpc2l0YW50L01TCnZpc2l0YXRpb24vTVMKdmlzaXRvci9NUwp2aXNvci9TTQp2aXN0YS9TTQp2aXN1YWwvU01ZCnZpc3VhbGl6YXRpb24vU00KdmlzdWFsaXplL0RSU1pHCnZpc3VhbGl6ZXIvTQp2aXRhL00Kdml0YWUKdml0YWwvU1kKdml0YWxpdHkvTQp2aXRhbGl6YXRpb24vQU0Kdml0YWxpemUvQ0FHU0QKdml0YWxzL00Kdml0YW1pbi9NUwp2aXRpYXRlL0dORFMKdml0aWF0aW9uL00Kdml0aWN1bHR1cmUvTQp2aXRpY3VsdHVyaXN0L01TCnZpdHJlb3VzCnZpdHJpZmFjdGlvbi9NCnZpdHJpZmljYXRpb24vTQp2aXRyaWZ5L0dORFMKdml0cmluZS9TTQp2aXRyaW9sL00Kdml0cmlvbGljCnZpdHJpb2xpY2FsbHkKdml0dGxlcy9NCnZpdHVwZXJhdGUvR05WRFMKdml0dXBlcmF0aW9uL00Kdml2YS9NUwp2aXZhY2UKdml2YWNpb3VzL1BZCnZpdmFjaW91c25lc3MvTQp2aXZhY2l0eS9NCnZpdmFyaWEKdml2YXJpdW0vU00Kdml2aWQvUllUUAp2aXZpZG5lc3MvTQp2aXZpZnkvQURTRwp2aXZpcGFyb3VzCnZpdmlzZWN0L0RHUwp2aXZpc2VjdGlvbi9NCnZpdmlzZWN0aW9uYWwKdml2aXNlY3Rpb25pc3QvU00Kdml4ZW4vU00Kdml4ZW5pc2gvWQp2aXoKdml6aWVyL1NNCnZsZgp2b2NhYgp2b2NhYmxlL01TCnZvY2FidWxhcnkvU00Kdm9jYWwvU01ZCnZvY2FsaWMKdm9jYWxpc3QvU00Kdm9jYWxpemF0aW9uL01TCnZvY2FsaXplL0RTRwp2b2NhdGlvbi9GSUtBU00Kdm9jYXRpb25hbC9ZCnZvY2F0aXZlL01TCnZvY2lmZXJhdGUvRFNHTgp2b2NpZmVyYXRpb24vTQp2b2NpZmVyb3VzL1lQCnZvY2lmZXJvdXNuZXNzL00Kdm9ka2EvU00Kdm9ndWUvU00Kdm9ndWlzaAp2b2ljZS9JRFNNRwp2b2ljZWQvVQp2b2ljZWxlc3MvUFkKdm9pY2VsZXNzbmVzcy9NCnZvaWNlbWFpbC9TTQp2b2lkL01EU0dCCnZvaWxhCnZvaWxlL00Kdm9sL1MKdm9sYXRpbGUKdm9sYXRpbGl0eS9NCnZvbGF0aWxpemUvRFNHCnZvbGNhbmljCnZvbGNhbm8vTQp2b2xjYW5vZXMKdm9sZS9NUwp2b2xpdGlvbi9NCnZvbGl0aW9uYWwKdm9sbGV5L0dTTUQKdm9sbGV5YmFsbC9NUwp2b2x0L0FNUwp2b2x0YWdlL01TCnZvbHRhaWMKdm9sdG1ldGVyL1NNCnZvbHViaWxpdHkvTQp2b2x1YmxlCnZvbHVibHkKdm9sdW1lL1NNCnZvbHVtaW5vdXMvWVAKdm9sdW1pbm91c25lc3MvTQp2b2x1bnRhcmlseS9JCnZvbHVudGFyaXNtL00Kdm9sdW50YXJ5L1NNCnZvbHVudGVlci9TR01ECnZvbHVudGVlcmlzbS9NCnZvbHVwdHVhcnkvU00Kdm9sdXB0dW91cy9QWQp2b2x1cHR1b3VzbmVzcy9NCnZvbHV0ZS9TTQp2b21pdC9TTURHCnZvb2Rvby9HU01ECnZvb2Rvb2lzbS9NCnZvcmFjaW91cy9QWQp2b3JhY2lvdXNuZXNzL00Kdm9yYWNpdHkvTQp2b3J0ZXgvTVMKdm90YXJ5L1NNCnZvdGUncwp2b3RlL0NHVkRTCnZvdGVyL1NNCnZvdWNoL0RSU1pHCnZvdWNoZXIvTQp2b3VjaHNhZmUvRFNHCnZvdy9TR01ECnZvd2VsL1NNCnZveWFnZS9NWkdEUlMKdm95YWdlci9NCnZveWFnZXVyL1NNCnZveWV1ci9NUwp2b3lldXJpc20vTQp2b3lldXJpc3RpYwp2dWxjYW5pemF0aW9uL00KdnVsY2FuaXplL0dEUwp2dWxnYXIvUllUCnZ1bGdhcmlhbi9NUwp2dWxnYXJpc20vTVMKdnVsZ2FyaXR5L1NNCnZ1bGdhcml6YXRpb24vTQp2dWxnYXJpemUvWkdEUlMKdnVsZ2FyaXplci9NCnZ1bG5lcmFiaWxpdGllcwp2dWxuZXJhYmlsaXR5L0lNCnZ1bG5lcmFibGUvSQp2dWxuZXJhYmx5L0kKdnVscGluZQp2dWx0dXJlL1NNCnZ1bHR1cm91cwp2dWx2YS9NCnZ1bHZhZQp2dXZ1emVsYS9NUwp2eWluZwp3L0ROWFRHVkoKd2FiYml0L1MKd2Fjay9NUlRTCndhY2tpbmVzcy9NCndhY2tvL1NNCndhY2t5L1JQVAp3YWQvU1pHTURSCndhZGRlZAp3YWRkaW5nL00Kd2FkZGxlL0RTTUcKd2FkZS9NUwp3YWRlci9NCndhZGVycy9NCndhZGdlL1MKd2FkaS9NUwp3YWZlci9TTQp3YWZmbGUvTVpHRFJTCndhZmZsZXIvTQp3YWZ0L01ER1MKd2FnL1NaR01EUgp3YWdlL01TCndhZ2VkL1UKd2FnZXIvWkdNRFIKd2FnZXJlci9NCndhZ2dlZAp3YWdnZXJ5L1NNCndhZ2dpbmcKd2FnZ2lzaC9ZUAp3YWdnaXNobmVzcy9NCndhZ2dsZS9NR0RTCndhZ29uL1pTTVIKd2Fnb25lci9NCndhZ3RhaWwvU00Kd2FpZi9NUwp3YWlsL01EUlpHUwp3YWlsZXIvTQp3YWlsaW5nL00Kd2Fpbi9NUwp3YWluc2NvdC9TSk1ERwp3YWluc2NvdGluZy9NCndhaW53cmlnaHQvTVMKd2Fpc3QvU00Kd2Fpc3RiYW5kL01TCndhaXN0Y29hdC9NUwp3YWlzdGxpbmUvTVMKd2FpdC9NRFJaR1MKd2FpdGVyL00Kd2FpdGluZy9NCndhaXRwZXJzb24vTVMKd2FpdHJlc3MvTVMKd2FpdHN0YWZmL00Kd2FpdmUvRFJTWkcKd2FpdmVyL00Kd2FrZS9NR0pEUwp3YWtlZnVsL1BZCndha2VmdWxuZXNzL00Kd2FrZW4vR1NECndhbGRvL1MKd2FsZG9lcwp3YWxlL01HRFMKd2Fsay9NRFJaR1MKd2Fsa2Fib3V0L1MKd2Fsa2F3YXkvTVMKd2Fsa2VyL00Kd2Fsa2llcwp3YWxraW5nL00Kd2Fsa291dC9TTQp3YWxrb3Zlci9NUwp3YWxrd2F5L1NNCndhbGwvTURHUwp3YWxsYWJ5L1NNCndhbGxhaAp3YWxsYWhzCndhbGxib2FyZC9NCndhbGxldC9NUwp3YWxsZXllL0RTTQp3YWxsZmxvd2VyL01TCndhbGxvcC9NRFNKRwp3YWxsb3BpbmcvTQp3YWxsb3cvTURTRwp3YWxscGFwZXIvU01ERwp3YWxseS9TCndhbG51dC9NUwp3YWxydXMvTVMKd2FsdHovWkdNRFJTCndhbHR6ZXIvTQp3YW1wdW0vTQp3YW4vR1BEWQp3YW5kL01TCndhbmRlci9EUlNKWkcKd2FuZGVyZXIvTQp3YW5kZXJpbmdzL00Kd2FuZGVybHVzdC9TTQp3YW5lL01TCndhbmdsZS9NWkdEUlMKd2FuZ2xlci9NCndhbmsvRFJaR1MKd2FubmEKd2FubmFiZS9TTQp3YW5uYWJlZS9TCndhbm5lcgp3YW5uZXNzL00Kd2FubmVzdAp3YW50L01ER1MKd2FudGVkL1UKd2FudG9uL01EWVNQRwp3YW50b25uZXNzL00Kd2FwaXRpL01TCndhci9TTQp3YXJibGUvTVpHRFJTCndhcmJsZXIvTQp3YXJib25uZXQvU00Kd2FyZC9BTURHUwp3YXJkZW4vTVMKd2FyZGVyL01TCndhcmRyZXNzL1MKd2FyZHJvYmUvU00Kd2FyZHJvb20vU00Kd2FyZS9NUwp3YXJlaG91c2UvRFNNRwp3YXJlegp3YXJmYXJlL00Kd2FyaGVhZC9NUwp3YXJob3JzZS9TTQp3YXJpbHkvVQp3YXJpbmVzcy9VTQp3YXJsaWtlCndhcmxvY2svTVMKd2FybG9yZC9NUwp3YXJtL1BEUllIWlRHUwp3YXJtYmxvb2RlZAp3YXJtZXIvTQp3YXJtaGVhcnRlZC9QCndhcm1oZWFydGVkbmVzcy9NCndhcm1pc2gKd2FybW5lc3MvTQp3YXJtb25nZXIvU01HCndhcm1vbmdlcmluZy9NCndhcm10aC9NCndhcm4vSkRHUwp3YXJuaW5nL00Kd2FycC9NREdTCndhcnBhaW50CndhcnBhdGgvTQp3YXJwYXRocwp3YXJwbGFuZS9NUwp3YXJyYW50L0dNRFMKd2FycmFudGVkL1UKd2FycmFudHkvRFNNRwp3YXJyZWQKd2FycmVuL01TCndhcnJpbmcKd2Fycmlvci9TTQp3YXJzaGlwL1NNCndhcnQvTVMKd2FydGhvZy9TTQp3YXJ0aW1lL00Kd2FydHkvVFIKd2FyeS9VUFJUCndhcwp3YXNhYmkKd2FzaC9CSk1EUlNaRwp3YXNoYWJsZS9TTQp3YXNoYmFzaW4vU00Kd2FzaGJvYXJkL1NNCndhc2hib3dsL1NNCndhc2hjbG90aC9NCndhc2hjbG90aHMKd2FzaGVkL1UKd2FzaGVyL00Kd2FzaGVyd29tYW4vTQp3YXNoZXJ3b21lbgp3YXNoaW5nL00Kd2FzaG91dC9NUwp3YXNocmFnL01TCndhc2hyb29tL01TCndhc2hzdGFuZC9TTQp3YXNodHViL01TCndhc2h5L1RSCndhc24ndAp3YXNwL01TCndhc3Bpc2gvWVAKd2FzcGlzaG5lc3MvTQp3YXNzYWlsL1NNREcKd2FzdAp3YXN0YWdlL00Kd2FzdGUvRFJTTVpHCndhc3RlYmFza2V0L01TCndhc3RlZnVsL1BZCndhc3RlZnVsbmVzcy9NCndhc3RlbGFuZC9TTQp3YXN0ZXBhcGVyL00Kd2FzdGVyL00Kd2FzdGV3YXRlcgp3YXN0cmVsL1NNCndhdGNoL0JaR01EUlMKd2F0Y2hhYmxlL1UKd2F0Y2hiYW5kL01TCndhdGNoZG9nL1NNCndhdGNoZXIvTQp3YXRjaGZ1bC9ZUAp3YXRjaGZ1bG5lc3MvTQp3YXRjaG1ha2VyL01TCndhdGNobWFraW5nL00Kd2F0Y2htYW4vTQp3YXRjaG1lbgp3YXRjaHN0cmFwL1MKd2F0Y2h0b3dlci9TTQp3YXRjaHdvcmQvTVMKd2F0ZXIvR1NNRAp3YXRlcmJlZC9NUwp3YXRlcmJpcmQvU00Kd2F0ZXJib2FyZC9NREpTRwp3YXRlcmJvYXJkaW5nL00Kd2F0ZXJib3JuZQp3YXRlcmNvbG9yL01TCndhdGVyY291cnNlL1NNCndhdGVyY3JhZnQvTQp3YXRlcmNyZXNzL00Kd2F0ZXJmYWxsL1NNCndhdGVyZm93bC9TTQp3YXRlcmZyb250L01TCndhdGVyaG9sZS9TTQp3YXRlcmluZXNzL00Kd2F0ZXJsaWx5L1NNCndhdGVybGluZS9NUwp3YXRlcmxvZ2dlZAp3YXRlcm1hcmsvTURHUwp3YXRlcm1lbG9uL1NNCndhdGVybWlsbC9NUwp3YXRlcnByb29mL1NNREcKd2F0ZXJwcm9vZmluZy9NCndhdGVycy9NCndhdGVyc2hlZC9NUwp3YXRlcnNpZGUvTVMKd2F0ZXJzcG91dC9TTQp3YXRlcnRpZ2h0CndhdGVyd2F5L01TCndhdGVyd2hlZWwvU00Kd2F0ZXJ3b3Jrcy9NCndhdGVyeS9QVFIKd2F0dC9NUwp3YXR0YWdlL00Kd2F0dGxlL01HRFMKd2F2ZS9NWkdEUlMKd2F2ZWJhbmQvUwp3YXZlZm9ybQp3YXZlbGVuZ3RoL00Kd2F2ZWxlbmd0aHMKd2F2ZWxldC9TTQp3YXZlbGlrZQp3YXZlci9aR01EUgp3YXZlcmVyL00Kd2F2ZXJpbmcvWQp3YXZpbmVzcy9NCndhdnkvUFJUCndheC9HTUROUwp3YXhpbmVzcy9NCndheHdpbmcvU00Kd2F4d29yay9TTQp3YXh5L1JQVAp3YXkvU00Kd2F5YmlsbC9TTQp3YXlmYXJlci9NUwp3YXlmYXJpbmcvU00Kd2F5bGFpZAp3YXlsYXkvUlNaRwp3YXlsYXllci9NCndheXNpZGUvU00Kd2F5d2FyZC9QWQp3YXl3YXJkbmVzcy9NCndhem9vL1MKd2UKd2UnZAp3ZSdsbAp3ZSdyZQp3ZSd2ZQp3ZWFrL1BOUllYVAp3ZWFrZW4vRFJaRwp3ZWFrZW5lci9NCndlYWtmaXNoL01TCndlYWtpc2gKd2Vha2xpbmcvU00Kd2Vha25lc3MvTVMKd2VhbC9NSFMKd2VhbHRoL00Kd2VhbHRoaW5lc3MvTQp3ZWFsdGh5L1RSUAp3ZWFuL0RHUwp3ZWFwb24vTVMKd2VhcG9uaXplCndlYXBvbmxlc3MKd2VhcG9ucnkvTQp3ZWFyL01SQkpTWkcKd2VhcmFibGUvVQp3ZWFyZXIvTQp3ZWFyaWVkL1UKd2VhcmlseQp3ZWFyaW5lc3MvTQp3ZWFyaXNvbWUvWQp3ZWFyeS9UR0RSU1AKd2Vhc2VsL01EWVNHCndlYXRoZXIvU01ERwp3ZWF0aGVyYm9hcmQvU0cKd2VhdGhlcmNvY2svTVMKd2VhdGhlcmluZy9NCndlYXRoZXJpemF0aW9uL00Kd2VhdGhlcml6ZS9EU0cKd2VhdGhlcm1hbi9NCndlYXRoZXJtZW4Kd2VhdGhlcnBlcnNvbi9NUwp3ZWF0aGVycHJvb2YvR1NECndlYXRoZXJzdHJpcC9TCndlYXRoZXJzdHJpcHBlZAp3ZWF0aGVyc3RyaXBwaW5nL00Kd2VhdmUvRFJTTVpHCndlYXZlci9NCndlYXZpbmcvTQp3ZWIvU00Kd2ViYmVkCndlYmJpbmcvTQp3ZWJjYW0vTVMKd2ViY2FzdC9TTUcKd2ViZmVldAp3ZWJmb290L00Kd2ViaW5hci9TTQp3ZWJpc29kZS9NUwp3ZWJsb2cvTVMKd2VibWFzdGVyL1NNCndlYm1pc3RyZXNzL01TCndlYnNpdGUvU00Kd2VkL0FTCndlZGRlZC9BCndlZGRlcgp3ZWRkaW5nL1NNCndlZGdlL0RTTUcKd2VkZ2llL01TCndlZGxvY2svTQp3ZWUvUlNNVAp3ZWVkL01EUlNaRwp3ZWVkZXIvTQp3ZWVka2lsbGVyL1MKd2VlZGxlc3MKd2VlZHkvVFIKd2VlaW5nCndlZWsvTVlTCndlZWtkYXkvU00Kd2Vla2VuZC9TWkdNRFIKd2Vla2x5L1NNCndlZWtuaWdodC9TTQp3ZWVuL0RTRwp3ZWVuaWUvTVRSUwp3ZWVuc3kvUlQKd2VlbnkKd2VlcC9NUkpTWkcKd2VlcGVyL00Kd2VlcGllCndlZXB5L1RSU00Kd2VldmlsL01TCndlZnQvTVMKd2VpZ2gncwp3ZWlnaC9BR0QKd2VpZ2hicmlkZ2UvUwp3ZWlnaHMvQQp3ZWlnaHQvTURTSkcKd2VpZ2h0ZWQvVQp3ZWlnaHRpbHkKd2VpZ2h0aW5lc3MvTQp3ZWlnaHRsZXNzL1lQCndlaWdodGxlc3NuZXNzL00Kd2VpZ2h0bGlmdGVyL01TCndlaWdodGxpZnRpbmcvTQp3ZWlnaHR5L1BUUgp3ZWlyL01TCndlaXJkL1BUUlkKd2VpcmRpZS9NUwp3ZWlyZG5lc3MvTQp3ZWlyZG8vTVMKd2VsY29tZS9NR0RTCndlbGQvTURSQlNaRwp3ZWxkZXIvTQp3ZWxmYXJlL00Kd2Vsa2luL00Kd2VsbC9NRFBTRwp3ZWxsaGVhZC9TTQp3ZWxsaWUKd2VsbGluZ3Rvbi9NUwp3ZWxsbmVzcy9NCndlbGxzcHJpbmcvTVMKd2VsbHkvUwp3ZWxzaC9aR0RSUwp3ZWxzaGVyL00Kd2VsdC9NRFJTWkcKd2VsdGVyL0dNRAp3ZWx0ZXJ3ZWlnaHQvU00Kd2VuL00Kd2VuY2gvTVMKd2VuZC9EU0cKd2VudAp3ZXB0CndlcmUKd2VyZW4ndAp3ZXJld29sZi9NCndlcmV3b2x2ZXMKd2VzdC9NCndlc3Rib3VuZAp3ZXN0ZXJseS9TTQp3ZXN0ZXJuL1NaTVIKd2VzdGVybmVyL00Kd2VzdGVybml6YXRpb24vTQp3ZXN0ZXJuaXplL0dEUwp3ZXN0ZXJubW9zdAp3ZXN0d2FyZC9TCndldC9TTVlQCndldGJhY2svU00Kd2V0bGFuZC9TTQp3ZXRuZXNzL00Kd2V0dGVyL1NNCndldHRlc3QKd2V0dGluZwp3ZXR3YXJlL1MKd2hhY2svU0paR01EUgp3aGFja2VyL00Kd2hhbGUvRFJTTVpHCndoYWxlYm9hdC9NUwp3aGFsZWJvbmUvTQp3aGFsZXIvTQp3aGFsaW5nL00Kd2hhbS9NUwp3aGFtbWVkCndoYW1taW5nCndoYW1teS9TTQp3aGFyZi9NCndoYXJ2ZXMKd2hhdC9NUwp3aGF0Y2hhbWFjYWxsaXQvTVMKd2hhdGV2ZXIKd2hhdG5vdC9NCndoYXRzaGVybmFtZQp3aGF0c2hpc25hbWUKd2hhdHNpdC9TCndoYXRzb2V2ZXIKd2hlYWwvU00Kd2hlYXQvTU4Kd2hlYXRnZXJtCndoZWF0bWVhbAp3aGVlCndoZWVkbGUvRFJTWkcKd2hlZWRsZXIvTQp3aGVlbC9TTURSRwp3aGVlbGJhcnJvdy9TTQp3aGVlbGJhc2UvU00Kd2hlZWxjaGFpci9TTQp3aGVlbGhvdXNlL01TCndoZWVsaWUvU00Kd2hlZWx3cmlnaHQvTVMKd2hlZXplL0RTTUcKd2hlZXppbHkKd2hlZXppbmVzcy9NCndoZWV6eS9QUlQKd2hlbGsvU01ECndoZWxtL1NERwp3aGVscC9TTURHCndoZW4vTVMKd2hlbmNlCndoZW5ldmVyCndoZW5zb2V2ZXIKd2hlcmUvU00Kd2hlcmVhYm91dHMvTQp3aGVyZWFzCndoZXJlYXQKd2hlcmVieQp3aGVyZWZvcmUvTVMKd2hlcmVpbgp3aGVyZW9mCndoZXJlb24Kd2hlcmVzb2V2ZXIKd2hlcmV0bwp3aGVyZXVwb24Kd2hlcmV2ZXIKd2hlcmV3aXRoCndoZXJld2l0aGFsL00Kd2hlcnJ5L1NNCndoZXQvUwp3aGV0aGVyCndoZXRzdG9uZS9TTQp3aGV0dGVkCndoZXR0aW5nCndoZXcKd2hleS9NCndoaWNoCndoaWNoZXZlcgp3aGlmZi9TTURHCndoaWZmbGV0cmVlL01TCndoaWxlL0RTTUcKd2hpbG9tCndoaWxzdAp3aGltL01TCndoaW1wZXIvTURHUwp3aGltc2ljYWwvWQp3aGltc2ljYWxpdHkvTQp3aGltc3kvU00Kd2hpbmUvRFJTTVpHCndoaW5lci9NCndoaW5nZS9EUlNaRwp3aGluZ2VpbmcKd2hpbm55L0dEU00Kd2hpbnkvUlQKd2hpcC9NUwp3aGlwY29yZC9NCndoaXBsYXNoL01TCndoaXBwZWQKd2hpcHBlci9NUwp3aGlwcGVyc25hcHBlci9NUwp3aGlwcGV0L01TCndoaXBwaW5nL1NNCndoaXBwbGV0cmVlL1NNCndoaXBwb29yd2lsbC9NUwp3aGlwc2F3L01ER1MKd2hpci9NUwp3aGlybC9TTURHCndoaXJsaWdpZy9NUwp3aGlybHBvb2wvTVMKd2hpcmx3aW5kL01TCndoaXJseWJpcmQvU00Kd2hpcnJlZAp3aGlycmluZwp3aGlzay9TTURSWkcKd2hpc2tlci9NRAp3aGlza2VyeQp3aGlza2V5L01TCndoaXNreXMKd2hpc3Blci9NRFJTWkcKd2hpc3BlcmVyL00Kd2hpc3QvTQp3aGlzdGxlL01aR0RSUwp3aGlzdGxlci9NCndoaXQvTUROUlNYVEdKCndoaXRlL1NQTQp3aGl0ZWJhaXQKd2hpdGVib2FyZC9TCndoaXRlY2FwL1NNCndoaXRlZmlzaC9NUwp3aGl0ZWhlYWQvTVMKd2hpdGVuL1pHRFJKCndoaXRlbmVyL00Kd2hpdGVuZXNzL00Kd2hpdGVuaW5nL00Kd2hpdGVvdXQvU00Kd2hpdGV0YWlsL01TCndoaXRld2FsbC9TTQp3aGl0ZXdhc2gvTURTRwp3aGl0ZXdhdGVyL00Kd2hpdGV5L1NNCndoaXRoZXIKd2hpdGluZy9NCndoaXRpc2gKd2hpdHRsZS9aR0RSUwp3aGl0dGxlci9NCndoaXovTQp3aGl6a2lkL00Kd2hpenpiYW5nL01TCndoaXp6ZWQKd2hpenplcwp3aGl6emluZwp3aG8nZAp3aG8nbGwKd2hvJ3JlCndobyd2ZQp3aG8vTQp3aG9hCndob2R1bml0L01TCndob2V2ZXIKd2hvbGUvU01QCndob2xlZm9vZC9TCndob2xlZ3JhaW4Kd2hvbGVoZWFydGVkL1lQCndob2xlaGVhcnRlZG5lc3MvTQp3aG9sZW1lYWwKd2hvbGVuZXNzL00Kd2hvbGVzYWxlL01aR0RSUwp3aG9sZXNhbGVyL00Kd2hvbGVzb21lL1VQCndob2xlc29tZWx5Cndob2xlc29tZW5lc3MvVU0Kd2hvbGV3aGVhdAp3aG9sbHkKd2hvbQp3aG9tZXZlcgp3aG9tc29ldmVyCndob29wL1NNRFJaRwp3aG9vcGVlL1MKd2hvb3Blci9NCndob29zaC9NRFNHCndob3AvUwp3aG9wcGVkCndob3BwZXIvU00Kd2hvcHBpbmcKd2hvcmUvU01HCndob3JlaG91c2UvTVMKd2hvcmVpc2gKd2hvcmlzaAp3aG9ybC9TTUQKd2hvc2UKd2hvc28Kd2hvc29ldmVyCndodXAvUwp3aHVwcGVkCndodXBwaW5nCndoeSdkCndoeS9NCndoeXMKd2ljay9NRFJTWgp3aWNrZWQvVFBSWQp3aWNrZWRuZXNzL00Kd2lja2VyL00Kd2lja2Vyd29yay9NCndpY2tldC9TTQp3aWRlL1lUUlAKd2lkZW1vdXRoZWQKd2lkZW4vU0RSWkcKd2lkZW5lci9NCndpZGVuZXNzL00Kd2lkZXNjcmVlbi9NUwp3aWRlc3ByZWFkCndpZGdldC9TCndpZG93L1NNRFJaRwp3aWRvd2VyL00Kd2lkb3dob29kL00Kd2lkdGgvTQp3aWR0aHMKd2llbGQvU0RSWkcKd2llbGRlci9NCndpZW5lci9TTQp3aWVuaWUvU00Kd2lmZS9NWQp3aWZlbGVzcwp3aWcvU00Kd2lnZW9uL00Kd2lnZ2VkCndpZ2dpbmcKd2lnZ2xlL0RSU01aRwp3aWdnbGVyL00Kd2lnZ2x5L1RSCndpZ2h0L1NNCndpZ2xldC9TTQp3aWd3YWcvU00Kd2lnd2FnZ2VkCndpZ3dhZ2dpbmcKd2lnd2FtL1NNCndpa2kvTVMKd2lsZC9NUllTVFAKd2lsZGNhcmQKd2lsZGNhdC9NUwp3aWxkY2F0dGVkCndpbGRjYXR0ZXIvTVMKd2lsZGNhdHRpbmcKd2lsZGViZWVzdC9NUwp3aWxkZXJuZXNzL01TCndpbGRmaXJlL01TCndpbGRmbG93ZXIvU00Kd2lsZGZvd2wvTQp3aWxkbGlmZS9NCndpbGRuZXNzL00Kd2lsZHMvTQp3aWxlL01HRFMKd2lsaW5lc3MvTQp3aWxsL01EUwp3aWxsZnVsL1BZCndpbGxmdWxuZXNzL00Kd2lsbGllcy9NCndpbGxpbmcvVVBZCndpbGxpbmduZXNzL1VNCndpbGxpd2F3L01TCndpbGxvdy9TTQp3aWxsb3d5CndpbGxwb3dlci9NCndpbGx5L1MKd2lsdC9NRFNHCndpbHkvUlRQCndpbXAvTURTRwp3aW1waXNoCndpbXBsZS9EU01HCndpbXB5L1JUCndpbi9TR01ECndpbmNlL0RTTUcKd2luY2gvTURTRwp3aW5kJ3MKd2luZC9VQVNHCndpbmRiYWcvU00Kd2luZGJsb3duCndpbmRicmVhay9TWk1SCndpbmRicmVha2VyL00Kd2luZGJ1cm4vTUQKd2luZGNoZWF0ZXIvUwp3aW5kY2hpbGwvTQp3aW5kZWQKd2luZGVyL1NNCndpbmRmYWxsL01TCndpbmRmbG93ZXIvTVMKd2luZGlseQp3aW5kaW5lc3MvTQp3aW5kaW5nJ3MKd2luZGphbW1lci9TTQp3aW5kbGFzcy9NUwp3aW5kbGVzcwp3aW5kbWlsbC9NREdTCndpbmRvdy9TTURHCndpbmRvd2xlc3MKd2luZG93cGFuZS9TTQp3aW5kb3dzaWxsL1NNCndpbmRwaXBlL01TCndpbmRwcm9vZgp3aW5kcm93L1NNCndpbmRzY3JlZW4vU00Kd2luZHNoaWVsZC9TTQp3aW5kc29jay9NUwp3aW5kc3Rvcm0vTVMKd2luZHN1cmYvWkdEUlMKd2luZHN1cmZlci9NCndpbmRzdXJmaW5nL00Kd2luZHN3ZXB0CndpbmR1cC9TTQp3aW5kd2FyZC9NCndpbmR5L1JUUAp3aW5lL01TCndpbmVnbGFzcy9NUwp3aW5lZ3Jvd2VyL01TCndpbmVtYWtlci9NUwp3aW5lcnkvU00Kd2luZy9NRFJaRwp3aW5nZGluZy9NUwp3aW5nbGVzcwp3aW5nbGlrZQp3aW5nbnV0L1NNCndpbmdzcGFuL01TCndpbmdzcHJlYWQvU00Kd2luZ3RpcC9TTQp3aW5rL01EUlNaRwp3aW5rZXIvTQp3aW5rbGUvRFNNRwp3aW5uYWJsZS9VCndpbm5lci9TTQp3aW5uaW5nL01ZUwp3aW5ub3cvWkdTRFIKd2lubm93ZXIvTQp3aW5vL01TCndpbnNvbWUvWVRSUAp3aW5zb21lbmVzcy9NCndpbnRlci9HU01ECndpbnRlcmdyZWVuL00Kd2ludGVyaXplL0dEUwp3aW50ZXJ0aW1lL00Kd2ludHJ5L1RSCndpbnkvUlQKd2lwZS9NWkdEUlMKd2lwZXIvTQp3aXJlJ3MKd2lyZS9BR0RTCndpcmVkL1MKd2lyZWhhaXIvTVMKd2lyZWxlc3MvTVMKd2lyZXRhcC9NUwp3aXJldGFwcGVkCndpcmV0YXBwZXIvU00Kd2lyZXRhcHBpbmcvTQp3aXJpbmVzcy9NCndpcmluZy9NCndpcnkvUlRQCndpc2RvbS9NCndpc2UvTVlUR0RSUwp3aXNlYWNyZS9TTQp3aXNlY3JhY2svTURTRwp3aXNlZ3V5L1MKd2lzaC9NRFJTWkcKd2lzaGJvbmUvU00Kd2lzaGVyL00Kd2lzaGZ1bC9ZCndpc2hsaXN0J3MKd2lzcC9NUwp3aXNweS9SVAp3aXN0Cndpc3RlcmlhL1NNCndpc3RmdWwvWVAKd2lzdGZ1bG5lc3MvTQp3aXQvU00Kd2l0Y2gvTURTRwp3aXRjaGNyYWZ0L00Kd2l0Y2hlcnkvTQp3aXRoCndpdGhhbAp3aXRoZHJhdy9TRwp3aXRoZHJhd2FsL01TCndpdGhkcmF3bgp3aXRoZHJldwp3aXRoZS9EUlNNWkcKd2l0aGVyL0pHRAp3aXRoZXJpbmcvWQp3aXRoZXJzL00Kd2l0aGhlbGQKd2l0aGhvbGQvU0cKd2l0aGhvbGRpbmcvTQp3aXRoaW4vTQp3aXRob3V0CndpdGhzdGFuZC9HUwp3aXRoc3Rvb2QKd2l0bGVzcy9QWQp3aXRsZXNzbmVzcy9NCndpdG5lc3MvTURTRwp3aXRzL00Kd2l0dGVkCndpdHRlci9TR0QKd2l0dGljaXNtL1NNCndpdHRpbHkKd2l0dGluZXNzL00Kd2l0dGluZy9VWQp3aXR0eS9SUFQKd2l2ZS9HRFMKd2l6CndpemFyZC9TTVkKd2l6YXJkcnkvTQp3aXplbmVkCndrL1kKd29hZC9NCndvYmJsZS9NR0RTCndvYmJsaW5lc3MvTQp3b2JibHkvUlRQCndvZGdlL1MKd29lL1NNCndvZWJlZ29uZQp3b2VmdWwvWVAKd29lZnVsbGVyCndvZWZ1bGxlc3QKd29lZnVsbmVzcy9NCndvZy9TCndvay9TTU4Kd29rZQp3b2xkL01TCndvbGYvTURTRwp3b2xmaG91bmQvU00Kd29sZmlzaAp3b2xmcmFtL00Kd29sdmVyaW5lL1NNCndvbHZlcwp3b21hbi9NCndvbWFuaG9vZC9NCndvbWFuaXNoCndvbWFuaXplL0RSU1pHCndvbWFuaXplci9NCndvbWFua2luZC9NCndvbWFubGlrZS9NCndvbWFubGluZXNzL00Kd29tYW5seS9SUFQKd29tYi9NUwp3b21iYXQvTVMKd29tYmxlL1MKd29tZW4vTQp3b21lbmZvbGsvU00Kd29tZW5mb2xrcy9NCndvbid0Cndvbi9NCndvbmRlci9NREdMUwp3b25kZXJmdWwvWVAKd29uZGVyZnVsbmVzcy9NCndvbmRlcmluZy9ZCndvbmRlcmxhbmQvTVMKd29uZGVybWVudC9NCndvbmRyb3VzL1kKd29uay9NUwp3b25reS9UUgp3b250L01ECndvbnRlZC9VCndvby9TWkdEUgp3b29kL01ETlNHCndvb2RiaW5lL00Kd29vZGJsb2NrL01TCndvb2RjYXJ2ZXIvTVMKd29vZGNhcnZpbmcvU00Kd29vZGNodWNrL01TCndvb2Rjb2NrL1NNCndvb2RjcmFmdC9NCndvb2RjdXQvU00Kd29vZGN1dHRlci9TTQp3b29kY3V0dGluZy9NCndvb2Rlbi9SWVRQCndvb2Rlbm5lc3MvTQp3b29kaW5lc3MvTQp3b29kbGFuZC9TTQp3b29kbGljZQp3b29kbG90L1NNCndvb2Rsb3VzZQp3b29kbWFuL00Kd29vZG1lbgp3b29kcGVja2VyL01TCndvb2RwaWxlL1NNCndvb2RzL00Kd29vZHNoZWQvU00Kd29vZHNpbmVzcy9NCndvb2RzbWFuL00Kd29vZHNtZW4Kd29vZHN5L1JUUAp3b29kd2luZC9NUwp3b29kd29yay9NUlpHCndvb2R3b3JrZXIvTQp3b29kd29ya2luZy9NCndvb2R3b3JtL1MKd29vZHkvVFBSU00Kd29vZXIvTQp3b29mL01EUlNaRwp3b29mZXIvTQp3b29sL01OWAp3b29sZW4vTQp3b29sZ2F0aGVyaW5nL00Kd29vbGluZXNzCndvb2xsaW5lc3MvTQp3b29sbHkvUlNNUFQKd29vemlseQp3b296aW5lc3MvTQp3b296eS9UUlAKd29wL1MhCndvcmQncwp3b3JkL0FEU0cKd29yZGFnZS9NCndvcmRib29rL1NNCndvcmRpbHkKd29yZGluZXNzL00Kd29yZGluZy9TTQp3b3JkbGVzcy9ZCndvcmRwbGF5L00Kd29yZHNtaXRoCndvcmRzbWl0aHMKd29yZHkvVFBSCndvcmUKd29yaydzCndvcmsvQURKU0cKd29ya2FibGUvVQp3b3JrYWRheQp3b3JrYWhvbGljL1NNCndvcmthcm91bmQvUwp3b3JrYmFza2V0L1MKd29ya2JlbmNoL01TCndvcmtib29rL01TCndvcmtkYXkvU00Kd29ya2VyL01TCndvcmtmYXJlL00Kd29ya2Zsb3cvTVMKd29ya2ZvcmNlL00Kd29ya2hvcnNlL1NNCndvcmtob3VzZS9TTQp3b3JraW5nJ3MKd29ya2luZ21hbi9NCndvcmtpbmdtZW4Kd29ya2luZ3MvTQp3b3JraW5nd29tYW4vTQp3b3JraW5nd29tZW4Kd29ya2xvYWQvTVMKd29ya21hbi9NCndvcmttYW5saWtlCndvcmttYW5zaGlwL00Kd29ya21hdGUvUwp3b3JrbWVuCndvcmtvdXQvU00Kd29ya3BsYWNlL01TCndvcmtyb29tL01TCndvcmtzL00Kd29ya3NoZWV0L01TCndvcmtzaG9wL01TCndvcmtzaHkKd29ya3N0YXRpb24vTVMKd29ya3RhYmxlL01TCndvcmt0b3AvUwp3b3JrdXAvTVMKd29ya3dlZWsvU00Kd29ybGQvU00Kd29ybGRsaWVyCndvcmxkbGluZXNzL1VNCndvcmxkbHkvVVRQCndvcmxkdmlldy9TTQp3b3JsZHdpZGUKd29ybS9NRFNHCndvcm1ob2xlL01TCndvcm13b29kL00Kd29ybXkvVFIKd29ybi9VCndvcnJpZWQvWQp3b3JyaWVyL00Kd29ycmltZW50L00Kd29ycmlzb21lCndvcnJ5L1pHRFJTTUoKd29ycnlpbmcvWQp3b3JyeXdhcnQvU00Kd29yc2UvTQp3b3JzZW4vRFNHCndvcnNoaXAvWkdTTURSCndvcnNoaXBlci9NCndvcnNoaXBmdWwKd29yc3QvU0dNRAp3b3JzdGVkL00Kd29ydC9NCndvcnRoL00Kd29ydGhpZXMKd29ydGhpbHkvVQp3b3J0aGluZXNzL1VNCndvcnRobGVzcy9QWQp3b3J0aGxlc3NuZXNzL00Kd29ydGh3aGlsZQp3b3J0aHkncwp3b3J0aHkvVVBSVAp3b3QKd290Y2hhCndvdWxkJ3ZlCndvdWxkL1MKd291bGRuJ3QKd291bGRzdAp3b3VuZC9TR01EUgp3b3ZlL0EKd292ZW4vQVUKd293L1NHTUQKd3BtCndyYWNrL0dTTUQKd3JhaXRoL00Kd3JhaXRocwp3cmFuZ2xlL0RSU01aR0oKd3JhbmdsZXIvTQp3cmFwJ3MKd3JhcC9VUwp3cmFwYXJvdW5kL1NNCndyYXBwZWQvVQp3cmFwcGVyL1NNCndyYXBwaW5nL01TCndyYXNzZS9NUwp3cmF0aC9NCndyYXRoZnVsL1kKd3JlYWsvU0dECndyZWF0aC9NRFNHCndyZWF0aGUKd3JlYXRocwp3cmVjay9TWkdNRFIKd3JlY2thZ2UvTQp3cmVja2VyL00Kd3Jlbi9NUwp3cmVuY2gvTURTRwp3cmVzdC9TR01ECndyZXN0bGUvTVpHRFJTCndyZXN0bGVyL00Kd3Jlc3RsaW5nL00Kd3JldGNoL01TCndyZXRjaGVkL1RQUlkKd3JldGNoZWRuZXNzL00Kd3JpZ2dsZS9NWkdEUlMKd3JpZ2dsZXIvTQp3cmlnZ2x5CndyaWdodC9NUwp3cmluZy9TWkdNUgp3cmluZ2VyL00Kd3JpbmtsZS9NR0RTCndyaW5rbGVkL1UKd3JpbmtseS9UUlNNCndyaXN0L1NNCndyaXN0YmFuZC9NUwp3cmlzdHdhdGNoL01TCndyaXQvTVJCSlNaRwp3cml0ZS9TCndyaXRlci9NCndyaXRoZS9NR0RTCndyaXRpbmcvTQp3cml0dGVuL0FVCndyb25nL1NUR01QRFJZCndyb25nZG9lci9TTQp3cm9uZ2RvaW5nL1NNCndyb25nZnVsL1BZCndyb25nZnVsbmVzcy9NCndyb25naGVhZGVkL1lQCndyb25naGVhZGVkbmVzcy9NCndyb25nbmVzcy9NCndyb3RlL0EKd3JvdGgKd3JvdWdodAp3cnVuZwp3cnkvWQp3cnllcgp3cnllc3QKd3J5bmVzcy9NCnd0Cnd1bmRlcmtpbmQvUwp3dXJzdC9TTQp3dXNzL01TCnd1c3N5L1JTTVQKeAp4Y2kKeGNpaQp4Y2l2CnhjaXgKeGN2aQp4Y3ZpaQp4ZW5vbi9NCnhlbm9waG9iZS9NUwp4ZW5vcGhvYmlhL00KeGVub3Bob2JpYwp4ZXJvZ3JhcGhpYwp4ZXJvZ3JhcGh5L00KeGVyb3gvTURTRwp4aS9TTQp4aWkKeGlpaQp4aXYKeGl4Cnhvcgp4cmVmL1MKeHRlcm0vTQp4dgp4dmkKeHZpaQp4dmlpaQp4eAp4eGkKeHhpaQp4eGlpaQp4eGl2Cnh4aXgKeHh2Cnh4dmkKeHh2aWkKeHh2aWlpCnh4eAp4eHhpCnh4eGlpCnh4eGlpaQp4eHhpdgp4eHhpeAp4eHh2Cnh4eHZpCnh4eHZpaQp4eHh2aWlpCnh5bGVtL00KeHlsZW5lCnh5bG9waG9uZS9TTQp4eWxvcGhvbmlzdC9NUwp5J2FsbAp5L0YKeWEKeWFjaHQvU01ERwp5YWNodGluZy9NCnlhY2h0c21hbi9NCnlhY2h0c21lbgp5YWNodHN3b21hbi9NCnlhY2h0c3dvbWVuCnlhaG9vL1NNCnlhay9TTQp5YWtrZWQKeWFra2luZwp5YW0vU00KeWFtbWVyL1NaR01EUgp5YW1tZXJlci9NCnlhbmcvTQp5YW5rL01EU0cKeWFwL1NNCnlhcHBlZAp5YXBwaW5nCnlhcmQvTVMKeWFyZGFnZS9NUwp5YXJkYXJtL01TCnlhcmRtYW4vTQp5YXJkbWFzdGVyL01TCnlhcmRtZW4KeWFyZHN0aWNrL01TCnlhcm11bGtlL1NNCnlhcm4vTVMKeWFycm93L00KeWFzaG1hay9TCnlhdy9TR01ECnlhd2wvTVMKeWF3bi9NRFJTWkcKeWF3bmVyL00KeWF3cy9NCnlkCnllL1JTVAp5ZWEvU00KeWVhaC9NCnllYWhzCnllYXIvTVlTCnllYXJib29rL01TCnllYXJsaW5nL01TCnllYXJsb25nCnllYXJseS9TTQp5ZWFybi9HU0pECnllYXJuaW5nL00KeWVhc3QvU00KeWVhc3R5L1JUCnllZ2cvTVMKeWVsbC9NRFNHCnllbGxvdy9NRFJUR1BTCnllbGxvd2hhbW1lci9TCnllbGxvd2lzaAp5ZWxsb3duZXNzL00KeWVsbG93eQp5ZWxwL01EU0cKeWVuL1NNCnllb21hbi9NCnllb21hbnJ5L00KeWVvbWVuCnllcC9TTQp5ZXMvTVMKeWVzaGl2YS9TTQp5ZXNzZWQKeWVzc2luZwp5ZXN0ZXJkYXkvTVMKeWVzdGVyeWVhci9NCnlldAp5ZXRpL01TCnlldy9TTQp5aWQvUwp5aWVsZC9KU0dNRAp5aWtlcwp5aW4vTQp5aXAvU00KeWlwZQp5aXBwZWQKeWlwcGVlCnlpcHBpbmcKeW8KeW9iL1MKeW9iYm8vUwp5b2RlbC9TTURSWkcKeW9kZWxlci9NCnlvZ2EvTQp5b2dpL01TCnlvZ2ljCnlvZ3VydC9TTQp5b2tlJ3MKeW9rZS9VR0RTCnlva2VsL1NNCnlvbGsvTURTCnlvbgp5b25kZXIKeW9ua3MKeW9yZS9NCnlvdSdkCnlvdSdsbAp5b3UncmUKeW91J3ZlCnlvdS9TTUgKeW91bmcvVE1SCnlvdW5naXNoCnlvdW5nc3Rlci9NUwp5b3VyL1MKeW91cnNlbGYKeW91cnNlbHZlcwp5b3V0aC9NCnlvdXRoZnVsL1lQCnlvdXRoZnVsbmVzcy9NCnlvdXRocwp5b3cKeW93bC9NRFNHCnlyL1MKeXR0ZXJiaXVtL00KeXR0cml1bS9NCnl1YW4vTQp5dWNjYS9TTQp5dWNrCnl1Y2t5L1RSCnl1ay9TTQp5dWtrZWQKeXVra2luZwp5dWtreQp5dWxlL00KeXVsZXRpZGUvTQp5dW0KeXVtbXkvVFIKeXVwL1NNCnl1cHBpZS9NUwp5dXBwaWZ5L0dEUwp5dXJ0L01TCnovRE5YVEdKCnphbmluZXNzL00KemFueS9SU01QVAp6YXAvU00KemFwcGVkCnphcHBlci9NUwp6YXBwaW5nCnphcHB5CnplYWwvTQp6ZWFsb3QvTVMKemVhbG90cnkvTQp6ZWFsb3VzL1lQCnplYWxvdXNuZXNzL00KemVicmEvU00KemVidS9NUwp6ZWQvU00KemVpdGdlaXN0L1NNCnplbml0aC9NCnplbml0aHMKemVubmVkCnplb2xpdGUvUwp6ZXBoeXIvTVMKemVwcGVsaW4vTVMKemVyby9NREhTRwp6ZXJvZXMKemVzdC9NUwp6ZXN0ZnVsL1lQCnplc3RmdWxuZXNzL00KemVzdHkvUlQKemV0YS9NUwp6aWd6YWcvU00KemlnemFnZ2VkCnppZ3phZ2dpbmcKemlsY2gvTQp6aWxsaW9uL01TCnppbmMvTVMKemluY2tlZAp6aW5ja2luZwp6aW5lL1MKemluZmFuZGVsL00KemluZy9NRFJaRwp6aW5nZXIvTQp6aW5neS9SVAp6aW5uaWEvTVMKemlwJ3MKemlwL1VTCnppcHBlZC9VCnppcHBlci9NREdTCnppcHBpbmcvVQp6aXBweS9UUgp6aXJjb24vTVMKemlyY29uaXVtL00Keml0L1NNCnppdGhlci9NUwp6bG90eS9TTQp6bG90eXMKem9kaWFjL01TCnpvZGlhY2FsCnpvbWJpZS9NUwp6b25hbC9ZCnpvbmUncwp6b25lL0FHRFMKem9uaW5nL00Kem9ua2VkCnpvby9TTQp6b29rZWVwZXIvU00Kem9vbG9naWNhbC9ZCnpvb2xvZ2lzdC9TTQp6b29sb2d5L00Kem9vbS9NRFNHCnpvb3BoeXRlL1NNCnpvb3BoeXRpYwp6b29wbGFua3Rvbgp6b3JjaAp6b3N0ZXIKem91bmRzCnp1Y2NoaW5pL01TCnp3aWViYWNrL00KenlkZWNvL00Kenlnb3RlL1NNCnp5Z290aWMKenltdXJneS9NCg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/Hunspell/Dictionaries/Readme.md" Permission="660" Encode="Base64">VGFrZW4gZnJvbSBodHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL2xpYnJlb2ZmaWNlL2RpY3Rpb25hcmllcy8uCg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Configuration.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+CiAgICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIi8+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0ib3RvYm9fY29uZmlnIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlNldHRpbmciIHR5cGU9IlNldHRpbmdUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZlcnNpb24iIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOnN0cmluZyIvPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaXQiIHVzZT0icmVxdWlyZWQiPgogICAgICAgICAgICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgICAgICAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRnJhbWV3b3JrIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQXBwbGljYXRpb24iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJDb25maWciLz4KICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJDaGFuZ2VzIi8+CiAgICAgICAgICAgICAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgICAgICAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgICAgICAgICAgPC94czphdHRyaWJ1dGU+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJCb29sZWFuQXR0cmlidXRlIj4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSIwIi8+CiAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iMSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICA8L3hzOnNpbXBsZVR5cGU+CgogICAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlNldHRpbmdUeXBlIj4KICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRlc2NyaXB0aW9uIj4KICAgICAgICAgICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgICAgICAgICA8eHM6c2ltcGxlQ29udGVudD4KICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUcmFuc2xhdGFibGUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9IkJvb2xlYW5BdHRyaWJ1dGUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgICAgICAgICAgPC94czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPC94czplbGVtZW50PgogICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOYXZpZ2F0aW9uIiB0eXBlPSJ4czpzdHJpbmciIC8+CiAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlZhbHVlIiAgICAgIHR5cGU9IlZhbHVlVHlwZSIvPgogICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lIiB1c2U9InJlcXVpcmVkIj4KICAgICAgICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgICAgICA8eHM6bWF4TGVuZ3RoIHZhbHVlPSIyNTAiIC8+CiAgICAgICAgICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICAgICAgPC94czphdHRyaWJ1dGU+CgogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iUmVxdWlyZWQiICAgICAgICAgICAgICAgICB1c2U9InJlcXVpcmVkIiB0eXBlPSJCb29sZWFuQXR0cmlidXRlIiAvPgogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVmFsaWQiICAgICAgICAgICAgICAgICAgICB1c2U9InJlcXVpcmVkIiB0eXBlPSJCb29sZWFuQXR0cmlidXRlIi8+CiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJSZWFkT25seSIgICAgICAgICAgICAgICAgIHVzZT0ib3B0aW9uYWwiIHR5cGU9IkJvb2xlYW5BdHRyaWJ1dGUiIC8+CiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJJbnZpc2libGUiICAgICAgICAgICAgICAgIHVzZT0ib3B0aW9uYWwiIHR5cGU9IkJvb2xlYW5BdHRyaWJ1dGUiIC8+CiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJVc2VyTW9kaWZpY2F0aW9uUG9zc2libGUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9IkJvb2xlYW5BdHRyaWJ1dGUiIC8+CiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJVc2VyTW9kaWZpY2F0aW9uQWN0aXZlIiAgIHVzZT0ib3B0aW9uYWwiIHR5cGU9IkJvb2xlYW5BdHRyaWJ1dGUiIC8+CgogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iQ29uZmlnTGV2ZWwiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOmludCIvPgoKICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlVzZXJQcmVmZXJlbmNlc0dyb3VwIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czpzdHJpbmciLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CgogICAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlZhbHVlVHlwZSI+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSXRlbSIgIHR5cGU9Ikl0ZW1UeXBlIi8+CiAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikhhc2giICB0eXBlPSJIYXNoVHlwZSIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBcnJheSIgdHlwZT0iQXJyYXlUeXBlIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgoKICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSIgbmFtZT0iSXRlbVR5cGUiPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkFycmF5IiB0eXBlPSJBcnJheVR5cGUiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSGFzaCIgIHR5cGU9Ikhhc2hUeXBlIi8+CiAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikl0ZW0iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHR5cGU9Ikl0ZW1UeXBlIi8+CiAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUcmFuc2xhdGFibGUiIHR5cGU9IkJvb2xlYW5BdHRyaWJ1dGUiIHVzZT0ib3B0aW9uYWwiIC8+CiAgICAgICAgPCEtLSBhbGxvdyBmb3IgYXJiaXRyYXJ5IHVuc3BlY2lmaWVkIHZhbHVlLXR5cGUgc3BlY2lmaWMgYXR0cmlidXRlcyAtLT4KICAgICAgICA8eHM6YW55QXR0cmlidXRlIHByb2Nlc3NDb250ZW50cz0ic2tpcCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KCiAgICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iSGFzaFR5cGUiPgogICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGVmYXVsdEl0ZW0iIHR5cGU9Ikl0ZW1UeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJdGVtIiB0eXBlPSJJdGVtVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJNaW5JdGVtcyIgdHlwZT0ieHM6aW50IiB1c2U9Im9wdGlvbmFsIiAvPgogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTWF4SXRlbXMiIHR5cGU9InhzOmludCIgdXNlPSJvcHRpb25hbCIgLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CgogICAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkFycmF5VHlwZSI+CiAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEZWZhdWx0SXRlbSIgdHlwZT0iRGVmYXVsdEl0ZW1UeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJdGVtIiB0eXBlPSJJdGVtVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJNaW5JdGVtcyIgdHlwZT0ieHM6aW50IiB1c2U9Im9wdGlvbmFsIiAvPgogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTWF4SXRlbXMiIHR5cGU9InhzOmludCIgdXNlPSJvcHRpb25hbCIgLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIiBuYW1lPSJEZWZhdWx0SXRlbVR5cGUiPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkFycmF5IiB0eXBlPSJEZWZhdWx0QXJyYXlUeXBlIi8+CiAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikhhc2giICB0eXBlPSJEZWZhdWx0SGFzaFR5cGUiLz4KICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSXRlbSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgdHlwZT0iSXRlbVR5cGUiLz4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlRyYW5zbGF0YWJsZSIgdHlwZT0iQm9vbGVhbkF0dHJpYnV0ZSIgdXNlPSJvcHRpb25hbCIgLz4KICAgICAgICA8IS0tIGFsbG93IGZvciBhcmJpdHJhcnkgdW5zcGVjaWZpZWQgdmFsdWUtdHlwZSBzcGVjaWZpYyBhdHRyaWJ1dGVzIC0tPgogICAgICAgIDx4czphbnlBdHRyaWJ1dGUgcHJvY2Vzc0NvbnRlbnRzPSJza2lwIi8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgoKICAgIDwhLS0gSGFzaGVzIGluIERlZmF1bHRJdGVtcyBjYW4gb25seSBjb250YWluIG90aGVyIERlZmF1bHRJdGVtcywgbm90IHJlYWwgSXRlbXMuIC0tPgogICAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRlZmF1bHRIYXNoVHlwZSI+CiAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEZWZhdWx0SXRlbSIgdHlwZT0iRGVmYXVsdEl0ZW1UeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPgogICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJNaW5JdGVtcyIgdHlwZT0ieHM6aW50IiB1c2U9Im9wdGlvbmFsIiAvPgogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTWF4SXRlbXMiIHR5cGU9InhzOmludCIgdXNlPSJvcHRpb25hbCIgLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CgogICAgPCEtLSBBcnJheXMgaW4gRGVmYXVsdEl0ZW1zIGNhbiBvbmx5IGNvbnRhaW4gb3RoZXIgRGVmYXVsdEl0ZW1zLCBub3QgcmVhbCBJdGVtcy4gLS0+CiAgICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRGVmYXVsdEFycmF5VHlwZSI+CiAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEZWZhdWx0SXRlbSIgdHlwZT0iRGVmYXVsdEl0ZW1UeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIvPgogICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJNaW5JdGVtcyIgdHlwZT0ieHM6aW50IiB1c2U9Im9wdGlvbmFsIiAvPgogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTWF4SXRlbXMiIHR5cGU9InhzOmludCIgdXNlPSJvcHRpb25hbCIgLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CjwveHM6c2NoZW1hPgo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Database.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+CiAgICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIi8+CgogICAgPCEtLSBPVE9CTyBzY2hlbWEgZmlsZXMgLS0+CiAgICA8eHM6ZWxlbWVudCBuYW1lPSJkYXRhYmFzZSI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iVGFibGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlRhYmxlQ3JlYXRlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJUYWJsZUFsdGVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJUYWJsZURyb3AiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Ikluc2VydCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTmFtZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDwhLS0gT1RPQk8gcGFja2FnZSBmaWxlcyAoLnNvcG0pIC0tPgogICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YWJhc2VJbnN0YWxsIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJUYWJsZUNyZWF0ZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iVGFibGVBbHRlciIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iVGFibGVEcm9wIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJJbnNlcnQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlR5cGUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iSWZQYWNrYWdlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IklmTm90UGFja2FnZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgogICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YWJhc2VVbmluc3RhbGwiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlRhYmxlQ3JlYXRlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJUYWJsZUFsdGVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJUYWJsZURyb3AiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Ikluc2VydCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJJZlBhY2thZ2UiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iSWZOb3RQYWNrYWdlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CiAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhYmFzZVJlaW5zdGFsbCI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iVGFibGVDcmVhdGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlRhYmxlQWx0ZXIiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlRhYmxlRHJvcCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iSW5zZXJ0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUeXBlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IklmUGFja2FnZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJJZk5vdFBhY2thZ2UiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFiYXNlVXBncmFkZSI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iVGFibGVDcmVhdGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlRhYmxlQWx0ZXIiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlRhYmxlRHJvcCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iSW5zZXJ0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUeXBlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IklmUGFja2FnZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJJZk5vdFBhY2thZ2UiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8IS0tIE9yYWNsZSBhbGxvd3MgdGFibGUgbmFtZXMgdXAgdG8gMzAgY2hhcmFjdGVycyBvbmx5LiAtLT4KICAgIDx4czpzaW1wbGVUeXBlIG5hbWU9IlRhYmxlTmFtZSI+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czptYXhMZW5ndGggdmFsdWU9IjMwIiAvPgogICAgICAgICAgPHhzOnBhdHRlcm4gdmFsdWU9IlthLXpBLVowLTlfLV0rIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgIDwveHM6c2ltcGxlVHlwZT4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJUYWJsZSI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iQ29sdW1uIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iRm9yZWlnbktleSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iSW5kZXgiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlVuaXF1ZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTmFtZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0iVGFibGVOYW1lIi8+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVmVyc2lvbiIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IlRhYmxlQ3JlYXRlIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJDb2x1bW4iIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJGb3JlaWduS2V5IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJJbmRleCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iVW5pcXVlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJUYWJsZU5hbWUiLz4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJWZXJzaW9uIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iVGFibGVBbHRlciI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iQ29sdW1uQWRkIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJDb2x1bW5DaGFuZ2UiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkNvbHVtbkRyb3AiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkZvcmVpZ25LZXlDcmVhdGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkZvcmVpZ25LZXlEcm9wIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJJbmRleENyZWF0ZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iSW5kZXhEcm9wIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJVbmlxdWVDcmVhdGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlVuaXF1ZURyb3AiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Ik5hbWUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9IlRhYmxlTmFtZSIvPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Ik5hbWVPbGQiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTmFtZU5ldyIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJWZXJzaW9uIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iVGFibGVEcm9wIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTmFtZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0iVGFibGVOYW1lIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJWZXJzaW9uIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDwhLS0gQ29sdW1ucyAtLT4KCiAgICA8IS0tIE9yYWNsZSBhbGxvd3MgY29sdW1uIG5hbWVzIHVwIHRvIDMwIGNoYXJhY3RlcnMgb25seS4gLS0+CiAgICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJDb2x1bW5OYW1lIj4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOm1heExlbmd0aCB2YWx1ZT0iMzAiIC8+CiAgICAgICAgICA8eHM6cGF0dGVybiB2YWx1ZT0iW2EtekEtWjAtOV8tXSsiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgPC94czpzaW1wbGVUeXBlPgoKICAgIDx4czpzaW1wbGVUeXBlIG5hbWU9IkNvbHVtblR5cGUiPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRBVEUiLz4KICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJTTUFMTElOVCIvPgogICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkJJR0lOVCIvPgogICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IklOVEVHRVIiLz4KICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJERUNJTUFMIi8+CiAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVkFSQ0hBUiIvPgogICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkxPTkdCTE9CIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgIDwveHM6c2ltcGxlVHlwZT4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJDb2x1bW4iPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUeXBlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJDb2x1bW5UeXBlIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJBdXRvSW5jcmVtZW50IiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTmFtZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0iQ29sdW1uTmFtZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iUmVxdWlyZWQiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJTaXplIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iUHJpbWFyeUtleSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IkRlZmF1bHQiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgICAgICAgPC94czpzaW1wbGVDb250ZW50PgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CiAgICA8eHM6ZWxlbWVudCBuYW1lPSJDb2x1bW5BZGQiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUeXBlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJDb2x1bW5UeXBlIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJBdXRvSW5jcmVtZW50IiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTmFtZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0iQ29sdW1uTmFtZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iUmVxdWlyZWQiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJTaXplIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iUHJpbWFyeUtleSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IkRlZmF1bHQiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgICAgICAgPC94czpzaW1wbGVDb250ZW50PgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CiAgICA8eHM6ZWxlbWVudCBuYW1lPSJDb2x1bW5DaGFuZ2UiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUeXBlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJDb2x1bW5UeXBlIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJBdXRvSW5jcmVtZW50IiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iUHJpbWFyeUtleSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IkRlZmF1bHQiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lT2xkIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJDb2x1bW5OYW1lIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lTmV3IiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJDb2x1bW5OYW1lIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJSZXF1aXJlZCIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlNpemUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgICAgICAgPC94czpzaW1wbGVDb250ZW50PgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CiAgICA8eHM6ZWxlbWVudCBuYW1lPSJDb2x1bW5Ecm9wIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTmFtZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0iQ29sdW1uTmFtZSIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPCEtLSBGb3JlaWduIEtleXMgLS0+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iRm9yZWlnbktleSI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlJlZmVyZW5jZSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iRm9yZWlnblRhYmxlIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iRm9yZWlnbktleUNyZWF0ZSI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlJlZmVyZW5jZSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iRm9yZWlnblRhYmxlIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iRm9yZWlnbktleURyb3AiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJSZWZlcmVuY2UiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IkZvcmVpZ25UYWJsZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IlJlZmVyZW5jZSI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2ltcGxlQ29udGVudD4KICAgICAgICAgICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IkxvY2FsIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iRm9yZWlnbiIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8IS0tIFVuaXF1ZSBjb2x1bW5zIC0tPgoKICAgIDx4czplbGVtZW50IG5hbWU9IlVuaXF1ZSI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlVuaXF1ZUNvbHVtbiIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTmFtZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IlVuaXF1ZUNvbHVtbiI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2ltcGxlQ29udGVudD4KICAgICAgICAgICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Ik5hbWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgICAgICAgPC94czpzaW1wbGVDb250ZW50PgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iVW5pcXVlQ3JlYXRlIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iVW5pcXVlQ29sdW1uIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iVW5pcXVlRHJvcCI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2ltcGxlQ29udGVudD4KICAgICAgICAgICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Ik5hbWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgICAgICAgPC94czpzaW1wbGVDb250ZW50PgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPCEtLSBJbmRleCBjb2x1bW5zIC0tPgoKICAgIDx4czplbGVtZW50IG5hbWU9IkluZGV4Ij4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iSW5kZXhDb2x1bW4iIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Ik5hbWUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbmRleENvbHVtbiI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2ltcGxlQ29udGVudD4KICAgICAgICAgICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Ik5hbWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJTaXplIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IkluZGV4Q3JlYXRlIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iSW5kZXhDb2x1bW4iIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Ik5hbWUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbmRleERyb3AiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDwhLS0gSW5zZXJ0IHN0dWZmIGludG8gZGF0YWJhc2UgLS0+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iSW5zZXJ0Ij4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iRGF0YSIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUYWJsZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJWZXJzaW9uIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlRyYW5zbGF0YWJsZVN0cmluZyI+CiAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHJhbnNsYXRhYmxlIiB1c2U9Im9wdGlvbmFsIj4KICAgICAgICAgICAgICAgICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IjAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iMSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICAgICAgICAgICAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgICAgICAgICAgICAgIDwveHM6YXR0cmlidXRlPgogICAgICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgoKICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGEiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IlRyYW5zbGF0YWJsZVN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJLZXkiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUeXBlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKPC94czpzY2hlbWE+Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_2/calstblx.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgQ0FMUyBUYWJsZSBNb2RlbCBWNC4zQ1IzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBjYWxzdGJseC5tb2QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDIgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogIFRoaXMgRFREIGlzIGJhc2VkIG9uIHRoZSBDQUxTIFRhYmxlIE1vZGVsCiAgUFVCTElDICItLy9VU0EtRE9ELy9EVEQgVGFibGUgTW9kZWwgOTUxMDEwLy9FTiIKICAKICAkSWQ6IGNhbHN0Ymx4LmR0ZCx2IDEuMTkgMjAwNC8wMS8yMSAxODo1NDoyMSBud2Fsc2ggRXhwICQKICAKICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5IGFuZCBkaXN0cmlidXRlIHRoZSBEb2NCb29rIERURAogIGFuZCBpdHMgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZQogIGlzIGhlcmVieSBncmFudGVkIGluIHBlcnBldHVpdHksIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodAogIG5vdGljZSBhbmQgdGhpcyBwYXJhZ3JhcGggYXBwZWFyIGluIGFsbCBjb3BpZXMuICBUaGUgY29weXJpZ2h0CiAgaG9sZGVycyBtYWtlIG5vIHJlcHJlc2VudGF0aW9uIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGUgRFREIGZvcgogIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3NlZCBvciBpbXBsaWVkCiAgd2FycmFudHkuCiAgCiAgSWYgeW91IG1vZGlmeSB0aGUgRG9jQm9vayBEVEQgaW4gYW55IHdheSwgZXhjZXB0IGZvciBkZWNsYXJpbmcgYW5kCiAgcmVmZXJlbmNpbmcgYWRkaXRpb25hbCBzZXRzIG9mIGdlbmVyYWwgZW50aXRpZXMgYW5kIGRlY2xhcmluZwogIGFkZGl0aW9uYWwgbm90YXRpb25zLCBsYWJlbCB5b3VyIERURCBhcyBhIHZhcmlhbnQgb2YgRG9jQm9vay4gIFNlZQogIHRoZSBtYWludGVuYW5jZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogIAogIFBsZWFzZSBkaXJlY3QgYWxsIHF1ZXN0aW9ucywgYnVnIHJlcG9ydHMsIG9yIHN1Z2dlc3Rpb25zIGZvcgogIGNoYW5nZXMgdG8gdGhlIGRvY2Jvb2tAbGlzdHMub2FzaXMtb3Blbi5vcmcgbWFpbGluZyBsaXN0LiBGb3IgbW9yZQogIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rLy4KLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIFRoaXMgbW9kdWxlIGNvbnRhaW5zIHRoZSBkZWZpbml0aW9ucyBmb3IgdGhlIENBTFMgVGFibGUgTW9kZWwKICBjb252ZXJ0ZWQgdG8gWE1MLiBJdCBoYXMgYmVlbiBtb2RpZmllZCBzbGlnaHRseSBmb3IgdXNlIGluIHRoZQogIGNvbWJpbmVkIEhUTUwvQ0FMUyBtb2RlbHMgc3VwcG9ydGVkIGJ5IERvY0Jvb2sgVjQuMy4KLS0+CjwhLS0KICBUaGVzZSBkZWZpbml0aW9ucyBhcmUgbm90IGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIHRhYmxlIG1vZGVsLCBidXQgYXJlCiAgdXNlZCBpbiB0aGUgZGVmYXVsdCBDQUxTIHRhYmxlIG1vZGVsIGFuZCBhcmUgdXN1YWxseSBkZWZpbmVkIGVsc2V3aGVyZQogIChhbmQgcHJpb3IgdG8gdGhlIGluY2x1c2lvbiBvZiB0aGlzIHRhYmxlIG1vZHVsZSkgaW4gYSBDQUxTIERURC4KLS0+CjwhLS0KICBubyBpZiB6ZXJvKHMpLAogIHllcyBpZiBhbnkgb3RoZXIgZGlnaXRzIHZhbHVlCi0tPgo8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiPgogIDx4czppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiIHNjaGVtYUxvY2F0aW9uPSJ4bWwueHNkIi8+CiAgPHhzOnNpbXBsZVR5cGUgbmFtZT0ieWVzb3JubyI+CiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIi8+CiAgPC94czpzaW1wbGVUeXBlPgogIDx4czpncm91cCBuYW1lPSJ0aXRsZXMiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8IS0tIGRlZmF1bHQgZm9yIHVzZSBpbiBlbnRyeSBjb250ZW50IC0tPgogIDwhLS0KICAgIFRoZSBwYXJhbWV0ZXIgZW50aXRpZXMgYXMgZGVmaW5lZCBiZWxvdyBwcm92aWRlIHRoZSBDQUxTIHRhYmxlIG1vZGVsCiAgICBhcyBwdWJsaXNoZWQgKGFzIHBhcnQgb2YgdGhlIEV4YW1wbGUgRFREKSBpbiBNSUwtSERCSy0yODAwMS4KICAgIAogICAgVGhlc2UgZm9sbG93aW5nIGRlY2xhcmF0aW9ucyBwcm92aWRlIHRoZSBDQUxTLWNvbXBsaWFudCBkZWZhdWx0IGRlZmluaXRpb25zCiAgICBmb3IgdGhlc2UgZW50aXRpZXMuICBIb3dldmVyLCB0aGVzZSBlbnRpdGllcyBjYW4gYW5kIHNob3VsZCBiZSByZWRlZmluZWQKICAgIChieSBnaXZpbmcgdGhlIGFwcHJvcHJpYXRlIHBhcmFtZXRlciBlbnRpdHkgZGVjbGFyYXRpb24ocykgcHJpb3IgdG8gdGhlCiAgICByZWZlcmVuY2UgdG8gdGhpcyBUYWJsZSBNb2RlbCBkZWNsYXJhdGlvbiBzZXQgZW50aXR5KSB0byBmaXQgdGhlIG5lZWRzCiAgICBvZiB0aGUgY3VycmVudCBhcHBsaWNhdGlvbi4KICAtLT4KICA8eHM6Z3JvdXAgbmFtZT0idGJsLnRhYmxlLXRpdGxlcy5tZGwiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Z3JvdXAgcmVmPSJ0aXRsZXMiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0idGJsLnRhYmxlLW1haW4ubWRsIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRncm91cCIvPgogICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJncmFwaGljIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0YmwudGdyb3VwLm1kbCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sc3BlYyIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNwYW5zcGVjIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aGVhZCIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGZvb3QiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0Ym9keSIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmNvbXBsZXhUeXBlPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YmwudGdyb3VwLmF0dCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRncm91cHN0eWxlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGJsLnJvdy5tZGwiPgogICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZW50cnkiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbnRyeXRibCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpjb21wbGV4VHlwZT4KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGJsLmVudHJ5dGJsLm1kbCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sc3BlYyIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNwYW5zcGVjIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aGVhZCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRib2R5Ii8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Y29tcGxleFR5cGU+CiAgPCEtLSA9PT09PSAgRWxlbWVudCBhbmQgYXR0cmlidXRlIGRlY2xhcmF0aW9ucyBmb2xsb3cuID09PT09IC0tPgogIDx4czplbGVtZW50IG5hbWU9InRhYmxlIiBzdWJzdGl0dXRpb25Hcm91cD0iZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNvbXBsZXhDb250ZW50PgogICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idGJsLnRhYmxlLm1kbCI+CiAgICAgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YWJsZS5hdHRsaXN0Ii8+CiAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgIDwveHM6Y29tcGxleENvbnRlbnQ+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFibGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZyYW1lIiB0eXBlPSJ0YmwuZnJhbWUuYXR0dmFsIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHNlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRibC50YWJsZS5hdHQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJvZHlhdHQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0Z3JvdXAiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+CiAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0YmwudGdyb3VwLm1kbCI+CiAgICAgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0Z3JvdXAuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRncm91cC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29scyIgdXNlPSJyZXF1aXJlZCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGJsLnRncm91cC5hdHQiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd3NlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imp1c3RpZnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXJvZmYiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb2xzcGVjIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sc3BlYy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sc3BlYy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sbnVtIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbG5hbWUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sd2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd3NlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imp1c3RpZnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXJvZmYiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNwYW5zcGVjIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3BhbnNwZWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNwYW5zcGVjLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lc3QiIHVzZT0icmVxdWlyZWQiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZWVuZCIgdXNlPSJyZXF1aXJlZCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFubmFtZSIgdXNlPSJyZXF1aXJlZCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ianVzdGlmeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjaGFyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhcm9mZiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGhlYWQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+CiAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0YmwuaGRmdC5tZGwiPgogICAgICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGhlYWQuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRoZWFkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRmb290Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNvbXBsZXhDb250ZW50PgogICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idGJsLmhkZnQubWRsIj4KICAgICAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRmb290LmF0dGxpc3QiLz4KICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgPC94czpjb21wbGV4Q29udGVudD4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0Zm9vdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0Ym9keSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjb21wbGV4Q29udGVudD4KICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRibC50Ym9keS5tZGwiPgogICAgICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGJvZHkuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRib2R5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJvdyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjb21wbGV4Q29udGVudD4KICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRibC5yb3cubWRsIj4KICAgICAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvdy5hdHRsaXN0Ii8+CiAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgIDwveHM6Y29tcGxleENvbnRlbnQ+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icm93LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJlbnRyeXRibCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjb21wbGV4Q29udGVudD4KICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRibC5lbnRyeXRibC5tZGwiPgogICAgICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZW50cnl0YmwuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVudHJ5dGJsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzIiB1c2U9InJlcXVpcmVkIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YmwudGdyb3VwLmF0dCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xuYW1lIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYW5uYW1lIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWVzdCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lZW5kIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHNlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsZWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNlbnRlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJqdXN0aWZ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNoYXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyb2ZmIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN1ciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGJsLmVudHJ5Lm1kbCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlbnRyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbG5hbWUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZXN0Ii8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWVlbmQiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3Bhbm5hbWUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW9yZXJvd3MiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd3NlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imp1c3RpZnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXJvZmYiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm90YXRlIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtaWRkbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm90dG9tIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN1ciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CjwveHM6c2NoZW1hPgo8IS0tIEVuZCBvZiBEb2NCb29rIENBTFMgVGFibGUgTW9kZWwgVjQuM0NSMyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4K</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_2/dbhierx.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgZG9jdW1lbnQgaGllcmFyY2h5IG1vZHVsZSBWNC4zQ1IzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkYmhpZXJ4Lm1vZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDIgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZGJoaWVyeC5tb2QsdiAxLjI4IDIwMDQvMDEvMjEgMTg6NTQ6MjEgbndhbHNoIEV4cCAkCiAgCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSBhbmQgZGlzdHJpYnV0ZSB0aGUgRG9jQm9vayBEVEQKICBhbmQgaXRzIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUKICBpcyBoZXJlYnkgZ3JhbnRlZCBpbiBwZXJwZXR1aXR5LCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQKICBub3RpY2UgYW5kIHRoaXMgcGFyYWdyYXBoIGFwcGVhciBpbiBhbGwgY29waWVzLiAgVGhlIGNvcHlyaWdodAogIGhvbGRlcnMgbWFrZSBubyByZXByZXNlbnRhdGlvbiBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhlIERURCBmb3IKICBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzZWQgb3IgaW1wbGllZAogIHdhcnJhbnR5LgogIAogIElmIHlvdSBtb2RpZnkgdGhlIERvY0Jvb2sgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBvdmVyYWxsIGRvY3VtZW50CiAgaGllcmFyY2hpZXMgb2YgRG9jQm9vayBkb2N1bWVudHMuICBJdCBjb3ZlcnMgY29tcHV0ZXIgZG9jdW1lbnRhdGlvbgogIG1hbnVhbHMgYW5kIG1hbnVhbCBmcmFnbWVudHMsIGFzIHdlbGwgYXMgcmVmZXJlbmNlIGVudHJpZXMgKHN1Y2ggYXMKICBtYW4gcGFnZXMpIGFuZCB0ZWNobmljYWwgam91cm5hbHMgb3IgYW50aG9sb2dpZXMgY29udGFpbmluZwogIGFydGljbGVzLgogIAogIFRoaXMgbW9kdWxlIGRlcGVuZHMgb24gdGhlIERvY0Jvb2sgaW5mb3JtYXRpb24gcG9vbCBtb2R1bGUuICBBbGwKICBlbGVtZW50cyBhbmQgZW50aXRpZXMgcmVmZXJlbmNlZCBidXQgbm90IGRlZmluZWQgaGVyZSBhcmUgYXNzdW1lZAogIHRvIGJlIGRlZmluZWQgaW4gdGhlIGluZm9ybWF0aW9uIHBvb2wgbW9kdWxlLgogIAogIEluIERURCBkcml2ZXIgZmlsZXMgcmVmZXJyaW5nIHRvIHRoaXMgbW9kdWxlLCBwbGVhc2UgdXNlIGFuIGVudGl0eQogIGRlY2xhcmF0aW9uIHRoYXQgdXNlcyB0aGUgcHVibGljIGlkZW50aWZpZXIgc2hvd24gYmVsb3c6CiAgCiAgPCFFTlRJVFkgJSBkYmhpZXIgUFVCTElDCiAgIi0vL09BU0lTLy9FTEVNRU5UUyBEb2NCb29rIERvY3VtZW50IEhpZXJhcmNoeSBWNC4zQ1IzLy9FTiIKICAiZGJoaWVyeC5tb2QiPgogICVkYmhpZXI7CiAgCiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiB0aGUgcGFyYW1ldGVyCiAgZW50aXR5IGFuZCBtb2R1bGUgc2NoZW1lIHVzZWQgaW4gRG9jQm9vaywgY3VzdG9taXppbmcgRG9jQm9vayBhbmQKICBwbGFubmluZyBmb3IgaW50ZXJjaGFuZ2UsIGFuZCBjaGFuZ2VzIG1hZGUgc2luY2UgdGhlIGxhc3QgcmVsZWFzZQogIG9mIERvY0Jvb2suCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRW50aXRpZXMgZm9yIG1vZHVsZSBpbmNsdXNpb25zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIEVudGl0aWVzIGZvciBlbGVtZW50IGNsYXNzZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+Cjx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+CiAgPHhzOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIgc2NoZW1hTG9jYXRpb249InhtbC54c2QiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcHBlbmRpeC5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJlZ2lucGFnZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhcHBlbmRpeGluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idG9jY2hhcCIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcHBlbmRpeC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcnRpY2xlLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImRpdi50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImFydGljbGVpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRvY2NoYXAiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImxvdCIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQuY29udGVudCIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6Z3JvdXAgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYXBwZW5kaXguY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNrbm8iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJ0aWNsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6ZWxlbWVudCBuYW1lPSJib29rLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImRpdi50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJvb2tpbmZvIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZGVkaWNhdGlvbiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0b2MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibG90Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdsb3NzYXJ5Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb2dyYXBoeSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcmVmYWNlIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNoYXB0ZXIuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icmVmZXJlbmNlIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBhcnQiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYXJ0aWNsZS5jbGFzcyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcHBlbmRpeC5jbGFzcyIvPgogICAgICAgICAgPHhzOmdyb3VwIHJlZj0iaW5kZXguY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iY29sb3Bob24iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYm9vay5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjaGFwdGVyLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImNoYXB0ZXJpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYm9va2NvbXBvbmVudC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRvY2NoYXAiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2hhcHRlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6Z3JvdXAgbmFtZT0iaW5kZXguY2xhc3MiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmRleCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InNldGluZGV4Ii8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZmVudHJ5LmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZmVudHJ5aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZtZXRhIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icmVtYXJrIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZm5hbWVkaXYiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmc3lub3BzaXNkaXYiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdDEiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3Rpb24iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdGlvbi5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNlY3Rpb25pbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRpdmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0aW9uLmNsYXNzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0aW9uLmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Rpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmdyb3VwIG5hbWU9Im5hdi5jbGFzcyI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRvYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxvdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZGV4Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZ2xvc3NhcnkiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9ncmFwaHkiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBSZWRlY2xhcmF0aW9uIHBsYWNlaG9sZGVyIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgIEZvciByZWRlY2xhcmluZyBlbnRpdGllcyB0aGF0IGFyZSBkZWNsYXJlZCBhZnRlciB0aGlzIHBvaW50IHdoaWxlCiAgICByZXRhaW5pbmcgdGhlaXIgcmVmZXJlbmNlcyB0byB0aGUgZW50aXRpZXMgdGhhdCBhcmUgZGVjbGFyZWQgYmVmb3JlCiAgICB0aGlzIHBvaW50CiAgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRW50aXRpZXMgZm9yIGVsZW1lbnQgbWl4dHVyZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFRoZSBEb2NCb29rIFRDIG1heSBwcm9kdWNlIGFuIG9mZmljaWFsIGZvcm1zIG1vZHVsZSBmb3IgRG9jQm9vay4gLS0+CiAgPCEtLSBUaGlzIFBFIHByb3ZpZGVzIHRoZSBob29rIGJ5IHdoaWNoIGl0IGNhbiBiZSBpbnNlcnRlZCBpbnRvIHRoZSBEVEQuIC0tPgogIDx4czpncm91cCBuYW1lPSJkaXZjb21wb25lbnQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb21wb3VuZC5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJnZW5vYmouY2xhc3MiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZGVzY29iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InJlZmNvbXBvbmVudC5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbXBvdW5kLmNsYXNzIi8+CiAgICAgIDx4czpncm91cCByZWY9Imdlbm9iai5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJkZXNjb2JqLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iaW5kZXhkaXZjb21wb25lbnQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaXRlbWl6ZWRsaXN0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ib3JkZXJlZGxpc3QiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2YXJpYWJsZWxpc3QiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzaW1wbGVsaXN0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhbmNob3IiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZW1hcmsiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InJlZm5hbWUuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGVjaC5jaGFyLmNsYXNzIi8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InBhcnRjb250ZW50Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFwcGVuZGl4LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY2hhcHRlci5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcnRpY2xlLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJlZmFjZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icmVmZXJlbmNlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJyZWZpbmxpbmUuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ4cmVmLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdlbi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRlY2guY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZG9jaW5mby5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJyZWZjbGFzcy5jaGFyLm1peCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhcHBsaWNhdGlvbiIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDwhLS0gUmVkZWNsYXJhdGlvbiBwbGFjZWhvbGRlciAyIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tCiAgICBGb3IgcmVkZWNsYXJpbmcgZW50aXRpZXMgdGhhdCBhcmUgZGVjbGFyZWQgYWZ0ZXIgdGhpcyBwb2ludCB3aGlsZQogICAgcmV0YWluaW5nIHRoZWlyIHJlZmVyZW5jZXMgdG8gdGhlIGVudGl0aWVzIHRoYXQgYXJlIGRlY2xhcmVkIGJlZm9yZQogICAgdGhpcyBwb2ludAogIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVudGl0aWVzIGZvciBjb250ZW50IG1vZGVscyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmdyb3VwIG5hbWU9ImRpdi50aXRsZS5jb250ZW50Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic3VidGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlYWJicmV2Ii8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InN1YnRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZWFiYnJldiIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJzZWN0LnRpdGxlLmNvbnRlbnQiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzdWJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGVhYmJyZXYiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0icmVmc2VjdC50aXRsZS5jb250ZW50Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic3VidGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlYWJicmV2Ii8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImJvb2tjb21wb25lbnQuY29udGVudCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRpdmNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0MSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3Rpb24uY2xhc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0MSIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3Rpb24uY2xhc3MiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFNldCBhbmQgU2V0SW5mbyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2V0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZGl2LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2V0aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0b2MiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2V0Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJvb2suY2xhc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2V0aW5kZXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNldC5lbGVtZW50IC0tPgogIDwhLS0gRlBJOiBTR01MIGZvcm1hbCBwdWJsaWMgaWRlbnRpZmllciAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmcGkiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNldC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2V0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2V0aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2V0aW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNldGluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2V0aW5mby5lbGVtZW50IC0tPgogIDwhLS0KICAgIENvbnRlbnRzOiBJRHMgb2YgdGhlIFRvQywgQm9va3MsIGFuZCBTZXRJbmRleCB0aGF0IGNvbXByaXNlCiAgICB0aGUgc2V0LCBpbiB0aGUgb3JkZXIgb2YgdGhlaXIgYXBwZWFyYW5jZQogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZXRpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50cyIgdHlwZT0ieHM6SURSRUZTIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXRpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZXRpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2V0aW5mby5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2Ygc2V0LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEJvb2sgYW5kIEJvb2tJbmZvIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJvb2sucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJvb2siIHN1YnN0aXR1dGlvbkdyb3VwPSJib29rLmNsYXNzIi8+CiAgPCEtLSBlbmQgb2YgYm9vay5lbGVtZW50IC0tPgogIDwhLS0gRlBJOiBTR01MIGZvcm1hbCBwdWJsaWMgaWRlbnRpZmllciAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYm9vay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZnBpIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJvb2sucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJvb2suYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBib29rLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYm9va2luZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJvb2tpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYm9va2luZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYm9va2luZm8uZWxlbWVudCAtLT4KICA8IS0tCiAgICBDb250ZW50czogSURzIG9mIHRoZSBUb0MsIExvVHMsIFByZWZhY2VzLCBQYXJ0cywgQ2hhcHRlcnMsCiAgICBBcHBlbmRpeGVzLCBSZWZlcmVuY2VzLCBHTG9zc2FyeSwgQmlibGlvZ3JhcGh5LCBhbmQgaW5kZXhlcwogICAgY29tcHJpc2luZyB0aGUgQm9vaywgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIGFwcGVhcmFuY2UKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYm9va2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnRzIiB0eXBlPSJ4czpJRFJFRlMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJvb2tpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBib29raW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJvb2tpbmZvLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBib29rLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIERlZGljYXRpb24sIFRvQywgYW5kIExvVCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImRlZGljYXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImRlZGljYXRpb24iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibGVnYWxub3RpY2UubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRlZGljYXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZGVkaWNhdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJkZWRpY2F0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGVkaWNhdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZGVkaWNhdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGRlZGljYXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xvcGhvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29sb3Bob24iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGV4dG9iamVjdC5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sb3Bob24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29sb3Bob24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sb3Bob24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb2xvcGhvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29sb3Bob24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb2xvcGhvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvYy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jZnJvbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0b2NwYXJ0Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRvY2NoYXAiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2JhY2siLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRvYy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2MuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2MuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2MubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2Nmcm9udC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jZnJvbnQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2Nmcm9udC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2Nmcm9udC5lbGVtZW50IC0tPgogIDwhLS0gdG8gZWxlbWVudCB0aGF0IHRoaXMgZW50cnkgcmVwcmVzZW50cyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jZnJvbnQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmQuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jZnJvbnQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRvY2Zyb250LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jZnJvbnQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NlbnRyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NlbnRyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NlbnRyeS5lbGVtZW50IC0tPgogIDwhLS0gdG8gZWxlbWVudCB0aGF0IHRoaXMgZW50cnkgcmVwcmVzZW50cyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2VudHJ5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRvY2VudHJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jcGFydC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jcGFydCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jY2hhcCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NwYXJ0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRvY3BhcnQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jcGFydC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY3BhcnQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRvY3BhcnQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NwYXJ0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jY2hhcC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jY2hhcCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jbGV2ZWwxIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2NoYXAuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jY2hhcC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NjaGFwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NjaGFwLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NjaGFwLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jY2hhcC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2xldmVsMS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jbGV2ZWwxIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2VudHJ5Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NsZXZlbDIiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWwxLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRvY2xldmVsMS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NsZXZlbDEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRvY2xldmVsMS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRvY2xldmVsMS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2xldmVsMi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jbGV2ZWwyIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2VudHJ5Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NsZXZlbDMiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWwyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRvY2xldmVsMi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NsZXZlbDIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRvY2xldmVsMi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRvY2xldmVsMi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2xldmVsMy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jbGV2ZWwzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2VudHJ5Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NsZXZlbDQiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWwzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRvY2xldmVsMy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NsZXZlbDMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRvY2xldmVsMy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRvY2xldmVsMy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2xldmVsNC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jbGV2ZWw0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2VudHJ5Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NsZXZlbDUiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWw0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRvY2xldmVsNC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NsZXZlbDQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRvY2xldmVsNC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRvY2xldmVsNC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2xldmVsNS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jbGV2ZWw1Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2VudHJ5Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsNS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWw1LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWw1LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NiYWNrLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0b2NiYWNrIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jYmFjay5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NiYWNrLmVsZW1lbnQgLS0+CiAgPCEtLSB0byBlbGVtZW50IHRoYXQgdGhpcyBlbnRyeSByZXByZXNlbnRzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NiYWNrLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2JhY2sucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRvY2JhY2suYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NiYWNrLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiB0b2MuY29udGVudC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxvdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibG90Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibG90ZW50cnkiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibG90LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxvdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsb3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxvdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbG90LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbG90Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibG90ZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxvdGVudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibG90ZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbG90ZW50cnkuZWxlbWVudCAtLT4KICA8IS0tCiAgICBTcmNDcmVkaXQ6IEluZm9ybWF0aW9uIGFib3V0IHRoZSBzb3VyY2Ugb2YgdGhlIGVudHJ5LAogICAgYXMgZm9yIGEgbGlzdCBvZiBpbGx1c3RyYXRpb25zCiAgLS0+CiAgPCEtLSBsaW5rZW5kOiB0byBlbGVtZW50IHRoYXQgdGhpcyBlbnRyeSByZXByZXNlbnRzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsb3RlbnRyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmQuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcmNjcmVkaXQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxvdGVudHJ5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBsb3RlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGxvdGVudHJ5Lm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBsb3QuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gQXBwZW5kaXgsIENoYXB0ZXIsIFBhcnQsIFByZWZhY2UsIFJlZmVyZW5jZSwgUGFydEludHJvIC4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXBwZW5kaXgucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFwcGVuZGl4IiBzdWJzdGl0dXRpb25Hcm91cD0iYXBwZW5kaXguY2xhc3MiLz4KICA8IS0tIGVuZCBvZiBhcHBlbmRpeC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcHBlbmRpeC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXBwZW5kaXgucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFwcGVuZGl4LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXBwZW5kaXgubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaGFwdGVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjaGFwdGVyIiBzdWJzdGl0dXRpb25Hcm91cD0iY2hhcHRlci5jbGFzcyIvPgogIDwhLS0gZW5kIG9mIGNoYXB0ZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2hhcHRlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2hhcHRlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2hhcHRlci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNoYXB0ZXIubW9kdWxlIC0tPgogIDwhLS0KICAgIE5vdGUgdGhhdCBQYXJ0IHdhcyB0byBoYXZlIGl0cyBjb250ZW50IG1vZGVsIHJlZHVjZWQgaW4gVjQuM0NSMy4gIFRoaXMKICAgIGNoYW5nZSB3aWxsIG5vdCBiZSBtYWRlIGFmdGVyIGFsbC4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFydC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGFydCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InBhcnRpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYm9va2NvbXBvbmVudC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InBhcnRpbnRybyIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJ0Y29udGVudC5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFydC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwYXJ0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcnQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcnQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhcnQuYXR0bGlzdCAtLT4KICA8IS0tIEVMRU1FTlQgUGFydEludHJvIChkZWZpbmVkIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiBwYXJ0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJlZmFjZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJlZmFjZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InByZWZhY2VpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYm9va2NvbXBvbmVudC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRvY2NoYXAiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJlZmFjZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwcmVmYWNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByZWZhY2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmVmYWNlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcmVmYWNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHJlZmFjZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVyZW5jZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmZXJlbmNlIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmZXJlbmNlaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJwYXJ0aW50cm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZlcmVuY2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmZXJlbmNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVyZW5jZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZXJlbmNlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZlcmVuY2UuYXR0bGlzdCAtLT4KICA8IS0tIEVMRU1FTlQgUGFydEludHJvIChkZWZpbmVkIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiByZWZlcmVuY2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJ0aW50cm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBhcnRpbnRybyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImRpdi50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYm9va2NvbXBvbmVudC5jb250ZW50Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcnRpbnRyby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwYXJ0aW50cm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFydGludHJvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJ0aW50cm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhcnRpbnRyby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBhcnRpbnRyby5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gT3RoZXIgSW5mbyBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXBwZW5kaXhpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcHBlbmRpeGluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcHBlbmRpeGluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXBwZW5kaXhpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFwcGVuZGl4aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFwcGVuZGl4aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXBwZW5kaXhpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXBwZW5kaXhpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZ3JhcGh5aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvZ3JhcGh5aW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2dyYXBoeWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmlibGlvZ3JhcGh5aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9ncmFwaHlpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvZ3JhcGh5aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmlibGlvZ3JhcGh5aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeWluZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaGFwdGVyaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2hhcHRlcmluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaGFwdGVyaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjaGFwdGVyaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaGFwdGVyaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNoYXB0ZXJpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjaGFwdGVyaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNoYXB0ZXJpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NhcnlpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc2FyeWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc2FyeWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ2xvc3NhcnlpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzYXJ5aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzYXJ5aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ2xvc3NhcnlpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NhcnlpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXhpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmRleGluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleGluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5kZXhpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5kZXhpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5kZXhpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2V0aW5kZXhpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZXRpbmRleGluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXRpbmRleGluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2V0aW5kZXhpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldGluZGV4aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNldGluZGV4aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2V0aW5kZXhpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2V0aW5kZXhpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFydGluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBhcnRpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFydGluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGFydGluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFydGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJ0aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcGFydGluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwYXJ0aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByZWZhY2VpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcmVmYWNlaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByZWZhY2VpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByZWZhY2VpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByZWZhY2VpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJlZmFjZWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByZWZhY2VpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHJlZmFjZWluZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZlbnRyeWluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZmVudHJ5aW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVudHJ5aW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZlbnRyeWluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZW50cnlpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZW50cnlpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZlbnRyeWluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZlbnRyeWluZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0aW9uaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdGlvbmluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0aW9uaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZzZWN0aW9uaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0aW9uaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3Rpb25pbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZzZWN0aW9uaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3Rpb25pbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdDFpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZzZWN0MWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0MWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDFpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QxaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3QxaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDFpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDFpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdDJpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZzZWN0MmluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0MmluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDJpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QyaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3QyaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDJpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDJpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdDNpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZzZWN0M2luZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0M2luZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDNpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QzaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3QzaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDNpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDNpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc3lub3BzaXNkaXZpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZzeW5vcHNpc2RpdmluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzeW5vcHNpc2RpdmluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc3lub3BzaXNkaXZpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnN5bm9wc2lzZGl2aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnN5bm9wc2lzZGl2aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc3lub3BzaXNkaXZpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmc3lub3BzaXNkaXZpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZXJlbmNlaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmZXJlbmNlaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVyZW5jZWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmZXJlbmNlaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZlcmVuY2VpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZXJlbmNlaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmZXJlbmNlaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZmVyZW5jZWluZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0MWluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlY3QxaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QxaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0MWluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDFpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDFpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0MWluZm8uYXR0bGlzdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDJpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0MmluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0MmluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDJpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QyaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QyaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDJpbmZvLmF0dGxpc3QgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QzaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDNpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDNpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3QzaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0M2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0M2luZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3QzaW5mby5hdHRsaXN0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0NGluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlY3Q0aW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Q0aW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0NGluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDRpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDRpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0NGluZm8uYXR0bGlzdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDVpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0NWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0NWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDVpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Q1aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Q1aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDVpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gU2VjdGlvbiAocGFyYWxsZWwgdG8gU2VjdCopIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0aW9uIiBzdWJzdGl0dXRpb25Hcm91cD0ic2VjdGlvbi5jbGFzcyIvPgogIDwhLS0gZW5kIG9mIHNlY3Rpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlY3Rpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0aW9uaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdGlvbmluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0aW9uaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0aW9uaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0aW9uaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Rpb25pbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0aW9uaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlY3Rpb25pbmZvLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzZWN0aW9uLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFNlY3QxLCBTZWN0MiwgU2VjdDMsIFNlY3Q0LCBTZWN0NSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QxLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0MSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2VjdDFpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRpdmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0MiIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdDIiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDEuZWxlbWVudCAtLT4KICA8IS0tCiAgICBSZW5kZXJhczogSW5kaWNhdGVzIHRoZSBmb3JtYXQgaW4gd2hpY2ggdGhlIGhlYWRpbmcgc2hvdWxkCiAgICBhcHBlYXIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbmRlcmFzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3QxLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VjdDEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0Mi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNlY3QyaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkaXZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdDMiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3QzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3QyLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgUmVuZGVyYXM6IEluZGljYXRlcyB0aGUgZm9ybWF0IGluIHdoaWNoIHRoZSBoZWFkaW5nIHNob3VsZAogICAgYXBwZWFyCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZW5kZXJhcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Q0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Q1Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0Mi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlY3QyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlY3QzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0M2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3Q0Ii8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0NCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0My5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0My5lbGVtZW50IC0tPgogIDwhLS0KICAgIFJlbmRlcmFzOiBJbmRpY2F0ZXMgdGhlIGZvcm1hdCBpbiB3aGljaCB0aGUgaGVhZGluZyBzaG91bGQKICAgIGFwcGVhcgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0My5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVuZGVyYXMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0My5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWN0My5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Q0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0NCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2VjdDRpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRpdmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0NSIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdDUiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDQuZWxlbWVudCAtLT4KICA8IS0tCiAgICBSZW5kZXJhczogSW5kaWNhdGVzIHRoZSBmb3JtYXQgaW4gd2hpY2ggdGhlIGhlYWRpbmcgc2hvdWxkCiAgICBhcHBlYXIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbmRlcmFzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3Q0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VjdDQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0NS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNlY3Q1aW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkaXZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0NS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0NS5lbGVtZW50IC0tPgogIDwhLS0KICAgIFJlbmRlcmFzOiBJbmRpY2F0ZXMgdGhlIGZvcm1hdCBpbiB3aGljaCB0aGUgaGVhZGluZyBzaG91bGQKICAgIGFwcGVhcgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0NS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVuZGVyYXMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0NS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWN0NS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpbXBsZXNlY3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNpbXBsZXNlY3QiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRpdmNvbXBvbmVudC5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2ltcGxlc2VjdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzaW1wbGVzZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpbXBsZXNlY3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaW1wbGVzZWN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzaW1wbGVzZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlc2VjdC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gQmlibGlvZ3JhcGh5IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZ3JhcGh5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9ncmFwaHkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJpYmxpb2dyYXBoeWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYmlibGlvZGl2Ii8+CiAgICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9lbnRyeSIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb21peGVkIi8+CiAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvZ3JhcGh5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9ncmFwaHkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9ncmFwaHkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2Rpdi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvZGl2Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9lbnRyeSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9taXhlZCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9kaXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmlibGlvZGl2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2Rpdi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2Rpdi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmlibGlvZGl2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYmlibGlvZGl2Lm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9ncmFwaHkuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gR2xvc3NhcnkgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3Nhcnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3NzYXJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJnbG9zc2FyeWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ2xvc3NkaXYiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imdsb3NzZW50cnkiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmlibGlvZ3JhcGh5Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzYXJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzYXJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3Nhcnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NhcnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2Rpdi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ2xvc3NkaXYiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imdsb3NzZW50cnkiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NkaXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ2xvc3NkaXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NkaXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc2Rpdi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ2xvc3NkaXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc2Rpdi5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NhcnkuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gSW5kZXggYW5kIFNldEluZGV4IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXhlcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5kZXgiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImluZGV4aW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iYm9va2NvbXBvbmVudC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZGV4ZGl2Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZGV4ZW50cnkiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXguYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5kZXguZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXguYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4ZXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZGV4LmF0dGxpc3QgLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2V0aW5kZXgiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNldGluZGV4aW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iYm9va2NvbXBvbmVudC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZGV4ZGl2Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZGV4ZW50cnkiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2V0aW5kZXguYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2V0aW5kZXguZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2V0aW5kZXguYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleGVzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZXRpbmRleC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZGV4ZXMubW9kdWxlIC0tPgogIDwhLS0KICAgIFNlZ21lbnRlZExpc3QgaW4gdGhpcyBjb250ZW50IGlzIHVzZWZ1bCBmb3IgbWFya2luZyB1cCBwZXJtdXRlZAogICAgaW5kaWNlcy4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXhkaXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImluZGV4ZGl2Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5kZXhkaXZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmRleGVudHJ5Ii8+CiAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VnbWVudGVkbGlzdCIvPgogICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXhkaXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5kZXhkaXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXhkaXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleGRpdi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5kZXhkaXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbmRleGRpdi5tb2R1bGUgLS0+CiAgPCEtLSBJbmRleCBlbnRyaWVzIGFwcGVhciBpbiB0aGUgaW5kZXgsIG5vdCB0aGUgdGV4dC4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4ZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImluZGV4ZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcmltYXJ5aWUiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzZWVpZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzZWVhbHNvaWUiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6c2VxdWVuY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlY29uZGFyeWllIi8+CiAgICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlZWllIi8+CiAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VlYWxzb2llIi8+CiAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idGVydGlhcnlpZSIvPgogICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXhlbnRyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbmRleGVudHJ5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4ZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleGVudHJ5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmRleGVudHJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5kZXhlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByaW1zZWN0ZXJpZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJpbWFyeWllIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJpbWFyeWllLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByaW1hcnlpZS5lbGVtZW50IC0tPgogIDwhLS0gdG8gSW5kZXhUZXJtcyB0aGF0IHRoZXNlIGVudHJpZXMgcmVwcmVzZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmltYXJ5aWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW1zZWN0ZXJpZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJpbWFyeWllLmF0dGxpc3QgLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2Vjb25kYXJ5aWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWNvbmRhcnlpZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWNvbmRhcnlpZS5lbGVtZW50IC0tPgogIDwhLS0gdG8gSW5kZXhUZXJtcyB0aGF0IHRoZXNlIGVudHJpZXMgcmVwcmVzZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWNvbmRhcnlpZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJpbXNlY3RlcmllLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWNvbmRhcnlpZS5hdHRsaXN0IC0tPgogIDx4czplbGVtZW50IG5hbWU9InRlcnRpYXJ5aWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXJ0aWFyeWllLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRlcnRpYXJ5aWUuZWxlbWVudCAtLT4KICA8IS0tIHRvIEluZGV4VGVybXMgdGhhdCB0aGVzZSBlbnRyaWVzIHJlcHJlc2VudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGVydGlhcnlpZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJpbXNlY3RlcmllLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0ZXJ0aWFyeWllLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHJpbXNlY3RlcmllLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VlaWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlZWllIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VlaWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VlaWUuZWxlbWVudCAtLT4KICA8IS0tIHRvIEluZGV4RW50cnkgdG8gbG9vayB1cCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VlaWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VlaWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlZWllLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VlaWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWVhbHNvaWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlZWFsc29pZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZWFsc29pZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWVhbHNvaWUuZWxlbWVudCAtLT4KICA8IS0tIHRvIHJlbGF0ZWQgSW5kZXhFbnRyaWVzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWVhbHNvaWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZWFsc29pZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VlYWxzb2llLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VlYWxzb2llLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBpbmRleC5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBSZWZFbnRyeSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZlbnRyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmZW50cnkiIHN1YnN0aXR1dGlvbkdyb3VwPSJyZWZlbnRyeS5jbGFzcyIvPgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZtZXRhLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZtZXRhIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVmZW50cnl0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJtYW52b2xudW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZm1pc2NpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZm1ldGEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmbWV0YS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZtZXRhLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbWV0YS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmbWV0YS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZm1ldGEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZtaXNjaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmbWlzY2luZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZtaXNjaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZtaXNjaW5mby5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IEZyZWVseSBhc3NpZ25hYmxlIHBhcmFtZXRlcjsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmbWlzY2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZtaXNjaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmbWlzY2luZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZtaXNjaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZm5hbWVkaXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZm5hbWVkaXYiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZmRlc2NyaXB0b3IiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZuYW1lIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZWZwdXJwb3NlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZjbGFzcyIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlbWFyayIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbmFtZWRpdi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZuYW1lZGl2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZm5hbWVkaXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZuYW1lZGl2LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZuYW1lZGl2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmbmFtZWRpdi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmRlc2NyaXB0b3Iucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZmRlc2NyaXB0b3IiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmbmFtZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZkZXNjcmlwdG9yLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmRlc2NyaXB0b3IuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZGVzY3JpcHRvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmRlc2NyaXB0b3Iucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZmRlc2NyaXB0b3IuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZkZXNjcmlwdG9yLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmbmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmbmFtZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZuYW1lLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmbmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZm5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZwdXJwb3NlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZwdXJwb3NlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmlubGluZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZwdXJwb3NlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnB1cnBvc2UuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmcHVycG9zZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnB1cnBvc2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnB1cnBvc2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZwdXJwb3NlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmY2xhc3Mucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmNsYXNzLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmNsYXNzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmNsYXNzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmNsYXNzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmY2xhc3Mucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZmNsYXNzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmY2xhc3MubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzeW5vcHNpc2Rpdi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc3lub3BzaXNkaXYiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZnN5bm9wc2lzZGl2aW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmc2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZzZWN0MiIvPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3QyIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnN5bm9wc2lzZGl2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnN5bm9wc2lzZGl2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnN5bm9wc2lzZGl2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc3lub3BzaXNkaXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnN5bm9wc2lzZGl2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmc3lub3BzaXNkaXYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZzZWN0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZzZWN0aW9uaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9InJlZnNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdGlvbiIvPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3Rpb24iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdGlvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZzZWN0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3Rpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZzZWN0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QxLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZzZWN0MSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmc2VjdDFpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icmVmc2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZzZWN0MiIvPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3QyIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3QxLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QxLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0Mi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZnNlY3QyaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9InJlZnNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdDMiLz4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZzZWN0MyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0Mi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZzZWN0Mi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0Mi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3QyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZzZWN0Mi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdDMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZnNlY3QzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZzZWN0M2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJyZWZzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmY29tcG9uZW50Lm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0My5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZzZWN0My5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0My5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3QzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZzZWN0My5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiByZWZlbnRyeS5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBBcnRpY2xlIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgIEFuIEFydGljbGUgaXMgYSBjaGFwdGVyLWxldmVsLCBzdGFuZC1hbG9uZSBkb2N1bWVudCB0aGF0IGlzIG9mdGVuLAogICAgYnV0IG5lZWQgbm90IGJlLCBjb2xsZWN0ZWQgaW50byBhIEJvb2suCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFydGljbGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFydGljbGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJhcnRpY2xlLmNsYXNzIi8+CiAgPCEtLSBlbmQgb2YgYXJ0aWNsZS5lbGVtZW50IC0tPgogIDwhLS0KICAgIENsYXNzOiBJbmRpY2F0ZXMgdGhlIHR5cGUgb2YgYSBwYXJ0aWN1bGFyIGFydGljbGU7CiAgICBhbGwgYXJ0aWNsZXMgaGF2ZSB0aGUgc2FtZSBzdHJ1Y3R1cmUgYW5kIGdlbmVyYWwgcHVycG9zZS4KICAgIE5vIGRlZmF1bHQuCiAgLS0+CiAgPCEtLSBQYXJlbnRCb29rOiBJRCBvZiB0aGUgZW5jbG9zaW5nIEJvb2sgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFydGljbGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iam91cm5hbGFydGljbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icHJvZHVjdHNoZWV0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IndoaXRlcGFwZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idGVjaHJlcG9ydCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzcGVjaWZpY2F0aW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImZhcSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYXJlbnRib29rIiB0eXBlPSJ4czpJRFJFRiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJ0aWNsZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CjwveHM6c2NoZW1hPgo8IS0tIGVuZCBvZiBhcnRpY2xlLmF0dGxpc3QgLS0+CjwhLS0gZW5kIG9mIGFydGljbGUubW9kdWxlIC0tPgo8IS0tIEVuZCBvZiBEb2NCb29rIGRvY3VtZW50IGhpZXJhcmNoeSBtb2R1bGUgVjQuM0NSMyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4K</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_2/dbnotnx.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgbm90YXRpb25zIG1vZHVsZSBWNC4zQ1IzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkYm5vdG54Lm1vZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDIgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZGJub3RueC5tb2QsdiAxLjIxIDIwMDQvMDEvMjEgMTg6NTQ6MjEgbndhbHNoIEV4cCAkCiAgCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSBhbmQgZGlzdHJpYnV0ZSB0aGUgRG9jQm9vayBEVEQKICBhbmQgaXRzIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUKICBpcyBoZXJlYnkgZ3JhbnRlZCBpbiBwZXJwZXR1aXR5LCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQKICBub3RpY2UgYW5kIHRoaXMgcGFyYWdyYXBoIGFwcGVhciBpbiBhbGwgY29waWVzLiAgVGhlIGNvcHlyaWdodAogIGhvbGRlcnMgbWFrZSBubyByZXByZXNlbnRhdGlvbiBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhlIERURCBmb3IKICBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzZWQgb3IgaW1wbGllZAogIHdhcnJhbnR5LgogIAogIElmIHlvdSBtb2RpZnkgdGhlIERvY0Jvb2sgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgZW50aXR5IGRlY2xhcmF0aW9ucyBmb3IgdGhlIHN0YW5kYXJkIElTTwogIGVudGl0eSBzZXRzIHVzZWQgYnkgRG9jQm9vay4KICAKICBJbiBEVEQgZHJpdmVyIGZpbGVzIHJlZmVycmluZyB0byB0aGlzIG1vZHVsZSwgcGxlYXNlIHVzZSBhbiBlbnRpdHkKICBkZWNsYXJhdGlvbiB0aGF0IHVzZXMgdGhlIHB1YmxpYyBpZGVudGlmaWVyIHNob3duIGJlbG93OgogIAogIDwhRU5USVRZICUgZGJub3RuIFBVQkxJQwogICItLy9PQVNJUy8vRU5USVRJRVMgRG9jQm9vayBOb3RhdGlvbnMgVjQuM0NSMy8vRU4iCiAgImRibm90bngubW9kIj4KICAlZGJub3RuOwogIAogIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24gb24gdGhlIHBhcmFtZXRlcgogIGVudGl0eSBhbmQgbW9kdWxlIHNjaGVtZSB1c2VkIGluIERvY0Jvb2ssIGN1c3RvbWl6aW5nIERvY0Jvb2sgYW5kCiAgcGxhbm5pbmcgZm9yIGludGVyY2hhbmdlLCBhbmQgY2hhbmdlcyBtYWRlIHNpbmNlIHRoZSBsYXN0IHJlbGVhc2UKICBvZiBEb2NCb29rLgotLT4KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4KICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiBzY2hlbWFMb2NhdGlvbj0ieG1sLnhzZCIvPgogIDx4czpzaW1wbGVUeXBlIG5hbWU9Im5vdGF0aW9uLmNsYXNzIj4KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQk1QIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQ0dNLUNIQVIiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJDR00tQklOQVJZIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQ0dNLUNMRUFSIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRElUUk9GRiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRWSSIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkVQUyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkVRTiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkZBWCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkdJRiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkdJRjg3YSIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkdJRjg5YSIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkpQRyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkpQRUciLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJJR0VTIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUENYIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUElDIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUE5HIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUFMiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJTR01MIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVEJMIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVEVYIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVElGRiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IldNRiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IldQRyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlNWRyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBERiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlNXRiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVzcGVjaWZpYyIvPgogICAgPC94czpyZXN0cmljdGlvbj4KICA8L3hzOnNpbXBsZVR5cGU+CjwveHM6c2NoZW1hPgo8IS0tIFdvcmRQZXJmZWN0IEdyYXBoaWMgZm9ybWF0IC0tPgo8IS0tIEVuZCBvZiBEb2NCb29rIG5vdGF0aW9ucyBtb2R1bGUgVjQuM0NSMyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4K</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_2/dbpoolx.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgWE1MIGluZm9ybWF0aW9uIHBvb2wgbW9kdWxlIFY0LjNDUjMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkYnBvb2x4Lm1vZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDIgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZGJwb29seC5tb2QsdiAxLjg1IDIwMDQvMDEvMjEgMTg6NTQ6MjEgbndhbHNoIEV4cCAkCiAgCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSBhbmQgZGlzdHJpYnV0ZSB0aGUgRG9jQm9vayBYTUwgRFRECiAgYW5kIGl0cyBhY2NvbXBhbnlpbmcgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlCiAgaXMgaGVyZWJ5IGdyYW50ZWQgaW4gcGVycGV0dWl0eSwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0CiAgbm90aWNlIGFuZCB0aGlzIHBhcmFncmFwaCBhcHBlYXIgaW4gYWxsIGNvcGllcy4gIFRoZSBjb3B5cmlnaHQKICBob2xkZXJzIG1ha2Ugbm8gcmVwcmVzZW50YXRpb24gYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoZSBEVEQgZm9yCiAgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzc2VkIG9yIGltcGxpZWQKICB3YXJyYW50eS4KICAKICBJZiB5b3UgbW9kaWZ5IHRoZSBEb2NCb29rIFhNTCBEVEQgaW4gYW55IHdheSwgZXhjZXB0IGZvciBkZWNsYXJpbmcgYW5kCiAgcmVmZXJlbmNpbmcgYWRkaXRpb25hbCBzZXRzIG9mIGdlbmVyYWwgZW50aXRpZXMgYW5kIGRlY2xhcmluZwogIGFkZGl0aW9uYWwgbm90YXRpb25zLCBsYWJlbCB5b3VyIERURCBhcyBhIHZhcmlhbnQgb2YgRG9jQm9vay4gIFNlZQogIHRoZSBtYWludGVuYW5jZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogIAogIFBsZWFzZSBkaXJlY3QgYWxsIHF1ZXN0aW9ucywgYnVnIHJlcG9ydHMsIG9yIHN1Z2dlc3Rpb25zIGZvcgogIGNoYW5nZXMgdG8gdGhlIGRvY2Jvb2tAbGlzdHMub2FzaXMtb3Blbi5vcmcgbWFpbGluZyBsaXN0LiBGb3IgbW9yZQogIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rLy4KLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIFRoaXMgbW9kdWxlIGNvbnRhaW5zIHRoZSBkZWZpbml0aW9ucyBmb3IgdGhlIG9iamVjdHMsIGlubGluZQogIGVsZW1lbnRzLCBhbmQgc28gb24gdGhhdCBhcmUgYXZhaWxhYmxlIHRvIGJlIHVzZWQgYXMgdGhlIG1haW4KICBjb250ZW50IG9mIERvY0Jvb2sgZG9jdW1lbnRzLiAgU29tZSBlbGVtZW50cyBhcmUgdXNlZnVsIGZvciBnZW5lcmFsCiAgcHVibGlzaGluZywgYW5kIG90aGVycyBhcmUgdXNlZnVsIHNwZWNpZmljYWxseSBmb3IgY29tcHV0ZXIKICBkb2N1bWVudGF0aW9uLgogIAogIFRoaXMgbW9kdWxlIGhhcyB0aGUgZm9sbG93aW5nIGRlcGVuZGVuY2llcyBvbiBvdGhlciBtb2R1bGVzOgogIAogIG8gSXQgYXNzdW1lcyB0aGF0IGEgJW5vdGF0aW9uLmNsYXNzOyBlbnRpdHkgaXMgZGVmaW5lZCBieSB0aGUKICAgIGRyaXZlciBmaWxlIG9yIG90aGVyIGhpZ2gtbGV2ZWwgbW9kdWxlLiAgVGhpcyBlbnRpdHkgaXMKICAgIHJlZmVyZW5jZWQgaW4gdGhlIE5PVEFUSU9OIGF0dHJpYnV0ZXMgZm9yIHRoZSBncmFwaGljLXJlbGF0ZWQgYW5kCiAgICBNb2RlU3BlYyBlbGVtZW50cy4KICAKICBvIEl0IGFzc3VtZXMgdGhhdCBhbiBhcHByb3ByaWF0ZWx5IHBhcmFtZXRlcml6ZWQgdGFibGUgbW9kdWxlIGlzCiAgICBhdmFpbGFibGUgZm9yIHVzZSB3aXRoIHRoZSB0YWJsZS1yZWxhdGVkIGVsZW1lbnRzLgogIAogIEluIERURCBkcml2ZXIgZmlsZXMgcmVmZXJyaW5nIHRvIHRoaXMgbW9kdWxlLCBwbGVhc2UgdXNlIGFuIGVudGl0eQogIGRlY2xhcmF0aW9uIHRoYXQgdXNlcyB0aGUgcHVibGljIGlkZW50aWZpZXIgc2hvd24gYmVsb3c6CiAgCiAgPCFFTlRJVFkgJSBkYnBvb2wgUFVCTElDCiAgIi0vL09BU0lTLy9FTEVNRU5UUyBEb2NCb29rIFhNTCBJbmZvcm1hdGlvbiBQb29sIFY0LjNDUjMvL0VOIgogICJkYnBvb2x4Lm1vZCI+CiAgJWRicG9vbDsKICAKICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHRoZSBwYXJhbWV0ZXIKICBlbnRpdHkgYW5kIG1vZHVsZSBzY2hlbWUgdXNlZCBpbiBEb2NCb29rLCBjdXN0b21pemluZyBEb2NCb29rIGFuZAogIHBsYW5uaW5nIGZvciBpbnRlcmNoYW5nZSwgYW5kIGNoYW5nZXMgbWFkZSBzaW5jZSB0aGUgbGFzdCByZWxlYXNlCiAgb2YgRG9jQm9vay4KLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSBHZW5lcmFsLXB1cnBvc2Ugc2VtYW50aWNzIGVudGl0aWVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiPgogIDx4czppbmNsdWRlIHNjaGVtYUxvY2F0aW9uPSJodG1sdGJseC54c2QiLz4KICA8eHM6aW5jbHVkZSBzY2hlbWFMb2NhdGlvbj0iY2Fsc3RibHgueHNkIi8+CiAgPHhzOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIgc2NoZW1hTG9jYXRpb249InhtbC54c2QiLz4KICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJ5ZXNvcm5vLmF0dHZhbHMiPgogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyIvPgogIDwveHM6c2ltcGxlVHlwZT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBFbnRpdGllcyBmb3IgbW9kdWxlIGluY2x1c2lvbnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVudGl0aWVzIGZvciBlbGVtZW50IGNsYXNzZXMgYW5kIG1peHR1cmVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSAiVWJpcXVpdG91cyIgY2xhc3NlczogbmR4dGVybS5jbGFzcyBhbmQgYmVnaW5wYWdlIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im5keHRlcm0uY2xhc3MiIGFic3RyYWN0PSJ0cnVlIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJwcmltYXJ5Ii8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlY29uZGFyeSIvPgogICAgICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZXJ0aWFyeSIvPgogICAgICAgICAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlZSIvPgogICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWVhbHNvIi8+CiAgICAgICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VlIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VlYWxzbyIvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VlYWxzbyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleHRlcm0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBPYmplY3QtbGV2ZWwgY2xhc3NlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czplbGVtZW50IG5hbWU9Imxpc3QuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYWRtb24uY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGluZXNwZWNpZmljLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czplbGVtZW50IG5hbWU9Im1ldGhvZC5zeW5vcC5jbGFzcyIgYWJzdHJhY3Q9InRydWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJzeW5vcC5jbGFzcyIvPgogIDx4czplbGVtZW50IG5hbWU9InN5bm9wLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czplbGVtZW50IG5hbWU9InBhcmEuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5mb3JtYWwuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZm9ybWFsLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDwhLS0gVGhlIERvY0Jvb2sgVEMgbWF5IHByb2R1Y2UgYW4gb2ZmaWNpYWwgRUJORiBtb2R1bGUgZm9yIERvY0Jvb2suIC0tPgogIDwhLS0gVGhpcyBQRSBwcm92aWRlcyB0aGUgaG9vayBieSB3aGljaCBpdCBjYW4gYmUgaW5zZXJ0ZWQgaW50byB0aGUgRFRELiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb21wb3VuZC5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6Z3JvdXAgbmFtZT0iZ2Vub2JqLmNsYXNzIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYW5jaG9yIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYnJpZGdlaGVhZCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlbWFyayIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImhpZ2hsaWdodHMiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImRlc2NvYmouY2xhc3MiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhYnN0cmFjdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImF1dGhvcmJsdXJiIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZXBpZ3JhcGgiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBDaGFyYWN0ZXItbGV2ZWwgY2xhc3NlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czplbGVtZW50IG5hbWU9InhyZWYuY2hhci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJnZW4uY2hhci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaW5rLmNoYXIuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPCEtLSBUaGUgRG9jQm9vayBUQyBtYXkgcHJvZHVjZSBhbiBvZmZpY2lhbCBFQk5GIG1vZHVsZSBmb3IgRG9jQm9vay4gLS0+CiAgPCEtLSBUaGlzIFBFIHByb3ZpZGVzIHRoZSBob29rIGJ5IHdoaWNoIGl0IGNhbiBiZSBpbnNlcnRlZCBpbnRvIHRoZSBEVEQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InRlY2guY2hhci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6Z3JvdXAgbmFtZT0iYmFzZS5jaGFyLmNsYXNzIj4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhbmNob3IiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJkb2NpbmZvLmNoYXIuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmdyb3VwIG5hbWU9Im90aGVyLmNoYXIuY2xhc3MiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZW1hcmsiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzY3JpcHQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdXBlcnNjcmlwdCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmxpbmVvYmouY2hhci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBFbnRpdGllcyBmb3IgY29udGVudCBtb2RlbHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czpncm91cCBuYW1lPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlYWJicmV2Ii8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBSZWRlY2xhcmF0aW9uIHBsYWNlaG9sZGVyIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgIEZvciByZWRlY2xhcmluZyBlbnRpdGllcyB0aGF0IGFyZSBkZWNsYXJlZCBhZnRlciB0aGlzIHBvaW50IHdoaWxlCiAgICByZXRhaW5pbmcgdGhlaXIgcmVmZXJlbmNlcyB0byB0aGUgZW50aXRpZXMgdGhhdCBhcmUgZGVjbGFyZWQgYmVmb3JlCiAgICB0aGlzIHBvaW50CiAgLS0+CiAgPCEtLSBPYmplY3QtbGV2ZWwgbWl4dHVyZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0IGFkbW4gbGluZSBzeW5wIHBhcmEgaW5mbSBmb3JtIGNtcGQgZ2VuICBkZXNjCiAgICBDb21wb25lbnQgbWl4dHVyZSAgICAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYCiAgICBTaWRlYmFyIG1peHR1cmUgICAgICAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIGEgICAgWAogICAgRm9vdG5vdGUgbWl4dHVyZSAgICAgICAgWCAgICAgICAgIFggICAgWCAgICBYICAgIFgKICAgIEV4YW1wbGUgbWl4dHVyZSAgICAgICAgIFggICAgICAgICBYICAgIFggICAgWCAgICBYCiAgICBIaWdobGlnaHRzIG1peHR1cmUgICAgICBYICAgIFggICAgICAgICAgICAgIFgKICAgIFBhcmFncmFwaCBtaXh0dXJlICAgICAgIFggICAgICAgICBYICAgIFggICAgICAgICBYCiAgICBBZG1vbml0aW9uIG1peHR1cmUgICAgICBYICAgICAgICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIGIgICAgYwogICAgRmlndXJlIG1peHR1cmUgICAgICAgICAgICAgICAgICAgIFggICAgWCAgICAgICAgIFgKICAgIFRhYmxlIGVudHJ5IG1peHR1cmUgICAgIFggICAgWCAgICBYICAgICAgICAgWCAgICBkCiAgICBHbG9zc2FyeSBkZWYgbWl4dHVyZSAgICBYICAgICAgICAgWCAgICBYICAgIFggICAgWCAgICAgICAgIGUKICAgIExlZ2FsIG5vdGljZSBtaXh0dXJlICAgIFggICAgWCAgICBYICAgICAgICAgWCAgICBmCiAgICAKICAgIGEuIEp1c3QgUHJvY2VkdXJlOyBub3QgU2lkZWJhciBpdHNlbGYgb3IgTXNnU2V0LgogICAgYi4gTm8gTXNnU2V0LgogICAgYy4gTm8gSGlnaGxpZ2h0cy4KICAgIGQuIEp1c3QgR3JhcGhpYzsgbm8gb3RoZXIgaW5mb3JtYWwgb2JqZWN0cy4KICAgIGUuIE5vIEFuY2hvciwgQnJpZGdlSGVhZCwgb3IgSGlnaGxpZ2h0cy4KICAgIGYuIEp1c3QgQmxvY2tRdW90ZTsgbm8gb3RoZXIgaW5mb3JtYWwgb2JqZWN0cy4KICAtLT4KICA8eHM6Z3JvdXAgbmFtZT0iY29tcG9uZW50Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29tcG91bmQuY2xhc3MiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZ2Vub2JqLmNsYXNzIi8+CiAgICAgIDx4czpncm91cCByZWY9ImRlc2NvYmouY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJzaWRlYmFyLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJvY2VkdXJlIi8+CiAgICAgIDx4czpncm91cCByZWY9Imdlbm9iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InFhbmRhc2V0Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJvY2VkdXJlIi8+CiAgICAgIDx4czpncm91cCByZWY9Imdlbm9iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InJldmRlc2NyaXB0aW9uLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJvY2VkdXJlIi8+CiAgICAgIDx4czpncm91cCByZWY9Imdlbm9iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImZvb3Rub3RlLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iZXhhbXBsZS5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJoaWdobGlnaHRzLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDwhLS0KICAgICVmb3JtYWwuY2xhc3M7IGlzIGV4cGxpY2l0bHkgZXhjbHVkZWQgZnJvbSBtYW55IGNvbnRleHRzIGluIHdoaWNoCiAgICBwYXJhZ3JhcGhzIGFyZSB1c2VkCiAgLS0+CiAgPHhzOmdyb3VwIG5hbWU9InBhcmEubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImFkbW9uLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InByb2NlZHVyZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InNpZGViYXIiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhbmNob3IiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJicmlkZ2VoZWFkIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icmVtYXJrIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iZmlndXJlLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJ0YWJlbnRyeS5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im1lZGlhb2JqZWN0Ii8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJnbG9zc2RlZi5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZW1hcmsiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJsZWdhbG5vdGljZS5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmxvY2txdW90ZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InRleHRvYmplY3QubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJsb2NrcXVvdGUiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWVkaWFvYmplY3QubWl4IiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czpncm91cCBuYW1lPSJsaXN0cHJlYW1ibGUubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJnZW5vYmouY2xhc3MiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZGVzY29iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBDaGFyYWN0ZXItbGV2ZWwgbWl4dHVyZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gc2dtbC5mZWF0dXJlcyAtLT4KICA8IS0tIG5vdCBbc2dtbC5mZWF0dXJlc1sgLS0+CiAgPCEtLSBdXSBub3Qgc2dtbC5mZWF0dXJlcyAtLT4KICA8IS0tCiAgICAgICAgICAgICAgICAgICAgICAgICNQQ0QgeHJlZiB3b3JkIGxpbmsgY3B0ciBiYXNlIGRuZm8gb3RociBpbm9iIChzeW5vcCkKICAgIHBhcmEuY2hhci5taXggICAgICAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWAogICAgdGl0bGUuY2hhci5taXggICAgICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYCiAgICBuZHh0ZXJtLmNoYXIubWl4ICAgICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIGEKICAgIGNwdHIuY2hhci5taXggICAgICAgICBYICAgICAgICAgICAgICBYICAgIFggICAgWCAgICAgICAgIFggICAgYQogICAgc21hbGxjcHRyLmNoYXIubWl4ICAgIFggICAgICAgICAgICAgICAgICAgYiAgICAgICAgICAgICAgICAgICBhCiAgICB3b3JkLmNoYXIubWl4ICAgICAgICAgWCAgICAgICAgIGMgICAgWCAgICAgICAgIFggICAgICAgICBYICAgIGEKICAgIGRvY2luZm8uY2hhci5taXggICAgICBYICAgICAgICAgZCAgICBYICAgIGIgICAgICAgICAgICAgIFggICAgYQogICAgCiAgICBhLiBKdXN0IElubGluZUdyYXBoaWM7IG5vIElubGluZUVxdWF0aW9uLgogICAgYi4gSnVzdCBSZXBsYWNlYWJsZTsgbm8gb3RoZXIgY29tcHV0ZXIgdGVybXMuCiAgICBjLiBKdXN0IEVtcGhhc2lzIGFuZCBUcmFkZW1hcms7IG5vIG90aGVyIHdvcmQgZWxlbWVudHMuCiAgICBkLiBKdXN0IEFjcm9ueW0sIEVtcGhhc2lzLCBhbmQgVHJhZGVtYXJrOyBubyBvdGhlciB3b3JkIGVsZW1lbnRzLgogIC0tPgogIDwhLS0gVGhlIERvY0Jvb2sgVEMgbWF5IHByb2R1Y2UgYW4gb2ZmaWNpYWwgZm9ybXMgbW9kdWxlIGZvciBEb2NCb29rLiAtLT4KICA8IS0tIFRoaXMgUEUgcHJvdmlkZXMgdGhlIGhvb2sgYnkgd2hpY2ggaXQgY2FuIGJlIGluc2VydGVkIGludG8gdGhlIERURC4gLS0+CiAgPHhzOmdyb3VwIG5hbWU9InBhcmEuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ4cmVmLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdlbi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRlY2guY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZG9jaW5mby5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lb2JqLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InRpdGxlLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ieHJlZi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnZW4uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImRvY2luZm8uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW9iai5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJuZHh0ZXJtLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ieHJlZi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnZW4uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImRvY2luZm8uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZWdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJjcHRyLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJvdGhlci5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVncmFwaGljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVtZWRpYW9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJzbWFsbGNwdHIuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXBsYWNlYWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgICA8L3hzOmNob2ljZT4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0id29yZC5jaGFyLm1peCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjcm9ueW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtcGhhc2lzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0cmFkZW1hcmsiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZWdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImRvY2luZm8uY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtcGhhc2lzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0cmFkZW1hcmsiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlcGxhY2VhYmxlIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBFTlRJVFkgJSBiaWJsaW9jb21wb25lbnQubWl4IChzZWUgQmlibGlvZ3JhcGhpYyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBFTlRJVFkgJSBwZXJzb24uaWRlbnQubWl4IChzZWUgQmlibGlvZ3JhcGhpYyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRW50aXRpZXMgZm9yIGF0dHJpYnV0ZXMgYW5kIGF0dHJpYnV0ZSBjb21wb25lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVmZmVjdGl2aXR5IGF0dHJpYnV0ZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgQXJjaDogQ29tcHV0ZXIgb3IgY2hpcCBhcmNoaXRlY3R1cmUgdG8gd2hpY2ggZWxlbWVudCBhcHBsaWVzOyBubwogICAgZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmNoLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFyY2giLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gQ29uZGl0aW9uOiBHZW5lcmFsLXB1cnBvc2UgZWZmZWN0aXZpdHkgYXR0cmlidXRlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25kaXRpb24uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29uZGl0aW9uIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIENvbmZvcm1hbmNlOiBTdGFuZGFyZHMgY29uZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mb3JtYW5jZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb25mb3JtYW5jZSIgdHlwZT0ieHM6Tk1UT0tFTlMiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gT1M6IE9wZXJhdGluZyBzeXN0ZW0gdG8gd2hpY2ggZWxlbWVudCBhcHBsaWVzOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBSZXZpc2lvbjogRWRpdG9yaWFsIHJldmlzaW9uIHRvIHdoaWNoIGVsZW1lbnQgYmVsb25nczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aXNpb24uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmV2aXNpb24iLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gU2VjdXJpdHk6IFNlY3VyaXR5IGNsYXNzaWZpY2F0aW9uOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN1cml0eS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWN1cml0eSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgVXNlckxldmVsOiBMZXZlbCBvZiB1c2VyIGV4cGVyaWVuY2UgdG8gd2hpY2ggZWxlbWVudCBhcHBsaWVzOyBubwogICAgZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ1c2VybGV2ZWwuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXNlcmxldmVsIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFZlbmRvcjogQ29tcHV0ZXIgdmVuZG9yIHRvIHdoaWNoIGVsZW1lbnQgYXBwbGllczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmVuZG9yLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZlbmRvciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVmZmVjdGl2aXR5LmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcmNoLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZGl0aW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZm9ybWFuY2UuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldmlzaW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXJpdHkuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ1c2VybGV2ZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2ZW5kb3IuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIENvbW1vbiBhdHRyaWJ1dGVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBJZDogVW5pcXVlIGlkZW50aWZpZXIgb2YgZWxlbWVudDsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaWQuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InhzOklEIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBJZDogVW5pcXVlIGlkZW50aWZpZXIgb2YgZWxlbWVudDsgYSB2YWx1ZSBtdXN0IGJlIHN1cHBsaWVkOyBubwogICAgZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpZHJlcS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpZCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6SUQiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIExhbmc6IEluZGljYXRvciBvZiBsYW5ndWFnZSBpbiB3aGljaCBlbGVtZW50IGlzIHdyaXR0ZW4sIGZvcgogICAgdHJhbnNsYXRpb24sIGNoYXJhY3RlciBzZXQgbWFuYWdlbWVudCwgZXRjLjsgbm8gZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsYW5nLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhbmciLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gUmVtYXA6IFByZXZpb3VzIHJvbGUgb2YgZWxlbWVudCBiZWZvcmUgY29udmVyc2lvbjsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVtYXAuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVtYXAiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gUm9sZTogTmV3IHJvbGUgb2YgZWxlbWVudCBpbiBsb2NhbCBlbnZpcm9ubWVudDsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb2xlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBYUmVmTGFiZWw6IEFsdGVybmF0ZSBsYWJlbGluZyBzdHJpbmcgZm9yIFhSZWYgdGV4dCBnZW5lcmF0aW9uOwogICAgZGVmYXVsdCBpcyB1c3VhbGx5IHRpdGxlIG9yIG90aGVyIGFwcHJvcHJpYXRlIGxhYmVsIHRleHQgYWxyZWFkeQogICAgY29udGFpbmVkIGluIGVsZW1lbnQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ieHJlZmxhYmVsLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InhyZWZsYWJlbCIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgUmV2aXNpb25GbGFnOiBSZXZpc2lvbiBzdGF0dXMgb2YgZWxlbWVudDsgZGVmYXVsdCBpcyB0aGF0IGVsZW1lbnQKICAgIHdhc24ndCByZXZpc2VkCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldmlzaW9uZmxhZy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXZpc2lvbmZsYWciPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjaGFuZ2VkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFkZGVkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRlbGV0ZWQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib2ZmIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRpcjogQmlkaXJlY3Rpb25hbCBvdmVycmlkZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGlyLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRpciI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imx0ciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJydGwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibHJvIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJsbyIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSB4bWw6YmFzZTogYmFzZSBVUkkgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InhtbC1iYXNlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIHJlZj0ieG1sOmJhc2UiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gUm9sZSBpcyBpbmNsdWRlZCBleHBsaWNpdGx5IG9uIGVhY2ggZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29tbW9uLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpZC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhbmcuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZW1hcC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InhyZWZsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldmlzaW9uZmxhZy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVmZmVjdGl2aXR5LmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGlyLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ieG1sLWJhc2UuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFJvbGUgaXMgaW5jbHVkZWQgZXhwbGljaXRseSBvbiBlYWNoIGVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlkcmVxLmNvbW1vbi5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaWRyZXEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYW5nLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVtYXAuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4cmVmbGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZpc2lvbmZsYWcuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlZmZlY3Rpdml0eS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRpci5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InhtbC1iYXNlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBTZW1pLWNvbW1vbiBhdHRyaWJ1dGVzIGFuZCBvdGhlciBhdHRyaWJ1dGUgZW50aXRpZXMgLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgIEVudGl0eVJlZjogTmFtZSBvZiBhbiBleHRlcm5hbCBlbnRpdHkgY29udGFpbmluZyB0aGUgY29udGVudAogICAgb2YgdGhlIGdyYXBoaWMKICAtLT4KICA8IS0tCiAgICBGaWxlUmVmOiBGaWxlbmFtZSwgcXVhbGlmaWVkIGJ5IGEgcGF0aG5hbWUgaWYgZGVzaXJlZCwKICAgIGRlc2lnbmF0aW5nIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnQgb2YgdGhlIGdyYXBoaWMKICAtLT4KICA8IS0tIEZvcm1hdDogTm90YXRpb24gb2YgdGhlIGVsZW1lbnQgY29udGVudCwgaWYgYW55IC0tPgogIDwhLS0gU3JjQ3JlZGl0OiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgc291cmNlIG9mIHRoZSBHcmFwaGljIC0tPgogIDwhLS0gV2lkdGg6IFNhbWUgYXMgQ0FMUyByZXByb3dpZCAoZGVzaXJlZCB3aWR0aCkgLS0+CiAgPCEtLSBEZXB0aDogU2FtZSBhcyBDQUxTIHJlcHJvZGVwIChkZXNpcmVkIGRlcHRoKSAtLT4KICA8IS0tCiAgICBBbGlnbjogU2FtZSBhcyBDQUxTIGhwbGFjZSB3aXRoICdub25lJyByZW1vdmVkOyAjSU1QTElFRCBtZWFucwogICAgYXBwbGljYXRpb24tc3BlY2lmaWMKICAtLT4KICA8IS0tIFNjYWxlOiBDb25mbGF0aW9uIG9mIENBTFMgaHNjYWxlIGFuZCB2c2NhbGUgLS0+CiAgPCEtLSBTY2FsZWZpdDogU2FtZSBhcyBDQUxTIHNjYWxlZml0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJncmFwaGljcy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbnRpdHlyZWYiIHR5cGU9InhzOkVOVElUWSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaWxlcmVmIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvcm1hdCIgdHlwZT0ibm90YXRpb24uY2xhc3MiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3JjY3JlZGl0Ii8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnR3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZXB0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50ZGVwdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsZWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNlbnRlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY2FsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY2FsZWZpdCIgdHlwZT0ieWVzb3Juby5hdHR2YWxzIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBBY3Rpb246IEtleSBjb21iaW5hdGlvbiB0eXBlOyBkZWZhdWx0IGlzIHVuc3BlY2lmaWVkIGlmIG9uZQogICAgY2hpbGQgZWxlbWVudCwgU2ltdWwgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZTsgaWYgdmFsdWUgaXMKICAgIE90aGVyLCB0aGUgT3RoZXJBY3Rpb24gYXR0cmlidXRlIG11c3QgaGF2ZSBhIG5vbmVtcHR5IHZhbHVlCiAgLS0+CiAgPCEtLSBPdGhlckFjdGlvbjogVXNlci1kZWZpbmVkIGtleSBjb21iaW5hdGlvbiB0eXBlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXlhY3Rpb24uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWN0aW9uIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2xpY2siLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZG91YmxlLWNsaWNrIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InByZXNzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlcSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzaW11bCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcmFjdGlvbiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgTGFiZWw6IElkZW50aWZ5aW5nIG51bWJlciBvciBzdHJpbmc7IGRlZmF1bHQgaXMgdXN1YWxseSB0aGUKICAgIGFwcHJvcHJpYXRlIG51bWJlciBvciBzdHJpbmcgYXV0b2dlbmVyYXRlZCBieSBhIGZvcm1hdHRlcgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsYWJlbC5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbCIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgRm9ybWF0OiB3aGV0aGVyIGVsZW1lbnQgaXMgYXNzdW1lZCB0byBjb250YWluIHNpZ25pZmljYW50IHdoaXRlCiAgICBzcGFjZQogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaW5lc3BlY2lmaWMuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZm9ybWF0IiBkZWZhdWx0PSJsaW5lc3BlY2lmaWMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lc3BlY2lmaWMiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGluZW51bWJlcmluZyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im51bWJlcmVkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InVubnVtYmVyZWQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGludWF0aW9uIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29udGludWVzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlc3RhcnRzIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0YXJ0aW5nbGluZW51bWJlciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5ndWFnZSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBMaW5rZW5kOiBsaW5rIHRvIHJlbGF0ZWQgaW5mb3JtYXRpb247IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmtlbmQuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlua2VuZCIgdHlwZT0ieHM6SURSRUYiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gTGlua2VuZDogcmVxdWlyZWQgbGluayB0byByZWxhdGVkIGluZm9ybWF0aW9uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaW5rZW5kcmVxLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxpbmtlbmQiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOklEUkVGIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBMaW5rZW5kczogbGluayB0byBvbmUgb3IgbW9yZSBzZXRzIG9mIHJlbGF0ZWQgaW5mb3JtYXRpb247IG5vCiAgICBkZWZhdWx0CiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmtlbmRzLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxpbmtlbmRzIiB0eXBlPSJ4czpJRFJFRlMiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtYXJrLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1hcmsiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gTW9yZUluZm86IHdoZXRoZXIgZWxlbWVudCdzIGNvbnRlbnQgaGFzIGFuIGFzc29jaWF0ZWQgUmVmRW50cnkgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1vcmVpbmZvLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1vcmVpbmZvIiBkZWZhdWx0PSJub25lIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVmZW50cnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm9uZSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBQYWdlbnVtOiBudW1iZXIgb2YgcGFnZSBvbiB3aGljaCBlbGVtZW50IGFwcGVhcnM7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhZ2VudW0uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGFnZW51bSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgU3RhdHVzOiBFZGl0b3JpYWwgb3IgcHVibGljYXRpb24gc3RhdHVzIG9mIHRoZSBlbGVtZW50CiAgICBpdCBhcHBsaWVzIHRvLCBzdWNoIGFzICJpbiByZXZpZXciIG9yICJhcHByb3ZlZCBmb3IgZGlzdHJpYnV0aW9uIgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdGF0dXMuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RhdHVzIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBXaWR0aDogd2lkdGggb2YgdGhlIGxvbmdlc3QgbGluZSBpbiB0aGUgZWxlbWVudCB0byB3aGljaCBpdAogICAgcGVydGFpbnMsIGluIG51bWJlciBvZiBjaGFyYWN0ZXJzCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9IndpZHRoLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBUaXRsZSBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0aXRsZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGl0bGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGl0bGUuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGl0bGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGl0bGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGl0bGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGl0bGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRpdGxlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdGl0bGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0aXRsZWFiYnJldi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGl0bGVhYmJyZXYiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGl0bGUuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGl0bGVhYmJyZXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGl0bGVhYmJyZXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGl0bGVhYmJyZXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0aXRsZWFiYnJldi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGl0bGVhYmJyZXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0aXRsZWFiYnJldi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YnRpdGxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdWJ0aXRsZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0aXRsZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJ0aXRsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdWJ0aXRsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJ0aXRsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YnRpdGxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdWJ0aXRsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN1YnRpdGxlLm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBCaWJsaW9ncmFwaGljIGVudGl0aWVzIGFuZCBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgIFRoZSBiaWJsaW9ncmFwaGljIGVsZW1lbnRzIGFyZSB0eXBpY2FsbHkgdXNlZCBpbiB0aGUgZG9jdW1lbnQKICAgIGhpZXJhcmNoeS4gVGhleSBkbyBub3QgYXBwZWFyIGluIGNvbnRlbnQgbW9kZWxzIG9mIGluZm9ybWF0aW9uCiAgICBwb29sIGVsZW1lbnRzLiAgU2VlIGFsc28gdGhlIGRvY3VtZW50IGluZm9ybWF0aW9uIGVsZW1lbnRzLAogICAgYmVsb3cuCiAgLS0+CiAgPHhzOmdyb3VwIG5hbWU9InBlcnNvbi5pZGVudC5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJob25vcmlmaWMiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmaXJzdG5hbWUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdXJuYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZWFnZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im90aGVybmFtZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFmZmlsaWF0aW9uIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yYmx1cmIiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb250cmliIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJiaWJsaW9jb21wb25lbnQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWJicmV2Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWJzdHJhY3QiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZGRyZXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYXJ0cGFnZW51bXMiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhdXRob3IiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhdXRob3Jncm91cCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImF1dGhvcmluaXRpYWxzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvbWlzYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb3NldCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbGxhYiIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbmZncm91cCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbnRyYWN0bnVtIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29udHJhY3RzcG9uc29yIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29weXJpZ2h0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29ycGF1dGhvciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvcnBuYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29ycGNyZWRpdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImRhdGUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlZGl0aW9uIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZWRpdG9yIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW52cGFydG51bWJlciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImlzYm4iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpc3NuIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaXNzdWVudW0iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvcmduYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvaWQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjaXRlYmlibGlvaWQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9zb3VyY2UiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9yZWxhdGlvbiIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb2NvdmVyYWdlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ib3RoZXJjcmVkaXQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYWdlbnVtcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InByaW50aGlzdG9yeSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InByb2R1Y3RuYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJvZHVjdG51bWJlciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InB1YmRhdGUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwdWJsaXNoZXIiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwdWJsaXNoZXJuYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHVic251bWJlciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlbGVhc2VpbmZvIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icmV2aGlzdG9yeSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InNlcmllc3ZvbG51bXMiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGVhYmJyZXYiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2b2x1bWVudW0iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjaXRldGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwZXJzb25uYW1lIi8+CiAgICAgIDx4czpncm91cCByZWY9InBlcnNvbi5pZGVudC5taXgiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDwhLS0gSSBkb24ndCB0aGluayB0aGlzIGlzIHdlbGwgcGxhY2VkLCBidXQgaXQgbmVlZHMgdG8gYmUgaGVyZSBiZWNhdXNlIG9mIC0tPgogIDwhLS0gdGhlIHJlZmVyZW5jZSB0byBiaWJsaW9jb21wb25lbnQubWl4IC0tPgogIDx4czpncm91cCBuYW1lPSJpbmZvLmNsYXNzIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im1lZGlhb2JqZWN0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGVnYWxub3RpY2UiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtb2Rlc3BlYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN1YmplY3RzZXQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJrZXl3b3Jkc2V0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaXRlcm1zZXQiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iYmlibGlvY29tcG9uZW50Lm1peCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb2VudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcnRpY2xlaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJpYmxpb2NvbXBvbmVudC5taXgiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2VudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2VudHJ5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb2VudHJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYmlibGlvZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9taXhlZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvbWl4ZWQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiaWJsaW9jb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9tc2V0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9taXhlZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9taXhlZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9taXhlZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb21peGVkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9taXhlZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb21peGVkLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJ0aWNsZWluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFydGljbGVpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJ0aWNsZWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXJ0aWNsZWluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJ0aWNsZWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcnRpY2xlaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXJ0aWNsZWluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhcnRpY2xlaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb3NldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvc2V0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImJpYmxpb2NvbXBvbmVudC5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb3NldC5lbGVtZW50IC0tPgogIDwhLS0gUmVsYXRpb246IFJlbGF0aW9uc2hpcCBvZiBlbGVtZW50cyBjb250YWluZWQgd2l0aGluIEJpYmxpb1NldCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvc2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWxhdGlvbiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvc2V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9zZXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9zZXQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9tc2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9tc2V0Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYmlibGlvY29tcG9uZW50Lm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvbXNldCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvbXNldC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9tc2V0LmVsZW1lbnQgLS0+CiAgPCEtLSBSZWxhdGlvbjogUmVsYXRpb25zaGlwIG9mIGVsZW1lbnRzIGNvbnRhaW5lZCB3aXRoaW4gQmlibGlvTVNldCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvbXNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVsYXRpb24iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb21zZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb21zZXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9tc2V0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvbWlzYy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvbWlzYyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb21pc2MuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmlibGlvbWlzYy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9taXNjLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvbWlzYy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmlibGlvbWlzYy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb21pc2MubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFN1YmplY3QsIEtleXdvcmQsIGFuZCBJVGVybVNldCBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YmplY3RzZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN1YmplY3RzZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic3ViamVjdCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJqZWN0c2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN1YmplY3RzZXQuZWxlbWVudCAtLT4KICA8IS0tIFNjaGVtZTogQ29udHJvbGxlZCB2b2NhYnVsYXJ5IGVtcGxveWVkIGluIFN1YmplY3RUZXJtcyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3ViamVjdHNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NoZW1lIiB0eXBlPSJ4czpOTVRPS0VOIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJqZWN0c2V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdWJqZWN0c2V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3ViamVjdHNldC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YmplY3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN1YmplY3QiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic3ViamVjdHRlcm0iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3ViamVjdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdWJqZWN0LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgV2VpZ2h0OiBSYW5raW5nIG9mIHRoaXMgZ3JvdXAgb2YgU3ViamVjdFRlcm1zIHJlbGF0aXZlCiAgICB0byBvdGhlcnMsIDAgaXMgbG93LCBubyBoaWdoZXN0IHZhbHVlIHNwZWNpZmllZAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3ZWlnaHQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN1YmplY3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdWJqZWN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3ViamVjdHRlcm0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN1YmplY3R0ZXJtIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YmplY3R0ZXJtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN1YmplY3R0ZXJtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YmplY3R0ZXJtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3ViamVjdHRlcm0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN1YmplY3R0ZXJtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3ViamVjdHRlcm0ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHN1YmplY3RzZXQuY29udGVudC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImtleXdvcmRzZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImtleXdvcmRzZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ia2V5d29yZCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXl3b3Jkc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGtleXdvcmRzZXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5d29yZHNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleXdvcmRzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGtleXdvcmRzZXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBrZXl3b3Jkc2V0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5d29yZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ia2V5d29yZCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXl3b3JkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGtleXdvcmQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5d29yZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleXdvcmQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGtleXdvcmQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBrZXl3b3JkLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBrZXl3b3Jkc2V0LmNvbnRlbnQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpdGVybXNldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaXRlcm1zZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5kZXh0ZXJtIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Iml0ZXJtc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGl0ZXJtc2V0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Iml0ZXJtc2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXRlcm1zZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGl0ZXJtc2V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaXRlcm1zZXQubW9kdWxlIC0tPgogIDwhLS0gQmlibGlvZ3JhcGhpYyBpbmZvIGZvciAiYmxvY2tzIiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmxvY2tpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJibG9ja2luZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJibG9ja2luZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmxvY2tpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJsb2NraW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJsb2NraW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmxvY2tpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYmxvY2tpbmZvLm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBDb21wb3VuZCAoc2VjdGlvbi1pc2gpIGVsZW1lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gTWVzc2FnZSBzZXQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnc2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dzZXQiIHN1YnN0aXR1dGlvbkdyb3VwPSJjb21wb3VuZC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtc2dlbnRyeSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlbXNnZW50cnkiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1zZ3NldC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dzZXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1zZ3NldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1zZ3NldC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2VudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dlbnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtc2ciLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ibXNnaW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibXNnZXhwbGFuIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2VudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1zZ2VudHJ5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1zZ2VudHJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaW1wbGVtc2dlbnRyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2ltcGxlbXNnZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2d0ZXh0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibXNnZXhwbGFuIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBsZW1zZ2VudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNpbXBsZW1zZ2VudHJ5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpbXBsZW1zZ2VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhdWRpZW5jZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsZXZlbCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcmlnaW4iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBsZW1zZ2VudHJ5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzaW1wbGVtc2dlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNpbXBsZW1zZ2VudHJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2ciPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2dtYWluIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNnc3ViIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ3JlbCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2cuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnbWFpbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibXNnbWFpbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ3RleHQiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnbWFpbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dtYWluLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ21haW4uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dtYWluLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dtYWluLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnbWFpbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ3N1Yi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibXNnc3ViIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNndGV4dCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dzdWIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnc3ViLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ3N1Yi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ3N1Yi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnc3ViLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnc3ViLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNncmVsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dyZWwiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2d0ZXh0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ3JlbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dyZWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNncmVsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNncmVsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dyZWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dyZWwubW9kdWxlIC0tPgogIDwhLS0gTXNnVGV4dCAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2luZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ2luZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNnbGV2ZWwiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ29yaWciLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ2F1ZCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2xldmVsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dsZXZlbCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnbGV2ZWwuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnbGV2ZWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnbGV2ZWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dsZXZlbC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnbGV2ZWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dsZXZlbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ29yaWcucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ29yaWciPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ29yaWcuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnb3JpZy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dvcmlnLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnb3JpZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnb3JpZy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1zZ29yaWcubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dhdWQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ2F1ZCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2F1ZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dhdWQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnYXVkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnYXVkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dhdWQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dhdWQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dleHBsYW4ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ2V4cGxhbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dleHBsYW4uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnZXhwbGFuLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2V4cGxhbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2V4cGxhbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnZXhwbGFuLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnZXhwbGFuLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBtc2dzZXQuY29udGVudC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRhc2sucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRhc2siIHN1YnN0aXR1dGlvbkdyb3VwPSJjb21wb3VuZC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGFza3N1bW1hcnkiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGFza3ByZXJlcXVpc2l0ZXMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InByb2NlZHVyZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZXhhbXBsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0YXNrcmVsYXRlZCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YXNrLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRhc2suZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFzay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRhc2sucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRhc2suYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0YXNrLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFza3N1bW1hcnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRhc2tzdW1tYXJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGFza3N1bW1hcnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGFza3N1bW1hcnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFza3N1bW1hcnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YXNrc3VtbWFyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGFza3N1bW1hcnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0YXNrc3VtbWFyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRhc2twcmVyZXF1aXNpdGVzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0YXNrcHJlcmVxdWlzaXRlcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRhc2twcmVyZXF1aXNpdGVzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRhc2twcmVyZXF1aXNpdGVzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRhc2twcmVyZXF1aXNpdGVzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGFza3ByZXJlcXVpc2l0ZXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRhc2twcmVyZXF1aXNpdGVzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdGFza3ByZXJlcXVpc2l0ZXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YXNrcmVsYXRlZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGFza3JlbGF0ZWQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YXNrcmVsYXRlZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0YXNrcmVsYXRlZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YXNrcmVsYXRlZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRhc2tyZWxhdGVkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0YXNrcmVsYXRlZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRhc2tyZWxhdGVkLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiB0YXNrLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gUWFuZEFTZXQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxYW5kYXNldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icWFuZGFzZXQiIHN1YnN0aXR1dGlvbkdyb3VwPSJjb21wb3VuZC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InFhbmRhc2V0Lm1peCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJxYW5kYWRpdiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icWFuZGFlbnRyeSIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJxYW5kYXNldC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBxYW5kYXNldC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxYW5kYXNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVmYXVsdGxhYmVsIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icWFuZGEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibnVtYmVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vbmUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InFhbmRhc2V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBxYW5kYXNldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHFhbmRhc2V0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icWFuZGFkaXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InFhbmRhZGl2Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icWFuZGFzZXQubWl4Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InFhbmRhZGl2Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJxYW5kYWVudHJ5Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InFhbmRhZGl2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHFhbmRhZGl2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InFhbmRhZGl2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icWFuZGFkaXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHFhbmRhZGl2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcWFuZGFkaXYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxYW5kYWVudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJxYW5kYWVudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmV2aGlzdG9yeSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icXVlc3Rpb24iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFuc3dlciIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJxYW5kYWVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHFhbmRhZW50cnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icWFuZGFlbnRyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InFhbmRhZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHFhbmRhZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBxYW5kYWVudHJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icXVlc3Rpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InF1ZXN0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJsYWJlbCIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJxYW5kYXNldC5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icXVlc3Rpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcXVlc3Rpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icXVlc3Rpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJxdWVzdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcXVlc3Rpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBxdWVzdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFuc3dlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYW5zd2VyIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJsYWJlbCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InFhbmRhc2V0Lm1peCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icWFuZGFlbnRyeSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhbnN3ZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYW5zd2VyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFuc3dlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFuc3dlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYW5zd2VyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYW5zd2VyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGFiZWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxhYmVsIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9IndvcmQuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbGFiZWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGFiZWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbGFiZWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBsYWJlbC5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgcWFuZGFzZXQuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBQcm9jZWR1cmUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9jZWR1cmUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByb2NlZHVyZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImNvbXBvdW5kLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InN0ZXAiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvY2VkdXJlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb2NlZHVyZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9jZWR1cmUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9jZWR1cmUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByb2NlZHVyZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByb2NlZHVyZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0ZXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN0ZXAiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOnNlcXVlbmNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic3Vic3RlcHMiLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic3RlcGFsdGVybmF0aXZlcyIvPgogICAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzdGVwcyIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic3RlcGFsdGVybmF0aXZlcyIvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RlcC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdGVwLmVsZW1lbnQgLS0+CiAgPCEtLSBQZXJmb3JtYW5jZTogV2hldGhlciB0aGUgU3RlcCBtdXN0IGJlIHBlcmZvcm1lZCAtLT4KICA8IS0tIG5vdCAjUkVRVUlSRUQhIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdGVwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZXJmb3JtYW5jZSIgZGVmYXVsdD0icmVxdWlyZWQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHRpb25hbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXF1aXJlZCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RlcC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3RlcC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN0ZXAubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJzdGVwcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3Vic3RlcHMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic3RlcCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJzdGVwcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdWJzdGVwcy5lbGVtZW50IC0tPgogIDwhLS0gUGVyZm9ybWFuY2U6IHdoZXRoZXIgZW50aXJlIHNldCBvZiBzdWJzdGVwcyBtdXN0IGJlIHBlcmZvcm1lZCAtLT4KICA8IS0tIG5vdCAjUkVRVUlSRUQhIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJzdGVwcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGVyZm9ybWFuY2UiIGRlZmF1bHQ9InJlcXVpcmVkIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3B0aW9uYWwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVxdWlyZWQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YnN0ZXBzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdWJzdGVwcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN1YnN0ZXBzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RlcGFsdGVybmF0aXZlcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3RlcGFsdGVybmF0aXZlcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzdGVwIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0ZXBhbHRlcm5hdGl2ZXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3RlcGFsdGVybmF0aXZlcy5lbGVtZW50IC0tPgogIDwhLS0gUGVyZm9ybWFuY2U6IFdoZXRoZXIgKG9uZSBvZikgdGhlIGFsdGVybmF0aXZlcyBtdXN0IGJlIHBlcmZvcm1lZCAtLT4KICA8IS0tIG5vdCAjUkVRVUlSRUQhIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdGVwYWx0ZXJuYXRpdmVzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZXJmb3JtYW5jZSIgZGVmYXVsdD0icmVxdWlyZWQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHRpb25hbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXF1aXJlZCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RlcGFsdGVybmF0aXZlcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3RlcGFsdGVybmF0aXZlcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN0ZXBhbHRlcm5hdGl2ZXMubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHByb2NlZHVyZS5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIFNpZGViYXIgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpZGViYXJpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaWRlYmFyaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpZGViYXJpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNpZGViYXJpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpZGViYXJpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2lkZWJhcmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNpZGViYXJpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2lkZWJhcmluZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaWRlYmFyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaWRlYmFyIiBzdWJzdGl0dXRpb25Hcm91cD0iY29tcG91bmQuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNpZGViYXJpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaWRlYmFyLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaWRlYmFyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNpZGViYXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2lkZWJhci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpZGViYXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNpZGViYXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzaWRlYmFyLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzaWRlYmFyLmNvbnRlbnQubW9kZWwgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gUGFyYWdyYXBoLXJlbGF0ZWQgZWxlbWVudHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWJzdHJhY3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFic3RyYWN0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWJzdHJhY3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWJzdHJhY3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWJzdHJhY3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhYnN0cmFjdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWJzdHJhY3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhYnN0cmFjdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvcmJsdXJiLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhdXRob3JibHVyYiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1dGhvcmJsdXJiLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGF1dGhvcmJsdXJiLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvcmJsdXJiLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXV0aG9yYmx1cmIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGF1dGhvcmJsdXJiLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXV0aG9yYmx1cmIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwZXJzb25ibHVyYi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGVyc29uYmx1cmIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwZXJzb25ibHVyYi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwZXJzb25ibHVyYi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwZXJzb25ibHVyYi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBlcnNvbmJsdXJiLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwZXJzb25ibHVyYi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBlcnNvbmJsdXJiLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmxvY2txdW90ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmxvY2txdW90ZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYXR0cmlidXRpb24iLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJibG9ja3F1b3RlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJsb2NrcXVvdGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmxvY2txdW90ZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJsb2NrcXVvdGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJsb2NrcXVvdGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBibG9ja3F1b3RlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXR0cmlidXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImF0dHJpYnV0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXR0cmlidXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXR0cmlidXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXR0cmlidXRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdHRyaWJ1dGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXR0cmlidXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhdHRyaWJ1dGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJyaWRnZWhlYWQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJyaWRnZWhlYWQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGl0bGUuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYnJpZGdlaGVhZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBicmlkZ2VoZWFkLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgUmVuZGVyYXM6IEluZGljYXRlcyB0aGUgZm9ybWF0IGluIHdoaWNoIHRoZSBCcmlkZ2VIZWFkCiAgICBzaG91bGQgYXBwZWFyCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJyaWRnZWhlYWQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbmRlcmFzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJyaWRnZWhlYWQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJyaWRnZWhlYWQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBicmlkZ2VoZWFkLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVtYXJrLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZW1hcmsiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZW1hcmsuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVtYXJrLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlbWFyay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlbWFyay5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVtYXJrLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVtYXJrLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXBpZ3JhcGgucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImVwaWdyYXBoIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhdHRyaWJ1dGlvbiIvPgogICAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpdGVyYWxsYXlvdXQiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXBpZ3JhcGguYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZXBpZ3JhcGguZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXBpZ3JhcGguYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcGlncmFwaC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZXBpZ3JhcGguYXR0bGlzdCAtLT4KICA8IS0tIEF0dHJpYnV0aW9uIChkZWZpbmVkIGFib3ZlKSAtLT4KICA8IS0tIGVuZCBvZiBlcGlncmFwaC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvb3Rub3RlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmb290bm90ZSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImZvb3Rub3RlLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmb290bm90ZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmb290bm90ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmb290bm90ZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZm9vdG5vdGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZvb3Rub3RlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZm9vdG5vdGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJoaWdobGlnaHRzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJoaWdobGlnaHRzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImhpZ2hsaWdodHMubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImhpZ2hsaWdodHMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaGlnaGxpZ2h0cy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJoaWdobGlnaHRzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaGlnaGxpZ2h0cy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaGlnaGxpZ2h0cy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGhpZ2hsaWdodHMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmb3JtYWxwYXJhLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmb3JtYWxwYXJhIiBzdWJzdGl0dXRpb25Hcm91cD0icGFyYS5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZvcm1hbHBhcmEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZm9ybWFscGFyYS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmb3JtYWxwYXJhLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZm9ybWFscGFyYS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZm9ybWFscGFyYS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZvcm1hbHBhcmEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJhLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwYXJhIiBzdWJzdGl0dXRpb25Hcm91cD0icGFyYS5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJwYXJhLm1peCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFyYS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwYXJhLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcmEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJhLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwYXJhLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcGFyYS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpbXBhcmEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNpbXBhcmEiIHN1YnN0aXR1dGlvbkdyb3VwPSJwYXJhLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2ltcGFyYS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzaW1wYXJhLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpbXBhcmEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaW1wYXJhLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzaW1wYXJhLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2ltcGFyYS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFkbW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjYXV0aW9uIiBzdWJzdGl0dXRpb25Hcm91cD0iYWRtb24uY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFkbW9uLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjYXV0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNhdXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2F1dGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFkbW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjYXV0aW9uLmF0dGxpc3QgLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW1wb3J0YW50IiBzdWJzdGl0dXRpb25Hcm91cD0iYWRtb24uY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFkbW9uLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbXBvcnRhbnQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW1wb3J0YW50LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltcG9ydGFudC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFkbW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbXBvcnRhbnQuYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJub3RlIiBzdWJzdGl0dXRpb25Hcm91cD0iYWRtb24uY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFkbW9uLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJub3RlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG5vdGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibm90ZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFkbW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBub3RlLmF0dGxpc3QgLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGlwIiBzdWJzdGl0dXRpb25Hcm91cD0iYWRtb24uY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFkbW9uLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0aXAuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGlwLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRpcC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFkbW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0aXAuYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ3YXJuaW5nIiBzdWJzdGl0dXRpb25Hcm91cD0iYWRtb24uY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFkbW9uLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ3YXJuaW5nLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHdhcm5pbmcuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0id2FybmluZy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFkbW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB3YXJuaW5nLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYWRtb24ubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIExpc3RzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBHbG9zc0xpc3QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2xpc3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3NzbGlzdCIgc3Vic3RpdHV0aW9uR3JvdXA9Imxpc3QuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc2VudHJ5Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzbGlzdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc2xpc3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NsaXN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NsaXN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBnbG9zc2xpc3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc2xpc3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2VudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc2VudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ2xvc3N0ZXJtIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImFjcm9ueW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYWJicmV2Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJldmhpc3RvcnkiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnbG9zc3NlZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ2xvc3NkZWYiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NlbnRyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc2VudHJ5LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU29ydEFzOiBTdHJpbmcgYnkgd2hpY2ggdGhlIEdsb3NzRW50cnkgaXMgdG8gYmUgc29ydGVkCiAgICAoYWxwaGFiZXRpemVkKSBpbiBsaWV1IG9mIGl0cyBwcm9wZXIgY29udGVudAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzb3J0YXMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc2VudHJ5Lm1vZHVsZSAtLT4KICA8IS0tIEdsb3NzVGVybSAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzZGVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc2RlZiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ2xvc3NkZWYubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc3NlZWFsc28iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NkZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ2xvc3NkZWYuZWxlbWVudCAtLT4KICA8IS0tIFN1YmplY3Q6IExpc3Qgb2Ygc3ViamVjdHM7IGtleXdvcmRzIGZvciB0aGUgZGVmaW5pdGlvbiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NkZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN1YmplY3QiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzZGVmLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBnbG9zc2RlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzZGVmLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NzZWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3Nzc2VlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NzZWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ2xvc3NzZWUuZWxlbWVudCAtLT4KICA8IS0tCiAgICBPdGhlclRlcm06IFJlZmVyZW5jZSB0byB0aGUgR2xvc3NFbnRyeSB3aG9zZSBHbG9zc1Rlcm0KICAgIHNob3VsZCBiZSBkaXNwbGF5ZWQgYXQgdGhlIHBvaW50IG9mIHRoZSBHbG9zc1NlZQogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc3NlZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJ0ZXJtIiB0eXBlPSJ4czpJRFJFRiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NzZWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3Nzc2VlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NzZWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc3NlZWFsc28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3Nzc2VlYWxzbyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3Nzc2VlYWxzby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc3NlZWFsc28uZWxlbWVudCAtLT4KICA8IS0tCiAgICBPdGhlclRlcm06IFJlZmVyZW5jZSB0byB0aGUgR2xvc3NFbnRyeSB3aG9zZSBHbG9zc1Rlcm0KICAgIHNob3VsZCBiZSBkaXNwbGF5ZWQgYXQgdGhlIHBvaW50IG9mIHRoZSBHbG9zc1NlZUFsc28KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NzZWVhbHNvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcnRlcm0iIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc3NlZWFsc28ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3Nzc2VlYWxzby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3Nzc2VlYWxzby5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NlbnRyeS5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIEl0ZW1pemVkTGlzdCBhbmQgT3JkZXJlZExpc3QgLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Iml0ZW1pemVkbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaXRlbWl6ZWRsaXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imxpc3RwcmVhbWJsZS5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJsaXN0aXRlbSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpdGVtaXplZGxpc3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaXRlbWl6ZWRsaXN0LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU3BhY2luZzogV2hldGhlciB0aGUgdmVydGljYWwgc3BhY2UgaW4gdGhlIGxpc3Qgc2hvdWxkIGJlCiAgICBjb21wcmVzc2VkCiAgLS0+CiAgPCEtLQogICAgTWFyazogS2V5d29yZCwgZS5nLiwgYnVsbGV0LCBkYXNoLCBjaGVja2JveCwgbm9uZTsKICAgIGxpc3Qgb2Yga2V5d29yZHMgYW5kIGRlZmF1bHRzIGFyZSBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYwogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpdGVtaXplZGxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYWNpbmciPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JtYWwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29tcGFjdCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWFyay5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Iml0ZW1pemVkbGlzdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaXRlbWl6ZWRsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaXRlbWl6ZWRsaXN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3JkZXJlZGxpc3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9yZGVyZWRsaXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imxpc3RwcmVhbWJsZS5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJsaXN0aXRlbSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcmRlcmVkbGlzdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvcmRlcmVkbGlzdC5lbGVtZW50IC0tPgogIDwhLS0KICAgIE51bWVyYXRpb246IFN0eWxlIG9mIExpc3RJdGVtIG51bWJlcmVkOyBkZWZhdWx0IGlzIGV4cGVjdGVkCiAgICB0byBiZSBBcmFiaWMKICAtLT4KICA8IS0tCiAgICBJbmhlcml0TnVtOiBTcGVjaWZpZXMgZm9yIGEgbmVzdGVkIGxpc3QgdGhhdCB0aGUgbnVtYmVyaW5nCiAgICBvZiBMaXN0SXRlbXMgc2hvdWxkIGluY2x1ZGUgdGhlIG51bWJlciBvZiB0aGUgaXRlbQogICAgd2l0aGluIHdoaWNoIHRoZXkgYXJlIG5lc3RlZCAoZS5nLiwgMWEgYW5kIDFiIHdpdGhpbiAxLAogICAgcmF0aGVyIHRoYW4gYSBhbmQgYikKICAtLT4KICA8IS0tCiAgICBDb250aW51YXRpb246IFdoZXJlIGxpc3QgbnVtYmVyaW5nIGJlZ2lucyBhZnJlc2ggKFJlc3RhcnRzLAogICAgdGhlIGRlZmF1bHQpIG9yIGNvbnRpbnVlcyB0aGF0IG9mIHRoZSBpbW1lZGlhdGVseSBwcmVjZWRpbmcKICAgIGxpc3QgKENvbnRpbnVlcykKICAtLT4KICA8IS0tCiAgICBTcGFjaW5nOiBXaGV0aGVyIHRoZSB2ZXJ0aWNhbCBzcGFjZSBpbiB0aGUgbGlzdCBzaG91bGQgYmUKICAgIGNvbXByZXNzZWQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3JkZXJlZGxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im51bWVyYXRpb24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhcmFiaWMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idXBwZXJhbHBoYSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsb3dlcmFscGhhIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InVwcGVycm9tYW4iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibG93ZXJyb21hbiIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbmhlcml0bnVtIiBkZWZhdWx0PSJpZ25vcmUiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpbmhlcml0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imlnbm9yZSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250aW51YXRpb24iIGRlZmF1bHQ9InJlc3RhcnRzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29udGludWVzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlc3RhcnRzIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYWNpbmciPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JtYWwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29tcGFjdCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3JkZXJlZGxpc3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9yZGVyZWRsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb3JkZXJlZGxpc3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaXN0aXRlbS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGlzdGl0ZW0iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaXN0aXRlbS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsaXN0aXRlbS5lbGVtZW50IC0tPgogIDwhLS0KICAgIE92ZXJyaWRlOiBJbmRpY2F0ZXMgdGhlIG1hcmsgdG8gYmUgdXNlZCBmb3IgdGhpcyBMaXN0SXRlbQogICAgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBtYXJrIG9yIHRoZSBtYXJrIHNwZWNpZmllZCBieQogICAgdGhlIE1hcmsgYXR0cmlidXRlIG9uIHRoZSBlbmNsb3NpbmcgSXRlbWl6ZWRMaXN0CiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imxpc3RpdGVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdmVycmlkZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlzdGl0ZW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpc3RpdGVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGlzdGl0ZW0ubW9kdWxlIC0tPgogIDwhLS0gU2VnbWVudGVkTGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VnbWVudGVkbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VnbWVudGVkbGlzdCIgc3Vic3RpdHV0aW9uR3JvdXA9Imxpc3QuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlZ3RpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VnbGlzdGl0ZW0iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VnbWVudGVkbGlzdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWdtZW50ZWRsaXN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZ21lbnRlZGxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWdtZW50ZWRsaXN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWdtZW50ZWRsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VnbWVudGVkbGlzdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZ3RpdGxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWd0aXRsZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0aXRsZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWd0aXRsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWd0aXRsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWd0aXRsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZ3RpdGxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWd0aXRsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlZ3RpdGxlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VnbGlzdGl0ZW0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlZ2xpc3RpdGVtIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlZyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWdsaXN0aXRlbS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWdsaXN0aXRlbS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWdsaXN0aXRlbS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZ2xpc3RpdGVtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWdsaXN0aXRlbS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlZ2xpc3RpdGVtLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VnLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWciPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWcuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VnLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VnLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzZWdtZW50ZWRsaXN0LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gU2ltcGxlTGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2ltcGxlbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2ltcGxlbGlzdCIgc3Vic3RpdHV0aW9uR3JvdXA9Imxpc3QuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVtYmVyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBsZWxpc3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlbGlzdC5lbGVtZW50IC0tPgogIDwhLS0gQ29sdW1uczogVGhlIG51bWJlciBvZiBjb2x1bW5zIHRoZSBhcnJheSBzaG91bGQgY29udGFpbiAtLT4KICA8IS0tCiAgICBUeXBlOiBIb3cgdGhlIE1lbWJlcnMgb2YgdGhlIFNpbXBsZUxpc3Qgc2hvdWxkIGJlCiAgICBmb3JtYXR0ZWQ6IElubGluZSAobWVtYmVycyBzZXBhcmF0ZWQgd2l0aCBjb21tYXMgZXRjLgogICAgaW5saW5lKSwgVmVydCAodG9wIHRvIGJvdHRvbSBpbiBuIENvbHVtbnMpLCBvciBIb3JpeiAoaW4KICAgIHRoZSBkaXJlY3Rpb24gb2YgdGV4dCBmbG93KSBpbiBuIENvbHVtbnMuICBJZiBDb2x1bW4KICAgIGlzIDEgb3IgaW1wbGllZCwgVHlwZT1WZXJ0IGFuZCBUeXBlPUhvcml6IGdpdmUgdGhlIHNhbWUKICAgIHJlc3VsdHMuCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpbXBsZWxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHVtbnMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIgZGVmYXVsdD0idmVydCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlubGluZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ2ZXJ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imhvcml6Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaW1wbGVsaXN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzaW1wbGVsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlbGlzdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lbWJlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWVtYmVyIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVtYmVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1lbWJlci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZW1iZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZW1iZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1lbWJlci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1lbWJlci5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlbGlzdC5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIFZhcmlhYmxlTGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZhcmlhYmxlbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idmFyaWFibGVsaXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imxpc3RwcmVhbWJsZS5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ2YXJsaXN0ZW50cnkiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmFyaWFibGVsaXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZhcmlhYmxlbGlzdC5lbGVtZW50IC0tPgogIDwhLS0KICAgIFRlcm1MZW5ndGg6IExlbmd0aCBiZXlvbmQgd2hpY2ggdGhlIHByZXNlbnRhdGlvbiBlbmdpbmUKICAgIG1heSBjb25zaWRlciB0aGUgVGVybSB0b28gbG9uZyBhbmQgc2VsZWN0IGFuIGFsdGVybmF0ZQogICAgcHJlc2VudGF0aW9uIG9mIHRoZSBUZXJtIGFuZCwgb3IsIGl0cyBhc3NvY2lhdGVkIExpc3RJdGVtLgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2YXJpYWJsZWxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRlcm1sZW5ndGgiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZhcmlhYmxlbGlzdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdmFyaWFibGVsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdmFyaWFibGVsaXN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmFybGlzdGVudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2YXJsaXN0ZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGVybSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdGl0ZW0iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmFybGlzdGVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZhcmxpc3RlbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2YXJsaXN0ZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2YXJsaXN0ZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZhcmxpc3RlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZhcmxpc3RlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRlcm0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRlcm0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXJtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRlcm0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGVybS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRlcm0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRlcm0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0ZXJtLm1vZHVsZSAtLT4KICA8IS0tIExpc3RJdGVtIChkZWZpbmVkIGFib3ZlKSAtLT4KICA8IS0tIGVuZCBvZiB2YXJpYWJsZWxpc3QuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBDYWxsb3V0TGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYWxsb3V0bGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2FsbG91dGxpc3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaXN0LmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjYWxsb3V0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNhbGxvdXRsaXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNhbGxvdXRsaXN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNhbGxvdXRsaXN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2FsbG91dGxpc3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNhbGxvdXRsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2FsbG91dGxpc3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYWxsb3V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjYWxsb3V0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2FsbG91dC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjYWxsb3V0LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQXJlYVJlZnM6IElEcyBvZiBvbmUgb3IgbW9yZSBBcmVhcyBvciBBcmVhU2V0cyBkZXNjcmliZWQKICAgIGJ5IHRoaXMgQ2FsbG91dAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYWxsb3V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcmVhcmVmcyIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6SURSRUZTIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjYWxsb3V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjYWxsb3V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2FsbG91dC5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgY2FsbG91dGxpc3QuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gT2JqZWN0cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEV4YW1wbGVzIGV0Yy4gLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImV4YW1wbGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImV4YW1wbGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJmb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImV4YW1wbGUubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImV4YW1wbGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZXhhbXBsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJleGFtcGxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdHN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndpZHRoLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXhhbXBsZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZXhhbXBsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGV4YW1wbGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmZvcm1hbGV4YW1wbGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImluZm9ybWFsZXhhbXBsZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZXhhbXBsZS5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5mb3JtYWxleGFtcGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGluZm9ybWFsZXhhbXBsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmZvcm1hbGV4YW1wbGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZsb2F0c3R5bGUiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndpZHRoLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5mb3JtYWxleGFtcGxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGV4YW1wbGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGV4YW1wbGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9ncmFtbGlzdGluZ2NvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcm9ncmFtbGlzdGluZ2NvIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluZXNwZWNpZmljLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXJlYXNwZWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InByb2dyYW1saXN0aW5nIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjYWxsb3V0bGlzdCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9ncmFtbGlzdGluZ2NvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb2dyYW1saXN0aW5nY28uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZ3JhbWxpc3Rpbmdjby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2dyYW1saXN0aW5nY28ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByb2dyYW1saXN0aW5nY28uYXR0bGlzdCAtLT4KICA8IS0tIENhbGxvdXRMaXN0IChkZWZpbmVkIGFib3ZlIGluIExpc3RzKSAtLT4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGV4YW1wbGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmVhc3BlYy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJlYXNwZWMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZWEiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZWFzZXQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZWFzcGVjLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFyZWFzcGVjLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgVW5pdHM6IGdsb2JhbCB1bml0IG9mIG1lYXN1cmUgaW4gd2hpY2ggY29vcmRpbmF0ZXMgaW4KICAgIHRoaXMgc3BlYyBhcmUgZXhwcmVzc2VkOgogICAgCiAgICAtIENBTFNQYWlyICJ4MSx5MSB4Mix5MiI6IGxvd2VyLWxlZnQgYW5kIHVwcGVyLXJpZ2h0CiAgICBjb29yZGluYXRlcyBpbiBhIHJlY3RhbmdsZSBkZXNjcmliaW5nIHJlcHJvIGFyZWEgaW4gd2hpY2gKICAgIGdyYXBoaWMgaXMgcGxhY2VkLCB3aGVyZSBYIGFuZCBZIGRpbWVuc2lvbnMgYXJlIGVhY2ggc29tZQogICAgbnVtYmVyIDAuLjEwMDAwICh0YWtlbiBmcm9tIENBTFMgZ3JhcGhpYyBhdHRyaWJ1dGVzKQogICAgCiAgICAtIExpbmVDb2x1bW4gImxpbmUgY29sdW1uIjogbGluZSBudW1iZXIgYW5kIGNvbHVtbiBudW1iZXIKICAgIGF0IHdoaWNoIHRvIHN0YXJ0IGNhbGxvdXQgdGV4dCBpbiAibGluZXNwZWNpZmljIiBjb250ZW50CiAgICAKICAgIC0gTGluZVJhbmdlICJzdGFydGxpbmUgZW5kbGluZSI6IHdob2xlIGxpbmVzIGZyb20gc3RhcnRsaW5lCiAgICB0byBlbmRsaW5lIGluICJsaW5lc3BlY2lmaWMiIGNvbnRlbnQKICAgIAogICAgLSBMaW5lQ29sdW1uUGFpciAibGluZTEgY29sMSBsaW5lMiBjb2wyIjogc3RhcnRpbmcgYW5kIGVuZGluZwogICAgcG9pbnRzIG9mIGFyZWEgaW4gImxpbmVzcGVjaWZpYyIgY29udGVudCB0aGF0IHN0YXJ0cyBhdAogICAgZmlyc3QgcG9zaXRpb24gYW5kIGVuZHMgYXQgc2Vjb25kIHBvc2l0aW9uIChpbmNsdWRpbmcgdGhlCiAgICBiZWdpbm5pbmdzIG9mIGFueSBpbnRlcnZlbmluZyBsaW5lcykKICAgIAogICAgLSBPdGhlcjogZGlyZWN0aXZlIHRvIGxvb2sgYXQgdmFsdWUgb2YgT3RoZXJVbml0cyBhdHRyaWJ1dGUKICAgIHRvIGdldCBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBrZXl3b3JkCiAgICAKICAgIFRoZSBkZWZhdWx0IGlzIGltcGxlbWVudGF0aW9uLXNwZWNpZmljOyB1c3VhbGx5IGRlcGVuZGVudCBvbgogICAgdGhlIHBhcmVudCBlbGVtZW50IChHcmFwaGljQ08gZ2V0cyBDQUxTUGFpciwgUHJvZ3JhbUxpc3RpbmdDTwogICAgYW5kIFNjcmVlbkNPIGdldCBMaW5lQ29sdW1uKQogIC0tPgogIDwhLS0gT3RoZXJVbml0czogVXNlci1kZWZpbmVkIHVuaXRzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmVhc3BlYy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idW5pdHMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjYWxzcGFpciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lY29sdW1uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVyYW5nZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lY29sdW1ucGFpciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcnVuaXRzIiB0eXBlPSJ4czpOTVRPS0VOIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcmVhc3BlYy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXJlYXNwZWMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhcmVhc3BlYy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFyZWEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFyZWEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcmVhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFyZWEuZWxlbWVudCAtLT4KICA8IS0tIGJ1ZyBudW1iZXIvc3ltYm9sIG92ZXJyaWRlIG9yIGluaXRpYWxpemF0aW9uIC0tPgogIDwhLS0gdG8gYW55IHJlbGF0ZWQgaW5mb3JtYXRpb24gLS0+CiAgPCEtLQogICAgVW5pdHM6IHVuaXQgb2YgbWVhc3VyZSBpbiB3aGljaCBjb29yZGluYXRlcyBpbiB0aGlzCiAgICBhcmVhIGFyZSBleHByZXNzZWQ7IGluaGVyaXRzIGZyb20gQXJlYVNldCBhbmQgQXJlYVNwZWMKICAtLT4KICA8IS0tIE90aGVyVW5pdHM6IFVzZXItZGVmaW5lZCB1bml0cyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJlYS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVuaXRzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2Fsc3BhaXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGluZWNvbHVtbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lcmFuZ2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGluZWNvbHVtbnBhaXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJ1bml0cyIgdHlwZT0ieHM6Tk1UT0tFTiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb29yZHMiIHVzZT0icmVxdWlyZWQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlkcmVxLmNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZWEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFyZWEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhcmVhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJlYXNldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJlYXNldCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJhcmVhIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZWFzZXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXJlYXNldC5lbGVtZW50IC0tPgogIDwhLS0gYnVnIG51bWJlci9zeW1ib2wgb3ZlcnJpZGUgb3IgaW5pdGlhbGl6YXRpb24gLS0+CiAgPCEtLQogICAgVW5pdHM6IHVuaXQgb2YgbWVhc3VyZSBpbiB3aGljaCBjb29yZGluYXRlcyBpbiB0aGlzCiAgICBhcmVhIGFyZSBleHByZXNzZWQ7IGluaGVyaXRzIGZyb20gQXJlYVNwZWMKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJlYXNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1bml0cyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNhbHNwYWlyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVjb2x1bW4iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGluZXJhbmdlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVjb2x1bW5wYWlyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVydW5pdHMiIHR5cGU9InhzOk5NVE9LRU4iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29vcmRzIiB1c2U9InJlcXVpcmVkIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpZHJlcS5jb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcmVhc2V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhcmVhc2V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXJlYXNldC5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgYXJlYXNwZWMuY29udGVudC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2dyYW1saXN0aW5nLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcm9ncmFtbGlzdGluZyIgc3Vic3RpdHV0aW9uR3JvdXA9ImxpbmVzcGVjaWZpYy5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb3JlZiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZWFubm90YXRpb24iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2dyYW1saXN0aW5nLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb2dyYW1saXN0aW5nLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2dyYW1saXN0aW5nLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0id2lkdGguYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lc3BlY2lmaWMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9ncmFtbGlzdGluZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJvZ3JhbWxpc3RpbmcuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcm9ncmFtbGlzdGluZy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpdGVyYWxsYXlvdXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxpdGVyYWxsYXlvdXQiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaW5lc3BlY2lmaWMuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29yZWYiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVhbm5vdGF0aW9uIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaXRlcmFsbGF5b3V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxpdGVyYWxsYXlvdXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGl0ZXJhbGxheW91dC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndpZHRoLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZXNwZWNpZmljLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgZGVmYXVsdD0ibm9ybWFsIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibW9ub3NwYWNlZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JtYWwiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpdGVyYWxsYXlvdXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpdGVyYWxsYXlvdXQuYXR0bGlzdCAtLT4KICA8IS0tIExpbmVBbm5vdGF0aW9uIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiBsaXRlcmFsbGF5b3V0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuY28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNjcmVlbmNvIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluZXNwZWNpZmljLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXJlYXNwZWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNjcmVlbiIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY2FsbG91dGxpc3QiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2NyZWVuY28uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuY28uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuY28uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzY3JlZW5jby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuY28uYXR0bGlzdCAtLT4KICA8IS0tIEFyZWFTcGVjIChkZWZpbmVkIGFib3ZlKSAtLT4KICA8IS0tIENhbGxvdXRMaXN0IChkZWZpbmVkIGFib3ZlIGluIExpc3RzKSAtLT4KICA8IS0tIGVuZCBvZiBzY3JlZW5jby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNjcmVlbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2NyZWVuIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluZXNwZWNpZmljLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY28iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvcmVmIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZXh0b2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lYW5ub3RhdGlvbiIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2NyZWVuLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNjcmVlbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzY3JlZW4uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ3aWR0aC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVzcGVjaWZpYy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNjcmVlbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuc2hvdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2NyZWVuc2hvdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImxpbmVzcGVjaWZpYy5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2NyZWVuaW5mbyIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImdyYXBoaWMiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpY2NvIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1lZGlhb2JqZWN0Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1lZGlhb2JqZWN0Y28iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2NyZWVuc2hvdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzY3JlZW5zaG90LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNjcmVlbnNob3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzY3JlZW5zaG90LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzY3JlZW5zaG90LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuc2hvdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNjcmVlbmluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNjcmVlbmluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzY3JlZW5pbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNjcmVlbmluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNjcmVlbmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNjcmVlbmluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzY3JlZW5pbmZvLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzY3JlZW5zaG90LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gRmlndXJlcyBldGMuIC4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmlndXJlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmaWd1cmUiIHN1YnN0aXR1dGlvbkdyb3VwPSJmb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6Z3JvdXAgcmVmPSJmaWd1cmUubWl4Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaWd1cmUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZmlndXJlLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgRmxvYXQ6IFdoZXRoZXIgdGhlIEZpZ3VyZSBpcyBzdXBwb3NlZCB0byBiZSByZW5kZXJlZAogICAgd2hlcmUgY29udmVuaWVudCAoeWVzICgxKSB2YWx1ZSkgb3IgYXQgdGhlIHBsYWNlIGl0IG9jY3VycwogICAgaW4gdGhlIHRleHQgKG5vICgwKSB2YWx1ZSwgdGhlIGRlZmF1bHQpCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZpZ3VyZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmxvYXQiIGRlZmF1bHQ9IjAiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdHN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBnd2lkZSIgdHlwZT0ieWVzb3Juby5hdHR2YWxzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZpZ3VyZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZmlndXJlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZmlndXJlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxmaWd1cmUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImluZm9ybWFsZmlndXJlIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmdyb3VwIHJlZj0iZmlndXJlLm1peCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5mb3JtYWxmaWd1cmUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxmaWd1cmUuZWxlbWVudCAtLT4KICA8IS0tCiAgICBGbG9hdDogV2hldGhlciB0aGUgRmlndXJlIGlzIHN1cHBvc2VkIHRvIGJlIHJlbmRlcmVkCiAgICB3aGVyZSBjb252ZW5pZW50ICh5ZXMgKDEpIHZhbHVlKSBvciBhdCB0aGUgcGxhY2UgaXQgb2NjdXJzCiAgICBpbiB0aGUgdGV4dCAobm8gKDApIHZhbHVlLCB0aGUgZGVmYXVsdCkKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxmaWd1cmUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZsb2F0IiBkZWZhdWx0PSIwIiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmxvYXRzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZ3dpZGUiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmZvcm1hbGZpZ3VyZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxmaWd1cmUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGZpZ3VyZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImdyYXBoaWNjby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3JhcGhpY2NvIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmVhc3BlYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY2FsbG91dGxpc3QiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3JhcGhpY2NvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdyYXBoaWNjby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJncmFwaGljY28uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJncmFwaGljY28ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdyYXBoaWNjby5hdHRsaXN0IC0tPgogIDwhLS0gQXJlYVNwZWMgKGRlZmluZWQgYWJvdmUgaW4gRXhhbXBsZXMpIC0tPgogIDwhLS0gQ2FsbG91dExpc3QgKGRlZmluZWQgYWJvdmUgaW4gTGlzdHMpIC0tPgogIDwhLS0gZW5kIG9mIGdyYXBoaWNjby5tb2R1bGUgLS0+CiAgPCEtLQogICAgR3JhcGhpY2FsIGRhdGEgY2FuIGJlIHRoZSBjb250ZW50IG9mIEdyYXBoaWMsIG9yIHlvdSBjYW4gcmVmZXJlbmNlCiAgICBhbiBleHRlcm5hbCBmaWxlIGVpdGhlciBhcyBhbiBlbnRpdHkgKEVudGl0cmVmKSBvciBhIGZpbGVuYW1lCiAgICAoRmlsZXJlZikuCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImdyYXBoaWMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImdyYXBoaWMiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImdyYXBoaWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3JhcGhpYy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJncmFwaGljLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3JhcGhpY3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJncmFwaGljLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBncmFwaGljLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3JhcGhpYy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZWdyYXBoaWMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImlubGluZWdyYXBoaWMiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmxpbmVvYmouY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlubGluZWdyYXBoaWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5saW5lZ3JhcGhpYy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmxpbmVncmFwaGljLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3JhcGhpY3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmxpbmVncmFwaGljLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmxpbmVncmFwaGljLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5saW5lZ3JhcGhpYy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lZGlhb2JqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZWRpYW9iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvYmplY3RpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVkaWFvYmplY3QubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImNhcHRpb24iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVkaWFvYmplY3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWVkaWFvYmplY3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWVkaWFvYmplY3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZWRpYW9iamVjdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWVkaWFvYmplY3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtZWRpYW9iamVjdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZW1lZGlhb2JqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmxpbmVtZWRpYW9iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImlubGluZW9iai5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvYmplY3RpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVkaWFvYmplY3QubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlubGluZW1lZGlhb2JqZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGlubGluZW1lZGlhb2JqZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZW1lZGlhb2JqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5saW5lbWVkaWFvYmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGlubGluZW1lZGlhb2JqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5saW5lbWVkaWFvYmplY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2aWRlb29iamVjdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idmlkZW9vYmplY3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJtZWRpYW9iamVjdC5taXgiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im9iamVjdGluZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InZpZGVvZGF0YSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2aWRlb29iamVjdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB2aWRlb29iamVjdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2aWRlb29iamVjdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZpZGVvb2JqZWN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB2aWRlb29iamVjdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZpZGVvb2JqZWN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXVkaW9vYmplY3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImF1ZGlvb2JqZWN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibWVkaWFvYmplY3QubWl4Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvYmplY3RpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhdWRpb2RhdGEiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXVkaW9vYmplY3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXVkaW9vYmplY3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXVkaW9vYmplY3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdWRpb29iamVjdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXVkaW9vYmplY3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhdWRpb29iamVjdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltYWdlb2JqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbWFnZW9iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9Im1lZGlhb2JqZWN0Lm1peCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ib2JqZWN0aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW1hZ2VkYXRhIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltYWdlb2JqZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGltYWdlb2JqZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltYWdlb2JqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW1hZ2VvYmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGltYWdlb2JqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW1hZ2VvYmplY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0ZXh0b2JqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0ZXh0b2JqZWN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibWVkaWFvYmplY3QubWl4Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvYmplY3RpbmZvIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icGhyYXNlIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRkYXRhIi8+CiAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGV4dG9iamVjdC5taXgiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGV4dG9iamVjdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0ZXh0b2JqZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRleHRvYmplY3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXh0b2JqZWN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0ZXh0b2JqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdGV4dG9iamVjdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9iamVjdGluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9iamVjdGluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvYmplY3RpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9iamVjdGluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib2JqZWN0aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9iamVjdGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9iamVjdGluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvYmplY3RpbmZvLm1vZHVsZSAtLT4KICA8IS0tCiAgICBFbnRpdHlSZWY6IE5hbWUgb2YgYW4gZXh0ZXJuYWwgZW50aXR5IGNvbnRhaW5pbmcgdGhlIGNvbnRlbnQKICAgIG9mIHRoZSBvYmplY3QgZGF0YQogIC0tPgogIDwhLS0KICAgIEZpbGVSZWY6IEZpbGVuYW1lLCBxdWFsaWZpZWQgYnkgYSBwYXRobmFtZSBpZiBkZXNpcmVkLAogICAgZGVzaWduYXRpbmcgdGhlIGZpbGUgY29udGFpbmluZyB0aGUgY29udGVudCBvZiB0aGUgb2JqZWN0IGRhdGEKICAtLT4KICA8IS0tIEZvcm1hdDogTm90YXRpb24gb2YgdGhlIGVsZW1lbnQgY29udGVudCwgaWYgYW55IC0tPgogIDwhLS0gU3JjQ3JlZGl0OiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgc291cmNlIG9mIHRoZSBpbWFnZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib2JqZWN0ZGF0YS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbnRpdHlyZWYiIHR5cGU9InhzOkVOVElUWSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaWxlcmVmIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvcm1hdCIgdHlwZT0ibm90YXRpb24uY2xhc3MiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3JjY3JlZGl0Ii8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmlkZW9kYXRhLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2aWRlb2RhdGEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2aWRlb2RhdGEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdmlkZW9kYXRhLmVsZW1lbnQgLS0+CiAgPCEtLSBXaWR0aDogU2FtZSBhcyBDQUxTIHJlcHJvd2lkIChkZXNpcmVkIHdpZHRoKSAtLT4KICA8IS0tIERlcHRoOiBTYW1lIGFzIENBTFMgcmVwcm9kZXAgKGRlc2lyZWQgZGVwdGgpIC0tPgogIDwhLS0KICAgIEFsaWduOiBTYW1lIGFzIENBTFMgaHBsYWNlIHdpdGggJ25vbmUnIHJlbW92ZWQ7ICNJTVBMSUVEIG1lYW5zCiAgICBhcHBsaWNhdGlvbi1zcGVjaWZpYwogIC0tPgogIDwhLS0gU2NhbGU6IENvbmZsYXRpb24gb2YgQ0FMUyBoc2NhbGUgYW5kIHZzY2FsZSAtLT4KICA8IS0tIFNjYWxlZml0OiBTYW1lIGFzIENBTFMgc2NhbGVmaXQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZpZGVvZGF0YS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGVudHdpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlcHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnRkZXB0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtaWRkbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm90dG9tIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjYWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjYWxlZml0IiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9iamVjdGRhdGEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2aWRlb2RhdGEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZpZGVvZGF0YS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZpZGVvZGF0YS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1ZGlvZGF0YS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXVkaW9kYXRhIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXVkaW9kYXRhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGF1ZGlvZGF0YS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdWRpb2RhdGEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvYmplY3RkYXRhLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXVkaW9kYXRhLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhdWRpb2RhdGEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhdWRpb2RhdGEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbWFnZWRhdGEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImltYWdlZGF0YSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltYWdlZGF0YS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbWFnZWRhdGEuZWxlbWVudCAtLT4KICA8IS0tIFdpZHRoOiBTYW1lIGFzIENBTFMgcmVwcm93aWQgKGRlc2lyZWQgd2lkdGgpIC0tPgogIDwhLS0gRGVwdGg6IFNhbWUgYXMgQ0FMUyByZXByb2RlcCAoZGVzaXJlZCBkZXB0aCkgLS0+CiAgPCEtLQogICAgQWxpZ246IFNhbWUgYXMgQ0FMUyBocGxhY2Ugd2l0aCAnbm9uZScgcmVtb3ZlZDsgI0lNUExJRUQgbWVhbnMKICAgIGFwcGxpY2F0aW9uLXNwZWNpZmljCiAgLS0+CiAgPCEtLSBTY2FsZTogQ29uZmxhdGlvbiBvZiBDQUxTIGhzY2FsZSBhbmQgdnNjYWxlIC0tPgogIDwhLS0gU2NhbGVmaXQ6IFNhbWUgYXMgQ0FMUyBzY2FsZWZpdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW1hZ2VkYXRhLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50d2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVwdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGVudGRlcHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NhbGUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NhbGVmaXQiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib2JqZWN0ZGF0YS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltYWdlZGF0YS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW1hZ2VkYXRhLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW1hZ2VkYXRhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGV4dGRhdGEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRleHRkYXRhIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGV4dGRhdGEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGV4dGRhdGEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGV4dGRhdGEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVuY29kaW5nIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvYmplY3RkYXRhLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGV4dGRhdGEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRleHRkYXRhLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdGV4dGRhdGEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZWRpYW9iamVjdGNvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZWRpYW9iamVjdGNvIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im9iamVjdGluZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImltYWdlb2JqZWN0Y28iLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbWFnZW9iamVjdGNvIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVkaWFvYmplY3Rjby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtZWRpYW9iamVjdGNvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lZGlhb2JqZWN0Y28uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZWRpYW9iamVjdGNvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtZWRpYW9iamVjdGNvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWVkaWFvYmplY3Rjby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltYWdlb2JqZWN0Y28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImltYWdlb2JqZWN0Y28iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmVhc3BlYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW1hZ2VvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNhbGxvdXRsaXN0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltYWdlb2JqZWN0Y28uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW1hZ2VvYmplY3Rjby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbWFnZW9iamVjdGNvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW1hZ2VvYmplY3Rjby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW1hZ2VvYmplY3Rjby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGltYWdlb2JqZWN0Y28ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIG1lZGlhb2JqZWN0LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gRXF1YXRpb25zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFRoaXMgUEUgcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9yIHJlcGxhY2luZyBlcXVhdGlvbiBjb250ZW50LCAtLT4KICA8IS0tIHBlcmhhcHMgYWRkaW5nIGEgbmV3IG9yIGRpZmZlcmVudCBtb2RlbCAoZS5nLiwgTWF0aE1MKSAtLT4KICA8eHM6Z3JvdXAgbmFtZT0iZXF1YXRpb24uY29udGVudCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhbHQiLz4KICAgICAgPHhzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJncmFwaGljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVkaWFvYmplY3QiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImlubGluZWVxdWF0aW9uLmNvbnRlbnQiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYWx0Ii8+CiAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmNvbXBsZXhUeXBlPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcXVhdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXF1YXRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJmb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbGVxdWF0aW9uIi8+CiAgICAgICAgICA8eHM6Z3JvdXAgcmVmPSJlcXVhdGlvbi5jb250ZW50Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVxdWF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVxdWF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVxdWF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdHN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVxdWF0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlcXVhdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVxdWF0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxlcXVhdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5mb3JtYWxlcXVhdGlvbiIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJlcXVhdGlvbi5jb250ZW50Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZm9ybWFsZXF1YXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxlcXVhdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmZvcm1hbGVxdWF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdHN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmZvcm1hbGVxdWF0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGVxdWF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxlcXVhdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZWVxdWF0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmxpbmVlcXVhdGlvbiIgc3Vic3RpdHV0aW9uR3JvdXA9ImlubGluZW9iai5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNvbXBsZXhDb250ZW50PgogICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0iaW5saW5lZXF1YXRpb24uY29udGVudCI+CiAgICAgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmxpbmVlcXVhdGlvbi5hdHRsaXN0Ii8+CiAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgIDwveHM6Y29tcGxleENvbnRlbnQ+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbmxpbmVlcXVhdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmxpbmVlcXVhdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlubGluZWVxdWF0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmxpbmVlcXVhdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGlubGluZWVxdWF0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWx0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhbHQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWx0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFsdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhbHQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhbHQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFsdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFsdC5tb2R1bGUgLS0+CiAgPCEtLSBUYWJsZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gQ2hvb3NlIGEgdGFibGUgbW9kZWwuIENBTFMgb3IgT0FTSVMgWE1MIEV4Y2hhbmdlIC0tPgogIDwhLS0gRG8gd2UgYWxsb3cgdGhlIEhUTUwgdGFibGUgbW9kZWwgYXMgd2VsbD8gLS0+CiAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CiAgPCEtLQogICAgeGh0bWx0YmwubW9kIGRlZmluZXMgSFRNTCB0YWJsZXMgYW5kIHNldHMgcGFyYW1ldGVyCiAgICBlbnRpdGllcyBzbyB0aGF0LCB3aGVuIHRoZSBDQUxTIHRhYmxlIG1vZHVsZSBpcyByZWFkLAogICAgd2UgZW5kIHVwIGFsbG93aW5nIGFueSB0YWJsZSB0byBiZSBDQUxTIG9yIEhUTUwuCiAgICBpLmUuIFRoaXMgaW5jbHVkZSBtdXN0IGNvbWUgZmlyc3QhCiAgLS0+CiAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CiAgPCEtLSBlbmQgb2YgYWxsb3cuaHRtbC50YWJsZXMgLS0+CiAgPCEtLSBBZGQgbGFiZWwgYW5kIHJvbGUgYXR0cmlidXRlcyB0byB0YWJsZSBhbmQgaW5mb3JtYWx0YWJsZSAtLT4KICA8IS0tCiAgICBBZGQgY29tbW9uIGF0dHJpYnV0ZXMgdG8gVGFibGUsIFRHcm91cCwgVEJvZHksIFRIZWFkLCBURm9vdCwgUm93LAogICAgRW50cnlUYmwsIGFuZCBFbnRyeSAoYW5kIEluZm9ybWFsVGFibGUgZWxlbWVudCkuCiAgLS0+CiAgPCEtLSBDb250ZW50IG1vZGVsIGZvciBUYWJsZS4gLS0+CiAgPCEtLSBBbGxvdyBlaXRoZXIgb2JqZWN0cyBvciBpbmxpbmVzOyBiZXdhcmUgb2YgUkVzIGJldHdlZW4gZWxlbWVudHMuIC0tPgogIDwhLS0gUmVmZXJlbmNlIENBTFMgVGFibGUgTW9kZWwgLS0+CiAgPCEtLSBlbmQgb2YgdGFibGUubW9kdWxlIC0tPgogIDwhLS0KICAgIE5vdGUgdGhhdCBJbmZvcm1hbFRhYmxlIGlzIGRlcGVuZGVudCBvbiBzb21lIG9mIHRoZSBlbnRpdHkKICAgIGRlY2xhcmF0aW9ucyB0aGF0IGN1c3RvbWl6ZSBUYWJsZS4KICAtLT4KICA8IS0tIHRoZSBmb2xsb3dpbmcgZW50aXR5IG1heSBoYXZlIGJlZW4gZGVjbGFyZWQgYnkgdGhlIFhIVE1MIHRhYmxlIG1vZHVsZSAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmZvcm1hbHRhYmxlIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImluZm9ybWFsLnRibC50YWJsZS5tZGwiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5mb3JtYWx0YWJsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbHRhYmxlLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgRnJhbWUsIENvbHNlcCwgYW5kIFJvd3NlcCBtdXN0IGJlIHJlcGVhdGVkIGJlY2F1c2UKICAgIHRoZXkgYXJlIG5vdCBpbiBlbnRpdGllcyBpbiB0aGUgdGFibGUgbW9kdWxlLgogIC0tPgogIDwhLS0KICAgIGluY2x1ZGVzIFRhYlN0eWxlLCBUb0NlbnRyeSwgU2hvcnRFbnRyeSwKICAgIE9yaWVudCwgUGdXaWRlCiAgLS0+CiAgPCEtLSBpbmNsdWRlcyBMYWJlbCAtLT4KICA8IS0tIGluY2x1ZGVzIGNvbW1vbiBhdHRyaWJ1dGVzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmZvcm1hbHRhYmxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmcmFtZSIgdHlwZT0idGJsLmZyYW1lLmF0dHZhbCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzZXAiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzZXAiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLnRhYmxlLmF0dHJpYnMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRibC50YWJsZS5hdHQiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZm9ybWFsdGFibGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbHRhYmxlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2FwdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2FwdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0ZXh0b2JqZWN0Lm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjYXB0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNhcHRpb24uZWxlbWVudCAtLT4KICA8IS0tIGF0dHJzIGNvbWVzIGZyb20gSFRNTCB0YWJsZXMgLi4uIC0tPgogIDwhLS0gY29tbW9uLmF0dHJpYiwgYnV0IHdpdGhvdXQgSUQgYmVjYXVzZSBJRCBpcyBpbiBhdHRycyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2FwdGlvbi5hdHRsaXN0LmNvbnRlbnQiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFuZy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlbWFwLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ieHJlZmxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2aXNpb25mbGFnLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZWZmZWN0aXZpdHkuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJkaXIuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4bWwtYmFzZS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNhcHRpb24ucm9sZS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF0dHJzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsZWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2FwdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNhcHRpb24uYXR0bGlzdC5jb250ZW50Ii8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjYXB0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2FwdGlvbi5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gU3lub3BzZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFN5bm9wc2lzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5bm9wc2lzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9InN5bm9wLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb3JlZiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGV4dG9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZWFubm90YXRpb24iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lc3BlY2lmaWMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeW5vcHNpcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIExpbmVBbm5vdGF0aW9uIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiBzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPCEtLSBDbWRTeW5vcHNpcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjbWRzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY21kc3lub3BzaXMiIHN1YnN0aXR1dGlvbkdyb3VwPSJzeW5vcC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iY29tbWFuZCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmciLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JvdXAiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2JyIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzeW5vcGZyYWdtZW50Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNtZHN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNtZHN5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU2VwY2hhcjogQ2hhcmFjdGVyIHRoYXQgc2hvdWxkIHNlcGFyYXRlIGNvbW1hbmQgYW5kIGFsbAogICAgdG9wLWxldmVsIGFyZ3VtZW50czsgYWx0ZXJuYXRlIHZhbHVlIG1pZ2h0IGJlIGUuZy4sICZEZWx0YTsKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY21kc3lub3BzaXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VwY2hhciIgZGVmYXVsdD0iICIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbWRsZW5ndGgiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNtZHN5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjbWRzeW5vcHNpcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNtZHN5bm9wc2lzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJnLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcmciPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JvdXAiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9wdGlvbiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3BmcmFnbWVudHJlZiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVwbGFjZWFibGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNiciIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJnLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFyZy5lbGVtZW50IC0tPgogIDwhLS0KICAgIENob2ljZTogV2hldGhlciBBcmcgbXVzdCBiZSBzdXBwbGllZDogT3B0IChvcHRpb25hbCB0bwogICAgc3VwcGx5LCBlLmcuIFthcmddOyB0aGUgZGVmYXVsdCksIFJlcSAocmVxdWlyZWQgdG8gc3VwcGx5LAogICAgZS5nLiB7YXJnfSksIG9yIFBsYWluIChyZXF1aXJlZCB0byBzdXBwbHksIGUuZy4gYXJnKQogIC0tPgogIDwhLS0KICAgIFJlcDogd2hldGhlciBBcmcgaXMgcmVwZWF0YWJsZTogTm9yZXBlYXQgKGUuZy4gYXJnIHdpdGhvdXQKICAgIGVsbGlwc2lzOyB0aGUgZGVmYXVsdCksIG9yIFJlcGVhdCAoZS5nLiBhcmcuLi4pCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFyZy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hvaWNlIiBkZWZhdWx0PSJvcHQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBsYWluIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcCIgZGVmYXVsdD0ibm9yZXBlYXQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JlcGVhdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXBlYXQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXJnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXJnLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3JvdXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdyb3VwIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmciLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdyb3VwIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvcHRpb24iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wZnJhZ21lbnRyZWYiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlcGxhY2VhYmxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzYnIiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdyb3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdyb3VwLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQ2hvaWNlOiBXaGV0aGVyIEdyb3VwIG11c3QgYmUgc3VwcGxpZWQ6IE9wdCAob3B0aW9uYWwgdG8KICAgIHN1cHBseSwgZS5nLiAgW2cxfGcyfGczXTsgdGhlIGRlZmF1bHQpLCBSZXEgKHJlcXVpcmVkIHRvCiAgICBzdXBwbHksIGUuZy4gIHtnMXxnMnxnM30pLCBQbGFpbiAocmVxdWlyZWQgdG8gc3VwcGx5LAogICAgZS5nLiAgZzF8ZzJ8ZzMpLCBPcHRNdWx0IChjYW4gc3VwcGx5IHplcm8gb3IgbW9yZSwgZS5nLgogICAgW1tnMXxnMnxnM11dKSwgb3IgUmVxTXVsdCAobXVzdCBzdXBwbHkgb25lIG9yIG1vcmUsIGUuZy4KICAgIHt7ZzF8ZzJ8ZzN9fSkKICAtLT4KICA8IS0tCiAgICBSZXA6IHdoZXRoZXIgR3JvdXAgaXMgcmVwZWF0YWJsZTogTm9yZXBlYXQgKGUuZy4gZ3JvdXAKICAgIHdpdGhvdXQgZWxsaXBzaXM7IHRoZSBkZWZhdWx0KSwgb3IgUmVwZWF0IChlLmcuIGdyb3VwLi4uKQogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJncm91cC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hvaWNlIiBkZWZhdWx0PSJvcHQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBsYWluIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcCIgZGVmYXVsdD0ibm9yZXBlYXQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JlcGVhdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXBlYXQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdyb3VwLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBncm91cC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdyb3VwLm1vZHVsZSAtLT4KICA8IS0tIFN5bm9wc2lzIGJyZWFrIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzYnIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNiciI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNici5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzYnIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2JyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2JyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzYnIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzYnIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeW5vcGZyYWdtZW50cmVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzeW5vcGZyYWdtZW50cmVmIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bm9wZnJhZ21lbnRyZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3lub3BmcmFnbWVudHJlZi5lbGVtZW50IC0tPgogIDwhLS0KICAgIHRvIFN5bm9wRnJhZ21lbnQgb2YgY29tcGxleCBzeW5vcHNpcwogICAgbWF0ZXJpYWwgZm9yIHNlcGFyYXRlIHJlZmVyZW5jaW5nCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5bm9wZnJhZ21lbnRyZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcmVxLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3lub3BmcmFnbWVudHJlZi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3lub3BmcmFnbWVudHJlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnRyZWYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeW5vcGZyYWdtZW50LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzeW5vcGZyYWdtZW50Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmciLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdyb3VwIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeW5vcGZyYWdtZW50LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3lub3BmcmFnbWVudC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlkcmVxLmNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bm9wZnJhZ21lbnQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzeW5vcGZyYWdtZW50Lm1vZHVsZSAtLT4KICA8IS0tIENvbW1hbmQgKGRlZmluZWQgaW4gdGhlIElubGluZXMgc2VjdGlvbiwgYmVsb3cpIC0tPgogIDwhLS0gT3B0aW9uIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIFJlcGxhY2VhYmxlIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiBjbWRzeW5vcHNpcy5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIEZ1bmNTeW5vcHNpcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZnVuY3N5bm9wc2lzIiBzdWJzdGl0dXRpb25Hcm91cD0ic3lub3AuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZ1bmNzeW5vcHNpc2luZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZ1bmNwcm90b3R5cGUiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNzeW5vcHNpcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY3N5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jc3lub3BzaXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZ1bmNzeW5vcHNpcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZ1bmNzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNzeW5vcHNpc2luZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZ1bmNzeW5vcHNpc2luZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZXh0b2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lYW5ub3RhdGlvbiIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY3N5bm9wc2lzaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXNpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNzeW5vcHNpc2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lc3BlY2lmaWMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jc3lub3BzaXNpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXNpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZnVuY3N5bm9wc2lzaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNwcm90b3R5cGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZ1bmNwcm90b3R5cGUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZnVuY2RlZiIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InZvaWQiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idmFyYXJncyIvPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhbWRlZiIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idmFyYXJncyIvPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNwcm90b3R5cGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZnVuY3Byb3RvdHlwZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jcHJvdG90eXBlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY3Byb3RvdHlwZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZnVuY3Byb3RvdHlwZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZ1bmNwcm90b3R5cGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jZGVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmdW5jZGVmIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0eXBlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXBsYWNlYWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZnVuY3Rpb24iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNkZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZnVuY2RlZi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jZGVmLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY2RlZi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZnVuY2RlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZ1bmNkZWYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2b2lkLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2b2lkIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idm9pZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB2b2lkLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZvaWQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2b2lkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB2b2lkLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygdm9pZC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZhcmFyZ3Mucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InZhcmFyZ3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2YXJhcmdzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZhcmFyZ3MuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmFyYXJncy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZhcmFyZ3Mucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZhcmFyZ3MuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB2YXJhcmdzLm1vZHVsZSAtLT4KICA8IS0tCiAgICBQcm9jZXNzaW5nIGFzc3VtZXMgdGhhdCBvbmx5IG9uZSBQYXJhbWV0ZXIgd2lsbCBhcHBlYXIgaW4gYQogICAgUGFyYW1EZWYsIGFuZCB0aGF0IEZ1bmNQYXJhbXMgd2lsbCBiZSB1c2VkIGF0IG1vc3Qgb25jZSwgZm9yCiAgICBwcm92aWRpbmcgaW5mb3JtYXRpb24gb24gdGhlICJpbm5lciBwYXJhbWV0ZXJzIiBmb3IgcGFyYW1ldGVycyB0aGF0CiAgICBhcmUgcG9pbnRlcnMgdG8gZnVuY3Rpb25zLgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJhbWRlZi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGFyYW1kZWYiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImluaXRpYWxpemVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0eXBlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXBsYWNlYWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYW1ldGVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmdW5jcGFyYW1zIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJhbWRlZi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwYXJhbWRlZi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJhbWRlZi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hvaWNlIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3B0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlcSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFyYW1kZWYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhcmFtZGVmLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcGFyYW1kZWYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jcGFyYW1zLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmdW5jcGFyYW1zIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY3BhcmFtcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmdW5jcGFyYW1zLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNwYXJhbXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jcGFyYW1zLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmdW5jcGFyYW1zLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZnVuY3BhcmFtcy5tb2R1bGUgLS0+CiAgPCEtLSBMaW5lQW5ub3RhdGlvbiAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBSZXBsYWNlYWJsZSAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBGdW5jdGlvbiAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBQYXJhbWV0ZXIgKGRlZmluZWQgaW4gdGhlIElubGluZXMgc2VjdGlvbiwgYmVsb3cpIC0tPgogIDwhLS0gZW5kIG9mIGZ1bmNzeW5vcHNpcy5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIENsYXNzU3lub3BzaXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjbGFzc3N5bm9wc2lzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjbGFzc3N5bm9wc2lzIiBzdWJzdGl0dXRpb25Hcm91cD0ic3lub3AuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9vY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ib29pbnRlcmZhY2UiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ib29leGNlcHRpb24iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbGFzc3N5bm9wc2lzaW5mbyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmaWVsZHN5bm9wc2lzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1ldGhvZC5zeW5vcC5jbGFzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjbGFzc3N5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNsYXNzc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2xhc3NzeW5vcHNpcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFuZ3VhZ2UiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIGRlZmF1bHQ9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2xhc3MiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaW50ZXJmYWNlIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjbGFzc3N5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjbGFzc3N5bm9wc2lzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2xhc3NzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNsYXNzc3lub3BzaXNpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjbGFzc3N5bm9wc2lzaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVhbm5vdGF0aW9uIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjbGFzc3N5bm9wc2lzaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjbGFzc3N5bm9wc2lzaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjbGFzc3N5bm9wc2lzaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVzcGVjaWZpYy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNsYXNzc3lub3BzaXNpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjbGFzc3N5bm9wc2lzaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNsYXNzc3lub3BzaXNpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib29jbGFzcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib29jbGFzcyIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbGFzc25hbWUiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib29jbGFzcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvb2NsYXNzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9vY2xhc3MuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvb2NsYXNzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvb2NsYXNzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb29jbGFzcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9vaW50ZXJmYWNlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvb2ludGVyZmFjZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbnRlcmZhY2VuYW1lIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9vaW50ZXJmYWNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9vaW50ZXJmYWNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9vaW50ZXJmYWNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib29pbnRlcmZhY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9vaW50ZXJmYWNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb29pbnRlcmZhY2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvb2V4Y2VwdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib29leGNlcHRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZXhjZXB0aW9ubmFtZSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvb2V4Y2VwdGlvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvb2V4Y2VwdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvb2V4Y2VwdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9vZXhjZXB0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvb2V4Y2VwdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG9vZXhjZXB0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW9kaWZpZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1vZGlmaWVyIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb2RpZmllci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtb2RpZmllci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtb2RpZmllci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vZGlmaWVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtb2RpZmllci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1vZGlmaWVyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW50ZXJmYWNlbmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW50ZXJmYWNlbmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImludGVyZmFjZW5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW50ZXJmYWNlbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbnRlcmZhY2VuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW50ZXJmYWNlbmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW50ZXJmYWNlbmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGludGVyZmFjZW5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJleGNlcHRpb25uYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJleGNlcHRpb25uYW1lIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJleGNlcHRpb25uYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGV4Y2VwdGlvbm5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXhjZXB0aW9ubmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImV4Y2VwdGlvbm5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGV4Y2VwdGlvbm5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBleGNlcHRpb25uYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmllbGRzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmllbGRzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9InN5bm9wLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibW9kaWZpZXIiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idHlwZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idmFybmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJpbml0aWFsaXplciIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaWVsZHN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZpZWxkc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmllbGRzeW5vcHNpcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFuZ3VhZ2UiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZpZWxkc3lub3BzaXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZpZWxkc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmaWVsZHN5bm9wc2lzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5pdGlhbGl6ZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImluaXRpYWxpemVyIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbml0aWFsaXplci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbml0aWFsaXplci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbml0aWFsaXplci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluaXRpYWxpemVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbml0aWFsaXplci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluaXRpYWxpemVyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uc3RydWN0b3JzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uc3RydWN0b3JzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9Im1ldGhvZC5zeW5vcC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im1ldGhvZG5hbWUiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWV0aG9kcGFyYW0iLz4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ2b2lkIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJleGNlcHRpb25uYW1lIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnN0cnVjdG9yc3lub3BzaXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29uc3RydWN0b3JzeW5vcHNpcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25zdHJ1Y3RvcnN5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5ndWFnZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uc3RydWN0b3JzeW5vcHNpcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29uc3RydWN0b3JzeW5vcHNpcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbnN0cnVjdG9yc3lub3BzaXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJkZXN0cnVjdG9yc3lub3BzaXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImRlc3RydWN0b3JzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9Im1ldGhvZC5zeW5vcC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im1ldGhvZG5hbWUiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWV0aG9kcGFyYW0iLz4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ2b2lkIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJleGNlcHRpb25uYW1lIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRlc3RydWN0b3JzeW5vcHNpcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBkZXN0cnVjdG9yc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGVzdHJ1Y3RvcnN5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5ndWFnZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGVzdHJ1Y3RvcnN5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBkZXN0cnVjdG9yc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBkZXN0cnVjdG9yc3lub3BzaXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZXRob2RzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWV0aG9kc3lub3BzaXMiIHN1YnN0aXR1dGlvbkdyb3VwPSJtZXRob2Quc3lub3AuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idHlwZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2b2lkIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtZXRob2RuYW1lIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1ldGhvZHBhcmFtIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idm9pZCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZXhjZXB0aW9ubmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibW9kaWZpZXIiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWV0aG9kc3lub3BzaXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWV0aG9kc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWV0aG9kc3lub3BzaXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxhbmd1YWdlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZXRob2RzeW5vcHNpcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWV0aG9kc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtZXRob2RzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1ldGhvZG5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1ldGhvZG5hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1ldGhvZG5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWV0aG9kbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZXRob2RuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWV0aG9kbmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWV0aG9kbmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1ldGhvZG5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZXRob2RwYXJhbS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWV0aG9kcGFyYW0iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0eXBlIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhbWV0ZXIiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImluaXRpYWxpemVyIi8+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmdW5jcGFyYW1zIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZXRob2RwYXJhbS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtZXRob2RwYXJhbS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZXRob2RwYXJhbS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hvaWNlIiBkZWZhdWx0PSJyZXEiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBsYWluIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcCIgZGVmYXVsdD0ibm9yZXBlYXQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JlcGVhdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXBlYXQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1ldGhvZHBhcmFtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtZXRob2RwYXJhbS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1ldGhvZHBhcmFtLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBjbGFzc3N5bm9wc2lzLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIERvY3VtZW50IGluZm9ybWF0aW9uIGVudGl0aWVzIGFuZCBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgVGhlIGRvY3VtZW50IGluZm9ybWF0aW9uIGVsZW1lbnRzIGluY2x1ZGUgc29tZSBlbGVtZW50cyB0aGF0IGFyZQogICAgY3VycmVudGx5IHVzZWQgb25seSBpbiB0aGUgZG9jdW1lbnQgaGllcmFyY2h5IG1vZHVsZS4gVGhleSBhcmUKICAgIGRlZmluZWQgaGVyZSBzbyB0aGF0IHRoZXkgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHVzZSBpbiBjdXN0b21pemVkCiAgICBkb2N1bWVudCBoaWVyYXJjaGllcy4KICAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBBY2tubyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhY2tuby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYWNrbm8iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhY2tuby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhY2tuby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhY2tuby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFja25vLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhY2tuby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFja25vLm1vZHVsZSAtLT4KICA8IS0tIEFkZHJlc3MgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFkZHJlc3Mucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFkZHJlc3MiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icGVyc29ubmFtZSIvPgogICAgICAgIDx4czpncm91cCByZWY9InBlcnNvbi5pZGVudC5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN0cmVldCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icG9iIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwb3N0Y29kZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY2l0eSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3RhdGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvdW50cnkiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBob25lIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmYXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtYWlsIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvdGhlcmFkZHIiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFkZHJlc3MuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWRkcmVzcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhZGRyZXNzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZXNwZWNpZmljLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRkcmVzcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWRkcmVzcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFkZHJlc3MubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdHJlZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN0cmVldCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0cmVldC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdHJlZXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RyZWV0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RyZWV0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdHJlZXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdHJlZXQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwb2Iucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBvYiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBvYi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwb2IuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icG9iLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icG9iLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwb2IuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwb2IubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwb3N0Y29kZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icG9zdGNvZGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwb3N0Y29kZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwb3N0Y29kZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwb3N0Y29kZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBvc3Rjb2RlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwb3N0Y29kZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBvc3Rjb2RlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2l0eS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2l0eSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdHkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2l0eS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXR5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0eS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2l0eS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNpdHkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdGF0ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3RhdGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0ZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdGF0ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdGF0ZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXRlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdGF0ZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN0YXRlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY291bnRyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY291bnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvdW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY291bnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY291bnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY291bnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvdW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwaG9uZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGhvbmUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwaG9uZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwaG9uZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwaG9uZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBob25lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwaG9uZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBob25lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmF4LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmYXgiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmYXguYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZmF4LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZheC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZheC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZmF4LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZmF4Lm1vZHVsZSAtLT4KICA8IS0tIEVtYWlsIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3RoZXJhZGRyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvdGhlcmFkZHIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvdGhlcmFkZHIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3RoZXJhZGRyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVyYWRkci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im90aGVyYWRkci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb3RoZXJhZGRyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb3RoZXJhZGRyLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBhZGRyZXNzLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gQWZmaWxpYXRpb24gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWZmaWxpYXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFmZmlsaWF0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzaG9ydGFmZmlsIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJqb2J0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvcmduYW1lIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJvcmdkaXYiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFkZHJlc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWZmaWxpYXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWZmaWxpYXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWZmaWxpYXRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhZmZpbGlhdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWZmaWxpYXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhZmZpbGlhdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNob3J0YWZmaWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNob3J0YWZmaWwiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaG9ydGFmZmlsLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNob3J0YWZmaWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2hvcnRhZmZpbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNob3J0YWZmaWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNob3J0YWZmaWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzaG9ydGFmZmlsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iam9idGl0bGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImpvYnRpdGxlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iam9idGl0bGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygam9idGl0bGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iam9idGl0bGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJqb2J0aXRsZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygam9idGl0bGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBqb2J0aXRsZS5tb2R1bGUgLS0+CiAgPCEtLSBPcmdOYW1lIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcmdkaXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9yZ2RpdiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9yZ2Rpdi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvcmdkaXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3JnZGl2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3JnZGl2LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvcmdkaXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvcmdkaXYubW9kdWxlIC0tPgogIDwhLS0gQWRkcmVzcyAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8IS0tIGVuZCBvZiBhZmZpbGlhdGlvbi5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIEFydFBhZ2VOdW1zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFydHBhZ2VudW1zLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcnRwYWdlbnVtcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFydHBhZ2VudW1zLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFydHBhZ2VudW1zLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFydHBhZ2VudW1zLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJ0cGFnZW51bXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFydHBhZ2VudW1zLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXJ0cGFnZW51bXMubW9kdWxlIC0tPgogIDwhLS0gUGVyc29uTmFtZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGVyc29ubmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGVyc29ubmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJob25vcmlmaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZpcnN0bmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3VybmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZWFnZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ib3RoZXJuYW1lIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwZXJzb25uYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBlcnNvbm5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGVyc29ubmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBlcnNvbm5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBlcnNvbm5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwZXJzb25uYW1lLm1vZHVsZSAtLT4KICA8IS0tIEF1dGhvciAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXV0aG9yIiBzdWJzdGl0dXRpb25Hcm91cD0iZG9jaW5mby5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBlcnNvbm5hbWUiLz4KICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwZXJzb24uaWRlbnQubWl4Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icGVyc29uYmx1cmIiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZW1haWwiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYWRkcmVzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdXRob3IuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXV0aG9yLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1dGhvci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXV0aG9yLmF0dGxpc3QgLS0+CiAgPCEtLSAoc2VlICJQZXJzb25hbCBpZGVudGl0eSBlbGVtZW50cyIgZm9yICVwZXJzb24uaWRlbnQubWl4OykgLS0+CiAgPCEtLSBlbmQgb2YgYXV0aG9yLm1vZHVsZSAtLT4KICA8IS0tIEF1dGhvckdyb3VwIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvcmdyb3VwLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhdXRob3Jncm91cCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlZGl0b3IiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbGxhYiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29ycGF1dGhvciIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29ycGNyZWRpdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ib3RoZXJjcmVkaXQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1dGhvcmdyb3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGF1dGhvcmdyb3VwLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvcmdyb3VwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXV0aG9yZ3JvdXAucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGF1dGhvcmdyb3VwLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXV0aG9yZ3JvdXAubW9kdWxlIC0tPgogIDwhLS0gQXV0aG9yIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDwhLS0gRWRpdG9yIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xsYWIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbGxhYiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbGxhYm5hbWUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFmZmlsaWF0aW9uIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbGxhYi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb2xsYWIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sbGFiLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sbGFiLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb2xsYWIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb2xsYWIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xsYWJuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb2xsYWJuYW1lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sbGFibmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb2xsYWJuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbGxhYm5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb2xsYWJuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb2xsYWJuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29sbGFibmFtZS5tb2R1bGUgLS0+CiAgPCEtLSBBZmZpbGlhdGlvbiAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8IS0tIGVuZCBvZiBjb2xsYWIuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBDb3JwQXV0aG9yIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDwhLS0gT3RoZXJDcmVkaXQgKGRlZmluZWQgZWxzZXdoZXJlIGluIHRoaXMgc2VjdGlvbikgLS0+CiAgPCEtLSBlbmQgb2YgYXV0aG9yZ3JvdXAuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBBdXRob3JJbml0aWFscyAuLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdXRob3Jpbml0aWFscy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXV0aG9yaW5pdGlhbHMiIHN1YnN0aXR1dGlvbkdyb3VwPSJkb2NpbmZvLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdXRob3Jpbml0aWFscy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhdXRob3Jpbml0aWFscy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdXRob3Jpbml0aWFscy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1dGhvcmluaXRpYWxzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhdXRob3Jpbml0aWFscy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGF1dGhvcmluaXRpYWxzLm1vZHVsZSAtLT4KICA8IS0tIENvbmZHcm91cCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZncm91cC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uZmdyb3VwIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbmZkYXRlcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29uZnRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb25mbnVtIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZGRyZXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb25mc3BvbnNvciIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZmdyb3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbmZncm91cC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mZ3JvdXAuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mZ3JvdXAucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbmZncm91cC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbmZncm91cC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZkYXRlcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uZmRhdGVzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZmRhdGVzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbmZkYXRlcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mZGF0ZXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mZGF0ZXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbmZkYXRlcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbmZkYXRlcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZ0aXRsZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uZnRpdGxlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZnRpdGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbmZ0aXRsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mdGl0bGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mdGl0bGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbmZ0aXRsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbmZ0aXRsZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZudW0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbmZudW0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mbnVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbmZudW0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uZm51bS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZudW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbmZudW0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb25mbnVtLm1vZHVsZSAtLT4KICA8IS0tIEFkZHJlc3MgKGRlZmluZWQgZWxzZXdoZXJlIGluIHRoaXMgc2VjdGlvbikgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZzcG9uc29yLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb25mc3BvbnNvciI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZzcG9uc29yLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbmZzcG9uc29yLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZzcG9uc29yLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZnNwb25zb3Iucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbmZzcG9uc29yLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29uZnNwb25zb3IubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGNvbmZncm91cC5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIENvbnRyYWN0TnVtIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnRyYWN0bnVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb250cmFjdG51bSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnRyYWN0bnVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbnRyYWN0bnVtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnRyYWN0bnVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29udHJhY3RudW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbnRyYWN0bnVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29udHJhY3RudW0ubW9kdWxlIC0tPgogIDwhLS0gQ29udHJhY3RTcG9uc29yIC4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29udHJhY3RzcG9uc29yLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb250cmFjdHNwb25zb3IiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb250cmFjdHNwb25zb3IuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29udHJhY3RzcG9uc29yLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnRyYWN0c3BvbnNvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnRyYWN0c3BvbnNvci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29udHJhY3RzcG9uc29yLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29udHJhY3RzcG9uc29yLm1vZHVsZSAtLT4KICA8IS0tIENvcHlyaWdodCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcHlyaWdodC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29weXJpZ2h0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InllYXIiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImhvbGRlciIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3B5cmlnaHQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29weXJpZ2h0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcHlyaWdodC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcHlyaWdodC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29weXJpZ2h0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29weXJpZ2h0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ieWVhci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ieWVhciI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InllYXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgeWVhci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ5ZWFyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ieWVhci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgeWVhci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHllYXIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJob2xkZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImhvbGRlciI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImhvbGRlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBob2xkZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaG9sZGVyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaG9sZGVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBob2xkZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBob2xkZXIubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGNvcHlyaWdodC5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIENvcnBBdXRob3IgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcnBhdXRob3Iucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvcnBhdXRob3IiIHN1YnN0aXR1dGlvbkdyb3VwPSJkb2NpbmZvLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3JwYXV0aG9yLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvcnBhdXRob3IuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29ycGF1dGhvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcnBhdXRob3Iucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvcnBhdXRob3IuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb3JwYXV0aG9yLm1vZHVsZSAtLT4KICA8IS0tIENvcnBDcmVkaXQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29ycGNyZWRpdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29ycGNyZWRpdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcnBjcmVkaXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29ycGNyZWRpdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3JwY3JlZGl0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImdyYXBoaWNkZXNpZ25lciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcm9kdWN0aW9uZWRpdG9yIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvcHllZGl0b3IiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idGVjaG5pY2FsZWRpdG9yIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRyYW5zbGF0b3IiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcnBjcmVkaXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvcnBjcmVkaXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb3JwY3JlZGl0Lm1vZHVsZSAtLT4KICA8IS0tIENvcnBOYW1lIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29ycG5hbWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3JwbmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb3JwbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3JwbmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcnBuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29ycG5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvcnBuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29ycG5hbWUubW9kdWxlIC0tPgogIDwhLS0gRGF0ZSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGF0ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZGF0ZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRhdGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZGF0ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJkYXRlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGF0ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZGF0ZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGRhdGUubW9kdWxlIC0tPgogIDwhLS0gRWRpdGlvbiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZWRpdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZWRpdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVkaXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZWRpdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlZGl0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZWRpdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZWRpdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVkaXRpb24ubW9kdWxlIC0tPgogIDwhLS0gRWRpdG9yIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZWRpdG9yLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJlZGl0b3IiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icGVyc29ubmFtZSIvPgogICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBlcnNvbi5pZGVudC5taXgiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwZXJzb25ibHVyYiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbWFpbCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZGRyZXNzIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVkaXRvci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlZGl0b3IuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZWRpdG9yLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZWRpdG9yLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlZGl0b3IuYXR0bGlzdCAtLT4KICA8IS0tIChzZWUgIlBlcnNvbmFsIGlkZW50aXR5IGVsZW1lbnRzIiBmb3IgJXBlcnNvbi5pZGVudC5taXg7KSAtLT4KICA8IS0tIGVuZCBvZiBlZGl0b3IubW9kdWxlIC0tPgogIDwhLS0gSVNCTiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaXNibi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaXNibiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlzYm4uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaXNibi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpc2JuLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXNibi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaXNibi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGlzYm4ubW9kdWxlIC0tPgogIDwhLS0gSVNTTiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaXNzbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaXNzbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imlzc24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaXNzbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpc3NuLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXNzbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaXNzbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGlzc24ubW9kdWxlIC0tPgogIDwhLS0gQmlibGlvSWQgLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpby5jbGFzcy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InVyaSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkb2kiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXNibiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpc3NuIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpYnJhcnlvZmNvbmdyZXNzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InB1Ym51bWJlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcmNsYXNzIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvaWQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb2lkIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvaWQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmlibGlvaWQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvaWQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW8uY2xhc3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9pZC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmlibGlvaWQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9pZC5tb2R1bGUgLS0+CiAgPCEtLSBDaXRlQmlibGlvSWQgLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdGViaWJsaW9pZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2l0ZWJpYmxpb2lkIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0ZWJpYmxpb2lkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNpdGViaWJsaW9pZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRlYmlibGlvaWQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW8uY2xhc3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaXRlYmlibGlvaWQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNpdGViaWJsaW9pZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNpdGViaWJsaW9pZC5tb2R1bGUgLS0+CiAgPCEtLSBCaWJsaW9Tb3VyY2UgLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb3NvdXJjZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvc291cmNlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvc291cmNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb3NvdXJjZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9zb3VyY2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW8uY2xhc3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9zb3VyY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb3NvdXJjZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb3NvdXJjZS5tb2R1bGUgLS0+CiAgPCEtLSBCaWJsaW9SZWxhdGlvbiAuLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvcmVsYXRpb24udHlwZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXN2ZXJzaW9ub2YiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaGFzdmVyc2lvbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpc3JlcGxhY2VkYnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVwbGFjZXMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXNyZXF1aXJlZGJ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlcXVpcmVzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlzcGFydG9mIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imhhc3BhcnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXNyZWZlcmVuY2VkYnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVmZXJlbmNlcyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpc2Zvcm1hdG9mIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imhhc2Zvcm1hdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlcnR5cGUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJ0eXBlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvcmVsYXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb3JlbGF0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvcmVsYXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmlibGlvcmVsYXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvcmVsYXRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW8uY2xhc3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9yZWxhdGlvbi50eXBlLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvcmVsYXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb3JlbGF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYmlibGlvcmVsYXRpb24ubW9kdWxlIC0tPgogIDwhLS0gQmlibGlvQ292ZXJhZ2UgLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2NvdmVyYWdlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9jb3ZlcmFnZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2NvdmVyYWdlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2NvdmVyYWdlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2NvdmVyYWdlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGF0aWFsIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGNtaXBvaW50Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlzbzMxNjYiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGNtaWJveCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0Z24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXJzcGF0aWFsIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVyc3BhdGlhbCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZW1wb3JhbCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRjbWlwZXJpb2QiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idzNjLWR0ZiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlcnRlbXBvcmFsIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVydGVtcG9yYWwiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2NvdmVyYWdlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9jb3ZlcmFnZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb2NvdmVyYWdlLm1vZHVsZSAtLT4KICA8IS0tIEludlBhcnROdW1iZXIgLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImludnBhcnRudW1iZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImludnBhcnRudW1iZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbnZwYXJ0bnVtYmVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGludnBhcnRudW1iZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW52cGFydG51bWJlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImludnBhcnRudW1iZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGludnBhcnRudW1iZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbnZwYXJ0bnVtYmVyLm1vZHVsZSAtLT4KICA8IS0tIElzc3VlTnVtIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imlzc3VlbnVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpc3N1ZW51bSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imlzc3VlbnVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGlzc3VlbnVtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imlzc3VlbnVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXNzdWVudW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGlzc3VlbnVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaXNzdWVudW0ubW9kdWxlIC0tPgogIDwhLS0gTGVnYWxOb3RpY2UgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGVnYWxub3RpY2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxlZ2Fsbm90aWNlIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibGVnYWxub3RpY2UubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxlZ2Fsbm90aWNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxlZ2Fsbm90aWNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxlZ2Fsbm90aWNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGVnYWxub3RpY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxlZ2Fsbm90aWNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGVnYWxub3RpY2UubW9kdWxlIC0tPgogIDwhLS0gTW9kZVNwZWMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW9kZXNwZWMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1vZGVzcGVjIiBzdWJzdGl0dXRpb25Hcm91cD0iZG9jaW5mby5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9kZXNwZWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbW9kZXNwZWMuZWxlbWVudCAtLT4KICA8IS0tCiAgICBBcHBsaWNhdGlvbjogVHlwZSBvZiBhY3Rpb24gcmVxdWlyZWQgZm9yIGNvbXBsZXRpb24KICAgIG9mIHRoZSBsaW5rcyB0byB3aGljaCB0aGUgTW9kZVNwZWMgaXMgcmVsZXZhbnQgKGUuZy4sCiAgICByZXRyaWV2YWwgcXVlcnkpCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1vZGVzcGVjLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcHBsaWNhdGlvbiIgdHlwZT0ibm90YXRpb24uY2xhc3MiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vZGVzcGVjLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtb2Rlc3BlYy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1vZGVzcGVjLm1vZHVsZSAtLT4KICA8IS0tIE9yZ05hbWUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9yZ25hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9yZ25hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9yZ25hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3JnbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcmduYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvcnBvcmF0aW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vbnByb2ZpdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb25zb3J0aXVtIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImluZm9ybWFsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVyY2xhc3MiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9yZ25hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9yZ25hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvcmduYW1lLm1vZHVsZSAtLT4KICA8IS0tIE90aGVyQ3JlZGl0IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVyY3JlZGl0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvdGhlcmNyZWRpdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwZXJzb25uYW1lIi8+CiAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGVyc29uLmlkZW50Lm1peCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBlcnNvbmJsdXJiIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtYWlsIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFkZHJlc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3RoZXJjcmVkaXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3RoZXJjcmVkaXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3RoZXJjcmVkaXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZ3JhcGhpY2Rlc2lnbmVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InByb2R1Y3Rpb25lZGl0b3IiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29weWVkaXRvciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0ZWNobmljYWxlZGl0b3IiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idHJhbnNsYXRvciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3RoZXJjcmVkaXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG90aGVyY3JlZGl0LmF0dGxpc3QgLS0+CiAgPCEtLSAoc2VlICJQZXJzb25hbCBpZGVudGl0eSBlbGVtZW50cyIgZm9yICVwZXJzb24uaWRlbnQubWl4OykgLS0+CiAgPCEtLSBlbmQgb2Ygb3RoZXJjcmVkaXQubW9kdWxlIC0tPgogIDwhLS0gUGFnZU51bXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFnZW51bXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBhZ2VudW1zIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGFnZW51bXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFnZW51bXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcGFnZW51bXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwYWdlbnVtcy5tb2R1bGUgLS0+CiAgPCEtLSBQZXJzb25hbCBpZGVudGl0eSBlbGVtZW50cyAuLi4uLi4uIC0tPgogIDwhLS0KICAgIFRoZXNlIGVsZW1lbnRzIGFyZSB1c2VkIG9ubHkgd2l0aGluIEF1dGhvciwgRWRpdG9yLCBhbmQKICAgIE90aGVyQ3JlZGl0LgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb250cmliLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb250cmliIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29udHJpYi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb250cmliLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnRyaWIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb250cmliLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb250cmliLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29udHJpYi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZpcnN0bmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmlyc3RuYW1lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmlyc3RuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZpcnN0bmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaXJzdG5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaXJzdG5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZpcnN0bmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZpcnN0bmFtZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imhvbm9yaWZpYy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaG9ub3JpZmljIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaG9ub3JpZmljLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGhvbm9yaWZpYy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJob25vcmlmaWMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJob25vcmlmaWMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGhvbm9yaWZpYy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGhvbm9yaWZpYy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmVhZ2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxpbmVhZ2UiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lYWdlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxpbmVhZ2UuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGluZWFnZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVhZ2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpbmVhZ2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBsaW5lYWdlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3RoZXJuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvdGhlcm5hbWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvdGhlcm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3RoZXJuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVybmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im90aGVybmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb3RoZXJuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb3RoZXJuYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3VybmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3VybmFtZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1cm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3VybmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdXJuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3VybmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3VybmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN1cm5hbWUubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHBlcnNvbi5pZGVudC5tb2R1bGUgLS0+CiAgPCEtLSBQcmludEhpc3RvcnkgLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmludGhpc3Rvcnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByaW50aGlzdG9yeSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW50aGlzdG9yeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwcmludGhpc3RvcnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJpbnRoaXN0b3J5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJpbnRoaXN0b3J5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcmludGhpc3RvcnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcmludGhpc3RvcnkubW9kdWxlIC0tPgogIDwhLS0gUHJvZHVjdE5hbWUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZHVjdG5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByb2R1Y3RuYW1lIiBzdWJzdGl0dXRpb25Hcm91cD0iZG9jaW5mby5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvZHVjdG5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJvZHVjdG5hbWUuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBNb3JlIHByZWNpc2VseSBpZGVudGlmaWVzIHRoZSBpdGVtIHRoZSBlbGVtZW50IG5hbWVzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9kdWN0bmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIGRlZmF1bHQ9InRyYWRlIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VydmljZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0cmFkZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZWdpc3RlcmVkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvcHlyaWdodCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvZHVjdG5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByb2R1Y3RuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHJvZHVjdG5hbWUubW9kdWxlIC0tPgogIDwhLS0gUHJvZHVjdE51bWJlciAuLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZHVjdG51bWJlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJvZHVjdG51bWJlciIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2R1Y3RudW1iZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJvZHVjdG51bWJlci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9kdWN0bnVtYmVyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvZHVjdG51bWJlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJvZHVjdG51bWJlci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByb2R1Y3RudW1iZXIubW9kdWxlIC0tPgogIDwhLS0gUHViRGF0ZSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHViZGF0ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHViZGF0ZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1YmRhdGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHViZGF0ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwdWJkYXRlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHViZGF0ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHViZGF0ZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHB1YmRhdGUubW9kdWxlIC0tPgogIDwhLS0gUHVibGlzaGVyIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHVibGlzaGVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwdWJsaXNoZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwdWJsaXNoZXJuYW1lIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJhZGRyZXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1Ymxpc2hlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHVibGlzaGVyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHVibGlzaGVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwdWJsaXNoZXJuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwdWJsaXNoZXJuYW1lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHVibGlzaGVybmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXJuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InB1Ymxpc2hlcm5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwdWJsaXNoZXJuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXJuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHVibGlzaGVybmFtZS5tb2R1bGUgLS0+CiAgPCEtLSBBZGRyZXNzIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDwhLS0gZW5kIG9mIHB1Ymxpc2hlci5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIFB1YnNOdW1iZXIgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InB1YnNudW1iZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InB1YnNudW1iZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwdWJzbnVtYmVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHB1YnNudW1iZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHVic251bWJlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1YnNudW1iZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHB1YnNudW1iZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwdWJzbnVtYmVyLm1vZHVsZSAtLT4KICA8IS0tIFJlbGVhc2VJbmZvIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlbGVhc2VpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWxlYXNlaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlbGVhc2VpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlbGVhc2VpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlbGVhc2VpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVsZWFzZWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlbGVhc2VpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVsZWFzZWluZm8ubW9kdWxlIC0tPgogIDwhLS0gUmV2SGlzdG9yeSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aGlzdG9yeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmV2aGlzdG9yeSIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZXZpc2lvbiIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZoaXN0b3J5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJldmhpc3RvcnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aGlzdG9yeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldmhpc3Rvcnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJldmhpc3RvcnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZXZoaXN0b3J5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aXNpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJldmlzaW9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmV2bnVtYmVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJkYXRlIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImF1dGhvcmluaXRpYWxzIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXZyZW1hcmsiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icmV2ZGVzY3JpcHRpb24iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2aXNpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmV2aXNpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aXNpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZpc2lvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmV2aXNpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZXZpc2lvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldm51bWJlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmV2bnVtYmVyIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2bnVtYmVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJldm51bWJlci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXZudW1iZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZudW1iZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJldm51bWJlci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJldm51bWJlci5tb2R1bGUgLS0+CiAgPCEtLSBEYXRlIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDwhLS0gQXV0aG9ySW5pdGlhbHMgKGRlZmluZWQgZWxzZXdoZXJlIGluIHRoaXMgc2VjdGlvbikgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldnJlbWFyay5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmV2cmVtYXJrIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2cmVtYXJrLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJldnJlbWFyay5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXZyZW1hcmsuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZyZW1hcmsucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJldnJlbWFyay5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJldnJlbWFyay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldmRlc2NyaXB0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZXZkZXNjcmlwdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZXZkZXNjcmlwdGlvbi5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2ZGVzY3JpcHRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmV2ZGVzY3JpcHRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2ZGVzY3JpcHRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZkZXNjcmlwdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmV2ZGVzY3JpcHRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZXZkZXNjcmlwdGlvbi5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgcmV2aGlzdG9yeS5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIFNlcmllc1ZvbE51bXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlcmllc3ZvbG51bXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlcmllc3ZvbG51bXMiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXJpZXN2b2xudW1zLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlcmllc3ZvbG51bXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VyaWVzdm9sbnVtcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlcmllc3ZvbG51bXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlcmllc3ZvbG51bXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZXJpZXN2b2xudW1zLm1vZHVsZSAtLT4KICA8IS0tIFZvbHVtZU51bSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZvbHVtZW51bS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idm9sdW1lbnVtIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idm9sdW1lbnVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZvbHVtZW51bS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2b2x1bWVudW0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2b2x1bWVudW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZvbHVtZW51bS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZvbHVtZW51bS5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gZW5kIG9mIGRvY2luZm8uY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gSW5saW5lLCBsaW5rLCBhbmQgdWJpcXVpdG91cyBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFRlY2huaWNhbCBhbmQgY29tcHV0ZXIgdGVybXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFjY2VsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhY2NlbCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWNjZWwuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWNjZWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWNjZWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhY2NlbC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWNjZWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhY2NlbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFjdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYWN0aW9uIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWN0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFjdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhY3Rpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFjdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWN0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYWN0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXBwbGljYXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFwcGxpY2F0aW9uIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXBwbGljYXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXBwbGljYXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXBwbGljYXRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaGFyZHdhcmUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic29mdHdhcmUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXBwbGljYXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFwcGxpY2F0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXBwbGljYXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjbGFzc25hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNsYXNzbmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2xhc3NuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNsYXNzbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjbGFzc25hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjbGFzc25hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNsYXNzbmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNsYXNzbmFtZS5tb2R1bGUgLS0+CiAgPCEtLQogICAgQ08gaXMgYSBjYWxsb3V0IGFyZWEgb2YgdGhlIExpbmVDb2x1bW4gdW5pdCB0eXBlIChhIHNpbmdsZSBjaGFyYWN0ZXIKICAgIHBvc2l0aW9uKTsgdGhlIHBvc2l0aW9uIGlzIGRpcmVjdGx5IGluZGljYXRlZCBieSB0aGUgbG9jYXRpb24gb2YgQ08uCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvLmVsZW1lbnQgLS0+CiAgPCEtLSBidWcgbnVtYmVyL3N5bWJvbCBvdmVycmlkZSBvciBpbml0aWFsaXphdGlvbiAtLT4KICA8IS0tIHRvIGFueSByZWxhdGVkIGluZm9ybWF0aW9uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpZHJlcS5jb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY28uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjby5tb2R1bGUgLS0+CiAgPCEtLSBDT1JFRiBpcyBhIHJlZmVyZW5jZSB0byBhIENPIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3JlZi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29yZWYiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3JlZi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb3JlZi5lbGVtZW50IC0tPgogIDwhLS0gYnVnIG51bWJlci9zeW1ib2wgb3ZlcnJpZGUgb3IgaW5pdGlhbGl6YXRpb24gLS0+CiAgPCEtLSB0byBhbnkgcmVsYXRlZCBpbmZvcm1hdGlvbiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29yZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRyZXEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3JlZi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29yZWYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb3JlZi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbW1hbmQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbW1hbmQiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tYW5kLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbW1hbmQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29tbWFuZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbWFuZC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29tbWFuZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbW1hbmQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb21wdXRlcm91dHB1dC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29tcHV0ZXJvdXRwdXQiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tcHV0ZXJvdXRwdXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29tcHV0ZXJvdXRwdXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29tcHV0ZXJvdXRwdXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbXB1dGVyb3V0cHV0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb21wdXRlcm91dHB1dC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbXB1dGVyb3V0cHV0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGF0YWJhc2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImRhdGFiYXNlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGF0YWJhc2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZGF0YWJhc2UuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBUeXBlIG9mIGRhdGFiYXNlIHRoZSBlbGVtZW50IG5hbWVzOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJkYXRhYmFzZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJuYW1lIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRhYmxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImZpZWxkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImtleTEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ia2V5MiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZWNvcmQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaW5kZXgiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idmlldyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcmltYXJ5a2V5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY29uZGFyeWtleSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJmb3JlaWdua2V5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFsdGtleSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcm9jZWR1cmUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGF0YXR5cGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29uc3RyYWludCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJydWxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InVzZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZ3JvdXAiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGF0YWJhc2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGRhdGFiYXNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZGF0YWJhc2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbWFpbC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZW1haWwiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlbWFpbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlbWFpbC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbWFpbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVtYWlsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlbWFpbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVtYWlsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZW52YXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImVudmFyIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlbnZhci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlbnZhci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbnZhci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVudmFyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlbnZhci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVudmFyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXJyb3Jjb2RlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJlcnJvcmNvZGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVycm9yY29kZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlcnJvcmNvZGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXJyb3Jjb2RlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcnJvcmNvZGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGVycm9yY29kZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVycm9yY29kZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVycm9ybmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXJyb3JuYW1lIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcnJvcm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZXJyb3JuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVycm9ybmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVycm9ybmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZXJyb3JuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZXJyb3JuYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXJyb3J0ZXh0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJlcnJvcnRleHQiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVycm9ydGV4dC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlcnJvcnRleHQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXJyb3J0ZXh0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXJyb3J0ZXh0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlcnJvcnRleHQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBlcnJvcnRleHQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcnJvcnR5cGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImVycm9ydHlwZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXJyb3J0eXBlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVycm9ydHlwZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcnJvcnR5cGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcnJvcnR5cGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGVycm9ydHlwZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVycm9ydHlwZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZpbGVuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmaWxlbmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZpbGVuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZpbGVuYW1lLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogVHlwZSBvZiBmaWxlbmFtZSB0aGUgZWxlbWVudCBuYW1lczsgbm8gZGVmYXVsdCAtLT4KICA8IS0tCiAgICBQYXRoOiBTZWFyY2ggcGF0aCAocG9zc2libHkgc3lzdGVtLXNwZWNpZmljKSBpbiB3aGljaAogICAgZmlsZSBjYW4gYmUgZm91bmQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmlsZW5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaGVhZGVyZmlsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwYXJ0aXRpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGV2aWNlZmlsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaWJyYXJ5ZmlsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkaXJlY3RvcnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZXh0ZW5zaW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InN5bWxpbmsiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGF0aCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaWxlbmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZmlsZW5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmaWxlbmFtZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmN0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmdW5jdGlvbiIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmN0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZ1bmN0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmN0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZnVuY3Rpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmdW5jdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aWJ1dHRvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3VpYnV0dG9uIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhY2NlbCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3VpYnV0dG9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGd1aWJ1dHRvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWlidXR0b24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aWJ1dHRvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ3VpYnV0dG9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3VpYnV0dG9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3VpaWNvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3VpaWNvbiIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNjZWwiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aWljb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3VpaWNvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWlpY29uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWlpY29uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBndWlpY29uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3VpaWNvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aWxhYmVsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJndWlsYWJlbCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNjZWwiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aWxhYmVsLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGd1aWxhYmVsLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aWxhYmVsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWlsYWJlbC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ3VpbGFiZWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBndWlsYWJlbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aW1lbnUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imd1aW1lbnUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjY2VsIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWltZW51LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGd1aW1lbnUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3VpbWVudS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3VpbWVudS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ3VpbWVudS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGd1aW1lbnUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWltZW51aXRlbS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3VpbWVudWl0ZW0iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjY2VsIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWltZW51aXRlbS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBndWltZW51aXRlbS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWltZW51aXRlbS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3VpbWVudWl0ZW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGd1aW1lbnVpdGVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3VpbWVudWl0ZW0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWlzdWJtZW51LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJndWlzdWJtZW51IiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhY2NlbCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3Vpc3VibWVudS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBndWlzdWJtZW51LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aXN1Ym1lbnUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aXN1Ym1lbnUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGd1aXN1Ym1lbnUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBndWlzdWJtZW51Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaGFyZHdhcmUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImhhcmR3YXJlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaGFyZHdhcmUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaGFyZHdhcmUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaGFyZHdhcmUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImhhcmR3YXJlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBoYXJkd2FyZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGhhcmR3YXJlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW50ZXJmYWNlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbnRlcmZhY2UiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjY2VsIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbnRlcmZhY2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW50ZXJmYWNlLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogVHlwZSBvZiB0aGUgSW50ZXJmYWNlIGl0ZW07IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImludGVyZmFjZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW50ZXJmYWNlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbnRlcmZhY2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbnRlcmZhY2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXljYXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImtleWNhcCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleWNhcC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBrZXljYXAuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5Y2FwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmdW5jdGlvbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFsdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb250cm9sIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNoaWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1ldGEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZXNjYXBlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImVudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRhYiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJiYWNrc3BhY2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29tbWFuZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHRpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic3BhY2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGVsZXRlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imluc2VydCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ1cCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkb3duIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaG9tZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJlbmQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icGFnZXVwIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBhZ2Vkb3duIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVyZnVuY3Rpb24iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5Y2FwLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBrZXljYXAuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBrZXljYXAubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXljb2RlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJrZXljb2RlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXljb2RlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGtleWNvZGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5Y29kZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleWNvZGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGtleWNvZGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBrZXljb2RlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5Y29tYm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImtleWNvbWJvIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJrZXljYXAiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImtleWNvbWJvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJrZXlzeW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1vdXNlYnV0dG9uIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXljb21iby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBrZXljb21iby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXljb21iby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleWFjdGlvbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5Y29tYm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGtleWNvbWJvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Yga2V5Y29tYm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXlzeXNtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJrZXlzeW0iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleXN5bS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBrZXlzeW0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5c3ltLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5c3lzbS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Yga2V5c3ltLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Yga2V5c3ltLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGluZWFubm90YXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxpbmVhbm5vdGF0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZWFubm90YXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbGluZWFubm90YXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGluZWFubm90YXRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lYW5ub3RhdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbGluZWFubm90YXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBsaW5lYW5ub3RhdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpdGVyYWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxpdGVyYWwiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaXRlcmFsLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxpdGVyYWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGl0ZXJhbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGl0ZXJhbC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbGl0ZXJhbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGxpdGVyYWwubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2RlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb2RlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29kZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb2RlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvZGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxhbmd1YWdlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb2RlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb2RlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29kZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnN0YW50LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb25zdGFudCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uc3RhbnQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29uc3RhbnQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uc3RhbnQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGltaXQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnN0YW50LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb25zdGFudC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbnN0YW50Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmFybmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idmFybmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmFybmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB2YXJuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZhcm5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2YXJuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB2YXJuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdmFybmFtZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1hcmt1cC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWFya3VwIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtYXJrdXAuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWFya3VwLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1hcmt1cC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1hcmt1cC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWFya3VwLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWFya3VwLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWVkaWFsYWJlbC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWVkaWFsYWJlbCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVkaWFsYWJlbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtZWRpYWxhYmVsLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogVHlwZSBvZiBtZWRpdW0gbmFtZWQgYnkgdGhlIGVsZW1lbnQ7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lZGlhbGFiZWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2FydHJpZGdlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNkcm9tIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRpc2siLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idGFwZSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVkaWFsYWJlbC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWVkaWFsYWJlbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1lZGlhbGFiZWwubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZW51Y2hvaWNlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZW51Y2hvaWNlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzaG9ydGN1dCIvPgogICAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJndWlidXR0b24iLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3VpaWNvbiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJndWlsYWJlbCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJndWltZW51Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imd1aW1lbnVpdGVtIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imd1aXN1Ym1lbnUiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iaW50ZXJmYWNlIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1lbnVjaG9pY2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWVudWNob2ljZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZW51Y2hvaWNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZW51Y2hvaWNlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtZW51Y2hvaWNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWVudWNob2ljZS5tb2R1bGUgLS0+CiAgPCEtLSBTZWUgYWxzbyBLZXlDb21ibyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2hvcnRjdXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNob3J0Y3V0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJrZXljYXAiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImtleWNvbWJvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJrZXlzeW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1vdXNlYnV0dG9uIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaG9ydGN1dC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzaG9ydGN1dC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaG9ydGN1dC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleWFjdGlvbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2hvcnRjdXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNob3J0Y3V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2hvcnRjdXQubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIG1lbnVjaG9pY2UuY29udGVudC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1vdXNlYnV0dG9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtb3VzZWJ1dHRvbiIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW91c2VidXR0b24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbW91c2VidXR0b24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW91c2VidXR0b24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vdXNlYnV0dG9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtb3VzZWJ1dHRvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1vdXNlYnV0dG9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNndGV4dC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibXNndGV4dCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ3RleHQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNndGV4dC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2d0ZXh0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNndGV4dC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNndGV4dC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1zZ3RleHQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcHRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9wdGlvbiIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9wdGlvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvcHRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3B0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3B0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvcHRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvcHRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcHRpb25hbC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib3B0aW9uYWwiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcHRpb25hbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvcHRpb25hbC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcHRpb25hbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9wdGlvbmFsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvcHRpb25hbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG9wdGlvbmFsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFyYW1ldGVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwYXJhbWV0ZXIiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJhbWV0ZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGFyYW1ldGVyLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogVHlwZSBvZiB0aGUgUGFyYW1ldGVyOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJhbWV0ZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29tbWFuZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJmdW5jdGlvbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHRpb24iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFyYW1ldGVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwYXJhbWV0ZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwYXJhbWV0ZXIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9tcHQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByb21wdCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY28iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb21wdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwcm9tcHQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvbXB0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9tcHQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByb21wdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByb21wdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb3BlcnR5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcm9wZXJ0eSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb3BlcnR5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb3BlcnR5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb3BlcnR5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9wZXJ0eS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJvcGVydHkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcm9wZXJ0eS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlcGxhY2VhYmxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZXBsYWNlYWJsZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvcHRpb25hbCIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZWdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVwbGFjZWFibGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVwbGFjZWFibGUuZWxlbWVudCAtLT4KICA8IS0tCiAgICBDbGFzczogVHlwZSBvZiBpbmZvcm1hdGlvbiB0aGUgZWxlbWVudCByZXByZXNlbnRzOyBubwogICAgZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXBsYWNlYWJsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb21tYW5kIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImZ1bmN0aW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9wdGlvbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwYXJhbWV0ZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlcGxhY2VhYmxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZXBsYWNlYWJsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlcGxhY2VhYmxlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV0dXJudmFsdWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJldHVybnZhbHVlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXR1cm52YWx1ZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZXR1cm52YWx1ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXR1cm52YWx1ZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldHVybnZhbHVlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZXR1cm52YWx1ZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJldHVybnZhbHVlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2dtbHRhZy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2dtbHRhZyIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2dtbHRhZy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZ21sdGFnLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogVHlwZSBvZiBTR01MIGNvbnN0cnVjdCB0aGUgZWxlbWVudCBuYW1lczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2dtbHRhZy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhdHRyaWJ1dGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYXR0dmFsdWUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZWxlbWVudCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJlbmR0YWciLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZW1wdHl0YWciLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZ2VuZW50aXR5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im51bWNoYXJyZWYiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icGFyYW1lbnRpdHkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icGkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ieG1scGkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic3RhcnR0YWciLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2dtbGNvbW1lbnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icHJlZml4Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5hbWVzcGFjZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsb2NhbG5hbWUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZXNwYWNlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZ21sdGFnLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZ21sdGFnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2dtbHRhZy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0cnVjdGZpZWxkLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdHJ1Y3RmaWVsZCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RydWN0ZmllbGQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3RydWN0ZmllbGQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RydWN0ZmllbGQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdHJ1Y3RmaWVsZC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3RydWN0ZmllbGQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdHJ1Y3RmaWVsZC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0cnVjdG5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN0cnVjdG5hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0cnVjdG5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3RydWN0bmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdHJ1Y3RuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RydWN0bmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3RydWN0bmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN0cnVjdG5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeW1ib2wucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN5bWJvbCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3ltYm9sLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN5bWJvbC5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IFR5cGUgb2Ygc3ltYm9sOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeW1ib2wuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGltaXQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bWJvbC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3ltYm9sLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3ltYm9sLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3lzdGVtaXRlbS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3lzdGVtaXRlbSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjcm9ueW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeXN0ZW1pdGVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN5c3RlbWl0ZW0uZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBUeXBlIG9mIHN5c3RlbSBpdGVtIHRoZSBlbGVtZW50IG5hbWVzOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeXN0ZW1pdGVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbnN0YW50Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImV2ZW50Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImV2ZW50aGFuZGxlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkb21haW5uYW1lIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImZxZG9tYWlubmFtZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpcGFkZHJlc3MiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibmV0bWFzayIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJldGhlcmFkZHJlc3MiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZ3JvdXBuYW1lIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpYnJhcnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWFjcm8iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3NuYW1lIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImZpbGVzeXN0ZW0iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVzb3VyY2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic3lzdGVtbmFtZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ1c2VybmFtZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJuZXdzZ3JvdXAiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icHJvY2VzcyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZXJ2aWNlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlcnZlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkYWVtb24iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3lzdGVtaXRlbS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3lzdGVtaXRlbS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN5c3RlbWl0ZW0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ1cmkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InVyaSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idXJpLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHVyaS5lbGVtZW50IC0tPgogIDwhLS0gVHlwZTogVHlwZSBvZiBVUkk7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InVyaS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idXJpLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB1cmkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB1cmkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2tlbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9rZW4iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRva2VuLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRva2VuLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRva2VuLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9rZW4ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRva2VuLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9rZW4ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0eXBlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0eXBlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0eXBlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHR5cGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idHlwZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InR5cGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHR5cGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0eXBlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idXNlcmlucHV0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ1c2VyaW5wdXQiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idXNlcmlucHV0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHVzZXJpbnB1dC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ1c2VyaW5wdXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InVzZXJpbnB1dC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdXNlcmlucHV0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdXNlcmlucHV0Lm1vZHVsZSAtLT4KICA8IS0tIEdlbmVyYWwgd29yZHMgYW5kIHBocmFzZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFiYnJldi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYWJicmV2IiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0id29yZC5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhYmJyZXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWJicmV2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFiYnJldi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFiYnJldi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWJicmV2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYWJicmV2Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWNyb255bS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYWNyb255bSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9IndvcmQuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWNyb255bS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhY3JvbnltLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFjcm9ueW0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhY3JvbnltLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhY3JvbnltLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYWNyb255bS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdGF0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjaXRhdGlvbiIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0YXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2l0YXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2l0YXRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaXRhdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2l0YXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjaXRhdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdGVyZWZlbnRyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2l0ZXJlZmVudHJ5IiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZWZlbnRyeXRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im1hbnZvbG51bSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaXRlcmVmZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2l0ZXJlZmVudHJ5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdGVyZWZlbnRyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdGVyZWZlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2l0ZXJlZmVudHJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2l0ZXJlZmVudHJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZW50cnl0aXRsZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmZW50cnl0aXRsZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVudHJ5dGl0bGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnl0aXRsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZlbnRyeXRpdGxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZW50cnl0aXRsZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnl0aXRsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5dGl0bGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJuYW12b2xudW0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1hbnZvbG51bSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ3b3JkLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1hbnZvbG51bS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtYW52b2xudW0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWFudm9sbnVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibmFtdm9sbnVtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtYW52b2xudW0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtYW52b2xudW0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRldGl0bGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNpdGV0aXRsZSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0ZXRpdGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNpdGV0aXRsZS5lbGVtZW50IC0tPgogIDwhLS0gUHVid29yazogR2VucmUgb2YgcHVibGlzaGVkIHdvcmsgY2l0ZWQ7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdGV0aXRsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icHVid29yayI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFydGljbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm9vayIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjaGFwdGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBhcnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVmZW50cnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdGlvbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJqb3VybmFsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlcmllcyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZXQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWFudXNjcmlwdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZHJvbSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkdmQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0id2lraSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJnb3BoZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYmJzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImVtYWlsbWVzc2FnZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ3ZWJwYWdlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5ld3Nwb3N0aW5nIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaXRldGl0bGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNpdGV0aXRsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNpdGV0aXRsZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVtcGhhc2lzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJlbXBoYXNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZW1waGFzaXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZW1waGFzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZW1waGFzaXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlbXBoYXNpcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZW1waGFzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBlbXBoYXNpcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvcmVpZ25waHJhc2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZvcmVpZ25waHJhc2UiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZvcmVpZ25waHJhc2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZm9yZWlnbnBocmFzZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmb3JlaWducGhyYXNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZm9yZWlnbnBocmFzZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZm9yZWlnbnBocmFzZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZvcmVpZ25waHJhc2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc3Rlcm0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3NzdGVybSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3N0ZXJtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdsb3NzdGVybS5lbGVtZW50IC0tPgogIDwhLS0gdG8gR2xvc3NFbnRyeSBpZiBHbG9zc3Rlcm0gdXNlZCBpbiB0ZXh0IC0tPgogIDwhLS0KICAgIEJhc2VGb3JtOiBQcm92aWRlcyB0aGUgZm9ybSBvZiBHbG9zc1Rlcm0gdG8gYmUgdXNlZAogICAgZm9yIGluZGV4aW5nCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzdGVybS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmFzZWZvcm0iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmQuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc3Rlcm0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzdGVybS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzdGVybS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZpcnN0dGVybS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmlyc3R0ZXJtIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaXJzdHRlcm0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZmlyc3R0ZXJtLmVsZW1lbnQgLS0+CiAgPCEtLSB0byBHbG9zc0VudHJ5IG9yIG90aGVyIGV4cGxhbmF0aW9uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaXJzdHRlcm0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhc2Vmb3JtIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmlyc3R0ZXJtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmaXJzdHRlcm0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmaXJzdHRlcm0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwaHJhc2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBocmFzZSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGhyYXNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBocmFzZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwaHJhc2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwaHJhc2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBocmFzZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBocmFzZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InF1b3RlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJxdW90ZSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icXVvdGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcXVvdGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icXVvdGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJxdW90ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcXVvdGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBxdW90ZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNzc2NyaXB0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdWJzY3JpcHQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZW1waGFzaXMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlcGxhY2VhYmxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW1ib2wiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZWdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYmFzZS5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3Vic2NyaXB0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN1YnNjcmlwdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJzY3JpcHQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzc3NjcmlwdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3Vic2NyaXB0LmF0dGxpc3QgLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3VwZXJzY3JpcHQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZW1waGFzaXMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlcGxhY2VhYmxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW1ib2wiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZWdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYmFzZS5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3VwZXJzY3JpcHQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3VwZXJzY3JpcHQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3VwZXJzY3JpcHQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzc3NjcmlwdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3VwZXJzY3JpcHQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzc3NjcmlwdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRyYWRlbWFyay5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idHJhZGVtYXJrIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGVjaC5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYmFzZS5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtcGhhc2lzIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0cmFkZW1hcmsuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdHJhZGVtYXJrLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogTW9yZSBwcmVjaXNlbHkgaWRlbnRpZmllcyB0aGUgaXRlbSB0aGUgZWxlbWVudCBuYW1lcyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idHJhZGVtYXJrLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgZGVmYXVsdD0idHJhZGUiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZXJ2aWNlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRyYWRlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlZ2lzdGVyZWQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29weXJpZ2h0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0cmFkZW1hcmsucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRyYWRlbWFyay5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRyYWRlbWFyay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9IndvcmRhc3dvcmQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9IndvcmRhc3dvcmQiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ3b3JkLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndvcmRhc3dvcmQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygd29yZGFzd29yZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ3b3JkYXN3b3JkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0id29yZGFzd29yZC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygd29yZGFzd29yZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHdvcmRhc3dvcmQubW9kdWxlIC0tPgogIDwhLS0gTGlua3MgYW5kIGNyb3NzLXJlZmVyZW5jZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGluay5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGluayIgc3Vic3RpdHV0aW9uR3JvdXA9ImxpbmsuY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmsuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbGluay5lbGVtZW50IC0tPgogIDwhLS0KICAgIEVuZHRlcm06IElEIG9mIGVsZW1lbnQgY29udGFpbmluZyB0ZXh0IHRoYXQgaXMgdG8gYmUKICAgIGZldGNoZWQgZnJvbSBlbHNld2hlcmUgaW4gdGhlIGRvY3VtZW50IHRvIGFwcGVhciBhcwogICAgdGhlIGNvbnRlbnQgb2YgdGhpcyBlbGVtZW50CiAgLS0+CiAgPCEtLSB0byBsaW5rZWQtdG8gb2JqZWN0IC0tPgogIDwhLS0gVHlwZTogRnJlZWx5IGFzc2lnbmFibGUgcGFyYW1ldGVyIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaW5rLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbmR0ZXJtIiB0eXBlPSJ4czpJRFJFRiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ4cmVmc3R5bGUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHJlcS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imxpbmsucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpbmsuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBsaW5rLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib2xpbmsucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9saW5rIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluay5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib2xpbmsuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb2xpbmsuZWxlbWVudCAtLT4KICA8IS0tIFRhcmdldERvY0VudDogTmFtZSBvZiBhbiBlbnRpdHkgdG8gYmUgdGhlIHRhcmdldCBvZiB0aGUgbGluayAtLT4KICA8IS0tCiAgICBMaW5rTW9kZTogSUQgb2YgYSBNb2RlU3BlYyBjb250YWluaW5nIGluc3RydWN0aW9ucyBmb3IKICAgIG9wZXJhdGluZyBvbiB0aGUgZW50aXR5IG5hbWVkIGJ5IFRhcmdldERvY0VudAogIC0tPgogIDwhLS0gTG9jYWxJbmZvOiBJbmZvcm1hdGlvbiB0aGF0IG1heSBiZSBwYXNzZWQgdG8gTW9kZVNwZWMgLS0+CiAgPCEtLSBUeXBlOiBGcmVlbHkgYXNzaWduYWJsZSBwYXJhbWV0ZXIgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9saW5rLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0YXJnZXRkb2NlbnQiIHR5cGU9InhzOkVOVElUWSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaW5rbW9kZSIgdHlwZT0ieHM6SURSRUYiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibG9jYWxpbmZvIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGFyZ2V0ZG9jIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRhcmdldHB0ciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ4cmVmc3R5bGUiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9saW5rLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvbGluay5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG9saW5rLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idWxpbmsucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InVsaW5rIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluay5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idWxpbmsuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdWxpbmsuZWxlbWVudCAtLT4KICA8IS0tIFVSTDogdW5pZm9ybSByZXNvdXJjZSBsb2NhdG9yOyB0aGUgdGFyZ2V0IG9mIHRoZSBVTGluayAtLT4KICA8IS0tIFR5cGU6IEZyZWVseSBhc3NpZ25hYmxlIHBhcmFtZXRlciAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idWxpbmsuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVybCIgdXNlPSJyZXF1aXJlZCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InhyZWZzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idWxpbmsucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHVsaW5rLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdWxpbmsubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmb290bm90ZXJlZi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZm9vdG5vdGVyZWYiIHN1YnN0aXR1dGlvbkdyb3VwPSJ4cmVmLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmb290bm90ZXJlZi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmb290bm90ZXJlZi5lbGVtZW50IC0tPgogIDwhLS0gdG8gZm9vdG5vdGUgY29udGVudCBzdXBwbGllZCBlbHNld2hlcmUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvb3Rub3RlcmVmLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHJlcS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZm9vdG5vdGVyZWYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZvb3Rub3RlcmVmLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZm9vdG5vdGVyZWYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ4cmVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ4cmVmIiBzdWJzdGl0dXRpb25Hcm91cD0ieHJlZi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ieHJlZi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB4cmVmLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgRW5kdGVybTogSUQgb2YgZWxlbWVudCBjb250YWluaW5nIHRleHQgdGhhdCBpcyB0byBiZQogICAgZmV0Y2hlZCBmcm9tIGVsc2V3aGVyZSBpbiB0aGUgZG9jdW1lbnQgdG8gYXBwZWFyIGFzCiAgICB0aGUgY29udGVudCBvZiB0aGlzIGVsZW1lbnQKICAtLT4KICA8IS0tIHRvIGxpbmtlZC10byBvYmplY3QgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InhyZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVuZHRlcm0iIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InhyZWZzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHJlcS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InhyZWYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHhyZWYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB4cmVmLm1vZHVsZSAtLT4KICA8IS0tIFViaXF1aXRvdXMgZWxlbWVudHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFuY2hvci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYW5jaG9yIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYW5jaG9yLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFuY2hvci5lbGVtZW50IC0tPgogIDwhLS0gcmVxdWlyZWQgLS0+CiAgPCEtLSByZXBsYWNlcyBMYW5nIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhbmNob3IuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpZHJlcS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW0uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZW1hcC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InhyZWZsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldmlzaW9uZmxhZy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVmZmVjdGl2aXR5LmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYW5jaG9yLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhbmNob3IuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhbmNob3IubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiZWdpbnBhZ2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJlZ2lucGFnZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJlZ2lucGFnZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiZWdpbnBhZ2UuZWxlbWVudCAtLT4KICA8IS0tIFBhZ2VOdW06IE51bWJlciBvZiBwYWdlIHRoYXQgYmVnaW5zIGF0IHRoaXMgcG9pbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJlZ2lucGFnZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW0uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiZWdpbnBhZ2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJlZ2lucGFnZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJlZ2lucGFnZS5tb2R1bGUgLS0+CiAgPCEtLQogICAgSW5kZXhUZXJtcyBhcHBlYXIgaW4gdGhlIHRleHQgZmxvdyBmb3IgZ2VuZXJhdGluZyBvciBsaW5raW5nIGFuCiAgICBpbmRleC4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXh0ZXJtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmRleHRlcm0iIHN1YnN0aXR1dGlvbkdyb3VwPSJuZHh0ZXJtLmNsYXNzIi8+CiAgPCEtLSBlbmQgb2YgaW5kZXh0ZXJtLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU2NvcGU6IEluZGljYXRlcyB3aGljaCBnZW5lcmF0ZWQgaW5kaWNlcyB0aGUgSW5kZXhUZXJtCiAgICBzaG91bGQgYXBwZWFyIGluOiBHbG9iYWwgKHdob2xlIGRvY3VtZW50IHNldCksIExvY2FsICh0aGlzCiAgICBkb2N1bWVudCBvbmx5KSwgb3IgQWxsIChib3RoKQogIC0tPgogIDwhLS0KICAgIFNpZ25pZmljYW5jZTogV2hldGhlciB0aGlzIEluZGV4VGVybSBpcyB0aGUgbW9zdCBwZXJ0aW5lbnQKICAgIG9mIGl0cyBzZXJpZXMgKFByZWZlcnJlZCkgb3Igbm90IChOb3JtYWwsIHRoZSBkZWZhdWx0KQogIC0tPgogIDwhLS0KICAgIENsYXNzOiBJbmRpY2F0ZXMgdHlwZSBvZiBJbmRleFRlcm07IGRlZmF1bHQgaXMgU2luZ3VsYXIsCiAgICBvciBFbmRPZlJhbmdlIGlmIFN0YXJ0UmVmIGlzIHN1cHBsaWVkOyBTdGFydE9mUmFuZ2UgdmFsdWUKICAgIG11c3QgYmUgc3VwcGxpZWQgZXhwbGljaXRseSBvbiBzdGFydHMgb2YgcmFuZ2VzCiAgLS0+CiAgPCEtLQogICAgU3RhcnRSZWY6IElEIG9mIHRoZSBJbmRleFRlcm0gdGhhdCBzdGFydHMgdGhlIGluZGV4aW5nCiAgICByYW5nZSBlbmRlZCBieSB0aGlzIEluZGV4VGVybQogIC0tPgogIDwhLS0KICAgIFpvbmU6IElEcyBvZiB0aGUgZWxlbWVudHMgdG8gd2hpY2ggdGhlIEluZGV4VGVybSBhcHBsaWVzLAogICAgYW5kIGluZGljYXRlcyB0aGF0IHRoZSBJbmRleFRlcm0gYXBwbGllcyB0byB0aG9zZSBlbnRpcmUKICAgIGVsZW1lbnRzIHJhdGhlciB0aGFuIHRoZSBwb2ludCBhdCB3aGljaCB0aGUgSW5kZXhUZXJtCiAgICBvY2N1cnMKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXh0ZXJtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NvcGUiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhbGwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZ2xvYmFsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxvY2FsIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNpZ25pZmljYW5jZSIgZGVmYXVsdD0ibm9ybWFsIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icHJlZmVycmVkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vcm1hbCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNpbmd1bGFyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InN0YXJ0b2ZyYW5nZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJlbmRvZnJhbmdlIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0YXJ0cmVmIiB0eXBlPSJ4czpJRFJFRiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ6b25lIiB0eXBlPSJ4czpJRFJFRlMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXh0ZXJtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmRleHRlcm0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbmRleHRlcm0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmltc2VjdGVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcmltYXJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJpbWFyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwcmltYXJ5LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU29ydEFzOiBBbHRlcm5hdGUgc29ydCBzdHJpbmcgZm9yIGluZGV4IHNvcnRpbmcsIGUuZy4sCiAgICAiZm91cnRlZW4iIGZvciBhbiBlbGVtZW50IGNvbnRhaW5pbmcgIjE0IgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmltYXJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzb3J0YXMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW1zZWN0ZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByaW1hcnkuYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWNvbmRhcnkiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWNvbmRhcnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2Vjb25kYXJ5LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU29ydEFzOiBBbHRlcm5hdGUgc29ydCBzdHJpbmcgZm9yIGluZGV4IHNvcnRpbmcsIGUuZy4sCiAgICAiZm91cnRlZW4iIGZvciBhbiBlbGVtZW50IGNvbnRhaW5pbmcgIjE0IgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWNvbmRhcnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNvcnRhcyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJpbXNlY3Rlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2Vjb25kYXJ5LmF0dGxpc3QgLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGVydGlhcnkiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXJ0aWFyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0ZXJ0aWFyeS5lbGVtZW50IC0tPgogIDwhLS0KICAgIFNvcnRBczogQWx0ZXJuYXRlIHNvcnQgc3RyaW5nIGZvciBpbmRleCBzb3J0aW5nLCBlLmcuLAogICAgImZvdXJ0ZWVuIiBmb3IgYW4gZWxlbWVudCBjb250YWluaW5nICIxNCIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGVydGlhcnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNvcnRhcyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJpbXNlY3Rlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGVydGlhcnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcmltc2VjdGVyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2Vlc2VlYWxzby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWVzZWVhbHNvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWUuYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWVhbHNvIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VlYWxzby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWVhbHNvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZWFsc28uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWVzZWVhbHNvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KPC94czpzY2hlbWE+CjwhLS0gZW5kIG9mIHNlZWFsc28uYXR0bGlzdCAtLT4KPCEtLSBlbmQgb2Ygc2Vlc2VlYWxzby5tb2R1bGUgLS0+CjwhLS0gZW5kIG9mIGluZGV4dGVybS5jb250ZW50Lm1vZHVsZSAtLT4KPCEtLSBFbmQgb2YgRG9jQm9vayBYTUwgaW5mb3JtYXRpb24gcG9vbCBtb2R1bGUgVjQuM0NSMyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_2/docbook.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgWE1MIERURCBWNC4zQ1IzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkb2Nib29reC5kdGQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDIgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZG9jYm9va3guZHRkLHYgMS4yMCAyMDA0LzAxLzIxIDE4OjU0OjIxIG53YWxzaCBFeHAgJAogIAogIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnkgYW5kIGRpc3RyaWJ1dGUgdGhlIERvY0Jvb2sgWE1MIERURAogIGFuZCBpdHMgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZQogIGlzIGhlcmVieSBncmFudGVkIGluIHBlcnBldHVpdHksIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodAogIG5vdGljZSBhbmQgdGhpcyBwYXJhZ3JhcGggYXBwZWFyIGluIGFsbCBjb3BpZXMuICBUaGUgY29weXJpZ2h0CiAgaG9sZGVycyBtYWtlIG5vIHJlcHJlc2VudGF0aW9uIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGUgRFREIGZvcgogIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3NlZCBvciBpbXBsaWVkCiAgd2FycmFudHkuCiAgCiAgSWYgeW91IG1vZGlmeSB0aGUgRG9jQm9vayBEVEQgaW4gYW55IHdheSwgZXhjZXB0IGZvciBkZWNsYXJpbmcgYW5kCiAgcmVmZXJlbmNpbmcgYWRkaXRpb25hbCBzZXRzIG9mIGdlbmVyYWwgZW50aXRpZXMgYW5kIGRlY2xhcmluZwogIGFkZGl0aW9uYWwgbm90YXRpb25zLCBsYWJlbCB5b3VyIERURCBhcyBhIHZhcmlhbnQgb2YgRG9jQm9vay4gIFNlZQogIHRoZSBtYWludGVuYW5jZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogIAogIFBsZWFzZSBkaXJlY3QgYWxsIHF1ZXN0aW9ucywgYnVnIHJlcG9ydHMsIG9yIHN1Z2dlc3Rpb25zIGZvcgogIGNoYW5nZXMgdG8gdGhlIGRvY2Jvb2tAbGlzdHMub2FzaXMtb3Blbi5vcmcgbWFpbGluZyBsaXN0LiBGb3IgbW9yZQogIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rLy4KLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIFRoaXMgaXMgdGhlIGRyaXZlciBmaWxlIGZvciBWNC4zQ1IzIG9mIHRoZSBEb2NCb29rIERURC4KICBQbGVhc2UgdXNlIHRoZSBmb2xsb3dpbmcgZm9ybWFsIHB1YmxpYyBpZGVudGlmaWVyIHRvIGlkZW50aWZ5IGl0OgogIAogICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjNDUjMvL0VOIgogIAogIEZvciBleGFtcGxlLCBpZiB5b3VyIGRvY3VtZW50J3MgdG9wLWxldmVsIGVsZW1lbnQgaXMgQm9vaywgYW5kCiAgeW91IGFyZSB1c2luZyBEb2NCb29rIGRpcmVjdGx5LCB1c2UgdGhlIEZQSSBpbiB0aGUgRE9DVFlQRQogIGRlY2xhcmF0aW9uOgogIAogIDwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4zQ1IzLy9FTiIKICAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjNiMi9kb2Nib29reC5kdGQiCiAgICAgICAgICAgICAgICAgWy4uLl0+CiAgCiAgT3IsIGlmIHlvdSBoYXZlIGEgaGlnaGVyLWxldmVsIGRyaXZlciBmaWxlIHRoYXQgY3VzdG9taXplcyBEb2NCb29rLAogIHVzZSB0aGUgRlBJIGluIHRoZSBwYXJhbWV0ZXIgZW50aXR5IGRlY2xhcmF0aW9uOgogIAogIDwhRU5USVRZICUgRG9jQm9va0RURCBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuM0NSMy8vRU4iCiAgICAgICAgICAgICAiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjNiMi9kb2Nib29reC5kdGQiPgogICVEb2NCb29rRFREOwogIAogIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24gb24gdGhlIHBhcmFtZXRlcgogIGVudGl0eSBhbmQgbW9kdWxlIHNjaGVtZSB1c2VkIGluIERvY0Jvb2ssIGN1c3RvbWl6aW5nIERvY0Jvb2sgYW5kCiAgcGxhbm5pbmcgZm9yIGludGVyY2hhbmdlLCBhbmQgY2hhbmdlcyBtYWRlIHNpbmNlIHRoZSBsYXN0IHJlbGVhc2UKICBvZiBEb2NCb29rLgotLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIEVuYWJsZSBTR01MIGZlYXR1cmVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSBOb3RhdGlvbiBkZWNsYXJhdGlvbnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiPgogIDx4czppbmNsdWRlIHNjaGVtYUxvY2F0aW9uPSJkYm5vdG54LnhzZCIvPgogIDx4czppbmNsdWRlIHNjaGVtYUxvY2F0aW9uPSJkYnBvb2x4LnhzZCIvPgogIDx4czppbmNsdWRlIHNjaGVtYUxvY2F0aW9uPSJkYmhpZXJ4LnhzZCIvPgogIDx4czppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiIHNjaGVtYUxvY2F0aW9uPSJ4bWwueHNkIi8+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gSVNPIGNoYXJhY3RlciBlbnRpdHkgc2V0cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIGV1cm8gc2lnbiwgVSsyMEFDIE5FVyAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBEVEQgbW9kdWxlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gSW5mb3JtYXRpb24gcG9vbCAuLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFJlZGVjbGFyYXRpb24gcGxhY2Vob2xkZXIgLi4uLi4gLS0+CiAgPCEtLSBEb2N1bWVudCBoaWVyYXJjaHkgLi4uLi4uLi4uLi4uIC0tPgo8L3hzOnNjaGVtYT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIE90aGVyIGdlbmVyYWwgZW50aXRpZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRW5kIG9mIERvY0Jvb2sgWE1MIERURCBWNC4zQ1IzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_2/htmltblx.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgWE1MIEhUTUwgVGFibGUgTW9kdWxlIFY0LjNDUjMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBodG1sdGJseC5tb2QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAyMDAzIEFyYm9yVGV4dCwgSW5jLiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLAogIGFuZCB0aGUgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogaHRtbHRibHgubW9kLHYgMS4xMSAyMDA0LzAxLzIxIDE4OjU0OjIxIG53YWxzaCBFeHAgJAogIAogIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnkgYW5kIGRpc3RyaWJ1dGUgdGhlIERvY0Jvb2sgWE1MIERURAogIGFuZCBpdHMgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZQogIGlzIGhlcmVieSBncmFudGVkIGluIHBlcnBldHVpdHksIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodAogIG5vdGljZSBhbmQgdGhpcyBwYXJhZ3JhcGggYXBwZWFyIGluIGFsbCBjb3BpZXMuICBUaGUgY29weXJpZ2h0CiAgaG9sZGVycyBtYWtlIG5vIHJlcHJlc2VudGF0aW9uIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGUgRFREIGZvcgogIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3NlZCBvciBpbXBsaWVkCiAgd2FycmFudHkuCiAgCiAgSWYgeW91IG1vZGlmeSB0aGUgRG9jQm9vayBYTUwgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbnMgZm9yIGVsZW1lbnRzIHRoYXQgYXJlCiAgaXNvbW9ycGhpYyB0byB0aGUgSFRNTCBlbGVtZW50cy4gT25lIGNvdWxkIGFyZ3VlIHdlIHNob3VsZAogIGluc3RlYWQgaGF2ZSBiYXNlZCBvdXJzZWx2ZXMgb24gdGhlIFhIVE1MIFRhYmxlIE1vZHVsZSwgYnV0IHRoZQogIEhUTUwgb25lIGlzIG1vcmUgbGlrZSB3aGF0IGJyb3dzZXJzIGFyZSBsaWtlbHkgdG8gYWNjZXB0IHRvZGF5CiAgYW5kIHVzZXJzIGFyZSBsaWtlbHkgdG8gdXNlLgogIAogIFRoaXMgbW9kdWxlIGhhcyBiZWVuIGRldmVsb3BlZCBmb3IgdXNlIHdpdGggdGhlIERvY0Jvb2sgVjQuMwogICJ1bmlvbiB0YWJsZSBtb2RlbCIgaW4gd2hpY2ggZWxlbWVudHMgYW5kIGF0dGxpc3RzIGNvbW1vbiB0byBib3RoCiAgbW9kZWxzIGFyZSBkZWZpbmVkIChhcyB0aGUgdW5pb24pIGluIHRoZSBDQUxTIHRhYmxlIG1vZHVsZSBieQogIHNldHRpbmcgdmFyaW91cyBwYXJhbWV0ZXIgZW50aXRpZXMgYXBwcm9wcmlhdGVseSBpbiB0aGlzIGZpbGUuCiAgCiAgSW4gRFREIGRyaXZlciBmaWxlcyByZWZlcnJpbmcgdG8gdGhpcyBtb2R1bGUsIHBsZWFzZSB1c2UgYW4gZW50aXR5CiAgZGVjbGFyYXRpb24gdGhhdCB1c2VzIHRoZSBwdWJsaWMgaWRlbnRpZmllciBzaG93biBiZWxvdzoKICAKICA8IUVOVElUWSAlIGh0bWx0YmwgUFVCTElDCiAgIi0vL09BU0lTLy9FTEVNRU5UUyBEb2NCb29rIFhNTCBIVE1MIFRhYmxlcyBWNC4zQ1IzLy9FTiIKICAiaHRtbHRibHgubW9kIj4KICAlaHRtbHRibDsKICAKICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHRoZSBwYXJhbWV0ZXIKICBlbnRpdHkgYW5kIG1vZHVsZSBzY2hlbWUgdXNlZCBpbiBEb2NCb29rLCBjdXN0b21pemluZyBEb2NCb29rIGFuZAogIHBsYW5uaW5nIGZvciBpbnRlcmNoYW5nZSwgYW5kIGNoYW5nZXMgbWFkZSBzaW5jZSB0aGUgbGFzdCByZWxlYXNlCiAgb2YgRG9jQm9vay4KLS0+CjwhLS0gPT09PT09PT09PT09PT09PT09PT09PT0gWEhUTUwgVGFibGVzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4KICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiBzY2hlbWFMb2NhdGlvbj0ieG1sLnhzZCIvPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJodG1sLmNvcmVhdHRycyI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJ4czpJRCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aXRsZSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBEb2VzIG5vdCBjb250YWluIGxhbmcgb3IgZGlyIGJlY2F1c2UgdGhleSBhcmUgaW4gJWNvbW1vbi5hdHRyaWJzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpMThuIj4KICAgIDx4czphdHRyaWJ1dGUgcmVmPSJ4bWw6bGFuZyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImV2ZW50cyI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uY2xpY2siLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25kYmxjbGljayIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm1vdXNlZG93biIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm1vdXNldXAiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25tb3VzZW92ZXIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25tb3VzZW1vdmUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25tb3VzZW91dCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmtleXByZXNzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ua2V5ZG93biIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmtleXVwIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXR0cnMiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaHRtbC5jb3JlYXR0cnMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImkxOG4iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImV2ZW50cyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNlbGxoYWxpZ24iPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imp1c3RpZnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXJvZmYiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjZWxsdmFsaWduIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYmFzZWxpbmUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbGdyb3VwIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbGdyb3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czplbGVtZW50IG5hbWU9ImNvbCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0ciI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRkIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0aCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJ0YWJlbnRyeS5taXgiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRoLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czplbGVtZW50IG5hbWU9InRkIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czpncm91cCByZWY9InRhYmVudHJ5Lm1peCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbGdyb3VwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXR0cnMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3BhbiIgZGVmYXVsdD0iMSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2VsbGhhbGlnbiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2VsbHZhbGlnbiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF0dHJzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYW4iIGRlZmF1bHQ9IjEiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNlbGxoYWxpZ24iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNlbGx2YWxpZ24iLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0ci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF0dHJzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjZWxsaGFsaWduIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjZWxsdmFsaWduIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJnY29sb3IiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0aC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF0dHJzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFiYnIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXhpcyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoZWFkZXJzIiB0eXBlPSJ4czpJRFJFRlMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NvcGUiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyb3ciLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29sIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJvd2dyb3VwIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbGdyb3VwIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd3NwYW4iIGRlZmF1bHQ9IjEiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc3BhbiIgZGVmYXVsdD0iMSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2VsbGhhbGlnbiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2VsbHZhbGlnbiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJub3dyYXAiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3dyYXAiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmdjb2xvciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoZWlnaHQiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0ZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF0dHJzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFiYnIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXhpcyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoZWFkZXJzIiB0eXBlPSJ4czpJRFJFRlMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NvcGUiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyb3ciLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29sIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJvd2dyb3VwIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbGdyb3VwIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd3NwYW4iIGRlZmF1bHQ9IjEiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc3BhbiIgZGVmYXVsdD0iMSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2VsbGhhbGlnbiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2VsbHZhbGlnbiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJub3dyYXAiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3dyYXAiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmdjb2xvciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoZWlnaHQiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgogIDwhLS0KICAgIFNldCB1cCB0byByZWFkIGluIHRoZSBDQUxTIG1vZGVsIGNvbmZpZ3VyZWQgdG8KICAgIG1lcmdlIHdpdGggdGhlIFhIVE1MIHRhYmxlIG1vZGVsCiAgLS0+CiAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRhYmxlcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBBZGQgbGFiZWwgYW5kIHJvbGUgYXR0cmlidXRlcyB0byB0YWJsZSBhbmQgaW5mb3JtYWx0YWJsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYm9keWF0dCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZsb2F0c3R5bGUiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgQWRkIGNvbW1vbiBhdHRyaWJ1dGVzIHRvIFRhYmxlLCBUR3JvdXAsIFRCb2R5LCBUSGVhZCwgVEZvb3QsIFJvdywgCiAgICBFbnRyeVRibCwgYW5kIEVudHJ5IChhbmQgSW5mb3JtYWxUYWJsZSBlbGVtZW50KS4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdXIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aXRsZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaTE4biIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXZlbnRzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YWJsZXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb21tb24udGFibGUuYXR0cmlicyI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJib2R5YXR0Ii8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN1ciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBDb250ZW50IG1vZGVsIGZvciBUYWJsZSAodGhhdCBhbHNvIGFsbG93cyBIVE1MIHRhYmxlcykgLS0+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRibC50YWJsZS5tZGwiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGV4dG9iamVjdCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJncmFwaGljIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtZWRpYW9iamVjdCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGdyb3VwIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNhcHRpb24iLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb2wiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sZ3JvdXAiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGhlYWQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGZvb3QiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGJvZHkiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRyIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmNvbXBsZXhUeXBlPgogIDx4czpncm91cCBuYW1lPSJpbmZvcm1hbC50YmwudGFibGUubWRsIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ3JhcGhpYyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVkaWFvYmplY3QiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRncm91cCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbGdyb3VwIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRoZWFkIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRmb290Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRib2R5Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0ciIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8IS0tIEF0dHJpYnV0ZXMgZm9yIFRhYmxlIChpbmNsdWRpbmcgSFRNTCBvbmVzKSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGJsLnRhYmxlLmF0dCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRhYnN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRvY2VudHJ5IiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hvcnRlbnRyeSIgdHlwZT0ieWVzb3Juby5hdHR2YWxzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9yaWVudCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBvcnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGFuZCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZ3dpZGUiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdW1tYXJ5Ii8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJydWxlcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vbmUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZ3JvdXBzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJvd3MiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29scyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhbGwiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2VsbHNwYWNpbmciLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2VsbHBhZGRpbmciLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsZWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNlbnRlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiZ2NvbG9yIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJ0YmwuZnJhbWUuYXR0dmFsIj4KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idm9pZCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFib3ZlIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYmVsb3ciLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJoc2lkZXMiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaHMiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaHMiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ2c2lkZXMiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3giLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3JkZXIiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3Bib3QiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhbGwiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzaWRlcyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vbmUiLz4KICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgPC94czpzaW1wbGVUeXBlPgogIDwhLS0gQWxsb3cgZWl0aGVyIG9iamVjdHMgb3IgaW5saW5lczsgYmV3YXJlIG9mIFJFcyBiZXR3ZWVuIGVsZW1lbnRzLiAtLT4KICA8eHM6Z3JvdXAgbmFtZT0idGJsLmVudHJ5Lm1kbCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6Z3JvdXAgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czpncm91cCByZWY9InRhYmVudHJ5Lm1peCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8IS0tCiAgICB0aGVhZCwgdGZvb3QsIGFuZCB0Ym9keSBhcmUgZGVmaW5lZCBpbiBib3RoIHRhYmxlIG1vZGVscywKICAgIHNvIHdlIHNldCB1cCBwYXJhbWV0ZXIgZW50aXRpZXMgdG8gZGVmaW5lIHVuaW9uIG1vZGVscyBmb3IgdGhlbQogIC0tPgogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0YmwuaGRmdC5tZGwiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idHIiLz4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sc3BlYyIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJvdyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgPC94czpjaG9pY2U+CiAgPC94czpjb21wbGV4VHlwZT4KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGJsLnRib2R5Lm1kbCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0ciIvPgogICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyb3ciLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Y29tcGxleFR5cGU+CjwveHM6c2NoZW1hPgo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_2/xml.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSI+CiAgPHhzOmltcG9ydCBzY2hlbWFMb2NhdGlvbj0iZG9jYm9vay54c2QiLz4KICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhc2UiLz4KICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhbmciIHR5cGU9InhzOk5NVE9LRU4iLz4KPC94czpzY2hlbWE+Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_3/calstblx.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgQ0FMUyBUYWJsZSBNb2RlbCBWNC4yIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBjYWxzdGJseC5tb2QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDIgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogIFRoaXMgRFREIGlzIGJhc2VkIG9uIHRoZSBDQUxTIFRhYmxlIE1vZGVsCiAgUFVCTElDICItLy9VU0EtRE9ELy9EVEQgVGFibGUgTW9kZWwgOTUxMDEwLy9FTiIKICAKICAkSWQ6IGNhbHN0Ymx4LmR0ZCx2IDEuMTIgMjAwMi8wNy8xNyAxNToyNjoxNiBud2Fsc2ggRXhwICQKICAKICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5IGFuZCBkaXN0cmlidXRlIHRoZSBEb2NCb29rIERURAogIGFuZCBpdHMgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZQogIGlzIGhlcmVieSBncmFudGVkIGluIHBlcnBldHVpdHksIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodAogIG5vdGljZSBhbmQgdGhpcyBwYXJhZ3JhcGggYXBwZWFyIGluIGFsbCBjb3BpZXMuICBUaGUgY29weXJpZ2h0CiAgaG9sZGVycyBtYWtlIG5vIHJlcHJlc2VudGF0aW9uIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGUgRFREIGZvcgogIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3NlZCBvciBpbXBsaWVkCiAgd2FycmFudHkuCiAgCiAgSWYgeW91IG1vZGlmeSB0aGUgRG9jQm9vayBEVEQgaW4gYW55IHdheSwgZXhjZXB0IGZvciBkZWNsYXJpbmcgYW5kCiAgcmVmZXJlbmNpbmcgYWRkaXRpb25hbCBzZXRzIG9mIGdlbmVyYWwgZW50aXRpZXMgYW5kIGRlY2xhcmluZwogIGFkZGl0aW9uYWwgbm90YXRpb25zLCBsYWJlbCB5b3VyIERURCBhcyBhIHZhcmlhbnQgb2YgRG9jQm9vay4gIFNlZQogIHRoZSBtYWludGVuYW5jZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogIAogIFBsZWFzZSBkaXJlY3QgYWxsIHF1ZXN0aW9ucywgYnVnIHJlcG9ydHMsIG9yIHN1Z2dlc3Rpb25zIGZvcgogIGNoYW5nZXMgdG8gdGhlIGRvY2Jvb2tAbGlzdHMub2FzaXMtb3Blbi5vcmcgbWFpbGluZyBsaXN0LiBGb3IgbW9yZQogIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rLy4KLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIFRoaXMgbW9kdWxlIGNvbnRhaW5zIHRoZSBkZWZpbml0aW9ucyBmb3IgdGhlIENBTFMgVGFibGUgTW9kZWwKICBjb252ZXJ0ZWQgdG8gWE1MLgotLT4KPCEtLQogIFRoZXNlIGRlZmluaXRpb25zIGFyZSBub3QgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgdGFibGUgbW9kZWwsIGJ1dCBhcmUKICB1c2VkIGluIHRoZSBkZWZhdWx0IENBTFMgdGFibGUgbW9kZWwgYW5kIGFyZSB1c3VhbGx5IGRlZmluZWQgZWxzZXdoZXJlCiAgKGFuZCBwcmlvciB0byB0aGUgaW5jbHVzaW9uIG9mIHRoaXMgdGFibGUgbW9kdWxlKSBpbiBhIENBTFMgRFRELgotLT4KPCEtLQogIG5vIGlmIHplcm8ocyksCiAgeWVzIGlmIGFueSBvdGhlciBkaWdpdHMgdmFsdWUKLS0+Cjx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+CiAgPHhzOnNpbXBsZVR5cGUgbmFtZT0ieWVzb3JubyI+CiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIi8+CiAgPC94czpzaW1wbGVUeXBlPgogIDx4czpncm91cCBuYW1lPSJ0aXRsZXMiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8IS0tIGRlZmF1bHQgZm9yIHVzZSBpbiBlbnRyeSBjb250ZW50IC0tPgogIDwhLS0KICAgIFRoZSBwYXJhbWV0ZXIgZW50aXRpZXMgYXMgZGVmaW5lZCBiZWxvdyBwcm92aWRlIHRoZSBDQUxTIHRhYmxlIG1vZGVsCiAgICBhcyBwdWJsaXNoZWQgKGFzIHBhcnQgb2YgdGhlIEV4YW1wbGUgRFREKSBpbiBNSUwtSERCSy0yODAwMS4KICAgIAogICAgVGhlc2UgZm9sbG93aW5nIGRlY2xhcmF0aW9ucyBwcm92aWRlIHRoZSBDQUxTLWNvbXBsaWFudCBkZWZhdWx0IGRlZmluaXRpb25zCiAgICBmb3IgdGhlc2UgZW50aXRpZXMuICBIb3dldmVyLCB0aGVzZSBlbnRpdGllcyBjYW4gYW5kIHNob3VsZCBiZSByZWRlZmluZWQKICAgIChieSBnaXZpbmcgdGhlIGFwcHJvcHJpYXRlIHBhcmFtZXRlciBlbnRpdHkgZGVjbGFyYXRpb24ocykgcHJpb3IgdG8gdGhlCiAgICByZWZlcmVuY2UgdG8gdGhpcyBUYWJsZSBNb2RlbCBkZWNsYXJhdGlvbiBzZXQgZW50aXR5KSB0byBmaXQgdGhlIG5lZWRzCiAgICBvZiB0aGUgY3VycmVudCBhcHBsaWNhdGlvbi4KICAtLT4KICA8eHM6Z3JvdXAgbmFtZT0idGJsLnRhYmxlLXRpdGxlcy5tZGwiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Z3JvdXAgcmVmPSJ0aXRsZXMiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0idGJsLnRhYmxlLW1haW4ubWRsIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRncm91cCIvPgogICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJncmFwaGljIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YmwudGFibGUuYXR0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGFic3R5bGUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idG9jZW50cnkiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hvcnRlbnRyeSIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcmllbnQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwb3J0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxhbmQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGd3aWRlIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGJsLnRncm91cC5tZGwiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbHNwZWMiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzcGFuc3BlYyIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGhlYWQiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRmb290Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGJvZHkiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpjb21wbGV4VHlwZT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGJsLnRncm91cC5hdHQiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0Z3JvdXBzdHlsZSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRibC5oZGZ0Lm1kbCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sc3BlYyIvPgogICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyb3ciLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpjb21wbGV4VHlwZT4KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGJsLnJvdy5tZGwiPgogICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZW50cnkiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbnRyeXRibCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpjb21wbGV4VHlwZT4KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGJsLmVudHJ5dGJsLm1kbCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sc3BlYyIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNwYW5zcGVjIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aGVhZCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRib2R5Ii8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Y29tcGxleFR5cGU+CiAgPCEtLSA9PT09PSAgRWxlbWVudCBhbmQgYXR0cmlidXRlIGRlY2xhcmF0aW9ucyBmb2xsb3cuID09PT09IC0tPgogIDx4czplbGVtZW50IG5hbWU9InRhYmxlIiBzdWJzdGl0dXRpb25Hcm91cD0iZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNvbXBsZXhDb250ZW50PgogICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idGJsLnRhYmxlLm1kbCI+CiAgICAgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YWJsZS5hdHRsaXN0Ii8+CiAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgIDwveHM6Y29tcGxleENvbnRlbnQ+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFibGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZyYW1lIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3Bib3QiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYWxsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNpZGVzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vbmUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd3NlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGJsLnRhYmxlLmF0dCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYm9keWF0dCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRncm91cCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjb21wbGV4Q29udGVudD4KICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRibC50Z3JvdXAubWRsIj4KICAgICAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRncm91cC5hdHRsaXN0Ii8+CiAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgIDwveHM6Y29tcGxleENvbnRlbnQ+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGdyb3VwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzIiB1c2U9InJlcXVpcmVkIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YmwudGdyb3VwLmF0dCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ianVzdGlmeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjaGFyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhcm9mZiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbHNwZWMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb2xzcGVjLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xzcGVjLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xudW0iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sbmFtZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2x3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ianVzdGlmeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjaGFyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhcm9mZiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3BhbnNwZWMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzcGFuc3BlYy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3BhbnNwZWMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWVzdCIgdXNlPSJyZXF1aXJlZCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lZW5kIiB1c2U9InJlcXVpcmVkIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYW5uYW1lIiB1c2U9InJlcXVpcmVkIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHNlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsZWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNlbnRlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJqdXN0aWZ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNoYXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyb2ZmIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0aGVhZCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjb21wbGV4Q29udGVudD4KICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRibC5oZGZ0Lm1kbCI+CiAgICAgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0aGVhZC5hdHRsaXN0Ii8+CiAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgIDwveHM6Y29tcGxleENvbnRlbnQ+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGhlYWQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtaWRkbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm90dG9tIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN1ciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGZvb3QiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+CiAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0YmwuaGRmdC5tZGwiPgogICAgICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGZvb3QuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRmb290LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRib2R5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJvdyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0Ym9keS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGJvZHkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtaWRkbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm90dG9tIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN1ciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icm93Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNvbXBsZXhDb250ZW50PgogICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idGJsLnJvdy5tZGwiPgogICAgICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm93LmF0dGxpc3QiLz4KICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgPC94czpjb21wbGV4Q29udGVudD4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyb3cuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd3NlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImVudHJ5dGJsIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNvbXBsZXhDb250ZW50PgogICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idGJsLmVudHJ5dGJsLm1kbCI+CiAgICAgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlbnRyeXRibC5hdHRsaXN0Ii8+CiAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgIDwveHM6Y29tcGxleENvbnRlbnQ+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZW50cnl0YmwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHMiIHVzZT0icmVxdWlyZWQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRibC50Z3JvdXAuYXR0Ii8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbG5hbWUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3Bhbm5hbWUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZXN0Ii8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWVlbmQiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd3NlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imp1c3RpZnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXJvZmYiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJlbnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0YmwuZW50cnkubWRsIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbnRyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sbmFtZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lc3QiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZWVuZCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFubmFtZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtb3Jlcm93cyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ianVzdGlmeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjaGFyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhcm9mZiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3RhdGUiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KPC94czpzY2hlbWE+CjwhLS0gRW5kIG9mIERvY0Jvb2sgQ0FMUyBUYWJsZSBNb2RlbCBWNC4yIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_3/dbhierx.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgZG9jdW1lbnQgaGllcmFyY2h5IG1vZHVsZSBWNC4yIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkYmhpZXJ4Lm1vZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDIgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZGJoaWVyeC5tb2QsdiAxLjE5IDIwMDIvMDcvMTcgMTU6MjY6MTYgbndhbHNoIEV4cCAkCiAgCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSBhbmQgZGlzdHJpYnV0ZSB0aGUgRG9jQm9vayBEVEQKICBhbmQgaXRzIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUKICBpcyBoZXJlYnkgZ3JhbnRlZCBpbiBwZXJwZXR1aXR5LCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQKICBub3RpY2UgYW5kIHRoaXMgcGFyYWdyYXBoIGFwcGVhciBpbiBhbGwgY29waWVzLiAgVGhlIGNvcHlyaWdodAogIGhvbGRlcnMgbWFrZSBubyByZXByZXNlbnRhdGlvbiBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhlIERURCBmb3IKICBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzZWQgb3IgaW1wbGllZAogIHdhcnJhbnR5LgogIAogIElmIHlvdSBtb2RpZnkgdGhlIERvY0Jvb2sgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBvdmVyYWxsIGRvY3VtZW50CiAgaGllcmFyY2hpZXMgb2YgRG9jQm9vayBkb2N1bWVudHMuICBJdCBjb3ZlcnMgY29tcHV0ZXIgZG9jdW1lbnRhdGlvbgogIG1hbnVhbHMgYW5kIG1hbnVhbCBmcmFnbWVudHMsIGFzIHdlbGwgYXMgcmVmZXJlbmNlIGVudHJpZXMgKHN1Y2ggYXMKICBtYW4gcGFnZXMpIGFuZCB0ZWNobmljYWwgam91cm5hbHMgb3IgYW50aG9sb2dpZXMgY29udGFpbmluZwogIGFydGljbGVzLgogIAogIFRoaXMgbW9kdWxlIGRlcGVuZHMgb24gdGhlIERvY0Jvb2sgaW5mb3JtYXRpb24gcG9vbCBtb2R1bGUuICBBbGwKICBlbGVtZW50cyBhbmQgZW50aXRpZXMgcmVmZXJlbmNlZCBidXQgbm90IGRlZmluZWQgaGVyZSBhcmUgYXNzdW1lZAogIHRvIGJlIGRlZmluZWQgaW4gdGhlIGluZm9ybWF0aW9uIHBvb2wgbW9kdWxlLgogIAogIEluIERURCBkcml2ZXIgZmlsZXMgcmVmZXJyaW5nIHRvIHRoaXMgbW9kdWxlLCBwbGVhc2UgdXNlIGFuIGVudGl0eQogIGRlY2xhcmF0aW9uIHRoYXQgdXNlcyB0aGUgcHVibGljIGlkZW50aWZpZXIgc2hvd24gYmVsb3c6CiAgCiAgPCFFTlRJVFkgJSBkYmhpZXIgUFVCTElDCiAgIi0vL09BU0lTLy9FTEVNRU5UUyBEb2NCb29rIERvY3VtZW50IEhpZXJhcmNoeSBWNC4yLy9FTiIKICAiZGJoaWVyeC5tb2QiPgogICVkYmhpZXI7CiAgCiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiB0aGUgcGFyYW1ldGVyCiAgZW50aXR5IGFuZCBtb2R1bGUgc2NoZW1lIHVzZWQgaW4gRG9jQm9vaywgY3VzdG9taXppbmcgRG9jQm9vayBhbmQKICBwbGFubmluZyBmb3IgaW50ZXJjaGFuZ2UsIGFuZCBjaGFuZ2VzIG1hZGUgc2luY2UgdGhlIGxhc3QgcmVsZWFzZQogIG9mIERvY0Jvb2suCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRW50aXRpZXMgZm9yIG1vZHVsZSBpbmNsdXNpb25zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIEVudGl0aWVzIGZvciBlbGVtZW50IGNsYXNzZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+Cjx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXBwZW5kaXguY2xhc3MiIGFic3RyYWN0PSJ0cnVlIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYXBwZW5kaXhpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYm9va2NvbXBvbmVudC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRvY2NoYXAiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXBwZW5kaXguYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJ0aWNsZS5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJkaXYudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhcnRpY2xlaW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0b2NjaGFwIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJsb3QiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmdyb3VwIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFwcGVuZGl4LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFja25vIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFydGljbGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYm9vay5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJkaXYudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJib29raW5mbyIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImRlZGljYXRpb24iLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idG9jIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxvdCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnbG9zc2FyeSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9ncmFwaHkiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icHJlZmFjZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjaGFwdGVyLmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlZmVyZW5jZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJ0Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFydGljbGUuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYXBwZW5kaXguY2xhc3MiLz4KICAgICAgICAgIDx4czpncm91cCByZWY9ImluZGV4LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbG9waG9uIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJvb2suYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2hhcHRlci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJlZ2lucGFnZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJjaGFwdGVyaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0b2NjaGFwIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYm9va2NvbXBvbmVudC5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNoYXB0ZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmdyb3VwIG5hbWU9ImluZGV4LmNsYXNzIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5kZXgiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzZXRpbmRleCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZlbnRyeS5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJlZ2lucGFnZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZlbnRyeWluZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmbWV0YSIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlbWFyayIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlZm5hbWVkaXYiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmc3lub3BzaXNkaXYiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdDEiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3Rpb24iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdGlvbi5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNlY3Rpb25pbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRpdmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0aW9uLmNsYXNzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0aW9uLmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Rpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmdyb3VwIG5hbWU9Im5hdi5jbGFzcyI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRvYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxvdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZGV4Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZ2xvc3NhcnkiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9ncmFwaHkiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBSZWRlY2xhcmF0aW9uIHBsYWNlaG9sZGVyIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgIEZvciByZWRlY2xhcmluZyBlbnRpdGllcyB0aGF0IGFyZSBkZWNsYXJlZCBhZnRlciB0aGlzIHBvaW50IHdoaWxlCiAgICByZXRhaW5pbmcgdGhlaXIgcmVmZXJlbmNlcyB0byB0aGUgZW50aXRpZXMgdGhhdCBhcmUgZGVjbGFyZWQgYmVmb3JlCiAgICB0aGlzIHBvaW50CiAgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRW50aXRpZXMgZm9yIGVsZW1lbnQgbWl4dHVyZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFRoZSBEb2NCb29rIFRDIG1heSBwcm9kdWNlIGFuIG9mZmljaWFsIGZvcm1zIG1vZHVsZSBmb3IgRG9jQm9vay4gLS0+CiAgPCEtLSBUaGlzIFBFIHByb3ZpZGVzIHRoZSBob29rIGJ5IHdoaWNoIGl0IGNhbiBiZSBpbnNlcnRlZCBpbnRvIHRoZSBEVEQuIC0tPgogIDx4czpncm91cCBuYW1lPSJkaXZjb21wb25lbnQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb21wb3VuZC5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJnZW5vYmouY2xhc3MiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZGVzY29iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InJlZmNvbXBvbmVudC5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbXBvdW5kLmNsYXNzIi8+CiAgICAgIDx4czpncm91cCByZWY9Imdlbm9iai5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJkZXNjb2JqLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iaW5kZXhkaXZjb21wb25lbnQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaXRlbWl6ZWRsaXN0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ib3JkZXJlZGxpc3QiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2YXJpYWJsZWxpc3QiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzaW1wbGVsaXN0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhbmNob3IiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZW1hcmsiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InJlZm5hbWUuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGVjaC5jaGFyLmNsYXNzIi8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InBhcnRjb250ZW50Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFwcGVuZGl4LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY2hhcHRlci5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcnRpY2xlLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJlZmFjZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icmVmZXJlbmNlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJyZWZpbmxpbmUuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ4cmVmLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdlbi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRlY2guY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZG9jaW5mby5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJyZWZjbGFzcy5jaGFyLm1peCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhcHBsaWNhdGlvbiIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDwhLS0gUmVkZWNsYXJhdGlvbiBwbGFjZWhvbGRlciAyIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tCiAgICBGb3IgcmVkZWNsYXJpbmcgZW50aXRpZXMgdGhhdCBhcmUgZGVjbGFyZWQgYWZ0ZXIgdGhpcyBwb2ludCB3aGlsZQogICAgcmV0YWluaW5nIHRoZWlyIHJlZmVyZW5jZXMgdG8gdGhlIGVudGl0aWVzIHRoYXQgYXJlIGRlY2xhcmVkIGJlZm9yZQogICAgdGhpcyBwb2ludAogIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVudGl0aWVzIGZvciBjb250ZW50IG1vZGVscyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmdyb3VwIG5hbWU9ImRpdi50aXRsZS5jb250ZW50Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic3VidGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlYWJicmV2Ii8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InN1YnRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZWFiYnJldiIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJzZWN0LnRpdGxlLmNvbnRlbnQiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzdWJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGVhYmJyZXYiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0icmVmc2VjdC50aXRsZS5jb250ZW50Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic3VidGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlYWJicmV2Ii8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImJvb2tjb21wb25lbnQuY29udGVudCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRpdmNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0MSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3Rpb24uY2xhc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0MSIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3Rpb24uY2xhc3MiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFNldCBhbmQgU2V0SW5mbyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2V0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZGl2LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2V0aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0b2MiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJib29rLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNldGluZGV4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNldC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZXQuZWxlbWVudCAtLT4KICA8IS0tIEZQSTogU0dNTCBmb3JtYWwgcHVibGljIGlkZW50aWZpZXIgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZnBpIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNldC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldGluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNldGluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXRpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNldGluZm8uZWxlbWVudCAtLT4KICA8IS0tCiAgICBDb250ZW50czogSURzIG9mIHRoZSBUb0MsIEJvb2tzLCBhbmQgU2V0SW5kZXggdGhhdCBjb21wcmlzZQogICAgdGhlIHNldCwgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIGFwcGVhcmFuY2UKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2V0aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGVudHMiIHR5cGU9InhzOklEUkVGUyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2V0aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2V0aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNldGluZm8ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHNldC5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBCb29rIGFuZCBCb29rSW5mbyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJib29rLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJib29rIiBzdWJzdGl0dXRpb25Hcm91cD0iYm9vay5jbGFzcyIvPgogIDwhLS0gZW5kIG9mIGJvb2suZWxlbWVudCAtLT4KICA8IS0tIEZQSTogU0dNTCBmb3JtYWwgcHVibGljIGlkZW50aWZpZXIgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJvb2suYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZwaSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJib29rLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBib29rLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYm9vay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJvb2tpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJib29raW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJvb2tpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJvb2tpbmZvLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQ29udGVudHM6IElEcyBvZiB0aGUgVG9DLCBMb1RzLCBQcmVmYWNlcywgUGFydHMsIENoYXB0ZXJzLAogICAgQXBwZW5kaXhlcywgUmVmZXJlbmNlcywgR0xvc3NhcnksIEJpYmxpb2dyYXBoeSwgYW5kIGluZGV4ZXMKICAgIGNvbXByaXNpbmcgdGhlIEJvb2ssIGluIHRoZSBvcmRlciBvZiB0aGVpciBhcHBlYXJhbmNlCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJvb2tpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50cyIgdHlwZT0ieHM6SURSRUZTIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJib29raW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYm9va2luZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBib29raW5mby5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgYm9vay5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBEZWRpY2F0aW9uLCBUb0MsIGFuZCBMb1QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJkZWRpY2F0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJkZWRpY2F0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImxlZ2Fsbm90aWNlLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJkZWRpY2F0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGRlZGljYXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGVkaWNhdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRlZGljYXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGRlZGljYXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBkZWRpY2F0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sb3Bob24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbG9waG9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRleHRvYmplY3QubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbG9waG9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbG9waG9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbG9waG9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sb3Bob24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbG9waG9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29sb3Bob24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2Mucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvYyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2Zyb250Ii8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idG9jcGFydCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0b2NjaGFwIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NiYWNrIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvYy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2MuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvYy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdG9jLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jZnJvbnQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2Zyb250Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jZnJvbnQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jZnJvbnQuZWxlbWVudCAtLT4KICA8IS0tIHRvIGVsZW1lbnQgdGhhdCB0aGlzIGVudHJ5IHJlcHJlc2VudHMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2Zyb250LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2Zyb250LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2Nmcm9udC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRvY2Zyb250Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2VudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jZW50cnkuZWxlbWVudCAtLT4KICA8IS0tIHRvIGVsZW1lbnQgdGhhdCB0aGlzIGVudHJ5IHJlcHJlc2VudHMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW0uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdG9jZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY3BhcnQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY3BhcnQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jZW50cnkiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2NoYXAiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jcGFydC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NwYXJ0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY3BhcnQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NwYXJ0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NwYXJ0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jcGFydC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2NoYXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2NoYXAiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jZW50cnkiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2xldmVsMSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NjaGFwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRvY2NoYXAuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jY2hhcC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jY2hhcC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdG9jY2hhcC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRvY2NoYXAubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2xldmVsMSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jbGV2ZWwyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsMS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWwxLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWwxLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2xldmVsMiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jbGV2ZWwzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsMi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWwyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWwyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2xldmVsMyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jbGV2ZWw0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsMy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWwzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWwzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2xldmVsNCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jbGV2ZWw1Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsNC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWw0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWw0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2xldmVsNSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NsZXZlbDUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jbGV2ZWw1LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2xldmVsNS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsNS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdG9jbGV2ZWw1LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jbGV2ZWw1Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jYmFjay5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jYmFjayI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2JhY2suYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jYmFjay5lbGVtZW50IC0tPgogIDwhLS0gdG8gZWxlbWVudCB0aGF0IHRoaXMgZW50cnkgcmVwcmVzZW50cyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jYmFjay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW0uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NiYWNrLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NiYWNrLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jYmFjay5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgdG9jLmNvbnRlbnQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsb3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxvdCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImxvdGVudHJ5Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxvdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsb3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibG90LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsb3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxvdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGxvdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxvdGVudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJsb3RlbnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxvdGVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxvdGVudHJ5LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU3JjQ3JlZGl0OiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgc291cmNlIG9mIHRoZSBlbnRyeSwKICAgIGFzIGZvciBhIGxpc3Qgb2YgaWxsdXN0cmF0aW9ucwogIC0tPgogIDwhLS0gbGlua2VuZDogdG8gZWxlbWVudCB0aGF0IHRoaXMgZW50cnkgcmVwcmVzZW50cyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibG90ZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3JjY3JlZGl0Ii8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsb3RlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbG90ZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBsb3RlbnRyeS5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgbG90LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEFwcGVuZGl4LCBDaGFwdGVyLCBQYXJ0LCBQcmVmYWNlLCBSZWZlcmVuY2UsIFBhcnRJbnRybyAuLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFwcGVuZGl4LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcHBlbmRpeCIgc3Vic3RpdHV0aW9uR3JvdXA9ImFwcGVuZGl4LmNsYXNzIi8+CiAgPCEtLSBlbmQgb2YgYXBwZW5kaXguZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXBwZW5kaXguYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFwcGVuZGl4LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhcHBlbmRpeC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFwcGVuZGl4Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2hhcHRlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2hhcHRlciIgc3Vic3RpdHV0aW9uR3JvdXA9ImNoYXB0ZXIuY2xhc3MiLz4KICA8IS0tIGVuZCBvZiBjaGFwdGVyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNoYXB0ZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNoYXB0ZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNoYXB0ZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjaGFwdGVyLm1vZHVsZSAtLT4KICA8IS0tCiAgICBOb3RlIHRoYXQgUGFydCB3YXMgdG8gaGF2ZSBpdHMgY29udGVudCBtb2RlbCByZWR1Y2VkIGluIFY0LjIuICBUaGlzCiAgICBjaGFuZ2Ugd2lsbCBub3QgYmUgbWFkZSBhZnRlciBhbGwuCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcnQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBhcnQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJlZ2lucGFnZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJwYXJ0aW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJwYXJ0aW50cm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFydGNvbnRlbnQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcnQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGFydC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJ0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJ0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwYXJ0LmF0dGxpc3QgLS0+CiAgPCEtLSBFTEVNRU5UIFBhcnRJbnRybyAoZGVmaW5lZCBiZWxvdykgLS0+CiAgPCEtLSBlbmQgb2YgcGFydC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByZWZhY2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByZWZhY2UiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJlZ2lucGFnZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJwcmVmYWNlaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0b2NjaGFwIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYm9va2NvbXBvbmVudC5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByZWZhY2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJlZmFjZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmVmYWNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJlZmFjZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJlZmFjZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByZWZhY2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZlcmVuY2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZmVyZW5jZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZmVyZW5jZWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icGFydGludHJvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZXJlbmNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmVyZW5jZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZlcmVuY2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVyZW5jZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmZXJlbmNlLmF0dGxpc3QgLS0+CiAgPCEtLSBFTEVNRU5UIFBhcnRJbnRybyAoZGVmaW5lZCBiZWxvdykgLS0+CiAgPCEtLSBlbmQgb2YgcmVmZXJlbmNlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFydGludHJvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwYXJ0aW50cm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJkaXYudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQuY29udGVudCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJ0aW50cm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGFydGludHJvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcnRpbnRyby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFydGludHJvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwYXJ0aW50cm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwYXJ0aW50cm8ubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIE90aGVyIEluZm8gZWxlbWVudHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFwcGVuZGl4aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXBwZW5kaXhpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXBwZW5kaXhpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFwcGVuZGl4aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcHBlbmRpeGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcHBlbmRpeGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFwcGVuZGl4aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFwcGVuZGl4aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2dyYXBoeWluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb2dyYXBoeWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9ncmFwaHlpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeWluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZ3JhcGh5aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2dyYXBoeWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeWluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9ncmFwaHlpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2hhcHRlcmluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNoYXB0ZXJpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2hhcHRlcmluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2hhcHRlcmluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2hhcHRlcmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaGFwdGVyaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2hhcHRlcmluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjaGFwdGVyaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzYXJ5aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ2xvc3NhcnlpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NhcnlpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2FyeWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc2FyeWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5kZXhpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXhpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGluZGV4aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmRleGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZGV4aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZGV4aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldGluZGV4aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2V0aW5kZXhpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2V0aW5kZXhpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNldGluZGV4aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZXRpbmRleGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXRpbmRleGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNldGluZGV4aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNldGluZGV4aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcnRpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwYXJ0aW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcnRpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBhcnRpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcnRpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFydGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhcnRpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcGFydGluZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmVmYWNlaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJlZmFjZWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmVmYWNlaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwcmVmYWNlaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmVmYWNlaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByZWZhY2VpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcmVmYWNlaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByZWZhY2VpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZW50cnlpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZlbnRyeWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZlbnRyeWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnlpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVudHJ5aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVudHJ5aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnlpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnlpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdGlvbmluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZnNlY3Rpb25pbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdGlvbmluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdGlvbmluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdGlvbmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0aW9uaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdGlvbmluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZzZWN0aW9uaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QxaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDFpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDFpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0MWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0MWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QyaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDJpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDJpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QyaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0MmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0MmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QyaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QyaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QzaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDNpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDNpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0M2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0M2luZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnN5bm9wc2lzZGl2aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc3lub3BzaXNkaXZpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc3lub3BzaXNkaXZpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnN5bm9wc2lzZGl2aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzeW5vcHNpc2RpdmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzeW5vcHNpc2RpdmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnN5bm9wc2lzZGl2aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnN5bm9wc2lzZGl2aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVyZW5jZWluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZmVyZW5jZWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZlcmVuY2VpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmVyZW5jZWluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZXJlbmNlaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVyZW5jZWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZmVyZW5jZWluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZlcmVuY2VpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDFpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0MWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0MWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDFpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QxaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QxaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDFpbmZvLmF0dGxpc3QgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QyaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDJpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDJpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3QyaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0MmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0MmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3QyaW5mby5hdHRsaXN0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0M2luZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlY3QzaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QzaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0M2luZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDNpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDNpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0M2luZm8uYXR0bGlzdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDRpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0NGluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0NGluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDRpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Q0aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Q0aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDRpbmZvLmF0dGxpc3QgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Q1aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDVpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDVpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3Q1aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0NWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0NWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3Q1aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFNlY3Rpb24gKHBhcmFsbGVsIHRvIFNlY3QqKSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdGlvbiIgc3Vic3RpdHV0aW9uR3JvdXA9InNlY3Rpb24uY2xhc3MiLz4KICA8IS0tIGVuZCBvZiBzZWN0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Rpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Rpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3Rpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWN0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdGlvbmluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlY3Rpb25pbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdGlvbmluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdGlvbmluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdGlvbmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0aW9uaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdGlvbmluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWN0aW9uaW5mby5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2Ygc2VjdGlvbi5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBTZWN0MSwgU2VjdDIsIFNlY3QzLCBTZWN0NCwgU2VjdDUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0MS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNlY3QxaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkaXZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdDIiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3QyIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QxLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3QxLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgUmVuZGVyYXM6IEluZGljYXRlcyB0aGUgZm9ybWF0IGluIHdoaWNoIHRoZSBoZWFkaW5nIHNob3VsZAogICAgYXBwZWFyCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QxLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZW5kZXJhcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Q0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Q1Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QxLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0MS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlY3QxLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlY3QyIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0MmluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3QzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0MyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0Mi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0Mi5lbGVtZW50IC0tPgogIDwhLS0KICAgIFJlbmRlcmFzOiBJbmRpY2F0ZXMgdGhlIGZvcm1hdCBpbiB3aGljaCB0aGUgaGVhZGluZyBzaG91bGQKICAgIGFwcGVhcgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0Mi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVuZGVyYXMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0Mi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWN0Mi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0MyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2VjdDNpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRpdmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0NCIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdDQiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDMuZWxlbWVudCAtLT4KICA8IS0tCiAgICBSZW5kZXJhczogSW5kaWNhdGVzIHRoZSBmb3JtYXQgaW4gd2hpY2ggdGhlIGhlYWRpbmcgc2hvdWxkCiAgICBhcHBlYXIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbmRlcmFzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3QzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VjdDMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0NC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNlY3Q0aW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkaXZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdDUiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3Q1Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Q0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3Q0LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgUmVuZGVyYXM6IEluZGljYXRlcyB0aGUgZm9ybWF0IGluIHdoaWNoIHRoZSBoZWFkaW5nIHNob3VsZAogICAgYXBwZWFyCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Q0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZW5kZXJhcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Q1Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Q0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0NC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlY3Q0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlY3Q1Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0NWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDUuZWxlbWVudCAtLT4KICA8IS0tCiAgICBSZW5kZXJhczogSW5kaWNhdGVzIHRoZSBmb3JtYXQgaW4gd2hpY2ggdGhlIGhlYWRpbmcgc2hvdWxkCiAgICBhcHBlYXIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbmRlcmFzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3Q1LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VjdDUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaW1wbGVzZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaW1wbGVzZWN0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkaXZjb21wb25lbnQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBsZXNlY3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlc2VjdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaW1wbGVzZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2ltcGxlc2VjdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlc2VjdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNpbXBsZXNlY3QubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEJpYmxpb2dyYXBoeSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2dyYXBoeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvZ3JhcGh5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJiaWJsaW9ncmFwaHlpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImJpYmxpb2RpdiIvPgogICAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvZW50cnkiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9taXhlZCIvPgogICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2dyYXBoeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9ncmFwaHkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZ3JhcGh5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvZ3JhcGh5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9ncmFwaHkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9ncmFwaHkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9kaXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb2RpdiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvZW50cnkiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvbWl4ZWQiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvZGl2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2Rpdi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9kaXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9kaXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb2Rpdi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb2Rpdi5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgYmlibGlvZ3JhcGh5LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEdsb3NzYXJ5IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzYXJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc2FyeSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iZ2xvc3NhcnlpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imdsb3NzZGl2Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc2VudHJ5Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJpYmxpb2dyYXBoeSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc2FyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc2FyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2FyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzYXJ5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBnbG9zc2FyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NkaXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3NzZGl2Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc2VudHJ5Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzZGl2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdsb3NzZGl2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzZGl2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NkaXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzZGl2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NkaXYubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEluZGV4IGFuZCBTZXRJbmRleCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4ZXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImluZGV4Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJpbmRleGluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmRleGRpdiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmRleGVudHJ5Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGluZGV4LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXhlcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5kZXguYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZXRpbmRleCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2V0aW5kZXhpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5kZXhkaXYiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5kZXhlbnRyeSIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXRpbmRleC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZXRpbmRleC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZXRpbmRleC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4ZXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNldGluZGV4LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5kZXhlcy5tb2R1bGUgLS0+CiAgPCEtLQogICAgU2VnbWVudGVkTGlzdCBpbiB0aGlzIGNvbnRlbnQgaXMgdXNlZnVsIGZvciBtYXJraW5nIHVwIHBlcm11dGVkCiAgICBpbmRpY2VzLgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmRleGRpdi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5kZXhkaXYiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmRleGRpdmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZGV4ZW50cnkiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzZWdtZW50ZWRsaXN0Ii8+CiAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleGRpdi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbmRleGRpdi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmRleGRpdi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4ZGl2LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmRleGRpdi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZGV4ZGl2Lm1vZHVsZSAtLT4KICA8IS0tIEluZGV4IGVudHJpZXMgYXBwZWFyIGluIHRoZSBpbmRleCwgbm90IHRoZSB0ZXh0LiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXhlbnRyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5kZXhlbnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InByaW1hcnlpZSIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlZWllIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlZWFsc29pZSIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpzZXF1ZW5jZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2Vjb25kYXJ5aWUiLz4KICAgICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VlaWUiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzZWVhbHNvaWUiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZXJ0aWFyeWllIi8+CiAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleGVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGluZGV4ZW50cnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXhlbnRyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4ZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZGV4ZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbmRleGVudHJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJpbXNlY3RlcmllLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcmltYXJ5aWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmltYXJ5aWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJpbWFyeWllLmVsZW1lbnQgLS0+CiAgPCEtLSB0byBJbmRleFRlcm1zIHRoYXQgdGhlc2UgZW50cmllcyByZXByZXNlbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByaW1hcnlpZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJpbXNlY3RlcmllLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcmltYXJ5aWUuYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWNvbmRhcnlpZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY29uZGFyeWllLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY29uZGFyeWllLmVsZW1lbnQgLS0+CiAgPCEtLSB0byBJbmRleFRlcm1zIHRoYXQgdGhlc2UgZW50cmllcyByZXByZXNlbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY29uZGFyeWllLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmltc2VjdGVyaWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY29uZGFyeWllLmF0dGxpc3QgLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGVydGlhcnlpZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRlcnRpYXJ5aWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGVydGlhcnlpZS5lbGVtZW50IC0tPgogIDwhLS0gdG8gSW5kZXhUZXJtcyB0aGF0IHRoZXNlIGVudHJpZXMgcmVwcmVzZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0ZXJ0aWFyeWllLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmltc2VjdGVyaWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRlcnRpYXJ5aWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcmltc2VjdGVyaWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWVpZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VlaWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWVpZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWVpZS5lbGVtZW50IC0tPgogIDwhLS0gdG8gSW5kZXhFbnRyeSB0byBsb29rIHVwIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWVpZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmQuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWVpZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VlaWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWVpZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZWFsc29pZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VlYWxzb2llIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VlYWxzb2llLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlZWFsc29pZS5lbGVtZW50IC0tPgogIDwhLS0gdG8gcmVsYXRlZCBJbmRleEVudHJpZXMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZWFsc29pZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VlYWxzb2llLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWVhbHNvaWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWVhbHNvaWUubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGluZGV4LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFJlZkVudHJ5IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZlbnRyeSIgc3Vic3RpdHV0aW9uR3JvdXA9InJlZmVudHJ5LmNsYXNzIi8+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZm1ldGEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZm1ldGEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZWZlbnRyeXRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im1hbnZvbG51bSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmbWlzY2luZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbWV0YS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZtZXRhLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZm1ldGEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZtZXRhLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZtZXRhLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmbWV0YS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZm1pc2NpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZtaXNjaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZm1pc2NpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZm1pc2NpbmZvLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogRnJlZWx5IGFzc2lnbmFibGUgcGFyYW1ldGVyOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZtaXNjaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZm1pc2NpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZtaXNjaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZm1pc2NpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmbmFtZWRpdi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmbmFtZWRpdiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmZGVzY3JpcHRvciIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZm5hbWUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlZnB1cnBvc2UiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmNsYXNzIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icmVtYXJrIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZuYW1lZGl2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZm5hbWVkaXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmbmFtZWRpdi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZm5hbWVkaXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZm5hbWVkaXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZuYW1lZGl2Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZGVzY3JpcHRvci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmZGVzY3JpcHRvciI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZuYW1lLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmRlc2NyaXB0b3IuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmZGVzY3JpcHRvci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZkZXNjcmlwdG9yLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZGVzY3JpcHRvci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmZGVzY3JpcHRvci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZmRlc2NyaXB0b3IubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZuYW1lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZm5hbWUuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZm5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmbmFtZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnB1cnBvc2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZnB1cnBvc2UiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmaW5saW5lLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnB1cnBvc2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmcHVycG9zZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZwdXJwb3NlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmcHVycG9zZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmcHVycG9zZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnB1cnBvc2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZjbGFzcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmY2xhc3MuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmY2xhc3MuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmY2xhc3MuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmY2xhc3MuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZjbGFzcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmY2xhc3MuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZjbGFzcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnN5bm9wc2lzZGl2LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZzeW5vcHNpc2RpdiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmc3lub3BzaXNkaXZpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3QyIi8+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdDIiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc3lub3BzaXNkaXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc3lub3BzaXNkaXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc3lub3BzaXNkaXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzeW5vcHNpc2Rpdi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc3lub3BzaXNkaXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZzeW5vcHNpc2Rpdi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3Rpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZnNlY3Rpb24iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZnNlY3Rpb25pbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icmVmc2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZzZWN0aW9uIi8+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdGlvbiIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3Rpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3Rpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3Rpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZzZWN0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdDEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZnNlY3QxIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZzZWN0MWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJyZWZzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3QyIi8+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdDIiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdDEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0MS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZzZWN0MS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZzZWN0MiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmc2VjdDJpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icmVmc2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZzZWN0MyIvPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3QzIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3QyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0My5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZnNlY3QzaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9InJlZnNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZjb21wb25lbnQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3QzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDMubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEFydGljbGUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgQW4gQXJ0aWNsZSBpcyBhIGNoYXB0ZXItbGV2ZWwsIHN0YW5kLWFsb25lIGRvY3VtZW50IHRoYXQgaXMgb2Z0ZW4sCiAgICBidXQgbmVlZCBub3QgYmUsIGNvbGxlY3RlZCBpbnRvIGEgQm9vay4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJ0aWNsZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJ0aWNsZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImFydGljbGUuY2xhc3MiLz4KICA8IS0tIGVuZCBvZiBhcnRpY2xlLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQ2xhc3M6IEluZGljYXRlcyB0aGUgdHlwZSBvZiBhIHBhcnRpY3VsYXIgYXJ0aWNsZTsKICAgIGFsbCBhcnRpY2xlcyBoYXZlIHRoZSBzYW1lIHN0cnVjdHVyZSBhbmQgZ2VuZXJhbCBwdXJwb3NlLgogICAgTm8gZGVmYXVsdC4KICAtLT4KICA8IS0tIFBhcmVudEJvb2s6IElEIG9mIHRoZSBlbmNsb3NpbmcgQm9vayAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJ0aWNsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJqb3VybmFsYXJ0aWNsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcm9kdWN0c2hlZXQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0id2hpdGVwYXBlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0ZWNocmVwb3J0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNwZWNpZmljYXRpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZmFxIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhcmVudGJvb2siIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcnRpY2xlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KPC94czpzY2hlbWE+CjwhLS0gZW5kIG9mIGFydGljbGUuYXR0bGlzdCAtLT4KPCEtLSBlbmQgb2YgYXJ0aWNsZS5tb2R1bGUgLS0+CjwhLS0gRW5kIG9mIERvY0Jvb2sgZG9jdW1lbnQgaGllcmFyY2h5IG1vZHVsZSBWNC4yIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_3/dbnotnx.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgbm90YXRpb25zIG1vZHVsZSBWNC4yIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkYm5vdG54Lm1vZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDIgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZGJub3RueC5tb2QsdiAxLjEzIDIwMDIvMDcvMTcgMTU6MjY6MTYgbndhbHNoIEV4cCAkCiAgCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSBhbmQgZGlzdHJpYnV0ZSB0aGUgRG9jQm9vayBEVEQKICBhbmQgaXRzIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUKICBpcyBoZXJlYnkgZ3JhbnRlZCBpbiBwZXJwZXR1aXR5LCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQKICBub3RpY2UgYW5kIHRoaXMgcGFyYWdyYXBoIGFwcGVhciBpbiBhbGwgY29waWVzLiAgVGhlIGNvcHlyaWdodAogIGhvbGRlcnMgbWFrZSBubyByZXByZXNlbnRhdGlvbiBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhlIERURCBmb3IKICBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzZWQgb3IgaW1wbGllZAogIHdhcnJhbnR5LgogIAogIElmIHlvdSBtb2RpZnkgdGhlIERvY0Jvb2sgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgZW50aXR5IGRlY2xhcmF0aW9ucyBmb3IgdGhlIHN0YW5kYXJkIElTTwogIGVudGl0eSBzZXRzIHVzZWQgYnkgRG9jQm9vay4KICAKICBJbiBEVEQgZHJpdmVyIGZpbGVzIHJlZmVycmluZyB0byB0aGlzIG1vZHVsZSwgcGxlYXNlIHVzZSBhbiBlbnRpdHkKICBkZWNsYXJhdGlvbiB0aGF0IHVzZXMgdGhlIHB1YmxpYyBpZGVudGlmaWVyIHNob3duIGJlbG93OgogIAogIDwhRU5USVRZICUgZGJub3RuIFBVQkxJQwogICItLy9PQVNJUy8vRU5USVRJRVMgRG9jQm9vayBOb3RhdGlvbnMgVjQuMi8vRU4iCiAgImRibm90bngubW9kIj4KICAlZGJub3RuOwogIAogIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24gb24gdGhlIHBhcmFtZXRlcgogIGVudGl0eSBhbmQgbW9kdWxlIHNjaGVtZSB1c2VkIGluIERvY0Jvb2ssIGN1c3RvbWl6aW5nIERvY0Jvb2sgYW5kCiAgcGxhbm5pbmcgZm9yIGludGVyY2hhbmdlLCBhbmQgY2hhbmdlcyBtYWRlIHNpbmNlIHRoZSBsYXN0IHJlbGVhc2UKICBvZiBEb2NCb29rLgotLT4KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4KICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJub3RhdGlvbi5jbGFzcyI+CiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkJNUCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkNHTS1DSEFSIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQ0dNLUJJTkFSWSIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkNHTS1DTEVBUiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRJVFJPRkYiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJEVkkiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJFUFMiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJFUU4iLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJGQVgiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJHSUYiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJHSUY4N2EiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJHSUY4OWEiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJKUEciLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJKUEVHIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iSUdFUyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBDWCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBJQyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBORyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBTIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iU0dNTCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlRCTCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlRFWCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlRJRkYiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJXTUYiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJXUEciLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJTVkciLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lc3BlY2lmaWMiLz4KICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgPC94czpzaW1wbGVUeXBlPgo8L3hzOnNjaGVtYT4KPCEtLSBXb3JkUGVyZmVjdCBHcmFwaGljIGZvcm1hdCAtLT4KPCEtLSBFbmQgb2YgRG9jQm9vayBub3RhdGlvbnMgbW9kdWxlIFY0LjIgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_3/dbpoolx.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgWE1MIGluZm9ybWF0aW9uIHBvb2wgbW9kdWxlIFY0LjIgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkYnBvb2x4Lm1vZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDIgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZGJwb29seC5tb2QsdiAxLjQ2IDIwMDIvMDcvMTcgMTU6MjY6MTYgbndhbHNoIEV4cCAkCiAgCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSBhbmQgZGlzdHJpYnV0ZSB0aGUgRG9jQm9vayBYTUwgRFRECiAgYW5kIGl0cyBhY2NvbXBhbnlpbmcgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlCiAgaXMgaGVyZWJ5IGdyYW50ZWQgaW4gcGVycGV0dWl0eSwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0CiAgbm90aWNlIGFuZCB0aGlzIHBhcmFncmFwaCBhcHBlYXIgaW4gYWxsIGNvcGllcy4gIFRoZSBjb3B5cmlnaHQKICBob2xkZXJzIG1ha2Ugbm8gcmVwcmVzZW50YXRpb24gYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoZSBEVEQgZm9yCiAgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzc2VkIG9yIGltcGxpZWQKICB3YXJyYW50eS4KICAKICBJZiB5b3UgbW9kaWZ5IHRoZSBEb2NCb29rIFhNTCBEVEQgaW4gYW55IHdheSwgZXhjZXB0IGZvciBkZWNsYXJpbmcgYW5kCiAgcmVmZXJlbmNpbmcgYWRkaXRpb25hbCBzZXRzIG9mIGdlbmVyYWwgZW50aXRpZXMgYW5kIGRlY2xhcmluZwogIGFkZGl0aW9uYWwgbm90YXRpb25zLCBsYWJlbCB5b3VyIERURCBhcyBhIHZhcmlhbnQgb2YgRG9jQm9vay4gIFNlZQogIHRoZSBtYWludGVuYW5jZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogIAogIFBsZWFzZSBkaXJlY3QgYWxsIHF1ZXN0aW9ucywgYnVnIHJlcG9ydHMsIG9yIHN1Z2dlc3Rpb25zIGZvcgogIGNoYW5nZXMgdG8gdGhlIGRvY2Jvb2tAbGlzdHMub2FzaXMtb3Blbi5vcmcgbWFpbGluZyBsaXN0LiBGb3IgbW9yZQogIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rLy4KLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIFRoaXMgbW9kdWxlIGNvbnRhaW5zIHRoZSBkZWZpbml0aW9ucyBmb3IgdGhlIG9iamVjdHMsIGlubGluZQogIGVsZW1lbnRzLCBhbmQgc28gb24gdGhhdCBhcmUgYXZhaWxhYmxlIHRvIGJlIHVzZWQgYXMgdGhlIG1haW4KICBjb250ZW50IG9mIERvY0Jvb2sgZG9jdW1lbnRzLiAgU29tZSBlbGVtZW50cyBhcmUgdXNlZnVsIGZvciBnZW5lcmFsCiAgcHVibGlzaGluZywgYW5kIG90aGVycyBhcmUgdXNlZnVsIHNwZWNpZmljYWxseSBmb3IgY29tcHV0ZXIKICBkb2N1bWVudGF0aW9uLgogIAogIFRoaXMgbW9kdWxlIGhhcyB0aGUgZm9sbG93aW5nIGRlcGVuZGVuY2llcyBvbiBvdGhlciBtb2R1bGVzOgogIAogIG8gSXQgYXNzdW1lcyB0aGF0IGEgJW5vdGF0aW9uLmNsYXNzOyBlbnRpdHkgaXMgZGVmaW5lZCBieSB0aGUKICAgIGRyaXZlciBmaWxlIG9yIG90aGVyIGhpZ2gtbGV2ZWwgbW9kdWxlLiAgVGhpcyBlbnRpdHkgaXMKICAgIHJlZmVyZW5jZWQgaW4gdGhlIE5PVEFUSU9OIGF0dHJpYnV0ZXMgZm9yIHRoZSBncmFwaGljLXJlbGF0ZWQgYW5kCiAgICBNb2RlU3BlYyBlbGVtZW50cy4KICAKICBvIEl0IGFzc3VtZXMgdGhhdCBhbiBhcHByb3ByaWF0ZWx5IHBhcmFtZXRlcml6ZWQgdGFibGUgbW9kdWxlIGlzCiAgICBhdmFpbGFibGUgZm9yIHVzZSB3aXRoIHRoZSB0YWJsZS1yZWxhdGVkIGVsZW1lbnRzLgogIAogIEluIERURCBkcml2ZXIgZmlsZXMgcmVmZXJyaW5nIHRvIHRoaXMgbW9kdWxlLCBwbGVhc2UgdXNlIGFuIGVudGl0eQogIGRlY2xhcmF0aW9uIHRoYXQgdXNlcyB0aGUgcHVibGljIGlkZW50aWZpZXIgc2hvd24gYmVsb3c6CiAgCiAgPCFFTlRJVFkgJSBkYnBvb2wgUFVCTElDCiAgIi0vL09BU0lTLy9FTEVNRU5UUyBEb2NCb29rIFhNTCBJbmZvcm1hdGlvbiBQb29sIFY0LjIvL0VOIgogICJkYnBvb2x4Lm1vZCI+CiAgJWRicG9vbDsKICAKICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHRoZSBwYXJhbWV0ZXIKICBlbnRpdHkgYW5kIG1vZHVsZSBzY2hlbWUgdXNlZCBpbiBEb2NCb29rLCBjdXN0b21pemluZyBEb2NCb29rIGFuZAogIHBsYW5uaW5nIGZvciBpbnRlcmNoYW5nZSwgYW5kIGNoYW5nZXMgbWFkZSBzaW5jZSB0aGUgbGFzdCByZWxlYXNlCiAgb2YgRG9jQm9vay4KLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSBHZW5lcmFsLXB1cnBvc2Ugc2VtYW50aWNzIGVudGl0aWVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiPgogIDx4czppbmNsdWRlIHNjaGVtYUxvY2F0aW9uPSJjYWxzdGJseC54c2QiLz4KICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJ5ZXNvcm5vLmF0dHZhbHMiPgogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyIvPgogIDwveHM6c2ltcGxlVHlwZT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBFbnRpdGllcyBmb3IgbW9kdWxlIGluY2x1c2lvbnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVudGl0aWVzIGZvciBlbGVtZW50IGNsYXNzZXMgYW5kIG1peHR1cmVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSAiVWJpcXVpdG91cyIgY2xhc3NlczogbmR4dGVybS5jbGFzcyBhbmQgYmVnaW5wYWdlIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im5keHRlcm0uY2xhc3MiIGFic3RyYWN0PSJ0cnVlIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJwcmltYXJ5Ii8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlY29uZGFyeSIvPgogICAgICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZXJ0aWFyeSIvPgogICAgICAgICAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlZSIvPgogICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWVhbHNvIi8+CiAgICAgICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VlIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VlYWxzbyIvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VlYWxzbyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleHRlcm0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBPYmplY3QtbGV2ZWwgY2xhc3NlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czplbGVtZW50IG5hbWU9Imxpc3QuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYWRtb24uY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGluZXNwZWNpZmljLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czplbGVtZW50IG5hbWU9Im1ldGhvZC5zeW5vcC5jbGFzcyIgYWJzdHJhY3Q9InRydWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJzeW5vcC5jbGFzcyIvPgogIDx4czplbGVtZW50IG5hbWU9InN5bm9wLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czplbGVtZW50IG5hbWU9InBhcmEuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5mb3JtYWwuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZm9ybWFsLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDwhLS0gVGhlIERvY0Jvb2sgVEMgbWF5IHByb2R1Y2UgYW4gb2ZmaWNpYWwgRUJORiBtb2R1bGUgZm9yIERvY0Jvb2suIC0tPgogIDwhLS0gVGhpcyBQRSBwcm92aWRlcyB0aGUgaG9vayBieSB3aGljaCBpdCBjYW4gYmUgaW5zZXJ0ZWQgaW50byB0aGUgRFRELiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb21wb3VuZC5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6Z3JvdXAgbmFtZT0iZ2Vub2JqLmNsYXNzIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYW5jaG9yIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYnJpZGdlaGVhZCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlbWFyayIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImhpZ2hsaWdodHMiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImRlc2NvYmouY2xhc3MiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhYnN0cmFjdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImF1dGhvcmJsdXJiIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZXBpZ3JhcGgiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBDaGFyYWN0ZXItbGV2ZWwgY2xhc3NlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czplbGVtZW50IG5hbWU9InhyZWYuY2hhci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJnZW4uY2hhci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaW5rLmNoYXIuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPCEtLSBUaGUgRG9jQm9vayBUQyBtYXkgcHJvZHVjZSBhbiBvZmZpY2lhbCBFQk5GIG1vZHVsZSBmb3IgRG9jQm9vay4gLS0+CiAgPCEtLSBUaGlzIFBFIHByb3ZpZGVzIHRoZSBob29rIGJ5IHdoaWNoIGl0IGNhbiBiZSBpbnNlcnRlZCBpbnRvIHRoZSBEVEQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InRlY2guY2hhci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6Z3JvdXAgbmFtZT0iYmFzZS5jaGFyLmNsYXNzIj4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhbmNob3IiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJkb2NpbmZvLmNoYXIuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmdyb3VwIG5hbWU9Im90aGVyLmNoYXIuY2xhc3MiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZW1hcmsiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzY3JpcHQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdXBlcnNjcmlwdCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmxpbmVvYmouY2hhci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBFbnRpdGllcyBmb3IgY29udGVudCBtb2RlbHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czpncm91cCBuYW1lPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlYWJicmV2Ii8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBSZWRlY2xhcmF0aW9uIHBsYWNlaG9sZGVyIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgIEZvciByZWRlY2xhcmluZyBlbnRpdGllcyB0aGF0IGFyZSBkZWNsYXJlZCBhZnRlciB0aGlzIHBvaW50IHdoaWxlCiAgICByZXRhaW5pbmcgdGhlaXIgcmVmZXJlbmNlcyB0byB0aGUgZW50aXRpZXMgdGhhdCBhcmUgZGVjbGFyZWQgYmVmb3JlCiAgICB0aGlzIHBvaW50CiAgLS0+CiAgPCEtLSBPYmplY3QtbGV2ZWwgbWl4dHVyZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0IGFkbW4gbGluZSBzeW5wIHBhcmEgaW5mbSBmb3JtIGNtcGQgZ2VuICBkZXNjCiAgICBDb21wb25lbnQgbWl4dHVyZSAgICAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYCiAgICBTaWRlYmFyIG1peHR1cmUgICAgICAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIGEgICAgWAogICAgRm9vdG5vdGUgbWl4dHVyZSAgICAgICAgWCAgICAgICAgIFggICAgWCAgICBYICAgIFgKICAgIEV4YW1wbGUgbWl4dHVyZSAgICAgICAgIFggICAgICAgICBYICAgIFggICAgWCAgICBYCiAgICBIaWdobGlnaHRzIG1peHR1cmUgICAgICBYICAgIFggICAgICAgICAgICAgIFgKICAgIFBhcmFncmFwaCBtaXh0dXJlICAgICAgIFggICAgICAgICBYICAgIFggICAgICAgICBYCiAgICBBZG1vbml0aW9uIG1peHR1cmUgICAgICBYICAgICAgICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIGIgICAgYwogICAgRmlndXJlIG1peHR1cmUgICAgICAgICAgICAgICAgICAgIFggICAgWCAgICAgICAgIFgKICAgIFRhYmxlIGVudHJ5IG1peHR1cmUgICAgIFggICAgWCAgICBYICAgICAgICAgWCAgICBkCiAgICBHbG9zc2FyeSBkZWYgbWl4dHVyZSAgICBYICAgICAgICAgWCAgICBYICAgIFggICAgWCAgICAgICAgIGUKICAgIExlZ2FsIG5vdGljZSBtaXh0dXJlICAgIFggICAgWCAgICBYICAgICAgICAgWCAgICBmCiAgICAKICAgIGEuIEp1c3QgUHJvY2VkdXJlOyBub3QgU2lkZWJhciBpdHNlbGYgb3IgTXNnU2V0LgogICAgYi4gTm8gTXNnU2V0LgogICAgYy4gTm8gSGlnaGxpZ2h0cy4KICAgIGQuIEp1c3QgR3JhcGhpYzsgbm8gb3RoZXIgaW5mb3JtYWwgb2JqZWN0cy4KICAgIGUuIE5vIEFuY2hvciwgQnJpZGdlSGVhZCwgb3IgSGlnaGxpZ2h0cy4KICAgIGYuIEp1c3QgQmxvY2tRdW90ZTsgbm8gb3RoZXIgaW5mb3JtYWwgb2JqZWN0cy4KICAtLT4KICA8eHM6Z3JvdXAgbmFtZT0iY29tcG9uZW50Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29tcG91bmQuY2xhc3MiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZ2Vub2JqLmNsYXNzIi8+CiAgICAgIDx4czpncm91cCByZWY9ImRlc2NvYmouY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJzaWRlYmFyLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJvY2VkdXJlIi8+CiAgICAgIDx4czpncm91cCByZWY9Imdlbm9iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InFhbmRhc2V0Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJvY2VkdXJlIi8+CiAgICAgIDx4czpncm91cCByZWY9Imdlbm9iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InJldmRlc2NyaXB0aW9uLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJvY2VkdXJlIi8+CiAgICAgIDx4czpncm91cCByZWY9Imdlbm9iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImZvb3Rub3RlLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iZXhhbXBsZS5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJoaWdobGlnaHRzLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDwhLS0KICAgICVmb3JtYWwuY2xhc3M7IGlzIGV4cGxpY2l0bHkgZXhjbHVkZWQgZnJvbSBtYW55IGNvbnRleHRzIGluIHdoaWNoCiAgICBwYXJhZ3JhcGhzIGFyZSB1c2VkCiAgLS0+CiAgPHhzOmdyb3VwIG5hbWU9InBhcmEubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImFkbW9uLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InByb2NlZHVyZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InNpZGViYXIiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhbmNob3IiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJicmlkZ2VoZWFkIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icmVtYXJrIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iZmlndXJlLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJ0YWJlbnRyeS5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im1lZGlhb2JqZWN0Ii8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJnbG9zc2RlZi5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZW1hcmsiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJsZWdhbG5vdGljZS5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmxvY2txdW90ZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InRleHRvYmplY3QubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJsb2NrcXVvdGUiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWVkaWFvYmplY3QubWl4IiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czpncm91cCBuYW1lPSJsaXN0cHJlYW1ibGUubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJnZW5vYmouY2xhc3MiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZGVzY29iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBDaGFyYWN0ZXItbGV2ZWwgbWl4dHVyZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gc2dtbC5mZWF0dXJlcyAtLT4KICA8IS0tIG5vdCBbc2dtbC5mZWF0dXJlc1sgLS0+CiAgPCEtLSBdXSBub3Qgc2dtbC5mZWF0dXJlcyAtLT4KICA8IS0tCiAgICAgICAgICAgICAgICAgICAgICAgICNQQ0QgeHJlZiB3b3JkIGxpbmsgY3B0ciBiYXNlIGRuZm8gb3RociBpbm9iIChzeW5vcCkKICAgIHBhcmEuY2hhci5taXggICAgICAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWAogICAgdGl0bGUuY2hhci5taXggICAgICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYCiAgICBuZHh0ZXJtLmNoYXIubWl4ICAgICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIGEKICAgIGNwdHIuY2hhci5taXggICAgICAgICBYICAgICAgICAgICAgICBYICAgIFggICAgWCAgICAgICAgIFggICAgYQogICAgc21hbGxjcHRyLmNoYXIubWl4ICAgIFggICAgICAgICAgICAgICAgICAgYiAgICAgICAgICAgICAgICAgICBhCiAgICB3b3JkLmNoYXIubWl4ICAgICAgICAgWCAgICAgICAgIGMgICAgWCAgICAgICAgIFggICAgICAgICBYICAgIGEKICAgIGRvY2luZm8uY2hhci5taXggICAgICBYICAgICAgICAgZCAgICBYICAgIGIgICAgICAgICAgICAgIFggICAgYQogICAgCiAgICBhLiBKdXN0IElubGluZUdyYXBoaWM7IG5vIElubGluZUVxdWF0aW9uLgogICAgYi4gSnVzdCBSZXBsYWNlYWJsZTsgbm8gb3RoZXIgY29tcHV0ZXIgdGVybXMuCiAgICBjLiBKdXN0IEVtcGhhc2lzIGFuZCBUcmFkZW1hcms7IG5vIG90aGVyIHdvcmQgZWxlbWVudHMuCiAgICBkLiBKdXN0IEFjcm9ueW0sIEVtcGhhc2lzLCBhbmQgVHJhZGVtYXJrOyBubyBvdGhlciB3b3JkIGVsZW1lbnRzLgogIC0tPgogIDwhLS0gVGhlIERvY0Jvb2sgVEMgbWF5IHByb2R1Y2UgYW4gb2ZmaWNpYWwgZm9ybXMgbW9kdWxlIGZvciBEb2NCb29rLiAtLT4KICA8IS0tIFRoaXMgUEUgcHJvdmlkZXMgdGhlIGhvb2sgYnkgd2hpY2ggaXQgY2FuIGJlIGluc2VydGVkIGludG8gdGhlIERURC4gLS0+CiAgPHhzOmdyb3VwIG5hbWU9InBhcmEuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ4cmVmLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdlbi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRlY2guY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZG9jaW5mby5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lb2JqLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InRpdGxlLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ieHJlZi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnZW4uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImRvY2luZm8uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW9iai5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJuZHh0ZXJtLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ieHJlZi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnZW4uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImRvY2luZm8uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZWdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJjcHRyLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJvdGhlci5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVncmFwaGljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVtZWRpYW9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJzbWFsbGNwdHIuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXBsYWNlYWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgICA8L3hzOmNob2ljZT4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0id29yZC5jaGFyLm1peCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjcm9ueW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtcGhhc2lzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0cmFkZW1hcmsiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZWdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImRvY2luZm8uY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtcGhhc2lzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0cmFkZW1hcmsiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlcGxhY2VhYmxlIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBFTlRJVFkgJSBiaWJsaW9jb21wb25lbnQubWl4IChzZWUgQmlibGlvZ3JhcGhpYyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBFTlRJVFkgJSBwZXJzb24uaWRlbnQubWl4IChzZWUgQmlibGlvZ3JhcGhpYyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRW50aXRpZXMgZm9yIGF0dHJpYnV0ZXMgYW5kIGF0dHJpYnV0ZSBjb21wb25lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVmZmVjdGl2aXR5IGF0dHJpYnV0ZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgQXJjaDogQ29tcHV0ZXIgb3IgY2hpcCBhcmNoaXRlY3R1cmUgdG8gd2hpY2ggZWxlbWVudCBhcHBsaWVzOyBubwogICAgZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmNoLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFyY2giLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gQ29uZGl0aW9uOiBHZW5lcmFsLXB1cnBvc2UgZWZmZWN0aXZpdHkgYXR0cmlidXRlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25kaXRpb24uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29uZGl0aW9uIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIENvbmZvcm1hbmNlOiBTdGFuZGFyZHMgY29uZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mb3JtYW5jZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb25mb3JtYW5jZSIgdHlwZT0ieHM6Tk1UT0tFTlMiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gT1M6IE9wZXJhdGluZyBzeXN0ZW0gdG8gd2hpY2ggZWxlbWVudCBhcHBsaWVzOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBSZXZpc2lvbjogRWRpdG9yaWFsIHJldmlzaW9uIHRvIHdoaWNoIGVsZW1lbnQgYmVsb25nczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aXNpb24uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmV2aXNpb24iLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gU2VjdXJpdHk6IFNlY3VyaXR5IGNsYXNzaWZpY2F0aW9uOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN1cml0eS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWN1cml0eSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgVXNlckxldmVsOiBMZXZlbCBvZiB1c2VyIGV4cGVyaWVuY2UgdG8gd2hpY2ggZWxlbWVudCBhcHBsaWVzOyBubwogICAgZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ1c2VybGV2ZWwuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXNlcmxldmVsIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFZlbmRvcjogQ29tcHV0ZXIgdmVuZG9yIHRvIHdoaWNoIGVsZW1lbnQgYXBwbGllczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmVuZG9yLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZlbmRvciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVmZmVjdGl2aXR5LmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcmNoLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZGl0aW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZm9ybWFuY2UuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldmlzaW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXJpdHkuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ1c2VybGV2ZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2ZW5kb3IuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIENvbW1vbiBhdHRyaWJ1dGVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBJZDogVW5pcXVlIGlkZW50aWZpZXIgb2YgZWxlbWVudDsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaWQuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InhzOklEIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBJZDogVW5pcXVlIGlkZW50aWZpZXIgb2YgZWxlbWVudDsgYSB2YWx1ZSBtdXN0IGJlIHN1cHBsaWVkOyBubwogICAgZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpZHJlcS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpZCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6SUQiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIExhbmc6IEluZGljYXRvciBvZiBsYW5ndWFnZSBpbiB3aGljaCBlbGVtZW50IGlzIHdyaXR0ZW4sIGZvcgogICAgdHJhbnNsYXRpb24sIGNoYXJhY3RlciBzZXQgbWFuYWdlbWVudCwgZXRjLjsgbm8gZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsYW5nLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhbmciLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gUmVtYXA6IFByZXZpb3VzIHJvbGUgb2YgZWxlbWVudCBiZWZvcmUgY29udmVyc2lvbjsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVtYXAuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVtYXAiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gUm9sZTogTmV3IHJvbGUgb2YgZWxlbWVudCBpbiBsb2NhbCBlbnZpcm9ubWVudDsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb2xlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBYUmVmTGFiZWw6IEFsdGVybmF0ZSBsYWJlbGluZyBzdHJpbmcgZm9yIFhSZWYgdGV4dCBnZW5lcmF0aW9uOwogICAgZGVmYXVsdCBpcyB1c3VhbGx5IHRpdGxlIG9yIG90aGVyIGFwcHJvcHJpYXRlIGxhYmVsIHRleHQgYWxyZWFkeQogICAgY29udGFpbmVkIGluIGVsZW1lbnQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ieHJlZmxhYmVsLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InhyZWZsYWJlbCIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgUmV2aXNpb25GbGFnOiBSZXZpc2lvbiBzdGF0dXMgb2YgZWxlbWVudDsgZGVmYXVsdCBpcyB0aGF0IGVsZW1lbnQKICAgIHdhc24ndCByZXZpc2VkCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldmlzaW9uZmxhZy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXZpc2lvbmZsYWciPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjaGFuZ2VkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFkZGVkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRlbGV0ZWQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib2ZmIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFJvbGUgaXMgaW5jbHVkZWQgZXhwbGljaXRseSBvbiBlYWNoIGVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbW1vbi5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaWQuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYW5nLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVtYXAuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4cmVmbGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZpc2lvbmZsYWcuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlZmZlY3Rpdml0eS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gUm9sZSBpcyBpbmNsdWRlZCBleHBsaWNpdGx5IG9uIGVhY2ggZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaWRyZXEuY29tbW9uLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpZHJlcS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhbmcuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZW1hcC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InhyZWZsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldmlzaW9uZmxhZy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVmZmVjdGl2aXR5LmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBTZW1pLWNvbW1vbiBhdHRyaWJ1dGVzIGFuZCBvdGhlciBhdHRyaWJ1dGUgZW50aXRpZXMgLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgIEVudGl0eVJlZjogTmFtZSBvZiBhbiBleHRlcm5hbCBlbnRpdHkgY29udGFpbmluZyB0aGUgY29udGVudAogICAgb2YgdGhlIGdyYXBoaWMKICAtLT4KICA8IS0tCiAgICBGaWxlUmVmOiBGaWxlbmFtZSwgcXVhbGlmaWVkIGJ5IGEgcGF0aG5hbWUgaWYgZGVzaXJlZCwKICAgIGRlc2lnbmF0aW5nIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnQgb2YgdGhlIGdyYXBoaWMKICAtLT4KICA8IS0tIEZvcm1hdDogTm90YXRpb24gb2YgdGhlIGVsZW1lbnQgY29udGVudCwgaWYgYW55IC0tPgogIDwhLS0gU3JjQ3JlZGl0OiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgc291cmNlIG9mIHRoZSBHcmFwaGljIC0tPgogIDwhLS0gV2lkdGg6IFNhbWUgYXMgQ0FMUyByZXByb3dpZCAoZGVzaXJlZCB3aWR0aCkgLS0+CiAgPCEtLSBEZXB0aDogU2FtZSBhcyBDQUxTIHJlcHJvZGVwIChkZXNpcmVkIGRlcHRoKSAtLT4KICA8IS0tCiAgICBBbGlnbjogU2FtZSBhcyBDQUxTIGhwbGFjZSB3aXRoICdub25lJyByZW1vdmVkOyAjSU1QTElFRCBtZWFucwogICAgYXBwbGljYXRpb24tc3BlY2lmaWMKICAtLT4KICA8IS0tIFNjYWxlOiBDb25mbGF0aW9uIG9mIENBTFMgaHNjYWxlIGFuZCB2c2NhbGUgLS0+CiAgPCEtLSBTY2FsZWZpdDogU2FtZSBhcyBDQUxTIHNjYWxlZml0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJncmFwaGljcy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbnRpdHlyZWYiIHR5cGU9InhzOkVOVElUWSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaWxlcmVmIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvcm1hdCIgdHlwZT0ibm90YXRpb24uY2xhc3MiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3JjY3JlZGl0Ii8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnR3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZXB0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50ZGVwdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsZWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNlbnRlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY2FsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY2FsZWZpdCIgdHlwZT0ieWVzb3Juby5hdHR2YWxzIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBBY3Rpb246IEtleSBjb21iaW5hdGlvbiB0eXBlOyBkZWZhdWx0IGlzIHVuc3BlY2lmaWVkIGlmIG9uZQogICAgY2hpbGQgZWxlbWVudCwgU2ltdWwgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZTsgaWYgdmFsdWUgaXMKICAgIE90aGVyLCB0aGUgT3RoZXJBY3Rpb24gYXR0cmlidXRlIG11c3QgaGF2ZSBhIG5vbmVtcHR5IHZhbHVlCiAgLS0+CiAgPCEtLSBPdGhlckFjdGlvbjogVXNlci1kZWZpbmVkIGtleSBjb21iaW5hdGlvbiB0eXBlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXlhY3Rpb24uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWN0aW9uIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2xpY2siLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZG91YmxlLWNsaWNrIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InByZXNzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlcSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzaW11bCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcmFjdGlvbiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgTGFiZWw6IElkZW50aWZ5aW5nIG51bWJlciBvciBzdHJpbmc7IGRlZmF1bHQgaXMgdXN1YWxseSB0aGUKICAgIGFwcHJvcHJpYXRlIG51bWJlciBvciBzdHJpbmcgYXV0b2dlbmVyYXRlZCBieSBhIGZvcm1hdHRlcgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsYWJlbC5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbCIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgRm9ybWF0OiB3aGV0aGVyIGVsZW1lbnQgaXMgYXNzdW1lZCB0byBjb250YWluIHNpZ25pZmljYW50IHdoaXRlCiAgICBzcGFjZQogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaW5lc3BlY2lmaWMuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZm9ybWF0IiBkZWZhdWx0PSJsaW5lc3BlY2lmaWMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lc3BlY2lmaWMiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGluZW51bWJlcmluZyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im51bWJlcmVkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InVubnVtYmVyZWQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gTGlua2VuZDogbGluayB0byByZWxhdGVkIGluZm9ybWF0aW9uOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaW5rZW5kLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxpbmtlbmQiIHR5cGU9InhzOklEUkVGIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIExpbmtlbmQ6IHJlcXVpcmVkIGxpbmsgdG8gcmVsYXRlZCBpbmZvcm1hdGlvbiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGlua2VuZHJlcS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaW5rZW5kIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czpJRFJFRiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgTGlua2VuZHM6IGxpbmsgdG8gb25lIG9yIG1vcmUgc2V0cyBvZiByZWxhdGVkIGluZm9ybWF0aW9uOyBubwogICAgZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaW5rZW5kcy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaW5rZW5kcyIgdHlwZT0ieHM6SURSRUZTIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWFyay5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXJrIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIE1vcmVJbmZvOiB3aGV0aGVyIGVsZW1lbnQncyBjb250ZW50IGhhcyBhbiBhc3NvY2lhdGVkIFJlZkVudHJ5IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtb3JlaW5mby5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtb3JlaW5mbyIgZGVmYXVsdD0ibm9uZSI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlZmVudHJ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vbmUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gUGFnZW51bTogbnVtYmVyIG9mIHBhZ2Ugb24gd2hpY2ggZWxlbWVudCBhcHBlYXJzOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYWdlbnVtLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhZ2VudW0iLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIFN0YXR1czogRWRpdG9yaWFsIG9yIHB1YmxpY2F0aW9uIHN0YXR1cyBvZiB0aGUgZWxlbWVudAogICAgaXQgYXBwbGllcyB0bywgc3VjaCBhcyAiaW4gcmV2aWV3IiBvciAiYXBwcm92ZWQgZm9yIGRpc3RyaWJ1dGlvbiIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RhdHVzLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0YXR1cyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgV2lkdGg6IHdpZHRoIG9mIHRoZSBsb25nZXN0IGxpbmUgaW4gdGhlIGVsZW1lbnQgdG8gd2hpY2ggaXQKICAgIHBlcnRhaW5zLCBpbiBudW1iZXIgb2YgY2hhcmFjdGVycwogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ3aWR0aC5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gVGl0bGUgZWxlbWVudHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGl0bGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRpdGxlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRpdGxlLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRpdGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRpdGxlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRpdGxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRpdGxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0aXRsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRpdGxlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGl0bGVhYmJyZXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRpdGxlYWJicmV2Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRpdGxlLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRpdGxlYWJicmV2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRpdGxlYWJicmV2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRpdGxlYWJicmV2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGl0bGVhYmJyZXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRpdGxlYWJicmV2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdGl0bGVhYmJyZXYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJ0aXRsZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3VidGl0bGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGl0bGUuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3VidGl0bGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3VidGl0bGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3VidGl0bGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJ0aXRsZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3VidGl0bGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdWJ0aXRsZS5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gQmlibGlvZ3JhcGhpYyBlbnRpdGllcyBhbmQgZWxlbWVudHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tCiAgICBUaGUgYmlibGlvZ3JhcGhpYyBlbGVtZW50cyBhcmUgdHlwaWNhbGx5IHVzZWQgaW4gdGhlIGRvY3VtZW50CiAgICBoaWVyYXJjaHkuIFRoZXkgZG8gbm90IGFwcGVhciBpbiBjb250ZW50IG1vZGVscyBvZiBpbmZvcm1hdGlvbgogICAgcG9vbCBlbGVtZW50cy4gIFNlZSBhbHNvIHRoZSBkb2N1bWVudCBpbmZvcm1hdGlvbiBlbGVtZW50cywKICAgIGJlbG93LgogIC0tPgogIDx4czpncm91cCBuYW1lPSJwZXJzb24uaWRlbnQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaG9ub3JpZmljIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZmlyc3RuYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3VybmFtZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVhZ2UiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvdGhlcm5hbWUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZmZpbGlhdGlvbiIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImF1dGhvcmJsdXJiIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29udHJpYiIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iYmlibGlvY29tcG9uZW50Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFiYnJldiIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFic3RyYWN0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRkcmVzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFydHBhZ2VudW1zIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yZ3JvdXAiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhdXRob3Jpbml0aWFscyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb21pc2MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9zZXQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb2xsYWIiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb25mZ3JvdXAiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb250cmFjdG51bSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbnRyYWN0c3BvbnNvciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvcHlyaWdodCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvcnBhdXRob3IiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb3JwbmFtZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImRhdGUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlZGl0aW9uIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZWRpdG9yIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW52cGFydG51bWJlciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImlzYm4iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpc3NuIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaXNzdWVudW0iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvcmduYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvaWQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjaXRlYmlibGlvaWQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9zb3VyY2UiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9yZWxhdGlvbiIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb2NvdmVyYWdlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ib3RoZXJjcmVkaXQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYWdlbnVtcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InByaW50aGlzdG9yeSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InByb2R1Y3RuYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJvZHVjdG51bWJlciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InB1YmRhdGUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwdWJsaXNoZXIiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwdWJsaXNoZXJuYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHVic251bWJlciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlbGVhc2VpbmZvIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icmV2aGlzdG9yeSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InNlcmllc3ZvbG51bXMiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGVhYmJyZXYiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2b2x1bWVudW0iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjaXRldGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwZXJzb25uYW1lIi8+CiAgICAgIDx4czpncm91cCByZWY9InBlcnNvbi5pZGVudC5taXgiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDwhLS0gSSBkb24ndCB0aGluayB0aGlzIGlzIHdlbGwgcGxhY2VkLCBidXQgaXQgbmVlZHMgdG8gYmUgaGVyZSBiZWNhdXNlIG9mIC0tPgogIDwhLS0gdGhlIHJlZmVyZW5jZSB0byBiaWJsaW9jb21wb25lbnQubWl4IC0tPgogIDx4czpncm91cCBuYW1lPSJpbmZvLmNsYXNzIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im1lZGlhb2JqZWN0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGVnYWxub3RpY2UiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtb2Rlc3BlYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN1YmplY3RzZXQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJrZXl3b3Jkc2V0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaXRlcm1zZXQiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iYmlibGlvY29tcG9uZW50Lm1peCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb2VudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcnRpY2xlaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJpYmxpb2NvbXBvbmVudC5taXgiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2VudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2VudHJ5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb2VudHJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYmlibGlvZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9taXhlZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvbWl4ZWQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiaWJsaW9jb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9tc2V0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9taXhlZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9taXhlZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9taXhlZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb21peGVkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9taXhlZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb21peGVkLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJ0aWNsZWluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFydGljbGVpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJ0aWNsZWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXJ0aWNsZWluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJ0aWNsZWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcnRpY2xlaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXJ0aWNsZWluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhcnRpY2xlaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb3NldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvc2V0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImJpYmxpb2NvbXBvbmVudC5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb3NldC5lbGVtZW50IC0tPgogIDwhLS0gUmVsYXRpb246IFJlbGF0aW9uc2hpcCBvZiBlbGVtZW50cyBjb250YWluZWQgd2l0aGluIEJpYmxpb1NldCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvc2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWxhdGlvbiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvc2V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9zZXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9zZXQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9tc2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9tc2V0Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYmlibGlvY29tcG9uZW50Lm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvbXNldCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvbXNldC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9tc2V0LmVsZW1lbnQgLS0+CiAgPCEtLSBSZWxhdGlvbjogUmVsYXRpb25zaGlwIG9mIGVsZW1lbnRzIGNvbnRhaW5lZCB3aXRoaW4gQmlibGlvTVNldCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvbXNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVsYXRpb24iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb21zZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb21zZXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9tc2V0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvbWlzYy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvbWlzYyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb21pc2MuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmlibGlvbWlzYy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9taXNjLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvbWlzYy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmlibGlvbWlzYy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb21pc2MubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFN1YmplY3QsIEtleXdvcmQsIGFuZCBJVGVybVNldCBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YmplY3RzZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN1YmplY3RzZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic3ViamVjdCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJqZWN0c2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN1YmplY3RzZXQuZWxlbWVudCAtLT4KICA8IS0tIFNjaGVtZTogQ29udHJvbGxlZCB2b2NhYnVsYXJ5IGVtcGxveWVkIGluIFN1YmplY3RUZXJtcyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3ViamVjdHNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NoZW1lIiB0eXBlPSJ4czpOTVRPS0VOIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJqZWN0c2V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdWJqZWN0c2V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3ViamVjdHNldC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YmplY3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN1YmplY3QiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic3ViamVjdHRlcm0iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3ViamVjdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdWJqZWN0LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgV2VpZ2h0OiBSYW5raW5nIG9mIHRoaXMgZ3JvdXAgb2YgU3ViamVjdFRlcm1zIHJlbGF0aXZlCiAgICB0byBvdGhlcnMsIDAgaXMgbG93LCBubyBoaWdoZXN0IHZhbHVlIHNwZWNpZmllZAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3ZWlnaHQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN1YmplY3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdWJqZWN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3ViamVjdHRlcm0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN1YmplY3R0ZXJtIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YmplY3R0ZXJtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN1YmplY3R0ZXJtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YmplY3R0ZXJtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3ViamVjdHRlcm0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN1YmplY3R0ZXJtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3ViamVjdHRlcm0ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHN1YmplY3RzZXQuY29udGVudC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImtleXdvcmRzZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImtleXdvcmRzZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ia2V5d29yZCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXl3b3Jkc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGtleXdvcmRzZXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5d29yZHNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleXdvcmRzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGtleXdvcmRzZXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBrZXl3b3Jkc2V0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5d29yZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ia2V5d29yZCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXl3b3JkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGtleXdvcmQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5d29yZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleXdvcmQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGtleXdvcmQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBrZXl3b3JkLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBrZXl3b3Jkc2V0LmNvbnRlbnQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpdGVybXNldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaXRlcm1zZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5kZXh0ZXJtIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Iml0ZXJtc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGl0ZXJtc2V0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Iml0ZXJtc2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXRlcm1zZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGl0ZXJtc2V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaXRlcm1zZXQubW9kdWxlIC0tPgogIDwhLS0gQmlibGlvZ3JhcGhpYyBpbmZvIGZvciAiYmxvY2tzIiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmxvY2tpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJibG9ja2luZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJibG9ja2luZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmxvY2tpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJsb2NraW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJsb2NraW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmxvY2tpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYmxvY2tpbmZvLm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBDb21wb3VuZCAoc2VjdGlvbi1pc2gpIGVsZW1lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gTWVzc2FnZSBzZXQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnc2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dzZXQiIHN1YnN0aXR1dGlvbkdyb3VwPSJjb21wb3VuZC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtc2dlbnRyeSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlbXNnZW50cnkiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1zZ3NldC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dzZXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1zZ3NldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1zZ3NldC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2VudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dlbnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtc2ciLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ibXNnaW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibXNnZXhwbGFuIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2VudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1zZ2VudHJ5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1zZ2VudHJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaW1wbGVtc2dlbnRyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2ltcGxlbXNnZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2d0ZXh0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibXNnZXhwbGFuIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBsZW1zZ2VudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNpbXBsZW1zZ2VudHJ5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpbXBsZW1zZ2VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhdWRpZW5jZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsZXZlbCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcmlnaW4iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBsZW1zZ2VudHJ5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzaW1wbGVtc2dlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNpbXBsZW1zZ2VudHJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2ciPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2dtYWluIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNnc3ViIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ3JlbCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2cuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnbWFpbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibXNnbWFpbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ3RleHQiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnbWFpbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dtYWluLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ21haW4uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dtYWluLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dtYWluLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnbWFpbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ3N1Yi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibXNnc3ViIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNndGV4dCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dzdWIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnc3ViLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ3N1Yi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ3N1Yi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnc3ViLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnc3ViLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNncmVsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dyZWwiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2d0ZXh0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ3JlbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dyZWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNncmVsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNncmVsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dyZWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dyZWwubW9kdWxlIC0tPgogIDwhLS0gTXNnVGV4dCAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2luZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ2luZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNnbGV2ZWwiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ29yaWciLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ2F1ZCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2xldmVsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dsZXZlbCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnbGV2ZWwuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnbGV2ZWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnbGV2ZWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dsZXZlbC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnbGV2ZWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dsZXZlbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ29yaWcucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ29yaWciPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ29yaWcuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnb3JpZy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dvcmlnLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnb3JpZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnb3JpZy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1zZ29yaWcubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dhdWQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ2F1ZCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2F1ZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dhdWQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnYXVkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnYXVkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dhdWQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dhdWQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dleHBsYW4ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ2V4cGxhbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dleHBsYW4uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnZXhwbGFuLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2V4cGxhbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2V4cGxhbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnZXhwbGFuLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnZXhwbGFuLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBtc2dzZXQuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBRYW5kQVNldCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InFhbmRhc2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJxYW5kYXNldCIgc3Vic3RpdHV0aW9uR3JvdXA9ImNvbXBvdW5kLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icWFuZGFzZXQubWl4Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InFhbmRhZGl2Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJxYW5kYWVudHJ5Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InFhbmRhc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHFhbmRhc2V0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InFhbmRhc2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZWZhdWx0bGFiZWwiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJxYW5kYSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJudW1iZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm9uZSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icWFuZGFzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHFhbmRhc2V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcWFuZGFzZXQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxYW5kYWRpdi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icWFuZGFkaXYiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJxYW5kYXNldC5taXgiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icWFuZGFkaXYiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InFhbmRhZW50cnkiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icWFuZGFkaXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcWFuZGFkaXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icWFuZGFkaXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJxYW5kYWRpdi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcWFuZGFkaXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBxYW5kYWRpdi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InFhbmRhZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InFhbmRhZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZXZoaXN0b3J5Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJxdWVzdGlvbiIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYW5zd2VyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InFhbmRhZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcWFuZGFlbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxYW5kYWVudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icWFuZGFlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcWFuZGFlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHFhbmRhZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxdWVzdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icXVlc3Rpb24iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImxhYmVsIi8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InFhbmRhc2V0Lm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJxdWVzdGlvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBxdWVzdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxdWVzdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InF1ZXN0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBxdWVzdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHF1ZXN0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYW5zd2VyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhbnN3ZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImxhYmVsIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icWFuZGFzZXQubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJxYW5kYWVudHJ5Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFuc3dlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhbnN3ZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYW5zd2VyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYW5zd2VyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhbnN3ZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhbnN3ZXIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsYWJlbC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGFiZWwiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0id29yZC5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsYWJlbC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsYWJlbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBsYWJlbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGxhYmVsLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBxYW5kYXNldC5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIFByb2NlZHVyZSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2NlZHVyZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJvY2VkdXJlIiBzdWJzdGl0dXRpb25Hcm91cD0iY29tcG91bmQuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic3RlcCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9jZWR1cmUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJvY2VkdXJlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2NlZHVyZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2NlZHVyZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJvY2VkdXJlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHJvY2VkdXJlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RlcC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3RlcCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6c2VxdWVuY2UgbWluT2NjdXJzPSIwIj4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN1YnN0ZXBzIi8+CiAgICAgICAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzdGVwcyIvPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGVwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN0ZXAuZWxlbWVudCAtLT4KICA8IS0tIFBlcmZvcm1hbmNlOiBXaGV0aGVyIHRoZSBTdGVwIG11c3QgYmUgcGVyZm9ybWVkIC0tPgogIDwhLS0gbm90ICNSRVFVSVJFRCEgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0ZXAuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBlcmZvcm1hbmNlIiBkZWZhdWx0PSJyZXF1aXJlZCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9wdGlvbmFsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlcXVpcmVkIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGVwLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdGVwLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3RlcC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YnN0ZXBzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdWJzdGVwcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzdGVwIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YnN0ZXBzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN1YnN0ZXBzLmVsZW1lbnQgLS0+CiAgPCEtLSBQZXJmb3JtYW5jZTogd2hldGhlciBlbnRpcmUgc2V0IG9mIHN1YnN0ZXBzIG11c3QgYmUgcGVyZm9ybWVkIC0tPgogIDwhLS0gbm90ICNSRVFVSVJFRCEgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YnN0ZXBzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZXJmb3JtYW5jZSIgZGVmYXVsdD0icmVxdWlyZWQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHRpb25hbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXF1aXJlZCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3Vic3RlcHMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN1YnN0ZXBzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3Vic3RlcHMubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHByb2NlZHVyZS5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIFNpZGViYXIgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpZGViYXJpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaWRlYmFyaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpZGViYXJpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNpZGViYXJpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpZGViYXJpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2lkZWJhcmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNpZGViYXJpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2lkZWJhcmluZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaWRlYmFyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaWRlYmFyIiBzdWJzdGl0dXRpb25Hcm91cD0iY29tcG91bmQuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNpZGViYXJpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaWRlYmFyLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaWRlYmFyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNpZGViYXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2lkZWJhci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpZGViYXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNpZGViYXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzaWRlYmFyLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzaWRlYmFyLmNvbnRlbnQubW9kZWwgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gUGFyYWdyYXBoLXJlbGF0ZWQgZWxlbWVudHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWJzdHJhY3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFic3RyYWN0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWJzdHJhY3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWJzdHJhY3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWJzdHJhY3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhYnN0cmFjdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWJzdHJhY3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhYnN0cmFjdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvcmJsdXJiLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhdXRob3JibHVyYiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1dGhvcmJsdXJiLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGF1dGhvcmJsdXJiLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvcmJsdXJiLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXV0aG9yYmx1cmIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGF1dGhvcmJsdXJiLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXV0aG9yYmx1cmIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwZXJzb25ibHVyYi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGVyc29uYmx1cmIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwZXJzb25ibHVyYi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwZXJzb25ibHVyYi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwZXJzb25ibHVyYi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBlcnNvbmJsdXJiLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwZXJzb25ibHVyYi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBlcnNvbmJsdXJiLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmxvY2txdW90ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmxvY2txdW90ZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhdHRyaWJ1dGlvbiIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJsb2NrcXVvdGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmxvY2txdW90ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJibG9ja3F1b3RlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmxvY2txdW90ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmxvY2txdW90ZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJsb2NrcXVvdGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdHRyaWJ1dGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXR0cmlidXRpb24iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdHRyaWJ1dGlvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhdHRyaWJ1dGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdHRyaWJ1dGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF0dHJpYnV0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhdHRyaWJ1dGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGF0dHJpYnV0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYnJpZGdlaGVhZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYnJpZGdlaGVhZCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0aXRsZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJicmlkZ2VoZWFkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJyaWRnZWhlYWQuZWxlbWVudCAtLT4KICA8IS0tCiAgICBSZW5kZXJhczogSW5kaWNhdGVzIHRoZSBmb3JtYXQgaW4gd2hpY2ggdGhlIEJyaWRnZUhlYWQKICAgIHNob3VsZCBhcHBlYXIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYnJpZGdlaGVhZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVuZGVyYXMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYnJpZGdlaGVhZC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYnJpZGdlaGVhZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJyaWRnZWhlYWQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZW1hcmsucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlbWFyayI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlbWFyay5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZW1hcmsuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVtYXJrLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVtYXJrLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZW1hcmsuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZW1hcmsubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcGlncmFwaC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXBpZ3JhcGgiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImF0dHJpYnV0aW9uIi8+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibGl0ZXJhbGxheW91dCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcGlncmFwaC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlcGlncmFwaC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcGlncmFwaC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVwaWdyYXBoLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlcGlncmFwaC5hdHRsaXN0IC0tPgogIDwhLS0gQXR0cmlidXRpb24gKGRlZmluZWQgYWJvdmUpIC0tPgogIDwhLS0gZW5kIG9mIGVwaWdyYXBoLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZm9vdG5vdGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZvb3Rub3RlIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZm9vdG5vdGUubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZvb3Rub3RlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZvb3Rub3RlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvb3Rub3RlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmb290bm90ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZm9vdG5vdGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmb290bm90ZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImhpZ2hsaWdodHMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImhpZ2hsaWdodHMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaGlnaGxpZ2h0cy5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaGlnaGxpZ2h0cy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBoaWdobGlnaHRzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImhpZ2hsaWdodHMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJoaWdobGlnaHRzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBoaWdobGlnaHRzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaGlnaGxpZ2h0cy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvcm1hbHBhcmEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZvcm1hbHBhcmEiIHN1YnN0aXR1dGlvbkdyb3VwPSJwYXJhLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZm9ybWFscGFyYS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmb3JtYWxwYXJhLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvcm1hbHBhcmEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmb3JtYWxwYXJhLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmb3JtYWxwYXJhLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZm9ybWFscGFyYS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcmEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBhcmEiIHN1YnN0aXR1dGlvbkdyb3VwPSJwYXJhLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czpncm91cCByZWY9InBhcmEubWl4Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBhcmEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFyYS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcmEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhcmEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwYXJhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2ltcGFyYS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2ltcGFyYSIgc3Vic3RpdHV0aW9uR3JvdXA9InBhcmEuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaW1wYXJhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNpbXBhcmEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2ltcGFyYS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBhcmEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNpbXBhcmEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzaW1wYXJhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWRtb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNhdXRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJhZG1vbi5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRtb24ubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNhdXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2F1dGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYXV0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRtb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNhdXRpb24uYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbXBvcnRhbnQiIHN1YnN0aXR1dGlvbkdyb3VwPSJhZG1vbi5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRtb24ubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltcG9ydGFudC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbXBvcnRhbnQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW1wb3J0YW50LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRtb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGltcG9ydGFudC5hdHRsaXN0IC0tPgogIDx4czplbGVtZW50IG5hbWU9Im5vdGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJhZG1vbi5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRtb24ubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im5vdGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygbm90ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJub3RlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRtb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG5vdGUuYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0aXAiIHN1YnN0aXR1dGlvbkdyb3VwPSJhZG1vbi5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRtb24ubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRpcC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0aXAuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGlwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRtb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRpcC5hdHRsaXN0IC0tPgogIDx4czplbGVtZW50IG5hbWU9Indhcm5pbmciIHN1YnN0aXR1dGlvbkdyb3VwPSJhZG1vbi5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRtb24ubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Indhcm5pbmcuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygd2FybmluZy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ3YXJuaW5nLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRtb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHdhcm5pbmcuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhZG1vbi5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gTGlzdHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEdsb3NzTGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ2xvc3NsaXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc2VudHJ5Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzbGlzdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc2xpc3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NsaXN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NsaXN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBnbG9zc2xpc3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc2xpc3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2VudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc2VudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ2xvc3N0ZXJtIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImFjcm9ueW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYWJicmV2Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJldmhpc3RvcnkiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnbG9zc3NlZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ2xvc3NkZWYiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NlbnRyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc2VudHJ5LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU29ydEFzOiBTdHJpbmcgYnkgd2hpY2ggdGhlIEdsb3NzRW50cnkgaXMgdG8gYmUgc29ydGVkCiAgICAoYWxwaGFiZXRpemVkKSBpbiBsaWV1IG9mIGl0cyBwcm9wZXIgY29udGVudAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzb3J0YXMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc2VudHJ5Lm1vZHVsZSAtLT4KICA8IS0tIEdsb3NzVGVybSAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzZGVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc2RlZiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ2xvc3NkZWYubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc3NlZWFsc28iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NkZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ2xvc3NkZWYuZWxlbWVudCAtLT4KICA8IS0tIFN1YmplY3Q6IExpc3Qgb2Ygc3ViamVjdHM7IGtleXdvcmRzIGZvciB0aGUgZGVmaW5pdGlvbiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NkZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN1YmplY3QiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzZGVmLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBnbG9zc2RlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzZGVmLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NzZWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3Nzc2VlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NzZWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ2xvc3NzZWUuZWxlbWVudCAtLT4KICA8IS0tCiAgICBPdGhlclRlcm06IFJlZmVyZW5jZSB0byB0aGUgR2xvc3NFbnRyeSB3aG9zZSBHbG9zc1Rlcm0KICAgIHNob3VsZCBiZSBkaXNwbGF5ZWQgYXQgdGhlIHBvaW50IG9mIHRoZSBHbG9zc1NlZQogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc3NlZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJ0ZXJtIiB0eXBlPSJ4czpJRFJFRiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NzZWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3Nzc2VlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NzZWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc3NlZWFsc28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3Nzc2VlYWxzbyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3Nzc2VlYWxzby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc3NlZWFsc28uZWxlbWVudCAtLT4KICA8IS0tCiAgICBPdGhlclRlcm06IFJlZmVyZW5jZSB0byB0aGUgR2xvc3NFbnRyeSB3aG9zZSBHbG9zc1Rlcm0KICAgIHNob3VsZCBiZSBkaXNwbGF5ZWQgYXQgdGhlIHBvaW50IG9mIHRoZSBHbG9zc1NlZUFsc28KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NzZWVhbHNvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcnRlcm0iIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc3NlZWFsc28ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3Nzc2VlYWxzby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3Nzc2VlYWxzby5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NlbnRyeS5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIEl0ZW1pemVkTGlzdCBhbmQgT3JkZXJlZExpc3QgLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Iml0ZW1pemVkbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaXRlbWl6ZWRsaXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imxpc3RwcmVhbWJsZS5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJsaXN0aXRlbSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpdGVtaXplZGxpc3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaXRlbWl6ZWRsaXN0LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU3BhY2luZzogV2hldGhlciB0aGUgdmVydGljYWwgc3BhY2UgaW4gdGhlIGxpc3Qgc2hvdWxkIGJlCiAgICBjb21wcmVzc2VkCiAgLS0+CiAgPCEtLQogICAgTWFyazogS2V5d29yZCwgZS5nLiwgYnVsbGV0LCBkYXNoLCBjaGVja2JveCwgbm9uZTsKICAgIGxpc3Qgb2Yga2V5d29yZHMgYW5kIGRlZmF1bHRzIGFyZSBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYwogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpdGVtaXplZGxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYWNpbmciPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JtYWwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29tcGFjdCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWFyay5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Iml0ZW1pemVkbGlzdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaXRlbWl6ZWRsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaXRlbWl6ZWRsaXN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3JkZXJlZGxpc3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9yZGVyZWRsaXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imxpc3RwcmVhbWJsZS5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJsaXN0aXRlbSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcmRlcmVkbGlzdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvcmRlcmVkbGlzdC5lbGVtZW50IC0tPgogIDwhLS0KICAgIE51bWVyYXRpb246IFN0eWxlIG9mIExpc3RJdGVtIG51bWJlcmVkOyBkZWZhdWx0IGlzIGV4cGVjdGVkCiAgICB0byBiZSBBcmFiaWMKICAtLT4KICA8IS0tCiAgICBJbmhlcml0TnVtOiBTcGVjaWZpZXMgZm9yIGEgbmVzdGVkIGxpc3QgdGhhdCB0aGUgbnVtYmVyaW5nCiAgICBvZiBMaXN0SXRlbXMgc2hvdWxkIGluY2x1ZGUgdGhlIG51bWJlciBvZiB0aGUgaXRlbQogICAgd2l0aGluIHdoaWNoIHRoZXkgYXJlIG5lc3RlZCAoZS5nLiwgMWEgYW5kIDFiIHdpdGhpbiAxLAogICAgcmF0aGVyIHRoYW4gYSBhbmQgYikKICAtLT4KICA8IS0tCiAgICBDb250aW51YXRpb246IFdoZXJlIGxpc3QgbnVtYmVyaW5nIGJlZ2lucyBhZnJlc2ggKFJlc3RhcnRzLAogICAgdGhlIGRlZmF1bHQpIG9yIGNvbnRpbnVlcyB0aGF0IG9mIHRoZSBpbW1lZGlhdGVseSBwcmVjZWRpbmcKICAgIGxpc3QgKENvbnRpbnVlcykKICAtLT4KICA8IS0tCiAgICBTcGFjaW5nOiBXaGV0aGVyIHRoZSB2ZXJ0aWNhbCBzcGFjZSBpbiB0aGUgbGlzdCBzaG91bGQgYmUKICAgIGNvbXByZXNzZWQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3JkZXJlZGxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im51bWVyYXRpb24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhcmFiaWMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idXBwZXJhbHBoYSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsb3dlcmFscGhhIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InVwcGVycm9tYW4iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibG93ZXJyb21hbiIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbmhlcml0bnVtIiBkZWZhdWx0PSJpZ25vcmUiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpbmhlcml0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imlnbm9yZSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250aW51YXRpb24iIGRlZmF1bHQ9InJlc3RhcnRzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29udGludWVzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlc3RhcnRzIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYWNpbmciPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JtYWwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29tcGFjdCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3JkZXJlZGxpc3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9yZGVyZWRsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb3JkZXJlZGxpc3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaXN0aXRlbS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGlzdGl0ZW0iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaXN0aXRlbS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsaXN0aXRlbS5lbGVtZW50IC0tPgogIDwhLS0KICAgIE92ZXJyaWRlOiBJbmRpY2F0ZXMgdGhlIG1hcmsgdG8gYmUgdXNlZCBmb3IgdGhpcyBMaXN0SXRlbQogICAgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBtYXJrIG9yIHRoZSBtYXJrIHNwZWNpZmllZCBieQogICAgdGhlIE1hcmsgYXR0cmlidXRlIG9uIHRoZSBlbmNsb3NpbmcgSXRlbWl6ZWRMaXN0CiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imxpc3RpdGVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdmVycmlkZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlzdGl0ZW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpc3RpdGVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGlzdGl0ZW0ubW9kdWxlIC0tPgogIDwhLS0gU2VnbWVudGVkTGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VnbWVudGVkbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VnbWVudGVkbGlzdCIgc3Vic3RpdHV0aW9uR3JvdXA9Imxpc3QuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlZ3RpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VnbGlzdGl0ZW0iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VnbWVudGVkbGlzdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWdtZW50ZWRsaXN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZ21lbnRlZGxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWdtZW50ZWRsaXN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWdtZW50ZWRsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VnbWVudGVkbGlzdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZ3RpdGxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWd0aXRsZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0aXRsZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWd0aXRsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWd0aXRsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWd0aXRsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZ3RpdGxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWd0aXRsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlZ3RpdGxlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VnbGlzdGl0ZW0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlZ2xpc3RpdGVtIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlZyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWdsaXN0aXRlbS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWdsaXN0aXRlbS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWdsaXN0aXRlbS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZ2xpc3RpdGVtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWdsaXN0aXRlbS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlZ2xpc3RpdGVtLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VnLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWciPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWcuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VnLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VnLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzZWdtZW50ZWRsaXN0LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gU2ltcGxlTGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2ltcGxlbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2ltcGxlbGlzdCIgc3Vic3RpdHV0aW9uR3JvdXA9Imxpc3QuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVtYmVyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBsZWxpc3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlbGlzdC5lbGVtZW50IC0tPgogIDwhLS0gQ29sdW1uczogVGhlIG51bWJlciBvZiBjb2x1bW5zIHRoZSBhcnJheSBzaG91bGQgY29udGFpbiAtLT4KICA8IS0tCiAgICBUeXBlOiBIb3cgdGhlIE1lbWJlcnMgb2YgdGhlIFNpbXBsZUxpc3Qgc2hvdWxkIGJlCiAgICBmb3JtYXR0ZWQ6IElubGluZSAobWVtYmVycyBzZXBhcmF0ZWQgd2l0aCBjb21tYXMgZXRjLgogICAgaW5saW5lKSwgVmVydCAodG9wIHRvIGJvdHRvbSBpbiBuIENvbHVtbnMpLCBvciBIb3JpeiAoaW4KICAgIHRoZSBkaXJlY3Rpb24gb2YgdGV4dCBmbG93KSBpbiBuIENvbHVtbnMuICBJZiBDb2x1bW4KICAgIGlzIDEgb3IgaW1wbGllZCwgVHlwZT1WZXJ0IGFuZCBUeXBlPUhvcml6IGdpdmUgdGhlIHNhbWUKICAgIHJlc3VsdHMuCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpbXBsZWxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHVtbnMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIgZGVmYXVsdD0idmVydCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlubGluZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ2ZXJ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imhvcml6Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaW1wbGVsaXN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzaW1wbGVsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlbGlzdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lbWJlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWVtYmVyIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVtYmVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1lbWJlci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZW1iZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZW1iZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1lbWJlci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1lbWJlci5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlbGlzdC5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIFZhcmlhYmxlTGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZhcmlhYmxlbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idmFyaWFibGVsaXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imxpc3RwcmVhbWJsZS5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ2YXJsaXN0ZW50cnkiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmFyaWFibGVsaXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZhcmlhYmxlbGlzdC5lbGVtZW50IC0tPgogIDwhLS0KICAgIFRlcm1MZW5ndGg6IExlbmd0aCBiZXlvbmQgd2hpY2ggdGhlIHByZXNlbnRhdGlvbiBlbmdpbmUKICAgIG1heSBjb25zaWRlciB0aGUgVGVybSB0b28gbG9uZyBhbmQgc2VsZWN0IGFuIGFsdGVybmF0ZQogICAgcHJlc2VudGF0aW9uIG9mIHRoZSBUZXJtIGFuZCwgb3IsIGl0cyBhc3NvY2lhdGVkIExpc3RJdGVtLgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2YXJpYWJsZWxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRlcm1sZW5ndGgiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZhcmlhYmxlbGlzdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdmFyaWFibGVsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdmFyaWFibGVsaXN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmFybGlzdGVudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2YXJsaXN0ZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGVybSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdGl0ZW0iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmFybGlzdGVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZhcmxpc3RlbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2YXJsaXN0ZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2YXJsaXN0ZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZhcmxpc3RlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZhcmxpc3RlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRlcm0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRlcm0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXJtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRlcm0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGVybS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRlcm0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRlcm0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0ZXJtLm1vZHVsZSAtLT4KICA8IS0tIExpc3RJdGVtIChkZWZpbmVkIGFib3ZlKSAtLT4KICA8IS0tIGVuZCBvZiB2YXJpYWJsZWxpc3QuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBDYWxsb3V0TGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYWxsb3V0bGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2FsbG91dGxpc3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaXN0LmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjYWxsb3V0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNhbGxvdXRsaXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNhbGxvdXRsaXN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNhbGxvdXRsaXN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2FsbG91dGxpc3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNhbGxvdXRsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2FsbG91dGxpc3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYWxsb3V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjYWxsb3V0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2FsbG91dC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjYWxsb3V0LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQXJlYVJlZnM6IElEcyBvZiBvbmUgb3IgbW9yZSBBcmVhcyBvciBBcmVhU2V0cyBkZXNjcmliZWQKICAgIGJ5IHRoaXMgQ2FsbG91dAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYWxsb3V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcmVhcmVmcyIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6SURSRUZTIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjYWxsb3V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjYWxsb3V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2FsbG91dC5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgY2FsbG91dGxpc3QuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gT2JqZWN0cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEV4YW1wbGVzIGV0Yy4gLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImV4YW1wbGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImV4YW1wbGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJmb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImV4YW1wbGUubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImV4YW1wbGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZXhhbXBsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJleGFtcGxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ3aWR0aC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImV4YW1wbGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGV4YW1wbGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBleGFtcGxlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxleGFtcGxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmZvcm1hbGV4YW1wbGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImV4YW1wbGUubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZm9ybWFsZXhhbXBsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGV4YW1wbGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxleGFtcGxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0id2lkdGguYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmZvcm1hbGV4YW1wbGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZm9ybWFsZXhhbXBsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZm9ybWFsZXhhbXBsZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2dyYW1saXN0aW5nY28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByb2dyYW1saXN0aW5nY28iIHN1YnN0aXR1dGlvbkdyb3VwPSJsaW5lc3BlY2lmaWMuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmVhc3BlYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icHJvZ3JhbWxpc3RpbmciLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNhbGxvdXRsaXN0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2dyYW1saXN0aW5nY28uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJvZ3JhbWxpc3Rpbmdjby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9ncmFtbGlzdGluZ2NvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvZ3JhbWxpc3Rpbmdjby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJvZ3JhbWxpc3Rpbmdjby5hdHRsaXN0IC0tPgogIDwhLS0gQ2FsbG91dExpc3QgKGRlZmluZWQgYWJvdmUgaW4gTGlzdHMpIC0tPgogIDwhLS0gZW5kIG9mIGluZm9ybWFsZXhhbXBsZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFyZWFzcGVjLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcmVhc3BlYyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXJlYSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXJlYXNldCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJlYXNwZWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXJlYXNwZWMuZWxlbWVudCAtLT4KICA8IS0tCiAgICBVbml0czogZ2xvYmFsIHVuaXQgb2YgbWVhc3VyZSBpbiB3aGljaCBjb29yZGluYXRlcyBpbgogICAgdGhpcyBzcGVjIGFyZSBleHByZXNzZWQ6CiAgICAKICAgIC0gQ0FMU1BhaXIgIngxLHkxIHgyLHkyIjogbG93ZXItbGVmdCBhbmQgdXBwZXItcmlnaHQKICAgIGNvb3JkaW5hdGVzIGluIGEgcmVjdGFuZ2xlIGRlc2NyaWJpbmcgcmVwcm8gYXJlYSBpbiB3aGljaAogICAgZ3JhcGhpYyBpcyBwbGFjZWQsIHdoZXJlIFggYW5kIFkgZGltZW5zaW9ucyBhcmUgZWFjaCBzb21lCiAgICBudW1iZXIgMC4uMTAwMDAgKHRha2VuIGZyb20gQ0FMUyBncmFwaGljIGF0dHJpYnV0ZXMpCiAgICAKICAgIC0gTGluZUNvbHVtbiAibGluZSBjb2x1bW4iOiBsaW5lIG51bWJlciBhbmQgY29sdW1uIG51bWJlcgogICAgYXQgd2hpY2ggdG8gc3RhcnQgY2FsbG91dCB0ZXh0IGluICJsaW5lc3BlY2lmaWMiIGNvbnRlbnQKICAgIAogICAgLSBMaW5lUmFuZ2UgInN0YXJ0bGluZSBlbmRsaW5lIjogd2hvbGUgbGluZXMgZnJvbSBzdGFydGxpbmUKICAgIHRvIGVuZGxpbmUgaW4gImxpbmVzcGVjaWZpYyIgY29udGVudAogICAgCiAgICAtIExpbmVDb2x1bW5QYWlyICJsaW5lMSBjb2wxIGxpbmUyIGNvbDIiOiBzdGFydGluZyBhbmQgZW5kaW5nCiAgICBwb2ludHMgb2YgYXJlYSBpbiAibGluZXNwZWNpZmljIiBjb250ZW50IHRoYXQgc3RhcnRzIGF0CiAgICBmaXJzdCBwb3NpdGlvbiBhbmQgZW5kcyBhdCBzZWNvbmQgcG9zaXRpb24gKGluY2x1ZGluZyB0aGUKICAgIGJlZ2lubmluZ3Mgb2YgYW55IGludGVydmVuaW5nIGxpbmVzKQogICAgCiAgICAtIE90aGVyOiBkaXJlY3RpdmUgdG8gbG9vayBhdCB2YWx1ZSBvZiBPdGhlclVuaXRzIGF0dHJpYnV0ZQogICAgdG8gZ2V0IGltcGxlbWVudGF0aW9uLXNwZWNpZmljIGtleXdvcmQKICAgIAogICAgVGhlIGRlZmF1bHQgaXMgaW1wbGVtZW50YXRpb24tc3BlY2lmaWM7IHVzdWFsbHkgZGVwZW5kZW50IG9uCiAgICB0aGUgcGFyZW50IGVsZW1lbnQgKEdyYXBoaWNDTyBnZXRzIENBTFNQYWlyLCBQcm9ncmFtTGlzdGluZ0NPCiAgICBhbmQgU2NyZWVuQ08gZ2V0IExpbmVDb2x1bW4pCiAgLS0+CiAgPCEtLSBPdGhlclVuaXRzOiBVc2VyLWRlZmluZWQgdW5pdHMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFyZWFzcGVjLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1bml0cyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNhbHNwYWlyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVjb2x1bW4iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGluZXJhbmdlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVjb2x1bW5wYWlyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVydW5pdHMiIHR5cGU9InhzOk5NVE9LRU4iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZWFzcGVjLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhcmVhc3BlYy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFyZWFzcGVjLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJlYS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJlYSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZWEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXJlYS5lbGVtZW50IC0tPgogIDwhLS0gYnVnIG51bWJlci9zeW1ib2wgb3ZlcnJpZGUgb3IgaW5pdGlhbGl6YXRpb24gLS0+CiAgPCEtLSB0byBhbnkgcmVsYXRlZCBpbmZvcm1hdGlvbiAtLT4KICA8IS0tCiAgICBVbml0czogdW5pdCBvZiBtZWFzdXJlIGluIHdoaWNoIGNvb3JkaW5hdGVzIGluIHRoaXMKICAgIGFyZWEgYXJlIGV4cHJlc3NlZDsgaW5oZXJpdHMgZnJvbSBBcmVhU2V0IGFuZCBBcmVhU3BlYwogIC0tPgogIDwhLS0gT3RoZXJVbml0czogVXNlci1kZWZpbmVkIHVuaXRzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmVhLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idW5pdHMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjYWxzcGFpciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lY29sdW1uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVyYW5nZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lY29sdW1ucGFpciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcnVuaXRzIiB0eXBlPSJ4czpOTVRPS0VOIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvb3JkcyIgdXNlPSJyZXF1aXJlZCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaWRyZXEuY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJlYS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXJlYS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFyZWEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmVhc2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcmVhc2V0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFyZWEiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJlYXNldC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhcmVhc2V0LmVsZW1lbnQgLS0+CiAgPCEtLSBidWcgbnVtYmVyL3N5bWJvbCBvdmVycmlkZSBvciBpbml0aWFsaXphdGlvbiAtLT4KICA8IS0tCiAgICBVbml0czogdW5pdCBvZiBtZWFzdXJlIGluIHdoaWNoIGNvb3JkaW5hdGVzIGluIHRoaXMKICAgIGFyZWEgYXJlIGV4cHJlc3NlZDsgaW5oZXJpdHMgZnJvbSBBcmVhU3BlYwogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmVhc2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVuaXRzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2Fsc3BhaXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGluZWNvbHVtbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lcmFuZ2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGluZWNvbHVtbnBhaXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJ1bml0cyIgdHlwZT0ieHM6Tk1UT0tFTiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb29yZHMiIHVzZT0icmVxdWlyZWQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlkcmVxLmNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZWFzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFyZWFzZXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhcmVhc2V0Lm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBhcmVhc3BlYy5jb250ZW50Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZ3JhbWxpc3Rpbmcucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByb2dyYW1saXN0aW5nIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluZXNwZWNpZmljLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY28iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvcmVmIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lYW5ub3RhdGlvbiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGV4dG9iamVjdCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvZ3JhbWxpc3RpbmcuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJvZ3JhbWxpc3RpbmcuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZ3JhbWxpc3RpbmcuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ3aWR0aC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVzcGVjaWZpYy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2dyYW1saXN0aW5nLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcm9ncmFtbGlzdGluZy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByb2dyYW1saXN0aW5nLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGl0ZXJhbGxheW91dC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGl0ZXJhbGxheW91dCIgc3Vic3RpdHV0aW9uR3JvdXA9ImxpbmVzcGVjaWZpYy5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb3JlZiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGV4dG9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZWFubm90YXRpb24iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpdGVyYWxsYXlvdXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbGl0ZXJhbGxheW91dC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaXRlcmFsbGF5b3V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0id2lkdGguYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lc3BlY2lmaWMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIiBkZWZhdWx0PSJub3JtYWwiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtb25vc3BhY2VkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vcm1hbCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGl0ZXJhbGxheW91dC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbGl0ZXJhbGxheW91dC5hdHRsaXN0IC0tPgogIDwhLS0gTGluZUFubm90YXRpb24gKGRlZmluZWQgaW4gdGhlIElubGluZXMgc2VjdGlvbiwgYmVsb3cpIC0tPgogIDwhLS0gZW5kIG9mIGxpdGVyYWxsYXlvdXQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzY3JlZW5jby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2NyZWVuY28iIHN1YnN0aXR1dGlvbkdyb3VwPSJsaW5lc3BlY2lmaWMuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmVhc3BlYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic2NyZWVuIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjYWxsb3V0bGlzdCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzY3JlZW5jby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzY3JlZW5jby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzY3JlZW5jby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNjcmVlbmNvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzY3JlZW5jby5hdHRsaXN0IC0tPgogIDwhLS0gQXJlYVNwZWMgKGRlZmluZWQgYWJvdmUpIC0tPgogIDwhLS0gQ2FsbG91dExpc3QgKGRlZmluZWQgYWJvdmUgaW4gTGlzdHMpIC0tPgogIDwhLS0gZW5kIG9mIHNjcmVlbmNvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzY3JlZW4iIHN1YnN0aXR1dGlvbkdyb3VwPSJsaW5lc3BlY2lmaWMuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29yZWYiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVhbm5vdGF0aW9uIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzY3JlZW4uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNjcmVlbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndpZHRoLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZXNwZWNpZmljLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2NyZWVuLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzY3JlZW4uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzY3JlZW4ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzY3JlZW5zaG90LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzY3JlZW5zaG90IiBzdWJzdGl0dXRpb25Hcm91cD0ibGluZXNwZWNpZmljLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzY3JlZW5pbmZvIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpYyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJncmFwaGljY28iLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibWVkaWFvYmplY3QiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibWVkaWFvYmplY3RjbyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzY3JlZW5zaG90LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNjcmVlbnNob3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuc2hvdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNjcmVlbnNob3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNjcmVlbnNob3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzY3JlZW5zaG90Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2NyZWVuaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNjcmVlbmluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzY3JlZW5pbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2NyZWVuaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNjcmVlbmluZm8ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHNjcmVlbnNob3QuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBGaWd1cmVzIGV0Yy4gLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaWd1cmUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZpZ3VyZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czpncm91cCByZWY9ImZpZ3VyZS5taXgiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZpZ3VyZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmaWd1cmUuZWxlbWVudCAtLT4KICA8IS0tCiAgICBGbG9hdDogV2hldGhlciB0aGUgRmlndXJlIGlzIHN1cHBvc2VkIHRvIGJlIHJlbmRlcmVkCiAgICB3aGVyZSBjb252ZW5pZW50ICh5ZXMgKDEpIHZhbHVlKSBvciBhdCB0aGUgcGxhY2UgaXQgb2NjdXJzCiAgICBpbiB0aGUgdGV4dCAobm8gKDApIHZhbHVlLCB0aGUgZGVmYXVsdCkKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmlndXJlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdCIgZGVmYXVsdD0iMCIgdHlwZT0ieWVzb3Juby5hdHR2YWxzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBnd2lkZSIgdHlwZT0ieWVzb3Juby5hdHR2YWxzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZpZ3VyZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZmlndXJlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZmlndXJlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxmaWd1cmUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImluZm9ybWFsZmlndXJlIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmdyb3VwIHJlZj0iZmlndXJlLm1peCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5mb3JtYWxmaWd1cmUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxmaWd1cmUuZWxlbWVudCAtLT4KICA8IS0tCiAgICBGbG9hdDogV2hldGhlciB0aGUgRmlndXJlIGlzIHN1cHBvc2VkIHRvIGJlIHJlbmRlcmVkCiAgICB3aGVyZSBjb252ZW5pZW50ICh5ZXMgKDEpIHZhbHVlKSBvciBhdCB0aGUgcGxhY2UgaXQgb2NjdXJzCiAgICBpbiB0aGUgdGV4dCAobm8gKDApIHZhbHVlLCB0aGUgZGVmYXVsdCkKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxmaWd1cmUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZsb2F0IiBkZWZhdWx0PSIwIiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGd3aWRlIiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5mb3JtYWxmaWd1cmUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZm9ybWFsZmlndXJlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxmaWd1cmUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJncmFwaGljY28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImdyYXBoaWNjbyIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXJlYXNwZWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNhbGxvdXRsaXN0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImdyYXBoaWNjby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBncmFwaGljY28uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3JhcGhpY2NvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3JhcGhpY2NvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBncmFwaGljY28uYXR0bGlzdCAtLT4KICA8IS0tIEFyZWFTcGVjIChkZWZpbmVkIGFib3ZlIGluIEV4YW1wbGVzKSAtLT4KICA8IS0tIENhbGxvdXRMaXN0IChkZWZpbmVkIGFib3ZlIGluIExpc3RzKSAtLT4KICA8IS0tIGVuZCBvZiBncmFwaGljY28ubW9kdWxlIC0tPgogIDwhLS0KICAgIEdyYXBoaWNhbCBkYXRhIGNhbiBiZSB0aGUgY29udGVudCBvZiBHcmFwaGljLCBvciB5b3UgY2FuIHJlZmVyZW5jZQogICAgYW4gZXh0ZXJuYWwgZmlsZSBlaXRoZXIgYXMgYW4gZW50aXR5IChFbnRpdHJlZikgb3IgYSBmaWxlbmFtZQogICAgKEZpbGVyZWYpLgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJncmFwaGljLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJncmFwaGljIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJncmFwaGljLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdyYXBoaWMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3JhcGhpYy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImdyYXBoaWNzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3JhcGhpYy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ3JhcGhpYy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdyYXBoaWMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmxpbmVncmFwaGljLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmxpbmVncmFwaGljIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5saW5lb2JqLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmxpbmVncmFwaGljLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGlubGluZWdyYXBoaWMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5saW5lZ3JhcGhpYy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImdyYXBoaWNzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5saW5lZ3JhcGhpYy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5saW5lZ3JhcGhpYy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGlubGluZWdyYXBoaWMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZWRpYW9iamVjdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWVkaWFvYmplY3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ib2JqZWN0aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1lZGlhb2JqZWN0Lm1peCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJjYXB0aW9uIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1lZGlhb2JqZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1lZGlhb2JqZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lZGlhb2JqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVkaWFvYmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1lZGlhb2JqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWVkaWFvYmplY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmxpbmVtZWRpYW9iamVjdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5saW5lbWVkaWFvYmplY3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmxpbmVvYmouY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ib2JqZWN0aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1lZGlhb2JqZWN0Lm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmxpbmVtZWRpYW9iamVjdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbmxpbmVtZWRpYW9iamVjdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmxpbmVtZWRpYW9iamVjdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlubGluZW1lZGlhb2JqZWN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmxpbmVtZWRpYW9iamVjdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGlubGluZW1lZGlhb2JqZWN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmlkZW9vYmplY3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InZpZGVvb2JqZWN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibWVkaWFvYmplY3QubWl4Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvYmplY3RpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2aWRlb2RhdGEiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmlkZW9vYmplY3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdmlkZW9vYmplY3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmlkZW9vYmplY3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2aWRlb29iamVjdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdmlkZW9vYmplY3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB2aWRlb29iamVjdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1ZGlvb2JqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhdWRpb29iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9Im1lZGlhb2JqZWN0Lm1peCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ib2JqZWN0aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXVkaW9kYXRhIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1ZGlvb2JqZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGF1ZGlvb2JqZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1ZGlvb2JqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXVkaW9vYmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGF1ZGlvb2JqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXVkaW9vYmplY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbWFnZW9iamVjdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW1hZ2VvYmplY3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJtZWRpYW9iamVjdC5taXgiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im9iamVjdGluZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImltYWdlZGF0YSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbWFnZW9iamVjdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbWFnZW9iamVjdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbWFnZW9iamVjdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltYWdlb2JqZWN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbWFnZW9iamVjdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGltYWdlb2JqZWN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGV4dG9iamVjdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGV4dG9iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9Im1lZGlhb2JqZWN0Lm1peCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ib2JqZWN0aW5mbyIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBocmFzZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZXh0ZGF0YSIvPgogICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRleHRvYmplY3QubWl4Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRleHRvYmplY3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGV4dG9iamVjdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0ZXh0b2JqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGV4dG9iamVjdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGV4dG9iamVjdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRleHRvYmplY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvYmplY3RpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvYmplY3RpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib2JqZWN0aW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvYmplY3RpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9iamVjdGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvYmplY3RpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvYmplY3RpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb2JqZWN0aW5mby5tb2R1bGUgLS0+CiAgPCEtLQogICAgRW50aXR5UmVmOiBOYW1lIG9mIGFuIGV4dGVybmFsIGVudGl0eSBjb250YWluaW5nIHRoZSBjb250ZW50CiAgICBvZiB0aGUgb2JqZWN0IGRhdGEKICAtLT4KICA8IS0tCiAgICBGaWxlUmVmOiBGaWxlbmFtZSwgcXVhbGlmaWVkIGJ5IGEgcGF0aG5hbWUgaWYgZGVzaXJlZCwKICAgIGRlc2lnbmF0aW5nIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnQgb2YgdGhlIG9iamVjdCBkYXRhCiAgLS0+CiAgPCEtLSBGb3JtYXQ6IE5vdGF0aW9uIG9mIHRoZSBlbGVtZW50IGNvbnRlbnQsIGlmIGFueSAtLT4KICA8IS0tIFNyY0NyZWRpdDogSW5mb3JtYXRpb24gYWJvdXQgdGhlIHNvdXJjZSBvZiB0aGUgaW1hZ2UgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9iamVjdGRhdGEuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW50aXR5cmVmIiB0eXBlPSJ4czpFTlRJVFkiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsZXJlZiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb3JtYXQiIHR5cGU9Im5vdGF0aW9uLmNsYXNzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNyY2NyZWRpdCIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZpZGVvZGF0YS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idmlkZW9kYXRhIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmlkZW9kYXRhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZpZGVvZGF0YS5lbGVtZW50IC0tPgogIDwhLS0gV2lkdGg6IFNhbWUgYXMgQ0FMUyByZXByb3dpZCAoZGVzaXJlZCB3aWR0aCkgLS0+CiAgPCEtLSBEZXB0aDogU2FtZSBhcyBDQUxTIHJlcHJvZGVwIChkZXNpcmVkIGRlcHRoKSAtLT4KICA8IS0tCiAgICBBbGlnbjogU2FtZSBhcyBDQUxTIGhwbGFjZSB3aXRoICdub25lJyByZW1vdmVkOyAjSU1QTElFRCBtZWFucwogICAgYXBwbGljYXRpb24tc3BlY2lmaWMKICAtLT4KICA8IS0tIFNjYWxlOiBDb25mbGF0aW9uIG9mIENBTFMgaHNjYWxlIGFuZCB2c2NhbGUgLS0+CiAgPCEtLSBTY2FsZWZpdDogU2FtZSBhcyBDQUxTIHNjYWxlZml0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2aWRlb2RhdGEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnR3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZXB0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50ZGVwdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsZWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNlbnRlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY2FsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY2FsZWZpdCIgdHlwZT0ieWVzb3Juby5hdHR2YWxzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvYmplY3RkYXRhLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmlkZW9kYXRhLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB2aWRlb2RhdGEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB2aWRlb2RhdGEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdWRpb2RhdGEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImF1ZGlvZGF0YSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1ZGlvZGF0YS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhdWRpb2RhdGEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXVkaW9kYXRhLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib2JqZWN0ZGF0YS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1ZGlvZGF0YS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXVkaW9kYXRhLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXVkaW9kYXRhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW1hZ2VkYXRhLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbWFnZWRhdGEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbWFnZWRhdGEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW1hZ2VkYXRhLmVsZW1lbnQgLS0+CiAgPCEtLSBXaWR0aDogU2FtZSBhcyBDQUxTIHJlcHJvd2lkIChkZXNpcmVkIHdpZHRoKSAtLT4KICA8IS0tIERlcHRoOiBTYW1lIGFzIENBTFMgcmVwcm9kZXAgKGRlc2lyZWQgZGVwdGgpIC0tPgogIDwhLS0KICAgIEFsaWduOiBTYW1lIGFzIENBTFMgaHBsYWNlIHdpdGggJ25vbmUnIHJlbW92ZWQ7ICNJTVBMSUVEIG1lYW5zCiAgICBhcHBsaWNhdGlvbi1zcGVjaWZpYwogIC0tPgogIDwhLS0gU2NhbGU6IENvbmZsYXRpb24gb2YgQ0FMUyBoc2NhbGUgYW5kIHZzY2FsZSAtLT4KICA8IS0tIFNjYWxlZml0OiBTYW1lIGFzIENBTFMgc2NhbGVmaXQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltYWdlZGF0YS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGVudHdpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlcHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnRkZXB0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtaWRkbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm90dG9tIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjYWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjYWxlZml0IiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9iamVjdGRhdGEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbWFnZWRhdGEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGltYWdlZGF0YS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGltYWdlZGF0YS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRleHRkYXRhLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0ZXh0ZGF0YSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRleHRkYXRhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRleHRkYXRhLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRleHRkYXRhLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbmNvZGluZyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib2JqZWN0ZGF0YS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRleHRkYXRhLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0ZXh0ZGF0YS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRleHRkYXRhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2FwdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2FwdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRleHRvYmplY3QubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNhcHRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2FwdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYXB0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2FwdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2FwdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNhcHRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZWRpYW9iamVjdGNvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZWRpYW9iamVjdGNvIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im9iamVjdGluZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImltYWdlb2JqZWN0Y28iLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbWFnZW9iamVjdGNvIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVkaWFvYmplY3Rjby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtZWRpYW9iamVjdGNvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lZGlhb2JqZWN0Y28uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZWRpYW9iamVjdGNvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtZWRpYW9iamVjdGNvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWVkaWFvYmplY3Rjby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltYWdlb2JqZWN0Y28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImltYWdlb2JqZWN0Y28iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmVhc3BlYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW1hZ2VvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNhbGxvdXRsaXN0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltYWdlb2JqZWN0Y28uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW1hZ2VvYmplY3Rjby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbWFnZW9iamVjdGNvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW1hZ2VvYmplY3Rjby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW1hZ2VvYmplY3Rjby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGltYWdlb2JqZWN0Y28ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIG1lZGlhb2JqZWN0LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gRXF1YXRpb25zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFRoaXMgUEUgcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9yIHJlcGxhY2luZyBlcXVhdGlvbiBjb250ZW50LCAtLT4KICA8IS0tIHBlcmhhcHMgYWRkaW5nIGEgbmV3IG9yIGRpZmZlcmVudCBtb2RlbCAoZS5nLiwgTWF0aE1MKSAtLT4KICA8eHM6Z3JvdXAgbmFtZT0iZXF1YXRpb24uY29udGVudCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhbHQiLz4KICAgICAgPHhzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJncmFwaGljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVkaWFvYmplY3QiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImlubGluZWVxdWF0aW9uLmNvbnRlbnQiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYWx0Ii8+CiAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmNvbXBsZXhUeXBlPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcXVhdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXF1YXRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJmb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbGVxdWF0aW9uIi8+CiAgICAgICAgICA8eHM6Z3JvdXAgcmVmPSJlcXVhdGlvbi5jb250ZW50Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVxdWF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVxdWF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVxdWF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcXVhdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZXF1YXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBlcXVhdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZm9ybWFsZXF1YXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImluZm9ybWFsZXF1YXRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iZXF1YXRpb24uY29udGVudCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmZvcm1hbGVxdWF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGluZm9ybWFsZXF1YXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxlcXVhdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZm9ybWFsZXF1YXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZm9ybWFsZXF1YXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGVxdWF0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5saW5lZXF1YXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImlubGluZWVxdWF0aW9uIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5saW5lb2JqLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+CiAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJpbmxpbmVlcXVhdGlvbi5jb250ZW50Ij4KICAgICAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlubGluZWVxdWF0aW9uLmF0dGxpc3QiLz4KICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgPC94czpjb21wbGV4Q29udGVudD4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGlubGluZWVxdWF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZWVxdWF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5saW5lZXF1YXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGlubGluZWVxdWF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5saW5lZXF1YXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhbHQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFsdCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhbHQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWx0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFsdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFsdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWx0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYWx0Lm1vZHVsZSAtLT4KICA8IS0tIFRhYmxlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBDaG9vc2UgYSB0YWJsZSBtb2RlbC4gQ0FMUyBvciBPQVNJUyBYTUwgRXhjaGFuZ2UgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRhYmxlcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBBZGQgbGFiZWwgYW5kIHJvbGUgYXR0cmlidXRlcyB0byB0YWJsZSBhbmQgaW5mb3JtYWx0YWJsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYm9keWF0dCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIEFkZCBjb21tb24gYXR0cmlidXRlcyB0byBUYWJsZSwgVEdyb3VwLCBUQm9keSwgVEhlYWQsIFRGb290LCBSb3csCiAgICBFbnRyeVRibCwgYW5kIEVudHJ5IChhbmQgSW5mb3JtYWxUYWJsZSBlbGVtZW50KS4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdXIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGFibGVzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29tbW9uLnRhYmxlLmF0dHJpYnMiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYm9keWF0dCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gQ29udGVudCBtb2RlbCBmb3IgVGFibGUuIC0tPgogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0YmwudGFibGUubWRsIj4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0ZXh0b2JqZWN0Ii8+CiAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1lZGlhb2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGdyb3VwIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmNvbXBsZXhUeXBlPgogIDwhLS0gQWxsb3cgZWl0aGVyIG9iamVjdHMgb3IgaW5saW5lczsgYmV3YXJlIG9mIFJFcyBiZXR3ZWVuIGVsZW1lbnRzLiAtLT4KICA8eHM6Z3JvdXAgbmFtZT0idGJsLmVudHJ5Lm1kbCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6Z3JvdXAgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czpncm91cCByZWY9InRhYmVudHJ5Lm1peCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8IS0tIFJlZmVyZW5jZSBDQUxTIFRhYmxlIE1vZGVsIC0tPgogIDwhLS0gZW5kIG9mIHRhYmxlLm1vZHVsZSAtLT4KICA8IS0tCiAgICBOb3RlIHRoYXQgSW5mb3JtYWxUYWJsZSBpcyBkZXBlbmRlbnQgb24gc29tZSBvZiB0aGUgZW50aXR5CiAgICBkZWNsYXJhdGlvbnMgdGhhdCBjdXN0b21pemUgVGFibGUuCiAgLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5mb3JtYWx0YWJsZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ3JhcGhpYyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVkaWFvYmplY3QiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRncm91cCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmZvcm1hbHRhYmxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGluZm9ybWFsdGFibGUuZWxlbWVudCAtLT4KICA8IS0tCiAgICBGcmFtZSwgQ29sc2VwLCBhbmQgUm93c2VwIG11c3QgYmUgcmVwZWF0ZWQgYmVjYXVzZQogICAgdGhleSBhcmUgbm90IGluIGVudGl0aWVzIGluIHRoZSB0YWJsZSBtb2R1bGUuCiAgLS0+CiAgPCEtLQogICAgaW5jbHVkZXMgVGFiU3R5bGUsIFRvQ2VudHJ5LCBTaG9ydEVudHJ5LAogICAgT3JpZW50LCBQZ1dpZGUKICAtLT4KICA8IS0tIGluY2x1ZGVzIExhYmVsIC0tPgogIDwhLS0gaW5jbHVkZXMgY29tbW9uIGF0dHJpYnV0ZXMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZm9ybWFsdGFibGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZyYW1lIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3Bib3QiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYWxsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNpZGVzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vbmUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc2VwIiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c2VwIiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi50YWJsZS5hdHRyaWJzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YmwudGFibGUuYXR0Ii8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbHRhYmxlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWx0YWJsZS5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gU3lub3BzZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFN5bm9wc2lzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5bm9wc2lzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9InN5bm9wLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb3JlZiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGV4dG9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZWFubm90YXRpb24iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lc3BlY2lmaWMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeW5vcHNpcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIExpbmVBbm5vdGF0aW9uIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiBzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPCEtLSBDbWRTeW5vcHNpcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjbWRzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY21kc3lub3BzaXMiIHN1YnN0aXR1dGlvbkdyb3VwPSJzeW5vcC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iY29tbWFuZCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmciLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JvdXAiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2JyIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzeW5vcGZyYWdtZW50Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNtZHN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNtZHN5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU2VwY2hhcjogQ2hhcmFjdGVyIHRoYXQgc2hvdWxkIHNlcGFyYXRlIGNvbW1hbmQgYW5kIGFsbAogICAgdG9wLWxldmVsIGFyZ3VtZW50czsgYWx0ZXJuYXRlIHZhbHVlIG1pZ2h0IGJlIGUuZy4sICZEZWx0YTsKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY21kc3lub3BzaXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VwY2hhciIgZGVmYXVsdD0iICIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbWRsZW5ndGgiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNtZHN5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjbWRzeW5vcHNpcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNtZHN5bm9wc2lzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJnLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcmciPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JvdXAiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9wdGlvbiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3BmcmFnbWVudHJlZiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVwbGFjZWFibGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNiciIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJnLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFyZy5lbGVtZW50IC0tPgogIDwhLS0KICAgIENob2ljZTogV2hldGhlciBBcmcgbXVzdCBiZSBzdXBwbGllZDogT3B0IChvcHRpb25hbCB0bwogICAgc3VwcGx5LCBlLmcuIFthcmddOyB0aGUgZGVmYXVsdCksIFJlcSAocmVxdWlyZWQgdG8gc3VwcGx5LAogICAgZS5nLiB7YXJnfSksIG9yIFBsYWluIChyZXF1aXJlZCB0byBzdXBwbHksIGUuZy4gYXJnKQogIC0tPgogIDwhLS0KICAgIFJlcDogd2hldGhlciBBcmcgaXMgcmVwZWF0YWJsZTogTm9yZXBlYXQgKGUuZy4gYXJnIHdpdGhvdXQKICAgIGVsbGlwc2lzOyB0aGUgZGVmYXVsdCksIG9yIFJlcGVhdCAoZS5nLiBhcmcuLi4pCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFyZy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hvaWNlIiBkZWZhdWx0PSJvcHQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBsYWluIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcCIgZGVmYXVsdD0ibm9yZXBlYXQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JlcGVhdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXBlYXQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXJnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXJnLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3JvdXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdyb3VwIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmciLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdyb3VwIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvcHRpb24iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wZnJhZ21lbnRyZWYiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlcGxhY2VhYmxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzYnIiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdyb3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdyb3VwLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQ2hvaWNlOiBXaGV0aGVyIEdyb3VwIG11c3QgYmUgc3VwcGxpZWQ6IE9wdCAob3B0aW9uYWwgdG8KICAgIHN1cHBseSwgZS5nLiAgW2cxfGcyfGczXTsgdGhlIGRlZmF1bHQpLCBSZXEgKHJlcXVpcmVkIHRvCiAgICBzdXBwbHksIGUuZy4gIHtnMXxnMnxnM30pLCBQbGFpbiAocmVxdWlyZWQgdG8gc3VwcGx5LAogICAgZS5nLiAgZzF8ZzJ8ZzMpLCBPcHRNdWx0IChjYW4gc3VwcGx5IHplcm8gb3IgbW9yZSwgZS5nLgogICAgW1tnMXxnMnxnM11dKSwgb3IgUmVxTXVsdCAobXVzdCBzdXBwbHkgb25lIG9yIG1vcmUsIGUuZy4KICAgIHt7ZzF8ZzJ8ZzN9fSkKICAtLT4KICA8IS0tCiAgICBSZXA6IHdoZXRoZXIgR3JvdXAgaXMgcmVwZWF0YWJsZTogTm9yZXBlYXQgKGUuZy4gZ3JvdXAKICAgIHdpdGhvdXQgZWxsaXBzaXM7IHRoZSBkZWZhdWx0KSwgb3IgUmVwZWF0IChlLmcuIGdyb3VwLi4uKQogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJncm91cC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hvaWNlIiBkZWZhdWx0PSJvcHQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBsYWluIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcCIgZGVmYXVsdD0ibm9yZXBlYXQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JlcGVhdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXBlYXQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdyb3VwLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBncm91cC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdyb3VwLm1vZHVsZSAtLT4KICA8IS0tIFN5bm9wc2lzIGJyZWFrIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzYnIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNiciI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNici5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzYnIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2JyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2JyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzYnIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzYnIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeW5vcGZyYWdtZW50cmVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzeW5vcGZyYWdtZW50cmVmIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bm9wZnJhZ21lbnRyZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3lub3BmcmFnbWVudHJlZi5lbGVtZW50IC0tPgogIDwhLS0KICAgIHRvIFN5bm9wRnJhZ21lbnQgb2YgY29tcGxleCBzeW5vcHNpcwogICAgbWF0ZXJpYWwgZm9yIHNlcGFyYXRlIHJlZmVyZW5jaW5nCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5bm9wZnJhZ21lbnRyZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcmVxLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3lub3BmcmFnbWVudHJlZi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3lub3BmcmFnbWVudHJlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnRyZWYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeW5vcGZyYWdtZW50LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzeW5vcGZyYWdtZW50Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmciLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdyb3VwIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeW5vcGZyYWdtZW50LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3lub3BmcmFnbWVudC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlkcmVxLmNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bm9wZnJhZ21lbnQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzeW5vcGZyYWdtZW50Lm1vZHVsZSAtLT4KICA8IS0tIENvbW1hbmQgKGRlZmluZWQgaW4gdGhlIElubGluZXMgc2VjdGlvbiwgYmVsb3cpIC0tPgogIDwhLS0gT3B0aW9uIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIFJlcGxhY2VhYmxlIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiBjbWRzeW5vcHNpcy5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIEZ1bmNTeW5vcHNpcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZnVuY3N5bm9wc2lzIiBzdWJzdGl0dXRpb25Hcm91cD0ic3lub3AuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZ1bmNzeW5vcHNpc2luZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZ1bmNwcm90b3R5cGUiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNzeW5vcHNpcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY3N5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jc3lub3BzaXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZ1bmNzeW5vcHNpcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZ1bmNzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNzeW5vcHNpc2luZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZ1bmNzeW5vcHNpc2luZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZXh0b2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lYW5ub3RhdGlvbiIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY3N5bm9wc2lzaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXNpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNzeW5vcHNpc2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lc3BlY2lmaWMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jc3lub3BzaXNpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXNpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZnVuY3N5bm9wc2lzaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNwcm90b3R5cGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZ1bmNwcm90b3R5cGUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmdW5jZGVmIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idm9pZCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2YXJhcmdzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhbWRlZiIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jcHJvdG90eXBlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZ1bmNwcm90b3R5cGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY3Byb3RvdHlwZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNwcm90b3R5cGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZ1bmNwcm90b3R5cGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmdW5jcHJvdG90eXBlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY2RlZi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZnVuY2RlZiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idHlwZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVwbGFjZWFibGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZ1bmN0aW9uIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jZGVmLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZ1bmNkZWYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY2RlZi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNkZWYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZ1bmNkZWYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmdW5jZGVmLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idm9pZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idm9pZCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZvaWQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygdm9pZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2b2lkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idm9pZC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygdm9pZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZvaWQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2YXJhcmdzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2YXJhcmdzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmFyYXJncy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB2YXJhcmdzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZhcmFyZ3MuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2YXJhcmdzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB2YXJhcmdzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdmFyYXJncy5tb2R1bGUgLS0+CiAgPCEtLQogICAgUHJvY2Vzc2luZyBhc3N1bWVzIHRoYXQgb25seSBvbmUgUGFyYW1ldGVyIHdpbGwgYXBwZWFyIGluIGEKICAgIFBhcmFtRGVmLCBhbmQgdGhhdCBGdW5jUGFyYW1zIHdpbGwgYmUgdXNlZCBhdCBtb3N0IG9uY2UsIGZvcgogICAgcHJvdmlkaW5nIGluZm9ybWF0aW9uIG9uIHRoZSAiaW5uZXIgcGFyYW1ldGVycyIgZm9yIHBhcmFtZXRlcnMgdGhhdAogICAgYXJlIHBvaW50ZXJzIHRvIGZ1bmN0aW9ucy4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFyYW1kZWYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBhcmFtZGVmIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0eXBlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXBsYWNlYWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYW1ldGVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmdW5jcGFyYW1zIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJhbWRlZi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwYXJhbWRlZi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJhbWRlZi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcmFtZGVmLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwYXJhbWRlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBhcmFtZGVmLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY3BhcmFtcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZnVuY3BhcmFtcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNwYXJhbXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZnVuY3BhcmFtcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jcGFyYW1zLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY3BhcmFtcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZnVuY3BhcmFtcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZ1bmNwYXJhbXMubW9kdWxlIC0tPgogIDwhLS0gTGluZUFubm90YXRpb24gKGRlZmluZWQgaW4gdGhlIElubGluZXMgc2VjdGlvbiwgYmVsb3cpIC0tPgogIDwhLS0gUmVwbGFjZWFibGUgKGRlZmluZWQgaW4gdGhlIElubGluZXMgc2VjdGlvbiwgYmVsb3cpIC0tPgogIDwhLS0gRnVuY3Rpb24gKGRlZmluZWQgaW4gdGhlIElubGluZXMgc2VjdGlvbiwgYmVsb3cpIC0tPgogIDwhLS0gUGFyYW1ldGVyIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXMuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBDbGFzc1N5bm9wc2lzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2xhc3NzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2xhc3NzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9InN5bm9wLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvb2NsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9vaW50ZXJmYWNlIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9vZXhjZXB0aW9uIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iY2xhc3NzeW5vcHNpc2luZm8iLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZmllbGRzeW5vcHNpcyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtZXRob2Quc3lub3AuY2xhc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2xhc3NzeW5vcHNpcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjbGFzc3N5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNsYXNzc3lub3BzaXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxhbmd1YWdlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIiBkZWZhdWx0PSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNsYXNzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImludGVyZmFjZSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2xhc3NzeW5vcHNpcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2xhc3NzeW5vcHNpcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNsYXNzc3lub3BzaXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjbGFzc3N5bm9wc2lzaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2xhc3NzeW5vcHNpc2luZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZXh0b2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lYW5ub3RhdGlvbiIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2xhc3NzeW5vcHNpc2luZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2xhc3NzeW5vcHNpc2luZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2xhc3NzeW5vcHNpc2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lc3BlY2lmaWMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjbGFzc3N5bm9wc2lzaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2xhc3NzeW5vcHNpc2luZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjbGFzc3N5bm9wc2lzaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9vY2xhc3Mucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9vY2xhc3MiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY2xhc3NuYW1lIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9vY2xhc3MuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb29jbGFzcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvb2NsYXNzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib29jbGFzcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb29jbGFzcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG9vY2xhc3MubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvb2ludGVyZmFjZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib29pbnRlcmZhY2UiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW50ZXJmYWNlbmFtZSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvb2ludGVyZmFjZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvb2ludGVyZmFjZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvb2ludGVyZmFjZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9vaW50ZXJmYWNlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvb2ludGVyZmFjZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG9vaW50ZXJmYWNlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib29leGNlcHRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9vZXhjZXB0aW9uIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibW9kaWZpZXIiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImV4Y2VwdGlvbm5hbWUiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib29leGNlcHRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb29leGNlcHRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib29leGNlcHRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvb2V4Y2VwdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb29leGNlcHRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvb2V4Y2VwdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1vZGlmaWVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtb2RpZmllciI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9kaWZpZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbW9kaWZpZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW9kaWZpZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb2RpZmllci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbW9kaWZpZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtb2RpZmllci5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImludGVyZmFjZW5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImludGVyZmFjZW5hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbnRlcmZhY2VuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGludGVyZmFjZW5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW50ZXJmYWNlbmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImludGVyZmFjZW5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGludGVyZmFjZW5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbnRlcmZhY2VuYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXhjZXB0aW9ubmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXhjZXB0aW9ubmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXhjZXB0aW9ubmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBleGNlcHRpb25uYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImV4Y2VwdGlvbm5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJleGNlcHRpb25uYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBleGNlcHRpb25uYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZXhjZXB0aW9ubmFtZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZpZWxkc3lub3BzaXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZpZWxkc3lub3BzaXMiIHN1YnN0aXR1dGlvbkdyb3VwPSJzeW5vcC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InR5cGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InZhcm5hbWUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iaW5pdGlhbGl6ZXIiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmllbGRzeW5vcHNpcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmaWVsZHN5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZpZWxkc3lub3BzaXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxhbmd1YWdlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaWVsZHN5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmaWVsZHN5bm9wc2lzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZmllbGRzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluaXRpYWxpemVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbml0aWFsaXplciI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5pdGlhbGl6ZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5pdGlhbGl6ZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5pdGlhbGl6ZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbml0aWFsaXplci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5pdGlhbGl6ZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbml0aWFsaXplci5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnN0cnVjdG9yc3lub3BzaXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbnN0cnVjdG9yc3lub3BzaXMiIHN1YnN0aXR1dGlvbkdyb3VwPSJtZXRob2Quc3lub3AuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJtZXRob2RuYW1lIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1ldGhvZHBhcmFtIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InZvaWQiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImV4Y2VwdGlvbm5hbWUiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uc3RydWN0b3JzeW5vcHNpcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb25zdHJ1Y3RvcnN5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnN0cnVjdG9yc3lub3BzaXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxhbmd1YWdlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25zdHJ1Y3RvcnN5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb25zdHJ1Y3RvcnN5bm9wc2lzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29uc3RydWN0b3JzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImRlc3RydWN0b3JzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZGVzdHJ1Y3RvcnN5bm9wc2lzIiBzdWJzdGl0dXRpb25Hcm91cD0ibWV0aG9kLnN5bm9wLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibW9kaWZpZXIiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ibWV0aG9kbmFtZSIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtZXRob2RwYXJhbSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2b2lkIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJleGNlcHRpb25uYW1lIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRlc3RydWN0b3JzeW5vcHNpcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBkZXN0cnVjdG9yc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGVzdHJ1Y3RvcnN5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5ndWFnZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGVzdHJ1Y3RvcnN5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBkZXN0cnVjdG9yc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBkZXN0cnVjdG9yc3lub3BzaXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZXRob2RzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWV0aG9kc3lub3BzaXMiIHN1YnN0aXR1dGlvbkdyb3VwPSJtZXRob2Quc3lub3AuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idHlwZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2b2lkIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtZXRob2RuYW1lIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1ldGhvZHBhcmFtIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InZvaWQiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImV4Y2VwdGlvbm5hbWUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1ldGhvZHN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1ldGhvZHN5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1ldGhvZHN5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5ndWFnZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWV0aG9kc3lub3BzaXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1ldGhvZHN5bm9wc2lzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWV0aG9kc3lub3BzaXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZXRob2RuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZXRob2RuYW1lIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZXRob2RuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1ldGhvZG5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWV0aG9kbmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1ldGhvZG5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1ldGhvZG5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtZXRob2RuYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWV0aG9kcGFyYW0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1ldGhvZHBhcmFtIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibW9kaWZpZXIiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idHlwZSIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYW1ldGVyIi8+CiAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJpbml0aWFsaXplciIvPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZnVuY3BhcmFtcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibW9kaWZpZXIiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWV0aG9kcGFyYW0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWV0aG9kcGFyYW0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWV0aG9kcGFyYW0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNob2ljZSIgZGVmYXVsdD0icmVxIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3B0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlcSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwbGFpbiIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXAiIGRlZmF1bHQ9Im5vcmVwZWF0Ij4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm9yZXBlYXQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVwZWF0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZXRob2RwYXJhbS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWV0aG9kcGFyYW0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtZXRob2RwYXJhbS5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgY2xhc3NzeW5vcHNpcy5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBEb2N1bWVudCBpbmZvcm1hdGlvbiBlbnRpdGllcyBhbmQgZWxlbWVudHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgIFRoZSBkb2N1bWVudCBpbmZvcm1hdGlvbiBlbGVtZW50cyBpbmNsdWRlIHNvbWUgZWxlbWVudHMgdGhhdCBhcmUKICAgIGN1cnJlbnRseSB1c2VkIG9ubHkgaW4gdGhlIGRvY3VtZW50IGhpZXJhcmNoeSBtb2R1bGUuIFRoZXkgYXJlCiAgICBkZWZpbmVkIGhlcmUgc28gdGhhdCB0aGV5IHdpbGwgYmUgYXZhaWxhYmxlIGZvciB1c2UgaW4gY3VzdG9taXplZAogICAgZG9jdW1lbnQgaGllcmFyY2hpZXMuCiAgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gQWNrbm8gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWNrbm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFja25vIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWNrbm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWNrbm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWNrbm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhY2tuby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWNrbm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhY2tuby5tb2R1bGUgLS0+CiAgPCEtLSBBZGRyZXNzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhZGRyZXNzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhZGRyZXNzIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBlcnNvbm5hbWUiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJwZXJzb24uaWRlbnQubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdHJlZXQiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBvYiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icG9zdGNvZGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNpdHkiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN0YXRlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb3VudHJ5Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwaG9uZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZmF4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbWFpbCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ib3RoZXJhZGRyIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhZGRyZXNzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFkZHJlc3MuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWRkcmVzcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVzcGVjaWZpYy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFkZHJlc3Mucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFkZHJlc3MuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhZGRyZXNzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RyZWV0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdHJlZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdHJlZXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3RyZWV0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0cmVldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0cmVldC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3RyZWV0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3RyZWV0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icG9iLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwb2IiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwb2IuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcG9iLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBvYi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBvYi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcG9iLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcG9iLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icG9zdGNvZGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBvc3Rjb2RlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icG9zdGNvZGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcG9zdGNvZGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icG9zdGNvZGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwb3N0Y29kZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcG9zdGNvZGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwb3N0Y29kZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdHkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNpdHkiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaXR5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNpdHkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2l0eS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdHkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNpdHkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjaXR5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RhdGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN0YXRlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3RhdGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RhdGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3RhdGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdGF0ZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvdW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvdW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3VudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvdW50cnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY291bnRyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvdW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvdW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb3VudHJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGhvbmUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBob25lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGhvbmUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGhvbmUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGhvbmUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwaG9uZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcGhvbmUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwaG9uZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZheC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmF4Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmF4LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZheC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmYXguYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmYXgucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZheC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZheC5tb2R1bGUgLS0+CiAgPCEtLSBFbWFpbCAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVyYWRkci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib3RoZXJhZGRyIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3RoZXJhZGRyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG90aGVyYWRkci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvdGhlcmFkZHIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvdGhlcmFkZHIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG90aGVyYWRkci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG90aGVyYWRkci5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgYWRkcmVzcy5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIEFmZmlsaWF0aW9uIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFmZmlsaWF0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhZmZpbGlhdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2hvcnRhZmZpbCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iam9idGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ib3JnbmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ib3JnZGl2Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJhZGRyZXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFmZmlsaWF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFmZmlsaWF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFmZmlsaWF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWZmaWxpYXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFmZmlsaWF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYWZmaWxpYXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaG9ydGFmZmlsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaG9ydGFmZmlsIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2hvcnRhZmZpbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzaG9ydGFmZmlsLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNob3J0YWZmaWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaG9ydGFmZmlsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzaG9ydGFmZmlsLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2hvcnRhZmZpbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImpvYnRpdGxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJqb2J0aXRsZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImpvYnRpdGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGpvYnRpdGxlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImpvYnRpdGxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iam9idGl0bGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGpvYnRpdGxlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygam9idGl0bGUubW9kdWxlIC0tPgogIDwhLS0gT3JnTmFtZSAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3JnZGl2LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvcmdkaXYiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcmdkaXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3JnZGl2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9yZ2Rpdi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9yZ2Rpdi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb3JnZGl2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb3JnZGl2Lm1vZHVsZSAtLT4KICA8IS0tIEFkZHJlc3MgKGRlZmluZWQgZWxzZXdoZXJlIGluIHRoaXMgc2VjdGlvbikgLS0+CiAgPCEtLSBlbmQgb2YgYWZmaWxpYXRpb24uY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBBcnRQYWdlTnVtcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcnRwYWdlbnVtcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJ0cGFnZW51bXMiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcnRwYWdlbnVtcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhcnRwYWdlbnVtcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcnRwYWdlbnVtcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFydHBhZ2VudW1zLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhcnRwYWdlbnVtcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFydHBhZ2VudW1zLm1vZHVsZSAtLT4KICA8IS0tIFBlcnNvbk5hbWUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBlcnNvbm5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBlcnNvbm5hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaG9ub3JpZmljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmaXJzdG5hbWUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN1cm5hbWUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVhZ2UiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im90aGVybmFtZSIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGVyc29ubmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwZXJzb25uYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBlcnNvbm5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwZXJzb25uYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwZXJzb25uYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcGVyc29ubmFtZS5tb2R1bGUgLS0+CiAgPCEtLSBBdXRob3IgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdXRob3Iucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImF1dGhvciIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwZXJzb25uYW1lIi8+CiAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGVyc29uLmlkZW50Lm1peCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBlcnNvbmJsdXJiIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtYWlsIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFkZHJlc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXV0aG9yLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGF1dGhvci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdXRob3IuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdXRob3Iucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGF1dGhvci5hdHRsaXN0IC0tPgogIDwhLS0gKHNlZSAiUGVyc29uYWwgaWRlbnRpdHkgZWxlbWVudHMiIGZvciAlcGVyc29uLmlkZW50Lm1peDspIC0tPgogIDwhLS0gZW5kIG9mIGF1dGhvci5tb2R1bGUgLS0+CiAgPCEtLSBBdXRob3JHcm91cCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdXRob3Jncm91cC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXV0aG9yZ3JvdXAiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImF1dGhvciIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZWRpdG9yIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb2xsYWIiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvcnBhdXRob3IiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im90aGVyY3JlZGl0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdXRob3Jncm91cC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhdXRob3Jncm91cC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdXRob3Jncm91cC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1dGhvcmdyb3VwLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhdXRob3Jncm91cC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGF1dGhvcmdyb3VwLm1vZHVsZSAtLT4KICA8IS0tIEF1dGhvciAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8IS0tIEVkaXRvciAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sbGFiLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb2xsYWIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb2xsYWJuYW1lIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJhZmZpbGlhdGlvbiIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb2xsYWIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29sbGFiLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbGxhYi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbGxhYi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29sbGFiLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29sbGFiLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sbGFibmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29sbGFibmFtZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbGxhYm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29sbGFibmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xsYWJuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sbGFibmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29sbGFibmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbGxhYm5hbWUubW9kdWxlIC0tPgogIDwhLS0gQWZmaWxpYXRpb24gKGRlZmluZWQgZWxzZXdoZXJlIGluIHRoaXMgc2VjdGlvbikgLS0+CiAgPCEtLSBlbmQgb2YgY29sbGFiLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gQ29ycEF1dGhvciAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8IS0tIE90aGVyQ3JlZGl0IChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDwhLS0gZW5kIG9mIGF1dGhvcmdyb3VwLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gQXV0aG9ySW5pdGlhbHMgLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXV0aG9yaW5pdGlhbHMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImF1dGhvcmluaXRpYWxzIiBzdWJzdGl0dXRpb25Hcm91cD0iZG9jaW5mby5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXV0aG9yaW5pdGlhbHMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXV0aG9yaW5pdGlhbHMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXV0aG9yaW5pdGlhbHMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdXRob3Jpbml0aWFscy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXV0aG9yaW5pdGlhbHMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhdXRob3Jpbml0aWFscy5tb2R1bGUgLS0+CiAgPCEtLSBDb25mR3JvdXAgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mZ3JvdXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbmZncm91cCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb25mZGF0ZXMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbmZ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29uZm51bSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWRkcmVzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29uZnNwb25zb3IiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZncm91cC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb25mZ3JvdXAuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uZmdyb3VwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZmdyb3VwLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb25mZ3JvdXAuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb25mZ3JvdXAubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mZGF0ZXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbmZkYXRlcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZkYXRlcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb25mZGF0ZXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uZmRhdGVzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZmRhdGVzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb25mZGF0ZXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb25mZGF0ZXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mdGl0bGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbmZ0aXRsZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZ0aXRsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb25mdGl0bGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uZnRpdGxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZnRpdGxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb25mdGl0bGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb25mdGl0bGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mbnVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb25mbnVtIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZm51bS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb25mbnVtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZudW0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mbnVtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb25mbnVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29uZm51bS5tb2R1bGUgLS0+CiAgPCEtLSBBZGRyZXNzIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mc3BvbnNvci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uZnNwb25zb3IiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mc3BvbnNvci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb25mc3BvbnNvci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mc3BvbnNvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZzcG9uc29yLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb25mc3BvbnNvci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbmZzcG9uc29yLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBjb25mZ3JvdXAuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBDb250cmFjdE51bSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb250cmFjdG51bS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29udHJhY3RudW0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb250cmFjdG51bS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb250cmFjdG51bS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb250cmFjdG51bS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnRyYWN0bnVtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb250cmFjdG51bS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbnRyYWN0bnVtLm1vZHVsZSAtLT4KICA8IS0tIENvbnRyYWN0U3BvbnNvciAuLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnRyYWN0c3BvbnNvci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29udHJhY3RzcG9uc29yIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29udHJhY3RzcG9uc29yLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbnRyYWN0c3BvbnNvci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb250cmFjdHNwb25zb3IuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb250cmFjdHNwb25zb3Iucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbnRyYWN0c3BvbnNvci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbnRyYWN0c3BvbnNvci5tb2R1bGUgLS0+CiAgPCEtLSBDb3B5cmlnaHQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3B5cmlnaHQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvcHlyaWdodCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ5ZWFyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJob2xkZXIiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29weXJpZ2h0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvcHlyaWdodC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3B5cmlnaHQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3B5cmlnaHQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvcHlyaWdodC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvcHlyaWdodC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InllYXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InllYXIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ5ZWFyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHllYXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ieWVhci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InllYXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHllYXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB5ZWFyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaG9sZGVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJob2xkZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJob2xkZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaG9sZGVyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImhvbGRlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImhvbGRlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaG9sZGVyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaG9sZGVyLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBjb3B5cmlnaHQuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBDb3JwQXV0aG9yIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3JwYXV0aG9yLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb3JwYXV0aG9yIiBzdWJzdGl0dXRpb25Hcm91cD0iZG9jaW5mby5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29ycGF1dGhvci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb3JwYXV0aG9yLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcnBhdXRob3IuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3JwYXV0aG9yLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb3JwYXV0aG9yLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29ycGF1dGhvci5tb2R1bGUgLS0+CiAgPCEtLSBDb3JwTmFtZSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvcnBuYW1lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29ycG5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29ycG5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29ycG5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3JwbmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcnBuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb3JwbmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvcnBuYW1lLm1vZHVsZSAtLT4KICA8IS0tIERhdGUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImRhdGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImRhdGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJkYXRlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGRhdGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGF0ZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRhdGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGRhdGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBkYXRlLm1vZHVsZSAtLT4KICA8IS0tIEVkaXRpb24gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVkaXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImVkaXRpb24iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlZGl0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVkaXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZWRpdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVkaXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGVkaXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBlZGl0aW9uLm1vZHVsZSAtLT4KICA8IS0tIEVkaXRvciAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVkaXRvci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZWRpdG9yIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBlcnNvbm5hbWUiLz4KICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwZXJzb24uaWRlbnQubWl4Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icGVyc29uYmx1cmIiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZW1haWwiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYWRkcmVzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlZGl0b3IuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZWRpdG9yLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVkaXRvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVkaXRvci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZWRpdG9yLmF0dGxpc3QgLS0+CiAgPCEtLSAoc2VlICJQZXJzb25hbCBpZGVudGl0eSBlbGVtZW50cyIgZm9yICVwZXJzb24uaWRlbnQubWl4OykgLS0+CiAgPCEtLSBlbmQgb2YgZWRpdG9yLm1vZHVsZSAtLT4KICA8IS0tIElTQk4gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlzYm4ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImlzYm4iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpc2JuLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGlzYm4uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaXNibi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlzYm4ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGlzYm4uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpc2JuLm1vZHVsZSAtLT4KICA8IS0tIElTU04gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imlzc24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imlzc24iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpc3NuLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGlzc24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaXNzbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imlzc24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGlzc24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpc3NuLm1vZHVsZSAtLT4KICA8IS0tIEJpYmxpb0lkIC4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW8uY2xhc3MuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ1cmkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZG9pIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlzYm4iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXNzbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaWJyYXJ5b2Zjb25ncmVzcyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwdWJudW1iZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJjbGFzcyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2lkLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9pZCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2lkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2lkLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2lkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvLmNsYXNzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvaWQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb2lkLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYmlibGlvaWQubW9kdWxlIC0tPgogIDwhLS0gQ2l0ZUJpYmxpb0lkIC4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRlYmlibGlvaWQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNpdGViaWJsaW9pZCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdGViaWJsaW9pZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjaXRlYmlibGlvaWQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2l0ZWJpYmxpb2lkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvLmNsYXNzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0ZWJpYmxpb2lkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjaXRlYmlibGlvaWQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjaXRlYmlibGlvaWQubW9kdWxlIC0tPgogIDwhLS0gQmlibGlvU291cmNlIC4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9zb3VyY2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb3NvdXJjZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb3NvdXJjZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9zb3VyY2UuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvc291cmNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvLmNsYXNzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvc291cmNlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9zb3VyY2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9zb3VyY2UubW9kdWxlIC0tPgogIDwhLS0gQmlibGlvUmVsYXRpb24gLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb3JlbGF0aW9uLnR5cGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlzdmVyc2lvbm9mIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imhhc3ZlcnNpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXNyZXBsYWNlZGJ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlcGxhY2VzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlzcmVxdWlyZWRieSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXF1aXJlcyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpc3BhcnRvZiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJoYXNwYXJ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlzcmVmZXJlbmNlZGJ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlZmVyZW5jZXMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXNmb3JtYXRvZiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJoYXNmb3JtYXQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXJ0eXBlIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVydHlwZSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb3JlbGF0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9yZWxhdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb3JlbGF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb3JlbGF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb3JlbGF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvLmNsYXNzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvcmVsYXRpb24udHlwZS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb3JlbGF0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9yZWxhdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb3JlbGF0aW9uLm1vZHVsZSAtLT4KICA8IS0tIEJpYmxpb0NvdmVyYWdlIC4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9jb3ZlcmFnZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvY292ZXJhZ2UiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9jb3ZlcmFnZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9jb3ZlcmFnZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9jb3ZlcmFnZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3BhdGlhbCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRjbWlwb2ludCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpc28zMTY2Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRjbWlib3giLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idGduIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyc3BhdGlhbCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcnNwYXRpYWwiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGVtcG9yYWwiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkY21pcGVyaW9kIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InczYy1kdGYiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXJ0ZW1wb3JhbCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcnRlbXBvcmFsIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9jb3ZlcmFnZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmlibGlvY292ZXJhZ2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9jb3ZlcmFnZS5tb2R1bGUgLS0+CiAgPCEtLSBJbnZQYXJ0TnVtYmVyIC4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbnZwYXJ0bnVtYmVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbnZwYXJ0bnVtYmVyIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW52cGFydG51bWJlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbnZwYXJ0bnVtYmVyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImludnBhcnRudW1iZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbnZwYXJ0bnVtYmVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbnZwYXJ0bnVtYmVyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW52cGFydG51bWJlci5tb2R1bGUgLS0+CiAgPCEtLSBJc3N1ZU51bSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpc3N1ZW51bS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaXNzdWVudW0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpc3N1ZW51bS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpc3N1ZW51bS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpc3N1ZW51bS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imlzc3VlbnVtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpc3N1ZW51bS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGlzc3VlbnVtLm1vZHVsZSAtLT4KICA8IS0tIExlZ2FsTm90aWNlIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxlZ2Fsbm90aWNlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJsZWdhbG5vdGljZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImxlZ2Fsbm90aWNlLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsZWdhbG5vdGljZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsZWdhbG5vdGljZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsZWdhbG5vdGljZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxlZ2Fsbm90aWNlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBsZWdhbG5vdGljZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGxlZ2Fsbm90aWNlLm1vZHVsZSAtLT4KICA8IS0tIE1vZGVTcGVjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1vZGVzcGVjLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtb2Rlc3BlYyIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vZGVzcGVjLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1vZGVzcGVjLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQXBwbGljYXRpb246IFR5cGUgb2YgYWN0aW9uIHJlcXVpcmVkIGZvciBjb21wbGV0aW9uCiAgICBvZiB0aGUgbGlua3MgdG8gd2hpY2ggdGhlIE1vZGVTcGVjIGlzIHJlbGV2YW50IChlLmcuLAogICAgcmV0cmlldmFsIHF1ZXJ5KQogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtb2Rlc3BlYy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXBwbGljYXRpb24iIHR5cGU9Im5vdGF0aW9uLmNsYXNzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb2Rlc3BlYy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbW9kZXNwZWMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtb2Rlc3BlYy5tb2R1bGUgLS0+CiAgPCEtLSBPcmdOYW1lIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcmduYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvcmduYW1lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3JnbmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvcmduYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9yZ25hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29ycG9yYXRpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm9ucHJvZml0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbnNvcnRpdW0iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaW5mb3JtYWwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJjbGFzcyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3JnbmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb3JnbmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG9yZ25hbWUubW9kdWxlIC0tPgogIDwhLS0gT3RoZXJDcmVkaXQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3RoZXJjcmVkaXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im90aGVyY3JlZGl0IiBzdWJzdGl0dXRpb25Hcm91cD0iZG9jaW5mby5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBlcnNvbm5hbWUiLz4KICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwZXJzb24uaWRlbnQubWl4Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icGVyc29uYmx1cmIiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZW1haWwiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYWRkcmVzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvdGhlcmNyZWRpdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvdGhlcmNyZWRpdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvdGhlcmNyZWRpdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im90aGVyY3JlZGl0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvdGhlcmNyZWRpdC5hdHRsaXN0IC0tPgogIDwhLS0gKHNlZSAiUGVyc29uYWwgaWRlbnRpdHkgZWxlbWVudHMiIGZvciAlcGVyc29uLmlkZW50Lm1peDspIC0tPgogIDwhLS0gZW5kIG9mIG90aGVyY3JlZGl0Lm1vZHVsZSAtLT4KICA8IS0tIFBhZ2VOdW1zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhZ2VudW1zLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwYWdlbnVtcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW1zLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBhZ2VudW1zLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhZ2VudW1zLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhZ2VudW1zLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcGFnZW51bXMubW9kdWxlIC0tPgogIDwhLS0gUGVyc29uYWwgaWRlbnRpdHkgZWxlbWVudHMgLi4uLi4uLiAtLT4KICA8IS0tCiAgICBUaGVzZSBlbGVtZW50cyBhcmUgdXNlZCBvbmx5IHdpdGhpbiBBdXRob3IsIEVkaXRvciwgYW5kCiAgICBPdGhlckNyZWRpdC4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29udHJpYi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29udHJpYiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnRyaWIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29udHJpYi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb250cmliLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29udHJpYi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29udHJpYi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbnRyaWIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaXJzdG5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZpcnN0bmFtZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZpcnN0bmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmaXJzdG5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmlyc3RuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmlyc3RuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmaXJzdG5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmaXJzdG5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJob25vcmlmaWMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imhvbm9yaWZpYyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imhvbm9yaWZpYy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBob25vcmlmaWMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaG9ub3JpZmljLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaG9ub3JpZmljLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBob25vcmlmaWMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBob25vcmlmaWMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaW5lYWdlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaW5lYWdlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZWFnZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsaW5lYWdlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmVhZ2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lYWdlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBsaW5lYWdlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGluZWFnZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVybmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib3RoZXJuYW1lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3RoZXJuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG90aGVybmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvdGhlcm5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvdGhlcm5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG90aGVybmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG90aGVybmFtZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1cm5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN1cm5hbWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdXJuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN1cm5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3VybmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1cm5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN1cm5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdXJuYW1lLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBwZXJzb24uaWRlbnQubW9kdWxlIC0tPgogIDwhLS0gUHJpbnRIaXN0b3J5IC4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJpbnRoaXN0b3J5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcmludGhpc3RvcnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmludGhpc3RvcnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJpbnRoaXN0b3J5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByaW50aGlzdG9yeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW50aGlzdG9yeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJpbnRoaXN0b3J5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHJpbnRoaXN0b3J5Lm1vZHVsZSAtLT4KICA8IS0tIFByb2R1Y3ROYW1lIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2R1Y3RuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcm9kdWN0bmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2R1Y3RuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb2R1Y3RuYW1lLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogTW9yZSBwcmVjaXNlbHkgaWRlbnRpZmllcyB0aGUgaXRlbSB0aGUgZWxlbWVudCBuYW1lcyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZHVjdG5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIiBkZWZhdWx0PSJ0cmFkZSI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlcnZpY2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idHJhZGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVnaXN0ZXJlZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb3B5cmlnaHQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2R1Y3RuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcm9kdWN0bmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByb2R1Y3RuYW1lLm1vZHVsZSAtLT4KICA8IS0tIFByb2R1Y3ROdW1iZXIgLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2R1Y3RudW1iZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByb2R1Y3RudW1iZXIiIHN1YnN0aXR1dGlvbkdyb3VwPSJkb2NpbmZvLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9kdWN0bnVtYmVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb2R1Y3RudW1iZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZHVjdG51bWJlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2R1Y3RudW1iZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByb2R1Y3RudW1iZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcm9kdWN0bnVtYmVyLm1vZHVsZSAtLT4KICA8IS0tIFB1YkRhdGUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InB1YmRhdGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InB1YmRhdGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwdWJkYXRlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHB1YmRhdGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHViZGF0ZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1YmRhdGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHB1YmRhdGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwdWJkYXRlLm1vZHVsZSAtLT4KICA8IS0tIFB1Ymxpc2hlciAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InB1Ymxpc2hlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHVibGlzaGVyIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icHVibGlzaGVybmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRkcmVzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwdWJsaXNoZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHVibGlzaGVyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InB1Ymxpc2hlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1Ymxpc2hlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHVibGlzaGVyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHVibGlzaGVyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHVibGlzaGVybmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHVibGlzaGVybmFtZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1Ymxpc2hlcm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHVibGlzaGVybmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwdWJsaXNoZXJuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHVibGlzaGVybmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHVibGlzaGVybmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHB1Ymxpc2hlcm5hbWUubW9kdWxlIC0tPgogIDwhLS0gQWRkcmVzcyAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXIuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBQdWJzTnVtYmVyIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwdWJzbnVtYmVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwdWJzbnVtYmVyIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHVic251bWJlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwdWJzbnVtYmVyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InB1YnNudW1iZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwdWJzbnVtYmVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwdWJzbnVtYmVyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHVic251bWJlci5tb2R1bGUgLS0+CiAgPCEtLSBSZWxlYXNlSW5mbyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWxlYXNlaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVsZWFzZWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWxlYXNlaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWxlYXNlaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWxlYXNlaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlbGVhc2VpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWxlYXNlaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlbGVhc2VpbmZvLm1vZHVsZSAtLT4KICA8IS0tIFJldkhpc3RvcnkgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldmhpc3Rvcnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJldmhpc3RvcnkiIHN1YnN0aXR1dGlvbkdyb3VwPSJkb2NpbmZvLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmV2aXNpb24iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2aGlzdG9yeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZXZoaXN0b3J5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldmhpc3RvcnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZoaXN0b3J5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZXZoaXN0b3J5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmV2aGlzdG9yeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldmlzaW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZXZpc2lvbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJldm51bWJlciIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZGF0ZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYXV0aG9yaW5pdGlhbHMiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJldnJlbWFyayIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXZkZXNjcmlwdGlvbiIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZpc2lvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZXZpc2lvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXZpc2lvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldmlzaW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZXZpc2lvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJldmlzaW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2bnVtYmVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZXZudW1iZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZudW1iZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmV2bnVtYmVyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldm51bWJlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldm51bWJlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmV2bnVtYmVyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmV2bnVtYmVyLm1vZHVsZSAtLT4KICA8IS0tIERhdGUgKGRlZmluZWQgZWxzZXdoZXJlIGluIHRoaXMgc2VjdGlvbikgLS0+CiAgPCEtLSBBdXRob3JJbml0aWFscyAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2cmVtYXJrLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZXZyZW1hcmsiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZyZW1hcmsuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmV2cmVtYXJrLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldnJlbWFyay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldnJlbWFyay5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmV2cmVtYXJrLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmV2cmVtYXJrLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2ZGVzY3JpcHRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJldmRlc2NyaXB0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJldmRlc2NyaXB0aW9uLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZkZXNjcmlwdGlvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZXZkZXNjcmlwdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXZkZXNjcmlwdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldmRlc2NyaXB0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZXZkZXNjcmlwdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJldmRlc2NyaXB0aW9uLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiByZXZoaXN0b3J5LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gU2VyaWVzVm9sTnVtcyAuLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VyaWVzdm9sbnVtcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VyaWVzdm9sbnVtcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlcmllc3ZvbG51bXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VyaWVzdm9sbnVtcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZXJpZXN2b2xudW1zLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VyaWVzdm9sbnVtcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VyaWVzdm9sbnVtcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlcmllc3ZvbG51bXMubW9kdWxlIC0tPgogIDwhLS0gVm9sdW1lTnVtIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idm9sdW1lbnVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2b2x1bWVudW0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2b2x1bWVudW0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygdm9sdW1lbnVtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZvbHVtZW51bS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZvbHVtZW51bS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygdm9sdW1lbnVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygdm9sdW1lbnVtLm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBlbmQgb2YgZG9jaW5mby5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBJbmxpbmUsIGxpbmssIGFuZCB1YmlxdWl0b3VzIGVsZW1lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gVGVjaG5pY2FsIGFuZCBjb21wdXRlciB0ZXJtcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWNjZWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFjY2VsIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhY2NlbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhY2NlbC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhY2NlbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFjY2VsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhY2NlbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFjY2VsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWN0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhY3Rpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhY3Rpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWN0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFjdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWN0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhY3Rpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhY3Rpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcHBsaWNhdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXBwbGljYXRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcHBsaWNhdGlvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhcHBsaWNhdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcHBsaWNhdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJoYXJkd2FyZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzb2Z0d2FyZSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcHBsaWNhdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXBwbGljYXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhcHBsaWNhdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNsYXNzbmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2xhc3NuYW1lIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjbGFzc25hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2xhc3NuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNsYXNzbmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNsYXNzbmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2xhc3NuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2xhc3NuYW1lLm1vZHVsZSAtLT4KICA8IS0tCiAgICBDTyBpcyBhIGNhbGxvdXQgYXJlYSBvZiB0aGUgTGluZUNvbHVtbiB1bml0IHR5cGUgKGEgc2luZ2xlIGNoYXJhY3RlcgogICAgcG9zaXRpb24pOyB0aGUgcG9zaXRpb24gaXMgZGlyZWN0bHkgaW5kaWNhdGVkIGJ5IHRoZSBsb2NhdGlvbiBvZiBDTy4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY28uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY28uZWxlbWVudCAtLT4KICA8IS0tIGJ1ZyBudW1iZXIvc3ltYm9sIG92ZXJyaWRlIG9yIGluaXRpYWxpemF0aW9uIC0tPgogIDwhLS0gdG8gYW55IHJlbGF0ZWQgaW5mb3JtYXRpb24gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlkcmVxLmNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvLm1vZHVsZSAtLT4KICA8IS0tIENPUkVGIGlzIGEgcmVmZXJlbmNlIHRvIGEgQ08gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcmVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb3JlZiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcmVmLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvcmVmLmVsZW1lbnQgLS0+CiAgPCEtLSBidWcgbnVtYmVyL3N5bWJvbCBvdmVycmlkZSBvciBpbml0aWFsaXphdGlvbiAtLT4KICA8IS0tIHRvIGFueSByZWxhdGVkIGluZm9ybWF0aW9uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3JlZi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHJlcS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcmVmLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb3JlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvcmVmLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29tbWFuZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29tbWFuZCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1hbmQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29tbWFuZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb21tYW5kLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tYW5kLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb21tYW5kLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29tbWFuZC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbXB1dGVyb3V0cHV0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb21wdXRlcm91dHB1dCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21wdXRlcm91dHB1dC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb21wdXRlcm91dHB1dC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb21wdXRlcm91dHB1dC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tcHV0ZXJvdXRwdXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbXB1dGVyb3V0cHV0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29tcHV0ZXJvdXRwdXQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJkYXRhYmFzZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZGF0YWJhc2UiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJkYXRhYmFzZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBkYXRhYmFzZS5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IFR5cGUgb2YgZGF0YWJhc2UgdGhlIGVsZW1lbnQgbmFtZXM7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImRhdGFiYXNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5hbWUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idGFibGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZmllbGQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ia2V5MSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJrZXkyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlY29yZCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJkYXRhYmFzZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZGF0YWJhc2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBkYXRhYmFzZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVtYWlsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJlbWFpbCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVtYWlsLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVtYWlsLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVtYWlsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZW1haWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGVtYWlsLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZW1haWwubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbnZhci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZW52YXIiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVudmFyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVudmFyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVudmFyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZW52YXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGVudmFyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZW52YXIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcnJvcmNvZGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImVycm9yY29kZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXJyb3Jjb2RlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVycm9yY29kZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcnJvcmNvZGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVycm9yY29kZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZXJyb3Jjb2RlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZXJyb3Jjb2RlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXJyb3JuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJlcnJvcm5hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVycm9ybmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlcnJvcm5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXJyb3JuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXJyb3JuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlcnJvcm5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBlcnJvcm5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcnJvcnRleHQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImVycm9ydGV4dCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXJyb3J0ZXh0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVycm9ydGV4dC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcnJvcnRleHQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcnJvcnRleHQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGVycm9ydGV4dC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVycm9ydGV4dC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVycm9ydHlwZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXJyb3J0eXBlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcnJvcnR5cGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZXJyb3J0eXBlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVycm9ydHlwZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVycm9ydHlwZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZXJyb3J0eXBlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZXJyb3J0eXBlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmlsZW5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZpbGVuYW1lIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmlsZW5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZmlsZW5hbWUuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBUeXBlIG9mIGZpbGVuYW1lIHRoZSBlbGVtZW50IG5hbWVzOyBubyBkZWZhdWx0IC0tPgogIDwhLS0KICAgIFBhdGg6IFNlYXJjaCBwYXRoIChwb3NzaWJseSBzeXN0ZW0tc3BlY2lmaWMpIGluIHdoaWNoCiAgICBmaWxlIGNhbiBiZSBmb3VuZAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaWxlbmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJoZWFkZXJmaWxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBhcnRpdGlvbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkZXZpY2VmaWxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpYnJhcnlmaWxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRpcmVjdG9yeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJleHRlbnNpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic3ltbGluayIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYXRoIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZpbGVuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmaWxlbmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZpbGVuYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY3Rpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZ1bmN0aW9uIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY3Rpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZnVuY3Rpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY3Rpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmN0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmdW5jdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZ1bmN0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3VpYnV0dG9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJndWlidXR0b24iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjY2VsIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWlidXR0b24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3VpYnV0dG9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aWJ1dHRvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3VpYnV0dG9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBndWlidXR0b24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBndWlidXR0b24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWlpY29uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJndWlpY29uIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhY2NlbCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3VpaWNvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBndWlpY29uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aWljb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aWljb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGd1aWljb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBndWlpY29uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3VpbGFiZWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imd1aWxhYmVsIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhY2NlbCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3VpbGFiZWwuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3VpbGFiZWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3VpbGFiZWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aWxhYmVsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBndWlsYWJlbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGd1aWxhYmVsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3VpbWVudS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3VpbWVudSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNjZWwiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aW1lbnUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3VpbWVudS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWltZW51LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWltZW51LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBndWltZW51LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3VpbWVudS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aW1lbnVpdGVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJndWltZW51aXRlbSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNjZWwiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aW1lbnVpdGVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGd1aW1lbnVpdGVtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aW1lbnVpdGVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWltZW51aXRlbS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ3VpbWVudWl0ZW0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBndWltZW51aXRlbS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aXN1Ym1lbnUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imd1aXN1Ym1lbnUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjY2VsIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWlzdWJtZW51LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGd1aXN1Ym1lbnUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3Vpc3VibWVudS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3Vpc3VibWVudS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ3Vpc3VibWVudS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGd1aXN1Ym1lbnUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJoYXJkd2FyZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaGFyZHdhcmUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJoYXJkd2FyZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBoYXJkd2FyZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJoYXJkd2FyZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaGFyZHdhcmUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGhhcmR3YXJlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaGFyZHdhcmUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbnRlcmZhY2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImludGVyZmFjZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNjZWwiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImludGVyZmFjZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbnRlcmZhY2UuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBUeXBlIG9mIHRoZSBJbnRlcmZhY2UgaXRlbTsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW50ZXJmYWNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbnRlcmZhY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGludGVyZmFjZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGludGVyZmFjZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImtleWNhcC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ia2V5Y2FwIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5Y2FwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGtleWNhcC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXljYXAuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleWNhcC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Yga2V5Y2FwLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Yga2V5Y2FwLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5Y29kZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ia2V5Y29kZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5Y29kZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBrZXljb2RlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImtleWNvZGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXljb2RlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBrZXljb2RlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Yga2V5Y29kZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImtleWNvbWJvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJrZXljb21ibyIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ia2V5Y2FwIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJrZXljb21ibyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ia2V5c3ltIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtb3VzZWJ1dHRvbiIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5Y29tYm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Yga2V5Y29tYm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5Y29tYm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXlhY3Rpb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleWNvbWJvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBrZXljb21iby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGtleWNvbWJvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5c3lzbS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ia2V5c3ltIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXlzeW0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Yga2V5c3ltLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImtleXN5bS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleXN5c20ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGtleXN5bS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGtleXN5bS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmVhbm5vdGF0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaW5lYW5ub3RhdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVhbm5vdGF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxpbmVhbm5vdGF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmVhbm5vdGF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZWFubm90YXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpbmVhbm5vdGF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGluZWFubm90YXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaXRlcmFsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaXRlcmFsIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGl0ZXJhbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsaXRlcmFsLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpdGVyYWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpdGVyYWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpdGVyYWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBsaXRlcmFsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uc3RhbnQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbnN0YW50IiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25zdGFudC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb25zdGFudC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25zdGFudC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW1pdCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uc3RhbnQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbnN0YW50LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29uc3RhbnQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2YXJuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2YXJuYW1lIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2YXJuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZhcm5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmFybmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZhcm5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZhcm5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB2YXJuYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWFya3VwLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtYXJrdXAiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1hcmt1cC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtYXJrdXAuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWFya3VwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWFya3VwLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtYXJrdXAuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtYXJrdXAubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZWRpYWxhYmVsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZWRpYWxhYmVsIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZWRpYWxhYmVsLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1lZGlhbGFiZWwuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBUeXBlIG9mIG1lZGl1bSBuYW1lZCBieSB0aGUgZWxlbWVudDsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWVkaWFsYWJlbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjYXJ0cmlkZ2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2Ryb20iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGlzayIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0YXBlIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZWRpYWxhYmVsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtZWRpYWxhYmVsLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWVkaWFsYWJlbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lbnVjaG9pY2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1lbnVjaG9pY2UiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNob3J0Y3V0Ii8+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imd1aWJ1dHRvbiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJndWlpY29uIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imd1aWxhYmVsIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imd1aW1lbnUiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3VpbWVudWl0ZW0iLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3Vpc3VibWVudSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbnRlcmZhY2UiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVudWNob2ljZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtZW51Y2hvaWNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lbnVjaG9pY2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1lbnVjaG9pY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1lbnVjaG9pY2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtZW51Y2hvaWNlLm1vZHVsZSAtLT4KICA8IS0tIFNlZSBhbHNvIEtleUNvbWJvIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaG9ydGN1dC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2hvcnRjdXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImtleWNhcCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ia2V5Y29tYm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImtleXN5bSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibW91c2VidXR0b24iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNob3J0Y3V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNob3J0Y3V0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNob3J0Y3V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5YWN0aW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaG9ydGN1dC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2hvcnRjdXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzaG9ydGN1dC5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgbWVudWNob2ljZS5jb250ZW50Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW91c2VidXR0b24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1vdXNlYnV0dG9uIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3VzZWJ1dHRvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtb3VzZWJ1dHRvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtb3VzZWJ1dHRvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW91c2VidXR0b24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1vdXNlYnV0dG9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbW91c2VidXR0b24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2d0ZXh0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2d0ZXh0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNndGV4dC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2d0ZXh0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ3RleHQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2d0ZXh0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2d0ZXh0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNndGV4dC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9wdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib3B0aW9uIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3B0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9wdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcHRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcHRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9wdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG9wdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9wdGlvbmFsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvcHRpb25hbCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9wdGlvbmFsLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9wdGlvbmFsLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9wdGlvbmFsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3B0aW9uYWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9wdGlvbmFsLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb3B0aW9uYWwubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJhbWV0ZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBhcmFtZXRlciIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcmFtZXRlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwYXJhbWV0ZXIuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBUeXBlIG9mIHRoZSBQYXJhbWV0ZXI7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcmFtZXRlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb21tYW5kIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImZ1bmN0aW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9wdGlvbiIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJhbWV0ZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhcmFtZXRlci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBhcmFtZXRlci5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb21wdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJvbXB0IiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvbXB0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb21wdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9tcHQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb21wdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJvbXB0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHJvbXB0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvcGVydHkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByb3BlcnR5IiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvcGVydHkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJvcGVydHkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvcGVydHkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb3BlcnR5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcm9wZXJ0eS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByb3BlcnR5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVwbGFjZWFibGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlcGxhY2VhYmxlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9wdGlvbmFsIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYmFzZS5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXBsYWNlYWJsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZXBsYWNlYWJsZS5lbGVtZW50IC0tPgogIDwhLS0KICAgIENsYXNzOiBUeXBlIG9mIGluZm9ybWF0aW9uIHRoZSBlbGVtZW50IHJlcHJlc2VudHM7IG5vCiAgICBkZWZhdWx0CiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlcGxhY2VhYmxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbW1hbmQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZnVuY3Rpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3B0aW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBhcmFtZXRlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVwbGFjZWFibGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlcGxhY2VhYmxlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVwbGFjZWFibGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXR1cm52YWx1ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmV0dXJudmFsdWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldHVybnZhbHVlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJldHVybnZhbHVlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldHVybnZhbHVlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV0dXJudmFsdWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJldHVybnZhbHVlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmV0dXJudmFsdWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZ21sdGFnLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZ21sdGFnIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZ21sdGFnLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNnbWx0YWcuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBUeXBlIG9mIFNHTUwgY29uc3RydWN0IHRoZSBlbGVtZW50IG5hbWVzOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZ21sdGFnLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImF0dHJpYnV0ZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhdHR2YWx1ZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJlbGVtZW50Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImVuZHRhZyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJlbXB0eXRhZyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJnZW5lbnRpdHkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibnVtY2hhcnJlZiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwYXJhbWVudGl0eSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwaSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ4bWxwaSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzdGFydHRhZyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZ21sY29tbWVudCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2dtbHRhZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2dtbHRhZy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNnbWx0YWcubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdHJ1Y3RmaWVsZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3RydWN0ZmllbGQiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0cnVjdGZpZWxkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN0cnVjdGZpZWxkLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0cnVjdGZpZWxkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RydWN0ZmllbGQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN0cnVjdGZpZWxkLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3RydWN0ZmllbGQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdHJ1Y3RuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdHJ1Y3RuYW1lIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdHJ1Y3RuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN0cnVjdG5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RydWN0bmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0cnVjdG5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN0cnVjdG5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdHJ1Y3RuYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3ltYm9sLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzeW1ib2wiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bWJvbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzeW1ib2wuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBUeXBlIG9mIHN5bWJvbDsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3ltYm9sLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbWl0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeW1ib2wucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN5bWJvbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN5bWJvbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5c3RlbWl0ZW0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN5c3RlbWl0ZW0iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhY3JvbnltIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3lzdGVtaXRlbS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzeXN0ZW1pdGVtLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogVHlwZSBvZiBzeXN0ZW0gaXRlbSB0aGUgZWxlbWVudCBuYW1lczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3lzdGVtaXRlbS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb25zdGFudCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJldmVudCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJldmVudGhhbmRsZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZG9tYWlubmFtZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJmcWRvbWFpbm5hbWUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXBhZGRyZXNzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5ldG1hc2siLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZXRoZXJhZGRyZXNzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imdyb3VwbmFtZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaWJyYXJ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1hY3JvIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9zbmFtZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJmaWxlc3lzdGVtIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlc291cmNlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InN5c3RlbW5hbWUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idXNlcm5hbWUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibmV3c2dyb3VwIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5c3RlbWl0ZW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN5c3RlbWl0ZW0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzeXN0ZW1pdGVtLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9rZW4ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRva2VuIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2tlbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2tlbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2tlbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRva2VuLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2tlbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRva2VuLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idHlwZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idHlwZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idHlwZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0eXBlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InR5cGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0eXBlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0eXBlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdHlwZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InVzZXJpbnB1dC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idXNlcmlucHV0IiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY28iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InVzZXJpbnB1dC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB1c2VyaW5wdXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idXNlcmlucHV0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ1c2VyaW5wdXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHVzZXJpbnB1dC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHVzZXJpbnB1dC5tb2R1bGUgLS0+CiAgPCEtLSBHZW5lcmFsIHdvcmRzIGFuZCBwaHJhc2VzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhYmJyZXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFiYnJldiIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9IndvcmQuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWJicmV2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFiYnJldi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhYmJyZXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhYmJyZXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFiYnJldi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFiYnJldi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFjcm9ueW0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFjcm9ueW0iIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ3b3JkLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFjcm9ueW0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWNyb255bS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhY3JvbnltLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWNyb255bS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWNyb255bS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFjcm9ueW0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRhdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2l0YXRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdGF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNpdGF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdGF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0YXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNpdGF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2l0YXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRlcmVmZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNpdGVyZWZlbnRyeSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVmZW50cnl0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJtYW52b2xudW0iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0ZXJlZmVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNpdGVyZWZlbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRlcmVmZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaXRlcmVmZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNpdGVyZWZlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNpdGVyZWZlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVudHJ5dGl0bGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZmVudHJ5dGl0bGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZlbnRyeXRpdGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5dGl0bGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZW50cnl0aXRsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVudHJ5dGl0bGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5dGl0bGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZlbnRyeXRpdGxlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibmFtdm9sbnVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtYW52b2xudW0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0id29yZC5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtYW52b2xudW0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWFudm9sbnVtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1hbnZvbG51bS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im5hbXZvbG51bS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWFudm9sbnVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWFudm9sbnVtLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2l0ZXRpdGxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjaXRldGl0bGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdGV0aXRsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjaXRldGl0bGUuZWxlbWVudCAtLT4KICA8IS0tIFB1Yndvcms6IEdlbnJlIG9mIHB1Ymxpc2hlZCB3b3JrIGNpdGVkOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRldGl0bGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InB1YndvcmsiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhcnRpY2xlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvb2siLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhcHRlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwYXJ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlZmVudHJ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Rpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iam91cm5hbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZXJpZXMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2V0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1hbnVzY3JpcHQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdGV0aXRsZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2l0ZXRpdGxlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2l0ZXRpdGxlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZW1waGFzaXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImVtcGhhc2lzIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlbXBoYXNpcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlbXBoYXNpcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbXBoYXNpcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVtcGhhc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlbXBoYXNpcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVtcGhhc2lzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmlyc3R0ZXJtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmaXJzdHRlcm0iIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ3b3JkLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZpcnN0dGVybS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmaXJzdHRlcm0uZWxlbWVudCAtLT4KICA8IS0tIHRvIEdsb3NzRW50cnkgb3Igb3RoZXIgZXhwbGFuYXRpb24gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZpcnN0dGVybS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmQuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaXJzdHRlcm0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZpcnN0dGVybS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZpcnN0dGVybS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvcmVpZ25waHJhc2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZvcmVpZ25waHJhc2UiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZvcmVpZ25waHJhc2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZm9yZWlnbnBocmFzZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmb3JlaWducGhyYXNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZm9yZWlnbnBocmFzZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZm9yZWlnbnBocmFzZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZvcmVpZ25waHJhc2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc3Rlcm0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3NzdGVybSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3N0ZXJtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdsb3NzdGVybS5lbGVtZW50IC0tPgogIDwhLS0gdG8gR2xvc3NFbnRyeSBpZiBHbG9zc3Rlcm0gdXNlZCBpbiB0ZXh0IC0tPgogIDwhLS0KICAgIEJhc2VGb3JtOiBQcm92aWRlcyB0aGUgZm9ybSBvZiBHbG9zc1Rlcm0gdG8gYmUgdXNlZAogICAgZm9yIGluZGV4aW5nCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzdGVybS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmQuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhc2Vmb3JtIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc3Rlcm0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzdGVybS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzdGVybS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBocmFzZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGhyYXNlIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwaHJhc2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGhyYXNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBocmFzZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBocmFzZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcGhyYXNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcGhyYXNlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icXVvdGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InF1b3RlIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJxdW90ZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBxdW90ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxdW90ZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InF1b3RlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBxdW90ZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHF1b3RlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3NzY3JpcHQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN1YnNjcmlwdCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbXBoYXNpcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVwbGFjZWFibGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN5bWJvbCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJvdGhlci5jaGFyLmNsYXNzIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJzY3JpcHQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3Vic2NyaXB0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YnNjcmlwdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNzc2NyaXB0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdWJzY3JpcHQuYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdXBlcnNjcmlwdCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbXBoYXNpcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVwbGFjZWFibGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN5bWJvbCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJvdGhlci5jaGFyLmNsYXNzIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdXBlcnNjcmlwdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdXBlcnNjcmlwdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdXBlcnNjcmlwdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNzc2NyaXB0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdXBlcnNjcmlwdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNzc2NyaXB0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idHJhZGVtYXJrLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0cmFkZW1hcmsiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJvdGhlci5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVncmFwaGljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVtZWRpYW9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZW1waGFzaXMiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRyYWRlbWFyay5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0cmFkZW1hcmsuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBNb3JlIHByZWNpc2VseSBpZGVudGlmaWVzIHRoZSBpdGVtIHRoZSBlbGVtZW50IG5hbWVzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0cmFkZW1hcmsuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIiBkZWZhdWx0PSJ0cmFkZSI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlcnZpY2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idHJhZGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVnaXN0ZXJlZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb3B5cmlnaHQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRyYWRlbWFyay5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdHJhZGVtYXJrLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdHJhZGVtYXJrLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0id29yZGFzd29yZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0id29yZGFzd29yZCIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9IndvcmQuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0id29yZGFzd29yZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB3b3JkYXN3b3JkLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9IndvcmRhc3dvcmQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ3b3JkYXN3b3JkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB3b3JkYXN3b3JkLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygd29yZGFzd29yZC5tb2R1bGUgLS0+CiAgPCEtLSBMaW5rcyBhbmQgY3Jvc3MtcmVmZXJlbmNlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaW5rLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaW5rIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluay5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluay5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsaW5rLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgRW5kdGVybTogSUQgb2YgZWxlbWVudCBjb250YWluaW5nIHRleHQgdGhhdCBpcyB0byBiZQogICAgZmV0Y2hlZCBmcm9tIGVsc2V3aGVyZSBpbiB0aGUgZG9jdW1lbnQgdG8gYXBwZWFyIGFzCiAgICB0aGUgY29udGVudCBvZiB0aGlzIGVsZW1lbnQKICAtLT4KICA8IS0tIHRvIGxpbmtlZC10byBvYmplY3QgLS0+CiAgPCEtLSBUeXBlOiBGcmVlbHkgYXNzaWduYWJsZSBwYXJhbWV0ZXIgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmsuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVuZHRlcm0iIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcmVxLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBsaW5rLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGluay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9saW5rLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvbGluayIgc3Vic3RpdHV0aW9uR3JvdXA9ImxpbmsuY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9saW5rLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9saW5rLmVsZW1lbnQgLS0+CiAgPCEtLSBUYXJnZXREb2NFbnQ6IE5hbWUgb2YgYW4gZW50aXR5IHRvIGJlIHRoZSB0YXJnZXQgb2YgdGhlIGxpbmsgLS0+CiAgPCEtLQogICAgTGlua01vZGU6IElEIG9mIGEgTW9kZVNwZWMgY29udGFpbmluZyBpbnN0cnVjdGlvbnMgZm9yCiAgICBvcGVyYXRpbmcgb24gdGhlIGVudGl0eSBuYW1lZCBieSBUYXJnZXREb2NFbnQKICAtLT4KICA8IS0tIExvY2FsSW5mbzogSW5mb3JtYXRpb24gdGhhdCBtYXkgYmUgcGFzc2VkIHRvIE1vZGVTcGVjIC0tPgogIDwhLS0gVHlwZTogRnJlZWx5IGFzc2lnbmFibGUgcGFyYW1ldGVyIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvbGluay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGFyZ2V0ZG9jZW50IiB0eXBlPSJ4czpFTlRJVFkiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlua21vZGUiIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxvY2FsaW5mbyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRhcmdldGRvYyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0YXJnZXRwdHIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9saW5rLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvbGluay5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG9saW5rLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idWxpbmsucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InVsaW5rIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluay5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idWxpbmsuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdWxpbmsuZWxlbWVudCAtLT4KICA8IS0tIFVSTDogdW5pZm9ybSByZXNvdXJjZSBsb2NhdG9yOyB0aGUgdGFyZ2V0IG9mIHRoZSBVTGluayAtLT4KICA8IS0tIFR5cGU6IEZyZWVseSBhc3NpZ25hYmxlIHBhcmFtZXRlciAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idWxpbmsuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVybCIgdXNlPSJyZXF1aXJlZCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ1bGluay5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdWxpbmsuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB1bGluay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvb3Rub3RlcmVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmb290bm90ZXJlZiIgc3Vic3RpdHV0aW9uR3JvdXA9InhyZWYuY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZvb3Rub3RlcmVmLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZvb3Rub3RlcmVmLmVsZW1lbnQgLS0+CiAgPCEtLSB0byBmb290bm90ZSBjb250ZW50IHN1cHBsaWVkIGVsc2V3aGVyZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZm9vdG5vdGVyZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcmVxLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmb290bm90ZXJlZi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZm9vdG5vdGVyZWYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmb290bm90ZXJlZi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InhyZWYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InhyZWYiIHN1YnN0aXR1dGlvbkdyb3VwPSJ4cmVmLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4cmVmLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHhyZWYuZWxlbWVudCAtLT4KICA8IS0tCiAgICBFbmR0ZXJtOiBJRCBvZiBlbGVtZW50IGNvbnRhaW5pbmcgdGV4dCB0aGF0IGlzIHRvIGJlCiAgICBmZXRjaGVkIGZyb20gZWxzZXdoZXJlIGluIHRoZSBkb2N1bWVudCB0byBhcHBlYXIgYXMKICAgIHRoZSBjb250ZW50IG9mIHRoaXMgZWxlbWVudAogIC0tPgogIDwhLS0gdG8gbGlua2VkLXRvIG9iamVjdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ieHJlZi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW5kdGVybSIgdHlwZT0ieHM6SURSRUYiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRyZXEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4cmVmLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB4cmVmLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgeHJlZi5tb2R1bGUgLS0+CiAgPCEtLSBVYmlxdWl0b3VzIGVsZW1lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhbmNob3Iucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFuY2hvciI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFuY2hvci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhbmNob3IuZWxlbWVudCAtLT4KICA8IS0tIHJlcXVpcmVkIC0tPgogIDwhLS0gcmVwbGFjZXMgTGFuZyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYW5jaG9yLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaWRyZXEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVtYXAuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4cmVmbGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZpc2lvbmZsYWcuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlZmZlY3Rpdml0eS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFuY2hvci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYW5jaG9yLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYW5jaG9yLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmVnaW5wYWdlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJiZWdpbnBhZ2UiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiZWdpbnBhZ2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmVnaW5wYWdlLmVsZW1lbnQgLS0+CiAgPCEtLSBQYWdlTnVtOiBOdW1iZXIgb2YgcGFnZSB0aGF0IGJlZ2lucyBhdCB0aGlzIHBvaW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiZWdpbnBhZ2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmVnaW5wYWdlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiZWdpbnBhZ2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiZWdpbnBhZ2UubW9kdWxlIC0tPgogIDwhLS0KICAgIEluZGV4VGVybXMgYXBwZWFyIGluIHRoZSB0ZXh0IGZsb3cgZm9yIGdlbmVyYXRpbmcgb3IgbGlua2luZyBhbgogICAgaW5kZXguCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4dGVybS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5kZXh0ZXJtIiBzdWJzdGl0dXRpb25Hcm91cD0ibmR4dGVybS5jbGFzcyIvPgogIDwhLS0gZW5kIG9mIGluZGV4dGVybS5lbGVtZW50IC0tPgogIDwhLS0KICAgIFNjb3BlOiBJbmRpY2F0ZXMgd2hpY2ggZ2VuZXJhdGVkIGluZGljZXMgdGhlIEluZGV4VGVybQogICAgc2hvdWxkIGFwcGVhciBpbjogR2xvYmFsICh3aG9sZSBkb2N1bWVudCBzZXQpLCBMb2NhbCAodGhpcwogICAgZG9jdW1lbnQgb25seSksIG9yIEFsbCAoYm90aCkKICAtLT4KICA8IS0tCiAgICBTaWduaWZpY2FuY2U6IFdoZXRoZXIgdGhpcyBJbmRleFRlcm0gaXMgdGhlIG1vc3QgcGVydGluZW50CiAgICBvZiBpdHMgc2VyaWVzIChQcmVmZXJyZWQpIG9yIG5vdCAoTm9ybWFsLCB0aGUgZGVmYXVsdCkKICAtLT4KICA8IS0tCiAgICBDbGFzczogSW5kaWNhdGVzIHR5cGUgb2YgSW5kZXhUZXJtOyBkZWZhdWx0IGlzIFNpbmd1bGFyLAogICAgb3IgRW5kT2ZSYW5nZSBpZiBTdGFydFJlZiBpcyBzdXBwbGllZDsgU3RhcnRPZlJhbmdlIHZhbHVlCiAgICBtdXN0IGJlIHN1cHBsaWVkIGV4cGxpY2l0bHkgb24gc3RhcnRzIG9mIHJhbmdlcwogIC0tPgogIDwhLS0KICAgIFN0YXJ0UmVmOiBJRCBvZiB0aGUgSW5kZXhUZXJtIHRoYXQgc3RhcnRzIHRoZSBpbmRleGluZwogICAgcmFuZ2UgZW5kZWQgYnkgdGhpcyBJbmRleFRlcm0KICAtLT4KICA8IS0tCiAgICBab25lOiBJRHMgb2YgdGhlIGVsZW1lbnRzIHRvIHdoaWNoIHRoZSBJbmRleFRlcm0gYXBwbGllcywKICAgIGFuZCBpbmRpY2F0ZXMgdGhhdCB0aGUgSW5kZXhUZXJtIGFwcGxpZXMgdG8gdGhvc2UgZW50aXJlCiAgICBlbGVtZW50cyByYXRoZXIgdGhhbiB0aGUgcG9pbnQgYXQgd2hpY2ggdGhlIEluZGV4VGVybQogICAgb2NjdXJzCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4dGVybS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW0uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjb3BlIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYWxsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imdsb2JhbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsb2NhbCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaWduaWZpY2FuY2UiIGRlZmF1bHQ9Im5vcm1hbCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InByZWZlcnJlZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JtYWwiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzaW5ndWxhciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzdGFydG9mcmFuZ2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZW5kb2ZyYW5nZSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGFydHJlZiIgdHlwZT0ieHM6SURSRUYiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iem9uZSIgdHlwZT0ieHM6SURSRUZTIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleHRlcm0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZGV4dGVybS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZGV4dGVybS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByaW1zZWN0ZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByaW1hcnkiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmltYXJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByaW1hcnkuZWxlbWVudCAtLT4KICA8IS0tCiAgICBTb3J0QXM6IEFsdGVybmF0ZSBzb3J0IHN0cmluZyBmb3IgaW5kZXggc29ydGluZywgZS5nLiwKICAgICJmb3VydGVlbiIgZm9yIGFuIGVsZW1lbnQgY29udGFpbmluZyAiMTQiCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByaW1hcnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNvcnRhcyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJpbXNlY3Rlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJpbWFyeS5hdHRsaXN0IC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlY29uZGFyeSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY29uZGFyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWNvbmRhcnkuZWxlbWVudCAtLT4KICA8IS0tCiAgICBTb3J0QXM6IEFsdGVybmF0ZSBzb3J0IHN0cmluZyBmb3IgaW5kZXggc29ydGluZywgZS5nLiwKICAgICJmb3VydGVlbiIgZm9yIGFuIGVsZW1lbnQgY29udGFpbmluZyAiMTQiCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY29uZGFyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic29ydGFzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmltc2VjdGVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWNvbmRhcnkuYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0ZXJ0aWFyeSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRlcnRpYXJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRlcnRpYXJ5LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU29ydEFzOiBBbHRlcm5hdGUgc29ydCBzdHJpbmcgZm9yIGluZGV4IHNvcnRpbmcsIGUuZy4sCiAgICAiZm91cnRlZW4iIGZvciBhbiBlbGVtZW50IGNvbnRhaW5pbmcgIjE0IgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0ZXJ0aWFyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic29ydGFzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmltc2VjdGVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0ZXJ0aWFyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByaW1zZWN0ZXIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWVzZWVhbHNvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZXNlZWFsc28ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlZS5hdHRsaXN0IC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlZWFsc28iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWVhbHNvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlZWFsc28uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VlYWxzby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZXNlZWFsc28ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgo8L3hzOnNjaGVtYT4KPCEtLSBlbmQgb2Ygc2VlYWxzby5hdHRsaXN0IC0tPgo8IS0tIGVuZCBvZiBzZWVzZWVhbHNvLm1vZHVsZSAtLT4KPCEtLSBlbmQgb2YgaW5kZXh0ZXJtLmNvbnRlbnQubW9kdWxlIC0tPgo8IS0tIEVuZCBvZiBEb2NCb29rIFhNTCBpbmZvcm1hdGlvbiBwb29sIG1vZHVsZSBWNC4yIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4K</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_3/docbook.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgWE1MIERURCBWNC4yIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkb2Nib29reC5kdGQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDIgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZG9jYm9va3guZHRkLHYgMS4xMyAyMDAyLzA3LzE3IDE1OjI2OjE2IG53YWxzaCBFeHAgJAogIAogIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnkgYW5kIGRpc3RyaWJ1dGUgdGhlIERvY0Jvb2sgWE1MIERURAogIGFuZCBpdHMgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZQogIGlzIGhlcmVieSBncmFudGVkIGluIHBlcnBldHVpdHksIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodAogIG5vdGljZSBhbmQgdGhpcyBwYXJhZ3JhcGggYXBwZWFyIGluIGFsbCBjb3BpZXMuICBUaGUgY29weXJpZ2h0CiAgaG9sZGVycyBtYWtlIG5vIHJlcHJlc2VudGF0aW9uIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGUgRFREIGZvcgogIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3NlZCBvciBpbXBsaWVkCiAgd2FycmFudHkuCiAgCiAgSWYgeW91IG1vZGlmeSB0aGUgRG9jQm9vayBEVEQgaW4gYW55IHdheSwgZXhjZXB0IGZvciBkZWNsYXJpbmcgYW5kCiAgcmVmZXJlbmNpbmcgYWRkaXRpb25hbCBzZXRzIG9mIGdlbmVyYWwgZW50aXRpZXMgYW5kIGRlY2xhcmluZwogIGFkZGl0aW9uYWwgbm90YXRpb25zLCBsYWJlbCB5b3VyIERURCBhcyBhIHZhcmlhbnQgb2YgRG9jQm9vay4gIFNlZQogIHRoZSBtYWludGVuYW5jZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogIAogIFBsZWFzZSBkaXJlY3QgYWxsIHF1ZXN0aW9ucywgYnVnIHJlcG9ydHMsIG9yIHN1Z2dlc3Rpb25zIGZvcgogIGNoYW5nZXMgdG8gdGhlIGRvY2Jvb2tAbGlzdHMub2FzaXMtb3Blbi5vcmcgbWFpbGluZyBsaXN0LiBGb3IgbW9yZQogIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rLy4KLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIFRoaXMgaXMgdGhlIGRyaXZlciBmaWxlIGZvciBWNC4yIG9mIHRoZSBEb2NCb29rIERURC4KICBQbGVhc2UgdXNlIHRoZSBmb2xsb3dpbmcgZm9ybWFsIHB1YmxpYyBpZGVudGlmaWVyIHRvIGlkZW50aWZ5IGl0OgogIAogICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgogIAogIEZvciBleGFtcGxlLCBpZiB5b3VyIGRvY3VtZW50J3MgdG9wLWxldmVsIGVsZW1lbnQgaXMgQm9vaywgYW5kCiAgeW91IGFyZSB1c2luZyBEb2NCb29rIGRpcmVjdGx5LCB1c2UgdGhlIEZQSSBpbiB0aGUgRE9DVFlQRQogIGRlY2xhcmF0aW9uOgogIAogIDwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKICAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjIvZG9jYm9va3guZHRkIgogICAgICAgICAgICAgICAgIFsuLi5dPgogIAogIE9yLCBpZiB5b3UgaGF2ZSBhIGhpZ2hlci1sZXZlbCBkcml2ZXIgZmlsZSB0aGF0IGN1c3RvbWl6ZXMgRG9jQm9vaywKICB1c2UgdGhlIEZQSSBpbiB0aGUgcGFyYW1ldGVyIGVudGl0eSBkZWNsYXJhdGlvbjoKICAKICA8IUVOVElUWSAlIERvY0Jvb2tEVEQgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjIvL0VOIgogICAgICAgICAgICAgImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4yL2RvY2Jvb2t4LmR0ZCI+CiAgJURvY0Jvb2tEVEQ7CiAgCiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiB0aGUgcGFyYW1ldGVyCiAgZW50aXR5IGFuZCBtb2R1bGUgc2NoZW1lIHVzZWQgaW4gRG9jQm9vaywgY3VzdG9taXppbmcgRG9jQm9vayBhbmQKICBwbGFubmluZyBmb3IgaW50ZXJjaGFuZ2UsIGFuZCBjaGFuZ2VzIG1hZGUgc2luY2UgdGhlIGxhc3QgcmVsZWFzZQogIG9mIERvY0Jvb2suCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRW5hYmxlIFNHTUwgZmVhdHVyZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIE5vdGF0aW9uIGRlY2xhcmF0aW9ucyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+Cjx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+CiAgPHhzOmluY2x1ZGUgc2NoZW1hTG9jYXRpb249ImRibm90bngueHNkIi8+CiAgPHhzOmluY2x1ZGUgc2NoZW1hTG9jYXRpb249ImRicG9vbHgueHNkIi8+CiAgPHhzOmluY2x1ZGUgc2NoZW1hTG9jYXRpb249ImRiaGllcngueHNkIi8+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gSVNPIGNoYXJhY3RlciBlbnRpdHkgc2V0cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIGV1cm8gc2lnbiwgVSsyMEFDIE5FVyAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBEVEQgbW9kdWxlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gSW5mb3JtYXRpb24gcG9vbCAuLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFJlZGVjbGFyYXRpb24gcGxhY2Vob2xkZXIgLi4uLi4gLS0+CiAgPCEtLSBEb2N1bWVudCBoaWVyYXJjaHkgLi4uLi4uLi4uLi4uIC0tPgo8L3hzOnNjaGVtYT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIE90aGVyIGdlbmVyYWwgZW50aXRpZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRW5kIG9mIERvY0Jvb2sgWE1MIERURCBWNC4yIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_4/calstblx.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgQ0FMUyBUYWJsZSBNb2RlbCBWNC40IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBjYWxzdGJseC5tb2QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDIgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogIFRoaXMgRFREIGlzIGJhc2VkIG9uIHRoZSBDQUxTIFRhYmxlIE1vZGVsCiAgUFVCTElDICItLy9VU0EtRE9ELy9EVEQgVGFibGUgTW9kZWwgOTUxMDEwLy9FTiIKICAKICAkSWQ6IGNhbHN0Ymx4LmR0ZCx2IDEuMjcgMjAwNS8wMS8yNyAxMzo1MjowMCBud2Fsc2ggRXhwICQKICAKICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5IGFuZCBkaXN0cmlidXRlIHRoZSBEb2NCb29rIERURAogIGFuZCBpdHMgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZQogIGlzIGhlcmVieSBncmFudGVkIGluIHBlcnBldHVpdHksIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodAogIG5vdGljZSBhbmQgdGhpcyBwYXJhZ3JhcGggYXBwZWFyIGluIGFsbCBjb3BpZXMuICBUaGUgY29weXJpZ2h0CiAgaG9sZGVycyBtYWtlIG5vIHJlcHJlc2VudGF0aW9uIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGUgRFREIGZvcgogIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3NlZCBvciBpbXBsaWVkCiAgd2FycmFudHkuCiAgCiAgSWYgeW91IG1vZGlmeSB0aGUgRG9jQm9vayBEVEQgaW4gYW55IHdheSwgZXhjZXB0IGZvciBkZWNsYXJpbmcgYW5kCiAgcmVmZXJlbmNpbmcgYWRkaXRpb25hbCBzZXRzIG9mIGdlbmVyYWwgZW50aXRpZXMgYW5kIGRlY2xhcmluZwogIGFkZGl0aW9uYWwgbm90YXRpb25zLCBsYWJlbCB5b3VyIERURCBhcyBhIHZhcmlhbnQgb2YgRG9jQm9vay4gIFNlZQogIHRoZSBtYWludGVuYW5jZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogIAogIFBsZWFzZSBkaXJlY3QgYWxsIHF1ZXN0aW9ucywgYnVnIHJlcG9ydHMsIG9yIHN1Z2dlc3Rpb25zIGZvcgogIGNoYW5nZXMgdG8gdGhlIGRvY2Jvb2tAbGlzdHMub2FzaXMtb3Blbi5vcmcgbWFpbGluZyBsaXN0LiBGb3IgbW9yZQogIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rLy4KLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIFRoaXMgbW9kdWxlIGNvbnRhaW5zIHRoZSBkZWZpbml0aW9ucyBmb3IgdGhlIENBTFMgVGFibGUgTW9kZWwKICBjb252ZXJ0ZWQgdG8gWE1MLiBJdCBoYXMgYmVlbiBtb2RpZmllZCBzbGlnaHRseSBmb3IgdXNlIGluIHRoZQogIGNvbWJpbmVkIEhUTUwvQ0FMUyBtb2RlbHMgc3VwcG9ydGVkIGJ5IERvY0Jvb2sgVjQuNC4KLS0+CjwhLS0KICBUaGVzZSBkZWZpbml0aW9ucyBhcmUgbm90IGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIHRhYmxlIG1vZGVsLCBidXQgYXJlCiAgdXNlZCBpbiB0aGUgZGVmYXVsdCBDQUxTIHRhYmxlIG1vZGVsIGFuZCBhcmUgdXN1YWxseSBkZWZpbmVkIGVsc2V3aGVyZQogIChhbmQgcHJpb3IgdG8gdGhlIGluY2x1c2lvbiBvZiB0aGlzIHRhYmxlIG1vZHVsZSkgaW4gYSBDQUxTIERURC4KLS0+CjwhLS0KICBubyBpZiB6ZXJvKHMpLAogIHllcyBpZiBhbnkgb3RoZXIgZGlnaXRzIHZhbHVlCi0tPgo8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiPgogIDx4czppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiIHNjaGVtYUxvY2F0aW9uPSJ4bWwueHNkIi8+CiAgPHhzOnNpbXBsZVR5cGUgbmFtZT0ieWVzb3JubyI+CiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIi8+CiAgPC94czpzaW1wbGVUeXBlPgogIDx4czpncm91cCBuYW1lPSJ0aXRsZXMiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8IS0tIGRlZmF1bHQgZm9yIHVzZSBpbiBlbnRyeSBjb250ZW50IC0tPgogIDwhLS0KICAgIFRoZSBwYXJhbWV0ZXIgZW50aXRpZXMgYXMgZGVmaW5lZCBiZWxvdyBwcm92aWRlIHRoZSBDQUxTIHRhYmxlIG1vZGVsCiAgICBhcyBwdWJsaXNoZWQgKGFzIHBhcnQgb2YgdGhlIEV4YW1wbGUgRFREKSBpbiBNSUwtSERCSy0yODAwMS4KICAgIAogICAgVGhlc2UgZm9sbG93aW5nIGRlY2xhcmF0aW9ucyBwcm92aWRlIHRoZSBDQUxTLWNvbXBsaWFudCBkZWZhdWx0IGRlZmluaXRpb25zCiAgICBmb3IgdGhlc2UgZW50aXRpZXMuICBIb3dldmVyLCB0aGVzZSBlbnRpdGllcyBjYW4gYW5kIHNob3VsZCBiZSByZWRlZmluZWQKICAgIChieSBnaXZpbmcgdGhlIGFwcHJvcHJpYXRlIHBhcmFtZXRlciBlbnRpdHkgZGVjbGFyYXRpb24ocykgcHJpb3IgdG8gdGhlCiAgICByZWZlcmVuY2UgdG8gdGhpcyBUYWJsZSBNb2RlbCBkZWNsYXJhdGlvbiBzZXQgZW50aXR5KSB0byBmaXQgdGhlIG5lZWRzCiAgICBvZiB0aGUgY3VycmVudCBhcHBsaWNhdGlvbi4KICAtLT4KICA8eHM6Z3JvdXAgbmFtZT0idGJsLnRhYmxlLXRpdGxlcy5tZGwiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Z3JvdXAgcmVmPSJ0aXRsZXMiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0idGJsLnRhYmxlLW1haW4ubWRsIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRncm91cCIvPgogICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJncmFwaGljIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0YmwudGdyb3VwLm1kbCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sc3BlYyIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNwYW5zcGVjIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aGVhZCIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGZvb3QiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0Ym9keSIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmNvbXBsZXhUeXBlPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YmwudGdyb3VwLmF0dCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRncm91cHN0eWxlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGJsLnJvdy5tZGwiPgogICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZW50cnkiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbnRyeXRibCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpjb21wbGV4VHlwZT4KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGJsLmVudHJ5dGJsLm1kbCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sc3BlYyIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNwYW5zcGVjIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aGVhZCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRib2R5Ii8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Y29tcGxleFR5cGU+CiAgPCEtLSA9PT09PSAgRWxlbWVudCBhbmQgYXR0cmlidXRlIGRlY2xhcmF0aW9ucyBmb2xsb3cuID09PT09IC0tPgogIDx4czplbGVtZW50IG5hbWU9InRhYmxlIiBzdWJzdGl0dXRpb25Hcm91cD0iZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNvbXBsZXhDb250ZW50PgogICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idGJsLnRhYmxlLm1kbCI+CiAgICAgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YWJsZS5hdHRsaXN0Ii8+CiAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgIDwveHM6Y29tcGxleENvbnRlbnQ+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFibGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZyYW1lIiB0eXBlPSJ0YmwuZnJhbWUuYXR0dmFsIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHNlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRibC50YWJsZS5hdHQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJvZHlhdHQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0Z3JvdXAiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+CiAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0YmwudGdyb3VwLm1kbCI+CiAgICAgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0Z3JvdXAuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRncm91cC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29scyIgdXNlPSJyZXF1aXJlZCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGJsLnRncm91cC5hdHQiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd3NlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imp1c3RpZnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXJvZmYiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb2xzcGVjIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sc3BlYy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sc3BlYy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sbnVtIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbG5hbWUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sd2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd3NlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imp1c3RpZnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXJvZmYiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNwYW5zcGVjIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3BhbnNwZWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNwYW5zcGVjLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lc3QiIHVzZT0icmVxdWlyZWQiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZWVuZCIgdXNlPSJyZXF1aXJlZCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFubmFtZSIgdXNlPSJyZXF1aXJlZCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ianVzdGlmeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjaGFyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhcm9mZiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGhlYWQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+CiAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0YmwuaGRmdC5tZGwiPgogICAgICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGhlYWQuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRoZWFkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRmb290Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNvbXBsZXhDb250ZW50PgogICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idGJsLmhkZnQubWRsIj4KICAgICAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRmb290LmF0dGxpc3QiLz4KICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgPC94czpjb21wbGV4Q29udGVudD4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0Zm9vdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0Ym9keSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjb21wbGV4Q29udGVudD4KICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRibC50Ym9keS5tZGwiPgogICAgICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGJvZHkuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRib2R5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJvdyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjb21wbGV4Q29udGVudD4KICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRibC5yb3cubWRsIj4KICAgICAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvdy5hdHRsaXN0Ii8+CiAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgIDwveHM6Y29tcGxleENvbnRlbnQ+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icm93LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJlbnRyeXRibCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjb21wbGV4Q29udGVudD4KICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRibC5lbnRyeXRibC5tZGwiPgogICAgICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZW50cnl0YmwuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVudHJ5dGJsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzIiB1c2U9InJlcXVpcmVkIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YmwudGdyb3VwLmF0dCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xuYW1lIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYW5uYW1lIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWVzdCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lZW5kIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHNlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsZWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNlbnRlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJqdXN0aWZ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNoYXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyb2ZmIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN1ciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGJsLmVudHJ5Lm1kbCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlbnRyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbG5hbWUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZXN0Ii8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWVlbmQiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3Bhbm5hbWUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW9yZXJvd3MiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd3NlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imp1c3RpZnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXJvZmYiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm90YXRlIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtaWRkbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm90dG9tIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN1ciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CjwveHM6c2NoZW1hPgo8IS0tIEVuZCBvZiBEb2NCb29rIENBTFMgVGFibGUgTW9kZWwgVjQuNCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4K</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_4/dbhierx.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgZG9jdW1lbnQgaGllcmFyY2h5IG1vZHVsZSBWNC40IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkYmhpZXJ4Lm1vZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDQgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZGJoaWVyeC5tb2QsdiAxLjM4IDIwMDUvMDEvMjcgMTM6NTI6MDAgbndhbHNoIEV4cCAkCiAgCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSBhbmQgZGlzdHJpYnV0ZSB0aGUgRG9jQm9vayBEVEQKICBhbmQgaXRzIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUKICBpcyBoZXJlYnkgZ3JhbnRlZCBpbiBwZXJwZXR1aXR5LCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQKICBub3RpY2UgYW5kIHRoaXMgcGFyYWdyYXBoIGFwcGVhciBpbiBhbGwgY29waWVzLiAgVGhlIGNvcHlyaWdodAogIGhvbGRlcnMgbWFrZSBubyByZXByZXNlbnRhdGlvbiBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhlIERURCBmb3IKICBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzZWQgb3IgaW1wbGllZAogIHdhcnJhbnR5LgogIAogIElmIHlvdSBtb2RpZnkgdGhlIERvY0Jvb2sgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBvdmVyYWxsIGRvY3VtZW50CiAgaGllcmFyY2hpZXMgb2YgRG9jQm9vayBkb2N1bWVudHMuICBJdCBjb3ZlcnMgY29tcHV0ZXIgZG9jdW1lbnRhdGlvbgogIG1hbnVhbHMgYW5kIG1hbnVhbCBmcmFnbWVudHMsIGFzIHdlbGwgYXMgcmVmZXJlbmNlIGVudHJpZXMgKHN1Y2ggYXMKICBtYW4gcGFnZXMpIGFuZCB0ZWNobmljYWwgam91cm5hbHMgb3IgYW50aG9sb2dpZXMgY29udGFpbmluZwogIGFydGljbGVzLgogIAogIFRoaXMgbW9kdWxlIGRlcGVuZHMgb24gdGhlIERvY0Jvb2sgaW5mb3JtYXRpb24gcG9vbCBtb2R1bGUuICBBbGwKICBlbGVtZW50cyBhbmQgZW50aXRpZXMgcmVmZXJlbmNlZCBidXQgbm90IGRlZmluZWQgaGVyZSBhcmUgYXNzdW1lZAogIHRvIGJlIGRlZmluZWQgaW4gdGhlIGluZm9ybWF0aW9uIHBvb2wgbW9kdWxlLgogIAogIEluIERURCBkcml2ZXIgZmlsZXMgcmVmZXJyaW5nIHRvIHRoaXMgbW9kdWxlLCBwbGVhc2UgdXNlIGFuIGVudGl0eQogIGRlY2xhcmF0aW9uIHRoYXQgdXNlcyB0aGUgcHVibGljIGlkZW50aWZpZXIgc2hvd24gYmVsb3c6CiAgCiAgPCFFTlRJVFkgJSBkYmhpZXIgUFVCTElDCiAgIi0vL09BU0lTLy9FTEVNRU5UUyBEb2NCb29rIERvY3VtZW50IEhpZXJhcmNoeSBWNC40Ly9FTiIKICAiZGJoaWVyeC5tb2QiPgogICVkYmhpZXI7CiAgCiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiB0aGUgcGFyYW1ldGVyCiAgZW50aXR5IGFuZCBtb2R1bGUgc2NoZW1lIHVzZWQgaW4gRG9jQm9vaywgY3VzdG9taXppbmcgRG9jQm9vayBhbmQKICBwbGFubmluZyBmb3IgaW50ZXJjaGFuZ2UsIGFuZCBjaGFuZ2VzIG1hZGUgc2luY2UgdGhlIGxhc3QgcmVsZWFzZQogIG9mIERvY0Jvb2suCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRW50aXRpZXMgZm9yIG1vZHVsZSBpbmNsdXNpb25zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIEVudGl0aWVzIGZvciBlbGVtZW50IGNsYXNzZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+Cjx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+CiAgPHhzOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIgc2NoZW1hTG9jYXRpb249InhtbC54c2QiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcHBlbmRpeC5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJlZ2lucGFnZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhcHBlbmRpeGluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idG9jY2hhcCIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcHBlbmRpeC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcnRpY2xlLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImRpdi50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImFydGljbGVpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRvY2NoYXAiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImxvdCIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQuY29udGVudCIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6Z3JvdXAgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYXBwZW5kaXguY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNrbm8iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJ0aWNsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6ZWxlbWVudCBuYW1lPSJib29rLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImRpdi50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJvb2tpbmZvIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZGVkaWNhdGlvbiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0b2MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibG90Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdsb3NzYXJ5Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb2dyYXBoeSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcmVmYWNlIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNoYXB0ZXIuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icmVmZXJlbmNlIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBhcnQiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYXJ0aWNsZS5jbGFzcyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcHBlbmRpeC5jbGFzcyIvPgogICAgICAgICAgPHhzOmdyb3VwIHJlZj0iaW5kZXguY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iY29sb3Bob24iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYm9vay5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjaGFwdGVyLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImNoYXB0ZXJpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYm9va2NvbXBvbmVudC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRvY2NoYXAiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2hhcHRlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6Z3JvdXAgbmFtZT0iaW5kZXguY2xhc3MiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmRleCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InNldGluZGV4Ii8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZmVudHJ5LmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZmVudHJ5aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZtZXRhIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icmVtYXJrIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZm5hbWVkaXYiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmc3lub3BzaXNkaXYiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdDEiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3Rpb24iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdGlvbi5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNlY3Rpb25pbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRpdmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0aW9uLmNsYXNzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0aW9uLmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Rpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmdyb3VwIG5hbWU9Im5hdi5jbGFzcyI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRvYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxvdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZGV4Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZ2xvc3NhcnkiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9ncmFwaHkiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBSZWRlY2xhcmF0aW9uIHBsYWNlaG9sZGVyIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgIEZvciByZWRlY2xhcmluZyBlbnRpdGllcyB0aGF0IGFyZSBkZWNsYXJlZCBhZnRlciB0aGlzIHBvaW50IHdoaWxlCiAgICByZXRhaW5pbmcgdGhlaXIgcmVmZXJlbmNlcyB0byB0aGUgZW50aXRpZXMgdGhhdCBhcmUgZGVjbGFyZWQgYmVmb3JlCiAgICB0aGlzIHBvaW50CiAgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRW50aXRpZXMgZm9yIGVsZW1lbnQgbWl4dHVyZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6Z3JvdXAgbmFtZT0iZGl2Y29tcG9uZW50Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29tcG91bmQuY2xhc3MiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZ2Vub2JqLmNsYXNzIi8+CiAgICAgIDx4czpncm91cCByZWY9ImRlc2NvYmouY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJyZWZjb21wb25lbnQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb21wb3VuZC5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJnZW5vYmouY2xhc3MiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZGVzY29iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImluZGV4ZGl2Y29tcG9uZW50Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Iml0ZW1pemVkbGlzdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im9yZGVyZWRsaXN0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0idmFyaWFibGVsaXN0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic2ltcGxlbGlzdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYW5jaG9yIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icmVtYXJrIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJyZWZuYW1lLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRlY2guY2hhci5jbGFzcyIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJwYXJ0Y29udGVudC5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcHBlbmRpeC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNoYXB0ZXIuY2xhc3MiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYXJ0aWNsZS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InByZWZhY2UiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlZmVyZW5jZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0icmVmaW5saW5lLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ieHJlZi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnZW4uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImRvY2luZm8uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgICA8L3hzOmNob2ljZT4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0icmVmY2xhc3MuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYXBwbGljYXRpb24iLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8IS0tIFJlZGVjbGFyYXRpb24gcGxhY2Vob2xkZXIgMiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgRm9yIHJlZGVjbGFyaW5nIGVudGl0aWVzIHRoYXQgYXJlIGRlY2xhcmVkIGFmdGVyIHRoaXMgcG9pbnQgd2hpbGUKICAgIHJldGFpbmluZyB0aGVpciByZWZlcmVuY2VzIHRvIHRoZSBlbnRpdGllcyB0aGF0IGFyZSBkZWNsYXJlZCBiZWZvcmUKICAgIHRoaXMgcG9pbnQKICAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBFbnRpdGllcyBmb3IgY29udGVudCBtb2RlbHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czpncm91cCBuYW1lPSJkaXYudGl0bGUuY29udGVudCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InN1YnRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZWFiYnJldiIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzdWJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGVhYmJyZXYiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0ic2VjdC50aXRsZS5jb250ZW50Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic3VidGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlYWJicmV2Ii8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InJlZnNlY3QudGl0bGUuY29udGVudCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InN1YnRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZWFiYnJldiIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJib29rY29tcG9uZW50LmNvbnRlbnQiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkaXZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdDEiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0aW9uLmNsYXNzIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdDEiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0aW9uLmNsYXNzIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBTZXQgYW5kIFNldEluZm8gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNldCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImRpdi50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNldGluZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idG9jIi8+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNldCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJib29rLmNsYXNzIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNldGluZGV4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNldC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZXQuZWxlbWVudCAtLT4KICA8IS0tIEZQSTogU0dNTCBmb3JtYWwgcHVibGljIGlkZW50aWZpZXIgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZnBpIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNldC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldGluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNldGluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXRpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNldGluZm8uZWxlbWVudCAtLT4KICA8IS0tCiAgICBDb250ZW50czogSURzIG9mIHRoZSBUb0MsIEJvb2tzLCBhbmQgU2V0SW5kZXggdGhhdCBjb21wcmlzZQogICAgdGhlIHNldCwgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIGFwcGVhcmFuY2UKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2V0aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGVudHMiIHR5cGU9InhzOklEUkVGUyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2V0aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2V0aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNldGluZm8ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHNldC5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBCb29rIGFuZCBCb29rSW5mbyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJib29rLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJib29rIiBzdWJzdGl0dXRpb25Hcm91cD0iYm9vay5jbGFzcyIvPgogIDwhLS0gZW5kIG9mIGJvb2suZWxlbWVudCAtLT4KICA8IS0tIEZQSTogU0dNTCBmb3JtYWwgcHVibGljIGlkZW50aWZpZXIgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJvb2suYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZwaSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJib29rLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBib29rLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYm9vay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJvb2tpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJib29raW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJvb2tpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJvb2tpbmZvLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQ29udGVudHM6IElEcyBvZiB0aGUgVG9DLCBMb1RzLCBQcmVmYWNlcywgUGFydHMsIENoYXB0ZXJzLAogICAgQXBwZW5kaXhlcywgUmVmZXJlbmNlcywgR0xvc3NhcnksIEJpYmxpb2dyYXBoeSwgYW5kIGluZGV4ZXMKICAgIGNvbXByaXNpbmcgdGhlIEJvb2ssIGluIHRoZSBvcmRlciBvZiB0aGVpciBhcHBlYXJhbmNlCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJvb2tpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50cyIgdHlwZT0ieHM6SURSRUZTIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJib29raW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYm9va2luZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBib29raW5mby5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgYm9vay5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBEZWRpY2F0aW9uLCBUb0MsIGFuZCBMb1QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJkZWRpY2F0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJkZWRpY2F0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImxlZ2Fsbm90aWNlLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJkZWRpY2F0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGRlZGljYXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGVkaWNhdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRlZGljYXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGRlZGljYXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBkZWRpY2F0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sb3Bob24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbG9waG9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRleHRvYmplY3QubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbG9waG9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbG9waG9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbG9waG9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sb3Bob24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbG9waG9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29sb3Bob24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2Mucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvYyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2Zyb250Ii8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idG9jcGFydCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0b2NjaGFwIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NiYWNrIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvYy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2MuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvYy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdG9jLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jZnJvbnQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2Zyb250Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jZnJvbnQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jZnJvbnQuZWxlbWVudCAtLT4KICA8IS0tIHRvIGVsZW1lbnQgdGhhdCB0aGlzIGVudHJ5IHJlcHJlc2VudHMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2Zyb250LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2Zyb250LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2Nmcm9udC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRvY2Zyb250Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2VudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jZW50cnkuZWxlbWVudCAtLT4KICA8IS0tIHRvIGVsZW1lbnQgdGhhdCB0aGlzIGVudHJ5IHJlcHJlc2VudHMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW0uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdG9jZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY3BhcnQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY3BhcnQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jZW50cnkiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2NoYXAiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jcGFydC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NwYXJ0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY3BhcnQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NwYXJ0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NwYXJ0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jcGFydC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2NoYXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2NoYXAiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jZW50cnkiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2xldmVsMSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NjaGFwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRvY2NoYXAuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jY2hhcC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jY2hhcC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdG9jY2hhcC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRvY2NoYXAubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2xldmVsMSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jbGV2ZWwyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsMS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWwxLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWwxLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2xldmVsMiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jbGV2ZWwzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsMi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWwyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWwyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2xldmVsMyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jbGV2ZWw0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsMy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWwzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWwzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2xldmVsNCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jbGV2ZWw1Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsNC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWw0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWw0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRvY2xldmVsNSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NsZXZlbDUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jbGV2ZWw1LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2xldmVsNS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsNS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdG9jbGV2ZWw1LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jbGV2ZWw1Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jYmFjay5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jYmFjayI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2JhY2suYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jYmFjay5lbGVtZW50IC0tPgogIDwhLS0gdG8gZWxlbWVudCB0aGF0IHRoaXMgZW50cnkgcmVwcmVzZW50cyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jYmFjay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW0uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NiYWNrLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NiYWNrLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jYmFjay5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgdG9jLmNvbnRlbnQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsb3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxvdCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImxvdGVudHJ5Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxvdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsb3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibG90LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsb3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxvdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGxvdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxvdGVudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJsb3RlbnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxvdGVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxvdGVudHJ5LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU3JjQ3JlZGl0OiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgc291cmNlIG9mIHRoZSBlbnRyeSwKICAgIGFzIGZvciBhIGxpc3Qgb2YgaWxsdXN0cmF0aW9ucwogIC0tPgogIDwhLS0gbGlua2VuZDogdG8gZWxlbWVudCB0aGF0IHRoaXMgZW50cnkgcmVwcmVzZW50cyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibG90ZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3JjY3JlZGl0Ii8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsb3RlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbG90ZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBsb3RlbnRyeS5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgbG90LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEFwcGVuZGl4LCBDaGFwdGVyLCBQYXJ0LCBQcmVmYWNlLCBSZWZlcmVuY2UsIFBhcnRJbnRybyAuLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFwcGVuZGl4LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcHBlbmRpeCIgc3Vic3RpdHV0aW9uR3JvdXA9ImFwcGVuZGl4LmNsYXNzIi8+CiAgPCEtLSBlbmQgb2YgYXBwZW5kaXguZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXBwZW5kaXguYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFwcGVuZGl4LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhcHBlbmRpeC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFwcGVuZGl4Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2hhcHRlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2hhcHRlciIgc3Vic3RpdHV0aW9uR3JvdXA9ImNoYXB0ZXIuY2xhc3MiLz4KICA8IS0tIGVuZCBvZiBjaGFwdGVyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNoYXB0ZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNoYXB0ZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNoYXB0ZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjaGFwdGVyLm1vZHVsZSAtLT4KICA8IS0tCiAgICBOb3RlIHRoYXQgUGFydCB3YXMgdG8gaGF2ZSBpdHMgY29udGVudCBtb2RlbCByZWR1Y2VkIGluIFY0LjQuICBUaGlzCiAgICBjaGFuZ2Ugd2lsbCBub3QgYmUgbWFkZSBhZnRlciBhbGwuCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcnQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBhcnQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJlZ2lucGFnZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJwYXJ0aW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJwYXJ0aW50cm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFydGNvbnRlbnQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcnQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGFydC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJ0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJ0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwYXJ0LmF0dGxpc3QgLS0+CiAgPCEtLSBFTEVNRU5UIFBhcnRJbnRybyAoZGVmaW5lZCBiZWxvdykgLS0+CiAgPCEtLSBlbmQgb2YgcGFydC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByZWZhY2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByZWZhY2UiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJlZ2lucGFnZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJwcmVmYWNlaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0b2NjaGFwIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYm9va2NvbXBvbmVudC5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByZWZhY2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJlZmFjZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmVmYWNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJlZmFjZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJlZmFjZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByZWZhY2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZlcmVuY2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZmVyZW5jZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZmVyZW5jZWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icGFydGludHJvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZXJlbmNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmVyZW5jZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZlcmVuY2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVyZW5jZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmZXJlbmNlLmF0dGxpc3QgLS0+CiAgPCEtLSBFTEVNRU5UIFBhcnRJbnRybyAoZGVmaW5lZCBiZWxvdykgLS0+CiAgPCEtLSBlbmQgb2YgcmVmZXJlbmNlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFydGludHJvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwYXJ0aW50cm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJkaXYudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQuY29udGVudCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJ0aW50cm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGFydGludHJvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcnRpbnRyby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFydGludHJvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwYXJ0aW50cm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwYXJ0aW50cm8ubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIE90aGVyIEluZm8gZWxlbWVudHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFwcGVuZGl4aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXBwZW5kaXhpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXBwZW5kaXhpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFwcGVuZGl4aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcHBlbmRpeGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcHBlbmRpeGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFwcGVuZGl4aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFwcGVuZGl4aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2dyYXBoeWluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb2dyYXBoeWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9ncmFwaHlpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeWluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZ3JhcGh5aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2dyYXBoeWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeWluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9ncmFwaHlpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2hhcHRlcmluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNoYXB0ZXJpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2hhcHRlcmluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2hhcHRlcmluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2hhcHRlcmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaGFwdGVyaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2hhcHRlcmluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjaGFwdGVyaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzYXJ5aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ2xvc3NhcnlpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NhcnlpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2FyeWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc2FyeWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5kZXhpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXhpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGluZGV4aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmRleGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZGV4aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZGV4aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldGluZGV4aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2V0aW5kZXhpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2V0aW5kZXhpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNldGluZGV4aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZXRpbmRleGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXRpbmRleGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNldGluZGV4aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNldGluZGV4aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcnRpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwYXJ0aW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcnRpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBhcnRpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcnRpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFydGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhcnRpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcGFydGluZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmVmYWNlaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJlZmFjZWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmVmYWNlaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwcmVmYWNlaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmVmYWNlaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByZWZhY2VpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcmVmYWNlaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByZWZhY2VpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZW50cnlpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZlbnRyeWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZlbnRyeWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnlpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVudHJ5aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVudHJ5aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnlpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnlpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdGlvbmluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZnNlY3Rpb25pbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdGlvbmluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdGlvbmluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdGlvbmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0aW9uaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdGlvbmluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZzZWN0aW9uaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QxaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDFpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDFpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0MWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0MWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QyaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDJpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDJpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QyaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0MmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0MmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QyaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QyaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QzaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDNpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDNpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0M2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0M2luZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnN5bm9wc2lzZGl2aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc3lub3BzaXNkaXZpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc3lub3BzaXNkaXZpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnN5bm9wc2lzZGl2aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzeW5vcHNpc2RpdmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzeW5vcHNpc2RpdmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnN5bm9wc2lzZGl2aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnN5bm9wc2lzZGl2aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVyZW5jZWluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZmVyZW5jZWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZlcmVuY2VpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmVyZW5jZWluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZXJlbmNlaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVyZW5jZWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZmVyZW5jZWluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZlcmVuY2VpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDFpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0MWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0MWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDFpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QxaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QxaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDFpbmZvLmF0dGxpc3QgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QyaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDJpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDJpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3QyaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0MmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0MmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3QyaW5mby5hdHRsaXN0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0M2luZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlY3QzaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QzaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0M2luZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDNpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDNpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0M2luZm8uYXR0bGlzdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDRpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0NGluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0NGluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDRpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Q0aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Q0aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDRpbmZvLmF0dGxpc3QgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Q1aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDVpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDVpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3Q1aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0NWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0NWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3Q1aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFNlY3Rpb24gKHBhcmFsbGVsIHRvIFNlY3QqKSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdGlvbiIgc3Vic3RpdHV0aW9uR3JvdXA9InNlY3Rpb24uY2xhc3MiLz4KICA8IS0tIGVuZCBvZiBzZWN0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Rpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Rpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3Rpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWN0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdGlvbmluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlY3Rpb25pbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdGlvbmluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdGlvbmluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdGlvbmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0aW9uaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdGlvbmluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWN0aW9uaW5mby5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2Ygc2VjdGlvbi5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBTZWN0MSwgU2VjdDIsIFNlY3QzLCBTZWN0NCwgU2VjdDUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0MS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNlY3QxaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkaXZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdDIiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3QyIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QxLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3QxLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgUmVuZGVyYXM6IEluZGljYXRlcyB0aGUgZm9ybWF0IGluIHdoaWNoIHRoZSBoZWFkaW5nIHNob3VsZAogICAgYXBwZWFyCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QxLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZW5kZXJhcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Q0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Q1Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QxLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0MS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlY3QxLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlY3QyIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0MmluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3QzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0MyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0Mi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0Mi5lbGVtZW50IC0tPgogIDwhLS0KICAgIFJlbmRlcmFzOiBJbmRpY2F0ZXMgdGhlIGZvcm1hdCBpbiB3aGljaCB0aGUgaGVhZGluZyBzaG91bGQKICAgIGFwcGVhcgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0Mi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVuZGVyYXMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0Mi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWN0Mi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0MyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2VjdDNpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRpdmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0NCIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdDQiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDMuZWxlbWVudCAtLT4KICA8IS0tCiAgICBSZW5kZXJhczogSW5kaWNhdGVzIHRoZSBmb3JtYXQgaW4gd2hpY2ggdGhlIGhlYWRpbmcgc2hvdWxkCiAgICBhcHBlYXIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbmRlcmFzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3QzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VjdDMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0NC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNlY3Q0aW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkaXZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdDUiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3Q1Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Q0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3Q0LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgUmVuZGVyYXM6IEluZGljYXRlcyB0aGUgZm9ybWF0IGluIHdoaWNoIHRoZSBoZWFkaW5nIHNob3VsZAogICAgYXBwZWFyCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Q0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZW5kZXJhcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Q1Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Q0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0NC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlY3Q0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlY3Q1Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0NWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDUuZWxlbWVudCAtLT4KICA8IS0tCiAgICBSZW5kZXJhczogSW5kaWNhdGVzIHRoZSBmb3JtYXQgaW4gd2hpY2ggdGhlIGhlYWRpbmcgc2hvdWxkCiAgICBhcHBlYXIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbmRlcmFzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3Q1LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VjdDUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaW1wbGVzZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaW1wbGVzZWN0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkaXZjb21wb25lbnQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBsZXNlY3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlc2VjdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaW1wbGVzZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2ltcGxlc2VjdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlc2VjdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNpbXBsZXNlY3QubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEJpYmxpb2dyYXBoeSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2dyYXBoeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvZ3JhcGh5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJiaWJsaW9ncmFwaHlpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImJpYmxpb2RpdiIvPgogICAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvZW50cnkiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9taXhlZCIvPgogICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2dyYXBoeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9ncmFwaHkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZ3JhcGh5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvZ3JhcGh5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9ncmFwaHkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9ncmFwaHkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9kaXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb2RpdiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvZW50cnkiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvbWl4ZWQiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvZGl2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2Rpdi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9kaXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9kaXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb2Rpdi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb2Rpdi5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgYmlibGlvZ3JhcGh5LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEdsb3NzYXJ5IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzYXJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc2FyeSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iZ2xvc3NhcnlpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imdsb3NzZGl2Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc2VudHJ5Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJpYmxpb2dyYXBoeSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc2FyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc2FyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2FyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzYXJ5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBnbG9zc2FyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NkaXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3NzZGl2Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc2VudHJ5Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzZGl2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdsb3NzZGl2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzZGl2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NkaXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzZGl2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NkaXYubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEluZGV4IGFuZCBTZXRJbmRleCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4ZXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImluZGV4Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJpbmRleGluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmRleGRpdiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmRleGVudHJ5Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGluZGV4LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleGVzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmRleC5hdHRsaXN0IC0tPgogIDx4czplbGVtZW50IG5hbWU9InNldGluZGV4Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzZXRpbmRleGluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmRleGRpdiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmRleGVudHJ5Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNldGluZGV4LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNldGluZGV4LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldGluZGV4LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXhlcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2V0aW5kZXguYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbmRleGVzLm1vZHVsZSAtLT4KICA8IS0tCiAgICBTZWdtZW50ZWRMaXN0IGluIHRoaXMgY29udGVudCBpcyB1c2VmdWwgZm9yIG1hcmtpbmcgdXAgcGVybXV0ZWQKICAgIGluZGljZXMuCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4ZGl2LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmRleGRpdiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZGV4ZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5kZXhlbnRyeSIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlZ21lbnRlZGxpc3QiLz4KICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4ZGl2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGluZGV4ZGl2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4ZGl2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXhkaXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZGV4ZGl2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5kZXhkaXYubW9kdWxlIC0tPgogIDwhLS0gSW5kZXggZW50cmllcyBhcHBlYXIgaW4gdGhlIGluZGV4LCBub3QgdGhlIHRleHQuIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmRleGVudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmRleGVudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icHJpbWFyeWllIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VlaWUiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VlYWxzb2llIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOnNlcXVlbmNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzZWNvbmRhcnlpZSIvPgogICAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzZWVpZSIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlZWFsc29pZSIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRlcnRpYXJ5aWUiLz4KICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4ZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5kZXhlbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmRleGVudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXhlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5kZXhlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZGV4ZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmltc2VjdGVyaWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByaW1hcnlpZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW1hcnlpZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwcmltYXJ5aWUuZWxlbWVudCAtLT4KICA8IS0tIHRvIEluZGV4VGVybXMgdGhhdCB0aGVzZSBlbnRyaWVzIHJlcHJlc2VudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJpbWFyeWllLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmltc2VjdGVyaWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByaW1hcnlpZS5hdHRsaXN0IC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlY29uZGFyeWllIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2Vjb25kYXJ5aWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2Vjb25kYXJ5aWUuZWxlbWVudCAtLT4KICA8IS0tIHRvIEluZGV4VGVybXMgdGhhdCB0aGVzZSBlbnRyaWVzIHJlcHJlc2VudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2Vjb25kYXJ5aWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW1zZWN0ZXJpZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2Vjb25kYXJ5aWUuYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0ZXJ0aWFyeWllIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGVydGlhcnlpZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0ZXJ0aWFyeWllLmVsZW1lbnQgLS0+CiAgPCEtLSB0byBJbmRleFRlcm1zIHRoYXQgdGhlc2UgZW50cmllcyByZXByZXNlbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRlcnRpYXJ5aWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW1zZWN0ZXJpZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGVydGlhcnlpZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByaW1zZWN0ZXJpZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZWllLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWVpZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZWllLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlZWllLmVsZW1lbnQgLS0+CiAgPCEtLSB0byBJbmRleEVudHJ5IHRvIGxvb2sgdXAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZWllLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZWllLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWVpZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlZWllLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VlYWxzb2llLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWVhbHNvaWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWVhbHNvaWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VlYWxzb2llLmVsZW1lbnQgLS0+CiAgPCEtLSB0byByZWxhdGVkIEluZGV4RW50cmllcyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VlYWxzb2llLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWVhbHNvaWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlZWFsc29pZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlZWFsc29pZS5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgaW5kZXguY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gUmVmRW50cnkgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZmVudHJ5IiBzdWJzdGl0dXRpb25Hcm91cD0icmVmZW50cnkuY2xhc3MiLz4KICA8IS0tIGVuZCBvZiByZWZlbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZlbnRyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVudHJ5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmbWV0YS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmbWV0YSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlZmVudHJ5dGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ibWFudm9sbnVtIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZtaXNjaW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZtZXRhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZm1ldGEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmbWV0YS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZm1ldGEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZm1ldGEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZtZXRhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmbWlzY2luZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZm1pc2NpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbWlzY2luZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmbWlzY2luZm8uZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBGcmVlbHkgYXNzaWduYWJsZSBwYXJhbWV0ZXI7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZm1pc2NpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbWlzY2luZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZm1pc2NpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmbWlzY2luZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZuYW1lZGl2LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZuYW1lZGl2Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZkZXNjcmlwdG9yIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmbmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVmcHVycG9zZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmY2xhc3MiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZW1hcmsiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZm5hbWVkaXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmbmFtZWRpdi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZuYW1lZGl2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbmFtZWRpdi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmbmFtZWRpdi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZm5hbWVkaXYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZkZXNjcmlwdG9yLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZkZXNjcmlwdG9yIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZm5hbWUuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZGVzY3JpcHRvci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZkZXNjcmlwdG9yLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmRlc2NyaXB0b3IuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZkZXNjcmlwdG9yLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZkZXNjcmlwdG9yLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmZGVzY3JpcHRvci5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZm5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZm5hbWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmbmFtZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZm5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmbmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZm5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZm5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZuYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmcHVycG9zZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmcHVycG9zZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZpbmxpbmUuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmcHVycG9zZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZwdXJwb3NlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnB1cnBvc2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZwdXJwb3NlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZwdXJwb3NlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmcHVycG9zZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmNsYXNzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZjbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZjbGFzcy5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZjbGFzcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZjbGFzcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZjbGFzcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmNsYXNzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZjbGFzcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZmNsYXNzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc3lub3BzaXNkaXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZnN5bm9wc2lzZGl2Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZzeW5vcHNpc2RpdmluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9InJlZnNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdDIiLz4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZzZWN0MiIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzeW5vcHNpc2Rpdi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZzeW5vcHNpc2Rpdi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzeW5vcHNpc2Rpdi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnN5bm9wc2lzZGl2LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZzeW5vcHNpc2Rpdi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnN5bm9wc2lzZGl2Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmc2VjdGlvbmluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJyZWZzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3Rpb24iLz4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZzZWN0aW9uIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3Rpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3Rpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0MS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZnNlY3QxaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9InJlZnNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdDIiLz4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZzZWN0MiIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0MS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZzZWN0MS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0MS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3QxLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZzZWN0MS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdDIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZnNlY3QyIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZzZWN0MmluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJyZWZzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3QzIi8+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdDMiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdDIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0Mi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZzZWN0Mi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZzZWN0MyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmc2VjdDNpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icmVmc2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmNvbXBvbmVudC5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdDMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0My5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZzZWN0My5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnkuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gQXJ0aWNsZSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tCiAgICBBbiBBcnRpY2xlIGlzIGEgY2hhcHRlci1sZXZlbCwgc3RhbmQtYWxvbmUgZG9jdW1lbnQgdGhhdCBpcyBvZnRlbiwKICAgIGJ1dCBuZWVkIG5vdCBiZSwgY29sbGVjdGVkIGludG8gYSBCb29rLgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcnRpY2xlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcnRpY2xlIiBzdWJzdGl0dXRpb25Hcm91cD0iYXJ0aWNsZS5jbGFzcyIvPgogIDwhLS0gZW5kIG9mIGFydGljbGUuZWxlbWVudCAtLT4KICA8IS0tCiAgICBDbGFzczogSW5kaWNhdGVzIHRoZSB0eXBlIG9mIGEgcGFydGljdWxhciBhcnRpY2xlOwogICAgYWxsIGFydGljbGVzIGhhdmUgdGhlIHNhbWUgc3RydWN0dXJlIGFuZCBnZW5lcmFsIHB1cnBvc2UuCiAgICBObyBkZWZhdWx0LgogIC0tPgogIDwhLS0gUGFyZW50Qm9vazogSUQgb2YgdGhlIGVuY2xvc2luZyBCb29rIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcnRpY2xlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImpvdXJuYWxhcnRpY2xlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InByb2R1Y3RzaGVldCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ3aGl0ZXBhcGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRlY2hyZXBvcnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic3BlY2lmaWNhdGlvbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJmYXEiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGFyZW50Ym9vayIgdHlwZT0ieHM6SURSRUYiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFydGljbGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgo8L3hzOnNjaGVtYT4KPCEtLSBlbmQgb2YgYXJ0aWNsZS5hdHRsaXN0IC0tPgo8IS0tIGVuZCBvZiBhcnRpY2xlLm1vZHVsZSAtLT4KPCEtLSBFbmQgb2YgRG9jQm9vayBkb2N1bWVudCBoaWVyYXJjaHkgbW9kdWxlIFY0LjQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_4/dbnotnx.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgbm90YXRpb25zIG1vZHVsZSBWNC40IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkYm5vdG54Lm1vZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDQgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZGJub3RueC5tb2QsdiAxLjMxIDIwMDUvMDEvMjcgMTM6NTI6MDAgbndhbHNoIEV4cCAkCiAgCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSBhbmQgZGlzdHJpYnV0ZSB0aGUgRG9jQm9vayBEVEQKICBhbmQgaXRzIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUKICBpcyBoZXJlYnkgZ3JhbnRlZCBpbiBwZXJwZXR1aXR5LCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQKICBub3RpY2UgYW5kIHRoaXMgcGFyYWdyYXBoIGFwcGVhciBpbiBhbGwgY29waWVzLiAgVGhlIGNvcHlyaWdodAogIGhvbGRlcnMgbWFrZSBubyByZXByZXNlbnRhdGlvbiBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhlIERURCBmb3IKICBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzZWQgb3IgaW1wbGllZAogIHdhcnJhbnR5LgogIAogIElmIHlvdSBtb2RpZnkgdGhlIERvY0Jvb2sgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgbm90YXRpb24gZGVjbGFyYXRpb25zIHVzZWQgYnkgRG9jQm9vay4KICAKICBJbiBEVEQgZHJpdmVyIGZpbGVzIHJlZmVycmluZyB0byB0aGlzIG1vZHVsZSwgcGxlYXNlIHVzZSBhbiBlbnRpdHkKICBkZWNsYXJhdGlvbiB0aGF0IHVzZXMgdGhlIHB1YmxpYyBpZGVudGlmaWVyIHNob3duIGJlbG93OgogIAogIDwhRU5USVRZICUgZGJub3RuIFBVQkxJQwogICItLy9PQVNJUy8vRU5USVRJRVMgRG9jQm9vayBOb3RhdGlvbnMgVjQuNC8vRU4iCiAgImRibm90bngubW9kIj4KICAlZGJub3RuOwogIAogIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24gb24gdGhlIHBhcmFtZXRlcgogIGVudGl0eSBhbmQgbW9kdWxlIHNjaGVtZSB1c2VkIGluIERvY0Jvb2ssIGN1c3RvbWl6aW5nIERvY0Jvb2sgYW5kCiAgcGxhbm5pbmcgZm9yIGludGVyY2hhbmdlLCBhbmQgY2hhbmdlcyBtYWRlIHNpbmNlIHRoZSBsYXN0IHJlbGVhc2UKICBvZiBEb2NCb29rLgotLT4KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4KICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiBzY2hlbWFMb2NhdGlvbj0ieG1sLnhzZCIvPgogIDx4czpzaW1wbGVUeXBlIG5hbWU9Im5vdGF0aW9uLmNsYXNzIj4KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQk1QIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQ0dNLUNIQVIiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJDR00tQklOQVJZIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQ0dNLUNMRUFSIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRElUUk9GRiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRWSSIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkVQUyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkVRTiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkZBWCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkdJRiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkdJRjg3YSIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkdJRjg5YSIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkpQRyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkpQRUciLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJJR0VTIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUENYIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUElDIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUE5HIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUFMiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJTR01MIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVEJMIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVEVYIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVElGRiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IldNRiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IldQRyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlNWRyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBERiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlNXRiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVzcGVjaWZpYyIvPgogICAgPC94czpyZXN0cmljdGlvbj4KICA8L3hzOnNpbXBsZVR5cGU+CjwveHM6c2NoZW1hPgo8IS0tIFdvcmRQZXJmZWN0IEdyYXBoaWMgZm9ybWF0IC0tPgo8IS0tIEVuZCBvZiBEb2NCb29rIG5vdGF0aW9ucyBtb2R1bGUgVjQuNCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4K</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_4/dbpoolx.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgWE1MIGluZm9ybWF0aW9uIHBvb2wgbW9kdWxlIFY0LjQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkYnBvb2x4Lm1vZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDQgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZGJwb29seC5tb2QsdiAxLjEwNyAyMDA1LzAxLzI3IDEzOjUyOjAwIG53YWxzaCBFeHAgJAogIAogIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnkgYW5kIGRpc3RyaWJ1dGUgdGhlIERvY0Jvb2sgWE1MIERURAogIGFuZCBpdHMgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZQogIGlzIGhlcmVieSBncmFudGVkIGluIHBlcnBldHVpdHksIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodAogIG5vdGljZSBhbmQgdGhpcyBwYXJhZ3JhcGggYXBwZWFyIGluIGFsbCBjb3BpZXMuICBUaGUgY29weXJpZ2h0CiAgaG9sZGVycyBtYWtlIG5vIHJlcHJlc2VudGF0aW9uIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGUgRFREIGZvcgogIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3NlZCBvciBpbXBsaWVkCiAgd2FycmFudHkuCiAgCiAgSWYgeW91IG1vZGlmeSB0aGUgRG9jQm9vayBYTUwgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBvYmplY3RzLCBpbmxpbmUKICBlbGVtZW50cywgYW5kIHNvIG9uIHRoYXQgYXJlIGF2YWlsYWJsZSB0byBiZSB1c2VkIGFzIHRoZSBtYWluCiAgY29udGVudCBvZiBEb2NCb29rIGRvY3VtZW50cy4gIFNvbWUgZWxlbWVudHMgYXJlIHVzZWZ1bCBmb3IgZ2VuZXJhbAogIHB1Ymxpc2hpbmcsIGFuZCBvdGhlcnMgYXJlIHVzZWZ1bCBzcGVjaWZpY2FsbHkgZm9yIGNvbXB1dGVyCiAgZG9jdW1lbnRhdGlvbi4KICAKICBUaGlzIG1vZHVsZSBoYXMgdGhlIGZvbGxvd2luZyBkZXBlbmRlbmNpZXMgb24gb3RoZXIgbW9kdWxlczoKICAKICBvIEl0IGFzc3VtZXMgdGhhdCBhICVub3RhdGlvbi5jbGFzczsgZW50aXR5IGlzIGRlZmluZWQgYnkgdGhlCiAgICBkcml2ZXIgZmlsZSBvciBvdGhlciBoaWdoLWxldmVsIG1vZHVsZS4gIFRoaXMgZW50aXR5IGlzCiAgICByZWZlcmVuY2VkIGluIHRoZSBOT1RBVElPTiBhdHRyaWJ1dGVzIGZvciB0aGUgZ3JhcGhpYy1yZWxhdGVkIGFuZAogICAgTW9kZVNwZWMgZWxlbWVudHMuCiAgCiAgbyBJdCBhc3N1bWVzIHRoYXQgYW4gYXBwcm9wcmlhdGVseSBwYXJhbWV0ZXJpemVkIHRhYmxlIG1vZHVsZSBpcwogICAgYXZhaWxhYmxlIGZvciB1c2Ugd2l0aCB0aGUgdGFibGUtcmVsYXRlZCBlbGVtZW50cy4KICAKICBJbiBEVEQgZHJpdmVyIGZpbGVzIHJlZmVycmluZyB0byB0aGlzIG1vZHVsZSwgcGxlYXNlIHVzZSBhbiBlbnRpdHkKICBkZWNsYXJhdGlvbiB0aGF0IHVzZXMgdGhlIHB1YmxpYyBpZGVudGlmaWVyIHNob3duIGJlbG93OgogIAogIDwhRU5USVRZICUgZGJwb29sIFBVQkxJQwogICItLy9PQVNJUy8vRUxFTUVOVFMgRG9jQm9vayBYTUwgSW5mb3JtYXRpb24gUG9vbCBWNC40Ly9FTiIKICAiZGJwb29seC5tb2QiPgogICVkYnBvb2w7CiAgCiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiB0aGUgcGFyYW1ldGVyCiAgZW50aXR5IGFuZCBtb2R1bGUgc2NoZW1lIHVzZWQgaW4gRG9jQm9vaywgY3VzdG9taXppbmcgRG9jQm9vayBhbmQKICBwbGFubmluZyBmb3IgaW50ZXJjaGFuZ2UsIGFuZCBjaGFuZ2VzIG1hZGUgc2luY2UgdGhlIGxhc3QgcmVsZWFzZQogIG9mIERvY0Jvb2suCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRm9ybXMgZW50aXRpZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSBUaGVzZSBQRXMgcHJvdmlkZSB0aGUgaG9vayBieSB3aGljaCB0aGUgZm9ybXMgbW9kdWxlIGNhbiBiZSBpbnNlcnRlZCAtLT4KPCEtLSBpbnRvIHRoZSBEVEQuIC0tPgo8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiPgogIDx4czppbmNsdWRlIHNjaGVtYUxvY2F0aW9uPSJodG1sdGJseC54c2QiLz4KICA8eHM6aW5jbHVkZSBzY2hlbWFMb2NhdGlvbj0iY2Fsc3RibHgueHNkIi8+CiAgPHhzOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIgc2NoZW1hTG9jYXRpb249InhtbC54c2QiLz4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBHZW5lcmFsLXB1cnBvc2Ugc2VtYW50aWNzIGVudGl0aWVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czpzaW1wbGVUeXBlIG5hbWU9Inllc29ybm8uYXR0dmFscyI+CiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIi8+CiAgPC94czpzaW1wbGVUeXBlPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVudGl0aWVzIGZvciBtb2R1bGUgaW5jbHVzaW9ucyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRW50aXRpZXMgZm9yIGVsZW1lbnQgY2xhc3NlcyBhbmQgbWl4dHVyZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tICJVYmlxdWl0b3VzIiBjbGFzc2VzOiBuZHh0ZXJtLmNsYXNzIGFuZCBiZWdpbnBhZ2UgLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibmR4dGVybS5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InByaW1hcnkiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2Vjb25kYXJ5Ii8+CiAgICAgICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIj4KICAgICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRlcnRpYXJ5Ii8+CiAgICAgICAgICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VlIi8+CiAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlZWFsc28iLz4KICAgICAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzZWUiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWVhbHNvIi8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VlIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWVhbHNvIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4dGVybS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIE9iamVjdC1sZXZlbCBjbGFzc2VzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGlzdC5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJhZG1vbi5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaW5lc3BlY2lmaWMuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWV0aG9kLnN5bm9wLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIgc3Vic3RpdHV0aW9uR3JvdXA9InN5bm9wLmNsYXNzIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3lub3AuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGFyYS5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmZvcm1hbC5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJmb3JtYWwuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPCEtLSBUaGUgRG9jQm9vayBUQyBtYXkgcHJvZHVjZSBhbiBvZmZpY2lhbCBFQk5GIG1vZHVsZSBmb3IgRG9jQm9vay4gLS0+CiAgPCEtLSBUaGlzIFBFIHByb3ZpZGVzIHRoZSBob29rIGJ5IHdoaWNoIGl0IGNhbiBiZSBpbnNlcnRlZCBpbnRvIHRoZSBEVEQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvbXBvdW5kLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czpncm91cCBuYW1lPSJnZW5vYmouY2xhc3MiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhbmNob3IiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJicmlkZ2VoZWFkIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icmVtYXJrIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaGlnaGxpZ2h0cyIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iZGVzY29iai5jbGFzcyI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFic3RyYWN0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yYmx1cmIiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlcGlncmFwaCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8IS0tIENoYXJhY3Rlci1sZXZlbCBjbGFzc2VzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ieHJlZi5jaGFyLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czplbGVtZW50IG5hbWU9Imdlbi5jaGFyLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czplbGVtZW50IG5hbWU9ImxpbmsuY2hhci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8IS0tIFRoZSBEb2NCb29rIFRDIG1heSBwcm9kdWNlIGFuIG9mZmljaWFsIEVCTkYgbW9kdWxlIGZvciBEb2NCb29rLiAtLT4KICA8IS0tIFRoaXMgUEUgcHJvdmlkZXMgdGhlIGhvb2sgYnkgd2hpY2ggaXQgY2FuIGJlIGluc2VydGVkIGludG8gdGhlIERURC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGVjaC5jaGFyLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czpncm91cCBuYW1lPSJiYXNlLmNoYXIuY2xhc3MiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFuY2hvciIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImRvY2luZm8uY2hhci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6Z3JvdXAgbmFtZT0ib3RoZXIuY2hhci5jbGFzcyI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlbWFyayIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN1YnNjcmlwdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN1cGVyc2NyaXB0Ii8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImlubGluZW9iai5jaGFyLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVudGl0aWVzIGZvciBjb250ZW50IG1vZGVscyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmdyb3VwIG5hbWU9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGVhYmJyZXYiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8IS0tIFJlZGVjbGFyYXRpb24gcGxhY2Vob2xkZXIgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgRm9yIHJlZGVjbGFyaW5nIGVudGl0aWVzIHRoYXQgYXJlIGRlY2xhcmVkIGFmdGVyIHRoaXMgcG9pbnQgd2hpbGUKICAgIHJldGFpbmluZyB0aGVpciByZWZlcmVuY2VzIHRvIHRoZSBlbnRpdGllcyB0aGF0IGFyZSBkZWNsYXJlZCBiZWZvcmUKICAgIHRoaXMgcG9pbnQKICAtLT4KICA8IS0tIE9iamVjdC1sZXZlbCBtaXh0dXJlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QgYWRtbiBsaW5lIHN5bnAgcGFyYSBpbmZtIGZvcm0gY21wZCBnZW4gIGRlc2MKICAgIENvbXBvbmVudCBtaXh0dXJlICAgICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFgKICAgIFNpZGViYXIgbWl4dHVyZSAgICAgICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgYSAgICBYCiAgICBGb290bm90ZSBtaXh0dXJlICAgICAgICBYICAgICAgICAgWCAgICBYICAgIFggICAgWAogICAgRXhhbXBsZSBtaXh0dXJlICAgICAgICAgWCAgICAgICAgIFggICAgWCAgICBYICAgIFgKICAgIEhpZ2hsaWdodHMgbWl4dHVyZSAgICAgIFggICAgWCAgICAgICAgICAgICAgWAogICAgUGFyYWdyYXBoIG1peHR1cmUgICAgICAgWCAgICAgICAgIFggICAgWCAgICAgICAgIFgKICAgIEFkbW9uaXRpb24gbWl4dHVyZSAgICAgIFggICAgICAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgYiAgICBjCiAgICBGaWd1cmUgbWl4dHVyZSAgICAgICAgICAgICAgICAgICAgWCAgICBYICAgICAgICAgWAogICAgVGFibGUgZW50cnkgbWl4dHVyZSAgICAgWCAgICBYICAgIFggICAgICAgICBYICAgIGQKICAgIEdsb3NzYXJ5IGRlZiBtaXh0dXJlICAgIFggICAgICAgICBYICAgIFggICAgWCAgICBYICAgICAgICAgZQogICAgTGVnYWwgbm90aWNlIG1peHR1cmUgICAgWCAgICBYICAgIFggICAgICAgICBYICAgIGYKICAgIAogICAgYS4gSnVzdCBQcm9jZWR1cmU7IG5vdCBTaWRlYmFyIGl0c2VsZiBvciBNc2dTZXQuCiAgICBiLiBObyBNc2dTZXQuCiAgICBjLiBObyBIaWdobGlnaHRzLgogICAgZC4gSnVzdCBHcmFwaGljOyBubyBvdGhlciBpbmZvcm1hbCBvYmplY3RzLgogICAgZS4gTm8gQW5jaG9yLCBCcmlkZ2VIZWFkLCBvciBIaWdobGlnaHRzLgogICAgZi4gSnVzdCBCbG9ja1F1b3RlOyBubyBvdGhlciBpbmZvcm1hbCBvYmplY3RzLgogIC0tPgogIDx4czpncm91cCBuYW1lPSJjb21wb25lbnQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb21wb3VuZC5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJnZW5vYmouY2xhc3MiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZGVzY29iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InNpZGViYXIubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcm9jZWR1cmUiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZ2Vub2JqLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0icWFuZGFzZXQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcm9jZWR1cmUiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZ2Vub2JqLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0icmV2ZGVzY3JpcHRpb24ubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcm9jZWR1cmUiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZ2Vub2JqLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iZm9vdG5vdGUubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJleGFtcGxlLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImhpZ2hsaWdodHMubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLQogICAgJWZvcm1hbC5jbGFzczsgaXMgZXhwbGljaXRseSBleGNsdWRlZCBmcm9tIG1hbnkgY29udGV4dHMgaW4gd2hpY2gKICAgIHBhcmFncmFwaHMgYXJlIHVzZWQKICAtLT4KICA8eHM6Z3JvdXAgbmFtZT0icGFyYS5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImZvcm1hbC5jbGFzcyIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iYWRtb24ubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJvY2VkdXJlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic2lkZWJhciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFuY2hvciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJyaWRnZWhlYWQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZW1hcmsiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJmaWd1cmUubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InRhYmVudHJ5Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJncmFwaGljIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibWVkaWFvYmplY3QiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9Imdsb3NzZGVmLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlbWFyayIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImxlZ2Fsbm90aWNlLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJibG9ja3F1b3RlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0idGV4dG9iamVjdC5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmxvY2txdW90ZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZWRpYW9iamVjdC5taXgiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmdyb3VwIG5hbWU9Imxpc3RwcmVhbWJsZS5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czpncm91cCByZWY9Imdlbm9iai5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJkZXNjb2JqLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8IS0tIENoYXJhY3Rlci1sZXZlbCBtaXh0dXJlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBzZ21sLmZlYXR1cmVzIC0tPgogIDwhLS0gbm90IFtzZ21sLmZlYXR1cmVzWyAtLT4KICA8IS0tIF1dIG5vdCBzZ21sLmZlYXR1cmVzIC0tPgogIDwhLS0KICAgICAgICAgICAgICAgICAgICAgICAgI1BDRCB4cmVmIHdvcmQgbGluayBjcHRyIGJhc2UgZG5mbyBvdGhyIGlub2IgKHN5bm9wKQogICAgcGFyYS5jaGFyLm1peCAgICAgICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYCiAgICB0aXRsZS5jaGFyLm1peCAgICAgICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFgKICAgIG5keHRlcm0uY2hhci5taXggICAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgYQogICAgY3B0ci5jaGFyLm1peCAgICAgICAgIFggICAgICAgICAgICAgIFggICAgWCAgICBYICAgICAgICAgWCAgICBhCiAgICBzbWFsbGNwdHIuY2hhci5taXggICAgWCAgICAgICAgICAgICAgICAgICBiICAgICAgICAgICAgICAgICAgIGEKICAgIHdvcmQuY2hhci5taXggICAgICAgICBYICAgICAgICAgYyAgICBYICAgICAgICAgWCAgICAgICAgIFggICAgYQogICAgZG9jaW5mby5jaGFyLm1peCAgICAgIFggICAgICAgICBkICAgIFggICAgYiAgICAgICAgICAgICAgWCAgICBhCiAgICAKICAgIGEuIEp1c3QgSW5saW5lR3JhcGhpYzsgbm8gSW5saW5lRXF1YXRpb24uCiAgICBiLiBKdXN0IFJlcGxhY2VhYmxlOyBubyBvdGhlciBjb21wdXRlciB0ZXJtcy4KICAgIGMuIEp1c3QgRW1waGFzaXMgYW5kIFRyYWRlbWFyazsgbm8gb3RoZXIgd29yZCBlbGVtZW50cy4KICAgIGQuIEp1c3QgQWNyb255bSwgRW1waGFzaXMsIGFuZCBUcmFkZW1hcms7IG5vIG90aGVyIHdvcmQgZWxlbWVudHMuCiAgLS0+CiAgPHhzOmdyb3VwIG5hbWU9InBhcmEuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ4cmVmLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdlbi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRlY2guY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZG9jaW5mby5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lb2JqLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InRpdGxlLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ieHJlZi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnZW4uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImRvY2luZm8uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW9iai5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJuZHh0ZXJtLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ieHJlZi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnZW4uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImRvY2luZm8uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZWdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJjcHRyLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJvdGhlci5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVncmFwaGljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVtZWRpYW9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJzbWFsbGNwdHIuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXBsYWNlYWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgICA8L3hzOmNob2ljZT4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0id29yZC5jaGFyLm1peCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjcm9ueW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtcGhhc2lzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0cmFkZW1hcmsiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZWdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImRvY2luZm8uY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtcGhhc2lzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0cmFkZW1hcmsiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlcGxhY2VhYmxlIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBFTlRJVFkgJSBiaWJsaW9jb21wb25lbnQubWl4IChzZWUgQmlibGlvZ3JhcGhpYyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBFTlRJVFkgJSBwZXJzb24uaWRlbnQubWl4IChzZWUgQmlibGlvZ3JhcGhpYyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRW50aXRpZXMgZm9yIGF0dHJpYnV0ZXMgYW5kIGF0dHJpYnV0ZSBjb21wb25lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVmZmVjdGl2aXR5IGF0dHJpYnV0ZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgQXJjaDogQ29tcHV0ZXIgb3IgY2hpcCBhcmNoaXRlY3R1cmUgdG8gd2hpY2ggZWxlbWVudCBhcHBsaWVzOyBubwogICAgZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmNoLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFyY2giLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gQ29uZGl0aW9uOiBHZW5lcmFsLXB1cnBvc2UgZWZmZWN0aXZpdHkgYXR0cmlidXRlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25kaXRpb24uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29uZGl0aW9uIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIENvbmZvcm1hbmNlOiBTdGFuZGFyZHMgY29uZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mb3JtYW5jZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb25mb3JtYW5jZSIgdHlwZT0ieHM6Tk1UT0tFTlMiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gT1M6IE9wZXJhdGluZyBzeXN0ZW0gdG8gd2hpY2ggZWxlbWVudCBhcHBsaWVzOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBSZXZpc2lvbjogRWRpdG9yaWFsIHJldmlzaW9uIHRvIHdoaWNoIGVsZW1lbnQgYmVsb25nczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aXNpb24uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmV2aXNpb24iLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gU2VjdXJpdHk6IFNlY3VyaXR5IGNsYXNzaWZpY2F0aW9uOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN1cml0eS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWN1cml0eSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgVXNlckxldmVsOiBMZXZlbCBvZiB1c2VyIGV4cGVyaWVuY2UgdG8gd2hpY2ggZWxlbWVudCBhcHBsaWVzOyBubwogICAgZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ1c2VybGV2ZWwuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXNlcmxldmVsIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFZlbmRvcjogQ29tcHV0ZXIgdmVuZG9yIHRvIHdoaWNoIGVsZW1lbnQgYXBwbGllczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmVuZG9yLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZlbmRvciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBXb3Jkc2l6ZTogQ29tcHV0ZXIgd29yZCBzaXplICgzMiBiaXQsIDY0IGJpdCwgZXRjLik7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9IndvcmRzaXplLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndvcmRzaXplIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZWZmZWN0aXZpdHkuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyY2guYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25kaXRpb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mb3JtYW5jZS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9zLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2aXNpb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN1cml0eS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InVzZXJsZXZlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZlbmRvci5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndvcmRzaXplLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBDb21tb24gYXR0cmlidXRlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gSWQ6IFVuaXF1ZSBpZGVudGlmaWVyIG9mIGVsZW1lbnQ7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlkLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJ4czpJRCIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgSWQ6IFVuaXF1ZSBpZGVudGlmaWVyIG9mIGVsZW1lbnQ7IGEgdmFsdWUgbXVzdCBiZSBzdXBwbGllZDsgbm8KICAgIGRlZmF1bHQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaWRyZXEuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWQiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOklEIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBMYW5nOiBJbmRpY2F0b3Igb2YgbGFuZ3VhZ2UgaW4gd2hpY2ggZWxlbWVudCBpcyB3cml0dGVuLCBmb3IKICAgIHRyYW5zbGF0aW9uLCBjaGFyYWN0ZXIgc2V0IG1hbmFnZW1lbnQsIGV0Yy47IG5vIGRlZmF1bHQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGFuZy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5nIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFJlbWFwOiBQcmV2aW91cyByb2xlIG9mIGVsZW1lbnQgYmVmb3JlIGNvbnZlcnNpb247IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlbWFwLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbWFwIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFJvbGU6IE5ldyByb2xlIG9mIGVsZW1lbnQgaW4gbG9jYWwgZW52aXJvbm1lbnQ7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9sZSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgWFJlZkxhYmVsOiBBbHRlcm5hdGUgbGFiZWxpbmcgc3RyaW5nIGZvciBYUmVmIHRleHQgZ2VuZXJhdGlvbjsKICAgIGRlZmF1bHQgaXMgdXN1YWxseSB0aXRsZSBvciBvdGhlciBhcHByb3ByaWF0ZSBsYWJlbCB0ZXh0IGFscmVhZHkKICAgIGNvbnRhaW5lZCBpbiBlbGVtZW50CiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InhyZWZsYWJlbC5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ4cmVmbGFiZWwiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIFJldmlzaW9uRmxhZzogUmV2aXNpb24gc3RhdHVzIG9mIGVsZW1lbnQ7IGRlZmF1bHQgaXMgdGhhdCBlbGVtZW50CiAgICB3YXNuJ3QgcmV2aXNlZAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXZpc2lvbmZsYWcuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmV2aXNpb25mbGFnIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhbmdlZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhZGRlZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkZWxldGVkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9mZiIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkaXI6IEJpZGlyZWN0aW9uYWwgb3ZlcnJpZGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImRpci5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkaXIiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsdHIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icnRsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxybyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJybG8iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0geG1sOmJhc2U6IGJhc2UgVVJJIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ4bWwtYmFzZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSByZWY9InhtbDpiYXNlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFJvbGUgaXMgaW5jbHVkZWQgZXhwbGljaXRseSBvbiBlYWNoIGVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbW1vbi5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaWQuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYW5nLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVtYXAuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4cmVmbGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZpc2lvbmZsYWcuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlZmZlY3Rpdml0eS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRpci5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InhtbC1iYXNlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBSb2xlIGlzIGluY2x1ZGVkIGV4cGxpY2l0bHkgb24gZWFjaCBlbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpZHJlcS5jb21tb24uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlkcmVxLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFuZy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlbWFwLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ieHJlZmxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2aXNpb25mbGFnLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZWZmZWN0aXZpdHkuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJkaXIuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4bWwtYmFzZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gU2VtaS1jb21tb24gYXR0cmlidXRlcyBhbmQgb3RoZXIgYXR0cmlidXRlIGVudGl0aWVzIC4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tCiAgICBFbnRpdHlSZWY6IE5hbWUgb2YgYW4gZXh0ZXJuYWwgZW50aXR5IGNvbnRhaW5pbmcgdGhlIGNvbnRlbnQKICAgIG9mIHRoZSBncmFwaGljCiAgLS0+CiAgPCEtLQogICAgRmlsZVJlZjogRmlsZW5hbWUsIHF1YWxpZmllZCBieSBhIHBhdGhuYW1lIGlmIGRlc2lyZWQsCiAgICBkZXNpZ25hdGluZyB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBjb250ZW50IG9mIHRoZSBncmFwaGljCiAgLS0+CiAgPCEtLSBGb3JtYXQ6IE5vdGF0aW9uIG9mIHRoZSBlbGVtZW50IGNvbnRlbnQsIGlmIGFueSAtLT4KICA8IS0tIFNyY0NyZWRpdDogSW5mb3JtYXRpb24gYWJvdXQgdGhlIHNvdXJjZSBvZiB0aGUgR3JhcGhpYyAtLT4KICA8IS0tIFdpZHRoOiBTYW1lIGFzIENBTFMgcmVwcm93aWQgKGRlc2lyZWQgd2lkdGgpIC0tPgogIDwhLS0gRGVwdGg6IFNhbWUgYXMgQ0FMUyByZXByb2RlcCAoZGVzaXJlZCBkZXB0aCkgLS0+CiAgPCEtLQogICAgQWxpZ246IFNhbWUgYXMgQ0FMUyBocGxhY2Ugd2l0aCAnbm9uZScgcmVtb3ZlZDsgI0lNUExJRUQgbWVhbnMKICAgIGFwcGxpY2F0aW9uLXNwZWNpZmljCiAgLS0+CiAgPCEtLSBTY2FsZTogQ29uZmxhdGlvbiBvZiBDQUxTIGhzY2FsZSBhbmQgdnNjYWxlIC0tPgogIDwhLS0gU2NhbGVmaXQ6IFNhbWUgYXMgQ0FMUyBzY2FsZWZpdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3JhcGhpY3MuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW50aXR5cmVmIiB0eXBlPSJ4czpFTlRJVFkiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsZXJlZiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb3JtYXQiIHR5cGU9Im5vdGF0aW9uLmNsYXNzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNyY2NyZWRpdCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50d2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVwdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGVudGRlcHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NhbGUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NhbGVmaXQiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgQWN0aW9uOiBLZXkgY29tYmluYXRpb24gdHlwZTsgZGVmYXVsdCBpcyB1bnNwZWNpZmllZCBpZiBvbmUKICAgIGNoaWxkIGVsZW1lbnQsIFNpbXVsIGlmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmU7IGlmIHZhbHVlIGlzCiAgICBPdGhlciwgdGhlIE90aGVyQWN0aW9uIGF0dHJpYnV0ZSBtdXN0IGhhdmUgYSBub25lbXB0eSB2YWx1ZQogIC0tPgogIDwhLS0gT3RoZXJBY3Rpb246IFVzZXItZGVmaW5lZCBrZXkgY29tYmluYXRpb24gdHlwZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5YWN0aW9uLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFjdGlvbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNsaWNrIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRvdWJsZS1jbGljayIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcmVzcyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZXEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2ltdWwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJhY3Rpb24iLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIExhYmVsOiBJZGVudGlmeWluZyBudW1iZXIgb3Igc3RyaW5nOyBkZWZhdWx0IGlzIHVzdWFsbHkgdGhlCiAgICBhcHByb3ByaWF0ZSBudW1iZXIgb3Igc3RyaW5nIGF1dG9nZW5lcmF0ZWQgYnkgYSBmb3JtYXR0ZXIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGFiZWwuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWwiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0geG1sOnNwYWNlOiB3aGl0ZXNwYWNlIHRyZWF0bWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ieG1sLXNwYWNlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIHJlZj0ieG1sOnNwYWNlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBGb3JtYXQ6IHdoZXRoZXIgZWxlbWVudCBpcyBhc3N1bWVkIHRvIGNvbnRhaW4gc2lnbmlmaWNhbnQgd2hpdGUKICAgIHNwYWNlCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmVzcGVjaWZpYy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb3JtYXQiIGRlZmF1bHQ9ImxpbmVzcGVjaWZpYyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVzcGVjaWZpYyIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ieG1sLXNwYWNlLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaW5lbnVtYmVyaW5nIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibnVtYmVyZWQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idW5udW1iZXJlZCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250aW51YXRpb24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb250aW51ZXMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVzdGFydHMiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RhcnRpbmdsaW5lbnVtYmVyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxhbmd1YWdlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIExpbmtlbmQ6IGxpbmsgdG8gcmVsYXRlZCBpbmZvcm1hdGlvbjsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGlua2VuZC5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaW5rZW5kIiB0eXBlPSJ4czpJRFJFRiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBMaW5rZW5kOiByZXF1aXJlZCBsaW5rIHRvIHJlbGF0ZWQgaW5mb3JtYXRpb24gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmtlbmRyZXEuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlua2VuZCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6SURSRUYiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIExpbmtlbmRzOiBsaW5rIHRvIG9uZSBvciBtb3JlIHNldHMgb2YgcmVsYXRlZCBpbmZvcm1hdGlvbjsgbm8KICAgIGRlZmF1bHQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGlua2VuZHMuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlua2VuZHMiIHR5cGU9InhzOklEUkVGUyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1hcmsuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWFyayIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBNb3JlSW5mbzogd2hldGhlciBlbGVtZW50J3MgY29udGVudCBoYXMgYW4gYXNzb2NpYXRlZCBSZWZFbnRyeSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW9yZWluZm8uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW9yZWluZm8iIGRlZmF1bHQ9Im5vbmUiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZWZlbnRyeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub25lIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFBhZ2VudW06IG51bWJlciBvZiBwYWdlIG9uIHdoaWNoIGVsZW1lbnQgYXBwZWFyczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFnZW51bS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYWdlbnVtIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBTdGF0dXM6IEVkaXRvcmlhbCBvciBwdWJsaWNhdGlvbiBzdGF0dXMgb2YgdGhlIGVsZW1lbnQKICAgIGl0IGFwcGxpZXMgdG8sIHN1Y2ggYXMgImluIHJldmlldyIgb3IgImFwcHJvdmVkIGZvciBkaXN0cmlidXRpb24iCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0YXR1cy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGF0dXMiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIFdpZHRoOiB3aWR0aCBvZiB0aGUgbG9uZ2VzdCBsaW5lIGluIHRoZSBlbGVtZW50IHRvIHdoaWNoIGl0CiAgICBwZXJ0YWlucywgaW4gbnVtYmVyIG9mIGNoYXJhY3RlcnMKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0id2lkdGguYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lkdGgiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFRpdGxlIGVsZW1lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRpdGxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0aXRsZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0aXRsZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0aXRsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0aXRsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0aXRsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW0uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0aXRsZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGl0bGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0aXRsZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRpdGxlYWJicmV2LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0aXRsZWFiYnJldiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0aXRsZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0aXRsZWFiYnJldi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0aXRsZWFiYnJldi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0aXRsZWFiYnJldi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRpdGxlYWJicmV2LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0aXRsZWFiYnJldi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRpdGxlYWJicmV2Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3VidGl0bGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN1YnRpdGxlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRpdGxlLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YnRpdGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN1YnRpdGxlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YnRpdGxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3VidGl0bGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN1YnRpdGxlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3VidGl0bGUubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEJpYmxpb2dyYXBoaWMgZW50aXRpZXMgYW5kIGVsZW1lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgVGhlIGJpYmxpb2dyYXBoaWMgZWxlbWVudHMgYXJlIHR5cGljYWxseSB1c2VkIGluIHRoZSBkb2N1bWVudAogICAgaGllcmFyY2h5LiBUaGV5IGRvIG5vdCBhcHBlYXIgaW4gY29udGVudCBtb2RlbHMgb2YgaW5mb3JtYXRpb24KICAgIHBvb2wgZWxlbWVudHMuICBTZWUgYWxzbyB0aGUgZG9jdW1lbnQgaW5mb3JtYXRpb24gZWxlbWVudHMsCiAgICBiZWxvdy4KICAtLT4KICA8eHM6Z3JvdXAgbmFtZT0icGVyc29uLmlkZW50Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imhvbm9yaWZpYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImZpcnN0bmFtZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN1cm5hbWUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lYWdlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ib3RoZXJuYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWZmaWxpYXRpb24iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhdXRob3JibHVyYiIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbnRyaWIiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImJpYmxpb2NvbXBvbmVudC5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhYmJyZXYiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhYnN0cmFjdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkZHJlc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcnRwYWdlbnVtcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImF1dGhvciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImF1dGhvcmdyb3VwIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yaW5pdGlhbHMiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9taXNjIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvc2V0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29sbGFiIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29uZmdyb3VwIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29udHJhY3RudW0iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb250cmFjdHNwb25zb3IiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb3B5cmlnaHQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb3JwYXV0aG9yIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29ycG5hbWUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb3JwY3JlZGl0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZGF0ZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImVkaXRpb24iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlZGl0b3IiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbnZwYXJ0bnVtYmVyIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaXNibiIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imlzc24iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpc3N1ZW51bSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im9yZ25hbWUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9pZCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNpdGViaWJsaW9pZCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb3NvdXJjZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb3JlbGF0aW9uIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvY292ZXJhZ2UiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvdGhlcmNyZWRpdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhZ2VudW1zIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJpbnRoaXN0b3J5Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJvZHVjdG5hbWUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcm9kdWN0bnVtYmVyIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHViZGF0ZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InB1Ymxpc2hlciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InB1Ymxpc2hlcm5hbWUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwdWJzbnVtYmVyIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icmVsZWFzZWluZm8iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXZoaXN0b3J5Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic2VyaWVzdm9sbnVtcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN1YnRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0aXRsZWFiYnJldiIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InZvbHVtZW51bSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNpdGV0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBlcnNvbm5hbWUiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0icGVyc29uLmlkZW50Lm1peCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBJIGRvbid0IHRoaW5rIHRoaXMgaXMgd2VsbCBwbGFjZWQsIGJ1dCBpdCBuZWVkcyB0byBiZSBoZXJlIGJlY2F1c2Ugb2YgLS0+CiAgPCEtLSB0aGUgcmVmZXJlbmNlIHRvIGJpYmxpb2NvbXBvbmVudC5taXggLS0+CiAgPHhzOmdyb3VwIG5hbWU9ImluZm8uY2xhc3MiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJncmFwaGljIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibWVkaWFvYmplY3QiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsZWdhbG5vdGljZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im1vZGVzcGVjIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3ViamVjdHNldCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImtleXdvcmRzZXQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpdGVybXNldCIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJiaWJsaW9jb21wb25lbnQubWl4Ii8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDwhLS0gQmlibGlvTGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2xpc3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb2xpc3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaXN0LmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb2VudHJ5Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb21peGVkIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2xpc3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmlibGlvbGlzdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9saXN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvbGlzdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmlibGlvbGlzdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb2xpc3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9lbnRyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFydGljbGVpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYmlibGlvY29tcG9uZW50Lm1peCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmlibGlvZW50cnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9lbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmlibGlvZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9lbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb21peGVkLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9taXhlZCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9ImJpYmxpb2NvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb21zZXQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb21peGVkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb21peGVkLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb21peGVkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvbWl4ZWQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb21peGVkLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYmlibGlvbWl4ZWQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcnRpY2xlaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJ0aWNsZWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcnRpY2xlaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhcnRpY2xlaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcnRpY2xlaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFydGljbGVpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhcnRpY2xlaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFydGljbGVpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvc2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9zZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYmlibGlvY29tcG9uZW50Lm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9zZXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmlibGlvc2V0LmVsZW1lbnQgLS0+CiAgPCEtLSBSZWxhdGlvbjogUmVsYXRpb25zaGlwIG9mIGVsZW1lbnRzIGNvbnRhaW5lZCB3aXRoaW4gQmlibGlvU2V0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9zZXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbGF0aW9uIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9zZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb3NldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb3NldC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb21zZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb21zZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiaWJsaW9jb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9tc2V0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9tc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb21zZXQuZWxlbWVudCAtLT4KICA8IS0tIFJlbGF0aW9uOiBSZWxhdGlvbnNoaXAgb2YgZWxlbWVudHMgY29udGFpbmVkIHdpdGhpbiBCaWJsaW9NU2V0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9tc2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWxhdGlvbiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvbXNldC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmlibGlvbXNldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb21zZXQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9taXNjLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9taXNjIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvbWlzYy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9taXNjLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb21pc2MuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9taXNjLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9taXNjLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYmlibGlvbWlzYy5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gU3ViamVjdCwgS2V5d29yZCwgYW5kIElUZXJtU2V0IGVsZW1lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3ViamVjdHNldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3ViamVjdHNldCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzdWJqZWN0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YmplY3RzZXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3ViamVjdHNldC5lbGVtZW50IC0tPgogIDwhLS0gU2NoZW1lOiBDb250cm9sbGVkIHZvY2FidWxhcnkgZW1wbG95ZWQgaW4gU3ViamVjdFRlcm1zIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJqZWN0c2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY2hlbWUiIHR5cGU9InhzOk5NVE9LRU4iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YmplY3RzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN1YmplY3RzZXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdWJqZWN0c2V0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3ViamVjdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3ViamVjdCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzdWJqZWN0dGVybSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJqZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN1YmplY3QuZWxlbWVudCAtLT4KICA8IS0tCiAgICBXZWlnaHQ6IFJhbmtpbmcgb2YgdGhpcyBncm91cCBvZiBTdWJqZWN0VGVybXMgcmVsYXRpdmUKICAgIHRvIG90aGVycywgMCBpcyBsb3csIG5vIGhpZ2hlc3QgdmFsdWUgc3BlY2lmaWVkCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YmplY3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndlaWdodCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3ViamVjdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3ViamVjdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN1YmplY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJqZWN0dGVybS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3ViamVjdHRlcm0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3ViamVjdHRlcm0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3ViamVjdHRlcm0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3ViamVjdHRlcm0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJqZWN0dGVybS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3ViamVjdHRlcm0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdWJqZWN0dGVybS5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2Ygc3ViamVjdHNldC5jb250ZW50Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5d29yZHNldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ia2V5d29yZHNldCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJrZXl3b3JkIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleXdvcmRzZXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Yga2V5d29yZHNldC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXl3b3Jkc2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5d29yZHNldC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Yga2V5d29yZHNldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGtleXdvcmRzZXQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXl3b3JkLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJrZXl3b3JkIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleXdvcmQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Yga2V5d29yZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXl3b3JkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5d29yZC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Yga2V5d29yZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGtleXdvcmQubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGtleXdvcmRzZXQuY29udGVudC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Iml0ZXJtc2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpdGVybXNldCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmRleHRlcm0iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXRlcm1zZXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaXRlcm1zZXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaXRlcm1zZXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpdGVybXNldC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaXRlcm1zZXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpdGVybXNldC5tb2R1bGUgLS0+CiAgPCEtLSBCaWJsaW9ncmFwaGljIGluZm8gZm9yICJibG9ja3MiIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJibG9ja2luZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJsb2NraW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJsb2NraW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBibG9ja2luZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmxvY2tpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmxvY2tpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBibG9ja2luZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBibG9ja2luZm8ubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIENvbXBvdW5kIChzZWN0aW9uLWlzaCkgZWxlbWVudHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBNZXNzYWdlIHNldCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dzZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ3NldCIgc3Vic3RpdHV0aW9uR3JvdXA9ImNvbXBvdW5kLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1zZ2VudHJ5Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVtc2dlbnRyeSIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dzZXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnc2V0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ3NldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ3NldC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnc2V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnc2V0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ2VudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1zZyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJtc2dpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtc2dleHBsYW4iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnZW50cnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpbXBsZW1zZ2VudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaW1wbGVtc2dlbnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ3RleHQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtc2dleHBsYW4iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2ltcGxlbXNnZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlbXNnZW50cnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2ltcGxlbXNnZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImF1ZGllbmNlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxldmVsIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9yaWdpbiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2ltcGxlbXNnZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNpbXBsZW1zZ2VudHJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlbXNnZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2cucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ21haW4iLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2dzdWIiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNncmVsIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2cuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2cuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2cubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dtYWluLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dtYWluIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNndGV4dCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dtYWluLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1zZ21haW4uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnbWFpbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ21haW4ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1zZ21haW4uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dtYWluLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnc3ViLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dzdWIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2d0ZXh0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ3N1Yi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dzdWIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnc3ViLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnc3ViLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dzdWIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dzdWIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dyZWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ3JlbCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ3RleHQiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNncmVsLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1zZ3JlbC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dyZWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dyZWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1zZ3JlbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1zZ3JlbC5tb2R1bGUgLS0+CiAgPCEtLSBNc2dUZXh0IChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibXNnaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2dsZXZlbCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNnb3JpZyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNnYXVkIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1zZ2luZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2luZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1zZ2luZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnbGV2ZWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ2xldmVsIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dsZXZlbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dsZXZlbC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dsZXZlbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2xldmVsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dsZXZlbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1zZ2xldmVsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnb3JpZy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibXNnb3JpZyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnb3JpZy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dvcmlnLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ29yaWcuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dvcmlnLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dvcmlnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnb3JpZy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2F1ZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibXNnYXVkIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnYXVkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1zZ2F1ZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dhdWQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dhdWQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1zZ2F1ZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1zZ2F1ZC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2V4cGxhbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibXNnZXhwbGFuIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2V4cGxhbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dleHBsYW4uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnZXhwbGFuLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnZXhwbGFuLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dleHBsYW4uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dleHBsYW4ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIG1zZ3NldC5jb250ZW50Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFzay5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGFzayIgc3Vic3RpdHV0aW9uR3JvdXA9ImNvbXBvdW5kLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0YXNrc3VtbWFyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0YXNrcHJlcmVxdWlzaXRlcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icHJvY2VkdXJlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJleGFtcGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRhc2tyZWxhdGVkIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRhc2suYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGFzay5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YXNrLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGFzay5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGFzay5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRhc2subW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YXNrc3VtbWFyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGFza3N1bW1hcnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YXNrc3VtbWFyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0YXNrc3VtbWFyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YXNrc3VtbWFyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRhc2tzdW1tYXJ5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0YXNrc3VtbWFyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRhc2tzdW1tYXJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFza3ByZXJlcXVpc2l0ZXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRhc2twcmVyZXF1aXNpdGVzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGFza3ByZXJlcXVpc2l0ZXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGFza3ByZXJlcXVpc2l0ZXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFza3ByZXJlcXVpc2l0ZXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YXNrcHJlcmVxdWlzaXRlcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGFza3ByZXJlcXVpc2l0ZXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0YXNrcHJlcmVxdWlzaXRlcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRhc2tyZWxhdGVkLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0YXNrcmVsYXRlZCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRhc2tyZWxhdGVkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRhc2tyZWxhdGVkLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRhc2tyZWxhdGVkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGFza3JlbGF0ZWQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRhc2tyZWxhdGVkLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdGFza3JlbGF0ZWQubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHRhc2suY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBRYW5kQVNldCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InFhbmRhc2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJxYW5kYXNldCIgc3Vic3RpdHV0aW9uR3JvdXA9ImNvbXBvdW5kLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icWFuZGFzZXQubWl4Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InFhbmRhZGl2Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJxYW5kYWVudHJ5Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InFhbmRhc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHFhbmRhc2V0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InFhbmRhc2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZWZhdWx0bGFiZWwiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJxYW5kYSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJudW1iZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm9uZSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icWFuZGFzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHFhbmRhc2V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcWFuZGFzZXQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxYW5kYWRpdi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icWFuZGFkaXYiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJxYW5kYXNldC5taXgiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icWFuZGFkaXYiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InFhbmRhZW50cnkiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icWFuZGFkaXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcWFuZGFkaXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icWFuZGFkaXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJxYW5kYWRpdi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcWFuZGFkaXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBxYW5kYWRpdi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InFhbmRhZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InFhbmRhZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZXZoaXN0b3J5Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJxdWVzdGlvbiIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYW5zd2VyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InFhbmRhZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcWFuZGFlbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxYW5kYWVudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icWFuZGFlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcWFuZGFlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHFhbmRhZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxdWVzdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icXVlc3Rpb24iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImxhYmVsIi8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InFhbmRhc2V0Lm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJxdWVzdGlvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBxdWVzdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxdWVzdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InF1ZXN0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBxdWVzdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHF1ZXN0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYW5zd2VyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhbnN3ZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImxhYmVsIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icWFuZGFzZXQubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJxYW5kYWVudHJ5Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFuc3dlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhbnN3ZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYW5zd2VyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYW5zd2VyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhbnN3ZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhbnN3ZXIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsYWJlbC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGFiZWwiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0id29yZC5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsYWJlbC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsYWJlbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBsYWJlbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGxhYmVsLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBxYW5kYXNldC5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIFByb2NlZHVyZSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2NlZHVyZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJvY2VkdXJlIiBzdWJzdGl0dXRpb25Hcm91cD0iY29tcG91bmQuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic3RlcCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9jZWR1cmUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJvY2VkdXJlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2NlZHVyZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2NlZHVyZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJvY2VkdXJlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHJvY2VkdXJlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RlcC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3RlcCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6c2VxdWVuY2UgbWluT2NjdXJzPSIwIj4KICAgICAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzdGVwcyIvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdGVwYWx0ZXJuYXRpdmVzIi8+CiAgICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN1YnN0ZXBzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdGVwYWx0ZXJuYXRpdmVzIi8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGVwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN0ZXAuZWxlbWVudCAtLT4KICA8IS0tIFBlcmZvcm1hbmNlOiBXaGV0aGVyIHRoZSBTdGVwIG11c3QgYmUgcGVyZm9ybWVkIC0tPgogIDwhLS0gbm90ICNSRVFVSVJFRCEgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0ZXAuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBlcmZvcm1hbmNlIiBkZWZhdWx0PSJyZXF1aXJlZCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9wdGlvbmFsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlcXVpcmVkIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGVwLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdGVwLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3RlcC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YnN0ZXBzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdWJzdGVwcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzdGVwIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YnN0ZXBzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN1YnN0ZXBzLmVsZW1lbnQgLS0+CiAgPCEtLSBQZXJmb3JtYW5jZTogd2hldGhlciBlbnRpcmUgc2V0IG9mIHN1YnN0ZXBzIG11c3QgYmUgcGVyZm9ybWVkIC0tPgogIDwhLS0gbm90ICNSRVFVSVJFRCEgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YnN0ZXBzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZXJmb3JtYW5jZSIgZGVmYXVsdD0icmVxdWlyZWQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHRpb25hbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXF1aXJlZCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3Vic3RlcHMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN1YnN0ZXBzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3Vic3RlcHMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdGVwYWx0ZXJuYXRpdmVzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdGVwYWx0ZXJuYXRpdmVzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InN0ZXAiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RlcGFsdGVybmF0aXZlcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdGVwYWx0ZXJuYXRpdmVzLmVsZW1lbnQgLS0+CiAgPCEtLSBQZXJmb3JtYW5jZTogV2hldGhlciAob25lIG9mKSB0aGUgYWx0ZXJuYXRpdmVzIG11c3QgYmUgcGVyZm9ybWVkIC0tPgogIDwhLS0gbm90ICNSRVFVSVJFRCEgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0ZXBhbHRlcm5hdGl2ZXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBlcmZvcm1hbmNlIiBkZWZhdWx0PSJyZXF1aXJlZCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9wdGlvbmFsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlcXVpcmVkIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGVwYWx0ZXJuYXRpdmVzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdGVwYWx0ZXJuYXRpdmVzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3RlcGFsdGVybmF0aXZlcy5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgcHJvY2VkdXJlLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gU2lkZWJhciAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2lkZWJhcmluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNpZGViYXJpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2lkZWJhcmluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2lkZWJhcmluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2lkZWJhcmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaWRlYmFyaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2lkZWJhcmluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzaWRlYmFyaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpZGViYXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNpZGViYXIiIHN1YnN0aXR1dGlvbkdyb3VwPSJjb21wb3VuZC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2lkZWJhcmluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpZGViYXIubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpZGViYXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2lkZWJhci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaWRlYmFyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2lkZWJhci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2lkZWJhci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNpZGViYXIubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHNpZGViYXIuY29udGVudC5tb2RlbCAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBQYXJhZ3JhcGgtcmVsYXRlZCBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhYnN0cmFjdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYWJzdHJhY3QiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhYnN0cmFjdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhYnN0cmFjdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhYnN0cmFjdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFic3RyYWN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhYnN0cmFjdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFic3RyYWN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXV0aG9yYmx1cmIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImF1dGhvcmJsdXJiIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXV0aG9yYmx1cmIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXV0aG9yYmx1cmIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXV0aG9yYmx1cmIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdXRob3JibHVyYi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXV0aG9yYmx1cmIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhdXRob3JibHVyYi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBlcnNvbmJsdXJiLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwZXJzb25ibHVyYiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBlcnNvbmJsdXJiLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBlcnNvbmJsdXJiLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBlcnNvbmJsdXJiLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGVyc29uYmx1cmIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBlcnNvbmJsdXJiLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcGVyc29uYmx1cmIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJibG9ja3F1b3RlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJibG9ja3F1b3RlIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhdHRyaWJ1dGlvbiIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJsb2NrcXVvdGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmxvY2txdW90ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJibG9ja3F1b3RlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmxvY2txdW90ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmxvY2txdW90ZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJsb2NrcXVvdGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdHRyaWJ1dGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXR0cmlidXRpb24iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdHRyaWJ1dGlvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhdHRyaWJ1dGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdHRyaWJ1dGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF0dHJpYnV0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhdHRyaWJ1dGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGF0dHJpYnV0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYnJpZGdlaGVhZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYnJpZGdlaGVhZCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0aXRsZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJicmlkZ2VoZWFkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJyaWRnZWhlYWQuZWxlbWVudCAtLT4KICA8IS0tCiAgICBSZW5kZXJhczogSW5kaWNhdGVzIHRoZSBmb3JtYXQgaW4gd2hpY2ggdGhlIEJyaWRnZUhlYWQKICAgIHNob3VsZCBhcHBlYXIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYnJpZGdlaGVhZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVuZGVyYXMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYnJpZGdlaGVhZC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYnJpZGdlaGVhZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJyaWRnZWhlYWQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZW1hcmsucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlbWFyayI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlbWFyay5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZW1hcmsuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVtYXJrLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVtYXJrLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZW1hcmsuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZW1hcmsubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcGlncmFwaC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXBpZ3JhcGgiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImF0dHJpYnV0aW9uIi8+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibGl0ZXJhbGxheW91dCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcGlncmFwaC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlcGlncmFwaC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcGlncmFwaC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVwaWdyYXBoLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlcGlncmFwaC5hdHRsaXN0IC0tPgogIDwhLS0gQXR0cmlidXRpb24gKGRlZmluZWQgYWJvdmUpIC0tPgogIDwhLS0gZW5kIG9mIGVwaWdyYXBoLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZm9vdG5vdGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZvb3Rub3RlIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZm9vdG5vdGUubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZvb3Rub3RlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZvb3Rub3RlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvb3Rub3RlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmb290bm90ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZm9vdG5vdGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmb290bm90ZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImhpZ2hsaWdodHMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImhpZ2hsaWdodHMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaGlnaGxpZ2h0cy5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaGlnaGxpZ2h0cy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBoaWdobGlnaHRzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImhpZ2hsaWdodHMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJoaWdobGlnaHRzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBoaWdobGlnaHRzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaGlnaGxpZ2h0cy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvcm1hbHBhcmEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZvcm1hbHBhcmEiIHN1YnN0aXR1dGlvbkdyb3VwPSJwYXJhLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZm9ybWFscGFyYS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmb3JtYWxwYXJhLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvcm1hbHBhcmEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmb3JtYWxwYXJhLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmb3JtYWxwYXJhLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZm9ybWFscGFyYS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcmEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBhcmEiIHN1YnN0aXR1dGlvbkdyb3VwPSJwYXJhLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czpncm91cCByZWY9InBhcmEubWl4Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBhcmEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFyYS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcmEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhcmEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwYXJhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2ltcGFyYS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2ltcGFyYSIgc3Vic3RpdHV0aW9uR3JvdXA9InBhcmEuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaW1wYXJhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNpbXBhcmEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2ltcGFyYS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBhcmEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNpbXBhcmEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzaW1wYXJhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWRtb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNhdXRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJhZG1vbi5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRtb24ubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNhdXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2F1dGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYXV0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRtb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNhdXRpb24uYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbXBvcnRhbnQiIHN1YnN0aXR1dGlvbkdyb3VwPSJhZG1vbi5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRtb24ubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltcG9ydGFudC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbXBvcnRhbnQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW1wb3J0YW50LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRtb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGltcG9ydGFudC5hdHRsaXN0IC0tPgogIDx4czplbGVtZW50IG5hbWU9Im5vdGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJhZG1vbi5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRtb24ubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im5vdGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygbm90ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJub3RlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRtb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG5vdGUuYXR0bGlzdCAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0aXAiIHN1YnN0aXR1dGlvbkdyb3VwPSJhZG1vbi5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRtb24ubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRpcC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0aXAuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGlwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRtb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRpcC5hdHRsaXN0IC0tPgogIDx4czplbGVtZW50IG5hbWU9Indhcm5pbmciIHN1YnN0aXR1dGlvbkdyb3VwPSJhZG1vbi5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRtb24ubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Indhcm5pbmcuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygd2FybmluZy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ3YXJuaW5nLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRtb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHdhcm5pbmcuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhZG1vbi5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gTGlzdHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEdsb3NzTGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ2xvc3NsaXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imdsb3NzZW50cnkiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NsaXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdsb3NzbGlzdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2xpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc2xpc3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzbGlzdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzbGlzdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3NzZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnbG9zc3Rlcm0iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYWNyb255bSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhYmJyZXYiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmV2aGlzdG9yeSIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdsb3Nzc2VlIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc2RlZiIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc2VudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdsb3NzZW50cnkuZWxlbWVudCAtLT4KICA8IS0tCiAgICBTb3J0QXM6IFN0cmluZyBieSB3aGljaCB0aGUgR2xvc3NFbnRyeSBpcyB0byBiZSBzb3J0ZWQKICAgIChhbHBoYWJldGl6ZWQpIGluIGxpZXUgb2YgaXRzIHByb3BlciBjb250ZW50CiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNvcnRhcyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ2xvc3NlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzZW50cnkubW9kdWxlIC0tPgogIDwhLS0gR2xvc3NUZXJtIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NkZWYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3NzZGVmIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc2RlZi5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imdsb3Nzc2VlYWxzbyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc2RlZi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc2RlZi5lbGVtZW50IC0tPgogIDwhLS0gU3ViamVjdDogTGlzdCBvZiBzdWJqZWN0czsga2V5d29yZHMgZm9yIHRoZSBkZWZpbml0aW9uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2RlZi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3ViamVjdCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NkZWYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzZGVmLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NkZWYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc3NlZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ2xvc3NzZWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc3NlZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc3NlZS5lbGVtZW50IC0tPgogIDwhLS0KICAgIE90aGVyVGVybTogUmVmZXJlbmNlIHRvIHRoZSBHbG9zc0VudHJ5IHdob3NlIEdsb3NzVGVybQogICAgc2hvdWxkIGJlIGRpc3BsYXllZCBhdCB0aGUgcG9pbnQgb2YgdGhlIEdsb3NzU2VlCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3Nzc2VlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcnRlcm0iIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc3NlZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ2xvc3NzZWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc3NlZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3Nzc2VlYWxzby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ2xvc3NzZWVhbHNvIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NzZWVhbHNvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdsb3Nzc2VlYWxzby5lbGVtZW50IC0tPgogIDwhLS0KICAgIE90aGVyVGVybTogUmVmZXJlbmNlIHRvIHRoZSBHbG9zc0VudHJ5IHdob3NlIEdsb3NzVGVybQogICAgc2hvdWxkIGJlIGRpc3BsYXllZCBhdCB0aGUgcG9pbnQgb2YgdGhlIEdsb3NzU2VlQWxzbwogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc3NlZWFsc28uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVydGVybSIgdHlwZT0ieHM6SURSRUYiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3Nzc2VlYWxzby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ2xvc3NzZWVhbHNvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NzZWVhbHNvLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc2VudHJ5LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gSXRlbWl6ZWRMaXN0IGFuZCBPcmRlcmVkTGlzdCAuLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaXRlbWl6ZWRsaXN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpdGVtaXplZGxpc3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaXN0LmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibGlzdHByZWFtYmxlLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imxpc3RpdGVtIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Iml0ZW1pemVkbGlzdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpdGVtaXplZGxpc3QuZWxlbWVudCAtLT4KICA8IS0tCiAgICBTcGFjaW5nOiBXaGV0aGVyIHRoZSB2ZXJ0aWNhbCBzcGFjZSBpbiB0aGUgbGlzdCBzaG91bGQgYmUKICAgIGNvbXByZXNzZWQKICAtLT4KICA8IS0tCiAgICBNYXJrOiBLZXl3b3JkLCBlLmcuLCBidWxsZXQsIGRhc2gsIGNoZWNrYm94LCBub25lOwogICAgbGlzdCBvZiBrZXl3b3JkcyBhbmQgZGVmYXVsdHMgYXJlIGltcGxlbWVudGF0aW9uIHNwZWNpZmljCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Iml0ZW1pemVkbGlzdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3BhY2luZyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vcm1hbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb21wYWN0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtYXJrLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXRlbWl6ZWRsaXN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpdGVtaXplZGxpc3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpdGVtaXplZGxpc3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcmRlcmVkbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib3JkZXJlZGxpc3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaXN0LmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibGlzdHByZWFtYmxlLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imxpc3RpdGVtIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9yZGVyZWRsaXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9yZGVyZWRsaXN0LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgTnVtZXJhdGlvbjogU3R5bGUgb2YgTGlzdEl0ZW0gbnVtYmVyZWQ7IGRlZmF1bHQgaXMgZXhwZWN0ZWQKICAgIHRvIGJlIEFyYWJpYwogIC0tPgogIDwhLS0KICAgIEluaGVyaXROdW06IFNwZWNpZmllcyBmb3IgYSBuZXN0ZWQgbGlzdCB0aGF0IHRoZSBudW1iZXJpbmcKICAgIG9mIExpc3RJdGVtcyBzaG91bGQgaW5jbHVkZSB0aGUgbnVtYmVyIG9mIHRoZSBpdGVtCiAgICB3aXRoaW4gd2hpY2ggdGhleSBhcmUgbmVzdGVkIChlLmcuLCAxYSBhbmQgMWIgd2l0aGluIDEsCiAgICByYXRoZXIgdGhhbiBhIGFuZCBiKQogIC0tPgogIDwhLS0KICAgIENvbnRpbnVhdGlvbjogV2hlcmUgbGlzdCBudW1iZXJpbmcgYmVnaW5zIGFmcmVzaCAoUmVzdGFydHMsCiAgICB0aGUgZGVmYXVsdCkgb3IgY29udGludWVzIHRoYXQgb2YgdGhlIGltbWVkaWF0ZWx5IHByZWNlZGluZwogICAgbGlzdCAoQ29udGludWVzKQogIC0tPgogIDwhLS0KICAgIFNwYWNpbmc6IFdoZXRoZXIgdGhlIHZlcnRpY2FsIHNwYWNlIGluIHRoZSBsaXN0IHNob3VsZCBiZQogICAgY29tcHJlc3NlZAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcmRlcmVkbGlzdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibnVtZXJhdGlvbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFyYWJpYyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ1cHBlcmFscGhhIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imxvd2VyYWxwaGEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idXBwZXJyb21hbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsb3dlcnJvbWFuIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaGVyaXRudW0iIGRlZmF1bHQ9Imlnbm9yZSI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImluaGVyaXQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaWdub3JlIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRpbnVhdGlvbiIgZGVmYXVsdD0icmVzdGFydHMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb250aW51ZXMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVzdGFydHMiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3BhY2luZyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vcm1hbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb21wYWN0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcmRlcmVkbGlzdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb3JkZXJlZGxpc3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvcmRlcmVkbGlzdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imxpc3RpdGVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaXN0aXRlbSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imxpc3RpdGVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxpc3RpdGVtLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgT3ZlcnJpZGU6IEluZGljYXRlcyB0aGUgbWFyayB0byBiZSB1c2VkIGZvciB0aGlzIExpc3RJdGVtCiAgICBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IG1hcmsgb3IgdGhlIG1hcmsgc3BlY2lmaWVkIGJ5CiAgICB0aGUgTWFyayBhdHRyaWJ1dGUgb24gdGhlIGVuY2xvc2luZyBJdGVtaXplZExpc3QKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGlzdGl0ZW0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im92ZXJyaWRlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaXN0aXRlbS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbGlzdGl0ZW0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBsaXN0aXRlbS5tb2R1bGUgLS0+CiAgPCEtLSBTZWdtZW50ZWRMaXN0IC4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWdtZW50ZWRsaXN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWdtZW50ZWRsaXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VndGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWdsaXN0aXRlbSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWdtZW50ZWRsaXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlZ21lbnRlZGxpc3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VnbWVudGVkbGlzdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZ21lbnRlZGxpc3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlZ21lbnRlZGxpc3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWdtZW50ZWRsaXN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VndGl0bGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlZ3RpdGxlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRpdGxlLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZ3RpdGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlZ3RpdGxlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZ3RpdGxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VndGl0bGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlZ3RpdGxlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VndGl0bGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWdsaXN0aXRlbS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VnbGlzdGl0ZW0iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VnIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZ2xpc3RpdGVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlZ2xpc3RpdGVtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZ2xpc3RpdGVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VnbGlzdGl0ZW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlZ2xpc3RpdGVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VnbGlzdGl0ZW0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWcucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlZyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWcuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VnLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VnLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWcuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWcubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHNlZ21lbnRlZGxpc3QuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBTaW1wbGVMaXN0IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaW1wbGVsaXN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaW1wbGVsaXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtZW1iZXIiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2ltcGxlbGlzdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzaW1wbGVsaXN0LmVsZW1lbnQgLS0+CiAgPCEtLSBDb2x1bW5zOiBUaGUgbnVtYmVyIG9mIGNvbHVtbnMgdGhlIGFycmF5IHNob3VsZCBjb250YWluIC0tPgogIDwhLS0KICAgIFR5cGU6IEhvdyB0aGUgTWVtYmVycyBvZiB0aGUgU2ltcGxlTGlzdCBzaG91bGQgYmUKICAgIGZvcm1hdHRlZDogSW5saW5lIChtZW1iZXJzIHNlcGFyYXRlZCB3aXRoIGNvbW1hcyBldGMuCiAgICBpbmxpbmUpLCBWZXJ0ICh0b3AgdG8gYm90dG9tIGluIG4gQ29sdW1ucyksIG9yIEhvcml6IChpbgogICAgdGhlIGRpcmVjdGlvbiBvZiB0ZXh0IGZsb3cpIGluIG4gQ29sdW1ucy4gIElmIENvbHVtbgogICAgaXMgMSBvciBpbXBsaWVkLCBUeXBlPVZlcnQgYW5kIFR5cGU9SG9yaXogZ2l2ZSB0aGUgc2FtZQogICAgcmVzdWx0cy4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2ltcGxlbGlzdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sdW1ucyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIiBkZWZhdWx0PSJ2ZXJ0Ij4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaW5saW5lIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InZlcnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaG9yaXoiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBsZWxpc3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNpbXBsZWxpc3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzaW1wbGVsaXN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWVtYmVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZW1iZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZW1iZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWVtYmVyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lbWJlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1lbWJlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWVtYmVyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWVtYmVyLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzaW1wbGVsaXN0LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gVmFyaWFibGVMaXN0IC4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmFyaWFibGVsaXN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2YXJpYWJsZWxpc3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaXN0LmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibGlzdHByZWFtYmxlLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InZhcmxpc3RlbnRyeSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2YXJpYWJsZWxpc3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdmFyaWFibGVsaXN0LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgVGVybUxlbmd0aDogTGVuZ3RoIGJleW9uZCB3aGljaCB0aGUgcHJlc2VudGF0aW9uIGVuZ2luZQogICAgbWF5IGNvbnNpZGVyIHRoZSBUZXJtIHRvbyBsb25nIGFuZCBzZWxlY3QgYW4gYWx0ZXJuYXRlCiAgICBwcmVzZW50YXRpb24gb2YgdGhlIFRlcm0gYW5kLCBvciwgaXRzIGFzc29jaWF0ZWQgTGlzdEl0ZW0uCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZhcmlhYmxlbGlzdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGVybWxlbmd0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFjaW5nIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm9ybWFsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbXBhY3QiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZhcmlhYmxlbGlzdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdmFyaWFibGVsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdmFyaWFibGVsaXN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmFybGlzdGVudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2YXJsaXN0ZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGVybSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdGl0ZW0iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmFybGlzdGVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZhcmxpc3RlbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2YXJsaXN0ZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2YXJsaXN0ZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZhcmxpc3RlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZhcmxpc3RlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRlcm0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRlcm0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXJtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRlcm0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGVybS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRlcm0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRlcm0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0ZXJtLm1vZHVsZSAtLT4KICA8IS0tIExpc3RJdGVtIChkZWZpbmVkIGFib3ZlKSAtLT4KICA8IS0tIGVuZCBvZiB2YXJpYWJsZWxpc3QuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBDYWxsb3V0TGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYWxsb3V0bGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2FsbG91dGxpc3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaXN0LmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjYWxsb3V0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNhbGxvdXRsaXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNhbGxvdXRsaXN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNhbGxvdXRsaXN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2FsbG91dGxpc3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNhbGxvdXRsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2FsbG91dGxpc3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYWxsb3V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjYWxsb3V0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2FsbG91dC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjYWxsb3V0LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQXJlYVJlZnM6IElEcyBvZiBvbmUgb3IgbW9yZSBBcmVhcyBvciBBcmVhU2V0cyBkZXNjcmliZWQKICAgIGJ5IHRoaXMgQ2FsbG91dAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYWxsb3V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcmVhcmVmcyIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6SURSRUZTIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjYWxsb3V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjYWxsb3V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2FsbG91dC5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgY2FsbG91dGxpc3QuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gT2JqZWN0cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEV4YW1wbGVzIGV0Yy4gLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImV4YW1wbGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImV4YW1wbGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJmb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImV4YW1wbGUubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImV4YW1wbGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZXhhbXBsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJleGFtcGxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdHN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndpZHRoLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXhhbXBsZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZXhhbXBsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGV4YW1wbGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmZvcm1hbGV4YW1wbGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImluZm9ybWFsZXhhbXBsZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZXhhbXBsZS5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5mb3JtYWxleGFtcGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGluZm9ybWFsZXhhbXBsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmZvcm1hbGV4YW1wbGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZsb2F0c3R5bGUiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndpZHRoLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5mb3JtYWxleGFtcGxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGV4YW1wbGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGV4YW1wbGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9ncmFtbGlzdGluZ2NvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcm9ncmFtbGlzdGluZ2NvIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluZXNwZWNpZmljLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXJlYXNwZWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InByb2dyYW1saXN0aW5nIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjYWxsb3V0bGlzdCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9ncmFtbGlzdGluZ2NvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb2dyYW1saXN0aW5nY28uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZ3JhbWxpc3Rpbmdjby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2dyYW1saXN0aW5nY28ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByb2dyYW1saXN0aW5nY28uYXR0bGlzdCAtLT4KICA8IS0tIENhbGxvdXRMaXN0IChkZWZpbmVkIGFib3ZlIGluIExpc3RzKSAtLT4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGV4YW1wbGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmVhc3BlYy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJlYXNwZWMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZWEiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZWFzZXQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZWFzcGVjLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFyZWFzcGVjLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgVW5pdHM6IGdsb2JhbCB1bml0IG9mIG1lYXN1cmUgaW4gd2hpY2ggY29vcmRpbmF0ZXMgaW4KICAgIHRoaXMgc3BlYyBhcmUgZXhwcmVzc2VkOgogICAgCiAgICAtIENBTFNQYWlyICJ4MSx5MSB4Mix5MiI6IGxvd2VyLWxlZnQgYW5kIHVwcGVyLXJpZ2h0CiAgICBjb29yZGluYXRlcyBpbiBhIHJlY3RhbmdsZSBkZXNjcmliaW5nIHJlcHJvIGFyZWEgaW4gd2hpY2gKICAgIGdyYXBoaWMgaXMgcGxhY2VkLCB3aGVyZSBYIGFuZCBZIGRpbWVuc2lvbnMgYXJlIGVhY2ggc29tZQogICAgbnVtYmVyIDAuLjEwMDAwICh0YWtlbiBmcm9tIENBTFMgZ3JhcGhpYyBhdHRyaWJ1dGVzKQogICAgCiAgICAtIExpbmVDb2x1bW4gImxpbmUgY29sdW1uIjogbGluZSBudW1iZXIgYW5kIGNvbHVtbiBudW1iZXIKICAgIGF0IHdoaWNoIHRvIHN0YXJ0IGNhbGxvdXQgdGV4dCBpbiAibGluZXNwZWNpZmljIiBjb250ZW50CiAgICAKICAgIC0gTGluZVJhbmdlICJzdGFydGxpbmUgZW5kbGluZSI6IHdob2xlIGxpbmVzIGZyb20gc3RhcnRsaW5lCiAgICB0byBlbmRsaW5lIGluICJsaW5lc3BlY2lmaWMiIGNvbnRlbnQKICAgIAogICAgLSBMaW5lQ29sdW1uUGFpciAibGluZTEgY29sMSBsaW5lMiBjb2wyIjogc3RhcnRpbmcgYW5kIGVuZGluZwogICAgcG9pbnRzIG9mIGFyZWEgaW4gImxpbmVzcGVjaWZpYyIgY29udGVudCB0aGF0IHN0YXJ0cyBhdAogICAgZmlyc3QgcG9zaXRpb24gYW5kIGVuZHMgYXQgc2Vjb25kIHBvc2l0aW9uIChpbmNsdWRpbmcgdGhlCiAgICBiZWdpbm5pbmdzIG9mIGFueSBpbnRlcnZlbmluZyBsaW5lcykKICAgIAogICAgLSBPdGhlcjogZGlyZWN0aXZlIHRvIGxvb2sgYXQgdmFsdWUgb2YgT3RoZXJVbml0cyBhdHRyaWJ1dGUKICAgIHRvIGdldCBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBrZXl3b3JkCiAgICAKICAgIFRoZSBkZWZhdWx0IGlzIGltcGxlbWVudGF0aW9uLXNwZWNpZmljOyB1c3VhbGx5IGRlcGVuZGVudCBvbgogICAgdGhlIHBhcmVudCBlbGVtZW50IChHcmFwaGljQ08gZ2V0cyBDQUxTUGFpciwgUHJvZ3JhbUxpc3RpbmdDTwogICAgYW5kIFNjcmVlbkNPIGdldCBMaW5lQ29sdW1uKQogIC0tPgogIDwhLS0gT3RoZXJVbml0czogVXNlci1kZWZpbmVkIHVuaXRzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmVhc3BlYy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idW5pdHMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjYWxzcGFpciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lY29sdW1uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVyYW5nZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lY29sdW1ucGFpciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcnVuaXRzIiB0eXBlPSJ4czpOTVRPS0VOIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcmVhc3BlYy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXJlYXNwZWMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhcmVhc3BlYy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFyZWEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFyZWEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcmVhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFyZWEuZWxlbWVudCAtLT4KICA8IS0tIGJ1ZyBudW1iZXIvc3ltYm9sIG92ZXJyaWRlIG9yIGluaXRpYWxpemF0aW9uIC0tPgogIDwhLS0gdG8gYW55IHJlbGF0ZWQgaW5mb3JtYXRpb24gLS0+CiAgPCEtLQogICAgVW5pdHM6IHVuaXQgb2YgbWVhc3VyZSBpbiB3aGljaCBjb29yZGluYXRlcyBpbiB0aGlzCiAgICBhcmVhIGFyZSBleHByZXNzZWQ7IGluaGVyaXRzIGZyb20gQXJlYVNldCBhbmQgQXJlYVNwZWMKICAtLT4KICA8IS0tIE90aGVyVW5pdHM6IFVzZXItZGVmaW5lZCB1bml0cyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJlYS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVuaXRzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2Fsc3BhaXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGluZWNvbHVtbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lcmFuZ2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGluZWNvbHVtbnBhaXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJ1bml0cyIgdHlwZT0ieHM6Tk1UT0tFTiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb29yZHMiIHVzZT0icmVxdWlyZWQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlkcmVxLmNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZWEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFyZWEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhcmVhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJlYXNldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJlYXNldCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJhcmVhIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZWFzZXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXJlYXNldC5lbGVtZW50IC0tPgogIDwhLS0gYnVnIG51bWJlci9zeW1ib2wgb3ZlcnJpZGUgb3IgaW5pdGlhbGl6YXRpb24gLS0+CiAgPCEtLQogICAgVW5pdHM6IHVuaXQgb2YgbWVhc3VyZSBpbiB3aGljaCBjb29yZGluYXRlcyBpbiB0aGlzCiAgICBhcmVhIGFyZSBleHByZXNzZWQ7IGluaGVyaXRzIGZyb20gQXJlYVNwZWMKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJlYXNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1bml0cyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNhbHNwYWlyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVjb2x1bW4iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGluZXJhbmdlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVjb2x1bW5wYWlyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVydW5pdHMiIHR5cGU9InhzOk5NVE9LRU4iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29vcmRzIiB1c2U9InJlcXVpcmVkIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpZHJlcS5jb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcmVhc2V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhcmVhc2V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXJlYXNldC5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgYXJlYXNwZWMuY29udGVudC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2dyYW1saXN0aW5nLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcm9ncmFtbGlzdGluZyIgc3Vic3RpdHV0aW9uR3JvdXA9ImxpbmVzcGVjaWZpYy5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb3JlZiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZWFubm90YXRpb24iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2dyYW1saXN0aW5nLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb2dyYW1saXN0aW5nLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2dyYW1saXN0aW5nLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0id2lkdGguYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lc3BlY2lmaWMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9ncmFtbGlzdGluZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJvZ3JhbWxpc3RpbmcuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcm9ncmFtbGlzdGluZy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpdGVyYWxsYXlvdXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxpdGVyYWxsYXlvdXQiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaW5lc3BlY2lmaWMuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29yZWYiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVhbm5vdGF0aW9uIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaXRlcmFsbGF5b3V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxpdGVyYWxsYXlvdXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGl0ZXJhbGxheW91dC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndpZHRoLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZXNwZWNpZmljLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgZGVmYXVsdD0ibm9ybWFsIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibW9ub3NwYWNlZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JtYWwiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpdGVyYWxsYXlvdXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpdGVyYWxsYXlvdXQuYXR0bGlzdCAtLT4KICA8IS0tIExpbmVBbm5vdGF0aW9uIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiBsaXRlcmFsbGF5b3V0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuY28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNjcmVlbmNvIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluZXNwZWNpZmljLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXJlYXNwZWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNjcmVlbiIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY2FsbG91dGxpc3QiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2NyZWVuY28uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuY28uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuY28uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzY3JlZW5jby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuY28uYXR0bGlzdCAtLT4KICA8IS0tIEFyZWFTcGVjIChkZWZpbmVkIGFib3ZlKSAtLT4KICA8IS0tIENhbGxvdXRMaXN0IChkZWZpbmVkIGFib3ZlIGluIExpc3RzKSAtLT4KICA8IS0tIGVuZCBvZiBzY3JlZW5jby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNjcmVlbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2NyZWVuIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluZXNwZWNpZmljLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY28iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvcmVmIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZXh0b2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lYW5ub3RhdGlvbiIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2NyZWVuLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNjcmVlbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzY3JlZW4uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ3aWR0aC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVzcGVjaWZpYy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNjcmVlbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuc2hvdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2NyZWVuc2hvdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImxpbmVzcGVjaWZpYy5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2NyZWVuaW5mbyIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImdyYXBoaWMiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpY2NvIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1lZGlhb2JqZWN0Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1lZGlhb2JqZWN0Y28iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2NyZWVuc2hvdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzY3JlZW5zaG90LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNjcmVlbnNob3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzY3JlZW5zaG90LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzY3JlZW5zaG90LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuc2hvdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNjcmVlbmluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNjcmVlbmluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzY3JlZW5pbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNjcmVlbmluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNjcmVlbmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNjcmVlbmluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzY3JlZW5pbmZvLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzY3JlZW5zaG90LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gRmlndXJlcyBldGMuIC4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmlndXJlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmaWd1cmUiIHN1YnN0aXR1dGlvbkdyb3VwPSJmb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6Z3JvdXAgcmVmPSJmaWd1cmUubWl4Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaWd1cmUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZmlndXJlLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgRmxvYXQ6IFdoZXRoZXIgdGhlIEZpZ3VyZSBpcyBzdXBwb3NlZCB0byBiZSByZW5kZXJlZAogICAgd2hlcmUgY29udmVuaWVudCAoeWVzICgxKSB2YWx1ZSkgb3IgYXQgdGhlIHBsYWNlIGl0IG9jY3VycwogICAgaW4gdGhlIHRleHQgKG5vICgwKSB2YWx1ZSwgdGhlIGRlZmF1bHQpCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZpZ3VyZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmxvYXQiIGRlZmF1bHQ9IjAiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdHN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBnd2lkZSIgdHlwZT0ieWVzb3Juby5hdHR2YWxzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZpZ3VyZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZmlndXJlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZmlndXJlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxmaWd1cmUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImluZm9ybWFsZmlndXJlIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmdyb3VwIHJlZj0iZmlndXJlLm1peCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5mb3JtYWxmaWd1cmUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxmaWd1cmUuZWxlbWVudCAtLT4KICA8IS0tCiAgICBGbG9hdDogV2hldGhlciB0aGUgRmlndXJlIGlzIHN1cHBvc2VkIHRvIGJlIHJlbmRlcmVkCiAgICB3aGVyZSBjb252ZW5pZW50ICh5ZXMgKDEpIHZhbHVlKSBvciBhdCB0aGUgcGxhY2UgaXQgb2NjdXJzCiAgICBpbiB0aGUgdGV4dCAobm8gKDApIHZhbHVlLCB0aGUgZGVmYXVsdCkKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxmaWd1cmUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZsb2F0IiBkZWZhdWx0PSIwIiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmxvYXRzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZ3dpZGUiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmZvcm1hbGZpZ3VyZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxmaWd1cmUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGZpZ3VyZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImdyYXBoaWNjby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3JhcGhpY2NvIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmVhc3BlYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY2FsbG91dGxpc3QiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3JhcGhpY2NvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdyYXBoaWNjby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJncmFwaGljY28uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJncmFwaGljY28ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdyYXBoaWNjby5hdHRsaXN0IC0tPgogIDwhLS0gQXJlYVNwZWMgKGRlZmluZWQgYWJvdmUgaW4gRXhhbXBsZXMpIC0tPgogIDwhLS0gQ2FsbG91dExpc3QgKGRlZmluZWQgYWJvdmUgaW4gTGlzdHMpIC0tPgogIDwhLS0gZW5kIG9mIGdyYXBoaWNjby5tb2R1bGUgLS0+CiAgPCEtLQogICAgR3JhcGhpY2FsIGRhdGEgY2FuIGJlIHRoZSBjb250ZW50IG9mIEdyYXBoaWMsIG9yIHlvdSBjYW4gcmVmZXJlbmNlCiAgICBhbiBleHRlcm5hbCBmaWxlIGVpdGhlciBhcyBhbiBlbnRpdHkgKEVudGl0cmVmKSBvciBhIGZpbGVuYW1lCiAgICAoRmlsZXJlZikuCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImdyYXBoaWMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImdyYXBoaWMiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImdyYXBoaWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3JhcGhpYy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJncmFwaGljLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3JhcGhpY3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJncmFwaGljLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBncmFwaGljLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3JhcGhpYy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZWdyYXBoaWMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImlubGluZWdyYXBoaWMiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmxpbmVvYmouY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlubGluZWdyYXBoaWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5saW5lZ3JhcGhpYy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmxpbmVncmFwaGljLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3JhcGhpY3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmxpbmVncmFwaGljLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmxpbmVncmFwaGljLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5saW5lZ3JhcGhpYy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lZGlhb2JqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZWRpYW9iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvYmplY3RpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVkaWFvYmplY3QubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImNhcHRpb24iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVkaWFvYmplY3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWVkaWFvYmplY3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWVkaWFvYmplY3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZWRpYW9iamVjdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWVkaWFvYmplY3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtZWRpYW9iamVjdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZW1lZGlhb2JqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmxpbmVtZWRpYW9iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImlubGluZW9iai5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvYmplY3RpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVkaWFvYmplY3QubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlubGluZW1lZGlhb2JqZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGlubGluZW1lZGlhb2JqZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZW1lZGlhb2JqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5saW5lbWVkaWFvYmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGlubGluZW1lZGlhb2JqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5saW5lbWVkaWFvYmplY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2aWRlb29iamVjdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idmlkZW9vYmplY3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJtZWRpYW9iamVjdC5taXgiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im9iamVjdGluZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InZpZGVvZGF0YSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2aWRlb29iamVjdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB2aWRlb29iamVjdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2aWRlb29iamVjdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZpZGVvb2JqZWN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB2aWRlb29iamVjdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZpZGVvb2JqZWN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXVkaW9vYmplY3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImF1ZGlvb2JqZWN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibWVkaWFvYmplY3QubWl4Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvYmplY3RpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhdWRpb2RhdGEiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXVkaW9vYmplY3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXVkaW9vYmplY3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXVkaW9vYmplY3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdWRpb29iamVjdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXVkaW9vYmplY3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhdWRpb29iamVjdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltYWdlb2JqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbWFnZW9iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9Im1lZGlhb2JqZWN0Lm1peCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ib2JqZWN0aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW1hZ2VkYXRhIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltYWdlb2JqZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGltYWdlb2JqZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltYWdlb2JqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW1hZ2VvYmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGltYWdlb2JqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW1hZ2VvYmplY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0ZXh0b2JqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0ZXh0b2JqZWN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibWVkaWFvYmplY3QubWl4Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvYmplY3RpbmZvIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icGhyYXNlIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRkYXRhIi8+CiAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGV4dG9iamVjdC5taXgiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGV4dG9iamVjdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0ZXh0b2JqZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRleHRvYmplY3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXh0b2JqZWN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0ZXh0b2JqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdGV4dG9iamVjdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9iamVjdGluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9iamVjdGluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvYmplY3RpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9iamVjdGluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib2JqZWN0aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9iamVjdGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9iamVjdGluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvYmplY3RpbmZvLm1vZHVsZSAtLT4KICA8IS0tCiAgICBFbnRpdHlSZWY6IE5hbWUgb2YgYW4gZXh0ZXJuYWwgZW50aXR5IGNvbnRhaW5pbmcgdGhlIGNvbnRlbnQKICAgIG9mIHRoZSBvYmplY3QgZGF0YQogIC0tPgogIDwhLS0KICAgIEZpbGVSZWY6IEZpbGVuYW1lLCBxdWFsaWZpZWQgYnkgYSBwYXRobmFtZSBpZiBkZXNpcmVkLAogICAgZGVzaWduYXRpbmcgdGhlIGZpbGUgY29udGFpbmluZyB0aGUgY29udGVudCBvZiB0aGUgb2JqZWN0IGRhdGEKICAtLT4KICA8IS0tIEZvcm1hdDogTm90YXRpb24gb2YgdGhlIGVsZW1lbnQgY29udGVudCwgaWYgYW55IC0tPgogIDwhLS0gU3JjQ3JlZGl0OiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgc291cmNlIG9mIHRoZSBpbWFnZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib2JqZWN0ZGF0YS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbnRpdHlyZWYiIHR5cGU9InhzOkVOVElUWSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaWxlcmVmIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvcm1hdCIgdHlwZT0ibm90YXRpb24uY2xhc3MiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3JjY3JlZGl0Ii8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmlkZW9kYXRhLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2aWRlb2RhdGEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2aWRlb2RhdGEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdmlkZW9kYXRhLmVsZW1lbnQgLS0+CiAgPCEtLSBXaWR0aDogU2FtZSBhcyBDQUxTIHJlcHJvd2lkIChkZXNpcmVkIHdpZHRoKSAtLT4KICA8IS0tIERlcHRoOiBTYW1lIGFzIENBTFMgcmVwcm9kZXAgKGRlc2lyZWQgZGVwdGgpIC0tPgogIDwhLS0KICAgIEFsaWduOiBTYW1lIGFzIENBTFMgaHBsYWNlIHdpdGggJ25vbmUnIHJlbW92ZWQ7ICNJTVBMSUVEIG1lYW5zCiAgICBhcHBsaWNhdGlvbi1zcGVjaWZpYwogIC0tPgogIDwhLS0gU2NhbGU6IENvbmZsYXRpb24gb2YgQ0FMUyBoc2NhbGUgYW5kIHZzY2FsZSAtLT4KICA8IS0tIFNjYWxlZml0OiBTYW1lIGFzIENBTFMgc2NhbGVmaXQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZpZGVvZGF0YS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGVudHdpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlcHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnRkZXB0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtaWRkbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm90dG9tIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjYWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjYWxlZml0IiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9iamVjdGRhdGEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2aWRlb2RhdGEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZpZGVvZGF0YS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZpZGVvZGF0YS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1ZGlvZGF0YS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXVkaW9kYXRhIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXVkaW9kYXRhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGF1ZGlvZGF0YS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdWRpb2RhdGEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvYmplY3RkYXRhLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXVkaW9kYXRhLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhdWRpb2RhdGEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhdWRpb2RhdGEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbWFnZWRhdGEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImltYWdlZGF0YSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltYWdlZGF0YS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbWFnZWRhdGEuZWxlbWVudCAtLT4KICA8IS0tIFdpZHRoOiBTYW1lIGFzIENBTFMgcmVwcm93aWQgKGRlc2lyZWQgd2lkdGgpIC0tPgogIDwhLS0gRGVwdGg6IFNhbWUgYXMgQ0FMUyByZXByb2RlcCAoZGVzaXJlZCBkZXB0aCkgLS0+CiAgPCEtLQogICAgQWxpZ246IFNhbWUgYXMgQ0FMUyBocGxhY2Ugd2l0aCAnbm9uZScgcmVtb3ZlZDsgI0lNUExJRUQgbWVhbnMKICAgIGFwcGxpY2F0aW9uLXNwZWNpZmljCiAgLS0+CiAgPCEtLSBTY2FsZTogQ29uZmxhdGlvbiBvZiBDQUxTIGhzY2FsZSBhbmQgdnNjYWxlIC0tPgogIDwhLS0gU2NhbGVmaXQ6IFNhbWUgYXMgQ0FMUyBzY2FsZWZpdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW1hZ2VkYXRhLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50d2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVwdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGVudGRlcHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NhbGUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NhbGVmaXQiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib2JqZWN0ZGF0YS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltYWdlZGF0YS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW1hZ2VkYXRhLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW1hZ2VkYXRhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGV4dGRhdGEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRleHRkYXRhIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGV4dGRhdGEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGV4dGRhdGEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGV4dGRhdGEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVuY29kaW5nIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvYmplY3RkYXRhLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGV4dGRhdGEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRleHRkYXRhLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdGV4dGRhdGEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZWRpYW9iamVjdGNvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZWRpYW9iamVjdGNvIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im9iamVjdGluZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImltYWdlb2JqZWN0Y28iLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbWFnZW9iamVjdGNvIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVkaWFvYmplY3Rjby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtZWRpYW9iamVjdGNvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lZGlhb2JqZWN0Y28uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZWRpYW9iamVjdGNvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtZWRpYW9iamVjdGNvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWVkaWFvYmplY3Rjby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltYWdlb2JqZWN0Y28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImltYWdlb2JqZWN0Y28iIHN1YnN0aXR1dGlvbkdyb3VwPSJtZWRpYW9iamVjdC5taXgiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmVhc3BlYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW1hZ2VvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNhbGxvdXRsaXN0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltYWdlb2JqZWN0Y28uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW1hZ2VvYmplY3Rjby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbWFnZW9iamVjdGNvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW1hZ2VvYmplY3Rjby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW1hZ2VvYmplY3Rjby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGltYWdlb2JqZWN0Y28ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIG1lZGlhb2JqZWN0LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gRXF1YXRpb25zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFRoaXMgUEUgcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9yIHJlcGxhY2luZyBlcXVhdGlvbiBjb250ZW50LCAtLT4KICA8IS0tIHBlcmhhcHMgYWRkaW5nIGEgbmV3IG9yIGRpZmZlcmVudCBtb2RlbCAoZS5nLiwgTWF0aE1MKSAtLT4KICA8eHM6Z3JvdXAgbmFtZT0iZXF1YXRpb24uY29udGVudCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhbHQiLz4KICAgICAgPHhzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJncmFwaGljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVkaWFvYmplY3QiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImlubGluZWVxdWF0aW9uLmNvbnRlbnQiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYWx0Ii8+CiAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmNvbXBsZXhUeXBlPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcXVhdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXF1YXRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJmb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbGVxdWF0aW9uIi8+CiAgICAgICAgICA8eHM6Z3JvdXAgcmVmPSJlcXVhdGlvbi5jb250ZW50Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVxdWF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVxdWF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVxdWF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdHN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVxdWF0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlcXVhdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVxdWF0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxlcXVhdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5mb3JtYWxlcXVhdGlvbiIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJlcXVhdGlvbi5jb250ZW50Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZm9ybWFsZXF1YXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxlcXVhdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmZvcm1hbGVxdWF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdHN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmZvcm1hbGVxdWF0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGVxdWF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxlcXVhdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZWVxdWF0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmxpbmVlcXVhdGlvbiIgc3Vic3RpdHV0aW9uR3JvdXA9ImlubGluZW9iai5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNvbXBsZXhDb250ZW50PgogICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0iaW5saW5lZXF1YXRpb24uY29udGVudCI+CiAgICAgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmxpbmVlcXVhdGlvbi5hdHRsaXN0Ii8+CiAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgIDwveHM6Y29tcGxleENvbnRlbnQ+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbmxpbmVlcXVhdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmxpbmVlcXVhdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlubGluZWVxdWF0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmxpbmVlcXVhdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGlubGluZWVxdWF0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWx0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhbHQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWx0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFsdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhbHQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhbHQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFsdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFsdC5tb2R1bGUgLS0+CiAgPCEtLSBUYWJsZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gQ2hvb3NlIGEgdGFibGUgbW9kZWwuIENBTFMgb3IgT0FTSVMgWE1MIEV4Y2hhbmdlIC0tPgogIDwhLS0gRG8gd2UgYWxsb3cgdGhlIEhUTUwgdGFibGUgbW9kZWwgYXMgd2VsbD8gLS0+CiAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CiAgPCEtLQogICAgeGh0bWx0YmwubW9kIGRlZmluZXMgSFRNTCB0YWJsZXMgYW5kIHNldHMgcGFyYW1ldGVyCiAgICBlbnRpdGllcyBzbyB0aGF0LCB3aGVuIHRoZSBDQUxTIHRhYmxlIG1vZHVsZSBpcyByZWFkLAogICAgd2UgZW5kIHVwIGFsbG93aW5nIGFueSB0YWJsZSB0byBiZSBDQUxTIG9yIEhUTUwuCiAgICBpLmUuIFRoaXMgaW5jbHVkZSBtdXN0IGNvbWUgZmlyc3QhCiAgLS0+CiAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CiAgPCEtLSBlbmQgb2YgYWxsb3cuaHRtbC50YWJsZXMgLS0+CiAgPCEtLSBBZGQgbGFiZWwgYW5kIHJvbGUgYXR0cmlidXRlcyB0byB0YWJsZSBhbmQgaW5mb3JtYWx0YWJsZSAtLT4KICA8IS0tCiAgICBBZGQgY29tbW9uIGF0dHJpYnV0ZXMgdG8gVGFibGUsIFRHcm91cCwgVEJvZHksIFRIZWFkLCBURm9vdCwgUm93LAogICAgRW50cnlUYmwsIGFuZCBFbnRyeSAoYW5kIEluZm9ybWFsVGFibGUgZWxlbWVudCkuCiAgLS0+CiAgPCEtLSBDb250ZW50IG1vZGVsIGZvciBUYWJsZS4gLS0+CiAgPCEtLSBBbGxvdyBlaXRoZXIgb2JqZWN0cyBvciBpbmxpbmVzOyBiZXdhcmUgb2YgUkVzIGJldHdlZW4gZWxlbWVudHMuIC0tPgogIDwhLS0gUmVmZXJlbmNlIENBTFMgVGFibGUgTW9kZWwgLS0+CiAgPCEtLSBlbmQgb2YgdGFibGUubW9kdWxlIC0tPgogIDwhLS0KICAgIE5vdGUgdGhhdCBJbmZvcm1hbFRhYmxlIGlzIGRlcGVuZGVudCBvbiBzb21lIG9mIHRoZSBlbnRpdHkKICAgIGRlY2xhcmF0aW9ucyB0aGF0IGN1c3RvbWl6ZSBUYWJsZS4KICAtLT4KICA8IS0tIHRoZSBmb2xsb3dpbmcgZW50aXR5IG1heSBoYXZlIGJlZW4gZGVjbGFyZWQgYnkgdGhlIFhIVE1MIHRhYmxlIG1vZHVsZSAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmZvcm1hbHRhYmxlIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImluZm9ybWFsLnRibC50YWJsZS5tZGwiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5mb3JtYWx0YWJsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbHRhYmxlLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgRnJhbWUsIENvbHNlcCwgYW5kIFJvd3NlcCBtdXN0IGJlIHJlcGVhdGVkIGJlY2F1c2UKICAgIHRoZXkgYXJlIG5vdCBpbiBlbnRpdGllcyBpbiB0aGUgdGFibGUgbW9kdWxlLgogIC0tPgogIDwhLS0KICAgIGluY2x1ZGVzIFRhYlN0eWxlLCBUb0NlbnRyeSwgU2hvcnRFbnRyeSwKICAgIE9yaWVudCwgUGdXaWRlCiAgLS0+CiAgPCEtLSBpbmNsdWRlcyBMYWJlbCAtLT4KICA8IS0tIGluY2x1ZGVzIGNvbW1vbiBhdHRyaWJ1dGVzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmZvcm1hbHRhYmxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmcmFtZSIgdHlwZT0idGJsLmZyYW1lLmF0dHZhbCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzZXAiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzZXAiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLnRhYmxlLmF0dHJpYnMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRibC50YWJsZS5hdHQiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZm9ybWFsdGFibGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbHRhYmxlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2FwdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2FwdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0ZXh0b2JqZWN0Lm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjYXB0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNhcHRpb24uZWxlbWVudCAtLT4KICA8IS0tIGF0dHJzIGNvbWVzIGZyb20gSFRNTCB0YWJsZXMgLi4uIC0tPgogIDwhLS0gY29tbW9uLmF0dHJpYiwgYnV0IHdpdGhvdXQgSUQgYmVjYXVzZSBJRCBpcyBpbiBhdHRycyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2FwdGlvbi5hdHRsaXN0LmNvbnRlbnQiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFuZy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlbWFwLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ieHJlZmxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2aXNpb25mbGFnLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZWZmZWN0aXZpdHkuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJkaXIuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4bWwtYmFzZS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNhcHRpb24ucm9sZS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF0dHJzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsZWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2FwdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNhcHRpb24uYXR0bGlzdC5jb250ZW50Ii8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjYXB0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2FwdGlvbi5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gU3lub3BzZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFN5bm9wc2lzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5bm9wc2lzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9InN5bm9wLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb3JlZiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGV4dG9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZWFubm90YXRpb24iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lc3BlY2lmaWMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeW5vcHNpcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIExpbmVBbm5vdGF0aW9uIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiBzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPCEtLSBDbWRTeW5vcHNpcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjbWRzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY21kc3lub3BzaXMiIHN1YnN0aXR1dGlvbkdyb3VwPSJzeW5vcC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iY29tbWFuZCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmciLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JvdXAiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2JyIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzeW5vcGZyYWdtZW50Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNtZHN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNtZHN5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU2VwY2hhcjogQ2hhcmFjdGVyIHRoYXQgc2hvdWxkIHNlcGFyYXRlIGNvbW1hbmQgYW5kIGFsbAogICAgdG9wLWxldmVsIGFyZ3VtZW50czsgYWx0ZXJuYXRlIHZhbHVlIG1pZ2h0IGJlIGUuZy4sICZEZWx0YTsKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY21kc3lub3BzaXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VwY2hhciIgZGVmYXVsdD0iICIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbWRsZW5ndGgiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNtZHN5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjbWRzeW5vcHNpcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNtZHN5bm9wc2lzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJnLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcmciPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JvdXAiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9wdGlvbiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3BmcmFnbWVudHJlZiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVwbGFjZWFibGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNiciIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJnLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFyZy5lbGVtZW50IC0tPgogIDwhLS0KICAgIENob2ljZTogV2hldGhlciBBcmcgbXVzdCBiZSBzdXBwbGllZDogT3B0IChvcHRpb25hbCB0bwogICAgc3VwcGx5LCBlLmcuIFthcmddOyB0aGUgZGVmYXVsdCksIFJlcSAocmVxdWlyZWQgdG8gc3VwcGx5LAogICAgZS5nLiB7YXJnfSksIG9yIFBsYWluIChyZXF1aXJlZCB0byBzdXBwbHksIGUuZy4gYXJnKQogIC0tPgogIDwhLS0KICAgIFJlcDogd2hldGhlciBBcmcgaXMgcmVwZWF0YWJsZTogTm9yZXBlYXQgKGUuZy4gYXJnIHdpdGhvdXQKICAgIGVsbGlwc2lzOyB0aGUgZGVmYXVsdCksIG9yIFJlcGVhdCAoZS5nLiBhcmcuLi4pCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFyZy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hvaWNlIiBkZWZhdWx0PSJvcHQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBsYWluIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcCIgZGVmYXVsdD0ibm9yZXBlYXQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JlcGVhdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXBlYXQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXJnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXJnLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3JvdXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imdyb3VwIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmciLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdyb3VwIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvcHRpb24iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wZnJhZ21lbnRyZWYiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlcGxhY2VhYmxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzYnIiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdyb3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdyb3VwLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQ2hvaWNlOiBXaGV0aGVyIEdyb3VwIG11c3QgYmUgc3VwcGxpZWQ6IE9wdCAob3B0aW9uYWwgdG8KICAgIHN1cHBseSwgZS5nLiAgW2cxfGcyfGczXTsgdGhlIGRlZmF1bHQpLCBSZXEgKHJlcXVpcmVkIHRvCiAgICBzdXBwbHksIGUuZy4gIHtnMXxnMnxnM30pLCBQbGFpbiAocmVxdWlyZWQgdG8gc3VwcGx5LAogICAgZS5nLiAgZzF8ZzJ8ZzMpLCBPcHRNdWx0IChjYW4gc3VwcGx5IHplcm8gb3IgbW9yZSwgZS5nLgogICAgW1tnMXxnMnxnM11dKSwgb3IgUmVxTXVsdCAobXVzdCBzdXBwbHkgb25lIG9yIG1vcmUsIGUuZy4KICAgIHt7ZzF8ZzJ8ZzN9fSkKICAtLT4KICA8IS0tCiAgICBSZXA6IHdoZXRoZXIgR3JvdXAgaXMgcmVwZWF0YWJsZTogTm9yZXBlYXQgKGUuZy4gZ3JvdXAKICAgIHdpdGhvdXQgZWxsaXBzaXM7IHRoZSBkZWZhdWx0KSwgb3IgUmVwZWF0IChlLmcuIGdyb3VwLi4uKQogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJncm91cC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hvaWNlIiBkZWZhdWx0PSJvcHQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBsYWluIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcCIgZGVmYXVsdD0ibm9yZXBlYXQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JlcGVhdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXBlYXQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdyb3VwLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBncm91cC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdyb3VwLm1vZHVsZSAtLT4KICA8IS0tIFN5bm9wc2lzIGJyZWFrIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzYnIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNiciI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNici5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzYnIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2JyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2JyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzYnIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzYnIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeW5vcGZyYWdtZW50cmVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzeW5vcGZyYWdtZW50cmVmIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bm9wZnJhZ21lbnRyZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3lub3BmcmFnbWVudHJlZi5lbGVtZW50IC0tPgogIDwhLS0KICAgIHRvIFN5bm9wRnJhZ21lbnQgb2YgY29tcGxleCBzeW5vcHNpcwogICAgbWF0ZXJpYWwgZm9yIHNlcGFyYXRlIHJlZmVyZW5jaW5nCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5bm9wZnJhZ21lbnRyZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcmVxLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3lub3BmcmFnbWVudHJlZi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3lub3BmcmFnbWVudHJlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnRyZWYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeW5vcGZyYWdtZW50LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzeW5vcGZyYWdtZW50Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmciLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdyb3VwIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeW5vcGZyYWdtZW50LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3lub3BmcmFnbWVudC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlkcmVxLmNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bm9wZnJhZ21lbnQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzeW5vcGZyYWdtZW50Lm1vZHVsZSAtLT4KICA8IS0tIENvbW1hbmQgKGRlZmluZWQgaW4gdGhlIElubGluZXMgc2VjdGlvbiwgYmVsb3cpIC0tPgogIDwhLS0gT3B0aW9uIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIFJlcGxhY2VhYmxlIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiBjbWRzeW5vcHNpcy5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIEZ1bmNTeW5vcHNpcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZnVuY3N5bm9wc2lzIiBzdWJzdGl0dXRpb25Hcm91cD0ic3lub3AuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZ1bmNzeW5vcHNpc2luZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZ1bmNwcm90b3R5cGUiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNzeW5vcHNpcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY3N5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jc3lub3BzaXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZ1bmNzeW5vcHNpcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZ1bmNzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNzeW5vcHNpc2luZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZ1bmNzeW5vcHNpc2luZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZXh0b2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lYW5ub3RhdGlvbiIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY3N5bm9wc2lzaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXNpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNzeW5vcHNpc2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lc3BlY2lmaWMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jc3lub3BzaXNpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXNpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZnVuY3N5bm9wc2lzaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNwcm90b3R5cGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZ1bmNwcm90b3R5cGUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZnVuY2RlZiIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InZvaWQiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idmFyYXJncyIvPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhbWRlZiIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idmFyYXJncyIvPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNwcm90b3R5cGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZnVuY3Byb3RvdHlwZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jcHJvdG90eXBlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY3Byb3RvdHlwZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZnVuY3Byb3RvdHlwZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZ1bmNwcm90b3R5cGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jZGVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmdW5jZGVmIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0eXBlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXBsYWNlYWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZnVuY3Rpb24iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNkZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZnVuY2RlZi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jZGVmLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY2RlZi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZnVuY2RlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZ1bmNkZWYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2b2lkLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2b2lkIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idm9pZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB2b2lkLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZvaWQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2b2lkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB2b2lkLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygdm9pZC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZhcmFyZ3Mucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InZhcmFyZ3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2YXJhcmdzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZhcmFyZ3MuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmFyYXJncy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZhcmFyZ3Mucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZhcmFyZ3MuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB2YXJhcmdzLm1vZHVsZSAtLT4KICA8IS0tCiAgICBQcm9jZXNzaW5nIGFzc3VtZXMgdGhhdCBvbmx5IG9uZSBQYXJhbWV0ZXIgd2lsbCBhcHBlYXIgaW4gYQogICAgUGFyYW1EZWYsIGFuZCB0aGF0IEZ1bmNQYXJhbXMgd2lsbCBiZSB1c2VkIGF0IG1vc3Qgb25jZSwgZm9yCiAgICBwcm92aWRpbmcgaW5mb3JtYXRpb24gb24gdGhlICJpbm5lciBwYXJhbWV0ZXJzIiBmb3IgcGFyYW1ldGVycyB0aGF0CiAgICBhcmUgcG9pbnRlcnMgdG8gZnVuY3Rpb25zLgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJhbWRlZi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGFyYW1kZWYiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImluaXRpYWxpemVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0eXBlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXBsYWNlYWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYW1ldGVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmdW5jcGFyYW1zIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJhbWRlZi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwYXJhbWRlZi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJhbWRlZi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hvaWNlIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3B0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlcSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFyYW1kZWYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhcmFtZGVmLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcGFyYW1kZWYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jcGFyYW1zLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmdW5jcGFyYW1zIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY3BhcmFtcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmdW5jcGFyYW1zLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNwYXJhbXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jcGFyYW1zLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmdW5jcGFyYW1zLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZnVuY3BhcmFtcy5tb2R1bGUgLS0+CiAgPCEtLSBMaW5lQW5ub3RhdGlvbiAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBSZXBsYWNlYWJsZSAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBGdW5jdGlvbiAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBQYXJhbWV0ZXIgKGRlZmluZWQgaW4gdGhlIElubGluZXMgc2VjdGlvbiwgYmVsb3cpIC0tPgogIDwhLS0gZW5kIG9mIGZ1bmNzeW5vcHNpcy5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIENsYXNzU3lub3BzaXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjbGFzc3N5bm9wc2lzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjbGFzc3N5bm9wc2lzIiBzdWJzdGl0dXRpb25Hcm91cD0ic3lub3AuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9vY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ib29pbnRlcmZhY2UiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ib29leGNlcHRpb24iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbGFzc3N5bm9wc2lzaW5mbyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmaWVsZHN5bm9wc2lzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1ldGhvZC5zeW5vcC5jbGFzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjbGFzc3N5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNsYXNzc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2xhc3NzeW5vcHNpcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFuZ3VhZ2UiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIGRlZmF1bHQ9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2xhc3MiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaW50ZXJmYWNlIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjbGFzc3N5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjbGFzc3N5bm9wc2lzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2xhc3NzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNsYXNzc3lub3BzaXNpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjbGFzc3N5bm9wc2lzaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVhbm5vdGF0aW9uIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjbGFzc3N5bm9wc2lzaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjbGFzc3N5bm9wc2lzaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjbGFzc3N5bm9wc2lzaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVzcGVjaWZpYy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNsYXNzc3lub3BzaXNpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjbGFzc3N5bm9wc2lzaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNsYXNzc3lub3BzaXNpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib29jbGFzcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib29jbGFzcyIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtb2RpZmllciIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYWNrYWdlIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbGFzc25hbWUiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib29jbGFzcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvb2NsYXNzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9vY2xhc3MuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvb2NsYXNzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvb2NsYXNzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb29jbGFzcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9vaW50ZXJmYWNlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvb2ludGVyZmFjZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtb2RpZmllciIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYWNrYWdlIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbnRlcmZhY2VuYW1lIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9vaW50ZXJmYWNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9vaW50ZXJmYWNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9vaW50ZXJmYWNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib29pbnRlcmZhY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9vaW50ZXJmYWNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb29pbnRlcmZhY2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvb2V4Y2VwdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib29leGNlcHRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibW9kaWZpZXIiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icGFja2FnZSIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZXhjZXB0aW9ubmFtZSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvb2V4Y2VwdGlvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvb2V4Y2VwdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvb2V4Y2VwdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9vZXhjZXB0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvb2V4Y2VwdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG9vZXhjZXB0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW9kaWZpZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1vZGlmaWVyIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb2RpZmllci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtb2RpZmllci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtb2RpZmllci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vZGlmaWVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtb2RpZmllci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1vZGlmaWVyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW50ZXJmYWNlbmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW50ZXJmYWNlbmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImludGVyZmFjZW5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW50ZXJmYWNlbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbnRlcmZhY2VuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW50ZXJmYWNlbmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW50ZXJmYWNlbmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGludGVyZmFjZW5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJleGNlcHRpb25uYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJleGNlcHRpb25uYW1lIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJleGNlcHRpb25uYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGV4Y2VwdGlvbm5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXhjZXB0aW9ubmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImV4Y2VwdGlvbm5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGV4Y2VwdGlvbm5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBleGNlcHRpb25uYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmllbGRzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmllbGRzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9InN5bm9wLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibW9kaWZpZXIiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idHlwZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idmFybmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJpbml0aWFsaXplciIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaWVsZHN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZpZWxkc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmllbGRzeW5vcHNpcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFuZ3VhZ2UiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZpZWxkc3lub3BzaXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZpZWxkc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmaWVsZHN5bm9wc2lzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5pdGlhbGl6ZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImluaXRpYWxpemVyIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbml0aWFsaXplci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbml0aWFsaXplci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbml0aWFsaXplci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluaXRpYWxpemVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbml0aWFsaXplci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluaXRpYWxpemVyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uc3RydWN0b3JzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uc3RydWN0b3JzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9Im1ldGhvZC5zeW5vcC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im1ldGhvZG5hbWUiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWV0aG9kcGFyYW0iLz4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ2b2lkIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJleGNlcHRpb25uYW1lIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnN0cnVjdG9yc3lub3BzaXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29uc3RydWN0b3JzeW5vcHNpcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25zdHJ1Y3RvcnN5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5ndWFnZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uc3RydWN0b3JzeW5vcHNpcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29uc3RydWN0b3JzeW5vcHNpcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbnN0cnVjdG9yc3lub3BzaXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJkZXN0cnVjdG9yc3lub3BzaXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImRlc3RydWN0b3JzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9Im1ldGhvZC5zeW5vcC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im1ldGhvZG5hbWUiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWV0aG9kcGFyYW0iLz4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ2b2lkIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJleGNlcHRpb25uYW1lIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRlc3RydWN0b3JzeW5vcHNpcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBkZXN0cnVjdG9yc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGVzdHJ1Y3RvcnN5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5ndWFnZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGVzdHJ1Y3RvcnN5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBkZXN0cnVjdG9yc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBkZXN0cnVjdG9yc3lub3BzaXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZXRob2RzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWV0aG9kc3lub3BzaXMiIHN1YnN0aXR1dGlvbkdyb3VwPSJtZXRob2Quc3lub3AuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idHlwZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2b2lkIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtZXRob2RuYW1lIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1ldGhvZHBhcmFtIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idm9pZCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZXhjZXB0aW9ubmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibW9kaWZpZXIiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWV0aG9kc3lub3BzaXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWV0aG9kc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWV0aG9kc3lub3BzaXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxhbmd1YWdlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZXRob2RzeW5vcHNpcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWV0aG9kc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtZXRob2RzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1ldGhvZG5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1ldGhvZG5hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1ldGhvZG5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWV0aG9kbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZXRob2RuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWV0aG9kbmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWV0aG9kbmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1ldGhvZG5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZXRob2RwYXJhbS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWV0aG9kcGFyYW0iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0eXBlIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhbWV0ZXIiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImluaXRpYWxpemVyIi8+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmdW5jcGFyYW1zIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZXRob2RwYXJhbS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtZXRob2RwYXJhbS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZXRob2RwYXJhbS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hvaWNlIiBkZWZhdWx0PSJyZXEiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBsYWluIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcCIgZGVmYXVsdD0ibm9yZXBlYXQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JlcGVhdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXBlYXQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1ldGhvZHBhcmFtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtZXRob2RwYXJhbS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1ldGhvZHBhcmFtLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBjbGFzc3N5bm9wc2lzLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIERvY3VtZW50IGluZm9ybWF0aW9uIGVudGl0aWVzIGFuZCBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgVGhlIGRvY3VtZW50IGluZm9ybWF0aW9uIGVsZW1lbnRzIGluY2x1ZGUgc29tZSBlbGVtZW50cyB0aGF0IGFyZQogICAgY3VycmVudGx5IHVzZWQgb25seSBpbiB0aGUgZG9jdW1lbnQgaGllcmFyY2h5IG1vZHVsZS4gVGhleSBhcmUKICAgIGRlZmluZWQgaGVyZSBzbyB0aGF0IHRoZXkgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHVzZSBpbiBjdXN0b21pemVkCiAgICBkb2N1bWVudCBoaWVyYXJjaGllcy4KICAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBBY2tubyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhY2tuby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYWNrbm8iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhY2tuby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhY2tuby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhY2tuby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFja25vLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhY2tuby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFja25vLm1vZHVsZSAtLT4KICA8IS0tIEFkZHJlc3MgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFkZHJlc3Mucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFkZHJlc3MiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icGVyc29ubmFtZSIvPgogICAgICAgIDx4czpncm91cCByZWY9InBlcnNvbi5pZGVudC5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN0cmVldCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icG9iIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwb3N0Y29kZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY2l0eSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3RhdGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvdW50cnkiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBob25lIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmYXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtYWlsIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvdGhlcmFkZHIiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFkZHJlc3MuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWRkcmVzcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhZGRyZXNzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZXNwZWNpZmljLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRkcmVzcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWRkcmVzcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFkZHJlc3MubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdHJlZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN0cmVldCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0cmVldC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdHJlZXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RyZWV0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RyZWV0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdHJlZXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdHJlZXQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwb2Iucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBvYiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBvYi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwb2IuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icG9iLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icG9iLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwb2IuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwb2IubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwb3N0Y29kZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icG9zdGNvZGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwb3N0Y29kZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwb3N0Y29kZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwb3N0Y29kZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBvc3Rjb2RlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwb3N0Y29kZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBvc3Rjb2RlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2l0eS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2l0eSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdHkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2l0eS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXR5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0eS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2l0eS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNpdHkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdGF0ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3RhdGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0ZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdGF0ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdGF0ZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXRlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdGF0ZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN0YXRlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY291bnRyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY291bnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvdW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY291bnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY291bnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY291bnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvdW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwaG9uZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGhvbmUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwaG9uZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwaG9uZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwaG9uZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBob25lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwaG9uZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBob25lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmF4LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmYXgiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmYXguYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZmF4LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZheC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZheC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZmF4LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZmF4Lm1vZHVsZSAtLT4KICA8IS0tIEVtYWlsIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3RoZXJhZGRyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvdGhlcmFkZHIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvdGhlcmFkZHIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3RoZXJhZGRyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVyYWRkci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im90aGVyYWRkci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb3RoZXJhZGRyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb3RoZXJhZGRyLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBhZGRyZXNzLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gQWZmaWxpYXRpb24gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWZmaWxpYXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFmZmlsaWF0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzaG9ydGFmZmlsIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJqb2J0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvcmduYW1lIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJvcmdkaXYiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFkZHJlc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWZmaWxpYXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWZmaWxpYXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWZmaWxpYXRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhZmZpbGlhdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWZmaWxpYXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhZmZpbGlhdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNob3J0YWZmaWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNob3J0YWZmaWwiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaG9ydGFmZmlsLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNob3J0YWZmaWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2hvcnRhZmZpbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNob3J0YWZmaWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNob3J0YWZmaWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzaG9ydGFmZmlsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iam9idGl0bGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImpvYnRpdGxlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iam9idGl0bGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygam9idGl0bGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iam9idGl0bGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJqb2J0aXRsZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygam9idGl0bGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBqb2J0aXRsZS5tb2R1bGUgLS0+CiAgPCEtLSBPcmdOYW1lIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcmdkaXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9yZ2RpdiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9yZ2Rpdi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvcmdkaXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3JnZGl2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3JnZGl2LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvcmdkaXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvcmdkaXYubW9kdWxlIC0tPgogIDwhLS0gQWRkcmVzcyAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8IS0tIGVuZCBvZiBhZmZpbGlhdGlvbi5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIEFydFBhZ2VOdW1zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFydHBhZ2VudW1zLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcnRwYWdlbnVtcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFydHBhZ2VudW1zLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFydHBhZ2VudW1zLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFydHBhZ2VudW1zLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJ0cGFnZW51bXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFydHBhZ2VudW1zLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXJ0cGFnZW51bXMubW9kdWxlIC0tPgogIDwhLS0gUGVyc29uTmFtZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGVyc29ubmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGVyc29ubmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJob25vcmlmaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZpcnN0bmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3VybmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZWFnZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ib3RoZXJuYW1lIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwZXJzb25uYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBlcnNvbm5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGVyc29ubmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBlcnNvbm5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBlcnNvbm5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwZXJzb25uYW1lLm1vZHVsZSAtLT4KICA8IS0tIEF1dGhvciAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXV0aG9yIiBzdWJzdGl0dXRpb25Hcm91cD0iZG9jaW5mby5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBlcnNvbm5hbWUiLz4KICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwZXJzb24uaWRlbnQubWl4Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icGVyc29uYmx1cmIiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZW1haWwiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYWRkcmVzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdXRob3IuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXV0aG9yLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1dGhvci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXV0aG9yLmF0dGxpc3QgLS0+CiAgPCEtLSAoc2VlICJQZXJzb25hbCBpZGVudGl0eSBlbGVtZW50cyIgZm9yICVwZXJzb24uaWRlbnQubWl4OykgLS0+CiAgPCEtLSBlbmQgb2YgYXV0aG9yLm1vZHVsZSAtLT4KICA8IS0tIEF1dGhvckdyb3VwIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvcmdyb3VwLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhdXRob3Jncm91cCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlZGl0b3IiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbGxhYiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29ycGF1dGhvciIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29ycGNyZWRpdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ib3RoZXJjcmVkaXQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1dGhvcmdyb3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGF1dGhvcmdyb3VwLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvcmdyb3VwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXV0aG9yZ3JvdXAucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGF1dGhvcmdyb3VwLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXV0aG9yZ3JvdXAubW9kdWxlIC0tPgogIDwhLS0gQXV0aG9yIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDwhLS0gRWRpdG9yIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xsYWIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbGxhYiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbGxhYm5hbWUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFmZmlsaWF0aW9uIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbGxhYi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb2xsYWIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sbGFiLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sbGFiLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb2xsYWIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb2xsYWIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xsYWJuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb2xsYWJuYW1lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sbGFibmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb2xsYWJuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbGxhYm5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb2xsYWJuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb2xsYWJuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29sbGFibmFtZS5tb2R1bGUgLS0+CiAgPCEtLSBBZmZpbGlhdGlvbiAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8IS0tIGVuZCBvZiBjb2xsYWIuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBDb3JwQXV0aG9yIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDwhLS0gT3RoZXJDcmVkaXQgKGRlZmluZWQgZWxzZXdoZXJlIGluIHRoaXMgc2VjdGlvbikgLS0+CiAgPCEtLSBlbmQgb2YgYXV0aG9yZ3JvdXAuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBBdXRob3JJbml0aWFscyAuLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdXRob3Jpbml0aWFscy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXV0aG9yaW5pdGlhbHMiIHN1YnN0aXR1dGlvbkdyb3VwPSJkb2NpbmZvLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdXRob3Jpbml0aWFscy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhdXRob3Jpbml0aWFscy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdXRob3Jpbml0aWFscy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1dGhvcmluaXRpYWxzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhdXRob3Jpbml0aWFscy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGF1dGhvcmluaXRpYWxzLm1vZHVsZSAtLT4KICA8IS0tIENvbmZHcm91cCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZncm91cC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uZmdyb3VwIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbmZkYXRlcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29uZnRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb25mbnVtIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZGRyZXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb25mc3BvbnNvciIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZmdyb3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbmZncm91cC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mZ3JvdXAuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mZ3JvdXAucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbmZncm91cC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbmZncm91cC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZkYXRlcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uZmRhdGVzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZmRhdGVzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbmZkYXRlcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mZGF0ZXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mZGF0ZXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbmZkYXRlcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbmZkYXRlcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZ0aXRsZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uZnRpdGxlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZnRpdGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbmZ0aXRsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mdGl0bGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mdGl0bGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbmZ0aXRsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbmZ0aXRsZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZudW0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbmZudW0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mbnVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbmZudW0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uZm51bS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZudW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbmZudW0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb25mbnVtLm1vZHVsZSAtLT4KICA8IS0tIEFkZHJlc3MgKGRlZmluZWQgZWxzZXdoZXJlIGluIHRoaXMgc2VjdGlvbikgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZzcG9uc29yLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb25mc3BvbnNvciI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZzcG9uc29yLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbmZzcG9uc29yLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbmZzcG9uc29yLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZnNwb25zb3Iucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbmZzcG9uc29yLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29uZnNwb25zb3IubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGNvbmZncm91cC5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIENvbnRyYWN0TnVtIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnRyYWN0bnVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb250cmFjdG51bSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnRyYWN0bnVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbnRyYWN0bnVtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnRyYWN0bnVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29udHJhY3RudW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbnRyYWN0bnVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29udHJhY3RudW0ubW9kdWxlIC0tPgogIDwhLS0gQ29udHJhY3RTcG9uc29yIC4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29udHJhY3RzcG9uc29yLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb250cmFjdHNwb25zb3IiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb250cmFjdHNwb25zb3IuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29udHJhY3RzcG9uc29yLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnRyYWN0c3BvbnNvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnRyYWN0c3BvbnNvci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29udHJhY3RzcG9uc29yLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29udHJhY3RzcG9uc29yLm1vZHVsZSAtLT4KICA8IS0tIENvcHlyaWdodCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcHlyaWdodC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29weXJpZ2h0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InllYXIiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImhvbGRlciIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3B5cmlnaHQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29weXJpZ2h0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcHlyaWdodC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcHlyaWdodC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29weXJpZ2h0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29weXJpZ2h0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ieWVhci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ieWVhciI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InllYXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgeWVhci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ5ZWFyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ieWVhci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgeWVhci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHllYXIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJob2xkZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImhvbGRlciI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImhvbGRlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBob2xkZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaG9sZGVyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaG9sZGVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBob2xkZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBob2xkZXIubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGNvcHlyaWdodC5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIENvcnBBdXRob3IgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcnBhdXRob3Iucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvcnBhdXRob3IiIHN1YnN0aXR1dGlvbkdyb3VwPSJkb2NpbmZvLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3JwYXV0aG9yLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvcnBhdXRob3IuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29ycGF1dGhvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcnBhdXRob3Iucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvcnBhdXRob3IuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb3JwYXV0aG9yLm1vZHVsZSAtLT4KICA8IS0tIENvcnBDcmVkaXQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29ycGNyZWRpdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29ycGNyZWRpdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcnBjcmVkaXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29ycGNyZWRpdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3JwY3JlZGl0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImdyYXBoaWNkZXNpZ25lciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcm9kdWN0aW9uZWRpdG9yIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvcHllZGl0b3IiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idGVjaG5pY2FsZWRpdG9yIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRyYW5zbGF0b3IiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcnBjcmVkaXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvcnBjcmVkaXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb3JwY3JlZGl0Lm1vZHVsZSAtLT4KICA8IS0tIENvcnBOYW1lIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29ycG5hbWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3JwbmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb3JwbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3JwbmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcnBuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29ycG5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvcnBuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29ycG5hbWUubW9kdWxlIC0tPgogIDwhLS0gRGF0ZSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGF0ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZGF0ZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRhdGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZGF0ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJkYXRlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGF0ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZGF0ZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGRhdGUubW9kdWxlIC0tPgogIDwhLS0gRWRpdGlvbiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZWRpdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZWRpdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVkaXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZWRpdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlZGl0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZWRpdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZWRpdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVkaXRpb24ubW9kdWxlIC0tPgogIDwhLS0gRWRpdG9yIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZWRpdG9yLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJlZGl0b3IiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icGVyc29ubmFtZSIvPgogICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBlcnNvbi5pZGVudC5taXgiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwZXJzb25ibHVyYiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbWFpbCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZGRyZXNzIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVkaXRvci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlZGl0b3IuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZWRpdG9yLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZWRpdG9yLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlZGl0b3IuYXR0bGlzdCAtLT4KICA8IS0tIChzZWUgIlBlcnNvbmFsIGlkZW50aXR5IGVsZW1lbnRzIiBmb3IgJXBlcnNvbi5pZGVudC5taXg7KSAtLT4KICA8IS0tIGVuZCBvZiBlZGl0b3IubW9kdWxlIC0tPgogIDwhLS0gSVNCTiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaXNibi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaXNibiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlzYm4uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaXNibi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpc2JuLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXNibi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaXNibi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGlzYm4ubW9kdWxlIC0tPgogIDwhLS0gSVNTTiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaXNzbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaXNzbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imlzc24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaXNzbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpc3NuLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXNzbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaXNzbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGlzc24ubW9kdWxlIC0tPgogIDwhLS0gQmlibGlvSWQgLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpby5jbGFzcy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InVyaSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkb2kiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXNibiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpc3NuIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpYnJhcnlvZmNvbmdyZXNzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InB1Ym51bWJlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcmNsYXNzIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvaWQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb2lkIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvaWQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmlibGlvaWQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvaWQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW8uY2xhc3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9pZC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmlibGlvaWQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9pZC5tb2R1bGUgLS0+CiAgPCEtLSBDaXRlQmlibGlvSWQgLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdGViaWJsaW9pZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2l0ZWJpYmxpb2lkIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0ZWJpYmxpb2lkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNpdGViaWJsaW9pZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRlYmlibGlvaWQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW8uY2xhc3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaXRlYmlibGlvaWQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNpdGViaWJsaW9pZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNpdGViaWJsaW9pZC5tb2R1bGUgLS0+CiAgPCEtLSBCaWJsaW9Tb3VyY2UgLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb3NvdXJjZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvc291cmNlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvc291cmNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb3NvdXJjZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9zb3VyY2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW8uY2xhc3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9zb3VyY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb3NvdXJjZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb3NvdXJjZS5tb2R1bGUgLS0+CiAgPCEtLSBCaWJsaW9SZWxhdGlvbiAuLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvcmVsYXRpb24udHlwZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXN2ZXJzaW9ub2YiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaGFzdmVyc2lvbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpc3JlcGxhY2VkYnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVwbGFjZXMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXNyZXF1aXJlZGJ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlcXVpcmVzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlzcGFydG9mIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imhhc3BhcnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXNyZWZlcmVuY2VkYnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVmZXJlbmNlcyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpc2Zvcm1hdG9mIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imhhc2Zvcm1hdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlcnR5cGUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJ0eXBlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvcmVsYXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb3JlbGF0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvcmVsYXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmlibGlvcmVsYXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvcmVsYXRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW8uY2xhc3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9yZWxhdGlvbi50eXBlLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvcmVsYXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb3JlbGF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYmlibGlvcmVsYXRpb24ubW9kdWxlIC0tPgogIDwhLS0gQmlibGlvQ292ZXJhZ2UgLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2NvdmVyYWdlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9jb3ZlcmFnZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2NvdmVyYWdlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2NvdmVyYWdlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2NvdmVyYWdlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGF0aWFsIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGNtaXBvaW50Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlzbzMxNjYiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGNtaWJveCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0Z24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXJzcGF0aWFsIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVyc3BhdGlhbCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZW1wb3JhbCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRjbWlwZXJpb2QiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idzNjLWR0ZiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlcnRlbXBvcmFsIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVydGVtcG9yYWwiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2NvdmVyYWdlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9jb3ZlcmFnZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb2NvdmVyYWdlLm1vZHVsZSAtLT4KICA8IS0tIEludlBhcnROdW1iZXIgLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImludnBhcnRudW1iZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImludnBhcnRudW1iZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbnZwYXJ0bnVtYmVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGludnBhcnRudW1iZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW52cGFydG51bWJlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImludnBhcnRudW1iZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGludnBhcnRudW1iZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbnZwYXJ0bnVtYmVyLm1vZHVsZSAtLT4KICA8IS0tIElzc3VlTnVtIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imlzc3VlbnVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJpc3N1ZW51bSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imlzc3VlbnVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGlzc3VlbnVtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imlzc3VlbnVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXNzdWVudW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGlzc3VlbnVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaXNzdWVudW0ubW9kdWxlIC0tPgogIDwhLS0gTGVnYWxOb3RpY2UgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGVnYWxub3RpY2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxlZ2Fsbm90aWNlIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibGVnYWxub3RpY2UubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxlZ2Fsbm90aWNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxlZ2Fsbm90aWNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxlZ2Fsbm90aWNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGVnYWxub3RpY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxlZ2Fsbm90aWNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGVnYWxub3RpY2UubW9kdWxlIC0tPgogIDwhLS0gTW9kZVNwZWMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW9kZXNwZWMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1vZGVzcGVjIiBzdWJzdGl0dXRpb25Hcm91cD0iZG9jaW5mby5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9kZXNwZWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbW9kZXNwZWMuZWxlbWVudCAtLT4KICA8IS0tCiAgICBBcHBsaWNhdGlvbjogVHlwZSBvZiBhY3Rpb24gcmVxdWlyZWQgZm9yIGNvbXBsZXRpb24KICAgIG9mIHRoZSBsaW5rcyB0byB3aGljaCB0aGUgTW9kZVNwZWMgaXMgcmVsZXZhbnQgKGUuZy4sCiAgICByZXRyaWV2YWwgcXVlcnkpCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1vZGVzcGVjLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcHBsaWNhdGlvbiIgdHlwZT0ibm90YXRpb24uY2xhc3MiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vZGVzcGVjLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtb2Rlc3BlYy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1vZGVzcGVjLm1vZHVsZSAtLT4KICA8IS0tIE9yZ05hbWUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9yZ25hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9yZ25hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9yZ25hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3JnbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcmduYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvcnBvcmF0aW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vbnByb2ZpdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb25zb3J0aXVtIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImluZm9ybWFsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVyY2xhc3MiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9yZ25hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9yZ25hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvcmduYW1lLm1vZHVsZSAtLT4KICA8IS0tIE90aGVyQ3JlZGl0IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVyY3JlZGl0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvdGhlcmNyZWRpdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwZXJzb25uYW1lIi8+CiAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGVyc29uLmlkZW50Lm1peCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBlcnNvbmJsdXJiIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtYWlsIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFkZHJlc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3RoZXJjcmVkaXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3RoZXJjcmVkaXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3RoZXJjcmVkaXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZ3JhcGhpY2Rlc2lnbmVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InByb2R1Y3Rpb25lZGl0b3IiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29weWVkaXRvciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0ZWNobmljYWxlZGl0b3IiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idHJhbnNsYXRvciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3RoZXJjcmVkaXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG90aGVyY3JlZGl0LmF0dGxpc3QgLS0+CiAgPCEtLSAoc2VlICJQZXJzb25hbCBpZGVudGl0eSBlbGVtZW50cyIgZm9yICVwZXJzb24uaWRlbnQubWl4OykgLS0+CiAgPCEtLSBlbmQgb2Ygb3RoZXJjcmVkaXQubW9kdWxlIC0tPgogIDwhLS0gUGFnZU51bXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFnZW51bXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBhZ2VudW1zIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFnZW51bXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGFnZW51bXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFnZW51bXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcGFnZW51bXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwYWdlbnVtcy5tb2R1bGUgLS0+CiAgPCEtLSBQZXJzb25hbCBpZGVudGl0eSBlbGVtZW50cyAuLi4uLi4uIC0tPgogIDwhLS0KICAgIFRoZXNlIGVsZW1lbnRzIGFyZSB1c2VkIG9ubHkgd2l0aGluIEF1dGhvciwgRWRpdG9yLCBhbmQKICAgIE90aGVyQ3JlZGl0LgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb250cmliLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb250cmliIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29udHJpYi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb250cmliLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnRyaWIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb250cmliLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb250cmliLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29udHJpYi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZpcnN0bmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmlyc3RuYW1lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmlyc3RuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZpcnN0bmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaXJzdG5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaXJzdG5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZpcnN0bmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZpcnN0bmFtZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imhvbm9yaWZpYy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaG9ub3JpZmljIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaG9ub3JpZmljLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGhvbm9yaWZpYy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJob25vcmlmaWMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJob25vcmlmaWMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGhvbm9yaWZpYy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGhvbm9yaWZpYy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmVhZ2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxpbmVhZ2UiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lYWdlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxpbmVhZ2UuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGluZWFnZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVhZ2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpbmVhZ2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBsaW5lYWdlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3RoZXJuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvdGhlcm5hbWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvdGhlcm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3RoZXJuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVybmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im90aGVybmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb3RoZXJuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb3RoZXJuYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3VybmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3VybmFtZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1cm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3VybmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdXJuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3VybmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3VybmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN1cm5hbWUubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHBlcnNvbi5pZGVudC5tb2R1bGUgLS0+CiAgPCEtLSBQcmludEhpc3RvcnkgLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmludGhpc3Rvcnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByaW50aGlzdG9yeSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW50aGlzdG9yeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwcmludGhpc3RvcnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJpbnRoaXN0b3J5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJpbnRoaXN0b3J5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcmludGhpc3RvcnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcmludGhpc3RvcnkubW9kdWxlIC0tPgogIDwhLS0gUHJvZHVjdE5hbWUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZHVjdG5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InByb2R1Y3RuYW1lIiBzdWJzdGl0dXRpb25Hcm91cD0iZG9jaW5mby5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvZHVjdG5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJvZHVjdG5hbWUuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBNb3JlIHByZWNpc2VseSBpZGVudGlmaWVzIHRoZSBpdGVtIHRoZSBlbGVtZW50IG5hbWVzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9kdWN0bmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIGRlZmF1bHQ9InRyYWRlIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VydmljZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0cmFkZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZWdpc3RlcmVkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvcHlyaWdodCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvZHVjdG5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByb2R1Y3RuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHJvZHVjdG5hbWUubW9kdWxlIC0tPgogIDwhLS0gUHJvZHVjdE51bWJlciAuLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZHVjdG51bWJlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJvZHVjdG51bWJlciIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2R1Y3RudW1iZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJvZHVjdG51bWJlci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9kdWN0bnVtYmVyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvZHVjdG51bWJlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJvZHVjdG51bWJlci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByb2R1Y3RudW1iZXIubW9kdWxlIC0tPgogIDwhLS0gUHViRGF0ZSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHViZGF0ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHViZGF0ZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1YmRhdGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHViZGF0ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwdWJkYXRlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHViZGF0ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHViZGF0ZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHB1YmRhdGUubW9kdWxlIC0tPgogIDwhLS0gUHVibGlzaGVyIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHVibGlzaGVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwdWJsaXNoZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwdWJsaXNoZXJuYW1lIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJhZGRyZXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1Ymxpc2hlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHVibGlzaGVyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHVibGlzaGVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwdWJsaXNoZXJuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwdWJsaXNoZXJuYW1lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHVibGlzaGVybmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXJuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InB1Ymxpc2hlcm5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwdWJsaXNoZXJuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXJuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHVibGlzaGVybmFtZS5tb2R1bGUgLS0+CiAgPCEtLSBBZGRyZXNzIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDwhLS0gZW5kIG9mIHB1Ymxpc2hlci5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIFB1YnNOdW1iZXIgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InB1YnNudW1iZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InB1YnNudW1iZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwdWJzbnVtYmVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHB1YnNudW1iZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHVic251bWJlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1YnNudW1iZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHB1YnNudW1iZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwdWJzbnVtYmVyLm1vZHVsZSAtLT4KICA8IS0tIFJlbGVhc2VJbmZvIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlbGVhc2VpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWxlYXNlaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlbGVhc2VpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlbGVhc2VpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlbGVhc2VpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVsZWFzZWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlbGVhc2VpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVsZWFzZWluZm8ubW9kdWxlIC0tPgogIDwhLS0gUmV2SGlzdG9yeSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aGlzdG9yeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmV2aGlzdG9yeSIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZXZpc2lvbiIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZoaXN0b3J5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJldmhpc3RvcnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aGlzdG9yeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldmhpc3Rvcnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJldmhpc3RvcnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZXZoaXN0b3J5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aXNpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJldmlzaW9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmV2bnVtYmVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJkYXRlIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImF1dGhvcmluaXRpYWxzIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXZyZW1hcmsiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icmV2ZGVzY3JpcHRpb24iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2aXNpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmV2aXNpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aXNpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZpc2lvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmV2aXNpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZXZpc2lvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldm51bWJlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmV2bnVtYmVyIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2bnVtYmVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJldm51bWJlci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXZudW1iZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZudW1iZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJldm51bWJlci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJldm51bWJlci5tb2R1bGUgLS0+CiAgPCEtLSBEYXRlIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDwhLS0gQXV0aG9ySW5pdGlhbHMgKGRlZmluZWQgZWxzZXdoZXJlIGluIHRoaXMgc2VjdGlvbikgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldnJlbWFyay5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmV2cmVtYXJrIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2cmVtYXJrLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJldnJlbWFyay5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXZyZW1hcmsuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZyZW1hcmsucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJldnJlbWFyay5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJldnJlbWFyay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldmRlc2NyaXB0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZXZkZXNjcmlwdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZXZkZXNjcmlwdGlvbi5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2ZGVzY3JpcHRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmV2ZGVzY3JpcHRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2ZGVzY3JpcHRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZkZXNjcmlwdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmV2ZGVzY3JpcHRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZXZkZXNjcmlwdGlvbi5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgcmV2aGlzdG9yeS5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIFNlcmllc1ZvbE51bXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlcmllc3ZvbG51bXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlcmllc3ZvbG51bXMiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXJpZXN2b2xudW1zLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlcmllc3ZvbG51bXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VyaWVzdm9sbnVtcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlcmllc3ZvbG51bXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlcmllc3ZvbG51bXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZXJpZXN2b2xudW1zLm1vZHVsZSAtLT4KICA8IS0tIFZvbHVtZU51bSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZvbHVtZW51bS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idm9sdW1lbnVtIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idm9sdW1lbnVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZvbHVtZW51bS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2b2x1bWVudW0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2b2x1bWVudW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZvbHVtZW51bS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZvbHVtZW51bS5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gZW5kIG9mIGRvY2luZm8uY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gSW5saW5lLCBsaW5rLCBhbmQgdWJpcXVpdG91cyBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFRlY2huaWNhbCBhbmQgY29tcHV0ZXIgdGVybXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFjY2VsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJhY2NlbCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWNjZWwuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWNjZWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWNjZWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhY2NlbC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWNjZWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhY2NlbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFjdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYWN0aW9uIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWN0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFjdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhY3Rpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFjdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWN0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYWN0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXBwbGljYXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFwcGxpY2F0aW9uIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXBwbGljYXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXBwbGljYXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXBwbGljYXRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaGFyZHdhcmUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic29mdHdhcmUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXBwbGljYXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFwcGxpY2F0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXBwbGljYXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjbGFzc25hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNsYXNzbmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2xhc3NuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNsYXNzbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjbGFzc25hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjbGFzc25hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNsYXNzbmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNsYXNzbmFtZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhY2thZ2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InBhY2thZ2UiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhY2thZ2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGFja2FnZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYWNrYWdlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFja2FnZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcGFja2FnZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBhY2thZ2UubW9kdWxlIC0tPgogIDwhLS0KICAgIENPIGlzIGEgY2FsbG91dCBhcmVhIG9mIHRoZSBMaW5lQ29sdW1uIHVuaXQgdHlwZSAoYSBzaW5nbGUgY2hhcmFjdGVyCiAgICBwb3NpdGlvbik7IHRoZSBwb3NpdGlvbiBpcyBkaXJlY3RseSBpbmRpY2F0ZWQgYnkgdGhlIGxvY2F0aW9uIG9mIENPLgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY28iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjby5lbGVtZW50IC0tPgogIDwhLS0gYnVnIG51bWJlci9zeW1ib2wgb3ZlcnJpZGUgb3IgaW5pdGlhbGl6YXRpb24gLS0+CiAgPCEtLSB0byBhbnkgcmVsYXRlZCBpbmZvcm1hdGlvbiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY28uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaWRyZXEuY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY28ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY28ubW9kdWxlIC0tPgogIDwhLS0gQ09SRUYgaXMgYSByZWZlcmVuY2UgdG8gYSBDTyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29yZWYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvcmVmIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29yZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29yZWYuZWxlbWVudCAtLT4KICA8IS0tIGJ1ZyBudW1iZXIvc3ltYm9sIG92ZXJyaWRlIG9yIGluaXRpYWxpemF0aW9uIC0tPgogIDwhLS0gdG8gYW55IHJlbGF0ZWQgaW5mb3JtYXRpb24gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcmVmLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcmVxLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29yZWYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvcmVmLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29yZWYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb21tYW5kLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb21tYW5kIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbWFuZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb21tYW5kLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbW1hbmQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1hbmQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbW1hbmQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb21tYW5kLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29tcHV0ZXJvdXRwdXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbXB1dGVyb3V0cHV0IiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY28iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbXB1dGVyb3V0cHV0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbXB1dGVyb3V0cHV0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbXB1dGVyb3V0cHV0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21wdXRlcm91dHB1dC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29tcHV0ZXJvdXRwdXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb21wdXRlcm91dHB1dC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImRhdGFiYXNlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJkYXRhYmFzZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRhdGFiYXNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGRhdGFiYXNlLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogVHlwZSBvZiBkYXRhYmFzZSB0aGUgZWxlbWVudCBuYW1lczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGF0YWJhc2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibmFtZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0YWJsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJmaWVsZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJrZXkxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImtleTIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVjb3JkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImluZGV4Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InZpZXciLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icHJpbWFyeWtleSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWNvbmRhcnlrZXkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZm9yZWlnbmtleSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhbHRrZXkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icHJvY2VkdXJlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRhdGF0eXBlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbnN0cmFpbnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icnVsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ1c2VyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imdyb3VwIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRhdGFiYXNlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBkYXRhYmFzZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGRhdGFiYXNlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZW1haWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImVtYWlsIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZW1haWwuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZW1haWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZW1haWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlbWFpbC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZW1haWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBlbWFpbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVudmFyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJlbnZhciIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZW52YXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZW52YXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZW52YXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlbnZhci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZW52YXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBlbnZhci5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVycm9yY29kZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXJyb3Jjb2RlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcnJvcmNvZGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZXJyb3Jjb2RlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVycm9yY29kZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXJyb3Jjb2RlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlcnJvcmNvZGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBlcnJvcmNvZGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcnJvcm5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImVycm9ybmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXJyb3JuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVycm9ybmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcnJvcm5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcnJvcm5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGVycm9ybmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVycm9ybmFtZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVycm9ydGV4dC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXJyb3J0ZXh0IiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcnJvcnRleHQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZXJyb3J0ZXh0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVycm9ydGV4dC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVycm9ydGV4dC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZXJyb3J0ZXh0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZXJyb3J0ZXh0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXJyb3J0eXBlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJlcnJvcnR5cGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVycm9ydHlwZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlcnJvcnR5cGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXJyb3J0eXBlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXJyb3J0eXBlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlcnJvcnR5cGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBlcnJvcnR5cGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaWxlbmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmlsZW5hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaWxlbmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmaWxlbmFtZS5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IFR5cGUgb2YgZmlsZW5hbWUgdGhlIGVsZW1lbnQgbmFtZXM7IG5vIGRlZmF1bHQgLS0+CiAgPCEtLQogICAgUGF0aDogU2VhcmNoIHBhdGggKHBvc3NpYmx5IHN5c3RlbS1zcGVjaWZpYykgaW4gd2hpY2gKICAgIGZpbGUgY2FuIGJlIGZvdW5kCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZpbGVuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImhlYWRlcmZpbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icGFydGl0aW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRldmljZWZpbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGlicmFyeWZpbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGlyZWN0b3J5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImV4dGVuc2lvbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzeW1saW5rIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhdGgiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmlsZW5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZpbGVuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZmlsZW5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZnVuY3Rpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jdGlvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmdW5jdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY3Rpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZ1bmN0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZnVuY3Rpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWlidXR0b24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imd1aWJ1dHRvbiIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNjZWwiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN1cGVyc2NyaXB0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzY3JpcHQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aWJ1dHRvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBndWlidXR0b24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3VpYnV0dG9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWlidXR0b24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGd1aWJ1dHRvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGd1aWJ1dHRvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aWljb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imd1aWljb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjY2VsIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdXBlcnNjcmlwdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3Vic2NyaXB0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWlpY29uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGd1aWljb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3VpaWNvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3VpaWNvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ3VpaWNvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGd1aWljb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWlsYWJlbC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3VpbGFiZWwiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjY2VsIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdXBlcnNjcmlwdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3Vic2NyaXB0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWlsYWJlbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBndWlsYWJlbC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWlsYWJlbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3VpbGFiZWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGd1aWxhYmVsLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3VpbGFiZWwubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWltZW51LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJndWltZW51IiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhY2NlbCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3VwZXJzY3JpcHQiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN1YnNjcmlwdCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3VpbWVudS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBndWltZW51LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aW1lbnUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aW1lbnUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGd1aW1lbnUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBndWltZW51Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3VpbWVudWl0ZW0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Imd1aW1lbnVpdGVtIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhY2NlbCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3VwZXJzY3JpcHQiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN1YnNjcmlwdCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3VpbWVudWl0ZW0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3VpbWVudWl0ZW0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3VpbWVudWl0ZW0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aW1lbnVpdGVtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBndWltZW51aXRlbS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGd1aW1lbnVpdGVtLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3Vpc3VibWVudS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3Vpc3VibWVudSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNjZWwiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN1cGVyc2NyaXB0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzY3JpcHQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aXN1Ym1lbnUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3Vpc3VibWVudS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWlzdWJtZW51LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWlzdWJtZW51LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBndWlzdWJtZW51LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3Vpc3VibWVudS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImhhcmR3YXJlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJoYXJkd2FyZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImhhcmR3YXJlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGhhcmR3YXJlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImhhcmR3YXJlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJoYXJkd2FyZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaGFyZHdhcmUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBoYXJkd2FyZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImludGVyZmFjZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW50ZXJmYWNlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhY2NlbCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW50ZXJmYWNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGludGVyZmFjZS5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IFR5cGUgb2YgdGhlIEludGVyZmFjZSBpdGVtOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbnRlcmZhY2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImludGVyZmFjZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW50ZXJmYWNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW50ZXJmYWNlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5Y2FwLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJrZXljYXAiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXljYXAuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Yga2V5Y2FwLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImtleWNhcC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZnVuY3Rpb24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhbHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29udHJvbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzaGlmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtZXRhIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImVzY2FwZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJlbnRlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0YWIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYmFja3NwYWNlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbW1hbmQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3B0aW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNwYWNlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRlbGV0ZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpbnNlcnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idXAiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZG93biIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsZWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImhvbWUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZW5kIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBhZ2V1cCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwYWdlZG93biIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcmZ1bmN0aW9uIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleWNhcC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Yga2V5Y2FwLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Yga2V5Y2FwLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5Y29kZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ia2V5Y29kZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5Y29kZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBrZXljb2RlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImtleWNvZGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXljb2RlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBrZXljb2RlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Yga2V5Y29kZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImtleWNvbWJvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJrZXljb21ibyIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ia2V5Y2FwIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJrZXljb21ibyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ia2V5c3ltIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtb3VzZWJ1dHRvbiIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5Y29tYm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Yga2V5Y29tYm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5Y29tYm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXlhY3Rpb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleWNvbWJvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBrZXljb21iby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGtleWNvbWJvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5c3lzbS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ia2V5c3ltIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXlzeW0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Yga2V5c3ltLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImtleXN5bS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleXN5c20ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGtleXN5bS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGtleXN5bS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmVhbm5vdGF0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaW5lYW5ub3RhdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVhbm5vdGF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxpbmVhbm5vdGF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmVhbm5vdGF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZWFubm90YXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpbmVhbm5vdGF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGluZWFubm90YXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaXRlcmFsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaXRlcmFsIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGl0ZXJhbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsaXRlcmFsLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpdGVyYWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpdGVyYWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpdGVyYWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBsaXRlcmFsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29kZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29kZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvZGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29kZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2RlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5ndWFnZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29kZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29kZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvZGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25zdGFudC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uc3RhbnQiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnN0YW50LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbnN0YW50LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnN0YW50LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbWl0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25zdGFudC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29uc3RhbnQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb25zdGFudC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZhcm5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InZhcm5hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZhcm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdmFybmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2YXJuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmFybmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdmFybmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZhcm5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtYXJrdXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1hcmt1cCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWFya3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1hcmt1cC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtYXJrdXAuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtYXJrdXAucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1hcmt1cC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1hcmt1cC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lZGlhbGFiZWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1lZGlhbGFiZWwiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1lZGlhbGFiZWwuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWVkaWFsYWJlbC5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IFR5cGUgb2YgbWVkaXVtIG5hbWVkIGJ5IHRoZSBlbGVtZW50OyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZWRpYWxhYmVsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNhcnRyaWRnZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZHJvbSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkaXNrIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRhcGUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1lZGlhbGFiZWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1lZGlhbGFiZWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtZWRpYWxhYmVsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWVudWNob2ljZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWVudWNob2ljZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2hvcnRjdXQiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3VpYnV0dG9uIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imd1aWljb24iLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3VpbGFiZWwiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3VpbWVudSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJndWltZW51aXRlbSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJndWlzdWJtZW51Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImludGVyZmFjZSIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZW51Y2hvaWNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1lbnVjaG9pY2UuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWVudWNob2ljZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVudWNob2ljZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWVudWNob2ljZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1lbnVjaG9pY2UubW9kdWxlIC0tPgogIDwhLS0gU2VlIGFsc28gS2V5Q29tYm8gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNob3J0Y3V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaG9ydGN1dCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ia2V5Y2FwIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJrZXljb21ibyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ia2V5c3ltIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtb3VzZWJ1dHRvbiIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2hvcnRjdXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2hvcnRjdXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2hvcnRjdXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXlhY3Rpb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNob3J0Y3V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzaG9ydGN1dC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNob3J0Y3V0Lm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBtZW51Y2hvaWNlLmNvbnRlbnQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtb3VzZWJ1dHRvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibW91c2VidXR0b24iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vdXNlYnV0dG9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1vdXNlYnV0dG9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1vdXNlYnV0dG9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3VzZWJ1dHRvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbW91c2VidXR0b24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtb3VzZWJ1dHRvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ3RleHQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ3RleHQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2d0ZXh0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1zZ3RleHQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNndGV4dC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ3RleHQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1zZ3RleHQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2d0ZXh0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3B0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvcHRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcHRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3B0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9wdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9wdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb3B0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb3B0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3B0aW9uYWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9Im9wdGlvbmFsIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3B0aW9uYWwuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3B0aW9uYWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3B0aW9uYWwuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcHRpb25hbC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb3B0aW9uYWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvcHRpb25hbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcmFtZXRlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGFyYW1ldGVyIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFyYW1ldGVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBhcmFtZXRlci5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IFR5cGUgb2YgdGhlIFBhcmFtZXRlcjsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFyYW1ldGVyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbW1hbmQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZnVuY3Rpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3B0aW9uIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcmFtZXRlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcGFyYW1ldGVyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcGFyYW1ldGVyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvbXB0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcm9tcHQiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9tcHQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJvbXB0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb21wdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvbXB0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcm9tcHQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcm9tcHQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9wZXJ0eS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJvcGVydHkiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9wZXJ0eS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwcm9wZXJ0eS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9wZXJ0eS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvcGVydHkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByb3BlcnR5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHJvcGVydHkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXBsYWNlYWJsZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVwbGFjZWFibGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ib3B0aW9uYWwiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJvdGhlci5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVncmFwaGljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVtZWRpYW9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY28iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlcGxhY2VhYmxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlcGxhY2VhYmxlLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQ2xhc3M6IFR5cGUgb2YgaW5mb3JtYXRpb24gdGhlIGVsZW1lbnQgcmVwcmVzZW50czsgbm8KICAgIGRlZmF1bHQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVwbGFjZWFibGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29tbWFuZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJmdW5jdGlvbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHRpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icGFyYW1ldGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXBsYWNlYWJsZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVwbGFjZWFibGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZXBsYWNlYWJsZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldHVybnZhbHVlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZXR1cm52YWx1ZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV0dXJudmFsdWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmV0dXJudmFsdWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV0dXJudmFsdWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXR1cm52YWx1ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmV0dXJudmFsdWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZXR1cm52YWx1ZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNnbWx0YWcucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNnbWx0YWciIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNnbWx0YWcuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2dtbHRhZy5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IFR5cGUgb2YgU0dNTCBjb25zdHJ1Y3QgdGhlIGVsZW1lbnQgbmFtZXM7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNnbWx0YWcuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYXR0cmlidXRlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImF0dHZhbHVlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImVsZW1lbnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZW5kdGFnIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImVtcHR5dGFnIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImdlbmVudGl0eSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJudW1jaGFycmVmIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBhcmFtZW50aXR5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBpIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InhtbHBpIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InN0YXJ0dGFnIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNnbWxjb21tZW50Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InByZWZpeCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJuYW1lc3BhY2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibG9jYWxuYW1lIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWVzcGFjZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2dtbHRhZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2dtbHRhZy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNnbWx0YWcubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdHJ1Y3RmaWVsZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3RydWN0ZmllbGQiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0cnVjdGZpZWxkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN0cnVjdGZpZWxkLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0cnVjdGZpZWxkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RydWN0ZmllbGQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN0cnVjdGZpZWxkLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3RydWN0ZmllbGQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdHJ1Y3RuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdHJ1Y3RuYW1lIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdHJ1Y3RuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN0cnVjdG5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RydWN0bmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0cnVjdG5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN0cnVjdG5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdHJ1Y3RuYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3ltYm9sLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJzeW1ib2wiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bWJvbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzeW1ib2wuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBUeXBlIG9mIHN5bWJvbDsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3ltYm9sLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbWl0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeW1ib2wucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN5bWJvbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN5bWJvbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5c3RlbWl0ZW0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InN5c3RlbWl0ZW0iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhY3JvbnltIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3lzdGVtaXRlbS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzeXN0ZW1pdGVtLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogVHlwZSBvZiBzeXN0ZW0gaXRlbSB0aGUgZWxlbWVudCBuYW1lczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3lzdGVtaXRlbS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb25zdGFudCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkYWVtb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZG9tYWlubmFtZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJldGhlcmFkZHJlc3MiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZXZlbnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZXZlbnRoYW5kbGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImZpbGVzeXN0ZW0iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZnFkb21haW5uYW1lIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imdyb3VwbmFtZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpcGFkZHJlc3MiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGlicmFyeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtYWNybyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJuZXRtYXNrIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5ld3Nncm91cCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvc25hbWUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icHJvdG9jb2wiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVzb3VyY2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic3lzdGVtbmFtZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ1c2VybmFtZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcm9jZXNzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlcnZlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZXJ2aWNlIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5c3RlbWl0ZW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN5c3RlbWl0ZW0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzeXN0ZW1pdGVtLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idXJpLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ1cmkiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InVyaS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB1cmkuZWxlbWVudCAtLT4KICA8IS0tIFR5cGU6IFR5cGUgb2YgVVJJOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ1cmkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InVyaS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdXJpLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdXJpLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9rZW4ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRva2VuIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2tlbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2tlbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2tlbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRva2VuLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2tlbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRva2VuLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idHlwZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idHlwZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idHlwZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0eXBlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InR5cGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0eXBlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0eXBlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdHlwZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InVzZXJpbnB1dC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0idXNlcmlucHV0IiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY28iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InVzZXJpbnB1dC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB1c2VyaW5wdXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idXNlcmlucHV0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ1c2VyaW5wdXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHVzZXJpbnB1dC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHVzZXJpbnB1dC5tb2R1bGUgLS0+CiAgPCEtLSBHZW5lcmFsIHdvcmRzIGFuZCBwaHJhc2VzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhYmJyZXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFiYnJldiIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9IndvcmQuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWJicmV2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFiYnJldi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhYmJyZXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhYmJyZXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFiYnJldi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFiYnJldi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFjcm9ueW0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFjcm9ueW0iIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ3b3JkLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFjcm9ueW0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWNyb255bS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhY3JvbnltLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWNyb255bS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWNyb255bS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFjcm9ueW0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRhdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2l0YXRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdGF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNpdGF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdGF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0YXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNpdGF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2l0YXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRlcmVmZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNpdGVyZWZlbnRyeSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVmZW50cnl0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJtYW52b2xudW0iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0ZXJlZmVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNpdGVyZWZlbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRlcmVmZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaXRlcmVmZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNpdGVyZWZlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNpdGVyZWZlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVudHJ5dGl0bGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InJlZmVudHJ5dGl0bGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZlbnRyeXRpdGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5dGl0bGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZW50cnl0aXRsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVudHJ5dGl0bGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5dGl0bGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZlbnRyeXRpdGxlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibmFtdm9sbnVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtYW52b2xudW0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0id29yZC5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtYW52b2xudW0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWFudm9sbnVtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1hbnZvbG51bS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im5hbXZvbG51bS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWFudm9sbnVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWFudm9sbnVtLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2l0ZXRpdGxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJjaXRldGl0bGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdGV0aXRsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjaXRldGl0bGUuZWxlbWVudCAtLT4KICA8IS0tIFB1Yndvcms6IEdlbnJlIG9mIHB1Ymxpc2hlZCB3b3JrIGNpdGVkOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRldGl0bGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InB1YndvcmsiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhcnRpY2xlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvb2siLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhcHRlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwYXJ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlZmVudHJ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Rpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iam91cm5hbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZXJpZXMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2V0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1hbnVzY3JpcHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2Ryb20iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZHZkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Indpa2kiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZ29waGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJicyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJlbWFpbG1lc3NhZ2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0id2VicGFnZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJuZXdzcG9zdGluZyIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0ZXRpdGxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjaXRldGl0bGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjaXRldGl0bGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbXBoYXNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZW1waGFzaXMiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVtcGhhc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVtcGhhc2lzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVtcGhhc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZW1waGFzaXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGVtcGhhc2lzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZW1waGFzaXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmb3JlaWducGhyYXNlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJmb3JlaWducGhyYXNlIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmb3JlaWducGhyYXNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZvcmVpZ25waHJhc2UuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZm9yZWlnbnBocmFzZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZvcmVpZ25waHJhc2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZvcmVpZ25waHJhc2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmb3JlaWducGhyYXNlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3N0ZXJtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc3Rlcm0iIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzdGVybS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc3Rlcm0uZWxlbWVudCAtLT4KICA8IS0tIHRvIEdsb3NzRW50cnkgaWYgR2xvc3N0ZXJtIHVzZWQgaW4gdGV4dCAtLT4KICA8IS0tCiAgICBCYXNlRm9ybTogUHJvdmlkZXMgdGhlIGZvcm0gb2YgR2xvc3NUZXJtIHRvIGJlIHVzZWQKICAgIGZvciBpbmRleGluZwogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc3Rlcm0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhc2Vmb3JtIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3N0ZXJtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBnbG9zc3Rlcm0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc3Rlcm0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaXJzdHRlcm0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZpcnN0dGVybSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmlyc3R0ZXJtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZpcnN0dGVybS5lbGVtZW50IC0tPgogIDwhLS0gdG8gR2xvc3NFbnRyeSBvciBvdGhlciBleHBsYW5hdGlvbiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmlyc3R0ZXJtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiYXNlZm9ybSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZpcnN0dGVybS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZmlyc3R0ZXJtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZmlyc3R0ZXJtLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGhyYXNlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJwaHJhc2UiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBocmFzZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwaHJhc2UuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGhyYXNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGhyYXNlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwaHJhc2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwaHJhc2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxdW90ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icXVvdGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InF1b3RlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHF1b3RlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InF1b3RlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icXVvdGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHF1b3RlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcXVvdGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzc3NjcmlwdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3Vic2NyaXB0Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtcGhhc2lzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXBsYWNlYWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3ltYm9sIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVncmFwaGljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVtZWRpYW9iamVjdCIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YnNjcmlwdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdWJzY3JpcHQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3Vic2NyaXB0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3NzY3JpcHQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN1YnNjcmlwdC5hdHRsaXN0IC0tPgogIDx4czplbGVtZW50IG5hbWU9InN1cGVyc2NyaXB0Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtcGhhc2lzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXBsYWNlYWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3ltYm9sIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVncmFwaGljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVtZWRpYW9iamVjdCIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1cGVyc2NyaXB0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN1cGVyc2NyaXB0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1cGVyc2NyaXB0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3NzY3JpcHQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN1cGVyc2NyaXB0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3NzY3JpcHQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0cmFkZW1hcmsucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InRyYWRlbWFyayIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRlY2guY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZWdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbXBoYXNpcyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idHJhZGVtYXJrLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRyYWRlbWFyay5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IE1vcmUgcHJlY2lzZWx5IGlkZW50aWZpZXMgdGhlIGl0ZW0gdGhlIGVsZW1lbnQgbmFtZXMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRyYWRlbWFyay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIGRlZmF1bHQ9InRyYWRlIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VydmljZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0cmFkZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZWdpc3RlcmVkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvcHlyaWdodCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idHJhZGVtYXJrLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0cmFkZW1hcmsuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0cmFkZW1hcmsubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ3b3JkYXN3b3JkLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ3b3JkYXN3b3JkIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0id29yZC5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ3b3JkYXN3b3JkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHdvcmRhc3dvcmQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0id29yZGFzd29yZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndvcmRhc3dvcmQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHdvcmRhc3dvcmQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB3b3JkYXN3b3JkLm1vZHVsZSAtLT4KICA8IS0tIExpbmtzIGFuZCBjcm9zcy1yZWZlcmVuY2VzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imxpbmsucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImxpbmsiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaW5rLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxpbmsuZWxlbWVudCAtLT4KICA8IS0tCiAgICBFbmR0ZXJtOiBJRCBvZiBlbGVtZW50IGNvbnRhaW5pbmcgdGV4dCB0aGF0IGlzIHRvIGJlCiAgICBmZXRjaGVkIGZyb20gZWxzZXdoZXJlIGluIHRoZSBkb2N1bWVudCB0byBhcHBlYXIgYXMKICAgIHRoZSBjb250ZW50IG9mIHRoaXMgZWxlbWVudAogIC0tPgogIDwhLS0gdG8gbGlua2VkLXRvIG9iamVjdCAtLT4KICA8IS0tIFR5cGU6IEZyZWVseSBhc3NpZ25hYmxlIHBhcmFtZXRlciAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGluay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW5kdGVybSIgdHlwZT0ieHM6SURSRUYiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieHJlZnN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRyZXEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBsaW5rLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGluay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9saW5rLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJvbGluayIgc3Vic3RpdHV0aW9uR3JvdXA9ImxpbmsuY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9saW5rLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9saW5rLmVsZW1lbnQgLS0+CiAgPCEtLSBUYXJnZXREb2NFbnQ6IE5hbWUgb2YgYW4gZW50aXR5IHRvIGJlIHRoZSB0YXJnZXQgb2YgdGhlIGxpbmsgLS0+CiAgPCEtLQogICAgTGlua01vZGU6IElEIG9mIGEgTW9kZVNwZWMgY29udGFpbmluZyBpbnN0cnVjdGlvbnMgZm9yCiAgICBvcGVyYXRpbmcgb24gdGhlIGVudGl0eSBuYW1lZCBieSBUYXJnZXREb2NFbnQKICAtLT4KICA8IS0tIExvY2FsSW5mbzogSW5mb3JtYXRpb24gdGhhdCBtYXkgYmUgcGFzc2VkIHRvIE1vZGVTcGVjIC0tPgogIDwhLS0gVHlwZTogRnJlZWx5IGFzc2lnbmFibGUgcGFyYW1ldGVyIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvbGluay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGFyZ2V0ZG9jZW50IiB0eXBlPSJ4czpFTlRJVFkiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlua21vZGUiIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxvY2FsaW5mbyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRhcmdldGRvYyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0YXJnZXRwdHIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieHJlZnN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvbGluay5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb2xpbmsuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvbGluay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InVsaW5rLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ1bGluayIgc3Vic3RpdHV0aW9uR3JvdXA9ImxpbmsuY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InVsaW5rLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHVsaW5rLmVsZW1lbnQgLS0+CiAgPCEtLSBVUkw6IHVuaWZvcm0gcmVzb3VyY2UgbG9jYXRvcjsgdGhlIHRhcmdldCBvZiB0aGUgVUxpbmsgLS0+CiAgPCEtLSBUeXBlOiBGcmVlbHkgYXNzaWduYWJsZSBwYXJhbWV0ZXIgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InVsaW5rLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1cmwiIHVzZT0icmVxdWlyZWQiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ4cmVmc3R5bGUiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InVsaW5rLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB1bGluay5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHVsaW5rLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZm9vdG5vdGVyZWYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImZvb3Rub3RlcmVmIiBzdWJzdGl0dXRpb25Hcm91cD0ieHJlZi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZm9vdG5vdGVyZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZm9vdG5vdGVyZWYuZWxlbWVudCAtLT4KICA8IS0tIHRvIGZvb3Rub3RlIGNvbnRlbnQgc3VwcGxpZWQgZWxzZXdoZXJlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmb290bm90ZXJlZi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRyZXEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZvb3Rub3RlcmVmLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmb290bm90ZXJlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZvb3Rub3RlcmVmLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ieHJlZi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0ieHJlZiIgc3Vic3RpdHV0aW9uR3JvdXA9InhyZWYuY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InhyZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgeHJlZi5lbGVtZW50IC0tPgogIDwhLS0KICAgIEVuZHRlcm06IElEIG9mIGVsZW1lbnQgY29udGFpbmluZyB0ZXh0IHRoYXQgaXMgdG8gYmUKICAgIGZldGNoZWQgZnJvbSBlbHNld2hlcmUgaW4gdGhlIGRvY3VtZW50IHRvIGFwcGVhciBhcwogICAgdGhlIGNvbnRlbnQgb2YgdGhpcyBlbGVtZW50CiAgLS0+CiAgPCEtLSB0byBsaW5rZWQtdG8gb2JqZWN0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ4cmVmLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbmR0ZXJtIiB0eXBlPSJ4czpJRFJFRiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ4cmVmc3R5bGUiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRyZXEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4cmVmLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB4cmVmLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgeHJlZi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb3JlZi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvcmVmIiBzdWJzdGl0dXRpb25Hcm91cD0ieHJlZi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvcmVmLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb3JlZi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9yZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVuZHRlcm0iIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InhyZWZzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1bml0cyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiZWdpbiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbmQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRyZXEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9yZWYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb3JlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb3JlZi5tb2R1bGUgLS0+CiAgPCEtLSBVYmlxdWl0b3VzIGVsZW1lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhbmNob3Iucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImFuY2hvciI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFuY2hvci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhbmNob3IuZWxlbWVudCAtLT4KICA8IS0tIHJlcXVpcmVkIC0tPgogIDwhLS0gcmVwbGFjZXMgTGFuZyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYW5jaG9yLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaWRyZXEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVtYXAuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4cmVmbGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZpc2lvbmZsYWcuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlZmZlY3Rpdml0eS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFuY2hvci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYW5jaG9yLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYW5jaG9yLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmVnaW5wYWdlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJiZWdpbnBhZ2UiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiZWdpbnBhZ2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmVnaW5wYWdlLmVsZW1lbnQgLS0+CiAgPCEtLSBQYWdlTnVtOiBOdW1iZXIgb2YgcGFnZSB0aGF0IGJlZ2lucyBhdCB0aGlzIHBvaW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiZWdpbnBhZ2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmVnaW5wYWdlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiZWdpbnBhZ2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiZWdpbnBhZ2UubW9kdWxlIC0tPgogIDwhLS0KICAgIEluZGV4VGVybXMgYXBwZWFyIGluIHRoZSB0ZXh0IGZsb3cgZm9yIGdlbmVyYXRpbmcgb3IgbGlua2luZyBhbgogICAgaW5kZXguCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4dGVybS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5kZXh0ZXJtIiBzdWJzdGl0dXRpb25Hcm91cD0ibmR4dGVybS5jbGFzcyIvPgogIDwhLS0gZW5kIG9mIGluZGV4dGVybS5lbGVtZW50IC0tPgogIDwhLS0KICAgIFNjb3BlOiBJbmRpY2F0ZXMgd2hpY2ggZ2VuZXJhdGVkIGluZGljZXMgdGhlIEluZGV4VGVybQogICAgc2hvdWxkIGFwcGVhciBpbjogR2xvYmFsICh3aG9sZSBkb2N1bWVudCBzZXQpLCBMb2NhbCAodGhpcwogICAgZG9jdW1lbnQgb25seSksIG9yIEFsbCAoYm90aCkKICAtLT4KICA8IS0tCiAgICBTaWduaWZpY2FuY2U6IFdoZXRoZXIgdGhpcyBJbmRleFRlcm0gaXMgdGhlIG1vc3QgcGVydGluZW50CiAgICBvZiBpdHMgc2VyaWVzIChQcmVmZXJyZWQpIG9yIG5vdCAoTm9ybWFsLCB0aGUgZGVmYXVsdCkKICAtLT4KICA8IS0tCiAgICBDbGFzczogSW5kaWNhdGVzIHR5cGUgb2YgSW5kZXhUZXJtOyBkZWZhdWx0IGlzIFNpbmd1bGFyLAogICAgb3IgRW5kT2ZSYW5nZSBpZiBTdGFydFJlZiBpcyBzdXBwbGllZDsgU3RhcnRPZlJhbmdlIHZhbHVlCiAgICBtdXN0IGJlIHN1cHBsaWVkIGV4cGxpY2l0bHkgb24gc3RhcnRzIG9mIHJhbmdlcwogIC0tPgogIDwhLS0KICAgIFN0YXJ0UmVmOiBJRCBvZiB0aGUgSW5kZXhUZXJtIHRoYXQgc3RhcnRzIHRoZSBpbmRleGluZwogICAgcmFuZ2UgZW5kZWQgYnkgdGhpcyBJbmRleFRlcm0KICAtLT4KICA8IS0tCiAgICBab25lOiBJRHMgb2YgdGhlIGVsZW1lbnRzIHRvIHdoaWNoIHRoZSBJbmRleFRlcm0gYXBwbGllcywKICAgIGFuZCBpbmRpY2F0ZXMgdGhhdCB0aGUgSW5kZXhUZXJtIGFwcGxpZXMgdG8gdGhvc2UgZW50aXJlCiAgICBlbGVtZW50cyByYXRoZXIgdGhhbiB0aGUgcG9pbnQgYXQgd2hpY2ggdGhlIEluZGV4VGVybQogICAgb2NjdXJzCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4dGVybS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW0uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjb3BlIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYWxsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imdsb2JhbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsb2NhbCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaWduaWZpY2FuY2UiIGRlZmF1bHQ9Im5vcm1hbCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InByZWZlcnJlZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JtYWwiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzaW5ndWxhciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzdGFydG9mcmFuZ2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZW5kb2ZyYW5nZSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGFydHJlZiIgdHlwZT0ieHM6SURSRUYiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iem9uZSIgdHlwZT0ieHM6SURSRUZTIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4dGVybS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5kZXh0ZXJtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5kZXh0ZXJtLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJpbXNlY3Rlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJpbWFyeSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW1hcnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJpbWFyeS5lbGVtZW50IC0tPgogIDwhLS0KICAgIFNvcnRBczogQWx0ZXJuYXRlIHNvcnQgc3RyaW5nIGZvciBpbmRleCBzb3J0aW5nLCBlLmcuLAogICAgImZvdXJ0ZWVuIiBmb3IgYW4gZWxlbWVudCBjb250YWluaW5nICIxNCIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJpbWFyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic29ydGFzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmltc2VjdGVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcmltYXJ5LmF0dGxpc3QgLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2Vjb25kYXJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2Vjb25kYXJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY29uZGFyeS5lbGVtZW50IC0tPgogIDwhLS0KICAgIFNvcnRBczogQWx0ZXJuYXRlIHNvcnQgc3RyaW5nIGZvciBpbmRleCBzb3J0aW5nLCBlLmcuLAogICAgImZvdXJ0ZWVuIiBmb3IgYW4gZWxlbWVudCBjb250YWluaW5nICIxNCIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2Vjb25kYXJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzb3J0YXMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW1zZWN0ZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY29uZGFyeS5hdHRsaXN0IC0tPgogIDx4czplbGVtZW50IG5hbWU9InRlcnRpYXJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGVydGlhcnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGVydGlhcnkuZWxlbWVudCAtLT4KICA8IS0tCiAgICBTb3J0QXM6IEFsdGVybmF0ZSBzb3J0IHN0cmluZyBmb3IgaW5kZXggc29ydGluZywgZS5nLiwKICAgICJmb3VydGVlbiIgZm9yIGFuIGVsZW1lbnQgY29udGFpbmluZyAiMTQiCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRlcnRpYXJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzb3J0YXMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW1zZWN0ZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRlcnRpYXJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcHJpbXNlY3Rlci5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZXNlZWFsc28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9InNlZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2Vlc2VlYWxzby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VlLmF0dGxpc3QgLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VlYWxzbyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZWFsc28uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VlYWxzby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWVhbHNvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2Vlc2VlYWxzby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CjwveHM6c2NoZW1hPgo8IS0tIGVuZCBvZiBzZWVhbHNvLmF0dGxpc3QgLS0+CjwhLS0gZW5kIG9mIHNlZXNlZWFsc28ubW9kdWxlIC0tPgo8IS0tIGVuZCBvZiBpbmRleHRlcm0uY29udGVudC5tb2R1bGUgLS0+CjwhLS0gRW5kIG9mIERvY0Jvb2sgWE1MIGluZm9ybWF0aW9uIHBvb2wgbW9kdWxlIFY0LjQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_4/docbook.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgWE1MIERURCBWNC40IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkb2Nib29reC5kdGQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDQgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogIFNlZSBhbHNvIGh0dHA6Ly9kb2Nib29rLm9yZy9zcGVjcy8KICAKICAkSWQ6IGRvY2Jvb2t4LmR0ZCx2IDEuMzEgMjAwNS8wMS8yNyAxMzo1MjozNiBud2Fsc2ggRXhwICQKICAKICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5IGFuZCBkaXN0cmlidXRlIHRoZSBEb2NCb29rIFhNTCBEVEQKICBhbmQgaXRzIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUKICBpcyBoZXJlYnkgZ3JhbnRlZCBpbiBwZXJwZXR1aXR5LCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQKICBub3RpY2UgYW5kIHRoaXMgcGFyYWdyYXBoIGFwcGVhciBpbiBhbGwgY29waWVzLiAgVGhlIGNvcHlyaWdodAogIGhvbGRlcnMgbWFrZSBubyByZXByZXNlbnRhdGlvbiBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhlIERURCBmb3IKICBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzZWQgb3IgaW1wbGllZAogIHdhcnJhbnR5LgogIAogIElmIHlvdSBtb2RpZnkgdGhlIERvY0Jvb2sgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIGlzIHRoZSBkcml2ZXIgZmlsZSBmb3IgVjQuNCBvZiB0aGUgRG9jQm9vayBEVEQuCiAgUGxlYXNlIHVzZSB0aGUgZm9sbG93aW5nIGZvcm1hbCBwdWJsaWMgaWRlbnRpZmllciB0byBpZGVudGlmeSBpdDoKICAKICAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC40Ly9FTiIKICAKICBGb3IgZXhhbXBsZSwgaWYgeW91ciBkb2N1bWVudCdzIHRvcC1sZXZlbCBlbGVtZW50IGlzIEJvb2ssIGFuZAogIHlvdSBhcmUgdXNpbmcgRG9jQm9vayBkaXJlY3RseSwgdXNlIHRoZSBGUEkgaW4gdGhlIERPQ1RZUEUKICBkZWNsYXJhdGlvbjoKICAKICA8IURPQ1RZUEUgYm9vayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuNC8vRU4iCiAgICAgICAgICAgICAgICAgImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC40L2RvY2Jvb2t4LmR0ZCIKICAgICAgICAgICAgICAgICBbLi4uXT4KICAKICBPciwgaWYgeW91IGhhdmUgYSBoaWdoZXItbGV2ZWwgZHJpdmVyIGZpbGUgdGhhdCBjdXN0b21pemVzIERvY0Jvb2ssCiAgdXNlIHRoZSBGUEkgaW4gdGhlIHBhcmFtZXRlciBlbnRpdHkgZGVjbGFyYXRpb246CiAgCiAgPCFFTlRJVFkgJSBEb2NCb29rRFREIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC40Ly9FTiIKICAgICAgICAgICAgICJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuNC9kb2Nib29reC5kdGQiPgogICVEb2NCb29rRFREOwogIAogIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24gb24gdGhlIHBhcmFtZXRlcgogIGVudGl0eSBhbmQgbW9kdWxlIHNjaGVtZSB1c2VkIGluIERvY0Jvb2ssIGN1c3RvbWl6aW5nIERvY0Jvb2sgYW5kCiAgcGxhbm5pbmcgZm9yIGludGVyY2hhbmdlLCBhbmQgY2hhbmdlcyBtYWRlIHNpbmNlIHRoZSBsYXN0IHJlbGVhc2UKICBvZiBEb2NCb29rLgotLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIEVuYWJsZSBTR01MIGZlYXR1cmVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSBOb3RhdGlvbiBkZWNsYXJhdGlvbnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiPgogIDx4czppbmNsdWRlIHNjaGVtYUxvY2F0aW9uPSJkYm5vdG54LnhzZCIvPgogIDx4czppbmNsdWRlIHNjaGVtYUxvY2F0aW9uPSJkYnBvb2x4LnhzZCIvPgogIDx4czppbmNsdWRlIHNjaGVtYUxvY2F0aW9uPSJkYmhpZXJ4LnhzZCIvPgogIDx4czppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiIHNjaGVtYUxvY2F0aW9uPSJ4bWwueHNkIi8+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gSVNPIGNoYXJhY3RlciBlbnRpdHkgc2V0cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIGV1cm8gc2lnbiwgVSsyMEFDIE5FVyAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBEVEQgbW9kdWxlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gSW5mb3JtYXRpb24gcG9vbCAuLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFJlZGVjbGFyYXRpb24gcGxhY2Vob2xkZXIgLi4uLi4gLS0+CiAgPCEtLSBEb2N1bWVudCBoaWVyYXJjaHkgLi4uLi4uLi4uLi4uIC0tPgo8L3hzOnNjaGVtYT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIE90aGVyIGdlbmVyYWwgZW50aXRpZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRW5kIG9mIERvY0Jvb2sgWE1MIERURCBWNC40IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_4/htmltblx.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgWE1MIEhUTUwgVGFibGUgTW9kdWxlIFY0LjQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBodG1sdGJseC5tb2QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAyMDAzLCAyMDA0IEFyYm9yVGV4dCwgSW5jLiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLAogIEluYy4sIGFuZCB0aGUgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogaHRtbHRibHgubW9kLHYgMS4yMyAyMDA1LzAxLzI3IDEzOjUyOjAwIG53YWxzaCBFeHAgJAogIAogIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnkgYW5kIGRpc3RyaWJ1dGUgdGhlIERvY0Jvb2sgWE1MIERURAogIGFuZCBpdHMgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZQogIGlzIGhlcmVieSBncmFudGVkIGluIHBlcnBldHVpdHksIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodAogIG5vdGljZSBhbmQgdGhpcyBwYXJhZ3JhcGggYXBwZWFyIGluIGFsbCBjb3BpZXMuICBUaGUgY29weXJpZ2h0CiAgaG9sZGVycyBtYWtlIG5vIHJlcHJlc2VudGF0aW9uIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGUgRFREIGZvcgogIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3NlZCBvciBpbXBsaWVkCiAgd2FycmFudHkuCiAgCiAgSWYgeW91IG1vZGlmeSB0aGUgRG9jQm9vayBYTUwgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbnMgZm9yIGVsZW1lbnRzIHRoYXQgYXJlCiAgaXNvbW9ycGhpYyB0byB0aGUgSFRNTCBlbGVtZW50cy4gT25lIGNvdWxkIGFyZ3VlIHdlIHNob3VsZAogIGluc3RlYWQgaGF2ZSBiYXNlZCBvdXJzZWx2ZXMgb24gdGhlIFhIVE1MIFRhYmxlIE1vZHVsZSwgYnV0IHRoZQogIEhUTUwgb25lIGlzIG1vcmUgbGlrZSB3aGF0IGJyb3dzZXJzIGFyZSBsaWtlbHkgdG8gYWNjZXB0IHRvZGF5CiAgYW5kIHVzZXJzIGFyZSBsaWtlbHkgdG8gdXNlLgogIAogIFRoaXMgbW9kdWxlIGhhcyBiZWVuIGRldmVsb3BlZCBmb3IgdXNlIHdpdGggdGhlIERvY0Jvb2sgVjQuNAogICJ1bmlvbiB0YWJsZSBtb2RlbCIgaW4gd2hpY2ggZWxlbWVudHMgYW5kIGF0dGxpc3RzIGNvbW1vbiB0byBib3RoCiAgbW9kZWxzIGFyZSBkZWZpbmVkIChhcyB0aGUgdW5pb24pIGluIHRoZSBDQUxTIHRhYmxlIG1vZHVsZSBieQogIHNldHRpbmcgdmFyaW91cyBwYXJhbWV0ZXIgZW50aXRpZXMgYXBwcm9wcmlhdGVseSBpbiB0aGlzIGZpbGUuCiAgCiAgSW4gRFREIGRyaXZlciBmaWxlcyByZWZlcnJpbmcgdG8gdGhpcyBtb2R1bGUsIHBsZWFzZSB1c2UgYW4gZW50aXR5CiAgZGVjbGFyYXRpb24gdGhhdCB1c2VzIHRoZSBwdWJsaWMgaWRlbnRpZmllciBzaG93biBiZWxvdzoKICAKICA8IUVOVElUWSAlIGh0bWx0YmwgUFVCTElDCiAgIi0vL09BU0lTLy9FTEVNRU5UUyBEb2NCb29rIFhNTCBIVE1MIFRhYmxlcyBWNC40Ly9FTiIKICAiaHRtbHRibHgubW9kIj4KICAlaHRtbHRibDsKICAKICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHRoZSBwYXJhbWV0ZXIKICBlbnRpdHkgYW5kIG1vZHVsZSBzY2hlbWUgdXNlZCBpbiBEb2NCb29rLCBjdXN0b21pemluZyBEb2NCb29rIGFuZAogIHBsYW5uaW5nIGZvciBpbnRlcmNoYW5nZSwgYW5kIGNoYW5nZXMgbWFkZSBzaW5jZSB0aGUgbGFzdCByZWxlYXNlCiAgb2YgRG9jQm9vay4KLS0+CjwhLS0gPT09PT09PT09PT09PT09PT09PT09PT0gWEhUTUwgVGFibGVzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4KICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiBzY2hlbWFMb2NhdGlvbj0ieG1sLnhzZCIvPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJodG1sLmNvcmVhdHRycyI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJ4czpJRCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aXRsZSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBEb2VzIG5vdCBjb250YWluIGxhbmcgb3IgZGlyIGJlY2F1c2UgdGhleSBhcmUgaW4gJWNvbW1vbi5hdHRyaWJzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpMThuIj4KICAgIDx4czphdHRyaWJ1dGUgcmVmPSJ4bWw6bGFuZyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImV2ZW50cyI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uY2xpY2siLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25kYmxjbGljayIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm1vdXNlZG93biIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm1vdXNldXAiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25tb3VzZW92ZXIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25tb3VzZW1vdmUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25tb3VzZW91dCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmtleXByZXNzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ua2V5ZG93biIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmtleXVwIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXR0cnMiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaHRtbC5jb3JlYXR0cnMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImkxOG4iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImV2ZW50cyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNlbGxoYWxpZ24iPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imp1c3RpZnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXJvZmYiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjZWxsdmFsaWduIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYmFzZWxpbmUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImNvbGdyb3VwIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbGdyb3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czplbGVtZW50IG5hbWU9ImNvbCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0ciI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRkIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0aCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJ0YWJlbnRyeS5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRhYmxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbHRhYmxlIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0aC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0ZCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJ0YWJlbnRyeS5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRhYmxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbHRhYmxlIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sZ3JvdXAuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdHRycyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFuIiBkZWZhdWx0PSIxIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjZWxsaGFsaWduIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjZWxsdmFsaWduIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXR0cnMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3BhbiIgZGVmYXVsdD0iMSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2VsbGhhbGlnbiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2VsbHZhbGlnbiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXR0cnMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNlbGxoYWxpZ24iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNlbGx2YWxpZ24iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmdjb2xvciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRoLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXR0cnMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWJiciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJheGlzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhlYWRlcnMiIHR5cGU9InhzOklEUkVGUyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY29wZSI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJvdyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb2wiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icm93Z3JvdXAiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29sZ3JvdXAiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c3BhbiIgZGVmYXVsdD0iMSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzcGFuIiBkZWZhdWx0PSIxIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjZWxsaGFsaWduIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjZWxsdmFsaWduIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5vd3JhcCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vd3JhcCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiZ2NvbG9yIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhlaWdodCIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXR0cnMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWJiciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJheGlzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhlYWRlcnMiIHR5cGU9InhzOklEUkVGUyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY29wZSI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJvdyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb2wiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icm93Z3JvdXAiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29sZ3JvdXAiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c3BhbiIgZGVmYXVsdD0iMSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzcGFuIiBkZWZhdWx0PSIxIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjZWxsaGFsaWduIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjZWxsdmFsaWduIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5vd3JhcCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vd3JhcCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiZ2NvbG9yIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhlaWdodCIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CiAgPCEtLQogICAgU2V0IHVwIHRvIHJlYWQgaW4gdGhlIENBTFMgbW9kZWwgY29uZmlndXJlZCB0bwogICAgbWVyZ2Ugd2l0aCB0aGUgWEhUTUwgdGFibGUgbW9kZWwKICAtLT4KICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFibGVzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIEFkZCBsYWJlbCBhbmQgcm9sZSBhdHRyaWJ1dGVzIHRvIHRhYmxlIGFuZCBpbmZvcm1hbHRhYmxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJib2R5YXR0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmxvYXRzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3doZWFkZXIiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJmaXJzdGNvbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3Jvd2hlYWRlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBBZGQgY29tbW9uIGF0dHJpYnV0ZXMgdG8gVGFibGUsIFRHcm91cCwgVEJvZHksIFRIZWFkLCBURm9vdCwgUm93LCAKICAgIEVudHJ5VGJsLCBhbmQgRW50cnkgKGFuZCBJbmZvcm1hbFRhYmxlIGVsZW1lbnQpLgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN1ciI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpdGxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpMThuIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJldmVudHMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRhYmxlcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbW1vbi50YWJsZS5hdHRyaWJzIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJvZHlhdHQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIENvbnRlbnQgbW9kZWwgZm9yIFRhYmxlICh0aGF0IGFsc28gYWxsb3dzIEhUTUwgdGFibGVzKSAtLT4KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGJsLnRhYmxlLm1kbCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0ZXh0b2JqZWN0Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImdyYXBoaWMiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1lZGlhb2JqZWN0Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0Z3JvdXAiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY2FwdGlvbiIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb2xncm91cCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aGVhZCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0Zm9vdCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0Ym9keSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idHIiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Y29tcGxleFR5cGU+CiAgPHhzOmdyb3VwIG5hbWU9ImluZm9ybWFsLnRibC50YWJsZS5tZGwiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGV4dG9iamVjdCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJncmFwaGljIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtZWRpYW9iamVjdCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGdyb3VwIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb2wiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sZ3JvdXAiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGhlYWQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGZvb3QiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGJvZHkiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRyIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDwhLS0gQXR0cmlidXRlcyBmb3IgVGFibGUgKGluY2x1ZGluZyBIVE1MIG9uZXMpIC0tPgogIDwhLS0gTi5CLiBydWxlcyA9IChub25lIHwgZ3JvdXBzIHwgcm93cyB8IGNvbHMgfCBhbGwpIGJ1dCBpdCBjYW4ndCBiZSBzcGVjJ2QgLS0+CiAgPCEtLSB0aGF0IHdheSBiZWNhdXNlICdhbGwnIGFscmVhZHkgb2NjdXJzIGluIGEgZGlmZmVyZW50IGVudW1lcmF0aW9uIGluIC0tPgogIDwhLS0gQ0FMUyB0YWJsZXMgKGZyYW1lKS4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRibC50YWJsZS5hdHQiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0YWJzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0b2NlbnRyeSIgdHlwZT0ieWVzb3Juby5hdHR2YWxzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNob3J0ZW50cnkiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcmllbnQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwb3J0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxhbmQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGd3aWRlIiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3VtbWFyeSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icnVsZXMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2VsbHNwYWNpbmciLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2VsbHBhZGRpbmciLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsZWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNlbnRlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiZ2NvbG9yIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJ0YmwuZnJhbWUuYXR0dmFsIj4KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idm9pZCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFib3ZlIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYmVsb3ciLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJoc2lkZXMiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaHMiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaHMiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ2c2lkZXMiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3giLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3JkZXIiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3Bib3QiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhbGwiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzaWRlcyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vbmUiLz4KICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgPC94czpzaW1wbGVUeXBlPgogIDwhLS0gQWxsb3cgZWl0aGVyIG9iamVjdHMgb3IgaW5saW5lczsgYmV3YXJlIG9mIFJFcyBiZXR3ZWVuIGVsZW1lbnRzLiAtLT4KICA8eHM6Z3JvdXAgbmFtZT0idGJsLmVudHJ5Lm1kbCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6Z3JvdXAgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czpncm91cCByZWY9InRhYmVudHJ5Lm1peCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8IS0tCiAgICB0aGVhZCwgdGZvb3QsIGFuZCB0Ym9keSBhcmUgZGVmaW5lZCBpbiBib3RoIHRhYmxlIG1vZGVscywKICAgIHNvIHdlIHNldCB1cCBwYXJhbWV0ZXIgZW50aXRpZXMgdG8gZGVmaW5lIHVuaW9uIG1vZGVscyBmb3IgdGhlbQogIC0tPgogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0YmwuaGRmdC5tZGwiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idHIiLz4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sc3BlYyIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJvdyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgPC94czpjaG9pY2U+CiAgPC94czpjb21wbGV4VHlwZT4KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGJsLnRib2R5Lm1kbCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0ciIvPgogICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyb3ciLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Y29tcGxleFR5cGU+CjwveHM6c2NoZW1hPgo8IS0tIEVuZCBvZiBEb2NCb29rIFhNTCBIVE1MIFRhYmxlIE1vZHVsZSBWNC40IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4K</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_4/xml.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSI+CiAgPHhzOmltcG9ydCBzY2hlbWFMb2NhdGlvbj0iZG9jYm9vay54c2QiLz4KICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhc2UiLz4KICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYWNlIj4KICAgIDx4czpzaW1wbGVUeXBlPgogICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icHJlc2VydmUiLz4KICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgIDwveHM6c2ltcGxlVHlwZT4KICA8L3hzOmF0dHJpYnV0ZT4KICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhbmciIHR5cGU9InhzOk5NVE9LRU4iLz4KPC94czpzY2hlbWE+Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_5/calstblx.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgQ0FMUyBUYWJsZSBNb2RlbCBWNC41IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBjYWxzdGJseC5tb2QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDIgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogIFRoaXMgRFREIGlzIGJhc2VkIG9uIHRoZSBDQUxTIFRhYmxlIE1vZGVsCiAgUFVCTElDICItLy9VU0EtRE9ELy9EVEQgVGFibGUgTW9kZWwgOTUxMDEwLy9FTiIKICAKICAkSWQ6IGNhbHN0Ymx4LmR0ZCA2MzQwIDIwMDYtMTAtMDMgMTM6MjM6MjRaIG53YWxzaCAkCiAgCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSBhbmQgZGlzdHJpYnV0ZSB0aGUgRG9jQm9vayBEVEQKICBhbmQgaXRzIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUKICBpcyBoZXJlYnkgZ3JhbnRlZCBpbiBwZXJwZXR1aXR5LCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQKICBub3RpY2UgYW5kIHRoaXMgcGFyYWdyYXBoIGFwcGVhciBpbiBhbGwgY29waWVzLiAgVGhlIGNvcHlyaWdodAogIGhvbGRlcnMgbWFrZSBubyByZXByZXNlbnRhdGlvbiBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhlIERURCBmb3IKICBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzZWQgb3IgaW1wbGllZAogIHdhcnJhbnR5LgogIAogIElmIHlvdSBtb2RpZnkgdGhlIERvY0Jvb2sgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBDQUxTIFRhYmxlIE1vZGVsCiAgY29udmVydGVkIHRvIFhNTC4gSXQgaGFzIGJlZW4gbW9kaWZpZWQgc2xpZ2h0bHkgZm9yIHVzZSBpbiB0aGUKICBjb21iaW5lZCBIVE1ML0NBTFMgbW9kZWxzIHN1cHBvcnRlZCBieSBEb2NCb29rIFY0LjUuCi0tPgo8IS0tCiAgVGhlc2UgZGVmaW5pdGlvbnMgYXJlIG5vdCBkaXJlY3RseSByZWxhdGVkIHRvIHRoZSB0YWJsZSBtb2RlbCwgYnV0IGFyZQogIHVzZWQgaW4gdGhlIGRlZmF1bHQgQ0FMUyB0YWJsZSBtb2RlbCBhbmQgYXJlIHVzdWFsbHkgZGVmaW5lZCBlbHNld2hlcmUKICAoYW5kIHByaW9yIHRvIHRoZSBpbmNsdXNpb24gb2YgdGhpcyB0YWJsZSBtb2R1bGUpIGluIGEgQ0FMUyBEVEQuCi0tPgo8IS0tCiAgbm8gaWYgemVybyhzKSwKICB5ZXMgaWYgYW55IG90aGVyIGRpZ2l0cyB2YWx1ZQotLT4KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4KICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiBzY2hlbWFMb2NhdGlvbj0ieG1sLnhzZCIvPgogIDx4czpzaW1wbGVUeXBlIG5hbWU9Inllc29ybm8iPgogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyIvPgogIDwveHM6c2ltcGxlVHlwZT4KICA8eHM6Z3JvdXAgbmFtZT0idGl0bGVzIj4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBkZWZhdWx0IGZvciB1c2UgaW4gZW50cnkgY29udGVudCAtLT4KICA8IS0tCiAgICBUaGUgcGFyYW1ldGVyIGVudGl0aWVzIGFzIGRlZmluZWQgYmVsb3cgcHJvdmlkZSB0aGUgQ0FMUyB0YWJsZSBtb2RlbAogICAgYXMgcHVibGlzaGVkIChhcyBwYXJ0IG9mIHRoZSBFeGFtcGxlIERURCkgaW4gTUlMLUhEQkstMjgwMDEuCiAgICAKICAgIFRoZXNlIGZvbGxvd2luZyBkZWNsYXJhdGlvbnMgcHJvdmlkZSB0aGUgQ0FMUy1jb21wbGlhbnQgZGVmYXVsdCBkZWZpbml0aW9ucwogICAgZm9yIHRoZXNlIGVudGl0aWVzLiAgSG93ZXZlciwgdGhlc2UgZW50aXRpZXMgY2FuIGFuZCBzaG91bGQgYmUgcmVkZWZpbmVkCiAgICAoYnkgZ2l2aW5nIHRoZSBhcHByb3ByaWF0ZSBwYXJhbWV0ZXIgZW50aXR5IGRlY2xhcmF0aW9uKHMpIHByaW9yIHRvIHRoZQogICAgcmVmZXJlbmNlIHRvIHRoaXMgVGFibGUgTW9kZWwgZGVjbGFyYXRpb24gc2V0IGVudGl0eSkgdG8gZml0IHRoZSBuZWVkcwogICAgb2YgdGhlIGN1cnJlbnQgYXBwbGljYXRpb24uCiAgLS0+CiAgPHhzOmdyb3VwIG5hbWU9InRibC50YWJsZS10aXRsZXMubWRsIj4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmdyb3VwIHJlZj0idGl0bGVzIi8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InRibC50YWJsZS1tYWluLm1kbCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0Z3JvdXAiLz4KICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ3JhcGhpYyIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGJsLnRncm91cC5tZGwiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbHNwZWMiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzcGFuc3BlYyIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGhlYWQiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRmb290Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGJvZHkiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpjb21wbGV4VHlwZT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGJsLnRncm91cC5hdHQiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0Z3JvdXBzdHlsZSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRibC5yb3cubWRsIj4KICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImVudHJ5Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZW50cnl0YmwiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Y29tcGxleFR5cGU+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRibC5lbnRyeXRibC5tZGwiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbHNwZWMiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzcGFuc3BlYyIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGhlYWQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0Ym9keSIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmNvbXBsZXhUeXBlPgogIDwhLS0gPT09PT0gIEVsZW1lbnQgYW5kIGF0dHJpYnV0ZSBkZWNsYXJhdGlvbnMgZm9sbG93LiA9PT09PSAtLT4KICA8IS0tIGRvYzpBIGZvcm1hbCB0YWJsZSBpbiBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0YWJsZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjb21wbGV4Q29udGVudD4KICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRibC50YWJsZS5tZGwiPgogICAgICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGFibGUuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRhYmxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmcmFtZSIgdHlwZT0idGJsLmZyYW1lLmF0dHZhbCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YmwudGFibGUuYXR0Ii8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJib2R5YXR0Ii8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN1ciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSB3cmFwcGVyIGZvciB0aGUgbWFpbiBjb250ZW50IG9mIGEgdGFibGUsIG9yIHBhcnQgb2YgYSB0YWJsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGdyb3VwIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNvbXBsZXhDb250ZW50PgogICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idGJsLnRncm91cC5tZGwiPgogICAgICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGdyb3VwLmF0dGxpc3QiLz4KICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgPC94czpjb21wbGV4Q29udGVudD4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0Z3JvdXAuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHMiIHVzZT0icmVxdWlyZWQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRibC50Z3JvdXAuYXR0Ii8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHNlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsZWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNlbnRlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJqdXN0aWZ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNoYXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyb2ZmIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN1ciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6U3BlY2lmaWNhdGlvbnMgZm9yIGEgY29sdW1uIGluIGEgdGFibGUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvbHNwZWMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb2xzcGVjLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xzcGVjLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xudW0iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sbmFtZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2x3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ianVzdGlmeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjaGFyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhcm9mZiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6Rm9ybWF0dGluZyBpbmZvcm1hdGlvbiBmb3IgYSBzcGFubmVkIGNvbHVtbiBpbiBhIHRhYmxlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzcGFuc3BlYyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNwYW5zcGVjLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzcGFuc3BlYy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZXN0IiB1c2U9InJlcXVpcmVkIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWVlbmQiIHVzZT0icmVxdWlyZWQiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3Bhbm5hbWUiIHVzZT0icmVxdWlyZWQiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd3NlcCIgdHlwZT0ieWVzb3JubyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imp1c3RpZnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXJvZmYiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgdGFibGUgaGVhZGVyIGNvbnNpc3Rpbmcgb2Ygb25lIG9yIG1vcmUgcm93cy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGhlYWQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+CiAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0YmwuaGRmdC5tZGwiPgogICAgICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGhlYWQuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRoZWFkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgdGFibGUgZm9vdGVyIGNvbnNpc3Rpbmcgb2Ygb25lIG9yIG1vcmUgcm93cy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGZvb3QiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+CiAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0YmwuaGRmdC5tZGwiPgogICAgICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGZvb3QuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRmb290LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgd3JhcHBlciBmb3IgdGhlIHJvd3Mgb2YgYSB0YWJsZSBvciBpbmZvcm1hbCB0YWJsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGJvZHkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+CiAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0YmwudGJvZHkubWRsIj4KICAgICAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRib2R5LmF0dGxpc3QiLz4KICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgPC94czpjb21wbGV4Q29udGVudD4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0Ym9keS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHJvdyBpbiBhIHRhYmxlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJyb3ciPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+CiAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0Ymwucm93Lm1kbCI+CiAgICAgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb3cuYXR0bGlzdCIvPgogICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICA8L3hzOmNvbXBsZXhDb250ZW50PgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJvdy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtaWRkbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm90dG9tIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN1ciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBzdWJ0YWJsZSBhcHBlYXJpbmcgaW4gcGxhY2Ugb2YgYW4gRW50cnkgaW4gYSB0YWJsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZW50cnl0YmwiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+CiAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0YmwuZW50cnl0YmwubWRsIj4KICAgICAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVudHJ5dGJsLmF0dGxpc3QiLz4KICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgPC94czpjb21wbGV4Q29udGVudD4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbnRyeXRibC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29scyIgdXNlPSJyZXF1aXJlZCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGJsLnRncm91cC5hdHQiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sbmFtZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFubmFtZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lc3QiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZWVuZCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ianVzdGlmeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjaGFyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhcm9mZiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgY2VsbCBpbiBhIHRhYmxlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJlbnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0YmwuZW50cnkubWRsIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbnRyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sbmFtZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lc3QiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZWVuZCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFubmFtZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtb3Jlcm93cyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xzZXAiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c2VwIiB0eXBlPSJ5ZXNvcm5vIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ianVzdGlmeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjaGFyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhcm9mZiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3RhdGUiIHR5cGU9Inllc29ybm8iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3VyIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KPC94czpzY2hlbWE+CjwhLS0gRW5kIG9mIERvY0Jvb2sgQ0FMUyBUYWJsZSBNb2RlbCBWNC41IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_5/dbhierx.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgZG9jdW1lbnQgaGllcmFyY2h5IG1vZHVsZSBWNC41IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkYmhpZXJ4Lm1vZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDQgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZGJoaWVyeC5tb2QgNjM0MCAyMDA2LTEwLTAzIDEzOjIzOjI0WiBud2Fsc2ggJAogIAogIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnkgYW5kIGRpc3RyaWJ1dGUgdGhlIERvY0Jvb2sgRFRECiAgYW5kIGl0cyBhY2NvbXBhbnlpbmcgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlCiAgaXMgaGVyZWJ5IGdyYW50ZWQgaW4gcGVycGV0dWl0eSwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0CiAgbm90aWNlIGFuZCB0aGlzIHBhcmFncmFwaCBhcHBlYXIgaW4gYWxsIGNvcGllcy4gIFRoZSBjb3B5cmlnaHQKICBob2xkZXJzIG1ha2Ugbm8gcmVwcmVzZW50YXRpb24gYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoZSBEVEQgZm9yCiAgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzc2VkIG9yIGltcGxpZWQKICB3YXJyYW50eS4KICAKICBJZiB5b3UgbW9kaWZ5IHRoZSBEb2NCb29rIERURCBpbiBhbnkgd2F5LCBleGNlcHQgZm9yIGRlY2xhcmluZyBhbmQKICByZWZlcmVuY2luZyBhZGRpdGlvbmFsIHNldHMgb2YgZ2VuZXJhbCBlbnRpdGllcyBhbmQgZGVjbGFyaW5nCiAgYWRkaXRpb25hbCBub3RhdGlvbnMsIGxhYmVsIHlvdXIgRFREIGFzIGEgdmFyaWFudCBvZiBEb2NCb29rLiAgU2VlCiAgdGhlIG1haW50ZW5hbmNlIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgCiAgUGxlYXNlIGRpcmVjdCBhbGwgcXVlc3Rpb25zLCBidWcgcmVwb3J0cywgb3Igc3VnZ2VzdGlvbnMgZm9yCiAgY2hhbmdlcyB0byB0aGUgZG9jYm9va0BsaXN0cy5vYXNpcy1vcGVuLm9yZyBtYWlsaW5nIGxpc3QuIEZvciBtb3JlCiAgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2svLgotLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tCiAgVGhpcyBtb2R1bGUgY29udGFpbnMgdGhlIGRlZmluaXRpb25zIGZvciB0aGUgb3ZlcmFsbCBkb2N1bWVudAogIGhpZXJhcmNoaWVzIG9mIERvY0Jvb2sgZG9jdW1lbnRzLiAgSXQgY292ZXJzIGNvbXB1dGVyIGRvY3VtZW50YXRpb24KICBtYW51YWxzIGFuZCBtYW51YWwgZnJhZ21lbnRzLCBhcyB3ZWxsIGFzIHJlZmVyZW5jZSBlbnRyaWVzIChzdWNoIGFzCiAgbWFuIHBhZ2VzKSBhbmQgdGVjaG5pY2FsIGpvdXJuYWxzIG9yIGFudGhvbG9naWVzIGNvbnRhaW5pbmcKICBhcnRpY2xlcy4KICAKICBUaGlzIG1vZHVsZSBkZXBlbmRzIG9uIHRoZSBEb2NCb29rIGluZm9ybWF0aW9uIHBvb2wgbW9kdWxlLiAgQWxsCiAgZWxlbWVudHMgYW5kIGVudGl0aWVzIHJlZmVyZW5jZWQgYnV0IG5vdCBkZWZpbmVkIGhlcmUgYXJlIGFzc3VtZWQKICB0byBiZSBkZWZpbmVkIGluIHRoZSBpbmZvcm1hdGlvbiBwb29sIG1vZHVsZS4KICAKICBJbiBEVEQgZHJpdmVyIGZpbGVzIHJlZmVycmluZyB0byB0aGlzIG1vZHVsZSwgcGxlYXNlIHVzZSBhbiBlbnRpdHkKICBkZWNsYXJhdGlvbiB0aGF0IHVzZXMgdGhlIHB1YmxpYyBpZGVudGlmaWVyIHNob3duIGJlbG93OgogIAogIDwhRU5USVRZICUgZGJoaWVyIFBVQkxJQwogICItLy9PQVNJUy8vRUxFTUVOVFMgRG9jQm9vayBEb2N1bWVudCBIaWVyYXJjaHkgVjQuNS8vRU4iCiAgImRiaGllcngubW9kIj4KICAlZGJoaWVyOwogIAogIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24gb24gdGhlIHBhcmFtZXRlcgogIGVudGl0eSBhbmQgbW9kdWxlIHNjaGVtZSB1c2VkIGluIERvY0Jvb2ssIGN1c3RvbWl6aW5nIERvY0Jvb2sgYW5kCiAgcGxhbm5pbmcgZm9yIGludGVyY2hhbmdlLCBhbmQgY2hhbmdlcyBtYWRlIHNpbmNlIHRoZSBsYXN0IHJlbGVhc2UKICBvZiBEb2NCb29rLgotLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIEVudGl0aWVzIGZvciBtb2R1bGUgaW5jbHVzaW9ucyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSBFbnRpdGllcyBmb3IgZWxlbWVudCBjbGFzc2VzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiPgogIDx4czppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiIHNjaGVtYUxvY2F0aW9uPSJ4bWwueHNkIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXBwZW5kaXguY2xhc3MiIGFic3RyYWN0PSJ0cnVlIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYXBwZW5kaXhpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYm9va2NvbXBvbmVudC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRvY2NoYXAiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXBwZW5kaXguYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJ0aWNsZS5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJkaXYudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJhcnRpY2xlaW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0b2NjaGFwIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJsb3QiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmdyb3VwIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFwcGVuZGl4LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbG9waG9uIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFja25vIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFydGljbGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYm9vay5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJkaXYudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJib29raW5mbyIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImRlZGljYXRpb24iLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idG9jIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxvdCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnbG9zc2FyeSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9ncmFwaHkiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icHJlZmFjZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjaGFwdGVyLmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlZmVyZW5jZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJ0Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFydGljbGUuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYXBwZW5kaXguY2xhc3MiLz4KICAgICAgICAgIDx4czpncm91cCByZWY9ImluZGV4LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbG9waG9uIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJvb2suYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2hhcHRlci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJlZ2lucGFnZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJjaGFwdGVyaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0b2NjaGFwIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYm9va2NvbXBvbmVudC5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmF2LmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNoYXB0ZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPHhzOmdyb3VwIG5hbWU9ImluZGV4LmNsYXNzIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5kZXgiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzZXRpbmRleCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZlbnRyeS5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJlZ2lucGFnZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZlbnRyeWluZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmbWV0YSIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlbWFyayIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZuYW1lZGl2Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZnN5bm9wc2lzZGl2Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3QxIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZzZWN0aW9uIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czplbGVtZW50IG5hbWU9InNlY3Rpb24uY2xhc3MiIGFic3RyYWN0PSJ0cnVlIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0aW9uaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkaXZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdGlvbi5jbGFzcyIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZlbnRyeS5jbGFzcyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdGlvbi5jbGFzcyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czpncm91cCBuYW1lPSJuYXYuY2xhc3MiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0b2MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsb3QiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmRleCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imdsb3NzYXJ5Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvZ3JhcGh5Ii8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDwhLS0gUmVkZWNsYXJhdGlvbiBwbGFjZWhvbGRlciAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tCiAgICBGb3IgcmVkZWNsYXJpbmcgZW50aXRpZXMgdGhhdCBhcmUgZGVjbGFyZWQgYWZ0ZXIgdGhpcyBwb2ludCB3aGlsZQogICAgcmV0YWluaW5nIHRoZWlyIHJlZmVyZW5jZXMgdG8gdGhlIGVudGl0aWVzIHRoYXQgYXJlIGRlY2xhcmVkIGJlZm9yZQogICAgdGhpcyBwb2ludAogIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVudGl0aWVzIGZvciBlbGVtZW50IG1peHR1cmVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmdyb3VwIG5hbWU9ImRpdmNvbXBvbmVudC5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbXBvdW5kLmNsYXNzIi8+CiAgICAgIDx4czpncm91cCByZWY9Imdlbm9iai5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJkZXNjb2JqLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0icmVmY29tcG9uZW50Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29tcG91bmQuY2xhc3MiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZ2Vub2JqLmNsYXNzIi8+CiAgICAgIDx4czpncm91cCByZWY9ImRlc2NvYmouY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJpbmRleGRpdmNvbXBvbmVudC5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpdGVtaXplZGxpc3QiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvcmRlcmVkbGlzdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InZhcmlhYmxlbGlzdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InNpbXBsZWxpc3QiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFuY2hvciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlbWFyayIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0icmVmbmFtZS5jaGFyLm1peCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0icGFydGNvbnRlbnQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYXBwZW5kaXguY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjaGFwdGVyLmNsYXNzIi8+CiAgICAgIDx4czpncm91cCByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFydGljbGUuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcmVmYWNlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZWZlcmVuY2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InJlZmlubGluZS5jaGFyLm1peCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InhyZWYuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ2VuLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGVjaC5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYmFzZS5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJkb2NpbmZvLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJvdGhlci5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InJlZmNsYXNzLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImFwcGxpY2F0aW9uIi8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBSZWRlY2xhcmF0aW9uIHBsYWNlaG9sZGVyIDIgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgIEZvciByZWRlY2xhcmluZyBlbnRpdGllcyB0aGF0IGFyZSBkZWNsYXJlZCBhZnRlciB0aGlzIHBvaW50IHdoaWxlCiAgICByZXRhaW5pbmcgdGhlaXIgcmVmZXJlbmNlcyB0byB0aGUgZW50aXRpZXMgdGhhdCBhcmUgZGVjbGFyZWQgYmVmb3JlCiAgICB0aGlzIHBvaW50CiAgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRW50aXRpZXMgZm9yIGNvbnRlbnQgbW9kZWxzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6Z3JvdXAgbmFtZT0iZGl2LnRpdGxlLmNvbnRlbnQiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzdWJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGVhYmJyZXYiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iYm9va2NvbXBvbmVudC50aXRsZS5jb250ZW50Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic3VidGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlYWJicmV2Ii8+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InNlY3QudGl0bGUuY29udGVudCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InN1YnRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZWFiYnJldiIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJyZWZzZWN0LnRpdGxlLmNvbnRlbnQiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzdWJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGVhYmJyZXYiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iYm9va2NvbXBvbmVudC5jb250ZW50Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3QxIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdGlvbi5jbGFzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3QxIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VjdGlvbi5jbGFzcyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gU2V0IGFuZCBTZXRJbmZvIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGNvbGxlY3Rpb24gb2YgYm9va3MuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNldCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImRpdi50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNldGluZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idG9jIi8+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNldCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJib29rLmNsYXNzIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNldGluZGV4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNldC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZXQuZWxlbWVudCAtLT4KICA8IS0tIEZQSTogU0dNTCBmb3JtYWwgcHVibGljIGlkZW50aWZpZXIgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZnBpIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNldC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldGluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOk1ldGEtaW5mb3JtYXRpb24gZm9yIGEgU2V0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZXRpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2V0aW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZXRpbmZvLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQ29udGVudHM6IElEcyBvZiB0aGUgVG9DLCBCb29rcywgYW5kIFNldEluZGV4IHRoYXQgY29tcHJpc2UKICAgIHRoZSBzZXQsIGluIHRoZSBvcmRlciBvZiB0aGVpciBhcHBlYXJhbmNlCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnRzIiB0eXBlPSJ4czpJRFJFRlMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNldGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNldGluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZXRpbmZvLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzZXQuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gQm9vayBhbmQgQm9va0luZm8gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYm9vay5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBib29rLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJib29rIiBzdWJzdGl0dXRpb25Hcm91cD0iYm9vay5jbGFzcyIvPgogIDwhLS0gZW5kIG9mIGJvb2suZWxlbWVudCAtLT4KICA8IS0tIEZQSTogU0dNTCBmb3JtYWwgcHVibGljIGlkZW50aWZpZXIgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJvb2suYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZwaSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJib29rLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBib29rLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYm9vay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJvb2tpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpNZXRhLWluZm9ybWF0aW9uIGZvciBhIEJvb2suIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImJvb2tpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYm9va2luZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYm9va2luZm8uZWxlbWVudCAtLT4KICA8IS0tCiAgICBDb250ZW50czogSURzIG9mIHRoZSBUb0MsIExvVHMsIFByZWZhY2VzLCBQYXJ0cywgQ2hhcHRlcnMsCiAgICBBcHBlbmRpeGVzLCBSZWZlcmVuY2VzLCBHTG9zc2FyeSwgQmlibGlvZ3JhcGh5LCBhbmQgaW5kZXhlcwogICAgY29tcHJpc2luZyB0aGUgQm9vaywgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIGFwcGVhcmFuY2UKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYm9va2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnRzIiB0eXBlPSJ4czpJRFJFRlMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJvb2tpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBib29raW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJvb2tpbmZvLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBib29rLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIERlZGljYXRpb24sIFRvQywgYW5kIExvVCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImRlZGljYXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgd3JhcHBlciBmb3IgdGhlIGRlZGljYXRpb24gc2VjdGlvbiBvZiBhIGJvb2suIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImRlZGljYXRpb24iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibGVnYWxub3RpY2UubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRlZGljYXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZGVkaWNhdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJkZWRpY2F0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGVkaWNhdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZGVkaWNhdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGRlZGljYXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xvcGhvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGV4dCBhdCB0aGUgYmFjayBvZiBhIGJvb2sgZGVzY3JpYmluZyBmYWN0cyBhYm91dCBpdHMgcHJvZHVjdGlvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29sb3Bob24iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGV4dG9iamVjdC5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sb3Bob24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29sb3Bob24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sb3Bob24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb2xvcGhvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29sb3Bob24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb2xvcGhvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvYy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSB0YWJsZSBvZiBjb250ZW50cy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jZnJvbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0b2NwYXJ0Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRvY2NoYXAiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2JhY2siLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRvYy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2MuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2MuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2MubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2Nmcm9udC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gZW50cnkgaW4gYSB0YWJsZSBvZiBjb250ZW50cyBmb3IgYSBmcm9udCBtYXR0ZXIgY29tcG9uZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0b2Nmcm9udCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2Zyb250LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRvY2Zyb250LmVsZW1lbnQgLS0+CiAgPCEtLSB0byBlbGVtZW50IHRoYXQgdGhpcyBlbnRyeSByZXByZXNlbnRzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2Nmcm9udC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW0uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2Nmcm9udC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdG9jZnJvbnQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2Nmcm9udC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2VudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGNvbXBvbmVudCB0aXRsZSBpbiBhIHRhYmxlIG9mIGNvbnRlbnRzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0b2NlbnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2VudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRvY2VudHJ5LmVsZW1lbnQgLS0+CiAgPCEtLSB0byBlbGVtZW50IHRoYXQgdGhpcyBlbnRyeSByZXByZXNlbnRzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NlbnRyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmQuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRvY2VudHJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NwYXJ0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBlbnRyeSBpbiBhIHRhYmxlIG9mIGNvbnRlbnRzIGZvciBhIHBhcnQgb2YgYSBib29rLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0b2NwYXJ0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2VudHJ5Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NjaGFwIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY3BhcnQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jcGFydC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NwYXJ0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jcGFydC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdG9jcGFydC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRvY3BhcnQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NjaGFwLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBlbnRyeSBpbiBhIHRhYmxlIG9mIGNvbnRlbnRzIGZvciBhIGNvbXBvbmVudCBpbiB0aGUgYm9keSBvZiBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0b2NjaGFwIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2VudHJ5Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NsZXZlbDEiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jY2hhcC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NjaGFwLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2NoYXAuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2NoYXAucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRvY2NoYXAuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NjaGFwLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWwxLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHRvcC1sZXZlbCBlbnRyeSB3aXRoaW4gYSB0YWJsZSBvZiBjb250ZW50cyBlbnRyeSBmb3IgYSBjaGFwdGVyLWxpa2UgY29tcG9uZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0b2NsZXZlbDEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jZW50cnkiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2xldmVsMiIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NsZXZlbDEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jbGV2ZWwxLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2xldmVsMS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsMS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdG9jbGV2ZWwxLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jbGV2ZWwxLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWwyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHNlY29uZC1sZXZlbCBlbnRyeSB3aXRoaW4gYSB0YWJsZSBvZiBjb250ZW50cyBlbnRyeSBmb3IgYSBjaGFwdGVyLWxpa2UgY29tcG9uZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0b2NsZXZlbDIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jZW50cnkiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2xldmVsMyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NsZXZlbDIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jbGV2ZWwyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRvY2xldmVsMi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsMi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdG9jbGV2ZWwyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jbGV2ZWwyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWwzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHRoaXJkLWxldmVsIGVudHJ5IHdpdGhpbiBhIHRhYmxlIG9mIGNvbnRlbnRzIGVudHJ5IGZvciBhIGNoYXB0ZXItbGlrZSBjb21wb25lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InRvY2xldmVsMyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jbGV2ZWw0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsMy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWwzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWwzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZm91cnRoLWxldmVsIGVudHJ5IHdpdGhpbiBhIHRhYmxlIG9mIGNvbnRlbnRzIGVudHJ5IGZvciBhIGNoYXB0ZXItbGlrZSBjb21wb25lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InRvY2xldmVsNCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0b2NlbnRyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idG9jbGV2ZWw1Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsNC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWw0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWw0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NsZXZlbDUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZmlmdGgtbGV2ZWwgZW50cnkgd2l0aGluIGEgdGFibGUgb2YgY29udGVudHMgZW50cnkgZm9yIGEgY2hhcHRlci1saWtlIGNvbXBvbmVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jbGV2ZWw1Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRvY2VudHJ5Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2xldmVsNS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jbGV2ZWw1LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9jbGV2ZWw1LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0b2NsZXZlbDUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0b2NiYWNrLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBlbnRyeSBpbiBhIHRhYmxlIG9mIGNvbnRlbnRzIGZvciBhIGJhY2sgbWF0dGVyIGNvbXBvbmVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9jYmFjayI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRvY2JhY2suYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdG9jYmFjay5lbGVtZW50IC0tPgogIDwhLS0gdG8gZWxlbWVudCB0aGF0IHRoaXMgZW50cnkgcmVwcmVzZW50cyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9jYmFjay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW0uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0b2NiYWNrLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0b2NiYWNrLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9jYmFjay5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgdG9jLmNvbnRlbnQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsb3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgbGlzdCBvZiB0aGUgdGl0bGVzIG9mIGZvcm1hbCBvYmplY3RzIChhcyB0YWJsZXMgb3IgZmlndXJlcykgaW4gYSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibG90Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibG90ZW50cnkiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibG90LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxvdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsb3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxvdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbG90LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbG90Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibG90ZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkFuIGVudHJ5IGluIGEgbGlzdCBvZiB0aXRsZXMuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImxvdGVudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibG90ZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbG90ZW50cnkuZWxlbWVudCAtLT4KICA8IS0tCiAgICBTcmNDcmVkaXQ6IEluZm9ybWF0aW9uIGFib3V0IHRoZSBzb3VyY2Ugb2YgdGhlIGVudHJ5LAogICAgYXMgZm9yIGEgbGlzdCBvZiBpbGx1c3RyYXRpb25zCiAgLS0+CiAgPCEtLSBsaW5rZW5kOiB0byBlbGVtZW50IHRoYXQgdGhpcyBlbnRyeSByZXByZXNlbnRzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsb3RlbnRyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmQuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcmNjcmVkaXQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxvdGVudHJ5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBsb3RlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGxvdGVudHJ5Lm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBsb3QuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gQXBwZW5kaXgsIENoYXB0ZXIsIFBhcnQsIFByZWZhY2UsIFJlZmVyZW5jZSwgUGFydEludHJvIC4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXBwZW5kaXgucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkFuIGFwcGVuZGl4IGluIGEgQm9vayBvciBBcnRpY2xlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcHBlbmRpeCIgc3Vic3RpdHV0aW9uR3JvdXA9ImFwcGVuZGl4LmNsYXNzIi8+CiAgPCEtLSBlbmQgb2YgYXBwZW5kaXguZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXBwZW5kaXguYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFwcGVuZGl4LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhcHBlbmRpeC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFwcGVuZGl4Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2hhcHRlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBjaGFwdGVyLCBhcyBvZiBhIGJvb2suIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNoYXB0ZXIiIHN1YnN0aXR1dGlvbkdyb3VwPSJjaGFwdGVyLmNsYXNzIi8+CiAgPCEtLSBlbmQgb2YgY2hhcHRlci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaGFwdGVyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaGFwdGVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjaGFwdGVyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2hhcHRlci5tb2R1bGUgLS0+CiAgPCEtLQogICAgTm90ZSB0aGF0IFBhcnQgd2FzIHRvIGhhdmUgaXRzIGNvbnRlbnQgbW9kZWwgcmVkdWNlZCBpbiBWNC41LiAgVGhpcwogICAgY2hhbmdlIHdpbGwgbm90IGJlIG1hZGUgYWZ0ZXIgYWxsLgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJ0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGRpdmlzaW9uIGluIGEgYm9vay4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGFydCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InBhcnRpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYm9va2NvbXBvbmVudC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InBhcnRpbnRybyIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJ0Y29udGVudC5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFydC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwYXJ0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcnQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcnQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhcnQuYXR0bGlzdCAtLT4KICA8IS0tIEVMRU1FTlQgUGFydEludHJvIChkZWZpbmVkIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiBwYXJ0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJlZmFjZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6SW50cm9kdWN0b3J5IG1hdHRlciBwcmVjZWRpbmcgdGhlIGZpcnN0IGNoYXB0ZXIgb2YgYSBib29rLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcmVmYWNlIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icHJlZmFjZWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idG9jY2hhcCIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJvb2tjb21wb25lbnQuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmVmYWNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByZWZhY2UuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJlZmFjZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByZWZhY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByZWZhY2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcmVmYWNlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZXJlbmNlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGNvbGxlY3Rpb24gb2YgcmVmZXJlbmNlIGVudHJpZXMuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InJlZmVyZW5jZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZmVyZW5jZWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icGFydGludHJvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZXJlbmNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmVyZW5jZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZlcmVuY2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0YXR1cy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVyZW5jZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmZXJlbmNlLmF0dGxpc3QgLS0+CiAgPCEtLSBFTEVNRU5UIFBhcnRJbnRybyAoZGVmaW5lZCBiZWxvdykgLS0+CiAgPCEtLSBlbmQgb2YgcmVmZXJlbmNlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFydGludHJvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBpbnRyb2R1Y3Rpb24gdG8gdGhlIGNvbnRlbnRzIG9mIGEgcGFydC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGFydGludHJvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZGl2LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJib29rY29tcG9uZW50LmNvbnRlbnQiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFydGludHJvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBhcnRpbnRyby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYXJ0aW50cm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcnRpbnRyby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcGFydGludHJvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcGFydGludHJvLm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBPdGhlciBJbmZvIGVsZW1lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcHBlbmRpeGluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOk1ldGEtaW5mb3JtYXRpb24gZm9yIGFuIEFwcGVuZGl4LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcHBlbmRpeGluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcHBlbmRpeGluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXBwZW5kaXhpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFwcGVuZGl4aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFwcGVuZGl4aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXBwZW5kaXhpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXBwZW5kaXhpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZ3JhcGh5aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYSBCaWJsaW9ncmFwaHkuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb2dyYXBoeWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9ncmFwaHlpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeWluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZ3JhcGh5aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2dyYXBoeWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeWluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9ncmFwaHlpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2hhcHRlcmluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOk1ldGEtaW5mb3JtYXRpb24gZm9yIGEgQ2hhcHRlci4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2hhcHRlcmluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaGFwdGVyaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjaGFwdGVyaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaGFwdGVyaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNoYXB0ZXJpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjaGFwdGVyaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNoYXB0ZXJpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NhcnlpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpNZXRhLWluZm9ybWF0aW9uIGZvciBhIEdsb3NzYXJ5LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc2FyeWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc2FyeWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ2xvc3NhcnlpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzYXJ5aW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzYXJ5aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ2xvc3NhcnlpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NhcnlpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXhpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpNZXRhLWluZm9ybWF0aW9uIGZvciBhbiBJbmRleC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5kZXhpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXhpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGluZGV4aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmRleGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZGV4aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZGV4aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNldGluZGV4aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYSBTZXRJbmRleC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2V0aW5kZXhpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2V0aW5kZXhpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNldGluZGV4aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZXRpbmRleGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXRpbmRleGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNldGluZGV4aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNldGluZGV4aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcnRpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpNZXRhLWluZm9ybWF0aW9uIGZvciBhIFBhcnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InBhcnRpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFydGluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGFydGluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFydGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJ0aW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcGFydGluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwYXJ0aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByZWZhY2VpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpNZXRhLWluZm9ybWF0aW9uIGZvciBhIFByZWZhY2UuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InByZWZhY2VpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJlZmFjZWluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJlZmFjZWluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJlZmFjZWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmVmYWNlaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJlZmFjZWluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcmVmYWNlaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVudHJ5aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYSBSZWZlbnRyeS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmZW50cnlpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZW50cnlpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZlbnRyeWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZlbnRyeWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3Rpb25pbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpNZXRhLWluZm9ybWF0aW9uIGZvciBhIHJlZnNlY3Rpb24uIC0tPgogIDx4czplbGVtZW50IG5hbWU9InJlZnNlY3Rpb25pbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdGlvbmluZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdGlvbmluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdGlvbmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0aW9uaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdGlvbmluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZzZWN0aW9uaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QxaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYSBSZWZTZWN0MS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDFpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDFpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0MWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0MWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QyaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYSBSZWZTZWN0Mi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDJpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDJpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QyaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0MmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0MmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QyaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QyaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QzaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYSBSZWZTZWN0My4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDNpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDNpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0M2luZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0M2luZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnN5bm9wc2lzZGl2aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYSBSZWZTeW5vcHNpc0Rpdi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc3lub3BzaXNkaXZpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc3lub3BzaXNkaXZpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnN5bm9wc2lzZGl2aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzeW5vcHNpc2RpdmluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzeW5vcHNpc2RpdmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnN5bm9wc2lzZGl2aW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnN5bm9wc2lzZGl2aW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVyZW5jZWluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOk1ldGEtaW5mb3JtYXRpb24gZm9yIGEgUmVmZXJlbmNlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZlcmVuY2VpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmZXJlbmNlaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZlcmVuY2VpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVyZW5jZWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZlcmVuY2VpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZlcmVuY2VpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmZXJlbmNlaW5mby5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QxaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYSBTZWN0MS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDFpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDFpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3QxaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0MWluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0MWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3QxaW5mby5hdHRsaXN0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0MmluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOk1ldGEtaW5mb3JtYXRpb24gZm9yIGEgU2VjdDIuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlY3QyaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QyaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0MmluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDJpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDJpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0MmluZm8uYXR0bGlzdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDNpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpNZXRhLWluZm9ybWF0aW9uIGZvciBhIFNlY3QzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0M2luZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0M2luZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDNpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QzaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3QzaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDNpbmZvLmF0dGxpc3QgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Q0aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYSBTZWN0NC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VjdDRpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDRpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3Q0aW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0NGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0NGluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3Q0aW5mby5hdHRsaXN0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0NWluZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOk1ldGEtaW5mb3JtYXRpb24gZm9yIGEgU2VjdDUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlY3Q1aW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Q1aW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0NWluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDVpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDVpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0NWluZm8uYXR0bGlzdCAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBTZWN0aW9uIChwYXJhbGxlbCB0byBTZWN0KikgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Rpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgcmVjdXJzaXZlIHNlY3Rpb24uIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlY3Rpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJzZWN0aW9uLmNsYXNzIi8+CiAgPCEtLSBlbmQgb2Ygc2VjdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWN0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VjdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Rpb25pbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpNZXRhLWluZm9ybWF0aW9uIGZvciBhIHJlY3Vyc2l2ZSBzZWN0aW9uLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN0aW9uaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY3Rpb25pbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY3Rpb25pbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Rpb25pbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdGlvbmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3Rpb25pbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VjdGlvbmluZm8ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHNlY3Rpb24uY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gU2VjdDEsIFNlY3QyLCBTZWN0MywgU2VjdDQsIFNlY3Q1IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgdG9wLWxldmVsIHNlY3Rpb24gb2YgZG9jdW1lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlY3QxIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0MWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3QyIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0MiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0MS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0MS5lbGVtZW50IC0tPgogIDwhLS0KICAgIFJlbmRlcmFzOiBJbmRpY2F0ZXMgdGhlIGZvcm1hdCBpbiB3aGljaCB0aGUgaGVhZGluZyBzaG91bGQKICAgIGFwcGVhcgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0MS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVuZGVyYXMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0MS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWN0MS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHN1YnNlY3Rpb24gd2l0aGluIGEgU2VjdDEuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlY3QyIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0MmluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3QzIi8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0MyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0Mi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0Mi5lbGVtZW50IC0tPgogIDwhLS0KICAgIFJlbmRlcmFzOiBJbmRpY2F0ZXMgdGhlIGZvcm1hdCBpbiB3aGljaCB0aGUgaGVhZGluZyBzaG91bGQKICAgIGFwcGVhcgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0Mi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVuZGVyYXMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0Mi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWN0Mi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3QzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHN1YnNlY3Rpb24gd2l0aGluIGEgU2VjdDIuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlY3QzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0M2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3Q0Ii8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0NCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0My5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0My5lbGVtZW50IC0tPgogIDwhLS0KICAgIFJlbmRlcmFzOiBJbmRpY2F0ZXMgdGhlIGZvcm1hdCBpbiB3aGljaCB0aGUgaGVhZGluZyBzaG91bGQKICAgIGFwcGVhcgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0My5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVuZGVyYXMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0My5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWN0My5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Q0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHN1YnNlY3Rpb24gd2l0aGluIGEgU2VjdDMuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlY3Q0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0NGluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlY3Q1Ii8+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzaW1wbGVzZWN0Ii8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmVudHJ5LmNsYXNzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWN0NSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlc2VjdCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5hdi5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0NC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWN0NC5lbGVtZW50IC0tPgogIDwhLS0KICAgIFJlbmRlcmFzOiBJbmRpY2F0ZXMgdGhlIGZvcm1hdCBpbiB3aGljaCB0aGUgaGVhZGluZyBzaG91bGQKICAgIGFwcGVhcgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN0NC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVuZGVyYXMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0MyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZWN0NSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN0NC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VjdDQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWN0NC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3Q1LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHN1YnNlY3Rpb24gd2l0aGluIGEgU2VjdDQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlY3Q1Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0NWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmZW50cnkuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpbXBsZXNlY3QiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuYXYuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VjdDUuZWxlbWVudCAtLT4KICA8IS0tCiAgICBSZW5kZXJhczogSW5kaWNhdGVzIHRoZSBmb3JtYXQgaW4gd2hpY2ggdGhlIGhlYWRpbmcgc2hvdWxkCiAgICBhcHBlYXIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VjdDUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbmRlcmFzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VjdDQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdDUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY3Q1LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VjdDUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaW1wbGVzZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHNlY3Rpb24gb2YgYSBkb2N1bWVudCB3aXRoIG5vIHN1YmRpdmlzaW9ucy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2ltcGxlc2VjdCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZGl2Y29tcG9uZW50Lm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaW1wbGVzZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNpbXBsZXNlY3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2ltcGxlc2VjdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBsZXNlY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNpbXBsZXNlY3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzaW1wbGVzZWN0Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBCaWJsaW9ncmFwaHkgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9ncmFwaHkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgYmlibGlvZ3JhcGh5LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9ncmFwaHkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJpYmxpb2dyYXBoeWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImJvb2tjb21wb25lbnQudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYmlibGlvZGl2Ii8+CiAgICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9lbnRyeSIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb21peGVkIi8+CiAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvZ3JhcGh5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9ncmFwaHkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9ncmFwaHkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb2Rpdi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBzZWN0aW9uIG9mIGEgQmlibGlvZ3JhcGh5LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9kaXYiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb2VudHJ5Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb21peGVkIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2Rpdi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9kaXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZGl2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvZGl2LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9kaXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9kaXYubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb2dyYXBoeS5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBHbG9zc2FyeSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2FyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBnbG9zc2FyeS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ2xvc3NhcnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Imdsb3NzYXJ5aW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iYm9va2NvbXBvbmVudC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc2RpdiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ2xvc3NlbnRyeSIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJiaWJsaW9ncmFwaHkiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NhcnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ2xvc3NhcnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NhcnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc2FyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ2xvc3NhcnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc2FyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzZGl2LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGRpdmlzaW9uIGluIGEgR2xvc3NhcnkuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Imdsb3NzZGl2Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCByZWY9InNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc2VudHJ5Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzZGl2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdsb3NzZGl2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzZGl2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NkaXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzZGl2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ2xvc3NkaXYubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzYXJ5LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEluZGV4IGFuZCBTZXRJbmRleCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4ZXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkFuIGluZGV4LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmRleCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iaW5kZXhpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJib29rY29tcG9uZW50LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5kZXhkaXYiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5kZXhlbnRyeSIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbmRleC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmRleC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXhlcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5kZXguYXR0bGlzdCAtLT4KICA8IS0tIGRvYzpBbiBpbmRleCB0byBhIHNldCBvZiBib29rcy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2V0aW5kZXgiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNldGluZGV4aW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iYm9va2NvbXBvbmVudC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZGV4ZGl2Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZGV4ZW50cnkiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2V0aW5kZXguYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2V0aW5kZXguZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2V0aW5kZXguYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleGVzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZXRpbmRleC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZGV4ZXMubW9kdWxlIC0tPgogIDwhLS0KICAgIFNlZ21lbnRlZExpc3QgaW4gdGhpcyBjb250ZW50IGlzIHVzZWZ1bCBmb3IgbWFya2luZyB1cCBwZXJtdXRlZAogICAgaW5kaWNlcy4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXhkaXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZGl2aXNpb24gaW4gYW4gaW5kZXguIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImluZGV4ZGl2Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0ic2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5kZXhkaXZjb21wb25lbnQubWl4Ii8+CiAgICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmRleGVudHJ5Ii8+CiAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VnbWVudGVkbGlzdCIvPgogICAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXhkaXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5kZXhkaXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXhkaXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleGRpdi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5kZXhkaXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbmRleGRpdi5tb2R1bGUgLS0+CiAgPCEtLSBJbmRleCBlbnRyaWVzIGFwcGVhciBpbiB0aGUgaW5kZXgsIG5vdCB0aGUgdGV4dC4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZGV4ZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkFuIGVudHJ5IGluIGFuIGluZGV4LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmRleGVudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icHJpbWFyeWllIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VlaWUiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VlYWxzb2llIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOnNlcXVlbmNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzZWNvbmRhcnlpZSIvPgogICAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzZWVpZSIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNlZWFsc29pZSIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRlcnRpYXJ5aWUiLz4KICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4ZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5kZXhlbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmRleGVudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5kZXhlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5kZXhlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZGV4ZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmltc2VjdGVyaWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgcHJpbWFyeSB0ZXJtIGluIGFuIGluZGV4IGVudHJ5LCBub3QgaW4gdGhlIHRleHQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InByaW1hcnlpZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW1hcnlpZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwcmltYXJ5aWUuZWxlbWVudCAtLT4KICA8IS0tIHRvIEluZGV4VGVybXMgdGhhdCB0aGVzZSBlbnRyaWVzIHJlcHJlc2VudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJpbWFyeWllLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmltc2VjdGVyaWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByaW1hcnlpZS5hdHRsaXN0IC0tPgogIDwhLS0gZG9jOkEgc2Vjb25kYXJ5IHRlcm0gaW4gYW4gaW5kZXggZW50cnksIHJhdGhlciB0aGFuIGluIHRoZSB0ZXh0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWNvbmRhcnlpZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlY29uZGFyeWllLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY29uZGFyeWllLmVsZW1lbnQgLS0+CiAgPCEtLSB0byBJbmRleFRlcm1zIHRoYXQgdGhlc2UgZW50cmllcyByZXByZXNlbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY29uZGFyeWllLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmltc2VjdGVyaWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY29uZGFyeWllLmF0dGxpc3QgLS0+CiAgPCEtLSBkb2M6QSB0ZXJ0aWFyeSB0ZXJtIGluIGFuIGluZGV4IGVudHJ5LCByYXRoZXIgdGhhbiBpbiB0aGUgdGV4dC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGVydGlhcnlpZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRlcnRpYXJ5aWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGVydGlhcnlpZS5lbGVtZW50IC0tPgogIDwhLS0gdG8gSW5kZXhUZXJtcyB0aGF0IHRoZXNlIGVudHJpZXMgcmVwcmVzZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0ZXJ0aWFyeWllLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmltc2VjdGVyaWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRlcnRpYXJ5aWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcmltc2VjdGVyaWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWVpZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBTZWUgZW50cnkgaW4gYW4gaW5kZXgsIHJhdGhlciB0aGFuIGluIHRoZSB0ZXh0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWVpZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZWllLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlZWllLmVsZW1lbnQgLS0+CiAgPCEtLSB0byBJbmRleEVudHJ5IHRvIGxvb2sgdXAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZWllLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZWllLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWVpZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlZWllLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VlYWxzb2llLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIFNlZSBhbHNvIGVudHJ5IGluIGFuIGluZGV4LCByYXRoZXIgdGhhbiBpbiB0aGUgdGV4dC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VlYWxzb2llIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VlYWxzb2llLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlZWFsc29pZS5lbGVtZW50IC0tPgogIDwhLS0gdG8gcmVsYXRlZCBJbmRleEVudHJpZXMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZWFsc29pZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VlYWxzb2llLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzZWVhbHNvaWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWVhbHNvaWUubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGluZGV4LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFJlZkVudHJ5IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmVudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHJlZmVyZW5jZSBwYWdlIChvcmlnaW5hbGx5IGEgVU5JWCBtYW4tc3R5bGUgcmVmZXJlbmNlIHBhZ2UpLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZlbnRyeSIgc3Vic3RpdHV0aW9uR3JvdXA9InJlZmVudHJ5LmNsYXNzIi8+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZm1ldGEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOk1ldGEtaW5mb3JtYXRpb24gZm9yIGEgcmVmZXJlbmNlIGVudHJ5LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZtZXRhIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVmZW50cnl0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJtYW52b2xudW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZm1pc2NpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZm1ldGEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmbWV0YS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZtZXRhLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbWV0YS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmbWV0YS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZm1ldGEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZtaXNjaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYSByZWZlcmVuY2UgZW50cnkgb3RoZXIgdGhhbiB0aGUgdGl0bGUgYW5kIHZvbHVtZSBudW1iZXIuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InJlZm1pc2NpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbWlzY2luZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmbWlzY2luZm8uZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBGcmVlbHkgYXNzaWduYWJsZSBwYXJhbWV0ZXI7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZm1pc2NpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbWlzY2luZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZm1pc2NpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmbWlzY2luZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZuYW1lZGl2LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSwgcHVycG9zZSwgYW5kIGNsYXNzaWZpY2F0aW9uIG9mIGEgcmVmZXJlbmNlIHBhZ2UuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InJlZm5hbWVkaXYiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZmRlc2NyaXB0b3IiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZuYW1lIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZWZwdXJwb3NlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZjbGFzcyIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlbWFyayIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbmFtZWRpdi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZWZuYW1lZGl2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZm5hbWVkaXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZuYW1lZGl2LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZWZuYW1lZGl2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmbmFtZWRpdi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmRlc2NyaXB0b3Iucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZGVzY3JpcHRpb24gb2YgdGhlIHRvcGljIG9mIGEgcmVmZXJlbmNlIHBhZ2UuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InJlZmRlc2NyaXB0b3IiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmbmFtZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZkZXNjcmlwdG9yLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmRlc2NyaXB0b3IuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZGVzY3JpcHRvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmRlc2NyaXB0b3Iucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZmRlc2NyaXB0b3IuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZkZXNjcmlwdG9yLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmbmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIG5hbWUgb2YgKG9uZSBvZikgdGhlIHN1YmplY3Qocykgb2YgYSByZWZlcmVuY2UgcGFnZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmbmFtZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZuYW1lLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmbmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmbmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZm5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZwdXJwb3NlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHNob3J0IChvbmUgc2VudGVuY2UpIHN5bm9wc2lzIG9mIHRoZSB0b3BpYyBvZiBhIHJlZmVyZW5jZSBwYWdlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZwdXJwb3NlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmlubGluZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZwdXJwb3NlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnB1cnBvc2UuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmcHVycG9zZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnB1cnBvc2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnB1cnBvc2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZwdXJwb3NlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmY2xhc3Mucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBzY29wZSBvciBvdGhlciBpbmRpY2F0aW9uIG9mIGFwcGxpY2FiaWxpdHkgb2YgYSByZWZlcmVuY2UgZW50cnkuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InJlZmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmNsYXNzLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmNsYXNzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmNsYXNzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZmNsYXNzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmY2xhc3Mucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZmNsYXNzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmY2xhc3MubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzeW5vcHNpc2Rpdi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBzeW50YWN0aWMgc3lub3BzaXMgb2YgdGhlIHN1YmplY3Qgb2YgdGhlIHJlZmVyZW5jZSBwYWdlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZzeW5vcHNpc2RpdiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmc3lub3BzaXNkaXZpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3QyIi8+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdDIiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc3lub3BzaXNkaXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc3lub3BzaXNkaXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc3lub3BzaXNkaXYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzeW5vcHNpc2Rpdi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc3lub3BzaXNkaXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZzeW5vcHNpc2Rpdi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3Rpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgcmVjdXJzaXZlIHNlY3Rpb24gaW4gYSByZWZlbnRyeS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmc2VjdGlvbmluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJyZWZzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3Rpb24iLz4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZzZWN0aW9uIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3Rpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJlZnNlY3Rpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0MS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBtYWpvciBzdWJzZWN0aW9uIG9mIGEgcmVmZXJlbmNlIGVudHJ5LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWZzZWN0MSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmVmc2VjdDFpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icmVmc2VjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZmNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZzZWN0MiIvPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3QyIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3QxLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QxLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QxLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZWZzZWN0Mi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBzdWJzZWN0aW9uIG9mIGEgUmVmU2VjdDEuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InJlZnNlY3QyIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZWZzZWN0MmluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJyZWZzZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlZnNlY3QzIi8+CiAgICAgICAgICA8L3hzOnNlcXVlbmNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icmVmc2VjdDMiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmc2VjdDIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZzZWN0Mi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZzZWN0Mi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHN1YnNlY3Rpb24gb2YgYSBSZWZTZWN0Mi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmVmc2VjdDMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJlZnNlY3QzaW5mbyIvPgogICAgICAgIDx4czpncm91cCByZWY9InJlZnNlY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZWZjb21wb25lbnQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZnNlY3QzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlZnNlY3QzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdHVzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVmc2VjdDMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZnNlY3QzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVmc2VjdDMubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEFydGljbGUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgQW4gQXJ0aWNsZSBpcyBhIGNoYXB0ZXItbGV2ZWwsIHN0YW5kLWFsb25lIGRvY3VtZW50IHRoYXQgaXMgb2Z0ZW4sCiAgICBidXQgbmVlZCBub3QgYmUsIGNvbGxlY3RlZCBpbnRvIGEgQm9vay4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJ0aWNsZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gYXJ0aWNsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJ0aWNsZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImFydGljbGUuY2xhc3MiLz4KICA8IS0tIGVuZCBvZiBhcnRpY2xlLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgQ2xhc3M6IEluZGljYXRlcyB0aGUgdHlwZSBvZiBhIHBhcnRpY3VsYXIgYXJ0aWNsZTsKICAgIGFsbCBhcnRpY2xlcyBoYXZlIHRoZSBzYW1lIHN0cnVjdHVyZSBhbmQgZ2VuZXJhbCBwdXJwb3NlLgogICAgTm8gZGVmYXVsdC4KICAtLT4KICA8IS0tIFBhcmVudEJvb2s6IElEIG9mIHRoZSBlbmNsb3NpbmcgQm9vayAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJ0aWNsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJqb3VybmFsYXJ0aWNsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcm9kdWN0c2hlZXQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0id2hpdGVwYXBlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0ZWNocmVwb3J0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNwZWNpZmljYXRpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZmFxIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhcmVudGJvb2siIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0dXMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcnRpY2xlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KPC94czpzY2hlbWE+CjwhLS0gZW5kIG9mIGFydGljbGUuYXR0bGlzdCAtLT4KPCEtLSBlbmQgb2YgYXJ0aWNsZS5tb2R1bGUgLS0+CjwhLS0gRW5kIG9mIERvY0Jvb2sgZG9jdW1lbnQgaGllcmFyY2h5IG1vZHVsZSBWNC41IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_5/dbnotnx.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgbm90YXRpb25zIG1vZHVsZSBWNC41IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkYm5vdG54Lm1vZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDQgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZGJub3RueC5tb2QgNjM0MCAyMDA2LTEwLTAzIDEzOjIzOjI0WiBud2Fsc2ggJAogIAogIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnkgYW5kIGRpc3RyaWJ1dGUgdGhlIERvY0Jvb2sgRFRECiAgYW5kIGl0cyBhY2NvbXBhbnlpbmcgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlCiAgaXMgaGVyZWJ5IGdyYW50ZWQgaW4gcGVycGV0dWl0eSwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0CiAgbm90aWNlIGFuZCB0aGlzIHBhcmFncmFwaCBhcHBlYXIgaW4gYWxsIGNvcGllcy4gIFRoZSBjb3B5cmlnaHQKICBob2xkZXJzIG1ha2Ugbm8gcmVwcmVzZW50YXRpb24gYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoZSBEVEQgZm9yCiAgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzc2VkIG9yIGltcGxpZWQKICB3YXJyYW50eS4KICAKICBJZiB5b3UgbW9kaWZ5IHRoZSBEb2NCb29rIERURCBpbiBhbnkgd2F5LCBleGNlcHQgZm9yIGRlY2xhcmluZyBhbmQKICByZWZlcmVuY2luZyBhZGRpdGlvbmFsIHNldHMgb2YgZ2VuZXJhbCBlbnRpdGllcyBhbmQgZGVjbGFyaW5nCiAgYWRkaXRpb25hbCBub3RhdGlvbnMsIGxhYmVsIHlvdXIgRFREIGFzIGEgdmFyaWFudCBvZiBEb2NCb29rLiAgU2VlCiAgdGhlIG1haW50ZW5hbmNlIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgCiAgUGxlYXNlIGRpcmVjdCBhbGwgcXVlc3Rpb25zLCBidWcgcmVwb3J0cywgb3Igc3VnZ2VzdGlvbnMgZm9yCiAgY2hhbmdlcyB0byB0aGUgZG9jYm9va0BsaXN0cy5vYXNpcy1vcGVuLm9yZyBtYWlsaW5nIGxpc3QuIEZvciBtb3JlCiAgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2svLgotLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tCiAgVGhpcyBtb2R1bGUgY29udGFpbnMgdGhlIG5vdGF0aW9uIGRlY2xhcmF0aW9ucyB1c2VkIGJ5IERvY0Jvb2suCiAgCiAgSW4gRFREIGRyaXZlciBmaWxlcyByZWZlcnJpbmcgdG8gdGhpcyBtb2R1bGUsIHBsZWFzZSB1c2UgYW4gZW50aXR5CiAgZGVjbGFyYXRpb24gdGhhdCB1c2VzIHRoZSBwdWJsaWMgaWRlbnRpZmllciBzaG93biBiZWxvdzoKICAKICA8IUVOVElUWSAlIGRibm90biBQVUJMSUMKICAiLS8vT0FTSVMvL0VOVElUSUVTIERvY0Jvb2sgTm90YXRpb25zIFY0LjUvL0VOIgogICJkYm5vdG54Lm1vZCI+CiAgJWRibm90bjsKICAKICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHRoZSBwYXJhbWV0ZXIKICBlbnRpdHkgYW5kIG1vZHVsZSBzY2hlbWUgdXNlZCBpbiBEb2NCb29rLCBjdXN0b21pemluZyBEb2NCb29rIGFuZAogIHBsYW5uaW5nIGZvciBpbnRlcmNoYW5nZSwgYW5kIGNoYW5nZXMgbWFkZSBzaW5jZSB0aGUgbGFzdCByZWxlYXNlCiAgb2YgRG9jQm9vay4KLS0+Cjx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+CiAgPHhzOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIgc2NoZW1hTG9jYXRpb249InhtbC54c2QiLz4KICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJub3RhdGlvbi5jbGFzcyI+CiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkJNUCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkNHTS1DSEFSIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQ0dNLUJJTkFSWSIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkNHTS1DTEVBUiIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRJVFJPRkYiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJEVkkiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJFUFMiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJFUU4iLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJGQVgiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJHSUYiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJHSUY4N2EiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJHSUY4OWEiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJKUEciLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJKUEVHIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iSUdFUyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBDWCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBJQyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBORyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBTIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iU0dNTCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlRCTCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlRFWCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlRJRkYiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJXTUYiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJXUEciLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJTVkciLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJQREYiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJTV0YiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lc3BlY2lmaWMiLz4KICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgPC94czpzaW1wbGVUeXBlPgo8L3hzOnNjaGVtYT4KPCEtLSBXb3JkUGVyZmVjdCBHcmFwaGljIGZvcm1hdCAtLT4KPCEtLSBFbmQgb2YgRG9jQm9vayBub3RhdGlvbnMgbW9kdWxlIFY0LjUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_5/dbpoolx.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgWE1MIGluZm9ybWF0aW9uIHBvb2wgbW9kdWxlIFY0LjUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkYnBvb2x4Lm1vZCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDQgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogICRJZDogZGJwb29seC5tb2QgNjM0MCAyMDA2LTEwLTAzIDEzOjIzOjI0WiBud2Fsc2ggJAogIAogIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnkgYW5kIGRpc3RyaWJ1dGUgdGhlIERvY0Jvb2sgWE1MIERURAogIGFuZCBpdHMgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZQogIGlzIGhlcmVieSBncmFudGVkIGluIHBlcnBldHVpdHksIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodAogIG5vdGljZSBhbmQgdGhpcyBwYXJhZ3JhcGggYXBwZWFyIGluIGFsbCBjb3BpZXMuICBUaGUgY29weXJpZ2h0CiAgaG9sZGVycyBtYWtlIG5vIHJlcHJlc2VudGF0aW9uIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGUgRFREIGZvcgogIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3NlZCBvciBpbXBsaWVkCiAgd2FycmFudHkuCiAgCiAgSWYgeW91IG1vZGlmeSB0aGUgRG9jQm9vayBYTUwgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBvYmplY3RzLCBpbmxpbmUKICBlbGVtZW50cywgYW5kIHNvIG9uIHRoYXQgYXJlIGF2YWlsYWJsZSB0byBiZSB1c2VkIGFzIHRoZSBtYWluCiAgY29udGVudCBvZiBEb2NCb29rIGRvY3VtZW50cy4gIFNvbWUgZWxlbWVudHMgYXJlIHVzZWZ1bCBmb3IgZ2VuZXJhbAogIHB1Ymxpc2hpbmcsIGFuZCBvdGhlcnMgYXJlIHVzZWZ1bCBzcGVjaWZpY2FsbHkgZm9yIGNvbXB1dGVyCiAgZG9jdW1lbnRhdGlvbi4KICAKICBUaGlzIG1vZHVsZSBoYXMgdGhlIGZvbGxvd2luZyBkZXBlbmRlbmNpZXMgb24gb3RoZXIgbW9kdWxlczoKICAKICBvIEl0IGFzc3VtZXMgdGhhdCBhICVub3RhdGlvbi5jbGFzczsgZW50aXR5IGlzIGRlZmluZWQgYnkgdGhlCiAgICBkcml2ZXIgZmlsZSBvciBvdGhlciBoaWdoLWxldmVsIG1vZHVsZS4gIFRoaXMgZW50aXR5IGlzCiAgICByZWZlcmVuY2VkIGluIHRoZSBOT1RBVElPTiBhdHRyaWJ1dGVzIGZvciB0aGUgZ3JhcGhpYy1yZWxhdGVkIGFuZAogICAgTW9kZVNwZWMgZWxlbWVudHMuCiAgCiAgbyBJdCBhc3N1bWVzIHRoYXQgYW4gYXBwcm9wcmlhdGVseSBwYXJhbWV0ZXJpemVkIHRhYmxlIG1vZHVsZSBpcwogICAgYXZhaWxhYmxlIGZvciB1c2Ugd2l0aCB0aGUgdGFibGUtcmVsYXRlZCBlbGVtZW50cy4KICAKICBJbiBEVEQgZHJpdmVyIGZpbGVzIHJlZmVycmluZyB0byB0aGlzIG1vZHVsZSwgcGxlYXNlIHVzZSBhbiBlbnRpdHkKICBkZWNsYXJhdGlvbiB0aGF0IHVzZXMgdGhlIHB1YmxpYyBpZGVudGlmaWVyIHNob3duIGJlbG93OgogIAogIDwhRU5USVRZICUgZGJwb29sIFBVQkxJQwogICItLy9PQVNJUy8vRUxFTUVOVFMgRG9jQm9vayBYTUwgSW5mb3JtYXRpb24gUG9vbCBWNC41Ly9FTiIKICAiZGJwb29seC5tb2QiPgogICVkYnBvb2w7CiAgCiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiB0aGUgcGFyYW1ldGVyCiAgZW50aXR5IGFuZCBtb2R1bGUgc2NoZW1lIHVzZWQgaW4gRG9jQm9vaywgY3VzdG9taXppbmcgRG9jQm9vayBhbmQKICBwbGFubmluZyBmb3IgaW50ZXJjaGFuZ2UsIGFuZCBjaGFuZ2VzIG1hZGUgc2luY2UgdGhlIGxhc3QgcmVsZWFzZQogIG9mIERvY0Jvb2suCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRm9ybXMgZW50aXRpZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSBUaGVzZSBQRXMgcHJvdmlkZSB0aGUgaG9vayBieSB3aGljaCB0aGUgZm9ybXMgbW9kdWxlIGNhbiBiZSBpbnNlcnRlZCAtLT4KPCEtLSBpbnRvIHRoZSBEVEQuIC0tPgo8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiPgogIDx4czppbmNsdWRlIHNjaGVtYUxvY2F0aW9uPSJodG1sdGJseC54c2QiLz4KICA8eHM6aW5jbHVkZSBzY2hlbWFMb2NhdGlvbj0iY2Fsc3RibHgueHNkIi8+CiAgPHhzOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIgc2NoZW1hTG9jYXRpb249InhtbC54c2QiLz4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBHZW5lcmFsLXB1cnBvc2Ugc2VtYW50aWNzIGVudGl0aWVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czpzaW1wbGVUeXBlIG5hbWU9Inllc29ybm8uYXR0dmFscyI+CiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIi8+CiAgPC94czpzaW1wbGVUeXBlPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVudGl0aWVzIGZvciBtb2R1bGUgaW5jbHVzaW9ucyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRW50aXRpZXMgZm9yIGVsZW1lbnQgY2xhc3NlcyBhbmQgbWl4dHVyZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tICJVYmlxdWl0b3VzIiBjbGFzc2VzOiBuZHh0ZXJtLmNsYXNzIGFuZCBiZWdpbnBhZ2UgLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibmR4dGVybS5jbGFzcyIgYWJzdHJhY3Q9InRydWUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InByaW1hcnkiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2Vjb25kYXJ5Ii8+CiAgICAgICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIj4KICAgICAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRlcnRpYXJ5Ii8+CiAgICAgICAgICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VlIi8+CiAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlZWFsc28iLz4KICAgICAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzZWUiLz4KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWVhbHNvIi8+CiAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2VlIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWVhbHNvIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZGV4dGVybS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIE9iamVjdC1sZXZlbCBjbGFzc2VzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGlzdC5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJhZG1vbi5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaW5lc3BlY2lmaWMuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWV0aG9kLnN5bm9wLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIgc3Vic3RpdHV0aW9uR3JvdXA9InN5bm9wLmNsYXNzIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3lub3AuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGFyYS5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmZvcm1hbC5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6ZWxlbWVudCBuYW1lPSJmb3JtYWwuY2xhc3MiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPCEtLSBUaGUgRG9jQm9vayBUQyBtYXkgcHJvZHVjZSBhbiBvZmZpY2lhbCBFQk5GIG1vZHVsZSBmb3IgRG9jQm9vay4gLS0+CiAgPCEtLSBUaGlzIFBFIHByb3ZpZGVzIHRoZSBob29rIGJ5IHdoaWNoIGl0IGNhbiBiZSBpbnNlcnRlZCBpbnRvIHRoZSBEVEQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvbXBvdW5kLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czpncm91cCBuYW1lPSJnZW5vYmouY2xhc3MiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhbmNob3IiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJicmlkZ2VoZWFkIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icmVtYXJrIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaGlnaGxpZ2h0cyIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iZGVzY29iai5jbGFzcyI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFic3RyYWN0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yYmx1cmIiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlcGlncmFwaCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8IS0tIENoYXJhY3Rlci1sZXZlbCBjbGFzc2VzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ieHJlZi5jaGFyLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czplbGVtZW50IG5hbWU9Imdlbi5jaGFyLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czplbGVtZW50IG5hbWU9ImxpbmsuY2hhci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8IS0tIFRoZSBEb2NCb29rIFRDIG1heSBwcm9kdWNlIGFuIG9mZmljaWFsIEVCTkYgbW9kdWxlIGZvciBEb2NCb29rLiAtLT4KICA8IS0tIFRoaXMgUEUgcHJvdmlkZXMgdGhlIGhvb2sgYnkgd2hpY2ggaXQgY2FuIGJlIGluc2VydGVkIGludG8gdGhlIERURC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGVjaC5jaGFyLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDx4czpncm91cCBuYW1lPSJiYXNlLmNoYXIuY2xhc3MiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFuY2hvciIvPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImRvY2luZm8uY2hhci5jbGFzcyIgYWJzdHJhY3Q9InRydWUiLz4KICA8eHM6Z3JvdXAgbmFtZT0ib3RoZXIuY2hhci5jbGFzcyI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlbWFyayIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN1YnNjcmlwdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN1cGVyc2NyaXB0Ii8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czplbGVtZW50IG5hbWU9ImlubGluZW9iai5jaGFyLmNsYXNzIiBhYnN0cmFjdD0idHJ1ZSIvPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVudGl0aWVzIGZvciBjb250ZW50IG1vZGVscyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmdyb3VwIG5hbWU9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGVhYmJyZXYiLz4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8IS0tIFJlZGVjbGFyYXRpb24gcGxhY2Vob2xkZXIgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgRm9yIHJlZGVjbGFyaW5nIGVudGl0aWVzIHRoYXQgYXJlIGRlY2xhcmVkIGFmdGVyIHRoaXMgcG9pbnQgd2hpbGUKICAgIHJldGFpbmluZyB0aGVpciByZWZlcmVuY2VzIHRvIHRoZSBlbnRpdGllcyB0aGF0IGFyZSBkZWNsYXJlZCBiZWZvcmUKICAgIHRoaXMgcG9pbnQKICAtLT4KICA8IS0tIE9iamVjdC1sZXZlbCBtaXh0dXJlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QgYWRtbiBsaW5lIHN5bnAgcGFyYSBpbmZtIGZvcm0gY21wZCBnZW4gIGRlc2MKICAgIENvbXBvbmVudCBtaXh0dXJlICAgICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFgKICAgIFNpZGViYXIgbWl4dHVyZSAgICAgICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgYSAgICBYCiAgICBGb290bm90ZSBtaXh0dXJlICAgICAgICBYICAgICAgICAgWCAgICBYICAgIFggICAgWAogICAgRXhhbXBsZSBtaXh0dXJlICAgICAgICAgWCAgICAgICAgIFggICAgWCAgICBYICAgIFgKICAgIEhpZ2hsaWdodHMgbWl4dHVyZSAgICAgIFggICAgWCAgICAgICAgICAgICAgWAogICAgUGFyYWdyYXBoIG1peHR1cmUgICAgICAgWCAgICAgICAgIFggICAgWCAgICAgICAgIFgKICAgIEFkbW9uaXRpb24gbWl4dHVyZSAgICAgIFggICAgICAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgYiAgICBjCiAgICBGaWd1cmUgbWl4dHVyZSAgICAgICAgICAgICAgICAgICAgWCAgICBYICAgICAgICAgWAogICAgVGFibGUgZW50cnkgbWl4dHVyZSAgICAgWCAgICBYICAgIFggICAgICAgICBYICAgIGQKICAgIEdsb3NzYXJ5IGRlZiBtaXh0dXJlICAgIFggICAgICAgICBYICAgIFggICAgWCAgICBYICAgICAgICAgZQogICAgTGVnYWwgbm90aWNlIG1peHR1cmUgICAgWCAgICBYICAgIFggICAgICAgICBYICAgIGYKICAgIAogICAgYS4gSnVzdCBQcm9jZWR1cmU7IG5vdCBTaWRlYmFyIGl0c2VsZiBvciBNc2dTZXQuCiAgICBiLiBObyBNc2dTZXQuCiAgICBjLiBObyBIaWdobGlnaHRzLgogICAgZC4gSnVzdCBHcmFwaGljOyBubyBvdGhlciBpbmZvcm1hbCBvYmplY3RzLgogICAgZS4gTm8gQW5jaG9yLCBCcmlkZ2VIZWFkLCBvciBIaWdobGlnaHRzLgogICAgZi4gSnVzdCBCbG9ja1F1b3RlOyBubyBvdGhlciBpbmZvcm1hbCBvYmplY3RzLgogIC0tPgogIDx4czpncm91cCBuYW1lPSJjb21wb25lbnQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb21wb3VuZC5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJnZW5vYmouY2xhc3MiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZGVzY29iai5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InNpZGViYXIubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcm9jZWR1cmUiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZ2Vub2JqLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0icWFuZGFzZXQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcm9jZWR1cmUiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZ2Vub2JqLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0icmV2ZGVzY3JpcHRpb24ubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmb3JtYWwuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcm9jZWR1cmUiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iZ2Vub2JqLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iZm9vdG5vdGUubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJleGFtcGxlLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcm9jZWR1cmUiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImhpZ2hsaWdodHMubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbW9uLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLQogICAgJWZvcm1hbC5jbGFzczsgaXMgZXhwbGljaXRseSBleGNsdWRlZCBmcm9tIG1hbnkgY29udGV4dHMgaW4gd2hpY2gKICAgIHBhcmFncmFwaHMgYXJlIHVzZWQKICAtLT4KICA8eHM6Z3JvdXAgbmFtZT0icGFyYS5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImZvcm1hbC5jbGFzcyIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0iYWRtb24ubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJvY2VkdXJlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic2lkZWJhciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFuY2hvciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJyaWRnZWhlYWQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZW1hcmsiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJmaWd1cmUubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZXNwZWNpZmljLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3AuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InRhYmVudHJ5Lm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJncmFwaGljIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibWVkaWFvYmplY3QiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9Imdsb3NzZGVmLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzeW5vcC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImZvcm1hbC5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlbWFyayIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImxlZ2Fsbm90aWNlLm1peCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCByZWY9Imxpc3QuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJibG9ja3F1b3RlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0idGV4dG9iamVjdC5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaXN0LmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtb24uY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lc3BlY2lmaWMuY2xhc3MiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmxvY2txdW90ZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZWRpYW9iamVjdC5taXgiIGFic3RyYWN0PSJ0cnVlIi8+CiAgPHhzOmdyb3VwIG5hbWU9Imxpc3RwcmVhbWJsZS5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1vbi5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVzcGVjaWZpYy5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsLmNsYXNzIi8+CiAgICAgIDx4czpncm91cCByZWY9Imdlbm9iai5jbGFzcyIvPgogICAgICA8eHM6Z3JvdXAgcmVmPSJkZXNjb2JqLmNsYXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8IS0tIENoYXJhY3Rlci1sZXZlbCBtaXh0dXJlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBzZ21sLmZlYXR1cmVzIC0tPgogIDwhLS0gbm90IFtzZ21sLmZlYXR1cmVzWyAtLT4KICA8IS0tIF1dIG5vdCBzZ21sLmZlYXR1cmVzIC0tPgogIDwhLS0KICAgICAgICAgICAgICAgICAgICAgICAgI1BDRCB4cmVmIHdvcmQgbGluayBjcHRyIGJhc2UgZG5mbyBvdGhyIGlub2IgKHN5bm9wKQogICAgcGFyYS5jaGFyLm1peCAgICAgICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYCiAgICB0aXRsZS5jaGFyLm1peCAgICAgICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFgKICAgIG5keHRlcm0uY2hhci5taXggICAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgWCAgICBYICAgIFggICAgYQogICAgY3B0ci5jaGFyLm1peCAgICAgICAgIFggICAgICAgICAgICAgIFggICAgWCAgICBYICAgICAgICAgWCAgICBhCiAgICBzbWFsbGNwdHIuY2hhci5taXggICAgWCAgICAgICAgICAgICAgICAgICBiICAgICAgICAgICAgICAgICAgIGEKICAgIHdvcmQuY2hhci5taXggICAgICAgICBYICAgICAgICAgYyAgICBYICAgICAgICAgWCAgICAgICAgIFggICAgYQogICAgZG9jaW5mby5jaGFyLm1peCAgICAgIFggICAgICAgICBkICAgIFggICAgYiAgICAgICAgICAgICAgWCAgICBhCiAgICAKICAgIGEuIEp1c3QgSW5saW5lR3JhcGhpYzsgbm8gSW5saW5lRXF1YXRpb24uCiAgICBiLiBKdXN0IFJlcGxhY2VhYmxlOyBubyBvdGhlciBjb21wdXRlciB0ZXJtcy4KICAgIGMuIEp1c3QgRW1waGFzaXMgYW5kIFRyYWRlbWFyazsgbm8gb3RoZXIgd29yZCBlbGVtZW50cy4KICAgIGQuIEp1c3QgQWNyb255bSwgRW1waGFzaXMsIGFuZCBUcmFkZW1hcms7IG5vIG90aGVyIHdvcmQgZWxlbWVudHMuCiAgLS0+CiAgPHhzOmdyb3VwIG5hbWU9InBhcmEuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ4cmVmLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdlbi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRlY2guY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZG9jaW5mby5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lb2JqLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN5bm9wLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9InRpdGxlLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ieHJlZi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnZW4uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImRvY2luZm8uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW9iai5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJuZHh0ZXJtLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ieHJlZi5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnZW4uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImRvY2luZm8uY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZWdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJjcHRyLmNoYXIubWl4Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZWNoLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJvdGhlci5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVncmFwaGljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmxpbmVtZWRpYW9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYmVnaW5wYWdlIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgPC94czpzZXF1ZW5jZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJzbWFsbGNwdHIuY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXBsYWNlYWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJlZ2lucGFnZSIvPgogICAgICA8L3hzOmNob2ljZT4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpncm91cD4KICA8eHM6Z3JvdXAgbmFtZT0id29yZC5jaGFyLm1peCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjcm9ueW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtcGhhc2lzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0cmFkZW1hcmsiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9ImJhc2UuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czpncm91cCByZWY9Im90aGVyLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZWdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiZWdpbnBhZ2UiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmdyb3VwIG5hbWU9ImRvY2luZm8uY2hhci5taXgiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtcGhhc2lzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0cmFkZW1hcmsiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlcGxhY2VhYmxlIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBFTlRJVFkgJSBiaWJsaW9jb21wb25lbnQubWl4IChzZWUgQmlibGlvZ3JhcGhpYyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBFTlRJVFkgJSBwZXJzb24uaWRlbnQubWl4IChzZWUgQmlibGlvZ3JhcGhpYyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRW50aXRpZXMgZm9yIGF0dHJpYnV0ZXMgYW5kIGF0dHJpYnV0ZSBjb21wb25lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEVmZmVjdGl2aXR5IGF0dHJpYnV0ZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLQogICAgQXJjaDogQ29tcHV0ZXIgb3IgY2hpcCBhcmNoaXRlY3R1cmUgdG8gd2hpY2ggZWxlbWVudCBhcHBsaWVzOyBubwogICAgZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmNoLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFyY2giLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gQ29uZGl0aW9uOiBHZW5lcmFsLXB1cnBvc2UgZWZmZWN0aXZpdHkgYXR0cmlidXRlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25kaXRpb24uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29uZGl0aW9uIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIENvbmZvcm1hbmNlOiBTdGFuZGFyZHMgY29uZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mb3JtYW5jZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb25mb3JtYW5jZSIgdHlwZT0ieHM6Tk1UT0tFTlMiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gT1M6IE9wZXJhdGluZyBzeXN0ZW0gdG8gd2hpY2ggZWxlbWVudCBhcHBsaWVzOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBSZXZpc2lvbjogRWRpdG9yaWFsIHJldmlzaW9uIHRvIHdoaWNoIGVsZW1lbnQgYmVsb25nczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aXNpb24uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmV2aXNpb24iLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gU2VjdXJpdHk6IFNlY3VyaXR5IGNsYXNzaWZpY2F0aW9uOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWN1cml0eS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWN1cml0eSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgVXNlckxldmVsOiBMZXZlbCBvZiB1c2VyIGV4cGVyaWVuY2UgdG8gd2hpY2ggZWxlbWVudCBhcHBsaWVzOyBubwogICAgZGVmYXVsdAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ1c2VybGV2ZWwuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXNlcmxldmVsIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFZlbmRvcjogQ29tcHV0ZXIgdmVuZG9yIHRvIHdoaWNoIGVsZW1lbnQgYXBwbGllczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmVuZG9yLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZlbmRvciIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBXb3Jkc2l6ZTogQ29tcHV0ZXIgd29yZCBzaXplICgzMiBiaXQsIDY0IGJpdCwgZXRjLik7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9IndvcmRzaXplLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndvcmRzaXplIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZWZmZWN0aXZpdHkuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyY2guYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25kaXRpb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mb3JtYW5jZS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9zLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2aXNpb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWN1cml0eS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InVzZXJsZXZlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZlbmRvci5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndvcmRzaXplLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBDb21tb24gYXR0cmlidXRlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gSWQ6IFVuaXF1ZSBpZGVudGlmaWVyIG9mIGVsZW1lbnQ7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlkLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJ4czpJRCIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgSWQ6IFVuaXF1ZSBpZGVudGlmaWVyIG9mIGVsZW1lbnQ7IGEgdmFsdWUgbXVzdCBiZSBzdXBwbGllZDsgbm8KICAgIGRlZmF1bHQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaWRyZXEuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWQiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOklEIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBMYW5nOiBJbmRpY2F0b3Igb2YgbGFuZ3VhZ2UgaW4gd2hpY2ggZWxlbWVudCBpcyB3cml0dGVuLCBmb3IKICAgIHRyYW5zbGF0aW9uLCBjaGFyYWN0ZXIgc2V0IG1hbmFnZW1lbnQsIGV0Yy47IG5vIGRlZmF1bHQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGFuZy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5nIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFJlbWFwOiBQcmV2aW91cyByb2xlIG9mIGVsZW1lbnQgYmVmb3JlIGNvbnZlcnNpb247IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlbWFwLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbWFwIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFJvbGU6IE5ldyByb2xlIG9mIGVsZW1lbnQgaW4gbG9jYWwgZW52aXJvbm1lbnQ7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9sZSIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgWFJlZkxhYmVsOiBBbHRlcm5hdGUgbGFiZWxpbmcgc3RyaW5nIGZvciBYUmVmIHRleHQgZ2VuZXJhdGlvbjsKICAgIGRlZmF1bHQgaXMgdXN1YWxseSB0aXRsZSBvciBvdGhlciBhcHByb3ByaWF0ZSBsYWJlbCB0ZXh0IGFscmVhZHkKICAgIGNvbnRhaW5lZCBpbiBlbGVtZW50CiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InhyZWZsYWJlbC5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ4cmVmbGFiZWwiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIFJldmlzaW9uRmxhZzogUmV2aXNpb24gc3RhdHVzIG9mIGVsZW1lbnQ7IGRlZmF1bHQgaXMgdGhhdCBlbGVtZW50CiAgICB3YXNuJ3QgcmV2aXNlZAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXZpc2lvbmZsYWcuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmV2aXNpb25mbGFnIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhbmdlZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhZGRlZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkZWxldGVkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9mZiIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkaXI6IEJpZGlyZWN0aW9uYWwgb3ZlcnJpZGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImRpci5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkaXIiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsdHIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icnRsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxybyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJybG8iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0geG1sOmJhc2U6IGJhc2UgVVJJIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ4bWwtYmFzZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSByZWY9InhtbDpiYXNlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFJvbGUgaXMgaW5jbHVkZWQgZXhwbGljaXRseSBvbiBlYWNoIGVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbW1vbi5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaWQuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYW5nLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVtYXAuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4cmVmbGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZpc2lvbmZsYWcuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlZmZlY3Rpdml0eS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRpci5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InhtbC1iYXNlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBSb2xlIGlzIGluY2x1ZGVkIGV4cGxpY2l0bHkgb24gZWFjaCBlbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpZHJlcS5jb21tb24uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlkcmVxLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFuZy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlbWFwLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ieHJlZmxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2aXNpb25mbGFnLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZWZmZWN0aXZpdHkuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJkaXIuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4bWwtYmFzZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gU2VtaS1jb21tb24gYXR0cmlidXRlcyBhbmQgb3RoZXIgYXR0cmlidXRlIGVudGl0aWVzIC4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tCiAgICBFbnRpdHlSZWY6IE5hbWUgb2YgYW4gZXh0ZXJuYWwgZW50aXR5IGNvbnRhaW5pbmcgdGhlIGNvbnRlbnQKICAgIG9mIHRoZSBncmFwaGljCiAgLS0+CiAgPCEtLQogICAgRmlsZVJlZjogRmlsZW5hbWUsIHF1YWxpZmllZCBieSBhIHBhdGhuYW1lIGlmIGRlc2lyZWQsCiAgICBkZXNpZ25hdGluZyB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBjb250ZW50IG9mIHRoZSBncmFwaGljCiAgLS0+CiAgPCEtLSBGb3JtYXQ6IE5vdGF0aW9uIG9mIHRoZSBlbGVtZW50IGNvbnRlbnQsIGlmIGFueSAtLT4KICA8IS0tIFNyY0NyZWRpdDogSW5mb3JtYXRpb24gYWJvdXQgdGhlIHNvdXJjZSBvZiB0aGUgR3JhcGhpYyAtLT4KICA8IS0tIFdpZHRoOiBTYW1lIGFzIENBTFMgcmVwcm93aWQgKGRlc2lyZWQgd2lkdGgpIC0tPgogIDwhLS0gRGVwdGg6IFNhbWUgYXMgQ0FMUyByZXByb2RlcCAoZGVzaXJlZCBkZXB0aCkgLS0+CiAgPCEtLQogICAgQWxpZ246IFNhbWUgYXMgQ0FMUyBocGxhY2Ugd2l0aCAnbm9uZScgcmVtb3ZlZDsgI0lNUExJRUQgbWVhbnMKICAgIGFwcGxpY2F0aW9uLXNwZWNpZmljCiAgLS0+CiAgPCEtLSBTY2FsZTogQ29uZmxhdGlvbiBvZiBDQUxTIGhzY2FsZSBhbmQgdnNjYWxlIC0tPgogIDwhLS0gU2NhbGVmaXQ6IFNhbWUgYXMgQ0FMUyBzY2FsZWZpdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3JhcGhpY3MuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW50aXR5cmVmIiB0eXBlPSJ4czpFTlRJVFkiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsZXJlZiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb3JtYXQiIHR5cGU9Im5vdGF0aW9uLmNsYXNzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNyY2NyZWRpdCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50d2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVwdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGVudGRlcHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyaWdodCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idG9wIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1pZGRsZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NhbGUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NhbGVmaXQiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLQogICAgQWN0aW9uOiBLZXkgY29tYmluYXRpb24gdHlwZTsgZGVmYXVsdCBpcyB1bnNwZWNpZmllZCBpZiBvbmUKICAgIGNoaWxkIGVsZW1lbnQsIFNpbXVsIGlmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmU7IGlmIHZhbHVlIGlzCiAgICBPdGhlciwgdGhlIE90aGVyQWN0aW9uIGF0dHJpYnV0ZSBtdXN0IGhhdmUgYSBub25lbXB0eSB2YWx1ZQogIC0tPgogIDwhLS0gT3RoZXJBY3Rpb246IFVzZXItZGVmaW5lZCBrZXkgY29tYmluYXRpb24gdHlwZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5YWN0aW9uLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFjdGlvbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNsaWNrIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRvdWJsZS1jbGljayIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcmVzcyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZXEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2ltdWwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJhY3Rpb24iLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIExhYmVsOiBJZGVudGlmeWluZyBudW1iZXIgb3Igc3RyaW5nOyBkZWZhdWx0IGlzIHVzdWFsbHkgdGhlCiAgICBhcHByb3ByaWF0ZSBudW1iZXIgb3Igc3RyaW5nIGF1dG9nZW5lcmF0ZWQgYnkgYSBmb3JtYXR0ZXIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGFiZWwuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWwiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0geG1sOnNwYWNlOiB3aGl0ZXNwYWNlIHRyZWF0bWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ieG1sLXNwYWNlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlIHJlZj0ieG1sOnNwYWNlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBGb3JtYXQ6IHdoZXRoZXIgZWxlbWVudCBpcyBhc3N1bWVkIHRvIGNvbnRhaW4gc2lnbmlmaWNhbnQgd2hpdGUKICAgIHNwYWNlCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmVzcGVjaWZpYy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb3JtYXQiIGRlZmF1bHQ9ImxpbmVzcGVjaWZpYyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVzcGVjaWZpYyIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ieG1sLXNwYWNlLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaW5lbnVtYmVyaW5nIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibnVtYmVyZWQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idW5udW1iZXJlZCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250aW51YXRpb24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb250aW51ZXMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVzdGFydHMiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RhcnRpbmdsaW5lbnVtYmVyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxhbmd1YWdlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIExpbmtlbmQ6IGxpbmsgdG8gcmVsYXRlZCBpbmZvcm1hdGlvbjsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGlua2VuZC5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaW5rZW5kIiB0eXBlPSJ4czpJRFJFRiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBMaW5rZW5kOiByZXF1aXJlZCBsaW5rIHRvIHJlbGF0ZWQgaW5mb3JtYXRpb24gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmtlbmRyZXEuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlua2VuZCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6SURSRUYiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIExpbmtlbmRzOiBsaW5rIHRvIG9uZSBvciBtb3JlIHNldHMgb2YgcmVsYXRlZCBpbmZvcm1hdGlvbjsgbm8KICAgIGRlZmF1bHQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGlua2VuZHMuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlua2VuZHMiIHR5cGU9InhzOklEUkVGUyIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1hcmsuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWFyayIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBNb3JlSW5mbzogd2hldGhlciBlbGVtZW50J3MgY29udGVudCBoYXMgYW4gYXNzb2NpYXRlZCBSZWZFbnRyeSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW9yZWluZm8uYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW9yZWluZm8iIGRlZmF1bHQ9Im5vbmUiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZWZlbnRyeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub25lIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIFBhZ2VudW06IG51bWJlciBvZiBwYWdlIG9uIHdoaWNoIGVsZW1lbnQgYXBwZWFyczsgbm8gZGVmYXVsdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFnZW51bS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYWdlbnVtIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tCiAgICBTdGF0dXM6IEVkaXRvcmlhbCBvciBwdWJsaWNhdGlvbiBzdGF0dXMgb2YgdGhlIGVsZW1lbnQKICAgIGl0IGFwcGxpZXMgdG8sIHN1Y2ggYXMgImluIHJldmlldyIgb3IgImFwcHJvdmVkIGZvciBkaXN0cmlidXRpb24iCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0YXR1cy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGF0dXMiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIFdpZHRoOiB3aWR0aCBvZiB0aGUgbG9uZ2VzdCBsaW5lIGluIHRoZSBlbGVtZW50IHRvIHdoaWNoIGl0CiAgICBwZXJ0YWlucywgaW4gbnVtYmVyIG9mIGNoYXJhY3RlcnMKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0id2lkdGguYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lkdGgiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFRpdGxlIGVsZW1lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRpdGxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgdGV4dCBvZiB0aGUgdGl0bGUgb2YgYSBzZWN0aW9uIG9mIGEgZG9jdW1lbnQgb3Igb2YgYSBmb3JtYWwgYmxvY2stbGV2ZWwgZWxlbWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGl0bGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGl0bGUuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGl0bGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGl0bGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGl0bGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGl0bGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRpdGxlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdGl0bGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0aXRsZWFiYnJldi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIGFiYnJldmlhdGlvbiBvZiBhIFRpdGxlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0aXRsZWFiYnJldiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0aXRsZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0aXRsZWFiYnJldi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0aXRsZWFiYnJldi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0aXRsZWFiYnJldi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRpdGxlYWJicmV2LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0aXRsZWFiYnJldi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRpdGxlYWJicmV2Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3VidGl0bGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBzdWJ0aXRsZSBvZiBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdWJ0aXRsZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0aXRsZS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJ0aXRsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdWJ0aXRsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJ0aXRsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YnRpdGxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdWJ0aXRsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN1YnRpdGxlLm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBCaWJsaW9ncmFwaGljIGVudGl0aWVzIGFuZCBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0KICAgIFRoZSBiaWJsaW9ncmFwaGljIGVsZW1lbnRzIGFyZSB0eXBpY2FsbHkgdXNlZCBpbiB0aGUgZG9jdW1lbnQKICAgIGhpZXJhcmNoeS4gVGhleSBkbyBub3QgYXBwZWFyIGluIGNvbnRlbnQgbW9kZWxzIG9mIGluZm9ybWF0aW9uCiAgICBwb29sIGVsZW1lbnRzLiAgU2VlIGFsc28gdGhlIGRvY3VtZW50IGluZm9ybWF0aW9uIGVsZW1lbnRzLAogICAgYmVsb3cuCiAgLS0+CiAgPHhzOmdyb3VwIG5hbWU9InBlcnNvbi5pZGVudC5taXgiPgogICAgPHhzOmNob2ljZT4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJob25vcmlmaWMiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmaXJzdG5hbWUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdXJuYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZWFnZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im90aGVybmFtZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImFmZmlsaWF0aW9uIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yYmx1cmIiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb250cmliIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDx4czpncm91cCBuYW1lPSJiaWJsaW9jb21wb25lbnQubWl4Ij4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWJicmV2Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYWJzdHJhY3QiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZGRyZXNzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYXJ0cGFnZW51bXMiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhdXRob3IiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhdXRob3Jncm91cCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImF1dGhvcmluaXRpYWxzIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvbWlzYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb3NldCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbGxhYiIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbmZncm91cCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbnRyYWN0bnVtIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29udHJhY3RzcG9uc29yIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29weXJpZ2h0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29ycGF1dGhvciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImNvcnBuYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iY29ycGNyZWRpdCIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImRhdGUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlZGl0aW9uIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZWRpdG9yIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaW52cGFydG51bWJlciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImlzYm4iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpc3NuIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaXNzdWVudW0iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvcmduYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iYmlibGlvaWQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjaXRlYmlibGlvaWQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9zb3VyY2UiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9yZWxhdGlvbiIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb2NvdmVyYWdlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ib3RoZXJjcmVkaXQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYWdlbnVtcyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InByaW50aGlzdG9yeSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InByb2R1Y3RuYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHJvZHVjdG51bWJlciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InB1YmRhdGUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwdWJsaXNoZXIiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwdWJsaXNoZXJuYW1lIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icHVic251bWJlciIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InJlbGVhc2VpbmZvIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0icmV2aGlzdG9yeSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InNlcmllc3ZvbG51bXMiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJ0aXRsZSIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InRpdGxlIi8+CiAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGVhYmJyZXYiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2b2x1bWVudW0iLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjaXRldGl0bGUiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwZXJzb25uYW1lIi8+CiAgICAgIDx4czpncm91cCByZWY9InBlcnNvbi5pZGVudC5taXgiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDwhLS0gSSBkb24ndCB0aGluayB0aGlzIGlzIHdlbGwgcGxhY2VkLCBidXQgaXQgbmVlZHMgdG8gYmUgaGVyZSBiZWNhdXNlIG9mIC0tPgogIDwhLS0gdGhlIHJlZmVyZW5jZSB0byBiaWJsaW9jb21wb25lbnQubWl4IC0tPgogIDx4czpncm91cCBuYW1lPSJpbmZvLmNsYXNzIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JhcGhpYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9Im1lZGlhb2JqZWN0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0ibGVnYWxub3RpY2UiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtb2Rlc3BlYyIvPgogICAgICA8eHM6ZWxlbWVudCByZWY9InN1YmplY3RzZXQiLz4KICAgICAgPHhzOmVsZW1lbnQgcmVmPSJrZXl3b3Jkc2V0Ii8+CiAgICAgIDx4czplbGVtZW50IHJlZj0iaXRlcm1zZXQiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0iYmlibGlvY29tcG9uZW50Lm1peCIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpncm91cD4KICA8IS0tIEJpYmxpb0xpc3QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9saXN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHdyYXBwZXIgZm9yIGEgc2V0IG9mIGJpYmxpb2dyYXBoeSBlbnRyaWVzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9saXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9lbnRyeSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9taXhlZCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9saXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb2xpc3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvbGlzdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2xpc3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb2xpc3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9saXN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkFuIGVudHJ5IGluIGEgQmlibGlvZ3JhcGh5LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9lbnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXJ0aWNsZWluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiaWJsaW9jb21wb25lbnQubWl4Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9lbnRyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9lbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9lbnRyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2VudHJ5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9lbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb2VudHJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvbWl4ZWQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkFuIGVudHJ5IGluIGEgQmlibGlvZ3JhcGh5LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9taXhlZCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9ImJpYmxpb2NvbXBvbmVudC5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJpYmxpb21zZXQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb21peGVkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb21peGVkLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb21peGVkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvbWl4ZWQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb21peGVkLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYmlibGlvbWl4ZWQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcnRpY2xlaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYW4gQXJ0aWNsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJ0aWNsZWluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5mby5jbGFzcyIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcnRpY2xlaW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhcnRpY2xlaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcnRpY2xlaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFydGljbGVpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhcnRpY2xlaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFydGljbGVpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvc2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBICJyYXciIGNvbnRhaW5lciBmb3IgcmVsYXRlZCBiaWJsaW9ncmFwaGljIGluZm9ybWF0aW9uLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9zZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYmlibGlvY29tcG9uZW50Lm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9zZXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYmlibGlvc2V0LmVsZW1lbnQgLS0+CiAgPCEtLSBSZWxhdGlvbjogUmVsYXRpb25zaGlwIG9mIGVsZW1lbnRzIGNvbnRhaW5lZCB3aXRoaW4gQmlibGlvU2V0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9zZXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbGF0aW9uIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9zZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb3NldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb3NldC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb21zZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgImNvb2tlZCIgY29udGFpbmVyIGZvciByZWxhdGVkIGJpYmxpb2dyYXBoaWMgaW5mb3JtYXRpb24uIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb21zZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiaWJsaW9jb21wb25lbnQubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJiaWJsaW9tc2V0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9tc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb21zZXQuZWxlbWVudCAtLT4KICA8IS0tIFJlbGF0aW9uOiBSZWxhdGlvbnNoaXAgb2YgZWxlbWVudHMgY29udGFpbmVkIHdpdGhpbiBCaWJsaW9NU2V0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9tc2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWxhdGlvbiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvbXNldC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmlibGlvbXNldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb21zZXQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9taXNjLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpVbnR5cGVkIGJpYmxpb2dyYXBoaWMgaW5mb3JtYXRpb24uIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImJpYmxpb21pc2MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9taXNjLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb21pc2MuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvbWlzYy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb21pc2Mucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb21pc2MuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9taXNjLm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBTdWJqZWN0LCBLZXl3b3JkLCBhbmQgSVRlcm1TZXQgZWxlbWVudHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJqZWN0c2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHNldCBvZiB0ZXJtcyBkZXNjcmliaW5nIHRoZSBzdWJqZWN0IG1hdHRlciBvZiBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdWJqZWN0c2V0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InN1YmplY3QiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3ViamVjdHNldC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdWJqZWN0c2V0LmVsZW1lbnQgLS0+CiAgPCEtLSBTY2hlbWU6IENvbnRyb2xsZWQgdm9jYWJ1bGFyeSBlbXBsb3llZCBpbiBTdWJqZWN0VGVybXMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YmplY3RzZXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjaGVtZSIgdHlwZT0ieHM6Tk1UT0tFTiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3ViamVjdHNldC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3ViamVjdHNldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN1YmplY3RzZXQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpPbmUgb2YgYSBncm91cCBvZiB0ZXJtcyBkZXNjcmliaW5nIHRoZSBzdWJqZWN0IG1hdHRlciBvZiBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdWJqZWN0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InN1YmplY3R0ZXJtIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YmplY3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3ViamVjdC5lbGVtZW50IC0tPgogIDwhLS0KICAgIFdlaWdodDogUmFua2luZyBvZiB0aGlzIGdyb3VwIG9mIFN1YmplY3RUZXJtcyByZWxhdGl2ZQogICAgdG8gb3RoZXJzLCAwIGlzIGxvdywgbm8gaGlnaGVzdCB2YWx1ZSBzcGVjaWZpZWQKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3ViamVjdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2VpZ2h0Ii8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJqZWN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdWJqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3ViamVjdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YmplY3R0ZXJtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHRlcm0gaW4gYSBncm91cCBvZiB0ZXJtcyBkZXNjcmliaW5nIHRoZSBzdWJqZWN0IG1hdHRlciBvZiBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdWJqZWN0dGVybSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJqZWN0dGVybS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdWJqZWN0dGVybS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJqZWN0dGVybS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YmplY3R0ZXJtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdWJqZWN0dGVybS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN1YmplY3R0ZXJtLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzdWJqZWN0c2V0LmNvbnRlbnQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXl3b3Jkc2V0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHNldCBvZiBrZXl3b3JkcyBkZXNjcmliaW5nIHRoZSBjb250ZW50IG9mIGEgZG9jdW1lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImtleXdvcmRzZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ia2V5d29yZCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXl3b3Jkc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGtleXdvcmRzZXQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5d29yZHNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleXdvcmRzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGtleXdvcmRzZXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBrZXl3b3Jkc2V0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5d29yZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6T25lIG9mIGEgc2V0IG9mIGtleXdvcmRzIGRlc2NyaWJpbmcgdGhlIGNvbnRlbnQgb2YgYSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ia2V5d29yZCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXl3b3JkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGtleXdvcmQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5d29yZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleXdvcmQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGtleXdvcmQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBrZXl3b3JkLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBrZXl3b3Jkc2V0LmNvbnRlbnQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpdGVybXNldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBzZXQgb2YgaW5kZXggdGVybXMgaW4gdGhlIG1ldGEtaW5mb3JtYXRpb24gb2YgYSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaXRlcm1zZXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaW5kZXh0ZXJtIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Iml0ZXJtc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGl0ZXJtc2V0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Iml0ZXJtc2V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXRlcm1zZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGl0ZXJtc2V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaXRlcm1zZXQubW9kdWxlIC0tPgogIDwhLS0gQmlibGlvZ3JhcGhpYyBpbmZvIGZvciAiYmxvY2tzIiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmxvY2tpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpNZXRhLWluZm9ybWF0aW9uIGZvciBhIGJsb2NrIGVsZW1lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImJsb2NraW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJsb2NraW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBibG9ja2luZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmxvY2tpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmxvY2tpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBibG9ja2luZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBibG9ja2luZm8ubW9kdWxlIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIENvbXBvdW5kIChzZWN0aW9uLWlzaCkgZWxlbWVudHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBNZXNzYWdlIHNldCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dzZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZGV0YWlsZWQgc2V0IG9mIG1lc3NhZ2VzLCB1c3VhbGx5IGVycm9yIG1lc3NhZ2VzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dzZXQiIHN1YnN0aXR1dGlvbkdyb3VwPSJjb21wb3VuZC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtc2dlbnRyeSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2ltcGxlbXNnZW50cnkiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnc2V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1zZ3NldC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dzZXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dzZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1zZ3NldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1zZ3NldC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2VudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHdyYXBwZXIgZm9yIGFuIGVudHJ5IGluIGEgbWVzc2FnZSBzZXQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ2VudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1zZyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJtc2dpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtc2dleHBsYW4iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnZW50cnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpbXBsZW1zZ2VudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHdyYXBwZXIgZm9yIGEgc2ltcGxlciBlbnRyeSBpbiBhIG1lc3NhZ2Ugc2V0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaW1wbGVtc2dlbnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ3RleHQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtc2dleHBsYW4iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2ltcGxlbXNnZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlbXNnZW50cnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2ltcGxlbXNnZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImF1ZGllbmNlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxldmVsIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9yaWdpbiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2ltcGxlbXNnZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNpbXBsZW1zZ2VudHJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlbXNnZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2cucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgbWVzc2FnZSBpbiBhIG1lc3NhZ2Ugc2V0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2ciPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2dtYWluIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNnc3ViIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ3JlbCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2cuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnbWFpbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHByaW1hcnkgY29tcG9uZW50IG9mIGEgbWVzc2FnZSBpbiBhIG1lc3NhZ2Ugc2V0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dtYWluIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNndGV4dCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dtYWluLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1zZ21haW4uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnbWFpbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ21haW4ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1zZ21haW4uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dtYWluLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnc3ViLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHN1YmNvbXBvbmVudCBvZiBhIG1lc3NhZ2UgaW4gYSBtZXNzYWdlIHNldC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibXNnc3ViIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibXNndGV4dCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dzdWIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnc3ViLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ3N1Yi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ3N1Yi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnc3ViLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnc3ViLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNncmVsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHJlbGF0ZWQgY29tcG9uZW50IG9mIGEgbWVzc2FnZSBpbiBhIG1lc3NhZ2Ugc2V0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dyZWwiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2d0ZXh0Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ3JlbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dyZWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNncmVsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNncmVsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dyZWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dyZWwubW9kdWxlIC0tPgogIDwhLS0gTXNnVGV4dCAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2luZm8ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkluZm9ybWF0aW9uIGFib3V0IGEgbWVzc2FnZSBpbiBhIG1lc3NhZ2Ugc2V0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1zZ2xldmVsIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2dvcmlnIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtc2dhdWQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2luZm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnaW5mby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnaW5mby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnaW5mby5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1zZ2luZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dsZXZlbC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIGxldmVsIG9mIGltcG9ydGFuY2Ugb3Igc2V2ZXJpdHkgb2YgYSBtZXNzYWdlIGluIGEgbWVzc2FnZSBzZXQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ2xldmVsIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dsZXZlbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dsZXZlbC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtc2dsZXZlbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2xldmVsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dsZXZlbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1zZ2xldmVsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnb3JpZy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIG9yaWdpbiBvZiBhIG1lc3NhZ2UgaW4gYSBtZXNzYWdlIHNldC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibXNnb3JpZyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnb3JpZy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dvcmlnLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ29yaWcuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dvcmlnLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dvcmlnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnb3JpZy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2F1ZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIGF1ZGllbmNlIHRvIHdoaWNoIGEgbWVzc2FnZSBpbiBhIG1lc3NhZ2Ugc2V0IGlzIHJlbGV2YW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJtc2dhdWQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2dhdWQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbXNnYXVkLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ2F1ZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2F1ZC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbXNnYXVkLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbXNnYXVkLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnZXhwbGFuLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpFeHBsYW5hdG9yeSBtYXRlcmlhbCByZWxhdGluZyB0byBhIG1lc3NhZ2UgaW4gYSBtZXNzYWdlIHNldC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibXNnZXhwbGFuIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb21wb25lbnQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ2V4cGxhbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtc2dleHBsYW4uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNnZXhwbGFuLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibXNnZXhwbGFuLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtc2dleHBsYW4uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2dleHBsYW4ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIG1zZ3NldC5jb250ZW50Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFzay5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSB0YXNrIHRvIGJlIGNvbXBsZXRlZC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGFzayIgc3Vic3RpdHV0aW9uR3JvdXA9ImNvbXBvdW5kLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0YXNrc3VtbWFyeSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0YXNrcHJlcmVxdWlzaXRlcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icHJvY2VkdXJlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJleGFtcGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRhc2tyZWxhdGVkIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRhc2suYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGFzay5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YXNrLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGFzay5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGFzay5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRhc2subW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YXNrc3VtbWFyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBzdW1tYXJ5IG9mIGEgdGFzay4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGFza3N1bW1hcnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YXNrc3VtbWFyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0YXNrc3VtbWFyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YXNrc3VtbWFyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRhc2tzdW1tYXJ5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0YXNrc3VtbWFyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRhc2tzdW1tYXJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFza3ByZXJlcXVpc2l0ZXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBwcmVyZXF1aXNpdGVzIGZvciBhIHRhc2suIC0tPgogIDx4czplbGVtZW50IG5hbWU9InRhc2twcmVyZXF1aXNpdGVzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGFza3ByZXJlcXVpc2l0ZXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdGFza3ByZXJlcXVpc2l0ZXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGFza3ByZXJlcXVpc2l0ZXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YXNrcHJlcmVxdWlzaXRlcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGFza3ByZXJlcXVpc2l0ZXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0YXNrcHJlcmVxdWlzaXRlcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRhc2tyZWxhdGVkLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpJbmZvcm1hdGlvbiByZWxhdGVkIHRvIGEgdGFzay4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGFza3JlbGF0ZWQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YXNrcmVsYXRlZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0YXNrcmVsYXRlZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YXNrcmVsYXRlZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRhc2tyZWxhdGVkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0YXNrcmVsYXRlZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRhc2tyZWxhdGVkLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiB0YXNrLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gUWFuZEFTZXQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxYW5kYXNldC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBxdWVzdGlvbi1hbmQtYW5zd2VyIHNldC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icWFuZGFzZXQiIHN1YnN0aXR1dGlvbkdyb3VwPSJjb21wb3VuZC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InFhbmRhc2V0Lm1peCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJxYW5kYWRpdiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icWFuZGFlbnRyeSIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJxYW5kYXNldC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBxYW5kYXNldC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxYW5kYXNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVmYXVsdGxhYmVsIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icWFuZGEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibnVtYmVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vbmUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InFhbmRhc2V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBxYW5kYXNldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHFhbmRhc2V0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icWFuZGFkaXYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgdGl0bGVkIGRpdmlzaW9uIGluIGEgUWFuZEFTZXQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InFhbmRhZGl2Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icWFuZGFzZXQubWl4Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InFhbmRhZGl2Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJxYW5kYWVudHJ5Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InFhbmRhZGl2LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHFhbmRhZGl2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InFhbmRhZGl2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icWFuZGFkaXYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHFhbmRhZGl2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcWFuZGFkaXYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxYW5kYWVudHJ5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHF1ZXN0aW9uL2Fuc3dlciBzZXQgd2l0aGluIGEgUWFuZEFTZXQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InFhbmRhZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJyZXZoaXN0b3J5Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJxdWVzdGlvbiIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYW5zd2VyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InFhbmRhZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcWFuZGFlbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxYW5kYWVudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icWFuZGFlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcWFuZGFlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHFhbmRhZW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxdWVzdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBxdWVzdGlvbiBpbiBhIFFhbmRBU2V0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJxdWVzdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ibGFiZWwiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icWFuZGFzZXQubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InF1ZXN0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHF1ZXN0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InF1ZXN0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icXVlc3Rpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHF1ZXN0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcXVlc3Rpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhbnN3ZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkFuIGFuc3dlciB0byBhIHF1ZXN0aW9uIHBvc2VkIGluIGEgUWFuZEFTZXQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImFuc3dlciI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ibGFiZWwiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJxYW5kYXNldC5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InFhbmRhZW50cnkiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYW5zd2VyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFuc3dlci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhbnN3ZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhbnN3ZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFuc3dlci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFuc3dlci5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxhYmVsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGxhYmVsIG9uIGEgUXVlc3Rpb24gb3IgQW5zd2VyLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJsYWJlbCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ3b3JkLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxhYmVsLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxhYmVsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxhYmVsLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGFiZWwubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHFhbmRhc2V0LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gUHJvY2VkdXJlIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvY2VkdXJlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGxpc3Qgb2Ygb3BlcmF0aW9ucyB0byBiZSBwZXJmb3JtZWQgaW4gYSB3ZWxsLWRlZmluZWQgc2VxdWVuY2UuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InByb2NlZHVyZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImNvbXBvdW5kLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InN0ZXAiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvY2VkdXJlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb2NlZHVyZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9jZWR1cmUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9jZWR1cmUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByb2NlZHVyZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByb2NlZHVyZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0ZXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgdW5pdCBvZiBhY3Rpb24gaW4gYSBwcm9jZWR1cmUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InN0ZXAiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPHhzOnNlcXVlbmNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic3Vic3RlcHMiLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic3RlcGFsdGVybmF0aXZlcyIvPgogICAgICAgICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzdGVwcyIvPgogICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic3RlcGFsdGVybmF0aXZlcyIvPgogICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RlcC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdGVwLmVsZW1lbnQgLS0+CiAgPCEtLSBQZXJmb3JtYW5jZTogV2hldGhlciB0aGUgU3RlcCBtdXN0IGJlIHBlcmZvcm1lZCAtLT4KICA8IS0tIG5vdCAjUkVRVUlSRUQhIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdGVwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZXJmb3JtYW5jZSIgZGVmYXVsdD0icmVxdWlyZWQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHRpb25hbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXF1aXJlZCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RlcC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3RlcC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN0ZXAubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJzdGVwcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSB3cmFwcGVyIGZvciBzdGVwcyB0aGF0IG9jY3VyIHdpdGhpbiBzdGVwcyBpbiBhIHByb2NlZHVyZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3Vic3RlcHMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic3RlcCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJzdGVwcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdWJzdGVwcy5lbGVtZW50IC0tPgogIDwhLS0gUGVyZm9ybWFuY2U6IHdoZXRoZXIgZW50aXJlIHNldCBvZiBzdWJzdGVwcyBtdXN0IGJlIHBlcmZvcm1lZCAtLT4KICA8IS0tIG5vdCAjUkVRVUlSRUQhIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdWJzdGVwcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGVyZm9ybWFuY2UiIGRlZmF1bHQ9InJlcXVpcmVkIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3B0aW9uYWwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVxdWlyZWQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN1YnN0ZXBzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdWJzdGVwcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN1YnN0ZXBzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RlcGFsdGVybmF0aXZlcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QWx0ZXJuYXRpdmUgc3RlcHMgaW4gYSBwcm9jZWR1cmUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InN0ZXBhbHRlcm5hdGl2ZXMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic3RlcCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGVwYWx0ZXJuYXRpdmVzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN0ZXBhbHRlcm5hdGl2ZXMuZWxlbWVudCAtLT4KICA8IS0tIFBlcmZvcm1hbmNlOiBXaGV0aGVyIChvbmUgb2YpIHRoZSBhbHRlcm5hdGl2ZXMgbXVzdCBiZSBwZXJmb3JtZWQgLS0+CiAgPCEtLSBub3QgI1JFUVVJUkVEISAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RlcGFsdGVybmF0aXZlcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGVyZm9ybWFuY2UiIGRlZmF1bHQ9InJlcXVpcmVkIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3B0aW9uYWwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVxdWlyZWQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0ZXBhbHRlcm5hdGl2ZXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN0ZXBhbHRlcm5hdGl2ZXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdGVwYWx0ZXJuYXRpdmVzLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBwcm9jZWR1cmUuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBTaWRlYmFyIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaWRlYmFyaW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYSBTaWRlYmFyLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaWRlYmFyaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpbmZvLmNsYXNzIi8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpZGViYXJpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNpZGViYXJpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpZGViYXJpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2lkZWJhcmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNpZGViYXJpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2lkZWJhcmluZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaWRlYmFyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHBvcnRpb24gb2YgYSBkb2N1bWVudCB0aGF0IGlzIGlzb2xhdGVkIGZyb20gdGhlIG1haW4gbmFycmF0aXZlIGZsb3cuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNpZGViYXIiIHN1YnN0aXR1dGlvbkdyb3VwPSJjb21wb3VuZC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ic2lkZWJhcmluZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNpZGViYXIubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpZGViYXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2lkZWJhci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaWRlYmFyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2lkZWJhci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2lkZWJhci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNpZGViYXIubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIHNpZGViYXIuY29udGVudC5tb2RlbCAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBQYXJhZ3JhcGgtcmVsYXRlZCBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhYnN0cmFjdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBzdW1tYXJ5LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJhYnN0cmFjdCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNsYXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFic3RyYWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFic3RyYWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFic3RyYWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWJzdHJhY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFic3RyYWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYWJzdHJhY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdXRob3JibHVyYi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBzaG9ydCBkZXNjcmlwdGlvbiBvciBub3RlIGFib3V0IGFuIGF1dGhvci4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXV0aG9yYmx1cmIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdXRob3JibHVyYi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhdXRob3JibHVyYi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdXRob3JibHVyYi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1dGhvcmJsdXJiLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhdXRob3JibHVyYi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGF1dGhvcmJsdXJiLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGVyc29uYmx1cmIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgc2hvcnQgZGVzY3JpcHRpb24gb3Igbm90ZSBhYm91dCBhIHBlcnNvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGVyc29uYmx1cmIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jbGFzcyIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwZXJzb25ibHVyYi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwZXJzb25ibHVyYi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwZXJzb25ibHVyYi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBlcnNvbmJsdXJiLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwZXJzb25ibHVyYi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBlcnNvbmJsdXJiLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmxvY2txdW90ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBxdW90YXRpb24gc2V0IG9mZiBmcm9tIHRoZSBtYWluIHRleHQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImJsb2NrcXVvdGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImF0dHJpYnV0aW9uIi8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbXBvbmVudC5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmxvY2txdW90ZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBibG9ja3F1b3RlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJsb2NrcXVvdGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJibG9ja3F1b3RlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBibG9ja3F1b3RlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYmxvY2txdW90ZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF0dHJpYnV0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgc291cmNlIG9mIGEgYmxvY2sgcXVvdGUgb3IgZXBpZ3JhcGguIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImF0dHJpYnV0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXR0cmlidXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXR0cmlidXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXR0cmlidXRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdHRyaWJ1dGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXR0cmlidXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhdHRyaWJ1dGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJyaWRnZWhlYWQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZnJlZS1mbG9hdGluZyBoZWFkaW5nLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJicmlkZ2VoZWFkIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRpdGxlLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJyaWRnZWhlYWQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYnJpZGdlaGVhZC5lbGVtZW50IC0tPgogIDwhLS0KICAgIFJlbmRlcmFzOiBJbmRpY2F0ZXMgdGhlIGZvcm1hdCBpbiB3aGljaCB0aGUgQnJpZGdlSGVhZAogICAgc2hvdWxkIGFwcGVhcgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJicmlkZ2VoZWFkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZW5kZXJhcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3QzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Q0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Q1Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJicmlkZ2VoZWFkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBicmlkZ2VoZWFkLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYnJpZGdlaGVhZC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlbWFyay5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSByZW1hcmsgKG9yIGNvbW1lbnQpIGludGVuZGVkIGZvciBwcmVzZW50YXRpb24gaW4gYSBkcmFmdCBtYW51c2NyaXB0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZW1hcmsiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZW1hcmsuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmVtYXJrLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlbWFyay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlbWFyay5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmVtYXJrLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVtYXJrLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXBpZ3JhcGgucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgc2hvcnQgaW5zY3JpcHRpb24gYXQgdGhlIGJlZ2lubmluZyBvZiBhIGRvY3VtZW50IG9yIGNvbXBvbmVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXBpZ3JhcGgiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImF0dHJpYnV0aW9uIi8+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibGl0ZXJhbGxheW91dCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcGlncmFwaC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlcGlncmFwaC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlcGlncmFwaC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVwaWdyYXBoLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlcGlncmFwaC5hdHRsaXN0IC0tPgogIDwhLS0gQXR0cmlidXRpb24gKGRlZmluZWQgYWJvdmUpIC0tPgogIDwhLS0gZW5kIG9mIGVwaWdyYXBoLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZm9vdG5vdGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZm9vdG5vdGUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImZvb3Rub3RlIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZm9vdG5vdGUubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZvb3Rub3RlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZvb3Rub3RlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvb3Rub3RlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmb290bm90ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZm9vdG5vdGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmb290bm90ZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImhpZ2hsaWdodHMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgc3VtbWFyeSBvZiB0aGUgbWFpbiBwb2ludHMgb2YgdGhlIGRpc2N1c3NlZCBjb21wb25lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImhpZ2hsaWdodHMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaGlnaGxpZ2h0cy5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaGlnaGxpZ2h0cy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBoaWdobGlnaHRzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImhpZ2hsaWdodHMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJoaWdobGlnaHRzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBoaWdobGlnaHRzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaGlnaGxpZ2h0cy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvcm1hbHBhcmEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgcGFyYWdyYXBoIHdpdGggYSB0aXRsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZm9ybWFscGFyYSIgc3Vic3RpdHV0aW9uR3JvdXA9InBhcmEuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icGFyYSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmb3JtYWxwYXJhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZvcm1hbHBhcmEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZm9ybWFscGFyYS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZvcm1hbHBhcmEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZvcm1hbHBhcmEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmb3JtYWxwYXJhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFyYS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBwYXJhZ3JhcGguIC0tPgogIDx4czplbGVtZW50IG5hbWU9InBhcmEiIHN1YnN0aXR1dGlvbkdyb3VwPSJwYXJhLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czpncm91cCByZWY9InBhcmEubWl4Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJhLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBhcmEuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFyYS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcmEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhcmEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwYXJhLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2ltcGFyYS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBwYXJhZ3JhcGggdGhhdCBjb250YWlucyBvbmx5IHRleHQgYW5kIGlubGluZSBtYXJrdXAsIG5vIGJsb2NrIGVsZW1lbnRzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzaW1wYXJhIiBzdWJzdGl0dXRpb25Hcm91cD0icGFyYS5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBhcmEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2ltcGFyYS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaW1wYXJhLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2ltcGFyYS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2ltcGFyYS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNpbXBhcmEubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhZG1vbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBub3RlIG9mIGNhdXRpb24uIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNhdXRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJhZG1vbi5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRtb24ubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNhdXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2F1dGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYXV0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRtb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNhdXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGRvYzpBbiBhZG1vbml0aW9uIHNldCBvZmYgZnJvbSB0aGUgdGV4dC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW1wb3J0YW50IiBzdWJzdGl0dXRpb25Hcm91cD0iYWRtb24uY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFkbW9uLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbXBvcnRhbnQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW1wb3J0YW50LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltcG9ydGFudC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFkbW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbXBvcnRhbnQuYXR0bGlzdCAtLT4KICA8IS0tIGRvYzpBIG1lc3NhZ2Ugc2V0IG9mZiBmcm9tIHRoZSB0ZXh0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJub3RlIiBzdWJzdGl0dXRpb25Hcm91cD0iYWRtb24uY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRpdGxlIi8+CiAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFkbW9uLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJub3RlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG5vdGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibm90ZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFkbW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBub3RlLmF0dGxpc3QgLS0+CiAgPCEtLSBkb2M6QSBzdWdnZXN0aW9uIHRvIHRoZSB1c2VyLCBzZXQgb2ZmIGZyb20gdGhlIHRleHQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InRpcCIgc3Vic3RpdHV0aW9uR3JvdXA9ImFkbW9uLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aXRsZSIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJhZG1vbi5taXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGlwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRpcC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0aXAuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhZG1vbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGlwLmF0dGxpc3QgLS0+CiAgPCEtLSBkb2M6QW4gYWRtb25pdGlvbiBzZXQgb2ZmIGZyb20gdGhlIHRleHQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Indhcm5pbmciIHN1YnN0aXR1dGlvbkdyb3VwPSJhZG1vbi5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYWRtb24ubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Indhcm5pbmcuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygd2FybmluZy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ3YXJuaW5nLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRtb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHdhcm5pbmcuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhZG1vbi5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gTGlzdHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEdsb3NzTGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSB3cmFwcGVyIGZvciBhIHNldCBvZiBHbG9zc0VudHJ5cy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ2xvc3NsaXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imdsb3NzZW50cnkiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NsaXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGdsb3NzbGlzdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2xpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc2xpc3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzbGlzdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzbGlzdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkFuIGVudHJ5IGluIGEgR2xvc3Nhcnkgb3IgR2xvc3NMaXN0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc2VudHJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ2xvc3N0ZXJtIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImFjcm9ueW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYWJicmV2Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InJldmhpc3RvcnkiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJnbG9zc3NlZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ2xvc3NkZWYiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NlbnRyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc2VudHJ5LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU29ydEFzOiBTdHJpbmcgYnkgd2hpY2ggdGhlIEdsb3NzRW50cnkgaXMgdG8gYmUgc29ydGVkCiAgICAoYWxwaGFiZXRpemVkKSBpbiBsaWV1IG9mIGl0cyBwcm9wZXIgY29udGVudAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc2VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzb3J0YXMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdsb3NzZW50cnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc2VudHJ5Lm1vZHVsZSAtLT4KICA8IS0tIEdsb3NzVGVybSAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzZGVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGRlZmluaXRpb24gaW4gYSBHbG9zc0VudHJ5LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc2RlZiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ2xvc3NkZWYubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJnbG9zc3NlZWFsc28iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NkZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ2xvc3NkZWYuZWxlbWVudCAtLT4KICA8IS0tIFN1YmplY3Q6IExpc3Qgb2Ygc3ViamVjdHM7IGtleXdvcmRzIGZvciB0aGUgZGVmaW5pdGlvbiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NkZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN1YmplY3QiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzZGVmLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBnbG9zc2RlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzZGVmLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ2xvc3NzZWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgY3Jvc3MtcmVmZXJlbmNlIGZyb20gb25lIEdsb3NzRW50cnkgdG8gYW5vdGhlci4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ2xvc3NzZWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc3NlZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc3NlZS5lbGVtZW50IC0tPgogIDwhLS0KICAgIE90aGVyVGVybTogUmVmZXJlbmNlIHRvIHRoZSBHbG9zc0VudHJ5IHdob3NlIEdsb3NzVGVybQogICAgc2hvdWxkIGJlIGRpc3BsYXllZCBhdCB0aGUgcG9pbnQgb2YgdGhlIEdsb3NzU2VlCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3Nzc2VlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcnRlcm0iIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc3NlZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ2xvc3NzZWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc3NlZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3Nzc2VlYWxzby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBjcm9zcy1yZWZlcmVuY2UgZnJvbSBvbmUgR2xvc3NFbnRyeSB0byBhbm90aGVyLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc3NlZWFsc28iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJnbG9zc3NlZWFsc28uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ2xvc3NzZWVhbHNvLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgT3RoZXJUZXJtOiBSZWZlcmVuY2UgdG8gdGhlIEdsb3NzRW50cnkgd2hvc2UgR2xvc3NUZXJtCiAgICBzaG91bGQgYmUgZGlzcGxheWVkIGF0IHRoZSBwb2ludCBvZiB0aGUgR2xvc3NTZWVBbHNvCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3Nzc2VlYWxzby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJ0ZXJtIiB0eXBlPSJ4czpJRFJFRiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3NzZWVhbHNvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBnbG9zc3NlZWFsc28uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc3NlZWFsc28ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGdsb3NzZW50cnkuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBJdGVtaXplZExpc3QgYW5kIE9yZGVyZWRMaXN0IC4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpdGVtaXplZGxpc3Qucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgbGlzdCBpbiB3aGljaCBlYWNoIGVudHJ5IGlzIG1hcmtlZCB3aXRoIGEgYnVsbGV0IG9yIG90aGVyIGRpbmdiYXQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Iml0ZW1pemVkbGlzdCIgc3Vic3RpdHV0aW9uR3JvdXA9Imxpc3QuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJsaXN0cHJlYW1ibGUubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibGlzdGl0ZW0iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXRlbWl6ZWRsaXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGl0ZW1pemVkbGlzdC5lbGVtZW50IC0tPgogIDwhLS0KICAgIFNwYWNpbmc6IFdoZXRoZXIgdGhlIHZlcnRpY2FsIHNwYWNlIGluIHRoZSBsaXN0IHNob3VsZCBiZQogICAgY29tcHJlc3NlZAogIC0tPgogIDwhLS0KICAgIE1hcms6IEtleXdvcmQsIGUuZy4sIGJ1bGxldCwgZGFzaCwgY2hlY2tib3gsIG5vbmU7CiAgICBsaXN0IG9mIGtleXdvcmRzIGFuZCBkZWZhdWx0cyBhcmUgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaXRlbWl6ZWRsaXN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFjaW5nIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm9ybWFsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbXBhY3QiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1hcmsuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpdGVtaXplZGxpc3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGl0ZW1pemVkbGlzdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGl0ZW1pemVkbGlzdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9yZGVyZWRsaXN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGxpc3QgaW4gd2hpY2ggZWFjaCBlbnRyeSBpcyBtYXJrZWQgd2l0aCBhIHNlcXVlbnRpYWxseSBpbmNyZW1lbnRlZCBsYWJlbC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib3JkZXJlZGxpc3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaXN0LmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9ImZvcm1hbG9iamVjdC50aXRsZS5jb250ZW50Ii8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibGlzdHByZWFtYmxlLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imxpc3RpdGVtIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9yZGVyZWRsaXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9yZGVyZWRsaXN0LmVsZW1lbnQgLS0+CiAgPCEtLQogICAgTnVtZXJhdGlvbjogU3R5bGUgb2YgTGlzdEl0ZW0gbnVtYmVyZWQ7IGRlZmF1bHQgaXMgZXhwZWN0ZWQKICAgIHRvIGJlIEFyYWJpYwogIC0tPgogIDwhLS0KICAgIEluaGVyaXROdW06IFNwZWNpZmllcyBmb3IgYSBuZXN0ZWQgbGlzdCB0aGF0IHRoZSBudW1iZXJpbmcKICAgIG9mIExpc3RJdGVtcyBzaG91bGQgaW5jbHVkZSB0aGUgbnVtYmVyIG9mIHRoZSBpdGVtCiAgICB3aXRoaW4gd2hpY2ggdGhleSBhcmUgbmVzdGVkIChlLmcuLCAxYSBhbmQgMWIgd2l0aGluIDEsCiAgICByYXRoZXIgdGhhbiBhIGFuZCBiKQogIC0tPgogIDwhLS0KICAgIENvbnRpbnVhdGlvbjogV2hlcmUgbGlzdCBudW1iZXJpbmcgYmVnaW5zIGFmcmVzaCAoUmVzdGFydHMsCiAgICB0aGUgZGVmYXVsdCkgb3IgY29udGludWVzIHRoYXQgb2YgdGhlIGltbWVkaWF0ZWx5IHByZWNlZGluZwogICAgbGlzdCAoQ29udGludWVzKQogIC0tPgogIDwhLS0KICAgIFNwYWNpbmc6IFdoZXRoZXIgdGhlIHZlcnRpY2FsIHNwYWNlIGluIHRoZSBsaXN0IHNob3VsZCBiZQogICAgY29tcHJlc3NlZAogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcmRlcmVkbGlzdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibnVtZXJhdGlvbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFyYWJpYyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ1cHBlcmFscGhhIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imxvd2VyYWxwaGEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idXBwZXJyb21hbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsb3dlcnJvbWFuIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaGVyaXRudW0iIGRlZmF1bHQ9Imlnbm9yZSI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImluaGVyaXQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaWdub3JlIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRpbnVhdGlvbiIgZGVmYXVsdD0icmVzdGFydHMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb250aW51ZXMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVzdGFydHMiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3BhY2luZyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vcm1hbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb21wYWN0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcmRlcmVkbGlzdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb3JkZXJlZGxpc3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvcmRlcmVkbGlzdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imxpc3RpdGVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHdyYXBwZXIgZm9yIHRoZSBlbGVtZW50cyBvZiBhIGxpc3QgaXRlbS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGlzdGl0ZW0iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaXN0aXRlbS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsaXN0aXRlbS5lbGVtZW50IC0tPgogIDwhLS0KICAgIE92ZXJyaWRlOiBJbmRpY2F0ZXMgdGhlIG1hcmsgdG8gYmUgdXNlZCBmb3IgdGhpcyBMaXN0SXRlbQogICAgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBtYXJrIG9yIHRoZSBtYXJrIHNwZWNpZmllZCBieQogICAgdGhlIE1hcmsgYXR0cmlidXRlIG9uIHRoZSBlbmNsb3NpbmcgSXRlbWl6ZWRMaXN0CiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imxpc3RpdGVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdmVycmlkZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlzdGl0ZW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpc3RpdGVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGlzdGl0ZW0ubW9kdWxlIC0tPgogIDwhLS0gU2VnbWVudGVkTGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VnbWVudGVkbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBzZWdtZW50ZWQgbGlzdCwgYSBsaXN0IG9mIHNldHMgb2YgZWxlbWVudHMuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlZ21lbnRlZGxpc3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaXN0LmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWd0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNlZ2xpc3RpdGVtIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZ21lbnRlZGxpc3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VnbWVudGVkbGlzdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWdtZW50ZWRsaXN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VnbWVudGVkbGlzdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VnbWVudGVkbGlzdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNlZ21lbnRlZGxpc3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzZWd0aXRsZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHRpdGxlIG9mIGFuIGVsZW1lbnQgb2YgYSBsaXN0IGl0ZW0gaW4gYSBzZWdtZW50ZWQgbGlzdC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2VndGl0bGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGl0bGUuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VndGl0bGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VndGl0bGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VndGl0bGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWd0aXRsZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VndGl0bGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWd0aXRsZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZ2xpc3RpdGVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGxpc3QgaXRlbSBpbiBhIHNlZ21lbnRlZCBsaXN0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWdsaXN0aXRlbSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZWciLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VnbGlzdGl0ZW0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VnbGlzdGl0ZW0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VnbGlzdGl0ZW0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWdsaXN0aXRlbS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VnbGlzdGl0ZW0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZWdsaXN0aXRlbS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gZWxlbWVudCBvZiBhIGxpc3QgaXRlbSBpbiBhIHNlZ21lbnRlZCBsaXN0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzZWciPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWcuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2VnLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlZy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2VnLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzZWdtZW50ZWRsaXN0LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gU2ltcGxlTGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2ltcGxlbGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gdW5kZWNvcmF0ZWQgbGlzdCBvZiBzaW5nbGUgd29yZHMgb3Igc2hvcnQgcGhyYXNlcy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2ltcGxlbGlzdCIgc3Vic3RpdHV0aW9uR3JvdXA9Imxpc3QuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVtYmVyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNpbXBsZWxpc3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlbGlzdC5lbGVtZW50IC0tPgogIDwhLS0gQ29sdW1uczogVGhlIG51bWJlciBvZiBjb2x1bW5zIHRoZSBhcnJheSBzaG91bGQgY29udGFpbiAtLT4KICA8IS0tCiAgICBUeXBlOiBIb3cgdGhlIE1lbWJlcnMgb2YgdGhlIFNpbXBsZUxpc3Qgc2hvdWxkIGJlCiAgICBmb3JtYXR0ZWQ6IElubGluZSAobWVtYmVycyBzZXBhcmF0ZWQgd2l0aCBjb21tYXMgZXRjLgogICAgaW5saW5lKSwgVmVydCAodG9wIHRvIGJvdHRvbSBpbiBuIENvbHVtbnMpLCBvciBIb3JpeiAoaW4KICAgIHRoZSBkaXJlY3Rpb24gb2YgdGV4dCBmbG93KSBpbiBuIENvbHVtbnMuICBJZiBDb2x1bW4KICAgIGlzIDEgb3IgaW1wbGllZCwgVHlwZT1WZXJ0IGFuZCBUeXBlPUhvcml6IGdpdmUgdGhlIHNhbWUKICAgIHJlc3VsdHMuCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNpbXBsZWxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHVtbnMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIgZGVmYXVsdD0idmVydCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlubGluZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ2ZXJ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imhvcml6Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaW1wbGVsaXN0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzaW1wbGVsaXN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc2ltcGxlbGlzdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lbWJlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gZWxlbWVudCBvZiBhIHNpbXBsZSBsaXN0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZW1iZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZW1iZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWVtYmVyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lbWJlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1lbWJlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWVtYmVyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWVtYmVyLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzaW1wbGVsaXN0LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gVmFyaWFibGVMaXN0IC4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmFyaWFibGVsaXN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGxpc3QgaW4gd2hpY2ggZWFjaCBlbnRyeSBpcyBjb21wb3NlZCBvZiBhIHNldCBvZiBvbmUgb3IgbW9yZSB0ZXJtcyBhbmQgYW4gYXNzb2NpYXRlZCBkZXNjcmlwdGlvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idmFyaWFibGVsaXN0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGlzdC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imxpc3RwcmVhbWJsZS5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ2YXJsaXN0ZW50cnkiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmFyaWFibGVsaXN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZhcmlhYmxlbGlzdC5lbGVtZW50IC0tPgogIDwhLS0KICAgIFRlcm1MZW5ndGg6IExlbmd0aCBiZXlvbmQgd2hpY2ggdGhlIHByZXNlbnRhdGlvbiBlbmdpbmUKICAgIG1heSBjb25zaWRlciB0aGUgVGVybSB0b28gbG9uZyBhbmQgc2VsZWN0IGFuIGFsdGVybmF0ZQogICAgcHJlc2VudGF0aW9uIG9mIHRoZSBUZXJtIGFuZCwgb3IsIGl0cyBhc3NvY2lhdGVkIExpc3RJdGVtLgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2YXJpYWJsZWxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRlcm1sZW5ndGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3BhY2luZyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vcm1hbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb21wYWN0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2YXJpYWJsZWxpc3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZhcmlhYmxlbGlzdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZhcmlhYmxlbGlzdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZhcmxpc3RlbnRyeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSB3cmFwcGVyIGZvciBhIHNldCBvZiB0ZXJtcyBhbmQgdGhlIGFzc29jaWF0ZWQgZGVzY3JpcHRpb24gaW4gYSB2YXJpYWJsZSBsaXN0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2YXJsaXN0ZW50cnkiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGVybSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGlzdGl0ZW0iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmFybGlzdGVudHJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZhcmxpc3RlbnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2YXJsaXN0ZW50cnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2YXJsaXN0ZW50cnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZhcmxpc3RlbnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZhcmxpc3RlbnRyeS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRlcm0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSB3b3JkIG9yIHBocmFzZSBiZWluZyBkZWZpbmVkIG9yIGRlc2NyaWJlZCBpbiBhIHZhcmlhYmxlIGxpc3QuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InRlcm0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXJtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRlcm0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGVybS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRlcm0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRlcm0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0ZXJtLm1vZHVsZSAtLT4KICA8IS0tIExpc3RJdGVtIChkZWZpbmVkIGFib3ZlKSAtLT4KICA8IS0tIGVuZCBvZiB2YXJpYWJsZWxpc3QuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBDYWxsb3V0TGlzdCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYWxsb3V0bGlzdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBsaXN0IG9mIENhbGxvdXRzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjYWxsb3V0bGlzdCIgc3Vic3RpdHV0aW9uR3JvdXA9Imxpc3QuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNhbGxvdXQiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2FsbG91dGxpc3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2FsbG91dGxpc3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2FsbG91dGxpc3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjYWxsb3V0bGlzdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2FsbG91dGxpc3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjYWxsb3V0bGlzdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNhbGxvdXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgJmxkcXVvO2NhbGxlZCBvdXQmcmRxdW87IGRlc2NyaXB0aW9uIG9mIGEgbWFya2VkIEFyZWEuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNhbGxvdXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjYWxsb3V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNhbGxvdXQuZWxlbWVudCAtLT4KICA8IS0tCiAgICBBcmVhUmVmczogSURzIG9mIG9uZSBvciBtb3JlIEFyZWFzIG9yIEFyZWFTZXRzIGRlc2NyaWJlZAogICAgYnkgdGhpcyBDYWxsb3V0CiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNhbGxvdXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFyZWFyZWZzIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czpJRFJFRlMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNhbGxvdXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNhbGxvdXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjYWxsb3V0Lm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBjYWxsb3V0bGlzdC5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBPYmplY3RzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRXhhbXBsZXMgZXRjLiAuLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXhhbXBsZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBmb3JtYWwgZXhhbXBsZSwgd2l0aCBhIHRpdGxlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJleGFtcGxlIiBzdWJzdGl0dXRpb25Hcm91cD0iZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJleGFtcGxlLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJleGFtcGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGV4YW1wbGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXhhbXBsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmxvYXRzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ3aWR0aC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImV4YW1wbGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGV4YW1wbGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBleGFtcGxlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxleGFtcGxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGRpc3BsYXllZCBleGFtcGxlIHdpdGhvdXQgYSB0aXRsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5mb3JtYWxleGFtcGxlIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5mb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJleGFtcGxlLm1peCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmZvcm1hbGV4YW1wbGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxleGFtcGxlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZm9ybWFsZXhhbXBsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmxvYXRzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0id2lkdGguYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmZvcm1hbGV4YW1wbGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZm9ybWFsZXhhbXBsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZm9ybWFsZXhhbXBsZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2dyYW1saXN0aW5nY28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgcHJvZ3JhbSBsaXN0aW5nIHdpdGggYXNzb2NpYXRlZCBhcmVhcyB1c2VkIGluIGNhbGxvdXRzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcm9ncmFtbGlzdGluZ2NvIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluZXNwZWNpZmljLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXJlYXNwZWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InByb2dyYW1saXN0aW5nIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjYWxsb3V0bGlzdCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9ncmFtbGlzdGluZ2NvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb2dyYW1saXN0aW5nY28uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZ3JhbWxpc3Rpbmdjby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2dyYW1saXN0aW5nY28ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByb2dyYW1saXN0aW5nY28uYXR0bGlzdCAtLT4KICA8IS0tIENhbGxvdXRMaXN0IChkZWZpbmVkIGFib3ZlIGluIExpc3RzKSAtLT4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGV4YW1wbGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmVhc3BlYy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBjb2xsZWN0aW9uIG9mIHJlZ2lvbnMgaW4gYSBncmFwaGljIG9yIGNvZGUgZXhhbXBsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJlYXNwZWMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZWEiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZWFzZXQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZWFzcGVjLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFyZWFzcGVjLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgVW5pdHM6IGdsb2JhbCB1bml0IG9mIG1lYXN1cmUgaW4gd2hpY2ggY29vcmRpbmF0ZXMgaW4KICAgIHRoaXMgc3BlYyBhcmUgZXhwcmVzc2VkOgogICAgCiAgICAtIENBTFNQYWlyICJ4MSx5MSB4Mix5MiI6IGxvd2VyLWxlZnQgYW5kIHVwcGVyLXJpZ2h0CiAgICBjb29yZGluYXRlcyBpbiBhIHJlY3RhbmdsZSBkZXNjcmliaW5nIHJlcHJvIGFyZWEgaW4gd2hpY2gKICAgIGdyYXBoaWMgaXMgcGxhY2VkLCB3aGVyZSBYIGFuZCBZIGRpbWVuc2lvbnMgYXJlIGVhY2ggc29tZQogICAgbnVtYmVyIDAuLjEwMDAwICh0YWtlbiBmcm9tIENBTFMgZ3JhcGhpYyBhdHRyaWJ1dGVzKQogICAgCiAgICAtIExpbmVDb2x1bW4gImxpbmUgY29sdW1uIjogbGluZSBudW1iZXIgYW5kIGNvbHVtbiBudW1iZXIKICAgIGF0IHdoaWNoIHRvIHN0YXJ0IGNhbGxvdXQgdGV4dCBpbiAibGluZXNwZWNpZmljIiBjb250ZW50CiAgICAKICAgIC0gTGluZVJhbmdlICJzdGFydGxpbmUgZW5kbGluZSI6IHdob2xlIGxpbmVzIGZyb20gc3RhcnRsaW5lCiAgICB0byBlbmRsaW5lIGluICJsaW5lc3BlY2lmaWMiIGNvbnRlbnQKICAgIAogICAgLSBMaW5lQ29sdW1uUGFpciAibGluZTEgY29sMSBsaW5lMiBjb2wyIjogc3RhcnRpbmcgYW5kIGVuZGluZwogICAgcG9pbnRzIG9mIGFyZWEgaW4gImxpbmVzcGVjaWZpYyIgY29udGVudCB0aGF0IHN0YXJ0cyBhdAogICAgZmlyc3QgcG9zaXRpb24gYW5kIGVuZHMgYXQgc2Vjb25kIHBvc2l0aW9uIChpbmNsdWRpbmcgdGhlCiAgICBiZWdpbm5pbmdzIG9mIGFueSBpbnRlcnZlbmluZyBsaW5lcykKICAgIAogICAgLSBPdGhlcjogZGlyZWN0aXZlIHRvIGxvb2sgYXQgdmFsdWUgb2YgT3RoZXJVbml0cyBhdHRyaWJ1dGUKICAgIHRvIGdldCBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBrZXl3b3JkCiAgICAKICAgIFRoZSBkZWZhdWx0IGlzIGltcGxlbWVudGF0aW9uLXNwZWNpZmljOyB1c3VhbGx5IGRlcGVuZGVudCBvbgogICAgdGhlIHBhcmVudCBlbGVtZW50IChHcmFwaGljQ08gZ2V0cyBDQUxTUGFpciwgUHJvZ3JhbUxpc3RpbmdDTwogICAgYW5kIFNjcmVlbkNPIGdldCBMaW5lQ29sdW1uKQogIC0tPgogIDwhLS0gT3RoZXJVbml0czogVXNlci1kZWZpbmVkIHVuaXRzIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcmVhc3BlYy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idW5pdHMiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjYWxzcGFpciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lY29sdW1uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVyYW5nZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lY29sdW1ucGFpciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcnVuaXRzIiB0eXBlPSJ4czpOTVRPS0VOIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcmVhc3BlYy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXJlYXNwZWMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhcmVhc3BlYy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFyZWEucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgcmVnaW9uIGRlZmluZWQgZm9yIGEgQ2FsbG91dCBpbiBhIGdyYXBoaWMgb3IgY29kZSBleGFtcGxlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcmVhIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJlYS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhcmVhLmVsZW1lbnQgLS0+CiAgPCEtLSBidWcgbnVtYmVyL3N5bWJvbCBvdmVycmlkZSBvciBpbml0aWFsaXphdGlvbiAtLT4KICA8IS0tIHRvIGFueSByZWxhdGVkIGluZm9ybWF0aW9uIC0tPgogIDwhLS0KICAgIFVuaXRzOiB1bml0IG9mIG1lYXN1cmUgaW4gd2hpY2ggY29vcmRpbmF0ZXMgaW4gdGhpcwogICAgYXJlYSBhcmUgZXhwcmVzc2VkOyBpbmhlcml0cyBmcm9tIEFyZWFTZXQgYW5kIEFyZWFTcGVjCiAgLS0+CiAgPCEtLSBPdGhlclVuaXRzOiBVc2VyLWRlZmluZWQgdW5pdHMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFyZWEuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1bml0cyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNhbHNwYWlyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVjb2x1bW4iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGluZXJhbmdlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVjb2x1bW5wYWlyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVydW5pdHMiIHR5cGU9InhzOk5NVE9LRU4iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29vcmRzIiB1c2U9InJlcXVpcmVkIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpZHJlcS5jb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcmVhLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhcmVhLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXJlYS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFyZWFzZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgc2V0IG9mIHJlbGF0ZWQgYXJlYXMgaW4gYSBncmFwaGljIG9yIGNvZGUgZXhhbXBsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYXJlYXNldCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJhcmVhIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZWFzZXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXJlYXNldC5lbGVtZW50IC0tPgogIDwhLS0gYnVnIG51bWJlci9zeW1ib2wgb3ZlcnJpZGUgb3IgaW5pdGlhbGl6YXRpb24gLS0+CiAgPCEtLQogICAgVW5pdHM6IHVuaXQgb2YgbWVhc3VyZSBpbiB3aGljaCBjb29yZGluYXRlcyBpbiB0aGlzCiAgICBhcmVhIGFyZSBleHByZXNzZWQ7IGluaGVyaXRzIGZyb20gQXJlYVNwZWMKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJlYXNldC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1bml0cyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNhbHNwYWlyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVjb2x1bW4iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGluZXJhbmdlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbmVjb2x1bW5wYWlyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVydW5pdHMiIHR5cGU9InhzOk5NVE9LRU4iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29vcmRzIiB1c2U9InJlcXVpcmVkIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpZHJlcS5jb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhcmVhc2V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhcmVhc2V0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXJlYXNldC5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgYXJlYXNwZWMuY29udGVudC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2dyYW1saXN0aW5nLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGxpdGVyYWwgbGlzdGluZyBvZiBhbGwgb3IgcGFydCBvZiBhIHByb2dyYW0uIC0tPgogIDx4czplbGVtZW50IG5hbWU9InByb2dyYW1saXN0aW5nIiBzdWJzdGl0dXRpb25Hcm91cD0ibGluZXNwZWNpZmljLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY28iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvcmVmIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lYW5ub3RhdGlvbiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGV4dG9iamVjdCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJvZ3JhbWxpc3RpbmcuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJvZ3JhbWxpc3RpbmcuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZ3JhbWxpc3RpbmcuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ3aWR0aC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVzcGVjaWZpYy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2dyYW1saXN0aW5nLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcm9ncmFtbGlzdGluZy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByb2dyYW1saXN0aW5nLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGl0ZXJhbGxheW91dC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBibG9jayBvZiB0ZXh0IGluIHdoaWNoIGxpbmUgYnJlYWtzIGFuZCB3aGl0ZSBzcGFjZSBhcmUgdG8gYmUgcmVwcm9kdWNlZCBmYWl0aGZ1bGx5LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaXRlcmFsbGF5b3V0IiBzdWJzdGl0dXRpb25Hcm91cD0ibGluZXNwZWNpZmljLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY28iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvcmVmIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZXh0b2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5lYW5ub3RhdGlvbiIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGl0ZXJhbGxheW91dC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsaXRlcmFsbGF5b3V0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpdGVyYWxsYXlvdXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ3aWR0aC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVzcGVjaWZpYy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIGRlZmF1bHQ9Im5vcm1hbCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1vbm9zcGFjZWQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm9ybWFsIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaXRlcmFsbGF5b3V0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBsaXRlcmFsbGF5b3V0LmF0dGxpc3QgLS0+CiAgPCEtLSBMaW5lQW5ub3RhdGlvbiAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBlbmQgb2YgbGl0ZXJhbGxheW91dC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNjcmVlbmNvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHNjcmVlbiB3aXRoIGFzc29jaWF0ZWQgYXJlYXMgdXNlZCBpbiBjYWxsb3V0cy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2NyZWVuY28iIHN1YnN0aXR1dGlvbkdyb3VwPSJsaW5lc3BlY2lmaWMuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmVhc3BlYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic2NyZWVuIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjYWxsb3V0bGlzdCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzY3JlZW5jby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzY3JlZW5jby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzY3JlZW5jby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNjcmVlbmNvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzY3JlZW5jby5hdHRsaXN0IC0tPgogIDwhLS0gQXJlYVNwZWMgKGRlZmluZWQgYWJvdmUpIC0tPgogIDwhLS0gQ2FsbG91dExpc3QgKGRlZmluZWQgYWJvdmUgaW4gTGlzdHMpIC0tPgogIDwhLS0gZW5kIG9mIHNjcmVlbmNvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUZXh0IHRoYXQgYSB1c2VyIHNlZXMgb3IgbWlnaHQgc2VlIG9uIGEgY29tcHV0ZXIgc2NyZWVuLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzY3JlZW4iIHN1YnN0aXR1dGlvbkdyb3VwPSJsaW5lc3BlY2lmaWMuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29yZWYiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVhbm5vdGF0aW9uIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzY3JlZW4uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNjcmVlbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndpZHRoLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZXNwZWNpZmljLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2NyZWVuLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzY3JlZW4uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzY3JlZW4ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzY3JlZW5zaG90LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHJlcHJlc2VudGF0aW9uIG9mIHdoYXQgdGhlIHVzZXIgc2VlcyBvciBtaWdodCBzZWUgb24gYSBjb21wdXRlciBzY3JlZW4uIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNjcmVlbnNob3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaW5lc3BlY2lmaWMuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNjcmVlbmluZm8iLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJncmFwaGljIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImdyYXBoaWNjbyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtZWRpYW9iamVjdCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtZWRpYW9iamVjdGNvIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNjcmVlbnNob3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuc2hvdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzY3JlZW5zaG90LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2NyZWVuc2hvdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2NyZWVuc2hvdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNjcmVlbnNob3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzY3JlZW5pbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpJbmZvcm1hdGlvbiBhYm91dCBob3cgYSBzY3JlZW4gc2hvdCB3YXMgcHJvZHVjZWQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNjcmVlbmluZm8iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzY3JlZW5pbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNjcmVlbmluZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2NyZWVuaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNjcmVlbmluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNjcmVlbmluZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzY3JlZW5pbmZvLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBzY3JlZW5zaG90LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gRmlndXJlcyBldGMuIC4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmlndXJlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGZvcm1hbCBmaWd1cmUsIGdlbmVyYWxseSBhbiBpbGx1c3RyYXRpb24sIHdpdGggYSB0aXRsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmlndXJlIiBzdWJzdGl0dXRpb25Hcm91cD0iZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJmb3JtYWxvYmplY3QudGl0bGUuY29udGVudCIvPgogICAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmdyb3VwIHJlZj0iZmlndXJlLm1peCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmlndXJlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZpZ3VyZS5lbGVtZW50IC0tPgogIDwhLS0KICAgIEZsb2F0OiBXaGV0aGVyIHRoZSBGaWd1cmUgaXMgc3VwcG9zZWQgdG8gYmUgcmVuZGVyZWQKICAgIHdoZXJlIGNvbnZlbmllbnQgKHllcyAoMSkgdmFsdWUpIG9yIGF0IHRoZSBwbGFjZSBpdCBvY2N1cnMKICAgIGluIHRoZSB0ZXh0IChubyAoMCkgdmFsdWUsIHRoZSBkZWZhdWx0KQogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaWd1cmUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZsb2F0IiBkZWZhdWx0PSIwIiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmxvYXRzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZ3dpZGUiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaWd1cmUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZpZ3VyZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZpZ3VyZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImluZm9ybWFsZmlndXJlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHVudGl0bGVkIGZpZ3VyZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5mb3JtYWxmaWd1cmUiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6Z3JvdXAgcmVmPSJmaWd1cmUubWl4Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmZvcm1hbGZpZ3VyZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGZpZ3VyZS5lbGVtZW50IC0tPgogIDwhLS0KICAgIEZsb2F0OiBXaGV0aGVyIHRoZSBGaWd1cmUgaXMgc3VwcG9zZWQgdG8gYmUgcmVuZGVyZWQKICAgIHdoZXJlIGNvbnZlbmllbnQgKHllcyAoMSkgdmFsdWUpIG9yIGF0IHRoZSBwbGFjZSBpdCBvY2N1cnMKICAgIGluIHRoZSB0ZXh0IChubyAoMCkgdmFsdWUsIHRoZSBkZWZhdWx0KQogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmZvcm1hbGZpZ3VyZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmxvYXQiIGRlZmF1bHQ9IjAiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdHN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBnd2lkZSIgdHlwZT0ieWVzb3Juby5hdHR2YWxzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZm9ybWFsZmlndXJlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGZpZ3VyZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZm9ybWFsZmlndXJlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3JhcGhpY2NvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGdyYXBoaWMgdGhhdCBjb250YWlucyBjYWxsb3V0IGFyZWFzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJncmFwaGljY28iIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZWFzcGVjIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJncmFwaGljIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjYWxsb3V0bGlzdCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJncmFwaGljY28uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3JhcGhpY2NvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImdyYXBoaWNjby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImdyYXBoaWNjby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ3JhcGhpY2NvLmF0dGxpc3QgLS0+CiAgPCEtLSBBcmVhU3BlYyAoZGVmaW5lZCBhYm92ZSBpbiBFeGFtcGxlcykgLS0+CiAgPCEtLSBDYWxsb3V0TGlzdCAoZGVmaW5lZCBhYm92ZSBpbiBMaXN0cykgLS0+CiAgPCEtLSBlbmQgb2YgZ3JhcGhpY2NvLm1vZHVsZSAtLT4KICA8IS0tCiAgICBHcmFwaGljYWwgZGF0YSBjYW4gYmUgdGhlIGNvbnRlbnQgb2YgR3JhcGhpYywgb3IgeW91IGNhbiByZWZlcmVuY2UKICAgIGFuIGV4dGVybmFsIGZpbGUgZWl0aGVyIGFzIGFuIGVudGl0eSAoRW50aXRyZWYpIG9yIGEgZmlsZW5hbWUKICAgIChGaWxlcmVmKS4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3JhcGhpYy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBkaXNwbGF5ZWQgZ3JhcGhpY2FsIG9iamVjdCAobm90IGFuIGlubGluZSkuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImdyYXBoaWMiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImdyYXBoaWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3JhcGhpYy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJncmFwaGljLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3JhcGhpY3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJncmFwaGljLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBncmFwaGljLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3JhcGhpYy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZWdyYXBoaWMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkFuIG9iamVjdCBjb250YWluaW5nIG9yIHBvaW50aW5nIHRvIGdyYXBoaWNhbCBkYXRhIHRoYXQgd2lsbCBiZSByZW5kZXJlZCBpbmxpbmUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImlubGluZWdyYXBoaWMiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmxpbmVvYmouY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlubGluZWdyYXBoaWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5saW5lZ3JhcGhpYy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmxpbmVncmFwaGljLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3JhcGhpY3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmxpbmVncmFwaGljLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmxpbmVncmFwaGljLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5saW5lZ3JhcGhpYy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lZGlhb2JqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGRpc3BsYXllZCBtZWRpYSBvYmplY3QgKHZpZGVvLCBhdWRpbywgaW1hZ2UsIGV0Yy4pLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZWRpYW9iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvYmplY3RpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVkaWFvYmplY3QubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImNhcHRpb24iLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVkaWFvYmplY3QuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWVkaWFvYmplY3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWVkaWFvYmplY3QuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZWRpYW9iamVjdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWVkaWFvYmplY3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtZWRpYW9iamVjdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZW1lZGlhb2JqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBpbmxpbmUgbWVkaWEgb2JqZWN0ICh2aWRlbywgYXVkaW8sIGltYWdlLCBhbmQgc28gb24pLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbmxpbmVtZWRpYW9iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImlubGluZW9iai5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvYmplY3RpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVkaWFvYmplY3QubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlubGluZW1lZGlhb2JqZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGlubGluZW1lZGlhb2JqZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZW1lZGlhb2JqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5saW5lbWVkaWFvYmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGlubGluZW1lZGlhb2JqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5saW5lbWVkaWFvYmplY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2aWRlb29iamVjdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSB3cmFwcGVyIGZvciB2aWRlbyBkYXRhIGFuZCBpdHMgYXNzb2NpYXRlZCBtZXRhLWluZm9ybWF0aW9uLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2aWRlb29iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9Im1lZGlhb2JqZWN0Lm1peCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ib2JqZWN0aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idmlkZW9kYXRhIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZpZGVvb2JqZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZpZGVvb2JqZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZpZGVvb2JqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmlkZW9vYmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZpZGVvb2JqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdmlkZW9vYmplY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdWRpb29iamVjdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSB3cmFwcGVyIGZvciBhdWRpbyBkYXRhIGFuZCBpdHMgYXNzb2NpYXRlZCBtZXRhLWluZm9ybWF0aW9uLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJhdWRpb29iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9Im1lZGlhb2JqZWN0Lm1peCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ib2JqZWN0aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXVkaW9kYXRhIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1ZGlvb2JqZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGF1ZGlvb2JqZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1ZGlvb2JqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXVkaW9vYmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGF1ZGlvb2JqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXVkaW9vYmplY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbWFnZW9iamVjdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSB3cmFwcGVyIGZvciBpbWFnZSBkYXRhIGFuZCBpdHMgYXNzb2NpYXRlZCBtZXRhLWluZm9ybWF0aW9uLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbWFnZW9iamVjdCIgc3Vic3RpdHV0aW9uR3JvdXA9Im1lZGlhb2JqZWN0Lm1peCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ib2JqZWN0aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW1hZ2VkYXRhIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImltYWdlb2JqZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGltYWdlb2JqZWN0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltYWdlb2JqZWN0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW1hZ2VvYmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGltYWdlb2JqZWN0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW1hZ2VvYmplY3QubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0ZXh0b2JqZWN0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHdyYXBwZXIgZm9yIGEgdGV4dCBkZXNjcmlwdGlvbiBvZiBhbiBvYmplY3QgYW5kIGl0cyBhc3NvY2lhdGVkIG1ldGEtaW5mb3JtYXRpb24uIC0tPgogIDx4czplbGVtZW50IG5hbWU9InRleHRvYmplY3QiIHN1YnN0aXR1dGlvbkdyb3VwPSJtZWRpYW9iamVjdC5taXgiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im9iamVjdGluZm8iLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwaHJhc2UiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idGV4dGRhdGEiLz4KICAgICAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0ZXh0b2JqZWN0Lm1peCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXh0b2JqZWN0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRleHRvYmplY3QuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGV4dG9iamVjdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRleHRvYmplY3Qucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRleHRvYmplY3QuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0ZXh0b2JqZWN0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib2JqZWN0aW5mby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6TWV0YS1pbmZvcm1hdGlvbiBmb3IgYW4gb2JqZWN0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJvYmplY3RpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImluZm8uY2xhc3MiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib2JqZWN0aW5mby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvYmplY3RpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9iamVjdGluZm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvYmplY3RpbmZvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvYmplY3RpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb2JqZWN0aW5mby5tb2R1bGUgLS0+CiAgPCEtLQogICAgRW50aXR5UmVmOiBOYW1lIG9mIGFuIGV4dGVybmFsIGVudGl0eSBjb250YWluaW5nIHRoZSBjb250ZW50CiAgICBvZiB0aGUgb2JqZWN0IGRhdGEKICAtLT4KICA8IS0tCiAgICBGaWxlUmVmOiBGaWxlbmFtZSwgcXVhbGlmaWVkIGJ5IGEgcGF0aG5hbWUgaWYgZGVzaXJlZCwKICAgIGRlc2lnbmF0aW5nIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnQgb2YgdGhlIG9iamVjdCBkYXRhCiAgLS0+CiAgPCEtLSBGb3JtYXQ6IE5vdGF0aW9uIG9mIHRoZSBlbGVtZW50IGNvbnRlbnQsIGlmIGFueSAtLT4KICA8IS0tIFNyY0NyZWRpdDogSW5mb3JtYXRpb24gYWJvdXQgdGhlIHNvdXJjZSBvZiB0aGUgaW1hZ2UgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9iamVjdGRhdGEuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW50aXR5cmVmIiB0eXBlPSJ4czpFTlRJVFkiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsZXJlZiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb3JtYXQiIHR5cGU9Im5vdGF0aW9uLmNsYXNzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNyY2NyZWRpdCIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZpZGVvZGF0YS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6UG9pbnRlciB0byBleHRlcm5hbCB2aWRlbyBkYXRhLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2aWRlb2RhdGEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2aWRlb2RhdGEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdmlkZW9kYXRhLmVsZW1lbnQgLS0+CiAgPCEtLSBXaWR0aDogU2FtZSBhcyBDQUxTIHJlcHJvd2lkIChkZXNpcmVkIHdpZHRoKSAtLT4KICA8IS0tIERlcHRoOiBTYW1lIGFzIENBTFMgcmVwcm9kZXAgKGRlc2lyZWQgZGVwdGgpIC0tPgogIDwhLS0KICAgIEFsaWduOiBTYW1lIGFzIENBTFMgaHBsYWNlIHdpdGggJ25vbmUnIHJlbW92ZWQ7ICNJTVBMSUVEIG1lYW5zCiAgICBhcHBsaWNhdGlvbi1zcGVjaWZpYwogIC0tPgogIDwhLS0gU2NhbGU6IENvbmZsYXRpb24gb2YgQ0FMUyBoc2NhbGUgYW5kIHZzY2FsZSAtLT4KICA8IS0tIFNjYWxlZml0OiBTYW1lIGFzIENBTFMgc2NhbGVmaXQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZpZGVvZGF0YS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGVudHdpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlcHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnRkZXB0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtaWRkbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm90dG9tIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjYWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjYWxlZml0IiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9iamVjdGRhdGEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2aWRlb2RhdGEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZpZGVvZGF0YS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZpZGVvZGF0YS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1ZGlvZGF0YS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6UG9pbnRlciB0byBleHRlcm5hbCBhdWRpbyBkYXRhLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJhdWRpb2RhdGEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdWRpb2RhdGEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXVkaW9kYXRhLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1ZGlvZGF0YS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9iamVjdGRhdGEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdWRpb2RhdGEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGF1ZGlvZGF0YS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGF1ZGlvZGF0YS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltYWdlZGF0YS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6UG9pbnRlciB0byBleHRlcm5hbCBpbWFnZSBkYXRhLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbWFnZWRhdGEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbWFnZWRhdGEuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW1hZ2VkYXRhLmVsZW1lbnQgLS0+CiAgPCEtLSBXaWR0aDogU2FtZSBhcyBDQUxTIHJlcHJvd2lkIChkZXNpcmVkIHdpZHRoKSAtLT4KICA8IS0tIERlcHRoOiBTYW1lIGFzIENBTFMgcmVwcm9kZXAgKGRlc2lyZWQgZGVwdGgpIC0tPgogIDwhLS0KICAgIEFsaWduOiBTYW1lIGFzIENBTFMgaHBsYWNlIHdpdGggJ25vbmUnIHJlbW92ZWQ7ICNJTVBMSUVEIG1lYW5zCiAgICBhcHBsaWNhdGlvbi1zcGVjaWZpYwogIC0tPgogIDwhLS0gU2NhbGU6IENvbmZsYXRpb24gb2YgQ0FMUyBoc2NhbGUgYW5kIHZzY2FsZSAtLT4KICA8IS0tIFNjYWxlZml0OiBTYW1lIGFzIENBTFMgc2NhbGVmaXQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltYWdlZGF0YS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGVudHdpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlcHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnRkZXB0aCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtaWRkbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm90dG9tIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjYWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjYWxlZml0IiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9iamVjdGRhdGEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbWFnZWRhdGEucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGltYWdlZGF0YS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGltYWdlZGF0YS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRleHRkYXRhLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpQb2ludGVyIHRvIGV4dGVybmFsIHRleHQgZGF0YS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGV4dGRhdGEiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXh0ZGF0YS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0ZXh0ZGF0YS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0ZXh0ZGF0YS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW5jb2RpbmciLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9iamVjdGRhdGEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXh0ZGF0YS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGV4dGRhdGEuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0ZXh0ZGF0YS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lZGlhb2JqZWN0Y28ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgbWVkaWEgb2JqZWN0IHRoYXQgY29udGFpbnMgY2FsbG91dHMuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im1lZGlhb2JqZWN0Y28iIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0ib2JqZWN0aW5mbyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW1hZ2VvYmplY3RjbyIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImltYWdlb2JqZWN0Y28iLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idGV4dG9iamVjdCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZWRpYW9iamVjdGNvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1lZGlhb2JqZWN0Y28uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWVkaWFvYmplY3Rjby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1lZGlhb2JqZWN0Y28ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1lZGlhb2JqZWN0Y28uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtZWRpYW9iamVjdGNvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW1hZ2VvYmplY3Rjby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSB3cmFwcGVyIGZvciBhbiBpbWFnZSBvYmplY3Qgd2l0aCBjYWxsb3V0cy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW1hZ2VvYmplY3RjbyIgc3Vic3RpdHV0aW9uR3JvdXA9Im1lZGlhb2JqZWN0Lm1peCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZWFzcGVjIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbWFnZW9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY2FsbG91dGxpc3QiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW1hZ2VvYmplY3Rjby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpbWFnZW9iamVjdGNvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImltYWdlb2JqZWN0Y28uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbWFnZW9iamVjdGNvLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbWFnZW9iamVjdGNvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW1hZ2VvYmplY3Rjby5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgbWVkaWFvYmplY3QuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBFcXVhdGlvbnMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gVGhpcyBQRSBwcm92aWRlcyBhIG1lY2hhbmlzbSBmb3IgcmVwbGFjaW5nIGVxdWF0aW9uIGNvbnRlbnQsIC0tPgogIDwhLS0gcGVyaGFwcyBhZGRpbmcgYSBuZXcgb3IgZGlmZmVyZW50IG1vZGVsIChlLmcuLCBNYXRoTUwpIC0tPgogIDx4czpncm91cCBuYW1lPSJlcXVhdGlvbi5jb250ZW50Ij4KICAgIDx4czpzZXF1ZW5jZT4KICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImFsdCIvPgogICAgICA8eHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtZWRpYW9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1hdGhwaHJhc2UiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICA8L3hzOnNlcXVlbmNlPgogIDwveHM6Z3JvdXA+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImlubGluZWVxdWF0aW9uLmNvbnRlbnQiPgogICAgPHhzOnNlcXVlbmNlPgogICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYWx0Ii8+CiAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImlubGluZW1lZGlhb2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWF0aHBocmFzZSIvPgogICAgICA8L3hzOmNob2ljZT4KICAgIDwveHM6c2VxdWVuY2U+CiAgPC94czpjb21wbGV4VHlwZT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXF1YXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZGlzcGxheWVkIG1hdGhlbWF0aWNhbCBlcXVhdGlvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXF1YXRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJmb3JtYWwuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9ImJsb2NraW5mbyIvPgogICAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbmZvcm1hbGVxdWF0aW9uIi8+CiAgICAgICAgICA8eHM6Z3JvdXAgcmVmPSJlcXVhdGlvbi5jb250ZW50Ii8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVxdWF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVxdWF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVxdWF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdHN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVxdWF0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlcXVhdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVxdWF0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWxlcXVhdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBkaXNwbGF5ZWQgbWF0aGVtYXRpY2FsIGVxdWF0aW9uIHdpdGhvdXQgYSB0aXRsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5mb3JtYWxlcXVhdGlvbiIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJlcXVhdGlvbi5jb250ZW50Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZm9ybWFsZXF1YXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxlcXVhdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmZvcm1hbGVxdWF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdHN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmZvcm1hbGVxdWF0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbGVxdWF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWxlcXVhdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZWVxdWF0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIG1hdGhlbWF0aWNhbCBlcXVhdGlvbiBvciBleHByZXNzaW9uIG9jY3VycmluZyBpbmxpbmUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImlubGluZWVxdWF0aW9uIiBzdWJzdGl0dXRpb25Hcm91cD0iaW5saW5lb2JqLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y29tcGxleENvbnRlbnQ+CiAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJpbmxpbmVlcXVhdGlvbi5jb250ZW50Ij4KICAgICAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlubGluZWVxdWF0aW9uLmF0dGxpc3QiLz4KICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgPC94czpjb21wbGV4Q29udGVudD4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGlubGluZWVxdWF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlubGluZWVxdWF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5saW5lZXF1YXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGlubGluZWVxdWF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5saW5lZXF1YXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhbHQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRleHQgcmVwcmVzZW50YXRpb24gZm9yIGEgZ3JhcGhpY2FsIGVsZW1lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImFsdCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhbHQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWx0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFsdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFsdC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWx0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYWx0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWF0aHBocmFzZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBtYXRoZW1hdGljYWwgcGhyYXNlLCBhbiBleHByZXNzaW9uIHRoYXQgY2FuIGJlIHJlcHJlc2VudGVkIHdpdGggb3JkaW5hcnkgdGV4dCBhbmQgYSBzbWFsbCBhbW91bnQgb2YgbWFya3VwLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJtYXRocGhyYXNlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzY3JpcHQiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN1cGVyc2NyaXB0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbXBoYXNpcyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWF0aHBocmFzZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtYXRocGhyYXNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1hdGhwaHJhc2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtYXRocGhyYXNlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtYXRocGhyYXNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWF0aHBocmFzZS5tb2R1bGUgLS0+CiAgPCEtLSBUYWJsZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gQ2hvb3NlIGEgdGFibGUgbW9kZWwuIENBTFMgb3IgT0FTSVMgWE1MIEV4Y2hhbmdlIC0tPgogIDwhLS0gRG8gd2UgYWxsb3cgdGhlIEhUTUwgdGFibGUgbW9kZWwgYXMgd2VsbD8gLS0+CiAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CiAgPCEtLQogICAgeGh0bWx0YmwubW9kIGRlZmluZXMgSFRNTCB0YWJsZXMgYW5kIHNldHMgcGFyYW1ldGVyCiAgICBlbnRpdGllcyBzbyB0aGF0LCB3aGVuIHRoZSBDQUxTIHRhYmxlIG1vZHVsZSBpcyByZWFkLAogICAgd2UgZW5kIHVwIGFsbG93aW5nIGFueSB0YWJsZSB0byBiZSBDQUxTIG9yIEhUTUwuCiAgICBpLmUuIFRoaXMgaW5jbHVkZSBtdXN0IGNvbWUgZmlyc3QhCiAgLS0+CiAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CiAgPCEtLSBlbmQgb2YgYWxsb3cuaHRtbC50YWJsZXMgLS0+CiAgPCEtLSBBZGQgbGFiZWwgYW5kIHJvbGUgYXR0cmlidXRlcyB0byB0YWJsZSBhbmQgaW5mb3JtYWx0YWJsZSAtLT4KICA8IS0tCiAgICBBZGQgY29tbW9uIGF0dHJpYnV0ZXMgdG8gVGFibGUsIFRHcm91cCwgVEJvZHksIFRIZWFkLCBURm9vdCwgUm93LAogICAgRW50cnlUYmwsIGFuZCBFbnRyeSAoYW5kIEluZm9ybWFsVGFibGUgZWxlbWVudCkuCiAgLS0+CiAgPCEtLSBDb250ZW50IG1vZGVsIGZvciBUYWJsZS4gLS0+CiAgPCEtLSBBbGxvdyBlaXRoZXIgb2JqZWN0cyBvciBpbmxpbmVzOyBiZXdhcmUgb2YgUkVzIGJldHdlZW4gZWxlbWVudHMuIC0tPgogIDwhLS0gUmVmZXJlbmNlIENBTFMgVGFibGUgTW9kZWwgLS0+CiAgPCEtLSBlbmQgb2YgdGFibGUubW9kdWxlIC0tPgogIDwhLS0KICAgIE5vdGUgdGhhdCBJbmZvcm1hbFRhYmxlIGlzIGRlcGVuZGVudCBvbiBzb21lIG9mIHRoZSBlbnRpdHkKICAgIGRlY2xhcmF0aW9ucyB0aGF0IGN1c3RvbWl6ZSBUYWJsZS4KICAtLT4KICA8IS0tIHRoZSBmb2xsb3dpbmcgZW50aXR5IG1heSBoYXZlIGJlZW4gZGVjbGFyZWQgYnkgdGhlIFhIVE1MIHRhYmxlIG1vZHVsZSAtLT4KICA8IS0tIGRvYzpBIHRhYmxlIHdpdGhvdXQgYSB0aXRsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW5mb3JtYWx0YWJsZSIgc3Vic3RpdHV0aW9uR3JvdXA9ImluZm9ybWFsLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJpbmZvcm1hbC50YmwudGFibGUubWRsIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImluZm9ybWFsdGFibGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWx0YWJsZS5lbGVtZW50IC0tPgogIDwhLS0KICAgIEZyYW1lLCBDb2xzZXAsIGFuZCBSb3dzZXAgbXVzdCBiZSByZXBlYXRlZCBiZWNhdXNlCiAgICB0aGV5IGFyZSBub3QgaW4gZW50aXRpZXMgaW4gdGhlIHRhYmxlIG1vZHVsZS4KICAtLT4KICA8IS0tCiAgICBpbmNsdWRlcyBUYWJTdHlsZSwgVG9DZW50cnksIFNob3J0RW50cnksCiAgICBPcmllbnQsIFBnV2lkZQogIC0tPgogIDwhLS0gaW5jbHVkZXMgTGFiZWwgLS0+CiAgPCEtLSBpbmNsdWRlcyBjb21tb24gYXR0cmlidXRlcyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5mb3JtYWx0YWJsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZnJhbWUiIHR5cGU9InRibC5mcmFtZS5hdHR2YWwiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sc2VwIiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm93c2VwIiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi50YWJsZS5hdHRyaWJzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0YmwudGFibGUuYXR0Ii8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpbmZvcm1hbHRhYmxlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW5mb3JtYWx0YWJsZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNhcHRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgY2FwdGlvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2FwdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0ZXh0b2JqZWN0Lm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjYXB0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNhcHRpb24uZWxlbWVudCAtLT4KICA8IS0tIGF0dHJzIGNvbWVzIGZyb20gSFRNTCB0YWJsZXMgLi4uIC0tPgogIDwhLS0gY29tbW9uLmF0dHJpYiwgYnV0IHdpdGhvdXQgSUQgYmVjYXVzZSBJRCBpcyBpbiBhdHRycyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2FwdGlvbi5hdHRsaXN0LmNvbnRlbnQiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2FwdGlvbi5yb2xlLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXR0cnMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm90dG9tIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjYXB0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2FwdGlvbi5hdHRsaXN0LmNvbnRlbnQiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNhcHRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjYXB0aW9uLm1vZHVsZSAtLT4KICA8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBTeW5vcHNlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gU3lub3BzaXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3lub3BzaXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZ2VuZXJhbC1wdXJwb3NlIGVsZW1lbnQgZm9yIHJlcHJlc2VudGluZyB0aGUgc3ludGF4IG9mIGNvbW1hbmRzIG9yIGZ1bmN0aW9ucy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3lub3BzaXMiIHN1YnN0aXR1dGlvbkdyb3VwPSJzeW5vcC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImdyYXBoaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1lZGlhb2JqZWN0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29yZWYiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVhbm5vdGF0aW9uIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeW5vcHNpcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzeW5vcHNpcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeW5vcHNpcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZXNwZWNpZmljLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3lub3BzaXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN5bm9wc2lzLmF0dGxpc3QgLS0+CiAgPCEtLSBMaW5lQW5ub3RhdGlvbiAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBlbmQgb2Ygc3lub3BzaXMubW9kdWxlIC0tPgogIDwhLS0gQ21kU3lub3BzaXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY21kc3lub3BzaXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgc3ludGF4IHN1bW1hcnkgZm9yIGEgc29mdHdhcmUgY29tbWFuZC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY21kc3lub3BzaXMiIHN1YnN0aXR1dGlvbkdyb3VwPSJzeW5vcC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iY29tbWFuZCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmciLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JvdXAiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2JyIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzeW5vcGZyYWdtZW50Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNtZHN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNtZHN5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPCEtLQogICAgU2VwY2hhcjogQ2hhcmFjdGVyIHRoYXQgc2hvdWxkIHNlcGFyYXRlIGNvbW1hbmQgYW5kIGFsbAogICAgdG9wLWxldmVsIGFyZ3VtZW50czsgYWx0ZXJuYXRlIHZhbHVlIG1pZ2h0IGJlIGUuZy4sICZEZWx0YTsKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY21kc3lub3BzaXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VwY2hhciIgZGVmYXVsdD0iICIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbWRsZW5ndGgiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNtZHN5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjbWRzeW5vcHNpcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNtZHN5bm9wc2lzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXJnLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBhcmd1bWVudCBpbiBhIENtZFN5bm9wc2lzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcmciPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JvdXAiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9wdGlvbiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3BmcmFnbWVudHJlZiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVwbGFjZWFibGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNiciIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJnLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFyZy5lbGVtZW50IC0tPgogIDwhLS0KICAgIENob2ljZTogV2hldGhlciBBcmcgbXVzdCBiZSBzdXBwbGllZDogT3B0IChvcHRpb25hbCB0bwogICAgc3VwcGx5LCBlLmcuIFthcmddOyB0aGUgZGVmYXVsdCksIFJlcSAocmVxdWlyZWQgdG8gc3VwcGx5LAogICAgZS5nLiB7YXJnfSksIG9yIFBsYWluIChyZXF1aXJlZCB0byBzdXBwbHksIGUuZy4gYXJnKQogIC0tPgogIDwhLS0KICAgIFJlcDogd2hldGhlciBBcmcgaXMgcmVwZWF0YWJsZTogTm9yZXBlYXQgKGUuZy4gYXJnIHdpdGhvdXQKICAgIGVsbGlwc2lzOyB0aGUgZGVmYXVsdCksIG9yIFJlcGVhdCAoZS5nLiBhcmcuLi4pCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFyZy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hvaWNlIiBkZWZhdWx0PSJvcHQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVxIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBsYWluIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcCIgZGVmYXVsdD0ibm9yZXBlYXQiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JlcGVhdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXBlYXQiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFyZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXJnLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXJnLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3JvdXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZ3JvdXAgb2YgZWxlbWVudHMgaW4gYSBDbWRTeW5vcHNpcy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3JvdXAiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFyZyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JvdXAiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9wdGlvbiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3lub3BmcmFnbWVudHJlZiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVwbGFjZWFibGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InNiciIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3JvdXAuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3JvdXAuZWxlbWVudCAtLT4KICA8IS0tCiAgICBDaG9pY2U6IFdoZXRoZXIgR3JvdXAgbXVzdCBiZSBzdXBwbGllZDogT3B0IChvcHRpb25hbCB0bwogICAgc3VwcGx5LCBlLmcuICBbZzF8ZzJ8ZzNdOyB0aGUgZGVmYXVsdCksIFJlcSAocmVxdWlyZWQgdG8KICAgIHN1cHBseSwgZS5nLiAge2cxfGcyfGczfSksIFBsYWluIChyZXF1aXJlZCB0byBzdXBwbHksCiAgICBlLmcuICBnMXxnMnxnMyksIE9wdE11bHQgKGNhbiBzdXBwbHkgemVybyBvciBtb3JlLCBlLmcuCiAgICBbW2cxfGcyfGczXV0pLCBvciBSZXFNdWx0IChtdXN0IHN1cHBseSBvbmUgb3IgbW9yZSwgZS5nLgogICAge3tnMXxnMnxnM319KQogIC0tPgogIDwhLS0KICAgIFJlcDogd2hldGhlciBHcm91cCBpcyByZXBlYXRhYmxlOiBOb3JlcGVhdCAoZS5nLiBncm91cAogICAgd2l0aG91dCBlbGxpcHNpczsgdGhlIGRlZmF1bHQpLCBvciBSZXBlYXQgKGUuZy4gZ3JvdXAuLi4pCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdyb3VwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaG9pY2UiIGRlZmF1bHQ9Im9wdCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9wdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icGxhaW4iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVwIiBkZWZhdWx0PSJub3JlcGVhdCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vcmVwZWF0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlcGVhdCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3JvdXAucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGdyb3VwLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3JvdXAubW9kdWxlIC0tPgogIDwhLS0gU3lub3BzaXMgYnJlYWsgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNici5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gZXhwbGljaXQgbGluZSBicmVhayBpbiBhIGNvbW1hbmQgc3lub3BzaXMuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNiciI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNici5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzYnIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2JyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2JyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzYnIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzYnIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeW5vcGZyYWdtZW50cmVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHJlZmVyZW5jZSB0byBhIGZyYWdtZW50IG9mIGEgY29tbWFuZCBzeW5vcHNpcy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3lub3BmcmFnbWVudHJlZiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeW5vcGZyYWdtZW50cmVmLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnRyZWYuZWxlbWVudCAtLT4KICA8IS0tCiAgICB0byBTeW5vcEZyYWdtZW50IG9mIGNvbXBsZXggc3lub3BzaXMKICAgIG1hdGVyaWFsIGZvciBzZXBhcmF0ZSByZWZlcmVuY2luZwogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeW5vcGZyYWdtZW50cmVmLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHJlcS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bm9wZnJhZ21lbnRyZWYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnRyZWYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzeW5vcGZyYWdtZW50cmVmLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3lub3BmcmFnbWVudC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBwb3J0aW9uIG9mIGEgQ21kU3lub3BzaXMgYnJva2VuIG91dCBmcm9tIHRoZSBtYWluIGJvZHkgb2YgdGhlIHN5bm9wc2lzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzeW5vcGZyYWdtZW50Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcmciLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imdyb3VwIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeW5vcGZyYWdtZW50LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3lub3BmcmFnbWVudC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImlkcmVxLmNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN5bm9wZnJhZ21lbnQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN5bm9wZnJhZ21lbnQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzeW5vcGZyYWdtZW50Lm1vZHVsZSAtLT4KICA8IS0tIENvbW1hbmQgKGRlZmluZWQgaW4gdGhlIElubGluZXMgc2VjdGlvbiwgYmVsb3cpIC0tPgogIDwhLS0gT3B0aW9uIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIFJlcGxhY2VhYmxlIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIGVuZCBvZiBjbWRzeW5vcHNpcy5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIEZ1bmNTeW5vcHNpcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHN5bnRheCBzdW1tYXJ5IGZvciBhIGZ1bmN0aW9uIGRlZmluaXRpb24uIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImZ1bmNzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9InN5bm9wLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmdW5jc3lub3BzaXNpbmZvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmdW5jcHJvdG90eXBlIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jc3lub3BzaXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZnVuY3N5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmNzeW5vcHNpcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY3N5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jc3lub3BzaXNpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpJbmZvcm1hdGlvbiBzdXBwbGVtZW50aW5nIHRoZSBGdW5jRGVmcyBvZiBhIEZ1bmNTeW5vcHNpcy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZnVuY3N5bm9wc2lzaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmVhbm5vdGF0aW9uIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jc3lub3BzaXNpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZ1bmNzeW5vcHNpc2luZm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY3N5bm9wc2lzaW5mby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVzcGVjaWZpYy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNzeW5vcHNpc2luZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZ1bmNzeW5vcHNpc2luZm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmdW5jc3lub3BzaXNpbmZvLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY3Byb3RvdHlwZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHByb3RvdHlwZSBvZiBhIGZ1bmN0aW9uLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJmdW5jcHJvdG90eXBlIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibW9kaWZpZXIiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZ1bmNkZWYiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2b2lkIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InZhcmFyZ3MiLz4KICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYW1kZWYiLz4KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InZhcmFyZ3MiLz4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jcHJvdG90eXBlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZ1bmNwcm90b3R5cGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY3Byb3RvdHlwZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNwcm90b3R5cGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZ1bmNwcm90b3R5cGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmdW5jcHJvdG90eXBlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY2RlZi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBmdW5jdGlvbiAoc3Vicm91dGluZSkgbmFtZSBhbmQgaXRzIHJldHVybiB0eXBlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJmdW5jZGVmIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0eXBlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXBsYWNlYWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZnVuY3Rpb24iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNkZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZnVuY2RlZi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jZGVmLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZnVuY2RlZi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZnVuY2RlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZ1bmNkZWYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2b2lkLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBlbXB0eSBlbGVtZW50IGluIGEgZnVuY3Rpb24gc3lub3BzaXMgaW5kaWNhdGluZyB0aGF0IHRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiB0YWtlcyBubyBhcmd1bWVudHMuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InZvaWQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2b2lkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZvaWQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idm9pZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZvaWQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZvaWQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB2b2lkLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmFyYXJncy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gZW1wdHkgZWxlbWVudCBpbiBhIGZ1bmN0aW9uIHN5bm9wc2lzIGluZGljYXRpbmcgYSB2YXJpYWJsZSBudW1iZXIgb2YgYXJndW1lbnRzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ2YXJhcmdzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmFyYXJncy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB2YXJhcmdzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZhcmFyZ3MuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2YXJhcmdzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB2YXJhcmdzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdmFyYXJncy5tb2R1bGUgLS0+CiAgPCEtLQogICAgUHJvY2Vzc2luZyBhc3N1bWVzIHRoYXQgb25seSBvbmUgUGFyYW1ldGVyIHdpbGwgYXBwZWFyIGluIGEKICAgIFBhcmFtRGVmLCBhbmQgdGhhdCBGdW5jUGFyYW1zIHdpbGwgYmUgdXNlZCBhdCBtb3N0IG9uY2UsIGZvcgogICAgcHJvdmlkaW5nIGluZm9ybWF0aW9uIG9uIHRoZSAiaW5uZXIgcGFyYW1ldGVycyIgZm9yIHBhcmFtZXRlcnMgdGhhdAogICAgYXJlIHBvaW50ZXJzIHRvIGZ1bmN0aW9ucy4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFyYW1kZWYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkluZm9ybWF0aW9uIGFib3V0IGEgZnVuY3Rpb24gcGFyYW1ldGVyIGluIGEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InBhcmFtZGVmIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbml0aWFsaXplciIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idHlwZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVwbGFjZWFibGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmFtZXRlciIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZnVuY3BhcmFtcyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFyYW1kZWYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGFyYW1kZWYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFyYW1kZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNob2ljZSI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9wdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXEiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcmFtZGVmLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwYXJhbWRlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBhcmFtZGVmLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY3BhcmFtcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6UGFyYW1ldGVycyBmb3IgYSBmdW5jdGlvbiByZWZlcmVuY2VkIHRocm91Z2ggYSBmdW5jdGlvbiBwb2ludGVyIGluIGEgc3lub3BzaXMuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImZ1bmNwYXJhbXMiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jcGFyYW1zLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZ1bmNwYXJhbXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZnVuY3BhcmFtcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmNwYXJhbXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZ1bmNwYXJhbXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmdW5jcGFyYW1zLm1vZHVsZSAtLT4KICA8IS0tIExpbmVBbm5vdGF0aW9uIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIFJlcGxhY2VhYmxlIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIEZ1bmN0aW9uIChkZWZpbmVkIGluIHRoZSBJbmxpbmVzIHNlY3Rpb24sIGJlbG93KSAtLT4KICA8IS0tIFBhcmFtZXRlciAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPCEtLSBlbmQgb2YgZnVuY3N5bm9wc2lzLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gQ2xhc3NTeW5vcHNpcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNsYXNzc3lub3BzaXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBzeW50YXggc3VtbWFyeSBmb3IgYSBjbGFzcyBkZWZpbml0aW9uLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjbGFzc3N5bm9wc2lzIiBzdWJzdGl0dXRpb25Hcm91cD0ic3lub3AuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9vY2xhc3MiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ib29pbnRlcmZhY2UiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ib29leGNlcHRpb24iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbGFzc3N5bm9wc2lzaW5mbyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmaWVsZHN5bm9wc2lzIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1ldGhvZC5zeW5vcC5jbGFzcyIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjbGFzc3N5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNsYXNzc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2xhc3NzeW5vcHNpcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFuZ3VhZ2UiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIGRlZmF1bHQ9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2xhc3MiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaW50ZXJmYWNlIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjbGFzc3N5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjbGFzc3N5bm9wc2lzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2xhc3NzeW5vcHNpcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNsYXNzc3lub3BzaXNpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpJbmZvcm1hdGlvbiBzdXBwbGVtZW50aW5nIHRoZSBjb250ZW50cyBvZiBhIENsYXNzU3lub3BzaXMuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNsYXNzc3lub3BzaXNpbmZvIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGV4dG9iamVjdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZWFubm90YXRpb24iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNsYXNzc3lub3BzaXNpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNsYXNzc3lub3BzaXNpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNsYXNzc3lub3BzaXNpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZXNwZWNpZmljLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2xhc3NzeW5vcHNpc2luZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNsYXNzc3lub3BzaXNpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2xhc3NzeW5vcHNpc2luZm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvb2NsYXNzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGNsYXNzIGluIGFuIG9iamVjdC1vcmllbnRlZCBwcm9ncmFtbWluZyBsYW5ndWFnZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib29jbGFzcyIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtb2RpZmllciIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYWNrYWdlIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbGFzc25hbWUiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib29jbGFzcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvb2NsYXNzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9vY2xhc3MuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvb2NsYXNzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvb2NsYXNzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb29jbGFzcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9vaW50ZXJmYWNlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBpbnRlcmZhY2UgaW4gYW4gb2JqZWN0LW9yaWVudGVkIHByb2dyYW1taW5nIGxhbmd1YWdlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJvb2ludGVyZmFjZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtb2RpZmllciIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYWNrYWdlIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbnRlcmZhY2VuYW1lIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9vaW50ZXJmYWNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9vaW50ZXJmYWNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9vaW50ZXJmYWNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib29pbnRlcmZhY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9vaW50ZXJmYWNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb29pbnRlcmZhY2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvb2V4Y2VwdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gZXhjZXB0aW9uIGluIGFuIG9iamVjdC1vcmllbnRlZCBwcm9ncmFtbWluZyBsYW5ndWFnZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib29leGNlcHRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibW9kaWZpZXIiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icGFja2FnZSIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iZXhjZXB0aW9ubmFtZSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvb2V4Y2VwdGlvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvb2V4Y2VwdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvb2V4Y2VwdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9vZXhjZXB0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvb2V4Y2VwdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG9vZXhjZXB0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW9kaWZpZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOk1vZGlmaWVycyBpbiBhIHN5bm9wc2lzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJtb2RpZmllciI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9kaWZpZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbW9kaWZpZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW9kaWZpZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb2RpZmllci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbW9kaWZpZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtb2RpZmllci5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImludGVyZmFjZW5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBuYW1lIG9mIGFuIGludGVyZmFjZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW50ZXJmYWNlbmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImludGVyZmFjZW5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW50ZXJmYWNlbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbnRlcmZhY2VuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW50ZXJmYWNlbmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW50ZXJmYWNlbmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGludGVyZmFjZW5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJleGNlcHRpb25uYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSBvZiBhbiBleGNlcHRpb24uIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImV4Y2VwdGlvbm5hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImV4Y2VwdGlvbm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZXhjZXB0aW9ubmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJleGNlcHRpb25uYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXhjZXB0aW9ubmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZXhjZXB0aW9ubmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGV4Y2VwdGlvbm5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaWVsZHN5bm9wc2lzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSBvZiBhIGZpZWxkIGluIGEgY2xhc3MgZGVmaW5pdGlvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmllbGRzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9InN5bm9wLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibW9kaWZpZXIiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idHlwZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idmFybmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJpbml0aWFsaXplciIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaWVsZHN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZpZWxkc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmllbGRzeW5vcHNpcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFuZ3VhZ2UiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZpZWxkc3lub3BzaXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZpZWxkc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmaWVsZHN5bm9wc2lzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5pdGlhbGl6ZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBpbml0aWFsaXplciBmb3IgYSBGaWVsZFN5bm9wc2lzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJpbml0aWFsaXplciI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW5pdGlhbGl6ZXIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaW5pdGlhbGl6ZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5pdGlhbGl6ZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbml0aWFsaXplci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW5pdGlhbGl6ZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbml0aWFsaXplci5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnN0cnVjdG9yc3lub3BzaXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgc3ludGF4IHN1bW1hcnkgZm9yIGEgY29uc3RydWN0b3IuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvbnN0cnVjdG9yc3lub3BzaXMiIHN1YnN0aXR1dGlvbkdyb3VwPSJtZXRob2Quc3lub3AuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtb2RpZmllciIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJtZXRob2RuYW1lIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1ldGhvZHBhcmFtIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idm9pZCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZXhjZXB0aW9ubmFtZSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25zdHJ1Y3RvcnN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbnN0cnVjdG9yc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uc3RydWN0b3JzeW5vcHNpcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFuZ3VhZ2UiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnN0cnVjdG9yc3lub3BzaXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbnN0cnVjdG9yc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb25zdHJ1Y3RvcnN5bm9wc2lzLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGVzdHJ1Y3RvcnN5bm9wc2lzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHN5bnRheCBzdW1tYXJ5IGZvciBhIGRlc3RydWN0b3IuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImRlc3RydWN0b3JzeW5vcHNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9Im1ldGhvZC5zeW5vcC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im1ldGhvZG5hbWUiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWV0aG9kcGFyYW0iLz4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ2b2lkIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJleGNlcHRpb25uYW1lIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRlc3RydWN0b3JzeW5vcHNpcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBkZXN0cnVjdG9yc3lub3BzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGVzdHJ1Y3RvcnN5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5ndWFnZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGVzdHJ1Y3RvcnN5bm9wc2lzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBkZXN0cnVjdG9yc3lub3BzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBkZXN0cnVjdG9yc3lub3BzaXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZXRob2RzeW5vcHNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBzeW50YXggc3VtbWFyeSBmb3IgYSBtZXRob2QuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im1ldGhvZHN5bm9wc2lzIiBzdWJzdGl0dXRpb25Hcm91cD0ibWV0aG9kLnN5bm9wLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibW9kaWZpZXIiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InR5cGUiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idm9pZCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibWV0aG9kbmFtZSIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJtZXRob2RwYXJhbSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InZvaWQiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImV4Y2VwdGlvbm5hbWUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1ldGhvZHN5bm9wc2lzLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1ldGhvZHN5bm9wc2lzLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1ldGhvZHN5bm9wc2lzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5ndWFnZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWV0aG9kc3lub3BzaXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1ldGhvZHN5bm9wc2lzLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWV0aG9kc3lub3BzaXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZXRob2RuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSBvZiBhIG1ldGhvZC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibWV0aG9kbmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWV0aG9kbmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtZXRob2RuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1ldGhvZG5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtZXRob2RuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtZXRob2RuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWV0aG9kbmFtZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1ldGhvZHBhcmFtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpQYXJhbWV0ZXJzIHRvIGEgbWV0aG9kLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJtZXRob2RwYXJhbSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InR5cGUiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmFtZXRlciIvPgogICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iaW5pdGlhbGl6ZXIiLz4KICAgICAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZ1bmNwYXJhbXMiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1vZGlmaWVyIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1ldGhvZHBhcmFtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1ldGhvZHBhcmFtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1ldGhvZHBhcmFtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaG9pY2UiIGRlZmF1bHQ9InJlcSI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9wdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icGxhaW4iLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVwIiBkZWZhdWx0PSJub3JlcGVhdCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vcmVwZWF0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlcGVhdCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWV0aG9kcGFyYW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1ldGhvZHBhcmFtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWV0aG9kcGFyYW0ubW9kdWxlIC0tPgogIDwhLS0gZW5kIG9mIGNsYXNzc3lub3BzaXMuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRG9jdW1lbnQgaW5mb3JtYXRpb24gZW50aXRpZXMgYW5kIGVsZW1lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tCiAgICBUaGUgZG9jdW1lbnQgaW5mb3JtYXRpb24gZWxlbWVudHMgaW5jbHVkZSBzb21lIGVsZW1lbnRzIHRoYXQgYXJlCiAgICBjdXJyZW50bHkgdXNlZCBvbmx5IGluIHRoZSBkb2N1bWVudCBoaWVyYXJjaHkgbW9kdWxlLiBUaGV5IGFyZQogICAgZGVmaW5lZCBoZXJlIHNvIHRoYXQgdGhleSB3aWxsIGJlIGF2YWlsYWJsZSBmb3IgdXNlIGluIGN1c3RvbWl6ZWQKICAgIGRvY3VtZW50IGhpZXJhcmNoaWVzLgogIC0tPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEFja25vIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFja25vLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBY2tub3dsZWRnZW1lbnRzIGluIGFuIEFydGljbGUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImFja25vIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWNrbm8uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWNrbm8uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWNrbm8uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhY2tuby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWNrbm8uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhY2tuby5tb2R1bGUgLS0+CiAgPCEtLSBBZGRyZXNzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhZGRyZXNzLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHJlYWwtd29ybGQgYWRkcmVzcywgZ2VuZXJhbGx5IGEgcG9zdGFsIGFkZHJlc3MuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImFkZHJlc3MiIHN1YnN0aXR1dGlvbkdyb3VwPSJpbmZvcm1hbC5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icGVyc29ubmFtZSIvPgogICAgICAgIDx4czpncm91cCByZWY9InBlcnNvbi5pZGVudC5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN0cmVldCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icG9iIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwb3N0Y29kZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY2l0eSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3RhdGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvdW50cnkiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBob25lIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmYXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtYWlsIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvdGhlcmFkZHIiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFkZHJlc3MuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWRkcmVzcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhZGRyZXNzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZXNwZWNpZmljLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWRkcmVzcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWRkcmVzcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFkZHJlc3MubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdHJlZXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgc3RyZWV0IGFkZHJlc3MgaW4gYW4gYWRkcmVzcy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3RyZWV0Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RyZWV0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN0cmVldC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdHJlZXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdHJlZXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN0cmVldC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN0cmVldC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBvYi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBwb3N0IG9mZmljZSBib3ggaW4gYW4gYWRkcmVzcy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icG9iIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icG9iLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBvYi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwb2IuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwb2Iucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBvYi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBvYi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBvc3Rjb2RlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHBvc3RhbCBjb2RlIGluIGFuIGFkZHJlc3MuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InBvc3Rjb2RlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icG9zdGNvZGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcG9zdGNvZGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icG9zdGNvZGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwb3N0Y29kZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcG9zdGNvZGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwb3N0Y29kZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdHkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBuYW1lIG9mIGEgY2l0eSBpbiBhbiBhZGRyZXNzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjaXR5Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0eS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjaXR5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdHkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaXR5LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjaXR5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2l0eS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0YXRlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHN0YXRlIG9yIHByb3ZpbmNlIGluIGFuIGFkZHJlc3MuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InN0YXRlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RhdGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3RhdGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3RhdGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdGF0ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3RhdGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzdGF0ZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvdW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBuYW1lIG9mIGEgY291bnRyeS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY291bnRyeSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvdW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY291bnRyeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3VudHJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY291bnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY291bnRyeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvdW50cnkubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwaG9uZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSB0ZWxlcGhvbmUgbnVtYmVyLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJwaG9uZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBob25lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBob25lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBob25lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGhvbmUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBob25lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcGhvbmUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmYXgucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZmF4IG51bWJlci4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmF4Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmF4LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZheC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmYXguYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmYXgucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZheC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZheC5tb2R1bGUgLS0+CiAgPCEtLSBFbWFpbCAoZGVmaW5lZCBpbiB0aGUgSW5saW5lcyBzZWN0aW9uLCBiZWxvdykgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVyYWRkci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VW5jYXRlZ29yaXplZCBpbmZvcm1hdGlvbiBpbiBhZGRyZXNzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJvdGhlcmFkZHIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvdGhlcmFkZHIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3RoZXJhZGRyLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVyYWRkci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im90aGVyYWRkci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb3RoZXJhZGRyLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb3RoZXJhZGRyLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBhZGRyZXNzLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gQWZmaWxpYXRpb24gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWZmaWxpYXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBpbnN0aXR1dGlvbmFsIGFmZmlsaWF0aW9uIG9mIGFuIGluZGl2aWR1YWwuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImFmZmlsaWF0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJzaG9ydGFmZmlsIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJqb2J0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJvcmduYW1lIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJvcmdkaXYiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFkZHJlc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWZmaWxpYXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWZmaWxpYXRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWZmaWxpYXRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhZmZpbGlhdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWZmaWxpYXRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhZmZpbGlhdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNob3J0YWZmaWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgYnJpZWYgZGVzY3JpcHRpb24gb2YgYW4gYWZmaWxpYXRpb24uIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNob3J0YWZmaWwiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaG9ydGFmZmlsLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNob3J0YWZmaWwuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2hvcnRhZmZpbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNob3J0YWZmaWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNob3J0YWZmaWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzaG9ydGFmZmlsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iam9idGl0bGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSB0aXRsZSBvZiBhbiBpbmRpdmlkdWFsIGluIGFuIG9yZ2FuaXphdGlvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iam9idGl0bGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJqb2J0aXRsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBqb2J0aXRsZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJqb2J0aXRsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImpvYnRpdGxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBqb2J0aXRsZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGpvYnRpdGxlLm1vZHVsZSAtLT4KICA8IS0tIE9yZ05hbWUgKGRlZmluZWQgZWxzZXdoZXJlIGluIHRoaXMgc2VjdGlvbikgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9yZ2Rpdi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBkaXZpc2lvbiBvZiBhbiBvcmdhbml6YXRpb24uIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im9yZ2RpdiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9yZ2Rpdi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvcmdkaXYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3JnZGl2LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3JnZGl2LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvcmdkaXYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvcmdkaXYubW9kdWxlIC0tPgogIDwhLS0gQWRkcmVzcyAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8IS0tIGVuZCBvZiBhZmZpbGlhdGlvbi5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIEFydFBhZ2VOdW1zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFydHBhZ2VudW1zLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgcGFnZSBudW1iZXJzIG9mIGFuIGFydGljbGUgYXMgcHVibGlzaGVkLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcnRwYWdlbnVtcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFydHBhZ2VudW1zLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFydHBhZ2VudW1zLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFydHBhZ2VudW1zLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXJ0cGFnZW51bXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFydHBhZ2VudW1zLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXJ0cGFnZW51bXMubW9kdWxlIC0tPgogIDwhLS0gUGVyc29uTmFtZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGVyc29ubmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHBlcnNvbmFsIG5hbWUgb2YgYW4gaW5kaXZpZHVhbC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGVyc29ubmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJob25vcmlmaWMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZpcnN0bmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3VybmFtZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluZWFnZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ib3RoZXJuYW1lIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwZXJzb25uYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHBlcnNvbm5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGVyc29ubmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBlcnNvbm5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBlcnNvbm5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwZXJzb25uYW1lLm1vZHVsZSAtLT4KICA8IS0tIEF1dGhvciAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIG5hbWUgb2YgYW4gaW5kaXZpZHVhbCBhdXRob3IuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImF1dGhvciIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwZXJzb25uYW1lIi8+CiAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGVyc29uLmlkZW50Lm1peCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBlcnNvbmJsdXJiIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtYWlsIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFkZHJlc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXV0aG9yLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGF1dGhvci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdXRob3IuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdXRob3Iucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGF1dGhvci5hdHRsaXN0IC0tPgogIDwhLS0gKHNlZSAiUGVyc29uYWwgaWRlbnRpdHkgZWxlbWVudHMiIGZvciAlcGVyc29uLmlkZW50Lm1peDspIC0tPgogIDwhLS0gZW5kIG9mIGF1dGhvci5tb2R1bGUgLS0+CiAgPCEtLSBBdXRob3JHcm91cCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdXRob3Jncm91cC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6V3JhcHBlciBmb3IgYXV0aG9yIGluZm9ybWF0aW9uIHdoZW4gYSBkb2N1bWVudCBoYXMgbXVsdGlwbGUgYXV0aG9ycyBvciBjb2xsYWJhcmF0b3JzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJhdXRob3Jncm91cCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlZGl0b3IiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbGxhYiIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29ycGF1dGhvciIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29ycGNyZWRpdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ib3RoZXJjcmVkaXQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF1dGhvcmdyb3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGF1dGhvcmdyb3VwLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImF1dGhvcmdyb3VwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXV0aG9yZ3JvdXAucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGF1dGhvcmdyb3VwLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYXV0aG9yZ3JvdXAubW9kdWxlIC0tPgogIDwhLS0gQXV0aG9yIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDwhLS0gRWRpdG9yIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xsYWIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOklkZW50aWZpZXMgYSBjb2xsYWJvcmF0b3IuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvbGxhYiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbGxhYm5hbWUiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFmZmlsaWF0aW9uIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbGxhYi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb2xsYWIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29sbGFiLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sbGFiLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb2xsYWIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb2xsYWIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xsYWJuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSBvZiBhIGNvbGxhYm9yYXRvci4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29sbGFibmFtZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbGxhYm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29sbGFibmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xsYWJuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29sbGFibmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29sbGFibmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbGxhYm5hbWUubW9kdWxlIC0tPgogIDwhLS0gQWZmaWxpYXRpb24gKGRlZmluZWQgZWxzZXdoZXJlIGluIHRoaXMgc2VjdGlvbikgLS0+CiAgPCEtLSBlbmQgb2YgY29sbGFiLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gQ29ycEF1dGhvciAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8IS0tIE90aGVyQ3JlZGl0IChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDwhLS0gZW5kIG9mIGF1dGhvcmdyb3VwLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gQXV0aG9ySW5pdGlhbHMgLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXV0aG9yaW5pdGlhbHMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBpbml0aWFscyBvciBvdGhlciBzaG9ydCBpZGVudGlmaWVyIGZvciBhbiBhdXRob3IuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImF1dGhvcmluaXRpYWxzIiBzdWJzdGl0dXRpb25Hcm91cD0iZG9jaW5mby5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYXV0aG9yaW5pdGlhbHMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYXV0aG9yaW5pdGlhbHMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYXV0aG9yaW5pdGlhbHMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdXRob3Jpbml0aWFscy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYXV0aG9yaW5pdGlhbHMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhdXRob3Jpbml0aWFscy5tb2R1bGUgLS0+CiAgPCEtLSBDb25mR3JvdXAgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mZ3JvdXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgd3JhcHBlciBmb3IgZG9jdW1lbnQgbWV0YS1pbmZvcm1hdGlvbiBhYm91dCBhIGNvbmZlcmVuY2UuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvbmZncm91cCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb25mZGF0ZXMiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbmZ0aXRsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29uZm51bSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWRkcmVzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY29uZnNwb25zb3IiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZncm91cC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb25mZ3JvdXAuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uZmdyb3VwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZmdyb3VwLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb25mZ3JvdXAuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb25mZ3JvdXAubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mZGF0ZXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBkYXRlcyBvZiBhIGNvbmZlcmVuY2UgZm9yIHdoaWNoIGEgZG9jdW1lbnQgd2FzIHdyaXR0ZW4uIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvbmZkYXRlcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZkYXRlcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb25mZGF0ZXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uZmRhdGVzLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZmRhdGVzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb25mZGF0ZXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb25mZGF0ZXMubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mdGl0bGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSB0aXRsZSBvZiBhIGNvbmZlcmVuY2UgZm9yIHdoaWNoIGEgZG9jdW1lbnQgd2FzIHdyaXR0ZW4uIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvbmZ0aXRsZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZ0aXRsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb25mdGl0bGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uZnRpdGxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZnRpdGxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb25mdGl0bGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb25mdGl0bGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mbnVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBpZGVudGlmaWVyLCBmcmVxdWVudGx5IG51bWVyaWNhbCwgYXNzb2NpYXRlZCB3aXRoIGEgY29uZmVyZW5jZSBmb3Igd2hpY2ggYSBkb2N1bWVudCB3YXMgd3JpdHRlbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uZm51bSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZudW0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29uZm51bS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mbnVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29uZm51bS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29uZm51bS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbmZudW0ubW9kdWxlIC0tPgogIDwhLS0gQWRkcmVzcyAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29uZnNwb25zb3Iucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBzcG9uc29yIG9mIGEgY29uZmVyZW5jZSBmb3Igd2hpY2ggYSBkb2N1bWVudCB3YXMgd3JpdHRlbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uZnNwb25zb3IiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25mc3BvbnNvci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb25mc3BvbnNvci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb25mc3BvbnNvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbmZzcG9uc29yLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb25mc3BvbnNvci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvbmZzcG9uc29yLm1vZHVsZSAtLT4KICA8IS0tIGVuZCBvZiBjb25mZ3JvdXAuY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSBDb250cmFjdE51bSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb250cmFjdG51bS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIGNvbnRyYWN0IG51bWJlciBvZiBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb250cmFjdG51bSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnRyYWN0bnVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbnRyYWN0bnVtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnRyYWN0bnVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29udHJhY3RudW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbnRyYWN0bnVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29udHJhY3RudW0ubW9kdWxlIC0tPgogIDwhLS0gQ29udHJhY3RTcG9uc29yIC4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29udHJhY3RzcG9uc29yLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgc3BvbnNvciBvZiBhIGNvbnRyYWN0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb250cmFjdHNwb25zb3IiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb250cmFjdHNwb25zb3IuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29udHJhY3RzcG9uc29yLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnRyYWN0c3BvbnNvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnRyYWN0c3BvbnNvci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29udHJhY3RzcG9uc29yLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29udHJhY3RzcG9uc29yLm1vZHVsZSAtLT4KICA8IS0tIENvcHlyaWdodCAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcHlyaWdodC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6Q29weXJpZ2h0IGluZm9ybWF0aW9uIGFib3V0IGEgZG9jdW1lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvcHlyaWdodCI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ5ZWFyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJob2xkZXIiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29weXJpZ2h0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvcHlyaWdodC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3B5cmlnaHQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3B5cmlnaHQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvcHlyaWdodC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGNvcHlyaWdodC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InllYXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSB5ZWFyIG9mIHB1YmxpY2F0aW9uIG9mIGEgZG9jdW1lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InllYXIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ5ZWFyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHllYXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ieWVhci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InllYXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHllYXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB5ZWFyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaG9sZGVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSBvZiB0aGUgaW5kaXZpZHVhbCBvciBvcmdhbml6YXRpb24gdGhhdCBob2xkcyBhIGNvcHlyaWdodC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaG9sZGVyIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaG9sZGVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGhvbGRlci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJob2xkZXIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJob2xkZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGhvbGRlci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGhvbGRlci5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgY29weXJpZ2h0LmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gQ29ycEF1dGhvciAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29ycGF1dGhvci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBjb3Jwb3JhdGUgYXV0aG9yLCBhcyBvcHBvc2VkIHRvIGFuIGluZGl2aWR1YWwuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvcnBhdXRob3IiIHN1YnN0aXR1dGlvbkdyb3VwPSJkb2NpbmZvLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3JwYXV0aG9yLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvcnBhdXRob3IuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29ycGF1dGhvci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcnBhdXRob3Iucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvcnBhdXRob3IuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb3JwYXV0aG9yLm1vZHVsZSAtLT4KICA8IS0tIENvcnBDcmVkaXQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29ycGNyZWRpdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBjb3Jwb3JhdGlvbiBvciBvcmdhbml6YXRpb24gY3JlZGl0ZWQgaW4gYSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29ycGNyZWRpdCIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcnBjcmVkaXQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY29ycGNyZWRpdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3JwY3JlZGl0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImdyYXBoaWNkZXNpZ25lciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcm9kdWN0aW9uZWRpdG9yIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvcHllZGl0b3IiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idGVjaG5pY2FsZWRpdG9yIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRyYW5zbGF0b3IiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvcnBjcmVkaXQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvcnBjcmVkaXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb3JwY3JlZGl0Lm1vZHVsZSAtLT4KICA8IS0tIENvcnBOYW1lIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBkb2M6VGhlIG5hbWUgb2YgYSBjb3Jwb3JhdGlvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29ycG5hbWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3JwbmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb3JwbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3JwbmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvcnBuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29ycG5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvcnBuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29ycG5hbWUubW9kdWxlIC0tPgogIDwhLS0gRGF0ZSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGF0ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIGRhdGUgb2YgcHVibGljYXRpb24gb3IgcmV2aXNpb24gb2YgYSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZGF0ZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImRhdGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZGF0ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJkYXRlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGF0ZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZGF0ZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGRhdGUubW9kdWxlIC0tPgogIDwhLS0gRWRpdGlvbiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZWRpdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIG5hbWUgb3IgbnVtYmVyIG9mIGFuIGVkaXRpb24gb2YgYSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZWRpdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVkaXRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZWRpdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlZGl0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZWRpdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZWRpdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVkaXRpb24ubW9kdWxlIC0tPgogIDwhLS0gRWRpdG9yIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZWRpdG9yLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSBvZiB0aGUgZWRpdG9yIG9mIGEgZG9jdW1lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImVkaXRvciI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwZXJzb25uYW1lIi8+CiAgICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGVyc29uLmlkZW50Lm1peCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBlcnNvbmJsdXJiIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtYWlsIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFkZHJlc3MiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZWRpdG9yLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGVkaXRvci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlZGl0b3IuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlZGl0b3Iucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGVkaXRvci5hdHRsaXN0IC0tPgogIDwhLS0gKHNlZSAiUGVyc29uYWwgaWRlbnRpdHkgZWxlbWVudHMiIGZvciAlcGVyc29uLmlkZW50Lm1peDspIC0tPgogIDwhLS0gZW5kIG9mIGVkaXRvci5tb2R1bGUgLS0+CiAgPCEtLSBJU0JOIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpc2JuLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgSW50ZXJuYXRpb25hbCBTdGFuZGFyZCBCb29rIE51bWJlciBvZiBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJpc2JuIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXNibi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpc2JuLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlzYm4uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpc2JuLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpc2JuLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaXNibi5tb2R1bGUgLS0+CiAgPCEtLSBJU1NOIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpc3NuLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgSW50ZXJuYXRpb25hbCBTdGFuZGFyZCBTZXJpYWwgTnVtYmVyIG9mIGEgcGVyaW9kaWNhbC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaXNzbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imlzc24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaXNzbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpc3NuLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaXNzbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaXNzbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGlzc24ubW9kdWxlIC0tPgogIDwhLS0gQmlibGlvSWQgLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpby5jbGFzcy5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InVyaSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkb2kiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXNibiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpc3JuIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imlzc24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGlicmFyeW9mY29uZ3Jlc3MiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icHVibnVtYmVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVyY2xhc3MiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9pZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gaWRlbnRpZmllciBmb3IgYSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvaWQiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9pZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9pZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9pZC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpby5jbGFzcy5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb2lkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9pZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb2lkLm1vZHVsZSAtLT4KICA8IS0tIENpdGVCaWJsaW9JZCAuLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2l0ZWJpYmxpb2lkLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGNpdGF0aW9uIG9mIGEgYmlibGlvZ3JhcGhpYyBpZGVudGlmaWVyLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjaXRlYmlibGlvaWQiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdGViaWJsaW9pZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjaXRlYmlibGlvaWQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2l0ZWJpYmxpb2lkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvLmNsYXNzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0ZWJpYmxpb2lkLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjaXRlYmlibGlvaWQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjaXRlYmlibGlvaWQubW9kdWxlIC0tPgogIDwhLS0gQmlibGlvU291cmNlIC4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9zb3VyY2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBzb3VyY2Ugb2YgYSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvc291cmNlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvc291cmNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb3NvdXJjZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9zb3VyY2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW8uY2xhc3MuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9zb3VyY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb3NvdXJjZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb3NvdXJjZS5tb2R1bGUgLS0+CiAgPCEtLSBCaWJsaW9SZWxhdGlvbiAuLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvcmVsYXRpb24udHlwZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXN2ZXJzaW9ub2YiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaGFzdmVyc2lvbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpc3JlcGxhY2VkYnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVwbGFjZXMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXNyZXF1aXJlZGJ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlcXVpcmVzIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlzcGFydG9mIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imhhc3BhcnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXNyZWZlcmVuY2VkYnkiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmVmZXJlbmNlcyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpc2Zvcm1hdG9mIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imhhc2Zvcm1hdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvdGhlcnR5cGUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3RoZXJ0eXBlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmlibGlvcmVsYXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSByZWxhdGlvbnNoaXAgb2YgYSBkb2N1bWVudCB0byBhbm90aGVyLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJiaWJsaW9yZWxhdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb3JlbGF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb3JlbGF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJpYmxpb3JlbGF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvLmNsYXNzLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvcmVsYXRpb24udHlwZS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJpYmxpb3JlbGF0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBiaWJsaW9yZWxhdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb3JlbGF0aW9uLm1vZHVsZSAtLT4KICA8IS0tIEJpYmxpb0NvdmVyYWdlIC4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9jb3ZlcmFnZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHNwYXRpYWwgb3IgdGVtcG9yYWwgY292ZXJhZ2Ugb2YgYSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvY292ZXJhZ2UiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9jb3ZlcmFnZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiaWJsaW9jb3ZlcmFnZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9jb3ZlcmFnZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3BhdGlhbCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRjbWlwb2ludCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpc28zMTY2Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRjbWlib3giLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idGduIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyc3BhdGlhbCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcnNwYXRpYWwiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGVtcG9yYWwiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkY21pcGVyaW9kIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InczYy1kdGYiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXJ0ZW1wb3JhbCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdGhlcnRlbXBvcmFsIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9jb3ZlcmFnZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYmlibGlvY292ZXJhZ2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBiaWJsaW9jb3ZlcmFnZS5tb2R1bGUgLS0+CiAgPCEtLSBJbnZQYXJ0TnVtYmVyIC4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbnZwYXJ0bnVtYmVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBpbnZlbnRvcnkgcGFydCBudW1iZXIuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImludnBhcnRudW1iZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbnZwYXJ0bnVtYmVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGludnBhcnRudW1iZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW52cGFydG51bWJlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImludnBhcnRudW1iZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGludnBhcnRudW1iZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBpbnZwYXJ0bnVtYmVyLm1vZHVsZSAtLT4KICA8IS0tIElzc3VlTnVtIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imlzc3VlbnVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbnVtYmVyIG9mIGFuIGlzc3VlIG9mIGEgam91cm5hbC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaXNzdWVudW0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpc3N1ZW51bS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBpc3N1ZW51bS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpc3N1ZW51bS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imlzc3VlbnVtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBpc3N1ZW51bS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGlzc3VlbnVtLm1vZHVsZSAtLT4KICA8IS0tIExlZ2FsTm90aWNlIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxlZ2Fsbm90aWNlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHN0YXRlbWVudCBvZiBsZWdhbCBvYmxpZ2F0aW9ucyBvciByZXF1aXJlbWVudHMuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImxlZ2Fsbm90aWNlIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJibG9ja2luZm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0idGl0bGUiLz4KICAgICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibGVnYWxub3RpY2UubWl4Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxlZ2Fsbm90aWNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxlZ2Fsbm90aWNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxlZ2Fsbm90aWNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGVnYWxub3RpY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxlZ2Fsbm90aWNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGVnYWxub3RpY2UubW9kdWxlIC0tPgogIDwhLS0gTW9kZVNwZWMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW9kZXNwZWMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkFwcGxpY2F0aW9uLXNwZWNpZmljIGluZm9ybWF0aW9uIG5lY2Vzc2FyeSBmb3IgdGhlIGNvbXBsZXRpb24gb2YgYW4gT0xpbmsuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im1vZGVzcGVjIiBzdWJzdGl0dXRpb25Hcm91cD0iZG9jaW5mby5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9kZXNwZWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbW9kZXNwZWMuZWxlbWVudCAtLT4KICA8IS0tCiAgICBBcHBsaWNhdGlvbjogVHlwZSBvZiBhY3Rpb24gcmVxdWlyZWQgZm9yIGNvbXBsZXRpb24KICAgIG9mIHRoZSBsaW5rcyB0byB3aGljaCB0aGUgTW9kZVNwZWMgaXMgcmVsZXZhbnQgKGUuZy4sCiAgICByZXRyaWV2YWwgcXVlcnkpCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1vZGVzcGVjLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcHBsaWNhdGlvbiIgdHlwZT0ibm90YXRpb24uY2xhc3MiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vZGVzcGVjLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBtb2Rlc3BlYy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1vZGVzcGVjLm1vZHVsZSAtLT4KICA8IS0tIE9yZ05hbWUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9yZ25hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBuYW1lIG9mIGFuIG9yZ2FuaXphdGlvbiBvdGhlciB0aGFuIGEgY29ycG9yYXRpb24uIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im9yZ25hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9yZ25hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3JnbmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcmduYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvcnBvcmF0aW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vbnByb2ZpdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb25zb3J0aXVtIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImluZm9ybWFsIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVyY2xhc3MiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9yZ25hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9yZ25hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvcmduYW1lLm1vZHVsZSAtLT4KICA8IS0tIE90aGVyQ3JlZGl0IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVyY3JlZGl0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHBlcnNvbiBvciBlbnRpdHksIG90aGVyIHRoYW4gYW4gYXV0aG9yIG9yIGVkaXRvciwgY3JlZGl0ZWQgaW4gYSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib3RoZXJjcmVkaXQiIHN1YnN0aXR1dGlvbkdyb3VwPSJkb2NpbmZvLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icGVyc29ubmFtZSIvPgogICAgICAgICAgPHhzOmdyb3VwIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBlcnNvbi5pZGVudC5taXgiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwZXJzb25ibHVyYiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbWFpbCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZGRyZXNzIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im90aGVyY3JlZGl0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG90aGVyY3JlZGl0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVyY3JlZGl0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImdyYXBoaWNkZXNpZ25lciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcm9kdWN0aW9uZWRpdG9yIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvcHllZGl0b3IiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idGVjaG5pY2FsZWRpdG9yIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRyYW5zbGF0b3IiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3RoZXIiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im90aGVyY3JlZGl0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvdGhlcmNyZWRpdC5hdHRsaXN0IC0tPgogIDwhLS0gKHNlZSAiUGVyc29uYWwgaWRlbnRpdHkgZWxlbWVudHMiIGZvciAlcGVyc29uLmlkZW50Lm1peDspIC0tPgogIDwhLS0gZW5kIG9mIG90aGVyY3JlZGl0Lm1vZHVsZSAtLT4KICA8IS0tIFBhZ2VOdW1zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhZ2VudW1zLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbnVtYmVycyBvZiB0aGUgcGFnZXMgaW4gYSBib29rLCBmb3IgdXNlIGluIGEgYmlibGlvZ3JhcGhpYyBlbnRyeS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icGFnZW51bXMiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtcy5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwYWdlbnVtcy5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYWdlbnVtcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW1zLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwYWdlbnVtcy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBhZ2VudW1zLm1vZHVsZSAtLT4KICA8IS0tIFBlcnNvbmFsIGlkZW50aXR5IGVsZW1lbnRzIC4uLi4uLi4gLS0+CiAgPCEtLQogICAgVGhlc2UgZWxlbWVudHMgYXJlIHVzZWQgb25seSB3aXRoaW4gQXV0aG9yLCBFZGl0b3IsIGFuZAogICAgT3RoZXJDcmVkaXQuCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnRyaWIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgc3VtbWFyeSBvZiB0aGUgY29udHJpYnV0aW9ucyBtYWRlIHRvIGEgZG9jdW1lbnQgYnkgYSBjcmVkaXRlZCBzb3VyY2UuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvbnRyaWIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb250cmliLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbnRyaWIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29udHJpYi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnRyaWIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbnRyaWIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb250cmliLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmlyc3RuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgZmlyc3QgbmFtZSBvZiBhIHBlcnNvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmlyc3RuYW1lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmlyc3RuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZpcnN0bmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaXJzdG5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaXJzdG5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZpcnN0bmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGZpcnN0bmFtZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imhvbm9yaWZpYy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHRpdGxlIG9mIGEgcGVyc29uLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJob25vcmlmaWMiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJob25vcmlmaWMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgaG9ub3JpZmljLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imhvbm9yaWZpYy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imhvbm9yaWZpYy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaG9ub3JpZmljLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaG9ub3JpZmljLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGluZWFnZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHBvcnRpb24gb2YgYSBwZXJzb24ncyBuYW1lIGluZGljYXRpbmcgYSByZWxhdGlvbnNoaXAgdG8gYW5jZXN0b3JzLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaW5lYWdlIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZWFnZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBsaW5lYWdlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmVhZ2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5lYWdlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBsaW5lYWdlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGluZWFnZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVybmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBjb21wb25lbnQgb2YgYSBwZXJzb25zIG5hbWUgdGhhdCBpcyBub3QgYSBmaXJzdCBuYW1lLCBzdXJuYW1lLCBvciBsaW5lYWdlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJvdGhlcm5hbWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvdGhlcm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygb3RoZXJuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im90aGVybmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im90aGVybmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb3RoZXJuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygb3RoZXJuYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3VybmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBmYW1pbHkgbmFtZTsgaW4gd2VzdGVybiBjdWx0dXJlcyB0aGUgbGFzdCBuYW1lLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdXJuYW1lIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3VybmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdXJuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1cm5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdXJuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdXJuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3VybmFtZS5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgcGVyc29uLmlkZW50Lm1vZHVsZSAtLT4KICA8IS0tIFByaW50SGlzdG9yeSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByaW50aGlzdG9yeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHByaW50aW5nIGhpc3Rvcnkgb2YgYSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJpbnRoaXN0b3J5Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2xhc3MiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJpbnRoaXN0b3J5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByaW50aGlzdG9yeS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcmludGhpc3RvcnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmludGhpc3Rvcnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByaW50aGlzdG9yeS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByaW50aGlzdG9yeS5tb2R1bGUgLS0+CiAgPCEtLSBQcm9kdWN0TmFtZSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9kdWN0bmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIGZvcm1hbCBuYW1lIG9mIGEgcHJvZHVjdC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJvZHVjdG5hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJkb2NpbmZvLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9kdWN0bmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwcm9kdWN0bmFtZS5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IE1vcmUgcHJlY2lzZWx5IGlkZW50aWZpZXMgdGhlIGl0ZW0gdGhlIGVsZW1lbnQgbmFtZXMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb2R1Y3RuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgZGVmYXVsdD0idHJhZGUiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZXJ2aWNlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRyYWRlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlZ2lzdGVyZWQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29weXJpZ2h0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9kdWN0bmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJvZHVjdG5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcm9kdWN0bmFtZS5tb2R1bGUgLS0+CiAgPCEtLSBQcm9kdWN0TnVtYmVyIC4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwcm9kdWN0bnVtYmVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIG51bWJlciBhc3NpZ25lZCB0byBhIHByb2R1Y3QuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InByb2R1Y3RudW1iZXIiIHN1YnN0aXR1dGlvbkdyb3VwPSJkb2NpbmZvLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9kdWN0bnVtYmVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb2R1Y3RudW1iZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvZHVjdG51bWJlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb2R1Y3RudW1iZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByb2R1Y3RudW1iZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcm9kdWN0bnVtYmVyLm1vZHVsZSAtLT4KICA8IS0tIFB1YkRhdGUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InB1YmRhdGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBkYXRlIG9mIHB1YmxpY2F0aW9uIG9mIGEgZG9jdW1lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InB1YmRhdGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwdWJkYXRlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHB1YmRhdGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHViZGF0ZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1YmRhdGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHB1YmRhdGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwdWJkYXRlLm1vZHVsZSAtLT4KICA8IS0tIFB1Ymxpc2hlciAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InB1Ymxpc2hlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHB1Ymxpc2hlciBvZiBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJwdWJsaXNoZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwdWJsaXNoZXJuYW1lIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJhZGRyZXNzIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1Ymxpc2hlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHVibGlzaGVyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHVibGlzaGVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXIubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwdWJsaXNoZXJuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSBvZiB0aGUgcHVibGlzaGVyIG9mIGEgZG9jdW1lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InB1Ymxpc2hlcm5hbWUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwdWJsaXNoZXJuYW1lLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHB1Ymxpc2hlcm5hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHVibGlzaGVybmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1Ymxpc2hlcm5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHB1Ymxpc2hlcm5hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwdWJsaXNoZXJuYW1lLm1vZHVsZSAtLT4KICA8IS0tIEFkZHJlc3MgKGRlZmluZWQgZWxzZXdoZXJlIGluIHRoaXMgc2VjdGlvbikgLS0+CiAgPCEtLSBlbmQgb2YgcHVibGlzaGVyLmNvbnRlbnQubW9kdWxlIC0tPgogIDwhLS0gUHVic051bWJlciAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHVic251bWJlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBudW1iZXIgYXNzaWduZWQgdG8gYSBwdWJsaWNhdGlvbiBvdGhlciB0aGFuIGFuIElTQk4gb3IgSVNTTiBvciBpbnZlbnRvcnkgcGFydCBudW1iZXIuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InB1YnNudW1iZXIiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwdWJzbnVtYmVyLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHB1YnNudW1iZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHVic251bWJlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InB1YnNudW1iZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHB1YnNudW1iZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwdWJzbnVtYmVyLm1vZHVsZSAtLT4KICA8IS0tIFJlbGVhc2VJbmZvIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlbGVhc2VpbmZvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpJbmZvcm1hdGlvbiBhYm91dCBhIHBhcnRpY3VsYXIgcmVsZWFzZSBvZiBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZWxlYXNlaW5mbyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlbGVhc2VpbmZvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlbGVhc2VpbmZvLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlbGVhc2VpbmZvLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVsZWFzZWluZm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlbGVhc2VpbmZvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVsZWFzZWluZm8ubW9kdWxlIC0tPgogIDwhLS0gUmV2SGlzdG9yeSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aGlzdG9yeS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBoaXN0b3J5IG9mIHRoZSByZXZpc2lvbnMgdG8gYSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icmV2aGlzdG9yeSIgc3Vic3RpdHV0aW9uR3JvdXA9ImRvY2luZm8uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZXZpc2lvbiIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZoaXN0b3J5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJldmhpc3RvcnkuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aGlzdG9yeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldmhpc3Rvcnkucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJldmhpc3RvcnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZXZoaXN0b3J5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aXNpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkFuIGVudHJ5IGRlc2NyaWJpbmcgYSBzaW5nbGUgcmV2aXNpb24gaW4gdGhlIGhpc3Rvcnkgb2YgdGhlIHJldmlzaW9ucyB0byBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZXZpc2lvbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0icmV2bnVtYmVyIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJkYXRlIi8+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iYXV0aG9yIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImF1dGhvcmluaXRpYWxzIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXZyZW1hcmsiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0icmV2ZGVzY3JpcHRpb24iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2aXNpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmV2aXNpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2aXNpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZpc2lvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmV2aXNpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZXZpc2lvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldm51bWJlci5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBkb2N1bWVudCByZXZpc2lvbiBudW1iZXIuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InJldm51bWJlciI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJkb2NpbmZvLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldm51bWJlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZXZudW1iZXIuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2bnVtYmVyLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2bnVtYmVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZXZudW1iZXIuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZXZudW1iZXIubW9kdWxlIC0tPgogIDwhLS0gRGF0ZSAoZGVmaW5lZCBlbHNld2hlcmUgaW4gdGhpcyBzZWN0aW9uKSAtLT4KICA8IS0tIEF1dGhvckluaXRpYWxzIChkZWZpbmVkIGVsc2V3aGVyZSBpbiB0aGlzIHNlY3Rpb24pIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXZyZW1hcmsucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZGVzY3JpcHRpb24gb2YgYSByZXZpc2lvbiB0byBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZXZyZW1hcmsiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZyZW1hcmsuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmV2cmVtYXJrLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJldnJlbWFyay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldnJlbWFyay5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmV2cmVtYXJrLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmV2cmVtYXJrLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2ZGVzY3JpcHRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgZXh0ZW5kZWQgZGVzY3JpcHRpb24gb2YgYSByZXZpc2lvbiB0byBhIGRvY3VtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJyZXZkZXNjcmlwdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpncm91cCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyZXZkZXNjcmlwdGlvbi5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmV2ZGVzY3JpcHRpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcmV2ZGVzY3JpcHRpb24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmV2ZGVzY3JpcHRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZkZXNjcmlwdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcmV2ZGVzY3JpcHRpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZXZkZXNjcmlwdGlvbi5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgcmV2aGlzdG9yeS5jb250ZW50Lm1vZHVsZSAtLT4KICA8IS0tIFNlcmllc1ZvbE51bXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlcmllc3ZvbG51bXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOk51bWJlcnMgb2YgdGhlIHZvbHVtZXMgaW4gYSBzZXJpZXMgb2YgYm9va3MuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlcmllc3ZvbG51bXMiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZXJpZXN2b2xudW1zLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlcmllc3ZvbG51bXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VyaWVzdm9sbnVtcy5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlcmllc3ZvbG51bXMucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlcmllc3ZvbG51bXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzZXJpZXN2b2xudW1zLm1vZHVsZSAtLT4KICA8IS0tIFZvbHVtZU51bSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZvbHVtZW51bS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHZvbHVtZSBudW1iZXIgb2YgYSBkb2N1bWVudCBpbiBhIHNldCAoYXMgb2YgYm9va3MgaW4gYSBzZXQgb3IgYXJ0aWNsZXMgaW4gYSBqb3VybmFsKS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idm9sdW1lbnVtIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImRvY2luZm8uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idm9sdW1lbnVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHZvbHVtZW51bS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2b2x1bWVudW0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ2b2x1bWVudW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHZvbHVtZW51bS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZvbHVtZW51bS5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gZW5kIG9mIGRvY2luZm8uY29udGVudC5tb2R1bGUgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gSW5saW5lLCBsaW5rLCBhbmQgdWJpcXVpdG91cyBlbGVtZW50cyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIFRlY2huaWNhbCBhbmQgY29tcHV0ZXIgdGVybXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFjY2VsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGdyYXBoaWNhbCB1c2VyIGludGVyZmFjZSAoR1VJKSBrZXlib2FyZCBzaG9ydGN1dC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYWNjZWwiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFjY2VsLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFjY2VsLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFjY2VsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWNjZWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGFjY2VsLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYWNjZWwubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhY3Rpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgcmVzcG9uc2UgdG8gYSB1c2VyIGV2ZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJhY3Rpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhY3Rpb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWN0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFjdGlvbi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWN0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhY3Rpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBhY3Rpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhcHBsaWNhdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIG5hbWUgb2YgYSBzb2Z0d2FyZSBwcm9ncmFtLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJhcHBsaWNhdGlvbiIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFwcGxpY2F0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGFwcGxpY2F0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFwcGxpY2F0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImhhcmR3YXJlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNvZnR3YXJlIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFwcGxpY2F0aW9uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhcHBsaWNhdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGFwcGxpY2F0aW9uLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2xhc3NuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSBvZiBhIGNsYXNzLCBpbiB0aGUgb2JqZWN0LW9yaWVudGVkIHByb2dyYW1taW5nIHNlbnNlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjbGFzc25hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNsYXNzbmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjbGFzc25hbWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2xhc3NuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2xhc3NuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjbGFzc25hbWUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjbGFzc25hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYWNrYWdlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHBhY2thZ2UuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InBhY2thZ2UiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhY2thZ2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcGFja2FnZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwYWNrYWdlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGFja2FnZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcGFja2FnZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBhY2thZ2UubW9kdWxlIC0tPgogIDwhLS0KICAgIENPIGlzIGEgY2FsbG91dCBhcmVhIG9mIHRoZSBMaW5lQ29sdW1uIHVuaXQgdHlwZSAoYSBzaW5nbGUgY2hhcmFjdGVyCiAgICBwb3NpdGlvbik7IHRoZSBwb3NpdGlvbiBpcyBkaXJlY3RseSBpbmRpY2F0ZWQgYnkgdGhlIGxvY2F0aW9uIG9mIENPLgogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIGxvY2F0aW9uIG9mIGEgY2FsbG91dCBlbWJlZGRlZCBpbiB0ZXh0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjbyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvLmVsZW1lbnQgLS0+CiAgPCEtLSBidWcgbnVtYmVyL3N5bWJvbCBvdmVycmlkZSBvciBpbml0aWFsaXphdGlvbiAtLT4KICA8IS0tIHRvIGFueSByZWxhdGVkIGluZm9ybWF0aW9uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxhYmVsLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHMuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpZHJlcS5jb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY28uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjby5tb2R1bGUgLS0+CiAgPCEtLSBDT1JFRiBpcyBhIHJlZmVyZW5jZSB0byBhIENPIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb3JlZi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBjcm9zcyByZWZlcmVuY2UgdG8gYSBjby4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29yZWYiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3JlZi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb3JlZi5lbGVtZW50IC0tPgogIDwhLS0gYnVnIG51bWJlci9zeW1ib2wgb3ZlcnJpZGUgb3IgaW5pdGlhbGl6YXRpb24gLS0+CiAgPCEtLSB0byBhbnkgcmVsYXRlZCBpbmZvcm1hdGlvbiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29yZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRyZXEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb3JlZi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29yZWYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb3JlZi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbW1hbmQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBuYW1lIG9mIGFuIGV4ZWN1dGFibGUgcHJvZ3JhbSBvciBvdGhlciBzb2Z0d2FyZSBjb21tYW5kLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb21tYW5kIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbWFuZC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb21tYW5kLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbW1hbmQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1hbmQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNvbW1hbmQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb21tYW5kLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29tcHV0ZXJvdXRwdXQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkRhdGEsIGdlbmVyYWxseSB0ZXh0LCBkaXNwbGF5ZWQgb3IgcHJlc2VudGVkIGJ5IGEgY29tcHV0ZXIuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvbXB1dGVyb3V0cHV0IiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY28iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbXB1dGVyb3V0cHV0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbXB1dGVyb3V0cHV0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbXB1dGVyb3V0cHV0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21wdXRlcm91dHB1dC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29tcHV0ZXJvdXRwdXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb21wdXRlcm91dHB1dC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImRhdGFiYXNlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSBvZiBhIGRhdGFiYXNlLCBvciBwYXJ0IG9mIGEgZGF0YWJhc2UuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImRhdGFiYXNlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGF0YWJhc2UuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZGF0YWJhc2UuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBUeXBlIG9mIGRhdGFiYXNlIHRoZSBlbGVtZW50IG5hbWVzOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJkYXRhYmFzZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJuYW1lIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRhYmxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImZpZWxkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImtleTEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ia2V5MiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZWNvcmQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaW5kZXgiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0idmlldyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcmltYXJ5a2V5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY29uZGFyeWtleSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJmb3JlaWdua2V5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFsdGtleSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcm9jZWR1cmUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGF0YXR5cGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29uc3RyYWludCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJydWxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InVzZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZ3JvdXAiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZGF0YWJhc2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGRhdGFiYXNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZGF0YWJhc2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbWFpbC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gZW1haWwgYWRkcmVzcy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZW1haWwiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZG9jaW5mby5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlbWFpbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlbWFpbC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbWFpbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVtYWlsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlbWFpbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVtYWlsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZW52YXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgc29mdHdhcmUgZW52aXJvbm1lbnQgdmFyaWFibGUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImVudmFyIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlbnZhci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlbnZhci5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbnZhci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVudmFyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBlbnZhci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVudmFyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXJyb3Jjb2RlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBlcnJvciBjb2RlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJlcnJvcmNvZGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVycm9yY29kZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBlcnJvcmNvZGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXJyb3Jjb2RlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcnJvcmNvZGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGVycm9yY29kZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGVycm9yY29kZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVycm9ybmFtZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gZXJyb3IgbmFtZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXJyb3JuYW1lIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcnJvcm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZXJyb3JuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVycm9ybmFtZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVycm9ybmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZXJyb3JuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZXJyb3JuYW1lLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXJyb3J0ZXh0LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBlcnJvciBtZXNzYWdlLi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXJyb3J0ZXh0IiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcnJvcnRleHQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZXJyb3J0ZXh0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVycm9ydGV4dC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVycm9ydGV4dC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZXJyb3J0ZXh0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZXJyb3J0ZXh0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXJyb3J0eXBlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgY2xhc3NpZmljYXRpb24gb2YgYW4gZXJyb3IgbWVzc2FnZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZXJyb3J0eXBlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlcnJvcnR5cGUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZXJyb3J0eXBlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImVycm9ydHlwZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImVycm9ydHlwZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZXJyb3J0eXBlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZXJyb3J0eXBlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZmlsZW5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBuYW1lIG9mIGEgZmlsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmlsZW5hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaWxlbmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmaWxlbmFtZS5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IFR5cGUgb2YgZmlsZW5hbWUgdGhlIGVsZW1lbnQgbmFtZXM7IG5vIGRlZmF1bHQgLS0+CiAgPCEtLQogICAgUGF0aDogU2VhcmNoIHBhdGggKHBvc3NpYmx5IHN5c3RlbS1zcGVjaWZpYykgaW4gd2hpY2gKICAgIGZpbGUgY2FuIGJlIGZvdW5kCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZpbGVuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImhlYWRlcmZpbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icGFydGl0aW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRldmljZWZpbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGlicmFyeWZpbGUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGlyZWN0b3J5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImV4dGVuc2lvbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzeW1saW5rIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhdGgiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmlsZW5hbWUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGZpbGVuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZmlsZW5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmdW5jdGlvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIG5hbWUgb2YgYSBmdW5jdGlvbiBvciBzdWJyb3V0aW5lLCBhcyBpbiBhIHByb2dyYW1taW5nIGxhbmd1YWdlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJmdW5jdGlvbiIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZ1bmN0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZ1bmN0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZ1bmN0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmdW5jdGlvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZnVuY3Rpb24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmdW5jdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aWJ1dHRvbi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHRleHQgb24gYSBidXR0b24gaW4gYSBHVUkuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Imd1aWJ1dHRvbiIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNjZWwiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN1cGVyc2NyaXB0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzY3JpcHQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aWJ1dHRvbi5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBndWlidXR0b24uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3VpYnV0dG9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWlidXR0b24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGd1aWJ1dHRvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGd1aWJ1dHRvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aWljb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkdyYXBoaWMgYW5kL29yIHRleHQgYXBwZWFyaW5nIGFzIGEgaWNvbiBpbiBhIEdVSS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3VpaWNvbiIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNjZWwiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN1cGVyc2NyaXB0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzY3JpcHQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aWljb24uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3VpaWNvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWlpY29uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWlpY29uLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBndWlpY29uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3VpaWNvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aWxhYmVsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgdGV4dCBvZiBhIGxhYmVsIGluIGEgR1VJLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJndWlsYWJlbCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNjZWwiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN1cGVyc2NyaXB0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzY3JpcHQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aWxhYmVsLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGd1aWxhYmVsLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aWxhYmVsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWlsYWJlbC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ3VpbGFiZWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBndWlsYWJlbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aW1lbnUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBuYW1lIG9mIGEgbWVudSBpbiBhIEdVSS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3VpbWVudSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iYWNjZWwiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN1cGVyc2NyaXB0Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdWJzY3JpcHQiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imd1aW1lbnUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZ3VpbWVudS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWltZW51LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWltZW51LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBndWltZW51LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3VpbWVudS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imd1aW1lbnVpdGVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSBvZiBhIHRlcm1pbmFsIG1lbnUgaXRlbSBpbiBhIEdVSS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3VpbWVudWl0ZW0iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjY2VsIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdXBlcnNjcmlwdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3Vic2NyaXB0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWltZW51aXRlbS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBndWltZW51aXRlbS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWltZW51aXRlbS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3VpbWVudWl0ZW0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGd1aW1lbnVpdGVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZ3VpbWVudWl0ZW0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJndWlzdWJtZW51LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSBvZiBhIHN1Ym1lbnUgaW4gYSBHVUkuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Imd1aXN1Ym1lbnUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjY2VsIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzdXBlcnNjcmlwdCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ic3Vic2NyaXB0Ii8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJndWlzdWJtZW51LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGd1aXN1Ym1lbnUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZ3Vpc3VibWVudS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ3Vpc3VibWVudS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZ3Vpc3VibWVudS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGd1aXN1Ym1lbnUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJoYXJkd2FyZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBwaHlzaWNhbCBwYXJ0IG9mIGEgY29tcHV0ZXIgc3lzdGVtLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJoYXJkd2FyZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImhhcmR3YXJlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGhhcmR3YXJlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImhhcmR3YXJlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJoYXJkd2FyZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaGFyZHdhcmUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBoYXJkd2FyZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImludGVyZmFjZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gZWxlbWVudCBvZiBhIEdVSS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iaW50ZXJmYWNlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhY2NlbCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaW50ZXJmYWNlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGludGVyZmFjZS5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IFR5cGUgb2YgdGhlIEludGVyZmFjZSBpdGVtOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbnRlcmZhY2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImludGVyZmFjZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgaW50ZXJmYWNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgaW50ZXJmYWNlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5Y2FwLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgdGV4dCBwcmludGVkIG9uIGEga2V5IG9uIGEga2V5Ym9hcmQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImtleWNhcCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleWNhcC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBrZXljYXAuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5Y2FwLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmdW5jdGlvbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFsdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb250cm9sIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNoaWZ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1ldGEiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZXNjYXBlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImVudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRhYiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJiYWNrc3BhY2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29tbWFuZCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvcHRpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic3BhY2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGVsZXRlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imluc2VydCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ1cCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkb3duIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaG9tZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJlbmQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icGFnZXVwIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBhZ2Vkb3duIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im90aGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im90aGVyZnVuY3Rpb24iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5Y2FwLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBrZXljYXAuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBrZXljYXAubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXljb2RlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgaW50ZXJuYWwsIGZyZXF1ZW50bHkgbnVtZXJpYywgaWRlbnRpZmllciBmb3IgYSBrZXkgb24gYSBrZXlib2FyZC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ia2V5Y29kZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5Y29kZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBrZXljb2RlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImtleWNvZGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXljb2RlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBrZXljb2RlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Yga2V5Y29kZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImtleWNvbWJvLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGNvbWJpbmF0aW9uIG9mIGlucHV0IGFjdGlvbnMuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImtleWNvbWJvIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJrZXljYXAiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImtleWNvbWJvIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJrZXlzeW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1vdXNlYnV0dG9uIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJrZXljb21iby5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBrZXljb21iby5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXljb21iby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleWFjdGlvbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5Y29tYm8ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGtleWNvbWJvLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Yga2V5Y29tYm8ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJrZXlzeXNtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgc3ltYm9saWMgbmFtZSBvZiBhIGtleSBvbiBhIGtleWJvYXJkLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJrZXlzeW0iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImtleXN5bS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBrZXlzeW0uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ia2V5c3ltLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5c3lzbS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Yga2V5c3ltLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Yga2V5c3ltLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGluZWFubm90YXRpb24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgY29tbWVudCBvbiBhIGxpbmUgaW4gYSB2ZXJiYXRpbSBsaXN0aW5nLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJsaW5lYW5ub3RhdGlvbiI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmVhbm5vdGF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGxpbmVhbm5vdGF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImxpbmVhbm5vdGF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGluZWFubm90YXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpbmVhbm5vdGF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGluZWFubm90YXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaXRlcmFsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpJbmxpbmUgdGV4dCB0aGF0IGlzIHNvbWUgbGl0ZXJhbCB2YWx1ZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGl0ZXJhbCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpdGVyYWwuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbGl0ZXJhbC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaXRlcmFsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaXRlcmFsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBsaXRlcmFsLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbGl0ZXJhbC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvZGUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkFuIGlubGluZSBjb2RlIGZyYWdtZW50LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb2RlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29kZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjb2RlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvZGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxhbmd1YWdlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb2RlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjb2RlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY29kZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnN0YW50LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHByb2dyYW1taW5nIG9yIHN5c3RlbSBjb25zdGFudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY29uc3RhbnQiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbnN0YW50LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNvbnN0YW50LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNvbnN0YW50LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxpbWl0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb25zdGFudC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY29uc3RhbnQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjb25zdGFudC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InZhcm5hbWUucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBuYW1lIG9mIGEgdmFyaWFibGUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InZhcm5hbWUiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InZhcm5hbWUuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdmFybmFtZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2YXJuYW1lLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idmFybmFtZS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdmFybmFtZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHZhcm5hbWUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtYXJrdXAucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgc3RyaW5nIG9mIGZvcm1hdHRpbmcgbWFya3VwIGluIHRleHQgdGhhdCBpcyB0byBiZSByZXByZXNlbnRlZCBsaXRlcmFsbHkuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im1hcmt1cCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWFya3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1hcmt1cC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtYXJrdXAuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtYXJrdXAucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1hcmt1cC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG1hcmt1cC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lZGlhbGFiZWwucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgbmFtZSB0aGF0IGlkZW50aWZpZXMgdGhlIHBoeXNpY2FsIG1lZGl1bSBvbiB3aGljaCBzb21lIGluZm9ybWF0aW9uIHJlc2lkZXMuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im1lZGlhbGFiZWwiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1lZGlhbGFiZWwuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWVkaWFsYWJlbC5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IFR5cGUgb2YgbWVkaXVtIG5hbWVkIGJ5IHRoZSBlbGVtZW50OyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJtZWRpYWxhYmVsLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNhcnRyaWRnZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZHJvbSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkaXNrIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRhcGUiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1lZGlhbGFiZWwucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1lZGlhbGFiZWwuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtZWRpYWxhYmVsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibWVudWNob2ljZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBzZWxlY3Rpb24gb3Igc2VyaWVzIG9mIHNlbGVjdGlvbnMgZnJvbSBhIG1lbnUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im1lbnVjaG9pY2UiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InNob3J0Y3V0Ii8+CiAgICAgICAgPHhzOmNob2ljZSBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imd1aWJ1dHRvbiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJndWlpY29uIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imd1aWxhYmVsIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imd1aW1lbnUiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3VpbWVudWl0ZW0iLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3Vpc3VibWVudSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbnRlcmZhY2UiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibWVudWNob2ljZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBtZW51Y2hvaWNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1lbnVjaG9pY2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1lbnVjaG9pY2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1lbnVjaG9pY2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtZW51Y2hvaWNlLm1vZHVsZSAtLT4KICA8IS0tIFNlZSBhbHNvIEtleUNvbWJvIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzaG9ydGN1dC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBrZXkgY29tYmluYXRpb24gZm9yIGFuIGFjdGlvbiB0aGF0IGlzIGFsc28gYWNjZXNzaWJsZSB0aHJvdWdoIGEgbWVudS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2hvcnRjdXQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImtleWNhcCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ia2V5Y29tYm8iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImtleXN5bSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibW91c2VidXR0b24iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNob3J0Y3V0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNob3J0Y3V0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNob3J0Y3V0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ia2V5YWN0aW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzaG9ydGN1dC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2hvcnRjdXQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzaG9ydGN1dC5tb2R1bGUgLS0+CiAgPCEtLSBlbmQgb2YgbWVudWNob2ljZS5jb250ZW50Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibW91c2VidXR0b24ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBjb252ZW50aW9uYWwgbmFtZSBvZiBhIG1vdXNlIGJ1dHRvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibW91c2VidXR0b24iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vdXNlYnV0dG9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1vdXNlYnV0dG9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1vdXNlYnV0dG9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3VzZWJ1dHRvbi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbW91c2VidXR0b24uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtb3VzZWJ1dHRvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1zZ3RleHQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBhY3R1YWwgdGV4dCBvZiBhIG1lc3NhZ2UgY29tcG9uZW50IGluIGEgbWVzc2FnZSBzZXQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9Im1zZ3RleHQiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Z3JvdXAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29tcG9uZW50Lm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtc2d0ZXh0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG1zZ3RleHQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibXNndGV4dC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1zZ3RleHQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG1zZ3RleHQuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBtc2d0ZXh0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib3B0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBvcHRpb24gZm9yIGEgc29mdHdhcmUgY29tbWFuZC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib3B0aW9uIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ib3B0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9wdGlvbi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcHRpb24uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcHRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIG9wdGlvbi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG9wdGlvbi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im9wdGlvbmFsLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpPcHRpb25hbCBpbmZvcm1hdGlvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ib3B0aW9uYWwiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvcHRpb25hbC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBvcHRpb25hbC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvcHRpb25hbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9wdGlvbmFsLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBvcHRpb25hbC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIG9wdGlvbmFsLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGFyYW1ldGVyLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHZhbHVlIG9yIGEgc3ltYm9saWMgcmVmZXJlbmNlIHRvIGEgdmFsdWUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InBhcmFtZXRlciIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhcmFtZXRlci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwYXJhbWV0ZXIuZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBUeXBlIG9mIHRoZSBQYXJhbWV0ZXI7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBhcmFtZXRlci5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb21tYW5kIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImZ1bmN0aW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9wdGlvbiIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYXJhbWV0ZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHBhcmFtZXRlci5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHBhcmFtZXRlci5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb21wdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBjaGFyYWN0ZXIgb3Igc3RyaW5nIGluZGljYXRpbmcgdGhlIHN0YXJ0IG9mIGFuIGlucHV0IGZpZWxkIGluIGEgIGNvbXB1dGVyIGRpc3BsYXkuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InByb21wdCIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iY28iLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb21wdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwcm9tcHQuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJvbXB0LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9tcHQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHByb21wdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHByb21wdC5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb3BlcnR5LnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHVuaXQgb2YgZGF0YSBhc3NvY2lhdGVkIHdpdGggc29tZSBwYXJ0IG9mIGEgY29tcHV0ZXIgc3lzdGVtLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJwcm9wZXJ0eSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByb3BlcnR5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHByb3BlcnR5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByb3BlcnR5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibW9yZWluZm8uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcm9wZXJ0eS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgcHJvcGVydHkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcm9wZXJ0eS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlcGxhY2VhYmxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpDb250ZW50IHRoYXQgbWF5IG9yIG11c3QgYmUgcmVwbGFjZWQgYnkgdGhlIHVzZXIuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InJlcGxhY2VhYmxlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9wdGlvbmFsIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYmFzZS5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXBsYWNlYWJsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZXBsYWNlYWJsZS5lbGVtZW50IC0tPgogIDwhLS0KICAgIENsYXNzOiBUeXBlIG9mIGluZm9ybWF0aW9uIHRoZSBlbGVtZW50IHJlcHJlc2VudHM7IG5vCiAgICBkZWZhdWx0CiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InJlcGxhY2VhYmxlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbW1hbmQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZnVuY3Rpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ib3B0aW9uIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBhcmFtZXRlciIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVwbGFjZWFibGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlcGxhY2VhYmxlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcmVwbGFjZWFibGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXR1cm52YWx1ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHZhbHVlIHJldHVybmVkIGJ5IGEgZnVuY3Rpb24uIC0tPgogIDx4czplbGVtZW50IG5hbWU9InJldHVybnZhbHVlIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXR1cm52YWx1ZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiByZXR1cm52YWx1ZS5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJyZXR1cm52YWx1ZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJldHVybnZhbHVlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiByZXR1cm52YWx1ZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHJldHVybnZhbHVlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2dtbHRhZy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBjb21wb25lbnQgb2YgU0dNTCBtYXJrdXAuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNnbWx0YWciIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNnbWx0YWcuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc2dtbHRhZy5lbGVtZW50IC0tPgogIDwhLS0gQ2xhc3M6IFR5cGUgb2YgU0dNTCBjb25zdHJ1Y3QgdGhlIGVsZW1lbnQgbmFtZXM7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNnbWx0YWcuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYXR0cmlidXRlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImF0dHZhbHVlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImVsZW1lbnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZW5kdGFnIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImVtcHR5dGFnIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImdlbmVudGl0eSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJudW1jaGFycmVmIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBhcmFtZW50aXR5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBpIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InhtbHBpIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InN0YXJ0dGFnIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNnbWxjb21tZW50Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InByZWZpeCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJuYW1lc3BhY2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibG9jYWxuYW1lIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWVzcGFjZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2dtbHRhZy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2dtbHRhZy5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNnbWx0YWcubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdHJ1Y3RmaWVsZC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBmaWVsZCBpbiBhIHN0cnVjdHVyZSAoaW4gdGhlIHByb2dyYW1taW5nIGxhbmd1YWdlIHNlbnNlKS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3RydWN0ZmllbGQiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InN0cnVjdGZpZWxkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN0cnVjdGZpZWxkLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0cnVjdGZpZWxkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RydWN0ZmllbGQucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHN0cnVjdGZpZWxkLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3RydWN0ZmllbGQubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdHJ1Y3RuYW1lLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbmFtZSBvZiBhIHN0cnVjdHVyZSAoaW4gdGhlIHByb2dyYW1taW5nIGxhbmd1YWdlIHNlbnNlKS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3RydWN0bmFtZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3RydWN0bmFtZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdHJ1Y3RuYW1lLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN0cnVjdG5hbWUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdHJ1Y3RuYW1lLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdHJ1Y3RuYW1lLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2Ygc3RydWN0bmFtZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5bWJvbC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBuYW1lIHRoYXQgaXMgcmVwbGFjZWQgYnkgYSB2YWx1ZSBiZWZvcmUgcHJvY2Vzc2luZy4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3ltYm9sIiBzdWJzdGl0dXRpb25Hcm91cD0idGVjaC5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InNtYWxsY3B0ci5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeW1ib2wuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3ltYm9sLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogVHlwZSBvZiBzeW1ib2w7IG5vIGRlZmF1bHQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN5bWJvbC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW1pdCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3ltYm9sLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzeW1ib2wuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBzeW1ib2wubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeXN0ZW1pdGVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHN5c3RlbS1yZWxhdGVkIGl0ZW0gb3IgdGVybS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic3lzdGVtaXRlbSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czpncm91cCByZWY9ImNwdHIuY2hhci5taXgiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFjcm9ueW0iLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzeXN0ZW1pdGVtLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHN5c3RlbWl0ZW0uZWxlbWVudCAtLT4KICA8IS0tIENsYXNzOiBUeXBlIG9mIHN5c3RlbSBpdGVtIHRoZSBlbGVtZW50IG5hbWVzOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzeXN0ZW1pdGVtLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbnN0YW50Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRhZW1vbiIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkb21haW5uYW1lIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImV0aGVyYWRkcmVzcyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJldmVudCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJldmVudGhhbmRsZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZmlsZXN5c3RlbSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJmcWRvbWFpbm5hbWUiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZ3JvdXBuYW1lIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImlwYWRkcmVzcyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaWJyYXJ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1hY3JvIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5ldG1hc2siLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibmV3c2dyb3VwIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im9zbmFtZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcm90b2NvbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyZXNvdXJjZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzeXN0ZW1uYW1lIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InVzZXJuYW1lIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InByb2Nlc3MiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2VydmVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlcnZpY2UiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im1vcmVpbmZvLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic3lzdGVtaXRlbS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc3lzdGVtaXRlbS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHN5c3RlbWl0ZW0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ1cmkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgVW5pZm9ybSBSZXNvdXJjZSBJZGVudGlmaWVyLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ1cmkiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InVyaS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB1cmkuZWxlbWVudCAtLT4KICA8IS0tIFR5cGU6IFR5cGUgb2YgVVJJOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ1cmkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InVyaS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdXJpLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdXJpLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idG9rZW4ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgdW5pdCBvZiBpbmZvcm1hdGlvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idG9rZW4iIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic21hbGxjcHRyLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRva2VuLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRva2VuLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRva2VuLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idG9rZW4ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRva2VuLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdG9rZW4ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0eXBlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgY2xhc3NpZmljYXRpb24gb2YgYSB2YWx1ZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idHlwZSIgc3Vic3RpdHV0aW9uR3JvdXA9InRlY2guY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzbWFsbGNwdHIuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idHlwZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0eXBlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InR5cGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0eXBlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiB0eXBlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdHlwZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InVzZXJpbnB1dC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6RGF0YSBlbnRlcmVkIGJ5IHRoZSB1c2VyLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ1c2VyaW5wdXQiIHN1YnN0aXR1dGlvbkdyb3VwPSJ0ZWNoLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJjcHRyLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjbyIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idXNlcmlucHV0LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHVzZXJpbnB1dC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ1c2VyaW5wdXQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtb3JlaW5mby5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InVzZXJpbnB1dC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdXNlcmlucHV0LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgdXNlcmlucHV0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGVybWRlZi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gaW5saW5lIGRlZmluaXRpb24gb2YgYSB0ZXJtLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJ0ZXJtZGVmIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXJtZGVmLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHRlcm1kZWYuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGVybWRlZi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRlcm1kZWYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRlcm1kZWYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB0ZXJtZGVmLm1vZHVsZSAtLT4KICA8IS0tIEdlbmVyYWwgd29yZHMgYW5kIHBocmFzZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFiYnJldi5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gYWJicmV2aWF0aW9uLCBlc3BlY2lhbGx5IG9uZSBmb2xsb3dlZCBieSBhIHBlcmlvZC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYWJicmV2IiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0id29yZC5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhYmJyZXYuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgYWJicmV2LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFiYnJldi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFiYnJldi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYWJicmV2LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYWJicmV2Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYWNyb255bS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gb2Z0ZW4gcHJvbm91bmNlYWJsZSB3b3JkIG1hZGUgZnJvbSB0aGUgaW5pdGlhbCAob3Igc2VsZWN0ZWQpIGxldHRlcnMgb2YgYSBuYW1lIG9yIHBocmFzZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYWNyb255bSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9IndvcmQuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYWNyb255bS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhY3JvbnltLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImFjcm9ueW0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhY3JvbnltLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBhY3JvbnltLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYWNyb255bS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdGF0aW9uLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBbiBpbmxpbmUgYmlibGlvZ3JhcGhpYyByZWZlcmVuY2UgdG8gYW5vdGhlciBwdWJsaXNoZWQgd29yay4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2l0YXRpb24iIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdGF0aW9uLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGNpdGF0aW9uLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdGF0aW9uLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0YXRpb24ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGNpdGF0aW9uLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2l0YXRpb24ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRlcmVmZW50cnkucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgY2l0YXRpb24gdG8gYSByZWZlcmVuY2UgcGFnZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iY2l0ZXJlZmVudHJ5IiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZWZlbnRyeXRpdGxlIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im1hbnZvbG51bSIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjaXRlcmVmZW50cnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgY2l0ZXJlZmVudHJ5LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNpdGVyZWZlbnRyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdGVyZWZlbnRyeS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgY2l0ZXJlZmVudHJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgY2l0ZXJlZmVudHJ5Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZW50cnl0aXRsZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6VGhlIHRpdGxlIG9mIGEgcmVmZXJlbmNlIHBhZ2UuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InJlZmVudHJ5dGl0bGUiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZWZlbnRyeXRpdGxlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5dGl0bGUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icmVmZW50cnl0aXRsZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJlZmVudHJ5dGl0bGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHJlZmVudHJ5dGl0bGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiByZWZlbnRyeXRpdGxlLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibmFtdm9sbnVtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHJlZmVyZW5jZSB2b2x1bWUgbnVtYmVyLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJtYW52b2xudW0iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0id29yZC5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJtYW52b2xudW0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbWFudm9sbnVtLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Im1hbnZvbG51bS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im5hbXZvbG51bS5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgbWFudm9sbnVtLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgbWFudm9sbnVtLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2l0ZXRpdGxlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgdGl0bGUgb2YgYSBjaXRlZCB3b3JrLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjaXRldGl0bGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNpdGV0aXRsZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBjaXRldGl0bGUuZWxlbWVudCAtLT4KICA8IS0tIFB1Yndvcms6IEdlbnJlIG9mIHB1Ymxpc2hlZCB3b3JrIGNpdGVkOyBubyBkZWZhdWx0IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjaXRldGl0bGUuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InB1YndvcmsiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhcnRpY2xlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvb2siLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2hhcHRlciIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwYXJ0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlZmVudHJ5Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlY3Rpb24iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iam91cm5hbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZXJpZXMiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2V0Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1hbnVzY3JpcHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2Ryb20iLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZHZkIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Indpa2kiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZ29waGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJicyIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJlbWFpbG1lc3NhZ2UiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0id2VicGFnZSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJuZXdzcG9zdGluZyIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2l0ZXRpdGxlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBjaXRldGl0bGUuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBjaXRldGl0bGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJlbXBoYXNpcy5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6RW1waGFzaXplZCB0ZXh0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJlbXBoYXNpcyIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZW1waGFzaXMuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZW1waGFzaXMuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZW1waGFzaXMuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlbXBoYXNpcy5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZW1waGFzaXMuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBlbXBoYXNpcy5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvcmVpZ25waHJhc2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgd29yZCBvciBwaHJhc2UgaW4gYSBsYW5ndWFnZSBvdGhlciB0aGFuIHRoZSBwcmltYXJ5IGxhbmd1YWdlIG9mIHRoZSBkb2N1bWVudC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZm9yZWlnbnBocmFzZSIgc3Vic3RpdHV0aW9uR3JvdXA9Imdlbi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZm9yZWlnbnBocmFzZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBmb3JlaWducGhyYXNlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvcmVpZ25waHJhc2UuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmb3JlaWducGhyYXNlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmb3JlaWducGhyYXNlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgZm9yZWlnbnBocmFzZS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9Imdsb3NzdGVybS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBnbG9zc2FyeSB0ZXJtLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJnbG9zc3Rlcm0iIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imdsb3NzdGVybS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBnbG9zc3Rlcm0uZWxlbWVudCAtLT4KICA8IS0tIHRvIEdsb3NzRW50cnkgaWYgR2xvc3N0ZXJtIHVzZWQgaW4gdGV4dCAtLT4KICA8IS0tCiAgICBCYXNlRm9ybTogUHJvdmlkZXMgdGhlIGZvcm0gb2YgR2xvc3NUZXJtIHRvIGJlIHVzZWQKICAgIGZvciBpbmRleGluZwogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJnbG9zc3Rlcm0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhc2Vmb3JtIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZ2xvc3N0ZXJtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBnbG9zc3Rlcm0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBnbG9zc3Rlcm0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaXJzdHRlcm0ucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGEgdGVybS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iZmlyc3R0ZXJtIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmaXJzdHRlcm0uYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgZmlyc3R0ZXJtLmVsZW1lbnQgLS0+CiAgPCEtLSB0byBHbG9zc0VudHJ5IG9yIG90aGVyIGV4cGxhbmF0aW9uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJmaXJzdHRlcm0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhc2Vmb3JtIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZmlyc3R0ZXJtLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBmaXJzdHRlcm0uYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmaXJzdHRlcm0ubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJwaHJhc2Uucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgc3BhbiBvZiB0ZXh0LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJwaHJhc2UiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBocmFzZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBwaHJhc2UuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icGhyYXNlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icGhyYXNlLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwaHJhc2UuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwaHJhc2UubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJxdW90ZS5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QW4gaW5saW5lIHF1b3RhdGlvbi4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icXVvdGUiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InF1b3RlLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHF1b3RlLmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InF1b3RlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icXVvdGUucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHF1b3RlLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgcXVvdGUubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzc3NjcmlwdC5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBzdWJzY3JpcHQgKGFzIGluIEh7XjJ9TywgdGhlIG1vbGVjdWxhciBmb3JtdWxhIGZvciB3YXRlcikuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InN1YnNjcmlwdCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbXBoYXNpcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVwbGFjZWFibGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN5bWJvbCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJvdGhlci5jaGFyLmNsYXNzIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdWJzY3JpcHQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygc3Vic2NyaXB0LmVsZW1lbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InN1YnNjcmlwdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNzc2NyaXB0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdWJzY3JpcHQuYXR0bGlzdCAtLT4KICA8IS0tIGRvYzpBIHN1cGVyc2NyaXB0IChhcyBpbiB4XjIsIHRoZSBtYXRoZW1hdGljYWwgbm90YXRpb24gZm9yIHggbXVsdGlwbGllZCBieSBpdHNlbGYpLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJzdXBlcnNjcmlwdCI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgIDx4czplbGVtZW50IHJlZj0ibGluay5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJlbXBoYXNpcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0icmVwbGFjZWFibGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN5bWJvbCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJiYXNlLmNoYXIuY2xhc3MiLz4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJvdGhlci5jaGFyLmNsYXNzIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzdXBlcnNjcmlwdC5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzdXBlcnNjcmlwdC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdXBlcnNjcmlwdC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNzc2NyaXB0LnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBzdXBlcnNjcmlwdC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHNzc2NyaXB0Lm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idHJhZGVtYXJrLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHRyYWRlbWFyay4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idHJhZGVtYXJrIiBzdWJzdGl0dXRpb25Hcm91cD0iZ2VuLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxpbmsuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGVjaC5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iYmFzZS5jaGFyLmNsYXNzIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0ib3RoZXIuY2hhci5jbGFzcyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lZ3JhcGhpYyIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5saW5lbWVkaWFvYmplY3QiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVtcGhhc2lzIi8+CiAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0cmFkZW1hcmsuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgdHJhZGVtYXJrLmVsZW1lbnQgLS0+CiAgPCEtLSBDbGFzczogTW9yZSBwcmVjaXNlbHkgaWRlbnRpZmllcyB0aGUgaXRlbSB0aGUgZWxlbWVudCBuYW1lcyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idHJhZGVtYXJrLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgZGVmYXVsdD0idHJhZGUiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzZXJ2aWNlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRyYWRlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlZ2lzdGVyZWQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY29weXJpZ2h0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0cmFkZW1hcmsucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHRyYWRlbWFyay5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHRyYWRlbWFyay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9IndvcmRhc3dvcmQucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgd29yZCBtZWFudCBzcGVjaWZpY2FsbHkgYXMgYSB3b3JkIGFuZCBub3QgcmVwcmVzZW50aW5nIGFueXRoaW5nIGVsc2UuIC0tPgogIDx4czplbGVtZW50IG5hbWU9IndvcmRhc3dvcmQiIHN1YnN0aXR1dGlvbkdyb3VwPSJnZW4uY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ3b3JkLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9IndvcmRhc3dvcmQuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2Ygd29yZGFzd29yZC5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ3b3JkYXN3b3JkLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0id29yZGFzd29yZC5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygd29yZGFzd29yZC5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHdvcmRhc3dvcmQubW9kdWxlIC0tPgogIDwhLS0gTGlua3MgYW5kIGNyb3NzLXJlZmVyZW5jZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibGluay5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBoeXBlcnRleHQgbGluay4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ibGluayIgc3Vic3RpdHV0aW9uR3JvdXA9ImxpbmsuY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmsuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgbGluay5lbGVtZW50IC0tPgogIDwhLS0KICAgIEVuZHRlcm06IElEIG9mIGVsZW1lbnQgY29udGFpbmluZyB0ZXh0IHRoYXQgaXMgdG8gYmUKICAgIGZldGNoZWQgZnJvbSBlbHNld2hlcmUgaW4gdGhlIGRvY3VtZW50IHRvIGFwcGVhciBhcwogICAgdGhlIGNvbnRlbnQgb2YgdGhpcyBlbGVtZW50CiAgLS0+CiAgPCEtLSB0byBsaW5rZWQtdG8gb2JqZWN0IC0tPgogIDwhLS0gVHlwZTogRnJlZWx5IGFzc2lnbmFibGUgcGFyYW1ldGVyIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJsaW5rLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbmR0ZXJtIiB0eXBlPSJ4czpJRFJFRiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ4cmVmc3R5bGUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGlua2VuZHJlcS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imxpbmsucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGxpbmsuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBsaW5rLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib2xpbmsucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgbGluayB0aGF0IGFkZHJlc3NlcyBpdHMgdGFyZ2V0IGluZGlyZWN0bHksIHRocm91Z2ggYW4gZW50aXR5LiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJvbGluayIgc3Vic3RpdHV0aW9uR3JvdXA9ImxpbmsuY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Im9saW5rLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIG9saW5rLmVsZW1lbnQgLS0+CiAgPCEtLSBUYXJnZXREb2NFbnQ6IE5hbWUgb2YgYW4gZW50aXR5IHRvIGJlIHRoZSB0YXJnZXQgb2YgdGhlIGxpbmsgLS0+CiAgPCEtLQogICAgTGlua01vZGU6IElEIG9mIGEgTW9kZVNwZWMgY29udGFpbmluZyBpbnN0cnVjdGlvbnMgZm9yCiAgICBvcGVyYXRpbmcgb24gdGhlIGVudGl0eSBuYW1lZCBieSBUYXJnZXREb2NFbnQKICAtLT4KICA8IS0tIExvY2FsSW5mbzogSW5mb3JtYXRpb24gdGhhdCBtYXkgYmUgcGFzc2VkIHRvIE1vZGVTcGVjIC0tPgogIDwhLS0gVHlwZTogRnJlZWx5IGFzc2lnbmFibGUgcGFyYW1ldGVyIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvbGluay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGFyZ2V0ZG9jZW50IiB0eXBlPSJ4czpFTlRJVFkiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlua21vZGUiIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxvY2FsaW5mbyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRhcmdldGRvYyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0YXJnZXRwdHIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieHJlZnN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJvbGluay5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygb2xpbmsuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBvbGluay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InVsaW5rLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGxpbmsgdGhhdCBhZGRyZXNzZXMgaXRzIHRhcmdldCBieSBtZWFucyBvZiBhIFVSTCAoVW5pZm9ybSBSZXNvdXJjZSBMb2NhdG9yKS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idWxpbmsiIHN1YnN0aXR1dGlvbkdyb3VwPSJsaW5rLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ1bGluay5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB1bGluay5lbGVtZW50IC0tPgogIDwhLS0gVVJMOiB1bmlmb3JtIHJlc291cmNlIGxvY2F0b3I7IHRoZSB0YXJnZXQgb2YgdGhlIFVMaW5rIC0tPgogIDwhLS0gVHlwZTogRnJlZWx5IGFzc2lnbmFibGUgcGFyYW1ldGVyIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ1bGluay5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXJsIiB1c2U9InJlcXVpcmVkIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieHJlZnN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ1bGluay5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdWxpbmsuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiB1bGluay5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImZvb3Rub3RlcmVmLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIGNyb3NzIHJlZmVyZW5jZSB0byBhIGZvb3Rub3RlIChhIGZvb3Rub3RlIG1hcmspLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJmb290bm90ZXJlZiIgc3Vic3RpdHV0aW9uR3JvdXA9InhyZWYuY2hhci5jbGFzcyI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImZvb3Rub3RlcmVmLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGZvb3Rub3RlcmVmLmVsZW1lbnQgLS0+CiAgPCEtLSB0byBmb290bm90ZSBjb250ZW50IHN1cHBsaWVkIGVsc2V3aGVyZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZm9vdG5vdGVyZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcmVxLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJmb290bm90ZXJlZi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgZm9vdG5vdGVyZWYuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBmb290bm90ZXJlZi5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InhyZWYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgY3Jvc3MgcmVmZXJlbmNlIHRvIGFub3RoZXIgcGFydCBvZiB0aGUgZG9jdW1lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InhyZWYiIHN1YnN0aXR1dGlvbkdyb3VwPSJ4cmVmLmNoYXIuY2xhc3MiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4cmVmLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHhyZWYuZWxlbWVudCAtLT4KICA8IS0tCiAgICBFbmR0ZXJtOiBJRCBvZiBlbGVtZW50IGNvbnRhaW5pbmcgdGV4dCB0aGF0IGlzIHRvIGJlCiAgICBmZXRjaGVkIGZyb20gZWxzZXdoZXJlIGluIHRoZSBkb2N1bWVudCB0byBhcHBlYXIgYXMKICAgIHRoZSBjb250ZW50IG9mIHRoaXMgZWxlbWVudAogIC0tPgogIDwhLS0gdG8gbGlua2VkLXRvIG9iamVjdCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ieHJlZi5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW5kdGVybSIgdHlwZT0ieHM6SURSRUYiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieHJlZnN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsaW5rZW5kcmVxLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ieHJlZi5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgeHJlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIHhyZWYubW9kdWxlIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9yZWYucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgY3Jvc3MgcmVmZXJlbmNlIHRvIGEgYmlibGlvZ3JhcGhpYyBlbnRyeS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0iYmlibGlvcmVmIiBzdWJzdGl0dXRpb25Hcm91cD0ieHJlZi5jaGFyLmNsYXNzIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYmlibGlvcmVmLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIGJpYmxpb3JlZi5lbGVtZW50IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJiaWJsaW9yZWYuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVuZHRlcm0iIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InhyZWZzdHlsZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1bml0cyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiZWdpbiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbmQiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImxpbmtlbmRyZXEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiaWJsaW9yZWYucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJpYmxpb3JlZi5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJpYmxpb3JlZi5tb2R1bGUgLS0+CiAgPCEtLSBVYmlxdWl0b3VzIGVsZW1lbnRzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhbmNob3Iucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOkEgc3BvdCBpbiB0aGUgZG9jdW1lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImFuY2hvciI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFuY2hvci5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBhbmNob3IuZWxlbWVudCAtLT4KICA8IS0tIHJlcXVpcmVkIC0tPgogIDwhLS0gcmVwbGFjZXMgTGFuZyAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYW5jaG9yLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaWRyZXEuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icmVtYXAuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ4cmVmbGFiZWwuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyZXZpc2lvbmZsYWcuYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJlZmZlY3Rpdml0eS5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImFuY2hvci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgYW5jaG9yLmF0dGxpc3QgLS0+CiAgPCEtLSBlbmQgb2YgYW5jaG9yLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iYmVnaW5wYWdlLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpUaGUgbG9jYXRpb24gb2YgYSBwYWdlIGJyZWFrIGluIGEgcHJpbnQgdmVyc2lvbiBvZiB0aGUgZG9jdW1lbnQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImJlZ2lucGFnZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImJlZ2lucGFnZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBiZWdpbnBhZ2UuZWxlbWVudCAtLT4KICA8IS0tIFBhZ2VOdW06IE51bWJlciBvZiBwYWdlIHRoYXQgYmVnaW5zIGF0IHRoaXMgcG9pbnQgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJlZ2lucGFnZS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InBhZ2VudW0uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJiZWdpbnBhZ2Uucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGJlZ2lucGFnZS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGJlZ2lucGFnZS5tb2R1bGUgLS0+CiAgPCEtLQogICAgSW5kZXhUZXJtcyBhcHBlYXIgaW4gdGhlIHRleHQgZmxvdyBmb3IgZ2VuZXJhdGluZyBvciBsaW5raW5nIGFuCiAgICBpbmRleC4KICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iaW5kZXh0ZXJtLnJvbGUuYXR0cmliIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGRvYzpBIHdyYXBwZXIgZm9yIHRlcm1zIHRvIGJlIGluZGV4ZWQuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImluZGV4dGVybSIgc3Vic3RpdHV0aW9uR3JvdXA9Im5keHRlcm0uY2xhc3MiLz4KICA8IS0tIGVuZCBvZiBpbmRleHRlcm0uZWxlbWVudCAtLT4KICA8IS0tCiAgICBTY29wZTogSW5kaWNhdGVzIHdoaWNoIGdlbmVyYXRlZCBpbmRpY2VzIHRoZSBJbmRleFRlcm0KICAgIHNob3VsZCBhcHBlYXIgaW46IEdsb2JhbCAod2hvbGUgZG9jdW1lbnQgc2V0KSwgTG9jYWwgKHRoaXMKICAgIGRvY3VtZW50IG9ubHkpLCBvciBBbGwgKGJvdGgpCiAgLS0+CiAgPCEtLQogICAgU2lnbmlmaWNhbmNlOiBXaGV0aGVyIHRoaXMgSW5kZXhUZXJtIGlzIHRoZSBtb3N0IHBlcnRpbmVudAogICAgb2YgaXRzIHNlcmllcyAoUHJlZmVycmVkKSBvciBub3QgKE5vcm1hbCwgdGhlIGRlZmF1bHQpCiAgLS0+CiAgPCEtLQogICAgQ2xhc3M6IEluZGljYXRlcyB0eXBlIG9mIEluZGV4VGVybTsgZGVmYXVsdCBpcyBTaW5ndWxhciwKICAgIG9yIEVuZE9mUmFuZ2UgaWYgU3RhcnRSZWYgaXMgc3VwcGxpZWQ7IFN0YXJ0T2ZSYW5nZSB2YWx1ZQogICAgbXVzdCBiZSBzdXBwbGllZCBleHBsaWNpdGx5IG9uIHN0YXJ0cyBvZiByYW5nZXMKICAtLT4KICA8IS0tCiAgICBTdGFydFJlZjogSUQgb2YgdGhlIEluZGV4VGVybSB0aGF0IHN0YXJ0cyB0aGUgaW5kZXhpbmcKICAgIHJhbmdlIGVuZGVkIGJ5IHRoaXMgSW5kZXhUZXJtCiAgLS0+CiAgPCEtLQogICAgWm9uZTogSURzIG9mIHRoZSBlbGVtZW50cyB0byB3aGljaCB0aGUgSW5kZXhUZXJtIGFwcGxpZXMsCiAgICBhbmQgaW5kaWNhdGVzIHRoYXQgdGhlIEluZGV4VGVybSBhcHBsaWVzIHRvIHRob3NlIGVudGlyZQogICAgZWxlbWVudHMgcmF0aGVyIHRoYW4gdGhlIHBvaW50IGF0IHdoaWNoIHRoZSBJbmRleFRlcm0KICAgIG9jY3VycwogIC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbmRleHRlcm0uYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwYWdlbnVtLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY29wZSI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFsbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJnbG9iYWwiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibG9jYWwiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2lnbmlmaWNhbmNlIiBkZWZhdWx0PSJub3JtYWwiPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwcmVmZXJyZWQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm9ybWFsIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic2luZ3VsYXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ic3RhcnRvZnJhbmdlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImVuZG9mcmFuZ2UiLz4KICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmF0dHJpYnV0ZT4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RhcnRyZWYiIHR5cGU9InhzOklEUkVGIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InpvbmUiIHR5cGU9InhzOklEUkVGUyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJpbmRleHRlcm0ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIGluZGV4dGVybS5hdHRsaXN0IC0tPgogIDwhLS0gZW5kIG9mIGluZGV4dGVybS5tb2R1bGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InByaW1zZWN0ZXIucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZG9jOlRoZSBwcmltYXJ5IHdvcmQgb3IgcGhyYXNlIHVuZGVyIHdoaWNoIGFuIGluZGV4IHRlcm0gc2hvdWxkIGJlIHNvcnRlZC4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0icHJpbWFyeSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW1hcnkuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBlbmQgb2YgcHJpbWFyeS5lbGVtZW50IC0tPgogIDwhLS0KICAgIFNvcnRBczogQWx0ZXJuYXRlIHNvcnQgc3RyaW5nIGZvciBpbmRleCBzb3J0aW5nLCBlLmcuLAogICAgImZvdXJ0ZWVuIiBmb3IgYW4gZWxlbWVudCBjb250YWluaW5nICIxNCIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0icHJpbWFyeS5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic29ydGFzIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJwcmltc2VjdGVyLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIGVuZCBvZiBwcmltYXJ5LmF0dGxpc3QgLS0+CiAgPCEtLSBkb2M6QSBzZWNvbmRhcnkgd29yZCBvciBwaHJhc2UgaW4gYW4gaW5kZXggdGVybS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0ic2Vjb25kYXJ5Ij4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpncm91cCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2hhci5taXgiLz4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2Vjb25kYXJ5LmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlY29uZGFyeS5lbGVtZW50IC0tPgogIDwhLS0KICAgIFNvcnRBczogQWx0ZXJuYXRlIHNvcnQgc3RyaW5nIGZvciBpbmRleCBzb3J0aW5nLCBlLmcuLAogICAgImZvdXJ0ZWVuIiBmb3IgYW4gZWxlbWVudCBjb250YWluaW5nICIxNCIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2Vjb25kYXJ5LmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzb3J0YXMiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InByaW1zZWN0ZXIucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gZW5kIG9mIHNlY29uZGFyeS5hdHRsaXN0IC0tPgogIDwhLS0gZG9jOkEgdGVydGlhcnkgd29yZCBvciBwaHJhc2UgaW4gYW4gaW5kZXggdGVybS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGVydGlhcnkiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJ0ZXJ0aWFyeS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiB0ZXJ0aWFyeS5lbGVtZW50IC0tPgogIDwhLS0KICAgIFNvcnRBczogQWx0ZXJuYXRlIHNvcnQgc3RyaW5nIGZvciBpbmRleCBzb3J0aW5nLCBlLmcuLAogICAgImZvdXJ0ZWVuIiBmb3IgYW4gZWxlbWVudCBjb250YWluaW5nICIxNCIKICAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGVydGlhcnkuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNvcnRhcyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icHJpbXNlY3Rlci5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2YgdGVydGlhcnkuYXR0bGlzdCAtLT4KICA8IS0tIGVuZCBvZiBwcmltc2VjdGVyLm1vZHVsZSAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2Vlc2VlYWxzby5yb2xlLmF0dHJpYiI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJyb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6UGFydCBvZiBhbiBpbmRleCB0ZXJtIGRpcmVjdGluZyB0aGUgcmVhZGVyIGluc3RlYWQgdG8gYW5vdGhlciBlbnRyeSBpbiB0aGUgaW5kZXguIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlZSI+CiAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPgogICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJuZHh0ZXJtLmNoYXIubWl4Ii8+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZS5hdHRsaXN0Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KICA8IS0tIGVuZCBvZiBzZWUuZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VlLmF0dGxpc3QiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY29tbW9uLmF0dHJpYiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2Vlc2VlYWxzby5yb2xlLmF0dHJpYiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBlbmQgb2Ygc2VlLmF0dGxpc3QgLS0+CiAgPCEtLSBkb2M6UGFydCBvZiBhbiBpbmRleCB0ZXJtIGRpcmVjdGluZyB0aGUgcmVhZGVyIGFsc28gdG8gYW5vdGhlciBlbnRyeSBpbiB0aGUgaW5kZXguIC0tPgogIDx4czplbGVtZW50IG5hbWU9InNlZWFsc28iPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmdyb3VwIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibmR4dGVybS5jaGFyLm1peCIvPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJzZWVhbHNvLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZW5kIG9mIHNlZWFsc28uZWxlbWVudCAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic2VlYWxzby5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InNlZXNlZWFsc28ucm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgo8L3hzOnNjaGVtYT4KPCEtLSBlbmQgb2Ygc2VlYWxzby5hdHRsaXN0IC0tPgo8IS0tIGVuZCBvZiBzZWVzZWVhbHNvLm1vZHVsZSAtLT4KPCEtLSBlbmQgb2YgaW5kZXh0ZXJtLmNvbnRlbnQubW9kdWxlIC0tPgo8IS0tIEVuZCBvZiBEb2NCb29rIFhNTCBpbmZvcm1hdGlvbiBwb29sIG1vZHVsZSBWNC41IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4K</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_5/docbook.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgWE1MIERURCBWNC41IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBkb2Nib29reC5kdGQgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAxOTkyLTIwMDYgSGFMIENvbXB1dGVyIFN5c3RlbXMsIEluYy4sCiAgTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLCBBcmJvclRleHQsIEluYy4sIEZ1aml0c3UgU29mdHdhcmUKICBDb3Jwb3JhdGlvbiwgTm9ybWFuIFdhbHNoLCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuLCBhbmQgdGhlCiAgT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbgogIFN0YW5kYXJkcyAoT0FTSVMpLgogIAogIFNlZSBhbHNvIGh0dHA6Ly9kb2Nib29rLm9yZy9zcGVjcy8KICAKICAkSWQ6IGRvY2Jvb2t4LmR0ZCA2MzQwIDIwMDYtMTAtMDMgMTM6MjM6MjRaIG53YWxzaCAkCiAgCiAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSBhbmQgZGlzdHJpYnV0ZSB0aGUgRG9jQm9vayBYTUwgRFRECiAgYW5kIGl0cyBhY2NvbXBhbnlpbmcgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlCiAgaXMgaGVyZWJ5IGdyYW50ZWQgaW4gcGVycGV0dWl0eSwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0CiAgbm90aWNlIGFuZCB0aGlzIHBhcmFncmFwaCBhcHBlYXIgaW4gYWxsIGNvcGllcy4gIFRoZSBjb3B5cmlnaHQKICBob2xkZXJzIG1ha2Ugbm8gcmVwcmVzZW50YXRpb24gYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoZSBEVEQgZm9yCiAgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzc2VkIG9yIGltcGxpZWQKICB3YXJyYW50eS4KICAKICBJZiB5b3UgbW9kaWZ5IHRoZSBEb2NCb29rIERURCBpbiBhbnkgd2F5LCBleGNlcHQgZm9yIGRlY2xhcmluZyBhbmQKICByZWZlcmVuY2luZyBhZGRpdGlvbmFsIHNldHMgb2YgZ2VuZXJhbCBlbnRpdGllcyBhbmQgZGVjbGFyaW5nCiAgYWRkaXRpb25hbCBub3RhdGlvbnMsIGxhYmVsIHlvdXIgRFREIGFzIGEgdmFyaWFudCBvZiBEb2NCb29rLiAgU2VlCiAgdGhlIG1haW50ZW5hbmNlIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgCiAgUGxlYXNlIGRpcmVjdCBhbGwgcXVlc3Rpb25zLCBidWcgcmVwb3J0cywgb3Igc3VnZ2VzdGlvbnMgZm9yCiAgY2hhbmdlcyB0byB0aGUgZG9jYm9va0BsaXN0cy5vYXNpcy1vcGVuLm9yZyBtYWlsaW5nIGxpc3QuIEZvciBtb3JlCiAgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2svLgotLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tCiAgVGhpcyBpcyB0aGUgZHJpdmVyIGZpbGUgZm9yIFY0LjUgb2YgdGhlIERvY0Jvb2sgRFRELgogIFBsZWFzZSB1c2UgdGhlIGZvbGxvd2luZyBmb3JtYWwgcHVibGljIGlkZW50aWZpZXIgdG8gaWRlbnRpZnkgaXQ6CiAgCiAgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuNS8vRU4iCiAgCiAgRm9yIGV4YW1wbGUsIGlmIHlvdXIgZG9jdW1lbnQncyB0b3AtbGV2ZWwgZWxlbWVudCBpcyBCb29rLCBhbmQKICB5b3UgYXJlIHVzaW5nIERvY0Jvb2sgZGlyZWN0bHksIHVzZSB0aGUgRlBJIGluIHRoZSBET0NUWVBFCiAgZGVjbGFyYXRpb246CiAgCiAgPCFET0NUWVBFIGJvb2sgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjUvL0VOIgogICAgICAgICAgICAgICAgICJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuNS9kb2Nib29reC5kdGQiCiAgICAgICAgICAgICAgICAgWy4uLl0+CiAgCiAgT3IsIGlmIHlvdSBoYXZlIGEgaGlnaGVyLWxldmVsIGRyaXZlciBmaWxlIHRoYXQgY3VzdG9taXplcyBEb2NCb29rLAogIHVzZSB0aGUgRlBJIGluIHRoZSBwYXJhbWV0ZXIgZW50aXR5IGRlY2xhcmF0aW9uOgogIAogIDwhRU5USVRZICUgRG9jQm9va0RURCBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuNS8vRU4iCiAgICAgICAgICAgICAiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjUvZG9jYm9va3guZHRkIj4KICAlRG9jQm9va0RURDsKICAKICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHRoZSBwYXJhbWV0ZXIKICBlbnRpdHkgYW5kIG1vZHVsZSBzY2hlbWUgdXNlZCBpbiBEb2NCb29rLCBjdXN0b21pemluZyBEb2NCb29rIGFuZAogIHBsYW5uaW5nIGZvciBpbnRlcmNoYW5nZSwgYW5kIGNoYW5nZXMgbWFkZSBzaW5jZSB0aGUgbGFzdCByZWxlYXNlCiAgb2YgRG9jQm9vay4KLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSBFbmFibGUgU0dNTCBmZWF0dXJlcyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gTm90YXRpb24gZGVjbGFyYXRpb25zIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4KICA8eHM6aW5jbHVkZSBzY2hlbWFMb2NhdGlvbj0iZGJub3RueC54c2QiLz4KICA8eHM6aW5jbHVkZSBzY2hlbWFMb2NhdGlvbj0iZGJwb29seC54c2QiLz4KICA8eHM6aW5jbHVkZSBzY2hlbWFMb2NhdGlvbj0iZGJoaWVyeC54c2QiLz4KICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiBzY2hlbWFMb2NhdGlvbj0ieG1sLnhzZCIvPgogIDwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIElTTyBjaGFyYWN0ZXIgZW50aXR5IHNldHMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBldXJvIHNpZ24sIFUrMjBBQyBORVcgLS0+CiAgPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgogIDwhLS0gRFREIG1vZHVsZXMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KICA8IS0tIEluZm9ybWF0aW9uIHBvb2wgLi4uLi4uLi4uLi4uLi4gLS0+CiAgPCEtLSBSZWRlY2xhcmF0aW9uIHBsYWNlaG9sZGVyIC4uLi4uIC0tPgogIDwhLS0gRG9jdW1lbnQgaGllcmFyY2h5IC4uLi4uLi4uLi4uLiAtLT4KPC94czpzY2hlbWE+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSBPdGhlciBnZW5lcmFsIGVudGl0aWVzIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIEVuZCBvZiBEb2NCb29rIFhNTCBEVEQgVjQuNSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4K</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_5/htmltblx.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo8IS0tIERvY0Jvb2sgWE1MIEhUTUwgVGFibGUgTW9kdWxlIFY0LjUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0gRmlsZSBodG1sdGJseC5tb2QgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLQogIENvcHlyaWdodCAyMDAzLTIwMDYgQXJib3JUZXh0LCBJbmMuLCBOb3JtYW4gV2Fsc2gsIFN1biBNaWNyb3N5c3RlbXMsCiAgSW5jLiwgYW5kIHRoZSBPcmdhbml6YXRpb24gZm9yIHRoZSBBZHZhbmNlbWVudCBvZiBTdHJ1Y3R1cmVkIEluZm9ybWF0aW9uCiAgU3RhbmRhcmRzIChPQVNJUykuCiAgCiAgJElkOiBodG1sdGJseC5tb2QgNjM0MCAyMDA2LTEwLTAzIDEzOjIzOjI0WiBud2Fsc2ggJAogIAogIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnkgYW5kIGRpc3RyaWJ1dGUgdGhlIERvY0Jvb2sgWE1MIERURAogIGFuZCBpdHMgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZQogIGlzIGhlcmVieSBncmFudGVkIGluIHBlcnBldHVpdHksIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodAogIG5vdGljZSBhbmQgdGhpcyBwYXJhZ3JhcGggYXBwZWFyIGluIGFsbCBjb3BpZXMuICBUaGUgY29weXJpZ2h0CiAgaG9sZGVycyBtYWtlIG5vIHJlcHJlc2VudGF0aW9uIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGUgRFREIGZvcgogIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3NlZCBvciBpbXBsaWVkCiAgd2FycmFudHkuCiAgCiAgSWYgeW91IG1vZGlmeSB0aGUgRG9jQm9vayBYTUwgRFREIGluIGFueSB3YXksIGV4Y2VwdCBmb3IgZGVjbGFyaW5nIGFuZAogIHJlZmVyZW5jaW5nIGFkZGl0aW9uYWwgc2V0cyBvZiBnZW5lcmFsIGVudGl0aWVzIGFuZCBkZWNsYXJpbmcKICBhZGRpdGlvbmFsIG5vdGF0aW9ucywgbGFiZWwgeW91ciBEVEQgYXMgYSB2YXJpYW50IG9mIERvY0Jvb2suICBTZWUKICB0aGUgbWFpbnRlbmFuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAKICBQbGVhc2UgZGlyZWN0IGFsbCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBvciBzdWdnZXN0aW9ucyBmb3IKICBjaGFuZ2VzIHRvIHRoZSBkb2Nib29rQGxpc3RzLm9hc2lzLW9wZW4ub3JnIG1haWxpbmcgbGlzdC4gRm9yIG1vcmUKICBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay8uCi0tPgo8IS0tIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gLS0+CjwhLS0KICBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbnMgZm9yIGVsZW1lbnRzIHRoYXQgYXJlCiAgaXNvbW9ycGhpYyB0byB0aGUgSFRNTCBlbGVtZW50cy4gT25lIGNvdWxkIGFyZ3VlIHdlIHNob3VsZAogIGluc3RlYWQgaGF2ZSBiYXNlZCBvdXJzZWx2ZXMgb24gdGhlIFhIVE1MIFRhYmxlIE1vZHVsZSwgYnV0IHRoZQogIEhUTUwgb25lIGlzIG1vcmUgbGlrZSB3aGF0IGJyb3dzZXJzIGFyZSBsaWtlbHkgdG8gYWNjZXB0IHRvZGF5CiAgYW5kIHVzZXJzIGFyZSBsaWtlbHkgdG8gdXNlLgogIAogIFRoaXMgbW9kdWxlIGhhcyBiZWVuIGRldmVsb3BlZCBmb3IgdXNlIHdpdGggdGhlIERvY0Jvb2sgVjQuNQogICJ1bmlvbiB0YWJsZSBtb2RlbCIgaW4gd2hpY2ggZWxlbWVudHMgYW5kIGF0dGxpc3RzIGNvbW1vbiB0byBib3RoCiAgbW9kZWxzIGFyZSBkZWZpbmVkIChhcyB0aGUgdW5pb24pIGluIHRoZSBDQUxTIHRhYmxlIG1vZHVsZSBieQogIHNldHRpbmcgdmFyaW91cyBwYXJhbWV0ZXIgZW50aXRpZXMgYXBwcm9wcmlhdGVseSBpbiB0aGlzIGZpbGUuCiAgCiAgSW4gRFREIGRyaXZlciBmaWxlcyByZWZlcnJpbmcgdG8gdGhpcyBtb2R1bGUsIHBsZWFzZSB1c2UgYW4gZW50aXR5CiAgZGVjbGFyYXRpb24gdGhhdCB1c2VzIHRoZSBwdWJsaWMgaWRlbnRpZmllciBzaG93biBiZWxvdzoKICAKICA8IUVOVElUWSAlIGh0bWx0YmwgUFVCTElDCiAgIi0vL09BU0lTLy9FTEVNRU5UUyBEb2NCb29rIFhNTCBIVE1MIFRhYmxlcyBWNC41Ly9FTiIKICAiaHRtbHRibHgubW9kIj4KICAlaHRtbHRibDsKICAKICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHRoZSBwYXJhbWV0ZXIKICBlbnRpdHkgYW5kIG1vZHVsZSBzY2hlbWUgdXNlZCBpbiBEb2NCb29rLCBjdXN0b21pemluZyBEb2NCb29rIGFuZAogIHBsYW5uaW5nIGZvciBpbnRlcmNoYW5nZSwgYW5kIGNoYW5nZXMgbWFkZSBzaW5jZSB0aGUgbGFzdCByZWxlYXNlCiAgb2YgRG9jQm9vay4KLS0+CjwhLS0gPT09PT09PT09PT09PT09PT09PT09PT0gWEhUTUwgVGFibGVzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4KICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiBzY2hlbWFMb2NhdGlvbj0ieG1sLnhzZCIvPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJodG1sLmNvcmVhdHRycyI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb21tb24uYXR0cmliIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpdGxlIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tIERvZXMgbm90IGNvbnRhaW4gbGFuZyBvciBkaXIgYmVjYXVzZSB0aGV5IGFyZSBpbiAlY29tbW9uLmF0dHJpYnMgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImkxOG4iPgogICAgPHhzOmF0dHJpYnV0ZSByZWY9InhtbDpsYW5nIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXZlbnRzIj4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25jbGljayIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmRibGNsaWNrIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ubW91c2Vkb3duIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ubW91c2V1cCIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm1vdXNlb3ZlciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm1vdXNlbW92ZSIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm1vdXNlb3V0Ii8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ua2V5cHJlc3MiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25rZXlkb3duIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ua2V5dXAiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJhdHRycyI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJodG1sLmNvcmVhdHRycyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iaTE4biIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iZXZlbnRzIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2VsbGhhbGlnbiI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGVmdCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjZW50ZXIiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ianVzdGlmeSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjaGFyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhcm9mZiIvPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImNlbGx2YWxpZ24iPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgogICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b3AiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJiYXNlbGluZSIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogIDwveHM6YXR0cmlidXRlR3JvdXA+CiAgPCEtLSBkb2M6QSBncm91cCBvZiBjb2x1bW5zIGluIGFuIEhUTUwgdGFibGUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9ImNvbGdyb3VwIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbGdyb3VwLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDwhLS0gZG9jOlNwZWNpZmljYXRpb25zIGZvciBhIGNvbHVtbiBpbiBhbiBIVE1MIHRhYmxlLiAtLT4KICA8eHM6ZWxlbWVudCBuYW1lPSJjb2wiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjb2wuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBkb2M6QSByb3cgaW4gYW4gSFRNTCB0YWJsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idHIiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRoIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0ZCIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idHIuYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBkb2M6QSB0YWJsZSBoZWFkZXIgZW50cnkgaW4gYW4gSFRNTCB0YWJsZS4gLS0+CiAgPHhzOmVsZW1lbnQgbmFtZT0idGgiPgogICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4KICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICA8eHM6Z3JvdXAgcmVmPSJwYXJhLmNoYXIubWl4Ii8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0idGFiZW50cnkubWl4Ii8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0YWJsZSIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0iaW5mb3JtYWx0YWJsZSIvPgogICAgICA8L3hzOmNob2ljZT4KICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGguYXR0bGlzdCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CiAgPCEtLSBkb2M6QSB0YWJsZSBudHJ5IGluIGFuIEhUTUwgdGFibGUuIC0tPgogIDx4czplbGVtZW50IG5hbWU9InRkIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0icGFyYS5jaGFyLm1peCIvPgogICAgICAgIDx4czpncm91cCByZWY9InRhYmVudHJ5Lm1peCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idGFibGUiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImluZm9ybWFsdGFibGUiLz4KICAgICAgPC94czpjaG9pY2U+CiAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9InRkLmF0dGxpc3QiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2xncm91cC5hdHRsaXN0Ij4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImF0dHJzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYW4iIGRlZmF1bHQ9IjEiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNlbGxoYWxpZ24iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNlbGx2YWxpZ24iLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJjb2wuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdHRycyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFuIiBkZWZhdWx0PSIxIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjZWxsaGFsaWduIi8+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJjZWxsdmFsaWduIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idHIuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdHRycyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2VsbGhhbGlnbiIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iY2VsbHZhbGlnbiIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiZ2NvbG9yIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGguYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdHRycyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhYmJyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImF4aXMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaGVhZGVycyIgdHlwZT0ieHM6SURSRUZTIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjb3BlIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icm93Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyb3dncm91cCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb2xncm91cCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzcGFuIiBkZWZhdWx0PSIxIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHNwYW4iIGRlZmF1bHQ9IjEiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNlbGxoYWxpZ24iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNlbGx2YWxpZ24iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibm93cmFwIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm93cmFwIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJnY29sb3IiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0Ii8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGQuYXR0bGlzdCI+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJhdHRycyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhYmJyIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImF4aXMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaGVhZGVycyIgdHlwZT0ieHM6SURSRUZTIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjb3BlIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icm93Ii8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNvbCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJyb3dncm91cCIvPgogICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb2xncm91cCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzcGFuIiBkZWZhdWx0PSIxIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHNwYW4iIGRlZmF1bHQ9IjEiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNlbGxoYWxpZ24iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNlbGx2YWxpZ24iLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibm93cmFwIj4KICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm93cmFwIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJnY29sb3IiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lkdGgiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0Ii8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KICA8IS0tCiAgICBTZXQgdXAgdG8gcmVhZCBpbiB0aGUgQ0FMUyBtb2RlbCBjb25maWd1cmVkIHRvCiAgICBtZXJnZSB3aXRoIHRoZSBYSFRNTCB0YWJsZSBtb2RlbAogIC0tPgogIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgogIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ0YWJsZXMucm9sZS5hdHRyaWIiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0icm9sZS5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gQWRkIGxhYmVsIGFuZCByb2xlIGF0dHJpYnV0ZXMgdG8gdGFibGUgYW5kIGluZm9ybWFsdGFibGUgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImJvZHlhdHQiPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmbG9hdHN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd2hlYWRlciI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImZpcnN0Y29sIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vcm93aGVhZGVyIi8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJsYWJlbC5hdHRyaWIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0KICAgIEFkZCBjb21tb24gYXR0cmlidXRlcyB0byBUYWJsZSwgVEdyb3VwLCBUQm9keSwgVEhlYWQsIFRGb290LCBSb3csIAogICAgRW50cnlUYmwsIGFuZCBFbnRyeSAoYW5kIEluZm9ybWFsVGFibGUgZWxlbWVudCkuCiAgLS0+CiAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InNlY3VyIj4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImNvbW1vbi5hdHRyaWIiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3R5bGUiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGl0bGUiLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImkxOG4iLz4KICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9ImV2ZW50cyIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0idGFibGVzLnJvbGUuYXR0cmliIi8+CiAgPC94czphdHRyaWJ1dGVHcm91cD4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY29tbW9uLnRhYmxlLmF0dHJpYnMiPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0iYm9keWF0dCIvPgogICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ic2VjdXIiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDwhLS0gQ29udGVudCBtb2RlbCBmb3IgVGFibGUgKHRoYXQgYWxzbyBhbGxvd3MgSFRNTCB0YWJsZXMpIC0tPgogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0YmwudGFibGUubWRsIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIHJlZj0iYmxvY2tpbmZvIi8+CiAgICAgICAgPHhzOmdyb3VwIHJlZj0iZm9ybWFsb2JqZWN0LnRpdGxlLmNvbnRlbnQiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im5keHRlcm0uY2xhc3MiLz4KICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRleHRvYmplY3QiLz4KICAgICAgICA8eHM6Y2hvaWNlPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iZ3JhcGhpYyIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVkaWFvYmplY3QiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRncm91cCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjYXB0aW9uIi8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbGdyb3VwIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRoZWFkIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9InRmb290Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRib2R5Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0ciIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgPC94czpjaG9pY2U+CiAgPC94czpjb21wbGV4VHlwZT4KICA8eHM6Z3JvdXAgbmFtZT0iaW5mb3JtYWwudGJsLnRhYmxlLm1kbCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0ZXh0b2JqZWN0Ii8+CiAgICAgICAgPHhzOmNob2ljZT4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImdyYXBoaWMiLz4KICAgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1lZGlhb2JqZWN0Ii8+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0Z3JvdXAiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImNvbCIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb2xncm91cCIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0aGVhZCIvPgogICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgcmVmPSJ0Zm9vdCIvPgogICAgICAgIDx4czpjaG9pY2U+CiAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0Ym9keSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idHIiLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgIDwveHM6Y2hvaWNlPgogIDwveHM6Z3JvdXA+CiAgPCEtLSBBdHRyaWJ1dGVzIGZvciBUYWJsZSAoaW5jbHVkaW5nIEhUTUwgb25lcykgLS0+CiAgPCEtLSBOLkIuIHJ1bGVzID0gKG5vbmUgfCBncm91cHMgfCByb3dzIHwgY29scyB8IGFsbCkgYnV0IGl0IGNhbid0IGJlIHNwZWMnZCAtLT4KICA8IS0tIHRoYXQgd2F5IGJlY2F1c2UgJ2FsbCcgYWxyZWFkeSBvY2N1cnMgaW4gYSBkaWZmZXJlbnQgZW51bWVyYXRpb24gaW4gLS0+CiAgPCEtLSBDQUxTIHRhYmxlcyAoZnJhbWUpLiAtLT4KICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGJsLnRhYmxlLmF0dCI+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRhYnN0eWxlIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRvY2VudHJ5IiB0eXBlPSJ5ZXNvcm5vLmF0dHZhbHMiLz4KICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hvcnRlbnRyeSIgdHlwZT0ieWVzb3Juby5hdHR2YWxzIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9yaWVudCI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBvcnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGFuZCIvPgogICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6YXR0cmlidXRlPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZ3dpZGUiIHR5cGU9Inllc29ybm8uYXR0dmFscyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdW1tYXJ5Ii8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoIi8+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlciIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJydWxlcyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjZWxsc3BhY2luZyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjZWxscGFkZGluZyIvPgogICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbiI+CiAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4KICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iY2VudGVyIi8+CiAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJpZ2h0Ii8+CiAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czphdHRyaWJ1dGU+CiAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJnY29sb3IiLz4KICA8L3hzOmF0dHJpYnV0ZUdyb3VwPgogIDx4czpzaW1wbGVUeXBlIG5hbWU9InRibC5mcmFtZS5hdHR2YWwiPgogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ2b2lkIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYWJvdmUiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJiZWxvdyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImhzaWRlcyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxocyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJocyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InZzaWRlcyIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJveCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvcmRlciIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvdHRvbSIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcGJvdCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImFsbCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNpZGVzIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm9uZSIvPgogICAgPC94czpyZXN0cmljdGlvbj4KICA8L3hzOnNpbXBsZVR5cGU+CiAgPCEtLSBBbGxvdyBlaXRoZXIgb2JqZWN0cyBvciBpbmxpbmVzOyBiZXdhcmUgb2YgUkVzIGJldHdlZW4gZWxlbWVudHMuIC0tPgogIDx4czpncm91cCBuYW1lPSJ0YmwuZW50cnkubWRsIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czpncm91cCByZWY9InBhcmEuY2hhci5taXgiLz4KICAgICAgPHhzOmdyb3VwIHJlZj0idGFiZW50cnkubWl4Ii8+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmdyb3VwPgogIDwhLS0KICAgIHRoZWFkLCB0Zm9vdCwgYW5kIHRib2R5IGFyZSBkZWZpbmVkIGluIGJvdGggdGFibGUgbW9kZWxzLAogICAgc28gd2Ugc2V0IHVwIHBhcmFtZXRlciBlbnRpdGllcyB0byBkZWZpbmUgdW5pb24gbW9kZWxzIGZvciB0aGVtCiAgLS0+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRibC5oZGZ0Lm1kbCI+CiAgICA8eHM6Y2hvaWNlPgogICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0ciIvPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJjb2xzcGVjIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icm93Ii8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICA8L3hzOmNob2ljZT4KICA8L3hzOmNvbXBsZXhUeXBlPgogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0YmwudGJvZHkubWRsIj4KICAgIDx4czpjaG9pY2U+CiAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRyIi8+CiAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJvdyIvPgogICAgPC94czpjaG9pY2U+CiAgPC94czpjb21wbGV4VHlwZT4KPC94czpzY2hlbWE+CjwhLS0gRW5kIG9mIERvY0Jvb2sgWE1MIEhUTUwgVGFibGUgTW9kdWxlIFY0LjUgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAtLT4KPCEtLSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIC0tPgo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/Docbook/4_5/xml.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSI+CiAgPHhzOmltcG9ydCBzY2hlbWFMb2NhdGlvbj0iZG9jYm9vay54c2QiLz4KICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhc2UiLz4KICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYWNlIj4KICAgIDx4czpzaW1wbGVUeXBlPgogICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgogICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icHJlc2VydmUiLz4KICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgIDwveHM6c2ltcGxlVHlwZT4KICA8L3hzOmF0dHJpYnV0ZT4KICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhbmciIHR5cGU9InhzOk5NVE9LRU4iLz4KPC94czpzY2hlbWE+Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/WADL/wadl.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiCiAgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vd2FkbC5kZXYuamF2YS5uZXQvMjAwOS8wMiIKICB4bWxuczp0bnM9Imh0dHA6Ly93YWRsLmRldi5qYXZhLm5ldC8yMDA5LzAyIgogIHhtbG5zOnhtbD0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIgogIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4KCjwhLS0KUmVtb3ZlZCBCeSBPVE9CTzoKICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIgogICAgc2NoZW1hTG9jYXRpb249Imh0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLnhzZCIvPgotLT4KPCEtLSBBZGRlZCBCeSBPVE9CTzoKVG8gYmUgYWJsZSB0byBsb2NhbCB2YWxpZGF0ZQotLT4KPHhzOmltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIgc2NoZW1hTG9jYXRpb249InhtbC54c2QiLz4KCiAgPHhzOmVsZW1lbnQgbmFtZT0iYXBwbGljYXRpb24iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0bnM6ZG9jIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0bnM6Z3JhbW1hcnMiIG1pbk9jY3Vycz0iMCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOnJlc291cmNlcyIgbWluT2NjdXJzPSIwIgogICAgICAgICAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0bnM6cmVzb3VyY2VfdHlwZSIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0bnM6bWV0aG9kIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRuczpyZXByZXNlbnRhdGlvbiIvPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0bnM6cGFyYW0iLz4KICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICA8eHM6YW55IG5hbWVzcGFjZT0iIyNvdGhlciIgcHJvY2Vzc0NvbnRlbnRzPSJsYXgiIG1pbk9jY3Vycz0iMCIKICAgICAgICAgIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KCiAgPHhzOmVsZW1lbnQgbmFtZT0iZG9jIj4KICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6YW55IG5hbWVzcGFjZT0iIyNvdGhlciIgcHJvY2Vzc0NvbnRlbnRzPSJsYXgiIG1pbk9jY3Vycz0iMCIKICAgICAgICAgIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGl0bGUiIHR5cGU9InhzOnN0cmluZyIvPgogICAgICA8eHM6YXR0cmlidXRlIHJlZj0ieG1sOmxhbmciLz4KICAgICAgPHhzOmFueUF0dHJpYnV0ZSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KCiAgPHhzOmVsZW1lbnQgbmFtZT0iZ3JhbW1hcnMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0bnM6ZG9jIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJ0bnM6aW5jbHVkZSIvPgogICAgICAgIDx4czphbnkgbmFtZXNwYWNlPSIjI290aGVyIiBwcm9jZXNzQ29udGVudHM9ImxheCIgbWluT2NjdXJzPSIwIgogICAgICAgICAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgoKICA8eHM6ZWxlbWVudCBuYW1lPSJyZXNvdXJjZXMiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0bnM6ZG9jIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0bnM6cmVzb3VyY2UiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CiAgICAgICAgPHhzOmFueSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4IiBtaW5PY2N1cnM9IjAiCiAgICAgICAgICBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhc2UiIHR5cGU9InhzOmFueVVSSSIvPgogICAgICA8eHM6YW55QXR0cmlidXRlIG5hbWVzcGFjZT0iIyNvdGhlciIgcHJvY2Vzc0NvbnRlbnRzPSJsYXgiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgoKICA8eHM6ZWxlbWVudCBuYW1lPSJyZXNvdXJjZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRuczpkb2MiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRuczpwYXJhbSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRuczptZXRob2QiLz4KICAgICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOnJlc291cmNlIi8+CiAgICAgICAgPC94czpjaG9pY2U+CiAgICAgICAgPHhzOmFueSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuYW1lc3BhY2U9IiMjb3RoZXIiCiAgICAgICAgICBwcm9jZXNzQ29udGVudHM9ImxheCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJ4czpJRCIvPgogICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiIHR5cGU9InRuczpyZXNvdXJjZV90eXBlX2xpc3QiLz4KICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJxdWVyeVR5cGUiIHR5cGU9InhzOnN0cmluZyIKICAgICAgICBkZWZhdWx0PSJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLz4KICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYXRoIiB0eXBlPSJ4czpzdHJpbmciLz4KICAgICAgPHhzOmFueUF0dHJpYnV0ZSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KCiAgPHhzOnNpbXBsZVR5cGUgbmFtZT0icmVzb3VyY2VfdHlwZV9saXN0Ij4KICAgIDx4czpsaXN0IGl0ZW1UeXBlPSJ4czphbnlVUkkiLz4KICA8L3hzOnNpbXBsZVR5cGU+CgogIDx4czplbGVtZW50IG5hbWU9InJlc291cmNlX3R5cGUiPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0bnM6ZG9jIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0bnM6cGFyYW0iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KICAgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPgogICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0bnM6bWV0aG9kIi8+CiAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRuczpyZXNvdXJjZSIvPgogICAgICAgIDwveHM6Y2hvaWNlPgogICAgICAgIDx4czphbnkgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmFtZXNwYWNlPSIjI290aGVyIgogICAgICAgICAgcHJvY2Vzc0NvbnRlbnRzPSJsYXgiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ieHM6SUQiLz4KICAgICAgPHhzOmFueUF0dHJpYnV0ZSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KCiAgPHhzOmVsZW1lbnQgbmFtZT0ibWV0aG9kIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOmRvYyIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOnJlcXVlc3QiIG1pbk9jY3Vycz0iMCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOnJlc3BvbnNlIiBtaW5PY2N1cnM9IjAiCiAgICAgICAgICBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICAgIDx4czphbnkgbmFtZXNwYWNlPSIjI290aGVyIiBwcm9jZXNzQ29udGVudHM9ImxheCIgbWluT2NjdXJzPSIwIgogICAgICAgICAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ieHM6SUQiLz4KICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ0bnM6TWV0aG9kIi8+CiAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaHJlZiIgdHlwZT0ieHM6YW55VVJJIi8+CiAgICAgIDx4czphbnlBdHRyaWJ1dGUgbmFtZXNwYWNlPSIjI290aGVyIiBwcm9jZXNzQ29udGVudHM9ImxheCIvPgogICAgPC94czpjb21wbGV4VHlwZT4KICA8L3hzOmVsZW1lbnQ+CgogIDx4czpzaW1wbGVUeXBlIG5hbWU9Ik1ldGhvZCI+CiAgICA8eHM6dW5pb24gbWVtYmVyVHlwZXM9InRuczpIVFRQTWV0aG9kcyB4czpOTVRPS0VOIi8+CiAgPC94czpzaW1wbGVUeXBlPgoKICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJIVFRQTWV0aG9kcyI+CiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6Tk1UT0tFTiI+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iR0VUIi8+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUE9TVCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBVVCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkhFQUQiLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJERUxFVEUiLz4KICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgPC94czpzaW1wbGVUeXBlPgoKICA8eHM6ZWxlbWVudCBuYW1lPSJpbmNsdWRlIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOmRvYyIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhyZWYiIHR5cGU9InhzOmFueVVSSSIvPgogICAgICA8eHM6YW55QXR0cmlidXRlIG5hbWVzcGFjZT0iIyNvdGhlciIgcHJvY2Vzc0NvbnRlbnRzPSJsYXgiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgoKICA8eHM6ZWxlbWVudCBuYW1lPSJyZXF1ZXN0Ij4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOmRvYyIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOnBhcmFtIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0bnM6cmVwcmVzZW50YXRpb24iIG1pbk9jY3Vycz0iMCIKICAgICAgICAgIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CiAgICAgICAgPHhzOmFueSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4IiBtaW5PY2N1cnM9IjAiCiAgICAgICAgICBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YW55QXR0cmlidXRlIG5hbWVzcGFjZT0iIyNvdGhlciIgcHJvY2Vzc0NvbnRlbnRzPSJsYXgiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgoKICA8eHM6ZWxlbWVudCBuYW1lPSJyZXNwb25zZSI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRuczpkb2MiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRuczpwYXJhbSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOnJlcHJlc2VudGF0aW9uIiBtaW5PY2N1cnM9IjAiCiAgICAgICAgICBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICAgIDx4czphbnkgbmFtZXNwYWNlPSIjI290aGVyIiBwcm9jZXNzQ29udGVudHM9ImxheCIgbWluT2NjdXJzPSIwIgogICAgICAgICAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGF0dXMiIHR5cGU9InRuczpzdGF0dXNDb2RlTGlzdCIvPgogICAgICA8eHM6YW55QXR0cmlidXRlIG5hbWVzcGFjZT0iIyNvdGhlciIgcHJvY2Vzc0NvbnRlbnRzPSJsYXgiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgoKICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJ1cmlMaXN0Ij4KICAgIDx4czpsaXN0IGl0ZW1UeXBlPSJ4czphbnlVUkkiLz4KICA8L3hzOnNpbXBsZVR5cGU+CgogIDx4czplbGVtZW50IG5hbWU9InJlcHJlc2VudGF0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOmRvYyIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOnBhcmFtIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CiAgICAgICAgPHhzOmFueSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4IiBtaW5PY2N1cnM9IjAiCiAgICAgICAgICBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJ4czpJRCIvPgogICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVsZW1lbnQiIHR5cGU9InhzOlFOYW1lIi8+CiAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWVkaWFUeXBlIiB0eXBlPSJ4czpzdHJpbmciLz4KICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJocmVmIiB0eXBlPSJ4czphbnlVUkkiLz4KICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwcm9maWxlIiB0eXBlPSJ0bnM6dXJpTGlzdCIvPgogICAgICA8eHM6YW55QXR0cmlidXRlIG5hbWVzcGFjZT0iIyNvdGhlciIgcHJvY2Vzc0NvbnRlbnRzPSJsYXgiLz4KICAgIDwveHM6Y29tcGxleFR5cGU+CiAgPC94czplbGVtZW50PgoKICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJzdGF0dXNDb2RlTGlzdCI+CiAgICA8eHM6bGlzdCBpdGVtVHlwZT0ieHM6dW5zaWduZWRJbnQiLz4KICA8L3hzOnNpbXBsZVR5cGU+CgogIDx4czpzaW1wbGVUeXBlIG5hbWU9IlBhcmFtU3R5bGUiPgogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icGxhaW4iLz4KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJxdWVyeSIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im1hdHJpeCIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImhlYWRlciIvPgogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRlbXBsYXRlIi8+CiAgICA8L3hzOnJlc3RyaWN0aW9uPgogIDwveHM6c2ltcGxlVHlwZT4KCiAgPHhzOmVsZW1lbnQgbmFtZT0icGFyYW0iPgogICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICA8eHM6c2VxdWVuY2U+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0bnM6ZG9jIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0bnM6b3B0aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CiAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ0bnM6bGluayIgbWluT2NjdXJzPSIwIi8+CiAgICAgICAgPHhzOmFueSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4IiBtaW5PY2N1cnM9IjAiCiAgICAgICAgICBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICA8L3hzOnNlcXVlbmNlPgogICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhyZWYiIHR5cGU9InhzOmFueVVSSSIvPgogICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOk5NVE9LRU4iLz4KICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdHlsZSIgdHlwZT0idG5zOlBhcmFtU3R5bGUiLz4KICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ieHM6SUQiLz4KICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIiB0eXBlPSJ4czpRTmFtZSIgZGVmYXVsdD0ieHM6c3RyaW5nIi8+CiAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVmYXVsdCIgdHlwZT0ieHM6c3RyaW5nIi8+CiAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVxdWlyZWQiIHR5cGU9InhzOmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIi8+CiAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVwZWF0aW5nIiB0eXBlPSJ4czpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIvPgogICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZpeGVkIiB0eXBlPSJ4czpzdHJpbmciLz4KICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYXRoIiB0eXBlPSJ4czpzdHJpbmciLz4KICAgICAgPHhzOmFueUF0dHJpYnV0ZSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KCiAgPHhzOmVsZW1lbnQgbmFtZT0ib3B0aW9uIj4KICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgIDx4czplbGVtZW50IHJlZj0idG5zOmRvYyIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPgogICAgICAgIDx4czphbnkgbmFtZXNwYWNlPSIjI290aGVyIiBwcm9jZXNzQ29udGVudHM9ImxheCIgbWluT2NjdXJzPSIwIgogICAgICAgICAgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWx1ZSIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9InJlcXVpcmVkIi8+CiAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWVkaWFUeXBlIiB0eXBlPSJ4czpzdHJpbmciLz4KICAgICAgPHhzOmFueUF0dHJpYnV0ZSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KCiAgPHhzOmVsZW1lbnQgbmFtZT0ibGluayI+CiAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRuczpkb2MiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KICAgICAgICA8eHM6YW55IG5hbWVzcGFjZT0iIyNvdGhlciIgcHJvY2Vzc0NvbnRlbnRzPSJsYXgiIG1pbk9jY3Vycz0iMCIKICAgICAgICAgIG1heE9jY3Vycz0idW5ib3VuZGVkIi8+CiAgICAgIDwveHM6c2VxdWVuY2U+CiAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVzb3VyY2VfdHlwZSIgdHlwZT0ieHM6YW55VVJJIi8+CiAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJldiIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgPHhzOmFueUF0dHJpYnV0ZSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4Ii8+CiAgICA8L3hzOmNvbXBsZXhUeXBlPgogIDwveHM6ZWxlbWVudD4KCjwveHM6c2NoZW1hPgo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/WADL/xml.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0nMS4wJz8+CjwhRE9DVFlQRSB4czpzY2hlbWEgUFVCTElDICItLy9XM0MvL0RURCBYTUxTQ0hFTUEgMjAwMTAyLy9FTiIgIlhNTFNjaGVtYS5kdGQiID4KPHhzOnNjaGVtYSB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiB4bWw6bGFuZz0iZW4iPgoKIDx4czphbm5vdGF0aW9uPgogIDx4czpkb2N1bWVudGF0aW9uPgogICBTZWUgaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlLmh0bWwgYW5kCiAgIGh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwgZm9yIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgbmFtZXNwYWNlLgoKICAgIFRoaXMgc2NoZW1hIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgWE1MIG5hbWVzcGFjZSwgaW4gYSBmb3JtCiAgICBzdWl0YWJsZSBmb3IgaW1wb3J0IGJ5IG90aGVyIHNjaGVtYSBkb2N1bWVudHMuICAKCiAgICBOb3RlIHRoYXQgbG9jYWwgbmFtZXMgaW4gdGhpcyBuYW1lc3BhY2UgYXJlIGludGVuZGVkIHRvIGJlIGRlZmluZWQKICAgIG9ubHkgYnkgdGhlIFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0gb3IgaXRzIHN1Ymdyb3Vwcy4gIFRoZQogICAgZm9sbG93aW5nIG5hbWVzIGFyZSBjdXJyZW50bHkgZGVmaW5lZCBpbiB0aGlzIG5hbWVzcGFjZSBhbmQgc2hvdWxkCiAgICBub3QgYmUgdXNlZCB3aXRoIGNvbmZsaWN0aW5nIHNlbWFudGljcyBieSBhbnkgV29ya2luZyBHcm91cCwKICAgIHNwZWNpZmljYXRpb24sIG9yIGRvY3VtZW50IGluc3RhbmNlOgoKICAgIGJhc2UgKGFzIGFuIGF0dHJpYnV0ZSBuYW1lKTogZGVub3RlcyBhbiBhdHRyaWJ1dGUgd2hvc2UgdmFsdWUKICAgICAgICAgcHJvdmlkZXMgYSBVUkkgdG8gYmUgdXNlZCBhcyB0aGUgYmFzZSBmb3IgaW50ZXJwcmV0aW5nIGFueQogICAgICAgICByZWxhdGl2ZSBVUklzIGluIHRoZSBzY29wZSBvZiB0aGUgZWxlbWVudCBvbiB3aGljaCBpdAogICAgICAgICBhcHBlYXJzOyBpdHMgdmFsdWUgaXMgaW5oZXJpdGVkLiAgVGhpcyBuYW1lIGlzIHJlc2VydmVkCiAgICAgICAgIGJ5IHZpcnR1ZSBvZiBpdHMgZGVmaW5pdGlvbiBpbiB0aGUgWE1MIEJhc2Ugc3BlY2lmaWNhdGlvbi4KCiAgICBsYW5nIChhcyBhbiBhdHRyaWJ1dGUgbmFtZSk6IGRlbm90ZXMgYW4gYXR0cmlidXRlIHdob3NlIHZhbHVlCiAgICAgICAgIGlzIGEgbGFuZ3VhZ2UgY29kZSBmb3IgdGhlIG5hdHVyYWwgbGFuZ3VhZ2Ugb2YgdGhlIGNvbnRlbnQgb2YKICAgICAgICAgYW55IGVsZW1lbnQ7IGl0cyB2YWx1ZSBpcyBpbmhlcml0ZWQuICBUaGlzIG5hbWUgaXMgcmVzZXJ2ZWQKICAgICAgICAgYnkgdmlydHVlIG9mIGl0cyBkZWZpbml0aW9uIGluIHRoZSBYTUwgc3BlY2lmaWNhdGlvbi4KICAKICAgIHNwYWNlIChhcyBhbiBhdHRyaWJ1dGUgbmFtZSk6IGRlbm90ZXMgYW4gYXR0cmlidXRlIHdob3NlCiAgICAgICAgIHZhbHVlIGlzIGEga2V5d29yZCBpbmRpY2F0aW5nIHdoYXQgd2hpdGVzcGFjZSBwcm9jZXNzaW5nCiAgICAgICAgIGRpc2NpcGxpbmUgaXMgaW50ZW5kZWQgZm9yIHRoZSBjb250ZW50IG9mIHRoZSBlbGVtZW50OyBpdHMKICAgICAgICAgdmFsdWUgaXMgaW5oZXJpdGVkLiAgVGhpcyBuYW1lIGlzIHJlc2VydmVkIGJ5IHZpcnR1ZSBvZiBpdHMKICAgICAgICAgZGVmaW5pdGlvbiBpbiB0aGUgWE1MIHNwZWNpZmljYXRpb24uCgogICAgRmF0aGVyIChpbiBhbnkgY29udGV4dCBhdCBhbGwpOiBkZW5vdGVzIEpvbiBCb3NhaywgdGhlIGNoYWlyIG9mIAogICAgICAgICB0aGUgb3JpZ2luYWwgWE1MIFdvcmtpbmcgR3JvdXAuICBUaGlzIG5hbWUgaXMgcmVzZXJ2ZWQgYnkgCiAgICAgICAgIHRoZSBmb2xsb3dpbmcgZGVjaXNpb24gb2YgdGhlIFczQyBYTUwgUGxlbmFyeSBhbmQgCiAgICAgICAgIFhNTCBDb29yZGluYXRpb24gZ3JvdXBzOgoKICAgICAgICAgICAgIEluIGFwcHJlY2lhdGlvbiBmb3IgaGlzIHZpc2lvbiwgbGVhZGVyc2hpcCBhbmQgZGVkaWNhdGlvbgogICAgICAgICAgICAgdGhlIFczQyBYTUwgUGxlbmFyeSBvbiB0aGlzIDEwdGggZGF5IG9mIEZlYnJ1YXJ5LCAyMDAwCiAgICAgICAgICAgICByZXNlcnZlcyBmb3IgSm9uIEJvc2FrIGluIHBlcnBldHVpdHkgdGhlIFhNTCBuYW1lCiAgICAgICAgICAgICB4bWw6RmF0aGVyCiAgPC94czpkb2N1bWVudGF0aW9uPgogPC94czphbm5vdGF0aW9uPgoKIDx4czphbm5vdGF0aW9uPgogIDx4czpkb2N1bWVudGF0aW9uPlRoaXMgc2NoZW1hIGRlZmluZXMgYXR0cmlidXRlcyBhbmQgYW4gYXR0cmlidXRlIGdyb3VwCiAgICAgICAgc3VpdGFibGUgZm9yIHVzZSBieQogICAgICAgIHNjaGVtYXMgd2lzaGluZyB0byBhbGxvdyB4bWw6YmFzZSwgeG1sOmxhbmcgb3IgeG1sOnNwYWNlIGF0dHJpYnV0ZXMKICAgICAgICBvbiBlbGVtZW50cyB0aGV5IGRlZmluZS4KCiAgICAgICAgVG8gZW5hYmxlIHRoaXMsIHN1Y2ggYSBzY2hlbWEgbXVzdCBpbXBvcnQgdGhpcyBzY2hlbWEKICAgICAgICBmb3IgdGhlIFhNTCBuYW1lc3BhY2UsIGUuZy4gYXMgZm9sbG93czoKICAgICAgICAmbHQ7c2NoZW1hIC4gLiAuPgogICAgICAgICAuIC4gLgogICAgICAgICAmbHQ7aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIgogICAgICAgICAgICAgICAgICAgIHNjaGVtYUxvY2F0aW9uPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzAzL3htbC54c2QiLz4KCiAgICAgICAgU3Vic2VxdWVudGx5LCBxdWFsaWZpZWQgcmVmZXJlbmNlIHRvIGFueSBvZiB0aGUgYXR0cmlidXRlcwogICAgICAgIG9yIHRoZSBncm91cCBkZWZpbmVkIGJlbG93IHdpbGwgaGF2ZSB0aGUgZGVzaXJlZCBlZmZlY3QsIGUuZy4KCiAgICAgICAgJmx0O3R5cGUgLiAuIC4+CiAgICAgICAgIC4gLiAuCiAgICAgICAgICZsdDthdHRyaWJ1dGVHcm91cCByZWY9InhtbDpzcGVjaWFsQXR0cnMiLz4KIAogICAgICAgICB3aWxsIGRlZmluZSBhIHR5cGUgd2hpY2ggd2lsbCBzY2hlbWEtdmFsaWRhdGUgYW4gaW5zdGFuY2UKICAgICAgICAgZWxlbWVudCB3aXRoIGFueSBvZiB0aG9zZSBhdHRyaWJ1dGVzPC94czpkb2N1bWVudGF0aW9uPgogPC94czphbm5vdGF0aW9uPgoKIDx4czphbm5vdGF0aW9uPgogIDx4czpkb2N1bWVudGF0aW9uPkluIGtlZXBpbmcgd2l0aCB0aGUgWE1MIFNjaGVtYSBXRydzIHN0YW5kYXJkIHZlcnNpb25pbmcKICAgcG9saWN5LCB0aGlzIHNjaGVtYSBkb2N1bWVudCB3aWxsIHBlcnNpc3QgYXQKICAgaHR0cDovL3d3dy53My5vcmcvMjAwMS8wMy94bWwueHNkLgogICBBdCB0aGUgZGF0ZSBvZiBpc3N1ZSBpdCBjYW4gYWxzbyBiZSBmb3VuZCBhdAogICBodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC54c2QuCiAgIFRoZSBzY2hlbWEgZG9jdW1lbnQgYXQgdGhhdCBVUkkgbWF5IGhvd2V2ZXIgY2hhbmdlIGluIHRoZSBmdXR1cmUsCiAgIGluIG9yZGVyIHRvIHJlbWFpbiBjb21wYXRpYmxlIHdpdGggdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFhNTCBTY2hlbWEKICAgaXRzZWxmLiAgSW4gb3RoZXIgd29yZHMsIGlmIHRoZSBYTUwgU2NoZW1hIG5hbWVzcGFjZSBjaGFuZ2VzLCB0aGUgdmVyc2lvbgogICBvZiB0aGlzIGRvY3VtZW50IGF0CiAgIGh0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLnhzZCB3aWxsIGNoYW5nZQogICBhY2NvcmRpbmdseTsgdGhlIHZlcnNpb24gYXQKICAgaHR0cDovL3d3dy53My5vcmcvMjAwMS8wMy94bWwueHNkIHdpbGwgbm90IGNoYW5nZS4KICA8L3hzOmRvY3VtZW50YXRpb24+CiA8L3hzOmFubm90YXRpb24+CgogPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYW5nIiB0eXBlPSJ4czpsYW5ndWFnZSI+CiAgPHhzOmFubm90YXRpb24+CiAgIDx4czpkb2N1bWVudGF0aW9uPkluIGR1ZSBjb3Vyc2UsIHdlIHNob3VsZCBpbnN0YWxsIHRoZSByZWxldmFudCBJU08gMi0gYW5kIDMtbGV0dGVyCiAgICAgICAgIGNvZGVzIGFzIHRoZSBlbnVtZXJhdGVkIHBvc3NpYmxlIHZhbHVlcyAuIC4gLjwveHM6ZG9jdW1lbnRhdGlvbj4KICA8L3hzOmFubm90YXRpb24+CiA8L3hzOmF0dHJpYnV0ZT4KCiA8eHM6YXR0cmlidXRlIG5hbWU9InNwYWNlIiBkZWZhdWx0PSJwcmVzZXJ2ZSI+CiAgPHhzOnNpbXBsZVR5cGU+CiAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpOQ05hbWUiPgogICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJkZWZhdWx0Ii8+CiAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InByZXNlcnZlIi8+CiAgIDwveHM6cmVzdHJpY3Rpb24+CiAgPC94czpzaW1wbGVUeXBlPgogPC94czphdHRyaWJ1dGU+CgogPHhzOmF0dHJpYnV0ZSBuYW1lPSJiYXNlIiB0eXBlPSJ4czphbnlVUkkiPgogIDx4czphbm5vdGF0aW9uPgogICA8eHM6ZG9jdW1lbnRhdGlvbj5TZWUgaHR0cDovL3d3dy53My5vcmcvVFIveG1sYmFzZS8gZm9yCiAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgYXR0cmlidXRlLjwveHM6ZG9jdW1lbnRhdGlvbj4KICA8L3hzOmFubm90YXRpb24+CiA8L3hzOmF0dHJpYnV0ZT4KCiA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3BlY2lhbEF0dHJzIj4KICA8eHM6YXR0cmlidXRlIHJlZj0ieG1sOmJhc2UiLz4KICA8eHM6YXR0cmlidXRlIHJlZj0ieG1sOmxhbmciLz4KICA8eHM6YXR0cmlidXRlIHJlZj0ieG1sOnNwYWNlIi8+CiA8L3hzOmF0dHJpYnV0ZUdyb3VwPgoKPC94czpzY2hlbWE+Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/WSDL/Literal.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQo8IS0tDQoNCkNvcHlyaWdodCAyMDAxIC0gMjAwNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgTWljcm9zb2Z0IENvcnBvcmF0aW9uDQpBbGwgUmlnaHRzIFJlc2VydmVkDQoNCkxpY2Vuc2UgZm9yIFdTREwgU2NoZW1hIEZpbGVzDQoNClRoZSBBdXRob3JzIGdyYW50IHBlcm1pc3Npb24gdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgV1NETCBTY2hlbWENCkZpbGVzIGluIGFueSBtZWRpdW0gd2l0aG91dCBmZWUgb3Igcm95YWx0eSBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGFuZA0KbGljZW5zZSBhcmUgZGlzdHJpYnV0ZWQgd2l0aCB0aGVtLiAgVGhlIG9yaWdpbmFscyBvZiB0aGVzZSBmaWxlcyBjYW4NCmJlIGxvY2F0ZWQgYXQ6DQoNCmh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvMjAwMy0wMi0xMS54c2QNCg0KVEhFU0UgU0NIRU1BIEZJTEVTIEFSRSBQUk9WSURFRCAiQVMgSVMsIiBBTkQgVEhFIEFVVEhPUlMgTUFLRSBOTyBSRVBSRVNFTlRBVElPTlMNCk9SIFdBUlJBTlRJRVMsIEVYUFJFU1MgT1IgSU1QTElFRCwgUkVHQVJESU5HIFRIRVNFIEZJTEVTLCBJTkNMVURJTkcsIEJVVCBOT1QNCkxJTUlURUQgVE8sIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwNCk5PTi1JTkZSSU5HRU1FTlQgT1IgVElUTEUuICBUSEUgQVVUSE9SUyBXSUxMIE5PVCBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsDQpJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORyBPVVQgT0YgT1INClJFTEFUSU5HIFRPIEFOWSBVU0UgT1IgRElTVFJJQlVUSU9OIE9GIFRIRVNFIEZJTEVTLg0KDQpUaGUgbmFtZSBhbmQgdHJhZGVtYXJrcyBvZiB0aGUgQXV0aG9ycyBtYXkgTk9UIGJlIHVzZWQgaW4gYW55IG1hbm5lciwNCmluY2x1ZGluZyBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byB0aGVzZSBmaWxlcyBvciBhbnkgcHJvZ3JhbQ0Kb3Igc2VydmljZSB0aGF0IHVzZXMgdGhlc2UgZmlsZXMsIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4gIFRpdGxlIHRvIGNvcHlyaWdodA0KaW4gdGhlc2UgZmlsZXMgd2lsbCBhdCBhbGwgdGltZXMgcmVtYWluIHdpdGggdGhlIEF1dGhvcnMuDQoNCk5vIG90aGVyIHJpZ2h0cyBhcmUgZ3JhbnRlZCBieSBpbXBsaWNhdGlvbiwgZXN0b3BwZWwgb3Igb3RoZXJ3aXNlLg0KDQoNCi0tPg0KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiDQogICAgICAgICAgIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIg0KICAgICAgICAgICB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIg0KICAgICAgICAgICBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgPg0KDQogIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSIgbmFtZT0idERvY3VtZW50YXRpb24iID4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6YW55IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHByb2Nlc3NDb250ZW50cz0ibGF4IiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InREb2N1bWVudGVkIiA+DQogICAgPHhzOmFubm90YXRpb24+DQogICAgICA8eHM6ZG9jdW1lbnRhdGlvbj4NCiAgICAgIFRoaXMgdHlwZSBpcyBleHRlbmRlZCBieSAgY29tcG9uZW50IHR5cGVzIHRvIGFsbG93IHRoZW0gdG8gYmUgZG9jdW1lbnRlZA0KICAgICAgPC94czpkb2N1bWVudGF0aW9uPg0KICAgIDwveHM6YW5ub3RhdGlvbj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJkb2N1bWVudGF0aW9uIiB0eXBlPSJ3c2RsOnREb2N1bWVudGF0aW9uIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idEV4dGVuc2libGVBdHRyaWJ1dGVzRG9jdW1lbnRlZCIgYWJzdHJhY3Q9InRydWUiID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dERvY3VtZW50ZWQiID4NCiAgICAgICAgPHhzOmFubm90YXRpb24+DQogICAgICAgICAgPHhzOmRvY3VtZW50YXRpb24+DQogICAgICAgICAgVGhpcyB0eXBlIGlzIGV4dGVuZGVkIGJ5IGNvbXBvbmVudCB0eXBlcyB0byBhbGxvdyBhdHRyaWJ1dGVzIGZyb20gb3RoZXIgbmFtZXNwYWNlcyB0byBiZSBhZGRlZC4NCiAgICAgICAgICA8L3hzOmRvY3VtZW50YXRpb24+DQogICAgICAgIDwveHM6YW5ub3RhdGlvbj4NCiAgICAgICAgPHhzOmFueUF0dHJpYnV0ZSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4IiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idEV4dGVuc2libGVEb2N1bWVudGVkIiBhYnN0cmFjdD0idHJ1ZSIgPg0KICAgIDx4czpjb21wbGV4Q29udGVudD4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0id3NkbDp0RG9jdW1lbnRlZCIgPg0KICAgICAgICA8eHM6YW5ub3RhdGlvbj4NCiAgICAgICAgICA8eHM6ZG9jdW1lbnRhdGlvbj4NCiAgICAgICAgICBUaGlzIHR5cGUgaXMgZXh0ZW5kZWQgYnkgY29tcG9uZW50IHR5cGVzIHRvIGFsbG93IGVsZW1lbnRzIGZyb20gb3RoZXIgbmFtZXNwYWNlcyB0byBiZSBhZGRlZC4NCiAgICAgICAgICA8L3hzOmRvY3VtZW50YXRpb24+DQogICAgICAgIDwveHM6YW5ub3RhdGlvbj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czphbnkgbmFtZXNwYWNlPSIjI290aGVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBwcm9jZXNzQ29udGVudHM9ImxheCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iZGVmaW5pdGlvbnMiIHR5cGU9IndzZGw6dERlZmluaXRpb25zIiA+DQogICAgPHhzOmtleSBuYW1lPSJtZXNzYWdlIiA+DQogICAgICA8eHM6c2VsZWN0b3IgeHBhdGg9IndzZGw6bWVzc2FnZSIgLz4NCiAgICAgIDx4czpmaWVsZCB4cGF0aD0iQG5hbWUiIC8+DQogICAgPC94czprZXk+DQogICAgPHhzOmtleSBuYW1lPSJwb3J0VHlwZSIgPg0KICAgICAgPHhzOnNlbGVjdG9yIHhwYXRoPSJ3c2RsOnBvcnRUeXBlIiAvPg0KICAgICAgPHhzOmZpZWxkIHhwYXRoPSJAbmFtZSIgLz4NCiAgICA8L3hzOmtleT4NCiAgICA8eHM6a2V5IG5hbWU9ImJpbmRpbmciID4NCiAgICAgIDx4czpzZWxlY3RvciB4cGF0aD0id3NkbDpiaW5kaW5nIiAvPg0KICAgICAgPHhzOmZpZWxkIHhwYXRoPSJAbmFtZSIgLz4NCiAgICA8L3hzOmtleT4NCiAgICA8eHM6a2V5IG5hbWU9InNlcnZpY2UiID4NCiAgICAgIDx4czpzZWxlY3RvciB4cGF0aD0id3NkbDpzZXJ2aWNlIiAvPg0KICAgICAgPHhzOmZpZWxkIHhwYXRoPSJAbmFtZSIgLz4NCiAgICA8L3hzOmtleT4NCiAgICA8eHM6a2V5IG5hbWU9ImltcG9ydCIgPg0KICAgICAgPHhzOnNlbGVjdG9yIHhwYXRoPSJ3c2RsOmltcG9ydCIgLz4NCiAgICAgIDx4czpmaWVsZCB4cGF0aD0iQG5hbWVzcGFjZSIgLz4NCiAgICA8L3hzOmtleT4NCiAgPC94czplbGVtZW50Pg0KDQogIDx4czpncm91cCBuYW1lPSJhbnlUb3BMZXZlbE9wdGlvbmFsRWxlbWVudCIgPg0KICAgIDx4czphbm5vdGF0aW9uPg0KICAgICAgPHhzOmRvY3VtZW50YXRpb24+DQogICAgICBBbnkgdG9wIGxldmVsIG9wdGlvbmFsIGVsZW1lbnQgYWxsb3dlZCB0byBhcHBlYXIgbW9yZSB0aGVuIG9uY2UgLSBhbnkgY2hpbGQgb2YgZGVmaW5pdGlvbnMgZWxlbWVudCBleGNlcHQgd3NkbDp0eXBlcy4gQW55IGV4dGVuc2liaWxpdHkgZWxlbWVudCBpcyBhbGxvd2VkIGluIGFueSBwbGFjZS4NCiAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4NCiAgICA8L3hzOmFubm90YXRpb24+DQogICAgPHhzOmNob2ljZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9ImltcG9ydCIgdHlwZT0id3NkbDp0SW1wb3J0IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0idHlwZXMiIHR5cGU9IndzZGw6dFR5cGVzIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0ibWVzc2FnZSIgIHR5cGU9IndzZGw6dE1lc3NhZ2UiID4NCiAgICAgICAgPHhzOnVuaXF1ZSBuYW1lPSJwYXJ0IiA+DQogICAgICAgICAgPHhzOnNlbGVjdG9yIHhwYXRoPSJ3c2RsOnBhcnQiIC8+DQogICAgICAgICAgPHhzOmZpZWxkIHhwYXRoPSJAbmFtZSIgLz4NCiAgICAgICAgPC94czp1bmlxdWU+DQogICAgICA8L3hzOmVsZW1lbnQ+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJwb3J0VHlwZSIgdHlwZT0id3NkbDp0UG9ydFR5cGUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJiaW5kaW5nIiAgdHlwZT0id3NkbDp0QmluZGluZyIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9InNlcnZpY2UiICB0eXBlPSJ3c2RsOnRTZXJ2aWNlIiA+DQogICAgICAgIDx4czp1bmlxdWUgbmFtZT0icG9ydCIgPg0KICAgICAgICAgIDx4czpzZWxlY3RvciB4cGF0aD0id3NkbDpwb3J0IiAvPg0KICAgICAgICAgIDx4czpmaWVsZCB4cGF0aD0iQG5hbWUiIC8+DQogICAgICAgIDwveHM6dW5pcXVlPg0KCSAgPC94czplbGVtZW50Pg0KICAgIDwveHM6Y2hvaWNlPg0KICA8L3hzOmdyb3VwPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0RGVmaW5pdGlvbnMiID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6Z3JvdXAgcmVmPSJ3c2RsOmFueVRvcExldmVsT3B0aW9uYWxFbGVtZW50IiAgbWluT2NjdXJzPSIwIiAgIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRhcmdldE5hbWVzcGFjZSIgdHlwZT0ieHM6YW55VVJJIiB1c2U9Im9wdGlvbmFsIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOk5DTmFtZSIgdXNlPSJvcHRpb25hbCIgLz4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRJbXBvcnQiID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVBdHRyaWJ1dGVzRG9jdW1lbnRlZCIgPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWVzcGFjZSIgdHlwZT0ieHM6YW55VVJJIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJ4czphbnlVUkkiIHVzZT0icmVxdWlyZWQiIC8+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0VHlwZXMiID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVEb2N1bWVudGVkIiAvPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRNZXNzYWdlIiA+DQogICAgPHhzOmNvbXBsZXhDb250ZW50Pg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ3c2RsOnRFeHRlbnNpYmxlRG9jdW1lbnRlZCIgPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0icGFydCIgdHlwZT0id3NkbDp0UGFydCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ4czpOQ05hbWUiIHVzZT0icmVxdWlyZWQiIC8+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0UGFydCIgPg0KICAgIDx4czpjb21wbGV4Q29udGVudD4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0id3NkbDp0RXh0ZW5zaWJsZUF0dHJpYnV0ZXNEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6TkNOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVsZW1lbnQiIHR5cGU9InhzOlFOYW1lIiB1c2U9Im9wdGlvbmFsIiAvPg0KPCEtLQ0KUmVtb3ZlZCBieSBPVE9CTzoNClRvIGJlIGFsaWduZWQgd2l0aCBMaXRlcmFsIHN0eWxlDQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIgdHlwZT0ieHM6UU5hbWUiIHVzZT0ib3B0aW9uYWwiIC8+DQotLT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRQb3J0VHlwZSIgPg0KICAgIDx4czpjb21wbGV4Q29udGVudD4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0id3NkbDp0RXh0ZW5zaWJsZUF0dHJpYnV0ZXNEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJvcGVyYXRpb24iIHR5cGU9IndzZGw6dE9wZXJhdGlvbiIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ4czpOQ05hbWUiIHVzZT0icmVxdWlyZWQiIC8+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0T3BlcmF0aW9uIiA+DQogICAgPHhzOmNvbXBsZXhDb250ZW50Pg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ3c2RsOnRFeHRlbnNpYmxlRG9jdW1lbnRlZCIgPg0KCSAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmNob2ljZT4NCiAgICAgICAgICAgIDx4czpncm91cCByZWY9IndzZGw6cmVxdWVzdC1yZXNwb25zZS1vci1vbmUtd2F5LW9wZXJhdGlvbiIgLz4NCiAgICAgICAgICAgIDx4czpncm91cCByZWY9IndzZGw6c29saWNpdC1yZXNwb25zZS1vci1ub3RpZmljYXRpb24tb3BlcmF0aW9uIiAvPg0KICAgICAgICAgIDwveHM6Y2hvaWNlPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOk5DTmFtZSIgdXNlPSJyZXF1aXJlZCIgLz4NCiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYXJhbWV0ZXJPcmRlciIgdHlwZT0ieHM6Tk1UT0tFTlMiIHVzZT0ib3B0aW9uYWwiIC8+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KDQogIDx4czpncm91cCBuYW1lPSJyZXF1ZXN0LXJlc3BvbnNlLW9yLW9uZS13YXktb3BlcmF0aW9uIiA+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iaW5wdXQiIHR5cGU9IndzZGw6dFBhcmFtIiAvPg0KCSAgPHhzOnNlcXVlbmNlIG1pbk9jY3Vycz0nMCcgPg0KCSAgICA8eHM6ZWxlbWVudCBuYW1lPSJvdXRwdXQiIHR5cGU9IndzZGw6dFBhcmFtIiAvPg0KCQk8eHM6ZWxlbWVudCBuYW1lPSJmYXVsdCIgdHlwZT0id3NkbDp0RmF1bHQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgICA8L3hzOnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Z3JvdXA+DQoNCiAgPHhzOmdyb3VwIG5hbWU9InNvbGljaXQtcmVzcG9uc2Utb3Itbm90aWZpY2F0aW9uLW9wZXJhdGlvbiIgPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Im91dHB1dCIgdHlwZT0id3NkbDp0UGFyYW0iIC8+DQoJICA8eHM6c2VxdWVuY2UgbWluT2NjdXJzPScwJyA+DQoJICAgIDx4czplbGVtZW50IG5hbWU9ImlucHV0IiB0eXBlPSJ3c2RsOnRQYXJhbSIgLz4NCgkJPHhzOmVsZW1lbnQgbmFtZT0iZmF1bHQiIHR5cGU9IndzZGw6dEZhdWx0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KCSAgPC94czpzZXF1ZW5jZT4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmdyb3VwPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0UGFyYW0iID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVBdHRyaWJ1dGVzRG9jdW1lbnRlZCIgPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOk5DTmFtZSIgdXNlPSJvcHRpb25hbCIgLz4NCiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtZXNzYWdlIiB0eXBlPSJ4czpRTmFtZSIgdXNlPSJyZXF1aXJlZCIgLz4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRGYXVsdCIgPg0KICAgIDx4czpjb21wbGV4Q29udGVudD4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0id3NkbDp0RXh0ZW5zaWJsZUF0dHJpYnV0ZXNEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6TkNOYW1lIiAgdXNlPSJyZXF1aXJlZCIgLz4NCiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtZXNzYWdlIiB0eXBlPSJ4czpRTmFtZSIgdXNlPSJyZXF1aXJlZCIgLz4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRCaW5kaW5nIiA+DQogICAgPHhzOmNvbXBsZXhDb250ZW50Pg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ3c2RsOnRFeHRlbnNpYmxlRG9jdW1lbnRlZCIgPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0ib3BlcmF0aW9uIiB0eXBlPSJ3c2RsOnRCaW5kaW5nT3BlcmF0aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOk5DTmFtZSIgdXNlPSJyZXF1aXJlZCIgLz4NCiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIiB0eXBlPSJ4czpRTmFtZSIgdXNlPSJyZXF1aXJlZCIgLz4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRCaW5kaW5nT3BlcmF0aW9uTWVzc2FnZSIgPg0KICAgIDx4czpjb21wbGV4Q29udGVudD4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0id3NkbDp0RXh0ZW5zaWJsZURvY3VtZW50ZWQiID4NCiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ4czpOQ05hbWUiIHVzZT0ib3B0aW9uYWwiIC8+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0QmluZGluZ09wZXJhdGlvbkZhdWx0IiA+DQogICAgPHhzOmNvbXBsZXhDb250ZW50Pg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ3c2RsOnRFeHRlbnNpYmxlRG9jdW1lbnRlZCIgPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOk5DTmFtZSIgdXNlPSJyZXF1aXJlZCIgLz4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRCaW5kaW5nT3BlcmF0aW9uIiA+DQogICAgPHhzOmNvbXBsZXhDb250ZW50Pg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ3c2RsOnRFeHRlbnNpYmxlRG9jdW1lbnRlZCIgPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iaW5wdXQiIHR5cGU9IndzZGw6dEJpbmRpbmdPcGVyYXRpb25NZXNzYWdlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0ib3V0cHV0IiB0eXBlPSJ3c2RsOnRCaW5kaW5nT3BlcmF0aW9uTWVzc2FnZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9ImZhdWx0IiB0eXBlPSJ3c2RsOnRCaW5kaW5nT3BlcmF0aW9uRmF1bHQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6TkNOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idFNlcnZpY2UiID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJwb3J0IiB0eXBlPSJ3c2RsOnRQb3J0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOk5DTmFtZSIgdXNlPSJyZXF1aXJlZCIgLz4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRQb3J0IiA+DQogICAgPHhzOmNvbXBsZXhDb250ZW50Pg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ3c2RsOnRFeHRlbnNpYmxlRG9jdW1lbnRlZCIgPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOk5DTmFtZSIgdXNlPSJyZXF1aXJlZCIgLz4NCiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiaW5kaW5nIiB0eXBlPSJ4czpRTmFtZSIgdXNlPSJyZXF1aXJlZCIgLz4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcnJheVR5cGUiIHR5cGU9InhzOnN0cmluZyIgLz4NCiAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXF1aXJlZCIgdHlwZT0ieHM6Ym9vbGVhbiIgLz4NCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRFeHRlbnNpYmlsaXR5RWxlbWVudCIgYWJzdHJhY3Q9InRydWUiID4NCiAgICA8eHM6YXR0cmlidXRlIHJlZj0id3NkbDpyZXF1aXJlZCIgdXNlPSJvcHRpb25hbCIgLz4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KPC94czpzY2hlbWE+</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/WSDL/WSDL.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQo8IS0tDQoNCkNvcHlyaWdodCAyMDAxIC0gMjAwNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgTWljcm9zb2Z0IENvcnBvcmF0aW9uDQpBbGwgUmlnaHRzIFJlc2VydmVkDQoNCkxpY2Vuc2UgZm9yIFdTREwgU2NoZW1hIEZpbGVzDQoNClRoZSBBdXRob3JzIGdyYW50IHBlcm1pc3Npb24gdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgV1NETCBTY2hlbWENCkZpbGVzIGluIGFueSBtZWRpdW0gd2l0aG91dCBmZWUgb3Igcm95YWx0eSBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGFuZA0KbGljZW5zZSBhcmUgZGlzdHJpYnV0ZWQgd2l0aCB0aGVtLiAgVGhlIG9yaWdpbmFscyBvZiB0aGVzZSBmaWxlcyBjYW4NCmJlIGxvY2F0ZWQgYXQ6DQoNCmh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvMjAwMy0wMi0xMS54c2QNCg0KVEhFU0UgU0NIRU1BIEZJTEVTIEFSRSBQUk9WSURFRCAiQVMgSVMsIiBBTkQgVEhFIEFVVEhPUlMgTUFLRSBOTyBSRVBSRVNFTlRBVElPTlMNCk9SIFdBUlJBTlRJRVMsIEVYUFJFU1MgT1IgSU1QTElFRCwgUkVHQVJESU5HIFRIRVNFIEZJTEVTLCBJTkNMVURJTkcsIEJVVCBOT1QNCkxJTUlURUQgVE8sIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwNCk5PTi1JTkZSSU5HRU1FTlQgT1IgVElUTEUuICBUSEUgQVVUSE9SUyBXSUxMIE5PVCBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsDQpJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORyBPVVQgT0YgT1INClJFTEFUSU5HIFRPIEFOWSBVU0UgT1IgRElTVFJJQlVUSU9OIE9GIFRIRVNFIEZJTEVTLg0KDQpUaGUgbmFtZSBhbmQgdHJhZGVtYXJrcyBvZiB0aGUgQXV0aG9ycyBtYXkgTk9UIGJlIHVzZWQgaW4gYW55IG1hbm5lciwNCmluY2x1ZGluZyBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byB0aGVzZSBmaWxlcyBvciBhbnkgcHJvZ3JhbQ0Kb3Igc2VydmljZSB0aGF0IHVzZXMgdGhlc2UgZmlsZXMsIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4gIFRpdGxlIHRvIGNvcHlyaWdodA0KaW4gdGhlc2UgZmlsZXMgd2lsbCBhdCBhbGwgdGltZXMgcmVtYWluIHdpdGggdGhlIEF1dGhvcnMuDQoNCk5vIG90aGVyIHJpZ2h0cyBhcmUgZ3JhbnRlZCBieSBpbXBsaWNhdGlvbiwgZXN0b3BwZWwgb3Igb3RoZXJ3aXNlLg0KDQoNCi0tPg0KPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiDQogICAgICAgICAgIHhtbG5zOndzZGw9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIg0KICAgICAgICAgICB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvIg0KICAgICAgICAgICBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgPg0KDQogIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSIgbmFtZT0idERvY3VtZW50YXRpb24iID4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6YW55IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHByb2Nlc3NDb250ZW50cz0ibGF4IiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InREb2N1bWVudGVkIiA+DQogICAgPHhzOmFubm90YXRpb24+DQogICAgICA8eHM6ZG9jdW1lbnRhdGlvbj4NCiAgICAgIFRoaXMgdHlwZSBpcyBleHRlbmRlZCBieSAgY29tcG9uZW50IHR5cGVzIHRvIGFsbG93IHRoZW0gdG8gYmUgZG9jdW1lbnRlZA0KICAgICAgPC94czpkb2N1bWVudGF0aW9uPg0KICAgIDwveHM6YW5ub3RhdGlvbj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJkb2N1bWVudGF0aW9uIiB0eXBlPSJ3c2RsOnREb2N1bWVudGF0aW9uIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idEV4dGVuc2libGVBdHRyaWJ1dGVzRG9jdW1lbnRlZCIgYWJzdHJhY3Q9InRydWUiID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dERvY3VtZW50ZWQiID4NCiAgICAgICAgPHhzOmFubm90YXRpb24+DQogICAgICAgICAgPHhzOmRvY3VtZW50YXRpb24+DQogICAgICAgICAgVGhpcyB0eXBlIGlzIGV4dGVuZGVkIGJ5IGNvbXBvbmVudCB0eXBlcyB0byBhbGxvdyBhdHRyaWJ1dGVzIGZyb20gb3RoZXIgbmFtZXNwYWNlcyB0byBiZSBhZGRlZC4NCiAgICAgICAgICA8L3hzOmRvY3VtZW50YXRpb24+DQogICAgICAgIDwveHM6YW5ub3RhdGlvbj4NCiAgICAgICAgPHhzOmFueUF0dHJpYnV0ZSBuYW1lc3BhY2U9IiMjb3RoZXIiIHByb2Nlc3NDb250ZW50cz0ibGF4IiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idEV4dGVuc2libGVEb2N1bWVudGVkIiBhYnN0cmFjdD0idHJ1ZSIgPg0KICAgIDx4czpjb21wbGV4Q29udGVudD4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0id3NkbDp0RG9jdW1lbnRlZCIgPg0KICAgICAgICA8eHM6YW5ub3RhdGlvbj4NCiAgICAgICAgICA8eHM6ZG9jdW1lbnRhdGlvbj4NCiAgICAgICAgICBUaGlzIHR5cGUgaXMgZXh0ZW5kZWQgYnkgY29tcG9uZW50IHR5cGVzIHRvIGFsbG93IGVsZW1lbnRzIGZyb20gb3RoZXIgbmFtZXNwYWNlcyB0byBiZSBhZGRlZC4NCiAgICAgICAgICA8L3hzOmRvY3VtZW50YXRpb24+DQogICAgICAgIDwveHM6YW5ub3RhdGlvbj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czphbnkgbmFtZXNwYWNlPSIjI290aGVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBwcm9jZXNzQ29udGVudHM9ImxheCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iZGVmaW5pdGlvbnMiIHR5cGU9IndzZGw6dERlZmluaXRpb25zIiA+DQogICAgPHhzOmtleSBuYW1lPSJtZXNzYWdlIiA+DQogICAgICA8eHM6c2VsZWN0b3IgeHBhdGg9IndzZGw6bWVzc2FnZSIgLz4NCiAgICAgIDx4czpmaWVsZCB4cGF0aD0iQG5hbWUiIC8+DQogICAgPC94czprZXk+DQogICAgPHhzOmtleSBuYW1lPSJwb3J0VHlwZSIgPg0KICAgICAgPHhzOnNlbGVjdG9yIHhwYXRoPSJ3c2RsOnBvcnRUeXBlIiAvPg0KICAgICAgPHhzOmZpZWxkIHhwYXRoPSJAbmFtZSIgLz4NCiAgICA8L3hzOmtleT4NCiAgICA8eHM6a2V5IG5hbWU9ImJpbmRpbmciID4NCiAgICAgIDx4czpzZWxlY3RvciB4cGF0aD0id3NkbDpiaW5kaW5nIiAvPg0KICAgICAgPHhzOmZpZWxkIHhwYXRoPSJAbmFtZSIgLz4NCiAgICA8L3hzOmtleT4NCiAgICA8eHM6a2V5IG5hbWU9InNlcnZpY2UiID4NCiAgICAgIDx4czpzZWxlY3RvciB4cGF0aD0id3NkbDpzZXJ2aWNlIiAvPg0KICAgICAgPHhzOmZpZWxkIHhwYXRoPSJAbmFtZSIgLz4NCiAgICA8L3hzOmtleT4NCiAgICA8eHM6a2V5IG5hbWU9ImltcG9ydCIgPg0KICAgICAgPHhzOnNlbGVjdG9yIHhwYXRoPSJ3c2RsOmltcG9ydCIgLz4NCiAgICAgIDx4czpmaWVsZCB4cGF0aD0iQG5hbWVzcGFjZSIgLz4NCiAgICA8L3hzOmtleT4NCiAgPC94czplbGVtZW50Pg0KDQogIDx4czpncm91cCBuYW1lPSJhbnlUb3BMZXZlbE9wdGlvbmFsRWxlbWVudCIgPg0KICAgIDx4czphbm5vdGF0aW9uPg0KICAgICAgPHhzOmRvY3VtZW50YXRpb24+DQogICAgICBBbnkgdG9wIGxldmVsIG9wdGlvbmFsIGVsZW1lbnQgYWxsb3dlZCB0byBhcHBlYXIgbW9yZSB0aGVuIG9uY2UgLSBhbnkgY2hpbGQgb2YgZGVmaW5pdGlvbnMgZWxlbWVudCBleGNlcHQgd3NkbDp0eXBlcy4gQW55IGV4dGVuc2liaWxpdHkgZWxlbWVudCBpcyBhbGxvd2VkIGluIGFueSBwbGFjZS4NCiAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4NCiAgICA8L3hzOmFubm90YXRpb24+DQogICAgPHhzOmNob2ljZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9ImltcG9ydCIgdHlwZT0id3NkbDp0SW1wb3J0IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0idHlwZXMiIHR5cGU9IndzZGw6dFR5cGVzIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0ibWVzc2FnZSIgIHR5cGU9IndzZGw6dE1lc3NhZ2UiID4NCiAgICAgICAgPHhzOnVuaXF1ZSBuYW1lPSJwYXJ0IiA+DQogICAgICAgICAgPHhzOnNlbGVjdG9yIHhwYXRoPSJ3c2RsOnBhcnQiIC8+DQogICAgICAgICAgPHhzOmZpZWxkIHhwYXRoPSJAbmFtZSIgLz4NCiAgICAgICAgPC94czp1bmlxdWU+DQogICAgICA8L3hzOmVsZW1lbnQ+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJwb3J0VHlwZSIgdHlwZT0id3NkbDp0UG9ydFR5cGUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJiaW5kaW5nIiAgdHlwZT0id3NkbDp0QmluZGluZyIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9InNlcnZpY2UiICB0eXBlPSJ3c2RsOnRTZXJ2aWNlIiA+DQogICAgICAgIDx4czp1bmlxdWUgbmFtZT0icG9ydCIgPg0KICAgICAgICAgIDx4czpzZWxlY3RvciB4cGF0aD0id3NkbDpwb3J0IiAvPg0KICAgICAgICAgIDx4czpmaWVsZCB4cGF0aD0iQG5hbWUiIC8+DQogICAgICAgIDwveHM6dW5pcXVlPg0KCSAgPC94czplbGVtZW50Pg0KICAgIDwveHM6Y2hvaWNlPg0KICA8L3hzOmdyb3VwPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0RGVmaW5pdGlvbnMiID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6Z3JvdXAgcmVmPSJ3c2RsOmFueVRvcExldmVsT3B0aW9uYWxFbGVtZW50IiAgbWluT2NjdXJzPSIwIiAgIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRhcmdldE5hbWVzcGFjZSIgdHlwZT0ieHM6YW55VVJJIiB1c2U9Im9wdGlvbmFsIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOk5DTmFtZSIgdXNlPSJvcHRpb25hbCIgLz4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRJbXBvcnQiID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVBdHRyaWJ1dGVzRG9jdW1lbnRlZCIgPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWVzcGFjZSIgdHlwZT0ieHM6YW55VVJJIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJ4czphbnlVUkkiIHVzZT0icmVxdWlyZWQiIC8+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0VHlwZXMiID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVEb2N1bWVudGVkIiAvPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRNZXNzYWdlIiA+DQogICAgPHhzOmNvbXBsZXhDb250ZW50Pg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ3c2RsOnRFeHRlbnNpYmxlRG9jdW1lbnRlZCIgPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0icGFydCIgdHlwZT0id3NkbDp0UGFydCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ4czpOQ05hbWUiIHVzZT0icmVxdWlyZWQiIC8+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0UGFydCIgPg0KICAgIDx4czpjb21wbGV4Q29udGVudD4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0id3NkbDp0RXh0ZW5zaWJsZUF0dHJpYnV0ZXNEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6TkNOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVsZW1lbnQiIHR5cGU9InhzOlFOYW1lIiB1c2U9Im9wdGlvbmFsIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiIHR5cGU9InhzOlFOYW1lIiB1c2U9Im9wdGlvbmFsIiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idFBvcnRUeXBlIiA+DQogICAgPHhzOmNvbXBsZXhDb250ZW50Pg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ3c2RsOnRFeHRlbnNpYmxlQXR0cmlidXRlc0RvY3VtZW50ZWQiID4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Im9wZXJhdGlvbiIgdHlwZT0id3NkbDp0T3BlcmF0aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOk5DTmFtZSIgdXNlPSJyZXF1aXJlZCIgLz4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRPcGVyYXRpb24iID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVEb2N1bWVudGVkIiA+DQoJICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6Y2hvaWNlPg0KICAgICAgICAgICAgPHhzOmdyb3VwIHJlZj0id3NkbDpyZXF1ZXN0LXJlc3BvbnNlLW9yLW9uZS13YXktb3BlcmF0aW9uIiAvPg0KICAgICAgICAgICAgPHhzOmdyb3VwIHJlZj0id3NkbDpzb2xpY2l0LXJlc3BvbnNlLW9yLW5vdGlmaWNhdGlvbi1vcGVyYXRpb24iIC8+DQogICAgICAgICAgPC94czpjaG9pY2U+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6TkNOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhcmFtZXRlck9yZGVyIiB0eXBlPSJ4czpOTVRPS0VOUyIgdXNlPSJvcHRpb25hbCIgLz4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmdyb3VwIG5hbWU9InJlcXVlc3QtcmVzcG9uc2Utb3Itb25lLXdheS1vcGVyYXRpb24iID4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJpbnB1dCIgdHlwZT0id3NkbDp0UGFyYW0iIC8+DQoJICA8eHM6c2VxdWVuY2UgbWluT2NjdXJzPScwJyA+DQoJICAgIDx4czplbGVtZW50IG5hbWU9Im91dHB1dCIgdHlwZT0id3NkbDp0UGFyYW0iIC8+DQoJCTx4czplbGVtZW50IG5hbWU9ImZhdWx0IiB0eXBlPSJ3c2RsOnRGYXVsdCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpncm91cD4NCg0KICA8eHM6Z3JvdXAgbmFtZT0ic29saWNpdC1yZXNwb25zZS1vci1ub3RpZmljYXRpb24tb3BlcmF0aW9uIiA+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0ib3V0cHV0IiB0eXBlPSJ3c2RsOnRQYXJhbSIgLz4NCgkgIDx4czpzZXF1ZW5jZSBtaW5PY2N1cnM9JzAnID4NCgkgICAgPHhzOmVsZW1lbnQgbmFtZT0iaW5wdXQiIHR5cGU9IndzZGw6dFBhcmFtIiAvPg0KCQk8eHM6ZWxlbWVudCBuYW1lPSJmYXVsdCIgdHlwZT0id3NkbDp0RmF1bHQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQoJICA8L3hzOnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Z3JvdXA+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRQYXJhbSIgPg0KICAgIDx4czpjb21wbGV4Q29udGVudD4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0id3NkbDp0RXh0ZW5zaWJsZUF0dHJpYnV0ZXNEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6TkNOYW1lIiB1c2U9Im9wdGlvbmFsIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1lc3NhZ2UiIHR5cGU9InhzOlFOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idEZhdWx0IiA+DQogICAgPHhzOmNvbXBsZXhDb250ZW50Pg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ3c2RsOnRFeHRlbnNpYmxlQXR0cmlidXRlc0RvY3VtZW50ZWQiID4NCiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ4czpOQ05hbWUiICB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1lc3NhZ2UiIHR5cGU9InhzOlFOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idEJpbmRpbmciID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJvcGVyYXRpb24iIHR5cGU9IndzZGw6dEJpbmRpbmdPcGVyYXRpb24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6TkNOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiIHR5cGU9InhzOlFOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idEJpbmRpbmdPcGVyYXRpb25NZXNzYWdlIiA+DQogICAgPHhzOmNvbXBsZXhDb250ZW50Pg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ3c2RsOnRFeHRlbnNpYmxlRG9jdW1lbnRlZCIgPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOk5DTmFtZSIgdXNlPSJvcHRpb25hbCIgLz4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRCaW5kaW5nT3BlcmF0aW9uRmF1bHQiID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6TkNOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idEJpbmRpbmdPcGVyYXRpb24iID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJpbnB1dCIgdHlwZT0id3NkbDp0QmluZGluZ09wZXJhdGlvbk1lc3NhZ2UiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJvdXRwdXQiIHR5cGU9IndzZGw6dEJpbmRpbmdPcGVyYXRpb25NZXNzYWdlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iZmF1bHQiIHR5cGU9IndzZGw6dEJpbmRpbmdPcGVyYXRpb25GYXVsdCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ4czpOQ05hbWUiIHVzZT0icmVxdWlyZWQiIC8+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0U2VydmljZSIgPg0KICAgIDx4czpjb21wbGV4Q29udGVudD4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0id3NkbDp0RXh0ZW5zaWJsZURvY3VtZW50ZWQiID4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9InBvcnQiIHR5cGU9IndzZGw6dFBvcnQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6TkNOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idFBvcnQiID4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9IndzZGw6dEV4dGVuc2libGVEb2N1bWVudGVkIiA+DQogICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6TkNOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJpbmRpbmciIHR5cGU9InhzOlFOYW1lIiB1c2U9InJlcXVpcmVkIiAvPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCg0KICA8eHM6YXR0cmlidXRlIG5hbWU9ImFycmF5VHlwZSIgdHlwZT0ieHM6c3RyaW5nIiAvPg0KICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcXVpcmVkIiB0eXBlPSJ4czpib29sZWFuIiAvPg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idEV4dGVuc2liaWxpdHlFbGVtZW50IiBhYnN0cmFjdD0idHJ1ZSIgPg0KICAgIDx4czphdHRyaWJ1dGUgcmVmPSJ3c2RsOnJlcXVpcmVkIiB1c2U9Im9wdGlvbmFsIiAvPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KDQo8L3hzOnNjaGVtYT4=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/StaticFiles/XSD/SOPM.xsd" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+CiAgICA8eHM6aW1wb3J0IG5hbWVzcGFjZT0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIi8+CgogICAgPHhzOmluY2x1ZGUgc2NoZW1hTG9jYXRpb249IkRhdGFiYXNlLnhzZCIvPgoKICAgIDx4czplbGVtZW50IG5hbWU9Im90b2JvX3BhY2thZ2UiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJOYW1lIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJWZXJzaW9uIi8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkZyYW1ld29yayIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiLz4KICAgICAgICAgICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJQYWNrYWdlUmVxdWlyZWQiLz4KICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Ik1vZHVsZVJlcXVpcmVkIi8+CiAgICAgICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iVmVuZG9yIi8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlVSTCIvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJMaWNlbnNlIi8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkRlc2NyaXB0aW9uIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KCiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlBhY2thZ2VJc1Zpc2libGUiIG1pbk9jY3Vycz0iMCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iUGFja2FnZUlzRG93bmxvYWRhYmxlIiBtaW5PY2N1cnM9IjAiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IlBhY2thZ2VJc0J1aWxkYWJsZSIgbWluT2NjdXJzPSIwIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJQYWNrYWdlSXNSZW1vdmFibGUiIG1pbk9jY3Vycz0iMCIgLz4KICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iUGFja2FnZUFsbG93RGlyZWN0VXBkYXRlIiBtaW5PY2N1cnM9IjAiIC8+CgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJDaGFuZ2VMb2ciIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+CiAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Ik9TIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJGaWxlbGlzdCIvPgogICAgICAgICAgICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkludHJvSW5zdGFsbCIvPgogICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iSW50cm9Vbmluc3RhbGwiLz4KICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkludHJvUmVpbnN0YWxsIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJJbnRyb1VwZ3JhZGUiLz4KICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkNvZGVJbnN0YWxsIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJDb2RlVXBncmFkZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iQ29kZVVuaW5zdGFsbCIvPgogICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iQ29kZVJlaW5zdGFsbCIvPgogICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iRGF0YWJhc2VJbnN0YWxsIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJEYXRhYmFzZVVwZ3JhZGUiLz4KICAgICAgICAgICAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkRhdGFiYXNlUmVpbnN0YWxsIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJEYXRhYmFzZVVuaW5zdGFsbCIvPgogICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iUGFja2FnZU1lcmdlIi8+CiAgICAgICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2ZXJzaW9uIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iQ2hhbmdlTG9nIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iRGF0ZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlZlcnNpb24iIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgICAgICAgPC94czpzaW1wbGVDb250ZW50PgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iRGVzY3JpcHRpb24iPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJMYW5nIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iRm9ybWF0IiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHJhbnNsYXRhYmxlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IlBhY2thZ2VJc1Zpc2libGUiPgogICAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iMCIvPgogICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSIxIi8+CiAgICAgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IlBhY2thZ2VJc0Rvd25sb2FkYWJsZSI+CiAgICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSIwIi8+CiAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IjEiLz4KICAgICAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iUGFja2FnZUlzQnVpbGRhYmxlIj4KICAgICAgICA8eHM6c2ltcGxlVHlwZT4KICAgICAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IjAiLz4KICAgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iMSIvPgogICAgICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgogICAgICAgIDwveHM6c2ltcGxlVHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJQYWNrYWdlSXNSZW1vdmFibGUiPgogICAgICAgIDx4czpzaW1wbGVUeXBlPgogICAgICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iMCIvPgogICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSIxIi8+CiAgICAgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CiAgICAgICAgPC94czpzaW1wbGVUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9IlBhY2thZ2VBbGxvd0RpcmVjdFVwZGF0ZSI+CiAgICAgICAgPHhzOnNpbXBsZVR5cGU+CiAgICAgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSIwIi8+CiAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IjEiLz4KICAgICAgICAgICAgPC94czpyZXN0cmljdGlvbj4KICAgICAgICA8L3hzOnNpbXBsZVR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iRmlsZWxpc3QiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNlcXVlbmNlPgogICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJGaWxlIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgICAgIDx4czprZXkgbmFtZT0idW5pcXVlLWxvY2F0aW9uIj4KICAgICAgICAgICAgPHhzOnNlbGVjdG9yIHhwYXRoPSJGaWxlIiAvPgogICAgICAgICAgICA8eHM6ZmllbGQgeHBhdGg9IkBMb2NhdGlvbiIgLz4KICAgICAgICA8L3hzOmtleT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJGaWxlIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iUGVybWlzc2lvbiIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJMb2NhdGlvbiIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJFbmNvZGUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJQYWNrYWdlUmVxdWlyZWQiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJWZXJzaW9uIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgoKICAgIDx4czplbGVtZW50IG5hbWU9Ik1vZHVsZVJlcXVpcmVkIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVmVyc2lvbiIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbnRyb0luc3RhbGwiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUeXBlIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTGFuZyIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlRpdGxlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHJhbnNsYXRhYmxlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iRm9ybWF0IiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgogICAgPHhzOmVsZW1lbnQgbmFtZT0iSW50cm9Vbmluc3RhbGwiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUeXBlIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTGFuZyIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlRpdGxlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHJhbnNsYXRhYmxlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iRm9ybWF0IiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgogICAgPHhzOmVsZW1lbnQgbmFtZT0iSW50cm9SZWluc3RhbGwiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUeXBlIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTGFuZyIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlRpdGxlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHJhbnNsYXRhYmxlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iRm9ybWF0IiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgogICAgPHhzOmVsZW1lbnQgbmFtZT0iSW50cm9VcGdyYWRlIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IkxhbmciIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUaXRsZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlRyYW5zbGF0YWJsZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlZlcnNpb24iIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJGb3JtYXQiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgICAgICAgPC94czpzaW1wbGVDb250ZW50PgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29kZUluc3RhbGwiPgogICAgICAgIDx4czpjb21wbGV4VHlwZT4KICAgICAgICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOnN0cmluZyI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJUeXBlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iSWZQYWNrYWdlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iSWZOb3RQYWNrYWdlIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgPC94czpleHRlbnNpb24+CiAgICAgICAgICAgIDwveHM6c2ltcGxlQ29udGVudD4KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPgogICAgPC94czplbGVtZW50PgogICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29kZVVuaW5zdGFsbCI+CiAgICAgICAgPHhzOmNvbXBsZXhUeXBlPgogICAgICAgICAgICA8eHM6c2ltcGxlQ29udGVudD4KICAgICAgICAgICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0ieHM6c3RyaW5nIj4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlR5cGUiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJJZlBhY2thZ2UiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJJZk5vdFBhY2thZ2UiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgICAgICAgPC94czpzaW1wbGVDb250ZW50PgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CiAgICA8eHM6ZWxlbWVudCBuYW1lPSJDb2RlUmVpbnN0YWxsIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IklmUGFja2FnZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IklmTm90UGFja2FnZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KICAgIDx4czplbGVtZW50IG5hbWU9IkNvZGVVcGdyYWRlIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpzdHJpbmciPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVHlwZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlZlcnNpb24iIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJJZlBhY2thZ2UiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJJZk5vdFBhY2thZ2UiIHVzZT0ib3B0aW9uYWwiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgICAgICAgICA8L3hzOmV4dGVuc2lvbj4KICAgICAgICAgICAgPC94czpzaW1wbGVDb250ZW50PgogICAgICAgIDwveHM6Y29tcGxleFR5cGU+CiAgICA8L3hzOmVsZW1lbnQ+CgogICAgPHhzOmVsZW1lbnQgbmFtZT0iUGFja2FnZU1lcmdlIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzZXF1ZW5jZT4KICAgICAgICAgICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJDb2RlVXBncmFkZSIvPgogICAgICAgICAgICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iRGF0YWJhc2VVcGdyYWRlIi8+CiAgICAgICAgICAgICAgICA8L3hzOmNob2ljZT4KICAgICAgICAgICAgPC94czpzZXF1ZW5jZT4KICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJOYW1lIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IlRhcmdldFZlcnNpb24iIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOnRva2VuIi8+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJOYW1lIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgPHhzOmVsZW1lbnQgbmFtZT0iVmVuZG9yIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgPHhzOmVsZW1lbnQgbmFtZT0iVVJMIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgPHhzOmVsZW1lbnQgbmFtZT0iRnJhbWV3b3JrIj4KICAgICAgICA8eHM6Y29tcGxleFR5cGU+CiAgICAgICAgICAgIDx4czpzaW1wbGVDb250ZW50PgogICAgICAgICAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czp0b2tlbiI+CiAgICAgICAgICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJNaW5pbXVtIiB1c2U9Im9wdGlvbmFsIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgICAgICAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTWF4aW11bSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6dG9rZW4iLz4KICAgICAgICAgICAgICAgIDwveHM6ZXh0ZW5zaW9uPgogICAgICAgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+CiAgICAgICAgPC94czpjb21wbGV4VHlwZT4KICAgIDwveHM6ZWxlbWVudD4KICAgIDx4czplbGVtZW50IG5hbWU9IlZlcnNpb24iIHR5cGU9InhzOnRva2VuIi8+CiAgICA8eHM6ZWxlbWVudCBuYW1lPSJMaWNlbnNlIiB0eXBlPSJ4czp0b2tlbiIvPgogICAgPHhzOmVsZW1lbnQgbmFtZT0iT1MiIHR5cGU9InhzOnRva2VuIi8+CjwveHM6c2NoZW1hPgo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/TT/ScriptUsage.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlRUOjpTY3JpcHRVc2FnZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkJhc2UpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgbXkgJEVycm9yTWVzc2FnZTsKICAgIG15ICRDb3VudGVyOwoKICAgIGZvciBteSAkTGluZSAoIHNwbGl0KCAvXG4vLCAkQ29kZSApICkgewogICAgICAgICRDb3VudGVyKys7CiAgICAgICAgaWYgKCAkTGluZSA9fiBteyA8c2NyaXB0IH14bXMgKSB7CiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UKICAgICAgICAgICAgICAgIC49ICJFUlJPUjogRm91bmQgSmF2YVNjcmlwdCB1c2FnZSBpbiBsaW5lKCAkQ291bnRlciApOiAkTGluZVxuIjsKICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiUGxlYXNlIHVzZSBKYXZhU2NyaXB0IGZpbGVzIGluc3RlYWQuXG4iOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCIkRXJyb3JNZXNzYWdlIik7CiAgICB9Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/TT/TranslationFilter.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlRUOjpUcmFuc2xhdGlvbkZpbHRlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkJhc2UpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgbXkgJEVycm9yTWVzc2FnZTsKICAgIG15ICRDb3VudGVyOwoKICAgIGZvciBteSAkTGluZSAoIHNwbGl0KCAvXG4vLCAkQ29kZSApICkgewogICAgICAgICRDb3VudGVyKys7CgogICAgICAgICMgUHJvY2VzcyBsaW5lcyB0aGF0IGRlYWwgd2l0aCB0cmFuc2xhdGlvbiBvdXRwdXQgaW4gZnVuY3Rpb24gZm9ybS4KICAgICAgICB3aGlsZSAoICRMaW5lID1+IG17IFxbJSBccyogXGJUcmFuc2xhdGVcKChbXigpXSp8XChbXigpXSpcKSkqXCk/ICg/PEZpbHRlcj4uKj8pICVcXSB9Z3N4bSApIHsKCiAgICAgICAgICAgICMgQ2hlY2sgaWYgb3V0cHV0IGlzIG5vdCBmaWx0ZXJlZC4KICAgICAgICAgICAgaWYgKCAkK3tGaWx0ZXJ9ICF+IG17IFxzKiAoPzpGSUxURVJ8XHwpIFxzKiAoPzpodG1sfEpTT04pIH1zeG0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgLj0gIkVSUk9SOiBGb3VuZCB1bmZpbHRlcmVkIHRyYW5zbGF0aW9uIHN0cmluZyBpbiBsaW5lKCAkQ291bnRlciApOiAkTGluZVxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBQcm9jZXNzIGxpbmVzIHRoYXQgZGVhbCB3aXRoIHRyYW5zbGF0aW9uIG91dHB1dCBpbiBmaWx0ZXIgZm9ybS4KICAgICAgICB3aGlsZSAoICRMaW5lID1+IG17ICg/OkZJTFRFUnxcfCkgXHMqIFxiVHJhbnNsYXRlICg/PEZpbHRlcj4uKj8pICVcXSB9Z3N4bSApIHsKCiAgICAgICAgICAgICMgQ2hlY2sgaWYgb3V0cHV0IGlzIG5vdCBmaWx0ZXJlZC4KICAgICAgICAgICAgaWYgKCAkK3tGaWx0ZXJ9ICF+IG17IFxzKiAoPzpGSUxURVJ8XHwpIFxzKiAoPzpodG1sfEpTT04pIH1zeG0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgLj0gIkVSUk9SOiBGb3VuZCB1bmZpbHRlcmVkIHRyYW5zbGF0aW9uIHN0cmluZyBpbiBsaW5lKCAkQ291bnRlciApOiAkTGluZVxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKAogICAgICAgICAgICAiJHtFcnJvck1lc3NhZ2V9UGxlYXNlIG1ha2Ugc3VyZSB0byBwcm9jZXNzIHRyYW5zbGF0ZWQgc3RyaW5ncyB3aXRoIGh0bWwgb3IgSlNPTiBmaWx0ZXIuXG4iCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Whitespace/FourSpaces.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OldoaXRlc3BhY2U6OkZvdXJTcGFjZXM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpCYXNlKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgIG15ICRDb3VudGVyOwogICAgbXkgJEVycm9yTWVzc2FnZTsKICAgIG15ICRJc1RleHRBcmVhID0gMDsgICAgIyBpbiBjb25maWcgZmlsZXMKICAgIG15ICRJc1NPUE1EYXRhID0gMDsgICAgIyBkYXRhYmFzZSBlbnRyaWVzIG9mIHNvcG0gZmlsZXMKCiAgICAjCiAgICAjIENoZWNrIGZvciBzdGVwcyBvZiBmb3VyIHNwYWNlcwogICAgIwogICAgTElORToKICAgIGZvciBteSAkTGluZSAoIHNwbGl0KCAvXG4vLCAkQ29kZSApICkgewoKICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAjIHRleHRhcmVhcyBpbiBjb25maWcgZmlsZXMKICAgICAgICBpZiAoICRMaW5lID1+IC88VGV4dEFyZWE+LyApIHsKICAgICAgICAgICAgJElzVGV4dEFyZWEgPSAxOwogICAgICAgIH0KICAgICAgICBpZiAoICRMaW5lID1+IC88XC9UZXh0QXJlYT4vICkgewogICAgICAgICAgICAkSXNUZXh0QXJlYSA9IDA7CiAgICAgICAgfQoKICAgICAgICAjIGRhdGFiYXNlIGVudHJpZXMgb2Ygc29wbSBmaWxlcwogICAgICAgIGlmICggJExpbmUgPX4gbXsgPERhdGEgXHN9c214ICkgewogICAgICAgICAgICAkSXNTT1BNRGF0YSA9IDE7CiAgICAgICAgfQogICAgICAgIGlmICggJExpbmUgPX4gbXsgPCBcLyBEYXRhID4gfXNteCApIHsKICAgICAgICAgICAgJElzU09QTURhdGEgPSAwOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkTGluZSA9fiAvXiggKykvICkgewogICAgICAgICAgICBteSAkU3BhY2VTdHJpbmcgPSAkMTsKICAgICAgICAgICAgbXkgJExlbmd0aCAgICAgID0gbGVuZ3RoICRTcGFjZVN0cmluZzsKCiAgICAgICAgICAgIGlmICggJExlbmd0aCAlIDQgJiYgISRJc1RleHRBcmVhICYmICEkSXNTT1BNRGF0YSApIHsKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkxpbmUgJENvdW50ZXI6ICRMaW5lXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7ClNwYWNlcyBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSBzaG91bGQgYmUgaW4gc3RlcHMgb2YgZm91ciEKJEVycm9yTWVzc2FnZQpFT0YKICAgIH0KfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Whitespace/Tabs.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OldoaXRlc3BhY2U6OlRhYnM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpCYXNlKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgIG15ICRDb3VudGVyID0gMTsKICAgIG15ICRFcnJvck1lc3NhZ2U7CgogICAgIwogICAgIyBDaGVjayBmb3Igc3RyYXkgdGFicwogICAgIwogICAgTElORToKICAgIGZvciBteSAkTGluZSAoIHNwbGl0KCAvXG4vLCAkQ29kZSApICkgewoKICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICBpZiAoICRMaW5lID1+IG0vXHQvICkgewogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICB9CgogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoPDwiRU9GIik7ClBsZWFzZSBzdWJzdGl0dXRlIGFsbCB0YWJ1bGF0b3JzIHdpdGggZm91ciBzcGFjZXMuCiRFcnJvck1lc3NhZ2UKRU9GCiAgICB9Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/Whitespace/TrailingWhitespace.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OldoaXRlc3BhY2U6OlRyYWlsaW5nV2hpdGVzcGFjZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkJhc2UpOwoKc3ViIHRyYW5zZm9ybV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgICMgUmVtb3ZlIHRyYWlsaW5nIHNwYWNlcyBhdCBlbmQgb2YgbGluZXMKICAgICRDb2RlID1+IHMvXiguKj8pWyBdK1xuLyQxXG4veG1zZzsKCiAgICAjIFJlbW92ZSBlbXB0eSB0cmFpbGluZyBsaW5lcwogICAgJENvZGUgPX4gcy9cbihcc3xcbikrXHovXG4veG1zZzsKCiAgICByZXR1cm4gJENvZGU7Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/XML/ConfigDescription.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6Q29uZmlnRGVzY3JpcHRpb247Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpCYXNlKTsKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgIG15ICggJEVycm9yTWVzc2FnZSwgJENvdW50ZXIsICROYXZCYXIgKTsKCiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKICAgICAgICAkQ291bnRlcisrOwogICAgICAgIGlmICggJExpbmUgPX4gLzxOYXZCYXIvICkgewogICAgICAgICAgICAkTmF2QmFyID0gMTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkTGluZSA9fiAvPFwvTmF2QmFyLyApIHsKICAgICAgICAgICAgJE5hdkJhciA9IDA7CiAgICAgICAgfQoKICAgICAgICBpZiAoICEkTmF2QmFyICYmICRMaW5lID1+IC88RGVzY3JpcHRpb24uKz8+KC4pLio/KC4pXCk/PFwvRGVzY3JpcHRpb24+LyApIHsKICAgICAgICAgICAgaWYgKCAkMiBuZSAnLicgJiYgJDIgbmUgJz8nICYmICQyIG5lICchJyApIHsKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkxpbmUgJENvdW50ZXI6ICRMaW5lXG4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJDEgIX4gL1tBLVrDi8Ocw5YiXS8gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpQbGVhc2UgbWFrZSBjb21wbGV0ZSBzZW50ZW5jZXMgaW4gPERlc2NyaXB0aW9uPiB0YWdzOiBzdGFydCB3aXRoIGEgY2FwaXRhbCBsZXR0ZXIgYW5kIGZpbmlzaCB3aXRoIGEgZG90LgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/XML/ConfigSyntax.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6Q29uZmlnU3ludGF4OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6QmFzZSk7CgojIFRoaXMgcGx1Z2luIGRvZXMgbm90IHRyYW5zZm9ybSBhbnkgZmlsZXMuIEZvbGxvd2luZyBtZXRob2QgaXMgaW1wbGVtZW50ZWQgb25seSBiZWNhdXNlIGl0J3MgZXhlY3V0ZWQgYmVmb3JlCiMgICB2YWxpZGF0ZV9zb3VyY2UgYW5kIGNvbnRhaW5zIGZpbGVuYW1lIG9mIHRoZSBmaWxlLiBGaWxlbmFtZSBpcyBzYXZlZCBpbiAkU2VsZiBmb3IgbGF0ZXIgdXNlLgpzdWIgdHJhbnNmb3JtX2ZpbGUgewogICAgbXkgKCAkU2VsZiwgJEZpbGVuYW1lICkgPSBAXzsKCiAgICAjIFN0b3JlIGZpbGVuYW1lIGZvciBsYXRlciB1c2UuCiAgICAkU2VsZi0+e0ZpbGVuYW1lfSA9ICRGaWxlbmFtZTsKCiAgICByZXR1cm47Cn0KCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgIG15ICRFcnJvck1lc3NhZ2U7CiAgICBteSAkQ291bnRlcjsKCiAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCAvXG4vLCAkQ29kZSApIHsKICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAjIENoZWNrIGZpcnN0IFhNTCBsaW5lCiAgICAgICAgaWYgKCAkQ291bnRlciA9PSAxICkgewogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkTGluZSAgICAhfiAvXjxcP3htbC4rXD8+LwogICAgICAgICAgICAgICAgfHwgJExpbmUgIX4gL3ZlcnNpb249WyInJ10xLlswMV1bIiddLwogICAgICAgICAgICAgICAgfHwgJExpbmUgIX4gL2VuY29kaW5nPVsiJ10oPzppc28tODg1OS0xfHV0Zi04KVsiJ10vaQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgLj0gIlRoZSBmaXJzdCBsaW5lIG9mIHRoZSBmaWxlIHNob3VsZCBoYXZlIHRoZSBjb250ZW50IDw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cInV0Zi04XCIgPz4uXG4iOwogICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAiTGluZSAkQ291bnRlcjogJExpbmVcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgVmFsaWRhdGUgb3RvYm9fY29uZmlnIHRhZwogICAgICAgIGlmICggJExpbmUgPX4gL148b3RvYm9fY29uZmlnLyApIHsKCiAgICAgICAgICAgICMgT1RPQk8gMTAgc3RhcnRlZCB3aXRoIHZlcnNpb249IjIuMCIKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbXkgJFZlcnNpb24gPSAnMi4wJzsKCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJExpbmUgIX4gL2luaXQ9IihGcmFtZXdvcmt8QXBwbGljYXRpb258Q29uZmlnfENoYW5nZXMpIi8KICAgICAgICAgICAgICAgICAgICB8fCAkTGluZSAhfiAvdmVyc2lvbj0iJFZlcnNpb24iLwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgICAgIC49ICJUaGUgPG90b2JvX2NvbmZpZz4tdGFnIGhhcyBtaXNzaW5nIG9yIGluY29ycmVjdCBhdHRyaWJ1dGVzLiBFeGFtcGxlTGluZTogPG90b2JvX2NvbmZpZyB2ZXJzaW9uPVwiMi4wXCIgaW5pdD1cIkFwcGxpY2F0aW9uXCI+XG4iOwogICAgICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIkxpbmUgJENvdW50ZXI6ICRMaW5lXG4iOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkRXJyb3JNZXNzYWdlKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIiRFcnJvck1lc3NhZ2UiKTsKICAgIH0KfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/XML/Configuration/Navigation.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6Q29uZmlndXJhdGlvbjo6TmF2aWdhdGlvbjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkJhc2UpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgbXkgKCAkQ291bnRlciwgJEVycm9yTWVzc2FnZSApOwoKICAgIG15ICRDdXJyZW50U2V0dGluZ05hbWU7CgogICAgTElORToKICAgIGZvciBteSAkTGluZSAoIHNwbGl0IC9cbi8sICRDb2RlICkgewogICAgICAgICRDb3VudGVyKys7CgogICAgICAgIGlmICggJExpbmUgPX4gbXs8U2V0dGluZ1xzK05hbWU9IiguKj8pIn1zbXggKSB7CiAgICAgICAgICAgICRDdXJyZW50U2V0dGluZ05hbWUgPSAkMTsKICAgICAgICB9CiAgICAgICAgbXkgKCROYXZpZ2F0aW9uQ29udGVudCkgPSAkTGluZSA9fiBtezxOYXZpZ2F0aW9uPiguKj8pPC9OYXZpZ2F0aW9uPn1zbXg7CgogICAgICAgIG5leHQgTElORSBpZiAhJE5hdmlnYXRpb25Db250ZW50OwoKICAgICAgICBteSBAUnVsZXMgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgPT4gJ1ZhbGlkIHRvcGxldmVsIGVudHJpZXMnLAogICAgICAgICAgICAgICAgTWF0Y2hTZXR0aW5nTmFtZSAgICAgICA9PiBxcnsuKn0sCiAgICAgICAgICAgICAgICBNYXRjaE5hdmlnYXRpb25WYWx1ZSAgID0+IHFyey4qfSwKICAgICAgICAgICAgICAgIFJlcXVpcmVOYXZpZ2F0aW9uTWF0Y2ggPT4gcXJ7XihDbG91ZFNlcnZpY2V8Q29yZXxEYWVtb258R2VuZXJpY0ludGVyZmFjZXxGcm9udGVuZHxXZWJBcHApKDo6fCQpfSwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSAgICAgICAgICAgPT4KICAgICAgICAgICAgICAgICAgICAnSW52YWxpZCB0b3AgbGV2ZWwgZ3JvdXAgZm91bmQgKG9ubHkgQ2xvdWRTZXJ2aWNlfENvcmV8RGFlbW9ufEdlbmVyaWNJbnRlcmZhY2V8RnJvbnRlbmR8V2ViQXBwIGFyZSBhbGxvd2VkKS4nLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgID0+ICdFdmVudCBoYW5kbGVycycsCiAgICAgICAgICAgICAgICBNYXRjaFNldHRpbmdOYW1lICAgICAgID0+IHFyezo6RXZlbnRNb2R1bGV9LAogICAgICAgICAgICAgICAgTWF0Y2hOYXZpZ2F0aW9uVmFsdWUgICA9PiBxcnsuKn0sCiAgICAgICAgICAgICAgICBSZXF1aXJlTmF2aWdhdGlvbk1hdGNoID0+IHFye15Db3JlOjpFdmVudDo6fSwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSAgICAgICAgICAgPT4gIkV2ZW50IGhhbmRsZXIgcmVnaXN0cmF0aW9ucyBzaG91bGQgYmUgZ3JvdXBlZCBpbiAnQ29yZTo6RXZlbnQ6OiouIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICA9PiAnVmFsaWQgRnJvbnRlbmQgc3ViZ3JvdXBzJywKICAgICAgICAgICAgICAgIE1hdGNoU2V0dGluZ05hbWUgICAgICAgPT4gcXJ7Lip9LAogICAgICAgICAgICAgICAgTWF0Y2hOYXZpZ2F0aW9uVmFsdWUgICA9PiBxcnteRnJvbnRlbmR9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gZW50cmllcyBhbGxvd2VkIGluICJGcm9udGVuZCIgZGlyZWN0bHkKICAgICAgICAgICAgICAgIFJlcXVpcmVOYXZpZ2F0aW9uTWF0Y2ggPT4gcXJ7XkZyb250ZW5kOjooQWRtaW58QWdlbnR8QmFzZXxDdXN0b21lcnxQdWJsaWN8RXh0ZXJuYWwpKDo6fCQpfSwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSAgICAgICAgICAgPT4KICAgICAgICAgICAgICAgICAgICAnSW52YWxpZCB0b3AgRnJvbnRlbmQgc3ViZ3JvdXAgZm91bmQgKG9ubHkgQWRtaW58QWdlbnR8QmFzZXxDdXN0b21lcnxQdWJsaWN8RXh0ZXJuYWwgYXJlIGFsbG93ZWQpLicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgPT4gJ01haW4gTG9hZGVyIGNvbmZpZycsCiAgICAgICAgICAgICAgICBNYXRjaFNldHRpbmdOYW1lICAgICAgID0+IHFye15Mb2FkZXI6OihBZ2VudHxDdXN0b21lcnxFbmFibGVkKX0sCiAgICAgICAgICAgICAgICBNYXRjaE5hdmlnYXRpb25WYWx1ZSAgID0+IHFyey4qfSwKICAgICAgICAgICAgICAgIFJlcXVpcmVOYXZpZ2F0aW9uTWF0Y2ggPT4gcXJ7XkZyb250ZW5kOjpCYXNlOjpMb2FkZXIkfSwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSAgICAgICAgICAgPT4gIk1haW4gTG9hZGVyIHNldHRpbmdzIHNob3VsZCBiZSBncm91cGVkIGluICdGcm9udGVuZDo6QmFzZTo6TG9hZGVyJy4iLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgID0+ICdMb2FkZXIgY29uZmlnIGZvciBBZG1pbiBpbnRlcmZhY2UnLAogICAgICAgICAgICAgICAgTWF0Y2hTZXR0aW5nTmFtZSAgICAgICA9PiBxcnteTG9hZGVyOjpNb2R1bGU6OkFkbWlufSwKICAgICAgICAgICAgICAgIE1hdGNoTmF2aWdhdGlvblZhbHVlICAgPT4gcXJ7Lip9LAogICAgICAgICAgICAgICAgUmVxdWlyZU5hdmlnYXRpb25NYXRjaCA9PiBxcnteRnJvbnRlbmQ6OkFkbWluOjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcn0sCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgICAgICAgICAgID0+CiAgICAgICAgICAgICAgICAgICAgIkxvYWRlciBjb25maWcgZm9yIEFkbWluIGludGVyZmFjZSBzaG91bGQgYmUgZ3JvdXBlZCBpbiAnRnJvbnRlbmQ6OkFkbWluOjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcicuIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICA9PiAnTG9hZGVyIGNvbmZpZyBmb3IgQWdlbnQgaW50ZXJmYWNlJywKICAgICAgICAgICAgICAgIE1hdGNoU2V0dGluZ05hbWUgICAgICAgPT4gcXJ7XkxvYWRlcjo6TW9kdWxlOjpBZ2VudH0sCiAgICAgICAgICAgICAgICBNYXRjaE5hdmlnYXRpb25WYWx1ZSAgID0+IHFyey4qfSwKICAgICAgICAgICAgICAgIFJlcXVpcmVOYXZpZ2F0aW9uTWF0Y2ggPT4gcXJ7XkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXJ9LAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlICAgICAgICAgICA9PgogICAgICAgICAgICAgICAgICAgICJMb2FkZXIgc2V0dGluZ3MgZm9yIEFnZW50IGludGVyZmFjZSBzaG91bGQgYmUgZ3JvdXBlZCBpbiAnRnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcicuIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICA9PiAnTG9hZGVyIGNvbmZpZyBmb3IgQ3VzdG9tZXIgaW50ZXJmYWNlJywKICAgICAgICAgICAgICAgIE1hdGNoU2V0dGluZ05hbWUgICAgICAgPT4gcXJ7XkxvYWRlcjo6TW9kdWxlOjpDdXN0b21lcn0sCiAgICAgICAgICAgICAgICBNYXRjaE5hdmlnYXRpb25WYWx1ZSAgID0+IHFyey4qfSwKICAgICAgICAgICAgICAgIFJlcXVpcmVOYXZpZ2F0aW9uTWF0Y2ggPT4gcXJ7XkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXJ9LAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlICAgICAgICAgICA9PgogICAgICAgICAgICAgICAgICAgICJMb2FkZXIgc2V0dGluZ3MgZm9yIEN1c3RvbWVyIGludGVyZmFjZSBzaG91bGQgYmUgZ3JvdXBlZCBpbiAnRnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcicuIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICA9PiAnTG9hZGVyIGNvbmZpZyBmb3IgUHVibGljIGludGVyZmFjZScsCiAgICAgICAgICAgICAgICBNYXRjaFNldHRpbmdOYW1lICAgICAgID0+IHFye15Mb2FkZXI6Ok1vZHVsZTo6UHVibGljfSwKICAgICAgICAgICAgICAgIE1hdGNoTmF2aWdhdGlvblZhbHVlICAgPT4gcXJ7Lip9LAogICAgICAgICAgICAgICAgUmVxdWlyZU5hdmlnYXRpb25NYXRjaCA9PiBxcnteRnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlUmVnaXN0cmF0aW9ufSwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSAgICAgICAgICAgPT4KICAgICAgICAgICAgICAgICAgICAiTG9hZGVyIHNldHRpbmdzIGZvciBQdWJsaWMgaW50ZXJmYWNlIHNob3VsZCBiZSBncm91cGVkIGluICdGcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb24nLiIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgPT4gJ0Zyb250ZW5kIG5hdmlnYXRpb24gY29uZmlnIGZvciBBZG1pbiBpbnRlcmZhY2UnLAogICAgICAgICAgICAgICAgTWF0Y2hTZXR0aW5nTmFtZSAgICAgICA9PiBxcnteRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZG1pbn0sCiAgICAgICAgICAgICAgICBNYXRjaE5hdmlnYXRpb25WYWx1ZSAgID0+IHFyey4qfSwKICAgICAgICAgICAgICAgIFJlcXVpcmVOYXZpZ2F0aW9uTWF0Y2ggPT4gcXJ7XkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudX0sCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgICAgICAgICAgID0+CiAgICAgICAgICAgICAgICAgICAgIkZyb250ZW5kIG5hdmlnYXRpb24gY29uZmlnIGZvciBBZG1pbiBpbnRlcmZhY2Ugc2hvdWxkIGJlIGdyb3VwZWQgaW4gJ0Zyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudScuIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICA9PiAnRnJvbnRlbmQgbmF2aWdhdGlvbiBjb25maWcgZm9yIEFnZW50IGludGVyZmFjZScsCiAgICAgICAgICAgICAgICBNYXRjaFNldHRpbmdOYW1lICAgICAgID0+IHFye15Gcm9udGVuZDo6TmF2aWdhdGlvbiMjI0FnZW50fSwKICAgICAgICAgICAgICAgIE1hdGNoTmF2aWdhdGlvblZhbHVlICAgPT4gcXJ7Lip9LAogICAgICAgICAgICAgICAgUmVxdWlyZU5hdmlnYXRpb25NYXRjaCA9PiBxcnteRnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51fSwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSAgICAgICAgICAgPT4KICAgICAgICAgICAgICAgICAgICAiRnJvbnRlbmQgbmF2aWdhdGlvbiBjb25maWcgZm9yIEFnZW50IGludGVyZmFjZSBzaG91bGQgYmUgZ3JvdXBlZCBpbiAnRnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51Jy4iLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgID0+ICdGcm9udGVuZCBuYXZpZ2F0aW9uIGNvbmZpZyBmb3IgQ3VzdG9tZXIgaW50ZXJmYWNlJywKICAgICAgICAgICAgICAgIE1hdGNoU2V0dGluZ05hbWUgICAgICAgPT4gcXJ7XkN1c3RvbWVyRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNDdXN0b21lcn0sCiAgICAgICAgICAgICAgICBNYXRjaE5hdmlnYXRpb25WYWx1ZSAgID0+IHFyey4qfSwKICAgICAgICAgICAgICAgIFJlcXVpcmVOYXZpZ2F0aW9uTWF0Y2ggPT4gcXJ7XkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudX0sCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgICAgICAgICAgID0+CiAgICAgICAgICAgICAgICAgICAgIkZyb250ZW5kIG5hdmlnYXRpb24gY29uZmlnIGZvciBDdXN0b21lciBpbnRlcmZhY2Ugc2hvdWxkIGJlIGdyb3VwZWQgaW4gJ0Zyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudScuIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICA9PiAnRnJvbnRlbmQgbmF2aWdhdGlvbiBjb25maWcgZm9yIFB1YmxpYyBpbnRlcmZhY2UnLAogICAgICAgICAgICAgICAgTWF0Y2hTZXR0aW5nTmFtZSAgICAgICA9PiBxcnteUHVibGljRnJvbnRlbmQ6OihNb2R1bGV8TmF2aWdhdGlvbil9LAogICAgICAgICAgICAgICAgTWF0Y2hOYXZpZ2F0aW9uVmFsdWUgICA9PiBxcnsuKn0sCiAgICAgICAgICAgICAgICBSZXF1aXJlTmF2aWdhdGlvbk1hdGNoID0+IHFye15Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb259LAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlICAgICAgICAgICA9PgogICAgICAgICAgICAgICAgICAgICJNb2R1bGUgcmVnaXN0cmF0aW9uIGNvbmZpZyBmb3IgUHVibGljIGludGVyZmFjZSBzaG91bGQgYmUgZ3JvdXBlZCBpbiAnRnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlUmVnaXN0cmF0aW9uJy4iLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgID0+ICdOYXZpZ2F0aW9uIG1vZHVsZSBjb25maWcnLAogICAgICAgICAgICAgICAgTWF0Y2hTZXR0aW5nTmFtZSAgICAgICA9PiBxcnteRnJvbnRlbmQ6Ok5hdmlnYXRpb25Nb2R1bGV9LAogICAgICAgICAgICAgICAgTWF0Y2hOYXZpZ2F0aW9uVmFsdWUgICA9PiBxcnsuKn0sCiAgICAgICAgICAgICAgICBSZXF1aXJlTmF2aWdhdGlvbk1hdGNoID0+IHFye15Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6QWRtaW5PdmVydmlld30sCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgICAgICAgICAgID0+CiAgICAgICAgICAgICAgICAgICAgIk5hdmlnYXRpb24gbW9kdWxlIGNvbmZpZyBzaG91bGQgYmUgZ3JvdXBlZCBpbiAnRnJvbnRlbmQ6OkFkbWluOjpNb2R1bGVSZWdpc3RyYXRpb246OkFkbWluT3ZlcnZpZXcnLiIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgPT4gJ1NlYXJjaCByb3V0ZXIgY29uZmlnIGZvciBBZG1pbiBpbnRlcmZhY2UnLAogICAgICAgICAgICAgICAgTWF0Y2hTZXR0aW5nTmFtZSAgICAgICA9PiBxcnteRnJvbnRlbmQ6OlNlYXJjaC4qPyMjI0FkbWlufSwKICAgICAgICAgICAgICAgIE1hdGNoTmF2aWdhdGlvblZhbHVlICAgPT4gcXJ7Lip9LAogICAgICAgICAgICAgICAgUmVxdWlyZU5hdmlnYXRpb25NYXRjaCA9PiBxcnteRnJvbnRlbmQ6OkFkbWluOjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51OjpTZWFyY2h9LAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlICAgICAgICAgICA9PgogICAgICAgICAgICAgICAgICAgICJTZWFyY2ggcm91dGVyIGNvbmZpZyBmb3IgQWRtaW4gaW50ZXJmYWNlIHNob3VsZCBiZSBncm91cGVkIGluICdGcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6U2VhcmNoJy4iLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgID0+ICdTZWFyY2ggcm91dGVyIGNvbmZpZyBmb3IgQWdlbnQgaW50ZXJmYWNlJywKICAgICAgICAgICAgICAgIE1hdGNoU2V0dGluZ05hbWUgICAgICAgPT4gcXJ7XkZyb250ZW5kOjpTZWFyY2guKj8jIyNBZ2VudH0sCiAgICAgICAgICAgICAgICBNYXRjaE5hdmlnYXRpb25WYWx1ZSAgID0+IHFyey4qfSwKICAgICAgICAgICAgICAgIFJlcXVpcmVOYXZpZ2F0aW9uTWF0Y2ggPT4gcXJ7XkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTo6U2VhcmNofSwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSAgICAgICAgICAgPT4KICAgICAgICAgICAgICAgICAgICAiU2VhcmNoIHJvdXRlciBjb25maWcgZm9yIEFnZW50IGludGVyZmFjZSBzaG91bGQgYmUgZ3JvdXBlZCBpbiAnRnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246OlNlYXJjaCcuIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICA9PiAnT3V0cHV0IGZpbHRlcnMnLAogICAgICAgICAgICAgICAgTWF0Y2hTZXR0aW5nTmFtZSAgICAgICA9PiBxcnsoT3V0cHV0OjpGaWx0ZXJ8T3V0cHV0RmlsdGVyKX0sCiAgICAgICAgICAgICAgICBNYXRjaE5hdmlnYXRpb25WYWx1ZSAgID0+IHFyey4qfSwKICAgICAgICAgICAgICAgIFJlcXVpcmVOYXZpZ2F0aW9uTWF0Y2ggPT4gcXJ7XkZyb250ZW5kOjpCYXNlOjpPdXRwdXRGaWx0ZXJ9LAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlICAgICAgICAgICA9PgogICAgICAgICAgICAgICAgICAgICJPdXRwdXQgZmlsdGVyIHNldHRpbmdzIHNob3VsZCBiZSBncm91cGVkIGluICdGcm9udGVuZDo6QmFzZTo6T3V0cHV0RmlsdGVyJyBvciBzdWJncm91cHMuIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICA9PiAnVmFsaWQgZnJvbnRlbmQgdmlld3MnLAogICAgICAgICAgICAgICAgTWF0Y2hTZXR0aW5nTmFtZSAgICAgICA9PiBxcnsuKn0sCiAgICAgICAgICAgICAgICBNYXRjaE5hdmlnYXRpb25WYWx1ZSAgID0+IHFye15Gcm9udGVuZDo6KEFkbWlufEFnZW50fEN1c3RvbWVyfFB1YmxpYyk6OiguKzo6KSpWaWV3LiskfSwKICAgICAgICAgICAgICAgIFJlcXVpcmVOYXZpZ2F0aW9uTWF0Y2ggPT4gcXJ7XkZyb250ZW5kOjooQWRtaW58QWdlbnR8Q3VzdG9tZXJ8UHVibGljKTo6Vmlldzo6LiskfSwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSAgICAgICAgICAgPT4KICAgICAgICAgICAgICAgICAgICAiU2NyZWVuIHNwZWNpZmljIHNldHRpbmdzIHNob3VsZCBiZSBhZGRlZCBpbiBGcm9udGVuZDo6KEFkbWlufEFnZW50fEN1c3RvbWVyfFB1YmxpYyk6OlZpZXcuIiwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBSVUxFOgogICAgICAgIGZvciBteSAkUnVsZSAoQFJ1bGVzKSB7CiAgICAgICAgICAgIG5leHQgUlVMRSBpZiAkQ3VycmVudFNldHRpbmdOYW1lICF+ICRSdWxlLT57TWF0Y2hTZXR0aW5nTmFtZX07CiAgICAgICAgICAgIG5leHQgUlVMRSBpZiAkTmF2aWdhdGlvbkNvbnRlbnQgICF+ICRSdWxlLT57TWF0Y2hOYXZpZ2F0aW9uVmFsdWV9OwoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJFJ1bGUtPntTa2lwRm9yRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFufQogICAgICAgICAgICAgICAgJiYgJFNlbGYtPklzRnJhbWV3b3JrVmVyc2lvbkxlc3NUaGFuKCBAeyAkUnVsZS0+e1NraXBGb3JGcmFtZXdvcmtWZXJzaW9uTGVzc1RoYW59IH0gKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuZXh0IFJVTEU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJE5hdmlnYXRpb25Db250ZW50ICF+ICRSdWxlLT57UmVxdWlyZU5hdmlnYXRpb25NYXRjaH0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgLj0gIkludmFsaWQgbmF2aWdhdGlvbiB2YWx1ZSBmb3VuZCBmb3Igc2V0dGluZyAkQ3VycmVudFNldHRpbmdOYW1lOiAkUnVsZS0+e0Vycm9yTWVzc2FnZX1cbiI7CiAgICAgICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwpQcm9ibGVtcyB3ZXJlIGZvdW5kIGluIHRoZSBuYXZpZ2F0aW9uIHN0cnVjdHVyZSBvZiB0aGUgWE1MIGNvbmZpZ3VyYXRpb246CiRFcnJvck1lc3NhZ2UKRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/XML/Configuration/UnitTestBlacklist.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6Q29uZmlndXJhdGlvbjo6VW5pdFRlc3RCbGFja2xpc3Q7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpCYXNlKTsKCj1oZWFkMSBTWU5PUFNJUwoKVGhpcyBwbHVnaW4gY2hlY2tzIGlzIGEgYmxhY2tsaXN0ZWQgdW5pdCB0ZXN0IHZpYSBDPFVuaXRUZXN0OjpCbGFja2xpc3Q+IGZlYXR1cmUgaXMgcHJlc2VudCBpbiB0aGUgZmlsZXN5c3RlbS4KCj1jdXQKCnN1YiB2YWxpZGF0ZV9zb3VyY2UgewogICAgbXkgKCAkU2VsZiwgJENvZGUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggQ29kZSA9PiAkQ29kZSApOwoKICAgIG15ICRFcnJvck1lc3NhZ2U7CiAgICBteSAkUGFja2FnZU5hbWUgPSAnJzsKCiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lICggc3BsaXQgL1xuLywgJENvZGUgKSB7CgogICAgICAgIGlmICggISRQYWNrYWdlTmFtZSAmJiAkTGluZSA9fiBtezxTZXR0aW5nLio/TmFtZT0iVW5pdFRlc3Q6OkJsYWNrbGlzdCMjI1xkKy0oLio/KSJ9c20gKSB7CiAgICAgICAgICAgICRQYWNrYWdlTmFtZSA9ICQxOwogICAgICAgICAgICBuZXh0IExJTkU7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRQYWNrYWdlTmFtZSAmJiAkTGluZSA9fiAvPEl0ZW0uKj8+KC4qKTxcL0l0ZW0+LyApIHsKCiAgICAgICAgICAgIG15IEBUZXN0TmFtZXMgPSBzcGxpdCAvXC8vLCAkMTsKICAgICAgICAgICAgJFRlc3ROYW1lc1stMV0gPSAkUGFja2FnZU5hbWUgLiAkVGVzdE5hbWVzWy0xXTsKCiAgICAgICAgICAgIG15ICRQYWNrYWdlVW5pdFRlc3QgPSAnc2NyaXB0cy90ZXN0LycgLiBqb2luKCAnLycsIEBUZXN0TmFtZXMgKTsKICAgICAgICAgICAgaWYgKCAhZ3JlcCB7ICRfIGVxICRQYWNrYWdlVW5pdFRlc3QgfSBAVGlkeUFsbDo6T1RPQk86OkZpbGVMaXN0ICkgewogICAgICAgICAgICAgICAgJEVycm9yTWVzc2FnZSAuPSAkUGFja2FnZVVuaXRUZXN0IC4gIlxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAkTGluZSA9fiAvPFwvU2V0dGluZz4vICkgewogICAgICAgICAgICAkUGFja2FnZU5hbWUgPSAnJzsKICAgICAgICAgICAgbmV4dCBMSU5FOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEVycm9yTWVzc2FnZSkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKDw8IkVPRiIpOwoKCkluIG9yZGVyIHRvIGJsYWNrbGlzdCB1bml0IHRlc3QgZmlsZShzKSwgeW91IG5lZWQgdG8gZmlyc3QgcHJvdmlkZSBhIHN1aXRhYmxlIHJlcGxhY2VtZW50IHVuZGVyIHRoZXNlIHBhdGgocyk6CiRFcnJvck1lc3NhZ2UKRU9GCiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/XML/Configuration/XSDValidator.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6Q29uZmlndXJhdGlvbjo6WFNEVmFsaWRhdG9yOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpCYXNlKTsKCnN1YiB2YWxpZGF0ZV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlbmFtZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBGaWxlbmFtZSA9PiAkRmlsZW5hbWUgKTsKCiAgICAjIERlZmF1bHQ6IE9UT0JPIDEwKyBjb25maWd1cmF0aW9uIGZpbGVzIGluIEtlcm5lbC9Db25maWcvRmlsZXMvWE1MLgogICAgbXkgJFhTREZpbGUgICA9IGRpcm5hbWUoX19GSUxFX18pIC4gJy8uLi8uLi9TdGF0aWNGaWxlcy9YU0QvQ29uZmlndXJhdGlvbi54c2QnOwogICAgbXkgJFdhbnRlZERpciA9ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTCc7CgogICAgaWYgKCAkRmlsZW5hbWUgIX4gbXskV2FudGVkRGlyL1teL10rWy5deG1sJH1zbXggKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoCiAgICAgICAgICAgICJDb25maWd1cmF0aW9uIGZpbGUgJEZpbGVuYW1lIGRvZXMgbm90IGV4aXN0IGluIHRoZSBjb3JyZWN0IGRpcmVjdG9yeSAkV2FudGVkRGlyLlxuIgogICAgICAgICk7CiAgICB9CgogICAgbXkgJENvbW1hbmQgPSBzcHJpbnRmKCAieG1sbGludCAtLW5vb3V0IC0tbm9uZXQgLS1zY2hlbWEgJXMgJXMgJXMgMj4mMSIsICRYU0RGaWxlLCAkU2VsZi0+YXJndigpLCAkRmlsZW5hbWUgKTsKICAgIG15ICRPdXRwdXQgID0gYCRDb21tYW5kYDsKCiAgICAjIElmIGV4ZWN1dGlvbiBmYWlsZWQsIHdhcm4gYWJvdXQgaW5zdGFsbGluZyBwYWNrYWdlLgogICAgaWYgKCAke15DSElMRF9FUlJPUl9OQVRJVkV9ID09IC0xICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCIneG1sbGludCcgd2FzIG5vdCBmb3VuZCwgcGxlYXNlIGluc3RhbGwgaXQuXG4iKTsKICAgIH0KCiAgICBpZiAoICR7XkNISUxEX0VSUk9SX05BVElWRX0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIiRPdXRwdXRcbiIpOyAgICAjIG5vbi16ZXJvIGV4aXQgY29kZQogICAgfQp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/XML/Database/XSDValidator.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6RGF0YWJhc2U6OlhTRFZhbGlkYXRvcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6QmFzZSk7CgpzdWIgdmFsaWRhdGVfZmlsZSB7CiAgICBteSAoICRTZWxmLCAkRmlsZW5hbWUgKSA9IEBfOwogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBGaWxlbmFtZSA9PiAkRmlsZW5hbWUgKTsKCiAgICBteSAkWFNERmlsZSA9IGRpcm5hbWUoX19GSUxFX18pIC4gJy8uLi8uLi9TdGF0aWNGaWxlcy9YU0QvRGF0YWJhc2UueHNkJzsKICAgIG15ICRDTUQgICAgID0gInhtbGxpbnQgLS1ub291dCAtLW5vbmV0IC0tc2NoZW1hICRYU0RGaWxlIjsKCiAgICBteSAkQ29tbWFuZCA9IHNwcmludGYoICIlcyAlcyAlcyAyPiYxIiwgJENNRCwgJFNlbGYtPmFyZ3YoKSwgJEZpbGVuYW1lICk7CiAgICBteSAkT3V0cHV0ICA9IGAkQ29tbWFuZGA7CgogICAgIyBJZiBleGVjdXRpb24gZmFpbGVkLCB3YXJuIGFib3V0IGluc3RhbGxpbmcgcGFja2FnZS4KICAgIGlmICggJHteQ0hJTERfRVJST1JfTkFUSVZFfSA9PSAtMSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiJ3htbGxpbnQnIHdhcyBub3QgZm91bmQsIHBsZWFzZSBpbnN0YWxsIGl0LlxuIik7CiAgICB9CgogICAgaWYgKCAke15DSElMRF9FUlJPUl9OQVRJVkV9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCIkT3V0cHV0XG4iKTsgICAgIyBub24temVybyBleGl0IGNvZGUKICAgIH0KfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/XML/Database/KeyLength.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6RGF0YWJhc2U6OktleUxlbmd0aDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkJhc2UpOwoKc3ViIHZhbGlkYXRlX3NvdXJjZSB7CiAgICBteSAoICRTZWxmLCAkQ29kZSApID0gQF87CgogICAgcmV0dXJuICRDb2RlIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBDb2RlID0+ICRDb2RlICk7CgogICAgbXkgJENvdW50ZXI7CgogICAgIyBBY2NvdW50IGZvciAzLWJ5dGUgVVRGOCBjaGFyYWN0ZXJzLiBXZSBjdXJyZW50bHkgdXNlIHRoZSAidXRmOCIgY2hhcnNldCBpbiBNeVNRTCwKICAgICMgICB3aGljaCB1c2VzIHRocmVlIGJ5dGVzIHBlciBjaGFyYWN0ZXIuIEluIGZ1dHVyZSB3ZSBtaWdodCB3YW50IHRvIHN3aXRjaCB0byB1dGY4bWI0LAogICAgIyAgIHdoaWNoIHdvdWxkIGV2ZW4gZnVydGhlciByZWR1Y2UgcG9zc2libGUga2V5IGxlbmd0aCBieSB1c2luZyA0IGJ5dGVzIHBlciBjaGFyYWN0ZXIuCiAgICBteSAkQ2hhcmFjdGVyU2l6ZSA9IDM7CgogICAgIyBLZXlzIHdpdGggc2l6ZSBvZiBtb3JlIHRoYW4gMTAwMCBieXRlcyB3aWxsIGZhaWwgb24gTXlJU0FNIHN0b3JhZ2UgZW5naW5lIGluIE15U1FMLgogICAgbXkgJEtleVNpemVMaW1pdCA9IDEwMDA7CgogICAgbXkgJEN1cnJlbnRUYWJsZU5hbWU7CiAgICBteSAlQ3VycmVudENvbHVtbnM7CiAgICBteSAkQ3VycmVudEtleTsKICAgIG15ICRDdXJyZW50S2V5U2l6ZSA9IDA7CiAgICBteSAkRXJyb3JNZXNzYWdlOwoKICAgIG15ICVDb2x1bW5UeXBlMlNpemUgPSAoCiAgICAgICAgJ1RJTllJTlQnICAgPT4gMSwKICAgICAgICAnU01BTExJTlQnICA9PiAyLAogICAgICAgICdNRURJVU1JTlQnID0+IDMsCiAgICAgICAgJ0lOVCcgICAgICAgPT4gOCwKICAgICAgICAnSU5URUdFUicgICA9PiA4LAogICAgICAgICdCSUdJTlQnICAgID0+IDgsCiAgICAgICAgJ0RBVEUnICAgICAgPT4gOCwKICAgICAgICAnTE9OR0JMT0InICA9PiA0Mjk0OTY3Mjk1LAogICAgKTsKCiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lICggc3BsaXQgL1xuLywgJENvZGUgKSB7CiAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgIyBNYXRjaCB0YWJsZSBjcmVhdGUgb3BlbmluZyB0YWcgYW5kIHJlc2V0IGFueSBmb3VuZCBjb2x1bW5zLgogICAgICAgIGlmICggJExpbmUgPX4gbXsgPFRhYmxlKD86Q3JlYXRlKT8gLio/IE5hbWU9Iig/PFRhYmxlTmFtZT4uKj8pIiB9c214ICkgewogICAgICAgICAgICAkQ3VycmVudFRhYmxlTmFtZSA9ICQre1RhYmxlTmFtZX07CiAgICAgICAgICAgICVDdXJyZW50Q29sdW1ucyAgID0gKCk7CiAgICAgICAgICAgIG5leHQgTElORTsKICAgICAgICB9CgogICAgICAgICMgSWRlbnRpZnkgYWxsIGNvbHVtbnMgd2l0aCBkZWZpbmVkIHNpemUuCiAgICAgICAgaWYgKCAkTGluZSA9fiBteyA8Q29sdW1uIC4qPyBOYW1lPSIoPzxDb2x1bW5OYW1lPlx3KykiIH1zbXggKSB7CiAgICAgICAgICAgIG15ICRDb2x1bW5OYW1lID0gJCt7Q29sdW1uTmFtZX07CgogICAgICAgICAgICBpZiAoICRMaW5lID1+IG17IFR5cGU9Iig/PENvbHVtblR5cGU+XHcrKSIgfXNteCApIHsKICAgICAgICAgICAgICAgIG15ICRDb2x1bW5UeXBlID0gJCt7Q29sdW1uVHlwZX07CgogICAgICAgICAgICAgICAgIyBVc2UgaW50ZXJuYWwgc2l6ZXMgZm9yIHNvbWUgcHJlZGVmaW5lZCBjb2x1bW4gdHlwZXMuCiAgICAgICAgICAgICAgICBpZiAoICRDb2x1bW5UeXBlMlNpemV7IHVjICRDb2x1bW5UeXBlIH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJEN1cnJlbnRDb2x1bW5zeyRDb2x1bW5OYW1lfSA9ICRDb2x1bW5UeXBlMlNpemV7IHVjICRDb2x1bW5UeXBlIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBDaGVjayBpZiB0aGVyZSBpcyBhIGRlZmluZWQgc2l6ZSB0YWcuCiAgICAgICAgICAgICAgICBpZiAoICRMaW5lID1+IG17IFNpemU9Iig/PENvbHVtblNpemU+W1xkLF0rKSIgfXNteCApIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uU2l6ZSA9ICQre0NvbHVtblNpemV9OwoKICAgICAgICAgICAgICAgICAgICAjIEZvciB0ZXh0IGNvbHVtbnMgbXVsdGlwbHkgZm91bmQgc2l6ZSB3aXRoIGRlZmluZWQgbnVtYmVyIG9mIGJ5dGVzIHBlciBjaGFyYWN0ZXIuCiAgICAgICAgICAgICAgICAgICAgaWYgKCB1YyAkQ29sdW1uVHlwZSBlcSAnVkFSQ0hBUicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDdXJyZW50Q29sdW1uc3skQ29sdW1uTmFtZX0gPSAkQ29sdW1uU2l6ZSAqICRDaGFyYWN0ZXJTaXplOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBGb3IgZGVjaW1hbCBjb2x1bW4gdHlwZSB1c2UgYXBwcm94aW1hdGUgY2FsY3VsYXRpb24sIGl0IHNob3VsZCBiZSBlbm91Z2ggZm9yIG91ciBwdXJwb3Nlcy4KICAgICAgICAgICAgICAgICAgICAjICAgTW9yZSBpbmZvIGhlcmU6IGh0dHBzOi8vZGV2Lm15c3FsLmNvbS9kb2MvcmVmbWFuLzUuNy9lbi9wcmVjaXNpb24tbWF0aC1kZWNpbWFsLWNoYXJhY3RlcmlzdGljcy5odG1sCiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCB1YyAkQ29sdW1uVHlwZSBlcSAnREVDSU1BTCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICggJFRvdGFsRGlnaXRzLCAkRnJhY3Rpb25hbERpZ2l0cyApID0gc3BsaXQgbS8sLywgJENvbHVtblNpemU7CiAgICAgICAgICAgICAgICAgICAgICAgICRGcmFjdGlvbmFsRGlnaXRzIC8vPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBteSAkSW50ZWdlckRpZ2l0cyA9ICRUb3RhbERpZ2l0cyAtICRGcmFjdGlvbmFsRGlnaXRzOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJERpZ2l0cyAoICRJbnRlZ2VyRGlnaXRzLCAkRnJhY3Rpb25hbERpZ2l0cyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDdXJyZW50Q29sdW1uc3skQ29sdW1uTmFtZX0gKz0gc3ByaW50ZiggJyUwLmYnLCAkRGlnaXRzIC8gOSAqIDQgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBGb3IgYW55IHVzZSBjYXNlIHRoYXQgaGFzIG5vdCBiZWVuIGNvdmVyZWQgdW50aWwgdGhpcyBwb2ludCwganVzdCB1c2UgZGVmaW5lZCBzaXplLgogICAgICAgICAgICAgICAgICAgIGVsc2lmICggISRDb2x1bW5UeXBlMlNpemV7IHVjICRDb2x1bW5UeXBlIH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDdXJyZW50Q29sdW1uc3skQ29sdW1uTmFtZX0gKz0gJENvbHVtblNpemU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIE1hdGNoIGtleSBvcGVuaW5nIHRhZyBhbmQgcmVtZW1iZXIgaXRzIG5hbWUuCiAgICAgICAgaWYgKCAkTGluZSA9fiBteyA8KD86VW5pcXVlfEluZGV4KSBccysgTmFtZT0iKD88S2V5TmFtZT5cdyspIiB9c214ICkgewogICAgICAgICAgICAkQ3VycmVudEtleSA9ICQre0tleU5hbWV9OwogICAgICAgICAgICBuZXh0IExJTkU7CiAgICAgICAgfQoKICAgICAgICAjIE1hdGNoIGtleSBjbG9zaW5nIHRhZyBhbmQgcmVzZXQgYW55IGZvdW5kIGtleXMuCiAgICAgICAgaWYgKCAkTGluZSA9fiBteyA8Lyg/OlVuaXF1ZXxJbmRleCk+IH1zbXggKSB7CiAgICAgICAgICAgICRDdXJyZW50S2V5ICAgICA9IHVuZGVmOwogICAgICAgICAgICAkQ3VycmVudEtleVNpemUgPSAwOwogICAgICAgICAgICBuZXh0IExJTkU7CiAgICAgICAgfQoKICAgICAgICAjIFByb2NlZWQgb25seSBpZiB3ZSBhcmUgd2l0aGluIGtleSBkZWZpbml0aW9uLgogICAgICAgIGlmICgkQ3VycmVudEtleSkgewoKICAgICAgICAgICAgIyBNYXRjaCBrZXkgY29sdW1uIHRhZy4KICAgICAgICAgICAgaWYgKCAkTGluZSA9fiBteyA8KD86VW5pcXVlfEluZGV4KUNvbHVtbiAuKj8gTmFtZT0iKD88Q29sdW1uTmFtZT5cdyspIiB9c214ICkgewogICAgICAgICAgICAgICAgbXkgJENvbHVtbk5hbWUgPSAkK3tDb2x1bW5OYW1lfTsKCiAgICAgICAgICAgICAgICAjIFNraXAgdW5kZWZpbmVkIGNvbHVtbnMuIFNob3VsZCBub3QgaGFwcGVuLCBpZiB0aGUgZGVmaW5pdGlvbiBpcyB2YWxpZC4KICAgICAgICAgICAgICAgIG5leHQgTElORSBpZiAhJEN1cnJlbnRDb2x1bW5zeyRDb2x1bW5OYW1lfTsKCiAgICAgICAgICAgICAgICAjIElmIGtleSBzaXplIGlzIGRlZmluZWQsIHVzZSBpdC4KICAgICAgICAgICAgICAgIGlmICggJExpbmUgPX4gbXsgU2l6ZT0iKD88S2V5U2l6ZT5cZCspIiB9c214ICkgewogICAgICAgICAgICAgICAgICAgICRDdXJyZW50S2V5U2l6ZSArPSAkK3tLZXlTaXplfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIE90aGVyd2lzZSwgdXNlIHNpemUgZnJvbSBjb2x1bW4gZGVmaW5pdGlvbi4KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRDdXJyZW50S2V5U2l6ZSArPSAkQ3VycmVudENvbHVtbnN7JENvbHVtbk5hbWV9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIENoZWNrIGlmIGN1cnJlbnQgc2l6ZSBvZiB0aGUga2V5IGV4Y2VlZHMgY29uZmlndXJlZCBsaW1pdC4KICAgICAgICAgICAgaWYgKCRDdXJyZW50S2V5U2l6ZSkgewogICAgICAgICAgICAgICAgbmV4dCBMSU5FIGlmICRDdXJyZW50S2V5U2l6ZSA8PSAkS2V5U2l6ZUxpbWl0OwoKICAgICAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgLj0gIlRhYmxlOiAkQ3VycmVudFRhYmxlTmFtZSwgS2V5OiAkQ3VycmVudEtleVxuIjsKCiAgICAgICAgICAgICAgICAjIFNraXAgcHJvY2Vzc2luZyBjdXJyZW50IGtleS4KICAgICAgICAgICAgICAgICRDdXJyZW50S2V5ICAgICA9IHVuZGVmOwogICAgICAgICAgICAgICAgJEN1cnJlbnRLZXlTaXplID0gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHVzZSBEYXRhOjpEdW1wZXI7CiAgICAjIHByaW50IER1bXBlciggXCVDb2x1bW5UeXBlcyApOwogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKUHJvYmxlbSBmb3VuZCBpbiBYTUwgZGF0YWJhc2Ugc2NoZW1hOiBrZXlzIHdpdGggbW9yZSB0aGFuIDEwMDAgYnl0ZXMgd2lsbCBmYWlsIG9uIE15SVNBTSBzdG9yYWdlIGVuZ2luZSBpbiBNeVNRTCEKJEVycm9yTWVzc2FnZQpFT0YKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/XML/Docbook/BinScripts.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6RG9jYm9vazo6QmluU2NyaXB0czsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkJhc2UpOwoKPWhlYWQxIFNZTk9QU0lTCgpUaGlzIHBsdWdpbiBjaGVja3MgdGhhdCBiaW4gc2NyaXB0cyBwb2ludCB0byBuZXcgcGF0aHMuCgo9Y3V0CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICBteSAlQWxsb3dlZEZpbGVzID0gKAogICAgICAgICdvdG9iby5DaGVja01vZHVsZXMucGwnICAgPT4gMSwKICAgICAgICAnb3RvYm8uQ2hlY2tTdW0ucGwnICAgICAgID0+IDEsCiAgICAgICAgJ290b2JvLkNvZGVQb2xpY3kucGwnICAgICA9PiAxLAogICAgICAgICdvdG9iby5Db25zb2xlLnBsJyAgICAgICAgPT4gMSwKICAgICAgICAnb3RvYm8uRGFlbW9uLnBsJyAgICAgICAgID0+IDEsCiAgICAgICAgJ290b2JvLlNldFBlcm1pc3Npb25zLnBsJyA9PiAxLAogICAgKTsKCiAgICBteSAoICRDb3VudGVyLCAkRXJyb3JNZXNzYWdlICk7CgogICAgTElORToKICAgIGZvciBteSAkTGluZSAoIHNwbGl0IC9cbi8sICRDb2RlICkgewogICAgICAgICRDb3VudGVyKys7CiAgICAgICAgaWYgKCAkTGluZSA9fiAvYmluXC8ob3RvYm9cLlx3K1wucGwpL2lzbXggKSB7CgogICAgICAgICAgICBuZXh0IExJTkUgaWYgJEFsbG93ZWRGaWxlc3skMX07CgogICAgICAgICAgICAkRXJyb3JNZXNzYWdlIC49ICJMaW5lICRDb3VudGVyOiAkTGluZVxuIjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCRFcnJvck1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcig8PCJFT0YiKTsKRG9uJ3QgdXNlIG9sZCBiaW4gc2NyaXB0cyBpbiBkb2N1bWVudGF0aW9uLgokRXJyb3JNZXNzYWdlCkVPRgogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/XML/Docbook/ImageOutput.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6RG9jYm9vazo6SW1hZ2VPdXRwdXQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRmlsZTo6QmFzZW5hbWU7Cgp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpCYXNlKTsKCnN1YiB0cmFuc2Zvcm1fc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICAjIE1ha2Ugc3VyZSBpbWFnZXMgYXJlIGNvcnJlY3RseSBlbWJlZGRlZCwgc2hvd2luZyBpbiBvcmlnaW5hbCBzaXplIGFuZCBjYXBwZWQgYXQKICAgICMgICBhdmFpbGFibGUgd2l0aC4gRm9yYmlkIG1hbnVhbCBzY2FsaW5nLgoKICAgICMgU2VlIGh0dHA6Ly93d3cuc2FnZWhpbGwubmV0L2RvY2Jvb2t4c2wvSW1hZ2VTaXppbmcuaHRtbDoKICAgICMgIlRvIGtlZXAgYSBncmFwaGljIGZvciBwcmludGVkIG91dHB1dCBhdCBpdHMgbmF0dXJhbCBzaXplIHVubGVzcyBpdCBpcyB0b28gbGFyZ2UgdG8gZml0CiAgICAjICAgdGhlIGF2YWlsYWJsZSB3aWR0aCwgaW4gd2hpY2ggY2FzZSBzaHJpbmsgaXQgdG8gZml0LCB1c2Ugc2NhbGVmaXQ9IjEiLCB3aWR0aD0iMTAwJSIsCiAgICAjICAgYW5kIGNvbnRlbnRkZXB0aD0iMTAwJSIgYXR0cmlidXRlcy4iCgogICAgJENvZGUKICAgICAgICA9fiBzezxncmFwaGljIFtePl0rIChmaWxlcmVmPSJbXiI+XSsiKVtePi9dKigvPyk+fXs8Z3JhcGhpYyAkMSBzY2FsZWZpdD0iMSIgd2lkdGg9IjEwMCUiIGNvbnRlbnRkZXB0aD0iMTAwJSIkMj59bXN4ZzsKCiAgICByZXR1cm4gJENvZGU7Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/XML/Docbook/ReplaceSupportEmail.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6RG9jYm9vazo6UmVwbGFjZVN1cHBvcnRFbWFpbDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkJhc2UpOwoKbXkgJEVuZ2xpc2gxUmVnRXhwID0gPDwnRU5EX1JFR0VYUCc7ClxuIFxzKiA8cGFyYT4gXHMqClxzKiAgICAgICAgSWYgXHMrIHlvdSBccysgaGF2ZSBccysgcXVlc3Rpb25zIFxzKyByZWdhcmRpbmcgXHMrIHRoaXMgXHMrIHBhY2thZ2UsIFxzKyBwbGVhc2UgXHMrIGNvbnRhY3QgXHMrIHlvdXIgXHMrIHN1cHBvcnQgXHMrIHRlYW0KXHMrICAgICAgICBcKHN1cHBvcnRcQG90b2JvXC5jb21cKSBccysgZm9yIFxzKyBtb3JlIFxzKyBpbmZvcm1hdGlvbiBcLiBcbgpccyogICAgPFwvcGFyYT4gXG4KRU5EX1JFR0VYUAoKbXkgJEVuZ2xpc2gyUmVnRXhwID0gPDwnRU5EX1JFR0VYUCc7ClxuIFxzKiA8cGFyYT4gXHMqClxzKiAgICAgICAgSWYgXHMrIHlvdSBccysgaGF2ZSBccysgcXVlc3Rpb25zIFxzKyByZWdhcmRpbmcgXHMrIHRoaXMgXHMrIGRvY3VtZW50IFxzKyBvciBccysgaWYgXHMrIHlvdSBccysgbmVlZCBccysgZnVydGhlciBccysgaW5mb3JtYXRpb24sIFxzKyBwbGVhc2UgXHMrIGxvZyBccysgaW4gXHMrIHRvIFxzKyBvdXIgXHMrIGN1c3RvbWVyIFxzKyBwb3J0YWwgXHMrIGF0IFxzKyBwb3J0YWxcLm90b2JvXC5jb20gXHMrIHdpdGggXHMrIHlvdXIgXHMrIE9UT0JPIFxzKyBJRCBccysgYW5kIFxzKyBjcmVhdGUgXHMrIGEgXHMrIHRpY2tldFwuClxzKyAgICAgICAgWW91IFxzKyBkbyBccysgbm90IFxzKyBoYXZlIFxzKyBhbiBccysgT1RPQk8gXHMrIElEIFxzKyB5ZXRcPyBccysgUmVnaXN0ZXIKXHMqICAgICAgICA8dWxpbmsgXHMrIHVybD0iaHR0cHM6XC9cL3BvcnRhbFwub3RvYm9cLmNvbVwvb3RvYm9cL2N1c3RvbWVyXC5wbFwjU2lnbnVwIj5oZXJlIFxzKyBmb3IgXHMrIGZyZWU8XC91bGluaz5cLgpccyogICAgPFwvcGFyYT4gXG4KRU5EX1JFR0VYUAoKbXkgJEdlcm1hbjFSZWdFeHAgPSA8PCdFTkRfUkVHRVhQJzsKXG4gXHMqIDxwYXJhPiBccyoKXHMqICAgICAgICAgQmVpIFxzKyBGcmFnZW4gXHMrIGJldHJlZmZlbmQgXHMrIGRpZXNlcyBccysgRG9rdW1lbnRlcywgXHMrIGtvbnRha3RpZXJlbiBccysgU2llIFxzKyBJaHJlbiBccysgU3VwcG9ydCBccysgXChzdXBwb3J0XEBvdG9ib1wuY29tXCkgXHMrIGbDvHIgXHMrIHdlaXRlcmUgXHMrIEluZm9ybWF0aW9uZW4gXC4gXG4KXHMqICAgIDxcL3BhcmE+IFxuCkVORF9SRUdFWFAKCnN1YiB0cmFuc2Zvcm1fc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICBteSAkRW5nbGlzaFJlcGxhY2VtZW50ID0gX0VuZ2xpc2hSZXBsYWNlbWVudCgpOwogICAgbXkgJEdlcm1hblJlcGxhY2VtZW50ICA9IF9HZXJtYW5SZXBsYWNlbWVudCgpOwoKICAgICMgcmVwbGFjZSBzdXBwb3J0IHBhcmEKICAgICRDb2RlID1+IHN7JEVuZ2xpc2gxUmVnRXhwfXskRW5nbGlzaFJlcGxhY2VtZW50fXhtczsKICAgICRDb2RlID1+IHN7JEdlcm1hbjFSZWdFeHB9eyRHZXJtYW5SZXBsYWNlbWVudH14bXM7CgogICAgIyBSZXBsYWNlIHN1cHBvcnQgcGFyYSB3aXRoIHRoZSBjb3JyZWN0IGxhbmd1YWdlCiAgICBpZiAoICRDb2RlID1+IG17XiBccyogPGJvb2sgXHMrIGxhbmc9J2RlJz4gfXNteCApIHsKICAgICAgICAkQ29kZSA9fiBzeyRFbmdsaXNoMlJlZ0V4cH17JEdlcm1hblJlcGxhY2VtZW50fXhtczsKICAgIH0KCiAgICByZXR1cm4gJENvZGU7Cn0KCnN1YiBfRW5nbGlzaFJlcGxhY2VtZW50IHsKICAgIHJldHVybiA8PCdFTkRfUkVQTEFDRU1FTlQnOwoKICAgIDxwYXJhPgogICAgICAgIElmIHlvdSBoYXZlIHF1ZXN0aW9ucyByZWdhcmRpbmcgdGhpcyBkb2N1bWVudCBvciBpZiB5b3UgbmVlZCBmdXJ0aGVyIGluZm9ybWF0aW9uLCBwbGVhc2UgbG9nIGluIHRvIG91ciBjdXN0b21lciBwb3J0YWwgYXQgcG9ydGFsLm90b2JvLmNvbSB3aXRoIHlvdXIgT1RPQk8gSUQgYW5kIGNyZWF0ZSBhIHRpY2tldC4KICAgICAgICBZb3UgZG8gbm90IGhhdmUgYW4gT1RPQk8gSUQgeWV0PyBSZWdpc3RlcgogICAgICAgIDx1bGluayB1cmw9Imh0dHBzOi8vcG9ydGFsLm90b2JvLmNvbS9vdG9iby9jdXN0b21lci5wbCNTaWdudXAiPmhlcmUgZm9yIGZyZWU8L3VsaW5rPi4KICAgIDwvcGFyYT4KRU5EX1JFUExBQ0VNRU5UCn0KCnN1YiBfR2VybWFuUmVwbGFjZW1lbnQgewogICAgcmV0dXJuIDw8J0VORF9SRVBMQUNFTUVOVCc7CgogICAgPHBhcmE+CiAgICAgICAgU29sbHRlbiBTaWUgRnJhZ2VuIHp1IGRpZXNlbSBEb2t1bWVudCBoYWJlbiBvZGVyIHdlaXRlcmUgSW5mb3JtYXRpb25lbiBiZW7DtnRpZ2VuLCBsb2dnZW4gU2llIHNpY2ggYml0dGUgbWl0IElocmVyIE9UT0JPLUlEIGluIHVuc2VyIEt1bmRlbnBvcnRhbCB1bnRlciBwb3J0YWwub3RvYm8uY29tIGVpbiB1bmQgZXLDtmZmbmVuIFNpZSBlaW4gVGlja2V0LiBTaWUgaGFiZW4gbm9jaCBrZWluZSBPVE9CTy1JRD8gUmVnaXN0cmllcmVuIFNpZSBzaWNoCiAgICAgICAgPHVsaW5rIHVybD0iaHR0cHM6Ly9wb3J0YWwub3RvYm8uY29tL290b2JvL2N1c3RvbWVyLnBsI1NpZ251cCI+aGllciBrb3N0ZW5sb3M8L3VsaW5rPi4KICAgIDwvcGFyYT4KRU5EX1JFUExBQ0VNRU5UCn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/XML/Docbook/RemoveContactChapter.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6RG9jYm9vazo6UmVtb3ZlQ29udGFjdENoYXB0ZXI7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpCYXNlKTsKCnN1YiB0cmFuc2Zvcm1fc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICAjIHJlbW92ZSBjaGFwdGVyCiAgICAkQ29kZSA9fiBzewogICAgICAgIDxjaGFwdGVyPiBccyoKICAgICAgICAoPzoKICAgICAgICAgICAgPCEtLSBccysgXCorIFxzKyAtLT4gXHMrCiAgICAgICAgICAgIDwhLS0gXHMrIFxkKyBcLiBccysgXHcrIFxzKyAtLT4gXHMrCiAgICAgICAgICAgIDwhLS0gXHMrIFwqKyBccysgLS0+IFxzKwogICAgICAgIHwKICAgICAgICApCiAgICAgICAgPHRpdGxlPiBbIF0qICg/OiBDb250YWN0IHwgQ29udGFjdHMgfCBLb250YWt0ICkgWyBdKiA8XC90aXRsZT4KICAgICAgICAoICg/ISA8XC9jaGFwdGVyPiApLiApKiA8XC9jaGFwdGVyPiBbIFxuXSoKICAgIH17fXhtczsKCiAgICByZXR1cm4gJENvZGU7Cn0KCjE7Cg==</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/XML/Docbook/XSDValidator.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6RG9jYm9vazo6WFNEVmFsaWRhdG9yOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpCYXNlKTsKCnN1YiB0cmFuc2Zvcm1fc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gJENvZGUgaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICAjIGNvbnZlcnQgZm9ybWF0IGF0dHJpYnV0ZSBjb250ZW50IGluIGltYWdlZGF0YSB0YWcgdG8gdXBwZXIgY2FzZQogICAgIyAgICBlLmcuIGZyb20gZm9ybWF0PSJwbmciIHRvIGZvcm1hdD0iUE5HIgogICAgJENvZGUgPX4gc3soPGltYWdlZGF0YSBbXj5dKyBmb3JtYXQ9IikoLis/KSgiIFtePl0rID4pfQogICAgICAgIHsKICAgICAgICAgICAgbXkgJFN0YXJ0ICA9ICQxOwogICAgICAgICAgICBteSAkRm9ybWF0ID0gJDI7CiAgICAgICAgICAgIG15ICRFbmQgICAgPSAkMzsKICAgICAgICAgICAgaWYgKCRGb3JtYXQgbmUgJ2xpbmVzcGVjaWZpYycpIHsKICAgICAgICAgICAgICAgICRGb3JtYXQgPSB1YyAkRm9ybWF0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIG15ICRSZXN1bHQgPSAkU3RhcnQgLiAkRm9ybWF0IC4gJEVuZDsKICAgICAgICB9bXN4Z2U7CgogICAgcmV0dXJuICRDb2RlOwp9CgpzdWIgdmFsaWRhdGVfZmlsZSB7CiAgICBteSAoICRTZWxmLCAkRmlsZW5hbWUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggRmlsZW5hbWUgPT4gJEZpbGVuYW1lICk7CgogICAgIyByZWFkIHRoZSBmaWxlIGFzIGFuIGFycmF5CiAgICBvcGVuKCBteSAkRmlsZUhhbmRsZSwgJzwnLCAkRmlsZW5hbWUgKSB8fCBkaWUgJCE7ICAgICMjIG5vIGNyaXRpYyBxdyhPVE9CTzo6UHJvaGliaXRPcGVuKQogICAgbXkgQEZpbGVMaW5lcyA9IDwkRmlsZUhhbmRsZT47CiAgICBjbG9zZSAkRmlsZUhhbmRsZTsKCiAgICBteSAkVmVyc2lvbjsKCiAgICAjIGdldCB0aGUgRG9jQm9vayB2ZXJzaW9uIGZyb20gdGhlIERvY1R5cGUgZS5nLiA0LjQKICAgIGlmICggJEZpbGVMaW5lc1sxXSA9fiBte0RURCBbIF0gRG9jQm9vayBbIF0gWE1MIFsgXSBWKFxkXC5cZCkvL31tc3hpICkgewogICAgICAgICRWZXJzaW9uID0gJDE7CiAgICB9CiAgICByZXR1cm4gaWYgISRWZXJzaW9uOwoKICAgICMgY2hlY2sgaWYgd2UgaGF2ZSBhbiBYU0QgYXZhaWxhYmxlIGZvciB0aGUgZGV0ZWN0ZWQgdmVyc2lvbjoKICAgIG15ICVBdmFpbGFibGVWZXJzaW9ucyA9ICgKICAgICAgICAnNC4yJyA9PiAxLAogICAgICAgICc0LjMnID0+IDEsCiAgICAgICAgJzQuNCcgPT4gMSwKICAgICAgICAnNC41JyA9PiAxLAogICAgKTsKICAgIGlmICggISRBdmFpbGFibGVWZXJzaW9uc3skVmVyc2lvbn0gKSB7CiAgICAgICAgcHJpbnQgU1RERVJSICJObyBEb2NCb29rIFhTRCBhdmFpbGFibGUgZm9yIHZlcnNpb24gJFZlcnNpb25cbiI7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY29udmVydCB0aGUgdmVyc2lvbiB0byBhIGRpcmVjdG9yeSBzYWZlIHN0cmluZyBlLmcuIDRfNAogICAgJFZlcnNpb24gPX4gc3tcLn17X307CgogICAgIyBnZW5lcmF0ZSB0aGUgWE1MTGludCBjb21tYW5kIGJhc2VkIG9uIHRoZSB2ZXJzaW9uIG9mIHRoZSBEb2NCb29rIGZpbGUKICAgIG15ICRYU0RGaWxlID0gZGlybmFtZShfX0ZJTEVfXykgLiAnLy4uLy4uL1N0YXRpY0ZpbGVzL1hTRC9Eb2Nib29rLycgLiAkVmVyc2lvbiAuICcvZG9jYm9vay54c2QnOwogICAgbXkgJENNRCAgICAgPSAieG1sbGludCAtLW5vb3V0IC0tbm9uZXQgLS1ub3dhcm5pbmcgLS1zY2hlbWEgJFhTREZpbGUiOwoKICAgIG15ICRDb21tYW5kID0gc3ByaW50ZiggIiVzICVzICVzIDI+JjEiLCAkQ01ELCAkU2VsZi0+YXJndigpLCAkRmlsZW5hbWUgKTsKICAgIG15ICRPdXRwdXQgID0gYCRDb21tYW5kYDsKCiAgICAjIElmIGV4ZWN1dGlvbiBmYWlsZWQsIHdhcm4gYWJvdXQgaW5zdGFsbGluZyBwYWNrYWdlLgogICAgaWYgKCAke15DSElMRF9FUlJPUl9OQVRJVkV9ID09IC0xICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCIneG1sbGludCcgd2FzIG5vdCBmb3VuZCwgcGxlYXNlIGluc3RhbGwgaXQuXG4iKTsKICAgIH0KCiAgICBpZiAoICR7XkNISUxEX0VSUk9SX05BVElWRX0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIiRPdXRwdXRcbiIpOyAgICAjIG5vbi16ZXJvIGV4aXQgY29kZQogICAgfQp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/XML/WADL/XSDValidator.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6V0FETDo6WFNEVmFsaWRhdG9yOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpCYXNlKTsKCnN1YiBfYnVpbGRfY21kIHsKICAgIG15ICRYU0RGaWxlID0gZGlybmFtZShfX0ZJTEVfXykgLiAnLy4uLy4uL1N0YXRpY0ZpbGVzL1hTRC9XQURML3dhZGwueHNkJzsKICAgIHJldHVybiAieG1sbGludCAtLW5vb3V0IC0tbm9uZXQgLS1zY2hlbWEgJFhTREZpbGUiOwp9CgpzdWIgdmFsaWRhdGVfZmlsZSB7CiAgICBteSAoICRTZWxmLCAkRmlsZW5hbWUgKSA9IEBfOwoKICAgIHJldHVybiBpZiAkU2VsZi0+SXNQbHVnaW5EaXNhYmxlZCggRmlsZW5hbWUgPT4gJEZpbGVuYW1lICk7CgogICAgbXkgJENvbW1hbmQgPSBzcHJpbnRmKCAiJXMgJXMgJXMgMj4mMSIsICRTZWxmLT5jbWQoKSwgJFNlbGYtPmFyZ3YoKSwgJEZpbGVuYW1lICk7CiAgICBteSAkT3V0cHV0ICA9IGAkQ29tbWFuZGA7CgogICAgIyBJZiBleGVjdXRpb24gZmFpbGVkLCB3YXJuIGFib3V0IGluc3RhbGxpbmcgcGFja2FnZS4KICAgIGlmICggJHteQ0hJTERfRVJST1JfTkFUSVZFfSA9PSAtMSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiJ3htbGxpbnQnIHdhcyBub3QgZm91bmQsIHBsZWFzZSBpbnN0YWxsIGl0LlxuIik7CiAgICB9CgogICAgaWYgKCAke15DSElMRF9FUlJPUl9OQVRJVkV9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCIkT3V0cHV0XG4iKTsgICAgIyBub24temVybyBleGl0IGNvZGUKICAgIH0KfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/XML/WSDL/XSDValidator.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6V1NETDo6WFNEVmFsaWRhdG9yOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEZpbGU6OkJhc2VuYW1lOwp1c2UgTW9vOwoKZXh0ZW5kcyBxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpCYXNlKTsKCnN1YiB2YWxpZGF0ZV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlbmFtZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBGaWxlbmFtZSA9PiAkRmlsZW5hbWUgKTsKCiAgICAjIHJlYWQgdGhlIGZpbGUgYXMgYW4gYXJyYXkKICAgIG9wZW4oIG15ICRGaWxlSGFuZGxlLCAnPCcsICRGaWxlbmFtZSApIHx8IGRpZSAkITsgICAgIyMgbm8gY3JpdGljIHF3KE9UT0JPOjpQcm9oaWJpdE9wZW4pCiAgICBteSAkU3RyaW5nID0gZG8geyBsb2NhbCAkLyA9IHVuZGVmOyA8JEZpbGVIYW5kbGU+IH07CiAgICBjbG9zZSAkRmlsZUhhbmRsZTsKCiAgICBteSAkTGl0ZXJhbFN0eWxlOwoKICAgICMgY2hlY2sgaWYgV1NETCBmaWxlIHVzZXMgTGl0ZXJhbCBtZXNzYWdlcwogICAgaWYgKCAkU3RyaW5nID1+IG17PHNvYXA6Ym9keSBccysgdXNlPSJsaXRlcmFsIn1tc3hpICkgewogICAgICAgICRMaXRlcmFsU3R5bGUgPSAxOwogICAgfQoKICAgICMgZ2VuZXJhdGUgdGhlIFhNTExpbnQgY29tbWFuZCBiYXNlZCBvbiB0aGUgc3R5bGUgb2YgV1NETAogICAgbXkgJFhTRERpciA9IGRpcm5hbWUoX19GSUxFX18pIC4gJy8uLi8uLi9TdGF0aWNGaWxlcy9YU0QvV1NETC8nOwoKICAgIG15ICRYU0RGaWxlID0gJ1dTREwueHNkJzsKICAgIGlmICgkTGl0ZXJhbFN0eWxlKSB7CiAgICAgICAgJFhTREZpbGUgPSAnTGl0ZXJhbC54c2QnOwogICAgfQoKICAgIG15ICRDTUQgPSAieG1sbGludCAtLW5vb3V0IC0tbm9uZXQgLS1ub3dhcm5pbmcgLS1zY2hlbWEgJFhTRERpciRYU0RGaWxlIjsKCiAgICBteSAkQ29tbWFuZCA9IHNwcmludGYoICIlcyAlcyAlcyAyPiYxIiwgJENNRCwgJFNlbGYtPmFyZ3YoKSwgJEZpbGVuYW1lICk7CiAgICBteSAkT3V0cHV0ICA9IGAkQ29tbWFuZGA7CgogICAgIyBJZiBleGVjdXRpb24gZmFpbGVkLCB3YXJuIGFib3V0IGluc3RhbGxpbmcgcGFja2FnZS4KICAgIGlmICggJHteQ0hJTERfRVJST1JfTkFUSVZFfSA9PSAtMSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiJ3htbGxpbnQnIHdhcyBub3QgZm91bmQsIHBsZWFzZSBpbnN0YWxsIGl0LlxuIik7CiAgICB9CgogICAgaWYgKCAke15DSElMRF9FUlJPUl9OQVRJVkV9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCIkT3V0cHV0XG4iKTsgICAgIyBub24temVybyBleGl0IGNvZGUKICAgIH0KfQoKMTsK</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/XML/Lint.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6TGludDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNb287CgpleHRlbmRzIHF3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkJhc2UpOwoKc3ViIF9idWlsZF9jbWQgewogICAgcmV0dXJuICd4bWxsaW50IC0tbm9vdXQgLS1ub25ldCc7Cn0KCnN1YiB2YWxpZGF0ZV9maWxlIHsKICAgIG15ICggJFNlbGYsICRGaWxlbmFtZSApID0gQF87CgogICAgcmV0dXJuIGlmICRTZWxmLT5Jc1BsdWdpbkRpc2FibGVkKCBGaWxlbmFtZSA9PiAkRmlsZW5hbWUgKTsKCiAgICBteSAkQ29tbWFuZCA9IHNwcmludGYoICIlcyAlcyAlcyAyPiYxIiwgJFNlbGYtPmNtZCgpLCAkU2VsZi0+YXJndigpLCAkRmlsZW5hbWUgKTsKICAgIG15ICRPdXRwdXQgID0gYCRDb21tYW5kYDsKCiAgICAjIElmIGV4ZWN1dGlvbiBmYWlsZWQsIHdhcm4gYWJvdXQgaW5zdGFsbGluZyBwYWNrYWdlLgogICAgaWYgKCAke15DSElMRF9FUlJPUl9OQVRJVkV9ID09IC0xICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCIneG1sbGludCcgd2FzIG5vdCBmb3VuZCwgcGxlYXNlIGluc3RhbGwgaXQuXG4iKTsKICAgIH0KCiAgICBpZiAoICR7XkNISUxEX0VSUk9SX05BVElWRX0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5EaWVXaXRoRXJyb3IoIiRPdXRwdXRcbiIpOyAgICAjIG5vbi16ZXJvIGV4aXQgY29kZQogICAgfQp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/Plugin/OTOBO/XML/LintWithOurParsers.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6TGludFdpdGhPdXJQYXJzZXJzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1vbzsKCmV4dGVuZHMgcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6QmFzZSk7Cgp1c2UgWE1MOjpQYXJzZXI7CgpzdWIgdmFsaWRhdGVfc291cmNlIHsKICAgIG15ICggJFNlbGYsICRDb2RlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgJFNlbGYtPklzUGx1Z2luRGlzYWJsZWQoIENvZGUgPT4gJENvZGUgKTsKCiAgICBteSAkUGFyc2VyID0gWE1MOjpQYXJzZXItPm5ldygpOwogICAgaWYgKCAhZXZhbCB7ICRQYXJzZXItPnBhcnNlKCRDb2RlKSB9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RGllV2l0aEVycm9yKCJYTUw6OlBhcnNlciBwcm9kdWNlZCBlcnJvcnM6ICRAXG4iKTsKICAgIH0KCiAgICAjIFhNTDo6UGFyc2VyOjpMaXRlIG1heSBub3QgYmUgaW5zdGFsbGVkLCBvbmx5IGNoZWNrIGlmIHByZXNlbnQuCiAgICBpZiAoIGV2YWwgJ3JlcXVpcmUgWE1MOjpQYXJzZXI6OkxpdGUnICkgeyAgICAjIyBubyBjcml0aWMgcXcoQnVpbHRpbkZ1bmN0aW9uczo6UHJvaGliaXRTdHJpbmd5RXZhbCkKICAgICAgICBteSAkUGFyc2VyTGl0ZSA9IFhNTDo6UGFyc2VyOjpMaXRlLT5uZXcoKTsKICAgICAgICBldmFsIHsgJFBhcnNlckxpdGUtPnBhcnNlKCRDb2RlKSB9OwogICAgICAgIGlmICgkQCkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPkRpZVdpdGhFcnJvcigiWE1MOjpQYXJzZXI6OkxpdGUgcHJvZHVjZWQgZXJyb3JzOiAkQFxuIik7CiAgICAgICAgfQogICAgfQp9CgoxOwo=</File>
        <File Location="Kernel/TidyAll/tidyallrc" Permission="660" Encode="Base64">Owo7IEdsb2JhbCBpZ25vcmVzCjsKCjsgSWdub3JlIGFsbCBDUEFOIGNvbnRlbnQuCmlnbm9yZSA9IEtlcm5lbC9jcGFuLWxpYi8qKi8qIEN1c3RvbS9LZXJuZWwvY3Bhbi1saWIvKiovKiBsb2NhbC9saWIvcGVybDUvKiovKiBsb2NhbC9iaW4vKiovKgo7IElnbm9yZSBhbGwgZHluYW1pYy90ZW1wb3JhcnkgZGF0YS4KaWdub3JlID0gdmFyL3thcnRpY2xlLGxvZyxydW4sc2Vzc2lvbnMsc3Bvb2wsdG1wLHZpcnR1YWxmc30vKiovKgo7IElnbm9yZSB0aGlyZHBhcnR5IGNvbnRlbnQuCmlnbm9yZSA9ICoqL3RoaXJkcGFydHkvKiovKgppZ25vcmUgPSAqKi9ja2VkaXRvciouY3NzCjsgSWdub3JlIG1pbmlmaWVkIGZpbGVzCmlnbm9yZSA9ICoqLyoubWluLntjc3MsanN9CjsgSWdub3JlIExvYWRlciBjYWNoZSBmaWxlcy4KaWdub3JlID0gKiove2pzLWNhY2hlLGNzcy1jYWNoZX0vKiovKgo7IElnbm9yZSB0ZXN0IGRhdGEgZmlsZXMuCmlnbm9yZSA9IHRtcC9UZXN0LyoqLyoKO2lnbm9yZSA9IHNjcmlwdHMvdGVzdC9zYW1wbGUvKiovKgo7IGlnbm9yZSB0aGUgQ29kZVBvbGljeSB0aGF0IGlzIHVzZWQgYnkgdGhlIGdpdCBjb21taXQgaG9va3MKaWdub3JlID0gVGlkeUFsbC8qKi8qCgo7CjsgQ29tbW9uCjsKClsrVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6Q29tbW9uOjpDUkxGTGluZUVuZGluZ3NdCnNlbGVjdCA9ICoqLyoue3BsLHBtLHBzZ2ksdCx0dCxzcGVjLGpzLGNzcyxzY3NzLHZ1ZSxkaXN0LHRtcGwsc2gsc2tlbCx4bWwsc29wbSxodG1sLHNlcnZpY2UsY29uZn0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6Q29tbW9uOjpOb0ZpbHRlcl0Kc2VsZWN0ID0gKiovKi57cGwscG0scHNnaSx0LHR0LHNwZWMsanMsY3NzLHNjc3MsdnVlLGRpc3QsdG1wbCxzaCxza2VsLHhtbCxzb3BtLGh0bWx9Cmlnbm9yZSA9IEtlcm5lbC9MYW5ndWFnZS8qLnBtIEN1c3RvbS9LZXJuZWwvTGFuZ3VhZ2UvKi5wbQppZ25vcmUgPSAqL0tlcm5lbC9MYW5ndWFnZS8qLnBtICovQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkNvbW1vbjo6T3JpZ2luXQpzZWxlY3QgPSAqKi8qLntwbCxwc2dpLHBtLHQsanMsY3NzLHR0LHhtbCxzb3BtfQppZ25vcmUgPSBLZXJuZWwvQ29uZmlnL0ZpbGVzL1paWioucG0KOyBJZ25vcmUgZG9jYm9vayBkb2N1bWVudGF0aW9ucwppZ25vcmUgPSAqL2NvbnRlbnQvKiovKi54bWwKClsrVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6Q29tbW9uOjpDdXN0b21pemF0aW9uTWFya2Vyc1RUXQpzZWxlY3QgPSBDdXN0b20vS2VybmVsL091dHB1dC9IVE1MLyoqLyoudHQKc2VsZWN0ID0gS2VybmVsL091dHB1dC9IVE1MLyoqLyoudHQKClsrVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6Q29tbW9uOjpDdXN0b21pemF0aW9uTWFya2Vyc10Kc2VsZWN0ID0gKiovKi57cGwscHNnaSxwbSx0LGpzLGNzcyx0dH0KaWdub3JlID0gS2VybmVsL0NvbmZpZy5wbQppZ25vcmUgPSBLZXJuZWwvQ29uZmlnL0dlbmVyaWNBZ2VudC5wbQppZ25vcmUgPSBLZXJuZWwvQ29uZmlnL0ZpbGVzL1paWioucG0KaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6RG9jYm9vazo6UmVwbGFjZVN1cHBvcnRFbWFpbF0Kc2VsZWN0ID0gZG9jLyoqLyoueG1sCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6RG9jYm9vazo6UmVtb3ZlQ29udGFjdENoYXB0ZXJdCnNlbGVjdCA9IGRvYy8qKi8qLnhtbAoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpDb21tb246OlByb2hpYml0RW1haWxBZGRyZXNzZXNdCnNlbGVjdCA9ICoqLyoue3BsLHBtLHBzZ2ksdCx0dCxqcyx4bWwsc29wbX0KCjtbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkNvbW1vbjo6VHJhbnNsYXRhYmxlU3RyaW5nc1NwZWxsQ2hlY2tdCjtzZWxlY3QgPSAqKi8qLntwbCxwbSx0dCxqcyx4bWx9CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkNvbW1vbjo6UmVtb3ZlQ1ZTSURzXQpzZWxlY3QgPSAqKi8qLntwbCxwbSxwc2dpLHQseG1sLHR0LGRpc3Qsc3BlYyxqc30Kc2VsZWN0ID0gdmFyL2Nyb24vKgoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpDb21tb246OlZhbGlkYXRlRmlsZW5hbWVdCnNlbGVjdCA9ICoKCjsKOyBDcm9uCjsKClsrVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6Q3Jvbjo6Q3JvblNjcmlwdHNdCnNlbGVjdCA9IHZhci9jcm9uLyouZGlzdAoKOwo7IEphdmFTY3JpcHQKOwoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpKYXZhU2NyaXB0OjpEZWJ1Z0NvZGVdCnNlbGVjdCA9ICoqLyouanMKaWdub3JlID0gc2NyaXB0cy93ZWJwYWNrLyoqLyoKClsrVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6SmF2YVNjcmlwdDo6VW5sb2FkRXZlbnRdCnNlbGVjdCA9ICoqLyouanMgKiovKi50dAoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpKYXZhU2NyaXB0OjpGaWxlTmFtZV0Kc2VsZWN0ID0gKiovKi5qcwppZ25vcmUgPSAqKi90ZXN0LyoKClsrVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6SmF2YVNjcmlwdDo6RmlsZU5hbWVVbml0VGVzdF0Kc2VsZWN0ID0gdmFyL2h0dHBkL2h0ZG9jcy9qcy90ZXN0LyouanMKCjtbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkphdmFTY3JpcHQ6OkVTTGludF0KO3NlbGVjdCA9ICoqLyoue2pzLHZ1ZX0KO2lnbm9yZSA9IHNjcmlwdHMvdGVzdC9zYW1wbGUvTG9hZGVyLyoqLyoKOzsgSWdub3JlIHRoaXMgc2xvdyBwbHVnaW4gZm9yIG1vcmUgYWdpbGUgT1RPQk9Db2RlUG9saWN5IGZpbHRlciBkZXZlbG9wbWVudCB3aXRoIGEgY3VzdG9tIG1vZGUgImZhc3QiLgo7ZXhjZXB0X21vZGVzID0gZmFzdAoKOwo7IExlZ2FsCjsKClsrVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6TGVnYWw6OkFkZHJlc3NVcGRhdGVdCnNlbGVjdCA9IGRvYy8qKi8qLnhtbAoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpMZWdhbDo6TGljZW5zZVZhbGlkYXRvcl0Kc2VsZWN0ID0gKiovKi57cGwscG0scHNnaSx0LHR0LHNwZWMsanMsY3NzLHNjc3MsdnVlLGRpc3Qsc2gsc2tlbCx4bWwsc29wbX0KaWdub3JlID0gQ09QWUlORyBSRUxFQVNFIENSRURJVFMKaWdub3JlID0gS2VybmVsL0NvbmZpZy5wbSBLZXJuZWwvQ29uZmlnLyoqL1paWioucG0gS2VybmVsL0NvbmZpZy9GaWxlcy9Vc2VyLyoucG0KaWdub3JlID0gS2VybmVsL1dlYkFwcC5jb25mLmRpc3QKaWdub3JlID0gc2NyaXB0cy9hdXRvX2J1aWxkL3NwZWMvdGVtcGxhdGVzLyoqLyoKaWdub3JlID0gc2NyaXB0cy90ZXN0L3NhbXBsZS9TeXNDb25maWcvTWlncmF0aW9uLyoqL1paWioucG0KaWdub3JlID0gc2NyaXB0cy9EQlVwZGF0ZXtUbzYsfS9UYXNrQ29uZmlnLyoueW1sLmRpc3QKaWdub3JlID0gdmFyL2h0dHBkL2h0ZG9jcy9jb21tb24vKiovKi5jc3MKOyBPVE9CT0NvbnRpbnVvdXNJbnRlZ3JhdGlvblByb3Zpc2lvbmVyIC0gZGVwbG95bWVudCB0ZW1wbGF0ZSBpbmNsdWRlcwppZ25vcmUgPSAqKi8qLnR0LnNoCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OkxlZ2FsOjpSZXBsYWNlQ29weXJpZ2h0XQpzZWxlY3QgPSAqKi8qLntwbCxwbSxwc2dpLHQsdHQsc3BlYyxqcyxjc3Msc2Nzcyx2dWUsZGlzdCx0bXBsLHNoLHNrZWwsY29uZix0ZW1wbGF0ZX0Kc2VsZWN0ID0gLiouZGlzdCAuYmFzaF9jb21wbGV0aW9uCnNlbGVjdCA9IC5zY3JlZW5yYwpzZWxlY3QgPSB2YXIvY3Jvbi8qCnNlbGVjdCA9IHZhci9naXQvaG9va3MvKi1yZWNlaXZlCnNlbGVjdCA9IGRvY3VtZW50YXRpb24ueW1sCmlnbm9yZSA9IEtlcm5lbC9Db25maWcucG0gS2VybmVsL0NvbmZpZy8qKi9aWloqLnBtCmlnbm9yZSA9IG1vZHVsZS1mb3JtYXQueG1sLGNvZGVzeW50YXgueG1sLGxhbmd1YWdlLXRyYW5zbGF0aW9ucy54bWwsd3JpdGluZy1vdG9iby1hcHBsaWNhdGlvbi54bWwsdGVzdC1tZWNoYW5pc20ueG1sCmlnbm9yZSA9IHNjcmlwdHMvYXV0b19idWlsZC9zcGVjL3RlbXBsYXRlcy9pbmNsdWRlcy9zdXNlLXN5c3RlbWQtYmFzZS50dCBzY3JpcHRzL2F1dG9fYnVpbGQvc3BlYy90ZW1wbGF0ZXMvaW5jbHVkZXMvcmVkaGF0LXN5c3RlbWQtYmFzZS50dAo7IERvbid0IHJ1biB0aGlzIGluIHRoZSBDSSB0byBhdm9pZCB1cGRhdGVzIG9uIHllYXIgY2hhbmdlcy4gSXQgaXMgZW5vdWdoIHRvIHVwZGF0ZSB0aGUgY29kZSB3aGVuIGl0IGlzIGNoYW5nZWQuCm9ubHlfbW9kZXMgPSBjbGkgZWRpdG9yIGNvbW1pdAoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpMZWdhbDo6U09QTUxpY2Vuc2VdCnNlbGVjdCA9ICoue29wbSxzb3BtfQoKOwo7IFBPVC9QTwo7CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBPOjpEb2Nib29rTGludF0Kc2VsZWN0ID0gaTE4bi8qKi8qLntwb3QscG99CnNlbGVjdCA9IGxvY2FsZS8qKi8qLntwb3QscG99CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBPOjpIVE1MVGFnc10Kc2VsZWN0ID0gaTE4bi8qKi8qLntwb3QscG99CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBPOjptc2dmbXRdCnNlbGVjdCA9IGkxOG4vKiovKi57cG90LHBvfQpzZWxlY3QgPSBsb2NhbGUvKiovKi57cG90LHBvfQoKOwo7IFBlcmwKOwoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpCaW5TY3JpcHRzXQpzZWxlY3QgPSBiaW4vKi5wbAoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpDYWNoZU5ld10Kc2VsZWN0ID0gKiovKi57cGwscHNnaSxwbX0Kc2VsZWN0ID0gS2VybmVsL0NvbmZpZy5wbS5kaXN0Cmlnbm9yZSA9IEtlcm5lbC9MYW5ndWFnZS8qLnBtIEN1c3RvbS9LZXJuZWwvTGFuZ3VhZ2UvKi5wbQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpEQk9iamVjdF0Kc2VsZWN0ID0gS2VybmVsL01vZHVsZXMvKiovKi5wbSBDdXN0b20vS2VybmVsL01vZHVsZXMvKiovKi5wbQppZ25vcmUgPSBLZXJuZWwvTGFuZ3VhZ2UvKi5wbSBDdXN0b20vS2VybmVsL0xhbmd1YWdlLyoucG0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6RGllRXhpdF0Kc2VsZWN0ID0gS2VybmVsL01vZHVsZXMvKiovKi5wbSBDdXN0b20vS2VybmVsL01vZHVsZXMvKiovKi5wbQppZ25vcmUgPSBLZXJuZWwvTGFuZ3VhZ2UvKi5wbSBDdXN0b20vS2VybmVsL0xhbmd1YWdlLyoucG0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6RHVtcGVyXQpzZWxlY3QgPSAqKi8qLntwbCxwbSxwc2dpfQpzZWxlY3QgPSBLZXJuZWwvQ29uZmlnLnBtLmRpc3QKaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OkZvcmVhY2hUb0Zvcl0Kc2VsZWN0ID0gKiovKi57cGwscG0scHNnaSx0fQpzZWxlY3QgPSBLZXJuZWwvQ29uZmlnLnBtLmRpc3QKaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OkZvck15XQpzZWxlY3QgPSAqKi8qLntwbCxwc2dpLHBtLHR9CnNlbGVjdCA9IEtlcm5lbC9Db25maWcucG0uZGlzdAppZ25vcmUgPSBLZXJuZWwvTGFuZ3VhZ2UvKi5wbSBDdXN0b20vS2VybmVsL0xhbmd1YWdlLyoucG0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6TGF5b3V0T2JqZWN0XQpzZWxlY3QgPSAqKi8qLntwbCxwbSxwc2dpLHR9CnNlbGVjdCA9IEtlcm5lbC9Db25maWcucG0uZGlzdAppZ25vcmUgPSBzY3JpcHRzL3Rlc3QvKiovKgppZ25vcmUgPSBLZXJuZWwve01vZHVsZXMsT3V0cHV0fS8qKi8qIEN1c3RvbS9LZXJuZWwve01vZHVsZXMsT3V0cHV0fS8qKi8qCmlnbm9yZSA9IEtlcm5lbC9TeXN0ZW0vV2ViLyogQ3VzdG9tL0tlcm5lbC9TeXN0ZW0vV2ViLyoKaWdub3JlID0gS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvKiovKiBDdXN0b20vS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvKiovKgppZ25vcmUgPSBLZXJuZWwvTGFuZ3VhZ2UvKi5wbSBDdXN0b20vS2VybmVsL0xhbmd1YWdlLyoucG0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6TW9kdWxlRm9ybWF0XQpzZWxlY3QgPSAqKi8qLntwbSx0fQpzZWxlY3QgPSBLZXJuZWwvQ29uZmlnLnBtLmRpc3QKaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6Ok5vRXhpdEluQ29uc29sZUNvbW1hbmRzXQpzZWxlY3QgPSBLZXJuZWwvU3lzdGVtL0NvbnNvbGUvQ29tbWFuZC8qKi8qLnBtIEN1c3RvbS9LZXJuZWwvU3lzdGVtL0NvbnNvbGUvQ29tbWFuZC8qKi8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6Ok9iamVjdERlcGVuZGVuY2llc10Kc2VsZWN0ID0gKiovKi57cG19CnNlbGVjdCA9IEtlcm5lbC9Db25maWcucG0uZGlzdAppZ25vcmUgPSBLZXJuZWwvTGFuZ3VhZ2UvKi5wbSBDdXN0b20vS2VybmVsL0xhbmd1YWdlLyoucG0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6T2JqZWN0TWFuYWdlckNyZWF0aW9uXQpzZWxlY3QgPSAqKi8qLntwbX0Kc2VsZWN0ID0gS2VybmVsL0NvbmZpZy5wbS5kaXN0Cmlnbm9yZSA9IEtlcm5lbC9MYW5ndWFnZS8qLnBtIEN1c3RvbS9LZXJuZWwvTGFuZ3VhZ2UvKi5wbQppZ25vcmUgPSBLZXJuZWwvU3lzdGVtL1VuaXRUZXN0L1JlZ2lzdGVyRHJpdmVyLnBtIEN1c3RvbS9LZXJuZWwvU3lzdGVtL1VuaXRUZXN0L1JlZ2lzdGVyRHJpdmVyLnBtCmlnbm9yZSA9IEtlcm5lbC9TeXN0ZW0vVW5pdFRlc3QvUmVnaXN0ZXJPTS5wbSBDdXN0b20vS2VybmVsL1N5c3RlbS9Vbml0VGVzdC9SZWdpc3Rlck9NLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6Ok9iamVjdE5hbWVTcGFjZV0Kc2VsZWN0ID0gKiovKi57cGwscG0sdH0Kc2VsZWN0ID0gS2VybmVsL0NvbmZpZy5wbS5kaXN0Cmlnbm9yZSA9IEtlcm5lbC9Nb2R1bGVzLyoqLyogQ3VzdG9tL0tlcm5lbC9Nb2R1bGVzLyoqLyoKaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBhcmFtT2JqZWN0XQpzZWxlY3QgPSAqKi8qLntwbCxwc2dpfQpzZWxlY3QgPSBLZXJuZWwvU3lzdGVtLyoqLyoucG0gQ3VzdG9tL0tlcm5lbC9TeXN0ZW0vKiovKi5wbQppZ25vcmUgPSBLZXJuZWwvU3lzdGVtL1dlYi8qKi8qLnBtIEN1c3RvbS9LZXJuZWwvU3lzdGVtL1dlYi8qKi8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBlcmxDcml0aWNdCnNlbGVjdCA9ICoqLyoue3BsLHBtLHBzZ2ksdH0KaWdub3JlID0gS2VybmVsL0NvbmZpZy5wbQppZ25vcmUgPSBLZXJuZWwvTGFuZ3VhZ2UvKi5wbSBDdXN0b20vS2VybmVsL0xhbmd1YWdlLyoucG0KaWdub3JlID0gc2NyaXB0cy90ZXN0L3NhbXBsZS8qKi8qCjsgSWdub3JlIHRoaXMgc2xvdyBwbHVnaW4gZm9yIG1vcmUgYWdpbGUgT1RPQk9Db2RlUG9saWN5IGZpbHRlciBkZXZlbG9wbWVudCB3aXRoIGEgY3VzdG9tIG1vZGUgImZhc3QiLgpleGNlcHRfbW9kZXMgPSBmYXN0CnByb2ZpbGUgPSAkUk9PVC9QbHVnaW4vT1RPQk8vUGVybC9wZXJsY3JpdGljcmMKClsrVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UGVybFRpZHldCnNlbGVjdCA9ICoqLyoue3BsLHBtLHBzZ2ksdH0KaWdub3JlID0gS2VybmVsL0NvbmZpZy5wbSBLZXJuZWwvQ29uZmlnL0RlZmF1bHRzLnBtIEtlcm5lbC9Db25maWcvKiovWlpaKi5wbSBLZXJuZWwvQ29uZmlnL0ZpbGVzL1VzZXIvKi5wbQppZ25vcmUgPSBLZXJuZWwvTGFuZ3VhZ2UvKi5wbSBDdXN0b20vS2VybmVsL0xhbmd1YWdlLyoucG0KYXJndiA9IC1wcm89JFJPT1QvUGx1Z2luL09UT0JPL1BlcmwvcGVybHRpZHlyYwo7IElnbm9yZSB0aGlzIHNsb3cgcGx1Z2luIGZvciBtb3JlIGFnaWxlIE9UT0JPQ29kZVBvbGljeSBmaWx0ZXIgZGV2ZWxvcG1lbnQgd2l0aCBhIGN1c3RvbSBtb2RlICJmYXN0Ii4KZXhjZXB0X21vZGVzID0gZmFzdAoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpQb2Q6OkZ1bmN0aW9uUG9kXQpzZWxlY3QgPSAqKi8qLntwbX0KaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBvZDo6TmFtZVBvZF0Kc2VsZWN0ID0gKiovKi57cG19Cmlnbm9yZSA9IEtlcm5lbC9MYW5ndWFnZS8qLnBtIEN1c3RvbS9LZXJuZWwvTGFuZ3VhZ2UvKi5wbQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpQb2Q6OlNwZWxsQ2hlY2tdCnNlbGVjdCA9ICoqLyoue3BtLHBvZH0KaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCjsgSWdub3JlIHRoaXMgc2xvdyBwbHVnaW4gZm9yIG1vcmUgYWdpbGUgT1RPQk9Db2RlUG9saWN5IGZpbHRlciBkZXZlbG9wbWVudCB3aXRoIGEgY3VzdG9tIG1vZGUgImZhc3QiLgpleGNlcHRfbW9kZXMgPSBmYXN0CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBvZDo6VmFsaWRhdG9yXQpzZWxlY3QgPSAqKi8qLntwbSxwb2QscG9kLmRpc3R9Cmlnbm9yZSA9IEtlcm5lbC9MYW5ndWFnZS8qLnBtIEN1c3RvbS9LZXJuZWwvTGFuZ3VhZ2UvKi5wbQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpQcmludF0Kc2VsZWN0ID0gS2VybmVsL01vZHVsZXMvKiovKi5wbSBDdXN0b20vS2VybmVsL01vZHVsZXMvKiovKi5wbQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpSZXF1aXJlXQpzZWxlY3QgPSAqKi8qLntwbCxwc2dpLHBtLHR9CnNlbGVjdCA9IEtlcm5lbC9Db25maWcucG0uZGlzdAppZ25vcmUgPSBzY3JpcHRzL3Rlc3QvU2VsZW5pdW0vKiovKi50Cmlnbm9yZSA9IEtlcm5lbC9MYW5ndWFnZS8qLnBtIEN1c3RvbS9LZXJuZWwvTGFuZ3VhZ2UvKi5wbQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpTY3JpcHRGb3JtYXRdCnNlbGVjdCA9ICoqLyoue3BsLHBzZ2l9CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlN1YkRlY2xhcmF0aW9uXQpzZWxlY3QgPSAqKi8qLntwbCxwbSxwc2dpLHR9CnNlbGVjdCA9IEtlcm5lbC9Db25maWcucG0uZGlzdAppZ25vcmUgPSBLZXJuZWwvTGFuZ3VhZ2UvKi5wbSBDdXN0b20vS2VybmVsL0xhbmd1YWdlLyoucG0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6U3ludGF4Q2hlY2tdCnNlbGVjdCA9ICoqLyoue3BsLHBtLHBzZ2ksdH0Kc2VsZWN0ID0gS2VybmVsL0NvbmZpZy5wbS5kaXN0CjsgSWdub3JlIHRoaXMgc2xvdyBwbHVnaW4gZm9yIG1vcmUgYWdpbGUgT1RPQk9Db2RlUG9saWN5IGZpbHRlciBkZXZlbG9wbWVudCB3aXRoIGEgY3VzdG9tIG1vZGUgImZhc3QiLgpleGNlcHRfbW9kZXMgPSBmYXN0CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlRlc3RzOjpIZWxwZXJdCnNlbGVjdCA9ICoqLyoue3R9CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlRpbWVdCnNlbGVjdCA9ICoqLyoue3BsLHBtLHBzZ2ksdH0Kc2VsZWN0ID0gS2VybmVsL0NvbmZpZy5wbS5kaXN0Cmlnbm9yZSA9IHNjcmlwdHMvdGVzdC8qKi8qCmlnbm9yZSA9IEtlcm5lbC9MYW5ndWFnZS8qLnBtIEN1c3RvbS9LZXJuZWwvTGFuZ3VhZ2UvKi5wbQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpUcmFuc2xhdGFibGVdCnNlbGVjdCA9ICoqLyoue3BsLHBtLHBzZ2ksdH0KaWdub3JlID0gS2VybmVsL0NvbmZpZy5wbSBLZXJuZWwvQ29uZmlnLyoqL1paWioucG0KaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLnBtCmlnbm9yZSA9IEtlcm5lbC9MYW5ndWFnZS8qLnBtIEN1c3RvbS9LZXJuZWwvTGFuZ3VhZ2UvKi5wbQppZ25vcmUgPSBzY3JpcHRzL3Rlc3QvKiovKgoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpUcmFuc2xhdGlvbkVuY29kaW5nXQpzZWxlY3QgPSBLZXJuZWwvTGFuZ3VhZ2UvKi5wbSBDdXN0b20vS2VybmVsL0xhbmd1YWdlLyoucG0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6VW5pdFRlc3RDb25maWdDaGFuZ2VzXQpzZWxlY3QgPSBzY3JpcHRzL3Rlc3QvKiovKi57dH0KClsrVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6VXNlUGFyZW50XQpzZWxlY3QgPSAqKi8qLnBtICoqLyoucG0uc2tlbApzZWxlY3QgPSBLZXJuZWwvQ29uZmlnLnBtLmRpc3QKaWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlVzZVdhcm5pbmdzXQpzZWxlY3QgPSAqKi8qLntwbCxwbSxwc2dpLHR9CnNlbGVjdCA9IEtlcm5lbC9Db25maWcucG0uZGlzdAppZ25vcmUgPSBLZXJuZWwvTGFuZ3VhZ2UvKi5wbSBDdXN0b20vS2VybmVsL0xhbmd1YWdlLyoucG0KCjsKOyBTT1BNCjsKClsrVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6U09QTTo6Q29kZVRhZ3NdCnNlbGVjdCA9ICoue29wbSxzb3BtfQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpTT1BNOjpGaWxlTGlzdF0Kc2VsZWN0ID0gKi57b3BtLHNvcG19CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlNPUE06OkZpbGVSaWdodHNdCnNlbGVjdCA9ICoue29wbSxzb3BtfQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpTT1BNOjpOYW1lXQpzZWxlY3QgPSAqLntzb3BtfQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpTT1BNOjpQYWNrYWdlUmVxdWlyZWRdCnNlbGVjdCA9ICoue29wbSxzb3BtfQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpTT1BNOjpSZXF1aXJlZEVsZW1lbnRzXQpzZWxlY3QgPSAqLntzb3BtfQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpTT1BNOjpYU0RWYWxpZGF0b3JdCnNlbGVjdCA9ICoue3NvcG19Cgo7CjsgVFQKOwoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpUVDo6U2NyaXB0VXNhZ2VdCnNlbGVjdCA9ICoqLyoudHQKClsrVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6VFQ6OlRyYW5zbGF0aW9uRmlsdGVyXQpzZWxlY3QgPSAqKi8qLnR0Cgo7CjsgU1FMCjsKClsrVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6U1FMOjpSZXNlcnZlZFdvcmRzXQpzZWxlY3QgPSAqKi8qLnt4bWwsb3BtLHNvcG19Cgo7CjsgV2hpdGVzcGFjZQo7CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OldoaXRlc3BhY2U6OkZvdXJTcGFjZXNdCnNlbGVjdCA9ICoqLyoue29wbSxzb3BtfQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpXaGl0ZXNwYWNlOjpUYWJzXQpzZWxlY3QgPSAqKi8qLntwbCxwbSxwc2dpLHQsdHQsanMseG1sLG9wbSxzb3BtfQppZ25vcmUgPSBLZXJuZWwvQ29uZmlnLnBtIEtlcm5lbC9Db25maWcvKiovWlpaKi5wbQoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpXaGl0ZXNwYWNlOjpUcmFpbGluZ1doaXRlc3BhY2VdCnNlbGVjdCA9ICoqLyoue3BsLHBtLHBzZ2ksdCx0dCxqcyx4bWwsb3BtLHNvcG0sbWR9Cmlnbm9yZSA9IEtlcm5lbC9Db25maWcucG0gS2VybmVsL0NvbmZpZy8qKi9aWloqLnBtCgo7CjsgWE1MCjsKClsrVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpDb25maWdTeW50YXhdCnNlbGVjdCA9ICoqLyoueG1sCmlnbm9yZSA9IGRldmVsb3BtZW50L3NhbXBsZXMvY29uZmlnLyoueG1sCjsgaWdub3JlIC54bWwgZmlsZXMgaW4gZG9jdW1lbnRhdGlvbgppZ25vcmUgPSBkb2MvKiovKi54bWwKaWdub3JlID0gZW4vY29udGVudC8qKi8qLnhtbAppZ25vcmUgPSBkZS9jb250ZW50LyoqLyoueG1sCmlnbm9yZSA9IGh1L2NvbnRlbnQvKiovKi54bWwKaWdub3JlID0gc2NyaXB0cy90ZXN0L3NhbXBsZS8qKi8qLnhtbAoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ0Rlc2NyaXB0aW9uXQpzZWxlY3QgPSBLZXJuZWwvQ29uZmlnLyoqLyoueG1sCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6Q29uZmlndXJhdGlvbjo6TmF2aWdhdGlvbl0Kc2VsZWN0ID0gS2VybmVsL0NvbmZpZy8qKi8qLnhtbAoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246OlVuaXRUZXN0QmxhY2tsaXN0XQpzZWxlY3QgPSBLZXJuZWwvQ29uZmlnLyoqLyoueG1sCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6Q29uZmlndXJhdGlvbjo6WFNEVmFsaWRhdG9yXQpzZWxlY3QgPSBLZXJuZWwvQ29uZmlnLyoqLyoueG1sCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6RGF0YWJhc2U6OktleUxlbmd0aF0Kc2VsZWN0ID0gc2NyaXB0cy9kYXRhYmFzZS9vdG9iby1zY2hlbWEueG1sCnNlbGVjdCA9ICoue3NvcG19CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6RGF0YWJhc2U6OlhTRFZhbGlkYXRvcl0Kc2VsZWN0ID0gc2NyaXB0cy9kYXRhYmFzZS8qLnhtbApzZWxlY3QgPSBzY3JpcHRzL2RhdGFiYXNlL3VwZGF0ZS8qLnhtbAoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkRvY2Jvb2s6OkJpblNjcmlwdHNdCnNlbGVjdCA9IGRvYy8qKi8qLnhtbAo7c2VsZWN0ID0gZW4vY29udGVudC8qKi8qLnhtbAoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkRvY2Jvb2s6OkltYWdlT3V0cHV0XQpzZWxlY3QgPSBkb2MvKiovKi54bWwKc2VsZWN0ID0gZW4vY29udGVudC8qKi8qLnhtbAoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkRvY2Jvb2s6OlhTRFZhbGlkYXRvcl0Kc2VsZWN0ID0gZG9jLyoqLyoueG1sCjtzZWxlY3QgPSBlbi9jb250ZW50LyoqLyoueG1sCgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6V1NETDo6WFNEVmFsaWRhdG9yXQpzZWxlY3QgPSAqKi8qLndzZGwKClsrVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpXQURMOjpYU0RWYWxpZGF0b3JdCnNlbGVjdCA9ICoqLyoud2FkbAoKWytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkxpbnRdCnNlbGVjdCA9ICoqLyoue3htbCx4c2R9CgpbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6TGludFdpdGhPdXJQYXJzZXJzXQpzZWxlY3QgPSA7KiovKi54bWwKCjsKOyBNaWdyYXRpb25zIE9UT0JPIDEwCjsKCjtbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86Ok1pZ3JhdGlvbnM6Ok9UT0JPMTA6OkRhdGVUaW1lXQo7c2VsZWN0ID0gKiovKi57cGwscG0scHNnaSx0fQo7aWdub3JlID0gS2VybmVsL0NvbmZpZy9GaWxlcy9aWloqLnBtCjtpZ25vcmUgPSBLZXJuZWwvTGFuZ3VhZ2UvKi5wbSBDdXN0b20vS2VybmVsL0xhbmd1YWdlLyoucG0KOwo7WytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpNaWdyYXRpb25zOjpPVE9CTzEwOjpQZXJsQ29uZmlnRmlsZUZvcm1hdF0KO3NlbGVjdCA9IEtlcm5lbC9Db25maWcvRmlsZXMvKi5wbQo7CjtbK1RpZHlBbGw6OlBsdWdpbjo6T1RPQk86Ok1pZ3JhdGlvbnM6Ok9UT0JPMTA6OlBlcm1pc3Npb25EYXRhTm90SW5TZXNzaW9uXQo7c2VsZWN0ID0gKiovKi57cGwscG0scHNnaSx0fQo7aWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCjsKO1srVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6TWlncmF0aW9uczo6T1RPQk8xMDo6U3lzQ29uZmlnXQo7c2VsZWN0ID0gKiovKi57cGwscG0scHNnaSx0fQo7aWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCjsKO1srVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6TWlncmF0aW9uczo6T1RPQk8xMDo6VGltZU9iamVjdF0KO3NlbGVjdCA9ICoqLyoue3BsLHBtLHBzZ2ksdH0KO2lnbm9yZSA9IEtlcm5lbC9TeXN0ZW0vVGltZS5wbQo7aWdub3JlID0gc2NyaXB0cy90ZXN0L1RpbWUudAo7aWdub3JlID0gc2NyaXB0cy90ZXN0L1RpbWUvKiovKi50CjtpZ25vcmUgPSBLZXJuZWwvTGFuZ3VhZ2UvKi5wbSBDdXN0b20vS2VybmVsL0xhbmd1YWdlLyoucG0KOwo7WytUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpNaWdyYXRpb25zOjpPVE9CTzEwOjpUaW1lWm9uZU9mZnNldF0KO3NlbGVjdCA9ICoqLyoue3BsLHBtLHBzZ2ksdH0KO2lnbm9yZSA9IEtlcm5lbC9Db25maWcvRmlsZXMvWlpaKi5wbQo7aWdub3JlID0gS2VybmVsL0xhbmd1YWdlLyoucG0gQ3VzdG9tL0tlcm5lbC9MYW5ndWFnZS8qLnBtCjsKO1srVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6TWlncmF0aW9uczo6T1RPQk8xMDo6WE1MRnJvbnRlbmROYXZpZ2F0aW9uXQo7c2VsZWN0ID0gS2VybmVsL0NvbmZpZy8qKi8qLnhtbAo=</File>
        <File Location="Kernel/TidyAll/git-hooks/pre-commit.pl" Permission="770" Encode="Base64">IyEvdXNyL2Jpbi9lbnYgcGVybAojIC0tCiMgT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgojIC0tCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKdXNlIEZpbmRCaW4gcXcoJFJlYWxCaW4pOwp1c2UgbGliIGRpcm5hbWUoJFJlYWxCaW4pIC4gJy8uLi8uLi8nOwp1c2UgbGliIGRpcm5hbWUoJFJlYWxCaW4pIC4gJy8uLi8uLi9LZXJuZWwvJzsgICAgIyBmaW5kIFRpZHlBbGwKdXNlIGxpYiBkaXJuYW1lKCRSZWFsQmluKSAuICcvLi4vLi4vS2VybmVsL2NwYW4tbGliJzsKCnVzZSBUaWR5QWxsOjpPVE9CTzo6R2l0OjpQcmVDb21taXQ7CgojIHNraXAgbWVyZ2UgY29tbWl0cwppZiAoIC1lICcuZ2l0L01FUkdFX01TRycgKSB7CiAgICBwcmludCAibWVyZ2UgY29tbWl0LiBza2lwcGluZyBjb21taXQgaG9vay4uLlxuIjsKICAgIGV4aXQ7Cn0KCm15ICRQcmVDb21taXQgPSBUaWR5QWxsOjpPVE9CTzo6R2l0OjpQcmVDb21taXQtPm5ldygpOwokUHJlQ29tbWl0LT5SdW4oKTsK</File>
        <File Location="Kernel/TidyAll/git-hooks/pre-receive.pl" Permission="770" Encode="Base64">IyEvdXNyL2Jpbi9lbnYgcGVybAojIC0tCiMgT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgojIC0tCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNiBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgY29yZSBtb2R1bGVzCnVzZSBGaWxlOjpCYXNlbmFtZTsKdXNlIEZpbmRCaW4gcXcoJFJlYWxCaW4pOwp1c2UgR2V0b3B0OjpMb25nIHF3KEdldE9wdGlvbnMpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwoKdXNlIGxpYiBkaXJuYW1lKCRSZWFsQmluKSAuICcvLi4vLi4vJzsKdXNlIGxpYiBkaXJuYW1lKCRSZWFsQmluKSAuICcvLi4vLi4vS2VybmVsLyc7ICAgICMgZmluZCBUaWR5QWxsCnVzZSBsaWIgZGlybmFtZSgkUmVhbEJpbikgLiAnLy4uLy4uL0tlcm5lbC9jcGFuLWxpYic7Cgp1c2UgVGlkeUFsbDo6T1RPQk86OkdpdDo6UHJlUmVjZWl2ZTsKCm15ICRJbnB1dCA9ICcnOwpHZXRPcHRpb25zKCAnaW5wdXQ9cycgPT4gXCRJbnB1dCApOwoKbXkgJFByZVJlY2VpdmUgPSBUaWR5QWxsOjpPVE9CTzo6R2l0OjpQcmVSZWNlaXZlLT5uZXcoKTsKJFByZVJlY2VpdmUtPlJ1biggSW5wdXQgPT4gJElucHV0ICk7Cg==</File>
        <File Location="Kernel/TidyAll/git-hooks/prepare-commit-msg.pl" Permission="770" Encode="Base64">IyEvdXNyL2Jpbi9lbnYgcGVybAojIC0tCiMgT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgojIC0tCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgY29yZSBtb2R1bGVzCnVzZSBJTzo6RmlsZTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKCj1oZWFkMSBOQU1FCgpwcmVwYXJlLWNvbW1pdC1tc2cucGwgLSBhIGdpdCBob29rCgo9aGVhZDEgREVTQ1JJUFRJT04KClRoaXMgZ2l0IGhvb2sgcHJlc2V0IHRoZSBjb21taXQgbWVzc2FnZSB3aGVuIHJ1bm5pbmcgSTxnaXQgY29tbWl0Pi4KVHdvIGRpZmZlcmVudCBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkLgoKPWhlYWQyIHJlZmVyZW5jZSB0aGUgR2l0aHViIGlzc3VlIGJhc2VkIG9uIGEgbmFtaW5nIGNvbnZlbnRpb24gZm9yIHRoZSBicmFuY2gKCldoZW4gdGhlIGN1cnJlbnQgZ2l0IGJyYW5jaCBpcyByZWNvZ25pc2VkIGFzIGFuIGlzc3VlIGJyYW5jaCB0aGVuCnRoZSBjb21taXQgbWVzc2FnZSBpcyBwcmVwZW5kZWQgd2l0aCAnSXNzdWUgIzxJU1NVRV9JRD46Jy4KCkV4YW1wbGVzIGZvciBpc3N1ZSBicmFuY2ggbmFtZXMgYXJlOgoKICAgIGlzc3VlLSM1MTMtcHJlcGFyZV9jb21taXRfbXNnCiAgICBpc3N1ZS1yb3RoZXJvc3Mvb3RvYm8jNTEzLXByZXBhcmVfY29tbWl0X21zZwogICAgaXNzdWUtUm90aGVyT1NTL290b2JvLWRvY2tlciMxLWV4YW1wbGUKICAgIGlzc3VlLVJvdGhlck9TUy9vdG9iby1kb2NrZXIjMi14CgoKPWhlYWQyIGluY2x1ZGUgdGhlIGZpbGUgLmdpdC9PVE9CT0NvbW1pdFRlbXBsYXRlRmlsZS5tc2cKClRoaXMgaXMgc3VwcG9ydCBmb3IgYSB3b3JrZmxvdyB0aGF0IGdlbmVyYXRlcyB0ZXh0IGZvciB0aGUgY29tbWl0IG1lc3NhZ2UgYW5kIHdyaXRlcyBpdCB0bwphbiBhZ3JlZWQgdXBvbiBmaWxlLiBBZnRlciBpbmNsdWRpbmcgaXQsIHRoZSB0cmFuc2ZlciBmaWxlIGlzIGRlbGV0ZWQuCgpDdXJyZW50bHkgbm8gZXhhbXBsZSBvZiBzdWNoIGEgd29ya2Zsb3cgaXMga25vd24uCgo9Y3V0CgojIGdpdCBjYWxscyB0aGlzIHNjcmlwdCB3aXRoIHRoZSBhcmd1bWVudHM6IENPTU1JVF9NU0dfRklMRSwgQ09NTUlUX1NPVVJDRSwgU0hBMS4KIyBIZXJlIG9ubHkgQ09NTUlUX01TR19GSUxFIGFuZCBDT01NSVRfU09VUkNFIGFyZSBuZWVkZWQuCm15ICggJEdpdENvbW1pdE1zZ0ZpbGUsICRHaXRDb21taXRTb3VyY2UgKSA9IEBBUkdWOwoKbXkgQEN1c3RvbUNvbW1pdE1zZzsKCiMgZmVhdHVyZSAxCiMgRm9yIG5vdyB3ZSBtZXNzIG9ubHkgd2l0aCBpbnRlcmFjdGl2ZSBjb21taXRzLCB0aGF0IGlzIHdoZW4gJEdpdENvbW1pdFNvdXJjZSBpcyBlbXB0eS4KaWYgKCAhJEdpdENvbW1pdFNvdXJjZSApIHsKCiAgICAjIGZpbmQgb3V0IHdoaWNoIGJyYW5jaCB3ZSBhcmUgb24KICAgIG15ICRCcmFuY2hOYW1lID0gYGdpdCByZXYtcGFyc2UgLS1hYmJyZXYtcmVmIEhFQURgOwogICAgY2hvbXAgJEJyYW5jaE5hbWU7CgogICAgIyBEbyBub3RoaW5nIHVubGVzcyB0aGUgaXNzdWUgY2FuIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBnaXQgYnJhbmNoIG5hbWUuCiAgICBpZiAoIG15ICgkSXNzdWUpID0gJEJyYW5jaE5hbWUgPX4gbS9eaXNzdWUtKC4qI1swLTldKyktW14tXSsvICkgewoKICAgICAgICAjIFByZXBlbmQgdGhlIGlzc3VlIHRvIHRoZSBjb21taXQgbWVzc2FnZS4KICAgICAgICBwdXNoIEBDdXN0b21Db21taXRNc2csICJJc3N1ZSAkSXNzdWU6IjsKICAgIH0KfQoKIyBmZWF0dXJlIDIKewogICAgbXkgJE9UT0JPQ29tbWl0VGVtcGxhdGVGaWxlID0gJy5naXQvT1RPQk9Db21taXRUZW1wbGF0ZS5tc2cnOwoKICAgIGlmICggLXIgJE9UT0JPQ29tbWl0VGVtcGxhdGVGaWxlICkgewoKICAgICAgICAjIEdldCBvdXIgY29udGVudCBhbmQgcHJlcGVuZCBpdAogICAgICAgIG15ICRGaWxlSGFuZGxlID0gSU86OkZpbGUtPm5ldyggJE9UT0JPQ29tbWl0VGVtcGxhdGVGaWxlLCAncicgKTsKICAgICAgICBwdXNoIEBDdXN0b21Db21taXRNc2csICRGaWxlSGFuZGxlLT5nZXRsaW5lcygpOwoKICAgICAgICAjIFJlbW92ZSBjdXN0b20gY29tbWl0IG1lc3NhZ2UgdGVtcGxhdGUKICAgICAgICB1bmxpbmsgJE9UT0JPQ29tbWl0VGVtcGxhdGVGaWxlOwogICAgfQp9CgojIHByZXBlbmQgdGhlIGN1c3RvbSB0ZXh0IHRvIHRoZSBjb21taXQgbWVzc2FnZQppZiAoQEN1c3RvbUNvbW1pdE1zZykgewoKICAgIG15ICRGaWxlSGFuZGxlSW4gPSBJTzo6RmlsZS0+bmV3KCAkR2l0Q29tbWl0TXNnRmlsZSwgJ3InICk7CiAgICBteSBAT2xkQ29tbWl0TXNnID0gJEZpbGVIYW5kbGVJbi0+Z2V0bGluZXMoKTsKCiAgICAjIFdyaXRlIG5ldyBjb21taXQgbWVzc2FnZQogICAgbXkgJEZpbGVIYW5kbGVPdXQgPSBJTzo6RmlsZS0+bmV3KCAkR2l0Q29tbWl0TXNnRmlsZSwgJ3cnICk7CiAgICAkRmlsZUhhbmRsZU91dC0+cHJpbnQoIGpvaW4gJycsIEBDdXN0b21Db21taXRNc2csIEBPbGRDb21taXRNc2cgKTsKfQo=</File>
        <File Location="scripts/install-git-hooks.pl" Permission="770" Encode="Base64">IyEvdXNyL2Jpbi9lbnYgcGVybAojIC0tCiMgT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgojIC0tCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEN3ZDsKdXNlIEZpbGU6OlNwZWM7CnVzZSBGaW5kQmluIHF3KCRSZWFsQmluKTsKCm15ICREaXJlY3RvcnkgPSBnZXRjd2Q7CgojIGluc3RhbGwgaG9va3MKbXkgJE51bUhvb2tzID0gMDsKdW5saW5rIEZpbGU6OlNwZWMtPmNhdGZpbGUoICREaXJlY3RvcnksICcuZ2l0JywgJ2hvb2tzJywgJ3ByZS1jb21taXQnICk7CnN5bWxpbmsoCiAgICBGaWxlOjpTcGVjLT5jYXRmaWxlKCAkUmVhbEJpbiwgICAnLi4nLCAgICdLZXJuZWwnLCAnVGlkeUFsbCcsICdnaXQtaG9va3MnLCAncHJlLWNvbW1pdC5wbCcgKSwKICAgIEZpbGU6OlNwZWMtPmNhdGZpbGUoICREaXJlY3RvcnksICcuZ2l0JywgJ2hvb2tzJywgICdwcmUtY29tbWl0JyApCik7CiROdW1Ib29rcysrOwoKdW5saW5rIEZpbGU6OlNwZWMtPmNhdGZpbGUoICREaXJlY3RvcnksICcuZ2l0JywgJ2hvb2tzJywgJ3ByZXBhcmUtY29tbWl0LW1zZycgKTsKc3ltbGluaygKICAgIEZpbGU6OlNwZWMtPmNhdGZpbGUoCiAgICAgICAgJFJlYWxCaW4sICcuLicsICdLZXJuZWwnLCAnVGlkeUFsbCcsICdnaXQtaG9va3MnLCAncHJlcGFyZS1jb21taXQtbXNnLnBsJwogICAgKSwKICAgIEZpbGU6OlNwZWMtPmNhdGZpbGUoICREaXJlY3RvcnksICcuZ2l0JywgJ2hvb2tzJywgJ3ByZXBhcmUtY29tbWl0LW1zZycgKQopOwokTnVtSG9va3MrKzsKCnByaW50ICJJbnN0YWxsZWQgJE51bUhvb2tzIGdpdCBob29rcyBpbiAkRGlyZWN0b3J5LlxuXG4iOwo=</File>
        <File Location="scripts/uninstall-git-hooks.pl" Permission="770" Encode="Base64">IyEvdXNyL2Jpbi9lbnYgcGVybAojIC0tCiMgT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgojIC0tCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEN3ZDsKdXNlIEZpbGU6OlNwZWM7CgpteSAkRGlyZWN0b3J5ID0gZ2V0Y3dkOwoKdW5saW5rIEZpbGU6OlNwZWMtPmNhdGZpbGUoICREaXJlY3RvcnksICcuZ2l0JywgJ2hvb2tzJywgJ3ByZS1jb21taXQnICk7CnVubGluayBGaWxlOjpTcGVjLT5jYXRmaWxlKCAkRGlyZWN0b3J5LCAnLmdpdCcsICdob29rcycsICdwcmVwYXJlLWNvbW1pdC1tc2cnICk7CnByaW50ICJSZW1vdmVkIGdpdCBob29rcyBpbiAkRGlyZWN0b3J5LlxuXG4iOwo=</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnBhY2thZ2Ugc2NyaXB0czo6dGVzdDo6T1RPQk9Db2RlUG9saWN5UGx1Z2luczsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKdXNlIEZpbmRCaW4gcXcoJFJlYWxCaW4pOwp1c2UgbGliIGRpcm5hbWUoJFJlYWxCaW4pIC4gJy9LZXJuZWwvJzsgICAgIyBmaW5kIFRpZHlBbGwKCnVzZSB1dGY4OwoKdXNlIFRpZHlBbGw6Ok9UT0JPOwoKdXNlIEtlcm5lbDo6Q29uZmlnOwp1c2UgS2VybmVsOjpTeXN0ZW06OkVuY29kZTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpMb2c7CnVzZSBLZXJuZWw6OlN5c3RlbTo6TWFpbjsKCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gS2VybmVsOjpDb25maWctPm5ldygpOwogICAgbXkgJEVuY29kZU9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpFbmNvZGUtPm5ldygKICAgICAgICBDb25maWdPYmplY3QgPT4gJENvbmZpZ09iamVjdCwKICAgICk7CiAgICBteSAkTG9nT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OkxvZy0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAogICAgICAgIEVuY29kZU9iamVjdCA9PiAkRW5jb2RlT2JqZWN0LAogICAgKTsKICAgIG15ICRNYWluT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06Ok1haW4tPm5ldygKICAgICAgICBDb25maWdPYmplY3QgPT4gJENvbmZpZ09iamVjdCwKICAgICAgICBFbmNvZGVPYmplY3QgPT4gJEVuY29kZU9iamVjdCwKICAgICAgICBMb2dPYmplY3QgICAgPT4gJExvZ09iamVjdCwKICAgICk7CgogICAgbXkgJEhvbWUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0hvbWUnKTsKCiAgICAjIFN1cHByZXNzIGNvbG9yZWQgb3V0cHV0IHRvIG5vdCBjbHV0dGVyIGxvZyBmaWxlcy4KICAgIGxvY2FsICRFTlZ7T1RPQk9DT0RFUE9MSUNZX05PQ09MT1J9ID0gMTsKCiAgICBteSAkVGlkeUFsbCA9IFRpZHlBbGw6Ok9UT0JPLT5uZXdfZnJvbV9jb25mX2ZpbGUoCiAgICAgICAgIiRIb21lL0tlcm5lbC9UaWR5QWxsL3RpZHlhbGxyYyIsCiAgICAgICAgbm9fY2FjaGUgICA9PiAxLAogICAgICAgIGNoZWNrX29ubHkgPT4gMSwKICAgICAgICBtb2RlICAgICAgID0+ICd0ZXN0cycsCiAgICAgICAgcm9vdF9kaXIgICA9PiAkSG9tZSwKICAgICAgICBkYXRhX2RpciAgID0+IEZpbGU6OlNwZWMtPnRtcGRpcigpLAoKICAgICAgICAjdmVyYm9zZSAgICA9PiAxLAogICAgKTsKCiAgICBURVNUOgogICAgZm9yIG15ICRUZXN0ICggQHsgJFBhcmFte1Rlc3RzfSB9ICkgewoKICAgICAgICAjIFNldCBmcmFtZXdvcmsgdmVyc2lvbiBpbiBUaWR5QWxsIHNvIHRoYXQgcGx1Z2lucyBjYW4gdXNlIGl0LgogICAgICAgIG15ICggJEZyYW1ld29ya1ZlcnNpb25NYWpvciwgJEZyYW1ld29ya1ZlcnNpb25NaW5vciApID0gJFRlc3QtPntGcmFtZXdvcmt9ID1+IG0vKFxkKylbLl0oXGQrKS94bXM7CiAgICAgICAgJFRpZHlBbGw6Ok9UT0JPOjpGcmFtZXdvcmtWZXJzaW9uTWFqb3IgPSAkRnJhbWV3b3JrVmVyc2lvbk1ham9yOwogICAgICAgICRUaWR5QWxsOjpPVE9CTzo6RnJhbWV3b3JrVmVyc2lvbk1pbm9yID0gJEZyYW1ld29ya1ZlcnNpb25NaW5vcjsKCiAgICAgICAgIyBTZXQgdGhlIGxpc3Qgb2YgZmlsZXMgdG8gdGhlIHNhbWUgb25lIGRlZmluZWQgaW4gdGhlIHRlc3QgY2FzZS4KICAgICAgICBAVGlkeUFsbDo6T1RPQk86OkZpbGVMaXN0ID0gQHsgJFRlc3QtPntGaWxlTGlzdH0gLy8gW10gfTsKCiAgICAgICAgbXkgJFNvdXJjZSA9ICRUZXN0LT57U291cmNlfTsKCiAgICAgICAgZXZhbCB7CiAgICAgICAgICAgIGZvciBteSAkUGx1Z2luTW9kdWxlICggQHsgJFRlc3QtPntQbHVnaW5zfSB9ICkgewogICAgICAgICAgICAgICAgJE1haW5PYmplY3QtPlJlcXVpcmUoJFBsdWdpbk1vZHVsZSk7CiAgICAgICAgICAgICAgICBteSAkUGx1Z2luID0gJFBsdWdpbk1vZHVsZS0+bmV3KAogICAgICAgICAgICAgICAgICAgIG5hbWUgICAgPT4gJFBsdWdpbk1vZHVsZSwKICAgICAgICAgICAgICAgICAgICB0aWR5YWxsID0+ICRUaWR5QWxsLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJE1ldGhvZCAocXcocHJlcHJvY2Vzc19zb3VyY2UgcHJvY2Vzc19zb3VyY2Vfb3JfZmlsZSBwb3N0cHJvY2Vzc19zb3VyY2UpKSB7CiAgICAgICAgICAgICAgICAgICAgKCRTb3VyY2UpID0gJFBsdWdpbi0+JE1ldGhvZCggJFNvdXJjZSwgJFRlc3QtPntGaWxlbmFtZX0gKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH07CgogICAgICAgIG15ICRFeGNlcHRpb24gPSAkQDsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkRXhjZXB0aW9uID8gMSA6IDAsCiAgICAgICAgICAgICRUZXN0LT57RXhjZXB0aW9ufSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSAiIC4gKCAkRXhjZXB0aW9uID8gImV4Y2VwdGlvbiBmb3VuZDpcbiRFeGNlcHRpb24iIDogJ25vIGV4Y2VwdGlvbicgKSwKICAgICAgICApOwoKICAgICAgICBuZXh0IFRFU1QgaWYgJEV4Y2VwdGlvbjsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU291cmNlLAogICAgICAgICAgICAkVGVzdC0+e1Jlc3VsdH0gLy8gJFRlc3QtPntTb3VyY2V9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIHJlc3VsdCIsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==</File>
        <File Location="scripts/test/OTOBOCodePolicy.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBGaWxlOjpCYXNlbmFtZTsKdXNlIEZpbmRCaW4gcXcoJFJlYWxCaW4pOwp1c2UgbGliIGRpcm5hbWUoJFJlYWxCaW4pIC4gJy9LZXJuZWwvJzsgICAgIyBmaW5kIFRpZHlBbGwKCiMgV29yayBhcm91bmQgYSBQZXJsIGJ1ZyB0aGF0IGlzIHRyaWdnZXJlZCBpbiBEZXZlbDo6U3RhY2tUcmFjZQojICAgKHByb2JhbHkgZnJvbSBFeGNlcHRpb246OkNsYXNzIGFuZCB0aGlzIGZyb20gUGVybDo6Q3JpdGljKS4KIwojICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ob3VzZWFic29sdXRlL0RldmVsLVN0YWNrVHJhY2UvaXNzdWVzLzExIGFuZAojICAgaHR0cDovL3J0LnBlcmwub3JnL3J0My9QdWJsaWMvQnVnL0Rpc3BsYXkuaHRtbD9pZD03ODE4NgpubyB3YXJuaW5ncyAncmVkZWZpbmUnOyAgICAgICAgICAgICAgICAgICAgICMjIG5vIGNyaXRpYyBxdyhUZXN0aW5nQW5kRGVidWdnaW5nOjpQcm9oaWJpdE5vV2FybmluZ3MpCnVzZSBEZXZlbDo6U3RhY2tUcmFjZSAoKTsKbG9jYWwgKkRldmVsOjpTdGFja1RyYWNlOjpuZXcgPSBzdWIgeyB9OyAgICAjIG5vLW9wCnVzZSB3YXJuaW5ncyAncmVkZWZpbmUnOwoKdXNlIEZpbGU6OlNwZWMoKTsKdXNlIFRpZHlBbGw6Ok9UT0JPOwoKIyBEb24ndCB1c2UgT00gc28gdGhhdCB0aGlzIGFsc28gd29ya3MgZm9yIE9UT0JPIDMuMyBhbmQgbG93ZXIKdXNlIEtlcm5lbDo6Q29uZmlnOwoKbXkgJENvbmZpZ09iamVjdCA9IEtlcm5lbDo6Q29uZmlnLT5uZXcoKTsKbXkgJEhvbWUgICAgICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnSG9tZScpOwoKIyBTdXBwcmVzcyBjb2xvcmVkIG91dHB1dCB0byBub3QgY2x1dHRlciBsb2cgZmlsZXMuCmxvY2FsICRFTlZ7T1RPQk9DT0RFUE9MSUNZX05PQ09MT1J9ID0gMTsKCm15ICRUaWR5QWxsID0gVGlkeUFsbDo6T1RPQk8tPm5ld19mcm9tX2NvbmZfZmlsZSgKICAgICIkSG9tZS9LZXJuZWwvVGlkeUFsbC90aWR5YWxscmMiLAogICAgY2hlY2tfb25seSA9PiAxLAogICAgbW9kZSAgICAgICA9PiAndGVzdHMnLAogICAgcm9vdF9kaXIgICA9PiAkSG9tZSwKICAgIGRhdGFfZGlyICAgPT4gRmlsZTo6U3BlYy0+dG1wZGlyKCksCiAgICBxdWlldCAgICAgID0+IDEsCik7CiRUaWR5QWxsLT5EZXRlcm1pbmVGcmFtZXdvcmtWZXJzaW9uRnJvbURpcmVjdG9yeSgpOwokVGlkeUFsbC0+R2V0RmlsZUxpc3RGcm9tRGlyZWN0b3J5KCk7CgojCiMgTm93IHBlcmZvcm0gdGhlIHJlYWwgZmlsZSB2YWxpZGF0aW9uLgojCgojIERvbid0IHVzZSBUaWR5QWxsOjpwcm9jZXNzX2FsbCgpIG9yIFRpZHlBbGw6OmZpbmRfbWF0Y2hlZF9maWxlcygpIGFzIGl0IGlzIHRvbyBzbG93IG9uIGxhcmdlIGNvZGUgYmFzZXMuCm15IEBGaWxlcyA9ICRUaWR5QWxsLT5GaWx0ZXJNYXRjaGVkRmlsZXMoIEZpbGVzID0+IFxAVGlkeUFsbDo6T1RPQk86OkZpbGVMaXN0ICk7CkBGaWxlcyA9IG1hcCB7IEZpbGU6OlNwZWMtPmNhdGZpbGUoICRIb21lLCAkXyApIH0gQEZpbGVzOwoKRklMRToKZm9yIG15ICRGaWxlIChARmlsZXMpIHsKCiAgICAjIElnbm9yZSBPcmFjbGUgbG9nIGZpbGVzLgogICAgbmV4dCBGSUxFIGlmICRGaWxlID1+IG17b3JhZGlhZ307CgogICAgbXkgJFJlc3VsdCA9ICRUaWR5QWxsLT5wcm9jZXNzX2ZpbGUoJEZpbGUpOwoKICAgIG5leHQgRklMRSBpZiAkUmVzdWx0LT5zdGF0ZSgpIGVxICdub19tYXRjaCc7ICAgICMgbm8gcGx1Z2lucyBhcHBseSwgaWdub3JlIGZpbGUKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJFJlc3VsdC0+c3RhdGUoKSwKICAgICAgICAnY2hlY2tlZCcsCiAgICAgICAgIiRGaWxlIGNoZWNrIHJlc3VsdHMgIiAuICggJFJlc3VsdC0+ZXJyb3IoKSB8fCAnJyApLAogICAgKTsKfQoKMTsK</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/JavaScript/DebugCode.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVE9CT0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRGVidWdDb2RlIC0gY29uc29sZSBsb2dnaW5nICh2YWxpZCknLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5qcycsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpKYXZhU2NyaXB0OjpEZWJ1Z0NvZGUpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzcuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCnRoaXMuJGxvZy5kZWJ1ZygndmFyTmFtZScsIHZhck5hbWUpOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdEZWJ1Z0NvZGUgLSBjb25zb2xlIGxvZ2dpbmcgKGludmFsaWQpJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QuanMnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6SmF2YVNjcmlwdDo6RGVidWdDb2RlKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAovLyBUT0RPOiBSZW1vdmUgdGhlIGNvZGUgYmVsb3cuCnRoaXMuJG5leHRUaWNrKCgpID0+IHsKICAgIGNvbnNvbGUubG9nKCd2YXJOYW1lJywgdmFyTmFtZSk7Cn0pOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdEZWJ1Z0NvZGUgLSBza2lwcGVkIHRlc3QgKGludmFsaWQpJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QuanMnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6SmF2YVNjcmlwdDo6RGVidWdDb2RlKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAogICAgLy8gVE9ETzogU2tpcCB0aGlzIHRlc3QgZm9yIG5vdy4KICAgIHhpdCgnc3VwcG9ydHMgaGlkaW5nIG9mIHRoZSBkZXNjcmlwdGlvbiBuZXh0IHRvIHRoZSBsYWJlbCcsICgpID0+IHsKICAgICAgICBleHBlY3QuYXNzZXJ0aW9ucygyKTsKCiAgICAgICAgd3JhcHBlci5zZXRQcm9wcyh7CiAgICAgICAgICAgIGhpZGVEZXNjcmlwdGlvbjogdHJ1ZSwKICAgICAgICB9KTsKCiAgICAgICAgd3JhcHBlci52bS4kbmV4dFRpY2soKCkgPT4gewogICAgICAgICAgICBleHBlY3Qod3JhcHBlci5jb250YWlucygnbGFiZWwgYS5mbG9hdC1yaWdodCBpLkNvbW1vbkljb25fX0JvbGQtLUluZm9ybWF0aW9uQ2lyY2xlJykpLnRvQmUodHJ1ZSk7CiAgICAgICAgICAgIGV4cGVjdCh3cmFwcGVyLmNvbnRhaW5zKCdzbWFsbC5zci1vbmx5JykpLnRvQmUodHJ1ZSk7CiAgICAgICAgfSk7CiAgICB9KTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRGVidWdDb2RlIC0gZnVuY3Rpb24gc2ltaWxhciBpbiBuYW1lIHRvIHNraXBwZWQgdGVzdCAodmFsaWQpJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QuanMnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6SmF2YVNjcmlwdDo6RGVidWdDb2RlKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApmdW5jdGlvbiBleGl0ICgpIHsKICAgIC8vIERvIHNvbWV0aGluZy4KfQpleGl0KCk7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKKTsKCiRTZWxmLT5zY3JpcHRzOjp0ZXN0OjpPVE9CT0NvZGVQb2xpY3lQbHVnaW5zOjpSdW4oIFRlc3RzID0+IFxAVGVzdHMgKTsKCjE7Cg==</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/JavaScript/ESLint.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVE9CT0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRVNMaW50ICh2YWxpZCknLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5qcycsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpKYXZhU2NyaXB0OjpFU0xpbnQpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiJ1c2Ugc3RyaWN0OyIKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRVNMaW50IChzeW50YXggZXJyb3IpJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QuanMnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6SmF2YVNjcmlwdDo6RVNMaW50KV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApzb21lIHN5bnRheCBlcnJvcgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCgopOwoKJFNlbGYtPnNjcmlwdHM6OnRlc3Q6Ok9UT0JPQ29kZVBvbGljeVBsdWdpbnM6OlJ1biggVGVzdHMgPT4gXEBUZXN0cyApOwoKMTsK</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/Migrations/OTOBO7/DeprecatedSettings.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RPQk9Db2RlUG9saWN5UGx1Z2luczsKCm15ICRTZXR0aW5nVGVtcGxhdGUgPSA8PCdFT0YnOwogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRlc3QgY29uZmlnIHNldHRpbmcgZGVmaW5pdGlvbiBmb3IgcHVycG9zZXMgb2YgdGhlIHVuaXQgdGVzdGluZy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlRlc3Q8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iS2V5Ij5WYWx1ZTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CkVPRgoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT2Jzb2xldGUgZnJvbnRlbmQgc2V0dGluZyAtIFZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86Ok1pZ3JhdGlvbnM6Ok9UT0JPNzo6RGVwcmVjYXRlZFNldHRpbmdzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3RvYm9fY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpNb2R1bGUjIyNQdWJsaWNGQVFFeHBsb3JlciIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290b2JvX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT2Jzb2xldGUgZnJvbnRlbmQgc2V0dGluZyAtIFZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86Ok1pZ3JhdGlvbnM6Ok9UT0JPNzo6RGVwcmVjYXRlZFNldHRpbmdzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc3LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3RvYm9fY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpNb2R1bGUjIyNQdWJsaWNGQVFFeHBsb3JlciIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290b2JvX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT2Jzb2xldGUgbG9hZGVyIHNldHRpbmcgLSBWYWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpNaWdyYXRpb25zOjpPVE9CTzc6OkRlcHJlY2F0ZWRTZXR0aW5ncyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6OkN1c3RvbWVyOjpTZWxlY3RlZFNraW4iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdG9ib19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ09ic29sZXRlIGxvYWRlciBzZXR0aW5nIC0gVmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6TWlncmF0aW9uczo6T1RPQk83OjpEZXByZWNhdGVkU2V0dGluZ3MpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzcuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpDdXN0b21lcjo6U2VsZWN0ZWRTa2luIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdPYnNvbGV0ZSBsb2FkZXIgbW9kdWxlIHNldHRpbmcgLSBWYWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpNaWdyYXRpb25zOjpPVE9CTzc6OkRlcHJlY2F0ZWRTZXR0aW5ncyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6Q3VzdG9tZXJUaWNrZXRNZXNzYWdlIyMjMDAyLVRpY2tldCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290b2JvX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT2Jzb2xldGUgbG9hZGVyIG1vZHVsZSBzZXR0aW5nIC0gVmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6TWlncmF0aW9uczo6T1RPQk83OjpEZXByZWNhdGVkU2V0dGluZ3MpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzcuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkN1c3RvbWVyVGlja2V0TWVzc2FnZSMjIzAwMi1UaWNrZXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdG9ib19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ09ic29sZXRlIHNlYXJjaCByb3V0ZXIgc2V0dGluZyAtIFZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86Ok1pZ3JhdGlvbnM6Ok9UT0JPNzo6RGVwcmVjYXRlZFNldHRpbmdzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3RvYm9fY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpTZWFyY2g6OkphdmFTY3JpcHQjIyNBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXIiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdG9ib19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ09ic29sZXRlIHNlYXJjaCByb3V0ZXIgc2V0dGluZyAtIFZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86Ok1pZ3JhdGlvbnM6Ok9UT0JPNzo6RGVwcmVjYXRlZFNldHRpbmdzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc3LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3RvYm9fY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpTZWFyY2g6OkphdmFTY3JpcHQjIyNBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXIiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdG9ib19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKKTsKCiRTZWxmLT5zY3JpcHRzOjp0ZXN0OjpPVE9CT0NvZGVQb2xpY3lQbHVnaW5zOjpSdW4oIFRlc3RzID0+IFxAVGVzdHMgKTsKCjE7Cg==</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/Migrations/OTOBO8/UselessComments.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RPQk9Db2RlUG9saWN5UGx1Z2luczsKIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6TWlncmF0aW9uczo6T1RPQk84OjpVc2VsZXNzQ29tbWVudHMpCgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdOb3JtYWwgY29tbWVudHMnLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpNaWdyYXRpb25zOjpPVE9CTzg6OlVzZWxlc3NDb21tZW50cyldLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKIyBTb21lIHVzZWZ1bCBjb21tZW50LgoKIyBBIG11bHRpbGluZSBjb21tZW50IGV4cGxhaW5pbmcKIyAgIHNvbWUgc3R1ZmYgaW4gYSBkZXRhaWxlZCB3YXkuCkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1N0dXBpZCBjb21tZW50cycsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86Ok1pZ3JhdGlvbnM6Ok9UT0JPODo6VXNlbGVzc0NvbW1lbnRzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApzb21lIGNvZGUgaGVyZQoKIyBnZXQgbmVlZGVkIG9iamVjdHMKIyBHZXQgbmVlZGVkIG9iamVjdHMuCiMgZ2V0IG5lZWRlZCB2YXJpYWJsZXMKIyBHZXQgbmVlZGVkIHZhcmlhYmxlcwojIGdldCBzZWxlbml1bSBvYmplY3QKIyBHZXQgQ29uZmlnIG9iamVjdC4KIyBnZXQgc2NyaXB0IGFsaWFzCiMgZ2V0IHZhbGlkIGxpc3QKIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiMgY2hlY2sgbmVlZGVkIHN0dWZmCiMgY2hlY2sgbmVlZGVkIGRhdGEKIyBjaGVjayBuZWVkZWQgcGFyYW1zLgojIGNoZWNrIG5lZWRlZCBvYmplY3RzLgptb3JlIGNvZGUgaGVyZQpFT0YKICAgICAgICBSZXN1bHQgPT4gPDwnRU9GJywKc29tZSBjb2RlIGhlcmUKCm1vcmUgY29kZSBoZXJlCkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKKTsKCiRTZWxmLT5zY3JpcHRzOjp0ZXN0OjpPVE9CT0NvZGVQb2xpY3lQbHVnaW5zOjpSdW4oIFRlc3RzID0+IFxAVGVzdHMgKTsKCjE7Cg==</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/Perl/CacheNew.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVE9CT0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnQ2FjaGVOZXcsIGZvcmJpZGRlbicsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OkNhY2hlTmV3KV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApLZXJuZWw6OlN5c3RlbTo6Q2FjaGUtPm5ldygleyRTZWxmfSk7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0NhY2hlTmV3LCBvaycsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OkNhY2hlTmV3KV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAokS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAopOwoKJFNlbGYtPnNjcmlwdHM6OnRlc3Q6Ok9UT0JPQ29kZVBvbGljeVBsdWdpbnM6OlJ1biggVGVzdHMgPT4gXEBUZXN0cyApOwoKMTsK</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/Perl/NoExitInConsoleCommands.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVE9CT0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnZXhpdCwgZm9yYmlkZGVuJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9TeXN0ZW0vQ29uc29sZS9Db21tYW5kL1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6Tm9FeGl0SW5Db25zb2xlQ29tbWFuZHMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzUuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCmV4aXQgMTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnZXhpdCwgZm9yYmlkZGVuJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9TeXN0ZW0vQ29uc29sZS9Db21tYW5kL1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6Tm9FeGl0SW5Db25zb2xlQ29tbWFuZHMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzUuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiAgICBpZiAoMSkgeyBleGl0OyB9OwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICckU2VsZi0+RXhpdENvZGVPaygpJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9TeXN0ZW0vQ29uc29sZS9Db21tYW5kL1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6Tm9FeGl0SW5Db25zb2xlQ29tbWFuZHMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzUuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAopOwoKJFNlbGYtPnNjcmlwdHM6OnRlc3Q6Ok9UT0JPQ29kZVBvbGljeVBsdWdpbnM6OlJ1biggVGVzdHMgPT4gXEBUZXN0cyApOwoKMTsK</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/Perl/ObjectDependencies.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB2NS4yNDsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2Ugc2NyaXB0czo6dGVzdDo6T1RPQk9Db2RlUG9saWN5UGx1Z2luczsKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7CgpvdXIgJFNlbGY7CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdPYmplY3REZXBlbmRlbmNpZXMsIG5vIE9NIHVzZWQuJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6T2JqZWN0RGVwZW5kZW5jaWVzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAojIS91c3IvYmluL2Jhc2gKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwpteSAkRkg7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ09iamVjdERlcGVuZGVuY2llcywgdW5kZWNsYXJlZCBkZXBlbmRlbmN5IHVzZWQgKGZvcm1lciBkZWZhdWx0IGRlcGVuZGVuY3kpJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6T2JqZWN0RGVwZW5kZW5jaWVzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAokS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RW5jb2RlJyk7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ09iamVjdERlcGVuZGVuY2llcywgZGVmYXVsdCBkZXBlbmRlbmNpZXMgdXNlZCB3aXRoIGludmFsaWQgc2hvcnQgZm9ybSBpbiBHZXQoKScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6Ok9iamVjdERlcGVuZGVuY2llcyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKTsKJEtlcm5lbDo6T00tPkdldCgnRW5jb2RlT2JqZWN0Jyk7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ09iamVjdERlcGVuZGVuY2llcywgdW5kZWNsYXJlZCBkZXBlbmRlbmN5IHVzZWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpPYmplY3REZXBlbmRlbmNpZXMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzQuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT2JqZWN0RGVwZW5kZW5jaWVzLCBkZXBlbmRlbmN5IGRlY2xhcmVkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6T2JqZWN0RGVwZW5kZW5jaWVzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwokS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lID0+ICdPYmplY3REZXBlbmRlbmNpZXMsIGRlcGVuZGVuY3kgZGVjbGFyZWQgaW4gVGVzdE9iamVjdERlcGVuZGVuY2llcwonLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpPYmplY3REZXBlbmRlbmNpZXMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzQuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCm91ciBAU29mdE9iamVjdERlcGVuZGVuY2llcyA9ICgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwokS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ09iamVjdERlcGVuZGVuY2llcywgZGVwZW5kZW5jeSBkZWNsYXJlZCwgaW52YWxpZCBzaG9ydCBmb3JtJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6T2JqZWN0RGVwZW5kZW5jaWVzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpmb3IgbXkgJE5lZWRlZCAocXcoVGlja2V0T2JqZWN0KSkgewogICAgJFNlbGYtPnskTmVlZGVkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJE5lZWRlZCk7Cn0KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT2JqZWN0RGVwZW5kZW5jaWVzLCB1bmRlY2xhcmVkIGRlcGVuZGVuY3kgaW4gbG9vcCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6Ok9iamVjdERlcGVuZGVuY2llcyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKZm9yIG15ICROZWVkZWQgKHF3KEtlcm5lbDo6U3lzdGVtOjpUaWNrZXQpKSB7CiAgICAkU2VsZi0+eyROZWVkZWR9ID0gJEtlcm5lbDo6T00tPkdldCgkTmVlZGVkKTsKfQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdPYmplY3REZXBlbmRlbmNpZXMsIEdldCBjYWxsZWQgaW4gZm9yIGxvb3AnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpPYmplY3REZXBlbmRlbmNpZXMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzQuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCmZvciBteSAkTmVlZGVkIChxdyhLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tT2JqZWN0KSkgewogICAgJFNlbGYtPnskTmVlZGVkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJE5lZWRlZCk7Cn0KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT2JqZWN0RGVwZW5kZW5jaWVzLCBjb21wbGV4IGNvZGUsIHVuZGVjbGFyZWQgZGVwZW5kZW5jeScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6Ok9iamVjdERlcGVuZGVuY2llcyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKJFNlbGYtPntDb25maWdPYmplY3R9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbmZpZycpOwokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICBMb2dPYmplY3QgPT4gewogICAgICAgIExvZ1ByZWZpeCA9PiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnQ0dJTG9nUHJlZml4JyksCiAgICB9LAogICAgUGFyYW1PYmplY3QgPT4gewogICAgICAgIFdlYlJlcXVlc3QgPT4gJFBhcmFte1dlYlJlcXVlc3R9IHx8IDAsCiAgICB9LAopOwoKZm9yIG15ICRPYmplY3QgKAogICAgcXcoIExvZ09iamVjdCBFbmNvZGVPYmplY3QgU2Vzc2lvbk9iamVjdCBNYWluT2JqZWN0IFRpbWVPYmplY3QgUGFyYW1PYmplY3QgVXNlck9iamVjdCBHcm91cE9iamVjdCApCiAgICApCnsKICAgICRTZWxmLT57JE9iamVjdH0gPSAkS2VybmVsOjpPTS0+R2V0KCRPYmplY3QpOwp9CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ09iamVjdERlcGVuZGVuY2llcywgY29tcGxleCBjb2RlLCB1bmRlY2xhcmVkIGRlcGVuZGVuY3knLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpPYmplY3REZXBlbmRlbmNpZXMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzQuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKICAgICdLZXJuZWw6OlN5c3RlbTo6QXV0aFNlc3Npb24nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnLAopOwoKJFNlbGYtPntDb25maWdPYmplY3R9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgTG9nT2JqZWN0ID0+IHsKICAgICAgICBMb2dQcmVmaXggPT4gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0NHSUxvZ1ByZWZpeCcpLAogICAgfSwKICAgIFBhcmFtT2JqZWN0ID0+IHsKICAgICAgICBXZWJSZXF1ZXN0ID0+ICRQYXJhbXtXZWJSZXF1ZXN0fSB8fCAwLAogICAgfSwKKTsKCmZvciBteSAkT2JqZWN0ICgKICAgIHF3KCBLZXJuZWw6OlN5c3RlbTo6VXNlciBLZXJuZWw6OlN5c3RlbTo6R3JvdXAgKQogICAgKQp7CiAgICAkU2VsZi0+eyRPYmplY3R9ID0gJEtlcm5lbDo6T00tPkdldCgkT2JqZWN0KTsKfQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdPYmplY3REZXBlbmRlbmNpZXMsIG9iamVjdCBtYW5hZ2VyIGRpc2FibGVkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6T2JqZWN0RGVwZW5kZW5jaWVzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CiRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT2JqZWN0RGVwZW5kZW5jaWVzLCBkZXByZWNhdGVkIE9iamVjdE1hbmFnZXJBd2FyZSBmbGFnJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6T2JqZWN0RGVwZW5kZW5jaWVzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpvdXIgJE9iamVjdE1hbmFnZXJBd2FyZSA9IDE7CiRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT2JqZWN0RGVwZW5kZW5jaWVzLCBNb29zZTo6Um9sZScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6Ok9iamVjdERlcGVuZGVuY2llcyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKdXNlIE1vb3NlOjpSb2xlOwokS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ09iamVjdERlcGVuZGVuY2llcywgV2ViQXBwIGNvbnRyb2xsZXInLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpPYmplY3REZXBlbmRlbmNpZXMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzQuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCnBhY2thZ2UgS2VybmVsOjpXZWJBcHA6OkNvbnRyb2xsZXI6OlRlc3Q7CiRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT2JqZWN0RGVwZW5kZW5jaWVzLCBXZWJBcHAgcGx1Z2luJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6T2JqZWN0RGVwZW5kZW5jaWVzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApwYWNrYWdlIEtlcm5lbDo6V2ViQXBwOjpQbHVnaW46OlRlc3Q7CiRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT2JqZWN0RGVwZW5kZW5jaWVzLCBXZWJBcHAgc2VydmVyJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6T2JqZWN0RGVwZW5kZW5jaWVzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApwYWNrYWdlIEtlcm5lbDo6V2ViQXBwOjpTZXJ2ZXI6OlRlc3Q7CiRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAopOwoKJFNlbGYtPnNjcmlwdHM6OnRlc3Q6Ok9UT0JPQ29kZVBvbGljeVBsdWdpbnM6OlJ1biggVGVzdHMgPT4gXEBUZXN0cyApOwoKJFNlbGYtPkRvbmVUZXN0aW5nKCk7Cg==</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/Perl/Pod/FunctionPod.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVE9CT0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAndmFsaWQgZnVuY3Rpb24gZG9jdW1lbnRhdGlvbicsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBvZDo6RnVuY3Rpb25Qb2QpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCj1oZWFkMiBHZXQoKQoKUmV0cmlldmVzIGEgc2luZ2xldG9uIG9iamVjdCwgYW5kIGlmIGl0IG5vdCB5ZXQgZXhpc3RzLCBpbXBsaWNpdGx5IGNyZWF0ZXMgb25lIGZvciB5b3UuCgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBPbiB0aGUgc2Vjb25kIGNhbGwsIHRoaXMgcmV0dXJucyB0aGUgc2FtZSBDb25maWdPYmplY3QgYXMgYWJvdmUuCiAgICBteSAkQ29uZmlnT2JqZWN0MiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7Cgo9Y3V0CgpzdWIgR2V0IHsKICAgIC4uLgp9CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ2hlYWRpbmcgdGhhdCBpcyBub3QgcmVsYXRlZCB0byBhIGZ1bmN0aW9uJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UG9kOjpGdW5jdGlvblBvZCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPWhlYWQyIEhvdyBkb2VzIHNpbmdsZXRvbiBtYW5hZ2VtZW50IHdvcms/CgpJdCBjcmVhdGVzIG9iamVjdHMgYXMgbGF0ZSBhcyBwb3NzaWJsZSBhbmQga2VlcHMgcmVmZXJlbmNlcyB0byB0aGVtLiBVcG9uIGRlc3RydWN0aW9uIHRoZSBvYmplY3RzCmFyZSBkZXN0cm95ZWQgaW4gdGhlIGNvcnJlY3Qgb3JkZXIsIGJhc2VkIG9uIHRoZWlyIGRlcGVuZGVuY2llcyAoc2VlIGJlbG93KS4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnZnVuY3Rpb24gd2l0aG91dCBwYXJlbnRoZXNlcycsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBvZDo6RnVuY3Rpb25Qb2QpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCj1oZWFkMiBHZXQKClJldHJpZXZlcyBhIHNpbmdsZXRvbiBvYmplY3QsIGFuZCBpZiBpdCBub3QgeWV0IGV4aXN0cywgaW1wbGljaXRseSBjcmVhdGVzIG9uZSBmb3IgeW91LgoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgT24gdGhlIHNlY29uZCBjYWxsLCB0aGlzIHJldHVybnMgdGhlIHNhbWUgQ29uZmlnT2JqZWN0IGFzIGFib3ZlLgogICAgbXkgJENvbmZpZ09iamVjdDIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKPWN1dAoKc3ViIEdldCB7CiAgICAuLi4KfQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdmdW5jdGlvbiB3aXRoIHdyb25nIG5hbWUnLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpQb2Q6OkZ1bmN0aW9uUG9kKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAo9aGVhZDIgV3JvbmdOYW1lKCkKClJldHJpZXZlcyBhIHNpbmdsZXRvbiBvYmplY3QsIGFuZCBpZiBpdCBub3QgeWV0IGV4aXN0cywgaW1wbGljaXRseSBjcmVhdGVzIG9uZSBmb3IgeW91LgoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgT24gdGhlIHNlY29uZCBjYWxsLCB0aGlzIHJldHVybnMgdGhlIHNhbWUgQ29uZmlnT2JqZWN0IGFzIGFib3ZlLgogICAgbXkgJENvbmZpZ09iamVjdDIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKPWN1dAoKc3ViIEdldCB7CiAgICAuLi4KfQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICd3cm9uZyBmdW5jdGlvbiBjYWxsIHVzZWQgaW4gZXhhbXBsZScsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBvZDo6RnVuY3Rpb25Qb2QpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCj1oZWFkMiBHZXQoKQoKUmV0cmlldmVzIGEgc2luZ2xldG9uIG9iamVjdCwgYW5kIGlmIGl0IG5vdCB5ZXQgZXhpc3RzLCBpbXBsaWNpdGx5IGNyZWF0ZXMgb25lIGZvciB5b3UuCgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5Xcm9uZ0Z1bmN0aW9uKCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgT24gdGhlIHNlY29uZCBjYWxsLCB0aGlzIHJldHVybnMgdGhlIHNhbWUgQ29uZmlnT2JqZWN0IGFzIGFib3ZlLgogICAgbXkgJENvbmZpZ09iamVjdDIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKPWN1dAoKc3ViIEdldCB7CiAgICAuLi4KfQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICd2YWxpZCBjb25zdHJ1Y3RvciB3aXRoIENyZWF0ZScsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBvZDo6RnVuY3Rpb25Qb2QpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCj1oZWFkMiBuZXcoKQoKQ3JlYXRlcyBhIERhdGVUaW1lIG9iamVjdC4gRG8gbm90IHVzZSBuZXcoKSBkaXJlY3RseSwgaW5zdGVhZCB1c2UgdGhlIG9iamVjdCBtYW5hZ2VyOgoKCiAgICAjIENyZWF0ZSBhbiBvYmplY3Qgd2l0aCBjdXJyZW50IGRhdGUgYW5kIHRpbWUKICAgICMgd2l0aGluIHRpbWUgem9uZSBzZXQgaW4gU3lzQ29uZmlnIE9UT0JPVGltZVpvbmU6CiAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICAuLi4KfQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICd2YWxpZCBjb25zdHJ1Y3RvciB3aXRoIEdldCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBvZDo6RnVuY3Rpb25Qb2QpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCj1oZWFkMiBuZXcoKQoKRG9uJ3QgdXNlIHRoZSBjb25zdHJ1Y3RvciBkaXJlY3RseSwgdXNlIHRoZSBPYmplY3RNYW5hZ2VyIGluc3RlYWQ6CgogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgLi4uCn0KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAndmFsaWQgY29uc3RydWN0b3Igd2l0aCBuZXcnLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpQb2Q6OkZ1bmN0aW9uUG9kKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAo9aGVhZDIgbmV3KCkKCkZha2UgZm9yIHRlc3RpbmcuCgogICAgbXkgJFRpY2tldE9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpUaWNrZXQtPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICAuLi4KfQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCik7CgokU2VsZi0+c2NyaXB0czo6dGVzdDo6T1RPQk9Db2RlUG9saWN5UGx1Z2luczo6UnVuKCBUZXN0cyA9PiBcQFRlc3RzICk7CgoxOwo=</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/Perl/Pod/NamePod.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RPQk9Db2RlUG9saWN5UGx1Z2luczsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ3ZhbGlkIHBhY2thZ2UgbmFtZSB3aXRoIG5vIGNyaXRpYycsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBvZDo6TmFtZVBvZCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKcGFja2FnZSBzY3JpcHRzOjp0ZXN0OjpQb2Q6OlRlc3Q7ICAgICMjIG5vIGNyaXRpYwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhzY3JpcHRzOjpEQlVwZGF0ZTo6QmFzZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCnNjcmlwdHM6OnRlc3Q6OlBvZDo6VGVzdCAtICBUZXN0aW5nIGZpbGUuCgo9Y3V0CgpzdWIgUnVuIHsKICAgIC4uLgp9CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ3ZhbGlkIHBhY2thZ2UgbmFtZSB3aXRoIG91dCBubyBjcml0aWMnLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpQb2Q6Ok5hbWVQb2QpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCnBhY2thZ2Ugc2NyaXB0czo6dGVzdDo6UG9kOjpUZXN0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhzY3JpcHRzOjpEQlVwZGF0ZTo6QmFzZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCnNjcmlwdHM6OnRlc3Q6OlBvZDo6VGVzdCAtICBUZXN0aW5nIGZpbGUuCgo9Y3V0CgpzdWIgUnVuIHsKICAgIC4uLgp9CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ3dyb25nIHBhY2thZ2UgbmFtZSBjb3JyZWN0IGZvcm1hdCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBvZDo6TmFtZVBvZCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKcGFja2FnZSBzY3JpcHRzOjp0ZXN0OjpQb2Q6OlRlc3Q7ICAgICMjIG5vIGNyaXRpYwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhzY3JpcHRzOjpEQlVwZGF0ZTo6QmFzZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCnNjcmlwdHM6OnRlc3Q6OlRlc3QgLSAgVGVzdGluZyBmaWxlLgoKPWN1dAoKc3ViIFJ1biB7CiAgICAuLi4KfQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgICAgICBSZXN1bHQgICAgPT4gPDwnRU9GJywKcGFja2FnZSBzY3JpcHRzOjp0ZXN0OjpQb2Q6OlRlc3Q7ICAgICMjIG5vIGNyaXRpYwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhzY3JpcHRzOjpEQlVwZGF0ZTo6QmFzZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCnNjcmlwdHM6OnRlc3Q6OlBvZDo6VGVzdCAtICBUZXN0aW5nIGZpbGUuCgo9Y3V0CgpzdWIgUnVuIHsKICAgIC4uLgp9CkVPRgogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ3dyb25nIHBhY2thZ2UgbmFtZSBzbGFzaGVzJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UG9kOjpOYW1lUG9kKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApwYWNrYWdlIHNjcmlwdHM6OnRlc3Q6OlBvZDo6VGVzdDsgICAgIyMgbm8gY3JpdGljCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KHNjcmlwdHM6OkRCVXBkYXRlOjpCYXNlKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKc2NyaXB0cy90ZXN0L1BvZC9UZXN0LnBtIC0gIFRlc3RpbmcgZmlsZS4KCj1jdXQKCnN1YiBSdW4gewogICAgLi4uCn0KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICAgICAgUmVzdWx0ICAgID0+IDw8J0VPRicsCnBhY2thZ2Ugc2NyaXB0czo6dGVzdDo6UG9kOjpUZXN0OyAgICAjIyBubyBjcml0aWMKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoc2NyaXB0czo6REJVcGRhdGU6OkJhc2UpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKKTsKCj1oZWFkMSBOQU1FCgpzY3JpcHRzOjp0ZXN0OjpQb2Q6OlRlc3QgLSAgVGVzdGluZyBmaWxlLgoKPWN1dAoKc3ViIFJ1biB7CiAgICAuLi4KfQpFT0YKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICd3cm9uZyBwYWNrYWdlIG5hbWUgc2xhc2hlcyBjdXN0b20gZmlsZScsICMgRG9lcyBub3QgbW9kaWZ5IHRoZSBmaWxlIGV2ZW4gaXQgaXRzIHdyb25nCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBvZDo6TmFtZVBvZCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKIyAkb3JpZ2luOiBvdG9ibyAtIGQxNTJmMGJhOWY3YjMyNmI0YmQzYjg2MjRjYzJjOTk5NDRlMmE5NTYgLSBzY3JpcHRzL3Rlc3QvUG9kL1Rlc3QucG0KcGFja2FnZSBzY3JpcHRzOjp0ZXN0OjpQb2Q6OlRlc3Q7ICAgICMjIG5vIGNyaXRpYwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhzY3JpcHRzOjpEQlVwZGF0ZTo6QmFzZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCnNjcmlwdHMvdGVzdC9Qb2QvVGVzdC5wbSAtICBUZXN0aW5nIGZpbGUuCgo9Y3V0CgpzdWIgUnVuIHsKICAgIC4uLgp9CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgICAgIFJlc3VsdCAgICA9PiA8PCdFT0YnLAojICRvcmlnaW46IG90b2JvIC0gZDE1MmYwYmE5ZjdiMzI2YjRiZDNiODYyNGNjMmM5OTk0NGUyYTk1NiAtIHNjcmlwdHMvdGVzdC9Qb2QvVGVzdC5wbQpwYWNrYWdlIHNjcmlwdHM6OnRlc3Q6OlBvZDo6VGVzdDsgICAgIyMgbm8gY3JpdGljCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KHNjcmlwdHM6OkRCVXBkYXRlOjpCYXNlKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKc2NyaXB0cy90ZXN0L1BvZC9UZXN0LnBtIC0gIFRlc3RpbmcgZmlsZS4KCj1jdXQKCnN1YiBSdW4gewogICAgLi4uCn0KRU9GCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnd3JvbmcgcGFja2FnZSBuYW1lIGp1c3QgbmFtZScsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBvZDo6TmFtZVBvZCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKcGFja2FnZSBzY3JpcHRzOjp0ZXN0OjpQb2Q6OlRlc3Q7ICAgICMjIG5vIGNyaXRpYwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhzY3JpcHRzOjpEQlVwZGF0ZTo6QmFzZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKClRlc3QucG0gLSAgVGVzdGluZyBmaWxlLgoKPWN1dAoKc3ViIFJ1biB7CiAgICAuLi4KfQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgICAgICBSZXN1bHQgICAgPT4gPDwnRU9GJywKcGFja2FnZSBzY3JpcHRzOjp0ZXN0OjpQb2Q6OlRlc3Q7ICAgICMjIG5vIGNyaXRpYwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhzY3JpcHRzOjpEQlVwZGF0ZTo6QmFzZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCnNjcmlwdHM6OnRlc3Q6OlBvZDo6VGVzdCAtICBUZXN0aW5nIGZpbGUuCgo9Y3V0CgpzdWIgUnVuIHsKICAgIC4uLgp9CkVPRgogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICd3cm9uZyBwYWNrYWdlIG5hbWUgY29ycmVjdCBmb3JtYXQgZXh0ZW5kZWQgUE9EJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UG9kOjpOYW1lUG9kKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApwYWNrYWdlIHNjcmlwdHM6OnRlc3Q6OlBvZDo6VGVzdDsgICAgIyMgbm8gY3JpdGljCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KHNjcmlwdHM6OkRCVXBkYXRlOjpCYXNlKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKc2NyaXB0czo6dGVzdDo6VGVzdCAtICBUZXN0aW5nIGZpbGUuCgo9aGVhZDEgREVTQ1JJUFRJT04KCnNvbWUgZGVzY3JpcHRpb24KCj1oZWFkMSBTWU5PUFNJUwoKc29tZSBzeW5vcHN5cwoKPWN1dAoKc3ViIFJ1biB7CiAgICAuLi4KfQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgICAgICBSZXN1bHQgICAgPT4gPDwnRU9GJywKcGFja2FnZSBzY3JpcHRzOjp0ZXN0OjpQb2Q6OlRlc3Q7ICAgICMjIG5vIGNyaXRpYwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhzY3JpcHRzOjpEQlVwZGF0ZTo6QmFzZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCnNjcmlwdHM6OnRlc3Q6OlBvZDo6VGVzdCAtICBUZXN0aW5nIGZpbGUuCgo9aGVhZDEgREVTQ1JJUFRJT04KCnNvbWUgZGVzY3JpcHRpb24KCj1oZWFkMSBTWU5PUFNJUwoKc29tZSBzeW5vcHN5cwoKPWN1dAoKc3ViIFJ1biB7CiAgICAuLi4KfQpFT0YKICAgIH0sCik7CgokU2VsZi0+c2NyaXB0czo6dGVzdDo6T1RPQk9Db2RlUG9saWN5UGx1Z2luczo6UnVuKCBUZXN0cyA9PiBcQFRlc3RzICk7CgoxOwo=</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/Perl/Tests/Helper.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlRlc3RzOjpIZWxwZXIpCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVE9CT0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnSGVscGVyIG5vdCB1c2VkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QudCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpUZXN0czo6SGVscGVyKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAoxOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdIZWxwZXIgdXNlZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnQnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6VGVzdHM6OkhlbHBlcildLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0hlbHBlciBjcmVhdGVkIGJlZm9yZSBTZWxlbml1bSBvYmplY3QnLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC50JywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlRlc3RzOjpIZWxwZXIpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFByb3ZpZGVUZXN0RG9jdW1lbnRTZWFyY2hJbmRpY2VzID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKbXkgJFNlbGVuaXVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bScpOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdIZWxwZXIgY3JlYXRlZCBhZnRlciBTZWxlbml1bSBvYmplY3QnLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC50JywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlRlc3RzOjpIZWxwZXIpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUHJvdmlkZVRlc3REb2N1bWVudFNlYXJjaEluZGljZXMgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdSZXN0b3JlRGF0YWJhc2UgaW4gYSBTZWxlbml1bSB0ZXN0JywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QudCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpUZXN0czo6SGVscGVyKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwpteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1NldCBQcm92aWRlVGVzdFBHUEVudmlyb25tZW50IGluIGEgU2VsZW5pdW0gdGVzdCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnQnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6VGVzdHM6OkhlbHBlcildLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUHJvdmlkZVRlc3RQR1BFbnZpcm9ubWVudCA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7Cm15ICRQR1BPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3J5cHQ6OlBHUCcpOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdNaXNzaW5nIFByb3ZpZGVUZXN0UEdQRW52aXJvbm1lbnQgaW4gYSBTZWxlbml1bSB0ZXN0JywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QudCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpUZXN0czo6SGVscGVyKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKbXkgJFBHUE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDcnlwdDo6UEdQJyk7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1NldCBQcm92aWRlVGVzdFNNSU1FRW52aXJvbm1lbnQgaW4gYSBTZWxlbml1bSB0ZXN0JywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QudCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpUZXN0czo6SGVscGVyKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBQcm92aWRlVGVzdFNNSU1FRW52aXJvbm1lbnQgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwpteSAkU01JTUVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3J5cHQ6OlNNSU1FJyk7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ01pc3NpbmcgUHJvdmlkZVRlc3RTTUlNRUVudmlyb25tZW50IGluIGEgU2VsZW5pdW0gdGVzdCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnQnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6VGVzdHM6OkhlbHBlcildLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7Cm15ICRTTUlNRU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDcnlwdDo6U01JTUUnKTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAopOwoKJFNlbGYtPnNjcmlwdHM6OnRlc3Q6Ok9UT0JPQ29kZVBvbGljeVBsdWdpbnM6OlJ1biggVGVzdHMgPT4gXEBUZXN0cyApOwoKMTsK</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/PerlCritic/ProhibitOpen.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCiMgV29yayBhcm91bmQgYSBQZXJsIGJ1ZyB0aGF0IGlzIHRyaWdnZXJlZCBpbiBEZXZlbDo6U3RhY2tUcmFjZQojICAgKHByb2JhbHkgZnJvbSBFeGNlcHRpb246OkNsYXNzIGFuZCB0aGlzIGZyb20gUGVybDo6Q3JpdGljKS4KIwojICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ob3VzZWFic29sdXRlL0RldmVsLVN0YWNrVHJhY2UvaXNzdWVzLzExIGFuZAojICAgaHR0cDovL3J0LnBlcmwub3JnL3J0My9QdWJsaWMvQnVnL0Rpc3BsYXkuaHRtbD9pZD03ODE4NgpubyB3YXJuaW5ncyAncmVkZWZpbmUnOyAgICAgICAgICAgICAgICAgICAgICMjIG5vIGNyaXRpYyBxdyhUZXN0aW5nQW5kRGVidWdnaW5nOjpQcm9oaWJpdE5vV2FybmluZ3MpCnVzZSBEZXZlbDo6U3RhY2tUcmFjZSAoKTsKbG9jYWwgKkRldmVsOjpTdGFja1RyYWNlOjpuZXcgPSBzdWIgeyB9OyAgICAjIG5vLW9wCnVzZSB3YXJuaW5ncyAncmVkZWZpbmUnOwoKdXNlIHNjcmlwdHM6OnRlc3Q6Ok9UT0JPQ29kZVBvbGljeVBsdWdpbnM7CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdQZXJsQ3JpdGljIFByb2hpYml0T3BlbiByZWd1bGFyIGZpbGUsIG9sZC1zdHlsZSByZWFkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnMy4zJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKIyEvdXNyL2Jpbi9iYXNoCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKbXkgJEZIOwpvcGVuKCRGSCwgJzxmaWxlbmFtZS50eHQnKTsKY2xvc2UgJEZIOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdQZXJsQ3JpdGljIFByb2hpYml0T3BlbiByZWd1bGFyIGZpbGUsIHJlYWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpQZXJsQ3JpdGljKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICczLjMnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAojIS91c3IvYmluL2Jhc2gKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwpteSAkRkg7Cm9wZW4oJEZILCAnPCcsICdmaWxlbmFtZS50eHQnKTsKY2xvc2UgJEZIOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdQZXJsQ3JpdGljIFByb2hpYml0T3BlbiByZWd1bGFyIGZpbGUsIHJlYWQsIG5vIHBhcmVudGhlc2VzLCBiYXJld29yZCBmaWxlaGFuZGxlJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnMy4zJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKIyEvdXNyL2Jpbi9iYXNoCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKb3BlbiBGSCwgJzwnLCAnZmlsZW5hbWUudHh0JzsKY2xvc2UgJEZIOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdQZXJsQ3JpdGljIFByb2hpYml0T3BlbiByZWd1bGFyIGZpbGUsIHdyaXRlJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnMy4zJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKIyEvdXNyL2Jpbi9iYXNoCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKbXkgJEZIOwpvcGVuKCRGSCwgJz4nLCAnZmlsZW5hbWUudHh0Jyk7CmNsb3NlICRGSDsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUGVybENyaXRpYyBQcm9oaWJpdE9wZW4gcmVndWxhciBmaWxlLCB3cml0ZSwgbm8gcGFyZW50aGVzZXMnLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpQZXJsQ3JpdGljKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICczLjMnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAojIS91c3IvYmluL2Jhc2gKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwpteSAkRkg7Cm9wZW4gJEZILCAnPicsICdmaWxlbmFtZS50eHQnOwpjbG9zZSAkRkg7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1BlcmxDcml0aWMgUHJvaGliaXRPcGVuIHJlZ3VsYXIgZmlsZSwgYmlkaXJlY3Rpb25hbCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBlcmxDcml0aWMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzMuMycsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiMhL3Vzci9iaW4vYmFzaAp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm15ICRGSDsKb3BlbigkRkgsICcrPicsICdmaWxlbmFtZS50eHQnKTsKY2xvc2UgJEZIOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgICAgICBSZXN1bHQgICAgPT4gPDwnRU9GJywKIyEvdXNyL2Jpbi9iYXNoCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKbXkgJEZIOwpvcGVuKCRGSCwgJys+JywgJ2ZpbGVuYW1lLnR4dCcpOwpjbG9zZSAkRkg7CkVPRgogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1BlcmxDcml0aWMgUHJvaGliaXRPcGVuIHJlZ3VsYXIgZmlsZSwgZXh0ZXJuYWwgY29tbWFuZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBlcmxDcml0aWMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzMuMycsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiMhL3Vzci9iaW4vYmFzaAp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm15ICRGSDsKb3BlbigkRkgsICctfCcsICdzb21lX2NvbW1hbmQnKTsKY2xvc2UgJEZIOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgICAgICBSZXN1bHQgICAgPT4gPDwnRU9GJywKIyEvdXNyL2Jpbi9iYXNoCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKbXkgJEZIOwpvcGVuKCRGSCwgJy18JywgJ3NvbWVfY29tbWFuZCcpOwpjbG9zZSAkRkg7CkVPRgogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1BlcmxDcml0aWMgUHJvaGliaXRPcGVuIHJlZ3VsYXIgZmlsZSwgdW5jbGVhciBtb2RlJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnMy4zJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKIyEvdXNyL2Jpbi9iYXNoCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKbXkgJEZIOwpvcGVuICRGSCwgJE1vZGUsICRQYXJhbXtMb2NhdGlvbn07CmNsb3NlICRGSDsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICAgICAgUmVzdWx0ICAgID0+IDw8J0VPRicsCiMhL3Vzci9iaW4vYmFzaAp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm15ICRGSDsKb3BlbiAkRkgsICRNb2RlLCAkUGFyYW17TG9jYXRpb259OwpjbG9zZSAkRkg7CkVPRgogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1BlcmxDcml0aWMgUHJvaGliaXRPcGVuIGluIGFub3RoZXIgY29udGV4dCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBlcmxDcml0aWMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzMuMycsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiMhL3Vzci9iaW4vYmFzaAp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm15ICRHZW9JUE9iamVjdCA9IEdlbzo6SVAtPm9wZW4oICRHZW9JUERhdGFiYXNlRmlsZSwgR2VvOjpJUDo6R0VPSVBfU1RBTkRBUkQoKSApOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgICAgICBSZXN1bHQgICAgPT4gPDwnRU9GJywKIyEvdXNyL2Jpbi9iYXNoCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKbXkgJEdlb0lQT2JqZWN0ID0gR2VvOjpJUC0+b3BlbiggJEdlb0lQRGF0YWJhc2VGaWxlLCBHZW86OklQOjpHRU9JUF9TVEFOREFSRCgpICk7CkVPRgogICAgfSwKKTsKCiRTZWxmLT5zY3JpcHRzOjp0ZXN0OjpPVE9CT0NvZGVQb2xpY3lQbHVnaW5zOjpSdW4oIFRlc3RzID0+IFxAVGVzdHMgKTsKCjE7Cg==</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/PerlCritic/ProhibitStringySplit.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCiMgV29yayBhcm91bmQgYSBQZXJsIGJ1ZyB0aGF0IGlzIHRyaWdnZXJlZCBpbiBEZXZlbDo6U3RhY2tUcmFjZQojICAgKHByb2JhbHkgZnJvbSBFeGNlcHRpb246OkNsYXNzIGFuZCB0aGlzIGZyb20gUGVybDo6Q3JpdGljKS4KIwojICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ob3VzZWFic29sdXRlL0RldmVsLVN0YWNrVHJhY2UvaXNzdWVzLzExIGFuZAojICAgaHR0cDovL3J0LnBlcmwub3JnL3J0My9QdWJsaWMvQnVnL0Rpc3BsYXkuaHRtbD9pZD03ODE4NgpubyB3YXJuaW5ncyAncmVkZWZpbmUnOyAgICAgICAgICAgICAgICAgICAgICMjIG5vIGNyaXRpYyBxdyhUZXN0aW5nQW5kRGVidWdnaW5nOjpQcm9oaWJpdE5vV2FybmluZ3MpCnVzZSBEZXZlbDo6U3RhY2tUcmFjZSAoKTsKbG9jYWwgKkRldmVsOjpTdGFja1RyYWNlOjpuZXcgPSBzdWIgeyB9OyAgICAjIG5vLW9wCnVzZSB3YXJuaW5ncyAncmVkZWZpbmUnOwoKdXNlIHNjcmlwdHM6OnRlc3Q6Ok9UT0JPQ29kZVBvbGljeVBsdWdpbnM7CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdQZXJsQ3JpdGljIFByb2hpYml0U3RyaW5neVNwbGl0IHdpdGggc3RyaW5nLCBhbGxvd2VkIGZvciBPVE9CTyA4JywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKIyEvdXNyL2Jpbi9iYXNoCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKbXkgQFN0cmluZ3MgPSBzcGxpdCAnOicsICdzb21lOjpjb2RlJzsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUGVybENyaXRpYyBQcm9oaWJpdFN0cmluZ3lTcGxpdCB3aXRoIHN0cmluZycsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBlcmxDcml0aWMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzkuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiMhL3Vzci9iaW4vYmFzaAp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cm15IEBTdHJpbmdzID0gc3BsaXQgJzonLCAnc29tZTo6Y29kZSc7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1BlcmxDcml0aWMgUHJvaGliaXRTdHJpbmd5U3BsaXQgd2l0aCByZWdleGVzJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnOS4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKIyEvdXNyL2Jpbi9iYXNoCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKbXkgQFN0cmluZ3MgPSBzcGxpdCAvOi8sICdzb21lOjpjb2RlJzsKQFN0cmluZ3MgPSBzcGxpdCBtLzovLCAnc29tZTo6Y29kZSc7CkBTdHJpbmdzID0gc3BsaXQobS86LywgJ3NvbWU6OmNvZGUnKTsKQFN0cmluZ3MgPSBzcGxpdCgobS86LywgJ3NvbWU6OmNvZGUnKSk7CkBTdHJpbmdzID0gc3BsaXQgcXJ7On0sICdzb21lOjpjb2RlJzsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUGVybENyaXRpYyBQcm9oaWJpdFN0cmluZ3lTcGxpdCB3aXRoIHJlZ2V4IHZhcmlhYmxlJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnOS4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKIyEvdXNyL2Jpbi9iYXNoCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKbXkgJFJlZ2V4ID0gcXJ7On07Cm15IEBTdHJpbmdzID0gc3BsaXQgJFJlZ2V4LCAnc29tZTo6Y29kZSc7CkBTdHJpbmdzID0gc3BsaXQoJFJlZ2V4LCAnc29tZTo6Y29kZScpOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCik7CgokU2VsZi0+c2NyaXB0czo6dGVzdDo6T1RPQk9Db2RlUG9saWN5UGx1Z2luczo6UnVuKCBUZXN0cyA9PiBcQFRlc3RzICk7CgoxOwo=</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/PerlCritic/RequireCamelCase.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCiMgV29yayBhcm91bmQgYSBQZXJsIGJ1ZyB0aGF0IGlzIHRyaWdnZXJlZCBpbiBEZXZlbDo6U3RhY2tUcmFjZQojICAgKHByb2JhbHkgZnJvbSBFeGNlcHRpb246OkNsYXNzIGFuZCB0aGlzIGZyb20gUGVybDo6Q3JpdGljKS4KIwojICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ob3VzZWFic29sdXRlL0RldmVsLVN0YWNrVHJhY2UvaXNzdWVzLzExIGFuZAojICAgaHR0cDovL3J0LnBlcmwub3JnL3J0My9QdWJsaWMvQnVnL0Rpc3BsYXkuaHRtbD9pZD03ODE4NgpubyB3YXJuaW5ncyAncmVkZWZpbmUnOyAgICAgICAgICAgICAgICAgICAgICMjIG5vIGNyaXRpYyBxdyhUZXN0aW5nQW5kRGVidWdnaW5nOjpQcm9oaWJpdE5vV2FybmluZ3MpCnVzZSBEZXZlbDo6U3RhY2tUcmFjZSAoKTsKbG9jYWwgKkRldmVsOjpTdGFja1RyYWNlOjpuZXcgPSBzdWIgeyB9OyAgICAjIG5vLW9wCnVzZSB3YXJuaW5ncyAncmVkZWZpbmUnOwoKdXNlIHNjcmlwdHM6OnRlc3Q6Ok9UT0JPQ29kZVBvbGljeVBsdWdpbnM7CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdBbGwgZmluZScsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBlcmxDcml0aWMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBNeUZ1bmN0aW9uIHt9Cm15ICRDYW1lbENhc2VWYXIgPSAxOwoKMTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnV3Jvbmcgc3ViJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKc3ViIG15X2Z1bmN0aW9uIHt9CgoxOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdXcm9uZyB2YXInLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpQZXJsQ3JpdGljKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpteSAkX3dyb25nX3ZhcmlhYmxlID0gMTsKCjE7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0FsbCBmaW5lJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKcGFja2FnZSBLZXJuZWw6OlRlc3Q7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBNeUZ1bmN0aW9uIHt9Cm15ICRDYW1lbENhc2VWYXIgPSAxOwoKMTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnV3Jvbmcgc3ViJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKcGFja2FnZSBLZXJuZWw6OlRlc3Q7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnN1YiBteV9mdW5jdGlvbiB7fQoKMTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnV3JvbmcgdmFyJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKcGFja2FnZSBLZXJuZWw6OlRlc3Q7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm15ICRfd3JvbmdfdmFyaWFibGUgPSAxOwoKMTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUGFja2FnZSBWYXJpYWJsZScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBlcmxDcml0aWMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCnBhY2thZ2UgS2VybmVsOjpUZXN0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpteSAkT1RIRVI6OlBBQ0tBR0U6Ol9wcml2YXRlX3ZhcmlhYmxlID0gMTsKCjE7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0Rlcml2ZWQgUGFja2FnZSAodXNlIHBhcmVudCknLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpQZXJsQ3JpdGljKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApwYWNrYWdlIEtlcm5lbDo6VGVzdDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhNeTo6UGFja2FnZSk7CgpzdWIgb3ZlcnJpZGRlbl9tZXRob2Qge30KCjE7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0Rlcml2ZWQgUGFja2FnZSAodXNlIGJhc2UpJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKcGFja2FnZSBLZXJuZWw6OlRlc3Q7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBiYXNlIHF3KE15OjpQYWNrYWdlKTsKCnN1YiBvdmVycmlkZGVuX21ldGhvZCB7fQoKMTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRGVyaXZlZCBQYWNrYWdlIChNb29zZSArIGV4dGVuZCknLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpQZXJsQ3JpdGljKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApwYWNrYWdlIEtlcm5lbDo6VGVzdDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1vb3NlOwpleHRlbmRzIHF3KE15OjpQYWNrYWdlKTsKCnN1YiBvdmVycmlkZGVuX21ldGhvZCB7fQoKMTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRGVyaXZlZCBQYWNrYWdlIChNb29zZTo6Um9sZSArIHdpdGgpJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKcGFja2FnZSBLZXJuZWw6OlRlc3Q7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNb29zZTo6Um9sZTsKd2l0aCBxdyhNeTo6UGFja2FnZSk7CgpzdWIgb3ZlcnJpZGRlbl9tZXRob2Qge30KCjE7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0Rlcml2ZWQgUGFja2FnZSAoTW9vc2UgKyBleHRlbmRzKScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBlcmxDcml0aWMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCnBhY2thZ2UgS2VybmVsOjpUZXN0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTW9vc2U7CmV4dGVuZHMgcXcoTXk6OlBhY2thZ2UpOwoKc3ViIG92ZXJyaWRkZW5fbWV0aG9kIHt9CgoxOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdNb29zZSBQYWNrYWdlLCBidXQgbm90IGRlcml2ZWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpQZXJsQ3JpdGljKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApwYWNrYWdlIEtlcm5lbDo6VGVzdDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1vb3NlOwp1c2UgTW9vc2U6OlJvbGU7CgpzdWIgbXlfZnVuY3Rpb24ge30KCjE7CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1JlcXVpcmVCYXNlQ2xhc3MnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpQZXJsQ3JpdGljKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApwYWNrYWdlIEtlcm5lbDo6VGVzdDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZUJhc2VDbGFzcygnU29tZTo6Q2xhc3MnKTsKCnN1YiBvdmVycmlkZGVuX21ldGhvZCB7fQoKMTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTW9qbzo6QmFzZScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBlcmxDcml0aWMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCnBhY2thZ2UgS2VybmVsOjpUZXN0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTW9qbzo6QmFzZSAnU29tZTo6Q2xhc3MnOwoKc3ViIG92ZXJyaWRkZW5fbWV0aG9kIHt9CgoxOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCik7CgokU2VsZi0+c2NyaXB0czo6dGVzdDo6T1RPQk9Db2RlUG9saWN5UGx1Z2luczo6UnVuKCBUZXN0cyA9PiBcQFRlc3RzICk7CgoxOwo=</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/PerlCritic/RequireLabels.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCiMgV29yayBhcm91bmQgYSBQZXJsIGJ1ZyB0aGF0IGlzIHRyaWdnZXJlZCBpbiBEZXZlbDo6U3RhY2tUcmFjZQojICAgKHByb2JhbHkgZnJvbSBFeGNlcHRpb246OkNsYXNzIGFuZCB0aGlzIGZyb20gUGVybDo6Q3JpdGljKS4KIwojICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ob3VzZWFic29sdXRlL0RldmVsLVN0YWNrVHJhY2UvaXNzdWVzLzExIGFuZAojICAgaHR0cDovL3J0LnBlcmwub3JnL3J0My9QdWJsaWMvQnVnL0Rpc3BsYXkuaHRtbD9pZD03ODE4NgpubyB3YXJuaW5ncyAncmVkZWZpbmUnOyAgICAgICAgICAgICAgICAgICAgICMjIG5vIGNyaXRpYyBxdyhUZXN0aW5nQW5kRGVidWdnaW5nOjpQcm9oaWJpdE5vV2FybmluZ3MpCnVzZSBEZXZlbDo6U3RhY2tUcmFjZSAoKTsKbG9jYWwgKkRldmVsOjpTdGFja1RyYWNlOjpuZXcgPSBzdWIgeyB9OyAgICAjIG5vLW9wCnVzZSB3YXJuaW5ncyAncmVkZWZpbmUnOwoKdXNlIHNjcmlwdHM6OnRlc3Q6Ok9UT0JPQ29kZVBvbGljeVBsdWdpbnM7CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICduZXh0IHdpdGhvdXQgbGFiZWwnLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpQZXJsQ3JpdGljKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAojIS91c3IvYmluL2Jhc2gKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwpmb3IgbXkgJEtleSAoIDEuLjMgKSB7CiAgICBuZXh0Owp9CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ25leHQgd2l0aCBsYWJlbCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBlcmxDcml0aWMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzQuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiMhL3Vzci9iaW4vYmFzaAp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CktFWToKZm9yIG15ICRLZXkgKCAxLi4zICkgewogICAgbmV4dCBLRVk7Cn0KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICAgICAgUmVzdWx0ICAgID0+IDw8J0VPRicsCiMhL3Vzci9iaW4vYmFzaAp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CktFWToKZm9yIG15ICRLZXkgKCAxLi4zICkgewogICAgbmV4dCBLRVk7Cn0KRU9GCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnbGFzdCB3aXRob3V0IGxhYmVsJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ3Rlc3QucGwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UGVybENyaXRpYyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKIyEvdXNyL2Jpbi9iYXNoCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKZm9yIG15ICRLZXkgKCAxLi4zICkgewogICAgbGFzdDsKfQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdsYXN0IHdpdGggbGFiZWwnLAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC5wbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpQZXJsQ3JpdGljKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAojIS91c3IvYmluL2Jhc2gKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwpLRVk6CmZvciBteSAkS2V5ICggMS4uMyApIHsKICAgIGxhc3QgS0VZOwp9CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgICAgIFJlc3VsdCAgICA9PiA8PCdFT0YnLAojIS91c3IvYmluL2Jhc2gKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwpLRVk6CmZvciBteSAkS2V5ICggMS4uMyApIHsKICAgIGxhc3QgS0VZOwp9CkVPRgogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ25leHQgd2l0aG91dCBsYWJlbCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBlcmxDcml0aWMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzQuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiMhL3Vzci9iaW4vYmFzaAp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CmZvciBteSAkS2V5ICggMS4uMyApIHsKICAgIG5leHQgaWYgKDEpOwp9CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ25leHQgd2l0aCBsYWJlbCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICd0ZXN0LnBsJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBlcmxDcml0aWMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzQuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiMhL3Vzci9iaW4vYmFzaAp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CktFWToKZm9yIG15ICRLZXkgKCAxLi4zICkgewogICAgbmV4dCBLRVkgaWYgKDEpOwp9CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgICAgIFJlc3VsdCAgICA9PiA8PCdFT0YnLAojIS91c3IvYmluL2Jhc2gKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwpLRVk6CmZvciBteSAkS2V5ICggMS4uMyApIHsKICAgIG5leHQgS0VZIGlmICgxKTsKfQpFT0YKICAgIH0sCik7CgokU2VsZi0+c2NyaXB0czo6dGVzdDo6T1RPQk9Db2RlUG9saWN5UGx1Z2luczo6UnVuKCBUZXN0cyA9PiBcQFRlc3RzICk7CgoxOwo=</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/PO/DocbookLint.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVE9CT0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUE86OkRvY2Jvb2tMaW50LCB2YWxpZCBkb2Nib29rJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ2RvYy1hZG1pbi10ZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQTzo6RG9jYm9va0xpbnQpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzQuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCm1zZ2lkICJZZXMgPGxpbmsgbGlua2VuZD1cIjEyM1wiPnRoaXM8L2xpbms+IHdvcmtzIgptc2dzdHIgIkphIDxsaW5rIGxpbmtlbmQ9XCIxMjNcIj5kYXM8L2xpbms+IGZ1bmt0aW9uaWVydCIKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUE86OkRvY2Jvb2tMaW50LCB2YWxpZCBkb2Nib29rIChpZ25vcmVkIHRhZyBtaXNzaW5nKScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdkb2MtYWRtaW4tdGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UE86OkRvY2Jvb2tMaW50KV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAptc2dpZCAiWWVzIDxlbXBoYXNpcz50aGlzPC9lbXBoYXNpcz4gd29ya3MiCm1zZ3N0ciAiSmEgZGFzIGZ1bmt0aW9uaWVydCIKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUE86OkRvY2Jvb2tMaW50LCBpbnZhbGlkIGRvY2Jvb2sgKGludmFsaWQgeG1sKScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdkb2MtYWRtaW4tdGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UE86OkRvY2Jvb2tMaW50KV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAptc2dpZCAiWWVzIDxsaW5rIGxpbmtlbmQ9XCIxMjNcIj50aGlzPC9saW5rPiB3b3JrcyIKbXNnc3RyICJKYSA8bGluayBsaW5rZW5kPVwiMTIzXCI+ZGFzPC9saW5rPiBmdW5rdGlvbmllcnQgPGV4dHJhdGFnIHVuY2xvc2VkPiIKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUE86OkRvY2Jvb2tMaW50LCBpbnZhbGlkIGRvY2Jvb2sgKG1pc3NpbmcgdGFncyknLAogICAgICAgIEZpbGVuYW1lICA9PiAnZG9jLWFkbWluLXRlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBPOjpEb2Nib29rTGludCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKbXNnaWQgIjxwbGFjZWhvbGRlciB0eXBlPVwic2NyZWVuaW5mb1wiIGlkPVwiMFwiLz4gPGdyYXBoaWMgc3JjY3JlZGl0PVwicHJvY2Vzcy0iCiJtYW5hZ2VtZW50IC0gc2NyZWVuc2hvdFwiIHNjYWxlPSc0MCcgZmlsZXJlZj1cInNjcmVlbnNob3RzL3BtLWFjY29yZGlvbi1uZXctIgoidHJhbnNpdGlvbi5wbmdcIj48L2dyYXBoaWM+Igptc2dzdHIgIkZhbHNjaCDDvGJlcnNldHp0IgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCik7CgokU2VsZi0+c2NyaXB0czo6dGVzdDo6T1RPQk9Db2RlUG9saWN5UGx1Z2luczo6UnVuKCBUZXN0cyA9PiBcQFRlc3RzICk7CgoxOwo=</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/PO/HTMLTags.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVE9CT0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUE86OkhUTUxUYWdzLCB2YWxpZCBib2xkIHRhZycsCiAgICAgICAgRmlsZW5hbWUgID0+ICdvdG9iby5kZS5wbycsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQTzo6SFRNTFRhZ3MpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCm1zZ2lkICJTdHJpbmcgd2l0aCA8Yj50YWc8L2I+Igptc2dzdHIgIlplaWNoZW5rZXR0ZSBtaXQgPGI+VGFnPC9iPiIKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUE86OkhUTUxUYWdzLCBmb3JiaWRkZW4gc2NyaXB0IHRhZycsCiAgICAgICAgRmlsZW5hbWUgID0+ICdvdG9iby5kZS5wbycsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQTzo6SFRNTFRhZ3MpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCm1zZ2lkICJTdHJpbmcgd2l0aCA8c0NySXBUPmV2aWwgdGFnPC9zY3JpcHQ+Igptc2dzdHIgIlplaWNoZW5rZXR0ZSBtaXQgPHNjcmlwdD5iw7ZzZW0gVGFnPC9zY3JpcHQ+IgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdQTzo6SFRNTFRhZ3MsIHZhbGlkIHBhcmFncmFwaCB0YWcnLAogICAgICAgIEZpbGVuYW1lICA9PiAnb3RvYm8ucG90JywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBPOjpIVE1MVGFncyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKbXNnaWQgIjxwPlBhcmFncmFwaCBzdHJpbmc8L3A+Igptc2dzdHIgIiIKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUE86OkhUTUxUYWdzLCBmb3JiaWRkZW4gbWV0YSB0YWcnLAogICAgICAgIEZpbGVuYW1lICA9PiAnb3RvYm8ucG90JywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBPOjpIVE1MVGFncyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKbXNnaWQgIlJlZGlyZWN0aW5nIG5vdy4uLiA8TUVUQSBodHRwLWVxdWl2PVwicmVmcmVzaFwiIGNvbnRlbnQ9XCIwOyB1cmw9aHR0cDovL2V4YW1wbGUuY29tL1wiPiIKbXNnc3RyICIiCkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1BPOjpIVE1MVGFncywgcGFyYWdyYXBoIHRhZyB3aXRoIGZvcmJpZGRlbiBhdHRyaWJ1dGUnLAogICAgICAgIEZpbGVuYW1lICA9PiAnb3RvYm8ucG90JywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBPOjpIVE1MVGFncyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKbXNnaWQgIjxwIG9ubW91c2VvdmVyPVwiYWxlcnQoMSk7XCI+UGFyYWdyYXBoIHN0cmluZzwvcD4iCm1zZ3N0ciAiIgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdQTzo6SFRNTFRhZ3MsIGFuY2hvciB0YWcgd2l0aCBmb3JiaWRkZW4gYXR0cmlidXRlcycsCiAgICAgICAgRmlsZW5hbWUgID0+ICdvdG9iby5wb3QnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UE86OkhUTUxUYWdzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAptc2dpZCAiPGEgaHJlZj1cImh0dHBzOi8vZXZpbC5jb20vZGFuZ2VyLnBocFwiIHN0eWxlPVwiY29sb3I6cmVkXCI+Tm8gbW9yZSBzcGFjZSBvbiBkZXZpY2UhIE9UT0JPIHdpbGwgc3RvcC4gQ2xpY2sgaGVyZSBmb3IgZGV0YWlscy48L2E+Igptc2dzdHIgIiIKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUE86OkhUTUxUYWdzLCBsaW5rIHRhZyB3aXRoIGZvcmJpZGRlbiBhdHRyaWJ1dGVzJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ290b2JvLnBvdCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQTzo6SFRNTFRhZ3MpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCm1zZ2lkICJmb288bGluayBocmVmPVwiaHR0cHM6Ly9ldmlsLmNvbS9kYW5nZXIucGhwXCIgcmVsPVwic3R5bGVzaGVldFwiPmJhciIKbXNnc3RyICIiCkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKKTsKCiRTZWxmLT5zY3JpcHRzOjp0ZXN0OjpPVE9CT0NvZGVQb2xpY3lQbHVnaW5zOjpSdW4oIFRlc3RzID0+IFxAVGVzdHMgKTsKCjE7Cg==</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/SOPM/CodeTags.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVE9CT0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnQ29kZVRhZ3MsIHZhbGlkLicsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlNPUE06OkNvZGVUYWdzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAogICAgPENvZGVJbnN0YWxsIFR5cGU9InBvc3QiPjwhW0NEQVRBWwogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ3Zhcjo6cGFja2FnZXNldHVwOjpNeVBhY2tnZScpLT5Db2RlSW5zdGFsbCgpOwogICAgXV0+PC9Db2RlSW5zdGFsbD4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnQ29kZVRhZ3MsIG9sZCBmcmFtZXdvcmsuJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6U09QTTo6Q29kZVRhZ3MpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzMuMycsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiAgICA8Q29kZUluc3RhbGwgVHlwZT0icG9zdCI+CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coLi4uKQogICAgPC9Db2RlSW5zdGFsbD4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnQ29kZVRhZ3MsICRTZWxmIHVzZWQuJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6U09QTTo6Q29kZVRhZ3MpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzQuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCiAgICA8Q29kZUluc3RhbGwgVHlwZT0icG9zdCI+PCFbQ0RBVEFbCiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coLi4uKQogICAgXV0+PC9Db2RlSW5zdGFsbD4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnQ29kZVRhZ3MsIG5vIGNkYXRhLicsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlNPUE06OkNvZGVUYWdzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAogICAgPENvZGVJbnN0YWxsIFR5cGU9InBvc3QiPgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ3Zhcjo6cGFja2FnZXNldHVwOjpNeVBhY2tnZScpLT5Db2RlSW5zdGFsbCgpOwogICAgPC9Db2RlSW5zdGFsbD4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAopOwoKJFNlbGYtPnNjcmlwdHM6OnRlc3Q6Ok9UT0JPQ29kZVBvbGljeVBsdWdpbnM6OlJ1biggVGVzdHMgPT4gXEBUZXN0cyApOwoKMTsK</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/SOPM/OndemandTestingPresent.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVE9CT0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnVmFsaWQgLSBPbmRlbWFuZCB0ZXN0aW5nIGNvbmZpZ3VyYXRpb24gcHJlc2VudCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpTT1BNOjpPbmRlbWFuZFRlc3RpbmdQcmVzZW50KV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc3LjAnLAogICAgICAgIEZpbGVMaXN0ICA9PiBbCiAgICAgICAgICAgICcub3RvYm8tY2kueW1sJywKICAgICAgICBdLAogICAgICAgIFNvdXJjZSAgICA9PiAnJywKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdJbnZhbGlkIC0gT25kZW1hbmQgdGVzdGluZyBjb25maWd1cmF0aW9uIG1pc3NpbmcnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6U09QTTo6T25kZW1hbmRUZXN0aW5nUHJlc2VudCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNy4wJywKICAgICAgICBGaWxlTGlzdCAgPT4gW10sCiAgICAgICAgU291cmNlICAgID0+ICcnLAogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKKTsKCiRTZWxmLT5zY3JpcHRzOjp0ZXN0OjpPVE9CT0NvZGVQb2xpY3lQbHVnaW5zOjpSdW4oIFRlc3RzID0+IFxAVGVzdHMgKTsKCjE7Cg==</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/SOPM/RequiredElements.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVE9CT0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTWluaW1hbCB2YWxpZCBTT1BNLicsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlNPUE06OlJlcXVpcmVkRWxlbWVudHMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzcuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8b3RvYm9fcGFja2FnZSB2ZXJzaW9uPSIxLjAiPgogICAgPE5hbWU+T1RPQk9Db2RlUG9saWN5PC9OYW1lPgogICAgPFZlcnNpb24+MC4wLjA8L1ZlcnNpb24+CiAgICA8RnJhbWV3b3JrPjcuMC54PC9GcmFtZXdvcms+CiAgICA8VmVuZG9yPlJvdGhlciBPU1MgR21iSDwvVmVuZG9yPgogICAgPFVSTD5odHRwczovL290b2JvLmlvLzwvVVJMPgogICAgPExpY2Vuc2U+R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDc8L0xpY2Vuc2U+CiAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPk9UT0JPIGNvZGUgcXVhbGl0eSBjaGVja3MuPC9EZXNjcmlwdGlvbj4KICAgIDxQYWNrYWdlSXNEb3dubG9hZGFibGU+MDwvUGFja2FnZUlzRG93bmxvYWRhYmxlPgogICAgPFBhY2thZ2VJc0J1aWxkYWJsZT4wPC9QYWNrYWdlSXNCdWlsZGFibGU+CiAgICA8RmlsZWxpc3Q+CiAgICAgICAgPEZpbGUgUGVybWlzc2lvbj0iNzU1IiBMb2NhdGlvbj0iYmluL290b2JvLkNvZGVQb2xpY3kucGwiIC8+CiAgICA8L0ZpbGVsaXN0Pgo8L290b2JvX3BhY2thZ2U+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ01pc3NpbmcgbmFtZS4nLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpTT1BNOjpSZXF1aXJlZEVsZW1lbnRzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc3LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAo8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCIgPz4KPG90b2JvX3BhY2thZ2UgdmVyc2lvbj0iMS4wIj4KICAgIDxWZXJzaW9uPjAuMC4wPC9WZXJzaW9uPgogICAgPEZyYW1ld29yaz43LjAueDwvRnJhbWV3b3JrPgogICAgPFZlbmRvcj5Sb3RoZXIgT1NTIEdtYkg8L1ZlbmRvcj4KICAgIDxVUkw+aHR0cHM6Ly9vdG9iby5pby88L1VSTD4KICAgIDxMaWNlbnNlPkdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3PC9MaWNlbnNlPgogICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5PVE9CTyBjb2RlIHF1YWxpdHkgY2hlY2tzLjwvRGVzY3JpcHRpb24+CiAgICA8RmlsZWxpc3Q+CiAgICAgICAgPEZpbGUgUGVybWlzc2lvbj0iNzU1IiBMb2NhdGlvbj0iYmluL290b2JvLkNvZGVQb2xpY3kucGwiIC8+CiAgICA8L0ZpbGVsaXN0Pgo8L290b2JvX3BhY2thZ2U+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ01pc3NpbmcgZGVzY3JpcHRpb24uJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6U09QTTo6UmVxdWlyZWRFbGVtZW50cyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNy4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdG9ib19wYWNrYWdlIHZlcnNpb249IjEuMCI+CiAgICA8TmFtZT5PVE9CT0NvZGVQb2xpY3k8L05hbWU+CiAgICA8VmVyc2lvbj4wLjAuMDwvVmVyc2lvbj4KICAgIDxGcmFtZXdvcms+Ny4wLng8L0ZyYW1ld29yaz4KICAgIDxWZW5kb3I+Um90aGVyIE9TUyBHbWJIPC9WZW5kb3I+CiAgICA8VVJMPmh0dHBzOi8vb3RvYm8uaW8vPC9VUkw+CiAgICA8TGljZW5zZT5HTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRSBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNzwvTGljZW5zZT4KICAgIDxGaWxlbGlzdD4KICAgICAgICA8RmlsZSBQZXJtaXNzaW9uPSI3NTUiIExvY2F0aW9uPSJiaW4vb3RvYm8uQ29kZVBvbGljeS5wbCIgLz4KICAgIDwvRmlsZWxpc3Q+Cjwvb3RvYm9fcGFja2FnZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTWlzc2luZyB2ZXJzaW9uLicsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlNPUE06OlJlcXVpcmVkRWxlbWVudHMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzcuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8b3RvYm9fcGFja2FnZSB2ZXJzaW9uPSIxLjAiPgogICAgPE5hbWU+T1RPQk9Db2RlUG9saWN5PC9OYW1lPgogICAgPEZyYW1ld29yaz43LjAueDwvRnJhbWV3b3JrPgogICAgPFZlbmRvcj5Sb3RoZXIgT1NTIEdtYkg8L1ZlbmRvcj4KICAgIDxVUkw+aHR0cHM6Ly9vdG9iby5pby88L1VSTD4KICAgIDxMaWNlbnNlPkdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3PC9MaWNlbnNlPgogICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5PVE9CTyBjb2RlIHF1YWxpdHkgY2hlY2tzLjwvRGVzY3JpcHRpb24+CiAgICA8RmlsZWxpc3Q+CiAgICAgICAgPEZpbGUgUGVybWlzc2lvbj0iNzU1IiBMb2NhdGlvbj0iYmluL290b2JvLkNvZGVQb2xpY3kucGwiIC8+CiAgICA8L0ZpbGVsaXN0Pgo8L290b2JvX3BhY2thZ2U+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ01pc3NpbmcgZnJhbWV3b3JrLicsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlNPUE06OlJlcXVpcmVkRWxlbWVudHMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzcuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8b3RvYm9fcGFja2FnZSB2ZXJzaW9uPSIxLjAiPgogICAgPE5hbWU+T1RPQk9Db2RlUG9saWN5PC9OYW1lPgogICAgPFZlcnNpb24+MC4wLjA8L1ZlcnNpb24+CiAgICA8VmVuZG9yPlJvdGhlciBPU1MgR21iSDwvVmVuZG9yPgogICAgPFVSTD5odHRwczovL290b2JvLmlvLzwvVVJMPgogICAgPExpY2Vuc2U+R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDc8L0xpY2Vuc2U+CiAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPk9UT0JPIGNvZGUgcXVhbGl0eSBjaGVja3MuPC9EZXNjcmlwdGlvbj4KICAgIDxGaWxlbGlzdD4KICAgICAgICA8RmlsZSBQZXJtaXNzaW9uPSI3NTUiIExvY2F0aW9uPSJiaW4vb3RvYm8uQ29kZVBvbGljeS5wbCIgLz4KICAgIDwvRmlsZWxpc3Q+Cjwvb3RvYm9fcGFja2FnZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTWlzc2luZyB2ZW5kb3IuJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6U09QTTo6UmVxdWlyZWRFbGVtZW50cyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNy4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdG9ib19wYWNrYWdlIHZlcnNpb249IjEuMCI+CiAgICA8TmFtZT5PVE9CT0NvZGVQb2xpY3k8L05hbWU+CiAgICA8VmVyc2lvbj4wLjAuMDwvVmVyc2lvbj4KICAgIDxGcmFtZXdvcms+Ny4wLng8L0ZyYW1ld29yaz4KICAgIDxVUkw+aHR0cHM6Ly9vdG9iby5pby88L1VSTD4KICAgIDxMaWNlbnNlPkdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3PC9MaWNlbnNlPgogICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5PVE9CTyBjb2RlIHF1YWxpdHkgY2hlY2tzLjwvRGVzY3JpcHRpb24+CiAgICA8RmlsZWxpc3Q+CiAgICAgICAgPEZpbGUgUGVybWlzc2lvbj0iNzU1IiBMb2NhdGlvbj0iYmluL290b2JvLkNvZGVQb2xpY3kucGwiIC8+CiAgICA8L0ZpbGVsaXN0Pgo8L290b2JvX3BhY2thZ2U+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ01pc3NpbmcgVVJMLicsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlNPUE06OlJlcXVpcmVkRWxlbWVudHMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzcuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8b3RvYm9fcGFja2FnZSB2ZXJzaW9uPSIxLjAiPgogICAgPE5hbWU+T1RPQk9Db2RlUG9saWN5PC9OYW1lPgogICAgPFZlcnNpb24+MC4wLjA8L1ZlcnNpb24+CiAgICA8RnJhbWV3b3JrPjcuMC54PC9GcmFtZXdvcms+CiAgICA8VmVuZG9yPlJvdGhlciBPU1MgR21iSDwvVmVuZG9yPgogICAgPExpY2Vuc2U+R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDc8L0xpY2Vuc2U+CiAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPk9UT0JPIGNvZGUgcXVhbGl0eSBjaGVja3MuPC9EZXNjcmlwdGlvbj4KICAgIDxGaWxlbGlzdD4KICAgICAgICA8RmlsZSBQZXJtaXNzaW9uPSI3NTUiIExvY2F0aW9uPSJiaW4vb3RvYm8uQ29kZVBvbGljeS5wbCIgLz4KICAgIDwvRmlsZWxpc3Q+Cjwvb3RvYm9fcGFja2FnZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTWlzc2luZyBsaWNlbnNlLicsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlNPUE06OlJlcXVpcmVkRWxlbWVudHMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzcuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8b3RvYm9fcGFja2FnZSB2ZXJzaW9uPSIxLjAiPgogICAgPE5hbWU+T1RPQk9Db2RlUG9saWN5PC9OYW1lPgogICAgPFZlcnNpb24+MC4wLjA8L1ZlcnNpb24+CiAgICA8RnJhbWV3b3JrPjcuMC54PC9GcmFtZXdvcms+CiAgICA8VmVuZG9yPlJvdGhlciBPU1MgR21iSDwvVmVuZG9yPgogICAgPFVSTD5odHRwczovL290b2JvLmlvLzwvVVJMPgogICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5PVE9CTyBjb2RlIHF1YWxpdHkgY2hlY2tzLjwvRGVzY3JpcHRpb24+CiAgICA8RmlsZWxpc3Q+CiAgICAgICAgPEZpbGUgUGVybWlzc2lvbj0iNzU1IiBMb2NhdGlvbj0iYmluL290b2JvLkNvZGVQb2xpY3kucGwiIC8+CiAgICA8L0ZpbGVsaXN0Pgo8L290b2JvX3BhY2thZ2U+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0ludmFsaWQgY29udGVudCBmb3IgUGFja2FnZUlzRG93bmxvYWRhYmxlIGZsYWcuJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6U09QTTo6UmVxdWlyZWRFbGVtZW50cyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNy4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdG9ib19wYWNrYWdlIHZlcnNpb249IjEuMCI+CiAgICA8TmFtZT5PVE9CT0NvZGVQb2xpY3k8L05hbWU+CiAgICA8VmVyc2lvbj4wLjAuMDwvVmVyc2lvbj4KICAgIDxGcmFtZXdvcms+Ny4wLng8L0ZyYW1ld29yaz4KICAgIDxWZW5kb3I+Um90aGVyIE9TUyBHbWJIPC9WZW5kb3I+CiAgICA8VVJMPmh0dHBzOi8vb3RvYm8uaW8vPC9VUkw+CiAgICA8TGljZW5zZT5HTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRSBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNzwvTGljZW5zZT4KICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+T1RPQk8gY29kZSBxdWFsaXR5IGNoZWNrcy48L0Rlc2NyaXB0aW9uPgogICAgPFBhY2thZ2VJc0Rvd25sb2FkYWJsZT50ZXN0PC9QYWNrYWdlSXNEb3dubG9hZGFibGU+CiAgICA8UGFja2FnZUlzQnVpbGRhYmxlPjA8L1BhY2thZ2VJc0J1aWxkYWJsZT4KICAgIDxGaWxlbGlzdD4KICAgICAgICA8RmlsZSBQZXJtaXNzaW9uPSI3NTUiIExvY2F0aW9uPSJiaW4vb3RvYm8uQ29kZVBvbGljeS5wbCIgLz4KICAgIDwvRmlsZWxpc3Q+Cjwvb3RvYm9fcGFja2FnZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT1RPQk9Db2RlUG9saWN5IC0gbWlzc2luZyBQYWNrYWdlSXNEb3dubG9hZGFibGUgKyBQYWNrYWdlSXNCdWlsZGFibGUuJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6U09QTTo6UmVxdWlyZWRFbGVtZW50cyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNy4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdG9ib19wYWNrYWdlIHZlcnNpb249IjEuMCI+CiAgICA8TmFtZT5PVE9CT0NvZGVQb2xpY3k8L05hbWU+CiAgICA8VmVyc2lvbj4wLjAuMDwvVmVyc2lvbj4KICAgIDxGcmFtZXdvcms+Ny4wLng8L0ZyYW1ld29yaz4KICAgIDxWZW5kb3I+Um90aGVyIE9TUyBHbWJIPC9WZW5kb3I+CiAgICA8VVJMPmh0dHBzOi8vb3RvYm8uaW8vPC9VUkw+CiAgICA8TGljZW5zZT5HTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRSBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNzwvTGljZW5zZT4KICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+T1RPQk8gY29kZSBxdWFsaXR5IGNoZWNrcy48L0Rlc2NyaXB0aW9uPgogICAgPEZpbGVsaXN0PgogICAgICAgIDxGaWxlIFBlcm1pc3Npb249Ijc1NSIgTG9jYXRpb249ImJpbi9vdG9iby5Db2RlUG9saWN5LnBsIiAvPgogICAgPC9GaWxlbGlzdD4KPC9vdG9ib19wYWNrYWdlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdPVE9CT0NvZGVQb2xpY3kgLSB2YWxpZCBTT1BNLicsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlNPUE06OlJlcXVpcmVkRWxlbWVudHMpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzcuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8b3RvYm9fcGFja2FnZSB2ZXJzaW9uPSIxLjAiPgogICAgPE5hbWU+T1RPQk9Db2RlUG9saWN5PC9OYW1lPgogICAgPFZlcnNpb24+MC4wLjA8L1ZlcnNpb24+CiAgICA8RnJhbWV3b3JrPjcuMC54PC9GcmFtZXdvcms+CiAgICA8VmVuZG9yPlJvdGhlciBPU1MgR21iSDwvVmVuZG9yPgogICAgPFVSTD5odHRwczovL290b2JvLmlvLzwvVVJMPgogICAgPExpY2Vuc2U+R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDc8L0xpY2Vuc2U+CiAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPk9UT0JPIGNvZGUgcXVhbGl0eSBjaGVja3MuPC9EZXNjcmlwdGlvbj4KICAgIDxQYWNrYWdlSXNEb3dubG9hZGFibGU+MDwvUGFja2FnZUlzRG93bmxvYWRhYmxlPgogICAgPFBhY2thZ2VJc0J1aWxkYWJsZT4wPC9QYWNrYWdlSXNCdWlsZGFibGU+CiAgICA8RmlsZWxpc3Q+CiAgICAgICAgPEZpbGUgUGVybWlzc2lvbj0iNzU1IiBMb2NhdGlvbj0iYmluL290b2JvLkNvZGVQb2xpY3kucGwiIC8+CiAgICA8L0ZpbGVsaXN0Pgo8L290b2JvX3BhY2thZ2U+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0lUU01JbmNpZGVudFByb2JsZW1NYW5hZ2VtZW50IC0gbWlzc2luZyBQYWNrYWdlSXNEb3dubG9hZGFibGUgKyBQYWNrYWdlSXNCdWlsZGFibGUuJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6U09QTTo6UmVxdWlyZWRFbGVtZW50cyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNy4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdG9ib19wYWNrYWdlIHZlcnNpb249IjEuMCI+CiAgICA8TmFtZT5JVFNNSW5jaWRlbnRQcm9ibGVtTWFuYWdlbWVudDwvTmFtZT4KICAgIDxWZXJzaW9uPjAuMC4wPC9WZXJzaW9uPgogICAgPEZyYW1ld29yaz43LjAueDwvRnJhbWV3b3JrPgogICAgPFZlbmRvcj5Sb3RoZXIgT1NTIEdtYkg8L1ZlbmRvcj4KICAgIDxVUkw+aHR0cHM6Ly9vdG9iby5pby88L1VSTD4KICAgIDxMaWNlbnNlPkdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3PC9MaWNlbnNlPgogICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5PVE9CTyBjb2RlIHF1YWxpdHkgY2hlY2tzLjwvRGVzY3JpcHRpb24+CiAgICA8RmlsZWxpc3Q+CiAgICAgICAgPEZpbGUgUGVybWlzc2lvbj0iNzU1IiBMb2NhdGlvbj0iYmluL290b2JvLkNvZGVQb2xpY3kucGwiIC8+CiAgICA8L0ZpbGVsaXN0Pgo8L290b2JvX3BhY2thZ2U+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0lUU01JbmNpZGVudFByb2JsZW1NYW5hZ2VtZW50IC0gdmFsaWQgU09QTS4nLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpTT1BNOjpSZXF1aXJlZEVsZW1lbnRzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc3LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAo8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCIgPz4KPG90b2JvX3BhY2thZ2UgdmVyc2lvbj0iMS4wIj4KICAgIDxOYW1lPklUU01JbmNpZGVudFByb2JsZW1NYW5hZ2VtZW50PC9OYW1lPgogICAgPFZlcnNpb24+MC4wLjA8L1ZlcnNpb24+CiAgICA8RnJhbWV3b3JrPjcuMC54PC9GcmFtZXdvcms+CiAgICA8VmVuZG9yPlJvdGhlciBPU1MgR21iSDwvVmVuZG9yPgogICAgPFVSTD5odHRwczovL290b2JvLmlvLzwvVVJMPgogICAgPExpY2Vuc2U+R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDc8L0xpY2Vuc2U+CiAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPk9UT0JPIGNvZGUgcXVhbGl0eSBjaGVja3MuPC9EZXNjcmlwdGlvbj4KICAgIDxQYWNrYWdlSXNEb3dubG9hZGFibGU+MDwvUGFja2FnZUlzRG93bmxvYWRhYmxlPgogICAgPFBhY2thZ2VJc0J1aWxkYWJsZT4wPC9QYWNrYWdlSXNCdWlsZGFibGU+CiAgICA8RmlsZWxpc3Q+CiAgICAgICAgPEZpbGUgUGVybWlzc2lvbj0iNzU1IiBMb2NhdGlvbj0iYmluL290b2JvLkNvZGVQb2xpY3kucGwiIC8+CiAgICA8L0ZpbGVsaXN0Pgo8L290b2JvX3BhY2thZ2U+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1RpbWVBY2NvdW50aW5nIC0gbWlzc2luZyBQYWNrYWdlSXNEb3dubG9hZGFibGUgKyBQYWNrYWdlSXNCdWlsZGFibGUuJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6U09QTTo6UmVxdWlyZWRFbGVtZW50cyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNy4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdG9ib19wYWNrYWdlIHZlcnNpb249IjEuMCI+CiAgICA8TmFtZT5UaW1lQWNjb3VudGluZzwvTmFtZT4KICAgIDxWZXJzaW9uPjAuMC4wPC9WZXJzaW9uPgogICAgPEZyYW1ld29yaz43LjAueDwvRnJhbWV3b3JrPgogICAgPFZlbmRvcj5Sb3RoZXIgT1NTIEdtYkg8L1ZlbmRvcj4KICAgIDxVUkw+aHR0cHM6Ly9vdG9iby5pby88L1VSTD4KICAgIDxMaWNlbnNlPkdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3PC9MaWNlbnNlPgogICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5PVE9CTyBjb2RlIHF1YWxpdHkgY2hlY2tzLjwvRGVzY3JpcHRpb24+CiAgICA8RmlsZWxpc3Q+CiAgICAgICAgPEZpbGUgUGVybWlzc2lvbj0iNzU1IiBMb2NhdGlvbj0iYmluL290b2JvLkNvZGVQb2xpY3kucGwiIC8+CiAgICA8L0ZpbGVsaXN0Pgo8L290b2JvX3BhY2thZ2U+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1RpbWVBY2NvdW50aW5nIC0gdmFsaWQgU09QTS4nLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpTT1BNOjpSZXF1aXJlZEVsZW1lbnRzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc3LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAo8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCIgPz4KPG90b2JvX3BhY2thZ2UgdmVyc2lvbj0iMS4wIj4KICAgIDxOYW1lPlRpbWVBY2NvdW50aW5nPC9OYW1lPgogICAgPFZlcnNpb24+MC4wLjA8L1ZlcnNpb24+CiAgICA8RnJhbWV3b3JrPjcuMC54PC9GcmFtZXdvcms+CiAgICA8VmVuZG9yPlJvdGhlciBPU1MgR21iSDwvVmVuZG9yPgogICAgPFVSTD5odHRwczovL290b2JvLmlvLzwvVVJMPgogICAgPExpY2Vuc2U+R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDc8L0xpY2Vuc2U+CiAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPk9UT0JPIGNvZGUgcXVhbGl0eSBjaGVja3MuPC9EZXNjcmlwdGlvbj4KICAgIDxQYWNrYWdlSXNEb3dubG9hZGFibGU+MDwvUGFja2FnZUlzRG93bmxvYWRhYmxlPgogICAgPFBhY2thZ2VJc0J1aWxkYWJsZT4wPC9QYWNrYWdlSXNCdWlsZGFibGU+CiAgICA8RmlsZWxpc3Q+CiAgICAgICAgPEZpbGUgUGVybWlzc2lvbj0iNzU1IiBMb2NhdGlvbj0iYmluL290b2JvLkNvZGVQb2xpY3kucGwiIC8+CiAgICA8L0ZpbGVsaXN0Pgo8L290b2JvX3BhY2thZ2U+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ09UT0JPU1RPUk0gLSBtaXNzaW5nIFBhY2thZ2VJc0Rvd25sb2FkYWJsZSArIFBhY2thZ2VJc0J1aWxkYWJsZS4nLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpTT1BNOjpSZXF1aXJlZEVsZW1lbnRzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc3LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAo8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCIgPz4KPG90b2JvX3BhY2thZ2UgdmVyc2lvbj0iMS4wIj4KICAgIDxOYW1lPk9UT0JPU1RPUk08L05hbWU+CiAgICA8VmVyc2lvbj4wLjAuMDwvVmVyc2lvbj4KICAgIDxGcmFtZXdvcms+Ny4wLng8L0ZyYW1ld29yaz4KICAgIDxWZW5kb3I+Um90aGVyIE9TUyBHbWJIPC9WZW5kb3I+CiAgICA8VVJMPmh0dHBzOi8vb3RvYm8uaW8vPC9VUkw+CiAgICA8TGljZW5zZT5HTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRSBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNzwvTGljZW5zZT4KICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+T1RPQk8gY29kZSBxdWFsaXR5IGNoZWNrcy48L0Rlc2NyaXB0aW9uPgogICAgPEZpbGVsaXN0PgogICAgICAgIDxGaWxlIFBlcm1pc3Npb249Ijc1NSIgTG9jYXRpb249ImJpbi9vdG9iby5Db2RlUG9saWN5LnBsIiAvPgogICAgPC9GaWxlbGlzdD4KPC9vdG9ib19wYWNrYWdlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdPVE9CT1NUT1JNIC0gdmFsaWQgU09QTS4nLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpTT1BNOjpSZXF1aXJlZEVsZW1lbnRzKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc3LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAo8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCIgPz4KPG90b2JvX3BhY2thZ2UgdmVyc2lvbj0iMS4wIj4KICAgIDxOYW1lPk9UT0JPU1RPUk08L05hbWU+CiAgICA8VmVyc2lvbj4wLjAuMDwvVmVyc2lvbj4KICAgIDxGcmFtZXdvcms+Ny4wLng8L0ZyYW1ld29yaz4KICAgIDxWZW5kb3I+Um90aGVyIE9TUyBHbWJIPC9WZW5kb3I+CiAgICA8VVJMPmh0dHBzOi8vb3RvYm8uaW8vPC9VUkw+CiAgICA8TGljZW5zZT5HTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRSBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNzwvTGljZW5zZT4KICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+T1RPQk8gY29kZSBxdWFsaXR5IGNoZWNrcy48L0Rlc2NyaXB0aW9uPgogICAgPFBhY2thZ2VJc0Rvd25sb2FkYWJsZT4wPC9QYWNrYWdlSXNEb3dubG9hZGFibGU+CiAgICA8UGFja2FnZUlzQnVpbGRhYmxlPjA8L1BhY2thZ2VJc0J1aWxkYWJsZT4KICAgIDxGaWxlbGlzdD4KICAgICAgICA8RmlsZSBQZXJtaXNzaW9uPSI3NTUiIExvY2F0aW9uPSJiaW4vb3RvYm8uQ29kZVBvbGljeS5wbCIgLz4KICAgIDwvRmlsZWxpc3Q+Cjwvb3RvYm9fcGFja2FnZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdDEyMyAtIHZhbGlkIFNPUE0gKG5vIHJlc3RyaWN0ZWQgcGFja2FnZSkuJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6U09QTTo6UmVxdWlyZWRFbGVtZW50cyldLAogICAgICAgIEZyYW1ld29yayA9PiAnNy4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdG9ib19wYWNrYWdlIHZlcnNpb249IjEuMCI+CiAgICA8TmFtZT5UZXN0MTIzPC9OYW1lPgogICAgPFZlcnNpb24+MC4wLjA8L1ZlcnNpb24+CiAgICA8RnJhbWV3b3JrPjcuMC54PC9GcmFtZXdvcms+CiAgICA8VmVuZG9yPlJvdGhlciBPU1MgR21iSDwvVmVuZG9yPgogICAgPFVSTD5odHRwczovL290b2JvLmlvLzwvVVJMPgogICAgPExpY2Vuc2U+R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDc8L0xpY2Vuc2U+CiAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPk9UT0JPIGNvZGUgcXVhbGl0eSBjaGVja3MuPC9EZXNjcmlwdGlvbj4KICAgIDxGaWxlbGlzdD4KICAgICAgICA8RmlsZSBQZXJtaXNzaW9uPSI3NTUiIExvY2F0aW9uPSJiaW4vb3RvYm8uQ29kZVBvbGljeS5wbCIgLz4KICAgIDwvRmlsZWxpc3Q+Cjwvb3RvYm9fcGFja2FnZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAopOwoKJFNlbGYtPnNjcmlwdHM6OnRlc3Q6Ok9UT0JPQ29kZVBvbGljeVBsdWdpbnM6OlJ1biggVGVzdHMgPT4gXEBUZXN0cyApOwoKMTsK</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/SOPM/XSDValidator.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCnVzZSBzY3JpcHRzOjp0ZXN0OjpPVE9CT0NvZGVQb2xpY3lQbHVnaW5zOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTWluaW1hbCB2YWxpZCBTT1BNLicsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZXN0LnBtJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlNPUE06OlhTRFZhbGlkYXRvcildLAogICAgICAgIEZyYW1ld29yayA9PiAnNC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdG9ib19wYWNrYWdlIHZlcnNpb249IjEuMCI+CiAgICA8TmFtZT5PVE9CT0NvZGVQb2xpY3k8L05hbWU+CiAgICA8VmVyc2lvbj4wLjAuMDwvVmVyc2lvbj4KICAgIDxGcmFtZXdvcms+NC4wLng8L0ZyYW1ld29yaz4KICAgIDxWZW5kb3I+Um90aGVyIE9TUyBHbWJIPC9WZW5kb3I+CiAgICA8VVJMPmh0dHBzOi8vb3RvYm8uaW8vPC9VUkw+CiAgICA8TGljZW5zZT5HTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRSBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNzwvTGljZW5zZT4KICAgIDxEZXNjcmlwdGlvbiBMYW5nPSJlbiI+T1RPQk8gY29kZSBxdWFsaXR5IGNoZWNrcy48L0Rlc2NyaXB0aW9uPgogICAgPEZpbGVsaXN0PgogICAgICAgIDxGaWxlIFBlcm1pc3Npb249Ijc1NSIgTG9jYXRpb249ImJpbi9vdG9iby5Db2RlUG9saWN5LnBsIi8+CiAgICA8L0ZpbGVsaXN0Pgo8L290b2JvX3BhY2thZ2U+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1NpbXBsZSBQYWNrYWdlTWVyZ2UnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpTT1BNOjpYU0RWYWxpZGF0b3IpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzQuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8b3RvYm9fcGFja2FnZSB2ZXJzaW9uPSIxLjAiPgogICAgPE5hbWU+T1RPQk9Db2RlUG9saWN5PC9OYW1lPgogICAgPFZlcnNpb24+MC4wLjA8L1ZlcnNpb24+CiAgICA8RnJhbWV3b3JrPjQuMC54PC9GcmFtZXdvcms+CiAgICA8VmVuZG9yPlJvdGhlciBPU1MgR21iSDwvVmVuZG9yPgogICAgPFVSTD5odHRwczovL290b2JvLmlvLzwvVVJMPgogICAgPExpY2Vuc2U+R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDc8L0xpY2Vuc2U+CiAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPk9UT0JPIGNvZGUgcXVhbGl0eSBjaGVja3MuPC9EZXNjcmlwdGlvbj4KICAgIDxGaWxlbGlzdD4KICAgICAgICA8RmlsZSBQZXJtaXNzaW9uPSI3NTUiIExvY2F0aW9uPSJiaW4vb3RvYm8uQ29kZVBvbGljeS5wbCIvPgogICAgPC9GaWxlbGlzdD4KICAgIDxQYWNrYWdlTWVyZ2UgTmFtZT0iTWVyZ2VPbmUiIFRhcmdldFZlcnNpb249IjIuMC4wIj48L1BhY2thZ2VNZXJnZT4KPC9vdG9ib19wYWNrYWdlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdQYWNrYWdlTWVyZ2Ugd2l0aG91dCBUYXJnZXRWZXJzaW9uJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6U09QTTo6WFNEVmFsaWRhdG9yKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAo8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCIgPz4KPG90b2JvX3BhY2thZ2UgdmVyc2lvbj0iMS4wIj4KICAgIDxOYW1lPk9UT0JPQ29kZVBvbGljeTwvTmFtZT4KICAgIDxWZXJzaW9uPjAuMC4wPC9WZXJzaW9uPgogICAgPEZyYW1ld29yaz40LjAueDwvRnJhbWV3b3JrPgogICAgPFZlbmRvcj5Sb3RoZXIgT1NTIEdtYkg8L1ZlbmRvcj4KICAgIDxVUkw+aHR0cHM6Ly9vdG9iby5pby88L1VSTD4KICAgIDxMaWNlbnNlPkdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3PC9MaWNlbnNlPgogICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5PVE9CTyBjb2RlIHF1YWxpdHkgY2hlY2tzLjwvRGVzY3JpcHRpb24+CiAgICA8RmlsZWxpc3Q+CiAgICAgICAgPEZpbGUgUGVybWlzc2lvbj0iNzU1IiBMb2NhdGlvbj0iYmluL290b2JvLkNvZGVQb2xpY3kucGwiLz4KICAgIDwvRmlsZWxpc3Q+CiAgICA8UGFja2FnZU1lcmdlIE5hbWU9Ik1lcmdlT25lIj48L1BhY2thZ2VNZXJnZT4KPC9vdG9ib19wYWNrYWdlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdQYWNrYWdlTWVyZ2Ugd2l0aG91dCBOYW1lJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6U09QTTo6WFNEVmFsaWRhdG9yKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAo8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCIgPz4KPG90b2JvX3BhY2thZ2UgdmVyc2lvbj0iMS4wIj4KICAgIDxOYW1lPk9UT0JPQ29kZVBvbGljeTwvTmFtZT4KICAgIDxWZXJzaW9uPjAuMC4wPC9WZXJzaW9uPgogICAgPEZyYW1ld29yaz40LjAueDwvRnJhbWV3b3JrPgogICAgPFZlbmRvcj5Sb3RoZXIgT1NTIEdtYkg8L1ZlbmRvcj4KICAgIDxVUkw+aHR0cHM6Ly9vdG9iby5pby88L1VSTD4KICAgIDxMaWNlbnNlPkdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3PC9MaWNlbnNlPgogICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5PVE9CTyBjb2RlIHF1YWxpdHkgY2hlY2tzLjwvRGVzY3JpcHRpb24+CiAgICA8RmlsZWxpc3Q+CiAgICAgICAgPEZpbGUgUGVybWlzc2lvbj0iNzU1IiBMb2NhdGlvbj0iYmluL290b2JvLkNvZGVQb2xpY3kucGwiLz4KICAgIDwvRmlsZWxpc3Q+CiAgICA8UGFja2FnZU1lcmdlIFRhcmdldFZlcnNpb249IjIuMC4wIj48L1BhY2thZ2VNZXJnZT4KPC9vdG9ib19wYWNrYWdlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdTaW1wbGUgUGFja2FnZU1lcmdlJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1Rlc3QucG0nLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6U09QTTo6WFNEVmFsaWRhdG9yKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc0LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAo8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCIgPz4KPG90b2JvX3BhY2thZ2UgdmVyc2lvbj0iMS4wIj4KICAgIDxOYW1lPk9UT0JPQ29kZVBvbGljeTwvTmFtZT4KICAgIDxWZXJzaW9uPjAuMC4wPC9WZXJzaW9uPgogICAgPEZyYW1ld29yaz40LjAueDwvRnJhbWV3b3JrPgogICAgPFZlbmRvcj5Sb3RoZXIgT1NTIEdtYkg8L1ZlbmRvcj4KICAgIDxVUkw+aHR0cHM6Ly9vdG9iby5pby88L1VSTD4KICAgIDxMaWNlbnNlPkdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3PC9MaWNlbnNlPgogICAgPERlc2NyaXB0aW9uIExhbmc9ImVuIj5PVE9CTyBjb2RlIHF1YWxpdHkgY2hlY2tzLjwvRGVzY3JpcHRpb24+CiAgICA8RmlsZWxpc3Q+CiAgICAgICAgPEZpbGUgUGVybWlzc2lvbj0iNzU1IiBMb2NhdGlvbj0iYmluL290b2JvLkNvZGVQb2xpY3kucGwiLz4KICAgIDwvRmlsZWxpc3Q+CiAgICA8RGF0YWJhc2VVcGdyYWRlIFR5cGU9InBvc3QiPgogICAgICAgIDxUYWJsZUNyZWF0ZSBOYW1lPSJtZXJnZV9wYWNrYWdlIj4KICAgICAgICAgICAgPENvbHVtbiBOYW1lPSJpZCIgUmVxdWlyZWQ9InRydWUiIFByaW1hcnlLZXk9InRydWUiIEF1dG9JbmNyZW1lbnQ9InRydWUiIFR5cGU9IklOVEVHRVIiLz4KICAgICAgICAgICAgPENvbHVtbiBOYW1lPSJkZXNjcmlwdGlvbiIgUmVxdWlyZWQ9InRydWUiIFNpemU9IjIwMCIgVHlwZT0iVkFSQ0hBUiIvPgogICAgICAgIDwvVGFibGVDcmVhdGU+CiAgICA8L0RhdGFiYXNlVXBncmFkZT4KICAgIDxQYWNrYWdlTWVyZ2UgTmFtZT0iTWVyZ2VPbmUiIFRhcmdldFZlcnNpb249IjIuMC4wIj4KICAgICAgPERhdGFiYXNlVXBncmFkZSBUeXBlPSJtZXJnZSIgSWZQYWNrYWdlPSJPdGhlclBhY2thZ2UiIElmTm90UGFja2FnZT0iT3RoZXJQYWNrYWdlMiI+CiAgICAgICAgICA8VGFibGVDcmVhdGUgTmFtZT0ibWVyZ2VfcGFja2FnZSI+CiAgICAgICAgICAgICAgPENvbHVtbiBOYW1lPSJpZCIgUmVxdWlyZWQ9InRydWUiIFByaW1hcnlLZXk9InRydWUiIEF1dG9JbmNyZW1lbnQ9InRydWUiIFR5cGU9IklOVEVHRVIiLz4KICAgICAgICAgICAgICA8Q29sdW1uIE5hbWU9ImRlc2NyaXB0aW9uIiBSZXF1aXJlZD0idHJ1ZSIgU2l6ZT0iMjAwIiBUeXBlPSJWQVJDSEFSIi8+CiAgICAgICAgICA8L1RhYmxlQ3JlYXRlPgogICAgICA8L0RhdGFiYXNlVXBncmFkZT4KICAgIDwvUGFja2FnZU1lcmdlPgo8L290b2JvX3BhY2thZ2U+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1BhY2thZ2VNZXJnZSB3aXRoIGludmFsaWQgQ29kZUluc3RhbGwnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVzdC5wbScsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpTT1BNOjpYU0RWYWxpZGF0b3IpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzQuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8b3RvYm9fcGFja2FnZSB2ZXJzaW9uPSIxLjAiPgogICAgPE5hbWU+T1RPQk9Db2RlUG9saWN5PC9OYW1lPgogICAgPFZlcnNpb24+MC4wLjA8L1ZlcnNpb24+CiAgICA8RnJhbWV3b3JrPjQuMC54PC9GcmFtZXdvcms+CiAgICA8VmVuZG9yPlJvdGhlciBPU1MgR21iSDwvVmVuZG9yPgogICAgPFVSTD5odHRwczovL290b2JvLmlvLzwvVVJMPgogICAgPExpY2Vuc2U+R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDc8L0xpY2Vuc2U+CiAgICA8RGVzY3JpcHRpb24gTGFuZz0iZW4iPk9UT0JPIGNvZGUgcXVhbGl0eSBjaGVja3MuPC9EZXNjcmlwdGlvbj4KICAgIDxGaWxlbGlzdD4KICAgICAgICA8RmlsZSBQZXJtaXNzaW9uPSI3NTUiIExvY2F0aW9uPSJiaW4vb3RvYm8uQ29kZVBvbGljeS5wbCIvPgogICAgPC9GaWxlbGlzdD4KICAgIDxQYWNrYWdlTWVyZ2UgTmFtZT0iTWVyZ2VPbmUiIFRhcmdldFZlcnNpb249IjIuMC4wIj4KICAgICAgPERhdGFiYXNlSW5zdGFsbCBUeXBlPSJtZXJnZSI+CiAgICAgICAgICA8VGFibGVDcmVhdGUgTmFtZT0ibWVyZ2VfcGFja2FnZSI+CiAgICAgICAgICAgICAgPENvbHVtbiBOYW1lPSJpZCIgUmVxdWlyZWQ9InRydWUiIFByaW1hcnlLZXk9InRydWUiIEF1dG9JbmNyZW1lbnQ9InRydWUiIFR5cGU9IklOVEVHRVIiLz4KICAgICAgICAgICAgICA8Q29sdW1uIE5hbWU9ImRlc2NyaXB0aW9uIiBSZXF1aXJlZD0idHJ1ZSIgU2l6ZT0iMjAwIiBUeXBlPSJWQVJDSEFSIi8+CiAgICAgICAgICA8L1RhYmxlQ3JlYXRlPgogICAgICA8L0RhdGFiYXNlSW5zdGFsbD4KICAgIDwvUGFja2FnZU1lcmdlPgo8L290b2JvX3BhY2thZ2U+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKKTsKCiRTZWxmLT5zY3JpcHRzOjp0ZXN0OjpPVE9CT0NvZGVQb2xpY3lQbHVnaW5zOjpSdW4oIFRlc3RzID0+IFxAVGVzdHMgKTsKCjE7Cg==</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/TT/TranslationFilter.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RPQk9Db2RlUG9saWN5UGx1Z2luczsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1NpbXBsZSBmdW5jdGlvbiB0cmFuc2xhdGlvbiwgaW52YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZW1wbGF0ZS50dCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpUVDo6VHJhbnNsYXRpb25GaWx0ZXIpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsClslIFRyYW5zbGF0ZSgiSGVsbG8sIHdvcmxkISIpICVdCkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1NpbXBsZSBmdW5jdGlvbiB0cmFuc2xhdGlvbiB3aXRoIEhUTUwgZmlsdGVyLCB2YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZW1wbGF0ZS50dCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpUVDo6VHJhbnNsYXRpb25GaWx0ZXIpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsClslIFRyYW5zbGF0ZSgiSGVsbG8sIHdvcmxkISIpIHwgaHRtbCAlXQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdTaW1wbGUgZnVuY3Rpb24gdHJhbnNsYXRpb24gd2l0aCBKU09OIGZpbHRlciwgdmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVtcGxhdGUudHQnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6VFQ6OlRyYW5zbGF0aW9uRmlsdGVyKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApbJSBUcmFuc2xhdGUoIkhlbGxvLCB3b3JsZCEiKSB8IEpTT04gJV0KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnVmFyaWFibGUgZnVuY3Rpb24gdHJhbnNsYXRpb24sIGludmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVtcGxhdGUudHQnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6VFQ6OlRyYW5zbGF0aW9uRmlsdGVyKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApbJSBUcmFuc2xhdGUoRGF0YS5MYW5ndWFnZSkgJV0KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnVmFyaWFibGUgZnVuY3Rpb24gdHJhbnNsYXRpb24sIHZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1RlbXBsYXRlLnR0JywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlRUOjpUcmFuc2xhdGlvbkZpbHRlcildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKWyUgVHJhbnNsYXRlKERhdGEuTGFuZ3VhZ2UpIHwgaHRtbCAlXQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdDb21wbGV4IGZ1bmN0aW9uIHRyYW5zbGF0aW9uLCBpbnZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1RlbXBsYXRlLnR0JywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlRUOjpUcmFuc2xhdGlvbkZpbHRlcildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKJm5kYXNoOyA8c3BhbiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDcmVhdGVkIikgJV06IFslIERhdGEuQ3JlYXRlVGltZSB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSAlXSI+WyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpICVdPC9zcGFuPiBbJSBUcmFuc2xhdGUoInZpYSAlcyIsIFRyYW5zbGF0ZShEYXRhLkNvbW11bmljYXRpb25DaGFubmVsKSkgfCBodG1sICVdCkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0NvbXBsZXggZnVuY3Rpb24gdHJhbnNsYXRpb24sIHZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1RlbXBsYXRlLnR0JywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlRUOjpUcmFuc2xhdGlvbkZpbHRlcildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKJm5kYXNoOyA8c3BhbiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDcmVhdGVkIikgfCBodG1sICVdOiBbJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZVNob3J0IikgJV0iPlslIERhdGEuQ3JlYXRlVGltZSB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSAlXTwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJ2aWEgJXMiLCBUcmFuc2xhdGUoRGF0YS5Db21tdW5pY2F0aW9uQ2hhbm5lbCkpIHwgaHRtbCAlXQpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdGdW5jdGlvbiB0cmFuc2xhdGlvbiB3aXRoIHBsYWNlaG9sZGVyLCBpbnZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1RlbXBsYXRlLnR0JywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlRUOjpUcmFuc2xhdGlvbkZpbHRlcildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFkbWluT1RPQk9Db21tdW5pdHkiIGNsYXNzPSJCdXR0b24iPjxpIGNsYXNzPSJmYSBmYS1hbmdsZS1kb3VibGUtdXAiPjwvaT4gWyUgVHJhbnNsYXRlKCJVcGdyYWRlIHRvICVzIiwgT1RPQk9Db21tdW5pdHlMYWJlbCkgJV08L2E+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0Z1bmN0aW9uIHRyYW5zbGF0aW9uIHdpdGggcGxhY2Vob2xkZXIsIHZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1RlbXBsYXRlLnR0JywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlRUOjpUcmFuc2xhdGlvbkZpbHRlcildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFkbWluT1RPQk9Db21tdW5pdHkiIGNsYXNzPSJCdXR0b24iPjxpIGNsYXNzPSJmYSBmYS1hbmdsZS1kb3VibGUtdXAiPjwvaT4gWyUgVHJhbnNsYXRlKCJVcGdyYWRlIHRvICVzIikgfCBodG1sIHwgUmVwbGFjZVBsYWNlaG9sZGVycyhPVE9CT0NvbW11bml0eUxhYmVsKSAlXTwvYT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRnVuY3Rpb24gdHJhbnNsYXRpb24gd2l0aCBwbGFjZWhvbGRlcnMsIGludmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVtcGxhdGUudHQnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6VFQ6OlRyYW5zbGF0aW9uRmlsdGVyKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLApbJSBUcmFuc2xhdGUoJ1RoaXMgc3lzdGVtIHVzZXMgdGhlICVzIHdpdGhvdXQgYSBwcm9wZXIgbGljZW5zZSEgUGxlYXNlIG1ha2UgY29udGFjdCB3aXRoICVzIHRvIHJlbmV3IG9yIGFjdGl2YXRlIHlvdXIgY29udHJhY3QhJywgT1RPQk9Db21tdW5pdHlMYWJlbCwgJzxhIGhyZWY9Im1haWx0bzpoYWxsb0BvdG9iby5kZSI+aGFsbG9Ab3RvYm8uZGU8L2E+JykgJV0KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRnVuY3Rpb24gdHJhbnNsYXRpb24gd2l0aCBwbGFjZWhvbGRlcnMsIHZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1RlbXBsYXRlLnR0JywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlRUOjpUcmFuc2xhdGlvbkZpbHRlcildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKWyUgVHJhbnNsYXRlKCdUaGlzIHN5c3RlbSB1c2VzIHRoZSAlcyB3aXRob3V0IGEgcHJvcGVyIGxpY2Vuc2UhIFBsZWFzZSBtYWtlIGNvbnRhY3Qgd2l0aCAlcyB0byByZW5ldyBvciBhY3RpdmF0ZSB5b3VyIGNvbnRyYWN0IScpIHwgaHRtbCB8IFJlcGxhY2VQbGFjZWhvbGRlcnMoT1RPQk9Db21tdW5pdHlMYWJlbCwgJzxhIGhyZWY9Im1haWx0bzpoYWxsb0BvdG9iby5kZSI+aGFsbG9Ab3RvYm8uZGU8L2E+JykgJV0KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRnVuY3Rpb24gdHJhbnNsYXRpb24gd2l0aCBubyBzcGFjZXMsIGludmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnVGVtcGxhdGUudHQnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6VFQ6OlRyYW5zbGF0aW9uRmlsdGVyKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAo8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslVHJhbnNsYXRlKCJBZGQiKSVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkFkZCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRnVuY3Rpb24gdHJhbnNsYXRpb24gd2l0aCBubyBzcGFjZXMsIHZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1RlbXBsYXRlLnR0JywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlRUOjpUcmFuc2xhdGlvbkZpbHRlcildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPGJ1dHRvbiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJVRyYW5zbGF0ZSgiQWRkIil8aHRtbCVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkFkZCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRmlsdGVyIHRyYW5zbGF0aW9uLCBpbnZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1RlbXBsYXRlLnR0JywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlRUOjpUcmFuc2xhdGlvbkZpbHRlcildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPHNwYW4gdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkNvbnRlbnQpIHwgaHRtbCAlXSI+WyUgRGF0YS5Db250ZW50IHwgVHJhbnNsYXRlIHwgdHJ1bmNhdGUoRGF0YS5NYXhMZW5ndGgpICVdPC9zcGFuPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdGaWx0ZXIgdHJhbnNsYXRpb24sIHZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ1RlbXBsYXRlLnR0JywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlRUOjpUcmFuc2xhdGlvbkZpbHRlcildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwnRU9GJywKPHNwYW4gdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkNvbnRlbnQpIHwgaHRtbCAlXSI+WyUgRGF0YS5Db250ZW50IHwgVHJhbnNsYXRlIHwgdHJ1bmNhdGUoRGF0YS5NYXhMZW5ndGgpIHwgaHRtbCAlXTwvc3Bhbj4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnU2Vjb25kIGZpbHRlciB0cmFuc2xhdGlvbiwgaW52YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZW1wbGF0ZS50dCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpUVDo6VHJhbnNsYXRpb25GaWx0ZXIpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCnZhciBNZXNzYWdlID0gWyUgRGF0YS5DdXN0b21lclJlZ0V4RXJyb3JNZXNzYWdlU2VydmVyRXJyb3JNZXNzYWdlIHwgVHJhbnNsYXRlICVdOwpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdTZWNvbmQgZmlsdGVyIHRyYW5zbGF0aW9uLCB2YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdUZW1wbGF0ZS50dCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpUVDo6VHJhbnNsYXRpb25GaWx0ZXIpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8J0VPRicsCnZhciBNZXNzYWdlID0gWyUgRGF0YS5DdXN0b21lclJlZ0V4RXJyb3JNZXNzYWdlU2VydmVyRXJyb3JNZXNzYWdlIHwgVHJhbnNsYXRlIHwgSlNPTiAlXTsKRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAoKKTsKCiRTZWxmLT5zY3JpcHRzOjp0ZXN0OjpPVE9CT0NvZGVQb2xpY3lQbHVnaW5zOjpSdW4oIFRlc3RzID0+IFxAVGVzdHMgKTsKCjE7Cg==</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/XML/Configuration/NameLength.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RPQk9Db2RlUG9saWN5UGx1Z2luczsKCm15ICRTbWFsbE5hbWUgICAgPSAnQSc7Cm15ICRNZWRpdW1OYW1lICAgPSAnQScgeCAxMDA7Cm15ICRMb25nTmFtZSAgICAgPSAnQScgeCAyMDA7Cm15ICRMaW1pdE5hbWUgICAgPSAnQScgeCAyNTA7Cm15ICRPdmVyc2l6ZU5hbWUgPSAnQScgeCAyNTE7Cm15ICRIdWdlTmFtZSAgICAgPSAnQScgeCAzMDA7CgpteSAkU2V0dGluZ1RlbXBsYXRlID0gPDwnRU9GJzsKICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EaXNhYmxlcyB0aGUgd2ViIGluc3RhbGxlciAoaHR0cDovL3lvdXJob3N0LmV4YW1wbGUuY29tL290b2JvL2luc3RhbGxlci5wbCksIHRvIHByZXZlbnQgdGhlIHN5c3RlbSBmcm9tIGJlaW5nIGhpamFja2VkLiBJZiBzZXQgdG8gIk5vIiwgdGhlIHN5c3RlbSBjYW4gYmUgcmVpbnN0YWxsZWQgYW5kIHRoZSBjdXJyZW50IGJhc2ljIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSB1c2VkIHRvIHByZS1wb3B1bGF0ZSB0aGUgcXVlc3Rpb25zIHdpdGhpbiB0aGUgaW5zdGFsbGVyIHNjcmlwdC4gSWYgbm90IGFjdGl2ZSwgaXQgYWxzbyBkaXNhYmxlcyB0aGUgR2VuZXJpY0FnZW50LCBQYWNrYWdlTWFuYWdlciBhbmQgU1FMIEJveC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyYW1ld29yazwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBLZXk9IjAiIFRyYW5zbGF0YWJsZT0iMSI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgS2V5PSIxIiBUcmFuc2xhdGFibGU9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CkVPRgoKbXkgJFNldHRpbmdUZW1wbGF0ZU9sZCA9IDw8J0VPRic7CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGlzYWJsZXMgdGhlIHdlYiBpbnN0YWxsZXIgKGh0dHA6Ly95b3VyaG9zdC5leGFtcGxlLmNvbS9vdG9iby9pbnN0YWxsZXIucGwpLCB0byBwcmV2ZW50IHRoZSBzeXN0ZW0gZnJvbSBiZWluZyBoaWphY2tlZC4gSWYgc2V0IHRvICJObyIsIHRoZSBzeXN0ZW0gY2FuIGJlIHJlaW5zdGFsbGVkIGFuZCB0aGUgY3VycmVudCBiYXNpYyBjb25maWd1cmF0aW9uIHdpbGwgYmUgdXNlZCB0byBwcmUtcG9wdWxhdGUgdGhlIHF1ZXN0aW9ucyB3aXRoaW4gdGhlIGluc3RhbGxlciBzY3JpcHQuIElmIG5vdCBhY3RpdmUsIGl0IGFsc28gZGlzYWJsZXMgdGhlIEdlbmVyaWNBZ2VudCwgUGFja2FnZU1hbmFnZXIgYW5kIFNRTCBCb3guPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+RnJhbWV3b3JrPC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiIFRyYW5zbGF0YWJsZT0iMSI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiIFRyYW5zbGF0YWJsZT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CkVPRgoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnU21hbGwgU2V0dGluZyBOYW1lJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6Q29uZmlndXJhdGlvbjo6WFNEVmFsaWRhdG9yKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3RvYm9fY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IiRTbWFsbE5hbWUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSIgQ29uZmlnTGV2ZWw9IjIwMCI+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdG9ib19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ01lZGl1bSBTZXR0aW5nIE5hbWUnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpDb25maWd1cmF0aW9uOjpYU0RWYWxpZGF0b3IpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iJE1lZGl1bU5hbWUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSIgQ29uZmlnTGV2ZWw9IjIwMCI+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdG9ib19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0xvbmcgU2V0dGluZyBOYW1lJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6Q29uZmlndXJhdGlvbjo6WFNEVmFsaWRhdG9yKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3RvYm9fY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IiRMb25nTmFtZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIiBDb25maWdMZXZlbD0iMjAwIj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290b2JvX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTGltaXQgU2V0dGluZyBOYW1lJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6Q29uZmlndXJhdGlvbjo6WFNEVmFsaWRhdG9yKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3RvYm9fY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IiRMaW1pdE5hbWUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSIgQ29uZmlnTGV2ZWw9IjIwMCI+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdG9ib19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ092ZXJTaXplIFNldHRpbmcgTmFtZScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246OlhTRFZhbGlkYXRvcildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSIkT3ZlcnNpemVOYW1lIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiIENvbmZpZ0xldmVsPSIyMDAiPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdIdWdlIFNldHRpbmcgTmFtZScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246OlhTRFZhbGlkYXRvcildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSIkSHVnZU5hbWUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSIgQ29uZmlnTGV2ZWw9IjIwMCI+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdG9ib19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1NtYWxsIFNldHRpbmcgTmFtZSAoRnJhbWV3b3JrIDUuMCknLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246OlhTRFZhbGlkYXRvcildLAogICAgICAgIEZyYW1ld29yayA9PiAnNS4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIxLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSIkU21hbGxOYW1lIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiIENvbmZpZ0xldmVsPSIyMDAiPgokU2V0dGluZ1RlbXBsYXRlT2xkCiAgICA8L0NvbmZpZ0l0ZW0+Cjwvb3RvYm9fY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdNZWRpdW0gU2V0dGluZyBOYW1lIChGcmFtZXdvcmsgNS4wKScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6Q29uZmlndXJhdGlvbjo6WFNEVmFsaWRhdG9yKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc1LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3RvYm9fY29uZmlnIHZlcnNpb249IjEuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxDb25maWdJdGVtIE5hbWU9IiRNZWRpdW1OYW1lIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiIENvbmZpZ0xldmVsPSIyMDAiPgokU2V0dGluZ1RlbXBsYXRlT2xkCiAgICA8L0NvbmZpZ0l0ZW0+Cjwvb3RvYm9fY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdMb25nIFNldHRpbmcgTmFtZSAoRnJhbWV3b3JrIDUuMCknLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246OlhTRFZhbGlkYXRvcildLAogICAgICAgIEZyYW1ld29yayA9PiAnNS4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIxLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSIkTG9uZ05hbWUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSIgQ29uZmlnTGV2ZWw9IjIwMCI+CiRTZXR0aW5nVGVtcGxhdGVPbGQKICAgIDwvQ29uZmlnSXRlbT4KPC9vdG9ib19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0xpbWl0IFNldHRpbmcgTmFtZSAoRnJhbWV3b3JrIDUuMCknLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246OlhTRFZhbGlkYXRvcildLAogICAgICAgIEZyYW1ld29yayA9PiAnNS4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIxLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSIkTGltaXROYW1lIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiIENvbmZpZ0xldmVsPSIyMDAiPgokU2V0dGluZ1RlbXBsYXRlT2xkCiAgICA8L0NvbmZpZ0l0ZW0+Cjwvb3RvYm9fY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdPdmVyU2l6ZSBTZXR0aW5nIE5hbWUgKEZyYW1ld29yayA1LjApJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpDb25maWd1cmF0aW9uOjpYU0RWYWxpZGF0b3IpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzUuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdG9ib19jb25maWcgdmVyc2lvbj0iMS4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iJE92ZXJzaXplTmFtZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIiBDb25maWdMZXZlbD0iMjAwIj4KJFNldHRpbmdUZW1wbGF0ZU9sZAogICAgPC9Db25maWdJdGVtPgo8L290b2JvX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnSHVnZSBTZXR0aW5nIE5hbWUgKEZyYW1ld29yayA1LjApJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpDb25maWd1cmF0aW9uOjpYU0RWYWxpZGF0b3IpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzUuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdG9ib19jb25maWcgdmVyc2lvbj0iMS4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iJEh1Z2VOYW1lIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiIENvbmZpZ0xldmVsPSIyMDAiPgokU2V0dGluZ1RlbXBsYXRlT2xkCiAgICA8L0NvbmZpZ0l0ZW0+Cjwvb3RvYm9fY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCik7CgokU2VsZi0+c2NyaXB0czo6dGVzdDo6T1RPQk9Db2RlUG9saWN5UGx1Z2luczo6UnVuKCBUZXN0cyA9PiBcQFRlc3RzICk7CgoxOwo=</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/XML/Configuration/Navigation.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RPQk9Db2RlUG9saWN5UGx1Z2luczsKCm15ICRTZXR0aW5nVGVtcGxhdGUgPSA8PCdFT0YnOwogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRlc3QgY29uZmlnIHNldHRpbmcgZGVmaW5pdGlvbiBmb3IgcHVycG9zZXMgb2YgdGhlIHVuaXQgdGVzdGluZy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IktleSI+VmFsdWU8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgpFT0YKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1RvcCBsZXZlbCBlbnRyeSAtIFZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6Q29uZmlndXJhdGlvbjo6TmF2aWdhdGlvbildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJTdGF0czo6U3RhdHNIb29rIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlN0YXRzPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdUb3AgbGV2ZWwgZW50cnkgLSBJbnZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6Q29uZmlndXJhdGlvbjo6TmF2aWdhdGlvbildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJTdGF0czo6U3RhdHNIb29rIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPlN0YXRzOjpDb3JlPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdFdmVudCBoYW5kbGVyIGVudHJ5IC0gVmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3RvYm9fY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IlBhY2thZ2U6OkV2ZW50TW9kdWxlUG9zdCMjIzkwMDAtU3VwcG9ydERhdGFTZW5kIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpQYWNrYWdlPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdFdmVudCBoYW5kbGVyIGVudHJ5IC0gSW52YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iUGFja2FnZTo6RXZlbnRNb2R1bGVQb3N0IyMjOTAwMC1TdXBwb3J0RGF0YVNlbmQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+UGFja2FnZTo6Q29yZTo6RXZlbnRzPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdWYWxpZCBmcm9udGVuZCBzdWJncm91cCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6Tm90aWZ5TW9kdWxlIyMjOS1DdXN0b21lck5vdGlmaWNhdGlvbk1vZHVsZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OkZyb250ZW5kTm90aWZpY2F0aW9uPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdGcm9udGVuZCBzdWJncm91cCAtIFZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6Q29uZmlndXJhdGlvbjo6TmF2aWdhdGlvbildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lckZyb250ZW5kOjpOb3RpZnlNb2R1bGUjIyM5LUN1c3RvbWVyTm90aWZpY2F0aW9uTW9kdWxlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6RnJvbnRlbmROb3RpZmljYXRpb248L05hdmlnYXRpb24+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdG9ib19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0Zyb250ZW5kIHN1Ymdyb3VwIC0gSW52YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzcuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6Tm90aWZ5TW9kdWxlIyMjOS1DdXN0b21lck5vdGlmaWNhdGlvbk1vZHVsZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OkZyb250ZW5kTm90aWZpY2F0aW9uPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdXZWJBcHAgc3ViZ3JvdXBzIC0gVmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc3LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3RvYm9fY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IldlYkFwcDo6QVBJQ2xpZW50IyMjUHJpbWFyeVByb3RvY29sIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPldlYkFwcDo6QVBJQ2xpZW50PC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdXZWJBcHAgc3ViZ3JvdXBzIC0gSW52YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzcuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iV2ViQXBwOjpBUElDbGllbnQjIyNQcmltYXJ5UHJvdG9jb2wiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+V2ViQXBwOjpDbGllbnQ8L05hdmlnYXRpb24+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdG9ib19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ01haW4gbG9hZGVyIGVudHJ5IC0gVmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3RvYm9fY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6QWdlbnQ6OkNvbW1vbkNTUyMjIzAwMC1GcmFtZXdvcmsiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkJhc2U6OkxvYWRlcjwvTmF2aWdhdGlvbj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290b2JvX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTWFpbiBsb2FkZXIgZW50cnkgLSBJbnZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6Q29uZmlndXJhdGlvbjo6TmF2aWdhdGlvbildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6OkFnZW50OjpDb21tb25DU1MjIyMwMDAtRnJhbWV3b3JrIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TG9hZGVyPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdMb2FkZXIgY29uZmlnIGZvciBBZG1pbiBpbnRlcmZhY2UgLSBWYWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFkbWluU3lzdGVtQ29uZmlndXJhdGlvbiMjIzAwMS1GcmFtZXdvcmsiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFkbWluOjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290b2JvX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTG9hZGVyIGNvbmZpZyBmb3IgQWRtaW4gaW50ZXJmYWNlIC0gSW52YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFkbWluU3lzdGVtQ29uZmlndXJhdGlvbiMjIzAwMS1GcmFtZXdvcmsiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkJhc2U6OkxvYWRlcjwvTmF2aWdhdGlvbj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290b2JvX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTG9hZGVyIGNvbmZpZyBmb3IgQWdlbnQgaW50ZXJmYWNlIC0gVmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3RvYm9fY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudERhc2hib2FyZCMjIzAwMS1GcmFtZXdvcmsiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290b2JvX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTG9hZGVyIGNvbmZpZyBmb3IgQWdlbnQgaW50ZXJmYWNlIC0gSW52YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFnZW50RGFzaGJvYXJkIyMjMDAxLUZyYW1ld29yayIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QmFzZTo6TG9hZGVyPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdMb2FkZXIgY29uZmlnIGZvciBDdXN0b21lciBpbnRlcmZhY2UgLSBWYWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkN1c3RvbWVyVGlja2V0TWVzc2FnZSMjIzAwMi1UaWNrZXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290b2JvX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTG9hZGVyIGNvbmZpZyBmb3IgQ3VzdG9tZXIgaW50ZXJmYWNlIC0gSW52YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkN1c3RvbWVyVGlja2V0TWVzc2FnZSMjIzAwMi1UaWNrZXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkJhc2U6OkxvYWRlcjwvTmF2aWdhdGlvbj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290b2JvX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTG9hZGVyIGNvbmZpZyBmb3IgUHVibGljIGludGVyZmFjZSAtIFZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6Q29uZmlndXJhdGlvbjo6TmF2aWdhdGlvbildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6UHVibGljRkFRRXhwbG9yZXIjIyMwMDItRkFRIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290b2JvX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTG9hZGVyIGNvbmZpZyBmb3IgQ3VzdG9tZXIgaW50ZXJmYWNlIC0gSW52YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OlB1YmxpY0ZBUUV4cGxvcmVyIyMjMDAyLUZBUSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QmFzZTo6TG9hZGVyPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdGcm9udGVuZCBuYXZpZ2F0aW9uIGNvbmZpZyBmb3IgQWRtaW4gaW50ZXJmYWNlIC0gVmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3RvYm9fY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWRtaW4jIyMwMDEtRnJhbWV3b3JrIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290b2JvX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRnJvbnRlbmQgbmF2aWdhdGlvbiBjb25maWcgZm9yIEFkbWluIGludGVyZmFjZSAtIEludmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3RvYm9fY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWRtaW4jIyMwMDEtRnJhbWV3b3JrIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdGcm9udGVuZCBuYXZpZ2F0aW9uIGNvbmZpZyBmb3IgQWdlbnQgaW50ZXJmYWNlIC0gVmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3RvYm9fY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnQjIyMwMDEtRnJhbWV3b3JrIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290b2JvX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRnJvbnRlbmQgbmF2aWdhdGlvbiBjb25maWcgZm9yIEFnZW50IGludGVyZmFjZSAtIEludmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3RvYm9fY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnQjIyMwMDEtRnJhbWV3b3JrIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdGcm9udGVuZCBuYXZpZ2F0aW9uIGNvbmZpZyBmb3IgQ3VzdG9tZXIgaW50ZXJmYWNlIC0gVmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3RvYm9fY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNDdXN0b21lciMjIzAwMS1GcmFtZXdvcmsiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdGcm9udGVuZCBuYXZpZ2F0aW9uIGNvbmZpZyBmb3IgQ3VzdG9tZXIgaW50ZXJmYWNlIC0gSW52YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6TmF2aWdhdGlvbiMjI0N1c3RvbWVyIyMjMDAxLUZyYW1ld29yayIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290b2JvX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRnJvbnRlbmQgbmF2aWdhdGlvbiBjb25maWcgZm9yIFB1YmxpYyBpbnRlcmZhY2UgLSBWYWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNQdWJsaWMjIyMwMDEtRnJhbWV3b3JrIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdG9ib19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0Zyb250ZW5kIG5hdmlnYXRpb24gY29uZmlnIGZvciBQdWJsaWMgaW50ZXJmYWNlIC0gSW52YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNQdWJsaWMjIyMwMDEtRnJhbWV3b3JrIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdOYXZpZ2F0aW9uIG1vZHVsZSBjb25maWcgLSBWYWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb25Nb2R1bGUjIyNBZG1pbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6QWRtaW5PdmVydmlldzwvTmF2aWdhdGlvbj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290b2JvX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnTmF2aWdhdGlvbiBtb2R1bGUgY29uZmlnIC0gSW52YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb25Nb2R1bGUjIyNBZG1pbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW48L05hdmlnYXRpb24+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdG9ib19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1NlYXJjaCByb3V0ZXIgY29uZmlnIGZvciBBZG1pbiBpbnRlcmZhY2UgLSBWYWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6OlNlYXJjaCMjI0FkbWluU3lzdGVtQ29uZmlndXJhdGlvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU6OlNlYXJjaDwvTmF2aWdhdGlvbj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290b2JvX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnU2VhcmNoIHJvdXRlciBjb25maWcgZm9yIEFkbWluIGludGVyZmFjZSAtIEludmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3RvYm9fY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpTZWFyY2gjIyNBZG1pblN5c3RlbUNvbmZpZ3VyYXRpb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFkbWluPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdTZWFyY2ggcm91dGVyIGNvbmZpZyBmb3IgQWdlbnQgaW50ZXJmYWNlIC0gVmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3RvYm9fY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpTZWFyY2gjIyNBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXIiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51OjpTZWFyY2g8L05hdmlnYXRpb24+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdG9ib19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1NlYXJjaCByb3V0ZXIgY29uZmlnIGZvciBBZ2VudCBpbnRlcmZhY2UgLSBJbnZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6Q29uZmlndXJhdGlvbjo6TmF2aWdhdGlvbildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6U2VhcmNoIyMjQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDwvTmF2aWdhdGlvbj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290b2JvX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT3V0cHV0IGZpbHRlcnMgLSBWYWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok91dHB1dDo6RmlsdGVyVGV4dCMjI0FBQVVSTCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QmFzZTo6T3V0cHV0RmlsdGVyPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdPdXRwdXQgZmlsdGVycyAtIEludmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3RvYm9fY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpPdXRwdXQ6OkZpbHRlclRleHQjIyNBQUFVUkwiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkJhc2U8L05hdmlnYXRpb24+CiRTZXR0aW5nVGVtcGxhdGUKICAgIDwvU2V0dGluZz4KPC9vdG9ib19jb25maWc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0Zyb250ZW5kIHZpZXdzIC0gVmFsaWQnLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpDb25maWd1cmF0aW9uOjpOYXZpZ2F0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8b3RvYm9fY29uZmlnIHZlcnNpb249IjIuMCIgaW5pdD0iRnJhbWV3b3JrIj4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RnJvbnRlbmQ6Olpvb21SaWNoVGV4dEZvcmNlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6VGlja2V0Wm9vbTwvTmF2aWdhdGlvbj4KJFNldHRpbmdUZW1wbGF0ZQogICAgPC9TZXR0aW5nPgo8L290b2JvX2NvbmZpZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnRnJvbnRlbmQgdmlld3MgLSBJbnZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6Q29uZmlndXJhdGlvbjo6TmF2aWdhdGlvbildLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkZyYW1ld29yayI+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkZyb250ZW5kOjpab29tUmljaFRleHRGb3JjZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlRpY2tldFpvb206OlZpZXc6OlJpY2hUZXh0PC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdGcm9udGVuZCB2aWV3cyAoT1RPQk8gNyspIC0gSW52YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246Ok5hdmlnYXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJGcmFtZXdvcmsiPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpGcm9udGVuZDo6Q3VzdG9tZXJUaWNrZXRNZXNzYWdlIyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6VGlja2V0OjpWaWV3OjpNZXNzYWdlPC9OYXZpZ2F0aW9uPgokU2V0dGluZ1RlbXBsYXRlCiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCik7CgokU2VsZi0+c2NyaXB0czo6dGVzdDo6T1RPQk9Db2RlUG9saWN5UGx1Z2luczo6UnVuKCBUZXN0cyA9PiBcQFRlc3RzICk7CgoxOwo=</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/XML/Configuration/YAMLIndentation.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RPQk9Db2RlUG9saWN5UGx1Z2luczsKCm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1lBTUwsIG5vIGluZGVudGF0aW9uJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6Q29uZmlndXJhdGlvbjo6WUFNTEluZGVudGF0aW9uKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAogICAgPFNldHRpbmcgTmFtZT0iWUFNTFRlc3QiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IllBTUwiPjwhW0NEQVRBWy0tLQpLZXk6IFZhbHVlCl1dPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdZQU1MLCBlbXB0eScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246OllBTUxJbmRlbnRhdGlvbildLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKICAgIDxTZXR0aW5nIE5hbWU9IllBTUxUZXN0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJZQU1MIj48IVtDREFUQVstLS0KXV0+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1lBTUwsIHdpdGggaW5kZW50YXRpb24nLAogICAgICAgIEZpbGVuYW1lICA9PiAnS2VybmVsL0NvbmZpZy9GaWxlcy9YTUwvVGVzdC54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpDb25maWd1cmF0aW9uOjpZQU1MSW5kZW50YXRpb24pXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzguMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCiAgICA8U2V0dGluZyBOYW1lPSJZQU1MVGVzdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iWUFNTCI+PCFbQ0RBVEFbLS0tCiAgICAgICAgICAgIEtleTogVmFsdWUKICAgICAgICAgICAgU3ViSGFzaDoKICAgICAgICAgICAgICBTdWJLZXk6IFN1YlZhbHVlCiAgICAgICAgICAgIF1dPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgpFT0YKICAgICAgICBSZXN1bHQgPT4gPDwiRU9GIiwKICAgIDxTZXR0aW5nIE5hbWU9IllBTUxUZXN0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJZQU1MIj48IVtDREFUQVstLS0KS2V5OiBWYWx1ZQpTdWJIYXNoOgogIFN1YktleTogU3ViVmFsdWUKXV0+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKKTsKCiRTZWxmLT5zY3JpcHRzOjp0ZXN0OjpPVE9CT0NvZGVQb2xpY3lQbHVnaW5zOjpSdW4oIFRlc3RzID0+IFxAVGVzdHMgKTsKCjE7Cg==</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/XML/Configuration/YAMLValidator.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RPQk9Db2RlUG9saWN5UGx1Z2luczsKCm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1lBTUwsIG5vIGVycm9yJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6Q29uZmlndXJhdGlvbjo6WUFNTFZhbGlkYXRvcildLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKICAgIDxTZXR0aW5nIE5hbWU9IllBTUxUZXN0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJZQU1MIj48IVtDREFUQVstLS0KS2V5OiBWYWx1ZQogICAgICAgICAgICBdXT48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnWUFNTCwgc3ludGF4IGVycm9yJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6Q29uZmlndXJhdGlvbjo6WUFNTFZhbGlkYXRvcildLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKICAgIDxTZXR0aW5nIE5hbWU9IllBTUxUZXN0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJZQU1MIj48IVtDREFUQVstLS0KOiB3cm9uZyBzeW50YXgKICAgICAgICAgICAgXV0+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKKTsKCiRTZWxmLT5zY3JpcHRzOjp0ZXN0OjpPVE9CT0NvZGVQb2xpY3lQbHVnaW5zOjpSdW4oIFRlc3RzID0+IFxAVGVzdHMgKTsKCjE7Cg==</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/XML/Configuration/UnitTestBlacklist.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RPQk9Db2RlUG9saWN5UGx1Z2luczsKCm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1RoZXJlIGlzIG92ZXJyaWRkZW4gdW5pdCB0ZXN0JywKICAgICAgICBGaWxlbmFtZSAgPT4gJ0tlcm5lbC9Db25maWcvRmlsZXMvWE1ML1Rlc3QueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6Q29uZmlndXJhdGlvbjo6VW5pdFRlc3RCbGFja2xpc3QpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzYuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCiAgICA8U2V0dGluZyBOYW1lPSJVbml0VGVzdDo6QmxhY2tsaXN0IyMjMTAwLU9UT0JPQ29kZVBvbGljeSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5CbGFja2xpc3Qgb3ZlcnJpZGRlbiBmcmFtZXdvcmsgdW5pdCB0ZXN0cyB3aGVuIHRoaXMgcGFja2FnZSBpcyBpbnN0YWxsZWQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpVbml0VGVzdDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj5Tb21lVW5pdFRlc3RCbGFja2xpc3Qke1JhbmRvbUlEfS50PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPlNvbWVEaXJlY3RvcnkvU29tZVVuaXRUZXN0QmxhY2tsaXN0JHtSYW5kb21JRH0udDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgpFT0YKICAgICAgICBGaWxlTGlzdCA9PiBbCiAgICAgICAgICAgICJzY3JpcHRzL3Rlc3QvT1RPQk9Db2RlUG9saWN5U29tZVVuaXRUZXN0QmxhY2tsaXN0JHtSYW5kb21JRH0udCIsCiAgICAgICAgICAgICJzY3JpcHRzL3Rlc3QvU29tZURpcmVjdG9yeS9PVE9CT0NvZGVQb2xpY3lTb21lVW5pdFRlc3RCbGFja2xpc3Qke1JhbmRvbUlEfS50IiwKICAgICAgICBdLAogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1RoZXJlIGlzIG5vdCBvdmVycmlkZGVuIHVuaXQgdGVzdCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdLZXJuZWwvQ29uZmlnL0ZpbGVzL1hNTC9UZXN0LnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkNvbmZpZ3VyYXRpb246OlVuaXRUZXN0QmxhY2tsaXN0KV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCdFT0YnLAogICAgPFNldHRpbmcgTmFtZT0iVW5pdFRlc3Q6OkJsYWNrbGlzdCMjIzEwMC1PVE9CT0NvZGVQb2xpY3kiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QmxhY2tsaXN0IG92ZXJyaWRkZW4gZnJhbWV3b3JrIHVuaXQgdGVzdHMgd2hlbiB0aGlzIHBhY2thZ2UgaXMgaW5zdGFsbGVkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6VW5pdFRlc3Q8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+U29tZVVuaXRUZXN0QmxhY2tsaXN0Tm9uRXhpc3RlbnQudDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj5Tb21lRGlyZWN0b3J5L1NvbWVVbml0VGVzdEJsYWNrbGlzdE5vbkV4aXN0ZW50LnQ8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KRU9GCiAgICAgICAgRmlsZUxpc3QgID0+IFtdLAogICAgICAgIEV4Y2VwdGlvbiA9PiAxLAogICAgfSwKKTsKCiRTZWxmLT5zY3JpcHRzOjp0ZXN0OjpPVE9CT0NvZGVQb2xpY3lQbHVnaW5zOjpSdW4oIFRlc3RzID0+IFxAVGVzdHMgKTsKCjE7Cg==</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/XML/Database/KeyLength.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RPQk9Db2RlUG9saWN5UGx1Z2luczsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0J1ZyMxMzE5OSwgZHluYW1pY19maWVsZF9vYmpfaWRfbmFtZSBpc3N1ZScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdvdG9iby1zY2hlbWEueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6RGF0YWJhc2U6OktleUxlbmd0aCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPCEtLSBvYmplY3QgbmFtZXMgZm9yIGR5bmFtaWMgZmllbGQgdmFsdWVzIC0tPgo8VGFibGUgTmFtZT0iZHluYW1pY19maWVsZF9vYmpfaWRfbmFtZSI+CiAgICA8Q29sdW1uIE5hbWU9Im9iamVjdF9pZCIgUmVxdWlyZWQ9InRydWUiIFByaW1hcnlLZXk9InRydWUiIEF1dG9JbmNyZW1lbnQ9InRydWUiIFR5cGU9IklOVEVHRVIiLz4KICAgIDxDb2x1bW4gTmFtZT0ib2JqZWN0X25hbWUiIFJlcXVpcmVkPSJ0cnVlIiBTaXplPSIyMDAiIFR5cGU9IlZBUkNIQVIiLz4KICAgIDxDb2x1bW4gTmFtZT0ib2JqZWN0X3R5cGUiIFJlcXVpcmVkPSJ0cnVlIiBTaXplPSIyMDAiIFR5cGU9IlZBUkNIQVIiLz4KICAgIDxVbmlxdWUgTmFtZT0iZHluYW1pY19maWVsZF9vYmplY3RfbmFtZSI+CiAgICAgICAgPFVuaXF1ZUNvbHVtbiBOYW1lPSJvYmplY3RfbmFtZSIvPgogICAgICAgIDxVbmlxdWVDb2x1bW4gTmFtZT0ib2JqZWN0X3R5cGUiLz4KICAgIDwvVW5pcXVlPgo8L1RhYmxlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdCdWcjMTMxOTksIGR5bmFtaWNfZmllbGRfb2JqX2lkX25hbWUgZml4JywKICAgICAgICBGaWxlbmFtZSAgPT4gJ290b2JvLXNjaGVtYS54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpEYXRhYmFzZTo6S2V5TGVuZ3RoKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8IS0tIG9iamVjdCBuYW1lcyBmb3IgZHluYW1pYyBmaWVsZCB2YWx1ZXMgLS0+CjxUYWJsZSBOYW1lPSJkeW5hbWljX2ZpZWxkX29ial9pZF9uYW1lIj4KICAgIDxDb2x1bW4gTmFtZT0ib2JqZWN0X2lkIiBSZXF1aXJlZD0idHJ1ZSIgUHJpbWFyeUtleT0idHJ1ZSIgQXV0b0luY3JlbWVudD0idHJ1ZSIgVHlwZT0iSU5URUdFUiIvPgogICAgPENvbHVtbiBOYW1lPSJvYmplY3RfbmFtZSIgUmVxdWlyZWQ9InRydWUiIFNpemU9IjIwMCIgVHlwZT0iVkFSQ0hBUiIvPgogICAgPENvbHVtbiBOYW1lPSJvYmplY3RfdHlwZSIgUmVxdWlyZWQ9InRydWUiIFNpemU9IjEwMCIgVHlwZT0iVkFSQ0hBUiIvPgogICAgPFVuaXF1ZSBOYW1lPSJkeW5hbWljX2ZpZWxkX29iamVjdF9uYW1lIj4KICAgICAgICA8VW5pcXVlQ29sdW1uIE5hbWU9Im9iamVjdF9uYW1lIi8+CiAgICAgICAgPFVuaXF1ZUNvbHVtbiBOYW1lPSJvYmplY3RfdHlwZSIvPgogICAgPC9VbmlxdWU+CjwvVGFibGU+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0J1ZyMxMzE5OSwgZm9ybV9kcmFmdCBpc3N1ZScsCiAgICAgICAgRmlsZW5hbWUgID0+ICdvdG9iby1zY2hlbWEueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6RGF0YWJhc2U6OktleUxlbmd0aCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPCEtLSBmb3JtX2RyYWZ0IC0tPgogPFRhYmxlQ3JlYXRlIE5hbWU9ImZvcm1fZHJhZnQiPgogICAgIDxDb2x1bW4gTmFtZT0iaWQiIFJlcXVpcmVkPSJ0cnVlIiBQcmltYXJ5S2V5PSJ0cnVlIiBBdXRvSW5jcmVtZW50PSJ0cnVlIiBUeXBlPSJJTlRFR0VSIiAvPgogICAgIDxDb2x1bW4gTmFtZT0ib2JqZWN0X3R5cGUiIFJlcXVpcmVkPSJ0cnVlIiBTaXplPSIyMDAiIFR5cGU9IlZBUkNIQVIiIC8+CiAgICAgPENvbHVtbiBOYW1lPSJvYmplY3RfaWQiIFJlcXVpcmVkPSJ0cnVlIiBUeXBlPSJJTlRFR0VSIiAvPgogICAgIDxDb2x1bW4gTmFtZT0iYWN0aW9uIiBSZXF1aXJlZD0idHJ1ZSIgU2l6ZT0iMjAwIiBUeXBlPSJWQVJDSEFSIiAvPgogICAgIDxDb2x1bW4gTmFtZT0idGl0bGUiIFJlcXVpcmVkPSJmYWxzZSIgU2l6ZT0iMjU1IiBUeXBlPSJWQVJDSEFSIiAvPgogICAgIDxDb2x1bW4gTmFtZT0iY29udGVudCIgUmVxdWlyZWQ9InRydWUiIFR5cGU9IkxPTkdCTE9CIiAvPgogICAgIDxDb2x1bW4gTmFtZT0iY3JlYXRlX3RpbWUiIFJlcXVpcmVkPSJ0cnVlIiBUeXBlPSJEQVRFIiAvPgogICAgIDxDb2x1bW4gTmFtZT0iY3JlYXRlX2J5IiBSZXF1aXJlZD0idHJ1ZSIgVHlwZT0iSU5URUdFUiIgLz4KICAgICA8Q29sdW1uIE5hbWU9ImNoYW5nZV90aW1lIiBSZXF1aXJlZD0idHJ1ZSIgVHlwZT0iREFURSIgLz4KICAgICA8Q29sdW1uIE5hbWU9ImNoYW5nZV9ieSIgUmVxdWlyZWQ9InRydWUiIFR5cGU9IklOVEVHRVIiIC8+CiAgICAgPEluZGV4IE5hbWU9ImZvcm1fZHJhZnRfb2JqZWN0X3R5cGVfb2JqZWN0X2lkX2FjdGlvbiI+CiAgICAgICAgIDxJbmRleENvbHVtbiBOYW1lPSJvYmplY3RfdHlwZSIgLz4KICAgICAgICAgPEluZGV4Q29sdW1uIE5hbWU9Im9iamVjdF9pZCIgLz4KICAgICAgICAgPEluZGV4Q29sdW1uIE5hbWU9ImFjdGlvbiIgLz4KICAgICA8L0luZGV4PgogICAgIDxGb3JlaWduS2V5IEZvcmVpZ25UYWJsZT0idXNlcnMiPgogICAgICAgICA8UmVmZXJlbmNlIExvY2FsPSJjcmVhdGVfYnkiIEZvcmVpZ249ImlkIiAvPgogICAgICAgICA8UmVmZXJlbmNlIExvY2FsPSJjaGFuZ2VfYnkiIEZvcmVpZ249ImlkIiAvPgogICAgIDwvRm9yZWlnbktleT4KPC9UYWJsZUNyZWF0ZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnQnVnIzEzMTk5LCBmb3JtX2RyYWZ0IGZpeCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdvdG9iby1zY2hlbWEueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6RGF0YWJhc2U6OktleUxlbmd0aCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPCEtLSBmb3JtX2RyYWZ0IC0tPgogPFRhYmxlQ3JlYXRlIE5hbWU9ImZvcm1fZHJhZnQiPgogICAgIDxDb2x1bW4gTmFtZT0iaWQiIFJlcXVpcmVkPSJ0cnVlIiBQcmltYXJ5S2V5PSJ0cnVlIiBBdXRvSW5jcmVtZW50PSJ0cnVlIiBUeXBlPSJJTlRFR0VSIiAvPgogICAgIDxDb2x1bW4gTmFtZT0ib2JqZWN0X3R5cGUiIFJlcXVpcmVkPSJ0cnVlIiBTaXplPSIxMDAiIFR5cGU9IlZBUkNIQVIiIC8+CiAgICAgPENvbHVtbiBOYW1lPSJvYmplY3RfaWQiIFJlcXVpcmVkPSJ0cnVlIiBUeXBlPSJJTlRFR0VSIiAvPgogICAgIDxDb2x1bW4gTmFtZT0iYWN0aW9uIiBSZXF1aXJlZD0idHJ1ZSIgU2l6ZT0iMjAwIiBUeXBlPSJWQVJDSEFSIiAvPgogICAgIDxDb2x1bW4gTmFtZT0idGl0bGUiIFJlcXVpcmVkPSJmYWxzZSIgU2l6ZT0iMjU1IiBUeXBlPSJWQVJDSEFSIiAvPgogICAgIDxDb2x1bW4gTmFtZT0iY29udGVudCIgUmVxdWlyZWQ9InRydWUiIFR5cGU9IkxPTkdCTE9CIiAvPgogICAgIDxDb2x1bW4gTmFtZT0iY3JlYXRlX3RpbWUiIFJlcXVpcmVkPSJ0cnVlIiBUeXBlPSJEQVRFIiAvPgogICAgIDxDb2x1bW4gTmFtZT0iY3JlYXRlX2J5IiBSZXF1aXJlZD0idHJ1ZSIgVHlwZT0iSU5URUdFUiIgLz4KICAgICA8Q29sdW1uIE5hbWU9ImNoYW5nZV90aW1lIiBSZXF1aXJlZD0idHJ1ZSIgVHlwZT0iREFURSIgLz4KICAgICA8Q29sdW1uIE5hbWU9ImNoYW5nZV9ieSIgUmVxdWlyZWQ9InRydWUiIFR5cGU9IklOVEVHRVIiIC8+CiAgICAgPEluZGV4IE5hbWU9ImZvcm1fZHJhZnRfb2JqZWN0X3R5cGVfb2JqZWN0X2lkX2FjdGlvbiI+CiAgICAgICAgIDxJbmRleENvbHVtbiBOYW1lPSJvYmplY3RfdHlwZSIgLz4KICAgICAgICAgPEluZGV4Q29sdW1uIE5hbWU9Im9iamVjdF9pZCIgLz4KICAgICAgICAgPEluZGV4Q29sdW1uIE5hbWU9ImFjdGlvbiIgLz4KICAgICA8L0luZGV4PgogICAgIDxGb3JlaWduS2V5IEZvcmVpZ25UYWJsZT0idXNlcnMiPgogICAgICAgICA8UmVmZXJlbmNlIExvY2FsPSJjcmVhdGVfYnkiIEZvcmVpZ249ImlkIiAvPgogICAgICAgICA8UmVmZXJlbmNlIExvY2FsPSJjaGFuZ2VfYnkiIEZvcmVpZ249ImlkIiAvPgogICAgIDwvRm9yZWlnbktleT4KPC9UYWJsZUNyZWF0ZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnT3JkZXIgb2Ygc2l6ZSB0YWdzLCBpbnZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ290b2JvLXNjaGVtYS54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpEYXRhYmFzZTo6S2V5TGVuZ3RoKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8IS0tIG9iamVjdCBuYW1lcyBmb3IgZHluYW1pYyBmaWVsZCB2YWx1ZXMgLS0+CjxUYWJsZSBOYW1lPSJ0YWJsZV9uYW1lIj4KICAgIDxDb2x1bW4gTmFtZT0iaWQiIFJlcXVpcmVkPSJ0cnVlIiBQcmltYXJ5S2V5PSJ0cnVlIiBBdXRvSW5jcmVtZW50PSJ0cnVlIiBUeXBlPSJJTlRFR0VSIi8+CiAgICA8Q29sdW1uIE5hbWU9ImNvbHVtbl9vbmUiIFJlcXVpcmVkPSJ0cnVlIiBUeXBlPSJWQVJDSEFSIiBTaXplPSIxMDAiLz4KICAgIDxDb2x1bW4gTmFtZT0iY29sdW1uX3R3byIgUmVxdWlyZWQ9InRydWUiIFNpemU9IjIwMCIgVHlwZT0iVkFSQ0hBUiIvPgogICAgPENvbHVtbiBOYW1lPSJjb2x1bW5fdGhyZWUiIFJlcXVpcmVkPSJ0cnVlIiBUeXBlPSJWQVJDSEFSIiBTaXplPSIxMDAiLz4KICAgIDxVbmlxdWUgTmFtZT0iY29sdW1uX29uZV90d29fdGhyZWUiPgogICAgICAgIDxVbmlxdWVDb2x1bW4gTmFtZT0iY29sdW1uX29uZSIvPgogICAgICAgIDxVbmlxdWVDb2x1bW4gTmFtZT0iY29sdW1uX3R3byIvPgogICAgICAgIDxVbmlxdWVDb2x1bW4gTmFtZT0iY29sdW1uX3RocmVlIi8+CiAgICA8L1VuaXF1ZT4KPC9UYWJsZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnU2l6ZSB0YWdzIGluIGtleXMsIHZhbGlkJywKICAgICAgICBGaWxlbmFtZSAgPT4gJ290b2JvLXNjaGVtYS54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpEYXRhYmFzZTo6S2V5TGVuZ3RoKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc2LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8IS0tIG9iamVjdCBuYW1lcyBmb3IgZHluYW1pYyBmaWVsZCB2YWx1ZXMgLS0+CjxUYWJsZSBOYW1lPSJ0YWJsZV9uYW1lIj4KICAgIDxDb2x1bW4gTmFtZT0iaWQiIFJlcXVpcmVkPSJ0cnVlIiBQcmltYXJ5S2V5PSJ0cnVlIiBBdXRvSW5jcmVtZW50PSJ0cnVlIiBUeXBlPSJJTlRFR0VSIi8+CiAgICA8Q29sdW1uIFR5cGU9IlZBUkNIQVIiIE5hbWU9ImNvbHVtbl9vbmUiIFJlcXVpcmVkPSJ0cnVlIiBTaXplPSIxMDAiLz4KICAgIDxDb2x1bW4gUmVxdWlyZWQ9InRydWUiIFNpemU9IjIwMCIgTmFtZT0iY29sdW1uX3R3byIgVHlwZT0iVkFSQ0hBUiIvPgogICAgPENvbHVtbiBOYW1lPSJjb2x1bW5fdGhyZWUiIFR5cGU9IlZBUkNIQVIiIFJlcXVpcmVkPSJ0cnVlIiBTaXplPSIxMDAiLz4KICAgIDxJbmRleCBOYW1lPSJjb2x1bW5fb25lX3R3b190aHJlZSI+CiAgICAgICAgPEluZGV4Q29sdW1uIE5hbWU9ImNvbHVtbl9vbmUiLz4KICAgICAgICA8SW5kZXhDb2x1bW4gTmFtZT0iY29sdW1uX3R3byIgU2l6ZT0iMTAwIi8+CiAgICAgICAgPEluZGV4Q29sdW1uIE5hbWU9ImNvbHVtbl90aHJlZSIvPgogICAgPC9VbmlxdWU+CjwvVGFibGU+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0ludGVnZXIgY29sdW1uLCB2YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdvdG9iby1zY2hlbWEueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6RGF0YWJhc2U6OktleUxlbmd0aCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPCEtLSBvYmplY3QgbmFtZXMgZm9yIGR5bmFtaWMgZmllbGQgdmFsdWVzIC0tPgo8VGFibGUgTmFtZT0idGFibGVfbmFtZSI+CiAgICA8Q29sdW1uIE5hbWU9ImlkIiBSZXF1aXJlZD0idHJ1ZSIgUHJpbWFyeUtleT0idHJ1ZSIgQXV0b0luY3JlbWVudD0idHJ1ZSIgVHlwZT0iSU5URUdFUiIvPgogICAgPENvbHVtbiBUeXBlPSJWQVJDSEFSIiBOYW1lPSJjb2x1bW5fb25lIiBSZXF1aXJlZD0idHJ1ZSIgU2l6ZT0iMzI5Ii8+CiAgICA8Q29sdW1uIFJlcXVpcmVkPSJ0cnVlIiBOYW1lPSJjb2x1bW5fdHdvIiBUeXBlPSJCSUdJTlQiLz4KICAgIDxDb2x1bW4gTmFtZT0iY29sdW1uX3RocmVlIiBSZXF1aXJlZD0idHJ1ZSIgVHlwZT0iREVDSU1BTCIgU2l6ZT0iMTAiLz4KICAgIDxJbmRleCBOYW1lPSJjb2x1bW5fb25lX3R3b190aHJlZSI+CiAgICAgICAgPEluZGV4Q29sdW1uIE5hbWU9ImNvbHVtbl9vbmUiLz4KICAgICAgICA8SW5kZXhDb2x1bW4gTmFtZT0iY29sdW1uX3R3byIvPgogICAgICAgIDxJbmRleENvbHVtbiBOYW1lPSJjb2x1bW5fdGhyZWUiLz4KICAgIDwvVW5pcXVlPgo8L1RhYmxlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdJbnRlZ2VyIGNvbHVtbiwgaW52YWxpZCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdvdG9iby1zY2hlbWEueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6RGF0YWJhc2U6OktleUxlbmd0aCldLAogICAgICAgIEZyYW1ld29yayA9PiAnNi4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPCEtLSBvYmplY3QgbmFtZXMgZm9yIGR5bmFtaWMgZmllbGQgdmFsdWVzIC0tPgo8VGFibGUgTmFtZT0idGFibGVfbmFtZSI+CiAgICA8Q29sdW1uIE5hbWU9ImlkIiBSZXF1aXJlZD0idHJ1ZSIgUHJpbWFyeUtleT0idHJ1ZSIgQXV0b0luY3JlbWVudD0idHJ1ZSIgVHlwZT0iSU5URUdFUiIvPgogICAgPENvbHVtbiBUeXBlPSJWQVJDSEFSIiBOYW1lPSJjb2x1bW5fb25lIiBSZXF1aXJlZD0idHJ1ZSIgU2l6ZT0iMzMwIi8+CiAgICA8Q29sdW1uIFJlcXVpcmVkPSJ0cnVlIiBOYW1lPSJjb2x1bW5fdHdvIiBUeXBlPSJCSUdJTlQiLz4KICAgIDxDb2x1bW4gTmFtZT0iY29sdW1uX3RocmVlIiBSZXF1aXJlZD0idHJ1ZSIgVHlwZT0iREVDSU1BTCIgU2l6ZT0iMTAiLz4KICAgIDxJbmRleCBOYW1lPSJjb2x1bW5fb25lX3R3b190aHJlZSI+CiAgICAgICAgPEluZGV4Q29sdW1uIE5hbWU9ImNvbHVtbl9vbmUiLz4KICAgICAgICA8SW5kZXhDb2x1bW4gTmFtZT0iY29sdW1uX3R3byIvPgogICAgICAgIDxJbmRleENvbHVtbiBOYW1lPSJjb2x1bW5fdGhyZWUiLz4KICAgIDwvVW5pcXVlPgo8L1RhYmxlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCik7CgokU2VsZi0+c2NyaXB0czo6dGVzdDo6T1RPQk9Db2RlUG9saWN5UGx1Z2luczo6UnVuKCBUZXN0cyA9PiBcQFRlc3RzICk7CgoxOwo=</File>
        <File Location="scripts/test/OTOBOCodePolicyPlugins/XML/Database/RequiredNameAttribute.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIHV0Zjg7Cgp1c2Ugc2NyaXB0czo6dGVzdDo6T1RPQk9Db2RlUG9saWN5UGx1Z2luczsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1VuaXF1ZSB3aXRoIG5hbWUgT1RPQk8gOCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdvdG9iby1zY2hlbWEueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6RGF0YWJhc2U6OlhTRFZhbGlkYXRvcildLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPFRhYmxlIE5hbWU9ImR5bmFtaWNfZmllbGRfb2JqX2lkX25hbWUiPgogICAgPFVuaXF1ZSBOYW1lPSJkeW5hbWljX2ZpZWxkX29iamVjdF9uYW1lIj4KICAgICAgICA8VW5pcXVlQ29sdW1uIE5hbWU9Im9iamVjdF9uYW1lIi8+CiAgICAgICAgPFVuaXF1ZUNvbHVtbiBOYW1lPSJvYmplY3RfdHlwZSIvPgogICAgPC9VbmlxdWU+CjwvVGFibGU+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1VuaXF1ZSB3aXRob3V0IG5hbWUgT1RPQk8gOCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdvdG9iby1zY2hlbWEueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6RGF0YWJhc2U6OlhTRFZhbGlkYXRvcildLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPFRhYmxlIE5hbWU9ImR5bmFtaWNfZmllbGRfb2JqX2lkX25hbWUiPgogICAgPFVuaXF1ZT4KICAgICAgICA8VW5pcXVlQ29sdW1uIE5hbWU9Im9iamVjdF9uYW1lIi8+CiAgICAgICAgPFVuaXF1ZUNvbHVtbiBOYW1lPSJvYmplY3RfdHlwZSIvPgogICAgPC9VbmlxdWU+CjwvVGFibGU+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0luZGV4IHdpdGggbmFtZSBPVE9CTyA4JywKICAgICAgICBGaWxlbmFtZSAgPT4gJ290b2JvLXNjaGVtYS54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpEYXRhYmFzZTo6WFNEVmFsaWRhdG9yKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc4LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8VGFibGUgTmFtZT0iZHluYW1pY19maWVsZF9vYmpfaWRfbmFtZSI+CiAgICA8SW5kZXggTmFtZT0iZHluYW1pY19maWVsZF9vYmplY3RfbmFtZSI+CiAgICAgICAgPEluZGV4Q29sdW1uIE5hbWU9Im9iamVjdF9uYW1lIi8+CiAgICAgICAgPEluZGV4Q29sdW1uIE5hbWU9Im9iamVjdF90eXBlIi8+CiAgICA8L0luZGV4Pgo8L1RhYmxlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdJbmRleCB3aXRob3V0IG5hbWUgT1RPQk8gOCcsCiAgICAgICAgRmlsZW5hbWUgID0+ICdvdG9iby1zY2hlbWEueG1sJywKICAgICAgICBQbHVnaW5zICAgPT4gW3F3KFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlhNTDo6RGF0YWJhc2U6OlhTRFZhbGlkYXRvcildLAogICAgICAgIEZyYW1ld29yayA9PiAnOC4wJywKICAgICAgICBTb3VyY2UgICAgPT4gPDwiRU9GIiwKPFRhYmxlIE5hbWU9ImR5bmFtaWNfZmllbGRfb2JqX2lkX25hbWUiPgogICAgPEluZGV4PgogICAgICAgIDxJbmRleENvbHVtbiBOYW1lPSJvYmplY3RfbmFtZSIvPgogICAgICAgIDxJbmRleENvbHVtbiBOYW1lPSJvYmplY3RfdHlwZSIvPgogICAgPC9JbmRleD4KPC9UYWJsZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnVW5pcXVlIHdpdGggbmFtZSBPVE9CTyA5JywKICAgICAgICBGaWxlbmFtZSAgPT4gJ290b2JvLXNjaGVtYS54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpEYXRhYmFzZTo6WFNEVmFsaWRhdG9yKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc5LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8VGFibGUgTmFtZT0iZHluYW1pY19maWVsZF9vYmpfaWRfbmFtZSI+CiAgICA8VW5pcXVlIE5hbWU9ImR5bmFtaWNfZmllbGRfb2JqZWN0X25hbWUiPgogICAgICAgIDxVbmlxdWVDb2x1bW4gTmFtZT0ib2JqZWN0X25hbWUiLz4KICAgICAgICA8VW5pcXVlQ29sdW1uIE5hbWU9Im9iamVjdF90eXBlIi8+CiAgICA8L1VuaXF1ZT4KPC9UYWJsZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnVW5pcXVlIHdpdGhvdXQgbmFtZSBPVE9CTyA5JywKICAgICAgICBGaWxlbmFtZSAgPT4gJ290b2JvLXNjaGVtYS54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpEYXRhYmFzZTo6WFNEVmFsaWRhdG9yKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc5LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8VGFibGUgTmFtZT0iZHluYW1pY19maWVsZF9vYmpfaWRfbmFtZSI+CiAgICA8VW5pcXVlPgogICAgICAgIDxVbmlxdWVDb2x1bW4gTmFtZT0ib2JqZWN0X25hbWUiLz4KICAgICAgICA8VW5pcXVlQ29sdW1uIE5hbWU9Im9iamVjdF90eXBlIi8+CiAgICA8L1VuaXF1ZT4KPC9UYWJsZT4KRU9GCiAgICAgICAgRXhjZXB0aW9uID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnSW5kZXggd2l0aCBuYW1lIE9UT0JPIDknLAogICAgICAgIEZpbGVuYW1lICA9PiAnb3RvYm8tc2NoZW1hLnhtbCcsCiAgICAgICAgUGx1Z2lucyAgID0+IFtxdyhUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpYTUw6OkRhdGFiYXNlOjpYU0RWYWxpZGF0b3IpXSwKICAgICAgICBGcmFtZXdvcmsgPT4gJzkuMCcsCiAgICAgICAgU291cmNlICAgID0+IDw8IkVPRiIsCjxUYWJsZSBOYW1lPSJkeW5hbWljX2ZpZWxkX29ial9pZF9uYW1lIj4KICAgIDxJbmRleCBOYW1lPSJkeW5hbWljX2ZpZWxkX29iamVjdF9uYW1lIj4KICAgICAgICA8SW5kZXhDb2x1bW4gTmFtZT0ib2JqZWN0X25hbWUiLz4KICAgICAgICA8SW5kZXhDb2x1bW4gTmFtZT0ib2JqZWN0X3R5cGUiLz4KICAgIDwvSW5kZXg+CjwvVGFibGU+CkVPRgogICAgICAgIEV4Y2VwdGlvbiA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ0luZGV4IHdpdGhvdXQgbmFtZSBPVE9CTyA5JywKICAgICAgICBGaWxlbmFtZSAgPT4gJ290b2JvLXNjaGVtYS54bWwnLAogICAgICAgIFBsdWdpbnMgICA9PiBbcXcoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6WE1MOjpEYXRhYmFzZTo6WFNEVmFsaWRhdG9yKV0sCiAgICAgICAgRnJhbWV3b3JrID0+ICc5LjAnLAogICAgICAgIFNvdXJjZSAgICA9PiA8PCJFT0YiLAo8VGFibGUgTmFtZT0iZHluYW1pY19maWVsZF9vYmpfaWRfbmFtZSI+CiAgICA8SW5kZXg+CiAgICAgICAgPEluZGV4Q29sdW1uIE5hbWU9Im9iamVjdF9uYW1lIi8+CiAgICAgICAgPEluZGV4Q29sdW1uIE5hbWU9Im9iamVjdF90eXBlIi8+CiAgICA8L0luZGV4Pgo8L1RhYmxlPgpFT0YKICAgICAgICBFeGNlcHRpb24gPT4gMSwKICAgIH0sCik7CgokU2VsZi0+c2NyaXB0czo6dGVzdDo6T1RPQk9Db2RlUG9saWN5UGx1Z2luczo6UnVuKCBUZXN0cyA9PiBcQFRlc3RzICk7CgoxOwo=</File>
        <File Location="doc/en/CodePolicy.pdf" Permission="644" Encode="Base64">JVBERi0xLjUKJeTw7fgKNCAwIG9iago8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9XaWR0aCA4MjgvSGVpZ2h0IDI1My9Db2xvclNwYWNlL0RldmljZUdyYXkvQml0c1BlckNvbXBvbmVudAo4L0RlY29kZVBhcm1zPDwvQml0c1BlckNvbXBvbmVudCA4L0NvbG9ycyAxL0NvbHVtbnMgODI4L1ByZWRpY3RvciAyPj4vRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aAoyNDQzPj4Kc3RyZWFtCnja7d2LddpYAgZgUkGYCqKtIGwFZisIqWCYCsJUsGwFw1QwuIJlKli5gpUrGKhgTQVZJ465AoORhB7X6PvOmXMSGzsaSf/VfWswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgF5LktEwSR7/kC3WNf3K8TSp/LOr5cN1nufZ5PxnsodsnTV5EE9XJh2s19mDW/+yUzke34S/bcf1XLflz5f89P34Gq/qMP1Y8JPb1WrV1FHkr8wmS9NMBKpdzcnk0+FlS+q4bef/vOzn70dXeLbTmxIf3i4WjZQfk38ffGGTLlNJKP/wPvZw+HVRw69+eH/hL/jH9V3P0X/LfX47XzRwFNmRZ99muVyLQwnT+YejX//XvIb201+X/oY6jiK2ouo/ZX/iblL/o+fr8S/fzqXn0uTEkp1fF7JTX+vzfHakp/BlnJ+uev+yrOEfWH+48Bf8PZOdRsKz+nTyW7/P9bud7SGYfzn9zc2ojhP4okVatrYyHshOI+F57Si205V0vH72lq88FDaTeq7V7LeLojN5kJ06y7J8bf2PV77559Sj5xWnuo/vBoOHbL2q69wlk+GJ7+z+/bv0VL3iKsccQnZuT7csRsPkoGS7ndZ8HMl08PhUTz40WnZeZX1t+bK+u02ztMUh5q919kq8yey83gGfjKd7rdGmuutHyXj8saH27lVG58XQdpND2LJTJTvfPrr42E7b78jg+OD3mZwcK2rSgzHLu2X7pYzsFHiS5GfONDtOnEynTdcSrzE6d/O0g6OQnSJhyIWn8Xv5cLBPeM5FZzNNOzkM2Sn0IMnNfnvXeFV+NnsvPMXbOp3dubJTKDtJtrudPzffIk2WN8Jz2t4swPtpZ32RslOsARNqba2cqNk8/+jR23aq9Tm4nXU3BiY7xbIT5l23M8titMq3eq5wInv19uAfMdTXZKfEfbmbFLhJ2q/U17OO6yrkas9dP5Blp2B2Qm/Bu3aOcLjKNXqucUphNfk1ix3XZWWnYHbC7Kl3bR1jfpb1FS4DqdYQ/C2eZmBfsxOuQbzZyVfbtqO14DyeknWosXU+5aKv2QlRiDc7e+H5cyI5e31s3VdjZSfi7OwNoOtr21sCHUH3iewUvCcXXzrITr5DVnfB3mMngqJEdsr2s22HbR5nrr/Agyf32IlhroXslB3fabf8zzWOPXjCYyeKAS/ZKZadUOS13L2Tq7X1/cGTK0eiuFtlp9gdGW7hzy2vTgwzH/s+JzRcg00ykJ03k50wnP1Ty7WF3K4kP/V7Zk4oReIYKZadQtkJN3D7rY5wy/R7PnWoNkcyvU92Sq59a//+DVWVfo+PhqkgkWziIDtFshM+3UWRF/bi73WlLXTXR7JP7dee1gfCXqkFLkSur6uLIiYMy/a60vY1rp6C3LDF39b9rDyfH+ocLsJodic17bDurs89baHJGcu+W8/lb+/2AXuuAZztstnb9bibDp5dAXeVbxEr3dyJZpzrqULQv62PfywtO1NmJJNpfmOJjob2w3h6jxs84SS8i+aYksd6QJr28GJMHgvxg1esTcf7VenR/hZ6tW/lXlBob/V4asGuq9PcpHgfRSc18PKqko2zPi8f/Rpbc4cX1df4ouO+2TsHlp/HfHWOR6fDVc/qK+U3mKCTq3PcZr7s6tB2w4KyIztvMTuPd+60o0fPbl5Duwvv4rw679yq8Xl4f+4TXb0DtJPNEuIS+hpl5+31FXzXzayYMC7Y2xtH8RG3vV3CYwqPCkuk2RmPs2zdw6sxHI8O3+w6PXin8bF36HbRVJWdKOtsT9O1ejhu8L0g287OPEaGo/F4f8S0i+mg6mwxFh/Pc3R7F57nOkCB7QeG01n++dPBCjSV/Vx2Ilm9kxt169kahOH/fvxhkxQq+PPvkmq/1qaPOsbxnb6ufQuXolihMVqG+dTtD1AaG41xTo411wWLsfy+6q2XfObkxDinT3aKBiG3r3rryzfNBY2x/JCdwg+R0NnVdqsjLLru8Rzi+Na+yU7xCthu6XPbe4Na+7ZXdH1eyc5by064ei2fLGuu9x6+sVRcZad4dsLyzZar3LtJqn3e6yOchU0iO28tO62/J/6HsJdcr5cbx7u3oeyUuXqtNldDlS2Wmn4nQqsvkh4T2SmRnY6mxoTNsHs9/X43FSSWcXzZqZSdVmcw7bLT83dd7x77kcwfk51K2Wm1r3j3z/b7HSK7eVSxFCHtZOfbuph0cVH/6nQ6yi78FW81O8/vCux1L9v3e2Dx7UREs4dtK9l5auxetL/Z0wucNuO6ntaVpuV2tRRgtPrWwXc/fuh5dgbD6fAhjWUJQivZee4gueDiP28lUNvASqXshA0NWm60D0fjQbYaEJU2srN76V/lOZShe7KuZmKl7OjwouXshP02KzZ2c1OY62poVMrO7n/EduK0nZ1q4UmysGizy+yE8f2+v62dtrIThuMrhSe/6qy2jTaqZCeM7/e8s5jWsrO3WW3p2y6/2rm+o6yQnTAVtG+bO9BZdnJ9u+XDk2vr1NnOqJCd0FPQ+4EWWsvOXq2tXGPhaTis7hpblezkNg31Bhhay06+yfJYbE+KVnnyr5iu9+VRpbOz7Phl1/Q0O3tdZY8337xYwb33iul6W+gls9NMowvZKdtseXz0zM7fscl8f2v1Wju3SmVn/0g8dmg1O4fhGdzNX79nh7PZ++aiUyI7yWRy0+CBIDulwzO4W5yeoTWaHb7Oo+Y7NmTn9rXGV5KMDl9o1fNFNHSQnf02w1PtZ7lKj5b00xefnNUbnQIvSDzBbGbaz85guLp58bVtmmb5l+CMRqPJy5fe1P969qrZER26yM7BIGkuGtngIRsMR0ffFfWtdjep/YatmB3RoaPsHPY6F9PEoVXLTjRLFokpOy2NlQ/nX0r+xP20iYWCVbJTdFiKfthtttjafnHjxccI7tewQ2thtzMPHY60QNqc3jidF624bReLpu7X7GOpj29X87W7hb061NNMs82k1R0UiqWnweQcGW56xSZd2SyAl2aTWjdvKlpzm/58rp2zWDV6UMP56OZceB8LlPU6yzxxiOuJN5l8Oh2c5coNC6fjMx4fKfvvszQVHDjf8BiOH/97+nM6yB5SpwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDL/B9n0iy4KZW5kc3RyZWFtCmVuZG9iago1IDAgb2JqCjw8L0NvbG9yU3BhY2UvRGV2aWNlUkdCL1NNYXNrIDQgMCBSL1R5cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDgyOC9IZWlnaHQgMjUzL0JpdHNQZXJDb21wb25lbnQKOC9EZWNvZGVQYXJtczw8L0JpdHNQZXJDb21wb25lbnQgOC9Db2xvcnMgMy9Db2x1bW5zIDgyOC9QcmVkaWN0b3IgMTU+Pi9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoCjE4NDg+PgpzdHJlYW0KeNrt3Gtu2zoQgNG48JK6/xVkT6qBAEZao7FEkeLM8Bz0133gOpRIfqJyfdu27QMAgNh+GQIAANEGAIBoAwAQbQAAiDYAAEQbAIBoAwBAtAEAINoAAEQbAACiDQBAtAEAINoAABBtAACiDQAA0QYAgGgDABBtAACINgAARBsAgGgDAEC0AQCINgAARBsAAKINAEC0AQAg2gAAEG0AAKINAADRBgAg2gAAEG0AAIg2AADRBgCAaAMAQLQBAIg2AABEGwAAog0AQLQBACDaAABEGwAAog0AANEGACDaAAAQbQAAiDYAANEGAIBoAwAQbQAAiDYAAEQbAIBoAwBAtAEAINoAAEQbAACiDQAA0QYAINoAABBtAACiDQAA0QYAgGgDABBtAACINgAARBsAgGgDAEC0AQCINgAARBsAAKINAEC0AQAg2gAAEG0AAKINAADRBgCAaAMAEG0AAIg2AADRBgCAaAMAQLQBABRzNwSF3W6/f/4Htu1zzR88rKpXBNPHzW8Zp8P9sG2bUVh5wa034fMWmyUYc8cUsJ7zAydtqy+1j3+30jzPXmzAcxYvniANq5mhK8/vtKWf1TLFSg0lbzxz4eTWYADrcdJmhTUmQOhJ7dzIAPLFSVvWRyjjAHgew64h2jDxUvI0CboNO4how2RDeoJuM4yINubNsWKJoHjAYmg1cwog2lBsum34JxedwDWrmW5LmQS+XHeFXJMC4y6EsWWRBWfQrd6w0Jl0HTcIg5mLr/yoOSHNQyCF52Ll4Kd5kff96qKNlMVm7gGpK2TP6qcz+oav8UzE77QVKTa/DgVU6g+aN4KGMXTMKdq4qNjkGqDbODmGuk20MXbOyDXAakmvDcKoijY8jAJY33Kkm24TbfSfKlY0AEZsGbpNtNFtknglCugMdJtoI0GxGS4AdLBow3wDoPI+snMrcdgm2mifGIoNgIDbE6LNlFBsAAxhTxFtmF0AlNpZHLaJNkwGAJwIINpMKgDotMU4XxBt7JoGig0AEG0A5H6y5TyHbaKNDhPAMRsAQboN0YYpBEACDttEGwC0JIIn276Mp2jD8woAINo88QB4suWqrcd1EW0AcKwMPNmyrLshyPWsA1ByaXKQA285aQv3EImdDFa7mfevjSadBU20ARYyuHoKPFrt64/JmIJzh+m8HhUH7Lo0/6xWLhZVl6DmW92ODqINJDWEvtWvyTVzELweBcBTE8ZZtAGAkgDRlotf+ACsbBZPEG0AVE5D6QaiLQrn/4C16226GXBEGwAkoNsQbQDQ6OIXBbqNZfmeNmjZKrzOZoX7fP+t/voF1KM/pDmIaAN2PdnbM3Crv3Zbl/+iboP/8XoUGjcV72hwq5/3CK/nH5cARFvu5RJXDRa5mY/WmwmIaAOAmXnk1A1E2/yHSIMA0HHBdNiGaAMAD7og2gBAt8Xj5FK0AcCobtMZiDY84gAAog0ASMXbatHmjgfAyjmftz2iDXMGABBtAMB4zjtFGwCc5R0Fog0PKwBAFHdDIOmgr9djj6Q3dpkfBOxNNThpc/fD2ND5yPn2qswPYlHFMIo2Os+Nx18xYShZbBlzR5xhb7I3BeT1qGca4ECxPf6uyYu9iSmctAEhYsiHBBBtgCRSbG4bEG0AJTZgZQCINoDoebT/I/mNH3cLiDYgvf1BE2onVmyL3HUg2gASd5uDnMhcHfjOV34Ak7fkWSclR4PAiY5ig7mctAGdHY2bKXuzYgueazsvkOvCUpy0AUO67VAVXXnk1tCIyiBsTINoA7i62y5It7YgUGxhW82lQbQBTOu2QenWfH4jC86P4bi7y0VBtAFM7rbviXBmbz7ZGbIAEG2AbmsMr7ch1etASLEFv6kMAqINYNQW2yWnrnlJpwkUGwTkKz8Ae+1fH1ITuItAtAF23E8fDz0NbbweBSaEkf8VERcIjnLSBjaSOUMXZ/Rcx8iD4IANnpy0AZNDYeKpmxoQkZDIbds2owDvp8pLWNhURo+wJih/FVwXEG2AaNAEQDVejwKBPKOqb71pNUC0AYytt7aGU2mAaAOY33AAC/KVHwAAog0AANEGACDaAAAQbQAAiDYAANEGAIBoAwBAtAEAiDYAAEQbAIBoAwBAtAEAINoAAEQbAACiDQAA0QYAINoAABBtAACINgAA0QYAgGgDABBtAACINgAARBsAgGgDAEC0AQAg2gAARBsAAKINAEC0AQAg2gAAEG0AAKINAADRBgCAaAMAEG0AAIg2AABEGwCAaAMAQLQBAIg2AABEGwAAog0AQLQBACDaAAAQbQAAog0AANEGACDaAAAQbQAAiDYAANEGAIBoAwBAtAEAiDYAAEQbAACiDQBAtAEAINoAAEQbAACiDQAA0QYAINoAABBtAACINgAA0QYAgGgDABBtAACINgAARBsAgGgDAEC0AQAg2gAARBsAAKINAADRBgAg2gAAEG0AAKINAIBI/gCkqoRBCmVuZHN0cmVhbQplbmRvYmoKOCAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDMwNT4+CnN0cmVhbQp42nWRyU7EMAyG7zyFXyAe21ktVT0gFsFtRG+IQ2facqFCc+L1cdJhE6DGSmzH3283cAIGso8hiy2C42rerdnzv/sJUDV5eDPPKYYUYYWQyofzAg+w/6OKtaBJeG2KiarDApIUxYpzxhRTbWB3txJcvRrkcoDdDYMEzCUzDAt4b9dCBMfsMYrAMD12RMLEFcfZbCYaU8/UbbF4IA7e4kQ8hf5puG9QzigcQ4VywSQZnGQsGs/IUfvYNZoRNhrPvfOWWow28uZLqZn5aHYgkaWd275Q03Je0Re1joMgBf2Jrw2OE7GfNylVQ2a1C0WIDlztLGK1vWOrSYGYFqJIX8MwaoxShymMEtmGiWS6fJYr0rvSbT9hnD7bNuUlWLvj94gNsmW48a+HX4+5v3gHKKN9eAplbmRzdHJlYW0KZW5kb2JqCjEyIDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzQ+PgpzdHJlYW0KeNpTKFQwVDAAQkMFcyMgMlBIzgXy3IE4nSAdyAUAh+oMRwplbmRzdHJlYW0KZW5kb2JqCjI3IDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNzAwPj4Kc3RyZWFtCnja7ZhLb9swDMfv+xT6AtZIkXoQCHwYsBXYrVtuww5pbO+yHrrLvv4o2/FDTZCizU412kayUvAh8+c/ZfNk0ID+oIlOf8EcH/XqTv9+PRs/7c3HL2iQLXFwZt8ZEmedeFPFaCOI2Tc/dgAOAZIDiAHgoQUgnOcPWP/cfzWf9wasg6SfFFk/OQXz7e7M4p/Jr1gJLmS3YCqMYsmlwSO2x7pCpJCdp7pKuoQt4AF1BEARQCYdg641w1xzxRCmYNYpzq40UZueuWtvk4SGYB37k9WmriTwLm8SYMO17IYUDk3tx4wC15WL+QuR2uG4KgnwwY856rqb/nsc+7x1iwaLL0rakSsD7OCVadPCtlaPMKtpJOumzMG5bryNPkcJnOo0ZImaDXQ0Z3Nsh7uX76pPZ5NZOpRoOdLKoTqrKxYZZx5gm72v2bWiyQR4wnWZLur/9GS8AQfOW/ShJCHT6pJiD4dQ80hAfpZpxZ8uKdYOpkfddRDAhpQKjxe3asNjg+IiFKua/T9YULSIWGLRKhZEWRG0mUBqZ83rtTCCY+51vgckK0TW+6ZXTTfKadYOCnVFu0EVOTN0VMsnrmZpvbolyBpvKOPdAHoPEKwq9M0QlK2hFwtO5oazkqgNERx9/6zPLe5JA/qu7kKtll0d9ZGvbHfull1dBCuJp7CXfV0IY2vb61UztKwSru64miTyhe0NsW12O6ATSVm7CyxuA7QelQWmE49GGCXrGKheQTeoUgZCFeklIHsuTXZ8Q44J2CYfp2iXHBMMZ/zxCN2zPLWnF8Jf+kikUZc+Np632evYZcGyXhco3K4jJQw2oSuR6A9qkqWtaeY3L33niVffNJ3FYulnw2KbvQWLVc2ewWIcn4wlSd78zUoVgreR2DyqnTRf/jbfzf05MfI2sMpniNGmdHpFylT6uv/wD6PJ8pIKZW5kc3RyZWFtCmVuZG9iagozMCAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDExMD4+CnN0cmVhbQp42lMoVDBUMABCQwVzIyAyUEjOBfLcgTgdJ12ooGdsaWGqUA7k6ZqZmeqZG5so5CqYmFkguDkKwQqBCk4hCvpuhgqWepZmRmYKIWlgDebmehYWFgohKdE2BoYmxiBsFxvipeAaArchkAsAV8Qf1QplbmRzdHJlYW0KZW5kb2JqCjMzIDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjU4Pj4Kc3RyZWFtCnjaZZDLTsNADEX3fMX9gUxtjzMPKcoC8RDsKrJDLJI26YYIdcXv40xoWoESy3M9c2T74gwG2ceIYj/hMJt6tjht+b7D7omRXQ4S0E3wWjsVSHKaPbrje0MkTGw8c7QYifrQMjVrrR6I1VudiI9KIn1bScxG9bnVpgD2aAV4bCtvV5MBPa9a0nIzHiwGw6dyLnmi9qN7xWOHM5zPqca3zSzqIkXM0JAu4hNv2G872d45ORvO57J/oEWwgL26oKhKYXFj9zITHr5u2L/5tnMVQu2i19/em1y7/3NyAWJ0KaWrjZSEKAaiwWz0fD0PXHbVoM5HNbYgZsXFgstA+7sfo8VnPgplbmRzdHJlYW0KZW5kb2JqCjM2IDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjIzPj4Kc3RyZWFtCnjabVAxbsMwDNz7Cn7A6pGSRQkwNBRoC3QL6q3oYMd2lmbIlO+HkWu3QAuJII/HA46kCzHBHpOKfdDxbOjV4rTnp54eX5iyy1Ei9Ys1JbmQPfXTRwcIg03KrBYzMMSSu7XVjuDgrQ3wFCAylEbUWAy5hK7O21Bh1Lo03qjFBAOvWNKdmY8Wo8mXWte8oHz2b/Tc04Wcz6ml691YcAqlM4WYNvBF73T4s9VvVRNj69SHb90OV+U/+zdR1aWU1gvwPFUvgVsXRI3fD4MkgEZgtMN4/qlH3uxvhg4PN/VUWB0KZW5kc3RyZWFtCmVuZG9iagozOSAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDI5Nz4+CnN0cmVhbQp42nWRO08DMQyAd36F/8AFPxInlqobkACJreI2xHBHr13o0Im/j9N7cAWRh2Jbsf3ZhgsQoG+CzH4QPs6uPfs9/XkvEMxU4Mu1xkLUBGeIWhblE15hDw8d3D8RWDBlhe4IkSVEydBwDsUSdIe3HSITYkJfEbFXxGFEFLf11r53L9cQFINE5RrDRePoISQY0RyiMGLW6nZ1eexuCZUDa14QZ+2GcZNAcgqkCg2hBl0Yy8Q00MTbmzOnH94qTxAzs2zKbtaQKYdc4grdku2qf8s4F+Gn2r1BvEPyROSTIMp+x2oVt1pBGjzfUZDSgBT97Q9Ih7j8qH4yVp9JTqWNbu4JmY9LhzazFCtp7pSmkCWurZrV/+bpray/so+zlKksGsffGfZ33yw2gv8KZW5kc3RyZWFtCmVuZG9iago0MiAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDI0OD4+CnN0cmVhbQp42m1Qu24DIRDs8xX7A5BdHgtIJ4pITqR0VuiiFGffkSYuXOX3vQecZSkRrPY1g5iBKxCgHIJg5CKcL9K9SXzf80uB51eCpBMbhlJlaKJ2yUJZPidEQ0hCJQoSK+LMOU195E9IzsoYkRaHxsxZmSBbnFN2U8MLKBO2OisrqyqEmXpv4rZZzxInoddWt1wxf5V3OBS4grYpevjdPuZ0wAAXcBz35gc+4PhH1SNLMXsdrBu8e9uZ/+hXHIKOMXYHaK3tL9YnzWILPhhj1y4osYhash+aUxpGDD1ZsXcbJWYVB6Z5gBu2m9if6PVmLvPuwK7p+HQDIxlnGgplbmRzdHJlYW0KZW5kb2JqCjQ1IDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNDgzPj4Kc3RyZWFtCnjatZQ9b9swEIb3/gr+AbF3vOMXEHAo0AbollZb0cGW5CzNkC79+31JUUksJ0AGxzZNH0Xfx8OXZx4NG8KbTXT4kJkeYN1i3F/Mj8bmHMT8gzVkq8GbB6MhbcYf89PcmS+j+fyNTbY5uGDGk1EnViWawUWbsjfj/OuGyDGRJ7yU6BCIjguRYO2Qy+/xe3PBakWDqz6YLWWBC7GZubs4LmVgwo95KYopufbXr+N5psFZF+KWarfOcn0RSIhsSmzgONiwBeLCNcCixflmP+cbtaCwfFMz7xUkogmlef+8FrXPvVJ47Kk+QbYMXITkBN8S2Py4fWXx7/0rSaNIjuvzljAvMzl3wjxdhLlCOBxC8HEXkzQVUOCcCzuYJyEOSswL8YQBbeEZsU/7lFoAeSEYlONwDJtjHCvn9bgdNRvqobYO8q6WO2Ect5LXeZYrE3aSbaQLwvOHEA7Yp7uYuCZN5pUspFRJbqbEhqbBPvC7AIdos/bL6FSvDEsoWq9xD2v5EFje5grrLGa9ZSwYKk2TruoEgkWpsMOKrerxMEMr2x0GvFWpEsog1Z7LoJXshF6z0a7uuNF+D2kRb2PmN0mjV0lOvveqgM2iT82qm2911trMxGFfRGtNqeM+0T7G3af/LhtI1AplbmRzdHJlYW0KZW5kb2JqCjQ4IDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjY1Pj4Kc3RyZWFtCnjabZC7TsQwEEV7vmJ+wGbGb0uRCyRAolvhDlEkm3gbttiK32dsx2ElUGyN53Ed3wM3IED+CLzihXC+cvbK+3LEpwyPLwRRRqcc5MJFFaSJGvL6MSEqQmIpkee9Ic4uxamX7IJkNJcRaTWo1JyE8tzFOSYztXkeSoTtnITmVmHBTD1XoXa2M++F5aWdWyyYPvMbPGe4gdQxWPiuDzPSo4crGBdG8gXvcPrj6l4lnLPSa7PrjrQr//EvnPcyhNAJUKH2Fo1RBs3tXy56636iY09rsrvlGHcOtK3VThLOMg5cqHJq+CqBO4UzQ8FaReOegLTYzrjW1TG9x/5bQf3GQWwwOD38AKP5cnIKZW5kc3RyZWFtCmVuZG9iago1MSAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDI4Mj4+CnN0cmVhbQp42q2SO0/DMBDHdz7FfYGYe9jnnIQyIEEltkI2xJCmSRc6lIWvzzlNqz434jj2Of77dw/DDgjQG0FmfxH6rVsL75urcQfBTAV+3aosRE2whaj1wfiGD1jCcwuPrwQWTFmhHSGyhCgZKs6htgTt+vMJkQkxoT8RsVPE1YAovtZZ89W+TUdQDBKVyxkVuVyCEc3ysr3IO9vLhCbZS3vupXJgzQc3Z+vMzxNIZA6UfR+hBp1BfWqs8Ki42iSfRjvFHZMUyMNFB4h/RQneFzcWfzY3wO4o5f3/CUrDgMyjj/0V5h9wpR5JL5glQqIBqVsjrRKS6T22Z1isTnOGNYUs8Zji2bx3F7wEIl5MzX4Z6nqOd+RL1vLhD9oaj08KZW5kc3RyZWFtCmVuZG9iago1NCAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDI0ND4+CnN0cmVhbQp42m1Qu04EMQzs+Qr/QIKdd6RVCqQDie5EOkSxt5vQcMVV/P45jzuQQInl2OOJPAMXIEA+BF7xRdjOXL1wfN7zU4bHZ4Ioo1MOcuWmCtJEDXl/XxAVITGVyHMUxNWluIyWPSEZzW1E2g0qtSahPKO4xmSWPs9DibC/k9AMVSasNGoVGlI2jhPTa3/3XDF95Fc4ZLiA1DFY+G6LGenRwxmMC7fiC97g+EfVb5ZwzkqvzeTdy8H8R79w3ssQwnCAqu676KDan4z/GKPLEBQdi9qTnZpjnEZQKU1PEs6yH7jZpj2JMH3QPlEc3ky1t/2PD1c11WMMCmVuZHN0cmVhbQplbmRvYmoKNTkgMCBvYmoKPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA1ODU+PgpzdHJlYW0KeNq1Vctu2zAQvPcr+ANmd7kkRQKGDgXaAL2l9a3owbKkXJJDcsnvZ5aiFFuWgaJIbK8pktLMzj5E82zYEL5sGocfmdMTZnewh6vx2dico5hXzHbZ+hjMk/ExzZNH89vcm28H8/UHm2xzdNEcRuOdWC+N2bnGphzMof+zJ3JMFAgfT3SMRN1AJFg75vbv4WeBYG/FR6cYwTYNA0FsZq4IPrUZQ3JEp7A8+P1w6Wd01sVmdrTOLjw9o/EMJcGZHVO0sfKoh+BYiLphJloCZBlSCdCCf4lsft1tLL48bFDCRW6m/ULHw0jOjRhPVzQfQOci7vMrTk0GI/kcI/GxJxqFGLnA9U0f6lgY5Czb0IM4Wcm5YiMvYT/BA5plADQs5xYFITWBHavNKz7DFU9Mo9bILRc2qSGVfVOpUU+KU+R4WOgQ2qVMECvWiHnJGrGUpjCuF182mIRsDGFFt0gDDUyLU1W7dJzVL4GAsLKleUYm8NR/xfmiofqhZb+fPKDxg4SiXALxiqoI1VyqZS0ZVjpyEootuV5L1Rw07jPKWqMRs20krbuo/5QuSjZkt+Kkvm+d7OfyLmGpkrWz1n5sZVS0c6JfXjylhrrw3jkKBWhN7k6iTO3lb7aX+5f2mlaRuHlfdbibOs7I8Y6CdfP7ahrHDUSXpiZEC0wlWp0rkBLrbeq04/3cRC1TvVchyuNc9qoDijT0xYEyjqhC79+dKte67tehxwEhOYV6QEQcLuKXE6JObx1mOEEC3p+xQUOkudquKe6/vAEwzZujCmVuZHN0cmVhbQplbmRvYmoKMTA5IDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNDc3Pj4Kc3RyZWFtCnjaXZNPi6NAEMXvfoo+zrIM2q12RwiC2go57N9MYK9GO1nZSSutOeTbr9brGYYREvhZZdV7RVVYHfTBDgsLf7qxO5qFXQbbOzOPd9cZdjbXwQZcsH7oFk/0393aKQirb+30vb0ZFp5q/acuvv66D92/ubX9czm+9s+nl4ZL1psLUl8ek2HC80EfH/Nibgd7Gdl+HzAW/l4rz4t7sKeiH8/my/buh+uNG+yVPZ2qI7053qfp1dyMXVgU5DmV49DWjb2Zp7YzrrVXE+yj9cnZvlmfPDC2/xRPYnx2vnR/W0fpyZq+/vN8IxGBBIiDYtAOlBDFPpYSJT4mQRlIEaW+5g6UgjIi5btrkATVRDsBaogKxNZiROiXQnWBfilUl1CWQnVZg6C6QvcUqrUGQbX2mVBdQ1kKnU1MJKkfjxoQ9eMc/mQMUqAEhJqS+vEYHqQE+UwF8pk0JZ74ftSdp3ArS1AJqogkdEoN8h1oglxhgpImyDPEVARCTQVHGSao4KjABBUcFZiSgqMSE1RwVEG1ggcNLSqj1fM7xt827m1DeU0GeIPsOPLZiH9eUCEKShNkVwiMXpBBkaCE0B8bblu/3er7qXZ359bboYOmq9wOaLDm/eancdq+ot9/1ZUD1gplbmRzdHJlYW0KZW5kb2JqCjExMCAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDQ3ND4+CnN0cmVhbQp42l2T3W6jMBCF73kKX3ZVVWAb7CBFSPwEbaT9T/sABJwsamOQgYu8/cIct1oVKUgfM/acM5kJy2N1tP3Mwl9uaE9mZpfeds5Mw+Jaw87m2tuAC9b17eyJ3u2tGYOw/N6MP5qbYeG3Q1FXXx9/L337OjW2e/pjrstb455enmuuWGcuyH6+j4YJz8fqdJ9mczvay8D2+4CxcD3WT7O7s4e8G87my/btp+uM6+2VPbyUJ/pyWsbxzdyMnVkUZBldxyGvHTozjU1rXGOvJthH65Oxfb0+WWBs9ykuUxw7X9q/jaP0eE1f3zzbSEQgAeIgCdqBYiLpYwlR7GMKlII0UeLv3BHtBKgmyhXRmkKEcwmqF6iQoHpxAKF6VYFQr/Ix1KslkSJHPKpBdCfn0KIkSINiEG5R5IhLKFMK5DM1yGeSIx77eilRgk6oAlSASiKFXqsK5CsciDT6oqgvPEVMRyDcqeEoRZc0HOXokoajHH3RcFQkIDgqoVrDQwXVGh4qKNPwUINkSiPkZ4W/T877pPEDmeM1lMvIZyOefBo0ISBb5hkR/hZB5oWEUEHmRYzygtokdjkGJvpfzDbZ20p+bGS7OLfuB+0tbd62JL01H6s9DuN2in7/ALq1/4gKZW5kc3RyZWFtCmVuZG9iagoxMTMgMCBvYmoKPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAxMz4+CnN0cmVhbQp42qv/Tx3wAwBey0gxCmVuZHN0cmVhbQplbmRvYmoKMTE0IDAgb2JqCjw8L0xlbmd0aDEgMTg0MzEvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA4ODAwPj4Kc3RyZWFtCnjazXwJdBvHlWBVNdAAwQPEfQMNNA6SAE+QICVSIkjwEinJ1E3IkkiKlGhbp3VZVmzJsZPYUTzJzIvHmYyTOJcynrwZpyk7tmPLVw4/Z2bfeL0vk03snZ1dr9+sPS/zZpPZsScbC9z/qxsgSFGy5XG8ixK6f1f9rvpX/f+rChShhJBKchcRSMsNW5rb8qPf6ICaS/Cdmjl1QurpFqYIoX54/pP9R+cOnZo9dwaeHyek2jl38Pb9b37jJjMhNf+BkLrxm/ZNz9Ij048Q0on4mZugwrBG7IfnrfAcvenQidP3ZE3fgefThBh/dfDIzPTbv/lXhZDsLCG6+w9Nnz4qPFiziZCB/wX40uHpQ/tO6dZPEzJYSwgbPXps39FVmY1HCBneBe3fIjrWyS4RPbSdZxNQM6be6R7SRpELYiTqRyIEqCRUeyTj+wdnydcJ+R0T3loQYeyHabNE6BexjQnsEn9FIO/3OQ3lMDmM+OxNVk3IQpfu4cKr7KWFd+A5vPCO+lzEI3+2sGpJ/fPLnov9/Yz8YEl/6nMJTyEpSSHbJgbzkjT2FKnZNKaIW3ZOKO0+pS4/tV86v21CYbHpHxiB/5kZea8vHFZIXiE5eeAiyCA31d+o0JQiTe1vVFhKmpWUF8YVXXznxTpqyg3ODCri4ERYEWL5zTdOhOWw7/yEpIyPQ1U275OULoS68nlpXsWenlXqoEp7kpQWbG9BzBfGJySg5vy0pJjGJ6agRsI2E0IZhDJTvql8Pu9TaDKflxUyPrEvn29UhJQE/ehi00CZPjc+oejlfkWU+4GPvEKnGhVdSga6pNl5/d5+CVuQYp9KAV4VYWpwRhEawtCYk85L52GA+RZ9DJjcNDE17pvenJ+Q8+G8pGS3TECbD1nTxm9U9CnFkEteJEyVlAiPcr8MEpf7pxW2d79CZ4AKRd/QqBhSEpJamZt5Skf2StiDkp3KI8rUACfVmLpoqCS5wf6GcEn2FamlujCpvdAkkJADvqekwfPyNOqFy4v4UKaK5AMii1SCduTpAXWIyqu8rkThLeJbZK38paoUZ+hipUkAZfvkcL4h3KhUp+YZG1RmpwcalZoUIEqSUpUbxdcBkPvzSjU+bYananhqVMzQTS0XiQQSmIFxlZrclHR+SlJqQGiNSm1qbOvEvG52IB9VqvfJpxsVS2ps08TYFrXSF4Z6G6+3puaJObdtYt5szil0ul8xJ9FmwZL756vwUg0XhTpBE0JsfGIehQfc9p8H/eKwDWEZXivCPrUdX4GpgDV54GQY6B+G2qWquooC5wmxySCtnELWXqSUcl3ZUmSesMGtE4pZ7pcGlUowPpMMBtcvTcHw37dYKKkh/f3np+atYlL5bNIXATHZgTdbslFxpOYp3p0gZ7y7UvMC3t2peR3ePal5Pd69qXkR777UvAHv/tS8Ee+B1HwF3utTclHuijgFEpalJoXuxgnSqDSUNTpLjbeqjcmyxnip8ZjaGEwRpTr5IfgLAX9BoEsC/vAeBv7wHgH+8C4Df3iPAn94jwF/eI8Df3hPAH94rwP+8J5KST3cTBtTMKxlSsqBbqdyXJUw9VJoq00ppTGpNMIsbIYJMCxdRYvydJeMHvGaGD7kvqWkWupUmhvm9dQxOAGODBlsLZfMlc1tKamD05sGPDp45SAwO1ccHOuJ83EeTQbWyl3zbdSBzLWDAIDilQmGWTHd1ah0pJpcPY1K5v1QwYJnAL0TdEKcMalJGsaZD7Jcd/78sDwMrmICQgR4VnAHGUoddhBpF7gop1ILaDrwmjGOplTkkvvON8mS1HMe+lu1FEVqUvtSdFADmJIyhU4ju2niMSYJku8xFhe8+X50pEbwyTLHlodgCueWz8cpdGZq3GC5qVmwvtz0LDSz3LQP4Cl0ZMvfmQaywL3LQ6BMGUYYAv7gxkeB/lYYRFZdpg68BChBD5alv6JX6BE5inEi4DquusrFsUD3q4tykKBWH9fkIPeAiLpLTYqRtw/Jwzgoaq+nJD5kRpMw2TrRJPVAyEXqtUoJ6SqqQIzB07ry6K4qbyWz1jQlo22vKaMkV1TVFKYAy1kuqnctOIomlOKQUpubGPdByJR68k3zTdQOE7R3Setm3/iS1uyK717rjb6U0pW81oD9KWVV8jzQhvYFTF0VFRTapDTBGznOMtpmUSdoljJMliaYZ2qvA+B3IIQUEa/DiIc/KrtFLtBF9cjghcosJJzXaBwE39qVLMphCJ5WJcOyJgmNkxLTw8C0Q53gkF7AXLY1Ke0wn0euUr8OuqN2m9IB8GhK6YTbGMptEAQsDUEsLUpqfQpNWBkDcEPqIjgrADYCQBG4IXWR8ppxAHjNJsQZBGAz4iCwBXEQ2Io4CGxLPQZerw+g7QBRDu1IPUbVugmA1Lo84lGEdiIeh25EPA7tQjwO7cYxcwDswTERmMQxEZjCMRGYRpwhAPYiDgIziIPALOIgsI/T1Q/Qfk4XQnOcLoRu4nQhdDOnC6FbOF0IHeB0IXSQ04XQIZDx6pICD/MnZS2AR1SwF8CjKHT+lIWnWyGMajjHVBBxjnMcquGcgJe7S72e5E/8jVMqiG/cpoKIfhr60RBuV0FEOKOCiPAJwO0p9XcHf+Lod6ogop9VQUQ/B29qCHepICJ8UgUR4W7AXVPq7x7+xNE/pYKI/mkVRPTPwJsawr0qiAj3qSAifDb1WIWOFZPV/qRi3KcI0fHTxTjcCDoTSB2sxCRYj1USJwkT05NBV22VSISWpDUdbnNY7HI40mHJiC7qzHRY2uUwg+pMgsZFh6VOphdlubBRbmeMfp3p9IW9Hj39qsBYYZrp2CX58nlZZqf0Onb5zwWqY9v1l+/SMbYD4MvfxbXlaqDgInORalI3psTHJ7KVYBSuMah1kPU+/kQm1af847EwMziTGVGOxIGQTLrN6bBcjHi9EfzKsuylX/XCtTCDmQFdGGcTC3/DXoG+4/Pi7EDWR7C3Hdg2yQCiNwBYTapigsGRnBfJAIt3dKjdOuyi/IA/GJb9AZlNOP02vxMuAQcudYlp4XfsJPsh8ZIAiWUjAaoT6CjRATc6up8Ign2MUU6x3S3bZL3Bk4xif5F4IhE2iJz69k5bJuNqc7pssXSCnYw4rQFje+Hn7YaAxesTfmuU7NaQ4Z3CzS/v66v0hp2228/YHH53hYlttzuZw3b5iR/+I+G6A0mxOdCdjfhJjHRk22wqNQLR6QXdPgJq2Q1c28dEqteT3aokA4FALBBNhIEOA1BHnEheUajpNngyxOOy7Ei3ZTpYpqOdwyyau2/Pb1G+7z2XrGuuj114JNhY27G28S8fp0e2D9y2R/ayfq98sXHQ/uX6r9RFCufaWrqjL4JU6mBlv429SBKkJQsWRwVKhLNEYFRgdwBt+kmi19vHgFTdJNHpArr18UQkFomKBm+SOOwGEFgiLkdE0WF3pts6QT8uJBjr48BBBivYVnOtx2JpXTV0U9e5uTWN1hqv1Vxr3jix99t7d397Lr+enZcddkeFq/vA4KkzLqPT5qz1GhJbvnl8/zdvTIBOUY7fAjnWEg9JZeu53HQUBaenglAUnMVCiMVjcbscgFiTEcFuiBOJKROfVRWYJU3/9t7h4Xv3/DOK7J/Hd96Yv3CBXdr98N69D+9WRXX5yU/v3//pQgPOAxzfDuNLpDmburb2+D5LKBqOqtqLcu2FteHDbeqjI60CsiNMf41zYh7JoDd45Yiv8Os38PYGNR+XXR5JJSbs9YS+i5cfkCI9JqDHR+qzcaxhhO7TU51O2M0tHEhzMCTFR7wdcjQsGtxJ2+Kg9tIc1Qh6+Rc4/i9iHj+SMYgPbJ0S9jojbyMtKgXOCB8b7eVz7CXSTNZmu+NUpwd7ZoIoMPGsgYpErxP1+4AIOgmi8Y+ByXAPEeCSaSaNchzsIm5E68GJvMROuLLK7AkMKtPZwWckqI7dHAntPTnzyN69j8zMrDObw26zNbM6e7C392DWn3XvQaq/Tc/I3p/JtjXTF/buvTBdZ/SaPTGjq+9wH/wzGe9GV6TJ71MgvxBJZKOab9gn6lmZdwBqQyRoi8m2mDYLLarYOsJl8kNnFEbq2N5I1O+JFl6Me3wyQrQ37mGXIr7LzyFdb7/NZdqP13/4B6+s0kBeBhqqiS1by81INaCV3OjLxV7lUi+Xn9P4eIs9C74lnpXD1hqTjjA6qgMHz+xjtMRIjERjTTG9wVXGhgV8XUKMJwRLOTcuG3i+NPtRLOL3yxdM3ppqr+mC5PVIMa85aHztvxl9NexZGPxZNAv6xfeqzJSaq6i+MOuLAGU5T9RcVZinN1SZS3b6APAYINFs2GNiK1IXIP5YfCl1CbqUKop3diooe2t8YuGPQh43gOaAgR4MudklyX35B165wkj/U2GbW5LcbNgrV5kKLfRRt8S3P7nNvgI2awadhrJ+nLmaeYL30MwTrDKig3kSFctMEiyyiZVZI3jcVyYemp5+aMcOvE7cnZnqWTPZ0TG5pmcq87sLU1MXZmb4NXco23s4lzvcmz2UU2lAWaRBFnagATytSHUgIR3BucJ26ynKBNNYut4BccwRcgQDPsC1ynEDmEPJj5XZHvgydGbc/dOHd3V17Uo/iqqSvW/aYi5XzPboo+zSmrk1PTeteZZrB+ymoEhpvz8d+ruiXLqEKpBLhgyR0exwvZvpRTpqpHoRZrHuLKgLXctZIsJNpHPEYBAmgd7Fae1BDeb6uldBFx2NqWg0VgGTRacSC3qM41QuRdXOJlYSKyAAY06XOsnXsjTRBNweV6c/eyuam45nx+IeyVlVW13ttLhleWbj6X5V8rnbN65xJTyhpoAnahHddtPl/6xqQdWIP+oMdEgep7kax4m5EtUxy74HtqvK2f7APotLqK2x1Jpr9DYT7eRqUlWm6mphgd0PuqojaZLJpsMQBmMoilHw9GDWerqPlHyt5i/q6+vT9W2tzR1yDByGmzt+NTiqEXqJz+UREnh3gADYohbZneYqc8htH2lOPRNwB5Lgi6X2XZ2ZZK8o6Iw1z0Sczoj19dd3emusZmtl/dloww+Liu3au6Zt0p8arTWHfAaqi6wK+5v9/6PorxtBx5wTIuiITgCNounRO4ALNgmzwT/GIz3GsYAe52SatMnxBrQ9T9IZT3AH3KbqCohNFGeHq+iwUWUwRVxBxjX/5tFWX8RtM9etb+/aNL7j9f5jQ71HYoGIy1zl3R3rHRxev32uffjUgCmadAdcclU42BZrTFdLf9G7uzUecgVdcoVDbo4nUzXm5k253sk08BEExWwFnUAWnA2i0AVIAXiw47MGiHYSuyxHNUeCga7oRLQIEmZtkYjvq3G/P/pVlBu9BL7D6w1d/t/cOVfh5CGq34Ic8hT41RCOBQ6Le2fGirmuGhvAYSw6LdVnFP110Vlwt7VdGjq7adO5oajfHW0Yrk+ONQa97FkI9A9uuWtk5K4t9BaeFj/YMlZXN9ZCb/GpcRb5vY89D1MMaHCA9dFR8JyLcYLPPncioePuAYxNACLi4NBVZRVd+UxMfLdCsloCxnf1dQ5L0PjTp4xBC3su4q6uufyczU5tVjZgMvvCdlshQX9ptePYtSDdh2HserLhyVigSiCQtI4pAVgA2GCxwF2VIISKPtyXdUK+CEkAOau1ag35bDVQWU/qwGISmIMU6TSAaxBWoteV0egWTtULPxGDVqtU8fkvAP3WoPgTod5jl8Q/vtsYtNkCxk88IIbt7PmYv6Ly8iWLHZb8NFd4FhiyW9hAZYU/5rAWemiX1QHmYS38NX3R6uByhSSRDXK5BrJemwmoBskyuijYaB0sOUCvBqE4aTUSXa5Orl42WPlqxO2R/6O13uV3KBccAXeUHbIU/pbbEWXU7nZ5Zf+//DoY9ap+VoY52MTCkI4lyOeyJhestSrAjTAQqguE6uHzUMTAGBozYDI5WRStuuwKlCMglRyLx7AABfkHISNluh0cQTXSJQj5fNbu9xPiT/jjEQmTwng0ZlwScJcEPRfPaHimzKd1mlXhIi5MPduaB4/2ZY/kWrYGIt7Pbt7cl928qY+FwZjzkBF4A/XDZ8fHzw3LPgqxJjc5MjI1NTIyyWXQBzJYz96ElVAd2Z81eWAlZNJkoLLImBPjigBuCI1rUQ4BNDEf1PK8e44jLmkF9gIBgOoCCTkMA/hisbjKXikQLcvZgE1rGX/0IZWrbf7ietW9vbkVWOsDFllYZSrhF3kyfAK1/GqwsZBD3pBHblegY/pPoOMEmVU5iq20mEIXGypfTfmy8jK8YoyZK8PKZ2tgkASJxyDERheXhaCzkvOF1ReE0bYiy6oy6bmbvI5au63ClKga27Y91+oWHdZqT6BrV/uGk9nc6fUs3JFyhivMer1x99jIZJVgNkoed4Nn5NzGTWeHS7b7JrfdB6603QBqiyuOR5KV7Te8HGkFGw7BWGjFcxrux23Eb0Ku/uBSI/4xrALvWjRiVRZh0LEEsphTWYtDNYVE6Sw/tNeTfbAIErnaQhiZeL4UEIC/aAlRByiwTJorvlGGls+aw+EwrP0d8Xg0EubLJFgvquFE9T52w7IENWoId4ANMCnqLjxRtT1T3+TTW2sdQb9/T8vWOwdGTuX6Tw4VvuCgom60GeJKd85sESqCdp/TJQ19YsP2uwdHzgw/dMjQ0FOMO1QBfTeQPxhTfMBh0Ghgosj3AZxjAsUtHx1o16WtMn1FaxcNxCCSs0ZqMFwdGaxdw4NqaAeZzJW9oWKBqiECAQX1dhmWPFG5wuADOThKK9hlgT2t7QupVhCXqeS/ERcCN+JMziCUmZuOdfrt+krRXcvOJFzNIbc7VPga99d7EW4a2xMMuSGvEFU9d7Eu0HOSdJLPZGsSIDoPFQyVoD9B81cNMGmZQBkkx6BuIxguKLyCahlyoJQueNB51RWREQ8EAMpfGTWfdaZShKQ6U5m2Fhi+IR6T62Km8gUoJl+dmcV0rON9rN4Z+dKJ4M3OVkEMWEwVuhtjo+uc+fTQ8f6+WwfTE76I9/5t23K5rVtz3I3nzpy0mxwxQ4XTJVC5O9MSalNnQ0OwcplLx/1tEFYF2EqEbPx+iFId1YTjInwKQ80k7kqEikmyL+vQU3W5PcdRWHmiECHhGHy0RKG0AuScWK7w3/TZ9ajeZKart+i0fVvSLHz7gQXC9Uo6e3NpFWY8xfq7aHphATRKyPfZKyTCfzsjgLb/Z2mtagFewqQvWyG5jAadmvUgPxY1OAmCazHnKdWVnF3+CYg7Ml9DqmlxwrA07FiKM9jgYpaE02t9vLVI+s9tHqfs/tL3tnk8EftzjTcvUl34/Cu2mM3t+NxzpEgn+RHQWdw3cF5j3+BHstcT4d9Sd5cfVPUm5MG+O8gd2cpGiEt0tA3m6jrVpTtx3uonjQZR0OtdY5DSlftyL8FKRBEnuWcILWJk3VgDbQRXixgHik3alO4g7TH1w6f0VbV8FZ23uTA1rF6i+GUGcFZ27e5e2QqWwHwvujaaPtwwsGjLNpBJhNyCtsx1j9KwcfcMiS1qny0Jay5uEe9r5mSyaOYfys5/shFZa+pa3V9ic0f7VTjkXFmi7VqsgjnN9zx6VHodxY2PUPnGhw9ZJOie5spq80980A2R3MidY+vvGBm5Y/3YnSOn6wcbGgbr1esz54aGzqHzGD433rqhoWFDa+v6hob1rVo+2AX5YJjng5BXuCGvMJXnFYspr0vLKZAwlLaHlvIKgq1XJI3liNlQKXEsb9QE4VHzio8le/wxzx73oYZ0S7JHNd4U1wd/pvKvCYSCQHz8QVAf8leIJ1SWJo1pEacs7XIty82WIi6mXWVt+FopIl2ZdsWWpl3LI1BmpbQrUsq6Wrf6hbC7lHa5IO16CGXykl/Lu6I+V7CwoSzQ8LlJv8bzru+MKdbxie8HMHkY9cEdJ2qeV2Zt6IdLU7WUnagrLDACQo+ix59ajqAuPzQE3kKIbkqd0cW0xae147wmEMNxqnCh8nRFndcSCYH/jxYXuqWNEdFxpf3Qk/WS02wTHFXellDRbFzbWyEIu0IhSBClvsZ/WpzS1fVJlIMH1hjPgxwyZLdKdvQqGzqhseLRTUAP1EeWo4HOBdB5GVI+W5GSE0mZH+xkMMVQMwy+31Pat3OVdrWAMXQBxR0fmCQeb43ZYQv2NW3s6Fq9rqMz35beH6i21VidNdZV0fX+ZCIz0rb6xpb+Y9FJq9daYQsFha5A0Fwr9XW2DCfisVq7y1xZ4/R2On3mSrPUn2ldF0+1It9muBxk50l9KSeFtZJwjx6CEIP8Ep0AD0XFDZpSTopYkF5SkRrEs+XopAwZctIleIABqAYGznsRSwtg9aTOxlPSKAawqNOxciZalqmqp2J0k6s7tnZbEyajTRiRhxEadtqMNVWVt/qcvljHdmqX3K5QFvWdRajwa4dNp+f2D77cxFww+9aqnFn5ppSrlDpyN84rGb2nrDKfrVJPgSDeaJtVGsWlo1Q1iYQn+lbktsOHT/GcGdYaES9zQfZx8MyZgwWeh6zp7l4DEF8jLCywN4CeOrLlySjuD+mLmZKb6MHS9OSsQYSMGPIEhvNGjYlYpdfdA8se/T2leljxAIV1JBFLWOwWl3YwpO5mJeKQQokGvltU2iXiOZTLxTe3XgzrviyGrMaIZdsmS8RoDYlf1oV99oB48IbahMNl3HBADDqBDV9FTWHW6qAs+s47UUYdVvqVyipPzGYrvP7zmNX2KpVsNlXOXVzObeTWrMlLBT1m/MUdimgxiddYg3mzUq4fLbJZXB+shKZy3UZaY/FotC6mcb08wQ8yNcFftreIlRZVYfefjAwXU3uDnHAM59oPt4+nUIedHe2rNB3uuPu2ygotqRdqKtaMmvpad3TRKKp1gfR2rllFIX3QzknW8nMSn3bOygn282NWOolHrrASr4WJUOur9TrtgFgTx3NWZ1l+gO4gUxYA/v72tWtv37qVX7Pr1mXxa9r5rQMHvrVTvZ4+c+rUGfxyX48GH+b7vHXZGMQ8RkfxEAJSqLOCekpS3P50Ekcspm1/Lp5qqTOxE8yELERwr3et2eKRLTVfsnjZJTw34171tXhF3FXrN+6swDGb4fJ/gO960pRNwlDgAXRni8ty5F6nKzvfBR+QkBvaRW2XXz3ebYcRNaZLNJQEYjCk6Wsw3wt/4Q1aX4slsw2BbrfV74zZ7fHZpv7ZTF/nub85jHNe8nhsb9dtijT2JyR3xGEO2eNNXXvXrvlk97183r1D3wDZtJOzY0oN2GQjOC29oDcI4LQEqhfAtaPzYneA1Ym7wX3Zl7qIdAkfIgLkRBAwqF537bdUx9dO2oG5GFiimrkvHvFoZwPa4U05/53FjXd10UMntzX1nx6PjvhiEbfdlWwPdcl9Tfag4LU4vaaqh15Cl0jbgpL7M/TpnunOdYdWW832iLvOHA51xzM9RmoMuWqc1X+Oggr73O4HMI/cCZcTIBM/5LmgvRD/hYUe5iAeXqmBevGMIBjABC8ODtxQitLFs5kOVY1UnWbpcLqDbQWCGtBbF95zxs20xxbyRBoKl75JU0jCJ9GSPim7nVZ6jxum2V++zH8zAzq6DPRkyFA2l6aCAX99IlBBR8Gi0CPcAToA6RsEDC/63cWfV5Qdk2dIR7QzGoMou1zWKwm7eLiWKR3nywbMMLYdWLP+7LrEFm9Vbchj9TVI9SPJ0bQr6rE6KhNhGtKFXTSMIv83m221l/58zS19uWM5t8MUrbUGbN54NpYZqKqqMDYETLp/c/iQ4z+qrCmep9L32PM8d89k0+ApYZaCAQFbTJjTfhOxePK/NL2uW3KiqSWO2soY2TEsy6537Mv23pIdPLg6fe+JqkpvJODuPeBpy4b6+5tb+vpa6Eu9B9bCvw13Dq/73lfCgi/gDBusu7LJwteG2tuH8Mv9Ss/C72B9j34FT4DBr+y+wp3YY4unKbT0U6CwZsT0HxNi4beGoNUTE98uvMONdRe7FPZW11x+xgp2WlNNCygl9bc/PSCoWhjPS+Lg6NdkV3ur0CZHy7c5eb5tX1y1ACGJhM+XaEu0NiZ9cV8smSzm2iVZdS5xtYa4qIVwENgSsb3e0Xsgmz3QOy03rp7p6ZlZ1SwrnZ0N9Z2d9S39/S34pZu2NK6a6uqaWjXVYx9o6tyVyezqbOuz/feOuvqOTF1dR0Hqbkh2dycburXzYhDke+ynRb1b+ZaPWLbUZZN4ku0fK/6SqVzv9XVlei/zkZ2Lq4clDGxfrvF2bgio82bQPfvpFRpXDWGZ3v0Lt5FfkmMQ0fxZj4WfowEn8G9GdQqJhgge9zg1faMpciIMJTk7fhnJBJzeWpvO77BYKquqgylHqs081G5z1FaLzOyptBj0tbV22dGZVvcSVsP3eXIewqMn6yz+ok07pTST6g78SVtGzcGKv2eT86FQoDqAFxoKWBCAC/TTRt6lO+lhUk2C2m/ktmGPu/lv5Dbw38hVtmsdav1hd9vANz2KDurRdyPqJlCYaH8vpv0V2KS5519BZW8h/FfPfPEP8f6z4c/+uBApvKpv0T0MuAaUFNHeU/+uTL+lEFl4Ut+y+Jdn6oe1shGwil/hbwYXxnnNOWIiH+OHfYGMseNoo1dp/2u+d3btPnreH+dD09cG9D11DfpeuXJsavv90fN+HyGtjs3+/vpoYO9encf/Fx92o8bHv5A69r1r88K2XT/t7BiemVyl7cXfr/7Yd0hQ+B6e16/QthXPuj9kv0eI/LHq6AjpY8LVx7wWPWzg90sr/QYJstuvMf4o7k8t+/yKnzN8tDJatWhLtOb97Ur4U5UusIO+6xpn/8er+w9iG0UboBevzQt9A1bX16PbL/O/or762GPXJ7sP5WfJyv7j9zk26LiOHiR65ibNzAT2/WOyk+XIahYFH7mK9LD18I3+/+XHP7L5jL/GX/75LVlN7//AXbTBdy05SP4Eyn/9cIW20LuXlB8uL8x0XWWEfXdJ+VWxCDX/rrIHyjevUt78aIquCcrTemlZ+dRVy9NLynvXV8TV4iNl5Y1rFcPshyw/M2aXlJfKS0XXdZanTRuXlEdK5fEPWiqNvDRcUR6vfLzKf5Vy8CMqv6n6TfXdNeKycvfKxcyWldHrLk8sltrMdZXTtRctouUPLb+wjlq/bf0vtiHb1z/G8lqx2MkHLnW4EmOD5CZYrf0xEWHF1kC6yefAQ91X7cRfbvP/NGQ/hBmqw81OKw85CFNihScVZsRIoxoskDaa0mAd8dM9GqwnXnpGg0Wof0CDa0g7VUiOHCFHye2w0r6ZzAE1J4gEfrKFtEKRyFao2Qf3TeQktM+QA+Q4mSaHySzUjcM7R8gt0D7D3+oDnBOAfwTqj8NzHe/tBPR+HFaXzVDmoA/EOEn2kiZ46wg5BLVqf8egn9tII2BPA95BwDwM0G28tXmF8YfgfgjqDgLt9SQF492m9S6RzdDXcfgeI6fgirQOwViHOZUb+XvAk+S/slcpAHRdOVY/vH0Q7mlobeGlG7jfTwahrnsF/MbSGyvJrdi2nVN4HNqRNqms92v1WJSpKtHjgIWaOwp1x+H941wiTVwHc9B+A3COuxdjT5GXN0/MU/r5vELVP9g+Ok8M/Y8Pp0MCaUDwydXGuNFqFIzq04DYIvpF/mTqv1TzQsULuhfAcCrgubr/Esnywp8FMjAfpfdtmlCy903MC7MD83F8etp4F5hZ9r6ZrROIkofPkz3GOqPdKFQ1PEUXPq3o/mCekYHH9LMiGRj4v1EhPHMKZW5kc3RyZWFtCmVuZG9iagoxMTcgMCBvYmoKPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAxMz4+CnN0cmVhbQp42qv/T2XwAAAVq1EQCmVuZHN0cmVhbQplbmRvYmoKMTE4IDAgb2JqCjw8L0xlbmd0aDEgMTc4MzkvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA4NTE1Pj4Kc3RyZWFtCnja3XsLdFvHdeDMvIf38P8D/IAUAT4A/ADgDwTAnygQ4EckKJISKQmQRBKQSFGW9bMkW7Zsy47l2BadpIm7J022jR3bauI0p91HOa69seLopKmT9rh2knWcJt0kzTZ1fLLrs862cX4WuHfmASRIffyp4/YUI+Ldmbkzc39z7515EMIIIR26G3GoZXyyuS1d/nAEWi7CX3bfLSfdXV8kIkK4Cuqf2n9s4fAtc3edhvqXEDI4Fw7dtr9zw55vIWR8ASHv+QPzuTn8zdzfIRQ+BvjRA9Ag/pEAcPgJqHsPHD55682f02WgDviaxw4d3ZfLfGVOQGgj4KjKD+duPca9apxAKPEA4LuP5A7P33r/OMAJGE/2Hjs+f6wzOnYUoQE99D+OeOLGH0cq6FskaWhJKU88g9pwM9RpF/u4ETLBAxeqaGL/wBy6hNDvCPfaMqzPP4Kb3Qj/Ie3DvyUX2RAOvd2nB0oH6qD45J8IzLPcwT+S/zZ5fvlNqOuW31TqRTx0ZLmD/BTaf1Nov2e5dU29ON8v0P9dM59SX5lPRkG3jLanBzJud+oZZNyakoXJXWm53SXXZ7L73Yvb0zLx5f67GqnRvn3SXpfHI6OMjJJS/wWQQTKbCMk4KLuz+0MyCbrn3PKlCZn377pQj7XJgX0DsjCQ9sicL7Ntd9ojeVyLabc8MQFN8YzLLXdQqCOTcS8p2Lk5uR6aCjW33EL7WyjmpYm0G6hZzLll7UQ6Cy1u2qelUJRC0awrm8lkXDIOZDKSjCbS85lMSOaCbpiH9+WAMlVyIi2rpIQsSAngIyPjbEjmgxLQ5Z5bUu1NuGkPpdilUEC/ZS47sE/mGj3QmXQvuhdhgaUWlQ+Y3JrOTrhy2zJpKePJuOX4ZBr6XJS1wvohWRWUxWTgAiKKpASoSgkJJC4lcjLZu1/G+4AKWdUYksWgm5KqS+57hkd73XQGOZ7NUJRsPyNVHbwg6lByINHoWZG9JrhWF1plFhwAEpLAd9Y9sCjlqF6YvJCLylR2u4DIIpWgHSnXryyhu8Zw2QujkGuVtdJB+iBj6IJOy4GyXZIn0+gJyYbgEiED8lyuPyQbg4Dodsv65AgdDoCUyMgGWtsGNQPUQrIJpjEzkbhBAvtgXdmYzLoXs27ZCEILyeZgaiq9xM/1Z7yyYV66NSRbgqmt6dSk0ujyQLuNtVuDS8iU3J5eMpmSMs4lZFOA2ixYcmJJT78M8CVjJ2iC802kl6jwgNvEIuiXLtvokWBYEXYp/XQIbAXakgFOhoD+IWhdq6prKHAJIZsE0krKqPcCxpjpyhZES4gMTKVlk5RwD8g6MD6tBAaXcGdh+acsFoyMKJFYzC5ZhYB8LuCqBTHZgTdbICQ7gkuYPp0gZ/osCy5x9FkeXOLpsyK4pKLPyuCSQJ+u4JJIn1XBJTV9VgeXNPTZEJSKcpeFLEhYcjfJeJpukJDcWNLpXOm8SekMlHT6VzqPK50bgkg2BN4DfzXA3wagyw380acH+KPPWuCPPiXgjz69wB99+oA/+vQDf/RZB/zRZz3wR5/BoLuHmWkoCMtasu4k6DabZKqErRekttoUlEMBOQS7sBk2wJD7GlqUch0S9YjXxXBR7ltWVIudcnPjkgo7BtLgyCiDraWSubK7LeiOMHrDgIcHrlwEdudVF6ftyPklFk36e6WOpTbsoMy1gwCA4qsTDLsi1xGSI8Gmsp6QHH07VLDgfYAeA50gp8/d5B6iOx9kOby4OCQNgatIQ4gAzwruIIqxww4i7QAX5ZTNgMaD1/QxNFmTDMwvNklud88izNe5FsXdpMwl89ACmG45S51GfGv6SeLm3K4niZ+rzCSoI1WDT5YYtjQIWzi5fj9mqTNT4gZJZufA+pK5OegmyZwL4Cx1ZOvH5IAscO/SIChTghUGgT94sFVgvqssIikukwcvAUpQgWWprpgVZqQc+RgR8D2huMrVtUD3XUU5uKFV5S/IQeoBEXWvdMlq1j8oDdFFqfZ6VsRHmSlIGE2lm9w9EHIp9YVGN6WrqALBB7Xh0uiuKO9qZl3QlERte2MJJcmiqrI0BVjPclG9veAomqgUB2VzMj3hgpDp7sk0LTVhO2zQTWt6t7km1vTGrzr2eiP6gnJH4HoLJoJyZ2ARaKP2BUxdExUU2iQ3wYgkY5naZlEn1Cwl2CxNsM+UWfvB70AIKSK+CyMeer/slnJBXVSPBF6oxEI8mQKNA+BbOwJFOQxCrTPgkQqSKHCywvQQMO1QNjikF7CXbU1yO+znzddoH4bpsN0mRwAeCcoxeKSo3AZAwO5BiKVFSY0GqQnLKQC3BC+AswJgDABMgfHgBcxaJgBgLVspzgAA2ygOBSYpDgWmKA4FtgefBK/XB9AOgDCDdgafxEpbGiClLUPxMIV2UTwG7aZ4DNpD8Rg0TddMAjBD16TALF2TAlm6JgVyFGcQgL0UhwL7KA4F5igOBeYZXQmA9jO6KLTA6KLQAUYXhW5gdFHoIKOLQjcyuih0iNFFocMg464VBR5hNbkXwKMKuAnAY1TorBaH2k0QRgs4xxWQ4pxgOLiAcxIGd6/MejOrsRG3KCAdcUoBKfqtME8B4TYFpAinFZAi3A64PSvz3cFqDP1OBaToZxSQot8FIwsIdysgRfiQAlKEewB348p8Z1mNod+rgBT9wwpI0e+DkQWE+xWQIjyggBThXPBJDU+KyWoiIKvnZc47cWsxDodAZxyqh5OYG85jOuREHqR9ekOZWS8griVgDXvaHBa75KmNWKJCGXZGI5Z2yUOgOVqH/YLDUi/hC5KUH5PaCcGfJbwqv7dChT/DEZLPEZ5clC4vShK5RcWTy1/gME92qC7fzROyE+DLf0bPlluAgnNEjQzIFjeDPZSloMGBRn0eIjoDUUGq9cOa0XCb02E5ZzEYLOwPvvELFM63I7x8OxldfpF8FumRf0mY64+7YGKMdtJj6SwBCI8DqEc6Hyc6AksC6if+SITO6XDYBemos8xe77CTUZtVa7X54A/EgaqXl8lB8lVUgapQQ9xfhXnOBDOREcQD1TzejzjOniKYEWuvq7VJKrEi4KUT1vrr6jwie0baY5jSXoZ9Ho4ctOq1Jj6Vf3ZEbTMawdDVaic0YDE/hp0fcfMGs07z9NN2o54TOHKfXae5fOcP8Q7EdDQDRO0BHdlRNfKjSLzNDhThEejhVRw/j0D808C1PSVglQpNK0LcsGGDf4OvzgN0iEAdclLyPAWJetpoVYz6JckRjkYjJBppB9gSJubR23bl/4WKF2umZttbvH1dP/5xdKB5cnvy1dfw/K7Ne3MWA7nbYNkzEZmyvbjpt7h/U76lv38wkX+D6rQFTvKHyF+jBtQSBwvDHEbcGcQRzJE7gEbVLFKpqlJAMj+LeL6aH/XX1foloKUygBx2Krk6v1QrCA670xlui4EAy5y0nYrUD4pjEiWHRI1RrZ6Y3Xo2NXp2YnZcrTFqRGPd8ejso7Mzn8113Bggd5k1Op0qMnpuZ+Zcql2lV+vM6kpp9/kb5v902l2NqJ6pXB8BuZpRJQrGG5gceUwFqcIcVxSkxYKQpdJSUe4ERGNUADtCTiq+EnFaqfyYAPE/nO3rO5tdxlSEaPnILW03bn35ZXJx9pHsvoenFdFdvuvRe7aeHb/8ZZAXpUEDNLhRczx4fY2yO5Yar8eraNR7FY1KHkcRsHjwr+km+QTT5VG2YS5gD3v+GI91W/UGs0IO7Crz7+gX1SAq0CQATS5q/VAnHCbz0MNPqzDP21Ng/g6OkuNCFRLQI4jlRftaXd6+sn09+Jd00Sexmy3+jxaDkZJ0iFy0GPSW35npyt+hXZSYog3dTp5HLag33l2HeRXYOqH7QjgjYgGpeEE1DzTgWRAR2BLPo1kgpppJqAU1SX4wlTo1tSin4wrbYeStMbJoLEJJBUrD5KDFFDrSuf/8zMz5/ZF9dUaLTqtOTW2/f3T0/u2BnbUPG6xWw1cxbIFfWLQ1tYAEqJXlGrPBqmoYO7d9+7mxcsfz1E0V5Xgc5FiDmuIBPUeA3KILmRdUpMSJAOE1aIPNJ9l8hc1qERT5eYpAwQ96KEByFmw1GKz5g/AwWqxGgxV/0mYAgRov3wN1A27Mv2KwWozkDK3lX8WVBitiNk9l+yLI1gQL1sSrqKUVxAgWXxCj3++v5UGn3jWSczqaSInQwGm8uONTudyndijf8YHbx8dvH1C+f3V+evr8woHze/acP7Dz3ChsQuUbrey7hoI/Ay8hYB6kxSOqUwImRgiYGKRceNThAOlUO6pcFYBrlfwihIXi3pNKLCxsLfov/Nl0a2s69pISLV7v2ry566WXyMXw7s7OmWj+zaKV5T83tal3LP+TVXrAGiEWtqFoPFwLbgozfw+7D7SlwvNgY9x0qddvaGhoa2hrbY5IftBYOXX+zM7qqLj8a4jztDGKRSfYnrOM6yUKAjnE80a1VqyqHYv+yGww2mFLGDt3hZPRYAfGJsu3pB7vlt7XgiaVWlTz5s3jg52KX6b0t+6IxnNWy9au3jYtDnL1/cHOFOUGIy/ol4B+I5QTxPGI59AZJl58B3BBZkHjVSnmialvqVZR24ugdskfqvVT23P669heAL8LWqZura6JrN88dPeAHZRtIEwX/+Nou96m12vHbt482zzaHd8Z7VxIbrzRbbLrtaJrV+vwnvS2oV2d3TcktS1hrVFv1+7ojwU6vTZb05buyLbmBr9Fr7OJ7vq+jq7eSkdwayI82aL4olrQTRfoBrKT+AYqfA5cNFWEYiGA40R2SfKqxLKCD1qRfWFTe0gDSO0lulFeYr7wf5KL4HNMl/+YSXPebNCblbUkWOsU+QoqR7XxGjth+xWyGeqHVzxwOSqrq+OZHYLKMdshkA4pErPZQExk3srlf8mbNRoTn3+Ts+ocml+8rjKpyVcsOlF9+R6NTqshdwpag9l5+RJJaHRs7Q3A2RPkOeRFbfFmGi09lVoO4iZEeQLOD52BNIpuDLziMLxIctR5/QXnK3LM/DiOEcQpBDkpRWVR9ghzn7SSH3ImTZn453+ucWhMUHHotWbu609obJCJfP5raid5zmw0XL5bo7XhL+a324DOuwXBaNFqLn8dP27HWKfJT5MeliOFwM70RAcZUhAd+MtyLVHxeCQll0+k49UCKKgsVbS2mpRIg9hsgXJX3LO+nwqXITFXVI1HM3F7NYTo6mB1wCfBEi6/z6dWFFxQbmStU6fckqgShIsuCv+O5YsVc93JGzf23tjXM1dhMfzJZHPzZHv7ZHPTZAQvg2vspUaQDPUOnh4dva2/q7kXvGpzLNfTlY1FZ3t6cjHgdRx4DZF/KvBaUeS1lvIKDDgpK9ws5aqU12rG6/p+arYFJMXZXsGrz+dXeFX8HGjTYV8TAoBl63pe7z20ceONic7chmKa7Nrb1cx4jUw1NU9GiK7/ttHU7YOdzQkawsgXWCj+fmtPXurIdffMRiNZxiyzRdAt/hHoNsR8yFVyOOo5akqTOBgWQkEfBI5C/HIWkmF/nX9NpIXCmLCX6A/v3tpq0mkNaoPe1FoV293elun0BhyiRa0X9caWqfDw8U3xkymic3gdOqtabRBETUe2qycb0+t4oyia9Ja6qoHTo8O3bVb8uWKbP72mbTrfxjad76ttWq5jm/t6Ejf2gm12z1WW2CZ8k59aDJfTVEmDTXHgLXV6oLsZ+yB3HInmerqzsVi2GwSwwi9eBn25IevuiEegBXI2fIa951OheeqlmKKY9XGzEMequVGPx9PgqXfSrNXDciVI2opKYhpamzc5yyDN80QgBYBto8/f17q7t2W0TKfVmrXuXHTLLYm+Qxt7bkjg/I/2GfF2VVuqHlssPbOx+hqNWavT1rUlTo1tu72v49DIlyZS6lBSAhpBjHiK/CNQvT8lbwDt+JAgIlFAZ9RYFNlRwZniICFH4PMRKqMW5yCgJamIB83QD/zOl4xQsDJx6tUbUL1X8kJ8kDSiK2AVHA7F+q6IEmHFYRaTw59Ix3QWi+4Y1dKw3mzWDw9vrGoxazUGp4F8sdG3YNbrzfkciyePWHQG08KmAYtNb1YJTB8dpBr0EUQ9aDg+WF9JBJUFyCQjIuTPwIZKxbRQk1KDapihVVPVMJdQgUZDcHAK9YS6I2GYIuD3hfwaxclbCtuGRmh2NFJi9DtwhkRv6btpWNoS40UNLwgWR280M19xqHvgaDx+tH/TDeAaH9vZ2rozFqXfUbxsMebHx452WatMokYrcKKmfH5Hb3SjYoqbgnHqJiO5jRuzkaIlYgRHbfxz2HcSCsUb3Zilu2w3YczPqhjrq/muhGp9sHWEFc4UF6eQbLnC4+GH0lQXvYnGVNOKj8u2Ee6mTP6fmRpcfVvrk3VKhTzB/Ns/BGJoeRn1wXL/hTwCuQSsjkXQ0PPQqlnC+JnlZTkcoLRvh6/XgXYP8sY97jK1yCN6xGbem0argocA5yzxSr5HDaVOXOebfYW9I5bh1x0ag+aHqSKx2KPR66y6F78fgIru5/E/KqGz4zdam06v+2+vKf4XaEGfAFqK9yLO69yLfKL0XkSZ7nJa0QWXgLyhA932l5FmlsooEctJN5RqVi0KnEpVloKsQnF9KbkVeisRbaQoAqAQQSjBiFeuaUfUcRY7M8p260AxkBDVK91u19Hr1dTsUMyXplCvb6csbSoquyfeMBxa0fqecNeU1XGsk3BHdxd0X56YrB+oz792hSHgS/S7qyHaEQ0mijb6r7A3JTTxlGKiCuNlTMsrllpTtFQX9Kw2skNSoScTN7w7M6b84c/shIO3pa8/sKVlhaF5CM+Hd+V/wAiWFOp/uEo9ZMqrca0OaF93dqt5L2e3usTJoaGTCeW7py0TjabD4XQ0mml76vTAwOlU6vTg4OlUDw00NNxEsz0KDePg20JgVzS2dsc7CskQi5dwQCekrCS5oeKswKNvl95cKaVrpDddueqizCr3dq+kN01TEcIlT42kTvXHmvK/ZvvqIzTL6W+O5psiM91d05H26e7umUjBN18rb13loqYk5KcUp3yVvPUKnLfPDSzvPG+9dm4Ah/7LJ5l9GFeTgz7wyKH1uYFi78eB3w3ozFMuGikLzJateLUV21aCq7Id4DiCwc7JmfXbohiCVxHW7A4mGRp9ld2xAVX7/LX21QuiWoVPx3qVx/A2t1mnqjb4hpuLOi6b3kR0ZjOcPzp3Nf1qdT+kO1OY8dYIec8XgLcwu2u8+lm3JlW8dYSjbkCqC9R66V1jtBBAC2fcujX3Q+LqGddZOONCQ6NB0Oq13XtbhhLdkzNN422BnTUarajTqssT/uYkGUi29wcObDm9eUZjEAXtWCjQ2GhyJPsa+rwer2jQawS1qyoYrG+0GNxdLX1bdjMe6EVRmCxCopJLySEmeRWvOgs+luP4aYEFTaqlomBdkCRRBMjKIUBBplSKiFbxVtIfyH283lob9cc2i53yW0xz/FdmP8Xs6MmqMsGq0hjcTldj3bDeYtEPU43M6SxmPf7r/JLfpTJpjTZtG+iNZkLsevGoVac3MZtb/g3+3/gt5EK9ijVZeTg8YJa/Ff2US2kk+GxJYyauZ7eKlT6fT7V23xTCHWOA1fAPLEdy2cOUrNGBwS1gHG9BJH117w037MWVLKq+ujmV2kxh5V5kmbxAtMhfPF9L1forz9c1JedrP/L56vzlRdulB+w6erSmB21h7RFbOfqHybMW7r+q4OBv5M/ezJvUWgv3MGc1aEzch09BoqC+86zgJFqzEevz7Rod1mpwe/4FtQ6O1fgFQYSsQJO/CQdstvz38Eft9O5j+S38NcJDjHHHq2srzJCTEDzCYeplC3R6G71r8xEmrfZYrHiJUxZbzUi+ZtUbdZ/+tMaks4rnPy/Y9CbNn3xSazKYxMfO+7R6m/H5b+hNep36O99Ta/VWw9/8jcGk06m/+11Fpx2Q26lRG4rHN1ZgFa8H3YH0QJJA0BlRIKWZbfWKqiuYLNtQK6i0tt5fuJUtJLJKHruyDyPClbouKPv7lt4jA43D5Q7CGdWCEO+azFXMxHbuYmlCsiEF2QFRg86Hxo91WU0GM1FrtZx0YJfUGD6QwWFmD69sHmlI+nEjGARBMYilVewe1FW4+2fkVrGrfzxLXwPAYc8Mm8jsMlc67YBo9NO7f2dJUKVcMO+tXIeFf3AoFj08Pn44Fjs8vmN6esf26ent2pnHFw48NjP9+IGFx2d6Hz23+Oiji+ceZXuf/tjyDfIccqLyuMOsJXgzNMKGKGSaNNmzru6AgmqjsVi07Ccmm9FgvVMUDbCxv6A1guXpL7OrfDI8wtv1opHfLxC6xhi4BC3wWY/a462VoDOa1GIeE/5M8TBIeeb5krcM9aiuTmpsp5a/+pIBbKrI6golxbO8KHrwb8BJ5M8ZreqfdUS3DbduselMOrtaqDzQO3+8Z+AZHO6y6A3gzXXa5Z7Zpv6x5harWSuY1dGeI5nYidGXCvcO3yEXwZ8fV3LVuqJ5wemOxxwWuQWwMGEaCYJ9rTMJge/HHA+HXkwH3AEDICBcC19xjmHU1u7z0JcFSrK6kpCU3H8WQ3NhV3kKV4rKjgrjaK6771h/YKLKaNXrDY0jLdtaWseDer9Kb9J+Nf9z6jjxhNmkfVrAz7bP9fcf7K6q0hr1Dl0oONEWG5FEsF/ty/QGkl6fvgB2Se87CcigSnlrUMPe9Klgd0GwhcC2gErvPjdUsyQDXLy4EmGlQmyNKErDyl4Ke8IW/AsgJ2mlr1t+oLeKOAEbxpLM/8H/w2bqw79MzefLQIca/6ketstxHAedxJbz+MdATxSNxIfCmBO9QBF9E3oNcQuCahpkvipuxaSiKOKNST6p7gpZF4VdlPaqfcXobWrxfZJIk+eNC919J0caJ2sE0aLX6So31nRmWvduq4l4ykWTDQcIiDtEhZ5/rbZyyIe/3bkQHzzaW1XJm0StTWN3Qqo4Om016W0GFYfNWhN9AfWSwar4A/xr8m2QZwDteaqCiV0JyJUqSJs4ngBz9D0JjbSrdldJs6CzKxilnZm4jSWDgepGby3VU/2a9xeFLHD1skVkie/aVHBuNtI515s6EN68OKtWGazlEx+t3LC9tWOXb7ClfayxfjSMn40f7O5e6B08ntj+V497idnkUHs+PyM15G+eHg6NtTSPtwRHQkou2LN8Gb/K7tIb4n7wBESnvNUGaJpTXrsU9eVEdt/6a25qTcUNgL9n4vKv82aN3gaGkP8qs/Rj5KJZr9JcvkujM+shMdnNrtapbH8Fsv0Gy7mjcTBEKlz61oe+CVtgWSN961OVUgS3NoVuqC+RWtEyQG4lifQVx4XpA+GhB2fVvMFWvu3Biurtrd0z0c753taxBpBY0+YG72Ar+QZIbOq5h73EanCopT/e7anbdAMVZP5U03gziKxxtCW0pZmdeWgqfS/kCPTcBbGCxgamZJbQcLM0Yjg4JVbUmKvLHYBoiNBYYVV+a8AyK7o1ybr6sNVqES1rv/CjdqvD6oB/Vnt+1m51Wu3sC4TVDmt+CO2F6SvizuIvHApvQeiS9CcObeuWGFyZmM3I5qa2oF4+g3/L1UD+WR2vZD+UGKHNZ+mMJ2E+CzLXcSzcMSdSsFJqCOVmHj8pmnRaM5/fIhq191hA19y0QWfSazRvPabXMlvrQj/DW3AtMqANhd9k0FsNPM2Woj/8MCBdO10g6i/SS8kdMZsNf08d0d//jL6RthbezRBUvzzDfQbi2DhI/l+U20KzG2uJz2XgeG0CCyI34mJNXGlTRkFtQSISkCic0UHowwgSqQNQVwvqfeCrNLN6rNGA9Wm1ZJZlV1p6DHLDuPZ3NI4dkehgpIyNxyCp1BJOe+YdL6uMhFMT6HXPru2TwOdYndfvr/eCizSI1SVug8ahtadI6kNYguqwl8asldP+1X5FYY20F3EYCvmLh7f2Hu4LRDBXOx9tTPr7jiTaBo1a3uXCzdhlbdraMnL/rnM/umvgE0fCWyJBQdALxLpp/8jdT4x97F8/GYiHo5NNsYamPb2YPD/1sfS2R+aa/BpVRXc8mGqKP7ArGoq7KkQ+/7JKU1Gx49zQ2G3JIy89OPXQLpPTyRkFzqip8Rz4fO5T/3x7/l5j+6bU0XC0Nz7fXvg/KIX/WTJr6vklSJtdk/3ts3/4cfp8eejc1/P3L9erfPxhqNLbPeVD3xWy/6uimoT+b6l8q/+bRfmQQbIZcp1X6O+Qlm9nLffTO+kP7kMeRDPko6jlmv0v0XfTbzNHx9vjvGf6okDf09eh71u/v7U/UD3kr83jvws9U6tyJQ9fX8akDXnf9fx7aJ7578Tbp5HEPU/fd7/P8+5CoQ+Uj11oHFLc0HuhhwR/v7TiHKomh66zfge9F1z3eYW9J3l/ZVTGor7yebUEvsaH+7hCF0lchb7rrTP5wer+ndhG0Qbwh67PC/4uanxXup2kd4bXWbvz3cnuPfH3xpU+B/8U1V7Vrt6vNSdRDBJHFYmhMaJGIdhDtcSHYqQC/gSkvJ5oYLn6f67Ps9fg6Sl2HrhSTlqkfs9+4z7Uxb3wH4j3evbdi7JoEcp33lvB9fjMmnJpfYFk/d2UEfIXa8qvf/+F63qfyj2svLa28BPXLPf9m8rXVVXvuDz03oqgFQ6uKf+rtIi977L8mdq/phxfKfe+4/K3rPyf9UVzK5RXrl605e9TuRXKG7qZdeXS1Yu+cV05+a7Li8VisBvueFflOcMbxkHjN01m072mN81tUB76wMorJeWt1WIJXrdM/ccp1m30NAvnx4Nw4n0I0V8dNaJu9CB4y4cMTqjTs64a7YeTM+Y14Nmt7BRNYYysUFNggozYW4A51IHbCjCPavHBAqxClfgjBViA9s8VYCNqx99ESXQUHUO3oePoBrSADqCTyI3a4DTVCsWNpqBlHp5b0c3Qvw/diE6gHDqC5qBtAsYcBfrnoZ2O6gOck4B/FNpPQL2ezXYSZj+BulAzlAWYg2LcjPaiJhh1FB2GVmW+4zDPKcgCj0F9AR0CzCMAnWK9zVdZfxCeh6HtENDegIKw3qnC7G60DeY6AX/H0S3wTWkdhLWOMCrH2DjgyV115azuaqDryrXofAvQegjqx1EYcFpY6QYZ7EcDgNF9lVGhdeOuJsO1GDsYzScAi1LrLlnp7WcvylqR9AnApRo9Bm0nYJYTTFJNTDcL0D8OEqG3jqln0De3pZcw/lhGxsp/sD22hMTEl4bCNRxqpODTXeBFrWpOrdT6hRahSmA1beKi8ZLmEn8JDEoDdUPiIoqzwuoc6l/y4ge2puX4A+klbq5/yU9rX1bfDeYXf2DfVJqiZODzdI+6Xm1Xc/rGZ/Dyh2X+o0sE9T+pmhNQf///B6qy7PsKZW5kc3RyZWFtCmVuZG9iagoxMCAwIG9iago8PC9UeXBlL09ialN0bS9OIDk2L0ZpcnN0IDc2Mi9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDI3NDE+PgpzdHJlYW0KeNrNWmtz28YV/Z5fsd8iJiNg34+Mh1PJtGJNndj1o3GL4AMlwhIaitCQUGr/+567C4igRLJ0q2njCbXY5z333Lt37wIJjDOhmDdM4D+FimVSayYCU8YzyZl2KAQzAYVkDh0S45XGMBaMYRLzuONMWiZEEEx6rCMkUwIl1sVIobVnykGEUkxDhgmWaQVZNjCNeU5JpgMTnhtmJErrGZYWAYsYzAtBM0IjpGMWoqTRzDoAQd0REvzxEE3reoxzaPcA6vHHoQwAZRVKY5nF+IDBFtA4R92ihBwrUKLfc5T4AwhKAA8gKgHcUFEJDHIYJ2hdqCgF5CuU2jCH9SQqDuspjnEOpQzMY5yCEh7jiA+vQQkoB61Ka8EiRRDiMU8HjMM8A1It5hmjWIBcg8GB6tAPVCjHA7hnysNaaFLEUyBqIQx20oQDS2lFZHLYUGNVAVDa4CEQ6VSi7slSKAysgmoQNEHjAWoIkM5hOcEVM0Q9tDGCcEhYCVQpWEvBRYgmo0gxmE1jKahlDKbDkQxhF+DZWA0jO9iTYxRHCQahn/EKoqgtAClWNUFQA0aGQL4lYXIYAwX8h8FQClQKALWGZmKw9WiBJSQmCajhNFS1sASN97AE3EPAv12A8WAyLwH62bP84+uLf1SXLZ7ObyAaW+HteJyfNQtqOqMlUsubZXP5rmqL/M3kLH9ffW4xfnpVPU/FaSrOy/H4G8z7qsHvv9xW+cli0bT5u7uLlmqv6sVv+WmznFXLggMAL/OX+Xn+vBCpcoJp7/Ifm/dNPjm6vJ7ettUyEyPAfAtdikiqzwQ8QWiRYcsawzOrzBNLlBsShc0kNhb2RYZ9bqTPnHBPJHEFIXWzyORAS2+zoKN7Zgp7QViTqQTDWfnkcuVDuTrITCEGCeMyhAaC4fnT66seyfU8UxSIuc8QLCIOb+QTm1YNTYuIkSFK0D4DBIQIx7Og9BPrqh7bVmubGTpUVMg4Ig8BCS48sa56Q1epM4tIhFiRIW4hfrqMW/HEuuotugqZxWCloaMgICZDzHxywY8dmSM24KQQ2mUUg3EwZcL0Gj+IhPmZouj5H8TE/zKkPp6+PXL/HzH9Ubj5A9nofzn9a7YI8hUm+i3y4e05/Y5upvW8bX64rubz5k9N21w02ay63y1IQrA/keRwlSkkZsLh3EHiZRAokIM9FYjrtr1d/ZDnSX7d3MsPPjOUveF4tUirBGKwR8poAItb99Se8Kq+qdtVcTRpLo/ftdNlOxqEyzL/eXpTbfRaCjpv+zHfIbyBokELNaiNBjlCsjBsUCNrNhr0yEYtHkC6BUwsl0q7BtO1I02kRWINMsK6pkaOr2t65MS6ZkZOrmt25NQuyW7UB9PvsP6mdDdyZr2KHzm7roWRc+taPXIDnDWqCehgac+3QBgmQhtB/R7IcISXw0VjFuPVgyY18nqjic5hbzaa6Ljy9kET1nIDhH+uZ6vCxha6j1HhRSp8P6yQUcv849/+Tncoh9QJyy7u5vPym0L5dZ+kRL7v0HpHh+G7OuyODrWrXR7Q8QiwOUyZh31a7OnTe/rc7r4hFY/61J4+exgWSXe2DHtrex+SX9y5tvZpZREv+z6hD9OB5KlMi+0W3denHTzfb5M3NCwcdlKt2hW9IojhMQbvup1Xzz5Vnz5xrpEWWcO5oxcE+GEqt7idOo6fTs8W42w13nMdezNdVouWbtmE4mcEXbqjbxdoOyG4rNtZJ9wlIbH9Yrz3TtSLUgNRZrsorJzEkG4X3bPr9R3vvQJtinmzrH6ntxFrkXaHSKLMdxSSNqjLWaKTxFMb0erQL3lHO9Fru3a3HmfNeO9taRvEXUyoJJLEuc7iRH6EIDtGSKwZQDdrA9mqg6fGe67IZ/Vy1fY0vZquepry580dgB6rB36SIMsBq243/AhRJ4iOj/ferXoxu5br/f3eH8Z7boedVn6glR9qJbZqNXTPXVuvt31Hbu+qTo/33qZ6cWEtgt53bVfVdszJTuVd2/nBxWlTRlSJXq5t14Nwy24Hmy34Ny6gic5uscRnh74nVG4ldGDLziJyYJEwWECnUW+rVXO3vKxWLHXGlPUN0pB+eXrXl2YtWtRXhR8c8+vZQh04Xcj781/EfUgvmGMRAdAL5likbEHKVKhUpExCpnky5YObOKQ/EIdM6UpKz1fxHefabv3sVUeWWi+T+Iz5TQIlEtJ0tjziRYldeMwmHsW3z9eHzlfb57tD5w+z6wMJSAkcS2kRSxnQIwSa70JgHyAI2+erA+druX2+PXS++XoGUmbHUhLH9HYf0Du3lnuAYPveMvLA+UZsn28OnX+PvzApdzd+yx6z/ND1woM95vfsMb2VYN3hSFEhJa/M7PVVodLUbsv3rt4bvIdZ5j9Vs3p62nyOF3GLwORC/+b0+bKats3y6NX0ffWR/bNur9k15CyX1afR9uOpyxdiNkX1y+4YiTkFQv1de90s+/OmPwf6PKg7eyjR0N1JTr9Yd12CgYr28eI+u7uslkefZ7/Xt7NPN5/Zr0eSS0mpya+jUYKOQ2oybaujyQ/owpEpg4DaUn3PxbecfztKWr6+rRYn8UTr7kJndVtGLn9qZlX+YVW9vmvn9QLUUuOr6UU1X2Hez3c3q4LHw2syHsv4sByPdd8CEtMFlL5V0br9MveHFZnr3tDRgs+n7XTeXJHv6cKqUCpZ0BsWK12peeGEKXWAW8rSSST5ktlgS08dofQG4dyUQtjCoyqEL5xCXaHboG5tYblCiXZa0rtSOAf3RBl4YaVF6QrHTSmlwL3VIz9TePYYY0tJEiFfelsYz0slOK5tjlml8Iwx3gKtKqRCqTXQAb12wISxxhZBSpRpLeUgT2ioFAqtUAqHbS9LLVHnodQKuIBPW1k461H6VA+C5jFlNaOvXIY+vdI3MheYQdww9PbH09c2XxqjIx/GhELqUAIzgqsty0itdola+uCpErUhUgtpkVoLak2kVvLEobWRQ8IvbAA/PPFnZeKP68SbNchle7504svYyJfC1oULJ74gKfKFMZEv2CrypTq+RMeX85EvAzjEl/Im8QV+iS+lOr6oTnwZ8GiJT3BE3IEzQ19F6YuMpa9QHLEQ3CEgG/oqJcAVx/rgAb9CgGfiTHhRGmsKcNxxx0ts0SLA+cr7kENv1+5f6z0/n1CdOmR+Ol1VsffDi8nHFyff/+WuvvxtNV3Mjk+b+SxOxHXzclnfIsTE75Mxap5P3n1ZtdXN+eJTE+PtVb1ql1+OTmbNRTXKX9M7w3pxdXQ+Q5Ss2y8jSL+9nVc3FDQ5ttzkF1Cs8l/it9BuyffNj+eTn6a3eT9rEDQ3geQnq8sUfjmn63CsHEvD83cA9Vf6pIZNevuyqq+uu1Env1/9Us8QG8FuXO2Uoukx/Q8CxwrRVyj69i+8KvNz7O768mRxNa8Yz8/m0yvkalaKuPwXhNNnCAqLZlU94/0/zzf+jbsvsRRYdjBLFFbA1iWjNPqsnlcSLQ+zuw3rUQv/d2Z7sbhsZuD/nsnjlx1NsynkNHTgdQfL++bDosboCjSFfYK3u82rF6dnk5cD+XCFu/l0+dhzzBN6DpfRc+zTe453ux1H64HjKOcwjz72K0Ef7tUOx7E7fcbs8ZmdtN67jXvkNv4r3Gbn+od4TpK04Tqiv0n+C4U5k4QKZW5kc3RyZWFtCmVuZG9iagoxMTkgMCBvYmoKPDwvVHlwZS9YUmVmL0lEWzwxOGVhNGJkYTc2M2JlNTQ0ZmViNjhkNWZmYzhkMzY1ZT48MThlYTRiZGE3NjNiZTU0NGZlYjY4ZDVmZmM4ZDM2NWU+XS9Sb290CjEgMCBSL0luZm8gMiAwIFIvU2l6ZSAxMjAvV1sxIDIgMl0vRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAyNzY+PgpzdHJlYW0KeNot0VdSAkEQgOFpVNQ1oLi6gIsgCOIqKuacFdOaMYcj8GpZhov45D08jQfB/at5+ar/nqqpmhpjTK0WMpa5gWvYEhMxRqx3Y8hHuJfoj6aRqqPTttj1SWAXQtAAL/AEjdAEYWiGFmgFC9rE/tCr2qEszqdmB+xLrKTZCQcSf9WMwJEkvjW74FhcS7MbfEmWNaNwKqmqZg+cSfpX04ZzybiavXAJfeBItqIHMcjCLKQgDYOQgTjkIA/DUIAR8CABozAGRSjBAAxBP4zDBEzCFEzDDLiQhDnYhHlYhgVYhCVYhRXYgDVYhwrswQ4cwglcwYXk/oI/L4T1+Q9wK14+2Hn1X3iGO/GLwc7/CngLpn8kqiPWCmVuZHN0cmVhbQplbmRvYmoKc3RhcnR4cmVmCjMxMjc3CiUlRU9GCg==</File>
    </Filelist>
</otrs_package>