From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id A62B3138A1C for ; Thu, 20 Nov 2014 08:20:04 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 193FCE08D4; Thu, 20 Nov 2014 08:20:03 +0000 (UTC) Received: from mail-wi0-f173.google.com (mail-wi0-f173.google.com [209.85.212.173]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 0C035E08D4 for ; Thu, 20 Nov 2014 08:20:01 +0000 (UTC) Received: by mail-wi0-f173.google.com with SMTP id r20so7819821wiv.12 for ; Thu, 20 Nov 2014 00:20:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to:content-type; bh=n6ke3ri1Hi0g9fD6AjH4NFhMmO4h47dUuR5tf9ZrM+0=; b=h7rReAFuekg5Ph9iG30KdI4/6AT96/QBwC+Ak3mBS7CWSYNgB+8vQoDEHNrbpW75np bnQHbs6g3WI2Y2+GR5mUUm9AYRq7Tu291AVJR24wVAnqW3oOuUGzNjG+FnPYQwVW4QHp 1rkRrVtjw/yOdH/d86tgeweBn9O1GqKRAoZwfPd8uhW7RyRHhggHsavaRrJfdA27Xb6d 3PSAkFEN//JdUA3Tv/WqXzDVu/4LZrsN0oizXD9H/aKzay4xjV7OvH+WD0Wst7YZGkch YlOtCnL/MaEf4r3dm6CI6MSFCIjsC2B3QC3+KDl6Ah4FVPLP1EG/xGpLcWWoWy03f8fk uMhQ== X-Received: by 10.194.19.4 with SMTP id a4mr65209798wje.3.1416471600546; Thu, 20 Nov 2014 00:20:00 -0800 (PST) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-catalyst@lists.gentoo.org Reply-to: gentoo-catalyst@lists.gentoo.org MIME-Version: 1.0 Received: by 10.27.13.142 with HTTP; Thu, 20 Nov 2014 00:19:38 -0800 (PST) From: Jeramia Poland Date: Thu, 20 Nov 2014 13:49:38 +0530 Message-ID: Subject: [gentoo-catalyst] emerge ati-drivers-14.4_p1 fails 3.16.5-sources xorg 1.15 gcc 4.8.3 graphite and lto To: gentoo-catalyst@lists.gentoo.org Content-Type: multipart/mixed; boundary=047d7b5d619495ec26050845fe8d X-Archives-Salt: 54733e76-5555-4132-99da-b529f48ccb17 X-Archives-Hash: fb742946de0b167d01c51eb1dfec5a07 --047d7b5d619495ec26050845fe8d Content-Type: multipart/alternative; boundary=047d7b5d619495ec18050845fe8b --047d7b5d619495ec18050845fe8b Content-Type: text/plain; charset=UTF-8 Emerging ati-drivers-14.4_p1 fails on a 3.16.5-sources install with xorg 1.15 and gcc 4.8.3 with graphite and lto enabled. I enabled graphite and lto using these steps: http://yuguangzhang.com/blog/enabling-gcc-graphite-and-lto-on-gentoo/ I thought graphite and or lto could be a problem so I added the no-lto and no-graphite options for ati-drivers in the package.env file but no luck. I tried changing to the gcc-4.8.3 vanilla profile through gcc-config but that didn't work either. I am getting a message from portage about missing xattr pax and how that might lead to a problem with ati-drivers but I'm not sure how to enable those. Attached are the info file, build log, pqv output and environment files. Anybody know what I should do? Thanks, Jeramia --047d7b5d619495ec18050845fe8b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Emerging ati-drivers-14.4_p1 fails on a 3.16.5-sources ins= tall with xorg 1.15 and gcc 4.8.3 with graphite and lto enabled.=C2=A0 I en= abled graphite and lto using these steps:

I thought graphite and or lto could be a problem so I added the no-lt= o and no-graphite options for ati-drivers in the package.env file but no lu= ck.

I tried changing to the gcc-4.8.3 vanilla prof= ile through gcc-config but that didn't work either.

I am getting a message from portage about missing xattr pax and how t= hat might lead to a problem with ati-drivers but I'm not sure how to en= able those.

Attached are the info file, build log,= pqv output and environment files.

Anybody know wh= at I should do?

Thanks,
Jeramia
--047d7b5d619495ec18050845fe8b-- --047d7b5d619495ec26050845fe8d Content-Type: text/plain; charset=US-ASCII; name="info.txt" Content-Disposition: attachment; filename="info.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i2puklb12 UG9ydGFnZSAyLjIuOC1yMiAoaGFyZGVuZWQvbGludXgvYW1kNjQsIGdjYy00LjguMywgZ2xpYmMt Mi4xOS1yMSwgMy4xNi41LWdlbnRvbyB4ODZfNjQpCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAg ICAgICAgICBTeXN0ZW0gU2V0dGluZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KU3lzdGVtIHVuYW1lOiBMaW51eC0zLjE2 LjUtZ2VudG9vLXg4Nl82NC1BTURfQTEwLTU3MDBfQVBVX3dpdGhfUmFkZW9uLXRtLV9IRF9HcmFw aGljcy13aXRoLWdlbnRvby0yLjIKS2lCIE1lbTogICAgMTU4NzM2MDggdG90YWwsICAgOTIzMTQy OCBmcmVlCktpQiBTd2FwOiAgICAgICAgICAwIHRvdGFsLCAgICAgICAgIDAgZnJlZQpUaW1lc3Rh bXAgb2YgdHJlZTogU3VuLCAwOSBOb3YgMjAxNCAwODowMDowMSArMDAwMApsZCBHTlUgZ29sZCAo R2VudG9vIDIuMjQgcDEuNCAyLjI0KSAxLjExCmNjYWNoZSB2ZXJzaW9uIDMuMS45IFtkaXNhYmxl ZF0KYXBwLXNoZWxscy9iYXNoOiAgICAgICAgICA0LjJfcDUzCmRldi1qYXZhL2phdmEtY29uZmln OiAgICAgMi4yLjAKZGV2LWxhbmcvcGVybDogICAgICAgICAgICA1LjE4LjItcjIKZGV2LWxhbmcv cHl0aG9uOiAgICAgICAgICAyLjcuNywgMy4zLjUtcjEsIDMuNC4xCmRldi11dGlsL2NjYWNoZTog ICAgICAgICAgMy4xLjktcjMKZGV2LXV0aWwvY21ha2U6ICAgICAgICAgICAyLjguMTIuMi1yMQpk ZXYtdXRpbC9wa2djb25maWc6ICAgICAgIDAuMjgtcjEKc3lzLWFwcHMvYmFzZWxheW91dDogICAg ICAyLjIKc3lzLWFwcHMvb3BlbnJjOiAgICAgICAgICAwLjEyLjQKc3lzLWFwcHMvc2FuZGJveDog ICAgICAgICAyLjYtcjEKc3lzLWRldmVsL2F1dG9jb25mOiAgICAgICAyLjEzLCAyLjY5CnN5cy1k ZXZlbC9hdXRvbWFrZTogICAgICAgMS4xMy40CnN5cy1kZXZlbC9iaW51dGlsczogICAgICAgMi4y NC1yMwpzeXMtZGV2ZWwvZ2NjOiAgICAgICAgICAgIDQuOC4zCnN5cy1kZXZlbC9nY2MtY29uZmln OiAgICAgMS43LjMKc3lzLWRldmVsL2xpYnRvb2w6ICAgICAgICAyLjQuMi1yMQpzeXMtZGV2ZWwv bWFrZTogICAgICAgICAgIDQuMC1yMQpzeXMta2VybmVsL2xpbnV4LWhlYWRlcnM6IDMuMTMgKHZp cnR1YWwvb3MtaGVhZGVycykKc3lzLWxpYnMvZ2xpYmM6ICAgICAgICAgICAyLjE5LXIxClJlcG9z aXRvcmllczogZ2VudG9vIENsb29nUGF0Y2ggc2NpZW5jZSBzYWdlLW9uLWdlbnRvbwpBQ0NFUFRf S0VZV09SRFM9ImFtZDY0IgpBQ0NFUFRfTElDRU5TRT0iKiAtQEVVTEEiCkNCVUlMRD0ieDg2XzY0 LXBjLWxpbnV4LWdudSIKQ0ZMQUdTPSItbWFyY2g9bmF0aXZlIC1PMiAtcGlwZSAtZmx0bz00IC1m bG9vcC1pbnRlcmNoYW5nZSAtZnRyZWUtbG9vcC1kaXN0cmlidXRpb24gLWZsb29wLXN0cmlwLW1p bmUgLWZsb29wLWJsb2NrIC1mdHJlZS12ZWN0b3JpemUiCkNIT1NUPSJ4ODZfNjQtcGMtbGludXgt Z251IgpDT05GSUdfUFJPVEVDVD0iL2V0YyAvdXNyL3NoYXJlL2dudXBnL3F1YWxpZmllZC50eHQi CkNPTkZJR19QUk9URUNUX01BU0s9Ii9ldGMvY2EtY2VydGlmaWNhdGVzLmNvbmYgL2V0Yy9lbnYu ZCAvZXRjL2djb25mIC9ldGMvZ2VudG9vLXJlbGVhc2UgL2V0Yy9yZXZkZXAtcmVidWlsZCAvZXRj L3NhbmRib3guZCAvZXRjL3Rlcm1pbmZvIgpDWFhGTEFHUz0iLW1hcmNoPW5hdGl2ZSAtTzIgLXBp cGUgLWZsdG89NCAtZmxvb3AtaW50ZXJjaGFuZ2UgLWZ0cmVlLWxvb3AtZGlzdHJpYnV0aW9uIC1m bG9vcC1zdHJpcC1taW5lIC1mbG9vcC1ibG9jayAtZnRyZWUtdmVjdG9yaXplIgpESVNURElSPSIv dXNyL3BvcnRhZ2UvZGlzdGZpbGVzIgpGQ0ZMQUdTPSItTzIgLXBpcGUiCkZFQVRVUkVTPSJhc3N1 bWUtZGlnZXN0cyBiaW5wa2ctbG9ncyBjb25maWctcHJvdGVjdC1pZi1tb2RpZmllZCBkaXN0bG9j a3MgZWJ1aWxkLWxvY2tzIGZpeGxhZmlsZXMgbWVyZ2Utc3luYyBuZXdzIHBhcmFsbGVsLWZldGNo IHByZXNlcnZlLWxpYnMgcHJvdGVjdC1vd25lZCBzYW5kYm94IHNmcGVybXMgc3RyaWN0IHVua25v d24tZmVhdHVyZXMtd2FybiB1bm1lcmdlLWxvZ3MgdW5tZXJnZS1vcnBoYW5zIHVzZXJmZXRjaCB1 c2VycHJpdiB1c2Vyc2FuZGJveCB1c2Vyc3luYyB4YXR0ciIKRkZMQUdTPSItTzIgLXBpcGUiCkdF TlRPT19NSVJST1JTPSJodHRwOi8vZ2VudG9vLmFkaXRzdS5uZXQ6ODAwMC8gaHR0cDovL2dlbnRv by5tb2R1bGl4Lm5ldC9nZW50b28vIGh0dHA6Ly9nZW50b28uZ2czLm5ldC8iCkxBTkc9ImVuX1VT LnV0ZjgiCkxERkxBR1M9Ii1tYXJjaD1uYXRpdmUgLU8yIC1waXBlIC1mbHRvPTQgLWZsb29wLWlu dGVyY2hhbmdlIC1mdHJlZS1sb29wLWRpc3RyaWJ1dGlvbiAtZmxvb3Atc3RyaXAtbWluZSAtZmxv b3AtYmxvY2sgLWZ0cmVlLXZlY3Rvcml6ZSAtZnVzZS1saW5rZXItcGx1Z2luIgpNQUtFT1BUUz0i LWo1IgpQS0dESVI9Ii91c3IvcG9ydGFnZS9wYWNrYWdlcyIKUE9SVEFHRV9DT05GSUdST09UPSIv IgpQT1JUQUdFX1JTWU5DX09QVFM9Ii0tcmVjdXJzaXZlIC0tbGlua3MgLS1zYWZlLWxpbmtzIC0t cGVybXMgLS10aW1lcyAtLW9taXQtZGlyLXRpbWVzIC0tY29tcHJlc3MgLS1mb3JjZSAtLXdob2xl LWZpbGUgLS1kZWxldGUgLS1zdGF0cyAtLWh1bWFuLXJlYWRhYmxlIC0tdGltZW91dD0xODAgLS1l eGNsdWRlPS9kaXN0ZmlsZXMgLS1leGNsdWRlPS9sb2NhbCAtLWV4Y2x1ZGU9L3BhY2thZ2VzIgpQ T1JUQUdFX1RNUERJUj0iL3Zhci90bXAiClBPUlRESVI9Ii91c3IvcG9ydGFnZSIKUE9SVERJUl9P VkVSTEFZPSIvdXNyL2xvY2FsL3BvcnRhZ2UgL3Zhci9saWIvbGF5bWFuL3NjaWVuY2UgL3Zhci9s aWIvbGF5bWFuL3NhZ2Utb24tZ2VudG9vIgpVU0U9ImFjbCBhbWQ2NCBiYXNoLWNvbXBsZXRpb24g YmNtYXRoIGJlcmtkYiBiaW5kaXN0IGJsYXMgYnppcDIgY2xpIGNyYWNrbGliIGNyeXB0IGN4eCBk cmkgZW1hY3MgZmZ0dyBnZGJtIGdyYXBoaXRlIGhhcmRlbmVkIGljb252IGlwdjYganVzdGlmeSBs YXBhY2sgbG1fc2Vuc29ycyBsdG8gbHptYSBsem8gbW14IG1vZHVsZXMgbXVsdGlsaWIgbmN1cnNl cyBubHMgbnB0bCBvcGVubXAgcGFtIHBheF9rZXJuZWwgcGNyZSBweXRob24gcmVhZGxpbmUgc2Vz c2lvbiBzbXAgc3NlIHNzZTIgc3NlMyBzc2U0XzEgc3NsIHN5bWxpbmsgc3lzbG9nIHRjcGQgdGhy ZWFkcyB0cnVldHlwZSB1ZGV2IHVuaWNvZGUgdXJhbmRvbSB1c2IgeGF0dHIgeHRwYXggemxpYiIg QUJJX1g4Nj0iNjQiIEFMU0FfQ0FSRFM9ImFsaTU0NTEgYWxzNDAwMCBhdGlpeHAgYXRpaXhwLW1v ZGVtIGJ0ODd4IGNhMDEwNiBjbWlwY2kgZW11MTBrMXggZW5zMTM3MCBlbnMxMzcxIGVzMTkzOCBl czE5NjggZm04MDEgaGRhLWludGVsIGludGVsOHgwIGludGVsOHgwbSBtYWVzdHJvMyB0cmlkZW50 IHVzYi1hdWRpbyB2aWE4Mnh4IHZpYTgyeHgtbW9kZW0geW1mcGNpIiBBUEFDSEUyX01PRFVMRVM9 ImF1dGhuX2NvcmUgYXV0aHpfY29yZSBzb2NhY2hlX3NobWNiIHVuaXhkIGFjdGlvbnMgYWxpYXMg YXV0aF9iYXNpYyBhdXRobl9hbGlhcyBhdXRobl9hbm9uIGF1dGhuX2RibSBhdXRobl9kZWZhdWx0 IGF1dGhuX2ZpbGUgYXV0aHpfZGJtIGF1dGh6X2RlZmF1bHQgYXV0aHpfZ3JvdXBmaWxlIGF1dGh6 X2hvc3QgYXV0aHpfb3duZXIgYXV0aHpfdXNlciBhdXRvaW5kZXggY2FjaGUgY2dpIGNnaWQgZGF2 IGRhdl9mcyBkYXZfbG9jayBkZWZsYXRlIGRpciBkaXNrX2NhY2hlIGVudiBleHBpcmVzIGV4dF9m aWx0ZXIgZmlsZV9jYWNoZSBmaWx0ZXIgaGVhZGVycyBpbmNsdWRlIGluZm8gbG9nX2NvbmZpZyBs b2dpbyBtZW1fY2FjaGUgbWltZSBtaW1lX21hZ2ljIG5lZ290aWF0aW9uIHJld3JpdGUgc2V0ZW52 aWYgc3BlbGluZyBzdGF0dXMgdW5pcXVlX2lkIHVzZXJkaXIgdXNlcnRyYWNrIHZob3N0X2FsaWFz IiBDQUxMSUdSQV9GRUFUVVJFUz0ia2V4aSB3b3JkcyBmbG93IHBsYW4gc2hlZXRzIHN0YWdlIHRh YmxlcyBrcml0YSBrYXJib24gYnJhaW5kdW1wIGF1dGhvciIgQ0FNRVJBUz0icHRwMiIgQ09MTEVD VERfUExVR0lOUz0iZGYgaW50ZXJmYWNlIGlycSBsb2FkIG1lbW9yeSBycmR0b29sIHN3YXAgc3lz bG9nIiBFTElCQz0iZ2xpYmMiIEdQU0RfUFJPVE9DT0xTPSJhc2h0ZWNoIGFpdmRtIGVhcnRobWF0 ZSBldmVybW9yZSBmdjE4IGdhcm1pbiBnYXJtaW50eHQgZ3BzY2xvY2sgaXRyYXggbXRrMzMwMSBu bWVhIG50cmlwIG5hdmNvbSBvY2VhbnNlcnZlciBvbGRzdHlsZSBvbmNvcmUgcnRjbTEwNHYyIHJ0 Y20xMDR2MyBzaXJmIHN1cGVyc3RhcjIgdGltaW5nIHRzaXAgdHJpcG1hdGUgdG50IHVibG94IHVi eCIgSU5QVVRfREVWSUNFUz0iZXZkZXYiIEtFUk5FTD0ibGludXgiIExDRF9ERVZJQ0VTPSJiYXly YWQgY2ZvbnR6IGNmb250ejYzMyBnbGsgaGQ0NDc4MCBsYjIxNiBsY2RtMDAxIG10eG9yYiBuY3Vy c2VzIHRleHQiIExJQlJFT0ZGSUNFX0VYVEVOU0lPTlM9InByZXNlbnRlci1jb25zb2xlIHByZXNl bnRlci1taW5pbWl6ZXIiIE9GRklDRV9JTVBMRU1FTlRBVElPTj0ibGlicmVvZmZpY2UiIFBIUF9U QVJHRVRTPSJwaHA1LTUiIFBZVEhPTl9TSU5HTEVfVEFSR0VUPSJweXRob24yXzciIFBZVEhPTl9U QVJHRVRTPSJweXRob24yXzcgcHl0aG9uM18zIiBSVUJZX1RBUkdFVFM9InJ1YnkxOSBydWJ5MjAi IFVTRVJMQU5EPSJHTlUiIFZJREVPX0NBUkRTPSJmZ2xyeCIgWFRBQkxFU19BRERPTlM9InF1b3Rh MiBwc2QgcGtub2NrIGxzY2FuIGxlbmd0aDIgaXB2NG9wdGlvbnMgaXBzZXQgaXBwMnAgaWZhY2Ug Z2VvaXAgZnV6enkgY29uZGl0aW9uIHRlZSB0YXJwaXQgc3lzcnEgc3RlYWwgcmF3bmF0IGxvZ21h cmsgaXBtYXJrIGRoY3BtYWMgZGVsdWRlIGNoYW9zIGFjY291bnQiClVuc2V0OiAgQ1BQRkxBR1Ms IENUQVJHRVQsIEVNRVJHRV9ERUZBVUxUX09QVFMsIElOU1RBTExfTUFTSywgTENfQUxMLCBQT1JU QUdFX0JVTlpJUDJfQ09NTUFORCwgUE9SVEFHRV9DT01QUkVTUywgUE9SVEFHRV9DT01QUkVTU19G TEFHUywgUE9SVEFHRV9SU1lOQ19FWFRSQV9PUFRTLCBTWU5DLCBVU0VfUFlUSE9OCgpQb3J0YWdl IDIuMi44LXIyIChoYXJkZW5lZC9saW51eC9hbWQ2NCwgZ2NjLTQuOC4zLCBnbGliYy0yLjE5LXIx LCAzLjE2LjUtZ2VudG9vIHg4Nl82NCkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAg IFN5c3RlbSBTZXR0aW5ncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpTeXN0ZW0gdW5hbWU6IExpbnV4LTMuMTYuNS1nZW50 b28teDg2XzY0LUFNRF9BMTAtNTcwMF9BUFVfd2l0aF9SYWRlb24tdG0tX0hEX0dyYXBoaWNzLXdp dGgtZ2VudG9vLTIuMgpLaUIgTWVtOiAgICAxNTg3MzYwOCB0b3RhbCwgICA1NzI3MDQ0IGZyZWUK S2lCIFN3YXA6ICAgICAgICAgIDAgdG90YWwsICAgICAgICAgMCBmcmVlClRpbWVzdGFtcCBvZiB0 cmVlOiBNb24sIDE3IE5vdiAyMDE0IDExOjAwOjAxICswMDAwCmxkIEdOVSBnb2xkIChHZW50b28g Mi4yNCBwMS40IDIuMjQpIDEuMTEKY2NhY2hlIHZlcnNpb24gMy4xLjkgW2Rpc2FibGVkXQphcHAt c2hlbGxzL2Jhc2g6ICAgICAgICAgIDQuMl9wNTMKZGV2LWphdmEvamF2YS1jb25maWc6ICAgICAy LjIuMApkZXYtbGFuZy9wZXJsOiAgICAgICAgICAgIDUuMTguMi1yMgpkZXYtbGFuZy9weXRob246 ICAgICAgICAgIDIuNy43LCAzLjMuNS1yMSwgMy40LjEKZGV2LXV0aWwvY2NhY2hlOiAgICAgICAg ICAzLjEuOS1yMwpkZXYtdXRpbC9jbWFrZTogICAgICAgICAgIDIuOC4xMi4yLXIxCmRldi11dGls L3BrZ2NvbmZpZzogICAgICAgMC4yOC1yMQpzeXMtYXBwcy9iYXNlbGF5b3V0OiAgICAgIDIuMgpz eXMtYXBwcy9vcGVucmM6ICAgICAgICAgIDAuMTIuNApzeXMtYXBwcy9zYW5kYm94OiAgICAgICAg IDIuNi1yMQpzeXMtZGV2ZWwvYXV0b2NvbmY6ICAgICAgIDIuMTMsIDIuNjkKc3lzLWRldmVsL2F1 dG9tYWtlOiAgICAgICAxLjEzLjQKc3lzLWRldmVsL2JpbnV0aWxzOiAgICAgICAyLjI0LXIzCnN5 cy1kZXZlbC9nY2M6ICAgICAgICAgICAgNC44LjMKc3lzLWRldmVsL2djYy1jb25maWc6ICAgICAx LjcuMwpzeXMtZGV2ZWwvbGlidG9vbDogICAgICAgIDIuNC4yLXIxCnN5cy1kZXZlbC9tYWtlOiAg ICAgICAgICAgNC4wLXIxCnN5cy1rZXJuZWwvbGludXgtaGVhZGVyczogMy4xMyAodmlydHVhbC9v cy1oZWFkZXJzKQpzeXMtbGlicy9nbGliYzogICAgICAgICAgIDIuMTktcjEKUmVwb3NpdG9yaWVz OiBnZW50b28gQ2xvb2dQYXRjaCBzY2llbmNlIHNhZ2Utb24tZ2VudG9vCkFDQ0VQVF9LRVlXT1JE Uz0iYW1kNjQiCkFDQ0VQVF9MSUNFTlNFPSIqIC1ARVVMQSIKQ0JVSUxEPSJ4ODZfNjQtcGMtbGlu dXgtZ251IgpDRkxBR1M9Ii1tYXJjaD1uYXRpdmUgLU8yIC1waXBlIC1mbHRvPTQgLWZsb29wLWlu dGVyY2hhbmdlIC1mdHJlZS1sb29wLWRpc3RyaWJ1dGlvbiAtZmxvb3Atc3RyaXAtbWluZSAtZmxv b3AtYmxvY2sgLWZ0cmVlLXZlY3Rvcml6ZSIKQ0hPU1Q9Ing4Nl82NC1wYy1saW51eC1nbnUiCkNP TkZJR19QUk9URUNUPSIvZXRjIC91c3Ivc2hhcmUvZ251cGcvcXVhbGlmaWVkLnR4dCIKQ09ORklH X1BST1RFQ1RfTUFTSz0iL2V0Yy9jYS1jZXJ0aWZpY2F0ZXMuY29uZiAvZXRjL2Vudi5kIC9ldGMv Zm9udHMvZm9udHMuY29uZiAvZXRjL2djb25mIC9ldGMvZ2VudG9vLXJlbGVhc2UgL2V0Yy9yZXZk ZXAtcmVidWlsZCAvZXRjL3NhbmRib3guZCAvZXRjL3Rlcm1pbmZvIC9ldGMvdGV4bWYvbGFuZ3Vh Z2UuZGF0LmQgL2V0Yy90ZXhtZi9sYW5ndWFnZS5kZWYuZCAvZXRjL3RleG1mL3VwZG1hcC5kIC9l dGMvdGV4bWYvd2ViMmMiCkNYWEZMQUdTPSItbWFyY2g9bmF0aXZlIC1PMiAtcGlwZSAtZmx0bz00 IC1mbG9vcC1pbnRlcmNoYW5nZSAtZnRyZWUtbG9vcC1kaXN0cmlidXRpb24gLWZsb29wLXN0cmlw LW1pbmUgLWZsb29wLWJsb2NrIC1mdHJlZS12ZWN0b3JpemUiCkRJU1RESVI9Ii91c3IvcG9ydGFn ZS9kaXN0ZmlsZXMiCkZDRkxBR1M9Ii1PMiAtcGlwZSIKRkVBVFVSRVM9ImFzc3VtZS1kaWdlc3Rz IGJpbnBrZy1sb2dzIGNvbmZpZy1wcm90ZWN0LWlmLW1vZGlmaWVkIGRpc3Rsb2NrcyBlYnVpbGQt bG9ja3MgZml4bGFmaWxlcyBtZXJnZS1zeW5jIG5ld3MgcGFyYWxsZWwtZmV0Y2ggcHJlc2VydmUt bGlicyBwcm90ZWN0LW93bmVkIHNhbmRib3ggc2ZwZXJtcyBzdHJpY3QgdW5rbm93bi1mZWF0dXJl cy13YXJuIHVubWVyZ2UtbG9ncyB1bm1lcmdlLW9ycGhhbnMgdXNlcmZldGNoIHVzZXJwcml2IHVz ZXJzYW5kYm94IHVzZXJzeW5jIHhhdHRyIgpGRkxBR1M9Ii1PMiAtcGlwZSIKR0VOVE9PX01JUlJP UlM9Imh0dHA6Ly9nZW50b28uYWRpdHN1Lm5ldDo4MDAwLyBodHRwOi8vZ2VudG9vLm1vZHVsaXgu bmV0L2dlbnRvby8gaHR0cDovL2dlbnRvby5nZzMubmV0LyIKTEFORz0iZW5fVVMudXRmOCIKTERG TEFHUz0iLW1hcmNoPW5hdGl2ZSAtTzIgLXBpcGUgLWZsdG89NCAtZmxvb3AtaW50ZXJjaGFuZ2Ug LWZ0cmVlLWxvb3AtZGlzdHJpYnV0aW9uIC1mbG9vcC1zdHJpcC1taW5lIC1mbG9vcC1ibG9jayAt ZnRyZWUtdmVjdG9yaXplIC1mdXNlLWxpbmtlci1wbHVnaW4iCk1BS0VPUFRTPSItajUiClBLR0RJ Uj0iL3Vzci9wb3J0YWdlL3BhY2thZ2VzIgpQT1JUQUdFX0NPTkZJR1JPT1Q9Ii8iClBPUlRBR0Vf UlNZTkNfT1BUUz0iLS1yZWN1cnNpdmUgLS1saW5rcyAtLXNhZmUtbGlua3MgLS1wZXJtcyAtLXRp bWVzIC0tb21pdC1kaXItdGltZXMgLS1jb21wcmVzcyAtLWZvcmNlIC0td2hvbGUtZmlsZSAtLWRl bGV0ZSAtLXN0YXRzIC0taHVtYW4tcmVhZGFibGUgLS10aW1lb3V0PTE4MCAtLWV4Y2x1ZGU9L2Rp c3RmaWxlcyAtLWV4Y2x1ZGU9L2xvY2FsIC0tZXhjbHVkZT0vcGFja2FnZXMiClBPUlRBR0VfVE1Q RElSPSIvdmFyL3RtcCIKUE9SVERJUj0iL3Vzci9wb3J0YWdlIgpQT1JURElSX09WRVJMQVk9Ii91 c3IvbG9jYWwvcG9ydGFnZSAvdmFyL2xpYi9sYXltYW4vc2NpZW5jZSAvdmFyL2xpYi9sYXltYW4v c2FnZS1vbi1nZW50b28iClVTRT0iYWNsIGFtZDY0IGJhc2gtY29tcGxldGlvbiBiY21hdGggYmVy a2RiIGJpbmRpc3QgYmxhcyBiemlwMiBjbGkgY3JhY2tsaWIgY3J5cHQgY3h4IGRyaSBlbWFjcyBm ZnR3IGdkYm0gZ3JhcGhpdGUgaGFyZGVuZWQgaWNvbnYgaXB2NiBqdXN0aWZ5IGxhcGFjayBsbV9z ZW5zb3JzIGx0byBsem1hIGx6byBtbXggbW9kdWxlcyBtdWx0aWxpYiBuY3Vyc2VzIG5scyBucHRs IG9wZW5tcCBwYW0gcGF4X2tlcm5lbCBwY3JlIHB5dGhvbiByZWFkbGluZSBzZXNzaW9uIHNtcCBz c2Ugc3NlMiBzc2UzIHNzZTRfMSBzc2wgc3ltbGluayBzeXNsb2cgdGNwZCB0aHJlYWRzIHRydWV0 eXBlIHVkZXYgdW5pY29kZSB1cmFuZG9tIHVzYiB4YXR0ciB4dHBheCB6bGliIiBBQklfWDg2PSI2 NCIgQUxTQV9DQVJEUz0iYWxpNTQ1MSBhbHM0MDAwIGF0aWl4cCBhdGlpeHAtbW9kZW0gYnQ4N3gg Y2EwMTA2IGNtaXBjaSBlbXUxMGsxeCBlbnMxMzcwIGVuczEzNzEgZXMxOTM4IGVzMTk2OCBmbTgw MSBoZGEtaW50ZWwgaW50ZWw4eDAgaW50ZWw4eDBtIG1hZXN0cm8zIHRyaWRlbnQgdXNiLWF1ZGlv IHZpYTgyeHggdmlhODJ4eC1tb2RlbSB5bWZwY2kiIEFQQUNIRTJfTU9EVUxFUz0iYXV0aG5fY29y ZSBhdXRoel9jb3JlIHNvY2FjaGVfc2htY2IgdW5peGQgYWN0aW9ucyBhbGlhcyBhdXRoX2Jhc2lj IGF1dGhuX2FsaWFzIGF1dGhuX2Fub24gYXV0aG5fZGJtIGF1dGhuX2RlZmF1bHQgYXV0aG5fZmls ZSBhdXRoel9kYm0gYXV0aHpfZGVmYXVsdCBhdXRoel9ncm91cGZpbGUgYXV0aHpfaG9zdCBhdXRo el9vd25lciBhdXRoel91c2VyIGF1dG9pbmRleCBjYWNoZSBjZ2kgY2dpZCBkYXYgZGF2X2ZzIGRh dl9sb2NrIGRlZmxhdGUgZGlyIGRpc2tfY2FjaGUgZW52IGV4cGlyZXMgZXh0X2ZpbHRlciBmaWxl X2NhY2hlIGZpbHRlciBoZWFkZXJzIGluY2x1ZGUgaW5mbyBsb2dfY29uZmlnIGxvZ2lvIG1lbV9j YWNoZSBtaW1lIG1pbWVfbWFnaWMgbmVnb3RpYXRpb24gcmV3cml0ZSBzZXRlbnZpZiBzcGVsaW5n IHN0YXR1cyB1bmlxdWVfaWQgdXNlcmRpciB1c2VydHJhY2sgdmhvc3RfYWxpYXMiIENBTExJR1JB X0ZFQVRVUkVTPSJrZXhpIHdvcmRzIGZsb3cgcGxhbiBzaGVldHMgc3RhZ2UgdGFibGVzIGtyaXRh IGthcmJvbiBicmFpbmR1bXAgYXV0aG9yIiBDQU1FUkFTPSJwdHAyIiBDT0xMRUNURF9QTFVHSU5T PSJkZiBpbnRlcmZhY2UgaXJxIGxvYWQgbWVtb3J5IHJyZHRvb2wgc3dhcCBzeXNsb2ciIEVMSUJD PSJnbGliYyIgR1BTRF9QUk9UT0NPTFM9ImFzaHRlY2ggYWl2ZG0gZWFydGhtYXRlIGV2ZXJtb3Jl IGZ2MTggZ2FybWluIGdhcm1pbnR4dCBncHNjbG9jayBpdHJheCBtdGszMzAxIG5tZWEgbnRyaXAg bmF2Y29tIG9jZWFuc2VydmVyIG9sZHN0eWxlIG9uY29yZSBydGNtMTA0djIgcnRjbTEwNHYzIHNp cmYgc3VwZXJzdGFyMiB0aW1pbmcgdHNpcCB0cmlwbWF0ZSB0bnQgdWJsb3ggdWJ4IiBJTlBVVF9E RVZJQ0VTPSJldmRldiIgS0VSTkVMPSJsaW51eCIgTENEX0RFVklDRVM9ImJheXJhZCBjZm9udHog Y2ZvbnR6NjMzIGdsayBoZDQ0NzgwIGxiMjE2IGxjZG0wMDEgbXR4b3JiIG5jdXJzZXMgdGV4dCIg TElCUkVPRkZJQ0VfRVhURU5TSU9OUz0icHJlc2VudGVyLWNvbnNvbGUgcHJlc2VudGVyLW1pbmlt aXplciIgT0ZGSUNFX0lNUExFTUVOVEFUSU9OPSJsaWJyZW9mZmljZSIgUEhQX1RBUkdFVFM9InBo cDUtNSIgUFlUSE9OX1NJTkdMRV9UQVJHRVQ9InB5dGhvbjJfNyIgUFlUSE9OX1RBUkdFVFM9InB5 dGhvbjJfNyBweXRob24zXzMiIFJVQllfVEFSR0VUUz0icnVieTE5IHJ1YnkyMCIgVVNFUkxBTkQ9 IkdOVSIgVklERU9fQ0FSRFM9ImZnbHJ4IiBYVEFCTEVTX0FERE9OUz0icXVvdGEyIHBzZCBwa25v Y2sgbHNjYW4gbGVuZ3RoMiBpcHY0b3B0aW9ucyBpcHNldCBpcHAycCBpZmFjZSBnZW9pcCBmdXp6 eSBjb25kaXRpb24gdGVlIHRhcnBpdCBzeXNycSBzdGVhbCByYXduYXQgbG9nbWFyayBpcG1hcmsg ZGhjcG1hYyBkZWx1ZGUgY2hhb3MgYWNjb3VudCIKVW5zZXQ6ICBDUFBGTEFHUywgQ1RBUkdFVCwg RU1FUkdFX0RFRkFVTFRfT1BUUywgSU5TVEFMTF9NQVNLLCBMQ19BTEwsIFBPUlRBR0VfQlVOWklQ Ml9DT01NQU5ELCBQT1JUQUdFX0NPTVBSRVNTLCBQT1JUQUdFX0NPTVBSRVNTX0ZMQUdTLCBQT1JU QUdFX1JTWU5DX0VYVFJBX09QVFMsIFNZTkMsIFVTRV9QWVRIT04KCg== --047d7b5d619495ec26050845fe8d Content-Type: text/x-log; charset=US-ASCII; name="build.log" Content-Disposition: attachment; filename="build.log" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i2puklaj0 G1szMjswMW0gKiAbWzM5OzQ5OzAwbVBhY2thZ2U6ICAgIHgxMS1kcml2ZXJzL2F0aS1kcml2ZXJz LTE0LjRfcDEKG1szMjswMW0gKiAbWzM5OzQ5OzAwbVJlcG9zaXRvcnk6IGdlbnRvbwobWzMyOzAx bSAqIBtbMzk7NDk7MDBtTWFpbnRhaW5lcjogeDExQGdlbnRvby5vcmcgamVrYXJsc29uQGdtYWls LmNvbSxwcm94eS1tYWludEBnZW50b28ub3JnChtbMzI7MDFtICogG1szOTs0OTswMG1VU0U6ICAg ICAgICBhYmlfeDg2XzY0IGFtZDY0IGVsaWJjX2dsaWJjIGtlcm5lbF9saW51eCBtb2R1bGVzIG11 bHRpbGliIHBheF9rZXJuZWwgdXNlcmxhbmRfR05VChtbMzI7MDFtICogG1szOTs0OTswMG1GRUFU VVJFUzogICBwcmVzZXJ2ZS1saWJzIHNhbmRib3ggdXNlcnByaXYgdXNlcnNhbmRib3gKIBtbMzI7 MDFtKhtbMG0gRGV0ZXJtaW5pbmcgdGhlIGxvY2F0aW9uIG9mIHRoZSBrZXJuZWwgc291cmNlIGNv ZGUKIBtbMzI7MDFtKhtbMG0gRm91bmQga2VybmVsIHNvdXJjZSBkaXJlY3Rvcnk6CiAbWzMyOzAx bSobWzBtICAgICAvdXNyL3NyYy9saW51eAogG1szMjswMW0qG1swbSBGb3VuZCBrZXJuZWwgb2Jq ZWN0IGRpcmVjdG9yeToKIBtbMzI7MDFtKhtbMG0gICAgIC9saWIvbW9kdWxlcy8zLjE2LjUtZ2Vu dG9vL2J1aWxkCiAbWzMyOzAxbSobWzBtIEZvdW5kIHNvdXJjZXMgZm9yIGtlcm5lbCB2ZXJzaW9u OgogG1szMjswMW0qG1swbSAgICAgMy4xNi41LWdlbnRvbwogG1szMjswMW0qG1swbSAKIBtbMzI7 MDFtKhtbMG0gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGRyaXZlciBvbmx5IHN1cHBvcnRzIGdyYXBo aWMgY2FyZHMgYmFzZWQgb24KIBtbMzI7MDFtKhtbMG0gRXZlcmdyZWVuIGNoaXBzZXQgYW5kIG5l d2VyLgogG1szMjswMW0qG1swbSBUaGlzIGluY2x1ZGVzIHRoZSBBTUQgUmFkZW9uIEhEIDU0MDAr IHNlcmllcyBhdCB0aGlzIG1vbWVudC4KIBtbMzI7MDFtKhtbMG0gCiAbWzMyOzAxbSobWzBtIElm IHlvdXIgY2FyZCBpcyBvbGRlciB0aGVuIHVzZSB4MTEtZHJpdmVycy94Zjg2LXZpZGVvLWF0aQog G1szMjswMW0qG1swbSBGb3IgbWlncmF0aW9uIGluZm9ybWF0aW9ucyBwbGVhc2UgcmVmZXIgdG86 CiAbWzMyOzAxbSobWzBtIGh0dHA6Ly93d3cuZ2VudG9vLm9yZy9wcm9qL2VuL2Rlc2t0b3AveC94 MTEvYXRpLW1pZ3JhdGlvbi1ndWlkZS54bWwKIBtbMzI7MDFtKhtbMG0gCj4+PiBVbnBhY2tpbmcg c291cmNlLi4uCj4+PiBVbnBhY2tpbmcgYW1kLWNhdGFseXN0LTE0LTQtcmV2Mi1saW51eC14ODYt eDg2LTY0LW1heTYuemlwIHRvIC92YXIvdG1wL3BvcnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZl cnMtMTQuNF9wMS93b3JrCldhcm5pbmc6IHRhcmdldCBkaXJlY3RvcnkgZXhpc3RzIC92YXIvdG1w L3BvcnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTQuNF9wMS93b3JrCj4+PiBVbnBhY2tp bmcgeHZiYS1zZGstMC43NC00MDQwMDEudGFyLmd6IHRvIC92YXIvdG1wL3BvcnRhZ2UveDExLWRy aXZlcnMvYXRpLWRyaXZlcnMtMTQuNF9wMS93b3JrL3h2YmFfc2RrCj4+PiBTb3VyY2UgdW5wYWNr ZWQgaW4gL3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0xNC40X3AxL3dv cmsKPj4+IFByZXBhcmluZyBzb3VyY2UgaW4gL3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9h dGktZHJpdmVycy0xNC40X3AxL3dvcmsgLi4uCiAbWzMyOzAxbSobWzBtIEFwcGx5aW5nIGF0aS1w b3dlcm1vZGUtb3B0LXBhdGgtMy5wYXRjaCAuLi4KG1tBG1s3MkMgG1szNDswMW1bIBtbMzI7MDFt b2sbWzM0OzAxbSBdG1swbQogG1szMjswMW0qG1swbSBBcHBseWluZyBhdGktZHJpdmVycy14MzJf c29tZXRoaW5nX3NvbWV0aGluZy5wYXRjaCAuLi4KG1tBG1s3MkMgG1szNDswMW1bIBtbMzI7MDFt b2sbWzM0OzAxbSBdG1swbQogG1szMjswMW0qG1swbSBBcHBseWluZyBhdGktZHJpdmVycy0xMi45 LUtDTF9BR1BfRmluZENhcHNSZWdpc3RlcnMtc3R1Yi5wYXRjaCAuLi4KG1tBG1s3MkMgG1szNDsw MW1bIBtbMzI7MDFtb2sbWzM0OzAxbSBdG1swbQogG1szMjswMW0qG1swbSBBcHBseWluZyB0eXBl c2FmZS1rdWlkLmRpZmYgLi4uChtbQRtbNzJDIBtbMzQ7MDFtWyAbWzMyOzAxbW9rG1szNDswMW0g XRtbMG0KIBtbMzI7MDFtKhtbMG0gQXBwbHlpbmcgYXRpLWRyaXZlcnMtMTMuOC1iZXRhLWluY2x1 ZGUtc2VxX2ZpbGUucGF0Y2ggLi4uChtbQRtbNzJDIBtbMzQ7MDFtWyAbWzMyOzAxbW9rG1szNDsw MW0gXRtbMG0KIBtbMzI7MDFtKhtbMG0gQXBwbHlpbmcgZmdsX2dseGdlYXJzLWRvLW5vdC1pbmNs dWRlLWdsQVRJLnBhdGNoIC4uLgobW0EbWzcyQyAbWzM0OzAxbVsgG1szMjswMW1vaxtbMzQ7MDFt IF0bWzBtCiAbWzMyOzAxbSobWzBtIEFwcGx5aW5nIGNvbnN0LW5vdGlmaWVyLWJsb2NrLnBhdGNo IC4uLgobW0EbWzcyQyAbWzM0OzAxbVsgG1szMjswMW1vaxtbMzQ7MDFtIF0bWzBtCiAbWzMyOzAx bSobWzBtIENvbnZlcnRpbmcgMi42LngvTWFrZWZpbGUgdG8gdXNlIE09IGluc3RlYWQgb2YgU1VC RElSUz0gLi4uChtbQRtbNzJDIBtbMzQ7MDFtWyAbWzMyOzAxbW9rG1szNDswMW0gXRtbMG0KPj4+ IFNvdXJjZSBwcmVwYXJlZC4KPj4+IENvbmZpZ3VyaW5nIHNvdXJjZSBpbiAvdmFyL3RtcC9wb3J0 YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTE0LjRfcDEvd29yayAuLi4KPj4+IFNvdXJjZSBj b25maWd1cmVkLgo+Pj4gQ29tcGlsaW5nIHNvdXJjZSBpbiAvdmFyL3RtcC9wb3J0YWdlL3gxMS1k cml2ZXJzL2F0aS1kcml2ZXJzLTE0LjRfcDEvd29yayAuLi4KIBtbMzI7MDFtKhtbMG0gUHJlcGFy aW5nIGZnbHJ4IG1vZHVsZQptYWtlIC1qNSBIT1NUQ0M9eDg2XzY0LXBjLWxpbnV4LWdudS1nY2Mg Q1JPU1NfQ09NUElMRT14ODZfNjQtcGMtbGludXgtZ251LSAnTERGTEFHUz0tbSBlbGZfeDg2XzY0 JyBHQ0NfVkVSX01BSj00IEtWRVI9My4xNi41LWdlbnRvbyBLRElSPS91c3Ivc3JjL2xpbnV4ICdD RkxBR1NfTU9EVUxFKz0tRE1PRFVMRSAtREFUSSAtREZHTCcgQ0ZMQUdTX01PRFVMRSs9LURDT01Q QVRfQUxMT0NfVVNFUl9TUEFDRT1hcmNoX2NvbXBhdF9hbGxvY191c2VyX3NwYWNlIGttb2RfYnVp bGQgCm1ha2UgLUMgL3Vzci9zcmMvbGludXggTT0vdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJz L2F0aS1kcml2ZXJzLTE0LjRfcDEvd29yay9jb21tb24vbGliL21vZHVsZXMvZmdscngvYnVpbGRf bW9kLzIuNi54IG1vZHVsZXMKbWFrZVsxXTogRW50ZXJpbmcgZGlyZWN0b3J5ICcvdXNyL3NyYy9s aW51eC0zLjE2LjUtZ2VudG9vJwogIENDIFtNXSAgL3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVy cy9hdGktZHJpdmVycy0xNC40X3AxL3dvcmsvY29tbW9uL2xpYi9tb2R1bGVzL2ZnbHJ4L2J1aWxk X21vZC8yLjYueC9maXJlZ2xfcHVibGljLm8KICBDQyBbTV0gIC92YXIvdG1wL3BvcnRhZ2UveDEx LWRyaXZlcnMvYXRpLWRyaXZlcnMtMTQuNF9wMS93b3JrL2NvbW1vbi9saWIvbW9kdWxlcy9mZ2xy eC9idWlsZF9tb2QvMi42Lngva2NsX2FjcGkubwogIENDIFtNXSAgL3Zhci90bXAvcG9ydGFnZS94 MTEtZHJpdmVycy9hdGktZHJpdmVycy0xNC40X3AxL3dvcmsvY29tbW9uL2xpYi9tb2R1bGVzL2Zn bHJ4L2J1aWxkX21vZC8yLjYueC9rY2xfaW9jdGwubwogIENDIFtNXSAgL3Zhci90bXAvcG9ydGFn ZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0xNC40X3AxL3dvcmsvY29tbW9uL2xpYi9tb2R1bGVz L2ZnbHJ4L2J1aWxkX21vZC8yLjYueC9rY2xfZGVidWcubwogIENDIFtNXSAgL3Zhci90bXAvcG9y dGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0xNC40X3AxL3dvcmsvY29tbW9uL2xpYi9tb2R1 bGVzL2ZnbHJ4L2J1aWxkX21vZC8yLjYueC9rY2xfYWdwLm8KICBDQyBbTV0gIC92YXIvdG1wL3Bv cnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTQuNF9wMS93b3JrL2NvbW1vbi9saWIvbW9k dWxlcy9mZ2xyeC9idWlsZF9tb2QvMi42Lngva2NsX2lvLm8KICBDQyBbTV0gIC92YXIvdG1wL3Bv cnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTQuNF9wMS93b3JrL2NvbW1vbi9saWIvbW9k dWxlcy9mZ2xyeC9idWlsZF9tb2QvMi42Lngva2NsX3BjaS5vCiAgQ0MgW01dICAvdmFyL3RtcC9w b3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTE0LjRfcDEvd29yay9jb21tb24vbGliL21v ZHVsZXMvZmdscngvYnVpbGRfbW9kLzIuNi54L2tjbF9zdHIubwovdmFyL3RtcC9wb3J0YWdlL3gx MS1kcml2ZXJzL2F0aS1kcml2ZXJzLTE0LjRfcDEvd29yay9jb21tb24vbGliL21vZHVsZXMvZmds cngvYnVpbGRfbW9kLzIuNi54L2tjbF9hY3BpLmM6MTQzOjE6IGVycm9yOiB1bmtub3duIHR5cGUg bmFtZSDigJhub3RpZmllcl9ibG9ja19ub19jb25zdOKAmQogc3RhdGljIG5vdGlmaWVyX2Jsb2Nr X25vX2NvbnN0IGZpcmVnbF9hY3BpX2xpZF9ub3RpZmllciA9IHsKIF4KL3Zhci90bXAvcG9ydGFn ZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0xNC40X3AxL3dvcmsvY29tbW9uL2xpYi9tb2R1bGVz L2ZnbHJ4L2J1aWxkX21vZC8yLjYueC9rY2xfYWNwaS5jOjE0Nzo5OiBlcnJvcjogZmllbGQgbmFt ZSBub3QgaW4gcmVjb3JkIG9yIHVuaW9uIGluaXRpYWxpemVyCiAgICAgICAgIC5ub3RpZmllcl9j YWxsID0gZmlyZWdsX2FjcGlfbGlkX2V2ZW50LAogICAgICAgICBeCi92YXIvdG1wL3BvcnRhZ2Uv eDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTQuNF9wMS93b3JrL2NvbW1vbi9saWIvbW9kdWxlcy9m Z2xyeC9idWlsZF9tb2QvMi42Lngva2NsX2FjcGkuYzoxNDc6OTogZXJyb3I6IChuZWFyIGluaXRp YWxpemF0aW9uIGZvciDigJhmaXJlZ2xfYWNwaV9saWRfbm90aWZpZXLigJkpCi92YXIvdG1wL3Bv cnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTQuNF9wMS93b3JrL2NvbW1vbi9saWIvbW9k dWxlcy9mZ2xyeC9idWlsZF9tb2QvMi42Lngva2NsX2FjcGkuYzoxNDc6OTogd2FybmluZzogaW5p dGlhbGl6YXRpb24gbWFrZXMgaW50ZWdlciBmcm9tIHBvaW50ZXIgd2l0aG91dCBhIGNhc3QgW2Vu YWJsZWQgYnkgZGVmYXVsdF0KL3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVy cy0xNC40X3AxL3dvcmsvY29tbW9uL2xpYi9tb2R1bGVzL2ZnbHJ4L2J1aWxkX21vZC8yLjYueC9r Y2xfYWNwaS5jOjE0Nzo5OiB3YXJuaW5nOiAobmVhciBpbml0aWFsaXphdGlvbiBmb3Ig4oCYZmly ZWdsX2FjcGlfbGlkX25vdGlmaWVy4oCZKSBbZW5hYmxlZCBieSBkZWZhdWx0XQovdmFyL3RtcC9w b3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTE0LjRfcDEvd29yay9jb21tb24vbGliL21v ZHVsZXMvZmdscngvYnVpbGRfbW9kLzIuNi54L2tjbF9hY3BpLmM6MTQ3Ojk6IGVycm9yOiBpbml0 aWFsaXplciBlbGVtZW50IGlzIG5vdCBjb21wdXRhYmxlIGF0IGxvYWQgdGltZQovdmFyL3RtcC9w b3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTE0LjRfcDEvd29yay9jb21tb24vbGliL21v ZHVsZXMvZmdscngvYnVpbGRfbW9kLzIuNi54L2tjbF9hY3BpLmM6MTQ3Ojk6IGVycm9yOiAobmVh ciBpbml0aWFsaXphdGlvbiBmb3Ig4oCYZmlyZWdsX2FjcGlfbGlkX25vdGlmaWVy4oCZKQovdmFy L3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTE0LjRfcDEvd29yay9jb21tb24v bGliL21vZHVsZXMvZmdscngvYnVpbGRfbW9kLzIuNi54L2tjbF9hY3BpLmM6IEluIGZ1bmN0aW9u IOKAmEtDTF9BQ1BJX0luc3RhbGxMaWRIYW5kbGVy4oCZOgovdmFyL3RtcC9wb3J0YWdlL3gxMS1k cml2ZXJzL2F0aS1kcml2ZXJzLTE0LjRfcDEvd29yay9jb21tb24vbGliL21vZHVsZXMvZmdscngv YnVpbGRfbW9kLzIuNi54L2tjbF9hY3BpLmM6NDYzOjU6IHdhcm5pbmc6IHBhc3NpbmcgYXJndW1l bnQgMSBvZiDigJhhY3BpX2xpZF9ub3RpZmllcl9yZWdpc3RlcuKAmSBmcm9tIGluY29tcGF0aWJs ZSBwb2ludGVyIHR5cGUgW2VuYWJsZWQgYnkgZGVmYXVsdF0KICAgICBpZiAoYWNwaV9saWRfbm90 aWZpZXJfcmVnaXN0ZXIoJmZpcmVnbF9hY3BpX2xpZF9ub3RpZmllcikpCiAgICAgXgpJbiBmaWxl IGluY2x1ZGVkIGZyb20gL3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0x NC40X3AxL3dvcmsvY29tbW9uL2xpYi9tb2R1bGVzL2ZnbHJ4L2J1aWxkX21vZC8yLjYueC9rY2xf YWNwaS5jOjMwOjA6CmluY2x1ZGUvYWNwaS9idXR0b24uaDo3OjEyOiBub3RlOiBleHBlY3RlZCDi gJhzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKuKAmSBidXQgYXJndW1lbnQgaXMgb2YgdHlwZSDigJhp bnQgKuKAmQogZXh0ZXJuIGludCBhY3BpX2xpZF9ub3RpZmllcl9yZWdpc3RlcihzdHJ1Y3Qgbm90 aWZpZXJfYmxvY2sgKm5iKTsKICAgICAgICAgICAgXgovdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2 ZXJzL2F0aS1kcml2ZXJzLTE0LjRfcDEvd29yay9jb21tb24vbGliL21vZHVsZXMvZmdscngvYnVp bGRfbW9kLzIuNi54L2tjbF9hY3BpLmM6NDY2OjMzOiBlcnJvcjogcmVxdWVzdCBmb3IgbWVtYmVy IOKAmG5vdGlmaWVyX2NhbGzigJkgaW4gc29tZXRoaW5nIG5vdCBhIHN0cnVjdHVyZSBvciB1bmlv bgogICAgICAgICBmaXJlZ2xfYWNwaV9saWRfbm90aWZpZXIubm90aWZpZXJfY2FsbCA9IE5VTEw7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KL3Zhci90bXAvcG9ydGFnZS94MTEt ZHJpdmVycy9hdGktZHJpdmVycy0xNC40X3AxL3dvcmsvY29tbW9uL2xpYi9tb2R1bGVzL2ZnbHJ4 L2J1aWxkX21vZC8yLjYueC9rY2xfYWNwaS5jOiBJbiBmdW5jdGlvbiDigJhLQ0xfQUNQSV9SZW1v dmVMaWRIYW5kbGVy4oCZOgovdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJz LTE0LjRfcDEvd29yay9jb21tb24vbGliL21vZHVsZXMvZmdscngvYnVpbGRfbW9kLzIuNi54L2tj bF9hY3BpLmM6NDc1OjMzOiBlcnJvcjogcmVxdWVzdCBmb3IgbWVtYmVyIOKAmG5vdGlmaWVyX2Nh bGzigJkgaW4gc29tZXRoaW5nIG5vdCBhIHN0cnVjdHVyZSBvciB1bmlvbgogICAgIGlmIChmaXJl Z2xfYWNwaV9saWRfbm90aWZpZXIubm90aWZpZXJfY2FsbCkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgovdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTE0 LjRfcDEvd29yay9jb21tb24vbGliL21vZHVsZXMvZmdscngvYnVpbGRfbW9kLzIuNi54L2tjbF9h Y3BpLmM6NDc3Ojk6IHdhcm5pbmc6IHBhc3NpbmcgYXJndW1lbnQgMSBvZiDigJhhY3BpX2xpZF9u b3RpZmllcl91bnJlZ2lzdGVy4oCZIGZyb20gaW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZSBbZW5h YmxlZCBieSBkZWZhdWx0XQogICAgICAgICBhY3BpX2xpZF9ub3RpZmllcl91bnJlZ2lzdGVyKCZm aXJlZ2xfYWNwaV9saWRfbm90aWZpZXIpOwogICAgICAgICBeCkluIGZpbGUgaW5jbHVkZWQgZnJv bSAvdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTE0LjRfcDEvd29yay9j b21tb24vbGliL21vZHVsZXMvZmdscngvYnVpbGRfbW9kLzIuNi54L2tjbF9hY3BpLmM6MzA6MDoK aW5jbHVkZS9hY3BpL2J1dHRvbi5oOjg6MTI6IG5vdGU6IGV4cGVjdGVkIOKAmHN0cnVjdCBub3Rp Zmllcl9ibG9jayAq4oCZIGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlIOKAmGludCAq4oCZCiBleHRl cm4gaW50IGFjcGlfbGlkX25vdGlmaWVyX3VucmVnaXN0ZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2Nr ICpuYik7CiAgICAgICAgICAgIF4Kc2NyaXB0cy9NYWtlZmlsZS5idWlsZDoyNTc6IHJlY2lwZSBm b3IgdGFyZ2V0ICcvdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTE0LjRf cDEvd29yay9jb21tb24vbGliL21vZHVsZXMvZmdscngvYnVpbGRfbW9kLzIuNi54L2tjbF9hY3Bp Lm8nIGZhaWxlZAptYWtlWzJdOiAqKiogWy92YXIvdG1wL3BvcnRhZ2UveDExLWRyaXZlcnMvYXRp LWRyaXZlcnMtMTQuNF9wMS93b3JrL2NvbW1vbi9saWIvbW9kdWxlcy9mZ2xyeC9idWlsZF9tb2Qv Mi42Lngva2NsX2FjcGkub10gRXJyb3IgMQptYWtlWzJdOiAqKiogV2FpdGluZyBmb3IgdW5maW5p c2hlZCBqb2JzLi4uLgpNYWtlZmlsZToxMzMzOiByZWNpcGUgZm9yIHRhcmdldCAnX21vZHVsZV8v dmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTE0LjRfcDEvd29yay9jb21t b24vbGliL21vZHVsZXMvZmdscngvYnVpbGRfbW9kLzIuNi54JyBmYWlsZWQKbWFrZVsxXTogKioq IFtfbW9kdWxlXy92YXIvdG1wL3BvcnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTQuNF9w MS93b3JrL2NvbW1vbi9saWIvbW9kdWxlcy9mZ2xyeC9idWlsZF9tb2QvMi42LnhdIEVycm9yIDIK bWFrZVsxXTogTGVhdmluZyBkaXJlY3RvcnkgJy91c3Ivc3JjL2xpbnV4LTMuMTYuNS1nZW50b28n Ck1ha2VmaWxlOjg4OiByZWNpcGUgZm9yIHRhcmdldCAna21vZF9idWlsZCcgZmFpbGVkCm1ha2U6 ICoqKiBba21vZF9idWlsZF0gRXJyb3IgMgogG1szMTswMW0qG1swbSBFUlJPUjogeDExLWRyaXZl cnMvYXRpLWRyaXZlcnMtMTQuNF9wMTo6Z2VudG9vIGZhaWxlZCAoY29tcGlsZSBwaGFzZSk6CiAb WzMxOzAxbSobWzBtICAgZW1ha2UgZmFpbGVkCiAbWzMxOzAxbSobWzBtIAogG1szMTswMW0qG1sw bSBJZiB5b3UgbmVlZCBzdXBwb3J0LCBwb3N0IHRoZSBvdXRwdXQgb2YgYGVtZXJnZSAtLWluZm8g Jz14MTEtZHJpdmVycy9hdGktZHJpdmVycy0xNC40X3AxOjpnZW50b28nYCwKIBtbMzE7MDFtKhtb MG0gdGhlIGNvbXBsZXRlIGJ1aWxkIGxvZyBhbmQgdGhlIG91dHB1dCBvZiBgZW1lcmdlIC1wcXYg Jz14MTEtZHJpdmVycy9hdGktZHJpdmVycy0xNC40X3AxOjpnZW50b28nYC4KIBtbMzE7MDFtKhtb MG0gVGhlIGNvbXBsZXRlIGJ1aWxkIGxvZyBpcyBsb2NhdGVkIGF0ICcvdmFyL3RtcC9wb3J0YWdl L3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTE0LjRfcDEvdGVtcC9idWlsZC5sb2cnLgogG1szMTsw MW0qG1swbSBUaGUgZWJ1aWxkIGVudmlyb25tZW50IGZpbGUgaXMgbG9jYXRlZCBhdCAnL3Zhci90 bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0xNC40X3AxL3RlbXAvZW52aXJvbm1l bnQnLgogG1szMTswMW0qG1swbSBXb3JraW5nIGRpcmVjdG9yeTogJy92YXIvdG1wL3BvcnRhZ2Uv eDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTQuNF9wMS93b3JrL2NvbW1vbi9saWIvbW9kdWxlcy9m Z2xyeC9idWlsZF9tb2QvMi42LngnCiAbWzMxOzAxbSobWzBtIFM6ICcvdmFyL3RtcC9wb3J0YWdl L3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTE0LjRfcDEvd29yaycK --047d7b5d619495ec26050845fe8d Content-Type: application/octet-stream; name=environment Content-Disposition: attachment; filename=environment Content-Transfer-Encoding: base64 X-Attachment-Id: f_i2puklav1 ZGVjbGFyZSAteCBBQkk9ImFtZDY0IgpkZWNsYXJlIC14IEFCSV9YODY9IjY0IgpkZWNsYXJlIC14 IEFMU0FfQ0FSRFM9ImFsaTU0NTEgYWxzNDAwMCBhdGlpeHAgYXRpaXhwLW1vZGVtIGJ0ODd4IGNh MDEwNiBjbWlwY2kgZW11MTBrMXggZW5zMTM3MCBlbnMxMzcxIGVzMTkzOCBlczE5NjggZm04MDEg aGRhLWludGVsIGludGVsOHgwIGludGVsOHgwbSBtYWVzdHJvMyB0cmlkZW50IHVzYi1hdWRpbyB2 aWE4Mnh4IHZpYTgyeHgtbW9kZW0geW1mcGNpIgpkZWNsYXJlIC14IEFOVF9IT01FPSIvdXNyL3No YXJlL2FudCIKZGVjbGFyZSAteCBBUEFDSEUyX01PRFVMRVM9ImF1dGhuX2NvcmUgYXV0aHpfY29y ZSBzb2NhY2hlX3NobWNiIHVuaXhkIGFjdGlvbnMgYWxpYXMgYXV0aF9iYXNpYyBhdXRobl9hbGlh cyBhdXRobl9hbm9uIGF1dGhuX2RibSBhdXRobl9kZWZhdWx0IGF1dGhuX2ZpbGUgYXV0aHpfZGJt IGF1dGh6X2RlZmF1bHQgYXV0aHpfZ3JvdXBmaWxlIGF1dGh6X2hvc3QgYXV0aHpfb3duZXIgYXV0 aHpfdXNlciBhdXRvaW5kZXggY2FjaGUgY2dpIGNnaWQgZGF2IGRhdl9mcyBkYXZfbG9jayBkZWZs YXRlIGRpciBkaXNrX2NhY2hlIGVudiBleHBpcmVzIGV4dF9maWx0ZXIgZmlsZV9jYWNoZSBmaWx0 ZXIgaGVhZGVycyBpbmNsdWRlIGluZm8gbG9nX2NvbmZpZyBsb2dpbyBtZW1fY2FjaGUgbWltZSBt aW1lX21hZ2ljIG5lZ290aWF0aW9uIHJld3JpdGUgc2V0ZW52aWYgc3BlbGluZyBzdGF0dXMgdW5p cXVlX2lkIHVzZXJkaXIgdXNlcnRyYWNrIHZob3N0X2FsaWFzIgpkZWNsYXJlIC14IEFSQ0g9ImFt ZDY0IgpkZWNsYXJlIC0tIEFSQ0hfRElSPSIvdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0 aS1kcml2ZXJzLTE0LjRfcDEvd29yay9hcmNoL3g4Nl82NCIKZGVjbGFyZSAtLSBCQVNFX0RJUj0i L3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0xNC40X3AxL3dvcmsveHBp YyIKZGVjbGFyZSAteCBCT09UU1RSQVBfVVNFPSJjeHggdW5pY29kZSBpbnRlcm5hbC1nbGliIHB5 dGhvbl90YXJnZXRzX3B5dGhvbjNfMyBweXRob25fdGFyZ2V0c19weXRob24yXzcgbXVsdGlsaWIg aGFyZGVuZWQgcGF4X2tlcm5lbCBwaWMgeHRwYXggLWppdCAtb3JjIgpkZWNsYXJlIC0tIEJVSUxE X1BBUkFNUz0iR0NDX1ZFUl9NQUo9NCBLVkVSPTMuMTYuNS1nZW50b28gS0RJUj0vdXNyL3NyYy9s aW51eCBDRkxBR1NfTU9EVUxFKz1cIi1ETU9EVUxFIC1EQVRJIC1ERkdMXCIgQ0ZMQUdTX01PRFVM RSs9LURDT01QQVRfQUxMT0NfVVNFUl9TUEFDRT1hcmNoX2NvbXBhdF9hbGxvY191c2VyX3NwYWNl IgpkZWNsYXJlIC0tIEJVSUxEX1RBUkdFVFM9Imttb2RfYnVpbGQiCmRlY2xhcmUgLXggQ0FMTElH UkFfRkVBVFVSRVM9ImtleGkgd29yZHMgZmxvdyBwbGFuIHNoZWV0cyBzdGFnZSB0YWJsZXMga3Jp dGEga2FyYm9uIGJyYWluZHVtcCBhdXRob3IiCmRlY2xhcmUgLXggQ0FNRVJBUz0icHRwMiIKZGVj bGFyZSAteCBDQlVJTEQ9Ing4Nl82NC1wYy1saW51eC1nbnUiCmRlY2xhcmUgLXggQ0ZMQUdTPSIt bWFyY2g9bmF0aXZlIC1PMiAtcGlwZSAtZmx0bz00IC1mbG9vcC1pbnRlcmNoYW5nZSAtZnRyZWUt bG9vcC1kaXN0cmlidXRpb24gLWZsb29wLXN0cmlwLW1pbmUgLWZsb29wLWJsb2NrIC1mdHJlZS12 ZWN0b3JpemUgLWZuby1sb29wLWludGVyY2hhbmdlIC1mbm8tdHJlZS1sb29wLWRpc3RyaWJ1dGlv biAtZm5vLWxvb3Atc3RyaXAtbWluZSAtZm5vLWxvb3AtYmxvY2sgLWZuby1sdG8gLWZuby11c2Ut bGlua2VyLXBsdWdpbiIKZGVjbGFyZSAteCBDRkxBR1NfYW1kNjQ9Ii1tNjQiCmRlY2xhcmUgLXgg Q0ZMQUdTX2RlZmF1bHQKZGVjbGFyZSAteCBDRkxBR1NfeDMyPSItbXgzMiIKZGVjbGFyZSAteCBD RkxBR1NfeDg2PSItbTMyIgpkZWNsYXJlIC14IENIT1NUPSJ4ODZfNjQtcGMtbGludXgtZ251Igpk ZWNsYXJlIC14IENIT1NUX2FtZDY0PSJ4ODZfNjQtcGMtbGludXgtZ251IgpkZWNsYXJlIC14IENI T1NUX2RlZmF1bHQ9Ing4Nl82NC1wYy1saW51eC1nbnUiCmRlY2xhcmUgLXggQ0hPU1RfeDMyPSJ4 ODZfNjQtcGMtbGludXgtZ251eDMyIgpkZWNsYXJlIC14IENIT1NUX3g4Nj0iaTY4Ni1wYy1saW51 eC1nbnUiCmRlY2xhcmUgLXggQ09MTEVDVERfUExVR0lOUz0iZGYgaW50ZXJmYWNlIGlycSBsb2Fk IG1lbW9yeSBycmR0b29sIHN3YXAgc3lzbG9nIgpkZWNsYXJlIC14IENUQVJHRVRfZGVmYXVsdD0i eDg2XzY0LXBjLWxpbnV4LWdudSIKZGVjbGFyZSAteCBDWFhGTEFHUz0iLW1hcmNoPW5hdGl2ZSAt TzIgLXBpcGUgLWZsdG89NCAtZmxvb3AtaW50ZXJjaGFuZ2UgLWZ0cmVlLWxvb3AtZGlzdHJpYnV0 aW9uIC1mbG9vcC1zdHJpcC1taW5lIC1mbG9vcC1ibG9jayAtZnRyZWUtdmVjdG9yaXplIC1mbm8t bG9vcC1pbnRlcmNoYW5nZSAtZm5vLXRyZWUtbG9vcC1kaXN0cmlidXRpb24gLWZuby1sb29wLXN0 cmlwLW1pbmUgLWZuby1sb29wLWJsb2NrIC1mbm8tbHRvIC1mbm8tdXNlLWxpbmtlci1wbHVnaW4i CmRlY2xhcmUgLXggREVGQVVMVF9BQkk9ImFtZDY0IgpkZWNsYXJlIC14IERFRklORURfUEhBU0VT PSIgY29tcGlsZSBpbnN0YWxsIG5vZmV0Y2ggcG9zdGluc3QgcG9zdHJtIHByZWluc3QgcHJlcGFy ZSBwcmVybSBwcmV0ZW5kIHNldHVwIHVucGFjayIKZGVjbGFyZSBERVBFTkQ9IgoJPD14MTEtYmFz ZS94b3JnLXNlcnZlci0xLjE1LjQ5Wy1taW5pbWFsXQoJPj1hcHAtYWRtaW4vZXNlbGVjdC1vcGVu Z2wtMS4wLjcKCWFwcC1hZG1pbi9lc2VsZWN0LW9wZW5jbAoJc3lzLXBvd2VyL2FjcGlkCgl4MTEt YXBwcy94YXV0aAoJeDExLWxpYnMvbGliWDExCgl4MTEtbGlicy9saWJYZXh0Cgl4MTEtbGlicy9s aWJYaW5lcmFtYQoJeDExLWxpYnMvbGliWHJhbmRyCgl4MTEtbGlicy9saWJYcmVuZGVyCgl2aXJ0 dWFsL2dsdQoJbXVsdGlsaWI/ICgKCQkJfHwgKAoJCQkJPj12aXJ0dWFsL2dsdS05LjAtcjFbYWJp X3g4Nl8zMl0KCQkJCWFwcC1lbXVsYXRpb24vZW11bC1saW51eC14ODYtb3BlbmdsCgkJCSkKCQkJ fHwgKAoJCQkJKAoJCQkJCT49eDExLWxpYnMvbGliWDExLTEuNi4yW2FiaV94ODZfMzJdCgkJCQkJ Pj14MTEtbGlicy9saWJYZXh0LTEuMy4yW2FiaV94ODZfMzJdCgkJCQkJPj14MTEtbGlicy9saWJY aW5lcmFtYS0xLjEuM1thYmlfeDg2XzMyXQoJCQkJCT49eDExLWxpYnMvbGliWHJhbmRyLTEuNC4y W2FiaV94ODZfMzJdCgkJCQkJPj14MTEtbGlicy9saWJYcmVuZGVyLTAuOS44W2FiaV94ODZfMzJd CgkJCQkpCgkJCQlhcHAtZW11bGF0aW9uL2VtdWwtbGludXgteDg2LXhsaWJzCgkJCSkKCSkKCXF0 ND8gKAoJCQl4MTEtbGlicy9saWJJQ0UKCQkJeDExLWxpYnMvbGliU00KCQkJeDExLWxpYnMvbGli WGN1cnNvcgoJCQl4MTEtbGlicy9saWJYZml4ZXMKCQkJeDExLWxpYnMvbGliWHhmODZ2bQoJCQlk ZXYtcXQvcXRjb3JlOjQKCQkJZGV2LXF0L3F0Z3VpOjRbYWNjZXNzaWJpbGl0eV0KCSkKCgkJIXgx MS1kcml2ZXJzL2F0aS1kcml2ZXJzOmxlZ2FjeQoJeDExLXByb3RvL2lucHV0cHJvdG8KCXgxMS1w cm90by94Zjg2bWlzY3Byb3RvCgl4MTEtcHJvdG8veGY4NnZpZG1vZGVwcm90bwoJeDExLXByb3Rv L3hpbmVyYW1hcHJvdG8KCXgxMS1saWJzL2xpYlh0c3QKCXN5cy1hcHBzL2ZpbmR1dGlscwoJYXBw LW1pc2MvcGF4LXV0aWxzCglhcHAtYXJjaC91bnppcAogIGtlcm5lbF9saW51eD8gKCB2aXJ0dWFs L21vZHV0aWxzICkgCiAgICAgCglzeXMtYXBwcy9zZWQKCWtlcm5lbF9saW51eD8gKCB2aXJ0dWFs L2xpbnV4LXNvdXJjZXMgKQoJIgpkZWNsYXJlIERFU0NSSVBUSU9OPSJBdGkgcHJlY29tcGlsZWQg ZHJpdmVycyBmb3IgUmFkZW9uIEV2ZXJncmVlbiAoSEQ1MDAwIFNlcmllcykgYW5kIG5ld2VyIGNo aXBzZXRzIgpkZWNsYXJlIC14IERFU1RUUkVFPSIvdXNyIgpkZWNsYXJlIC14IERJUk9QVElPTlM9 Ii1tMDc1NSIKZGVjbGFyZSAtLSBEUklWRVJTX1VSST0ibWlycm9yOi8vZ2VudG9vL2FtZC1jYXRh bHlzdC0xNC00LXJldjItbGludXgteDg2LXg4Ni02NC1tYXk2LnppcCIKZGVjbGFyZSAteCBFQVBJ PSI1IgpkZWNsYXJlIC14IEVMSUJDPSJnbGliYyIKZGVjbGFyZSAtLSBFTVVMVElMSUJfUEtHPSJ0 cnVlIgpkZWNsYXJlIC0tIEVQQVRDSF9DT01NT05fT1BUUz0iLWcwIC1FIC0tbm8tYmFja3VwLWlm LW1pc21hdGNoIgpkZWNsYXJlIC0tIEVQQVRDSF9FWENMVURFPSIiCmRlY2xhcmUgLS0gRVBBVENI X0ZPUkNFPSJubyIKZGVjbGFyZSAtLSBFUEFUQ0hfTVVMVElfTVNHPSJBcHBseWluZyB2YXJpb3Vz IHBhdGNoZXMgKGJ1Z2ZpeGVzL3VwZGF0ZXMpIC4uLiIKZGVjbGFyZSAtLSBFUEFUQ0hfT1BUUz0i IgpkZWNsYXJlIC0tIEVQQVRDSF9TSU5HTEVfTVNHPSIiCmRlY2xhcmUgLS0gRVBBVENIX1NPVVJD RT0iL3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0xNC40X3AxL3dvcmsv cGF0Y2giCmRlY2xhcmUgLS0gRVBBVENIX1NVRkZJWD0icGF0Y2guYnoyIgpkZWNsYXJlIC14IEVY RU9QVElPTlM9Ii1tMDc1NSIKZGVjbGFyZSAteCBGQ0ZMQUdTPSItTzIgLXBpcGUiCmRlY2xhcmUg LXggRkVUQ0hDT01NQU5EX1NTSD0iYmFzaCAtYyBcIng9XFxcJHsyI3NzaDovL30gOyBob3N0PVxc XCR7eCUlLyp9IDsgcG9ydD1cXFwke2hvc3QjIyo6fSA7IGhvc3Q9XFxcJHtob3N0JToqfSA7IFtb IFxcXCR7aG9zdH0gPSBcXFwke3BvcnR9IF1dICYmIHBvcnQ9MjIgOyBleGVjIHJzeW5jIC0tcnNo PVxcXCJzc2ggLXBcXFwke3BvcnR9IFxcXCR7M31cXFwiIC1hdlAgXFxcIlxcXCR7aG9zdH06L1xc XCR7eCMqL31cXFwiIFxcXCJcXFwkMVxcXCJcIiByc3luYyBcIlwke0RJU1RESVJ9L1wke0ZJTEV9 XCIgXCJcJHtVUkl9XCIgXCJcJHtQT1JUQUdFX1NTSF9PUFRTfVwiIgpkZWNsYXJlIC14IEZGTEFH Uz0iLU8yIC1waXBlIgpkZWNsYXJlIC0tIEZPTERFUl9QUkVGSVg9ImNvbW1vbi8iCmRlY2xhcmUg LXggR0NDX1NQRUNTPSIiCmRlY2xhcmUgLXggR0VOVE9PX1BZVEhPTl9QUk9DRVNTX05BTUU9ImVt ZXJnZSIKZGVjbGFyZSAteCBHUFNEX1BST1RPQ09MUz0iYXNodGVjaCBhaXZkbSBlYXJ0aG1hdGUg ZXZlcm1vcmUgZnYxOCBnYXJtaW4gZ2FybWludHh0IGdwc2Nsb2NrIGl0cmF4IG10azMzMDEgbm1l YSBudHJpcCBuYXZjb20gb2NlYW5zZXJ2ZXIgb2xkc3R5bGUgb25jb3JlIHJ0Y20xMDR2MiBydGNt MTA0djMgc2lyZiBzdXBlcnN0YXIyIHRpbWluZyB0c2lwIHRyaXBtYXRlIHRudCB1YmxveCB1Yngi CmRlY2xhcmUgLXggR1JBUEhJVEU9Ii1mbG9vcC1pbnRlcmNoYW5nZSAtZnRyZWUtbG9vcC1kaXN0 cmlidXRpb24gLWZsb29wLXN0cmlwLW1pbmUgLWZsb29wLWJsb2NrIgpkZWNsYXJlIC14IEdSVUJf UExBVEZPUk1TPSIiCmRlY2xhcmUgSERFUEVORD0iIgpkZWNsYXJlIEhPTUVQQUdFPSJodHRwOi8v d3d3LmFtZC5jb20iCmRlY2xhcmUgLXggSU5IRVJJVEVEPSIgbXVsdGlsaWIgdG9vbGNoYWluLWZ1 bmNzIGV1dGlscyB2ZXJzaW9uYXRvciBsaW51eC1pbmZvIGxpbnV4LW1vZCBwYXgtdXRpbHMiCmRl Y2xhcmUgLXggSU5QVVRfREVWSUNFUz0iZXZkZXYiCmRlY2xhcmUgLXggSU5TREVTVFRSRUU9IiIK ZGVjbGFyZSAteCBJTlNPUFRJT05TPSItbTA2NDQiCmRlY2xhcmUgSVVTRT0iZGVidWcgK21vZHVs ZXMgbXVsdGlsaWIgcXQ0IHN0YXRpYy1saWJzIHBheF9rZXJuZWwga2VybmVsX2xpbnV4ICIKZGVj bGFyZSAteCBJVVNFX0VGRkVDVElWRT0iYWJpX3g4Nl82NCBhbHBoYSBhbWQ2NCBhbWQ2NC1mYnNk IGFtZDY0LWxpbnV4IGFybSBhcm0tbGludXggYXJtNjQgZGVidWcgZWxpYmNfQUlYIGVsaWJjX0N5 Z3dpbiBlbGliY19EYXJ3aW4gZWxpYmNfRHJhZ29uRmx5IGVsaWJjX0ZyZWVCU0QgZWxpYmNfSFBV WCBlbGliY19JbnRlcml4IGVsaWJjX05ldEJTRCBlbGliY19PcGVuQlNEIGVsaWJjX1N1bk9TIGVs aWJjX1dpbm50IGVsaWJjX2dsaWJjIGVsaWJjX21pbnRsaWIgZWxpYmNfbXVzbCBlbGliY191Y2xp YmMgaHBwYSBocHBhLWhwdXggaWE2NCBpYTY0LWhwdXggaWE2NC1saW51eCBrZXJuZWxfQUlYIGtl cm5lbF9DeWd3aW4ga2VybmVsX0RhcndpbiBrZXJuZWxfRnJlZUJTRCBrZXJuZWxfSFBVWCBrZXJu ZWxfSW50ZXJpeCBrZXJuZWxfTmV0QlNEIGtlcm5lbF9PcGVuQlNEIGtlcm5lbF9TdW5PUyBrZXJu ZWxfV2lubnQga2VybmVsX2ZyZWVtaW50IGtlcm5lbF9saW51eCBtNjhrIG02OGstbWludCBtaXBz IG1vZHVsZXMgbXVsdGlsaWIgcGF4X2tlcm5lbCBwcGMgcHBjLWFpeCBwcGMtbWFjb3MgcHBjLW9w ZW5ic2QgcHBjNjQgcHBjNjQtbGludXggcHJlZml4IHF0NCBzMzkwIHNoIHNwYXJjIHNwYXJjLWZi c2Qgc3BhcmMtc29sYXJpcyBzcGFyYzY0LWZyZWVic2Qgc3BhcmM2NC1zb2xhcmlzIHN0YXRpYy1s aWJzIHVzZXJsYW5kX0JTRCB1c2VybGFuZF9HTlUgeDY0LWZyZWVic2QgeDY0LW1hY29zIHg2NC1v cGVuYnNkIHg2NC1zb2xhcmlzIHg4NiB4ODYtY3lnd2luIHg4Ni1mYnNkIHg4Ni1mcmVlYnNkIHg4 Ni1pbnRlcml4IHg4Ni1saW51eCB4ODYtbWFjb3MgeDg2LW5ldGJzZCB4ODYtb3BlbmJzZCB4ODYt c29sYXJpcyB4ODYtd2lubnQiCmRlY2xhcmUgLXggSVVTRV9JTVBMSUNJVD0iYWJpX3g4Nl82NCBw cmVmaXgiCmRlY2xhcmUgLXggS0VSTkVMPSJsaW51eCIKZGVjbGFyZSAteCBLRVJORUxfQUJJPSJh bWQ2NCIKZGVjbGFyZSAtLSBLRVJORUxfRElSPSIvdXNyL3NyYy9saW51eCIKZGVjbGFyZSAtLSBL RVJORUxfTUFLRUZJTEU9Ii91c3Ivc3JjL2xpbnV4L01ha2VmaWxlIgpkZWNsYXJlIC14IEtFWVdP UkRTPSItKiBhbWQ2NCB4ODYiCmRlY2xhcmUgLS0gS1ZfRElSPSIvdXNyL3NyYy9saW51eCIKZGVj bGFyZSAtLSBLVl9FWFRSQT0iLWdlbnRvbyIKZGVjbGFyZSAtLSBLVl9GVUxMPSIzLjE2LjUtZ2Vu dG9vIgpkZWNsYXJlIC0tIEtWX0xPQ0FMPSIiCmRlY2xhcmUgLS0gS1ZfTUFKT1I9IjMiCmRlY2xh cmUgLS0gS1ZfTUlOT1I9IjE2IgpkZWNsYXJlIC0tIEtWX09CSj0ia28iCmRlY2xhcmUgLS0gS1Zf T1VUX0RJUj0iL2xpYi9tb2R1bGVzLzMuMTYuNS1nZW50b28vYnVpbGQiCmRlY2xhcmUgLS0gS1Zf UEFUQ0g9IjUiCmRlY2xhcmUgLXggTEFORz0iZW5fVVMudXRmOCIKZGVjbGFyZSAteCBMQ0RfREVW SUNFUz0iYmF5cmFkIGNmb250eiBjZm9udHo2MzMgZ2xrIGhkNDQ3ODAgbGIyMTYgbGNkbTAwMSBt dHhvcmIgbmN1cnNlcyB0ZXh0IgpkZWNsYXJlIC14IExDX01FU1NBR0VTPSJDIgpkZWNsYXJlIC14 IExERkxBR1M9Ii1tYXJjaD1uYXRpdmUgLU8yIC1waXBlIC1mbHRvPTQgLWZsb29wLWludGVyY2hh bmdlIC1mdHJlZS1sb29wLWRpc3RyaWJ1dGlvbiAtZmxvb3Atc3RyaXAtbWluZSAtZmxvb3AtYmxv Y2sgLWZ0cmVlLXZlY3Rvcml6ZSAtZnVzZS1saW5rZXItcGx1Z2luIC1mbm8tbG9vcC1pbnRlcmNo YW5nZSAtZm5vLXRyZWUtbG9vcC1kaXN0cmlidXRpb24gLWZuby1sb29wLXN0cmlwLW1pbmUgLWZu by1sb29wLWJsb2NrIC1mbm8tbHRvIC1mbm8tdXNlLWxpbmtlci1wbHVnaW4iCmRlY2xhcmUgLXgg TERGTEFHU19hbWQ2ND0iLW0gZWxmX3g4Nl82NCIKZGVjbGFyZSAteCBMREZMQUdTX2RlZmF1bHQK ZGVjbGFyZSAteCBMREZMQUdTX3gzMj0iLW0gZWxmMzJfeDg2XzY0IgpkZWNsYXJlIC14IExERkxB R1NfeDg2PSItbSBlbGZfaTM4NiIKZGVjbGFyZSAteCBMSUJESVJfYW1kNjQ9ImxpYjY0IgpkZWNs YXJlIC14IExJQkRJUl9hbWQ2NF9mYnNkPSJsaWI2NCIKZGVjbGFyZSAteCBMSUJESVJfYXJtPSJs aWIiCmRlY2xhcmUgLXggTElCRElSX2FybTY0PSJsaWI2NCIKZGVjbGFyZSAteCBMSUJESVJfZGVm YXVsdD0ibGliIgpkZWNsYXJlIC14IExJQkRJUl9uMzI9ImxpYjMyIgpkZWNsYXJlIC14IExJQkRJ Ul9uNjQ9ImxpYjY0IgpkZWNsYXJlIC14IExJQkRJUl9vMzI9ImxpYiIKZGVjbGFyZSAteCBMSUJE SVJfcHBjPSJsaWIzMiIKZGVjbGFyZSAteCBMSUJESVJfcHBjNjQ9ImxpYjY0IgpkZWNsYXJlIC14 IExJQkRJUl9zMzkwPSJsaWIzMiIKZGVjbGFyZSAteCBMSUJESVJfczM5MHg9ImxpYjY0IgpkZWNs YXJlIC14IExJQkRJUl9zcGFyYzMyPSJsaWIzMiIKZGVjbGFyZSAteCBMSUJESVJfc3BhcmM2ND0i bGliNjQiCmRlY2xhcmUgLXggTElCRElSX3gzMj0ibGlieDMyIgpkZWNsYXJlIC14IExJQkRJUl94 ODY9ImxpYjMyIgpkZWNsYXJlIC14IExJQkRJUl94ODZfZmJzZD0ibGliMzIiCmRlY2xhcmUgLXgg TElCT1BUSU9OUz0iLW0wNjQ0IgpkZWNsYXJlIC14IExJQlJFT0ZGSUNFX0VYVEVOU0lPTlM9InBy ZXNlbnRlci1jb25zb2xlIHByZXNlbnRlci1taW5pbWl6ZXIiCmRlY2xhcmUgLXggTElDRU5TRT0i QU1EIEdQTC0yIFFQTC0xLjAiCmRlY2xhcmUgLXggTUFJTD0iL3Zhci9tYWlsL3Jvb3QiCmRlY2xh cmUgLXggTUFLRU9QVFM9Ii1qNSIKZGVjbGFyZSAtLSBNT0RVTEVfRElSPSIvdmFyL3RtcC9wb3J0 YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTE0LjRfcDEvd29yay9jb21tb24vL2xpYi9tb2R1 bGVzL2ZnbHJ4L2J1aWxkX21vZCIKZGVjbGFyZSAtLSBNT0RVTEVfTkFNRVM9ImZnbHJ4KHZpZGVv Oi92YXIvdG1wL3BvcnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTQuNF9wMS93b3JrL2Nv bW1vbi8vbGliL21vZHVsZXMvZmdscngvYnVpbGRfbW9kLzIuNi54KSIKZGVjbGFyZSAteCBNVUxU SUxJQl9BQklTPSJhbWQ2NCB4ODYiCmRlY2xhcmUgLXggTVVMVElMSUJfU1RSSUNUX0RFTlk9IjY0 LWJpdC4qc2hhcmVkIG9iamVjdCIKZGVjbGFyZSAteCBNVUxUSUxJQl9TVFJJQ1RfRElSUz0iL2xp YjMyIC9saWIgL3Vzci9saWIzMiAvdXNyL2xpYiAvdXNyL2tkZS8qL2xpYjMyIC91c3Iva2RlLyov bGliIC91c3IvcXQvKi9saWIzMiAvdXNyL3F0LyovbGliIC91c3IvWDExUjYvbGliMzIgL3Vzci9Y MTFSNi9saWIiCmRlY2xhcmUgLXggTVVMVElMSUJfU1RSSUNUX0VYRU1QVD0iKHBlcmw1fGdjY3xn Y2MtbGlifGJpbnV0aWxzfGVjbGlwc2UtM3xkZWJ1Z3xwb3J0YWdlfHVkZXZ8c3lzdGVtZHxjbGFu Z3xweXRob24tZXhlYykiCmRlY2xhcmUgLXggTVVMVElPU0RJUlM9Ii4uL2xpYjY0Oi4uL2xpYjMy IgpkZWNsYXJlIC0tIE1ZX0JBU0VfRElSPSIvdmFyL3RtcC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0 aS1kcml2ZXJzLTE0LjRfcDEvd29yay94cGljXzY0YSIKZGVjbGFyZSAteCBORVRCRUFOUz0iYXBp c3VwcG9ydCBjbmQgZ3Jvb3Z5IGdzZiBoYXJuZXNzIGlkZSBpZGVudGl0eSBqMmVlIGphdmEgbW9i aWxpdHkgbmIgcGhwIHByb2ZpbGVyIHNvYSB2aXN1YWx3ZWIgd2ViY29tbW9uIHdlYnN2Y2NvbW1v biB4bWwiCmRlY2xhcmUgLXggT0ZGSUNFX0lNUExFTUVOVEFUSU9OPSJsaWJyZW9mZmljZSIKZGVj bGFyZSAteCBPUEVOR0xfUFJPRklMRT0ieG9yZy14MTEiCmRlY2xhcmUgLXggUEFUSD0iL3Vzci9s aWI2NC9wb3J0YWdlL2Jpbi9lYnVpbGQtaGVscGVycy94YXR0cjovdXNyL2xpYjY0L3BvcnRhZ2Uv YmluL2VidWlsZC1oZWxwZXJzOi91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3Ni aW46L3Vzci9iaW46L3NiaW46L2Jpbjovb3B0L2JpbjovdXNyL3g4Nl82NC1wYy1saW51eC1nbnUv Z2NjLWJpbi80LjguMyIKZGVjbGFyZSAtLSBQQVhfTUFSS0lOR1M9IlBUIgpkZWNsYXJlIFBERVBF TkQ9IiIKZGVjbGFyZSAteCBQSFBfVEFSR0VUUz0icGhwNS01IgpkZWNsYXJlIC14IFBLR19DT05G SUdfUEFUSD0iL3Vzci9saWI2NC9wa2djb25maWciCmRlY2xhcmUgLS0gUEtHX0xJQkRJUj0ibGli NjQiCmRlY2xhcmUgLWEgUE9SVEFHRV9ET0NPTVBSRVNTPScoWzBdPSIvdXNyL3NoYXJlL2RvYyIg WzFdPSIvdXNyL3NoYXJlL2luZm8iIFsyXT0iL3Vzci9zaGFyZS9tYW4iKScKZGVjbGFyZSAteCBQ T1JUQUdFX0RPQ09NUFJFU1NfU0laRV9MSU1JVD0iMTI4IgpkZWNsYXJlIC1hIFBPUlRBR0VfRE9D T01QUkVTU19TS0lQPScoWzBdPSIvdXNyL3NoYXJlL2RvYy9hdGktZHJpdmVycy0xNC40X3AxL2h0 bWwiKScKZGVjbGFyZSAteCBQUk9GSUxFX0lTX0hBUkRFTkVEPSIxIgpkZWNsYXJlIC14IFBST0ZJ TEVfT05MWV9WQVJJQUJMRVM9IkFSQ0ggRUxJQkMgSVVTRV9JTVBMSUNJVCBLRVJORUwgVVNFUkxB TkQgVVNFX0VYUEFORF9JTVBMSUNJVCBVU0VfRVhQQU5EX1VOUFJFRklYRUQgVVNFX0VYUEFORF9W QUxVRVNfQVJDSCBVU0VfRVhQQU5EX1ZBTFVFU19FTElCQyBVU0VfRVhQQU5EX1ZBTFVFU19LRVJO RUwgVVNFX0VYUEFORF9WQUxVRVNfVVNFUkxBTkQiCmRlY2xhcmUgLXggUFJPUEVSVElFUz0iIgpk ZWNsYXJlIC14IFBST1ZJREU9IiIKZGVjbGFyZSAteCBQWVRIT05ET05UV1JJVEVCWVRFQ09ERT0i MSIKZGVjbGFyZSAteCBQWVRIT05fU0lOR0xFX1RBUkdFVD0icHl0aG9uMl83IgpkZWNsYXJlIC14 IFBZVEhPTl9UQVJHRVRTPSJweXRob24yXzcgcHl0aG9uM18zIgpkZWNsYXJlIC0tIFFBX0RUX0hB U0g9IgoJb3B0L2Jpbi9hbWRjY2NsZQoJb3B0L2Jpbi9hdGljb25maWcKCW9wdC9iaW4vYXRpb2Rj bGkKCW9wdC9iaW4vYXRpb2RlCglvcHQvYmluL2NsaW5mbwoJb3B0L2Jpbi9mZ2xyeGluZm8KCW9w dC9zYmluL2F0aWV2ZW50c2QKCW9wdC9zYmluL2FtZG5vdGlmeXVpCgl1c3IvbGliXFwoMzJcXHw2 NFxcKVxcPy9saWJhdGljYWxjbC5zbwoJdXNyL2xpYlxcKDMyXFx8NjRcXClcXD8vbGliYXRpY2Fs cnQuc28KCXVzci9saWJcXCgzMlxcfDY0XFwpXFw/L2xpYmF0aXVraS5zby4xLjAKCXVzci9saWJc XCgzMlxcfDY0XFwpXFw/L2xpYmF0aWFkbHh4LnNvCgl1c3IvbGliXFwoMzJcXHw2NFxcKVxcPy9s aWJmZ2xyeF9kbS5zby4xLjAKCXVzci9saWJcXCgzMlxcfDY0XFwpXFw/L2xpYlh2QkFXLnNvLjEu MAoJdXNyL2xpYlxcKDMyXFx8NjRcXClcXD8vbGliQU1EWHZCQS5zby4xLjAKCXVzci9saWJcXCgz MlxcfDY0XFwpXFw/L3hvcmcvbW9kdWxlcy9hbWR4bW0uc28KCXVzci9saWJcXCgzMlxcfDY0XFwp XFw/L3hvcmcvbW9kdWxlcy9nbGVzeC5zbwoJdXNyL2xpYlxcKDMyXFx8NjRcXClcXD8veG9yZy9t b2R1bGVzL2xpbnV4L2xpYmZnbHJ4ZHJtLnNvCgl1c3IvbGliXFwoMzJcXHw2NFxcKVxcPy94b3Jn L21vZHVsZXMvZHJpdmVycy9mZ2xyeF9kcnYuc28KCXVzci9saWJcXCgzMlxcfDY0XFwpXFw/L2xp YmF0aWNhbGRkLnNvCgl1c3IvbGliXFwoMzJcXHw2NFxcKVxcPy9kcmkvZmdscnhfZHJpLnNvCgl1 c3IvbGliXFwoMzJcXHw2NFxcKVxcPy9vcGVuZ2wvYXRpL2V4dGVuc2lvbnMvbGliZ2x4LnNvCgl1 c3IvbGliXFwoMzJcXHw2NFxcKVxcPy9vcGVuZ2wvYXRpL2V4dGVuc2lvbnMvZmdscngtbGliZ2x4 LnNvCgl1c3IvbGliXFwoMzJcXHw2NFxcKVxcPy9vcGVuZ2wvYXRpL2xpYi9mZ2xyeC1saWJHTC5z by4xLjIKCXVzci9saWJcXCgzMlxcfDY0XFwpXFw/L29wZW5nbC9hdGkvbGliL2xpYkdMLnNvLjEu MgoJdXNyL2xpYlxcKDMyXFx8NjRcXClcXD8vT3BlbkNML3ZlbmRvcnMvYW1kL2xpYmFtZG9jbFxc KDMyXFx8NjRcXClcXD8uc28KCXVzci9saWJcXCgzMlxcfDY0XFwpXFw/L09wZW5DTC92ZW5kb3Jz L2FtZC9saWJPcGVuQ0wuc28uMQoiCmRlY2xhcmUgLS0gUUFfRVhFQ1NUQUNLPSIKCW9wdC9iaW4v YXRpb2RlCglvcHQvYmluL2FtZGNjY2xlCgl1c3IvbGliKi9vcGVuZ2wvYXRpL2xpYi9saWJHTC5z by4xLjIKCXVzci9saWIqL2RyaS9mZ2xyeF9kcmkuc28KIgpkZWNsYXJlIC14IFFBX1BSRVNUUklQ UEVEPSIKCXVzci9saWJcXCgzMlxcfDY0XFwpXFw/L2xpYlh2QkFXLnNvLjEuMAoJdXNyL2xpYlxc KDMyXFx8NjRcXClcXD8vb3BlbmdsL2F0aS9saWIvbGliR0wuc28uMS4yCgl1c3IvbGliXFwoMzJc XHw2NFxcKVxcPy9vcGVuZ2wvYXRpL2V4dGVuc2lvbnMvbGliZ2x4LnNvCgl1c3IvbGliXFwoMzJc XHw2NFxcKVxcPy94b3JnL21vZHVsZXMvZ2xlc3guc28KCXVzci9saWJcXCgzMlxcfDY0XFwpXFw/ L2xpYkFNRFh2QkEuc28uMS4wCgl1c3IvbGliXFwoMzJcXHw2NFxcKVxcPy9saWJhdGljYWxkZC5z bwoJdXNyL2xpYlxcKDMyXFx8NjRcXClcXD8vZHJpL2ZnbHJ4X2RyaS5zbwoJdXNyL2xpYlxcKDMy XFx8NjRcXClcXD8vT3BlbkNML3ZlbmRvcnMvYW1kL2xpYk9wZW5DTC5zby4xCgl1c3IvbGliXFwo MzJcXHw2NFxcKVxcPy9PcGVuQ0wvdmVuZG9ycy9hbWQvbGliYW1kb2NsXFwoMzJcXHw2NFxcKS5z bwoiCmRlY2xhcmUgLS0gUUFfU09OQU1FPSIKCXVzci9saWJcXCgzMlxcfDY0XFwpXFw/L2xpYmF0 aWFkbHh4LnNvCgl1c3IvbGliXFwoMzJcXHw2NFxcKVxcPy9saWJhdGljYWxjbC5zbwoJdXNyL2xp YlxcKDMyXFx8NjRcXClcXD8vbGliYXRpY2FsZGQuc28KCXVzci9saWJcXCgzMlxcfDY0XFwpXFw/ L2xpYmF0aWNhbHJ0LnNvCgl1c3IvbGliXFwoMzJcXHw2NFxcKVxcPy9saWJhbWRvY2xcXCgzMlxc fDY0XFwpXFw/LnNvCiIKZGVjbGFyZSAtLSBRQV9URVhUUkVMUz0iCgl1c3IvbGliKi9vcGVuZ2wv YXRpL2xpYi9saWJHTC5zby4xLjIKCXVzci9saWIqL2xpYmF0aWFkbHh4LnNvCgl1c3IvbGliKi94 b3JnL21vZHVsZXMvZ2xlc3guc28KCXVzci9saWIqL2xpYmF0aWNhbGRkLnNvCgl1c3IvbGliKi9k cmkvZmdscnhfZHJpLnNvCiIKZGVjbGFyZSAtLSBRQV9XWF9MT0FEPSIKCXVzci9saWIqL29wZW5n bC9hdGkvbGliL2xpYkdMLnNvLjEuMgoJdXNyL2xpYiovZHJpL2ZnbHJ4X2RyaS5zbwoiCmRlY2xh cmUgUkRFUEVORD0iCgk8PXgxMS1iYXNlL3hvcmctc2VydmVyLTEuMTUuNDlbLW1pbmltYWxdCgk+ PWFwcC1hZG1pbi9lc2VsZWN0LW9wZW5nbC0xLjAuNwoJYXBwLWFkbWluL2VzZWxlY3Qtb3BlbmNs CglzeXMtcG93ZXIvYWNwaWQKCXgxMS1hcHBzL3hhdXRoCgl4MTEtbGlicy9saWJYMTEKCXgxMS1s aWJzL2xpYlhleHQKCXgxMS1saWJzL2xpYlhpbmVyYW1hCgl4MTEtbGlicy9saWJYcmFuZHIKCXgx MS1saWJzL2xpYlhyZW5kZXIKCXZpcnR1YWwvZ2x1CgltdWx0aWxpYj8gKAoJCQl8fCAoCgkJCQk+ PXZpcnR1YWwvZ2x1LTkuMC1yMVthYmlfeDg2XzMyXQoJCQkJYXBwLWVtdWxhdGlvbi9lbXVsLWxp bnV4LXg4Ni1vcGVuZ2wKCQkJKQoJCQl8fCAoCgkJCQkoCgkJCQkJPj14MTEtbGlicy9saWJYMTEt MS42LjJbYWJpX3g4Nl8zMl0KCQkJCQk+PXgxMS1saWJzL2xpYlhleHQtMS4zLjJbYWJpX3g4Nl8z Ml0KCQkJCQk+PXgxMS1saWJzL2xpYlhpbmVyYW1hLTEuMS4zW2FiaV94ODZfMzJdCgkJCQkJPj14 MTEtbGlicy9saWJYcmFuZHItMS40LjJbYWJpX3g4Nl8zMl0KCQkJCQk+PXgxMS1saWJzL2xpYlhy ZW5kZXItMC45LjhbYWJpX3g4Nl8zMl0KCQkJCSkKCQkJCWFwcC1lbXVsYXRpb24vZW11bC1saW51 eC14ODYteGxpYnMKCQkJKQoJKQoJcXQ0PyAoCgkJCXgxMS1saWJzL2xpYklDRQoJCQl4MTEtbGli cy9saWJTTQoJCQl4MTEtbGlicy9saWJYY3Vyc29yCgkJCXgxMS1saWJzL2xpYlhmaXhlcwoJCQl4 MTEtbGlicy9saWJYeGY4NnZtCgkJCWRldi1xdC9xdGNvcmU6NAoJCQlkZXYtcXQvcXRndWk6NFth Y2Nlc3NpYmlsaXR5XQoJKQoKCQkheDExLWRyaXZlcnMvYXRpLWRyaXZlcnM6bGVnYWN5ICBrZXJu ZWxfbGludXg/ICggdmlydHVhbC9tb2R1dGlscyApICIKZGVjbGFyZSBSRVBPU0lUT1JZCmRlY2xh cmUgUkVRVUlSRURfVVNFPSIiCmRlY2xhcmUgLXggUkVTVFJJQ1Q9ImJpbmRpc3QgdGVzdCIKZGVj bGFyZSAteCBSRVNVTUVDT01NQU5EX1NTSD0iYmFzaCAtYyBcIng9XFxcJHsyI3NzaDovL30gOyBo b3N0PVxcXCR7eCUlLyp9IDsgcG9ydD1cXFwke2hvc3QjIyo6fSA7IGhvc3Q9XFxcJHtob3N0JToq fSA7IFtbIFxcXCR7aG9zdH0gPSBcXFwke3BvcnR9IF1dICYmIHBvcnQ9MjIgOyBleGVjIHJzeW5j IC0tcnNoPVxcXCJzc2ggLXBcXFwke3BvcnR9IFxcXCR7M31cXFwiIC1hdlAgXFxcIlxcXCR7aG9z dH06L1xcXCR7eCMqL31cXFwiIFxcXCJcXFwkMVxcXCJcIiByc3luYyBcIlwke0RJU1RESVJ9L1wk e0ZJTEV9XCIgXCJcJHtVUkl9XCIgXCJcJHtQT1JUQUdFX1NTSF9PUFRTfVwiIgpkZWNsYXJlIC14 IFJVQllfVEFSR0VUUz0icnVieTE5IHJ1YnkyMCIKZGVjbGFyZSAtLSBSVU49Ii92YXIvdG1wL3Bv cnRhZ2UveDExLWRyaXZlcnMvYXRpLWRyaXZlcnMtMTQuNF9wMS93b3JrL2ZnbHJ4LTE0LjEwLjEw MDYuMTAwMS9hbWQtZHJpdmVyLWluc3RhbGxlci0xNC4xMC4xMDA2LjEwMDEteDg2Lng4Nl82NC5y dW4iCmRlY2xhcmUgLXggUl9IT01FPSIvdXNyL2xpYjY0L1IiCmRlY2xhcmUgLXggUz0iL3Zhci90 bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGktZHJpdmVycy0xNC40X3AxL3dvcmsiCmRlY2xhcmUg LXggU0FOREJPWF9ERUJVRz0iMCIKZGVjbGFyZSAteCBTQU5EQk9YX0RFTlk9IiIKZGVjbGFyZSAt eCBTQU5EQk9YX1BJRD0iMTY3MjgiCmRlY2xhcmUgLXggU0FOREJPWF9QUkVESUNUPSIvdmFyL3Rt cC9wb3J0YWdlL3gxMS1kcml2ZXJzL2F0aS1kcml2ZXJzLTE0LjRfcDEvaG9tZWRpcjovZGV2L2Ny eXB0bzovcHJvYy9zZWxmL2NvcmVkdW1wX2ZpbHRlcjovdmFyL2NhY2hlL2ZvbnRjb25maWciCmRl Y2xhcmUgLXggU0FOREJPWF9SRUFEPSIvOi92YXIvdG1wIgpkZWNsYXJlIC14IFNBTkRCT1hfVkVS Qk9TRT0iMSIKZGVjbGFyZSAteCBTQU5EQk9YX1dSSVRFPSI6L2Rldi9jb25zb2xlOi9kZXYvZmQ6 L2Rldi9mdWxsOi9kZXYvbnVsbDovZGV2L3B0cy86L2Rldi9wdHk6L2Rldi9zaG06L2Rldi90dHM6 L2Rldi90dHk6L2Rldi92Yy86L2Rldi96ZXJvOi9wcm9jL3NlbGYvZmQ6L3RtcC86L3Vzci9saWIz Mi9jZjovdXNyL2xpYjMyL2NvbmZ0ZXN0Oi91c3IvbGliNjQvY2Y6L3Vzci9saWI2NC9jb25mdGVz dDovdXNyL2xpYi9jZjovdXNyL2xpYi9jb25mdGVzdDovdXNyL3RtcC9jZjovdXNyL3RtcC9jb25m dGVzdDovdmFyL3RtcDovdmFyL3RtcC86L3Zhci90bXAvcG9ydGFnZS94MTEtZHJpdmVycy9hdGkt ZHJpdmVycy0xNC40X3AxL2hvbWVkaXIvLmJhc2hfaGlzdG9yeSIKZGVjbGFyZSAteCBTSEVMTD0i L2Jpbi9iYXNoIgpkZWNsYXJlIC14IFNMT1Q9IjEiCmRlY2xhcmUgU1JDX1VSST0ibWlycm9yOi8v Z2VudG9vL2FtZC1jYXRhbHlzdC0xNC00LXJldjItbGludXgteDg2LXg4Ni02NC1tYXk2LnppcCBo dHRwOi8vZGV2ZWxvcGVyLmFtZC5jb20vd29yZHByZXNzL21lZGlhLzIwMTIvMTAveHZiYS1zZGst MC43NC00MDQwMDEudGFyLmd6IgpkZWNsYXJlIC14IFNVRE9fQ09NTUFORD0iL3Vzci9iaW4vZW1l cmdlIGF0aS1kcml2ZXJzIgpkZWNsYXJlIC14IFNVRE9fR0lEPSIxMDAwIgpkZWNsYXJlIC14IFNV RE9fVUlEPSIxMDAwIgpkZWNsYXJlIC14IFNVRE9fVVNFUj0iamVyYW1pYSIKZGVjbGFyZSAteCBT WU1MSU5LX0xJQj0ieWVzIgpkZWNsYXJlIC14IFVTRT0iYWJpX3g4Nl82NCBhbWQ2NCBlbGliY19n bGliYyBrZXJuZWxfbGludXggbW9kdWxlcyBtdWx0aWxpYiBwYXhfa2VybmVsIHVzZXJsYW5kX0dO VSIKZGVjbGFyZSAteCBVU0VSTEFORD0iR05VIgpkZWNsYXJlIC14IFVTRVJOQU1FPSJyb290Igpk ZWNsYXJlIC14IFVTRV9FWFBBTkRfSU1QTElDSVQ9IkFSQ0ggRUxJQkMgS0VSTkVMIFVTRVJMQU5E IgpkZWNsYXJlIC14IFVTRV9FWFBBTkRfVU5QUkVGSVhFRD0iQVJDSCIKZGVjbGFyZSAteCBVU0Vf RVhQQU5EX1ZBTFVFU19BUkNIPSJhbHBoYSBhbWQ2NCBhbWQ2NC1mYnNkIGFtZDY0LWxpbnV4IGFy bSBhcm0tbGludXggYXJtNjQgaHBwYSBocHBhLWhwdXggaWE2NCBpYTY0LWhwdXggaWE2NC1saW51 eCBtNjhrIG02OGstbWludCBtaXBzIHBwYyBwcGM2NCBwcGM2NC1saW51eCBwcGMtYWl4IHBwYy1t YWNvcyBwcGMtb3BlbmJzZCBzMzkwIHNoIHNwYXJjIHNwYXJjNjQtZnJlZWJzZCBzcGFyYzY0LXNv bGFyaXMgc3BhcmMtZmJzZCBzcGFyYy1zb2xhcmlzIHg2NC1mcmVlYnNkIHg2NC1tYWNvcyB4NjQt b3BlbmJzZCB4NjQtc29sYXJpcyB4ODYgeDg2LWN5Z3dpbiB4ODYtZmJzZCB4ODYtZnJlZWJzZCB4 ODYtaW50ZXJpeCB4ODYtbGludXggeDg2LW1hY29zIHg4Ni1uZXRic2QgeDg2LW9wZW5ic2QgeDg2 LXNvbGFyaXMgeDg2LXdpbm50IgpkZWNsYXJlIC14IFVTRV9FWFBBTkRfVkFMVUVTX0VMSUJDPSJB SVggQ3lnd2luIERhcndpbiBEcmFnb25GbHkgRnJlZUJTRCBnbGliYyBIUFVYIEludGVyaXggbWlu dGxpYiBtdXNsIE5ldEJTRCBPcGVuQlNEIFN1bk9TIHVjbGliYyBXaW5udCIKZGVjbGFyZSAteCBV U0VfRVhQQU5EX1ZBTFVFU19LRVJORUw9IkFJWCBDeWd3aW4gRGFyd2luIEZyZWVCU0QgZnJlZW1p bnQgSFBVWCBJbnRlcml4IGxpbnV4IE5ldEJTRCBPcGVuQlNEIFN1bk9TIFdpbm50IgpkZWNsYXJl IC14IFVTRV9FWFBBTkRfVkFMVUVTX1VTRVJMQU5EPSJCU0QgR05VIgpkZWNsYXJlIC14IFZJREVP X0NBUkRTPSJmZ2xyeCIKZGVjbGFyZSAteCBYVEFCTEVTX0FERE9OUz0icXVvdGEyIHBzZCBwa25v Y2sgbHNjYW4gbGVuZ3RoMiBpcHY0b3B0aW9ucyBpcHNldCBpcHAycCBpZmFjZSBnZW9pcCBmdXp6 eSBjb25kaXRpb24gdGVlIHRhcnBpdCBzeXNycSBzdGVhbCByYXduYXQgbG9nbWFyayBpcG1hcmsg ZGhjcG1hYyBkZWx1ZGUgY2hhb3MgYWNjb3VudCIKZGVjbGFyZSAtLSBYVkJBX1NES19VUkk9Imh0 dHA6Ly9kZXZlbG9wZXIuYW1kLmNvbS93b3JkcHJlc3MvbWVkaWEvMjAxMi8xMC94dmJhLXNkay0w Ljc0LTQwNDAwMS50YXIuZ3oiCmRlY2xhcmUgLS0gX0VVVElMU19FQ0xBU1M9IjEiCmRlY2xhcmUg LXggX0VfRE9DREVTVFRSRUVfPSIiCmRlY2xhcmUgLXggX0VfRVhFREVTVFRSRUVfPSIiCmRlY2xh cmUgLXggX0xJTlVYX0NPTkZJR19FWElTVFNfRE9ORT0iMSIKZGVjbGFyZSAtLSBfTVVMVElMSUJf RUNMQVNTPSIxIgpkZWNsYXJlIC0tIF9QQVhfVVRJTFNfRUNMQVNTPSIxIgpkZWNsYXJlIC0tIF9U T09MQ0hBSU5fRlVOQ1NfRUNMQVNTPSIxIgpkZWNsYXJlIC0tIF9WRVJTSU9OQVRPUl9FQ0xBU1M9 IjEiCmRlY2xhcmUgLS0gZ2V0X3ZlcnNpb25fd2FybmluZ19kb25lPSIiCmRlY2xhcmUgLS0gcGhh c2VfZnVuYwpfX2Jhc2hwaWQgKCkgCnsgCiAgICBzaCAtYyAnZWNobyAke1BQSUR9Jwp9Cl9lcGF0 Y2hfZHJhd19saW5lICgpIAp7IAogICAgW1sgLXogJDEgXV0gJiYgc2V0ICIkKHByaW50ZiAiJTY1 cyIgJycpIjsKICAgIGVjaG8gIiR7MS8vPy89fSIKfQpfZXV0aWxzX2VwcmVmaXhfaW5pdCAoKSAK eyAKICAgIGhhcyAiJHtFQVBJOi0wfSIgMCAxIDIgJiYgOiAke0VEOj0ke0R9fSAke0VQUkVGSVg6 PX0gJHtFUk9PVDo9JHtST09UfX0KfQpfZ2NjLWluc3RhbGwtZGlyICgpIAp7IAogICAgZWNobyAi JChMQ19BTEw9QyAkKHRjLWdldENDKSAtcHJpbnQtc2VhcmNoLWRpcnMgMj4gL2Rldi9udWxsIHwJ CWF3ayAnJDE9PSJpbnN0YWxsOiIge3ByaW50ICQyfScpIgp9Cl9nY2Mtc3BlY3MtZGlyZWN0aXZl X3JhdyAoKSAKeyAKICAgIGxvY2FsIGNjPSQodGMtZ2V0Q0MpOwogICAgbG9jYWwgc3BlY2ZpbGVz PSQoTENfQUxMPUMgJHtjY30gLXYgMj4mMSB8IGF3ayAnJDE9PSJSZWFkaW5nIiB7cHJpbnQgJE5G fScpOwogICAgJHtjY30gLWR1bXBzcGVjcyAyPiAvZGV2L251bGwgfCBjYXQgLSAke3NwZWNmaWxl c30gfCBhd2sgLXYgZGlyZWN0aXZlPSQxICdCRUdJTgl7IHBzcGVjPSIiOyBzcGVjPSIiOyBvdXRz aWRlPTEgfQokMT09IioiZGlyZWN0aXZlIjoiICB7IHBzcGVjPXNwZWM7IHNwZWM9IiI7IG91dHNp ZGU9MDsgbmV4dCB9CglvdXRzaWRlIHx8IE5GPT0wIHx8ICggc3Vic3RyKCQxLDEsMSk9PSIqIiAm JiBzdWJzdHIoJDEsbGVuZ3RoKCQxKSwxKT09IjoiICkgeyBvdXRzaWRlPTE7IG5leHQgfQoJc3Bl Yz09IiIgJiYgc3Vic3RyKCQwLDEsMSk9PSIrIiB7IHNwZWM9cHNwZWMgIiAiIHN1YnN0cigkMCwy KTsgbmV4dCB9Cgl7IHNwZWM9c3BlYyAkMCB9CkVORAl7IHByaW50IHNwZWMgfSc7CiAgICByZXR1 cm4gMAp9Cl9nY2Mtc3BlY3MtZXhpc3RzICgpIAp7IAogICAgW1sgLWYgJChfZ2NjLWluc3RhbGwt ZGlyKS8kMSBdXQp9Cl9nY2NfZnVsbHZlcnNpb24gKCkgCnsgCiAgICBsb2NhbCB2ZXI9IiQxIjsK ICAgIHNoaWZ0OwogICAgc2V0IC0tIGAkKHRjLWdldENQUCAiJEAiKSAtRSAtUCAtIDw8PCJfX0dO VUNfXyBfX0dOVUNfTUlOT1JfXyBfX0dOVUNfUEFUQ0hMRVZFTF9fImA7CiAgICBldmFsIGVjaG8g IiR2ZXIiCn0KX2ljb25pbnMgKCkgCnsgCiAgICAoIGxvY2FsIGZ1bmNuYW1lPSQxOwogICAgc2hp ZnQ7CiAgICBsb2NhbCBzaXplIGRpcjsKICAgIGxvY2FsIGNvbnRleHQ9YXBwczsKICAgIGxvY2Fs IHRoZW1lPWhpY29sb3I7CiAgICB3aGlsZSBbWyAkIyAtZ3QgMCBdXTsgZG8KICAgICAgICBjYXNl ICQxIGluIAogICAgICAgICAgICAtcyB8IC0tc2l6ZSkKICAgICAgICAgICAgICAgIGlmIFtbICR7 MiUleCp9eCR7MiUleCp9ID09ICIkMiIgXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICBzaXpl PSR7MiUleCp9OwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIHNpemU9 JHsyfTsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICAgICAgY2FzZSAke3NpemV9IGlu IAogICAgICAgICAgICAgICAgICAgIDE2IHwgMjIgfCAyNCB8IDMyIHwgMzYgfCA0OCB8IDY0IHwg NzIgfCA5NiB8IDEyOCB8IDE5MiB8IDI1NikKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT0k e3NpemV9eCR7c2l6ZX0KICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAg IHNjYWxhYmxlKQoKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgICop CiAgICAgICAgICAgICAgICAgICAgICAgIGVlcnJvciAiJHtzaXplfSBpcyBhbiB1bnN1cHBvcnRl ZCBpY29uIHNpemUhIjsKICAgICAgICAgICAgICAgICAgICAgICAgZXhpdCAxCiAgICAgICAgICAg ICAgICAgICAgOzsKICAgICAgICAgICAgICAgIGVzYWM7CiAgICAgICAgICAgICAgICBzaGlmdCAy CiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIC10IHwgLS10aGVtZSkKICAgICAgICAgICAgICAg IHRoZW1lPSR7Mn07CiAgICAgICAgICAgICAgICBzaGlmdCAyCiAgICAgICAgICAgIDs7CiAgICAg ICAgICAgIC1jIHwgLS1jb250ZXh0KQogICAgICAgICAgICAgICAgY29udGV4dD0kezJ9OwogICAg ICAgICAgICAgICAgc2hpZnQgMgogICAgICAgICAgICA7OwogICAgICAgICAgICAqKQogICAgICAg ICAgICAgICAgaWYgW1sgLXogJHtzaXplfSBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgIGlu c2ludG8gL3Vzci9zaGFyZS9waXhtYXBzOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAg ICAgICAgICAgIGluc2ludG8gL3Vzci9zaGFyZS9pY29ucy8ke3RoZW1lfS8ke3NpemV9LyR7Y29u dGV4dH07CiAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgICAgIGlmIFtbICR7ZnVuY25h bWV9ID09IGRvaWNvbiBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgIGlmIFtbIC1mICQxIF1d OyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIGRvaW5zICIkezF9IjsKICAgICAgICAgICAg ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFtbIC1kICQxIF1dOyB0aGVu CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9wdCAtcyBudWxsZ2xvYjsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRvaW5zICIkezF9Ii8qLntwbmcsc3ZnfTsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNob3B0IC11IG51bGxnbG9iOwogICAgICAgICAgICAgICAgICAgICAg ICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZXJyb3IgIiR7MX0gaXMgbm90IGEg dmFsaWQgZmlsZS9kaXJlY3RvcnkhIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQg MTsKICAgICAgICAgICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgICAgICAgICAgZmk7CiAg ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg ICAgICBmaTsKICAgICAgICAgICAgICAgIHNoaWZ0IDEKICAgICAgICAgICAgOzsKICAgICAgICBl c2FjOwogICAgZG9uZTsKICAgIGlmIFtbICR7ZnVuY25hbWV9ID09IG5ld2ljb24gXV07IHRoZW4K ICAgICAgICBuZXdpbnMgIiRAIjsKICAgIGZpICkgfHwgZGllCn0KX3BheF9saXN0X2ZpbGVzICgp IAp7IAogICAgbG9jYWwgZiBjbWQ7CiAgICBjbWQ9JDE7CiAgICBzaGlmdDsKICAgIGZvciBmIGlu ICIkQCI7CiAgICBkbwogICAgICAgICR7Y21kfSAiICAgICAke2Z9IjsKICAgIGRvbmUKfQpfdGMt Z2V0UFJPRyAoKSAKeyAKICAgIGxvY2FsIHR1cGxlPSQxOwogICAgbG9jYWwgdiB2YXIgdmFycz0k MjsKICAgIGxvY2FsIHByb2c9JDM7CiAgICB2YXI9JHt2YXJzJSUgKn07CiAgICBmb3IgdiBpbiAk e3ZhcnN9OwogICAgZG8KICAgICAgICBpZiBbWyAtbiAkeyF2fSBdXTsgdGhlbgogICAgICAgICAg ICBleHBvcnQgJHt2YXJ9PSIkeyF2fSI7CiAgICAgICAgICAgIGVjaG8gIiR7IXZ9IjsKICAgICAg ICAgICAgcmV0dXJuIDA7CiAgICAgICAgZmk7CiAgICBkb25lOwogICAgbG9jYWwgc2VhcmNoPTsK ICAgIFtbIC1uICQ0IF1dICYmIHNlYXJjaD0kKHR5cGUgLXAgIiQ0LSR7cHJvZ30iKTsKICAgIFtb IC16ICR7c2VhcmNofSAmJiAtbiAkeyF0dXBsZX0gXV0gJiYgc2VhcmNoPSQodHlwZSAtcCAiJHsh dHVwbGV9LSR7cHJvZ30iKTsKICAgIFtbIC1uICR7c2VhcmNofSBdXSAmJiBwcm9nPSR7c2VhcmNo IyMqL307CiAgICBleHBvcnQgJHt2YXJ9PSR7cHJvZ307CiAgICBlY2hvICIkeyF2YXJ9Igp9CmJ1 aWx0X3dpdGhfdXNlICgpIAp7IAogICAgX2V1dGlsc19lcHJlZml4X2luaXQ7CiAgICBsb2NhbCBo aWRkZW49Im5vIjsKICAgIGlmIFtbICQxID09ICItLWhpZGRlbiIgXV07IHRoZW4KICAgICAgICBo aWRkZW49InllcyI7CiAgICAgICAgc2hpZnQ7CiAgICBmaTsKICAgIGxvY2FsIG1pc3NpbmdfYWN0 aW9uPSJkaWUiOwogICAgaWYgW1sgJDEgPT0gIi0tbWlzc2luZyIgXV07IHRoZW4KICAgICAgICBt aXNzaW5nX2FjdGlvbj0kMjsKICAgICAgICBzaGlmdDsKICAgICAgICBzaGlmdDsKICAgICAgICBj YXNlICR7bWlzc2luZ19hY3Rpb259IGluIAogICAgICAgICAgICB0cnVlIHwgZmFsc2UgfCBkaWUp CgogICAgICAgICAgICA7OwogICAgICAgICAgICAqKQogICAgICAgICAgICAgICAgZGllICJ1bmtu b3duIGFjdGlvbiAnJHttaXNzaW5nX2FjdGlvbn0nIgogICAgICAgICAgICA7OwogICAgICAgIGVz YWM7CiAgICBmaTsKICAgIGxvY2FsIG9wdD0kMTsKICAgIFtbICR7b3B0OjA6MX0gPSAiLSIgXV0g JiYgc2hpZnQgfHwgb3B0PSItYSI7CiAgICBsb2NhbCBQS0c9JChiZXN0X3ZlcnNpb24gJDEpOwog ICAgW1sgLXogJHtQS0d9IF1dICYmIGRpZSAiVW5hYmxlIHRvIHJlc29sdmUgJDEgdG8gYW4gaW5z dGFsbGVkIHBhY2thZ2UiOwogICAgc2hpZnQ7CiAgICBsb2NhbCBVU0VGSUxFPSR7RVJPT1R9L3Zh ci9kYi9wa2cvJHtQS0d9L1VTRTsKICAgIGxvY2FsIElVU0VGSUxFPSR7RVJPT1R9L3Zhci9kYi9w a2cvJHtQS0d9L0lVU0U7CiAgICBpZiBbWyAhIC1lICR7VVNFRklMRX0gXV0gfHwgW1sgISAtZSAk e0lVU0VGSUxFfSAmJiAke2hpZGRlbn0gPT0gIm5vIiBdXTsgdGhlbgogICAgICAgIGNhc2UgJHtt aXNzaW5nX2FjdGlvbn0gaW4gCiAgICAgICAgICAgIHRydWUpCiAgICAgICAgICAgICAgICByZXR1 cm4gMAogICAgICAgICAgICA7OwogICAgICAgICAgICBmYWxzZSkKICAgICAgICAgICAgICAgIHJl dHVybiAxCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIGRpZSkKICAgICAgICAgICAgICAgIGRp ZSAiVW5hYmxlIHRvIGRldGVybWluZSB3aGF0IFVTRSBmbGFncyAkUEtHIHdhcyBidWlsdCB3aXRo IgogICAgICAgICAgICA7OwogICAgICAgIGVzYWM7CiAgICBmaTsKICAgIGlmIFtbICR7aGlkZGVu fSA9PSAibm8iIF1dOyB0aGVuCiAgICAgICAgbG9jYWwgSVVTRV9CVUlMVD0oJCg8IiR7SVVTRUZJ TEV9IikpOwogICAgICAgIGxvY2FsIGV4cGFuZDsKICAgICAgICBmb3IgZXhwYW5kIGluICQoZWNo byAke1VTRV9FWFBBTkR9IHwgdHIgJ1s6dXBwZXI6XScgJ1s6bG93ZXI6XScpOwogICAgICAgIGRv CiAgICAgICAgICAgIGlmIFtbICQxID09ICR7ZXhwYW5kfV8qIF1dOyB0aGVuCiAgICAgICAgICAg ICAgICBleHBhbmQ9IiI7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZmk7CiAg ICAgICAgZG9uZTsKICAgICAgICBpZiBbWyAtbiAke2V4cGFuZH0gXV07IHRoZW4KICAgICAgICAg ICAgaWYgISBoYXMgJDEgJHtJVVNFX0JVSUxUW0BdI1stK119OyB0aGVuCiAgICAgICAgICAgICAg ICBjYXNlICR7bWlzc2luZ19hY3Rpb259IGluIAogICAgICAgICAgICAgICAgICAgIHRydWUpCiAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgICAgICAgICAgICAgOzsKICAg ICAgICAgICAgICAgICAgICBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEK ICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIGRpZSkKICAgICAgICAg ICAgICAgICAgICAgICAgZGllICIkUEtHIGRvZXMgbm90IGFjdHVhbGx5IHN1cHBvcnQgdGhlICQx IFVTRSBmbGFnISIKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgZXNhYzsK ICAgICAgICAgICAgZmk7CiAgICAgICAgZmk7CiAgICBmaTsKICAgIGxvY2FsIFVTRV9CVUlMVD0k KDwke1VTRUZJTEV9KTsKICAgIHdoaWxlIFtbICQjIC1ndCAwIF1dOyBkbwogICAgICAgIGlmIFtb ICR7b3B0fSA9ICItbyIgXV07IHRoZW4KICAgICAgICAgICAgaGFzICQxICR7VVNFX0JVSUxUfSAm JiByZXR1cm4gMDsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGhhcyAkMSAke1VTRV9CVUlMVH0g fHwgcmV0dXJuIDE7CiAgICAgICAgZmk7CiAgICAgICAgc2hpZnQ7CiAgICBkb25lOwogICAgW1sg JHtvcHR9ID0gIi1hIiBdXQp9CmNoZWNrX2V4dHJhX2NvbmZpZyAoKSAKeyAKICAgIGxvY2FsIGNv bmZpZyBuZWdhdGUgZGllIGVycm9yIHJld29ya21vZHVsZW5hbWVzOwogICAgbG9jYWwgc29mdF9l cnJvcnNfY291bnQ9MCBoYXJkX2Vycm9yc19jb3VudD0wIGNvbmZpZ19yZXF1aXJlZD0wOwogICAg bG9jYWwgb2xkX0xJTlVYX0NPTkZJR19FWElTVFNfRE9ORT0iJHtfTElOVVhfQ09ORklHX0VYSVNU U19ET05FfSI7CiAgICBsaW51eC1pbmZvX2dldF9hbnlfdmVyc2lvbjsKICAgIGZvciBjb25maWcg aW4gJHtDT05GSUdfQ0hFQ0t9OwogICAgZG8KICAgICAgICBpZiBbWyAiJHtjb25maWc6MDoxfSIg IT0gIn4iIF1dOyB0aGVuCiAgICAgICAgICAgIGNvbmZpZ19yZXF1aXJlZD0xOwogICAgICAgICAg ICBicmVhazsKICAgICAgICBmaTsKICAgIGRvbmU7CiAgICBpZiBbWyAke2NvbmZpZ19yZXF1aXJl ZH0gPT0gMCBdXTsgdGhlbgogICAgICAgIGlmICEgbGludXhfY29uZmlnX2V4aXN0czsgdGhlbgog ICAgICAgICAgICBld2FybiAiVW5hYmxlIHRvIGNoZWNrIGZvciB0aGUgZm9sbG93aW5nIGtlcm5l bCBjb25maWcgb3B0aW9ucyBkdWUiOwogICAgICAgICAgICBld2FybiAidG8gYWJzZW5jZSBvZiBh bnkgY29uZmlndXJlZCBrZXJuZWwgc291cmNlcyBvciBjb21waWxlZCI7CiAgICAgICAgICAgIGV3 YXJuICJjb25maWc6IjsKICAgICAgICAgICAgZm9yIGNvbmZpZyBpbiAke0NPTkZJR19DSEVDS307 CiAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICBsb2NhbF9lcnJvcj0iRVJST1JfJHtjb25m aWcjXH59IjsKICAgICAgICAgICAgICAgIG1zZz0iJHshbG9jYWxfZXJyb3J9IjsKICAgICAgICAg ICAgICAgIGlmIFtbICJ4JHttc2d9IiA9PSAieCIgXV07IHRoZW4KICAgICAgICAgICAgICAgICAg ICBsb2NhbF9lcnJvcj0iV0FSTklOR18ke2NvbmZpZyNcfn0iOwogICAgICAgICAgICAgICAgICAg IG1zZz0iJHshbG9jYWxfZXJyb3J9IjsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICAg ICAgZXdhcm4gIiAtICR7Y29uZmlnI1x+fSR7bXNnOisgLSB9JHttc2d9IjsKICAgICAgICAgICAg ZG9uZTsKICAgICAgICAgICAgZXdhcm4gIllvdSdyZSBvbiB5b3VyIG93biB0byBtYWtlIHN1cmUg dGhleSBhcmUgc2V0IGlmIG5lZWRlZC4iOwogICAgICAgICAgICBleHBvcnQgTElOVVhfQ09ORklH X0VYSVNUU19ET05FPSIke29sZF9MSU5VWF9DT05GSUdfRVhJU1RTX0RPTkV9IjsKICAgICAgICAg ICAgcmV0dXJuIDA7CiAgICAgICAgZmk7CiAgICBlbHNlCiAgICAgICAgcmVxdWlyZV9jb25maWd1 cmVkX2tlcm5lbDsKICAgIGZpOwogICAgZWluZm8gIkNoZWNraW5nIGZvciBzdWl0YWJsZSBrZXJu ZWwgY29uZmlndXJhdGlvbiBvcHRpb25zLi4uIjsKICAgIGZvciBjb25maWcgaW4gJHtDT05GSUdf Q0hFQ0t9OwogICAgZG8KICAgICAgICBkaWU9MTsKICAgICAgICBlcnJvcj0wOwogICAgICAgIG5l Z2F0ZT0wOwogICAgICAgIHJld29ya21vZHVsZW5hbWVzPTA7CiAgICAgICAgaWYgW1sgJHtjb25m aWc6MDoxfSA9PSAifiIgXV07IHRoZW4KICAgICAgICAgICAgZGllPTA7CiAgICAgICAgICAgIGNv bmZpZz0ke2NvbmZpZzoxfTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGlmIFtbICR7Y29uZmln OjA6MX0gPT0gIkAiIF1dOyB0aGVuCiAgICAgICAgICAgICAgICBkaWU9MDsKICAgICAgICAgICAg ICAgIHJld29ya21vZHVsZW5hbWVzPTE7CiAgICAgICAgICAgICAgICBjb25maWc9JHtjb25maWc6 MX07CiAgICAgICAgICAgIGZpOwogICAgICAgIGZpOwogICAgICAgIGlmIFtbICR7Y29uZmlnOjA6 MX0gPT0gIiEiIF1dOyB0aGVuCiAgICAgICAgICAgIG5lZ2F0ZT0xOwogICAgICAgICAgICBjb25m aWc9JHtjb25maWc6MX07CiAgICAgICAgZmk7CiAgICAgICAgaWYgW1sgJHtuZWdhdGV9ID09IDEg XV07IHRoZW4KICAgICAgICAgICAgbGludXhfY2hrY29uZmlnX3ByZXNlbnQgJHtjb25maWd9ICYm IGVycm9yPTI7CiAgICAgICAgZWxzZQogICAgICAgICAgICBpZiBbWyAke3Jld29ya21vZHVsZW5h bWVzfSA9PSAxIF1dOyB0aGVuCiAgICAgICAgICAgICAgICBsb2NhbCB0ZW1wX2NvbmZpZz0iJHtj b25maWcvLyo6fSIgaSBuOwogICAgICAgICAgICAgICAgY29uZmlnPSIke2NvbmZpZy8vOip9IjsK ICAgICAgICAgICAgICAgIGlmIGxpbnV4X2Noa2NvbmZpZ19wcmVzZW50ICR7Y29uZmlnfTsgdGhl bgogICAgICAgICAgICAgICAgICAgIGZvciBpIGluICR7TU9EVUxFX05BTUVTfTsKICAgICAgICAg ICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgICAgICBuPSIke2kvLyR7dGVtcF9jb25m aWd9fSI7CiAgICAgICAgICAgICAgICAgICAgICAgIFtbIC16ICR7bi8vXCgqfSBdXSAmJiBNT0RV TEVfSUdOT1JFPSIke01PRFVMRV9JR05PUkV9ICR7dGVtcF9jb25maWd9IjsKICAgICAgICAgICAg ICAgICAgICBkb25lOwogICAgICAgICAgICAgICAgICAgIGVycm9yPTI7CiAgICAgICAgICAgICAg ICBmaTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgbGludXhfY2hrY29uZmlnX3By ZXNlbnQgJHtjb25maWd9IHx8IGVycm9yPTE7CiAgICAgICAgICAgIGZpOwogICAgICAgIGZpOwog ICAgICAgIGlmIFtbICR7ZXJyb3J9ID4gMCBdXTsgdGhlbgogICAgICAgICAgICBsb2NhbCByZXBv cnRfZnVuYz0iZWVycm9yIiBsb2NhbF9lcnJvcjsKICAgICAgICAgICAgbG9jYWxfZXJyb3I9IkVS Uk9SXyR7Y29uZmlnfSI7CiAgICAgICAgICAgIGxvY2FsX2Vycm9yPSIkeyFsb2NhbF9lcnJvcn0i OwogICAgICAgICAgICBpZiBbWyAteiAiJHtsb2NhbF9lcnJvcn0iIF1dOyB0aGVuCiAgICAgICAg ICAgICAgICBsb2NhbF9lcnJvcj0iJHtjb25maWd9X0VSUk9SIjsKICAgICAgICAgICAgICAgIGxv Y2FsX2Vycm9yPSIkeyFsb2NhbF9lcnJvcn0iOwogICAgICAgICAgICBmaTsKICAgICAgICAgICAg aWYgW1sgJHtkaWV9ID09IDAgJiYgLXogIiR7bG9jYWxfZXJyb3J9IiBdXTsgdGhlbgogICAgICAg ICAgICAgICAgbG9jYWxfZXJyb3I9IldBUk5JTkdfJHtjb25maWd9IjsKICAgICAgICAgICAgICAg IGxvY2FsX2Vycm9yPSIkeyFsb2NhbF9lcnJvcn0iOwogICAgICAgICAgICAgICAgaWYgW1sgLW4g IiR7bG9jYWxfZXJyb3J9IiBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgIHJlcG9ydF9mdW5j PSJld2FybiI7CiAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgZmk7CiAgICAgICAgICAg IGlmIFtbIC16ICIke2xvY2FsX2Vycm9yfSIgXV07IHRoZW4KICAgICAgICAgICAgICAgIFtbICR7 ZXJyb3J9ID09IDEgXV0gJiYgbG9jYWxfZXJyb3I9ImlzIG5vdCBzZXQgd2hlbiBpdCBzaG91bGQg YmUuIiB8fCBsb2NhbF9lcnJvcj0ic2hvdWxkIG5vdCBiZSBzZXQuIEJ1dCBpdCBpcy4iOwogICAg ICAgICAgICAgICAgbG9jYWxfZXJyb3I9IkNPTkZJR18ke2NvbmZpZ306XHQgJHtsb2NhbF9lcnJv cn0iOwogICAgICAgICAgICBmaTsKICAgICAgICAgICAgaWYgW1sgJHtkaWV9ID09IDAgXV07IHRo ZW4KICAgICAgICAgICAgICAgICR7cmVwb3J0X2Z1bmN9ICIgICR7bG9jYWxfZXJyb3J9IjsKICAg ICAgICAgICAgICAgIHNvZnRfZXJyb3JzX2NvdW50PSRbc29mdF9lcnJvcnNfY291bnQgKyAxXTsK ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgJHtyZXBvcnRfZnVuY30gIiAgJHtsb2Nh bF9lcnJvcn0iOwogICAgICAgICAgICAgICAgaGFyZF9lcnJvcnNfY291bnQ9JFtoYXJkX2Vycm9y c19jb3VudCArIDFdOwogICAgICAgICAgICBmaTsKICAgICAgICBmaTsKICAgIGRvbmU7CiAgICBp ZiBbWyAke2hhcmRfZXJyb3JzX2NvdW50fSA+IDAgXV07IHRoZW4KICAgICAgICBlZXJyb3IgIlBs ZWFzZSBjaGVjayB0byBtYWtlIHN1cmUgdGhlc2Ugb3B0aW9ucyBhcmUgc2V0IGNvcnJlY3RseS4i OwogICAgICAgIGVlcnJvciAiRmFpbHVyZSB0byBkbyBzbyBtYXkgY2F1c2UgdW5leHBlY3RlZCBw cm9ibGVtcy4iOwogICAgICAgIGVlcnJvciAiT25jZSB5b3UgaGF2ZSBzYXRpc2ZpZWQgdGhlc2Ug b3B0aW9ucywgcGxlYXNlIHRyeSBtZXJnaW5nIjsKICAgICAgICBlZXJyb3IgInRoaXMgcGFja2Fn ZSBhZ2Fpbi4iOwogICAgICAgIGV4cG9ydCBMSU5VWF9DT05GSUdfRVhJU1RTX0RPTkU9IiR7b2xk X0xJTlVYX0NPTkZJR19FWElTVFNfRE9ORX0iOwogICAgICAgIGRpZSAiSW5jb3JyZWN0IGtlcm5l bCBjb25maWd1cmF0aW9uIG9wdGlvbnMiOwogICAgZWxzZQogICAgICAgIGlmIFtbICR7c29mdF9l cnJvcnNfY291bnR9ID4gMCBdXTsgdGhlbgogICAgICAgICAgICBld2FybiAiUGxlYXNlIGNoZWNr IHRvIG1ha2Ugc3VyZSB0aGVzZSBvcHRpb25zIGFyZSBzZXQgY29ycmVjdGx5LiI7CiAgICAgICAg ICAgIGV3YXJuICJGYWlsdXJlIHRvIGRvIHNvIG1heSBjYXVzZSB1bmV4cGVjdGVkIHByb2JsZW1z LiI7CiAgICAgICAgZWxzZQogICAgICAgICAgICBlZW5kIDA7CiAgICAgICAgZmk7CiAgICBmaTsK ICAgIGV4cG9ydCBMSU5VWF9DT05GSUdfRVhJU1RTX0RPTkU9IiR7b2xkX0xJTlVYX0NPTkZJR19F WElTVFNfRE9ORX0iCn0KY2hlY2tfa2VybmVsX2J1aWx0ICgpIAp7IAogICAgcmVxdWlyZV9jb25m aWd1cmVkX2tlcm5lbDsKICAgIGdldF92ZXJzaW9uOwogICAgbG9jYWwgdmVyc2lvbmhfcGF0aDsK ICAgIGlmIGtlcm5lbF9pcyAtZ2UgMyA3OyB0aGVuCiAgICAgICAgdmVyc2lvbmhfcGF0aD0iaW5j bHVkZS9nZW5lcmF0ZWQvdWFwaS9saW51eC92ZXJzaW9uLmgiOwogICAgZWxzZQogICAgICAgIHZl cnNpb25oX3BhdGg9ImluY2x1ZGUvbGludXgvdmVyc2lvbi5oIjsKICAgIGZpOwogICAgaWYgWyAh IC1mICIke0tWX09VVF9ESVJ9LyR7dmVyc2lvbmhfcGF0aH0iIF07IHRoZW4KICAgICAgICBlZXJy b3IgIlRoZXNlIHNvdXJjZXMgaGF2ZSBub3QgeWV0IGJlZW4gcHJlcGFyZWQuIjsKICAgICAgICBl ZXJyb3IgIldlIGNhbm5vdCBidWlsZCBhZ2FpbnN0IGFuIHVucHJlcGFyZWQgdHJlZS4iOwogICAg ICAgIGVlcnJvciAiVG8gcmVzb2x2ZSB0aGlzLCBwbGVhc2UgdHlwZSB0aGUgZm9sbG93aW5nOiI7 CiAgICAgICAgZWVycm9yOwogICAgICAgIGVlcnJvciAiIyBjZCAke0tWX0RJUn0iOwogICAgICAg IGVlcnJvciAiIyBtYWtlIG9sZGNvbmZpZyI7CiAgICAgICAgZWVycm9yICIjIG1ha2UgbW9kdWxl c19wcmVwYXJlIjsKICAgICAgICBlZXJyb3I7CiAgICAgICAgZWVycm9yICJUaGVuIHBsZWFzZSB0 cnkgbWVyZ2luZyB0aGlzIG1vZHVsZSBhZ2Fpbi4iOwogICAgICAgIGRpZSAiS2VybmVsIHNvdXJj ZXMgbmVlZCBjb21waWxpbmcgZmlyc3QiOwogICAgZmkKfQpjaGVja19saWNlbnNlICgpIAp7IAog ICAgZGllICJ5b3Ugbm8gbG9uZ2VyIG5lZWQgdGhpcyBhcyBwb3J0YWdlIHN1cHBvcnRzIEFDQ0VQ VF9MSUNFTlNFIGl0c2VsZiIKfQpjaGVja19tb2R1bGVzX3N1cHBvcnRlZCAoKSAKeyAKICAgIHJl cXVpcmVfY29uZmlndXJlZF9rZXJuZWw7CiAgICBnZXRfdmVyc2lvbjsKICAgIGlmICEgbGludXhf Y2hrY29uZmlnX2J1aWx0aW4gIk1PRFVMRVMiOyB0aGVuCiAgICAgICAgZWVycm9yICJUaGVzZSBz b3VyY2VzIGRvIG5vdCBzdXBwb3J0IGxvYWRpbmcgZXh0ZXJuYWwgbW9kdWxlcy4iOwogICAgICAg IGVlcnJvciAidG8gYmUgYWJsZSB0byB1c2UgdGhpcyBtb2R1bGUgcGxlYXNlIGVuYWJsZSBcIkxv YWRhYmxlIG1vZHVsZXMgc3VwcG9ydFwiIjsKICAgICAgICBlZXJyb3IgImluIHlvdXIga2VybmVs LCByZWNvbXBpbGUgYW5kIHRoZW4gdHJ5IG1lcmdpbmcgdGhpcyBtb2R1bGUgYWdhaW4uIjsKICAg ICAgICBkaWUgIk5vIHN1cHBvcnQgZm9yIGV4dGVybmFsIG1vZHVsZXMgaW4gJHtLVl9GVUxMfSBj b25maWciOwogICAgZmkKfQpjaGVja192ZXJtYWdpYyAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1 bmN0aW9uICR7RlVOQ05BTUV9ICQqOwogICAgbG9jYWwgY3Vycl9nY2NfdmVyPSQoZ2NjIC1kdW1w dmVyc2lvbik7CiAgICBsb2NhbCB0bXBmaWxlIG9sZF9jaG9zdCBvbGRfZ2NjX3ZlciByZXN1bHQ9 MDsKICAgIFsgLW4gIiR7TU9EVUxFU19PUFRJT05BTF9VU0V9IiBdICYmIHVzZSAhJHtNT0RVTEVT X09QVElPTkFMX1VTRX0gJiYgcmV0dXJuOwogICAgdG1wZmlsZT1gZmluZCAiJHtLVl9ESVJ9LyIg LWluYW1lICIqLm8uY21kIiAtZXhlYyBncmVwIHVzci9saWIvZ2NjIHt9IFw7IC1xdWl0YDsKICAg IHRtcGZpbGU9JHt0bXBmaWxlLy8qdXNyL2xpYn07CiAgICB0bXBmaWxlPSR7dG1wZmlsZS8vXC9p bmNsdWRlKn07CiAgICBvbGRfY2hvc3Q9JHt0bXBmaWxlLy8qZ2NjXC99OwogICAgb2xkX2Nob3N0 PSR7b2xkX2Nob3N0Ly9cLyp9OwogICAgb2xkX2djY192ZXI9JHt0bXBmaWxlLy8qXC99OwogICAg aWYgW1sgLXogJHtvbGRfZ2NjX3Zlcn0gfHwgLXogJHtvbGRfY2hvc3R9IF1dOyB0aGVuCiAgICAg ICAgZXdhcm4gIiI7CiAgICAgICAgZXdhcm4gIlVuYWJsZSB0byBkZXRlY3Qgd2hhdCB2ZXJzaW9u IG9mIEdDQyB3YXMgdXNlZCB0byBjb21waWxlIjsKICAgICAgICBld2FybiAidGhlIGtlcm5lbC4g QnVpbGQgd2lsbCBjb250aW51ZSwgYnV0IHlvdSBtYXkgZXhwZXJpZW5jZSBwcm9ibGVtcy4iOwog ICAgZWxzZQogICAgICAgIGlmIFtbICR7Y3Vycl9nY2NfdmVyfSAhPSAke29sZF9nY2NfdmVyfSBd XTsgdGhlbgogICAgICAgICAgICBld2FybiAiIjsKICAgICAgICAgICAgZXdhcm4gIlRoZSB2ZXJz aW9uIG9mIEdDQyB5b3UgYXJlIHVzaW5nICgke2N1cnJfZ2NjX3Zlcn0pIGRvZXMiOwogICAgICAg ICAgICBld2FybiAibm90IG1hdGNoIHRoZSB2ZXJzaW9uIG9mIEdDQyB1c2VkIHRvIGNvbXBpbGUg dGhlIjsKICAgICAgICAgICAgZXdhcm4gImtlcm5lbCAoJHtvbGRfZ2NjX3Zlcn0pLiI7CiAgICAg ICAgICAgIHJlc3VsdD0xOwogICAgICAgIGVsc2UKICAgICAgICAgICAgaWYgW1sgJHtDSE9TVH0g IT0gJHtvbGRfY2hvc3R9IF1dOyB0aGVuCiAgICAgICAgICAgICAgICBld2FybiAiIjsKICAgICAg ICAgICAgICAgIGV3YXJuICJUaGUgY3VycmVudCBDSE9TVCAoJHtDSE9TVH0pIGRvZXMgbm90IG1h dGNoIHRoZSBjaG9zdCI7CiAgICAgICAgICAgICAgICBld2FybiAidXNlZCB3aGVuIGNvbXBpbGlu ZyB0aGUga2VybmVsICgke29sZF9jaG9zdH0pLiI7CiAgICAgICAgICAgICAgICByZXN1bHQ9MTsK ICAgICAgICAgICAgZmk7CiAgICAgICAgZmk7CiAgICBmaTsKICAgIGlmIFtbICR7cmVzdWx0fSAt Z3QgMCBdXTsgdGhlbgogICAgICAgIGV3YXJuICIiOwogICAgICAgIGV3YXJuICJCdWlsZCB3aWxs IG5vdCBjb250aW51ZSwgYmVjYXVzZSB5b3Ugd2lsbCBleHBlcmllbmNlIHByb2JsZW1zLiI7CiAg ICAgICAgZXdhcm4gIlRvIGZpeCB0aGlzIGVpdGhlciBjaGFuZ2UgdGhlIHZlcnNpb24gb2YgR0ND IHlvdSB3aXNoIHRvIHVzZSI7CiAgICAgICAgZXdhcm4gInRvIG1hdGNoIHRoZSBrZXJuZWwsIG9y IHJlY29tcGlsZSB0aGUga2VybmVsIGZpcnN0LiI7CiAgICAgICAgZGllICJHQ0MgVmVyc2lvbiBN aXNtYXRjaC4iOwogICAgZmkKfQpjaGVja196bGliaW5mbGF0ZSAoKSAKeyAKICAgIHJlcXVpcmVf Y29uZmlndXJlZF9rZXJuZWw7CiAgICBnZXRfdmVyc2lvbjsKICAgIGxvY2FsIElORkxBVEU7CiAg ICBsb2NhbCBERUZMQVRFOwogICAgZWluZm8gIkRldGVybWluaW5nIHRoZSB1c2FiaWxpdHkgb2Yg WkxJQl9JTkZMQVRFIHN1cHBvcnQgaW4geW91ciBrZXJuZWwiOwogICAgZWJlZ2luICJjaGVja2lu ZyBaTElCX0lORkxBVEUiOwogICAgbGludXhfY2hrY29uZmlnX2J1aWx0aW4gQ09ORklHX1pMSUJf SU5GTEFURTsKICAgIGVlbmQgJD87CiAgICBbICIkPyIgIT0gMCBdICYmIGRpZTsKICAgIGViZWdp biAiY2hlY2tpbmcgWkxJQl9ERUZMQVRFIjsKICAgIGxpbnV4X2Noa2NvbmZpZ19idWlsdGluIENP TkZJR19aTElCX0RFRkxBVEU7CiAgICBlZW5kICQ/OwogICAgWyAiJD8iICE9IDAgXSAmJiBkaWU7 CiAgICBsb2NhbCBMSU5FTk9fU1RBUlQ7CiAgICBsb2NhbCBMSU5FTk9fRU5EOwogICAgbG9jYWwg U1lNQk9MUzsKICAgIGxvY2FsIHg7CiAgICBMSU5FTk9fRU5EPSIkKGdyZXAgLW4gJ0NPTkZJR19a TElCX0lORkxBVEUgeScgJHtLVl9ESVJ9L2xpYi9Db25maWcuaW4gfCBjdXQgLWQgOiAtZiAxKSI7 CiAgICBMSU5FTk9fU1RBUlQ9IiQoaGVhZCAtbiAkTElORU5PX0VORCAke0tWX0RJUn0vbGliL0Nv bmZpZy5pbiB8IGdyZXAgLW4gJ2lmIFxbJyB8IHRhaWwgLW4gMSB8IGN1dCAtZCA6IC1mIDEpIjsK ICAgICgoIExJTkVOT19BTU9VTlQgPSAkTElORU5PX0VORCAtICRMSU5FTk9fU1RBUlQgKSk7CiAg ICAoKCBMSU5FTk9fRU5EID0gJExJTkVOT19FTkQgLSAxICkpOwogICAgU1lNQk9MUz0iJChoZWFk IC1uICRMSU5FTk9fRU5EICR7S1ZfRElSfS9saWIvQ29uZmlnLmluIHwgdGFpbCAtbiAkTElORU5P X0FNT1VOVCB8IHNlZCAtZSAncy9eLipcKENPTkZJR19bXlwiIF0qXCkuKi9cMS9nOycpIjsKICAg IGZvciB4IGluICRTWU1CT0xTOwogICAgZG8KICAgICAgICBpZiBbICIkeyF4fSIgPSAieSIgXTsg dGhlbgogICAgICAgICAgICBlaW5mbyAiJHt4fSBlbnN1cmVzIHpsaWIgaXMgbGlua2VkIGludG8g eW91ciBrZXJuZWwgLSBleGNlbGxlbnQiOwogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICBm aTsKICAgIGRvbmU7CiAgICBlZXJyb3I7CiAgICBlZXJyb3IgIlRoaXMga2VybmVsIG1vZHVsZSBy ZXF1aXJlcyBaTElCIGxpYnJhcnkgc3VwcG9ydC4iOwogICAgZWVycm9yICJZb3UgaGF2ZSBlbmFi bGVkIHpsaWIgc3VwcG9ydCBpbiB5b3VyIGtlcm5lbCwgYnV0IGhhdmVuJ3QgZW5hYmxlZCI7CiAg ICBlZXJyb3IgImVuYWJsZWQgYW55IG9wdGlvbiB0aGF0IHdpbGwgZW5zdXJlIHRoYXQgemxpYiBp cyBsaW5rZWQgaW50byB5b3VyIjsKICAgIGVlcnJvciAia2VybmVsLiI7CiAgICBlZXJyb3I7CiAg ICBlZXJyb3IgIlBsZWFzZSBlbnN1cmUgdGhhdCB5b3UgZW5hYmxlIGF0IGxlYXN0IG9uZSBvZiB0 aGVzZSBvcHRpb25zOiI7CiAgICBlZXJyb3I7CiAgICBmb3IgeCBpbiAkU1lNQk9MUzsKICAgIGRv CiAgICAgICAgZWVycm9yICIgICogJHgiOwogICAgZG9uZTsKICAgIGVlcnJvcjsKICAgIGVlcnJv ciAiUGxlYXNlIHJlbWVtYmVyIHRvIHJlY29tcGlsZSBhbmQgaW5zdGFsbCB5b3VyIGtlcm5lbCwg YW5kIHJlYm9vdCI7CiAgICBlZXJyb3IgImludG8geW91ciBuZXcga2VybmVsIGJlZm9yZSBhdHRl bXB0aW5nIHRvIGxvYWQgdGhpcyBrZXJuZWwgbW9kdWxlLiI7CiAgICBkaWUgIktlcm5lbCBkb2Vz bid0IGluY2x1ZGUgemxpYiBzdXBwb3J0Igp9CmNvbnZlcnRfdG9fbSAoKSAKeyAKICAgIGRlYnVn LXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICQqOwogICAgaWYgdXNlX207IHRoZW4KICAgICAg ICBbICEgLWYgIiR7MX0iIF0gJiYgZGllICJjb252ZXJ0X3RvX20oKSByZXF1aXJlcyBhIGZpbGVu YW1lIGFzIGFuIGFyZ3VtZW50IjsKICAgICAgICBlYmVnaW4gIkNvbnZlcnRpbmcgJHsxLyR7V09S S0RJUn1cLy99IHRvIHVzZSBNPSBpbnN0ZWFkIG9mIFNVQkRJUlM9IjsKICAgICAgICBzZWQgLWkg J3M6U1VCRElSUz06TT06ZycgIiR7MX0iOwogICAgICAgIGVlbmQgJD87CiAgICBmaQp9CmRlbGV0 ZV9hbGxfdmVyc2lvbl9zZXBhcmF0b3JzICgpIAp7IAogICAgcmVwbGFjZV9hbGxfdmVyc2lvbl9z ZXBhcmF0b3JzICIiICIkezF9Igp9CmRlbGV0ZV92ZXJzaW9uX3NlcGFyYXRvciAoKSAKeyAKICAg IHJlcGxhY2VfdmVyc2lvbl9zZXBhcmF0b3IgIiR7MX0iICIiICIkezJ9Igp9CmRvaWNvbiAoKSAK eyAKICAgIF9pY29uaW5zICR7RlVOQ05BTUV9ICIkQCIKfQpkb21lbnUgKCkgCnsgCiAgICAoIGxv Y2FsIGkgaiByZXQ9MDsKICAgIGluc2ludG8gL3Vzci9zaGFyZS9hcHBsaWNhdGlvbnM7CiAgICBm b3IgaSBpbiAiJEAiOwogICAgZG8KICAgICAgICBpZiBbWyAtZiAke2l9IF1dOyB0aGVuCiAgICAg ICAgICAgIGRvaW5zICIke2l9IjsKICAgICAgICAgICAgKChyZXQrPSQ/KSk7CiAgICAgICAgZWxz ZQogICAgICAgICAgICBpZiBbWyAtZCAke2l9IF1dOyB0aGVuCiAgICAgICAgICAgICAgICBmb3Ig aiBpbiAiJHtpfSIvKi5kZXNrdG9wOwogICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAg ICAgICBkb2lucyAiJHtqfSI7CiAgICAgICAgICAgICAgICAgICAgKChyZXQrPSQ/KSk7CiAgICAg ICAgICAgICAgICBkb25lOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAoKCsrcmV0 KSk7CiAgICAgICAgICAgIGZpOwogICAgICAgIGZpOwogICAgZG9uZTsKICAgIGV4aXQgJHtyZXR9 ICkKfQplYmVlcCAoKSAKeyAKICAgIGV3YXJuICJRQSBOb3RpY2U6IGViZWVwIGlzIG5vdCBkZWZp bmVkIGluIEVBUEk9JHtFQVBJfSwgcGxlYXNlIGZpbGUgYSBidWcgYXQgaHR0cDovL2J1Z3MuZ2Vu dG9vLm9yZyIKfQplY29uZl9idWlsZCAoKSAKeyAKICAgIHRjLWVudl9idWlsZCBlY29uZiAtLWJ1 aWxkPSR7Q0JVSUxEOi0ke0NIT1NUfX0gIiRAIgp9CmVjdnNfY2xlYW4gKCkgCnsgCiAgICBbWyAt eiAkKiBdXSAmJiBzZXQgLS0gLjsKICAgIGZpbmQgIiRAIiAtdHlwZSBkIC1uYW1lICdDVlMnIC1w cnVuZSAtcHJpbnQwIHwgeGFyZ3MgLTAgcm0gLXJmOwogICAgZmluZCAiJEAiIC10eXBlIGYgLW5h bWUgJy5jdnMqJyAtcHJpbnQwIHwgeGFyZ3MgLTAgcm0gLXJmCn0KZWRvczJ1bml4ICgpIAp7IAog ICAgW1sgJCMgLWVxIDAgXV0gJiYgcmV0dXJuIDA7CiAgICBzZWQgLWkgJ3MvXHIkLy8nIC0tICIk QCIgfHwgZGllCn0KZWluc3RhbGxkb2NzICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24g JHtGVU5DTkFNRX0gIiR7QH0iOwogICAgbG9jYWwgZG9kb2Nfb3B0cz0tcjsKICAgIGhhcyAke0VB UEl9IDAgMSAyIDMgJiYgZG9kb2Nfb3B0cz07CiAgICBpZiAhIGRlY2xhcmUgLXAgRE9DUyAmPi9k ZXYvbnVsbDsgdGhlbgogICAgICAgIGxvY2FsIGQ7CiAgICAgICAgZm9yIGQgaW4gUkVBRE1FKiBD aGFuZ2VMb2cgQVVUSE9SUyBORVdTIFRPRE8gQ0hBTkdFUyBUSEFOS1MgQlVHUyBGQVEgQ1JFRElU UyBDSEFOR0VMT0c7CiAgICAgICAgZG8KICAgICAgICAgICAgaWYgW1sgLXMgJHtkfSBdXTsgdGhl bgogICAgICAgICAgICAgICAgZG9kb2MgIiR7ZH0iIHx8IGRpZTsKICAgICAgICAgICAgZmk7CiAg ICAgICAgZG9uZTsKICAgIGVsc2UKICAgICAgICBpZiBbWyAkKGRlY2xhcmUgLXAgRE9DUykgPT0g ImRlY2xhcmUgLWEiKiBdXTsgdGhlbgogICAgICAgICAgICBpZiBbWyAtbiAke0RPQ1NbQF19IF1d OyB0aGVuCiAgICAgICAgICAgICAgICBkb2RvYyAke2RvZG9jX29wdHN9ICIke0RPQ1NbQF19IiB8 fCBkaWU7CiAgICAgICAgICAgIGZpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgaWYgW1sgLW4g JHtET0NTfSBdXTsgdGhlbgogICAgICAgICAgICAgICAgZG9kb2MgJHtkb2RvY19vcHRzfSAke0RP Q1N9IHx8IGRpZTsKICAgICAgICAgICAgZmk7CiAgICAgICAgZmk7CiAgICBmaTsKICAgIGlmIFtb ICQoZGVjbGFyZSAtcCBIVE1MX0RPQ1MgMj4vZGV2L251bGwpID09ICJkZWNsYXJlIC1hIiogXV07 IHRoZW4KICAgICAgICBpZiBbWyAtbiAke0hUTUxfRE9DU1tAXX0gXV07IHRoZW4KICAgICAgICAg ICAgZG9odG1sIC1yICIke0hUTUxfRE9DU1tAXX0iIHx8IGRpZTsKICAgICAgICBmaTsKICAgIGVs c2UKICAgICAgICBpZiBbWyAtbiAke0hUTUxfRE9DU30gXV07IHRoZW4KICAgICAgICAgICAgZG9o dG1sIC1yICR7SFRNTF9ET0NTfSB8fCBkaWU7CiAgICAgICAgZmk7CiAgICBmaTsKICAgIHJldHVy biAwCn0KZW1rdGVtcCAoKSAKeyAKICAgIGxvY2FsIGV4ZT0idG91Y2giOwogICAgW1sgJDEgPT0g LWQgXV0gJiYgZXhlPSJta2RpciIgJiYgc2hpZnQ7CiAgICBsb2NhbCB0b3BkaXI9JDE7CiAgICBp ZiBbWyAteiAke3RvcGRpcn0gXV07IHRoZW4KICAgICAgICBbWyAteiAke1R9IF1dICYmIHRvcGRp cj0iL3RtcCIgfHwgdG9wZGlyPSR7VH07CiAgICBmaTsKICAgIGlmICEgdHlwZSAtUCBta3RlbXAg PiAvZGV2L251bGw7IHRoZW4KICAgICAgICBsb2NhbCB0bXA9LzsKICAgICAgICB3aGlsZSBbWyAt ZSAke3RtcH0gXV07IGRvCiAgICAgICAgICAgIHRtcD0ke3RvcGRpcn0vdG1wLiR7UkFORE9NfS4k e1JBTkRPTX0uJHtSQU5ET019OwogICAgICAgIGRvbmU7CiAgICAgICAgJHtleGV9ICIke3RtcH0i IHx8ICR7ZXhlfSAtcCAiJHt0bXB9IjsKICAgICAgICBlY2hvICIke3RtcH0iOwogICAgZWxzZQog ICAgICAgIGlmIFtbICR7ZXhlfSA9PSAidG91Y2giIF1dOyB0aGVuCiAgICAgICAgICAgIFRNUERJ Uj0iJHt0b3BkaXJ9IiBta3RlbXAgLXQgdG1wLlhYWFhYWFhYWFg7CiAgICAgICAgZWxzZQogICAg ICAgICAgICBUTVBESVI9IiR7dG9wZGlyfSIgbWt0ZW1wIC1kdCB0bXAuWFhYWFhYWFhYWDsKICAg ICAgICBmaTsKICAgIGZpCn0KZXBhdGNoICgpIAp7IAogICAgZnVuY3Rpb24gX2VwYXRjaF9kcmF3 X2xpbmUgKCkgCiAgICB7IAogICAgICAgIFtbIC16ICQxIF1dICYmIHNldCAiJChwcmludGYgIiU2 NXMiICcnKSI7CiAgICAgICAgZWNobyAiJHsxLy8/Lz19IgogICAgfTsKICAgIHVuc2V0IFA0Q09O RklHIFA0UE9SVCBQNFVTRVI7CiAgICBsb2NhbCBFUEFUQ0hfT1BUUz0oJHtFUEFUQ0hfT1BUU1sq XX0pOwogICAgd2hpbGUgW1sgJCMgLWd0IDAgXV07IGRvCiAgICAgICAgY2FzZSAkMSBpbiAKICAg ICAgICAgICAgLSopCiAgICAgICAgICAgICAgICBFUEFUQ0hfT1BUUys9KCIkMSIpCiAgICAgICAg ICAgIDs7CiAgICAgICAgICAgICopCiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICA7 OwogICAgICAgIGVzYWM7CiAgICAgICAgc2hpZnQ7CiAgICBkb25lOwogICAgaWYgW1sgJCMgLWd0 IDEgXV07IHRoZW4KICAgICAgICBsb2NhbCBtOwogICAgICAgIGZvciBtIGluICIkQCI7CiAgICAg ICAgZG8KICAgICAgICAgICAgZXBhdGNoICIke219IjsKICAgICAgICBkb25lOwogICAgICAgIHJl dHVybiAwOwogICAgZmk7CiAgICBsb2NhbCBTSU5HTEVfUEFUQ0g9Im5vIjsKICAgIFtbICQjIC1l cSAwIF1dICYmIHNldCAtLSAiJHtFUEFUQ0hfU09VUkNFfSI7CiAgICBpZiBbWyAtZiAkMSBdXTsg dGhlbgogICAgICAgIFNJTkdMRV9QQVRDSD0ieWVzIjsKICAgICAgICBzZXQgLS0gIiQxIjsKICAg ICAgICBsb2NhbCBFUEFUQ0hfU1VGRklYPSQxOwogICAgZWxzZQogICAgICAgIGlmIFtbIC1kICQx IF1dOyB0aGVuCiAgICAgICAgICAgIGV2YXJfcHVzaF9zZXQgTENfQ09MTEFURSBDOwogICAgICAg ICAgICBzZXQgLS0gIiQxIi8qJHtFUEFUQ0hfU1VGRklYOisuIiR7RVBBVENIX1NVRkZJWH0ifTsK ICAgICAgICAgICAgZXZhcl9wb3A7CiAgICAgICAgZWxzZQogICAgICAgICAgICBpZiBbWyAtZiAk e0VQQVRDSF9TT1VSQ0V9LyQxIF1dOyB0aGVuCiAgICAgICAgICAgICAgICBlcGF0Y2ggIiR7RVBB VENIX1NPVVJDRX0vJDEiOwogICAgICAgICAgICAgICAgcmV0dXJuICQ/OwogICAgICAgICAgICBl bHNlCiAgICAgICAgICAgICAgICBbWyAkIyAtbmUgMCBdXSAmJiBFUEFUQ0hfU09VUkNFPSQxOwog ICAgICAgICAgICAgICAgZWNobzsKICAgICAgICAgICAgICAgIGVlcnJvciAiQ2Fubm90IGZpbmQg XCRFUEFUQ0hfU09VUkNFISAgVmFsdWUgZm9yIFwkRVBBVENIX1NPVVJDRSBpczoiOwogICAgICAg ICAgICAgICAgZWVycm9yOwogICAgICAgICAgICAgICAgZWVycm9yICIgICR7RVBBVENIX1NPVVJD RX0iOwogICAgICAgICAgICAgICAgZWVycm9yICIgICggJHtFUEFUQ0hfU09VUkNFIyMqL30gKSI7 CiAgICAgICAgICAgICAgICBlY2hvOwogICAgICAgICAgICAgICAgZGllICJDYW5ub3QgZmluZCBc JEVQQVRDSF9TT1VSQ0UhIjsKICAgICAgICAgICAgZmk7CiAgICAgICAgZmk7CiAgICBmaTsKICAg IEVQQVRDSF9PUFRTPSIke0VQQVRDSF9DT01NT05fT1BUU30gJHtFUEFUQ0hfT1BUU1sqXX0iOwog ICAgbG9jYWwgUElQRV9DTUQ7CiAgICBjYXNlICR7RVBBVENIX1NVRkZJWCMjKlwufSBpbiAKICAg ICAgICB4eikKICAgICAgICAgICAgUElQRV9DTUQ9Inh6IC1kYyIKICAgICAgICA7OwogICAgICAg IGx6bWEpCiAgICAgICAgICAgIFBJUEVfQ01EPSJsem1hIC1kYyIKICAgICAgICA7OwogICAgICAg IGJ6MikKICAgICAgICAgICAgUElQRV9DTUQ9ImJ6aXAyIC1kYyIKICAgICAgICA7OwogICAgICAg IGd6IHwgWiB8IHopCiAgICAgICAgICAgIFBJUEVfQ01EPSJnemlwIC1kYyIKICAgICAgICA7Owog ICAgICAgIFpJUCB8IHppcCkKICAgICAgICAgICAgUElQRV9DTUQ9InVuemlwIC1wIgogICAgICAg IDs7CiAgICAgICAgKikKCiAgICAgICAgOzsKICAgIGVzYWM7CiAgICBbWyAke1NJTkdMRV9QQVRD SH0gPT0gIm5vIiBdXSAmJiBlaW5mbyAiJHtFUEFUQ0hfTVVMVElfTVNHfSI7CiAgICBsb2NhbCB4 OwogICAgZm9yIHggaW4gIiRAIjsKICAgIGRvCiAgICAgICAgW1sgISAtZiAke3h9IF1dICYmIGNv bnRpbnVlOwogICAgICAgIGxvY2FsIHBhdGNobmFtZT0ke3gjIyovfTsKICAgICAgICBsb2NhbCBh PSR7cGF0Y2huYW1lIypffTsKICAgICAgICBhPSR7YSUlXyp9OwogICAgICAgIGlmICEgW1sgJHtT SU5HTEVfUEFUQ0h9ID09ICJ5ZXMiIHx8ICR7RVBBVENIX0ZPUkNFfSA9PSAieWVzIiB8fCAke2F9 ID09IGFsbCB8fCAke2F9ID09ICR7QVJDSH0gXV07IHRoZW4KICAgICAgICAgICAgY29udGludWU7 CiAgICAgICAgZmk7CiAgICAgICAgaWYgW1sgLW4gJHtFUEFUQ0hfRVhDTFVERX0ke0VQQVRDSF9V U0VSX0VYQ0xVREV9IF1dOyB0aGVuCiAgICAgICAgICAgIGVzaG9wdHNfcHVzaCAtbyBub2dsb2I7 CiAgICAgICAgICAgIGxvY2FsIGV4OwogICAgICAgICAgICBmb3IgZXggaW4gJHtFUEFUQ0hfRVhD TFVERX07CiAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICBpZiBbWyAke3BhdGNobmFtZX0g PT0gJHtleH0gXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICBlaW5mbyAiICBTa2lwcGluZyAk e3BhdGNobmFtZX0gZHVlIHRvIEVQQVRDSF9FWENMVURFIC4uLiI7CiAgICAgICAgICAgICAgICAg ICAgZXNob3B0c19wb3A7CiAgICAgICAgICAgICAgICAgICAgY29udGludWUgMjsKICAgICAgICAg ICAgICAgIGZpOwogICAgICAgICAgICBkb25lOwogICAgICAgICAgICBmb3IgZXggaW4gJHtFUEFU Q0hfVVNFUl9FWENMVURFfTsKICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgIGlmIFtbICR7 cGF0Y2huYW1lfSA9PSAke2V4fSBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgIGVpbmZvICIg IFNraXBwaW5nICR7cGF0Y2huYW1lfSBkdWUgdG8gRVBBVENIX1VTRVJfRVhDTFVERSAuLi4iOwog ICAgICAgICAgICAgICAgICAgIGVzaG9wdHNfcG9wOwogICAgICAgICAgICAgICAgICAgIGNvbnRp bnVlIDI7CiAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgZG9uZTsKICAgICAgICAgICAg ZXNob3B0c19wb3A7CiAgICAgICAgZmk7CiAgICAgICAgaWYgW1sgJHtTSU5HTEVfUEFUQ0h9ID09 ICJ5ZXMiIF1dOyB0aGVuCiAgICAgICAgICAgIGlmIFtbIC1uICR7RVBBVENIX1NJTkdMRV9NU0d9 IF1dOyB0aGVuCiAgICAgICAgICAgICAgICBlaW5mbyAiJHtFUEFUQ0hfU0lOR0xFX01TR30iOwog ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBlaW5mbyAiQXBwbHlpbmcgJHtwYXRjaG5h bWV9IC4uLiI7CiAgICAgICAgICAgIGZpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgZWluZm8g IiAgJHtwYXRjaG5hbWV9IC4uLiI7CiAgICAgICAgZmk7CiAgICAgICAgbG9jYWwgU1RERVJSX1RB UkdFVD0iJHtUfS8ke3BhdGNobmFtZX0ub3V0IjsKICAgICAgICBpZiBbWyAtZSAke1NUREVSUl9U QVJHRVR9IF1dOyB0aGVuCiAgICAgICAgICAgIFNUREVSUl9UQVJHRVQ9IiR7VH0vJHtwYXRjaG5h bWV9LSQkLm91dCI7CiAgICAgICAgZmk7CiAgICAgICAgcHJpbnRmICIqKioqKiAlcyAqKioqKlxu UFdEOiAlc1xuXG4iICIke3BhdGNobmFtZX0iICIke1BXRH0iID4gIiR7U1RERVJSX1RBUkdFVH0i OwogICAgICAgIGxvY2FsIGNvdW50PTA7CiAgICAgICAgbG9jYWwgUEFUQ0hfVEFSR0VUOwogICAg ICAgIGlmIFtbIC1uICR7UElQRV9DTUR9IF1dOyB0aGVuCiAgICAgICAgICAgIFBBVENIX1RBUkdF VD0iJHtUfS8kJC5wYXRjaCI7CiAgICAgICAgICAgIGVjaG8gIlBJUEVfQ09NTUFORDogICR7UElQ RV9DTUR9ICR7eH0gPiAke1BBVENIX1RBUkdFVH0iID4+ICIke1NUREVSUl9UQVJHRVR9IjsKICAg ICAgICAgICAgaWYgISAoICR7UElQRV9DTUR9ICIke3h9IiA+ICIke1BBVENIX1RBUkdFVH0iICkg Pj4gIiR7U1RERVJSX1RBUkdFVH0iIDI+JjE7IHRoZW4KICAgICAgICAgICAgICAgIGVjaG87CiAg ICAgICAgICAgICAgICBlZXJyb3IgIkNvdWxkIG5vdCBleHRyYWN0IHBhdGNoISI7CiAgICAgICAg ICAgICAgICBjb3VudD01OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGZpOwog ICAgICAgIGVsc2UKICAgICAgICAgICAgUEFUQ0hfVEFSR0VUPSR7eH07CiAgICAgICAgZmk7CiAg ICAgICAgbG9jYWwgYWJzX3BhdGhzPSQoZWdyZXAgLW4gJ15bLStdezN9IC8nICIke1BBVENIX1RB UkdFVH0iIHwgYXdrICckMiAhPSAiL2Rldi9udWxsIiB7IHByaW50IH0nKTsKICAgICAgICBpZiBb WyAtbiAke2Fic19wYXRoc30gXV07IHRoZW4KICAgICAgICAgICAgY291bnQ9MTsKICAgICAgICAg ICAgcHJpbnRmICJOT1RFOiBza2lwcGluZyAtcDAgZHVlIHRvIGFic29sdXRlIHBhdGhzIGluIHBh dGNoOlxuJXNcbiIgIiR7YWJzX3BhdGhzfSIgPj4gIiR7U1RERVJSX1RBUkdFVH0iOwogICAgICAg IGZpOwogICAgICAgIGxvY2FsIHJlbF9wYXRocz0kKGVncmVwIC1uICdeWy0rXXszfSBbXgldKlsu XVsuXS8nICIke1BBVENIX1RBUkdFVH0iKTsKICAgICAgICBpZiBbWyAtbiAke3JlbF9wYXRoc30g XV07IHRoZW4KICAgICAgICAgICAgZWNobzsKICAgICAgICAgICAgZWVycm9yICJSZWplY3RlZCBQ YXRjaDogJHtwYXRjaG5hbWV9ICEiOwogICAgICAgICAgICBlZXJyb3IgIiAoICR7UEFUQ0hfVEFS R0VUfSApIjsKICAgICAgICAgICAgZWVycm9yOwogICAgICAgICAgICBlZXJyb3IgIllvdXIgcGF0 Y2ggdXNlcyByZWxhdGl2ZSBwYXRocyAnLi4vJzoiOwogICAgICAgICAgICBlZXJyb3IgIiR7cmVs X3BhdGhzfSI7CiAgICAgICAgICAgIGVjaG87CiAgICAgICAgICAgIGRpZSAieW91IG5lZWQgdG8g Zml4IHRoZSByZWxhdGl2ZSBwYXRocyBpbiBwYXRjaCI7CiAgICAgICAgZmk7CiAgICAgICAgbG9j YWwgcGF0Y2hfY21kOwogICAgICAgIGxvY2FsIHBhdGNoPSJwYXRjaCI7CiAgICAgICAgZXZhbCAk KGFsaWFzIHBhdGNoIDI+L2Rldi9udWxsIHwgc2VkICdzOl5hbGlhcyA6OicpOwogICAgICAgIHdo aWxlIFtbICR7Y291bnR9IC1sdCA1IF1dOyBkbwogICAgICAgICAgICBwYXRjaF9jbWQ9IiR7cGF0 Y2h9IC1wJHtjb3VudH0gJHtFUEFUQ0hfT1BUU30iOwogICAgICAgICAgICAoIF9lcGF0Y2hfZHJh d19saW5lICIqKioqKiAke3BhdGNobmFtZX0gKioqKioiOwogICAgICAgICAgICBlY2hvOwogICAg ICAgICAgICBlY2hvICJQQVRDSCBDT01NQU5EOiAgJHtwYXRjaF9jbWR9IDwgJyR7UEFUQ0hfVEFS R0VUfSciOwogICAgICAgICAgICBlY2hvOwogICAgICAgICAgICBfZXBhdGNoX2RyYXdfbGluZSAi KioqKiogJHtwYXRjaG5hbWV9ICoqKioqIjsKICAgICAgICAgICAgJHtwYXRjaF9jbWR9IC0tZHJ5 LXJ1biAtZiA8ICIke1BBVENIX1RBUkdFVH0iIDI+JjE7CiAgICAgICAgICAgIHJldD0kPzsKICAg ICAgICAgICAgZWNobzsKICAgICAgICAgICAgZWNobyAicGF0Y2ggcHJvZ3JhbSBleGl0ZWQgd2l0 aCBzdGF0dXMgJHtyZXR9IjsKICAgICAgICAgICAgZXhpdCAke3JldH0gKSA+PiAiJHtTVERFUlJf VEFSR0VUfSI7CiAgICAgICAgICAgIGlmIFsgJD8gLWVxIDAgXTsgdGhlbgogICAgICAgICAgICAg ICAgKCBfZXBhdGNoX2RyYXdfbGluZSAiKioqKiogJHtwYXRjaG5hbWV9ICoqKioqIjsKICAgICAg ICAgICAgICAgIGVjaG87CiAgICAgICAgICAgICAgICBlY2hvICJBQ1RVQUxMWSBBUFBMWUlORyAk e3BhdGNobmFtZX0gLi4uIjsKICAgICAgICAgICAgICAgIGVjaG87CiAgICAgICAgICAgICAgICBf ZXBhdGNoX2RyYXdfbGluZSAiKioqKiogJHtwYXRjaG5hbWV9ICoqKioqIjsKICAgICAgICAgICAg ICAgICR7cGF0Y2hfY21kfSA8ICIke1BBVENIX1RBUkdFVH0iIDI+JjE7CiAgICAgICAgICAgICAg ICByZXQ9JD87CiAgICAgICAgICAgICAgICBlY2hvOwogICAgICAgICAgICAgICAgZWNobyAicGF0 Y2ggcHJvZ3JhbSBleGl0ZWQgd2l0aCBzdGF0dXMgJHtyZXR9IjsKICAgICAgICAgICAgICAgIGV4 aXQgJHtyZXR9ICkgPj4gIiR7U1RERVJSX1RBUkdFVH0iOwogICAgICAgICAgICAgICAgaWYgWyAk PyAtbmUgMCBdOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgZWNobzsKICAgICAgICAgICAgICAg ICAgICBlZXJyb3IgIkEgZHJ5LXJ1biBvZiBwYXRjaCBjb21tYW5kIHN1Y2NlZWRlZCwgYnV0IGFj dHVhbGx5IjsKICAgICAgICAgICAgICAgICAgICBlZXJyb3IgImFwcGx5aW5nIHRoZSBwYXRjaCBm YWlsZWQhIjsKICAgICAgICAgICAgICAgICAgICBjb3VudD01OwogICAgICAgICAgICAgICAgZmk7 CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIDogJCgo IGNvdW50KysgKSk7CiAgICAgICAgZG9uZTsKICAgICAgICBpZiBbWyAtbiAke1BJUEVfQ01EfSBd XTsgdGhlbgogICAgICAgICAgICBybSAtZiAiJHtQQVRDSF9UQVJHRVR9IjsKICAgICAgICBmaTsK ICAgICAgICBpZiBbWyAke2NvdW50fSAtZ2UgNSBdXTsgdGhlbgogICAgICAgICAgICBlY2hvOwog ICAgICAgICAgICBlZXJyb3IgIkZhaWxlZCBQYXRjaDogJHtwYXRjaG5hbWV9ICEiOwogICAgICAg ICAgICBlZXJyb3IgIiAoICR7UEFUQ0hfVEFSR0VUfSApIjsKICAgICAgICAgICAgZWVycm9yOwog ICAgICAgICAgICBlZXJyb3IgIkluY2x1ZGUgaW4geW91ciBidWdyZXBvcnQgdGhlIGNvbnRlbnRz IG9mOiI7CiAgICAgICAgICAgIGVlcnJvcjsKICAgICAgICAgICAgZWVycm9yICIgICR7U1RERVJS X1RBUkdFVH0iOwogICAgICAgICAgICBlY2hvOwogICAgICAgICAgICBkaWUgIkZhaWxlZCBQYXRj aDogJHtwYXRjaG5hbWV9ISI7CiAgICAgICAgZmk7CiAgICAgICAgcm0gLWYgIiR7U1RERVJSX1RB UkdFVH0iOwogICAgICAgIGNhdCA+PiAiJHtUfS9lcGF0Y2gubG9nIiAgPDwtRU9GClBBVENIOiAk e3h9CkNNRDogJHtwYXRjaF9jbWR9ClBXRDogJHtQV0R9CgpFT0YKCiAgICAgICAgZWVuZCAwOwog ICAgZG9uZTsKICAgIFtbICR7U0lOR0xFX1BBVENIfSA9PSAibm8iIF1dICYmIGVpbmZvICJEb25l IHdpdGggcGF0Y2hpbmciOwogICAgOgp9CmVwYXRjaF91c2VyICgpIAp7IAogICAgW1sgJCMgLW5l IDAgXV0gJiYgZGllICJlcGF0Y2hfdXNlciB0YWtlcyBubyBvcHRpb25zIjsKICAgIGxvY2FsIGFw cGxpZWQ9IiR7VH0vZXBhdGNoX3VzZXIubG9nIjsKICAgIFtbIC1lICR7YXBwbGllZH0gXV0gJiYg cmV0dXJuIDI7CiAgICBsb2NhbCBFUEFUQ0hfU09VUkNFIGNoZWNrIGJhc2U9JHtQT1JUQUdFX0NP TkZJR1JPT1QlL30vZXRjL3BvcnRhZ2UvcGF0Y2hlczsKICAgIGZvciBjaGVjayBpbiAke0NBVEVH T1JZfS97JHtQfS0ke1BSfSwke1B9LCR7UE59fXssOiR7U0xPVH19OwogICAgZG8KICAgICAgICBF UEFUQ0hfU09VUkNFPSR7YmFzZX0vJHtDVEFSR0VUfS8ke2NoZWNrfTsKICAgICAgICBbWyAtciAk e0VQQVRDSF9TT1VSQ0V9IF1dIHx8IEVQQVRDSF9TT1VSQ0U9JHtiYXNlfS8ke0NIT1NUfS8ke2No ZWNrfTsKICAgICAgICBbWyAtciAke0VQQVRDSF9TT1VSQ0V9IF1dIHx8IEVQQVRDSF9TT1VSQ0U9 JHtiYXNlfS8ke2NoZWNrfTsKICAgICAgICBpZiBbWyAtZCAke0VQQVRDSF9TT1VSQ0V9IF1dOyB0 aGVuCiAgICAgICAgICAgIEVQQVRDSF9TT1VSQ0U9JHtFUEFUQ0hfU09VUkNFfSBFUEFUQ0hfU1VG RklYPSJwYXRjaCIgRVBBVENIX0ZPUkNFPSJ5ZXMiIEVQQVRDSF9NVUxUSV9NU0c9IkFwcGx5aW5n IHVzZXIgcGF0Y2hlcyBmcm9tICR7RVBBVENIX1NPVVJDRX0gLi4uIiBlcGF0Y2g7CiAgICAgICAg ICAgIGVjaG8gIiR7RVBBVENIX1NPVVJDRX0iID4gIiR7YXBwbGllZH0iOwogICAgICAgICAgICBy ZXR1cm4gMDsKICAgICAgICBmaTsKICAgIGRvbmU7CiAgICBlY2hvICJub25lIiA+ICIke2FwcGxp ZWR9IjsKICAgIHJldHVybiAxCn0KZXBhdXNlICgpIAp7IAogICAgZXdhcm4gIlFBIE5vdGljZTog ZXBhdXNlIGlzIG5vdCBkZWZpbmVkIGluIEVBUEk9JHtFQVBJfSwgcGxlYXNlIGZpbGUgYSBidWcg YXQgaHR0cDovL2J1Z3MuZ2VudG9vLm9yZyIKfQplcHVudF9jeHggKCkgCnsgCiAgICBsb2NhbCBk aXI9JDE7CiAgICBbWyAteiAke2Rpcn0gXV0gJiYgZGlyPSR7U307CiAgICBlYmVnaW4gIlJlbW92 aW5nIHVzZWxlc3MgQysrIGNoZWNrcyI7CiAgICBsb2NhbCBmIHAgYW55X2ZvdW5kOwogICAgd2hp bGUgSUZTPSByZWFkIC1yIC1kICcnIGY7IGRvCiAgICAgICAgZm9yIHAgaW4gIiR7UE9SVERJUn0i L2VjbGFzcy9FTFQtcGF0Y2hlcy9ub2N4eC8qLnBhdGNoOwogICAgICAgIGRvCiAgICAgICAgICAg IGlmIHBhdGNoIC0tbm8tYmFja3VwLWlmLW1pc21hdGNoIC1wMSAiJHtmfSIgIiR7cH0iID4gL2Rl di9udWxsOyB0aGVuCiAgICAgICAgICAgICAgICBhbnlfZm91bmQ9MTsKICAgICAgICAgICAgICAg IGJyZWFrOwogICAgICAgICAgICBmaTsKICAgICAgICBkb25lOwogICAgZG9uZSA8IDwoZmluZCAi JHtkaXJ9IiAtbmFtZSBjb25maWd1cmUgLXByaW50MCk7CiAgICBpZiBbWyAteiAke2FueV9mb3Vu ZH0gXV07IHRoZW4KICAgICAgICBlcWF3YXJuICJlcHVudF9jeHggY2FsbGVkIHVubmVjZXNzYXJp bHkgKG5vIEMrKyBjaGVja3MgdG8gcHVudCkuIjsKICAgIGZpOwogICAgZWVuZCAwCn0KZXNob3B0 c19wb3AgKCkgCnsgCiAgICBsb2NhbCBzOwogICAgZXN0YWNrX3BvcCBlc2hvcHRzIHMgfHwgZGll ICIke0ZVTkNOQU1FfTogdW5iYWxhbmNlZCBwdXNoIjsKICAgIGlmIFtbICR7c30gPT0gInNob3B0 IC0iKiBdXTsgdGhlbgogICAgICAgIGV2YWwgIiR7c30iIHx8IGRpZSAiJHtGVU5DTkFNRX06IHNh bml0eTogaW52YWxpZCBzaG9wdCBvcHRpb25zOiAke3N9IjsKICAgIGVsc2UKICAgICAgICBzZXQg KyQtIHx8IGRpZSAiJHtGVU5DTkFNRX06IHNhbml0eTogaW52YWxpZCBzaGVsbCBzZXR0aW5nczog JC0iOwogICAgICAgIHNldCAtJHtzfSB8fCBkaWUgIiR7RlVOQ05BTUV9OiBzYW5pdHk6IHVuYWJs ZSB0byByZXN0b3JlIHNhdmVkIHNoZWxsIHNldHRpbmdzOiAke3N9IjsKICAgIGZpCn0KZXNob3B0 c19wdXNoICgpIAp7IAogICAgaWYgW1sgJDEgPT0gLVtzdV0gXV07IHRoZW4KICAgICAgICBlc3Rh Y2tfcHVzaCBlc2hvcHRzICIkKHNob3B0IC1wKSI7CiAgICAgICAgW1sgJCMgLWVxIDAgXV0gJiYg cmV0dXJuIDA7CiAgICAgICAgc2hvcHQgIiRAIiB8fCBkaWUgIiR7RlVOQ05BTUV9OiBiYWQgb3B0 aW9ucyB0byBzaG9wdDogJCoiOwogICAgZWxzZQogICAgICAgIGVzdGFja19wdXNoIGVzaG9wdHMg JC07CiAgICAgICAgW1sgJCMgLWVxIDAgXV0gJiYgcmV0dXJuIDA7CiAgICAgICAgc2V0ICIkQCIg fHwgZGllICIke0ZVTkNOQU1FfTogYmFkIG9wdGlvbnMgdG8gc2V0OiAkKiI7CiAgICBmaQp9CmVz dGFja19wb3AgKCkgCnsgCiAgICBbWyAkIyAtZXEgMCB8fCAkIyAtZ3QgMiBdXSAmJiBkaWUgImVz dGFja19wb3A6IGluY29ycmVjdCAjIG9mIGFyZ3VtZW50cyI7CiAgICBsb2NhbCBfZXN0YWNrX25h bWU9Il9FU1RBQ0tfJDFfIjsKICAgIHNoaWZ0OwogICAgbG9jYWwgX2VzdGFja19yZXR2YXI9JDE7 CiAgICBzaGlmdDsKICAgIGV2YWwgbG9jYWwgX2VzdGFja19pPVwkeyMke19lc3RhY2tfbmFtZX1c W0BcXX07CiAgICBbWyAkKCggLS1fZXN0YWNrX2kgKSkgLWVxIC0xIF1dICYmIHJldHVybiAxOwog ICAgaWYgW1sgLW4gJHtfZXN0YWNrX3JldHZhcn0gXV07IHRoZW4KICAgICAgICBldmFsICR7X2Vz dGFja19yZXR2YXJ9PVwiXCR7JHtfZXN0YWNrX25hbWV9XFske19lc3RhY2tfaX1cXX1cIjsKICAg IGZpOwogICAgZXZhbCB1bnNldCAke19lc3RhY2tfbmFtZX1cWyR7X2VzdGFja19pfVxdCn0KZXN0 YWNrX3B1c2ggKCkgCnsgCiAgICBbWyAkIyAtZXEgMCBdXSAmJiBkaWUgImVzdGFja19wdXNoOiBp bmNvcnJlY3QgIyBvZiBhcmd1bWVudHMiOwogICAgbG9jYWwgc3RhY2tfbmFtZT0iX0VTVEFDS18k MV8iOwogICAgc2hpZnQ7CiAgICBldmFsICR7c3RhY2tfbmFtZX0rPVwoIFwiXCRAXCIgXCkKfQpl c3ZuX2NsZWFuICgpIAp7IAogICAgW1sgLXogJCogXV0gJiYgc2V0IC0tIC47CiAgICBmaW5kICIk QCIgLXR5cGUgZCAtbmFtZSAnLnN2bicgLXBydW5lIC1wcmludDAgfCB4YXJncyAtMCBybSAtcmYK fQpldW1hc2tfcG9wICgpIAp7IAogICAgW1sgJCMgLWVxIDAgXV0gfHwgZGllICIke0ZVTkNOQU1F fTogd2UgdGFrZSBubyBvcHRpb25zIjsKICAgIGxvY2FsIHM7CiAgICBlc3RhY2tfcG9wIGV1bWFz ayBzIHx8IGRpZSAiJHtGVU5DTkFNRX06IHVuYmFsYW5jZWQgcHVzaCI7CiAgICB1bWFzayAke3N9 IHx8IGRpZSAiJHtGVU5DTkFNRX06IHNhbml0eTogY291bGQgbm90IHJlc3RvcmUgdW1hc2s6ICR7 c30iCn0KZXVtYXNrX3B1c2ggKCkgCnsgCiAgICBlc3RhY2tfcHVzaCBldW1hc2sgIiQodW1hc2sp IjsKICAgIHVtYXNrICIkQCIgfHwgZGllICIke0ZVTkNOQU1FfTogYmFkIG9wdGlvbnMgdG8gdW1h c2s6ICQqIgp9CmV2YXJfcG9wICgpIAp7IAogICAgbG9jYWwgY250PSR7MTotYmFkfTsKICAgIGNh c2UgJCMgaW4gCiAgICAgICAgMCkKICAgICAgICAgICAgY250PTEKICAgICAgICA7OwogICAgICAg IDEpCiAgICAgICAgICAgIGlzZGlnaXQgIiR7Y250fSIgfHwgZGllICIke0ZVTkNOQU1FfTogZmly c3QgYXJnIG11c3QgYmUgYSBudW1iZXI6ICQqIgogICAgICAgIDs7CiAgICAgICAgKikKICAgICAg ICAgICAgZGllICIke0ZVTkNOQU1FfTogb25seSBhY2NlcHRzIG9uZSBhcmc6ICQqIgogICAgICAg IDs7CiAgICBlc2FjOwogICAgbG9jYWwgdmFyIHZhbDsKICAgIHdoaWxlICgoIGNudC0tICkpOyBk bwogICAgICAgIGVzdGFja19wb3AgZXZhciB2YWwgfHwgZGllICIke0ZVTkNOQU1FfTogdW5iYWxh bmNlZCBwdXNoIjsKICAgICAgICBlc3RhY2tfcG9wIGV2YXIgdmFyIHx8IGRpZSAiJHtGVU5DTkFN RX06IHVuYmFsYW5jZWQgcHVzaCI7CiAgICAgICAgW1sgJHt2YWx9ID09ICJ1bnNldF83NmZjM2M0 NjIwNjViYjRjYTk1OWY5MzllNjc5M2Y5NCIgXV0gJiYgdW5zZXQgJHt2YXJ9IHx8IHByaW50ZiAt diAiJHt2YXJ9IiAnJXMnICIke3ZhbH0iOwogICAgZG9uZQp9CmV2YXJfcHVzaCAoKSAKeyAKICAg IGxvY2FsIHZhciB2YWw7CiAgICBmb3IgdmFyIGluICIkQCI7CiAgICBkbwogICAgICAgIFtbICR7 IXZhcitzZXR9ID09ICJzZXQiIF1dICYmIHZhbD0keyF2YXJ9IHx8IHZhbD0idW5zZXRfNzZmYzNj NDYyMDY1YmI0Y2E5NTlmOTM5ZTY3OTNmOTQiOwogICAgICAgIGVzdGFja19wdXNoIGV2YXIgIiR7 dmFyfSIgIiR7dmFsfSI7CiAgICBkb25lCn0KZXZhcl9wdXNoX3NldCAoKSAKeyAKICAgIGxvY2Fs IHZhcj0kMTsKICAgIGV2YXJfcHVzaCAke3Zhcn07CiAgICBjYXNlICQjIGluIAogICAgICAgIDEp CiAgICAgICAgICAgIHVuc2V0ICR7dmFyfQogICAgICAgIDs7CiAgICAgICAgMikKICAgICAgICAg ICAgcHJpbnRmIC12ICIke3Zhcn0iICclcycgIiQyIgogICAgICAgIDs7CiAgICAgICAgKikKICAg ICAgICAgICAgZGllICIke0ZVTkNOQU1FfTogaW5jb3JyZWN0ICMgb2YgYXJnczogJCoiCiAgICAg ICAgOzsKICAgIGVzYWMKfQpmaW5kX21vZHVsZV9wYXJhbXMgKCkgCnsgCiAgICBkZWJ1Zy1wcmlu dC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAkKjsKICAgIGxvY2FsIG1hdGNoZWRfb2Zmc2V0PTAgbWF0 Y2hlZF9vcHRzPTAgdGVzdD0iJHtAfSIgdGVtcF92YXIgcmVzdWx0OwogICAgbG9jYWwgaT0wIHk9 MCB6PTA7CiAgICBmb3IgKChpPTA7IGk8PSR7I3Rlc3R9OyBpKyspKQogICAgZG8KICAgICAgICBj YXNlICR7dGVzdDoke2l9OjF9IGluIAogICAgICAgICAgICBcKCkKICAgICAgICAgICAgICAgIG1h dGNoZWRfb2Zmc2V0WzBdPSR7aX0KICAgICAgICAgICAgOzsKICAgICAgICAgICAgXDopCiAgICAg ICAgICAgICAgICBtYXRjaGVkX29wdHM9JCgoJHttYXRjaGVkX29wdHN9ICsgMSkpOwogICAgICAg ICAgICAgICAgbWF0Y2hlZF9vZmZzZXRbJHttYXRjaGVkX29wdHN9XT0iJHtpfSIKICAgICAgICAg ICAgOzsKICAgICAgICAgICAgXCkpCiAgICAgICAgICAgICAgICBtYXRjaGVkX29wdHM9JCgoJHtt YXRjaGVkX29wdHN9ICsgMSkpOwogICAgICAgICAgICAgICAgbWF0Y2hlZF9vZmZzZXRbJHttYXRj aGVkX29wdHN9XT0iJHtpfSIKICAgICAgICAgICAgOzsKICAgICAgICBlc2FjOwogICAgZG9uZTsK ICAgIGZvciAoKGk9MDsgaTw9JHttYXRjaGVkX29wdHN9OyBpKyspKQogICAgZG8KICAgICAgICBj YXNlICR7aX0gaW4gCiAgICAgICAgICAgIDApCiAgICAgICAgICAgICAgICB0ZW1wdmFyPSR7dGVz dDowOiR7bWF0Y2hlZF9vZmZzZXRbMF19fQogICAgICAgICAgICA7OwogICAgICAgICAgICAqKQog ICAgICAgICAgICAgICAgeT0kKCgke21hdGNoZWRfb2Zmc2V0WyQoKCR7aX0gLSAxKSldfSArIDEp KTsKICAgICAgICAgICAgICAgIHo9JCgoJHttYXRjaGVkX29mZnNldFske2l9XX0gLSAke21hdGNo ZWRfb2Zmc2V0WyQoKCR7aX0gLSAxKSldfSkpOwogICAgICAgICAgICAgICAgej0kKCgke3p9IC0g MSkpOwogICAgICAgICAgICAgICAgdGVtcHZhcj0ke3Rlc3Q6JHt5fToke3p9fQogICAgICAgICAg ICA7OwogICAgICAgIGVzYWM7CiAgICAgICAgY2FzZSAke2l9IGluIAogICAgICAgICAgICAwKQog ICAgICAgICAgICAgICAgcmVzdWx0PSIke3Jlc3VsdH0gbW9kdWxlbmFtZToke3RlbXB2YXJ9Igog ICAgICAgICAgICA7OwogICAgICAgICAgICAxKQogICAgICAgICAgICAgICAgcmVzdWx0PSIke3Jl c3VsdH0gbGliZGlyOiR7dGVtcHZhcn0iCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIDIpCiAg ICAgICAgICAgICAgICByZXN1bHQ9IiR7cmVzdWx0fSBzcmNkaXI6JHt0ZW1wdmFyfSIKICAgICAg ICAgICAgOzsKICAgICAgICAgICAgMykKICAgICAgICAgICAgICAgIHJlc3VsdD0iJHtyZXN1bHR9 IG9iamRpcjoke3RlbXB2YXJ9IgogICAgICAgICAgICA7OwogICAgICAgIGVzYWM7CiAgICBkb25l OwogICAgZWNobyAke3Jlc3VsdH0KfQpnY2MtZnVsbHZlcnNpb24gKCkgCnsgCiAgICBfZ2NjX2Z1 bGx2ZXJzaW9uICckMS4kMi4kMycgIiRAIgp9CmdjYy1tYWpvci12ZXJzaW9uICgpIAp7IAogICAg X2djY19mdWxsdmVyc2lvbiAnJDEnICIkQCIKfQpnY2MtbWljcm8tdmVyc2lvbiAoKSAKeyAKICAg IF9nY2NfZnVsbHZlcnNpb24gJyQzJyAiJEAiCn0KZ2NjLW1pbm9yLXZlcnNpb24gKCkgCnsgCiAg ICBfZ2NjX2Z1bGx2ZXJzaW9uICckMicgIiRAIgp9CmdjYy1zcGVjcy1kaXJlY3RpdmUgKCkgCnsg CiAgICBsb2NhbCBkaXJlY3RpdmUgc3ViZG5hbWUgc3ViZGlyZWN0aXZlOwogICAgZGlyZWN0aXZl PSIkKF9nY2Mtc3BlY3MtZGlyZWN0aXZlX3JhdyAkMSkiOwogICAgd2hpbGUgW1sgJHtkaXJlY3Rp dmV9ID09IColXCgqXCkqIF1dOyBkbwogICAgICAgIHN1YmRuYW1lPSR7ZGlyZWN0aXZlLyolXCh9 OwogICAgICAgIHN1YmRuYW1lPSR7c3ViZG5hbWUvXCkqfTsKICAgICAgICBzdWJkaXJlY3RpdmU9 IiQoX2djYy1zcGVjcy1kaXJlY3RpdmVfcmF3ICR7c3ViZG5hbWV9KSI7CiAgICAgICAgZGlyZWN0 aXZlPSIke2RpcmVjdGl2ZS8vXCUoJHtzdWJkbmFtZX0pLyR7c3ViZGlyZWN0aXZlfX0iOwogICAg ZG9uZTsKICAgIGVjaG8gIiR7ZGlyZWN0aXZlfSI7CiAgICByZXR1cm4gMAp9CmdjYy1zcGVjcy1u b3N0cmljdCAoKSAKeyAKICAgIGxvY2FsIGRpcmVjdGl2ZTsKICAgIGRpcmVjdGl2ZT0kKGdjYy1z cGVjcy1kaXJlY3RpdmUgY2MxKTsKICAgIFtbICIke2RpcmVjdGl2ZS9ceyFmc3RyaWN0LW92ZXJm bG93On0iICE9ICIke2RpcmVjdGl2ZX0iIF1dCn0KZ2NjLXNwZWNzLW5vdyAoKSAKeyAKICAgIGxv Y2FsIGRpcmVjdGl2ZTsKICAgIGRpcmVjdGl2ZT0kKGdjYy1zcGVjcy1kaXJlY3RpdmUgbGlua19j b21tYW5kKTsKICAgIFtbICIke2RpcmVjdGl2ZS9ceyFub25vdzp9IiAhPSAiJHtkaXJlY3RpdmV9 IiBdXQp9CmdjYy1zcGVjcy1waWUgKCkgCnsgCiAgICBsb2NhbCBkaXJlY3RpdmU7CiAgICBkaXJl Y3RpdmU9JChnY2Mtc3BlY3MtZGlyZWN0aXZlIGNjMSk7CiAgICBbWyAiJHtkaXJlY3RpdmUvXHsh bm9waWU6fSIgIT0gIiR7ZGlyZWN0aXZlfSIgXV0KfQpnY2Mtc3BlY3MtcmVscm8gKCkgCnsgCiAg ICBsb2NhbCBkaXJlY3RpdmU7CiAgICBkaXJlY3RpdmU9JChnY2Mtc3BlY3MtZGlyZWN0aXZlIGxp bmtfY29tbWFuZCk7CiAgICBbWyAiJHtkaXJlY3RpdmUvXHshbm9yZWxybzp9IiAhPSAiJHtkaXJl Y3RpdmV9IiBdXQp9CmdjYy1zcGVjcy1zc3AgKCkgCnsgCiAgICBsb2NhbCBkaXJlY3RpdmU7CiAg ICBkaXJlY3RpdmU9JChnY2Mtc3BlY3MtZGlyZWN0aXZlIGNjMSk7CiAgICBbWyAiJHtkaXJlY3Rp dmUvXHshZm5vLXN0YWNrLXByb3RlY3Rvcjp9IiAhPSAiJHtkaXJlY3RpdmV9IiBdXQp9CmdjYy1z cGVjcy1zc3AtdG8tYWxsICgpIAp7IAogICAgbG9jYWwgZGlyZWN0aXZlOwogICAgZGlyZWN0aXZl PSQoZ2NjLXNwZWNzLWRpcmVjdGl2ZSBjYzEpOwogICAgW1sgIiR7ZGlyZWN0aXZlL1x7IWZuby1z dGFjay1wcm90ZWN0b3ItYWxsOn0iICE9ICIke2RpcmVjdGl2ZX0iIF1dCn0KZ2NjLXNwZWNzLXN0 YWNrLWNoZWNrICgpIAp7IAogICAgbG9jYWwgZGlyZWN0aXZlOwogICAgZGlyZWN0aXZlPSQoZ2Nj LXNwZWNzLWRpcmVjdGl2ZSBjYzEpOwogICAgW1sgIiR7ZGlyZWN0aXZlL1x7IWZuby1zdGFjay1j aGVjazp9IiAhPSAiJHtkaXJlY3RpdmV9IiBdXQp9CmdjYy12ZXJzaW9uICgpIAp7IAogICAgX2dj Y19mdWxsdmVyc2lvbiAnJDEuJDInICIkQCIKfQpnZW5fdXNyX2xkc2NyaXB0ICgpIAp7IAogICAg bG9jYWwgbGliIGxpYmRpcj0kKGdldF9saWJkaXIpIG91dHB1dF9mb3JtYXQ9IiIgYXV0bz1mYWxz ZSBzdWZmaXg9JChnZXRfbGlibmFtZSk7CiAgICBbWyAteiAke0VEK3NldH0gXV0gJiYgbG9jYWwg RUQ9JHtEJS99JHtFUFJFRklYfS87CiAgICB0Yy1pcy1zdGF0aWMtb25seSAmJiByZXR1cm47CiAg ICBjYXNlICR7Q1RBUkdFVDotJHtDSE9TVH19IGluIAogICAgICAgICotZGFyd2luKikKCiAgICAg ICAgOzsKICAgICAgICAqbGludXgqIHwgKi1mcmVlYnNkKiB8ICotb3BlbmJzZCogfCAqLW5ldGJz ZCopCiAgICAgICAgICAgIHVzZSBwcmVmaXggJiYgcmV0dXJuIDAKICAgICAgICA7OwogICAgICAg ICopCiAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgOzsKICAgIGVzYWM7CiAgICBkb2RpciAv dXNyLyR7bGliZGlyfTsKICAgIGlmIFtbICQxID09ICItYSIgXV07IHRoZW4KICAgICAgICBhdXRv PXRydWU7CiAgICAgICAgc2hpZnQ7CiAgICAgICAgZG9kaXIgLyR7bGliZGlyfTsKICAgIGZpOwog ICAgbG9jYWwgZmxhZ3M9KCR7Q0ZMQUdTfSAke0xERkxBR1N9IC1XbCwtLXZlcmJvc2UpOwogICAg aWYgJCh0Yy1nZXRMRCkgLS12ZXJzaW9uIHwgZ3JlcCAtcSAnR05VIGdvbGQnOyB0aGVuCiAgICAg ICAgbG9jYWwgZD0iJHtUfS9iZmQtbGlua2VyIjsKICAgICAgICBta2RpciAtcCAiJHtkfSI7CiAg ICAgICAgbG4gLXNmICQod2hpY2ggJHtDSE9TVH0tbGQuYmZkKSAiJHtkfSIvbGQ7CiAgICAgICAg ZmxhZ3MrPSgtQiIke2R9Iik7CiAgICBmaTsKICAgIG91dHB1dF9mb3JtYXQ9JCgkKHRjLWdldEND KSAiJHtmbGFnc1tAXX0iIDI+JjEgfCBzZWQgLW4gJ3MvXk9VVFBVVF9GT1JNQVQoIlwoW14iXSpc KSIsLiovXDEvcCcpOwogICAgW1sgLW4gJHtvdXRwdXRfZm9ybWF0fSBdXSAmJiBvdXRwdXRfZm9y bWF0PSJPVVRQVVRfRk9STUFUICggJHtvdXRwdXRfZm9ybWF0fSApIjsKICAgIGZvciBsaWIgaW4g IiRAIjsKICAgIGRvCiAgICAgICAgbG9jYWwgdGxpYjsKICAgICAgICBpZiAke2F1dG99OyB0aGVu CiAgICAgICAgICAgIGxpYj0ibGliJHtsaWJ9JHtzdWZmaXh9IjsKICAgICAgICBlbHNlCiAgICAg ICAgICAgIFtbIC1yICR7RUR9LyR7bGliZGlyfS8ke2xpYn0gXV0gfHwgY29udGludWU7CiAgICAg ICAgZmk7CiAgICAgICAgY2FzZSAke0NUQVJHRVQ6LSR7Q0hPU1R9fSBpbiAKICAgICAgICAgICAg Ki1kYXJ3aW4qKQogICAgICAgICAgICAgICAgaWYgJHthdXRvfTsgdGhlbgogICAgICAgICAgICAg ICAgICAgIHRsaWI9JChzY2FubWFjaG8gLXFGJyVTI0YnICIke0VEfSIvdXNyLyR7bGliZGlyfS8k e2xpYn0pOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIHRsaWI9JChz Y2FubWFjaG8gLXFGJyVTI0YnICIke0VEfSIvJHtsaWJkaXJ9LyR7bGlifSk7CiAgICAgICAgICAg ICAgICBmaTsKICAgICAgICAgICAgICAgIFtbIC16ICR7dGxpYn0gXV0gJiYgZGllICJ1bmFibGUg dG8gcmVhZCBpbnN0YWxsX25hbWUgZnJvbSAke2xpYn0iOwogICAgICAgICAgICAgICAgdGxpYj0k e3RsaWIjIyovfTsKICAgICAgICAgICAgICAgIGlmICR7YXV0b307IHRoZW4KICAgICAgICAgICAg ICAgICAgICBtdiAiJHtFRH0iL3Vzci8ke2xpYmRpcn0vJHtsaWIlJHtzdWZmaXh9fS4qJHtzdWZm aXgjLn0gIiR7RUR9Ii8ke2xpYmRpcn0vIHx8IGRpZTsKICAgICAgICAgICAgICAgICAgICBpZiBb WyAke3RsaWJ9ICE9ICR7bGliJSR7c3VmZml4fX0uKiR7c3VmZml4Iy59IF1dOyB0aGVuCiAgICAg ICAgICAgICAgICAgICAgICAgIG12ICIke0VEfSIvdXNyLyR7bGliZGlyfS8ke3RsaWIlJHtzdWZm aXh9fS4qJHtzdWZmaXgjLn0gIiR7RUR9Ii8ke2xpYmRpcn0vIHx8IGRpZTsKICAgICAgICAgICAg ICAgICAgICBmaTsKICAgICAgICAgICAgICAgICAgICBybSAtZiAiJHtFRH0iLyR7bGliZGlyfS8k e2xpYn07CiAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgICAgIGlmIFtbICEgLXcgIiR7 RUR9LyR7bGliZGlyfS8ke3RsaWJ9IiBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgIGNobW9k IHUrdyAiJHtFRH0ke2xpYmRpcn0vJHt0bGlifSI7CiAgICAgICAgICAgICAgICAgICAgbG9jYWwg bm93cml0ZT15ZXM7CiAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgICAgIGluc3RhbGxf bmFtZV90b29sIC1pZCAiJHtFUFJFRklYfSIvJHtsaWJkaXJ9LyR7dGxpYn0gIiR7RUR9Ii8ke2xp YmRpcn0vJHt0bGlifSB8fCBkaWUgImluc3RhbGxfbmFtZV90b29sIGZhaWxlZCI7CiAgICAgICAg ICAgICAgICBbWyAtbiAke25vd3JpdGV9IF1dICYmIGNobW9kIHUtdyAiJHtFRH0ke2xpYmRpcn0v JHt0bGlifSI7CiAgICAgICAgICAgICAgICBwdXNoZCAiJHtFRH0vdXNyLyR7bGliZGlyfSIgPiAv ZGV2L251bGw7CiAgICAgICAgICAgICAgICBsbiAtc25mICIuLi8uLi8ke2xpYmRpcn0vJHt0bGli fSIgIiR7bGlifSI7CiAgICAgICAgICAgICAgICBwb3BkID4gL2Rldi9udWxsCiAgICAgICAgICAg IDs7CiAgICAgICAgICAgICopCiAgICAgICAgICAgICAgICBpZiAke2F1dG99OyB0aGVuCiAgICAg ICAgICAgICAgICAgICAgdGxpYj0kKHNjYW5lbGYgLXFGJyVTI0YnICIke0VEfSIvdXNyLyR7bGli ZGlyfS8ke2xpYn0pOwogICAgICAgICAgICAgICAgICAgIFtbIC16ICR7dGxpYn0gXV0gJiYgZGll ICJ1bmFibGUgdG8gcmVhZCBTT05BTUUgZnJvbSAke2xpYn0iOwogICAgICAgICAgICAgICAgICAg IG12ICIke0VEfSIvdXNyLyR7bGliZGlyfS8ke2xpYn0qICIke0VEfSIvJHtsaWJkaXJ9LyB8fCBk aWU7CiAgICAgICAgICAgICAgICAgICAgaWYgW1sgJHt0bGlifSAhPSAke2xpYn0qIF1dOyB0aGVu CiAgICAgICAgICAgICAgICAgICAgICAgIG12ICIke0VEfSIvdXNyLyR7bGliZGlyfS8ke3RsaWJ9 KiAiJHtFRH0iLyR7bGliZGlyfS8gfHwgZGllOwogICAgICAgICAgICAgICAgICAgIGZpOwogICAg ICAgICAgICAgICAgICAgIHJtIC1mICIke0VEfSIvJHtsaWJkaXJ9LyR7bGlifTsKICAgICAgICAg ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICB0bGliPSR7bGlifTsKICAgICAgICAgICAg ICAgIGZpOwogICAgICAgICAgICAgICAgY2F0ID4gIiR7RUR9L3Vzci8ke2xpYmRpcn0vJHtsaWJ9 IiAgPDwtRU5EX0xEU0NSSVBUCi8qIEdOVSBsZCBzY3JpcHQKICAgU2luY2UgR2VudG9vIGhhcyBj cml0aWNhbCBkeW5hbWljIGxpYnJhcmllcyBpbiAvbGliLCBhbmQgdGhlIHN0YXRpYyB2ZXJzaW9u cwogICBpbiAvdXNyL2xpYiwgd2UgbmVlZCB0byBoYXZlIGEgImZha2UiIGR5bmFtaWMgbGliIGlu IC91c3IvbGliLCBvdGhlcndpc2Ugd2UKICAgcnVuIGludG8gbGlua2luZyBwcm9ibGVtcy4gIFRo aXMgImZha2UiIGR5bmFtaWMgbGliIGlzIGEgbGlua2VyIHNjcmlwdCB0aGF0CiAgIHJlZGlyZWN0 cyB0aGUgbGlua2VyIHRvIHRoZSByZWFsIGxpYi4gIEFuZCB5ZXMsIHRoaXMgd29ya3MgaW4gdGhl IGNyb3NzLQogICBjb21waWxpbmcgc2NlbmFyaW8gYXMgdGhlIHN5c3Jvb3QtZWQgbGlua2VyIHdp bGwgcHJlcGVuZCB0aGUgcmVhbCBwYXRoLgoKICAgU2VlIGJ1ZyBodHRwOi8vYnVncy5nZW50b28u b3JnLzQ0MTEgZm9yIG1vcmUgaW5mby4KICovCiR7b3V0cHV0X2Zvcm1hdH0KR1JPVVAgKCAke0VQ UkVGSVh9LyR7bGliZGlyfS8ke3RsaWJ9ICkKRU5EX0xEU0NSSVBUCgogICAgICAgICAgICA7Owog ICAgICAgIGVzYWMKICAgICAgICBmcGVybXMgYSt4ICIvdXNyLyR7bGliZGlyfS8ke2xpYn0iIHx8 IGRpZSAiY291bGQgbm90IGNoYW5nZSBwZXJtcyBvbiAke2xpYn0iOwogICAgZG9uZQp9CmdlbmVy YXRlX21vZHVsZXNkICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0g JCo7CiAgICBbIC1uICIke01PRFVMRVNfT1BUSU9OQUxfVVNFfSIgXSAmJiB1c2UgISR7TU9EVUxF U19PUFRJT05BTF9VU0V9ICYmIHJldHVybjsKICAgIGxvY2FsIGN1cnJtX3BhdGggY3Vycm0gY3Vy cm1fdCB0IG15SUZTIG15VkFSOwogICAgbG9jYWwgbW9kdWxlX2RvY3MgbW9kdWxlX2VuYWJsZWQg bW9kdWxlX2FsaWFzZXMgbW9kdWxlX2FkZGl0aW9ucyBtb2R1bGVfZXhhbXBsZXMgbW9kdWxlX21v ZGluZm8gbW9kdWxlX29wdHM7CiAgICBmb3IgY3Vycm1fcGF0aCBpbiAke0B9OwogICAgZG8KICAg ICAgICBjdXJybT0ke2N1cnJtX3BhdGgvLypcL307CiAgICAgICAgY3Vycm09JChlY2hvICR7Y3Vy cm19IHwgdHIgJ1s6bG93ZXI6XScgJ1s6dXBwZXI6XScpOwogICAgICAgIGN1cnJtX3Q9JHtjdXJy bX07CiAgICAgICAgd2hpbGUgW1sgLXogJHtjdXJybV90Ly8qLSp9IF1dOyBkbwogICAgICAgICAg ICBjdXJybV90PSR7Y3Vycm1fdC8tL199OwogICAgICAgIGRvbmU7CiAgICAgICAgbW9kdWxlX2Rv Y3M9IiQoZXZhbCBlY2hvIFwke01PRFVMRVNEXyR7Y3Vycm1fdH1fRE9DU30pIjsKICAgICAgICBt b2R1bGVfZW5hYmxlZD0iJChldmFsIGVjaG8gXCR7TU9EVUxFU0RfJHtjdXJybV90fV9FTkFCTEVE fSkiOwogICAgICAgIG1vZHVsZV9hbGlhc2VzPSIkKGV2YWwgZWNobyBcJHsjTU9EVUxFU0RfJHtj dXJybV90fV9BTElBU0VTWypdfSkiOwogICAgICAgIG1vZHVsZV9hZGRpdGlvbnM9IiQoZXZhbCBl Y2hvIFwkeyNNT0RVTEVTRF8ke2N1cnJtX3R9X0FERElUSU9OU1sqXX0pIjsKICAgICAgICBtb2R1 bGVfZXhhbXBsZXM9IiQoZXZhbCBlY2hvIFwkeyNNT0RVTEVTRF8ke2N1cnJtX3R9X0VYQU1QTEVT WypdfSkiOwogICAgICAgIFtbICR7bW9kdWxlX2FsaWFzZXN9IC1lcSAwIF1dICYmIHVuc2V0IG1v ZHVsZV9hbGlhc2VzOwogICAgICAgIFtbICR7bW9kdWxlX2FkZGl0aW9uc30gLWVxIDAgXV0gJiYg dW5zZXQgbW9kdWxlX2FkZGl0aW9uczsKICAgICAgICBbWyAke21vZHVsZV9leGFtcGxlc30gLWVx IDAgXV0gJiYgdW5zZXQgbW9kdWxlX2V4YW1wbGVzOwogICAgICAgIFtbICR7bW9kdWxlX2VuYWJs ZWR9ID09IG5vIF1dICYmIHJldHVybiAwOwogICAgICAgIGZvciB0IGluICR7IW1vZHVsZV8qfTsK ICAgICAgICBkbwogICAgICAgICAgICBbWyAteiAkeyF0fSBdXSAmJiB1bnNldCAke3R9OwogICAg ICAgIGRvbmU7CiAgICAgICAgW1sgLXogJHshbW9kdWxlXyp9IF1dICYmIHJldHVybiAwOwogICAg ICAgIG1vZHVsZV9tb2RpbmZvPSIkKG1vZGluZm8gLXAgJHtjdXJybV9wYXRofS4ke0tWX09CSn0p IjsKICAgICAgICBtb2R1bGVfY29uZmlnPSIke1R9L21vZHVsZXNkLSR7Y3Vycm19IjsKICAgICAg ICBlYmVnaW4gIlByZXBhcmluZyBmaWxlIGZvciBtb2Rwcm9iZS5kIjsKICAgICAgICBlY2hvICIj IG1vZHByb2JlLmQgY29uZmlndXJhdGlvbiBmaWxlIGZvciAke2N1cnJtfSIgPj4gIiR7bW9kdWxl X2NvbmZpZ30iOwogICAgICAgIFtbIC1uICR7bW9kdWxlX2RvY3N9IF1dICYmIGVjaG8gIiMgRm9y IG1vcmUgaW5mb3JtYXRpb24gcGxlYXNlIHJlYWQ6IiA+PiAiJHttb2R1bGVfY29uZmlnfSI7CiAg ICAgICAgZm9yIHQgaW4gJHttb2R1bGVfZG9jc307CiAgICAgICAgZG8KICAgICAgICAgICAgZWNo byAiIyAgICAke3QvLypcL30iID4+ICIke21vZHVsZV9jb25maWd9IjsKICAgICAgICBkb25lOwog ICAgICAgIGVjaG8gPj4gIiR7bW9kdWxlX2NvbmZpZ30iOwogICAgICAgIGlmIFtbICR7bW9kdWxl X2FsaWFzZXN9IC1ndCAwIF1dOyB0aGVuCiAgICAgICAgICAgIGVjaG8gIiMgSW50ZXJuYWwgQWxp YXNlcyAtIERvIG5vdCBlZGl0IiA+PiAiJHttb2R1bGVfY29uZmlnfSI7CiAgICAgICAgICAgIGVj aG8gIiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiA+PiAiJHttb2R1bGVfY29uZmln fSI7CiAgICAgICAgICAgIGZvciAoKHQ9MDsgdDwke21vZHVsZV9hbGlhc2VzfTsgdCsrKSkKICAg ICAgICAgICAgZG8KICAgICAgICAgICAgICAgIGVjaG8gImFsaWFzICQoZXZhbCBlY2hvIFwke01P RFVMRVNEXyR7Y3Vycm19X0FMSUFTRVNbJHRdfSkiID4+ICIke21vZHVsZV9jb25maWd9IjsKICAg ICAgICAgICAgZG9uZTsKICAgICAgICAgICAgZWNobyAnJyA+PiAiJHttb2R1bGVfY29uZmlnfSI7 CiAgICAgICAgZmk7CiAgICAgICAgaWYgW1sgLW4gJHttb2R1bGVfbW9kaW5mb30gXV07IHRoZW4K ICAgICAgICAgICAgZWNobyA+PiAiJHttb2R1bGVfY29uZmlnfSI7CiAgICAgICAgICAgIGVjaG8g IiMgQ29uZmlndXJhYmxlIG1vZHVsZSBwYXJhbWV0ZXJzIiA+PiAiJHttb2R1bGVfY29uZmlnfSI7 CiAgICAgICAgICAgIGVjaG8gIiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiA+PiAi JHttb2R1bGVfY29uZmlnfSI7CiAgICAgICAgICAgIG15SUZTPSIke0lGU30iOwogICAgICAgICAg ICBJRlM9IiQoZWNobyAtZW4gIlxuXGIiKSI7CiAgICAgICAgICAgIGZvciB0IGluICR7bW9kdWxl X21vZGluZm99OwogICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgbXlWQVI9IiQoZWNobyAk e3QjKjp9ICB8IGdyZXAgLW8gIlteIF0qWzAtOV1bID1dW14gXSoiIHwgdGFpbCAtMSAgfCBncmVw IC1vICJbMC05XSIpIjsKICAgICAgICAgICAgICAgIGlmIFtbIC1uICR7bXlWQVJ9IF1dOyB0aGVu CiAgICAgICAgICAgICAgICAgICAgbW9kdWxlX29wdHM9IiR7bW9kdWxlX29wdHN9ICR7dCUlOip9 OiR7bXlWQVJ9IjsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICAgICAgZWNobyAtZSAi IyAke3QlJToqfTpcdCR7dCMqOn0iID4+ICIke21vZHVsZV9jb25maWd9IjsKICAgICAgICAgICAg ZG9uZTsKICAgICAgICAgICAgSUZTPSIke215SUZTfSI7CiAgICAgICAgICAgIGVjaG8gJycgPj4g IiR7bW9kdWxlX2NvbmZpZ30iOwogICAgICAgIGZpOwogICAgICAgIGlmIFtbICQoZXZhbCBlY2hv IFwke01PRFVMRVNEXyR7Y3Vycm19X0FMSUFTRVNbMF19KSA9PSBndWVzcyBdXTsgdGhlbgogICAg ICAgICAgICBpZiBbWyAtbiAke21vZHVsZV9vcHRzfSBdXTsgdGhlbgogICAgICAgICAgICAgICAg ZWNobyAiIyBGb3IgRXhhbXBsZS4uLiIgPj4gIiR7bW9kdWxlX2NvbmZpZ30iOwogICAgICAgICAg ICAgICAgZWNobyAiIyAtLS0tLS0tLS0tLS0tLSIgPj4gIiR7bW9kdWxlX2NvbmZpZ30iOwogICAg ICAgICAgICAgICAgZm9yIHQgaW4gJHttb2R1bGVfb3B0c307CiAgICAgICAgICAgICAgICBkbwog ICAgICAgICAgICAgICAgICAgIGVjaG8gIiMgb3B0aW9ucyAke2N1cnJtfSAke3QvLzoqfT0ke3Qv Lyo6fSIgPj4gIiR7bW9kdWxlX2NvbmZpZ30iOwogICAgICAgICAgICAgICAgZG9uZTsKICAgICAg ICAgICAgICAgIGVjaG8gJycgPj4gIiR7bW9kdWxlX2NvbmZpZ30iOwogICAgICAgICAgICBmaTsK ICAgICAgICBlbHNlCiAgICAgICAgICAgIGlmIFtbICR7bW9kdWxlX2V4YW1wbGVzfSAtZ3QgMCBd XTsgdGhlbgogICAgICAgICAgICAgICAgZWNobyAiIyBGb3IgRXhhbXBsZS4uLiIgPj4gIiR7bW9k dWxlX2NvbmZpZ30iOwogICAgICAgICAgICAgICAgZWNobyAiIyAtLS0tLS0tLS0tLS0tLSIgPj4g IiR7bW9kdWxlX2NvbmZpZ30iOwogICAgICAgICAgICAgICAgZm9yICgodD0wOyB0PCR7bW9kdWxl X2V4YW1wbGVzfTsgdCsrKSkKICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAg ZWNobyAib3B0aW9ucyAkKGV2YWwgZWNobyBcJHtNT0RVTEVTRF8ke2N1cnJtfV9FWEFNUExFU1sk dF19KSIgPj4gIiR7bW9kdWxlX2NvbmZpZ30iOwogICAgICAgICAgICAgICAgZG9uZTsKICAgICAg ICAgICAgICAgIGVjaG8gJycgPj4gIiR7bW9kdWxlX2NvbmZpZ30iOwogICAgICAgICAgICBmaTsK ICAgICAgICBmaTsKICAgICAgICBpZiBbWyAke21vZHVsZV9hZGRpdGlvbnN9IC1ndCAwIF1dOyB0 aGVuCiAgICAgICAgICAgIGZvciAoKHQ9MDsgdDwke21vZHVsZV9hZGRpdGlvbnN9OyB0KyspKQog ICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgZWNobyAiJChldmFsIGVjaG8gXCR7TU9EVUxF U0RfJHtjdXJybX1fQURESVRJT05TWyR0XX0pIiA+PiAiJHttb2R1bGVfY29uZmlnfSI7CiAgICAg ICAgICAgIGRvbmU7CiAgICAgICAgICAgIGVjaG8gJycgPj4gIiR7bW9kdWxlX2NvbmZpZ30iOwog ICAgICAgIGZpOwogICAgICAgIGluc2ludG8gL2V0Yy9tb2Rwcm9iZS5kOwogICAgICAgIG5ld2lu cyAiJHttb2R1bGVfY29uZmlnfSIgIiR7Y3Vycm1fcGF0aC8vKlwvfS5jb25mIjsKICAgICAgICBb WyAtbiAke21vZHVsZV9kb2NzfSBdXSAmJiBkb2RvYyAke21vZHVsZV9kb2NzfTsKICAgIGRvbmU7 CiAgICBlZW5kIDA7CiAgICByZXR1cm4gMAp9CmdldC1LRVJORUxfQ0MgKCkgCnsgCiAgICBkZWJ1 Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAkKjsKICAgIGlmIFtbIC1uICR7S0VSTkVMX0ND fSBdXTsgdGhlbgogICAgICAgIGVjaG8gIiR7S0VSTkVMX0NDfSI7CiAgICAgICAgcmV0dXJuOwog ICAgZmk7CiAgICBsb2NhbCBrZXJuZWxfY2M7CiAgICBpZiBbIC1uICIke0tFUk5FTF9BQkl9IiBd OyB0aGVuCiAgICAgICAga2VybmVsX2NjPSIkKHRjLWdldENDICQoQUJJPSR7S0VSTkVMX0FCSX0g Z2V0X2FiaV9DSE9TVCkpIjsKICAgIGVsc2UKICAgICAgICBrZXJuZWxfY2M9JCh0Yy1nZXRDQyk7 CiAgICBmaTsKICAgIGVjaG8gIiR7a2VybmVsX2NjfSIKfQpnZXRfYWJpX0NGTEFHUyAoKSAKeyAK ICAgIGdldF9hYmlfdmFyIENGTEFHUyAiJEAiCn0KZ2V0X2FiaV9DSE9TVCAoKSAKeyAKICAgIGdl dF9hYmlfdmFyIENIT1NUICIkQCIKfQpnZXRfYWJpX0NUQVJHRVQgKCkgCnsgCiAgICBnZXRfYWJp X3ZhciBDVEFSR0VUICIkQCIKfQpnZXRfYWJpX0ZBS0VfVEFSR0VUUyAoKSAKeyAKICAgIGdldF9h YmlfdmFyIEZBS0VfVEFSR0VUUyAiJEAiCn0KZ2V0X2FiaV9MREZMQUdTICgpIAp7IAogICAgZ2V0 X2FiaV92YXIgTERGTEFHUyAiJEAiCn0KZ2V0X2FiaV9MSUJESVIgKCkgCnsgCiAgICBnZXRfYWJp X3ZhciBMSUJESVIgIiRAIgp9CmdldF9hYmlfdmFyICgpIAp7IAogICAgbG9jYWwgZmxhZz0kMTsK ICAgIGxvY2FsIGFiaT0kezI6LSR7QUJJOi0ke0RFRkFVTFRfQUJJOi1kZWZhdWx0fX19OwogICAg bG9jYWwgdmFyPSIke2ZsYWd9XyR7YWJpfSI7CiAgICBlY2hvICR7IXZhcn0KfQpnZXRfYWZ0ZXJf bWFqb3JfdmVyc2lvbiAoKSAKeyAKICAgIGVjaG8gJChnZXRfdmVyc2lvbl9jb21wb25lbnRfcmFu Z2UgMi0gIiR7MTotJHtQVn19IikKfQpnZXRfYWxsX2FiaXMgKCkgCnsgCiAgICBsb2NhbCB4IG9y ZGVyPSIiIG12YXIgZHZhcjsKICAgIG12YXI9Ik1VTFRJTElCX0FCSVMiOwogICAgZHZhcj0iREVG QVVMVF9BQkkiOwogICAgaWYgW1sgLW4gJDEgXV07IHRoZW4KICAgICAgICBtdmFyPSIkMV8ke212 YXJ9IjsKICAgICAgICBkdmFyPSIkMV8ke2R2YXJ9IjsKICAgIGZpOwogICAgaWYgW1sgLXogJHsh bXZhcn0gXV07IHRoZW4KICAgICAgICBlY2hvICJkZWZhdWx0IjsKICAgICAgICByZXR1cm4gMDsK ICAgIGZpOwogICAgZm9yIHggaW4gJHshbXZhcn07CiAgICBkbwogICAgICAgIGlmIFtbICR7eH0g IT0gJHshZHZhcn0gXV07IHRoZW4KICAgICAgICAgICAgb3JkZXI9IiR7b3JkZXI6KyR7b3JkZXJ9 IH0ke3h9IjsKICAgICAgICBmaTsKICAgIGRvbmU7CiAgICBvcmRlcj0iJHtvcmRlcjorJHtvcmRl cn0gfSR7IWR2YXJ9IjsKICAgIGVjaG8gJHtvcmRlcn07CiAgICByZXR1cm4gMAp9CmdldF9hbGxf bGliZGlycyAoKSAKeyAKICAgIGxvY2FsIGxpYmRpcnMgYWJpOwogICAgZm9yIGFiaSBpbiAke01V TFRJTElCX0FCSVN9OwogICAgZG8KICAgICAgICBsaWJkaXJzKz0iICQoZ2V0X2FiaV9MSUJESVIg JHthYml9KSI7CiAgICBkb25lOwogICAgW1sgIiAke2xpYmRpcnN9ICIgIT0gKiIgbGliICIqIF1d ICYmIGxpYmRpcnMrPSIgbGliIjsKICAgIGVjaG8gIiR7bGliZGlyc30iCn0KZ2V0X2FsbF92ZXJz aW9uX2NvbXBvbmVudHMgKCkgCnsgCiAgICBlc2hvcHRzX3B1c2ggLXMgZXh0Z2xvYjsKICAgIGxv Y2FsIHZlcl9zdHI9JHsxOi0ke1BWfX0gcmVzdWx0OwogICAgcmVzdWx0PSgpOwogICAgaWYgW1sg JHtWRVJTSU9OQVRPUl9DQUNIRV9WRVJfU1RSfSA9PSAke3Zlcl9zdHJ9IF1dOyB0aGVuCiAgICAg ICAgZWNobyAke1ZFUlNJT05BVE9SX0NBQ0hFX1JFU1VMVH07CiAgICAgICAgZXNob3B0c19wb3A7 CiAgICAgICAgcmV0dXJuOwogICAgZmk7CiAgICBleHBvcnQgVkVSU0lPTkFUT1JfQ0FDSEVfVkVS X1NUUj0ke3Zlcl9zdHJ9OwogICAgd2hpbGUgW1sgLW4gJHZlcl9zdHIgXV07IGRvCiAgICAgICAg Y2FzZSAiJHt2ZXJfc3RyOjoxfSIgaW4gCiAgICAgICAgICAgIFtbOmRpZ2l0Ol1dKQogICAgICAg ICAgICAgICAgcmVzdWx0Kz0oIiR7dmVyX3N0ciUlW15bOmRpZ2l0Ol1dKn0iKTsKICAgICAgICAg ICAgICAgIHZlcl9zdHI9JHt2ZXJfc3RyIyMrKFtbOmRpZ2l0Ol1dKX0KICAgICAgICAgICAgOzsK ICAgICAgICAgICAgWy1fLl0pCiAgICAgICAgICAgICAgICByZXN1bHQrPSgiJHt2ZXJfc3RyOjox fSIpOwogICAgICAgICAgICAgICAgdmVyX3N0cj0ke3Zlcl9zdHI6MX0KICAgICAgICAgICAgOzsK ICAgICAgICAgICAgW1s6YWxwaGE6XV0pCiAgICAgICAgICAgICAgICBsb2NhbCBub3RfbWF0Y2g9 JHt2ZXJfc3RyIyMrKFtbOmFscGhhOl1dKSooW1s6ZGlnaXQ6XV0pfTsKICAgICAgICAgICAgICAg IHJlc3VsdCs9KCIke3Zlcl9zdHI6OiR7I3Zlcl9zdHJ9IC0gJHsjbm90X21hdGNofX0iKTsKICAg ICAgICAgICAgICAgIHZlcl9zdHI9JHtub3RfbWF0Y2h9CiAgICAgICAgICAgIDs7CiAgICAgICAg ICAgICopCiAgICAgICAgICAgICAgICByZXN1bHQrPSgiJHt2ZXJfc3RyOjoxfSIpOwogICAgICAg ICAgICAgICAgdmVyX3N0cj0ke3Zlcl9zdHI6MX0KICAgICAgICAgICAgOzsKICAgICAgICBlc2Fj OwogICAgZG9uZTsKICAgIGV4cG9ydCBWRVJTSU9OQVRPUl9DQUNIRV9SRVNVTFQ9JHtyZXN1bHRb Kl19OwogICAgZWNobyAke3Jlc3VsdFtAXX07CiAgICBlc2hvcHRzX3BvcAp9CmdldF9pbnN0YWxs X2FiaXMgKCkgCnsgCiAgICBsb2NhbCB4IG9yZGVyPSIiOwogICAgaWYgW1sgLXogJHtNVUxUSUxJ Ql9BQklTfSBdXTsgdGhlbgogICAgICAgIGVjaG8gImRlZmF1bHQiOwogICAgICAgIHJldHVybiAw OwogICAgZmk7CiAgICBpZiBbWyAke0VNVUxUSUxJQl9QS0d9ID09ICJ0cnVlIiBdXTsgdGhlbgog ICAgICAgIGZvciB4IGluICR7TVVMVElMSUJfQUJJU307CiAgICAgICAgZG8KICAgICAgICAgICAg aWYgW1sgJHt4fSAhPSAiJHtERUZBVUxUX0FCSX0iIF1dOyB0aGVuCiAgICAgICAgICAgICAgICBo YXMgJHt4fSAke0FCSV9ERU5ZfSB8fCBvcmRlcj0iJHtvcmRlcn0gJHt4fSI7CiAgICAgICAgICAg IGZpOwogICAgICAgIGRvbmU7CiAgICAgICAgaGFzICR7REVGQVVMVF9BQkl9ICR7QUJJX0RFTll9 IHx8IG9yZGVyPSIke29yZGVyfSAke0RFRkFVTFRfQUJJfSI7CiAgICAgICAgaWYgW1sgLW4gJHtB QklfQUxMT1d9IF1dOyB0aGVuCiAgICAgICAgICAgIGxvY2FsIG9yZGVyYT0iIjsKICAgICAgICAg ICAgZm9yIHggaW4gJHtvcmRlcn07CiAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICBpZiBo YXMgJHt4fSAke0FCSV9BTExPV307IHRoZW4KICAgICAgICAgICAgICAgICAgICBvcmRlcmE9IiR7 b3JkZXJhfSAke3h9IjsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICBkb25lOwogICAg ICAgICAgICBvcmRlcj0ke29yZGVyYX07CiAgICAgICAgZmk7CiAgICBlbHNlCiAgICAgICAgb3Jk ZXI9JHtERUZBVUxUX0FCSX07CiAgICBmaTsKICAgIGlmIFtbIC16ICR7b3JkZXJ9IF1dOyB0aGVu CiAgICAgICAgZGllICJUaGUgQUJJIGxpc3QgaXMgZW1wdHkuICBBcmUgeW91IHVzaW5nIGEgcHJv cGVyIG11bHRpbGliIHByb2ZpbGU/ICBQZXJoYXBzIHlvdXIgVVNFIGZsYWdzIG9yIE1VTFRJTElC X0FCSVMgYXJlIHRvbyByZXN0cmljdGl2ZSBmb3IgdGhpcyBwYWNrYWdlLiI7CiAgICBmaTsKICAg IGVjaG8gJHtvcmRlcn07CiAgICByZXR1cm4gMAp9CmdldF9sYXN0X3ZlcnNpb25fY29tcG9uZW50 X2luZGV4ICgpIAp7IAogICAgZWNobyAkKCgkKGdldF92ZXJzaW9uX2NvbXBvbmVudF9jb3VudCAi JHsxOi0ke1BWfX0iICkgLSAxKSkKfQpnZXRfbGliZGlyICgpIAp7IAogICAgbG9jYWwgQ09ORl9M SUJESVI7CiAgICBpZiBbIC1uICIke0NPTkZfTElCRElSX09WRVJSSURFfSIgXTsgdGhlbgogICAg ICAgIGVjaG8gJHtDT05GX0xJQkRJUl9PVkVSUklERX07CiAgICBlbHNlCiAgICAgICAgZ2V0X2Fi aV9MSUJESVI7CiAgICBmaQp9CmdldF9saWJuYW1lICgpIAp7IAogICAgbG9jYWwgbGlibmFtZTsK ICAgIGxvY2FsIHZlcj0kMTsKICAgIGNhc2UgJHtDSE9TVH0gaW4gCiAgICAgICAgKi1jeWd3aW4g fCBtaW5ndyogfCAqLW1pbmd3KikKICAgICAgICAgICAgbGlibmFtZT0iZGxsIgogICAgICAgIDs7 CiAgICAgICAgKi1kYXJ3aW4qKQogICAgICAgICAgICBsaWJuYW1lPSJkeWxpYiIKICAgICAgICA7 OwogICAgICAgICotbWludCopCiAgICAgICAgICAgIGxpYm5hbWU9ImlycmVsZXZhbnQiCiAgICAg ICAgOzsKICAgICAgICBocHBhKi1ocHV4KikKICAgICAgICAgICAgbGlibmFtZT0ic2wiCiAgICAg ICAgOzsKICAgICAgICAqKQogICAgICAgICAgICBsaWJuYW1lPSJzbyIKICAgICAgICA7OwogICAg ZXNhYzsKICAgIGlmIFtbIC16ICQqIF1dOyB0aGVuCiAgICAgICAgZWNobyAiLiR7bGlibmFtZX0i OwogICAgZWxzZQogICAgICAgIGZvciB2ZXIgaW4gIiRAIjsKICAgICAgICBkbwogICAgICAgICAg ICBjYXNlICR7Q0hPU1R9IGluIAogICAgICAgICAgICAgICAgKi1kYXJ3aW4qKQogICAgICAgICAg ICAgICAgICAgIGVjaG8gIi4ke3Zlcn0uJHtsaWJuYW1lfSIKICAgICAgICAgICAgICAgIDs7CiAg ICAgICAgICAgICAgICAqLW1pbnQqKQogICAgICAgICAgICAgICAgICAgIGVjaG8gIi4ke2xpYm5h bWV9IgogICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICopCiAgICAgICAgICAgICAg ICAgICAgZWNobyAiLiR7bGlibmFtZX0uJHt2ZXJ9IgogICAgICAgICAgICAgICAgOzsKICAgICAg ICAgICAgZXNhYzsKICAgICAgICBkb25lOwogICAgZmkKfQpnZXRfbG9jYWx2ZXJzaW9uICgpIAp7 IAogICAgbG9jYWwgbHZfbGlzdCBpIHg7CiAgICBmb3IgaSBpbiAkKGxzICR7MX0vbG9jYWx2ZXJz aW9uKiAyPi9kZXYvbnVsbCk7CiAgICBkbwogICAgICAgIFtbIC1uICR7aS8vKn4qfSBdXSAmJiBs dl9saXN0PSIke2x2X2xpc3R9ICR7aX0iOwogICAgZG9uZTsKICAgIGZvciBpIGluICR7bHZfbGlz dH07CiAgICBkbwogICAgICAgIHg9IiR7eH0kKDwke2l9KSI7CiAgICBkb25lOwogICAgeD0ke3gv IC99OwogICAgZWNobyAke3h9Cn0KZ2V0X21ham9yX3ZlcnNpb24gKCkgCnsgCiAgICBsb2NhbCBj PSgkKGdldF9hbGxfdmVyc2lvbl9jb21wb25lbnRzICIkezE6LSR7UFZ9fSIpKTsKICAgIGVjaG8g JHtjWzBdfQp9CmdldF9tYWtlZmlsZV9leHRyYWN0X2Z1bmN0aW9uICgpIAp7IAogICAgbG9jYWwg YT0nJyBiPScnIG1rZnVuYz0nZ2V0ZmlsZXZhcic7CiAgICBhPSIkKGdldGZpbGV2YXIgVkVSU0lP TiAke0tFUk5FTF9NQUtFRklMRX0pIjsKICAgIGI9IiQoZ2V0ZmlsZXZhcl9ub2V4ZWMgVkVSU0lP TiAke0tFUk5FTF9NQUtFRklMRX0pIjsKICAgIFtbICIke2F9IiAhPSAiJHtifSIgXV0gJiYgbWtm dW5jPSdnZXRmaWxldmFyX25vZXhlYyc7CiAgICBlY2hvICIke21rZnVuY30iCn0KZ2V0X21vZG5h bWUgKCkgCnsgCiAgICBsb2NhbCBtb2RuYW1lOwogICAgbG9jYWwgdmVyPSQxOwogICAgY2FzZSAk e0NIT1NUfSBpbiAKICAgICAgICAqLWRhcndpbiopCiAgICAgICAgICAgIG1vZG5hbWU9ImJ1bmRs ZSIKICAgICAgICA7OwogICAgICAgICopCiAgICAgICAgICAgIG1vZG5hbWU9InNvIgogICAgICAg IDs7CiAgICBlc2FjOwogICAgZWNobyAiLiR7bW9kbmFtZX0iCn0KZ2V0X3J1bm5pbmdfdmVyc2lv biAoKSAKeyAKICAgIEtWX0ZVTEw9JCh1bmFtZSAtcik7CiAgICBpZiBbWyAtZiAke1JPT1R9L2xp Yi9tb2R1bGVzLyR7S1ZfRlVMTH0vc291cmNlL01ha2VmaWxlICYmIC1mICR7Uk9PVH0vbGliL21v ZHVsZXMvJHtLVl9GVUxMfS9idWlsZC9NYWtlZmlsZSBdXTsgdGhlbgogICAgICAgIEtFUk5FTF9E SVI9JChyZWFkbGluayAtZiAke1JPT1R9L2xpYi9tb2R1bGVzLyR7S1ZfRlVMTH0vc291cmNlKTsK ICAgICAgICBLQlVJTERfT1VUUFVUPSQocmVhZGxpbmsgLWYgJHtST09UfS9saWIvbW9kdWxlcy8k e0tWX0ZVTEx9L2J1aWxkKTsKICAgICAgICB1bnNldCBLVl9GVUxMOwogICAgICAgIGdldF92ZXJz aW9uOwogICAgICAgIHJldHVybiAkPzsKICAgIGVsc2UKICAgICAgICBpZiBbWyAtZiAke1JPT1R9 L2xpYi9tb2R1bGVzLyR7S1ZfRlVMTH0vc291cmNlL01ha2VmaWxlIF1dOyB0aGVuCiAgICAgICAg ICAgIEtFUk5FTF9ESVI9JChyZWFkbGluayAtZiAke1JPT1R9L2xpYi9tb2R1bGVzLyR7S1ZfRlVM TH0vc291cmNlKTsKICAgICAgICAgICAgdW5zZXQgS1ZfRlVMTDsKICAgICAgICAgICAgZ2V0X3Zl cnNpb247CiAgICAgICAgICAgIHJldHVybiAkPzsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGlm IFtbIC1mICR7Uk9PVH0vbGliL21vZHVsZXMvJHtLVl9GVUxMfS9idWlsZC9NYWtlZmlsZSBdXTsg dGhlbgogICAgICAgICAgICAgICAgS0VSTkVMX0RJUj0kKHJlYWRsaW5rIC1mICR7Uk9PVH0vbGli L21vZHVsZXMvJHtLVl9GVUxMfS9idWlsZCk7CiAgICAgICAgICAgICAgICB1bnNldCBLVl9GVUxM OwogICAgICAgICAgICAgICAgZ2V0X3ZlcnNpb247CiAgICAgICAgICAgICAgICByZXR1cm4gJD87 CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGxvY2FsIGt2X2Z1bGw9JHtLVl9GVUxM Ly9bLStfXSp9OwogICAgICAgICAgICAgICAgS1ZfTUFKT1I9JChnZXRfdmVyc2lvbl9jb21wb25l bnRfcmFuZ2UgMSAke2t2X2Z1bGx9KTsKICAgICAgICAgICAgICAgIEtWX01JTk9SPSQoZ2V0X3Zl cnNpb25fY29tcG9uZW50X3JhbmdlIDIgJHtrdl9mdWxsfSk7CiAgICAgICAgICAgICAgICBLVl9Q QVRDSD0kKGdldF92ZXJzaW9uX2NvbXBvbmVudF9yYW5nZSAzICR7a3ZfZnVsbH0pOwogICAgICAg ICAgICAgICAgS1ZfRVhUUkE9IiR7S1ZfRlVMTCMke0tWX01BSk9SfS4ke0tWX01JTk9SfSR7S1Zf UEFUQ0g6Ky4ke0tWX1BBVENIfX19IjsKICAgICAgICAgICAgICAgIDogJHtLVl9QQVRDSDo9MH07 CiAgICAgICAgICAgIGZpOwogICAgICAgIGZpOwogICAgZmk7CiAgICByZXR1cm4gMAp9CmdldF92 ZXJzaW9uICgpIAp7IAogICAgbG9jYWwgdG1wbG9jYWw7CiAgICBbIC1uICIke0tWX0ZVTEx9IiBd ICYmIHJldHVybiAwOwogICAgdW5zZXQgS1ZfRElSOwogICAgWyAteiAiJHtnZXRfdmVyc2lvbl93 YXJuaW5nX2RvbmV9IiBdICYmIHFlaW5mbyAiRGV0ZXJtaW5pbmcgdGhlIGxvY2F0aW9uIG9mIHRo ZSBrZXJuZWwgc291cmNlIGNvZGUiOwogICAgWyAtaCAiJHtLRVJORUxfRElSfSIgXSAmJiBLVl9E SVI9IiQocmVhZGxpbmsgLWYgJHtLRVJORUxfRElSfSkiOwogICAgWyAtZCAiJHtLRVJORUxfRElS fSIgXSAmJiBLVl9ESVI9IiR7S0VSTkVMX0RJUn0iOwogICAgaWYgWyAteiAiJHtLVl9ESVJ9IiBd OyB0aGVuCiAgICAgICAgaWYgWyAteiAiJHtnZXRfdmVyc2lvbl93YXJuaW5nX2RvbmV9IiBdOyB0 aGVuCiAgICAgICAgICAgIGdldF92ZXJzaW9uX3dhcm5pbmdfZG9uZT0xOwogICAgICAgICAgICBx ZXdhcm4gIlVuYWJsZSB0byBmaW5kIGtlcm5lbCBzb3VyY2VzIGF0ICR7S0VSTkVMX0RJUn0iOwog ICAgICAgICAgICBpZiBbICIke0tFUk5FTF9ESVJ9IiA9PSAiL3Vzci9zcmMvbGludXgiIF07IHRo ZW4KICAgICAgICAgICAgICAgIHFlaW5mbyAiUGxlYXNlIG1ha2Ugc3VyZSB0aGF0ICR7S0VSTkVM X0RJUn0gcG9pbnRzIGF0IHlvdXIgcnVubmluZyBrZXJuZWwsICI7CiAgICAgICAgICAgICAgICBx ZWluZm8gIihvciB0aGUga2VybmVsIHlvdSB3aXNoIHRvIGJ1aWxkIGFnYWluc3QpLiI7CiAgICAg ICAgICAgICAgICBxZWluZm8gIkFsdGVybmF0aXZlbHksIHNldCB0aGUgS0VSTkVMX0RJUiBlbnZp cm9ubWVudCB2YXJpYWJsZSB0byB0aGUga2VybmVsIHNvdXJjZXMgbG9jYXRpb24iOwogICAgICAg ICAgICBlbHNlCiAgICAgICAgICAgICAgICBxZWluZm8gIlBsZWFzZSBlbnN1cmUgdGhhdCB0aGUg S0VSTkVMX0RJUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBwb2ludHMgYXQgZnVsbCBMaW51eCBzb3Vy Y2VzIG9mIHRoZSBrZXJuZWwgeW91IHdpc2ggdG8gY29tcGlsZSBhZ2FpbnN0LiI7CiAgICAgICAg ICAgIGZpOwogICAgICAgIGZpOwogICAgICAgIHJldHVybiAxOwogICAgZmk7CiAgICBpZiBbIC16 ICIke0tCVUlMRF9PVVRQVVR9IiAtYSAtTCAiJHtLRVJORUxfRElSfS9zb3VyY2UiIF07IHRoZW4K ICAgICAgICBLQlVJTERfT1VUUFVUPSR7S0VSTkVMX0RJUn07CiAgICAgICAgS0VSTkVMX0RJUj0k KHJlYWRsaW5rIC1mICIke0tFUk5FTF9ESVJ9L3NvdXJjZSIpOwogICAgICAgIEtWX0RJUj0ke0tF Uk5FTF9ESVJ9OwogICAgZmk7CiAgICBpZiBbIC16ICIke2dldF92ZXJzaW9uX3dhcm5pbmdfZG9u ZX0iIF07IHRoZW4KICAgICAgICBxZWluZm8gIkZvdW5kIGtlcm5lbCBzb3VyY2UgZGlyZWN0b3J5 OiI7CiAgICAgICAgcWVpbmZvICIgICAgJHtLVl9ESVJ9IjsKICAgIGZpOwogICAgaWYgWyAhIC1z ICIke0tWX0RJUn0vTWFrZWZpbGUiIF07IHRoZW4KICAgICAgICBpZiBbIC16ICIke2dldF92ZXJz aW9uX3dhcm5pbmdfZG9uZX0iIF07IHRoZW4KICAgICAgICAgICAgZ2V0X3ZlcnNpb25fd2Fybmlu Z19kb25lPTE7CiAgICAgICAgICAgIHFlZXJyb3IgIkNvdWxkIG5vdCBmaW5kIGEgTWFrZWZpbGUg aW4gdGhlIGtlcm5lbCBzb3VyY2UgZGlyZWN0b3J5LiI7CiAgICAgICAgICAgIHFlZXJyb3IgIlBs ZWFzZSBlbnN1cmUgdGhhdCAke0tFUk5FTF9ESVJ9IHBvaW50cyB0byBhIGNvbXBsZXRlIHNldCBv ZiBMaW51eCBzb3VyY2VzIjsKICAgICAgICBmaTsKICAgICAgICByZXR1cm4gMTsKICAgIGZpOwog ICAgbG9jYWwgT1VUUFVUX0RJUj0ke0tCVUlMRF9PVVRQVVR9OwogICAgS0VSTkVMX01BS0VGSUxF PSIke0tWX0RJUn0vTWFrZWZpbGUiOwogICAgaWYgW1sgLXogJHtPVVRQVVRfRElSfSBdXTsgdGhl bgogICAgICAgIGxvY2FsIG1rZnVuYz0kKGdldF9tYWtlZmlsZV9leHRyYWN0X2Z1bmN0aW9uICIk e0tFUk5FTF9NQUtFRklMRX0iKTsKICAgICAgICBPVVRQVVRfRElSPSQoJHtta2Z1bmN9IEtCVUlM RF9PVVRQVVQgIiR7S0VSTkVMX01BS0VGSUxFfSIpOwogICAgZmk7CiAgICBLVl9NQUpPUj0kKGdl dGZpbGV2YXJfbm9leGVjIFZFUlNJT04gIiR7S0VSTkVMX01BS0VGSUxFfSIpOwogICAgS1ZfTUlO T1I9JChnZXRmaWxldmFyX25vZXhlYyBQQVRDSExFVkVMICIke0tFUk5FTF9NQUtFRklMRX0iKTsK ICAgIEtWX1BBVENIPSQoZ2V0ZmlsZXZhcl9ub2V4ZWMgU1VCTEVWRUwgIiR7S0VSTkVMX01BS0VG SUxFfSIpOwogICAgS1ZfRVhUUkE9JChnZXRmaWxldmFyX25vZXhlYyBFWFRSQVZFUlNJT04gIiR7 S0VSTkVMX01BS0VGSUxFfSIpOwogICAgaWYgWyAteiAiJHtLVl9NQUpPUn0iIC1vIC16ICIke0tW X01JTk9SfSIgLW8gLXogIiR7S1ZfUEFUQ0h9IiBdOyB0aGVuCiAgICAgICAgaWYgWyAteiAiJHtn ZXRfdmVyc2lvbl93YXJuaW5nX2RvbmV9IiBdOyB0aGVuCiAgICAgICAgICAgIGdldF92ZXJzaW9u X3dhcm5pbmdfZG9uZT0xOwogICAgICAgICAgICBxZWVycm9yICJDb3VsZCBub3QgZGV0ZWN0IGtl cm5lbCB2ZXJzaW9uLiI7CiAgICAgICAgICAgIHFlZXJyb3IgIlBsZWFzZSBlbnN1cmUgdGhhdCAk e0tFUk5FTF9ESVJ9IHBvaW50cyB0byBhIGNvbXBsZXRlIHNldCBvZiBMaW51eCBzb3VyY2VzLiI7 CiAgICAgICAgZmk7CiAgICAgICAgcmV0dXJuIDE7CiAgICBmaTsKICAgIE9VVFBVVF9ESVI9IiR7 T1VUUFVUX0RJUjotL2xpYi9tb2R1bGVzLyR7S1ZfTUFKT1J9LiR7S1ZfTUlOT1J9LiR7S1ZfUEFU Q0h9JHtLVl9FWFRSQX0vYnVpbGR9IjsKICAgIFsgLWggIiR7T1VUUFVUX0RJUn0iIF0gJiYgS1Zf T1VUX0RJUj0iJChyZWFkbGluayAtZiAke09VVFBVVF9ESVJ9KSI7CiAgICBbIC1kICIke09VVFBV VF9ESVJ9IiBdICYmIEtWX09VVF9ESVI9IiR7T1VUUFVUX0RJUn0iOwogICAgaWYgWyAtbiAiJHtL Vl9PVVRfRElSfSIgXTsgdGhlbgogICAgICAgIHFlaW5mbyAiRm91bmQga2VybmVsIG9iamVjdCBk aXJlY3Rvcnk6IjsKICAgICAgICBxZWluZm8gIiAgICAke0tWX09VVF9ESVJ9IjsKICAgIGZpOwog ICAgS1ZfT1VUX0RJUj0iJHtLVl9PVVRfRElSOi0ke0tWX0RJUn19IjsKICAgIGlmIFsgLXMgIiR7 S1ZfT1VUX0RJUn0iL2luY2x1ZGUvY29uZmlnL2tlcm5lbC5yZWxlYXNlIF07IHRoZW4KICAgICAg ICBLVl9MT0NBTD0kKDwiJHtLVl9PVVRfRElSfSIvaW5jbHVkZS9jb25maWcva2VybmVsLnJlbGVh c2UpOwogICAgZWxzZQogICAgICAgIGlmIFsgLXMgIiR7S1ZfT1VUX0RJUn0iLy5rZXJuZWxyZWxl YXNlIF07IHRoZW4KICAgICAgICAgICAgS1ZfTE9DQUw9JCg8IiR7S1ZfT1VUX0RJUn0iLy5rZXJu ZWxyZWxlYXNlKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIEtWX0xPQ0FMPTsKICAgICAgICBm aTsKICAgIGZpOwogICAgdG1wbG9jYWw9JHtLVl9MT0NBTCMke0tWX01BSk9SfS4ke0tWX01JTk9S fS4ke0tWX1BBVENIfSR7S1ZfRVhUUkF9fTsKICAgIGlmIFsgIiRLVl9MT0NBTCIgPSAiJHRtcGxv Y2FsIiBdOyB0aGVuCiAgICAgICAgS1ZfTE9DQUw9OwogICAgZWxzZQogICAgICAgIEtWX0xPQ0FM PSR0bXBsb2NhbDsKICAgIGZpOwogICAgS1ZfRlVMTD0iJHtLVl9NQUpPUn0uJHtLVl9NSU5PUn0u JHtLVl9QQVRDSH0ke0tWX0VYVFJBfSR7S1ZfTE9DQUx9IjsKICAgIHFlaW5mbyAiRm91bmQgc291 cmNlcyBmb3Iga2VybmVsIHZlcnNpb246IjsKICAgIHFlaW5mbyAiICAgICR7S1ZfRlVMTH0iOwog ICAgcmV0dXJuIDAKfQpnZXRfdmVyc2lvbl9jb21wb25lbnRfY291bnQgKCkgCnsgCiAgICBsb2Nh bCBhPSgkKGdldF92ZXJzaW9uX2NvbXBvbmVudHMgIiR7MTotJHtQVn19IikpOwogICAgZWNobyAk eyNhW0BdfQp9CmdldF92ZXJzaW9uX2NvbXBvbmVudF9yYW5nZSAoKSAKeyAKICAgIGVzaG9wdHNf cHVzaCAtcyBleHRnbG9iOwogICAgbG9jYWwgYyB2PSIkezI6LSR7UFZ9fSIgcmFuZ2U9IiR7MX0i IHJhbmdlX3N0YXJ0IHJhbmdlX2VuZDsKICAgIGxvY2FsIC1pIGk9LTEgaj0wOwogICAgYz0oJChn ZXRfYWxsX3ZlcnNpb25fY29tcG9uZW50cyAiJHt2fSIpKTsKICAgIHJhbmdlX3N0YXJ0PSR7cmFu Z2UlLSp9OwogICAgcmFuZ2Vfc3RhcnQ9JHtyYW5nZV9zdGFydDotMX07CiAgICByYW5nZV9lbmQ9 JHtyYW5nZSMqLX07CiAgICByYW5nZV9lbmQ9JHtyYW5nZV9lbmQ6LSR7I2NbQF19fTsKICAgIHdo aWxlICgoaiA8IHJhbmdlX3N0YXJ0KSk7IGRvCiAgICAgICAgaSs9MTsKICAgICAgICAoKGkgPiAk eyNjW0BdfSkpICYmIGVzaG9wdHNfcG9wICYmIHJldHVybjsKICAgICAgICBbWyAtbiAiJHtjW2ld Ly9bLS5fXX0iIF1dICYmIGorPTE7CiAgICBkb25lOwogICAgd2hpbGUgKChqIDw9IHJhbmdlX2Vu ZCkpOyBkbwogICAgICAgIGVjaG8gLW4gJHtjW2ldfTsKICAgICAgICAoKGkgPiAkeyNjW0BdfSkp ICYmIGVzaG9wdHNfcG9wICYmIHJldHVybjsKICAgICAgICBbWyAtbiAiJHtjW2ldLy9bLS5fXX0i IF1dICYmIGorPTE7CiAgICAgICAgaSs9MTsKICAgIGRvbmU7CiAgICBlc2hvcHRzX3BvcAp9Cmdl dF92ZXJzaW9uX2NvbXBvbmVudHMgKCkgCnsgCiAgICBsb2NhbCBjPSQoZ2V0X2FsbF92ZXJzaW9u X2NvbXBvbmVudHMgIiR7MTotJHtQVn19Iik7CiAgICBlY2hvICR7Yy8vWy0uX10vIH0KfQpnZXRm aWxldmFyICgpIAp7IAogICAgbG9jYWwgRVJST1IgYmFzZWZuYW1lIGJhc2VkbmFtZSBteUFSQ0g9 IiR7QVJDSH0iIE09IiR7U30iOwogICAgRVJST1I9MDsKICAgIFsgLXogIiR7MX0iIF0gJiYgRVJS T1I9MTsKICAgIFsgISAtZiAiJHsyfSIgXSAmJiBFUlJPUj0xOwogICAgaWYgWyAiJHtFUlJPUn0i ID0gMSBdOyB0aGVuCiAgICAgICAgZWNobyAtZSAiXG4iOwogICAgICAgIGVlcnJvciAiZ2V0Zmls ZXZhciByZXF1aXJlcyAyIHZhcmlhYmxlcywgd2l0aCB0aGUgc2Vjb25kIGEgdmFsaWQgZmlsZS4i OwogICAgICAgIGVlcnJvciAiICAgZ2V0ZmlsZXZhciA8VkFSSUFCTEU+IDxDT05GSUdGSUxFPiI7 CiAgICBlbHNlCiAgICAgICAgYmFzZWZuYW1lPSIkKGJhc2VuYW1lICR7Mn0pIjsKICAgICAgICBi YXNlZG5hbWU9IiQoZGlybmFtZSAkezJ9KSI7CiAgICAgICAgdW5zZXQgQVJDSDsKICAgICAgICBb WyAke0VBUEk6LTB9ID09IFswMTIzXSBdXSAmJiBmdW5jdGlvbiBub25mYXRhbCAoKSAKICAgICAg ICB7IAogICAgICAgICAgICAiJEAiCiAgICAgICAgfTsKICAgICAgICBjYXNlICR7RUJVSUxEX1BI QVNFX0ZVTkN9IGluIAogICAgICAgICAgICBwa2dfaW5mbyB8IHBrZ19ub2ZldGNoIHwgcGtnX3By ZXRlbmQpCiAgICAgICAgICAgICAgICBNPSIke1R9IgogICAgICAgICAgICA7OwogICAgICAgIGVz YWM7CiAgICAgICAgZWNobyAtZSAiZTpcXG5cXHRAZWNobyBcJCgkezF9KVxcbmluY2x1ZGUgJHti YXNlZm5hbWV9IiB8IG5vbmZhdGFsIGVtYWtlIC1DICIke2Jhc2VkbmFtZX0iIE09IiR7TX0iICR7 QlVJTERfRklYRVN9IC1zIC1mIC0gMj4gL2Rldi9udWxsOwogICAgICAgIEFSQ0g9JHtteUFSQ0h9 OwogICAgZmkKfQpnZXRmaWxldmFyX25vZXhlYyAoKSAKeyAKICAgIGxvY2FsIEVSUk9SIGJhc2Vm bmFtZSBiYXNlZG5hbWUgbXljYXQgbXlBUkNIPSIke0FSQ0h9IjsKICAgIEVSUk9SPTA7CiAgICBt eWNhdD0nY2F0JzsKICAgIFsgLXogIiR7MX0iIF0gJiYgRVJST1I9MTsKICAgIFsgISAtZiAiJHsy fSIgXSAmJiBFUlJPUj0xOwogICAgWyAiJHsyJS5nen0iICE9ICIkezJ9IiBdICYmIG15Y2F0PSd6 Y2F0JzsKICAgIGlmIFsgIiR7RVJST1J9IiA9IDEgXTsgdGhlbgogICAgICAgIGVjaG8gLWUgIlxu IjsKICAgICAgICBlZXJyb3IgImdldGZpbGV2YXJfbm9leGVjIHJlcXVpcmVzIDIgdmFyaWFibGVz LCB3aXRoIHRoZSBzZWNvbmQgYSB2YWxpZCBmaWxlLiI7CiAgICAgICAgZWVycm9yICIgICBnZXRm aWxldmFyX25vZXhlYyA8VkFSSUFCTEU+IDxDT05GSUdGSUxFPiI7CiAgICBlbHNlCiAgICAgICAg JHtteWNhdH0gIiR7Mn0iIHwgc2VkIC1uIC1lICIvXltbOnNwYWNlOl1dKiR7MX1bWzpzcGFjZTpd XSo6XFw/PVtbOnNwYWNlOl1dKlwoLipcKVwkL3sKCQkJcyxeW149XSpbWzpzcGFjZTpdXSo9W1s6 c3BhY2U6XV0qLCxnIDsKCQkJcyxbWzpzcGFjZTpdXSpcJCwsZyA7CgkJCXAKCQl9IjsKICAgIGZp Cn0KaGFzX211bHRpbGliX3Byb2ZpbGUgKCkgCnsgCiAgICBbIC1uICIke01VTFRJTElCX0FCSVN9 IiAtYSAiJHtNVUxUSUxJQl9BQklTfSIgIT0gIiR7TVVMVElMSUJfQUJJUy8gL30iIF0KfQpob3N0 LWlzLXBheCAoKSAKeyAKICAgIGdyZXAgLXFzIF5QYVg6IC9wcm9jL3NlbGYvc3RhdHVzCn0KaW5f aXVzZSAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIke0B9IjsK ICAgIFtbICR7I30gLWVxIDEgXV0gfHwgZGllICJJbnZhbGlkIGFyZ3MgdG8gJHtGVU5DTkFNRX0o KSI7CiAgICBsb2NhbCBmbGFnPSR7MX07CiAgICBsb2NhbCBsaXVzZT0oJHtJVVNFfSk7CiAgICBo YXMgIiR7ZmxhZ30iICIke2xpdXNlW0BdI1srLV19Igp9CmlzX2ZpbmFsX2FiaSAoKSAKeyAKICAg IGhhc19tdWx0aWxpYl9wcm9maWxlIHx8IHJldHVybiAwOwogICAgc2V0IC0tICQoZ2V0X2luc3Rh bGxfYWJpcyk7CiAgICBsb2NhbCBMQVNUX0FCST0kIzsKICAgIFtbICR7IUxBU1RfQUJJfSA9PSAk e0FCSX0gXV0KfQppc2RpZ2l0ICgpIAp7IAogICAgbG9jYWwgZDsKICAgIGZvciBkIGluICIkQCI7 CiAgICBkbwogICAgICAgIFtbICR7ZDotYmFkfSA9PSAqWyEwLTldKiBdXSAmJiByZXR1cm4gMTsK ICAgIGRvbmU7CiAgICByZXR1cm4gMAp9Cmtlcm5lbF9pcyAoKSAKeyAKICAgIGxpbnV4LWluZm9f Z2V0X2FueV92ZXJzaW9uOwogICAgbG9jYWwgb3BlcmF0b3IgdGVzdCB2YWx1ZTsKICAgIGNhc2Ug JHsxIy19IGluIAogICAgICAgIGx0KQogICAgICAgICAgICBvcGVyYXRvcj0iLWx0IjsKICAgICAg ICAgICAgc2hpZnQKICAgICAgICA7OwogICAgICAgIGd0KQogICAgICAgICAgICBvcGVyYXRvcj0i LWd0IjsKICAgICAgICAgICAgc2hpZnQKICAgICAgICA7OwogICAgICAgIGxlKQogICAgICAgICAg ICBvcGVyYXRvcj0iLWxlIjsKICAgICAgICAgICAgc2hpZnQKICAgICAgICA7OwogICAgICAgIGdl KQogICAgICAgICAgICBvcGVyYXRvcj0iLWdlIjsKICAgICAgICAgICAgc2hpZnQKICAgICAgICA7 OwogICAgICAgIGVxKQogICAgICAgICAgICBvcGVyYXRvcj0iLWVxIjsKICAgICAgICAgICAgc2hp ZnQKICAgICAgICA7OwogICAgICAgICopCiAgICAgICAgICAgIG9wZXJhdG9yPSItZXEiCiAgICAg ICAgOzsKICAgIGVzYWM7CiAgICBbWyAkIyAtZ3QgMyBdXSAmJiBkaWUgIkVycm9yIGluIGtlcm5l bC0yX2tlcm5lbF9pcygpOiB0b28gbWFueSBwYXJhbWV0ZXJzIjsKICAgIDogJCgoIHRlc3QgPSAo S1ZfTUFKT1IgPDwgMTYpICsgKEtWX01JTk9SIDw8IDgpICsgS1ZfUEFUQ0ggKSk7CiAgICA6ICQo KCB2YWx1ZSA9ICgkezE6LSR7S1ZfTUFKT1J9fSA8PCAxNikgKyAoJHsyOi0ke0tWX01JTk9SfX0g PDwgOCkgKyAkezM6LSR7S1ZfUEFUQ0h9fSApKTsKICAgIFsgJHt0ZXN0fSAke29wZXJhdG9yfSAk e3ZhbHVlfSBdCn0KbGludXgtaW5mb19nZXRfYW55X3ZlcnNpb24gKCkgCnsgCiAgICBnZXRfdmVy c2lvbjsKICAgIGlmIFtbICQ/IC1uZSAwIF1dOyB0aGVuCiAgICAgICAgZXdhcm4gIlVuYWJsZSB0 byBjYWxjdWxhdGUgTGludXggS2VybmVsIHZlcnNpb24gZm9yIGJ1aWxkLCBhdHRlbXB0aW5nIHRv IHVzZSBydW5uaW5nIHZlcnNpb24iOwogICAgICAgIGdldF9ydW5uaW5nX3ZlcnNpb247CiAgICBm aQp9CmxpbnV4LWluZm9fcGtnX3NldHVwICgpIAp7IAogICAgbGludXgtaW5mb19nZXRfYW55X3Zl cnNpb247CiAgICBpZiBrZXJuZWxfaXMgMiA0OyB0aGVuCiAgICAgICAgaWYgWyAiJCggZ2NjLW1h am9yLXZlcnNpb24gKSIgLWVxICI0IiBdOyB0aGVuCiAgICAgICAgICAgIGVjaG87CiAgICAgICAg ICAgIGV3YXJuICJCZSB3YXJuZWQgISEgPj1zeXMtZGV2ZWwvZ2NjLTQuMC4wIGlzbid0IHN1cHBv cnRlZCB3aXRoIjsKICAgICAgICAgICAgZXdhcm4gImxpbnV4LTIuNCAob3IgbW9kdWxlcyBidWls ZGluZyBhZ2FpbnN0IGEgbGludXgtMi40IGtlcm5lbCkhIjsKICAgICAgICAgICAgZWNobzsKICAg ICAgICAgICAgZXdhcm4gIkVpdGhlciBzd2l0Y2ggdG8gYW5vdGhlciBnY2MtdmVyc2lvbiAodmlh IGdjYy1jb25maWcpIG9yIHVzZSBhIjsKICAgICAgICAgICAgZXdhcm4gIm5ld2VyIGtlcm5lbCB0 aGF0IHN1cHBvcnRzIGdjYy00LiI7CiAgICAgICAgICAgIGVjaG87CiAgICAgICAgICAgIGV3YXJu ICJBbHNvIGJlIGF3YXJlIHRoYXQgYnVncmVwb3J0cyBhYm91dCBnY2MtNCBub3Qgd29ya2luZyI7 CiAgICAgICAgICAgIGV3YXJuICJ3aXRoIGxpbnV4LTIuNCBiYXNlZCBlYnVpbGRzIHdpbGwgYmUg Y2xvc2VkIGFzIElOVkFMSUQhIjsKICAgICAgICAgICAgZWNobzsKICAgICAgICAgICAgZXBhdXNl IDEwOwogICAgICAgIGZpOwogICAgZmk7CiAgICBbIC1uICIke0NPTkZJR19DSEVDS30iIF0gJiYg Y2hlY2tfZXh0cmFfY29uZmlnCn0KbGludXgtbW9kX3BrZ19wb3N0aW5zdCAoKSAKeyAKICAgIGRl YnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICQqOwogICAgWyAtbiAiJHtNT0RVTEVTX09Q VElPTkFMX1VTRX0iIF0gJiYgdXNlICEke01PRFVMRVNfT1BUSU9OQUxfVVNFfSAmJiByZXR1cm47 CiAgICAke1VQREFURV9ERVBNT0R9ICYmIHVwZGF0ZV9kZXBtb2Q7CiAgICAke1VQREFURV9NT0RV TEVEQn0gJiYgdXBkYXRlX21vZHVsZWRiCn0KbGludXgtbW9kX3BrZ19wb3N0cm0gKCkgCnsgCiAg ICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAkKjsKICAgIFsgLW4gIiR7TU9EVUxF U19PUFRJT05BTF9VU0V9IiBdICYmIHVzZSAhJHtNT0RVTEVTX09QVElPTkFMX1VTRX0gJiYgcmV0 dXJuOwogICAgcmVtb3ZlX21vZHVsZWRiCn0KbGludXgtbW9kX3BrZ19wcmVpbnN0ICgpIAp7IAog ICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gJCo7CiAgICBbIC1uICIke01PRFVM RVNfT1BUSU9OQUxfVVNFfSIgXSAmJiB1c2UgISR7TU9EVUxFU19PUFRJT05BTF9VU0V9ICYmIHJl dHVybjsKICAgIFsgLWQgIiR7RH1saWIvbW9kdWxlcyIgXSAmJiBVUERBVEVfREVQTU9EPXRydWUg fHwgVVBEQVRFX0RFUE1PRD1mYWxzZTsKICAgIFsgLWQgIiR7RH1saWIvbW9kdWxlcyIgXSAmJiBV UERBVEVfTU9EVUxFREI9dHJ1ZSB8fCBVUERBVEVfTU9EVUxFREI9ZmFsc2UKfQpsaW51eC1tb2Rf cGtnX3NldHVwICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gJCo7 CiAgICBbIC1uICIke01PRFVMRVNfT1BUSU9OQUxfVVNFfSIgXSAmJiB1c2UgISR7TU9EVUxFU19P UFRJT05BTF9VU0V9ICYmIHJldHVybjsKICAgIGxvY2FsIGlzX2Jpbj0iJHtNRVJHRV9UWVBFfSI7 CiAgICBpZiBoYXMgJHtFQVBJfSAwIDEgMiAzOyB0aGVuCiAgICAgICAgaXNfYmluPSR7RU1FUkdF X0ZST019OwogICAgZmk7CiAgICBpZiBbWyAke2lzX2Jpbn0gPT0gYmluYXJ5IF1dOyB0aGVuCiAg ICAgICAgbGludXgtbW9kX3BrZ19zZXR1cF9iaW5hcnk7CiAgICAgICAgcmV0dXJuOwogICAgZmk7 CiAgICBsaW51eC1pbmZvX3BrZ19zZXR1cDsKICAgIHJlcXVpcmVfY29uZmlndXJlZF9rZXJuZWw7 CiAgICBjaGVja19rZXJuZWxfYnVpbHQ7CiAgICBzdHJpcF9tb2R1bGVuYW1lczsKICAgIFtbIC1u ICR7TU9EVUxFX05BTUVTfSBdXSAmJiBjaGVja19tb2R1bGVzX3N1cHBvcnRlZDsKICAgIHNldF9r dm9iagp9CmxpbnV4LW1vZF9wa2dfc2V0dXBfYmluYXJ5ICgpIAp7IAogICAgZGVidWctcHJpbnQt ZnVuY3Rpb24gJHtGVU5DTkFNRX0gJCo7CiAgICBsb2NhbCBuZXdfQ09ORklHX0NIRUNLOwogICAg Zm9yIGNvbmZpZyBpbiAkQ09ORklHX0NIRUNLOwogICAgZG8KICAgICAgICBvcHRpb25hbD0nfic7 CiAgICAgICAgW1sgJHtjb25maWc6MDoxfSA9PSAifiIgXV0gJiYgb3B0aW9uYWw9Jyc7CiAgICAg ICAgbmV3X0NPTkZJR19DSEVDSz0iJHtuZXdfQ09ORklHX0NIRUNLfSAke29wdGlvbmFsfSR7Y29u ZmlnfSI7CiAgICBkb25lOwogICAgZXhwb3J0IENPTkZJR19DSEVDSz0iJHtuZXdfQ09ORklHX0NI RUNLfSI7CiAgICBsaW51eC1pbmZvX3BrZ19zZXR1cAp9CmxpbnV4LW1vZF9zcmNfY29tcGlsZSAo KSAKeyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICQqOwogICAgWyAtbiAi JHtNT0RVTEVTX09QVElPTkFMX1VTRX0iIF0gJiYgdXNlICEke01PRFVMRVNfT1BUSU9OQUxfVVNF fSAmJiByZXR1cm47CiAgICBsb2NhbCBtb2R1bGVuYW1lIGxpYmRpciBzcmNkaXIgb2JqZGlyIGkg biBteUFCST0iJHtBQkl9IjsKICAgIHNldF9hcmNoX3RvX2tlcm5lbDsKICAgIEFCST0iJHtLRVJO RUxfQUJJfSI7CiAgICBCVUlMRF9UQVJHRVRTPSR7QlVJTERfVEFSR0VUUzotY2xlYW4gbW9kdWxl fTsKICAgIHN0cmlwX21vZHVsZW5hbWVzOwogICAgY2QgIiR7U30iOwogICAgdG91Y2ggTW9kdWxl LnN5bXZlcnM7CiAgICBmb3IgaSBpbiAke01PRFVMRV9OQU1FU307CiAgICBkbwogICAgICAgIHVu c2V0IGxpYmRpciBzcmNkaXIgb2JqZGlyOwogICAgICAgIGZvciBuIGluICQoZmluZF9tb2R1bGVf cGFyYW1zICR7aX0pOwogICAgICAgIGRvCiAgICAgICAgICAgIGV2YWwgJHtuLzoqfT0ke24vKjov fTsKICAgICAgICBkb25lOwogICAgICAgIGxpYmRpcj0ke2xpYmRpcjotbWlzY307CiAgICAgICAg c3JjZGlyPSR7c3JjZGlyOi0ke1N9fTsKICAgICAgICBvYmpkaXI9JHtvYmpkaXI6LSR7c3JjZGly fX07CiAgICAgICAgaWYgWyAhIC1mICIke3NyY2Rpcn0vLmJ1aWx0IiBdOyB0aGVuCiAgICAgICAg ICAgIGNkICIke3NyY2Rpcn0iOwogICAgICAgICAgICBsbiAtcyAiJHtTfSIvTW9kdWxlLnN5bXZl cnMgTW9kdWxlLnN5bXZlcnM7CiAgICAgICAgICAgIGVpbmZvICJQcmVwYXJpbmcgJHttb2R1bGVu YW1lfSBtb2R1bGUiOwogICAgICAgICAgICBpZiBbWyAtbiAke0VDT05GX1BBUkFNU30gXV07IHRo ZW4KICAgICAgICAgICAgICAgIGVjb25mICR7RUNPTkZfUEFSQU1TfSB8fCBkaWUgIlVuYWJsZSB0 byBydW4gZWNvbmYgJHtFQ09ORl9QQVJBTVN9IjsKICAgICAgICAgICAgZmk7CiAgICAgICAgICAg IGV2YWwgImVtYWtlIEhPU1RDQz1cIiQodGMtZ2V0QlVJTERfQ0MpXCIgCQkJCQkJQ1JPU1NfQ09N UElMRT0ke0NIT1NUfS0gCQkJCQkJTERGTEFHUz1cIiQoZ2V0X2FiaV9MREZMQUdTKVwiIAkJCQkJ CSR7QlVJTERfRklYRVN9IAkJCQkJCSR7QlVJTERfUEFSQU1TfSAJCQkJCQkke0JVSUxEX1RBUkdF VFN9ICIgfHwgZGllICJVbmFibGUgdG8gZW1ha2UgSE9TVENDPSIkKHRjLWdldEJVSUxEX0NDKSIg Q1JPU1NfQ09NUElMRT0ke0NIT1NUfS0gTERGTEFHUz0iJChnZXRfYWJpX0xERkxBR1MpIiAke0JV SUxEX0ZJWEVTfSAke0JVSUxEX1BBUkFNU30gJHtCVUlMRF9UQVJHRVRTfSI7CiAgICAgICAgICAg IGNkICIke09MRFBXRH0iOwogICAgICAgICAgICB0b3VjaCAiJHtzcmNkaXJ9Ii8uYnVpbHQ7CiAg ICAgICAgZmk7CiAgICBkb25lOwogICAgc2V0X2FyY2hfdG9fcG9ydGFnZTsKICAgIEFCST0iJHtt eUFCSX0iCn0KbGludXgtbW9kX3NyY19pbnN0YWxsICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVu Y3Rpb24gJHtGVU5DTkFNRX0gJCo7CiAgICBbIC1uICIke01PRFVMRVNfT1BUSU9OQUxfVVNFfSIg XSAmJiB1c2UgISR7TU9EVUxFU19PUFRJT05BTF9VU0V9ICYmIHJldHVybjsKICAgIGxvY2FsIG1v ZHVsZW5hbWUgbGliZGlyIHNyY2RpciBvYmpkaXIgaSBuOwogICAgc3RyaXBfbW9kdWxlbmFtZXM7 CiAgICBmb3IgaSBpbiAke01PRFVMRV9OQU1FU307CiAgICBkbwogICAgICAgIHVuc2V0IGxpYmRp ciBzcmNkaXIgb2JqZGlyOwogICAgICAgIGZvciBuIGluICQoZmluZF9tb2R1bGVfcGFyYW1zICR7 aX0pOwogICAgICAgIGRvCiAgICAgICAgICAgIGV2YWwgJHtuLzoqfT0ke24vKjovfTsKICAgICAg ICBkb25lOwogICAgICAgIGxpYmRpcj0ke2xpYmRpcjotbWlzY307CiAgICAgICAgc3JjZGlyPSR7 c3JjZGlyOi0ke1N9fTsKICAgICAgICBvYmpkaXI9JHtvYmpkaXI6LSR7c3JjZGlyfX07CiAgICAg ICAgZWluZm8gIkluc3RhbGxpbmcgJHttb2R1bGVuYW1lfSBtb2R1bGUiOwogICAgICAgIGNkICIk e29iamRpcn0iIHx8IGRpZSAiJHtvYmpkaXJ9IGRvZXMgbm90IGV4aXN0IjsKICAgICAgICBpbnNp bnRvIC9saWIvbW9kdWxlcy8ke0tWX0ZVTEx9LyR7bGliZGlyfTsKICAgICAgICBkb2lucyAke21v ZHVsZW5hbWV9LiR7S1ZfT0JKfSB8fCBkaWUgImRvaW5zICR7bW9kdWxlbmFtZX0uJHtLVl9PQkp9 IGZhaWxlZCI7CiAgICAgICAgY2QgIiR7T0xEUFdEfSI7CiAgICAgICAgZ2VuZXJhdGVfbW9kdWxl c2QgIiR7b2JqZGlyfS8ke21vZHVsZW5hbWV9IjsKICAgIGRvbmUKfQpsaW51eF9jaGtjb25maWdf YnVpbHRpbiAoKSAKeyAKICAgIGxpbnV4X2NvbmZpZ19xYV9jaGVjayBsaW51eF9jaGtjb25maWdf YnVpbHRpbjsKICAgIFtbICQoZ2V0ZmlsZXZhcl9ub2V4ZWMgIkNPTkZJR18kMSIgIiQobGludXhf Y29uZmlnX3BhdGgpIikgPT0geSBdXQp9CmxpbnV4X2Noa2NvbmZpZ19tb2R1bGUgKCkgCnsgCiAg ICBsaW51eF9jb25maWdfcWFfY2hlY2sgbGludXhfY2hrY29uZmlnX21vZHVsZTsKICAgIFtbICQo Z2V0ZmlsZXZhcl9ub2V4ZWMgIkNPTkZJR18kMSIgIiQobGludXhfY29uZmlnX3BhdGgpIikgPT0g bSBdXQp9CmxpbnV4X2Noa2NvbmZpZ19wcmVzZW50ICgpIAp7IAogICAgbGludXhfY29uZmlnX3Fh X2NoZWNrIGxpbnV4X2Noa2NvbmZpZ19wcmVzZW50OwogICAgW1sgJChnZXRmaWxldmFyX25vZXhl YyAiQ09ORklHXyQxIiAiJChsaW51eF9jb25maWdfcGF0aCkiKSA9PSBbbXldIF1dCn0KbGludXhf Y2hrY29uZmlnX3N0cmluZyAoKSAKeyAKICAgIGxpbnV4X2NvbmZpZ19xYV9jaGVjayBsaW51eF9j aGtjb25maWdfc3RyaW5nOwogICAgZ2V0ZmlsZXZhcl9ub2V4ZWMgIkNPTkZJR18kMSIgIiQobGlu dXhfY29uZmlnX3BhdGgpIgp9CmxpbnV4X2NvbmZpZ19iaW5fZXhpc3RzICgpIAp7IAogICAgZXhw b3J0IF9MSU5VWF9DT05GSUdfRVhJU1RTX0RPTkU9MTsKICAgIFtbIC1zIC9wcm9jL2NvbmZpZy5n eiBdXQp9CmxpbnV4X2NvbmZpZ19leGlzdHMgKCkgCnsgCiAgICBsaW51eF9jb25maWdfc3JjX2V4 aXN0cyB8fCBsaW51eF9jb25maWdfYmluX2V4aXN0cwp9CmxpbnV4X2NvbmZpZ19wYXRoICgpIAp7 IAogICAgaWYgbGludXhfY29uZmlnX3NyY19leGlzdHM7IHRoZW4KICAgICAgICBlY2hvICIke0tW X09VVF9ESVJ9Ly5jb25maWciOwogICAgZWxzZQogICAgICAgIGlmIGxpbnV4X2NvbmZpZ19iaW5f ZXhpc3RzOyB0aGVuCiAgICAgICAgICAgIGVjaG8gIi9wcm9jL2NvbmZpZy5neiI7CiAgICAgICAg ZWxzZQogICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICBmaTsKICAgIGZpCn0KbGludXhfY29u ZmlnX3FhX2NoZWNrICgpIAp7IAogICAgbG9jYWwgZj0iJDEiOwogICAgaWYgWyAteiAiJHtfTElO VVhfQ09ORklHX0VYSVNUU19ET05FfSIgXTsgdGhlbgogICAgICAgIGV3YXJuICJRQTogWW91IGNh bGxlZCAkZiBiZWZvcmUgYW55IGxpbnV4X2NvbmZpZ19leGlzdHMhIjsKICAgICAgICBld2FybiAi UUE6IFRoZSByZXR1cm4gdmFsdWUgb2YgJGYgd2lsbCBOT1QgZ3VhcmFudGVlZCBsYXRlciEiOwog ICAgZmkKfQpsaW51eF9jb25maWdfc3JjX2V4aXN0cyAoKSAKeyAKICAgIGV4cG9ydCBfTElOVVhf Q09ORklHX0VYSVNUU19ET05FPTE7CiAgICBbWyAtbiAke0tWX09VVF9ESVJ9ICYmIC1zICR7S1Zf T1VUX0RJUn0vLmNvbmZpZyBdXQp9Cmxpc3QtcGF4YWJsZXMgKCkgCnsgCiAgICBmaWxlICIkQCIg Mj4gL2Rldi9udWxsIHwgZ3JlcCAtRSAnRUxGLiooZXhlY3V0YWJsZXxzaGFyZWQgb2JqZWN0KScg fCBzZWQgLWUgJ3MvOiAuKiQvLycKfQptYWtlX2Rlc2t0b3BfZW50cnkgKCkgCnsgCiAgICBbWyAt eiAkMSBdXSAmJiBkaWUgIm1ha2VfZGVza3RvcF9lbnRyeTogWW91IG11c3Qgc3BlY2lmeSB0aGUg ZXhlY3V0YWJsZSI7CiAgICBsb2NhbCBleGVjPSR7MX07CiAgICBsb2NhbCBuYW1lPSR7MjotJHtQ Tn19OwogICAgbG9jYWwgaWNvbj0kezM6LSR7UE59fTsKICAgIGxvY2FsIHR5cGU9JHs0fTsKICAg IGxvY2FsIGZpZWxkcz0kezV9OwogICAgaWYgW1sgLXogJHt0eXBlfSBdXTsgdGhlbgogICAgICAg IGxvY2FsIGNhdG1haj0ke0NBVEVHT1JZJSUtKn07CiAgICAgICAgbG9jYWwgY2F0bWluPSR7Q0FU RUdPUlkjIyotfTsKICAgICAgICBjYXNlICR7Y2F0bWFqfSBpbiAKICAgICAgICAgICAgYXBwKQog ICAgICAgICAgICAgICAgY2FzZSAke2NhdG1pbn0gaW4gCiAgICAgICAgICAgICAgICAgICAgYWNj ZXNzaWJpbGl0eSkKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0iVXRpbGl0eTtBY2Nlc3Np YmlsaXR5IgogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgYWRtaW4p CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9U3lzdGVtCiAgICAgICAgICAgICAgICAgICAg OzsKICAgICAgICAgICAgICAgICAgICBhbnRpdmlydXMpCiAgICAgICAgICAgICAgICAgICAgICAg IHR5cGU9U3lzdGVtCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBh cmNoKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJVdGlsaXR5O0FyY2hpdmluZyIKICAg ICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIGJhY2t1cCkKICAgICAgICAg ICAgICAgICAgICAgICAgdHlwZT0iVXRpbGl0eTtBcmNoaXZpbmciCiAgICAgICAgICAgICAgICAg ICAgOzsKICAgICAgICAgICAgICAgICAgICBjZHIpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5 cGU9IkF1ZGlvVmlkZW87RGlzY0J1cm5pbmciCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAg ICAgICAgICAgICAgICBkaWN0cykKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0iT2ZmaWNl O0RpY3Rpb25hcnkiCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBk b2MpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9RG9jdW1lbnRhdGlvbgogICAgICAgICAg ICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgZWRpdG9ycykKICAgICAgICAgICAgICAg ICAgICAgICAgdHlwZT0iVXRpbGl0eTtUZXh0RWRpdG9yIgogICAgICAgICAgICAgICAgICAgIDs7 CiAgICAgICAgICAgICAgICAgICAgZW1hY3MpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9 IkRldmVsb3BtZW50O1RleHRFZGl0b3IiCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAg ICAgICAgICAgICBlbXVsYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9IlN5c3Rl bTtFbXVsYXRvciIKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIGxh cHRvcCkKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0iU2V0dGluZ3M7SGFyZHdhcmVTZXR0 aW5ncyIKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIG9mZmljZSkK ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1PZmZpY2UKICAgICAgICAgICAgICAgICAgICA7 OwogICAgICAgICAgICAgICAgICAgIHBkYSkKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0i T2ZmaWNlO1BEQSIKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIHZp bSkKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0iRGV2ZWxvcG1lbnQ7VGV4dEVkaXRvciIK ICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIHhlbWFjcykKICAgICAg ICAgICAgICAgICAgICAgICAgdHlwZT0iRGV2ZWxvcG1lbnQ7VGV4dEVkaXRvciIKICAgICAgICAg ICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgZXNhYwogICAgICAgICAgICA7OwogICAgICAg ICAgICBkZXYpCiAgICAgICAgICAgICAgICB0eXBlPSJEZXZlbG9wbWVudCIKICAgICAgICAgICAg OzsKICAgICAgICAgICAgZ2FtZXMpCiAgICAgICAgICAgICAgICBjYXNlICR7Y2F0bWlufSBpbiAK ICAgICAgICAgICAgICAgICAgICBhY3Rpb24gfCBmcHMpCiAgICAgICAgICAgICAgICAgICAgICAg IHR5cGU9QWN0aW9uR2FtZQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAg ICAgYXJjYWRlKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPUFyY2FkZUdhbWUKICAgICAg ICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIGJvYXJkKQogICAgICAgICAgICAg ICAgICAgICAgICB0eXBlPUJvYXJkR2FtZQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAg ICAgICAgICAgICAgZW11bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPUVtdWxh dG9yCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBraWRzKQogICAg ICAgICAgICAgICAgICAgICAgICB0eXBlPUtpZHNHYW1lCiAgICAgICAgICAgICAgICAgICAgOzsK ICAgICAgICAgICAgICAgICAgICBwdXp6bGUpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9 TG9naWNHYW1lCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICByb2d1 ZWxpa2UpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9Um9sZVBsYXlpbmcKICAgICAgICAg ICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIHJwZykKICAgICAgICAgICAgICAgICAg ICAgICAgdHlwZT1Sb2xlUGxheWluZwogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAg ICAgICAgICAgc2ltdWxhdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1TaW11bGF0 aW9uCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBzcG9ydHMpCiAg ICAgICAgICAgICAgICAgICAgICAgIHR5cGU9U3BvcnRzR2FtZQogICAgICAgICAgICAgICAgICAg IDs7CiAgICAgICAgICAgICAgICAgICAgc3RyYXRlZ3kpCiAgICAgICAgICAgICAgICAgICAgICAg IHR5cGU9U3RyYXRlZ3lHYW1lCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAg IGVzYWM7CiAgICAgICAgICAgICAgICB0eXBlPSJHYW1lOyR7dHlwZX0iCiAgICAgICAgICAgIDs7 CiAgICAgICAgICAgIGdub21lKQogICAgICAgICAgICAgICAgdHlwZT0iR25vbWU7R1RLIgogICAg ICAgICAgICA7OwogICAgICAgICAgICBrZGUpCiAgICAgICAgICAgICAgICB0eXBlPSJLREU7UXQi CiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIG1haWwpCiAgICAgICAgICAgICAgICB0eXBlPSJO ZXR3b3JrO0VtYWlsIgogICAgICAgICAgICA7OwogICAgICAgICAgICBtZWRpYSkKICAgICAgICAg ICAgICAgIGNhc2UgJHtjYXRtaW59IGluIAogICAgICAgICAgICAgICAgICAgIGdmeCkKICAgICAg ICAgICAgICAgICAgICAgICAgdHlwZT1HcmFwaGljcwogICAgICAgICAgICAgICAgICAgIDs7CiAg ICAgICAgICAgICAgICAgICAgKikKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAke2NhdG1p bn0gaW4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpbykKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0eXBlPVR1bmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7 OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc291bmQpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdHlwZT1BdWRpbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHR2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHR5cGU9VFYKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2aWRlbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBl PVZpZGVvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAg ICAgICBlc2FjOwogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJBdWRpb1ZpZGVvOyR7dHlw ZX0iCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgIGVzYWMKICAgICAgICAg ICAgOzsKICAgICAgICAgICAgbmV0KQogICAgICAgICAgICAgICAgY2FzZSAke2NhdG1pbn0gaW4g CiAgICAgICAgICAgICAgICAgICAgZGlhbHVwKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBl PURpYWx1cAogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgZnRwKQog ICAgICAgICAgICAgICAgICAgICAgICB0eXBlPUZpbGVUcmFuc2ZlcgogICAgICAgICAgICAgICAg ICAgIDs7CiAgICAgICAgICAgICAgICAgICAgaW0pCiAgICAgICAgICAgICAgICAgICAgICAgIHR5 cGU9SW5zdGFudE1lc3NhZ2luZwogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAg ICAgICAgaXJjKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPUlSQ0NsaWVudAogICAgICAg ICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgbWFpbCkKICAgICAgICAgICAgICAg ICAgICAgICAgdHlwZT1FbWFpbAogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAg ICAgICAgbmV3cykKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1OZXdzCiAgICAgICAgICAg ICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBubnRwKQogICAgICAgICAgICAgICAgICAg ICAgICB0eXBlPU5ld3MKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAg IHAycCkKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1GaWxlVHJhbnNmZXIKICAgICAgICAg ICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIHZvaXApCiAgICAgICAgICAgICAgICAg ICAgICAgIHR5cGU9VGVsZXBob255CiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAg ICAgIGVzYWM7CiAgICAgICAgICAgICAgICB0eXBlPSJOZXR3b3JrOyR7dHlwZX0iCiAgICAgICAg ICAgIDs7CiAgICAgICAgICAgIHNjaSkKICAgICAgICAgICAgICAgIGNhc2UgJHtjYXRtaW59IGlu IAogICAgICAgICAgICAgICAgICAgIGFzdHJvKikKICAgICAgICAgICAgICAgICAgICAgICAgdHlw ZT1Bc3Ryb25vbXkKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIGJp byopCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9QmlvbG9neQogICAgICAgICAgICAgICAg ICAgIDs7CiAgICAgICAgICAgICAgICAgICAgY2FsYyopCiAgICAgICAgICAgICAgICAgICAgICAg IHR5cGU9Q2FsY3VsYXRvcgogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAg ICAgY2hlbSopCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9Q2hlbWlzdHJ5CiAgICAgICAg ICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBlbGVjKikKICAgICAgICAgICAgICAg ICAgICAgICAgdHlwZT1FbGVjdHJvbmljcwogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAg ICAgICAgICAgICAgZ2VvKikKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1HZW9sb2d5CiAg ICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBtYXRoKikKICAgICAgICAg ICAgICAgICAgICAgICAgdHlwZT1NYXRoCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAg ICAgICAgICAgICBwaHlzaWNzKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVBoeXNpY3MK ICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIHZpc3VhbCopCiAgICAg ICAgICAgICAgICAgICAgICAgIHR5cGU9RGF0YVZpc3VhbGl6YXRpb24KICAgICAgICAgICAgICAg ICAgICA7OwogICAgICAgICAgICAgICAgZXNhYzsKICAgICAgICAgICAgICAgIHR5cGU9IkVkdWNh dGlvbjtTY2llbmNlOyR7dHlwZX0iCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIHN5cykKICAg ICAgICAgICAgICAgIHR5cGU9IlN5c3RlbSIKICAgICAgICAgICAgOzsKICAgICAgICAgICAgd3d3 KQogICAgICAgICAgICAgICAgY2FzZSAke2NhdG1pbn0gaW4gCiAgICAgICAgICAgICAgICAgICAg Y2xpZW50KQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVdlYkJyb3dzZXIKICAgICAgICAg ICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgZXNhYzsKICAgICAgICAgICAgICAgIHR5cGU9 Ik5ldHdvcms7JHt0eXBlfSIKICAgICAgICAgICAgOzsKICAgICAgICAgICAgKikKICAgICAgICAg ICAgICAgIHR5cGU9CiAgICAgICAgICAgIDs7CiAgICAgICAgZXNhYzsKICAgIGZpOwogICAgbG9j YWwgc2xvdD0ke1NMT1QlLyp9OwogICAgaWYgW1sgJHtzbG90fSA9PSAiMCIgXV07IHRoZW4KICAg ICAgICBsb2NhbCBkZXNrdG9wX25hbWU9IiR7UE59IjsKICAgIGVsc2UKICAgICAgICBsb2NhbCBk ZXNrdG9wX25hbWU9IiR7UE59LSR7c2xvdH0iOwogICAgZmk7CiAgICBsb2NhbCBkZXNrdG9wPSIk e1R9LyQoZWNobyAke2V4ZWN9IHwgc2VkICdzOltbOnNwYWNlOl0vOl06XzpnJyktJHtkZXNrdG9w X25hbWV9LmRlc2t0b3AiOwogICAgdHlwZT0ke3R5cGUlO30ke3R5cGU6Kzt9OwogICAgZXNob3B0 c19wdXNoIC1zIGV4dGdsb2I7CiAgICBpZiBbWyAtbiAke2ljb259ICYmICR7aWNvbn0gIT0gLyog XV0gJiYgW1sgJHtpY29ufSA9PSAqLnhwbSB8fCAke2ljb259ID09ICoucG5nIHx8ICR7aWNvbn0g PT0gKi5zdmcgXV07IHRoZW4KICAgICAgICBld2FybiAiQXMgZGVzY3JpYmVkIGluIHRoZSBJY29u IFRoZW1lIFNwZWNpZmljYXRpb24sIGljb24gZmlsZSBleHRlbnNpb25zIGFyZSBub3QiOwogICAg ICAgIGV3YXJuICJhbGxvd2VkIGluIC5kZXNrdG9wIGZpbGVzIGlmIHRoZSB2YWx1ZSBpcyBub3Qg YW4gYWJzb2x1dGUgcGF0aC4iOwogICAgICAgIGljb249JHtpY29uJS5AKHhwbXxwbmd8c3ZnKX07 CiAgICBmaTsKICAgIGVzaG9wdHNfcG9wOwogICAgY2F0ID4gIiR7ZGVza3RvcH0iICA8PC1FT0YK W0Rlc2t0b3AgRW50cnldCk5hbWU9JHtuYW1lfQpUeXBlPUFwcGxpY2F0aW9uCkNvbW1lbnQ9JHtE RVNDUklQVElPTn0KRXhlYz0ke2V4ZWN9ClRyeUV4ZWM9JHtleGVjJSUgKn0KSWNvbj0ke2ljb259 CkNhdGVnb3JpZXM9JHt0eXBlfQpFT0YKCiAgICBpZiBbWyAke2ZpZWxkczotPX0gIT0gKj0qIF1d OyB0aGVuCiAgICAgICAgZXdhcm4gIm1ha2VfZGVza3RvcF9lbnRyeTogdXBkYXRlIHlvdXIgNXRo IGFyZyB0byByZWFkIFBhdGg9JHtmaWVsZHN9IjsKICAgICAgICBmaWVsZHM9IlBhdGg9JHtmaWVs ZHN9IjsKICAgIGZpOwogICAgW1sgLW4gJHtmaWVsZHN9IF1dICYmIHByaW50ZiAnJWJcbicgIiR7 ZmllbGRzfSIgPj4gIiR7ZGVza3RvcH0iOwogICAgKCBpbnNpbnRvIC91c3Ivc2hhcmUvYXBwbGlj YXRpb25zOwogICAgZG9pbnMgIiR7ZGVza3RvcH0iICkgfHwgZGllICJpbnN0YWxsaW5nIGRlc2t0 b3AgZmlsZSBmYWlsZWQiCn0KbWFrZV9zZXNzaW9uX2Rlc2t0b3AgKCkgCnsgCiAgICBbWyAteiAk MSBdXSAmJiBlZXJyb3IgIiQwOiBZb3UgbXVzdCBzcGVjaWZ5IHRoZSB0aXRsZSIgJiYgcmV0dXJu IDE7CiAgICBbWyAteiAkMiBdXSAmJiBlZXJyb3IgIiQwOiBZb3UgbXVzdCBzcGVjaWZ5IHRoZSBj b21tYW5kIiAmJiByZXR1cm4gMTsKICAgIGxvY2FsIHRpdGxlPSQxOwogICAgbG9jYWwgY29tbWFu ZD0kMjsKICAgIGxvY2FsIGRlc2t0b3A9JHtUfS8ke3dtOi0ke1BOfX0uZGVza3RvcDsKICAgIHNo aWZ0IDI7CiAgICBjYXQgPiAiJHtkZXNrdG9wfSIgIDw8LUVPRgpbRGVza3RvcCBFbnRyeV0KTmFt ZT0ke3RpdGxlfQpDb21tZW50PVRoaXMgc2Vzc2lvbiBsb2dzIHlvdSBpbnRvICR7dGl0bGV9CkV4 ZWM9JHtjb21tYW5kfSAkKgpUcnlFeGVjPSR7Y29tbWFuZH0KVHlwZT1YU2Vzc2lvbgpFT0YKCiAg ICAoIGluc2ludG8gL3Vzci9zaGFyZS94c2Vzc2lvbnM7CiAgICBkb2lucyAiJHtkZXNrdG9wfSIg KQp9Cm1ha2Vfd3JhcHBlciAoKSAKeyAKICAgIF9ldXRpbHNfZXByZWZpeF9pbml0OwogICAgbG9j YWwgd3JhcHBlcj0kMSBiaW49JDIgY2hkaXI9JDMgbGliZGlyPSQ0IHBhdGg9JDU7CiAgICBsb2Nh bCB0bXB3cmFwcGVyPSQoZW1rdGVtcCk7CiAgICAoIGVjaG8gJyMhL2Jpbi9zaCc7CiAgICBbWyAt biAke2NoZGlyfSBdXSAmJiBwcmludGYgJ2NkICIlcyJcbicgIiR7RVBSRUZJWH0ke2NoZGlyfSI7 CiAgICBpZiBbWyAtbiAke2xpYmRpcn0gXV07IHRoZW4KICAgICAgICBsb2NhbCB2YXI7CiAgICAg ICAgaWYgW1sgJHtDSE9TVH0gPT0gKi1kYXJ3aW4qIF1dOyB0aGVuCiAgICAgICAgICAgIHZhcj1E WUxEX0xJQlJBUllfUEFUSDsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHZhcj1MRF9MSUJSQVJZ X1BBVEg7CiAgICAgICAgZmk7CiAgICAgICAgY2F0ICA8PC1FT0YKaWYgWyAiXCR7JHt2YXJ9K3Nl dH0iID0gInNldCIgXSA7IHRoZW4KZXhwb3J0ICR7dmFyfT0iXCR7JHt2YXJ9fToke0VQUkVGSVh9 JHtsaWJkaXJ9IgplbHNlCmV4cG9ydCAke3Zhcn09IiR7RVBSRUZJWH0ke2xpYmRpcn0iCmZpCkVP RgoKICAgIGZpCiAgICBwcmludGYgJ2V4ZWMgJXMgIiRAIlxuJyAiJHtiaW4vI1wvLyR7RVBSRUZJ WH0vfSIgKSA+ICIke3RtcHdyYXBwZXJ9IjsKICAgIGNobW9kIGdvK3J4ICIke3RtcHdyYXBwZXJ9 IjsKICAgIGlmIFtbIC1uICR7cGF0aH0gXV07IHRoZW4KICAgICAgICAoIGV4ZWludG8gIiR7cGF0 aH0iOwogICAgICAgIG5ld2V4ZSAiJHt0bXB3cmFwcGVyfSIgIiR7d3JhcHBlcn0iICkgfHwgZGll OwogICAgZWxzZQogICAgICAgIG5ld2JpbiAiJHt0bXB3cmFwcGVyfSIgIiR7d3JhcHBlcn0iIHx8 IGRpZTsKICAgIGZpCn0KbW92ZV9vbGRfbW9kdWxlZGIgKCkgCnsgCiAgICBkZWJ1Zy1wcmludC1m dW5jdGlvbiAke0ZVTkNOQU1FfSAkKjsKICAgIGxvY2FsIE9MRERJUj0iJHtST09UfSIvdXNyL3No YXJlL21vZHVsZS1yZWJ1aWxkLzsKICAgIGxvY2FsIE5FV0RJUj0iJHtST09UfSIvdmFyL2xpYi9t b2R1bGUtcmVidWlsZC87CiAgICBpZiBbWyAtZiAiJHtPTERESVJ9Ii9tb2R1bGVkYiBdXTsgdGhl bgogICAgICAgIFtbICEgLWQgIiR7TkVXRElSfSIgXV0gJiYgbWtkaXIgLXAgIiR7TkVXRElSfSI7 CiAgICAgICAgW1sgISAtZiAiJHtORVdESVJ9Ii9tb2R1bGVkYiBdXSAmJiBtdiAiJHtPTERESVJ9 Ii9tb2R1bGVkYiAiJHtORVdESVJ9Ii9tb2R1bGVkYjsKICAgICAgICBybSAtZiAiJHtPTERESVJ9 Ii8qOwogICAgICAgIHJtZGlyICIke09MRERJUn0iOwogICAgZmkKfQptdWx0aWxpYl9lbnYgKCkg CnsgCiAgICBsb2NhbCBDVEFSR0VUPSR7MTotJHtDVEFSR0VUfX07CiAgICBsb2NhbCBjcHU9JHtD VEFSR0VUJSUqLX07CiAgICBjYXNlICR7Y3B1fSBpbiAKICAgICAgICBhYXJjaDY0KikKICAgICAg ICAgICAgZXhwb3J0IENGTEFHU19hcm09JHtDRkxBR1NfYXJtLX07CiAgICAgICAgICAgIGNhc2Ug JHtjcHV9IGluIAogICAgICAgICAgICAgICAgYWFyY2g2NCpiZSkKICAgICAgICAgICAgICAgICAg ICBleHBvcnQgQ0hPU1RfYXJtPSJhcm12OGItJHtDVEFSR0VUIyotfSIKICAgICAgICAgICAgICAg IDs7CiAgICAgICAgICAgICAgICAqKQogICAgICAgICAgICAgICAgICAgIGV4cG9ydCBDSE9TVF9h cm09ImFybXY4bC0ke0NUQVJHRVQjKi19IgogICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAg ZXNhYzsKICAgICAgICAgICAgQ0hPU1RfYXJtPSR7Q0hPU1RfYXJtLyUtZ251Ly1nbnVlYWJpfTsK ICAgICAgICAgICAgZXhwb3J0IENUQVJHRVRfYXJtPSR7Q0hPU1RfYXJtfTsKICAgICAgICAgICAg ZXhwb3J0IExJQkRJUl9hcm09ImxpYiI7CiAgICAgICAgICAgIGV4cG9ydCBDRkxBR1NfYXJtNjQ9 JHtDRkxBR1NfYXJtNjQtfTsKICAgICAgICAgICAgZXhwb3J0IENIT1NUX2FybTY0PSR7Q1RBUkdF VH07CiAgICAgICAgICAgIGV4cG9ydCBDVEFSR0VUX2FybTY0PSR7Q0hPU1RfYXJtNjR9OwogICAg ICAgICAgICBleHBvcnQgTElCRElSX2FybTY0PSJsaWI2NCI7CiAgICAgICAgICAgIDogJHtNVUxU SUxJQl9BQklTPWFybTY0fTsKICAgICAgICAgICAgOiAke0RFRkFVTFRfQUJJPWFybTY0fQogICAg ICAgIDs7CiAgICAgICAgeDg2XzY0KikKICAgICAgICAgICAgZXhwb3J0IENGTEFHU194ODY9JHtD RkxBR1NfeDg2LS1tMzJ9OwogICAgICAgICAgICBleHBvcnQgQ0hPU1RfeDg2PSR7Q1RBUkdFVC94 ODZfNjQvaTY4Nn07CiAgICAgICAgICAgIENIT1NUX3g4Nj0ke0NIT1NUX3g4Ni8lLWdudXgzMi8t Z251fTsKICAgICAgICAgICAgZXhwb3J0IENUQVJHRVRfeDg2PSR7Q0hPU1RfeDg2fTsKICAgICAg ICAgICAgaWYgW1sgJHtTWU1MSU5LX0xJQn0gPT0gInllcyIgXV07IHRoZW4KICAgICAgICAgICAg ICAgIGV4cG9ydCBMSUJESVJfeDg2PSJsaWIzMiI7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAg ICAgICAgIGV4cG9ydCBMSUJESVJfeDg2PSJsaWIiOwogICAgICAgICAgICBmaTsKICAgICAgICAg ICAgZXhwb3J0IENGTEFHU19hbWQ2ND0ke0NGTEFHU19hbWQ2NC0tbTY0fTsKICAgICAgICAgICAg ZXhwb3J0IENIT1NUX2FtZDY0PSR7Q1RBUkdFVC8lLWdudXgzMi8tZ251fTsKICAgICAgICAgICAg ZXhwb3J0IENUQVJHRVRfYW1kNjQ9JHtDSE9TVF9hbWQ2NH07CiAgICAgICAgICAgIGV4cG9ydCBM SUJESVJfYW1kNjQ9ImxpYjY0IjsKICAgICAgICAgICAgZXhwb3J0IENGTEFHU194MzI9JHtDRkxB R1NfeDMyLS1teDMyfTsKICAgICAgICAgICAgZXhwb3J0IENIT1NUX3gzMj0ke0NUQVJHRVQvJS1n bnUvLWdudXgzMn07CiAgICAgICAgICAgIGV4cG9ydCBDVEFSR0VUX3gzMj0ke0NIT1NUX3gzMn07 CiAgICAgICAgICAgIGV4cG9ydCBMSUJESVJfeDMyPSJsaWJ4MzIiOwogICAgICAgICAgICBjYXNl ICR7Q1RBUkdFVH0gaW4gCiAgICAgICAgICAgICAgICAqLWdudXgzMikKICAgICAgICAgICAgICAg ICAgICA6ICR7TVVMVElMSUJfQUJJUz14MzIgYW1kNjQgeDg2fTsKICAgICAgICAgICAgICAgICAg ICA6ICR7REVGQVVMVF9BQkk9eDMyfQogICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAg ICopCiAgICAgICAgICAgICAgICAgICAgOiAke01VTFRJTElCX0FCSVM9YW1kNjQgeDg2fTsKICAg ICAgICAgICAgICAgICAgICA6ICR7REVGQVVMVF9BQkk9YW1kNjR9CiAgICAgICAgICAgICAgICA7 OwogICAgICAgICAgICBlc2FjCiAgICAgICAgOzsKICAgICAgICBtaXBzNjQqKQogICAgICAgICAg ICBleHBvcnQgQ0ZMQUdTX28zMj0ke0NGTEFHU19vMzItLW1hYmk9MzJ9OwogICAgICAgICAgICBl eHBvcnQgQ0hPU1RfbzMyPSR7Q1RBUkdFVC9taXBzNjQvbWlwc307CiAgICAgICAgICAgIGV4cG9y dCBDVEFSR0VUX28zMj0ke0NIT1NUX28zMn07CiAgICAgICAgICAgIGV4cG9ydCBMSUJESVJfbzMy PSJsaWIiOwogICAgICAgICAgICBleHBvcnQgQ0ZMQUdTX24zMj0ke0NGTEFHU19uMzItLW1hYmk9 bjMyfTsKICAgICAgICAgICAgZXhwb3J0IENIT1NUX24zMj0ke0NUQVJHRVR9OwogICAgICAgICAg ICBleHBvcnQgQ1RBUkdFVF9uMzI9JHtDSE9TVF9uMzJ9OwogICAgICAgICAgICBleHBvcnQgTElC RElSX24zMj0ibGliMzIiOwogICAgICAgICAgICBleHBvcnQgQ0ZMQUdTX242ND0ke0NGTEFHU19u NjQtLW1hYmk9NjR9OwogICAgICAgICAgICBleHBvcnQgQ0hPU1RfbjY0PSR7Q1RBUkdFVH07CiAg ICAgICAgICAgIGV4cG9ydCBDVEFSR0VUX242ND0ke0NIT1NUX242NH07CiAgICAgICAgICAgIGV4 cG9ydCBMSUJESVJfbjY0PSJsaWI2NCI7CiAgICAgICAgICAgIDogJHtNVUxUSUxJQl9BQklTPW42 NCBuMzIgbzMyfTsKICAgICAgICAgICAgOiAke0RFRkFVTFRfQUJJPW4zMn0KICAgICAgICA7Owog ICAgICAgIHBvd2VycGM2NCopCiAgICAgICAgICAgIGV4cG9ydCBDRkxBR1NfcHBjPSR7Q0ZMQUdT X3BwYy0tbTMyfTsKICAgICAgICAgICAgZXhwb3J0IENIT1NUX3BwYz0ke0NUQVJHRVQvcG93ZXJw YzY0L3Bvd2VycGN9OwogICAgICAgICAgICBleHBvcnQgQ1RBUkdFVF9wcGM9JHtDSE9TVF9wcGN9 OwogICAgICAgICAgICBleHBvcnQgTElCRElSX3BwYz0ibGliIjsKICAgICAgICAgICAgZXhwb3J0 IENGTEFHU19wcGM2ND0ke0NGTEFHU19wcGM2NC0tbTY0fTsKICAgICAgICAgICAgZXhwb3J0IENI T1NUX3BwYzY0PSR7Q1RBUkdFVH07CiAgICAgICAgICAgIGV4cG9ydCBDVEFSR0VUX3BwYzY0PSR7 Q0hPU1RfcHBjNjR9OwogICAgICAgICAgICBleHBvcnQgTElCRElSX3BwYzY0PSJsaWI2NCI7CiAg ICAgICAgICAgIDogJHtNVUxUSUxJQl9BQklTPXBwYzY0IHBwY307CiAgICAgICAgICAgIDogJHtE RUZBVUxUX0FCST1wcGM2NH0KICAgICAgICA7OwogICAgICAgIHMzOTB4KikKICAgICAgICAgICAg ZXhwb3J0IENGTEFHU19zMzkwPSR7Q0ZMQUdTX3MzOTAtLW0zMX07CiAgICAgICAgICAgIGV4cG9y dCBDSE9TVF9zMzkwPSR7Q1RBUkdFVC9zMzkweC9zMzkwfTsKICAgICAgICAgICAgZXhwb3J0IENU QVJHRVRfczM5MD0ke0NIT1NUX3MzOTB9OwogICAgICAgICAgICBleHBvcnQgTElCRElSX3MzOTA9 ImxpYiI7CiAgICAgICAgICAgIGV4cG9ydCBDRkxBR1NfczM5MHg9JHtDRkxBR1NfczM5MHgtLW02 NH07CiAgICAgICAgICAgIGV4cG9ydCBDSE9TVF9zMzkweD0ke0NUQVJHRVR9OwogICAgICAgICAg ICBleHBvcnQgQ1RBUkdFVF9zMzkweD0ke0NIT1NUX3MzOTB4fTsKICAgICAgICAgICAgZXhwb3J0 IExJQkRJUl9zMzkweD0ibGliNjQiOwogICAgICAgICAgICA6ICR7TVVMVElMSUJfQUJJUz1zMzkw eCBzMzkwfTsKICAgICAgICAgICAgOiAke0RFRkFVTFRfQUJJPXMzOTB4fQogICAgICAgIDs7CiAg ICAgICAgc3BhcmM2NCopCiAgICAgICAgICAgIGV4cG9ydCBDRkxBR1Nfc3BhcmMzMj0ke0NGTEFH U19zcGFyYzMyLS1tMzJ9OwogICAgICAgICAgICBleHBvcnQgQ0hPU1Rfc3BhcmMzMj0ke0NUQVJH RVQvc3BhcmM2NC9zcGFyY307CiAgICAgICAgICAgIGV4cG9ydCBDVEFSR0VUX3NwYXJjMzI9JHtD SE9TVF9zcGFyYzMyfTsKICAgICAgICAgICAgZXhwb3J0IExJQkRJUl9zcGFyYzMyPSJsaWIiOwog ICAgICAgICAgICBleHBvcnQgQ0ZMQUdTX3NwYXJjNjQ9JHtDRkxBR1Nfc3BhcmM2NC0tbTY0fTsK ICAgICAgICAgICAgZXhwb3J0IENIT1NUX3NwYXJjNjQ9JHtDVEFSR0VUfTsKICAgICAgICAgICAg ZXhwb3J0IENUQVJHRVRfc3BhcmM2ND0ke0NIT1NUX3NwYXJjNjR9OwogICAgICAgICAgICBleHBv cnQgTElCRElSX3NwYXJjNjQ9ImxpYjY0IjsKICAgICAgICAgICAgOiAke01VTFRJTElCX0FCSVM9 c3BhcmM2NCBzcGFyYzMyfTsKICAgICAgICAgICAgOiAke0RFRkFVTFRfQUJJPXNwYXJjNjR9CiAg ICAgICAgOzsKICAgICAgICAqKQogICAgICAgICAgICA6ICR7TVVMVElMSUJfQUJJUz1kZWZhdWx0 fTsKICAgICAgICAgICAgOiAke0RFRkFVTFRfQUJJPWRlZmF1bHR9CiAgICAgICAgOzsKICAgIGVz YWM7CiAgICBleHBvcnQgTVVMVElMSUJfQUJJUyBERUZBVUxUX0FCSQp9Cm11bHRpbGliX3Rvb2xj aGFpbl9zZXR1cCAoKSAKeyAKICAgIGxvY2FsIHYgdnY7CiAgICBleHBvcnQgQUJJPSQxOwogICAg aWYgW1sgJHtfREVGQVVMVF9BQklfU0FWRUR9ID09ICJ0cnVlIiBdXTsgdGhlbgogICAgICAgIGZv ciB2IGluIENIT1NUIENCVUlMRCBBUyBDQyBDWFggTEQgUEtHX0NPTkZJR197TElCRElSLFBBVEh9 OwogICAgICAgIGRvCiAgICAgICAgICAgIHZ2PSJfYWJpX3NhdmVkXyR7dn0iOwogICAgICAgICAg ICBbWyAkeyF2ditzZXR9ID09ICJzZXQiIF1dICYmIGV4cG9ydCAke3Z9PSIkeyF2dn0iIHx8IHVu c2V0ICR7dn07CiAgICAgICAgICAgIHVuc2V0ICR7dnZ9OwogICAgICAgIGRvbmU7CiAgICAgICAg dW5zZXQgX0RFRkFVTFRfQUJJX1NBVkVEOwogICAgZmk7CiAgICBpZiBbWyAke0FCSX0gIT0gJHtE RUZBVUxUX0FCSX0gXV07IHRoZW4KICAgICAgICBmb3IgdiBpbiBDSE9TVCBDQlVJTEQgQVMgQ0Mg Q1hYIExEIFBLR19DT05GSUdfe0xJQkRJUixQQVRIfTsKICAgICAgICBkbwogICAgICAgICAgICB2 dj0iX2FiaV9zYXZlZF8ke3Z9IjsKICAgICAgICAgICAgW1sgJHshditzZXR9ID09ICJzZXQiIF1d ICYmIGV4cG9ydCAke3Z2fT0iJHshdn0iIHx8IHVuc2V0ICR7dnZ9OwogICAgICAgIGRvbmU7CiAg ICAgICAgZXhwb3J0IF9ERUZBVUxUX0FCSV9TQVZFRD0idHJ1ZSI7CiAgICAgICAgZXhwb3J0IENI T1NUPSQoZ2V0X2FiaV9DSE9TVCAke0RFRkFVTFRfQUJJfSk7CiAgICAgICAgZXhwb3J0IENDPSIk KHRjLWdldENDKSAkKGdldF9hYmlfQ0ZMQUdTKSI7CiAgICAgICAgZXhwb3J0IENYWD0iJCh0Yy1n ZXRDWFgpICQoZ2V0X2FiaV9DRkxBR1MpIjsKICAgICAgICBleHBvcnQgTEQ9IiQodGMtZ2V0TEQp ICQoZ2V0X2FiaV9MREZMQUdTKSI7CiAgICAgICAgZXhwb3J0IENIT1NUPSQoZ2V0X2FiaV9DSE9T VCAkMSk7CiAgICAgICAgZXhwb3J0IENCVUlMRD0kKGdldF9hYmlfQ0hPU1QgJDEpOwogICAgICAg IGV4cG9ydCBQS0dfQ09ORklHX0xJQkRJUj0ke0VQUkVGSVh9L3Vzci8kKGdldF9saWJkaXIpL3Br Z2NvbmZpZzsKICAgICAgICBleHBvcnQgUEtHX0NPTkZJR19QQVRIPSR7RVBSRUZJWH0vdXNyL3No YXJlL3BrZ2NvbmZpZzsKICAgIGZpCn0KbmV3aWNvbiAoKSAKeyAKICAgIF9pY29uaW5zICR7RlVO Q05BTUV9ICIkQCIKfQpuZXdtZW51ICgpIAp7IAogICAgKCBpbnNpbnRvIC91c3Ivc2hhcmUvYXBw bGljYXRpb25zOwogICAgbmV3aW5zICIkQCIgKQp9Cm51bWJlcl9hYmlzICgpIAp7IAogICAgc2V0 IC0tIGBnZXRfaW5zdGFsbF9hYmlzYDsKICAgIGVjaG8gJCMKfQpvcHRmZWF0dXJlICgpIAp7IAog ICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiRAIjsKICAgIGxvY2FsIGkgaiBt c2c7CiAgICBsb2NhbCBkZXNjPSQxOwogICAgbG9jYWwgZmxhZz0wOwogICAgc2hpZnQ7CiAgICBm b3IgaSBpbiAiJEAiOwogICAgZG8KICAgICAgICBmb3IgaiBpbiAke2l9OwogICAgICAgIGRvCiAg ICAgICAgICAgIGlmIGhhc192ZXJzaW9uICIke2p9IjsgdGhlbgogICAgICAgICAgICAgICAgZmxh Zz0xOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBmbGFnPTA7CiAgICAgICAgICAg ICAgICBicmVhazsKICAgICAgICAgICAgZmk7CiAgICAgICAgZG9uZTsKICAgICAgICBpZiBbWyAk e2ZsYWd9IC1lcSAxIF1dOyB0aGVuCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGZpOwogICAg ZG9uZTsKICAgIGlmIFtbICR7ZmxhZ30gLWVxIDAgXV07IHRoZW4KICAgICAgICBmb3IgaSBpbiAi JEAiOwogICAgICAgIGRvCiAgICAgICAgICAgIG1zZz0iICI7CiAgICAgICAgICAgIGZvciBqIGlu ICR7aX07CiAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICBtc2crPSIgJHtqfSBhbmQiOwog ICAgICAgICAgICBkb25lOwogICAgICAgICAgICBtc2c9IiR7bXNnOjA6IC00fSBmb3IgJHtkZXNj fSI7CiAgICAgICAgICAgIGVsb2cgIiR7bXNnfSI7CiAgICAgICAgZG9uZTsKICAgIGZpCn0KcGF0 aF9leGlzdHMgKCkgCnsgCiAgICBsb2NhbCBvcHQ9JDE7CiAgICBbWyAke29wdH0gPT0gLVthb10g XV0gJiYgc2hpZnQgfHwgb3B0PSItYSI7CiAgICBbWyAkIyAtZXEgMCBdXSAmJiByZXR1cm4gMTsK ICAgIGxvY2FsIHAgcj0wOwogICAgZm9yIHAgaW4gIiRAIjsKICAgIGRvCiAgICAgICAgW1sgLWUg JHtwfSBdXTsKICAgICAgICA6ICQoKCByICs9ICQ/ICkpOwogICAgZG9uZTsKICAgIGNhc2UgJHtv cHR9IGluIAogICAgICAgIC1hKQogICAgICAgICAgICByZXR1cm4gJCgoIHIgIT0gMCApKQogICAg ICAgIDs7CiAgICAgICAgLW8pCiAgICAgICAgICAgIHJldHVybiAkKCggciA9PSAkIyApKQogICAg ICAgIDs7CiAgICBlc2FjCn0KcGF4LW1hcmsgKCkgCnsgCiAgICBsb2NhbCBmOwogICAgbG9jYWwg ZmxhZ3M7CiAgICBsb2NhbCByZXQ9MDsKICAgIGZsYWdzPSIkezEvL1shelBwRWVNbVJyU3NdfSI7 CiAgICBbWyAtbiAiJHtmbGFnc30iIF1dIHx8IHJldHVybiAwOwogICAgc2hpZnQ7CiAgICBsb2Nh bCBkb2RlZmF1bHQ9IiI7CiAgICBbWyAtbiAiJHtmbGFncy8vWyF6XX0iIF1dICYmIGRvZGVmYXVs dD0ieWVzIjsKICAgIGlmIGhhcyBQVCAke1BBWF9NQVJLSU5HU307IHRoZW4KICAgICAgICBfcGF4 X2xpc3RfZmlsZXMgZWluZm8gIiRAIjsKICAgICAgICBmb3IgZiBpbiAiJEAiOwogICAgICAgIGRv CiAgICAgICAgICAgIGlmIHR5cGUgLXAgcGF4Y3RsID4gL2Rldi9udWxsOyB0aGVuCiAgICAgICAg ICAgICAgICBlaW5mbyAiUFQgUGFYIG1hcmtpbmcgLSR7ZmxhZ3N9ICR7Zn0gd2l0aCBwYXhjdGwi OwogICAgICAgICAgICAgICAgcGF4Y3RsIC1xJHtmbGFnc30gIiR7Zn0iICYmIGNvbnRpbnVlOwog ICAgICAgICAgICAgICAgcGF4Y3RsIC1xQyR7ZmxhZ3N9ICIke2Z9IiAmJiBjb250aW51ZTsKICAg ICAgICAgICAgICAgIHBheGN0bCAtcWMke2ZsYWdzfSAiJHtmfSIgJiYgY29udGludWU7CiAgICAg ICAgICAgIGZpOwogICAgICAgICAgICBpZiB0eXBlIC1wIHBheGN0bC1uZyA+IC9kZXYvbnVsbCAm JiBwYXhjdGwtbmcgLUw7IHRoZW4KICAgICAgICAgICAgICAgIGVpbmZvICJQVCBQYVggbWFya2lu ZyAtJHtmbGFnc30gJHtmfSB3aXRoIHBheGN0bC1uZyI7CiAgICAgICAgICAgICAgICBmbGFncz0i JHtmbGFncy8ven0iOwogICAgICAgICAgICAgICAgW1sgJHtkb2RlZmF1bHR9ID09ICJ5ZXMiIF1d ICYmIHBheGN0bC1uZyAtTCAteiAiJHtmfSI7CiAgICAgICAgICAgICAgICBbWyAtbiAiJHtmbGFn c30iIF1dIHx8IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgcGF4Y3RsLW5nIC1MIC0ke2ZsYWdz fSAiJHtmfSIgJiYgY29udGludWU7CiAgICAgICAgICAgIGZpOwogICAgICAgICAgICBpZiB0eXBl IC1wIHNjYW5lbGYgPiAvZGV2L251bGwgJiYgW1sgJHtQQVhfTUFSS0lOR1N9ICE9ICJub25lIiBd XTsgdGhlbgogICAgICAgICAgICAgICAgc2NhbmVsZiAtWHh6ICR7ZmxhZ3N9ICIkZiI7CiAgICAg ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGlmIFtbICR7UEFYX01BUktJTkdTfSAhPSAibm9u ZSIgXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICBlbG9nICJGYWlsZWQgdG8gc2V0IFBUX1BB WCBtYXJraW5ncyAtJHtmbGFnc30gJHtmfS4iOwogICAgICAgICAgICAgICAgICAgIHJldD0xOwog ICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIGZpOwogICAgICAgIGRvbmU7CiAgICBmaTsK ICAgIGlmIGhhcyBYVCAke1BBWF9NQVJLSU5HU307IHRoZW4KICAgICAgICBfcGF4X2xpc3RfZmls ZXMgZWluZm8gIiRAIjsKICAgICAgICBmbGFncz0iJHtmbGFncy8ven0iOwogICAgICAgIGZvciBm IGluICIkQCI7CiAgICAgICAgZG8KICAgICAgICAgICAgaWYgdHlwZSAtcCBwYXhjdGwtbmcgPiAv ZGV2L251bGwgJiYgcGF4Y3RsLW5nIC1sOyB0aGVuCiAgICAgICAgICAgICAgICBlaW5mbyAiWFQg UGFYIG1hcmtpbmcgLSR7ZmxhZ3N9ICR7Zn0gd2l0aCBwYXhjdGwtbmciOwogICAgICAgICAgICAg ICAgW1sgJHtkb2RlZmF1bHR9ID09ICJ5ZXMiIF1dICYmIHBheGN0bC1uZyAtZCAiJHtmfSI7CiAg ICAgICAgICAgICAgICBbWyAtbiAiJHtmbGFnc30iIF1dIHx8IGNvbnRpbnVlOwogICAgICAgICAg ICAgICAgcGF4Y3RsLW5nIC1sIC0ke2ZsYWdzfSAiJHtmfSIgJiYgY29udGludWU7CiAgICAgICAg ICAgIGZpOwogICAgICAgICAgICBpZiB0eXBlIC1wIHNldGZhdHRyID4gL2Rldi9udWxsOyB0aGVu CiAgICAgICAgICAgICAgICBbWyAtbiAiJHtmbGFncy8vWyFFZV19IiBdXSB8fCBmbGFncys9ImUi OwogICAgICAgICAgICAgICAgZWluZm8gIlhUIFBhWCBtYXJraW5nIC0ke2ZsYWdzfSAke2Z9IHdp dGggc2V0ZmF0dHIiOwogICAgICAgICAgICAgICAgW1sgJHtkb2RlZmF1bHR9ID09ICJ5ZXMiIF1d ICYmIHNldGZhdHRyIC14ICJ1c2VyLnBheC5mbGFncyIgIiR7Zn0iOwogICAgICAgICAgICAgICAg c2V0ZmF0dHIgLW4gInVzZXIucGF4LmZsYWdzIiAtdiAiJHtmbGFnc30iICIke2Z9IiAmJiBjb250 aW51ZTsKICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIGlmIFtbICR7UEFYX01BUktJTkdTfSAh PSAibm9uZSIgXV07IHRoZW4KICAgICAgICAgICAgICAgIGVsb2cgIkZhaWxlZCB0byBzZXQgWEFU VFJfUEFYIG1hcmtpbmdzIC0ke2ZsYWdzfSAke2Z9LiI7CiAgICAgICAgICAgICAgICByZXQ9MTsK ICAgICAgICAgICAgZmk7CiAgICAgICAgZG9uZTsKICAgIGZpOwogICAgcmV0dXJuICR7cmV0fQp9 CnBrZ19ub2ZldGNoICgpIAp7IAogICAgZWluZm8gIlRoZSBkcml2ZXIgcGFja2FnZXMiOwogICAg ZWluZm8gJHtBfTsKICAgIGVpbmZvICJuZWVkIHRvIGJlIGRvd25sb2FkZWQgbWFudWFsbHkgZnJv bSI7CiAgICBlaW5mbyAiaHR0cDovL3N1cHBvcnQuYW1kLmNvbS9lbi11cy9kb3dubG9hZC9kZXNr dG9wP29zPUxpbnV4JTIweDg2XzY0IjsKICAgIGVpbmZvICJhbmQgJHtYVkJBX1NES19VUkl9Igp9 CnBrZ19wb3N0aW5zdCAoKSAKeyAKICAgIGVsb2cgIlRvIHN3aXRjaCB0byBBTUQgT3BlbkdMLCBy dW4gXCJlc2VsZWN0IG9wZW5nbCBzZXQgYXRpXCIiOwogICAgZWxvZyAiVG8gY2hhbmdlIHlvdXIg eG9yZy5jb25mIHlvdSBjYW4gdXNlIHRoZSBidW5kbGVkIFwiYXRpY29uZmlnXCIiOwogICAgZWxv ZzsKICAgIGVsb2cgIklmIHlvdSBleHBlcmllbmNlIHVuZXhwbGFpbmVkIHNlZ21lbnRhdGlvbiBm YXVsdHMgYW5kIGtlcm5lbCBjcmFzaGVzIjsKICAgIGVsb2cgIndpdGggdGhpcyBkcml2ZXIgYW5k IG11bHRpLXRocmVhZGVkIGFwcGxpY2F0aW9ucyBzdWNoIGFzIHdpbmUsIjsKICAgIGVsb2cgInNl dCBVc2VGYXN0VExTIGluIHhvcmcuY29uZiB0byBlaXRoZXIgMCBvciAxLCBidXQgbm90IDIuIjsK ICAgIGVsb2c7CiAgICBlbG9nICJGdWxseSByZWJvb3RpbmcgdGhlIHN5c3RlbSBhZnRlciBhbiAk e1BOfSB1cGRhdGUgaXMgcmVjb21tZW5kZWQiOwogICAgZWxvZyAiU3RvcHBpbmcgWG9yZywgcmVs b2FkaW5nIGZnbHJ4IGtlcm5lbCBtb2R1bGUgYW5kIHJlc3RhcnQgWG9yZyI7CiAgICBlbG9nICJt aWdodCBub3Qgd29yayI7CiAgICBlbG9nOwogICAgZWxvZyAiU29tZSBjYXJkcyBuZWVkIGFjcGlk IHJ1bm5pbmcgdG8gaGFuZGxlIGV2ZW50cyI7CiAgICBlbG9nICJQbGVhc2UgYWRkIGl0IHRvIGJv b3QgcnVubGV2ZWwgd2l0aCByYy11cGRhdGUgYWRkIGFjcGlkIGJvb3QiOwogICAgZWxvZzsKICAg IHVzZSBtb2R1bGVzICYmIGxpbnV4LW1vZF9wa2dfcG9zdGluc3Q7CiAgICAiJHtST09UfSIvdXNy L2Jpbi9lc2VsZWN0IG9wZW5nbCBzZXQgLS11c2Utb2xkIGF0aTsKICAgICIke1JPT1R9Ii91c3Iv YmluL2VzZWxlY3Qgb3BlbmNsIHNldCAtLXVzZS1vbGQgYW1kOwogICAgaWYgaGFzX3ZlcnNpb24g IngxMS1kcml2ZXJzL3hmODYtdmlkZW8taW50ZWxbc25hXSI7IHRoZW4KICAgICAgICBld2FybiAi SXQgaXMgcmVwb3J0ZWQgdGhhdCB4Zjg2LXZpZGVvLWludGVsIGJ1aWx0IHdpdGggVVNFPVwic25h XCIgY2F1c2VzIHRoZSBYIHNlcnZlciI7CiAgICAgICAgZXdhcm4gInRvIGNyYXNoIG9uIHN5c3Rl bXMgdGhhdCB1c2UgaHlicmlkIEFNRC9JbnRlbCBncmFwaGljcy4gSWYgeW91IGV4cGVyaWVuY2Ui OwogICAgICAgIGV3YXJuICJ0aGlzIGNyYXNoLCBkb3duZ3JhZGUgdG8geGY4Ni12aWRlby1pbnRl bC0yLjIwLjIgb3IgZWFybGllciBvciI7CiAgICAgICAgZXdhcm4gInRyeSBkaXNhYmxpbmcgc25h IGZvciB4Zjg2LXZpZGVvLWludGVsLiI7CiAgICAgICAgZXdhcm4gIkZvciBkZXRhaWxzLCBzZWUg aHR0cHM6Ly9idWdzLmdlbnRvby5vcmcvc2hvd19idWcuY2dpP2lkPTQzMDAwMCI7CiAgICBmaTsK ICAgIGlmIHVzZSBwYXhfa2VybmVsOyB0aGVuCiAgICAgICAgZXdhcm4gIlBsZWFzZSBydW4gXCJy ZXZkZXAtcGF4IC1zIGxpYkdMLnNvLjEgLW1lXCIgYWZ0ZXIgaW5zdGFsbGF0aW9uIGFuZCI7CiAg ICAgICAgZXdhcm4gImFmdGVyIHlvdSBoYXZlIHJ1biBcImVzZWxlY3Qgb3BlbmdsIHNldCBhdGlc Ii4gRXhlY3V0YWNsZSI7CiAgICAgICAgZXdhcm4gInJldmRlcC1wYXggaXMgcGFydCBvZiBwYWNr YWdlIHN5cy1hcHBzL2VsZml4LiI7CiAgICBmaQp9CnBrZ19wb3N0cm0gKCkgCnsgCiAgICB1c2Ug bW9kdWxlcyAmJiBsaW51eC1tb2RfcGtnX3Bvc3RybTsKICAgICIke1JPT1R9Ii91c3IvYmluL2Vz ZWxlY3Qgb3BlbmdsIHNldCAtLXVzZS1vbGQgeG9yZy14MTEKfQpwa2dfcHJlaW5zdCAoKSAKeyAK ICAgIHVzZSBtb2R1bGVzICYmIGxpbnV4LW1vZF9wa2dfcHJlaW5zdAp9CnBrZ19wcmVybSAoKSAK eyAKICAgICIke1JPT1R9Ii91c3IvYmluL2VzZWxlY3Qgb3BlbmdsIHNldCAtLXVzZS1vbGQgeG9y Zy14MTEKfQpwa2dfcHJldGVuZCAoKSAKeyAKICAgIGxvY2FsIENPTkZJR19DSEVDSz0ifk1UUlIg fiFEUk0gQUNQSSBQQ0lfTVNJICFMT0NLREVQICFQQVhfS0VSTkVYRUNfUExVR0lOX01FVEhPRF9P UiI7CiAgICB1c2UgYW1kNjQgJiYgQ09ORklHX0NIRUNLKz0iIENPTVBBVCI7CiAgICBsb2NhbCBF UlJPUl9NVFJSPSJDT05GSUdfTVRSUiByZXF1aXJlZCBmb3IgZGlyZWN0IHJlbmRlcmluZy4iOwog ICAgbG9jYWwgRVJST1JfRFJNPSJDT05GSUdfRFJNIG11c3QgYmUgZGlzYWJsZWQgb3IgY29tcGls ZWQgYXMgYSBtb2R1bGUgYW5kIG5vdCBsb2FkZWQgZm9yIGRpcmVjdAoJCXJlbmRlcmluZyB0byB3 b3JrLiI7CiAgICBsb2NhbCBFUlJPUl9MT0NLREVQPSJDT05GSUdfTE9DS0RFUCAobG9jayB0cmFj a2luZykgZXhwb3J0cyB0aGUgc3ltYm9sIGxvY2tfYWNxdWlyZQoJCWFzIEdQTC1vbmx5LiBUaGlz IHByZXZlbnRzICR7UH0gZnJvbSBjb21waWxpbmcgd2l0aCBhbiBlcnJvciBsaWtlIHRoaXM6CgkJ RkFUQUw6IG1vZHBvc3Q6IEdQTC1pbmNvbXBhdGlibGUgbW9kdWxlIGZnbHJ4LmtvIHVzZXMgR1BM LW9ubHkgc3ltYm9sICdsb2NrX2FjcXVpcmUnIjsKICAgIGxvY2FsIEVSUk9SX1BBWF9LRVJORVhF Q19QTFVHSU5fTUVUSE9EX09SPSJUaGlzIGNvbmZpZyBvcHRpb24gd2lsbCBjYXVzZQoJCWtlcm5l bCB0byByZWplY3QgbG9hZGluZyB0aGUgZmdscnggbW9kdWxlIHdpdGgKCQlcIkVSUk9SOiBjb3Vs ZCBub3QgaW5zZXJ0ICdmZ2xyeCc6IEV4ZWMgZm9ybWF0IGVycm9yLlwiCgkJWW91IG1heSB3YW50 IHRvIHRyeSBDT05GSUdfUEFYX0tFUk5FWEVDX1BMVUdJTl9NRVRIT0RfQlRTIGluc3RlYWQuIjsK ICAgIGxvY2FsIEVSUk9SX0JLTD0iQ09ORklHX0JLTCBtdXN0IGJlIGVuYWJsZWQgZm9yIGtlcm5l bHMgMi42LjM3LTIuNi4zOC4iOwogICAgaWYgdXNlIG1vZHVsZXM7IHRoZW4KICAgICAgICBsaW51 eC1pbmZvX3BrZ19zZXR1cDsKICAgICAgICByZXF1aXJlX2NvbmZpZ3VyZWRfa2VybmVsOwogICAg ICAgIGtlcm5lbF9pcyBnZSAyIDYgMzcgJiYga2VybmVsX2lzIGxlIDIgNiAzOCAmJiBDT05GSUdf Q0hFQ0srPSIgQktMIjsKICAgICAgICBjaGVja19leHRyYV9jb25maWc7CiAgICAgICAgaWYgISBs aW51eF9jaGtjb25maWdfcHJlc2VudCBBR1AgJiYgISBsaW51eF9jaGtjb25maWdfcHJlc2VudCBQ Q0lFUE9SVEJVUzsgdGhlbgogICAgICAgICAgICBld2FybiAiWW91IGRvbid0IGhhdmUgQUdQIGFu ZC9vciBQQ0llIHN1cHBvcnQgZW5hYmxlZCBpbiB0aGUga2VybmVsIjsKICAgICAgICAgICAgZXdh cm4gIkRpcmVjdCByZW5kZXJpbmcgd2lsbCBub3Qgd29yay4iOwogICAgICAgIGZpOwogICAgZmk7 CiAgICBpZiAhIGhhcyBYVCAke1BBWF9NQVJLSU5HU30gJiYgdXNlIHBheF9rZXJuZWw7IHRoZW4K ICAgICAgICBld2FybiAiWW91IGhhdmUgZGlzYWJsZWQgeGF0dHIgcGF4IG1hcmtpbmdzIGZvciBw b3J0YWdlLiI7CiAgICAgICAgZXdhcm4gIlRoaXMgd2lsbCBsaWtlbHkgY2F1c2UgcHJvZ3JhbXMg dXNpbmcgYXRpLWRyaXZlcnMgcHJvdmlkZWQiOwogICAgICAgIGV3YXJuICJsaWJyYXJpZXMgdG8g YmUga2lsbGVkIGtlcm5lbC4iOwogICAgZmkKfQpwa2dfc2V0dXAgKCkgCnsgCiAgICBpZiB1c2Ug bW9kdWxlczsgdGhlbgogICAgICAgIE1PRFVMRV9OQU1FUz0iZmdscngodmlkZW86JHtTfS8ke0ZP TERFUl9QUkVGSVh9L2xpYi9tb2R1bGVzL2ZnbHJ4L2J1aWxkX21vZC8yLjYueCkiOwogICAgICAg IEJVSUxEX1RBUkdFVFM9Imttb2RfYnVpbGQiOwogICAgICAgIGxpbnV4LW1vZF9wa2dfc2V0dXA7 CiAgICAgICAgQlVJTERfUEFSQU1TPSJHQ0NfVkVSX01BSj0kKGdjYy1tYWpvci12ZXJzaW9uKSBL VkVSPSR7S1ZfRlVMTH0gS0RJUj0ke0tWX0RJUn0iOwogICAgICAgIEJVSUxEX1BBUkFNUz0iJHtC VUlMRF9QQVJBTVN9IENGTEFHU19NT0RVTEUrPVwiLURNT0RVTEUgLURBVEkgLURGR0xcIiI7CiAg ICAgICAgaWYgZ3JlcCAtcSBhcmNoX2NvbXBhdF9hbGxvY191c2VyX3NwYWNlICR7S1ZfRElSfS9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9jb21wYXQuaDsgdGhlbgogICAgICAgICAgICBCVUlMRF9QQVJB TVM9IiR7QlVJTERfUEFSQU1TfSBDRkxBR1NfTU9EVUxFKz0tRENPTVBBVF9BTExPQ19VU0VSX1NQ QUNFPWFyY2hfY29tcGF0X2FsbG9jX3VzZXJfc3BhY2UiOwogICAgICAgIGVsc2UKICAgICAgICAg ICAgQlVJTERfUEFSQU1TPSIke0JVSUxEX1BBUkFNU30gQ0ZMQUdTX01PRFVMRSs9LURDT01QQVRf QUxMT0NfVVNFUl9TUEFDRT1jb21wYXRfYWxsb2NfdXNlcl9zcGFjZSI7CiAgICAgICAgZmk7CiAg ICBmaTsKICAgIE1PRFVMRV9ESVI9IiR7U30vJHtGT0xERVJfUFJFRklYfS9saWIvbW9kdWxlcy9m Z2xyeC9idWlsZF9tb2QiOwogICAgQkFTRV9ESVI9IiR7U30veHBpYyI7CiAgICBpZiB1c2UgYW1k NjQ7IHRoZW4KICAgICAgICBNWV9CQVNFX0RJUj0iJHtCQVNFX0RJUn1fNjRhIjsKICAgICAgICBQ S0dfTElCRElSPWxpYjY0OwogICAgICAgIEFSQ0hfRElSPSIke1N9L2FyY2gveDg2XzY0IjsKICAg IGVsc2UKICAgICAgICBNWV9CQVNFX0RJUj0iJHtCQVNFX0RJUn0iOwogICAgICAgIFBLR19MSUJE SVI9bGliOwogICAgICAgIEFSQ0hfRElSPSIke1N9L2FyY2gveDg2IjsKICAgIGZpOwogICAgZWxv ZzsKICAgIGVsb2cgIlBsZWFzZSBub3RlIHRoYXQgdGhpcyBkcml2ZXIgb25seSBzdXBwb3J0cyBn cmFwaGljIGNhcmRzIGJhc2VkIG9uIjsKICAgIGVsb2cgIkV2ZXJncmVlbiBjaGlwc2V0IGFuZCBu ZXdlci4iOwogICAgZWxvZyAiVGhpcyBpbmNsdWRlcyB0aGUgQU1EIFJhZGVvbiBIRCA1NDAwKyBz ZXJpZXMgYXQgdGhpcyBtb21lbnQuIjsKICAgIGVsb2c7CiAgICBlbG9nICJJZiB5b3VyIGNhcmQg aXMgb2xkZXIgdGhlbiB1c2UgJHtDQVRFR09SWX0veGY4Ni12aWRlby1hdGkiOwogICAgZWxvZyAi Rm9yIG1pZ3JhdGlvbiBpbmZvcm1hdGlvbnMgcGxlYXNlIHJlZmVyIHRvOiI7CiAgICBlbG9nICJo dHRwOi8vd3d3LmdlbnRvby5vcmcvcHJvai9lbi9kZXNrdG9wL3gveDExL2F0aS1taWdyYXRpb24t Z3VpZGUueG1sIjsKICAgIGVpbmZvCn0KcHJlc2VydmVfb2xkX2xpYiAoKSAKeyAKICAgIF9ldXRp bHNfZXByZWZpeF9pbml0OwogICAgaWYgW1sgJHtFQlVJTERfUEhBU0V9ICE9ICJwcmVpbnN0IiBd XTsgdGhlbgogICAgICAgIGVlcnJvciAicHJlc2VydmVfb2xkX2xpYigpIG11c3QgYmUgY2FsbGVk IGZyb20gcGtnX3ByZWluc3QoKSBvbmx5IjsKICAgICAgICBkaWUgIkludmFsaWQgcHJlc2VydmVf b2xkX2xpYigpIHVzYWdlIjsKICAgIGZpOwogICAgW1sgLXogJDEgXV0gJiYgZGllICJVc2FnZTog cHJlc2VydmVfb2xkX2xpYiA8bGlicmFyeSB0byBwcmVzZXJ2ZT4gW21vcmUgbGlicmFyaWVzIHRv IHByZXNlcnZlXSI7CiAgICBoYXMgcHJlc2VydmUtbGlicyAke0ZFQVRVUkVTfSAmJiByZXR1cm4g MDsKICAgIGxvY2FsIGxpYiBkaXI7CiAgICBmb3IgbGliIGluICIkQCI7CiAgICBkbwogICAgICAg IFtbIC1lICR7RVJPT1R9LyR7bGlifSBdXSB8fCBjb250aW51ZTsKICAgICAgICBkaXI9JHtsaWIl Lyp9OwogICAgICAgIGRvZGlyICR7ZGlyfSB8fCBkaWUgImRvZGlyICR7ZGlyfSBmYWlsZWQiOwog ICAgICAgIGNwICIke0VST09UfSIvJHtsaWJ9ICIke0VEfSIvJHtsaWJ9IHx8IGRpZSAiY3AgJHts aWJ9IGZhaWxlZCI7CiAgICAgICAgdG91Y2ggIiR7RUR9Ii8ke2xpYn07CiAgICBkb25lCn0KcHJl c2VydmVfb2xkX2xpYl9ub3RpZnkgKCkgCnsgCiAgICBpZiBbWyAke0VCVUlMRF9QSEFTRX0gIT0g InBvc3RpbnN0IiBdXTsgdGhlbgogICAgICAgIGVlcnJvciAicHJlc2VydmVfb2xkX2xpYl9ub3Rp ZnkoKSBtdXN0IGJlIGNhbGxlZCBmcm9tIHBrZ19wb3N0aW5zdCgpIG9ubHkiOwogICAgICAgIGRp ZSAiSW52YWxpZCBwcmVzZXJ2ZV9vbGRfbGliX25vdGlmeSgpIHVzYWdlIjsKICAgIGZpOwogICAg aGFzIHByZXNlcnZlLWxpYnMgJHtGRUFUVVJFU30gJiYgcmV0dXJuIDA7CiAgICBfZXV0aWxzX2Vw cmVmaXhfaW5pdDsKICAgIGxvY2FsIGxpYiBub3RpY2U9MDsKICAgIGZvciBsaWIgaW4gIiRAIjsK ICAgIGRvCiAgICAgICAgW1sgLWUgJHtFUk9PVH0vJHtsaWJ9IF1dIHx8IGNvbnRpbnVlOwogICAg ICAgIGlmIFtbICR7bm90aWNlfSAtZXEgMCBdXTsgdGhlbgogICAgICAgICAgICBub3RpY2U9MTsK ICAgICAgICAgICAgZXdhcm4gIk9sZCB2ZXJzaW9ucyBvZiBpbnN0YWxsZWQgbGlicmFyaWVzIHdl cmUgZGV0ZWN0ZWQgb24geW91ciBzeXN0ZW0uIjsKICAgICAgICAgICAgZXdhcm4gIkluIG9yZGVy IHRvIGF2b2lkIGJyZWFraW5nIHBhY2thZ2VzIHRoYXQgZGVwZW5kIG9uIHRoZXNlIG9sZCBsaWJz LCI7CiAgICAgICAgICAgIGV3YXJuICJ0aGUgbGlicmFyaWVzIGFyZSBub3QgYmVpbmcgcmVtb3Zl ZC4gIFlvdSBuZWVkIHRvIHJ1biByZXZkZXAtcmVidWlsZCI7CiAgICAgICAgICAgIGV3YXJuICJp biBvcmRlciB0byByZW1vdmUgdGhlc2Ugb2xkIGRlcGVuZGVuY2llcy4gIElmIHlvdSBkbyBub3Qg aGF2ZSB0aGlzIjsKICAgICAgICAgICAgZXdhcm4gImhlbHBlciBwcm9ncmFtLCBzaW1wbHkgZW1l cmdlIHRoZSAnZ2VudG9vbGtpdCcgcGFja2FnZS4iOwogICAgICAgICAgICBld2FybjsKICAgICAg ICBmaTsKICAgICAgICBld2FybiAiICAjIHJldmRlcC1yZWJ1aWxkIC0tbGlicmFyeSAnJHtsaWJ9 JyAmJiBybSAnJHtsaWJ9JyI7CiAgICBkb25lCn0KcHJ1bmVfbGlidG9vbF9maWxlcyAoKSAKeyAK ICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIkQCI7CiAgICBsb2NhbCByZW1v dmluZ19hbGwgcmVtb3ZpbmdfbW9kdWxlcyBvcHQ7CiAgICBfZXV0aWxzX2VwcmVmaXhfaW5pdDsK ICAgIGZvciBvcHQgaW4gIiRAIjsKICAgIGRvCiAgICAgICAgY2FzZSAiJHtvcHR9IiBpbiAKICAg ICAgICAgICAgLS1hbGwpCiAgICAgICAgICAgICAgICByZW1vdmluZ19hbGw9MTsKICAgICAgICAg ICAgICAgIHJlbW92aW5nX21vZHVsZXM9MQogICAgICAgICAgICA7OwogICAgICAgICAgICAtLW1v ZHVsZXMpCiAgICAgICAgICAgICAgICByZW1vdmluZ19tb2R1bGVzPTEKICAgICAgICAgICAgOzsK ICAgICAgICAgICAgKikKICAgICAgICAgICAgICAgIGRpZSAiSW52YWxpZCBhcmd1bWVudCB0byAk e0ZVTkNOQU1FfSgpOiAke29wdH0iCiAgICAgICAgICAgIDs7CiAgICAgICAgZXNhYzsKICAgIGRv bmU7CiAgICBsb2NhbCBmOwogICAgbG9jYWwgcXVldWU9KCk7CiAgICB3aGlsZSBJRlM9IHJlYWQg LXIgLWQgJycgZjsgZG8KICAgICAgICBsb2NhbCBhcmNoaXZlZmlsZT0ke2YvJS5sYS8uYX07CiAg ICAgICAgaWYgISBzZWQgLW4gLWUgJy9eIyBHZW5lcmF0ZWQgYnkgLipsaWJ0b29sL3EwOzRxMScg IiR7Zn0iOyB0aGVuCiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIGZpOwogICAgICAgIFtb ICR7Zn0gIT0gJHthcmNoaXZlZmlsZX0gXV0gfHwgZGllICdyZWdleCBzYW5pdHkgY2hlY2sgZmFp bGVkJzsKICAgICAgICBsb2NhbCByZWFzb24gcGtnY29uZmlnX3NjYW5uZWQ7CiAgICAgICAgbG9j YWwgc25vdGxpbms9JChzZWQgLW4gLWUgJ3M6XnNob3VsZG5vdGxpbms9OjpwJyAiJHtmfSIpOwog ICAgICAgIGlmIFtbICR7c25vdGxpbmt9ID09IHllcyBdXTsgdGhlbgogICAgICAgICAgICBpZiBb WyAtZiAke2FyY2hpdmVmaWxlfSBdXTsgdGhlbgogICAgICAgICAgICAgICAgZWluZm8gIlJlbW92 aW5nIHVubmVjZXNzYXJ5ICR7YXJjaGl2ZWZpbGUjJHtEJS99fSAoc3RhdGljIHBsdWdpbikiOwog ICAgICAgICAgICAgICAgcXVldWUrPSgiJHthcmNoaXZlZmlsZX0iKTsKICAgICAgICAgICAgZmk7 CiAgICAgICAgICAgIGlmIFtbIC1uICR7cmVtb3ZpbmdfbW9kdWxlc30gXV07IHRoZW4KICAgICAg ICAgICAgICAgIHJlYXNvbj0nbW9kdWxlJzsKICAgICAgICAgICAgZmk7CiAgICAgICAgZWxzZQog ICAgICAgICAgICBpZiBbWyAtbiAke3JlbW92aW5nX2FsbH0gXV07IHRoZW4KICAgICAgICAgICAg ICAgIHJlYXNvbj0ncmVxdWVzdGVkJzsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg aWYgW1sgISAtZiAke2FyY2hpdmVmaWxlfSBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgIHJl YXNvbj0nbm8gc3RhdGljIGFyY2hpdmUnOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAg ICAgICAgICAgIGlmIFtbICEgLW4gJChzZWQgLW5yZSAJCQkJCSJzL14oZGVwZW5kZW5jeV9saWJz fGluaGVyaXRlZF9saW5rZXJfZmxhZ3MpPScoLiopJyQvXDIvcCIgCQkJCQkiJHtmfSIpIF1dOyB0 aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbj0nbm8gbGlicyAmIGZsYWdzJzsKICAg ICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFtbICEgLW4g JHtwa2djb25maWdfc2Nhbm5lZH0gXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxvY2FsIHBjX2xpYnM9KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBbWyAhIC1u ICR7cmVtb3ZpbmdfYWxsfSBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxvY2FsIHBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsIHRmPSR7VH0v cHJ1bmUtbHQtZmlsZXMucGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWwg cGtnY29uZj0kKHRjLWdldFBLR19DT05GSUcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHdoaWxlIElGUz0gcmVhZCAtciAtZCAnJyBwYzsgZG8KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbG9jYWwgYXJnIGxpYnM7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmICR7cGtnY29uZn0gLS1leGlzdHMgIiR7cGN9IiAmPi9kZXYvbnVsbDsgdGhl bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VkIC1lICcvXlJlcXVp cmVzOi9kJyAiJHtwY30iID4gIiR7dGZ9IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxpYnM9JCgke3BrZ2NvbmZ9IC0tbGlicyAiJHt0Zn0iKTsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlicz0kKHNlZCAtbmUgJ3MvXkxpYnM6Ly9wJyAiJHtwY30iKTsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZvciBhcmcgaW4gJHtsaWJzfTsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm IFtbICR7YXJnfSA9PSAtbCogXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiBbWyAke2FyZ30gPT0gJyokKicgXV07IHRoZW4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXFhd2FybiAiJHtGVU5DTkFNRX06 IHZhcmlhYmxlIHN1YnN0aXR1dGlvbiBsaWtlbHkgZmFpbGVkIGluICR7cGN9IjsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXFhd2FybiAiKGFyZzogJHth cmd9KSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVx YXdhcm4gIk1vc3QgbGlrZWx5LCB5b3UgbmVlZCB0byBhZGQgdmlydHVhbC9wa2djb25maWcgdG8g REVQRU5ELiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmk7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNfbGlicys9KGxp YiR7YXJnIy1sfS5sYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm aTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZTsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkb25lIDwgPChmaW5kICIke0R9IiAtdHlwZSBmIC1uYW1lICcq LnBjJyAtcHJpbnQwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBybSAtZiAiJHt0 Zn0iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwa2djb25maWdfc2Nhbm5lZD0xOwogICAgICAgICAgICAgICAgICAgICAgICBmaTsK ICAgICAgICAgICAgICAgICAgICAgICAgaGFzICIke2YjIyovfSIgIiR7cGNfbGlic1tAXX0iICYm IHJlYXNvbj0nY292ZXJlZCBieSAucGMnOwogICAgICAgICAgICAgICAgICAgIGZpOwogICAgICAg ICAgICAgICAgZmk7CiAgICAgICAgICAgIGZpOwogICAgICAgIGZpOwogICAgICAgIGlmIFtbIC1u ICR7cmVhc29ufSBdXTsgdGhlbgogICAgICAgICAgICBlaW5mbyAiUmVtb3ZpbmcgdW5uZWNlc3Nh cnkgJHtmIyR7RCUvfX0gKCR7cmVhc29ufSkiOwogICAgICAgICAgICBxdWV1ZSs9KCIke2Z9Iik7 CiAgICAgICAgZmk7CiAgICBkb25lIDwgPChmaW5kICIke0VEfSIgLXh0eXBlIGYgLW5hbWUgJyou bGEnIC1wcmludDApOwogICAgaWYgW1sgLW4gJHtxdWV1ZVtAXX0gXV07IHRoZW4KICAgICAgICBy bSAtZiAiJHtxdWV1ZVtAXX0iOwogICAgZmkKfQpxZWVycm9yICgpIAp7IAogICAgcW91dCBlZXJy b3IgIiR7QH0iCn0KcWVpbmZvICgpIAp7IAogICAgcW91dCBlaW5mbyAiJHtAfSIKfQpxZXdhcm4g KCkgCnsgCiAgICBxb3V0IGV3YXJuICIke0B9Igp9CnFvdXQgKCkgCnsgCiAgICBsb2NhbCBvdXRw dXRtc2cgdHlwZTsKICAgIHR5cGU9JHsxfTsKICAgIHNoaWZ0OwogICAgb3V0cHV0bXNnPSIke0B9 IjsKICAgIGNhc2UgIiR7RUJVSUxEX1BIQVNFfSIgaW4gCiAgICAgICAgZGVwZW5kKQogICAgICAg ICAgICB1bnNldCBvdXRwdXRtc2cKICAgICAgICA7OwogICAgICAgIGNsZWFuKQogICAgICAgICAg ICB1bnNldCBvdXRwdXRtc2cKICAgICAgICA7OwogICAgICAgIHByZWluc3QpCiAgICAgICAgICAg IHVuc2V0IG91dHB1dG1zZwogICAgICAgIDs7CiAgICBlc2FjOwogICAgWyAtbiAiJHtvdXRwdXRt c2d9IiBdICYmICR7dHlwZX0gIiR7b3V0cHV0bXNnfSIKfQpyZW1vdmVfbW9kdWxlZGIgKCkgCnsg CiAgICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAkKjsKICAgIGxvY2FsIE1PRFVM RURCX0RJUj0iJHtST09UfSIvdmFyL2xpYi9tb2R1bGUtcmVidWlsZC87CiAgICBtb3ZlX29sZF9t b2R1bGVkYjsKICAgIGlmIGdyZXAgLXFzICR7Q0FURUdPUll9LyR7UE59LSR7UFZSfSAiJHtNT0RV TEVEQl9ESVJ9Ii9tb2R1bGVkYjsgdGhlbgogICAgICAgIGVpbmZvICJSZW1vdmluZyAke0NBVEVH T1JZfS8ke1BOfS0ke1BWUn0gZnJvbSBtb2R1bGVkYi4iOwogICAgICAgIHNlZCAtaSAtZSAiLy4q JHtDQVRFR09SWX1cLyR7UE59LSR7UFZSfS4qL2QiICIke01PRFVMRURCX0RJUn0iL21vZHVsZWRi OwogICAgZmkKfQpyZXBsYWNlX2FsbF92ZXJzaW9uX3NlcGFyYXRvcnMgKCkgCnsgCiAgICBsb2Nh bCBjPSgkKGdldF9hbGxfdmVyc2lvbl9jb21wb25lbnRzICIkezI6LSR7UFZ9fSIpKTsKICAgIGM9 JHtjW0BdLy9bLS5fXS8kMX07CiAgICBlY2hvICR7Yy8vIH0KfQpyZXBsYWNlX3ZlcnNpb25fc2Vw YXJhdG9yICgpIAp7IAogICAgZXNob3B0c19wdXNoIC1zIGV4dGdsb2I7CiAgICBsb2NhbCB3IGMg dj0iJHszOi0ke1BWfX0iOwogICAgZGVjbGFyZSAtaSBpIGZvdW5kPTA7CiAgICB3PSR7MTotMX07 CiAgICBjPSgkKGdldF9hbGxfdmVyc2lvbl9jb21wb25lbnRzICR7dn0pKTsKICAgIGlmIFtbICR7 d30gIT0gKltbOmRpZ2l0Ol1dKiBdXTsgdGhlbgogICAgICAgIGZvciAoKGkgPSAwOyBpIDwgJHsj Y1tAXX07IGkrKykpCiAgICAgICAgZG8KICAgICAgICAgICAgaWYgW1sgJHtjW2ldfSA9PSAke3d9 IF1dOyB0aGVuCiAgICAgICAgICAgICAgICBjW2ldPSR7Mn07CiAgICAgICAgICAgICAgICBicmVh azsKICAgICAgICAgICAgZmk7CiAgICAgICAgZG9uZTsKICAgIGVsc2UKICAgICAgICBmb3IgKChp ID0gMDsgaSA8ICR7I2NbQF19OyBpKyspKQogICAgICAgIGRvCiAgICAgICAgICAgIGlmIFtbIC1u ICIke2NbaV0vL1teLS5fXX0iIF1dOyB0aGVuCiAgICAgICAgICAgICAgICBmb3VuZCs9MTsKICAg ICAgICAgICAgICAgIGlmICgoZm91bmQgPT0gdykpOyB0aGVuCiAgICAgICAgICAgICAgICAgICAg Y1tpXT0kezJ9OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZmk7 CiAgICAgICAgICAgIGZpOwogICAgICAgIGRvbmU7CiAgICBmaTsKICAgIGM9JHtjWypdfTsKICAg IGVjaG8gJHtjLy8gfTsKICAgIGVzaG9wdHNfcG9wCn0KcmVxdWlyZV9jb25maWd1cmVkX2tlcm5l bCAoKSAKeyAKICAgIGlmICEgbGludXhfY29uZmlnX3NyY19leGlzdHM7IHRoZW4KICAgICAgICBx ZWVycm9yICJDb3VsZCBub3QgZmluZCBhIHVzYWJsZSAuY29uZmlnIGluIHRoZSBrZXJuZWwgc291 cmNlIGRpcmVjdG9yeS4iOwogICAgICAgIHFlZXJyb3IgIlBsZWFzZSBlbnN1cmUgdGhhdCAke0tF Uk5FTF9ESVJ9IHBvaW50cyB0byBhIGNvbmZpZ3VyZWQgc2V0IG9mIExpbnV4IHNvdXJjZXMuIjsK ICAgICAgICBxZWVycm9yICJJZiB5b3UgYXJlIHVzaW5nIEtCVUlMRF9PVVRQVVQsIHBsZWFzZSBz ZXQgdGhlIGVudmlyb25tZW50IHZhciBzbyB0aGF0IjsKICAgICAgICBxZWVycm9yICJpdCBwb2lu dHMgdG8gdGhlIG5lY2Vzc2FyeSBvYmplY3QgZGlyZWN0b3J5IHNvIHRoYXQgaXQgbWlnaHQgZmlu ZCAuY29uZmlnLiI7CiAgICAgICAgZGllICJLZXJuZWwgbm90IGNvbmZpZ3VyZWQ7IG5vIC5jb25m aWcgZm91bmQgaW4gJHtLVl9PVVRfRElSfSI7CiAgICBmaQp9CnNldF9hcmNoX3RvX2tlcm5lbCAo KSAKeyAKICAgIGV4cG9ydCBBUkNIPSQodGMtYXJjaC1rZXJuZWwpCn0Kc2V0X2FyY2hfdG9fcG9y dGFnZSAoKSAKeyAKICAgIGV4cG9ydCBBUkNIPSQodGMtYXJjaCkKfQpzZXRfa3ZvYmogKCkgCnsg CiAgICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAkKjsKICAgIGlmIGtlcm5lbF9p cyBnZSAyIDY7IHRoZW4KICAgICAgICBLVl9PQko9ImtvIjsKICAgIGVsc2UKICAgICAgICBLVl9P Qko9Im8iOwogICAgZmkKfQpzcmNfY29tcGlsZSAoKSAKeyAKICAgIHVzZSBtb2R1bGVzICYmIGxp bnV4LW1vZF9zcmNfY29tcGlsZTsKICAgIGViZWdpbiAiQnVpbGRpbmcgZmdsX2dseGdlYXJzIjsK ICAgIGNkICIke1N9Ii9leHRyYS9mZ2xfZ2x4Z2VhcnM7CiAgICAiJCh0Yy1nZXRDQykiIC1vIGZn bF9nbHhnZWFycyAke0NGTEFHU30gJHtMREZMQUdTfSAtRFVTRV9HTFUgLUkiJHtTfSIvJHtGT0xE RVJfUFJFRklYfXVzci9pbmNsdWRlIGZnbF9nbHhnZWFycy5jIC1sR0wgLWxHTFUgLWxYMTEgLWxt IHx8IGRpZSAiZmdsX2dseGdlYXJzIGJ1aWxkIGZhaWxlZCI7CiAgICBlZW5kICQ/Cn0Kc3JjX2Nv bmZpZ3VyZSAoKSAKeyAKICAgIF9fZWFwaTJfc3JjX2NvbmZpZ3VyZSAiJEAiCn0Kc3JjX2luc3Rh bGwgKCkgCnsgCiAgICB1c2UgbW9kdWxlcyAmJiBsaW51eC1tb2Rfc3JjX2luc3RhbGw7CiAgICBl Y2hvICJDT0xPTl9TRVBBUkFURUQ9TElCR0xfRFJJVkVSU19QQVRIIiA+ICIke1R9LzAzYXRpLWNv bG9uLXNlcCI7CiAgICBkb2VudmQgIiR7VH0vMDNhdGktY29sb24tc2VwIiB8fCBkaWU7CiAgICBp ZiBoYXNfbXVsdGlsaWJfcHJvZmlsZTsgdGhlbgogICAgICAgIGxvY2FsIE9BQkk9JHtBQkl9Owog ICAgICAgIGZvciBBQkkgaW4gJChnZXRfaW5zdGFsbF9hYmlzKTsKICAgICAgICBkbwogICAgICAg ICAgICBzcmNfaW5zdGFsbC1saWJzOwogICAgICAgIGRvbmU7CiAgICAgICAgQUJJPSR7T0FCSX07 CiAgICAgICAgdW5zZXQgT0FCSTsKICAgIGVsc2UKICAgICAgICBzcmNfaW5zdGFsbC1saWJzOwog ICAgZmk7CiAgICBleGVpbnRvIC91c3IvJChnZXRfbGliZGlyKS94b3JnL21vZHVsZXMvZHJpdmVy czsKICAgIGRvZXhlICIke01ZX0JBU0VfRElSfSIvdXNyL1gxMVI2LyR7UEtHX0xJQkRJUn0vbW9k dWxlcy9kcml2ZXJzL2ZnbHJ4X2Rydi5zbzsKICAgIGV4ZWludG8gL3Vzci8kKGdldF9saWJkaXIp L3hvcmcvbW9kdWxlcy9saW51eDsKICAgIGRvZXhlICIke01ZX0JBU0VfRElSfSIvdXNyL1gxMVI2 LyR7UEtHX0xJQkRJUn0vbW9kdWxlcy9saW51eC9saWJmZ2xyeGRybS5zbzsKICAgIGV4ZWludG8g L3Vzci8kKGdldF9saWJkaXIpL3hvcmcvbW9kdWxlczsKICAgIGRvZXhlICIke01ZX0JBU0VfRElS fSIvdXNyL1gxMVI2LyR7UEtHX0xJQkRJUn0vbW9kdWxlcy97Z2xlc3guc28sYW1keG1tLnNvfTsK ICAgIGludG8gL29wdDsKICAgIGRvc2JpbiAiJHtBUkNIX0RJUn0iL3Vzci9zYmluL2F0aWV2ZW50 c2Q7CiAgICB1c2UgcXQ0ICYmIGRvc2JpbiAiJHtBUkNIX0RJUn0iL3Vzci9zYmluL2FtZG5vdGlm eXVpOwogICAgZG9iaW4gIiR7QVJDSF9ESVJ9Ii91c3IvYmluL2NsaW5mbzsKICAgIGRvYmluICIk e0FSQ0hfRElSfSIvdXNyL1gxMVI2L2Jpbi8qOwogICAgaW5zaW50byAvZXRjL2F0aTsKICAgIGV4 ZWludG8gL2V0Yy9hdGk7CiAgICBkb2lucyAke0ZPTERFUl9QUkVGSVh9ZXRjL2F0aS97bG9nbyos Y29udHJvbCxzaWduYXR1cmUsYW1kcGNzZGIuZGVmYXVsdH07CiAgICBkb2V4ZSAke0ZPTERFUl9Q UkVGSVh9ZXRjL2F0aS9hdXRoYXRpZXZlbnRzZC5zaDsKICAgIGluc2ludG8gL3VzcjsKICAgIGRv aW5zIC1yICR7Rk9MREVSX1BSRUZJWH11c3IvaW5jbHVkZTsKICAgIGluc2ludG8gL3Vzci9pbmNs dWRlL1gxMS9leHRlbnNpb25zOwogICAgaW50byAvdXNyOwogICAgZG9zYmluICR7Rk9MREVSX1BS RUZJWH11c3Ivc2Jpbi8qOwogICAgaWYgdXNlIHF0NDsgdGhlbgogICAgICAgIGluc2ludG8gL3Vz ci9zaGFyZTsKICAgICAgICBkb2lucyAtciAke0ZPTERFUl9QUkVGSVh9dXNyL3NoYXJlL2F0aTsK ICAgICAgICBpbnNpbnRvIC91c3Ivc2hhcmUvcGl4bWFwczsKICAgICAgICBkb2lucyAke0ZPTERF Ul9QUkVGSVh9dXNyL3NoYXJlL2ljb25zL2NjY19sYXJnZS54cG07CiAgICAgICAgbWFrZV9kZXNr dG9wX2VudHJ5IGFtZGNjY2xlICdBTUQgQ2F0YWx5c3QgQ29udHJvbCBDZW50ZXInIGNjY19sYXJn ZSBTeXN0ZW07CiAgICBmaTsKICAgIGRvaHRtbCAtciAke0ZPTERFUl9QUkVGSVh9dXNyL3NoYXJl L2RvYy9mZ2xyeDsKICAgIGRvbWFuICR7Rk9MREVSX1BSRUZJWH11c3Ivc2hhcmUvbWFuL21hbjgv YXRpZXZlbnRzZC44OwogICAgcHVzaGQgJHtGT0xERVJfUFJFRklYfXVzci9zaGFyZS9kb2MvZmds cngvZXhhbXBsZXMvZXRjL2FjcGkgPiAvZGV2L251bGw7CiAgICBleGVpbnRvIC9ldGMvYWNwaTsK ICAgIGRvZXhlIGF0aS1wb3dlcm1vZGUuc2g7CiAgICBpbnNpbnRvIC9ldGMvYWNwaS9ldmVudHM7 CiAgICBkb2lucyBldmVudHMvKjsKICAgIHBvcGQgPiAvZGV2L251bGw7CiAgICBkb2JpbiBleHRy YS9mZ2xfZ2x4Z2VhcnMvZmdsX2dseGdlYXJzOwogICAgbmV3ZG9jIGV4dHJhL2ZnbF9nbHhnZWFy cy9SRUFETUUgUkVBRE1FLmZnbF9nbHhnZWFyczsKICAgIG5ld2luaXRkICIke0ZJTEVTRElSfSIv YXRpZXZlbnRzZC5pbml0IGF0aWV2ZW50c2Q7CiAgICBlY2hvICdBVElFVkVOVFNET1BUUz0iIicg PiAiJHtUfSIvYXRpZXZlbnRzZC5jb25mOwogICAgbmV3Y29uZmQgIiR7VH0iL2F0aWV2ZW50c2Qu Y29uZiBhdGlldmVudHNkOwogICAgZXhlaW50byAvdXNyLyQoZ2V0X2xpYmRpcikvZmdscng7CiAg ICBkb2V4ZSAiJHtGSUxFU0RJUn0iL3N3aXRjaGxpYkdMIHx8IGRpZSAiZG9leGUgc3dpdGNobGli R0wgZmFpbGVkIjsKICAgIGNwICIke0ZJTEVTRElSfSIvc3dpdGNobGliR0wgIiR7VH0iL3N3aXRj aGxpYmdseDsKICAgIGRvZXhlICIke1R9Ii9zd2l0Y2hsaWJnbHggfHwgZGllICJkb2V4ZSBzd2l0 Y2hsaWJnbHggZmFpbGVkIgp9CnNyY19pbnN0YWxsLWxpYnMgKCkgCnsgCiAgICBpZiBbWyAiJHtB Qkl9IiA9PSAiYW1kNjQiIF1dOyB0aGVuCiAgICAgICAgbG9jYWwgRVhfQkFTRV9ESVI9IiR7QkFT RV9ESVJ9XzY0YSI7CiAgICAgICAgbG9jYWwgcGtnbGliZGlyPWxpYjY0OwogICAgICAgIGxvY2Fs IE1ZX0FSQ0hfRElSPSIke1N9L2FyY2gveDg2XzY0IjsKICAgICAgICBsb2NhbCBvY2xzdWZmaXg9 NjQ7CiAgICBlbHNlCiAgICAgICAgbG9jYWwgRVhfQkFTRV9ESVI9IiR7QkFTRV9ESVJ9IjsKICAg ICAgICBsb2NhbCBwa2dsaWJkaXI9bGliOwogICAgICAgIGxvY2FsIE1ZX0FSQ0hfRElSPSIke1N9 L2FyY2gveDg2IjsKICAgICAgICBsb2NhbCBvY2xzdWZmaXg9MzI7CiAgICBmaTsKICAgIGVpbmZv ICJhdGkgdHJlZSAnJHtwa2dsaWJkaXJ9JyAtPiAnJChnZXRfbGliZGlyKScgb24gc3lzdGVtIjsK ICAgIGxvY2FsIEFUSV9ST09UPS91c3IvJChnZXRfbGliZGlyKS9vcGVuZ2wvYXRpOwogICAgbG9j YWwgbGlibWFqb3I9MSBsaWJtaW5vcj0yOwogICAgbG9jYWwgbGlidmVyPSR7bGlibWFqb3J9LiR7 bGlibWlub3J9OwogICAgZXhlaW50byAke0FUSV9ST09UfS9saWI7CiAgICBuZXdleGUgIiR7TVlf QVJDSF9ESVJ9Ii91c3IvWDExUjYvJHtwa2dsaWJkaXJ9L2ZnbHJ4L2ZnbHJ4LWxpYkdMLnNvLiR7 bGlidmVyfSBsaWJHTC5zby4ke2xpYnZlcn07CiAgICBkb3N5bSBsaWJHTC5zby4ke2xpYnZlcn0g JHtBVElfUk9PVH0vbGliL2xpYkdMLnNvLiR7bGlibWFqb3J9OwogICAgZG9zeW0gbGliR0wuc28u JHtsaWJ2ZXJ9ICR7QVRJX1JPT1R9L2xpYi9saWJHTC5zbzsKICAgIGV4ZWludG8gJHtBVElfUk9P VH0vZXh0ZW5zaW9uczsKICAgIGRvZXhlICIke0VYX0JBU0VfRElSfSIvdXNyL1gxMVI2LyR7cGtn bGliZGlyfS9tb2R1bGVzL2V4dGVuc2lvbnMvZmdscngvZmdscngtbGliZ2x4LnNvOwogICAgbXYg IiR7RH0iLyR7QVRJX1JPT1R9L2V4dGVuc2lvbnMve2ZnbHJ4LSx9bGliZ2x4LnNvOwogICAgZXhl aW50byAvdXNyLyQoZ2V0X2xpYmRpcik7CiAgICBkb2V4ZSAkKGZpbmQgIiR7TVlfQVJDSF9ESVJ9 Ii91c3IvWDExUjYvJHtwa2dsaWJkaXJ9IAkJLW1heGRlcHRoIDEgLXR5cGUgZiAtbmFtZSAnKi5z byonIC1ub3QgLW5hbWUgJypsaWJHTC5zbyonKTsKICAgIGluc2ludG8gL3Vzci8kKGdldF9saWJk aXIpOwogICAgZG9pbnMgJChmaW5kICIke01ZX0FSQ0hfRElSfSIvdXNyL1gxMVI2LyR7cGtnbGli ZGlyfSAJCS1tYXhkZXB0aCAxIC10eXBlIGYgLW5vdCAtbmFtZSAnKi5zbyonKTsKICAgIGV4ZWlu dG8gL3Vzci8kKGdldF9saWJkaXIpL2RyaTsKICAgIGRvZXhlICIke01ZX0FSQ0hfRElSfSIvdXNy L1gxMVI2LyR7cGtnbGliZGlyfS9tb2R1bGVzL2RyaS9mZ2xyeF9kcmkuc287CiAgICBleGVpbnRv IC91c3IvJChnZXRfbGliZGlyKS9PcGVuQ0wvdmVuZG9ycy9hbWQ7CiAgICBkb2V4ZSAiJHtNWV9B UkNIX0RJUn0iL3Vzci8ke3BrZ2xpYmRpcn0vbGliYW1kb2NsKi5zbyo7CiAgICBkb2V4ZSAiJHtN WV9BUkNIX0RJUn0iL3Vzci8ke3BrZ2xpYmRpcn0vbGliT3BlbkNMKi5zbyo7CiAgICBkb3N5bSBs aWJPcGVuQ0wuc28uJHtsaWJtYWpvcn0gL3Vzci8kKGdldF9saWJkaXIpL09wZW5DTC92ZW5kb3Jz L2FtZC9saWJPcGVuQ0wuc287CiAgICBleGVpbnRvIC91c3IvJChnZXRfbGliZGlyKTsKICAgIGRv ZXhlICIke01ZX0FSQ0hfRElSfSIvdXNyLyR7cGtnbGliZGlyfS9saWJhdGkqLnNvKjsKICAgIGlu c2ludG8gL2V0Yy9PcGVuQ0wvdmVuZG9ycy87CiAgICBjYXQgPiAiJHtUfSIvYW1kb2NsJHtvY2xz dWZmaXh9LmljZCAgPDwtRU9GCi91c3IvJChnZXRfbGliZGlyKS9PcGVuQ0wvdmVuZG9ycy9hbWQv bGliYW1kb2NsJHtvY2xzdWZmaXh9LnNvCkVPRgoKICAgIGRvaW5zICIke1R9Ii9hbWRvY2wke29j bHN1ZmZpeH0uaWNkOwogICAgbG9jYWwgZW52bmFtZT0iJHtUfSIvMDRhdGktZHJpLXBhdGg7CiAg ICBpZiBbWyAtbiAke0FCSX0gXV07IHRoZW4KICAgICAgICBlbnZuYW1lPSIke2Vudm5hbWV9LSR7 QUJJfSI7CiAgICBmaTsKICAgIGVjaG8gIkxJQkdMX0RSSVZFUlNfUEFUSD0vdXNyLyQoZ2V0X2xp YmRpcikvZHJpIiA+ICIke2Vudm5hbWV9IjsKICAgIGRvZW52ZCAiJHtlbnZuYW1lfSI7CiAgICBm b3Igc28gaW4gJChmaW5kICIke0R9Ii91c3IvJChnZXRfbGliZGlyKSAtbWF4ZGVwdGggMSAtbmFt ZSAqLnNvLlswLTldLlswLTldKTsKICAgIGRvCiAgICAgICAgbG9jYWwgc29uYW1lPSR7c28jIyov fTsKICAgICAgICBsb2NhbCBzb25hbWVfb25lPSR7c29uYW1lJS5bMC05XX07CiAgICAgICAgbG9j YWwgc29uYW1lX3plcm89JHtzb25hbWVfb25lJS5bMC05XX07CiAgICAgICAgZG9zeW0gJHtzb25h bWV9IC91c3IvJChnZXRfbGliZGlyKS8ke3NvbmFtZV9vbmV9OwogICAgICAgIGRvc3ltICR7c29u YW1lX29uZX0gL3Vzci8kKGdldF9saWJkaXIpLyR7c29uYW1lX3plcm99OwogICAgZG9uZTsKICAg IGRvZGlyIC9ldGMvcmV2ZGVwLXJlYnVpbGQvOwogICAgZWNobyAiU0VBUkNIX0RJUlNfTUFTSz1c Ii9vcHQvYmluL2NsaW5mb1wiIiA+ICIke0VEfS9ldGMvcmV2ZGVwLXJlYnVpbGQvNjItYXRpLWRy aXZlcnMiOwogICAgdXNlIHN0YXRpYy1saWJzIHx8IHJtIC1yZiAiJHtEfSIvdXNyLyQoZ2V0X2xp YmRpcikvbGliZmdscnhfZG0uYTsKICAgIGRvaGVhZGVyIHh2YmFfc2RrL2luY2x1ZGUvYW1keHZi YS5oOwogICAgaWYgdXNlIHBheF9rZXJuZWw7IHRoZW4KICAgICAgICBwYXgtbWFyayBtICIke0R9 Ii91c3IvbGliKi9vcGVuZ2wvYXRpL2xpYi9saWJHTC5zby4xLjIgfHwgZGllICJwYXgtbWFyayBm YWlsZWQiOwogICAgZmkKfQpzcmNfcHJlcGFyZSAoKSAKeyAKICAgIGlmIHVzZSBtb2R1bGVzOyB0 aGVuCiAgICAgICAgaWYgdXNlIGRlYnVnOyB0aGVuCiAgICAgICAgICAgIHNlZCAtaSAnL14jZGVm aW5lIERSTV9ERUJVR19DT0RFL3MvMC8xLycgIiR7TU9EVUxFX0RJUn0vZmlyZWdsX3B1YmxpYy5j IiB8fCBkaWUgIkZhaWxlZCB0byBlbmFibGUgZGVidWcgb3V0cHV0LiI7CiAgICAgICAgZmk7CiAg ICBmaTsKICAgIHJtICIke0FSQ0hfRElSfSIvdXNyL1gxMVI2L2Jpbi9mZ2xfZ2x4Z2VhcnMgfHwg ZGllICJiaW4gcm0gZmFpbGVkIjsKICAgIHVzZSBxdDQgfHwgcm0gIiR7QVJDSF9ESVJ9Ii91c3Iv WDExUjYvYmluL2FtZGNjY2xlOwogICAgc2VkIC1pIC1lICJzOi92YXIvbGliL3hkbS9hdXRoZGly L2F1dGhmaWxlcy86L3Zhci9ydW4veGF1dGgvOiIgLWUgInM6L3Zhci9saWIvZ2RtLzovdmFyL2dk bS86IiAiJHtTfS8ke0ZPTERFUl9QUkVGSVh9ZXRjL2F0aS9hdXRoYXRpZXZlbnRzZC5zaCIgfHwg ZGllICJBQ1BJIGZpeHVwcyBmYWlsZWQuIjsKICAgIHNlZCAtaSAtZSAnczpmaW5nZXI6d2hvOicg IiR7U30vJHtGT0xERVJfUFJFRklYfXVzci9zaGFyZS9kb2MvZmdscngvZXhhbXBsZXMvZXRjL2Fj cGkvYXRpLXBvd2VybW9kZS5zaCIgfHwgZGllICJSZXBsYWNpbmcgJ2Zpbmdlcicgd2l0aCAnd2hv JyBmYWlsZWQuIjsKICAgIGVwYXRjaCAiJHtGSUxFU0RJUn0iL2F0aS1wb3dlcm1vZGUtb3B0LXBh dGgtMy5wYXRjaDsKICAgIGVwYXRjaCAiJHtGSUxFU0RJUn0iL2F0aS1kcml2ZXJzLXgzMl9zb21l dGhpbmdfc29tZXRoaW5nLnBhdGNoOwogICAgZXBhdGNoICIke0ZJTEVTRElSfSIvYXRpLWRyaXZl cnMtMTIuOS1LQ0xfQUdQX0ZpbmRDYXBzUmVnaXN0ZXJzLXN0dWIucGF0Y2g7CiAgICBlcGF0Y2gg IiR7RklMRVNESVJ9L3R5cGVzYWZlLWt1aWQuZGlmZiI7CiAgICBlcGF0Y2ggIiR7RklMRVNESVJ9 L2F0aS1kcml2ZXJzLTEzLjgtYmV0YS1pbmNsdWRlLXNlcV9maWxlLnBhdGNoIjsKICAgIGVwYXRj aCAiJHtGSUxFU0RJUn0vZmdsX2dseGdlYXJzLWRvLW5vdC1pbmNsdWRlLWdsQVRJLnBhdGNoIjsK ICAgIHVzZSBwYXhfa2VybmVsICYmIGVwYXRjaCAiJHtGSUxFU0RJUn0vY29uc3Qtbm90aWZpZXIt YmxvY2sucGF0Y2giOwogICAgY2QgIiR7TU9EVUxFX0RJUn0iOwogICAgY3AgJHtBUkNIX0RJUn0v bGliL21vZHVsZXMvZmdscngvYnVpbGRfbW9kL2xpYmZnbHJ4X2lwLmEgMi42Lng7CiAgICBjb252 ZXJ0X3RvX20gMi42LngvTWFrZWZpbGUgfHwgZGllICJjb252ZXJ0X3RvX20gZmFpbGVkIjsKICAg IHNlZCAtaSAtZSAncy9fX1NNUF9fL0NPTkZJR19TTVAvJyAqLmMgKmggfHwgZGllICJTTVAgc2Vk IGZhaWxlZCI7CiAgICBzZWQgLWkgLWUgJ3MvaWZkZWYgTU9EVkVSU0lPTlMvaWZkZWYgQ09ORklH X01PRFZFUlNJT05TLycgKi5jICouaCB8fCBkaWUgIk1PRFZFUlNJT05TIHNlZCBmYWlsZWQiCn0K c3JjX3Rlc3QgKCkgCnsgCiAgICBfX2VhcGkwX3NyY190ZXN0ICIkQCIKfQpzcmNfdW5wYWNrICgp IAp7IAogICAgbG9jYWwgRFJJVkVSU19ESVNURklMRSBYVkJBX1NES19ESVNURklMRTsKICAgIERS SVZFUlNfRElTVEZJTEU9JHtEUklWRVJTX1VSSSMjKi99OwogICAgWFZCQV9TREtfRElTVEZJTEU9 JHtYVkJBX1NES19VUkkjIyovfTsKICAgIGlmIFtbICR7RFJJVkVSU19ESVNURklMRX0gPX4gLipc LnRhclwuZ3ogXV07IHRoZW4KICAgICAgICB1bnBhY2sgJHtEUklWRVJTX0RJU1RGSUxFfTsKICAg IGVsc2UKICAgICAgICBpZiBbWyAke0RSSVZFUlNfRElTVEZJTEV9ID1+IC4qXC56aXAgXV07IHRo ZW4KICAgICAgICAgICAgdW5wYWNrICR7RFJJVkVSU19ESVNURklMRX07CiAgICAgICAgICAgIFtb IC16ICIkUlVOIiBdXSAmJiBSVU49IiR7U30vJHtEUklWRVJTX0RJU1RGSUxFLyUuemlwLy5ydW59 IjsKICAgICAgICBlbHNlCiAgICAgICAgICAgIFJVTj0iJHtESVNURElSfS8ke0RSSVZFUlNfRElT VEZJTEV9IjsKICAgICAgICBmaTsKICAgICAgICBzaCAiJHtSVU59IiAtLWV4dHJhY3QgIiR7U30i IDI+JjEgPiAvZGV2L251bGwgfHwgZGllOwogICAgZmk7CiAgICBta2RpciB4dmJhX3NkazsKICAg IGNkIHh2YmFfc2RrOwogICAgdW5wYWNrICR7WFZCQV9TREtfRElTVEZJTEV9OwogICAgbWtkaXIg LXAgIiR7V09SS0RJUn0vZXh0cmEiIHx8IGRpZSAibWtkaXIgZXh0cmEgZmFpbGVkIjsKICAgIGNk ICIke1dPUktESVJ9L2V4dHJhIjsKICAgIHRhciAteGYgIi4uLyR7Rk9MREVSX1BSRUZJWH11c3Iv c3JjL2F0aS9mZ2xyeF9zYW1wbGVfc291cmNlLnRneiIKfQpzdHJpcC1saW5ndWFzICgpIAp7IAog ICAgbG9jYWwgbHMgbmV3bHMgbm9sczsKICAgIGlmIFtbICQxID09ICItaSIgXV0gfHwgW1sgJDEg PT0gIi11IiBdXTsgdGhlbgogICAgICAgIGxvY2FsIG9wPSQxOwogICAgICAgIHNoaWZ0OwogICAg ICAgIGxzPSQoZmluZCAiJDEiIC1uYW1lICcqLnBvJyAtZXhlYyBiYXNlbmFtZSB7fSAucG8gJzsn KTsKICAgICAgICBzaGlmdDsKICAgICAgICBsb2NhbCBkIGY7CiAgICAgICAgZm9yIGQgaW4gIiRA IjsKICAgICAgICBkbwogICAgICAgICAgICBpZiBbWyAke29wfSA9PSAiLXUiIF1dOyB0aGVuCiAg ICAgICAgICAgICAgICBuZXdscz0ke2xzfTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg ICAgbmV3bHM9IiI7CiAgICAgICAgICAgIGZpOwogICAgICAgICAgICBmb3IgZiBpbiAkKGZpbmQg IiRkIiAtbmFtZSAnKi5wbycgLWV4ZWMgYmFzZW5hbWUge30gLnBvICc7Jyk7CiAgICAgICAgICAg IGRvCiAgICAgICAgICAgICAgICBpZiBbWyAke29wfSA9PSAiLWkiIF1dOyB0aGVuCiAgICAgICAg ICAgICAgICAgICAgaGFzICR7Zn0gJHtsc30gJiYgbmV3bHM9IiR7bmV3bHN9ICR7Zn0iOwogICAg ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIGhhcyAke2Z9ICR7bHN9IHx8IG5l d2xzPSIke25ld2xzfSAke2Z9IjsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICBkb25l OwogICAgICAgICAgICBscz0ke25ld2xzfTsKICAgICAgICBkb25lOwogICAgZWxzZQogICAgICAg IGxzPSIkQCI7CiAgICBmaTsKICAgIG5vbHM9IiI7CiAgICBuZXdscz0iIjsKICAgIGZvciBmIGlu ICR7TElOR1VBU307CiAgICBkbwogICAgICAgIGlmIGhhcyAke2Z9ICR7bHN9OyB0aGVuCiAgICAg ICAgICAgIG5ld2xzPSIke25ld2xzfSAke2Z9IjsKICAgICAgICBlbHNlCiAgICAgICAgICAgIG5v bHM9IiR7bm9sc30gJHtmfSI7CiAgICAgICAgZmk7CiAgICBkb25lOwogICAgW1sgLW4gJHtub2xz fSBdXSAmJiBlaW5mbyAiU29ycnksIGJ1dCAke1BOfSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBMSU5H VUFTOiIgJHtub2xzfTsKICAgIGV4cG9ydCBMSU5HVUFTPSR7bmV3bHM6MX0KfQpzdHJpcF9tb2R1 bGVuYW1lcyAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICQqOwog ICAgbG9jYWwgaTsKICAgIGZvciBpIGluICR7TU9EVUxFX0lHTk9SRX07CiAgICBkbwogICAgICAg IE1PRFVMRV9OQU1FUz0ke01PRFVMRV9OQU1FUy8vJHtpfSgqfTsKICAgIGRvbmUKfQp0Yy1hcmNo ICgpIAp7IAogICAgdGMtbmluamFfbWFnaWNfdG9fYXJjaCBwb3J0YWdlICIkQCIKfQp0Yy1hcmNo LWtlcm5lbCAoKSAKeyAKICAgIHRjLW5pbmphX21hZ2ljX3RvX2FyY2gga2VybiAiJEAiCn0KdGMt ZW5kaWFuICgpIAp7IAogICAgbG9jYWwgaG9zdD0kMTsKICAgIFtbIC16ICR7aG9zdH0gXV0gJiYg aG9zdD0ke0NUQVJHRVQ6LSR7Q0hPU1R9fTsKICAgIGhvc3Q9JHtob3N0JSUtKn07CiAgICBjYXNl ICR7aG9zdH0gaW4gCiAgICAgICAgYWFyY2g2NCpiZSkKICAgICAgICAgICAgZWNobyBiaWcKICAg ICAgICA7OwogICAgICAgIGFhcmNoNjQpCiAgICAgICAgICAgIGVjaG8gbGl0dGxlCiAgICAgICAg OzsKICAgICAgICBhbHBoYSopCiAgICAgICAgICAgIGVjaG8gYmlnCiAgICAgICAgOzsKICAgICAg ICBhcm0qYiopCiAgICAgICAgICAgIGVjaG8gYmlnCiAgICAgICAgOzsKICAgICAgICBhcm0qKQog ICAgICAgICAgICBlY2hvIGxpdHRsZQogICAgICAgIDs7CiAgICAgICAgY3JpcyopCiAgICAgICAg ICAgIGVjaG8gbGl0dGxlCiAgICAgICAgOzsKICAgICAgICBocHBhKikKICAgICAgICAgICAgZWNo byBiaWcKICAgICAgICA7OwogICAgICAgIGk/ODYqKQogICAgICAgICAgICBlY2hvIGxpdHRsZQog ICAgICAgIDs7CiAgICAgICAgaWE2NCopCiAgICAgICAgICAgIGVjaG8gbGl0dGxlCiAgICAgICAg OzsKICAgICAgICBtNjgqKQogICAgICAgICAgICBlY2hvIGJpZwogICAgICAgIDs7CiAgICAgICAg bWlwcypsKikKICAgICAgICAgICAgZWNobyBsaXR0bGUKICAgICAgICA7OwogICAgICAgIG1pcHMq KQogICAgICAgICAgICBlY2hvIGJpZwogICAgICAgIDs7CiAgICAgICAgcG93ZXJwYypsZSkKICAg ICAgICAgICAgZWNobyBsaXR0bGUKICAgICAgICA7OwogICAgICAgIHBvd2VycGMqKQogICAgICAg ICAgICBlY2hvIGJpZwogICAgICAgIDs7CiAgICAgICAgczM5MCopCiAgICAgICAgICAgIGVjaG8g YmlnCiAgICAgICAgOzsKICAgICAgICBzaCpiKikKICAgICAgICAgICAgZWNobyBiaWcKICAgICAg ICA7OwogICAgICAgIHNoKikKICAgICAgICAgICAgZWNobyBsaXR0bGUKICAgICAgICA7OwogICAg ICAgIHNwYXJjKikKICAgICAgICAgICAgZWNobyBiaWcKICAgICAgICA7OwogICAgICAgIHg4Nl82 NCopCiAgICAgICAgICAgIGVjaG8gbGl0dGxlCiAgICAgICAgOzsKICAgICAgICAqKQogICAgICAg ICAgICBlY2hvIHd0ZgogICAgICAgIDs7CiAgICBlc2FjCn0KdGMtZW52X2J1aWxkICgpIAp7IAog ICAgdGMtZXhwb3J0X2J1aWxkX2VudjsKICAgIENGTEFHUz0ke0JVSUxEX0NGTEFHU30gQ1hYRkxB R1M9JHtCVUlMRF9DWFhGTEFHU30gQ1BQRkxBR1M9JHtCVUlMRF9DUFBGTEFHU30gTERGTEFHUz0k e0JVSUxEX0xERkxBR1N9IEFSPSQodGMtZ2V0QlVJTERfQVIpIEFTPSQodGMtZ2V0QlVJTERfQVMp IENDPSQodGMtZ2V0QlVJTERfQ0MpIENQUD0kKHRjLWdldEJVSUxEX0NQUCkgQ1hYPSQodGMtZ2V0 QlVJTERfQ1hYKSBMRD0kKHRjLWdldEJVSUxEX0xEKSBOTT0kKHRjLWdldEJVSUxEX05NKSBQS0df Q09ORklHPSQodGMtZ2V0QlVJTERfUEtHX0NPTkZJRykgUkFOTElCPSQodGMtZ2V0QlVJTERfUkFO TElCKSAiJEAiCn0KdGMtZXhwb3J0ICgpIAp7IAogICAgbG9jYWwgdmFyOwogICAgZm9yIHZhciBp biAiJEAiOwogICAgZG8KICAgICAgICBbWyAkKHR5cGUgLXQgdGMtZ2V0JHt2YXJ9KSAhPSAiZnVu Y3Rpb24iIF1dICYmIGRpZSAidGMtZXhwb3J0OiBpbnZhbGlkIGV4cG9ydCB2YXJpYWJsZSAnJHt2 YXJ9JyI7CiAgICAgICAgZXZhbCB0Yy1nZXQke3Zhcn0gPiAvZGV2L251bGw7CiAgICBkb25lCn0K dGMtZXhwb3J0X2J1aWxkX2VudiAoKSAKeyAKICAgIHRjLWV4cG9ydCAiJEAiOwogICAgOiAke0JV SUxEX0NGTEFHUzo9LU8xIC1waXBlfTsKICAgIDogJHtCVUlMRF9DWFhGTEFHUzo9LU8xIC1waXBl fTsKICAgIDogJHtCVUlMRF9DUFBGTEFHUzo9fTsKICAgIDogJHtCVUlMRF9MREZMQUdTOj19Owog ICAgZXhwb3J0IEJVSUxEX3tDLENYWCxDUFAsTER9RkxBR1M7CiAgICBsb2NhbCB2OwogICAgZm9y IHYgaW4gQlVJTERfe0MsQ1hYLENQUCxMRH1GTEFHUzsKICAgIGRvCiAgICAgICAgZXhwb3J0ICR7 diNCVUlMRF99X0ZPUl9CVUlMRD0iJHshdn0iOwogICAgZG9uZQp9CnRjLWdldEFSICgpIAp7IAog ICAgdGMtZ2V0UFJPRyBBUiBhciAiJEAiCn0KdGMtZ2V0QVMgKCkgCnsgCiAgICB0Yy1nZXRQUk9H IEFTIGFzICIkQCIKfQp0Yy1nZXRCVUlMRF9BUiAoKSAKeyAKICAgIHRjLWdldEJVSUxEX1BST0cg QVIgYXIgIiRAIgp9CnRjLWdldEJVSUxEX0FTICgpIAp7IAogICAgdGMtZ2V0QlVJTERfUFJPRyBB UyBhcyAiJEAiCn0KdGMtZ2V0QlVJTERfQ0MgKCkgCnsgCiAgICB0Yy1nZXRCVUlMRF9QUk9HIEND IGdjYyAiJEAiCn0KdGMtZ2V0QlVJTERfQ1BQICgpIAp7IAogICAgdGMtZ2V0QlVJTERfUFJPRyBD UFAgY3BwICIkQCIKfQp0Yy1nZXRCVUlMRF9DWFggKCkgCnsgCiAgICB0Yy1nZXRCVUlMRF9QUk9H IENYWCBnKysgIiRAIgp9CnRjLWdldEJVSUxEX0xEICgpIAp7IAogICAgdGMtZ2V0QlVJTERfUFJP RyBMRCBsZCAiJEAiCn0KdGMtZ2V0QlVJTERfTk0gKCkgCnsgCiAgICB0Yy1nZXRCVUlMRF9QUk9H IE5NIG5tICIkQCIKfQp0Yy1nZXRCVUlMRF9PQkpDT1BZICgpIAp7IAogICAgdGMtZ2V0QlVJTERf UFJPRyBPQkpDT1BZIG9iamNvcHkgIiRAIgp9CnRjLWdldEJVSUxEX1BLR19DT05GSUcgKCkgCnsg CiAgICB0Yy1nZXRCVUlMRF9QUk9HIFBLR19DT05GSUcgcGtnLWNvbmZpZyAiJEAiCn0KdGMtZ2V0 QlVJTERfUFJPRyAoKSAKeyAKICAgIF90Yy1nZXRQUk9HIENCVUlMRCAiQlVJTERfJDEgJDFfRk9S X0JVSUxEIEhPU1QkMSIgIiR7QDoyfSIKfQp0Yy1nZXRCVUlMRF9SQU5MSUIgKCkgCnsgCiAgICB0 Yy1nZXRCVUlMRF9QUk9HIFJBTkxJQiByYW5saWIgIiRAIgp9CnRjLWdldEJVSUxEX1NUUklQICgp IAp7IAogICAgdGMtZ2V0QlVJTERfUFJPRyBTVFJJUCBzdHJpcCAiJEAiCn0KdGMtZ2V0Q0MgKCkg CnsgCiAgICB0Yy1nZXRQUk9HIENDIGdjYyAiJEAiCn0KdGMtZ2V0Q1BQICgpIAp7IAogICAgdGMt Z2V0UFJPRyBDUFAgY3BwICIkQCIKfQp0Yy1nZXRDWFggKCkgCnsgCiAgICB0Yy1nZXRQUk9HIENY WCBnKysgIiRAIgp9CnRjLWdldERMTFdSQVAgKCkgCnsgCiAgICB0Yy1nZXRQUk9HIERMTFdSQVAg ZGxsd3JhcCAiJEAiCn0KdGMtZ2V0Rjc3ICgpIAp7IAogICAgdGMtZ2V0UFJPRyBGNzcgZ2ZvcnRy YW4gIiRAIgp9CnRjLWdldEZDICgpIAp7IAogICAgdGMtZ2V0UFJPRyBGQyBnZm9ydHJhbiAiJEAi Cn0KdGMtZ2V0R0NKICgpIAp7IAogICAgdGMtZ2V0UFJPRyBHQ0ogZ2NqICIkQCIKfQp0Yy1nZXRM RCAoKSAKeyAKICAgIHRjLWdldFBST0cgTEQgbGQgIiRAIgp9CnRjLWdldE5NICgpIAp7IAogICAg dGMtZ2V0UFJPRyBOTSBubSAiJEAiCn0KdGMtZ2V0T0JKQ09QWSAoKSAKeyAKICAgIHRjLWdldFBS T0cgT0JKQ09QWSBvYmpjb3B5ICIkQCIKfQp0Yy1nZXRQS0dfQ09ORklHICgpIAp7IAogICAgdGMt Z2V0UFJPRyBQS0dfQ09ORklHIHBrZy1jb25maWcgIiRAIgp9CnRjLWdldFBST0cgKCkgCnsgCiAg ICBfdGMtZ2V0UFJPRyBDSE9TVCAiJEAiCn0KdGMtZ2V0UkFOTElCICgpIAp7IAogICAgdGMtZ2V0 UFJPRyBSQU5MSUIgcmFubGliICIkQCIKfQp0Yy1nZXRSQyAoKSAKeyAKICAgIHRjLWdldFBST0cg UkMgd2luZHJlcyAiJEAiCn0KdGMtZ2V0U1RSSVAgKCkgCnsgCiAgICB0Yy1nZXRQUk9HIFNUUklQ IHN0cmlwICIkQCIKfQp0Yy1oYXMtb3Blbm1wICgpIAp7IAogICAgbG9jYWwgYmFzZT0iJHtUfS90 ZXN0LXRjLW9wZW5tcCI7CiAgICBjYXQgPiAiJHtiYXNlfS5jIiAgPDwtRU9GCiNpbmNsdWRlIDxv bXAuaD4KaW50IG1haW4oKSB7CmludCBudGhyZWFkcywgdGlkLCByZXQgPSAwOwojcHJhZ21hIG9t cCBwYXJhbGxlbCBwcml2YXRlKG50aHJlYWRzLCB0aWQpCnsKdGlkID0gb21wX2dldF90aHJlYWRf bnVtKCk7Cm50aHJlYWRzID0gb21wX2dldF9udW1fdGhyZWFkcygpOyByZXQgKz0gdGlkICsgbnRo cmVhZHM7Cn0KcmV0dXJuIHJldDsKfQpFT0YKCiAgICAkKHRjLWdldENDICIkQCIpIC1mb3Blbm1w ICIke2Jhc2V9LmMiIC1vICIke2Jhc2V9IiAmPi9kZXYvbnVsbDsKICAgIGxvY2FsIHJldD0kPzsK ICAgIHJtIC1mICIke2Jhc2V9Iio7CiAgICByZXR1cm4gJHtyZXR9Cn0KdGMtaGFzLXRscyAoKSAK eyAKICAgIGxvY2FsIGJhc2U9IiR7VH0vdGVzdC10Yy10bHMiOwogICAgY2F0ID4gIiR7YmFzZX0u YyIgIDw8LUVPRgppbnQgZm9vKGludCAqaSkgewpzdGF0aWMgX190aHJlYWQgaW50IGogPSAwOwpy ZXR1cm4gKmkgPyBqIDogKmk7Cn0KRU9GCgogICAgbG9jYWwgZmxhZ3M7CiAgICBjYXNlICQxIGlu IAogICAgICAgIC1zKQogICAgICAgICAgICBmbGFncz0iLVMiCiAgICAgICAgOzsKICAgICAgICAt YykKICAgICAgICAgICAgZmxhZ3M9Ii1jIgogICAgICAgIDs7CiAgICAgICAgLWwpCgogICAgICAg IDs7CiAgICAgICAgLSopCiAgICAgICAgICAgIGRpZSAiVXNhZ2U6IHRjLWhhcy10bHMgWy1jfC1s XSBbdG9vbGNoYWluIHByZWZpeF0iCiAgICAgICAgOzsKICAgIGVzYWM7CiAgICA6ICR7ZmxhZ3M6 PS1mUElDIC1zaGFyZWQgLVdsLC16LGRlZnN9OwogICAgW1sgJDEgPT0gLSogXV0gJiYgc2hpZnQ7 CiAgICAkKHRjLWdldENDICIkQCIpICR7ZmxhZ3N9ICIke2Jhc2V9LmMiIC1vICIke2Jhc2V9IiAm Pi9kZXYvbnVsbDsKICAgIGxvY2FsIHJldD0kPzsKICAgIHJtIC1mICIke2Jhc2V9Iio7CiAgICBy ZXR1cm4gJHtyZXR9Cn0KdGMtaXMtY3Jvc3MtY29tcGlsZXIgKCkgCnsgCiAgICBbWyAke0NCVUlM RDotJHtDSE9TVH19ICE9ICR7Q0hPU1R9IF1dCn0KdGMtaXMtc29mdGZsb2F0ICgpIAp7IAogICAg bG9jYWwgQ1RBUkdFVD0ke0NUQVJHRVQ6LSR7Q0hPU1R9fTsKICAgIGNhc2UgJHtDVEFSR0VUfSBp biAKICAgICAgICBiZmluKiB8IGg4MzAwKikKICAgICAgICAgICAgZWNobyAib25seSIKICAgICAg ICA7OwogICAgICAgICopCiAgICAgICAgICAgIGlmIFtbICR7Q1RBUkdFVC8vXy8tfSA9PSAqLXNv ZnRmbG9hdC0qIF1dOyB0aGVuCiAgICAgICAgICAgICAgICBlY2hvICJ5ZXMiOwogICAgICAgICAg ICBlbHNlCiAgICAgICAgICAgICAgICBpZiBbWyAke0NUQVJHRVQvL18vLX0gPT0gKi1zb2Z0ZnAt KiBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgIGVjaG8gInNvZnRmcCI7CiAgICAgICAgICAg ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgZWNobyAibm8iOwogICAgICAgICAgICAgICAg Zmk7CiAgICAgICAgICAgIGZpCiAgICAgICAgOzsKICAgIGVzYWMKfQp0Yy1pcy1zdGF0aWMtb25s eSAoKSAKeyAKICAgIGxvY2FsIGhvc3Q9JHtDVEFSR0VUOi0ke0NIT1NUfX07CiAgICBbWyAke2hv c3R9ID09ICotbWludCogXV0KfQp0Yy1uaW5qYV9tYWdpY190b19hcmNoICgpIAp7IAogICAgZnVu Y3Rpb24gbmluaiAoKSAKICAgIHsgCiAgICAgICAgW1sgJHt0eXBlfSA9PSAia2VybiIgXV0gJiYg ZWNobyAkMSB8fCBlY2hvICQyCiAgICB9OwogICAgbG9jYWwgdHlwZT0kMTsKICAgIGxvY2FsIGhv c3Q9JDI7CiAgICBbWyAteiAke2hvc3R9IF1dICYmIGhvc3Q9JHtDVEFSR0VUOi0ke0NIT1NUfX07 CiAgICBsb2NhbCBLVj0ke0tWOi0ke0tWX0ZVTEx9fTsKICAgIFtbICR7dHlwZX0gPT0gImtlcm4i IF1dICYmIFtbIC16ICR7S1Z9IF1dICYmIGV3YXJuICJRQTogS2VybmVsIHZlcnNpb24gY291bGQg bm90IGJlIGRldGVybWluZWQsIHBsZWFzZSBpbmhlcml0IGtlcm5lbC0yIG9yIGxpbnV4LWluZm8i OwogICAgY2FzZSAke2hvc3R9IGluIAogICAgICAgIGFhcmNoNjQqKQogICAgICAgICAgICBlY2hv IGFybTY0CiAgICAgICAgOzsKICAgICAgICBhbHBoYSopCiAgICAgICAgICAgIGVjaG8gYWxwaGEK ICAgICAgICA7OwogICAgICAgIGFybSopCiAgICAgICAgICAgIGVjaG8gYXJtCiAgICAgICAgOzsK ICAgICAgICBhdnIqKQogICAgICAgICAgICBuaW5qIGF2cjMyIGF2cgogICAgICAgIDs7CiAgICAg ICAgYmZpbiopCiAgICAgICAgICAgIG5pbmogYmxhY2tmaW4gYmZpbgogICAgICAgIDs7CiAgICAg ICAgYzZ4KQogICAgICAgICAgICBlY2hvIGM2eAogICAgICAgIDs7CiAgICAgICAgY3JpcyopCiAg ICAgICAgICAgIGVjaG8gY3JpcwogICAgICAgIDs7CiAgICAgICAgZnJ2KQogICAgICAgICAgICBl Y2hvIGZydgogICAgICAgIDs7CiAgICAgICAgaGV4YWdvbikKICAgICAgICAgICAgZWNobyBoZXhh Z29uCiAgICAgICAgOzsKICAgICAgICBocHBhKikKICAgICAgICAgICAgbmluaiBwYXJpc2MgaHBw YQogICAgICAgIDs7CiAgICAgICAgaT84NiopCiAgICAgICAgICAgIGlmIFtbICR7dHlwZX0gPT0g Imtlcm4iIF1dICYmIFtbICQoS1ZfdG9faW50ICR7S1Z9KSAtbHQgJChLVl90b19pbnQgMi42LjI0 KSB8fCAke2hvc3R9ID09ICpmcmVlYnNkKiBdXTsgdGhlbgogICAgICAgICAgICAgICAgZWNobyBp Mzg2OwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBlY2hvIHg4NjsKICAgICAgICAg ICAgZmkKICAgICAgICA7OwogICAgICAgIGlhNjQqKQogICAgICAgICAgICBlY2hvIGlhNjQKICAg ICAgICA7OwogICAgICAgIG02OCopCiAgICAgICAgICAgIGVjaG8gbTY4awogICAgICAgIDs7CiAg ICAgICAgbWV0YWcpCiAgICAgICAgICAgIGVjaG8gbWV0YWcKICAgICAgICA7OwogICAgICAgIG1p cHMqKQogICAgICAgICAgICBlY2hvIG1pcHMKICAgICAgICA7OwogICAgICAgIG5pb3MyKikKICAg ICAgICAgICAgZWNobyBuaW9zMgogICAgICAgIDs7CiAgICAgICAgbmlvcyopCiAgICAgICAgICAg IGVjaG8gbmlvcwogICAgICAgIDs7CiAgICAgICAgb3IzMikKICAgICAgICAgICAgZWNobyBvcGVu cmlzYwogICAgICAgIDs7CiAgICAgICAgcG93ZXJwYyopCiAgICAgICAgICAgIGlmIFtbICR7dHlw ZX0gPT0gImtlcm4iIF1dICYmIFtbICQoS1ZfdG9faW50ICR7S1Z9KSAtZ2UgJChLVl90b19pbnQg Mi42LjE2KSBdXTsgdGhlbgogICAgICAgICAgICAgICAgZWNobyBwb3dlcnBjOwogICAgICAgICAg ICBlbHNlCiAgICAgICAgICAgICAgICBpZiBbWyAke3R5cGV9ID09ICJrZXJuIiBdXSAmJiBbWyAk KEtWX3RvX2ludCAke0tWfSkgLWVxICQoS1ZfdG9faW50IDIuNi4xNSkgXV07IHRoZW4KICAgICAg ICAgICAgICAgICAgICBpZiBbWyAke2hvc3R9ID09IHBvd2VycGM2NCogXV0gfHwgW1sgJHtQUk9G SUxFX0FSQ0h9ID09ICJwcGM2NCIgXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgZWNo byBwb3dlcnBjOwogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg ICAgZWNobyBwcGM7CiAgICAgICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgICAgICBlbHNl CiAgICAgICAgICAgICAgICAgICAgaWYgW1sgJHtob3N0fSA9PSBwb3dlcnBjNjQqIF1dOyB0aGVu CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gcHBjNjQ7CiAgICAgICAgICAgICAgICAgICAg ZWxzZQogICAgICAgICAgICAgICAgICAgICAgICBpZiBbWyAke1BST0ZJTEVfQVJDSH0gPT0gInBw YzY0IiBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmluaiBwcGM2NCBwcGM7 CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAg IGVjaG8gcHBjOwogICAgICAgICAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgICAgICAg ICBmaTsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICBmaQogICAgICAgIDs7CiAgICAg ICAgcmlzY3YqKQogICAgICAgICAgICBlY2hvIHJpc2N2CiAgICAgICAgOzsKICAgICAgICBzMzkw KikKICAgICAgICAgICAgZWNobyBzMzkwCiAgICAgICAgOzsKICAgICAgICBzY29yZSkKICAgICAg ICAgICAgZWNobyBzY29yZQogICAgICAgIDs7CiAgICAgICAgc2g2NCopCiAgICAgICAgICAgIG5p bmogc2g2NCBzaAogICAgICAgIDs7CiAgICAgICAgc2gqKQogICAgICAgICAgICBlY2hvIHNoCiAg ICAgICAgOzsKICAgICAgICBzcGFyYzY0KikKICAgICAgICAgICAgbmluaiBzcGFyYzY0IHNwYXJj CiAgICAgICAgOzsKICAgICAgICBzcGFyYyopCiAgICAgICAgICAgIFtbICR7UFJPRklMRV9BUkNI fSA9PSAic3BhcmM2NCIgXV0gJiYgbmluaiBzcGFyYzY0IHNwYXJjIHx8IGVjaG8gc3BhcmMKICAg ICAgICA7OwogICAgICAgIHRpbGUqKQogICAgICAgICAgICBlY2hvIHRpbGUKICAgICAgICA7Owog ICAgICAgIHZheCopCiAgICAgICAgICAgIGVjaG8gdmF4CiAgICAgICAgOzsKICAgICAgICB4ODZf NjQqZnJlZWJzZCopCiAgICAgICAgICAgIGVjaG8gYW1kNjQKICAgICAgICA7OwogICAgICAgIHg4 Nl82NCopCiAgICAgICAgICAgIGlmIFtbICR7dHlwZX0gPT0gImtlcm4iIF1dICYmIFtbICQoS1Zf dG9faW50ICR7S1Z9KSAtZ2UgJChLVl90b19pbnQgMi42LjI0KSBdXTsgdGhlbgogICAgICAgICAg ICAgICAgZWNobyB4ODY7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIG5pbmogeDg2 XzY0IGFtZDY0OwogICAgICAgICAgICBmaQogICAgICAgIDs7CiAgICAgICAgeHRlbnNhKikKICAg ICAgICAgICAgZWNobyB4dGVuc2EKICAgICAgICA7OwogICAgICAgICopCiAgICAgICAgICAgIGVj aG8gdW5rbm93bgogICAgICAgIDs7CiAgICBlc2FjCn0KdXBkYXRlX2RlcG1vZCAoKSAKeyAKICAg IGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICQqOwogICAgZ2V0X3ZlcnNpb247CiAg ICBlYmVnaW4gIlVwZGF0aW5nIG1vZHVsZSBkZXBlbmRlbmNpZXMgZm9yICR7S1ZfRlVMTH0iOwog ICAgaWYgWyAtciAiJHtLVl9PVVRfRElSfSIvU3lzdGVtLm1hcCBdOyB0aGVuCiAgICAgICAgZGVw bW9kIC1hZSAtRiAiJHtLVl9PVVRfRElSfSIvU3lzdGVtLm1hcCAtYiAiJHtST09UfSIgJHtLVl9G VUxMfTsKICAgICAgICBlZW5kICQ/OwogICAgZWxzZQogICAgICAgIGV3YXJuOwogICAgICAgIGV3 YXJuICIke0tWX09VVF9ESVJ9L1N5c3RlbS5tYXAgbm90IGZvdW5kLiI7CiAgICAgICAgZXdhcm4g IllvdSBtdXN0IG1hbnVhbGx5IHVwZGF0ZSB0aGUga2VybmVsIG1vZHVsZSBkZXBlbmRlbmNpZXMg dXNpbmcgZGVwbW9kLiI7CiAgICAgICAgZWVuZCAxOwogICAgICAgIGV3YXJuOwogICAgZmkKfQp1 cGRhdGVfbW9kdWxlZGIgKCkgCnsgCiAgICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1F fSAkKjsKICAgIGxvY2FsIE1PRFVMRURCX0RJUj0iJHtST09UfSIvdmFyL2xpYi9tb2R1bGUtcmVi dWlsZC87CiAgICBtb3ZlX29sZF9tb2R1bGVkYjsKICAgIGlmIFtbICEgLWYgIiR7TU9EVUxFREJf RElSfSIvbW9kdWxlZGIgXV07IHRoZW4KICAgICAgICBbWyAhIC1kICIke01PRFVMRURCX0RJUn0i IF1dICYmIG1rZGlyIC1wICIke01PRFVMRURCX0RJUn0iOwogICAgICAgIHRvdWNoICIke01PRFVM RURCX0RJUn0iL21vZHVsZWRiOwogICAgZmk7CiAgICBpZiAhIGdyZXAgLXFzICR7Q0FURUdPUll9 LyR7UE59LSR7UFZSfSAiJHtNT0RVTEVEQl9ESVJ9Ii9tb2R1bGVkYjsgdGhlbgogICAgICAgIGVp bmZvICJBZGRpbmcgbW9kdWxlIHRvIG1vZHVsZWRiLiI7CiAgICAgICAgZWNobyAiYToxOiR7Q0FU RUdPUll9LyR7UE59LSR7UFZSfSIgPj4gIiR7TU9EVUxFREJfRElSfSIvbW9kdWxlZGI7CiAgICBm aQp9CnVzZV9pZl9pdXNlICgpIAp7IAogICAgaW5faXVzZSAkMSB8fCByZXR1cm4gMTsKICAgIHVz ZSAkMQp9CnVzZV9tICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0g JCo7CiAgICBnZXRfdmVyc2lvbjsKICAgIFsgJHtLVl9NQUpPUn0gLWVxIDMgXSAmJiByZXR1cm4g MDsKICAgIFsgJHtLVl9NQUpPUn0gLWVxIDIgLWEgJHtLVl9NSU5PUn0gLWd0IDUgLWEgJHtLVl9Q QVRDSH0gLWd0IDUgXSAmJiByZXR1cm4gMCB8fCByZXR1cm4gMQp9CnZhbGlkYXRlX2Rlc2t0b3Bf ZW50cmllcyAoKSAKeyAKICAgIF9ldXRpbHNfZXByZWZpeF9pbml0OwogICAgaWYgW1sgLXggIiR7 RVBSRUZJWH0iL3Vzci9iaW4vZGVza3RvcC1maWxlLXZhbGlkYXRlIF1dOyB0aGVuCiAgICAgICAg ZWluZm8gIkNoZWNraW5nIGRlc2t0b3AgZW50cnkgdmFsaWRpdHkiOwogICAgICAgIGxvY2FsIGRp cmVjdG9yaWVzPSIiOwogICAgICAgIGZvciBkIGluIC91c3Ivc2hhcmUvYXBwbGljYXRpb25zICRA OwogICAgICAgIGRvCiAgICAgICAgICAgIFtbIC1kICR7RUR9JHtkfSBdXSAmJiBkaXJlY3Rvcmll cz0iJHtkaXJlY3Rvcmllc30gJHtFRH0ke2R9IjsKICAgICAgICBkb25lOwogICAgICAgIGlmIFtb IC1uICR7ZGlyZWN0b3JpZXN9IF1dOyB0aGVuCiAgICAgICAgICAgIGZvciBGSUxFIGluICQoZmlu ZCAke2RpcmVjdG9yaWVzfSAtbmFtZSAiKlwuZGVza3RvcCIgCQkJCQkJCS1ub3QgLXBhdGggJyou aGlkZGVuKicgfCBzb3J0IC11IDI+L2Rldi9udWxsKTsKICAgICAgICAgICAgZG8KICAgICAgICAg ICAgICAgIGxvY2FsIHRlbXA9JChkZXNrdG9wLWZpbGUtdmFsaWRhdGUgJHtGSUxFfSB8IGdyZXAg LXYgIndhcm5pbmc6IiB8IAkJCQkJCQkJc2VkIC1lICJzfGVycm9yOiB8fCIgLWUgInN8JHtGSUxF fTp8LS18ZyIgKTsKICAgICAgICAgICAgICAgIFtbIC1uICR0ZW1wIF1dICYmIGVsb2cgJHt0ZW1w Ly0tLyR7RklMRS8ke0VEfS99On07CiAgICAgICAgICAgIGRvbmU7CiAgICAgICAgZmk7CiAgICAg ICAgZWNobyAiIjsKICAgIGVsc2UKICAgICAgICBlaW5mbyAiUGFzc2luZyBkZXNrdG9wIGVudHJ5 IHZhbGlkaXR5IGNoZWNrLiBJbnN0YWxsIGRldi11dGlsL2Rlc2t0b3AtZmlsZS11dGlscywgaWYg eW91IHdhbnQgdG8gaGVscCB0byBpbXByb3ZlIEdlbnRvby4iOwogICAgZmkKfQp2ZXJzaW9uX2Nv bXBhcmUgKCkgCnsgCiAgICBlc2hvcHRzX3B1c2ggLXMgZXh0Z2xvYjsKICAgIGxvY2FsIHZlcl9h PSR7MX0gdmVyX2I9JHsyfSBwYXJ0c19hIHBhcnRzX2I7CiAgICBsb2NhbCBjdXJfdG9rX2EgY3Vy X3Rva19iIG51bV9wYXJ0X2EgbnVtX3BhcnRfYjsKICAgIGxvY2FsIC1pIGN1cl9pZHhfYT0wIGN1 cl9pZHhfYj0wIHByZXZfaWR4X2EgcHJldl9pZHhfYjsKICAgIHBhcnRzX2E9KCQoZ2V0X2FsbF92 ZXJzaW9uX2NvbXBvbmVudHMgIiR7dmVyX2F9IiApKTsKICAgIHBhcnRzX2I9KCQoZ2V0X2FsbF92 ZXJzaW9uX2NvbXBvbmVudHMgIiR7dmVyX2J9IiApKTsKICAgIGxvY2FsIC1pIGluZl9sb29wPTA7 CiAgICB3aGlsZSB0cnVlOyBkbwogICAgICAgIGluZl9sb29wKz0xOwogICAgICAgICgoaW5mX2xv b3AgPiAyMCkpICYmIGRpZSAidmVyc2lvbmF0b3IgY29tcGFyZSBidWcgW251bWJlcnMsICR7dmVy X2F9LCAke3Zlcl9ifV0iOwogICAgICAgIHByZXZfaWR4X2E9Y3VyX2lkeF9hOwogICAgICAgIHBy ZXZfaWR4X2I9Y3VyX2lkeF9iOwogICAgICAgIGN1cl90b2tfYT0ke3BhcnRzX2FbY3VyX2lkeF9h XX07CiAgICAgICAgY3VyX3Rva19iPSR7cGFydHNfYltjdXJfaWR4X2JdfTsKICAgICAgICBpZiBb WyAtbiAke2N1cl90b2tfYX0gXV0gJiYgW1sgLXogJHtjdXJfdG9rX2EvL1tbOmRpZ2l0Ol1dfSBd XTsgdGhlbgogICAgICAgICAgICBjdXJfaWR4X2ErPTE7CiAgICAgICAgICAgIFtbICR7cGFydHNf YVtjdXJfaWR4X2FdfSA9PSAuIF1dICYmIGN1cl9pZHhfYSs9MTsKICAgICAgICBlbHNlCiAgICAg ICAgICAgIGN1cl90b2tfYT07CiAgICAgICAgZmk7CiAgICAgICAgaWYgW1sgLW4gJHtjdXJfdG9r X2J9IF1dICYmIFtbIC16ICR7Y3VyX3Rva19iLy9bWzpkaWdpdDpdXX0gXV07IHRoZW4KICAgICAg ICAgICAgY3VyX2lkeF9iKz0xOwogICAgICAgICAgICBbWyAke3BhcnRzX2JbY3VyX2lkeF9iXX0g PT0gLiBdXSAmJiBjdXJfaWR4X2IrPTE7CiAgICAgICAgZWxzZQogICAgICAgICAgICBjdXJfdG9r X2I9OwogICAgICAgIGZpOwogICAgICAgIFtbIC16ICR7Y3VyX3Rva19hfSAmJiAteiAke2N1cl90 b2tfYn0gXV0gJiYgYnJlYWs7CiAgICAgICAgW1sgLXogJHtjdXJfdG9rX2F9IF1dICYmIGVzaG9w dHNfcG9wICYmIHJldHVybiAxOwogICAgICAgIFtbIC16ICR7Y3VyX3Rva19ifSBdXSAmJiBlc2hv cHRzX3BvcCAmJiByZXR1cm4gMzsKICAgICAgICBpZiAoKCBwcmV2X2lkeF9hICE9IDAgJiYgcHJl dl9pZHhfYiAhPSAwICkpICYmIFtbICR7Y3VyX3Rva19hfSA9PSAwKiB8fCAke2N1cl90b2tfYn0g PT0gMCogXV07IHRoZW4KICAgICAgICAgICAgY3VyX3Rva19hPSR7Y3VyX3Rva19hJSUrKDApfTsK ICAgICAgICAgICAgY3VyX3Rva19iPSR7Y3VyX3Rva19iJSUrKDApfTsKICAgICAgICAgICAgW1sg JHtjdXJfdG9rX2F9IDwgJHtjdXJfdG9rX2J9IF1dICYmIGVzaG9wdHNfcG9wICYmIHJldHVybiAx OwogICAgICAgICAgICBbWyAke2N1cl90b2tfYX0gPiAke2N1cl90b2tfYn0gXV0gJiYgZXNob3B0 c19wb3AgJiYgcmV0dXJuIDM7CiAgICAgICAgZWxzZQogICAgICAgICAgICBjdXJfdG9rX2E9JHtj dXJfdG9rX2EjIysoMCl9OwogICAgICAgICAgICBjdXJfdG9rX2I9JHtjdXJfdG9rX2IjIysoMCl9 OwogICAgICAgICAgICA6ICR7Y3VyX3Rva19hOj0wfTsKICAgICAgICAgICAgOiAke2N1cl90b2tf Yjo9MH07CiAgICAgICAgICAgICgoY3VyX3Rva19hIDwgY3VyX3Rva19iKSkgJiYgZXNob3B0c19w b3AgJiYgcmV0dXJuIDE7CiAgICAgICAgICAgICgoY3VyX3Rva19hID4gY3VyX3Rva19iKSkgJiYg ZXNob3B0c19wb3AgJiYgcmV0dXJuIDM7CiAgICAgICAgZmk7CiAgICBkb25lOwogICAgbG9jYWwg bGV0dGVyX2E9OwogICAgbGV0dGVyX2E9JHtwYXJ0c19hW2N1cl9pZHhfYV19OwogICAgaWYgW1sg JHsjbGV0dGVyX2F9IC1lcSAxICYmIC16ICR7bGV0dGVyX2EvW2Etel19IF1dOyB0aGVuCiAgICAg ICAgY3VyX2lkeF9hKz0xOwogICAgZWxzZQogICAgICAgIGxldHRlcl9hPUA7CiAgICBmaTsKICAg IGxvY2FsIGxldHRlcl9iPTsKICAgIGxldHRlcl9iPSR7cGFydHNfYltjdXJfaWR4X2JdfTsKICAg IGlmIFtbICR7I2xldHRlcl9ifSAtZXEgMSAmJiAteiAke2xldHRlcl9iL1thLXpdfSBdXTsgdGhl bgogICAgICAgIGN1cl9pZHhfYis9MTsKICAgIGVsc2UKICAgICAgICBsZXR0ZXJfYj1AOwogICAg Zmk7CiAgICBbWyAke2xldHRlcl9hfSA8ICR7bGV0dGVyX2J9IF1dICYmIGVzaG9wdHNfcG9wICYm IHJldHVybiAxOwogICAgW1sgJHtsZXR0ZXJfYX0gPiAke2xldHRlcl9ifSBdXSAmJiBlc2hvcHRz X3BvcCAmJiByZXR1cm4gMzsKICAgIGluZl9sb29wPTA7CiAgICB3aGlsZSB0cnVlOyBkbwogICAg ICAgIGluZl9sb29wKz0xOwogICAgICAgICgoaW5mX2xvb3AgPiAyMCkpICYmIGRpZSAidmVyc2lv bmF0b3IgY29tcGFyZSBidWcgW251bWJlcnMsICR7dmVyX2F9LCAke3Zlcl9ifV0iOwogICAgICAg IFtbICR7cGFydHNfYVtjdXJfaWR4X2FdfSA9PSBfIF1dICYmICgoY3VyX2lkeF9hKyspKTsKICAg ICAgICBbWyAke3BhcnRzX2JbY3VyX2lkeF9iXX0gPT0gXyBdXSAmJiAoKGN1cl9pZHhfYisrKSk7 CiAgICAgICAgY3VyX3Rva19hPSR7cGFydHNfYVtjdXJfaWR4X2FdfTsKICAgICAgICBjdXJfdG9r X2I9JHtwYXJ0c19iW2N1cl9pZHhfYl19OwogICAgICAgIG51bV9wYXJ0X2E9MDsKICAgICAgICBu dW1fcGFydF9iPTA7CiAgICAgICAgaWYgaGFzICR7Y3VyX3Rva19hJSUrKFswLTldKX0gImFscGhh IiAiYmV0YSIgInByZSIgInJjIiAicCI7IHRoZW4KICAgICAgICAgICAgY3VyX2lkeF9hKz0xOwog ICAgICAgICAgICBudW1fcGFydF9hPSR7Y3VyX3Rva19hIyMrKFthLXpdKX07CiAgICAgICAgICAg IG51bV9wYXJ0X2E9JHtudW1fcGFydF9hIyMrKDApfTsKICAgICAgICAgICAgOiAke251bV9wYXJ0 X2E6PTB9OwogICAgICAgICAgICBjdXJfdG9rX2E9JHtjdXJfdG9rX2ElJSsoWzAtOV0pfTsKICAg ICAgICBlbHNlCiAgICAgICAgICAgIGN1cl90b2tfYT07CiAgICAgICAgZmk7CiAgICAgICAgaWYg aGFzICR7Y3VyX3Rva19iJSUrKFswLTldKX0gYWxwaGEgYmV0YSBwcmUgcmMgcDsgdGhlbgogICAg ICAgICAgICBjdXJfaWR4X2IrPTE7CiAgICAgICAgICAgIG51bV9wYXJ0X2I9JHtjdXJfdG9rX2Ij IysoW2Etel0pfTsKICAgICAgICAgICAgbnVtX3BhcnRfYj0ke251bV9wYXJ0X2IjIysoMCl9Owog ICAgICAgICAgICA6ICR7bnVtX3BhcnRfYjo9MH07CiAgICAgICAgICAgIGN1cl90b2tfYj0ke2N1 cl90b2tfYiUlKyhbMC05XSl9OwogICAgICAgIGVsc2UKICAgICAgICAgICAgY3VyX3Rva19iPTsK ICAgICAgICBmaTsKICAgICAgICBpZiBbWyAke2N1cl90b2tfYX0gIT0gJHtjdXJfdG9rX2J9IF1d OyB0aGVuCiAgICAgICAgICAgIGxvY2FsIHN1ZmZpeDsKICAgICAgICAgICAgZm9yIHN1ZmZpeCBp biBhbHBoYSBiZXRhIHByZSByYyAiIiBwOwogICAgICAgICAgICBkbwogICAgICAgICAgICAgICAg W1sgJHtjdXJfdG9rX2F9ID09ICR7c3VmZml4fSBdXSAmJiBlc2hvcHRzX3BvcCAmJiByZXR1cm4g MTsKICAgICAgICAgICAgICAgIFtbICR7Y3VyX3Rva19ifSA9PSAke3N1ZmZpeH0gXV0gJiYgZXNo b3B0c19wb3AgJiYgcmV0dXJuIDM7CiAgICAgICAgICAgIGRvbmU7CiAgICAgICAgZWxzZQogICAg ICAgICAgICBpZiBbWyAteiAke2N1cl90b2tfYX0gJiYgLXogJHtjdXJfdG9rX2J9IF1dOyB0aGVu CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg KChudW1fcGFydF9hIDwgbnVtX3BhcnRfYikpICYmIGVzaG9wdHNfcG9wICYmIHJldHVybiAxOwog ICAgICAgICAgICAgICAgKChudW1fcGFydF9hID4gbnVtX3BhcnRfYikpICYmIGVzaG9wdHNfcG9w ICYmIHJldHVybiAzOwogICAgICAgICAgICBmaTsKICAgICAgICBmaTsKICAgIGRvbmU7CiAgICBb WyAke3BhcnRzX2FbY3VyX2lkeF9hXX0gPT0gLSBdXSAmJiAoKGN1cl9pZHhfYSsrKSk7CiAgICBb WyAke3BhcnRzX2JbY3VyX2lkeF9iXX0gPT0gLSBdXSAmJiAoKGN1cl9pZHhfYisrKSk7CiAgICBp ZiBbWyAtbiAke3BhcnRzX2FbY3VyX2lkeF9hXS9yKyhbMC05XSl9IHx8IC1uICR7cGFydHNfYltj dXJfaWR4X2JdL3IrKFswLTldKX0gXV07IHRoZW4KICAgICAgICBkaWUgInZlcnNpb25hdG9yIGNv bXBhcmUgYnVnIFtyZXZpc2lvbnMsICR7dmVyX2F9LCAke3Zlcl9ifV0iOwogICAgZmk7CiAgICBu dW1fcGFydF9hPSR7cGFydHNfYVtjdXJfaWR4X2FdI3J9OwogICAgbnVtX3BhcnRfYT0ke251bV9w YXJ0X2EjIysoMCl9OwogICAgOiAke251bV9wYXJ0X2E6PTB9OwogICAgbnVtX3BhcnRfYj0ke3Bh cnRzX2JbY3VyX2lkeF9iXSNyfTsKICAgIG51bV9wYXJ0X2I9JHtudW1fcGFydF9iIyMrKDApfTsK ICAgIDogJHtudW1fcGFydF9iOj0wfTsKICAgICgobnVtX3BhcnRfYSA8IG51bV9wYXJ0X2IpKSAm JiBlc2hvcHRzX3BvcCAmJiByZXR1cm4gMTsKICAgICgobnVtX3BhcnRfYSA+IG51bV9wYXJ0X2Ip KSAmJiBlc2hvcHRzX3BvcCAmJiByZXR1cm4gMzsKICAgIGVzaG9wdHNfcG9wOwogICAgcmV0dXJu IDIKfQp2ZXJzaW9uX2Zvcm1hdF9zdHJpbmcgKCkgCnsgCiAgICBsb2NhbCBmc3RyPSQxOwogICAg c2hpZnQ7CiAgICBzZXQgLS0gJChnZXRfdmVyc2lvbl9jb21wb25lbnRzICIkQCIpOwogICAgZXZh bCBlY2hvICIke2ZzdHJ9Igp9CnZlcnNpb25faXNfYXRfbGVhc3QgKCkgCnsgCiAgICBsb2NhbCB3 YW50X3M9IiQxIiBoYXZlX3M9IiR7MjotJHtQVlJ9fSIgcjsKICAgIHZlcnNpb25fY29tcGFyZSAi JHt3YW50X3N9IiAiJHtoYXZlX3N9IjsKICAgIHI9JD87CiAgICBjYXNlICRyIGluIAogICAgICAg IDEgfCAyKQogICAgICAgICAgICByZXR1cm4gMAogICAgICAgIDs7CiAgICAgICAgMykKICAgICAg ICAgICAgcmV0dXJuIDEKICAgICAgICA7OwogICAgICAgICopCiAgICAgICAgICAgIGRpZSAidmVy c2lvbmF0b3IgY29tcGFyZSBidWcgW2F0bGVhc3QsICR7d2FudF9zfSwgJHtoYXZlX3N9LCAke3J9 XSIKICAgICAgICA7OwogICAgZXNhYwp9CnZlcnNpb25fc29ydCAoKSAKeyAKICAgIGVzaG9wdHNf cHVzaCAtcyBleHRnbG9iOwogICAgbG9jYWwgaXRlbXM9OwogICAgbG9jYWwgLWkgbGVmdD0wOwog ICAgaXRlbXM9KCIkQCIpOwogICAgd2hpbGUgKChsZWZ0IDwgJHsjaXRlbXNbQF19KSk7IGRvCiAg ICAgICAgbG9jYWwgLWkgbG93ZXN0X2lkeD1sZWZ0OwogICAgICAgIGxvY2FsIC1pIGlkeD1sb3dl c3RfaWR4KzE7CiAgICAgICAgd2hpbGUgKChpZHggPCAkeyNpdGVtc1tAXX0pKTsgZG8KICAgICAg ICAgICAgdmVyc2lvbl9jb21wYXJlICIke2l0ZW1zW2xvd2VzdF9pZHhdfSIgIiR7aXRlbXNbaWR4 XX0iOwogICAgICAgICAgICBbWyAkPyAtZXEgMyBdXSAmJiBsb3dlc3RfaWR4PWlkeDsKICAgICAg ICAgICAgaWR4Kz0xOwogICAgICAgIGRvbmU7CiAgICAgICAgbG9jYWwgdG1wPSR7aXRlbXNbbG93 ZXN0X2lkeF19OwogICAgICAgIGl0ZW1zW2xvd2VzdF9pZHhdPSR7aXRlbXNbbGVmdF19OwogICAg ICAgIGl0ZW1zW2xlZnRdPSR7dG1wfTsKICAgICAgICBsZWZ0Kz0xOwogICAgZG9uZTsKICAgIGVj aG8gJHtpdGVtc1tAXX07CiAgICBlc2hvcHRzX3BvcAp9Cg== --047d7b5d619495ec26050845fe8d Content-Type: text/plain; charset=US-ASCII; name="pqv.txt" Content-Disposition: attachment; filename="pqv.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i2puklb43 W2VidWlsZCAgTiAgICBdIHNjaS1tYXRoZW1hdGljcy9zaW5ndWxhci0zLjEuNiAgVVNFPSJib29z dCBlbWFjcyBmbGludCBweXRob24gcmVhZGxpbmUgLWRvYyAtZXhhbXBsZXMgey10ZXN0fSIgUFlU SE9OX1RBUkdFVFM9InB5dGhvbjJfNyIgCgogKiBJTVBPUlRBTlQ6IDEgbmV3cyBpdGVtcyBuZWVk IHJlYWRpbmcgZm9yIHJlcG9zaXRvcnkgJ2dlbnRvbycuCiAqIFVzZSBlc2VsZWN0IG5ld3MgdG8g cmVhZCBuZXdzIGl0ZW1zLgoKW2VidWlsZCAgTiAgICBdIHgxMS1kcml2ZXJzL2F0aS1kcml2ZXJz LTE0LjRfcDEgIFVTRT0ibW9kdWxlcyBtdWx0aWxpYiBwYXhfa2VybmVsIC1kZWJ1ZyAtcXQ0IC1z dGF0aWMtbGlicyIgCgogKiBJTVBPUlRBTlQ6IDEgbmV3cyBpdGVtcyBuZWVkIHJlYWRpbmcgZm9y IHJlcG9zaXRvcnkgJ2dlbnRvbycuCiAqIFVzZSBlc2VsZWN0IG5ld3MgdG8gcmVhZCBuZXdzIGl0 ZW1zLgoK --047d7b5d619495ec26050845fe8d--