<?xml version="1.0" encoding="utf-8" ?>
<otrs_package version="1.1">
    <Name>Fred</Name>
    <Version>10.1.3</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-28 14:28:11" Version="10.1.3">Issue #2: Fixing %ENV usage in config. Do not rely on $ENV{MOD_PERL}; added translations.</ChangeLog>
    <ChangeLog Date="2024-04-02 13:55:54" Version="10.1.2">Bugfix: Prevent rendering FRED widget within iframes.</ChangeLog>
    <ChangeLog Date="2022-02-02 14:41:32" Version="10.1.1">Initial Release on OTOBO 10.1.</ChangeLog>
    <Description Lang="en">A tool to help the developer during development.</Description>
    <Description Lang="de">Ein Werkzeug welches den Entwickler bei der Entwicklung unterstützen soll.</Description>
    <Description Lang="hu">Egy eszköz a fejlesztők munkájának támogatásához.</Description>
    <Framework>10.1.x</Framework>
    <IntroInstall Lang="en" Title="Fred Features" Type="pre">
        &lt;br/&gt;
        Welcome! &lt;br/&gt;
        &lt;br/&gt;
        What can Fred do?&lt;br/&gt;
        &lt;br/&gt;
        To date, Fred has the following features: &lt;br/&gt;
        &lt;ul&gt;
        &lt;li&gt; HTMLCheck: &lt;br/&gt;
                    perform different HTML quality checks in JavaScript &lt;/li&gt;
        &lt;li&gt; JSLint: &lt;br/&gt;
                    perform different JavaScript quality checks in JavaScript &lt;/li&gt;
        &lt;li&gt; STDERRLog: &lt;br/&gt;
                    every entry contained in STDERR is displayed &lt;/li&gt;
        &lt;li&gt; TranslationDebug: &lt;br/&gt;
                    display all translation attempts of the current request which failed &lt;/li&gt;
        &lt;li&gt; SQLLog: &lt;br/&gt;
                    list all SQL statements of the current request &lt;/li&gt;
        &lt;li&gt; ConfigLog: &lt;br/&gt;
                    list all ConfigGet requests, indicating their frequency &lt;/li&gt;
        &lt;li&gt; SessionDump: &lt;br/&gt;
                    show the current content of the serverside session &lt;/li&gt;
        &lt;li&gt; EnvDump: &lt;br/&gt;
                    show info about the environment of the layout object &lt;/li&gt;
        &lt;/ul&gt;
        &lt;br/&gt;
        &lt;strong&gt;Caution&lt;/strong&gt;: Please have a look at the possible config settings, which are easily accessible by clicking on &quot;setting&quot;. &lt;br/&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        What is Fred's current status?&lt;br/&gt;
        &lt;br/&gt;
        &lt;ul&gt;
        &lt;li&gt; modular design: &lt;br/&gt;
                    anybody can add a new module at any time &lt;/li&gt;
        &lt;li&gt; the modules' output is not yet sophisticated &lt;br/&gt;
                    ideas for improving the output or sensible configurations will be very welcome &lt;/li&gt;
        &lt;li&gt; please extend Fred, if you have good ideas &lt;br/&gt;
        &lt;li&gt; if you have no time to implement your ideas yourselves, please enter them in dev mailinglist &lt;/li&gt;
        &lt;/ul&gt;
        &lt;br/&gt;
    </IntroInstall>
    <IntroInstall Lang="hu" Title="A Fred funkciói" Type="pre">
        &lt;br/&gt;
        Üdvözöljük! &lt;br/&gt;
        &lt;br/&gt;
        Mire képes a Fred?&lt;br/&gt;
        &lt;br/&gt;
        A Fred jelenleg a következő funkciókkal rendelkezik: &lt;br/&gt;
        &lt;ul&gt;
        &lt;li&gt; HTMLCheck: &lt;br/&gt;
                    különböző HTML minőség-ellenőrzések végrehajtása a JavaScript kódban &lt;/li&gt;
        &lt;li&gt; JSLint: &lt;br/&gt;
                    különböző JavaScript minőség-ellenőrzések végrehajtása a JavaScript kódban &lt;/li&gt;
        &lt;li&gt; STDERRLog: &lt;br/&gt;
                    a szabványos hibakimeneten megjelenő összes bejegyzés megjelenítése &lt;/li&gt;
        &lt;li&gt; TranslationDebug: &lt;br/&gt;
                    az aktuális kérés összes olyan fordítási kísérletének megjelenítése, amely sikertelen &lt;/li&gt;
        &lt;li&gt; SQLLog: &lt;br/&gt;
                    az aktuális kérés összes SQL-lekérdezésének felsorolása &lt;/li&gt;
        &lt;li&gt; ConfigLog: &lt;br/&gt;
                    az összes ConfigGet kérés felsorolása, jelezve azok gyakoriságát &lt;/li&gt;
        &lt;li&gt; SessionDump: &lt;br/&gt;
                    a kiszolgáló oldali munkamenet aktuális tartalmának megjelenítése &lt;/li&gt;
        &lt;li&gt; EnvDump: &lt;br/&gt;
                    információk megjelenítése a megjelenítő objektum környezetéről &lt;/li&gt;
        &lt;/ul&gt;
        &lt;br/&gt;
        &lt;strong&gt;Vigyázat&lt;/strong&gt;: nézze meg a lehetséges konfigurációs beállításokat, amelyek egyszerűen elérhetők a „beállításra” kattintva. &lt;br/&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Mi a Fred jelenlegi állapota?&lt;br/&gt;
        &lt;br/&gt;
        &lt;ul&gt;
        &lt;li&gt; moduláris felépítés: &lt;br/&gt;
                    bárki bármikor hozzáadhat egy új modult &lt;/li&gt;
        &lt;li&gt; a modulok kimenete még nem kifinomult &lt;br/&gt;
                    szívesen fogadjuk a kimenet javításával vagy az érzékeny beállításokkal kapcsolatos ötleteket &lt;/li&gt;
        &lt;li&gt; bővítse a Fred programot, ha vannak jó ötletei &lt;br/&gt;
        &lt;li&gt; ha nincs ideje az ötletei megvalósításához, akkor írja le a fejlesztői levelezőlistán &lt;/li&gt;
        &lt;/ul&gt;
        &lt;br/&gt;
    </IntroInstall>
    <BuildCommitID>b71a2b8ecc8db88d5c900e39b8f084dd38277b10</BuildCommitID>
    <BuildDate>2026-10-28 14:28:15</BuildDate>
    <BuildHost>opms.rother-oss.com</BuildHost>
    <Filelist>
        <File Location="doc/en/Fred.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0ndXRmLTgnPz4KPCFET0NUWVBFIGJvb2sgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjQvL0VOIgogICAgImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC40L2RvY2Jvb2t4LmR0ZCI+Cgo8Ym9vayBsYW5nPSdlbic+Cgo8Ym9va2luZm8+Cjx0aXRsZT4kTmFtZTwvdGl0bGU+CjxlZGl0aW9uPiREZXNjcmlwdGlvbiBWZXJzaW9uICRWZXJzaW9uPC9lZGl0aW9uPgoKPGNvcHlyaWdodD4KPHllYXI+JFllYXJTdGFtcDwveWVhcj4KPGhvbGRlcj4kVmVuZG9yLCAkVVJMPC9ob2xkZXI+CjwvY29weXJpZ2h0PgoKPGRhdGU+JERhdGVTdGFtcDwvZGF0ZT4KCjxsZWdhbG5vdGljZT4KICAgIDxwYXJhPiRMaWNlbnNlPC9wYXJhPgogICAgPHBhcmE+VGhpcyB3b3JrIGlzIGNvcHlyaWdodGVkIGJ5ICRWZW5kb3IsIFppbW1lcnNtw7xobGVud2VnIDExLCA2MTQ0MCBPYmVydXJzZWwsIEdlcm1hbnkuPC9wYXJhPgogICAgPHBhcmE+QnVpbGQgRGF0ZTogJERhdGVTdGFtcDwvcGFyYT4KPC9sZWdhbG5vdGljZT4KCjwvYm9va2luZm8+Cgo8cHJlZmFjZSBpZD0icHJlZmFjZSIgPgogICAgPHRpdGxlPlByZWZhY2U8L3RpdGxlPgogICAgPHBhcmE+QSBtb2R1bGUgZm9yIGhlbHBpbmcgd2l0aCBkZXZlbG9waW5nIHdlYiBhcHBsaWN0aW9ucy48L3BhcmE+CjwvcHJlZmFjZT4KCjxjaGFwdGVyPgogICAgPHRpdGxlPkZlYXR1cmUgTGlzdDwvdGl0bGU+CiAgICA8c2VjdDE+CiAgICAgICAgPHRpdGxlPkhUTUxDaGVjazwvdGl0bGU+CiAgICAgICAgPHBhcmE+UGVyZm9ybXMgZGlmZmVyZW50IGJhZC9iZXN0IHByYWN0aWNlIGNoZWNrcyBvbiB0aGUgZ2VuZXJhdGVkIHBhZ2VzIHZpYSBKYXZhU2NyaXB0LjwvcGFyYT4KICAgIDwvc2VjdDE+CiAgICA8c2VjdDE+CiAgICAgICAgPHRpdGxlPkpTTGludDwvdGl0bGU+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEV4YW1pbmVzIHRoZSBjb2RlIHF1YWxpdHkgb2YgYWxsIEphdmFTY3JpcHQgY29kZSB0aGF0IGlzIHVzZWQKICAgICAgICAgICAgb24gdGhlIHBhZ2Ugb24gdGhlIGZseSAoYWxzbyB2aWEgSmF2YVNjcmlwdCksIHVzaW5nIHRoZSBncmVhdCB0b29sIEpTTGludC4KICAgICAgICA8L3BhcmE+CiAgICA8L3NlY3QxPgogICAgPHNlY3QxPgogICAgICAgIDx0aXRsZT5TVERFUlJMb2c8L3RpdGxlPgogICAgICAgIDxwYXJhPmV2ZXJ5IGVudHJ5IGNvbnRhaW5lZCBpbiBTVERFUlIgaXMgZGlzcGxheWVkIDwvcGFyYT4KICAgIDwvc2VjdDE+CiAgICA8c2VjdDE+CiAgICAgICAgPHRpdGxlPlRyYW5zbGF0aW9uRGVidWc8L3RpdGxlPgogICAgICAgIDxwYXJhPmRpc3BsYXlzIGFsbCB0cmFuc2xhdGlvbiBhdHRlbXB0cyBvZiB0aGUgY3VycmVudCByZXF1ZXN0IHdoaWNoIGZhaWxlZC4gPC9wYXJhPgogICAgPC9zZWN0MT4KICAgIDxzZWN0MT4KICAgICAgICA8dGl0bGU+U1FMTG9nPC90aXRsZT4KICAgICAgICA8cGFyYT5saXN0cyBhbGwgU1FMIHN0YXRlbWVudHMgb2YgdGhlIGN1cnJlbnQgcmVxdWVzdCA8L3BhcmE+CiAgICA8L3NlY3QxPgogICAgPHNlY3QxPgogICAgICAgIDx0aXRsZT5Db25maWdMb2c8L3RpdGxlPgogICAgICAgIDxwYXJhPmxpc3RzIGFsbCBDb25maWdHZXQgcmVxdWVzdHMsIGluZGljYXRpbmcgdGhlaXIgZnJlcXVlbmN5IDwvcGFyYT4KICAgIDwvc2VjdDE+CiAgICA8c2VjdDE+CiAgICAgICAgPHRpdGxlPlNlc3Npb25EdW1wPC90aXRsZT4KICAgICAgICA8cGFyYT5zaG93IHRoZSBjdXJyZW50IGNvbnRlbnQgb2YgdGhlIHNlcnZlcnNpZGUgc2Vzc2lvbiA8L3BhcmE+CiAgICA8L3NlY3QxPgogICAgPHNlY3QxPgogICAgICAgIDx0aXRsZT5FbnZEdW1wPC90aXRsZT4KICAgICAgICA8cGFyYT5zaG93IGluZm8gYWJvdXQgdGhlIGVudmlyb25tZW50IG9mIHRoZSBsYXlvdXQgb2JqZWN0IDwvcGFyYT4KICAgIDwvc2VjdDE+CjwvY2hhcHRlcj4KCjxjaGFwdGVyPgogICAgPHRpdGxlPkluc3RhbGxhdGlvbjwvdGl0bGU+CiAgICA8cGFyYT5UaGUgZm9sbG93aW5nIGluc3RydWN0aW9ucyBleHBsYWluIGhvdyB0byBpbnN0YWxsIHRoZSBwYWNrYWdlLjwvcGFyYT4KICAgIDxzZWN0MT4KICAgICAgICA8dGl0bGU+QWRtaW4gSW50ZXJmYWNlPC90aXRsZT4KICAgICAgICA8cGFyYT4KUGxlYXNlIHVzZSB0aGUgZm9sbG93aW5nIFVSTCB0byBpbnN0YWxsIHRoZSBwYWNrYWdlIHV0aWxpemluZyB0aGUgYWRtaW4KaW50ZXJmYWNlIChwbGVhc2Ugbm90ZSB0aGF0IHlvdSBuZWVkIHRvIGJlIGluIHRoZSBhZG1pbiBncm91cCkuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgo8dWxpbmsgdXJsPSJodHRwOi8vbG9jYWxob3N0L290b2JvL2luZGV4LnBsP0FjdGlvbj1BZG1pblBhY2thZ2VNYW5hZ2VyIj5odHRwOi8vbG9jYWxob3N0L290b2JvL2luZGV4LnBsP0FjdGlvbj1BZG1pblBhY2thZ2VNYW5hZ2VyPC91bGluaz4KICAgICAgICA8L3BhcmE+CiAgICA8L3NlY3QxPgogICAgPHNlY3QxPgogICAgICAgIDx0aXRsZT5Db21tYW5kIExpbmU8L3RpdGxlPgogICAgICAgIDxwYXJhPgpJZiB5b3UgZG9uJ3Qgd2FudCB0byB1c2UgdGhlIEFkbWluIEludGVyZmFjZSwgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZwpPUE0gY29tbWFuZCB0byBpbnN0YWxsIHRoZSBwYWNrYWdlIHdpdGggImJpbi9vcG0ucGwiLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICA8c2NyZWVuPgpzaGVsbD4gYmluL29wbS5wbCAtYSBpbnN0YWxsIC1wIC9wYXRoL3RvLyROYW1lLSRWZXJzaW9uLm9wbQogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDwvcGFyYT4KICAgIDwvc2VjdDE+CjwvY2hhcHRlcj4KCjxjaGFwdGVyPgogICAgPHRpdGxlPkNvbmZpZ3VyYXRpb248L3RpdGxlPgogICAgPHBhcmE+VGhlIGZvbGxvd2luZyBjb25maWcgb3B0aW9ucyBjYW4gb3IgbmVlZCB0byBiZSBjaGFuZ2VkIHZpYSBTeXNDb25maWcuPC9wYXJhPgogICAgPHNlY3QxPgogICAgICAgIDx0aXRsZT5GcmVkOjpDb25maWdMb2cjIyNPcmRlckJ5PC90aXRsZT4KICAgICAgICA8cGFyYT5XaGljaCBvcmRlciBzaG91bGQgdGhlIGNvbmZpZyBsb2cgZGF0YSBoYXZlPzwvcGFyYT4KICAgIDwvc2VjdDE+CjwvY2hhcHRlcj4KCjxjaGFwdGVyPgogICAgPHRpdGxlPk1hbmlmZXN0PC90aXRsZT4KICAgIDxwYXJhPlRoZSBtYW5pZmVzdCBsaXN0cyBhbGwgaW5jbHVkZWQgZmlsZXMgYW5kIHRoZSByZWZlcnJpbmcgcGVybWlzc2lvbnMuPC9wYXJhPgogICAgPHNlY3QxPgogICAgICAgIDx0aXRsZT5GaWxlbGlzdDwvdGl0bGU+CiAgICAgICAgPHBhcmE+CiAgICAgICAgJEZpbGVsaXN0CiAgICAgICAgPC9wYXJhPgogICAgPC9zZWN0MT4KPC9jaGFwdGVyPgoKPGNoYXB0ZXI+CiAgICA8dGl0bGU+Q2hhbmdlTG9nPC90aXRsZT4KICAgIDxwYXJhPgogICAgJENoYW5nZUxvZwogICAgPC9wYXJhPgo8L2NoYXB0ZXI+Cgo8L2Jvb2s+Cg==</File>
        <File Location="Kernel/Config/Files/AAAFred.pm" Permission="660" Encode="Base64">IyBPVE9CTyBjb25maWcgZmlsZSAoYXV0b21hdGljYWxseSBnZW5lcmF0ZWQpCiMgVkVSU0lPTjoxLjEKIyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6Q29uZmlnOjpGaWxlczo6QUFBRnJlZDsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwpubyB3YXJuaW5ncyAncmVkZWZpbmUnOyAgICAjIyBubyBjcml0aWMgcXcoVGVzdGluZ0FuZERlYnVnZ2luZzo6UHJvaGliaXROb1dhcm5pbmdzKQoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6Q29uZmlnOjpEZWZhdWx0czsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2U7CnVzZSBLZXJuZWw6OlN5c3RlbTo6RnJlZDo6Q29uZmlnTG9nOwp1c2UgS2VybmVsOjpTeXN0ZW06OkZyZWQ6OlNRTExvZzsKdXNlIEtlcm5lbDo6U3lzdGVtOjpGcmVkOjpUcmFuc2xhdGlvbkRlYnVnOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIExvYWQgewogICAgbXkgKCAkRmlsZSwgJFNlbGYgKSA9IEBfOwoKICAgIGlmICggJEVOVntHQVRFV0FZX0lOVEVSRkFDRX0gKSB7CgogICAgICAgICMgY2hlY2sgaWYgdGhlIG5lZWRlZCBwYXRoIGlzIGF2YWlsYWJsZQogICAgICAgIG15ICRQYXRoID0gJFNlbGYtPntIb21lfSAuICcvdmFyL2ZyZWQnOwogICAgICAgIGlmICggIS1lICRQYXRoICkgewogICAgICAgICAgICBta2RpciAkUGF0aDsKICAgICAgICB9CgogICAgICAgIG15ICRGaWxlID0gJFNlbGYtPntIb21lfSAuICcvdmFyL2ZyZWQvU1RERVJSLmxvZyc7CgogICAgICAgICMgY2hlY2sgbG9nIGZpbGUgc2l6ZQogICAgICAgIGlmICggLXMgJEZpbGUgPiAyMCAqIDEwMjQgKiAxMDI0ICkgewogICAgICAgICAgICB1bmxpbmsgJEZpbGU7CiAgICAgICAgfQoKICAgICAgICAjIG1vdmUgU1RET1VUIHRvIHRtcCBmaWxlCiAgICAgICAgIyMgbm8gY3JpdGljIHF3KE9UT0JPOjpQcm9oaWJpdE9wZW4pCiAgICAgICAgaWYgKCAhb3BlbiBTVERFUlIsICc+PicsICRGaWxlICkgewogICAgICAgICAgICBwcmludCBTVERFUlIgIkVSUk9SOiBDYW4ndCB3cml0ZSAkRmlsZSEiOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRpc2FibGUgcmVkZWZpbmUgd2FybmluZ3MgaW4gdGhpcyBzY29wZQogICAgewogICAgICAgIG5vIHdhcm5pbmdzICdyZWRlZmluZSc7ICAgICMjIG5vIGNyaXRpYyBxdyhUZXN0aW5nQW5kRGVidWdnaW5nOjpQcm9oaWJpdE5vV2FybmluZ3MpCgogICAgICAgICMgT3ZlcnJpZGUgS2VybmVsOjpMYW5ndWFnZTo6R2V0KCkgbWV0aG9kIHRvIGludGVyY2VwdCBtaXNzaW5nIHRyYW5zbGF0aW9ucwogICAgICAgIGlmICggS2VybmVsOjpMYW5ndWFnZS0+Y2FuKCdHZXQnKSAmJiAhS2VybmVsOjpMYW5ndWFnZS0+Y2FuKCdHZXRPcmlnaW5hbCcpICkgewogICAgICAgICAgICAqS2VybmVsOjpMYW5ndWFnZTo6R2V0T3JpZ2luYWwgPSBcJktlcm5lbDo6TGFuZ3VhZ2U6OkdldDsKICAgICAgICAgICAgKktlcm5lbDo6TGFuZ3VhZ2U6OkdldCAgICAgICAgID0gc3ViIHsKICAgICAgICAgICAgICAgIG15ICggJFNlbGYsICRXaGF0ICkgPSBAXzsKCiAgICAgICAgICAgICAgICByZXR1cm4gICAgaWYgIWRlZmluZWQgJFdoYXQ7CiAgICAgICAgICAgICAgICByZXR1cm4gJycgaWYgJFdoYXQgZXEgJyc7CgogICAgICAgICAgICAgICAgbXkgJFJlc3VsdCA9ICRTZWxmLT5HZXRPcmlnaW5hbCgkV2hhdCk7CgogICAgICAgICAgICAgICAgaWYgKCAkV2hhdCAmJiAkV2hhdCA9fiAvXiguKz8pIixcc3swLDF9IiguKj8pJC8gKSB7CiAgICAgICAgICAgICAgICAgICAgJFdoYXQgPSAkMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICEkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyRXaGF0fSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1RyYW5zbGF0aW9uRGVidWdPYmplY3R9IHx8PSBLZXJuZWw6OlN5c3RlbTo6RnJlZDo6VHJhbnNsYXRpb25EZWJ1Zy0+bmV3KCk7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntUcmFuc2xhdGlvbkRlYnVnT2JqZWN0fS0+SW5zZXJ0V29yZCggV2hhdCA9PiAkV2hhdCApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAkUmVzdWx0OwogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBPdmVycmlkZSBLZXJuZWw6Okxhbmd1YWdlOjpUcmFuc2xhdGUoKSBtZXRob2QgdG8gaW50ZXJjZXB0IG1pc3NpbmcgdHJhbnNsYXRpb25zCiAgICAgICAgaWYgKCBLZXJuZWw6Okxhbmd1YWdlLT5jYW4oJ1RyYW5zbGF0ZScpICYmICFLZXJuZWw6Okxhbmd1YWdlLT5jYW4oJ1RyYW5zbGF0ZU9yaWdpbmFsJykgKSB7CiAgICAgICAgICAgICpLZXJuZWw6Okxhbmd1YWdlOjpUcmFuc2xhdGVPcmlnaW5hbCA9IFwmS2VybmVsOjpMYW5ndWFnZTo6VHJhbnNsYXRlOwogICAgICAgICAgICAqS2VybmVsOjpMYW5ndWFnZTo6VHJhbnNsYXRlICAgICAgICAgPSBzdWIgewogICAgICAgICAgICAgICAgbXkgKCAkU2VsZiwgJFRleHQsIEBQYXJhbWV0ZXJzICkgPSBAXzsKCiAgICAgICAgICAgICAgICBpZiAoICRUZXh0ICYmICEkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyRUZXh0fSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1RyYW5zbGF0aW9uRGVidWdPYmplY3R9IHx8PSBLZXJuZWw6OlN5c3RlbTo6RnJlZDo6VHJhbnNsYXRpb25EZWJ1Zy0+bmV3KCk7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntUcmFuc2xhdGlvbkRlYnVnT2JqZWN0fS0+SW5zZXJ0V29yZCggV2hhdCA9PiAkVGV4dCApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+VHJhbnNsYXRlT3JpZ2luYWwoICRUZXh0LCBAUGFyYW1ldGVycyApOwogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBPdmVycmlkZSBLZXJuZWw6OlN5c3RlbTo6REI6OlByZXBhcmUoKSBtZXRob2QgdG8gaW50ZXJjZXB0IGRhdGFiYXNlIGNhbGxzCiAgICAgICAgaWYgKCBLZXJuZWw6OlN5c3RlbTo6REItPmNhbignUHJlcGFyZScpICYmICFLZXJuZWw6OlN5c3RlbTo6REItPmNhbignUHJlcGFyZU9yaWdpbmFsJykgKSB7CiAgICAgICAgICAgICpLZXJuZWw6OlN5c3RlbTo6REI6OlByZXBhcmVPcmlnaW5hbCA9IFwmS2VybmVsOjpTeXN0ZW06OkRCOjpQcmVwYXJlOwogICAgICAgICAgICAqS2VybmVsOjpTeXN0ZW06OkRCOjpQcmVwYXJlICAgICAgICAgPSBzdWIgewogICAgICAgICAgICAgICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAgICAgICAgICAgICAkU2VsZi0+e1NRTExvZ09iamVjdH0gfHw9IEtlcm5lbDo6U3lzdGVtOjpGcmVkOjpTUUxMb2ctPm5ldygpOwogICAgICAgICAgICAgICAgJFNlbGYtPntTUUxMb2dPYmplY3R9LT5QcmVTdGF0ZW1lbnQoJVBhcmFtKTsKICAgICAgICAgICAgICAgIG15ICRSZXN1bHQgPSAkU2VsZi0+UHJlcGFyZU9yaWdpbmFsKCVQYXJhbSk7CiAgICAgICAgICAgICAgICAkU2VsZi0+e1NRTExvZ09iamVjdH0tPlBvc3RTdGF0ZW1lbnQoJVBhcmFtKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJFJlc3VsdDsKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgT3ZlcnJpZGUgS2VybmVsOjpTeXN0ZW06OkRCOjpEbygpIG1ldGhvZCB0byBpbnRlcmNlcHQgZGF0YWJhc2UgY2FsbHMKICAgICAgICBpZiAoIEtlcm5lbDo6U3lzdGVtOjpEQi0+Y2FuKCdEbycpICYmICFLZXJuZWw6OlN5c3RlbTo6REItPmNhbignRG9PcmlnaW5hbCcpICkgewogICAgICAgICAgICAqS2VybmVsOjpTeXN0ZW06OkRCOjpEb09yaWdpbmFsID0gXCZLZXJuZWw6OlN5c3RlbTo6REI6OkRvOwogICAgICAgICAgICAqS2VybmVsOjpTeXN0ZW06OkRCOjpEbyAgICAgICAgID0gc3ViIHsKICAgICAgICAgICAgICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgICAgICAgICAgICAgJFNlbGYtPntTUUxMb2dPYmplY3R9IHx8PSBLZXJuZWw6OlN5c3RlbTo6RnJlZDo6U1FMTG9nLT5uZXcoKTsKICAgICAgICAgICAgICAgICRTZWxmLT57U1FMTG9nT2JqZWN0fS0+UHJlU3RhdGVtZW50KCVQYXJhbSk7CiAgICAgICAgICAgICAgICBteSAkUmVzdWx0ID0gJFNlbGYtPkRvT3JpZ2luYWwoJVBhcmFtKTsKICAgICAgICAgICAgICAgICRTZWxmLT57U1FMTG9nT2JqZWN0fS0+UG9zdFN0YXRlbWVudCglUGFyYW0pOwoKICAgICAgICAgICAgICAgIHJldHVybiAkUmVzdWx0OwogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBPdmVycmlkZSBLZXJuZWw6OkNvbmZpZzo6R2V0KCkgbWV0aG9kIHRvIGludGVyY2VwdCBjb25maWcgc3RyaW5ncwogICAgICAgIGlmICggS2VybmVsOjpDb25maWc6OkRlZmF1bHRzLT5jYW4oJ0dldCcpICYmICFLZXJuZWw6OkNvbmZpZzo6RGVmYXVsdHMtPmNhbignR2V0T3JpZ2luYWwnKSApIHsKICAgICAgICAgICAgKktlcm5lbDo6Q29uZmlnOjpEZWZhdWx0czo6R2V0T3JpZ2luYWwgPSBcJktlcm5lbDo6Q29uZmlnOjpEZWZhdWx0czo6R2V0OwogICAgICAgICAgICAqS2VybmVsOjpDb25maWc6OkRlZmF1bHRzOjpHZXQgICAgICAgICA9IHN1YiB7CiAgICAgICAgICAgICAgICBteSAoICRTZWxmLCAkV2hhdCApID0gQF87CgogICAgICAgICAgICAgICAgJFNlbGYtPntDb25maWdMb2dPYmplY3R9IHx8PSBLZXJuZWw6OlN5c3RlbTo6RnJlZDo6Q29uZmlnTG9nLT5uZXcoKTsKICAgICAgICAgICAgICAgIG15ICRDYWxsZXIgPSBjYWxsZXIoKTsKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPnskV2hhdH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntDb25maWdMb2dPYmplY3R9LT5JbnNlcnRXb3JkKAogICAgICAgICAgICAgICAgICAgICAgICBXaGF0ID0+ICIkV2hhdDtUcnVlOyRDYWxsZXI7IiwKICAgICAgICAgICAgICAgICAgICAgICAgSG9tZSA9PiAkU2VsZi0+e0hvbWV9CiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRTZWxmLT57Q29uZmlnTG9nT2JqZWN0fS0+SW5zZXJ0V29yZCgKICAgICAgICAgICAgICAgICAgICAgICAgV2hhdCA9PiAiJFdoYXQ7RmFsc2U7JENhbGxlcjsiLAogICAgICAgICAgICAgICAgICAgICAgICBIb21lID0+ICRTZWxmLT57SG9tZX0KICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+R2V0T3JpZ2luYWwoJFdoYXQpOwogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==</File>
        <File Location="Kernel/Config/Files/XML/Fred.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJBcHBsaWNhdGlvbiI+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6T3V0cHV0OjpGaWx0ZXJDb250ZW50IyMjRnJlZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TdWJzY3JpYmUgdGhlIG91dHB1dCBmaWx0ZXIgYXQgdGhlIHN5c3RlbS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpCYXNlOjpPdXRwdXRGaWx0ZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RmlsdGVyQ29udGVudDo6RnJlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVidWciPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRlbXBsYXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQUxMIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6OkFnZW50OjpDb21tb25KUyMjIzAwMC1GcmVkIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxpc3Qgb2YgSlMgZmlsZXMgdG8gYWx3YXlzIGJlIGxvYWRlZCBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpCYXNlOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2pzbGludC9qc2xpbnQuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkZyZWQuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkZyZWQuSlNMaW50LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5GcmVkLkhUTUxDaGVjay5qczwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpDdXN0b21lcjo6Q29tbW9uSlMjIyMwMDAtRnJlZCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5MaXN0IG9mIEpTIGZpbGVzIHRvIGFsd2F5cyBiZSBsb2FkZWQgZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QmFzZTo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9qc2xpbnQvanNsaW50LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5GcmVkLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5GcmVkLkpTTGludC5qczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuRnJlZC5IVE1MQ2hlY2suanM8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6QWdlbnQ6OkNvbW1vbkNTUyMjIzAwMC1GcmVkIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxpc3Qgb2YgQ1NTIGZpbGVzIHRvIGFsd2F5cyBiZSBsb2FkZWQgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QmFzZTo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5GcmVkLmNzczwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpDdXN0b21lcjo6Q29tbW9uQ1NTIyMjMDAwLUZyZWQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGlzdCBvZiBDU1MgZmlsZXMgdG8gYWx3YXlzIGJlIGxvYWRlZCBmb3IgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpCYXNlOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkZyZWQuY3NzPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcmVkOjpDb25zb2xlV2lkdGgiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgd2lkdGggb2YgdGhlIEZyZWQgY29uc29sZSBpbiBwZXJjZW50LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPjUwJTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJlZDo6Q29uc29sZUhlaWdodCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBoZWlnaHQgb2YgdGhlIEZyZWQgY29uc29sZSBpbiBwaXhlbC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZyZWQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj4yMDBweDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJlZDo6Q29uc29sZU9wYWNpdHkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgb3BhY2l0eSBvZiB0aGUgRnJlZCBjb25zb2xlLCBlLmcuIDAuOSBmb3IgMTAlIHRyYW5zcGFyZW5jeS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZyZWQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj4wLjk8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyZWQ6OkFjdGl2ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIGlmIGZyZWQgaXMgdmlzaWJsZSBvciBoaWRkZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGcmVkPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IjEiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPlNob3c8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+SGlkZTwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcmVkOjpNb2R1bGUjIyNDb25zb2xlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlR1cm4gb24gaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBmcmVkIGNvbnNvbGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGcmVkPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGl2ZSI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcmVkOjpNb2R1bGUjIyNTUUxMb2ciIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VHVybiBvbiBpZiB5b3Ugd2FudCBhbiByZWFsdGltZSBTUUwgc3RhdGVtZW50IGxvZyBmdW5jdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZyZWQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+U2hvd3MgYSBsaXN0IG9mIGFsbCBTUUwgc3RhdGVtZW50cyBleGVjdXRlZCBpbiB0aGlzIGNhbGwuPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyZWQ6Ok1vZHVsZSMjI0hUTUxDaGVjayIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UdXJuIG9uIGlmIHlvdSB3YW50IGFuIHJlYWx0aW1lIEhUTUwtY2hlY2tlci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZyZWQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+VmFsaWRhdGVzIHRoZSBIVE1MIGluIHRoaXMgY2FsbC48L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJlZDo6TW9kdWxlIyMjSlNMaW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlR1cm4gb24gaWYgeW91IHdhbnQgYSBKYXZhU2NyaXB0IGNvZGUgcXVhbGl0eSBjaGVja2VyLiBPbmx5IHdvcmtzIGluIENWUyBIZWFkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RnJlZDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3RpdmUiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIj5WYWxpZGF0ZXMgdGhlIEpTIGluIHRoaXMgY2FsbCBhbmQgc2hvd3MgZXJyb3JzIGFuZCBub3RpY2VzLjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcmVkOjpNb2R1bGUjIyNUcmFuc2xhdGlvbkRlYnVnIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlR1cm4gb24gaWYgeW91IHdhbnQgdGhlIHRyYW5zbGF0aW9uIGRlYnVnZ2VyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RnJlZDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3RpdmUiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIj5TaG93cyBhIGxpc3Qgb2YgdW50cmFuc2xhdGVkIHN0cmluZ3MuIFBsZWFzZSBub3RlIHRoYXQgc3RyaW5ncyBmcm9tIGZyYW1ld29yayBBTkQgY3VzdG9tIG1vZHVsZXMgd2lsbCBiZSBzaG93bi48L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJlZDo6TW9kdWxlIyMjQ29uZmlnTG9nIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlR1cm4gb24gaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBjb25maWcgbG9nIG1lY2hhbmlzbS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZyZWQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+TGlzdHMgYWxsIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2hpY2ggd2VyZSB1c2VkIGluIHRoaXMgY2FsbCAoYW5kIGhvdyBvZnRlbiB0aGV5IHdlcmUgY2FsbGVkKS48L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJlZDo6TW9kdWxlIyMjQ29uZmlnU3dpdGNoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlR1cm4gb24gaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBjb25maWcgc3dpdGNoIG1lY2hhbmlzbS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZyZWQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+U3dpdGNoIG9uIG9yIG9mZiBzb21lIG9mdGVuIG5lZWRlZCBjb25maWcgaXRlbXMgZGlyZWN0bHkgaW4gRnJlZC48L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJlZDo6TW9kdWxlIyMjU1RERVJSTG9nIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlR1cm4gb24gaWYgeW91IHdhbnQgdG8gc2VlIHRoZSBTVERFUlJMb2cuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGcmVkPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGl2ZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iPkxpc3RzIGVudHJpZXMgZnJvbSB0aGUgU1RERVJSIGxvZy48L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJlZDo6U1RERVJSTG9nRmlsdGVyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlR1cm4gb24gaWYgeW91IHdhbnQgdG8gZmlsdGVyIHRoZSBvdXRwdXQgb2YgdGhlIFNUREVSUkxvZy4gWW91IGNhbiBhZGQgYSByZWd1bGFyIGV4cHJlc3Npb24gdG8gZmlsdGVyIHRoZSBvdXRwdXQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGcmVkPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+OiBbIF0gU3Vicm91dGluZSBbIF0gW19hLXpBLVowLTldKyBbIF0gcmVkZWZpbmVkIFsgXSBhdCBbIF0gLisgWyBdIGxpbmUgWyBdIFxkKyBcLjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJlZDo6TW9kdWxlIyMjU2Vzc2lvbkR1bXAiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VHVybiBvbiBpZiB5b3Ugd2FudCB0byBzZWUgdGhlIGRhdGEgaW4gdGhlIHNlcnZlcnNpZGUgc2Vzc2lvbiBvYmplY3QuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGcmVkPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGl2ZSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iPkR1bXBzIG91dCBhbGwgc2Vzc2lvbiB2YXJpYWJsZXMuPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyZWQ6Ok1vZHVsZSMjI0VudkR1bXAiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VHVybiBvbiBpZiB5b3Ugd2FudCB0byBzZWUgdGhlIGRhdGEgaW4gdGhlIGVudmlyb25tZW50IG9mIHRoZSBsYXlvdXQgb2JqZWN0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RnJlZDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3RpdmUiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIj5EdW1wcyBvdXQgYWxsIGVudmlyb25tZW50IHZhcmlhYmxlcy48L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0RldmVsRnJlZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgZGV2ZWwgZnJlZCBvYmplY3QgaW4gdGhlIGFkbWluIGFyZWEuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIj5BZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj5GcmVkLURldmVsb3BlcnRvb2xzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+QWRtaW48L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6TW9kdWxlIyMjRGV2ZWxGcmVkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIj5BZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj5GcmVkLURldmVsb3BlcnRvb2xzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+QWRtaW48L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok1vZHVsZSMjI0RldmVsRnJlZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIj5BZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj5GcmVkLURldmVsb3BlcnRvb2xzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+QWRtaW48L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJlZDo6Q29uZmlnTG9nIyMjT3JkZXJCeSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5XaGljaCBvcmRlciBzaG91bGQgdGhlIGNvbmZpZyBsb2cgZGF0YSBoYXZlPzwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RnJlZDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSIzIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMyI+Q2FsbHM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiPkNvbmZpZzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMiI+UGFja2FnZTwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcmVkOjpDb25maWdTd2l0Y2gjIyNTZXR0aW5ncyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5MaXN0IG9mIGNvbmZpZyBzZXR0aW5ncyB3aGljaCBzaG91bGQgYmUgYXZhaWxhYmxlIGZvciBxdWljayBzd2l0Y2guIFBsZWFzZSBhZGQgb25seSBzZXR0aW5ncyB3aXRoIHBvc3NpYmxlIHZhbHVlcyAwIG9yIDEgKE5vL1llcykuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGcmVkPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+RnJvbnRlbmQ6OlJpY2hUZXh0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+RnJvbnRlbmQ6OkRlYnVnTW9kZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkZyb250ZW5kOjpUZW1wbGF0ZUNhY2hlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+RnJvbnRlbmQ6Ok1lbnVEcmFnRHJvcEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5UaWNrZXRBQ0w6OkRlYnVnOjpFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+VGlja2V0OjpGcm9udGVuZDo6TmVlZFNwZWxsQ2hlY2s8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5UaWNrZXQ6OlJlc3BvbnNpYmxlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+VGlja2V0OjpUeXBlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+VGlja2V0OjpTZXJ2aWNlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+VGlja2V0OjpXYXRjaGVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+VGlja2V0OjpVc2VBcnRpY2xlQ29sb3JzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2hlY2tNWFJlY29yZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNoZWNrRW1haWxBZGRyZXNzZXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5TZXNzaW9uVXNlQ29va2llPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TG9hZGVyOjpFbmFibGVkOjpDU1M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Mb2FkZXI6OkVuYWJsZWQ6OkpTPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+T3Blbk1haW5NZW51T25Ib3ZlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPlNlY3VyZU1vZGU8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyZWQ6OlN5c3RlbU5hbWUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q3VzdG9taXphYmxlIHN5c3RlbSBuYW1lLiBJZiBlbXB0eSwgY29uZmlnIGl0ZW0gJ0hvbWUnIGlzIGJlaW5nIHVzZWQgZm9yIGRpc3BsYXkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGcmVkPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcmVkOjpCYWNrZ3JvdW5kQ29sb3IiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhpcyBvcHRpb24gZGVmaW5lcyB0aGUgYmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIHN5dGVtIG5hbWUgYm94LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RnJlZDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPiNENjM1MzU8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCjwvb3RvYm9fY29uZmlnPgo=</File>
        <File Location="Kernel/Modules/DevelFred.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6RGV2ZWxGcmVkOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgJFNlbGYtPntTdWJhY3Rpb259ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N1YmFjdGlvbicgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHNob3cgdGhlIG92ZXJ2aWV3CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKICAgIGlmICggISRTZWxmLT57U3ViYWN0aW9ufSApIHsKICAgICAgICBteSAkVmVyc2lvbiA9ICRDb25maWdPYmplY3QtPkdldCgnVmVyc2lvbicpOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICdTb3JyeSwgdGhpcyBwYWdlIGlzIGN1cnJlbnRseSB1bmRlciBkZXZlbG9wbWVudCEnLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgZmFzdCBoYW5kbGUgZm9yIGZyZWQgc2V0dGluZ3MKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2V0dGluZycgKSB7CgogICAgICAgICMgZ2V0IGhhc2hyZWYgd2l0aCBhbGwgRnJlZC1wbHVnaW5zCiAgICAgICAgbXkgJE1vZHVsZUZvclJlZiA9ICRDb25maWdPYmplY3QtPkdldCgnRnJlZDo6TW9kdWxlJyk7CgogICAgICAgICMgVGhlIENvbnNvbGUgY2FuJ3QgYmUgZGVhY3RpdmF0ZWQKICAgICAgICBkZWxldGUgJE1vZHVsZUZvclJlZi0+e0NvbnNvbGV9OwoKICAgICAgICAjIGxvb3Agb3ZlciBNb2R1bGVzIHdoaWNoIGNhbiBiZSBhY3RpdmF0ZWQgYW5kIGRlYWN0aXZhdGVkCiAgICAgICAgZm9yIG15ICRNb2R1bGUgKCBzb3J0IGtleXMgJXskTW9kdWxlRm9yUmVmfSApIHsKICAgICAgICAgICAgbXkgJENoZWNrZWQgPSAkTW9kdWxlRm9yUmVmLT57JE1vZHVsZX0tPntBY3RpdmV9ID8gJ2NoZWNrZWQ9ImNoZWNrZWQiJyA6ICcnOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZyZWRNb2R1bGUnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgRnJlZE1vZHVsZSAgPT4gJE1vZHVsZSwKICAgICAgICAgICAgICAgICAgICBDaGVja2VkICAgICA9PiAkQ2hlY2tlZCwKICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiA9PiAkTW9kdWxlRm9yUmVmLT57JE1vZHVsZX0tPntEZXNjcmlwdGlvbn0gfHwgJycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBQcm92aWRlIGEgbGluayB0byB0aGUgU3lzQ29uZmlnIG9ubHkgZm9yIHBsdWdpbnMgdGhhdCBoYXZlIGNvbmZpZyBvcHRpb25zCiAgICAgICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCJGcmVkOjokTW9kdWxlIikgKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb25maWcnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBNb2R1bGVOYW1lID0+ICRNb2R1bGUsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBidWlsZCBvdXRwdXQKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICBUaXRsZSA9PiAnRnJlZC1TZXR0aW5nJywKICAgICAgICAgICAgVHlwZSAgPT4gJ1NtYWxsJywKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnRGV2ZWxGcmVkU2V0dGluZycsCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigKICAgICAgICAgICAgVHlwZSA9PiAnU21hbGwnLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGZhc3QgaGFuZGxlIGZvciBmcmVkIHNldHRpbmdzCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1NldHRpbmdBY3Rpb24nICkgewogICAgICAgIG15ICRNb2R1bGVGb3JSZWYgICAgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdGcmVkOjpNb2R1bGUnKTsKICAgICAgICBteSBAU2VsZWN0ZWRGcmVkTW9kdWxlcyA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdGcmVkTW9kdWxlJyApOwogICAgICAgIG15ICVTZWxlY3RlZE1vZHVsZXMgICAgID0gbWFwIHsgJF8gPT4gMTsgfSBAU2VsZWN0ZWRGcmVkTW9kdWxlczsKICAgICAgICBteSAkVXBkYXRlRmxhZzsKICAgICAgICBkZWxldGUgJE1vZHVsZUZvclJlZi0+e0NvbnNvbGV9OwoKICAgICAgICBmb3IgbXkgJE1vZHVsZSAoIHNvcnQga2V5cyAleyRNb2R1bGVGb3JSZWZ9ICkgewoKICAgICAgICAgICAgIyB1cGRhdGUgdGhlIHN5c2NvbmZpZyBzZXR0aW5ncwogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkTW9kdWxlRm9yUmVmLT57JE1vZHVsZX0tPntBY3RpdmV9ICYmICEkU2VsZWN0ZWRNb2R1bGVzeyRNb2R1bGV9CiAgICAgICAgICAgICAgICB8fAogICAgICAgICAgICAgICAgISRNb2R1bGVGb3JSZWYtPnskTW9kdWxlfS0+e0FjdGl2ZX0gJiYgJFNlbGVjdGVkTW9kdWxlc3skTW9kdWxlfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAjIHVwZGF0ZSBjZXJ0YWluIHZhbHVlcwogICAgICAgICAgICAgICAgJE1vZHVsZUZvclJlZi0+eyRNb2R1bGV9LT57QWN0aXZlfSA9ICRTZWxlY3RlZE1vZHVsZXN7JE1vZHVsZX0gfHwgMDsKCiAgICAgICAgICAgICAgICAkU2VsZi0+X1NldHRpbmdVcGRhdGUoCiAgICAgICAgICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAiRnJlZDo6TW9kdWxlIyMjJE1vZHVsZSIsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJE1vZHVsZUZvclJlZi0+eyRNb2R1bGV9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRVcGRhdGVGbGFnID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlBvcHVwQ2xvc2UoCiAgICAgICAgICAgIFJlbG9hZCA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgaGFuZGxlIGZvciBjb25maWcgc3dpdGNoCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NvbmZpZ1N3aXRjaEFKQVgnICkgewoKICAgICAgICBteSAkSXRlbUtleSAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0tleScgKTsKICAgICAgICBteSAkSXRlbVZhbHVlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZhbHVlJyApOwoKICAgICAgICBteSAkU3VjY2VzcyA9IDA7CgogICAgICAgIGlmICgkSXRlbUtleSkgewoKICAgICAgICAgICAgIyB0aGUgdmFsdWUgd2hpY2ggaXMgcGFzc2VkIGlzIHRoZSBjdXJyZW50IHZhbHVlLCBzbyB3ZQogICAgICAgICAgICAjIG5lZWQgdG8gc3dpdGNoIGl0LgogICAgICAgICAgICBpZiAoICRJdGVtVmFsdWUgPT0gMSApIHsKICAgICAgICAgICAgICAgICRJdGVtVmFsdWUgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJEl0ZW1WYWx1ZSA9IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTZWxmLT5fU2V0dGluZ1VwZGF0ZSgKICAgICAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgICAgICBLZXkgICA9PiAkSXRlbUtleSwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRJdGVtVmFsdWUsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTdWNjZXNzID0gMTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD0nIC4gJExheW91dE9iamVjdC0+e0NoYXJzZXR9LAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkU3VjY2VzcywKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9TZXR0aW5nVXBkYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKCiAgICBteSAkU2V0dGluZ05hbWUgPSAnU2VjdXJlTW9kZSc7CgogICAgbXkgJEV4Y2x1c2l2ZUxvY2tHVUlEID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ0xvY2soCiAgICAgICAgTmFtZSAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgIEZvcmNlICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICAjIFVwZGF0ZSBjb25maWcgaXRlbSB2aWEgU3lzQ29uZmlnIG9iamVjdC4KICAgIG15ICRSZXN1bHQgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVXBkYXRlKAogICAgICAgIE5hbWUgICAgICAgICAgICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgIElzVmFsaWQgICAgICAgICAgID0+ICRQYXJhbXtWYWxpZH0sCiAgICAgICAgRWZmZWN0aXZlVmFsdWUgICAgPT4gJFBhcmFte1ZhbHVlfSwKICAgICAgICBFeGNsdXNpdmVMb2NrR1VJRCA9PiAkRXhjbHVzaXZlTG9ja0dVSUQsCiAgICAgICAgVXNlcklEICAgICAgICAgICAgPT4gMSwKICAgICk7CgogICAgaWYgKCAhJFJlc3VsdCApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdDYW5cJ3Qgd3JpdGUgQ29uZmlnIGZpbGUhJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIFRoZXJlIGlzIG5vIG5lZWQgdG8gdW5sb2NrIHRoZSBzZXR0aW5nIGFzIGl0IHdhcyBhbHJlYWR5IHVubG9ja2VkIGluIHRoZSB1cGRhdGUuCgogICAgIyAnUmVidWlsZCcgdGhlIGNvbmZpZ3VyYXRpb24uCiAgICBteSAkU3VjY2VzcyA9ICRTeXNDb25maWdPYmplY3QtPkNvbmZpZ3VyYXRpb25EZXBsb3koCiAgICAgICAgQ29tbWVudHMgICAgPT4gIkluc3RhbGxlciBkZXBsb3ltZW50IiwKICAgICAgICBBbGxTZXR0aW5ncyA9PiAxLAogICAgICAgIEZvcmNlICAgICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/FilterContent/Fred.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGaWx0ZXJDb250ZW50OjpGcmVkOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgVVJJOjpFc2NhcGU7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkZyZWQnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpGaWx0ZXJDb250ZW50OjpGcmVkCgo9aGVhZDEgU1lOT1BTSVMKCmEgb3V0cHV0IGZpbHRlciBtb2R1bGUgc3BlY2lhbGx5IGZvciBkZXZlbG9wZXIKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9b3ZlciA0Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgcGVyaGFwcyBubyBvdXRwdXQgaXMgZ2VuZXJhdGVkCiAgICBkaWUgJ0ZyZWQ6IEF0IHRoZSBtb21lbnQsIHlvdXIgY29kZSBnZW5lcmF0ZXMgbm8gb3V0cHV0IScgaWYgISRQYXJhbXtEYXRhfTsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBkbyBub3Qgc2hvdyB0aGUgZGVidWcgYmFyIGluIEZyZWQncyBzZXR0aW5nIHdpbmRvdwogICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QWN0aW9ufSAmJiAkTGF5b3V0T2JqZWN0LT57QWN0aW9ufSBlcSAnRGV2ZWxGcmVkJyApIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIE5PVEUgd2l0aCBjaGFuZ2VzIGludHJvZHVjZWQgZm9yIHJlbC0xMF8xLCBzb21lIHJlcXVlc3RzLCBlLmcuIHRvIEFnZW50VGlja2V0QXJ0aWNsZUNvbnRlbnQsIGJ5cGFzcyB0aGlzIGNoZWNrCiAgICAjIGRvIG5vdGhpbmcgaWYgb3V0cHV0IGlzIGFuIGF0dGFjaG1lbnQgZG93bmxvYWQgb3IgQUpBWCByZXF1ZXN0CiAgICBpZiAoCiAgICAgICAgJHsgJFBhcmFte0RhdGF9IH0gPX4gL15Db250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50Oy9taQogICAgICAgIHx8ICR7ICRQYXJhbXtEYXRhfSB9ID1+IC9eQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lOy9taQogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIGRvIG5vdGhpbmcgaWYgZGF0YSBkb2VzIG5vdCBzdGFydCB3aXRoIERPQ1RZUEUgdGFnIChpbmRpY2F0aW5nIEFKQVggcmVxdWVzdCkKICAgIGlmICggJHsgJFBhcmFte0RhdGF9IH0gIX4gL148IURPQ1RZUEUgaHRtbD4vbWkgKSB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgIyBkbyBub3RoaW5nIGlmIGl0IGlzIGEgcmVkaXJlY3QKICAgIGlmICgKICAgICAgICAkeyAkUGFyYW17RGF0YX0gfSA9fiAvXlN0YXR1czogMzAyIE1vdmVkL21pCiAgICAgICAgJiYgJHsgJFBhcmFte0RhdGF9IH0gPX4gL15sb2NhdGlvbjovbWkKICAgICAgICAmJiBsZW5ndGgoICR7ICRQYXJhbXtEYXRhfSB9ICkgPCA4MDAKICAgICAgICApCiAgICB7CiAgICAgICAgcHJpbnQgU1RERVJSICJSRURJUkVDVFxuIjsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIGRvIG5vdGhpbmcgaWYgaXQgaXMgZnJlZCBpdCBzZWxmCiAgICBpZiAoICR7ICRQYXJhbXtEYXRhfSB9ID1+IG17RnJlZC1TZXR0aW5nPFwvdGl0bGU+fW1zeCApIHsKICAgICAgICBwcmludCBTVERFUlIgIkNIQU5HRSBGUkVEIFNFVFRJTkdcbiI7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgIyBkbyBub3RoaW5nIGlmIGl0IGRvZXMgbm90IGNvbnRhaW4gdGhlIDxodG1sPiBlbGVtZW50LCBtaWdodCBiZQogICAgIyBhbiBlbWJlZGRlZCBsYXlvdXQgcmVuZGVyaW5nCiAgICBpZiAoICR7ICRQYXJhbXtEYXRhfSB9ICF+IG17PGh0bWxbXj5dKj59bXN4ICkgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgZ2V0IGRhdGEgb2YgdGhlIGFjdGl2YXRlZCBtb2R1bGVzCiAgICBteSAkTW9kdWxlRm9yUmVmICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZyZWQ6Ok1vZHVsZScpOwogICAgbXkgJE1vZHVsZXNEYXRhUmVmID0ge307CiAgICBmb3IgbXkgJE1vZHVsZSAoIHNvcnQga2V5cyAleyRNb2R1bGVGb3JSZWZ9ICkgewogICAgICAgIGlmICggJE1vZHVsZUZvclJlZi0+eyRNb2R1bGV9LT57QWN0aXZlfSApIHsKICAgICAgICAgICAgJE1vZHVsZXNEYXRhUmVmLT57JE1vZHVsZX0gPSB7fTsKICAgICAgICB9CiAgICB9CgogICAgZm9yIG15ICRNb2R1bGVOYW1lICggc29ydCBrZXlzICV7JE1vZHVsZXNEYXRhUmVmfSApIHsKCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCggJ0tlcm5lbDo6U3lzdGVtOjpGcmVkOjonIC4gJE1vZHVsZU5hbWUgKS0+RGF0YUdldCgKICAgICAgICAgICAgTW9kdWxlUmVmICAgICAgPT4gJE1vZHVsZXNEYXRhUmVmLT57JE1vZHVsZU5hbWV9LAogICAgICAgICAgICBIVE1MRGF0YVJlZiAgICA9PiAkUGFyYW17RGF0YX0sCiAgICAgICAgICAgIEZyZWRNb2R1bGVzUmVmID0+ICRNb2R1bGVzRGF0YVJlZiwKICAgICAgICApOwoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZyZWQ6OicgLiAkTW9kdWxlTmFtZSApLT5DcmVhdGVGcmVkT3V0cHV0KAogICAgICAgICAgICBNb2R1bGVSZWYgPT4gJE1vZHVsZXNEYXRhUmVmLT57JE1vZHVsZU5hbWV9LAogICAgICAgICk7CiAgICB9CgogICAgIyBidWlsZCB0aGUgY29udGVudCBzdHJpbmcKICAgIG15ICRPdXRwdXQgPSAnJzsKICAgIGlmICggJE1vZHVsZXNEYXRhUmVmLT57Q29uc29sZX0tPntPdXRwdXR9ICkgewogICAgICAgICRPdXRwdXQgLj0gJE1vZHVsZXNEYXRhUmVmLT57Q29uc29sZX0tPntPdXRwdXR9OwogICAgICAgIGRlbGV0ZSAkTW9kdWxlc0RhdGFSZWYtPntDb25zb2xlfTsKICAgIH0KICAgIGZvciBteSAkTW9kdWxlICggc29ydCBrZXlzICV7JE1vZHVsZXNEYXRhUmVmfSApIHsKICAgICAgICAkT3V0cHV0IC49ICRNb2R1bGVzRGF0YVJlZi0+eyRNb2R1bGV9LT57T3V0cHV0fSB8fCAnJzsKICAgIH0KCiAgICBteSAkSlNPdXRwdXQgPSAnJzsKICAgICRPdXRwdXQgPX4gc3soPHNjcmlwdC4rPy9zY3JpcHQ+KX17CiAgICAgICAgJEpTT3V0cHV0IC49ICQxOwogICAgICAgICIiOwogICAgfXNteGVnOwoKICAgICMgUHV0IG91dHB1dCBpbiB0aGUgRnJlZCBDb250YWluZXIKICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdEZXZlbEZyZWRDb250YWluZXInLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gJE91dHB1dAogICAgICAgIH0sCiAgICApOwoKICAgICMgaW5jbHVkZSB0aGUgZnJlZCBvdXRwdXQgaW4gdGhlIG9yaWdpbmFsIG91dHB1dAogICAgaWYgKCAkeyAkUGFyYW17RGF0YX0gfSAhfiBzLyhcPGJvZHkofC4rPylcPikvJDFcbiRPdXRwdXRcblxuXG5cbi9teCApIHsKICAgICAgICAkeyAkUGFyYW17RGF0YX0gfSA9fiBzL14oLikvXG4kT3V0cHV0XG5cblxuXG4kMS9teDsKICAgIH0KCiAgICByZXR1cm4gaWYgISRMYXlvdXRPYmplY3QtPntVc2VySUR9OwoKICAgICMgYWRkIGZyZWQgaWNvbiB0byBoZWFkZXIKICAgIG15ICRBY3RpdmUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZyZWQ6OkFjdGl2ZScpIHx8IDA7CiAgICBteSAkQ2xhc3MgID0gJEFjdGl2ZSA/ICdGcmVkQWN0aXZlJyA6ICcnOwogICAgJHsgJFBhcmFte0RhdGF9IH0gPX4gc3sgPGRpdiBbXj5dKiBpZD0iaGVhZGVyIiBbXj5dKj4gfXsKICAgICAgICAkJgoKICAgICAgICA8ZGl2IGNsYXNzPSJEZXZlbEZyZWRUb2dnbGVDb250YWluZXIiPgogICAgICAgICAgICA8YSBpZD0iRGV2ZWxGcmVkVG9nZ2xlQ29udGFpbmVyTGluayIgY2xhc3M9IiRDbGFzcyIgaHJlZj0iIyI+RjwvYT4KICAgICAgICA8L2Rpdj4KICAgIH14bXNpZzsKICAgICR7ICRQYXJhbXtEYXRhfSB9ID1+IHN7ICg8Ym9keSBbXj5dKiBjbGFzcz0iIFteIl0qKSAoICIgW14+XSo+ICkgfXsgJDEgJENsYXNzICQyIH14bXNpZzsKCiAgICAjIEluamVjdCBKUyBhdCB0aGUgZW5kIG9mIHRoZSBib2R5CiAgICAkeyAkUGFyYW17RGF0YX0gfSA9fiBzezwvYm9keT59eyRKU091dHB1dFxuXHQ8L2JvZHk+fXNteDsKCiAgICByZXR1cm4gMTsKfQoKMTsKCj1iYWNrCg==</File>
        <File Location="Kernel/Output/HTML/Fred/ConfigLog.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGcmVkOjpDb25maWdMb2c7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RnJlZDo6Q29uZmlnTG9nIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIHRoZSBjb25maWcgbG9nIG1vZHVsZQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGcmVkQ29uZmlnTG9nLT5uZXcoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBDcmVhdGVGcmVkT3V0cHV0KCkKCmNyZWF0ZSB0aGUgb3V0cHV0IG9mIHRoZSBjb25maWcgbG9nCgogICAgJExheW91dE9iamVjdC0+Q3JlYXRlRnJlZE91dHB1dCgKICAgICAgICBNb2R1bGVzUmVmID0+ICRNb2R1bGVzUmVmLAogICAgKTsKCj1jdXQKCnN1YiBDcmVhdGVGcmVkT3V0cHV0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtNb2R1bGVSZWZ9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBNb2R1bGVSZWYhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRIVE1MTGluZXMgPSAnJzsKICAgIGZvciBteSAkTGluZSAoIEB7ICRQYXJhbXtNb2R1bGVSZWZ9LT57RGF0YX0gfSApIHsKCiAgICAgICAgZm9yIG15ICRURCAoIEB7JExpbmV9ICkgewogICAgICAgICAgICAkVEQgPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRURCApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkTGluZS0+WzFdIGVxICdUcnVlJyApIHsKICAgICAgICAgICAgJExpbmUtPlsxXSA9ICcnOwogICAgICAgIH0KCiAgICAgICAgZm9yIG15ICRDb3VudCAoIDAgLi4gMyApIHsKICAgICAgICAgICAgJExpbmUtPlskQ291bnRdIHx8PSAnJzsKICAgICAgICB9CgogICAgICAgICRIVE1MTGluZXMgLj0gIiAgICAgICAgPHRyPlxuIgogICAgICAgICAgICAuICIgICAgICAgICAgPHRkIGFsaWduPVwicmlnaHRcIj4kTGluZS0+WzNdPC90ZD5cbiIKICAgICAgICAgICAgLiAiICAgICAgICAgIDx0ZD4kTGluZS0+WzBdPC90ZD5cbiIKICAgICAgICAgICAgLiAiICAgICAgICAgIDx0ZD4kTGluZS0+WzFdPC90ZD5cbiIKICAgICAgICAgICAgLiAiICAgICAgICAgIDx0ZD4kTGluZS0+WzJdPC90ZD5cbiIKICAgICAgICAgICAgLiAiICAgICAgICA8L3RyPiI7CiAgICB9CgogICAgcmV0dXJuIGlmICEkSFRNTExpbmVzOwoKICAgICRQYXJhbXtNb2R1bGVSZWZ9LT57T3V0cHV0fSA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0RldmVsRnJlZENvbmZpZ0xvZycsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgSFRNTExpbmVzID0+ICRIVE1MTGluZXMsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cgo9YmFjawo=</File>
        <File Location="Kernel/Output/HTML/Fred/ConfigSwitch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGcmVkOjpDb25maWdTd2l0Y2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RnJlZDo6Q29uZmlnU3dpdGNoIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIHRoZSBjb25maWcgc3dpdGNoIG1vZHVsZQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGcmVkQ29uZmlnU3dpdGNoLT5uZXcoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBDcmVhdGVGcmVkT3V0cHV0KCkKCmNyZWF0ZSB0aGUgb3V0cHV0IG9mIHRoZSBjb25maWcgc3dpdGNoIG1vZHVsZQoKICAgICRMYXlvdXRPYmplY3QtPkNyZWF0ZUZyZWRPdXRwdXQoCiAgICAgICAgTW9kdWxlc1JlZiA9PiAkTW9kdWxlc1JlZiwKICAgICk7Cgo9Y3V0CgpzdWIgQ3JlYXRlRnJlZE91dHB1dCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17TW9kdWxlUmVmfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgTW9kdWxlUmVmIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuIGlmICEkUGFyYW17TW9kdWxlUmVmfS0+e0RhdGF9OwoKICAgICRQYXJhbXtNb2R1bGVSZWZ9LT57T3V0cHV0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnRGV2ZWxGcmVkQ29uZmlnU3dpdGNoJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtcyA9PiAkUGFyYW17TW9kdWxlUmVmfS0+e0RhdGF9LAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgoxOwoKPWJhY2sK</File>
        <File Location="Kernel/Output/HTML/Fred/Console.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGcmVkOjpDb25zb2xlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKdXNlIEN3ZDsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RnJlZDo6Q29uc29sZSAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIFNZTk9QU0lTCgpBbGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiBjb25zb2xlIG9iamVjdAoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGcmVkQ29uc29sZS0+bmV3KAogICAgICAgICVQYXJhbSwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gQ3JlYXRlRnJlZE91dHB1dCgpCgpjcmVhdGUgdGhlIG91dHB1dCBvZiB0aGUgU1RERVJSIGxvZwoKICAgICRMYXlvdXRPYmplY3QtPkNyZWF0ZUZyZWRPdXRwdXQoCiAgICAgICAgTW9kdWxlc1JlZiA9PiAkTW9kdWxlc1JlZiwKICAgICk7Cgo9Y3V0CgpzdWIgQ3JlYXRlRnJlZE91dHB1dCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17TW9kdWxlUmVmfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgTW9kdWxlUmVmIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjcmVhdGUgdGhlIGNvbnNvbGUgdGFibGUKICAgIG15ICRDb25zb2xlID0gJ0FjdGl2YXRlZCBtb2R1bGVzOiA8c3Ryb25nPicKICAgICAgICAuICggam9pbiAnIC0gJywgQHsgJFBhcmFte01vZHVsZVJlZn0tPntEYXRhfSB9ICkKICAgICAgICAuICc8L3N0cm9uZz4nOwoKICAgIHJldHVybiAxIGlmICEkUGFyYW17TW9kdWxlUmVmfS0+e1N0YXR1c307CgogICAgaWYgKCAkUGFyYW17TW9kdWxlUmVmfS0+e1NldHRpbmd9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NldHRpbmcnLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgbXkgJFN5c3RlbU5hbWUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZyZWQ6OlN5c3RlbU5hbWUnKQogICAgICAgIHx8ICRDb25maWdPYmplY3QtPkdldCgnSG9tZScpOwogICAgbXkgJE9UT0JPVmVyc2lvbiAgICA9ICRDb25maWdPYmplY3QtPkdldCgnVmVyc2lvbicpIHx8ICdWZXJzaW9uIHVua25vd24nOwogICAgbXkgJEJhY2tncm91bmRDb2xvciA9ICRDb25maWdPYmplY3QtPkdldCgnRnJlZDo6QmFja2dyb3VuZENvbG9yJykKICAgICAgICB8fCAncmVkJzsKICAgIG15ICRCcmFuY2hOYW1lID0gJ2NvdWxkIG5vdCBiZSBkZXRlY3RlZCc7CgogICAgIyBBZGQgY3VycmVudCBnaXQgYnJhbmNoIHRvIG91dHB1dAogICAgbXkgJEhvbWUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0hvbWUnKTsKICAgIGlmICggLWQgIiRIb21lLy5naXQiICkgewogICAgICAgIG15ICRPbGRXb3JraW5nRGlyID0gZ2V0Y3dkKCk7CiAgICAgICAgY2hkaXIoJEhvbWUpOwogICAgICAgIG15ICRHaXRSZXN1bHQgPSBgZ2l0IGJyYW5jaGA7CiAgICAgICAgY2hkaXIoJE9sZFdvcmtpbmdEaXIpOwoKICAgICAgICBpZiAoJEdpdFJlc3VsdCkgewogICAgICAgICAgICAoJEJyYW5jaE5hbWUpID0gJEdpdFJlc3VsdCA9fiBtL15bKl0gXHMrIChcUyspL3htczsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEJyYW5jaENsYXNzOwogICAgbXkgJEJ1Z051bWJlcjsKCiAgICBpZiAoICRCcmFuY2hOYW1lIGVxICdtYXN0ZXInICkgewogICAgICAgICRCcmFuY2hDbGFzcyA9ICdXYXJuaW5nJzsKICAgIH0KICAgIGVsc2lmICggJEJyYW5jaE5hbWUgPX4gbXtidWctKChcZCl7MSw2fSkuKn0gKSB7CiAgICAgICAgJEJ1Z051bWJlciA9ICQxOwogICAgfQoKICAgICRQYXJhbXtNb2R1bGVSZWZ9LT57T3V0cHV0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnRGV2ZWxGcmVkQ29uc29sZScsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgVGV4dCAgICAgICAgICAgID0+ICRDb25zb2xlLAogICAgICAgICAgICBNb2RQZXJsICAgICAgICAgPT4gX01vZFBlcmwoKSwKICAgICAgICAgICAgUGVybCAgICAgICAgICAgID0+IHNwcmludGYoICIldmQiLCAkXlYgKSwKICAgICAgICAgICAgU3lzdGVtTmFtZSAgICAgID0+ICRTeXN0ZW1OYW1lLAogICAgICAgICAgICBPVE9CT1ZlcnNpb24gICAgPT4gJE9UT0JPVmVyc2lvbiwKICAgICAgICAgICAgQnJhbmNoTmFtZSAgICAgID0+ICRCcmFuY2hOYW1lLAogICAgICAgICAgICBCcmFuY2hDbGFzcyAgICAgPT4gJEJyYW5jaENsYXNzLAogICAgICAgICAgICBCYWNrZ3JvdW5kQ29sb3IgPT4gJEJhY2tncm91bmRDb2xvciwKICAgICAgICAgICAgQnVnTnVtYmVyICAgICAgID0+ICRCdWdOdW1iZXIsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfTW9kUGVybCB7CgogICAgIyBmaW5kIG91dCwgaWYgbW9kcGVybCBpcyB1c2VkCiAgICAjIGRpc3JlZ2FyZCAkRU5We01PRF9QRVJMfSBhcyBpdCBpcyBub3Qgc3VyZSB3aGV0aGVyIFBsYWNrOjpIYW5kbGVyOjpBcGFjaGUyIHNldHMgdGhpcyB2YXJpYWJsZQogICAgcmV0dXJuICRtb2RfcGVybDo6VkVSU0lPTiAvLyAnbm90IGFjdGl2ZSc7Cn0KCjE7Cgo9YmFjawo=</File>
        <File Location="Kernel/Output/HTML/Fred/EnvDump.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGcmVkOjpFbnZEdW1wOwojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpEdW1wZXIpCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRGF0YTo6RHVtcGVyOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZyZWQ6OkVudkR1bXAgLSBzaG93IGR1bXAgb2YgdGhlIGVudmlyb25tZW50IHJlZiwgZGF0YSBmb3IgJEVudiBpbiBkdGwKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIGxheW91dCBmdW5jdGlvbnMgb2YgdGhlIGxheW91dCBlbnZpcm9ubWVudCBkdW1wIG9iamVjdAoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGcmVkRW52RHVtcC0+bmV3KAogICAgICAgICVQYXJhbSwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gQ3JlYXRlRnJlZE91dHB1dCgpCgpHZXQgdGhlIHNlc3Npb24gZGF0YSBhbmQgY3JlYXRlIHRoZSBvdXRwdXQgb2YgdGhlIHNlc3Npb24gZHVtcAoKICAgICRMYXlvdXRPYmplY3QtPkNyZWF0ZUZyZWRPdXRwdXQoCiAgICAgICAgTW9kdWxlc1JlZiA9PiAkTW9kdWxlc1JlZiwKICAgICk7Cgo9Y3V0CgpzdWIgQ3JlYXRlRnJlZE91dHB1dCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17TW9kdWxlUmVmfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgTW9kdWxlUmVmIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIEtlcm5lbDo6U3lzdGVtOjpGcmVkOjpFbnZEdW1wOjpEYXRhR2V0KCkgaXMgbm90IHVzZWQsCiAgICAjIGFzIHRoZSBkYXRhIG9mIGludGVyZXN0IGlzIG5vdCBlYXNpbHkgYXZhaWxhYmxlIHRoZXJlLgogICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXsgJExheW91dE9iamVjdC0+e0VudlJlZn0gfSApIHsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0VudkRhdGFSb3cnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICRLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT57RW52UmVmfS0+eyRLZXl9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBvdXRwdXQgdGhlIGh0bWwKICAgICRQYXJhbXtNb2R1bGVSZWZ9LT57T3V0cHV0fSA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0RldmVsRnJlZEVudkR1bXAnLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsKCj1iYWNrCg==</File>
        <File Location="Kernel/Output/HTML/Fred/HTMLCheck.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGcmVkOjpIVE1MQ2hlY2s7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RnJlZDo6SFRNTENoZWNrIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIEhUTUwgY2hlY2sgb2JqZWN0Cgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZyZWRTVERFUlJMb2ctPm5ldygKICAgICAgICAlUGFyYW0sCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIENyZWF0ZUZyZWRPdXRwdXQoKQoKY3JlYXRlIHRoZSBvdXRwdXQgb2YgdGhlIFNUREVSUiBsb2cKCiAgICAkTGF5b3V0T2JqZWN0LT5DcmVhdGVGcmVkT3V0cHV0KAogICAgICAgIE1vZHVsZXNSZWYgPT4gJE1vZHVsZXNSZWYsCiAgICApOwoKPWN1dAoKc3ViIENyZWF0ZUZyZWRPdXRwdXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkSFRNTExpbmVzID0gJyc7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtNb2R1bGVSZWZ9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBNb2R1bGVSZWYhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAkUGFyYW17TW9kdWxlUmVmfS0+e091dHB1dH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0RldmVsRnJlZEhUTUxDaGVjaycsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgSFRNTExpbmVzID0+ICRIVE1MTGluZXMsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cgo9YmFjawo=</File>
        <File Location="Kernel/Output/HTML/Fred/JSLint.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGcmVkOjpKU0xpbnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RnJlZDo6SlNMaW50IC0gRnJlZCBtb2R1bGUgZm9yIEpTTGludCBjaGVja3MKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIGxheW91dCBmdW5jdGlvbnMgb2YgSlNMaW50IG9iamVjdAoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGcmVkSlNMaW50LT5uZXcoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBDcmVhdGVGcmVkT3V0cHV0KCkKCmNyZWF0ZSB0aGUgb3V0cHV0IG9mIHRoZSBKU0xpbnQgbW9kdWxlCgogICAgJExheW91dE9iamVjdC0+Q3JlYXRlRnJlZE91dHB1dCgKICAgICAgICBNb2R1bGVzUmVmID0+ICRNb2R1bGVzUmVmLAogICAgKTsKCj1jdXQKCnN1YiBDcmVhdGVGcmVkT3V0cHV0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtNb2R1bGVSZWZ9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBNb2R1bGVSZWYhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAkUGFyYW17TW9kdWxlUmVmfS0+e091dHB1dH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0RldmVsRnJlZEpTTGludCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHt9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsKCj1iYWNrCg==</File>
        <File Location="Kernel/Output/HTML/Fred/SessionDump.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGcmVkOjpTZXNzaW9uRHVtcDsKIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6RHVtcGVyKQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKKTsKCnVzZSBEYXRhOjpEdW1wZXI7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZyZWQ6OlNlc3Npb25EdW1wIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIHRoZSBzZXNzaW9uIGR1bXAgb2JqZWN0Cgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZyZWRTZXNzaW9uRHVtcC0+bmV3KAogICAgICAgICVQYXJhbSwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gQ3JlYXRlRnJlZE91dHB1dCgpCgpHZXQgdGhlIHNlc3Npb24gZGF0YSBhbmQgY3JlYXRlIHRoZSBvdXRwdXQgb2YgdGhlIHNlc3Npb24gZHVtcAoKICAgICRMYXlvdXRPYmplY3QtPkNyZWF0ZUZyZWRPdXRwdXQoCiAgICAgICAgTW9kdWxlc1JlZiA9PiAkTW9kdWxlc1JlZiwKICAgICk7Cgo9Y3V0CgpzdWIgQ3JlYXRlRnJlZE91dHB1dCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17TW9kdWxlUmVmfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgTW9kdWxlUmVmIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJExheW91dE9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpOwoKICAgICMgRGF0YSBpcyBnZW5lcmF0ZWQgaGVyZSwgYXMgaXQgaXMgbm90IGF2YWlsYWJsZSBpbiBLZXJuZWw6OlN5c3RlbTo6RnJlZDo6U2Vzc2lvbkR1bXAKICAgIG15ICRTZXNzaW9uSUQgPSAkTGF5b3V0T2JqZWN0LT57RW52UmVmfS0+e1Nlc3Npb25JRH07CiAgICBteSAlU2Vzc2lvbkRhdGE7CiAgICBpZiAoJFNlc3Npb25JRCkgewogICAgICAgICVTZXNzaW9uRGF0YSA9ICRTZXNzaW9uT2JqZWN0LT5HZXRTZXNzaW9uSUREYXRhKCBTZXNzaW9uSUQgPT4gJFNlc3Npb25JRCApOwogICAgfQoKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVTZXNzaW9uRGF0YSApIHsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1Nlc3Npb25EYXRhUm93JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkS2V5LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFNlc3Npb25EYXRheyRLZXl9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBvdXRwdXQgdGhlIGh0bWwKICAgICRQYXJhbXtNb2R1bGVSZWZ9LT57T3V0cHV0fSA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0RldmVsRnJlZFNlc3Npb25EdW1wJywKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cgo9YmFjawo=</File>
        <File Location="Kernel/Output/HTML/Fred/STDERRLog.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGcmVkOjpTVERFUlJMb2c7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZyZWQ6OlNUREVSUkxvZyAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIFNZTk9QU0lTCgpBbGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiBTVERFUlIgbG9nIG9iamVjdHMKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgJEJhY2tlbmRPYmplY3QgPSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RnJlZFNUREVSUkxvZy0+bmV3KAogICAgICAgICVQYXJhbSwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gQ3JlYXRlRnJlZE91dHB1dCgpCgpjcmVhdGUgdGhlIG91dHB1dCBvZiB0aGUgU1RERVJSIGxvZwoKICAgICRMYXlvdXRPYmplY3QtPkNyZWF0ZUZyZWRPdXRwdXQoCiAgICAgICAgTW9kdWxlc1JlZiA9PiAkTW9kdWxlc1JlZiwKICAgICk7Cgo9Y3V0CgpzdWIgQ3JlYXRlRnJlZE91dHB1dCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17TW9kdWxlUmVmfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgTW9kdWxlUmVmIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuIGlmICEkUGFyYW17TW9kdWxlUmVmfS0+e0RhdGF9OwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17TW9kdWxlUmVmfS0+e0RhdGF9IG5lICdBUlJBWSc7CgogICAgIyBjcmVhdGUgaHRtbCBzdHJpbmcKICAgIG15ICRIVE1MTGluZXM7CiAgICBteSAkSFRNTExpbmVzRmlsdGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGcmVkOjpTVERFUlJMb2dGaWx0ZXInKTsKCiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lICggcmV2ZXJzZSBAeyAkUGFyYW17TW9kdWxlUmVmfS0+e0RhdGF9IH0gKSB7CgogICAgICAgICMgZmlsdGVyIGNvbnRlbnQgaWYgbmVlZGVkCiAgICAgICAgaWYgKCRIVE1MTGluZXNGaWx0ZXIpIHsKICAgICAgICAgICAgbmV4dCBMSU5FIGlmICRMaW5lID1+IC8kSFRNTExpbmVzRmlsdGVyL3NteDsKICAgICAgICB9CgogICAgICAgICRIVE1MTGluZXMgLj0gJExpbmU7CiAgICB9CgogICAgcmV0dXJuIGlmICEkSFRNTExpbmVzOwoKICAgICMgb3V0cHV0IHRoZSBodG1sCiAgICAkUGFyYW17TW9kdWxlUmVmfS0+e091dHB1dH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0RldmVsRnJlZFNUREVSUkxvZycsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgSFRNTExpbmVzID0+ICRIVE1MTGluZXMsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cgo9YmFjawo=</File>
        <File Location="Kernel/Output/HTML/Fred/SQLLog.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGcmVkOjpTUUxMb2c7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RnJlZDo6U1FMTG9nIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIFNRTCBsb2cgbW9kdWxlCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZyZWRTUUxMb2ctPm5ldygKICAgICAgICAlUGFyYW0sCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIENyZWF0ZUZyZWRPdXRwdXQoKQoKY3JlYXRlIHRoZSBvdXRwdXQgb2YgdGhlIFNRTCBsb2cKCiAgICAkTGF5b3V0T2JqZWN0LT5DcmVhdGVGcmVkT3V0cHV0KAogICAgICAgIE1vZHVsZXNSZWYgPT4gJE1vZHVsZXNSZWYsCiAgICApOwoKPWN1dAoKc3ViIENyZWF0ZUZyZWRPdXRwdXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte01vZHVsZVJlZn0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIE1vZHVsZVJlZiEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgQFNRTExvZzsKCiAgICBmb3IgbXkgJExpbmUgKCBAeyAkUGFyYW17TW9kdWxlUmVmfS0+e0RhdGF9IH0gKSB7CgogICAgICAgIG15ICVTUUxMb2dFbnRyeSA9ICgKICAgICAgICAgICAgVGltZSAgICAgICAgICAgID0+ICRMaW5lLT5bNF0gKiAxMDAwLAogICAgICAgICAgICBFcXVhbFN0YXRlbWVudHMgPT4gJExpbmUtPls1XSB8fCAnJywKICAgICAgICAgICAgU3RhdGVtZW50ICAgICAgID0+ICRMaW5lLT5bMV0sCiAgICAgICAgICAgIFBhY2thZ2UgICAgICAgICA9PiAkTGluZS0+WzNdLAogICAgICAgICAgICBCaW5kUGFyYW1ldGVycyAgPT4gJExpbmUtPlsyXSwKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJExpbmUgKCBzcGxpdCggLzsvLCAkTGluZS0+WzNdICkgKSB7CiAgICAgICAgICAgICRTUUxMb2dFbnRyeXtTdGFja1RyYWNlfSAvLz0gW107CiAgICAgICAgICAgIHB1c2ggQHsgJFNRTExvZ0VudHJ5e1N0YWNrVHJhY2V9IH0sICRMaW5lOwogICAgICAgIH0KCiAgICAgICAgcHVzaCBAU1FMTG9nLCBcJVNRTExvZ0VudHJ5OwogICAgfQoKICAgICRQYXJhbXtNb2R1bGVSZWZ9LT57T3V0cHV0fSA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0RldmVsRnJlZFNRTExvZycsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgQWxsU3RhdGVtZW50cyAgICA9PiAkUGFyYW17TW9kdWxlUmVmfS0+e0FsbFN0YXRlbWVudHN9LAogICAgICAgICAgICBEb1N0YXRlbWVudHMgICAgID0+ICRQYXJhbXtNb2R1bGVSZWZ9LT57RG9TdGF0ZW1lbnRzfSwKICAgICAgICAgICAgU2VsZWN0U3RhdGVtZW50cyA9PiAkUGFyYW17TW9kdWxlUmVmfS0+e1NlbGVjdFN0YXRlbWVudHN9LAogICAgICAgICAgICBUaW1lICAgICAgICAgICAgID0+ICRQYXJhbXtNb2R1bGVSZWZ9LT57VGltZX0sCiAgICAgICAgICAgIFNRTExvZyAgICAgICAgICAgPT4gXEBTUUxMb2csCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cgo9YmFjawo=</File>
        <File Location="Kernel/Output/HTML/Fred/TranslationDebug.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGcmVkOjpUcmFuc2xhdGlvbkRlYnVnOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZyZWQ6OlRyYW5zbGF0aW9uRGVidWcgLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIGxheW91dCBmdW5jdGlvbnMgb2YgdHJhbnNsYXRpb24gZGVidWcgbW9kdWxlCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZyZWRUcmFuc2xhdGlvbkRlYnVnLT5uZXcoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBDcmVhdGVGcmVkT3V0cHV0KCkKCmNyZWF0ZSB0aGUgb3V0cHV0IG9mIHRoZSB0cmFuc2xhdGlvbiBkZWJ1Z2dpbmcgbG9nCgogICAgJExheW91dE9iamVjdC0+Q3JlYXRlRnJlZE91dHB1dCgKICAgICAgICBNb2R1bGVzUmVmID0+ICRNb2R1bGVzUmVmLAogICAgKTsKCj1jdXQKCnN1YiBDcmVhdGVGcmVkT3V0cHV0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtNb2R1bGVSZWZ9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBNb2R1bGVSZWYhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkSFRNTExpbmVzID0gJyc7CiAgICBmb3IgbXkgJExpbmUgKCBAeyAkUGFyYW17TW9kdWxlUmVmfS0+e0RhdGF9IH0gKSB7CiAgICAgICAgJEhUTUxMaW5lcyAuPSAiPHNwYW4+JExpbmU8L3NwYW4+IjsKICAgIH0KCiAgICByZXR1cm4gMSBpZiAhJEhUTUxMaW5lczsKCiAgICAkUGFyYW17TW9kdWxlUmVmfS0+e091dHB1dH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0RldmVsRnJlZFRyYW5zbGF0aW9uRGVidWcnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIEhUTUxMaW5lcyA9PiAkSFRNTExpbmVzLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgoxOwoKPWJhY2sK</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/DevelFredConfigLog.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJEZXZlbEZyZWRCb3giPgogICAgPGgxPgogICAgICAgIENvbmZpZ3VyYXRpb24gTG9nCiAgICAgICAgPHNwYW4gY2xhc3M9IkZyZWRUb29sQmFyIj4KICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXNlYXJjaCBGcmVkU2VhcmNoIiB0aXRsZT0iVG9nZ2xlIFNlYXJjaCBCYXIiPjwvaT4KICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLW1pbnVzIEZyZWRNaW5pbWl6ZSIgdGl0bGU9Ik1pbmltaXplIj48L2k+CiAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10aW1lcyBGcmVkQ2xvc2UiIHRpdGxlPSJDbG9zZSI+PC9pPgogICAgICAgIDwvc3Bhbj4KICAgIDwvaDE+CiAgICA8ZGl2IGNsYXNzPSJEZXZlbEZyZWRCb3hDb250ZW50IiBpZD0iRGV2ZWxGcmVkQ29uZmlnTG9nIj4KICAgICAgICA8ZGl2IGNsYXNzPSJGcmVkUXVpY2tTZWFyY2giPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IlNlYXJjaCBmb3IuLi4iIC8+CiAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10aW1lcyI+PC9pPgogICAgICAgIDwvZGl2PgogICAgICAgIDx0YWJsZSBjbGFzcz0iRnJlZFRhYmxlRGVmYXVsdCI+CiAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGg+Q2FsbHM8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aD5Db25maWc8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aD5TdGF0dXM8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aD5QYWNrYWdlPC90aD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGhlYWQ+ClslIERhdGEuSFRNTExpbmVzICVdCiAgICAgICAgICAgIDx0ciBjbGFzcz0iSGlkZGVuIEZpbHRlck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjQiPk5vIEl0ZW1zIGZvdW5kLjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/DevelFredConfigSwitch.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8IS0tIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlRUOjpTY3JpcHRVc2FnZSkgLS0+Cgo8ZGl2IGNsYXNzPSJEZXZlbEZyZWRCb3giPgogICAgPGgxPgogICAgICAgIENvbmZpZ3VyYXRpb24gU3dpdGNoCiAgICAgICAgPHNwYW4gY2xhc3M9IkZyZWRUb29sQmFyIj4KICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXNlYXJjaCBGcmVkU2VhcmNoIiB0aXRsZT0iVG9nZ2xlIFNlYXJjaCBCYXIiPjwvaT4KICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLW1pbnVzIEZyZWRNaW5pbWl6ZSIgdGl0bGU9Ik1pbmltaXplIj48L2k+CiAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10aW1lcyBGcmVkQ2xvc2UiIHRpdGxlPSJDbG9zZSI+PC9pPgogICAgICAgIDwvc3Bhbj4KICAgIDwvaDE+CiAgICA8ZGl2IGNsYXNzPSJEZXZlbEZyZWRCb3hDb250ZW50IiBpZD0iRGV2ZWxGcmVkQ29uZmlnU3dpdGNoIj4KICAgICAgICA8ZGl2IGNsYXNzPSJGcmVkUXVpY2tTZWFyY2giPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IlNlYXJjaCBmb3IuLi4iIC8+CiAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10aW1lcyI+PC9pPgogICAgICAgIDwvZGl2PgogICAgICAgIDx0YWJsZSBjbGFzcz0iRnJlZFRhYmxlRGVmYXVsdCBGcmVkU3dpdGNoVGFibGUiPgogICAgICAgIFslIEZPUkVBQ0ggSXRlbSBJTiBEYXRhLkNvbmZpZ0l0ZW1zICVdCiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iRnJlZFN3aXRjaCBbJSBJRiBJdGVtLlZhbHVlID09IDEgJV1PblslIEVORCAlXSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgZGF0YS1rZXk9IlslIEl0ZW0uS2V5IHwgaHRtbCAlXSIgZGF0YS12YWx1ZT0iWyUgSXRlbS5WYWx1ZSB8IGh0bWwgJV0iIHRpdGxlPSJTd2l0Y2ggdGhpcyBzZXR0aW5nIj48c3Bhbj48L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZD5bJSBJdGVtLktleSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgIFslIEVORCAlXQogICAgICAgICAgICA8dHIgY2xhc3M9IkhpZGRlbiBGaWx0ZXJNZXNzYWdlIj4KICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI0Ij5ObyBJdGVtcyBmb3VuZC48L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CiAgICA8L2Rpdj4KPC9kaXY+Cgo8IS0tIGpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo8c2NyaXB0PgondXNlIHN0cmljdCc7CiQoJy5GcmVkU3dpdGNoIGEnKS51bmJpbmQoJ2NsaWNrJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbihFdmVudCkgewoKICAgIHZhciBLZXkgPSAkKHRoaXMpLmRhdGEoJ2tleScpLAogICAgICAgIFZhbHVlID0gcGFyc2VJbnQoJCh0aGlzKS5kYXRhKCd2YWx1ZScpLCAxMCksCiAgICAgICAgRGF0YSA9IHt9OwoKICAgIGlmICghS2V5KSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgICQodGhpcykKICAgICAgICAucGFyZW50KCkKICAgICAgICAudG9nZ2xlQ2xhc3MoJ09uJyk7CgogICAgJCh0aGlzKQogICAgICAgIC5wYXJlbnQoKQogICAgICAgIC5uZXh0KCd0ZCcpCiAgICAgICAgLnByZXBlbmQoJzxpIGNsYXNzPSJmYSBmYS1jaXJjbGUtby1ub3RjaCBmYS1zcGluIj48L2k+Jm5ic3A7Jyk7CgogICAgRGF0YSA9IHsKICAgICAgICBBY3Rpb246ICdEZXZlbEZyZWQnLAogICAgICAgIFN1YmFjdGlvbjogJ0NvbmZpZ1N3aXRjaEFKQVgnLAogICAgICAgICdLZXknOiBLZXksCiAgICAgICAgJ1ZhbHVlJzogVmFsdWUKICAgIH07CgogICAgQ29yZS5BSkFYLkZ1bmN0aW9uQ2FsbCgKICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJyksCiAgICAgICAgRGF0YSwKICAgICAgICBmdW5jdGlvbihSZXNwb25zZSkgewogICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQodHJ1ZSk7CiAgICAgICAgfSwKICAgICAgICAnanNvbicKICAgICk7CgogICAgcmV0dXJuIGZhbHNlOwoKfSk7Cjwvc2NyaXB0Pgo8IS0tIGpzX29uX2RvY3VtZW50X2NvbXBsZXRlIC0tPgo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/DevelFredConsole.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiIHNjb3BlZD0iIj4KLkRldmVsRnJlZENvbnRhaW5lciB7CiAgICB3aWR0aDogWyUgQ29uZmlnKCJGcmVkOjpDb25zb2xlV2lkdGgiKSAlXTsKICAgIC1tb3otb3BhY2l0eTogWyUgQ29uZmlnKCJGcmVkOjpDb25zb2xlT3BhY2l0eSIpICVdOwogICAgLXdlYmtpdC1vcGFjaXR5OiBbJSBDb25maWcoIkZyZWQ6OkNvbnNvbGVPcGFjaXR5IikgJV07CiAgICBvcGFjaXR5OiBbJSBDb25maWcoIkZyZWQ6OkNvbnNvbGVPcGFjaXR5IikgJV07Cn0KCi5EZXZlbEZyZWRCb3ggaDEsIC5EZXZlbEZyZWRCb3guRXhwYW5kZWQgaDEgewogICAgYmFja2dyb3VuZC1jb2xvcjogWyUgRGF0YS5CYWNrZ3JvdW5kQ29sb3IgfCBodG1sICVdOwp9CgpbJSBJRiBDb25maWcoIkZyZWQ6OkNvbnNvbGVIZWlnaHQiKSAlXQouRGV2ZWxGcmVkQm94Q29udGVudCB7CiAgICBtYXgtaGVpZ2h0OiBbJSBDb25maWcoIkZyZWQ6OkNvbnNvbGVIZWlnaHQiKSAlXTsKfQpbJSBFTkQgJV0KPC9zdHlsZT4KCjxkaXYgY2xhc3M9IkRldmVsRnJlZEJveCI+CiAgICA8aDE+CiAgICAgICAgRnJlZCBDb25zb2xlCiAgICAgICAgPHNwYW4gY2xhc3M9IkZyZWRUb29sQmFyIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2V0dGluZyIpICVdCiAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jb2cgRnJlZFNldHRpbmdzIiBkYXRhLXVybD0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPURldmVsRnJlZDtTdWJhY3Rpb249U2V0dGluZyI+PC9pPgpbJSBSZW5kZXJCbG9ja0VuZCgiU2V0dGluZyIpICVdCiAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1taW51cyBGcmVkTWluaW1pemUiIHRpdGxlPSJNaW5pbWl6ZSI+PC9pPgogICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtdGltZXMgRnJlZENsb3NlQWxsIiB0aXRsZT0iQ2xvc2UgYWxsIj48L2k+CiAgICAgICAgPC9zcGFuPgogICAgPC9oMT4KICAgIDxkaXYgY2xhc3M9IkRldmVsRnJlZEJveENvbnRlbnQgRnJlZEVsZW1lbnRMaXN0IiBpZD0iRGV2ZWxGcmVkQ29uc29sZSI+CiAgICAgICAgPHNwYW4+U3lzdGVtIDxzdHJvbmc+WyUgRGF0YS5TeXN0ZW1OYW1lIHwgaHRtbCAlXTwvc3Ryb25nPjwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iWyUgRGF0YS5CcmFuY2hDbGFzcyB8IGh0bWwgJV0iPkJyYW5jaCA8c3Ryb25nPlslIERhdGEuQnJhbmNoTmFtZSB8IGh0bWwgJV08L3N0cm9uZz48L3NwYW4+CiAgICAgICAgPHNwYW4+T1RPQk8gPHN0cm9uZz5bJSBEYXRhLk9UT0JPVmVyc2lvbiB8IGh0bWwgJV08L3N0cm9uZz48L3NwYW4+CiAgICAgICAgPHNwYW4+bW9kX3BlcmwgPHN0cm9uZz5bJSBEYXRhLk1vZFBlcmwgfCBodG1sICVdPC9zdHJvbmc+PC9zcGFuPgogICAgICAgIDxzcGFuPlBlcmwgPHN0cm9uZz5bJSBEYXRhLlBlcmwgfCBodG1sICVdPC9zdHJvbmc+PC9zcGFuPgogICAgWyUgSUYgRGF0YS5CdWdOdW1iZXIgJV0KICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtZXh0ZXJuYWwtbGluayI+PC9pPiBPcGVuIDxhIGhyZWY9Imh0dHBzOi8vYnVncy5vdG9iby5vcmcvc2hvd19idWcuY2dpP2lkPVslIERhdGEuQnVnTnVtYmVyIHwgdXJpICVdIiB0YXJnZXQ9Il9ibGFuayI+QnVnI1slIERhdGEuQnVnTnVtYmVyIHwgaHRtbCAlXTwvYT4gaW4gQnVnWmlsbGE8L3NwYW4+CiAgICBbJSBFTkQgJV0KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/DevelFredContainer.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxkaXYgY2xhc3M9IkRldmVsRnJlZENvbnRhaW5lciIgaWQ9IkRldmVsRnJlZENvbnRhaW5lciI+CiAgICBbJSBEYXRhLkRhdGEgJV0KPC9kaXY+Cg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/DevelFredEnvDump.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxkaXYgY2xhc3M9IkRldmVsRnJlZEJveCI+CiAgICA8aDE+CiAgICAgICAgRW52aXJvbm1lbnQgVmFyaWFibGVzCiAgICAgICAgPHNwYW4gY2xhc3M9IkZyZWRUb29sQmFyIj4KICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXNlYXJjaCBGcmVkU2VhcmNoIiB0aXRsZT0iU2VhcmNoIj48L2k+CiAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1taW51cyBGcmVkTWluaW1pemUiIHRpdGxlPSJNaW5pbWl6ZSI+PC9pPgogICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtdGltZXMgRnJlZENsb3NlIiB0aXRsZT0iQ2xvc2UiPjwvaT4KICAgICAgICA8L3NwYW4+CiAgICA8L2gxPgogICAgPGRpdiBjbGFzcz0iRGV2ZWxGcmVkQm94Q29udGVudCIgaWQ9IkRldmVsRnJlZEVudkR1bXAiPgogICAgICAgIDxkaXYgY2xhc3M9IkZyZWRRdWlja1NlYXJjaCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvci4uLiIgLz4KICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXRpbWVzIj48L2k+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPHRhYmxlIGNsYXNzPSJGcmVkVGFibGVEZWZhdWx0Ij4KICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0aD5LZXk8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aD5WYWx1ZTwvdGg+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RoZWFkPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJFbnZEYXRhUm93IikgJV0KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPlslIERhdGEuS2V5IHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+WyUgRGF0YS5WYWx1ZSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiRW52RGF0YVJvdyIpICVdCiAgICAgICAgICAgIDx0ciBjbGFzcz0iSGlkZGVuIEZpbHRlck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPk5vIEl0ZW1zIGZvdW5kLjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/DevelFredHTMLCheck.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8IS0tIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlRUOjpTY3JpcHRVc2FnZSkgLS0+Cgo8ZGl2IGNsYXNzPSJEZXZlbEZyZWRCb3giPgogICAgPGgxPgogICAgICAgIEhUTUxDaGVjawogICAgICAgIDxzcGFuIGNsYXNzPSJGcmVkVG9vbEJhciI+CiAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1taW51cyBGcmVkTWluaW1pemUiIHRpdGxlPSJNaW5pbWl6ZSI+PC9pPgogICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtdGltZXMgRnJlZENsb3NlIiB0aXRsZT0iQ2xvc2UiPjwvaT4KICAgICAgICA8L3NwYW4+CiAgICA8L2gxPgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICBDb3JlLkFwcC5SZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICBDb3JlLkZyZWQuSFRNTENoZWNrLkNoZWNrRm9yU3RhcnQoKTsKICAgICAgICB9KTsKICAgIDwvc2NyaXB0PgogICAgPGRpdiBzdHlsZT0icGFkZGluZzo1cHg7IiBpZD0iRnJlZEhUTUxDaGVja1Jlc3VsdHMiIGNsYXNzPSJEZXZlbEZyZWRCb3hDb250ZW50Ij4KICAgICAgICA8ZGl2IGlkPSJGcmVkSFRNTENoZWNrUnVubmluZyI+PGkgY2xhc3M9ImZhIGZhLXNwaW5uZXIgZmEgZmEtc3BpbiI+PC9pPiZuYnNwOyBDaGVja3MgYXJlIHJ1bm5pbmcuLi48L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/DevelFredJSLint.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8IS0tIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlRUOjpTY3JpcHRVc2FnZSkgLS0+Cgo8ZGl2IGNsYXNzPSJEZXZlbEZyZWRCb3giPgogICAgPGgxPgogICAgICAgIEpTTGludAogICAgICAgIDxzcGFuIGNsYXNzPSJGcmVkVG9vbEJhciI+CiAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1taW51cyBGcmVkTWluaW1pemUiIHRpdGxlPSJNaW5pbWl6ZSI+PC9pPgogICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtdGltZXMgRnJlZENsb3NlIiB0aXRsZT0iQ2xvc2UiPjwvaT4KICAgICAgICA8L3NwYW4+CiAgICA8L2gxPgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgICJ1c2Ugc3RyaWN0IjsKICAgICAgICBDb3JlLkFwcC5SZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICBDb3JlLkZyZWQuSlNMaW50LkluaXQoKTsKICAgICAgICB9KTsKICAgIDwvc2NyaXB0PgogICAgPGRpdiBjbGFzcz0iRGV2ZWxGcmVkQm94Q29udGVudCIgaWQ9IkZyZWRKU0xpbnRTY3JpcHRzIj4KICAgICAgICA8ZGl2IGlkPSJGcmVkSlNMaW50UnVubmluZyI+CiAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1zcGlubmVyIGZhIGZhLXNwaW4iPjwvaT4mbmJzcDsgQ2hlY2tzIGFyZSBydW5uaW5nLi4uCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+Cg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/DevelFredSessionDump.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxkaXYgY2xhc3M9IkRldmVsRnJlZEJveCI+CiAgICA8aDE+CiAgICAgICAgU2Vzc2lvbkR1bXAKICAgICAgICA8c3BhbiBjbGFzcz0iRnJlZFRvb2xCYXIiPgogICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc2VhcmNoIEZyZWRTZWFyY2giIHRpdGxlPSJTZWFyY2giPjwvaT4KICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLW1pbnVzIEZyZWRNaW5pbWl6ZSIgdGl0bGU9Ik1pbmltaXplIj48L2k+CiAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10aW1lcyBGcmVkQ2xvc2UiIHRpdGxlPSJDbG9zZSI+PC9pPgogICAgICAgIDwvc3Bhbj4KICAgIDwvaDE+CiAgICA8ZGl2IGNsYXNzPSJEZXZlbEZyZWRCb3hDb250ZW50IiBpZD0iRGV2ZWxGcmVkU2Vzc2lvbkR1bXAiPgogICAgICAgIDxkaXYgY2xhc3M9IkZyZWRRdWlja1NlYXJjaCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iU2VhcmNoIGZvci4uLiIgLz4KICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXRpbWVzIj48L2k+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPHRhYmxlIGNsYXNzPSJGcmVkVGFibGVEZWZhdWx0Ij4KICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0aD5LZXk8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aD5WYWx1ZTwvdGg+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RoZWFkPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZXNzaW9uRGF0YVJvdyIpICVdCiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLktleSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxwcmU+WyUgRGF0YS5WYWx1ZSB8IGh0bWwgJV08L3ByZT4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJTZXNzaW9uRGF0YVJvdyIpICVdCiAgICAgICAgICAgIDx0ciBjbGFzcz0iSGlkZGVuIEZpbHRlck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiPk5vIEl0ZW1zIGZvdW5kLjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/DevelFredSetting.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJEZXZlbEZyZWRTZXR0aW5ncyI+CiAgICA8aDE+RnJlZCBTZXR0aW5nczwvaDE+CiAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbmFtZT0iRGV2ZWxGcmVkU2V0dGluZyI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iRGV2ZWxGcmVkIiAvPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNldHRpbmdBY3Rpb24iIC8+CiAgICAgICAgPHVsIGNsYXNzPSJGcmVkU2V0dGluZ3MiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGcmVkTW9kdWxlIikgJV0KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iWyUgRGF0YS5GcmVkTW9kdWxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJGcmVkTW9kdWxlIiBpZD0iWyUgRGF0YS5GcmVkTW9kdWxlIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuRnJlZE1vZHVsZSB8IGh0bWwgJV0iIFslIERhdGEuQ2hlY2tlZCAlXS8+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GcmVkTW9kdWxlIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkRlc2NyaXB0aW9uICVdCiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9sYWJlbD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29uZmlnIikgJV0KICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZG1pblN5c0NvbmZpZztTdWJhY3Rpb249RWRpdDtTeXNDb25maWdTdWJHcm91cD1bJSBEYXRhLk1vZHVsZU5hbWUgJV07U3lzQ29uZmlnR3JvdXA9RnJlZCIgdGl0bGU9IlNldHRpbmdzIiBjbGFzcz0iRnJlZFNldHRpbmdzTGluayIgdGFyZ2V0PSJfYmxhbmsiPjxpIGNsYXNzPSJmYSBmYS1jb2ciPjwvaT48L2E+ClslIFJlbmRlckJsb2NrRW5kKCJDb25maWciKSAlXQogICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiRnJlZE1vZHVsZSIpICVdCiAgICAgICAgPC91bD4KICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9IkNhbGxGb3JBY3Rpb24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgIDwvZm9ybT4KPC9kaXY+Cg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/DevelFredSQLLog.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8IS0tIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlRUOjpTY3JpcHRVc2FnZSkgLS0+Cgo8ZGl2IGNsYXNzPSJEZXZlbEZyZWRCb3giIGlkPSJEZXZlbEZyZWRCb3hTUUxMb2ciPgogICAgPGgxPgogICAgICAgIFNRTCBMb2cKICAgICAgICA8c3BhbiBjbGFzcz0iRnJlZFRvb2xCYXIiPgogICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc2VhcmNoIEZyZWRTZWFyY2giIHRpdGxlPSJTZWFyY2giPjwvaT4KICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLW1pbnVzIEZyZWRNaW5pbWl6ZSIgdGl0bGU9Ik1pbmltaXplIj48L2k+CiAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10aW1lcyBGcmVkQ2xvc2UiIHRpdGxlPSJDbG9zZSI+PC9pPgogICAgICAgIDwvc3Bhbj4KICAgIDwvaDE+CiAgICA8ZGl2IGNsYXNzPSJEZXZlbEZyZWRCb3hDb250ZW50IiBpZD0iRGV2ZWxGcmVkU1FMTG9nIj4KICAgICAgICA8ZGl2IGNsYXNzPSJGcmVkRWxlbWVudExpc3QiPgogICAgICAgICAgICA8c3Bhbj5FeGVjdXRlZCA8c3Ryb25nPlslIERhdGEuQWxsU3RhdGVtZW50cyAlXTwvc3Ryb25nPiBTdGF0ZW1lbnRzPC9zcGFuPgogICAgICAgICAgICA8c3Bhbj48c3Ryb25nPlslIERhdGEuU2VsZWN0U3RhdGVtZW50cyB8IGh0bWwgJV08L3N0cm9uZz4gU0VMRUNUcyArIDxzdHJvbmc+WyUgRGF0YS5Eb1N0YXRlbWVudHMgfCBodG1sICVdPC9zdHJvbmc+IERPczwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4+RHVyYXRpb246IDxzdHJvbmc+WyUgRGF0YS5UaW1lIHwgaHRtbCAlXTwvc3Ryb25nPiBzLjwvc3Bhbj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJGcmVkUXVpY2tTZWFyY2giPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IlNlYXJjaCBmb3IuLi4iIC8+CiAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10aW1lcyI+PC9pPgogICAgICAgIDwvZGl2PgogICAgICAgIDx0YWJsZSBjbGFzcz0iRnJlZFRhYmxlRGVmYXVsdCI+CiAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGggdGl0bGU9IlRpbWUgKG1zKSI+bXM8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCB0aXRsZT0iRXF1YWwgU3RhdGVtZW50cyI+RXF1YWw8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aD5TdGF0ZW1lbnQ8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCB0aXRsZT0iQmluZCBwYXJhbWV0ZXJzIj5CaW5kPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGg+UGFja2FnZTwvdGg+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9IkhpZGRlbiBGaWx0ZXJNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNSI+Tm8gSXRlbXMgZm91bmQuPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+ClslIElGIERhdGEuU1FMTG9nLnNpemUgPiAyMDAgJV0KIyBEb24ndCBvdXRwdXQgdG9vIG1hbnkgcmVjb3JkcyB0byBtYWtlIHN1cmUgdGhlIEdVSSBkb2VzIG5vdCBmcmVlemUuCiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9IkVycm9yIj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNSI+VG9vIG1hbnkgc3RhdGVtZW50cyBmb3VuZCAoWyUgRGF0YS5TUUxMb2cuc2l6ZSB8IGh0bWwgJV0pLjwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgpbJSBFTFNFICVdCiAgICBbJSBGT1JFQUNIIFJvdyBJTiBEYXRhLlNRTExvZyAlXQogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iVGltZSI+WyUgUm93LlRpbWUgfCB0cnVuY2F0ZSg2KSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iRXF1YWxTdGF0ZW1lbnRzIj5bJSBSb3cuRXF1YWxTdGF0ZW1lbnRzIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJTUUxTdGF0ZW1lbnQiPlslIFJvdy5TdGF0ZW1lbnQgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkJpbmRQYXJhbWV0ZXJzIj4KICAgICAgICBbJSBJRiBSb3cuQmluZFBhcmFtZXRlcnMgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IlNob3dCaW5kUGFyYW1ldGVycyIgaHJlZj0iIyIgdGl0bGU9IlslIFJvdy5CaW5kUGFyYW1ldGVycyB8IGh0bWwgJV0iPlNob3c8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhpZGRlbiI+WyUgUm93LkJpbmRQYXJhbWV0ZXJzIHwgaHRtbCAlXTwvZGl2PgogICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJTdGFja1RyYWNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgUm93LlN0YWNrVHJhY2Uuam9pbigiXG4iKSB8IGh0bWwgfCByZXBsYWNlKCJcbiIsICI8YnIvPiIpICVdPGJyLz4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90Ym9keT4KICAgIFslIEVORCAlXQpbJSBFTkQgJV0KICAgICAgICAgICAgPHRyIGNsYXNzPSJIaWRkZW4gRmlsdGVyTWVzc2FnZSI+CiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNSI+Tm8gSXRlbXMgZm91bmQuPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICA8L3RhYmxlPgogICAgPC9kaXY+CjwvZGl2PgoKPCEtLSBqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4KPHNjcmlwdD4KJ3VzZSBzdHJpY3QnOwokKCdhLlNob3dCaW5kUGFyYW1ldGVycycpLnVuYmluZCgnY2xpY2snKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uKEV2ZW50KSB7CiAgICAkKHRoaXMpLmhpZGUoKS5wYXJlbnQoKS5maW5kKCdkaXYnKS5zaG93KCk7Cn0pOwo8L3NjcmlwdD4KPCEtLSBqc19vbl9kb2N1bWVudF9jb21wbGV0ZSAtLT4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/DevelFredSTDERRLog.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJEZXZlbEZyZWRCb3giPgogICAgPGgxPgogICAgICAgIFNUREVSUkxvZwogICAgICAgIDxzcGFuIGNsYXNzPSJGcmVkVG9vbEJhciI+CiAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1taW51cyBGcmVkTWluaW1pemUiIHRpdGxlPSJNaW5pbWl6ZSI+PC9pPgogICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtdGltZXMgRnJlZENsb3NlIiB0aXRsZT0iQ2xvc2UiPjwvaT4KICAgICAgICA8L3NwYW4+CiAgICA8L2gxPgogICAgPGRpdiBjbGFzcz0iRGV2ZWxGcmVkQm94Q29udGVudCIgaWQ9IkRldmVsRnJlZFNUREVSUkxvZyI+CiAgICAgICAgPHByZSBjbGFzcz0iRnJlZE1vbm9TcGFjZSI+WyUgRGF0YS5IVE1MTGluZXMgfCBodG1sICVdPC9wcmU+CiAgICA8L2Rpdj4KPC9kaXY+Cg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/DevelFredTranslationDebug.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJEZXZlbEZyZWRCb3giPgogICAgPGgxPgogICAgICAgIE1pc3NpbmcgVHJhbnNsYXRpb25zCiAgICAgICAgPHNwYW4gY2xhc3M9IkZyZWRUb29sQmFyIj4KICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLW1pbnVzIEZyZWRNaW5pbWl6ZSIgdGl0bGU9Ik1pbmltaXplIj48L2k+CiAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10aW1lcyBGcmVkQ2xvc2UiIHRpdGxlPSJDbG9zZSI+PC9pPgogICAgICAgIDwvc3Bhbj4KICAgIDwvaDE+CiAgICA8ZGl2IGNsYXNzPSJEZXZlbEZyZWRCb3hDb250ZW50IEZyZWRFbGVtZW50TGlzdCIgaWQ9IkRldmVsRnJlZFRyYW5zbGF0aW9uRGVidWciPgpbJSBEYXRhLkhUTUxMaW5lcyAlXQogICAgPC9kaXY+CjwvZGl2Pgo=</File>
        <File Location="Kernel/System/Fred/ConfigLog.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGcmVkOjpDb25maWdMb2c7CiMjIG5vIGNyaXRpYyhQZXJsOjpDcml0aWM6OlBvbGljeTo6T1RPQk86OlByb2hpYml0T3BlbikKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6RnJlZDo6Q29uZmlnTG9nCgo9aGVhZDEgU1lOT1BTSVMKCmhhbmRsZSB0aGUgY29uZmlnIGxvZyBkYXRhCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIERhdGFHZXQoKQoKR2V0IHRoZSBkYXRhIGZvciB0aGlzIEZyZWQgbW9kdWxlLiBSZXR1cm5zIHRydWUgb3IgZmFsc2UuCkFuZCBhZGQgdGhlIGRhdGEgdG8gdGhlIG1vZHVsZSByZWYuCgogICAgJEJhY2tlbmRPYmplY3QtPkRhdGFHZXQoCiAgICAgICAgTW9kdWxlUmVmID0+ICRNb2R1bGVSZWYsCiAgICApOwoKPWN1dAoKc3ViIERhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSBATG9nTWVzc2FnZXM7CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBvcGVuIHRoZSBUcmFuc2xhdGlvbkRlYnVnLmxvZyBmaWxlIHRvIGdldCB0aGUgdW50cmFuc2xhdGVkIHdvcmRzCiAgICBteSAkRmlsZSA9ICRDb25maWdPYmplY3QtPkdldCgnSG9tZScpIC4gJy92YXIvZnJlZC9Db25maWcubG9nJzsKICAgIG15ICRGaWxlaGFuZGxlOwogICAgaWYgKCAhb3BlbiAkRmlsZWhhbmRsZSwgJzwnLCAkRmlsZSApIHsKICAgICAgICBwcmludCBTVERFUlIgIkNhbid0IHJlYWQgL3Zhci9mcmVkL0NvbmZpZy5sb2dcbiI7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgTElORToKICAgIGZvciBteSAkTGluZSAoIHJldmVyc2UgPCRGaWxlaGFuZGxlPiApIHsKICAgICAgICBsYXN0IExJTkUgaWYgJExpbmUgPX4gL0ZSRUQvOwogICAgICAgIHB1c2ggQExvZ01lc3NhZ2VzLCAkTGluZTsKICAgIH0KICAgIGNsb3NlICRGaWxlaGFuZGxlOwogICAgcG9wIEBMb2dNZXNzYWdlczsKICAgICRTZWxmLT5JbnNlcnRXb3JkKCBXaGF0ID0+ICJGUkVEXG4iICk7CgogICAgbXkgJUluZGl2aWR1YWxDb25maWcgPSAoKTsKCiAgICBmb3IgbXkgJExpbmUgKEBMb2dNZXNzYWdlcykgewogICAgICAgICRMaW5lID1+IHMvXG4vLzsKICAgICAgICAkSW5kaXZpZHVhbENvbmZpZ3skTGluZX0rKzsKICAgIH0KCiAgICBATG9nTWVzc2FnZXMgPSAoKTsKICAgIGZvciBteSAkTGluZSAoIHNvcnQga2V5cyAlSW5kaXZpZHVhbENvbmZpZyApIHsKICAgICAgICBteSBAU3BsaXRlZExpbmUgPSBzcGxpdCAvOy8sICRMaW5lOwogICAgICAgIHB1c2ggQFNwbGl0ZWRMaW5lLCAkSW5kaXZpZHVhbENvbmZpZ3skTGluZX07CiAgICAgICAgcHVzaCBATG9nTWVzc2FnZXMsIFxAU3BsaXRlZExpbmU7CiAgICB9CgogICAgIyBzb3J0IHRoZSBkYXRhCiAgICBteSAkQ29uZmlnICA9ICRDb25maWdPYmplY3QtPkdldCgnRnJlZDo6Q29uZmlnTG9nJyk7CiAgICBteSAkT3JkZXJCeSA9IGRlZmluZWQoICRDb25maWctPntPcmRlckJ5fSApID8gJENvbmZpZy0+e09yZGVyQnl9IDogMzsKICAgIGlmICggJE9yZGVyQnkgPT0gMyApIHsKICAgICAgICBATG9nTWVzc2FnZXMgPSBzb3J0IHsgJGItPlskT3JkZXJCeV0gPD0+ICRhLT5bJE9yZGVyQnldIH0gQExvZ01lc3NhZ2VzOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgQExvZ01lc3NhZ2VzID0gc29ydCB7ICRhLT5bJE9yZGVyQnldIGNtcCAkYi0+WyRPcmRlckJ5XSB9IEBMb2dNZXNzYWdlczsKICAgIH0KCiAgICAkUGFyYW17TW9kdWxlUmVmfS0+e0RhdGF9ID0gXEBMb2dNZXNzYWdlczsKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBJbnNlcnRXb3JkKCkKClNhdmUgYSB3b3JkIGluIHRoZSB0cmFuc2xhdGlvbiBkZWJ1ZyBsb2cKCiAgICAkQmFja2VuZE9iamVjdC0+SW5zZXJ0V29yZCgKICAgICAgICBXaGF0ID0+ICdhIHdvcmQnLAogICAgKTsKCj1jdXQKCnN1YiBJbnNlcnRXb3JkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgbXkgJEZyZWRTZXR0aW5ncyA9ICRDb25maWdPYmplY3QtPkdldE9yaWdpbmFsKCdGcmVkOjpNb2R1bGUnKTsKCiAgICBpZiAoICEkRnJlZFNldHRpbmdzIHx8ICEkRnJlZFNldHRpbmdzLT57Q29uZmlnTG9nfSB8fCAhJEZyZWRTZXR0aW5ncy0+e0NvbmZpZ0xvZ30tPntBY3RpdmV9ICkgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoICEkUGFyYW17SG9tZX0gKSB7CiAgICAgICAgJFBhcmFte0hvbWV9ID0gJENvbmZpZ09iamVjdC0+R2V0T3JpZ2luYWwoJ0hvbWUnKTsKICAgIH0KCiAgICAjIHNhdmUgdGhlIHdvcmQgaW4gbG9nIGZpbGUKICAgIG15ICRGaWxlID0gJFBhcmFte0hvbWV9IC4gJy92YXIvZnJlZC9Db25maWcubG9nJzsKICAgIG9wZW4gbXkgJEZpbGVoYW5kbGUsICc+PicsICRGaWxlIHx8IGRpZSAiQ2FuJ3Qgd3JpdGUgJEZpbGUgIVxuIjsKICAgIHByaW50ICRGaWxlaGFuZGxlICRQYXJhbXtXaGF0fSAuICJcbiI7CiAgICBjbG9zZSAkRmlsZWhhbmRsZTsKCiAgICByZXR1cm4gMTsKfQoKMTsKCj1iYWNrCg==</File>
        <File Location="Kernel/System/Fred/ConfigSwitch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGcmVkOjpDb25maWdTd2l0Y2g7CiMjIG5vIGNyaXRpYyhQZXJsOjpDcml0aWM6OlBvbGljeTo6T1RPQk86OlByb2hpYml0T3BlbikKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6RnJlZDo6Q29uZmlnU3dpdGNoCgo9aGVhZDEgU1lOT1BTSVMKCmhhbmRsZSB0aGUgY29uZmlnIGxvZyBkYXRhCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIERhdGFHZXQoKQoKR2V0IHRoZSBkYXRhIGZvciB0aGlzIEZyZWQgbW9kdWxlLiBSZXR1cm5zIHRydWUgb3IgZmFsc2UuCkFuZCBhZGQgdGhlIGRhdGEgdG8gdGhlIG1vZHVsZSByZWYuCgogICAgJEJhY2tlbmRPYmplY3QtPkRhdGFHZXQoCiAgICAgICAgTW9kdWxlUmVmID0+ICRNb2R1bGVSZWYsCiAgICApOwoKPWN1dAoKc3ViIERhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdGcmVkOjpDb25maWdTd2l0Y2gnKTsKCiAgICByZXR1cm4gaWYgISRDb25maWctPntTZXR0aW5nc307CgogICAgbXkgQENvbmZpZ0l0ZW1zOwogICAgZm9yIG15ICRJdGVtICggc29ydCBAeyAkQ29uZmlnLT57U2V0dGluZ3N9IH0gKSB7CiAgICAgICAgcHVzaCBAQ29uZmlnSXRlbXMsIHsKICAgICAgICAgICAgS2V5ICAgPT4gJEl0ZW0sCiAgICAgICAgICAgIFZhbHVlID0+ICRDb25maWdPYmplY3QtPkdldCgkSXRlbSksCiAgICAgICAgfTsKICAgIH0KCiAgICAkUGFyYW17TW9kdWxlUmVmfS0+e0RhdGF9ID0gXEBDb25maWdJdGVtczsKCiAgICByZXR1cm4gMTsKfQoKMTsKCj1iYWNrCg==</File>
        <File Location="Kernel/System/Fred/Console.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGcmVkOjpDb25zb2xlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkZyZWQ6OkNvbnNvbGUKCj1oZWFkMSBTWU5PUFNJUwoKZ2l2ZXMgeW91IGFsbCBmdW5jdGlvbnMgd2hpY2ggYXJlIG5lZWRlZCBmb3IgdGhlIEZSRUQtY29uc29sZQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBEYXRhR2V0KCkKCkdldCB0aGUgZGF0YSBmb3IgdGhpcyBGcmVkIG1vZHVsZS4gUmV0dXJucyB0cnVlIG9yIGZhbHNlLgpBbmQgYWRkcyB0aGUgZGF0YSB0byB0aGUgbW9kdWxlIHJlZi4KCiAgICAkQmFja2VuZE9iamVjdC0+RGF0YUdldCgKICAgICAgICBNb2R1bGVSZWYgPT4gJE1vZHVsZVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJFJlZiAocXcoTW9kdWxlUmVmIEhUTUxEYXRhUmVmIEZyZWRNb2R1bGVzUmVmKSkgewogICAgICAgIGlmICggISRQYXJhbXskUmVmfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJFJlZiEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15IEBNb2R1bGVzOwogICAgZm9yIG15ICRNb2R1bGUgKCBzb3J0IGtleXMgJXsgJFBhcmFte0ZyZWRNb2R1bGVzUmVmfSB9ICkgewogICAgICAgIGlmICggJE1vZHVsZSBuZSAnQ29uc29sZScgKSB7CiAgICAgICAgICAgIHB1c2ggQE1vZHVsZXMsICRNb2R1bGU7CiAgICAgICAgfQogICAgfQogICAgJFBhcmFte01vZHVsZVJlZn0tPntEYXRhfSA9IFxATW9kdWxlczsKCiAgICBpZiAoICR7ICRQYXJhbXtIVE1MRGF0YVJlZn0gfSAhfiBtL0ZyZWQtU2V0dGluZy8gJiYgJHsgJFBhcmFte0hUTUxEYXRhUmVmfSB9ID1+IC9cPGJvZHkuKj9cPi8gKQogICAgewogICAgICAgICRQYXJhbXtNb2R1bGVSZWZ9LT57U3RhdHVzfSA9IDE7CiAgICB9CgogICAgaWYgKCAkeyAkUGFyYW17SFRNTERhdGFSZWZ9IH0gIX4gbS9uYW1lPSJBY3Rpb24iIHZhbHVlPSJMb2dpbiIvICkgewogICAgICAgICRQYXJhbXtNb2R1bGVSZWZ9LT57U2V0dGluZ30gPSAxOwogICAgfQoKICAgIHJldHVybiAxOwp9CgoxOwoKPWJhY2sK</File>
        <File Location="Kernel/System/Fred/EnvDump.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGcmVkOjpFbnZEdW1wOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkZyZWQ6OkVudkR1bXAKCj1oZWFkMSBTWU5PUFNJUwoKZG9lcyBlc3NlbnRpYWxseSBub3RoaW5nCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIERhdGFHZXQoKQoKVGhpcyBtZXRob2QgaXMganVzdCBmb3IgY29tcGF0aWJpbGl0eS4gTm8gZGF0YSBpcyBzZXQgaGVyZSwKYXMgdGhlIG5lZWRlZCBzZXNzaW9uIG9iamVjdCBpcyBub3QgZWFzaWx5IGF2YWlsYWJsZSBoZXJlLgoKICAgIG15ICREYXRhR2V0T2sgPSAkQmFja2VuZE9iamVjdC0+RGF0YUdldCgKICAgICAgICBNb2R1bGVSZWYgPT4gJE1vZHVsZVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIE1vZHVsZVJlZiApKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cgo9YmFjawo=</File>
        <File Location="Kernel/System/Fred/HTMLCheck.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGcmVkOjpIVE1MQ2hlY2s7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6RnJlZDo6SFRNTENoZWNrCgo9aGVhZDEgU1lOT1BTSVMKClBlcmZvcm0gSFRNTCBRQS4KCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIERhdGFHZXQgewogICAgcmV0dXJuIDE7Cn0KCjE7Cgo9YmFjawo=</File>
        <File Location="Kernel/System/Fred/JSLint.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGcmVkOjpKU0xpbnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgpOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpGcmVkOjpKU0xpbnQKCj1oZWFkMSBTWU5PUFNJUwoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBEYXRhR2V0KCkKCkdldCB0aGUgZGF0YSBmb3IgdGhpcyBGcmVkIG1vZHVsZS4gUmV0dXJucyB0cnVlIG9yIGZhbHNlLgpBbmQgYWRkIHRoZSBkYXRhIHRvIHRoZSBtb2R1bGUgcmVmLgoKICAgICRCYWNrZW5kT2JqZWN0LT5EYXRhR2V0KAogICAgICAgIE1vZHVsZVJlZiA9PiAkTW9kdWxlUmVmLAogICAgKTsKCj1jdXQKCnN1YiBEYXRhR2V0IHsKICAgIHJldHVybiAxOwp9CgoxOwoKPWJhY2sK</File>
        <File Location="Kernel/System/Fred/SessionDump.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGcmVkOjpTZXNzaW9uRHVtcDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpGcmVkOjpTZXNzaW9uRHVtcAoKPWhlYWQxIFNZTk9QU0lTCgpkb2VzIGVzc2VudGlhbGx5IG5vdGhpbmcKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gRGF0YUdldCgpCgpUaGlzIG1ldGhvZCBpcyBqdXN0IGZvciBjb21wYXRpYmlsaXR5LiBObyBkYXRhIGlzIHNldCBoZXJlLAphcyB0aGUgbmVlZGVkIHNlc3Npb24gb2JqZWN0IGlzIG5vdCBlYXNpbHkgYXZhaWxhYmxlIGhlcmUuCgogICAgbXkgJERhdGFHZXRPayA9ICRCYWNrZW5kT2JqZWN0LT5EYXRhR2V0KAogICAgICAgIE1vZHVsZVJlZiA9PiAkTW9kdWxlUmVmLAogICAgKTsKCj1jdXQKCnN1YiBEYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyggTW9kdWxlUmVmICkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKMTsKCj1iYWNrCg==</File>
        <File Location="Kernel/System/Fred/SQLLog.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGcmVkOjpTUUxMb2c7CiMjIG5vIGNyaXRpYyhQZXJsOjpDcml0aWM6OlBvbGljeTo6T1RPQk86OlByb2hpYml0T3BlbikKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBUaW1lOjpIaVJlcyBxdyhnZXR0aW1lb2ZkYXkgdHZfaW50ZXJ2YWwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpGcmVkOjpTUUxMb2cKCj1oZWFkMSBTWU5PUFNJUwoKU2hvdyBhIGxvZyBvZiB0aGUgU1FMIHN0YXRlbWVudHMgZXhlY3V0ZWQgc2luY2UgdGhlIGxhc3QgdmlldyBvZiB0aGUgbG9nLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIGlmICgKICAgICAgICByZWYgJENvbmZpZ09iamVjdC0+R2V0KCdGcmVkOjpNb2R1bGUnKQogICAgICAgICYmICRDb25maWdPYmplY3QtPkdldCgnRnJlZDo6TW9kdWxlJyktPntTUUxMb2d9CiAgICAgICAgKQogICAgewogICAgICAgICRTZWxmLT57QWN0aXZlfSA9ICRDb25maWdPYmplY3QtPkdldCgnRnJlZDo6TW9kdWxlJyktPntTUUxMb2d9LT57QWN0aXZlfTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIERhdGFHZXQoKQoKR2V0IHRoZSBkYXRhIGZvciB0aGlzIEZyZWQgbW9kdWxlLiBSZXR1cm5zIHRydWUgb3IgZmFsc2UuCkFuZCBhZGQgdGhlIGRhdGEgdG8gdGhlIG1vZHVsZSByZWYuCgogICAgJEJhY2tlbmRPYmplY3QtPkRhdGFHZXQoCiAgICAgICAgTW9kdWxlUmVmID0+ICRNb2R1bGVSZWYsCiAgICApOwoKPWN1dAoKc3ViIERhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIG9wZW4gdGhlIGZpbGUgU1FMLmxvZwogICAgbXkgJEZpbGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKSAuICcvdmFyL2ZyZWQvU1FMLmxvZyc7CgogICAgbXkgJEZpbGVoYW5kbGU7CiAgICBpZiAoICFvcGVuICRGaWxlaGFuZGxlLCAnPCcsICRGaWxlICkgeyAgICAjIyBubyBjcml0aWMKICAgICAgICAkUGFyYW17TW9kdWxlUmVmfS0+e0RhdGF9ID0gWyJDYW4ndCByZWFkIC92YXIvZnJlZC9TUUwubG9nIl07CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15IEBMb2dNZXNzYWdlczsKICAgIG15ICREb1N0YXRlbWVudHMgICAgID0gMDsKICAgIG15ICRTZWxlY3RTdGF0ZW1lbnRzID0gMDsKCiAgICAjIHNsdXJwIGluIHRoZSB3aG9sZSBsb2dmaWxlLCBpbiBvcmRlciB0byBhY2Nlc3MgdGhlIGxpbmVzIGF0IHRoZSBlbmQKICAgIExJTkU6CiAgICBmb3IgbXkgJExpbmUgKCByZXZlcnNlIDwkRmlsZWhhbmRsZT4gKSB7CgogICAgICAgICMgZG8gbm90IHNob3cgdGhlIGxvZyBmcm9tIHRoZSBwcmV2aW91cyByZXF1ZXN0CiAgICAgICAgbGFzdCBMSU5FIGlmICRMaW5lID1+IC9GUkVELzsKCiAgICAgIyBhIHR5cGljYWwgbGluZSBmcm9tIFNRTC5sb2cgbG9va3MgbGlrZToKICAgICAjIFNRTC1TRUxFQ1QjIyEjI1NFTEVDVCAxICsgMSBGUk9NIGR1YWwgV0hFUkUgaWQgPSA/IEFORCB1c2VyX2lkID0gPyMjISMjMSwgMiMjISMjS2VybmVsOjpTeXN0ZW06OlVzZXIjIyEjIzAuMDA0Mzk3CiAgICAgICAgbXkgQFNwbGl0TG9nTGluZSA9IHNwbGl0IC8jIyEjIy8sICRMaW5lOwogICAgICAgIGlmICggJFNwbGl0TG9nTGluZVswXSBlcSAnU1FMLURPJyAmJiAkU3BsaXRMb2dMaW5lWzFdID1+IG17IFxBIFNFTEVDVCB9eG1zICkgewogICAgICAgICAgICAkU3BsaXRMb2dMaW5lWzBdIC49ICcgLSBQZXJoYXBzIHlvdSBoYXZlIGFuIGVycm9yIHlvdSB1c2UgRE8gZm9yIGEgU0VMRUNULVN0YXRlbWVudDonOwogICAgICAgIH0KICAgICAgICBwdXNoIEBMb2dNZXNzYWdlcywgXEBTcGxpdExvZ0xpbmU7CgogICAgICAgIGlmICggJFNwbGl0TG9nTGluZVswXSBlcSAnU1FMLURPJyApIHsKICAgICAgICAgICAgJERvU3RhdGVtZW50cysrOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkU3BsaXRMb2dMaW5lWzRdICkgewogICAgICAgICAgICAkUGFyYW17TW9kdWxlUmVmfS0+e1RpbWV9ICs9ICRTcGxpdExvZ0xpbmVbNF07CiAgICAgICAgfQogICAgfQoKICAgIHBvcCBATG9nTWVzc2FnZXM7CiAgICBjbG9zZSAkRmlsZWhhbmRsZTsKCiAgICAjIGZpbmQgU1FMLXN0YXRlbWVudHMgdXNlZCBtdWx0aXBsZSB0aW1lcwogICAgbXkgJU11bHRpVXNlZDsKICAgIGZvciBteSAkU3RhdGVtZW50UmVmIChATG9nTWVzc2FnZXMpIHsKICAgICAgICAkTXVsdGlVc2VkeyAkU3RhdGVtZW50UmVmLT5bMV0gfSsrOwogICAgfQogICAgZm9yIG15ICRTdGF0ZW1lbnRSZWYgKEBMb2dNZXNzYWdlcykgewogICAgICAgIHB1c2ggQHskU3RhdGVtZW50UmVmfSwgKCAkTXVsdGlVc2VkeyAkU3RhdGVtZW50UmVmLT5bMV0gfSAtIDEgKTsKICAgIH0KCiAgICAjIEFkZCBtYXJrZXIgZm9yIHRoZSBuZXh0IHZpZXcKICAgICRTZWxmLT5JbnNlcnRXb3JkKCBXaGF0ID0+ICJGUkVEXG4iICk7CgogICAgIyBzZXQgdGhlIGRhdGEgZm9yIHRoZSBvdXRwdXQgdGVtcGxhdGUKICAgICRQYXJhbXtNb2R1bGVSZWZ9LT57RGF0YX0gICAgICAgICAgICAgPSBcQExvZ01lc3NhZ2VzOwogICAgJFBhcmFte01vZHVsZVJlZn0tPntBbGxTdGF0ZW1lbnRzfSAgICA9IHNjYWxhciBATG9nTWVzc2FnZXM7CiAgICAkUGFyYW17TW9kdWxlUmVmfS0+e0RvU3RhdGVtZW50c30gICAgID0gJERvU3RhdGVtZW50czsKICAgICRQYXJhbXtNb2R1bGVSZWZ9LT57U2VsZWN0U3RhdGVtZW50c30gPSAkUGFyYW17TW9kdWxlUmVmfS0+e0FsbFN0YXRlbWVudHN9IC0gJERvU3RhdGVtZW50czsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gSW5zZXJ0V29yZCgpCgpBcHBlbmQgYSBzZW1pY29sb24gc2VwYXJhdGVkIHJlY29yZCBsaW5lIHRvIHRoZSB0aGUgU1FMIGxvZy4KCiAgICAkQmFja2VuZE9iamVjdC0+SW5zZXJ0V29yZCgKICAgICAgICBXaGF0ID0+ICdTUUwtU0VMRUNUO1NFTEVDVCAxICsgMSBGUk9NIGR1YWw7S2VybmVsOjpTeXN0ZW06OlVzZXI7MC4wMDQzOTcnLAogICAgKTsKCj1jdXQKCnN1YiBJbnNlcnRXb3JkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtXaGF0fSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgV2hhdCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgRml4dXAgbXVsdGlsaW5lIFNRTCBzdGF0ZW1lbnRzCiAgICBpZiAoICRQYXJhbXtXaGF0fSA9fiBtL15TUUwvc214ICkgewogICAgICAgIG15IEBXaGF0ID0gc3BsaXQgJyMjISMjJywgJFBhcmFte1doYXR9OwoKICAgICAgICAjIGhpZGUgd2hpdGUgc3BhY2UKICAgICAgICAkV2hhdFsxXSA9fiBzL1xyP1xuLyAvc214ZzsKICAgICAgICAkV2hhdFsxXSA9fiBzL1xzKy8gL3NteGc7CiAgICAgICAgJFBhcmFte1doYXR9ID0gam9pbiAnIyMhIyMnLCBAV2hhdDsKICAgIH0KCiAgICAjIGFwcHBlbmQgdGhlIGxpbmUgdG8gbG9nIGZpbGUKICAgIG15ICRGaWxlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdIb21lJykgLiAnL3Zhci9mcmVkL1NRTC5sb2cnOwogICAgb3BlbiBteSAkRmlsZWhhbmRsZSwgJz4+JywgJEZpbGUgfHwgZGllICJDYW4ndCB3cml0ZSAkRmlsZSAhXG4iOwogICAgcHJpbnQgJEZpbGVoYW5kbGUgJFBhcmFte1doYXR9LCAiXG4iOwogICAgY2xvc2UgJEZpbGVoYW5kbGU7CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBQcmVTdGF0ZW1lbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgKCAhJFNlbGYtPntBY3RpdmV9ICk7CgogICAgJFNlbGYtPntQcmVwYXJlU3RhcnR9ID0gW2dldHRpbWVvZmRheV07CgogICAgcmV0dXJuOwp9CgpzdWIgUG9zdFN0YXRlbWVudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAoICEkU2VsZi0+e0FjdGl2ZX0gKTsKCiAgICBteSAkRGlmZlRpbWUgPSB0dl9pbnRlcnZhbCggJFNlbGYtPntQcmVwYXJlU3RhcnR9ICk7CgogICAgbXkgQFN0YWNrVHJhY2U7CgogICAgQ09VTlQ6CiAgICBmb3IgKCBteSAkQ291bnQgPSAxOyAkQ291bnQgPCAzMDsgJENvdW50KysgKSB7CiAgICAgICAgbXkgKCAkUGFja2FnZTEsICRGaWxlbmFtZTEsICRMaW5lMSwgJFN1YnJvdXRpbmUxICkgPSBjYWxsZXIoJENvdW50KTsKICAgICAgICBsYXN0IENPVU5UIGlmICEkTGluZTE7CiAgICAgICAgbXkgKCAkUGFja2FnZTIsICRGaWxlbmFtZTIsICRMaW5lMiwgJFN1YnJvdXRpbmUyICkgPSBjYWxsZXIoIDEgKyAkQ291bnQgKTsKICAgICAgICAkU3Vicm91dGluZTIgfHw9ICQwOyAgICAjIGlmIHRoZXJlIGlzIG5vIGNhbGxlciBtb2R1bGUgdXNlIHRoZSBmaWxlIG5hbWUKICAgICAgICAkU3Vicm91dGluZTIgPX4gcy9LZXJuZWw6OlN5c3RlbS9LOjpTLzsKICAgICAgICAkU3Vicm91dGluZTIgPX4gcy9LZXJuZWw6Ok1vZHVsZXMvSzo6TS87CiAgICAgICAgJFN1YnJvdXRpbmUyID1+IHMvS2VybmVsOjpPdXRwdXQvSzo6Ty87CiAgICAgICAgcHVzaCBAU3RhY2tUcmFjZSwgIiRTdWJyb3V0aW5lMjokTGluZTEiOwogICAgfQoKICAgIG15IEBBcnJheSA9IG1hcCB7IGRlZmluZWQgJF8gJiYgZGVmaW5lZCAkeyRffSA/ICR7JF99IDogJ3VuZGVmJyB9IEB7ICRQYXJhbXtCaW5kfSB8fCBbXSB9OwoKICAgICMgUmVwbGFjZSBuZXdsaW5lcwogICAgQEFycmF5ID0gbWFwIHsgJF8gPX4gc3tccj9cbn17W1xcbl19c214ZzsgJF87IH0gQEFycmF5OyAgICAjIyBubyBjcml0aWMKCiAgICAjIExpbWl0IGJpbmQgcGFyYW0gbGVuZ3RoCiAgICBAQXJyYXkgPSBtYXAgeyBsZW5ndGgoJF8pID4gMTAwID8gKCBzdWJzdHIoICRfLCAwLCAxMDAgKSAuICdbLi4uXScgKSA6ICRfIH0gQEFycmF5OwogICAgbXkgJEJpbmRTdHJpbmcgPSBAQXJyYXkgPyBqb2luICcsICcsIEBBcnJheSA6ICcnOwoKICAgIG15ICRQcmVmaXggPSAkUGFyYW17U1FMfSA9fiBte15TRUxFQ1R9aXhtcyA/ICdTRUxFQ1QnIDogJ0RPJzsKCiAgICAkU2VsZi0+SW5zZXJ0V29yZCgKICAgICAgICBXaGF0ID0+ICJTUUwtJFByZWZpeCMjISMjJFBhcmFte1NRTH0jIyEjIyRCaW5kU3RyaW5nIyMhIyMiCiAgICAgICAgICAgIC4gam9pbiggJzsnLCBAU3RhY2tUcmFjZSApCiAgICAgICAgICAgIC4gIiMjISMjJERpZmZUaW1lIiwKICAgICk7CgogICAgcmV0dXJuOwp9CgoxOwoKPWJhY2sK</File>
        <File Location="Kernel/System/Fred/STDERRLog.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGcmVkOjpTVERFUlJMb2c7CiMjIG5vIGNyaXRpYyhQZXJsOjpDcml0aWM6OlBvbGljeTo6T1RPQk86OlByb2hpYml0T3BlbikKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBJTzo6SGFuZGxlOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpGcmVkOjpTVERFUlJMb2cKCj1oZWFkMSBTWU5PUFNJUwoKaGFuZGxlIHRoZSBTVERFUlIgbG9nIGRhdGEKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gRGF0YUdldCgpCgpHZXQgdGhlIGRhdGEgZm9yIHRoaXMgRnJlZCBtb2R1bGUuIFJldHVybnMgdHJ1ZSBvciBmYWxzZS4KQW5kIGFkZCB0aGUgZGF0YSB0byB0aGUgbW9kdWxlIHJlZi4KCiAgICAkQmFja2VuZE9iamVjdC0+RGF0YUdldCgKICAgICAgICBNb2R1bGVSZWYgPT4gJE1vZHVsZVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoTW9kdWxlUmVmKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgTWFrZSBzdXJlIHRoYXQgd2UgZ2V0IGV2ZXJ5dGhpbmcgdG8gZGlzayBiZWZvcmUgdHJ5aW5nIHRvIHJlYWQgaXQgKG90aGVyd2lzZSBjb250ZW50IGNvdWxkIGJlIGxvc3QpLgogICAgU1RERVJSLT5mbHVzaCgpOwoKICAgICMgb3BlbiB0aGUgU1RERVJSLmxvZyBmaWxlIHRvIGdldCB0aGUgU1RERVJSIG1lc3NhZ2VzCiAgICBteSAkRmlsZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpIC4gJy92YXIvZnJlZC9TVERFUlIubG9nJzsKICAgIG15ICRGaWxlaGFuZGxlOwoKICAgIGlmICggIW9wZW4gJEZpbGVoYW5kbGUsICc8OmVuY29kaW5nKFVURi04KScsICRGaWxlICkgeyAgICAjIyBubyBjcml0aWMKICAgICAgICAkUGFyYW17TW9kdWxlUmVmfS0+e0RhdGF9ID0gWwogICAgICAgICAgICAiUGVyaGFwcyB5b3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIGF0IC92YXIvZnJlZC8gb3IgL0tlcm5lbC9Db25maWcvRmlsZXMvQUFBRnJlZC5wbS4iLAogICAgICAgICAgICAiQ2FuJ3QgcmVhZCAvdmFyL2ZyZWQvU1RERVJSLmxvZyIsCiAgICAgICAgXTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBSZWFkIGxvZyB1bnRpbCBsYXN0ICJGUkVEIiBtYXJrZXIuCiAgICBteSBATG9nTWVzc2FnZXM7CiAgICBMSU5FOgogICAgZm9yIG15ICRMaW5lICggcmV2ZXJzZSA8JEZpbGVoYW5kbGU+ICkgewogICAgICAgIGxhc3QgTElORSBpZiAkTGluZSA9fiBteyBcQSBccyogRlJFRCBccyogXHp9eG1zOwogICAgICAgIHB1c2ggQExvZ01lc3NhZ2VzLCAkTGluZTsKICAgIH0KICAgIGNsb3NlICRGaWxlaGFuZGxlOwoKICAgIHByaW50IFNUREVSUiAiXG5GUkVEXG4iOwoKICAgICMgdHJpbSB0aGUgbG9nIG1lc3NhZ2UgYXJyYXkKICAgIExJTkU6CiAgICBmb3IgbXkgJExpbmUgKEBMb2dNZXNzYWdlcykgewogICAgICAgIGxhc3QgTElORSBpZiAkTGluZSAhfiBteyBcQSBccyogXHogfXhtczsKICAgICAgICBzaGlmdCBATG9nTWVzc2FnZXM7CiAgICB9CgogICAgIyB0cmltIHRoZSBsb2cgbWVzc2FnZSBhcnJheQogICAgTElORToKICAgIGZvciBteSAkTGluZSAoIHJldmVyc2UgQExvZ01lc3NhZ2VzICkgewogICAgICAgIGxhc3QgTElORSBpZiAkTGluZSAhfiBteyBcQSBccyogXHogfXhtczsKICAgICAgICBzaGlmdCBATG9nTWVzc2FnZXM7CiAgICB9CgogICAgJFBhcmFte01vZHVsZVJlZn0tPntEYXRhfSA9IFxATG9nTWVzc2FnZXM7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cgo9YmFjawo=</File>
        <File Location="Kernel/System/Fred/TranslationDebug.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGcmVkOjpUcmFuc2xhdGlvbkRlYnVnOwojIyBubyBjcml0aWMoUGVybDo6Q3JpdGljOjpQb2xpY3k6Ok9UT0JPOjpQcm9oaWJpdE9wZW4pCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkZyZWQ6OlRyYW5zbGF0aW9uRGVidWcKCj1oZWFkMSBTWU5PUFNJUwoKaGFuZGxlIHRoZSB0cmFuc2xhdGlvbiBkZWJ1ZyBkYXRhCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBpZiAoCiAgICAgICAgcmVmICRDb25maWdPYmplY3QtPkdldCgnRnJlZDo6TW9kdWxlJykKICAgICAgICAmJiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZyZWQ6Ok1vZHVsZScpLT57VHJhbnNsYXRpb25EZWJ1Z30KICAgICAgICApCiAgICB7CiAgICAgICAgJFNlbGYtPntBY3RpdmV9ID0gJENvbmZpZ09iamVjdC0+R2V0KCdGcmVkOjpNb2R1bGUnKS0+e1RyYW5zbGF0aW9uRGVidWd9LT57QWN0aXZlfTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIERhdGFHZXQoKQoKR2V0IHRoZSBkYXRhIGZvciB0aGlzIEZyZWQgbW9kdWxlLiBSZXR1cm5zIHRydWUgb3IgZmFsc2UuCkFuZCBhZGQgdGhlIGRhdGEgdG8gdGhlIG1vZHVsZSByZWYuCgogICAgJEJhY2tlbmRPYmplY3QtPkRhdGFHZXQoCiAgICAgICAgTW9kdWxlUmVmID0+ICRNb2R1bGVSZWYsCiAgICApOwoKPWN1dAoKc3ViIERhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIG9wZW4gdGhlIFRyYW5zbGF0aW9uRGVidWcubG9nIGZpbGUgdG8gZ2V0IHRoZSB1bnRyYW5zbGF0ZWQgd29yZHMKICAgIG15ICRGaWxlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdIb21lJykgLiAnL3Zhci9mcmVkL1RyYW5zbGF0aW9uRGVidWcubG9nJzsKICAgIG15ICRGaWxlaGFuZGxlOwogICAgaWYgKCAhb3BlbiAkRmlsZWhhbmRsZSwgJzw6ZW5jb2RpbmcoVVRGLTgpJywgJEZpbGUgKSB7ICAgICMjIG5vIGNyaXRpYwogICAgICAgICRQYXJhbXtNb2R1bGVSZWZ9LT57RGF0YX0gPSBbIkNhbid0IHJlYWQgL3Zhci9mcmVkL1RyYW5zbGF0aW9uRGVidWcubG9nIl07CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGRpc3RpbmN0IGVudHJpZXMgZnJvbSBUcmFuc2xhdGlvbkRlYnVnLmxvZwogICAgIyB0aWxsIHRoZSBsYXN0ICdGUkVEJyBlbnRyeQogICAgbXkgJUxvZ0xpbmVzOwogICAgTElORToKICAgIGZvciBteSAkTGluZSAoIHJldmVyc2UgPCRGaWxlaGFuZGxlPiApIHsKICAgICAgICBsYXN0IExJTkUgaWYgJExpbmUgPX4gL0ZSRUQvOwoKICAgICAgICBjaG9tcCAkTGluZTsKICAgICAgICBuZXh0IExJTkUgaWYgJExpbmUgZXEgJyc7CgogICAgICAgICMgc2tpcCBkdXBsaWNhdGUgZW50cmllcwogICAgICAgIG5leHQgTElORSBpZiAkTG9nTGluZXN7JExpbmV9OwoKICAgICAgICAkTG9nTGluZXN7JExpbmV9ID0gMTsKICAgIH0KICAgIGNsb3NlICRGaWxlaGFuZGxlOwoKICAgICRTZWxmLT5JbnNlcnRXb3JkKCBXaGF0ID0+ICJGUkVEXG4iICk7CgogICAgbXkgQExvZ0xpbmVzID0gc29ydCB7ICRhIGNtcCAkYiB9IGtleXMgJUxvZ0xpbmVzOwogICAgJFBhcmFte01vZHVsZVJlZn0tPntEYXRhfSA9IFxATG9nTGluZXM7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIEluc2VydFdvcmQoKQoKU2F2ZSBhIHdvcmQgaW4gdGhlIHRyYW5zbGF0aW9uIGRlYnVnIGxvZwoKICAgICRCYWNrZW5kT2JqZWN0LT5JbnNlcnRXb3JkKAogICAgICAgIFdoYXQgPT4gJ2Egd29yZCcsCiAgICApOwoKPWN1dAoKc3ViIEluc2VydFdvcmQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgKCAhJFNlbGYtPntBY3RpdmV9ICk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggIWRlZmluZWQoICRQYXJhbXtXaGF0fSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBXaGF0IScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzYXZlIHRoZSB3b3JkIGluIGxvZyBmaWxlCiAgICBteSAkRmlsZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpIC4gJy92YXIvZnJlZC9UcmFuc2xhdGlvbkRlYnVnLmxvZyc7CiAgICBvcGVuIG15ICRGaWxlaGFuZGxlLCAnPj46ZW5jb2RpbmcoVVRGLTgpJywgJEZpbGUgfHwgZGllICJDYW4ndCB3cml0ZSAkRmlsZSAhXG4iOwogICAgcHJpbnQgJEZpbGVoYW5kbGUgJFBhcmFte1doYXR9IC4gIlxuIjsKICAgIGNsb3NlICRGaWxlaGFuZGxlOwoKICAgIHJldHVybiAxOwp9CgoxOwoKPWJhY2sK</File>
        <File Location="var/httpd/htdocs/js/Core.Fred.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uZGUvCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCgovKiBlc2xpbnQgbm8td2luZG93OjAgKi8KCiJ1c2Ugc3RyaWN0IjsKCnZhciBDb3JlID0gQ29yZSB8fCB7fTsKQ29yZS5GcmVkID0gQ29yZS5GcmVkIHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgYWxsIGxvZ2ljIGZvciBGcmVkCiAqLwpDb3JlLkZyZWQgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgdmFyIERldmVsRnJlZFRvZ2dsZUNvbnRhaW5lckxpbmtQcm9jY2VzcyA9IDA7CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGluaXRzIGdlbmVyaWMgZnJlZCBmdW5jdGlvbnMKICAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKCiAgICAgICAgdmFyIFdpZGdldFN0YXR1cyA9IHt9LAogICAgICAgICAgICBLZXk7CgogICAgICAgIC8vIGdldCBzdGF0dXMgb2YgRnJlZCB3aWRnZXRzCiAgICAgICAgaWYgKHdpbmRvdyAmJiB3aW5kb3cubG9jYWxTdG9yYWdlKSB7CiAgICAgICAgICAgIFdpZGdldFN0YXR1cyA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnRlJFRF93aWRnZXRfc3RhdHVzJyk7CgogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgV2lkZ2V0U3RhdHVzID0gSlNPTi5wYXJzZShXaWRnZXRTdGF0dXMpOwogICAgICAgICAgICAgICAgaWYgKFdpZGdldFN0YXR1cyA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIFdpZGdldFN0YXR1cyA9IHt9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24pIHsKICAgICAgICAgICAgICAgIFdpZGdldFN0YXR1cyA9IHt9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3IgKEtleSBpbiBXaWRnZXRTdGF0dXMpIHsKICAgICAgICAgICAgICAgIGlmIChXaWRnZXRTdGF0dXMuaGFzT3duUHJvcGVydHkoS2V5KSkgewogICAgICAgICAgICAgICAgICAgICQoJy5EZXZlbEZyZWRCb3hDb250ZW50IycgKyBLZXkpLnJlbW92ZUNsYXNzKCdFeHBhbmRlZCBDb2xsYXBzZWQnKTsKICAgICAgICAgICAgICAgICAgICBpZiAoV2lkZ2V0U3RhdHVzW0tleV0gPT09ICdDb2xsYXBzZWQnIHx8IFdpZGdldFN0YXR1c1tLZXldID09PSAnRXhwYW5kZWQnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyMnICsgS2V5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKFdpZGdldFN0YXR1c1tLZXldKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5EZXZlbEZyZWRCb3gnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKFdpZGdldFN0YXR1c1tLZXldKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIGFsbCBGcmVkIHdpZGdldHMgd2l0aG91dCBhIHNhdmVkIHdpZGdldCBzdGF0dXMgYXJlIG5vdyBleHBhbmRlZAogICAgICAgICQoJy5EZXZlbEZyZWRCb3hDb250ZW50JykuZmlsdGVyKCc6bm90KC5Db2xsYXBzZWQsIC5FeHBhbmRlZCknKS5hZGRDbGFzcygnRXhwYW5kZWQnKTsKCiAgICAgICAgLy8gVG9vbGJhciBpdGVtcwogICAgICAgICQoJy5GcmVkU2VhcmNoJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCcuRGV2ZWxGcmVkQm94JykuZmluZCgnLkZyZWRRdWlja1NlYXJjaCcpLnRvZ2dsZSgpOwogICAgICAgIH0pOwogICAgICAgICQoJy5GcmVkTWluaW1pemUnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgJFdpZGdldEVsZW1lbnQgPSAkKHRoaXMpLmNsb3Nlc3QoJy5EZXZlbEZyZWRCb3gnKS5maW5kKCcuRGV2ZWxGcmVkQm94Q29udGVudCcpOwoKICAgICAgICAgICAgJFdpZGdldEVsZW1lbnQKICAgICAgICAgICAgICAgIC5zbGlkZVRvZ2dsZSgnZmFzdCcpCiAgICAgICAgICAgICAgICAudG9nZ2xlQ2xhc3MoJ0NvbGxhcHNlZCcpCiAgICAgICAgICAgICAgICAudG9nZ2xlQ2xhc3MoJ0V4cGFuZGVkJyk7CgogICAgICAgICAgICAkV2lkZ2V0RWxlbWVudAogICAgICAgICAgICAgICAgLmNsb3Nlc3QoJy5EZXZlbEZyZWRCb3gnKQogICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdFeHBhbmRlZCBDb2xsYXBzZWQnKQogICAgICAgICAgICAgICAgLmFkZENsYXNzKCRXaWRnZXRFbGVtZW50Lmhhc0NsYXNzKCdFeHBhbmRlZCcpID8gJ0V4cGFuZGVkJyA6ICdDb2xsYXBzZWQnKTsKCiAgICAgICAgICAgIFdpZGdldFN0YXR1c1skV2lkZ2V0RWxlbWVudC5hdHRyKCdpZCcpXSA9ICRXaWRnZXRFbGVtZW50Lmhhc0NsYXNzKCdDb2xsYXBzZWQnKSA/ICdDb2xsYXBzZWQnIDogJ0V4cGFuZGVkJzsKICAgICAgICAgICAgaWYgKHdpbmRvdyAmJiB3aW5kb3cubG9jYWxTdG9yYWdlKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ0ZSRURfd2lkZ2V0X3N0YXR1cycsIEpTT04uc3RyaW5naWZ5KFdpZGdldFN0YXR1cykpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgJCgnLkZyZWRDbG9zZScpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICQodGhpcykuY2xvc2VzdCgnLkRldmVsRnJlZEJveCcpLmhpZGUoKTsKICAgICAgICB9KTsKICAgICAgICAkKCcuRnJlZENsb3NlQWxsJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgJCgnLkRldmVsRnJlZEJveCcpLmhpZGUoKTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gZW1wdHkgdGhlIHNlYXJjaCBmaWVsZAogICAgICAgICQoJy5GcmVkUXVpY2tTZWFyY2ggaScpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICQodGhpcykucHJldignaW5wdXQnKS52YWwoJycpLnRyaWdnZXIoJ2tleWRvd24nKTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gcmVnaXN0ZXIgdGhlIHRhYmxlIGZpbHRlciBvbiB0aGUgcXVpY2tzZWFyY2ggZmllbGRzIChvbmx5IGlmIENvcmUuVUkuVGFibGUgaXMgYXZhaWxhYmxlKQogICAgICAgIGlmIChDb3JlLkRlYnVnLkNoZWNrRGVwZW5kZW5jeSgnRnJlZCcsICdDb3JlLlVJLlRhYmxlJywgJ0NvcmUuVUkuVGFibGUnLCB0cnVlKSkgewogICAgICAgICAgICAkKCcuRnJlZFF1aWNrU2VhcmNoIGlucHV0JykuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIENvcmUuVUkuVGFibGUuSW5pdFRhYmxlRmlsdGVyKCQodGhpcyksICQodGhpcykuY2xvc2VzdCgnLkRldmVsRnJlZEJveCcpLmZpbmQoJy5GcmVkVGFibGVEZWZhdWx0JykpOwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICQoJy5GcmVkUXVpY2tTZWFyY2gsIC5GcmVkU2VhcmNoJykuaGlkZSgpOwogICAgICAgIH0KCiAgICAgICAgLy8gcmVnaXN0ZXIgbmV3IHBvcHVwIHByb2ZpbGUgYXMgbmVlZGVkIGJ5IGZyZWQKICAgICAgICBDb3JlLlVJLlBvcHVwLlByb2ZpbGVBZGQoJ0ZyZWRTZXR0aW5ncycsIHsKICAgICAgICAgICAgV2luZG93VVJMUGFyYW1zOiAiZGVwZW5kZW50PXllcyxsb2NhdGlvbj1ubyxtZW51YmFyPW5vLHJlc2l6YWJsZT15ZXMsc2Nyb2xsYmFycz15ZXMsc3RhdHVzPW5vLHRvb2xiYXI9bm8iLAogICAgICAgICAgICBMZWZ0OiAxMDAsCiAgICAgICAgICAgIFRvcDogMTAwLAogICAgICAgICAgICBXaWR0aDogNDAwLAogICAgICAgICAgICBIZWlnaHQ6IDUwMAogICAgICAgIH0pOwoKICAgICAgICAvLyBvcGVuIHRoZSBzZXR0aW5ncyBwb3B1cAogICAgICAgICQoJy5GcmVkU2V0dGluZ3MnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBDb3JlLlVJLlBvcHVwLk9wZW5Qb3B1cCgkKHRoaXMpLmRhdGEoJ3VybCcpLCAnRnJlZFNldHRpbmdzJywgJ0ZyZWRTZXR0aW5ncycpOwogICAgICAgIH0pOwoKICAgICAgICAvLyBTUUwgbG9nOiBTaG93IGJpbmQgcGFyYW1ldGVycyBvbiBjbGljayBvZiAnc2hvdycgbGluawogICAgICAgICQoJy5TaG93QmluZFBhcmFtZXRlcnMnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAkKHRoaXMpLm5leHQoJy5IaWRkZW4nKS50b2dnbGUoKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgICAgICAkKCcuRnJlZFNldHRpbmdzTGluaycpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHdpbmRvdy5jbG9zZSgpOwogICAgICAgIH0pOwoKICAgICAgICAvLyBtYWtlIHRoZSBmcmVkIGJveCBkcmFnZ2FibGUKICAgICAgICAkKCcjRGV2ZWxGcmVkQ29udGFpbmVyJykuZHJhZ2dhYmxlKHsKICAgICAgICAgICAgaGFuZGxlOiAnaDEnLAogICAgICAgICAgICBzdG9wOiBmdW5jdGlvbihldmVudCwgdWkpIHsKICAgICAgICAgICAgICAgIHZhciBUb3AgPSB1aS5vZmZzZXQudG9wLAogICAgICAgICAgICAgICAgICAgIExlZnQgPSB1aS5vZmZzZXQubGVmdDsKCiAgICAgICAgICAgICAgICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhbFN0b3JhZ2UgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgIC8qZXNsaW50LWRpc2FibGUgY2FtZWxjYXNlKi8KICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLkZSRURfY29uc29sZV9sZWZ0ID0gTGVmdDsKICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLkZSRURfY29uc29sZV90b3AgPSBUb3A7CiAgICAgICAgICAgICAgICAgICAgLyplc2xpbnQtZW5hYmxlIGNhbWVsY2FzZSovCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgLy8gc2F2ZSBmcmVkJ3Mgd2luZG93IHBvc2l0aW9uCiAgICAgICAgKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgIHZhciBTYXZlZExlZnQsIFNhdmVkVG9wLCBGcmVkV2lkdGgsIEZyZWRIZWlnaHQ7CgogICAgICAgICAgICBpZiAod2luZG93ICYmIHdpbmRvdy5sb2NhbFN0b3JhZ2UgIT09IHVuZGVmaW5lZCAmJiB3aW5kb3cubG9jYWxTdG9yYWdlLkZSRURfY29uc29sZV9sZWZ0ICYmIHdpbmRvdy5sb2NhbFN0b3JhZ2UuRlJFRF9jb25zb2xlX3RvcCkgewoKICAgICAgICAgICAgICAgIFNhdmVkTGVmdCA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuRlJFRF9jb25zb2xlX2xlZnQ7CiAgICAgICAgICAgICAgICBTYXZlZFRvcCA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuRlJFRF9jb25zb2xlX3RvcDsKICAgICAgICAgICAgICAgIEZyZWRXaWR0aCA9ICQoJyNEZXZlbEZyZWRDb250YWluZXInKS53aWR0aCgpOwogICAgICAgICAgICAgICAgRnJlZEhlaWdodCA9ICQoJyNEZXZlbEZyZWRDb250YWluZXInKS5oZWlnaHQoKTsKCiAgICAgICAgICAgICAgICBpZiAoU2F2ZWRMZWZ0ID4gJCgnYm9keScpLndpZHRoKCkpIHsKICAgICAgICAgICAgICAgICAgICBTYXZlZExlZnQgPSAkKCdib2R5Jykud2lkdGgoKSAtIEZyZWRXaWR0aDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChTYXZlZFRvcCA+ICQoJ2JvZHknKS5oZWlnaHQoKSkgewogICAgICAgICAgICAgICAgICAgIFNhdmVkVG9wID0gJCgnYm9keScpLmhlaWdodCgpIC0gRnJlZEhlaWdodDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoU2F2ZWRMZWZ0ICYmIFNhdmVkVG9wKSB7CiAgICAgICAgICAgICAgICAgICAgJCgnI0RldmVsRnJlZENvbnRhaW5lcicpLmNzcygnbGVmdCcsIFNhdmVkTGVmdCArICdweCcpOwogICAgICAgICAgICAgICAgICAgICQoJyNEZXZlbEZyZWRDb250YWluZXInKS5jc3MoJ3RvcCcsIFNhdmVkVG9wICsgJ3B4Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KCkpOwoKICAgICAgICBpZiAoISQoJ2JvZHknKS5oYXNDbGFzcygnRnJlZEFjdGl2ZScpKSB7CiAgICAgICAgICAgICQoJy5EZXZlbEZyZWRCb3gnKS5oaWRlKCk7CiAgICAgICAgfQoKICAgICAgICAkKCcjRGV2ZWxGcmVkVG9nZ2xlQ29udGFpbmVyTGluaycpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgRGF0YSA9IHsKICAgICAgICAgICAgICAgIEFjdGlvbjogJ0RldmVsRnJlZCcsCiAgICAgICAgICAgICAgICBTdWJhY3Rpb246ICdDb25maWdTd2l0Y2hBSkFYJywKICAgICAgICAgICAgICAgIEtleTogJ0ZyZWQ6OkFjdGl2ZScsCiAgICAgICAgICAgICAgICBWYWx1ZTogJCgnYm9keScpLmhhc0NsYXNzKCdGcmVkQWN0aXZlJykgPyAxIDogMAogICAgICAgICAgICB9OwoKICAgICAgICAgICAgaWYgKERldmVsRnJlZFRvZ2dsZUNvbnRhaW5lckxpbmtQcm9jY2VzcykgcmV0dXJuOwoKICAgICAgICAgICAgRGV2ZWxGcmVkVG9nZ2xlQ29udGFpbmVyTGlua1Byb2NjZXNzID0gMTsKCiAgICAgICAgICAgICQoJ2JvZHknKS50b2dnbGVDbGFzcygnRnJlZEFjdGl2ZScpOwogICAgICAgICAgICAkKCcjRGV2ZWxGcmVkVG9nZ2xlQ29udGFpbmVyTGluaycpLnRvZ2dsZUNsYXNzKCdGcmVkQWN0aXZlJyk7CgogICAgICAgICAgICBpZiAoISQoJy5EZXZlbEZyZWRCb3gnKS5pcygiOnZpc2libGUiKSAmJiAkKCdib2R5JykuaGFzQ2xhc3MoJ0ZyZWRBY3RpdmUnKSkgewogICAgICAgICAgICAgICAgJCgnLkRldmVsRnJlZEJveCcpLnNob3coKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICQoJy5EZXZlbEZyZWRCb3gnKS5oaWRlKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIENvcmUuQUpBWC5GdW5jdGlvbkNhbGwoQ29yZS5Db25maWcuR2V0KCdDR0lIYW5kbGUnKSwgRGF0YSwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgRGV2ZWxGcmVkVG9nZ2xlQ29udGFpbmVyTGlua1Byb2NjZXNzID0gMDsKICAgICAgICAgICAgfSwgJ2pzb24nKTsKICAgICAgICB9KTsKICAgIH07CgogICAgVGFyZ2V0TlMuSW5pdCgpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShDb3JlLkZyZWQuSlNMaW50IHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/Core.Fred.HTMLCheck.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uZGUvCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCgoidXNlIHN0cmljdCI7Ci8qZ2xvYmFsICQ6IGZhbHNlLCBqUXVlcnk6IGZhbHNlICovCgp2YXIgQ29yZSA9IENvcmUgfHwge307CkNvcmUuRnJlZCA9IENvcmUuRnJlZCB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFzIENvcmUuRnJlZC5IVE1MQ2hlY2sKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgYWxsIGxvZ2ljIGZvciB0aGUgRnJlZCBtb2R1bGUgSFRNTENIZWNrCiAqLwpDb3JlLkZyZWQuSFRNTENoZWNrID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIHZhciBDaGVja0Z1bmN0aW9ucyA9IFtdLAogICAgICAgIEVycm9yc0ZvdW5kID0gZmFsc2U7CgogICAgZnVuY3Rpb24gaHRtbEVuY29kZShUZXh0KXsKICAgICAgICByZXR1cm4gVGV4dC5yZXBsYWNlKC8mL2csICcmYW1wOycpLnJlcGxhY2UoLzwvZywgJyZsdDsnKS5yZXBsYWNlKC8+L2csICcmZ3Q7Jyk7CiAgICB9CgogICAgZnVuY3Rpb24gZXNjYXBlU2VsZWN0b3IgKFNlbGVjdG9yKSB7CiAgICAgICAgcmV0dXJuIFNlbGVjdG9yLnJlcGxhY2UoLygjfDp8XC58XFt8XF0pL2csICdcXCQxJyk7CiAgICB9CgogICAgZnVuY3Rpb24gb3V0cHV0RXJyb3IoJEVsZW1lbnQsIEVycm9yVHlwZSwgRXJyb3JEZXNjcmlwdGlvbiwgSGludCl7CiAgICAgICAgdmFyICRDb250YWluZXIsCiAgICAgICAgICAgIENvZGUsCiAgICAgICAgICAgIE1lc3NhZ2U7CgogICAgICAgICQoJyNGcmVkSFRNTENoZWNrUnVubmluZycpLnJlbW92ZSgpOwogICAgICAgIEVycm9yc0ZvdW5kID0gdHJ1ZTsKCiAgICAgICAgLy8gR2V0IGVsZW1lbnQgSFRNTCBieSB3cmFwcGluZyBpdCBpbiBhIGRpdiBhbmQgY2FsbGluZyAuaHRtbCgpIG9uIHRoYXQKICAgICAgICAkQ29udGFpbmVyID0gJCgnPGRpdj48L2Rpdj4nKTsKICAgICAgICAkQ29udGFpbmVyLmFwcGVuZCgkRWxlbWVudC5jbG9uZSgpKTsKCiAgICAgICAgQ29kZSA9ICRDb250YWluZXIuaHRtbCgpOwogICAgICAgIGlmIChDb2RlLmxlbmd0aCA+IDE2MCkgewogICAgICAgICAgICBDb2RlID0gQ29kZS5zdWJzdHJpbmcoMCwgMTYwKSArICcuLi4nOwogICAgICAgIH0KCiAgICAgICAgTWVzc2FnZSA9ICQoJzxwIGNsYXNzPSJTbWFsbCI+PC9wPicpOwogICAgICAgIE1lc3NhZ2UuYXBwZW5kKCc8c3BhbiBjbGFzcz0iRXJyb3IiPkVycm9yOjwvc3Bhbj4gPHN0cm9uZz4nICsgRXJyb3JEZXNjcmlwdGlvbiArICc8L3N0cm9uZz48ZGl2PicgKyBIaW50ICsgJzwvZGl2PjxkaXY+PGNvZGU+JyArIGh0bWxFbmNvZGUoQ29kZSkgKyAnPC9jb2RlPjwvZGl2PicpOwogICAgICAgICQoJyNGcmVkSFRNTENoZWNrUmVzdWx0cycpLmFwcGVuZChNZXNzYWdlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFBlcmZvcm1zIHZhcmlvdXMgYWNjZXNzaWJpbGl0eSBjaGVja3MgdG8gc2VlIGlmIHRoZSBIVE1MIGNvZGUKICAgICAqICAgICAgdmlvbGF0ZXMgc29tZSBvZiBvdXIgZ3VpZGVsaW5lcy4KICAgICAqICAgICAgUmV0dXJucyBub3RoaW5nLCBidXQgY2FsbHMgT3V0cHV0RXJyb3IgaWYgYW4gZXJyb3Igd2FzIGZvdW5kLgogICAgICovCgogICAgZnVuY3Rpb24gQ2hlY2tBY2Nlc3NpYmlsaXR5KCkgewogICAgICAgIC8qCiAgICAgICAgICogY2hlY2sgaWYgaW5wdXQgZWxlbWVudHMgZWl0aGVyIGhhdmUgYSBsYWJlbCBvciBhbiBhc3NpZ25lZCB0aXRsZSB0ZXh0CiAgICAgICAgICovCiAgICAgICAgJCgnaW5wdXQ6dGV4dDp2aXNpYmxlLCBpbnB1dDpwYXNzd29yZDp2aXNpYmxlLCBpbnB1dDpjaGVja2JveDp2aXNpYmxlLCBpbnB1dDpyYWRpbzp2aXNpYmxlLCBzZWxlY3Q6dmlzaWJsZSwgdGV4dGFyZWE6dmlzaWJsZScpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKSwKICAgICAgICAgICAgICAgICRMYWJlbCA9ICQoW10pLAogICAgICAgICAgICAgICAgVGl0bGU7CgogICAgICAgICAgICAvLyBJZ25vcmUgZWxlbWVudHMgd2hpY2ggaGF2ZSBhIHBsYWNlaG9sZGVyIHRleHQKICAgICAgICAgICAgaWYgKCR0aGlzLmF0dHIoJ3BsYWNlaG9sZGVyJykgJiYgJHRoaXMuYXR0cigncGxhY2Vob2xkZXInKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gZmlyc3QgbG9vayBmb3IgbGFiZWxzIHdoaWNoIHJlZmVyIHRvIHRoaXMgZWxlbWVudCBieSBpZAogICAgICAgICAgICBpZiAoJHRoaXMuYXR0cignaWQnKSAmJiAkdGhpcy5hdHRyKCdpZCcpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgJExhYmVsID0gJCgnbGFiZWxbZm9yPScgKyBlc2NhcGVTZWxlY3RvcigkdGhpcy5hdHRyKCdpZCcpKSArICddJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gdGhlbiBsb29rIGZvciBsYWJlbHMgd2hpY2ggc3Vycm91bmQgdGhlIGN1cnJlbnQgZWxlbWVudAogICAgICAgICAgICBpZiAoISRMYWJlbC5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICRMYWJlbCA9ICR0aGlzLnBhcmVudHMoJ2xhYmVsJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkTGFiZWwubGVuZ3RoID4gMSkgewogICAgICAgICAgICAgICAgb3V0cHV0RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgJHRoaXMsCiAgICAgICAgICAgICAgICAgICAgJ0FjY2Vzc2liaWxpdHlNdWx0aXBsZUxhYmVsJywKICAgICAgICAgICAgICAgICAgICAnSW5wdXQgZWxlbWVudCB3aXRoIG1vcmUgdGhhbiBvbmUgYXNzaWduZWQgbGFiZWxzJywKICAgICAgICAgICAgICAgICAgICAnUGxlYXNlIG1ha2Ugc3VyZSB0aGF0IG9ubHkgb25lIGxhYmVsIGlzIHByZXNlbnQgZm9yIHRoaXMgaW5wdXQgZWxlbWVudC4nCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBmaXJzdCBjaGVjayBpZiBhIHRpdGxlIGF0dHJpYnV0ZSBpcyBwcmVzZW50LCB0aGF0IGlzIGFsc28gb2sgZm9yIGFjY2Vzc2liaWxpdHkKICAgICAgICAgICAgVGl0bGUgPSAkdGhpcy5hdHRyKCd0aXRsZScpOwogICAgICAgICAgICBpZiAoVGl0bGUgJiYgVGl0bGUubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIG9rLCBubyB0aXRsZSBhdmFpbGFibGUsIG5vdyBsb29rIGZvciBhbiBhc3NpZ25lZCBsYWJlbCBlbGVtZW50CiAgICAgICAgICAgIGlmICghJExhYmVsIHx8ICEkTGFiZWwubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICBvdXRwdXRFcnJvcigKICAgICAgICAgICAgICAgICAgICAkdGhpcywKICAgICAgICAgICAgICAgICAgICAnQWNjZXNzaWJpbGl0eU1pc3NpbmdMYWJlbCcsCiAgICAgICAgICAgICAgICAgICAgJ0lucHV0IGVsZW1lbnQgd2l0aG91dCBhIGRlc2NyaWJpbmcgbGFiZWwsIHBsYWNlaG9sZGVyIG9yIHRpdGxlIGF0dHJpYnV0ZScsCiAgICAgICAgICAgICAgICAgICAgJ1BsZWFzZSBhZGQgYSBwbGFjZWhvbGRlciBvciB0aXRsZSBhdHRyaWJ1dGUgb3IgYSBsYWJlbCBlbGVtZW50IHdpdGggYSAic3BlYWtpbmciIGRlc2NyaXB0aW9uIGZvciB0aGlzIGVsZW1lbnQuJwogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAvKgogICAgICAgICAqIGNoZWNrIGlmIGxpbmtzIGhhdmUgZWl0aGVyIGEgdGV4dCBvciBhIHRpdGxlCiAgICAgICAgICovCiAgICAgICAgJCgnYScpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTsKCiAgICAgICAgICAgIC8vIGlnbm9yZSBpZiBpdCdzIGEgImEgbmFtZSIgYW5kIG5vICJhIGhyZWYiCiAgICAgICAgICAgIGlmICgkdGhpcy5hdHRyKCduYW1lJykgJiYgISR0aGlzLmF0dHIoJ2hyZWYnKSkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBsb2cgaWYgYW4gYXR0cmlidXRlIHRpdGxlIGV4dGlzdHMgYnV0IG5vdGhpbmcgaXMgaW4gdGhlcmUsIHNvbWV0aGluZyBtaXNzZWQgc29tZWJvZHkgKGUuIGcuIHRpdGxlPSIiKQogICAgICAgICAgICAkLmVhY2goJHRoaXNbMF0uYXR0cmlidXRlcywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PT0gJ3RpdGxlJyAmJiAhdGhpcy52YWx1ZS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICBvdXRwdXRFcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICdBY2Nlc3NpYmlsaXR5SW5hY2Nlc3NpYmxlTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgICdMaW5rIHdpdGggdGl0bGUgYnV0IHdpdGhvdXQgdmFsdWUnLAogICAgICAgICAgICAgICAgICAgICAgICAnUGxlYXNlIG1ha2Ugc3VyZSB0aGF0IGV2ZXJ5IGxpbmsgaGFzIGEgdGl0bGUgYXR0cmlidXRlIG5vdCBlbXB0eS4nCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAvLyBldmVyeXRoaW5nIGlzIG9rLCBpZiB0ZXh0IGluIGEgaHJlZiBleGlzdHMKICAgICAgICAgICAgaWYgKCR0aGlzLnRleHQoKSAmJiAkdGhpcy50ZXh0KCkubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGV2ZXJ5dGhpbmcgaXMgb2ssIGlmIHRpdGxlIGluIGEgaHJlZiBleGlzdHMKICAgICAgICAgICAgaWYgKCR0aGlzLmF0dHIoJ3RpdGxlJykgJiYgJHRoaXMuYXR0cigndGl0bGUnKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgb3V0cHV0RXJyb3IoCiAgICAgICAgICAgICAgICAkdGhpcywKICAgICAgICAgICAgICAgICdBY2Nlc3NpYmlsaXR5SW5hY2Nlc3NpYmxlTGluaycsCiAgICAgICAgICAgICAgICAnTGluayB3aXRob3V0IHRleHQgb3IgdGl0bGUnLAogICAgICAgICAgICAgICAgJ1BsZWFzZSBtYWtlIHN1cmUgdGhhdCBldmVyeSBsaW5rIGhhcyBlaXRoZXIgYSB0ZXh0IGNvbnRlbnQgb3IgYSB0aXRsZSBhdHRyaWJ1dGUgdGhhdCBjYW4gYmUgdXNlZCBieSBhIHNjcmVlbnJlYWRlciB0byBpZGVudGlmeSB0aGUgbGluay4nCiAgICAgICAgICAgICk7CgogICAgICAgIH0pOwogICAgfQogICAgQ2hlY2tGdW5jdGlvbnMucHVzaChDaGVja0FjY2Vzc2liaWxpdHkpOwoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgUGVyZm9ybXMgdmFyaW91cyBjaGVja3MgZm9yIGJhZCBIVE1MIHByYWN0aWNlLgogICAgICogICAgICBSZXR1cm5zIG5vdGhpbmcsIGJ1dCBjYWxscyBPdXRwdXRFcnJvciBpZiBhbiBlcnJvciB3YXMgZm91bmQuCiAgICAgKi8KCiAgICBmdW5jdGlvbiBDaGVja0JhZFByYWN0aWNlKCkgewogICAgICAgIHZhciBPYnNvbGV0ZUVsZW1lbnQyUmVwbGFjZW1lbnQsCiAgICAgICAgICAgIFVzZWRJRHMgPSBbXTsKCiAgICAgICAgLy8gY2hlY2sgZm9yIGlucHV0cyB3aGljaCBzaG91bGQgYmUgYnV0dG9ucwogICAgICAgICQoJ2lucHV0OmJ1dHRvbiwgaW5wdXQ6c3VibWl0LCBpbnB1dDpyZXNldCcpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTsKICAgICAgICAgICAgb3V0cHV0RXJyb3IoCiAgICAgICAgICAgICAgICAkdGhpcywKICAgICAgICAgICAgICAgICdCYWRQcmFjdGljZUlucHV0QnV0dG9uJywKICAgICAgICAgICAgICAgICdPbGQgaW5wdXQgd2l0aCB0eXBlIGJ1dHRvbiwgc3VibWl0IG9yIHJlc2V0IGRldGVjdGVkJywKICAgICAgICAgICAgICAgICdQbGVhc2UgcmVwbGFjZSB0aGlzIGVsZW1lbnQgd2l0aCBhIDxjb2RlPiZsdDtidXR0b24mZ3Q7PC9jb2RlPiB3aXRoIHRoZSBzYW1lIHR5cGUuIElucHV0IGZpZWxkcyBtdXN0IG5vdCBiZSB1c2VkIGZvciB0aGlzIHB1cnBvc2UgYW55IG1vcmUuJwogICAgICAgICAgICApOwogICAgICAgIH0pOwoKICAgICAgICAvKgogICAgICAgIFRPRE86IGxvb2sgZm9yIGEgZml4IGZvciBjaHJvbWUuIEluIENocm9tZSwgdGhlIHNpemUgYXR0cmlidXRlIGhhcyBhIHZhbHVlIG9mIDIwIGlmCiAgICAgICAgICAgIGl0IHdhcyBub3Qgc3BlY2lmaWVkLgogICAgICAgIC8vIGNoZWNrIGZvciBpbnB1dHMgd2l0aCBzaXplIGF0dHJpYnV0ZXMKICAgICAgICAkKCdpbnB1dDpub3QoOmZpbGUpJykuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpOwogICAgICAgICAgICBpZiAoJHRoaXMuYXR0cignc2l6ZScpICYmICR0aGlzLmF0dHIoJ3NpemUnKSA+IDApIHsKICAgICAgICAgICAgICAgIG91dHB1dEVycm9yKAogICAgICAgICAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAgICAgICAgICdCYWRQcmFjdGljZUlucHV0U2l6ZScsCiAgICAgICAgICAgICAgICAgICAgJ0lucHV0IGVsZW1lbnQgd2l0aCBzaXplIGF0dHJpYnV0ZScsCiAgICAgICAgICAgICAgICAgICAgJ1BsZWFzZSByZW1vdmUgdGhlIHNpemUgYXR0cmlidXRlICh0aGlzIGlzIG9ubHkgYWxsb3dlZCBmb3IgZmlsZSB1cGxvYWQgZmllbGRzKS4gTWF5YmUgYSBjbGFzcyBsaWtlIFcyNXBjLCBXMzNwYyBvciBXNTBwYyB3b3VsZCBhY2hpZXZlIGEgc2ltaWxhciBlZmZlY3QuJwogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgICovCgogICAgICAgIC8vIGNoZWNrIGZvciBvYnNvbGV0ZSBlbGVtZW50cwogICAgICAgIE9ic29sZXRlRWxlbWVudDJSZXBsYWNlbWVudCA9IHsKICAgICAgICAgICAgYjogJzxjb2RlPiZsdDtzdHJvbmcmZ3Q7PC9jb2RlPicsCiAgICAgICAgICAgIGk6ICc8Y29kZT4mbHQ7ZW0mZ3Q7PC9jb2RlPicsCiAgICAgICAgICAgIGZvbnQ6ICc8Y29kZT4mbHQ7c3BhbiZndDs8L2NvZGU+IHdpdGggYSBDU1MgY2xhc3MnLAogICAgICAgICAgICBub2JyOiAnYSBwcm9wZXIgc3Vic3RpdHV0ZSAoZGVwZW5kcyBvbiBjb250ZXh0KScKICAgICAgICB9OwoKICAgICAgICAvLyBjaGVjayBmb3IgaW5wdXRzIHdpdGggc2l6ZSBhdHRyaWJ1dGVzCiAgICAgICAgJCgnZm9udCwgbm9icicpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTsKICAgICAgICAgICAgb3V0cHV0RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgJHRoaXMsCiAgICAgICAgICAgICAgICAgICAgJ0JhZFByYWN0aWNlT2Jzb2xldGVFbGVtZW50JywKICAgICAgICAgICAgICAgICAgICAnT2Jzb2xldGUgZWxlbWVudCA8Y29kZT4mbHQ7JyArIHRoaXMudGFnTmFtZSArICcmZ3Q7PC9jb2RlPiB1c2VkJywKICAgICAgICAgICAgICAgICAgICAnUGxlYXNlIHJlcGxhY2UgaXQgd2l0aDogJyArIE9ic29sZXRlRWxlbWVudDJSZXBsYWNlbWVudFt0aGlzLnRhZ05hbWUudG9Mb3dlckNhc2UoKV0gKyAnLicKICAgICAgICAgICAgKTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gY2hlY2sgZm9yIG11bHRpcGxlIHVzYWdlIG9mIG9uZSBJRAogICAgICAgICQoJ2Rpdiwgc3BhbiwgdWwsIG9sLCBsaSwgYSwgaDEsIGgyLCBoMywgaDQsIGg1LCBpbnB1dCwgc2VsZWN0JykuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKSwKICAgICAgICAgICAgICAgIElEID0gJHRoaXMuYXR0cignaWQnKSB8fCAnJzsKCiAgICAgICAgICAgIGlmIChJRCkgewogICAgICAgICAgICAgICAgaWYgKCQuaW5BcnJheShJRCwgVXNlZElEcykgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgb3V0cHV0RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCYWRQcmFjdGljZU11bHRpcGxlSURVc2FnZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSUQgdXNlZCBtdWx0aXBsZSB0aW1lczogJyArIElELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BsZWFzZSBtYWtlIHN1cmUgdG8gdXNlIGFuIElEIG9ubHkgb25jZSEnCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIFVzZWRJRHMucHVzaCgkKHRoaXMpLmF0dHIoJ2lkJykpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIGZ1bmN0aW9uIG9ic29sZXRlQ2xhc3NFcnJvcihDbGFzc05hbWUpIHsKICAgICAgICAgICAgLy8gUmV0dXJuIGEgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCBhcyBhIGNhbGxiYWNrIGJ5IGVhY2goKS4KICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTsKICAgICAgICAgICAgICAgIG91dHB1dEVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgJ0JhZFByYWN0aWNlT2Jzb2xldGVDbGFzcycsCiAgICAgICAgICAgICAgICAgICAgICAgICdPYnNvbGV0ZSBjbGFzcyA8Y29kZT4iJyArIENsYXNzTmFtZSArICciPC9jb2RlPiB1c2VkJywKICAgICAgICAgICAgICAgICAgICAgICAgJ1BsZWFzZSByZW1vdmUgaXQgYW5kIHJlcGxhY2UgaXQgd2l0aCBhIHByb3BlciBzdWJzdGl0dXRlLicKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAvLyBjaGVjayBmb3IgaW5wdXRzIHdpdGggc2l6ZSBhdHRyaWJ1dGVzCiAgICAgICAgJCgnLm1haW5ib2R5JykuZWFjaChvYnNvbGV0ZUNsYXNzRXJyb3IoJ21haW5ib2R5JykpOwogICAgICAgICQoJy5jb250ZW50a2V5JykuZWFjaChvYnNvbGV0ZUNsYXNzRXJyb3IoJ2NvbnRlbnRrZXknKSk7CiAgICAgICAgJCgnLmNvbnRlbnR2YWx1ZScpLmVhY2gob2Jzb2xldGVDbGFzc0Vycm9yKCdjb250ZW50dmFsdWUnKSk7CiAgICAgICAgJCgnLnNlYXJjaGFjdGl2ZScpLmVhY2gob2Jzb2xldGVDbGFzc0Vycm9yKCdzZWFyY2hhY3RpdmUnKSk7CiAgICAgICAgJCgnLnNlYXJjaHBhc3NpdmUnKS5lYWNoKG9ic29sZXRlQ2xhc3NFcnJvcignc2VhcmNocGFzc2l2ZScpKTsKCiAgICAgICAgLy8gY2hlY2sgZm9yIGV2ZW50cwogICAgICAgICQoImRpdiIpLmVhY2goZnVuY3Rpb24oKXsKCiAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyksCiAgICAgICAgICAgICAgICAkQ29udGFpbmVyLAogICAgICAgICAgICAgICAgQ29kZSwKICAgICAgICAgICAgICAgIEV2ZW50cywKICAgICAgICAgICAgICAgIEV2ZW50OwoKICAgICAgICAgICAgLy8gRG9uJ3Qgb3V0cHV0IHRoaXMgZXJyb3IgZm9yIGZyZWQgaXRzZWxmLgogICAgICAgICAgICAvLyBXZSBhbHNvIGN1cnJlbnRseSBuZWVkIG9uY2xpY2sgZXZlbnRzIGluIHRoZSBtYWluIG1lbnUuCiAgICAgICAgICAgIGlmICgkdGhpcy5jbG9zZXN0KCcuRGV2ZWxGcmVkQ29udGFpbmVyLCAjTmF2aWdhdGlvbkNvbnRhaW5lcicpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBHZXQgZWxlbWVudCBIVE1MIGJ5IHdyYXBwaW5nIGl0IGluIGEgZGl2IGFuZCBjYWxsaW5nIC5odG1sKCkgb24gdGhhdAogICAgICAgICAgICAkQ29udGFpbmVyID0gJCgnPGRpdj48L2Rpdj4nKTsKICAgICAgICAgICAgJENvbnRhaW5lci5hcHBlbmQoJHRoaXMuY2xvbmUoKSk7CgogICAgICAgICAgICAvLyBvbmxvYWQgYXR0cmlidXRlIGlzIHNvbWV0aW1lcyBuZWVkZWQgZm9yIGlmcmFtZXMsIHNvIHdlIGp1c3QgcmVtb3ZlIGl0IGZvciB0aGUgY2hlY2sKICAgICAgICAgICAgJENvbnRhaW5lci5maW5kKCdpZnJhbWUnKS5yZW1vdmVBdHRyKCdvbmxvYWQnKTsKCiAgICAgICAgICAgIENvZGUgPSAkQ29udGFpbmVyLmh0bWwoKTsKCiAgICAgICAgICAgIC8vIHNlYXJjaCBmb3IgZXZlbnRzIGluIGh0bWwgZWxlbWVudCBjb2RlCiAgICAgICAgICAgIEV2ZW50cyA9IENvZGUubWF0Y2goL1xzK29uXHcrPS9pZyk7CgogICAgICAgICAgICAvLyBzZW5kIGVycm9yIHRvIG91dHB1dAogICAgICAgICAgICBpZiAoRXZlbnRzICE9PSBudWxsKXsKICAgICAgICAgICAgICAgIC8vIGNsZWFuIGxlYWRpbmcgc3BhY2UgYW5kIGVxdWFscyBzaWduIGZyb20gdGhlIFJlZ0V4IG1hdGNoaW5nCiAgICAgICAgICAgICAgICBmb3IgKEV2ZW50IGluIEV2ZW50cyl7CiAgICAgICAgICAgICAgICAgICAgaWYgKEV2ZW50cy5oYXNPd25Qcm9wZXJ0eShFdmVudCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRzW0V2ZW50XSA9IEV2ZW50c1tFdmVudF0udG9TdHJpbmcoKS5tYXRjaCgvb25cdysvKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvdXRwdXRFcnJvcigKICAgICAgICAgICAgICAgICAgICAkdGhpcywKICAgICAgICAgICAgICAgICAgICAnQmFkUHJhY3RpY2VFdmVudCcsCiAgICAgICAgICAgICAgICAgICAgJ0V2ZW50IDxjb2RlPiInICsgRXZlbnRzICsgJyI8L2NvZGU+IHVzZWQnLAogICAgICAgICAgICAgICAgICAgICdQbGVhc2UgcmVtb3ZlIGl0IGFuZCByZXBsYWNlIGl0IHdpdGggYSBwcm9wZXIgc3Vic3RpdHV0ZS4nCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgfQogICAgQ2hlY2tGdW5jdGlvbnMucHVzaChDaGVja0JhZFByYWN0aWNlKTsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIEhUTUxDaGVjayBjYW4gYmUgc3RhcnRlZCAoalF1ZXJ5IGlzIGxvYWRlZCkuCiAgICAgKi8KICAgIFRhcmdldE5TLkNoZWNrRm9yU3RhcnQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKGpRdWVyeSkgewogICAgICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgICAgICAgQ29yZS5GcmVkLkhUTUxDaGVjay5SdW4oKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICBDb3JlLkZyZWQuSFRNTENoZWNrLkNoZWNrRm9yU3RhcnQoKTsKICAgICAgICAgICAgfSwgMjUwKTsKICAgICAgICB9CiAgICB9OwoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgUnVucyBhbGwgYXZhaWxhYmxlIGNoZWNrIGZ1bmN0aW9ucwogICAgICovCiAgICBUYXJnZXROUy5SdW4gPSBmdW5jdGlvbigpewogICAgICAgICQuZWFjaChDaGVja0Z1bmN0aW9ucywgZnVuY3Rpb24oKXsKICAgICAgICAgICAgdGhpcygpOwogICAgICAgIH0pOwogICAgICAgICQoJyNGcmVkSFRNTENoZWNrUnVubmluZycpLnJlbW92ZSgpOwogICAgICAgIGlmICghRXJyb3JzRm91bmQpIHsKICAgICAgICAgICAgJCgnI0ZyZWRIVE1MQ2hlY2tSZXN1bHRzJykuaHRtbCgnPHAgY2xhc3M9IkZyZWRKU0xpbnRTdWNjZXNzZnVsIj5BbGwgY2hlY2tzIG9rLjwvcD4nKTsKICAgICAgICB9CiAgICB9OwoKICAgIHJldHVybiBUYXJnZXROUzsKfShDb3JlLkZyZWQuSFRNTENoZWNrIHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/Core.Fred.JSLint.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uZGUvCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCgoidXNlIHN0cmljdCI7Ci8qZ2xvYmFsIEpTTElOVDogZmFsc2UsICQ6IGZhbHNlLCBqUXVlcnk6IGZhbHNlICovCgp2YXIgQ29yZSA9IENvcmUgfHwge307CkNvcmUuRnJlZCA9IENvcmUuRnJlZCB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIGFsbCBsb2dpYyBmb3IgdGhlIEZyZWQgbW9kdWxlIEpTTGludAogKi8KQ29yZS5GcmVkLkpTTGludCA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICBmdW5jdGlvbiBodG1sRXNjYXBlKHN0cikgewogICAgICAgIHJldHVybiBTdHJpbmcoc3RyKQogICAgICAgICAgICAucmVwbGFjZSgvJi9nLCAnJmFtcDsnKQogICAgICAgICAgICAucmVwbGFjZSgvIi9nLCAnJnF1b3Q7JykKICAgICAgICAgICAgLnJlcGxhY2UoLycvZywgJyYjMzk7JykKICAgICAgICAgICAgLnJlcGxhY2UoLzwvZywgJyZsdDsnKQogICAgICAgICAgICAucmVwbGFjZSgvPi9nLCAnJmd0OycpOwogICAgfQoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcHJpdmF0ZQogICAgICogQGRlc2NyaXB0aW9uIFN0YXJ0IEpTTGludCBjaGVjay4KICAgICAqLwogICAgZnVuY3Rpb24gc3RhcnRKU0xpbnQoKSB7CiAgICAgICAgdmFyIFJlc3VsdCwKICAgICAgICAgICAgRXJyb3JzRm91bmQgPSBmYWxzZTsKCiAgICAgICAgLy8gVGhpcyBmdW5jIHNob3VsZCBub3QgYmUgc3RhcnRlZCBtb3JlIHRoYW4gb25lIHRpbWUuLi4KICAgICAgICBpZiAoVGFyZ2V0TlMuU3RhcnRlZCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIFRhcmdldE5TLlN0YXJ0ZWQrKzsKCiAgICAgICAgLy8gU3RhcnQgSlNMaW50IGZvciBldmVyeSBzY3JpcHQgd2UgZm91bmQgYW5kIG91dHB1dCB0aGUgcmVzdWx0CiAgICAgICAgJC5lYWNoKFRhcmdldE5TLkFsbFNjcmlwdHMsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIEVycm9yT2JqZWN0LCBPdXRwdXQsIGk7CgogICAgICAgICAgICAvLyBJZ25vcmUgaW52YWxpZCBjb2RlIHRoYXQgaXMgaW5qZWN0ZWQgYnkgdGhlIGdvb2dsZSBhbmFseXRpY3Mgb3B0LW91dCBwbHVnaW4gZm9yIGJyb3dzZXJzLgogICAgICAgICAgICBpZiAodGhpcy5TcmMgPT09ICdpbmxpbmUnICYmIHRoaXMuU2NyaXB0Lm1hdGNoKC9fZ2FVc2VyUHJlZnMvKSkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBSZXN1bHQgPSBKU0xJTlQodGhpcy5TY3JpcHQsICh0aGlzLlNyYyA9PT0gJ2lubGluZScpID8gVGFyZ2V0TlMuSW5saW5lT3B0aW9ucyA6IFRhcmdldE5TLlJlbW90ZU9wdGlvbnMpOwogICAgICAgICAgICBpZiAoIVJlc3VsdCkgewogICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IEpTTElOVC5lcnJvcnMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBFcnJvck9iamVjdCA9IEpTTElOVC5lcnJvcnNbaV07CiAgICAgICAgICAgICAgICAgICAgaWYgKEVycm9yT2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNGcmVkSlNMaW50UnVubmluZycpLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQgPSAnPGRpdiBjbGFzcz0iRnJlZEpTTGludEVycm9yIj4nOwogICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQgKz0gJzxwPjxzcGFuIGNsYXNzPSJFcnJvciI+RXJyb3I6IDwvc3Bhbj48c3Ryb25nPicgKyBFcnJvck9iamVjdC5yZWFzb24gKyAnPC9zdHJvbmc+IFNvdXJjZTogICAgICcgKyB0aGlzLlNyYyArICc6JyArIEVycm9yT2JqZWN0LmxpbmUgKyAnOicgKyBFcnJvck9iamVjdC5jaGFyYWN0ZXIgKyAnPC9wPic7CiAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dCArPSAnPGNvZGU+JyArIGh0bWxFc2NhcGUoRXJyb3JPYmplY3QuZXZpZGVuY2UpICsgJzwvY29kZT4nOwogICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQgKz0gJzwvZGl2Pic7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNGcmVkSlNMaW50U2NyaXB0cycpLmFwcGVuZChPdXRwdXQpOwogICAgICAgICAgICAgICAgICAgICAgICBFcnJvcnNGb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIGFjdGl2YXRlIGVsc2UgYnJhbmNoIHRvIHNlZSBwb3NpdGl2ZSBjaGVjayByZXN1bHRzIHBlciBmaWxlIGZvciBmcmVkIGRlYnVnZ2luZwogICAgICAgICAgICAvL2Vsc2UgewogICAgICAgICAgICAvLyAgICAkKCcjRnJlZEpTTGludFJ1bm5pbmcnKS5yZW1vdmUoKTsKICAgICAgICAgICAgLy8gICAgJCgnI0ZyZWRKU0xpbnRTY3JpcHRzJykuYXBwZW5kKCc8cCBjbGFzcz0iRnJlZEpTTGludFN1Y2Nlc3NmdWwiPicgKyB0aGlzLlNyYyArICcgb2s8L3A+Jyk7CiAgICAgICAgICAgIC8vfQogICAgICAgIH0pOwogICAgICAgIGlmICghRXJyb3JzRm91bmQpIHsKICAgICAgICAgICAgJCgnI0ZyZWRKU0xpbnRSdW5uaW5nJykucmVtb3ZlKCk7CiAgICAgICAgICAgICQoJyNGcmVkSlNMaW50U2NyaXB0cycpLmFwcGVuZCgnPHAgY2xhc3M9IkZyZWRKU0xpbnRTdWNjZXNzZnVsIj5BbGwgY2hlY2tzIG9rLjwvcD4nKTsKICAgICAgICB9CgogICAgICAgIGlmIChUYXJnZXROUy5BbGxTY3JpcHRzLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICAkKCcjRnJlZEpTTGludFNjcmlwdHMnKS5hcHBlbmQoJzxwPk5vIHNjcmlwdHMgZm91bmQhPC9wPicpLmNzcygnaGVpZ2h0JywgJzE1cHgnKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAZmllbGQKICAgICAqIEBkZXNjcmlwdGlvbiBBbGwgb3B0aW9ucyBmb3IgSlNMaW50LgogICAgICovCiAgICBUYXJnZXROUy5Db21tb25PcHRpb25zID0gewogICAgICAgIGJyb3dzZXI6IHRydWUsCiAgICAgICAgd2hpdGU6IHRydWUsCiAgICAgICAgaW5kZW50OiA0LAogICAgICAgIGRldmVsOiB0cnVlLAogICAgICAgIG9uZXZhcjogdHJ1ZSwKICAgICAgICB1bmRlZjogdHJ1ZSwKICAgICAgICBub21lbjogdHJ1ZSwKICAgICAgICBlcWVxZXE6IHRydWUsCiAgICAgICAgcGx1c3BsdXM6IGZhbHNlLAogICAgICAgIGJpdHdpc2U6IHRydWUsCiAgICAgICAgc3RyaWN0OiB0cnVlLAogICAgICAgIGltbWVkOiB0cnVlLAogICAgICAgIHByZWRlZjogWydDb3JlJywgJ2lzSlF1ZXJ5T2JqZWN0JywgJyQnLCAnalF1ZXJ5JywgJ0NLRURJVE9SJywgJ3dpbmRvdycsICdkb2N1bWVudCcsICdwcmludFN0YWNrVHJhY2UnXQogICAgfTsKICAgIFRhcmdldE5TLlJlbW90ZU9wdGlvbnMgPSAkLmV4dGVuZChUYXJnZXROUy5Db21tb25PcHRpb25zLCB7fSk7CiAgICBUYXJnZXROUy5JbmxpbmVPcHRpb25zID0gJC5leHRlbmQoVGFyZ2V0TlMuQ29tbW9uT3B0aW9ucywgewogICAgICAgIHdoaXRlOiBmYWxzZQogICAgfSk7CgogICAgVGFyZ2V0TlMuQWxsU2NyaXB0cyA9IFRhcmdldE5TLkFsbFNjcmlwdHMgfHwgW107CiAgICBUYXJnZXROUy5XYWl0aW5nID0gMDsKICAgIFRhcmdldE5TLlN0YXJ0ZWQgPSAwOwogICAgVGFyZ2V0TlMuU291cmNlcyA9IHt9OwoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgVGhpcyBpcyB0aGUgaW5pdCBmdW5jdGlvbiBmb3IgSlNMaW50LgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIC8vIHRoaXMgbW9kdWxlIG5lZWRzIGpRdWVyeSEKICAgICAgICBpZiAodHlwZW9mIGpRdWVyeSA9PT0gJ3VuZGVmaW5lZCcgfHwgIWpRdWVyeSkgewogICAgICAgICAgICB3aW5kb3cuYWxlcnQoJ0ZyZWQgSlNMaW50IG1vZHVsZSBuZWVkcyBqUXVlcnkgbG9hZGVkJyk7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdGcmVkSlNMaW50U2NyaXB0cycpLnN0eWxlLmhlaWdodCA9ICcxNXB4JzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIENvcmUuRnJlZC5KU0xpbnQuR2V0U2NyaXB0cygpOwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9OwoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24gR2V0IGFsbCBzY3JpcHRzIHRvIGNoZWNrLgogICAgICovCiAgICBUYXJnZXROUy5HZXRTY3JpcHRzID0gZnVuY3Rpb24gKCkgewogICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIFNjcmlwdHMsIFNvdXJjZTsKCiAgICAgICAgICAgICQoJ3NjcmlwdCcpLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgLy8gRXhjbHVkZSB0aGUgRnJlZCBKYXZhU2NyaXB0IDstKQogICAgICAgICAgICAgICAgU2NyaXB0cyA9ICQodGhpcykudGV4dCgpOwoKICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmlzKCdbc3JjXScpKSB7CiAgICAgICAgICAgICAgICAgICAgU291cmNlID0gJCh0aGlzKS5hdHRyKCdzcmMnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIFNvdXJjZSA9ICdpbmxpbmUnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChTb3VyY2UgPT09ICdpbmxpbmUnKSB7CiAgICAgICAgICAgICAgICAgICAgVGFyZ2V0TlMuQWxsU2NyaXB0cy5wdXNoKHtTcmM6IFNvdXJjZSwgU2NyaXB0OiBTY3JpcHRzfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBJZiBleHRlcm5hbCBzb3VyY2UgaXMgbm90IGEgdGhpcmRwYXJ0eSBzY3JpcHQsIGxvYWQgaXQhCiAgICAgICAgICAgICAgICAgICAgaWYgKCFTb3VyY2UubWF0Y2goL3RoaXJkcGFydHkvKSAmJiAhU291cmNlLm1hdGNoKC9jaHJvbWU6XC9cLy8pICYmICFUYXJnZXROUy5Tb3VyY2VzW1NvdXJjZV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0TlMuV2FpdGluZysrOwogICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXROUy5Tb3VyY2VzW1NvdXJjZV0gPSAxOwoKICAgICAgICAgICAgICAgICAgICAgICAgJC5nZXQoU291cmNlLCB7fSwgZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldE5TLkFsbFNjcmlwdHMucHVzaCh7U3JjOiB0aGlzLnVybCwgU2NyaXB0OiBkYXRhfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXROUy5XYWl0aW5nLS07CiAgICAgICAgICAgICAgICAgICAgICAgIH0sICd0ZXh0Jyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIC8vIHN0YXJ0IGpzbGludCwgaWYgYWxsIGFqYXggcmVxdWVzdHMgYXJlIHJlYWR5CiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgQ29yZS5GcmVkLkpTTGludC5DaGVja0ZvclN0YXJ0KCk7CiAgICAgICAgICAgIH0sIDI1MCk7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBjaGVja3MsIGlmIEpTTGludCBjYW4gYmUgc3RhcnRlZCAoYWxsIHNjcmlwdHMgYXJlIGxvYWRlZCkuCiAgICAgKi8KICAgIFRhcmdldE5TLkNoZWNrRm9yU3RhcnQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKFRhcmdldE5TLldhaXRpbmcgPD0gMCAmJiBUYXJnZXROUy5TdGFydGVkID09PSAwKSB7CiAgICAgICAgICAgIHN0YXJ0SlNMaW50KCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBpZiAoVGFyZ2V0TlMuU3RhcnRlZCA9PT0gMCkgewogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgQ29yZS5GcmVkLkpTTGludC5DaGVja0ZvclN0YXJ0KCk7CiAgICAgICAgICAgICAgICB9LCAyNTApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKICAgIHJldHVybiBUYXJnZXROUzsKfShDb3JlLkZyZWQuSlNMaW50IHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/thirdparty/jslint/jslint.js" Permission="660" Encode="Base64">Ly8gKEMpMjAwMiBEb3VnbGFzIENyb2NrZm9yZAovLyB3d3cuSlNMaW50LmNvbQoidXNlIHN0cmljdCI7dmFyIEpTTElOVD0oZnVuY3Rpb24oKXt2YXIgYWRzYWZlX2lkLGFkc2FmZV9tYXksYWRzYWZlX3dlbnQsYW5vbm5hbWUsYXBwcm92ZWQsYXRydWxlPXttZWRpYTp0cnVlLCdmb250LWZhY2UnOnRydWUscGFnZTp0cnVlfSxiYW5nPXsnPCc6dHJ1ZSwnPD0nOnRydWUsJz09Jzp0cnVlLCc9PT0nOnRydWUsJyE9PSc6dHJ1ZSwnIT0nOnRydWUsJz4nOnRydWUsJz49Jzp0cnVlLCcrJzp0cnVlLCctJzp0cnVlLCcqJzp0cnVlLCcvJzp0cnVlLCclJzp0cnVlfSxiYW5uZWQ9eydhcmd1bWVudHMnOnRydWUsY2FsbGVlOnRydWUsY2FsbGVyOnRydWUsY29uc3RydWN0b3I6dHJ1ZSwnZXZhbCc6dHJ1ZSxwcm90b3R5cGU6dHJ1ZSx1bndhdGNoOnRydWUsdmFsdWVPZjp0cnVlLHdhdGNoOnRydWV9LGJvb2xPcHRpb25zPXthZHNhZmU6dHJ1ZSxiaXR3aXNlOnRydWUsYnJvd3Nlcjp0cnVlLGNhcDp0cnVlLGNzczp0cnVlLGRlYnVnOnRydWUsZGV2ZWw6dHJ1ZSxlcWVxZXE6dHJ1ZSxldmlsOnRydWUsZm9yaW46dHJ1ZSxmcmFnbWVudDp0cnVlLGltbWVkOnRydWUsbGF4YnJlYWs6dHJ1ZSxuZXdjYXA6dHJ1ZSxub21lbjp0cnVlLG9uOnRydWUsb25ldmFyOnRydWUscGFzc2ZhaWw6dHJ1ZSxwbHVzcGx1czp0cnVlLHJlZ2V4cDp0cnVlLHJoaW5vOnRydWUsdW5kZWY6dHJ1ZSxzYWZlOnRydWUsc2lkZWJhcjp0cnVlLHN0cmljdDp0cnVlLHN1Yjp0cnVlLHdoaXRlOnRydWUsd2lkZ2V0OnRydWV9LGJyb3dzZXI9e2FkZEV2ZW50TGlzdGVuZXI6ZmFsc2UsYmx1cjpmYWxzZSxjbGVhckludGVydmFsOmZhbHNlLGNsZWFyVGltZW91dDpmYWxzZSxjbG9zZTpmYWxzZSxjbG9zZWQ6ZmFsc2UsZGVmYXVsdFN0YXR1czpmYWxzZSxkb2N1bWVudDpmYWxzZSxldmVudDpmYWxzZSxmb2N1czpmYWxzZSxmcmFtZXM6ZmFsc2UsZ2V0Q29tcHV0ZWRTdHlsZTpmYWxzZSxoaXN0b3J5OmZhbHNlLEltYWdlOmZhbHNlLGxlbmd0aDpmYWxzZSxsb2NhdGlvbjpmYWxzZSxtb3ZlQnk6ZmFsc2UsbW92ZVRvOmZhbHNlLG5hbWU6ZmFsc2UsbmF2aWdhdG9yOmZhbHNlLG9uYmVmb3JldW5sb2FkOnRydWUsb25ibHVyOnRydWUsb25lcnJvcjp0cnVlLG9uZm9jdXM6dHJ1ZSxvbmxvYWQ6dHJ1ZSxvbnJlc2l6ZTp0cnVlLG9udW5sb2FkOnRydWUsb3BlbjpmYWxzZSxvcGVuZXI6ZmFsc2UsT3B0aW9uOmZhbHNlLHBhcmVudDpmYWxzZSxwcmludDpmYWxzZSxyZW1vdmVFdmVudExpc3RlbmVyOmZhbHNlLHJlc2l6ZUJ5OmZhbHNlLHJlc2l6ZVRvOmZhbHNlLHNjcmVlbjpmYWxzZSxzY3JvbGw6ZmFsc2Usc2Nyb2xsQnk6ZmFsc2Usc2Nyb2xsVG86ZmFsc2Usc2V0SW50ZXJ2YWw6ZmFsc2Usc2V0VGltZW91dDpmYWxzZSxzdGF0dXM6ZmFsc2UsdG9wOmZhbHNlLFhNTEh0dHBSZXF1ZXN0OmZhbHNlfSxjc3NBdHRyaWJ1dGVEYXRhLGNzc0FueSxjc3NDb2xvckRhdGE9eyJhbGljZWJsdWUiOnRydWUsImFudGlxdWV3aGl0ZSI6dHJ1ZSwiYXF1YSI6dHJ1ZSwiYXF1YW1hcmluZSI6dHJ1ZSwiYXp1cmUiOnRydWUsImJlaWdlIjp0cnVlLCJiaXNxdWUiOnRydWUsImJsYWNrIjp0cnVlLCJibGFuY2hlZGFsbW9uZCI6dHJ1ZSwiYmx1ZSI6dHJ1ZSwiYmx1ZXZpb2xldCI6dHJ1ZSwiYnJvd24iOnRydWUsImJ1cmx5d29vZCI6dHJ1ZSwiY2FkZXRibHVlIjp0cnVlLCJjaGFydHJldXNlIjp0cnVlLCJjaG9jb2xhdGUiOnRydWUsImNvcmFsIjp0cnVlLCJjb3JuZmxvd2VyYmx1ZSI6dHJ1ZSwiY29ybnNpbGsiOnRydWUsImNyaW1zb24iOnRydWUsImN5YW4iOnRydWUsImRhcmtibHVlIjp0cnVlLCJkYXJrY3lhbiI6dHJ1ZSwiZGFya2dvbGRlbnJvZCI6dHJ1ZSwiZGFya2dyYXkiOnRydWUsImRhcmtncmVlbiI6dHJ1ZSwiZGFya2toYWtpIjp0cnVlLCJkYXJrbWFnZW50YSI6dHJ1ZSwiZGFya29saXZlZ3JlZW4iOnRydWUsImRhcmtvcmFuZ2UiOnRydWUsImRhcmtvcmNoaWQiOnRydWUsImRhcmtyZWQiOnRydWUsImRhcmtzYWxtb24iOnRydWUsImRhcmtzZWFncmVlbiI6dHJ1ZSwiZGFya3NsYXRlYmx1ZSI6dHJ1ZSwiZGFya3NsYXRlZ3JheSI6dHJ1ZSwiZGFya3R1cnF1b2lzZSI6dHJ1ZSwiZGFya3Zpb2xldCI6dHJ1ZSwiZGVlcHBpbmsiOnRydWUsImRlZXBza3libHVlIjp0cnVlLCJkaW1ncmF5Ijp0cnVlLCJkb2RnZXJibHVlIjp0cnVlLCJmaXJlYnJpY2siOnRydWUsImZsb3JhbHdoaXRlIjp0cnVlLCJmb3Jlc3RncmVlbiI6dHJ1ZSwiZnVjaHNpYSI6dHJ1ZSwiZ2FpbnNib3JvIjp0cnVlLCJnaG9zdHdoaXRlIjp0cnVlLCJnb2xkIjp0cnVlLCJnb2xkZW5yb2QiOnRydWUsImdyYXkiOnRydWUsImdyZWVuIjp0cnVlLCJncmVlbnllbGxvdyI6dHJ1ZSwiaG9uZXlkZXciOnRydWUsImhvdHBpbmsiOnRydWUsImluZGlhbnJlZCI6dHJ1ZSwiaW5kaWdvIjp0cnVlLCJpdm9yeSI6dHJ1ZSwia2hha2kiOnRydWUsImxhdmVuZGVyIjp0cnVlLCJsYXZlbmRlcmJsdXNoIjp0cnVlLCJsYXduZ3JlZW4iOnRydWUsImxlbW9uY2hpZmZvbiI6dHJ1ZSwibGlnaHRibHVlIjp0cnVlLCJsaWdodGNvcmFsIjp0cnVlLCJsaWdodGN5YW4iOnRydWUsImxpZ2h0Z29sZGVucm9keWVsbG93Ijp0cnVlLCJsaWdodGdyZWVuIjp0cnVlLCJsaWdodHBpbmsiOnRydWUsImxpZ2h0c2FsbW9uIjp0cnVlLCJsaWdodHNlYWdyZWVuIjp0cnVlLCJsaWdodHNreWJsdWUiOnRydWUsImxpZ2h0c2xhdGVncmF5Ijp0cnVlLCJsaWdodHN0ZWVsYmx1ZSI6dHJ1ZSwibGlnaHR5ZWxsb3ciOnRydWUsImxpbWUiOnRydWUsImxpbWVncmVlbiI6dHJ1ZSwibGluZW4iOnRydWUsIm1hZ2VudGEiOnRydWUsIm1hcm9vbiI6dHJ1ZSwibWVkaXVtYXF1YW1hcmluZSI6dHJ1ZSwibWVkaXVtYmx1ZSI6dHJ1ZSwibWVkaXVtb3JjaGlkIjp0cnVlLCJtZWRpdW1wdXJwbGUiOnRydWUsIm1lZGl1bXNlYWdyZWVuIjp0cnVlLCJtZWRpdW1zbGF0ZWJsdWUiOnRydWUsIm1lZGl1bXNwcmluZ2dyZWVuIjp0cnVlLCJtZWRpdW10dXJxdW9pc2UiOnRydWUsIm1lZGl1bXZpb2xldHJlZCI6dHJ1ZSwibWlkbmlnaHRibHVlIjp0cnVlLCJtaW50Y3JlYW0iOnRydWUsIm1pc3R5cm9zZSI6dHJ1ZSwibW9jY2FzaW4iOnRydWUsIm5hdmFqb3doaXRlIjp0cnVlLCJuYXZ5Ijp0cnVlLCJvbGRsYWNlIjp0cnVlLCJvbGl2ZSI6dHJ1ZSwib2xpdmVkcmFiIjp0cnVlLCJvcmFuZ2UiOnRydWUsIm9yYW5nZXJlZCI6dHJ1ZSwib3JjaGlkIjp0cnVlLCJwYWxlZ29sZGVucm9kIjp0cnVlLCJwYWxlZ3JlZW4iOnRydWUsInBhbGV0dXJxdW9pc2UiOnRydWUsInBhbGV2aW9sZXRyZWQiOnRydWUsInBhcGF5YXdoaXAiOnRydWUsInBlYWNocHVmZiI6dHJ1ZSwicGVydSI6dHJ1ZSwicGluayI6dHJ1ZSwicGx1bSI6dHJ1ZSwicG93ZGVyYmx1ZSI6dHJ1ZSwicHVycGxlIjp0cnVlLCJyZWQiOnRydWUsInJvc3licm93biI6dHJ1ZSwicm95YWxibHVlIjp0cnVlLCJzYWRkbGVicm93biI6dHJ1ZSwic2FsbW9uIjp0cnVlLCJzYW5keWJyb3duIjp0cnVlLCJzZWFncmVlbiI6dHJ1ZSwic2Vhc2hlbGwiOnRydWUsInNpZW5uYSI6dHJ1ZSwic2lsdmVyIjp0cnVlLCJza3libHVlIjp0cnVlLCJzbGF0ZWJsdWUiOnRydWUsInNsYXRlZ3JheSI6dHJ1ZSwic25vdyI6dHJ1ZSwic3ByaW5nZ3JlZW4iOnRydWUsInN0ZWVsYmx1ZSI6dHJ1ZSwidGFuIjp0cnVlLCJ0ZWFsIjp0cnVlLCJ0aGlzdGxlIjp0cnVlLCJ0b21hdG8iOnRydWUsInR1cnF1b2lzZSI6dHJ1ZSwidmlvbGV0Ijp0cnVlLCJ3aGVhdCI6dHJ1ZSwid2hpdGUiOnRydWUsIndoaXRlc21va2UiOnRydWUsInllbGxvdyI6dHJ1ZSwieWVsbG93Z3JlZW4iOnRydWV9LGNzc0JvcmRlclN0eWxlLGNzc0JyZWFrLGNzc0xlbmd0aERhdGE9eyclJzp0cnVlLCdjbSc6dHJ1ZSwnZW0nOnRydWUsJ2V4Jzp0cnVlLCdpbic6dHJ1ZSwnbW0nOnRydWUsJ3BjJzp0cnVlLCdwdCc6dHJ1ZSwncHgnOnRydWV9LGNzc092ZXJmbG93LGRldmVsPXthbGVydDpmYWxzZSxjb25maXJtOmZhbHNlLGNvbnNvbGU6ZmFsc2UsRGVidWc6ZmFsc2Usb3BlcmE6ZmFsc2UscHJvbXB0OmZhbHNlfSxlc2NhcGVzPXsnXGInOidcXGInLCdcdCc6J1xcdCcsJ1xuJzonXFxuJywnXGYnOidcXGYnLCdccic6J1xccicsJyInOidcXCInLCcvJzonXFwvJywnXFwnOidcXFxcJ30sZnVuY3QsZnVuY3Rpb25pY2l0eT1bJ2Nsb3N1cmUnLCdleGNlcHRpb24nLCdnbG9iYWwnLCdsYWJlbCcsJ291dGVyJywndW51c2VkJywndmFyJ10sZnVuY3Rpb25zLGdsb2JhbCxodG1sdGFnPXthOnt9LGFiYnI6e30sYWNyb255bTp7fSxhZGRyZXNzOnt9LGFwcGxldDp7fSxhcmVhOntlbXB0eTp0cnVlLHBhcmVudDonIG1hcCAnfSxiOnt9LGJhc2U6e2VtcHR5OnRydWUscGFyZW50OicgaGVhZCAnfSxiZG86e30sYmlnOnt9LGJsb2NrcXVvdGU6e30sYm9keTp7cGFyZW50OicgaHRtbCBub2ZyYW1lcyAnfSxicjp7ZW1wdHk6dHJ1ZX0sYnV0dG9uOnt9LGNhbnZhczp7cGFyZW50OicgYm9keSBwIGRpdiB0aCB0ZCAnfSxjYXB0aW9uOntwYXJlbnQ6JyB0YWJsZSAnfSxjZW50ZXI6e30sY2l0ZTp7fSxjb2RlOnt9LGNvbDp7ZW1wdHk6dHJ1ZSxwYXJlbnQ6JyB0YWJsZSBjb2xncm91cCAnfSxjb2xncm91cDp7cGFyZW50OicgdGFibGUgJ30sZGQ6e3BhcmVudDonIGRsICd9LGRlbDp7fSxkZm46e30sZGlyOnt9LGRpdjp7fSxkbDp7fSxkdDp7cGFyZW50OicgZGwgJ30sZW06e30sZW1iZWQ6e30sZmllbGRzZXQ6e30sZm9udDp7fSxmb3JtOnt9LGZyYW1lOntlbXB0eTp0cnVlLHBhcmVudDonIGZyYW1lc2V0ICd9LGZyYW1lc2V0OntwYXJlbnQ6JyBodG1sIGZyYW1lc2V0ICd9LGgxOnt9LGgyOnt9LGgzOnt9LGg0Ont9LGg1Ont9LGg2Ont9LGhlYWQ6e3BhcmVudDonIGh0bWwgJ30saHRtbDp7cGFyZW50OicqJ30saHI6e2VtcHR5OnRydWV9LGk6e30saWZyYW1lOnt9LGltZzp7ZW1wdHk6dHJ1ZX0saW5wdXQ6e2VtcHR5OnRydWV9LGluczp7fSxrYmQ6e30sbGFiZWw6e30sbGVnZW5kOntwYXJlbnQ6JyBmaWVsZHNldCAnfSxsaTp7cGFyZW50OicgZGlyIG1lbnUgb2wgdWwgJ30sbGluazp7ZW1wdHk6dHJ1ZSxwYXJlbnQ6JyBoZWFkICd9LG1hcDp7fSxtZW51Ont9LG1ldGE6e2VtcHR5OnRydWUscGFyZW50OicgaGVhZCBub2ZyYW1lcyBub3NjcmlwdCAnfSxub2ZyYW1lczp7cGFyZW50OicgaHRtbCBib2R5ICd9LG5vc2NyaXB0OntwYXJlbnQ6JyBib2R5IGhlYWQgbm9mcmFtZXMgJ30sb2JqZWN0Ont9LG9sOnt9LG9wdGdyb3VwOntwYXJlbnQ6JyBzZWxlY3QgJ30sb3B0aW9uOntwYXJlbnQ6JyBvcHRncm91cCBzZWxlY3QgJ30scDp7fSxwYXJhbTp7ZW1wdHk6dHJ1ZSxwYXJlbnQ6JyBhcHBsZXQgb2JqZWN0ICd9LHByZTp7fSxxOnt9LHNhbXA6e30sc2NyaXB0OntlbXB0eTp0cnVlLHBhcmVudDonIGJvZHkgZGl2IGZyYW1lIGhlYWQgaWZyYW1lIHAgcHJlIHNwYW4gJ30sc2VsZWN0Ont9LHNtYWxsOnt9LHNwYW46e30sc3Ryb25nOnt9LHN0eWxlOntwYXJlbnQ6JyBoZWFkICcsZW1wdHk6dHJ1ZX0sc3ViOnt9LHN1cDp7fSx0YWJsZTp7fSx0Ym9keTp7cGFyZW50OicgdGFibGUgJ30sdGQ6e3BhcmVudDonIHRyICd9LHRleHRhcmVhOnt9LHRmb290OntwYXJlbnQ6JyB0YWJsZSAnfSx0aDp7cGFyZW50OicgdHIgJ30sdGhlYWQ6e3BhcmVudDonIHRhYmxlICd9LHRpdGxlOntwYXJlbnQ6JyBoZWFkICd9LHRyOntwYXJlbnQ6JyB0YWJsZSB0Ym9keSB0aGVhZCB0Zm9vdCAnfSx0dDp7fSx1Ont9LHVsOnt9LCd2YXInOnt9fSxpZHMsaW1wbGllZCxpbmJsb2NrLGluZGVudCxqc29ubW9kZSxsaW5lcyxsb29rYWhlYWQsbWVtYmVyLG1lbWJlcnNPbmx5LG5leHR0b2tlbixub3JlYWNoLG9wdGlvbixwcmVkZWZpbmVkLHByZXJlZyxwcmV2dG9rZW4scmhpbm89e2RlZmluZUNsYXNzOmZhbHNlLGRlc2VyaWFsaXplOmZhbHNlLGdjOmZhbHNlLGhlbHA6ZmFsc2UsbG9hZDpmYWxzZSxsb2FkQ2xhc3M6ZmFsc2UscHJpbnQ6ZmFsc2UscXVpdDpmYWxzZSxyZWFkRmlsZTpmYWxzZSxyZWFkVXJsOmZhbHNlLHJ1bkNvbW1hbmQ6ZmFsc2Usc2VhbDpmYWxzZSxzZXJpYWxpemU6ZmFsc2Usc3Bhd246ZmFsc2Usc3luYzpmYWxzZSx0b2ludDMyOmZhbHNlLHZlcnNpb246ZmFsc2V9LHNjb3BlLHNpZGViYXI9e1N5c3RlbTpmYWxzZX0sc3JjLHN0YWNrLHN0YW5kYXJkPXtBcnJheTpmYWxzZSxCb29sZWFuOmZhbHNlLERhdGU6ZmFsc2UsZGVjb2RlVVJJOmZhbHNlLGRlY29kZVVSSUNvbXBvbmVudDpmYWxzZSxlbmNvZGVVUkk6ZmFsc2UsZW5jb2RlVVJJQ29tcG9uZW50OmZhbHNlLEVycm9yOmZhbHNlLCdldmFsJzpmYWxzZSxFdmFsRXJyb3I6ZmFsc2UsRnVuY3Rpb246ZmFsc2UsaGFzT3duUHJvcGVydHk6ZmFsc2UsaXNGaW5pdGU6ZmFsc2UsaXNOYU46ZmFsc2UsSlNPTjpmYWxzZSxNYXRoOmZhbHNlLE51bWJlcjpmYWxzZSxPYmplY3Q6ZmFsc2UscGFyc2VJbnQ6ZmFsc2UscGFyc2VGbG9hdDpmYWxzZSxSYW5nZUVycm9yOmZhbHNlLFJlZmVyZW5jZUVycm9yOmZhbHNlLFJlZ0V4cDpmYWxzZSxTdHJpbmc6ZmFsc2UsU3ludGF4RXJyb3I6ZmFsc2UsVHlwZUVycm9yOmZhbHNlLFVSSUVycm9yOmZhbHNlfSxzdGFuZGFyZF9tZW1iZXI9e0U6dHJ1ZSxMTjI6dHJ1ZSxMTjEwOnRydWUsTE9HMkU6dHJ1ZSxMT0cxMEU6dHJ1ZSxQSTp0cnVlLFNRUlQxXzI6dHJ1ZSxTUVJUMjp0cnVlLE1BWF9WQUxVRTp0cnVlLE1JTl9WQUxVRTp0cnVlLE5FR0FUSVZFX0lORklOSVRZOnRydWUsUE9TSVRJVkVfSU5GSU5JVFk6dHJ1ZX0sc3RyaWN0X21vZGUsc3ludGF4PXt9LHRhYix0b2tlbix1cmxzLHdhcm5pbmdzLHdpZGdldD17YWxlcnQ6dHJ1ZSxhbmltYXRvcjp0cnVlLGFwcGxlU2NyaXB0OnRydWUsYmVlcDp0cnVlLGJ5dGVzVG9VSVN0cmluZzp0cnVlLENhbnZhczp0cnVlLGNob29zZUNvbG9yOnRydWUsY2hvb3NlRmlsZTp0cnVlLGNob29zZUZvbGRlcjp0cnVlLGNsb3NlV2lkZ2V0OnRydWUsQ09NOnRydWUsY29udmVydFBhdGhUb0hGUzp0cnVlLGNvbnZlcnRQYXRoVG9QbGF0Zm9ybTp0cnVlLEN1c3RvbUFuaW1hdGlvbjp0cnVlLGVzY2FwZTp0cnVlLEZhZGVBbmltYXRpb246dHJ1ZSxmaWxlc3lzdGVtOnRydWUsRmxhc2g6dHJ1ZSxmb2N1c1dpZGdldDp0cnVlLGZvcm06dHJ1ZSxGb3JtRmllbGQ6dHJ1ZSxGcmFtZTp0cnVlLEhvdEtleTp0cnVlLEltYWdlOnRydWUsaW5jbHVkZTp0cnVlLGlzQXBwbGljYXRpb25SdW5uaW5nOnRydWUsaVR1bmVzOnRydWUsa29uZmFidWxhdG9yVmVyc2lvbjp0cnVlLGxvZzp0cnVlLG1kNTp0cnVlLE1lbnVJdGVtOnRydWUsTW92ZUFuaW1hdGlvbjp0cnVlLG9wZW5VUkw6dHJ1ZSxwbGF5OnRydWUsUG9pbnQ6dHJ1ZSxwb3B1cE1lbnU6dHJ1ZSxwcmVmZXJlbmNlR3JvdXBzOnRydWUscHJlZmVyZW5jZXM6dHJ1ZSxwcmludDp0cnVlLHByb21wdDp0cnVlLHJhbmRvbTp0cnVlLFJlY3RhbmdsZTp0cnVlLHJlbG9hZFdpZGdldDp0cnVlLFJlc2l6ZUFuaW1hdGlvbjp0cnVlLHJlc29sdmVQYXRoOnRydWUscmVzdW1lVXBkYXRlczp0cnVlLFJvdGF0ZUFuaW1hdGlvbjp0cnVlLHJ1bkNvbW1hbmQ6dHJ1ZSxydW5Db21tYW5kSW5CZzp0cnVlLHNhdmVBczp0cnVlLHNhdmVQcmVmZXJlbmNlczp0cnVlLHNjcmVlbjp0cnVlLFNjcm9sbEJhcjp0cnVlLHNob3dXaWRnZXRQcmVmZXJlbmNlczp0cnVlLHNsZWVwOnRydWUsc3BlYWs6dHJ1ZSxTdHlsZTp0cnVlLHN1cHByZXNzVXBkYXRlczp0cnVlLHN5c3RlbTp0cnVlLHRlbGxXaWRnZXQ6dHJ1ZSxUZXh0OnRydWUsVGV4dEFyZWE6dHJ1ZSxUaW1lcjp0cnVlLHVuZXNjYXBlOnRydWUsdXBkYXRlTm93OnRydWUsVVJMOnRydWUsV2ViOnRydWUsd2lkZ2V0OnRydWUsV2luZG93OnRydWUsWE1MRE9NOnRydWUsWE1MSHR0cFJlcXVlc3Q6dHJ1ZSx5YWhvb0NoZWNrTG9naW46dHJ1ZSx5YWhvb0xvZ2luOnRydWUseWFob29Mb2dvdXQ6dHJ1ZX0seG1vZGUseHF1b3RlLGF4PS9AY2N8PFwvP3xzY3JpcHR8XF0qc1xdfDxccyohfCZsdC9pLGN4PS9bXHUwMDAwLVx1MDAxZlx1MDA3Zi1cdTAwOWZcdTAwYWRcdTA2MDAtXHUwNjA0XHUwNzBmXHUxN2I0XHUxN2I1XHUyMDBjLVx1MjAwZlx1MjAyOC1cdTIwMmZcdTIwNjAtXHUyMDZmXHVmZWZmXHVmZmYwLVx1ZmZmZl0vLHR4PS9eXHMqKFsoKXt9XFsuLDo7JyJ+XD9cXSNAXXw9PT89P3xcLyhcKihqc2xpbnR8bWVtYmVycz98Z2xvYmFsKT98PXxcLyk/fFwqW1wvPV0/fFwrWys9XT98LVtcLT1dP3wlPT98JlsmPV0/fFx8W3w9XT98Pj4/Pj89P3w8KFtcLz0hXXxcIShcW3wtLSk/fDw9Pyk/fFxePT98XCE9Pz0/fFthLXpBLVpfJF1bYS16QS1aMC05XyRdKnxbMC05XSsoW3hYXVswLTlhLWZBLUZdK3xcLlswLTldKik/KFtlRV1bK1wtXT9bMC05XSspPykvLGh4PS9eXHMqKFsnIj0+XC8mI118PCg/OlwvfFwhKD86LS0pPyk/fFthLXpBLVpdW2EtekEtWjAtOV9cLV0qfFswLTldK3wtLSkvLG54PS9bXHUwMDAwLVx1MDAxZiY8IlwvXFxcdTAwN2YtXHUwMDlmXHUwMGFkXHUwNjAwLVx1MDYwNFx1MDcwZlx1MTdiNFx1MTdiNVx1MjAwYy1cdTIwMGZcdTIwMjgtXHUyMDJmXHUyMDYwLVx1MjA2Zlx1ZmVmZlx1ZmZmMC1cdWZmZmZdLyxueGc9L1tcdTAwMDAtXHUwMDFmJjwiXC9cXFx1MDA3Zi1cdTAwOWZcdTAwYWRcdTA2MDAtXHUwNjA0XHUwNzBmXHUxN2I0XHUxN2I1XHUyMDBjLVx1MjAwZlx1MjAyOC1cdTIwMmZcdTIwNjAtXHUyMDZmXHVmZWZmXHVmZmYwLVx1ZmZmZl0vZyxveD0vWz4mXXw8W1wvIV0/fC0tLyxseD0vXCpcL3xcL1wqLyxpeD0vXihbYS16QS1aXyRdW2EtekEtWjAtOV8kXSopJC8sang9L14oPzpqYXZhc2NyaXB0fGpzY3JpcHR8ZWNtYXNjcmlwdHx2YnNjcmlwdHxtb2NoYXxsaXZlc2NyaXB0KVxzKjovaSx1eD0vJnxcK3xcdTAwQUR8XC5cLnxcL1wqfCVbXjtdfGJhc2U2NHx1cmx8ZXhwcmVzc2lvbnxkYXRhfG1haWx0by9pLHN4PS9eXHMqKFt7OiMlLj0sPitcW1xdQCgpIic7XXxcKj0/fFwkPXxcfD18XF49fH49fFthLXpBLVpfXVthLXpBLVowLTlfXC1dKnxbMC05XSt8PFwvfFwvXCopLyxzc3g9L15ccyooW0AjISInfTs6XC0lLj0sK1xbXF0oKSpfXXxbYS16QS1aXVthLXpBLVowLTkuX1wtXSp8XC9cKj98XGQrKD86XC5cZCspP3w8XC8pLyxxeD0vW15hLXpBLVowLTktX1wvIF0vLGR4PS9bXFtcXVwvXFwiJyo8Pi4mOigpe30rPSNdLyxyeD17b3V0ZXI6aHgsaHRtbDpoeCxzdHlsZTpzeCxzdHlsZXByb3BlcnR5OnNzeH07ZnVuY3Rpb24gRigpe30KaWYodHlwZW9mIE9iamVjdC5jcmVhdGUhPT0nZnVuY3Rpb24nKXtPYmplY3QuY3JlYXRlPWZ1bmN0aW9uKG8pe0YucHJvdG90eXBlPW87cmV0dXJuIG5ldyBGKCk7fTt9CmZ1bmN0aW9uIGlzX293bihvYmplY3QsbmFtZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsbmFtZSk7fQpmdW5jdGlvbiBjb21iaW5lKHQsbyl7dmFyIG47Zm9yKG4gaW4gbyl7aWYoaXNfb3duKG8sbikpe3Rbbl09b1tuXTt9fX0KU3RyaW5nLnByb3RvdHlwZS5lbnRpdHlpZnk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXBsYWNlKC8mL2csJyZhbXA7JykucmVwbGFjZSgvPC9nLCcmbHQ7JykucmVwbGFjZSgvPi9nLCcmZ3Q7Jyk7fTtTdHJpbmcucHJvdG90eXBlLmlzQWxwaGE9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcz49J2EnJiZ0aGlzPD0nelx1ZmZmZicpfHwodGhpcz49J0EnJiZ0aGlzPD0nWlx1ZmZmZicpO307U3RyaW5nLnByb3RvdHlwZS5pc0RpZ2l0PWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXM+PScwJyYmdGhpczw9JzknKTt9O1N0cmluZy5wcm90b3R5cGUuc3VwcGxhbnQ9ZnVuY3Rpb24obyl7cmV0dXJuIHRoaXMucmVwbGFjZSgvXHsoW157fV0qKVx9L2csZnVuY3Rpb24oYSxiKXt2YXIgcj1vW2JdO3JldHVybiB0eXBlb2Ygcj09PSdzdHJpbmcnfHx0eXBlb2Ygcj09PSdudW1iZXInP3I6YTt9KTt9O1N0cmluZy5wcm90b3R5cGUubmFtZT1mdW5jdGlvbigpe2lmKGl4LnRlc3QodGhpcykpe3JldHVybiB0aGlzO30KaWYobngudGVzdCh0aGlzKSl7cmV0dXJuJyInK3RoaXMucmVwbGFjZShueGcsZnVuY3Rpb24oYSl7dmFyIGM9ZXNjYXBlc1thXTtpZihjKXtyZXR1cm4gYzt9CnJldHVybidcXHUnKygnMDAwMCcrYS5jaGFyQ29kZUF0KCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNCk7fSkrJyInO30KcmV0dXJuJyInK3RoaXMrJyInO307ZnVuY3Rpb24gYXNzdW1lKCl7aWYoIW9wdGlvbi5zYWZlKXtpZihvcHRpb24ucmhpbm8pe2NvbWJpbmUocHJlZGVmaW5lZCxyaGlubyk7fQppZihvcHRpb24uZGV2ZWwpe2NvbWJpbmUocHJlZGVmaW5lZCxkZXZlbCk7fQppZihvcHRpb24uYnJvd3Nlcnx8b3B0aW9uLnNpZGViYXIpe2NvbWJpbmUocHJlZGVmaW5lZCxicm93c2VyKTt9CmlmKG9wdGlvbi5zaWRlYmFyKXtjb21iaW5lKHByZWRlZmluZWQsc2lkZWJhcik7fQppZihvcHRpb24ud2lkZ2V0KXtjb21iaW5lKHByZWRlZmluZWQsd2lkZ2V0KTt9fX0KZnVuY3Rpb24gcXVpdChtLGwsY2gpe3Rocm93e25hbWU6J0pTTGludEVycm9yJyxsaW5lOmwsY2hhcmFjdGVyOmNoLG1lc3NhZ2U6bSsiICgiK01hdGguZmxvb3IoKGwvbGluZXMubGVuZ3RoKSoxMDApKyIlIHNjYW5uZWQpLiJ9O30KZnVuY3Rpb24gd2FybmluZyhtLHQsYSxiLGMsZCl7dmFyIGNoLGwsdzt0PXR8fG5leHR0b2tlbjtpZih0LmlkPT09JyhlbmQpJyl7dD10b2tlbjt9Cmw9dC5saW5lfHwwO2NoPXQuZnJvbXx8MDt3PXtpZDonKGVycm9yKScscmF3Om0sZXZpZGVuY2U6bGluZXNbbC0xXXx8JycsbGluZTpsLGNoYXJhY3RlcjpjaCxhOmEsYjpiLGM6YyxkOmR9O3cucmVhc29uPW0uc3VwcGxhbnQodyk7SlNMSU5ULmVycm9ycy5wdXNoKHcpO2lmKG9wdGlvbi5wYXNzZmFpbCl7cXVpdCgnU3RvcHBpbmcuICcsbCxjaCk7fQp3YXJuaW5ncys9MTtpZih3YXJuaW5ncz49b3B0aW9uLm1heGVycil7cXVpdCgiVG9vIG1hbnkgZXJyb3JzLiIsbCxjaCk7fQpyZXR1cm4gdzt9CmZ1bmN0aW9uIHdhcm5pbmdBdChtLGwsY2gsYSxiLGMsZCl7cmV0dXJuIHdhcm5pbmcobSx7bGluZTpsLGZyb206Y2h9LGEsYixjLGQpO30KZnVuY3Rpb24gZXJyb3IobSx0LGEsYixjLGQpe3ZhciB3PXdhcm5pbmcobSx0LGEsYixjLGQpO3F1aXQoIlN0b3BwaW5nLCB1bmFibGUgdG8gY29udGludWUuIix3LmxpbmUsdy5jaGFyYWN0ZXIpO30KZnVuY3Rpb24gZXJyb3JBdChtLGwsY2gsYSxiLGMsZCl7cmV0dXJuIGVycm9yKG0se2xpbmU6bCxmcm9tOmNofSxhLGIsYyxkKTt9CnZhciBsZXg9KGZ1bmN0aW9uIGxleCgpe3ZhciBjaGFyYWN0ZXIsZnJvbSxsaW5lLHM7ZnVuY3Rpb24gbmV4dExpbmUoKXt2YXIgYXQ7aWYobGluZT49bGluZXMubGVuZ3RoKXtyZXR1cm4gZmFsc2U7fQpjaGFyYWN0ZXI9MTtzPWxpbmVzW2xpbmVdO2xpbmUrPTE7YXQ9cy5zZWFyY2goLyBcdC8pO2lmKGF0Pj0wKXt3YXJuaW5nQXQoIk1peGVkIHNwYWNlcyBhbmQgdGFicy4iLGxpbmUsYXQrMSk7fQpzPXMucmVwbGFjZSgvXHQvZyx0YWIpO2F0PXMuc2VhcmNoKGN4KTtpZihhdD49MCl7d2FybmluZ0F0KCJVbnNhZmUgY2hhcmFjdGVyLiIsbGluZSxhdCk7fQppZihvcHRpb24ubWF4bGVuJiZvcHRpb24ubWF4bGVuPHMubGVuZ3RoKXt3YXJuaW5nQXQoIkxpbmUgdG9vIGxvbmcuIixsaW5lLHMubGVuZ3RoKTt9CnJldHVybiB0cnVlO30KZnVuY3Rpb24gaXQodHlwZSx2YWx1ZSl7dmFyIGksdDtpZih0eXBlPT09Jyhjb2xvciknKXt0PXt0eXBlOnR5cGV9O31lbHNlIGlmKHR5cGU9PT0nKHB1bmN0dWF0b3IpJ3x8KHR5cGU9PT0nKGlkZW50aWZpZXIpJyYmaXNfb3duKHN5bnRheCx2YWx1ZSkpKXt0PXN5bnRheFt2YWx1ZV18fHN5bnRheFsnKGVycm9yKSddO31lbHNle3Q9c3ludGF4W3R5cGVdO30KdD1PYmplY3QuY3JlYXRlKHQpO2lmKHR5cGU9PT0nKHN0cmluZyknfHx0eXBlPT09JyhyYW5nZSknKXtpZihqeC50ZXN0KHZhbHVlKSl7d2FybmluZ0F0KCJTY3JpcHQgVVJMLiIsbGluZSxmcm9tKTt9fQppZih0eXBlPT09JyhpZGVudGlmaWVyKScpe3QuaWRlbnRpZmllcj10cnVlO2lmKHZhbHVlPT09J19faXRlcmF0b3JfXyd8fHZhbHVlPT09J19fcHJvdG9fXycpe2Vycm9yQXQoIlJlc2VydmVkIG5hbWUgJ3thfScuIixsaW5lLGZyb20sdmFsdWUpO31lbHNlIGlmKG9wdGlvbi5ub21lbiYmKHZhbHVlLmNoYXJBdCgwKT09PSdfJ3x8dmFsdWUuY2hhckF0KHZhbHVlLmxlbmd0aC0xKT09PSdfJykpe3dhcm5pbmdBdCgiVW5leHBlY3RlZCB7YX0gaW4gJ3tifScuIixsaW5lLGZyb20sImRhbmdsaW5nICdfJyIsdmFsdWUpO319CnQudmFsdWU9dmFsdWU7dC5saW5lPWxpbmU7dC5jaGFyYWN0ZXI9Y2hhcmFjdGVyO3QuZnJvbT1mcm9tO2k9dC5pZDtpZihpIT09JyhlbmRsaW5lKScpe3ByZXJlZz1pJiYoKCcoLD06WyEmfD97fTsnLmluZGV4T2YoaS5jaGFyQXQoaS5sZW5ndGgtMSkpPj0wKXx8aT09PSdyZXR1cm4nKTt9CnJldHVybiB0O30KcmV0dXJue2luaXQ6ZnVuY3Rpb24oc291cmNlKXtpZih0eXBlb2Ygc291cmNlPT09J3N0cmluZycpe2xpbmVzPXNvdXJjZS5yZXBsYWNlKC9cclxuL2csJ1xuJykucmVwbGFjZSgvXHIvZywnXG4nKS5zcGxpdCgnXG4nKTt9ZWxzZXtsaW5lcz1zb3VyY2U7fQpsaW5lPTA7bmV4dExpbmUoKTtmcm9tPTE7fSxyYW5nZTpmdW5jdGlvbihiZWdpbixlbmQpe3ZhciBjLHZhbHVlPScnO2Zyb209Y2hhcmFjdGVyO2lmKHMuY2hhckF0KDApIT09YmVnaW4pe2Vycm9yQXQoIkV4cGVjdGVkICd7YX0nIGFuZCBpbnN0ZWFkIHNhdyAne2J9Jy4iLGxpbmUsY2hhcmFjdGVyLGJlZ2luLHMuY2hhckF0KDApKTt9CmZvcig7Oyl7cz1zLnNsaWNlKDEpO2NoYXJhY3Rlcis9MTtjPXMuY2hhckF0KDApO3N3aXRjaChjKXtjYXNlJyc6ZXJyb3JBdCgiTWlzc2luZyAne2F9Jy4iLGxpbmUsY2hhcmFjdGVyLGMpO2JyZWFrO2Nhc2UgZW5kOnM9cy5zbGljZSgxKTtjaGFyYWN0ZXIrPTE7cmV0dXJuIGl0KCcocmFuZ2UpJyx2YWx1ZSk7Y2FzZSB4cXVvdGU6Y2FzZSdcXCc6d2FybmluZ0F0KCJVbmV4cGVjdGVkICd7YX0nLiIsbGluZSxjaGFyYWN0ZXIsYyk7fQp2YWx1ZSs9Yzt9fSx0b2tlbjpmdW5jdGlvbigpe3ZhciBiLGMsY2FwdHVyZXMsZCxkZXB0aCxoaWdoLGksbCxsb3cscSx0O2Z1bmN0aW9uIG1hdGNoKHgpe3ZhciByPXguZXhlYyhzKSxyMTtpZihyKXtsPXJbMF0ubGVuZ3RoO3IxPXJbMV07Yz1yMS5jaGFyQXQoMCk7cz1zLnN1YnN0cihsKTtmcm9tPWNoYXJhY3RlcitsLXIxLmxlbmd0aDtjaGFyYWN0ZXIrPWw7cmV0dXJuIHIxO319CmZ1bmN0aW9uIHN0cmluZyh4KXt2YXIgYyxqLHI9Jyc7aWYoanNvbm1vZGUmJnghPT0nIicpe3dhcm5pbmdBdCgiU3RyaW5ncyBtdXN0IHVzZSBkb3VibGVxdW90ZS4iLGxpbmUsY2hhcmFjdGVyKTt9CmlmKHhxdW90ZT09PXh8fCh4bW9kZT09PSdzY3JpcHRzdHJpbmcnJiYheHF1b3RlKSl7cmV0dXJuIGl0KCcocHVuY3R1YXRvciknLHgpO30KZnVuY3Rpb24gZXNjKG4pe3ZhciBpPXBhcnNlSW50KHMuc3Vic3RyKGorMSxuKSwxNik7ais9bjtpZihpPj0zMiYmaTw9MTI2JiZpIT09MzQmJmkhPT05MiYmaSE9PTM5KXt3YXJuaW5nQXQoIlVubmVjZXNzYXJ5IGVzY2FwZW1lbnQuIixsaW5lLGNoYXJhY3Rlcik7fQpjaGFyYWN0ZXIrPW47Yz1TdHJpbmcuZnJvbUNoYXJDb2RlKGkpO30Kaj0wO2Zvcig7Oyl7d2hpbGUoaj49cy5sZW5ndGgpe2o9MDtpZih4bW9kZSE9PSdodG1sJ3x8IW5leHRMaW5lKCkpe2Vycm9yQXQoIlVuY2xvc2VkIHN0cmluZy4iLGxpbmUsZnJvbSk7fX0KYz1zLmNoYXJBdChqKTtpZihjPT09eCl7Y2hhcmFjdGVyKz0xO3M9cy5zdWJzdHIoaisxKTtyZXR1cm4gaXQoJyhzdHJpbmcpJyxyLHgpO30KaWYoYzwnICcpe2lmKGM9PT0nXG4nfHxjPT09J1xyJyl7YnJlYWs7fQp3YXJuaW5nQXQoIkNvbnRyb2wgY2hhcmFjdGVyIGluIHN0cmluZzoge2F9LiIsbGluZSxjaGFyYWN0ZXIraixzLnNsaWNlKDAsaikpO31lbHNlIGlmKGM9PT14cXVvdGUpe3dhcm5pbmdBdCgiQmFkIEhUTUwgc3RyaW5nIixsaW5lLGNoYXJhY3RlcitqKTt9ZWxzZSBpZihjPT09JzwnKXtpZihvcHRpb24uc2FmZSYmeG1vZGU9PT0naHRtbCcpe3dhcm5pbmdBdCgiQURzYWZlIHN0cmluZyB2aW9sYXRpb24uIixsaW5lLGNoYXJhY3RlcitqKTt9ZWxzZSBpZihzLmNoYXJBdChqKzEpPT09Jy8nJiYoeG1vZGV8fG9wdGlvbi5zYWZlKSl7d2FybmluZ0F0KCJFeHBlY3RlZCAnPFxcLycgYW5kIGluc3RlYWQgc2F3ICc8LycuIixsaW5lLGNoYXJhY3Rlcik7fWVsc2UgaWYocy5jaGFyQXQoaisxKT09PSchJyYmKHhtb2RlfHxvcHRpb24uc2FmZSkpe3dhcm5pbmdBdCgiVW5leHBlY3RlZCAnPCEnIGluIGEgc3RyaW5nLiIsbGluZSxjaGFyYWN0ZXIpO319ZWxzZSBpZihjPT09J1xcJyl7aWYoeG1vZGU9PT0naHRtbCcpe2lmKG9wdGlvbi5zYWZlKXt3YXJuaW5nQXQoIkFEc2FmZSBzdHJpbmcgdmlvbGF0aW9uLiIsbGluZSxjaGFyYWN0ZXIraik7fX1lbHNlIGlmKHhtb2RlPT09J3N0eWxlcHJvcGVydHknKXtqKz0xO2NoYXJhY3Rlcis9MTtjPXMuY2hhckF0KGopO2lmKGMhPT14KXt3YXJuaW5nQXQoIkVzY2FwZW1lbnQgaW4gc3R5bGUgc3RyaW5nLiIsbGluZSxjaGFyYWN0ZXIraik7fX1lbHNle2orPTE7Y2hhcmFjdGVyKz0xO2M9cy5jaGFyQXQoaik7c3dpdGNoKGMpe2Nhc2UgeHF1b3RlOndhcm5pbmdBdCgiQmFkIEhUTUwgc3RyaW5nIixsaW5lLGNoYXJhY3RlcitqKTticmVhaztjYXNlJ1xcJzpjYXNlJ1wnJzpjYXNlJyInOmNhc2UnLyc6YnJlYWs7Y2FzZSdiJzpjPSdcYic7YnJlYWs7Y2FzZSdmJzpjPSdcZic7YnJlYWs7Y2FzZSduJzpjPSdcbic7YnJlYWs7Y2FzZSdyJzpjPSdccic7YnJlYWs7Y2FzZSd0JzpjPSdcdCc7YnJlYWs7Y2FzZSd1Jzplc2MoNCk7YnJlYWs7Y2FzZSd2JzpjPSdcdic7YnJlYWs7Y2FzZSd4JzppZihqc29ubW9kZSl7d2FybmluZ0F0KCJBdm9pZCBcXHgtLiIsbGluZSxjaGFyYWN0ZXIpO30KZXNjKDIpO2JyZWFrO2RlZmF1bHQ6d2FybmluZ0F0KCJCYWQgZXNjYXBlbWVudC4iLGxpbmUsY2hhcmFjdGVyKTt9fX0Kcis9YztjaGFyYWN0ZXIrPTE7ais9MTt9fQpmb3IoOzspe2lmKCFzKXtyZXR1cm4gaXQobmV4dExpbmUoKT8nKGVuZGxpbmUpJzonKGVuZCknLCcnKTt9CndoaWxlKHhtb2RlPT09J291dGVyJyl7aT1zLnNlYXJjaChveCk7aWYoaT09PTApe2JyZWFrO31lbHNlIGlmKGk+MCl7Y2hhcmFjdGVyKz0xO3M9cy5zbGljZShpKTticmVhazt9ZWxzZXtpZighbmV4dExpbmUoKSl7cmV0dXJuIGl0KCcoZW5kKScsJycpO319fQp0PW1hdGNoKHJ4W3htb2RlXXx8dHgpO2lmKCF0KXt0PScnO2M9Jyc7d2hpbGUocyYmczwnIScpe3M9cy5zdWJzdHIoMSk7fQppZihzKXtpZih4bW9kZT09PSdodG1sJyl7cmV0dXJuIGl0KCcoZXJyb3IpJyxzLmNoYXJBdCgwKSk7fWVsc2V7ZXJyb3JBdCgiVW5leHBlY3RlZCAne2F9Jy4iLGxpbmUsY2hhcmFjdGVyLHMuc3Vic3RyKDAsMSkpO319fWVsc2V7aWYoYy5pc0FscGhhKCl8fGM9PT0nXyd8fGM9PT0nJCcpe3JldHVybiBpdCgnKGlkZW50aWZpZXIpJyx0KTt9CmlmKGMuaXNEaWdpdCgpKXtpZih4bW9kZSE9PSdzdHlsZScmJiFpc0Zpbml0ZShOdW1iZXIodCkpKXt3YXJuaW5nQXQoIkJhZCBudW1iZXIgJ3thfScuIixsaW5lLGNoYXJhY3Rlcix0KTt9CmlmKHhtb2RlIT09J3N0eWxlJyYmeG1vZGUhPT0nc3R5bGVwcm9wZXJ0eScmJnMuc3Vic3RyKDAsMSkuaXNBbHBoYSgpKXt3YXJuaW5nQXQoIk1pc3Npbmcgc3BhY2UgYWZ0ZXIgJ3thfScuIixsaW5lLGNoYXJhY3Rlcix0KTt9CmlmKGM9PT0nMCcpe2Q9dC5zdWJzdHIoMSwxKTtpZihkLmlzRGlnaXQoKSl7aWYodG9rZW4uaWQhPT0nLicmJnhtb2RlIT09J3N0eWxlcHJvcGVydHknKXt3YXJuaW5nQXQoIkRvbid0IHVzZSBleHRyYSBsZWFkaW5nIHplcm9zICd7YX0nLiIsbGluZSxjaGFyYWN0ZXIsdCk7fX1lbHNlIGlmKGpzb25tb2RlJiYoZD09PSd4J3x8ZD09PSdYJykpe3dhcm5pbmdBdCgiQXZvaWQgMHgtLiAne2F9Jy4iLGxpbmUsY2hhcmFjdGVyLHQpO319CmlmKHQuc3Vic3RyKHQubGVuZ3RoLTEpPT09Jy4nKXt3YXJuaW5nQXQoIkEgdHJhaWxpbmcgZGVjaW1hbCBwb2ludCBjYW4gYmUgY29uZnVzZWQgd2l0aCBhIGRvdCAne2F9Jy4iLGxpbmUsY2hhcmFjdGVyLHQpO30KcmV0dXJuIGl0KCcobnVtYmVyKScsdCk7fQpzd2l0Y2godCl7Y2FzZSciJzpjYXNlIiciOnJldHVybiBzdHJpbmcodCk7Y2FzZScvLyc6aWYoc3JjfHwoeG1vZGUmJnhtb2RlIT09J3NjcmlwdCcpKXt3YXJuaW5nQXQoIlVuZXhwZWN0ZWQgY29tbWVudC4iLGxpbmUsY2hhcmFjdGVyKTt9ZWxzZSBpZih4bW9kZT09PSdzY3JpcHQnJiYvPFxzKlwvL2kudGVzdChzKSl7d2FybmluZ0F0KCJVbmV4cGVjdGVkIDxcLyBpbiBjb21tZW50LiIsbGluZSxjaGFyYWN0ZXIpO31lbHNlIGlmKChvcHRpb24uc2FmZXx8eG1vZGU9PT0nc2NyaXB0JykmJmF4LnRlc3Qocykpe3dhcm5pbmdBdCgiRGFuZ2Vyb3VzIGNvbW1lbnQuIixsaW5lLGNoYXJhY3Rlcik7fQpzPScnO3Rva2VuLmNvbW1lbnQ9dHJ1ZTticmVhaztjYXNlJy8qJzppZihzcmN8fCh4bW9kZSYmeG1vZGUhPT0nc2NyaXB0JyYmeG1vZGUhPT0nc3R5bGUnJiZ4bW9kZSE9PSdzdHlsZXByb3BlcnR5Jykpe3dhcm5pbmdBdCgiVW5leHBlY3RlZCBjb21tZW50LiIsbGluZSxjaGFyYWN0ZXIpO30KaWYob3B0aW9uLnNhZmUmJmF4LnRlc3Qocykpe3dhcm5pbmdBdCgiQURzYWZlIGNvbW1lbnQgdmlvbGF0aW9uLiIsbGluZSxjaGFyYWN0ZXIpO30KZm9yKDs7KXtpPXMuc2VhcmNoKGx4KTtpZihpPj0wKXticmVhazt9CmlmKCFuZXh0TGluZSgpKXtlcnJvckF0KCJVbmNsb3NlZCBjb21tZW50LiIsbGluZSxjaGFyYWN0ZXIpO31lbHNle2lmKG9wdGlvbi5zYWZlJiZheC50ZXN0KHMpKXt3YXJuaW5nQXQoIkFEc2FmZSBjb21tZW50IHZpb2xhdGlvbi4iLGxpbmUsY2hhcmFjdGVyKTt9fX0KY2hhcmFjdGVyKz1pKzI7aWYocy5zdWJzdHIoaSwxKT09PScvJyl7ZXJyb3JBdCgiTmVzdGVkIGNvbW1lbnQuIixsaW5lLGNoYXJhY3Rlcik7fQpzPXMuc3Vic3RyKGkrMik7dG9rZW4uY29tbWVudD10cnVlO2JyZWFrO2Nhc2UnLyptZW1iZXJzJzpjYXNlJy8qbWVtYmVyJzpjYXNlJy8qanNsaW50JzpjYXNlJy8qZ2xvYmFsJzpjYXNlJyovJzpyZXR1cm57dmFsdWU6dCx0eXBlOidzcGVjaWFsJyxsaW5lOmxpbmUsY2hhcmFjdGVyOmNoYXJhY3Rlcixmcm9tOmZyb219O2Nhc2UnJzpicmVhaztjYXNlJy8nOmlmKHRva2VuLmlkPT09Jy89Jyl7ZXJyb3JBdCgiQSByZWd1bGFyIGV4cHJlc3Npb24gbGl0ZXJhbCBjYW4gYmUgY29uZnVzZWQgd2l0aCAnLz0nLiIsbGluZSxmcm9tKTt9CmlmKHByZXJlZyl7ZGVwdGg9MDtjYXB0dXJlcz0wO2w9MDtmb3IoOzspe2I9dHJ1ZTtjPXMuY2hhckF0KGwpO2wrPTE7c3dpdGNoKGMpe2Nhc2UnJzplcnJvckF0KCJVbmNsb3NlZCByZWd1bGFyIGV4cHJlc3Npb24uIixsaW5lLGZyb20pO3JldHVybjtjYXNlJy8nOmlmKGRlcHRoPjApe3dhcm5pbmdBdCgiVW5lc2NhcGVkICd7YX0nLiIsbGluZSxmcm9tK2wsJy8nKTt9CmM9cy5zdWJzdHIoMCxsLTEpO3E9e2c6dHJ1ZSxpOnRydWUsbTp0cnVlfTt3aGlsZShxW3MuY2hhckF0KGwpXT09PXRydWUpe3Fbcy5jaGFyQXQobCldPWZhbHNlO2wrPTE7fQpjaGFyYWN0ZXIrPWw7cz1zLnN1YnN0cihsKTtxPXMuY2hhckF0KDApO2lmKHE9PT0nLyd8fHE9PT0nKicpe2Vycm9yQXQoIkNvbmZ1c2luZyByZWd1bGFyIGV4cHJlc3Npb24uIixsaW5lLGZyb20pO30KcmV0dXJuIGl0KCcocmVnZXhwKScsYyk7Y2FzZSdcXCc6Yz1zLmNoYXJBdChsKTtpZihjPCcgJyl7d2FybmluZ0F0KCJVbmV4cGVjdGVkIGNvbnRyb2wgY2hhcmFjdGVyIGluIHJlZ3VsYXIgZXhwcmVzc2lvbi4iLGxpbmUsZnJvbStsKTt9ZWxzZSBpZihjPT09JzwnKXt3YXJuaW5nQXQoIlVuZXhwZWN0ZWQgZXNjYXBlZCBjaGFyYWN0ZXIgJ3thfScgaW4gcmVndWxhciBleHByZXNzaW9uLiIsbGluZSxmcm9tK2wsYyk7fQpsKz0xO2JyZWFrO2Nhc2UnKCc6ZGVwdGgrPTE7Yj1mYWxzZTtpZihzLmNoYXJBdChsKT09PSc/Jyl7bCs9MTtzd2l0Y2gocy5jaGFyQXQobCkpe2Nhc2UnOic6Y2FzZSc9JzpjYXNlJyEnOmwrPTE7YnJlYWs7ZGVmYXVsdDp3YXJuaW5nQXQoIkV4cGVjdGVkICd7YX0nIGFuZCBpbnN0ZWFkIHNhdyAne2J9Jy4iLGxpbmUsZnJvbStsLCc6JyxzLmNoYXJBdChsKSk7fX1lbHNle2NhcHR1cmVzKz0xO30KYnJlYWs7Y2FzZSd8JzpiPWZhbHNlO2JyZWFrO2Nhc2UnKSc6aWYoZGVwdGg9PT0wKXt3YXJuaW5nQXQoIlVuZXNjYXBlZCAne2F9Jy4iLGxpbmUsZnJvbStsLCcpJyk7fWVsc2V7ZGVwdGgtPTE7fQpicmVhaztjYXNlJyAnOnE9MTt3aGlsZShzLmNoYXJBdChsKT09PScgJyl7bCs9MTtxKz0xO30KaWYocT4xKXt3YXJuaW5nQXQoIlNwYWNlcyBhcmUgaGFyZCB0byBjb3VudC4gVXNlIHt7YX19LiIsbGluZSxmcm9tK2wscSk7fQpicmVhaztjYXNlJ1snOmM9cy5jaGFyQXQobCk7aWYoYz09PSdeJyl7bCs9MTtpZihvcHRpb24ucmVnZXhwKXt3YXJuaW5nQXQoIkluc2VjdXJlICd7YX0nLiIsbGluZSxmcm9tK2wsYyk7fX0KcT1mYWxzZTtpZihjPT09J10nKXt3YXJuaW5nQXQoIkVtcHR5IGNsYXNzLiIsbGluZSxmcm9tK2wtMSk7cT10cnVlO30Ka2xhc3M6ZG97Yz1zLmNoYXJBdChsKTtsKz0xO3N3aXRjaChjKXtjYXNlJ1snOmNhc2UnXic6d2FybmluZ0F0KCJVbmVzY2FwZWQgJ3thfScuIixsaW5lLGZyb20rbCxjKTtxPXRydWU7YnJlYWs7Y2FzZSctJzppZihxKXtxPWZhbHNlO31lbHNle3dhcm5pbmdBdCgiVW5lc2NhcGVkICd7YX0nLiIsbGluZSxmcm9tK2wsJy0nKTtxPXRydWU7fQpicmVhaztjYXNlJ10nOmlmKCFxKXt3YXJuaW5nQXQoIlVuZXNjYXBlZCAne2F9Jy4iLGxpbmUsZnJvbStsLTEsJy0nKTt9CmJyZWFrIGtsYXNzO2Nhc2UnXFwnOmM9cy5jaGFyQXQobCk7aWYoYzwnICcpe3dhcm5pbmdBdCgiVW5leHBlY3RlZCBjb250cm9sIGNoYXJhY3RlciBpbiByZWd1bGFyIGV4cHJlc3Npb24uIixsaW5lLGZyb20rbCk7fWVsc2UgaWYoYz09PSc8Jyl7d2FybmluZ0F0KCJVbmV4cGVjdGVkIGVzY2FwZWQgY2hhcmFjdGVyICd7YX0nIGluIHJlZ3VsYXIgZXhwcmVzc2lvbi4iLGxpbmUsZnJvbStsLGMpO30KbCs9MTtxPXRydWU7YnJlYWs7Y2FzZScvJzp3YXJuaW5nQXQoIlVuZXNjYXBlZCAne2F9Jy4iLGxpbmUsZnJvbStsLTEsJy8nKTtxPXRydWU7YnJlYWs7Y2FzZSc8JzppZih4bW9kZT09PSdzY3JpcHQnKXtjPXMuY2hhckF0KGwpO2lmKGM9PT0nISd8fGM9PT0nLycpe3dhcm5pbmdBdCgiSFRNTCBjb25mdXNpb24gaW4gcmVndWxhciBleHByZXNzaW9uICc8e2F9Jy4iLGxpbmUsZnJvbStsLGMpO319CnE9dHJ1ZTticmVhaztkZWZhdWx0OnE9dHJ1ZTt9fXdoaWxlKGMpO2JyZWFrO2Nhc2UnLic6aWYob3B0aW9uLnJlZ2V4cCl7d2FybmluZ0F0KCJJbnNlY3VyZSAne2F9Jy4iLGxpbmUsZnJvbStsLGMpO30KYnJlYWs7Y2FzZSddJzpjYXNlJz8nOmNhc2Uneyc6Y2FzZSd9JzpjYXNlJysnOmNhc2UnKic6d2FybmluZ0F0KCJVbmVzY2FwZWQgJ3thfScuIixsaW5lLGZyb20rbCxjKTticmVhaztjYXNlJzwnOmlmKHhtb2RlPT09J3NjcmlwdCcpe2M9cy5jaGFyQXQobCk7aWYoYz09PSchJ3x8Yz09PScvJyl7d2FybmluZ0F0KCJIVE1MIGNvbmZ1c2lvbiBpbiByZWd1bGFyIGV4cHJlc3Npb24gJzx7YX0nLiIsbGluZSxmcm9tK2wsYyk7fX19CmlmKGIpe3N3aXRjaChzLmNoYXJBdChsKSl7Y2FzZSc/JzpjYXNlJysnOmNhc2UnKic6bCs9MTtpZihzLmNoYXJBdChsKT09PSc/Jyl7bCs9MTt9CmJyZWFrO2Nhc2Uneyc6bCs9MTtjPXMuY2hhckF0KGwpO2lmKGM8JzAnfHxjPic5Jyl7d2FybmluZ0F0KCJFeHBlY3RlZCBhIG51bWJlciBhbmQgaW5zdGVhZCBzYXcgJ3thfScuIixsaW5lLGZyb20rbCxjKTt9CmwrPTE7bG93PStjO2Zvcig7Oyl7Yz1zLmNoYXJBdChsKTtpZihjPCcwJ3x8Yz4nOScpe2JyZWFrO30KbCs9MTtsb3c9K2MrKGxvdyoxMCk7fQpoaWdoPWxvdztpZihjPT09JywnKXtsKz0xO2hpZ2g9SW5maW5pdHk7Yz1zLmNoYXJBdChsKTtpZihjPj0nMCcmJmM8PSc5Jyl7bCs9MTtoaWdoPStjO2Zvcig7Oyl7Yz1zLmNoYXJBdChsKTtpZihjPCcwJ3x8Yz4nOScpe2JyZWFrO30KbCs9MTtoaWdoPStjKyhoaWdoKjEwKTt9fX0KaWYocy5jaGFyQXQobCkhPT0nfScpe3dhcm5pbmdBdCgiRXhwZWN0ZWQgJ3thfScgYW5kIGluc3RlYWQgc2F3ICd7Yn0nLiIsbGluZSxmcm9tK2wsJ30nLGMpO31lbHNle2wrPTE7fQppZihzLmNoYXJBdChsKT09PSc/Jyl7bCs9MTt9CmlmKGxvdz5oaWdoKXt3YXJuaW5nQXQoIid7YX0nIHNob3VsZCBub3QgYmUgZ3JlYXRlciB0aGFuICd7Yn0nLiIsbGluZSxmcm9tK2wsbG93LGhpZ2gpO319fX0KYz1zLnN1YnN0cigwLGwtMSk7Y2hhcmFjdGVyKz1sO3M9cy5zdWJzdHIobCk7cmV0dXJuIGl0KCcocmVnZXhwKScsYyk7fQpyZXR1cm4gaXQoJyhwdW5jdHVhdG9yKScsdCk7Y2FzZSc8IS0tJzpsPWxpbmU7Yz1jaGFyYWN0ZXI7Zm9yKDs7KXtpPXMuaW5kZXhPZignLS0nKTtpZihpPj0wKXticmVhazt9Cmk9cy5pbmRleE9mKCc8IScpO2lmKGk+PTApe2Vycm9yQXQoIk5lc3RlZCBIVE1MIGNvbW1lbnQuIixsaW5lLGNoYXJhY3RlcitpKTt9CmlmKCFuZXh0TGluZSgpKXtlcnJvckF0KCJVbmNsb3NlZCBIVE1MIGNvbW1lbnQuIixsLGMpO319Cmw9cy5pbmRleE9mKCc8IScpO2lmKGw+PTAmJmw8aSl7ZXJyb3JBdCgiTmVzdGVkIEhUTUwgY29tbWVudC4iLGxpbmUsY2hhcmFjdGVyK2wpO30KY2hhcmFjdGVyKz1pO2lmKHNbaSsyXSE9PSc+Jyl7ZXJyb3JBdCgiRXhwZWN0ZWQgLS0+LiIsbGluZSxjaGFyYWN0ZXIpO30KY2hhcmFjdGVyKz0zO3M9cy5zbGljZShpKzMpO2JyZWFrO2Nhc2UnIyc6aWYoeG1vZGU9PT0naHRtbCd8fHhtb2RlPT09J3N0eWxlcHJvcGVydHknKXtmb3IoOzspe2M9cy5jaGFyQXQoMCk7aWYoKGM8JzAnfHxjPic5JykmJihjPCdhJ3x8Yz4nZicpJiYoYzwnQSd8fGM+J0YnKSl7YnJlYWs7fQpjaGFyYWN0ZXIrPTE7cz1zLnN1YnN0cigxKTt0Kz1jO30KaWYodC5sZW5ndGghPT00JiZ0Lmxlbmd0aCE9PTcpe3dhcm5pbmdBdCgiQmFkIGhleCBjb2xvciAne2F9Jy4iLGxpbmUsZnJvbStsLHQpO30KcmV0dXJuIGl0KCcoY29sb3IpJyx0KTt9CnJldHVybiBpdCgnKHB1bmN0dWF0b3IpJyx0KTtkZWZhdWx0OmlmKHhtb2RlPT09J291dGVyJyYmYz09PScmJyl7Y2hhcmFjdGVyKz0xO3M9cy5zdWJzdHIoMSk7Zm9yKDs7KXtjPXMuY2hhckF0KDApO2NoYXJhY3Rlcis9MTtzPXMuc3Vic3RyKDEpO2lmKGM9PT0nOycpe2JyZWFrO30KaWYoISgoYz49JzAnJiZjPD0nOScpfHwoYz49J2EnJiZjPD0neicpfHxjPT09JyMnKSl7ZXJyb3JBdCgiQmFkIGVudGl0eSIsbGluZSxmcm9tK2wsY2hhcmFjdGVyKTt9fQpicmVhazt9CnJldHVybiBpdCgnKHB1bmN0dWF0b3IpJyx0KTt9fX19fTt9KCkpO2Z1bmN0aW9uIGFkZGxhYmVsKHQsdHlwZSl7aWYob3B0aW9uLnNhZmUmJmZ1bmN0WycoZ2xvYmFsKSddJiZ0eXBlb2YgcHJlZGVmaW5lZFt0XSE9PSdib29sZWFuJyl7d2FybmluZygnQURzYWZlIGdsb2JhbDogJyt0KycuJyx0b2tlbik7fWVsc2UgaWYodD09PSdoYXNPd25Qcm9wZXJ0eScpe3dhcm5pbmcoIidoYXNPd25Qcm9wZXJ0eScgaXMgYSByZWFsbHkgYmFkIG5hbWUuIik7fQppZihpc19vd24oZnVuY3QsdCkmJiFmdW5jdFsnKGdsb2JhbCknXSl7d2FybmluZyhmdW5jdFt0XT09PXRydWU/Iid7YX0nIHdhcyB1c2VkIGJlZm9yZSBpdCB3YXMgZGVmaW5lZC4iOiIne2F9JyBpcyBhbHJlYWR5IGRlZmluZWQuIixuZXh0dG9rZW4sdCk7fQpmdW5jdFt0XT10eXBlO2lmKGZ1bmN0WycoZ2xvYmFsKSddKXtnbG9iYWxbdF09ZnVuY3Q7aWYoaXNfb3duKGltcGxpZWQsdCkpe3dhcm5pbmcoIid7YX0nIHdhcyB1c2VkIGJlZm9yZSBpdCB3YXMgZGVmaW5lZC4iLG5leHR0b2tlbix0KTtkZWxldGUgaW1wbGllZFt0XTt9fWVsc2V7c2NvcGVbdF09ZnVuY3Q7fX0KZnVuY3Rpb24gZG9PcHRpb24oKXt2YXIgYixvYmosZmlsdGVyLG89bmV4dHRva2VuLnZhbHVlLHQsdjtzd2l0Y2gobyl7Y2FzZScqLyc6ZXJyb3IoIlVuYmVndW4gY29tbWVudC4iKTticmVhaztjYXNlJy8qbWVtYmVycyc6Y2FzZScvKm1lbWJlcic6bz0nLyptZW1iZXJzJztpZighbWVtYmVyc09ubHkpe21lbWJlcnNPbmx5PXt9O30Kb2JqPW1lbWJlcnNPbmx5O2JyZWFrO2Nhc2UnLypqc2xpbnQnOmlmKG9wdGlvbi5zYWZlKXt3YXJuaW5nKCJBRHNhZmUgcmVzdHJpY3Rpb24uIik7fQpvYmo9b3B0aW9uO2ZpbHRlcj1ib29sT3B0aW9uczticmVhaztjYXNlJy8qZ2xvYmFsJzppZihvcHRpb24uc2FmZSl7d2FybmluZygiQURzYWZlIHJlc3RyaWN0aW9uLiIpO30Kb2JqPXByZWRlZmluZWQ7YnJlYWs7ZGVmYXVsdDp9CnQ9bGV4LnRva2VuKCk7bG9vcDpmb3IoOzspe2Zvcig7Oyl7aWYodC50eXBlPT09J3NwZWNpYWwnJiZ0LnZhbHVlPT09JyovJyl7YnJlYWsgbG9vcDt9CmlmKHQuaWQhPT0nKGVuZGxpbmUpJyYmdC5pZCE9PScsJyl7YnJlYWs7fQp0PWxleC50b2tlbigpO30KaWYodC50eXBlIT09JyhzdHJpbmcpJyYmdC50eXBlIT09JyhpZGVudGlmaWVyKScmJm8hPT0nLyptZW1iZXJzJyl7ZXJyb3IoIkJhZCBvcHRpb24uIix0KTt9CnY9bGV4LnRva2VuKCk7aWYodi5pZD09PSc6Jyl7dj1sZXgudG9rZW4oKTtpZihvYmo9PT1tZW1iZXJzT25seSl7ZXJyb3IoIkV4cGVjdGVkICd7YX0nIGFuZCBpbnN0ZWFkIHNhdyAne2J9Jy4iLHQsJyovJywnOicpO30KaWYodC52YWx1ZT09PSdpbmRlbnQnJiZvPT09Jy8qanNsaW50Jyl7Yj0rdi52YWx1ZTtpZih0eXBlb2YgYiE9PSdudW1iZXInfHwhaXNGaW5pdGUoYil8fGI8PTB8fE1hdGguZmxvb3IoYikhPT1iKXtlcnJvcigiRXhwZWN0ZWQgYSBzbWFsbCBpbnRlZ2VyIGFuZCBpbnN0ZWFkIHNhdyAne2F9Jy4iLHYsdi52YWx1ZSk7fQpvYmoud2hpdGU9dHJ1ZTtvYmouaW5kZW50PWI7fWVsc2UgaWYodC52YWx1ZT09PSdtYXhlcnInJiZvPT09Jy8qanNsaW50Jyl7Yj0rdi52YWx1ZTtpZih0eXBlb2YgYiE9PSdudW1iZXInfHwhaXNGaW5pdGUoYil8fGI8PTB8fE1hdGguZmxvb3IoYikhPT1iKXtlcnJvcigiRXhwZWN0ZWQgYSBzbWFsbCBpbnRlZ2VyIGFuZCBpbnN0ZWFkIHNhdyAne2F9Jy4iLHYsdi52YWx1ZSk7fQpvYmoubWF4ZXJyPWI7fWVsc2UgaWYodC52YWx1ZT09PSdtYXhsZW4nJiZvPT09Jy8qanNsaW50Jyl7Yj0rdi52YWx1ZTtpZih0eXBlb2YgYiE9PSdudW1iZXInfHwhaXNGaW5pdGUoYil8fGI8PTB8fE1hdGguZmxvb3IoYikhPT1iKXtlcnJvcigiRXhwZWN0ZWQgYSBzbWFsbCBpbnRlZ2VyIGFuZCBpbnN0ZWFkIHNhdyAne2F9Jy4iLHYsdi52YWx1ZSk7fQpvYmoubWF4bGVuPWI7fWVsc2UgaWYodi52YWx1ZT09PSd0cnVlJyl7b2JqW3QudmFsdWVdPXRydWU7fWVsc2UgaWYodi52YWx1ZT09PSdmYWxzZScpe29ialt0LnZhbHVlXT1mYWxzZTt9ZWxzZXtlcnJvcigiQmFkIG9wdGlvbiB2YWx1ZS4iLHYpO30KdD1sZXgudG9rZW4oKTt9ZWxzZXtpZihvPT09Jy8qanNsaW50Jyl7ZXJyb3IoIk1pc3Npbmcgb3B0aW9uIHZhbHVlLiIsdCk7fQpvYmpbdC52YWx1ZV09ZmFsc2U7dD12O319CmlmKGZpbHRlcil7YXNzdW1lKCk7fX0KZnVuY3Rpb24gcGVlayhwKXt2YXIgaT1wfHwwLGo9MCx0O3doaWxlKGo8PWkpe3Q9bG9va2FoZWFkW2pdO2lmKCF0KXt0PWxvb2thaGVhZFtqXT1sZXgudG9rZW4oKTt9CmorPTE7fQpyZXR1cm4gdDt9CmZ1bmN0aW9uIGFkdmFuY2UoaWQsdCl7c3dpdGNoKHRva2VuLmlkKXtjYXNlJyhudW1iZXIpJzppZihuZXh0dG9rZW4uaWQ9PT0nLicpe3dhcm5pbmcoIkEgZG90IGZvbGxvd2luZyBhIG51bWJlciBjYW4gYmUgY29uZnVzZWQgd2l0aCBhIGRlY2ltYWwgcG9pbnQuIix0b2tlbik7fQpicmVhaztjYXNlJy0nOmlmKG5leHR0b2tlbi5pZD09PSctJ3x8bmV4dHRva2VuLmlkPT09Jy0tJyl7d2FybmluZygiQ29uZnVzaW5nIG1pbnVzc2VzLiIpO30KYnJlYWs7Y2FzZScrJzppZihuZXh0dG9rZW4uaWQ9PT0nKyd8fG5leHR0b2tlbi5pZD09PScrKycpe3dhcm5pbmcoIkNvbmZ1c2luZyBwbHVzc2VzLiIpO30KYnJlYWs7fQppZih0b2tlbi50eXBlPT09JyhzdHJpbmcpJ3x8dG9rZW4uaWRlbnRpZmllcil7YW5vbm5hbWU9dG9rZW4udmFsdWU7fQppZihpZCYmbmV4dHRva2VuLmlkIT09aWQpe2lmKHQpe2lmKG5leHR0b2tlbi5pZD09PScoZW5kKScpe3dhcm5pbmcoIlVubWF0Y2hlZCAne2F9Jy4iLHQsdC5pZCk7fWVsc2V7d2FybmluZygiRXhwZWN0ZWQgJ3thfScgdG8gbWF0Y2ggJ3tifScgZnJvbSBsaW5lIHtjfSBhbmQgaW5zdGVhZCBzYXcgJ3tkfScuIixuZXh0dG9rZW4saWQsdC5pZCx0LmxpbmUsbmV4dHRva2VuLnZhbHVlKTt9fWVsc2UgaWYobmV4dHRva2VuLnR5cGUhPT0nKGlkZW50aWZpZXIpJ3x8bmV4dHRva2VuLnZhbHVlIT09aWQpe3dhcm5pbmcoIkV4cGVjdGVkICd7YX0nIGFuZCBpbnN0ZWFkIHNhdyAne2J9Jy4iLG5leHR0b2tlbixpZCxuZXh0dG9rZW4udmFsdWUpO319CnByZXZ0b2tlbj10b2tlbjt0b2tlbj1uZXh0dG9rZW47Zm9yKDs7KXtuZXh0dG9rZW49bG9va2FoZWFkLnNoaWZ0KCl8fGxleC50b2tlbigpO2lmKG5leHR0b2tlbi5pZD09PScoZW5kKSd8fG5leHR0b2tlbi5pZD09PScoZXJyb3IpJyl7cmV0dXJuO30KaWYobmV4dHRva2VuLnR5cGU9PT0nc3BlY2lhbCcpe2RvT3B0aW9uKCk7fWVsc2V7aWYobmV4dHRva2VuLmlkIT09JyhlbmRsaW5lKScpe2JyZWFrO319fX0KZnVuY3Rpb24gcGFyc2UocmJwLGluaXRpYWwpe3ZhciBsZWZ0O2lmKG5leHR0b2tlbi5pZD09PScoZW5kKScpe2Vycm9yKCJVbmV4cGVjdGVkIGVhcmx5IGVuZCBvZiBwcm9ncmFtLiIsdG9rZW4pO30KYWR2YW5jZSgpO2lmKG9wdGlvbi5zYWZlJiZ0eXBlb2YgcHJlZGVmaW5lZFt0b2tlbi52YWx1ZV09PT0nYm9vbGVhbicmJihuZXh0dG9rZW4uaWQhPT0nKCcmJm5leHR0b2tlbi5pZCE9PScuJykpe3dhcm5pbmcoJ0FEc2FmZSB2aW9sYXRpb24uJyx0b2tlbik7fQppZihpbml0aWFsKXthbm9ubmFtZT0nYW5vbnltb3VzJztmdW5jdFsnKHZlcmIpJ109dG9rZW4udmFsdWU7fQppZihpbml0aWFsPT09dHJ1ZSYmdG9rZW4uZnVkKXtsZWZ0PXRva2VuLmZ1ZCgpO31lbHNle2lmKHRva2VuLm51ZCl7bGVmdD10b2tlbi5udWQoKTt9ZWxzZXtpZihuZXh0dG9rZW4udHlwZT09PScobnVtYmVyKScmJnRva2VuLmlkPT09Jy4nKXt3YXJuaW5nKCJBIGxlYWRpbmcgZGVjaW1hbCBwb2ludCBjYW4gYmUgY29uZnVzZWQgd2l0aCBhIGRvdDogJy57YX0nLiIsdG9rZW4sbmV4dHRva2VuLnZhbHVlKTthZHZhbmNlKCk7cmV0dXJuIHRva2VuO31lbHNle2Vycm9yKCJFeHBlY3RlZCBhbiBpZGVudGlmaWVyIGFuZCBpbnN0ZWFkIHNhdyAne2F9Jy4iLHRva2VuLHRva2VuLmlkKTt9fQp3aGlsZShyYnA8bmV4dHRva2VuLmxicCl7YWR2YW5jZSgpO2lmKHRva2VuLmxlZCl7bGVmdD10b2tlbi5sZWQobGVmdCk7fWVsc2V7ZXJyb3IoIkV4cGVjdGVkIGFuIG9wZXJhdG9yIGFuZCBpbnN0ZWFkIHNhdyAne2F9Jy4iLHRva2VuLHRva2VuLmlkKTt9fX0KcmV0dXJuIGxlZnQ7fQpmdW5jdGlvbiBhZGphY2VudChsZWZ0LHJpZ2h0KXtsZWZ0PWxlZnR8fHRva2VuO3JpZ2h0PXJpZ2h0fHxuZXh0dG9rZW47aWYob3B0aW9uLndoaXRlfHx4bW9kZT09PSdzdHlsZXByb3BlcnR5J3x8eG1vZGU9PT0nc3R5bGUnKXtpZihsZWZ0LmNoYXJhY3RlciE9PXJpZ2h0LmZyb20mJmxlZnQubGluZT09PXJpZ2h0LmxpbmUpe3dhcm5pbmcoIlVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgJ3thfScuIixyaWdodCxsZWZ0LnZhbHVlKTt9fX0KZnVuY3Rpb24gbm9zcGFjZShsZWZ0LHJpZ2h0KXtsZWZ0PWxlZnR8fHRva2VuO3JpZ2h0PXJpZ2h0fHxuZXh0dG9rZW47aWYob3B0aW9uLndoaXRlJiYhbGVmdC5jb21tZW50KXtpZihsZWZ0LmxpbmU9PT1yaWdodC5saW5lKXthZGphY2VudChsZWZ0LHJpZ2h0KTt9fX0KZnVuY3Rpb24gbm9uYWRqYWNlbnQobGVmdCxyaWdodCl7aWYob3B0aW9uLndoaXRlKXtsZWZ0PWxlZnR8fHRva2VuO3JpZ2h0PXJpZ2h0fHxuZXh0dG9rZW47aWYobGVmdC5saW5lPT09cmlnaHQubGluZSYmbGVmdC5jaGFyYWN0ZXI9PT1yaWdodC5mcm9tKXt3YXJuaW5nKCJNaXNzaW5nIHNwYWNlIGFmdGVyICd7YX0nLiIsbmV4dHRva2VuLGxlZnQudmFsdWUpO319fQpmdW5jdGlvbiBub2JyZWFrbm9uYWRqYWNlbnQobGVmdCxyaWdodCl7bGVmdD1sZWZ0fHx0b2tlbjtyaWdodD1yaWdodHx8bmV4dHRva2VuO2lmKCFvcHRpb24ubGF4YnJlYWsmJmxlZnQubGluZSE9PXJpZ2h0LmxpbmUpe3dhcm5pbmcoIkJhZCBsaW5lIGJyZWFraW5nIGJlZm9yZSAne2F9Jy4iLHJpZ2h0LHJpZ2h0LmlkKTt9ZWxzZSBpZihvcHRpb24ud2hpdGUpe2xlZnQ9bGVmdHx8dG9rZW47cmlnaHQ9cmlnaHR8fG5leHR0b2tlbjtpZihsZWZ0LmNoYXJhY3Rlcj09PXJpZ2h0LmZyb20pe3dhcm5pbmcoIk1pc3Npbmcgc3BhY2UgYWZ0ZXIgJ3thfScuIixuZXh0dG9rZW4sbGVmdC52YWx1ZSk7fX19CmZ1bmN0aW9uIGluZGVudGF0aW9uKGJpYXMpe3ZhciBpO2lmKG9wdGlvbi53aGl0ZSYmbmV4dHRva2VuLmlkIT09JyhlbmQpJyl7aT1pbmRlbnQrKGJpYXN8fDApO2lmKG5leHR0b2tlbi5mcm9tIT09aSl7d2FybmluZygiRXhwZWN0ZWQgJ3thfScgdG8gaGF2ZSBhbiBpbmRlbnRhdGlvbiBhdCB7Yn0gaW5zdGVhZCBhdCB7Y30uIixuZXh0dG9rZW4sbmV4dHRva2VuLnZhbHVlLGksbmV4dHRva2VuLmZyb20pO319fQpmdW5jdGlvbiBub2xpbmVicmVhayh0KXt0PXR8fHRva2VuO2lmKHQubGluZSE9PW5leHR0b2tlbi5saW5lKXt3YXJuaW5nKCJMaW5lIGJyZWFraW5nIGVycm9yICd7YX0nLiIsdCx0LnZhbHVlKTt9fQpmdW5jdGlvbiBjb21tYSgpe2lmKHRva2VuLmxpbmUhPT1uZXh0dG9rZW4ubGluZSl7aWYoIW9wdGlvbi5sYXhicmVhayl7d2FybmluZygiQmFkIGxpbmUgYnJlYWtpbmcgYmVmb3JlICd7YX0nLiIsdG9rZW4sbmV4dHRva2VuLmlkKTt9fWVsc2UgaWYodG9rZW4uY2hhcmFjdGVyIT09bmV4dHRva2VuLmZyb20mJm9wdGlvbi53aGl0ZSl7d2FybmluZygiVW5leHBlY3RlZCBzcGFjZSBhZnRlciAne2F9Jy4iLG5leHR0b2tlbix0b2tlbi52YWx1ZSk7fQphZHZhbmNlKCcsJyk7bm9uYWRqYWNlbnQodG9rZW4sbmV4dHRva2VuKTt9CmZ1bmN0aW9uIHN5bWJvbChzLHApe3ZhciB4PXN5bnRheFtzXTtpZigheHx8dHlwZW9mIHghPT0nb2JqZWN0Jyl7c3ludGF4W3NdPXg9e2lkOnMsbGJwOnAsdmFsdWU6c307fQpyZXR1cm4geDt9CmZ1bmN0aW9uIGRlbGltKHMpe3JldHVybiBzeW1ib2wocywwKTt9CmZ1bmN0aW9uIHN0bXQocyxmKXt2YXIgeD1kZWxpbShzKTt4LmlkZW50aWZpZXI9eC5yZXNlcnZlZD10cnVlO3guZnVkPWY7cmV0dXJuIHg7fQpmdW5jdGlvbiBibG9ja3N0bXQocyxmKXt2YXIgeD1zdG10KHMsZik7eC5ibG9jaz10cnVlO3JldHVybiB4O30KZnVuY3Rpb24gcmVzZXJ2ZU5hbWUoeCl7dmFyIGM9eC5pZC5jaGFyQXQoMCk7aWYoKGM+PSdhJyYmYzw9J3onKXx8KGM+PSdBJyYmYzw9J1onKSl7eC5pZGVudGlmaWVyPXgucmVzZXJ2ZWQ9dHJ1ZTt9CnJldHVybiB4O30KZnVuY3Rpb24gcHJlZml4KHMsZil7dmFyIHg9c3ltYm9sKHMsMTUwKTtyZXNlcnZlTmFtZSh4KTt4Lm51ZD0odHlwZW9mIGY9PT0nZnVuY3Rpb24nKT9mOmZ1bmN0aW9uKCl7dGhpcy5yaWdodD1wYXJzZSgxNTApO3RoaXMuYXJpdHk9J3VuYXJ5JztpZih0aGlzLmlkPT09JysrJ3x8dGhpcy5pZD09PSctLScpe2lmKG9wdGlvbi5wbHVzcGx1cyl7d2FybmluZygiVW5leHBlY3RlZCB1c2Ugb2YgJ3thfScuIix0aGlzLHRoaXMuaWQpO31lbHNlIGlmKCghdGhpcy5yaWdodC5pZGVudGlmaWVyfHx0aGlzLnJpZ2h0LnJlc2VydmVkKSYmdGhpcy5yaWdodC5pZCE9PScuJyYmdGhpcy5yaWdodC5pZCE9PSdbJyl7d2FybmluZygiQmFkIG9wZXJhbmQuIix0aGlzKTt9fQpyZXR1cm4gdGhpczt9O3JldHVybiB4O30KZnVuY3Rpb24gdHlwZShzLGYpe3ZhciB4PWRlbGltKHMpO3gudHlwZT1zO3gubnVkPWY7cmV0dXJuIHg7fQpmdW5jdGlvbiByZXNlcnZlKHMsZil7dmFyIHg9dHlwZShzLGYpO3guaWRlbnRpZmllcj14LnJlc2VydmVkPXRydWU7cmV0dXJuIHg7fQpmdW5jdGlvbiByZXNlcnZldmFyKHMsdil7cmV0dXJuIHJlc2VydmUocyxmdW5jdGlvbigpe2lmKHRoaXMuaWQ9PT0ndGhpcyd8fHRoaXMuaWQ9PT0nYXJndW1lbnRzJyl7aWYoc3RyaWN0X21vZGUmJmZ1bmN0WycoZ2xvYmFsKSddKXt3YXJuaW5nKCJTdHJpY3QgdmlvbGF0aW9uLiIsdGhpcyk7fWVsc2UgaWYob3B0aW9uLnNhZmUpe3dhcm5pbmcoIkFEc2FmZSB2aW9sYXRpb24uIix0aGlzKTt9fQpyZXR1cm4gdGhpczt9KTt9CmZ1bmN0aW9uIGluZml4KHMsZixwLHcpe3ZhciB4PXN5bWJvbChzLHApO3Jlc2VydmVOYW1lKHgpO3gubGVkPWZ1bmN0aW9uKGxlZnQpe2lmKCF3KXtub2JyZWFrbm9uYWRqYWNlbnQocHJldnRva2VuLHRva2VuKTtub25hZGphY2VudCh0b2tlbixuZXh0dG9rZW4pO30KaWYodHlwZW9mIGY9PT0nZnVuY3Rpb24nKXtyZXR1cm4gZihsZWZ0LHRoaXMpO31lbHNle3RoaXMubGVmdD1sZWZ0O3RoaXMucmlnaHQ9cGFyc2UocCk7cmV0dXJuIHRoaXM7fX07cmV0dXJuIHg7fQpmdW5jdGlvbiByZWxhdGlvbihzLGYpe3ZhciB4PXN5bWJvbChzLDEwMCk7eC5sZWQ9ZnVuY3Rpb24obGVmdCl7bm9icmVha25vbmFkamFjZW50KHByZXZ0b2tlbix0b2tlbik7bm9uYWRqYWNlbnQodG9rZW4sbmV4dHRva2VuKTt2YXIgcmlnaHQ9cGFyc2UoMTAwKTtpZigobGVmdCYmbGVmdC5pZD09PSdOYU4nKXx8KHJpZ2h0JiZyaWdodC5pZD09PSdOYU4nKSl7d2FybmluZygiVXNlIHRoZSBpc05hTiBmdW5jdGlvbiB0byBjb21wYXJlIHdpdGggTmFOLiIsdGhpcyk7fWVsc2UgaWYoZil7Zi5hcHBseSh0aGlzLFtsZWZ0LHJpZ2h0XSk7fQppZihsZWZ0LmlkPT09JyEnKXt3YXJuaW5nKCJDb25mdXNpbmcgdXNlIG9mICd7YX0nLiIsbGVmdCwnIScpO30KaWYocmlnaHQuaWQ9PT0nIScpe3dhcm5pbmcoIkNvbmZ1c2luZyB1c2Ugb2YgJ3thfScuIixsZWZ0LCchJyk7fQp0aGlzLmxlZnQ9bGVmdDt0aGlzLnJpZ2h0PXJpZ2h0O3JldHVybiB0aGlzO307cmV0dXJuIHg7fQpmdW5jdGlvbiBpc1Bvb3JSZWxhdGlvbihub2RlKXtyZXR1cm4gbm9kZSYmKChub2RlLnR5cGU9PT0nKG51bWJlciknJiYrbm9kZS52YWx1ZT09PTApfHwobm9kZS50eXBlPT09JyhzdHJpbmcpJyYmbm9kZS52YWx1ZT09PScgJyl8fG5vZGUudHlwZT09PSd0cnVlJ3x8bm9kZS50eXBlPT09J2ZhbHNlJ3x8bm9kZS50eXBlPT09J3VuZGVmaW5lZCd8fG5vZGUudHlwZT09PSdudWxsJyk7fQpmdW5jdGlvbiBhc3NpZ25vcChzLGYpe3N5bWJvbChzLDIwKS5leHBzPXRydWU7cmV0dXJuIGluZml4KHMsZnVuY3Rpb24obGVmdCx0aGF0KXt2YXIgbDt0aGF0LmxlZnQ9bGVmdDtpZihwcmVkZWZpbmVkW2xlZnQudmFsdWVdPT09ZmFsc2UmJnNjb3BlW2xlZnQudmFsdWVdWycoZ2xvYmFsKSddPT09dHJ1ZSl7d2FybmluZygnUmVhZCBvbmx5LicsbGVmdCk7fQppZihvcHRpb24uc2FmZSl7bD1sZWZ0O2Rve2lmKHR5cGVvZiBwcmVkZWZpbmVkW2wudmFsdWVdPT09J2Jvb2xlYW4nKXt3YXJuaW5nKCdBRHNhZmUgdmlvbGF0aW9uLicsbCk7fQpsPWwubGVmdDt9d2hpbGUobCk7fQppZihsZWZ0KXtpZihsZWZ0LmlkPT09Jy4nfHxsZWZ0LmlkPT09J1snKXtpZighbGVmdC5sZWZ0fHxsZWZ0LmxlZnQudmFsdWU9PT0nYXJndW1lbnRzJyl7d2FybmluZygnQmFkIGFzc2lnbm1lbnQuJyx0aGF0KTt9CnRoYXQucmlnaHQ9cGFyc2UoMTkpO3JldHVybiB0aGF0O31lbHNlIGlmKGxlZnQuaWRlbnRpZmllciYmIWxlZnQucmVzZXJ2ZWQpe2lmKGZ1bmN0W2xlZnQudmFsdWVdPT09J2V4Y2VwdGlvbicpe3dhcm5pbmcoIkRvIG5vdCBhc3NpZ24gdG8gdGhlIGV4Y2VwdGlvbiBwYXJhbWV0ZXIuIixsZWZ0KTt9CnRoYXQucmlnaHQ9cGFyc2UoMTkpO3JldHVybiB0aGF0O30KaWYobGVmdD09PXN5bnRheFsnZnVuY3Rpb24nXSl7d2FybmluZygiRXhwZWN0ZWQgYW4gaWRlbnRpZmllciBpbiBhbiBhc3NpZ25tZW50IGFuZCBpbnN0ZWFkIHNhdyBhIGZ1bmN0aW9uIGludm9jYXRpb24uIix0b2tlbik7fX0KZXJyb3IoIkJhZCBhc3NpZ25tZW50LiIsdGhhdCk7fSwyMCk7fQpmdW5jdGlvbiBiaXR3aXNlKHMsZixwKXt2YXIgeD1zeW1ib2wocyxwKTtyZXNlcnZlTmFtZSh4KTt4LmxlZD0odHlwZW9mIGY9PT0nZnVuY3Rpb24nKT9mOmZ1bmN0aW9uKGxlZnQpe2lmKG9wdGlvbi5iaXR3aXNlKXt3YXJuaW5nKCJVbmV4cGVjdGVkIHVzZSBvZiAne2F9Jy4iLHRoaXMsdGhpcy5pZCk7fQp0aGlzLmxlZnQ9bGVmdDt0aGlzLnJpZ2h0PXBhcnNlKHApO3JldHVybiB0aGlzO307cmV0dXJuIHg7fQpmdW5jdGlvbiBiaXR3aXNlYXNzaWdub3Aocyl7c3ltYm9sKHMsMjApLmV4cHM9dHJ1ZTtyZXR1cm4gaW5maXgocyxmdW5jdGlvbihsZWZ0LHRoYXQpe2lmKG9wdGlvbi5iaXR3aXNlKXt3YXJuaW5nKCJVbmV4cGVjdGVkIHVzZSBvZiAne2F9Jy4iLHRoYXQsdGhhdC5pZCk7fQpub25hZGphY2VudChwcmV2dG9rZW4sdG9rZW4pO25vbmFkamFjZW50KHRva2VuLG5leHR0b2tlbik7aWYobGVmdCl7aWYobGVmdC5pZD09PScuJ3x8bGVmdC5pZD09PSdbJ3x8KGxlZnQuaWRlbnRpZmllciYmIWxlZnQucmVzZXJ2ZWQpKXtwYXJzZSgxOSk7cmV0dXJuIHRoYXQ7fQppZihsZWZ0PT09c3ludGF4WydmdW5jdGlvbiddKXt3YXJuaW5nKCJFeHBlY3RlZCBhbiBpZGVudGlmaWVyIGluIGFuIGFzc2lnbm1lbnQsIGFuZCBpbnN0ZWFkIHNhdyBhIGZ1bmN0aW9uIGludm9jYXRpb24uIix0b2tlbik7fQpyZXR1cm4gdGhhdDt9CmVycm9yKCJCYWQgYXNzaWdubWVudC4iLHRoYXQpO30sMjApO30KZnVuY3Rpb24gc3VmZml4KHMsZil7dmFyIHg9c3ltYm9sKHMsMTUwKTt4LmxlZD1mdW5jdGlvbihsZWZ0KXtpZihvcHRpb24ucGx1c3BsdXMpe3dhcm5pbmcoIlVuZXhwZWN0ZWQgdXNlIG9mICd7YX0nLiIsdGhpcyx0aGlzLmlkKTt9ZWxzZSBpZigoIWxlZnQuaWRlbnRpZmllcnx8bGVmdC5yZXNlcnZlZCkmJmxlZnQuaWQhPT0nLicmJmxlZnQuaWQhPT0nWycpe3dhcm5pbmcoIkJhZCBvcGVyYW5kLiIsdGhpcyk7fQp0aGlzLmxlZnQ9bGVmdDtyZXR1cm4gdGhpczt9O3JldHVybiB4O30KZnVuY3Rpb24gb3B0aW9uYWxpZGVudGlmaWVyKCl7aWYobmV4dHRva2VuLnJlc2VydmVkKXt3YXJuaW5nKCJFeHBlY3RlZCBhbiBpZGVudGlmaWVyIGFuZCBpbnN0ZWFkIHNhdyAne2F9JyAoYSByZXNlcnZlZCB3b3JkKS4iLG5leHR0b2tlbixuZXh0dG9rZW4uaWQpO30KaWYobmV4dHRva2VuLmlkZW50aWZpZXIpe2FkdmFuY2UoKTtyZXR1cm4gdG9rZW4udmFsdWU7fX0KZnVuY3Rpb24gaWRlbnRpZmllcigpe3ZhciBpPW9wdGlvbmFsaWRlbnRpZmllcigpO2lmKGkpe3JldHVybiBpO30KaWYodG9rZW4uaWQ9PT0nZnVuY3Rpb24nJiZuZXh0dG9rZW4uaWQ9PT0nKCcpe3dhcm5pbmcoIk1pc3NpbmcgbmFtZSBpbiBmdW5jdGlvbiBzdGF0ZW1lbnQuIik7fWVsc2V7ZXJyb3IoIkV4cGVjdGVkIGFuIGlkZW50aWZpZXIgYW5kIGluc3RlYWQgc2F3ICd7YX0nLiIsbmV4dHRva2VuLG5leHR0b2tlbi52YWx1ZSk7fX0KZnVuY3Rpb24gcmVhY2hhYmxlKHMpe3ZhciBpPTAsdDtpZihuZXh0dG9rZW4uaWQhPT0nOyd8fG5vcmVhY2gpe3JldHVybjt9CmZvcig7Oyl7dD1wZWVrKGkpO2lmKHQucmVhY2gpe3JldHVybjt9CmlmKHQuaWQhPT0nKGVuZGxpbmUpJyl7aWYodC5pZD09PSdmdW5jdGlvbicpe3dhcm5pbmcoIklubmVyIGZ1bmN0aW9ucyBzaG91bGQgYmUgbGlzdGVkIGF0IHRoZSB0b3Agb2YgdGhlIG91dGVyIGZ1bmN0aW9uLiIsdCk7YnJlYWs7fQp3YXJuaW5nKCJVbnJlYWNoYWJsZSAne2F9JyBhZnRlciAne2J9Jy4iLHQsdC52YWx1ZSxzKTticmVhazt9CmkrPTE7fX0KZnVuY3Rpb24gc3RhdGVtZW50KG5vaW5kZW50KXt2YXIgaT1pbmRlbnQscixzPXNjb3BlLHQ9bmV4dHRva2VuO2lmKHQuaWQ9PT0nOycpe3dhcm5pbmcoIlVubmVjZXNzYXJ5IHNlbWljb2xvbi4iLHQpO2FkdmFuY2UoJzsnKTtyZXR1cm47fQppZih0LmlkZW50aWZpZXImJiF0LnJlc2VydmVkJiZwZWVrKCkuaWQ9PT0nOicpe2FkdmFuY2UoKTthZHZhbmNlKCc6Jyk7c2NvcGU9T2JqZWN0LmNyZWF0ZShzKTthZGRsYWJlbCh0LnZhbHVlLCdsYWJlbCcpO2lmKCFuZXh0dG9rZW4ubGFiZWxsZWQpe3dhcm5pbmcoIkxhYmVsICd7YX0nIG9uIHtifSBzdGF0ZW1lbnQuIixuZXh0dG9rZW4sdC52YWx1ZSxuZXh0dG9rZW4udmFsdWUpO30KaWYoangudGVzdCh0LnZhbHVlKyc6Jykpe3dhcm5pbmcoIkxhYmVsICd7YX0nIGxvb2tzIGxpa2UgYSBqYXZhc2NyaXB0IHVybC4iLHQsdC52YWx1ZSk7fQpuZXh0dG9rZW4ubGFiZWw9dC52YWx1ZTt0PW5leHR0b2tlbjt9CmlmKCFub2luZGVudCl7aW5kZW50YXRpb24oKTt9CmlmKG5leHR0b2tlbi5pZD09PSduZXcnKXt3YXJuaW5nKCInbmV3JyBzaG91bGQgbm90IGJlIHVzZWQgYXMgYSBzdGF0ZW1lbnQuIik7fQpyPXBhcnNlKDAsdHJ1ZSk7aWYoIXQuYmxvY2spe2lmKCFyfHwhci5leHBzKXt3YXJuaW5nKCJFeHBlY3RlZCBhbiBhc3NpZ25tZW50IG9yIGZ1bmN0aW9uIGNhbGwgYW5kIGluc3RlYWQgc2F3IGFuIGV4cHJlc3Npb24uIix0b2tlbik7fQppZihuZXh0dG9rZW4uaWQhPT0nOycpe3dhcm5pbmdBdCgiTWlzc2luZyBzZW1pY29sb24uIix0b2tlbi5saW5lLHRva2VuLmZyb20rdG9rZW4udmFsdWUubGVuZ3RoKTt9ZWxzZXthZGphY2VudCh0b2tlbixuZXh0dG9rZW4pO2FkdmFuY2UoJzsnKTtub25hZGphY2VudCh0b2tlbixuZXh0dG9rZW4pO319CmluZGVudD1pO3Njb3BlPXM7cmV0dXJuIHI7fQpmdW5jdGlvbiB1c2Vfc3RyaWN0KCl7aWYobmV4dHRva2VuLnZhbHVlPT09J3VzZSBzdHJpY3QnKXthZHZhbmNlKCk7YWR2YW5jZSgnOycpO3N0cmljdF9tb2RlPXRydWU7cmV0dXJuIHRydWU7fWVsc2V7cmV0dXJuIGZhbHNlO319CmZ1bmN0aW9uIHN0YXRlbWVudHMoYmVnaW4pe3ZhciBhPVtdLGYscDtpZihiZWdpbiYmIXVzZV9zdHJpY3QoKSYmb3B0aW9uLnN0cmljdCl7d2FybmluZygnTWlzc2luZyAidXNlIHN0cmljdCIgc3RhdGVtZW50LicsbmV4dHRva2VuKTt9CmlmKG9wdGlvbi5hZHNhZmUpe3N3aXRjaChiZWdpbil7Y2FzZSdzY3JpcHQnOmlmKCFhZHNhZmVfbWF5KXtpZihuZXh0dG9rZW4udmFsdWUhPT0nQURTQUZFJ3x8cGVlaygwKS5pZCE9PScuJ3x8KHBlZWsoMSkudmFsdWUhPT0naWQnJiZwZWVrKDEpLnZhbHVlIT09J2dvJykpe2Vycm9yKCdBRHNhZmUgdmlvbGF0aW9uOiBNaXNzaW5nIEFEU0FGRS5pZCBvciBBRFNBRkUuZ28uJyxuZXh0dG9rZW4pO319CmlmKG5leHR0b2tlbi52YWx1ZT09PSdBRFNBRkUnJiZwZWVrKDApLmlkPT09Jy4nJiZwZWVrKDEpLnZhbHVlPT09J2lkJyl7aWYoYWRzYWZlX21heSl7ZXJyb3IoJ0FEc2FmZSB2aW9sYXRpb24uJyxuZXh0dG9rZW4pO30KYWR2YW5jZSgnQURTQUZFJyk7YWR2YW5jZSgnLicpO2FkdmFuY2UoJ2lkJyk7YWR2YW5jZSgnKCcpO2lmKG5leHR0b2tlbi52YWx1ZSE9PWFkc2FmZV9pZCl7ZXJyb3IoJ0FEc2FmZSB2aW9sYXRpb246IGlkIGRvZXMgbm90IG1hdGNoLicsbmV4dHRva2VuKTt9CmFkdmFuY2UoJyhzdHJpbmcpJyk7YWR2YW5jZSgnKScpO2FkdmFuY2UoJzsnKTthZHNhZmVfbWF5PXRydWU7fQpicmVhaztjYXNlJ2xpYic6aWYobmV4dHRva2VuLnZhbHVlPT09J0FEU0FGRScpe2FkdmFuY2UoJ0FEU0FGRScpO2FkdmFuY2UoJy4nKTthZHZhbmNlKCdsaWInKTthZHZhbmNlKCcoJyk7YWR2YW5jZSgnKHN0cmluZyknKTtjb21tYSgpO2Y9cGFyc2UoMCk7aWYoZi5pZCE9PSdmdW5jdGlvbicpe2Vycm9yKCdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIGxpYiBtdXN0IGJlIGEgZnVuY3Rpb24uJyxmKTt9CnA9Zi5mdW5jdFsnKHBhcmFtcyknXTtwPXAmJnAuam9pbignLCAnKTtpZihwJiZwIT09J2xpYicpe2Vycm9yKCJFeHBlY3RlZCAne2F9JyBhbmQgaW5zdGVhZCBzYXcgJ3tifScuIixmLCcobGliKScsJygnK3ArJyknKTt9CmFkdmFuY2UoJyknKTthZHZhbmNlKCc7Jyk7cmV0dXJuIGE7fWVsc2V7ZXJyb3IoIkFEc2FmZSBsaWIgdmlvbGF0aW9uLiIpO319fQp3aGlsZSghbmV4dHRva2VuLnJlYWNoJiZuZXh0dG9rZW4uaWQhPT0nKGVuZCknKXtpZihuZXh0dG9rZW4uaWQ9PT0nOycpe3dhcm5pbmcoIlVubmVjZXNzYXJ5IHNlbWljb2xvbi4iKTthZHZhbmNlKCc7Jyk7fWVsc2V7YS5wdXNoKHN0YXRlbWVudCgpKTt9fQpyZXR1cm4gYTt9CmZ1bmN0aW9uIGJsb2NrKGYpe3ZhciBhLGI9aW5ibG9jayxvbGRfaW5kZW50PWluZGVudCxzPXNjb3BlLHQ7aW5ibG9jaz1mO3Njb3BlPU9iamVjdC5jcmVhdGUoc2NvcGUpO25vbmFkamFjZW50KHRva2VuLG5leHR0b2tlbik7dD1uZXh0dG9rZW47aWYobmV4dHRva2VuLmlkPT09J3snKXthZHZhbmNlKCd7Jyk7aWYobmV4dHRva2VuLmlkIT09J30nfHx0b2tlbi5saW5lIT09bmV4dHRva2VuLmxpbmUpe2luZGVudCs9b3B0aW9uLmluZGVudDt3aGlsZSghZiYmbmV4dHRva2VuLmZyb20+aW5kZW50KXtpbmRlbnQrPW9wdGlvbi5pbmRlbnQ7fQppZighZil7dXNlX3N0cmljdCgpO30KYT1zdGF0ZW1lbnRzKCk7aW5kZW50LT1vcHRpb24uaW5kZW50O2luZGVudGF0aW9uKCk7fQphZHZhbmNlKCd9Jyx0KTtpbmRlbnQ9b2xkX2luZGVudDt9ZWxzZXt3YXJuaW5nKCJFeHBlY3RlZCAne2F9JyBhbmQgaW5zdGVhZCBzYXcgJ3tifScuIixuZXh0dG9rZW4sJ3snLG5leHR0b2tlbi52YWx1ZSk7bm9yZWFjaD10cnVlO2E9W3N0YXRlbWVudCgpXTtub3JlYWNoPWZhbHNlO30KZnVuY3RbJyh2ZXJiKSddPW51bGw7c2NvcGU9cztpbmJsb2NrPWI7cmV0dXJuIGE7fQpmdW5jdGlvbiBpZFZhbHVlKCl7cmV0dXJuIHRoaXM7fQpmdW5jdGlvbiBjb3VudE1lbWJlcihtKXtpZihtZW1iZXJzT25seSYmdHlwZW9mIG1lbWJlcnNPbmx5W21dIT09J2Jvb2xlYW4nKXt3YXJuaW5nKCJVbmV4cGVjdGVkIC8qbWVtYmVyICd7YX0nLiIsdG9rZW4sbSk7fQppZih0eXBlb2YgbWVtYmVyW21dPT09J251bWJlcicpe21lbWJlclttXSs9MTt9ZWxzZXttZW1iZXJbbV09MTt9fQpmdW5jdGlvbiBub3RlX2ltcGxpZWQodG9rZW4pe3ZhciBuYW1lPXRva2VuLnZhbHVlLGxpbmU9dG9rZW4ubGluZSxhPWltcGxpZWRbbmFtZV07aWYodHlwZW9mIGE9PT0nZnVuY3Rpb24nKXthPWZhbHNlO30KaWYoIWEpe2E9W2xpbmVdO2ltcGxpZWRbbmFtZV09YTt9ZWxzZSBpZihhW2EubGVuZ3RoLTFdIT09bGluZSl7YS5wdXNoKGxpbmUpO319CmZ1bmN0aW9uIGNzc05hbWUoKXtpZihuZXh0dG9rZW4uaWRlbnRpZmllcil7YWR2YW5jZSgpO3JldHVybiB0cnVlO319CmZ1bmN0aW9uIGNzc051bWJlcigpe2lmKG5leHR0b2tlbi5pZD09PSctJyl7YWR2YW5jZSgnLScpO2FkamFjZW50KCk7bm9saW5lYnJlYWsoKTt9CmlmKG5leHR0b2tlbi50eXBlPT09JyhudW1iZXIpJyl7YWR2YW5jZSgnKG51bWJlciknKTtyZXR1cm4gdHJ1ZTt9fQpmdW5jdGlvbiBjc3NTdHJpbmcoKXtpZihuZXh0dG9rZW4udHlwZT09PScoc3RyaW5nKScpe2FkdmFuY2UoKTtyZXR1cm4gdHJ1ZTt9fQpmdW5jdGlvbiBjc3NDb2xvcigpe3ZhciBpLG51bWJlcjtpZihuZXh0dG9rZW4uaWRlbnRpZmllcil7aWYobmV4dHRva2VuLnZhbHVlPT09J3JnYicpe2FkdmFuY2UoKTthZHZhbmNlKCcoJyk7Zm9yKGk9MDtpPDM7aSs9MSl7aWYoaSl7YWR2YW5jZSgnLCcpO30KbnVtYmVyPW5leHR0b2tlbi52YWx1ZTtpZihuZXh0dG9rZW4udHlwZSE9PScobnVtYmVyKSd8fG51bWJlcjwwKXt3YXJuaW5nKCJFeHBlY3RlZCBhIHBvc2l0aXZlIG51bWJlciBhbmQgaW5zdGVhZCBzYXcgJ3thfSciLG5leHR0b2tlbixudW1iZXIpO2FkdmFuY2UoKTt9ZWxzZXthZHZhbmNlKCk7aWYobmV4dHRva2VuLmlkPT09JyUnKXthZHZhbmNlKCclJyk7aWYobnVtYmVyPjEwMCl7d2FybmluZygiRXhwZWN0ZWQgYSBwZXJjZW50YWdlIGFuZCBpbnN0ZWFkIHNhdyAne2F9JyIsdG9rZW4sbnVtYmVyKTt9fWVsc2V7aWYobnVtYmVyPjI1NSl7d2FybmluZygiRXhwZWN0ZWQgYSBzbWFsbCBudW1iZXIgYW5kIGluc3RlYWQgc2F3ICd7YX0nIix0b2tlbixudW1iZXIpO319fX0KYWR2YW5jZSgnKScpO3JldHVybiB0cnVlO31lbHNlIGlmKGNzc0NvbG9yRGF0YVtuZXh0dG9rZW4udmFsdWVdPT09dHJ1ZSl7YWR2YW5jZSgpO3JldHVybiB0cnVlO319ZWxzZSBpZihuZXh0dG9rZW4udHlwZT09PScoY29sb3IpJyl7YWR2YW5jZSgpO3JldHVybiB0cnVlO30KcmV0dXJuIGZhbHNlO30KZnVuY3Rpb24gY3NzTGVuZ3RoKCl7aWYobmV4dHRva2VuLmlkPT09Jy0nKXthZHZhbmNlKCctJyk7YWRqYWNlbnQoKTtub2xpbmVicmVhaygpO30KaWYobmV4dHRva2VuLnR5cGU9PT0nKG51bWJlciknKXthZHZhbmNlKCk7aWYobmV4dHRva2VuLnR5cGUhPT0nKHN0cmluZyknJiZjc3NMZW5ndGhEYXRhW25leHR0b2tlbi52YWx1ZV09PT10cnVlKXthZGphY2VudCgpO2FkdmFuY2UoKTt9ZWxzZSBpZigrdG9rZW4udmFsdWUhPT0wKXt3YXJuaW5nKCJFeHBlY3RlZCBhIGxpbmVhciB1bml0IGFuZCBpbnN0ZWFkIHNhdyAne2F9Jy4iLG5leHR0b2tlbixuZXh0dG9rZW4udmFsdWUpO30KcmV0dXJuIHRydWU7fQpyZXR1cm4gZmFsc2U7fQpmdW5jdGlvbiBjc3NMaW5lSGVpZ2h0KCl7aWYobmV4dHRva2VuLmlkPT09Jy0nKXthZHZhbmNlKCctJyk7YWRqYWNlbnQoKTt9CmlmKG5leHR0b2tlbi50eXBlPT09JyhudW1iZXIpJyl7YWR2YW5jZSgpO2lmKG5leHR0b2tlbi50eXBlIT09JyhzdHJpbmcpJyYmY3NzTGVuZ3RoRGF0YVtuZXh0dG9rZW4udmFsdWVdPT09dHJ1ZSl7YWRqYWNlbnQoKTthZHZhbmNlKCk7fQpyZXR1cm4gdHJ1ZTt9CnJldHVybiBmYWxzZTt9CmZ1bmN0aW9uIGNzc1dpZHRoKCl7aWYobmV4dHRva2VuLmlkZW50aWZpZXIpe3N3aXRjaChuZXh0dG9rZW4udmFsdWUpe2Nhc2UndGhpbic6Y2FzZSdtZWRpdW0nOmNhc2UndGhpY2snOmFkdmFuY2UoKTtyZXR1cm4gdHJ1ZTt9fWVsc2V7cmV0dXJuIGNzc0xlbmd0aCgpO319CmZ1bmN0aW9uIGNzc01hcmdpbigpe2lmKG5leHR0b2tlbi5pZGVudGlmaWVyKXtpZihuZXh0dG9rZW4udmFsdWU9PT0nYXV0bycpe2FkdmFuY2UoKTtyZXR1cm4gdHJ1ZTt9fWVsc2V7cmV0dXJuIGNzc0xlbmd0aCgpO319CmZ1bmN0aW9uIGNzc0F0dHIoKXtpZihuZXh0dG9rZW4uaWRlbnRpZmllciYmbmV4dHRva2VuLnZhbHVlPT09J2F0dHInKXthZHZhbmNlKCk7YWR2YW5jZSgnKCcpO2lmKCFuZXh0dG9rZW4uaWRlbnRpZmllcil7d2FybmluZygiRXhwZWN0ZWQgYSBuYW1lIGFuZCBpbnN0ZWFkIHNhdyAne2F9Jy4iLG5leHR0b2tlbixuZXh0dG9rZW4udmFsdWUpO30KYWR2YW5jZSgpO2FkdmFuY2UoJyknKTtyZXR1cm4gdHJ1ZTt9CnJldHVybiBmYWxzZTt9CmZ1bmN0aW9uIGNzc0NvbW1hTGlzdCgpe3doaWxlKG5leHR0b2tlbi5pZCE9PSc7Jyl7aWYoIWNzc05hbWUoKSYmIWNzc1N0cmluZygpKXt3YXJuaW5nKCJFeHBlY3RlZCBhIG5hbWUgYW5kIGluc3RlYWQgc2F3ICd7YX0nLiIsbmV4dHRva2VuLG5leHR0b2tlbi52YWx1ZSk7fQppZihuZXh0dG9rZW4uaWQhPT0nLCcpe3JldHVybiB0cnVlO30KY29tbWEoKTt9fQpmdW5jdGlvbiBjc3NDb3VudGVyKCl7aWYobmV4dHRva2VuLmlkZW50aWZpZXImJm5leHR0b2tlbi52YWx1ZT09PSdjb3VudGVyJyl7YWR2YW5jZSgpO2FkdmFuY2UoJygnKTtpZighbmV4dHRva2VuLmlkZW50aWZpZXIpe30KYWR2YW5jZSgpO2lmKG5leHR0b2tlbi5pZD09PScsJyl7Y29tbWEoKTtpZihuZXh0dG9rZW4udHlwZSE9PScoc3RyaW5nKScpe3dhcm5pbmcoIkV4cGVjdGVkIGEgc3RyaW5nIGFuZCBpbnN0ZWFkIHNhdyAne2F9Jy4iLG5leHR0b2tlbixuZXh0dG9rZW4udmFsdWUpO30KYWR2YW5jZSgpO30KYWR2YW5jZSgnKScpO3JldHVybiB0cnVlO30KaWYobmV4dHRva2VuLmlkZW50aWZpZXImJm5leHR0b2tlbi52YWx1ZT09PSdjb3VudGVycycpe2FkdmFuY2UoKTthZHZhbmNlKCcoJyk7aWYoIW5leHR0b2tlbi5pZGVudGlmaWVyKXt3YXJuaW5nKCJFeHBlY3RlZCBhIG5hbWUgYW5kIGluc3RlYWQgc2F3ICd7YX0nLiIsbmV4dHRva2VuLG5leHR0b2tlbi52YWx1ZSk7fQphZHZhbmNlKCk7aWYobmV4dHRva2VuLmlkPT09JywnKXtjb21tYSgpO2lmKG5leHR0b2tlbi50eXBlIT09JyhzdHJpbmcpJyl7d2FybmluZygiRXhwZWN0ZWQgYSBzdHJpbmcgYW5kIGluc3RlYWQgc2F3ICd7YX0nLiIsbmV4dHRva2VuLG5leHR0b2tlbi52YWx1ZSk7fQphZHZhbmNlKCk7fQppZihuZXh0dG9rZW4uaWQ9PT0nLCcpe2NvbW1hKCk7aWYobmV4dHRva2VuLnR5cGUhPT0nKHN0cmluZyknKXt3YXJuaW5nKCJFeHBlY3RlZCBhIHN0cmluZyBhbmQgaW5zdGVhZCBzYXcgJ3thfScuIixuZXh0dG9rZW4sbmV4dHRva2VuLnZhbHVlKTt9CmFkdmFuY2UoKTt9CmFkdmFuY2UoJyknKTtyZXR1cm4gdHJ1ZTt9CnJldHVybiBmYWxzZTt9CmZ1bmN0aW9uIGNzc1NoYXBlKCl7dmFyIGk7aWYobmV4dHRva2VuLmlkZW50aWZpZXImJm5leHR0b2tlbi52YWx1ZT09PSdyZWN0Jyl7YWR2YW5jZSgpO2FkdmFuY2UoJygnKTtmb3IoaT0wO2k8NDtpKz0xKXtpZighY3NzTGVuZ3RoKCkpe3dhcm5pbmcoIkV4cGVjdGVkIGEgbnVtYmVyIGFuZCBpbnN0ZWFkIHNhdyAne2F9Jy4iLG5leHR0b2tlbixuZXh0dG9rZW4udmFsdWUpO2JyZWFrO319CmFkdmFuY2UoJyknKTtyZXR1cm4gdHJ1ZTt9CnJldHVybiBmYWxzZTt9CmZ1bmN0aW9uIGNzc1VybCgpe3ZhciBjLHVybDtpZihuZXh0dG9rZW4uaWRlbnRpZmllciYmbmV4dHRva2VuLnZhbHVlPT09J3VybCcpe25leHR0b2tlbj1sZXgucmFuZ2UoJygnLCcpJyk7dXJsPW5leHR0b2tlbi52YWx1ZTtjPXVybC5jaGFyQXQoMCk7aWYoYz09PSciJ3x8Yz09PSdcJycpe2lmKHVybC5zbGljZSgtMSkhPT1jKXt3YXJuaW5nKCJCYWQgdXJsIHN0cmluZy4iKTt9ZWxzZXt1cmw9dXJsLnNsaWNlKDEsLTEpO2lmKHVybC5pbmRleE9mKGMpPj0wKXt3YXJuaW5nKCJCYWQgdXJsIHN0cmluZy4iKTt9fX0KaWYoIXVybCl7d2FybmluZygiTWlzc2luZyB1cmwuIik7fQphZHZhbmNlKCk7aWYob3B0aW9uLnNhZmUmJnV4LnRlc3QodXJsKSl7ZXJyb3IoIkFEc2FmZSBVUkwgdmlvbGF0aW9uLiIpO30KdXJscy5wdXNoKHVybCk7cmV0dXJuIHRydWU7fQpyZXR1cm4gZmFsc2U7fQpjc3NBbnk9W2Nzc1VybCxmdW5jdGlvbigpe2Zvcig7Oyl7aWYobmV4dHRva2VuLmlkZW50aWZpZXIpe3N3aXRjaChuZXh0dG9rZW4udmFsdWUudG9Mb3dlckNhc2UoKSl7Y2FzZSd1cmwnOmNzc1VybCgpO2JyZWFrO2Nhc2UnZXhwcmVzc2lvbic6d2FybmluZygiVW5leHBlY3RlZCBleHByZXNzaW9uICd7YX0nLiIsbmV4dHRva2VuLG5leHR0b2tlbi52YWx1ZSk7YWR2YW5jZSgpO2JyZWFrO2RlZmF1bHQ6YWR2YW5jZSgpO319ZWxzZXtpZihuZXh0dG9rZW4uaWQ9PT0nOyd8fG5leHR0b2tlbi5pZD09PSchJ3x8bmV4dHRva2VuLmlkPT09JyhlbmQpJ3x8bmV4dHRva2VuLmlkPT09J30nKXtyZXR1cm4gdHJ1ZTt9CmFkdmFuY2UoKTt9fX1dO2Nzc0JvcmRlclN0eWxlPVsnbm9uZScsJ2hpZGRlbicsJ2RvdHRlZCcsJ2Rhc2hlZCcsJ3NvbGlkJywnZG91YmxlJywncmlkZ2UnLCdpbnNldCcsJ291dHNldCddO2Nzc0JyZWFrPVsnYXV0bycsJ2Fsd2F5cycsJ2F2b2lkJywnbGVmdCcsJ3JpZ2h0J107Y3NzT3ZlcmZsb3c9WydhdXRvJywnaGlkZGVuJywnc2Nyb2xsJywndmlzaWJsZSddO2Nzc0F0dHJpYnV0ZURhdGE9e2JhY2tncm91bmQ6W3RydWUsJ2JhY2tncm91bmQtYXR0YWNobWVudCcsJ2JhY2tncm91bmQtY29sb3InLCdiYWNrZ3JvdW5kLWltYWdlJywnYmFja2dyb3VuZC1wb3NpdGlvbicsJ2JhY2tncm91bmQtcmVwZWF0J10sJ2JhY2tncm91bmQtYXR0YWNobWVudCc6WydzY3JvbGwnLCdmaXhlZCddLCdiYWNrZ3JvdW5kLWNvbG9yJzpbJ3RyYW5zcGFyZW50Jyxjc3NDb2xvcl0sJ2JhY2tncm91bmQtaW1hZ2UnOlsnbm9uZScsY3NzVXJsXSwnYmFja2dyb3VuZC1wb3NpdGlvbic6WzIsW2Nzc0xlbmd0aCwndG9wJywnYm90dG9tJywnbGVmdCcsJ3JpZ2h0JywnY2VudGVyJ11dLCdiYWNrZ3JvdW5kLXJlcGVhdCc6WydyZXBlYXQnLCdyZXBlYXQteCcsJ3JlcGVhdC15Jywnbm8tcmVwZWF0J10sJ2JvcmRlcic6W3RydWUsJ2JvcmRlci1jb2xvcicsJ2JvcmRlci1zdHlsZScsJ2JvcmRlci13aWR0aCddLCdib3JkZXItYm90dG9tJzpbdHJ1ZSwnYm9yZGVyLWJvdHRvbS1jb2xvcicsJ2JvcmRlci1ib3R0b20tc3R5bGUnLCdib3JkZXItYm90dG9tLXdpZHRoJ10sJ2JvcmRlci1ib3R0b20tY29sb3InOmNzc0NvbG9yLCdib3JkZXItYm90dG9tLXN0eWxlJzpjc3NCb3JkZXJTdHlsZSwnYm9yZGVyLWJvdHRvbS13aWR0aCc6Y3NzV2lkdGgsJ2JvcmRlci1jb2xsYXBzZSc6Wydjb2xsYXBzZScsJ3NlcGFyYXRlJ10sJ2JvcmRlci1jb2xvcic6Wyd0cmFuc3BhcmVudCcsNCxjc3NDb2xvcl0sJ2JvcmRlci1sZWZ0JzpbdHJ1ZSwnYm9yZGVyLWxlZnQtY29sb3InLCdib3JkZXItbGVmdC1zdHlsZScsJ2JvcmRlci1sZWZ0LXdpZHRoJ10sJ2JvcmRlci1sZWZ0LWNvbG9yJzpjc3NDb2xvciwnYm9yZGVyLWxlZnQtc3R5bGUnOmNzc0JvcmRlclN0eWxlLCdib3JkZXItbGVmdC13aWR0aCc6Y3NzV2lkdGgsJ2JvcmRlci1yaWdodCc6W3RydWUsJ2JvcmRlci1yaWdodC1jb2xvcicsJ2JvcmRlci1yaWdodC1zdHlsZScsJ2JvcmRlci1yaWdodC13aWR0aCddLCdib3JkZXItcmlnaHQtY29sb3InOmNzc0NvbG9yLCdib3JkZXItcmlnaHQtc3R5bGUnOmNzc0JvcmRlclN0eWxlLCdib3JkZXItcmlnaHQtd2lkdGgnOmNzc1dpZHRoLCdib3JkZXItc3BhY2luZyc6WzIsY3NzTGVuZ3RoXSwnYm9yZGVyLXN0eWxlJzpbNCxjc3NCb3JkZXJTdHlsZV0sJ2JvcmRlci10b3AnOlt0cnVlLCdib3JkZXItdG9wLWNvbG9yJywnYm9yZGVyLXRvcC1zdHlsZScsJ2JvcmRlci10b3Atd2lkdGgnXSwnYm9yZGVyLXRvcC1jb2xvcic6Y3NzQ29sb3IsJ2JvcmRlci10b3Atc3R5bGUnOmNzc0JvcmRlclN0eWxlLCdib3JkZXItdG9wLXdpZHRoJzpjc3NXaWR0aCwnYm9yZGVyLXdpZHRoJzpbNCxjc3NXaWR0aF0sYm90dG9tOltjc3NMZW5ndGgsJ2F1dG8nXSwnY2FwdGlvbi1zaWRlJzpbJ2JvdHRvbScsJ2xlZnQnLCdyaWdodCcsJ3RvcCddLGNsZWFyOlsnYm90aCcsJ2xlZnQnLCdub25lJywncmlnaHQnXSxjbGlwOltjc3NTaGFwZSwnYXV0byddLGNvbG9yOmNzc0NvbG9yLGNvbnRlbnQ6WydvcGVuLXF1b3RlJywnY2xvc2UtcXVvdGUnLCduby1vcGVuLXF1b3RlJywnbm8tY2xvc2UtcXVvdGUnLGNzc1N0cmluZyxjc3NVcmwsY3NzQ291bnRlcixjc3NBdHRyXSwnY291bnRlci1pbmNyZW1lbnQnOltjc3NOYW1lLCdub25lJ10sJ2NvdW50ZXItcmVzZXQnOltjc3NOYW1lLCdub25lJ10sY3Vyc29yOltjc3NVcmwsJ2F1dG8nLCdjcm9zc2hhaXInLCdkZWZhdWx0JywnZS1yZXNpemUnLCdoZWxwJywnbW92ZScsJ24tcmVzaXplJywnbmUtcmVzaXplJywnbnctcmVzaXplJywncG9pbnRlcicsJ3MtcmVzaXplJywnc2UtcmVzaXplJywnc3ctcmVzaXplJywndy1yZXNpemUnLCd0ZXh0Jywnd2FpdCddLGRpcmVjdGlvbjpbJ2x0cicsJ3J0bCddLGRpc3BsYXk6WydibG9jaycsJ2NvbXBhY3QnLCdpbmxpbmUnLCdpbmxpbmUtYmxvY2snLCdpbmxpbmUtdGFibGUnLCdsaXN0LWl0ZW0nLCdtYXJrZXInLCdub25lJywncnVuLWluJywndGFibGUnLCd0YWJsZS1jYXB0aW9uJywndGFibGUtY2VsbCcsJ3RhYmxlLWNvbHVtbicsJ3RhYmxlLWNvbHVtbi1ncm91cCcsJ3RhYmxlLWZvb3Rlci1ncm91cCcsJ3RhYmxlLWhlYWRlci1ncm91cCcsJ3RhYmxlLXJvdycsJ3RhYmxlLXJvdy1ncm91cCddLCdlbXB0eS1jZWxscyc6WydzaG93JywnaGlkZSddLCdmbG9hdCc6WydsZWZ0Jywnbm9uZScsJ3JpZ2h0J10sZm9udDpbJ2NhcHRpb24nLCdpY29uJywnbWVudScsJ21lc3NhZ2UtYm94Jywnc21hbGwtY2FwdGlvbicsJ3N0YXR1cy1iYXInLHRydWUsJ2ZvbnQtc2l6ZScsJ2ZvbnQtc3R5bGUnLCdmb250LXdlaWdodCcsJ2ZvbnQtZmFtaWx5J10sJ2ZvbnQtZmFtaWx5Jzpjc3NDb21tYUxpc3QsJ2ZvbnQtc2l6ZSc6Wyd4eC1zbWFsbCcsJ3gtc21hbGwnLCdzbWFsbCcsJ21lZGl1bScsJ2xhcmdlJywneC1sYXJnZScsJ3h4LWxhcmdlJywnbGFyZ2VyJywnc21hbGxlcicsY3NzTGVuZ3RoXSwnZm9udC1zaXplLWFkanVzdCc6Wydub25lJyxjc3NOdW1iZXJdLCdmb250LXN0cmV0Y2gnOlsnbm9ybWFsJywnd2lkZXInLCduYXJyb3dlcicsJ3VsdHJhLWNvbmRlbnNlZCcsJ2V4dHJhLWNvbmRlbnNlZCcsJ2NvbmRlbnNlZCcsJ3NlbWktY29uZGVuc2VkJywnc2VtaS1leHBhbmRlZCcsJ2V4cGFuZGVkJywnZXh0cmEtZXhwYW5kZWQnXSwnZm9udC1zdHlsZSc6Wydub3JtYWwnLCdpdGFsaWMnLCdvYmxpcXVlJ10sJ2ZvbnQtdmFyaWFudCc6Wydub3JtYWwnLCdzbWFsbC1jYXBzJ10sJ2ZvbnQtd2VpZ2h0JzpbJ25vcm1hbCcsJ2JvbGQnLCdib2xkZXInLCdsaWdodGVyJyxjc3NOdW1iZXJdLGhlaWdodDpbY3NzTGVuZ3RoLCdhdXRvJ10sbGVmdDpbY3NzTGVuZ3RoLCdhdXRvJ10sJ2xldHRlci1zcGFjaW5nJzpbJ25vcm1hbCcsY3NzTGVuZ3RoXSwnbGluZS1oZWlnaHQnOlsnbm9ybWFsJyxjc3NMaW5lSGVpZ2h0XSwnbGlzdC1zdHlsZSc6W3RydWUsJ2xpc3Qtc3R5bGUtaW1hZ2UnLCdsaXN0LXN0eWxlLXBvc2l0aW9uJywnbGlzdC1zdHlsZS10eXBlJ10sJ2xpc3Qtc3R5bGUtaW1hZ2UnOlsnbm9uZScsY3NzVXJsXSwnbGlzdC1zdHlsZS1wb3NpdGlvbic6WydpbnNpZGUnLCdvdXRzaWRlJ10sJ2xpc3Qtc3R5bGUtdHlwZSc6WydjaXJjbGUnLCdkaXNjJywnc3F1YXJlJywnZGVjaW1hbCcsJ2RlY2ltYWwtbGVhZGluZy16ZXJvJywnbG93ZXItcm9tYW4nLCd1cHBlci1yb21hbicsJ2xvd2VyLWdyZWVrJywnbG93ZXItYWxwaGEnLCdsb3dlci1sYXRpbicsJ3VwcGVyLWFscGhhJywndXBwZXItbGF0aW4nLCdoZWJyZXcnLCdrYXRha2FuYScsJ2hpcmFnYW5hLWlyb2hhJywna2F0YWthbmEtb3JvaGEnLCdub25lJ10sbWFyZ2luOls0LGNzc01hcmdpbl0sJ21hcmdpbi1ib3R0b20nOmNzc01hcmdpbiwnbWFyZ2luLWxlZnQnOmNzc01hcmdpbiwnbWFyZ2luLXJpZ2h0Jzpjc3NNYXJnaW4sJ21hcmdpbi10b3AnOmNzc01hcmdpbiwnbWFya2VyLW9mZnNldCc6W2Nzc0xlbmd0aCwnYXV0byddLCdtYXgtaGVpZ2h0JzpbY3NzTGVuZ3RoLCdub25lJ10sJ21heC13aWR0aCc6W2Nzc0xlbmd0aCwnbm9uZSddLCdtaW4taGVpZ2h0Jzpjc3NMZW5ndGgsJ21pbi13aWR0aCc6Y3NzTGVuZ3RoLG9wYWNpdHk6Y3NzTnVtYmVyLG91dGxpbmU6W3RydWUsJ291dGxpbmUtY29sb3InLCdvdXRsaW5lLXN0eWxlJywnb3V0bGluZS13aWR0aCddLCdvdXRsaW5lLWNvbG9yJzpbJ2ludmVydCcsY3NzQ29sb3JdLCdvdXRsaW5lLXN0eWxlJzpbJ2Rhc2hlZCcsJ2RvdHRlZCcsJ2RvdWJsZScsJ2dyb292ZScsJ2luc2V0Jywnbm9uZScsJ291dHNldCcsJ3JpZGdlJywnc29saWQnXSwnb3V0bGluZS13aWR0aCc6Y3NzV2lkdGgsb3ZlcmZsb3c6Y3NzT3ZlcmZsb3csJ292ZXJmbG93LXgnOmNzc092ZXJmbG93LCdvdmVyZmxvdy15Jzpjc3NPdmVyZmxvdyxwYWRkaW5nOls0LGNzc0xlbmd0aF0sJ3BhZGRpbmctYm90dG9tJzpjc3NMZW5ndGgsJ3BhZGRpbmctbGVmdCc6Y3NzTGVuZ3RoLCdwYWRkaW5nLXJpZ2h0Jzpjc3NMZW5ndGgsJ3BhZGRpbmctdG9wJzpjc3NMZW5ndGgsJ3BhZ2UtYnJlYWstYWZ0ZXInOmNzc0JyZWFrLCdwYWdlLWJyZWFrLWJlZm9yZSc6Y3NzQnJlYWsscG9zaXRpb246WydhYnNvbHV0ZScsJ2ZpeGVkJywncmVsYXRpdmUnLCdzdGF0aWMnXSxxdW90ZXM6WzgsY3NzU3RyaW5nXSxyaWdodDpbY3NzTGVuZ3RoLCdhdXRvJ10sJ3RhYmxlLWxheW91dCc6WydhdXRvJywnZml4ZWQnXSwndGV4dC1hbGlnbic6WydjZW50ZXInLCdqdXN0aWZ5JywnbGVmdCcsJ3JpZ2h0J10sJ3RleHQtZGVjb3JhdGlvbic6Wydub25lJywndW5kZXJsaW5lJywnb3ZlcmxpbmUnLCdsaW5lLXRocm91Z2gnLCdibGluayddLCd0ZXh0LWluZGVudCc6Y3NzTGVuZ3RoLCd0ZXh0LXNoYWRvdyc6Wydub25lJyw0LFtjc3NDb2xvcixjc3NMZW5ndGhdXSwndGV4dC10cmFuc2Zvcm0nOlsnY2FwaXRhbGl6ZScsJ3VwcGVyY2FzZScsJ2xvd2VyY2FzZScsJ25vbmUnXSx0b3A6W2Nzc0xlbmd0aCwnYXV0byddLCd1bmljb2RlLWJpZGknOlsnbm9ybWFsJywnZW1iZWQnLCdiaWRpLW92ZXJyaWRlJ10sJ3ZlcnRpY2FsLWFsaWduJzpbJ2Jhc2VsaW5lJywnYm90dG9tJywnc3ViJywnc3VwZXInLCd0b3AnLCd0ZXh0LXRvcCcsJ21pZGRsZScsJ3RleHQtYm90dG9tJyxjc3NMZW5ndGhdLHZpc2liaWxpdHk6Wyd2aXNpYmxlJywnaGlkZGVuJywnY29sbGFwc2UnXSwnd2hpdGUtc3BhY2UnOlsnbm9ybWFsJywnbm93cmFwJywncHJlJywncHJlLWxpbmUnLCdwcmUtd3JhcCcsJ2luaGVyaXQnXSx3aWR0aDpbY3NzTGVuZ3RoLCdhdXRvJ10sJ3dvcmQtc3BhY2luZyc6Wydub3JtYWwnLGNzc0xlbmd0aF0sJ3dvcmQtd3JhcCc6WydicmVhay13b3JkJywnbm9ybWFsJ10sJ3otaW5kZXgnOlsnYXV0bycsY3NzTnVtYmVyXX07ZnVuY3Rpb24gc3R5bGVBdHRyaWJ1dGUoKXt2YXIgdjt3aGlsZShuZXh0dG9rZW4uaWQ9PT0nKid8fG5leHR0b2tlbi5pZD09PScjJ3x8bmV4dHRva2VuLnZhbHVlPT09J18nKXtpZighb3B0aW9uLmNzcyl7d2FybmluZygiVW5leHBlY3RlZCAne2F9Jy4iLG5leHR0b2tlbixuZXh0dG9rZW4udmFsdWUpO30KYWR2YW5jZSgpO30KaWYobmV4dHRva2VuLmlkPT09Jy0nKXtpZighb3B0aW9uLmNzcyl7d2FybmluZygiVW5leHBlY3RlZCAne2F9Jy4iLG5leHR0b2tlbixuZXh0dG9rZW4udmFsdWUpO30KYWR2YW5jZSgnLScpO2lmKCFuZXh0dG9rZW4uaWRlbnRpZmllcil7d2FybmluZygiRXhwZWN0ZWQgYSBub24tc3RhbmRhcmQgc3R5bGUgYXR0cmlidXRlIGFuZCBpbnN0ZWFkIHNhdyAne2F9Jy4iLG5leHR0b2tlbixuZXh0dG9rZW4udmFsdWUpO30KYWR2YW5jZSgpO3JldHVybiBjc3NBbnk7fWVsc2V7aWYoIW5leHR0b2tlbi5pZGVudGlmaWVyKXt3YXJuaW5nKCJFeGNlcHRlZCBhIHN0eWxlIGF0dHJpYnV0ZSwgYW5kIGluc3RlYWQgc2F3ICd7YX0nLiIsbmV4dHRva2VuLG5leHR0b2tlbi52YWx1ZSk7fWVsc2V7aWYoaXNfb3duKGNzc0F0dHJpYnV0ZURhdGEsbmV4dHRva2VuLnZhbHVlKSl7dj1jc3NBdHRyaWJ1dGVEYXRhW25leHR0b2tlbi52YWx1ZV07fWVsc2V7dj1jc3NBbnk7aWYoIW9wdGlvbi5jc3Mpe3dhcm5pbmcoIlVucmVjb2duaXplZCBzdHlsZSBhdHRyaWJ1dGUgJ3thfScuIixuZXh0dG9rZW4sbmV4dHRva2VuLnZhbHVlKTt9fX0KYWR2YW5jZSgpO3JldHVybiB2O319CmZ1bmN0aW9uIHN0eWxlVmFsdWUodil7dmFyIGk9MCxuLG9uY2UsbWF0Y2gscm91bmQsc3RhcnQ9MCx2aTtzd2l0Y2godHlwZW9mIHYpe2Nhc2UnZnVuY3Rpb24nOnJldHVybiB2KCk7Y2FzZSdzdHJpbmcnOmlmKG5leHR0b2tlbi5pZGVudGlmaWVyJiZuZXh0dG9rZW4udmFsdWU9PT12KXthZHZhbmNlKCk7cmV0dXJuIHRydWU7fQpyZXR1cm4gZmFsc2U7fQpmb3IoOzspe2lmKGk+PXYubGVuZ3RoKXtyZXR1cm4gZmFsc2U7fQp2aT12W2ldO2krPTE7aWYodmk9PT10cnVlKXticmVhazt9ZWxzZSBpZih0eXBlb2Ygdmk9PT0nbnVtYmVyJyl7bj12aTt2aT12W2ldO2krPTE7fWVsc2V7bj0xO30KbWF0Y2g9ZmFsc2U7d2hpbGUobj4wKXtpZihzdHlsZVZhbHVlKHZpKSl7bWF0Y2g9dHJ1ZTtuLT0xO31lbHNle2JyZWFrO319CmlmKG1hdGNoKXtyZXR1cm4gdHJ1ZTt9fQpzdGFydD1pO29uY2U9W107Zm9yKDs7KXtyb3VuZD1mYWxzZTtmb3IoaT1zdGFydDtpPHYubGVuZ3RoO2krPTEpe2lmKCFvbmNlW2ldKXtpZihzdHlsZVZhbHVlKGNzc0F0dHJpYnV0ZURhdGFbdltpXV0pKXttYXRjaD10cnVlO3JvdW5kPXRydWU7b25jZVtpXT10cnVlO2JyZWFrO319fQppZighcm91bmQpe3JldHVybiBtYXRjaDt9fX0KZnVuY3Rpb24gc3R5bGVDaGlsZCgpe2lmKG5leHR0b2tlbi5pZD09PScobnVtYmVyKScpe2FkdmFuY2UoKTtpZihuZXh0dG9rZW4udmFsdWU9PT0nbicmJm5leHR0b2tlbi5pZGVudGlmaWVyKXthZGphY2VudCgpO2FkdmFuY2UoKTtpZihuZXh0dG9rZW4uaWQ9PT0nKycpe2FkamFjZW50KCk7YWR2YW5jZSgnKycpO2FkamFjZW50KCk7YWR2YW5jZSgnKG51bWJlciknKTt9fQpyZXR1cm47fWVsc2V7c3dpdGNoKG5leHR0b2tlbi52YWx1ZSl7Y2FzZSdvZGQnOmNhc2UnZXZlbic6aWYobmV4dHRva2VuLmlkZW50aWZpZXIpe2FkdmFuY2UoKTtyZXR1cm47fX19Cndhcm5pbmcoIlVuZXhwZWN0ZWQgdG9rZW4gJ3thfScuIixuZXh0dG9rZW4sbmV4dHRva2VuLnZhbHVlKTt9CmZ1bmN0aW9uIHN1YnN0eWxlKCl7dmFyIHY7Zm9yKDs7KXtpZihuZXh0dG9rZW4uaWQ9PT0nfSd8fG5leHR0b2tlbi5pZD09PScoZW5kKSd8fHhxdW90ZSYmbmV4dHRva2VuLmlkPT09eHF1b3RlKXtyZXR1cm47fQp3aGlsZShuZXh0dG9rZW4uaWQ9PT0nOycpe3dhcm5pbmcoIk1pc3BsYWNlZCAnOycuIik7YWR2YW5jZSgnOycpO30Kdj1zdHlsZUF0dHJpYnV0ZSgpO2FkdmFuY2UoJzonKTtpZihuZXh0dG9rZW4uaWRlbnRpZmllciYmbmV4dHRva2VuLnZhbHVlPT09J2luaGVyaXQnKXthZHZhbmNlKCk7fWVsc2V7aWYoIXN0eWxlVmFsdWUodikpe3dhcm5pbmcoIlVuZXhwZWN0ZWQgdG9rZW4gJ3thfScuIixuZXh0dG9rZW4sbmV4dHRva2VuLnZhbHVlKTthZHZhbmNlKCk7fX0KaWYobmV4dHRva2VuLmlkPT09JyEnKXthZHZhbmNlKCchJyk7YWRqYWNlbnQoKTtpZihuZXh0dG9rZW4uaWRlbnRpZmllciYmbmV4dHRva2VuLnZhbHVlPT09J2ltcG9ydGFudCcpe2FkdmFuY2UoKTt9ZWxzZXt3YXJuaW5nKCJFeHBlY3RlZCAne2F9JyBhbmQgaW5zdGVhZCBzYXcgJ3tifScuIixuZXh0dG9rZW4sJ2ltcG9ydGFudCcsbmV4dHRva2VuLnZhbHVlKTt9fQppZihuZXh0dG9rZW4uaWQ9PT0nfSd8fG5leHR0b2tlbi5pZD09PXhxdW90ZSl7d2FybmluZygiTWlzc2luZyAne2F9Jy4iLG5leHR0b2tlbiwnOycpO31lbHNle2FkdmFuY2UoJzsnKTt9fX0KZnVuY3Rpb24gc3R5bGVTZWxlY3Rvcigpe2lmKG5leHR0b2tlbi5pZGVudGlmaWVyKXtpZighaXNfb3duKGh0bWx0YWcsbmV4dHRva2VuLnZhbHVlKSl7d2FybmluZygiRXhwZWN0ZWQgYSB0YWdOYW1lLCBhbmQgaW5zdGVhZCBzYXcge2F9LiIsbmV4dHRva2VuLG5leHR0b2tlbi52YWx1ZSk7fQphZHZhbmNlKCk7fWVsc2V7c3dpdGNoKG5leHR0b2tlbi5pZCl7Y2FzZSc+JzpjYXNlJysnOmFkdmFuY2UoKTtzdHlsZVNlbGVjdG9yKCk7YnJlYWs7Y2FzZSc6JzphZHZhbmNlKCc6Jyk7c3dpdGNoKG5leHR0b2tlbi52YWx1ZSl7Y2FzZSdhY3RpdmUnOmNhc2UnYWZ0ZXInOmNhc2UnYmVmb3JlJzpjYXNlJ2NoZWNrZWQnOmNhc2UnZGlzYWJsZWQnOmNhc2UnZW1wdHknOmNhc2UnZW5hYmxlZCc6Y2FzZSdmaXJzdC1jaGlsZCc6Y2FzZSdmaXJzdC1sZXR0ZXInOmNhc2UnZmlyc3QtbGluZSc6Y2FzZSdmaXJzdC1vZi10eXBlJzpjYXNlJ2ZvY3VzJzpjYXNlJ2hvdmVyJzpjYXNlJ2xhc3Qtb2YtdHlwZSc6Y2FzZSdsaW5rJzpjYXNlJ29ubHktb2YtdHlwZSc6Y2FzZSdyb290JzpjYXNlJ3RhcmdldCc6Y2FzZSd2aXNpdGVkJzphZHZhbmNlKCk7YnJlYWs7Y2FzZSdsYW5nJzphZHZhbmNlKCk7YWR2YW5jZSgnKCcpO2lmKCFuZXh0dG9rZW4uaWRlbnRpZmllcil7d2FybmluZygiRXhwZWN0ZWQgYSBsYW5nIGNvZGUsIGFuZCBpbnN0ZWFkIHNhdyA6e2F9LiIsbmV4dHRva2VuLG5leHR0b2tlbi52YWx1ZSk7fQphZHZhbmNlKCcpJyk7YnJlYWs7Y2FzZSdudGgtY2hpbGQnOmNhc2UnbnRoLWxhc3QtY2hpbGQnOmNhc2UnbnRoLWxhc3Qtb2YtdHlwZSc6Y2FzZSdudGgtb2YtdHlwZSc6YWR2YW5jZSgpO2FkdmFuY2UoJygnKTtzdHlsZUNoaWxkKCk7YWR2YW5jZSgnKScpO2JyZWFrO2Nhc2Unbm90JzphZHZhbmNlKCk7YWR2YW5jZSgnKCcpO2lmKG5leHR0b2tlbi5pZD09PSc6JyYmcGVlaygwKS52YWx1ZT09PSdub3QnKXt3YXJuaW5nKCJOZXN0ZWQgbm90LiIpO30Kc3R5bGVTZWxlY3RvcigpO2FkdmFuY2UoJyknKTticmVhaztkZWZhdWx0Ondhcm5pbmcoIkV4cGVjdGVkIGEgcHNldWRvLCBhbmQgaW5zdGVhZCBzYXcgOnthfS4iLG5leHR0b2tlbixuZXh0dG9rZW4udmFsdWUpO30KYnJlYWs7Y2FzZScjJzphZHZhbmNlKCcjJyk7aWYoIW5leHR0b2tlbi5pZGVudGlmaWVyKXt3YXJuaW5nKCJFeHBlY3RlZCBhbiBpZCwgYW5kIGluc3RlYWQgc2F3ICN7YX0uIixuZXh0dG9rZW4sbmV4dHRva2VuLnZhbHVlKTt9CmFkdmFuY2UoKTticmVhaztjYXNlJyonOmFkdmFuY2UoJyonKTticmVhaztjYXNlJy4nOmFkdmFuY2UoJy4nKTtpZighbmV4dHRva2VuLmlkZW50aWZpZXIpe3dhcm5pbmcoIkV4cGVjdGVkIGEgY2xhc3MsIGFuZCBpbnN0ZWFkIHNhdyAjLnthfS4iLG5leHR0b2tlbixuZXh0dG9rZW4udmFsdWUpO30KYWR2YW5jZSgpO2JyZWFrO2Nhc2UnWyc6YWR2YW5jZSgnWycpO2lmKCFuZXh0dG9rZW4uaWRlbnRpZmllcil7d2FybmluZygiRXhwZWN0ZWQgYW4gYXR0cmlidXRlLCBhbmQgaW5zdGVhZCBzYXcgW3thfV0uIixuZXh0dG9rZW4sbmV4dHRva2VuLnZhbHVlKTt9CmFkdmFuY2UoKTtpZihuZXh0dG9rZW4uaWQ9PT0nPSd8fG5leHR0b2tlbi52YWx1ZT09PSd+PSd8fG5leHR0b2tlbi52YWx1ZT09PSckPSd8fG5leHR0b2tlbi52YWx1ZT09PSd8PSd8fG5leHR0b2tlbi5pZD09PScqPSd8fG5leHR0b2tlbi5pZD09PSdePScpe2FkdmFuY2UoKTtpZihuZXh0dG9rZW4udHlwZSE9PScoc3RyaW5nKScpe3dhcm5pbmcoIkV4cGVjdGVkIGEgc3RyaW5nLCBhbmQgaW5zdGVhZCBzYXcge2F9LiIsbmV4dHRva2VuLG5leHR0b2tlbi52YWx1ZSk7fQphZHZhbmNlKCk7fQphZHZhbmNlKCddJyk7YnJlYWs7ZGVmYXVsdDplcnJvcigiRXhwZWN0ZWQgYSBDU1Mgc2VsZWN0b3IsIGFuZCBpbnN0ZWFkIHNhdyB7YX0uIixuZXh0dG9rZW4sbmV4dHRva2VuLnZhbHVlKTt9fX0KZnVuY3Rpb24gc3R5bGVQYXR0ZXJuKCl7dmFyIG5hbWU7aWYobmV4dHRva2VuLmlkPT09J3snKXt3YXJuaW5nKCJFeHBlY3RlZCBhIHN0eWxlIHBhdHRlcm4sIGFuZCBpbnN0ZWFkIHNhdyAne2F9Jy4iLG5leHR0b2tlbixuZXh0dG9rZW4uaWQpO31lbHNlIGlmKG5leHR0b2tlbi5pZD09PSdAJyl7YWR2YW5jZSgnQCcpO25hbWU9bmV4dHRva2VuLnZhbHVlO2lmKG5leHR0b2tlbi5pZGVudGlmaWVyJiZhdHJ1bGVbbmFtZV09PT10cnVlKXthZHZhbmNlKCk7cmV0dXJuIG5hbWU7fQp3YXJuaW5nKCJFeHBlY3RlZCBhbiBhdC1ydWxlLCBhbmQgaW5zdGVhZCBzYXcgQHthfS4iLG5leHR0b2tlbixuYW1lKTt9CmZvcig7Oyl7c3R5bGVTZWxlY3RvcigpO2lmKG5leHR0b2tlbi5pZD09PSc8Lyd8fG5leHR0b2tlbi5pZD09PSd7J3x8bmV4dHRva2VuLmlkPT09JyhlbmQpJyl7cmV0dXJuJyc7fQppZihuZXh0dG9rZW4uaWQ9PT0nLCcpe2NvbW1hKCk7fX19CmZ1bmN0aW9uIHN0eWxlcygpe3ZhciBpO3doaWxlKG5leHR0b2tlbi5pZD09PSdAJyl7aT1wZWVrKCk7aWYoaS5pZGVudGlmaWVyJiZpLnZhbHVlPT09J2ltcG9ydCcpe2FkdmFuY2UoJ0AnKTthZHZhbmNlKCk7aWYoIWNzc1VybCgpKXt3YXJuaW5nKCJFeHBlY3RlZCAne2F9JyBhbmQgaW5zdGVhZCBzYXcgJ3tifScuIixuZXh0dG9rZW4sJ3VybCcsbmV4dHRva2VuLnZhbHVlKTthZHZhbmNlKCk7fQphZHZhbmNlKCc7Jyk7fWVsc2V7YnJlYWs7fX0Kd2hpbGUobmV4dHRva2VuLmlkIT09JzwvJyYmbmV4dHRva2VuLmlkIT09JyhlbmQpJyl7c3R5bGVQYXR0ZXJuKCk7eG1vZGU9J3N0eWxlcHJvcGVydHknO2lmKG5leHR0b2tlbi5pZD09PSc7Jyl7YWR2YW5jZSgnOycpO31lbHNle2FkdmFuY2UoJ3snKTtzdWJzdHlsZSgpO3htb2RlPSdzdHlsZSc7YWR2YW5jZSgnfScpO319fQpmdW5jdGlvbiBkb0JlZ2luKG4pe2lmKG4hPT0naHRtbCcmJiFvcHRpb24uZnJhZ21lbnQpe2lmKG49PT0nZGl2JyYmb3B0aW9uLmFkc2FmZSl7ZXJyb3IoIkFEU0FGRTogVXNlIHRoZSBmcmFnbWVudCBvcHRpb24uIik7fWVsc2V7ZXJyb3IoIkV4cGVjdGVkICd7YX0nIGFuZCBpbnN0ZWFkIHNhdyAne2J9Jy4iLHRva2VuLCdodG1sJyxuKTt9fQppZihvcHRpb24uYWRzYWZlKXtpZihuPT09J2h0bWwnKXtlcnJvcigiQ3VycmVudGx5LCBBRHNhZmUgZG9lcyBub3Qgb3BlcmF0ZSBvbiB3aG9sZSBIVE1MIGRvY3VtZW50cy4gSXQgb3BlcmF0ZXMgb24gPGRpdj4gZnJhZ21lbnRzIGFuZCAuanMgZmlsZXMuIix0b2tlbik7fQppZihvcHRpb24uZnJhZ21lbnQpe2lmKG4hPT0nZGl2Jyl7ZXJyb3IoIkFEc2FmZSB2aW9sYXRpb246IFdyYXAgdGhlIHdpZGdldCBpbiBhIGRpdi4iLHRva2VuKTt9fWVsc2V7ZXJyb3IoIlVzZSB0aGUgZnJhZ21lbnQgb3B0aW9uLiIsdG9rZW4pO319Cm9wdGlvbi5icm93c2VyPXRydWU7YXNzdW1lKCk7fQpmdW5jdGlvbiBkb0F0dHJpYnV0ZShuLGEsdil7dmFyIHUseDtpZihhPT09J2lkJyl7dT10eXBlb2Ygdj09PSdzdHJpbmcnP3YudG9VcHBlckNhc2UoKTonJztpZihpZHNbdV09PT10cnVlKXt3YXJuaW5nKCJEdXBsaWNhdGUgaWQ9J3thfScuIixuZXh0dG9rZW4sdik7fQppZihvcHRpb24uYWRzYWZlKXtpZihhZHNhZmVfaWQpe2lmKHYuc2xpY2UoMCxhZHNhZmVfaWQubGVuZ3RoKSE9PWFkc2FmZV9pZCl7d2FybmluZygiQURzYWZlIHZpb2xhdGlvbjogQW4gaWQgbXVzdCBoYXZlIGEgJ3thfScgcHJlZml4IixuZXh0dG9rZW4sYWRzYWZlX2lkKTt9ZWxzZSBpZighL15bQS1aXStfW0EtWl0rJC8udGVzdCh2KSl7d2FybmluZygiQURTQUZFIHZpb2xhdGlvbjogYmFkIGlkLiIpO319ZWxzZXthZHNhZmVfaWQ9djtpZighL15bQS1aXStfJC8udGVzdCh2KSl7d2FybmluZygiQURTQUZFIHZpb2xhdGlvbjogYmFkIGlkLiIpO319fQp4PXYuc2VhcmNoKGR4KTtpZih4Pj0wKXt3YXJuaW5nKCJVbmV4cGVjdGVkIGNoYXJhY3RlciAne2F9JyBpbiB7Yn0uIix0b2tlbix2LmNoYXJBdCh4KSxhKTt9Cmlkc1t1XT10cnVlO31lbHNlIGlmKGE9PT0nY2xhc3MnfHxhPT09J3R5cGUnfHxhPT09J25hbWUnKXt4PXYuc2VhcmNoKHF4KTtpZih4Pj0wKXt3YXJuaW5nKCJVbmV4cGVjdGVkIGNoYXJhY3RlciAne2F9JyBpbiB7Yn0uIix0b2tlbix2LmNoYXJBdCh4KSxhKTt9Cmlkc1t1XT10cnVlO31lbHNlIGlmKGE9PT0naHJlZid8fGE9PT0nYmFja2dyb3VuZCd8fGE9PT0nY29udGVudCd8fGE9PT0nZGF0YSd8fGEuaW5kZXhPZignc3JjJyk+PTB8fGEuaW5kZXhPZigndXJsJyk+PTApe2lmKG9wdGlvbi5zYWZlJiZ1eC50ZXN0KHYpKXtlcnJvcigiQURzYWZlIFVSTCB2aW9sYXRpb24uIik7fQp1cmxzLnB1c2godik7fWVsc2UgaWYoYT09PSdmb3InKXtpZihvcHRpb24uYWRzYWZlKXtpZihhZHNhZmVfaWQpe2lmKHYuc2xpY2UoMCxhZHNhZmVfaWQubGVuZ3RoKSE9PWFkc2FmZV9pZCl7d2FybmluZygiQURzYWZlIHZpb2xhdGlvbjogQW4gaWQgbXVzdCBoYXZlIGEgJ3thfScgcHJlZml4IixuZXh0dG9rZW4sYWRzYWZlX2lkKTt9ZWxzZSBpZighL15bQS1aXStfW0EtWl0rJC8udGVzdCh2KSl7d2FybmluZygiQURTQUZFIHZpb2xhdGlvbjogYmFkIGlkLiIpO319ZWxzZXt3YXJuaW5nKCJBRFNBRkUgdmlvbGF0aW9uOiBiYWQgaWQuIik7fX19ZWxzZSBpZihhPT09J25hbWUnKXtpZihvcHRpb24uYWRzYWZlJiZ2LmluZGV4T2YoJ18nKT49MCl7d2FybmluZygiQURzYWZlIG5hbWUgdmlvbGF0aW9uLiIpO319fQpmdW5jdGlvbiBkb1RhZyhuLGEpe3ZhciBpLHQ9aHRtbHRhZ1tuXSx4O3NyYz1mYWxzZTtpZighdCl7ZXJyb3IoIlVucmVjb2duaXplZCB0YWcgJzx7YX0+Jy4iLG5leHR0b2tlbixuPT09bi50b0xvd2VyQ2FzZSgpP246bisnIChjYXBpdGFsaXphdGlvbiBlcnJvciknKTt9CmlmKHN0YWNrLmxlbmd0aD4wKXtpZihuPT09J2h0bWwnKXtlcnJvcigiVG9vIG1hbnkgPGh0bWw+IHRhZ3MuIix0b2tlbik7fQp4PXQucGFyZW50O2lmKHgpe2lmKHguaW5kZXhPZignICcrc3RhY2tbc3RhY2subGVuZ3RoLTFdLm5hbWUrJyAnKTwwKXtlcnJvcigiQSAnPHthfT4nIG11c3QgYmUgd2l0aGluICc8e2J9PicuIix0b2tlbixuLHgpO319ZWxzZSBpZighb3B0aW9uLmFkc2FmZSYmIW9wdGlvbi5mcmFnbWVudCl7aT1zdGFjay5sZW5ndGg7ZG97aWYoaTw9MCl7ZXJyb3IoIkEgJzx7YX0+JyBtdXN0IGJlIHdpdGhpbiAnPHtifT4nLiIsdG9rZW4sbiwnYm9keScpO30KaS09MTt9d2hpbGUoc3RhY2tbaV0ubmFtZSE9PSdib2R5Jyk7fX0Kc3dpdGNoKG4pe2Nhc2UnZGl2JzppZihvcHRpb24uYWRzYWZlJiZzdGFjay5sZW5ndGg9PT0xJiYhYWRzYWZlX2lkKXt3YXJuaW5nKCJBRFNBRkUgdmlvbGF0aW9uOiBtaXNzaW5nIElEXy4iKTt9CmJyZWFrO2Nhc2Unc2NyaXB0Jzp4bW9kZT0nc2NyaXB0JzthZHZhbmNlKCc+Jyk7aW5kZW50PW5leHR0b2tlbi5mcm9tO2lmKGEubGFuZyl7d2FybmluZygibGFuZyBpcyBkZXByZWNhdGVkLiIsdG9rZW4pO30KaWYob3B0aW9uLmFkc2FmZSYmc3RhY2subGVuZ3RoIT09MSl7d2FybmluZygiQURzYWZlIHNjcmlwdCBwbGFjZW1lbnQgdmlvbGF0aW9uLiIsdG9rZW4pO30KaWYoYS5zcmMpe2lmKG9wdGlvbi5hZHNhZmUmJighYWRzYWZlX21heXx8IWFwcHJvdmVkW2Euc3JjXSkpe3dhcm5pbmcoIkFEc2FmZSB1bmFwcHJvdmVkIHNjcmlwdCBzb3VyY2UuIix0b2tlbik7fQppZihhLnR5cGUpe3dhcm5pbmcoInR5cGUgaXMgdW5uZWNlc3NhcnkuIix0b2tlbik7fX1lbHNle2lmKGFkc2FmZV93ZW50KXtlcnJvcigiQURzYWZlIHNjcmlwdCB2aW9sYXRpb24uIix0b2tlbik7fQpzdGF0ZW1lbnRzKCdzY3JpcHQnKTt9Cnhtb2RlPSdodG1sJzthZHZhbmNlKCc8LycpO2lmKCFuZXh0dG9rZW4uaWRlbnRpZmllciYmbmV4dHRva2VuLnZhbHVlIT09J3NjcmlwdCcpe3dhcm5pbmcoIkV4cGVjdGVkICd7YX0nIGFuZCBpbnN0ZWFkIHNhdyAne2J9Jy4iLG5leHR0b2tlbiwnc2NyaXB0JyxuZXh0dG9rZW4udmFsdWUpO30KYWR2YW5jZSgpO3htb2RlPSdvdXRlcic7YnJlYWs7Y2FzZSdzdHlsZSc6eG1vZGU9J3N0eWxlJzthZHZhbmNlKCc+Jyk7c3R5bGVzKCk7eG1vZGU9J2h0bWwnO2FkdmFuY2UoJzwvJyk7aWYoIW5leHR0b2tlbi5pZGVudGlmaWVyJiZuZXh0dG9rZW4udmFsdWUhPT0nc3R5bGUnKXt3YXJuaW5nKCJFeHBlY3RlZCAne2F9JyBhbmQgaW5zdGVhZCBzYXcgJ3tifScuIixuZXh0dG9rZW4sJ3N0eWxlJyxuZXh0dG9rZW4udmFsdWUpO30KYWR2YW5jZSgpO3htb2RlPSdvdXRlcic7YnJlYWs7Y2FzZSdpbnB1dCc6c3dpdGNoKGEudHlwZSl7Y2FzZSdyYWRpbyc6Y2FzZSdjaGVja2JveCc6Y2FzZSdidXR0b24nOmNhc2UncmVzZXQnOmNhc2Unc3VibWl0JzpicmVhaztjYXNlJ3RleHQnOmNhc2UnZmlsZSc6Y2FzZSdwYXNzd29yZCc6Y2FzZSdmaWxlJzpjYXNlJ2hpZGRlbic6Y2FzZSdpbWFnZSc6aWYob3B0aW9uLmFkc2FmZSYmYS5hdXRvY29tcGxldGUhPT0nb2ZmJyl7d2FybmluZygiQURzYWZlIGF1dG9jb21wbGV0ZSB2aW9sYXRpb24uIik7fQpicmVhaztkZWZhdWx0Ondhcm5pbmcoIkJhZCBpbnB1dCB0eXBlLiIpO30KYnJlYWs7Y2FzZSdhcHBsZXQnOmNhc2UnYm9keSc6Y2FzZSdlbWJlZCc6Y2FzZSdmcmFtZSc6Y2FzZSdmcmFtZXNldCc6Y2FzZSdoZWFkJzpjYXNlJ2lmcmFtZSc6Y2FzZSdub2VtYmVkJzpjYXNlJ25vZnJhbWVzJzpjYXNlJ29iamVjdCc6Y2FzZSdwYXJhbSc6aWYob3B0aW9uLmFkc2FmZSl7d2FybmluZygiQURzYWZlIHZpb2xhdGlvbjogRGlzYWxsb3dlZCB0YWc6ICIrbik7fQpicmVhazt9fQpmdW5jdGlvbiBjbG9zZXRhZyhuKXtyZXR1cm4nPC8nK24rJz4nO30KZnVuY3Rpb24gaHRtbCgpe3ZhciBhLGF0dHJpYnV0ZXMsZSxuLHEsdCx2LHc9b3B0aW9uLndoaXRlLHdtb2RlO3htb2RlPSdodG1sJzt4cXVvdGU9Jyc7c3RhY2s9bnVsbDtmb3IoOzspe3N3aXRjaChuZXh0dG9rZW4udmFsdWUpe2Nhc2UnPCc6eG1vZGU9J2h0bWwnO2FkdmFuY2UoJzwnKTthdHRyaWJ1dGVzPXt9O3Q9bmV4dHRva2VuO2lmKCF0LmlkZW50aWZpZXIpe3dhcm5pbmcoIkJhZCBpZGVudGlmaWVyIHthfS4iLHQsdC52YWx1ZSk7fQpuPXQudmFsdWU7aWYob3B0aW9uLmNhcCl7bj1uLnRvTG93ZXJDYXNlKCk7fQp0Lm5hbWU9bjthZHZhbmNlKCk7aWYoIXN0YWNrKXtzdGFjaz1bXTtkb0JlZ2luKG4pO30Kdj1odG1sdGFnW25dO2lmKHR5cGVvZiB2IT09J29iamVjdCcpe2Vycm9yKCJVbnJlY29nbml6ZWQgdGFnICc8e2F9PicuIix0LG4pO30KZT12LmVtcHR5O3QudHlwZT1uO2Zvcig7Oyl7aWYobmV4dHRva2VuLmlkPT09Jy8nKXthZHZhbmNlKCcvJyk7aWYobmV4dHRva2VuLmlkIT09Jz4nKXt3YXJuaW5nKCJFeHBlY3RlZCAne2F9JyBhbmQgaW5zdGVhZCBzYXcgJ3tifScuIixuZXh0dG9rZW4sJz4nLG5leHR0b2tlbi52YWx1ZSk7fQpicmVhazt9CmlmKG5leHR0b2tlbi5pZCYmbmV4dHRva2VuLmlkLnN1YnN0cigwLDEpPT09Jz4nKXticmVhazt9CmlmKCFuZXh0dG9rZW4uaWRlbnRpZmllcil7aWYobmV4dHRva2VuLmlkPT09JyhlbmQpJ3x8bmV4dHRva2VuLmlkPT09JyhlcnJvciknKXtlcnJvcigiTWlzc2luZyAnPicuIixuZXh0dG9rZW4pO30Kd2FybmluZygiQmFkIGlkZW50aWZpZXIuIik7fQpvcHRpb24ud2hpdGU9dHJ1ZTtub25hZGphY2VudCh0b2tlbixuZXh0dG9rZW4pO2E9bmV4dHRva2VuLnZhbHVlO29wdGlvbi53aGl0ZT13O2FkdmFuY2UoKTtpZighb3B0aW9uLmNhcCYmYSE9PWEudG9Mb3dlckNhc2UoKSl7d2FybmluZygiQXR0cmlidXRlICd7YX0nIG5vdCBhbGwgbG93ZXIgY2FzZS4iLG5leHR0b2tlbixhKTt9CmE9YS50b0xvd2VyQ2FzZSgpO3hxdW90ZT0nJztpZihpc19vd24oYXR0cmlidXRlcyxhKSl7d2FybmluZygiQXR0cmlidXRlICd7YX0nIHJlcGVhdGVkLiIsbmV4dHRva2VuLGEpO30KaWYoYS5zbGljZSgwLDIpPT09J29uJyl7aWYoIW9wdGlvbi5vbil7d2FybmluZygiQXZvaWQgSFRNTCBldmVudCBoYW5kbGVycy4iKTt9Cnhtb2RlPSdzY3JpcHRzdHJpbmcnO2FkdmFuY2UoJz0nKTtxPW5leHR0b2tlbi5pZDtpZihxIT09JyInJiZxIT09IiciKXtlcnJvcigiTWlzc2luZyBxdW90ZS4iKTt9CnhxdW90ZT1xO3dtb2RlPW9wdGlvbi53aGl0ZTtvcHRpb24ud2hpdGU9ZmFsc2U7YWR2YW5jZShxKTtzdGF0ZW1lbnRzKCdvbicpO29wdGlvbi53aGl0ZT13bW9kZTtpZihuZXh0dG9rZW4uaWQhPT1xKXtlcnJvcigiTWlzc2luZyBjbG9zZSBxdW90ZSBvbiBzY3JpcHQgYXR0cmlidXRlLiIpO30KeG1vZGU9J2h0bWwnO3hxdW90ZT0nJzthZHZhbmNlKHEpO3Y9ZmFsc2U7fWVsc2UgaWYoYT09PSdzdHlsZScpe3htb2RlPSdzY3JpcHRzdHJpbmcnO2FkdmFuY2UoJz0nKTtxPW5leHR0b2tlbi5pZDtpZihxIT09JyInJiZxIT09IiciKXtlcnJvcigiTWlzc2luZyBxdW90ZS4iKTt9Cnhtb2RlPSdzdHlsZXByb3BlcnR5Jzt4cXVvdGU9cTthZHZhbmNlKHEpO3N1YnN0eWxlKCk7eG1vZGU9J2h0bWwnO3hxdW90ZT0nJzthZHZhbmNlKHEpO3Y9ZmFsc2U7fWVsc2V7aWYobmV4dHRva2VuLmlkPT09Jz0nKXthZHZhbmNlKCc9Jyk7dj1uZXh0dG9rZW4udmFsdWU7aWYoIW5leHR0b2tlbi5pZGVudGlmaWVyJiZuZXh0dG9rZW4uaWQhPT0nIicmJm5leHR0b2tlbi5pZCE9PSdcJycmJm5leHR0b2tlbi50eXBlIT09JyhzdHJpbmcpJyYmbmV4dHRva2VuLnR5cGUhPT0nKG51bWJlciknJiZuZXh0dG9rZW4udHlwZSE9PScoY29sb3IpJyl7d2FybmluZygiRXhwZWN0ZWQgYW4gYXR0cmlidXRlIHZhbHVlIGFuZCBpbnN0ZWFkIHNhdyAne2F9Jy4iLHRva2VuLGEpO30KYWR2YW5jZSgpO31lbHNle3Y9dHJ1ZTt9fQphdHRyaWJ1dGVzW2FdPXY7ZG9BdHRyaWJ1dGUobixhLHYpO30KZG9UYWcobixhdHRyaWJ1dGVzKTtpZighZSl7c3RhY2sucHVzaCh0KTt9Cnhtb2RlPSdvdXRlcic7YWR2YW5jZSgnPicpO2JyZWFrO2Nhc2UnPC8nOnhtb2RlPSdodG1sJzthZHZhbmNlKCc8LycpO2lmKCFuZXh0dG9rZW4uaWRlbnRpZmllcil7d2FybmluZygiQmFkIGlkZW50aWZpZXIuIik7fQpuPW5leHR0b2tlbi52YWx1ZTtpZihvcHRpb24uY2FwKXtuPW4udG9Mb3dlckNhc2UoKTt9CmFkdmFuY2UoKTtpZighc3RhY2spe2Vycm9yKCJVbmV4cGVjdGVkICd7YX0nLiIsbmV4dHRva2VuLGNsb3NldGFnKG4pKTt9CnQ9c3RhY2sucG9wKCk7aWYoIXQpe2Vycm9yKCJVbmV4cGVjdGVkICd7YX0nLiIsbmV4dHRva2VuLGNsb3NldGFnKG4pKTt9CmlmKHQubmFtZSE9PW4pe2Vycm9yKCJFeHBlY3RlZCAne2F9JyBhbmQgaW5zdGVhZCBzYXcgJ3tifScuIixuZXh0dG9rZW4sY2xvc2V0YWcodC5uYW1lKSxjbG9zZXRhZyhuKSk7fQppZihuZXh0dG9rZW4uaWQhPT0nPicpe2Vycm9yKCJNaXNzaW5nICd7YX0nLiIsbmV4dHRva2VuLCc+Jyk7fQp4bW9kZT0nb3V0ZXInO2FkdmFuY2UoJz4nKTticmVhaztjYXNlJzwhJzppZihvcHRpb24uc2FmZSl7d2FybmluZygiQURzYWZlIEhUTUwgdmlvbGF0aW9uLiIpO30KeG1vZGU9J2h0bWwnO2Zvcig7Oyl7YWR2YW5jZSgpO2lmKG5leHR0b2tlbi5pZD09PSc+J3x8bmV4dHRva2VuLmlkPT09JyhlbmQpJyl7YnJlYWs7fQppZihuZXh0dG9rZW4udmFsdWUuaW5kZXhPZignLS0nKT49MCl7d2FybmluZygiVW5leHBlY3RlZCAtLS4iKTt9CmlmKG5leHR0b2tlbi52YWx1ZS5pbmRleE9mKCc8Jyk+PTApe3dhcm5pbmcoIlVuZXhwZWN0ZWQgPC4iKTt9CmlmKG5leHR0b2tlbi52YWx1ZS5pbmRleE9mKCc+Jyk+PTApe3dhcm5pbmcoIlVuZXhwZWN0ZWQgPi4iKTt9fQp4bW9kZT0nb3V0ZXInO2FkdmFuY2UoJz4nKTticmVhaztjYXNlJyhlbmQpJzpyZXR1cm47ZGVmYXVsdDppZihuZXh0dG9rZW4uaWQ9PT0nKGVuZCknKXtlcnJvcigiTWlzc2luZyAne2F9Jy4iLG5leHR0b2tlbiwnPC8nK3N0YWNrW3N0YWNrLmxlbmd0aC0xXS52YWx1ZSsnPicpO31lbHNle2FkdmFuY2UoKTt9fQppZihzdGFjayYmc3RhY2subGVuZ3RoPT09MCYmKG9wdGlvbi5hZHNhZmV8fCFvcHRpb24uZnJhZ21lbnR8fG5leHR0b2tlbi5pZD09PScoZW5kKScpKXticmVhazt9fQppZihuZXh0dG9rZW4uaWQhPT0nKGVuZCknKXtlcnJvcigiVW5leHBlY3RlZCBtYXRlcmlhbCBhZnRlciB0aGUgZW5kLiIpO319CnR5cGUoJyhudW1iZXIpJyxpZFZhbHVlKTt0eXBlKCcoc3RyaW5nKScsaWRWYWx1ZSk7c3ludGF4WycoaWRlbnRpZmllciknXT17dHlwZTonKGlkZW50aWZpZXIpJyxsYnA6MCxpZGVudGlmaWVyOnRydWUsbnVkOmZ1bmN0aW9uKCl7dmFyIHY9dGhpcy52YWx1ZSxzPXNjb3BlW3ZdLGY7aWYodHlwZW9mIHM9PT0nZnVuY3Rpb24nKXtzPXVuZGVmaW5lZDt9ZWxzZSBpZih0eXBlb2Ygcz09PSdib29sZWFuJyl7Zj1mdW5jdDtmdW5jdD1mdW5jdGlvbnNbMF07YWRkbGFiZWwodiwndmFyJyk7cz1mdW5jdDtmdW5jdD1mO30KaWYoZnVuY3Q9PT1zKXtzd2l0Y2goZnVuY3Rbdl0pe2Nhc2UndW51c2VkJzpmdW5jdFt2XT0ndmFyJzticmVhaztjYXNlJ2xhYmVsJzp3YXJuaW5nKCIne2F9JyBpcyBhIHN0YXRlbWVudCBsYWJlbC4iLHRva2VuLHYpO2JyZWFrO319ZWxzZSBpZihmdW5jdFsnKGdsb2JhbCknXSl7aWYob3B0aW9uLnVuZGVmJiZwcmVkZWZpbmVkW3ZdIT09J2Jvb2xlYW4nKXt3YXJuaW5nKCIne2F9JyBpcyBub3QgZGVmaW5lZC4iLHRva2VuLHYpO30Kbm90ZV9pbXBsaWVkKHRva2VuKTt9ZWxzZXtzd2l0Y2goZnVuY3Rbdl0pe2Nhc2UnY2xvc3VyZSc6Y2FzZSdmdW5jdGlvbic6Y2FzZSd2YXInOmNhc2UndW51c2VkJzp3YXJuaW5nKCIne2F9JyB1c2VkIG91dCBvZiBzY29wZS4iLHRva2VuLHYpO2JyZWFrO2Nhc2UnbGFiZWwnOndhcm5pbmcoIid7YX0nIGlzIGEgc3RhdGVtZW50IGxhYmVsLiIsdG9rZW4sdik7YnJlYWs7Y2FzZSdvdXRlcic6Y2FzZSdnbG9iYWwnOmJyZWFrO2RlZmF1bHQ6aWYocz09PXRydWUpe2Z1bmN0W3ZdPXRydWU7fWVsc2UgaWYocz09PW51bGwpe3dhcm5pbmcoIid7YX0nIGlzIG5vdCBhbGxvd2VkLiIsdG9rZW4sdik7bm90ZV9pbXBsaWVkKHRva2VuKTt9ZWxzZSBpZih0eXBlb2YgcyE9PSdvYmplY3QnKXtpZihvcHRpb24udW5kZWYpe3dhcm5pbmcoIid7YX0nIGlzIG5vdCBkZWZpbmVkLiIsdG9rZW4sdik7fWVsc2V7ZnVuY3Rbdl09dHJ1ZTt9Cm5vdGVfaW1wbGllZCh0b2tlbik7fWVsc2V7c3dpdGNoKHNbdl0pe2Nhc2UnZnVuY3Rpb24nOmNhc2UndmFyJzpjYXNlJ3VudXNlZCc6c1t2XT0nY2xvc3VyZSc7ZnVuY3Rbdl09c1snKGdsb2JhbCknXT8nZ2xvYmFsJzonb3V0ZXInO2JyZWFrO2Nhc2UnY2xvc3VyZSc6Y2FzZSdwYXJhbWV0ZXInOmZ1bmN0W3ZdPXNbJyhnbG9iYWwpJ10/J2dsb2JhbCc6J291dGVyJzticmVhaztjYXNlJ2xhYmVsJzp3YXJuaW5nKCIne2F9JyBpcyBhIHN0YXRlbWVudCBsYWJlbC4iLHRva2VuLHYpO319fX0KcmV0dXJuIHRoaXM7fSxsZWQ6ZnVuY3Rpb24oKXtlcnJvcigiRXhwZWN0ZWQgYW4gb3BlcmF0b3IgYW5kIGluc3RlYWQgc2F3ICd7YX0nLiIsbmV4dHRva2VuLG5leHR0b2tlbi52YWx1ZSk7fX07dHlwZSgnKHJlZ2V4cCknLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXM7fSk7ZGVsaW0oJyhlbmRsaW5lKScpO2RlbGltKCcoYmVnaW4pJyk7ZGVsaW0oJyhlbmQpJykucmVhY2g9dHJ1ZTtkZWxpbSgnPC8nKS5yZWFjaD10cnVlO2RlbGltKCc8IScpO2RlbGltKCc8IS0tJyk7ZGVsaW0oJy0tPicpO2RlbGltKCcoZXJyb3IpJykucmVhY2g9dHJ1ZTtkZWxpbSgnfScpLnJlYWNoPXRydWU7ZGVsaW0oJyknKTtkZWxpbSgnXScpO2RlbGltKCciJykucmVhY2g9dHJ1ZTtkZWxpbSgiJyIpLnJlYWNoPXRydWU7ZGVsaW0oJzsnKTtkZWxpbSgnOicpLnJlYWNoPXRydWU7ZGVsaW0oJywnKTtkZWxpbSgnIycpO2RlbGltKCdAJyk7cmVzZXJ2ZSgnZWxzZScpO3Jlc2VydmUoJ2Nhc2UnKS5yZWFjaD10cnVlO3Jlc2VydmUoJ2NhdGNoJyk7cmVzZXJ2ZSgnZGVmYXVsdCcpLnJlYWNoPXRydWU7cmVzZXJ2ZSgnZmluYWxseScpO3Jlc2VydmV2YXIoJ2FyZ3VtZW50cycpO3Jlc2VydmV2YXIoJ2V2YWwnKTtyZXNlcnZldmFyKCdmYWxzZScpO3Jlc2VydmV2YXIoJ0luZmluaXR5Jyk7cmVzZXJ2ZXZhcignTmFOJyk7cmVzZXJ2ZXZhcignbnVsbCcpO3Jlc2VydmV2YXIoJ3RoaXMnKTtyZXNlcnZldmFyKCd0cnVlJyk7cmVzZXJ2ZXZhcigndW5kZWZpbmVkJyk7YXNzaWdub3AoJz0nLCdhc3NpZ24nLDIwKTthc3NpZ25vcCgnKz0nLCdhc3NpZ25hZGQnLDIwKTthc3NpZ25vcCgnLT0nLCdhc3NpZ25zdWInLDIwKTthc3NpZ25vcCgnKj0nLCdhc3NpZ25tdWx0JywyMCk7YXNzaWdub3AoJy89JywnYXNzaWduZGl2JywyMCkubnVkPWZ1bmN0aW9uKCl7ZXJyb3IoIkEgcmVndWxhciBleHByZXNzaW9uIGxpdGVyYWwgY2FuIGJlIGNvbmZ1c2VkIHdpdGggJy89Jy4iKTt9O2Fzc2lnbm9wKCclPScsJ2Fzc2lnbm1vZCcsMjApO2JpdHdpc2Vhc3NpZ25vcCgnJj0nLCdhc3NpZ25iaXRhbmQnLDIwKTtiaXR3aXNlYXNzaWdub3AoJ3w9JywnYXNzaWduYml0b3InLDIwKTtiaXR3aXNlYXNzaWdub3AoJ149JywnYXNzaWduYml0eG9yJywyMCk7Yml0d2lzZWFzc2lnbm9wKCc8PD0nLCdhc3NpZ25zaGlmdGxlZnQnLDIwKTtiaXR3aXNlYXNzaWdub3AoJz4+PScsJ2Fzc2lnbnNoaWZ0cmlnaHQnLDIwKTtiaXR3aXNlYXNzaWdub3AoJz4+Pj0nLCdhc3NpZ25zaGlmdHJpZ2h0dW5zaWduZWQnLDIwKTtpbmZpeCgnPycsZnVuY3Rpb24obGVmdCx0aGF0KXt0aGF0LmxlZnQ9bGVmdDt0aGF0LnJpZ2h0PXBhcnNlKDEwKTthZHZhbmNlKCc6Jyk7dGhhdFsnZWxzZSddPXBhcnNlKDEwKTtyZXR1cm4gdGhhdDt9LDMwKTtpbmZpeCgnfHwnLCdvcicsNDApO2luZml4KCcmJicsJ2FuZCcsNTApO2JpdHdpc2UoJ3wnLCdiaXRvcicsNzApO2JpdHdpc2UoJ14nLCdiaXR4b3InLDgwKTtiaXR3aXNlKCcmJywnYml0YW5kJyw5MCk7cmVsYXRpb24oJz09JyxmdW5jdGlvbihsZWZ0LHJpZ2h0KXtpZihvcHRpb24uZXFlcWVxKXt3YXJuaW5nKCJFeHBlY3RlZCAne2F9JyBhbmQgaW5zdGVhZCBzYXcgJ3tifScuIix0aGlzLCc9PT0nLCc9PScpO31lbHNlIGlmKGlzUG9vclJlbGF0aW9uKGxlZnQpKXt3YXJuaW5nKCJVc2UgJ3thfScgdG8gY29tcGFyZSB3aXRoICd7Yn0nLiIsdGhpcywnPT09JyxsZWZ0LnZhbHVlKTt9ZWxzZSBpZihpc1Bvb3JSZWxhdGlvbihyaWdodCkpe3dhcm5pbmcoIlVzZSAne2F9JyB0byBjb21wYXJlIHdpdGggJ3tifScuIix0aGlzLCc9PT0nLHJpZ2h0LnZhbHVlKTt9CnJldHVybiB0aGlzO30pO3JlbGF0aW9uKCc9PT0nKTtyZWxhdGlvbignIT0nLGZ1bmN0aW9uKGxlZnQscmlnaHQpe2lmKG9wdGlvbi5lcWVxZXEpe3dhcm5pbmcoIkV4cGVjdGVkICd7YX0nIGFuZCBpbnN0ZWFkIHNhdyAne2J9Jy4iLHRoaXMsJyE9PScsJyE9Jyk7fWVsc2UgaWYoaXNQb29yUmVsYXRpb24obGVmdCkpe3dhcm5pbmcoIlVzZSAne2F9JyB0byBjb21wYXJlIHdpdGggJ3tifScuIix0aGlzLCchPT0nLGxlZnQudmFsdWUpO31lbHNlIGlmKGlzUG9vclJlbGF0aW9uKHJpZ2h0KSl7d2FybmluZygiVXNlICd7YX0nIHRvIGNvbXBhcmUgd2l0aCAne2J9Jy4iLHRoaXMsJyE9PScscmlnaHQudmFsdWUpO30KcmV0dXJuIHRoaXM7fSk7cmVsYXRpb24oJyE9PScpO3JlbGF0aW9uKCc8Jyk7cmVsYXRpb24oJz4nKTtyZWxhdGlvbignPD0nKTtyZWxhdGlvbignPj0nKTtiaXR3aXNlKCc8PCcsJ3NoaWZ0bGVmdCcsMTIwKTtiaXR3aXNlKCc+PicsJ3NoaWZ0cmlnaHQnLDEyMCk7Yml0d2lzZSgnPj4+Jywnc2hpZnRyaWdodHVuc2lnbmVkJywxMjApO2luZml4KCdpbicsJ2luJywxMjApO2luZml4KCdpbnN0YW5jZW9mJywnaW5zdGFuY2VvZicsMTIwKTtpbmZpeCgnKycsZnVuY3Rpb24obGVmdCx0aGF0KXt2YXIgcmlnaHQ9cGFyc2UoMTMwKTtpZihsZWZ0JiZyaWdodCYmbGVmdC5pZD09PScoc3RyaW5nKScmJnJpZ2h0LmlkPT09JyhzdHJpbmcpJyl7bGVmdC52YWx1ZSs9cmlnaHQudmFsdWU7bGVmdC5jaGFyYWN0ZXI9cmlnaHQuY2hhcmFjdGVyO2lmKGp4LnRlc3QobGVmdC52YWx1ZSkpe3dhcm5pbmcoIkphdmFTY3JpcHQgVVJMLiIsbGVmdCk7fQpyZXR1cm4gbGVmdDt9CnRoYXQubGVmdD1sZWZ0O3RoYXQucmlnaHQ9cmlnaHQ7cmV0dXJuIHRoYXQ7fSwxMzApO3ByZWZpeCgnKycsJ251bScpO2luZml4KCctJywnc3ViJywxMzApO3ByZWZpeCgnLScsJ25lZycpO2luZml4KCcqJywnbXVsdCcsMTQwKTtpbmZpeCgnLycsJ2RpdicsMTQwKTtpbmZpeCgnJScsJ21vZCcsMTQwKTtzdWZmaXgoJysrJywncG9zdGluYycpO3ByZWZpeCgnKysnLCdwcmVpbmMnKTtzeW50YXhbJysrJ10uZXhwcz10cnVlO3N1ZmZpeCgnLS0nLCdwb3N0ZGVjJyk7cHJlZml4KCctLScsJ3ByZWRlYycpO3N5bnRheFsnLS0nXS5leHBzPXRydWU7cHJlZml4KCdkZWxldGUnLGZ1bmN0aW9uKCl7dmFyIHA9cGFyc2UoMCk7aWYoIXB8fChwLmlkIT09Jy4nJiZwLmlkIT09J1snKSl7d2FybmluZygiRXhwZWN0ZWQgJ3thfScgYW5kIGluc3RlYWQgc2F3ICd7Yn0nLiIsbmV4dHRva2VuLCcuJyxuZXh0dG9rZW4udmFsdWUpO30KdGhpcy5maXJzdD1wO3JldHVybiB0aGlzO30pLmV4cHM9dHJ1ZTtwcmVmaXgoJ34nLGZ1bmN0aW9uKCl7aWYob3B0aW9uLmJpdHdpc2Upe3dhcm5pbmcoIlVuZXhwZWN0ZWQgJ3thfScuIix0aGlzLCd+Jyk7fQpwYXJzZSgxNTApO3JldHVybiB0aGlzO30pO3ByZWZpeCgnIScsZnVuY3Rpb24oKXt0aGlzLnJpZ2h0PXBhcnNlKDE1MCk7dGhpcy5hcml0eT0ndW5hcnknO2lmKGJhbmdbdGhpcy5yaWdodC5pZF09PT10cnVlKXt3YXJuaW5nKCJDb25mdXNpbmcgdXNlIG9mICd7YX0nLiIsdGhpcywnIScpO30KcmV0dXJuIHRoaXM7fSk7cHJlZml4KCd0eXBlb2YnLCd0eXBlb2YnKTtwcmVmaXgoJ25ldycsZnVuY3Rpb24oKXt2YXIgYz1wYXJzZSgxNTUpLGk7aWYoYyYmYy5pZCE9PSdmdW5jdGlvbicpe2lmKGMuaWRlbnRpZmllcil7Y1snbmV3J109dHJ1ZTtzd2l0Y2goYy52YWx1ZSl7Y2FzZSdPYmplY3QnOndhcm5pbmcoIlVzZSB0aGUgb2JqZWN0IGxpdGVyYWwgbm90YXRpb24ge30uIix0b2tlbik7YnJlYWs7Y2FzZSdBcnJheSc6aWYobmV4dHRva2VuLmlkIT09JygnKXt3YXJuaW5nKCJVc2UgdGhlIGFycmF5IGxpdGVyYWwgbm90YXRpb24gW10uIix0b2tlbik7fWVsc2V7YWR2YW5jZSgnKCcpO2lmKG5leHR0b2tlbi5pZD09PScpJyl7d2FybmluZygiVXNlIHRoZSBhcnJheSBsaXRlcmFsIG5vdGF0aW9uIFtdLiIsdG9rZW4pO31lbHNle2k9cGFyc2UoMCk7Yy5kaW1lbnNpb249aTtpZigoaS5pZD09PScobnVtYmVyKScmJi9bLitcLUVlXS8udGVzdChpLnZhbHVlKSl8fChpLmlkPT09Jy0nJiYhaS5yaWdodCl8fGkuaWQ9PT0nKHN0cmluZyknfHxpLmlkPT09J1snfHxpLmlkPT09J3snfHxpLmlkPT09J3RydWUnfHxpLmlkPT09J2ZhbHNlJ3x8aS5pZD09PSdudWxsJ3x8aS5pZD09PSd1bmRlZmluZWQnfHxpLmlkPT09J0luZmluaXR5Jyl7d2FybmluZygiVXNlIHRoZSBhcnJheSBsaXRlcmFsIG5vdGF0aW9uIFtdLiIsdG9rZW4pO30KaWYobmV4dHRva2VuLmlkIT09JyknKXtlcnJvcigiVXNlIHRoZSBhcnJheSBsaXRlcmFsIG5vdGF0aW9uIFtdLiIsdG9rZW4pO319CmFkdmFuY2UoJyknKTt9CnRoaXMuZmlyc3Q9YztyZXR1cm4gdGhpcztjYXNlJ051bWJlcic6Y2FzZSdTdHJpbmcnOmNhc2UnQm9vbGVhbic6Y2FzZSdNYXRoJzpjYXNlJ0pTT04nOndhcm5pbmcoIkRvIG5vdCB1c2Uge2F9IGFzIGEgY29uc3RydWN0b3IuIix0b2tlbixjLnZhbHVlKTticmVhaztjYXNlJ0Z1bmN0aW9uJzppZighb3B0aW9uLmV2aWwpe3dhcm5pbmcoIlRoZSBGdW5jdGlvbiBjb25zdHJ1Y3RvciBpcyBldmFsLiIpO30KYnJlYWs7Y2FzZSdEYXRlJzpjYXNlJ1JlZ0V4cCc6YnJlYWs7ZGVmYXVsdDppZihjLmlkIT09J2Z1bmN0aW9uJyl7aT1jLnZhbHVlLnN1YnN0cigwLDEpO2lmKG9wdGlvbi5uZXdjYXAmJihpPCdBJ3x8aT4nWicpKXt3YXJuaW5nKCJBIGNvbnN0cnVjdG9yIG5hbWUgc2hvdWxkIHN0YXJ0IHdpdGggYW4gdXBwZXJjYXNlIGxldHRlci4iLHRva2VuKTt9fX19ZWxzZXtpZihjLmlkIT09Jy4nJiZjLmlkIT09J1snJiZjLmlkIT09JygnKXt3YXJuaW5nKCJCYWQgY29uc3RydWN0b3IuIix0b2tlbik7fX19ZWxzZXt3YXJuaW5nKCJXZWlyZCBjb25zdHJ1Y3Rpb24uIERlbGV0ZSAnbmV3Jy4iLHRoaXMpO30KYWRqYWNlbnQodG9rZW4sbmV4dHRva2VuKTtpZihuZXh0dG9rZW4uaWQhPT0nKCcpe3dhcm5pbmcoIk1pc3NpbmcgJygpJyBpbnZva2luZyBhIGNvbnN0cnVjdG9yLiIpO30KdGhpcy5maXJzdD1jO3JldHVybiB0aGlzO30pO3N5bnRheFsnbmV3J10uZXhwcz10cnVlO2luZml4KCcuJyxmdW5jdGlvbihsZWZ0LHRoYXQpe2FkamFjZW50KHByZXZ0b2tlbix0b2tlbik7dmFyIG09aWRlbnRpZmllcigpO2lmKHR5cGVvZiBtPT09J3N0cmluZycpe2NvdW50TWVtYmVyKG0pO30KdGhhdC5sZWZ0PWxlZnQ7dGhhdC5yaWdodD1tO2lmKCFvcHRpb24uZXZpbCYmbGVmdCYmbGVmdC52YWx1ZT09PSdkb2N1bWVudCcmJihtPT09J3dyaXRlJ3x8bT09PSd3cml0ZWxuJykpe3dhcm5pbmcoImRvY3VtZW50LndyaXRlIGNhbiBiZSBhIGZvcm0gb2YgZXZhbC4iLGxlZnQpO31lbHNlIGlmKG9wdGlvbi5hZHNhZmUpe2lmKGxlZnQmJmxlZnQudmFsdWU9PT0nQURTQUZFJyl7aWYobT09PSdpZCd8fG09PT0nbGliJyl7d2FybmluZygiQURzYWZlIHZpb2xhdGlvbi4iLHRoYXQpO31lbHNlIGlmKG09PT0nZ28nKXtpZih4bW9kZSE9PSdzY3JpcHQnKXt3YXJuaW5nKCJBRHNhZmUgdmlvbGF0aW9uLiIsdGhhdCk7fWVsc2UgaWYoYWRzYWZlX3dlbnR8fG5leHR0b2tlbi5pZCE9PScoJ3x8cGVlaygwKS5pZCE9PScoc3RyaW5nKSd8fHBlZWsoMCkudmFsdWUhPT1hZHNhZmVfaWR8fHBlZWsoMSkuaWQhPT0nLCcpe2Vycm9yKCJBRHNhZmUgdmlvbGF0aW9uOiBnby4iLHRoYXQpO30KYWRzYWZlX3dlbnQ9dHJ1ZTthZHNhZmVfbWF5PWZhbHNlO319fQppZighb3B0aW9uLmV2aWwmJihtPT09J2V2YWwnfHxtPT09J2V4ZWNTY3JpcHQnKSl7d2FybmluZygnZXZhbCBpcyBldmlsLicpO31lbHNlIGlmKG9wdGlvbi5zYWZlKXtmb3IoOzspe2lmKGJhbm5lZFttXT09PXRydWUpe3dhcm5pbmcoIkFEc2FmZSByZXN0cmljdGVkIHdvcmQgJ3thfScuIix0b2tlbixtKTt9CmlmKHR5cGVvZiBwcmVkZWZpbmVkW2xlZnQudmFsdWVdIT09J2Jvb2xlYW4nfHxuZXh0dG9rZW4uaWQ9PT0nKCcpe2JyZWFrO30KaWYoc3RhbmRhcmRfbWVtYmVyW21dPT09dHJ1ZSl7aWYobmV4dHRva2VuLmlkPT09Jy4nKXt3YXJuaW5nKCJBRHNhZmUgdmlvbGF0aW9uLiIsdGhhdCk7fQpicmVhazt9CmlmKG5leHR0b2tlbi5pZCE9PScuJyl7d2FybmluZygiQURzYWZlIHZpb2xhdGlvbi4iLHRoYXQpO2JyZWFrO30KYWR2YW5jZSgnLicpO3Rva2VuLmxlZnQ9dGhhdDt0b2tlbi5yaWdodD1tO3RoYXQ9dG9rZW47bT1pZGVudGlmaWVyKCk7aWYodHlwZW9mIG09PT0nc3RyaW5nJyl7Y291bnRNZW1iZXIobSk7fX19CnJldHVybiB0aGF0O30sMTYwLHRydWUpO2luZml4KCcoJyxmdW5jdGlvbihsZWZ0LHRoYXQpe2FkamFjZW50KHByZXZ0b2tlbix0b2tlbik7bm9zcGFjZSgpO3ZhciBuPTAscD1bXTtpZihsZWZ0KXtpZihsZWZ0LnR5cGU9PT0nKGlkZW50aWZpZXIpJyl7aWYobGVmdC52YWx1ZS5tYXRjaCgvXltBLVpdKFtBLVowLTlfJF0qW2Etel1bQS1aYS16MC05XyRdKik/JC8pKXtpZihsZWZ0LnZhbHVlIT09J051bWJlcicmJmxlZnQudmFsdWUhPT0nU3RyaW5nJyYmbGVmdC52YWx1ZSE9PSdCb29sZWFuJyYmbGVmdC52YWx1ZSE9PSdEYXRlJyl7aWYobGVmdC52YWx1ZT09PSdNYXRoJyl7d2FybmluZygiTWF0aCBpcyBub3QgYSBmdW5jdGlvbi4iLGxlZnQpO31lbHNlIGlmKG9wdGlvbi5uZXdjYXApe3dhcm5pbmcoIk1pc3NpbmcgJ25ldycgcHJlZml4IHdoZW4gaW52b2tpbmcgYSBjb25zdHJ1Y3Rvci4iLGxlZnQpO319fX1lbHNlIGlmKGxlZnQuaWQ9PT0nLicpe2lmKG9wdGlvbi5zYWZlJiZsZWZ0LmxlZnQudmFsdWU9PT0nTWF0aCcmJmxlZnQucmlnaHQ9PT0ncmFuZG9tJyl7d2FybmluZygiQURzYWZlIHZpb2xhdGlvbi4iLGxlZnQpO319fQppZihuZXh0dG9rZW4uaWQhPT0nKScpe2Zvcig7Oyl7cFtwLmxlbmd0aF09cGFyc2UoMTApO24rPTE7aWYobmV4dHRva2VuLmlkIT09JywnKXticmVhazt9CmNvbW1hKCk7fX0KYWR2YW5jZSgnKScpO2lmKG9wdGlvbi5pbW1lZCYmbGVmdC5pZD09PSdmdW5jdGlvbicmJm5leHR0b2tlbi5pZCE9PScpJyl7d2FybmluZygiV3JhcCB0aGUgZW50aXJlIGltbWVkaWF0ZSBmdW5jdGlvbiBpbnZvY2F0aW9uIGluIHBhcmVucy4iLHRoYXQpO30Kbm9zcGFjZShwcmV2dG9rZW4sdG9rZW4pO2lmKHR5cGVvZiBsZWZ0PT09J29iamVjdCcpe2lmKGxlZnQudmFsdWU9PT0ncGFyc2VJbnQnJiZuPT09MSl7d2FybmluZygiTWlzc2luZyByYWRpeCBwYXJhbWV0ZXIuIixsZWZ0KTt9CmlmKCFvcHRpb24uZXZpbCl7aWYobGVmdC52YWx1ZT09PSdldmFsJ3x8bGVmdC52YWx1ZT09PSdGdW5jdGlvbid8fGxlZnQudmFsdWU9PT0nZXhlY1NjcmlwdCcpe3dhcm5pbmcoImV2YWwgaXMgZXZpbC4iLGxlZnQpO31lbHNlIGlmKHBbMF0mJnBbMF0uaWQ9PT0nKHN0cmluZyknJiYobGVmdC52YWx1ZT09PSdzZXRUaW1lb3V0J3x8bGVmdC52YWx1ZT09PSdzZXRJbnRlcnZhbCcpKXt3YXJuaW5nKCJJbXBsaWVkIGV2YWwgaXMgZXZpbC4gUGFzcyBhIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBzdHJpbmcuIixsZWZ0KTt9fQppZighbGVmdC5pZGVudGlmaWVyJiZsZWZ0LmlkIT09Jy4nJiZsZWZ0LmlkIT09J1snJiZsZWZ0LmlkIT09JygnJiZsZWZ0LmlkIT09JyYmJyYmbGVmdC5pZCE9PSd8fCcmJmxlZnQuaWQhPT0nPycpe3dhcm5pbmcoIkJhZCBpbnZvY2F0aW9uLiIsbGVmdCk7fX0KdGhhdC5sZWZ0PWxlZnQ7cmV0dXJuIHRoYXQ7fSwxNTUsdHJ1ZSkuZXhwcz10cnVlO3ByZWZpeCgnKCcsZnVuY3Rpb24oKXtub3NwYWNlKCk7dmFyIHY9cGFyc2UoMCk7YWR2YW5jZSgnKScsdGhpcyk7bm9zcGFjZShwcmV2dG9rZW4sdG9rZW4pO2lmKG9wdGlvbi5pbW1lZCYmdi5pZD09PSdmdW5jdGlvbicpe2lmKG5leHR0b2tlbi5pZD09PScoJyl7d2FybmluZygiTW92ZSB0aGUgaW52b2NhdGlvbiBpbnRvIHRoZSBwYXJlbnMgdGhhdCBjb250YWluIHRoZSBmdW5jdGlvbi4iLG5leHR0b2tlbik7fWVsc2V7d2FybmluZygiRG8gbm90IHdyYXAgZnVuY3Rpb24gbGl0ZXJhbHMgaW4gcGFyZW5zIHVubGVzcyB0aGV5IGFyZSB0byBiZSBpbW1lZGlhdGVseSBpbnZva2VkLiIsdGhpcyk7fX0KcmV0dXJuIHY7fSk7aW5maXgoJ1snLGZ1bmN0aW9uKGxlZnQsdGhhdCl7bm9zcGFjZSgpO3ZhciBlPXBhcnNlKDApLHM7aWYoZSYmZS50eXBlPT09JyhzdHJpbmcpJyl7aWYob3B0aW9uLnNhZmUmJmJhbm5lZFtlLnZhbHVlXT09PXRydWUpe3dhcm5pbmcoIkFEc2FmZSByZXN0cmljdGVkIHdvcmQgJ3thfScuIix0aGF0LGUudmFsdWUpO31lbHNlIGlmKCFvcHRpb24uZXZpbCYmKGUudmFsdWU9PT0nZXZhbCd8fGUudmFsdWU9PT0nZXhlY1NjcmlwdCcpKXt3YXJuaW5nKCJldmFsIGlzIGV2aWwuIix0aGF0KTt9ZWxzZSBpZihvcHRpb24uc2FmZSYmKGUudmFsdWUuY2hhckF0KDApPT09J18nfHxlLnZhbHVlLmNoYXJBdCgwKT09PSctJykpe3dhcm5pbmcoIkFEc2FmZSByZXN0cmljdGVkIHN1YnNjcmlwdCAne2F9Jy4iLHRoYXQsZS52YWx1ZSk7fQpjb3VudE1lbWJlcihlLnZhbHVlKTtpZighb3B0aW9uLnN1YiYmaXgudGVzdChlLnZhbHVlKSl7cz1zeW50YXhbZS52YWx1ZV07aWYoIXN8fCFzLnJlc2VydmVkKXt3YXJuaW5nKCJbJ3thfSddIGlzIGJldHRlciB3cml0dGVuIGluIGRvdCBub3RhdGlvbi4iLGUsZS52YWx1ZSk7fX19ZWxzZSBpZighZXx8ZS50eXBlIT09JyhudW1iZXIpJ3x8ZS52YWx1ZTwwKXtpZihvcHRpb24uc2FmZSl7d2FybmluZygnQURzYWZlIHN1YnNjcmlwdGluZy4nKTt9fQphZHZhbmNlKCddJyx0aGF0KTtub3NwYWNlKHByZXZ0b2tlbix0b2tlbik7dGhhdC5sZWZ0PWxlZnQ7dGhhdC5yaWdodD1lO3JldHVybiB0aGF0O30sMTYwLHRydWUpO3ByZWZpeCgnWycsZnVuY3Rpb24oKXt2YXIgYj10b2tlbi5saW5lIT09bmV4dHRva2VuLmxpbmU7dGhpcy5maXJzdD1bXTtpZihiKXtpbmRlbnQrPW9wdGlvbi5pbmRlbnQ7aWYobmV4dHRva2VuLmZyb209PT1pbmRlbnQrb3B0aW9uLmluZGVudCl7aW5kZW50Kz1vcHRpb24uaW5kZW50O319CndoaWxlKG5leHR0b2tlbi5pZCE9PScoZW5kKScpe3doaWxlKG5leHR0b2tlbi5pZD09PScsJyl7d2FybmluZygiRXh0cmEgY29tbWEuIik7YWR2YW5jZSgnLCcpO30KaWYobmV4dHRva2VuLmlkPT09J10nKXticmVhazt9CmlmKGImJnRva2VuLmxpbmUhPT1uZXh0dG9rZW4ubGluZSl7aW5kZW50YXRpb24oKTt9CnRoaXMuZmlyc3QucHVzaChwYXJzZSgxMCkpO2lmKG5leHR0b2tlbi5pZD09PScsJyl7Y29tbWEoKTtpZihuZXh0dG9rZW4uaWQ9PT0nXScpe3dhcm5pbmcoIkV4dHJhIGNvbW1hLiIsdG9rZW4pO2JyZWFrO319ZWxzZXticmVhazt9fQppZihiKXtpbmRlbnQtPW9wdGlvbi5pbmRlbnQ7aW5kZW50YXRpb24oKTt9CmFkdmFuY2UoJ10nLHRoaXMpO3JldHVybiB0aGlzO30sMTYwKTsoZnVuY3Rpb24oeCl7eC5udWQ9ZnVuY3Rpb24oKXt2YXIgYixpLHMsc2Vlbj17fTtiPXRva2VuLmxpbmUhPT1uZXh0dG9rZW4ubGluZTtpZihiKXtpbmRlbnQrPW9wdGlvbi5pbmRlbnQ7aWYobmV4dHRva2VuLmZyb209PT1pbmRlbnQrb3B0aW9uLmluZGVudCl7aW5kZW50Kz1vcHRpb24uaW5kZW50O319CmZvcig7Oyl7aWYobmV4dHRva2VuLmlkPT09J30nKXticmVhazt9CmlmKGIpe2luZGVudGF0aW9uKCk7fQppPW9wdGlvbmFsaWRlbnRpZmllcih0cnVlKTtpZighaSl7aWYobmV4dHRva2VuLmlkPT09JyhzdHJpbmcpJyl7aT1uZXh0dG9rZW4udmFsdWU7aWYoaXgudGVzdChpKSl7cz1zeW50YXhbaV07fQphZHZhbmNlKCk7fWVsc2UgaWYobmV4dHRva2VuLmlkPT09JyhudW1iZXIpJyl7aT1uZXh0dG9rZW4udmFsdWUudG9TdHJpbmcoKTthZHZhbmNlKCk7fWVsc2V7ZXJyb3IoIkV4cGVjdGVkICd7YX0nIGFuZCBpbnN0ZWFkIHNhdyAne2J9Jy4iLG5leHR0b2tlbiwnfScsbmV4dHRva2VuLnZhbHVlKTt9fQppZihzZWVuW2ldPT09dHJ1ZSl7d2FybmluZygiRHVwbGljYXRlIG1lbWJlciAne2F9Jy4iLG5leHR0b2tlbixpKTt9CnNlZW5baV09dHJ1ZTtjb3VudE1lbWJlcihpKTthZHZhbmNlKCc6Jyk7bm9uYWRqYWNlbnQodG9rZW4sbmV4dHRva2VuKTtwYXJzZSgxMCk7aWYobmV4dHRva2VuLmlkPT09JywnKXtjb21tYSgpO2lmKG5leHR0b2tlbi5pZD09PScsJ3x8bmV4dHRva2VuLmlkPT09J30nKXt3YXJuaW5nKCJFeHRyYSBjb21tYS4iLHRva2VuKTt9fWVsc2V7YnJlYWs7fX0KaWYoYil7aW5kZW50LT1vcHRpb24uaW5kZW50O2luZGVudGF0aW9uKCk7fQphZHZhbmNlKCd9Jyx0aGlzKTtyZXR1cm4gdGhpczt9O3guZnVkPWZ1bmN0aW9uKCl7ZXJyb3IoIkV4cGVjdGVkIHRvIHNlZSBhIHN0YXRlbWVudCBhbmQgaW5zdGVhZCBzYXcgYSBibG9jay4iLHRva2VuKTt9O30oZGVsaW0oJ3snKSkpO2Z1bmN0aW9uIHZhcnN0YXRlbWVudChwcmVmaXgpe3ZhciBpZCxuYW1lLHZhbHVlO2lmKGZ1bmN0Wycob25ldmFyKSddJiZvcHRpb24ub25ldmFyKXt3YXJuaW5nKCJUb28gbWFueSB2YXIgc3RhdGVtZW50cy4iKTt9ZWxzZSBpZighZnVuY3RbJyhnbG9iYWwpJ10pe2Z1bmN0Wycob25ldmFyKSddPXRydWU7fQp0aGlzLmZpcnN0PVtdO2Zvcig7Oyl7bm9uYWRqYWNlbnQodG9rZW4sbmV4dHRva2VuKTtpZD1pZGVudGlmaWVyKCk7aWYoZnVuY3RbJyhnbG9iYWwpJ10mJnByZWRlZmluZWRbaWRdPT09ZmFsc2Upe3dhcm5pbmcoIlJlZGVmaW5pdGlvbiBvZiAne2F9Jy4iLHRva2VuLGlkKTt9CmFkZGxhYmVsKGlkLCd1bnVzZWQnKTtpZihwcmVmaXgpe2JyZWFrO30KbmFtZT10b2tlbjt0aGlzLmZpcnN0LnB1c2godG9rZW4pO2lmKG5leHR0b2tlbi5pZD09PSc9Jyl7bm9uYWRqYWNlbnQodG9rZW4sbmV4dHRva2VuKTthZHZhbmNlKCc9Jyk7bm9uYWRqYWNlbnQodG9rZW4sbmV4dHRva2VuKTtpZihuZXh0dG9rZW4uaWQ9PT0ndW5kZWZpbmVkJyl7d2FybmluZygiSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBpbml0aWFsaXplICd7YX0nIHRvICd1bmRlZmluZWQnLiIsdG9rZW4saWQpO30KaWYocGVlaygwKS5pZD09PSc9JyYmbmV4dHRva2VuLmlkZW50aWZpZXIpe2Vycm9yKCJWYXJpYWJsZSB7YX0gd2FzIG5vdCBkZWNsYXJlZCBjb3JyZWN0bHkuIixuZXh0dG9rZW4sbmV4dHRva2VuLnZhbHVlKTt9CnZhbHVlPXBhcnNlKDApO25hbWUuZmlyc3Q9dmFsdWU7fQppZihuZXh0dG9rZW4uaWQhPT0nLCcpe2JyZWFrO30KY29tbWEoKTt9CnJldHVybiB0aGlzO30Kc3RtdCgndmFyJyx2YXJzdGF0ZW1lbnQpLmV4cHM9dHJ1ZTtmdW5jdGlvbiBmdW5jdGlvbnBhcmFtcygpe3ZhciBpLHQ9bmV4dHRva2VuLHA9W107YWR2YW5jZSgnKCcpO25vc3BhY2UoKTtpZihuZXh0dG9rZW4uaWQ9PT0nKScpe2FkdmFuY2UoJyknKTtub3NwYWNlKHByZXZ0b2tlbix0b2tlbik7cmV0dXJuO30KZm9yKDs7KXtpPWlkZW50aWZpZXIoKTtwLnB1c2goaSk7YWRkbGFiZWwoaSwncGFyYW1ldGVyJyk7aWYobmV4dHRva2VuLmlkPT09JywnKXtjb21tYSgpO31lbHNle2FkdmFuY2UoJyknLHQpO25vc3BhY2UocHJldnRva2VuLHRva2VuKTtyZXR1cm4gcDt9fX0KZnVuY3Rpb24gZG9GdW5jdGlvbihpKXt2YXIgcz1zY29wZTtzY29wZT1PYmplY3QuY3JlYXRlKHMpO2Z1bmN0PXsnKG5hbWUpJzppfHwnIicrYW5vbm5hbWUrJyInLCcobGluZSknOm5leHR0b2tlbi5saW5lLCcoY29udGV4dCknOmZ1bmN0LCcoYnJlYWthZ2UpJzowLCcobG9vcGFnZSknOjAsJyhzY29wZSknOnNjb3BlfTt0b2tlbi5mdW5jdD1mdW5jdDtmdW5jdGlvbnMucHVzaChmdW5jdCk7aWYoaSl7YWRkbGFiZWwoaSwnZnVuY3Rpb24nKTt9CmZ1bmN0WycocGFyYW1zKSddPWZ1bmN0aW9ucGFyYW1zKCk7YmxvY2soZmFsc2UpO3Njb3BlPXM7ZnVuY3RbJyhsYXN0KSddPXRva2VuLmxpbmU7ZnVuY3Q9ZnVuY3RbJyhjb250ZXh0KSddO30KYmxvY2tzdG10KCdmdW5jdGlvbicsZnVuY3Rpb24oKXtpZihpbmJsb2NrKXt3YXJuaW5nKCJGdW5jdGlvbiBzdGF0ZW1lbnRzIGNhbm5vdCBiZSBwbGFjZWQgaW4gYmxvY2tzLiBVc2UgYSBmdW5jdGlvbiBleHByZXNzaW9uIG9yIG1vdmUgdGhlIHN0YXRlbWVudCB0byB0aGUgdG9wIG9mIHRoZSBvdXRlciBmdW5jdGlvbi4iLHRva2VuKTt9CnZhciBpPWlkZW50aWZpZXIoKTthZGphY2VudCh0b2tlbixuZXh0dG9rZW4pO2FkZGxhYmVsKGksJ3VudXNlZCcpO2RvRnVuY3Rpb24oaSk7aWYobmV4dHRva2VuLmlkPT09JygnJiZuZXh0dG9rZW4ubGluZT09PXRva2VuLmxpbmUpe2Vycm9yKCJGdW5jdGlvbiBzdGF0ZW1lbnRzIGFyZSBub3QgaW52b2NhYmxlLiBXcmFwIHRoZSB3aG9sZSBmdW5jdGlvbiBpbnZvY2F0aW9uIGluIHBhcmVucy4iKTt9CnJldHVybiB0aGlzO30pO3ByZWZpeCgnZnVuY3Rpb24nLGZ1bmN0aW9uKCl7dmFyIGk9b3B0aW9uYWxpZGVudGlmaWVyKCk7aWYoaSl7YWRqYWNlbnQodG9rZW4sbmV4dHRva2VuKTt9ZWxzZXtub25hZGphY2VudCh0b2tlbixuZXh0dG9rZW4pO30KZG9GdW5jdGlvbihpKTtpZihmdW5jdFsnKGxvb3BhZ2UpJ10mJm5leHR0b2tlbi5pZCE9PScoJyl7d2FybmluZygiQmUgY2FyZWZ1bCB3aGVuIG1ha2luZyBmdW5jdGlvbnMgd2l0aGluIGEgbG9vcC4gQ29uc2lkZXIgcHV0dGluZyB0aGUgZnVuY3Rpb24gaW4gYSBjbG9zdXJlLiIpO30KcmV0dXJuIHRoaXM7fSk7YmxvY2tzdG10KCdpZicsZnVuY3Rpb24oKXt2YXIgdD1uZXh0dG9rZW47YWR2YW5jZSgnKCcpO25vbmFkamFjZW50KHRoaXMsdCk7bm9zcGFjZSgpO3BhcnNlKDIwKTtpZihuZXh0dG9rZW4uaWQ9PT0nPScpe3dhcm5pbmcoIkV4cGVjdGVkIGEgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBhbmQgaW5zdGVhZCBzYXcgYW4gYXNzaWdubWVudC4iKTthZHZhbmNlKCc9Jyk7cGFyc2UoMjApO30KYWR2YW5jZSgnKScsdCk7bm9zcGFjZShwcmV2dG9rZW4sdG9rZW4pO2Jsb2NrKHRydWUpO2lmKG5leHR0b2tlbi5pZD09PSdlbHNlJyl7bm9uYWRqYWNlbnQodG9rZW4sbmV4dHRva2VuKTthZHZhbmNlKCdlbHNlJyk7aWYobmV4dHRva2VuLmlkPT09J2lmJ3x8bmV4dHRva2VuLmlkPT09J3N3aXRjaCcpe3N0YXRlbWVudCh0cnVlKTt9ZWxzZXtibG9jayh0cnVlKTt9fQpyZXR1cm4gdGhpczt9KTtibG9ja3N0bXQoJ3RyeScsZnVuY3Rpb24oKXt2YXIgYixlLHM7aWYob3B0aW9uLmFkc2FmZSl7d2FybmluZygiQURzYWZlIHRyeSB2aW9sYXRpb24uIix0aGlzKTt9CmJsb2NrKGZhbHNlKTtpZihuZXh0dG9rZW4uaWQ9PT0nY2F0Y2gnKXthZHZhbmNlKCdjYXRjaCcpO25vbmFkamFjZW50KHRva2VuLG5leHR0b2tlbik7YWR2YW5jZSgnKCcpO3M9c2NvcGU7c2NvcGU9T2JqZWN0LmNyZWF0ZShzKTtlPW5leHR0b2tlbi52YWx1ZTtpZihuZXh0dG9rZW4udHlwZSE9PScoaWRlbnRpZmllciknKXt3YXJuaW5nKCJFeHBlY3RlZCBhbiBpZGVudGlmaWVyIGFuZCBpbnN0ZWFkIHNhdyAne2F9Jy4iLG5leHR0b2tlbixlKTt9ZWxzZXthZGRsYWJlbChlLCdleGNlcHRpb24nKTt9CmFkdmFuY2UoKTthZHZhbmNlKCcpJyk7YmxvY2soZmFsc2UpO2I9dHJ1ZTtzY29wZT1zO30KaWYobmV4dHRva2VuLmlkPT09J2ZpbmFsbHknKXthZHZhbmNlKCdmaW5hbGx5Jyk7YmxvY2soZmFsc2UpO3JldHVybjt9ZWxzZSBpZighYil7ZXJyb3IoIkV4cGVjdGVkICd7YX0nIGFuZCBpbnN0ZWFkIHNhdyAne2J9Jy4iLG5leHR0b2tlbiwnY2F0Y2gnLG5leHR0b2tlbi52YWx1ZSk7fQpyZXR1cm4gdGhpczt9KTtibG9ja3N0bXQoJ3doaWxlJyxmdW5jdGlvbigpe3ZhciB0PW5leHR0b2tlbjtmdW5jdFsnKGJyZWFrYWdlKSddKz0xO2Z1bmN0WycobG9vcGFnZSknXSs9MTthZHZhbmNlKCcoJyk7bm9uYWRqYWNlbnQodGhpcyx0KTtub3NwYWNlKCk7cGFyc2UoMjApO2lmKG5leHR0b2tlbi5pZD09PSc9Jyl7d2FybmluZygiRXhwZWN0ZWQgYSBjb25kaXRpb25hbCBleHByZXNzaW9uIGFuZCBpbnN0ZWFkIHNhdyBhbiBhc3NpZ25tZW50LiIpO2FkdmFuY2UoJz0nKTtwYXJzZSgyMCk7fQphZHZhbmNlKCcpJyx0KTtub3NwYWNlKHByZXZ0b2tlbix0b2tlbik7YmxvY2sodHJ1ZSk7ZnVuY3RbJyhicmVha2FnZSknXS09MTtmdW5jdFsnKGxvb3BhZ2UpJ10tPTE7cmV0dXJuIHRoaXM7fSkubGFiZWxsZWQ9dHJ1ZTtyZXNlcnZlKCd3aXRoJyk7YmxvY2tzdG10KCdzd2l0Y2gnLGZ1bmN0aW9uKCl7dmFyIHQ9bmV4dHRva2VuLGc9ZmFsc2U7ZnVuY3RbJyhicmVha2FnZSknXSs9MTthZHZhbmNlKCcoJyk7bm9uYWRqYWNlbnQodGhpcyx0KTtub3NwYWNlKCk7dGhpcy5jb25kaXRpb249cGFyc2UoMjApO2FkdmFuY2UoJyknLHQpO25vc3BhY2UocHJldnRva2VuLHRva2VuKTtub25hZGphY2VudCh0b2tlbixuZXh0dG9rZW4pO3Q9bmV4dHRva2VuO2FkdmFuY2UoJ3snKTtub25hZGphY2VudCh0b2tlbixuZXh0dG9rZW4pO2luZGVudCs9b3B0aW9uLmluZGVudDt0aGlzLmNhc2VzPVtdO2Zvcig7Oyl7c3dpdGNoKG5leHR0b2tlbi5pZCl7Y2FzZSdjYXNlJzpzd2l0Y2goZnVuY3RbJyh2ZXJiKSddKXtjYXNlJ2JyZWFrJzpjYXNlJ2Nhc2UnOmNhc2UnY29udGludWUnOmNhc2UncmV0dXJuJzpjYXNlJ3N3aXRjaCc6Y2FzZSd0aHJvdyc6YnJlYWs7ZGVmYXVsdDp3YXJuaW5nKCJFeHBlY3RlZCBhICdicmVhaycgc3RhdGVtZW50IGJlZm9yZSAnY2FzZScuIix0b2tlbik7fQppbmRlbnRhdGlvbigtb3B0aW9uLmluZGVudCk7YWR2YW5jZSgnY2FzZScpO3RoaXMuY2FzZXMucHVzaChwYXJzZSgyMCkpO2c9dHJ1ZTthZHZhbmNlKCc6Jyk7ZnVuY3RbJyh2ZXJiKSddPSdjYXNlJzticmVhaztjYXNlJ2RlZmF1bHQnOnN3aXRjaChmdW5jdFsnKHZlcmIpJ10pe2Nhc2UnYnJlYWsnOmNhc2UnY29udGludWUnOmNhc2UncmV0dXJuJzpjYXNlJ3Rocm93JzpicmVhaztkZWZhdWx0Ondhcm5pbmcoIkV4cGVjdGVkIGEgJ2JyZWFrJyBzdGF0ZW1lbnQgYmVmb3JlICdkZWZhdWx0Jy4iLHRva2VuKTt9CmluZGVudGF0aW9uKC1vcHRpb24uaW5kZW50KTthZHZhbmNlKCdkZWZhdWx0Jyk7Zz10cnVlO2FkdmFuY2UoJzonKTticmVhaztjYXNlJ30nOmluZGVudC09b3B0aW9uLmluZGVudDtpbmRlbnRhdGlvbigpO2FkdmFuY2UoJ30nLHQpO2lmKHRoaXMuY2FzZXMubGVuZ3RoPT09MXx8dGhpcy5jb25kaXRpb24uaWQ9PT0ndHJ1ZSd8fHRoaXMuY29uZGl0aW9uLmlkPT09J2ZhbHNlJyl7d2FybmluZygiVGhpcyAnc3dpdGNoJyBzaG91bGQgYmUgYW4gJ2lmJy4iLHRoaXMpO30KZnVuY3RbJyhicmVha2FnZSknXS09MTtmdW5jdFsnKHZlcmIpJ109dW5kZWZpbmVkO3JldHVybjtjYXNlJyhlbmQpJzplcnJvcigiTWlzc2luZyAne2F9Jy4iLG5leHR0b2tlbiwnfScpO3JldHVybjtkZWZhdWx0OmlmKGcpe3N3aXRjaCh0b2tlbi5pZCl7Y2FzZScsJzplcnJvcigiRWFjaCB2YWx1ZSBzaG91bGQgaGF2ZSBpdHMgb3duIGNhc2UgbGFiZWwuIik7cmV0dXJuO2Nhc2UnOic6c3RhdGVtZW50cygpO2JyZWFrO2RlZmF1bHQ6ZXJyb3IoIk1pc3NpbmcgJzonIG9uIGEgY2FzZSBjbGF1c2UuIix0b2tlbik7fX1lbHNle2Vycm9yKCJFeHBlY3RlZCAne2F9JyBhbmQgaW5zdGVhZCBzYXcgJ3tifScuIixuZXh0dG9rZW4sJ2Nhc2UnLG5leHR0b2tlbi52YWx1ZSk7fX19fSkubGFiZWxsZWQ9dHJ1ZTtzdG10KCdkZWJ1Z2dlcicsZnVuY3Rpb24oKXtpZighb3B0aW9uLmRlYnVnKXt3YXJuaW5nKCJBbGwgJ2RlYnVnZ2VyJyBzdGF0ZW1lbnRzIHNob3VsZCBiZSByZW1vdmVkLiIpO30KcmV0dXJuIHRoaXM7fSkuZXhwcz10cnVlOyhmdW5jdGlvbigpe3ZhciB4PXN0bXQoJ2RvJyxmdW5jdGlvbigpe2Z1bmN0WycoYnJlYWthZ2UpJ10rPTE7ZnVuY3RbJyhsb29wYWdlKSddKz0xO3RoaXMuZmlyc3Q9YmxvY2sodHJ1ZSk7YWR2YW5jZSgnd2hpbGUnKTt2YXIgdD1uZXh0dG9rZW47bm9uYWRqYWNlbnQodG9rZW4sdCk7YWR2YW5jZSgnKCcpO25vc3BhY2UoKTtwYXJzZSgyMCk7aWYobmV4dHRva2VuLmlkPT09Jz0nKXt3YXJuaW5nKCJFeHBlY3RlZCBhIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gYW5kIGluc3RlYWQgc2F3IGFuIGFzc2lnbm1lbnQuIik7YWR2YW5jZSgnPScpO3BhcnNlKDIwKTt9CmFkdmFuY2UoJyknLHQpO25vc3BhY2UocHJldnRva2VuLHRva2VuKTtmdW5jdFsnKGJyZWFrYWdlKSddLT0xO2Z1bmN0WycobG9vcGFnZSknXS09MTtyZXR1cm4gdGhpczt9KTt4LmxhYmVsbGVkPXRydWU7eC5leHBzPXRydWU7fSgpKTtibG9ja3N0bXQoJ2ZvcicsZnVuY3Rpb24oKXt2YXIgZj1vcHRpb24uZm9yaW4scyx0PW5leHR0b2tlbjtmdW5jdFsnKGJyZWFrYWdlKSddKz0xO2Z1bmN0WycobG9vcGFnZSknXSs9MTthZHZhbmNlKCcoJyk7bm9uYWRqYWNlbnQodGhpcyx0KTtub3NwYWNlKCk7aWYocGVlayhuZXh0dG9rZW4uaWQ9PT0ndmFyJz8xOjApLmlkPT09J2luJyl7aWYobmV4dHRva2VuLmlkPT09J3Zhcicpe2FkdmFuY2UoJ3ZhcicpO3ZhcnN0YXRlbWVudCh0cnVlKTt9ZWxzZXtzd2l0Y2goZnVuY3RbbmV4dHRva2VuLnZhbHVlXSl7Y2FzZSd1bnVzZWQnOmZ1bmN0W25leHR0b2tlbi52YWx1ZV09J3Zhcic7YnJlYWs7Y2FzZSd2YXInOmJyZWFrO2RlZmF1bHQ6d2FybmluZygiQmFkIGZvciBpbiB2YXJpYWJsZSAne2F9Jy4iLG5leHR0b2tlbixuZXh0dG9rZW4udmFsdWUpO30KYWR2YW5jZSgpO30KYWR2YW5jZSgnaW4nKTtwYXJzZSgyMCk7YWR2YW5jZSgnKScsdCk7cz1ibG9jayh0cnVlKTtpZighZiYmKHMubGVuZ3RoPjF8fHR5cGVvZiBzWzBdIT09J29iamVjdCd8fHNbMF0udmFsdWUhPT0naWYnKSl7d2FybmluZygiVGhlIGJvZHkgb2YgYSBmb3IgaW4gc2hvdWxkIGJlIHdyYXBwZWQgaW4gYW4gaWYgc3RhdGVtZW50IHRvIGZpbHRlciB1bndhbnRlZCBwcm9wZXJ0aWVzIGZyb20gdGhlIHByb3RvdHlwZS4iLHRoaXMpO30KZnVuY3RbJyhicmVha2FnZSknXS09MTtmdW5jdFsnKGxvb3BhZ2UpJ10tPTE7cmV0dXJuIHRoaXM7fWVsc2V7aWYobmV4dHRva2VuLmlkIT09JzsnKXtpZihuZXh0dG9rZW4uaWQ9PT0ndmFyJyl7YWR2YW5jZSgndmFyJyk7dmFyc3RhdGVtZW50KCk7fWVsc2V7Zm9yKDs7KXtwYXJzZSgwLCdmb3InKTtpZihuZXh0dG9rZW4uaWQhPT0nLCcpe2JyZWFrO30KY29tbWEoKTt9fX0Kbm9saW5lYnJlYWsodG9rZW4pO2FkdmFuY2UoJzsnKTtpZihuZXh0dG9rZW4uaWQhPT0nOycpe3BhcnNlKDIwKTtpZihuZXh0dG9rZW4uaWQ9PT0nPScpe3dhcm5pbmcoIkV4cGVjdGVkIGEgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBhbmQgaW5zdGVhZCBzYXcgYW4gYXNzaWdubWVudC4iKTthZHZhbmNlKCc9Jyk7cGFyc2UoMjApO319Cm5vbGluZWJyZWFrKHRva2VuKTthZHZhbmNlKCc7Jyk7aWYobmV4dHRva2VuLmlkPT09JzsnKXtlcnJvcigiRXhwZWN0ZWQgJ3thfScgYW5kIGluc3RlYWQgc2F3ICd7Yn0nLiIsbmV4dHRva2VuLCcpJywnOycpO30KaWYobmV4dHRva2VuLmlkIT09JyknKXtmb3IoOzspe3BhcnNlKDAsJ2ZvcicpO2lmKG5leHR0b2tlbi5pZCE9PScsJyl7YnJlYWs7fQpjb21tYSgpO319CmFkdmFuY2UoJyknLHQpO25vc3BhY2UocHJldnRva2VuLHRva2VuKTtibG9jayh0cnVlKTtmdW5jdFsnKGJyZWFrYWdlKSddLT0xO2Z1bmN0WycobG9vcGFnZSknXS09MTtyZXR1cm4gdGhpczt9fSkubGFiZWxsZWQ9dHJ1ZTtzdG10KCdicmVhaycsZnVuY3Rpb24oKXt2YXIgdj1uZXh0dG9rZW4udmFsdWU7aWYoZnVuY3RbJyhicmVha2FnZSknXT09PTApe3dhcm5pbmcoIlVuZXhwZWN0ZWQgJ3thfScuIixuZXh0dG9rZW4sdGhpcy52YWx1ZSk7fQpub2xpbmVicmVhayh0aGlzKTtpZihuZXh0dG9rZW4uaWQhPT0nOycpe2lmKHRva2VuLmxpbmU9PT1uZXh0dG9rZW4ubGluZSl7aWYoZnVuY3Rbdl0hPT0nbGFiZWwnKXt3YXJuaW5nKCIne2F9JyBpcyBub3QgYSBzdGF0ZW1lbnQgbGFiZWwuIixuZXh0dG9rZW4sdik7fWVsc2UgaWYoc2NvcGVbdl0hPT1mdW5jdCl7d2FybmluZygiJ3thfScgaXMgb3V0IG9mIHNjb3BlLiIsbmV4dHRva2VuLHYpO30KdGhpcy5maXJzdD1uZXh0dG9rZW47YWR2YW5jZSgpO319CnJlYWNoYWJsZSgnYnJlYWsnKTtyZXR1cm4gdGhpczt9KS5leHBzPXRydWU7c3RtdCgnY29udGludWUnLGZ1bmN0aW9uKCl7dmFyIHY9bmV4dHRva2VuLnZhbHVlO2lmKGZ1bmN0WycoYnJlYWthZ2UpJ109PT0wKXt3YXJuaW5nKCJVbmV4cGVjdGVkICd7YX0nLiIsbmV4dHRva2VuLHRoaXMudmFsdWUpO30Kbm9saW5lYnJlYWsodGhpcyk7aWYobmV4dHRva2VuLmlkIT09JzsnKXtpZih0b2tlbi5saW5lPT09bmV4dHRva2VuLmxpbmUpe2lmKGZ1bmN0W3ZdIT09J2xhYmVsJyl7d2FybmluZygiJ3thfScgaXMgbm90IGEgc3RhdGVtZW50IGxhYmVsLiIsbmV4dHRva2VuLHYpO31lbHNlIGlmKHNjb3BlW3ZdIT09ZnVuY3Qpe3dhcm5pbmcoIid7YX0nIGlzIG91dCBvZiBzY29wZS4iLG5leHR0b2tlbix2KTt9CnRoaXMuZmlyc3Q9bmV4dHRva2VuO2FkdmFuY2UoKTt9fQpyZWFjaGFibGUoJ2NvbnRpbnVlJyk7cmV0dXJuIHRoaXM7fSkuZXhwcz10cnVlO3N0bXQoJ3JldHVybicsZnVuY3Rpb24oKXtub2xpbmVicmVhayh0aGlzKTtpZihuZXh0dG9rZW4uaWQ9PT0nKHJlZ2V4cCknKXt3YXJuaW5nKCJXcmFwIHRoZSAvcmVnZXhwLyBsaXRlcmFsIGluIHBhcmVucyB0byBkaXNhbWJpZ3VhdGUgdGhlIHNsYXNoIG9wZXJhdG9yLiIpO30KaWYobmV4dHRva2VuLmlkIT09JzsnJiYhbmV4dHRva2VuLnJlYWNoKXtub25hZGphY2VudCh0b2tlbixuZXh0dG9rZW4pO3RoaXMuZmlyc3Q9cGFyc2UoMjApO30KcmVhY2hhYmxlKCdyZXR1cm4nKTtyZXR1cm4gdGhpczt9KS5leHBzPXRydWU7c3RtdCgndGhyb3cnLGZ1bmN0aW9uKCl7bm9saW5lYnJlYWsodGhpcyk7bm9uYWRqYWNlbnQodG9rZW4sbmV4dHRva2VuKTt0aGlzLmZpcnN0PXBhcnNlKDIwKTtyZWFjaGFibGUoJ3Rocm93Jyk7cmV0dXJuIHRoaXM7fSkuZXhwcz10cnVlO3Jlc2VydmUoJ3ZvaWQnKTtyZXNlcnZlKCdjbGFzcycpO3Jlc2VydmUoJ2NvbnN0Jyk7cmVzZXJ2ZSgnZW51bScpO3Jlc2VydmUoJ2V4cG9ydCcpO3Jlc2VydmUoJ2V4dGVuZHMnKTtyZXNlcnZlKCdpbXBvcnQnKTtyZXNlcnZlKCdzdXBlcicpO3Jlc2VydmUoJ2xldCcpO3Jlc2VydmUoJ3lpZWxkJyk7cmVzZXJ2ZSgnaW1wbGVtZW50cycpO3Jlc2VydmUoJ2ludGVyZmFjZScpO3Jlc2VydmUoJ3BhY2thZ2UnKTtyZXNlcnZlKCdwcml2YXRlJyk7cmVzZXJ2ZSgncHJvdGVjdGVkJyk7cmVzZXJ2ZSgncHVibGljJyk7cmVzZXJ2ZSgnc3RhdGljJyk7ZnVuY3Rpb24ganNvblZhbHVlKCl7ZnVuY3Rpb24ganNvbk9iamVjdCgpe3ZhciBvPXt9LHQ9bmV4dHRva2VuO2FkdmFuY2UoJ3snKTtpZihuZXh0dG9rZW4uaWQhPT0nfScpe2Zvcig7Oyl7aWYobmV4dHRva2VuLmlkPT09JyhlbmQpJyl7ZXJyb3IoIk1pc3NpbmcgJ30nIHRvIG1hdGNoICd7JyBmcm9tIGxpbmUge2F9LiIsbmV4dHRva2VuLHQubGluZSk7fWVsc2UgaWYobmV4dHRva2VuLmlkPT09J30nKXt3YXJuaW5nKCJVbmV4cGVjdGVkIGNvbW1hLiIsdG9rZW4pO2JyZWFrO31lbHNlIGlmKG5leHR0b2tlbi5pZD09PScsJyl7ZXJyb3IoIlVuZXhwZWN0ZWQgY29tbWEuIixuZXh0dG9rZW4pO31lbHNlIGlmKG5leHR0b2tlbi5pZCE9PScoc3RyaW5nKScpe3dhcm5pbmcoIkV4cGVjdGVkIGEgc3RyaW5nIGFuZCBpbnN0ZWFkIHNhdyB7YX0uIixuZXh0dG9rZW4sbmV4dHRva2VuLnZhbHVlKTt9CmlmKG9bbmV4dHRva2VuLnZhbHVlXT09PXRydWUpe3dhcm5pbmcoIkR1cGxpY2F0ZSBrZXkgJ3thfScuIixuZXh0dG9rZW4sbmV4dHRva2VuLnZhbHVlKTt9ZWxzZSBpZihuZXh0dG9rZW4udmFsdWU9PT0nX19wcm90b19fJyl7d2FybmluZygiU3R1cGlkIGtleSAne2F9Jy4iLG5leHR0b2tlbixuZXh0dG9rZW4udmFsdWUpO31lbHNle29bbmV4dHRva2VuLnZhbHVlXT10cnVlO30KYWR2YW5jZSgpO2FkdmFuY2UoJzonKTtqc29uVmFsdWUoKTtpZihuZXh0dG9rZW4uaWQhPT0nLCcpe2JyZWFrO30KYWR2YW5jZSgnLCcpO319CmFkdmFuY2UoJ30nKTt9CmZ1bmN0aW9uIGpzb25BcnJheSgpe3ZhciB0PW5leHR0b2tlbjthZHZhbmNlKCdbJyk7aWYobmV4dHRva2VuLmlkIT09J10nKXtmb3IoOzspe2lmKG5leHR0b2tlbi5pZD09PScoZW5kKScpe2Vycm9yKCJNaXNzaW5nICddJyB0byBtYXRjaCAnWycgZnJvbSBsaW5lIHthfS4iLG5leHR0b2tlbix0LmxpbmUpO31lbHNlIGlmKG5leHR0b2tlbi5pZD09PSddJyl7d2FybmluZygiVW5leHBlY3RlZCBjb21tYS4iLHRva2VuKTticmVhazt9ZWxzZSBpZihuZXh0dG9rZW4uaWQ9PT0nLCcpe2Vycm9yKCJVbmV4cGVjdGVkIGNvbW1hLiIsbmV4dHRva2VuKTt9Cmpzb25WYWx1ZSgpO2lmKG5leHR0b2tlbi5pZCE9PScsJyl7YnJlYWs7fQphZHZhbmNlKCcsJyk7fX0KYWR2YW5jZSgnXScpO30Kc3dpdGNoKG5leHR0b2tlbi5pZCl7Y2FzZSd7Jzpqc29uT2JqZWN0KCk7YnJlYWs7Y2FzZSdbJzpqc29uQXJyYXkoKTticmVhaztjYXNlJ3RydWUnOmNhc2UnZmFsc2UnOmNhc2UnbnVsbCc6Y2FzZScobnVtYmVyKSc6Y2FzZScoc3RyaW5nKSc6YWR2YW5jZSgpO2JyZWFrO2Nhc2UnLSc6YWR2YW5jZSgnLScpO2lmKHRva2VuLmNoYXJhY3RlciE9PW5leHR0b2tlbi5mcm9tKXt3YXJuaW5nKCJVbmV4cGVjdGVkIHNwYWNlIGFmdGVyICctJy4iLHRva2VuKTt9CmFkamFjZW50KHRva2VuLG5leHR0b2tlbik7YWR2YW5jZSgnKG51bWJlciknKTticmVhaztkZWZhdWx0OmVycm9yKCJFeHBlY3RlZCBhIEpTT04gdmFsdWUuIixuZXh0dG9rZW4pO319CnZhciBpdHNlbGY9ZnVuY3Rpb24ocyxvKXt2YXIgYSxpO0pTTElOVC5lcnJvcnM9W107cHJlZGVmaW5lZD1PYmplY3QuY3JlYXRlKHN0YW5kYXJkKTtpZihvKXthPW8ucHJlZGVmO2lmKGEgaW5zdGFuY2VvZiBBcnJheSl7Zm9yKGk9MDtpPGEubGVuZ3RoO2krPTEpe3ByZWRlZmluZWRbYVtpXV09dHJ1ZTt9fQppZihvLmFkc2FmZSl7by5zYWZlPXRydWU7fQppZihvLnNhZmUpe28uYnJvd3Nlcj1mYWxzZTtvLmNzcz1mYWxzZTtvLmRlYnVnPWZhbHNlO28uZGV2ZWw9ZmFsc2U7by5lcWVxZXE9dHJ1ZTtvLmV2aWw9ZmFsc2U7by5mb3Jpbj1mYWxzZTtvLm5vbWVuPXRydWU7by5vbj1mYWxzZTtvLnJoaW5vPWZhbHNlO28uc2FmZT10cnVlO28uc2lkZWJhcj1mYWxzZTtvLnN0cmljdD10cnVlO28uc3ViPWZhbHNlO28udW5kZWY9dHJ1ZTtvLndpZGdldD1mYWxzZTtwcmVkZWZpbmVkLkRhdGU9bnVsbDtwcmVkZWZpbmVkWydldmFsJ109bnVsbDtwcmVkZWZpbmVkLkZ1bmN0aW9uPW51bGw7cHJlZGVmaW5lZC5PYmplY3Q9bnVsbDtwcmVkZWZpbmVkLkFEU0FGRT1mYWxzZTtwcmVkZWZpbmVkLmxpYj1mYWxzZTt9Cm9wdGlvbj1vO31lbHNle29wdGlvbj17fTt9Cm9wdGlvbi5pbmRlbnQ9b3B0aW9uLmluZGVudHx8NDtvcHRpb24ubWF4ZXJyPW9wdGlvbi5tYXhlcnJ8fDUwO2Fkc2FmZV9pZD0nJzthZHNhZmVfbWF5PWZhbHNlO2Fkc2FmZV93ZW50PWZhbHNlO2FwcHJvdmVkPXt9O2lmKG9wdGlvbi5hcHByb3ZlZCl7Zm9yKGk9MDtpPG9wdGlvbi5hcHByb3ZlZC5sZW5ndGg7aSs9MSl7YXBwcm92ZWRbb3B0aW9uLmFwcHJvdmVkW2ldXT1vcHRpb24uYXBwcm92ZWRbaV07fX1lbHNle2FwcHJvdmVkLnRlc3Q9J3Rlc3QnO30KdGFiPScnO2ZvcihpPTA7aTxvcHRpb24uaW5kZW50O2krPTEpe3RhYis9JyAnO30KaW5kZW50PTE7Z2xvYmFsPU9iamVjdC5jcmVhdGUocHJlZGVmaW5lZCk7c2NvcGU9Z2xvYmFsO2Z1bmN0PXsnKGdsb2JhbCknOnRydWUsJyhuYW1lKSc6JyhnbG9iYWwpJywnKHNjb3BlKSc6c2NvcGUsJyhicmVha2FnZSknOjAsJyhsb29wYWdlKSc6MH07ZnVuY3Rpb25zPVtmdW5jdF07aWRzPXt9O3VybHM9W107c3JjPWZhbHNlO3htb2RlPWZhbHNlO3N0YWNrPW51bGw7bWVtYmVyPXt9O21lbWJlcnNPbmx5PW51bGw7aW1wbGllZD17fTtpbmJsb2NrPWZhbHNlO2xvb2thaGVhZD1bXTtqc29ubW9kZT1mYWxzZTt3YXJuaW5ncz0wO2xleC5pbml0KHMpO3ByZXJlZz10cnVlO3N0cmljdF9tb2RlPWZhbHNlO3ByZXZ0b2tlbj10b2tlbj1uZXh0dG9rZW49c3ludGF4WycoYmVnaW4pJ107YXNzdW1lKCk7dHJ5e2FkdmFuY2UoKTtpZihuZXh0dG9rZW4udmFsdWUuY2hhckF0KDApPT09JzwnKXtodG1sKCk7aWYob3B0aW9uLmFkc2FmZSYmIWFkc2FmZV93ZW50KXt3YXJuaW5nKCJBRHNhZmUgdmlvbGF0aW9uOiBNaXNzaW5nIEFEU0FGRS5nby4iLHRoaXMpO319ZWxzZXtzd2l0Y2gobmV4dHRva2VuLmlkKXtjYXNlJ3snOmNhc2UnWyc6b3B0aW9uLmxheGJyZWFrPXRydWU7anNvbm1vZGU9dHJ1ZTtqc29uVmFsdWUoKTticmVhaztjYXNlJ0AnOmNhc2UnKic6Y2FzZScjJzpjYXNlJy4nOmNhc2UnOic6eG1vZGU9J3N0eWxlJzthZHZhbmNlKCk7aWYodG9rZW4uaWQhPT0nQCd8fCFuZXh0dG9rZW4uaWRlbnRpZmllcnx8bmV4dHRva2VuLnZhbHVlIT09J2NoYXJzZXQnfHx0b2tlbi5saW5lIT09MXx8dG9rZW4uZnJvbSE9PTEpe2Vycm9yKCdBIGNzcyBmaWxlIHNob3VsZCBiZWdpbiB3aXRoIEBjaGFyc2V0ICJVVEYtOCI7Jyk7fQphZHZhbmNlKCk7aWYobmV4dHRva2VuLnR5cGUhPT0nKHN0cmluZyknJiZuZXh0dG9rZW4udmFsdWUhPT0nVVRGLTgnKXtlcnJvcignQSBjc3MgZmlsZSBzaG91bGQgYmVnaW4gd2l0aCBAY2hhcnNldCAiVVRGLTgiOycpO30KYWR2YW5jZSgpO2FkdmFuY2UoJzsnKTtzdHlsZXMoKTticmVhaztkZWZhdWx0OmlmKG9wdGlvbi5hZHNhZmUmJm9wdGlvbi5mcmFnbWVudCl7ZXJyb3IoIkV4cGVjdGVkICd7YX0nIGFuZCBpbnN0ZWFkIHNhdyAne2J9Jy4iLG5leHR0b2tlbiwnPGRpdj4nLG5leHR0b2tlbi52YWx1ZSk7fQpzdGF0ZW1lbnRzKCdsaWInKTt9fQphZHZhbmNlKCcoZW5kKScpO31jYXRjaChlKXtpZihlKXtKU0xJTlQuZXJyb3JzLnB1c2goe3JlYXNvbjplLm1lc3NhZ2UsbGluZTplLmxpbmV8fG5leHR0b2tlbi5saW5lLGNoYXJhY3RlcjplLmNoYXJhY3Rlcnx8bmV4dHRva2VuLmZyb219LG51bGwpO319CnJldHVybiBKU0xJTlQuZXJyb3JzLmxlbmd0aD09PTA7fTtmdW5jdGlvbiBpc19hcnJheShvKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseShvKT09PSdbb2JqZWN0IEFycmF5XSc7fQpmdW5jdGlvbiB0b19hcnJheShvKXt2YXIgYT1bXSxrO2ZvcihrIGluIG8pe2lmKGlzX293bihvLGspKXthLnB1c2goayk7fX0KcmV0dXJuIGE7fQppdHNlbGYuZGF0YT1mdW5jdGlvbigpe3ZhciBkYXRhPXtmdW5jdGlvbnM6W119LGZ1LGdsb2JhbHMsaW1wbGllZHM9W10sZixpLGosbWVtYmVycz1bXSxuLHVudXNlZD1bXSx2O2lmKGl0c2VsZi5lcnJvcnMubGVuZ3RoKXtkYXRhLmVycm9ycz1pdHNlbGYuZXJyb3JzO30KaWYoanNvbm1vZGUpe2RhdGEuanNvbj10cnVlO30KZm9yKG4gaW4gaW1wbGllZCl7aWYoaXNfb3duKGltcGxpZWQsbikpe2ltcGxpZWRzLnB1c2goe25hbWU6bixsaW5lOmltcGxpZWRbbl19KTt9fQppZihpbXBsaWVkcy5sZW5ndGg+MCl7ZGF0YS5pbXBsaWVkcz1pbXBsaWVkczt9CmlmKHVybHMubGVuZ3RoPjApe2RhdGEudXJscz11cmxzO30KZ2xvYmFscz10b19hcnJheShzY29wZSk7aWYoZ2xvYmFscy5sZW5ndGg+MCl7ZGF0YS5nbG9iYWxzPWdsb2JhbHM7fQpmb3IoaT0xO2k8ZnVuY3Rpb25zLmxlbmd0aDtpKz0xKXtmPWZ1bmN0aW9uc1tpXTtmdT17fTtmb3Ioaj0wO2o8ZnVuY3Rpb25pY2l0eS5sZW5ndGg7ais9MSl7ZnVbZnVuY3Rpb25pY2l0eVtqXV09W107fQpmb3IobiBpbiBmKXtpZihpc19vd24oZixuKSYmbi5jaGFyQXQoMCkhPT0nKCcpe3Y9ZltuXTtpZihpc19hcnJheShmdVt2XSkpe2Z1W3ZdLnB1c2gobik7aWYodj09PSd1bnVzZWQnKXt1bnVzZWQucHVzaCh7bmFtZTpuLGxpbmU6ZlsnKGxpbmUpJ10sJ2Z1bmN0aW9uJzpmWycobmFtZSknXX0pO319fX0KZm9yKGo9MDtqPGZ1bmN0aW9uaWNpdHkubGVuZ3RoO2orPTEpe2lmKGZ1W2Z1bmN0aW9uaWNpdHlbal1dLmxlbmd0aD09PTApe2RlbGV0ZSBmdVtmdW5jdGlvbmljaXR5W2pdXTt9fQpmdS5uYW1lPWZbJyhuYW1lKSddO2Z1LnBhcmFtPWZbJyhwYXJhbXMpJ107ZnUubGluZT1mWycobGluZSknXTtmdS5sYXN0PWZbJyhsYXN0KSddO2RhdGEuZnVuY3Rpb25zLnB1c2goZnUpO30KaWYodW51c2VkLmxlbmd0aD4wKXtkYXRhLnVudXNlZD11bnVzZWQ7fQptZW1iZXJzPVtdO2ZvcihuIGluIG1lbWJlcil7aWYodHlwZW9mIG1lbWJlcltuXT09PSdudW1iZXInKXtkYXRhLm1lbWJlcj1tZW1iZXI7YnJlYWs7fX0KcmV0dXJuIGRhdGE7fTtpdHNlbGYucmVwb3J0PWZ1bmN0aW9uKG9wdGlvbil7dmFyIGRhdGE9aXRzZWxmLmRhdGEoKTt2YXIgYT1bXSxjLGUsZXJyLGYsaSxrLGwsbT0nJyxuLG89W10scztmdW5jdGlvbiBkZXRhaWwoaCxhcnJheSl7dmFyIGIsaSxzaW5ndWxhcml0eTtpZihhcnJheSl7by5wdXNoKCc8ZGl2PjxpPicraCsnPC9pPiAnKTthcnJheT1hcnJheS5zb3J0KCk7Zm9yKGk9MDtpPGFycmF5Lmxlbmd0aDtpKz0xKXtpZihhcnJheVtpXSE9PXNpbmd1bGFyaXR5KXtzaW5ndWxhcml0eT1hcnJheVtpXTtvLnB1c2goKGI/JywgJzonJykrc2luZ3VsYXJpdHkpO2I9dHJ1ZTt9fQpvLnB1c2goJzwvZGl2PicpO319CmlmKGRhdGEuZXJyb3JzfHxkYXRhLmltcGxpZWRzfHxkYXRhLnVudXNlZCl7ZXJyPXRydWU7by5wdXNoKCc8ZGl2IGlkPWVycm9ycz48aT5FcnJvcjo8L2k+Jyk7aWYoZGF0YS5lcnJvcnMpe2ZvcihpPTA7aTxkYXRhLmVycm9ycy5sZW5ndGg7aSs9MSl7Yz1kYXRhLmVycm9yc1tpXTtpZihjKXtlPWMuZXZpZGVuY2V8fCcnO28ucHVzaCgnPHA+UHJvYmxlbScrKGlzRmluaXRlKGMubGluZSk/JyBhdCBsaW5lICcrCmMubGluZSsnIGNoYXJhY3RlciAnK2MuY2hhcmFjdGVyOicnKSsnOiAnK2MucmVhc29uLmVudGl0eWlmeSgpKyc8L3A+PHAgY2xhc3M9ZXZpZGVuY2U+JysKKGUmJihlLmxlbmd0aD44MD9lLnNsaWNlKDAsNzcpKycuLi4nOmUpLmVudGl0eWlmeSgpKSsnPC9wPicpO319fQppZihkYXRhLmltcGxpZWRzKXtzPVtdO2ZvcihpPTA7aTxkYXRhLmltcGxpZWRzLmxlbmd0aDtpKz0xKXtzW2ldPSc8Y29kZT4nK2RhdGEuaW1wbGllZHNbaV0ubmFtZSsnPC9jb2RlPiZuYnNwOzxpPicrCmRhdGEuaW1wbGllZHNbaV0ubGluZSsnPC9pPic7fQpvLnB1c2goJzxwPjxpPkltcGxpZWQgZ2xvYmFsOjwvaT4gJytzLmpvaW4oJywgJykrJzwvcD4nKTt9CmlmKGRhdGEudW51c2VkKXtzPVtdO2ZvcihpPTA7aTxkYXRhLnVudXNlZC5sZW5ndGg7aSs9MSl7c1tpXT0nPGNvZGU+PHU+JytkYXRhLnVudXNlZFtpXS5uYW1lKyc8L3U+PC9jb2RlPiZuYnNwOzxpPicrCmRhdGEudW51c2VkW2ldLmxpbmUrJzwvaT4gPGNvZGU+JysKZGF0YS51bnVzZWRbaV1bJ2Z1bmN0aW9uJ10rJzwvY29kZT4nO30Kby5wdXNoKCc8cD48aT5VbnVzZWQgdmFyaWFibGU6PC9pPiAnK3Muam9pbignLCAnKSsnPC9wPicpO30KaWYoZGF0YS5qc29uKXtvLnB1c2goJzxwPkpTT046IGJhZC48L3A+Jyk7fQpvLnB1c2goJzwvZGl2PicpO30KaWYoIW9wdGlvbil7by5wdXNoKCc8YnI+PGRpdiBpZD1mdW5jdGlvbnM+Jyk7aWYoZGF0YS51cmxzKXtkZXRhaWwoIlVSTHM8YnI+IixkYXRhLnVybHMsJzxicj4nKTt9CmlmKHhtb2RlPT09J3N0eWxlJyl7by5wdXNoKCc8cD5DU1MuPC9wPicpO31lbHNlIGlmKGRhdGEuanNvbiYmIWVycil7by5wdXNoKCc8cD5KU09OOiBnb29kLjwvcD4nKTt9ZWxzZSBpZihkYXRhLmdsb2JhbHMpe28ucHVzaCgnPGRpdj48aT5HbG9iYWw8L2k+ICcrCmRhdGEuZ2xvYmFscy5zb3J0KCkuam9pbignLCAnKSsnPC9kaXY+Jyk7fWVsc2V7by5wdXNoKCc8ZGl2PjxpPk5vIG5ldyBnbG9iYWwgdmFyaWFibGVzIGludHJvZHVjZWQuPC9pPjwvZGl2PicpO30KZm9yKGk9MDtpPGRhdGEuZnVuY3Rpb25zLmxlbmd0aDtpKz0xKXtmPWRhdGEuZnVuY3Rpb25zW2ldO28ucHVzaCgnPGJyPjxkaXYgY2xhc3M9ZnVuY3Rpb24+PGk+JytmLmxpbmUrJy0nKwpmLmxhc3QrJzwvaT4gJysoZi5uYW1lfHwnJykrJygnKwooZi5wYXJhbT9mLnBhcmFtLmpvaW4oJywgJyk6JycpKycpPC9kaXY+Jyk7ZGV0YWlsKCc8YmlnPjxiPlVudXNlZDwvYj48L2JpZz4nLGYudW51c2VkKTtkZXRhaWwoJ0Nsb3N1cmUnLGYuY2xvc3VyZSk7ZGV0YWlsKCdWYXJpYWJsZScsZlsndmFyJ10pO2RldGFpbCgnRXhjZXB0aW9uJyxmLmV4Y2VwdGlvbik7ZGV0YWlsKCdPdXRlcicsZi5vdXRlcik7ZGV0YWlsKCdHbG9iYWwnLGYuZ2xvYmFsKTtkZXRhaWwoJ0xhYmVsJyxmLmxhYmVsKTt9CmlmKGRhdGEubWVtYmVyKXthPXRvX2FycmF5KGRhdGEubWVtYmVyKTtpZihhLmxlbmd0aCl7YT1hLnNvcnQoKTttPSc8YnI+PHByZSBpZD1tZW1iZXJzPi8qbWVtYmVycyAnO2w9MTA7Zm9yKGk9MDtpPGEubGVuZ3RoO2krPTEpe2s9YVtpXTtuPWsubmFtZSgpO2lmKGwrbi5sZW5ndGg+NzIpe28ucHVzaChtKyc8YnI+Jyk7bT0nICAgICc7bD0xO30KbCs9bi5sZW5ndGgrMjtpZihkYXRhLm1lbWJlcltrXT09PTEpe249JzxpPicrbisnPC9pPic7fQppZihpPGEubGVuZ3RoLTEpe24rPScsICc7fQptKz1uO30Kby5wdXNoKG0rJzxicj4qLzwvcHJlPicpO30Kby5wdXNoKCc8L2Rpdj4nKTt9fQpyZXR1cm4gby5qb2luKCcnKTt9O2l0c2VsZi5qc2xpbnQ9aXRzZWxmO2l0c2VsZi5lZGl0aW9uPScyMDEwLTAxLTEyJztyZXR1cm4gaXRzZWxmO30oKSk7</File>
        <File Location="var/httpd/htdocs/skins/Agent/default/css/Core.Fred.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIEZyZWQgQ1NTCiAqLwoKLkRldmVsRnJlZENvbnRhaW5lciB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDMzcHg7CiAgICByaWdodDogMTZweDsKICAgIHotaW5kZXg6IDUwMDA7Cn0KCi5EZXZlbEZyZWRDb250YWluZXI6aG92ZXIgewogICAgLXdlYmtpdC1vcGFjaXR5OiAxLjAgIWltcG9ydGFudDsKICAgIC1tb3otb3BhY2l0eTogMS4wICFpbXBvcnRhbnQ7CiAgICBvcGFjaXR5OiAxLjAgIWltcG9ydGFudDsKfQoKLkRldmVsRnJlZEJveCB7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDFweCAxcHggM3B4ICM3Nzc7CiAgICAtbW96LWJveC1zaGFkb3c6IDFweCAxcHggM3B4ICM3Nzc7CiAgICAtbXMtYm94LXNoYWRvdzogMXB4IDFweCAzcHggIzc3NzsKICAgIC1vLWJveC1zaGFkb3c6IDFweCAxcHggM3B4ICM3Nzc7CiAgICBib3gtc2hhZG93OiAxcHggMXB4IDNweCAjNzc3OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIG1hcmdpbi1ib3R0b206IDVweDsKfQoKLkRldmVsRnJlZEJveENvbnRlbnQgewogICAgbWF4LWhlaWdodDogMTUwcHg7CiAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgYm9yZGVyOiAxcHggc29saWQgI2FhYTsKICAgIGJvcmRlci10b3A6IDBweDsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5EZXZlbEZyZWRCb3hDb250ZW50LkV4cGFuZGVkIHsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgouRGV2ZWxGcmVkQm94Q29udGVudCAuRnJlZFF1aWNrU2VhcmNoIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjOwogICAgcGFkZGluZzogNXB4OwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAxcHggMXB4IDNweCAjNzc3LCBpbnNldCAtMXB4IC0xcHggM3B4ICM3Nzc7CiAgICAtbW96LWJveC1zaGFkb3c6IGluc2V0IDFweCAxcHggM3B4ICM3NzcsIGluc2V0IC0xcHggLTFweCAzcHggIzc3NzsKICAgIC1tcy1ib3gtc2hhZG93OiBpbnNldCAxcHggMXB4IDNweCAjNzc3LCBpbnNldCAtMXB4IC0xcHggM3B4ICM3Nzc7CiAgICAtby1ib3gtc2hhZG93OiBpbnNldCAxcHggMXB4IDNweCAjNzc3LCBpbnNldCAtMXB4IC0xcHggM3B4ICM3Nzc7CiAgICBib3gtc2hhZG93OiBpbnNldCAxcHggMXB4IDNweCAjNzc3LCBpbnNldCAtMXB4IC0xcHggM3B4ICM3Nzc7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5EZXZlbEZyZWRCb3hDb250ZW50IC5GcmVkUXVpY2tTZWFyY2ggaW5wdXQgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogOTglOwogICAgYm9yZGVyOiAxcHggc29saWQgI2FhYTsKICAgIGZvbnQtc2l6ZTogMTFweDsKfQoKLkRldmVsRnJlZEJveENvbnRlbnQgLkZyZWRRdWlja1NlYXJjaCBpIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAyLjUlOwogICAgdG9wOiA5cHg7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBjb2xvcjogI2NjYzsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKLkRldmVsRnJlZEJveENvbnRlbnQgLkZyZWRRdWlja1NlYXJjaDpob3ZlciBpIHsKICAgIGNvbG9yOiAjMzMzOwp9CgouRGV2ZWxGcmVkQm94IC5zdHJvbmcsCi5EZXZlbEZyZWRCb3ggLnN0cm9uZyAqIHsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgouRGV2ZWxGcmVkQm94IGgxIHsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyNTU1NjU7CiAgICBjb2xvcjogI2ZmZjsKICAgIG1hcmdpbjogMHB4OwogICAgcGFkZGluZzogNnB4IDdweDsKICAgIGN1cnNvcjogbW92ZTsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5EZXZlbEZyZWRCb3guRXhwYW5kZWQgaDEgewogICAgYmFja2dyb3VuZDogIzI1NTU2NTsKfQoKLkRldmVsRnJlZEJveC5Db2xsYXBzZWQgaDEgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzg4ODsKfQoKLkRldmVsRnJlZEJveCBoMSAuRnJlZFRvb2xCYXIgewogICAgZmxvYXQ6IHJpZ2h0Owp9CgouRGV2ZWxGcmVkQm94IGgxIC5GcmVkVG9vbEJhciBpIHsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwp9CgojRnJlZEpTTGludFNjcmlwdHMgewogICAgcGFkZGluZzogNXB4Owp9CgouRnJlZEpTTGludFN1Y2Nlc3NmdWwgewogICAgY29sb3I6IGdyZWVuOwp9CgouRnJlZEpTTGludEVycm9yIHsKICAgIG1hcmdpbi1ib3R0b206IDZweDsKICAgIGZvbnQtc2l6ZTogMTFweDsKfQoKYm9keSAjRnJlZEhUTUxDaGVja1Jlc3VsdHMgcCAsCmJvZHkgI0ZyZWRIVE1MQ2hlY2tSZXN1bHRzIHByZSwKYm9keSAjRnJlZEpTTGludFNjcmlwdHMgcCAsCmJvZHkgI0ZyZWRKU0xpbnRTY3JpcHRzIHByZSB7CiAgICBtYXJnaW46IDBweDsKICAgIHBhZGRpbmc6IDBweDsKfQoKLkRldmVsRnJlZFNldHRpbmdzIHsKICAgIHBhZGRpbmc6IDE1cHg7Cn0KCi5EZXZlbEZyZWRTZXR0aW5ncyBoMSB7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBtYXJnaW46IDBweCAwcHggMTBweCAwcHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5EZXZlbEZyZWRTZXR0aW5ncyB1bCB7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9CgouRGV2ZWxGcmVkU2V0dGluZ3MgLkNhbGxGb3JBY3Rpb24gewogICAgbWFyZ2luOiAwcHggYXV0bzsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgouRGV2ZWxGcmVkU2V0dGluZ3MgbGkgewogICAgbWFyZ2luLWJvdHRvbTogMnB4OwogICAgZm9udC1zaXplOiAxMXB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouRGV2ZWxGcmVkU2V0dGluZ3MgbGkgc3BhbiB7CiAgICBjb2xvcjogIzc3Nzc3NzsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZm9udC1zaXplOiAxMHB4OwogICAgcGFkZGluZy1sZWZ0OiAyM3B4OwogICAgbWFyZ2luLWJvdHRvbTogM3B4OwogICAgbGluZS1oZWlnaHQ6IDEzMCU7Cn0KCi5EZXZlbEZyZWRTZXR0aW5ncyBsaSBsYWJlbCB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBhZGRpbmc6IDNweCAyMHB4IDNweCA1cHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwp9CgouRGV2ZWxGcmVkU2V0dGluZ3MgbGk6aG92ZXIgbGFiZWwgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2RkZDsKfQoKLkRldmVsRnJlZFNldHRpbmdzIGxpIGEgewogICAgY29sb3I6ICMwMDA7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICByaWdodDogNnB4OwogICAgdG9wOiA2cHg7CiAgICBmb250LXNpemU6IDEzcHg7Cn0KCnRhYmxlLkZyZWRUYWJsZURlZmF1bHQgewogICAgd2lkdGg6IDEwMCU7CiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwp9Cgp0YWJsZS5GcmVkVGFibGVEZWZhdWx0IHRoIHsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwp9Cgp0YWJsZS5GcmVkVGFibGVEZWZhdWx0IHRkLAp0YWJsZS5GcmVkVGFibGVEZWZhdWx0IHRoIHsKICAgIHBhZGRpbmc6IDVweCA1cHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2NjYzsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkZGQ7Cn0KCnRhYmxlLkZyZWRUYWJsZURlZmF1bHQgdGggewogICAgYmFja2dyb3VuZC1jb2xvcjogI2RkZDsKICAgIGJvcmRlci1yaWdodC1jb2xvcjogI2FhYTsKfQoKdGFibGUuRnJlZFRhYmxlRGVmYXVsdCB0cjpudGgtY2hpbGQob2RkKSB0ZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwp9Cgp0YWJsZS5GcmVkVGFibGVEZWZhdWx0IHRyOmxhc3QtY2hpbGQgdGQgewogICAgYm9yZGVyLWJvdHRvbTogMHB4Owp9CgouRGV2ZWxGcmVkQm94IC5GcmVkRWxlbWVudExpc3QgewogICAgcGFkZGluZzogNXB4IDNweCAwcHggNXB4Owp9CgouRnJlZEVsZW1lbnRMaXN0IHNwYW4gewogICAgZm9udC1zaXplOiAxMXB4OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZzogM3B4IDVweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwogICAgbWFyZ2luOiAwcHggM3B4IDVweCAwcHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDNweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogM3B4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDNweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDNweDsKICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi5GcmVkRWxlbWVudExpc3Qgc3BhbiBpIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHRvcDogMXB4Owp9CgouRnJlZEVsZW1lbnRMaXN0IHNwYW4gYSB7CiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgIGNvbG9yOiAjMDAwOwp9CgouRnJlZEVsZW1lbnRMaXN0IHNwYW4gYTpob3ZlciB7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi5GcmVkRWxlbWVudExpc3Qgc3Bhbi5XYXJuaW5nIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKICAgIGNvbG9yOiAjZmZmOwogICAgYm9yZGVyLWNvbG9yOiAjQ0UwMDAwOwp9CgouRnJlZE1vbm9TcGFjZSB7CiAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogICAgZm9udC1zaXplOiAxMXB4OwogICAgbGluZS1oZWlnaHQ6IDEzMCU7CiAgICBwYWRkaW5nOiAxMHB4OwogICAgd2hpdGUtc3BhY2U6IHByZTsKfQoKdGFibGUuRnJlZFN3aXRjaFRhYmxlIHRkIHsKICAgIHBhZGRpbmc6IDNweDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCnRhYmxlLkZyZWRTd2l0Y2hUYWJsZSB0ZDpmaXJzdC1jaGlsZCB7CiAgICB3aWR0aDogNDBweDsKfQoKdGFibGUuRnJlZFN3aXRjaFRhYmxlIHRkOmxhc3QtY2hpbGQgewogICAgcGFkZGluZy1sZWZ0OiAxMHB4Owp9CgouRnJlZFN3aXRjaCBhIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgd2lkdGg6IDMwcHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjODg4OwogICAgaGVpZ2h0OiAxNnB4OwogICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgIG1hcmdpbjogMHB4IGF1dG87CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlCn0KCi5GcmVkU3dpdGNoIGEgc3BhbiB7CiAgICB3aWR0aDogMTVweDsKICAgIGhlaWdodDogMTRweDsKICAgIGJvcmRlci1yYWRpdXM6IDEzcHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjMzMzOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiAtMXB4OwogICAgdG9wOiAwcHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluOwogICAgIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbjsKICAgICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW47CiAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluOwp9CgouRnJlZFN3aXRjaC5PbiBhIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICM3Nzc7CiAgICBib3JkZXItY29sb3I6ICMzMzM7Cn0KCi5GcmVkU3dpdGNoLk9uIHNwYW4gewogICAgcmlnaHQ6IC0xcHg7CiAgICBsZWZ0OiBhdXRvOwp9CgouRGV2ZWxGcmVkVG9nZ2xlQ29udGFpbmVyIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiA1cHg7Cn0KCmEjRGV2ZWxGcmVkVG9nZ2xlQ29udGFpbmVyTGluayB7CiAgICBmb250LXNpemU6IDM1cHg7CiAgICBmb250LXdlaWdodDpib2xkOwogICAgY29sb3I6ICM4MDgwODA7Cn0KCmEjRGV2ZWxGcmVkVG9nZ2xlQ29udGFpbmVyTGluay5GcmVkQWN0aXZlIHsKICAgIGZvbnQtc2l6ZTogMzVweDsKICAgIGZvbnQtd2VpZ2h0OmJvbGQ7CiAgICBjb2xvcjogIzAwNmVhNTsKfQo=</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/Core.Fred.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIEZyZWQgQ1NTCiAqLwoKLkRldmVsRnJlZENvbnRhaW5lciB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDMzcHg7CiAgICByaWdodDogMTZweDsKICAgIHotaW5kZXg6IDUwMDA7Cn0KCi5EZXZlbEZyZWRDb250YWluZXI6aG92ZXIgewogICAgLXdlYmtpdC1vcGFjaXR5OiAxLjAgIWltcG9ydGFudDsKICAgIC1tb3otb3BhY2l0eTogMS4wICFpbXBvcnRhbnQ7CiAgICBvcGFjaXR5OiAxLjAgIWltcG9ydGFudDsKfQoKLkRldmVsRnJlZEJveCB7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDFweCAxcHggM3B4ICM3Nzc7CiAgICAtbW96LWJveC1zaGFkb3c6IDFweCAxcHggM3B4ICM3Nzc7CiAgICAtbXMtYm94LXNoYWRvdzogMXB4IDFweCAzcHggIzc3NzsKICAgIC1vLWJveC1zaGFkb3c6IDFweCAxcHggM3B4ICM3Nzc7CiAgICBib3gtc2hhZG93OiAxcHggMXB4IDNweCAjNzc3OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgIG1hcmdpbi1ib3R0b206IDVweDsKfQoKLkRldmVsRnJlZEJveENvbnRlbnQgewogICAgbWF4LWhlaWdodDogMTUwcHg7CiAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgYm9yZGVyOiAxcHggc29saWQgI2FhYTsKICAgIGJvcmRlci10b3A6IDBweDsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5EZXZlbEZyZWRCb3hDb250ZW50LkV4cGFuZGVkIHsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgouRGV2ZWxGcmVkQm94Q29udGVudCAuRnJlZFF1aWNrU2VhcmNoIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjOwogICAgcGFkZGluZzogNXB4OwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAxcHggMXB4IDNweCAjNzc3LCBpbnNldCAtMXB4IC0xcHggM3B4ICM3Nzc7CiAgICAtbW96LWJveC1zaGFkb3c6IGluc2V0IDFweCAxcHggM3B4ICM3NzcsIGluc2V0IC0xcHggLTFweCAzcHggIzc3NzsKICAgIC1tcy1ib3gtc2hhZG93OiBpbnNldCAxcHggMXB4IDNweCAjNzc3LCBpbnNldCAtMXB4IC0xcHggM3B4ICM3Nzc7CiAgICAtby1ib3gtc2hhZG93OiBpbnNldCAxcHggMXB4IDNweCAjNzc3LCBpbnNldCAtMXB4IC0xcHggM3B4ICM3Nzc7CiAgICBib3gtc2hhZG93OiBpbnNldCAxcHggMXB4IDNweCAjNzc3LCBpbnNldCAtMXB4IC0xcHggM3B4ICM3Nzc7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5EZXZlbEZyZWRCb3hDb250ZW50IC5GcmVkUXVpY2tTZWFyY2ggaW5wdXQgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogOTglOwogICAgYm9yZGVyOiAxcHggc29saWQgI2FhYTsKICAgIGZvbnQtc2l6ZTogMTFweDsKfQoKLkRldmVsRnJlZEJveENvbnRlbnQgLkZyZWRRdWlja1NlYXJjaCBpIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAyLjUlOwogICAgdG9wOiA5cHg7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBjb2xvcjogI2NjYzsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKLkRldmVsRnJlZEJveENvbnRlbnQgLkZyZWRRdWlja1NlYXJjaDpob3ZlciBpIHsKICAgIGNvbG9yOiAjMzMzOwp9CgouRGV2ZWxGcmVkQm94IC5zdHJvbmcsCi5EZXZlbEZyZWRCb3ggLnN0cm9uZyAqIHsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgouRGV2ZWxGcmVkQm94IGgxIHsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyNTU1NjU7CiAgICBjb2xvcjogI2ZmZjsKICAgIG1hcmdpbjogMHB4OwogICAgcGFkZGluZzogNnB4IDdweDsKICAgIGN1cnNvcjogbW92ZTsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5EZXZlbEZyZWRCb3guRXhwYW5kZWQgaDEgewogICAgYmFja2dyb3VuZDogIzI1NTU2NTsKfQoKLkRldmVsRnJlZEJveC5Db2xsYXBzZWQgaDEgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzg4ODsKfQoKLkRldmVsRnJlZEJveCBoMSAuRnJlZFRvb2xCYXIgewogICAgZmxvYXQ6IHJpZ2h0Owp9CgouRGV2ZWxGcmVkQm94IGgxIC5GcmVkVG9vbEJhciBpIHsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwp9CgojRnJlZEpTTGludFNjcmlwdHMgewogICAgcGFkZGluZzogNXB4Owp9CgouRnJlZEpTTGludFN1Y2Nlc3NmdWwgewogICAgY29sb3I6IGdyZWVuOwp9CgouRnJlZEpTTGludEVycm9yIHsKICAgIG1hcmdpbi1ib3R0b206IDZweDsKICAgIGZvbnQtc2l6ZTogMTFweDsKfQoKYm9keSAjRnJlZEhUTUxDaGVja1Jlc3VsdHMgcCAsCmJvZHkgI0ZyZWRIVE1MQ2hlY2tSZXN1bHRzIHByZSwKYm9keSAjRnJlZEpTTGludFNjcmlwdHMgcCAsCmJvZHkgI0ZyZWRKU0xpbnRTY3JpcHRzIHByZSB7CiAgICBtYXJnaW46IDBweDsKICAgIHBhZGRpbmc6IDBweDsKfQoKLkRldmVsRnJlZFNldHRpbmdzIHsKICAgIHBhZGRpbmc6IDE1cHg7Cn0KCi5EZXZlbEZyZWRTZXR0aW5ncyBoMSB7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBtYXJnaW46IDBweCAwcHggMTBweCAwcHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5EZXZlbEZyZWRTZXR0aW5ncyB1bCB7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9CgouRGV2ZWxGcmVkU2V0dGluZ3MgLkNhbGxGb3JBY3Rpb24gewogICAgbWFyZ2luOiAwcHggYXV0bzsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgouRGV2ZWxGcmVkU2V0dGluZ3MgbGkgewogICAgbWFyZ2luLWJvdHRvbTogMnB4OwogICAgZm9udC1zaXplOiAxMXB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouRGV2ZWxGcmVkU2V0dGluZ3MgbGkgc3BhbiB7CiAgICBjb2xvcjogIzc3Nzc3NzsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZm9udC1zaXplOiAxMHB4OwogICAgcGFkZGluZy1sZWZ0OiAyM3B4OwogICAgbWFyZ2luLWJvdHRvbTogM3B4OwogICAgbGluZS1oZWlnaHQ6IDEzMCU7Cn0KCi5EZXZlbEZyZWRTZXR0aW5ncyBsaSBsYWJlbCB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBhZGRpbmc6IDNweCAyMHB4IDNweCA1cHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwp9CgouRGV2ZWxGcmVkU2V0dGluZ3MgbGk6aG92ZXIgbGFiZWwgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2RkZDsKfQoKLkRldmVsRnJlZFNldHRpbmdzIGxpIGEgewogICAgY29sb3I6ICMwMDA7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICByaWdodDogNnB4OwogICAgdG9wOiA2cHg7CiAgICBmb250LXNpemU6IDEzcHg7Cn0KCnRhYmxlLkZyZWRUYWJsZURlZmF1bHQgewogICAgd2lkdGg6IDEwMCU7CiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwp9Cgp0YWJsZS5GcmVkVGFibGVEZWZhdWx0IHRoIHsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwp9Cgp0YWJsZS5GcmVkVGFibGVEZWZhdWx0IHRkLAp0YWJsZS5GcmVkVGFibGVEZWZhdWx0IHRoIHsKICAgIHBhZGRpbmc6IDVweCA1cHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2NjYzsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkZGQ7Cn0KCnRhYmxlLkZyZWRUYWJsZURlZmF1bHQgdGggewogICAgYmFja2dyb3VuZC1jb2xvcjogI2RkZDsKICAgIGJvcmRlci1yaWdodC1jb2xvcjogI2FhYTsKfQoKdGFibGUuRnJlZFRhYmxlRGVmYXVsdCB0cjpudGgtY2hpbGQob2RkKSB0ZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwp9Cgp0YWJsZS5GcmVkVGFibGVEZWZhdWx0IHRyOmxhc3QtY2hpbGQgdGQgewogICAgYm9yZGVyLWJvdHRvbTogMHB4Owp9CgouRGV2ZWxGcmVkQm94IC5GcmVkRWxlbWVudExpc3QgewogICAgcGFkZGluZzogNXB4IDNweCAwcHggNXB4Owp9CgouRnJlZEVsZW1lbnRMaXN0IHNwYW4gewogICAgZm9udC1zaXplOiAxMXB4OwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZzogM3B4IDVweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwogICAgbWFyZ2luOiAwcHggM3B4IDVweCAwcHg7CiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDNweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1czogM3B4OwogICAgLW1zLWJvcmRlci1yYWRpdXM6IDNweDsKICAgIC1vLWJvcmRlci1yYWRpdXM6IDNweDsKICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi5GcmVkRWxlbWVudExpc3Qgc3BhbiBpIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHRvcDogMXB4Owp9CgouRnJlZEVsZW1lbnRMaXN0IHNwYW4gYSB7CiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgIGNvbG9yOiAjMDAwOwp9CgouRnJlZEVsZW1lbnRMaXN0IHNwYW4gYTpob3ZlciB7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi5GcmVkRWxlbWVudExpc3Qgc3Bhbi5XYXJuaW5nIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKICAgIGNvbG9yOiAjZmZmOwogICAgYm9yZGVyLWNvbG9yOiAjQ0UwMDAwOwp9CgouRnJlZE1vbm9TcGFjZSB7CiAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogICAgZm9udC1zaXplOiAxMXB4OwogICAgbGluZS1oZWlnaHQ6IDEzMCU7CiAgICBwYWRkaW5nOiAxMHB4OwogICAgd2hpdGUtc3BhY2U6IHByZS1saW5lOwp9Cgp0YWJsZS5GcmVkU3dpdGNoVGFibGUgdGQgewogICAgcGFkZGluZzogM3B4OwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQoKdGFibGUuRnJlZFN3aXRjaFRhYmxlIHRkOmZpcnN0LWNoaWxkIHsKICAgIHdpZHRoOiA0MHB4Owp9Cgp0YWJsZS5GcmVkU3dpdGNoVGFibGUgdGQ6bGFzdC1jaGlsZCB7CiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7Cn0KCi5GcmVkU3dpdGNoIGEgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogMzBweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICM4ODg7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgbWFyZ2luOiAwcHggYXV0bzsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWUKfQoKLkZyZWRTd2l0Y2ggYSBzcGFuIHsKICAgIHdpZHRoOiAxNXB4OwogICAgaGVpZ2h0OiAxNHB4OwogICAgYm9yZGVyLXJhZGl1czogMTNweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICMzMzM7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGxlZnQ6IC0xcHg7CiAgICB0b3A6IDBweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW47CiAgICAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluOwogICAgICAgLW8tdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbjsKICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW47Cn0KCi5GcmVkU3dpdGNoLk9uIGEgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzc3NzsKICAgIGJvcmRlci1jb2xvcjogIzMzMzsKfQoKLkZyZWRTd2l0Y2guT24gc3BhbiB7CiAgICByaWdodDogLTFweDsKICAgIGxlZnQ6IGF1dG87Cn0KCi5EZXZlbEZyZWRUb2dnbGVDb250YWluZXIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgcmlnaHQ6IDVweDsKfQoKYSNEZXZlbEZyZWRUb2dnbGVDb250YWluZXJMaW5rIHsKICAgIGZvbnQtc2l6ZTogMzVweDsKICAgIGZvbnQtd2VpZ2h0OmJvbGQ7CiAgICBjb2xvcjogIzgwODA4MDsKfQoKYSNEZXZlbEZyZWRUb2dnbGVDb250YWluZXJMaW5rLkZyZWRBY3RpdmUgewogICAgZm9udC1zaXplOiAzNXB4OwogICAgZm9udC13ZWlnaHQ6Ym9sZDsKICAgIGNvbG9yOiAjMDA2ZWE1Owp9Cg==</File>
        <File Location="doc/en/Fred.pdf" Permission="644" Encode="Base64">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</File>
    </Filelist>
</otrs_package>